@adea-ai/ui 0.60.3 → 0.61.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 (862) hide show
  1. package/README.md +108 -34
  2. package/dist/components/composites/account-menu/account-menu.d.ts +48 -0
  3. package/dist/components/composites/account-menu/account-menu.d.ts.map +1 -0
  4. package/dist/components/composites/account-menu/account-menu.js +119 -0
  5. package/dist/components/composites/account-menu/account-menu.js.map +1 -0
  6. package/dist/components/composites/account-menu/index.d.ts +2 -0
  7. package/dist/components/composites/account-menu/index.d.ts.map +1 -0
  8. package/dist/components/composites/list-row/index.d.ts +2 -0
  9. package/dist/components/composites/list-row/index.d.ts.map +1 -0
  10. package/dist/components/composites/list-row/list-row.d.ts +44 -0
  11. package/dist/components/composites/list-row/list-row.d.ts.map +1 -0
  12. package/dist/components/composites/list-row/list-row.js +124 -0
  13. package/dist/components/composites/list-row/list-row.js.map +1 -0
  14. package/dist/components/composites/settings/index.d.ts +2 -0
  15. package/dist/components/composites/settings/index.d.ts.map +1 -0
  16. package/dist/components/composites/settings/settings.d.ts +49 -0
  17. package/dist/components/composites/settings/settings.d.ts.map +1 -0
  18. package/dist/components/composites/settings/settings.js +148 -0
  19. package/dist/components/composites/settings/settings.js.map +1 -0
  20. package/dist/components/composites/stat/index.d.ts +2 -0
  21. package/dist/components/composites/stat/index.d.ts.map +1 -0
  22. package/dist/components/composites/stat/stat.d.ts +48 -0
  23. package/dist/components/composites/stat/stat.d.ts.map +1 -0
  24. package/dist/components/composites/stat/stat.js +148 -0
  25. package/dist/components/composites/stat/stat.js.map +1 -0
  26. package/dist/components/composites/update-dialog/index.d.ts +2 -0
  27. package/dist/components/composites/update-dialog/index.d.ts.map +1 -0
  28. package/dist/components/composites/update-dialog/update-dialog.d.ts +108 -0
  29. package/dist/components/composites/update-dialog/update-dialog.d.ts.map +1 -0
  30. package/dist/components/composites/update-dialog/update-dialog.js +452 -0
  31. package/dist/components/composites/update-dialog/update-dialog.js.map +1 -0
  32. package/dist/components/composites/workspace-mark/index.d.ts +2 -0
  33. package/dist/components/composites/workspace-mark/index.d.ts.map +1 -0
  34. package/dist/components/composites/workspace-mark/workspace-mark.d.ts +24 -0
  35. package/dist/components/composites/workspace-mark/workspace-mark.d.ts.map +1 -0
  36. package/dist/components/composites/workspace-mark/workspace-mark.js +76 -0
  37. package/dist/components/composites/workspace-mark/workspace-mark.js.map +1 -0
  38. package/dist/components/conversation/conversation-avatar.d.ts +21 -0
  39. package/dist/components/conversation/conversation-avatar.d.ts.map +1 -0
  40. package/dist/components/conversation/conversation-avatar.js +52 -0
  41. package/dist/components/conversation/conversation-avatar.js.map +1 -0
  42. package/dist/components/conversation/conversation-surface.d.ts +27 -0
  43. package/dist/components/conversation/conversation-surface.d.ts.map +1 -0
  44. package/dist/components/conversation/conversation-surface.js +118 -0
  45. package/dist/components/conversation/conversation-surface.js.map +1 -0
  46. package/dist/components/conversation/index.d.ts +6 -0
  47. package/dist/components/conversation/index.d.ts.map +1 -0
  48. package/dist/components/conversation/message-composer.d.ts +70 -0
  49. package/dist/components/conversation/message-composer.d.ts.map +1 -0
  50. package/dist/components/conversation/message-composer.js +235 -0
  51. package/dist/components/conversation/message-composer.js.map +1 -0
  52. package/dist/components/conversation/message-row.d.ts +101 -0
  53. package/dist/components/conversation/message-row.d.ts.map +1 -0
  54. package/dist/components/conversation/message-row.js +389 -0
  55. package/dist/components/conversation/message-row.js.map +1 -0
  56. package/dist/components/conversation/thread-panel.d.ts +45 -0
  57. package/dist/components/conversation/thread-panel.d.ts.map +1 -0
  58. package/dist/components/conversation/thread-panel.js +123 -0
  59. package/dist/components/conversation/thread-panel.js.map +1 -0
  60. package/dist/components/layout/app-shell/app-shell.d.ts +45 -0
  61. package/dist/components/layout/app-shell/app-shell.d.ts.map +1 -0
  62. package/dist/components/layout/app-shell/app-shell.js +89 -0
  63. package/dist/components/layout/app-shell/app-shell.js.map +1 -0
  64. package/dist/components/layout/app-shell/index.d.ts +2 -0
  65. package/dist/components/layout/app-shell/index.d.ts.map +1 -0
  66. package/dist/components/layout/page/index.d.ts +2 -0
  67. package/dist/components/layout/page/index.d.ts.map +1 -0
  68. package/dist/components/layout/page/page.d.ts +31 -0
  69. package/dist/components/layout/page/page.d.ts.map +1 -0
  70. package/dist/components/layout/page/page.js +143 -0
  71. package/dist/components/layout/page/page.js.map +1 -0
  72. package/dist/components/layout/panel/index.d.ts +2 -0
  73. package/dist/components/layout/panel/index.d.ts.map +1 -0
  74. package/dist/components/layout/panel/panel.d.ts +44 -0
  75. package/dist/components/layout/panel/panel.d.ts.map +1 -0
  76. package/dist/components/layout/panel/panel.js +151 -0
  77. package/dist/components/layout/panel/panel.js.map +1 -0
  78. package/dist/components/layout/side-rail/index.d.ts +3 -0
  79. package/dist/components/layout/side-rail/index.d.ts.map +1 -0
  80. package/dist/components/layout/side-rail/side-rail-context.d.ts +23 -0
  81. package/dist/components/layout/side-rail/side-rail-context.d.ts.map +1 -0
  82. package/dist/components/layout/side-rail/side-rail-context.js +18 -0
  83. package/dist/components/layout/side-rail/side-rail-context.js.map +1 -0
  84. package/dist/components/layout/side-rail/side-rail.d.ts +101 -0
  85. package/dist/components/layout/side-rail/side-rail.d.ts.map +1 -0
  86. package/dist/components/layout/side-rail/side-rail.js +336 -0
  87. package/dist/components/layout/side-rail/side-rail.js.map +1 -0
  88. package/dist/components/layout/sidebar-nav/index.d.ts +2 -0
  89. package/dist/components/layout/sidebar-nav/index.d.ts.map +1 -0
  90. package/dist/components/layout/sidebar-nav/sidebar-nav.d.ts +62 -0
  91. package/dist/components/layout/sidebar-nav/sidebar-nav.d.ts.map +1 -0
  92. package/dist/components/layout/sidebar-nav/sidebar-nav.js +231 -0
  93. package/dist/components/layout/sidebar-nav/sidebar-nav.js.map +1 -0
  94. package/dist/components/layout/status-bar/index.d.ts +2 -0
  95. package/dist/components/layout/status-bar/index.d.ts.map +1 -0
  96. package/dist/components/layout/status-bar/status-bar.d.ts +23 -0
  97. package/dist/components/layout/status-bar/status-bar.d.ts.map +1 -0
  98. package/dist/components/layout/status-bar/status-bar.js +68 -0
  99. package/dist/components/layout/status-bar/status-bar.js.map +1 -0
  100. package/dist/components/layout/top-bar/index.d.ts +2 -0
  101. package/dist/components/layout/top-bar/index.d.ts.map +1 -0
  102. package/dist/components/layout/top-bar/top-bar.d.ts +59 -0
  103. package/dist/components/layout/top-bar/top-bar.d.ts.map +1 -0
  104. package/dist/components/layout/top-bar/top-bar.js +118 -0
  105. package/dist/components/layout/top-bar/top-bar.js.map +1 -0
  106. package/dist/components/motion/index.d.ts +3 -0
  107. package/dist/components/motion/index.d.ts.map +1 -0
  108. package/dist/components/motion/index.js +3 -0
  109. package/dist/components/motion/presence.d.ts +29 -0
  110. package/dist/components/motion/presence.d.ts.map +1 -0
  111. package/dist/components/motion/presence.js +10 -0
  112. package/dist/components/motion/presence.js.map +1 -0
  113. package/dist/components/theme/appearance-panel.d.ts +25 -0
  114. package/dist/components/theme/appearance-panel.d.ts.map +1 -0
  115. package/dist/components/theme/appearance-panel.js +162 -0
  116. package/dist/components/theme/appearance-panel.js.map +1 -0
  117. package/dist/components/theme/index.d.ts +5 -0
  118. package/dist/components/theme/index.d.ts.map +1 -0
  119. package/dist/components/theme/theme-picker.d.ts +54 -0
  120. package/dist/components/theme/theme-picker.d.ts.map +1 -0
  121. package/dist/components/theme/theme-picker.js +156 -0
  122. package/dist/components/theme/theme-picker.js.map +1 -0
  123. package/dist/components/theme/theme-provider.d.ts +130 -0
  124. package/dist/components/theme/theme-provider.d.ts.map +1 -0
  125. package/dist/components/theme/theme-provider.js +164 -0
  126. package/dist/components/theme/theme-provider.js.map +1 -0
  127. package/dist/components/theme/theme-toggle.d.ts +19 -0
  128. package/dist/components/theme/theme-toggle.d.ts.map +1 -0
  129. package/dist/components/theme/theme-toggle.js +69 -0
  130. package/dist/components/theme/theme-toggle.js.map +1 -0
  131. package/dist/components/ui/accordion/accordion.d.ts +18 -0
  132. package/dist/components/ui/accordion/accordion.d.ts.map +1 -0
  133. package/dist/components/ui/accordion/accordion.js +60 -0
  134. package/dist/components/ui/accordion/accordion.js.map +1 -0
  135. package/dist/components/ui/accordion/index.d.ts +2 -0
  136. package/dist/components/ui/accordion/index.d.ts.map +1 -0
  137. package/dist/components/ui/alert/alert.d.ts +26 -0
  138. package/dist/components/ui/alert/alert.d.ts.map +1 -0
  139. package/dist/components/ui/alert/alert.js +89 -0
  140. package/dist/components/ui/alert/alert.js.map +1 -0
  141. package/dist/components/ui/alert/index.d.ts +2 -0
  142. package/dist/components/ui/alert/index.d.ts.map +1 -0
  143. package/dist/components/ui/alert-dialog/alert-dialog.d.ts +29 -0
  144. package/dist/components/ui/alert-dialog/alert-dialog.d.ts.map +1 -0
  145. package/dist/components/ui/alert-dialog/alert-dialog.js +155 -0
  146. package/dist/components/ui/alert-dialog/alert-dialog.js.map +1 -0
  147. package/dist/components/ui/alert-dialog/index.d.ts +2 -0
  148. package/dist/components/ui/alert-dialog/index.d.ts.map +1 -0
  149. package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts +22 -0
  150. package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts.map +1 -0
  151. package/dist/components/ui/aspect-ratio/aspect-ratio.js +29 -0
  152. package/dist/components/ui/aspect-ratio/aspect-ratio.js.map +1 -0
  153. package/dist/components/ui/aspect-ratio/index.d.ts +2 -0
  154. package/dist/components/ui/aspect-ratio/index.d.ts.map +1 -0
  155. package/dist/components/ui/avatar/avatar.d.ts +41 -0
  156. package/dist/components/ui/avatar/avatar.d.ts.map +1 -0
  157. package/dist/components/ui/avatar/avatar.js +106 -0
  158. package/dist/components/ui/avatar/avatar.js.map +1 -0
  159. package/dist/components/ui/avatar/index.d.ts +2 -0
  160. package/dist/components/ui/avatar/index.d.ts.map +1 -0
  161. package/dist/components/ui/badge/badge.d.ts +22 -0
  162. package/dist/components/ui/badge/badge.d.ts.map +1 -0
  163. package/dist/components/ui/badge/badge.js +58 -0
  164. package/dist/components/ui/badge/badge.js.map +1 -0
  165. package/dist/components/ui/badge/index.d.ts +2 -0
  166. package/dist/components/ui/badge/index.d.ts.map +1 -0
  167. package/dist/components/ui/board/board.d.ts +78 -0
  168. package/dist/components/ui/board/board.d.ts.map +1 -0
  169. package/dist/components/ui/board/board.js +200 -0
  170. package/dist/components/ui/board/board.js.map +1 -0
  171. package/dist/components/ui/board/index.d.ts +2 -0
  172. package/dist/components/ui/board/index.d.ts.map +1 -0
  173. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +24 -0
  174. package/dist/components/ui/breadcrumb/breadcrumb.d.ts.map +1 -0
  175. package/dist/components/ui/breadcrumb/breadcrumb.js +109 -0
  176. package/dist/components/ui/breadcrumb/breadcrumb.js.map +1 -0
  177. package/dist/components/ui/breadcrumb/index.d.ts +2 -0
  178. package/dist/components/ui/breadcrumb/index.d.ts.map +1 -0
  179. package/dist/components/ui/button/button.d.ts +30 -0
  180. package/dist/components/ui/button/button.d.ts.map +1 -0
  181. package/dist/components/ui/button/button.js +80 -0
  182. package/dist/components/ui/button/button.js.map +1 -0
  183. package/dist/components/ui/button/index.d.ts +2 -0
  184. package/dist/components/ui/button/index.d.ts.map +1 -0
  185. package/dist/components/ui/button-group/button-group.d.ts +39 -0
  186. package/dist/components/ui/button-group/button-group.d.ts.map +1 -0
  187. package/dist/components/ui/button-group/button-group.js +63 -0
  188. package/dist/components/ui/button-group/button-group.js.map +1 -0
  189. package/dist/components/ui/button-group/index.d.ts +2 -0
  190. package/dist/components/ui/button-group/index.d.ts.map +1 -0
  191. package/dist/components/ui/calendar/calendar.d.ts +93 -0
  192. package/dist/components/ui/calendar/calendar.d.ts.map +1 -0
  193. package/dist/components/ui/calendar/calendar.js +243 -0
  194. package/dist/components/ui/calendar/calendar.js.map +1 -0
  195. package/dist/components/ui/calendar/index.d.ts +2 -0
  196. package/dist/components/ui/calendar/index.d.ts.map +1 -0
  197. package/dist/components/ui/card/card.d.ts +23 -0
  198. package/dist/components/ui/card/card.d.ts.map +1 -0
  199. package/dist/components/ui/card/card.js +98 -0
  200. package/dist/components/ui/card/card.js.map +1 -0
  201. package/dist/components/ui/card/index.d.ts +2 -0
  202. package/dist/components/ui/card/index.d.ts.map +1 -0
  203. package/dist/components/ui/carousel/carousel.d.ts +66 -0
  204. package/dist/components/ui/carousel/carousel.d.ts.map +1 -0
  205. package/dist/components/ui/carousel/carousel.js +178 -0
  206. package/dist/components/ui/carousel/carousel.js.map +1 -0
  207. package/dist/components/ui/carousel/index.d.ts +2 -0
  208. package/dist/components/ui/carousel/index.d.ts.map +1 -0
  209. package/dist/components/ui/chart/chart.d.ts +154 -0
  210. package/dist/components/ui/chart/chart.d.ts.map +1 -0
  211. package/dist/components/ui/chart/chart.js +373 -0
  212. package/dist/components/ui/chart/chart.js.map +1 -0
  213. package/dist/components/ui/chart/index.d.ts +2 -0
  214. package/dist/components/ui/chart/index.d.ts.map +1 -0
  215. package/dist/components/ui/checkbox/checkbox.d.ts +33 -0
  216. package/dist/components/ui/checkbox/checkbox.d.ts.map +1 -0
  217. package/dist/components/ui/checkbox/checkbox.js +76 -0
  218. package/dist/components/ui/checkbox/checkbox.js.map +1 -0
  219. package/dist/components/ui/checkbox/index.d.ts +2 -0
  220. package/dist/components/ui/checkbox/index.d.ts.map +1 -0
  221. package/dist/components/ui/code-block/code-block.d.ts +75 -0
  222. package/dist/components/ui/code-block/code-block.d.ts.map +1 -0
  223. package/dist/components/ui/code-block/code-block.js +186 -0
  224. package/dist/components/ui/code-block/code-block.js.map +1 -0
  225. package/dist/components/ui/code-block/index.d.ts +2 -0
  226. package/dist/components/ui/code-block/index.d.ts.map +1 -0
  227. package/dist/components/ui/collapsible/collapsible.d.ts +17 -0
  228. package/dist/components/ui/collapsible/collapsible.d.ts.map +1 -0
  229. package/dist/components/ui/collapsible/collapsible.js +38 -0
  230. package/dist/components/ui/collapsible/collapsible.js.map +1 -0
  231. package/dist/components/ui/collapsible/index.d.ts +2 -0
  232. package/dist/components/ui/collapsible/index.d.ts.map +1 -0
  233. package/dist/components/ui/combobox/combobox.d.ts +28 -0
  234. package/dist/components/ui/combobox/combobox.d.ts.map +1 -0
  235. package/dist/components/ui/combobox/combobox.js +102 -0
  236. package/dist/components/ui/combobox/combobox.js.map +1 -0
  237. package/dist/components/ui/combobox/index.d.ts +2 -0
  238. package/dist/components/ui/combobox/index.d.ts.map +1 -0
  239. package/dist/components/ui/command/command.d.ts +53 -0
  240. package/dist/components/ui/command/command.d.ts.map +1 -0
  241. package/dist/components/ui/command/command.js +137 -0
  242. package/dist/components/ui/command/command.js.map +1 -0
  243. package/dist/components/ui/command/index.d.ts +2 -0
  244. package/dist/components/ui/command/index.d.ts.map +1 -0
  245. package/dist/components/ui/context-menu/context-menu.d.ts +32 -0
  246. package/dist/components/ui/context-menu/context-menu.d.ts.map +1 -0
  247. package/dist/components/ui/context-menu/context-menu.js +119 -0
  248. package/dist/components/ui/context-menu/context-menu.js.map +1 -0
  249. package/dist/components/ui/context-menu/index.d.ts +2 -0
  250. package/dist/components/ui/context-menu/index.d.ts.map +1 -0
  251. package/dist/components/ui/detail-panel/detail-panel.d.ts +61 -0
  252. package/dist/components/ui/detail-panel/detail-panel.d.ts.map +1 -0
  253. package/dist/components/ui/detail-panel/detail-panel.js +132 -0
  254. package/dist/components/ui/detail-panel/detail-panel.js.map +1 -0
  255. package/dist/components/ui/detail-panel/index.d.ts +2 -0
  256. package/dist/components/ui/detail-panel/index.d.ts.map +1 -0
  257. package/dist/components/ui/dialog/dialog.d.ts +40 -0
  258. package/dist/components/ui/dialog/dialog.d.ts.map +1 -0
  259. package/dist/components/ui/dialog/dialog.js +125 -0
  260. package/dist/components/ui/dialog/dialog.js.map +1 -0
  261. package/dist/components/ui/dialog/index.d.ts +2 -0
  262. package/dist/components/ui/dialog/index.d.ts.map +1 -0
  263. package/dist/components/ui/diff-block/diff-block.d.ts +95 -0
  264. package/dist/components/ui/diff-block/diff-block.d.ts.map +1 -0
  265. package/dist/components/ui/diff-block/diff-block.js +230 -0
  266. package/dist/components/ui/diff-block/diff-block.js.map +1 -0
  267. package/dist/components/ui/diff-block/diff-block.test.d.ts +2 -0
  268. package/dist/components/ui/diff-block/diff-block.test.d.ts.map +1 -0
  269. package/dist/components/ui/diff-block/index.d.ts +2 -0
  270. package/dist/components/ui/diff-block/index.d.ts.map +1 -0
  271. package/dist/components/ui/drawer/drawer.d.ts +39 -0
  272. package/dist/components/ui/drawer/drawer.d.ts.map +1 -0
  273. package/dist/components/ui/drawer/drawer.js +106 -0
  274. package/dist/components/ui/drawer/drawer.js.map +1 -0
  275. package/dist/components/ui/drawer/index.d.ts +2 -0
  276. package/dist/components/ui/drawer/index.d.ts.map +1 -0
  277. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +48 -0
  278. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts.map +1 -0
  279. package/dist/components/ui/dropdown-menu/dropdown-menu.js +151 -0
  280. package/dist/components/ui/dropdown-menu/dropdown-menu.js.map +1 -0
  281. package/dist/components/ui/dropdown-menu/index.d.ts +2 -0
  282. package/dist/components/ui/dropdown-menu/index.d.ts.map +1 -0
  283. package/dist/components/ui/empty/empty.d.ts +27 -0
  284. package/dist/components/ui/empty/empty.d.ts.map +1 -0
  285. package/dist/components/ui/{empty.js → empty/empty.js} +28 -23
  286. package/dist/components/ui/empty/empty.js.map +1 -0
  287. package/dist/components/ui/empty/index.d.ts +2 -0
  288. package/dist/components/ui/empty/index.d.ts.map +1 -0
  289. package/dist/components/ui/entity-icon/entity-icon.d.ts +59 -0
  290. package/dist/components/ui/entity-icon/entity-icon.d.ts.map +1 -0
  291. package/dist/components/ui/entity-icon/entity-icon.js +145 -0
  292. package/dist/components/ui/entity-icon/entity-icon.js.map +1 -0
  293. package/dist/components/ui/entity-icon/index.d.ts +2 -0
  294. package/dist/components/ui/entity-icon/index.d.ts.map +1 -0
  295. package/dist/components/ui/field/field.d.ts +39 -0
  296. package/dist/components/ui/field/field.d.ts.map +1 -0
  297. package/dist/components/ui/field/field.js +111 -0
  298. package/dist/components/ui/field/field.js.map +1 -0
  299. package/dist/components/ui/field/index.d.ts +2 -0
  300. package/dist/components/ui/field/index.d.ts.map +1 -0
  301. package/dist/components/ui/hover-card/hover-card.d.ts +17 -0
  302. package/dist/components/ui/hover-card/hover-card.d.ts.map +1 -0
  303. package/dist/components/ui/hover-card/hover-card.js +40 -0
  304. package/dist/components/ui/hover-card/hover-card.js.map +1 -0
  305. package/dist/components/ui/hover-card/index.d.ts +2 -0
  306. package/dist/components/ui/hover-card/index.d.ts.map +1 -0
  307. package/dist/components/ui/input/index.d.ts +2 -0
  308. package/dist/components/ui/input/index.d.ts.map +1 -0
  309. package/dist/components/ui/input/input.d.ts +15 -0
  310. package/dist/components/ui/input/input.d.ts.map +1 -0
  311. package/dist/components/ui/input/input.js +36 -0
  312. package/dist/components/ui/input/input.js.map +1 -0
  313. package/dist/components/ui/input-group/index.d.ts +2 -0
  314. package/dist/components/ui/input-group/index.d.ts.map +1 -0
  315. package/dist/components/ui/input-group/input-group.d.ts +34 -0
  316. package/dist/components/ui/input-group/input-group.d.ts.map +1 -0
  317. package/dist/components/ui/input-group/input-group.js +93 -0
  318. package/dist/components/ui/input-group/input-group.js.map +1 -0
  319. package/dist/components/ui/input-otp/index.d.ts +2 -0
  320. package/dist/components/ui/input-otp/index.d.ts.map +1 -0
  321. package/dist/components/ui/input-otp/input-otp.d.ts +37 -0
  322. package/dist/components/ui/input-otp/input-otp.d.ts.map +1 -0
  323. package/dist/components/ui/input-otp/input-otp.js +92 -0
  324. package/dist/components/ui/input-otp/input-otp.js.map +1 -0
  325. package/dist/components/ui/item/index.d.ts +2 -0
  326. package/dist/components/ui/item/index.d.ts.map +1 -0
  327. package/dist/components/ui/item/item.d.ts +49 -0
  328. package/dist/components/ui/item/item.d.ts.map +1 -0
  329. package/dist/components/ui/item/item.js +163 -0
  330. package/dist/components/ui/item/item.js.map +1 -0
  331. package/dist/components/ui/kbd/index.d.ts +2 -0
  332. package/dist/components/ui/kbd/index.d.ts.map +1 -0
  333. package/dist/components/ui/kbd/kbd.d.ts +14 -0
  334. package/dist/components/ui/kbd/kbd.d.ts.map +1 -0
  335. package/dist/components/ui/kbd/kbd.js +40 -0
  336. package/dist/components/ui/kbd/kbd.js.map +1 -0
  337. package/dist/components/ui/label/index.d.ts +2 -0
  338. package/dist/components/ui/label/index.d.ts.map +1 -0
  339. package/dist/components/ui/label/label.d.ts +17 -0
  340. package/dist/components/ui/label/label.d.ts.map +1 -0
  341. package/dist/components/ui/label/label.js +33 -0
  342. package/dist/components/ui/label/label.js.map +1 -0
  343. package/dist/components/ui/menubar/index.d.ts +2 -0
  344. package/dist/components/ui/menubar/index.d.ts.map +1 -0
  345. package/dist/components/ui/menubar/menubar.d.ts +38 -0
  346. package/dist/components/ui/menubar/menubar.d.ts.map +1 -0
  347. package/dist/components/ui/menubar/menubar.js +138 -0
  348. package/dist/components/ui/menubar/menubar.js.map +1 -0
  349. package/dist/components/ui/modal-dialog/index.d.ts +2 -0
  350. package/dist/components/ui/modal-dialog/index.d.ts.map +1 -0
  351. package/dist/components/ui/modal-dialog/modal-dialog.d.ts +35 -0
  352. package/dist/components/ui/modal-dialog/modal-dialog.d.ts.map +1 -0
  353. package/dist/components/ui/modal-dialog/modal-dialog.js +78 -0
  354. package/dist/components/ui/modal-dialog/modal-dialog.js.map +1 -0
  355. package/dist/components/ui/navigation-menu/index.d.ts +2 -0
  356. package/dist/components/ui/navigation-menu/index.d.ts.map +1 -0
  357. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +77 -0
  358. package/dist/components/ui/navigation-menu/navigation-menu.d.ts.map +1 -0
  359. package/dist/components/ui/navigation-menu/navigation-menu.js +116 -0
  360. package/dist/components/ui/navigation-menu/navigation-menu.js.map +1 -0
  361. package/dist/components/ui/pagination/index.d.ts +2 -0
  362. package/dist/components/ui/pagination/index.d.ts.map +1 -0
  363. package/dist/components/ui/pagination/pagination.d.ts +33 -0
  364. package/dist/components/ui/pagination/pagination.d.ts.map +1 -0
  365. package/dist/components/ui/pagination/pagination.js +92 -0
  366. package/dist/components/ui/pagination/pagination.js.map +1 -0
  367. package/dist/components/ui/popover/index.d.ts +2 -0
  368. package/dist/components/ui/popover/index.d.ts.map +1 -0
  369. package/dist/components/ui/popover/popover.d.ts +26 -0
  370. package/dist/components/ui/popover/popover.d.ts.map +1 -0
  371. package/dist/components/ui/popover/popover.js +66 -0
  372. package/dist/components/ui/popover/popover.js.map +1 -0
  373. package/dist/components/ui/progress/index.d.ts +2 -0
  374. package/dist/components/ui/progress/index.d.ts.map +1 -0
  375. package/dist/components/ui/progress/progress.d.ts +29 -0
  376. package/dist/components/ui/progress/progress.d.ts.map +1 -0
  377. package/dist/components/ui/progress/progress.js +53 -0
  378. package/dist/components/ui/progress/progress.js.map +1 -0
  379. package/dist/components/ui/radio-group/index.d.ts +2 -0
  380. package/dist/components/ui/radio-group/index.d.ts.map +1 -0
  381. package/dist/components/ui/radio-group/radio-group.d.ts +26 -0
  382. package/dist/components/ui/radio-group/radio-group.d.ts.map +1 -0
  383. package/dist/components/ui/radio-group/radio-group.js +77 -0
  384. package/dist/components/ui/radio-group/radio-group.js.map +1 -0
  385. package/dist/components/ui/resizable/index.d.ts +2 -0
  386. package/dist/components/ui/resizable/index.d.ts.map +1 -0
  387. package/dist/components/ui/resizable/resizable.d.ts +33 -0
  388. package/dist/components/ui/resizable/resizable.d.ts.map +1 -0
  389. package/dist/components/ui/resizable/resizable.js +57 -0
  390. package/dist/components/ui/resizable/resizable.js.map +1 -0
  391. package/dist/components/ui/scroll-area/index.d.ts +2 -0
  392. package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
  393. package/dist/components/ui/scroll-area/scroll-area.d.ts +26 -0
  394. package/dist/components/ui/scroll-area/scroll-area.d.ts.map +1 -0
  395. package/dist/components/ui/scroll-area/scroll-area.js +36 -0
  396. package/dist/components/ui/scroll-area/scroll-area.js.map +1 -0
  397. package/dist/components/ui/select/index.d.ts +2 -0
  398. package/dist/components/ui/select/index.d.ts.map +1 -0
  399. package/dist/components/ui/select/select.d.ts +63 -0
  400. package/dist/components/ui/select/select.d.ts.map +1 -0
  401. package/dist/components/ui/select/select.js +142 -0
  402. package/dist/components/ui/select/select.js.map +1 -0
  403. package/dist/components/ui/separator/index.d.ts +2 -0
  404. package/dist/components/ui/separator/index.d.ts.map +1 -0
  405. package/dist/components/ui/separator/separator.d.ts +17 -0
  406. package/dist/components/ui/separator/separator.d.ts.map +1 -0
  407. package/dist/components/ui/separator/separator.js +24 -0
  408. package/dist/components/ui/separator/separator.js.map +1 -0
  409. package/dist/components/ui/sheet/index.d.ts +2 -0
  410. package/dist/components/ui/sheet/index.d.ts.map +1 -0
  411. package/dist/components/ui/sheet/sheet.d.ts +32 -0
  412. package/dist/components/ui/sheet/sheet.d.ts.map +1 -0
  413. package/dist/components/ui/sheet/sheet.js +118 -0
  414. package/dist/components/ui/sheet/sheet.js.map +1 -0
  415. package/dist/components/ui/skeleton/index.d.ts +2 -0
  416. package/dist/components/ui/skeleton/index.d.ts.map +1 -0
  417. package/dist/components/ui/skeleton/skeleton.d.ts +15 -0
  418. package/dist/components/ui/skeleton/skeleton.d.ts.map +1 -0
  419. package/dist/components/ui/skeleton/skeleton.js +31 -0
  420. package/dist/components/ui/skeleton/skeleton.js.map +1 -0
  421. package/dist/components/ui/slider/index.d.ts +2 -0
  422. package/dist/components/ui/slider/index.d.ts.map +1 -0
  423. package/dist/components/ui/slider/slider.d.ts +22 -0
  424. package/dist/components/ui/slider/slider.d.ts.map +1 -0
  425. package/dist/components/ui/slider/slider.js +59 -0
  426. package/dist/components/ui/slider/slider.js.map +1 -0
  427. package/dist/components/ui/spinner/index.d.ts +2 -0
  428. package/dist/components/ui/spinner/index.d.ts.map +1 -0
  429. package/dist/components/ui/spinner/spinner.d.ts +25 -0
  430. package/dist/components/ui/spinner/spinner.d.ts.map +1 -0
  431. package/dist/components/ui/spinner/spinner.js +57 -0
  432. package/dist/components/ui/spinner/spinner.js.map +1 -0
  433. package/dist/components/ui/status-chip/index.d.ts +2 -0
  434. package/dist/components/ui/status-chip/index.d.ts.map +1 -0
  435. package/dist/components/ui/status-chip/status-chip.d.ts +70 -0
  436. package/dist/components/ui/status-chip/status-chip.d.ts.map +1 -0
  437. package/dist/components/ui/status-chip/status-chip.js +140 -0
  438. package/dist/components/ui/status-chip/status-chip.js.map +1 -0
  439. package/dist/components/ui/switch/index.d.ts +2 -0
  440. package/dist/components/ui/switch/index.d.ts.map +1 -0
  441. package/dist/components/ui/switch/switch.d.ts +36 -0
  442. package/dist/components/ui/switch/switch.d.ts.map +1 -0
  443. package/dist/components/ui/switch/switch.js +74 -0
  444. package/dist/components/ui/switch/switch.js.map +1 -0
  445. package/dist/components/ui/table/index.d.ts +2 -0
  446. package/dist/components/ui/table/index.d.ts.map +1 -0
  447. package/dist/components/ui/table/table.d.ts +29 -0
  448. package/dist/components/ui/table/table.d.ts.map +1 -0
  449. package/dist/components/ui/table/table.js +129 -0
  450. package/dist/components/ui/table/table.js.map +1 -0
  451. package/dist/components/ui/tabs/index.d.ts +2 -0
  452. package/dist/components/ui/tabs/index.d.ts.map +1 -0
  453. package/dist/components/ui/tabs/tabs.d.ts +23 -0
  454. package/dist/components/ui/tabs/tabs.d.ts.map +1 -0
  455. package/dist/components/ui/tabs/tabs.js +43 -0
  456. package/dist/components/ui/tabs/tabs.js.map +1 -0
  457. package/dist/components/ui/textarea/index.d.ts +2 -0
  458. package/dist/components/ui/textarea/index.d.ts.map +1 -0
  459. package/dist/components/ui/textarea/textarea.d.ts +14 -0
  460. package/dist/components/ui/textarea/textarea.d.ts.map +1 -0
  461. package/dist/components/ui/textarea/textarea.js +30 -0
  462. package/dist/components/ui/textarea/textarea.js.map +1 -0
  463. package/dist/components/ui/toast/index.d.ts +2 -0
  464. package/dist/components/ui/toast/index.d.ts.map +1 -0
  465. package/dist/components/ui/toast/toast.d.ts +68 -0
  466. package/dist/components/ui/toast/toast.d.ts.map +1 -0
  467. package/dist/components/ui/toast/toast.js +186 -0
  468. package/dist/components/ui/toast/toast.js.map +1 -0
  469. package/dist/components/ui/toggle/index.d.ts +2 -0
  470. package/dist/components/ui/toggle/index.d.ts.map +1 -0
  471. package/dist/components/ui/toggle/toggle.d.ts +22 -0
  472. package/dist/components/ui/toggle/toggle.d.ts.map +1 -0
  473. package/dist/components/ui/toggle/toggle.js +64 -0
  474. package/dist/components/ui/toggle/toggle.js.map +1 -0
  475. package/dist/components/ui/toggle-group/index.d.ts +2 -0
  476. package/dist/components/ui/toggle-group/index.d.ts.map +1 -0
  477. package/dist/components/ui/toggle-group/toggle-group.d.ts +35 -0
  478. package/dist/components/ui/toggle-group/toggle-group.d.ts.map +1 -0
  479. package/dist/components/ui/toggle-group/toggle-group.js +38 -0
  480. package/dist/components/ui/toggle-group/toggle-group.js.map +1 -0
  481. package/dist/components/ui/tooltip/index.d.ts +2 -0
  482. package/dist/components/ui/tooltip/index.d.ts.map +1 -0
  483. package/dist/components/ui/tooltip/tooltip.d.ts +18 -0
  484. package/dist/components/ui/tooltip/tooltip.d.ts.map +1 -0
  485. package/dist/components/ui/tooltip/tooltip.js +67 -0
  486. package/dist/components/ui/tooltip/tooltip.js.map +1 -0
  487. package/dist/index.d.ts +96 -19
  488. package/dist/index.d.ts.map +1 -0
  489. package/dist/index.js +90 -20
  490. package/dist/lib/keyed-rows.d.ts +36 -0
  491. package/dist/lib/keyed-rows.d.ts.map +1 -0
  492. package/dist/lib/keyed-rows.js +53 -0
  493. package/dist/lib/keyed-rows.js.map +1 -0
  494. package/dist/lib/keyed-rows.test.d.ts +2 -0
  495. package/dist/lib/keyed-rows.test.d.ts.map +1 -0
  496. package/dist/lib/overlay.d.ts +44 -0
  497. package/dist/lib/overlay.d.ts.map +1 -0
  498. package/dist/lib/overlay.js +57 -0
  499. package/dist/lib/overlay.js.map +1 -0
  500. package/dist/lib/themes.d.ts +197 -0
  501. package/dist/lib/themes.d.ts.map +1 -0
  502. package/dist/lib/themes.js +303 -0
  503. package/dist/lib/themes.js.map +1 -0
  504. package/dist/lib/tokens.d.ts +103 -0
  505. package/dist/lib/tokens.d.ts.map +1 -0
  506. package/dist/lib/tokens.js +805 -0
  507. package/dist/lib/tokens.js.map +1 -0
  508. package/dist/lib/utils.d.ts +27 -0
  509. package/dist/lib/utils.d.ts.map +1 -0
  510. package/dist/lib/utils.js +61 -3
  511. package/dist/lib/utils.js.map +1 -0
  512. package/dist/lib/variants.d.ts +57 -0
  513. package/dist/lib/variants.d.ts.map +1 -0
  514. package/dist/lib/variants.js +49 -0
  515. package/dist/lib/variants.js.map +1 -0
  516. package/dist/lib/version-notes.d.ts +24 -0
  517. package/dist/lib/version-notes.d.ts.map +1 -0
  518. package/dist/lib/version-notes.js +41 -1
  519. package/dist/lib/version-notes.js.map +1 -0
  520. package/dist/r/accordion.json +23 -0
  521. package/dist/r/account-menu.json +25 -0
  522. package/dist/r/alert-dialog.json +22 -0
  523. package/dist/r/alert.json +22 -0
  524. package/dist/r/app-shell.json +20 -0
  525. package/dist/r/aspect-ratio.json +20 -0
  526. package/dist/r/avatar.json +20 -0
  527. package/dist/r/badge.json +22 -0
  528. package/dist/r/board.json +20 -0
  529. package/dist/r/breadcrumb.json +22 -0
  530. package/dist/r/button-group.json +22 -0
  531. package/dist/r/button.json +22 -0
  532. package/dist/r/calendar.json +25 -0
  533. package/dist/r/card.json +20 -0
  534. package/dist/r/carousel.json +26 -0
  535. package/dist/r/chart.json +23 -0
  536. package/dist/r/checkbox.json +23 -0
  537. package/dist/r/code-block.json +24 -0
  538. package/dist/r/collapsible.json +22 -0
  539. package/dist/r/combobox.json +23 -0
  540. package/dist/r/command.json +23 -0
  541. package/dist/r/context-menu.json +23 -0
  542. package/dist/r/conversation.json +48 -0
  543. package/dist/r/detail-panel.json +24 -0
  544. package/dist/r/dialog.json +23 -0
  545. package/dist/r/diff-block.json +20 -0
  546. package/dist/r/drawer.json +22 -0
  547. package/dist/r/dropdown-menu.json +23 -0
  548. package/dist/r/empty.json +20 -0
  549. package/dist/r/entity-icon.json +20 -0
  550. package/dist/r/field.json +22 -0
  551. package/dist/r/hover-card.json +22 -0
  552. package/dist/r/input-group.json +20 -0
  553. package/dist/r/input-otp.json +22 -0
  554. package/dist/r/input.json +20 -0
  555. package/dist/r/item.json +20 -0
  556. package/dist/r/kbd.json +20 -0
  557. package/dist/r/label.json +20 -0
  558. package/dist/r/list-row.json +22 -0
  559. package/dist/r/menubar.json +23 -0
  560. package/dist/r/modal-dialog.json +22 -0
  561. package/dist/r/navigation-menu.json +23 -0
  562. package/dist/r/page.json +20 -0
  563. package/dist/r/pagination.json +23 -0
  564. package/dist/r/panel.json +20 -0
  565. package/dist/r/popover.json +22 -0
  566. package/dist/r/progress.json +22 -0
  567. package/dist/r/radio-group.json +23 -0
  568. package/dist/r/registry.json +1676 -0
  569. package/dist/r/resizable.json +23 -0
  570. package/dist/r/scroll-area.json +20 -0
  571. package/dist/r/select.json +23 -0
  572. package/dist/r/separator.json +22 -0
  573. package/dist/r/settings.json +20 -0
  574. package/dist/r/sheet.json +25 -0
  575. package/dist/r/side-rail.json +27 -0
  576. package/dist/r/sidebar-nav.json +23 -0
  577. package/dist/r/skeleton.json +20 -0
  578. package/dist/r/slider.json +22 -0
  579. package/dist/r/spinner.json +22 -0
  580. package/dist/r/stat.json +22 -0
  581. package/dist/r/status-bar.json +20 -0
  582. package/dist/r/status-chip.json +22 -0
  583. package/dist/r/switch.json +22 -0
  584. package/dist/r/table.json +20 -0
  585. package/dist/r/tabs.json +22 -0
  586. package/dist/r/textarea.json +20 -0
  587. package/dist/r/theme.json +36 -0
  588. package/dist/r/toast.json +23 -0
  589. package/dist/r/toggle-group.json +24 -0
  590. package/dist/r/toggle.json +22 -0
  591. package/dist/r/tooltip.json +22 -0
  592. package/dist/r/top-bar.json +20 -0
  593. package/dist/r/update-dialog.json +27 -0
  594. package/dist/r/workspace-mark.json +22 -0
  595. package/package.json +75 -21
  596. package/registry.json +1676 -0
  597. package/src/components/composites/account-menu/account-menu.tsx +150 -0
  598. package/src/components/composites/account-menu/index.ts +1 -0
  599. package/src/components/composites/list-row/index.ts +1 -0
  600. package/src/components/composites/list-row/list-row.tsx +116 -0
  601. package/src/components/composites/settings/index.ts +1 -0
  602. package/src/components/composites/settings/settings.tsx +142 -0
  603. package/src/components/composites/stat/index.ts +9 -0
  604. package/src/components/composites/stat/stat.tsx +155 -0
  605. package/src/components/composites/update-dialog/index.ts +7 -0
  606. package/src/components/composites/update-dialog/update-dialog.tsx +529 -0
  607. package/src/components/composites/workspace-mark/index.ts +1 -0
  608. package/src/components/composites/workspace-mark/workspace-mark.tsx +72 -0
  609. package/src/components/conversation/conversation-avatar.tsx +60 -0
  610. package/src/components/conversation/conversation-surface.tsx +107 -0
  611. package/src/components/conversation/index.ts +25 -0
  612. package/src/components/conversation/message-composer.tsx +239 -0
  613. package/src/components/conversation/message-row.tsx +387 -0
  614. package/src/components/conversation/thread-panel.tsx +141 -0
  615. package/src/components/layout/app-shell/app-shell.tsx +92 -0
  616. package/src/components/layout/app-shell/index.ts +1 -0
  617. package/src/components/layout/page/index.ts +9 -0
  618. package/src/components/layout/page/page.tsx +122 -0
  619. package/src/components/layout/panel/index.ts +12 -0
  620. package/src/components/layout/panel/panel.tsx +166 -0
  621. package/src/components/layout/side-rail/index.ts +12 -0
  622. package/src/components/layout/side-rail/side-rail-context.ts +42 -0
  623. package/src/components/layout/side-rail/side-rail.tsx +405 -0
  624. package/src/components/layout/sidebar-nav/index.ts +14 -0
  625. package/src/components/layout/sidebar-nav/sidebar-nav.tsx +244 -0
  626. package/src/components/layout/status-bar/index.ts +1 -0
  627. package/src/components/layout/status-bar/status-bar.tsx +73 -0
  628. package/src/components/layout/top-bar/index.ts +10 -0
  629. package/src/components/layout/top-bar/top-bar.tsx +166 -0
  630. package/src/components/motion/index.ts +2 -0
  631. package/src/components/motion/presence.tsx +32 -0
  632. package/src/components/theme/appearance-panel.tsx +179 -0
  633. package/src/components/theme/index.ts +22 -0
  634. package/src/components/theme/theme-picker.tsx +174 -0
  635. package/src/components/theme/theme-provider.tsx +309 -0
  636. package/src/components/theme/theme-toggle.tsx +64 -0
  637. package/src/components/ui/accordion/accordion.tsx +66 -0
  638. package/src/components/ui/accordion/index.ts +1 -0
  639. package/src/components/ui/alert/alert.tsx +95 -0
  640. package/src/components/ui/alert/index.ts +1 -0
  641. package/src/components/ui/alert-dialog/alert-dialog.tsx +176 -0
  642. package/src/components/ui/alert-dialog/index.ts +13 -0
  643. package/src/components/ui/aspect-ratio/aspect-ratio.tsx +38 -0
  644. package/src/components/ui/aspect-ratio/index.ts +1 -0
  645. package/src/components/ui/avatar/avatar.tsx +114 -0
  646. package/src/components/ui/avatar/index.ts +9 -0
  647. package/src/components/ui/badge/badge.tsx +59 -0
  648. package/src/components/ui/badge/index.ts +1 -0
  649. package/src/components/ui/board/board.tsx +254 -0
  650. package/src/components/ui/board/index.ts +10 -0
  651. package/src/components/ui/breadcrumb/breadcrumb.tsx +117 -0
  652. package/src/components/ui/breadcrumb/index.ts +9 -0
  653. package/src/components/ui/button/button.tsx +89 -0
  654. package/src/components/ui/button/index.ts +1 -0
  655. package/src/components/ui/button-group/button-group.tsx +92 -0
  656. package/src/components/ui/button-group/index.ts +6 -0
  657. package/src/components/ui/calendar/calendar.tsx +277 -0
  658. package/src/components/ui/calendar/index.ts +1 -0
  659. package/src/components/ui/card/card.tsx +82 -0
  660. package/src/components/ui/card/index.ts +10 -0
  661. package/src/components/ui/carousel/carousel.tsx +209 -0
  662. package/src/components/ui/carousel/index.ts +1 -0
  663. package/src/components/ui/chart/chart.tsx +413 -0
  664. package/src/components/ui/chart/index.ts +17 -0
  665. package/src/components/ui/checkbox/checkbox.tsx +99 -0
  666. package/src/components/ui/checkbox/index.ts +1 -0
  667. package/src/components/ui/code-block/code-block.tsx +238 -0
  668. package/src/components/ui/code-block/index.ts +1 -0
  669. package/src/components/ui/collapsible/collapsible.tsx +54 -0
  670. package/src/components/ui/collapsible/index.ts +1 -0
  671. package/src/components/ui/combobox/combobox.tsx +142 -0
  672. package/src/components/ui/combobox/index.ts +10 -0
  673. package/src/components/ui/command/command.tsx +214 -0
  674. package/src/components/ui/command/index.ts +12 -0
  675. package/src/components/ui/context-menu/context-menu.tsx +163 -0
  676. package/src/components/ui/context-menu/index.ts +15 -0
  677. package/src/components/ui/detail-panel/detail-panel.tsx +161 -0
  678. package/src/components/ui/detail-panel/index.ts +9 -0
  679. package/src/components/ui/dialog/dialog.tsx +138 -0
  680. package/src/components/ui/dialog/index.ts +14 -0
  681. package/src/components/ui/diff-block/diff-block.tsx +286 -0
  682. package/src/components/ui/diff-block/index.ts +11 -0
  683. package/src/components/ui/drawer/drawer.tsx +144 -0
  684. package/src/components/ui/drawer/index.ts +13 -0
  685. package/src/components/ui/dropdown-menu/dropdown-menu.tsx +203 -0
  686. package/src/components/ui/dropdown-menu/index.ts +18 -0
  687. package/src/components/ui/empty/empty.tsx +104 -0
  688. package/src/components/ui/empty/index.ts +10 -0
  689. package/src/components/ui/entity-icon/entity-icon.tsx +154 -0
  690. package/src/components/ui/entity-icon/index.ts +1 -0
  691. package/src/components/ui/field/field.tsx +131 -0
  692. package/src/components/ui/field/index.ts +11 -0
  693. package/src/components/ui/hover-card/hover-card.tsx +48 -0
  694. package/src/components/ui/hover-card/index.ts +1 -0
  695. package/src/components/ui/input/index.ts +1 -0
  696. package/src/components/ui/input/input.tsx +41 -0
  697. package/src/components/ui/input-group/index.ts +8 -0
  698. package/src/components/ui/input-group/input-group.tsx +111 -0
  699. package/src/components/ui/input-otp/index.ts +1 -0
  700. package/src/components/ui/input-otp/input-otp.tsx +108 -0
  701. package/src/components/ui/item/index.ts +10 -0
  702. package/src/components/ui/item/item.tsx +146 -0
  703. package/src/components/ui/kbd/index.ts +1 -0
  704. package/src/components/ui/kbd/kbd.tsx +42 -0
  705. package/src/components/ui/label/index.ts +1 -0
  706. package/src/components/ui/label/label.tsx +36 -0
  707. package/src/components/ui/menubar/index.ts +16 -0
  708. package/src/components/ui/menubar/menubar.tsx +190 -0
  709. package/src/components/ui/modal-dialog/index.ts +1 -0
  710. package/src/components/ui/modal-dialog/modal-dialog.tsx +95 -0
  711. package/src/components/ui/navigation-menu/index.ts +13 -0
  712. package/src/components/ui/navigation-menu/navigation-menu.tsx +229 -0
  713. package/src/components/ui/pagination/index.ts +8 -0
  714. package/src/components/ui/pagination/pagination.tsx +144 -0
  715. package/src/components/ui/popover/index.ts +10 -0
  716. package/src/components/ui/popover/popover.tsx +81 -0
  717. package/src/components/ui/progress/index.ts +1 -0
  718. package/src/components/ui/progress/progress.tsx +67 -0
  719. package/src/components/ui/radio-group/index.ts +1 -0
  720. package/src/components/ui/radio-group/radio-group.tsx +78 -0
  721. package/src/components/ui/resizable/index.ts +6 -0
  722. package/src/components/ui/resizable/resizable.tsx +74 -0
  723. package/src/components/ui/scroll-area/index.ts +1 -0
  724. package/src/components/ui/scroll-area/scroll-area.tsx +66 -0
  725. package/src/components/ui/select/index.ts +11 -0
  726. package/src/components/ui/select/select.tsx +188 -0
  727. package/src/components/ui/separator/index.ts +1 -0
  728. package/src/components/ui/separator/separator.tsx +40 -0
  729. package/src/components/ui/sheet/index.ts +13 -0
  730. package/src/components/ui/sheet/sheet.tsx +132 -0
  731. package/src/components/ui/skeleton/index.ts +1 -0
  732. package/src/components/ui/skeleton/skeleton.tsx +28 -0
  733. package/src/components/ui/slider/index.ts +1 -0
  734. package/src/components/ui/slider/slider.tsx +81 -0
  735. package/src/components/ui/spinner/index.ts +1 -0
  736. package/src/components/ui/spinner/spinner.tsx +58 -0
  737. package/src/components/ui/status-chip/index.ts +8 -0
  738. package/src/components/ui/status-chip/status-chip.tsx +142 -0
  739. package/src/components/ui/switch/index.ts +1 -0
  740. package/src/components/ui/switch/switch.tsx +100 -0
  741. package/src/components/ui/table/index.ts +11 -0
  742. package/src/components/ui/table/table.tsx +125 -0
  743. package/src/components/ui/tabs/index.ts +8 -0
  744. package/src/components/ui/tabs/tabs.tsx +77 -0
  745. package/src/components/ui/textarea/index.ts +1 -0
  746. package/src/components/ui/textarea/textarea.tsx +36 -0
  747. package/src/components/ui/toast/index.ts +1 -0
  748. package/src/components/ui/toast/toast.tsx +220 -0
  749. package/src/components/ui/toggle/index.ts +1 -0
  750. package/src/components/ui/toggle/toggle.tsx +60 -0
  751. package/src/components/ui/toggle-group/index.ts +6 -0
  752. package/src/components/ui/toggle-group/toggle-group.tsx +66 -0
  753. package/src/components/ui/tooltip/index.ts +9 -0
  754. package/src/components/ui/tooltip/tooltip.tsx +102 -0
  755. package/src/index.ts +154 -0
  756. package/src/lib/keyed-rows.ts +68 -0
  757. package/src/lib/overlay.ts +70 -0
  758. package/src/lib/themes.ts +490 -0
  759. package/src/lib/tokens.ts +688 -0
  760. package/src/lib/utils.ts +74 -4
  761. package/src/lib/variants.ts +62 -0
  762. package/src/lib/version-notes.ts +35 -0
  763. package/src/styles/base.css +489 -484
  764. package/src/styles/fonts.css +26 -0
  765. package/src/styles/globals.css +14 -3
  766. package/src/styles/theme.css +838 -229
  767. package/LICENSE +0 -201
  768. package/dist/components/account-drawer.d.ts +0 -11
  769. package/dist/components/account-drawer.js +0 -120
  770. package/dist/components/appearance.d.ts +0 -261
  771. package/dist/components/appearance.js +0 -802
  772. package/dist/components/on-screen-controls.d.ts +0 -8
  773. package/dist/components/on-screen-controls.js +0 -162
  774. package/dist/components/scene-settings.d.ts +0 -33
  775. package/dist/components/scene-settings.js +0 -253
  776. package/dist/components/theme-preview.d.ts +0 -40
  777. package/dist/components/theme-preview.js +0 -210
  778. package/dist/components/theme-provider.d.ts +0 -52
  779. package/dist/components/theme-provider.js +0 -128
  780. package/dist/components/theme-swatch.d.ts +0 -12
  781. package/dist/components/theme-swatch.js +0 -66
  782. package/dist/components/theme-toggle.d.ts +0 -7
  783. package/dist/components/theme-toggle.js +0 -64
  784. package/dist/components/ui/badge.d.ts +0 -8
  785. package/dist/components/ui/badge.js +0 -34
  786. package/dist/components/ui/button.d.ts +0 -9
  787. package/dist/components/ui/button.js +0 -52
  788. package/dist/components/ui/card.d.ts +0 -4
  789. package/dist/components/ui/card.js +0 -28
  790. package/dist/components/ui/dialog.d.ts +0 -15
  791. package/dist/components/ui/dialog.js +0 -104
  792. package/dist/components/ui/drawer.d.ts +0 -24
  793. package/dist/components/ui/drawer.js +0 -120
  794. package/dist/components/ui/dropdown-menu.d.ts +0 -35
  795. package/dist/components/ui/dropdown-menu.js +0 -180
  796. package/dist/components/ui/empty.d.ts +0 -12
  797. package/dist/components/ui/field.d.ts +0 -25
  798. package/dist/components/ui/field.js +0 -188
  799. package/dist/components/ui/input.d.ts +0 -3
  800. package/dist/components/ui/input.js +0 -22
  801. package/dist/components/ui/label.d.ts +0 -3
  802. package/dist/components/ui/label.js +0 -17
  803. package/dist/components/ui/radio-group.d.ts +0 -5
  804. package/dist/components/ui/radio-group.js +0 -39
  805. package/dist/components/ui/separator.d.ts +0 -7
  806. package/dist/components/ui/separator.js +0 -20
  807. package/dist/components/ui/skeleton.d.ts +0 -3
  808. package/dist/components/ui/skeleton.js +0 -17
  809. package/dist/components/ui/spinner.d.ts +0 -5
  810. package/dist/components/ui/spinner.js +0 -17
  811. package/dist/components/ui/switch.d.ts +0 -8
  812. package/dist/components/ui/switch.js +0 -59
  813. package/dist/components/ui/tabs.d.ts +0 -11
  814. package/dist/components/ui/tabs.js +0 -57
  815. package/dist/components/ui/toggle-group.d.ts +0 -13
  816. package/dist/components/ui/toggle-group.js +0 -95
  817. package/dist/components/ui/toggle.d.ts +0 -10
  818. package/dist/components/ui/toggle.js +0 -41
  819. package/dist/components/ui/tooltip.d.ts +0 -15
  820. package/dist/components/ui/tooltip.js +0 -55
  821. package/dist/components/version-dialog.d.ts +0 -25
  822. package/dist/components/version-dialog.js +0 -330
  823. package/dist/components/workspace-brand.d.ts +0 -5
  824. package/dist/components/workspace-brand.js +0 -13
  825. package/dist/components/workspace-logo.d.ts +0 -3
  826. package/dist/components/workspace-logo.js +0 -17
  827. package/src/components/account-drawer.tsx +0 -114
  828. package/src/components/appearance.ts +0 -1112
  829. package/src/components/on-screen-controls.tsx +0 -149
  830. package/src/components/scene-settings.tsx +0 -199
  831. package/src/components/theme-preview.tsx +0 -170
  832. package/src/components/theme-provider.tsx +0 -214
  833. package/src/components/theme-swatch.tsx +0 -49
  834. package/src/components/theme-toggle.tsx +0 -48
  835. package/src/components/ui/badge.tsx +0 -40
  836. package/src/components/ui/button.tsx +0 -58
  837. package/src/components/ui/card.tsx +0 -21
  838. package/src/components/ui/dialog.tsx +0 -132
  839. package/src/components/ui/drawer.tsx +0 -168
  840. package/src/components/ui/dropdown-menu.tsx +0 -235
  841. package/src/components/ui/empty.tsx +0 -97
  842. package/src/components/ui/field.tsx +0 -220
  843. package/src/components/ui/input.tsx +0 -20
  844. package/src/components/ui/label.tsx +0 -19
  845. package/src/components/ui/radio-group.tsx +0 -41
  846. package/src/components/ui/separator.tsx +0 -28
  847. package/src/components/ui/skeleton.tsx +0 -16
  848. package/src/components/ui/spinner.tsx +0 -20
  849. package/src/components/ui/switch.tsx +0 -59
  850. package/src/components/ui/tabs.tsx +0 -76
  851. package/src/components/ui/toggle-group.tsx +0 -98
  852. package/src/components/ui/toggle.tsx +0 -42
  853. package/src/components/ui/tooltip.tsx +0 -61
  854. package/src/components/version-dialog.tsx +0 -368
  855. package/src/components/workspace-brand.tsx +0 -18
  856. package/src/components/workspace-logo.tsx +0 -21
  857. package/src/index.tsx +0 -53
  858. package/src/styles/auth-shell.css +0 -167
  859. package/src/styles/conventional-workspace.css +0 -2858
  860. package/src/styles/dev-view.css +0 -899
  861. package/src/styles/workspace-shell.css +0 -82
  862. package/tsconfig.json +0 -11
