@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-adapter.d.ts","sourceRoot":"","sources":["../../src/n1-flow-canvas/pipeline-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,YAAY,CAAC;AAItE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjG,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0CD,eAAO,MAAM,oBAAoB,UAA6D,CAAC;AAE/F,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAiG3E;AAcD,wBAAgB,2BAA2B,IAAI,aAAa,CAe3D"}
@@ -0,0 +1,160 @@
1
+ // N1 Pipeline Adapter — maps PipelineState → GraphSnapshot for FlowCanvas
2
+ // READ-ONLY consumer of ~/.kos/pipeline/<run-id>/pipeline-state.json
3
+ // S-02: deterministic ordering — all collections Array/Map
4
+ // ── Token budgets (mirrors driver.rs) ────────────────────────────────────────
5
+ const STAGE_TOKEN_BUDGETS = {
6
+ intake: 10_000,
7
+ research: 40_000,
8
+ implement: 120_000,
9
+ review: 40_000,
10
+ integrate: 10_000,
11
+ };
12
+ function formatTokens(t) {
13
+ if (t >= 1_000_000)
14
+ return `${(t / 1_000_000).toFixed(1)}M`;
15
+ if (t >= 1_000)
16
+ return `${(t / 1_000).toFixed(0)}K`;
17
+ return `${t}`;
18
+ }
19
+ // ── Status color mapping ─────────────────────────────────────────────────────
20
+ const STAGE_COLORS = {
21
+ Pending: '#646b72',
22
+ Running: '#3fae9f',
23
+ Passed: '#3fae9f',
24
+ Failed: '#cf4e4e',
25
+ Skipped: '#4a4f55',
26
+ Crashed: '#cf4e4e',
27
+ };
28
+ function statusIcon(status) {
29
+ switch (status) {
30
+ case 'Pending': return '○';
31
+ case 'Running': return '●';
32
+ case 'Passed': return '✓';
33
+ case 'Failed': return '✗';
34
+ case 'Skipped': return '−';
35
+ case 'Crashed': return '💀';
36
+ }
37
+ }
38
+ // ── Adapter ──────────────────────────────────────────────────────────────────
39
+ export const PIPELINE_STAGE_NAMES = ['intake', 'research', 'implement', 'review', 'integrate'];
40
+ export function pipelineStateToSnapshot(state) {
41
+ const nodes = [];
42
+ const edges = [];
43
+ const stageOrder = PIPELINE_STAGE_NAMES;
44
+ const stageMap = new Map();
45
+ for (const s of state.stages)
46
+ stageMap.set(s.name, s);
47
+ let prevName = null;
48
+ for (const name of stageOrder) {
49
+ const stage = stageMap.get(name);
50
+ const status = stage?.status ?? 'Pending';
51
+ const color = STAGE_COLORS[status];
52
+ const icon = statusIcon(status);
53
+ // Build label with status icon, name, attempt badge, token budget
54
+ let label = `${icon} ${name}`;
55
+ if (stage && stage.attempt > 1) {
56
+ label += ` #${stage.attempt}`;
57
+ }
58
+ // Collect badge-like data into node.data for FlowCanvas rendering
59
+ const data = {
60
+ status,
61
+ color,
62
+ icon,
63
+ pipelineStatus: status,
64
+ };
65
+ if (stage) {
66
+ data.attempt = stage.attempt;
67
+ if (stage.selected_model)
68
+ data.model = stage.selected_model;
69
+ data.budget = formatTokens(STAGE_TOKEN_BUDGETS[name] ?? 0);
70
+ if (stage.error)
71
+ data.error = stage.error;
72
+ if (stage.started_at)
73
+ data.started_at = stage.started_at;
74
+ if (stage.completed_at)
75
+ data.completed_at = stage.completed_at;
76
+ if (stage.termination) {
77
+ data.termination = stage.termination.reason;
78
+ data.final_tokens = stage.termination.final_tokens;
79
+ }
80
+ }
81
+ nodes.push({ id: name, label, data });
82
+ // Sequential handoff edge: prev → current
83
+ if (prevName) {
84
+ edges.push({
85
+ id: `${prevName}->${name}`,
86
+ sourceId: prevName,
87
+ targetId: name,
88
+ label: 'handoff',
89
+ });
90
+ }
91
+ prevName = name;
92
+ }
93
+ // Back-edge for active remediation: review → implement
94
+ if (state.remediation_count > 0 && state.remediation_count < state.max_remediation) {
95
+ const reviewStage = stageMap.get('review');
96
+ if (reviewStage && reviewStage.status === 'Failed') {
97
+ edges.push({
98
+ id: 'review->implement:remediate',
99
+ sourceId: 'review',
100
+ targetId: 'implement',
101
+ label: 'remediate',
102
+ });
103
+ }
104
+ }
105
+ // Queue tail node (D14) — shows pending queue depth if available
106
+ // For now, show remediation count as queue indicator
107
+ if (state.remediation_count > 0) {
108
+ nodes.push({
109
+ id: 'remediation',
110
+ label: `↻ x${state.remediation_count}`,
111
+ data: { status: 'remediation', count: state.remediation_count },
112
+ });
113
+ edges.push({
114
+ id: 'review->remediation',
115
+ sourceId: 'review',
116
+ targetId: 'remediation',
117
+ label: 'remediate',
118
+ });
119
+ edges.push({
120
+ id: 'remediation->implement',
121
+ sourceId: 'remediation',
122
+ targetId: 'implement',
123
+ label: 're-enter',
124
+ });
125
+ }
126
+ return {
127
+ nodes,
128
+ edges,
129
+ focusNodeId: findFocusNode(stageMap),
130
+ };
131
+ }
132
+ function findFocusNode(stageMap) {
133
+ for (const name of PIPELINE_STAGE_NAMES) {
134
+ const stage = stageMap.get(name);
135
+ if (stage && stage.status === 'Running')
136
+ return name;
137
+ }
138
+ for (const name of PIPELINE_STAGE_NAMES) {
139
+ const stage = stageMap.get(name);
140
+ if (stage && stage.status === 'Pending')
141
+ return name;
142
+ }
143
+ return PIPELINE_STAGE_NAMES[0] ?? null;
144
+ }
145
+ export function createEmptyPipelineSnapshot() {
146
+ return {
147
+ nodes: PIPELINE_STAGE_NAMES.map((name, i) => ({
148
+ id: name,
149
+ label: `○ ${name}`,
150
+ data: { status: 'Pending', pipelineStatus: 'Pending' },
151
+ })),
152
+ edges: PIPELINE_STAGE_NAMES.slice(0, -1).map((name, i) => ({
153
+ id: `${name}->${PIPELINE_STAGE_NAMES[i + 1]}`,
154
+ sourceId: name,
155
+ targetId: PIPELINE_STAGE_NAMES[i + 1],
156
+ label: 'handoff',
157
+ })),
158
+ focusNodeId: PIPELINE_STAGE_NAMES[0],
159
+ };
160
+ }
@@ -0,0 +1,116 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { nodeHitTest, domEventToCanvasCoords, parseMentionEdges, parseGroupedSequenceEdges, } from './utils';
3
+ describe('n1-flow-canvas/utils', () => {
4
+ describe('nodeHitTest', () => {
5
+ it('returns node id when point is inside a node rect', () => {
6
+ const positions = new Map([
7
+ ['n1', { id: 'n1', x: 10, y: 20, width: 100, height: 50 }],
8
+ ['n2', { id: 'n2', x: 200, y: 200, width: 80, height: 40 }],
9
+ ]);
10
+ expect(nodeHitTest(50, 40, positions)).toBe('n1');
11
+ });
12
+ it('returns null when point is outside all nodes', () => {
13
+ const positions = new Map([
14
+ ['n1', { id: 'n1', x: 10, y: 20, width: 100, height: 50 }],
15
+ ]);
16
+ expect(nodeHitTest(500, 500, positions)).toBeNull();
17
+ });
18
+ it('returns null for empty positions map', () => {
19
+ expect(nodeHitTest(50, 50, new Map())).toBeNull();
20
+ });
21
+ it('returns first matching node for overlapping rects', () => {
22
+ const positions = new Map();
23
+ positions.set('a', { id: 'a', x: 0, y: 0, width: 100, height: 100 });
24
+ positions.set('b', { id: 'b', x: 50, y: 50, width: 100, height: 100 });
25
+ const result = nodeHitTest(60, 60, positions);
26
+ expect(result).toBe('a');
27
+ });
28
+ });
29
+ describe('domEventToCanvasCoords', () => {
30
+ it('converts DOM event to canvas pixel coordinates', () => {
31
+ const mockEvent = {
32
+ clientX: 100,
33
+ clientY: 200,
34
+ currentTarget: {
35
+ getBoundingClientRect: () => ({
36
+ left: 50,
37
+ top: 100,
38
+ width: 200,
39
+ height: 400,
40
+ }),
41
+ },
42
+ };
43
+ const coords = domEventToCanvasCoords(mockEvent, 800, 1600);
44
+ expect(coords.x).toBe(200);
45
+ expect(coords.y).toBe(400);
46
+ });
47
+ it('handles identity scale (1:1)', () => {
48
+ const mockEvent = {
49
+ clientX: 150,
50
+ clientY: 250,
51
+ currentTarget: {
52
+ getBoundingClientRect: () => ({
53
+ left: 50,
54
+ top: 50,
55
+ width: 800,
56
+ height: 600,
57
+ }),
58
+ },
59
+ };
60
+ const coords = domEventToCanvasCoords(mockEvent, 800, 600);
61
+ expect(coords.x).toBe(100);
62
+ expect(coords.y).toBe(200);
63
+ });
64
+ });
65
+ describe('parseMentionEdges', () => {
66
+ it('parses edges from description mentions', () => {
67
+ const items = [
68
+ { id: 'wt-1', description: 'Depends on wt-2 for setup' },
69
+ { id: 'wt-2', description: 'No deps' },
70
+ ];
71
+ const edges = parseMentionEdges(items, (t) => t.id, (t) => t.description ?? '', /wt-(\d+)/g, (m) => `wt-${m}`);
72
+ expect(edges.size).toBe(1);
73
+ expect(edges.has('wt-1->wt-2')).toBe(true);
74
+ });
75
+ it('returns empty map for items with no mentions', () => {
76
+ const items = [
77
+ { id: 'wt-1', description: 'No references here' },
78
+ { id: 'wt-2', description: 'Also none' },
79
+ ];
80
+ const edges = parseMentionEdges(items, (t) => t.id, (t) => t.description ?? '', /wt-(\d+)/g, (m) => `wt-${m}`);
81
+ expect(edges.size).toBe(0);
82
+ });
83
+ it('skips mentions to unknown ids', () => {
84
+ const items = [
85
+ { id: 'wt-1', description: 'Depends on wt-999' },
86
+ ];
87
+ const edges = parseMentionEdges(items, (t) => t.id, (t) => t.description ?? '', /wt-(\d+)/g, (m) => `wt-${m}`);
88
+ expect(edges.size).toBe(0);
89
+ });
90
+ });
91
+ describe('parseGroupedSequenceEdges', () => {
92
+ it('chains items sharing the same group key', () => {
93
+ const items = [
94
+ { id: 'a', domain: 'x', workspace: 'w1', createdAt: '2024-01-01' },
95
+ { id: 'b', domain: 'x', workspace: 'w1', createdAt: '2024-01-02' },
96
+ { id: 'c', domain: 'x', workspace: 'w1', createdAt: '2024-01-03' },
97
+ ];
98
+ const edges = parseGroupedSequenceEdges(items, (t) => t.id, (t) => `${t.domain}:${t.workspace}`, (t) => t.createdAt);
99
+ expect(edges.size).toBe(2);
100
+ expect(edges.has('a->b')).toBe(true);
101
+ expect(edges.has('b->c')).toBe(true);
102
+ });
103
+ it('returns empty map for single-item groups', () => {
104
+ const items = [
105
+ { id: 'a', domain: 'x', workspace: 'w1', createdAt: '2024-01-01' },
106
+ { id: 'b', domain: 'y', workspace: 'w2', createdAt: '2024-01-01' },
107
+ ];
108
+ const edges = parseGroupedSequenceEdges(items, (t) => t.id, (t) => `${t.domain}:${t.workspace}`, (t) => t.createdAt);
109
+ expect(edges.size).toBe(0);
110
+ });
111
+ it('handles empty input', () => {
112
+ const edges = parseGroupedSequenceEdges([], (t) => t.id, (t) => t.group, (t) => t.sort);
113
+ expect(edges.size).toBe(0);
114
+ });
115
+ });
116
+ });
@@ -14,6 +14,7 @@
14
14
  import { GraphState } from '../n1-flow-canvas/graph-state.svelte.js';
