@dfosco/storyboard 0.7.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/dist/storyboard-ui.css +1 -1
  2. package/dist/storyboard-ui.js +14128 -10953
  3. package/dist/storyboard-ui.js.map +1 -1
  4. package/dist/tailwind.css +1 -1
  5. package/dist/tiny-canvas.css +1 -1
  6. package/package.json +138 -128
  7. package/scaffold/AGENTS.md +9 -7
  8. package/scaffold/README.md +18 -0
  9. package/scaffold/deploy.yml +21 -0
  10. package/scaffold/gitignore +8 -14
  11. package/scaffold/preview.yml +40 -0
  12. package/scaffold/{manifest.json → scaffold.config.json} +73 -3
  13. package/scaffold/scripts/aggregate-artifacts.mjs +257 -0
  14. package/scaffold/skills/canvas/SKILL.md +1 -1
  15. package/scaffold/skills/migrate-0.5.0/SKILL.md +1 -1
  16. package/scaffold/skills/ship/SKILL.md +2 -2
  17. package/scaffold/skills/worktree/SKILL.md +1 -1
  18. package/scaffold/src/_prototype.jsx +17 -0
  19. package/scaffold/src/_story.jsx +13 -0
  20. package/scaffold/src/library/README.md +34 -0
  21. package/scaffold/src/library/_app.jsx +41 -0
  22. package/scaffold/src/library/_app.module.css +2 -0
  23. package/scaffold/src/library/create.jsx +10 -0
  24. package/scaffold/src/library/index.jsx +14 -0
  25. package/scaffold/src/library/mount.jsx +51 -0
  26. package/scaffold/src/library/prototypes-entry.jsx +57 -0
  27. package/scaffold/src/library/routes.jsx +205 -0
  28. package/scaffold/src/library/viewfinder.jsx +13 -0
  29. package/scaffold/src/library/workspace.jsx +17 -0
  30. package/scripts/aggregate-artifacts.mjs +257 -0
  31. package/src/canvas/style.css +16 -16
  32. package/src/core/artifact/operations.js +54 -15
  33. package/src/core/artifact/schemas/canvas.schema.json +7 -1
  34. package/src/core/autosync/server.test.js +1 -1
  35. package/src/core/canvas/hot-pool.js +21 -33
  36. package/src/core/canvas/materializer.js +39 -13
  37. package/src/core/canvas/selectedWidgets.js +1 -1
  38. package/src/core/canvas/server.js +376 -100
  39. package/src/core/canvas/server.test.js +472 -2
  40. package/src/core/canvas/terminal-server.js +144 -57
  41. package/src/core/canvas/undoRedo.js +174 -0
  42. package/src/core/canvas/undoRedo.test.js +250 -0
  43. package/src/core/cli/artifact.js +2 -0
  44. package/src/core/cli/buildManifest.js +34 -0
  45. package/src/core/cli/canvasRedo.js +44 -0
  46. package/src/core/cli/canvasUndo.js +40 -0
  47. package/src/core/cli/create.js +151 -23
  48. package/src/core/cli/dev.js +23 -35
  49. package/src/core/cli/index.js +21 -0
  50. package/src/core/cli/schemas.js +8 -4
  51. package/src/core/cli/serverUrl.js +24 -0
  52. package/src/core/cli/setup.js +14 -25
  53. package/src/core/cli/terminal-welcome.js +12 -6
  54. package/src/core/cli/updateVersion.js +42 -2
  55. package/src/core/cli/workleaf.js +140 -0
  56. package/src/core/comments/api.js +1 -1
  57. package/src/core/comments/queries.js +3 -0
  58. package/src/core/comments/ui/CommentWindow.jsx +3 -2
  59. package/src/core/comments/ui/comment-layout.css +14 -14
  60. package/src/core/data/artifactIndex.js +235 -0
  61. package/src/core/data/artifactIndex.test.js +203 -0
  62. package/src/core/data/artifactManifest.js +290 -0
  63. package/src/core/data/artifactManifest.test.js +207 -0
  64. package/src/core/data/viewfinder.js +47 -7
  65. package/src/core/index.js +24 -1
  66. package/src/core/inspector/highlighter.js +1 -1
  67. package/src/core/inspector/mouseMode.js +2 -2
  68. package/src/core/lib/components/ui/avatar/avatar-fallback.jsx +2 -2
  69. package/src/core/lib/components/ui/avatar/avatar-image.jsx +2 -2
  70. package/src/core/lib/components/ui/avatar/avatar.jsx +2 -2
  71. package/src/core/lib/components/ui/checkbox/checkbox.jsx +12 -9
  72. package/src/core/lib/components/ui/dialog/dialog-content.jsx +45 -31
  73. package/src/core/lib/components/ui/dialog/dialog-trigger.jsx +9 -5
  74. package/src/core/lib/components/ui/dialog/dialog.jsx +12 -3
  75. package/src/core/lib/components/ui/dialog/dialog.module.css +118 -0
  76. package/src/core/lib/components/ui/dialog/index.js +4 -34
  77. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.jsx +3 -3
  78. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.jsx +19 -9
  79. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-content.jsx +8 -8
  80. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.jsx +2 -2
  81. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-group.jsx +2 -2
  82. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-item.jsx +15 -4
  83. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-portal.jsx +2 -2
  84. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.jsx +2 -2
  85. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.jsx +14 -7
  86. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-separator.jsx +2 -2
  87. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.jsx +8 -4
  88. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.jsx +4 -4
  89. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub.jsx +2 -2
  90. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-trigger.jsx +8 -2
  91. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu.jsx +2 -2
  92. package/src/core/lib/components/ui/label/label.jsx +1 -2
  93. package/src/core/lib/components/ui/panel/panel-close.jsx +7 -4
  94. package/src/core/lib/components/ui/panel/panel-content.jsx +7 -9
  95. package/src/core/lib/components/ui/panel/panel-title.jsx +3 -3
  96. package/src/core/lib/components/ui/panel/panel.jsx +11 -2
  97. package/src/core/lib/components/ui/separator/separator.jsx +6 -4
  98. package/src/core/lib/components/ui/tooltip/tooltip-content.jsx +7 -6
  99. package/src/core/lib/components/ui/tooltip/tooltip-trigger.jsx +13 -6
  100. package/src/core/lib/components/ui/tooltip/tooltip.jsx +5 -5
  101. package/src/core/modes/modes.css +4 -4
  102. package/src/core/mountStoryboardCore.js +287 -83
  103. package/src/core/mountStoryboardCore.test.js +198 -0
  104. package/src/core/rename-watcher/config.json +1 -1
  105. package/src/core/rename-watcher/watcher.js +330 -37
  106. package/src/core/rename-watcher/watcher.test.js +253 -0
  107. package/src/core/scaffold/fragments.js +287 -0
  108. package/src/core/scaffold/fragments.test.js +401 -0
  109. package/src/core/scaffold/index.js +291 -0
  110. package/src/core/scaffold/migrateLegacyGitignore.js +157 -0
  111. package/src/core/scaffold/scaffold-integration.test.js +247 -0
  112. package/src/core/scaffold.js +4 -97
  113. package/src/core/stores/canvasInteractionStore.js +120 -0
  114. package/src/core/stores/canvasInteractionStore.test.js +126 -0
  115. package/src/core/stores/configSchema.js +64 -8
  116. package/src/core/stores/configSchema.test.js +3 -0
  117. package/src/core/stores/customerModeConfig.js +24 -3
  118. package/src/core/stores/customerModeConfig.test.js +46 -0
  119. package/src/core/stores/presentationStore.js +118 -0
  120. package/src/core/stores/presentationStore.test.js +114 -0
  121. package/src/core/stores/recentArtifacts.js +49 -2
  122. package/src/core/stores/recentArtifacts.test.js +59 -6
  123. package/src/core/stores/themeBootstrap.js +264 -0
  124. package/src/core/stores/themeBootstrap.test.js +211 -0
  125. package/src/core/stores/themeStore.test.js +154 -0
  126. package/src/core/stores/themeStore.ts +235 -220
  127. package/src/core/stores/uiConfig.js +10 -2
  128. package/src/core/styles/generateThemesCss.js +63 -0
  129. package/src/core/styles/tailwind.css +150 -94
  130. package/src/core/styles/workspace-chrome.css +13 -0
  131. package/src/core/tools/handlers/paletteTheme.js +11 -8
  132. package/src/core/ui/ActionMenuButton.jsx +2 -1
  133. package/src/core/ui/AutosyncMenuButton.css +7 -7
  134. package/src/core/ui/BranchSelect.module.css +5 -5
  135. package/src/core/ui/CanvasCreateMenu.jsx +1 -19
  136. package/src/core/ui/ChromeSlot.jsx +92 -0
  137. package/src/core/ui/ChromeSlot.test.jsx +140 -0
  138. package/src/core/ui/CoreUIBar.css +5 -5
  139. package/src/core/ui/CoreUIBar.jsx +170 -142
  140. package/src/core/ui/InspectorPanel.css +5 -5
  141. package/src/core/ui/InspectorPanel.jsx +9 -9
  142. package/src/core/ui/PwaInstallBanner.css +5 -5
  143. package/src/core/ui/PwaInstallBanner.jsx +5 -5
  144. package/src/core/ui/ThemeMenuButton.jsx +45 -30
  145. package/src/core/ui/core-ui-colors.css +28 -66
  146. package/src/core/ui/sidepanel.css +12 -12
  147. package/src/core/vite/server-plugin.js +13 -0
  148. package/src/core/workleaf/cleanup.js +102 -0
  149. package/src/core/workleaf/create.js +199 -0
  150. package/src/core/workleaf/delete.js +101 -0
  151. package/src/core/workleaf/list.js +57 -0
  152. package/src/core/workleaf/merge.js +238 -0
  153. package/src/core/workleaf/paths.js +146 -0
  154. package/src/core/workleaf/paths.test.js +230 -0
  155. package/src/core/workshop/features/createCanvas/CreateCanvasForm.jsx +130 -34
  156. package/src/core/workshop/features/createFlow/server.js +5 -1
  157. package/src/core/workshop/features/createPrototype/server.js +5 -1
  158. package/src/core/workshop/features/templateIndex.js +28 -1
  159. package/src/core/worktree/port.js +48 -5
  160. package/src/core/worktree/port.test.js +42 -0
  161. package/src/internals/ArtifactForm/ArtifactForm.jsx +173 -112
  162. package/src/internals/ArtifactForm/ArtifactForm.module.css +51 -69
  163. package/src/internals/ArtifactForm/artifactSchemas.js +40 -5
  164. package/src/internals/AuthModal/AuthModal.module.css +34 -34
  165. package/src/internals/BaseUiForm/BaseUiForm.jsx +293 -0
  166. package/src/internals/BaseUiForm/BaseUiForm.module.css +542 -0
  167. package/src/internals/BranchBar/BranchBar.module.css +4 -4
  168. package/src/internals/BranchesDropdown/BranchesDropdown.jsx +69 -0
  169. package/src/internals/BranchesDropdown/BranchesDropdown.module.css +84 -0
  170. package/src/internals/CommandPalette/CommandPalette.jsx +41 -29
  171. package/src/internals/CommandPalette/CreateArtifactForm.jsx +150 -0
  172. package/src/internals/CommandPalette/CreateDialog.jsx +20 -110
  173. package/src/internals/CommandPalette/WidgetArtifactDialog.css +16 -16
  174. package/src/internals/CommandPalette/WidgetArtifactDialog.jsx +1 -1
  175. package/src/internals/CommandPalette/command-palette.css +14 -14
  176. package/src/internals/CommandPalette/createHelpers.js +30 -0
  177. package/src/internals/CreatePage/CreatePage.jsx +57 -0
  178. package/src/internals/CreatePage/CreatePage.module.css +34 -0
  179. package/src/internals/Dialog.jsx +51 -0
  180. package/src/internals/FlowError.module.css +5 -5
  181. package/src/internals/PrototypeErrorBoundary.module.css +15 -15
  182. package/src/internals/SimpleWorkspace/SimpleWorkspace.jsx +534 -0
  183. package/src/internals/SimpleWorkspace/SimpleWorkspace.module.css +323 -0
  184. package/src/internals/Tooltip.jsx +39 -0
  185. package/src/internals/Viewfinder.jsx +229 -64
  186. package/src/internals/Viewfinder.module.css +253 -182
  187. package/src/internals/canvas/CanvasControls.module.css +11 -11
  188. package/src/internals/canvas/CanvasPage.bridge.test.jsx +11 -37
  189. package/src/internals/canvas/CanvasPage.jsx +358 -217
  190. package/src/internals/canvas/CanvasPage.module.css +20 -19
  191. package/src/internals/canvas/CanvasPage.multiselect.test.jsx +39 -26
  192. package/src/internals/canvas/CanvasToolbar.module.css +11 -11
  193. package/src/internals/canvas/ConnectorLayer.jsx +39 -2
  194. package/src/internals/canvas/ConnectorLayer.module.css +10 -10
  195. package/src/internals/canvas/PageSelector.jsx +15 -1
  196. package/src/internals/canvas/PageSelector.module.css +41 -27
  197. package/src/internals/canvas/canvasApi.js +40 -5
  198. package/src/internals/canvas/canvasTheme.js +22 -111
  199. package/src/internals/canvas/isolation/createIsolationMiddleware.js +68 -0
  200. package/src/internals/canvas/isolation/mountIsolationApp.jsx +88 -0
  201. package/src/internals/canvas/isolation/prototypeRoutes.jsx +140 -0
  202. package/src/internals/canvas/isolation/prototypesEntry.jsx +28 -0
  203. package/src/internals/canvas/isolation/storiesEntry.jsx +20 -0
  204. package/src/internals/canvas/isolation/storyRoutes.jsx +55 -0
  205. package/src/internals/canvas/useUndoRedo.js +75 -60
  206. package/src/internals/canvas/useUndoRedo.test.js +46 -178
  207. package/src/internals/canvas/widgets/CodePenEmbed.jsx +16 -36
  208. package/src/internals/canvas/widgets/CodePenEmbed.module.css +12 -12
  209. package/src/internals/canvas/widgets/CropOverlay.module.css +23 -23
  210. package/src/internals/canvas/widgets/ExpandedPane.module.css +8 -8
  211. package/src/internals/canvas/widgets/ExpandedPaneTopBar.jsx +1 -1
  212. package/src/internals/canvas/widgets/FigmaEmbed.jsx +15 -36
  213. package/src/internals/canvas/widgets/FigmaEmbed.module.css +15 -15
  214. package/src/internals/canvas/widgets/FrozenTerminalOverlay.jsx +30 -21
  215. package/src/internals/canvas/widgets/FrozenTerminalOverlay.module.css +5 -5
  216. package/src/internals/canvas/widgets/ImageWidget.jsx +7 -2
  217. package/src/internals/canvas/widgets/ImageWidget.module.css +3 -3
  218. package/src/internals/canvas/widgets/LinkPreview.module.css +79 -80
  219. package/src/internals/canvas/widgets/MarkdownBlock.module.css +31 -31
  220. package/src/internals/canvas/widgets/PromptWidget.jsx +2 -16
  221. package/src/internals/canvas/widgets/PromptWidget.module.css +33 -33
  222. package/src/internals/canvas/widgets/PrototypeEmbed.jsx +92 -17
  223. package/src/internals/canvas/widgets/PrototypeEmbed.module.css +58 -56
  224. package/src/internals/canvas/widgets/PrototypeEmbed.test.jsx +118 -4
  225. package/src/internals/canvas/widgets/ResizeHandle.module.css +4 -4
  226. package/src/internals/canvas/widgets/StorySetWidget.jsx +53 -25
  227. package/src/internals/canvas/widgets/StoryWidget.jsx +71 -56
  228. package/src/internals/canvas/widgets/StoryWidget.module.css +22 -20
  229. package/src/internals/canvas/widgets/TerminalReadWidget.jsx +13 -15
  230. package/src/internals/canvas/widgets/TerminalReadWidget.module.css +4 -4
  231. package/src/internals/canvas/widgets/TerminalWidget.jsx +56 -45
  232. package/src/internals/canvas/widgets/TerminalWidget.module.css +10 -10
  233. package/src/internals/canvas/widgets/TilesWidget.module.css +17 -17
  234. package/src/internals/canvas/widgets/WidgetChrome.jsx +1 -1
  235. package/src/internals/canvas/widgets/WidgetChrome.module.css +76 -61
  236. package/src/internals/canvas/widgets/WidgetWrapper.module.css +2 -2
  237. package/src/internals/canvas/widgets/embedOverlay.module.css +14 -4
  238. package/src/internals/canvas/widgets/embedTheme.js +12 -104
  239. package/src/internals/canvas/widgets/expandUtils.js +19 -19
  240. package/src/internals/canvas/widgets/normalizeLegacyEmbedSrc.js +74 -0
  241. package/src/internals/canvas/widgets/widgetConfig.js +5 -5
  242. package/src/internals/context.jsx +22 -1
  243. package/src/internals/context.test.jsx +47 -0
  244. package/src/internals/hooks/useArtifactIndex.js +31 -0
  245. package/src/internals/hooks/useArtifactIndex.test.js +45 -0
  246. package/src/internals/hooks/usePrototypeReloadGuard.js +14 -8
  247. package/src/internals/index.js +6 -0
  248. package/src/internals/loadConsumerWrapper.js +60 -0
  249. package/src/internals/story/ComponentSetPage.jsx +75 -34
  250. package/src/internals/story/ComponentSetPage.module.css +14 -14
  251. package/src/internals/story/StoryPage.jsx +16 -25
  252. package/src/internals/story/StoryPage.module.css +2 -2
  253. package/src/internals/vite/data-plugin.js +317 -149
  254. package/src/internals/vite/data-plugin.test.js +11 -11
  255. package/{scaffold/storyboard.config.json → storyboard.config.json} +25 -0
  256. package/terminal.config.json +1 -1
  257. package/src/core/lib/components/ui/card/card-action.jsx +0 -11
  258. package/src/core/lib/components/ui/card/card-content.jsx +0 -11
  259. package/src/core/lib/components/ui/card/card-description.jsx +0 -11
  260. package/src/core/lib/components/ui/card/card-footer.jsx +0 -11
  261. package/src/core/lib/components/ui/card/card-header.jsx +0 -19
  262. package/src/core/lib/components/ui/card/card-title.jsx +0 -11
  263. package/src/core/lib/components/ui/card/card.jsx +0 -17
  264. package/src/core/lib/components/ui/card/index.js +0 -25
  265. package/src/core/lib/components/ui/collapsible/collapsible-content.jsx +0 -7
  266. package/src/core/lib/components/ui/collapsible/collapsible-trigger.jsx +0 -7
  267. package/src/core/lib/components/ui/collapsible/collapsible.jsx +0 -7
  268. package/src/core/lib/components/ui/collapsible/index.js +0 -13
  269. package/src/core/lib/components/ui/dialog/dialog-close.jsx +0 -7
  270. package/src/core/lib/components/ui/dialog/dialog-description.jsx +0 -15
  271. package/src/core/lib/components/ui/dialog/dialog-footer.jsx +0 -23
  272. package/src/core/lib/components/ui/dialog/dialog-header.jsx +0 -11
  273. package/src/core/lib/components/ui/dialog/dialog-overlay.jsx +0 -15
  274. package/src/core/lib/components/ui/dialog/dialog-portal.jsx +0 -4
  275. package/src/core/lib/components/ui/dialog/dialog-title.jsx +0 -15
  276. package/src/core/lib/components/ui/popover/index.js +0 -28
  277. package/src/core/lib/components/ui/popover/popover-close.jsx +0 -7
  278. package/src/core/lib/components/ui/popover/popover-content.jsx +0 -22
  279. package/src/core/lib/components/ui/popover/popover-description.jsx +0 -11
  280. package/src/core/lib/components/ui/popover/popover-header.jsx +0 -11
  281. package/src/core/lib/components/ui/popover/popover-portal.jsx +0 -4
  282. package/src/core/lib/components/ui/popover/popover-title.jsx +0 -11
  283. package/src/core/lib/components/ui/popover/popover-trigger.jsx +0 -8
  284. package/src/core/lib/components/ui/popover/popover.jsx +0 -4
  285. package/src/core/lib/components/ui/select/index.js +0 -37
  286. package/src/core/lib/components/ui/select/select-content.jsx +0 -30
  287. package/src/core/lib/components/ui/select/select-group-heading.jsx +0 -17
  288. package/src/core/lib/components/ui/select/select-group.jsx +0 -15
  289. package/src/core/lib/components/ui/select/select-item.jsx +0 -26
  290. package/src/core/lib/components/ui/select/select-label.jsx +0 -11
  291. package/src/core/lib/components/ui/select/select-portal.jsx +0 -4
  292. package/src/core/lib/components/ui/select/select-scroll-down-button.jsx +0 -18
  293. package/src/core/lib/components/ui/select/select-scroll-up-button.jsx +0 -18
  294. package/src/core/lib/components/ui/select/select-separator.jsx +0 -15
  295. package/src/core/lib/components/ui/select/select-trigger.jsx +0 -25
  296. package/src/core/lib/components/ui/select/select.jsx +0 -4
  297. package/src/core/lib/components/ui/sheet/index.js +0 -34
  298. package/src/core/lib/components/ui/sheet/sheet-close.jsx +0 -7
  299. package/src/core/lib/components/ui/sheet/sheet-content.jsx +0 -35
  300. package/src/core/lib/components/ui/sheet/sheet-description.jsx +0 -15
  301. package/src/core/lib/components/ui/sheet/sheet-footer.jsx +0 -11
  302. package/src/core/lib/components/ui/sheet/sheet-header.jsx +0 -11
  303. package/src/core/lib/components/ui/sheet/sheet-overlay.jsx +0 -15
  304. package/src/core/lib/components/ui/sheet/sheet-portal.jsx +0 -4
  305. package/src/core/lib/components/ui/sheet/sheet-title.jsx +0 -15
  306. package/src/core/lib/components/ui/sheet/sheet-trigger.jsx +0 -7
  307. package/src/core/lib/components/ui/sheet/sheet.jsx +0 -4
  308. package/src/core/lib/components/ui/toggle/index.js +0 -8
  309. package/src/core/lib/components/ui/toggle/toggle.jsx +0 -36
  310. package/src/core/lib/components/ui/toggle-group/index.js +0 -10
  311. package/src/core/lib/components/ui/toggle-group/toggle-group-item.jsx +0 -29
  312. package/src/core/lib/components/ui/toggle-group/toggle-group.jsx +0 -43
  313. package/src/internals/canvas/StoryErrorBoundary.jsx +0 -47
  314. package/src/internals/canvas/WebGLContextPool.jsx +0 -291
  315. package/src/internals/canvas/WebGLContextPool.test.jsx +0 -165
  316. package/src/internals/canvas/componentIsolate.jsx +0 -144
  317. package/src/internals/canvas/componentSetIsolate.jsx +0 -300
  318. package/src/internals/canvas/widgets/ComponentSetWidget.module.css +0 -89
  319. package/src/internals/canvas/widgets/InlineStoryRenderer.jsx +0 -129
  320. package/src/internals/canvas/widgets/InlineStoryRenderer.test.jsx +0 -68
  321. package/src/internals/canvas/widgets/StorySetWidget.module.css +0 -89
  322. package/src/primer/ThemeSync.jsx +0 -73
  323. package/src/primer/index.js +0 -1
