@desplega.ai/agent-swarm 1.49.0 → 1.52.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 (547) hide show
  1. package/README.md +1 -1
  2. package/openapi.json +2070 -728
  3. package/package.json +10 -1
  4. package/src/agentmail/handlers.ts +65 -10
  5. package/src/agentmail/templates.ts +111 -0
  6. package/src/be/db.ts +1233 -7
  7. package/src/be/migrations/014_prompt_templates.sql +33 -0
  8. package/src/be/migrations/015_workflow_workspace.sql +3 -0
  9. package/src/be/migrations/016_active_session_runner_session.sql +4 -0
  10. package/src/be/migrations/017_channel_activity_cursors.sql +6 -0
  11. package/src/be/migrations/018_fix_seed_double_version.sql +30 -0
  12. package/src/be/migrations/019_skills.sql +65 -0
  13. package/src/be/migrations/020_approval_requests.sql +41 -0
  14. package/src/be/seed.ts +62 -0
  15. package/src/be/skill-parser.ts +70 -0
  16. package/src/be/skill-sync.ts +106 -0
  17. package/src/commands/runner.ts +320 -132
  18. package/src/commands/templates.ts +172 -0
  19. package/src/github/handlers.ts +292 -77
  20. package/src/github/mentions-aliases.test.ts +73 -0
  21. package/src/github/mentions.test.ts +3 -3
  22. package/src/github/mentions.ts +32 -6
  23. package/src/github/templates.ts +398 -0
  24. package/src/gitlab/handlers.ts +63 -22
  25. package/src/gitlab/templates.ts +140 -0
  26. package/src/heartbeat/heartbeat.ts +19 -10
  27. package/src/heartbeat/templates.ts +30 -0
  28. package/src/http/active-sessions.ts +27 -0
  29. package/src/http/approval-requests.ts +247 -0
  30. package/src/http/config.ts +3 -3
  31. package/src/http/index.ts +9 -2
  32. package/src/http/poll.ts +135 -14
  33. package/src/http/prompt-templates.ts +412 -0
  34. package/src/http/schedules.ts +35 -0
  35. package/src/http/skills.ts +479 -0
  36. package/src/http/workflows.ts +8 -0
  37. package/src/linear/sync.ts +28 -4
  38. package/src/linear/templates.ts +47 -0
  39. package/src/prompts/base-prompt.ts +41 -490
  40. package/src/prompts/registry.ts +57 -0
  41. package/src/prompts/resolver.ts +296 -0
  42. package/src/prompts/session-templates.ts +604 -0
  43. package/src/providers/claude-adapter.ts +15 -2
  44. package/src/providers/pi-mono-extension.ts +5 -1
  45. package/src/scheduler/scheduler.ts +125 -91
  46. package/src/server.ts +44 -0
  47. package/src/slack/assistant.ts +7 -4
  48. package/src/slack/channel-activity.ts +177 -0
  49. package/src/slack/handlers.ts +21 -6
  50. package/src/slack/templates.ts +55 -0
  51. package/src/tests/approval-requests.test.ts +735 -0
  52. package/src/tests/artifact-sdk.test.ts +12 -12
  53. package/src/tests/base-prompt.test.ts +49 -49
  54. package/src/tests/channel-activity.test.ts +363 -0
  55. package/src/tests/heartbeat.test.ts +1 -0
  56. package/src/tests/linear-webhook.test.ts +7 -3
  57. package/src/tests/pool-session-logs.test.ts +199 -0
  58. package/src/tests/prompt-template-github.test.ts +682 -0
  59. package/src/tests/prompt-template-remaining.test.ts +504 -0
  60. package/src/tests/prompt-template-resolver.test.ts +621 -0
  61. package/src/tests/prompt-template-session.test.ts +363 -0
  62. package/src/tests/prompt-templates-db.test.ts +616 -0
  63. package/src/tests/self-improvement.test.ts +8 -7
  64. package/src/tests/skill-parser.test.ts +178 -0
  65. package/src/tests/skill-sync.test.ts +171 -0
  66. package/src/tests/slack-metadata-inheritance.test.ts +1 -1
  67. package/src/tests/slack-thread-followups.test.ts +1 -1
  68. package/src/tests/structured-output.test.ts +0 -4
  69. package/src/tests/tool-annotations.test.ts +2 -1
  70. package/src/tests/update-profile-agentid.test.ts +248 -0
  71. package/src/tests/update-profile-auth.test.ts +195 -0
  72. package/src/tests/workflow-async-v2.test.ts +126 -4
  73. package/src/tests/workflow-definition-validation.test.ts +76 -0
  74. package/src/tests/workflow-executors.test.ts +4 -2
  75. package/src/tests/workflow-retry-v2.test.ts +1 -1
  76. package/src/tests/workflow-schedule-trigger.test.ts +104 -0
  77. package/src/tests/workflow-workspace.test.ts +272 -0
  78. package/src/tools/prompt-templates/delete.ts +86 -0
  79. package/src/tools/prompt-templates/get.ts +89 -0
  80. package/src/tools/prompt-templates/index.ts +5 -0
  81. package/src/tools/prompt-templates/list.ts +95 -0
  82. package/src/tools/prompt-templates/preview.ts +84 -0
  83. package/src/tools/prompt-templates/set.ts +117 -0
  84. package/src/tools/request-human-input.ts +106 -0
  85. package/src/tools/skills/index.ts +11 -0
  86. package/src/tools/skills/skill-create.ts +105 -0
  87. package/src/tools/skills/skill-delete.ts +67 -0
  88. package/src/tools/skills/skill-get.ts +75 -0
  89. package/src/tools/skills/skill-install-remote.ts +152 -0
  90. package/src/tools/skills/skill-install.ts +101 -0
  91. package/src/tools/skills/skill-list.ts +77 -0
  92. package/src/tools/skills/skill-publish.ts +123 -0
  93. package/src/tools/skills/skill-search.ts +43 -0
  94. package/src/tools/skills/skill-sync-remote.ts +128 -0
  95. package/src/tools/skills/skill-uninstall.ts +60 -0
  96. package/src/tools/skills/skill-update.ts +128 -0
  97. package/src/tools/store-progress.ts +22 -4
  98. package/src/tools/task-action.ts +20 -0
  99. package/src/tools/templates.ts +53 -0
  100. package/src/tools/tool-config.ts +23 -0
  101. package/src/tools/update-profile.ts +106 -34
  102. package/src/tools/workflows/create-workflow.ts +19 -1
  103. package/src/tools/workflows/update-workflow.ts +16 -1
  104. package/src/types.ts +109 -2
  105. package/src/workflows/definition.ts +30 -12
  106. package/src/workflows/engine.ts +40 -14
  107. package/src/workflows/executors/agent-task.ts +14 -3
  108. package/src/workflows/executors/human-in-the-loop.ts +160 -0
  109. package/src/workflows/executors/registry.ts +2 -0
  110. package/src/workflows/index.ts +1 -1
  111. package/src/workflows/recovery.ts +72 -0
  112. package/src/workflows/resume.ts +162 -12
  113. package/src/workflows/triggers.ts +31 -2
  114. package/src/workflows/version.ts +2 -0
  115. package/.claude/settings.json +0 -84
  116. package/.claude/settings.local.json +0 -117
  117. package/.dockerignore +0 -61
  118. package/.editorconfig +0 -15
  119. package/.entire/settings.json +0 -4
  120. package/.env.docker.example +0 -56
  121. package/.env.example +0 -78
  122. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -78
  123. package/.github/ISSUE_TEMPLATE/community-template.yml +0 -77
  124. package/.github/ISSUE_TEMPLATE/config.yml +0 -8
  125. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -60
  126. package/.github/PULL_REQUEST_TEMPLATE/community-template.md +0 -29
  127. package/.github/workflows/ci.yml +0 -52
  128. package/.github/workflows/docker-and-deploy.yml +0 -132
  129. package/.github/workflows/merge-gate.yml +0 -233
  130. package/.opencode/plugins/entire.ts +0 -133
  131. package/.superset/config.json +0 -6
  132. package/.wts-config.json +0 -4
  133. package/.wts-setup.ts +0 -171
  134. package/CHANGELOG.md +0 -447
  135. package/CLAUDE.md +0 -521
  136. package/CONTRIBUTING.md +0 -315
  137. package/DEPLOYMENT.md +0 -622
  138. package/Dockerfile +0 -65
  139. package/Dockerfile.worker +0 -189
  140. package/MCP.md +0 -841
  141. package/UI.md +0 -40
  142. package/api-entrypoint.sh +0 -56
  143. package/assets/agent-swarm-logo-orange.png +0 -0
  144. package/assets/agent-swarm-logo.png +0 -0
  145. package/assets/agent-swarm.mp4 +0 -0
  146. package/assets/agent-swarm.png +0 -0
  147. package/biome.json +0 -39
  148. package/deploy/DEPLOY.md +0 -60
  149. package/deploy/agent-swarm.service +0 -17
  150. package/deploy/docker-push.ts +0 -30
  151. package/deploy/install.ts +0 -85
  152. package/deploy/prod-db.ts +0 -42
  153. package/deploy/uninstall.ts +0 -12
  154. package/deploy/update.ts +0 -21
  155. package/depot.json +0 -1
  156. package/docker-compose.example.yml +0 -350
  157. package/docker-compose.local.yml +0 -119
  158. package/docker-entrypoint.sh +0 -632
  159. package/docs-site/app/api/search/route.ts +0 -4
  160. package/docs-site/app/docs/[[...slug]]/page.tsx +0 -87
  161. package/docs-site/app/docs/layout.tsx +0 -12
  162. package/docs-site/app/globals.css +0 -24
  163. package/docs-site/app/layout.config.tsx +0 -34
  164. package/docs-site/app/layout.tsx +0 -119
  165. package/docs-site/app/llms-full.txt/route.ts +0 -11
  166. package/docs-site/app/llms.mdx/docs/[[...slug]]/route.ts +0 -24
  167. package/docs-site/app/llms.txt/route.ts +0 -8
  168. package/docs-site/app/page.tsx +0 -5
  169. package/docs-site/app/robots.ts +0 -13
  170. package/docs-site/app/sitemap.ts +0 -37
  171. package/docs-site/components/api-page.client.tsx +0 -4
  172. package/docs-site/components/api-page.tsx +0 -7
  173. package/docs-site/components/mdx/mermaid.tsx +0 -55
  174. package/docs-site/content/docs/(documentation)/architecture/agents.mdx +0 -117
  175. package/docs-site/content/docs/(documentation)/architecture/hooks.mdx +0 -77
  176. package/docs-site/content/docs/(documentation)/architecture/memory.mdx +0 -96
  177. package/docs-site/content/docs/(documentation)/architecture/meta.json +0 -4
  178. package/docs-site/content/docs/(documentation)/architecture/overview.mdx +0 -172
  179. package/docs-site/content/docs/(documentation)/concepts/epics.mdx +0 -98
  180. package/docs-site/content/docs/(documentation)/concepts/meta.json +0 -4
  181. package/docs-site/content/docs/(documentation)/concepts/scheduling.mdx +0 -136
  182. package/docs-site/content/docs/(documentation)/concepts/services.mdx +0 -104
  183. package/docs-site/content/docs/(documentation)/concepts/task-lifecycle.mdx +0 -148
  184. package/docs-site/content/docs/(documentation)/concepts/workflows.mdx +0 -209
  185. package/docs-site/content/docs/(documentation)/contributing.mdx +0 -158
  186. package/docs-site/content/docs/(documentation)/getting-started.mdx +0 -157
  187. package/docs-site/content/docs/(documentation)/guides/agentmail-integration.mdx +0 -79
  188. package/docs-site/content/docs/(documentation)/guides/deployment.mdx +0 -171
  189. package/docs-site/content/docs/(documentation)/guides/github-integration.mdx +0 -81
  190. package/docs-site/content/docs/(documentation)/guides/gitlab-integration.mdx +0 -93
  191. package/docs-site/content/docs/(documentation)/guides/linear-integration.mdx +0 -98
  192. package/docs-site/content/docs/(documentation)/guides/meta.json +0 -13
  193. package/docs-site/content/docs/(documentation)/guides/sentry-integration.mdx +0 -52
  194. package/docs-site/content/docs/(documentation)/guides/slack-integration.mdx +0 -179
  195. package/docs-site/content/docs/(documentation)/guides/x402-payments.mdx +0 -154
  196. package/docs-site/content/docs/(documentation)/index.mdx +0 -65
  197. package/docs-site/content/docs/(documentation)/meta.json +0 -19
  198. package/docs-site/content/docs/(documentation)/reference/cli.mdx +0 -241
  199. package/docs-site/content/docs/(documentation)/reference/environment-variables.mdx +0 -205
  200. package/docs-site/content/docs/(documentation)/reference/mcp-tools.mdx +0 -449
  201. package/docs-site/content/docs/(documentation)/reference/meta.json +0 -4
  202. package/docs-site/content/docs/api-reference/active-sessions.mdx +0 -9
  203. package/docs-site/content/docs/api-reference/agents.mdx +0 -9
  204. package/docs-site/content/docs/api-reference/channels.mdx +0 -9
  205. package/docs-site/content/docs/api-reference/config.mdx +0 -9
  206. package/docs-site/content/docs/api-reference/debug.mdx +0 -9
  207. package/docs-site/content/docs/api-reference/ecosystem.mdx +0 -9
  208. package/docs-site/content/docs/api-reference/epics.mdx +0 -9
  209. package/docs-site/content/docs/api-reference/index.mdx +0 -32
  210. package/docs-site/content/docs/api-reference/memory.mdx +0 -9
  211. package/docs-site/content/docs/api-reference/meta.json +0 -25
  212. package/docs-site/content/docs/api-reference/poll.mdx +0 -9
  213. package/docs-site/content/docs/api-reference/repos.mdx +0 -9
  214. package/docs-site/content/docs/api-reference/schedules.mdx +0 -9
  215. package/docs-site/content/docs/api-reference/session-data.mdx +0 -9
  216. package/docs-site/content/docs/api-reference/stats.mdx +0 -9
  217. package/docs-site/content/docs/api-reference/tasks.mdx +0 -9
  218. package/docs-site/content/docs/api-reference/trackers.mdx +0 -9
  219. package/docs-site/content/docs/api-reference/webhooks.mdx +0 -9
  220. package/docs-site/content/docs/api-reference/workflows.mdx +0 -9
  221. package/docs-site/content/docs/meta.json +0 -3
  222. package/docs-site/lib/get-llm-text.ts +0 -10
  223. package/docs-site/lib/openapi.ts +0 -23
  224. package/docs-site/lib/source.ts +0 -8
  225. package/docs-site/mdx-components.tsx +0 -13
  226. package/docs-site/next.config.mjs +0 -29
  227. package/docs-site/package.json +0 -35
  228. package/docs-site/pnpm-lock.yaml +0 -5407
  229. package/docs-site/postcss.config.mjs +0 -8
  230. package/docs-site/public/logo.png +0 -0
  231. package/docs-site/scripts/generate-docs.ts +0 -171
  232. package/docs-site/source.config.ts +0 -17
  233. package/docs-site/tsconfig.json +0 -46
  234. package/ecosystem.config.cjs +0 -66
  235. package/landing/next.config.ts +0 -14
  236. package/landing/package.json +0 -31
  237. package/landing/pnpm-lock.yaml +0 -1091
  238. package/landing/postcss.config.mjs +0 -8
  239. package/landing/public/apple-touch-icon.png +0 -0
  240. package/landing/public/favicon.ico +0 -0
  241. package/landing/public/logo.png +0 -0
  242. package/landing/public/og-image.png +0 -0
  243. package/landing/public/omghost-desplega.svg +0 -30
  244. package/landing/public/omghost-openfort.svg +0 -9
  245. package/landing/src/app/actions/waitlist.ts +0 -25
  246. package/landing/src/app/blog/openfort-hackathon/page.tsx +0 -863
  247. package/landing/src/app/blog/page.tsx +0 -162
  248. package/landing/src/app/blog/swarm-metrics/page.tsx +0 -685
  249. package/landing/src/app/examples/page.tsx +0 -174
  250. package/landing/src/app/examples/x402/page.tsx +0 -456
  251. package/landing/src/app/globals.css +0 -122
  252. package/landing/src/app/layout.tsx +0 -134
  253. package/landing/src/app/page.tsx +0 -27
  254. package/landing/src/app/robots.ts +0 -13
  255. package/landing/src/app/sitemap.ts +0 -44
  256. package/landing/src/components/architecture.tsx +0 -163
  257. package/landing/src/components/cta.tsx +0 -52
  258. package/landing/src/components/features.tsx +0 -160
  259. package/landing/src/components/footer.tsx +0 -100
  260. package/landing/src/components/hero.tsx +0 -217
  261. package/landing/src/components/how-it-works.tsx +0 -165
  262. package/landing/src/components/navbar.tsx +0 -147
  263. package/landing/src/components/waitlist.tsx +0 -110
  264. package/landing/src/components/why-choose.tsx +0 -149
  265. package/landing/src/components/workshops.tsx +0 -328
  266. package/landing/src/lib/utils.ts +0 -6
  267. package/landing/tsconfig.json +0 -41
  268. package/misc/transcripts/2026-03-09-pi-mono-e2e-verification.md +0 -154
  269. package/new-ui/CLAUDE.md +0 -92
  270. package/new-ui/README.md +0 -73
  271. package/new-ui/biome.json +0 -42
  272. package/new-ui/components.json +0 -21
  273. package/new-ui/index.html +0 -25
  274. package/new-ui/package.json +0 -49
  275. package/new-ui/pnpm-lock.yaml +0 -4845
  276. package/new-ui/public/logo.png +0 -0
  277. package/new-ui/src/api/client.ts +0 -814
  278. package/new-ui/src/api/hooks/index.ts +0 -64
  279. package/new-ui/src/api/hooks/use-agents.ts +0 -58
  280. package/new-ui/src/api/hooks/use-channels.ts +0 -115
  281. package/new-ui/src/api/hooks/use-config-api.ts +0 -46
  282. package/new-ui/src/api/hooks/use-costs.ts +0 -122
  283. package/new-ui/src/api/hooks/use-db-query.ts +0 -29
  284. package/new-ui/src/api/hooks/use-epics.ts +0 -75
  285. package/new-ui/src/api/hooks/use-repos.ts +0 -61
  286. package/new-ui/src/api/hooks/use-schedules.ts +0 -81
  287. package/new-ui/src/api/hooks/use-services.ts +0 -16
  288. package/new-ui/src/api/hooks/use-stats.ts +0 -27
  289. package/new-ui/src/api/hooks/use-tasks.ts +0 -89
  290. package/new-ui/src/api/hooks/use-workflows.ts +0 -109
  291. package/new-ui/src/api/types.ts +0 -549
  292. package/new-ui/src/app/App.tsx +0 -13
  293. package/new-ui/src/app/providers.tsx +0 -32
  294. package/new-ui/src/app/router.tsx +0 -52
  295. package/new-ui/src/components/layout/app-header.tsx +0 -47
  296. package/new-ui/src/components/layout/app-sidebar.tsx +0 -128
  297. package/new-ui/src/components/layout/breadcrumbs.tsx +0 -57
  298. package/new-ui/src/components/layout/config-guard.tsx +0 -22
  299. package/new-ui/src/components/layout/root-layout.tsx +0 -40
  300. package/new-ui/src/components/layout/swarm-switcher.tsx +0 -85
  301. package/new-ui/src/components/shared/command-menu.tsx +0 -131
  302. package/new-ui/src/components/shared/data-grid.tsx +0 -141
  303. package/new-ui/src/components/shared/empty-state.tsx +0 -24
  304. package/new-ui/src/components/shared/error-boundary.tsx +0 -72
  305. package/new-ui/src/components/shared/json-viewer.tsx +0 -47
  306. package/new-ui/src/components/shared/name-connection-modal.tsx +0 -99
  307. package/new-ui/src/components/shared/page-skeleton.tsx +0 -16
  308. package/new-ui/src/components/shared/session-log-viewer.tsx +0 -364
  309. package/new-ui/src/components/shared/stats-bar.tsx +0 -132
  310. package/new-ui/src/components/shared/status-badge.tsx +0 -131
  311. package/new-ui/src/components/shared/usage-summary.tsx +0 -179
  312. package/new-ui/src/components/ui/alert-dialog.tsx +0 -176
  313. package/new-ui/src/components/ui/alert.tsx +0 -60
  314. package/new-ui/src/components/ui/avatar.tsx +0 -96
  315. package/new-ui/src/components/ui/badge.tsx +0 -46
  316. package/new-ui/src/components/ui/button.tsx +0 -62
  317. package/new-ui/src/components/ui/card.tsx +0 -75
  318. package/new-ui/src/components/ui/command.tsx +0 -160
  319. package/new-ui/src/components/ui/dialog.tsx +0 -143
  320. package/new-ui/src/components/ui/dropdown-menu.tsx +0 -226
  321. package/new-ui/src/components/ui/input.tsx +0 -21
  322. package/new-ui/src/components/ui/label.tsx +0 -19
  323. package/new-ui/src/components/ui/progress.tsx +0 -26
  324. package/new-ui/src/components/ui/scroll-area.tsx +0 -54
  325. package/new-ui/src/components/ui/select.tsx +0 -175
  326. package/new-ui/src/components/ui/separator.tsx +0 -28
  327. package/new-ui/src/components/ui/sheet.tsx +0 -132
  328. package/new-ui/src/components/ui/sidebar.tsx +0 -691
  329. package/new-ui/src/components/ui/skeleton.tsx +0 -13
  330. package/new-ui/src/components/ui/sonner.tsx +0 -35
  331. package/new-ui/src/components/ui/switch.tsx +0 -33
  332. package/new-ui/src/components/ui/table.tsx +0 -92
  333. package/new-ui/src/components/ui/tabs.tsx +0 -79
  334. package/new-ui/src/components/ui/textarea.tsx +0 -18
  335. package/new-ui/src/components/ui/tooltip.tsx +0 -51
  336. package/new-ui/src/components/workflows/action-node.tsx +0 -53
  337. package/new-ui/src/components/workflows/condition-node.tsx +0 -50
  338. package/new-ui/src/components/workflows/graph-utils.ts +0 -124
  339. package/new-ui/src/components/workflows/json-tree.tsx +0 -189
  340. package/new-ui/src/components/workflows/node-styles.ts +0 -10
  341. package/new-ui/src/components/workflows/step-detail-sheet.tsx +0 -87
  342. package/new-ui/src/components/workflows/trigger-node.tsx +0 -41
  343. package/new-ui/src/components/workflows/workflow-graph.tsx +0 -65
  344. package/new-ui/src/hooks/use-auto-scroll.ts +0 -82
  345. package/new-ui/src/hooks/use-config.ts +0 -203
  346. package/new-ui/src/hooks/use-keyboard-shortcuts.ts +0 -41
  347. package/new-ui/src/hooks/use-mobile.ts +0 -19
  348. package/new-ui/src/hooks/use-theme.ts +0 -60
  349. package/new-ui/src/lib/config.ts +0 -188
  350. package/new-ui/src/lib/slugs.ts +0 -71
  351. package/new-ui/src/lib/utils.ts +0 -120
  352. package/new-ui/src/main.tsx +0 -11
  353. package/new-ui/src/pages/agents/[id]/page.tsx +0 -492
  354. package/new-ui/src/pages/agents/page.tsx +0 -134
  355. package/new-ui/src/pages/chat/page.tsx +0 -674
  356. package/new-ui/src/pages/config/page.tsx +0 -1109
  357. package/new-ui/src/pages/dashboard/page.tsx +0 -454
  358. package/new-ui/src/pages/debug/page.tsx +0 -275
  359. package/new-ui/src/pages/epics/[id]/page.tsx +0 -809
  360. package/new-ui/src/pages/epics/page.tsx +0 -321
  361. package/new-ui/src/pages/not-found/page.tsx +0 -18
  362. package/new-ui/src/pages/repos/page.tsx +0 -369
  363. package/new-ui/src/pages/schedules/[id]/page.tsx +0 -664
  364. package/new-ui/src/pages/schedules/page.tsx +0 -477
  365. package/new-ui/src/pages/services/page.tsx +0 -128
  366. package/new-ui/src/pages/tasks/[id]/page.tsx +0 -670
  367. package/new-ui/src/pages/tasks/page.tsx +0 -592
  368. package/new-ui/src/pages/usage/page.tsx +0 -195
  369. package/new-ui/src/pages/workflow-runs/[id]/page.tsx +0 -363
  370. package/new-ui/src/pages/workflows/[id]/page.tsx +0 -417
  371. package/new-ui/src/pages/workflows/page.tsx +0 -266
  372. package/new-ui/src/styles/ag-grid.css +0 -36
  373. package/new-ui/src/styles/globals.css +0 -213
  374. package/new-ui/test-results/.last-run.json +0 -4
  375. package/new-ui/tsconfig.app.json +0 -34
  376. package/new-ui/tsconfig.json +0 -4
  377. package/new-ui/tsconfig.node.json +0 -26
  378. package/new-ui/vercel.json +0 -4
  379. package/new-ui/vite.config.ts +0 -28
  380. package/plugin/README.md +0 -1
  381. package/plugin/build-pi-skills.ts +0 -233
  382. package/plugin/hooks/hooks.json +0 -71
  383. package/prek.toml +0 -75
  384. package/pyproject.toml +0 -9
  385. package/scripts/check-db-boundary.sh +0 -60
  386. package/scripts/e2e-docker-provider.ts +0 -820
  387. package/scripts/e2e-io-schemas-test.ts +0 -807
  388. package/scripts/e2e-provider-test.ts +0 -220
  389. package/scripts/e2e-workflow-redesign.sh +0 -229
  390. package/scripts/e2e-workflow-test.sh +0 -285
  391. package/scripts/e2e-workflow-test.ts +0 -857
  392. package/scripts/generate-mcp-docs.ts +0 -415
  393. package/scripts/generate-openapi.ts +0 -26
  394. package/scripts/measure-tool-tokens.ts +0 -118
  395. package/scripts/x402-e2e-test.ts +0 -195
  396. package/scripts/x402-test-server.ts +0 -236
  397. package/scripts/x402-testnet-e2e.ts +0 -668
  398. package/slack-manifest.json +0 -88
  399. package/templates-ui/README.md +0 -46
  400. package/templates-ui/components.json +0 -17
  401. package/templates-ui/eslint.config.mjs +0 -18
  402. package/templates-ui/next.config.ts +0 -7
  403. package/templates-ui/package.json +0 -35
  404. package/templates-ui/pnpm-lock.yaml +0 -4571
  405. package/templates-ui/postcss.config.mjs +0 -7
  406. package/templates-ui/public/file.svg +0 -1
  407. package/templates-ui/public/globe.svg +0 -1
  408. package/templates-ui/public/logo.png +0 -0
  409. package/templates-ui/public/next.svg +0 -1
  410. package/templates-ui/public/vercel.svg +0 -1
  411. package/templates-ui/public/window.svg +0 -1
  412. package/templates-ui/src/app/[category]/[name]/page.tsx +0 -89
  413. package/templates-ui/src/app/api/templates/[...slug]/route.ts +0 -52
  414. package/templates-ui/src/app/api/templates/route.ts +0 -18
  415. package/templates-ui/src/app/builder/page.tsx +0 -37
  416. package/templates-ui/src/app/globals.css +0 -94
  417. package/templates-ui/src/app/layout.tsx +0 -79
  418. package/templates-ui/src/app/page.tsx +0 -38
  419. package/templates-ui/src/app/robots.ts +0 -11
  420. package/templates-ui/src/app/sitemap.ts +0 -31
  421. package/templates-ui/src/components/compose-builder.tsx +0 -442
  422. package/templates-ui/src/components/compose-preview.tsx +0 -117
  423. package/templates-ui/src/components/file-preview.tsx +0 -77
  424. package/templates-ui/src/components/footer.tsx +0 -40
  425. package/templates-ui/src/components/header.tsx +0 -41
  426. package/templates-ui/src/components/template-card.tsx +0 -87
  427. package/templates-ui/src/components/template-detail.tsx +0 -125
  428. package/templates-ui/src/components/template-gallery.tsx +0 -263
  429. package/templates-ui/src/components/ui/badge.tsx +0 -36
  430. package/templates-ui/src/components/ui/button.tsx +0 -57
  431. package/templates-ui/src/components/ui/card.tsx +0 -76
  432. package/templates-ui/src/components/ui/separator.tsx +0 -31
  433. package/templates-ui/src/components/ui/tooltip.tsx +0 -32
  434. package/templates-ui/src/lib/compose-generator.ts +0 -241
  435. package/templates-ui/src/lib/templates.ts +0 -137
  436. package/templates-ui/src/lib/utils.ts +0 -6
  437. package/templates-ui/tsconfig.json +0 -34
  438. package/thoughts/research/2026-02-28-openfort-viem-x402-research.md +0 -679
  439. package/thoughts/research/2026-02-28-x402-payments-research.md +0 -686
  440. package/thoughts/researcher/plans/2026-02-20-agent-self-improvement-plan.md +0 -282
  441. package/thoughts/researcher/research/2026-02-20-agent-self-improvement.md +0 -492
  442. package/thoughts/shared/plans/.gitkeep +0 -0
  443. package/thoughts/shared/plans/2025-12-18-slack-integration.md +0 -1195
  444. package/thoughts/shared/plans/2025-12-19-agent-log-streaming.md +0 -732
  445. package/thoughts/shared/plans/2025-12-19-role-based-swarm-plugin.md +0 -361
  446. package/thoughts/shared/plans/2025-12-20-mobile-responsive-ui.md +0 -501
  447. package/thoughts/shared/plans/2025-12-20-startup-team-swarm.md +0 -560
  448. package/thoughts/shared/plans/2025-12-23-runner-level-polling.md +0 -934
  449. package/thoughts/shared/plans/2025-12-23-runner-session-logs.md +0 -1000
  450. package/thoughts/shared/plans/2025-12-23-worker-lead-spawn-triggers.md +0 -568
  451. package/thoughts/shared/plans/2026-01-09-inverse-teleport.md +0 -1516
  452. package/thoughts/shared/plans/2026-01-12-agent-rename-pm2-control.md +0 -1133
  453. package/thoughts/shared/plans/2026-01-12-github-app-integration.md +0 -380
  454. package/thoughts/shared/plans/2026-01-12-lead-inbox-model.md +0 -876
  455. package/thoughts/shared/plans/2026-01-12-ralph-wiggum-integration.md +0 -463
  456. package/thoughts/shared/plans/2026-01-13-agent-concurrency.md +0 -691
  457. package/thoughts/shared/plans/2026-01-13-github-assignment-handling.md +0 -690
  458. package/thoughts/shared/plans/2026-01-13-prevent-duplicate-trigger-processing.md +0 -1071
  459. package/thoughts/shared/plans/2026-01-14-fix-slack-thread-context.md +0 -507
  460. package/thoughts/shared/plans/2026-01-15-scheduled-tasks-implementation.md +0 -565
  461. package/thoughts/shared/plans/2026-01-15-usage-cost-tracking-ui.md +0 -1479
  462. package/thoughts/shared/plans/2026-01-16-epics-feature-implementation.md +0 -1230
  463. package/thoughts/shared/plans/2026-02-26-mcp-tool-context-reduction.md +0 -282
  464. package/thoughts/shared/plans/2026-03-02-claude-context-mode-integration.md +0 -328
  465. package/thoughts/shared/plans/2026-03-02-code-level-heartbeat.md +0 -224
  466. package/thoughts/shared/research/.gitkeep +0 -0
  467. package/thoughts/shared/research/2025-01-09-inverse-teleport-plan-review.md +0 -420
  468. package/thoughts/shared/research/2025-12-18-slack-integration.md +0 -442
  469. package/thoughts/shared/research/2025-12-19-agent-log-streaming.md +0 -339
  470. package/thoughts/shared/research/2025-12-19-agent-secrets-cli-research.md +0 -390
  471. package/thoughts/shared/research/2025-12-21-gemini-cli-integration.md +0 -376
  472. package/thoughts/shared/research/2025-12-22-runner-loop-architecture.md +0 -582
  473. package/thoughts/shared/research/2025-12-22-setup-experience-improvements.md +0 -264
  474. package/thoughts/shared/research/2026-01-13-lead-duplicate-trigger-processing.md +0 -223
  475. package/thoughts/shared/research/2026-01-14-lead-slack-thread-context.md +0 -277
  476. package/thoughts/shared/research/2026-01-15-ai-tracker-agent-swarm-integration.md +0 -376
  477. package/thoughts/shared/research/2026-01-15-auto-starting-processes-in-worker-containers.md +0 -787
  478. package/thoughts/shared/research/2026-01-15-scheduled-tasks.md +0 -390
  479. package/thoughts/shared/research/2026-01-16-epics-feature-research.md +0 -437
  480. package/thoughts/shared/research/2026-02-26-cliffy-mcp-tools.md +0 -159
  481. package/thoughts/shared/research/2026-03-03-database-migration-system-refactor.md +0 -337
  482. package/thoughts/swarm-researcher/plans/2026-02-23-openclaw-improvements-plan.md +0 -778
  483. package/thoughts/swarm-researcher/plans/2026-02-26-artifacts-localtunnel-plan.md +0 -1269
  484. package/thoughts/swarm-researcher/research/2026-02-23-openclaw-vs-agent-swarm-comparison.md +0 -411
  485. package/thoughts/swarm-researcher/research/2026-02-26-artifacts-localtunnel.md +0 -724
  486. package/thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md +0 -443
  487. package/thoughts/taras/brainstorms/2026-03-20-setup-cli-onboarding.md +0 -307
  488. package/thoughts/taras/plans/2026-01-22-agent-swarm-schemas.md +0 -98
  489. package/thoughts/taras/plans/2026-01-28-per-worker-claude-md.md +0 -617
  490. package/thoughts/taras/plans/2026-01-28-sentry-cli-integration.md +0 -214
  491. package/thoughts/taras/plans/2026-02-20-auto-improvement.md +0 -803
  492. package/thoughts/taras/plans/2026-02-20-env-management.md +0 -538
  493. package/thoughts/taras/plans/2026-02-20-memory-system.md +0 -882
  494. package/thoughts/taras/plans/2026-02-20-repos-knowledge.md +0 -806
  495. package/thoughts/taras/plans/2026-02-20-session-attach.md +0 -647
  496. package/thoughts/taras/plans/2026-02-20-worker-identity.md +0 -820
  497. package/thoughts/taras/plans/2026-02-25-feat-new-ui-visual-redesign-plan.md +0 -768
  498. package/thoughts/taras/plans/2026-03-04-fix-buildSystemPrompt-missing-fields.md +0 -77
  499. package/thoughts/taras/plans/2026-03-04-new-ui-missing-actions.md +0 -543
  500. package/thoughts/taras/plans/2026-03-06-one-time-scheduled-tasks.md +0 -373
  501. package/thoughts/taras/plans/2026-03-08-memory-self-improvement-enhancements.md +0 -512
  502. package/thoughts/taras/plans/2026-03-08-pi-mono-provider-implementation.md +0 -919
  503. package/thoughts/taras/plans/2026-03-09-templates-registry.md +0 -723
  504. package/thoughts/taras/plans/2026-03-10-task-working-directory.md +0 -371
  505. package/thoughts/taras/plans/2026-03-11-archil-per-agent-write-strategy.md +0 -621
  506. package/thoughts/taras/plans/2026-03-12-eliminate-inbox-route-to-tasks.md +0 -61
  507. package/thoughts/taras/plans/2026-03-12-slack-thread-followup-additive.md +0 -488
  508. package/thoughts/taras/plans/2026-03-13-slack-ai-improvements.md +0 -644
  509. package/thoughts/taras/plans/2026-03-16-route-wrapper-openapi.md +0 -636
  510. package/thoughts/taras/plans/2026-03-17-multi-api-config.md +0 -444
  511. package/thoughts/taras/plans/2026-03-18-agent-fs-integration.md +0 -591
  512. package/thoughts/taras/plans/2026-03-18-debug-db-explorer.md +0 -446
  513. package/thoughts/taras/plans/2026-03-18-workflow-redesign.md +0 -987
  514. package/thoughts/taras/plans/2026-03-19-compound-learnings.md +0 -403
  515. package/thoughts/taras/plans/2026-03-19-ticket-tracker-linear-integration.md +0 -860
  516. package/thoughts/taras/plans/2026-03-19-workflow-io-schemas-and-bugs.md +0 -899
  517. package/thoughts/taras/plans/2026-03-20-setup-cli-onboarding.md +0 -874
  518. package/thoughts/taras/plans/2026-03-20-workflow-structured-output-validation-workspace.md +0 -723
  519. package/thoughts/taras/research/2026-01-22-vercel-cli-integration.md +0 -287
  520. package/thoughts/taras/research/2026-01-27-excessive-polling-issue.md +0 -311
  521. package/thoughts/taras/research/2026-01-28-per-worker-claude-md.md +0 -383
  522. package/thoughts/taras/research/2026-01-28-sentry-cli-integration.md +0 -240
  523. package/thoughts/taras/research/2026-02-19-agent-native-swarm-architecture.md +0 -390
  524. package/thoughts/taras/research/2026-02-19-swarm-gaps-implementation.md +0 -594
  525. package/thoughts/taras/research/2026-02-25-dashboard-ui-design-best-practices.md +0 -825
  526. package/thoughts/taras/research/2026-02-26-task-detail-page-redesign.md +0 -393
  527. package/thoughts/taras/research/2026-03-03-new-ui-missing-actions.md +0 -168
  528. package/thoughts/taras/research/2026-03-05-pi-mono-provider-research.md +0 -230
  529. package/thoughts/taras/research/2026-03-06-workflow-engine-design.md +0 -445
  530. package/thoughts/taras/research/2026-03-08-drive-loop-concept.md +0 -375
  531. package/thoughts/taras/research/2026-03-08-pi-mono-deep-dive.md +0 -869
  532. package/thoughts/taras/research/2026-03-09-templates-registry.md +0 -373
  533. package/thoughts/taras/research/2026-03-10-agent-working-directory.md +0 -223
  534. package/thoughts/taras/research/2026-03-10-configurable-event-prompts.md +0 -339
  535. package/thoughts/taras/research/2026-03-11-archil-production-setup.md +0 -181
  536. package/thoughts/taras/research/2026-03-11-archil-shared-disk-write-strategies.md +0 -437
  537. package/thoughts/taras/research/2026-03-13-slack-ai-features.md +0 -258
  538. package/thoughts/taras/research/2026-03-16-openapi-docs-generation.md +0 -335
  539. package/thoughts/taras/research/2026-03-16-route-wrapper-openapi.md +0 -670
  540. package/thoughts/taras/research/2026-03-16-slack-thread-followups-e2e.md +0 -54
  541. package/thoughts/taras/research/2026-03-18-agent-fs-integration.md +0 -558
  542. package/thoughts/taras/research/2026-03-18-linear-integration-finalization.md +0 -526
  543. package/thoughts/taras/research/2026-03-18-workflow-redesign.md +0 -797
  544. package/thoughts/taras/research/2026-03-19-workflow-node-io-schemas-and-bugs.md +0 -563
  545. package/thoughts/taras/research/2026-03-19-workflow-structured-output-validation-workspace.md +0 -486
  546. package/thoughts/taras/research/2026-03-20-prompt-template-registry.md +0 -469
  547. package/tsconfig.json +0 -37
