@adea-ai/ui 0.60.4 → 0.61.1

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 (1034) 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 +25 -0
  521. package/dist/r/account-menu.json +26 -0
  522. package/dist/r/alert-dialog.json +24 -0
  523. package/dist/r/alert.json +24 -0
  524. package/dist/r/app-shell.json +22 -0
  525. package/dist/r/aspect-ratio.json +22 -0
  526. package/dist/r/avatar.json +22 -0
  527. package/dist/r/badge.json +24 -0
  528. package/dist/r/board.json +22 -0
  529. package/dist/r/breadcrumb.json +24 -0
  530. package/dist/r/button-group.json +23 -0
  531. package/dist/r/button.json +24 -0
  532. package/dist/r/calendar.json +26 -0
  533. package/dist/r/card.json +22 -0
  534. package/dist/r/carousel.json +27 -0
  535. package/dist/r/chart.json +25 -0
  536. package/dist/r/checkbox.json +25 -0
  537. package/dist/r/code-block.json +25 -0
  538. package/dist/r/collapsible.json +24 -0
  539. package/dist/r/combobox.json +25 -0
  540. package/dist/r/command.json +25 -0
  541. package/dist/r/context-menu.json +25 -0
  542. package/dist/r/conversation.json +49 -0
  543. package/dist/r/detail-panel.json +25 -0
  544. package/dist/r/dialog.json +25 -0
  545. package/dist/r/diff-block.json +22 -0
  546. package/dist/r/drawer.json +24 -0
  547. package/dist/r/dropdown-menu.json +25 -0
  548. package/dist/r/empty.json +22 -0
  549. package/dist/r/entity-icon.json +22 -0
  550. package/dist/r/field.json +24 -0
  551. package/dist/r/hover-card.json +24 -0
  552. package/dist/r/input-group.json +22 -0
  553. package/dist/r/input-otp.json +24 -0
  554. package/dist/r/input.json +22 -0
  555. package/dist/r/item.json +22 -0
  556. package/dist/r/kbd.json +22 -0
  557. package/dist/r/label.json +22 -0
  558. package/dist/r/lib.json +50 -0
  559. package/dist/r/list-row.json +24 -0
  560. package/dist/r/menubar.json +25 -0
  561. package/dist/r/modal-dialog.json +23 -0
  562. package/dist/r/motion.json +22 -0
  563. package/dist/r/navigation-menu.json +25 -0
  564. package/dist/r/page.json +22 -0
  565. package/dist/r/pagination.json +25 -0
  566. package/dist/r/panel.json +22 -0
  567. package/dist/r/popover.json +24 -0
  568. package/dist/r/progress.json +24 -0
  569. package/dist/r/radio-group.json +25 -0
  570. package/dist/r/registry.json +1923 -0
  571. package/dist/r/resizable.json +25 -0
  572. package/dist/r/scroll-area.json +22 -0
  573. package/dist/r/select.json +25 -0
  574. package/dist/r/separator.json +24 -0
  575. package/dist/r/settings.json +22 -0
  576. package/dist/r/sheet.json +26 -0
  577. package/dist/r/side-rail.json +29 -0
  578. package/dist/r/sidebar-nav.json +25 -0
  579. package/dist/r/skeleton.json +22 -0
  580. package/dist/r/slider.json +24 -0
  581. package/dist/r/spinner.json +24 -0
  582. package/dist/r/src/components/composites/account-menu/account-menu.tsx +150 -0
  583. package/dist/r/src/components/composites/account-menu/index.ts +1 -0
  584. package/dist/r/src/components/composites/list-row/index.ts +1 -0
  585. package/dist/r/src/components/composites/list-row/list-row.tsx +116 -0
  586. package/dist/r/src/components/composites/settings/index.ts +1 -0
  587. package/dist/r/src/components/composites/settings/settings.tsx +142 -0
  588. package/dist/r/src/components/composites/stat/index.ts +9 -0
  589. package/dist/r/src/components/composites/stat/stat.tsx +155 -0
  590. package/dist/r/src/components/composites/update-dialog/index.ts +7 -0
  591. package/dist/r/src/components/composites/update-dialog/update-dialog.tsx +529 -0
  592. package/dist/r/src/components/composites/workspace-mark/index.ts +1 -0
  593. package/dist/r/src/components/composites/workspace-mark/workspace-mark.tsx +72 -0
  594. package/dist/r/src/components/conversation/conversation-avatar.tsx +60 -0
  595. package/dist/r/src/components/conversation/conversation-surface.tsx +107 -0
  596. package/dist/r/src/components/conversation/index.ts +25 -0
  597. package/dist/r/src/components/conversation/message-composer.tsx +239 -0
  598. package/dist/r/src/components/conversation/message-row.tsx +387 -0
  599. package/dist/r/src/components/conversation/thread-panel.tsx +141 -0
  600. package/dist/r/src/components/layout/app-shell/app-shell.tsx +92 -0
  601. package/dist/r/src/components/layout/app-shell/index.ts +1 -0
  602. package/dist/r/src/components/layout/page/index.ts +9 -0
  603. package/dist/r/src/components/layout/page/page.tsx +122 -0
  604. package/dist/r/src/components/layout/panel/index.ts +12 -0
  605. package/dist/r/src/components/layout/panel/panel.tsx +166 -0
  606. package/dist/r/src/components/layout/side-rail/index.ts +12 -0
  607. package/dist/r/src/components/layout/side-rail/side-rail-context.ts +42 -0
  608. package/dist/r/src/components/layout/side-rail/side-rail.tsx +405 -0
  609. package/dist/r/src/components/layout/sidebar-nav/index.ts +14 -0
  610. package/dist/r/src/components/layout/sidebar-nav/sidebar-nav.tsx +244 -0
  611. package/dist/r/src/components/layout/status-bar/index.ts +1 -0
  612. package/dist/r/src/components/layout/status-bar/status-bar.tsx +73 -0
  613. package/dist/r/src/components/layout/top-bar/index.ts +10 -0
  614. package/dist/r/src/components/layout/top-bar/top-bar.tsx +166 -0
  615. package/dist/r/src/components/motion/index.ts +2 -0
  616. package/dist/r/src/components/motion/presence.tsx +32 -0
  617. package/dist/r/src/components/theme/appearance-panel.tsx +179 -0
  618. package/dist/r/src/components/theme/index.ts +22 -0
  619. package/dist/r/src/components/theme/theme-picker.tsx +174 -0
  620. package/dist/r/src/components/theme/theme-provider.tsx +309 -0
  621. package/dist/r/src/components/theme/theme-toggle.tsx +64 -0
  622. package/dist/r/src/components/ui/accordion/accordion.tsx +66 -0
  623. package/dist/r/src/components/ui/accordion/index.ts +1 -0
  624. package/dist/r/src/components/ui/alert/alert.tsx +95 -0
  625. package/dist/r/src/components/ui/alert/index.ts +1 -0
  626. package/dist/r/src/components/ui/alert-dialog/alert-dialog.tsx +176 -0
  627. package/dist/r/src/components/ui/alert-dialog/index.ts +13 -0
  628. package/dist/r/src/components/ui/aspect-ratio/aspect-ratio.tsx +38 -0
  629. package/dist/r/src/components/ui/aspect-ratio/index.ts +1 -0
  630. package/dist/r/src/components/ui/avatar/avatar.tsx +114 -0
  631. package/dist/r/src/components/ui/avatar/index.ts +9 -0
  632. package/dist/r/src/components/ui/badge/badge.tsx +59 -0
  633. package/dist/r/src/components/ui/badge/index.ts +1 -0
  634. package/dist/r/src/components/ui/board/board.tsx +254 -0
  635. package/dist/r/src/components/ui/board/index.ts +10 -0
  636. package/dist/r/src/components/ui/breadcrumb/breadcrumb.tsx +117 -0
  637. package/dist/r/src/components/ui/breadcrumb/index.ts +9 -0
  638. package/dist/r/src/components/ui/button/button.tsx +89 -0
  639. package/dist/r/src/components/ui/button/index.ts +1 -0
  640. package/dist/r/src/components/ui/button-group/button-group.tsx +92 -0
  641. package/dist/r/src/components/ui/button-group/index.ts +6 -0
  642. package/dist/r/src/components/ui/calendar/calendar.tsx +277 -0
  643. package/dist/r/src/components/ui/calendar/index.ts +1 -0
  644. package/dist/r/src/components/ui/card/card.tsx +82 -0
  645. package/dist/r/src/components/ui/card/index.ts +10 -0
  646. package/dist/r/src/components/ui/carousel/carousel.tsx +209 -0
  647. package/dist/r/src/components/ui/carousel/index.ts +1 -0
  648. package/dist/r/src/components/ui/chart/chart.tsx +413 -0
  649. package/dist/r/src/components/ui/chart/index.ts +17 -0
  650. package/dist/r/src/components/ui/checkbox/checkbox.tsx +99 -0
  651. package/dist/r/src/components/ui/checkbox/index.ts +1 -0
  652. package/dist/r/src/components/ui/code-block/code-block.tsx +238 -0
  653. package/dist/r/src/components/ui/code-block/index.ts +1 -0
  654. package/dist/r/src/components/ui/collapsible/collapsible.tsx +54 -0
  655. package/dist/r/src/components/ui/collapsible/index.ts +1 -0
  656. package/dist/r/src/components/ui/combobox/combobox.tsx +142 -0
  657. package/dist/r/src/components/ui/combobox/index.ts +10 -0
  658. package/dist/r/src/components/ui/command/command.tsx +214 -0
  659. package/dist/r/src/components/ui/command/index.ts +12 -0
  660. package/dist/r/src/components/ui/context-menu/context-menu.tsx +163 -0
  661. package/dist/r/src/components/ui/context-menu/index.ts +15 -0
  662. package/dist/r/src/components/ui/detail-panel/detail-panel.tsx +161 -0
  663. package/dist/r/src/components/ui/detail-panel/index.ts +9 -0
  664. package/dist/r/src/components/ui/dialog/dialog.tsx +138 -0
  665. package/dist/r/src/components/ui/dialog/index.ts +14 -0
  666. package/dist/r/src/components/ui/diff-block/diff-block.tsx +286 -0
  667. package/dist/r/src/components/ui/diff-block/index.ts +11 -0
  668. package/dist/r/src/components/ui/drawer/drawer.tsx +144 -0
  669. package/dist/r/src/components/ui/drawer/index.ts +13 -0
  670. package/dist/r/src/components/ui/dropdown-menu/dropdown-menu.tsx +203 -0
  671. package/dist/r/src/components/ui/dropdown-menu/index.ts +18 -0
  672. package/dist/r/src/components/ui/empty/empty.tsx +104 -0
  673. package/dist/r/src/components/ui/empty/index.ts +10 -0
  674. package/dist/r/src/components/ui/entity-icon/entity-icon.tsx +154 -0
  675. package/dist/r/src/components/ui/entity-icon/index.ts +1 -0
  676. package/dist/r/src/components/ui/field/field.tsx +131 -0
  677. package/dist/r/src/components/ui/field/index.ts +11 -0
  678. package/dist/r/src/components/ui/hover-card/hover-card.tsx +48 -0
  679. package/dist/r/src/components/ui/hover-card/index.ts +1 -0
  680. package/dist/r/src/components/ui/input/index.ts +1 -0
  681. package/dist/r/src/components/ui/input/input.tsx +41 -0
  682. package/dist/r/src/components/ui/input-group/index.ts +8 -0
  683. package/dist/r/src/components/ui/input-group/input-group.tsx +111 -0
  684. package/dist/r/src/components/ui/input-otp/index.ts +1 -0
  685. package/dist/r/src/components/ui/input-otp/input-otp.tsx +108 -0
  686. package/dist/r/src/components/ui/item/index.ts +10 -0
  687. package/dist/r/src/components/ui/item/item.tsx +146 -0
  688. package/dist/r/src/components/ui/kbd/index.ts +1 -0
  689. package/dist/r/src/components/ui/kbd/kbd.tsx +42 -0
  690. package/dist/r/src/components/ui/label/index.ts +1 -0
  691. package/dist/r/src/components/ui/label/label.tsx +36 -0
  692. package/dist/r/src/components/ui/menubar/index.ts +16 -0
  693. package/dist/r/src/components/ui/menubar/menubar.tsx +190 -0
  694. package/dist/r/src/components/ui/modal-dialog/index.ts +1 -0
  695. package/dist/r/src/components/ui/modal-dialog/modal-dialog.tsx +95 -0
  696. package/dist/r/src/components/ui/navigation-menu/index.ts +13 -0
  697. package/dist/r/src/components/ui/navigation-menu/navigation-menu.tsx +229 -0
  698. package/dist/r/src/components/ui/pagination/index.ts +8 -0
  699. package/dist/r/src/components/ui/pagination/pagination.tsx +144 -0
  700. package/dist/r/src/components/ui/popover/index.ts +10 -0
  701. package/dist/r/src/components/ui/popover/popover.tsx +81 -0
  702. package/dist/r/src/components/ui/progress/index.ts +1 -0
  703. package/dist/r/src/components/ui/progress/progress.tsx +67 -0
  704. package/dist/r/src/components/ui/radio-group/index.ts +1 -0
  705. package/dist/r/src/components/ui/radio-group/radio-group.tsx +78 -0
  706. package/dist/r/src/components/ui/resizable/index.ts +6 -0
  707. package/dist/r/src/components/ui/resizable/resizable.tsx +74 -0
  708. package/dist/r/src/components/ui/scroll-area/index.ts +1 -0
  709. package/dist/r/src/components/ui/scroll-area/scroll-area.tsx +66 -0
  710. package/dist/r/src/components/ui/select/index.ts +11 -0
  711. package/dist/r/src/components/ui/select/select.tsx +188 -0
  712. package/dist/r/src/components/ui/separator/index.ts +1 -0
  713. package/dist/r/src/components/ui/separator/separator.tsx +40 -0
  714. package/dist/r/src/components/ui/sheet/index.ts +13 -0
  715. package/dist/r/src/components/ui/sheet/sheet.tsx +132 -0
  716. package/dist/r/src/components/ui/skeleton/index.ts +1 -0
  717. package/dist/r/src/components/ui/skeleton/skeleton.tsx +28 -0
  718. package/dist/r/src/components/ui/slider/index.ts +1 -0
  719. package/dist/r/src/components/ui/slider/slider.tsx +81 -0
  720. package/dist/r/src/components/ui/spinner/index.ts +1 -0
  721. package/dist/r/src/components/ui/spinner/spinner.tsx +58 -0
  722. package/dist/r/src/components/ui/status-chip/index.ts +8 -0
  723. package/dist/r/src/components/ui/status-chip/status-chip.tsx +142 -0
  724. package/dist/r/src/components/ui/switch/index.ts +1 -0
  725. package/dist/r/src/components/ui/switch/switch.tsx +100 -0
  726. package/dist/r/src/components/ui/table/index.ts +11 -0
  727. package/dist/r/src/components/ui/table/table.tsx +125 -0
  728. package/dist/r/src/components/ui/tabs/index.ts +8 -0
  729. package/dist/r/src/components/ui/tabs/tabs.tsx +77 -0
  730. package/dist/r/src/components/ui/textarea/index.ts +1 -0
  731. package/dist/r/src/components/ui/textarea/textarea.tsx +36 -0
  732. package/dist/r/src/components/ui/toast/index.ts +1 -0
  733. package/dist/r/src/components/ui/toast/toast.tsx +220 -0
  734. package/dist/r/src/components/ui/toggle/index.ts +1 -0
  735. package/dist/r/src/components/ui/toggle/toggle.tsx +60 -0
  736. package/dist/r/src/components/ui/toggle-group/index.ts +6 -0
  737. package/dist/r/src/components/ui/toggle-group/toggle-group.tsx +66 -0
  738. package/dist/r/src/components/ui/tooltip/index.ts +9 -0
  739. package/dist/r/src/components/ui/tooltip/tooltip.tsx +102 -0
  740. package/dist/r/src/lib/keyed-rows.ts +68 -0
  741. package/dist/r/src/lib/overlay.ts +70 -0
  742. package/dist/r/src/lib/themes.ts +490 -0
  743. package/dist/r/src/lib/tokens.ts +688 -0
  744. package/dist/r/src/lib/utils.ts +76 -0
  745. package/dist/r/src/lib/variants.ts +62 -0
  746. package/dist/r/src/lib/version-notes.ts +65 -0
  747. package/dist/r/src/styles/base.css +644 -0
  748. package/dist/r/src/styles/fonts.css +26 -0
  749. package/dist/r/src/styles/globals.css +18 -0
  750. package/dist/r/src/styles/theme.css +864 -0
  751. package/dist/r/stat.json +24 -0
  752. package/dist/r/status-bar.json +22 -0
  753. package/dist/r/status-chip.json +23 -0
  754. package/dist/r/switch.json +24 -0
  755. package/dist/r/table.json +22 -0
  756. package/dist/r/tabs.json +24 -0
  757. package/dist/r/textarea.json +22 -0
  758. package/dist/r/theme.json +36 -0
  759. package/dist/r/theming.json +42 -0
  760. package/dist/r/toast.json +25 -0
  761. package/dist/r/toggle-group.json +25 -0
  762. package/dist/r/toggle.json +24 -0
  763. package/dist/r/tooltip.json +24 -0
  764. package/dist/r/top-bar.json +22 -0
  765. package/dist/r/update-dialog.json +28 -0
  766. package/dist/r/workspace-mark.json +23 -0
  767. package/package.json +75 -21
  768. package/registry.json +1923 -0
  769. package/src/components/composites/account-menu/account-menu.tsx +150 -0
  770. package/src/components/composites/account-menu/index.ts +1 -0
  771. package/src/components/composites/list-row/index.ts +1 -0
  772. package/src/components/composites/list-row/list-row.tsx +116 -0
  773. package/src/components/composites/settings/index.ts +1 -0
  774. package/src/components/composites/settings/settings.tsx +142 -0
  775. package/src/components/composites/stat/index.ts +9 -0
  776. package/src/components/composites/stat/stat.tsx +155 -0
  777. package/src/components/composites/update-dialog/index.ts +7 -0
  778. package/src/components/composites/update-dialog/update-dialog.tsx +529 -0
  779. package/src/components/composites/workspace-mark/index.ts +1 -0
  780. package/src/components/composites/workspace-mark/workspace-mark.tsx +72 -0
  781. package/src/components/conversation/conversation-avatar.tsx +60 -0
  782. package/src/components/conversation/conversation-surface.tsx +107 -0
  783. package/src/components/conversation/index.ts +25 -0
  784. package/src/components/conversation/message-composer.tsx +239 -0
  785. package/src/components/conversation/message-row.tsx +387 -0
  786. package/src/components/conversation/thread-panel.tsx +141 -0
  787. package/src/components/layout/app-shell/app-shell.tsx +92 -0
  788. package/src/components/layout/app-shell/index.ts +1 -0
  789. package/src/components/layout/page/index.ts +9 -0
  790. package/src/components/layout/page/page.tsx +122 -0
  791. package/src/components/layout/panel/index.ts +12 -0
  792. package/src/components/layout/panel/panel.tsx +166 -0
  793. package/src/components/layout/side-rail/index.ts +12 -0
  794. package/src/components/layout/side-rail/side-rail-context.ts +42 -0
  795. package/src/components/layout/side-rail/side-rail.tsx +405 -0
  796. package/src/components/layout/sidebar-nav/index.ts +14 -0
  797. package/src/components/layout/sidebar-nav/sidebar-nav.tsx +244 -0
  798. package/src/components/layout/status-bar/index.ts +1 -0
  799. package/src/components/layout/status-bar/status-bar.tsx +73 -0
  800. package/src/components/layout/top-bar/index.ts +10 -0
  801. package/src/components/layout/top-bar/top-bar.tsx +166 -0
  802. package/src/components/motion/index.ts +2 -0
  803. package/src/components/motion/presence.tsx +32 -0
  804. package/src/components/theme/appearance-panel.tsx +179 -0
  805. package/src/components/theme/index.ts +22 -0
  806. package/src/components/theme/theme-picker.tsx +174 -0
  807. package/src/components/theme/theme-provider.tsx +309 -0
  808. package/src/components/theme/theme-toggle.tsx +64 -0
  809. package/src/components/ui/accordion/accordion.tsx +66 -0
  810. package/src/components/ui/accordion/index.ts +1 -0
  811. package/src/components/ui/alert/alert.tsx +95 -0
  812. package/src/components/ui/alert/index.ts +1 -0
  813. package/src/components/ui/alert-dialog/alert-dialog.tsx +176 -0
  814. package/src/components/ui/alert-dialog/index.ts +13 -0
  815. package/src/components/ui/aspect-ratio/aspect-ratio.tsx +38 -0
  816. package/src/components/ui/aspect-ratio/index.ts +1 -0
  817. package/src/components/ui/avatar/avatar.tsx +114 -0
  818. package/src/components/ui/avatar/index.ts +9 -0
  819. package/src/components/ui/badge/badge.tsx +59 -0
  820. package/src/components/ui/badge/index.ts +1 -0
  821. package/src/components/ui/board/board.tsx +254 -0
  822. package/src/components/ui/board/index.ts +10 -0
  823. package/src/components/ui/breadcrumb/breadcrumb.tsx +117 -0
  824. package/src/components/ui/breadcrumb/index.ts +9 -0
  825. package/src/components/ui/button/button.tsx +89 -0
  826. package/src/components/ui/button/index.ts +1 -0
  827. package/src/components/ui/button-group/button-group.tsx +92 -0
  828. package/src/components/ui/button-group/index.ts +6 -0
  829. package/src/components/ui/calendar/calendar.tsx +277 -0
  830. package/src/components/ui/calendar/index.ts +1 -0
  831. package/src/components/ui/card/card.tsx +82 -0
  832. package/src/components/ui/card/index.ts +10 -0
  833. package/src/components/ui/carousel/carousel.tsx +209 -0
  834. package/src/components/ui/carousel/index.ts +1 -0
  835. package/src/components/ui/chart/chart.tsx +413 -0
  836. package/src/components/ui/chart/index.ts +17 -0
  837. package/src/components/ui/checkbox/checkbox.tsx +99 -0
  838. package/src/components/ui/checkbox/index.ts +1 -0
  839. package/src/components/ui/code-block/code-block.tsx +238 -0
  840. package/src/components/ui/code-block/index.ts +1 -0
  841. package/src/components/ui/collapsible/collapsible.tsx +54 -0
  842. package/src/components/ui/collapsible/index.ts +1 -0
  843. package/src/components/ui/combobox/combobox.tsx +142 -0
  844. package/src/components/ui/combobox/index.ts +10 -0
  845. package/src/components/ui/command/command.tsx +214 -0
  846. package/src/components/ui/command/index.ts +12 -0
  847. package/src/components/ui/context-menu/context-menu.tsx +163 -0
  848. package/src/components/ui/context-menu/index.ts +15 -0
  849. package/src/components/ui/detail-panel/detail-panel.tsx +161 -0
  850. package/src/components/ui/detail-panel/index.ts +9 -0
  851. package/src/components/ui/dialog/dialog.tsx +138 -0
  852. package/src/components/ui/dialog/index.ts +14 -0
  853. package/src/components/ui/diff-block/diff-block.tsx +286 -0
  854. package/src/components/ui/diff-block/index.ts +11 -0
  855. package/src/components/ui/drawer/drawer.tsx +144 -0
  856. package/src/components/ui/drawer/index.ts +13 -0
  857. package/src/components/ui/dropdown-menu/dropdown-menu.tsx +203 -0
  858. package/src/components/ui/dropdown-menu/index.ts +18 -0
  859. package/src/components/ui/empty/empty.tsx +104 -0
  860. package/src/components/ui/empty/index.ts +10 -0
  861. package/src/components/ui/entity-icon/entity-icon.tsx +154 -0
  862. package/src/components/ui/entity-icon/index.ts +1 -0
  863. package/src/components/ui/field/field.tsx +131 -0
  864. package/src/components/ui/field/index.ts +11 -0
  865. package/src/components/ui/hover-card/hover-card.tsx +48 -0
  866. package/src/components/ui/hover-card/index.ts +1 -0
  867. package/src/components/ui/input/index.ts +1 -0
  868. package/src/components/ui/input/input.tsx +41 -0
  869. package/src/components/ui/input-group/index.ts +8 -0
  870. package/src/components/ui/input-group/input-group.tsx +111 -0
  871. package/src/components/ui/input-otp/index.ts +1 -0
  872. package/src/components/ui/input-otp/input-otp.tsx +108 -0
  873. package/src/components/ui/item/index.ts +10 -0
  874. package/src/components/ui/item/item.tsx +146 -0
  875. package/src/components/ui/kbd/index.ts +1 -0
  876. package/src/components/ui/kbd/kbd.tsx +42 -0
  877. package/src/components/ui/label/index.ts +1 -0
  878. package/src/components/ui/label/label.tsx +36 -0
  879. package/src/components/ui/menubar/index.ts +16 -0
  880. package/src/components/ui/menubar/menubar.tsx +190 -0
  881. package/src/components/ui/modal-dialog/index.ts +1 -0
  882. package/src/components/ui/modal-dialog/modal-dialog.tsx +95 -0
  883. package/src/components/ui/navigation-menu/index.ts +13 -0
  884. package/src/components/ui/navigation-menu/navigation-menu.tsx +229 -0
  885. package/src/components/ui/pagination/index.ts +8 -0
  886. package/src/components/ui/pagination/pagination.tsx +144 -0
  887. package/src/components/ui/popover/index.ts +10 -0
  888. package/src/components/ui/popover/popover.tsx +81 -0
  889. package/src/components/ui/progress/index.ts +1 -0
  890. package/src/components/ui/progress/progress.tsx +67 -0
  891. package/src/components/ui/radio-group/index.ts +1 -0
  892. package/src/components/ui/radio-group/radio-group.tsx +78 -0
  893. package/src/components/ui/resizable/index.ts +6 -0
  894. package/src/components/ui/resizable/resizable.tsx +74 -0
  895. package/src/components/ui/scroll-area/index.ts +1 -0
  896. package/src/components/ui/scroll-area/scroll-area.tsx +66 -0
  897. package/src/components/ui/select/index.ts +11 -0
  898. package/src/components/ui/select/select.tsx +188 -0
  899. package/src/components/ui/separator/index.ts +1 -0
  900. package/src/components/ui/separator/separator.tsx +40 -0
  901. package/src/components/ui/sheet/index.ts +13 -0
  902. package/src/components/ui/sheet/sheet.tsx +132 -0
  903. package/src/components/ui/skeleton/index.ts +1 -0
  904. package/src/components/ui/skeleton/skeleton.tsx +28 -0
  905. package/src/components/ui/slider/index.ts +1 -0
  906. package/src/components/ui/slider/slider.tsx +81 -0
  907. package/src/components/ui/spinner/index.ts +1 -0
  908. package/src/components/ui/spinner/spinner.tsx +58 -0
  909. package/src/components/ui/status-chip/index.ts +8 -0
  910. package/src/components/ui/status-chip/status-chip.tsx +142 -0
  911. package/src/components/ui/switch/index.ts +1 -0
  912. package/src/components/ui/switch/switch.tsx +100 -0
  913. package/src/components/ui/table/index.ts +11 -0
  914. package/src/components/ui/table/table.tsx +125 -0
  915. package/src/components/ui/tabs/index.ts +8 -0
  916. package/src/components/ui/tabs/tabs.tsx +77 -0
  917. package/src/components/ui/textarea/index.ts +1 -0
  918. package/src/components/ui/textarea/textarea.tsx +36 -0
  919. package/src/components/ui/toast/index.ts +1 -0
  920. package/src/components/ui/toast/toast.tsx +220 -0
  921. package/src/components/ui/toggle/index.ts +1 -0
  922. package/src/components/ui/toggle/toggle.tsx +60 -0
  923. package/src/components/ui/toggle-group/index.ts +6 -0
  924. package/src/components/ui/toggle-group/toggle-group.tsx +66 -0
  925. package/src/components/ui/tooltip/index.ts +9 -0
  926. package/src/components/ui/tooltip/tooltip.tsx +102 -0
  927. package/src/index.ts +154 -0
  928. package/src/lib/keyed-rows.ts +68 -0
  929. package/src/lib/overlay.ts +70 -0
  930. package/src/lib/themes.ts +490 -0
  931. package/src/lib/tokens.ts +688 -0
  932. package/src/lib/utils.ts +74 -4
  933. package/src/lib/variants.ts +62 -0
  934. package/src/lib/version-notes.ts +35 -0
  935. package/src/styles/base.css +489 -484
  936. package/src/styles/fonts.css +26 -0
  937. package/src/styles/globals.css +14 -3
  938. package/src/styles/theme.css +838 -229
  939. package/LICENSE +0 -201
  940. package/dist/components/account-drawer.d.ts +0 -11
  941. package/dist/components/account-drawer.js +0 -120
  942. package/dist/components/appearance.d.ts +0 -261
  943. package/dist/components/appearance.js +0 -802
  944. package/dist/components/on-screen-controls.d.ts +0 -8
  945. package/dist/components/on-screen-controls.js +0 -162
  946. package/dist/components/scene-settings.d.ts +0 -33
  947. package/dist/components/scene-settings.js +0 -253
  948. package/dist/components/theme-preview.d.ts +0 -40
  949. package/dist/components/theme-preview.js +0 -210
  950. package/dist/components/theme-provider.d.ts +0 -52
  951. package/dist/components/theme-provider.js +0 -128
  952. package/dist/components/theme-swatch.d.ts +0 -12
  953. package/dist/components/theme-swatch.js +0 -66
  954. package/dist/components/theme-toggle.d.ts +0 -7
  955. package/dist/components/theme-toggle.js +0 -64
  956. package/dist/components/ui/badge.d.ts +0 -8
  957. package/dist/components/ui/badge.js +0 -34
  958. package/dist/components/ui/button.d.ts +0 -9
  959. package/dist/components/ui/button.js +0 -52
  960. package/dist/components/ui/card.d.ts +0 -4
  961. package/dist/components/ui/card.js +0 -28
  962. package/dist/components/ui/dialog.d.ts +0 -15
  963. package/dist/components/ui/dialog.js +0 -104
  964. package/dist/components/ui/drawer.d.ts +0 -24
  965. package/dist/components/ui/drawer.js +0 -120
  966. package/dist/components/ui/dropdown-menu.d.ts +0 -35
  967. package/dist/components/ui/dropdown-menu.js +0 -180
  968. package/dist/components/ui/empty.d.ts +0 -12
  969. package/dist/components/ui/field.d.ts +0 -25
  970. package/dist/components/ui/field.js +0 -188
  971. package/dist/components/ui/input.d.ts +0 -3
  972. package/dist/components/ui/input.js +0 -22
  973. package/dist/components/ui/label.d.ts +0 -3
  974. package/dist/components/ui/label.js +0 -17
  975. package/dist/components/ui/radio-group.d.ts +0 -5
  976. package/dist/components/ui/radio-group.js +0 -39
  977. package/dist/components/ui/separator.d.ts +0 -7
  978. package/dist/components/ui/separator.js +0 -20
  979. package/dist/components/ui/skeleton.d.ts +0 -3
  980. package/dist/components/ui/skeleton.js +0 -17
  981. package/dist/components/ui/spinner.d.ts +0 -5
  982. package/dist/components/ui/spinner.js +0 -17
  983. package/dist/components/ui/switch.d.ts +0 -8
  984. package/dist/components/ui/switch.js +0 -59
  985. package/dist/components/ui/tabs.d.ts +0 -11
  986. package/dist/components/ui/tabs.js +0 -57
  987. package/dist/components/ui/toggle-group.d.ts +0 -13
  988. package/dist/components/ui/toggle-group.js +0 -95
  989. package/dist/components/ui/toggle.d.ts +0 -10
  990. package/dist/components/ui/toggle.js +0 -41
  991. package/dist/components/ui/tooltip.d.ts +0 -15
  992. package/dist/components/ui/tooltip.js +0 -55
  993. package/dist/components/version-dialog.d.ts +0 -25
  994. package/dist/components/version-dialog.js +0 -330
  995. package/dist/components/workspace-brand.d.ts +0 -5
  996. package/dist/components/workspace-brand.js +0 -13
  997. package/dist/components/workspace-logo.d.ts +0 -3
  998. package/dist/components/workspace-logo.js +0 -17
  999. package/src/components/account-drawer.tsx +0 -114
  1000. package/src/components/appearance.ts +0 -1112
  1001. package/src/components/on-screen-controls.tsx +0 -149
  1002. package/src/components/scene-settings.tsx +0 -199
  1003. package/src/components/theme-preview.tsx +0 -170
  1004. package/src/components/theme-provider.tsx +0 -214
  1005. package/src/components/theme-swatch.tsx +0 -49
  1006. package/src/components/theme-toggle.tsx +0 -48
  1007. package/src/components/ui/badge.tsx +0 -40
  1008. package/src/components/ui/button.tsx +0 -58
  1009. package/src/components/ui/card.tsx +0 -21
  1010. package/src/components/ui/dialog.tsx +0 -132
  1011. package/src/components/ui/drawer.tsx +0 -168
  1012. package/src/components/ui/dropdown-menu.tsx +0 -235
  1013. package/src/components/ui/empty.tsx +0 -97
  1014. package/src/components/ui/field.tsx +0 -220
  1015. package/src/components/ui/input.tsx +0 -20
  1016. package/src/components/ui/label.tsx +0 -19
  1017. package/src/components/ui/radio-group.tsx +0 -41
  1018. package/src/components/ui/separator.tsx +0 -28
  1019. package/src/components/ui/skeleton.tsx +0 -16
  1020. package/src/components/ui/spinner.tsx +0 -20
  1021. package/src/components/ui/switch.tsx +0 -59
  1022. package/src/components/ui/tabs.tsx +0 -76
  1023. package/src/components/ui/toggle-group.tsx +0 -98
  1024. package/src/components/ui/toggle.tsx +0 -42
  1025. package/src/components/ui/tooltip.tsx +0 -61
  1026. package/src/components/version-dialog.tsx +0 -368
  1027. package/src/components/workspace-brand.tsx +0 -18
  1028. package/src/components/workspace-logo.tsx +0 -21
  1029. package/src/index.tsx +0 -53
  1030. package/src/styles/auth-shell.css +0 -167
  1031. package/src/styles/conventional-workspace.css +0 -2858
  1032. package/src/styles/dev-view.css +0 -899
  1033. package/src/styles/workspace-shell.css +0 -82
  1034. package/tsconfig.json +0 -11
