@sportsdataverse/sdvtables 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts","../src/define.ts","../src/predicate.ts","../src/snake.ts","../src/format.ts","../src/themes/tokens.ts","../src/themes/sdv.ts","../src/themes/almanac.ts","../src/themes/athletic.ts","../src/themes/booktabs.ts","../src/themes/broadsheet.ts","../src/themes/brutalist.ts","../src/themes/luminance.ts","../src/themes/drench.ts","../src/themes/gtutils.ts","../src/themes/kenpom.ts","../src/themes/midnight.ts","../src/themes/ncaa.ts","../src/themes/pl.ts","../src/themes/savant.ts","../src/themes/scoreboard.ts","../src/themes/sofa.ts","../src/themes/swiss.ts","../src/themes/terminal.ts","../src/themes/tier.ts","../src/themes/tufte.ts","../src/themes/index.ts","../src/engine.ts"],"names":["_","hex6","v","onColor","matches"],"mappings":"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","file":"chunk-4VKYHOHL.js","sourcesContent":["// src/errors.ts — spec §3: sdvtables adds TableSpecError to the SdvplotError hierarchy (the base sets name = new.target.name)\nimport { SdvplotError } from \"@sportsdataverse/sdvplot\";\nexport class TableSpecError extends SdvplotError {}\n","// src/define.ts — the fluent builder. Every method returns a NEW builder (immutable), build() validates once.\nimport { TableSpecError } from \"./errors.js\";\nimport type { ColumnBase, ColumnSpec, Decoration, Density, NumericKey, TableSpec } from \"./spec.js\";\n\ntype Opt<T, K extends PropertyKey> = Omit<T, \"kind\" | \"key\" | K>;\ntype Base<Row, K extends keyof Row & string> = Omit<ColumnBase<Row, K>, \"key\">;\ntype Col<Row, Kind extends ColumnSpec<Row>[\"kind\"]> = Extract<ColumnSpec<Row>, { kind: Kind }>;\ntype Partialize<T, Req extends keyof T> = Partial<Omit<T, Req>> & Pick<T, Req>;\n\nexport interface ColumnFactory<Row> {\n text<K extends keyof Row & string>(key: K, o?: Base<Row, K>): Col<Row, \"text\">;\n num<K extends NumericKey<Row>>(\n key: K,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"num\">, never>>,\n ): Col<Row, \"num\">;\n int<K extends NumericKey<Row>>(key: K, o?: Base<Row, K>): Col<Row, \"int\">;\n pct<K extends NumericKey<Row>>(\n key: K,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"pct\">, never>>,\n ): Col<Row, \"pct\">;\n rank<K extends NumericKey<Row>>(\n key: K,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"rank\">, never>>,\n ): Col<Row, \"rank\">;\n delta<K extends NumericKey<Row>>(\n from: K,\n to: NumericKey<Row>,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"delta\">, \"to\">>,\n ): Col<Row, \"delta\">;\n tally(\n keys: readonly [NumericKey<Row>, ...NumericKey<Row>[]],\n o?: Base<Row, NumericKey<Row>> & Partial<Opt<Col<Row, \"tally\">, \"keys\">>,\n ): Col<Row, \"tally\">;\n logo<K extends keyof Row & string>(\n key: K,\n o: Base<Row, K> & Partialize<Opt<Col<Row, \"logo\">, never>, \"league\">,\n ): Col<Row, \"logo\">;\n wordmark<K extends keyof Row & string>(\n key: K,\n o: Base<Row, K> & Partialize<Opt<Col<Row, \"wordmark\">, never>, \"league\">,\n ): Col<Row, \"wordmark\">;\n headshot<K extends keyof Row & string>(\n key: K,\n o: Base<Row, K> & Partialize<Opt<Col<Row, \"headshot\">, never>, \"league\">,\n ): Col<Row, \"headshot\">;\n colorPills<K extends NumericKey<Row>>(\n key: K,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"colorPills\">, never>>,\n ): Col<Row, \"colorPills\">;\n colorRanks<K extends NumericKey<Row>>(\n key: K,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"colorRanks\">, never>>,\n ): Col<Row, \"colorRanks\">;\n colorResults<K extends keyof Row & string>(\n key: K,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"colorResults\">, never>>,\n ): Col<Row, \"colorResults\">;\n percentileBar<K extends NumericKey<Row>>(\n key: K,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"percentileBar\">, never>>,\n ): Col<Row, \"percentileBar\">;\n indicatorBox<K extends keyof Row & string>(\n key: K,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"indicatorBox\">, never>>,\n ): Col<Row, \"indicatorBox\">;\n highlight<K extends keyof Row & string>(\n key: K,\n when: Col<Row, \"highlight\">[\"when\"],\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"highlight\">, \"when\">>,\n ): Col<Row, \"highlight\">;\n highlightNa<K extends keyof Row & string>(\n key: K,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"highlightNa\">, never>>,\n ): Col<Row, \"highlightNa\">;\n mergeStackTeamColor<K extends keyof Row & string>(\n key: K,\n stack: keyof Row & string,\n team: keyof Row & string,\n o: Base<Row, K> & Partialize<Opt<Col<Row, \"mergeStackTeamColor\">, \"stack\" | \"team\">, \"league\">,\n ): Col<Row, \"mergeStackTeamColor\">;\n teamColorBar<K extends keyof Row & string>(\n key: K,\n o: Base<Row, K> & Partialize<Opt<Col<Row, \"teamColorBar\">, never>, \"league\">,\n ): Col<Row, \"teamColorBar\">;\n teamColorBg<K extends keyof Row & string>(\n key: K,\n o: Base<Row, K> & Partialize<Opt<Col<Row, \"teamColorBg\">, never>, \"league\">,\n ): Col<Row, \"teamColorBg\">;\n image<K extends keyof Row & string>(\n key: K,\n o?: Base<Row, K> & Partial<Opt<Col<Row, \"image\">, never>>,\n ): Col<Row, \"image\">;\n /** gtUtils aliases — same objects, old names (see src/aliases.ts). */\n fmtRank: ColumnFactory<Row>[\"rank\"];\n fmtTally: ColumnFactory<Row>[\"tally\"];\n}\n\n/** gtUtils/sdvplot `_RANK_PALETTE` (green → red), shared by colorRanks, the legend fallback and tiers. */\nexport const RANK_PALETTE: readonly string[] = [\"#3D8B6E\", \"#9DC5A7\", \"#EDE0CC\", \"#DB9070\", \"#BE4D3A\"];\n\n// Defaults are the sdvplotR / sdvplot defaults, verbatim (PARITY_TABLES.md; file:line beside each that was corrected); listed once, here.\n// Typed against ColumnFactory (no cast), so every arrow is contextually typed and the defaults are checked against the kind.\nexport function columnFactory<Row>(): ColumnFactory<Row> {\n const f: Omit<ColumnFactory<Row>, \"fmtRank\" | \"fmtTally\"> = {\n text: (key, o = {}) => ({ kind: \"text\", key, ...o }),\n num: (key, o = {}) => ({ kind: \"num\", key, ...o }),\n int: (key, o = {}) => ({ kind: \"int\", key, ...o }),\n pct: (key, o = {}) => ({ kind: \"pct\", key, digits: 1, scale: true, ...o }),\n rank: (key, o = {}) => ({ kind: \"rank\", key, superscript: true, suffixSize: \"0.7em\", ...o }),\n delta: (from, to, o = {}) => ({\n kind: \"delta\",\n key: from,\n to,\n label: \"Change\",\n percent: false,\n decimals: 1,\n arrows: false,\n color: true,\n colorPositive: \"#1B7837\",\n colorNegative: \"#B2182B\",\n forceSign: true,\n ...o,\n }),\n tally: (keys, o = {}) => ({\n kind: \"tally\",\n key: keys[0],\n keys,\n separator: \"-\",\n share: false,\n shareOf: 0,\n shareDecimals: 1,\n shareLabel: \"%\",\n sharePrefix: \" (\",\n shareSuffix: \")\",\n ...o,\n }),\n logo: (key, o) => ({ kind: \"logo\", key, height: 30, includeName: false, ...o }),\n wordmark: (key, o) => ({ kind: \"wordmark\", key, height: 30, ...o }),\n headshot: (key, o) => ({ kind: \"headshot\", key, idSystem: \"espn\", height: 30, ...o }),\n colorPills: (key, o = {}) => ({\n kind: \"colorPills\",\n key,\n palette: [\"#C84630\", \"#5DA271\"],\n fillType: \"continuous\",\n rankOrder: \"desc\",\n formatType: \"number\",\n scalePercent: true,\n suffix: \"\",\n reverse: false,\n outlineWidth: 0.25,\n pillHeight: 25,\n ...o,\n }),\n colorRanks: (key, o = {}) => ({ kind: \"colorRanks\", key, palette: RANK_PALETTE, reverse: false, ...o }),\n // gt_color_results fills the whole row (_cells.py:155-222); spec §6.1 lists it among the c.* kinds\n colorResults: (key, o = {}) => ({\n kind: \"colorResults\",\n key,\n winColor: \"#5DA271\",\n lossColor: \"#C84630\",\n winTextColor: \"white\",\n lossTextColor: \"white\",\n tieTextColor: \"white\",\n tieValue: \"T\",\n resultType: \"wl\",\n ...o,\n }),\n // width: the <th> width, Python gt_percentile_bar width=220 px (_layout.py:662-684)\n percentileBar: (key, o = {}) => ({\n kind: \"percentileBar\",\n key,\n domain: [0, 100],\n scale: \"auto\",\n palette: [\"#3661AD\", \"#C9C9C9\", \"#D22D49\"],\n reverse: false,\n trackColor: \"#E9E9E9\",\n trackHeight: 6,\n markerSize: 22,\n textColor: \"#FFFFFF\",\n ringWidth: 2,\n fullTrack: true,\n naLabel: \"—\",\n naTextColor: \"#9A9A9A\",\n decimals: 0,\n width: \"220px\",\n ...o,\n }),\n // gt_indicator_boxes: color_yes #FCCF10, color_no #EEEEEE, 20x20 box, yes = value 1 (_cells.py:1337-1347, :1414-1416)\n indicatorBox: (key, o = {}) => ({\n kind: \"indicatorBox\",\n key,\n truthy: [1, true, \"1\"],\n fill: \"#FCCF10\",\n neutral: \"#EEEEEE\",\n size: 20,\n ...o,\n }),\n highlight: (key, when, o = {}) => ({ kind: \"highlight\", key, when, fill: \"#FFF3B0\", bold: false, ...o }),\n highlightNa: (key, o = {}) => ({\n kind: \"highlightNa\",\n key,\n fill: \"#F0F0F0\",\n bold: false,\n italic: false,\n naStrings: [\"NA\"],\n ignoreCase: false,\n ...o,\n }),\n mergeStackTeamColor: (key, stack, team, o) => ({\n kind: \"mergeStackTeamColor\",\n key,\n stack,\n team,\n fontSizeTop: 14,\n fontSizeBottom: 12,\n color: \"black\",\n ...o,\n }),\n teamColorBar: (key, o) => ({\n kind: \"teamColorBar\",\n key,\n which: \"primary\",\n naColor: \"#b3b3b3\",\n barWidth: 4,\n ...o,\n }),\n teamColorBg: (key, o) => ({\n kind: \"teamColorBg\",\n key,\n which: \"primary\",\n alpha: 0.4,\n naColor: \"#b3b3b3\",\n ...o,\n }),\n image: (key, o = {}) => ({ kind: \"image\", key, height: \"55px\", ...o }),\n };\n return { ...f, fmtRank: f.rank, fmtTally: f.tally };\n}\n\n/** Themes whose Python default density is \"compact\" (_themes.py:241-242, :1108, :1212); every other theme defaults to \"comfortable\". */\nconst THEME_DENSITY: Readonly<Record<string, Density>> = {\n almanac: \"compact\",\n scoreboard: \"compact\",\n terminal: \"compact\",\n};\n\ntype D<Row, T extends Decoration<Row>[\"type\"]> = Extract<Decoration<Row>, { type: T }>;\nexport class TableBuilder<Row> {\n constructor(private readonly s: TableSpec<Row>) {}\n private add(d: Decoration<Row>): TableBuilder<Row> {\n return new TableBuilder({ ...this.s, decorations: [...this.s.decorations, d] });\n }\n id(id: string): TableBuilder<Row> {\n return new TableBuilder({ ...this.s, id });\n }\n /** J31: the link id column (see `TableSpec.rowKey`). */\n rowKey(key: keyof Row & string): TableBuilder<Row> {\n return new TableBuilder({ ...this.s, rowKey: key });\n }\n columns(fn: (c: ColumnFactory<Row>) => readonly ColumnSpec<Row>[]): TableBuilder<Row> {\n return new TableBuilder({ ...this.s, columns: fn(columnFactory<Row>()) });\n }\n theme(\n name: string,\n o: { density?: Density; options?: Readonly<Record<string, string>> } = {},\n ): TableBuilder<Row> {\n return new TableBuilder({\n ...this.s,\n theme: {\n name,\n density: o.density ?? THEME_DENSITY[name] ?? \"comfortable\",\n ...(o.options ? { options: o.options } : {}),\n },\n });\n }\n title(text: string): TableBuilder<Row> {\n return this.add({ type: \"title\", text });\n }\n subtitle(text: string): TableBuilder<Row> {\n return this.add({ type: \"subtitle\", text });\n }\n titleHeader(title: string, o: Omit<D<Row, \"titleHeader\">, \"type\" | \"title\"> = {}): TableBuilder<Row> {\n return this.add({ type: \"titleHeader\", title, ...o });\n }\n sourceNote(html: string, o: { unsafe?: boolean } = {}): TableBuilder<Row> {\n return this.add({ type: \"sourceNote\", html, ...o });\n }\n caption538(o: Partial<Omit<D<Row, \"caption538\">, \"type\">> = {}): TableBuilder<Row> {\n return this.add({ type: \"caption538\", ruleWidth: 1, size: 12, align: \"right\", ...o });\n }\n groupBy(key: keyof Row & string): TableBuilder<Row> {\n return this.add({ type: \"groupBy\", key });\n }\n groupStripes(o: Partial<Omit<D<Row, \"groupStripes\">, \"type\">> = {}): TableBuilder<Row> {\n return this.add({ type: \"groupStripes\", color: \"#F5F5F5\", start: 2, ...o });\n }\n rowAccent(\n key: keyof Row & string,\n o: Partial<Omit<D<Row, \"rowAccent\">, \"type\" | \"key\">> = {},\n ): TableBuilder<Row> {\n return this.add({\n type: \"rowAccent\",\n key,\n width: 4,\n side: \"left\",\n hide: true,\n naColor: \"transparent\",\n ...o,\n });\n }\n boldRows(\n rows: D<Row, \"boldRows\">[\"rows\"],\n o: Partial<Omit<D<Row, \"boldRows\">, \"type\" | \"rows\">> = {},\n ): TableBuilder<Row> {\n return this.add({ type: \"boldRows\", rows, textColor: \"black\", ...o });\n }\n spotlight(\n rows: D<Row, \"spotlight\">[\"rows\"],\n o: Partial<Omit<D<Row, \"spotlight\">, \"type\" | \"rows\">> = {},\n ): TableBuilder<Row> {\n return this.add({ type: \"spotlight\", rows, bold: true, accentWidth: 4, dimColor: \"auto\", ...o });\n }\n cutline(\n after: number | readonly number[],\n o: Partial<Omit<D<Row, \"cutline\">, \"type\" | \"after\">> = {},\n ): TableBuilder<Row> {\n return this.add({\n type: \"cutline\",\n after: typeof after === \"number\" ? [after] : after,\n color: \"#A6081A\",\n weight: 2,\n style: \"dashed\",\n labelSize: 9,\n labelPosition: \"below\",\n gap: [0],\n ...o,\n });\n }\n borderGrid(o: Partial<Omit<D<Row, \"borderGrid\">, \"type\">> = {}): TableBuilder<Row> {\n return this.add({ type: \"borderGrid\", color: \"black\", weight: 1, includeLabels: false, ...o });\n }\n borderBars(\n side: \"top\" | \"bottom\",\n colors: readonly string[],\n o: Partial<Omit<D<Row, \"borderBars\">, \"type\" | \"side\" | \"colors\">> = {},\n ): TableBuilder<Row> {\n return this.add({\n type: \"borderBars\",\n side,\n colors,\n barHeight: 10,\n barWidth: \"100%\",\n barAlign: \"center\",\n imgWidth: 30,\n imgHeight: 30,\n imgPadding: 10,\n imgAlign: \"right\",\n textWeight: \"bold\",\n textColor: \"#FFFFFF\",\n textSize: 18,\n textAlign: \"left\",\n textPadding: 10,\n ...o,\n });\n }\n // location \"bottom\": Python gt_legend_continuous default (_layout.py:357)\n legendContinuous(o: Partial<Omit<D<Row, \"legendContinuous\">, \"type\">> = {}): TableBuilder<Row> {\n return this.add({\n type: \"legendContinuous\",\n nBins: 5,\n digits: 0,\n titlePosition: \"top\",\n location: \"bottom\",\n swatchWidth: 40,\n swatchHeight: 12,\n ...o,\n });\n }\n legendDiscrete(\n key: D<Row, \"legendDiscrete\">[\"key\"],\n o: Partial<Omit<D<Row, \"legendDiscrete\">, \"type\" | \"key\">> = {},\n ): TableBuilder<Row> {\n return this.add({\n type: \"legendDiscrete\",\n key,\n location: \"top\",\n shape: \"square\",\n swatchSize: 14,\n border: true,\n gap: 14,\n direction: \"horizontal\",\n align: \"center\",\n ...o,\n });\n }\n // hideP: Python hide_p=True (_layout.py:1303)\n significance(\n pairs: D<Row, \"significance\">[\"pairs\"],\n o: Partial<Omit<D<Row, \"significance\">, \"type\" | \"pairs\">> = {},\n ): TableBuilder<Row> {\n return this.add({\n type: \"significance\",\n pairs,\n levels: [0.01, 0.05, 0.1],\n symbols: [\"***\", \"**\", \"*\"],\n superscript: true,\n note: true,\n hideP: true,\n ...o,\n });\n }\n outliers(\n columns: readonly (keyof Row & string)[],\n o: Partial<Omit<D<Row, \"outliers\">, \"type\" | \"columns\">> = {},\n ): TableBuilder<Row> {\n return this.add({ type: \"outliers\", columns, method: \"iqr\", side: \"both\", bold: true, ...o });\n }\n scaleNote(\n columns: readonly (keyof Row & string)[],\n o: Partial<Omit<D<Row, \"scaleNote\">, \"type\" | \"columns\">> = {},\n ): TableBuilder<Row> {\n return this.add({ type: \"scaleNote\", columns, divisor: 1000, where: \"sourceNote\", decimals: 0, ...o });\n }\n socialTag(\n accounts: Readonly<Record<string, string>>,\n o: Partial<Omit<D<Row, \"socialTag\">, \"type\" | \"accounts\">> = {},\n ): TableBuilder<Row> {\n return this.add({\n type: \"socialTag\",\n accounts,\n stack: false,\n separator: \" | \",\n align: \"right\",\n iconHeight: \"0.9em\",\n ...o,\n });\n }\n watermark(o: Partial<Omit<D<Row, \"watermark\">, \"type\">> = {}): TableBuilder<Row> {\n return this.add({\n type: \"watermark\",\n opacity: 0.06,\n size: \"60%\",\n position: \"center\",\n color: \"#000000\",\n angle: 0,\n font: \"Helvetica, Arial, sans-serif\",\n ...o,\n });\n }\n wrapLabels(o: Partial<Omit<D<Row, \"wrapLabels\">, \"type\">> = {}): TableBuilder<Row> {\n return this.add({ type: \"wrapLabels\", width: 12, balance: true, ...o });\n }\n marginalia(\n columns: readonly (keyof Row & string)[],\n o: Partial<Omit<D<Row, \"marginalia\">, \"type\" | \"columns\">> = {},\n ): TableBuilder<Row> {\n return this.add({\n type: \"marginalia\",\n columns,\n width: 220,\n label: \"\",\n italic: true,\n size: \"0.92em\",\n rule: true,\n align: \"left\",\n ...o,\n });\n }\n snake(o: Partial<Omit<D<Row, \"snake\">, \"type\">> = {}): TableBuilder<Row> {\n return this.add({ type: \"snake\", nCols: 2, gap: 20, fill: \"\", cleanGaps: true, ...o });\n }\n tiers(\n levels: readonly string[],\n tierKey: keyof Row & string,\n imageColumns: readonly (keyof Row & string)[],\n o: Partial<Omit<D<Row, \"tiers\">, \"type\" | \"levels\" | \"tierKey\" | \"imageColumns\">> = {},\n ): TableBuilder<Row> {\n return this.add({ type: \"tiers\", levels, tierKey, imageColumns, imgHeight: \"55px\", style: \"dark\", ...o });\n }\n font(family: string, o: Partial<Omit<D<Row, \"font\">, \"type\" | \"family\">> = {}): TableBuilder<Row> {\n return this.add({ type: \"font\", family, google: true, ...o });\n }\n build(): TableSpec<Row> {\n if (this.s.columns.length === 0)\n throw new TableSpecError(\"a table needs at least one column: call .columns(c => [...])\");\n const seen = new Set<string>();\n for (const col of this.s.columns) {\n if (seen.has(col.key)) throw new TableSpecError(`column key \"${col.key}\" appears twice`);\n seen.add(col.key);\n }\n if (this.s.decorations.filter((d) => d.type === \"title\").length > 1)\n throw new TableSpecError(\"only one .title()\");\n return this.s;\n }\n}\n/**\n * Start a table spec for rows of type `Row`: chain `.columns(...)`, decorations and `.theme(...)`, then `.build()`.\n * The spec is plain data: render it with `renderHTML` (`@sportsdataverse/sdvtables/html`).\n *\n * @example\n * ```ts\n * import { defineTable } from \"@sportsdataverse/sdvtables\";\n * import { renderHTML } from \"@sportsdataverse/sdvtables/html\";\n *\n * const rows = [\n * { team: \"KC\", wins: 15, losses: 2 },\n * { team: \"BUF\", wins: 13, losses: 4 },\n * { team: \"LAC\", wins: 11, losses: 6 },\n * ];\n * const spec = defineTable<(typeof rows)[number]>()\n * .columns((c) => [c.text(\"team\"), c.int(\"wins\"), c.int(\"losses\")])\n * .title(\"AFC, 2024\")\n * .build();\n * renderHTML(spec, rows);\n * ```\n */\nexport function defineTable<Row>(): TableBuilder<Row> {\n return new TableBuilder<Row>({\n columns: [],\n decorations: [],\n theme: { name: \"sdv\", density: \"comfortable\" },\n });\n}\n","// src/predicate.ts\nimport { TableSpecError } from \"./errors.js\";\nimport type { Predicate, RowSelector } from \"./spec.js\";\nconst isNull = (v: unknown): boolean =>\n v === null || v === undefined || (typeof v === \"number\" && Number.isNaN(v));\nexport function matches<Row>(p: Predicate<Row>, row: Row): boolean {\n const v = (row as Record<string, unknown>)[p.key];\n switch (p.op) {\n case \"isNull\":\n return isNull(v);\n case \"notNull\":\n return !isNull(v);\n case \"==\":\n return v === p.value;\n case \"!=\":\n return v !== p.value;\n case \">\":\n return typeof v === \"number\" && v > (p.value as number);\n case \">=\":\n return typeof v === \"number\" && v >= (p.value as number);\n case \"<\":\n return typeof v === \"number\" && v < (p.value as number);\n case \"<=\":\n return typeof v === \"number\" && v <= (p.value as number);\n case \"in\":\n return Array.isArray(p.value) && p.value.includes(v);\n case \"notIn\":\n return Array.isArray(p.value) && !p.value.includes(v);\n case \"matches\":\n return typeof v === \"string\" && new RegExp(String(p.value)).test(v);\n default: {\n const bad: never = p.op;\n throw new TableSpecError(`unknown predicate op ${String(bad)}`);\n }\n }\n}\n/**\n * The indices into `rows` that `sel` picks. A predicate tests each row; an index array names positions in `source`\n * (default `rows`), matched to `rows` by identity. An interactive render passes the table's source rows, so `[5]`\n * stays the sixth data row whatever page, filter or sort shows it (A49). Throws `TableSpecError` for an index outside `source`.\n */\nexport function selectRows<Row>(\n sel: RowSelector<Row>,\n rows: readonly Row[],\n source: readonly Row[] = rows,\n): number[] {\n if (Array.isArray(sel)) {\n for (const i of sel)\n if (!Number.isInteger(i) || i < 0 || i >= source.length)\n throw new TableSpecError(`row ${i} is outside 0..${source.length - 1}`);\n if (source === rows) return [...sel];\n const want = new Set(sel.map((i) => source[i])); // ponytail: one Set per selector, O(rows); no index map needed\n return rows.flatMap((r, i) => (want.has(r) ? [i] : []));\n }\n const out: number[] = [];\n rows.forEach((r, i) => {\n if (matches(sel as Predicate<Row>, r)) out.push(i);\n });\n return out;\n}\n","// src/snake.ts — gt_snake_align: blocks and rows per block as Python _snake_shape (_layout.py:1630-1640)\nimport { TableSpecError } from \"./errors.js\";\n\nexport function snakeAlign<Row>(\n rows: readonly Row[],\n o: { nCols?: number; rowsPerCol?: number; fill?: Row | null } = {},\n): (Row | null)[][] {\n let blocks: number;\n let per: number;\n if (o.rowsPerCol !== undefined) {\n per = Math.trunc(o.rowsPerCol);\n if (!(per >= 1)) throw new TableSpecError(\"rowsPerCol must be at least 1\");\n blocks = Math.ceil(rows.length / per);\n } else {\n blocks = Math.trunc(o.nCols ?? 2);\n if (!(blocks >= 1)) throw new TableSpecError(\"nCols must be at least 1\");\n per = Math.ceil(rows.length / blocks);\n }\n const fill = o.fill ?? null;\n return Array.from({ length: blocks }, (_, j) =>\n Array.from({ length: per }, (_, k) => rows[j * per + k] ?? fill),\n );\n}\n","// src/format.ts — ports of sdvplot Python great_tables/_cells.py `_number` / `_natural` / `_format_value`.\n// Rounding is HALF-TO-EVEN on exact binary ties, like Python's f-format and `round` (controller ruling R2);\n// JS `toFixed` / `Math.round` round exact ties away from zero.\n\nexport const isBlank = (v: unknown): boolean =>\n v === null ||\n v === undefined ||\n (typeof v === \"number\" && Number.isNaN(v)) ||\n (typeof v === \"string\" && v.trim() === \"\");\n\n/** Python `_number` (_cells.py:963-971): numbers, booleans and numeric strings; anything else (and NaN) is null. Infinities pass. */\nexport function toNumber(v: unknown): number | null {\n if (isBlank(v)) return null;\n if (typeof v === \"string\" && /^\\s*[+-]?0[xXoObB]/.test(v)) return null; // JS Number() reads 0x10; Python float() does not\n const n =\n typeof v === \"number\"\n ? v\n : typeof v === \"boolean\"\n ? Number(v)\n : typeof v === \"string\"\n ? Number(v)\n : Number.NaN;\n return Number.isNaN(n) ? null : n;\n}\n\nconst group = (s: string): string => s.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n\n/** `|x|` rounded to `digits` decimals as an integer string of `x * 10^digits`, exact on the double's binary value, ties to even. */\nfunction scaledDigits(a: number, digits: number): string {\n const dv = new DataView(new ArrayBuffer(8));\n dv.setFloat64(0, a);\n const bits = dv.getBigUint64(0);\n const biased = Number((bits >> 52n) & 0x7ffn);\n const frac = bits & ((1n << 52n) - 1n);\n const m = biased === 0 ? frac : frac | (1n << 52n);\n const e = (biased === 0 ? 1 : biased) - 1075; // a = m * 2^e\n const num = m * 10n ** BigInt(digits);\n if (e >= 0) return (num << BigInt(e)).toString();\n const k = BigInt(-e);\n let q = num >> k;\n const r = num & ((1n << k) - 1n);\n const half = 1n << (k - 1n);\n if (r > half || (r === half && (q & 1n) === 1n)) q += 1n;\n return q.toString();\n}\n\n/**\n * Python `f\"{v:,.{digits}f}\"`: fixed decimals for any `digits`, exact ties to even, sign kept even when the result rounds to zero\n * (`-0.04` -> `-0.0`). Pure BigInt on the double's exact binary value, so no `toFixed` 100-digit cap or exponent form at 1e21.\n */\nfunction fixed(v: number, digits: number, big: boolean): string {\n if (!Number.isFinite(v)) return Number.isNaN(v) ? \"nan\" : v > 0 ? \"inf\" : \"-inf\";\n const s = scaledDigits(Math.abs(v), digits).padStart(digits + 1, \"0\");\n const i = s.slice(0, s.length - digits);\n const f = s.slice(s.length - digits);\n return (v < 0 || Object.is(v, -0) ? \"-\" : \"\") + (big ? group(i) : i) + (digits > 0 ? `.${f}` : \"\");\n}\n\n/** Python `_natural` (_cells.py:974-980): decimals = what `f\"{v:.7g}\"` needs (up to 7 significant figures), then `v` itself is printed with them. */\nexport function naturalDigits(v: number, big = false): string {\n if (!Number.isFinite(v)) return v > 0 ? \"Inf\" : \"-Inf\";\n const exp = Number(Math.abs(v).toExponential(6).split(\"e\")[1]);\n const seven = fixed(Math.abs(v), Math.max(0, 6 - exp), false); // 7 significant figures, ties to even\n const frac = seven.split(\".\")[1]?.replace(/0+$/, \"\") ?? \"\";\n return fixed(v, frac.length, big);\n}\n\n/**\n * Sign-glyph rule: great_tables prints negatives from fmt_number/fmt_percent with U+2212, so `formatNumber` (num/int/pct/delta cells)\n * swaps the ASCII \"-\" for it. `formatValue` ports Python `_format_value` (pill/box/bar labels), which prints a plain \"-\", and does NOT. `fixed()`/`naturalDigits()` stay ASCII on purpose: `pxOf` feeds CSS via Number(fixed(...)).\n */\nconst minus = (s: string): string => s.replace(/-/g, \"−\");\n\nexport type FormatType = \"number\" | \"comma\" | \"currency\" | \"percent\";\n\n/** Python `_format_value` (_cells.py:983-998): a missing value prints `NA`. */\nexport function formatValue(\n v: number | null,\n digits: number | null | undefined,\n formatType: FormatType,\n suffix: string,\n): string {\n const big = formatType === \"comma\" || formatType === \"currency\";\n let core =\n v === null\n ? \"NA\"\n : digits === null || digits === undefined\n ? naturalDigits(v, big)\n : fixed(v, digits, big);\n if (formatType === \"currency\") core = `$${core}`;\n else if (formatType === \"percent\") core += \"%\";\n return core + suffix; // ASCII minus on purpose (_cells.py:983-998); only formatNumber uses U+2212\n}\n\nexport function formatNumber(\n v: number,\n o: { digits?: number; big?: boolean; prefix?: string; suffix?: string; forceSign?: boolean } = {},\n): string {\n const body = o.digits === undefined ? naturalDigits(v, o.big ?? false) : fixed(v, o.digits, o.big ?? false);\n const sign = o.forceSign && !body.startsWith(\"-\") && Number(body.replace(/,/g, \"\")) !== 0 ? \"+\" : \"\";\n return `${o.prefix ?? \"\"}${sign}${minus(body)}${o.suffix ?? \"\"}`;\n}\n\n/** Python `_ordinal_suffix` (_cells.py:1460) on the truncated integer. */\nexport function ordinal(n: number): string {\n const t = Math.abs(Math.trunc(n));\n const m100 = t % 100;\n const suf = m100 >= 11 && m100 <= 13 ? \"th\" : ([\"th\", \"st\", \"nd\", \"rd\"] as const)[t % 10 <= 3 ? t % 10 : 0];\n return `${Math.trunc(n)}${suf}`;\n}\n\nexport const pxOf = (n: number): string => `${Number(fixed(n, 1, false))}px`;\n","// src/themes/tokens.ts\nimport { hex6 } from \"@sportsdataverse/sdvplot\";\nimport { TableSpecError } from \"../errors.js\";\nimport { pxOf } from \"../format.js\";\nimport type { Density, ThemeRef } from \"../spec.js\";\nexport type Role = \"body\" | \"pad\" | \"title\" | \"subtitle\" | \"label\" | \"group\" | \"source\";\nexport type DensitySizes = Readonly<Record<Role, number>>;\nexport const DENSITY: Readonly<Record<Density, DensitySizes>> = {\n // sdvplotR utils-theme.R .theme_density() = _marks.py DENSITY\n comfortable: { body: 14, pad: 6, title: 26, subtitle: 15, label: 10, group: 11, source: 11 },\n compact: { body: 12, pad: 3, title: 22, subtitle: 13, label: 9, group: 10, source: 10 },\n social: { body: 17, pad: 9, title: 34, subtitle: 19, label: 12, group: 13, source: 13 },\n};\nexport function densitySizes(d: Density): DensitySizes {\n const s = DENSITY[d];\n if (!s) throw new TableSpecError(`density must be comfortable, compact or social, not ${String(d)}`);\n return s;\n}\n/** Multipliers against \"comfortable\" — sdvplotR .theme_density_mult(), for themes that hard-code px sizes. */\nexport function scaleFor(d: Density): Readonly<Record<Role, number>> {\n const b = DENSITY.comfortable;\n const s = densitySizes(d);\n return {\n body: s.body / b.body,\n pad: s.pad / b.pad,\n title: s.title / b.title,\n subtitle: s.subtitle / b.subtitle,\n label: s.label / b.label,\n group: s.group / b.group,\n source: s.source / b.source,\n };\n}\nexport const px: (n: number) => string = pxOf;\n/** Python `_color` (_themes.py:85-90): a color option must be opaque hex; returns lowercase `#rrggbb`, else TableSpecError. */\nexport function hexOption(value: string, arg: string): string {\n try {\n return hex6(value);\n } catch {\n throw new TableSpecError(\n `${arg} must be a hex color with no transparency, such as '#8C2F1E', not \"${value}\"`,\n );\n }\n}\nexport interface GoogleFont {\n readonly family: string;\n readonly weights: readonly number[];\n readonly italic?: boolean;\n}\nexport interface ThemeTokens {\n fontBody: string;\n fontLabel: string;\n fontTitle: string;\n bg: string;\n text: string;\n muted: string;\n accent: string;\n rule: string;\n hline: string;\n headingBg: string;\n headingAlign: \"left\" | \"center\";\n titleColor: string;\n titleWeight: string;\n titleSize: string;\n titleTransform: string;\n titleTracking: string;\n subtitleColor: string;\n subtitleSize: string;\n subtitleStyle: string;\n subtitleWeight: string;\n labelBg: string;\n labelColor: string;\n labelWeight: string;\n labelSize: string;\n labelTransform: string;\n labelTracking: string;\n labelStyle: string;\n labelBorderTop: string;\n labelBorderBottom: string;\n groupBg: string;\n groupColor: string;\n groupWeight: string;\n groupSize: string;\n groupTransform: string;\n groupBorderTop: string;\n groupBorderBottom: string;\n bodySize: string;\n bodyWeight: string;\n pad: string;\n headingPad: string;\n labelPad: string;\n groupPad: string;\n sourcePad: string;\n lineHeight: string;\n bodyBorderBottom: string;\n tableBorderTop: string;\n tableBorderBottom: string;\n tableBorderX: string;\n stripe: string;\n sourceColor: string;\n sourceSize: string;\n sourceStyle: string;\n horizon: string;\n}\nexport const TOKEN_KEYS: readonly (keyof ThemeTokens)[] = [\n \"fontBody\",\n \"fontLabel\",\n \"fontTitle\",\n \"bg\",\n \"text\",\n \"muted\",\n \"accent\",\n \"rule\",\n \"hline\",\n \"headingBg\",\n \"headingAlign\",\n \"titleColor\",\n \"titleWeight\",\n \"titleSize\",\n \"titleTransform\",\n \"titleTracking\",\n \"subtitleColor\",\n \"subtitleSize\",\n \"subtitleStyle\",\n \"subtitleWeight\",\n \"labelBg\",\n \"labelColor\",\n \"labelWeight\",\n \"labelSize\",\n \"labelTransform\",\n \"labelTracking\",\n \"labelStyle\",\n \"labelBorderTop\",\n \"labelBorderBottom\",\n \"groupBg\",\n \"groupColor\",\n \"groupWeight\",\n \"groupSize\",\n \"groupTransform\",\n \"groupBorderTop\",\n \"groupBorderBottom\",\n \"bodySize\",\n \"bodyWeight\",\n \"pad\",\n \"headingPad\",\n \"labelPad\",\n \"groupPad\",\n \"sourcePad\",\n \"lineHeight\",\n \"bodyBorderBottom\",\n \"tableBorderTop\",\n \"tableBorderBottom\",\n \"tableBorderX\",\n \"stripe\",\n \"sourceColor\",\n \"sourceSize\",\n \"sourceStyle\",\n \"horizon\",\n];\nexport interface Theme {\n readonly name: string;\n readonly tokens: ThemeTokens;\n readonly fonts: readonly GoogleFont[] /** extra scoped rules; `sel` is `#<tableId>` */;\n readonly rules: (sel: string) => string;\n}\nexport type ThemeDef = (ref: ThemeRef) => Theme;\n/** Tokens every theme starts from; a theme overrides what it sets, so a forgotten key is \"no rule\", never undefined. */\nexport function baseTokens(d: DensitySizes, font: string): ThemeTokens {\n return {\n fontBody: font,\n fontLabel: font,\n fontTitle: font,\n bg: \"#FFFFFF\",\n text: \"#333333\",\n muted: \"#5A5A5A\",\n accent: \"#333333\",\n rule: \"#D3D3D3\",\n hline: \"none\",\n headingBg: \"transparent\",\n headingAlign: \"left\",\n titleColor: \"inherit\",\n titleWeight: \"700\",\n titleSize: px(d.title),\n titleTransform: \"none\",\n titleTracking: \"normal\",\n subtitleColor: \"inherit\",\n subtitleSize: px(d.subtitle),\n subtitleStyle: \"normal\",\n subtitleWeight: \"400\",\n labelBg: \"transparent\",\n labelColor: \"inherit\",\n labelWeight: \"700\",\n labelSize: px(d.label),\n labelTransform: \"none\",\n labelTracking: \"normal\",\n labelStyle: \"normal\",\n labelBorderTop: \"none\",\n labelBorderBottom: \"none\",\n groupBg: \"transparent\",\n groupColor: \"inherit\",\n groupWeight: \"700\",\n groupSize: px(d.group),\n groupTransform: \"none\",\n groupBorderTop: \"none\",\n groupBorderBottom: \"none\",\n bodySize: px(d.body),\n bodyWeight: \"400\",\n pad: px(d.pad),\n headingPad: px(d.pad),\n labelPad: px(d.pad),\n groupPad: px(d.pad),\n sourcePad: px(d.pad),\n lineHeight: \"normal\",\n bodyBorderBottom: \"none\",\n tableBorderTop: \"none\",\n tableBorderBottom: \"none\",\n tableBorderX: \"none\",\n stripe: \"transparent\",\n sourceColor: \"inherit\",\n sourceSize: px(d.source),\n sourceStyle: \"normal\",\n horizon: \"none\",\n };\n}\nexport const SYSTEM_FONTS =\n \"system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'\"; // _marks.R_FONTS\nexport const fontStack = (family: string): string => `'${family}', ${SYSTEM_FONTS}`;\nexport const border = (w: number, color: string, style = \"solid\"): string => `${px(w)} ${style} ${color}`;\n","// src/themes/sdv.ts — port of _marks._light_palette/_dark_palette/_build_theme/gt_theme_sdv_team\nimport {\n UnresolvedTeamError,\n contrast,\n mix,\n onColor,\n resolveSync,\n teamColorsSync,\n warn,\n} from \"@sportsdataverse/sdvplot\";\nimport type { League } from \"@sportsdataverse/sdvplot\";\nimport { TableSpecError } from \"../errors.js\";\nimport type { ThemeRef } from \"../spec.js\";\nimport {\n type Theme,\n type ThemeTokens,\n baseTokens,\n border,\n densitySizes,\n fontStack,\n px,\n scaleFor,\n} from \"./tokens.js\";\nexport const SDV_NAVY = \"#0B1A33\";\nexport const SDV_CYAN = \"#7FE6DC\";\nexport const SDV_HORIZON = \"linear-gradient(90deg, #3346F0, #7FE6DC)\";\ninterface Pal {\n bg: string;\n headingBg: string;\n title: string;\n subtitle?: string;\n muted: string;\n label: string;\n text: string;\n rule: string;\n groupBg: string;\n horizon: string;\n}\nconst light = (horizon: string): Pal => ({\n bg: \"#FFFFFF\",\n headingBg: \"#FFFFFF\",\n title: SDV_NAVY,\n muted: \"#4A5A75\",\n label: \"#16305C\",\n text: SDV_NAVY,\n rule: \"#E3E8F1\",\n groupBg: \"#EEF3FA\",\n horizon,\n});\nconst dark = (): Pal => ({\n bg: SDV_NAVY,\n headingBg: SDV_NAVY,\n title: \"#FFFFFF\",\n muted: \"#A9B8D0\",\n label: \"#9CCBFF\",\n text: \"#EAEBEC\",\n rule: \"#1D3A66\",\n groupBg: \"#16305C\",\n horizon: SDV_HORIZON,\n});\n/** sdvplotR .theme_secondary_on() (_marks.py:619-628): fg blended toward bg as far as still clears 4.5:1 (weights 0.45 + i*0.05, unrounded). */\nexport function secondaryOn(bg: string, fg: string, target = 4.5): string {\n for (let i = 0; i < 12; i++) {\n const c = mix(bg, fg, 0.45 + i * 0.05);\n if (contrast(c, bg) >= target) return c;\n }\n return fg;\n}\nfunction build(name: string, ref: ThemeRef, pal: Pal): Theme {\n const d = densitySizes(ref.density);\n const k = scaleFor(ref.density);\n const sz = (n: number, role: keyof typeof k): string => px(n * k[role]);\n const t: ThemeTokens = {\n ...baseTokens(d, fontStack(\"Lato\")),\n fontLabel: fontStack(\"Chivo\"),\n fontTitle: fontStack(\"Chivo\"),\n bg: pal.bg,\n text: pal.text,\n muted: pal.muted,\n accent: pal.label,\n rule: pal.rule,\n hline: border(1, pal.rule),\n headingBg: pal.headingBg,\n titleColor: pal.title,\n titleWeight: \"800\",\n titleSize: sz(22, \"title\"),\n subtitleColor: pal.subtitle ?? pal.muted,\n subtitleSize: sz(14, \"subtitle\"),\n labelBg: pal.bg,\n labelColor: pal.label,\n labelWeight: \"500\",\n labelSize: sz(13, \"label\"),\n groupBg: pal.groupBg,\n groupColor: pal.label,\n groupWeight: \"500\",\n groupSize: sz(13, \"group\"),\n bodySize: sz(15, \"body\"),\n pad: sz(7, \"pad\"),\n headingPad: sz(4, \"pad\"),\n labelPad: sz(6, \"pad\"),\n groupPad: sz(8, \"pad\"),\n sourcePad: sz(4, \"pad\"),\n sourceColor: pal.muted,\n sourceSize: sz(12, \"source\"),\n horizon: pal.horizon,\n };\n return {\n name,\n tokens: t,\n fonts: [\n { family: \"Chivo\", weights: [500, 800] },\n { family: \"Lato\", weights: [400, 700] },\n ],\n rules: (s) =>\n [\n `${s} th.sdvt-label{padding-bottom:10px}`,\n `${s} caption,${s} tfoot td,${s} th.sdvt-label:first-child,${s} td.sdvt-cell:first-child{padding-left:14px}`,\n `${s} caption,${s} tfoot td,${s} th.sdvt-label:last-child,${s} td.sdvt-cell:last-child{padding-right:14px}`,\n `${s} .sdvt-title{padding-top:12px;display:block}${s} .sdvt-subtitle{padding-bottom:12px;display:block}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${pal.bg}}`,\n ].join(\"\\n\"),\n };\n}\nexport const sdv = (ref: ThemeRef): Theme => {\n const style = ref.options?.style ?? \"light\";\n if (style !== \"light\" && style !== \"dark\")\n throw new TableSpecError(`sdv theme style must be \"light\" or \"dark\", not \"${style}\"`);\n return build(\"sdv\", ref, style === \"dark\" ? dark() : light(SDV_HORIZON));\n};\nexport const sdvTeam = (ref: ThemeRef): Theme => {\n const league = ref.options?.league as League | undefined;\n if (!league) throw new TableSpecError('sdvTeam needs options.league (e.g. { league: \"nfl\", team: \"KC\" })');\n let primary = SDV_NAVY;\n let secondary = SDV_CYAN;\n const team = ref.options?.team;\n if (team) {\n const id = resolveSync(team, league, { strict: true });\n if (!id) throw new UnresolvedTeamError(`${team} is not a ${league} team`);\n const p = teamColorsSync(league, id);\n const s = teamColorsSync(league, id, { which: \"secondary\" });\n if (p) {\n primary = p;\n secondary = s ?? p;\n } else\n warn(\n `sdvtables:sdvTeam:${league}:${team}`,\n `no colors on file for ${league} team \"${team}\"; using the SportsDataverse colors`,\n ); // _marks.py:819-820\n }\n const title = onColor(primary);\n const pal = light(contrast(secondary, \"#ffffff\") >= 1.5 ? secondary : primary);\n return build(\"sdvTeam\", ref, {\n ...pal,\n headingBg: primary,\n title,\n subtitle: secondaryOn(primary, title),\n label: contrast(primary, \"#ffffff\") >= 3 ? primary : SDV_NAVY,\n });\n};\n","// src/themes/almanac.ts — gt_theme_almanac (_themes.py:241-348): a slab body, narrow condensed labels, tight rows, banded stripes\nimport type { ThemeRef } from \"../spec.js\";\nimport { type Theme, baseTokens, border, densitySizes, fontStack, hexOption, px } from \"./tokens.js\";\nexport const almanac = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const accent = hexOption(ref.options?.accent ?? \"#8C2F1E\", \"accent\");\n const stripeOpt = ref.options?.stripe ?? \"#F1F1EF\";\n const stripe = stripeOpt === \"none\" ? \"transparent\" : hexOption(stripeOpt, \"stripe\"); // Python stripe=None → no banding\n const ink = \"#1A1A1A\";\n const secondary = \"#6B6B68\";\n const rule = \"#D8D8D4\";\n const bg = \"#FFFFFF\";\n const narrow = fontStack(\"Archivo Narrow\");\n return {\n name: \"almanac\",\n tokens: {\n ...baseTokens(d, fontStack(\"Zilla Slab\")),\n fontLabel: narrow,\n bg,\n text: ink,\n muted: secondary,\n accent,\n rule,\n stripe,\n headingBg: bg,\n titleColor: ink,\n titleSize: px(d.title),\n subtitleColor: secondary,\n subtitleWeight: \"400\",\n subtitleSize: px(d.subtitle),\n labelBg: bg,\n labelColor: ink,\n labelWeight: \"700\",\n labelSize: px(d.label + 1),\n labelTransform: \"uppercase\",\n labelTracking: \"0.05em\",\n labelBorderBottom: border(1.5, ink),\n labelPad: px(d.pad + 1),\n groupBg: bg,\n groupColor: accent,\n groupWeight: \"700\",\n groupSize: px(d.group + 1),\n groupTransform: \"uppercase\",\n groupBorderTop: border(1, rule),\n groupPad: px(Math.max(d.pad, 3)),\n bodySize: px(d.body),\n pad: px(d.pad),\n headingPad: px(d.pad + 2),\n sourcePad: px(d.pad + 2),\n bodyBorderBottom: border(1, ink),\n tableBorderTop: border(2, accent),\n sourceColor: secondary,\n sourceSize: px(d.source + 1),\n },\n fonts: [\n { family: \"Zilla Slab\", weights: [400, 700] },\n { family: \"Archivo Narrow\", weights: [700] },\n ],\n rules: (s) =>\n [\n `${s} th.sdvt-group{letter-spacing:0.05em}`,\n `${s} tfoot td{font-family:${narrow}}`,\n `${s} .sdvt-subtitle{display:block;padding-bottom:${px(d.pad + 6)}}${s} .sdvt-title{display:block;padding-bottom:${px(Math.ceil(d.pad / 2))}}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/athletic.ts — gt_theme_athletic (_themes.py:1317-1405): mono body, dotted row rules, column rules, black group bars.\n// Hard-coded px in Python → written at \"comfortable\" and scaled by scaleFor(density) (sdvplotR .theme_scale_output()); great_tables' own defaults (8px rows) scale too.\nimport type { ThemeRef } from \"../spec.js\";\nimport {\n type Role,\n type Theme,\n baseTokens,\n border,\n densitySizes,\n fontStack,\n px,\n scaleFor,\n} from \"./tokens.js\";\nexport const athletic = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const k = scaleFor(ref.density);\n const sz = (n: number, role: Role): string => px(n * k[role]);\n const bg = \"#FFFFFF\";\n const work = fontStack(\"Work Sans\");\n const hline = border(1.5, \"black\", \"dotted\");\n return {\n name: \"athletic\",\n tokens: {\n ...baseTokens(d, fontStack(\"Spline Sans Mono\")),\n fontLabel: work,\n fontTitle: work,\n bg,\n hline,\n titleWeight: \"650\",\n titleSize: sz(22, \"title\"),\n subtitleWeight: \"500\",\n subtitleSize: sz(14, \"subtitle\"),\n labelBg: bg,\n labelWeight: \"650\",\n labelSize: sz(12, \"label\"),\n labelTransform: \"uppercase\",\n labelBorderBottom: border(1, \"black\"),\n labelPad: sz(5, \"pad\"),\n groupBg: \"black\",\n groupColor: \"white\",\n groupWeight: \"650\",\n groupSize: sz(12, \"group\"),\n groupBorderBottom: border(1, \"black\"),\n groupPad: sz(1.5, \"pad\"),\n bodySize: sz(12, \"body\"),\n bodyWeight: \"500\",\n pad: sz(8, \"pad\"),\n headingPad: sz(4, \"pad\"),\n sourcePad: sz(4, \"pad\"),\n bodyBorderBottom: border(2, \"#D3D3D3\"),\n sourceSize: sz(10, \"source\"),\n },\n fonts: [\n { family: \"Spline Sans Mono\", weights: [500] },\n { family: \"Work Sans\", weights: [500, 650] },\n ],\n rules: (s) =>\n [\n `${s} td.sdvt-cell:not(:first-child){border-left:0.5px solid black}`,\n `${s} tbody tr:first-child td.sdvt-cell{border-top:${hline}}`, // _themes.py:1371: the dotted top rule is on EVERY body cell, the first row too\n `${s} td.sdvt-cell,${s} th.sdvt-label{text-align:center}`,\n `${s} caption{padding-top:6px;padding-bottom:0}`,\n `${s} .sdvt-subtitle{display:block;padding:0 0 4px}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/booktabs.ts — gt_theme_booktabs (_themes.py:351-448): three horizontal rules and nothing else, in a serif\nimport type { ThemeRef } from \"../spec.js\";\nimport { type Theme, baseTokens, border, densitySizes, fontStack, hexOption, px } from \"./tokens.js\";\nexport const booktabs = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const accent = hexOption(ref.options?.accent ?? \"#111111\", \"accent\");\n const ink = \"#111111\";\n const secondary = \"#5A5A5A\";\n const bg = \"#FFFFFF\";\n return {\n name: \"booktabs\",\n tokens: {\n ...baseTokens(d, fontStack(\"Tinos\")),\n bg,\n text: ink,\n muted: secondary,\n accent,\n titleColor: ink,\n titleSize: px(d.title),\n subtitleColor: secondary,\n subtitleStyle: \"italic\",\n subtitleSize: px(d.subtitle),\n labelBg: bg,\n labelColor: ink,\n labelWeight: \"700\",\n labelSize: px(d.label + 1),\n labelBorderTop: border(2, accent),\n labelBorderBottom: border(1, accent),\n labelPad: px(Math.max(d.pad - 1, 2)),\n groupBg: bg,\n groupColor: accent,\n groupWeight: \"700\",\n groupSize: px(d.group + 1),\n groupBorderTop: border(1, accent),\n groupPad: px(Math.max(d.pad - 2, 2)),\n bodySize: px(d.body),\n pad: px(d.pad),\n bodyBorderBottom: border(2, accent),\n sourceColor: secondary,\n sourceSize: px(d.source),\n },\n fonts: [{ family: \"Tinos\", weights: [400, 700], italic: true }],\n rules: (s) =>\n [\n `${s} th.sdvt-group{font-style:italic}`,\n `${s} tfoot td{padding-top:${px(d.pad + 4)}}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/broadsheet.ts — gt_theme_broadsheet (_themes.py:451-571): a serif body on warm paper, small letterspaced sans labels, hairlines\nimport type { ThemeRef } from \"../spec.js\";\nimport { type Theme, baseTokens, border, densitySizes, fontStack, hexOption, px } from \"./tokens.js\";\nconst PAPER: Readonly<Record<string, readonly [string, string]>> = {\n white: [\"#FBFAF7\", \"#DEDAD2\"],\n salmon: [\"#FFF1E5\", \"#EAD9C7\"],\n};\nexport const broadsheet = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const accent = hexOption(ref.options?.accent ?? \"#A6081A\", \"accent\");\n const paper = ref.options?.paper ?? \"white\";\n const [bg, rule] = PAPER[paper] ?? [hexOption(paper, \"paper\"), \"#DEDAD2\"];\n const ink = \"#16130F\";\n const secondary = \"#5C574F\";\n const sans = fontStack(\"Public Sans\");\n return {\n name: \"broadsheet\",\n tokens: {\n ...baseTokens(d, fontStack(\"Source Serif 4\")),\n fontTitle: fontStack(\"Newsreader\"),\n fontLabel: sans,\n bg,\n text: ink,\n muted: secondary,\n accent,\n rule,\n hline: border(1, rule),\n headingBg: bg,\n titleColor: ink,\n titleWeight: \"600\",\n titleSize: px(d.title),\n subtitleColor: secondary,\n subtitleSize: px(d.subtitle),\n subtitleStyle: \"italic\",\n labelBg: bg,\n labelColor: secondary,\n labelWeight: \"600\",\n labelSize: px(d.label),\n labelTransform: \"uppercase\",\n labelTracking: \"0.09em\",\n labelBorderBottom: border(1.5, ink),\n labelPad: px(Math.max(d.pad - 2, 2)),\n groupBg: bg,\n groupColor: accent,\n groupWeight: \"700\",\n groupSize: px(d.group),\n groupTransform: \"uppercase\",\n groupBorderTop: border(1, ink),\n groupPad: px(Math.max(d.pad - 3, 2)),\n bodySize: px(d.body),\n pad: px(d.pad),\n bodyBorderBottom: border(1, ink),\n tableBorderTop: border(2, accent),\n sourceColor: secondary,\n sourceSize: px(d.source),\n },\n fonts: [\n { family: \"Source Serif 4\", weights: [400, 600] },\n { family: \"Newsreader\", weights: [400, 600], italic: true },\n { family: \"Public Sans\", weights: [600, 700] },\n ],\n rules: (s) =>\n [\n `${s} th.sdvt-group{letter-spacing:0.08em}`,\n `${s} tr.sdvt-group-row + tr td.sdvt-cell{padding-top:${px(Math.max(d.pad - 2, 2))}}`,\n `${s} .sdvt-subtitle{display:block;font-family:var(--sdvt-font-title);padding-bottom:${px(d.pad + 8)}}${s} .sdvt-title{display:block;padding-bottom:${px(Math.ceil(d.pad / 2))}}`,\n `${s} tfoot td{font-family:${sans};padding-top:${px(d.pad + 4)}}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/brutalist.ts — gt_theme_brutalist (_themes.py:770-881): heavy black frame, knocked-out label bar, Archivo Black headline\nimport type { ThemeRef } from \"../spec.js\";\nimport { type Theme, baseTokens, border, densitySizes, fontStack, hexOption, px } from \"./tokens.js\";\nexport const brutalist = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const accent = hexOption(ref.options?.accent ?? \"#FF3B00\", \"accent\");\n const ink = \"#000000\";\n const bg = \"#FFFFFF\";\n const frame = border(3, ink);\n return {\n name: \"brutalist\",\n tokens: {\n ...baseTokens(d, fontStack(\"Archivo\")),\n fontTitle: fontStack(\"Archivo Black\"),\n bg,\n text: ink,\n muted: ink,\n accent,\n rule: ink,\n hline: border(1, ink),\n headingBg: bg,\n titleColor: ink,\n titleWeight: \"400\", // Archivo Black carries its own weight; Python sets none\n titleSize: px(d.title + 6),\n titleTransform: \"uppercase\",\n titleTracking: \"-0.02em\",\n subtitleColor: ink,\n subtitleWeight: \"600\",\n subtitleSize: px(d.subtitle),\n labelBg: ink,\n labelColor: \"#FFFFFF\",\n labelWeight: \"700\",\n labelSize: px(d.label + 1),\n labelTransform: \"uppercase\",\n labelTracking: \"0.04em\",\n labelPad: px(d.pad),\n groupBg: bg,\n groupColor: accent,\n groupWeight: \"700\",\n groupSize: px(d.group + 1),\n groupTransform: \"uppercase\",\n groupBorderTop: border(2, ink),\n groupPad: px(Math.max(d.pad - 1, 3)),\n bodySize: px(d.body),\n bodyWeight: \"500\",\n pad: px(d.pad),\n headingPad: px(d.pad + 2),\n sourcePad: px(d.pad + 2),\n tableBorderTop: frame,\n tableBorderBottom: frame,\n tableBorderX: frame,\n sourceColor: ink,\n sourceSize: px(d.source),\n },\n fonts: [\n { family: \"Archivo\", weights: [500, 600, 700] },\n { family: \"Archivo Black\", weights: [400] },\n ],\n rules: (s) =>\n [\n `${s} caption{border-bottom:3px solid ${ink}}`,\n `${s} th.sdvt-group{letter-spacing:0.06em}`,\n `${s} tfoot td{font-weight:500}`,\n `${s} .sdvt-subtitle{display:block;padding-bottom:${px(d.pad + 2)}}${s} .sdvt-title{display:block;line-height:1.05;padding-bottom:${px(Math.ceil(d.pad / 2))}}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/luminance.ts — gt::adjust_luminance(), a line-for-line port of Python `_themes._adjust_luminance` (_themes.py:179-239)\nimport { hex6 } from \"@sportsdataverse/sdvplot\";\nconst c2to3 = (x: number, y: number): [number, number, number] => [x / y, 1, (1 - x - y) / y];\n// grDevices make.rgb(): sRGB primaries and R's own D65 white point (0.3137, 0.3291)\nconst P = [c2to3(0.64, 0.33), c2to3(0.3, 0.6), c2to3(0.15, 0.06)] as const;\nconst WHITE = c2to3(0.3137, 0.3291);\nconst at = (m: readonly (readonly number[])[], i: number, j: number): number => m[i]?.[j] ?? 0;\nconst DET =\n at(P, 0, 0) * (at(P, 1, 1) * at(P, 2, 2) - at(P, 1, 2) * at(P, 2, 1)) -\n at(P, 0, 1) * (at(P, 1, 0) * at(P, 2, 2) - at(P, 1, 2) * at(P, 2, 0)) +\n at(P, 0, 2) * (at(P, 1, 0) * at(P, 2, 1) - at(P, 1, 1) * at(P, 2, 0));\nconst INV = [0, 1, 2].map((i) =>\n [0, 1, 2].map(\n (j) =>\n (at(P, (j + 1) % 3, (i + 1) % 3) * at(P, (j + 2) % 3, (i + 2) % 3) -\n at(P, (j + 1) % 3, (i + 2) % 3) * at(P, (j + 2) % 3, (i + 1) % 3)) /\n DET,\n ),\n);\nconst S = [0, 1, 2].map((j) => [0, 1, 2].reduce((acc, k) => acc + (WHITE[k] ?? 0) * at(INV, k, j), 0));\nconst M = [0, 1, 2].map((r) => [0, 1, 2].map((j) => (S[r] ?? 0) * at(P, r, j)));\n/** Shift a color's HCL luminance `steps` along a logistic curve (R's grDevices math). */\nexport function adjustLuminance(color: string, steps: number): string {\n const c = hex6(color);\n const lin = [1, 3, 5]\n .map((i) => Number.parseInt(c.slice(i, i + 2), 16) / 255)\n .map((v) => (v < 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4));\n const [x, y, z] = [0, 1, 2].map((j) =>\n [0, 1, 2].reduce((acc, k) => acc + (lin[k] ?? 0) * at(M, k, j), 0),\n ) as [number, number, number];\n const [wx, wy, wz] = WHITE;\n const denom = x + 15 * y + 3 * z;\n const wdenom = wx + 15 * wy + 3 * wz;\n const [u1, v1] = denom ? [(4 * x) / denom, (9 * y) / denom] : [1, 1];\n const yr = y / wy;\n let lum = yr <= 216 / 24389 ? (24389 / 27) * yr : 116 * yr ** (1 / 3) - 16;\n const u = 13 * lum * (u1 - (4 * wx) / wdenom);\n const v = 13 * lum * (v1 - (9 * wy) / wdenom);\n const hue = Math.atan2(v, u);\n const chroma = Math.hypot(u, v);\n const frac = lum / 100;\n if (frac <= 0) return \"#000000\";\n lum = frac >= 1 ? 100 : 100 / (1 + Math.exp(-(Math.log(frac / (1 - frac)) + steps)));\n // grDevices hcl(h, c, l): polar Luv back to sRGB, clamped into gamut\n const yy = 100 * (lum > 7.999592 ? ((lum + 16) / 116) ** 3 : lum / 903.3);\n const uu = (chroma * Math.cos(hue)) / (13 * lum) + 0.1978398;\n const vv = (chroma * Math.sin(hue)) / (13 * lum) + 0.4683363;\n const xx = (9 * yy * uu) / (4 * vv);\n const zz = -xx / 3 - 5 * yy + (3 * yy) / vv;\n const gamma = (t: number): number => (t > 0.00304 ? 1.055 * t ** (1 / 2.4) - 0.055 : 12.92 * t);\n const out = [\n gamma((3.240479 * xx - 1.53715 * yy - 0.498535 * zz) / 100),\n gamma((-0.969256 * xx + 1.875992 * yy + 0.041556 * zz) / 100),\n gamma((0.055648 * xx - 0.204043 * yy + 1.057311 * zz) / 100),\n ];\n return `#${out\n .map((t) =>\n Math.min(255, Math.max(0, Math.trunc(255 * t + 0.5)))\n .toString(16)\n .padStart(2, \"0\"),\n )\n .join(\"\")}`;\n}\n","// src/themes/drench.ts — gt_theme_drench (_themes.py:884-995): the whole table in one saturated hue; ink, rule and band derive from it\nimport { onColor } from \"@sportsdataverse/sdvplot\";\nimport type { ThemeRef } from \"../spec.js\";\nimport { adjustLuminance } from \"./luminance.js\";\nimport { secondaryOn } from \"./sdv.js\";\nimport { type Theme, baseTokens, border, densitySizes, fontStack, hexOption, px } from \"./tokens.js\";\nexport const drench = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const color = hexOption(ref.options?.color ?? \"#123F5E\", \"color\");\n const ink = onColor(color);\n const darkType = ink === \"#000000\";\n const rule = adjustLuminance(color, darkType ? -0.6 : 0.9); // shift the ground rather than laying gray over it\n const surface = adjustLuminance(color, darkType ? 0.5 : -0.7);\n const secondary = secondaryOn(color, ink, 4.5);\n return {\n name: \"drench\",\n tokens: {\n ...baseTokens(d, fontStack(\"Gabarito\")),\n bg: color,\n text: ink,\n muted: secondary,\n accent: ink,\n rule,\n hline: border(1, rule),\n headingBg: color,\n titleColor: ink,\n titleSize: px(d.title + 2),\n subtitleColor: secondary,\n subtitleWeight: \"400\",\n subtitleSize: px(d.subtitle),\n labelBg: color,\n labelColor: secondary,\n labelWeight: \"700\",\n labelSize: px(d.label),\n labelTransform: \"uppercase\",\n labelTracking: \"0.08em\",\n labelBorderBottom: border(1, rule),\n labelPad: px(d.pad + 1),\n groupBg: surface,\n groupColor: ink,\n groupWeight: \"700\",\n groupSize: px(d.group),\n groupTransform: \"uppercase\",\n groupPad: px(Math.max(d.pad - 1, 3)),\n bodySize: px(d.body),\n bodyWeight: \"500\",\n pad: px(d.pad + 1),\n headingPad: px(d.pad + 2),\n sourcePad: px(d.pad + 2),\n lineHeight: darkType ? \"normal\" : \"1.55\", // light type on a saturated ground reads lighter than it is\n sourceColor: secondary,\n sourceSize: px(d.source),\n },\n fonts: [{ family: \"Gabarito\", weights: [400, 500, 700] }],\n rules: (s) =>\n [\n `${s} th.sdvt-group{letter-spacing:0.06em}`,\n `${s} .sdvt-subtitle{display:block;padding-bottom:${px(d.pad + 8)}}${s} .sdvt-title{display:block;padding-bottom:${px(Math.ceil(d.pad / 2))}}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${color}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/gtutils.ts — gt_theme_gtutils (_themes.py:1408-1498): cream ground, centered cells, a rule under every row but the last.\n// Hard-coded px in Python → written at \"comfortable\" and scaled by scaleFor(density). Nothing sets the table font, title or subtitle size, so\n// great_tables' defaults apply: a 16px table font, a 125% title and an 85% subtitle (percentages follow the table font, hence the body role).\nimport type { ThemeRef } from \"../spec.js\";\nimport {\n type Role,\n type Theme,\n baseTokens,\n border,\n densitySizes,\n fontStack,\n px,\n scaleFor,\n} from \"./tokens.js\";\nexport const gtutils = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const k = scaleFor(ref.density);\n const sz = (n: number, role: Role): string => px(n * k[role]);\n const bg = \"#FFFDF5\";\n const rule = \"#8A817C\";\n const signika = fontStack(\"Signika Negative\");\n return {\n name: \"gtutils\",\n tokens: {\n ...baseTokens(d, fontStack(\"Almarai\")),\n fontLabel: signika,\n fontTitle: signika,\n bg,\n rule,\n hline: border(1, rule),\n titleWeight: \"650\",\n titleSize: sz(20, \"body\"),\n subtitleWeight: \"500\",\n subtitleSize: sz(13.6, \"body\"),\n labelBg: bg,\n labelWeight: \"650\",\n labelSize: sz(14, \"label\"),\n labelBorderBottom: border(1, \"black\"),\n labelPad: \"2px\",\n groupBg: rule,\n groupColor: bg,\n groupWeight: \"650\",\n groupSize: sz(14, \"group\"),\n groupBorderBottom: border(1, \"black\"),\n groupPad: sz(1.5, \"pad\"),\n bodySize: sz(16, \"body\"),\n bodyWeight: \"500\",\n pad: sz(1, \"pad\"),\n headingPad: sz(4, \"pad\"),\n sourcePad: sz(4, \"pad\"),\n bodyBorderBottom: border(2, \"#D3D3D3\"),\n sourceSize: sz(12, \"source\"),\n },\n fonts: [\n { family: \"Almarai\", weights: [400, 500, 700] },\n { family: \"Signika Negative\", weights: [500, 650] },\n ],\n rules: (s) =>\n [\n `${s} td.sdvt-cell,${s} th.sdvt-label{text-align:center}`,\n `${s} caption{padding-top:6px;padding-bottom:0}`,\n `${s} .sdvt-subtitle{display:block;padding:0 0 4px}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/kenpom.ts — gt_theme_kenpom (_themes.py:1509-1602): Helvetica, pale-blue label and group bands, alternating row tint.\n// Hard-coded px in Python → written at \"comfortable\" and scaled by scaleFor(density). Helvetica Neue is a system face: no Google font.\nimport type { ThemeRef } from \"../spec.js\";\nimport {\n type Role,\n type Theme,\n baseTokens,\n border,\n densitySizes,\n fontStack,\n px,\n scaleFor,\n} from \"./tokens.js\";\nexport const kenpom = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const k = scaleFor(ref.density);\n const sz = (n: number, role: Role): string => px(n * k[role]);\n const bg = \"#FFFFFF\";\n const band = \"#c3d9ff\";\n const bandInk = \"#02b\";\n return {\n name: \"kenpom\",\n tokens: {\n ...baseTokens(d, fontStack(\"Helvetica Neue\")),\n bg,\n hline: border(1, \"#000000\"),\n headingAlign: \"center\",\n titleWeight: \"650\",\n titleSize: sz(18, \"title\"),\n subtitleWeight: \"500\",\n subtitleSize: sz(14, \"subtitle\"),\n labelBg: band,\n labelColor: bandInk,\n labelWeight: \"650\",\n labelSize: sz(14, \"label\"),\n labelPad: \"2px\",\n groupBg: band,\n groupColor: bandInk,\n groupWeight: \"bold\",\n groupSize: sz(14, \"group\"),\n groupBorderBottom: border(1, \"black\"),\n groupPad: sz(1.5, \"pad\"),\n bodySize: sz(16, \"body\"),\n bodyWeight: \"500\",\n pad: sz(2, \"pad\"),\n headingPad: sz(4, \"pad\"),\n sourcePad: sz(4, \"pad\"),\n bodyBorderBottom: border(2, \"white\"),\n sourceSize: sz(12, \"source\"),\n },\n fonts: [],\n rules: (s) =>\n [\n // R's odd and even rows (1-based), counted over data rows only (group rows excluded)\n `${s} tbody tr.sdvt-row:nth-child(odd of :not(.sdvt-group-row)) td.sdvt-cell{background-color:#F2FAFD}`,\n `${s} tbody tr.sdvt-row:nth-child(even of :not(.sdvt-group-row)) td.sdvt-cell{background-color:#e5ecf9}`,\n `${s} caption{padding-top:6px;padding-bottom:0}`,\n `${s} .sdvt-title,${s} .sdvt-subtitle{display:block;text-align:left}`, // the title and subtitle styles align left inside a centered heading\n `${s} .sdvt-subtitle{padding:0 0 4px}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/midnight.ts — gt_theme_midnight (_themes.py:998-1099): light type on a near-black ground, a raised label band, one cool accent\nimport type { ThemeRef } from \"../spec.js\";\nimport { type Theme, baseTokens, border, densitySizes, fontStack, hexOption, px } from \"./tokens.js\";\nexport const midnight = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const accent = hexOption(ref.options?.accent ?? \"#5B8DEF\", \"accent\"); // lowercased, as Python _color → hex6\n const ground = \"#0C0D10\";\n const surface = \"#16181D\";\n const primary = \"#E8E9ED\";\n const secondary = \"#9498A3\";\n const rule = \"#24272E\";\n return {\n name: \"midnight\",\n tokens: {\n ...baseTokens(d, fontStack(\"Chivo\")),\n bg: ground,\n text: primary,\n muted: secondary,\n accent,\n rule,\n hline: border(1, rule),\n headingBg: ground,\n titleColor: primary,\n titleWeight: \"700\",\n titleSize: px(d.title),\n subtitleColor: secondary,\n subtitleWeight: \"400\",\n subtitleSize: px(d.subtitle),\n labelBg: surface,\n labelColor: secondary,\n labelWeight: \"600\",\n labelSize: px(d.label + 1),\n labelBorderBottom: border(1, rule),\n labelPad: px(Math.max(d.pad - 1, 3)),\n groupBg: ground,\n groupColor: accent,\n groupWeight: \"700\",\n groupSize: px(d.group),\n groupBorderTop: border(1, rule),\n groupPad: px(Math.max(d.pad - 2, 2)),\n bodySize: px(d.body),\n pad: px(d.pad),\n lineHeight: \"1.55\", // light on dark reads lighter than it is\n bodyBorderBottom: border(1, rule),\n tableBorderTop: border(2, accent),\n sourceColor: secondary,\n sourceSize: px(d.source),\n },\n fonts: [{ family: \"Chivo\", weights: [400, 600, 700] }],\n rules: (s) =>\n [\n `${s} .sdvt-subtitle{display:block;padding-bottom:${px(d.pad + 8)}}${s} .sdvt-title{display:block;padding-bottom:${px(Math.ceil(d.pad / 2))}}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${ground}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/ncaa.ts — gt_theme_ncaa (_themes.py:1605-1700): Open Sans, a black uppercase label bar, charcoal group bars, striped rows, left-aligned.\n// Hard-coded px in Python → written at \"comfortable\" and scaled by scaleFor(density).\nimport type { ThemeRef } from \"../spec.js\";\nimport {\n type Role,\n type Theme,\n baseTokens,\n border,\n densitySizes,\n fontStack,\n px,\n scaleFor,\n} from \"./tokens.js\";\nexport const ncaa = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const k = scaleFor(ref.density);\n const sz = (n: number, role: Role): string => px(n * k[role]);\n const bg = \"#FFFFFF\";\n const almarai = fontStack(\"Almarai\");\n return {\n name: \"ncaa\",\n tokens: {\n ...baseTokens(d, fontStack(\"Open Sans\")),\n bg,\n stripe: \"#F4F4F4\", // opt_row_striping() default in great_tables\n hline: border(1, \"transparent\"),\n titleSize: sz(18, \"title\"),\n subtitleWeight: \"400\",\n subtitleSize: sz(14, \"subtitle\"),\n labelBg: \"#000000\",\n labelColor: \"white\",\n labelWeight: \"400\", // great_tables' column-label default; Python sets none\n labelSize: sz(14, \"label\"),\n labelTransform: \"uppercase\",\n labelBorderTop: border(1, \"black\"),\n labelPad: sz(5, \"pad\"),\n groupBg: \"#3C3A40\",\n groupColor: \"#ffffff\",\n groupWeight: \"650\",\n groupSize: sz(14, \"group\"),\n groupBorderBottom: border(1, \"black\"),\n groupPad: sz(1.5, \"pad\"),\n bodySize: sz(14, \"body\"),\n pad: sz(2, \"pad\"),\n headingPad: sz(4, \"pad\"),\n sourcePad: sz(4, \"pad\"),\n bodyBorderBottom: border(2, \"white\"),\n sourceSize: sz(12, \"source\"),\n },\n fonts: [\n { family: \"Open Sans\", weights: [400, 650, 700] },\n { family: \"Almarai\", weights: [400] },\n ],\n rules: (s) =>\n [\n `${s} th.sdvt-label,${s} td.sdvt-cell{padding:5px 5px 5px 25px;text-align:left}`,\n `${s} tfoot td{font-family:${almarai}}`,\n `${s} caption{padding-top:6px;padding-bottom:0}`,\n `${s} .sdvt-subtitle{display:block;padding:0 0 4px}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/pl.ts — gt_theme_pl (_themes.py:1703-1791): DM Sans in purple on white, a purple rule under every row but the last.\n// Hard-coded px in Python → written at \"comfortable\" and scaled by scaleFor(density). Nothing sets the title or subtitle size, so great_tables'\n// 125% / 85% of its 16px table font apply (percentages follow the table font, hence the body role); title, subtitle and notes keep its #333333.\nimport type { ThemeRef } from \"../spec.js\";\nimport {\n type Role,\n type Theme,\n baseTokens,\n border,\n densitySizes,\n fontStack,\n px,\n scaleFor,\n} from \"./tokens.js\";\nexport const pl = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const k = scaleFor(ref.density);\n const sz = (n: number, role: Role): string => px(n * k[role]);\n const bg = \"#FFFFFF\";\n const purple = \"#37003c\";\n const dim = \"#87668a\";\n return {\n name: \"pl\",\n tokens: {\n ...baseTokens(d, fontStack(\"DM Sans\")),\n bg,\n text: purple,\n muted: dim,\n rule: purple,\n hline: border(1, purple),\n titleColor: \"#333333\",\n titleWeight: \"650\",\n titleSize: sz(20, \"body\"),\n subtitleColor: \"#333333\",\n subtitleWeight: \"500\",\n subtitleSize: sz(13.6, \"body\"),\n labelBg: bg,\n labelColor: dim,\n labelWeight: \"650\",\n labelSize: sz(13, \"label\"),\n labelBorderBottom: border(1, purple),\n labelPad: sz(5, \"pad\"),\n groupBg: \"#C0BACA\",\n groupColor: \"#ffffff\",\n groupWeight: \"650\",\n groupSize: sz(12, \"group\"),\n groupBorderBottom: border(1, purple),\n groupPad: sz(1.5, \"pad\"),\n bodySize: sz(14, \"body\"),\n pad: sz(2, \"pad\"),\n headingPad: sz(4, \"pad\"),\n sourcePad: sz(4, \"pad\"),\n bodyBorderBottom: border(2, \"white\"),\n sourceColor: \"#333333\",\n sourceSize: sz(12, \"source\"),\n },\n fonts: [{ family: \"DM Sans\", weights: [500, 650] }],\n rules: (s) =>\n [\n `${s} tbody{border-top:1px solid ${purple}}`,\n `${s} th.sdvt-label{padding-bottom:3px}`,\n `${s} caption{padding-top:6px;padding-bottom:0}`,\n `${s} .sdvt-subtitle{display:block;padding:2px 0 6px}`,\n `${s} tfoot td{line-height:1.2}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/savant.ts — gt_theme_savant (_themes.py:1794-1877): Roboto Condensed, black group bars, striped rows, a centered heading.\n// Hard-coded px in Python → written at \"comfortable\" and scaled by scaleFor(density).\nimport type { ThemeRef } from \"../spec.js\";\nimport {\n type Role,\n type Theme,\n baseTokens,\n border,\n densitySizes,\n fontStack,\n px,\n scaleFor,\n} from \"./tokens.js\";\nexport const savant = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const k = scaleFor(ref.density);\n const sz = (n: number, role: Role): string => px(n * k[role]);\n const bg = \"#FFFFFF\";\n return {\n name: \"savant\",\n tokens: {\n ...baseTokens(d, fontStack(\"Roboto Condensed\")),\n bg,\n stripe: \"#F4F4F4\", // opt_row_striping() default in great_tables\n hline: border(1, \"transparent\"),\n headingAlign: \"center\",\n titleSize: sz(18, \"title\"),\n subtitleWeight: \"400\",\n subtitleSize: sz(14, \"subtitle\"),\n labelBg: bg,\n labelWeight: \"700\",\n labelSize: sz(14, \"label\"),\n labelBorderTop: border(1, \"black\"),\n labelPad: \"2px\",\n groupBg: \"#000000\",\n groupColor: \"#FFFDF5\",\n groupWeight: \"650\",\n groupSize: sz(14, \"group\"),\n groupBorderBottom: border(1, \"black\"),\n groupPad: sz(1.5, \"pad\"),\n bodySize: sz(14, \"body\"),\n pad: sz(1, \"pad\"),\n headingPad: sz(4, \"pad\"),\n sourcePad: sz(4, \"pad\"),\n bodyBorderBottom: border(2, \"white\"),\n sourceSize: sz(12, \"source\"),\n },\n fonts: [{ family: \"Roboto Condensed\", weights: [400, 650, 700] }],\n rules: (s) =>\n [\n `${s} caption{padding-top:6px;padding-bottom:0}`,\n `${s} .sdvt-subtitle{display:block;padding:0 0 4px}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/scoreboard.ts — gt_theme_scoreboard (_themes.py:1108-1209): condensed caps on a solid accent label bar\nimport { onColor } from \"@sportsdataverse/sdvplot\";\nimport type { ThemeRef } from \"../spec.js\";\nimport { type Theme, baseTokens, border, densitySizes, fontStack, hexOption, px } from \"./tokens.js\";\nexport const scoreboard = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const accent = hexOption(ref.options?.accent ?? \"#0E1621\", \"accent\");\n const ink = \"#141719\";\n const rule = \"#E6E9ED\";\n const muted = \"#5A6069\";\n const bg = \"#FFFFFF\";\n const condensed = fontStack(\"Barlow Condensed\");\n return {\n name: \"scoreboard\",\n tokens: {\n ...baseTokens(d, fontStack(\"Barlow\")),\n fontLabel: condensed,\n fontTitle: condensed,\n bg,\n text: ink,\n muted,\n accent,\n rule,\n hline: border(1, rule),\n headingBg: bg,\n titleColor: ink,\n titleSize: px(d.title + 4),\n titleTransform: \"uppercase\",\n titleTracking: \"0.01em\",\n subtitleColor: muted,\n subtitleWeight: \"500\",\n subtitleSize: px(d.subtitle + 1),\n labelBg: accent,\n labelColor: onColor(accent), // a pale accent needs dark labels, so measure it\n labelWeight: \"700\",\n labelSize: px(d.label + 2),\n labelTransform: \"uppercase\",\n labelTracking: \"0.06em\",\n labelPad: px(d.pad + 2),\n groupBg: \"#F2F4F6\",\n groupColor: accent,\n groupWeight: \"700\",\n groupSize: px(d.group + 1),\n groupTransform: \"uppercase\",\n groupPad: px(Math.max(d.pad, 3)),\n bodySize: px(d.body),\n bodyWeight: \"500\",\n pad: px(d.pad),\n headingPad: px(d.pad + 1),\n sourcePad: px(d.pad + 2),\n bodyBorderBottom: border(2, accent),\n sourceColor: muted,\n sourceSize: px(d.source),\n },\n fonts: [\n { family: \"Barlow\", weights: [500] },\n { family: \"Barlow Condensed\", weights: [500, 700] },\n ],\n rules: (s) =>\n [\n `${s} caption{letter-spacing:0.01em}`,\n `${s} th.sdvt-group{letter-spacing:0.06em}`,\n `${s} .sdvt-subtitle{display:block;font-family:var(--sdvt-font-title);padding-bottom:${px(d.pad + 6)}}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/sofa.ts — gt_theme_sofa (_themes.py:1880-1968): Sofia Sans Condensed on cream (or navy), no rules between rows.\n// Hard-coded px in Python → written at \"comfortable\" and scaled by scaleFor(density). great_tables switches the text to white on the navy ground.\nimport { TableSpecError } from \"../errors.js\";\nimport type { ThemeRef } from \"../spec.js\";\nimport {\n type Role,\n type Theme,\n baseTokens,\n border,\n densitySizes,\n fontStack,\n px,\n scaleFor,\n} from \"./tokens.js\";\nexport const sofa = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const k = scaleFor(ref.density);\n const sz = (n: number, role: Role): string => px(n * k[role]);\n const style = ref.options?.style ?? \"light\";\n if (style !== \"light\" && style !== \"dark\")\n throw new TableSpecError(`sofa theme style must be \"light\" or \"dark\", not \"${style}\"`);\n const bg = style === \"light\" ? \"#F0EAD6\" : \"#1c2632\";\n return {\n name: \"sofa\",\n tokens: {\n ...baseTokens(d, fontStack(\"Sofia Sans Condensed\")),\n bg,\n text: style === \"light\" ? \"#333333\" : \"#FFFFFF\",\n hline: border(1, \"transparent\"),\n titleSize: sz(22, \"title\"),\n subtitleWeight: \"400\",\n subtitleSize: sz(14, \"subtitle\"),\n labelBg: bg,\n labelWeight: \"bold\",\n labelSize: sz(14, \"label\"),\n labelPad: \"2px\",\n groupBg: bg,\n groupWeight: \"bold\",\n groupSize: sz(14, \"group\"),\n groupBorderBottom: border(1, \"black\"),\n groupPad: sz(1.5, \"pad\"),\n bodySize: sz(14, \"body\"),\n pad: sz(1, \"pad\"),\n headingPad: sz(4, \"pad\"),\n sourcePad: sz(4, \"pad\"),\n bodyBorderBottom: border(2, \"#D3D3D3\"),\n sourceSize: sz(10, \"source\"),\n },\n fonts: [{ family: \"Sofia Sans Condensed\", weights: [400, 650, 700] }],\n rules: (s) =>\n [\n `${s} caption{padding-top:6px;padding-bottom:0}`,\n `${s} .sdvt-subtitle{display:block;padding:0 0 4px}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/swiss.ts — gt_theme_swiss (_themes.py:574-669): generous padding does the separating, one rule under the labels\nimport type { ThemeRef } from \"../spec.js\";\nimport { type Theme, baseTokens, border, densitySizes, fontStack, hexOption, px } from \"./tokens.js\";\nexport const swiss = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const accent = hexOption(ref.options?.accent ?? \"#111111\", \"accent\");\n const ink = \"#111111\";\n const secondary = \"#6B6B6B\"; // 5.28:1 on white; #7A7A7A missed 4.5\n const bg = \"#FFFFFF\";\n return {\n name: \"swiss\",\n tokens: {\n ...baseTokens(d, fontStack(\"Archivo\")),\n bg,\n text: ink,\n muted: secondary,\n accent,\n headingBg: bg,\n titleColor: ink,\n titleSize: px(d.title + 4),\n titleTracking: \"-0.02em\",\n subtitleColor: secondary,\n subtitleWeight: \"400\",\n subtitleSize: px(d.subtitle),\n labelBg: bg,\n labelColor: ink,\n labelWeight: \"500\",\n labelSize: px(d.label),\n labelTransform: \"uppercase\",\n labelTracking: \"0.12em\",\n labelBorderBottom: border(1, accent),\n labelPad: px(d.pad + 2),\n groupBg: bg,\n groupColor: secondary,\n groupWeight: \"500\",\n groupSize: px(d.group),\n groupTransform: \"uppercase\",\n groupPad: px(d.pad + 6),\n bodySize: px(d.body),\n pad: px(d.pad + 5),\n headingPad: px(d.pad + 4),\n sourcePad: px(d.pad + 4),\n bodyBorderBottom: border(1, ink),\n sourceColor: secondary,\n sourceSize: px(d.source),\n },\n fonts: [{ family: \"Archivo\", weights: [400, 500, 700] }],\n rules: (s) =>\n [\n `${s} th.sdvt-group{letter-spacing:0.12em}`,\n `${s} .sdvt-subtitle{display:block;padding-bottom:${px(d.pad + 14)}}${s} .sdvt-title{display:block;padding-bottom:${px(Math.ceil(d.pad / 2))}}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/terminal.ts — gt_theme_terminal (_themes.py:1212-1314): monospace readout on a near-black ground, a rule on every row\nimport type { ThemeRef } from \"../spec.js\";\nimport { type Theme, baseTokens, border, densitySizes, fontStack, hexOption, px } from \"./tokens.js\";\nexport const terminal = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const accent = hexOption(ref.options?.accent ?? \"#FFB86C\", \"accent\");\n const ground = \"#0F1115\";\n const primary = \"#C9D1D9\";\n const secondary = \"#7D8590\";\n const rule = \"#262B33\";\n return {\n name: \"terminal\",\n tokens: {\n ...baseTokens(d, fontStack(\"JetBrains Mono\")),\n bg: ground,\n text: primary,\n muted: secondary,\n accent,\n rule,\n hline: border(1, rule),\n headingBg: ground,\n titleColor: primary,\n titleSize: px(d.title - 2),\n titleTransform: \"uppercase\",\n titleTracking: \"0.04em\",\n subtitleColor: secondary,\n subtitleWeight: \"400\",\n subtitleSize: px(d.subtitle - 1),\n labelBg: ground,\n labelColor: accent,\n labelWeight: \"700\",\n labelSize: px(d.label),\n labelTransform: \"uppercase\",\n labelTracking: \"0.08em\",\n labelBorderBottom: border(1, accent),\n labelPad: px(d.pad + 1),\n groupBg: ground,\n groupColor: accent,\n groupWeight: \"700\",\n groupSize: px(d.group),\n groupTransform: \"uppercase\",\n groupBorderTop: border(1, rule),\n groupPad: px(Math.max(d.pad, 3)),\n bodySize: px(d.body),\n pad: px(d.pad),\n headingPad: px(d.pad + 2),\n sourcePad: px(d.pad + 2),\n lineHeight: \"1.5\",\n tableBorderTop: border(1, accent),\n tableBorderBottom: border(1, rule),\n sourceColor: secondary,\n sourceSize: px(d.source),\n },\n fonts: [{ family: \"JetBrains Mono\", weights: [400, 700] }],\n rules: (s) =>\n [\n `${s} .sdvt-subtitle{display:block;padding-bottom:${px(d.pad + 6)}}${s} .sdvt-title{display:block;padding-bottom:2px}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${ground}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/tier.ts — gt_theme_tier (_themes.py:1971-2055): Oswald on near-black (or white), centered cells, a rule under every row but the last.\n// Hard-coded px in Python → written at \"comfortable\" and scaled by scaleFor(density). Only the title and subtitle are styled, so great_tables'\n// defaults apply elsewhere: a 16px table font, 100% labels and group rows, 90% notes (percentages follow the table font, hence the body role).\n// great_tables switches the text to white on the dark ground.\nimport { TableSpecError } from \"../errors.js\";\nimport type { ThemeRef } from \"../spec.js\";\nimport {\n type Role,\n type Theme,\n baseTokens,\n border,\n densitySizes,\n fontStack,\n px,\n scaleFor,\n} from \"./tokens.js\";\nexport const tier = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const k = scaleFor(ref.density);\n const sz = (n: number, role: Role): string => px(n * k[role]);\n const style = ref.options?.style ?? \"dark\";\n if (style !== \"light\" && style !== \"dark\")\n throw new TableSpecError(`tier theme style must be \"light\" or \"dark\", not \"${style}\"`);\n const bg = style === \"dark\" ? \"#1a1a17\" : \"#ffffff\";\n return {\n name: \"tier\",\n tokens: {\n ...baseTokens(d, fontStack(\"Oswald\")),\n bg,\n text: style === \"dark\" ? \"#FFFFFF\" : \"#333333\",\n hline: border(1, \"black\"),\n titleWeight: \"650\",\n titleSize: sz(20, \"body\"),\n subtitleWeight: \"500\",\n subtitleSize: sz(13.6, \"body\"),\n labelBg: bg,\n labelWeight: \"400\",\n labelSize: sz(16, \"body\"),\n labelPad: \"2px\",\n groupBg: bg,\n groupWeight: \"400\",\n groupSize: sz(16, \"body\"),\n groupBorderBottom: border(1, \"black\"),\n groupPad: sz(1.5, \"pad\"),\n bodySize: sz(16, \"body\"),\n bodyWeight: \"500\",\n pad: sz(1, \"pad\"),\n headingPad: sz(4, \"pad\"),\n sourcePad: sz(4, \"pad\"),\n bodyBorderBottom: border(2, \"#D3D3D3\"),\n sourceSize: sz(14.4, \"body\"),\n },\n fonts: [{ family: \"Oswald\", weights: [500, 650] }],\n rules: (s) =>\n [\n `${s} td.sdvt-cell,${s} th.sdvt-label{text-align:center}`,\n `${s} caption{padding-top:6px;padding-bottom:0}`,\n `${s} .sdvt-subtitle{display:block;padding:0 0 4px}`,\n `${s} tbody tr:last-child td{border-bottom:2px solid ${bg}}`,\n ].join(\"\\n\"),\n };\n};\n","// src/themes/tufte.ts — gt_theme_tufte (_themes.py:672-767): italic de-emphasized labels, one hairline, cream paper\nimport type { ThemeRef } from \"../spec.js\";\nimport { type Theme, baseTokens, border, densitySizes, fontStack, hexOption, px } from \"./tokens.js\";\nexport const tufte = (ref: ThemeRef): Theme => {\n const d = densitySizes(ref.density);\n const accent = hexOption(ref.options?.accent ?? \"#111111\", \"accent\");\n const ink = \"#111111\";\n const secondary = \"#6F6A60\";\n const hair = \"#C9C4B8\";\n const bg = \"#FFFFF8\";\n return {\n name: \"tufte\",\n tokens: {\n ...baseTokens(d, fontStack(\"EB Garamond\")),\n bg,\n text: ink,\n muted: secondary,\n accent,\n rule: hair,\n headingBg: bg,\n titleColor: ink,\n titleWeight: \"500\",\n titleSize: px(d.title),\n subtitleColor: secondary,\n subtitleStyle: \"italic\",\n subtitleSize: px(d.subtitle),\n labelBg: bg,\n labelColor: secondary,\n labelWeight: \"400\",\n labelStyle: \"italic\",\n labelSize: px(d.label + 2),\n labelBorderBottom: border(1, accent),\n labelPad: px(Math.max(d.pad - 1, 2)),\n groupBg: bg,\n groupColor: accent,\n groupWeight: \"600\",\n groupSize: px(d.group + 2),\n groupPad: px(Math.max(d.pad - 1, 2)),\n bodySize: px(d.body + 1),\n pad: px(d.pad),\n bodyBorderBottom: border(1, hair),\n sourceColor: secondary,\n sourceSize: px(d.source + 1),\n sourceStyle: \"italic\",\n },\n fonts: [{ family: \"EB Garamond\", weights: [400, 500, 600], italic: true }],\n rules: (s) =>\n [`${s} th.sdvt-group{font-style:italic}`, `${s} tfoot td{padding-top:${px(d.pad + 4)}}`].join(\"\\n\"),\n };\n};\n","import { TableSpecError } from \"../errors.js\";\nimport type { ThemeRef } from \"../spec.js\";\nimport { almanac } from \"./almanac.js\";\nimport { athletic } from \"./athletic.js\";\nimport { booktabs } from \"./booktabs.js\";\nimport { broadsheet } from \"./broadsheet.js\";\nimport { brutalist } from \"./brutalist.js\";\nimport { drench } from \"./drench.js\";\nimport { gtutils } from \"./gtutils.js\";\nimport { kenpom } from \"./kenpom.js\";\nimport { midnight } from \"./midnight.js\";\nimport { ncaa } from \"./ncaa.js\";\nimport { pl } from \"./pl.js\";\nimport { savant } from \"./savant.js\";\nimport { scoreboard } from \"./scoreboard.js\";\nimport { sdv, sdvTeam } from \"./sdv.js\";\nimport { sofa } from \"./sofa.js\";\nimport { swiss } from \"./swiss.js\";\nimport { terminal } from \"./terminal.js\";\nimport { tier } from \"./tier.js\";\nimport type { Theme, ThemeDef } from \"./tokens.js\";\nimport { tufte } from \"./tufte.js\";\nexport const THEMES: Readonly<Record<string, ThemeDef>> = {\n sdv,\n sdvTeam,\n almanac,\n athletic,\n booktabs,\n broadsheet,\n brutalist,\n drench,\n gtutils,\n kenpom,\n midnight,\n ncaa,\n pl,\n savant,\n scoreboard,\n sofa,\n swiss,\n terminal,\n tier,\n tufte,\n};\nexport const THEME_NAMES: readonly string[] = Object.keys(THEMES);\nexport function resolveTheme(ref: ThemeRef): Theme {\n const def = THEMES[ref.name];\n if (!def) throw new TableSpecError(`unknown theme \"${ref.name}\"; one of ${THEME_NAMES.join(\", \")}`);\n return def(ref);\n}\nexport type { Theme, ThemeTokens, GoogleFont, ThemeDef } from \"./tokens.js\";\n","import type { RowFilter } from \"@sportsdataverse/sdvplot\";\nimport { TableSpecError } from \"./errors.js\";\nimport type { ColumnSpec, TableSpec } from \"./spec.js\";\n\n// J31: the row test setExternalFilter takes is sdvplot's own type, so a selection store's brush predicate fits as is\nexport type { RowFilter };\n\nexport type SortDir = \"asc\" | \"desc\";\nexport interface Sort {\n readonly col: string;\n readonly dir: SortDir;\n}\n/** A column filter as a function: tests the column's cell `value` (the whole `row` comes along for context). */\nexport type ValuePredicate<Row> = (value: unknown, row: Row) => boolean;\n/** What `setFilter` takes for a column: a predicate on its value, a case-insensitive substring, or an exact number or boolean. */\nexport type FilterValue<Row> = ValuePredicate<Row> | string | number | boolean;\nexport type Comparator = (a: unknown, b: unknown) => number;\n/** J31: what `subscribe` listeners receive. Every mutation emits exactly one event. */\nexport type TableEvent =\n | { readonly type: \"change\" }\n | { readonly type: \"hover\"; readonly id: string | null }\n | { readonly type: \"select\"; readonly ids: ReadonlySet<string> };\n/**\n * Task 10 (A45, A48): the keyboard cursor of an interactive table. `row` is the body row holding the grid's one tab\n * stop, as a page-relative index (that row's `data-row`); `col` is the column `s` sorts, null until `h`/`l` picks one.\n */\nexport interface TableCursor {\n readonly row: number;\n readonly col: string | null;\n}\n\n/** The whole user-controlled state of a table: sort, filters, page, hidden columns, and the J31 link fields. Immutable; every mutation replaces it. */\nexport interface TableState<Row> {\n readonly sort: Sort | null;\n readonly filters: Readonly<Record<string, FilterValue<Row>>>;\n readonly globalFilter: string;\n /** 0-based */\n readonly page: number;\n /** positive integer, or Infinity for \"all rows\" */\n readonly pageSize: number;\n /** column keys hidden by toggleColumn */\n readonly hidden: readonly string[];\n /** J31: set by setExternalFilter; ANDed with the column and global filters */\n readonly externalFilter: RowFilter<Row> | null;\n /** J31: row ids (see `rowId`); NOT pruned to the rows present, so a linked store's ids round-trip intact */\n readonly selection: ReadonlySet<string>;\n /** Task 10: the keyboard cursor; its row is kept on the current page */\n readonly cursor: TableCursor;\n}\n/** What `Table.getSnapshot()` returns: the state plus the derived visible page. Referentially stable until the next mutation. */\nexport interface TableSnapshot<Row> {\n readonly state: TableState<Row>;\n /** the visible page: filtered → sorted → sliced */\n readonly rows: readonly Row[];\n readonly filteredCount: number;\n /** always at least 1 */\n readonly pageCount: number;\n}\n/** Initial state for `createTable`; `pageSize` beats `spec.interactive.pageSize`, and `sort` must name a spec column. */\nexport interface TableOptions {\n readonly pageSize?: number;\n readonly sort?: Sort;\n}\n/**\n * The headless table engine: holds the rows and a `TableState`, derives the visible page, and notifies subscribers.\n * Renderers (static HTML, hydrate, React) read `rows`/`columns` and call the setters; nothing here touches the DOM.\n *\n * @example A hover set before any view attaches: the view lights it when it does (getHover)\n * ```ts\n * import { createTable, defineTable } from \"@sportsdataverse/sdvtables\";\n * import { hydrate, renderHTML } from \"@sportsdataverse/sdvtables/html\";\n *\n * // 2024 AFC: Kansas City 15 wins, Buffalo 13\n * const spec = defineTable<{ team: string; wins: number }>()\n * .columns((c) => [c.text(\"team\"), c.int(\"wins\")])\n * .rowKey(\"team\")\n * .build();\n * const table = createTable(spec, [\n * { team: \"KC\", wins: 15 },\n * { team: \"BUF\", wins: 13 },\n * ]);\n * table.setHover(\"BUF\"); // a linked figure's hover, before the table is on the page\n * table.getHover(); // \"BUF\"\n * const root = document.createElement(\"div\");\n * root.innerHTML = renderHTML(table, { fonts: false });\n * hydrate(root, table); // Buffalo's row gets sdvt-hover as it attaches\n * root;\n * ```\n */\nexport interface Table<Row> {\n readonly spec: TableSpec<Row>;\n /** the source rows: the ones given to `createTable`, or the last `setRows` */\n readonly allRows: readonly Row[];\n readonly state: TableState<Row>;\n readonly rows: readonly Row[];\n readonly filteredCount: number;\n readonly pageCount: number;\n /** visible columns in spec order */\n readonly columns: readonly ColumnSpec<Row>[];\n setSort(col: string, dir: SortDir | null): void;\n setFilter(col: string, filter: FilterValue<Row> | null | undefined): void;\n setGlobalFilter(text: string): void;\n setPage(n: number): void;\n setPageSize(n: number): void;\n toggleColumn(col: string, visible?: boolean): void;\n /**\n * Replace the source rows (a React parent's new array, a live feed). Sort, filters, the external filter, hidden\n * columns and selection are kept; the page is clamped to the new page count; one `\"change\"` event. Without a\n * `rowKey`, row ids are indices into the NEW rows, so a kept selection means the rows at those positions.\n */\n setRows(rows: readonly Row[]): void;\n /** J31: `String(row[spec.rowKey])` (\"\" when missing), else the row's index in `allRows` */\n rowId(row: Row): string;\n /** J31: same function again is a no-op; a new one resets the page */\n setExternalFilter(filter: RowFilter<Row> | null): void;\n /** J31: emits `{ type: \"select\" }`; an equal set is a no-op */\n setSelection(ids: ReadonlySet<string>): void;\n getSelection(): ReadonlySet<string>;\n /** J31: emits `{ type: \"hover\" }` without changing state; the same id twice in a row is a no-op */\n setHover(id: string | null): void;\n /**\n * J31: the last `setHover` id, or null. A view that attaches (`hydrate`) or mounts (`<SdvTable table/>`) after a\n * hover reads it, since no event comes until the hover changes.\n */\n getHover(): string | null;\n /**\n * Task 10: move the keyboard cursor. `row` is clamped to the current page; `col` must name a spec column, or be\n * null. One `\"change\"` event; an equal cursor (after clamping) is a no-op, and a non-finite `row` is ignored.\n */\n setCursor(row: number, col: string | null): void;\n subscribe(fn: (event: TableEvent) => void): () => void;\n /** referentially stable until the next mutation — what useSyncExternalStore reads */\n getSnapshot(): TableSnapshot<Row>;\n}\n\n/** Phase 4 column kinds whose values sort numerically. */\nexport const NUMERIC_KINDS: ReadonlySet<string> = new Set([\n \"num\",\n \"int\",\n \"pct\",\n \"rank\",\n \"delta\",\n \"tally\",\n \"colorPills\",\n \"colorRanks\",\n \"percentileBar\",\n]);\n\n/** null, undefined, \"\", NaN, and an invalid `Date` are missing; `withMissingLast` sorts them last. */\nexport function isMissing(v: unknown): boolean {\n return (\n v === null ||\n v === undefined ||\n v === \"\" ||\n (typeof v === \"number\" && Number.isNaN(v)) ||\n (v instanceof Date && Number.isNaN(v.getTime()))\n );\n}\n\n// Pinned to \"en\" so the SSR process and the viewer's browser sort text identically.\nconst collator = new Intl.Collator(\"en\", { numeric: true, sensitivity: \"base\" });\nexport const compareNum: Comparator = (a, b) => Number(a) - Number(b);\n/** Text sorts under the `en` locale (numeric-aware, case- and accent-insensitive), never the host default, so server and client agree. */\nexport const compareText: Comparator = (a, b) => collator.compare(String(a), String(b));\n/** Date values compare by time; an unparsable one is missing (see `isMissing`), so the comparator stays transitive. */\nexport const compareDate: Comparator = (a, b) => {\n const t = (v: unknown): number => (v instanceof Date ? v.getTime() : new Date(String(v)).getTime());\n const x = t(a);\n const y = t(b);\n return Number.isNaN(x) || Number.isNaN(y) ? 0 : x - y;\n};\n\nconst fieldOf = <Row>(row: Row, key: string): unknown => (row as Record<string, unknown>)[key];\n\n/**\n * The comparator `applySort` uses for `col`: its own `compare`, else numeric for a numeric kind or numeric samples, by\n * time for `Date` samples, else `en`-locale text.\n * Engine plumbing for custom renderers: it may change before 1.0.\n *\n * @beta\n */\nexport function comparatorFor<Row>(col: ColumnSpec<Row>, rows: readonly Row[]): Comparator {\n if (col.compare) return col.compare as Comparator; // Phase 4 types it on Row[K]; the engine compares unknowns\n if (NUMERIC_KINDS.has(col.kind)) return compareNum;\n const sample = rows.map((r) => fieldOf(r, col.key)).find((v) => !isMissing(v));\n return typeof sample === \"number\" ? compareNum : sample instanceof Date ? compareDate : compareText;\n}\n\n/** Missing values sort last in BOTH directions; never returns NaN. */\nexport function withMissingLast(cmp: Comparator, dir: SortDir): Comparator {\n return (a, b) => {\n const ma = isMissing(a);\n const mb = isMissing(b);\n if (ma || mb) return ma === mb ? 0 : ma ? 1 : -1;\n const c = cmp(a, b);\n if (Number.isNaN(c)) return 0;\n return dir === \"asc\" ? c : -c;\n };\n}\n\n/**\n * The spec's column with this key; throws `TableSpecError` naming every column when there is none.\n * Engine plumbing for custom renderers: it may change before 1.0.\n *\n * @beta\n */\nexport function findColumn<Row>(spec: TableSpec<Row>, key: string): ColumnSpec<Row> {\n const col = spec.columns.find((c) => c.key === key);\n if (!col)\n throw new TableSpecError(\n `unknown column \"${key}\"; columns are ${spec.columns.map((c) => c.key).join(\", \")}`,\n );\n return col;\n}\n\n/**\n * A sorted copy of `rows` (stable; missing values last in both directions); `sort` null keeps the input order.\n * Engine plumbing for custom renderers: it may change before 1.0.\n *\n * @beta\n */\nexport function applySort<Row>(spec: TableSpec<Row>, rows: readonly Row[], sort: Sort | null): Row[] {\n if (!sort) return [...rows];\n const col = findColumn(spec, sort.col);\n const cmp = withMissingLast(comparatorFor(col, rows), sort.dir);\n // Array.prototype.sort is stable since ES2019, so ties keep input order.\n return [...rows].sort((a, b) => cmp(fieldOf(a, col.key), fieldOf(b, col.key)));\n}\n\nexport function matches<Row>(filter: FilterValue<Row>, value: unknown, row: Row): boolean {\n if (typeof filter === \"function\") return filter(value, row);\n if (typeof filter === \"string\")\n return String(value ?? \"\")\n .toLowerCase()\n .includes(filter.toLowerCase());\n return value === filter;\n}\n\n// ponytail: O(rows × columns) scan per change; index the lower-cased text if tables pass ~50k rows.\n/**\n * The rows `state` keeps, in input order: its external filter, every column filter and the global search over the\n * visible columns, all ANDed.\n * Engine plumbing for custom renderers: it may change before 1.0.\n *\n * @beta\n */\nexport function applyFilters<Row>(spec: TableSpec<Row>, rows: readonly Row[], state: TableState<Row>): Row[] {\n const active = Object.entries(state.filters).map(([key, f]) => [findColumn(spec, key), f] as const);\n const q = state.globalFilter.trim().toLowerCase();\n const searchable = spec.columns.filter((c) => !state.hidden.includes(c.key));\n const external = state.externalFilter;\n return rows.filter(\n (row) =>\n (external === null || external(row)) &&\n active.every(([col, f]) => matches(f, fieldOf(row, col.key), row)) &&\n (q === \"\" ||\n searchable.some((c) =>\n String(fieldOf(row, c.key) ?? \"\")\n .toLowerCase()\n .includes(q),\n )),\n );\n}\n\n/**\n * Page `page` (0-based, clamped to the pages there are) of `rows` at `pageSize` (Infinity: all of them), and the\n * page count, at least 1.\n * Engine plumbing for custom renderers: it may change before 1.0.\n *\n * @beta\n */\nexport function paginate<Row>(\n rows: readonly Row[],\n page: number,\n pageSize: number,\n): { rows: Row[]; pageCount: number } {\n const pageCount = Math.max(1, Math.ceil(rows.length / pageSize)); // n / Infinity → 0 → 1 page\n const p = Math.min(Math.max(0, page), pageCount - 1);\n const slice =\n pageSize === Number.POSITIVE_INFINITY ? [...rows] : rows.slice(p * pageSize, (p + 1) * pageSize);\n return { rows: slice, pageCount };\n}\n\n/** Header-click cycle shared by hydrate and React: asc → desc → none. */\nexport function nextSortDir(current: Sort | null, col: string): SortDir | null {\n if (!current || current.col !== col) return \"asc\";\n return current.dir === \"asc\" ? \"desc\" : null;\n}\n\nfunction checkPageSize(n: number): number {\n if (n === Number.POSITIVE_INFINITY) return n;\n if (!Number.isInteger(n) || n < 1)\n throw new TableSpecError(`pageSize must be a positive integer or Infinity, got ${String(n)}`);\n return n;\n}\n\nconst sameSet = (a: ReadonlySet<string>, b: ReadonlySet<string>): boolean =>\n a.size === b.size && [...a].every((id) => b.has(id));\nconst CHANGE: TableEvent = { type: \"change\" };\n\n/**\n * Build a headless `Table` over `rows`: sort, filter, paginate, hide columns, and subscribe to changes.\n * Throws `TableSpecError` for an unknown column or an invalid page size; never mutates `rows`.\n */\nexport function createTable<Row>(\n spec: TableSpec<Row>,\n rows: readonly Row[],\n options: TableOptions = {},\n): Table<Row> {\n if (options.sort) findColumn(spec, options.sort.col);\n let state: TableState<Row> = {\n sort: options.sort ?? null,\n filters: {},\n globalFilter: \"\",\n page: 0,\n pageSize: checkPageSize(options.pageSize ?? spec.interactive?.pageSize ?? Number.POSITIVE_INFINITY),\n hidden: [],\n externalFilter: null,\n selection: new Set(),\n cursor: { row: 0, col: null },\n };\n const listeners = new Set<(event: TableEvent) => void>();\n const emit = (event: TableEvent): void => {\n for (const fn of [...listeners]) fn(event);\n };\n const key = spec.rowKey;\n let source = rows;\n let indexOf: Map<Row, number> | null = null;\n let warned = false;\n const rowId = (row: Row): string => {\n if (key === undefined) {\n const i = indexOf?.get(row);\n return i === undefined ? \"\" : String(i);\n }\n const v = fieldOf(row, key);\n return isMissing(v) ? \"\" : String(v);\n };\n const setSource = (next: readonly Row[]): void => {\n source = next;\n if (key === undefined) {\n indexOf = new Map(next.map((r, i) => [r, i] as const));\n return;\n }\n if (warned) return;\n // Duplicate ids collapse to one link id (selecting one highlights all); say so once per table.\n const ids = next.map(rowId).filter((id) => id !== \"\");\n const dupes = ids.length - new Set(ids).size;\n if (dupes > 0) {\n warned = true;\n console.warn(\n `sdvtables: rowKey \"${key}\" is not unique — ${dupes} duplicate id(s); linked selection will merge them`,\n );\n }\n };\n setSource(rows);\n let hovered: string | null = null;\n const compute = (): TableSnapshot<Row> => {\n const filtered = applyFilters(spec, source, state);\n const sorted = applySort(spec, filtered, state.sort);\n const { rows: pageRows, pageCount } = paginate(sorted, state.page, state.pageSize);\n return { state, rows: pageRows, filteredCount: filtered.length, pageCount };\n };\n let snapshot = compute();\n const update = (patch: Partial<TableState<Row>>, event: TableEvent = CHANGE): void => {\n state = { ...state, ...patch };\n snapshot = compute();\n if (state.page > snapshot.pageCount - 1) {\n state = { ...state, page: snapshot.pageCount - 1 };\n snapshot = compute();\n }\n const last = Math.max(0, snapshot.rows.length - 1);\n if (state.cursor.row > last) {\n // Task 10: a filter, page or new rows that shrink the page pull the cursor row back onto it\n state = { ...state, cursor: { ...state.cursor, row: last } };\n snapshot = { ...snapshot, state };\n }\n emit(event);\n };\n return {\n spec,\n get allRows() {\n return source;\n },\n get state() {\n return snapshot.state;\n },\n get rows() {\n return snapshot.rows;\n },\n get filteredCount() {\n return snapshot.filteredCount;\n },\n get pageCount() {\n return snapshot.pageCount;\n },\n get columns() {\n return spec.columns.filter((c) => !snapshot.state.hidden.includes(c.key));\n },\n setSort(col, dir) {\n if (dir !== null) findColumn(spec, col);\n update({ sort: dir === null ? null : { col, dir }, page: 0 });\n },\n setFilter(col, filter) {\n findColumn(spec, col);\n const { [col]: _dropped, ...rest } = state.filters;\n const filters =\n filter === null || filter === undefined || filter === \"\" ? rest : { ...rest, [col]: filter };\n update({ filters, page: 0 });\n },\n setGlobalFilter(text) {\n update({ globalFilter: text, page: 0 });\n },\n setPage(n) {\n if (!Number.isFinite(n)) return; // NaN/±Infinity: a caller bug, not a page\n update({ page: Math.max(0, Math.min(Math.trunc(n), snapshot.pageCount - 1)) });\n },\n setPageSize(n) {\n update({ pageSize: checkPageSize(n), page: 0 });\n },\n toggleColumn(col, visible) {\n findColumn(spec, col);\n const hiddenNow = state.hidden.includes(col);\n const hide = visible === undefined ? !hiddenNow : !visible;\n const hidden = hide\n ? hiddenNow\n ? state.hidden\n : [...state.hidden, col]\n : state.hidden.filter((c) => c !== col);\n update({ hidden, sort: hide && state.sort?.col === col ? null : state.sort });\n },\n setRows(next) {\n setSource(next);\n update({}); // every state field kept; update re-clamps the page and emits once\n },\n rowId,\n setExternalFilter(filter) {\n if (filter === state.externalFilter) return; // no recompute, no echo: the J31 loop guard\n update({ externalFilter: filter, page: 0 });\n },\n setSelection(ids) {\n if (sameSet(ids, state.selection)) return;\n const selection: ReadonlySet<string> = new Set(ids); // a copy: the caller may reuse its set\n update({ selection }, { type: \"select\", ids: selection });\n },\n getSelection: () => state.selection,\n setCursor(row, col) {\n if (!Number.isFinite(row)) return; // as setPage: NaN/±Infinity is a caller bug, not a row\n if (col !== null) findColumn(spec, col);\n const r = Math.max(0, Math.min(Math.trunc(row), snapshot.rows.length - 1));\n if (r === state.cursor.row && col === state.cursor.col) return;\n update({ cursor: { row: r, col } });\n },\n setHover(id) {\n if (id === hovered) return;\n hovered = id;\n emit({ type: \"hover\", id });\n },\n getHover: () => hovered,\n subscribe(fn) {\n listeners.add(fn);\n return () => {\n listeners.delete(fn);\n };\n },\n getSnapshot: () => snapshot,\n };\n}\n"]}