@joewinke/jatui 0.36.3 → 0.38.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.
- package/dist/artifact-blocks/AttachmentChip.svelte +66 -0
- package/dist/artifact-blocks/AttachmentChip.svelte.d.ts +7 -0
- package/dist/artifact-blocks/BlockComments.svelte +309 -0
- package/dist/artifact-blocks/BlockComments.svelte.d.ts +33 -0
- package/dist/artifact-blocks/BlockRenderer.svelte +674 -0
- package/dist/artifact-blocks/BlockRenderer.svelte.d.ts +55 -0
- package/dist/artifact-blocks/BlockVerdict.svelte +151 -0
- package/dist/artifact-blocks/BlockVerdict.svelte.d.ts +13 -0
- package/dist/artifact-blocks/BlocksArtifactView.svelte +1616 -0
- package/dist/artifact-blocks/BlocksArtifactView.svelte.d.ts +113 -0
- package/dist/artifact-blocks/CONTRACT.md +225 -0
- package/dist/artifact-blocks/CommentPill.svelte +49 -0
- package/dist/artifact-blocks/CommentPill.svelte.d.ts +16 -0
- package/dist/artifact-blocks/FoldedRounds.svelte +95 -0
- package/dist/artifact-blocks/FoldedRounds.svelte.d.ts +9 -0
- package/dist/artifact-blocks/Glyph.svelte +54 -0
- package/dist/artifact-blocks/Glyph.svelte.d.ts +10 -0
- package/dist/artifact-blocks/HistoryScrubber.svelte +500 -0
- package/dist/artifact-blocks/HistoryScrubber.svelte.d.ts +15 -0
- package/dist/artifact-blocks/Markdown.svelte +186 -0
- package/dist/artifact-blocks/Markdown.svelte.d.ts +30 -0
- package/dist/artifact-blocks/NoteComposer.svelte +31 -0
- package/dist/artifact-blocks/NoteComposer.svelte.d.ts +8 -0
- package/dist/artifact-blocks/PlainComposer.svelte +200 -0
- package/dist/artifact-blocks/PlainComposer.svelte.d.ts +15 -0
- package/dist/artifact-blocks/SectionTools.svelte +102 -0
- package/dist/artifact-blocks/SectionTools.svelte.d.ts +19 -0
- package/dist/artifact-blocks/adapter.d.ts +13 -0
- package/dist/artifact-blocks/adapter.js +31 -0
- package/dist/artifact-blocks/autoSend.d.ts +49 -0
- package/dist/artifact-blocks/autoSend.js +103 -0
- package/dist/artifact-blocks/blocks/actions/ActionsBlock.svelte +557 -0
- package/dist/artifact-blocks/blocks/actions/ActionsBlock.svelte.d.ts +48 -0
- package/dist/artifact-blocks/blocks/actions/block.d.ts +8 -0
- package/dist/artifact-blocks/blocks/actions/block.js +74 -0
- package/dist/artifact-blocks/blocks/actions/requests.d.ts +62 -0
- package/dist/artifact-blocks/blocks/actions/requests.js +26 -0
- package/dist/artifact-blocks/blocks/actions/schema.d.ts +168 -0
- package/dist/artifact-blocks/blocks/actions/schema.js +253 -0
- package/dist/artifact-blocks/blocks/callout/CalloutBlock.svelte +779 -0
- package/dist/artifact-blocks/blocks/callout/CalloutBlock.svelte.d.ts +40 -0
- package/dist/artifact-blocks/blocks/callout/block.d.ts +7 -0
- package/dist/artifact-blocks/blocks/callout/block.js +39 -0
- package/dist/artifact-blocks/blocks/callout/schema.d.ts +72 -0
- package/dist/artifact-blocks/blocks/callout/schema.js +115 -0
- package/dist/artifact-blocks/blocks/chart/ChartBlock.svelte +875 -0
- package/dist/artifact-blocks/blocks/chart/ChartBlock.svelte.d.ts +59 -0
- package/dist/artifact-blocks/blocks/chart/block.d.ts +9 -0
- package/dist/artifact-blocks/blocks/chart/block.js +70 -0
- package/dist/artifact-blocks/blocks/chart/schema.d.ts +171 -0
- package/dist/artifact-blocks/blocks/chart/schema.js +498 -0
- package/dist/artifact-blocks/blocks/chart/thumb.d.ts +2 -0
- package/dist/artifact-blocks/blocks/chart/thumb.js +201 -0
- package/dist/artifact-blocks/blocks/checklist/ChecklistBlock.svelte +1048 -0
- package/dist/artifact-blocks/blocks/checklist/ChecklistBlock.svelte.d.ts +16 -0
- package/dist/artifact-blocks/blocks/checklist/Icon.svelte +105 -0
- package/dist/artifact-blocks/blocks/checklist/Icon.svelte.d.ts +17 -0
- package/dist/artifact-blocks/blocks/checklist/block.d.ts +10 -0
- package/dist/artifact-blocks/blocks/checklist/block.js +63 -0
- package/dist/artifact-blocks/blocks/checklist/itemReview.d.ts +16 -0
- package/dist/artifact-blocks/blocks/checklist/itemReview.js +63 -0
- package/dist/artifact-blocks/blocks/checklist/labels.d.ts +62 -0
- package/dist/artifact-blocks/blocks/checklist/labels.js +96 -0
- package/dist/artifact-blocks/blocks/checklist/retest.d.ts +43 -0
- package/dist/artifact-blocks/blocks/checklist/retest.js +68 -0
- package/dist/artifact-blocks/blocks/checklist/schema.d.ts +84 -0
- package/dist/artifact-blocks/blocks/checklist/schema.js +91 -0
- package/dist/artifact-blocks/blocks/code/CodeBlock.svelte +128 -0
- package/dist/artifact-blocks/blocks/code/CodeBlock.svelte.d.ts +12 -0
- package/dist/artifact-blocks/blocks/code/block.d.ts +8 -0
- package/dist/artifact-blocks/blocks/code/block.js +31 -0
- package/dist/artifact-blocks/blocks/code/highlight.d.ts +34 -0
- package/dist/artifact-blocks/blocks/code/highlight.js +280 -0
- package/dist/artifact-blocks/blocks/code/schema.d.ts +32 -0
- package/dist/artifact-blocks/blocks/code/schema.js +39 -0
- package/dist/artifact-blocks/blocks/collage/CollageBlock.svelte +290 -0
- package/dist/artifact-blocks/blocks/collage/CollageBlock.svelte.d.ts +29 -0
- package/dist/artifact-blocks/blocks/collage/block.d.ts +9 -0
- package/dist/artifact-blocks/blocks/collage/block.js +29 -0
- package/dist/artifact-blocks/blocks/collage/schema.d.ts +52 -0
- package/dist/artifact-blocks/blocks/collage/schema.js +86 -0
- package/dist/artifact-blocks/blocks/compare/CompareBlock.svelte +484 -0
- package/dist/artifact-blocks/blocks/compare/CompareBlock.svelte.d.ts +25 -0
- package/dist/artifact-blocks/blocks/compare/block.d.ts +9 -0
- package/dist/artifact-blocks/blocks/compare/block.js +32 -0
- package/dist/artifact-blocks/blocks/compare/schema.d.ts +74 -0
- package/dist/artifact-blocks/blocks/compare/schema.js +148 -0
- package/dist/artifact-blocks/blocks/diagram/DiagramBlock.svelte +392 -0
- package/dist/artifact-blocks/blocks/diagram/DiagramBlock.svelte.d.ts +30 -0
- package/dist/artifact-blocks/blocks/diagram/block.d.ts +9 -0
- package/dist/artifact-blocks/blocks/diagram/block.js +50 -0
- package/dist/artifact-blocks/blocks/diagram/constants.d.ts +48 -0
- package/dist/artifact-blocks/blocks/diagram/constants.js +53 -0
- package/dist/artifact-blocks/blocks/diagram/schema.d.ts +161 -0
- package/dist/artifact-blocks/blocks/diagram/schema.js +621 -0
- package/dist/artifact-blocks/blocks/diagram/thumb.d.ts +2 -0
- package/dist/artifact-blocks/blocks/diagram/thumb.js +157 -0
- package/dist/artifact-blocks/blocks/diagram/types.d.ts +74 -0
- package/dist/artifact-blocks/blocks/diagram/types.js +1 -0
- package/dist/artifact-blocks/blocks/diff/DiffBlock.svelte +81 -0
- package/dist/artifact-blocks/blocks/diff/DiffBlock.svelte.d.ts +10 -0
- package/dist/artifact-blocks/blocks/diff/block.d.ts +7 -0
- package/dist/artifact-blocks/blocks/diff/block.js +36 -0
- package/dist/artifact-blocks/blocks/diff/schema.d.ts +18 -0
- package/dist/artifact-blocks/blocks/diff/schema.js +35 -0
- package/dist/artifact-blocks/blocks/diff-review/DiffReviewBlock.svelte +1055 -0
- package/dist/artifact-blocks/blocks/diff-review/DiffReviewBlock.svelte.d.ts +5 -0
- package/dist/artifact-blocks/blocks/diff-review/block.d.ts +15 -0
- package/dist/artifact-blocks/blocks/diff-review/block.js +64 -0
- package/dist/artifact-blocks/blocks/diff-review/decisions.d.ts +57 -0
- package/dist/artifact-blocks/blocks/diff-review/decisions.js +80 -0
- package/dist/artifact-blocks/blocks/diff-review/schema.d.ts +13 -0
- package/dist/artifact-blocks/blocks/diff-review/schema.js +84 -0
- package/dist/artifact-blocks/blocks/diff-review/types.d.ts +35 -0
- package/dist/artifact-blocks/blocks/diff-review/types.js +1 -0
- package/dist/artifact-blocks/blocks/explainer/ExplainerBlock.svelte +145 -0
- package/dist/artifact-blocks/blocks/explainer/ExplainerBlock.svelte.d.ts +5 -0
- package/dist/artifact-blocks/blocks/explainer/block.d.ts +8 -0
- package/dist/artifact-blocks/blocks/explainer/block.js +21 -0
- package/dist/artifact-blocks/blocks/explainer/schema.d.ts +26 -0
- package/dist/artifact-blocks/blocks/explainer/schema.js +69 -0
- package/dist/artifact-blocks/blocks/group-content.d.ts +10 -0
- package/dist/artifact-blocks/blocks/group-content.js +16 -0
- package/dist/artifact-blocks/blocks/group-data.d.ts +10 -0
- package/dist/artifact-blocks/blocks/group-data.js +7 -0
- package/dist/artifact-blocks/blocks/group-review.d.ts +10 -0
- package/dist/artifact-blocks/blocks/group-review.js +12 -0
- package/dist/artifact-blocks/blocks/group-visual.d.ts +17 -0
- package/dist/artifact-blocks/blocks/group-visual.js +14 -0
- package/dist/artifact-blocks/blocks/map/MapBlock.svelte +413 -0
- package/dist/artifact-blocks/blocks/map/MapBlock.svelte.d.ts +53 -0
- package/dist/artifact-blocks/blocks/map/block.d.ts +9 -0
- package/dist/artifact-blocks/blocks/map/block.js +62 -0
- package/dist/artifact-blocks/blocks/map/schema.d.ts +123 -0
- package/dist/artifact-blocks/blocks/map/schema.js +113 -0
- package/dist/artifact-blocks/blocks/map/thumb.d.ts +2 -0
- package/dist/artifact-blocks/blocks/map/thumb.js +69 -0
- package/dist/artifact-blocks/blocks/markdown/MarkdownBlock.svelte +33 -0
- package/dist/artifact-blocks/blocks/markdown/MarkdownBlock.svelte.d.ts +15 -0
- package/dist/artifact-blocks/blocks/markdown/block.d.ts +7 -0
- package/dist/artifact-blocks/blocks/markdown/block.js +28 -0
- package/dist/artifact-blocks/blocks/markdown/render.d.ts +17 -0
- package/dist/artifact-blocks/blocks/markdown/render.js +115 -0
- package/dist/artifact-blocks/blocks/markdown/schema.d.ts +10 -0
- package/dist/artifact-blocks/blocks/markdown/schema.js +23 -0
- package/dist/artifact-blocks/blocks/media-picker/MediaPickerBlock.svelte +2112 -0
- package/dist/artifact-blocks/blocks/media-picker/MediaPickerBlock.svelte.d.ts +5 -0
- package/dist/artifact-blocks/blocks/media-picker/block.d.ts +24 -0
- package/dist/artifact-blocks/blocks/media-picker/block.js +137 -0
- package/dist/artifact-blocks/blocks/media-picker/choices.d.ts +28 -0
- package/dist/artifact-blocks/blocks/media-picker/choices.js +35 -0
- package/dist/artifact-blocks/blocks/media-picker/decisions.d.ts +51 -0
- package/dist/artifact-blocks/blocks/media-picker/decisions.js +75 -0
- package/dist/artifact-blocks/blocks/media-picker/schema.d.ts +7 -0
- package/dist/artifact-blocks/blocks/media-picker/schema.js +199 -0
- package/dist/artifact-blocks/blocks/media-picker/types.d.ts +92 -0
- package/dist/artifact-blocks/blocks/media-picker/types.js +1 -0
- package/dist/artifact-blocks/blocks/media-picker/versions.d.ts +51 -0
- package/dist/artifact-blocks/blocks/media-picker/versions.js +118 -0
- package/dist/artifact-blocks/blocks/mockup/MockupBlock.svelte +213 -0
- package/dist/artifact-blocks/blocks/mockup/MockupBlock.svelte.d.ts +5 -0
- package/dist/artifact-blocks/blocks/mockup/block.d.ts +26 -0
- package/dist/artifact-blocks/blocks/mockup/block.js +52 -0
- package/dist/artifact-blocks/blocks/mockup/doc.d.ts +24 -0
- package/dist/artifact-blocks/blocks/mockup/doc.js +44 -0
- package/dist/artifact-blocks/blocks/mockup/sandbox.d.ts +21 -0
- package/dist/artifact-blocks/blocks/mockup/sandbox.js +27 -0
- package/dist/artifact-blocks/blocks/mockup/schema.d.ts +7 -0
- package/dist/artifact-blocks/blocks/mockup/schema.js +90 -0
- package/dist/artifact-blocks/blocks/mockup/types.d.ts +36 -0
- package/dist/artifact-blocks/blocks/mockup/types.js +17 -0
- package/dist/artifact-blocks/blocks/program/ProgramBlock.svelte +359 -0
- package/dist/artifact-blocks/blocks/program/ProgramBlock.svelte.d.ts +32 -0
- package/dist/artifact-blocks/blocks/program/block.d.ts +35 -0
- package/dist/artifact-blocks/blocks/program/block.js +68 -0
- package/dist/artifact-blocks/blocks/program/schema.d.ts +132 -0
- package/dist/artifact-blocks/blocks/program/schema.js +268 -0
- package/dist/artifact-blocks/blocks/stats/StatsBlock.svelte +315 -0
- package/dist/artifact-blocks/blocks/stats/StatsBlock.svelte.d.ts +24 -0
- package/dist/artifact-blocks/blocks/stats/block.d.ts +7 -0
- package/dist/artifact-blocks/blocks/stats/block.js +49 -0
- package/dist/artifact-blocks/blocks/stats/schema.d.ts +82 -0
- package/dist/artifact-blocks/blocks/stats/schema.js +43 -0
- package/dist/artifact-blocks/blocks/stats/thumb.d.ts +2 -0
- package/dist/artifact-blocks/blocks/stats/thumb.js +102 -0
- package/dist/artifact-blocks/blocks/table/TableBlock.svelte +490 -0
- package/dist/artifact-blocks/blocks/table/TableBlock.svelte.d.ts +28 -0
- package/dist/artifact-blocks/blocks/table/block.d.ts +9 -0
- package/dist/artifact-blocks/blocks/table/block.js +100 -0
- package/dist/artifact-blocks/blocks/table/schema.d.ts +143 -0
- package/dist/artifact-blocks/blocks/table/schema.js +278 -0
- package/dist/artifact-blocks/blocks/timeline/TimelineBlock.svelte +347 -0
- package/dist/artifact-blocks/blocks/timeline/TimelineBlock.svelte.d.ts +42 -0
- package/dist/artifact-blocks/blocks/timeline/block.d.ts +9 -0
- package/dist/artifact-blocks/blocks/timeline/block.js +96 -0
- package/dist/artifact-blocks/blocks/timeline/constants.d.ts +26 -0
- package/dist/artifact-blocks/blocks/timeline/constants.js +27 -0
- package/dist/artifact-blocks/blocks/timeline/schema.d.ts +102 -0
- package/dist/artifact-blocks/blocks/timeline/schema.js +405 -0
- package/dist/artifact-blocks/blocks/timeline/thumb.d.ts +2 -0
- package/dist/artifact-blocks/blocks/timeline/thumb.js +117 -0
- package/dist/artifact-blocks/blocks/timeline/types.d.ts +66 -0
- package/dist/artifact-blocks/blocks/timeline/types.js +1 -0
- package/dist/artifact-blocks/blocks/transcript/TranscriptBlock.svelte +169 -0
- package/dist/artifact-blocks/blocks/transcript/TranscriptBlock.svelte.d.ts +26 -0
- package/dist/artifact-blocks/blocks/transcript/block.d.ts +9 -0
- package/dist/artifact-blocks/blocks/transcript/block.js +86 -0
- package/dist/artifact-blocks/blocks/transcript/schema.d.ts +114 -0
- package/dist/artifact-blocks/blocks/transcript/schema.js +126 -0
- package/dist/artifact-blocks/builtins.d.ts +40 -0
- package/dist/artifact-blocks/builtins.js +22 -0
- package/dist/artifact-blocks/contractBlocks.d.ts +92 -0
- package/dist/artifact-blocks/contractBlocks.js +279 -0
- package/dist/artifact-blocks/history.d.ts +140 -0
- package/dist/artifact-blocks/history.js +363 -0
- package/dist/artifact-blocks/index.d.ts +40 -0
- package/dist/artifact-blocks/index.js +46 -0
- package/dist/artifact-blocks/listen/context.d.ts +30 -0
- package/dist/artifact-blocks/listen/context.js +30 -0
- package/dist/artifact-blocks/liveData.d.ts +78 -0
- package/dist/artifact-blocks/liveData.js +137 -0
- package/dist/artifact-blocks/liveDataPoller.d.ts +41 -0
- package/dist/artifact-blocks/liveDataPoller.js +140 -0
- package/dist/artifact-blocks/openNav.d.ts +46 -0
- package/dist/artifact-blocks/openNav.js +106 -0
- package/dist/artifact-blocks/pageReviewKeys.d.ts +17 -0
- package/dist/artifact-blocks/pageReviewKeys.js +115 -0
- package/dist/artifact-blocks/params.d.ts +98 -0
- package/dist/artifact-blocks/params.js +159 -0
- package/dist/artifact-blocks/registry.d.ts +27 -0
- package/dist/artifact-blocks/registry.js +83 -0
- package/dist/artifact-blocks/review/BlockIcon.svelte +99 -0
- package/dist/artifact-blocks/review/BlockIcon.svelte.d.ts +17 -0
- package/dist/artifact-blocks/review/BulkRejectForm.svelte +94 -0
- package/dist/artifact-blocks/review/BulkRejectForm.svelte.d.ts +11 -0
- package/dist/artifact-blocks/review/BulkUndoBar.svelte +40 -0
- package/dist/artifact-blocks/review/BulkUndoBar.svelte.d.ts +9 -0
- package/dist/artifact-blocks/review/ItemNote.svelte +193 -0
- package/dist/artifact-blocks/review/ItemNote.svelte.d.ts +33 -0
- package/dist/artifact-blocks/review/NoteToggle.svelte +52 -0
- package/dist/artifact-blocks/review/NoteToggle.svelte.d.ts +12 -0
- package/dist/artifact-blocks/review/TeamChip.svelte +71 -0
- package/dist/artifact-blocks/review/TeamChip.svelte.d.ts +8 -0
- package/dist/artifact-blocks/review/attachments.d.ts +10 -0
- package/dist/artifact-blocks/review/attachments.js +37 -0
- package/dist/artifact-blocks/review/bulk.d.ts +52 -0
- package/dist/artifact-blocks/review/bulk.js +61 -0
- package/dist/artifact-blocks/review/itemReview.d.ts +33 -0
- package/dist/artifact-blocks/review/itemReview.js +112 -0
- package/dist/artifact-blocks/review/roundLines.d.ts +14 -0
- package/dist/artifact-blocks/review/roundLines.js +20 -0
- package/dist/artifact-blocks/review/rounds.d.ts +86 -0
- package/dist/artifact-blocks/review/rounds.js +302 -0
- package/dist/artifact-blocks/review/saver.d.ts +23 -0
- package/dist/artifact-blocks/review/saver.js +48 -0
- package/dist/artifact-blocks/review/team.d.ts +31 -0
- package/dist/artifact-blocks/review/team.js +42 -0
- package/dist/artifact-blocks/review/visualOrder.d.ts +29 -0
- package/dist/artifact-blocks/review/visualOrder.js +66 -0
- package/dist/artifact-blocks/review.d.ts +180 -0
- package/dist/artifact-blocks/review.js +716 -0
- package/dist/artifact-blocks/thumb-kit.d.ts +80 -0
- package/dist/artifact-blocks/thumb-kit.js +149 -0
- package/dist/artifact-blocks/types.d.ts +513 -0
- package/dist/artifact-blocks/types.js +1 -0
- package/dist/components/Button.svelte +8 -0
- package/dist/components/TextInput.svelte +39 -6
- package/dist/components/TextInput.svelte.d.ts +15 -7
- package/dist/components/basic/Checkbox.svelte +52 -14
- package/dist/components/basic/Checkbox.svelte.d.ts +11 -1
- package/package.json +11 -2
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thumb drawing kit (mos-qkpva) — the shared vocabulary of the per-block
|
|
3
|
+
* thumbnail composers (blocks/<type>/thumb.ts) and their dispatcher
|
|
4
|
+
* (thumbnail-visual.ts).
|
|
5
|
+
*
|
|
6
|
+
* PURE and node-importable (the one-off backfill runs this chain straight
|
|
7
|
+
* from node): no svelte, no DOM, no `#lib/server`. The types are structural,
|
|
8
|
+
* not zod — each drawer validates its own block params against its block's
|
|
9
|
+
* schema before drawing, exactly like its Svelte component does.
|
|
10
|
+
*
|
|
11
|
+
* Colors are CONCRETE CSS values, not token classes: a thumbnail renders
|
|
12
|
+
* inside `<img src=data:…>` where no stylesheet exists. Opacity is a separate
|
|
13
|
+
* presentation attribute (fill-opacity / stroke-opacity), never color-mix,
|
|
14
|
+
* so the string rasterizes identically everywhere. They are resolved from
|
|
15
|
+
* the team's active theme (theme_settings light overrides) over the app.css
|
|
16
|
+
* default palette — see buildThumbPalette.
|
|
17
|
+
*/
|
|
18
|
+
/** The palette a thumb composer draws with. Values are raw CSS color strings
|
|
19
|
+
* (hex or oklch) written into presentation attributes. */
|
|
20
|
+
export interface ThumbPalette {
|
|
21
|
+
/** base-100 — the frame's ground. */
|
|
22
|
+
bg: string;
|
|
23
|
+
/** base-content — text and strong strokes. */
|
|
24
|
+
ink: string;
|
|
25
|
+
primary: string;
|
|
26
|
+
secondary: string;
|
|
27
|
+
accent: string;
|
|
28
|
+
neutral: string;
|
|
29
|
+
info: string;
|
|
30
|
+
success: string;
|
|
31
|
+
warning: string;
|
|
32
|
+
error: string;
|
|
33
|
+
/** The --chart-series-1..6 contract (src/lib/theme-bridge/layerchart.css):
|
|
34
|
+
* series identity colors in the chart's order. */
|
|
35
|
+
series: string[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The default (app.css light theme) palette, mirrored as concrete values.
|
|
39
|
+
* thumbnail-visual.test.ts asserts parity with src/app.css through the
|
|
40
|
+
* machine reader (scripts/lib/parse-app-css-theme.mjs) — edit app.css and
|
|
41
|
+
* the test fails until this table follows.
|
|
42
|
+
*/
|
|
43
|
+
export declare const DEFAULT_THUMB_PALETTE: ThumbPalette;
|
|
44
|
+
/** Tone token → palette color (the blocks' shared toneSchema vocabulary);
|
|
45
|
+
* an unknown token lands on neutral, like the components' static maps. */
|
|
46
|
+
export declare function toneColor(palette: ThumbPalette, tone?: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* Extract the light-mode override block from a stored theme_settings.overrides
|
|
49
|
+
* value. The runtime contract (themeCache.ts, the email themeResolver) keys
|
|
50
|
+
* overrides WITHOUT the leading `--`, grouped under light/dark — the same
|
|
51
|
+
* shape both callers of the composers read. Anything malformed yields {}.
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractLightOverrides(raw: unknown): Record<string, string>;
|
|
54
|
+
/**
|
|
55
|
+
* The palette a team's artifacts draw with: the active theme's light values
|
|
56
|
+
* over the app.css defaults. Never throws; a missing or non-color token
|
|
57
|
+
* (empty, or one that could break the XML — a quote or angle bracket) keeps
|
|
58
|
+
* the default. A broken theme must never take a publish down.
|
|
59
|
+
*/
|
|
60
|
+
export declare function buildThumbPalette(overrides?: Record<string, string>): ThumbPalette;
|
|
61
|
+
/** The thumbnail frame (the task's fixed small size; the list cell is 64×40
|
|
62
|
+
* at the same 1.6:1 ratio, so object-fit: cover shows it uncropped). */
|
|
63
|
+
export declare const THUMB_W = 320;
|
|
64
|
+
export declare const THUMB_H = 200;
|
|
65
|
+
/** Round to one decimal — same convention as the block components. */
|
|
66
|
+
export declare const r1: (n: number) => number;
|
|
67
|
+
/** XML-escape text content / attribute values. */
|
|
68
|
+
export declare function escXml(s: string): string;
|
|
69
|
+
export interface TextOpts {
|
|
70
|
+
size: number;
|
|
71
|
+
fill: string;
|
|
72
|
+
opacity?: number;
|
|
73
|
+
weight?: number;
|
|
74
|
+
anchor?: "start" | "middle" | "end";
|
|
75
|
+
}
|
|
76
|
+
/** A plain <text> element. Presentation attributes only — no style attr
|
|
77
|
+
* (the SVG sanitizer forbids style; see sanitizeSvg). */
|
|
78
|
+
export declare function thumbText(x: number, y: number, s: string, o: TextOpts): string;
|
|
79
|
+
/** Clamp text to n characters with an ellipsis (labels are decorative here). */
|
|
80
|
+
export declare function thumbTruncate(s: string, n: number): string;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thumb drawing kit (mos-qkpva) — the shared vocabulary of the per-block
|
|
3
|
+
* thumbnail composers (blocks/<type>/thumb.ts) and their dispatcher
|
|
4
|
+
* (thumbnail-visual.ts).
|
|
5
|
+
*
|
|
6
|
+
* PURE and node-importable (the one-off backfill runs this chain straight
|
|
7
|
+
* from node): no svelte, no DOM, no `#lib/server`. The types are structural,
|
|
8
|
+
* not zod — each drawer validates its own block params against its block's
|
|
9
|
+
* schema before drawing, exactly like its Svelte component does.
|
|
10
|
+
*
|
|
11
|
+
* Colors are CONCRETE CSS values, not token classes: a thumbnail renders
|
|
12
|
+
* inside `<img src=data:…>` where no stylesheet exists. Opacity is a separate
|
|
13
|
+
* presentation attribute (fill-opacity / stroke-opacity), never color-mix,
|
|
14
|
+
* so the string rasterizes identically everywhere. They are resolved from
|
|
15
|
+
* the team's active theme (theme_settings light overrides) over the app.css
|
|
16
|
+
* default palette — see buildThumbPalette.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* The default (app.css light theme) palette, mirrored as concrete values.
|
|
20
|
+
* thumbnail-visual.test.ts asserts parity with src/app.css through the
|
|
21
|
+
* machine reader (scripts/lib/parse-app-css-theme.mjs) — edit app.css and
|
|
22
|
+
* the test fails until this table follows.
|
|
23
|
+
*/
|
|
24
|
+
export const DEFAULT_THUMB_PALETTE = {
|
|
25
|
+
bg: "#fefbf6",
|
|
26
|
+
ink: "#180042",
|
|
27
|
+
primary: "#180042",
|
|
28
|
+
secondary: "#c7b9f8",
|
|
29
|
+
accent: "#db2777",
|
|
30
|
+
neutral: "#180042",
|
|
31
|
+
info: "oklch(70% 0.2 220)",
|
|
32
|
+
success: "#37d399",
|
|
33
|
+
warning: "oklch(80% 0.25 80)",
|
|
34
|
+
error: "#f77272",
|
|
35
|
+
series: [
|
|
36
|
+
"#180042", // --chart-series-1: primary
|
|
37
|
+
"#c7b9f8", // --chart-series-2: secondary
|
|
38
|
+
"#db2777", // --chart-series-3: accent
|
|
39
|
+
"oklch(70% 0.2 220)", // --chart-series-4: info
|
|
40
|
+
"#37d399", // --chart-series-5: success
|
|
41
|
+
"oklch(80% 0.25 80)", // --chart-series-6: warning
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
/** Tone token → palette color (the blocks' shared toneSchema vocabulary);
|
|
45
|
+
* an unknown token lands on neutral, like the components' static maps. */
|
|
46
|
+
export function toneColor(palette, tone) {
|
|
47
|
+
switch (tone) {
|
|
48
|
+
case "primary":
|
|
49
|
+
case "secondary":
|
|
50
|
+
case "accent":
|
|
51
|
+
case "info":
|
|
52
|
+
case "success":
|
|
53
|
+
case "warning":
|
|
54
|
+
case "error":
|
|
55
|
+
return palette[tone];
|
|
56
|
+
default:
|
|
57
|
+
return palette.neutral;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Extract the light-mode override block from a stored theme_settings.overrides
|
|
62
|
+
* value. The runtime contract (themeCache.ts, the email themeResolver) keys
|
|
63
|
+
* overrides WITHOUT the leading `--`, grouped under light/dark — the same
|
|
64
|
+
* shape both callers of the composers read. Anything malformed yields {}.
|
|
65
|
+
*/
|
|
66
|
+
export function extractLightOverrides(raw) {
|
|
67
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw))
|
|
68
|
+
return {};
|
|
69
|
+
const light = raw.light;
|
|
70
|
+
if (typeof light !== "object" || light === null || Array.isArray(light))
|
|
71
|
+
return {};
|
|
72
|
+
const out = {};
|
|
73
|
+
for (const [k, v] of Object.entries(light)) {
|
|
74
|
+
if (typeof v === "string" && v.trim())
|
|
75
|
+
out[k] = v.trim();
|
|
76
|
+
}
|
|
77
|
+
return out;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The palette a team's artifacts draw with: the active theme's light values
|
|
81
|
+
* over the app.css defaults. Never throws; a missing or non-color token
|
|
82
|
+
* (empty, or one that could break the XML — a quote or angle bracket) keeps
|
|
83
|
+
* the default. A broken theme must never take a publish down.
|
|
84
|
+
*/
|
|
85
|
+
export function buildThumbPalette(overrides) {
|
|
86
|
+
const ov = overrides ?? {};
|
|
87
|
+
const get = (key, fallback) => {
|
|
88
|
+
const v = ov[key];
|
|
89
|
+
if (typeof v === "string" && v && !/["'<>]/.test(v))
|
|
90
|
+
return v;
|
|
91
|
+
return fallback;
|
|
92
|
+
};
|
|
93
|
+
const primary = get("color-primary", DEFAULT_THUMB_PALETTE.primary);
|
|
94
|
+
const secondary = get("color-secondary", DEFAULT_THUMB_PALETTE.secondary);
|
|
95
|
+
const accent = get("color-accent", DEFAULT_THUMB_PALETTE.accent);
|
|
96
|
+
const info = get("color-info", DEFAULT_THUMB_PALETTE.info);
|
|
97
|
+
const success = get("color-success", DEFAULT_THUMB_PALETTE.success);
|
|
98
|
+
const warning = get("color-warning", DEFAULT_THUMB_PALETTE.warning);
|
|
99
|
+
return {
|
|
100
|
+
bg: get("color-base-100", DEFAULT_THUMB_PALETTE.bg),
|
|
101
|
+
ink: get("color-base-content", DEFAULT_THUMB_PALETTE.ink),
|
|
102
|
+
primary,
|
|
103
|
+
secondary,
|
|
104
|
+
accent,
|
|
105
|
+
neutral: get("color-neutral", DEFAULT_THUMB_PALETTE.neutral),
|
|
106
|
+
info,
|
|
107
|
+
success,
|
|
108
|
+
warning,
|
|
109
|
+
error: get("color-error", DEFAULT_THUMB_PALETTE.error),
|
|
110
|
+
// layerchart.css maps series 1..6 → primary/secondary/accent/info/success/warning
|
|
111
|
+
series: [primary, secondary, accent, info, success, warning],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// ── drawing primitives ─────────────────────────────────────────────────────
|
|
115
|
+
/** The thumbnail frame (the task's fixed small size; the list cell is 64×40
|
|
116
|
+
* at the same 1.6:1 ratio, so object-fit: cover shows it uncropped). */
|
|
117
|
+
export const THUMB_W = 320;
|
|
118
|
+
export const THUMB_H = 200;
|
|
119
|
+
/** Round to one decimal — same convention as the block components. */
|
|
120
|
+
export const r1 = (n) => Math.round(n * 10) / 10;
|
|
121
|
+
/** XML-escape text content / attribute values. */
|
|
122
|
+
export function escXml(s) {
|
|
123
|
+
return s
|
|
124
|
+
.replace(/&/g, "&")
|
|
125
|
+
.replace(/</g, "<")
|
|
126
|
+
.replace(/>/g, ">")
|
|
127
|
+
.replace(/"/g, """);
|
|
128
|
+
}
|
|
129
|
+
/** A plain <text> element. Presentation attributes only — no style attr
|
|
130
|
+
* (the SVG sanitizer forbids style; see sanitizeSvg). */
|
|
131
|
+
export function thumbText(x, y, s, o) {
|
|
132
|
+
const attrs = [
|
|
133
|
+
`x="${r1(x)}"`,
|
|
134
|
+
`y="${r1(y)}"`,
|
|
135
|
+
`font-size="${o.size}"`,
|
|
136
|
+
`fill="${o.fill}"`,
|
|
137
|
+
o.opacity !== undefined ? `fill-opacity="${r1(o.opacity)}"` : "",
|
|
138
|
+
o.weight ? `font-weight="${o.weight}"` : "",
|
|
139
|
+
o.anchor ? `text-anchor="${o.anchor}"` : "",
|
|
140
|
+
`font-family="ui-sans-serif, system-ui, sans-serif"`,
|
|
141
|
+
]
|
|
142
|
+
.filter(Boolean)
|
|
143
|
+
.join(" ");
|
|
144
|
+
return `<text ${attrs}>${escXml(s)}</text>`;
|
|
145
|
+
}
|
|
146
|
+
/** Clamp text to n characters with an ellipsis (labels are decorative here). */
|
|
147
|
+
export function thumbTruncate(s, n) {
|
|
148
|
+
return s.length > n ? `${s.slice(0, Math.max(1, n - 1))}…` : s;
|
|
149
|
+
}
|