15
15
  import { EDGE_REVEAL_STAGGER_MS } from '../n1-flow-canvas/types.js';
16
16
  import { projectToDisk, quaternionToDisk } from './poincare.js';
17
+ import { resolveAccentRamp } from '../p0-primitives/canvas-theme.js';
17
18
 
18
19
  // ── Props ────────────────────────────────────────────────────────────────────
19
20
 
@@ -98,48 +99,74 @@
98
99
  }
99
100
  });
100
101
 
101
- // ── Design tokens ──────────────────────────────────────────────────────────
102
-
103
- const COLORS = {
104
- bg: '#1a1a1a',
105
- diskBg: '#111111',
106
- diskBorder: '#3a3020',
107
- node: '#2a2a2a',
108
- nodeBorder: '#b87333',
109
- nodeText: '#e8e0d0',
110
- edgeLine: '#b87333',
111
- edgeFade: '#5a4a30',
112
- focus: '#d4943a',
113
- grid: '#1e1e1e',
114
- selected: '#d4943a',
115
- };
116
-
117
- // Column-based node fill colors — matches KOS brass/copper theme.
118
- // Semi-transparent fills let the dark disk background show through.
119
- const COLUMN_FILL: Record<string, string> = {
120
- GO: 'rgba(184, 115, 51, 0.35)', // brass — active
121
- CONSULT: 'rgba(184, 115, 51, 0.18)', // brass outline advisory
122
- WEED: 'rgba(200, 160, 50, 0.22)', // warning amber
123
- SPROUT: 'rgba(70, 130, 200, 0.20)', // info blue — growing
124
- FREEZE: 'rgba(80, 110, 180, 0.16)', // cool blue — frozen
125
- SEED: 'rgba(42, 42, 42, 0.60)', // muted — backlog
126
- };
127
-
128
- const COLUMN_BORDER: Record<string, string> = {
129
- GO: '#b87333',
130
- CONSULT: 'rgba(184, 115, 51, 0.6)',
131
- WEED: '#c8a032',
132
- SPROUT: '#4682c8',
133
- FREEZE: '#506eb4',
134
- SEED: '#3a3a3a',
135
- };
102
+ // ── Design tokens — resolved at runtime from CSS custom properties ─────────
103
+ // resolveAccentRamp() reads --accent-primary so any user accent propagates
104
+ // into canvas paint calls without hardcoding a hue.
105
+
106
+ function resolveColors(el: Element) {
107
+ const cs = getComputedStyle(el);
108
+ const rv = (p: string, fb: string) => cs.getPropertyValue(p).trim() || fb;
109
+ const acc = resolveAccentRamp(el);
110
+ return {
111
+ bg: rv('--color-bg-canvas', '#121518'),
112
+ diskBg: rv('--color-bg-app', '#0a0b0c'),
113
+ diskBorder: rv('--border-default', '#262b30'),
114
+ node: rv('--color-bg-panel', '#181c20'),
115
+ nodeBorder: acc.solid,
116
+ nodeText: rv('--color-text-primary', '#e7e9eb'),
117
+ edgeLine: acc.solid,
118
+ edgeFade: acc.alpha(0.3),
119
+ focus: rv('--color-warning', '#d8a23c'),
120
+ grid: rv('--color-bg-panel', '#181c20'),
121
+ selected: acc.hi,
122
+ // column fills accent for active states, fixed semantic for others
123
+ colFill: {
124
+ GO: acc.alpha(0.35),
125
+ CONSULT: acc.alpha(0.18),
126
+ WEED: 'rgba(200, 160, 50, 0.22)',
127
+ SPROUT: 'rgba(70, 130, 200, 0.20)',
128
+ FREEZE: 'rgba(80, 110, 180, 0.16)',
129
+ SEED: 'rgba(42, 42, 42, 0.60)',
130
+ } as Record<string, string>,
131
+ colBorder: {
132
+ GO: acc.solid,
133
+ CONSULT: acc.alpha(0.6),
134
+ WEED: '#c8a032',
135
+ SPROUT: '#4682c8',
136
+ FREEZE: '#506eb4',
137
+ SEED: '#3a3a3a',
138
+ } as Record<string, string>,
139
+ };
140
+ }
141
+
142
+ // Resolved lazily in onMount / on theme change.
143
+ let COLORS = $state<ReturnType<typeof resolveColors> | null>(null);
144
+ // Shims so existing draw code using COLUMN_FILL/COLUMN_BORDER still compiles.
145
+ let COLUMN_FILL: Record<string, string> = {};
146
+ let COLUMN_BORDER: Record<string, string> = {};
136
147
 
