@adea-ai/ui 0.60.4 → 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,10 @@
1
+ import { createComponent } from "solid-js/web";
2
+ import { Presence } from "solid-motionone";
3
+ //#region src/components/motion/presence.tsx
4
+ function Presence$1(props) {
5
+ return createComponent(Presence, props);
6
+ }
7
+ //#endregion
8
+ export { Presence$1 as Presence };
9
+
10
+ //# sourceMappingURL=presence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presence.js","names":["ComponentProps","JSX","Presence","MotionPresence","PresenceProps","children","Element","props","_$createComponent","Presence","_$createComponent","MotionPresence"],"sources":["../../../src/components/motion/presence.tsx"],"sourcesContent":["import type { ComponentProps, JSX } from 'solid-js'\nimport { Presence as MotionPresence } from 'solid-motionone'\n\n/**\n * Presence.\n *\n * Enter and exit animation with a guarantee the CSS approach cannot make: an exit\n * that is **interrupted** — a menu reopened while it is still closing — returns the\n * element to its shown state instead of finishing the close and then reopening,\n * which is what a class-based `animate-out` does and what makes a fast user's\n * interactions feel like the interface is lagging behind them.\n *\n * The design system uses CSS transitions for state changes (a hover, a press) and\n * this for mounting and unmounting, which is the split that keeps the common case\n * free of a runtime while making the rare case correct.\n *\n * <Show when={open()}>\n * <Presence initial={{ opacity: 0, scale: 0.96 }} exit={{ opacity: 0, scale: 0.96 }}>\n * <div>…</div>\n * </Presence>\n * </Show>\n *\n * `Presence` keeps the child mounted until its exit finishes, so the `<Show>` above\n * can stay the only condition in the tree.\n */\nexport type PresenceProps = ComponentProps<typeof MotionPresence> & {\n children?: JSX.Element\n}\n\nexport function Presence(props: PresenceProps) {\n return <MotionPresence {...props} />\n}\n"],"mappings":";;;AA6BA,SAAgBE,WAASK,OAAsB;CAC7C,OAAAC,gBAAQL,UAAmBI,KAAK;AAClC"}
@@ -0,0 +1,25 @@
1
+ import type { ComponentProps } from 'solid-js';
2
+ /**
3
+ * AppearancePanel.
4
+ *
5
+ * The appearance page, as a component rather than as a screen each application
6
+ * draws for itself. Two applications that both let a user choose a theme should
7
+ * offer the *same* choices in the *same* arrangement — otherwise "Adea" and
8
+ * "Cortana" are two products that happen to share a component library, which is
9
+ * the opposite of what this system is for.
10
+ *
11
+ * Four axes, in the order a user thinks about them:
12
+ *
13
+ * 1. **Appearance** — light, dark, or follow the system.
14
+ * 2. **Themes** — one for each appearance. Both are shown at once, because the
15
+ * choice is per-appearance and hiding the other half makes it feel like one
16
+ * setting that keeps changing.
17
+ * 3. **Accent** — adea's presets, layered on whichever theme is active.
18
+ * 4. **Font** — the interface face.
19
+ *
20
+ * The panel reads and writes the provider's preference and keeps no state of its
21
+ * own, so it cannot disagree with what is applied.
22
+ */
23
+ export type AppearancePanelProps = ComponentProps<'div'>;
24
+ export declare function AppearancePanel(props: AppearancePanelProps): import("solid-js").JSX.Element;
25
+ //# sourceMappingURL=appearance-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearance-panel.d.ts","sourceRoot":"","sources":["../../../src/components/theme/appearance-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAU9C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;AAKxD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,kCAwH1D"}
@@ -0,0 +1,162 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { Button } from "../ui/button/button.js";
3
+ import { RadioGroup, RadioGroupItem } from "../ui/radio-group/radio-group.js";
4
+ import { accentPresets, fontOptions } from "../../lib/tokens.js";
5
+ import { themesForAppearance } from "../../lib/themes.js";
6
+ import { ThemePicker } from "./theme-picker.js";
7
+ import { useTheme } from "./theme-provider.js";
8
+ import { createComponent, effect, insert, memo, mergeProps, setStyleProperty, spread, template } from "solid-js/web";
9
+ import { For, Show, splitProps } from "solid-js";
10
+ //#region src/components/theme/appearance-panel.tsx
11
+ var _tmpl$ = /*#__PURE__*/ template(`<div data-slot=appearance-panel><section class="flex flex-col gap-3"><header class="flex flex-col gap-0.5"><h2 class="text-base font-semibold tracking-tight">Appearance</h2><p class="max-w-prose text-sm text-muted-foreground">Follow the system, or pin one. The theme below is chosen per appearance, so switching at sunset does not make you choose again.</p></header></section><section class="flex flex-col gap-3"><header class="flex flex-col gap-0.5"><h2 class="text-base font-semibold tracking-tight">Accent</h2><p class="max-w-prose text-sm text-muted-foreground">Colours the interactive roles — the primary button, the focus ring, a selected row — on top of the theme above. Every preset is measured against the surface it lands on, so none of them can make a label unreadable.</p></header><div role=radiogroup aria-label=Accent class="flex flex-wrap gap-2"></div></section><section class="flex flex-col gap-3"><header class="flex flex-col gap-0.5"><h2 class="text-base font-semibold tracking-tight">Typeface</h2><p class="max-w-prose text-sm text-muted-foreground">The interface face. Every option is self-hosted, so nothing is fetched at runtime and the choice survives going offline.`);
12
+ var _tmpl$2 = /*#__PURE__*/ template(`<span aria-hidden=true class="size-3 rounded-full border border-border">`);
13
+ var _tmpl$3 = /*#__PURE__*/ template(`<section class="flex flex-col gap-3"><header class="flex flex-col gap-0.5"><h2 class="text-base font-semibold tracking-tight"></h2><p class="max-w-prose text-sm text-muted-foreground">`);
14
+ var LIGHT_THEMES = themesForAppearance("light");
15
+ var DARK_THEMES = themesForAppearance("dark");
16
+ function AppearancePanel(props) {
17
+ const [local, rest] = splitProps(props, ["class"]);
18
+ const { selection, setSelection, resolvedAppearance } = useTheme();
19
+ return (() => {
20
+ var _el$ = _tmpl$(), _el$2 = _el$.firstChild;
21
+ _el$2.firstChild;
22
+ var _el$4 = _el$2.nextSibling, _el$6 = _el$4.firstChild.nextSibling, _el$7 = _el$4.nextSibling;
23
+ _el$7.firstChild;
24
+ spread(_el$, mergeProps({ get ["class"]() {
25
+ return cn("flex flex-col gap-8", local.class);
26
+ } }, rest), false, true);
27
+ insert(_el$2, createComponent(RadioGroup, {
28
+ get value() {
29
+ return selection().appearance;
30
+ },
31
+ onChange: (value) => setSelection({ appearance: value }),
32
+ "aria-label": "Appearance",
33
+ get children() {
34
+ return [
35
+ createComponent(RadioGroupItem, {
36
+ value: "light",
37
+ label: "Light",
38
+ description: "Always the light theme."
39
+ }),
40
+ createComponent(RadioGroupItem, {
41
+ value: "dark",
42
+ label: "Dark",
43
+ description: "Always the dark theme."
44
+ }),
45
+ createComponent(RadioGroupItem, {
46
+ value: "system",
47
+ label: "Match the system",
48
+ get description() {
49
+ return `Currently resolving to ${resolvedAppearance()}.`;
50
+ }
51
+ })
52
+ ];
53
+ }
54
+ }), null);
55
+ insert(_el$, createComponent(Show, {
56
+ get when() {
57
+ return resolvedAppearance() === "light";
58
+ },
59
+ get children() {
60
+ return createComponent(ThemeSection, {
61
+ title: "Light theme",
62
+ description: "Shown when the appearance resolves to light.",
63
+ themes: LIGHT_THEMES,
64
+ get selectedId() {
65
+ return selection().lightThemeId;
66
+ },
67
+ onThemeSelect: (theme) => setSelection({ lightThemeId: theme.id })
68
+ });
69
+ }
70
+ }), _el$4);
71
+ insert(_el$, createComponent(Show, {
72
+ get when() {
73
+ return resolvedAppearance() === "dark";
74
+ },
75
+ get children() {
76
+ return createComponent(ThemeSection, {
77
+ title: "Dark theme",
78
+ description: "Shown when the appearance resolves to dark.",
79
+ themes: DARK_THEMES,
80
+ get selectedId() {
81
+ return selection().darkThemeId;
82
+ },
83
+ onThemeSelect: (theme) => setSelection({ darkThemeId: theme.id })
84
+ });
85
+ }
86
+ }), _el$4);
87
+ insert(_el$6, createComponent(For, {
88
+ each: accentPresets,
89
+ children: (preset) => createComponent(Button, {
90
+ as: "button",
91
+ type: "button",
92
+ variant: "outline",
93
+ size: "sm",
94
+ role: "radio",
95
+ get ["aria-checked"]() {
96
+ return selection().accent === preset.id;
97
+ },
98
+ get ["aria-label"]() {
99
+ return preset.label;
100
+ },
101
+ get ["class"]() {
102
+ return cn({ "border-ring ring-3 ring-primary-subtle": selection().accent === preset.id });
103
+ },
104
+ onClick: () => setSelection({ accent: preset.id }),
105
+ get children() {
106
+ return [(() => {
107
+ var _el$9 = _tmpl$2();
108
+ effect((_$p) => setStyleProperty(_el$9, "background-color", preset.id === "theme" ? "var(--primary)" : `var(--accent-${preset.id}, ${preset.dark})`));
109
+ return _el$9;
110
+ })(), memo(() => preset.label)];
111
+ }
112
+ })
113
+ }));
114
+ insert(_el$7, createComponent(RadioGroup, {
115
+ get value() {
116
+ return selection().font;
117
+ },
118
+ onChange: (value) => setSelection({ font: value }),
119
+ "aria-label": "Typeface",
120
+ get children() {
121
+ return createComponent(For, {
122
+ each: fontOptions,
123
+ children: (option) => createComponent(RadioGroupItem, {
124
+ get value() {
125
+ return option.id;
126
+ },
127
+ get label() {
128
+ return option.label;
129
+ },
130
+ get description() {
131
+ return option.description;
132
+ }
133
+ })
134
+ });
135
+ }
136
+ }), null);
137
+ return _el$;
138
+ })();
139
+ }
140
+ function ThemeSection(props) {
141
+ return (() => {
142
+ var _el$0 = _tmpl$3(), _el$10 = _el$0.firstChild.firstChild, _el$11 = _el$10.nextSibling;
143
+ insert(_el$10, () => props.title);
144
+ insert(_el$11, () => props.description);
145
+ insert(_el$0, createComponent(ThemePicker, {
146
+ get themes() {
147
+ return props.themes;
148
+ },
149
+ get selectedId() {
150
+ return props.selectedId;
151
+ },
152
+ get onThemeSelect() {
153
+ return props.onThemeSelect;
154
+ }
155
+ }), null);
156
+ return _el$0;
157
+ })();
158
+ }
159
+ //#endregion
160
+ export { AppearancePanel };
161
+
162
+ //# sourceMappingURL=appearance-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearance-panel.js","names":["ComponentProps","For","Show","splitProps","accentPresets","fontOptions","themesForAppearance","cn","Button","RadioGroup","RadioGroupItem","ThemePicker","useTheme","AppearancePanelProps","LIGHT_THEMES","DARK_THEMES","AppearancePanel","props","local","rest","selection","setSelection","resolvedAppearance","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$5","_el$6","_el$7","_el$8","_$spread","_$mergeProps","class","_$insert","_$createComponent","value","appearance","onChange","children","label","description","when","ThemeSection","title","themes","selectedId","lightThemeId","onThemeSelect","theme","id","darkThemeId","each","preset","as","type","variant","size","role","aria-checked","accent","aria-label","onClick","_el$9","_tmpl$2","_$effect","_$p","_$setStyleProperty","dark","_$memo","font","option","ReturnType","_el$0","_tmpl$3","_el$1","_el$10","_el$11","_$mergeProps","_$createComponent","_$setStyleProperty","_$memo"],"sources":["../../../src/components/theme/appearance-panel.tsx"],"sourcesContent":["import type { ComponentProps } from 'solid-js'\nimport { For, Show, splitProps } from 'solid-js'\nimport { accentPresets, fontOptions } from '#lib/tokens'\nimport { themesForAppearance } from '#lib/themes'\nimport { cn } from '#lib/utils'\nimport { Button } from '../ui/button/button'\nimport { RadioGroup, RadioGroupItem } from '../ui/radio-group/radio-group'\nimport { ThemePicker } from './theme-picker'\nimport { useTheme } from './theme-provider'\n\n/**\n * AppearancePanel.\n *\n * The appearance page, as a component rather than as a screen each application\n * draws for itself. Two applications that both let a user choose a theme should\n * offer the *same* choices in the *same* arrangement — otherwise \"Adea\" and\n * \"Cortana\" are two products that happen to share a component library, which is\n * the opposite of what this system is for.\n *\n * Four axes, in the order a user thinks about them:\n *\n * 1. **Appearance** — light, dark, or follow the system.\n * 2. **Themes** — one for each appearance. Both are shown at once, because the\n * choice is per-appearance and hiding the other half makes it feel like one\n * setting that keeps changing.\n * 3. **Accent** — adea's presets, layered on whichever theme is active.\n * 4. **Font** — the interface face.\n *\n * The panel reads and writes the provider's preference and keeps no state of its\n * own, so it cannot disagree with what is applied.\n */\nexport type AppearancePanelProps = ComponentProps<'div'>\n\nconst LIGHT_THEMES = themesForAppearance('light')\nconst DARK_THEMES = themesForAppearance('dark')\n\nexport function AppearancePanel(props: AppearancePanelProps) {\n const [local, rest] = splitProps(props, ['class'])\n const { selection, setSelection, resolvedAppearance } = useTheme()\n\n return (\n <div data-slot=\"appearance-panel\" class={cn('flex flex-col gap-8', local.class)} {...rest}>\n {/* --- 1. Appearance ------------------------------------------------- */}\n <section class=\"flex flex-col gap-3\">\n <header class=\"flex flex-col gap-0.5\">\n <h2 class=\"text-base font-semibold tracking-tight\">Appearance</h2>\n <p class=\"max-w-prose text-sm text-muted-foreground\">\n Follow the system, or pin one. The theme below is chosen per appearance, so switching at\n sunset does not make you choose again.\n </p>\n </header>\n <RadioGroup\n value={selection().appearance}\n onChange={(value) => setSelection({ appearance: value as 'light' | 'dark' | 'system' })}\n aria-label=\"Appearance\"\n >\n <RadioGroupItem value=\"light\" label=\"Light\" description=\"Always the light theme.\" />\n <RadioGroupItem value=\"dark\" label=\"Dark\" description=\"Always the dark theme.\" />\n <RadioGroupItem\n value=\"system\"\n label=\"Match the system\"\n description={`Currently resolving to ${resolvedAppearance()}.`}\n />\n </RadioGroup>\n </section>\n\n {/* --- 2. Themes ------------------------------------------------------ */}\n <Show when={resolvedAppearance() === 'light'}>\n <ThemeSection\n title=\"Light theme\"\n description=\"Shown when the appearance resolves to light.\"\n themes={LIGHT_THEMES}\n selectedId={selection().lightThemeId}\n onThemeSelect={(theme) => setSelection({ lightThemeId: theme.id })}\n />\n </Show>\n <Show when={resolvedAppearance() === 'dark'}>\n <ThemeSection\n title=\"Dark theme\"\n description=\"Shown when the appearance resolves to dark.\"\n themes={DARK_THEMES}\n selectedId={selection().darkThemeId}\n onThemeSelect={(theme) => setSelection({ darkThemeId: theme.id })}\n />\n </Show>\n\n {/* --- 3. Accent ------------------------------------------------------ */}\n <section class=\"flex flex-col gap-3\">\n <header class=\"flex flex-col gap-0.5\">\n <h2 class=\"text-base font-semibold tracking-tight\">Accent</h2>\n <p class=\"max-w-prose text-sm text-muted-foreground\">\n Colours the interactive roles — the primary button, the focus ring, a selected row — on\n top of the theme above. Every preset is measured against the surface it lands on, so\n none of them can make a label unreadable.\n </p>\n </header>\n <div role=\"radiogroup\" aria-label=\"Accent\" class=\"flex flex-wrap gap-2\">\n <For each={accentPresets}>\n {(preset) => (\n <Button\n as=\"button\"\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n role=\"radio\"\n aria-checked={selection().accent === preset.id}\n aria-label={preset.label}\n class={cn({\n 'border-ring ring-3 ring-primary-subtle': selection().accent === preset.id,\n })}\n onClick={() => setSelection({ accent: preset.id })}\n >\n <span\n aria-hidden=\"true\"\n class=\"size-3 rounded-full border border-border\"\n style={{\n 'background-color':\n preset.id === 'theme'\n ? 'var(--primary)'\n : `var(--accent-${preset.id}, ${preset.dark})`,\n }}\n />\n {preset.label}\n </Button>\n )}\n </For>\n </div>\n </section>\n\n {/* --- 4. Font -------------------------------------------------------- */}\n <section class=\"flex flex-col gap-3\">\n <header class=\"flex flex-col gap-0.5\">\n <h2 class=\"text-base font-semibold tracking-tight\">Typeface</h2>\n <p class=\"max-w-prose text-sm text-muted-foreground\">\n The interface face. Every option is self-hosted, so nothing is fetched at runtime and\n the choice survives going offline.\n </p>\n </header>\n <RadioGroup\n value={selection().font}\n onChange={(value) => setSelection({ font: value as string })}\n aria-label=\"Typeface\"\n >\n <For each={fontOptions}>\n {(option) => (\n <RadioGroupItem\n value={option.id}\n label={option.label}\n description={option.description}\n />\n )}\n </For>\n </RadioGroup>\n </section>\n </div>\n )\n}\n\nfunction ThemeSection(props: {\n title: string\n description: string\n themes: ReturnType<typeof themesForAppearance>\n selectedId: string\n onThemeSelect: (theme: ReturnType<typeof themesForAppearance>[number]) => void\n}) {\n return (\n <section class=\"flex flex-col gap-3\">\n <header class=\"flex flex-col gap-0.5\">\n <h2 class=\"text-base font-semibold tracking-tight\">{props.title}</h2>\n <p class=\"max-w-prose text-sm text-muted-foreground\">{props.description}</p>\n </header>\n <ThemePicker\n themes={props.themes}\n selectedId={props.selectedId}\n onThemeSelect={props.onThemeSelect}\n />\n </section>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { AppearancePanel, type AppearancePanelProps } from './appearance-panel';
2
+ export { ThemePicker, ThemePreview, ThemeSwatch, type ThemePickerProps, type ThemePreviewProps, type ThemeSwatchProps, } from './theme-picker';
3
+ export { ThemeProvider, defaultThemeSelection, inlineScriptLiteral, resolvedDensity, themeScript, useTheme, type ThemeContextValue, type ThemeDensity, type ThemeProviderProps, type ThemeSelection, } from './theme-provider';
4
+ export { ThemeToggle, type ThemeToggleProps } from './theme-toggle';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,QAAQ,EACR,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,54 @@
1
+ import type { ComponentProps } from 'solid-js';
2
+ import type { ThemeVariant } from '#lib/themes';
3
+ /**
4
+ * ThemeSwatch.
5
+ *
6
+ * The colours of a theme, as a small readable strip: the canvas, a card, the
7
+ * primary, an accent and the destructive fill. Enough to tell two dark themes
8
+ * apart at a glance and to recognise the one you want without applying it.
9
+ *
10
+ * A swatch is **read from the variant object**, not from a stylesheet, so a picker
11
+ * can show a theme that is not currently applied — which is the whole point of a
12
+ * picker. That is also why the catalogue is data rather than CSS.
13
+ */
14
+ export type ThemeSwatchProps = ComponentProps<'span'> & {
15
+ theme: ThemeVariant;
16
+ /** Draw the swatch at the given size. */
17
+ size?: 'sm' | 'md' | 'lg';
18
+ };
19
+ export declare function ThemeSwatch(props: ThemeSwatchProps): import("solid-js").JSX.Element;
20
+ /**
21
+ * ThemePreview.
22
+ *
23
+ * A miniature of the interface, painted in a theme's own colours: a rail, a panel,
24
+ * a heading, body text, a primary button and a destructive one.
25
+ *
26
+ * The point is that a colour strip cannot answer the question a user actually has —
27
+ * "would I want to look at this all day?" — and a real preview can. It is drawn
28
+ * with inline colours from the variant rather than by applying the theme, so a list
29
+ * of twenty previews costs one object read each instead of twenty theme swaps.
30
+ */
31
+ export type ThemePreviewProps = ComponentProps<'div'> & {
32
+ theme: ThemeVariant;
33
+ /** Highlight the preview as the current selection. */
34
+ selected?: boolean;
35
+ };
36
+ export declare function ThemePreview(props: ThemePreviewProps): import("solid-js").JSX.Element;
37
+ /**
38
+ * ThemePicker.
39
+ *
40
+ * The catalogue as a selectable grid. One appearance at a time — a light picker
41
+ * lists light themes and a dark picker lists dark ones — because choosing a dark
42
+ * theme while looking at a light interface is a choice nobody can evaluate.
43
+ *
44
+ * `onSelect` rather than an internal signal: the selection belongs to the
45
+ * preference the provider owns, and a picker that kept its own copy could disagree
46
+ * with what is applied.
47
+ */
48
+ export type ThemePickerProps = ComponentProps<'div'> & {
49
+ themes: readonly ThemeVariant[];
50
+ selectedId: string;
51
+ onThemeSelect: (theme: ThemeVariant) => void;
52
+ };
53
+ export declare function ThemePicker(props: ThemePickerProps): import("solid-js").JSX.Element;
54
+ //# sourceMappingURL=theme-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-picker.d.ts","sourceRoot":"","sources":["../../../src/components/theme/theme-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG;IACtD,KAAK,EAAE,YAAY,CAAA;IACnB,yCAAyC;IACzC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CAC1B,CAAA;AAQD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,kCAgClD;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IACtD,KAAK,EAAE,YAAY,CAAA;IACnB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,kCAsCpD;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IACrD,MAAM,EAAE,SAAS,YAAY,EAAE,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;CAC7C,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,kCAoClD"}
@@ -0,0 +1,156 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { Button } from "../ui/button/button.js";
3
+ import { className, createComponent, effect, insert, mergeProps, setStyleProperty, spread, template } from "solid-js/web";
4
+ import { For, Show, splitProps } from "solid-js";
5
+ //#region src/components/theme/theme-picker.tsx
6
+ var _tmpl$ = /*#__PURE__*/ template(`<span data-slot=theme-swatch aria-hidden=true>`);
7
+ var _tmpl$2 = /*#__PURE__*/ template(`<span>`);
8
+ var _tmpl$3 = /*#__PURE__*/ template(`<div data-slot=theme-preview><div class="flex h-24"><div class="theme-preview-edge flex w-6 flex-col items-center gap-1.5 border-e py-2"><span class="size-2.5 rounded-sm"></span><span class="size-2.5 rounded-sm"></span><span class="size-2.5 rounded-sm"></span></div><div class="flex flex-1 flex-col gap-1.5 p-2"><div class="h-1.5 w-14 rounded-full"></div><div class="h-1 w-20 rounded-full"></div><div class="h-1 w-16 rounded-full"></div><div class="mt-auto flex items-center gap-1"><span class="h-3 w-9 rounded-sm"></span><span class="h-3 w-6 rounded-sm"></span><span class="h-3 w-6 rounded-sm">`);
9
+ var _tmpl$4 = /*#__PURE__*/ template(`<div data-slot=theme-picker role=radiogroup aria-label=Theme>`);
10
+ var _tmpl$5 = /*#__PURE__*/ template(`<span class="text-muted-foreground text-2xs">`);
11
+ var _tmpl$6 = /*#__PURE__*/ template(`<span class="flex flex-col items-center"><span class="text-xs font-medium">`);
12
+ var swatchSizes = {
13
+ sm: "h-4 w-4",
14
+ md: "h-6 w-6",
15
+ lg: "h-8 w-8"
16
+ };
17
+ function ThemeSwatch(props) {
18
+ const [local, rest] = splitProps(props, [
19
+ "class",
20
+ "theme",
21
+ "size"
22
+ ]);
23
+ const colors = () => local.theme.colors;
24
+ return (() => {
25
+ var _el$ = _tmpl$();
26
+ spread(_el$, mergeProps({ get ["class"]() {
27
+ return cn("border-border inline-flex shrink-0 overflow-hidden rounded-md border", local.class);
28
+ } }, rest), false, true);
29
+ insert(_el$, createComponent(For, {
30
+ get each() {
31
+ return [
32
+ colors().background,
33
+ colors().card,
34
+ colors().primary,
35
+ colors().accent,
36
+ colors().destructive
37
+ ];
38
+ },
39
+ children: (color) => (() => {
40
+ var _el$2 = _tmpl$2();
41
+ setStyleProperty(_el$2, "background-color", color);
42
+ effect(() => className(_el$2, cn("block", swatchSizes[local.size ?? "md"])));
43
+ return _el$2;
44
+ })()
45
+ }));
46
+ return _el$;
47
+ })();
48
+ }
49
+ function ThemePreview(props) {
50
+ const [local, rest] = splitProps(props, [
51
+ "class",
52
+ "theme",
53
+ "selected"
54
+ ]);
55
+ const c = () => local.theme.colors;
56
+ return (() => {
57
+ var _el$3 = _tmpl$3(), _el$5 = _el$3.firstChild.firstChild, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling, _el$0 = _el$5.nextSibling.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$1.nextSibling, _el$12 = _el$10.nextSibling.firstChild, _el$13 = _el$12.nextSibling, _el$14 = _el$13.nextSibling;
58
+ spread(_el$3, mergeProps({
59
+ get ["class"]() {
60
+ return cn("w-44 overflow-hidden rounded-lg border shadow-xs", local.selected ? "border-primary ring-3 ring-primary-subtle" : "border-border", local.class);
61
+ },
62
+ get style() {
63
+ return { "background-color": c().background };
64
+ }
65
+ }, rest), false, true);
66
+ effect((_p$) => {
67
+ var _v$ = c().sidebar, _v$2 = c().sidebarBorder, _v$3 = c().primary, _v$4 = c().sidebarAccent, _v$5 = c().sidebarAccent, _v$6 = c().foreground, _v$7 = c().mutedForeground, _v$8 = c().mutedForeground, _v$9 = c().primary, _v$0 = c().destructive, _v$1 = c().secondary;
68
+ _v$ !== _p$.e && setStyleProperty(_el$5, "background-color", _p$.e = _v$);
69
+ _v$2 !== _p$.t && setStyleProperty(_el$5, "--preview-edge", _p$.t = _v$2);
70
+ _v$3 !== _p$.a && setStyleProperty(_el$6, "background-color", _p$.a = _v$3);
71
+ _v$4 !== _p$.o && setStyleProperty(_el$7, "background-color", _p$.o = _v$4);
72
+ _v$5 !== _p$.i && setStyleProperty(_el$8, "background-color", _p$.i = _v$5);
73
+ _v$6 !== _p$.n && setStyleProperty(_el$0, "background-color", _p$.n = _v$6);
74
+ _v$7 !== _p$.s && setStyleProperty(_el$1, "background-color", _p$.s = _v$7);
75
+ _v$8 !== _p$.h && setStyleProperty(_el$10, "background-color", _p$.h = _v$8);
76
+ _v$9 !== _p$.r && setStyleProperty(_el$12, "background-color", _p$.r = _v$9);
77
+ _v$0 !== _p$.d && setStyleProperty(_el$13, "background-color", _p$.d = _v$0);
78
+ _v$1 !== _p$.l && setStyleProperty(_el$14, "background-color", _p$.l = _v$1);
79
+ return _p$;
80
+ }, {
81
+ e: void 0,
82
+ t: void 0,
83
+ a: void 0,
84
+ o: void 0,
85
+ i: void 0,
86
+ n: void 0,
87
+ s: void 0,
88
+ h: void 0,
89
+ r: void 0,
90
+ d: void 0,
91
+ l: void 0
92
+ });
93
+ return _el$3;
94
+ })();
95
+ }
96
+ function ThemePicker(props) {
97
+ const [local, rest] = splitProps(props, [
98
+ "class",
99
+ "themes",
100
+ "selectedId",
101
+ "onThemeSelect"
102
+ ]);
103
+ return (() => {
104
+ var _el$15 = _tmpl$4();
105
+ spread(_el$15, mergeProps({ get ["class"]() {
106
+ return cn("flex flex-wrap gap-3", local.class);
107
+ } }, rest), false, true);
108
+ insert(_el$15, createComponent(For, {
109
+ get each() {
110
+ return local.themes;
111
+ },
112
+ children: (theme) => createComponent(Button, {
113
+ as: "button",
114
+ type: "button",
115
+ variant: "ghost",
116
+ size: "sm",
117
+ role: "radio",
118
+ get ["aria-checked"]() {
119
+ return local.selectedId === theme.id;
120
+ },
121
+ get ["aria-label"]() {
122
+ return `${theme.familyLabel} ${theme.label}`;
123
+ },
124
+ "class": "h-auto flex-col gap-1.5 p-0 hover:bg-transparent",
125
+ onClick: () => local.onThemeSelect(theme),
126
+ get children() {
127
+ return [createComponent(ThemePreview, {
128
+ theme,
129
+ get selected() {
130
+ return local.selectedId === theme.id;
131
+ }
132
+ }), (() => {
133
+ var _el$16 = _tmpl$6(), _el$17 = _el$16.firstChild;
134
+ insert(_el$17, () => theme.label);
135
+ insert(_el$16, createComponent(Show, {
136
+ get when() {
137
+ return theme.family !== "adea";
138
+ },
139
+ get children() {
140
+ var _el$18 = _tmpl$5();
141
+ insert(_el$18, () => theme.familyLabel);
142
+ return _el$18;
143
+ }
144
+ }), null);
145
+ return _el$16;
146
+ })()];
147
+ }
148
+ })
149
+ }));
150
+ return _el$15;
151
+ })();
152
+ }
153
+ //#endregion
154
+ export { ThemePicker, ThemePreview, ThemeSwatch };
155
+
156
+ //# sourceMappingURL=theme-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-picker.js","names":["ComponentProps","For","Show","splitProps","cn","ThemeVariant","Button","ThemeSwatchProps","theme","size","swatchSizes","sm","md","lg","const","ThemeSwatch","props","local","rest","colors","_el$","_tmpl$","_$spread","_$mergeProps","class","_$insert","_$createComponent","each","background","card","primary","accent","destructive","children","color","_el$2","_tmpl$2","_$setStyleProperty","_$effect","_$className","ThemePreviewProps","selected","ThemePreview","c","_el$3","_tmpl$3","_el$4","firstChild","_el$5","_el$6","_el$7","nextSibling","_el$8","_el$9","_el$0","_el$1","_el$10","_el$11","_el$12","_el$13","_el$14","style","_p$","_v$","sidebar","_v$2","sidebarBorder","_v$3","_v$4","sidebarAccent","_v$5","_v$6","foreground","_v$7","mutedForeground","_v$8","_v$9","_v$0","_v$1","secondary","e","t","a","o","i","n","s","h","r","d","l","undefined","ThemePickerProps","themes","selectedId","onThemeSelect","ThemePicker","_el$15","_tmpl$4","as","type","variant","role","aria-checked","id","aria-label","familyLabel","label","onClick","_el$16","_tmpl$6","_el$17","when","family","_el$18","_tmpl$5","_$mergeProps","_$createComponent","_$className","_$setStyleProperty"],"sources":["../../../src/components/theme/theme-picker.tsx"],"sourcesContent":["import type { ComponentProps } from 'solid-js'\nimport { For, Show, splitProps } from 'solid-js'\nimport { cn } from '#lib/utils'\nimport type { ThemeVariant } from '#lib/themes'\nimport { Button } from '../ui/button/button'\n\n/**\n * ThemeSwatch.\n *\n * The colours of a theme, as a small readable strip: the canvas, a card, the\n * primary, an accent and the destructive fill. Enough to tell two dark themes\n * apart at a glance and to recognise the one you want without applying it.\n *\n * A swatch is **read from the variant object**, not from a stylesheet, so a picker\n * can show a theme that is not currently applied — which is the whole point of a\n * picker. That is also why the catalogue is data rather than CSS.\n */\nexport type ThemeSwatchProps = ComponentProps<'span'> & {\n theme: ThemeVariant\n /** Draw the swatch at the given size. */\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst swatchSizes = {\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n} as const\n\nexport function ThemeSwatch(props: ThemeSwatchProps) {\n const [local, rest] = splitProps(props, ['class', 'theme', 'size'])\n const colors = () => local.theme.colors\n\n return (\n <span\n data-slot=\"theme-swatch\"\n aria-hidden=\"true\"\n class={cn(\n 'border-border inline-flex shrink-0 overflow-hidden rounded-md border',\n local.class\n )}\n {...rest}\n >\n <For\n each={[\n colors().background,\n colors().card,\n colors().primary,\n colors().accent,\n colors().destructive,\n ]}\n >\n {(color) => (\n <span\n class={cn('block', swatchSizes[local.size ?? 'md'])}\n style={{ 'background-color': color }}\n />\n )}\n </For>\n </span>\n )\n}\n\n/**\n * ThemePreview.\n *\n * A miniature of the interface, painted in a theme's own colours: a rail, a panel,\n * a heading, body text, a primary button and a destructive one.\n *\n * The point is that a colour strip cannot answer the question a user actually has —\n * \"would I want to look at this all day?\" — and a real preview can. It is drawn\n * with inline colours from the variant rather than by applying the theme, so a list\n * of twenty previews costs one object read each instead of twenty theme swaps.\n */\nexport type ThemePreviewProps = ComponentProps<'div'> & {\n theme: ThemeVariant\n /** Highlight the preview as the current selection. */\n selected?: boolean\n}\n\nexport function ThemePreview(props: ThemePreviewProps) {\n const [local, rest] = splitProps(props, ['class', 'theme', 'selected'])\n const c = () => local.theme.colors\n\n return (\n <div\n data-slot=\"theme-preview\"\n class={cn(\n 'w-44 overflow-hidden rounded-lg border shadow-xs',\n local.selected ? 'border-primary ring-3 ring-primary-subtle' : 'border-border',\n local.class\n )}\n style={{ 'background-color': c().background }}\n {...rest}\n >\n <div class=\"flex h-24\">\n {/* A rail and a panel: the two surfaces a user spends the day looking at. */}\n <div\n class=\"theme-preview-edge flex w-6 flex-col items-center gap-1.5 border-e py-2\"\n style={{ 'background-color': c().sidebar, '--preview-edge': c().sidebarBorder }}\n >\n <span class=\"size-2.5 rounded-sm\" style={{ 'background-color': c().primary }} />\n <span class=\"size-2.5 rounded-sm\" style={{ 'background-color': c().sidebarAccent }} />\n <span class=\"size-2.5 rounded-sm\" style={{ 'background-color': c().sidebarAccent }} />\n </div>\n <div class=\"flex flex-1 flex-col gap-1.5 p-2\">\n <div class=\"h-1.5 w-14 rounded-full\" style={{ 'background-color': c().foreground }} />\n <div class=\"h-1 w-20 rounded-full\" style={{ 'background-color': c().mutedForeground }} />\n <div class=\"h-1 w-16 rounded-full\" style={{ 'background-color': c().mutedForeground }} />\n <div class=\"mt-auto flex items-center gap-1\">\n <span class=\"h-3 w-9 rounded-sm\" style={{ 'background-color': c().primary }} />\n <span class=\"h-3 w-6 rounded-sm\" style={{ 'background-color': c().destructive }} />\n <span class=\"h-3 w-6 rounded-sm\" style={{ 'background-color': c().secondary }} />\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * ThemePicker.\n *\n * The catalogue as a selectable grid. One appearance at a time — a light picker\n * lists light themes and a dark picker lists dark ones — because choosing a dark\n * theme while looking at a light interface is a choice nobody can evaluate.\n *\n * `onSelect` rather than an internal signal: the selection belongs to the\n * preference the provider owns, and a picker that kept its own copy could disagree\n * with what is applied.\n */\nexport type ThemePickerProps = ComponentProps<'div'> & {\n themes: readonly ThemeVariant[]\n selectedId: string\n onThemeSelect: (theme: ThemeVariant) => void\n}\n\nexport function ThemePicker(props: ThemePickerProps) {\n const [local, rest] = splitProps(props, ['class', 'themes', 'selectedId', 'onThemeSelect'])\n\n return (\n <div\n data-slot=\"theme-picker\"\n role=\"radiogroup\"\n aria-label=\"Theme\"\n class={cn('flex flex-wrap gap-3', local.class)}\n {...rest}\n >\n <For each={local.themes}>\n {(theme) => (\n <Button\n as=\"button\"\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n role=\"radio\"\n aria-checked={local.selectedId === theme.id}\n aria-label={`${theme.familyLabel} ${theme.label}`}\n class=\"h-auto flex-col gap-1.5 p-0 hover:bg-transparent\"\n onClick={() => local.onThemeSelect(theme)}\n >\n <ThemePreview theme={theme} selected={local.selectedId === theme.id} />\n <span class=\"flex flex-col items-center\">\n <span class=\"text-xs font-medium\">{theme.label}</span>\n <Show when={theme.family !== 'adea'}>\n <span class=\"text-muted-foreground text-2xs\">{theme.familyLabel}</span>\n </Show>\n </span>\n </Button>\n )}\n </For>\n </div>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import type { JSX } from 'solid-js';
2
+ import { type ThemeAppearance, type ThemeVariant } from '#lib/themes';
3
+ /**
4
+ * ThemeProvider.
5
+ *
6
+ * Owns the appearance preference and applies it to the document. One provider near
7
+ * the root; everything below reads it.
8
+ *
9
+ * ## What a preference is
10
+ *
11
+ * Four independent choices, and keeping them independent is the point:
12
+ *
13
+ * - **appearance** — light, dark, or follow the system.
14
+ * - **a theme per appearance** — so a user can run Catppuccin Mocha by night and
15
+ * Solarized Light by day without re-choosing when the system flips.
16
+ * - **an accent** — adea's six presets, which re-colour the interactive roles on
17
+ * top of whichever theme is active.
18
+ * - **a font** — the interface face.
19
+ *
20
+ * Four axes rather than one list of presets, because they compose: a user who wants
21
+ * Nord with a violet accent and the system font should not need someone to author
22
+ * that combination.
23
+ *
24
+ * ## Why the variants are applied as inline properties
25
+ *
26
+ * The catalogue is data, and a theme is applied by writing its roles onto
27
+ * `<html>` as custom properties. That is what makes an imported palette work
28
+ * without a hand-written `[data-theme]` block per theme, and it is why a settings
29
+ * UI can show a preview by reading the same object rather than by loading a
30
+ * stylesheet. `theme.css` keeps the default theme's values so the first paint is
31
+ * correct before any script runs.
32
+ */
33
+ export type ThemeSelection = {
34
+ /** `system` follows `prefers-color-scheme` and updates when it changes. */
35
+ appearance: ThemeAppearance | 'system';
36
+ /** The variant to use when the resolved appearance is light. */
37
+ lightThemeId: string;
38
+ /** The variant to use when the resolved appearance is dark. */
39
+ darkThemeId: string;
40
+ /** An `accentPresets` id, or `theme` for the variant's own primary. */
41
+ accent: string;
42
+ /** A `fontOptions` id, or `space-grotesk` for the default. */
43
+ font: string;
44
+ /**
45
+ * `comfortable` is the system's default geometry; `compact` moves the control
46
+ * ladder down one rung.
47
+ *
48
+ * Optional, and defaulted on read, so a preference stored before density existed
49
+ * keeps working and `ThemeSelection` stays assignable without it.
50
+ */
51
+ density?: ThemeDensity;
52
+ };
53
+ export declare const defaultThemeSelection: ThemeSelection;
54
+ /**
55
+ * The two density rungs.
56
+ *
57
+ * `comfortable` is the geometry in `theme.css`, so it is the absence of an
58
+ * attribute rather than a value: a document that ships no `data-density` at all
59
+ * renders correctly, which is what keeps this additive.
60
+ */
61
+ export type ThemeDensity = 'comfortable' | 'compact';
62
+ /**
63
+ * A stored selection's density, defaulted.
64
+ *
65
+ * The stored value is read through here rather than trusted, because a preference
66
+ * written before density existed has no `density` key and a hand-edited store may
67
+ * hold anything.
68
+ */
69
+ export declare function resolvedDensity(selection: ThemeSelection): ThemeDensity;
70
+ export type ThemeContextValue = {
71
+ /** The preference as stored. */
72
+ selection: () => ThemeSelection;
73
+ /** What the preference resolves to right now, after `system`. */
74
+ resolvedAppearance: () => ThemeAppearance;
75
+ /** The variant in use. */
76
+ variant: () => ThemeVariant;
77
+ /** Update part of the preference. */
78
+ setSelection: (patch: Partial<ThemeSelection>) => void;
79
+ /** The catalogue, so a picker does not import it separately. */
80
+ themes: readonly ThemeVariant[];
81
+ };
82
+ export declare function useTheme(): ThemeContextValue;
83
+ export type ThemeProviderProps = {
84
+ children?: JSX.Element;
85
+ /** Where the preference is persisted. Distinct per application. */
86
+ storageKey?: string;
87
+ /** Start from this instead of the stored preference. */
88
+ initial?: Partial<ThemeSelection>;
89
+ };
90
+ export declare function ThemeProvider(props: ThemeProviderProps): JSX.Element;
91
+ /**
92
+ * A string as a JavaScript literal that is also safe inside an inline `<script>`.
93
+ *
94
+ * `JSON.stringify` produces a correct JavaScript literal, and it is **not** safe
95
+ * here: it leaves `<` and `>` alone, so a value containing `</script>` ends the tag
96
+ * early and everything after it is parsed as HTML. That is the classic inline-script
97
+ * injection, and it is a real one even though the value is a developer-supplied prop
98
+ * rather than user input — a prop can come from configuration, and a key that happens
99
+ * to contain a closing tag should not be able to execute.
100
+ *
101
+ * The escape is also correct JavaScript: `\u003c` is `<` to the parser, so the value
102
+ * is byte-identical at runtime and inert to the HTML tokenizer. `\u2028` and `\u2029`
103
+ * are escaped for the neighbouring reason — they are legal inside a JSON string and
104
+ * were, before ES2019, line terminators to a JavaScript parser.
105
+ *
106
+ * CodeQL flags the unescaped form as `js/bad-code-sanitization`, which is how this
107
+ * was found; `tests/theme-script.test.ts` pins it so it cannot come back.
108
+ */
109
+ export declare function inlineScriptLiteral(value: string): string;
110
+ /**
111
+ * The no-flash script.
112
+ *
113
+ * Rendered inline in `<head>` before any stylesheet that matters. Without it a dark
114
+ * preference paints the light theme first and then swaps, which is the flash every
115
+ * themed application has to solve and the one thing a provider cannot do from
116
+ * inside the body.
117
+ *
118
+ * Deliberately tiny and dependency-free: it reads the stored preference, resolves
119
+ * `system`, and sets the class. It does not apply the variant's roles — the default
120
+ * theme in `theme.css` covers the first paint, and the provider writes the rest on
121
+ * mount.
122
+ *
123
+ * The script reads two values out of `localStorage` and writes them to `dataset`,
124
+ * which is a *property* assignment rather than code: a stored accent or font id can
125
+ * set an attribute and cannot execute. The one value that reaches the source as text
126
+ * is `storageKey`, and it goes through {@link inlineScriptLiteral} for the reason
127
+ * documented there.
128
+ */
129
+ export declare function themeScript(storageKey?: string): string;
130
+ //# sourceMappingURL=theme-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../../src/components/theme/theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAWnC,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAA;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,2EAA2E;IAC3E,UAAU,EAAE,eAAe,GAAG,QAAQ,CAAA;IACtC,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAA;IACnB,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,cAOnC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,SAAS,CAAA;AAEpD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,cAAc,GAAG,YAAY,CAEvE;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gCAAgC;IAChC,SAAS,EAAE,MAAM,cAAc,CAAA;IAC/B,iEAAiE;IACjE,kBAAkB,EAAE,MAAM,eAAe,CAAA;IACzC,0BAA0B;IAC1B,OAAO,EAAE,MAAM,YAAY,CAAA;IAC3B,qCAAqC;IACrC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IACtD,gEAAgE;IAChE,MAAM,EAAE,SAAS,YAAY,EAAE,CAAA;CAChC,CAAA;AAID,wBAAgB,QAAQ,IAAI,iBAAiB,CAI5C;AAsCD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACtB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAClC,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,eA6FtD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,UAAU,SAAoB,GAAG,MAAM,CAElE"}