@@ -1,42 +1,26 @@
1
- /* Neutral Tailwind base layer for the shared UI kit: the state variants and
2
- utilities the components rely on. Framework-neutral CSS only — no component
3
- runtime, no styling tokens (those live in theme.css and friends). */
1
+ /* ============================================================================
2
+ * Adea base layer
3
+ * ============================================================================
4
+ *
5
+ * Framework-neutral CSS that the components depend on but that carries no
6
+ * token values (those live in `theme.css`):
7
+ *
8
+ * - the component-state variants Kobalte and corvu emit data attributes for
9
+ * - keyframes and entrance animations
10
+ * - the named utilities the design system exposes to consumers
11
+ * - the base layer: focus ring, scrollbars, selection, reduced-motion
12
+ *
13
+ * Everything here ships as CSS. Nothing in this file may be duplicated in a
14
+ * component's class list.
15
+ * ========================================================================== */
4
16
 
5
17
  @import 'tw-animate-css';
6
18
 
7
- @theme inline {
8
- @keyframes accordion-down {
9
- from {
10
- height: 0;
11
- }
12
- to {
13
- height: var(--accordion-panel-height, auto);
14
- }
15
- }
16
-
17
- @keyframes accordion-up {
18
- from {
19
- height: var(--accordion-panel-height, auto);
20
- }
21
- to {
22
- height: 0;
23
- }
24
- }
25
- }
26
-
27
- /* A tooltip is informational: neither its popper positioner nor its content may
28
- intercept the pointer and block the control the tooltip describes. The layer
29
- stack writes `pointer-events: auto` inline on the active layer, so the
30
- content needs `!important` to stay out of the pointer path. */
31
- [data-popper-positioner]:has(> [data-slot='tooltip-content']) {
32
- pointer-events: none;
33
- }
34
-
35
- [data-slot='tooltip-content'] {
36
- pointer-events: none !important;
37
- }
38
-
39
- /* Custom variants */
19
+ /* --- State variants ------------------------------------------------------
20
+ * Kobalte and corvu communicate state through data attributes. Spelling the
21
+ * mapping once here means a component writes `data-open:opacity-100` and gets
22
+ * the right behaviour from either library.
23
+ * ------------------------------------------------------------------------ */
40
24
  @custom-variant data-open {
41
25
  &:where([data-state='open']),
42
26
  &:where([data-open]:not([data-open='false'])) {
@@ -51,6 +35,16 @@
51
35
  }
52
36
  }
