@stephen-netu/design-system 0.2.1 → 0.5.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.
Files changed (359) hide show
  1. package/dist/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte +10 -2
  2. package/dist/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte.d.ts.map +1 -1
  3. package/dist/b0-app-shell/{command-bar/CommandBar.svelte → global-command-bar/GlobalCommandBar.svelte} +75 -75
  4. package/dist/b0-app-shell/{command-bar/CommandBar.svelte.d.ts → global-command-bar/GlobalCommandBar.svelte.d.ts} +6 -6
  5. package/dist/b0-app-shell/global-command-bar/GlobalCommandBar.svelte.d.ts.map +1 -0
  6. package/dist/b0-app-shell/index.d.ts +1 -1
  7. package/dist/b0-app-shell/index.d.ts.map +1 -1
  8. package/dist/b0-app-shell/index.js +1 -1
  9. package/dist/d0-data-viz/BarChart.test.js +53 -0
  10. package/dist/d0-data-viz/CheckpointBar.test.js +83 -0
  11. package/dist/d0-data-viz/CheckpointPill.svelte +8 -3
  12. package/dist/d0-data-viz/CheckpointPill.svelte.d.ts.map +1 -1
  13. package/dist/d0-data-viz/CheckpointPill.test.js +78 -0
  14. package/dist/d0-data-viz/ConnectionHealth.test.js +70 -0
  15. package/dist/d0-data-viz/MetricCard.test.js +57 -0
  16. package/dist/d0-data-viz/SparkLine.test.js +47 -0
  17. package/dist/d0-data-viz/StorageMap.test.js +63 -0
  18. package/dist/d0-data-viz/Timeline.test.js +62 -0
  19. package/dist/d0-data-viz/WorldLineTimeline.test.js +99 -0
  20. package/dist/d0-data-viz/checkpoint-types.js +1 -1
  21. package/dist/d0-data-viz/storage-map-types.d.ts.map +1 -1
  22. package/dist/d0-data-viz/storage-map-types.js +6 -3
  23. package/dist/d0-data-viz/theme-integration.d.ts +3 -3
  24. package/dist/d0-data-viz/theme-integration.js +4 -4
  25. package/dist/d0-data-viz/theme-integration.test.js +41 -0
  26. package/dist/demos/AmbientPrimitivesDemo.svelte +103 -0
  27. package/dist/demos/AmbientPrimitivesDemo.svelte.d.ts +5 -0
  28. package/dist/demos/AmbientPrimitivesDemo.svelte.d.ts.map +1 -0
  29. package/dist/demos/BspSizingInfographic.svelte +3 -32
  30. package/dist/demos/NodepadBlocksShowcase.svelte +2 -1
  31. package/dist/demos/NodepadBlocksShowcase.svelte.d.ts.map +1 -1
  32. package/dist/demos/index.d.ts +1 -0
  33. package/dist/demos/index.d.ts.map +1 -1
  34. package/dist/demos/index.js +1 -0
  35. package/dist/editor/CodeEditor.svelte +83 -26
  36. package/dist/editor/CodeEditor.svelte.d.ts +0 -1
  37. package/dist/editor/CodeEditor.svelte.d.ts.map +1 -1
  38. package/dist/editor/CodeEditor.test.js +38 -0
  39. package/dist/editor/ExternalChangeDialog.svelte +117 -0
  40. package/dist/editor/ExternalChangeDialog.svelte.d.ts +13 -0
  41. package/dist/editor/ExternalChangeDialog.svelte.d.ts.map +1 -0
  42. package/dist/editor/FindReplaceDialog.svelte +32 -32
  43. package/dist/editor/MarkdownEditor.svelte +105 -605
  44. package/dist/editor/MarkdownEditor.svelte.d.ts +1 -1
  45. package/dist/editor/MarkdownEditor.svelte.d.ts.map +1 -1
  46. package/dist/editor/MarkdownEditor.test.js +38 -0
  47. package/dist/editor/codemirror-config.d.ts +36 -0
  48. package/dist/editor/codemirror-config.d.ts.map +1 -0
  49. package/dist/editor/codemirror-config.js +87 -0
  50. package/dist/editor/components/CorrectionTooltip.svelte +180 -160
  51. package/dist/editor/components/CorrectionTooltip.svelte.d.ts +7 -23
  52. package/dist/editor/components/CorrectionTooltip.svelte.d.ts.map +1 -1
  53. package/dist/editor/extensions/autocomplete.d.ts +2 -2
  54. package/dist/editor/extensions/autocomplete.d.ts.map +1 -1
  55. package/dist/editor/extensions/autocomplete.test.js +121 -0
  56. package/dist/editor/extensions/spellcheck.d.ts +21 -3
  57. package/dist/editor/extensions/spellcheck.d.ts.map +1 -1
  58. package/dist/editor/extensions/spellcheck.js +51 -9
  59. package/dist/editor/extensions/spellcheck.test.js +168 -0
  60. package/dist/editor/extensions/types.d.ts +2 -1
  61. package/dist/editor/extensions/types.d.ts.map +1 -1
  62. package/dist/editor/index.d.ts +2 -1
  63. package/dist/editor/index.d.ts.map +1 -1
  64. package/dist/editor/index.js +1 -0
  65. package/dist/editor/markdown-preview.d.ts +9 -0
  66. package/dist/editor/markdown-preview.d.ts.map +1 -0
  67. package/dist/editor/markdown-preview.js +19 -0
  68. package/dist/editor/markdown-preview.test.js +38 -0
  69. package/dist/editor/useCodeMirror.d.ts +23 -0
  70. package/dist/editor/useCodeMirror.d.ts.map +1 -0
  71. package/dist/editor/useCodeMirror.js +40 -0
  72. package/dist/editor/useFilePersistence.d.ts +32 -0
  73. package/dist/editor/useFilePersistence.d.ts.map +1 -0
  74. package/dist/editor/useFilePersistence.js +117 -0
  75. package/dist/entity-graph-view/WorldView.svelte +1 -1
  76. package/dist/fabric/ai/ChatPanel.svelte +84 -85
  77. package/dist/fabric/ai/ChatPanel.svelte.d.ts.map +1 -1
  78. package/dist/fabric/ai/ResearchPanel.svelte +35 -25
  79. package/dist/fabric/ai/ResearchPanel.svelte.d.ts.map +1 -1
  80. package/dist/fabric/data/FileTree.svelte +195 -0
  81. package/dist/fabric/data/FileTree.svelte.d.ts +19 -0
  82. package/dist/fabric/data/FileTree.svelte.d.ts.map +1 -0
  83. package/dist/fabric/data/FileTree.test.js +127 -0
  84. package/dist/fabric/data/index.d.ts +5 -9
  85. package/dist/fabric/data/index.d.ts.map +1 -1
  86. package/dist/fabric/data/index.js +4 -1
  87. package/dist/fabric/index.d.ts +5 -5
  88. package/dist/fabric/index.d.ts.map +1 -1
  89. package/dist/fabric/index.js +5 -3
  90. package/dist/fabric/input/{CommandBar.svelte → AppHeaderBar.svelte} +13 -13
  91. package/dist/fabric/input/{CommandBar.svelte.d.ts → AppHeaderBar.svelte.d.ts} +5 -5
  92. package/dist/fabric/input/AppHeaderBar.svelte.d.ts.map +1 -0
  93. package/dist/fabric/input/{CommandBar.test.js → AppHeaderBar.test.js} +9 -9
  94. package/dist/fabric/input/KeyboardShortcuts.svelte +23 -21
  95. package/dist/fabric/input/index.d.ts +2 -2
  96. package/dist/fabric/input/index.d.ts.map +1 -1
  97. package/dist/fabric/input/index.js +1 -1
  98. package/dist/fabric/layout/CollapsiblePanel.svelte +8 -10
  99. package/dist/fabric/layout/KanbanBoard.svelte +25 -155
  100. package/dist/fabric/layout/KanbanBoard.svelte.d.ts +2 -26
  101. package/dist/fabric/layout/KanbanBoard.svelte.d.ts.map +1 -1
  102. package/dist/fabric/layout/KanbanBoard.test.js +125 -10
  103. package/dist/fabric/layout/KanbanCard.svelte +27 -223
  104. package/dist/fabric/layout/KanbanCard.svelte.d.ts +2 -19
  105. package/dist/fabric/layout/KanbanCard.svelte.d.ts.map +1 -1
  106. package/dist/fabric/layout/KanbanColumn.svelte +41 -275
  107. package/dist/fabric/layout/KanbanColumn.svelte.d.ts +2 -22
  108. package/dist/fabric/layout/KanbanColumn.svelte.d.ts.map +1 -1
  109. package/dist/fabric/layout/index.d.ts +2 -5
  110. package/dist/fabric/layout/index.d.ts.map +1 -1
  111. package/dist/fabric/layout/index.js +1 -1
  112. package/dist/fabric/navigation/ActivityRail.svelte +3 -5
  113. package/dist/fabric/navigation/ActivityRail.svelte.d.ts.map +1 -1
  114. package/dist/g0-generative/components/Text.svelte +38 -0
  115. package/dist/g0-generative/components/Text.svelte.d.ts +9 -0
  116. package/dist/g0-generative/components/Text.svelte.d.ts.map +1 -0
  117. package/dist/g0-generative/index.d.ts +1 -0
  118. package/dist/g0-generative/index.d.ts.map +1 -1
  119. package/dist/g0-generative/index.js +1 -0
  120. package/dist/g0-generative/library/ComponentLibrary.d.ts +4 -0
  121. package/dist/g0-generative/library/ComponentLibrary.d.ts.map +1 -1
  122. package/dist/g0-generative/library/ComponentLibrary.js +10 -0
  123. package/dist/g0-generative/library/ComponentLibrary.test.js +135 -0
  124. package/dist/g0-generative/renderer/OpenUIRenderer.svelte +16 -56
  125. package/dist/g0-generative/renderer/OpenUIRenderer.svelte.d.ts.map +1 -1
  126. package/dist/g0-generative/renderer/OpenUIRenderer.test.js +143 -0
  127. package/dist/g0-geo/SovereignMap.svelte +13 -13
  128. package/dist/g0-geo/SovereignMap.svelte.d.ts.map +1 -1
  129. package/dist/index.d.ts +0 -1
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +7 -3
  132. package/dist/l0-layout/SectionSplitter.svelte +5 -5
  133. package/dist/l0-layout/block-writer/BlockContent.svelte +23 -22
  134. package/dist/l0-layout/block-writer/BlockContent.svelte.d.ts.map +1 -1
  135. package/dist/l0-layout/block-writer/BlockContent.test.js +47 -0
  136. package/dist/l0-layout/block-writer/BlockItem.svelte +6 -4
  137. package/dist/l0-layout/block-writer/markdown.js +11 -11
  138. package/dist/l0-layout/block-writer/markdown.test.js +81 -0
  139. package/dist/l0-layout/card/CompactCard.svelte +4 -3
  140. package/dist/l0-layout/card/StackedCard.svelte +87 -0
  141. package/dist/l0-layout/card/StackedCard.svelte.d.ts +9 -0
  142. package/dist/l0-layout/card/StackedCard.svelte.d.ts.map +1 -0
  143. package/dist/l0-layout/card/StackedCard.test.js +29 -0
  144. package/dist/l0-layout/grant/GrantCard.svelte +15 -5
  145. package/dist/l0-layout/grant/GrantCard.svelte.d.ts.map +1 -1
  146. package/dist/l0-layout/index.d.ts +3 -0
  147. package/dist/l0-layout/index.d.ts.map +1 -1
  148. package/dist/l0-layout/index.js +2 -0
  149. package/dist/l0-layout/kanban/KanbanBoard.svelte +246 -29
  150. package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts +28 -2
  151. package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts.map +1 -1
  152. package/dist/l0-layout/kanban/KanbanCard.svelte +175 -150
  153. package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts +16 -18
  154. package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts.map +1 -1
  155. package/dist/l0-layout/kanban/KanbanColumn.svelte +152 -78
  156. package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts +28 -7
  157. package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts.map +1 -1
  158. package/dist/l0-layout/kanban/index.d.ts +6 -0
  159. package/dist/l0-layout/kanban/index.d.ts.map +1 -0
  160. package/dist/l0-layout/kanban/index.js +3 -0
  161. package/dist/n0-node-graph/Node.svelte +2 -2
  162. package/dist/n0-node-graph/NodePalette.svelte +2 -2
  163. package/dist/n1-flow-canvas/FlowCanvas.svelte +50 -6
  164. package/dist/n1-flow-canvas/FlowCanvas.svelte.d.ts.map +1 -1
  165. package/dist/n1-flow-canvas/graph-state.test.js +69 -0
  166. package/dist/n1-flow-canvas/index.d.ts +2 -0
  167. package/dist/n1-flow-canvas/index.d.ts.map +1 -1
  168. package/dist/n1-flow-canvas/index.js +1 -0
  169. package/dist/n1-flow-canvas/pipeline-adapter.d.ts +37 -0
  170. package/dist/n1-flow-canvas/pipeline-adapter.d.ts.map +1 -0
  171. package/dist/n1-flow-canvas/pipeline-adapter.js +160 -0
  172. package/dist/n1-flow-canvas/utils.test.js +116 -0
  173. package/dist/n2-manifold-disk/ManifoldDisk.svelte +62 -35
  174. package/dist/n2-manifold-disk/ManifoldDisk.svelte.d.ts.map +1 -1
  175. package/dist/n3-force-graph/GraphTooltip.svelte +2 -2
  176. package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte +34 -29
  177. package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte.d.ts.map +1 -1
  178. package/dist/n4-adaptive-manifold/classifier.test.js +104 -0
  179. package/dist/n4-adaptive-manifold/n4-tokens.css +2 -2
  180. package/dist/n4-adaptive-manifold/types.d.ts +3 -0
  181. package/dist/n4-adaptive-manifold/types.d.ts.map +1 -1
  182. package/dist/p0-primitives/ThemeProvider.svelte +38 -18
  183. package/dist/p0-primitives/ThemeProvider.svelte.d.ts +6 -1
  184. package/dist/p0-primitives/ThemeProvider.svelte.d.ts.map +1 -1
  185. package/dist/p0-primitives/canvas-theme.d.ts +33 -1
  186. package/dist/p0-primitives/canvas-theme.d.ts.map +1 -1
  187. package/dist/p0-primitives/canvas-theme.js +82 -17
  188. package/dist/p0-primitives/debug.d.ts +6 -0
  189. package/dist/p0-primitives/debug.d.ts.map +1 -0
  190. package/dist/p0-primitives/debug.js +21 -0
  191. package/dist/p0-primitives/index.d.ts +2 -1
  192. package/dist/p0-primitives/index.d.ts.map +1 -1
  193. package/dist/p0-primitives/index.js +1 -0
  194. package/dist/p0-primitives/theme-context.d.ts +9 -0
  195. package/dist/p0-primitives/theme-context.d.ts.map +1 -0
  196. package/dist/p0-primitives/theme-context.js +8 -0
  197. package/dist/p0-primitives/theme.d.ts.map +1 -1
  198. package/dist/p0-primitives/theme.js +11 -31
  199. package/dist/p0-primitives/tokens/ambient.css +76 -0
  200. package/dist/p0-primitives/tokens/tokens.css +140 -34
  201. package/dist/p0-primitives/utils/index.d.ts +4 -2
  202. package/dist/p0-primitives/utils/index.d.ts.map +1 -1
  203. package/dist/p0-primitives/utils/index.js +1 -0
  204. package/dist/p0-primitives/utils/reveal.d.ts +15 -0
  205. package/dist/p0-primitives/utils/reveal.d.ts.map +1 -0
  206. package/dist/p0-primitives/utils/reveal.js +29 -0
  207. package/dist/p0-primitives/utils/reveal.test.js +95 -0
  208. package/dist/s0-state/SyncStatus.svelte +2 -2
  209. package/dist/s0-state/ThemeStore.svelte.d.ts +3 -2
  210. package/dist/s0-state/ThemeStore.svelte.d.ts.map +1 -1
  211. package/dist/s0-state/ThemeStore.svelte.js +20 -1
  212. package/dist/s0-state/index.d.ts +2 -2
  213. package/dist/s0-state/index.d.ts.map +1 -1
  214. package/dist/s0-state/index.js +3 -0
  215. package/dist/s0-state/modal-stack-store.svelte.d.ts +27 -2
  216. package/dist/s0-state/modal-stack-store.svelte.d.ts.map +1 -1
  217. package/dist/s0-state/modal-stack-store.svelte.js +21 -2
  218. package/dist/showcase/Showcase.svelte +43 -34
  219. package/dist/showcase/Showcase.svelte.d.ts.map +1 -1
  220. package/dist/spatial/BspTilingCanvas.svelte +5 -5
  221. package/dist/spatial/BspTilingSimulation.test.js +88 -0
  222. package/dist/spatial/CameraController.test.js +120 -0
  223. package/dist/spatial/ForceCanvas.svelte +18 -13
  224. package/dist/spatial/ForceCanvas.svelte.d.ts.map +1 -1
  225. package/dist/spatial/ForceSimulation.svelte.d.ts.map +1 -1
  226. package/dist/spatial/ForceSimulation.svelte.js +33 -22
  227. package/dist/spatial/LodRenderer.svelte +14 -1
  228. package/dist/spatial/LodRenderer.svelte.d.ts.map +1 -1
  229. package/dist/spatial/ParticleAssembleMark.svelte +285 -0
  230. package/dist/spatial/ParticleAssembleMark.svelte.d.ts +24 -0
  231. package/dist/spatial/ParticleAssembleMark.svelte.d.ts.map +1 -0
  232. package/dist/spatial/SnapZoomCamera.svelte +23 -13
  233. package/dist/spatial/SnapZoomCamera.svelte.d.ts.map +1 -1
  234. package/dist/spatial/ZoneTiler.svelte +3 -2
  235. package/dist/spatial/ZoneTiler.test.js +90 -0
  236. package/dist/spatial/d3-types.d.ts +31 -0
  237. package/dist/spatial/d3-types.d.ts.map +1 -0
  238. package/dist/spatial/d3-types.js +19 -0
  239. package/dist/spatial/index.js +1 -0
  240. package/dist/spatial/particle-assemble-math.d.ts +22 -0
  241. package/dist/spatial/particle-assemble-math.d.ts.map +1 -0
  242. package/dist/spatial/particle-assemble-math.js +26 -0
  243. package/dist/spatial/particle-assemble-math.test.js +56 -0
  244. package/dist/ssr-import-clean.test.js +37 -0
  245. package/dist/t0-transport/fs.d.ts +12 -0
  246. package/dist/t0-transport/fs.d.ts.map +1 -0
  247. package/dist/t0-transport/fs.js +55 -0
  248. package/dist/t0-transport/index.d.ts +1 -0
  249. package/dist/t0-transport/index.d.ts.map +1 -1
  250. package/dist/t0-transport/index.js +1 -0
  251. package/dist/t0-transport/invoke.d.ts.map +1 -1
  252. package/dist/t0-transport/invoke.js +5 -2
  253. package/dist/t0-transport/quality.d.ts +12 -3
  254. package/dist/t0-transport/quality.d.ts.map +1 -1
  255. package/dist/t0-transport/quality.js +17 -4
  256. package/dist/t0-transport/substrate.svelte.d.ts +27 -0
  257. package/dist/t0-transport/substrate.svelte.d.ts.map +1 -0
  258. package/dist/t0-transport/substrate.svelte.js +55 -0
  259. package/dist/u0-primitives/LockIndicator.svelte +17 -15
  260. package/dist/u0-primitives/VerticalToolbar.svelte +25 -22
  261. package/dist/u0-primitives/accordion/Accordion.svelte +14 -12
  262. package/dist/u0-primitives/accordion/Accordion.svelte.d.ts +0 -7
  263. package/dist/u0-primitives/accordion/Accordion.svelte.d.ts.map +1 -1
  264. package/dist/u0-primitives/accordion/Accordion.test.js +5 -5
  265. package/dist/u0-primitives/animated-icon/AnimatedIcon.svelte +3 -3
  266. package/dist/u0-primitives/animated-icon/AnimatedIcon.test.js +82 -0
  267. package/dist/u0-primitives/avatar/Avatar.svelte +14 -14
  268. package/dist/u0-primitives/avatar/Avatar.test.js +81 -0
  269. package/dist/u0-primitives/badge/Badge.svelte +6 -4
  270. package/dist/u0-primitives/badge/Badge.test.js +10 -10
  271. package/dist/u0-primitives/badge/ValidityBadge.svelte +4 -27
  272. package/dist/u0-primitives/badge/ValidityBadge.test.js +9 -9
  273. package/dist/u0-primitives/button/Button.svelte +18 -13
  274. package/dist/u0-primitives/button/Button.svelte.d.ts +1 -0
  275. package/dist/u0-primitives/button/Button.svelte.d.ts.map +1 -1
  276. package/dist/u0-primitives/button/Button.test.js +11 -11
  277. package/dist/u0-primitives/card/Card.svelte +60 -32
  278. package/dist/u0-primitives/card/Card.svelte.d.ts.map +1 -1
  279. package/dist/u0-primitives/card/Card.test.js +86 -0
  280. package/dist/u0-primitives/command-palette/CommandPalette.svelte +75 -43
  281. package/dist/u0-primitives/command-palette/CommandPalette.svelte.d.ts.map +1 -1
  282. package/dist/u0-primitives/command-palette/CommandPalette.test.js +202 -0
  283. package/dist/u0-primitives/command-palette/commandStore.svelte.d.ts.map +1 -1
  284. package/dist/u0-primitives/command-palette/commandStore.svelte.js +2 -1
  285. package/dist/u0-primitives/dropdown/Dropdown.svelte +20 -25
  286. package/dist/u0-primitives/dropdown/Dropdown.test.js +1 -1
  287. package/dist/u0-primitives/grant-badge/GrantStatusBadge.svelte +2 -2
  288. package/dist/u0-primitives/index.d.ts +8 -0
  289. package/dist/u0-primitives/index.d.ts.map +1 -1
  290. package/dist/u0-primitives/index.js +9 -0
  291. package/dist/u0-primitives/input/Input.svelte +85 -23
  292. package/dist/u0-primitives/input/Input.svelte.d.ts +2 -10
  293. package/dist/u0-primitives/input/Input.svelte.d.ts.map +1 -1
  294. package/dist/u0-primitives/input/Input.test.js +82 -2
  295. package/dist/u0-primitives/live-dot/LiveDot.svelte +56 -0
  296. package/dist/u0-primitives/live-dot/LiveDot.svelte.d.ts +11 -0
  297. package/dist/u0-primitives/live-dot/LiveDot.svelte.d.ts.map +1 -0
  298. package/dist/u0-primitives/live-dot/LiveDot.test.js +41 -0
  299. package/dist/u0-primitives/live-dot/index.d.ts +3 -0
  300. package/dist/u0-primitives/live-dot/index.d.ts.map +1 -0
  301. package/dist/u0-primitives/live-dot/index.js +1 -0
  302. package/dist/u0-primitives/modal/Modal.svelte +64 -38
  303. package/dist/u0-primitives/modal/Modal.svelte.d.ts.map +1 -1
  304. package/dist/u0-primitives/modal/Modal.test.js +63 -15
  305. package/dist/u0-primitives/rsvp/RsvpReader.svelte +8 -8
  306. package/dist/u0-primitives/rsvp/RsvpReader.svelte.d.ts.map +1 -1
  307. package/dist/u0-primitives/spinner/Spinner.svelte +11 -79
  308. package/dist/u0-primitives/spinner/Spinner.svelte.d.ts.map +1 -1
  309. package/dist/u0-primitives/steps/Steps.svelte +20 -21
  310. package/dist/u0-primitives/surface-state/SurfaceState.svelte +190 -0
  311. package/dist/u0-primitives/surface-state/SurfaceState.svelte.d.ts +15 -0
  312. package/dist/u0-primitives/surface-state/SurfaceState.svelte.d.ts.map +1 -0
  313. package/dist/u0-primitives/tabs/Tabs.svelte +13 -11
  314. package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte +94 -0
  315. package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte.d.ts +16 -0
  316. package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte.d.ts.map +1 -0
  317. package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.test.js +48 -0
  318. package/dist/u0-primitives/theme-swatch-group/index.d.ts +3 -0
  319. package/dist/u0-primitives/theme-swatch-group/index.d.ts.map +1 -0
  320. package/dist/u0-primitives/theme-swatch-group/index.js +1 -0
  321. package/dist/u0-primitives/toggle/Toggle.svelte +22 -13
  322. package/dist/u0-primitives/tooltip/Tooltip.svelte +9 -9
  323. package/dist/u0-primitives/tooltip/Tooltip.test.js +12 -12
  324. package/dist/u0-primitives/web-components/button-component.d.ts +5 -1
  325. package/dist/u0-primitives/web-components/button-component.d.ts.map +1 -1
  326. package/dist/u0-primitives/web-components/button-component.js +72 -33
  327. package/dist/u0-primitives/web-components/index.d.ts +3 -0
  328. package/dist/u0-primitives/web-components/index.d.ts.map +1 -0
  329. package/dist/u0-primitives/web-components/index.js +2 -0
  330. package/dist/u0-primitives/web-components/input-component.d.ts +5 -1
  331. package/dist/u0-primitives/web-components/input-component.d.ts.map +1 -1
  332. package/dist/u0-primitives/web-components/input-component.js +56 -39
  333. package/dist/u0-primitives/web-components/web-components.test.js +96 -0
  334. package/dist/u0-primitives/window-frame/WindowFrame.svelte +87 -0
  335. package/dist/u0-primitives/window-frame/WindowFrame.svelte.d.ts +10 -0
  336. package/dist/u0-primitives/window-frame/WindowFrame.svelte.d.ts.map +1 -0
  337. package/dist/u0-primitives/window-frame/WindowFrame.test.js +31 -0
  338. package/dist/u0-primitives/window-frame/index.d.ts +3 -0
  339. package/dist/u0-primitives/window-frame/index.d.ts.map +1 -0
  340. package/dist/u0-primitives/window-frame/index.js +1 -0
  341. package/dist/v0-diagrams/MarkmapDiagram.test.js +49 -0
  342. package/dist/v0-diagrams/MermaidDiagram.svelte +21 -9
  343. package/dist/v0-diagrams/MermaidDiagram.svelte.d.ts.map +1 -1
  344. package/dist/v0-diagrams/MermaidDiagram.test.js +40 -0
  345. package/dist/x0-enchanted-blocks/components/NodepadBlock.svelte +11 -2
  346. package/dist/x0-enchanted-blocks/components/NodepadBlock.svelte.d.ts.map +1 -1
  347. package/package.json +57 -15
  348. package/src/n4-adaptive-manifold/n4-tokens.css +2 -2
  349. package/src/p0-primitives/tokens/ambient.css +76 -0
  350. package/src/p0-primitives/tokens/tokens.css +140 -34
  351. package/src/p0-primitives/tokens/tokens.json +55 -26
  352. package/dist/b0-app-shell/command-bar/CommandBar.svelte.d.ts.map +0 -1
  353. package/dist/fabric/input/CommandBar.svelte.d.ts.map +0 -1
  354. package/dist/stores/vaultStore.svelte +0 -14
  355. package/dist/stores/vaultStore.svelte.d.ts +0 -24
  356. package/dist/stores/vaultStore.svelte.d.ts.map +0 -1
  357. package/dist/tauri/index.d.ts +0 -3
  358. package/dist/tauri/index.d.ts.map +0 -1
  359. package/dist/tauri/index.js +0 -11