@@ -0,0 +1,73 @@
1
+ import type { ComponentProps } from 'solid-js'
2
+ import { splitProps } from 'solid-js'
3
+ import { cn } from '#lib/utils'
4
+
5
+ /**
6
+ * StatusBar.
7
+ *
8
+ * The thin strip pinned to the bottom of the window. Its purpose is to hold
9
+ * *ambient* facts the user checks without acting: connection state, branch,
10
+ * counts, the current mode. Anything interactive belongs in the top bar or a
11
+ * pane — a status bar is read, not operated, and a control here is one the user
12
+ * will not find.
13
+ *
14
+ * Height comes from `--statusbar-height`, so a pane's bottom padding can
15
+ * reserve it without a magic number.
16
+ */
17
+ export function StatusBar(props: ComponentProps<'footer'>) {
18
+ const [local, rest] = splitProps(props, ['class'])
19
+
20
+ return (
21
+ <footer
22
+ data-slot="status-bar"
23
+ class={cn(
24
+ 'text-muted-foreground flex h-statusbar shrink-0 items-center gap-3 border-t border-border px-3 text-2xs',
25
+ local.class
26
+ )}
27
+ {...rest}
28
+ />
29
+ )
30
+ }
31
+
32
+ /** A single readout. `tone` carries meaning; it is not decoration. */
33
+ export function StatusBarItem(
34
+ props: ComponentProps<'span'> & {
35
+ tone?: 'default' | 'success' | 'warning' | 'destructive'
36
+ /** Draw a leading state dot, e.g. for a connection. */
37
+ dot?: boolean
38
+ }
39
+ ) {
40
+ const [local, rest] = splitProps(props, ['class', 'tone', 'dot', 'children'])
41
+
42
+ return (
43
+ <span
44
+ data-slot="status-bar-item"
45
+ class={cn(
46
+ 'inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap [&_svg]:size-3 [&_svg]:shrink-0',
47
+ {
48
+ 'text-muted-foreground': local.tone === undefined || local.tone === 'default',
49
+ 'text-success': local.tone === 'success',
50
+ 'text-warning': local.tone === 'warning',
51
+ 'text-destructive': local.tone === 'destructive',
52
+ },
53
+ local.class
54
+ )}
55
+ {...rest}
56
+ >
57
+ {local.dot ? (
58
+ <span
59
+ aria-hidden="true"
60
+ class={cn('size-1.5 shrink-0 rounded-full bg-current', {
61
+ 'animate-pulse': local.tone === 'warning',
62
+ })}
63
+ />
64
+ ) : null}
65
+ {local.children}
66
+ </span>
67
+ )
68
+ }
69
+
70
+ /** Pushes everything after it to the trailing edge. */
71
+ export function StatusBarSpacer() {
72
+ return <span aria-hidden="true" class="flex-1" />
73
+ }
@@ -0,0 +1,10 @@
1
+ export {
2
+ TopBar,
3
+ TopBarBreadcrumb,
4
+ TopBarPill,
5
+ TopBarSearch,
6
+ TopBarSection,
7
+ TopBarTitle,
8
+ type TopBarProps,
9
+ type TopBarSearchProps,
10
+ } from './top-bar'
@@ -0,0 +1,166 @@
1
+ import type { ComponentProps } from 'solid-js'
2
+ import { Show, splitProps } from 'solid-js'
3
+ import { cn } from '#lib/utils'
4
+
5
+ /**
6
+ * TopBar.
7
+ *
8
+ * The window's title row and primary toolbar. Three tracks: a leading group, a
9
+ * centred search, and a trailing group. The search is a fixed function of the
10
+ * window width and the two side groups are equal remainders, which is what
11
+ * makes the search *exactly* window-centred by construction — no measurement,
12
+ * no observer, no absolutely-positioned overlay to keep clear of.
13
+ *
14
+ * On a frameless desktop window this row is also the drag region, so it carries
15
+ * `window-drag` and the controls inside it opt back out. `macos-inset` and
16
+ * `windows-inset` reserve the space the native window controls occupy, which is
17
+ * why the row can look off-centre in a frameless window and be correct: it is
18
+ * centred in the space the user can actually see.
19
+ */
20
+ export type TopBarProps = ComponentProps<'header'> & {
21
+ /** Make the row draggable, for a frameless window. */
22
+ draggable?: boolean
23
+ /** Reserve space for the macOS traffic lights. */
24
+ macosInset?: boolean
25
+ /** Reserve space for the Windows caption buttons. */
26
+ windowsInset?: boolean
27
+ /** Blur the content scrolling under the bar. */
28
+ glass?: boolean
29
+ }
30
+
31
+ export function TopBar(props: TopBarProps) {
32
+ const [local, rest] = splitProps(props, [
33
+ 'class',
34
+ 'draggable',
35
+ 'macosInset',
36
+ 'windowsInset',
37
+ 'glass',
38
+ ])
39
+
40
+ return (
41
+ <header
42
+ data-slot="top-bar"
43
+ class={cn(
44
+ 'h-topbar relative z-(--z-sticky) grid shrink-0 grid-cols-[minmax(0,1fr)_clamp(240px,22vw,480px)_minmax(0,1fr)] items-center gap-3 border-b border-border px-3',
45
+ local.glass && 'glass-panel',
46
+ local.draggable && 'window-drag',
47
+ local.macosInset && 'window-inset-macos',
48
+ local.windowsInset && 'window-inset-windows',
49
+ local.class
50
+ )}
51
+ {...rest}
52
+ />
53
+ )
54
+ }
55
+
56
+ /** A side group. Both sides are equal remainders, which centres the search. */
57
+ export function TopBarSection(props: ComponentProps<'div'> & { align?: 'start' | 'end' }) {
58
+ const [local, rest] = splitProps(props, ['class', 'align'])
59
+
60
+ return (
61
+ <div
62
+ data-slot="top-bar-section"
63
+ class={cn(
64
+ 'flex min-w-0 items-center gap-2 overflow-hidden',
65
+ local.align === 'end' && 'justify-end',
66
+ local.align !== 'end' && 'justify-start',
67
+ local.class
68
+ )}
69
+ {...rest}
70
+ />
71
+ )
72
+ }
73
+
74
+ export function TopBarTitle(props: ComponentProps<'div'>) {
75
+ const [local, rest] = splitProps(props, ['class'])
76
+ return (
77
+ <div
78
+ data-slot="top-bar-title"
79
+ class={cn('truncate text-sm font-medium', local.class)}
80
+ {...rest}
81
+ />
82
+ )
83
+ }
84
+
85
+ /** A breadcrumb or path readout that yields to the actions when space runs out. */
86
+ export function TopBarBreadcrumb(props: ComponentProps<'div'>) {
87
+ const [local, rest] = splitProps(props, ['class'])
88
+ return (
89
+ <div
90
+ data-slot="top-bar-breadcrumb"
91
+ class={cn('flex min-w-0 items-center gap-1.5 text-sm', local.class)}
92
+ {...rest}
93
+ />
94
+ )
95
+ }
96
+
97
+ export type TopBarSearchProps = ComponentProps<'button'> & {
98
+ /** The hint shown inside the field, e.g. "Search projects and files". */
99
+ placeholder?: string
100
+ /** The shortcut chip drawn at the trailing edge, e.g. "⌘K". */
101
+ shortcut?: string
102
+ }
103
+
104
+ /**
105
+ * The search affordance in the middle track.
106
+ *
107
+ * It is a button, not an input, and that is deliberate: clicking it opens the
108
+ * command palette, which already owns the input, the ranking and the keyboard
109
+ * handling. A second live input here would be a second source of truth for the
110
+ * same query. It is styled to read as a field because that is what it behaves
111
+ * like from the user's side.
112
+ */
113
+ export function TopBarSearch(props: TopBarSearchProps) {
114
+ const [local, rest] = splitProps(props, ['class', 'placeholder', 'shortcut'])
115
+
116
+ return (
117
+ <button
118
+ type="button"
119
+ data-slot="top-bar-search"
120
+ class={cn(
121
+ 'text-muted-foreground flex h-control-md w-full items-center gap-2 rounded-md border border-input px-3 text-sm',
122
+ 'transition-colors ease-out outline-none',
123
+ 'hover:bg-surface-hover hover:text-foreground',
124
+ 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle',
125
+ 'window-no-drag',
126
+ local.class
127
+ )}
128
+ {...rest}
129
+ >
130
+ <span class="truncate">{local.placeholder ?? 'Search'}</span>
131
+ <Show when={local.shortcut}>
132
+ <kbd class="bg-muted ms-auto hidden h-5 shrink-0 items-center rounded-sm border border-border px-1.5 font-mono text-2xs sm:flex">
133
+ {local.shortcut}
134
+ </kbd>
135
+ </Show>
136
+ </button>
137
+ )
138
+ }
139
+
140
+ /**
141
+ * A labelled top-bar control — the readouts KiroCrew puts in the trailing
142
+ * group. Container queries on the group decide which of these survive a narrow
143
+ * window; a caller marks the cheap-to-drop ones and the group handles the rest.
144
+ */
145
+ export function TopBarPill(props: ComponentProps<'button'> & { label: string }) {
146
+ const [local, rest] = splitProps(props, ['class', 'label', 'children'])
147
+
148
+ return (
149
+ <button
150
+ type="button"
151
+ data-slot="top-bar-pill"
152
+ class={cn(
153
+ 'text-muted-foreground inline-flex h-control-sm shrink-0 items-center gap-1.5 rounded-md border border-border px-2.5 text-xs font-medium',
154
+ 'transition-colors ease-out outline-none',
155
+ 'hover:border-input hover:text-foreground',
156
+ 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle',
157
+ 'window-no-drag [&_svg]:size-3.5 [&_svg]:shrink-0',
158
+ local.class
159
+ )}
160
+ {...rest}
161
+ >
162
+ {local.children}
163
+ <span>{local.label}</span>
164
+ </button>
165
+ )
166
+ }
@@ -0,0 +1,2 @@
1
+ export { Presence, type PresenceProps } from './presence'
2
+ export { Motion } from 'solid-motionone'
@@ -0,0 +1,32 @@
1
+ import type { ComponentProps, JSX } from 'solid-js'
2
+ import { Presence as MotionPresence } from 'solid-motionone'
3
+
4
+ /**
5
+ * Presence.
6
+ *
7
+ * Enter and exit animation with a guarantee the CSS approach cannot make: an exit
8
+ * that is **interrupted** — a menu reopened while it is still closing — returns the
9
+ * element to its shown state instead of finishing the close and then reopening,
10
+ * which is what a class-based `animate-out` does and what makes a fast user's
11
+ * interactions feel like the interface is lagging behind them.
12
+ *
13
+ * The design system uses CSS transitions for state changes (a hover, a press) and
14
+ * this for mounting and unmounting, which is the split that keeps the common case
15
+ * free of a runtime while making the rare case correct.
16
+ *
17
+ * <Show when={open()}>
18
+ * <Presence initial={{ opacity: 0, scale: 0.96 }} exit={{ opacity: 0, scale: 0.96 }}>
19
+ * <div>…</div>
20
+ * </Presence>
21
+ * </Show>
22
+ *
23
+ * `Presence` keeps the child mounted until its exit finishes, so the `<Show>` above
24
+ * can stay the only condition in the tree.
25
+ */
26
+ export type PresenceProps = ComponentProps<typeof MotionPresence> & {
27
+ children?: JSX.Element
28
+ }
29
+
30
+ export function Presence(props: PresenceProps) {
31
+ return <MotionPresence {...props} />
32
+ }
@@ -0,0 +1,179 @@
1
+ import type { ComponentProps } from 'solid-js'
2
+ import { For, Show, splitProps } from 'solid-js'
3
+ import { accentPresets, fontOptions } from '#lib/tokens'
4
+ import { themesForAppearance } from '#lib/themes'
5
+ import { cn } from '#lib/utils'
6
+ import { Button } from '../ui/button/button'
7
+ import { RadioGroup, RadioGroupItem } from '../ui/radio-group/radio-group'
8
+ import { ThemePicker } from './theme-picker'
9
+ import { useTheme } from './theme-provider'
10
+
11
+ /**
12
+ * AppearancePanel.
13
+ *
14
+ * The appearance page, as a component rather than as a screen each application
15
+ * draws for itself. Two applications that both let a user choose a theme should
16
+ * offer the *same* choices in the *same* arrangement — otherwise "Adea" and
17
+ * "Cortana" are two products that happen to share a component library, which is
18
+ * the opposite of what this system is for.
19
+ *
20
+ * Four axes, in the order a user thinks about them:
21
+ *
22
+ * 1. **Appearance** — light, dark, or follow the system.
23
+ * 2. **Themes** — one for each appearance. Both are shown at once, because the
24
+ * choice is per-appearance and hiding the other half makes it feel like one
25
+ * setting that keeps changing.
26
+ * 3. **Accent** — adea's presets, layered on whichever theme is active.
27
+ * 4. **Font** — the interface face.
28
+ *
29
+ * The panel reads and writes the provider's preference and keeps no state of its
30
+ * own, so it cannot disagree with what is applied.
31
+ */
32
+ export type AppearancePanelProps = ComponentProps<'div'>
33
+
34
+ const LIGHT_THEMES = themesForAppearance('light')
35
+ const DARK_THEMES = themesForAppearance('dark')
36
+
37
+ export function AppearancePanel(props: AppearancePanelProps) {
38
+ const [local, rest] = splitProps(props, ['class'])
39
+ const { selection, setSelection, resolvedAppearance } = useTheme()
40
+
41
+ return (
42
+ <div data-slot="appearance-panel" class={cn('flex flex-col gap-8', local.class)} {...rest}>
43
+ {/* --- 1. Appearance ------------------------------------------------- */}
44
+ <section class="flex flex-col gap-3">
45
+ <header class="flex flex-col gap-0.5">
46
+ <h2 class="text-base font-semibold tracking-tight">Appearance</h2>
47
+ <p class="max-w-prose text-sm text-muted-foreground">
48
+ Follow the system, or pin one. The theme below is chosen per appearance, so switching at
49
+ sunset does not make you choose again.
50
+ </p>
51
+ </header>
52
+ <RadioGroup
53
+ value={selection().appearance}
54
+ onChange={(value) => setSelection({ appearance: value as 'light' | 'dark' | 'system' })}
55
+ aria-label="Appearance"
56
+ >
57
+ <RadioGroupItem value="light" label="Light" description="Always the light theme." />
58
+ <RadioGroupItem value="dark" label="Dark" description="Always the dark theme." />
59
+ <RadioGroupItem
60
+ value="system"
61
+ label="Match the system"
62
+ description={`Currently resolving to ${resolvedAppearance()}.`}
63
+ />
64
+ </RadioGroup>
65
+ </section>
66
+
67
+ {/* --- 2. Themes ------------------------------------------------------ */}
68
+ <Show when={resolvedAppearance() === 'light'}>
69
+ <ThemeSection
70
+ title="Light theme"
71
+ description="Shown when the appearance resolves to light."
72
+ themes={LIGHT_THEMES}
73
+ selectedId={selection().lightThemeId}
74
+ onThemeSelect={(theme) => setSelection({ lightThemeId: theme.id })}
75
+ />
76
+ </Show>
77
+ <Show when={resolvedAppearance() === 'dark'}>
78
+ <ThemeSection
79
+ title="Dark theme"
80
+ description="Shown when the appearance resolves to dark."
81
+ themes={DARK_THEMES}
82
+ selectedId={selection().darkThemeId}
83
+ onThemeSelect={(theme) => setSelection({ darkThemeId: theme.id })}
84
+ />
85
+ </Show>
86
+
87
+ {/* --- 3. Accent ------------------------------------------------------ */}
88
+ <section class="flex flex-col gap-3">
89
+ <header class="flex flex-col gap-0.5">
90
+ <h2 class="text-base font-semibold tracking-tight">Accent</h2>
91
+ <p class="max-w-prose text-sm text-muted-foreground">
92
+ Colours the interactive roles — the primary button, the focus ring, a selected row — on
93
+ top of the theme above. Every preset is measured against the surface it lands on, so
94
+ none of them can make a label unreadable.
95
+ </p>
96
+ </header>
97
+ <div role="radiogroup" aria-label="Accent" class="flex flex-wrap gap-2">
98
+ <For each={accentPresets}>
99
+ {(preset) => (
100
+ <Button
101
+ as="button"
102
+ type="button"
103
+ variant="outline"
104
+ size="sm"
105
+ role="radio"
106
+ aria-checked={selection().accent === preset.id}
107
+ aria-label={preset.label}
108
+ class={cn({
109
+ 'border-ring ring-3 ring-primary-subtle': selection().accent === preset.id,
110
+ })}
111
+ onClick={() => setSelection({ accent: preset.id })}
112
+ >
113
+ <span
114
+ aria-hidden="true"
115
+ class="size-3 rounded-full border border-border"
116
+ style={{
117
+ 'background-color':
118
+ preset.id === 'theme'
119
+ ? 'var(--primary)'
120
+ : `var(--accent-${preset.id}, ${preset.dark})`,
121
+ }}
122
+ />
123
+ {preset.label}
124
+ </Button>
125
+ )}
126
+ </For>
127
+ </div>
128
+ </section>
129
+
130
+ {/* --- 4. Font -------------------------------------------------------- */}
131
+ <section class="flex flex-col gap-3">
132
+ <header class="flex flex-col gap-0.5">
133
+ <h2 class="text-base font-semibold tracking-tight">Typeface</h2>
134
+ <p class="max-w-prose text-sm text-muted-foreground">
135
+ The interface face. Every option is self-hosted, so nothing is fetched at runtime and
136
+ the choice survives going offline.
137
+ </p>
138
+ </header>
139
+ <RadioGroup
140
+ value={selection().font}
141
+ onChange={(value) => setSelection({ font: value as string })}
142
+ aria-label="Typeface"
143
+ >
144
+ <For each={fontOptions}>
145
+ {(option) => (
146
+ <RadioGroupItem
147
+ value={option.id}
148
+ label={option.label}
149
+ description={option.description}
150
+ />
151
+ )}
152
+ </For>
153
+ </RadioGroup>
154
+ </section>
155
+ </div>
156
+ )
157
+ }
158
+
159
+ function ThemeSection(props: {
160
+ title: string
161
+ description: string
162
+ themes: ReturnType<typeof themesForAppearance>
163
+ selectedId: string
164
+ onThemeSelect: (theme: ReturnType<typeof themesForAppearance>[number]) => void
165
+ }) {
166
+ return (
167
+ <section class="flex flex-col gap-3">
168
+ <header class="flex flex-col gap-0.5">
169
+ <h2 class="text-base font-semibold tracking-tight">{props.title}</h2>
170
+ <p class="max-w-prose text-sm text-muted-foreground">{props.description}</p>
171
+ </header>
172
+ <ThemePicker
173
+ themes={props.themes}
174
+ selectedId={props.selectedId}
175
+ onThemeSelect={props.onThemeSelect}
176
+ />
177
+ </section>
178
+ )
179
+ }
@@ -0,0 +1,22 @@
1
+ export { AppearancePanel, type AppearancePanelProps } from './appearance-panel'
2
+ export {
3
+ ThemePicker,
4
+ ThemePreview,
5
+ ThemeSwatch,
6
+ type ThemePickerProps,
7
+ type ThemePreviewProps,
8
+ type ThemeSwatchProps,
9
+ } from './theme-picker'
10
+ export {
11
+ ThemeProvider,
12
+ defaultThemeSelection,
13
+ inlineScriptLiteral,
14
+ resolvedDensity,
15
+ themeScript,
16
+ useTheme,
17
+ type ThemeContextValue,
18
+ type ThemeDensity,
19
+ type ThemeProviderProps,
20
+ type ThemeSelection,
21
+ } from './theme-provider'
22
+ export { ThemeToggle, type ThemeToggleProps } from './theme-toggle'
@@ -0,0 +1,174 @@
1
+ import type { ComponentProps } from 'solid-js'
2
+ import { For, Show, splitProps } from 'solid-js'
3
+ import { cn } from '#lib/utils'
4
+ import type { ThemeVariant } from '#lib/themes'
5
+ import { Button } from '../ui/button/button'
6
+
7
+ /**
8
+ * ThemeSwatch.
9
+ *
10
+ * The colours of a theme, as a small readable strip: the canvas, a card, the
11
+ * primary, an accent and the destructive fill. Enough to tell two dark themes
12
+ * apart at a glance and to recognise the one you want without applying it.
13
+ *
14
+ * A swatch is **read from the variant object**, not from a stylesheet, so a picker
15
+ * can show a theme that is not currently applied — which is the whole point of a
16
+ * picker. That is also why the catalogue is data rather than CSS.
17
+ */
18
+ export type ThemeSwatchProps = ComponentProps<'span'> & {
19
+ theme: ThemeVariant
20
+ /** Draw the swatch at the given size. */
21
+ size?: 'sm' | 'md' | 'lg'
22
+ }
23
+
24
+ const swatchSizes = {
25
+ sm: 'h-4 w-4',
26
+ md: 'h-6 w-6',
27
+ lg: 'h-8 w-8',
28
+ } as const
29
+
30
+ export function ThemeSwatch(props: ThemeSwatchProps) {
31
+ const [local, rest] = splitProps(props, ['class', 'theme', 'size'])
32
+ const colors = () => local.theme.colors
33
+
34
+ return (
35
+ <span
36
+ data-slot="theme-swatch"
37
+ aria-hidden="true"
38
+ class={cn(
39
+ 'border-border inline-flex shrink-0 overflow-hidden rounded-md border',
40
+ local.class
41
+ )}
42
+ {...rest}
43
+ >
44
+ <For
45
+ each={[
46
+ colors().background,
47
+ colors().card,
48
+ colors().primary,
49
+ colors().accent,
50
+ colors().destructive,
51
+ ]}
52
+ >
53
+ {(color) => (
54
+ <span
55
+ class={cn('block', swatchSizes[local.size ?? 'md'])}
56
+ style={{ 'background-color': color }}
57
+ />
58
+ )}
59
+ </For>
60
+ </span>
61
+ )
62
+ }
63
+
64
+ /**
65
+ * ThemePreview.
66
+ *
67
+ * A miniature of the interface, painted in a theme's own colours: a rail, a panel,
68
+ * a heading, body text, a primary button and a destructive one.
69
+ *
70
+ * The point is that a colour strip cannot answer the question a user actually has —
71
+ * "would I want to look at this all day?" — and a real preview can. It is drawn
72
+ * with inline colours from the variant rather than by applying the theme, so a list
73
+ * of twenty previews costs one object read each instead of twenty theme swaps.
74
+ */
75
+ export type ThemePreviewProps = ComponentProps<'div'> & {
76
+ theme: ThemeVariant
77
+ /** Highlight the preview as the current selection. */
78
+ selected?: boolean
79
+ }
80
+
81
+ export function ThemePreview(props: ThemePreviewProps) {
82
+ const [local, rest] = splitProps(props, ['class', 'theme', 'selected'])
83
+ const c = () => local.theme.colors
84
+
85
+ return (
86
+ <div
87
+ data-slot="theme-preview"
88
+ class={cn(
89
+ 'w-44 overflow-hidden rounded-lg border shadow-xs',
90
+ local.selected ? 'border-primary ring-3 ring-primary-subtle' : 'border-border',
91
+ local.class
92
+ )}
93
+ style={{ 'background-color': c().background }}
94
+ {...rest}
95
+ >
96
+ <div class="flex h-24">
97
+ {/* A rail and a panel: the two surfaces a user spends the day looking at. */}
98
+ <div
99
+ class="theme-preview-edge flex w-6 flex-col items-center gap-1.5 border-e py-2"
100
+ style={{ 'background-color': c().sidebar, '--preview-edge': c().sidebarBorder }}
101
+ >
102
+ <span class="size-2.5 rounded-sm" style={{ 'background-color': c().primary }} />
103
+ <span class="size-2.5 rounded-sm" style={{ 'background-color': c().sidebarAccent }} />
104
+ <span class="size-2.5 rounded-sm" style={{ 'background-color': c().sidebarAccent }} />
105
+ </div>
106
+ <div class="flex flex-1 flex-col gap-1.5 p-2">
107
+ <div class="h-1.5 w-14 rounded-full" style={{ 'background-color': c().foreground }} />
108
+ <div class="h-1 w-20 rounded-full" style={{ 'background-color': c().mutedForeground }} />
109
+ <div class="h-1 w-16 rounded-full" style={{ 'background-color': c().mutedForeground }} />
110
+ <div class="mt-auto flex items-center gap-1">
111
+ <span class="h-3 w-9 rounded-sm" style={{ 'background-color': c().primary }} />
112
+ <span class="h-3 w-6 rounded-sm" style={{ 'background-color': c().destructive }} />
113
+ <span class="h-3 w-6 rounded-sm" style={{ 'background-color': c().secondary }} />
114
+ </div>
115
+ </div>
116
+ </div>
117
+ </div>
118
+ )
119
+ }
120
+
121
+ /**
122
+ * ThemePicker.
123
+ *
124
+ * The catalogue as a selectable grid. One appearance at a time — a light picker
125
+ * lists light themes and a dark picker lists dark ones — because choosing a dark
126
+ * theme while looking at a light interface is a choice nobody can evaluate.
127
+ *
128
+ * `onSelect` rather than an internal signal: the selection belongs to the
129
+ * preference the provider owns, and a picker that kept its own copy could disagree
130
+ * with what is applied.
131
+ */
132
+ export type ThemePickerProps = ComponentProps<'div'> & {
133
+ themes: readonly ThemeVariant[]
134
+ selectedId: string
135
+ onThemeSelect: (theme: ThemeVariant) => void
136
+ }
137
+
138
+ export function ThemePicker(props: ThemePickerProps) {
139
+ const [local, rest] = splitProps(props, ['class', 'themes', 'selectedId', 'onThemeSelect'])
140
+
141
+ return (
142
+ <div
143
+ data-slot="theme-picker"
144
+ role="radiogroup"
145
+ aria-label="Theme"
146
+ class={cn('flex flex-wrap gap-3', local.class)}
147
+ {...rest}
148
+ >
149
+ <For each={local.themes}>
150
+ {(theme) => (
151
+ <Button
152
+ as="button"
153
+ type="button"
154
+ variant="ghost"
155
+ size="sm"
156
+ role="radio"
157
+ aria-checked={local.selectedId === theme.id}
158
+ aria-label={`${theme.familyLabel} ${theme.label}`}
159
+ class="h-auto flex-col gap-1.5 p-0 hover:bg-transparent"
160
+ onClick={() => local.onThemeSelect(theme)}
161
+ >
162
+ <ThemePreview theme={theme} selected={local.selectedId === theme.id} />
163
+ <span class="flex flex-col items-center">
164
+ <span class="text-xs font-medium">{theme.label}</span>
165
+ <Show when={theme.family !== 'adea'}>
166
+ <span class="text-muted-foreground text-2xs">{theme.familyLabel}</span>
167
+ </Show>
168
+ </span>
169
+ </Button>
170
+ )}
171
+ </For>
172
+ </div>
173
+ )
174
+ }