53
37
 
38
+ /* Kobalte marks every expanded disclosure and every open overlay with
39
+ `data-expanded`; the `data-state` spelling is kept too so a component
40
+ written against either protocol behaves the same. */
41
+ @custom-variant data-expanded {
42
+ &:where([data-state='expanded']),
43
+ &:where([data-expanded]:not([data-expanded='false'])) {
44
+ @slot;
45
+ }
46
+ }
47
+
54
48
  @custom-variant data-checked {
55
49
  &:where([data-state='checked']),
56
50
  &:where([data-checked]:not([data-checked='false'])) {
@@ -78,6 +72,19 @@
78
72
  }
79
73
  }
80
74
 
75
+ @custom-variant data-highlighted {
76
+ &:where([data-highlighted]) {
77
+ @slot;
78
+ }
79
+ }
80
+
81
+ @custom-variant data-invalid {
82
+ &:where([data-invalid='true']),
83
+ &:where([data-invalid]:not([data-invalid='false'])) {
84
+ @slot;
85
+ }
86
+ }
87
+
81
88
  @custom-variant data-active {
82
89
  &:where([data-state='active']),
83
90
  &:where([data-active]:not([data-active='false'])) {
@@ -97,543 +104,541 @@
97
104
  }
98
105
  }
99
106
 
