@stephen-netu/design-system 0.1.0 → 0.2.1
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/LICENSE +25 -0
- package/README.md +53 -14
- package/{src → dist}/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte +8 -8
- package/dist/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte.d.ts +19 -0
- package/dist/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte.d.ts.map +1 -0
- package/dist/b0-app-shell/clarification-overlay/index.d.ts +2 -0
- package/dist/b0-app-shell/clarification-overlay/index.d.ts.map +1 -0
- package/{src → dist}/b0-app-shell/command-bar/CommandBar.svelte +29 -29
- package/dist/b0-app-shell/command-bar/CommandBar.svelte.d.ts +35 -0
- package/dist/b0-app-shell/command-bar/CommandBar.svelte.d.ts.map +1 -0
- package/dist/b0-app-shell/index.d.ts +14 -0
- package/dist/b0-app-shell/index.d.ts.map +1 -0
- package/{src/b0-app-shell/index.ts → dist/b0-app-shell/index.js} +0 -1
- package/dist/base.css +138 -0
- package/{src → dist}/d0-data-viz/BarChart.svelte +2 -2
- package/dist/d0-data-viz/BarChart.svelte.d.ts +13 -0
- package/dist/d0-data-viz/BarChart.svelte.d.ts.map +1 -0
- package/{src → dist}/d0-data-viz/CheckpointBar.svelte +12 -12
- package/dist/d0-data-viz/CheckpointBar.svelte.d.ts +15 -0
- package/dist/d0-data-viz/CheckpointBar.svelte.d.ts.map +1 -0
- package/{src → dist}/d0-data-viz/CheckpointPill.svelte +14 -12
- package/dist/d0-data-viz/CheckpointPill.svelte.d.ts +14 -0
- package/dist/d0-data-viz/CheckpointPill.svelte.d.ts.map +1 -0
- package/dist/d0-data-viz/ConnectionHealth.svelte +366 -0
- package/dist/d0-data-viz/ConnectionHealth.svelte.d.ts +40 -0
- package/dist/d0-data-viz/ConnectionHealth.svelte.d.ts.map +1 -0
- package/{src → dist}/d0-data-viz/MetricCard.svelte +5 -5
- package/dist/d0-data-viz/MetricCard.svelte.d.ts +5 -0
- package/dist/d0-data-viz/MetricCard.svelte.d.ts.map +1 -0
- package/{src → dist}/d0-data-viz/SparkLine.svelte +1 -1
- package/dist/d0-data-viz/SparkLine.svelte.d.ts +12 -0
- package/dist/d0-data-viz/SparkLine.svelte.d.ts.map +1 -0
- package/{src → dist}/d0-data-viz/StorageMap.svelte +6 -6
- package/dist/d0-data-viz/StorageMap.svelte.d.ts +12 -0
- package/dist/d0-data-viz/StorageMap.svelte.d.ts.map +1 -0
- package/{src → dist}/d0-data-viz/Timeline.svelte +2 -2
- package/dist/d0-data-viz/Timeline.svelte.d.ts +10 -0
- package/dist/d0-data-viz/Timeline.svelte.d.ts.map +1 -0
- package/dist/d0-data-viz/WorldLineTimeline.svelte +329 -0
- package/dist/d0-data-viz/WorldLineTimeline.svelte.d.ts +11 -0
- package/dist/d0-data-viz/WorldLineTimeline.svelte.d.ts.map +1 -0
- package/dist/d0-data-viz/checkpoint-types.d.ts +104 -0
- package/dist/d0-data-viz/checkpoint-types.d.ts.map +1 -0
- package/dist/d0-data-viz/checkpoint-types.js +49 -0
- package/dist/d0-data-viz/d0-tokens.css +32 -0
- package/dist/d0-data-viz/index.d.ts +17 -0
- package/dist/d0-data-viz/index.d.ts.map +1 -0
- package/dist/d0-data-viz/index.js +18 -0
- package/dist/d0-data-viz/storage-map-types.d.ts +50 -0
- package/dist/d0-data-viz/storage-map-types.d.ts.map +1 -0
- package/dist/d0-data-viz/storage-map-types.js +81 -0
- package/dist/d0-data-viz/theme-integration.d.ts +106 -0
- package/dist/d0-data-viz/theme-integration.d.ts.map +1 -0
- package/dist/d0-data-viz/theme-integration.js +116 -0
- package/dist/d0-data-viz/types.d.ts +38 -0
- package/dist/d0-data-viz/types.d.ts.map +1 -0
- package/dist/d0-data-viz/types.js +3 -0
- package/dist/d0-data-viz/world-line-types.d.ts +27 -0
- package/dist/d0-data-viz/world-line-types.d.ts.map +1 -0
- package/dist/d0-data-viz/world-line-types.js +2 -0
- package/{src → dist}/demos/BspSizingInfographic.svelte +7 -7
- package/dist/demos/BspSizingInfographic.svelte.d.ts +19 -0
- package/dist/demos/BspSizingInfographic.svelte.d.ts.map +1 -0
- package/{src → dist}/demos/BspZoneDemo.svelte +4 -4
- package/dist/demos/BspZoneDemo.svelte.d.ts +4 -0
- package/dist/demos/BspZoneDemo.svelte.d.ts.map +1 -0
- package/dist/demos/ControlRoomDemo.svelte.d.ts +8 -0
- package/dist/demos/ControlRoomDemo.svelte.d.ts.map +1 -0
- package/{src → dist}/demos/NodepadBlocksShowcase.svelte +7 -7
- package/dist/demos/NodepadBlocksShowcase.svelte.d.ts +4 -0
- package/dist/demos/NodepadBlocksShowcase.svelte.d.ts.map +1 -0
- package/dist/demos/index.d.ts +5 -0
- package/dist/demos/index.d.ts.map +1 -0
- package/{src/demos/index.ts → dist/demos/index.js} +0 -1
- package/{src → dist}/editor/CodeEditor.svelte +15 -3
- package/dist/editor/CodeEditor.svelte.d.ts +16 -0
- package/dist/editor/CodeEditor.svelte.d.ts.map +1 -0
- package/{src → dist}/editor/FindReplaceDialog.svelte +15 -15
- package/dist/editor/FindReplaceDialog.svelte.d.ts +11 -0
- package/dist/editor/FindReplaceDialog.svelte.d.ts.map +1 -0
- package/{src → dist}/editor/MarkdownEditor.svelte +59 -44
- package/dist/editor/MarkdownEditor.svelte.d.ts +16 -0
- package/dist/editor/MarkdownEditor.svelte.d.ts.map +1 -0
- package/dist/editor/components/CorrectionTooltip.svelte +167 -0
- package/dist/editor/components/CorrectionTooltip.svelte.d.ts +33 -0
- package/dist/editor/components/CorrectionTooltip.svelte.d.ts.map +1 -0
- package/dist/editor/extensions/autocomplete.d.ts +10 -0
- package/dist/editor/extensions/autocomplete.d.ts.map +1 -0
- package/dist/editor/extensions/autocomplete.js +9 -0
- package/dist/editor/extensions/autoformat.d.ts +2 -0
- package/dist/editor/extensions/autoformat.d.ts.map +1 -0
- package/dist/editor/extensions/autoformat.js +69 -0
- package/dist/editor/extensions/autoformat.test.js +344 -0
- package/dist/editor/extensions/expansion.d.ts +5 -0
- package/dist/editor/extensions/expansion.d.ts.map +1 -0
- package/dist/editor/extensions/expansion.js +64 -0
- package/dist/editor/extensions/expansion.test.js +174 -0
- package/dist/editor/extensions/spellcheck.d.ts +7 -0
- package/dist/editor/extensions/spellcheck.d.ts.map +1 -0
- package/dist/editor/extensions/spellcheck.js +44 -0
- package/dist/editor/extensions/types.d.ts +3 -0
- package/dist/editor/extensions/types.d.ts.map +1 -0
- package/dist/editor/extensions/types.js +1 -0
- package/dist/editor/index.d.ts +9 -0
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/editor/index.js +6 -0
- package/{src → dist}/entity-graph-view/WorldView.svelte +3 -3
- package/dist/entity-graph-view/WorldView.svelte.d.ts +11 -0
- package/dist/entity-graph-view/WorldView.svelte.d.ts.map +1 -0
- package/dist/entity-graph-view/index.d.ts +3 -0
- package/dist/entity-graph-view/index.d.ts.map +1 -0
- package/{src/entity-graph-view/index.ts → dist/entity-graph-view/index.js} +0 -1
- package/dist/entity-graph-view/types.d.ts +161 -0
- package/dist/entity-graph-view/types.d.ts.map +1 -0
- package/dist/entity-graph-view/types.js +213 -0
- package/dist/epistemic/index.d.ts +3 -0
- package/dist/epistemic/index.d.ts.map +1 -0
- package/dist/epistemic/types.d.ts +132 -0
- package/dist/epistemic/types.d.ts.map +1 -0
- package/dist/epistemic/types.js +18 -0
- package/dist/epistemic/utils.d.ts +7 -0
- package/dist/epistemic/utils.d.ts.map +1 -0
- package/dist/epistemic/utils.js +29 -0
- package/{src → dist}/f0-forms/checkbox/Checkbox.svelte +3 -3
- package/dist/f0-forms/checkbox/Checkbox.svelte.d.ts +14 -0
- package/dist/f0-forms/checkbox/Checkbox.svelte.d.ts.map +1 -0
- package/dist/f0-forms/checkbox/Checkbox.test.js +41 -0
- package/{src → dist}/f0-forms/field/FormField.svelte +1 -1
- package/dist/f0-forms/field/FormField.svelte.d.ts +13 -0
- package/dist/f0-forms/field/FormField.svelte.d.ts.map +1 -0
- package/dist/f0-forms/field/FormField.test.js +103 -0
- package/dist/f0-forms/index.d.ts +17 -0
- package/dist/f0-forms/index.d.ts.map +1 -0
- package/{src/f0-forms/index.ts → dist/f0-forms/index.js} +0 -2
- package/{src → dist}/f0-forms/radio/RadioGroup.svelte +3 -3
- package/dist/f0-forms/radio/RadioGroup.svelte.d.ts +18 -0
- package/dist/f0-forms/radio/RadioGroup.svelte.d.ts.map +1 -0
- package/dist/f0-forms/radio/RadioGroup.test.js +54 -0
- package/{src → dist}/f0-forms/search/SearchBar.svelte +1 -1
- package/dist/f0-forms/search/SearchBar.svelte.d.ts +12 -0
- package/dist/f0-forms/search/SearchBar.svelte.d.ts.map +1 -0
- package/dist/f0-forms/search/SearchBar.test.js +46 -0
- package/{src → dist}/f0-forms/select/Select.svelte +5 -5
- package/dist/f0-forms/select/Select.svelte.d.ts +21 -0
- package/dist/f0-forms/select/Select.svelte.d.ts.map +1 -0
- package/dist/f0-forms/select/Select.test.js +51 -0
- package/{src → dist}/f0-forms/textarea/TextArea.svelte +2 -2
- package/dist/f0-forms/textarea/TextArea.svelte.d.ts +18 -0
- package/dist/f0-forms/textarea/TextArea.svelte.d.ts.map +1 -0
- package/{src → dist}/f0-forms/toggle/FormToggle.svelte +3 -3
- package/dist/f0-forms/toggle/FormToggle.svelte.d.ts +14 -0
- package/dist/f0-forms/toggle/FormToggle.svelte.d.ts.map +1 -0
- package/dist/f0-forms/toggle/FormToggle.test.js +73 -0
- package/dist/f0-forms/validation/validate.d.ts +12 -0
- package/dist/f0-forms/validation/validate.d.ts.map +1 -0
- package/dist/f0-forms/validation/validate.js +44 -0
- package/dist/f0-forms/validation/validate.test.js +87 -0
- package/{src → dist}/fabric/ai/ChatPanel.svelte +49 -49
- package/dist/fabric/ai/ChatPanel.svelte.d.ts +39 -0
- package/dist/fabric/ai/ChatPanel.svelte.d.ts.map +1 -0
- package/dist/fabric/ai/ResearchPanel.svelte +503 -0
- package/dist/fabric/ai/ResearchPanel.svelte.d.ts +44 -0
- package/dist/fabric/ai/ResearchPanel.svelte.d.ts.map +1 -0
- package/dist/fabric/ai/index.d.ts +12 -0
- package/dist/fabric/ai/index.d.ts.map +1 -0
- package/{src/fabric/ai/index.ts → dist/fabric/ai/index.js} +3 -4
- package/dist/fabric/data/index.d.ts +15 -0
- package/dist/fabric/data/index.d.ts.map +1 -0
- package/dist/fabric/data/index.js +6 -0
- package/{src → dist}/fabric/feedback/StatusBar.svelte +93 -69
- package/dist/fabric/feedback/StatusBar.svelte.d.ts +24 -0
- package/dist/fabric/feedback/StatusBar.svelte.d.ts.map +1 -0
- package/dist/fabric/feedback/StatusBar.test.js +52 -0
- package/dist/fabric/feedback/ToastContainer.svelte +153 -0
- package/dist/fabric/feedback/ToastContainer.svelte.d.ts +16 -0
- package/dist/fabric/feedback/ToastContainer.svelte.d.ts.map +1 -0
- package/dist/fabric/feedback/ToastContainer.test.js +85 -0
- package/{src/fabric/feedback/index.ts → dist/fabric/feedback/index.d.ts} +5 -4
- package/dist/fabric/feedback/index.d.ts.map +1 -0
- package/dist/fabric/feedback/index.js +10 -0
- package/{src/fabric/index.ts → dist/fabric/index.d.ts} +10 -19
- package/dist/fabric/index.d.ts.map +1 -0
- package/dist/fabric/index.js +23 -0
- package/dist/fabric/input/CommandBar.svelte +96 -0
- package/dist/fabric/input/CommandBar.svelte.d.ts +23 -0
- package/dist/fabric/input/CommandBar.svelte.d.ts.map +1 -0
- package/dist/fabric/input/CommandBar.test.js +46 -0
- package/{src → dist}/fabric/input/KeyboardShortcuts.svelte +17 -18
- package/dist/fabric/input/KeyboardShortcuts.svelte.d.ts +22 -0
- package/dist/fabric/input/KeyboardShortcuts.svelte.d.ts.map +1 -0
- package/dist/fabric/input/KeyboardShortcuts.test.js +89 -0
- package/{src/fabric/input/index.ts → dist/fabric/input/index.d.ts} +4 -3
- package/dist/fabric/input/index.d.ts.map +1 -0
- package/dist/fabric/input/index.js +10 -0
- package/dist/fabric/layout/CollapsiblePanel.svelte +378 -0
- package/dist/fabric/layout/CollapsiblePanel.svelte.d.ts +74 -0
- package/dist/fabric/layout/CollapsiblePanel.svelte.d.ts.map +1 -0
- package/dist/fabric/layout/GlassBox.svelte +206 -0
- package/dist/fabric/layout/GlassBox.svelte.d.ts +23 -0
- package/dist/fabric/layout/GlassBox.svelte.d.ts.map +1 -0
- package/{src → dist}/fabric/layout/KanbanBoard.svelte +15 -15
- package/dist/fabric/layout/KanbanBoard.svelte.d.ts +30 -0
- package/dist/fabric/layout/KanbanBoard.svelte.d.ts.map +1 -0
- package/dist/fabric/layout/KanbanBoard.test.js +25 -0
- package/{src → dist}/fabric/layout/KanbanCard.svelte +30 -30
- package/dist/fabric/layout/KanbanCard.svelte.d.ts +23 -0
- package/dist/fabric/layout/KanbanCard.svelte.d.ts.map +1 -0
- package/{src → dist}/fabric/layout/KanbanColumn.svelte +30 -30
- package/dist/fabric/layout/KanbanColumn.svelte.d.ts +26 -0
- package/dist/fabric/layout/KanbanColumn.svelte.d.ts.map +1 -0
- package/dist/fabric/layout/index.d.ts +20 -0
- package/dist/fabric/layout/index.d.ts.map +1 -0
- package/{src/fabric/layout/index.ts → dist/fabric/layout/index.js} +4 -6
- package/{src → dist}/fabric/navigation/ActivityRail.svelte +44 -31
- package/dist/fabric/navigation/ActivityRail.svelte.d.ts +34 -0
- package/dist/fabric/navigation/ActivityRail.svelte.d.ts.map +1 -0
- package/dist/fabric/navigation/ActivityRail.test.js +82 -0
- package/{src/fabric/navigation/index.ts → dist/fabric/navigation/index.d.ts} +3 -3
- package/dist/fabric/navigation/index.d.ts.map +1 -0
- package/dist/fabric/navigation/index.js +9 -0
- package/dist/g0-generative/index.d.ts +18 -0
- package/dist/g0-generative/index.d.ts.map +1 -0
- package/dist/g0-generative/index.js +15 -0
- package/dist/g0-generative/library/ComponentLibrary.d.ts +36 -0
- package/dist/g0-generative/library/ComponentLibrary.d.ts.map +1 -0
- package/dist/g0-generative/library/ComponentLibrary.js +172 -0
- package/dist/g0-generative/library/types.d.ts +30 -0
- package/dist/g0-generative/library/types.d.ts.map +1 -0
- package/dist/g0-generative/library/types.js +6 -0
- package/dist/g0-generative/parser/parseOpenUILang.d.ts +17 -0
- package/dist/g0-generative/parser/parseOpenUILang.d.ts.map +1 -0
- package/dist/g0-generative/parser/parseOpenUILang.js +319 -0
- package/dist/g0-generative/parser/types.d.ts +41 -0
- package/dist/g0-generative/parser/types.d.ts.map +1 -0
- package/dist/g0-generative/parser/types.js +12 -0
- package/dist/g0-generative/prompt-gen/generateSystemPrompt.d.ts +18 -0
- package/dist/g0-generative/prompt-gen/generateSystemPrompt.d.ts.map +1 -0
- package/dist/g0-generative/prompt-gen/generateSystemPrompt.js +28 -0
- package/dist/g0-generative/renderer/OpenUIRenderer.svelte +188 -0
- package/dist/g0-generative/renderer/OpenUIRenderer.svelte.d.ts +20 -0
- package/dist/g0-generative/renderer/OpenUIRenderer.svelte.d.ts.map +1 -0
- package/dist/g0-generative/streaming/StreamingAdapter.d.ts +36 -0
- package/dist/g0-generative/streaming/StreamingAdapter.d.ts.map +1 -0
- package/dist/g0-generative/streaming/StreamingAdapter.js +110 -0
- package/{src → dist}/g0-geo/SovereignMap.svelte +2 -2
- package/dist/g0-geo/SovereignMap.svelte.d.ts +22 -0
- package/dist/g0-geo/SovereignMap.svelte.d.ts.map +1 -0
- package/dist/g0-geo/index.d.ts +2 -0
- package/dist/g0-geo/index.d.ts.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/l0-layout/SectionSplitter.svelte +83 -0
- package/dist/l0-layout/SectionSplitter.svelte.d.ts +8 -0
- package/dist/l0-layout/SectionSplitter.svelte.d.ts.map +1 -0
- package/dist/l0-layout/SnapPanel.svelte +286 -0
- package/dist/l0-layout/SnapPanel.svelte.d.ts +38 -0
- package/dist/l0-layout/SnapPanel.svelte.d.ts.map +1 -0
- package/dist/l0-layout/ValidityScoreDisplay.svelte +155 -0
- package/dist/l0-layout/ValidityScoreDisplay.svelte.d.ts +13 -0
- package/dist/l0-layout/ValidityScoreDisplay.svelte.d.ts.map +1 -0
- package/dist/l0-layout/VirtualGrid.svelte +225 -0
- package/dist/l0-layout/VirtualGrid.svelte.d.ts +47 -0
- package/dist/l0-layout/VirtualGrid.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/block-writer/BlockConnectionLines.svelte +1 -1
- package/dist/l0-layout/block-writer/BlockConnectionLines.svelte.d.ts +11 -0
- package/dist/l0-layout/block-writer/BlockConnectionLines.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/block-writer/BlockContent.svelte +6 -6
- package/dist/l0-layout/block-writer/BlockContent.svelte.d.ts +11 -0
- package/dist/l0-layout/block-writer/BlockContent.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/block-writer/BlockHeader.svelte +1 -1
- package/dist/l0-layout/block-writer/BlockHeader.svelte.d.ts +17 -0
- package/dist/l0-layout/block-writer/BlockHeader.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/block-writer/BlockItem.svelte +7 -7
- package/dist/l0-layout/block-writer/BlockItem.svelte.d.ts +22 -0
- package/dist/l0-layout/block-writer/BlockItem.svelte.d.ts.map +1 -0
- package/dist/l0-layout/block-writer/BlockWriter.svelte.d.ts +23 -0
- package/dist/l0-layout/block-writer/BlockWriter.svelte.d.ts.map +1 -0
- package/dist/l0-layout/block-writer/block-writer-types.d.ts +48 -0
- package/dist/l0-layout/block-writer/block-writer-types.d.ts.map +1 -0
- package/dist/l0-layout/block-writer/block-writer-types.js +13 -0
- package/dist/l0-layout/block-writer/index.d.ts +9 -0
- package/dist/l0-layout/block-writer/index.d.ts.map +1 -0
- package/{src/l0-layout/block-writer/index.ts → dist/l0-layout/block-writer/index.js} +0 -13
- package/dist/l0-layout/block-writer/markdown.d.ts +16 -0
- package/dist/l0-layout/block-writer/markdown.d.ts.map +1 -0
- package/dist/l0-layout/block-writer/markdown.js +96 -0
- package/dist/l0-layout/card/CompactCard.svelte +114 -0
- package/dist/l0-layout/card/CompactCard.svelte.d.ts +11 -0
- package/dist/l0-layout/card/CompactCard.svelte.d.ts.map +1 -0
- package/dist/l0-layout/chat-view/ChatViewLayout.svelte.d.ts +11 -0
- package/dist/l0-layout/chat-view/ChatViewLayout.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/epistemic/AllayDetailPanel.svelte +3 -5
- package/dist/l0-layout/epistemic/AllayDetailPanel.svelte.d.ts +9 -0
- package/dist/l0-layout/epistemic/AllayDetailPanel.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/epistemic/AssayDetailPanel.svelte +10 -9
- package/dist/l0-layout/epistemic/AssayDetailPanel.svelte.d.ts +11 -0
- package/dist/l0-layout/epistemic/AssayDetailPanel.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/epistemic/AvenueTrace.svelte +1 -1
- package/dist/l0-layout/epistemic/AvenueTrace.svelte.d.ts +10 -0
- package/dist/l0-layout/epistemic/AvenueTrace.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/epistemic/KnowledgeDetailPanel.svelte +4 -7
- package/dist/l0-layout/epistemic/KnowledgeDetailPanel.svelte.d.ts +10 -0
- package/dist/l0-layout/epistemic/KnowledgeDetailPanel.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/epistemic/ParadigmLens.svelte +1 -1
- package/dist/l0-layout/epistemic/ParadigmLens.svelte.d.ts +10 -0
- package/dist/l0-layout/epistemic/ParadigmLens.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/epistemic/ProvenanceChain.svelte +2 -3
- package/dist/l0-layout/epistemic/ProvenanceChain.svelte.d.ts +10 -0
- package/dist/l0-layout/epistemic/ProvenanceChain.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/epistemic/TrustView.svelte +4 -8
- package/dist/l0-layout/epistemic/TrustView.svelte.d.ts +10 -0
- package/dist/l0-layout/epistemic/TrustView.svelte.d.ts.map +1 -0
- package/dist/l0-layout/epistemic/index.d.ts +8 -0
- package/dist/l0-layout/epistemic/index.d.ts.map +1 -0
- package/dist/l0-layout/grant/GrantCard.svelte +179 -0
- package/dist/l0-layout/grant/GrantCard.svelte.d.ts +18 -0
- package/dist/l0-layout/grant/GrantCard.svelte.d.ts.map +1 -0
- package/dist/l0-layout/grant/GrantDraftEditor.svelte +413 -0
- package/dist/l0-layout/grant/GrantDraftEditor.svelte.d.ts +28 -0
- package/dist/l0-layout/grant/GrantDraftEditor.svelte.d.ts.map +1 -0
- package/dist/l0-layout/grant/index.d.ts +3 -0
- package/dist/l0-layout/grant/index.d.ts.map +1 -0
- package/dist/l0-layout/grant/index.js +2 -0
- package/dist/l0-layout/grove/AccordCard.svelte.d.ts +12 -0
- package/dist/l0-layout/grove/AccordCard.svelte.d.ts.map +1 -0
- package/dist/l0-layout/grove/GroveCard.svelte.d.ts +16 -0
- package/dist/l0-layout/grove/GroveCard.svelte.d.ts.map +1 -0
- package/dist/l0-layout/grove/MemberBadge.svelte.d.ts +12 -0
- package/dist/l0-layout/grove/MemberBadge.svelte.d.ts.map +1 -0
- package/dist/l0-layout/grove/MemberList.svelte.d.ts +10 -0
- package/dist/l0-layout/grove/MemberList.svelte.d.ts.map +1 -0
- package/dist/l0-layout/grove/grove-types.d.ts +24 -0
- package/dist/l0-layout/grove/grove-types.d.ts.map +1 -0
- package/dist/l0-layout/grove/grove-types.js +2 -0
- package/dist/l0-layout/grove/index.d.ts +6 -0
- package/dist/l0-layout/grove/index.d.ts.map +1 -0
- package/{src/l0-layout/grove/index.ts → dist/l0-layout/grove/index.js} +0 -9
- package/dist/l0-layout/index.d.ts +23 -0
- package/dist/l0-layout/index.d.ts.map +1 -0
- package/{src/l0-layout/index.ts → dist/l0-layout/index.js} +11 -30
- package/{src → dist}/l0-layout/kanban/KanbanBoard.svelte +2 -2
- package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts +9 -0
- package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts.map +1 -0
- package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts +28 -0
- package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts.map +1 -0
- package/{src → dist}/l0-layout/kanban/KanbanColumn.svelte +1 -1
- package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts +18 -0
- package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts.map +1 -0
- package/dist/l0-layout/kanban/KanbanViewLayout.svelte.d.ts +10 -0
- package/dist/l0-layout/kanban/KanbanViewLayout.svelte.d.ts.map +1 -0
- package/dist/l0-layout/workspace/WorkspaceLayout.svelte.d.ts +12 -0
- package/dist/l0-layout/workspace/WorkspaceLayout.svelte.d.ts.map +1 -0
- package/dist/map/index.d.ts +3 -0
- package/dist/map/index.d.ts.map +1 -0
- package/dist/map/index.js +4 -0
- package/dist/n0-node-graph/GraphEditor.svelte.d.ts +16 -0
- package/dist/n0-node-graph/GraphEditor.svelte.d.ts.map +1 -0
- package/dist/n0-node-graph/GraphHistory.svelte.d.ts +22 -0
- package/dist/n0-node-graph/GraphHistory.svelte.d.ts.map +1 -0
- package/{src → dist}/n0-node-graph/Node.svelte +3 -3
- package/dist/n0-node-graph/Node.svelte.d.ts +20 -0
- package/dist/n0-node-graph/Node.svelte.d.ts.map +1 -0
- package/dist/n0-node-graph/NodeCanvas.svelte.d.ts +12 -0
- package/dist/n0-node-graph/NodeCanvas.svelte.d.ts.map +1 -0
- package/dist/n0-node-graph/NodeEdge.svelte.d.ts +20 -0
- package/dist/n0-node-graph/NodeEdge.svelte.d.ts.map +1 -0
- package/{src → dist}/n0-node-graph/NodePalette.svelte +5 -5
- package/dist/n0-node-graph/NodePalette.svelte.d.ts +9 -0
- package/dist/n0-node-graph/NodePalette.svelte.d.ts.map +1 -0
- package/dist/n0-node-graph/NodePort.svelte.d.ts +18 -0
- package/dist/n0-node-graph/NodePort.svelte.d.ts.map +1 -0
- package/{src/n0-node-graph/index.ts → dist/n0-node-graph/index.d.ts} +2 -24
- package/dist/n0-node-graph/index.d.ts.map +1 -0
- package/dist/n0-node-graph/index.js +11 -0
- package/dist/n0-node-graph/n0-tokens.css +29 -0
- package/dist/n0-node-graph/node-port-types.d.ts +18 -0
- package/dist/n0-node-graph/node-port-types.d.ts.map +1 -0
- package/dist/n0-node-graph/node-port-types.js +3 -0
- package/dist/n0-node-graph/types.d.ts +61 -0
- package/dist/n0-node-graph/types.d.ts.map +1 -0
- package/dist/n0-node-graph/types.js +3 -0
- package/dist/n0-node-graph/validate.d.ts +11 -0
- package/dist/n0-node-graph/validate.d.ts.map +1 -0
- package/dist/n0-node-graph/validate.js +270 -0
- package/dist/n0-node-graph/validate.test.js +646 -0
- package/{src → dist}/n1-flow-canvas/FlowCanvas.svelte +4 -12
- package/dist/n1-flow-canvas/FlowCanvas.svelte.d.ts +11 -0
- package/dist/n1-flow-canvas/FlowCanvas.svelte.d.ts.map +1 -0
- package/dist/n1-flow-canvas/graph-state.svelte.d.ts +18 -0
- package/dist/n1-flow-canvas/graph-state.svelte.d.ts.map +1 -0
- package/dist/n1-flow-canvas/graph-state.svelte.js +81 -0
- package/dist/n1-flow-canvas/index.d.ts +6 -0
- package/dist/n1-flow-canvas/index.d.ts.map +1 -0
- package/{src/n1-flow-canvas/index.ts → dist/n1-flow-canvas/index.js} +0 -15
- package/dist/n1-flow-canvas/layout.d.ts +4 -0
- package/dist/n1-flow-canvas/layout.d.ts.map +1 -0
- package/dist/n1-flow-canvas/layout.js +95 -0
- package/dist/n1-flow-canvas/layout.worker.d.ts +2 -0
- package/dist/n1-flow-canvas/layout.worker.d.ts.map +1 -0
- package/dist/n1-flow-canvas/layout.worker.js +106 -0
- package/dist/n1-flow-canvas/types.d.ts +65 -0
- package/dist/n1-flow-canvas/types.d.ts.map +1 -0
- package/dist/n1-flow-canvas/types.js +6 -0
- package/dist/n1-flow-canvas/utils.d.ts +50 -0
- package/dist/n1-flow-canvas/utils.d.ts.map +1 -0
- package/dist/n1-flow-canvas/utils.js +113 -0
- package/dist/n2-manifold-disk/ManifoldDisk.svelte.d.ts +21 -0
- package/dist/n2-manifold-disk/ManifoldDisk.svelte.d.ts.map +1 -0
- package/dist/n2-manifold-disk/index.d.ts +4 -0
- package/dist/n2-manifold-disk/index.d.ts.map +1 -0
- package/{src/n2-manifold-disk/index.ts → dist/n2-manifold-disk/index.js} +0 -2
- package/dist/n2-manifold-disk/poincare.d.ts +67 -0
- package/dist/n2-manifold-disk/poincare.d.ts.map +1 -0
- package/dist/n2-manifold-disk/poincare.js +134 -0
- package/{src → dist}/n3-force-graph/ForceGraph.svelte +19 -18
- package/dist/n3-force-graph/ForceGraph.svelte.d.ts +36 -0
- package/dist/n3-force-graph/ForceGraph.svelte.d.ts.map +1 -0
- package/dist/n3-force-graph/GraphTooltip.svelte.d.ts +19 -0
- package/dist/n3-force-graph/GraphTooltip.svelte.d.ts.map +1 -0
- package/dist/n3-force-graph/animated-edge.d.ts +18 -0
- package/dist/n3-force-graph/animated-edge.d.ts.map +1 -0
- package/dist/n3-force-graph/animated-edge.js +87 -0
- package/dist/n3-force-graph/health-node.d.ts +20 -0
- package/dist/n3-force-graph/health-node.d.ts.map +1 -0
- package/dist/n3-force-graph/health-node.js +110 -0
- package/dist/n3-force-graph/index.d.ts +7 -0
- package/dist/n3-force-graph/index.d.ts.map +1 -0
- package/{src/n3-force-graph/index.ts → dist/n3-force-graph/index.js} +1 -19
- package/dist/n3-force-graph/types.d.ts +60 -0
- package/dist/n3-force-graph/types.d.ts.map +1 -0
- package/dist/n3-force-graph/types.js +22 -0
- package/{src → dist}/n4-adaptive-manifold/AdaptiveManifold.svelte +1 -1
- package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte.d.ts +24 -0
- package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte.d.ts.map +1 -0
- package/{src → dist}/n4-adaptive-manifold/DetailCard.svelte +9 -9
- package/dist/n4-adaptive-manifold/DetailCard.svelte.d.ts +10 -0
- package/dist/n4-adaptive-manifold/DetailCard.svelte.d.ts.map +1 -0
- package/{src → dist}/n4-adaptive-manifold/SuggestionIndicator.svelte +8 -8
- package/dist/n4-adaptive-manifold/SuggestionIndicator.svelte.d.ts +11 -0
- package/dist/n4-adaptive-manifold/SuggestionIndicator.svelte.d.ts.map +1 -0
- package/dist/n4-adaptive-manifold/classifier.d.ts +6 -0
- package/dist/n4-adaptive-manifold/classifier.d.ts.map +1 -0
- package/dist/n4-adaptive-manifold/classifier.js +123 -0
- package/dist/n4-adaptive-manifold/index.d.ts +12 -0
- package/dist/n4-adaptive-manifold/index.d.ts.map +1 -0
- package/{src/n4-adaptive-manifold/index.ts → dist/n4-adaptive-manifold/index.js} +0 -33
- package/dist/n4-adaptive-manifold/n4-tokens.css +155 -0
- package/dist/n4-adaptive-manifold/orchestrator.d.ts +61 -0
- package/dist/n4-adaptive-manifold/orchestrator.d.ts.map +1 -0
- package/dist/n4-adaptive-manifold/orchestrator.js +231 -0
- package/dist/n4-adaptive-manifold/phase-theme.d.ts +9 -0
- package/dist/n4-adaptive-manifold/phase-theme.d.ts.map +1 -0
- package/dist/n4-adaptive-manifold/phase-theme.js +82 -0
- package/dist/n4-adaptive-manifold/pinnacle-events.d.ts +34 -0
- package/dist/n4-adaptive-manifold/pinnacle-events.d.ts.map +1 -0
- package/dist/n4-adaptive-manifold/pinnacle-events.js +108 -0
- package/dist/n4-adaptive-manifold/providers/gravitational-provider.d.ts +16 -0
- package/dist/n4-adaptive-manifold/providers/gravitational-provider.d.ts.map +1 -0
- package/dist/n4-adaptive-manifold/providers/gravitational-provider.js +162 -0
- package/dist/n4-adaptive-manifold/providers/manifold-provider.d.ts +7 -0
- package/dist/n4-adaptive-manifold/providers/manifold-provider.d.ts.map +1 -0
- package/dist/n4-adaptive-manifold/providers/manifold-provider.js +222 -0
- package/dist/n4-adaptive-manifold/transition.d.ts +19 -0
- package/dist/n4-adaptive-manifold/transition.d.ts.map +1 -0
- package/dist/n4-adaptive-manifold/transition.js +71 -0
- package/dist/n4-adaptive-manifold/types.d.ts +233 -0
- package/dist/n4-adaptive-manifold/types.d.ts.map +1 -0
- package/dist/n4-adaptive-manifold/types.js +17 -0
- package/dist/p0-primitives/ThemeProvider.svelte +183 -0
- package/dist/p0-primitives/ThemeProvider.svelte.d.ts +69 -0
- package/dist/p0-primitives/ThemeProvider.svelte.d.ts.map +1 -0
- package/dist/p0-primitives/canvas-theme.d.ts +17 -0
- package/dist/p0-primitives/canvas-theme.d.ts.map +1 -0
- package/dist/p0-primitives/canvas-theme.js +36 -0
- package/dist/p0-primitives/index.d.ts +8 -0
- package/dist/p0-primitives/index.d.ts.map +1 -0
- package/{src/p0-primitives/index.ts → dist/p0-primitives/index.js} +4 -1
- package/dist/p0-primitives/theme.d.ts +38 -0
- package/dist/p0-primitives/theme.d.ts.map +1 -0
- package/dist/p0-primitives/theme.js +150 -0
- package/dist/p0-primitives/tokens/contrast-audit.d.ts +42 -0
- package/dist/p0-primitives/tokens/contrast-audit.d.ts.map +1 -0
- package/dist/p0-primitives/tokens/contrast-audit.js +331 -0
- package/dist/p0-primitives/tokens/contrast-audit.test.js +84 -0
- package/dist/p0-primitives/tokens/control-room.css +309 -0
- package/dist/p0-primitives/tokens/index.d.ts +2 -0
- package/dist/p0-primitives/tokens/index.d.ts.map +1 -0
- package/dist/p0-primitives/tokens/index.js +2 -0
- package/dist/p0-primitives/tokens/tokens.css +247 -0
- package/dist/p0-primitives/tokens/validity-tokens.css +83 -0
- package/dist/p0-primitives/types/geometry.d.ts +18 -0
- package/dist/p0-primitives/types/geometry.d.ts.map +1 -0
- package/dist/p0-primitives/types/geometry.js +4 -0
- package/dist/p0-primitives/types/index.d.ts +113 -0
- package/dist/p0-primitives/types/index.d.ts.map +1 -0
- package/dist/p0-primitives/types/index.js +5 -0
- package/dist/p0-primitives/types/plugin-types.d.ts +46 -0
- package/dist/p0-primitives/types/plugin-types.d.ts.map +1 -0
- package/dist/p0-primitives/types/plugin-types.js +7 -0
- package/dist/p0-primitives/utils/index.d.ts +13 -0
- package/dist/p0-primitives/utils/index.d.ts.map +1 -0
- package/dist/p0-primitives/utils/index.js +30 -0
- package/dist/platform/hud-protocol.d.ts +14 -0
- package/dist/platform/hud-protocol.d.ts.map +1 -0
- package/dist/platform/hud-protocol.js +6 -0
- package/dist/platform/index.d.ts +2 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/{src/platform/index.ts → dist/platform/index.js} +1 -2
- package/dist/s0-lifecycle/CanvasRenderContext.d.ts +20 -0
- package/dist/s0-lifecycle/CanvasRenderContext.d.ts.map +1 -0
- package/dist/s0-lifecycle/CanvasRenderContext.js +90 -0
- package/dist/s0-lifecycle/ConstraintContext.d.ts +27 -0
- package/dist/s0-lifecycle/ConstraintContext.d.ts.map +1 -0
- package/dist/s0-lifecycle/ConstraintContext.js +3 -0
- package/dist/s0-lifecycle/InteractionContext.d.ts +38 -0
- package/dist/s0-lifecycle/InteractionContext.d.ts.map +1 -0
- package/dist/s0-lifecycle/InteractionContext.js +3 -0
- package/dist/s0-lifecycle/LayoutContext.d.ts +19 -0
- package/dist/s0-lifecycle/LayoutContext.d.ts.map +1 -0
- package/dist/s0-lifecycle/LayoutContext.js +3 -0
- package/dist/s0-lifecycle/Lifecycle.d.ts +60 -0
- package/dist/s0-lifecycle/Lifecycle.d.ts.map +1 -0
- package/dist/s0-lifecycle/Lifecycle.js +38 -0
- package/dist/s0-lifecycle/RenderContext.d.ts +48 -0
- package/dist/s0-lifecycle/RenderContext.d.ts.map +1 -0
- package/dist/s0-lifecycle/RenderContext.js +3 -0
- package/dist/s0-lifecycle/Scene.d.ts +61 -0
- package/dist/s0-lifecycle/Scene.d.ts.map +1 -0
- package/dist/s0-lifecycle/Scene.js +58 -0
- package/dist/s0-lifecycle/index.d.ts +8 -0
- package/dist/s0-lifecycle/index.d.ts.map +1 -0
- package/dist/s0-lifecycle/index.js +19 -0
- package/dist/s0-state/SyncStatus.svelte +275 -0
- package/dist/s0-state/SyncStatus.svelte.d.ts +33 -0
- package/dist/s0-state/SyncStatus.svelte.d.ts.map +1 -0
- package/dist/s0-state/ThemeStore.svelte.d.ts +12 -0
- package/dist/s0-state/ThemeStore.svelte.d.ts.map +1 -0
- package/dist/s0-state/ThemeStore.svelte.js +61 -0
- package/dist/s0-state/ThemeStore.test.js +68 -0
- package/dist/s0-state/create-store.d.ts +23 -0
- package/dist/s0-state/create-store.d.ts.map +1 -0
- package/dist/s0-state/create-store.js +58 -0
- package/dist/s0-state/derived.d.ts +13 -0
- package/dist/s0-state/derived.d.ts.map +1 -0
- package/dist/s0-state/derived.js +25 -0
- package/dist/s0-state/index.d.ts +10 -0
- package/dist/s0-state/index.d.ts.map +1 -0
- package/dist/s0-state/index.js +7 -0
- package/dist/s0-state/modal-stack-store.svelte.d.ts +43 -0
- package/dist/s0-state/modal-stack-store.svelte.d.ts.map +1 -0
- package/dist/s0-state/modal-stack-store.svelte.js +63 -0
- package/dist/s0-state/virtual.d.ts +154 -0
- package/dist/s0-state/virtual.d.ts.map +1 -0
- package/dist/s0-state/virtual.js +207 -0
- package/{src → dist}/showcase/Showcase.svelte +1 -1
- package/dist/showcase/Showcase.svelte.d.ts +4 -0
- package/dist/showcase/Showcase.svelte.d.ts.map +1 -0
- package/dist/spatial/BspTilingCanvas.svelte +196 -0
- package/dist/spatial/BspTilingCanvas.svelte.d.ts +12 -0
- package/dist/spatial/BspTilingCanvas.svelte.d.ts.map +1 -0
- package/dist/spatial/BspTilingSimulation.svelte.d.ts +43 -0
- package/dist/spatial/BspTilingSimulation.svelte.d.ts.map +1 -0
- package/dist/spatial/BspTilingSimulation.svelte.js +183 -0
- package/dist/spatial/CameraController.svelte.d.ts +39 -0
- package/dist/spatial/CameraController.svelte.d.ts.map +1 -0
- package/dist/spatial/CameraController.svelte.js +174 -0
- package/dist/spatial/ForceCanvas.svelte +151 -0
- package/dist/spatial/ForceCanvas.svelte.d.ts +16 -0
- package/dist/spatial/ForceCanvas.svelte.d.ts.map +1 -0
- package/dist/spatial/ForceSimulation.svelte.d.ts +23 -0
- package/dist/spatial/ForceSimulation.svelte.d.ts.map +1 -0
- package/dist/spatial/ForceSimulation.svelte.js +131 -0
- package/{src → dist}/spatial/LodRenderer.svelte +3 -1
- package/dist/spatial/LodRenderer.svelte.d.ts +35 -0
- package/dist/spatial/LodRenderer.svelte.d.ts.map +1 -0
- package/dist/spatial/SnapZoomCamera.svelte +187 -0
- package/dist/spatial/SnapZoomCamera.svelte.d.ts +14 -0
- package/dist/spatial/SnapZoomCamera.svelte.d.ts.map +1 -0
- package/{src → dist}/spatial/ZoneTiler.svelte +26 -7
- package/dist/spatial/ZoneTiler.svelte.d.ts +27 -0
- package/dist/spatial/ZoneTiler.svelte.d.ts.map +1 -0
- package/dist/spatial/camera-types.d.ts +34 -0
- package/dist/spatial/camera-types.d.ts.map +1 -0
- package/dist/spatial/camera-types.js +10 -0
- package/dist/spatial/content-proportional-bsp.d.ts +46 -0
- package/dist/spatial/content-proportional-bsp.d.ts.map +1 -0
- package/dist/spatial/content-proportional-bsp.js +166 -0
- package/dist/spatial/force-canvas-types.d.ts +65 -0
- package/dist/spatial/force-canvas-types.d.ts.map +1 -0
- package/dist/spatial/force-canvas-types.js +32 -0
- package/dist/spatial/index.d.ts +9 -0
- package/dist/spatial/index.d.ts.map +1 -0
- package/{src/spatial/index.ts → dist/spatial/index.js} +4 -2
- package/dist/spatial/lod-types.d.ts +39 -0
- package/dist/spatial/lod-types.d.ts.map +1 -0
- package/dist/spatial/lod-types.js +34 -0
- package/dist/spatial/zone-tiler-types.d.ts +70 -0
- package/dist/spatial/zone-tiler-types.d.ts.map +1 -0
- package/dist/spatial/zone-tiler-types.js +92 -0
- package/dist/stores/vaultStore.svelte.d.ts +24 -0
- package/dist/stores/vaultStore.svelte.d.ts.map +1 -0
- package/dist/t0-transport/connection.d.ts +11 -0
- package/dist/t0-transport/connection.d.ts.map +1 -0
- package/dist/t0-transport/connection.js +22 -0
- package/dist/t0-transport/error.d.ts +13 -0
- package/dist/t0-transport/error.d.ts.map +1 -0
- package/dist/t0-transport/error.js +31 -0
- package/dist/t0-transport/events.d.ts +13 -0
- package/dist/t0-transport/events.d.ts.map +1 -0
- package/dist/t0-transport/events.js +37 -0
- package/dist/t0-transport/index.d.ts +6 -0
- package/dist/t0-transport/index.d.ts.map +1 -0
- package/dist/t0-transport/index.js +7 -0
- package/dist/t0-transport/invoke.d.ts +25 -0
- package/dist/t0-transport/invoke.d.ts.map +1 -0
- package/dist/t0-transport/invoke.js +47 -0
- package/dist/t0-transport/quality.d.ts +39 -0
- package/dist/t0-transport/quality.d.ts.map +1 -0
- package/dist/t0-transport/quality.js +238 -0
- package/dist/tauri/index.d.ts +3 -0
- package/dist/tauri/index.d.ts.map +1 -0
- package/{src/tauri/index.ts → dist/tauri/index.js} +2 -4
- package/dist/u0-primitives/AccordionSection.svelte +186 -0
- package/dist/u0-primitives/AccordionSection.svelte.d.ts +28 -0
- package/dist/u0-primitives/AccordionSection.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/LockIndicator.svelte +244 -0
- package/dist/u0-primitives/LockIndicator.svelte.d.ts +31 -0
- package/dist/u0-primitives/LockIndicator.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/VerticalToolbar.svelte +208 -0
- package/dist/u0-primitives/VerticalToolbar.svelte.d.ts +32 -0
- package/dist/u0-primitives/VerticalToolbar.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/accordion/Accordion.svelte +185 -0
- package/dist/u0-primitives/accordion/Accordion.svelte.d.ts +34 -0
- package/dist/u0-primitives/accordion/Accordion.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/accordion/Accordion.test.js +99 -0
- package/dist/u0-primitives/accordion/index.d.ts +3 -0
- package/dist/u0-primitives/accordion/index.d.ts.map +1 -0
- package/dist/u0-primitives/accordion/index.js +1 -0
- package/dist/u0-primitives/allay-gauge/AllayGauge.svelte +58 -0
- package/dist/u0-primitives/allay-gauge/AllayGauge.svelte.d.ts +10 -0
- package/dist/u0-primitives/allay-gauge/AllayGauge.svelte.d.ts.map +1 -0
- package/{src → dist}/u0-primitives/animated-icon/AnimatedIcon.svelte +7 -7
- package/dist/u0-primitives/animated-icon/AnimatedIcon.svelte.d.ts +22 -0
- package/dist/u0-primitives/animated-icon/AnimatedIcon.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/animated-icon/README.md +70 -0
- package/dist/u0-primitives/animated-icon/index.d.ts +9 -0
- package/dist/u0-primitives/animated-icon/index.d.ts.map +1 -0
- package/dist/u0-primitives/animated-icon/index.js +9 -0
- package/{src → dist}/u0-primitives/avatar/Avatar.svelte +3 -3
- package/dist/u0-primitives/avatar/Avatar.svelte.d.ts +11 -0
- package/dist/u0-primitives/avatar/Avatar.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/avatar/index.d.ts +3 -0
- package/dist/u0-primitives/avatar/index.d.ts.map +1 -0
- package/dist/u0-primitives/avatar/index.js +1 -0
- package/{src → dist}/u0-primitives/badge/Badge.svelte +11 -11
- package/dist/u0-primitives/badge/Badge.svelte.d.ts +12 -0
- package/dist/u0-primitives/badge/Badge.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/badge/Badge.test.js +50 -0
- package/dist/u0-primitives/badge/ValidityBadge.svelte +153 -0
- package/dist/u0-primitives/badge/ValidityBadge.svelte.d.ts +13 -0
- package/dist/u0-primitives/badge/ValidityBadge.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/badge/ValidityBadge.test.js +57 -0
- package/dist/u0-primitives/badge/index.d.ts +3 -0
- package/dist/u0-primitives/badge/index.d.ts.map +1 -0
- package/dist/u0-primitives/badge/index.js +1 -0
- package/dist/u0-primitives/badge/validity-utils.d.ts +8 -0
- package/dist/u0-primitives/badge/validity-utils.d.ts.map +1 -0
- package/dist/u0-primitives/badge/validity-utils.js +18 -0
- package/{src → dist}/u0-primitives/button/Button.svelte +42 -104
- package/dist/u0-primitives/button/Button.svelte.d.ts +18 -0
- package/dist/u0-primitives/button/Button.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/button/Button.test.js +58 -0
- package/dist/u0-primitives/button/index.d.ts +3 -0
- package/dist/u0-primitives/button/index.d.ts.map +1 -0
- package/dist/u0-primitives/button/index.js +1 -0
- package/{src → dist}/u0-primitives/card/Card.svelte +71 -48
- package/dist/u0-primitives/card/Card.svelte.d.ts +18 -0
- package/dist/u0-primitives/card/Card.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/card/index.d.ts +3 -0
- package/dist/u0-primitives/card/index.d.ts.map +1 -0
- package/dist/u0-primitives/card/index.js +1 -0
- package/dist/u0-primitives/command-palette/CommandPalette.svelte +542 -0
- package/dist/u0-primitives/command-palette/CommandPalette.svelte.d.ts +25 -0
- package/dist/u0-primitives/command-palette/CommandPalette.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/command-palette/command-types.d.ts +109 -0
- package/dist/u0-primitives/command-palette/command-types.d.ts.map +1 -0
- package/dist/u0-primitives/command-palette/command-types.js +7 -0
- package/dist/u0-primitives/command-palette/commandStore.svelte.d.ts +100 -0
- package/dist/u0-primitives/command-palette/commandStore.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/command-palette/commandStore.svelte.js +278 -0
- package/dist/u0-primitives/command-palette/index.d.ts +16 -0
- package/dist/u0-primitives/command-palette/index.d.ts.map +1 -0
- package/dist/u0-primitives/command-palette/index.js +14 -0
- package/{src → dist}/u0-primitives/dropdown/Dropdown.svelte +7 -4
- package/dist/u0-primitives/dropdown/Dropdown.svelte.d.ts +21 -0
- package/dist/u0-primitives/dropdown/Dropdown.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/dropdown/Dropdown.test.js +108 -0
- package/dist/u0-primitives/dropdown/index.d.ts +3 -0
- package/dist/u0-primitives/dropdown/index.d.ts.map +1 -0
- package/dist/u0-primitives/dropdown/index.js +1 -0
- package/dist/u0-primitives/grant-badge/GrantStatusBadge.svelte +80 -0
- package/dist/u0-primitives/grant-badge/GrantStatusBadge.svelte.d.ts +9 -0
- package/dist/u0-primitives/grant-badge/GrantStatusBadge.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/grant-badge/index.d.ts +2 -0
- package/dist/u0-primitives/grant-badge/index.d.ts.map +1 -0
- package/dist/u0-primitives/grant-badge/index.js +1 -0
- package/dist/u0-primitives/index.d.ts +27 -0
- package/dist/u0-primitives/index.d.ts.map +1 -0
- package/{src/u0-primitives/index.ts → dist/u0-primitives/index.js} +12 -22
- package/dist/u0-primitives/input/Input.svelte +410 -0
- package/dist/u0-primitives/input/Input.svelte.d.ts +32 -0
- package/dist/u0-primitives/input/Input.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/input/Input.test.js +64 -0
- package/dist/u0-primitives/input/index.d.ts +3 -0
- package/dist/u0-primitives/input/index.d.ts.map +1 -0
- package/dist/u0-primitives/input/index.js +1 -0
- package/{src → dist}/u0-primitives/modal/Modal.svelte +1 -1
- package/dist/u0-primitives/modal/Modal.svelte.d.ts +31 -0
- package/dist/u0-primitives/modal/Modal.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/modal/Modal.test.js +94 -0
- package/dist/u0-primitives/modal/index.d.ts +3 -0
- package/dist/u0-primitives/modal/index.d.ts.map +1 -0
- package/dist/u0-primitives/rsvp/RsvpReader.svelte +256 -0
- package/dist/u0-primitives/rsvp/RsvpReader.svelte.d.ts +13 -0
- package/dist/u0-primitives/rsvp/RsvpReader.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/rsvp/rsvp-utils.d.ts +46 -0
- package/dist/u0-primitives/rsvp/rsvp-utils.d.ts.map +1 -0
- package/dist/u0-primitives/rsvp/rsvp-utils.js +92 -0
- package/{src → dist}/u0-primitives/spinner/Spinner.svelte +3 -3
- package/dist/u0-primitives/spinner/Spinner.svelte.d.ts +9 -0
- package/dist/u0-primitives/spinner/Spinner.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/spinner/Spinner.test.js +58 -0
- package/dist/u0-primitives/spinner/index.d.ts +3 -0
- package/dist/u0-primitives/spinner/index.d.ts.map +1 -0
- package/dist/u0-primitives/spinner/index.js +1 -0
- package/dist/u0-primitives/steps/Steps.svelte +186 -0
- package/dist/u0-primitives/steps/Steps.svelte.d.ts +18 -0
- package/dist/u0-primitives/steps/Steps.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/steps/index.d.ts +3 -0
- package/dist/u0-primitives/steps/index.d.ts.map +1 -0
- package/dist/u0-primitives/steps/index.js +1 -0
- package/{src → dist}/u0-primitives/tabs/Tabs.svelte +2 -2
- package/dist/u0-primitives/tabs/Tabs.svelte.d.ts +14 -0
- package/dist/u0-primitives/tabs/Tabs.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/tabs/Tabs.test.js +81 -0
- package/dist/u0-primitives/tabs/index.d.ts +3 -0
- package/dist/u0-primitives/tabs/index.d.ts.map +1 -0
- package/dist/u0-primitives/tabs/index.js +1 -0
- package/dist/u0-primitives/tabs/tabs-types.d.ts +8 -0
- package/dist/u0-primitives/tabs/tabs-types.d.ts.map +1 -0
- package/dist/u0-primitives/tabs/tabs-types.js +3 -0
- package/{src → dist}/u0-primitives/toggle/Toggle.svelte +8 -10
- package/dist/u0-primitives/toggle/Toggle.svelte.d.ts +13 -0
- package/dist/u0-primitives/toggle/Toggle.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/toggle/Toggle.test.js +46 -0
- package/dist/u0-primitives/toggle/index.d.ts +3 -0
- package/dist/u0-primitives/toggle/index.d.ts.map +1 -0
- package/dist/u0-primitives/toggle/index.js +1 -0
- package/{src → dist}/u0-primitives/tooltip/Tooltip.svelte +1 -1
- package/dist/u0-primitives/tooltip/Tooltip.svelte.d.ts +12 -0
- package/dist/u0-primitives/tooltip/Tooltip.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/tooltip/Tooltip.test.js +150 -0
- package/dist/u0-primitives/tooltip/index.d.ts +3 -0
- package/dist/u0-primitives/tooltip/index.d.ts.map +1 -0
- package/dist/u0-primitives/tooltip/index.js +1 -0
- package/dist/u0-primitives/web-components/button-component.d.ts +13 -0
- package/dist/u0-primitives/web-components/button-component.d.ts.map +1 -0
- package/dist/u0-primitives/web-components/button-component.js +87 -0
- package/dist/u0-primitives/web-components/input-component.d.ts +13 -0
- package/dist/u0-primitives/web-components/input-component.d.ts.map +1 -0
- package/dist/u0-primitives/web-components/input-component.js +91 -0
- package/{src → dist}/v0-diagrams/DiagramPanel.svelte +1 -1
- package/dist/v0-diagrams/DiagramPanel.svelte.d.ts +10 -0
- package/dist/v0-diagrams/DiagramPanel.svelte.d.ts.map +1 -0
- package/dist/v0-diagrams/MarkmapDiagram.svelte.d.ts +9 -0
- package/dist/v0-diagrams/MarkmapDiagram.svelte.d.ts.map +1 -0
- package/dist/v0-diagrams/MermaidDiagram.svelte.d.ts +9 -0
- package/dist/v0-diagrams/MermaidDiagram.svelte.d.ts.map +1 -0
- package/{src/v0-diagrams/index.ts → dist/v0-diagrams/index.d.ts} +1 -0
- package/dist/v0-diagrams/index.d.ts.map +1 -0
- package/dist/v0-diagrams/index.js +3 -0
- package/dist/v0-diagrams/types.d.ts +25 -0
- package/dist/v0-diagrams/types.d.ts.map +1 -0
- package/dist/v0-diagrams/types.js +1 -0
- package/dist/v0-diagrams/v0-tokens.css +6 -0
- package/{src → dist}/x0-enchanted-blocks/components/EnchantedBlock.svelte +15 -15
- package/dist/x0-enchanted-blocks/components/EnchantedBlock.svelte.d.ts +28 -0
- package/dist/x0-enchanted-blocks/components/EnchantedBlock.svelte.d.ts.map +1 -0
- package/{src → dist}/x0-enchanted-blocks/components/NodepadBlock.svelte +13 -13
- package/dist/x0-enchanted-blocks/components/NodepadBlock.svelte.d.ts +11 -0
- package/dist/x0-enchanted-blocks/components/NodepadBlock.svelte.d.ts.map +1 -0
- package/dist/x0-enchanted-blocks/core/block-layout.d.ts +79 -0
- package/dist/x0-enchanted-blocks/core/block-layout.d.ts.map +1 -0
- package/dist/x0-enchanted-blocks/core/block-layout.js +135 -0
- package/dist/x0-enchanted-blocks/core/block-types.d.ts +56 -0
- package/dist/x0-enchanted-blocks/core/block-types.d.ts.map +1 -0
- package/dist/x0-enchanted-blocks/core/block-types.js +151 -0
- package/dist/x0-enchanted-blocks/index.d.ts +7 -0
- package/dist/x0-enchanted-blocks/index.d.ts.map +1 -0
- package/dist/x0-enchanted-blocks/index.js +13 -0
- package/package.json +129 -68
- package/src/base.css +48 -62
- package/src/d0-data-viz/d0-tokens.css +5 -5
- package/src/n0-node-graph/n0-tokens.css +4 -4
- package/src/n4-adaptive-manifold/n4-tokens.css +7 -7
- package/src/p0-primitives/tokens/control-room.css +6 -6
- package/src/p0-primitives/tokens/tokens.css +194 -87
- package/src/p0-primitives/tokens/tokens.json +114 -28
- package/src/p0-primitives/tokens/validity-tokens.css +83 -0
- package/src/u0-primitives/animated-icon/README.md +20 -3
- package/src/d0-data-viz/checkpoint-types.ts +0 -162
- package/src/d0-data-viz/index.ts +0 -58
- package/src/d0-data-viz/storage-map-types.ts +0 -142
- package/src/d0-data-viz/theme-integration.ts +0 -134
- package/src/d0-data-viz/types.ts +0 -53
- package/src/editor/index.ts +0 -2
- package/src/entity-graph-view/types.ts +0 -364
- package/src/epistemic/types.ts +0 -134
- package/src/epistemic/utils.ts +0 -32
- package/src/f0-forms/validation/validate.ts +0 -47
- package/src/fabric/data/index.ts +0 -21
- package/src/fabric/feedback/ToastContainer.svelte +0 -122
- package/src/fabric/input/CommandBar.svelte +0 -79
- package/src/fabric/layout/GlassBox.svelte +0 -193
- package/src/index.ts +0 -68
- package/src/l0-layout/block-writer/block-writer-types.ts +0 -63
- package/src/l0-layout/block-writer/markdown.ts +0 -110
- package/src/l0-layout/grove/grove-types.ts +0 -29
- package/src/n0-node-graph/node-port-types.ts +0 -19
- package/src/n0-node-graph/types.ts +0 -96
- package/src/n0-node-graph/validate.test.ts +0 -722
- package/src/n0-node-graph/validate.ts +0 -371
- package/src/n1-flow-canvas/graph-state.svelte.ts +0 -95
- package/src/n1-flow-canvas/layout.ts +0 -118
- package/src/n1-flow-canvas/layout.worker.ts +0 -128
- package/src/n1-flow-canvas/types.ts +0 -102
- package/src/n1-flow-canvas/utils.ts +0 -146
- package/src/n2-manifold-disk/poincare.ts +0 -184
- package/src/n3-force-graph/animated-edge.ts +0 -107
- package/src/n3-force-graph/health-node.ts +0 -128
- package/src/n3-force-graph/types.ts +0 -94
- package/src/n4-adaptive-manifold/classifier.ts +0 -139
- package/src/n4-adaptive-manifold/orchestrator.ts +0 -301
- package/src/n4-adaptive-manifold/phase-theme.ts +0 -92
- package/src/n4-adaptive-manifold/pinnacle-events.ts +0 -135
- package/src/n4-adaptive-manifold/providers/gravitational-provider.ts +0 -191
- package/src/n4-adaptive-manifold/providers/manifold-provider.ts +0 -276
- package/src/n4-adaptive-manifold/transition.ts +0 -90
- package/src/n4-adaptive-manifold/types.ts +0 -313
- package/src/p0-primitives/tokens/index.ts +0 -6
- package/src/p0-primitives/types/index.ts +0 -123
- package/src/p0-primitives/types/plugin-types.ts +0 -74
- package/src/p0-primitives/utils/index.ts +0 -39
- package/src/platform/hud-protocol.ts +0 -20
- package/src/s0-state/create-store.ts +0 -84
- package/src/s0-state/derived.ts +0 -41
- package/src/s0-state/index.ts +0 -6
- package/src/spatial/BspTilingCanvas.svelte +0 -232
- package/src/spatial/ForceCanvas.svelte +0 -289
- package/src/spatial/SnapZoomCamera.svelte +0 -185
- package/src/spatial/camera-types.ts +0 -45
- package/src/spatial/content-proportional-bsp.ts +0 -253
- package/src/spatial/force-canvas-types.ts +0 -102
- package/src/spatial/lod-types.ts +0 -70
- package/src/spatial/zone-tiler-types.ts +0 -177
- package/src/t0-transport/connection.ts +0 -34
- package/src/t0-transport/error.ts +0 -37
- package/src/t0-transport/events.ts +0 -50
- package/src/t0-transport/index.ts +0 -6
- package/src/t0-transport/invoke.ts +0 -30
- package/src/u0-primitives/allay-gauge/AllayGauge.svelte +0 -90
- package/src/u0-primitives/allay-gauge/index.ts +0 -1
- package/src/u0-primitives/animated-icon/index.ts +0 -31
- package/src/u0-primitives/assay-badge/AssayBadge.svelte +0 -121
- package/src/u0-primitives/assay-badge/AssaySignalBar.svelte +0 -83
- package/src/u0-primitives/assay-badge/index.ts +0 -2
- package/src/u0-primitives/expert-badge/ExpertBadge.svelte +0 -89
- package/src/u0-primitives/expert-badge/index.ts +0 -1
- package/src/u0-primitives/input/Input.svelte +0 -237
- package/src/u0-primitives/tabs/tabs-types.ts +0 -11
- package/src/v0-diagrams/types.ts +0 -28
- package/src/x0-enchanted-blocks/ENCHANTED_BLOCKS_SPEC.md +0 -457
- package/src/x0-enchanted-blocks/core/block-layout.ts +0 -211
- package/src/x0-enchanted-blocks/core/block-types.ts +0 -227
- package/src/x0-enchanted-blocks/index.ts +0 -46
- /package/{src/b0-app-shell/clarification-overlay/index.ts → dist/b0-app-shell/clarification-overlay/index.js} +0 -0
- /package/{src → dist}/demos/ControlRoomDemo.svelte +0 -0
- /package/{src/epistemic/index.ts → dist/epistemic/index.js} +0 -0
- /package/{src/g0-geo/index.ts → dist/g0-geo/index.js} +0 -0
- /package/{src → dist}/l0-layout/block-writer/BlockWriter.svelte +0 -0
- /package/{src → dist}/l0-layout/chat-view/ChatViewLayout.svelte +0 -0
- /package/{src/l0-layout/epistemic/index.ts → dist/l0-layout/epistemic/index.js} +0 -0
- /package/{src → dist}/l0-layout/grove/AccordCard.svelte +0 -0
- /package/{src → dist}/l0-layout/grove/GroveCard.svelte +0 -0
- /package/{src → dist}/l0-layout/grove/MemberBadge.svelte +0 -0
- /package/{src → dist}/l0-layout/grove/MemberList.svelte +0 -0
- /package/{src → dist}/l0-layout/kanban/KanbanCard.svelte +0 -0
- /package/{src → dist}/l0-layout/kanban/KanbanViewLayout.svelte +0 -0
- /package/{src → dist}/l0-layout/workspace/WorkspaceLayout.svelte +0 -0
- /package/{src → dist}/n0-node-graph/GraphEditor.svelte +0 -0
- /package/{src → dist}/n0-node-graph/GraphHistory.svelte +0 -0
- /package/{src → dist}/n0-node-graph/NodeCanvas.svelte +0 -0
- /package/{src → dist}/n0-node-graph/NodeEdge.svelte +0 -0
- /package/{src → dist}/n0-node-graph/NodePort.svelte +0 -0
- /package/{src → dist}/n2-manifold-disk/ManifoldDisk.svelte +0 -0
- /package/{src → dist}/n3-force-graph/GraphTooltip.svelte +0 -0
- /package/{src → dist}/stores/vaultStore.svelte +0 -0
- /package/{src/u0-primitives/modal/index.ts → dist/u0-primitives/modal/index.js} +0 -0
- /package/{src → dist}/v0-diagrams/MarkmapDiagram.svelte +0 -0
- /package/{src → dist}/v0-diagrams/MermaidDiagram.svelte +0 -0
- /package/{src → dist}/vite-env.d.ts +0 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme Utilities
|
|
3
|
+
*
|
|
4
|
+
* Factory functions for creating and composing themes.
|
|
5
|
+
*
|
|
6
|
+
* ADR: 2026-05-04-openui-generative-ui-integration
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Create a theme by merging overrides with a base theme
|
|
10
|
+
*/
|
|
11
|
+
export function createTheme(base, overrides) {
|
|
12
|
+
return {
|
|
13
|
+
...base,
|
|
14
|
+
...overrides,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Default dark theme — Neo-brutalist industrial
|
|
19
|
+
* Charcoal surfaces, brass accent, telemetry palette
|
|
20
|
+
*/
|
|
21
|
+
export const defaultDarkTheme = {
|
|
22
|
+
// Backgrounds (charcoal depth)
|
|
23
|
+
colorBgPrimary: '#0b0d0f',
|
|
24
|
+
colorBgSecondary: '#121518',
|
|
25
|
+
colorBgTertiary: '#181c20',
|
|
26
|
+
colorBgPanelElevated: '#20252a',
|
|
27
|
+
colorBgInset: '#0a0a0a',
|
|
28
|
+
// Foregrounds (warm silkscreen on dark)
|
|
29
|
+
colorFgPrimary: '#e8e0d0',
|
|
30
|
+
colorFgSecondary: '#a8a08c',
|
|
31
|
+
colorFgTertiary: '#6b6558',
|
|
32
|
+
colorFgMuted: '#3a3630',
|
|
33
|
+
// Accent (brass — energized signal, use sparingly)
|
|
34
|
+
colorAccent: '#b87333',
|
|
35
|
+
colorAccentHover: '#d4892f',
|
|
36
|
+
colorAccentActive: '#8a5526',
|
|
37
|
+
colorAccentSubtle: 'rgba(184, 115, 51, 0.08)',
|
|
38
|
+
colorAccentGlow: 'rgba(184, 115, 51, 0.28)',
|
|
39
|
+
colorAccentMuted: 'rgba(184, 115, 51, 0.16)',
|
|
40
|
+
colorAccentFaint: 'rgba(184, 115, 51, 0.04)',
|
|
41
|
+
// Telemetry
|
|
42
|
+
colorSuccess: '#4fa8a2',
|
|
43
|
+
colorWarning: '#d4a04c',
|
|
44
|
+
colorError: '#c14a4a',
|
|
45
|
+
colorInfo: '#5b8db8',
|
|
46
|
+
// Typography
|
|
47
|
+
fontSans: "'Outfit', system-ui, -apple-system, sans-serif",
|
|
48
|
+
fontMono: "'JetBrains Mono', 'Fira Code', ui-monospace, monospace",
|
|
49
|
+
// Animation
|
|
50
|
+
durationFast: '100ms',
|
|
51
|
+
durationNormal: '200ms',
|
|
52
|
+
durationSlow: '300ms',
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Default light theme — warm desk surface
|
|
56
|
+
*/
|
|
57
|
+
export const defaultLightTheme = {
|
|
58
|
+
// Backgrounds (warm desk)
|
|
59
|
+
colorBgPrimary: '#d4d0c8',
|
|
60
|
+
colorBgSecondary: '#e8e4dc',
|
|
61
|
+
colorBgTertiary: '#c9c5bd',
|
|
62
|
+
colorBgPanelElevated: '#d9d5cd',
|
|
63
|
+
colorBgInset: '#bfbbb3',
|
|
64
|
+
// Foregrounds (dark on light)
|
|
65
|
+
colorFgPrimary: '#2a2a2a',
|
|
66
|
+
colorFgSecondary: '#5a5a5a',
|
|
67
|
+
colorFgTertiary: '#8a8a8a',
|
|
68
|
+
colorFgMuted: '#a0a0a0',
|
|
69
|
+
// Accent (brass — same in both modes)
|
|
70
|
+
colorAccent: '#b87333',
|
|
71
|
+
colorAccentHover: '#c9894f',
|
|
72
|
+
colorAccentActive: '#9a5f2a',
|
|
73
|
+
colorAccentSubtle: 'rgba(184, 115, 51, 0.12)',
|
|
74
|
+
colorAccentGlow: 'rgba(184, 115, 51, 0.2)',
|
|
75
|
+
colorAccentMuted: 'rgba(184, 115, 51, 0.15)',
|
|
76
|
+
colorAccentFaint: 'rgba(184, 115, 51, 0.06)',
|
|
77
|
+
// Feedback
|
|
78
|
+
colorSuccess: '#5a8a6e',
|
|
79
|
+
colorWarning: '#b8956b',
|
|
80
|
+
colorError: '#a65e5e',
|
|
81
|
+
colorInfo: '#6b8a9c',
|
|
82
|
+
// Typography
|
|
83
|
+
fontSans: "'Outfit', system-ui, -apple-system, sans-serif",
|
|
84
|
+
fontMono: "'JetBrains Mono', 'Fira Code', ui-monospace, monospace",
|
|
85
|
+
// Animation
|
|
86
|
+
durationFast: '100ms',
|
|
87
|
+
durationNormal: '200ms',
|
|
88
|
+
durationSlow: '300ms',
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Control Room theme — terminal green / CRT aesthetic (opt-in alternate)
|
|
92
|
+
*/
|
|
93
|
+
export const controlRoomTheme = {
|
|
94
|
+
colorBgPrimary: '#0a0a0a',
|
|
95
|
+
colorBgSecondary: '#111111',
|
|
96
|
+
colorBgTertiary: '#141414',
|
|
97
|
+
colorBgPanelElevated: '#1a1a1a',
|
|
98
|
+
colorBgInset: '#080808',
|
|
99
|
+
colorFgPrimary: '#e8e8e8',
|
|
100
|
+
colorFgSecondary: '#888888',
|
|
101
|
+
colorFgTertiary: '#555555',
|
|
102
|
+
colorFgMuted: '#333333',
|
|
103
|
+
colorAccent: '#00ff41',
|
|
104
|
+
colorAccentHover: '#33ff66',
|
|
105
|
+
colorAccentActive: '#00cc33',
|
|
106
|
+
colorAccentSubtle: 'rgba(0, 255, 65, 0.1)',
|
|
107
|
+
colorAccentGlow: 'rgba(0, 255, 65, 0.3)',
|
|
108
|
+
colorAccentMuted: 'rgba(0, 255, 65, 0.2)',
|
|
109
|
+
colorAccentFaint: 'rgba(0, 255, 65, 0.05)',
|
|
110
|
+
colorSuccess: '#00ff41',
|
|
111
|
+
colorWarning: '#ff8c00',
|
|
112
|
+
colorError: '#ff3131',
|
|
113
|
+
colorInfo: '#00bfff',
|
|
114
|
+
fontSans: "'JetBrains Mono', 'IBM Plex Mono', 'Fira Code', ui-monospace, monospace",
|
|
115
|
+
fontMono: "'JetBrains Mono', 'IBM Plex Mono', 'Fira Code', ui-monospace, monospace",
|
|
116
|
+
durationFast: '50ms',
|
|
117
|
+
durationNormal: '100ms',
|
|
118
|
+
durationSlow: '150ms',
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Brass accent theme variant — warm metallic (preserved for compatibility)
|
|
122
|
+
*/
|
|
123
|
+
export const brassAccentTheme = createTheme(defaultDarkTheme, {
|
|
124
|
+
colorAccent: '#b87333',
|
|
125
|
+
colorAccentHover: '#d4892f',
|
|
126
|
+
colorAccentActive: '#8a5526',
|
|
127
|
+
colorAccentSubtle: 'rgba(184, 115, 51, 0.08)',
|
|
128
|
+
});
|
|
129
|
+
/**
|
|
130
|
+
* Copper accent theme variant — reddish metallic (preserved for compatibility)
|
|
131
|
+
*/
|
|
132
|
+
export const copperAccentTheme = createTheme(defaultDarkTheme, {
|
|
133
|
+
colorAccent: '#b87333',
|
|
134
|
+
colorAccentHover: '#c98444',
|
|
135
|
+
colorAccentActive: '#a05f2a',
|
|
136
|
+
colorAccentSubtle: 'rgba(184, 115, 51, 0.08)',
|
|
137
|
+
});
|
|
138
|
+
/**
|
|
139
|
+
* High contrast accessibility theme
|
|
140
|
+
*/
|
|
141
|
+
export const highContrastTheme = createTheme(defaultDarkTheme, {
|
|
142
|
+
colorBgPrimary: '#000000',
|
|
143
|
+
colorBgSecondary: '#111111',
|
|
144
|
+
colorFgPrimary: '#ffffff',
|
|
145
|
+
colorFgSecondary: '#eeeeee',
|
|
146
|
+
colorFgMuted: '#aaaaaa',
|
|
147
|
+
colorAccent: '#ffcc00',
|
|
148
|
+
colorAccentHover: '#ffdd33',
|
|
149
|
+
colorAccentActive: '#e6b800',
|
|
150
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
interface RGB {
|
|
2
|
+
r: number;
|
|
3
|
+
g: number;
|
|
4
|
+
b: number;
|
|
5
|
+
alpha: number;
|
|
6
|
+
}
|
|
7
|
+
/** Parse hex color (#rgb, #rrggbb) to RGB */
|
|
8
|
+
export declare function parseHex(hex: string): RGB | null;
|
|
9
|
+
/** Parse rgb(r,g,b) or rgba(r,g,b,a) to RGB */
|
|
10
|
+
export declare function parseRgb(func: string): RGB | null;
|
|
11
|
+
/** Parse HSLA colors */
|
|
12
|
+
export declare function parseHsl(func: string): RGB | null;
|
|
13
|
+
/** Parse any CSS color to RGB */
|
|
14
|
+
export declare function parseColor(value: string): RGB | null;
|
|
15
|
+
export declare function sRGBtoLinear(c: number): number;
|
|
16
|
+
export declare function relativeLuminance(rgb: RGB): number;
|
|
17
|
+
export declare function contrastRatio(a: RGB, b: RGB): number;
|
|
18
|
+
interface AuditResult {
|
|
19
|
+
name: string;
|
|
20
|
+
fg: string;
|
|
21
|
+
bg: string;
|
|
22
|
+
fgResolved: string;
|
|
23
|
+
bgResolved: string;
|
|
24
|
+
ratio: number;
|
|
25
|
+
required: number;
|
|
26
|
+
pass: boolean;
|
|
27
|
+
type: string;
|
|
28
|
+
decorative: boolean;
|
|
29
|
+
status: 'pass' | 'fail' | 'warn';
|
|
30
|
+
}
|
|
31
|
+
export declare function extractCSSVariables(cssContent: string): Map<string, string>;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve CSS variable references with full chain traversal.
|
|
34
|
+
* Handles nested var(--a, var(--b, default)) patterns.
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveVarValue(value: string, variables: Map<string, string>, depth?: number): string;
|
|
37
|
+
/** Run contrast checks on all defined token pairs */
|
|
38
|
+
export declare function auditContrast(cssContent: string): AuditResult[];
|
|
39
|
+
/** Format audit results for terminal output */
|
|
40
|
+
export declare function formatAuditReport(results: AuditResult[]): string;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=contrast-audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contrast-audit.d.ts","sourceRoot":"","sources":["../../../src/p0-primitives/tokens/contrast-audit.ts"],"names":[],"mappings":"AAoBA,UAAU,GAAG;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6CAA6C;AAC7C,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAchD;AAED,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAejD;AAED,wBAAwB;AACxB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAgCjD;AAED,iCAAiC;AACjC,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAMpD;AAMD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAMlD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAMpD;AAwDD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAY3E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,SAAI,GAAG,MAAM,CAsBhG;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE,CAqD/D;AAED,+CAA+C;AAC/C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAmDhE"}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
// @ts-nocheck — Node-only script (runs via tsx); uses fs/path/url/process
|
|
2
|
+
// Contrast Audit — WCAG color contrast validation for design system tokens
|
|
3
|
+
// Runs in Node via tsx; can also be used as a vitest test module
|
|
4
|
+
//
|
|
5
|
+
// Checks all foreground/background token pairs against WCAG 2.2 AA:
|
|
6
|
+
// - Normal text: contrast ratio >= 4.5:1
|
|
7
|
+
// - Large text (>=18px or >=14px bold): contrast ratio >= 3:1
|
|
8
|
+
// - UI components & borders: contrast ratio >= 3:1
|
|
9
|
+
//
|
|
10
|
+
// Related: LEAP-PRINCIPIA-v4 S-03 (semantic conservation),
|
|
11
|
+
// leap-frontend-hardening-2026-05-12.md item E
|
|
12
|
+
import { readFileSync, existsSync } from 'fs';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import { fileURLToPath } from 'url';
|
|
15
|
+
/** Parse hex color (#rgb, #rrggbb) to RGB */
|
|
16
|
+
export function parseHex(hex) {
|
|
17
|
+
hex = hex.trim().replace(/^#/, '');
|
|
18
|
+
if (hex.length === 3) {
|
|
19
|
+
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
|
|
20
|
+
}
|
|
21
|
+
if (hex.length !== 6)
|
|
22
|
+
return null;
|
|
23
|
+
const n = parseInt(hex, 16);
|
|
24
|
+
if (isNaN(n))
|
|
25
|
+
return null;
|
|
26
|
+
return {
|
|
27
|
+
r: (n >> 16) & 0xff,
|
|
28
|
+
g: (n >> 8) & 0xff,
|
|
29
|
+
b: n & 0xff,
|
|
30
|
+
alpha: 1,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** Parse rgb(r,g,b) or rgba(r,g,b,a) to RGB */
|
|
34
|
+
export function parseRgb(func) {
|
|
35
|
+
const match = func.match(/^rgba?\(\s*(\d+(?:\.\d+)?%?)\s*,\s*(\d+(?:\.\d+)?%?)\s*,\s*(\d+(?:\.\d+)?%?)(?:\s*,\s*([0-9.]+))?\s*\)$/i);
|
|
36
|
+
if (!match)
|
|
37
|
+
return null;
|
|
38
|
+
const toByte = (v) => {
|
|
39
|
+
const num = parseFloat(v);
|
|
40
|
+
return v.endsWith('%') ? Math.round((num / 100) * 255) : Math.min(255, Math.max(0, Math.round(num)));
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
r: toByte(match[1]),
|
|
44
|
+
g: toByte(match[2]),
|
|
45
|
+
b: toByte(match[3]),
|
|
46
|
+
alpha: match[4] !== undefined ? parseFloat(match[4]) : 1,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Parse HSLA colors */
|
|
50
|
+
export function parseHsl(func) {
|
|
51
|
+
const match = func.match(/^hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?%?)\s*,\s*(\d+(?:\.\d+)?%?)(?:\s*,\s*([0-9.]+))?\s*\)$/i);
|
|
52
|
+
if (!match)
|
|
53
|
+
return null;
|
|
54
|
+
const h = parseFloat(match[1]) / 360;
|
|
55
|
+
const s = parseFloat(match[2]) / (match[2].endsWith('%') ? 100 : 1);
|
|
56
|
+
const l = parseFloat(match[3]) / (match[3].endsWith('%') ? 100 : 1);
|
|
57
|
+
const hue2rgb = (p, q, t) => {
|
|
58
|
+
if (t < 0)
|
|
59
|
+
t += 1;
|
|
60
|
+
if (t > 1)
|
|
61
|
+
t -= 1;
|
|
62
|
+
if (t < 1 / 6)
|
|
63
|
+
return p + (q - p) * 6 * t;
|
|
64
|
+
if (t < 1 / 2)
|
|
65
|
+
return q;
|
|
66
|
+
if (t < 2 / 3)
|
|
67
|
+
return p + (q - p) * (2 / 3 - t) * 6;
|
|
68
|
+
return p;
|
|
69
|
+
};
|
|
70
|
+
let r, g, b;
|
|
71
|
+
if (s === 0) {
|
|
72
|
+
r = g = b = l;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
|
|
76
|
+
const p = 2 * l - q;
|
|
77
|
+
r = hue2rgb(p, q, h + 1 / 3);
|
|
78
|
+
g = hue2rgb(p, q, h);
|
|
79
|
+
b = hue2rgb(p, q, h - 1 / 3);
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
r: Math.round(r * 255),
|
|
83
|
+
g: Math.round(g * 255),
|
|
84
|
+
b: Math.round(b * 255),
|
|
85
|
+
alpha: match[4] !== undefined ? parseFloat(match[4]) : 1,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/** Parse any CSS color to RGB */
|
|
89
|
+
export function parseColor(value) {
|
|
90
|
+
value = value.trim();
|
|
91
|
+
if (value.startsWith('#'))
|
|
92
|
+
return parseHex(value);
|
|
93
|
+
if (value.startsWith('rgb'))
|
|
94
|
+
return parseRgb(value);
|
|
95
|
+
if (value.startsWith('hsl'))
|
|
96
|
+
return parseHsl(value);
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// 2. Relative luminance and contrast ratio (WCAG 2.2)
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
export function sRGBtoLinear(c) {
|
|
103
|
+
c = c / 255;
|
|
104
|
+
return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
|
|
105
|
+
}
|
|
106
|
+
export function relativeLuminance(rgb) {
|
|
107
|
+
const adjustAlpha = (c) => c * rgb.alpha + 0 * (1 - rgb.alpha);
|
|
108
|
+
const r = sRGBtoLinear(adjustAlpha(rgb.r));
|
|
109
|
+
const g = sRGBtoLinear(adjustAlpha(rgb.g));
|
|
110
|
+
const b = sRGBtoLinear(adjustAlpha(rgb.b));
|
|
111
|
+
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
112
|
+
}
|
|
113
|
+
export function contrastRatio(a, b) {
|
|
114
|
+
const lumA = relativeLuminance(a);
|
|
115
|
+
const lumB = relativeLuminance(b);
|
|
116
|
+
const lighter = Math.max(lumA, lumB);
|
|
117
|
+
const darker = Math.min(lumA, lumB);
|
|
118
|
+
return lighter === darker ? 1 : (lighter + 0.05) / (darker + 0.05);
|
|
119
|
+
}
|
|
120
|
+
const TOKEN_PAIRS = [
|
|
121
|
+
// Normal text — 4.5:1 required
|
|
122
|
+
{ name: 'text-primary on bg-primary', fg: '--color-text-primary', bg: '--color-bg-primary', minRatio: 4.5, type: 'normal' },
|
|
123
|
+
{ name: 'text-secondary on bg-primary', fg: '--color-text-secondary', bg: '--color-bg-primary', minRatio: 4.5, type: 'normal' },
|
|
124
|
+
{ name: 'text-primary on bg-secondary', fg: '--color-text-primary', bg: '--color-bg-secondary', minRatio: 4.5, type: 'normal' },
|
|
125
|
+
{ name: 'text-secondary on bg-secondary', fg: '--color-text-secondary', bg: '--color-bg-secondary', minRatio: 4.5, type: 'normal' },
|
|
126
|
+
{ name: 'text-primary on bg-panel', fg: '--color-text-primary', bg: '--color-bg-panel', minRatio: 4.5, type: 'normal' },
|
|
127
|
+
{ name: 'text-secondary on bg-panel', fg: '--color-text-secondary', bg: '--color-bg-panel', minRatio: 4.5, type: 'normal' },
|
|
128
|
+
{ name: 'accent on bg-primary', fg: '--color-accent', bg: '--color-bg-primary', minRatio: 4.5, type: 'normal' },
|
|
129
|
+
{ name: 'success on bg-primary', fg: '--color-success', bg: '--color-bg-primary', minRatio: 4.5, type: 'normal' },
|
|
130
|
+
{ name: 'warning on bg-primary', fg: '--color-warning', bg: '--color-bg-primary', minRatio: 4.5, type: 'normal' },
|
|
131
|
+
{ name: 'error on bg-primary', fg: '--color-error', bg: '--color-bg-primary', minRatio: 4.5, type: 'normal' },
|
|
132
|
+
{ name: 'info on bg-primary', fg: '--color-info', bg: '--color-bg-primary', minRatio: 4.5, type: 'normal' },
|
|
133
|
+
{ name: 'text-primary on bg-canvas', fg: '--color-text-primary', bg: '--color-bg-canvas', minRatio: 4.5, type: 'normal' },
|
|
134
|
+
{ name: 'text-primary on card-bg', fg: '--color-text-primary', bg: '--color-card-bg', minRatio: 4.5, type: 'normal' },
|
|
135
|
+
{ name: 'text-primary on bg-elevated', fg: '--color-text-primary', bg: '--color-bg-elevated', minRatio: 4.5, type: 'normal' },
|
|
136
|
+
{ name: 'text-primary on bg-app', fg: '--color-text-primary', bg: '--color-bg-app', minRatio: 4.5, type: 'normal' },
|
|
137
|
+
{ name: 'validity-high on bg-primary', fg: '--validity-high', bg: '--color-bg-primary', minRatio: 4.5, type: 'normal' },
|
|
138
|
+
{ name: 'validity-critical on bg-primary', fg: '--validity-critical', bg: '--color-bg-primary', minRatio: 4.5, type: 'normal' },
|
|
139
|
+
{ name: 'text-inverse on accent', fg: '--color-text-inverse', bg: '--color-accent', minRatio: 4.5, type: 'normal' },
|
|
140
|
+
// Large text / secondary — 3:1 required
|
|
141
|
+
{ name: 'text-muted on bg-primary', fg: '--color-text-muted', bg: '--color-bg-primary', minRatio: 3, type: 'large' },
|
|
142
|
+
{ name: 'text-muted on bg-secondary', fg: '--color-text-muted', bg: '--color-bg-secondary', minRatio: 3, type: 'large' },
|
|
143
|
+
{ name: 'text-muted on bg-panel', fg: '--color-text-muted', bg: '--color-bg-panel', minRatio: 3, type: 'large' },
|
|
144
|
+
{ name: 'text-muted on bg-canvas', fg: '--color-text-muted', bg: '--color-bg-canvas', minRatio: 3, type: 'large' },
|
|
145
|
+
{ name: 'text-primary on card-bg', fg: '--color-text-primary', bg: '--color-card-bg', minRatio: 4.5, type: 'large' },
|
|
146
|
+
{ name: 'text-secondary on card-bg', fg: '--color-text-secondary', bg: '--color-card-bg', minRatio: 4.5, type: 'large' },
|
|
147
|
+
// UI components — 3:1 required
|
|
148
|
+
{ name: 'border-focus on bg-primary', fg: '--border-focus', bg: '--color-bg-primary', minRatio: 3, type: 'ui' },
|
|
149
|
+
{ name: 'border-default on bg-primary', fg: '--border-default', bg: '--color-bg-primary', minRatio: 3, type: 'ui' },
|
|
150
|
+
{ name: 'text-inverse on accent-bg', fg: '--color-text-inverse', bg: '--color-accent-active', minRatio: 3, type: 'ui' },
|
|
151
|
+
{ name: 'text-muted on bg-elevated', fg: '--color-text-muted', bg: '--color-bg-panel-elevated', minRatio: 3, type: 'ui' },
|
|
152
|
+
// Decorative/ambient — 1.5:1 (informational only, not accessibility-critical)
|
|
153
|
+
{ name: 'border-subtle on bg-primary', fg: '--border-subtle', bg: '--color-bg-primary', minRatio: 1.5, type: 'ui', decorative: true },
|
|
154
|
+
{ name: 'accent-subtle on bg-primary', fg: '--color-accent-subtle', bg: '--color-bg-primary', minRatio: 1.5, type: 'ui', decorative: true },
|
|
155
|
+
];
|
|
156
|
+
export function extractCSSVariables(cssContent) {
|
|
157
|
+
// Strip CSS comments before parsing
|
|
158
|
+
const clean = cssContent.replace(/\/\*[\s\S]*?\*\//g, '');
|
|
159
|
+
const vars = new Map();
|
|
160
|
+
const regex = /--([a-zA-Z0-9-]+)\s*:\s*([^;]+?)(?=\s*(?:;|$))/g;
|
|
161
|
+
let match;
|
|
162
|
+
while ((match = regex.exec(clean)) !== null) {
|
|
163
|
+
const name = '--' + match[1];
|
|
164
|
+
const value = match[2].trim();
|
|
165
|
+
vars.set(name, value);
|
|
166
|
+
}
|
|
167
|
+
return vars;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Resolve CSS variable references with full chain traversal.
|
|
171
|
+
* Handles nested var(--a, var(--b, default)) patterns.
|
|
172
|
+
*/
|
|
173
|
+
export function resolveVarValue(value, variables, depth = 0) {
|
|
174
|
+
if (depth > 20)
|
|
175
|
+
return value;
|
|
176
|
+
return value.replace(/var\(([^)]+)\)/g, (_, inner) => {
|
|
177
|
+
const parts = inner.split(',').map((p) => p.trim());
|
|
178
|
+
const varName = parts[0].trim();
|
|
179
|
+
const fallback = parts.length > 1 ? parts.slice(1).join(',') : undefined;
|
|
180
|
+
// Normalize: some vars in tokens.css lack the -- prefix in var() references
|
|
181
|
+
const lookupName = varName.startsWith('--') ? varName : '--' + varName;
|
|
182
|
+
const resolved = variables.get(lookupName);
|
|
183
|
+
if (resolved !== undefined) {
|
|
184
|
+
return resolveVarValue(resolved, variables, depth + 1);
|
|
185
|
+
}
|
|
186
|
+
if (fallback !== undefined) {
|
|
187
|
+
return resolveVarValue(fallback, variables, depth + 1);
|
|
188
|
+
}
|
|
189
|
+
// If we can't resolve at all, try without -- prefix
|
|
190
|
+
if (lookupName !== varName) {
|
|
191
|
+
const alt = variables.get(varName);
|
|
192
|
+
if (alt !== undefined)
|
|
193
|
+
return resolveVarValue(alt, variables, depth + 1);
|
|
194
|
+
}
|
|
195
|
+
return value;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/** Run contrast checks on all defined token pairs */
|
|
199
|
+
export function auditContrast(cssContent) {
|
|
200
|
+
const variables = extractCSSVariables(cssContent);
|
|
201
|
+
// Also extract from control-room theme if present
|
|
202
|
+
// (both themes share the same variable names in their respective :root scopes)
|
|
203
|
+
return TOKEN_PAIRS.map((pair) => {
|
|
204
|
+
const rawFg = variables.get(pair.fg) ?? '';
|
|
205
|
+
const rawBg = variables.get(pair.bg) ?? '';
|
|
206
|
+
const resolvedFg = resolveVarValue(rawFg, variables);
|
|
207
|
+
const resolvedBg = resolveVarValue(rawBg, variables);
|
|
208
|
+
const fgColor = parseColor(resolvedFg);
|
|
209
|
+
const bgColor = parseColor(resolvedBg);
|
|
210
|
+
let ratio = 0;
|
|
211
|
+
let pass = false;
|
|
212
|
+
let status = 'pass';
|
|
213
|
+
if (fgColor && bgColor) {
|
|
214
|
+
ratio = contrastRatio(fgColor, bgColor);
|
|
215
|
+
pass = ratio >= pair.minRatio;
|
|
216
|
+
if (pass && pair.type === 'normal' && ratio < pair.minRatio * 1.15) {
|
|
217
|
+
status = 'warn';
|
|
218
|
+
}
|
|
219
|
+
else if (pass) {
|
|
220
|
+
status = 'pass';
|
|
221
|
+
}
|
|
222
|
+
else if (pair.decorative) {
|
|
223
|
+
status = 'warn';
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
status = 'fail';
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// Can't resolve colors — mark as fail with 0 ratio
|
|
231
|
+
ratio = 0;
|
|
232
|
+
pass = false;
|
|
233
|
+
status = 'fail';
|
|
234
|
+
}
|
|
235
|
+
return {
|
|
236
|
+
name: pair.name,
|
|
237
|
+
fg: pair.fg,
|
|
238
|
+
bg: pair.bg,
|
|
239
|
+
fgResolved: resolvedFg,
|
|
240
|
+
bgResolved: resolvedBg,
|
|
241
|
+
ratio: Math.round(ratio * 100) / 100,
|
|
242
|
+
required: pair.minRatio,
|
|
243
|
+
pass,
|
|
244
|
+
type: pair.type,
|
|
245
|
+
decorative: !!pair.decorative,
|
|
246
|
+
status,
|
|
247
|
+
};
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
/** Format audit results for terminal output */
|
|
251
|
+
export function formatAuditReport(results) {
|
|
252
|
+
const failures = results.filter((r) => r.status === 'fail');
|
|
253
|
+
const warnings = results.filter((r) => r.status === 'warn');
|
|
254
|
+
const passes = results.filter((r) => r.status === 'pass');
|
|
255
|
+
let output = '\n';
|
|
256
|
+
output += '═══════════════════════════════════════════════════════════════════\n';
|
|
257
|
+
output += ' COLOR CONTRAST AUDIT — Design System Token Palette\n';
|
|
258
|
+
output += ' WCAG 2.2 AA Compliance Check\n';
|
|
259
|
+
output += '═══════════════════════════════════════════════════════════════════\n\n';
|
|
260
|
+
if (failures.length === 0) {
|
|
261
|
+
output += ' ✅ ALL CONTRAST CHECKS PASSED\n\n';
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
output += ` ❌ ${failures.length} FAILURES FOUND\n\n`;
|
|
265
|
+
}
|
|
266
|
+
// Summary table
|
|
267
|
+
output += ' Token Pair │ Ratio │ Req │ Status\n';
|
|
268
|
+
output += ' ─────────────────────────────────────────│──────│──────│──────\n';
|
|
269
|
+
for (const r of results) {
|
|
270
|
+
let status;
|
|
271
|
+
if (r.status === 'pass')
|
|
272
|
+
status = '✅ PASS';
|
|
273
|
+
else if (r.status === 'fail')
|
|
274
|
+
status = '❌ FAIL';
|
|
275
|
+
else
|
|
276
|
+
status = '⚠️ WARN';
|
|
277
|
+
output += ` ${r.name.padEnd(39)}│ ${r.ratio.toFixed(2).padStart(6)} │ ${r.required.toFixed(1).padStart(5)} │ ${status}\n`;
|
|
278
|
+
}
|
|
279
|
+
if (failures.length > 0) {
|
|
280
|
+
output += `\n ❌ FAILURES:\n`;
|
|
281
|
+
for (const f of failures) {
|
|
282
|
+
output += ` - ${f.name}: ${f.ratio.toFixed(2)}:1 (need ${f.required}:1)\n`;
|
|
283
|
+
output += ` Fg: ${f.fgResolved} | Bg: ${f.bgResolved}\n`;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (warnings.length > 0) {
|
|
287
|
+
output += `\n ⚠️ WARNINGS (${warnings.length} marginal or decorative):\n`;
|
|
288
|
+
for (const w of warnings) {
|
|
289
|
+
output += ` - ${w.name} (${w.ratio.toFixed(2)}:1 vs ${w.required}:1 required)`;
|
|
290
|
+
if (w.decorative)
|
|
291
|
+
output += ' [decorative]';
|
|
292
|
+
output += '\n';
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
output += '\n ───────────────────────────────────────────────────────────────\n';
|
|
296
|
+
output += ` Total: ${results.length} | Passed: ${passes.length} | Warned: ${warnings.length} | Failed: ${failures.length}\n`;
|
|
297
|
+
output += '═══════════════════════════════════════════════════════════════════\n';
|
|
298
|
+
return output;
|
|
299
|
+
}
|
|
300
|
+
// ---------------------------------------------------------------------------
|
|
301
|
+
// 5. CLI entry point
|
|
302
|
+
// ---------------------------------------------------------------------------
|
|
303
|
+
async function main() {
|
|
304
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
305
|
+
const __dirname = path.dirname(__filename);
|
|
306
|
+
const cssFiles = [
|
|
307
|
+
path.resolve(__dirname, './tokens.css'),
|
|
308
|
+
path.resolve(__dirname, './validity-tokens.css'),
|
|
309
|
+
];
|
|
310
|
+
let combinedCss = '';
|
|
311
|
+
for (const cssPath of cssFiles) {
|
|
312
|
+
if (!existsSync(cssPath)) {
|
|
313
|
+
console.error(`Token file not found: ${cssPath}`);
|
|
314
|
+
return 1;
|
|
315
|
+
}
|
|
316
|
+
combinedCss += readFileSync(cssPath, 'utf-8') + '\n';
|
|
317
|
+
}
|
|
318
|
+
const results = auditContrast(combinedCss);
|
|
319
|
+
console.log(formatAuditReport(results));
|
|
320
|
+
const failures = results.filter((r) => r.status === 'fail');
|
|
321
|
+
if (failures.length > 0) {
|
|
322
|
+
return 1;
|
|
323
|
+
}
|
|
324
|
+
return 0;
|
|
325
|
+
}
|
|
326
|
+
if (process.argv[1] && process.argv[1].includes('contrast-audit')) {
|
|
327
|
+
main().then((code) => process.exit(code)).catch((e) => {
|
|
328
|
+
console.error(e);
|
|
329
|
+
process.exit(1);
|
|
330
|
+
});
|
|
331
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// Tests for the WCAG color contrast audit
|
|
2
|
+
import { describe, it, expect } from 'vitest';
|
|
3
|
+
import { parseHex, parseRgb, parseHsl, parseColor, sRGBtoLinear, relativeLuminance, contrastRatio, auditContrast, formatAuditReport, extractCSSVariables, resolveVarValue, } from './index';
|
|
4
|
+
describe('Color parsing', () => {
|
|
5
|
+
it('parses hex colors', () => {
|
|
6
|
+
expect(parseHex('#0b0d0f')).toEqual({ r: 11, g: 13, b: 15, alpha: 1 });
|
|
7
|
+
expect(parseHex('#fff')).toEqual({ r: 255, g: 255, b: 255, alpha: 1 });
|
|
8
|
+
expect(parseHex('invalid')).toBeNull();
|
|
9
|
+
});
|
|
10
|
+
it('parses rgb() colors', () => {
|
|
11
|
+
expect(parseRgb('rgb(255, 255, 255)')).toEqual({ r: 255, g: 255, b: 255, alpha: 1 });
|
|
12
|
+
expect(parseRgb('rgba(88, 166, 255, 0.12)')).toEqual({ r: 88, g: 166, b: 255, alpha: 0.12 });
|
|
13
|
+
});
|
|
14
|
+
it('parses hsl() colors', () => {
|
|
15
|
+
const result = parseHsl('hsl(210, 50%, 50%)');
|
|
16
|
+
expect(result).not.toBeNull();
|
|
17
|
+
expect(result.r).toBeCloseTo(64, 0);
|
|
18
|
+
expect(result.g).toBeCloseTo(127, 0);
|
|
19
|
+
expect(result.b).toBeCloseTo(191, 0);
|
|
20
|
+
});
|
|
21
|
+
it('returns null for unparseable colors', () => {
|
|
22
|
+
expect(parseColor('not-a-color')).toBeNull();
|
|
23
|
+
expect(parseColor('')).toBeNull();
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('Relative luminance', () => {
|
|
27
|
+
it('computes sRGB linearization correctly', () => {
|
|
28
|
+
expect(sRGBtoLinear(0)).toBe(0);
|
|
29
|
+
expect(sRGBtoLinear(255)).toBeCloseTo(1.0, 4);
|
|
30
|
+
});
|
|
31
|
+
it('computes relative luminance for white', () => {
|
|
32
|
+
expect(relativeLuminance({ r: 255, g: 255, b: 255, alpha: 1 })).toBeCloseTo(1.0, 4);
|
|
33
|
+
});
|
|
34
|
+
it('computes relative luminance for black', () => {
|
|
35
|
+
expect(relativeLuminance({ r: 0, g: 0, b: 0, alpha: 1 })).toBe(0);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('Contrast ratio', () => {
|
|
39
|
+
it('computes ratio for white on black', () => {
|
|
40
|
+
const white = { r: 255, g: 255, b: 255, alpha: 1 };
|
|
41
|
+
const black = { r: 0, g: 0, b: 0, alpha: 1 };
|
|
42
|
+
expect(contrastRatio(white, black)).toBeCloseTo(21, 0);
|
|
43
|
+
});
|
|
44
|
+
it('same color has ratio of 1', () => {
|
|
45
|
+
const c = { r: 128, g: 128, b: 128, alpha: 1 };
|
|
46
|
+
expect(contrastRatio(c, c)).toBe(1);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe('Audit integration', () => {
|
|
50
|
+
const testCss = `
|
|
51
|
+
:root {
|
|
52
|
+
--color-bg-primary: #0b0d0f;
|
|
53
|
+
--color-text-primary: #e8e0d0;
|
|
54
|
+
--color-text-secondary: #a8a08c;
|
|
55
|
+
--color-accent: #b87333;
|
|
56
|
+
--color-success: #4fa8a2;
|
|
57
|
+
--color-bg-panel: #181c20;
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
60
|
+
it('extracts CSS variables from a stylesheet string', () => {
|
|
61
|
+
const vars = extractCSSVariables(testCss);
|
|
62
|
+
expect(vars.get('--color-bg-primary')).toBe('#0b0d0f');
|
|
63
|
+
expect(vars.get('--color-text-primary')).toBe('#e8e0d0');
|
|
64
|
+
});
|
|
65
|
+
it('resolves var() references', () => {
|
|
66
|
+
const vars = new Map([['--color-accent', '#b87333']]);
|
|
67
|
+
expect(resolveVarValue('var(--color-accent)', vars)).toBe('#b87333');
|
|
68
|
+
expect(resolveVarValue('var(--missing, #fff)', vars)).toBe('#fff');
|
|
69
|
+
});
|
|
70
|
+
it('audits token pairs and returns results', () => {
|
|
71
|
+
const results = auditContrast(testCss);
|
|
72
|
+
expect(results.length).toBeGreaterThan(0);
|
|
73
|
+
const bodyText = results.find((r) => r.name.includes('text-primary on bg-primary'));
|
|
74
|
+
expect(bodyText).toBeDefined();
|
|
75
|
+
expect(bodyText.pass).toBe(true);
|
|
76
|
+
expect(bodyText.ratio).toBeGreaterThanOrEqual(4.5);
|
|
77
|
+
});
|
|
78
|
+
it('formats a readable report', () => {
|
|
79
|
+
const results = auditContrast(testCss);
|
|
80
|
+
const report = formatAuditReport(results);
|
|
81
|
+
expect(report).toContain('COLOR CONTRAST AUDIT');
|
|
82
|
+
expect(report).toContain('PASS');
|
|
83
|
+
});
|
|
84
|
+
});
|