@@ -1,825 +0,0 @@
1
- ---
2
- date: 2026-02-25T12:00:00Z
3
- topic: "Modern Dashboard UI Design Best Practices (2025-2026)"
4
- ---
5
-
6
- # Modern Dashboard UI Design Best Practices (2025-2026)
7
-
8
- Research date: 2026-02-25
9
- Context: Agent Swarm monitoring dashboard redesign, moving from MUI Joy + amber/beehive theme to a modern, polished design system.
10
-
11
- ---
12
-
13
- ## Table of Contents
14
-
15
- 1. [Color Palette Design for Dark-Mode-First Dashboards](#1-color-palette-design)
16
- 2. [Visual Hierarchy, Spacing, and Typography](#2-visual-hierarchy-spacing-typography)
17
- 3. [shadcn/ui + Tailwind CSS v4 Dashboard Patterns](#3-shadcn-tailwind-v4)
18
- 4. [AG Grid Theming Best Practices](#4-ag-grid-theming)
19
- 5. [Sidebar Navigation Design Patterns](#5-sidebar-navigation)
20
- 6. [Status Indicators and Badge Design](#6-status-indicators)
21
- 7. [Card vs Table Layouts for Monitoring](#7-card-vs-table-layouts)
22
- 8. [Micro-Animations and Transitions](#8-micro-animations)
23
- 9. [Reference Dashboards and Design Systems](#9-reference-dashboards)
24
- 10. [Concrete Recommendations for Agent Swarm](#10-agent-swarm-recommendations)
25
-
26
- ---
27
-
28
- ## 1. Color Palette Design
29
-
30
- ### Moving Beyond Amber/Gold
31
-
32
- The current Agent Swarm UI uses a warm amber/honey/gold palette (#F5A623 primary, #D4A574 gold, #0d0906 body). While thematic ("beehive"), this approach has several issues:
33
-
34
- - Amber/warm tones on dark backgrounds produce a "dated" or "retro terminal" aesthetic
35
- - Limited semantic range: amber already means "warning" in most color systems, so using it as a primary creates confusion
36
- - The warm brown surfaces (#1a130e, #251c15) reduce contrast compared to neutral darks
37
-
38
- ### Modern Dark Mode Color Theory
39
-
40
- **Source: Material Design, Linear, Vercel Geist, shadcn/ui defaults**
41
-
42
- The industry consensus in 2025-2026:
43
-
44
- 1. **Use near-black neutrals, not pure black or tinted blacks**
45
- - Pure #000000 is too harsh and eliminates elevation perception
46
- - Tinted blacks (like the current #0d0906 warm brown) bias the entire palette
47
- - Best practice: neutral grays with very slight cool or warm tint
48
-
49
- 2. **OKLCH color space** is the new standard for generating perceptually uniform palettes
50
- - Linear migrated to LCH for theme generation
51
- - shadcn/ui now uses OKLCH as default format
52
- - Key advantage: changing lightness doesn't cause hue/saturation drift
53
-
54
- 3. **Layered darkness for elevation** (Material Design principle)
55
- - Base: #09111A to #121212 range
56
- - Surface +1: 5% lighter (cards, panels)
57
- - Surface +2: 8-10% lighter (popovers, dropdowns)
58
- - Surface +3: 12-15% lighter (elevated modals)
59
-
60
- ### Recommended Dark Palette: Cool Neutral
61
-
62
- A cool neutral palette that doesn't commit to a strong brand hue, keeping the focus on content:
63
-
64
- ```css
65
- /* === BACKGROUNDS (layered darkness) === */
66
- --background: oklch(0.145 0 0); /* ~#0a0a0a - page base */
67
- --surface-1: oklch(0.175 0.005 270); /* ~#111318 - cards, panels */
68
- --surface-2: oklch(0.21 0.006 270); /* ~#181b22 - elevated cards */
69
- --surface-3: oklch(0.25 0.007 270); /* ~#1f2330 - popovers, modals */
70
-
71
- /* === BORDERS === */
72
- --border: oklch(1 0 0 / 8%); /* subtle white overlay */
73
- --border-strong: oklch(1 0 0 / 14%); /* active/focused borders */
74
-
75
- /* === TEXT === */
76
- --text-primary: oklch(0.985 0 0); /* ~#fafafa - headings, primary */
77
- --text-secondary: oklch(0.71 0.01 270); /* ~#a1a1aa - descriptions */
78
- --text-tertiary: oklch(0.55 0.01 270); /* ~#71717a - timestamps, hints */
79
- --text-muted: oklch(0.45 0.01 270); /* ~#52525b - disabled text */
80
- ```
81
-
82
- ### Accent Color: Moving to Blue-Indigo
83
-
84
- Instead of amber as the primary accent, use a blue-indigo which:
85
- - Is universally understood as "interactive/clickable"
86
- - Provides clear contrast against warm semantic colors (success green, warning amber, error red)
87
- - Works well for selection highlights, links, and focus rings
88
-
89
- ```css
90
- /* === ACCENT (Blue-Indigo) === */
91
- --accent: oklch(0.62 0.19 264); /* ~#6366f1 - indigo-500 */
92
- --accent-hover: oklch(0.56 0.21 264); /* ~#4f46e5 - indigo-600 */
93
- --accent-muted: oklch(0.62 0.19 264 / 15%); /* selection backgrounds */
94
- --accent-foreground: oklch(0.985 0 0); /* white text on accent */
95
-
96
- /* === SEMANTIC COLORS === */
97
- /* Success - Emerald */
98
- --success: oklch(0.70 0.17 162); /* ~#10b981 - emerald-500 */
99
- --success-muted: oklch(0.70 0.17 162 / 15%);
100
-
101
- /* Warning - Amber (now properly semantic, not primary) */
102
- --warning: oklch(0.75 0.18 80); /* ~#f59e0b - amber-500 */
103
- --warning-muted: oklch(0.75 0.18 80 / 15%);
104
-
105
- /* Error/Destructive - Red */
106
- --error: oklch(0.63 0.21 25); /* ~#ef4444 - red-500 */
107
- --error-muted: oklch(0.63 0.21 25 / 15%);
108
-
109
- /* Info - Sky Blue */
110
- --info: oklch(0.68 0.14 230); /* ~#38bdf8 - sky-400 */
111
- --info-muted: oklch(0.68 0.14 230 / 15%);
112
- ```
113
-
114
- ### Alternative Accent: Teal-Cyan
115
-
116
- If indigo feels too "generic", teal-cyan is a distinctive alternative that's popular in monitoring/DevOps tools (Datadog, Grafana):
117
-
118
- ```css
119
- --accent: oklch(0.72 0.15 190); /* ~#14b8a6 - teal-500 */
120
- --accent-hover: oklch(0.66 0.16 190); /* ~#0d9488 - teal-600 */
121
- ```
122
-
123
- ### Chart Colors (5-color data visualization palette)
124
-
125
- ```css
126
- --chart-1: oklch(0.62 0.19 264); /* indigo - primary series */
127
- --chart-2: oklch(0.70 0.17 162); /* emerald - secondary */
128
- --chart-3: oklch(0.68 0.14 230); /* sky blue */
129
- --chart-4: oklch(0.72 0.16 310); /* purple/violet */
130
- --chart-5: oklch(0.75 0.18 80); /* amber */
131
- ```
132
-
133
- ---
134
-
135
- ## 2. Visual Hierarchy, Spacing, and Typography
136
-
137
- ### Typography
138
-
139
- **Source: Linear redesign, font pairing research, data-dense UI studies**
140
-
141
- **Recommendation: Inter + JetBrains Mono (or Geist Sans + Geist Mono)**
142
-
143
- | Use Case | Font | Weight | Size |
144
- |---|---|---|---|
145
- | Page titles | Inter Display (or Inter) | 600 | 20-24px |
146
- | Section headings | Inter | 600 | 16-18px |
147
- | Card titles | Inter | 500 | 14-15px |
148
- | Body text | Inter | 400 | 13-14px |
149
- | Table data | Inter (tabular nums) | 400 | 13px |
150
- | Code/IDs/timestamps | JetBrains Mono | 400 | 12-13px |
151
- | Badges/labels | Inter | 600 | 11-12px (UPPERCASE, 0.05em tracking) |
152
-
153
- Key insight from research: **Use tabular numerals in proportional fonts for numeric data** rather than monospace. Monospace is overkill for numbers. Inter supports `font-variant-numeric: tabular-nums` which gives aligned columns with better readability.
154
-
155
- Current UI uses Space Grotesk + Space Mono. These are fine fonts but:
156
- - Space Grotesk has a more "playful" personality than a monitoring dashboard warrants
157
- - Inter is the industry standard for data-dense UIs (Linear, Vercel, shadcn, Raycast all use it)
158
-
159
- ### Spacing Scale
160
-
161
- Follow the Tailwind 4px grid (each unit = 0.25rem = 4px):
162
-
163
- ```
164
- Micro: 4px (gap between icon and label)
165
- Small: 8px (gap between related items, padding in small components)
166
- Medium: 12px (card internal padding, gap between list items)
167
- Regular: 16px (standard content padding)
168
- Large: 24px (section gaps, card padding)
169
- XLarge: 32px (page-level section spacing)
170
- XXLarge: 48px (major layout divisions)
171
- ```
172
-
173
- **Dashboard-specific spacing rules:**
174
- - Card padding: 16px (p-4) for standard, 20px (p-5) for featured cards
175
- - Gap between cards in a grid: 16px (gap-4)
176
- - Sidebar width: 240px expanded, 48px collapsed (icon-only)
177
- - Tab bar height: 40px
178
- - Table row height: 40-44px for data density without feeling cramped
179
- - Header height: 48-56px
180
-
181
- ### Visual Hierarchy Principles
182
-
183
- 1. **Size contrast for emphasis**: Titles 20-24px, body 13-14px (1.5-1.8x ratio)
184
- 2. **Color contrast for importance**: Primary text (#fafafa) vs secondary (#a1a1aa) - clear 2-level system
185
- 3. **Weight contrast for scanability**: 600 weight for headings/labels, 400 for body
186
- 4. **Spatial grouping**: Related content is 8-12px apart; unrelated content 24-32px apart
187
- 5. **Border-free elevation**: Use background color differences instead of visible borders where possible (Linear's approach)
188
-
189
- ---
190
-
191
- ## 3. shadcn/ui + Tailwind CSS v4 Dashboard Patterns
192
-
193
- ### Tailwind v4 Architecture
194
-
195
- Tailwind v4 fundamentally changes how you configure themes:
196
-
197
- ```css
198
- /* No more tailwind.config.js - everything in CSS */
199
- @import "tailwindcss";
200
-
201
- @theme {
202
- /* Design tokens become CSS variables that auto-generate utilities */
203
- --color-background: oklch(0.145 0 0);
204
- --color-surface: oklch(0.175 0.005 270);
205
- --color-accent: oklch(0.62 0.19 264);
206
-
207
- --spacing-xs: 0.25rem;
208
- --spacing-sm: 0.5rem;
209
- --spacing-md: 0.75rem;
210
- --spacing-lg: 1rem;
211
-
212
- --font-sans: "Inter", system-ui, sans-serif;
213
- --font-mono: "JetBrains Mono", monospace;
214
-
215
- --radius-sm: 0.375rem;
216
- --radius-md: 0.5rem;
217
- --radius-lg: 0.75rem;
218
- }
219
- ```
220
-
221
- ### Three-Layer Token Hierarchy (Best Practice)
222
-
223
- ```css
224
- /* Layer 1: Base (raw palette) */
225
- --color-gray-50: oklch(0.985 0 0);
226
- --color-gray-100: oklch(0.95 0.003 270);
227
- --color-gray-900: oklch(0.21 0.006 270);
228
- --color-gray-950: oklch(0.145 0 0);
229
-
230
- /* Layer 2: Semantic (maps to purpose) */
231
- --color-background: var(--color-gray-950);
232
- --color-foreground: var(--color-gray-50);
233
- --color-muted: var(--color-gray-900);
234
- --color-muted-foreground: var(--color-gray-400);
235
-
236
- /* Layer 3: Component (variant-specific) */
237
- --sidebar-background: var(--color-gray-900);
238
- --sidebar-foreground: var(--color-gray-50);
239
- --card-background: var(--color-surface);
240
- ```
241
-
242
- Never skip the semantic layer -- it's what makes refactors safe.
243
-
244
- ### shadcn/ui Default Dark Theme (Reference)
245
-
246
- As of 2025-2026, shadcn/ui uses OKLCH by default:
247
-
248
- ```css
249
- .dark {
250
- --background: oklch(0.145 0 0);
251
- --foreground: oklch(0.985 0 0);
252
- --card: oklch(0.205 0 0);
253
- --card-foreground: oklch(0.985 0 0);
254
- --popover: oklch(0.205 0 0);
255
- --popover-foreground: oklch(0.985 0 0);
256
- --primary: oklch(0.92 0.004 286.32);
257
- --primary-foreground: oklch(0.21 0.006 285.885);
258
- --secondary: oklch(0.274 0.006 286.033);
259
- --secondary-foreground: oklch(0.985 0 0);
260
- --muted: oklch(0.274 0.006 286.033);
261
- --muted-foreground: oklch(0.705 0.015 286.067);
262
- --accent: oklch(0.274 0.006 286.033);
263
- --accent-foreground: oklch(0.985 0 0);
264
- --destructive: oklch(0.704 0.191 22.216);
265
- --border: oklch(1 0 0 / 10%);
266
- --input: oklch(1 0 0 / 15%);
267
- --ring: oklch(0.552 0.016 285.938);
268
- --sidebar: oklch(0.21 0.006 285.885);
269
- --sidebar-foreground: oklch(0.985 0 0);
270
- --sidebar-primary: oklch(0.488 0.243 264.376);
271
- --sidebar-primary-foreground: oklch(0.985 0 0);
272
- --sidebar-accent: oklch(0.274 0.006 286.033);
273
- --sidebar-accent-foreground: oklch(0.985 0 0);
274
- --sidebar-border: oklch(1 0 0 / 10%);
275
- }
276
- ```
277
-
278
- ### Essential shadcn Components for Dashboards
279
-
280
- - **Card** -- metric containers, KPI displays
281
- - **DataTable** -- powered by TanStack Table, sorting/filtering/pagination built in
282
- - **Sidebar** -- collapsible navigation with icon-only mode
283
- - **Tabs** -- content section switching
284
- - **Badge** -- status indicators
285
- - **Sheet** -- mobile-responsive slide-in panels
286
- - **Command** -- command palette (Cmd+K)
287
- - **Chart** -- built on Recharts, inherits theme colors
288
-
289
- ---
290
-
291
- ## 4. AG Grid Theming Best Practices
292
-
293
- ### Modern AG Grid Theming API
294
-
295
- AG Grid's Theming API (v31+) uses `themeQuartz` with `withParams`:
296
-
297
- ```typescript
298
- import { themeQuartz, colorSchemeDark } from "ag-grid-community";
299
-
300
- const customDarkTheme = themeQuartz
301
- .withPart(colorSchemeDark)
302
- .withParams({
303
- // Match your dashboard background
304
- backgroundColor: "#111318",
305
-
306
- // Match your text colors
307
- foregroundColor: "#fafafa",
308
-
309
- // Match your accent color
310
- accentColor: "#6366f1",
311
-
312
- // Borders -- subtle
313
- borderColor: "rgba(255, 255, 255, 0.08)",
314
-
315
- // Row alternation
316
- oddRowBackgroundColor: "rgba(255, 255, 255, 0.02)",
317
-
318
- // Header styling
319
- headerBackgroundColor: "#0f1116",
320
- headerTextColor: "#a1a1aa",
321
- headerFontWeight: 600,
322
- headerFontSize: 12,
323
-
324
- // Cell text
325
- cellTextColor: "#e4e4e7",
326
- fontSize: 13,
327
-
328
- // Selection
329
- selectedRowBackgroundColor: "rgba(99, 102, 241, 0.12)",
330
- rangeSelectionBorderColor: "#6366f1",
331
-
332
- // Chrome (panels, toolbars)
333
- chromeBackgroundColor: "#0f1116",
334
-
335
- // Spacing
336
- cellHorizontalPadding: 12,
337
- rowHeight: 40,
338
- headerHeight: 40,
339
-
340
- // Borders
341
- rowBorderColor: "rgba(255, 255, 255, 0.04)",
342
- columnBorderColor: "transparent",
343
-
344
- // Font
345
- fontFamily: "'Inter', system-ui, sans-serif",
346
- });
347
- ```
348
-
349
- ### Key AG Grid Dark Mode Principles
350
-
351
- 1. **Match the grid background to your card/surface color** -- the grid should feel embedded, not floating
352
- 2. **Reduce border prominence** -- use very subtle borders (4-8% white opacity) or eliminate column borders entirely
353
- 3. **Dim the header** -- header should be slightly darker than data rows, with muted text color
354
- 4. **Use subtle row alternation** -- 2-3% white overlay for odd rows, not a visible color difference
355
- 5. **Accent color for selection only** -- don't overuse the accent; let data be neutral
356
- 6. **Match font to your dashboard** -- set fontFamily to match your UI typography
357
- 7. **Consistent row height** -- 40px is the sweet spot for data density with touch-friendliness
358
-
359
- ### Custom CSS Overrides for Polish
360
-
361
- ```css
362
- /* Remove the outer grid border for seamless card integration */
363
- .ag-root-wrapper {
364
- border: none !important;
365
- border-radius: 0 !important;
366
- }
367
-
368
- /* Soften header separator */
369
- .ag-header {
370
- border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
371
- }
372
-
373
- /* Status cell with colored dot */
374
- .ag-cell.status-cell {
375
- display: flex;
376
- align-items: center;
377
- gap: 8px;
378
- }
379
-
380
- /* Smooth hover transition */
381
- .ag-row:hover {
382
- transition: background-color 150ms ease;
383
- }
384
- ```
385
-
386
- ---
387
-
388
- ## 5. Sidebar Navigation Design Patterns
389
-
390
- ### shadcn/ui Sidebar Architecture
391
-
392
- The shadcn sidebar component provides a battle-tested pattern:
393
-
394
- ```
395
- SidebarProvider (manages state)
396
- Sidebar (collapsible="icon" | "offcanvas" | "none")
397
- SidebarHeader
398
- Logo / App name (hidden when collapsed)
399
- SidebarContent
400
- SidebarGroup (label: "Navigation")
401
- SidebarMenu
402
- SidebarMenuItem -> SidebarMenuButton
403
- SidebarGroup (label: "Management")
404
- Collapsible
405
- SidebarGroupLabel -> CollapsibleTrigger
406
- CollapsibleContent
407
- SidebarMenu -> items
408
- SidebarFooter
409
- User avatar / settings
410
- SidebarRail (thin resize/toggle rail)
411
- ```
412
-
413
- ### Design Token Setup
414
-
415
- ```css
416
- --sidebar-width: 16rem; /* 256px expanded */
417
- --sidebar-width-mobile: 18rem; /* 288px on mobile sheet */
418
- --sidebar-width-icon: 3rem; /* 48px collapsed */
419
- ```
420
-
421
- ### Navigation Grouping for Agent Swarm
422
-
423
- Recommended sidebar structure:
424
-
425
- ```
426
- [Icon] Agent Swarm <- Logo/app name
427
-
428
- --- Core ---
429
- Agents (Users icon)
430
- Tasks (ListTodo icon)
431
- Epics (Target icon)
432
- Chat (MessageSquare icon)
433
-
434
- --- System ---
435
- Services (Server icon)
436
- Schedules (Clock icon)
437
- Repos (GitBranch icon)
438
-
439
- --- Analytics ---
440
- Usage (BarChart3 icon)
441
-
442
- --- Bottom (footer) ---
443
- Config (Settings icon)
444
- Theme toggle (Sun/Moon icon)
445
- ```
446
-
447
- ### Collapse Behavior
448
-
449
- 1. **Desktop**: Default expanded, user can collapse to icon-only mode
450
- 2. **Collapsed mode**: Show only icons (24px), tooltip on hover for label
451
- 3. **Mobile**: Off-canvas sheet that slides in from left
452
- 4. **Active state**: Highlighted with accent-muted background + accent left border or indicator dot
453
- 5. **Persist state**: Store collapse preference in localStorage
454
-
455
- ### Active Item Styling
456
-
457
- ```css
458
- /* Active nav item */
459
- .nav-item-active {
460
- background: oklch(0.62 0.19 264 / 12%); /* accent at 12% opacity */
461
- color: oklch(0.75 0.15 264); /* lighter accent for text */
462
- border-left: 2px solid oklch(0.62 0.19 264);
463
- font-weight: 500;
464
- }
465
-
466
- /* Hover state */
467
- .nav-item:hover {
468
- background: oklch(1 0 0 / 5%);
469
- }
470
- ```
471
-
472
- ---
473
-
474
- ## 6. Status Indicators and Badge Design
475
-
476
- ### Semantic Status Colors
477
-
478
- **Source: Carbon Design System, Material Design, AIA Qi Design System, industry consensus**
479
-
480
- For a monitoring dashboard, define status by semantic meaning, not arbitrary colors:
481
-
482
- | Status | Color | Hex (Dark Mode) | OKLCH | Use Case |
483
- |---|---|---|---|---|
484
- | Success/Online/Completed | Emerald | #10b981 | oklch(0.70 0.17 162) | Healthy, done, active |
485
- | Warning/Busy/In Progress | Amber | #f59e0b | oklch(0.75 0.18 80) | Attention needed |
486
- | Error/Failed | Red | #ef4444 | oklch(0.63 0.21 25) | Critical, broken |
487
- | Info/Reviewing | Blue | #3b82f6 | oklch(0.62 0.16 255) | Informational |
488
- | Neutral/Offline/Cancelled | Gray | #71717a | oklch(0.55 0.01 270) | Inactive, disabled |
489
- | Special/Offered | Violet | #8b5cf6 | oklch(0.58 0.22 293) | Queued, pending action |
490
-
491
- ### Badge Design Pattern
492
-
493
- ```tsx
494
- // Minimal badge - colored dot + uppercase label
495
- <span className="inline-flex items-center gap-1.5 px-2 py-0.5
496
- rounded-full text-[11px] font-semibold tracking-wider uppercase
497
- bg-emerald-500/15 text-emerald-400 border border-emerald-500/20">
498
- <span className="size-1.5 rounded-full bg-emerald-500" />
499
- Online
500
- </span>
501
- ```
502
-
503
- ### Design Rules for Status Badges
504
-
505
- 1. **Use a colored dot + text** -- never rely on color alone (accessibility)
506
- 2. **Background at 10-15% opacity** of the status color -- just enough to create a "pill"
507
- 3. **Border at 15-20% opacity** -- adds definition without heaviness
508
- 4. **Text in a lighter shade** of the status color (400 weight in Tailwind scale)
509
- 5. **Uppercase, small, tracked** -- 11-12px, font-weight 600, letter-spacing 0.05em
510
- 6. **Monospace or tabular font** not needed for badges -- use the UI font
511
- 7. **Animated pulse only for truly active states** -- "in_progress" and "busy" only, not everything
512
-
513
- ### Dot Indicator Patterns
514
-
515
- For compact spaces (table cells, sidebar), use dot-only indicators:
516
-
517
- ```css
518
- /* Pulsing dot for active */
519
- .status-dot-active {
520
- width: 8px;
521
- height: 8px;
522
- border-radius: 50%;
523
- background: #10b981;
524
- box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4);
525
- animation: pulse-ring 2s ease-out infinite;
526
- }
527
-
528
- @keyframes pulse-ring {
529
- 0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4); }
530
- 70% { box-shadow: 0 0 0 6px rgba(16, 185, 129, 0); }
531
- 100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
532
- }
533
-
534
- /* Static dot for stable states */
535
- .status-dot-static {
536
- width: 8px;
537
- height: 8px;
538
- border-radius: 50%;
539
- }
540
- ```
541
-
542
- ---
543
-
544
- ## 7. Card vs Table Layouts for Monitoring
545
-
546
- ### When to Use Each
547
-
548
- | Layout | Best For | Agent Swarm Context |
549
- |---|---|---|
550
- | **Card grid** | Aggregate stats, KPIs, individual entity detail | Stats bar (top), agent overview cards, epic cards |
551
- | **Data table** | Large lists, sortable/filterable data, homogeneous items | Tasks list, agent list (when many), services registry |
552
- | **Hybrid** | Master-detail patterns | Agent list (table) + detail panel (cards) |
553
-
554
- ### Card Layout Best Practices
555
-
556
- - **Maximum 5-6 cards** in initial viewport -- don't overwhelm
557
- - **Consistent card dimensions** within a row
558
- - **KPI cards**: Large number (24-32px), label below (12-13px muted), optional sparkline
559
- - **Entity cards**: Title, 2-3 key properties, status badge, timestamp
560
- - **Card padding**: 16-20px, border-radius 8-12px
561
- - **Card hover**: Subtle border glow or slight background lighten (not scale transform)
562
-
563
- ### KPI Card Example
564
-
565
- ```tsx
566
- <div className="rounded-xl bg-surface-1 border border-white/[0.08] p-5">
567
- <div className="flex items-center justify-between mb-3">
568
- <span className="text-xs font-semibold uppercase tracking-wider text-muted-foreground">
569
- Active Agents
570
- </span>
571
- <Users className="size-4 text-muted-foreground" />
572
- </div>
573
- <div className="text-3xl font-semibold tabular-nums">12</div>
574
- <div className="mt-1 text-xs text-muted-foreground">
575
- <span className="text-emerald-400">+3</span> from last hour
576
- </div>
577
- </div>
578
- ```
579
-
580
- ### Table Layout Best Practices
581
-
582
- - **Row height**: 40-44px -- compact but not cramped
583
- - **Horizontal padding**: 12-16px per cell
584
- - **No visible column dividers** -- use spacing and alignment instead
585
- - **Subtle row hover**: 3-5% white overlay on hover
586
- - **Row alternation**: Optional, very subtle (2% white overlay)
587
- - **Sticky header**: Always visible when scrolling
588
- - **Truncation**: Ellipsis with tooltip for long text, never wrap table text
589
-
590
- ---
591
-
592
- ## 8. Micro-Animations and Transitions
593
-
594
- ### Timing Constants
595
-
596
- ```css
597
- :root {
598
- --duration-fast: 100ms; /* instant feedback (button press) */
599
- --duration-normal: 200ms; /* standard transitions */
600
- --duration-slow: 300ms; /* panel open/close */
601
- --duration-enter: 200ms; /* elements appearing */
602
- --duration-exit: 150ms; /* elements disappearing (faster = snappier) */
603
-
604
- --ease-default: cubic-bezier(0.4, 0, 0.2, 1); /* general purpose */
605
- --ease-in: cubic-bezier(0.4, 0, 1, 1); /* accelerate */
606
- --ease-out: cubic-bezier(0, 0, 0.2, 1); /* decelerate */
607
- --ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275); /* bouncy */
608
- }
609
- ```
610
-
611
- ### Where to Animate (and Where NOT to)
612
-
613
- **Do animate:**
614
- - Sidebar collapse/expand (width transition, 200ms)
615
- - Panel slide-in (transform translateX, 200ms ease-out)
616
- - Tab content switch (opacity fade, 150ms)
617
- - Hover states (background-color, 150ms)
618
- - Status dot pulse (only for active states, 2s infinite)
619
- - Toast/notification entrance (slide up + fade, 200ms)
620
- - Skeleton loading pulse (1.5s infinite)
621
- - Row hover highlight (background-color, 100ms)
622
-
623
- **Do NOT animate:**
624
- - Table data updates (just swap, no fade)
625
- - Badge color changes (instant)
626
- - Large layout shifts
627
- - Anything during initial page load (except skeleton)
628
- - Multiple animations simultaneously
629
- - Anything that fires more than once per second
630
-
631
- ### Key Animation Patterns
632
-
633
- **Fade in on mount:**
634
- ```css
635
- @keyframes fade-in {
636
- from { opacity: 0; transform: translateY(4px); }
637
- to { opacity: 1; transform: translateY(0); }
638
- }
639
- .animate-in {
640
- animation: fade-in 200ms ease-out;
641
- }
642
- ```
643
-
644
- **Skeleton loading:**
645
- ```css
646
- @keyframes shimmer {
647
- 0% { background-position: -200% 0; }
648
- 100% { background-position: 200% 0; }
649
- }
650
- .skeleton {
651
- background: linear-gradient(90deg,
652
- oklch(0.21 0 0) 25%,
653
- oklch(0.26 0 0) 50%,
654
- oklch(0.21 0 0) 75%
655
- );
656
- background-size: 200% 100%;
657
- animation: shimmer 1.5s ease-in-out infinite;
658
- border-radius: 4px;
659
- }
660
- ```
661
-
662
- **Sidebar collapse:**
663
- ```css
664
- .sidebar {
665
- width: var(--sidebar-width);
666
- transition: width var(--duration-slow) var(--ease-default);
667
- overflow: hidden;
668
- }
669
- .sidebar[data-collapsed="true"] {
670
- width: var(--sidebar-width-icon);
671
- }
672
- ```
673
-
674
- ### Accessibility: Respect prefers-reduced-motion
675
-
676
- ```css
677
- @media (prefers-reduced-motion: reduce) {
678
- *, *::before, *::after {
679
- animation-duration: 0.01ms !important;
680
- animation-iteration-count: 1 !important;
681
- transition-duration: 0.01ms !important;
682
- scroll-behavior: auto !important;
683
- }
684
- }
685
- ```
686
-
687
- ---
688
-
689
- ## 9. Reference Dashboards and Design Systems
690
-
691
- ### Linear
692
-
693
- - **Color approach**: Near-monochrome (neutral blacks/whites) with very few bold accent colors. Migrated to LCH color space. Significantly reduced color usage compared to earlier versions.
694
- - **Typography**: Inter Display for headings, regular Inter for body.
695
- - **Sidebar**: Inverted L-shape. Tight alignment of labels, icons, buttons. Density-focused with reduced visual noise.
696
- - **Layout**: Structured layouts with headers for filters, side panels for meta properties, multiple display types (list, board, timeline, split, fullscreen).
697
- - **Design philosophy**: "Neutral and timeless appearance." Make text and icons darker in light mode, lighter in dark mode for improved contrast.
698
-
699
- ### Vercel (Geist Design System)
700
-
701
- - **Color system**: 10 color scales using OKLCH/P3 with numeric steps (100-1000). Two background colors (Background-1 for page, Background-2 for differentiation).
702
- - **Component colors**: Color-1 (default), Color-2 (hover), Color-3 (active).
703
- - **Typography**: Geist Sans + Geist Mono.
704
- - **Key principle**: Minimal color, maximum clarity. Black/white are the primary colors, with accent used very sparingly.
705
- - **URL**: https://vercel.com/geist
706
-
707
- ### Cal.com
708
-
709
- - **Design tokens** in CSS variables:
710
- - Dark mode: `--cal-bg: #101010`, `--cal-bg-emphasis: #2b2b2b`, `--cal-bg-subtle: #1c1c1c`, `--cal-bg-muted: #141414`
711
- - Light mode: `--cal-bg: white`, `--cal-bg-emphasis: #e5e7eb`, `--cal-bg-subtle: #f3f4f6`, `--cal-bg-muted: #f9fafb`
712
- - **Approach**: Clean, functional, minimal decoration
713
-
714
- ### Raycast
715
-
716
- - **Known for**: Extreme polish, smooth animations, keyboard-first UX
717
- - **Color**: Muted backgrounds, vibrant icons, high contrast text
718
- - **Design system**: Connected to Supernova.io for token management
719
-
720
- ### PatternFly (Red Hat)
721
-
722
- - **Dashboard patterns**: Comprehensive documentation on card-based dashboard layouts
723
- - **Status indicators**: Well-documented severity levels and aggregate status patterns
724
- - **Layout**: Dashboard with cards for KPIs, lists for detail, consistent spacing
725
-
726
- ---
727
-
728
- ## 10. Concrete Recommendations for Agent Swarm
729
-
730
- ### Migration Path
731
-
732
- The current UI uses MUI Joy + custom amber CSS variables. A migration to shadcn/ui + Tailwind v4 would be a significant rewrite. Here is what I recommend for either approach:
733
-
734
- ### If Staying with MUI Joy (Evolution)
735
-
736
- 1. **Replace the amber palette** with the cool neutral + indigo/teal accent proposed above
737
- 2. **Drop the honeycomb background pattern** -- decorative patterns fight against data-dense UIs
738
- 3. **Drop the glow effects** -- they scream "template", not "production tool"
739
- 4. **Switch to Inter** from Space Grotesk
740
- 5. **Simplify the StatusBadge** -- remove the "pulse-amber" animation from non-active states
741
- 6. **Add a proper sidebar** instead of tab-based navigation
742
-
743
- ### If Migrating to shadcn/ui + Tailwind v4 (Recommended)
744
-
745
- 1. **Use shadcn/ui default dark theme as the base** with OKLCH colors (listed in section 3)
746
- 2. **Customize the accent** to indigo or teal
747
- 3. **Use the shadcn Sidebar component** for navigation
748
- 4. **Use shadcn DataTable** (TanStack Table) instead of AG Grid for most tables, or theme AG Grid to match (section 4)
749
- 5. **Adopt the three-layer token hierarchy** for maintainability
750
- 6. **Inter + JetBrains Mono** font pairing
751
- 7. **Follow the animation timing** in section 8
752
- 8. **Use shadcn Badge** for status indicators with the semantic colors in section 6
753
-
754
- ### Top Priority Visual Changes
755
-
756
- Regardless of framework choice:
757
-
758
- 1. **Kill the amber/honey/gold theme** -- replace with neutral darks + semantic accents
759
- 2. **Remove honeycomb SVG background** -- clean, flat surfaces
760
- 3. **Remove glow effects** on text and boxes
761
- 4. **Move from horizontal tabs to sidebar navigation** -- tabs don't scale with 9+ sections
762
- 5. **Adopt Inter** -- the dashboard standard for a reason
763
- 6. **Standardize status colors** to emerald/amber/red/gray/violet (not all amber variations)
764
- 7. **Reduce border opacity** -- current #3a2d1f borders are too visible; use 6-10% white overlay instead
765
-
766
- ### CSS Variables Migration
767
-
768
- From current:
769
- ```css
770
- :root {
771
- --hive-amber: #f5a623;
772
- --hive-honey: #ffb84d;
773
- --hive-gold: #d4a574;
774
- --hive-body: #0d0906;
775
- --hive-surface: #1a130e;
776
- --hive-border: #3a2d1f;
777
- }
778
- ```
779
-
780
- To proposed:
781
- ```css
782
- .dark {
783
- --background: oklch(0.13 0.005 270);
784
- --foreground: oklch(0.985 0 0);
785
- --surface: oklch(0.175 0.005 270);
786
- --surface-elevated: oklch(0.21 0.006 270);
787
- --border: oklch(1 0 0 / 8%);
788
- --accent: oklch(0.62 0.19 264);
789
- --accent-muted: oklch(0.62 0.19 264 / 15%);
790
- --muted-foreground: oklch(0.55 0.01 270);
791
- }
792
- ```
793
-
794
- ---
795
-
796
- ## Sources
797
-
798
- ### Design Systems and Official Documentation
799
- - [shadcn/ui Theming](https://ui.shadcn.com/docs/theming) - OKLCH variables, dark theme defaults
800
- - [shadcn/ui Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) - Sidebar component architecture
801
- - [Vercel Geist Design System](https://vercel.com/geist) - Color system, typography
802
- - [Vercel Geist Colors](https://vercel.com/geist/colors) - 10 color scales
803
- - [AG Grid Theming Colors](https://www.ag-grid.com/javascript-data-grid/theming-colors/) - Dark mode theming API
804
- - [AG Grid Built-in Themes](https://www.ag-grid.com/javascript-data-grid/themes/) - Theme builder
805
- - [Material Design Dark Theme](https://m2.material.io/design/color/dark-theme.html) - Elevation overlay system
806
- - [Material Design 3 Color Roles](https://m3.material.io/styles/color/roles) - Semantic color system
807
- - [Carbon Design System Status Indicators](https://carbondesignsystem.com/patterns/status-indicator-pattern/) - Status patterns
808
- - [Tailwind CSS Colors](https://tailwindcss.com/docs/colors) - Color palette reference
809
- - [Tailwind CSS Dark Mode](https://tailwindcss.com/docs/dark-mode) - v4 dark mode approach
810
- - [Cal.com Instance Theming](https://cal.com/docs/enterprise-features/instance-wide-theming) - CSS variable tokens
811
-
812
- ### Design Articles and Guides
813
- - [Linear UI Redesign](https://linear.app/now/how-we-redesigned-the-linear-ui) - LCH migration, design philosophy
814
- - [Design Tokens That Scale with Tailwind v4](https://www.maviklabs.com/blog/design-tokens-tailwind-v4-2026) - Three-layer token hierarchy
815
- - [Scalable Accessible Dark Mode](https://www.fourzerothree.in/p/scalable-accessible-dark-mode) - Dark theme implementation
816
- - [Dark Mode Design Best Practices 2026](https://www.tech-rz.com/blog/dark-mode-design-best-practices-in-2026/) - Layered darkness
817
- - [Dashboard Design Principles 2025](https://www.uxpin.com/studio/blog/dashboard-design-principles/) - UX patterns
818
- - [CSS/JS Animation Trends 2026](https://webpeak.org/blog/css-js-animation-trends/) - Micro-interactions
819
- - [Best Fonts for Dense Dashboards](https://fontalternatives.com/blog/best-fonts-dense-dashboards/) - Typography
820
- - [Sidebar Navigation Examples 2025](https://www.navbar.gallery/blog/best-side-bar-navigation-menu-design-examples) - Sidebar patterns
821
-
822
- ### Tools
823
- - [OKLCH Color Picker](https://oklch.fyi/) - OKLCH converter and generator
824
- - [OKLCH Palette Generator](https://oklch-palette.vercel.app/) - Palette generation
825
- - [Data Viz Color Picker](https://www.learnui.design/tools/data-color-picker.html) - Chart palette generator