100
- @utility no-scrollbar {
101
- -ms-overflow-style: none;
102
- scrollbar-width: none;
103
-
104
- &::-webkit-scrollbar {
105
- display: none;
106
- }
107
- }
108
-
109
- /* scroll-fade */
110
- @property --scroll-fade-t {
111
- syntax: '<length-percentage>';
112
- inherits: false;
113
- initial-value: 0px;
114
- }
115
- @property --scroll-fade-b {
116
- syntax: '<length-percentage>';
117
- inherits: false;
118
- initial-value: 0px;
119
- }
120
- @property --scroll-fade-s {
121
- syntax: '<length-percentage>';
122
- inherits: false;
123
- initial-value: 0px;
124
- }
125
- @property --scroll-fade-e {
126
- syntax: '<length-percentage>';
127
- inherits: false;
128
- initial-value: 0px;
129
- }
130
- @property --scroll-fade-mask {
131
- syntax: '*';
132
- inherits: false;
133
- }
134
-
107
+ /* --- Keyframes -----------------------------------------------------------
108
+ * Entrances only. Exits reuse the same geometry inverted through
109
+ * `tw-animate-css`, and state changes use a transition rather than a keyframe
110
+ * so they stay interruptible.
111
+ * ------------------------------------------------------------------------ */
135
112
  @theme inline {
136
- @keyframes scroll-fade-reveal-t {
113
+ @keyframes ds-rise {
137
114
  from {
138
- --scroll-fade-t: 0px;
115
+ opacity: 0;
116
+ transform: translateY(8px);
139
117
  }
140
118
  to {
141
- --scroll-fade-t: var(
142
- --_scroll-fade-size-t,
143
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
144
- );
119
+ opacity: 1;
120
+ transform: translateY(0);
145
121
  }
146
122
  }
147
- @keyframes scroll-fade-reveal-b {
123
+
124
+ @keyframes ds-scale-in {
148
125
  from {
149
- --scroll-fade-b: var(
150
- --_scroll-fade-size-b,
151
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
152
- );
126
+ opacity: 0;
127
+ transform: scale(0.96);
153
128
  }
154
129
  to {
155
- --scroll-fade-b: 0px;
130
+ opacity: 1;
131
+ transform: scale(1);
156
132
  }
157
133
  }
158
- @keyframes scroll-fade-reveal-s {
134
+
135
+ @keyframes ds-shimmer {
159
136
  from {
160
- --scroll-fade-s: 0px;
137
+ background-position: 100% 0;
161
138
  }
162
139
  to {
163
- --scroll-fade-s: var(
164
- --_scroll-fade-size-s,
165
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
166
- );
140
+ background-position: 0 0;
167
141
  }
168
142
  }
169
- @keyframes scroll-fade-reveal-e {
143
+
144
+ @keyframes ds-indeterminate {
170
145
  from {
171
- --scroll-fade-e: var(
172
- --_scroll-fade-size-e,
173
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
174
- );
146
+ transform: translateX(-100%);
175
147
  }
176
148
  to {
177
- --scroll-fade-e: 0px;
149
+ transform: translateX(400%);
150
+ }
151
+ }
152
+
153
+ @keyframes ds-caret {
154
+ 0%,
155
+ 100% {
156
+ opacity: 1;
157
+ }
158
+ 50% {
159
+ opacity: 0;
178
160
  }
179
161
  }
180
162
  }
181
163
 
182
- @utility scroll-fade {
183
- --_scroll-fade-size-t: var(
184
- --scroll-fade-t-size,
185
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
186
- );
187
- --_scroll-fade-size-b: var(
188
- --scroll-fade-b-size,
189
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
190
- );
191
- --scroll-fade-block: linear-gradient(
164
+ /* --- Named utilities ----------------------------------------------------- */
165
+
166
+ /**
167
+ * Visible to a screen reader, invisible on screen.
168
+ *
169
+ * This is the single most important utility in the system and it must be
170
+ * available in every build, which is why it lives here rather than in the
171
+ * optional stylesheet. `display: none` would remove the content from the
172
+ * accessibility tree as well; this clips it to a pixel instead, so the text is
173
+ * still announced, still translatable, and still reachable by find-in-page.
174
+ */
175
+ @utility visually-hidden {
176
+ position: absolute;
177
+ width: 1px;
178
+ height: 1px;
179
+ padding: 0;
180
+ margin: -1px;
181
+ overflow: hidden;
182
+ clip-path: inset(50%);
183
+ white-space: nowrap;
184
+ border-width: 0;
185
+ }
186
+
187
+ /**
188
+ * Reverses `visually-hidden` at a breakpoint, for a label that is only visible
189
+ * when there is room for it. Written as a companion because the two rules have
190
+ * to travel together to stay correct.
191
+ */
192
+ @utility visually-hidden-until-* {
193
+ @media (width >= --value(--breakpoint-*)) {
194
+ position: static;
195
+ width: auto;
196
+ height: auto;
197
+ padding: 0;
198
+ margin: 0;
199
+ overflow: visible;
200
+ clip-path: none;
201
+ white-space: normal;
202
+ }
203
+ }
204
+
205
+ @utility no-scrollbar {
206
+ -ms-overflow-style: none;
207
+ scrollbar-width: none;
208
+
209
+ &::-webkit-scrollbar {
210
+ display: none;
211
+ }
212
+ }
213
+
214
+ /**
215
+ * The drag region of a frameless desktop window.
216
+ *
217
+ * Both macOS and Windows need draggable chrome and both need the controls
218
+ * inside it to opt back out — otherwise a button in the title bar drags the
219
+ * window instead of pressing. Keeping the pair together keeps the opt-out next
220
+ * to the opt-in instead of in a platform switch.
221
+ */
222
+ @utility window-drag {
223
+ -webkit-app-region: drag;
224
+ app-region: drag;
225
+ }
226
+
227
+ @utility window-no-drag {
228
+ -webkit-app-region: no-drag;
229
+ app-region: no-drag;
230
+ }
231
+
232
+ /**
233
+ * Inset the shell clear of the native window controls: the macOS traffic-light
234
+ * cluster (84px) and the Windows caption overlay (142px).
235
+ *
236
+ * Applied to the top bar's inline padding so its content box is what remains,
237
+ * which is why the search field stays optically centred in the space the user
238
+ * can actually see rather than in the window.
239
+ */
240
+ @utility window-inset-macos {
241
+ padding-inline-start: 84px;
242
+ }
243
+
244
+ @utility window-inset-windows {
245
+ padding-inline-end: 142px;
246
+ }
247
+
248
+ /**
249
+ * iOS/macOS display-cutout and home-indicator insets, resolved once.
250
+ *
251
+ * `--safe-top` is deliberately 0 outside a standalone display: with browser
252
+ * chrome on screen the user agent's own bar already clears the status bar, so a
253
+ * non-zero `env()` there paints a dead band above the header.
254
+ */
255
+ @utility p-safe {
256
+ padding-top: var(--safe-top, env(safe-area-inset-top, 0px));
257
+ padding-right: env(safe-area-inset-right, 0px);
258
+ padding-bottom: env(safe-area-inset-bottom, 0px);
259
+ padding-left: env(safe-area-inset-left, 0px);
260
+ }
261
+
262
+ @utility pb-safe {
263
+ padding-bottom: env(safe-area-inset-bottom, 0px);
264
+ }
265
+
266
+ /**
267
+ * Truncate to one line inside a flex child.
268
+ *
269
+ * Tailwind's `truncate` is the same declaration; this exists as a named
270
+ * intent so a reviewer can see that `min-width: 0` — the part that is easy to
271
+ * forget and that makes the ellipsis actually appear inside a flex row — was
272
+ * deliberate rather than incidental.
273
+ */
274
+ @utility text-truncate {
275
+ overflow: hidden;
276
+ text-overflow: ellipsis;
277
+ white-space: nowrap;
278
+ min-width: 0;
279
+ }
280
+
281
+ /**
282
+ * A fade at the top and bottom edge of a scroll box, so a long list reads as
283
+ * continuing rather than ending at the fold.
284
+ */
285
+ @utility scroll-shadow-y {
286
+ -webkit-mask-image: linear-gradient(
192
287
  to bottom,
193
288
  transparent 0,
194
- #000 var(--scroll-fade-t, 0px),
195
- #000 calc(100% - var(--scroll-fade-b, 0px)),
289
+ #000 2rem,
290
+ #000 calc(100% - 2rem),
196
291
  transparent 100%
197
292
  );
198
- -webkit-mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
199
- mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
200
- -webkit-mask-composite: source-in;
201
- mask-composite: intersect;
202
- -webkit-mask-repeat: no-repeat;
203
- mask-repeat: no-repeat;
204
-
205
- @supports (animation-timeline: scroll()) {
206
- animation:
207
- scroll-fade-reveal-t 1ms ease-in-out,
208
- scroll-fade-reveal-b 1ms ease-in-out;
209
- animation-timeline: scroll(self y), scroll(self y);
210
- animation-range:
211
- 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
212
- calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
213
- animation-fill-mode: both;
214
- }
215
-
216
- @supports not (animation-timeline: scroll()) {
217
- --scroll-fade-t: var(--_scroll-fade-size-t);
218
- --scroll-fade-b: var(--_scroll-fade-size-b);
219
- }
220
- }
221
-
222
- @utility scroll-fade-y {
223
- --_scroll-fade-size-t: var(
224
- --scroll-fade-t-size,
225
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
226
- );
227
- --_scroll-fade-size-b: var(
228
- --scroll-fade-b-size,
229
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
230
- );
231
- --scroll-fade-block: linear-gradient(
293
+ mask-image: linear-gradient(
232
294
  to bottom,
233
295
  transparent 0,
234
- #000 var(--scroll-fade-t, 0px),
235
- #000 calc(100% - var(--scroll-fade-b, 0px)),
296
+ #000 2rem,
297
+ #000 calc(100% - 2rem),
236
298
  transparent 100%
237
299
  );
238
- -webkit-mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
239
- mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
240
- -webkit-mask-composite: source-in;
241
- mask-composite: intersect;
242
- -webkit-mask-repeat: no-repeat;
243
- mask-repeat: no-repeat;
244
-
245
- @supports (animation-timeline: scroll()) {
246
- animation:
247
- scroll-fade-reveal-t 1ms ease-in-out,
248
- scroll-fade-reveal-b 1ms ease-in-out;
249
- animation-timeline: scroll(self y), scroll(self y);
250
- animation-range:
251
- 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
252
- calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
253
- animation-fill-mode: both;
254
- }
255
-
256
- @supports not (animation-timeline: scroll()) {
257
- --scroll-fade-t: var(--_scroll-fade-size-t);
258
- --scroll-fade-b: var(--_scroll-fade-size-b);
259
- }
260
- }
261
-
262
- @utility scroll-fade-x {
263
- --_scroll-fade-size-s: var(
264
- --scroll-fade-s-size,
265
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
266
- );
267
- --_scroll-fade-size-e: var(
268
- --scroll-fade-e-size,
269
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
270
- );
271
- --scroll-fade-inline: linear-gradient(
272
- to right,
273
- transparent 0,
274
- #000 var(--scroll-fade-s, 0px),
275
- #000 calc(100% - var(--scroll-fade-e, 0px)),
276
- transparent 100%
277
- );
278
- &:where([dir='rtl'], [dir='rtl'] *) {
279
- --scroll-fade-inline: linear-gradient(
280
- to left,
281
- transparent 0,
282
- #000 var(--scroll-fade-s, 0px),
283
- #000 calc(100% - var(--scroll-fade-e, 0px)),
284
- transparent 100%
285
- );
286
- }
287
- -webkit-mask-image: var(--scroll-fade-mask, var(--scroll-fade-inline));
288
- mask-image: var(--scroll-fade-mask, var(--scroll-fade-inline));
289
- -webkit-mask-composite: source-in;
290
- mask-composite: intersect;
291
- -webkit-mask-repeat: no-repeat;
292
- mask-repeat: no-repeat;
293
-
294
- @supports (animation-timeline: scroll()) {
295
- animation:
296
- scroll-fade-reveal-s 1ms ease-in-out,
297
- scroll-fade-reveal-e 1ms ease-in-out;
298
- animation-timeline: scroll(self inline), scroll(self inline);
299
- animation-range:
300
- 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
301
- calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
302
- animation-fill-mode: both;
303
- }
304
-
305
- @supports not (animation-timeline: scroll()) {
306
- --scroll-fade-s: var(--_scroll-fade-size-s);
307
- --scroll-fade-e: var(--_scroll-fade-size-e);
308
- }
309
- }
310
-
311
- @utility scroll-fade-t {
312
- --_scroll-fade-size-t: var(
313
- --scroll-fade-t-size,
314
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
315
- );
316
- --scroll-fade-mask: linear-gradient(
317
- to bottom,
318
- transparent 0,
319
- #000 var(--scroll-fade-t, 0px),
320
- #000 100%
321
- );
322
- -webkit-mask-image: var(--scroll-fade-mask);
323
- mask-image: var(--scroll-fade-mask);
324
- -webkit-mask-composite: source-in;
325
- mask-composite: intersect;
326
- -webkit-mask-repeat: no-repeat;
327
- mask-repeat: no-repeat;
328
-
329
- @supports (animation-timeline: scroll()) {
330
- animation: scroll-fade-reveal-t 1ms ease-in-out;
331
- animation-timeline: scroll(self y);
332
- animation-range: 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24));
333
- animation-fill-mode: both;
334
- }
335
-
336
- @supports not (animation-timeline: scroll()) {
337
- --scroll-fade-t: var(--_scroll-fade-size-t);
338
- }
339
300
  }
340
301
 
341
- @utility scroll-fade-b {
342
- --_scroll-fade-size-b: var(
343
- --scroll-fade-b-size,
344
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
345
- );
346
- --scroll-fade-mask: linear-gradient(
347
- to bottom,
348
- #000 0,
349
- #000 calc(100% - var(--scroll-fade-b, 0px)),
350
- transparent 100%
351
- );
352
- -webkit-mask-image: var(--scroll-fade-mask);
353
- mask-image: var(--scroll-fade-mask);
354
- -webkit-mask-composite: source-in;
355
- mask-composite: intersect;
356
- -webkit-mask-repeat: no-repeat;
357
- mask-repeat: no-repeat;
302
+ /**
303
+ * A hairline rule that survives a fractional device pixel ratio. Used for the
304
+ * rail and panel divides, where a blurry seam is the first thing the eye finds.
305
+ */
306
+ @utility hairline-x {
307
+ background-image: linear-gradient(to right, var(--border), var(--border));
308
+ background-size: 1px 100%;
309
+ background-repeat: no-repeat;
310
+ background-position: right center;
311
+ }
358
312
 
359
- @supports (animation-timeline: scroll()) {
360
- animation: scroll-fade-reveal-b 1ms ease-in-out;
361
- animation-timeline: scroll(self y);
362
- animation-range: calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
363
- animation-fill-mode: both;
364
- }
313
+ @utility hairline-y {
314
+ background-image: linear-gradient(to bottom, var(--border), var(--border));
315
+ background-size: 100% 1px;
316
+ background-repeat: no-repeat;
317
+ background-position: center bottom;
318
+ }
365
319
 
366
- @supports not (animation-timeline: scroll()) {
367
- --scroll-fade-b: var(--_scroll-fade-size-b);
368
- }
320
+ @utility animate-rise {
321
+ animation: ds-rise var(--duration-slow) var(--ease-out) backwards;
369
322
  }
370
323
 
371
- @utility scroll-fade-l {
372
- --_scroll-fade-size-s: var(
373
- --scroll-fade-s-size,
374
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
375
- );
376
- --scroll-fade-mask: linear-gradient(
377
- to right,
378
- transparent 0,
379
- #000 var(--scroll-fade-s, 0px),
380
- #000 100%
381
- );
382
- -webkit-mask-image: var(--scroll-fade-mask);
383
- mask-image: var(--scroll-fade-mask);
384
- -webkit-mask-composite: source-in;
385
- mask-composite: intersect;
386
- -webkit-mask-repeat: no-repeat;
387
- mask-repeat: no-repeat;
324
+ @utility animate-scale-in {
325
+ animation: ds-scale-in var(--duration-normal) var(--ease-out) backwards;
326
+ }
388
327
 
389
- @supports (animation-timeline: scroll()) {
390
- animation: scroll-fade-reveal-s 1ms ease-in-out;
391
- animation-timeline: scroll(self x);
392
- animation-range: 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24));
393
- animation-fill-mode: both;
394
- }
328
+ @utility animate-indeterminate {
329
+ animation: ds-indeterminate 1.4s ease-in-out infinite;
330
+ }
395
331
 
396
- @supports not (animation-timeline: scroll()) {
397
- --scroll-fade-s: var(--_scroll-fade-size-s);
398
- }
332
+ @utility animate-caret {
333
+ animation: ds-caret 1.1s step-end infinite;
399
334
  }
400
335
 
401
- @utility scroll-fade-r {
402
- --_scroll-fade-size-e: var(
403
- --scroll-fade-e-size,
404
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
405
- );
406
- --scroll-fade-mask: linear-gradient(
407
- to right,
408
- #000 0,
409
- #000 calc(100% - var(--scroll-fade-e, 0px)),
336
+ /* A skeleton shimmer that pauses for reduced motion — see the media query at
337
+ the foot of this file. */
338
+ @utility animate-shimmer {
339
+ background-image: linear-gradient(
340
+ 90deg,
341
+ transparent 0%,
342
+ color-mix(in oklch, var(--foreground) 8%, transparent) 50%,
410
343
  transparent 100%
411
344
  );
412
- -webkit-mask-image: var(--scroll-fade-mask);
413
- mask-image: var(--scroll-fade-mask);
414
- -webkit-mask-composite: source-in;
415
- mask-composite: intersect;
416
- -webkit-mask-repeat: no-repeat;
417
- mask-repeat: no-repeat;
418
-
419
- @supports (animation-timeline: scroll()) {
420
- animation: scroll-fade-reveal-e 1ms ease-in-out;
421
- animation-timeline: scroll(self x);
422
- animation-range: calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
423
- animation-fill-mode: both;
424
- }
425
-
426
- @supports not (animation-timeline: scroll()) {
427
- --scroll-fade-e: var(--_scroll-fade-size-e);
345
+ background-size: 200% 100%;
346
+ background-repeat: no-repeat;
347
+ animation: ds-shimmer 1.6s ease-in-out infinite;
348
+ }
349
+
350
+ /**
351
+ * A streaming caret: the block that trails the last character of a turn that is
352
+ * still arriving. It is a caret rather than a spinner because the text is already
353
+ * readable and growing — the reader wants to know *where* the stream is, not that
354
+ * something is happening somewhere.
355
+ *
356
+ * `inline-block` with a `1ch` width so it sits in the text flow, and the blink is
357
+ * a step rather than a fade so it reads as a terminal cursor. It is removed under
358
+ * `prefers-reduced-motion` — the accessibility block below zeroes the duration,
359
+ * which would leave a static block; the component hides it there instead.
360
+ */
361
+ @utility streaming-caret {
362
+ display: inline-block;
363
+ width: 0.5ch;
364
+ height: 1em;
365
+ margin-left: 0.1em;
366
+ translate: 0 0.1em;
367
+ background: var(--foreground);
368
+ animation: ds-caret 1s steps(2, start) infinite;
369
+
370
+ @media (prefers-reduced-motion: reduce) {
371
+ display: none;
428
372
  }
429
373
  }
430
374
 
431
- @utility scroll-fade-s {
432
- --_scroll-fade-size-s: var(
433
- --scroll-fade-s-size,
434
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
435
- );
436
- --scroll-fade-mask: linear-gradient(
437
- to right,
438
- transparent 0,
439
- #000 var(--scroll-fade-s, 0px),
440
- #000 100%
441
- );
442
- &:where([dir='rtl'], [dir='rtl'] *) {
443
- --scroll-fade-mask: linear-gradient(
444
- to left,
445
- transparent 0,
446
- #000 var(--scroll-fade-s, 0px),
447
- #000 100%
448
- );
375
+ @keyframes ds-caret {
376
+ 0%,
377
+ 50% {
378
+ opacity: 1;
449
379
  }
450
- -webkit-mask-image: var(--scroll-fade-mask);
451
- mask-image: var(--scroll-fade-mask);
452
- -webkit-mask-composite: source-in;
453
- mask-composite: intersect;
454
- -webkit-mask-repeat: no-repeat;
455
- mask-repeat: no-repeat;
456
-
457
- @supports (animation-timeline: scroll()) {
458
- animation: scroll-fade-reveal-s 1ms ease-in-out;
459
- animation-timeline: scroll(self inline);
460
- animation-range: 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24));
461
- animation-fill-mode: both;
380
+ 50.01%,
381
+ 100% {
382
+ opacity: 0;
462
383
  }
384
+ }
463
385
 
464
- @supports not (animation-timeline: scroll()) {
465
- --scroll-fade-s: var(--_scroll-fade-size-s);
466
- }
386
+ /* The glass treatment used by the top bar, the rail, and floating overlays.
387
+ `--glass-*` are private: a consumer chooses *whether* to be glassy through
388
+ the component prop, not by reaching for these. */
389
+ @utility glass-panel {
390
+ background: color-mix(in oklch, var(--chrome) calc(var(--chrome-alpha) * 100%), transparent);
391
+ backdrop-filter: blur(18px) saturate(1.6);
392
+ -webkit-backdrop-filter: blur(18px) saturate(1.6);
393
+ box-shadow: inset 0 1px 0 oklch(1 0 0 / 0.08);
467
394
  }
468
395
 
469
- @utility scroll-fade-e {
470
- --_scroll-fade-size-e: var(
471
- --scroll-fade-e-size,
472
- var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
473
- );
474
- --scroll-fade-mask: linear-gradient(
475
- to right,
476
- #000 0,
477
- #000 calc(100% - var(--scroll-fade-e, 0px)),
478
- transparent 100%
479
- );
480
- &:where([dir='rtl'], [dir='rtl'] *) {
481
- --scroll-fade-mask: linear-gradient(
482
- to left,
483
- #000 0,
484
- #000 calc(100% - var(--scroll-fade-e, 0px)),
485
- transparent 100%
486
- );
487
- }
488
- -webkit-mask-image: var(--scroll-fade-mask);
489
- mask-image: var(--scroll-fade-mask);
490
- -webkit-mask-composite: source-in;
491
- mask-composite: intersect;
492
- -webkit-mask-repeat: no-repeat;
493
- mask-repeat: no-repeat;
396
+ @utility glass-surface {
397
+ background: color-mix(in oklch, var(--card) 72%, transparent);
398
+ backdrop-filter: blur(12px) saturate(1.4);
399
+ -webkit-backdrop-filter: blur(12px) saturate(1.4);
400
+ }
494
401
 
495
- @supports (animation-timeline: scroll()) {
496
- animation: scroll-fade-reveal-e 1ms ease-in-out;
497
- animation-timeline: scroll(self inline);
498
- animation-range: calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
499
- animation-fill-mode: both;
500
- }
402
+ /* The focus ring. Applied by components that cannot use the global outline
403
+ because they need the ring to follow their own radius. */
404
+ @utility focus-ring {
405
+ transition:
406
+ border-color var(--duration-normal) var(--ease-out),
407
+ box-shadow var(--duration-normal) var(--ease-out);
501
408
 
502
- @supports not (animation-timeline: scroll()) {
503
- --scroll-fade-e: var(--_scroll-fade-size-e);
409
+ &:focus-visible {
410
+ outline: none;
411
+ border-color: var(--ring);
412
+ box-shadow: 0 0 0 3px var(--primary-subtle);
504
413
  }
505
414
  }
506
415
 
507
- @utility scroll-fade-* {
508
- --scroll-fade-size: calc(var(--spacing) * --value(integer));
509
- --scroll-fade-size: --value([length], [percentage]);
416
+ /* --- Scrollbars ----------------------------------------------------------
417
+ * Themed, thin, and out of the way. A default scrollbar is the single most
418
+ * obvious "this is a web page" tell in a desktop application: on macOS it is
419
+ * an overlay that vanishes, but on Windows and Linux it is a 15px chrome bar
420
+ * with the platform's own palette, which no theme can reach.
421
+ *
422
+ * The thumb is `--muted` at rest and `--foreground` on hover, so it is visible
423
+ * against every surface without a per-theme value, and it never competes with
424
+ * content for attention.
425
+ * ------------------------------------------------------------------------ */
426
+ ::-webkit-scrollbar {
427
+ width: 10px;
428
+ height: 10px;
510
429
  }
511
430
 
512
- @utility scroll-fade-t-* {
513
- --scroll-fade-t-size: calc(var(--spacing) * --value(integer));
514
- --scroll-fade-t-size: --value([length], [percentage]);
431
+ ::-webkit-scrollbar-track {
432
+ background: transparent;
515
433
  }
516
434
 
517
- @utility scroll-fade-b-* {
518
- --scroll-fade-b-size: calc(var(--spacing) * --value(integer));
519
- --scroll-fade-b-size: --value([length], [percentage]);
435
+ ::-webkit-scrollbar-thumb {
436
+ border: 3px solid transparent;
437
+ border-radius: 9999px;
438
+ background: var(--muted);
439
+ background-clip: content-box;
520
440
  }
521
441
 
522
- @utility scroll-fade-s-* {
523
- --scroll-fade-s-size: calc(var(--spacing) * --value(integer));
524
- --scroll-fade-s-size: --value([length], [percentage]);
442
+ ::-webkit-scrollbar-thumb:hover {
443
+ background: var(--muted-foreground);
444
+ background-clip: content-box;
525
445
  }
526
446
 
527
- @utility scroll-fade-e-* {
528
- --scroll-fade-e-size: calc(var(--spacing) * --value(integer));
529
- --scroll-fade-e-size: --value([length], [percentage]);
447
+ ::-webkit-scrollbar-corner {
448
+ background: transparent;
530
449
  }
531
450
 
532
- @utility scroll-fade-none {
533
- --scroll-fade-mask: none;
451
+ /* Firefox, which has no ::-webkit-scrollbar. */
452
+ @supports (scrollbar-width: thin) {
453
+ * {
454
+ scrollbar-width: thin;
455
+ scrollbar-color: var(--muted) transparent;
456
+ }
534
457
  }
535
458
 
536
- /* shimmer */
537
- @property --shimmer-angle {
538
- syntax: '<angle>';
539
- inherits: true;
540
- initial-value: 20deg;
541
- }
542
- @property --shimmer-image {
543
- syntax: '*';
544
- inherits: false;
545
- }
546
- @property --shimmer-text-fill {
547
- syntax: '*';
548
- inherits: false;
549
- }
459
+ /**
460
+ * An auto-hiding scrollbar, for a horizontal scroller inside a bordered
461
+ * surface — a code block, a diff, a wide table. The bar appears on hover and
462
+ * while the region has focus, so the surface reads as continuous code at rest
463
+ * and the affordance is there the moment a reader needs it.
464
+ */
465
+ @utility scroll-fade {
466
+ &::-webkit-scrollbar {
467
+ height: 6px;
468
+ width: 6px;
469
+ }
550
470
 
551
- @theme inline {
552
- @keyframes tw-shimmer {
553
- from {
554
- background-position: 100% 0;
555
- }
556
- to {
557
- background-position: 0 0;
471
+ &::-webkit-scrollbar-thumb {
472
+ border: 0;
473
+ border-radius: 9999px;
474
+ background: transparent;
475
+ transition: background var(--duration-normal) var(--ease-out);
476
+ }
477
+
478
+ &:hover::-webkit-scrollbar-thumb,
479
+ &:focus-within::-webkit-scrollbar-thumb {
480
+ background: var(--muted-foreground);
481
+ }
482
+
483
+ @supports (scrollbar-width: thin) {
484
+ scrollbar-width: thin;
485
+ scrollbar-color: transparent transparent;
486
+
487
+ &:hover,
488
+ &:focus-within {
489
+ scrollbar-color: var(--muted-foreground) transparent;
558
490
  }
559
491
  }
560
492
  }
561
493
 
562
- @utility shimmer {
563
- --_spread: var(--shimmer-spread, calc(3ch + 40px));
564
- --_base: currentColor;
565
- --_highlight: var(--shimmer-color, oklch(from currentColor l c h / calc(alpha* 0.2)));
494
+ /* --- Base layer ---------------------------------------------------------- */
495
+ @layer base {
496
+ *,
497
+ *::before,
498
+ *::after {
499
+ border-color: var(--border);
500
+ }
566
501
 
567
- background-image: var(
568
- --shimmer-image,
569
- linear-gradient(
570
- calc(90deg + var(--shimmer-angle)),
571
- var(--_base) calc(50% - var(--_spread)),
572
- color-mix(in oklch, var(--_highlight), var(--_base) 50%) calc(50% - var(--_spread) * 0.5),
573
- var(--_highlight) 50%,
574
- color-mix(in oklch, var(--_highlight), var(--_base) 50%) calc(50% + var(--_spread) * 0.5),
575
- var(--_base) calc(50% + var(--_spread))
576
- )
577
- );
578
- background-repeat: no-repeat;
579
- background-size: calc(200% + var(--_spread) * 2) 100%;
580
- background-position: 0 0;
581
- background-clip: text;
582
- -webkit-background-clip: text;
583
- -webkit-text-fill-color: var(--shimmer-text-fill, transparent);
584
- animation: tw-shimmer var(--shimmer-duration, 2s) linear infinite;
502
+ * {
503
+ /* A ring is drawn outside the box so it can never shift layout. */
504
+ outline-color: var(--ring);
505
+ outline-offset: 2px;
506
+ }
585
507
 
586
- @variant dark {
587
- --_highlight: var(
588
- --shimmer-color,
589
- oklch(from currentColor max(0.8, calc(l + 0.4)) c h / calc(alpha + 0.4))
590
- );
508
+ html {
509
+ /* From Chromium 140 the viewport propagates overscroll-behavior from the
510
+ ROOT element, so a `body` declaration is ignored and the macOS
511
+ rubber-band bounce returns inside a desktop webview. */
512
+ overscroll-behavior-y: none;
513
+ -webkit-font-smoothing: antialiased;
514
+ -moz-osx-font-smoothing: grayscale;
515
+ /* The interface default: 14px/1.55, matching the `text-sm` rung. */
516
+ font-family: var(--font-sans);
517
+ font-size: var(--text-sm);
518
+ line-height: var(--text-sm--line-height);
519
+ font-synthesis-weight: none;
520
+ text-rendering: optimizeLegibility;
591
521
  }
592
522
 
593
- &:where([dir='rtl'], [dir='rtl'] *) {
594
- animation-direction: reverse;
523
+ body {
524
+ margin: 0;
525
+ background: var(--background);
526
+ color: var(--foreground);
527
+ transition:
528
+ background-color var(--duration-normal) var(--ease-out),
529
+ color var(--duration-normal) var(--ease-out);
595
530
  }
596
- }
597
531
 
598
- @utility shimmer-once {
599
- animation-iteration-count: 1;
600
- }
532
+ /* Keyboard focus only. `:focus-visible` rather than `:focus` so a pointer
533
+ click never paints a ring. */
534
+ :focus-visible {
535
+ outline: 2px solid var(--ring);
536
+ outline-offset: 2px;
537
+ }
601
538
 
602
- @utility shimmer-reverse {
603
- animation-direction: reverse;
604
- }
539
+ ::selection {
540
+ background: var(--primary-subtle);
541
+ color: var(--foreground);
542
+ }
605
543
 
606
- @utility shimmer-none {
607
- --shimmer-image: none;
608
- --shimmer-text-fill: currentColor;
609
- }
544
+ /* Product expectation: every enabled control shows the pointer cursor
545
+ regardless of Tailwind preflight. */
546
+ button:not(:disabled),
547
+ [role='button']:not([aria-disabled='true']),
548
+ [role='tab']:not([aria-disabled='true']),
549
+ [role='menuitem']:not([aria-disabled='true']),
550
+ [role='option']:not([aria-disabled='true']) {
551
+ cursor: pointer;
552
+ }
610
553
 
611
- @utility shimmer-color-* {
612
- --shimmer-color: --value(--color, [color]);
613
- --shimmer-color: color-mix(
614
- in oklch,
615
- --value(--color, [color]) calc(--modifier(integer) * 1%),
616
- transparent
617
- );
554
+ button,
555
+ input,
556
+ select,
557
+ textarea {
558
+ font: inherit;
559
+ letter-spacing: inherit;
560
+ }
561
+
562
+ /* Scrollbars. The thumb is `--muted-foreground`, the lightest rung that
563
+ clears the WCAG 1.4.11 3:1 non-text floor against every surface a scroll
564
+ box sits on; it darkens to `--foreground` on hover so the affordance
565
+ reads as live. */
566
+ ::-webkit-scrollbar {
567
+ width: 10px;
568
+ height: 10px;
569
+ }
570
+
571
+ ::-webkit-scrollbar-track {
572
+ background: transparent;
573
+ }
574
+
575
+ ::-webkit-scrollbar-thumb {
576
+ background: color-mix(in oklch, var(--muted-foreground) 45%, transparent);
577
+ border: 3px solid transparent;
578
+ border-radius: 9999px;
579
+ background-clip: content-box;
580
+ }
581
+
582
+ ::-webkit-scrollbar-thumb:hover {
583
+ background: color-mix(in oklch, var(--muted-foreground) 75%, transparent);
584
+ background-clip: content-box;
585
+ }
586
+
587
+ ::-webkit-scrollbar-corner {
588
+ background: transparent;
589
+ }
590
+
591
+ code,
592
+ kbd,
593
+ pre,
594
+ samp {
595
+ font-family: var(--font-mono);
596
+ font-feature-settings: 'liga' 0;
597
+ }
618
598
  }
619
599
 
620
- @utility shimmer-duration-* {
621
- --shimmer-duration: calc(--value(integer) * 1ms);
600
+ /* --- Accessibility overrides ---------------------------------------------
601
+ * Kept last so they win the cascade against the rules above.
602
+ * ------------------------------------------------------------------------ */
603
+ @media (prefers-reduced-motion: reduce) {
604
+ *,
605
+ *::before,
606
+ *::after {
607
+ animation-duration: 0.01ms !important;
608
+ animation-iteration-count: 1 !important;
609
+ animation-delay: 0s !important;
610
+ transition-duration: 0.01ms !important;
611
+ scroll-behavior: auto !important;
612
+ }
622
613
  }
623
614
 
624
- @utility shimmer-spread-* {
625
- --shimmer-spread: calc(var(--spacing) * --value(integer));
626
- --shimmer-spread: --value([length], [percentage]);
615
+ @media (prefers-reduced-transparency: reduce) {
616
+ .glass-panel,
617
+ .glass-surface {
618
+ backdrop-filter: none !important;
619
+ -webkit-backdrop-filter: none !important;
620
+ background: var(--background) !important;
621
+ }
627
622
  }
628
623
 
629
- @utility shimmer-angle-* {
630
- --shimmer-angle: calc(--value(integer) * 1deg);
624
+ @media (prefers-contrast: more) {
625
+ :root {
626
+ --border: var(--foreground);
627
+ }
628
+
629
+ .glass-panel,
630
+ .glass-surface {
631
+ background: var(--background) !important;
632
+ border: 1px solid var(--foreground) !important;
633
+ }
631
634
  }
632
635
 
633
- @media (prefers-reduced-motion: reduce) {
634
- .shimmer {
635
- animation: none;
636
- background-image: none;
637
- -webkit-text-fill-color: currentColor;
636
+ /* An engine without backdrop-filter would render the glass tint alone, which
637
+ is 3-8% alpha — effectively a transparent panel. Fall back to a solid
638
+ surface instead, keeping borders and shadows so panels stay delimited. */
639
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
640
+ .glass-panel,
641
+ .glass-surface {
642
+ background: var(--background) !important;
638
643
  }
639
644
  }