@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
|
@@ -1,457 +0,0 @@
|
|
|
1
|
-
# Enchanted Blocks — Unified Spatial Content System
|
|
2
|
-
|
|
3
|
-
## Problem Statement
|
|
4
|
-
|
|
5
|
-
Three KOS apps hit the same wall: **content doesn't fit**, and **enrichment is one-way**.
|
|
6
|
-
|
|
7
|
-
- **Ryu**: Task descriptions, daemon logs, and epistemic assay results overflow their containers. We gave up on rich task content.
|
|
8
|
-
- **Atelier**: Notes can't display KVE bidirectional enrichment. The canvas is static, not living.
|
|
9
|
-
- **Nodepad** (external research): Proved spatial research works—auto-classification, inferred connections, synthesis emergence—but we never integrated it.
|
|
10
|
-
|
|
11
|
-
## Core Insight
|
|
12
|
-
|
|
13
|
-
Content fitting is a **measurement problem**. Enrichment is a **rendering problem**. Both need:
|
|
14
|
-
1. **Deterministic text layout** without DOM reflow (Pretext)
|
|
15
|
-
2. **Adaptive card sizing** that grows/shrinks with content
|
|
16
|
-
3. **Bidirectional value flow** between cards and the KVE
|
|
17
|
-
4. **Three canonical views** for different cognitive modes
|
|
18
|
-
|
|
19
|
-
## Architecture
|
|
20
|
-
|
|
21
|
-
### New Module: `x0-enchanted-blocks`
|
|
22
|
-
|
|
23
|
-
Location: `LEAP/design-system/src/x0-enchanted-blocks/`
|
|
24
|
-
|
|
25
|
-
Exports:
|
|
26
|
-
- `EnchantedBlock` — adaptive card component
|
|
27
|
-
- `EnchantedCanvas` — spatial canvas with three view modes
|
|
28
|
-
- `useBlockEnrichment` — KVE bidirectional hook
|
|
29
|
-
- `BlockClassifier` — auto-type detection (14 types from nodepad)
|
|
30
|
-
- `SynthesisEngine` — emergent bridging sentences
|
|
31
|
-
|
|
32
|
-
### 1. Adaptive Block Sizing (Pretext Integration)
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
// block-layout.ts — DOM-free measurement
|
|
36
|
-
import { prepare, layout } from '@chenglou/pretext';
|
|
37
|
-
|
|
38
|
-
export interface BlockMetrics {
|
|
39
|
-
minWidth: number; // shrink-wrap width
|
|
40
|
-
idealWidth: number; // optimal reading width (~65ch)
|
|
41
|
-
height: number; // measured at target width
|
|
42
|
-
lineCount: number; // for virtualization
|
|
43
|
-
hasOverflow: boolean; // content exceeds max constraints
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export function measureBlock(
|
|
47
|
-
content: string,
|
|
48
|
-
font: string,
|
|
49
|
-
maxWidth: number,
|
|
50
|
-
options?: { whiteSpace?: 'normal' | 'pre-wrap'; wordBreak?: 'normal' | 'keep-all' }
|
|
51
|
-
): BlockMetrics {
|
|
52
|
-
const prepared = prepare(content, font, options);
|
|
53
|
-
const { height, lineCount } = layout(prepared, maxWidth, 1.6 /* lineHeight */);
|
|
54
|
-
|
|
55
|
-
// Shrink-wrap: find tightest width that doesn't increase line count
|
|
56
|
-
const minWidth = measureNaturalWidth(prepared);
|
|
57
|
-
|
|
58
|
-
return { minWidth, idealWidth: Math.min(520, maxWidth), height, lineCount, hasOverflow: height > 400 };
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
**Used by:**
|
|
63
|
-
- `EnchantedBlock.svelte` — auto-height cards with overflow indicators
|
|
64
|
-
- `VirtualCanvas.svelte` — accurate scrollbar/track sizing
|
|
65
|
-
- `KanbanColumn.svelte` — column height pre-calculation
|
|
66
|
-
|
|
67
|
-
### 2. The 14 Block Types (Nodepad Classification)
|
|
68
|
-
|
|
69
|
-
```typescript
|
|
70
|
-
export type BlockType =
|
|
71
|
-
| 'claim' // Asserted truth
|
|
72
|
-
| 'question' // Open inquiry
|
|
73
|
-
| 'idea' // Proposed concept
|
|
74
|
-
| 'task' // Action item (Ryu integration)
|
|
75
|
-
| 'entity' // Named thing (person, org, concept)
|
|
76
|
-
| 'quote' // External citation
|
|
77
|
-
| 'reference' // Link/pointer
|
|
78
|
-
| 'definition' // Term explanation
|
|
79
|
-
| 'opinion' // Subjective stance
|
|
80
|
-
| 'reflection' // Self-aware musing
|
|
81
|
-
| 'narrative' // Story/time sequence
|
|
82
|
-
| 'comparison' // Side-by-side analysis
|
|
83
|
-
| 'thesis' // Synthesized position
|
|
84
|
-
| 'general'; // Unclassified
|
|
85
|
-
|
|
86
|
-
export interface EnchantedBlockData {
|
|
87
|
-
id: string;
|
|
88
|
-
type: BlockType;
|
|
89
|
-
content: string; // Raw user input
|
|
90
|
-
annotation?: string; // AI enrichment (what the note doesn't say)
|
|
91
|
-
provenance: ProvenanceChain; // From Ryu's epistemic system
|
|
92
|
-
connections: BlockConnection[]; // Inferred from content + KVE
|
|
93
|
-
createdAt: number;
|
|
94
|
-
modifiedAt: number;
|
|
95
|
-
// Spatial state (canvas view)
|
|
96
|
-
x?: number;
|
|
97
|
-
y?: number;
|
|
98
|
-
width?: number;
|
|
99
|
-
height?: number;
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Visual encoding:**
|
|
104
|
-
- Color border by type (brass/copper palette)
|
|
105
|
-
- Icon badge (top-left)
|
|
106
|
-
- Annotation appears on hover/focus (subtle expansion)
|
|
107
|
-
- Connections shown as faint lines (opacity ∝ relevance)
|
|
108
|
-
|
|
109
|
-
### 3. Three Canonical Views
|
|
110
|
-
|
|
111
|
-
```typescript
|
|
112
|
-
export type CanvasView = 'tiling' | 'kanban' | 'graph';
|
|
113
|
-
|
|
114
|
-
// Tiling: BSP spatial layout (ZoneTiler)
|
|
115
|
-
// - Blocks auto-size to content
|
|
116
|
-
// - Drag dividers to resize zones
|
|
117
|
-
// - Blocks reflow within zones
|
|
118
|
-
|
|
119
|
-
// Kanban: Columnar by type
|
|
120
|
-
// - Columns: [Unsorted | Claim | Question | Idea | Task | ...]
|
|
121
|
-
// - Drag between columns = reclassify
|
|
122
|
-
// - Column height = sum of measured block heights
|
|
123
|
-
|
|
124
|
-
// Graph: Force-directed (N3 Force Graph)
|
|
125
|
-
// - Nodes = blocks (sized by content)
|
|
126
|
-
// - Edges = inferred connections
|
|
127
|
-
// - Synthesis nodes emerge at high centrality
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### 4. Bidirectional KVE Enrichment
|
|
131
|
-
|
|
132
|
-
```typescript
|
|
133
|
-
// useBlockEnrichment.ts — Svelte 5 runes
|
|
134
|
-
import { prepareWithSegments, walkLineRanges } from '@chenglou/pretext';
|
|
135
|
-
|
|
136
|
-
export function useBlockEnrichment(blockId: string) {
|
|
137
|
-
const enrichment = $state<EnrichmentState>({ status: 'idle' });
|
|
138
|
-
|
|
139
|
-
// Outbound: Block content → KVE
|
|
140
|
-
async function contributeToKVE(content: string, type: BlockType) {
|
|
141
|
-
enrichment.status = 'contributing';
|
|
142
|
-
await ryu_knowledge_ingest({
|
|
143
|
-
content,
|
|
144
|
-
type,
|
|
145
|
-
provenance: { source: 'atelier', blockId }
|
|
146
|
-
});
|
|
147
|
-
enrichment.status = 'idle';
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Inbound: KVE → Block annotation
|
|
151
|
-
async function fetchEnrichment(content: string) {
|
|
152
|
-
enrichment.status = 'enriching';
|
|
153
|
-
const result = await ryu_knowledge_epistemic_detail({ content });
|
|
154
|
-
|
|
155
|
-
// Annotation = "something the note doesn't already say"
|
|
156
|
-
enrichment.annotation = result.insights
|
|
157
|
-
.filter(i => !content.toLowerCase().includes(i.text.toLowerCase()))
|
|
158
|
-
.map(i => i.text)
|
|
159
|
-
.join(' · ');
|
|
160
|
-
|
|
161
|
-
// Inferred connections to other blocks
|
|
162
|
-
enrichment.connections = result.related.map(r => ({
|
|
163
|
-
targetId: r.blockId,
|
|
164
|
-
strength: r.relevance,
|
|
165
|
-
type: r.relationType // 'supports', 'contradicts', 'extends', 'similar'
|
|
166
|
-
}));
|
|
167
|
-
|
|
168
|
-
enrichment.status = 'idle';
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return { enrichment, contributeToKVE, fetchEnrichment };
|
|
172
|
-
}
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
### 5. Synthesis Emergence
|
|
176
|
-
|
|
177
|
-
When enough blocks accumulate (threshold: 5+ with connection density > 0.3), the canvas offers a **synthesis**:
|
|
178
|
-
|
|
179
|
-
```typescript
|
|
180
|
-
export interface Synthesis {
|
|
181
|
-
id: string;
|
|
182
|
-
type: 'thesis';
|
|
183
|
-
content: string; // Single sentence bridging tensions
|
|
184
|
-
bridges: string[]; // Block IDs that this synthesizes
|
|
185
|
-
confidence: number;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// Triggered by: canvas block count change + connection density check
|
|
189
|
-
// Source: ryu_think({ context: blockIds, mode: 'synthesize' })
|
|
190
|
-
// Presentation: Floating pill at canvas center, dismissable
|
|
191
|
-
// Solidify: Click → creates new 'thesis' block, auto-connected to bridged blocks
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### 6. Component: EnchantedBlock
|
|
195
|
-
|
|
196
|
-
```svelte
|
|
197
|
-
<!-- EnchantedBlock.svelte -->
|
|
198
|
-
<script lang="ts">
|
|
199
|
-
import { measureBlock } from './block-layout.js';
|
|
200
|
-
import { useBlockEnrichment } from './useBlockEnrichment.svelte.js';
|
|
201
|
-
|
|
202
|
-
interface Props {
|
|
203
|
-
block: EnchantedBlockData;
|
|
204
|
-
editable?: boolean;
|
|
205
|
-
maxWidth?: number;
|
|
206
|
-
onChange?: (block: EnchantedBlockData) => void;
|
|
207
|
-
onTypeChange?: (type: BlockType) => void;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
let { block, editable = false, maxWidth = 400, onChange, onTypeChange }: Props = $props();
|
|
211
|
-
|
|
212
|
-
// DOM-free measurement
|
|
213
|
-
const metrics = $derived(measureBlock(
|
|
214
|
-
block.content,
|
|
215
|
-
'14px "Sovereign Sans"',
|
|
216
|
-
maxWidth,
|
|
217
|
-
{ whiteSpace: 'pre-wrap' }
|
|
218
|
-
));
|
|
219
|
-
|
|
220
|
-
// KVE enrichment
|
|
221
|
-
const { enrichment, contributeToKVE, fetchEnrichment } = useBlockEnrichment(block.id);
|
|
222
|
-
|
|
223
|
-
// Debounced enrichment on content change
|
|
224
|
-
$effect(() => {
|
|
225
|
-
if (block.content.length > 10) {
|
|
226
|
-
const timer = setTimeout(() => fetchEnrichment(block.content), 500);
|
|
227
|
-
return () => clearTimeout(timer);
|
|
228
|
-
}
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
let isEditing = $state(false);
|
|
232
|
-
let isExpanded = $state(false);
|
|
233
|
-
</script>
|
|
234
|
-
|
|
235
|
-
<div
|
|
236
|
-
class="enchanted-block type-{block.type}"
|
|
237
|
-
style:width="{metrics.idealWidth}px"
|
|
238
|
-
style:min-height="{Math.min(metrics.height, 200)}px"
|
|
239
|
-
class:expanded={isExpanded}
|
|
240
|
-
class:has-annotation={!!enrichment.annotation}
|
|
241
|
-
>
|
|
242
|
-
<!-- Type badge (click to reclassify) -->
|
|
243
|
-
<button class="type-badge" onclick={() => onTypeChange?.(nextType(block.type))}>
|
|
244
|
-
<Icon name={typeIcons[block.type]} />
|
|
245
|
-
<span class="type-label">{block.type}</span>
|
|
246
|
-
</button>
|
|
247
|
-
|
|
248
|
-
<!-- Content -->
|
|
249
|
-
{#if isEditing}
|
|
250
|
-
<div
|
|
251
|
-
contenteditable="true"
|
|
252
|
-
class="block-content editable"
|
|
253
|
-
bind:innerText={block.content}
|
|
254
|
-
onblur={() => { isEditing = false; contributeToKVE(block.content, block.type); }}
|
|
255
|
-
/>
|
|
256
|
-
{:else}
|
|
257
|
-
<div
|
|
258
|
-
class="block-content"
|
|
259
|
-
ondblclick={() => editable && (isEditing = true)}
|
|
260
|
-
>
|
|
261
|
-
{@html renderMarkdown(block.content)}
|
|
262
|
-
</div>
|
|
263
|
-
{/if}
|
|
264
|
-
|
|
265
|
-
<!-- Annotation (appears on hover/focus) -->
|
|
266
|
-
{#if enrichment.annotation}
|
|
267
|
-
<div class="annotation" class:visible={isExpanded}>
|
|
268
|
-
<Icon name="Sparkles" />
|
|
269
|
-
<span>{enrichment.annotation}</span>
|
|
270
|
-
</div>
|
|
271
|
-
{/if}
|
|
272
|
-
|
|
273
|
-
<!-- Overflow indicator -->
|
|
274
|
-
{#if metrics.hasOverflow}
|
|
275
|
-
<button class="expand-hint" onclick={() => isExpanded = !isExpanded}>
|
|
276
|
-
{isExpanded ? 'Collapse' : 'Expand'} ({metrics.lineCount} lines)
|
|
277
|
-
</button>
|
|
278
|
-
{/if}
|
|
279
|
-
|
|
280
|
-
<!-- Connection handles (graph view only) -->
|
|
281
|
-
<div class="connection-handles">
|
|
282
|
-
{#each enrichment.connections as conn}
|
|
283
|
-
<div class="connection-handle" style="--strength: {conn.strength}">
|
|
284
|
-
<Icon name={relationIcons[conn.type]} />
|
|
285
|
-
</div>
|
|
286
|
-
{/each}
|
|
287
|
-
</div>
|
|
288
|
-
</div>
|
|
289
|
-
|
|
290
|
-
<style>
|
|
291
|
-
.enchanted-block {
|
|
292
|
-
position: relative;
|
|
293
|
-
background: var(--color-bg-elevated, #2a2a2a);
|
|
294
|
-
border-left: 3px solid var(--type-color, #b87333);
|
|
295
|
-
border-radius: var(--radius-md, 8px);
|
|
296
|
-
padding: var(--space-3, 12px);
|
|
297
|
-
transition: all 0.2s ease;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
.type-claim { --type-color: #d4943a; }
|
|
301
|
-
.type-question { --type-color: #6b8ce6; }
|
|
302
|
-
.type-idea { --type-color: #7cb97a; }
|
|
303
|
-
.type-task { --type-color: #b87333; }
|
|
304
|
-
/* ... etc for all 14 types */
|
|
305
|
-
|
|
306
|
-
.annotation {
|
|
307
|
-
opacity: 0;
|
|
308
|
-
max-height: 0;
|
|
309
|
-
overflow: hidden;
|
|
310
|
-
transition: all 0.3s ease;
|
|
311
|
-
font-size: var(--text-xs, 11px);
|
|
312
|
-
color: var(--color-text-muted, #a09880);
|
|
313
|
-
font-style: italic;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
.enchanted-block:hover .annotation,
|
|
317
|
-
.annotation.visible {
|
|
318
|
-
opacity: 1;
|
|
319
|
-
max-height: 100px;
|
|
320
|
-
margin-top: var(--space-2, 8px);
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
.expanded {
|
|
324
|
-
max-height: none;
|
|
325
|
-
}
|
|
326
|
-
</style>
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
## Integration Points
|
|
330
|
-
|
|
331
|
-
### Ryu Tasks
|
|
332
|
-
|
|
333
|
-
Current: Task list with truncated descriptions.
|
|
334
|
-
|
|
335
|
-
With Enchanted Blocks:
|
|
336
|
-
- Tasks become `type: 'task'` blocks
|
|
337
|
-
- Full descriptions visible via measured height
|
|
338
|
-
- Epistemic assay results shown as annotations
|
|
339
|
-
- Task connections = dependencies (inferred from content)
|
|
340
|
-
|
|
341
|
-
### Atelier Notes
|
|
342
|
-
|
|
343
|
-
Current: Static markdown notes.
|
|
344
|
-
|
|
345
|
-
With Enchanted Blocks:
|
|
346
|
-
- Notes auto-classify into 14 types
|
|
347
|
-
- KVE enrichment appears as annotations
|
|
348
|
-
- Bidirectional: notes contribute to KVE, KVE enriches notes
|
|
349
|
-
- Three views: tiling (BSP), kanban (by type), graph (connections)
|
|
350
|
-
|
|
351
|
-
### BlockWriter
|
|
352
|
-
|
|
353
|
-
Current: Visual block-based writing with BSP zones.
|
|
354
|
-
|
|
355
|
-
With Enchanted Blocks:
|
|
356
|
-
- Each writing block is an EnchantedBlock
|
|
357
|
-
- Content measurement prevents overflow
|
|
358
|
-
- Synthesis emerges from connected blocks
|
|
359
|
-
- Export to thesis/node with full provenance
|
|
360
|
-
|
|
361
|
-
## Implementation Roadmap
|
|
362
|
-
|
|
363
|
-
### Phase 1: Foundation (Week 1)
|
|
364
|
-
- [ ] Add `@chenglou/pretext` dependency to design-system
|
|
365
|
-
- [ ] Create `block-layout.ts` with measurement primitives
|
|
366
|
-
- [ ] Create `EnchantedBlock.svelte` with auto-sizing
|
|
367
|
-
|
|
368
|
-
### Phase 2: Classification (Week 2)
|
|
369
|
-
- [ ] Implement 14-type classifier (local regex + LLM fallback)
|
|
370
|
-
- [ ] Type badge UI with click-to-reclassify
|
|
371
|
-
- [ ] Color palette per type (brass/copper variants)
|
|
372
|
-
|
|
373
|
-
### Phase 3: Enrichment (Week 3)
|
|
374
|
-
- [ ] `useBlockEnrichment` hook with KVE integration
|
|
375
|
-
- [ ] Annotation display (hover/focus expansion)
|
|
376
|
-
- [ ] Connection inference from `ryu_knowledge_epistemic_detail`
|
|
377
|
-
|
|
378
|
-
### Phase 4: Canvas (Week 4)
|
|
379
|
-
- [ ] `EnchantedCanvas.svelte` with three view modes
|
|
380
|
-
- [ ] Tiling: integrate with existing ZoneTiler
|
|
381
|
-
- [ ] Kanban: columnar layout with drag-to-reclassify
|
|
382
|
-
- [ ] Graph: integrate with N3 Force Graph
|
|
383
|
-
|
|
384
|
-
### Phase 5: Synthesis (Week 5)
|
|
385
|
-
- [ ] Synthesis engine (density detection + `ryu_think`)
|
|
386
|
-
- [ ] Floating thesis pill UI
|
|
387
|
-
- [ ] Solidify flow (thesis block creation)
|
|
388
|
-
|
|
389
|
-
## File Structure
|
|
390
|
-
|
|
391
|
-
```
|
|
392
|
-
src/x0-enchanted-blocks/
|
|
393
|
-
├── index.ts # Public exports
|
|
394
|
-
├── ENCHANTED_BLOCKS_SPEC.md # This document
|
|
395
|
-
├──
|
|
396
|
-
├── core/
|
|
397
|
-
│ ├── block-layout.ts # Pretext measurement
|
|
398
|
-
│ ├── block-types.ts # 14 types + icons
|
|
399
|
-
│ ├── classifier.ts # Auto-type detection
|
|
400
|
-
│ └── synthesis.ts # Emergence detection
|
|
401
|
-
│
|
|
402
|
-
├── components/
|
|
403
|
-
│ ├── EnchantedBlock.svelte # Adaptive card
|
|
404
|
-
│ ├── EnchantedCanvas.svelte # Three-view canvas
|
|
405
|
-
│ ├── TypeBadge.svelte # Clickable type indicator
|
|
406
|
-
│ ├── Annotation.svelte # Enrichment display
|
|
407
|
-
│ └── ConnectionLine.svelte # SVG connection
|
|
408
|
-
│
|
|
409
|
-
├── hooks/
|
|
410
|
-
│ └── useBlockEnrichment.svelte.ts # KVE bidirectional
|
|
411
|
-
│
|
|
412
|
-
└── views/
|
|
413
|
-
├── TilingView.svelte # BSP spatial (ZoneTiler)
|
|
414
|
-
├── KanbanView.svelte # Columnar by type
|
|
415
|
-
└── GraphView.svelte # Force-directed (N3)
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
## Dependencies
|
|
419
|
-
|
|
420
|
-
```json
|
|
421
|
-
{
|
|
422
|
-
"dependencies": {
|
|
423
|
-
"@chenglou/pretext": "^1.0.0"
|
|
424
|
-
},
|
|
425
|
-
"peerDependencies": {
|
|
426
|
-
"svelte": "^5.0.0"
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
```
|
|
430
|
-
|
|
431
|
-
## Success Metrics
|
|
432
|
-
|
|
433
|
-
1. **No overflow**: 100% of blocks display full content without truncation
|
|
434
|
-
2. **Enrichment coverage**: 80%+ of blocks have KVE annotations within 2s of edit
|
|
435
|
-
3. **Synthesis quality**: User accepts 50%+ of suggested thesis statements
|
|
436
|
-
4. **View switching**: <100ms to switch between tiling/kanban/graph
|
|
437
|
-
5. **Measurement speed**: <16ms for blocks up to 1000 characters
|
|
438
|
-
|
|
439
|
-
## KVE Integration Commands
|
|
440
|
-
|
|
441
|
-
Leverages existing Ryu commands:
|
|
442
|
-
- `ryu_knowledge_ingest` — outbound contribution
|
|
443
|
-
- `ryu_knowledge_epistemic_detail` — inbound enrichment
|
|
444
|
-
- `ryu_think` — synthesis generation
|
|
445
|
-
- `ryu_knowledge_provenance_chain` — provenance display
|
|
446
|
-
|
|
447
|
-
## Open Questions
|
|
448
|
-
|
|
449
|
-
1. Should synthesis be automatic or user-triggered?
|
|
450
|
-
2. How to handle very long content (>10k chars) in blocks?
|
|
451
|
-
3. Should connections be editable or purely inferred?
|
|
452
|
-
4. Export format: `.nodepad` JSON, `.md`, or KOS-native?
|
|
453
|
-
|
|
454
|
-
---
|
|
455
|
-
|
|
456
|
-
*Spec version: 2026-04-09*
|
|
457
|
-
*Status: Draft for review*
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
// Block Layout Engine — DOM-free text measurement using Pretext
|
|
2
|
-
// Provides accurate sizing for adaptive block rendering
|
|
3
|
-
|
|
4
|
-
import { prepareWithSegments, layout, measureNaturalWidth as pretextMeasureNatural } from '@chenglou/pretext';
|
|
5
|
-
|
|
6
|
-
/** Layout options for text measurement */
|
|
7
|
-
export interface LayoutOptions {
|
|
8
|
-
/** White space handling: 'normal' (collapse) or 'pre-wrap' (preserve) */
|
|
9
|
-
whiteSpace?: 'normal' | 'pre-wrap';
|
|
10
|
-
/** Word breaking: 'normal' (break at word boundaries) or 'keep-all' (CJK/Hangul) */
|
|
11
|
-
wordBreak?: 'normal' | 'keep-all';
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/** Metrics returned from block measurement */
|
|
15
|
-
export interface BlockMetrics {
|
|
16
|
-
/** Minimum width before text wraps to additional lines (shrink-wrap) */
|
|
17
|
-
minWidth: number;
|
|
18
|
-
/** Optimal reading width (~65 characters) */
|
|
19
|
-
idealWidth: number;
|
|
20
|
-
/** Total height at the measured width */
|
|
21
|
-
height: number;
|
|
22
|
-
/** Number of lines at the measured width */
|
|
23
|
-
lineCount: number;
|
|
24
|
-
/** True if content exceeds reasonable display limits */
|
|
25
|
-
hasOverflow: boolean;
|
|
26
|
-
/** The font string used for measurement */
|
|
27
|
-
font: string;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/** Default font configuration matching KOS design system */
|
|
31
|
-
export const DEFAULT_FONT = '14px "Sovereign Sans", system-ui, -apple-system, sans-serif';
|
|
32
|
-
|
|
33
|
-
/** Default monospace font for code/preformatted content */
|
|
34
|
-
export const DEFAULT_MONO_FONT = '13px "Sovereign Mono", "SF Mono", Monaco, "Cascadia Code", monospace';
|
|
35
|
-
|
|
36
|
-
/** Ideal reading width in pixels (~65ch at 14px) */
|
|
37
|
-
export const IDEAL_READING_WIDTH = 520;
|
|
38
|
-
|
|
39
|
-
/** Maximum reasonable block height before overflow indicator */
|
|
40
|
-
export const MAX_BLOCK_HEIGHT = 400;
|
|
41
|
-
|
|
42
|
-
/** Maximum characters before overflow detection */
|
|
43
|
-
export const MAX_CONTENT_LENGTH = 5000;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Measure block content using Pretext's DOM-free layout engine.
|
|
47
|
-
*
|
|
48
|
-
* This function uses canvas-based text measurement for accurate sizing
|
|
49
|
-
* without triggering DOM layout/reflow cycles.
|
|
50
|
-
*
|
|
51
|
-
* @param content - The text content to measure
|
|
52
|
-
* @param font - Font specification string (defaults to DEFAULT_FONT)
|
|
53
|
-
* @param maxWidth - Maximum container width constraint
|
|
54
|
-
* @param options - Layout options (whiteSpace, wordBreak)
|
|
55
|
-
* @param lineHeight - Line height multiplier (default: 1.6)
|
|
56
|
-
* @returns BlockMetrics with sizing information
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* ```typescript
|
|
60
|
-
* const metrics = measureBlock(
|
|
61
|
-
* 'Task: Implement authentication system with OAuth2 support',
|
|
62
|
-
* '14px Inter',
|
|
63
|
-
* 400,
|
|
64
|
-
* { whiteSpace: 'normal' }
|
|
65
|
-
* );
|
|
66
|
-
* // metrics.height → precise pixel height
|
|
67
|
-
* // metrics.lineCount → number of wrapped lines
|
|
68
|
-
* ```
|
|
69
|
-
*/
|
|
70
|
-
export function measureBlock(
|
|
71
|
-
content: string,
|
|
72
|
-
font: string = DEFAULT_FONT,
|
|
73
|
-
maxWidth: number = IDEAL_READING_WIDTH,
|
|
74
|
-
options: LayoutOptions = {},
|
|
75
|
-
lineHeight: number = 1.6
|
|
76
|
-
): BlockMetrics {
|
|
77
|
-
// SSR Safety: Pretext requires DOM/Canvas. Return safe defaults if run on server.
|
|
78
|
-
if (typeof window === 'undefined') {
|
|
79
|
-
return {
|
|
80
|
-
minWidth: 0,
|
|
81
|
-
idealWidth: Math.min(IDEAL_READING_WIDTH, maxWidth),
|
|
82
|
-
height: lineHeight * 14,
|
|
83
|
-
lineCount: 1,
|
|
84
|
-
hasOverflow: false,
|
|
85
|
-
font,
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Handle empty content
|
|
90
|
-
if (!content || content.length === 0) {
|
|
91
|
-
return {
|
|
92
|
-
minWidth: 0,
|
|
93
|
-
idealWidth: Math.min(IDEAL_READING_WIDTH, maxWidth),
|
|
94
|
-
height: lineHeight * 14, // One line height
|
|
95
|
-
lineCount: 1,
|
|
96
|
-
hasOverflow: false,
|
|
97
|
-
font,
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Truncate extremely long content to prevent performance issues
|
|
102
|
-
const truncatedContent = content.length > MAX_CONTENT_LENGTH
|
|
103
|
-
? content.slice(0, MAX_CONTENT_LENGTH) + '…'
|
|
104
|
-
: content;
|
|
105
|
-
|
|
106
|
-
// Prepare text for measurement (one-time work)
|
|
107
|
-
const prepared = prepareWithSegments(truncatedContent, font, {
|
|
108
|
-
whiteSpace: options.whiteSpace ?? 'normal',
|
|
109
|
-
wordBreak: options.wordBreak ?? 'normal',
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
// Measure at the target width
|
|
113
|
-
const { height, lineCount } = layout(prepared, maxWidth, lineHeight);
|
|
114
|
-
|
|
115
|
-
// Calculate shrink-wrap width (tightest fit)
|
|
116
|
-
const minWidth = pretextMeasureNatural(prepared);
|
|
117
|
-
|
|
118
|
-
// Determine ideal width (between min and max, capped at reading width)
|
|
119
|
-
const idealWidth = Math.min(
|
|
120
|
-
Math.max(minWidth, Math.min(IDEAL_READING_WIDTH, maxWidth)),
|
|
121
|
-
maxWidth
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
// Detect overflow conditions
|
|
125
|
-
const hasOverflow = height > MAX_BLOCK_HEIGHT || content.length > MAX_CONTENT_LENGTH;
|
|
126
|
-
|
|
127
|
-
return {
|
|
128
|
-
minWidth,
|
|
129
|
-
idealWidth,
|
|
130
|
-
height,
|
|
131
|
-
lineCount,
|
|
132
|
-
hasOverflow,
|
|
133
|
-
font,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Quick measurement for content previews (truncated at first overflow).
|
|
139
|
-
* Returns faster results for long content by sampling first N characters.
|
|
140
|
-
*/
|
|
141
|
-
export function measureBlockPreview(
|
|
142
|
-
content: string,
|
|
143
|
-
font: string = DEFAULT_FONT,
|
|
144
|
-
maxWidth: number = IDEAL_READING_WIDTH,
|
|
145
|
-
maxLines: number = 10
|
|
146
|
-
): BlockMetrics {
|
|
147
|
-
const previewLength = 1000; // Sample size for preview
|
|
148
|
-
const previewContent = content.length > previewLength
|
|
149
|
-
? content.slice(0, previewLength) + '…'
|
|
150
|
-
: content;
|
|
151
|
-
|
|
152
|
-
const metrics = measureBlock(previewContent, font, maxWidth);
|
|
153
|
-
|
|
154
|
-
// Cap line count for preview
|
|
155
|
-
if (metrics.lineCount > maxLines) {
|
|
156
|
-
const lineHeight = 1.6 * 14; // approximate
|
|
157
|
-
return {
|
|
158
|
-
...metrics,
|
|
159
|
-
lineCount: maxLines,
|
|
160
|
-
height: maxLines * lineHeight,
|
|
161
|
-
hasOverflow: true,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
return { ...metrics, hasOverflow: content.length > previewLength };
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Measure multiple blocks efficiently with shared font preparation.
|
|
170
|
-
* Useful for virtualized lists where font is constant.
|
|
171
|
-
*/
|
|
172
|
-
export function measureBlocksBatch(
|
|
173
|
-
contents: string[],
|
|
174
|
-
font: string = DEFAULT_FONT,
|
|
175
|
-
maxWidth: number = IDEAL_READING_WIDTH
|
|
176
|
-
): BlockMetrics[] {
|
|
177
|
-
return contents.map(content => measureBlock(content, font, maxWidth));
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Calculate total canvas height for a collection of blocks.
|
|
182
|
-
* Includes spacing between blocks.
|
|
183
|
-
*/
|
|
184
|
-
export function calculateCanvasHeight(
|
|
185
|
-
metrics: BlockMetrics[],
|
|
186
|
-
spacing: number = 16,
|
|
187
|
-
padding: number = 24
|
|
188
|
-
): number {
|
|
189
|
-
const contentHeight = metrics.reduce((sum, m) => sum + m.height, 0);
|
|
190
|
-
const spacingHeight = Math.max(0, metrics.length - 1) * spacing;
|
|
191
|
-
return padding * 2 + contentHeight + spacingHeight;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Determine optimal column width for kanban-style layouts.
|
|
196
|
-
* Balances content width against container constraints.
|
|
197
|
-
*/
|
|
198
|
-
export function calculateOptimalColumnWidth(
|
|
199
|
-
allMetrics: BlockMetrics[],
|
|
200
|
-
containerWidth: number,
|
|
201
|
-
columnCount: number,
|
|
202
|
-
minColumnWidth: number = 280
|
|
203
|
-
): number {
|
|
204
|
-
const maxContentWidth = Math.max(...allMetrics.map(m => m.minWidth));
|
|
205
|
-
const availableWidth = (containerWidth - (columnCount - 1) * 16) / columnCount;
|
|
206
|
-
|
|
207
|
-
return Math.max(
|
|
208
|
-
minColumnWidth,
|
|
209
|
-
Math.min(maxContentWidth + 48, availableWidth) // +48 for padding
|
|
210
|
-
);
|
|
211
|
-
}
|