@@ -30,14 +30,10 @@ export const defaultDarkTheme = {
30
30
  colorFgSecondary: '#a8a08c',
31
31
  colorFgTertiary: '#6b6558',
32
32
  colorFgMuted: '#3a3630',
33
- // Accent (brass energized signal, use sparingly)
33
+ // Accent — SEED ONLY. tokens.css derives hover/active/subtle/glow/muted/faint
34
+ // from --accent-primary via color-mix; emitting derived values here would
35
+ // override and de-sync the single-seed engine (re-introducing the brass leak).
34
36
  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
37
  // Telemetry
42
38
  colorSuccess: '#4fa8a2',
43
39
  colorWarning: '#d4a04c',
@@ -66,14 +62,8 @@ export const defaultLightTheme = {
66
62
  colorFgSecondary: '#5a5a5a',
67
63
  colorFgTertiary: '#8a8a8a',
68
64
  colorFgMuted: '#a0a0a0',
69
- // Accent (brass same in both modes)
65
+ // Accent — SEED ONLY (CSS engine derives the ramp).
70
66
  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
67
  // Feedback
78
68
  colorSuccess: '#5a8a6e',
79
69
  colorWarning: '#b8956b',
@@ -100,13 +90,8 @@ export const controlRoomTheme = {
100
90
  colorFgSecondary: '#888888',
101
91
  colorFgTertiary: '#555555',
102
92
  colorFgMuted: '#333333',
93
+ // Accent — SEED ONLY (CSS engine derives the ramp).
103
94
  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
95
  colorSuccess: '#00ff41',
111
96
  colorWarning: '#ff8c00',
112
97
  colorError: '#ff3131',
@@ -121,19 +106,16 @@ export const controlRoomTheme = {
121
106
  * Brass accent theme variant — warm metallic (preserved for compatibility)
122
107
  */
123
108
  export const brassAccentTheme = createTheme(defaultDarkTheme, {
124
- colorAccent: '#b87333',
125
- colorAccentHover: '#d4892f',
126
- colorAccentActive: '#8a5526',
127
- colorAccentSubtle: 'rgba(184, 115, 51, 0.08)',
109
+ colorAccent: '#b87333', // seed only — ramp derived by the CSS engine
128
110
  });
129
111
  /**
130
112
  * Copper accent theme variant — reddish metallic (preserved for compatibility)
131
113
  */
114
+ // Copper = reddish metallic, distinct from brass (#b87333 is yellow-gold).
115
+ // The CSS engine derives the ramp from this seed, so hover/active/glow
116
+ // all shift toward the red-copper character automatically.
132
117
  export const copperAccentTheme = createTheme(defaultDarkTheme, {
133
- colorAccent: '#b87333',
134
- colorAccentHover: '#c98444',
135
- colorAccentActive: '#a05f2a',
136
- colorAccentSubtle: 'rgba(184, 115, 51, 0.08)',
118
+ colorAccent: '#b85533', // seed only — reddish copper
137
119
  });
138
120
  /**
139
121
  * High contrast accessibility theme
@@ -144,7 +126,5 @@ export const highContrastTheme = createTheme(defaultDarkTheme, {
144
126
  colorFgPrimary: '#ffffff',
145
127
  colorFgSecondary: '#eeeeee',
146
128
  colorFgMuted: '#aaaaaa',
147
- colorAccent: '#ffcc00',
148
- colorAccentHover: '#ffdd33',
149
- colorAccentActive: '#e6b800',
129
+ colorAccent: '#ffcc00', // seed only — ramp derived by the CSS engine
150
130
  });
@@ -0,0 +1,76 @@
1
+ /* @kos/design-system — Ambient Layer
2
+ Opt-in decorative tokens for marketing/docs/onboarding surfaces —
3
+ NOT auto-imported (see src/index.ts). Import explicitly:
4
+ import '@stephen-netu/design-system/tokens/ambient.css';
5
+
6
+ Everything here derives from the existing single-seed accent engine
7
+ (--accent-primary → color-mix()) already defined in tokens.css. No
8
+ hardcoded hues are introduced — swapping --accent-primary re-themes
9
+ every gradient/glow defined here for free. Do not add hardcoded
10
+ parallel palettes; that reintroduces the "brass leak" anti-pattern
11
+ tokens.css's own comments warn against. */
12
+
13
+ :root {
14
+ /* --- Gradient --- */
15
+ --gradient-accent: linear-gradient(135deg, var(--accent-primary) 0%, var(--color-accent-secondary) 100%);
16
+
17
+ /* --- Ambient glow layers — low-opacity radial fields for hero/empty-state backgrounds --- */
18
+ --glow-ambient-1: color-mix(in srgb, var(--accent-primary) 7%, transparent);
19
+ --glow-ambient-2: color-mix(in srgb, var(--color-accent-secondary) 5%, transparent);
20
+ --glow-ambient-3: color-mix(in srgb, var(--accent-primary) 3%, transparent);
21
+ }
22
+
23
+ /* --- Gradient text --- */
24
+ .text-gradient-accent {
25
+ background: var(--gradient-accent);
26
+ -webkit-background-clip: text;
27
+ background-clip: text;
28
+ color: transparent;
29
+ }
30
+
31
+ /* --- Ambient background glow ---
32
+ Apply to a positioned container; renders a fixed-feel radial glow trio
33
+ behind its content. Marketing/docs surfaces only — do not use on
34
+ console/product chrome. */
35
+ .bg-ambient-glow {
36
+ position: relative;
37
+ }
38
+ .bg-ambient-glow::before {
39
+ content: '';
40
+ position: absolute;
41
+ inset: 0;
42
+ z-index: 0;
43
+ pointer-events: none;
44
+ background:
45
+ radial-gradient(900px 600px at 10% -10%, var(--glow-ambient-1), transparent 65%),
46
+ radial-gradient(700px 500px at 92% 8%, var(--glow-ambient-2), transparent 60%),
47
+ radial-gradient(1000px 800px at 50% 140%, var(--glow-ambient-3), transparent 70%);
48
+ }
49
+ .bg-ambient-glow > * {
50
+ position: relative;
51
+ z-index: 1;
52
+ }
53
+
54
+ /* --- Scroll reveal (see p0-primitives/utils/reveal.ts) ---
55
+ Marketing/docs surfaces only — never wire into console/product chrome. */
56
+ @keyframes ds-reveal-fade-up {
57
+ from { opacity: 0; transform: translateY(20px); }
58
+ to { opacity: 1; transform: translateY(0); }
59
+ }
60
+
61
+ .ds-reveal {
62
+ opacity: 0;
63
+ }
64
+
65
+ .ds-reveal.ds-reveal-in {
66
+ animation: ds-reveal-fade-up 0.7s cubic-bezier(0.16, 0.8, 0.3, 1) both;
67
+ animation-delay: var(--ds-reveal-delay, 0ms);
68
+ }
69
+
70
+ @media (prefers-reduced-motion: reduce) {
71
+ .ds-reveal,
72
+ .ds-reveal.ds-reveal-in {
73
+ opacity: 1;
74
+ animation: none;
75
+ }
76
+ }
@@ -28,16 +28,69 @@
28
28
  --color-card-text-secondary: #a8a08c;
29
29
  --color-card-text-tertiary: #6b6558;
30
30
 
31
- /* --- Accent (default: brass, user-controllable via --accent-*) --- */
32
- --color-accent: var(--accent-primary, #b87333);
33
- --color-accent-hover: var(--accent-hover, #d4892f);
34
- --color-accent-active: var(--accent-active, #8a5526);
35
- --color-accent-glow: var(--accent-glow, rgba(184, 115, 51, 0.28));
36
- --color-accent-muted: var(--accent-muted, rgba(184, 115, 51, 0.16));
37
- --color-accent-subtle: var(--accent-subtle, rgba(184, 115, 51, 0.08));
38
- --color-accent-faint: var(--accent-faint, rgba(184, 115, 51, 0.04));
39
-
40
- /* Overlay levels white opacity ramps for borders, backgrounds, hover states */
31
+ /* --- Accent SINGLE-SEED ENGINE ----------------------------------------
32
+ A consumer sets ONE value, --accent-primary (the in-app accent dropdown),
33
+ and the whole accent system recomputes via color-mix. No value below is
34
+ pinned to a hue, so any user color stays coherent across light/dark.
35
+ (Was: 7 hand-picked brass values + brass rgba ramps that ignored the
36
+ user's choice the "brass leak".) --accent-* remain consumer override
37
+ hooks (token-audit ACCENT_HOOKS); components consume --color-accent* only.
38
+
39
+ Browser support: color-mix() requires Chrome 111+, Safari 16.2+, Firefox
40
+ 113+. Fallbacks below use var(--accent-primary) directly (no hue shift),
41
+ which is acceptable on legacy browsers — the seed itself is still
42
+ controllable. */
43
+ --accent-primary: #b87333;
44
+ --accent-hover: var(--accent-primary);
45
+ --accent-active: var(--accent-primary);
46
+ --accent-glow: var(--accent-primary);
47
+ --accent-muted: var(--accent-primary);
48
+ --accent-subtle: var(--accent-primary);
49
+ --accent-faint: var(--accent-primary);
50
+ --color-accent: var(--accent-primary);
51
+ --color-accent-hover: var(--accent-hover);
52
+ --color-accent-active: var(--accent-active);
53
+ --color-accent-glow: var(--accent-glow);
54
+ --color-accent-muted: var(--accent-muted);
55
+ --color-accent-subtle: var(--accent-subtle);
56
+ --color-accent-faint: var(--accent-faint);
57
+ --color-accent-secondary: var(--accent-primary);
58
+ }
59
+
60
+ @supports (color-mix(in srgb, red, transparent)) {
61
+ :root {
62
+ --accent-hover: color-mix(in oklab, var(--accent-primary), #fff 16%);
63
+ --accent-active: color-mix(in oklab, var(--accent-primary), #000 22%);
64
+ --accent-glow: color-mix(in srgb, var(--accent-primary) 28%, transparent);
65
+ --accent-muted: color-mix(in srgb, var(--accent-primary) 16%, transparent);
66
+ --accent-subtle: color-mix(in srgb, var(--accent-primary) 8%, transparent);
67
+ --accent-faint: color-mix(in srgb, var(--accent-primary) 4%, transparent);
68
+ --color-accent-hover: var(--accent-hover);
69
+ --color-accent-active: var(--accent-active);
70
+ --color-accent-glow: var(--accent-glow);
71
+ --color-accent-muted: var(--accent-muted);
72
+ --color-accent-subtle: var(--accent-subtle);
73
+ --color-accent-faint: var(--accent-faint);
74
+ --color-accent-secondary: color-mix(in oklab, var(--accent-primary), #fff 26%);
75
+ --overlay-accent-06: color-mix(in srgb, var(--accent-primary) 6%, transparent);
76
+ --overlay-accent-08: color-mix(in srgb, var(--accent-primary) 8%, transparent);
77
+ --overlay-accent-12: color-mix(in srgb, var(--accent-primary) 12%, transparent);
78
+ --overlay-accent-18: color-mix(in srgb, var(--accent-primary) 18%, transparent);
79
+ --overlay-accent-30: color-mix(in srgb, var(--accent-primary) 30%, transparent);
80
+ --overlay-accent-45: color-mix(in srgb, var(--accent-primary) 45%, transparent);
81
+ --overlay-accent-50: color-mix(in srgb, var(--accent-primary) 50%, transparent);
82
+ --overlay-accent-55: color-mix(in srgb, var(--accent-primary) 55%, transparent);
83
+ --grid-line: color-mix(in srgb, var(--accent-primary) 3%, transparent);
84
+ --grid-dot: color-mix(in srgb, var(--accent-primary) 6%, transparent);
85
+ --grid-major: color-mix(in srgb, var(--accent-primary) 10%, transparent);
86
+ --shadow-glow: 0 0 12px color-mix(in srgb, var(--accent-primary) 15%, transparent);
87
+ --shadow-glow-lg: 0 0 24px color-mix(in srgb, var(--accent-primary) 25%, transparent);
88
+ --shadow-accent-glow: 0 0 16px color-mix(in srgb, var(--accent-primary) 15%, transparent), 0 0 32px color-mix(in srgb, var(--accent-primary) 5%, transparent);
89
+ }
90
+ }
91
+
92
+ :root {
93
+ /* --- Overlay levels — white opacity ramps for borders, backgrounds, hover states */
41
94
  --overlay-white-02: rgba(255, 255, 255, 0.02);
42
95
  --overlay-white-03: rgba(255, 255, 255, 0.03);
43
96
  --overlay-white-04: rgba(255, 255, 255, 0.04);
@@ -49,19 +102,21 @@
49
102
  --overlay-white-22: rgba(255, 255, 255, 0.22);
50
103
  --overlay-white-25: rgba(255, 255, 255, 0.25);
51
104
 
52
- /* Overlay levels — accent color opacity ramps */
53
- --overlay-accent-06: rgba(184, 115, 51, 0.06);
54
- --overlay-accent-08: rgba(184, 115, 51, 0.08);
55
- --overlay-accent-12: rgba(184, 115, 51, 0.12);
56
- --overlay-accent-18: rgba(184, 115, 51, 0.18);
57
- --overlay-accent-30: rgba(184, 115, 51, 0.30);
58
- --overlay-accent-45: rgba(184, 115, 51, 0.45);
59
- --overlay-accent-50: rgba(184, 115, 51, 0.50);
60
- --overlay-accent-55: rgba(184, 115, 51, 0.55);
61
-
62
- /* Overlay levels — status color opacity ramps */
63
- --overlay-success-06: rgba(79, 168, 162, 0.06);
64
- --overlay-error-06: rgba(193, 74, 74, 0.06);
105
+ /* Overlay levels — accent color opacity ramps
106
+ (fallback: transparent for browsers without color-mix) */
107
+ --overlay-accent-06: transparent;
108
+ --overlay-accent-08: transparent;
109
+ --overlay-accent-12: transparent;
110
+ --overlay-accent-18: transparent;
111
+ --overlay-accent-30: transparent;
112
+ --overlay-accent-45: transparent;
113
+ --overlay-accent-50: transparent;
114
+ --overlay-accent-55: transparent;
115
+
116
+ /* Overlay levels status color opacity ramps */
117
+ --overlay-success-06: rgba(79, 168, 162, 0.06);
118
+ --overlay-warning-06: rgba(245, 192, 48, 0.06);
119
+ --overlay-error-06: rgba(193, 74, 74, 0.06);
65
120
 
66
121
  /* Cell background for band/offer tables */
67
122
  --color-bg-cell: #121518;
@@ -78,7 +133,9 @@
78
133
  --color-success: #4fa8a2;
79
134
  --color-warning: #d4a04c;
80
135
  --color-error: #c14a4a;
136
+ --color-error-bg: rgba(193, 74, 74, 0.10);
81
137
  --color-info: #5b8db8;
138
+ --color-neutral: #6b6558; /* Inactive / archival (e.g. compost phase) */
82
139
 
83
140
  /* --- Semantic (presence) --- */
84
141
  --color-online: #4fa8a2;
@@ -117,7 +174,7 @@
117
174
  --border-subtle: rgba(255, 255, 255, 0.06);
118
175
  --border-default: #3a3630;
119
176
  --border-hover: #6b6558;
120
- --border-focus: #b87333;
177
+ --border-focus: var(--accent-primary);
121
178
  --border-alert: #c14a4a;
122
179
  --border-warning: #d4a04c;
123
180
  --divider-color: #181c20;
@@ -127,10 +184,10 @@
127
184
  --color-border-subtle: var(--border-subtle);
128
185
  --color-border-default: var(--border-default);
129
186
 
130
- /* --- Grid (canvas patterns) --- */
131
- --grid-line: rgba(184, 115, 51, 0.03);
132
- --grid-dot: rgba(184, 115, 51, 0.06);
133
- --grid-major: rgba(184, 115, 51, 0.1);
187
+ /* --- Grid (canvas patterns) --- */
188
+ --grid-line: transparent;
189
+ --grid-dot: transparent;
190
+ --grid-major: transparent;
134
191
 
135
192
  /* --- Typography --- */
136
193
  --font-sans: 'Outfit', system-ui, -apple-system, sans-serif;
@@ -147,6 +204,17 @@
147
204
  --text-3xl: 1.875rem;
148
205
  --text-4xl: 2.25rem;
149
206
 
207
+ /* --- Font weight (fixes phantom --font-weight-* referenced by g0 Text.svelte) --- */
208
+ --font-weight-normal: 400;
209
+ --font-weight-medium: 500;
210
+ --font-weight-semibold: 600;
211
+ --font-weight-bold: 700;
212
+
213
+ /* --- Line height (fixes phantom --line-height-* referenced by g0 Text.svelte) --- */
214
+ --line-height-tight: 1.2;
215
+ --line-height-normal: 1.5;
216
+ --line-height-relaxed: 1.7;
217
+
150
218
  /* --- Spacing --- */
151
219
  --space-05: 0.125rem;
152
220
  --space-1: 0.25rem;
@@ -183,12 +251,12 @@
183
251
  --shadow-md: none;
184
252
  --shadow-lg: none;
185
253
  --shadow-xl: none;
186
- --shadow-glow: 0 0 12px rgba(184, 115, 51, 0.15);
187
- --shadow-glow-lg: 0 0 24px rgba(184, 115, 51, 0.25);
188
- --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.4);
189
- --shadow-card: none;
190
- --shadow-card-hover: none;
191
- --shadow-accent-glow: 0 0 16px rgba(184, 115, 51, 0.15), 0 0 32px rgba(184, 115, 51, 0.05);
254
+ --shadow-glow: 0 0 12px rgba(0, 0, 0, 0.4);
255
+ --shadow-glow-lg: 0 0 24px rgba(0, 0, 0, 0.4);
256
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.4);
257
+ --shadow-card: none;
258
+ --shadow-card-hover: none;
259
+ --shadow-accent-glow: 0 0 16px rgba(0, 0, 0, 0.4), 0 0 32px rgba(0, 0, 0, 0.4);
192
260
 
193
261
  /* --- Transitions --- */
194
262
  --transition-fast: 120ms ease;
@@ -244,4 +312,42 @@
244
312
  --z-tooltip: 1070;
245
313
  --z-toast: 1080;
246
314
  --z-glass-box: 9000;
315
+
316
+ /* --- Density (system default = COMPACT) ----------------------------------
317
+ A first-class density tier. Surfaces opt into a calibration with
318
+ [data-density]: comfortable (reading/writing — editor, prose, forms),
319
+ compact (default, general UI), cockpit (monitoring/data-dense — dashboards,
320
+ logs, registries, manifold panels). Same components, three calibrations.
321
+ Components consume these --ui-* tokens for sizing/type instead of raw px.
322
+ Cockpit sits at the legibility floors: data 10px, label 9px, row/target
323
+ 20px, pad 3px, leading 1.22 (note: 20px trips WCAG 2.5.8's 24px pref, so
324
+ cockpit is opt-in, never the global default). */
325
+ --ui-control-h: 24px; /* button / input / select height */
326
+ --ui-row-h: 24px; /* table / list row height (pointer target) */
327
+ --ui-pad-x: 8px;
328
+ --ui-pad-y: 5px;
329
+ --ui-gap: 1px; /* hairline grid gap — the ruled spine */
330
+ --ui-font: 13px; /* body / control text */
331
+ --ui-font-sm: 12px;
332
+ --ui-data: 11px; /* monospace data / table cells */
333
+ --ui-label: 10px; /* uppercase micro-labels */
334
+ --ui-leading: 1.35;
335
+ --ui-icon: 14px;
336
+ }
337
+
338
+ /* Density calibrations — set [data-density] on any container or surface. */
339
+ [data-density="comfortable"] {
340
+ --ui-control-h: 30px; --ui-row-h: 30px; --ui-pad-x: 12px; --ui-pad-y: 8px;
341
+ --ui-gap: 1px; --ui-font: 14px; --ui-font-sm: 13px; --ui-data: 13px;
342
+ --ui-label: 11px; --ui-leading: 1.45; --ui-icon: 16px;
343
+ }
344
+ [data-density="compact"] {
345
+ --ui-control-h: 24px; --ui-row-h: 24px; --ui-pad-x: 8px; --ui-pad-y: 5px;
346
+ --ui-gap: 1px; --ui-font: 13px; --ui-font-sm: 12px; --ui-data: 11px;
347
+ --ui-label: 10px; --ui-leading: 1.35; --ui-icon: 14px;
348
+ }
349
+ [data-density="cockpit"] {
350
+ --ui-control-h: 20px; --ui-row-h: 20px; --ui-pad-x: 6px; --ui-pad-y: 3px;
351
+ --ui-gap: 1px; --ui-font: 12px; --ui-font-sm: 11px; --ui-data: 10px;
352
+ --ui-label: 9px; --ui-leading: 1.22; --ui-icon: 13px;
247
353
  }
@@ -1,3 +1,5 @@
1
+ export { reveal } from './reveal';
2
+ export type { RevealOptions } from './reveal';
1
3
  /**
2
4
  * Class name merger - combines class names, filtering out falsy values
3
5
  */
@@ -5,9 +7,9 @@ export declare function cn(...classes: (string | undefined | null | false)[]): s
5
7
  /**
6
8
  * Debounce function
7
9
  */
8
- export declare function debounce<T extends (...args: any[]) => any>(fn: T, delay: number): (...args: Parameters<T>) => void;
10
+ export declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, delay: number): (...args: Parameters<T>) => void;
9
11
  /**
10
12
  * Throttle function
11
13
  */
12
- export declare function throttle<T extends (...args: any[]) => any>(fn: T, limit: number): (...args: Parameters<T>) => void;
14
+ export declare function throttle<T extends (...args: unknown[]) => unknown>(fn: T, limit: number): (...args: Parameters<T>) => void;
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/p0-primitives/utils/index.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAMlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CASlC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/p0-primitives/utils/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;GAEG;AACH,wBAAgB,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAMlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CASlC"}
@@ -1,4 +1,5 @@
1
1
  // Utility functions for the design system
2
+ export { reveal } from './reveal';
2
3
  /**
3
4
  * Class name merger - combines class names, filtering out falsy values
4
5
  */
@@ -0,0 +1,15 @@
1
+ import type { Action } from 'svelte/action';
2
+ /**
3
+ * Scroll-reveal action for marketing/docs surfaces — never wire into
4
+ * console/product chrome (see ambient.css usage note). Adds `ds-reveal`
5
+ * on mount and `ds-reveal-in` once the node crosses `threshold`; pass
6
+ * `delayMs` to stagger a group of siblings. Respects
7
+ * prefers-reduced-motion by revealing immediately with no observer.
8
+ */
9
+ export interface RevealOptions {
10
+ delayMs?: number;
11
+ threshold?: number;
12
+ once?: boolean;
13
+ }
14
+ export declare const reveal: Action<HTMLElement, RevealOptions | undefined>;
15
+ //# sourceMappingURL=reveal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reveal.d.ts","sourceRoot":"","sources":["../../../src/p0-primitives/utils/reveal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,GAAG,SAAS,CAmCjE,CAAC"}
@@ -0,0 +1,29 @@
1
+ export const reveal = (node, options = {}) => {
2
+ const { delayMs = 0, threshold = 0.12, once = true } = options;
3
+ if (delayMs) {
4
+ node.style.setProperty('--ds-reveal-delay', `${delayMs}ms`);
5
+ }
6
+ if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
7
+ node.classList.add('ds-reveal-in');
8
+ return {};
9
+ }
10
+ node.classList.add('ds-reveal');
11
+ const observer = new IntersectionObserver((entries) => {
12
+ for (const entry of entries) {
13
+ if (entry.isIntersecting) {
14
+ node.classList.add('ds-reveal-in');
15
+ if (once)
16
+ observer.unobserve(entry.target);
17
+ }
18
+ else if (!once) {
19
+ node.classList.remove('ds-reveal-in');
20
+ }
21
+ }
22
+ }, { threshold });
23
+ observer.observe(node);
24
+ return {
25
+ destroy() {
26
+ observer.disconnect();
27
+ }
28
+ };
29
+ };
@@ -0,0 +1,95 @@
1
+ import { afterEach, beforeEach, describe, it, expect } from 'vitest';
2
+ import { reveal } from './reveal';
3
+ // Scoped to this file only (installed in beforeEach, removed in afterEach) —
4
+ // a global IntersectionObserver polyfill in vitest-setup.ts changes which
5
+ // code path unrelated components (e.g. MarkmapDiagram's d3-zoom setup) take,
6
+ // crashing on jsdom's incomplete SVG support. Keep this local.
7
+ class IntersectionObserverMock {
8
+ static instances = [];
9
+ callback;
10
+ observedTargets = [];
11
+ constructor(callback) {
12
+ this.callback = callback;
13
+ IntersectionObserverMock.instances.push(this);
14
+ }
15
+ observe(target) { this.observedTargets.push(target); }
16
+ unobserve(target) { this.observedTargets = this.observedTargets.filter((t) => t !== target); }
17
+ disconnect() { this.observedTargets = []; }
18
+ takeRecords() { return []; }
19
+ }
20
+ function lastObserver() {
21
+ return IntersectionObserverMock.instances[IntersectionObserverMock.instances.length - 1];
22
+ }
23
+ function makeEntry(target, isIntersecting) {
24
+ return { target, isIntersecting };
25
+ }
26
+ describe('reveal', () => {
27
+ let node;
28
+ let originalIntersectionObserver;
29
+ beforeEach(() => {
30
+ originalIntersectionObserver = globalThis.IntersectionObserver;
31
+ IntersectionObserverMock.instances = [];
32
+ globalThis.IntersectionObserver = IntersectionObserverMock;
33
+ });
34
+ afterEach(() => {
35
+ node?.remove();
36
+ globalThis.IntersectionObserver = originalIntersectionObserver;
37
+ });
38
+ it('adds the ds-reveal class on mount', () => {
39
+ node = document.createElement('div');
40
+ reveal(node);
41
+ expect(node.classList.contains('ds-reveal')).toBe(true);
42
+ });
43
+ it('adds ds-reveal-in once the node intersects', () => {
44
+ node = document.createElement('div');
45
+ reveal(node);
46
+ const observer = lastObserver();
47
+ observer.callback([makeEntry(node, true)], observer);
48
+ expect(node.classList.contains('ds-reveal-in')).toBe(true);
49
+ });
50
+ it('does not add ds-reveal-in before intersecting', () => {
51
+ node = document.createElement('div');
52
+ reveal(node);
53
+ expect(node.classList.contains('ds-reveal-in')).toBe(false);
54
+ });
55
+ it('sets --ds-reveal-delay when delayMs is passed', () => {
56
+ node = document.createElement('div');
57
+ reveal(node, { delayMs: 240 });
58
+ expect(node.style.getPropertyValue('--ds-reveal-delay')).toBe('240ms');
59
+ });
60
+ it('removes ds-reveal-in on exit when once is false', () => {
61
+ node = document.createElement('div');
62
+ reveal(node, { once: false });
63
+ const observer = lastObserver();
64
+ observer.callback([makeEntry(node, true)], observer);
65
+ expect(node.classList.contains('ds-reveal-in')).toBe(true);
66
+ observer.callback([makeEntry(node, false)], observer);
67
+ expect(node.classList.contains('ds-reveal-in')).toBe(false);
68
+ });
69
+ it('disconnects the observer on destroy', () => {
70
+ node = document.createElement('div');
71
+ const action = reveal(node);
72
+ const observer = lastObserver();
73
+ expect(observer.observedTargets).toContain(node);
74
+ action?.destroy?.();
75
+ expect(observer.observedTargets).not.toContain(node);
76
+ });
77
+ it('reveals immediately with no observer when prefers-reduced-motion is set', () => {
78
+ const originalMatchMedia = window.matchMedia;
79
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
80
+ window.matchMedia = (query) => ({
81
+ matches: query.includes('reduce'),
82
+ media: query,
83
+ addListener: () => { },
84
+ removeListener: () => { },
85
+ addEventListener: () => { },
86
+ removeEventListener: () => { },
87
+ dispatchEvent: () => false
88
+ });
89
+ node = document.createElement('div');
90
+ reveal(node);
91
+ expect(node.classList.contains('ds-reveal-in')).toBe(true);
92
+ expect(node.classList.contains('ds-reveal')).toBe(false);
93
+ window.matchMedia = originalMatchMedia;
94
+ });
95
+ });
@@ -68,7 +68,7 @@
68
68
  case 'syncing':
69
69
  return {
70
70
  icon: 'sync',
71
- color: 'var(--color-accent, #b87333)',
71
+ color: 'var(--color-accent, #888)',
72
72
  label: 'Syncing...',
73
73
  message: pendingCount > 0 ? `${pendingCount} items pending` : 'Synchronizing changes'
74
74
  };
@@ -263,7 +263,7 @@
263
263
  }
264
264
 
265
265
  .action-danger {
266
- background: var(--color-error-subtle, rgba(192, 57, 43, 0.15));
266
+ background: var(--color-error-bg, rgba(193, 74, 74, 0.10));
267
267
  color: var(--color-error, #c0392b);
268
268
  border-color: var(--color-error, #c0392b);
269
269
  }
@@ -1,4 +1,5 @@
1
- export type ThemeName = 'dark' | 'light' | 'control-room';
1
+ import type { ThemeName } from '../p0-primitives/theme-context';
2
+ export type { ThemeName } from '../p0-primitives/theme-context';
2
3
  declare class ThemeStore {
3
4
  #private;
4
5
  get theme(): ThemeName;
@@ -7,6 +8,6 @@ declare class ThemeStore {
7
8
  syncFromDOM(): void;
8
9
  }
9
10
  export declare const themeStore: ThemeStore;
11
+ export declare function provideThemeStoreContext(): void;
10
12
  export declare function initThemeStore(): void;
11
- export {};
12
13
  //# sourceMappingURL=ThemeStore.svelte.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeStore.svelte.d.ts","sourceRoot":"","sources":["../../src/s0-state/ThemeStore.svelte.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC;AAyB1D,cAAM,UAAU;;IAGd,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,QAAQ,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI;IAS5B,WAAW,IAAI,IAAI;IAMnB,WAAW,IAAI,IAAI;CAMpB;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC;AAE3C,wBAAgB,cAAc,IAAI,IAAI,CAMrC"}
1
+ {"version":3,"file":"ThemeStore.svelte.d.ts","sourceRoot":"","sources":["../../src/s0-state/ThemeStore.svelte.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,YAAY,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAyBhE,cAAM,UAAU;;IAGd,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,QAAQ,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI;IAS5B,WAAW,IAAI,IAAI;IAMnB,WAAW,IAAI,IAAI;CAMpB;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC;AAE3C,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,wBAAgB,cAAc,IAAI,IAAI,CAOrC"}
@@ -1,4 +1,19 @@
1
- import { onMount } from 'svelte';
1
+ /**
2
+ * ThemeStore — Module-scope singleton for theme state (F-29).
3
+ *
4
+ * Instantiated once at module scope. Reads localStorage during import
5
+ * (safely guarded by hasLocalStorage()). Bundlers keep the instantiation
6
+ * at import time, so this module is NOT SSR-inert.
7
+ *
8
+ * @module s0-state/ThemeStore
9
+ * @example
10
+ * ```ts
11
+ * import { themeStore } from '@kos/design-system/s0-state';
12
+ * themeStore.setTheme('light');
13
+ * ```
14
+ */
15
+ import { setContext, onMount } from 'svelte';
16
+ import { THEME_STORE_KEY } from '../p0-primitives/theme-context';
2
17
  const STORAGE_KEY = 'kos-theme';
3
18
  function hasLocalStorage() {
4
19
  try {
@@ -51,7 +66,11 @@ class ThemeStore {
51
66
  }
52
67
  }
53
68
  export const themeStore = new ThemeStore();
69
+ export function provideThemeStoreContext() {
70
+ setContext(THEME_STORE_KEY, themeStore);
71
+ }
54
72
  export function initThemeStore() {
73
+ provideThemeStoreContext();
55
74
  onMount(() => {
56
75
  themeStore.syncFromDOM();
57
76
  const stored = getStoredTheme();
@@ -5,6 +5,6 @@ export type { DerivedOptions } from './derived';
5
5
  export { createVirtualList, createVirtualGrid, createPreloader, calculateGridLayout, type VirtualListConfig, type VirtualItem, type VirtualList, type PreloaderConfig, type PreloaderState, } from './virtual';
6
6
  export { default as SyncStatus } from './SyncStatus.svelte';
7
7
  export type { SyncStatusState, SyncStatusAction } from './SyncStatus.svelte';
8
- export type { ModalData } from './modal-stack-store.svelte';
9
- export type { ThemeName } from './ThemeStore.svelte';
8
+ export { modalStackStore } from './modal-stack-store.svelte';
9
+ export type { ModalData, VisibleModal } from './modal-stack-store.svelte';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/s0-state/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/s0-state/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}