@polderlabs/bizar 7.0.2 → 8.0.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 (490) hide show
  1. package/.claude/settings.local.json +8 -0
  2. package/bizar-dash/DESIGN.md +729 -969
  3. package/bizar-dash/GLYPH.md +418 -0
  4. package/bizar-dash/PLAN.md +1135 -0
  5. package/bizar-dash/dist/assets/ActivityFeed-BRBtQOHB.js +6 -0
  6. package/bizar-dash/dist/assets/ActivityFeed-BRBtQOHB.js.map +1 -0
  7. package/bizar-dash/dist/assets/ActivityView-CwqhxBfh.js +1 -0
  8. package/bizar-dash/dist/assets/ActivityView-CwqhxBfh.js.map +1 -0
  9. package/bizar-dash/dist/assets/AgentActivity-6MxU-a9F.js +1 -0
  10. package/bizar-dash/dist/assets/AgentActivity-6MxU-a9F.js.map +1 -0
  11. package/bizar-dash/dist/assets/AgentsView-BYrOFdwl.js +8 -0
  12. package/bizar-dash/dist/assets/AgentsView-BYrOFdwl.js.map +1 -0
  13. package/bizar-dash/dist/assets/Badge-Cd61wsBa.js +1 -0
  14. package/bizar-dash/dist/assets/Badge-Cd61wsBa.js.map +1 -0
  15. package/bizar-dash/dist/assets/Card-C_bvqXdQ.js +1 -0
  16. package/bizar-dash/dist/assets/Card-C_bvqXdQ.js.map +1 -0
  17. package/bizar-dash/dist/assets/EmptyState-BWQuKnk9.js +1 -0
  18. package/bizar-dash/dist/assets/EmptyState-BWQuKnk9.js.map +1 -0
  19. package/bizar-dash/dist/assets/GoalsView-Dok0yt9S.js +11 -0
  20. package/bizar-dash/dist/assets/GoalsView-Dok0yt9S.js.map +1 -0
  21. package/bizar-dash/dist/assets/Grid-C62gCPqt.js +1 -0
  22. package/bizar-dash/dist/assets/Grid-C62gCPqt.js.map +1 -0
  23. package/bizar-dash/dist/assets/KanbanCard-CtTKP6ZX.js +21 -0
  24. package/bizar-dash/dist/assets/KanbanCard-CtTKP6ZX.js.map +1 -0
  25. package/bizar-dash/dist/assets/LibrariesView-BcyBQXiY.js +67 -0
  26. package/bizar-dash/dist/assets/LibrariesView-BcyBQXiY.js.map +1 -0
  27. package/bizar-dash/dist/assets/MemoryView-49wR4u-y.js +13 -0
  28. package/bizar-dash/dist/assets/MemoryView-49wR4u-y.js.map +1 -0
  29. package/bizar-dash/dist/assets/OverviewView-BtQ_UWYj.js +1 -0
  30. package/bizar-dash/dist/assets/OverviewView-BtQ_UWYj.js.map +1 -0
  31. package/bizar-dash/dist/assets/ProgressBar-CpvDeq9F.js +1 -0
  32. package/bizar-dash/dist/assets/ProgressBar-CpvDeq9F.js.map +1 -0
  33. package/bizar-dash/dist/assets/SettingsRow-DmIe5OUu.js +30 -0
  34. package/bizar-dash/dist/assets/SettingsRow-DmIe5OUu.js.map +1 -0
  35. package/bizar-dash/dist/assets/SettingsView-D1KmGWbi.js +48 -0
  36. package/bizar-dash/dist/assets/SettingsView-D1KmGWbi.js.map +1 -0
  37. package/bizar-dash/dist/assets/StatTile-BkIP32gG.js +11 -0
  38. package/bizar-dash/dist/assets/StatTile-BkIP32gG.js.map +1 -0
  39. package/bizar-dash/dist/assets/TasksView-Cba3GJ42.js +1 -0
  40. package/bizar-dash/dist/assets/TasksView-Cba3GJ42.js.map +1 -0
  41. package/bizar-dash/dist/assets/ViewHeader-D6c2cw1b.js +6 -0
  42. package/bizar-dash/dist/assets/ViewHeader-D6c2cw1b.js.map +1 -0
  43. package/bizar-dash/dist/assets/brain-DeoXNDE2.js +6 -0
  44. package/bizar-dash/dist/assets/brain-DeoXNDE2.js.map +1 -0
  45. package/bizar-dash/dist/assets/calendar-DRlQkGJc.js +6 -0
  46. package/bizar-dash/dist/assets/calendar-DRlQkGJc.js.map +1 -0
  47. package/bizar-dash/dist/assets/circle-check-DmYQ3vGp.js +6 -0
  48. package/bizar-dash/dist/assets/circle-check-DmYQ3vGp.js.map +1 -0
  49. package/bizar-dash/dist/assets/cmdk-BwN8hcKQ.js +80 -0
  50. package/bizar-dash/dist/assets/cmdk-BwN8hcKQ.js.map +1 -0
  51. package/bizar-dash/dist/assets/dnd-kit-DR2Qzzxk.js +5 -0
  52. package/bizar-dash/dist/assets/dnd-kit-DR2Qzzxk.js.map +1 -0
  53. package/bizar-dash/dist/assets/git-merge-OoqBKQer.js +6 -0
  54. package/bizar-dash/dist/assets/git-merge-OoqBKQer.js.map +1 -0
  55. package/bizar-dash/dist/assets/git-pull-request-CXBQTR2f.js +6 -0
  56. package/bizar-dash/dist/assets/git-pull-request-CXBQTR2f.js.map +1 -0
  57. package/bizar-dash/dist/assets/main-COdgjqbZ.css +1 -0
  58. package/bizar-dash/dist/assets/main-Cw6gybzS.js +109 -0
  59. package/bizar-dash/dist/assets/main-Cw6gybzS.js.map +1 -0
  60. package/bizar-dash/dist/assets/message-square-DUTeIQAR.js +6 -0
  61. package/bizar-dash/dist/assets/message-square-DUTeIQAR.js.map +1 -0
  62. package/bizar-dash/dist/assets/minus-CrStJTZ7.js +6 -0
  63. package/bizar-dash/dist/assets/minus-CrStJTZ7.js.map +1 -0
  64. package/bizar-dash/dist/assets/wrench-BJ1WIC4u.js +6 -0
  65. package/bizar-dash/dist/assets/wrench-BJ1WIC4u.js.map +1 -0
  66. package/bizar-dash/dist/{mobile.html → v8.html} +6 -9
  67. package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  68. package/bizar-dash/src/server/server.mjs +1 -57
  69. package/bizar-dash/src/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  70. package/bizar-dash/src/web/v8/App.tsx +188 -0
  71. package/bizar-dash/src/web/v8/__tests__/App.test.tsx +102 -0
  72. package/bizar-dash/src/web/v8/__tests__/AppShell.test.tsx +79 -0
  73. package/bizar-dash/src/web/v8/__tests__/PageSkeleton.test.tsx +12 -0
  74. package/bizar-dash/src/web/v8/__tests__/SettingsView.test.tsx +84 -0
  75. package/bizar-dash/src/web/v8/__tests__/Sidebar.test.tsx +95 -0
  76. package/bizar-dash/src/web/v8/__tests__/activity.test.tsx +63 -0
  77. package/bizar-dash/src/web/v8/__tests__/agents.test.tsx +90 -0
  78. package/bizar-dash/src/web/v8/__tests__/controls.test.tsx +135 -0
  79. package/bizar-dash/src/web/v8/__tests__/cx.test.ts +25 -0
  80. package/bizar-dash/src/web/v8/__tests__/data.test.tsx +293 -0
  81. package/bizar-dash/src/web/v8/__tests__/feedback.test.tsx +213 -0
  82. package/bizar-dash/src/web/v8/__tests__/goals.test.tsx +105 -0
  83. package/bizar-dash/src/web/v8/__tests__/kanban.test.tsx +176 -0
  84. package/bizar-dash/src/web/v8/__tests__/libraries.test.tsx +70 -0
  85. package/bizar-dash/src/web/v8/__tests__/memory.test.tsx +60 -0
  86. package/bizar-dash/src/web/v8/__tests__/navigation.test.tsx +137 -0
  87. package/bizar-dash/src/web/v8/__tests__/settings.test.tsx +104 -0
  88. package/bizar-dash/src/web/v8/__tests__/theme.test.tsx +98 -0
  89. package/bizar-dash/src/web/v8/__tests__/views.test.tsx +112 -0
  90. package/bizar-dash/src/web/v8/main.tsx +28 -0
  91. package/bizar-dash/src/web/v8/shell/AppShell.tsx +90 -0
  92. package/bizar-dash/src/web/v8/shell/PageSkeleton.tsx +29 -0
  93. package/bizar-dash/src/web/v8/shell/Sidebar.tsx +361 -0
  94. package/bizar-dash/src/web/v8/shell/StatusBar.tsx +63 -0
  95. package/bizar-dash/src/web/v8/shell/Topbar.tsx +113 -0
  96. package/bizar-dash/src/web/v8/shell/index.ts +15 -0
  97. package/bizar-dash/src/web/v8/ui/activity/ActivityFeed.tsx +137 -0
  98. package/bizar-dash/src/web/v8/ui/agents/AgentActivity.tsx +101 -0
  99. package/bizar-dash/src/web/v8/ui/agents/AgentCard.tsx +158 -0
  100. package/bizar-dash/src/web/v8/ui/controls/Button.tsx +141 -0
  101. package/bizar-dash/src/web/v8/ui/controls/ButtonGroup.tsx +32 -0
  102. package/bizar-dash/src/web/v8/ui/controls/Checkbox.tsx +49 -0
  103. package/bizar-dash/src/web/v8/ui/controls/Field.tsx +78 -0
  104. package/bizar-dash/src/web/v8/ui/controls/Form.tsx +23 -0
  105. package/bizar-dash/src/web/v8/ui/controls/IconButton.tsx +112 -0
  106. package/bizar-dash/src/web/v8/ui/controls/Input.tsx +94 -0
  107. package/bizar-dash/src/web/v8/ui/controls/RadioGroup.tsx +74 -0
  108. package/bizar-dash/src/web/v8/ui/controls/Select.tsx +171 -0
  109. package/bizar-dash/src/web/v8/ui/controls/Slider.tsx +68 -0
  110. package/bizar-dash/src/web/v8/ui/controls/Switch.tsx +56 -0
  111. package/bizar-dash/src/web/v8/ui/controls/Textarea.tsx +64 -0
  112. package/bizar-dash/src/web/v8/ui/controls/Toggle.tsx +36 -0
  113. package/bizar-dash/src/web/v8/ui/controls/ToggleGroup.tsx +85 -0
  114. package/bizar-dash/src/web/v8/ui/data/Accordion.tsx +134 -0
  115. package/bizar-dash/src/web/v8/ui/data/Avatar.tsx +175 -0
  116. package/bizar-dash/src/web/v8/ui/data/Badge.tsx +93 -0
  117. package/bizar-dash/src/web/v8/ui/data/BarList.tsx +101 -0
  118. package/bizar-dash/src/web/v8/ui/data/Card.tsx +140 -0
  119. package/bizar-dash/src/web/v8/ui/data/Chip.tsx +96 -0
  120. package/bizar-dash/src/web/v8/ui/data/Kbd.tsx +42 -0
  121. package/bizar-dash/src/web/v8/ui/data/ProgressBar.tsx +93 -0
  122. package/bizar-dash/src/web/v8/ui/data/Sparkline.tsx +98 -0
  123. package/bizar-dash/src/web/v8/ui/data/StatTile.tsx +150 -0
  124. package/bizar-dash/src/web/v8/ui/data/Table.tsx +170 -0
  125. package/bizar-dash/src/web/v8/ui/data/Timeline.tsx +130 -0
  126. package/bizar-dash/src/web/v8/ui/data/ViewHeader.tsx +122 -0
  127. package/bizar-dash/src/web/v8/ui/feedback/Alert.tsx +95 -0
  128. package/bizar-dash/src/web/v8/ui/feedback/Banner.tsx +39 -0
  129. package/bizar-dash/src/web/v8/ui/feedback/ContextMenu.tsx +143 -0
  130. package/bizar-dash/src/web/v8/ui/feedback/Dialog.tsx +149 -0
  131. package/bizar-dash/src/web/v8/ui/feedback/Drawer.tsx +8 -0
  132. package/bizar-dash/src/web/v8/ui/feedback/DropdownMenu.tsx +231 -0
  133. package/bizar-dash/src/web/v8/ui/feedback/EmptyState.tsx +48 -0
  134. package/bizar-dash/src/web/v8/ui/feedback/Popover.tsx +56 -0
  135. package/bizar-dash/src/web/v8/ui/feedback/Sheet.tsx +103 -0
  136. package/bizar-dash/src/web/v8/ui/feedback/Skeleton.tsx +67 -0
  137. package/bizar-dash/src/web/v8/ui/feedback/Spinner.tsx +30 -0
  138. package/bizar-dash/src/web/v8/ui/feedback/Toast.tsx +66 -0
  139. package/bizar-dash/src/web/v8/ui/feedback/Tooltip.tsx +89 -0
  140. package/bizar-dash/src/web/v8/ui/goals/GoalCard.tsx +176 -0
  141. package/bizar-dash/src/web/v8/ui/goals/KeyResult.tsx +115 -0
  142. package/bizar-dash/src/web/v8/ui/index.ts +322 -0
  143. package/bizar-dash/src/web/v8/ui/kanban/KanbanBoard.tsx +80 -0
  144. package/bizar-dash/src/web/v8/ui/kanban/KanbanCard.tsx +247 -0
  145. package/bizar-dash/src/web/v8/ui/kanban/KanbanColumn.tsx +181 -0
  146. package/bizar-dash/src/web/v8/ui/kanban/KanbanContextMenu.tsx +122 -0
  147. package/bizar-dash/src/web/v8/ui/kanban/KanbanQuickAdd.tsx +141 -0
  148. package/bizar-dash/src/web/v8/ui/libraries/LibraryGrid.tsx +30 -0
  149. package/bizar-dash/src/web/v8/ui/libraries/LibraryItem.tsx +161 -0
  150. package/bizar-dash/src/web/v8/ui/memory/MemoryVault.tsx +144 -0
  151. package/bizar-dash/src/web/v8/ui/navigation/CommandPalette.tsx +224 -0
  152. package/bizar-dash/src/web/v8/ui/navigation/NavLink.tsx +81 -0
  153. package/bizar-dash/src/web/v8/ui/navigation/Pagination.tsx +164 -0
  154. package/bizar-dash/src/web/v8/ui/navigation/Tabs.tsx +128 -0
  155. package/bizar-dash/src/web/v8/ui/navigation/useCommandPaletteHotkey.test.ts +79 -0
  156. package/bizar-dash/src/web/v8/ui/primitives/Box.tsx +144 -0
  157. package/bizar-dash/src/web/v8/ui/primitives/Center.tsx +40 -0
  158. package/bizar-dash/src/web/v8/ui/primitives/Cluster.tsx +67 -0
  159. package/bizar-dash/src/web/v8/ui/primitives/Grid.tsx +104 -0
  160. package/bizar-dash/src/web/v8/ui/primitives/Inline.tsx +77 -0
  161. package/bizar-dash/src/web/v8/ui/primitives/Portal.tsx +33 -0
  162. package/bizar-dash/src/web/v8/ui/primitives/ScrollArea.tsx +62 -0
  163. package/bizar-dash/src/web/v8/ui/primitives/Separator.tsx +42 -0
  164. package/bizar-dash/src/web/v8/ui/primitives/Stack.tsx +73 -0
  165. package/bizar-dash/src/web/v8/ui/primitives/VisuallyHidden.tsx +49 -0
  166. package/bizar-dash/src/web/v8/ui/settings/SettingsNav.tsx +91 -0
  167. package/bizar-dash/src/web/v8/ui/settings/SettingsRow.tsx +88 -0
  168. package/bizar-dash/src/web/v8/ui/settings/SettingsSection.tsx +109 -0
  169. package/bizar-dash/src/web/v8/ui/styles/globals.css +220 -0
  170. package/bizar-dash/src/web/v8/ui/styles/reset.css +57 -0
  171. package/bizar-dash/src/web/v8/ui/styles/tokens.css +217 -0
  172. package/bizar-dash/src/web/v8/ui/theme/DensityProvider.test.tsx +74 -0
  173. package/bizar-dash/src/web/v8/ui/theme/DensityProvider.tsx +66 -0
  174. package/bizar-dash/src/web/v8/ui/theme/ThemeProvider.test.tsx +86 -0
  175. package/bizar-dash/src/web/v8/ui/theme/ThemeProvider.tsx +94 -0
  176. package/bizar-dash/src/web/v8/ui/theme/ThemeToggle.tsx +88 -0
  177. package/bizar-dash/src/web/v8/ui/theme/useDensity.ts +15 -0
  178. package/bizar-dash/src/web/v8/ui/theme/useTheme.ts +16 -0
  179. package/bizar-dash/src/web/v8/ui/utils/cx.ts +19 -0
  180. package/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +33 -0
  181. package/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +108 -0
  182. package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.test.tsx +142 -0
  183. package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.tsx +144 -0
  184. package/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +84 -0
  185. package/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +41 -0
  186. package/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +61 -0
  187. package/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +92 -0
  188. package/bizar-dash/src/web/v8/views/Router.tsx +96 -0
  189. package/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +305 -0
  190. package/bizar-dash/src/web/v8/views/Tasks/CommandPalettePlaceholder.tsx +106 -0
  191. package/bizar-dash/src/web/v8/views/Tasks/TasksKanbanPlaceholder.tsx +62 -0
  192. package/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +74 -0
  193. package/bizar-dash/src/web/v8/vite-env.d.ts +15 -0
  194. package/bizar-dash/src/web/{mobile.html → v8.html} +4 -7
  195. package/bizar-dash/tests/settings-layout.test.tsx +2 -2
  196. package/bizar-dash/tests/settings-nav.test.tsx +6 -6
  197. package/bizar-dash/tests/setup.ts +26 -0
  198. package/bizar-dash/vite.config.ts +26 -2
  199. package/bizar-dash/vitest.config.ts +5 -3
  200. package/cli/provision-claude.mjs +108 -5
  201. package/package.json +36 -3
  202. package/bizar-dash/dist/assets/EnvVarsSection-BfhAz3ax.js +0 -114
  203. package/bizar-dash/dist/assets/EnvVarsSection-BfhAz3ax.js.map +0 -1
  204. package/bizar-dash/dist/assets/MobileChat-DLWdv6tQ.js +0 -1
  205. package/bizar-dash/dist/assets/MobileChat-DLWdv6tQ.js.map +0 -1
  206. package/bizar-dash/dist/assets/MobileSettings-Bxv62uPY.js +0 -1
  207. package/bizar-dash/dist/assets/MobileSettings-Bxv62uPY.js.map +0 -1
  208. package/bizar-dash/dist/assets/Toast-ATSAmbdi.js +0 -26
  209. package/bizar-dash/dist/assets/Toast-ATSAmbdi.js.map +0 -1
  210. package/bizar-dash/dist/assets/__vite-browser-external-BIHI7g3E.js +0 -1
  211. package/bizar-dash/dist/assets/__vite-browser-external-BIHI7g3E.js.map +0 -1
  212. package/bizar-dash/dist/assets/main-306CZfn6.js +0 -430
  213. package/bizar-dash/dist/assets/main-306CZfn6.js.map +0 -1
  214. package/bizar-dash/dist/assets/main-G3bNDpY3.css +0 -1
  215. package/bizar-dash/dist/assets/mobile-C_naUN91.js +0 -1
  216. package/bizar-dash/dist/assets/mobile-C_naUN91.js.map +0 -1
  217. package/bizar-dash/dist/assets/mobile-layout-BWLtwtfQ.css +0 -1
  218. package/bizar-dash/dist/assets/mobile-layout-GZ3bE8L6.js +0 -211
  219. package/bizar-dash/dist/assets/mobile-layout-GZ3bE8L6.js.map +0 -1
  220. package/bizar-dash/dist/assets/useSlashCommands-BOwD7lNb.js +0 -65
  221. package/bizar-dash/dist/assets/useSlashCommands-BOwD7lNb.js.map +0 -1
  222. package/bizar-dash/dist/index.html +0 -43
  223. package/bizar-dash/src/web/App.tsx +0 -915
  224. package/bizar-dash/src/web/MobileApp.tsx +0 -414
  225. package/bizar-dash/src/web/components/ArtifactCreateDialog.tsx +0 -95
  226. package/bizar-dash/src/web/components/ArtifactListDialog.tsx +0 -55
  227. package/bizar-dash/src/web/components/ArtifactViewer.tsx +0 -144
  228. package/bizar-dash/src/web/components/AuditDialog.tsx +0 -79
  229. package/bizar-dash/src/web/components/AutosaveField.tsx +0 -50
  230. package/bizar-dash/src/web/components/BackupRestore.tsx +0 -330
  231. package/bizar-dash/src/web/components/BgStatusBadge.tsx +0 -32
  232. package/bizar-dash/src/web/components/Button.tsx +0 -56
  233. package/bizar-dash/src/web/components/CanvasContextMenu.tsx +0 -68
  234. package/bizar-dash/src/web/components/Card.tsx +0 -40
  235. package/bizar-dash/src/web/components/CollapsibleSection.tsx +0 -72
  236. package/bizar-dash/src/web/components/CommandDialog.tsx +0 -66
  237. package/bizar-dash/src/web/components/DoctorPanel.tsx +0 -160
  238. package/bizar-dash/src/web/components/EmptyState.tsx +0 -30
  239. package/bizar-dash/src/web/components/EnvVarManager.tsx +0 -430
  240. package/bizar-dash/src/web/components/EvalDiff.tsx +0 -157
  241. package/bizar-dash/src/web/components/EvalExportButton.tsx +0 -27
  242. package/bizar-dash/src/web/components/EvalRunCard.tsx +0 -78
  243. package/bizar-dash/src/web/components/FileBrowser.tsx +0 -633
  244. package/bizar-dash/src/web/components/HeadroomSettings.tsx +0 -418
  245. package/bizar-dash/src/web/components/HeadroomStatus.tsx +0 -158
  246. package/bizar-dash/src/web/components/HelpDialog.tsx +0 -55
  247. package/bizar-dash/src/web/components/InviteDialog.tsx +0 -205
  248. package/bizar-dash/src/web/components/KillConfirmDialog.tsx +0 -88
  249. package/bizar-dash/src/web/components/MobileBottomNav.tsx +0 -38
  250. package/bizar-dash/src/web/components/MobileDrawer.tsx +0 -68
  251. package/bizar-dash/src/web/components/MobileHeader.tsx +0 -50
  252. package/bizar-dash/src/web/components/MobileLayout.tsx +0 -63
  253. package/bizar-dash/src/web/components/Modal.tsx +0 -215
  254. package/bizar-dash/src/web/components/Notifications.tsx +0 -242
  255. package/bizar-dash/src/web/components/ScheduleTemplateCard.tsx +0 -72
  256. package/bizar-dash/src/web/components/ScreenshotCapture.tsx +0 -138
  257. package/bizar-dash/src/web/components/ScreenshotOCR.tsx +0 -42
  258. package/bizar-dash/src/web/components/SearchModal.tsx +0 -227
  259. package/bizar-dash/src/web/components/SettingsNav.tsx +0 -112
  260. package/bizar-dash/src/web/components/SettingsSearch.tsx +0 -328
  261. package/bizar-dash/src/web/components/Sidebar.tsx +0 -89
  262. package/bizar-dash/src/web/components/Spinner.tsx +0 -19
  263. package/bizar-dash/src/web/components/StatusBadge.tsx +0 -56
  264. package/bizar-dash/src/web/components/Tag.tsx +0 -41
  265. package/bizar-dash/src/web/components/TailscaleSettings.tsx +0 -161
  266. package/bizar-dash/src/web/components/TaskCard.tsx +0 -69
  267. package/bizar-dash/src/web/components/TaskCreateSheet.tsx +0 -76
  268. package/bizar-dash/src/web/components/Toast.tsx +0 -150
  269. package/bizar-dash/src/web/components/Toggle.tsx +0 -31
  270. package/bizar-dash/src/web/components/Topbar.tsx +0 -410
  271. package/bizar-dash/src/web/components/UsageChart.tsx +0 -250
  272. package/bizar-dash/src/web/components/UsageTable.tsx +0 -90
  273. package/bizar-dash/src/web/components/VirtualList.tsx +0 -53
  274. package/bizar-dash/src/web/components/VisualPlanDialog.tsx +0 -58
  275. package/bizar-dash/src/web/components/VoiceNotesPanel.tsx +0 -211
  276. package/bizar-dash/src/web/components/VoiceRecorder.tsx +0 -105
  277. package/bizar-dash/src/web/components/WorkspaceSelector.tsx +0 -158
  278. package/bizar-dash/src/web/components/agents/CommunicationLog.tsx +0 -126
  279. package/bizar-dash/src/web/components/agents/DependencyGraph.tsx +0 -163
  280. package/bizar-dash/src/web/components/agents/QualityGates.tsx +0 -123
  281. package/bizar-dash/src/web/components/agents/RealTimeEventLog.tsx +0 -127
  282. package/bizar-dash/src/web/components/agents/RoutingDecisions.test.tsx +0 -148
  283. package/bizar-dash/src/web/components/agents/RoutingDecisions.tsx +0 -160
  284. package/bizar-dash/src/web/components/background/AttachButton.tsx +0 -96
  285. package/bizar-dash/src/web/components/background/TmuxAttachCard.tsx +0 -122
  286. package/bizar-dash/src/web/components/chat/AgentChip.tsx +0 -68
  287. package/bizar-dash/src/web/components/chat/AgentNode.tsx +0 -127
  288. package/bizar-dash/src/web/components/chat/AgentTree.tsx +0 -80
  289. package/bizar-dash/src/web/components/chat/ChatBubble.tsx +0 -60
  290. package/bizar-dash/src/web/components/chat/ChatComposer.tsx +0 -72
  291. package/bizar-dash/src/web/components/chat/ChatInfoPanel.tsx +0 -370
  292. package/bizar-dash/src/web/components/chat/ChatRail.tsx +0 -387
  293. package/bizar-dash/src/web/components/chat/ChatThread.tsx +0 -127
  294. package/bizar-dash/src/web/components/chat/ChatTopBar.tsx +0 -50
  295. package/bizar-dash/src/web/components/chat/Composer.tsx +0 -166
  296. package/bizar-dash/src/web/components/chat/ConfirmModal.tsx +0 -54
  297. package/bizar-dash/src/web/components/chat/EmptyState.tsx +0 -21
  298. package/bizar-dash/src/web/components/chat/FirstRunGreeting.tsx +0 -18
  299. package/bizar-dash/src/web/components/chat/FloatingComposer.tsx +0 -38
  300. package/bizar-dash/src/web/components/chat/InfoPanel.tsx +0 -184
  301. package/bizar-dash/src/web/components/chat/JumpToLatest.tsx +0 -58
  302. package/bizar-dash/src/web/components/chat/LoadingSkeleton.tsx +0 -19
  303. package/bizar-dash/src/web/components/chat/MessageBlock.tsx +0 -260
  304. package/bizar-dash/src/web/components/chat/MessageBubble.tsx +0 -60
  305. package/bizar-dash/src/web/components/chat/SessionList.tsx +0 -163
  306. package/bizar-dash/src/web/components/chat/SessionRowMenu.tsx +0 -206
  307. package/bizar-dash/src/web/components/chat/StreamingIndicator.tsx +0 -37
  308. package/bizar-dash/src/web/components/chat/SuggestionCards.tsx +0 -55
  309. package/bizar-dash/src/web/components/chat/WelcomeScreen.tsx +0 -36
  310. package/bizar-dash/src/web/components/chat/_legacy.ts +0 -30
  311. package/bizar-dash/src/web/components/chat/index.ts +0 -31
  312. package/bizar-dash/src/web/components/chat/useAutoGrowTextarea.ts +0 -18
  313. package/bizar-dash/src/web/components/chat/useChat.ts +0 -1190
  314. package/bizar-dash/src/web/components/chat/useSlashCommands.ts +0 -47
  315. package/bizar-dash/src/web/components/goals/GoalInput.tsx +0 -86
  316. package/bizar-dash/src/web/components/goals/PlanVisualization.tsx +0 -111
  317. package/bizar-dash/src/web/components/tasks/BacklogPanel.css +0 -109
  318. package/bizar-dash/src/web/components/tasks/BacklogPanel.tsx +0 -209
  319. package/bizar-dash/src/web/hooks/useAutosave.ts +0 -107
  320. package/bizar-dash/src/web/hooks/useI18n.ts +0 -13
  321. package/bizar-dash/src/web/index.html +0 -37
  322. package/bizar-dash/src/web/lib/api.ts +0 -237
  323. package/bizar-dash/src/web/lib/goapPlanner.ts +0 -614
  324. package/bizar-dash/src/web/lib/i18n.ts +0 -25
  325. package/bizar-dash/src/web/lib/logger.ts +0 -30
  326. package/bizar-dash/src/web/lib/markdown.tsx +0 -59
  327. package/bizar-dash/src/web/lib/search.ts +0 -115
  328. package/bizar-dash/src/web/lib/types.ts +0 -894
  329. package/bizar-dash/src/web/lib/utils.ts +0 -114
  330. package/bizar-dash/src/web/lib/ws.ts +0 -177
  331. package/bizar-dash/src/web/locales/en.json +0 -52
  332. package/bizar-dash/src/web/main.tsx +0 -43
  333. package/bizar-dash/src/web/mobile/MobileApp.tsx +0 -309
  334. package/bizar-dash/src/web/mobile/MobileBottomNav.tsx +0 -38
  335. package/bizar-dash/src/web/mobile/MobileChat.tsx +0 -138
  336. package/bizar-dash/src/web/mobile/MobileDoctor.tsx +0 -80
  337. package/bizar-dash/src/web/mobile/MobileEval.tsx +0 -167
  338. package/bizar-dash/src/web/mobile/MobileMemory.tsx +0 -108
  339. package/bizar-dash/src/web/mobile/MobileOverview.tsx +0 -213
  340. package/bizar-dash/src/web/mobile/MobileSettings.tsx +0 -251
  341. package/bizar-dash/src/web/mobile/MobileTasks.tsx +0 -94
  342. package/bizar-dash/src/web/mobile/MobileTopbar.tsx +0 -115
  343. package/bizar-dash/src/web/mobile/components/MobileBottomSheet.tsx +0 -182
  344. package/bizar-dash/src/web/mobile/components/MobileListItem.tsx +0 -64
  345. package/bizar-dash/src/web/mobile/components/MobileModal.tsx +0 -123
  346. package/bizar-dash/src/web/mobile/views/MobileActivity.tsx +0 -273
  347. package/bizar-dash/src/web/mobile/views/MobileAgents.tsx +0 -374
  348. package/bizar-dash/src/web/mobile/views/MobileArtifactCanvas.tsx +0 -439
  349. package/bizar-dash/src/web/mobile/views/MobileArtifacts.tsx +0 -143
  350. package/bizar-dash/src/web/mobile/views/MobileChat.tsx +0 -257
  351. package/bizar-dash/src/web/mobile/views/MobileConfig.tsx +0 -175
  352. package/bizar-dash/src/web/mobile/views/MobileHistory.tsx +0 -191
  353. package/bizar-dash/src/web/mobile/views/MobileMods.tsx +0 -149
  354. package/bizar-dash/src/web/mobile/views/MobileMore.tsx +0 -121
  355. package/bizar-dash/src/web/mobile/views/MobileNotifications.tsx +0 -137
  356. package/bizar-dash/src/web/mobile/views/MobilePlans.tsx +0 -26
  357. package/bizar-dash/src/web/mobile/views/MobileSchedules.tsx +0 -685
  358. package/bizar-dash/src/web/mobile/views/MobileSearchModal.tsx +0 -172
  359. package/bizar-dash/src/web/mobile/views/MobileSettings.tsx +0 -363
  360. package/bizar-dash/src/web/mobile/views/MobileSkills.tsx +0 -153
  361. package/bizar-dash/src/web/mobile/views/MobileTasks.tsx +0 -564
  362. package/bizar-dash/src/web/mobile/views/QrCodePanel.tsx +0 -69
  363. package/bizar-dash/src/web/mobile.tsx +0 -14
  364. package/bizar-dash/src/web/styles/agents-redesign.css +0 -311
  365. package/bizar-dash/src/web/styles/chat.css +0 -1740
  366. package/bizar-dash/src/web/styles/glyphs.css +0 -960
  367. package/bizar-dash/src/web/styles/main.css +0 -10391
  368. package/bizar-dash/src/web/styles/memory.css +0 -1182
  369. package/bizar-dash/src/web/styles/minimax-usage.css +0 -842
  370. package/bizar-dash/src/web/styles/mobile-chat.css +0 -5
  371. package/bizar-dash/src/web/styles/mobile-layout.css +0 -233
  372. package/bizar-dash/src/web/styles/mobile.css +0 -2181
  373. package/bizar-dash/src/web/styles/settings.css +0 -795
  374. package/bizar-dash/src/web/styles/skills.css +0 -302
  375. package/bizar-dash/src/web/styles/tasks-redesign.css +0 -253
  376. package/bizar-dash/src/web/styles/tasks.css +0 -605
  377. package/bizar-dash/src/web/ui/controls/Button.tsx +0 -77
  378. package/bizar-dash/src/web/ui/controls/Checkbox.tsx +0 -95
  379. package/bizar-dash/src/web/ui/controls/IconButton.tsx +0 -66
  380. package/bizar-dash/src/web/ui/controls/Kbd.tsx +0 -24
  381. package/bizar-dash/src/web/ui/controls/NumberInput.tsx +0 -77
  382. package/bizar-dash/src/web/ui/controls/RadioGroup.tsx +0 -109
  383. package/bizar-dash/src/web/ui/controls/SearchInput.tsx +0 -91
  384. package/bizar-dash/src/web/ui/controls/Select.tsx +0 -92
  385. package/bizar-dash/src/web/ui/controls/Slider.tsx +0 -70
  386. package/bizar-dash/src/web/ui/controls/TextInput.tsx +0 -67
  387. package/bizar-dash/src/web/ui/controls/Textarea.tsx +0 -56
  388. package/bizar-dash/src/web/ui/controls/Toggle.tsx +0 -79
  389. package/bizar-dash/src/web/ui/controls/controls.css +0 -476
  390. package/bizar-dash/src/web/ui/controls/index.ts +0 -35
  391. package/bizar-dash/src/web/ui/data/BarChart.tsx +0 -60
  392. package/bizar-dash/src/web/ui/data/DataTable.tsx +0 -216
  393. package/bizar-dash/src/web/ui/data/EmptyState.tsx +0 -60
  394. package/bizar-dash/src/web/ui/data/ErrorState.tsx +0 -56
  395. package/bizar-dash/src/web/ui/data/KeyValueList.tsx +0 -106
  396. package/bizar-dash/src/web/ui/data/LoadingState.tsx +0 -65
  397. package/bizar-dash/src/web/ui/data/Sparkline.tsx +0 -87
  398. package/bizar-dash/src/web/ui/data/StatTile.tsx +0 -87
  399. package/bizar-dash/src/web/ui/data/data.css +0 -535
  400. package/bizar-dash/src/web/ui/data/index.ts +0 -31
  401. package/bizar-dash/src/web/ui/feedback/Badge.tsx +0 -49
  402. package/bizar-dash/src/web/ui/feedback/Dialog.tsx +0 -209
  403. package/bizar-dash/src/web/ui/feedback/ProgressBar.tsx +0 -69
  404. package/bizar-dash/src/web/ui/feedback/StatusDot.tsx +0 -50
  405. package/bizar-dash/src/web/ui/feedback/Toast.tsx +0 -200
  406. package/bizar-dash/src/web/ui/feedback/Tooltip.tsx +0 -126
  407. package/bizar-dash/src/web/ui/feedback/feedback.css +0 -314
  408. package/bizar-dash/src/web/ui/feedback/index.ts +0 -43
  409. package/bizar-dash/src/web/ui/index.ts +0 -56
  410. package/bizar-dash/src/web/ui/layout/AppShell.tsx +0 -51
  411. package/bizar-dash/src/web/ui/layout/Breadcrumbs.tsx +0 -97
  412. package/bizar-dash/src/web/ui/layout/Panel.tsx +0 -73
  413. package/bizar-dash/src/web/ui/layout/PanelHeader.tsx +0 -39
  414. package/bizar-dash/src/web/ui/layout/Sidebar.tsx +0 -131
  415. package/bizar-dash/src/web/ui/layout/Tabs.tsx +0 -133
  416. package/bizar-dash/src/web/ui/layout/Topbar.tsx +0 -42
  417. package/bizar-dash/src/web/ui/layout/ViewHeader.tsx +0 -48
  418. package/bizar-dash/src/web/ui/layout/index.ts +0 -34
  419. package/bizar-dash/src/web/ui/layout/layout.css +0 -464
  420. package/bizar-dash/src/web/ui/navigation/CommandPalette.tsx +0 -199
  421. package/bizar-dash/src/web/ui/navigation/NavGroup.tsx +0 -95
  422. package/bizar-dash/src/web/ui/navigation/NavLink.tsx +0 -93
  423. package/bizar-dash/src/web/ui/navigation/index.ts +0 -17
  424. package/bizar-dash/src/web/ui/navigation/navigation.css +0 -343
  425. package/bizar-dash/src/web/ui/primitives/Box.tsx +0 -91
  426. package/bizar-dash/src/web/ui/primitives/Grid.tsx +0 -49
  427. package/bizar-dash/src/web/ui/primitives/Inline.tsx +0 -55
  428. package/bizar-dash/src/web/ui/primitives/Separator.tsx +0 -46
  429. package/bizar-dash/src/web/ui/primitives/Stack.tsx +0 -54
  430. package/bizar-dash/src/web/ui/primitives/VisuallyHidden.tsx +0 -26
  431. package/bizar-dash/src/web/ui/primitives/index.ts +0 -23
  432. package/bizar-dash/src/web/ui/primitives/primitives.css +0 -183
  433. package/bizar-dash/src/web/ui/styles/globals.css +0 -86
  434. package/bizar-dash/src/web/ui/styles/reset.css +0 -125
  435. package/bizar-dash/src/web/ui/styles/tokens.css +0 -208
  436. package/bizar-dash/src/web/ui/theme/ThemeProvider.tsx +0 -142
  437. package/bizar-dash/src/web/ui/theme/tokens.ts +0 -131
  438. package/bizar-dash/src/web/ui/theme/useTheme.ts +0 -22
  439. package/bizar-dash/src/web/ui/utils/cx.ts +0 -42
  440. package/bizar-dash/src/web/views/Activity.tsx +0 -1221
  441. package/bizar-dash/src/web/views/Agents.tsx +0 -964
  442. package/bizar-dash/src/web/views/Artifacts.tsx +0 -1494
  443. package/bizar-dash/src/web/views/BackgroundAgents.tsx +0 -822
  444. package/bizar-dash/src/web/views/Chat.tsx +0 -532
  445. package/bizar-dash/src/web/views/Config.tsx +0 -3
  446. package/bizar-dash/src/web/views/Doctor.tsx +0 -317
  447. package/bizar-dash/src/web/views/Eval.tsx +0 -372
  448. package/bizar-dash/src/web/views/EvalReport.tsx +0 -353
  449. package/bizar-dash/src/web/views/GoalPlanner.tsx +0 -158
  450. package/bizar-dash/src/web/views/Harness.tsx +0 -306
  451. package/bizar-dash/src/web/views/History.tsx +0 -353
  452. package/bizar-dash/src/web/views/Memory.tsx +0 -161
  453. package/bizar-dash/src/web/views/MiniMaxUsage.tsx +0 -942
  454. package/bizar-dash/src/web/views/ModView.tsx +0 -207
  455. package/bizar-dash/src/web/views/Mods.tsx +0 -706
  456. package/bizar-dash/src/web/views/Overview.tsx +0 -1364
  457. package/bizar-dash/src/web/views/Providers.tsx +0 -302
  458. package/bizar-dash/src/web/views/Schedules.tsx +0 -902
  459. package/bizar-dash/src/web/views/Settings.tsx +0 -308
  460. package/bizar-dash/src/web/views/Skills.tsx +0 -383
  461. package/bizar-dash/src/web/views/SpawnAgentModal.tsx +0 -221
  462. package/bizar-dash/src/web/views/Tasks.tsx +0 -789
  463. package/bizar-dash/src/web/views/Workspace.tsx +0 -294
  464. package/bizar-dash/src/web/views/glyphs/GlyphRenderer.tsx +0 -844
  465. package/bizar-dash/src/web/views/glyphs/components.tsx +0 -1098
  466. package/bizar-dash/src/web/views/memory/ConfigPanel.tsx +0 -426
  467. package/bizar-dash/src/web/views/memory/FromScreenshotPanel.tsx +0 -23
  468. package/bizar-dash/src/web/views/memory/GitSyncPanel.tsx +0 -220
  469. package/bizar-dash/src/web/views/memory/LightragPanel.tsx +0 -310
  470. package/bizar-dash/src/web/views/memory/MemoryGraphLegend.tsx +0 -29
  471. package/bizar-dash/src/web/views/memory/MemoryGraphPanel.tsx +0 -192
  472. package/bizar-dash/src/web/views/memory/MemoryGraphView.tsx +0 -336
  473. package/bizar-dash/src/web/views/memory/MemoryOverview.tsx +0 -367
  474. package/bizar-dash/src/web/views/memory/MemoryStatusCard.tsx +0 -160
  475. package/bizar-dash/src/web/views/memory/ObsidianPanel.tsx +0 -650
  476. package/bizar-dash/src/web/views/memory/SemanticSearchPanel.tsx +0 -197
  477. package/bizar-dash/src/web/views/memory/VaultFromClipboardPanel.tsx +0 -101
  478. package/bizar-dash/src/web/views/settings/ActivitySection.tsx +0 -205
  479. package/bizar-dash/src/web/views/settings/AgentSection.tsx +0 -305
  480. package/bizar-dash/src/web/views/settings/AuthSection.tsx +0 -159
  481. package/bizar-dash/src/web/views/settings/EnvVarsSection.tsx +0 -15
  482. package/bizar-dash/src/web/views/settings/GeneralSection.tsx +0 -128
  483. package/bizar-dash/src/web/views/settings/HeadroomSection.tsx +0 -39
  484. package/bizar-dash/src/web/views/settings/MemorySection.tsx +0 -154
  485. package/bizar-dash/src/web/views/settings/NetworkSection.tsx +0 -87
  486. package/bizar-dash/src/web/views/settings/NotificationsSection.tsx +0 -34
  487. package/bizar-dash/src/web/views/settings/SystemLlmSection.tsx +0 -81
  488. package/bizar-dash/src/web/views/settings/ThemeSection.tsx +0 -168
  489. package/bizar-dash/src/web/views/settings/UpdatesSection.tsx +0 -256
  490. package/bizar-dash/src/web/views/settings/WorkspacesSection.tsx +0 -189