137
148
  const NODE_RADIUS = 4;
138
149
  const FONT = '11px var(--font-mono, monospace)';
139
150
 
151
+ // Resolve colors on mount and whenever --accent-primary might change.
152
+ // Using document.documentElement so the accent reflects the ThemeProvider seed.
153
+ $effect(() => {
154
+ function resolve() {
155
+ const c = resolveColors(document.documentElement);
156
+ COLORS = c;
157
+ COLUMN_FILL = c.colFill;
158
+ COLUMN_BORDER = c.colBorder;
159
+ }
160
+ resolve();
161
+ // Re-resolve if ThemeProvider emits a CSS variable change event (optional).
162
+ document.documentElement.addEventListener('kos-theme-change', resolve);
163
+ return () => document.documentElement.removeEventListener('kos-theme-change', resolve);
164
+ });
165
+
140
166
  // ── Render ──────────────────────────────────────────────────────────────────
141
167
 
142
168
  function render({ context }: { context: CanvasRenderingContext2D }) {
169
+ if (!COLORS) return; // not yet resolved after mount
143
170
  const r = diskRadius;
144
171
  const cx = diskCx, cy = diskCy;
145
172
 
@@ -1 +1 @@
1
- {"version":3,"file":"ManifoldDisk.svelte.d.ts","sourceRoot":"","sources":["../../src/n2-manifold-disk/ManifoldDisk.svelte.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAOnE,2FAA2F;AAC3F,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6FAA6F;IAC7F,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;CAChC;AA6SH,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ManifoldDisk.svelte.d.ts","sourceRoot":"","sources":["../../src/n2-manifold-disk/ManifoldDisk.svelte.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAQnE,2FAA2F;AAC3F,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6FAA6F;IAC7F,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;CAChC;AAwUH,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -70,12 +70,12 @@
70
70
  z-index: 1000;
71
71
  pointer-events: none;
72
72
 
73
- background: var(--bg-elevated, #2a2a2a);
73
+ background: var(--color-bg-elevated, #2a2a2a);
74
74
  border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.06));
75
75
  border-radius: var(--radius-sm, 6px);
76
76
  padding: var(--space-2, 0.5rem) var(--space-3, 0.75rem);
77
77
 
78
- color: var(--text-primary, #f2efe9);
78
+ color: var(--color-text-primary, #f2efe9);
79
79
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
80
80
  font-size: 0.75rem;
81
81
  line-height: 1.4;
@@ -18,10 +18,11 @@
18
18
  ResolvedThemeColors,
19
19
  NodeIndicatorState,
20
20
  PhaseTheme,
21
+ NodeLayout,
21
22
  } from './types.js';
22
23
  import { DEFAULT_LAYOUT_PREFERENCES } from './types.js';
23
24
  import { resolvePhaseTheme, DEFAULT_PHASE_THEME } from './phase-theme.js';
24
- import type { NodeLayout } from '../n1-flow-canvas/types.js';
25
+ import { getCanvasTheme, resolveAccentRamp } from '../p0-primitives/canvas-theme';
25
26
  import { LayoutOrchestrator } from './orchestrator.js';
26
27
  import { ManifoldProvider } from './providers/manifold-provider.js';
27
28
  import { GravitationalProvider } from './providers/gravitational-provider.js';
@@ -90,19 +91,20 @@
90
91
 
91
92
  let containerEl: HTMLDivElement | undefined = $state(undefined);
92
93
  let colors: ResolvedThemeColors = $state({
93
- canvasBg: '#1a1a1a',
94
- nodeActive: '#b87333',
95
- nodeIdle: '#a09880',
94
+ canvasBg: getCanvasTheme().bg,
95
+ nodeActive: getCanvasTheme().nodeBorder,
96
+ nodeIdle: getCanvasTheme().nodeText,
96
97
  nodeBlocked: '#f39c12',
97
- nodeCompleted: '#a09880',
98
+ nodeCompleted: getCanvasTheme().nodeText,
98
99
  nodeCritical: '#c0392b',
99
- nodeBg: '#222',
100
- nodeBorder: 'rgba(184, 115, 51, 0.15)',
101
- nodeText: '#e8e0d0',
102
- edgeColor: 'rgba(184, 115, 51, 0.25)',
103
- edgeActive: '#b87333',
104
- pulseColor: '#b87333',
100
+ nodeBg: getCanvasTheme().node,
101
+ nodeBorder: getCanvasTheme().edgeFade,
102
+ nodeText: getCanvasTheme().nodeText,
103
+ edgeColor: getCanvasTheme().edgeFade,
104
+ edgeActive: getCanvasTheme().nodeBorder,
105
+ pulseColor: getCanvasTheme().nodeBorder,
105
106
  pulseCritical: '#c0392b',
107
+ accentRamp: resolveAccentRamp(),
106
108
  });
107
109
 
108
110
  function resolveTokens(): void {
@@ -112,18 +114,21 @@
112
114
  const get = (prop: string, fallback: string) => cs.getPropertyValue(prop).trim() || fallback;
113
115
  colors = {
114
116
  canvasBg: get('--n4-canvas-bg', '#1a1a1a'),
115
- nodeActive: get('--n4-node-border-selected', '#b87333'),
117
+ nodeActive: get('--n4-node-border-selected', '#888'),
116
118
  nodeIdle: get('--n4-node-text-muted', '#a09880'),
117
119
  nodeBlocked: get('--color-status-warning', '#f39c12'),
118
120
  nodeCompleted: get('--n4-node-text-muted', '#a09880'),
119
121
  nodeCritical: get('--color-status-error', '#c0392b'),
120
122
  nodeBg: get('--n4-node-bg', '#222'),
121
- nodeBorder: get('--n4-node-border', 'rgba(184, 115, 51, 0.15)'),
122
- nodeText: get('--n4-node-text', '#e8e0d0'),
123
- edgeColor: get('--n4-edge-color', 'rgba(184, 115, 51, 0.25)'),
124
- edgeActive: get('--n4-edge-color-active', '#b87333'),
125
- pulseColor: get('--color-accent', '#b87333'),
123
+ nodeBorder: get('--n4-node-border', 'rgba(128,128,128,0.15)'),
124
+ nodeText: get('--n4-node-text', '#e7e9eb'),
125
+ edgeColor: get('--n4-edge-color', 'rgba(128,128,128,0.25)'),
126
+ edgeActive: get('--n4-edge-color-active', '#888'),
127
+ pulseColor: get('--color-accent', '#888'),
126
128
  pulseCritical: get('--color-status-error', '#c0392b'),
129
+ // accentRamp: resolve --accent-primary directly so inline canvas paint
130
+ // calls respond to the user's chosen accent without reading n4-token CSS.
131
+ accentRamp: resolveAccentRamp(containerEl),
127
132
  };
128
133
  phaseTheme = resolvePhaseTheme(containerEl);
129
134
  }
@@ -617,7 +622,7 @@
617
622
  const GRID = 22;
618
623
  const gridStartX = Math.floor(worldLeft / GRID) * GRID;
619
624
  const gridStartY = Math.floor(worldTop / GRID) * GRID;
620
- context.fillStyle = 'rgba(184, 115, 51, 0.055)';
625
+ context.fillStyle = colors.accentRamp.alpha(0.055);
621
626
  for (let gx = gridStartX; gx < worldRight; gx += GRID) {
622
627
  for (let gy = gridStartY; gy < worldBottom; gy += GRID) {
623
628
  context.beginPath();
@@ -681,8 +686,8 @@
681
686
  const edgeStrength = (edge.metadata as Record<string, unknown>)?.strength as number | undefined ?? 0.5;
682
687
  context.save();
683
688
  context.strokeStyle = progress >= 1.0
684
- ? `rgba(184, 115, 51, ${0.45 + edgeStrength * 0.35})`
685
- : 'rgba(184, 115, 51, 0.30)';
689
+ ? colors.accentRamp.alpha(0.45 + edgeStrength * 0.35)
690
+ : colors.accentRamp.alpha(0.30);
686
691
  context.lineWidth = 1.5;
687
692
  // Permanently dashed when fully revealed — individual lines are traceable in dense graphs.
688
693
  // During reveal animation keep a solid growing stroke, then settle to dashes.
@@ -704,7 +709,7 @@
704
709
  const FLAG_R = 3;
705
710
 
706
711
  const PRIORITY_COLORS: Record<string, string> = {
707
- p0: '#c0392b', p1: '#b87333', p2: '#c8a84b', p3: '#4a4438',
712
+ p0: '#c0392b', p1: colors.accentRamp.solid, p2: '#c8a84b', p3: '#4a4438',
708
713
  };
709
714
 
710
715
  // ── Node rendering: LOD-aware ─────────────────────────────────────────────
@@ -727,7 +732,7 @@
727
732
  // ── Signals: always a small dot ─────────────────────────────────────
728
733
  if (node.kind === 'signal') {
729
734
  const sr = lodTier === 'overview' ? 3 : 5;
730
- context.shadowColor = 'rgba(184, 115, 51, 0.4)';
735
+ context.shadowColor = colors.accentRamp.alpha(0.4);
731
736
  context.shadowBlur = isSelected ? 10 : 4;
732
737
  context.beginPath();
733
738
  context.arc(ncx, ncy, sr, 0, Math.PI * 2);
@@ -760,14 +765,14 @@
760
765
  context.beginPath();
761
766
  context.moveTo(ncx, ncy);
762
767
  context.lineTo(ncx - Math.cos(angle) * tailLen, ncy - Math.sin(angle) * tailLen);
763
- context.strokeStyle = `rgba(184, 115, 51, 0.5)`;
768
+ context.strokeStyle = colors.accentRamp.alpha(0.5);
764
769
  context.lineWidth = 2;
765
770
  context.stroke();
766
771
  }
767
772
 
768
773
  context.beginPath();
769
774
  context.arc(ncx, ncy, r, 0, Math.PI * 2);
770
- context.fillStyle = isActiveLoop ? 'rgba(184, 115, 51, 0.9)' : 'rgba(184, 115, 51, 0.4)';
775
+ context.fillStyle = isActiveLoop ? colors.accentRamp.alpha(0.9) : colors.accentRamp.alpha(0.4);
771
776
  context.fill();
772
777
  if (isSelected) {
773
778
  context.strokeStyle = colors.nodeActive;
@@ -992,7 +997,7 @@
992
997
  beginShape(context, 'hexagon',
993
998
  ncx - HEX_IND_W / 2 - P, ncy - HEX_IND_H / 2 - P,
994
999
  HEX_IND_W + 2 * P, HEX_IND_H + 2 * P);
995
- context.strokeStyle = `rgba(184, 115, 51, ${alpha})`;
1000
+ context.strokeStyle = colors.accentRamp.alpha(alpha);
996
1001
  context.lineWidth = 2;
997
1002
  context.stroke();
998
1003
  break;
@@ -1006,7 +1011,7 @@
1006
1011
  context.beginPath();
1007
1012
  context.moveTo(ncx, ncy);
1008
1013
  context.lineTo(tx, ty);
1009
- context.strokeStyle = `rgba(184, 115, 51, ${0.6 * phaseIntensity})`;
1014
+ context.strokeStyle = colors.accentRamp.alpha(0.6 * phaseIntensity);
1010
1015
  context.lineWidth = 1;
1011
1016
  context.setLineDash([4, 4]);
1012
1017
  context.stroke();
@@ -1043,7 +1048,7 @@
1043
1048
  }
1044
1049
  context.beginPath();
1045
1050
  context.arc(px, py, particleR, 0, Math.PI * 2);
1046
- context.fillStyle = `rgba(184, 115, 51, ${alpha})`;
1051
+ context.fillStyle = colors.accentRamp.alpha(alpha);
1047
1052
  context.fill();
1048
1053
  }
1049
1054
  break;
@@ -1070,7 +1075,7 @@
1070
1075
  // Claimed: solid brass outline
1071
1076
  context.beginPath();
1072
1077
  context.roundRect(px - 3, py - 3, TASK_W + 6, TASK_H + 6, 6);
1073
- context.strokeStyle = `rgba(184, 115, 51, ${0.6 * phaseIntensity})`;
1078
+ context.strokeStyle = colors.accentRamp.alpha(0.6 * phaseIntensity);
1074
1079
  context.lineWidth = 2;
1075
1080
  context.stroke();
1076
1081
  } else if (node.status === 'idle') {
@@ -1079,7 +1084,7 @@
1079
1084
  const alpha = phaseIntensity * (0.1 + 0.2 * Math.sin(pulsePhase * Math.PI * 2));
1080
1085
  context.beginPath();
1081
1086
  context.roundRect(px - 2, py - 2, TASK_W + 4, TASK_H + 4, 5);
1082
- context.strokeStyle = `rgba(184, 115, 51, ${alpha})`;
1087
+ context.strokeStyle = colors.accentRamp.alpha(alpha);
1083
1088
  context.lineWidth = 1.5;
1084
1089
  context.stroke();
1085
1090
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AdaptiveManifold.svelte.d.ts","sourceRoot":"","sources":["../../src/n4-adaptive-manifold/AdaptiveManifold.svelte.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACR,gBAAgB,EAEhB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAGjB,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAapB,UAAU,KAAK;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC1D,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmkCH,QAAA,MAAM,gBAAgB;;;;;MAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"AdaptiveManifold.svelte.d.ts","sourceRoot":"","sources":["../../src/n4-adaptive-manifold/AdaptiveManifold.svelte.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACR,gBAAgB,EAEhB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAGjB,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAapB,UAAU,KAAK;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC1D,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAukCH,QAAA,MAAM,gBAAgB;;;;;MAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}