From 4094ff9d918b3d707fef1549a8f2ad6895f136d0 Mon Sep 17 00:00:00 2001 From: Red Globe <106024082+Comozeidam@users.noreply.github.com> Date: Tue, 6 Oct 2026 17:10:19 -0400 Subject: [PATCH 1/6] Create temp --- packages/preview/comozeidex/0.3.0./temp | 1 + 1 file changed, 1 insertion(+) create mode 100644 packages/preview/comozeidex/0.3.0./temp diff --git a/packages/preview/comozeidex/0.3.0./temp b/packages/preview/comozeidex/0.3.0./temp new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/packages/preview/comozeidex/0.3.0./temp @@ -0,0 +1 @@ + From 76b60a8ce94892aa34423cab64a92e3af629090c Mon Sep 17 00:00:00 2001 From: Red Globe <106024082+Comozeidam@users.noreply.github.com> Date: Tue, 6 Oct 2026 17:10:42 -0400 Subject: [PATCH 2/6] Add files via upload --- packages/preview/comozeidex/0.3.0./LICENSE | 21 ++ packages/preview/comozeidex/0.3.0./README.md | 51 ++++ packages/preview/comozeidex/0.3.0./lib.typ | 243 ++++++++++++++++++ .../preview/comozeidex/0.3.0./thumbnail.png | Bin 0 -> 22565 bytes packages/preview/comozeidex/0.3.0./typst.toml | 13 + 5 files changed, 328 insertions(+) create mode 100644 packages/preview/comozeidex/0.3.0./LICENSE create mode 100644 packages/preview/comozeidex/0.3.0./README.md create mode 100644 packages/preview/comozeidex/0.3.0./lib.typ create mode 100644 packages/preview/comozeidex/0.3.0./thumbnail.png create mode 100644 packages/preview/comozeidex/0.3.0./typst.toml diff --git a/packages/preview/comozeidex/0.3.0./LICENSE b/packages/preview/comozeidex/0.3.0./LICENSE new file mode 100644 index 0000000000..736a0d8239 --- /dev/null +++ b/packages/preview/comozeidex/0.3.0./LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Comozeidam + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/preview/comozeidex/0.3.0./README.md b/packages/preview/comozeidex/0.3.0./README.md new file mode 100644 index 0000000000..5e3309dd9a --- /dev/null +++ b/packages/preview/comozeidex/0.3.0./README.md @@ -0,0 +1,51 @@ +# comozeidex + +A Typst template for building a hierarchical index or binder — +**Areas → Categories → IDs → notes** — with styled headings and an +optional table of contents. + +## Usage + +Start a new project from the template: + +``` +typst init @preview/comozeidex:0.1.0 my-index +``` + +This gives you a ready-to-edit `main.typ`: + +```typ +#import "@preview/comozeidex:0.1.0": * +#show: doc.with(title: "My Index") +#toc() // optional table of contents + += Home // Area (level 1) +== Finances // Category (level 2) +=== 11.01 Bank Statements // ID (level 3) +#info[Monthly statements, PDF only] +#physloc[Filing cabinet, drawer 2] +#subid[11.01.01 — Checking account] +==== Some note as its own line // looks like #info, no bullet +``` + +## Knobs + +Styling is controlled by module-level variables at the top of +`lib.typ` — fonts, sizes, indents, and colors for each heading level, +plus tables, code blocks, blockquotes, and links. Set +`number-sections = false` to turn off outline-style numbering (on by +default) if your Area/Category/ID headings already carry their own +hand-typed numbers. + +## Helpers + +- `doc(title:)` — the document wrapper; apply with `#show: doc.with(...)`. +- `toc()` — an optional table-of-contents page. +- `info(body)`, `physloc(body)`, `subid(body)` — bulleted leaf notes + under an ID heading. +- `callout(body, fill:)`, `blockquote(body)`, `divider()` — general + prose-page helpers. + +## License + +MIT, see [LICENSE](LICENSE). diff --git a/packages/preview/comozeidex/0.3.0./lib.typ b/packages/preview/comozeidex/0.3.0./lib.typ new file mode 100644 index 0000000000..5a261dc0e3 --- /dev/null +++ b/packages/preview/comozeidex/0.3.0./lib.typ @@ -0,0 +1,243 @@ +// "My Index" — Typst template. Defines styles/helpers only; doesn't +// print anything itself. Usage in the actual document: +// +// #import "template.typ": * +// #show: index-doc.with(title: "My Index") +// #toc() <- optional table of contents +// +// = Home <- Area (level 1) +// == Finances <- Category (level 2) +// === 11.01 Bank Statements <- ID (level 3) +// #info[Monthly statements, PDF only] +// #physloc[Filing cabinet, drawer 2] +// #subid[11.01.01 — Checking account] +// ==== Some note as its own line <- looks like #info, no bullet +// +// Safe to tweak values below; don't rename anything left of `=`. + +// ---- Knobs ---- +// Toggle: prints "1", "1.1", "1.1.1", "1.1.1.1" in front of =, ==, +// ===, ==== headings (outline-style, each level nested under its +// parent). Off by default since Area/Category/ID headings already +// carry their own hand-typed numbers (like "11.01") — turning this +// on adds an extra outline number in front of those, it doesn't +// replace them. Uses Typst's real heading numbering under the hood, +// so #toc() automatically shows the same numbers, in sync, for free. +#let number-sections = true + + +#let idx-font = "Recursive Mn Csl St" // must match OS font name exactly +#let idx-heading-weight = "medium" // only Medium is installed for now +#let idx-body-weight = "medium" + +#let size-area = 12pt // Area (level 1) +#let size-category = 11pt // Category (level 2) +#let size-id = 10pt // ID (level 3) +#let size-note = 8pt // info/physloc/subid/level-4 headings + +#let indent-area = 0in // Area headings have no indent +#let indent-category = 0.5in +#let indent-id = 0.75in +#let indent-note = 1in +#let indent-note-step = 0.25in // how far #info sits in from its heading + +#let area-color = rgb("#660000") +#let category-color = rgb("#879D89") +#let id-color = rgb("#546E87") +#let physloc-color = rgb("#EE0000") +#let page-bg = rgb("#f4ecd8") +#let heading_4_color = rgb("#000000") + +#let link-color = rgb("#546E87") +#let table-header-fill = rgb("#e4d9bd") +#let table-stripe-fill = rgb("#faf6ec") +#let table-line-color = area-color.lighten(40%) +#let quote-bar-color = category-color +#let code-bg = rgb("#eee6d3") +#let code-header-fill = code-bg.darken(8%) +#let code-font = "DejaVu Sans Mono" +#let code-line-numbers = true +#let code-line-number-color = id-color.lighten(35%) + + + +// ---- Document wrapper ---- +#let doc(title: "My Index", body) = { + set page(paper: "us-letter", margin: 1in, numbering: "1", number-align: center, fill: page-bg) + set text(font: idx-font, size: 12pt, weight: idx-body-weight, lang: "en") + set par(justify: false, leading: 0.68em) + set heading(numbering: if number-sections { "1.1.1.1" } else { none }) + + // Area (level 1) + show heading.where(level: 1): it => block(above: 1.7em, below: 0.7em)[ + #if it.numbering != none [ + #context text(fill: area-color, size: size-area, weight: idx-heading-weight)[ + #counter(heading).display(it.numbering) ~ #it.body + ] + ] else [ + #text(fill: area-color, size: size-area, weight: idx-heading-weight, it.body) + ] + ] + + // Category (level 2) + show heading.where(level: 2): it => pad(left: indent-category)[ + #block(above: 1.1em, below: 0.35em)[ + #if it.numbering != none [ + #context text(fill: category-color, size: size-category, weight: idx-heading-weight)[ + #counter(heading).display(it.numbering) ~ #it.body + ] + ] else [ + #text(fill: category-color, size: size-category, weight: idx-heading-weight, it.body) + ] + ] + ] + + // ID (level 3) + show heading.where(level: 3): it => pad(left: indent-id)[ + #block(above: 0.55em, below: 0.15em)[ + #if it.numbering != none [ + #context text(fill: id-color, size: size-id, weight: idx-heading-weight)[ + #counter(heading).display(it.numbering) ~ #it.body + ] + ] else [ + #text(fill: id-color, size: size-id, weight: idx-heading-weight, it.body) + ] + ] + ] + + // Generic line (level 4): styled like #info (plain black, note + // size/weight, same indent) but with no bullet, so it reads as a + // one-off heading rather than a bulleted note. + show heading.where(level: 4): it => block(above: 1em, below: 0.4em)[ + #pad(left: indent-note)[ + #if it.numbering != none [ + #context text(font: idx-font, size: size-note, weight: idx-body-weight)[ + #counter(heading).display(it.numbering) ~ #it.body + ] + ] else [ + #text(font: idx-font, size: size-note, weight: idx-body-weight, it.body) + ] + ] + ] + + // Lists + set list(indent: 0.25in, spacing: 0.6em, marker: ([•], [◦], [‣])) + set enum(indent: 0.25in, spacing: 0.6em, numbering: "1.a.i.") + + // Tables: header row shaded, body rows striped + set table( + stroke: 0.5pt + table-line-color, + inset: 6pt, + fill: (x, y) => if y == 0 { table-header-fill } else if calc.odd(y) { table-stripe-fill } else { none }, + ) + show table.cell.where(y: 0): set text(weight: "bold") + + // Code blocks: shaded box, language label, optional line numbers + show raw: set text(font: code-font, size: 9pt) + show raw.where(block: true): it => block( + fill: code-bg, + radius: 4pt, + width: 100%, + clip: true, + )[ + #if it.lang != none [ + #block(width: 100%, inset: (x: 10pt, top: 6pt, bottom: 6pt), fill: code-header-fill)[ + #text(size: 8pt, fill: id-color, weight: "bold", tracking: 0.5pt, upper(it.lang)) + ] + ] + #block(inset: 10pt, width: 100%)[ + #if code-line-numbers [ + #grid( + columns: (auto, 1fr), + column-gutter: 10pt, + row-gutter: 0pt, + ..it.lines.map(line => ( + box(height: 1.4em, text(fill: code-line-number-color, str(line.number))), + box(height: 1.4em, line.body), + )).flatten() + ) + ] else [ + #it + ] + ] + ] + + // Blockquotes + show quote.where(block: true): it => block( + inset: (left: 1em), + stroke: (left: 2pt + quote-bar-color), + )[ + #set text(style: "italic") + #it.body + ] + + // Links + show link: it => text(fill: link-color, underline(it)) + + // Figure captions + show figure.caption: it => text(fill: id-color, size: size-note, style: "italic", it) + + // Title block + align(center)[ + #text(fill: area-color, size: 22pt, weight: "bold", title) + ] + v(0.5em) + line(length: 100%, stroke: 0.5pt + area-color.lighten(30%)) + v(1em) + + body +} + +// ---- Table of contents ---- +// Call #toc() once, right after #show: index-doc.with(...), if you +// want a listing page. Its own "Table of Contents" heading is never +// numbered and never lists itself — only the real headings below it +// show up, with the same numbers as in the body (or no numbers, if +// number-sections is off). +#let toc() = { + align(center)[ #text(fill: area-color, size: 18pt, weight: idx-heading-weight)[Table of Contents]] + show outline.entry.where(level: 1): it => text(fill: area-color.lighten(25%).desaturate(50%), it) + show outline.entry.where(level: 2): it => text(fill: category-color.lighten(25%).desaturate(50%), it) + show outline.entry.where(level: 3): it => text(fill: id-color.lighten(25%).desaturate(50%), it) + show outline.entry.where(level: 4): it => text(fill: heading_4_color.lighten(45%).desaturate(50%), it) + outline(title: none, indent: auto) + colbreak() +} + +// ---- Leaf notes (info / physloc / subid) ---- +#let note(body, fill: black, weight: idx-body-weight, style: "normal", indent: indent-note) = pad(left: indent)[ + #set text(font: idx-font, size: size-note, fill: fill, weight: weight, style: style) + #box[•~#body] +] + +// Shared helper: looks up the last heading before the note and indents +// one step past that heading's indent. #info and #physloc both use it. +#let note-under-heading(body, ..args) = context { + let hs = query(selector(heading).before(here())) + let lvl = if hs.len() == 0 { 0 } else { hs.last().level } + let base = if lvl <= 1 { indent-area } + else if lvl == 2 { indent-category } + else if lvl == 3 { indent-id } + else { indent-note } + note(body, indent: base + indent-note-step, ..args) +} + +#let info(body) = note-under-heading(body) +#let physloc(body) = note-under-heading(body, fill: physloc-color, weight: "bold", style: "italic") +#let subid(body) = note(body) + +// ---- General prose-page helpers ---- +#let callout(body, fill: table-header-fill) = block( + fill: fill, + inset: 10pt, + radius: 4pt, + width: 100%, + body, +) + +#let blockquote(body) = quote(block: true, body) + +#let divider() = line( + length: 100%, + stroke: 1.25pt + rgb("#660000").transparentize(25%), +) diff --git a/packages/preview/comozeidex/0.3.0./thumbnail.png b/packages/preview/comozeidex/0.3.0./thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4aee4566de890b5ea07af242461885c6e743b6 GIT binary patch literal 22565 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 literal 0 HcmV?d00001 diff --git a/packages/preview/comozeidex/0.3.0./typst.toml b/packages/preview/comozeidex/0.3.0./typst.toml new file mode 100644 index 0000000000..3c4f0c51a4 --- /dev/null +++ b/packages/preview/comozeidex/0.3.0./typst.toml @@ -0,0 +1,13 @@ +[package] +name = "comozeidex" +version = "0.2.0" +entrypoint = "lib.typ" +authors = ["Comozeidam <@Comozeidam>"] +license = "MIT" +description = "Styled headings and helpers for building a hierarchical index or binder — areas, categories, IDs, and notes. " +categories = ["office", "layout"] + +[template] +path = "template" +entrypoint = "main.typ" +thumbnail = "thumbnail.png" \ No newline at end of file From de34e38e542b315bdf9174b313b51f1cec8f4796 Mon Sep 17 00:00:00 2001 From: Red Globe <106024082+Comozeidam@users.noreply.github.com> Date: Tue, 6 Oct 2026 17:12:26 -0400 Subject: [PATCH 3/6] Delete packages/preview/comozeidex/0.3.0. directory --- packages/preview/comozeidex/0.3.0./LICENSE | 21 -- packages/preview/comozeidex/0.3.0./README.md | 51 ---- packages/preview/comozeidex/0.3.0./lib.typ | 243 ------------------ packages/preview/comozeidex/0.3.0./temp | 1 - .../preview/comozeidex/0.3.0./thumbnail.png | Bin 22565 -> 0 bytes packages/preview/comozeidex/0.3.0./typst.toml | 13 - 6 files changed, 329 deletions(-) delete mode 100644 packages/preview/comozeidex/0.3.0./LICENSE delete mode 100644 packages/preview/comozeidex/0.3.0./README.md delete mode 100644 packages/preview/comozeidex/0.3.0./lib.typ delete mode 100644 packages/preview/comozeidex/0.3.0./temp delete mode 100644 packages/preview/comozeidex/0.3.0./thumbnail.png delete mode 100644 packages/preview/comozeidex/0.3.0./typst.toml diff --git a/packages/preview/comozeidex/0.3.0./LICENSE b/packages/preview/comozeidex/0.3.0./LICENSE deleted file mode 100644 index 736a0d8239..0000000000 --- a/packages/preview/comozeidex/0.3.0./LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2026 Comozeidam - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/packages/preview/comozeidex/0.3.0./README.md b/packages/preview/comozeidex/0.3.0./README.md deleted file mode 100644 index 5e3309dd9a..0000000000 --- a/packages/preview/comozeidex/0.3.0./README.md +++ /dev/null @@ -1,51 +0,0 @@ -# comozeidex - -A Typst template for building a hierarchical index or binder — -**Areas → Categories → IDs → notes** — with styled headings and an -optional table of contents. - -## Usage - -Start a new project from the template: - -``` -typst init @preview/comozeidex:0.1.0 my-index -``` - -This gives you a ready-to-edit `main.typ`: - -```typ -#import "@preview/comozeidex:0.1.0": * -#show: doc.with(title: "My Index") -#toc() // optional table of contents - -= Home // Area (level 1) -== Finances // Category (level 2) -=== 11.01 Bank Statements // ID (level 3) -#info[Monthly statements, PDF only] -#physloc[Filing cabinet, drawer 2] -#subid[11.01.01 — Checking account] -==== Some note as its own line // looks like #info, no bullet -``` - -## Knobs - -Styling is controlled by module-level variables at the top of -`lib.typ` — fonts, sizes, indents, and colors for each heading level, -plus tables, code blocks, blockquotes, and links. Set -`number-sections = false` to turn off outline-style numbering (on by -default) if your Area/Category/ID headings already carry their own -hand-typed numbers. - -## Helpers - -- `doc(title:)` — the document wrapper; apply with `#show: doc.with(...)`. -- `toc()` — an optional table-of-contents page. -- `info(body)`, `physloc(body)`, `subid(body)` — bulleted leaf notes - under an ID heading. -- `callout(body, fill:)`, `blockquote(body)`, `divider()` — general - prose-page helpers. - -## License - -MIT, see [LICENSE](LICENSE). diff --git a/packages/preview/comozeidex/0.3.0./lib.typ b/packages/preview/comozeidex/0.3.0./lib.typ deleted file mode 100644 index 5a261dc0e3..0000000000 --- a/packages/preview/comozeidex/0.3.0./lib.typ +++ /dev/null @@ -1,243 +0,0 @@ -// "My Index" — Typst template. Defines styles/helpers only; doesn't -// print anything itself. Usage in the actual document: -// -// #import "template.typ": * -// #show: index-doc.with(title: "My Index") -// #toc() <- optional table of contents -// -// = Home <- Area (level 1) -// == Finances <- Category (level 2) -// === 11.01 Bank Statements <- ID (level 3) -// #info[Monthly statements, PDF only] -// #physloc[Filing cabinet, drawer 2] -// #subid[11.01.01 — Checking account] -// ==== Some note as its own line <- looks like #info, no bullet -// -// Safe to tweak values below; don't rename anything left of `=`. - -// ---- Knobs ---- -// Toggle: prints "1", "1.1", "1.1.1", "1.1.1.1" in front of =, ==, -// ===, ==== headings (outline-style, each level nested under its -// parent). Off by default since Area/Category/ID headings already -// carry their own hand-typed numbers (like "11.01") — turning this -// on adds an extra outline number in front of those, it doesn't -// replace them. Uses Typst's real heading numbering under the hood, -// so #toc() automatically shows the same numbers, in sync, for free. -#let number-sections = true - - -#let idx-font = "Recursive Mn Csl St" // must match OS font name exactly -#let idx-heading-weight = "medium" // only Medium is installed for now -#let idx-body-weight = "medium" - -#let size-area = 12pt // Area (level 1) -#let size-category = 11pt // Category (level 2) -#let size-id = 10pt // ID (level 3) -#let size-note = 8pt // info/physloc/subid/level-4 headings - -#let indent-area = 0in // Area headings have no indent -#let indent-category = 0.5in -#let indent-id = 0.75in -#let indent-note = 1in -#let indent-note-step = 0.25in // how far #info sits in from its heading - -#let area-color = rgb("#660000") -#let category-color = rgb("#879D89") -#let id-color = rgb("#546E87") -#let physloc-color = rgb("#EE0000") -#let page-bg = rgb("#f4ecd8") -#let heading_4_color = rgb("#000000") - -#let link-color = rgb("#546E87") -#let table-header-fill = rgb("#e4d9bd") -#let table-stripe-fill = rgb("#faf6ec") -#let table-line-color = area-color.lighten(40%) -#let quote-bar-color = category-color -#let code-bg = rgb("#eee6d3") -#let code-header-fill = code-bg.darken(8%) -#let code-font = "DejaVu Sans Mono" -#let code-line-numbers = true -#let code-line-number-color = id-color.lighten(35%) - - - -// ---- Document wrapper ---- -#let doc(title: "My Index", body) = { - set page(paper: "us-letter", margin: 1in, numbering: "1", number-align: center, fill: page-bg) - set text(font: idx-font, size: 12pt, weight: idx-body-weight, lang: "en") - set par(justify: false, leading: 0.68em) - set heading(numbering: if number-sections { "1.1.1.1" } else { none }) - - // Area (level 1) - show heading.where(level: 1): it => block(above: 1.7em, below: 0.7em)[ - #if it.numbering != none [ - #context text(fill: area-color, size: size-area, weight: idx-heading-weight)[ - #counter(heading).display(it.numbering) ~ #it.body - ] - ] else [ - #text(fill: area-color, size: size-area, weight: idx-heading-weight, it.body) - ] - ] - - // Category (level 2) - show heading.where(level: 2): it => pad(left: indent-category)[ - #block(above: 1.1em, below: 0.35em)[ - #if it.numbering != none [ - #context text(fill: category-color, size: size-category, weight: idx-heading-weight)[ - #counter(heading).display(it.numbering) ~ #it.body - ] - ] else [ - #text(fill: category-color, size: size-category, weight: idx-heading-weight, it.body) - ] - ] - ] - - // ID (level 3) - show heading.where(level: 3): it => pad(left: indent-id)[ - #block(above: 0.55em, below: 0.15em)[ - #if it.numbering != none [ - #context text(fill: id-color, size: size-id, weight: idx-heading-weight)[ - #counter(heading).display(it.numbering) ~ #it.body - ] - ] else [ - #text(fill: id-color, size: size-id, weight: idx-heading-weight, it.body) - ] - ] - ] - - // Generic line (level 4): styled like #info (plain black, note - // size/weight, same indent) but with no bullet, so it reads as a - // one-off heading rather than a bulleted note. - show heading.where(level: 4): it => block(above: 1em, below: 0.4em)[ - #pad(left: indent-note)[ - #if it.numbering != none [ - #context text(font: idx-font, size: size-note, weight: idx-body-weight)[ - #counter(heading).display(it.numbering) ~ #it.body - ] - ] else [ - #text(font: idx-font, size: size-note, weight: idx-body-weight, it.body) - ] - ] - ] - - // Lists - set list(indent: 0.25in, spacing: 0.6em, marker: ([•], [◦], [‣])) - set enum(indent: 0.25in, spacing: 0.6em, numbering: "1.a.i.") - - // Tables: header row shaded, body rows striped - set table( - stroke: 0.5pt + table-line-color, - inset: 6pt, - fill: (x, y) => if y == 0 { table-header-fill } else if calc.odd(y) { table-stripe-fill } else { none }, - ) - show table.cell.where(y: 0): set text(weight: "bold") - - // Code blocks: shaded box, language label, optional line numbers - show raw: set text(font: code-font, size: 9pt) - show raw.where(block: true): it => block( - fill: code-bg, - radius: 4pt, - width: 100%, - clip: true, - )[ - #if it.lang != none [ - #block(width: 100%, inset: (x: 10pt, top: 6pt, bottom: 6pt), fill: code-header-fill)[ - #text(size: 8pt, fill: id-color, weight: "bold", tracking: 0.5pt, upper(it.lang)) - ] - ] - #block(inset: 10pt, width: 100%)[ - #if code-line-numbers [ - #grid( - columns: (auto, 1fr), - column-gutter: 10pt, - row-gutter: 0pt, - ..it.lines.map(line => ( - box(height: 1.4em, text(fill: code-line-number-color, str(line.number))), - box(height: 1.4em, line.body), - )).flatten() - ) - ] else [ - #it - ] - ] - ] - - // Blockquotes - show quote.where(block: true): it => block( - inset: (left: 1em), - stroke: (left: 2pt + quote-bar-color), - )[ - #set text(style: "italic") - #it.body - ] - - // Links - show link: it => text(fill: link-color, underline(it)) - - // Figure captions - show figure.caption: it => text(fill: id-color, size: size-note, style: "italic", it) - - // Title block - align(center)[ - #text(fill: area-color, size: 22pt, weight: "bold", title) - ] - v(0.5em) - line(length: 100%, stroke: 0.5pt + area-color.lighten(30%)) - v(1em) - - body -} - -// ---- Table of contents ---- -// Call #toc() once, right after #show: index-doc.with(...), if you -// want a listing page. Its own "Table of Contents" heading is never -// numbered and never lists itself — only the real headings below it -// show up, with the same numbers as in the body (or no numbers, if -// number-sections is off). -#let toc() = { - align(center)[ #text(fill: area-color, size: 18pt, weight: idx-heading-weight)[Table of Contents]] - show outline.entry.where(level: 1): it => text(fill: area-color.lighten(25%).desaturate(50%), it) - show outline.entry.where(level: 2): it => text(fill: category-color.lighten(25%).desaturate(50%), it) - show outline.entry.where(level: 3): it => text(fill: id-color.lighten(25%).desaturate(50%), it) - show outline.entry.where(level: 4): it => text(fill: heading_4_color.lighten(45%).desaturate(50%), it) - outline(title: none, indent: auto) - colbreak() -} - -// ---- Leaf notes (info / physloc / subid) ---- -#let note(body, fill: black, weight: idx-body-weight, style: "normal", indent: indent-note) = pad(left: indent)[ - #set text(font: idx-font, size: size-note, fill: fill, weight: weight, style: style) - #box[•~#body] -] - -// Shared helper: looks up the last heading before the note and indents -// one step past that heading's indent. #info and #physloc both use it. -#let note-under-heading(body, ..args) = context { - let hs = query(selector(heading).before(here())) - let lvl = if hs.len() == 0 { 0 } else { hs.last().level } - let base = if lvl <= 1 { indent-area } - else if lvl == 2 { indent-category } - else if lvl == 3 { indent-id } - else { indent-note } - note(body, indent: base + indent-note-step, ..args) -} - -#let info(body) = note-under-heading(body) -#let physloc(body) = note-under-heading(body, fill: physloc-color, weight: "bold", style: "italic") -#let subid(body) = note(body) - -// ---- General prose-page helpers ---- -#let callout(body, fill: table-header-fill) = block( - fill: fill, - inset: 10pt, - radius: 4pt, - width: 100%, - body, -) - -#let blockquote(body) = quote(block: true, body) - -#let divider() = line( - length: 100%, - stroke: 1.25pt + rgb("#660000").transparentize(25%), -) diff --git a/packages/preview/comozeidex/0.3.0./temp b/packages/preview/comozeidex/0.3.0./temp deleted file mode 100644 index 8b13789179..0000000000 --- a/packages/preview/comozeidex/0.3.0./temp +++ /dev/null @@ -1 +0,0 @@ - diff --git a/packages/preview/comozeidex/0.3.0./thumbnail.png b/packages/preview/comozeidex/0.3.0./thumbnail.png deleted file mode 100644 index 7d4aee4566de890b5ea07af242461885c6e743b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22565 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 diff --git a/packages/preview/comozeidex/0.3.0./typst.toml b/packages/preview/comozeidex/0.3.0./typst.toml deleted file mode 100644 index 3c4f0c51a4..0000000000 --- a/packages/preview/comozeidex/0.3.0./typst.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "comozeidex" -version = "0.2.0" -entrypoint = "lib.typ" -authors = ["Comozeidam <@Comozeidam>"] -license = "MIT" -description = "Styled headings and helpers for building a hierarchical index or binder — areas, categories, IDs, and notes. " -categories = ["office", "layout"] - -[template] -path = "template" -entrypoint = "main.typ" -thumbnail = "thumbnail.png" \ No newline at end of file From 9f6133267c1368c5bae21cb4376abea94db6703e Mon Sep 17 00:00:00 2001 From: Red Globe <106024082+Comozeidam@users.noreply.github.com> Date: Tue, 6 Oct 2026 17:12:47 -0400 Subject: [PATCH 4/6] Add temp file with test content --- packages/preview/comozeidex/0.3.0/temp | 1 + 1 file changed, 1 insertion(+) create mode 100644 packages/preview/comozeidex/0.3.0/temp diff --git a/packages/preview/comozeidex/0.3.0/temp b/packages/preview/comozeidex/0.3.0/temp new file mode 100644 index 0000000000..9daeafb986 --- /dev/null +++ b/packages/preview/comozeidex/0.3.0/temp @@ -0,0 +1 @@ +test From 5ba0764c5a144b458d05338518af3a1949ad0762 Mon Sep 17 00:00:00 2001 From: Red Globe <106024082+Comozeidam@users.noreply.github.com> Date: Tue, 6 Oct 2026 17:13:03 -0400 Subject: [PATCH 5/6] Add files via upload --- packages/preview/comozeidex/0.3.0/LICENSE | 21 ++ packages/preview/comozeidex/0.3.0/README.md | 51 ++++ packages/preview/comozeidex/0.3.0/lib.typ | 243 ++++++++++++++++++ .../preview/comozeidex/0.3.0/thumbnail.png | Bin 0 -> 22565 bytes packages/preview/comozeidex/0.3.0/typst.toml | 13 + 5 files changed, 328 insertions(+) create mode 100644 packages/preview/comozeidex/0.3.0/LICENSE create mode 100644 packages/preview/comozeidex/0.3.0/README.md create mode 100644 packages/preview/comozeidex/0.3.0/lib.typ create mode 100644 packages/preview/comozeidex/0.3.0/thumbnail.png create mode 100644 packages/preview/comozeidex/0.3.0/typst.toml diff --git a/packages/preview/comozeidex/0.3.0/LICENSE b/packages/preview/comozeidex/0.3.0/LICENSE new file mode 100644 index 0000000000..736a0d8239 --- /dev/null +++ b/packages/preview/comozeidex/0.3.0/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Comozeidam + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/preview/comozeidex/0.3.0/README.md b/packages/preview/comozeidex/0.3.0/README.md new file mode 100644 index 0000000000..5e3309dd9a --- /dev/null +++ b/packages/preview/comozeidex/0.3.0/README.md @@ -0,0 +1,51 @@ +# comozeidex + +A Typst template for building a hierarchical index or binder — +**Areas → Categories → IDs → notes** — with styled headings and an +optional table of contents. + +## Usage + +Start a new project from the template: + +``` +typst init @preview/comozeidex:0.1.0 my-index +``` + +This gives you a ready-to-edit `main.typ`: + +```typ +#import "@preview/comozeidex:0.1.0": * +#show: doc.with(title: "My Index") +#toc() // optional table of contents + += Home // Area (level 1) +== Finances // Category (level 2) +=== 11.01 Bank Statements // ID (level 3) +#info[Monthly statements, PDF only] +#physloc[Filing cabinet, drawer 2] +#subid[11.01.01 — Checking account] +==== Some note as its own line // looks like #info, no bullet +``` + +## Knobs + +Styling is controlled by module-level variables at the top of +`lib.typ` — fonts, sizes, indents, and colors for each heading level, +plus tables, code blocks, blockquotes, and links. Set +`number-sections = false` to turn off outline-style numbering (on by +default) if your Area/Category/ID headings already carry their own +hand-typed numbers. + +## Helpers + +- `doc(title:)` — the document wrapper; apply with `#show: doc.with(...)`. +- `toc()` — an optional table-of-contents page. +- `info(body)`, `physloc(body)`, `subid(body)` — bulleted leaf notes + under an ID heading. +- `callout(body, fill:)`, `blockquote(body)`, `divider()` — general + prose-page helpers. + +## License + +MIT, see [LICENSE](LICENSE). diff --git a/packages/preview/comozeidex/0.3.0/lib.typ b/packages/preview/comozeidex/0.3.0/lib.typ new file mode 100644 index 0000000000..5a261dc0e3 --- /dev/null +++ b/packages/preview/comozeidex/0.3.0/lib.typ @@ -0,0 +1,243 @@ +// "My Index" — Typst template. Defines styles/helpers only; doesn't +// print anything itself. Usage in the actual document: +// +// #import "template.typ": * +// #show: index-doc.with(title: "My Index") +// #toc() <- optional table of contents +// +// = Home <- Area (level 1) +// == Finances <- Category (level 2) +// === 11.01 Bank Statements <- ID (level 3) +// #info[Monthly statements, PDF only] +// #physloc[Filing cabinet, drawer 2] +// #subid[11.01.01 — Checking account] +// ==== Some note as its own line <- looks like #info, no bullet +// +// Safe to tweak values below; don't rename anything left of `=`. + +// ---- Knobs ---- +// Toggle: prints "1", "1.1", "1.1.1", "1.1.1.1" in front of =, ==, +// ===, ==== headings (outline-style, each level nested under its +// parent). Off by default since Area/Category/ID headings already +// carry their own hand-typed numbers (like "11.01") — turning this +// on adds an extra outline number in front of those, it doesn't +// replace them. Uses Typst's real heading numbering under the hood, +// so #toc() automatically shows the same numbers, in sync, for free. +#let number-sections = true + + +#let idx-font = "Recursive Mn Csl St" // must match OS font name exactly +#let idx-heading-weight = "medium" // only Medium is installed for now +#let idx-body-weight = "medium" + +#let size-area = 12pt // Area (level 1) +#let size-category = 11pt // Category (level 2) +#let size-id = 10pt // ID (level 3) +#let size-note = 8pt // info/physloc/subid/level-4 headings + +#let indent-area = 0in // Area headings have no indent +#let indent-category = 0.5in +#let indent-id = 0.75in +#let indent-note = 1in +#let indent-note-step = 0.25in // how far #info sits in from its heading + +#let area-color = rgb("#660000") +#let category-color = rgb("#879D89") +#let id-color = rgb("#546E87") +#let physloc-color = rgb("#EE0000") +#let page-bg = rgb("#f4ecd8") +#let heading_4_color = rgb("#000000") + +#let link-color = rgb("#546E87") +#let table-header-fill = rgb("#e4d9bd") +#let table-stripe-fill = rgb("#faf6ec") +#let table-line-color = area-color.lighten(40%) +#let quote-bar-color = category-color +#let code-bg = rgb("#eee6d3") +#let code-header-fill = code-bg.darken(8%) +#let code-font = "DejaVu Sans Mono" +#let code-line-numbers = true +#let code-line-number-color = id-color.lighten(35%) + + + +// ---- Document wrapper ---- +#let doc(title: "My Index", body) = { + set page(paper: "us-letter", margin: 1in, numbering: "1", number-align: center, fill: page-bg) + set text(font: idx-font, size: 12pt, weight: idx-body-weight, lang: "en") + set par(justify: false, leading: 0.68em) + set heading(numbering: if number-sections { "1.1.1.1" } else { none }) + + // Area (level 1) + show heading.where(level: 1): it => block(above: 1.7em, below: 0.7em)[ + #if it.numbering != none [ + #context text(fill: area-color, size: size-area, weight: idx-heading-weight)[ + #counter(heading).display(it.numbering) ~ #it.body + ] + ] else [ + #text(fill: area-color, size: size-area, weight: idx-heading-weight, it.body) + ] + ] + + // Category (level 2) + show heading.where(level: 2): it => pad(left: indent-category)[ + #block(above: 1.1em, below: 0.35em)[ + #if it.numbering != none [ + #context text(fill: category-color, size: size-category, weight: idx-heading-weight)[ + #counter(heading).display(it.numbering) ~ #it.body + ] + ] else [ + #text(fill: category-color, size: size-category, weight: idx-heading-weight, it.body) + ] + ] + ] + + // ID (level 3) + show heading.where(level: 3): it => pad(left: indent-id)[ + #block(above: 0.55em, below: 0.15em)[ + #if it.numbering != none [ + #context text(fill: id-color, size: size-id, weight: idx-heading-weight)[ + #counter(heading).display(it.numbering) ~ #it.body + ] + ] else [ + #text(fill: id-color, size: size-id, weight: idx-heading-weight, it.body) + ] + ] + ] + + // Generic line (level 4): styled like #info (plain black, note + // size/weight, same indent) but with no bullet, so it reads as a + // one-off heading rather than a bulleted note. + show heading.where(level: 4): it => block(above: 1em, below: 0.4em)[ + #pad(left: indent-note)[ + #if it.numbering != none [ + #context text(font: idx-font, size: size-note, weight: idx-body-weight)[ + #counter(heading).display(it.numbering) ~ #it.body + ] + ] else [ + #text(font: idx-font, size: size-note, weight: idx-body-weight, it.body) + ] + ] + ] + + // Lists + set list(indent: 0.25in, spacing: 0.6em, marker: ([•], [◦], [‣])) + set enum(indent: 0.25in, spacing: 0.6em, numbering: "1.a.i.") + + // Tables: header row shaded, body rows striped + set table( + stroke: 0.5pt + table-line-color, + inset: 6pt, + fill: (x, y) => if y == 0 { table-header-fill } else if calc.odd(y) { table-stripe-fill } else { none }, + ) + show table.cell.where(y: 0): set text(weight: "bold") + + // Code blocks: shaded box, language label, optional line numbers + show raw: set text(font: code-font, size: 9pt) + show raw.where(block: true): it => block( + fill: code-bg, + radius: 4pt, + width: 100%, + clip: true, + )[ + #if it.lang != none [ + #block(width: 100%, inset: (x: 10pt, top: 6pt, bottom: 6pt), fill: code-header-fill)[ + #text(size: 8pt, fill: id-color, weight: "bold", tracking: 0.5pt, upper(it.lang)) + ] + ] + #block(inset: 10pt, width: 100%)[ + #if code-line-numbers [ + #grid( + columns: (auto, 1fr), + column-gutter: 10pt, + row-gutter: 0pt, + ..it.lines.map(line => ( + box(height: 1.4em, text(fill: code-line-number-color, str(line.number))), + box(height: 1.4em, line.body), + )).flatten() + ) + ] else [ + #it + ] + ] + ] + + // Blockquotes + show quote.where(block: true): it => block( + inset: (left: 1em), + stroke: (left: 2pt + quote-bar-color), + )[ + #set text(style: "italic") + #it.body + ] + + // Links + show link: it => text(fill: link-color, underline(it)) + + // Figure captions + show figure.caption: it => text(fill: id-color, size: size-note, style: "italic", it) + + // Title block + align(center)[ + #text(fill: area-color, size: 22pt, weight: "bold", title) + ] + v(0.5em) + line(length: 100%, stroke: 0.5pt + area-color.lighten(30%)) + v(1em) + + body +} + +// ---- Table of contents ---- +// Call #toc() once, right after #show: index-doc.with(...), if you +// want a listing page. Its own "Table of Contents" heading is never +// numbered and never lists itself — only the real headings below it +// show up, with the same numbers as in the body (or no numbers, if +// number-sections is off). +#let toc() = { + align(center)[ #text(fill: area-color, size: 18pt, weight: idx-heading-weight)[Table of Contents]] + show outline.entry.where(level: 1): it => text(fill: area-color.lighten(25%).desaturate(50%), it) + show outline.entry.where(level: 2): it => text(fill: category-color.lighten(25%).desaturate(50%), it) + show outline.entry.where(level: 3): it => text(fill: id-color.lighten(25%).desaturate(50%), it) + show outline.entry.where(level: 4): it => text(fill: heading_4_color.lighten(45%).desaturate(50%), it) + outline(title: none, indent: auto) + colbreak() +} + +// ---- Leaf notes (info / physloc / subid) ---- +#let note(body, fill: black, weight: idx-body-weight, style: "normal", indent: indent-note) = pad(left: indent)[ + #set text(font: idx-font, size: size-note, fill: fill, weight: weight, style: style) + #box[•~#body] +] + +// Shared helper: looks up the last heading before the note and indents +// one step past that heading's indent. #info and #physloc both use it. +#let note-under-heading(body, ..args) = context { + let hs = query(selector(heading).before(here())) + let lvl = if hs.len() == 0 { 0 } else { hs.last().level } + let base = if lvl <= 1 { indent-area } + else if lvl == 2 { indent-category } + else if lvl == 3 { indent-id } + else { indent-note } + note(body, indent: base + indent-note-step, ..args) +} + +#let info(body) = note-under-heading(body) +#let physloc(body) = note-under-heading(body, fill: physloc-color, weight: "bold", style: "italic") +#let subid(body) = note(body) + +// ---- General prose-page helpers ---- +#let callout(body, fill: table-header-fill) = block( + fill: fill, + inset: 10pt, + radius: 4pt, + width: 100%, + body, +) + +#let blockquote(body) = quote(block: true, body) + +#let divider() = line( + length: 100%, + stroke: 1.25pt + rgb("#660000").transparentize(25%), +) diff --git a/packages/preview/comozeidex/0.3.0/thumbnail.png b/packages/preview/comozeidex/0.3.0/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4aee4566de890b5ea07af242461885c6e743b6 GIT binary patch literal 22565 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 literal 0 HcmV?d00001 diff --git a/packages/preview/comozeidex/0.3.0/typst.toml b/packages/preview/comozeidex/0.3.0/typst.toml new file mode 100644 index 0000000000..3c4f0c51a4 --- /dev/null +++ b/packages/preview/comozeidex/0.3.0/typst.toml @@ -0,0 +1,13 @@ +[package] +name = "comozeidex" +version = "0.2.0" +entrypoint = "lib.typ" +authors = ["Comozeidam <@Comozeidam>"] +license = "MIT" +description = "Styled headings and helpers for building a hierarchical index or binder — areas, categories, IDs, and notes. " +categories = ["office", "layout"] + +[template] +path = "template" +entrypoint = "main.typ" +thumbnail = "thumbnail.png" \ No newline at end of file From 30ac01fa7160d377bc491bf094128531cf0eb408 Mon Sep 17 00:00:00 2001 From: Red Globe <106024082+Comozeidam@users.noreply.github.com> Date: Tue, 6 Oct 2026 17:13:25 -0400 Subject: [PATCH 6/6] Delete packages/preview/comozeidex/0.3.0/temp --- packages/preview/comozeidex/0.3.0/temp | 1 - 1 file changed, 1 deletion(-) delete mode 100644 packages/preview/comozeidex/0.3.0/temp diff --git a/packages/preview/comozeidex/0.3.0/temp b/packages/preview/comozeidex/0.3.0/temp deleted file mode 100644 index 9daeafb986..0000000000 --- a/packages/preview/comozeidex/0.3.0/temp +++ /dev/null @@ -1 +0,0 @@ -test