@@ -9,15 +9,15 @@
9
9
  flex-direction: column;
10
10
  width: 320px;
11
11
  border-radius: 6px;
12
- border: 2px solid var(--borderColor-default, #d1d9e0);
13
- background: var(--bgColor-default, #ffffff);
12
+ border: 2px solid var(--color-border, #d1d9e0);
13
+ background: var(--color-background, #ffffff);
14
14
  box-sizing: border-box;
15
15
  overflow: hidden;
16
16
  font-family: var(--tc-font-stack, system-ui, -apple-system, sans-serif);
17
17
  }
18
18
 
19
19
  :global([data-sb-canvas-theme^='dark']) .card {
20
- border-color: var(--borderColor-default, #3d444d);
20
+ border-color: var(--color-border, #3d444d);
21
21
  }
22
22
 
23
23
  /* Hide own border when parent widget slot is selected (avoid double focus ring) */
@@ -44,7 +44,7 @@
44
44
  font-size: 14px;
45
45
  font-weight: 600;
46
46
  line-height: 1.35;
47
- color: var(--fgColor-default, #1f2328);
47
+ color: var(--color-foreground, #1f2328);
48
48
  cursor: text;
49
49
  word-break: break-word;
50
50
  }
@@ -59,7 +59,7 @@
59
59
  font-size: 14px;
60
60
  font-weight: 600;
61
61
  line-height: 1.35;
62
- color: var(--fgColor-default, #1f2328);
62
+ color: var(--color-foreground, #1f2328);
63
63
  width: 100%;
64
64
  }
65
65
 
@@ -67,7 +67,7 @@
67
67
  margin: 0;
68
68
  font-size: 12px;
69
69
  line-height: 1.4;
70
- color: var(--fgColor-muted, #656d76);
70
+ color: var(--color-foreground-muted, #656d76);
71
71
  display: -webkit-box;
72
72
  -webkit-line-clamp: 2;
73
73
  -webkit-box-orient: vertical;
@@ -77,7 +77,7 @@
77
77
  .url {
78
78
  margin: 0;
79
79
  font-size: 12px;
80
- color: var(--fgColor-muted, #656d76);
80
+ color: var(--color-foreground-muted, #656d76);
81
81
  white-space: nowrap;
82
82
  overflow: hidden;
83
83
  text-overflow: ellipsis;
@@ -87,7 +87,7 @@
87
87
 
88
88
  .url:hover {
89
89
  text-decoration: underline;
90
- color: var(--fgColor-accent, #0969da);
90
+ color: var(--color-foreground-accent, #0969da);
91
91
  }
92
92
 
93
93
  /* ── GitHub issue / discussion card ──────────────────────────────── */
@@ -97,9 +97,8 @@
97
97
  flex-direction: column;
98
98
  width: 580px;
99
99
  min-height: 300px;
100
- border-radius: 10px;
101
- border: 1px solid var(--borderColor-default, #d1d9e0);
102
- background: var(--bgColor-default, #ffffff);
100
+ border-radius: var(--radius, 12px);
101
+ background: var(--color-background, #ffffff);
103
102
  box-sizing: border-box;
104
103
  overflow: hidden;
105
104
  font-family: var(--tc-font-stack, system-ui, -apple-system, sans-serif);
@@ -116,9 +115,9 @@
116
115
  padding: 10px 10px;
117
116
  font-size: 12px;
118
117
  font-weight: 500;
119
- color: var(--fgColor-muted, #656d76);
120
- background: var(--bgColor-muted, #f6f8fa);
121
- border-bottom: 1px solid var(--borderColor-muted, #d8dee4);
118
+ color: var(--color-foreground-muted, #656d76);
119
+ background: var(--color-background-muted, #f6f8fa);
120
+ border-bottom: 1px solid var(--color-border-muted, #d8dee4);
122
121
  white-space: nowrap;
123
122
  user-select: none;
124
123
  }
@@ -140,29 +139,29 @@
140
139
  font-size: 32px;
141
140
  font-weight: 400;
142
141
  line-height: 1.25;
143
- color: var(--fgColor-default, #1f2328);
142
+ color: var(--color-foreground, #1f2328);
144
143
  }
145
144
 
146
145
  .issueTitleLink {
147
- color: var(--fgColor-default, #1f2328) !important;
146
+ color: var(--color-foreground, #1f2328) !important;
148
147
  text-decoration: none !important;
149
148
  }
150
149
 
151
150
  .issueTitleLink:hover {
152
151
  text-decoration: underline !important;
153
- color: var(--fgColor-default, #1f2328) !important;
152
+ color: var(--color-foreground, #1f2328) !important;
154
153
  }
155
154
 
156
155
  .issueNumber {
157
156
  font-size: 32px;
158
157
  font-weight: 400;
159
- color: var(--fgColor-muted, #656d76);
158
+ color: var(--color-foreground-muted, #656d76);
160
159
  }
161
160
 
162
161
  .issueContext {
163
162
  margin: 0;
164
163
  font-size: 12px;
165
- color: var(--fgColor-muted, #656d76);
164
+ color: var(--color-foreground-muted, #656d76);
166
165
  }
167
166
 
168
167
  .issueByline {
@@ -171,7 +170,7 @@
171
170
  justify-content: space-between;
172
171
  gap: 8px;
173
172
  padding: 12px 24px;
174
- border-bottom: 1px solid var(--borderColor-muted, #d8dee4);
173
+ border-bottom: 1px solid var(--color-border-muted, #d8dee4);
175
174
  }
176
175
 
177
176
  .issueBylineLeft {
@@ -193,7 +192,7 @@
193
192
  align-items: center;
194
193
  gap: 8px;
195
194
  text-decoration: none !important;
196
- color: var(--fgColor-default, #1f2328) !important;
195
+ color: var(--color-foreground, #1f2328) !important;
197
196
  font-size: 13px;
198
197
  font-weight: 600;
199
198
  white-space: nowrap;
@@ -201,12 +200,12 @@
201
200
 
202
201
  .authorLink:hover {
203
202
  text-decoration: underline !important;
204
- color: var(--fgColor-default, #1f2328) !important;
203
+ color: var(--color-foreground, #1f2328) !important;
205
204
  }
206
205
 
207
206
  .bylineText {
208
207
  font-size: 13px;
209
- color: var(--fgColor-muted, #656d76);
208
+ color: var(--color-foreground-muted, #656d76);
210
209
  white-space: nowrap;
211
210
  overflow: hidden;
212
211
  text-overflow: ellipsis;
@@ -214,7 +213,7 @@
214
213
 
215
214
  .bylineText strong {
216
215
  font-weight: 600;
217
- color: var(--fgColor-default, #1f2328);
216
+ color: var(--color-foreground, #1f2328);
218
217
  }
219
218
 
220
219
  /* ── Issue body (rendered markdown) ──────────────────────────────── */
@@ -223,7 +222,7 @@
223
222
  padding: 16px 24px 24px;
224
223
  font-size: 14px;
225
224
  line-height: 1.6;
226
- color: var(--fgColor-default, #1f2328);
225
+ color: var(--color-foreground, #1f2328);
227
226
  }
228
227
 
229
228
  .issueBody :global(*) {
@@ -231,7 +230,7 @@
231
230
  }
232
231
 
233
232
  .issueBody a {
234
- color: var(--fgColor-accent, #0969da);
233
+ color: var(--color-foreground-accent, #0969da);
235
234
  text-decoration: none;
236
235
  pointer-events: auto;
237
236
  cursor: pointer;
@@ -243,8 +242,8 @@
243
242
 
244
243
  /* @mention pills — blue background + text like GitHub */
245
244
  .issueBody a[data-mention] {
246
- background: var(--bgColor-accent-muted, #ddf4ff);
247
- color: var(--fgColor-accent, #0969da);
245
+ background: var(--color-background-accent-muted, #ddf4ff);
246
+ color: var(--color-foreground-accent, #0969da);
248
247
  padding: 1px 6px;
249
248
  border-radius: 4px;
250
249
  font-weight: 600;
@@ -252,8 +251,8 @@
252
251
  }
253
252
 
254
253
  .issueBody a[data-mention]:hover {
255
- background: var(--bgColor-accent-emphasis, #0969da);
256
- color: var(--fgColor-onEmphasis, #ffffff);
254
+ background: var(--color-background-accent-emphasis, #0969da);
255
+ color: var(--color-foreground-on-emphasis, #ffffff);
257
256
  text-decoration: none;
258
257
  }
259
258
 
@@ -261,7 +260,7 @@
261
260
  max-width: 100%;
262
261
  height: auto;
263
262
  border-radius: 6px;
264
- border: 1px solid var(--borderColor-muted, #d8dee4);
263
+ border: 1px solid var(--color-border-muted, #d8dee4);
265
264
  margin: 8px 0;
266
265
  display: block;
267
266
  pointer-events: auto;
@@ -271,18 +270,18 @@
271
270
  max-width: 100%;
272
271
  height: auto;
273
272
  border-radius: 6px;
274
- border: 1px solid var(--borderColor-muted, #d8dee4);
273
+ border: 1px solid var(--color-border-muted, #d8dee4);
275
274
  margin: 8px 0;
276
275
  display: block;
277
276
  pointer-events: auto;
278
- background: var(--bgColor-muted, #f6f8fa);
277
+ background: var(--color-background-muted, #f6f8fa);
279
278
  }
280
279
  .issueBody h1 {
281
280
  font-size: 20px;
282
281
  font-weight: 700;
283
282
  margin: 16px 0 8px;
284
283
  padding-bottom: 4px;
285
- border-bottom: 1px solid var(--borderColor-muted, #d8dee4);
284
+ border-bottom: 1px solid var(--color-border-muted, #d8dee4);
286
285
  line-height: 1.3;
287
286
  }
288
287
 
@@ -295,7 +294,7 @@
295
294
  font-weight: 600;
296
295
  margin: 14px 0 6px;
297
296
  padding-bottom: 3px;
298
- border-bottom: 1px solid var(--borderColor-muted, #d8dee4);
297
+ border-bottom: 1px solid var(--color-border-muted, #d8dee4);
299
298
  line-height: 1.3;
300
299
  }
301
300
 
@@ -311,7 +310,7 @@
311
310
  }
312
311
 
313
312
  .issueBody code {
314
- background: var(--bgColor-neutral-muted, #afb8c133);
313
+ background: var(--color-background-neutral-muted, #afb8c133);
315
314
  padding: 2px 5px;
316
315
  border-radius: 4px;
317
316
  font-size: 12px;
@@ -346,7 +345,7 @@
346
345
  .issueBody input[type="checkbox"] {
347
346
  margin-right: 6px;
348
347
  pointer-events: none;
349
- accent-color: var(--fgColor-accent, #0969da);
348
+ accent-color: var(--color-foreground-accent, #0969da);
350
349
  }
351
350
 
352
351
  .issueBody li:has(input[type="checkbox"]) {
@@ -357,7 +356,7 @@
357
356
  /* GFM: Strikethrough */
358
357
  .issueBody del {
359
358
  text-decoration: line-through;
360
- color: var(--fgColor-muted, #656d76);
359
+ color: var(--color-foreground-muted, #656d76);
361
360
  }
362
361
 
363
362
  /* GFM: Tables */
@@ -370,13 +369,13 @@
370
369
 
371
370
  .issueBody th,
372
371
  .issueBody td {
373
- border: 1px solid var(--borderColor-default, #d0d7de);
372
+ border: 1px solid var(--color-border, #d0d7de);
374
373
  padding: 6px 12px;
375
374
  text-align: left;
376
375
  }
377
376
 
378
377
  .issueBody th {
379
- background: var(--bgColor-muted, #f6f8fa);
378
+ background: var(--color-background-muted, #f6f8fa);
380
379
  font-weight: 600;
381
380
  }
382
381
 
@@ -384,10 +383,10 @@
384
383
  .issueBody pre {
385
384
  padding: 12px 16px;
386
385
  border-radius: 6px;
387
- border: 1px solid var(--borderColor-muted, #d8dee4);
386
+ border: 1px solid var(--color-border-muted, #d8dee4);
388
387
  overflow-x: auto;
389
388
  margin: 12px 0;
390
- background: var(--bgColor-neutral-muted, #afb8c133);
389
+ background: var(--color-background-neutral-muted, #afb8c133);
391
390
  line-height: 1.4;
392
391
  }
393
392
 
@@ -403,22 +402,22 @@
403
402
 
404
403
  /* Blockquotes */
405
404
  .issueBody blockquote {
406
- border-left: 4px solid var(--borderColor-default, #d0d7de);
405
+ border-left: 4px solid var(--color-border, #d0d7de);
407
406
  margin: 12px 0;
408
407
  padding: 4px 16px;
409
- color: var(--fgColor-muted, #656d76);
408
+ color: var(--color-foreground-muted, #656d76);
410
409
  }
411
410
 
412
411
  /* Horizontal rules */
413
412
  .issueBody hr {
414
413
  border: none;
415
- border-top: 1px solid var(--borderColor-default, #d0d7de);
414
+ border-top: 1px solid var(--color-border, #d0d7de);
416
415
  margin: 16px 0;
417
416
  }
418
417
 
419
418
  /* Details/summary — interactive collapsible sections */
420
419
  .issueBody details {
421
- border: 1px solid var(--borderColor-muted, #d8dee4);
420
+ border: 1px solid var(--color-border-muted, #d8dee4);
422
421
  border-radius: 6px;
423
422
  margin: 12px 0;
424
423
  padding: 0;
@@ -436,7 +435,7 @@
436
435
 
437
436
  .issueBody details[open] > summary {
438
437
  list-style-type: disclosure-open;
439
- border-bottom: 1px solid var(--borderColor-muted, #d8dee4);
438
+ border-bottom: 1px solid var(--color-border-muted, #d8dee4);
440
439
  margin-bottom: 0;
441
440
  }
442
441
 
@@ -448,7 +447,7 @@
448
447
  margin: 0;
449
448
  padding: 0 24px 12px;
450
449
  font-size: 12px;
451
- color: var(--fgColor-danger, #cf222e);
450
+ color: var(--color-foreground-danger, #cf222e);
452
451
  }
453
452
 
454
453
  /* ── Expanded issue view in modal ─────────────────────────────────── */
@@ -457,13 +456,13 @@
457
456
  height: 100%;
458
457
  display: flex;
459
458
  flex-direction: column;
460
- background: var(--bgColor-default, #ffffff);
459
+ background: var(--color-background, #ffffff);
461
460
  font-family: var(--tc-font-stack, system-ui, -apple-system, sans-serif);
462
461
  }
463
462
 
464
463
  .expandedIssueHeader {
465
464
  padding: 24px 40px 16px;
466
- border-bottom: 1px solid var(--borderColor-muted, #d8dee4);
465
+ border-bottom: 1px solid var(--color-border-muted, #d8dee4);
467
466
  }
468
467
 
469
468
  .expandedIssueTitle {
@@ -471,7 +470,7 @@
471
470
  font-size: 28px;
472
471
  font-weight: 400;
473
472
  line-height: 1.25;
474
- color: var(--fgColor-default, #1f2328);
473
+ color: var(--color-foreground, #1f2328);
475
474
  }
476
475
 
477
476
  .expandedIssueTitle a {
@@ -484,7 +483,7 @@
484
483
  }
485
484
 
486
485
  .expandedIssueNumber {
487
- color: var(--fgColor-muted, #656d76);
486
+ color: var(--color-foreground-muted, #656d76);
488
487
  }
489
488
 
490
489
  .expandedByline {
@@ -499,7 +498,7 @@
499
498
  align-items: center;
500
499
  gap: 6px;
501
500
  text-decoration: none;
502
- color: var(--fgColor-default, #1f2328);
501
+ color: var(--color-foreground, #1f2328);
503
502
  font-weight: 600;
504
503
  }
505
504
 
@@ -508,7 +507,7 @@
508
507
  }
509
508
 
510
509
  .expandedBylineText {
511
- color: var(--fgColor-muted, #656d76);
510
+ color: var(--color-foreground-muted, #656d76);
512
511
  }
513
512
 
514
513
  .expandedIssueBody {
@@ -517,31 +516,31 @@
517
516
  padding: 24px 40px;
518
517
  font-size: 15px;
519
518
  line-height: 1.7;
520
- color: var(--fgColor-default, #1f2328);
519
+ color: var(--color-foreground, #1f2328);
521
520
  max-width: 800px;
522
521
  }
523
522
 
524
523
  .expandedIssueBody * { pointer-events: auto; }
525
- .expandedIssueBody a { color: var(--fgColor-accent, #0969da); text-decoration: none; }
524
+ .expandedIssueBody a { color: var(--color-foreground-accent, #0969da); text-decoration: none; }
526
525
  .expandedIssueBody a:hover { text-decoration: underline; }
527
- .expandedIssueBody a[data-mention] { background: var(--bgColor-accent-muted, #ddf4ff); color: var(--fgColor-accent, #0969da); padding: 1px 6px; border-radius: 4px; font-weight: 600; text-decoration: none; }
528
- .expandedIssueBody a[data-mention]:hover { background: var(--bgColor-accent-emphasis, #0969da); color: var(--fgColor-onEmphasis, #ffffff); text-decoration: none; }
526
+ .expandedIssueBody a[data-mention] { background: var(--color-background-accent-muted, #ddf4ff); color: var(--color-foreground-accent, #0969da); padding: 1px 6px; border-radius: 4px; font-weight: 600; text-decoration: none; }
527
+ .expandedIssueBody a[data-mention]:hover { background: var(--color-background-accent-emphasis, #0969da); color: var(--color-foreground-on-emphasis, #ffffff); text-decoration: none; }
529
528
  .expandedIssueBody img { max-width: 100%; height: auto; border-radius: 6px; margin: 8px 0; display: block; }
530
529
  .expandedIssueBody video { max-width: 100%; height: auto; border-radius: 6px; margin: 8px 0; display: block; }
531
- .expandedIssueBody h1 { font-size: 20px; font-weight: 700; margin: 16px 0 8px; border-bottom: 1px solid var(--borderColor-muted, #d8dee4); padding-bottom: 4px; }
530
+ .expandedIssueBody h1 { font-size: 20px; font-weight: 700; margin: 16px 0 8px; border-bottom: 1px solid var(--color-border-muted, #d8dee4); padding-bottom: 4px; }
532
531
  .expandedIssueBody h2 { font-size: 17px; font-weight: 600; margin: 14px 0 6px; }
533
532
  .expandedIssueBody h3 { font-size: 15px; font-weight: 600; margin: 12px 0 4px; }
534
533
  .expandedIssueBody p { margin: 0 0 12px; }
535
- .expandedIssueBody code { background: var(--bgColor-neutral-muted, #afb8c133); padding: 2px 5px; border-radius: 4px; font-size: 13px; font-family: ui-monospace, SFMono-Regular, monospace; }
536
- .expandedIssueBody pre { padding: 12px 16px; border-radius: 6px; border: 1px solid var(--borderColor-muted, #d8dee4); overflow-x: auto; margin: 12px 0; background: var(--bgColor-neutral-muted, #afb8c133); }
534
+ .expandedIssueBody code { background: var(--color-background-neutral-muted, #afb8c133); padding: 2px 5px; border-radius: 4px; font-size: 13px; font-family: ui-monospace, SFMono-Regular, monospace; }
535
+ .expandedIssueBody pre { padding: 12px 16px; border-radius: 6px; border: 1px solid var(--color-border-muted, #d8dee4); overflow-x: auto; margin: 12px 0; background: var(--color-background-neutral-muted, #afb8c133); }
537
536
  .expandedIssueBody pre code { background: none; padding: 0; }
538
537
  .expandedIssueBody ul { margin: 0 0 12px; padding-left: 24px; list-style: disc; }
539
538
  .expandedIssueBody ol { margin: 0 0 12px; padding-left: 24px; list-style: decimal; }
540
539
  .expandedIssueBody li { margin: 0 0 4px; display: list-item; }
541
- .expandedIssueBody blockquote { border-left: 4px solid var(--borderColor-default, #d0d7de); margin: 12px 0; padding: 4px 16px; color: var(--fgColor-muted, #656d76); }
542
- .expandedIssueBody details { border: 1px solid var(--borderColor-muted, #d8dee4); border-radius: 6px; margin: 12px 0; padding: 0; }
540
+ .expandedIssueBody blockquote { border-left: 4px solid var(--color-border, #d0d7de); margin: 12px 0; padding: 4px 16px; color: var(--color-foreground-muted, #656d76); }
541
+ .expandedIssueBody details { border: 1px solid var(--color-border-muted, #d8dee4); border-radius: 6px; margin: 12px 0; padding: 0; }
543
542
  .expandedIssueBody summary { display: list-item; cursor: pointer; font-weight: 600; padding: 8px 12px; list-style: disclosure-closed inside; user-select: none; }
544
- .expandedIssueBody details[open] > summary { list-style-type: disclosure-open; border-bottom: 1px solid var(--borderColor-muted, #d8dee4); margin-bottom: 0; }
543
+ .expandedIssueBody details[open] > summary { list-style-type: disclosure-open; border-bottom: 1px solid var(--color-border-muted, #d8dee4); margin-bottom: 0; }
545
544
  .expandedIssueBody details > :not(summary) { padding: 0 12px; }
546
545
 
547
546
  /* ── Expanded plain link view ─────────────────────────────────────── */
@@ -564,19 +563,19 @@
564
563
  margin: 0 0 8px;
565
564
  font-size: 24px;
566
565
  font-weight: 600;
567
- color: var(--fgColor-default, #1f2328);
566
+ color: var(--color-foreground, #1f2328);
568
567
  }
569
568
 
570
569
  .expandedDescription {
571
570
  margin: 0 0 12px;
572
571
  font-size: 15px;
573
572
  line-height: 1.5;
574
- color: var(--fgColor-muted, #656d76);
573
+ color: var(--color-foreground-muted, #656d76);
575
574
  }
576
575
 
577
576
  .expandedUrl {
578
577
  font-size: 14px;
579
- color: var(--fgColor-accent, #0969da);
578
+ color: var(--color-foreground-accent, #0969da);
580
579
  text-decoration: none;
581
580
  }
582
581
 
@@ -592,28 +591,28 @@
592
591
  gap: 8px;
593
592
  flex-wrap: wrap;
594
593
  font-size: 12px;
595
- color: var(--fgColor-muted, #656d76);
594
+ color: var(--color-foreground-muted, #656d76);
596
595
  min-width: 0;
597
596
  }
598
597
 
599
598
  .prStateBadge {
600
599
  display: inline-flex;
601
600
  align-items: center;
602
- gap: 4px;
603
- padding: 3px 8px;
601
+ gap: 6px;
602
+ padding: 5px 10px 5px 9px;
604
603
  border-radius: 2em;
605
604
  font-size: 12px;
606
605
  font-weight: 500;
607
606
  line-height: 1;
608
- color: var(--fgColor-onEmphasis, #ffffff);
607
+ color: var(--color-foreground-on-emphasis, #ffffff);
609
608
  white-space: nowrap;
610
609
  }
611
610
 
612
- .prStateOpen { background: var(--bgColor-open-emphasis, #1f883d); }
613
- .prStateMerged { background: var(--bgColor-done-emphasis, #8250df); }
614
- .prStateClosed { background: var(--bgColor-closed-emphasis, #cf222e); }
611
+ .prStateOpen { background: var(--color-background-open-emphasis, #1f883d); }
612
+ .prStateMerged { background: var(--color-background-done-emphasis, #8250df); }
613
+ .prStateClosed { background: var(--color-background-closed-emphasis, #cf222e); }
615
614
  .prStateDraft {
616
- background: var(--bgColor-neutral-emphasis, #59636e);
615
+ background: var(--color-background-neutral-emphasis, #59636e);
617
616
  }
618
617
 
619
618
  .prBranchRef {
@@ -622,8 +621,8 @@
622
621
  gap: 4px;
623
622
  padding: 2px 6px;
624
623
  border-radius: 4px;
625
- background: var(--bgColor-muted, #f6f8fa);
626
- color: var(--fgColor-default, #1f2328);
624
+ background: var(--color-background-muted, #f6f8fa);
625
+ color: var(--color-foreground, #1f2328);
627
626
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
628
627
  font-size: 11px;
629
628
  max-width: 240px;
@@ -638,7 +637,7 @@
638
637
  }
639
638
 
640
639
  .prBranchArrow {
641
- color: var(--fgColor-muted, #656d76);
640
+ color: var(--color-foreground-muted, #656d76);
642
641
  font-family: -apple-system, system-ui, sans-serif;
643
642
  flex-shrink: 0;
644
643
  }
@@ -652,5 +651,5 @@
652
651
  font-weight: 600;
653
652
  }
654
653
 
655
- .prDiffAdd { color: var(--fgColor-success, #1a7f37); }
656
- .prDiffDel { color: var(--fgColor-danger, #cf222e); }
654
+ .prDiffAdd { color: var(--color-foreground-success, #1a7f37); }
655
+ .prDiffDel { color: var(--color-foreground-danger, #cf222e); }