@@ -0,0 +1,322 @@
1
+ /**
2
+ * v8 UI barrel — public surface of the v8 component library.
3
+ *
4
+ * Naming convention:
5
+ * - layouts/primitives → exported directly
6
+ * - controls/* → Sprint S2
7
+ * - feedback/* → Sprint S2
8
+ * - data/* → Sprint S3
9
+ * - navigation/* → Sprint S4
10
+ * - kanban/* → Sprint S5 (centerpiece)
11
+ *
12
+ * Always import from this barrel — never reach into individual files.
13
+ * That keeps refactors inside the v8 tree trivial.
14
+ */
15
+
16
+ // primitives (Sprint S1)
17
+ export { Box, type BoxProps, type BoxStyleProps } from './primitives/Box.js';
18
+ export { Stack, type StackProps } from './primitives/Stack.js';
19
+ export { Inline, type InlineProps } from './primitives/Inline.js';
20
+ export { Cluster, type ClusterProps } from './primitives/Cluster.js';
21
+ export { Grid, type GridProps, type GridCols } from './primitives/Grid.js';
22
+ export { Center, type CenterProps } from './primitives/Center.js';
23
+ export { Separator, type SeparatorProps } from './primitives/Separator.js';
24
+ export { ScrollArea, type ScrollAreaProps } from './primitives/ScrollArea.js';
25
+ export { Portal, type PortalProps } from './primitives/Portal.js';
26
+ export { VisuallyHidden, type VisuallyHiddenProps } from './primitives/VisuallyHidden.js';
27
+
28
+ // utils
29
+ export { cx } from './utils/cx.js';
30
+
31
+ // theme
32
+ export {
33
+ ThemeProvider,
34
+ type ThemeProviderProps,
35
+ type ThemeMode,
36
+ type ResolvedTheme,
37
+ type ThemeContextValue,
38
+ ThemeContext,
39
+ } from './theme/ThemeProvider.js';
40
+ export { useTheme } from './theme/useTheme.js';
41
+ export {
42
+ DensityProvider,
43
+ type DensityProviderProps,
44
+ type Density,
45
+ type DensityContextValue,
46
+ DensityContext,
47
+ } from './theme/DensityProvider.js';
48
+ export { useDensity } from './theme/useDensity.js';
49
+ export { ThemeToggle, DensityToggle } from './theme/ThemeToggle.js';
50
+
51
+ // ── controls (Sprint S2) ─────────────────────────────────────────────────
52
+
53
+ export {
54
+ Button,
55
+ type ButtonProps,
56
+ type ButtonVariant,
57
+ type ButtonSize,
58
+ } from './controls/Button.js';
59
+ export {
60
+ IconButton,
61
+ type IconButtonProps,
62
+ type IconButtonVariant,
63
+ type IconButtonSize,
64
+ } from './controls/IconButton.js';
65
+ export { ButtonGroup, type ButtonGroupProps } from './controls/ButtonGroup.js';
66
+ export { Input, type InputProps } from './controls/Input.js';
67
+ export { Textarea, type TextareaProps } from './controls/Textarea.js';
68
+ export { Checkbox, type CheckboxProps } from './controls/Checkbox.js';
69
+ export { Switch, type SwitchProps } from './controls/Switch.js';
70
+ export { Toggle, type ToggleProps } from './controls/Toggle.js';
71
+ export {
72
+ ToggleGroup,
73
+ ToggleGroupItem,
74
+ type ToggleGroupProps,
75
+ type ToggleGroupItemProps,
76
+ type ToggleGroupType,
77
+ } from './controls/ToggleGroup.js';
78
+ export { RadioGroup, RadioGroupItem, type RadioGroupProps } from './controls/RadioGroup.js';
79
+ export {
80
+ Select,
81
+ SelectTrigger,
82
+ SelectContent,
83
+ SelectItem,
84
+ SelectGroup,
85
+ SelectLabel,
86
+ SelectSeparator,
87
+ type SelectProps,
88
+ } from './controls/Select.js';
89
+ export { Slider, type SliderProps } from './controls/Slider.js';
90
+ export { Field, type FieldProps } from './controls/Field.js';
91
+ export { Form, type FormProps } from './controls/Form.js';
92
+
93
+ // ── feedback (Sprint S2) ─────────────────────────────────────────────────
94
+
95
+ export {
96
+ Dialog,
97
+ DialogTrigger,
98
+ DialogClose,
99
+ DialogContent,
100
+ DialogPortal,
101
+ AlertDialog,
102
+ AlertDialogTrigger,
103
+ AlertDialogAction,
104
+ AlertDialogCancel,
105
+ AlertDialogContent,
106
+ type DialogProps,
107
+ type DialogContentProps,
108
+ type DialogSize,
109
+ } from './feedback/Dialog.js';
110
+ export {
111
+ Tooltip,
112
+ TooltipProvider,
113
+ type TooltipProps,
114
+ type TooltipSide,
115
+ type TooltipAlign,
116
+ } from './feedback/Tooltip.js';
117
+ export {
118
+ Popover,
119
+ PopoverTrigger,
120
+ PopoverContent,
121
+ PopoverAnchor,
122
+ PopoverClose,
123
+ type PopoverProps,
124
+ type PopoverContentProps,
125
+ } from './feedback/Popover.js';
126
+ export { Toaster, toast, type ToasterProps } from './feedback/Toast.js';
127
+ export { Alert, type AlertProps, type AlertTone } from './feedback/Alert.js';
128
+ export { Banner, type BannerProps } from './feedback/Banner.js';
129
+ export { Skeleton, SkeletonText, type SkeletonProps } from './feedback/Skeleton.js';
130
+ export { Spinner, type SpinnerProps } from './feedback/Spinner.js';
131
+ export { EmptyState, type EmptyStateProps } from './feedback/EmptyState.js';
132
+ export {
133
+ DropdownMenu,
134
+ DropdownMenuTrigger,
135
+ DropdownMenuContent,
136
+ DropdownMenuItem,
137
+ DropdownMenuCheckboxItem,
138
+ DropdownMenuLabel,
139
+ DropdownMenuSeparator,
140
+ DropdownMenuSub,
141
+ DropdownMenuSubTrigger,
142
+ DropdownMenuSubContent,
143
+ DropdownMenuGroup,
144
+ DropdownMenuPortal,
145
+ DropdownMenuRadioGroup,
146
+ type DropdownMenuProps,
147
+ type DropdownMenuContentProps,
148
+ type DropdownMenuItemProps,
149
+ } from './feedback/DropdownMenu.js';
150
+ export {
151
+ ContextMenu,
152
+ ContextMenuTrigger,
153
+ ContextMenuContent,
154
+ ContextMenuItem,
155
+ ContextMenuSeparator,
156
+ ContextMenuLabel,
157
+ ContextMenuGroup,
158
+ type ContextMenuProps,
159
+ type ContextMenuContentProps,
160
+ type ContextMenuItemProps,
161
+ } from './feedback/ContextMenu.js';
162
+ export {
163
+ Sheet,
164
+ SheetTrigger,
165
+ SheetClose,
166
+ SheetContent,
167
+ type SheetProps,
168
+ type SheetContentProps,
169
+ type SheetSide,
170
+ } from './feedback/Sheet.js';
171
+ export {
172
+ Drawer,
173
+ DrawerContent,
174
+ DrawerTrigger,
175
+ DrawerClose,
176
+ } from './feedback/Drawer.js';
177
+
178
+ // ── data (Sprint S3) ──────────────────────────────────────────────────────
179
+
180
+ export { Card, CardHeader, CardBody, CardFooter, type CardProps, type CardHeaderProps, type CardVariant } from './data/Card.js';
181
+ export { Badge, type BadgeProps, type BadgeTone, type BadgeSize } from './data/Badge.js';
182
+ export { Chip, type ChipProps } from './data/Chip.js';
183
+ export { Avatar, AvatarStack, type AvatarProps, type AvatarSize, type AvatarStackProps } from './data/Avatar.js';
184
+ export { StatTile, StatGrid, type StatTileProps, type StatTrend, type StatGridProps } from './data/StatTile.js';
185
+ export { Sparkline, type SparklineProps } from './data/Sparkline.js';
186
+ export { BarList, type BarListProps, type BarListItem } from './data/BarList.js';
187
+ export { Timeline, type TimelineProps, type TimelineItem } from './data/Timeline.js';
188
+ export {
189
+ Accordion,
190
+ AccordionItem,
191
+ type AccordionProps,
192
+ type AccordionItemProps,
193
+ } from './data/Accordion.js';
194
+ export { ViewHeader, type ViewHeaderProps, type BreadcrumbItem } from './data/ViewHeader.js';
195
+ export {
196
+ Table,
197
+ TableHead,
198
+ TableBody,
199
+ TableRow,
200
+ TableHeader,
201
+ TableCell,
202
+ type TableProps,
203
+ type TableHeadProps,
204
+ type TableBodyProps,
205
+ type TableRowProps,
206
+ type TableHeaderProps,
207
+ type TableCellProps,
208
+ } from './data/Table.js';
209
+ export { Kbd, type KbdProps } from './data/Kbd.js';
210
+
211
+ // ── navigation (Sprint S4) ────────────────────────────────────────────────
212
+
213
+ export {
214
+ Tabs,
215
+ TabsList,
216
+ TabsTrigger,
217
+ TabsContent,
218
+ type TabsProps,
219
+ type TabsListProps,
220
+ type TabsTriggerProps,
221
+ type TabsVariant,
222
+ } from './navigation/Tabs.js';
223
+ export { NavLink, type NavLinkProps } from './navigation/NavLink.js';
224
+ export { Pagination, type PaginationProps } from './navigation/Pagination.js';
225
+ export {
226
+ CommandPalette,
227
+ CommandPaletteGroup,
228
+ CommandPaletteItem,
229
+ CommandPaletteSeparator,
230
+ useCommandPaletteHotkey,
231
+ type CommandPaletteProps,
232
+ type CommandPaletteGroupProps,
233
+ type CommandPaletteItemProps,
234
+ } from './navigation/CommandPalette.js';
235
+
236
+ // ── kanban (Sprint S5 — centerpiece) ──────────────────────────────────────
237
+
238
+ export {
239
+ KanbanCard,
240
+ useKanbanCardSortable,
241
+ type KanbanCardProps,
242
+ type KanbanCardData,
243
+ type KanbanCardVariant,
244
+ type KanbanPriority,
245
+ } from './kanban/KanbanCard.js';
246
+ export {
247
+ KanbanColumn,
248
+ type KanbanColumnProps,
249
+ type KanbanColumnData,
250
+ } from './kanban/KanbanColumn.js';
251
+ export { KanbanBoard, type KanbanBoardProps } from './kanban/KanbanBoard.js';
252
+ export { KanbanQuickAdd, type KanbanQuickAddProps } from './kanban/KanbanQuickAdd.js';
253
+ export { KanbanContextMenu, type KanbanContextMenuProps } from './kanban/KanbanContextMenu.js';
254
+
255
+ // ── goals (Sprint S6) ─────────────────────────────────────────────────────
256
+
257
+ export {
258
+ GoalCard,
259
+ type GoalCardProps,
260
+ type GoalStatus,
261
+ } from './goals/GoalCard.js';
262
+ export {
263
+ KeyResult,
264
+ type KeyResultProps,
265
+ type KeyResultStatus,
266
+ } from './goals/KeyResult.js';
267
+
268
+ // ── agents (Sprint S6) ────────────────────────────────────────────────────
269
+
270
+ export {
271
+ AgentCard,
272
+ type AgentCardProps,
273
+ type AgentStatus,
274
+ } from './agents/AgentCard.js';
275
+ export {
276
+ AgentActivity,
277
+ type AgentActivityProps,
278
+ type AgentActivityItem,
279
+ } from './agents/AgentActivity.js';
280
+
281
+ // ── activity (Sprint S7) ──────────────────────────────────────────────────
282
+
283
+ export {
284
+ ActivityFeed,
285
+ type ActivityFeedProps,
286
+ type ActivityItem,
287
+ type ActivityTone,
288
+ } from './activity/ActivityFeed.js';
289
+
290
+ // ── memory (Sprint S7) ────────────────────────────────────────────────────
291
+
292
+ export {
293
+ MemoryVault,
294
+ type MemoryVaultProps,
295
+ type MemoryEntry,
296
+ type MemoryScope,
297
+ } from './memory/MemoryVault.js';
298
+
299
+ // ── libraries (Sprint S7) ─────────────────────────────────────────────────
300
+
301
+ export {
302
+ LibraryItem,
303
+ type LibraryItemProps,
304
+ type LibraryStatus,
305
+ } from './libraries/LibraryItem.js';
306
+ export { LibraryGrid, type LibraryGridProps } from './libraries/LibraryGrid.js';
307
+
308
+ // ── settings (Sprint S8) ──────────────────────────────────────────────────
309
+
310
+ export {
311
+ SettingsSection,
312
+ type SettingsSectionProps,
313
+ } from './settings/SettingsSection.js';
314
+ export {
315
+ SettingsRow,
316
+ type SettingsRowProps,
317
+ } from './settings/SettingsRow.js';
318
+ export {
319
+ SettingsNav,
320
+ type SettingsNavProps,
321
+ type SettingsNavItem,
322
+ } from './settings/SettingsNav.js';
@@ -0,0 +1,80 @@
1
+ import { useState, type ReactNode } from 'react';
2
+ import {
3
+ DndContext,
4
+ closestCorners,
5
+ KeyboardSensor,
6
+ PointerSensor,
7
+ useSensor,
8
+ useSensors,
9
+ type DragEndEvent,
10
+ } from '@dnd-kit/core';
11
+ import { sortableKeyboardCoordinates } from '@dnd-kit/sortable';
12
+ import { cx } from '../utils/cx.js';
13
+
14
+ /**
15
+ * KanbanBoard — horizontal-scrolling board hosting multiple columns.
16
+ *
17
+ * The board owns drag state. It receives:
18
+ * - columns: definition + droppable ids
19
+ * - renderColumn: function that takes column data + isOver flag + children
20
+ * - onCardMove: invoked when a card moves between columns (or reorders within)
21
+ *
22
+ * For most cases, prefer using the higher-level `KanbanBoardSimple` wrapper
23
+ * which handles the dnd-kit boilerplate for you.
24
+ */
25
+
26
+ export interface KanbanBoardProps {
27
+ columns: readonly { id: string }[];
28
+ onCardMove?: (cardId: string, fromColumnId: string, toColumnId: string) => void;
29
+ children: ReactNode;
30
+ className?: string;
31
+ }
32
+
33
+ export function KanbanBoard({ columns, onCardMove, children, className }: KanbanBoardProps) {
34
+ const sensors = useSensors(
35
+ useSensor(PointerSensor, { activationConstraint: { distance: 4 } }),
36
+ useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),
37
+ );
38
+ const [, setActiveId] = useState<string | null>(null);
39
+
40
+ const handleDragEnd = (event: DragEndEvent) => {
41
+ setActiveId(null);
42
+ const { active, over } = event;
43
+ if (over === null) return;
44
+ const cardId = String(active.id);
45
+ const targetId = String(over.id);
46
+ // The "over" can be a column id (drop on empty) or another card id.
47
+ const toColumn = columns.find((c) => c.id === targetId)?.id ?? cardId.split('::')[0];
48
+ if (toColumn === undefined) return;
49
+ const fromColumn = cardId.split('::')[0] ?? '';
50
+ if (fromColumn !== toColumn && onCardMove !== undefined) {
51
+ onCardMove(cardId, fromColumn, toColumn);
52
+ }
53
+ };
54
+
55
+ return (
56
+ <DndContext
57
+ sensors={sensors}
58
+ collisionDetection={closestCorners}
59
+ onDragStart={(e) => setActiveId(String(e.active.id))}
60
+ onDragEnd={handleDragEnd}
61
+ >
62
+ <div
63
+ className={cx('v8-kanban-board', className)}
64
+ style={{
65
+ display: 'flex',
66
+ gap: 'var(--space-3)',
67
+ padding: 'var(--space-3)',
68
+ overflowX: 'auto',
69
+ overflowY: 'hidden',
70
+ height: '100%',
71
+ alignItems: 'stretch',
72
+ }}
73
+ role="region"
74
+ aria-label="Kanban board"
75
+ >
76
+ {children}
77
+ </div>
78
+ </DndContext>
79
+ );
80
+ }
@@ -0,0 +1,247 @@
1
+ import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';
2
+ import { useSortable } from '@dnd-kit/sortable';
3
+ import { CSS } from '@dnd-kit/utilities';
4
+ import { Calendar, MessageSquare, Paperclip, GitBranch } from 'lucide-react';
5
+ import { cx } from '../utils/cx.js';
6
+
7
+ /**
8
+ * KanbanCard — the primary surface of the v8 dashboard.
9
+ *
10
+ * Built per DESIGN.md §6: compact metadata, never decorative, drag-handle
11
+ * is the whole card, every card has a right-click context menu.
12
+ *
13
+ * Variants:
14
+ * - default: full metadata row (date, comments, attachments, branch)
15
+ * - compact: title + 1 priority dot only (for crowded boards)
16
+ * - detailed: title + description preview + metadata
17
+ */
18
+
19
+ export type KanbanCardVariant = 'default' | 'compact' | 'detailed';
20
+
21
+ export type KanbanPriority = 'low' | 'medium' | 'high' | 'urgent';
22
+
23
+ export interface KanbanCardData {
24
+ id: string;
25
+ title: string;
26
+ description?: string;
27
+ priority?: KanbanPriority;
28
+ /** Due date as ISO string or relative phrase ("Today", "Tomorrow"). */
29
+ due?: string;
30
+ /** Number of comments; renders icon + count. */
31
+ comments?: number;
32
+ /** Number of attachments. */
33
+ attachments?: number;
34
+ /** Branch name to show in the meta row. */
35
+ branch?: string;
36
+ /** IDs of assigned agents/users; rendered as AvatarStack. */
37
+ assignees?: readonly string[];
38
+ /** Tone of the leading priority stripe. */
39
+ accentTone?: 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'accent';
40
+ /** Custom badge / chip to render after the title. */
41
+ badges?: ReactNode;
42
+ }
43
+
44
+ export interface KanbanCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'id'> {
45
+ card: KanbanCardData;
46
+ variant?: KanbanCardVariant;
47
+ /** When true, the card is being dragged (visual lift + shadow). */
48
+ isDragging?: boolean;
49
+ /** Drag handlers from useSortable (omit to make the card non-draggable). */
50
+ dragHandleProps?: Record<string, unknown>;
51
+ }
52
+
53
+ const PRIORITY_FG: Record<KanbanPriority, string> = {
54
+ low: 'var(--fg-subtle)',
55
+ medium: 'var(--info)',
56
+ high: 'var(--warning)',
57
+ urgent: 'var(--danger)',
58
+ };
59
+
60
+ const PRIORITY_LABEL: Record<KanbanPriority, string> = {
61
+ low: 'Low',
62
+ medium: 'Medium',
63
+ high: 'High',
64
+ urgent: 'Urgent',
65
+ };
66
+
67
+ const ACCENT_FG: Record<NonNullable<KanbanCardData['accentTone']>, string> = {
68
+ neutral: 'var(--fg-subtle)',
69
+ info: 'var(--info)',
70
+ success: 'var(--success)',
71
+ warning: 'var(--warning)',
72
+ danger: 'var(--danger)',
73
+ accent: 'var(--accent)',
74
+ };
75
+
76
+ export const KanbanCard = forwardRef<HTMLDivElement, KanbanCardProps>(function KanbanCard(
77
+ props,
78
+ ref,
79
+ ) {
80
+ const { card, variant = 'default', isDragging, dragHandleProps, className, style, ...rest } =
81
+ props;
82
+
83
+ return (
84
+ <div
85
+ ref={ref}
86
+ data-kanban-card-id={card.id}
87
+ className={cx('v8-kanban-card', `v8-kanban-card--${variant}`, isDragging && 'is-dragging', className)}
88
+ style={{
89
+ position: 'relative',
90
+ background: 'var(--surface-1)',
91
+ border: '1px solid var(--border)',
92
+ borderRadius: 'var(--radius)',
93
+ padding: 'var(--space-3)',
94
+ boxShadow: isDragging === true ? 'var(--shadow-3)' : 'none',
95
+ transform: isDragging === true ? 'rotate(1.5deg)' : undefined,
96
+ transition: 'box-shadow var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out)',
97
+ ...style,
98
+ }}
99
+ {...(dragHandleProps as Record<string, unknown>)}
100
+ {...rest}
101
+ >
102
+ {/* Leading accent stripe — colored by priority or accentTone. */}
103
+ {variant !== 'compact' && (
104
+ <span
105
+ aria-hidden="true"
106
+ style={{
107
+ position: 'absolute',
108
+ left: 0,
109
+ top: 6,
110
+ bottom: 6,
111
+ width: 3,
112
+ borderRadius: '0 var(--radius-pill) var(--radius-pill) 0',
113
+ background:
114
+ card.priority !== undefined
115
+ ? PRIORITY_FG[card.priority]
116
+ : ACCENT_FG[card.accentTone ?? 'neutral'],
117
+ }}
118
+ />
119
+ )}
120
+ <div style={{ paddingLeft: variant !== 'compact' ? 'var(--space-2)' : 0 }}>
121
+ <div
122
+ style={{
123
+ display: 'flex',
124
+ alignItems: 'flex-start',
125
+ gap: 'var(--space-2)',
126
+ marginBottom: variant === 'detailed' ? 'var(--space-2)' : 0,
127
+ }}
128
+ >
129
+ <div style={{ flex: 1, minWidth: 0 }}>
130
+ <div
131
+ style={{
132
+ fontSize: 'var(--fs-13)',
133
+ fontWeight: 500,
134
+ color: 'var(--fg)',
135
+ lineHeight: 'var(--lh-snug)',
136
+ }}
137
+ >
138
+ {card.title}
139
+ </div>
140
+ {variant === 'detailed' && card.description !== undefined && (
141
+ <div
142
+ style={{
143
+ fontSize: 'var(--fs-12)',
144
+ color: 'var(--fg-muted)',
145
+ marginTop: 'var(--space-1)',
146
+ display: '-webkit-box',
147
+ WebkitLineClamp: 2,
148
+ WebkitBoxOrient: 'vertical',
149
+ overflow: 'hidden',
150
+ }}
151
+ >
152
+ {card.description}
153
+ </div>
154
+ )}
155
+ </div>
156
+ {card.priority !== undefined && (
157
+ <span
158
+ aria-label={`Priority: ${PRIORITY_LABEL[card.priority]}`}
159
+ style={{
160
+ width: 8,
161
+ height: 8,
162
+ borderRadius: 'var(--radius-pill)',
163
+ background: PRIORITY_FG[card.priority],
164
+ flexShrink: 0,
165
+ marginTop: 6,
166
+ }}
167
+ />
168
+ )}
169
+ </div>
170
+ {card.badges !== undefined && (
171
+ <div style={{ display: 'flex', gap: 4, flexWrap: 'wrap', marginTop: 'var(--space-2)' }}>
172
+ {card.badges}
173
+ </div>
174
+ )}
175
+ {variant !== 'compact' &&
176
+ (card.due !== undefined ||
177
+ card.comments !== undefined ||
178
+ card.attachments !== undefined ||
179
+ card.branch !== undefined) && (
180
+ <div
181
+ style={{
182
+ display: 'flex',
183
+ alignItems: 'center',
184
+ gap: 'var(--space-3)',
185
+ marginTop: 'var(--space-2)',
186
+ fontSize: 'var(--fs-12)',
187
+ color: 'var(--fg-muted)',
188
+ fontVariantNumeric: 'tabular-nums',
189
+ }}
190
+ >
191
+ {card.due !== undefined && (
192
+ <span style={{ display: 'inline-flex', alignItems: 'center', gap: 4 }}>
193
+ <Calendar size={12} aria-hidden="true" />
194
+ {card.due}
195
+ </span>
196
+ )}
197
+ {card.comments !== undefined && card.comments > 0 && (
198
+ <span style={{ display: 'inline-flex', alignItems: 'center', gap: 4 }}>
199
+ <MessageSquare size={12} aria-hidden="true" />
200
+ {card.comments}
201
+ </span>
202
+ )}
203
+ {card.attachments !== undefined && card.attachments > 0 && (
204
+ <span style={{ display: 'inline-flex', alignItems: 'center', gap: 4 }}>
205
+ <Paperclip size={12} aria-hidden="true" />
206
+ {card.attachments}
207
+ </span>
208
+ )}
209
+ {card.branch !== undefined && (
210
+ <span
211
+ style={{
212
+ display: 'inline-flex',
213
+ alignItems: 'center',
214
+ gap: 4,
215
+ fontFamily: 'var(--font-mono)',
216
+ }}
217
+ title={card.branch}
218
+ >
219
+ <GitBranch size={12} aria-hidden="true" />
220
+ {card.branch}
221
+ </span>
222
+ )}
223
+ </div>
224
+ )}
225
+ </div>
226
+ </div>
227
+ );
228
+ });
229
+
230
+ /**
231
+ * useKanbanCardSortable — convenience hook wrapping @dnd-kit/sortable's
232
+ * useSortable for a card. Returns props to spread onto <KanbanCard>.
233
+ */
234
+ export function useKanbanCardSortable(id: string) {
235
+ const sortable = useSortable({ id });
236
+ const style = {
237
+ transform: CSS.Transform.toString(sortable.transform),
238
+ transition: sortable.transition,
239
+ };
240
+ return {
241
+ attributes: sortable.attributes,
242
+ listeners: sortable.listeners,
243
+ setNodeRef: sortable.setNodeRef,
244
+ isDragging: sortable.isDragging,
245
+ style,
246
+ };
247
+ }