@jcsoftdev/ui 0.1.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1210) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/README.md +28 -7
  3. package/THIRD_PARTY_NOTICES.md +66 -0
  4. package/dist/ai/attachment/attachment.d.ts +5 -1
  5. package/dist/ai/attachment/attachment.js +18 -7
  6. package/dist/ai/chain-of-thought/chain-of-thought.d.ts +5 -1
  7. package/dist/ai/chain-of-thought/chain-of-thought.js +61 -39
  8. package/dist/ai/chat-list/chat-list.d.ts +5 -1
  9. package/dist/ai/chat-list/chat-list.js +98 -59
  10. package/dist/ai/chat-message/chat-message.d.ts +5 -1
  11. package/dist/ai/chat-message/chat-message.js +31 -11
  12. package/dist/ai/code-block/code-block.d.ts +5 -1
  13. package/dist/ai/code-block/code-block.js +37 -19
  14. package/dist/ai/conversation/conversation.d.ts +5 -1
  15. package/dist/ai/conversation/conversation.js +23 -5
  16. package/dist/ai/internal/disclosure.d.ts +3 -1
  17. package/dist/ai/internal/disclosure.js +7 -3
  18. package/dist/ai/loader/loader.d.ts +5 -1
  19. package/dist/ai/loader/loader.js +6 -4
  20. package/dist/ai/markdown/markdown.d.ts +5 -1
  21. package/dist/ai/markdown/markdown.js +86 -56
  22. package/dist/ai/message-actions/message-actions.js +1 -1
  23. package/dist/ai/prompt-input/prompt-input.d.ts +5 -1
  24. package/dist/ai/prompt-input/prompt-input.js +73 -41
  25. package/dist/ai/source/source.d.ts +5 -1
  26. package/dist/ai/source/source.js +35 -8
  27. package/dist/ai/tool-call/tool-call.d.ts +5 -1
  28. package/dist/ai/tool-call/tool-call.js +43 -21
  29. package/dist/atoms/avatar/avatar.d.ts +7 -3
  30. package/dist/atoms/avatar/avatar.js +54 -7
  31. package/dist/atoms/avatar/index.d.ts +1 -1
  32. package/dist/atoms/avatar-group/avatar-group.d.ts +3 -6
  33. package/dist/atoms/avatar-group/avatar-group.js +8 -2
  34. package/dist/atoms/big-date/big-date.js +2 -2
  35. package/dist/atoms/button/button.d.ts +19 -1
  36. package/dist/atoms/button/button.js +26 -14
  37. package/dist/atoms/button/index.d.ts +1 -1
  38. package/dist/atoms/button/index.js +8 -2
  39. package/dist/atoms/checkbox/checkbox.d.ts +16 -4
  40. package/dist/atoms/checkbox/checkbox.js +103 -15
  41. package/dist/atoms/checkbox/index.d.ts +1 -1
  42. package/dist/atoms/chip/chip.d.ts +2 -0
  43. package/dist/atoms/chip/chip.js +5 -4
  44. package/dist/atoms/chip/index.d.ts +1 -1
  45. package/dist/atoms/chip/index.js +3 -2
  46. package/dist/atoms/icon/icon-map.d.ts +39 -39
  47. package/dist/atoms/icon/icon-map.js +1 -1
  48. package/dist/atoms/icon/icon.d.ts +5 -6
  49. package/dist/atoms/icon/icon.js +3 -3
  50. package/dist/atoms/internal/status-icons.js +1 -1
  51. package/dist/atoms/led/index.d.ts +1 -1
  52. package/dist/atoms/led/led.d.ts +7 -3
  53. package/dist/atoms/led/led.js +25 -11
  54. package/dist/atoms/progress/index.d.ts +1 -1
  55. package/dist/atoms/progress/progress.d.ts +8 -3
  56. package/dist/atoms/progress/progress.js +38 -10
  57. package/dist/atoms/radio-group/index.d.ts +1 -1
  58. package/dist/atoms/radio-group/radio-group-primitive.d.ts +24 -0
  59. package/dist/atoms/radio-group/radio-group-primitive.js +156 -0
  60. package/dist/atoms/radio-group/radio-group.d.ts +8 -4
  61. package/dist/atoms/radio-group/radio-group.js +34 -11
  62. package/dist/atoms/status-dot/index.d.ts +1 -1
  63. package/dist/atoms/status-dot/status-dot.d.ts +7 -3
  64. package/dist/atoms/status-dot/status-dot.js +26 -16
  65. package/dist/atoms/status-pill/index.d.ts +1 -1
  66. package/dist/atoms/status-pill/status-pill.d.ts +7 -3
  67. package/dist/atoms/status-pill/status-pill.js +13 -4
  68. package/dist/atoms/switch/index.d.ts +1 -1
  69. package/dist/atoms/switch/switch.d.ts +15 -4
  70. package/dist/atoms/switch/switch.js +90 -14
  71. package/dist/atoms/trend-chip/index.d.ts +1 -1
  72. package/dist/atoms/trend-chip/trend-chip.d.ts +5 -1
  73. package/dist/atoms/trend-chip/trend-chip.js +13 -4
  74. package/dist/brand/logo-forge.js +1 -1
  75. package/dist/calendar/day-chip/day-chip.d.ts +9 -2
  76. package/dist/calendar/day-chip/day-chip.js +9 -6
  77. package/dist/calendar/day-chip/index.d.ts +1 -1
  78. package/dist/calendar/day-chip/index.js +3 -2
  79. package/dist/calendar/event-block/event-block.d.ts +10 -3
  80. package/dist/calendar/event-block/event-block.js +23 -10
  81. package/dist/calendar/event-block/index.d.ts +1 -1
  82. package/dist/calendar/event-block/index.js +6 -2
  83. package/dist/calendar/month-view/index.d.ts +1 -1
  84. package/dist/calendar/month-view/month-view.d.ts +5 -1
  85. package/dist/calendar/month-view/month-view.js +56 -30
  86. package/dist/calendar/timeline-view/index.d.ts +1 -1
  87. package/dist/calendar/timeline-view/timeline-view.d.ts +5 -1
  88. package/dist/calendar/timeline-view/timeline-view.js +21 -7
  89. package/dist/calendar/week-view/index.d.ts +1 -1
  90. package/dist/calendar/week-view/week-view.d.ts +5 -1
  91. package/dist/calendar/week-view/week-view.js +144 -113
  92. package/dist/charts/bar-chart/bar-race-chart.js +4 -4
  93. package/dist/charts/bubble-map/bubble-map.js +1 -1
  94. package/dist/charts/bullet-chart/bullet-chart.js +2 -2
  95. package/dist/charts/candlestick-chart/candlestick-chart.js +3 -3
  96. package/dist/charts/chart-grid/chart-grid.js +2 -2
  97. package/dist/charts/chord-chart/chord-chart.js +1 -1
  98. package/dist/charts/choropleth-map/choropleth-map.js +1 -1
  99. package/dist/charts/core/axes.js +3 -3
  100. package/dist/charts/core/breadcrumb.js +1 -1
  101. package/dist/charts/core/cartesian/annotations.js +3 -3
  102. package/dist/charts/core/cartesian/cartesian-chart.js +1 -1
  103. package/dist/charts/core/cartesian/category-group-axis.js +1 -1
  104. package/dist/charts/core/cartesian/ink-layer.js +1 -1
  105. package/dist/charts/core/cartesian/marks.js +1 -1
  106. package/dist/charts/core/chart-states.js +2 -2
  107. package/dist/charts/core/distribution/layout.js +1 -1
  108. package/dist/charts/core/distribution/marks.js +2 -2
  109. package/dist/charts/core/distribution/xy-points.js +4 -4
  110. package/dist/charts/core/export-menu.js +1 -1
  111. package/dist/charts/core/legend.js +2 -2
  112. package/dist/charts/core/tooltip.js +3 -3
  113. package/dist/charts/crossfilter/crossfilter.js +4 -4
  114. package/dist/charts/donut-chart/donut-chart.js +1 -1
  115. package/dist/charts/dumbbell-chart/dumbbell-chart.js +5 -5
  116. package/dist/charts/fill-gauge-chart/fill-gauge-chart.js +1 -1
  117. package/dist/charts/funnel-chart/funnel-chart.js +6 -6
  118. package/dist/charts/gantt-chart/gantt-chart.js +7 -7
  119. package/dist/charts/gantt-chart/gantt-marks.js +5 -5
  120. package/dist/charts/gauge-chart/gauge-chart.js +4 -4
  121. package/dist/charts/globe-chart/globe-chart.js +1 -1
  122. package/dist/charts/heatmap-chart/heatmap-grid.js +7 -7
  123. package/dist/charts/hierarchy-morph/hierarchy-morph.js +3 -3
  124. package/dist/charts/histogram/histogram.js +1 -1
  125. package/dist/charts/icicle-chart/icicle-chart.js +2 -2
  126. package/dist/charts/isotype-rows/isotype-rows.js +3 -3
  127. package/dist/charts/lollipop-chart/lollipop-chart.js +1 -1
  128. package/dist/charts/maps/geo/map-data-table.js +3 -3
  129. package/dist/charts/maps/geo/map-legend.js +5 -5
  130. package/dist/charts/maps/geo/map-viewport.js +1 -1
  131. package/dist/charts/parliament-chart/parliament-chart.js +2 -2
  132. package/dist/charts/pictogram-chart/pictogram-chart.js +1 -1
  133. package/dist/charts/polar-area-chart/polar-area-chart.js +2 -2
  134. package/dist/charts/progress-units/progress-units.js +1 -1
  135. package/dist/charts/radar-chart/radar-chart.js +1 -1
  136. package/dist/charts/radial-bar-chart/radial-bar-chart.js +1 -1
  137. package/dist/charts/sankey-chart/sankey-chart.js +5 -5
  138. package/dist/charts/slope-chart/slope-chart.js +1 -1
  139. package/dist/charts/sparkline/sparkline.js +1 -1
  140. package/dist/charts/stock-chart/stock-chart.js +1 -1
  141. package/dist/charts/stock-chart/stock-drawing-layer.js +4 -4
  142. package/dist/charts/stock-chart/stock-plot.js +3 -3
  143. package/dist/charts/stream-graph/stream-graph.js +1 -1
  144. package/dist/charts/sunburst-chart/sunburst-chart.js +1 -1
  145. package/dist/charts/timeline-chart/timeline-chart.js +3 -3
  146. package/dist/charts/tree-chart/tree-card.js +6 -6
  147. package/dist/charts/tree-chart/tree-chart.js +5 -5
  148. package/dist/charts/treemap-chart/treemap-chart.js +3 -3
  149. package/dist/charts/waterfall-chart/waterfall-chart.js +2 -2
  150. package/dist/containers/action-bar/action-bar.d.ts +5 -1
  151. package/dist/containers/action-bar/action-bar.js +26 -8
  152. package/dist/containers/action-bar/index.d.ts +1 -1
  153. package/dist/containers/banner/banner.d.ts +5 -1
  154. package/dist/containers/banner/banner.js +20 -5
  155. package/dist/containers/card/card.js +1 -1
  156. package/dist/containers/carousel/carousel.d.ts +6 -2
  157. package/dist/containers/carousel/carousel.js +38 -20
  158. package/dist/containers/carousel/index.d.ts +1 -1
  159. package/dist/containers/comment/comment.js +1 -1
  160. package/dist/containers/confirm-action/confirm-action.d.ts +5 -1
  161. package/dist/containers/confirm-action/confirm-action.js +30 -9
  162. package/dist/containers/data-grid/chart-panel.js +4 -4
  163. package/dist/containers/data-grid/column-menu.js +12 -12
  164. package/dist/containers/data-grid/data-grid.demos.js +13 -13
  165. package/dist/containers/data-grid/data-grid.js +37 -37
  166. package/dist/containers/data-grid/data-grid.samples.js +1 -1
  167. package/dist/containers/data-grid/filter-builder-editor.js +6 -6
  168. package/dist/containers/data-grid/formula-bar.js +4 -4
  169. package/dist/containers/data-grid/grid-toolbar.js +6 -6
  170. package/dist/containers/data-grid/spreadsheet.demos.d.ts +1 -1
  171. package/dist/containers/data-grid/spreadsheet.demos.js +1 -1
  172. package/dist/containers/data-grid/tool-panel.js +11 -11
  173. package/dist/containers/description-list/description-list.js +1 -1
  174. package/dist/containers/facts/facts.js +2 -2
  175. package/dist/containers/file-tree/file-tree.d.ts +5 -1
  176. package/dist/containers/file-tree/file-tree.js +81 -57
  177. package/dist/containers/file-tree/index.d.ts +1 -1
  178. package/dist/containers/generic-row/generic-row.js +3 -3
  179. package/dist/containers/hbars/hbars.js +5 -5
  180. package/dist/containers/item-card-group/index.d.ts +1 -1
  181. package/dist/containers/item-card-group/item-card-group.d.ts +5 -1
  182. package/dist/containers/item-card-group/item-card-group.js +88 -43
  183. package/dist/containers/kanban/index.d.ts +1 -1
  184. package/dist/containers/kanban/kanban.d.ts +5 -1
  185. package/dist/containers/kanban/kanban.js +74 -23
  186. package/dist/containers/kpi/kpi.d.ts +7 -4
  187. package/dist/containers/kpi/kpi.js +21 -7
  188. package/dist/containers/kpi-group/index.d.ts +1 -1
  189. package/dist/containers/kpi-group/kpi-group.d.ts +5 -1
  190. package/dist/containers/kpi-group/kpi-group.js +55 -27
  191. package/dist/containers/page-header/page-header.js +2 -2
  192. package/dist/containers/responsive-list/responsive-list.d.ts +5 -1
  193. package/dist/containers/responsive-list/responsive-list.js +83 -37
  194. package/dist/containers/settings-layout/settings-layout.js +1 -1
  195. package/dist/containers/settings-row/settings-row.d.ts +5 -1
  196. package/dist/containers/settings-row/settings-row.js +7 -5
  197. package/dist/containers/table/table.js +5 -5
  198. package/dist/containers/timeline/index.d.ts +1 -1
  199. package/dist/containers/timeline/timeline.d.ts +5 -1
  200. package/dist/containers/timeline/timeline.js +65 -14
  201. package/dist/dashboards/layout.js +2 -2
  202. package/dist/forms/accent-picker/accent-picker.d.ts +7 -4
  203. package/dist/forms/accent-picker/accent-picker.js +13 -6
  204. package/dist/forms/accent-picker/index.d.ts +1 -1
  205. package/dist/forms/checkbox-button-group/checkbox-button-group.d.ts +6 -2
  206. package/dist/forms/checkbox-button-group/checkbox-button-group.js +12 -2
  207. package/dist/forms/checkbox-button-group/index.d.ts +1 -1
  208. package/dist/forms/dropzone/dropzone.d.ts +5 -1
  209. package/dist/forms/dropzone/dropzone.js +26 -6
  210. package/dist/forms/dropzone/index.d.ts +1 -1
  211. package/dist/forms/emoji-picker/emoji-picker.d.ts +5 -1
  212. package/dist/forms/emoji-picker/emoji-picker.js +55 -24
  213. package/dist/forms/emoji-picker/index.d.ts +1 -1
  214. package/dist/forms/emoji-reaction-button/emoji-reaction-button.d.ts +9 -2
  215. package/dist/forms/emoji-reaction-button/emoji-reaction-button.js +24 -10
  216. package/dist/forms/emoji-reaction-button/index.d.ts +1 -1
  217. package/dist/forms/field/field.d.ts +7 -4
  218. package/dist/forms/field/field.js +31 -8
  219. package/dist/forms/field/index.d.ts +1 -1
  220. package/dist/forms/inline-select/inline-select.js +1 -1
  221. package/dist/forms/input-icon/index.d.ts +1 -1
  222. package/dist/forms/input-icon/input-icon.d.ts +6 -2
  223. package/dist/forms/input-icon/input-icon.js +7 -4
  224. package/dist/forms/internal/button-option.d.ts +4 -1
  225. package/dist/forms/internal/button-option.js +13 -5
  226. package/dist/forms/native-select/index.d.ts +1 -1
  227. package/dist/forms/native-select/native-select.d.ts +5 -1
  228. package/dist/forms/native-select/native-select.js +8 -3
  229. package/dist/forms/number-stepper/index.d.ts +1 -1
  230. package/dist/forms/number-stepper/index.js +3 -1
  231. package/dist/forms/number-stepper/number-stepper.d.ts +5 -1
  232. package/dist/forms/number-stepper/number-stepper.js +17 -5
  233. package/dist/forms/pin-input/index.d.ts +1 -1
  234. package/dist/forms/pin-input/pin-input.d.ts +5 -1
  235. package/dist/forms/pin-input/pin-input.js +52 -34
  236. package/dist/forms/radio-button-group/index.d.ts +1 -1
  237. package/dist/forms/radio-button-group/radio-button-group.d.ts +6 -2
  238. package/dist/forms/radio-button-group/radio-button-group.js +7 -2
  239. package/dist/forms/rating/index.d.ts +1 -1
  240. package/dist/forms/rating/rating.d.ts +5 -1
  241. package/dist/forms/rating/rating.js +23 -8
  242. package/dist/forms/select/select.js +1 -1
  243. package/dist/forms/slider/index.d.ts +1 -1
  244. package/dist/forms/slider/slider.d.ts +4 -0
  245. package/dist/forms/slider/slider.js +45 -8
  246. package/dist/i18n/strings.d.ts +3 -0
  247. package/dist/i18n/strings.js +4 -2
  248. package/dist/icons/alert-triangle.d.ts +1 -0
  249. package/dist/icons/alert-triangle.js +4 -0
  250. package/dist/icons/archive.d.ts +2 -0
  251. package/dist/icons/archive.js +12 -0
  252. package/dist/icons/armchair.d.ts +2 -0
  253. package/dist/icons/armchair.js +13 -0
  254. package/dist/icons/arrow-down-right.d.ts +2 -0
  255. package/dist/icons/arrow-down-right.js +11 -0
  256. package/dist/icons/arrow-down-to-line.d.ts +2 -0
  257. package/dist/icons/arrow-down-to-line.js +12 -0
  258. package/dist/icons/arrow-down.d.ts +2 -0
  259. package/dist/icons/arrow-down.js +11 -0
  260. package/dist/icons/arrow-left-to-line.d.ts +2 -0
  261. package/dist/icons/arrow-left-to-line.js +12 -0
  262. package/dist/icons/arrow-left.d.ts +2 -0
  263. package/dist/icons/arrow-left.js +11 -0
  264. package/dist/icons/arrow-right-to-line.d.ts +2 -0
  265. package/dist/icons/arrow-right-to-line.js +12 -0
  266. package/dist/icons/arrow-right.d.ts +2 -0
  267. package/dist/icons/arrow-right.js +11 -0
  268. package/dist/icons/arrow-up-from-line.d.ts +2 -0
  269. package/dist/icons/arrow-up-from-line.js +12 -0
  270. package/dist/icons/arrow-up-right.d.ts +2 -0
  271. package/dist/icons/arrow-up-right.js +11 -0
  272. package/dist/icons/arrow-up-to-line.d.ts +2 -0
  273. package/dist/icons/arrow-up-to-line.js +12 -0
  274. package/dist/icons/arrow-up.d.ts +2 -0
  275. package/dist/icons/arrow-up.js +11 -0
  276. package/dist/icons/banknote.d.ts +2 -0
  277. package/dist/icons/banknote.js +12 -0
  278. package/dist/icons/bar-chart2.d.ts +1 -0
  279. package/dist/icons/bar-chart2.js +4 -0
  280. package/dist/icons/bar-chart3.d.ts +1 -0
  281. package/dist/icons/bar-chart3.js +4 -0
  282. package/dist/icons/bell.d.ts +2 -0
  283. package/dist/icons/bell.js +11 -0
  284. package/dist/icons/bold.d.ts +2 -0
  285. package/dist/icons/bold.js +8 -0
  286. package/dist/icons/book-open.d.ts +2 -0
  287. package/dist/icons/book-open.js +11 -0
  288. package/dist/icons/boxes.d.ts +2 -0
  289. package/dist/icons/boxes.js +21 -0
  290. package/dist/icons/brain.d.ts +2 -0
  291. package/dist/icons/brain.js +17 -0
  292. package/dist/icons/calculator.d.ts +2 -0
  293. package/dist/icons/calculator.js +19 -0
  294. package/dist/icons/calendar-check.d.ts +2 -0
  295. package/dist/icons/calendar-check.js +14 -0
  296. package/dist/icons/calendar-clock.d.ts +2 -0
  297. package/dist/icons/calendar-clock.js +15 -0
  298. package/dist/icons/calendar-days.d.ts +2 -0
  299. package/dist/icons/calendar-days.js +19 -0
  300. package/dist/icons/calendar-plus.d.ts +2 -0
  301. package/dist/icons/calendar-plus.js +15 -0
  302. package/dist/icons/calendar-x.d.ts +2 -0
  303. package/dist/icons/calendar-x.js +15 -0
  304. package/dist/icons/calendar.d.ts +2 -0
  305. package/dist/icons/calendar.js +13 -0
  306. package/dist/icons/camera.d.ts +2 -0
  307. package/dist/icons/camera.js +11 -0
  308. package/dist/icons/chart-column.d.ts +2 -0
  309. package/dist/icons/chart-column.js +13 -0
  310. package/dist/icons/chart-no-axes-column.d.ts +2 -0
  311. package/dist/icons/chart-no-axes-column.js +12 -0
  312. package/dist/icons/check-check.d.ts +2 -0
  313. package/dist/icons/check-check.js +11 -0
  314. package/dist/icons/check-circle2.d.ts +1 -0
  315. package/dist/icons/check-circle2.js +4 -0
  316. package/dist/icons/check.d.ts +2 -0
  317. package/dist/icons/check.js +8 -0
  318. package/dist/icons/chevron-down.d.ts +2 -0
  319. package/dist/icons/chevron-down.js +8 -0
  320. package/dist/icons/chevron-left.d.ts +2 -0
  321. package/dist/icons/chevron-left.js +8 -0
  322. package/dist/icons/chevron-right.d.ts +2 -0
  323. package/dist/icons/chevron-right.js +8 -0
  324. package/dist/icons/chevrons-left.d.ts +2 -0
  325. package/dist/icons/chevrons-left.js +11 -0
  326. package/dist/icons/chevrons-right.d.ts +2 -0
  327. package/dist/icons/chevrons-right.js +11 -0
  328. package/dist/icons/chevrons-up-down.d.ts +2 -0
  329. package/dist/icons/chevrons-up-down.js +11 -0
  330. package/dist/icons/circle-alert.d.ts +2 -0
  331. package/dist/icons/circle-alert.js +12 -0
  332. package/dist/icons/circle-check.d.ts +2 -0
  333. package/dist/icons/circle-check.js +11 -0
  334. package/dist/icons/circle-x.d.ts +2 -0
  335. package/dist/icons/circle-x.js +12 -0
  336. package/dist/icons/clipboard-list.d.ts +2 -0
  337. package/dist/icons/clipboard-list.js +15 -0
  338. package/dist/icons/clock.d.ts +2 -0
  339. package/dist/icons/clock.js +11 -0
  340. package/dist/icons/coins.d.ts +2 -0
  341. package/dist/icons/coins.js +13 -0
  342. package/dist/icons/columns-3.d.ts +2 -0
  343. package/dist/icons/columns-3.js +12 -0
  344. package/dist/icons/construction.d.ts +2 -0
  345. package/dist/icons/construction.js +17 -0
  346. package/dist/icons/copy.d.ts +2 -0
  347. package/dist/icons/copy.js +11 -0
  348. package/dist/icons/credit-card.d.ts +2 -0
  349. package/dist/icons/credit-card.js +12 -0
  350. package/dist/icons/download.d.ts +2 -0
  351. package/dist/icons/download.js +12 -0
  352. package/dist/icons/ellipsis-vertical.d.ts +2 -0
  353. package/dist/icons/ellipsis-vertical.js +12 -0
  354. package/dist/icons/external-link.d.ts +2 -0
  355. package/dist/icons/external-link.js +12 -0
  356. package/dist/icons/eye-off.d.ts +2 -0
  357. package/dist/icons/eye-off.js +13 -0
  358. package/dist/icons/face-slightly-smiling-plus.d.ts +2 -0
  359. package/dist/icons/face-slightly-smiling-plus.js +15 -0
  360. package/dist/icons/face-slightly-smiling.d.ts +2 -0
  361. package/dist/icons/face-slightly-smiling.js +13 -0
  362. package/dist/icons/file-code.d.ts +2 -0
  363. package/dist/icons/file-code.js +13 -0
  364. package/dist/icons/file-image.d.ts +2 -0
  365. package/dist/icons/file-image.js +13 -0
  366. package/dist/icons/file-spreadsheet.d.ts +2 -0
  367. package/dist/icons/file-spreadsheet.js +15 -0
  368. package/dist/icons/file-text.d.ts +2 -0
  369. package/dist/icons/file-text.js +14 -0
  370. package/dist/icons/file.d.ts +2 -0
  371. package/dist/icons/file.js +11 -0
  372. package/dist/icons/filter.d.ts +1 -0
  373. package/dist/icons/filter.js +4 -0
  374. package/dist/icons/folder-open.d.ts +2 -0
  375. package/dist/icons/folder-open.js +8 -0
  376. package/dist/icons/folder.d.ts +2 -0
  377. package/dist/icons/folder.js +8 -0
  378. package/dist/icons/funnel.d.ts +2 -0
  379. package/dist/icons/funnel.js +8 -0
  380. package/dist/icons/grip-vertical.d.ts +2 -0
  381. package/dist/icons/grip-vertical.js +15 -0
  382. package/dist/icons/heading-2.d.ts +2 -0
  383. package/dist/icons/heading-2.js +13 -0
  384. package/dist/icons/icon-base.d.ts +14 -0
  385. package/dist/icons/icon-base.js +39 -0
  386. package/dist/icons/inbox.d.ts +2 -0
  387. package/dist/icons/inbox.js +11 -0
  388. package/dist/icons/index.d.ts +145 -0
  389. package/dist/icons/index.js +291 -0
  390. package/dist/icons/info.d.ts +2 -0
  391. package/dist/icons/info.js +12 -0
  392. package/dist/icons/italic.d.ts +2 -0
  393. package/dist/icons/italic.js +12 -0
  394. package/dist/icons/landmark.d.ts +2 -0
  395. package/dist/icons/landmark.js +15 -0
  396. package/dist/icons/layers.d.ts +2 -0
  397. package/dist/icons/layers.js +12 -0
  398. package/dist/icons/layout-dashboard.d.ts +2 -0
  399. package/dist/icons/layout-dashboard.js +13 -0
  400. package/dist/icons/layout-grid.d.ts +2 -0
  401. package/dist/icons/layout-grid.js +13 -0
  402. package/dist/icons/link-2.d.ts +2 -0
  403. package/dist/icons/link-2.js +12 -0
  404. package/dist/icons/list-checks.d.ts +2 -0
  405. package/dist/icons/list-checks.js +14 -0
  406. package/dist/icons/list-filter.d.ts +2 -0
  407. package/dist/icons/list-filter.js +12 -0
  408. package/dist/icons/list-ordered.d.ts +2 -0
  409. package/dist/icons/list-ordered.js +15 -0
  410. package/dist/icons/list.d.ts +2 -0
  411. package/dist/icons/list.js +15 -0
  412. package/dist/icons/loader-circle.d.ts +2 -0
  413. package/dist/icons/loader-circle.js +8 -0
  414. package/dist/icons/lock.d.ts +2 -0
  415. package/dist/icons/lock.js +11 -0
  416. package/dist/icons/log-out.d.ts +2 -0
  417. package/dist/icons/log-out.js +12 -0
  418. package/dist/icons/map-pin.d.ts +2 -0
  419. package/dist/icons/map-pin.js +11 -0
  420. package/dist/icons/menu.d.ts +2 -0
  421. package/dist/icons/menu.js +12 -0
  422. package/dist/icons/message-circle.d.ts +2 -0
  423. package/dist/icons/message-circle.js +8 -0
  424. package/dist/icons/message-square.d.ts +2 -0
  425. package/dist/icons/message-square.js +8 -0
  426. package/dist/icons/minus.d.ts +2 -0
  427. package/dist/icons/minus.js +8 -0
  428. package/dist/icons/moon.d.ts +2 -0
  429. package/dist/icons/moon.js +8 -0
  430. package/dist/icons/move-horizontal.d.ts +2 -0
  431. package/dist/icons/move-horizontal.js +12 -0
  432. package/dist/icons/octagon-x.d.ts +2 -0
  433. package/dist/icons/octagon-x.js +12 -0
  434. package/dist/icons/package.d.ts +2 -0
  435. package/dist/icons/package.js +13 -0
  436. package/dist/icons/panel-right.d.ts +2 -0
  437. package/dist/icons/panel-right.js +11 -0
  438. package/dist/icons/paperclip.d.ts +2 -0
  439. package/dist/icons/paperclip.js +8 -0
  440. package/dist/icons/pause.d.ts +2 -0
  441. package/dist/icons/pause.js +11 -0
  442. package/dist/icons/pen-line.d.ts +2 -0
  443. package/dist/icons/pen-line.js +11 -0
  444. package/dist/icons/pencil.d.ts +2 -0
  445. package/dist/icons/pencil.js +11 -0
  446. package/dist/icons/phone.d.ts +2 -0
  447. package/dist/icons/phone.js +8 -0
  448. package/dist/icons/pin-off.d.ts +2 -0
  449. package/dist/icons/pin-off.js +13 -0
  450. package/dist/icons/play.d.ts +2 -0
  451. package/dist/icons/play.js +8 -0
  452. package/dist/icons/plus.d.ts +2 -0
  453. package/dist/icons/plus.js +11 -0
  454. package/dist/icons/redo-2.d.ts +2 -0
  455. package/dist/icons/redo-2.js +11 -0
  456. package/dist/icons/refresh-cw.d.ts +2 -0
  457. package/dist/icons/refresh-cw.js +13 -0
  458. package/dist/icons/rotate-ccw.d.ts +2 -0
  459. package/dist/icons/rotate-ccw.js +11 -0
  460. package/dist/icons/scan-barcode.d.ts +2 -0
  461. package/dist/icons/scan-barcode.js +16 -0
  462. package/dist/icons/scissors.d.ts +2 -0
  463. package/dist/icons/scissors.js +14 -0
  464. package/dist/icons/scroll-text.d.ts +2 -0
  465. package/dist/icons/scroll-text.js +13 -0
  466. package/dist/icons/search.d.ts +2 -0
  467. package/dist/icons/search.js +11 -0
  468. package/dist/icons/send.d.ts +2 -0
  469. package/dist/icons/send.js +11 -0
  470. package/dist/icons/settings.d.ts +2 -0
  471. package/dist/icons/settings.js +11 -0
  472. package/dist/icons/shield.d.ts +2 -0
  473. package/dist/icons/shield.js +8 -0
  474. package/dist/icons/shopping-bag.d.ts +2 -0
  475. package/dist/icons/shopping-bag.js +12 -0
  476. package/dist/icons/shopping-cart.d.ts +2 -0
  477. package/dist/icons/shopping-cart.js +13 -0
  478. package/dist/icons/sliders-horizontal.d.ts +2 -0
  479. package/dist/icons/sliders-horizontal.js +18 -0
  480. package/dist/icons/smartphone.d.ts +2 -0
  481. package/dist/icons/smartphone.js +11 -0
  482. package/dist/icons/smile-plus.d.ts +1 -0
  483. package/dist/icons/smile-plus.js +4 -0
  484. package/dist/icons/smile.d.ts +1 -0
  485. package/dist/icons/smile.js +4 -0
  486. package/dist/icons/sparkles.d.ts +2 -0
  487. package/dist/icons/sparkles.js +13 -0
  488. package/dist/icons/square.d.ts +2 -0
  489. package/dist/icons/square.js +8 -0
  490. package/dist/icons/star.d.ts +2 -0
  491. package/dist/icons/star.js +8 -0
  492. package/dist/icons/sun.d.ts +2 -0
  493. package/dist/icons/sun.js +18 -0
  494. package/dist/icons/tags.d.ts +2 -0
  495. package/dist/icons/tags.js +12 -0
  496. package/dist/icons/thumbs-down.d.ts +2 -0
  497. package/dist/icons/thumbs-down.js +11 -0
  498. package/dist/icons/thumbs-up.d.ts +2 -0
  499. package/dist/icons/thumbs-up.js +11 -0
  500. package/dist/icons/trash.d.ts +2 -0
  501. package/dist/icons/trash.js +14 -0
  502. package/dist/icons/trash2.d.ts +1 -0
  503. package/dist/icons/trash2.js +4 -0
  504. package/dist/icons/triangle-alert.d.ts +2 -0
  505. package/dist/icons/triangle-alert.js +12 -0
  506. package/dist/icons/truck.d.ts +2 -0
  507. package/dist/icons/truck.js +14 -0
  508. package/dist/icons/underline.d.ts +2 -0
  509. package/dist/icons/underline.js +11 -0
  510. package/dist/icons/undo-2.d.ts +2 -0
  511. package/dist/icons/undo-2.js +11 -0
  512. package/dist/icons/unlink.d.ts +2 -0
  513. package/dist/icons/unlink.js +15 -0
  514. package/dist/icons/upload.d.ts +2 -0
  515. package/dist/icons/upload.js +12 -0
  516. package/dist/icons/user-check.d.ts +2 -0
  517. package/dist/icons/user-check.js +12 -0
  518. package/dist/icons/user-cog.d.ts +2 -0
  519. package/dist/icons/user-cog.js +20 -0
  520. package/dist/icons/user-plus.d.ts +2 -0
  521. package/dist/icons/user-plus.js +13 -0
  522. package/dist/icons/user-round.d.ts +2 -0
  523. package/dist/icons/user-round.js +11 -0
  524. package/dist/icons/user.d.ts +2 -0
  525. package/dist/icons/user.js +11 -0
  526. package/dist/icons/users.d.ts +2 -0
  527. package/dist/icons/users.js +13 -0
  528. package/dist/icons/video.d.ts +2 -0
  529. package/dist/icons/video.js +11 -0
  530. package/dist/icons/wallet.d.ts +2 -0
  531. package/dist/icons/wallet.js +11 -0
  532. package/dist/icons/wrench.d.ts +2 -0
  533. package/dist/icons/wrench.js +8 -0
  534. package/dist/icons/x.d.ts +2 -0
  535. package/dist/icons/x.js +11 -0
  536. package/dist/icons/xcircle.d.ts +1 -0
  537. package/dist/icons/xcircle.js +4 -0
  538. package/dist/icons/xoctagon.d.ts +1 -0
  539. package/dist/icons/xoctagon.js +4 -0
  540. package/dist/navigation/floating-toc/floating-toc.d.ts +5 -1
  541. package/dist/navigation/floating-toc/floating-toc.js +42 -23
  542. package/dist/navigation/floating-toc/index.d.ts +1 -1
  543. package/dist/navigation/segmented/segmented.d.ts +19 -7
  544. package/dist/navigation/segmented/segmented.js +84 -19
  545. package/dist/navigation/stepper/index.d.ts +1 -1
  546. package/dist/navigation/stepper/stepper.d.ts +7 -3
  547. package/dist/navigation/stepper/stepper.js +17 -6
  548. package/dist/navigation/tabs/tabs.d.ts +28 -11
  549. package/dist/navigation/tabs/tabs.js +134 -14
  550. package/dist/overlays/context-menu/context-menu.d.ts +5 -5
  551. package/dist/overlays/context-menu/context-menu.js +5 -8
  552. package/dist/overlays/dialog/dialog.d.ts +11 -6
  553. package/dist/overlays/dialog/dialog.js +18 -10
  554. package/dist/overlays/dialog/index.d.ts +1 -1
  555. package/dist/overlays/dialog/index.js +2 -0
  556. package/dist/overlays/drawer/drawer.d.ts +12 -7
  557. package/dist/overlays/drawer/drawer.js +24 -11
  558. package/dist/overlays/drawer/index.d.ts +1 -1
  559. package/dist/overlays/drawer/index.js +2 -0
  560. package/dist/overlays/dropdown-menu/dropdown-menu.d.ts +26 -10
  561. package/dist/overlays/dropdown-menu/dropdown-menu.js +89 -20
  562. package/dist/overlays/dropdown-menu/index.d.ts +1 -1
  563. package/dist/overlays/dropdown-menu/index.js +12 -0
  564. package/dist/overlays/hover-card/hover-card.d.ts +2 -2
  565. package/dist/overlays/hover-card/hover-card.js +3 -3
  566. package/dist/overlays/popover/index.d.ts +1 -1
  567. package/dist/overlays/popover/index.js +2 -0
  568. package/dist/overlays/popover/popover.d.ts +11 -9
  569. package/dist/overlays/popover/popover.js +6 -3
  570. package/dist/overlays/toaster/index.d.ts +1 -1
  571. package/dist/overlays/toaster/index.js +4 -1
  572. package/dist/overlays/toaster/toast-store.d.ts +39 -0
  573. package/dist/overlays/toaster/toast-store.js +63 -0
  574. package/dist/overlays/toaster/toast.d.ts +11 -0
  575. package/dist/overlays/toaster/toast.js +10 -0
  576. package/dist/overlays/toaster/toaster.d.ts +24 -5
  577. package/dist/overlays/toaster/toaster.js +218 -16
  578. package/dist/palette/command-palette/command-palette.d.ts +6 -2
  579. package/dist/palette/command-palette/command-palette.js +94 -44
  580. package/dist/palette/command-palette/index.d.ts +1 -1
  581. package/dist/primitives/command/command.d.ts +82 -0
  582. package/dist/primitives/command/command.js +488 -0
  583. package/dist/primitives/command/score.d.ts +15 -0
  584. package/dist/primitives/command/score.js +73 -0
  585. package/dist/primitives/command/store.d.ts +89 -0
  586. package/dist/primitives/command/store.js +205 -0
  587. package/dist/primitives/dialog/dialog.d.ts +38 -0
  588. package/dist/primitives/dialog/dialog.js +251 -0
  589. package/dist/primitives/focusable.d.ts +21 -0
  590. package/dist/primitives/focusable.js +59 -0
  591. package/dist/primitives/global-singleton.d.ts +5 -0
  592. package/dist/primitives/global-singleton.js +9 -0
  593. package/dist/primitives/hide-others.d.ts +14 -0
  594. package/dist/primitives/hide-others.js +79 -0
  595. package/dist/primitives/index.d.ts +25 -0
  596. package/dist/primitives/index.js +30 -0
  597. package/dist/primitives/layer-stack.d.ts +8 -0
  598. package/dist/primitives/layer-stack.js +23 -0
  599. package/dist/primitives/menu/grace.d.ts +17 -0
  600. package/dist/primitives/menu/grace.js +27 -0
  601. package/dist/primitives/menu/menu.d.ts +97 -0
  602. package/dist/primitives/menu/menu.js +871 -0
  603. package/dist/primitives/menu/navigation.d.ts +6 -0
  604. package/dist/primitives/menu/navigation.js +12 -0
  605. package/dist/primitives/menu/typeahead.d.ts +6 -0
  606. package/dist/primitives/menu/typeahead.js +16 -0
  607. package/dist/primitives/pointer-events-lock.d.ts +15 -0
  608. package/dist/primitives/pointer-events-lock.js +37 -0
  609. package/dist/primitives/popover/popover.d.ts +33 -0
  610. package/dist/primitives/popover/popover.js +244 -0
  611. package/dist/primitives/popper/geometry.d.ts +67 -0
  612. package/dist/primitives/popper/geometry.js +143 -0
  613. package/dist/primitives/popper/popper.d.ts +44 -0
  614. package/dist/primitives/popper/popper.js +313 -0
  615. package/dist/primitives/portal.d.ts +6 -0
  616. package/dist/primitives/portal.js +20 -0
  617. package/dist/primitives/scroll-lock.d.ts +4 -0
  618. package/dist/primitives/scroll-lock.js +92 -0
  619. package/dist/primitives/use-dismissable-layer.d.ts +37 -0
  620. package/dist/primitives/use-dismissable-layer.js +113 -0
  621. package/dist/primitives/use-focus-scope.d.ts +22 -0
  622. package/dist/primitives/use-focus-scope.js +91 -0
  623. package/dist/primitives/use-layer.d.ts +2 -0
  624. package/dist/primitives/use-layer.js +14 -0
  625. package/dist/primitives/use-presence.d.ts +14 -0
  626. package/dist/primitives/use-presence.js +87 -0
  627. package/dist/rich-text/index.d.ts +1 -1
  628. package/dist/rich-text/rich-text-editor.d.ts +5 -1
  629. package/dist/rich-text/rich-text-editor.js +42 -10
  630. package/dist/shell/app-shell/app-shell.d.ts +3 -4
  631. package/dist/shell/app-shell/app-shell.js +4 -2
  632. package/dist/shell/sidebar/index.d.ts +1 -1
  633. package/dist/shell/sidebar/sidebar.d.ts +5 -1
  634. package/dist/shell/sidebar/sidebar.js +49 -37
  635. package/dist/shell/topbar/index.d.ts +1 -1
  636. package/dist/shell/topbar/topbar.d.ts +5 -1
  637. package/dist/shell/topbar/topbar.js +91 -45
  638. package/dist/showcase/controls-bento.js +2 -2
  639. package/dist/showcase/kit-tiles.js +1 -1
  640. package/dist/showcase/operations-bento.js +1 -1
  641. package/dist/showcase/shell.js +1 -1
  642. package/dist/states/empty-state/empty-state.js +2 -2
  643. package/dist/states/error-state/error-state.js +4 -4
  644. package/dist/states/forbidden-state/forbidden-state.js +2 -2
  645. package/dist/states/offline-banner/offline-banner.js +1 -1
  646. package/dist/utils/class-groups.d.ts +20 -0
  647. package/dist/utils/class-groups.js +809 -0
  648. package/dist/utils/class-merge.d.ts +17 -0
  649. package/dist/utils/class-merge.js +187 -0
  650. package/dist/utils/class-names.d.ts +9 -0
  651. package/dist/utils/class-names.js +0 -0
  652. package/dist/utils/class-tokens.generated.d.ts +8 -0
  653. package/dist/utils/class-tokens.generated.js +98 -0
  654. package/dist/utils/class-validators.d.ts +27 -0
  655. package/dist/utils/class-validators.js +78 -0
  656. package/dist/utils/cn.d.ts +33 -2
  657. package/dist/utils/cn.js +43 -82
  658. package/dist/utils/compose.d.ts +7 -0
  659. package/dist/utils/compose.js +15 -0
  660. package/dist/utils/form-bubble.d.ts +30 -0
  661. package/dist/utils/form-bubble.js +120 -0
  662. package/dist/utils/index.d.ts +2 -1
  663. package/dist/utils/index.js +7 -1
  664. package/dist/utils/roving-focus.d.ts +42 -0
  665. package/dist/utils/roving-focus.js +67 -0
  666. package/dist/utils/slot.d.ts +16 -0
  667. package/dist/utils/slot.js +74 -0
  668. package/dist/utils/use-controllable-state.d.ts +13 -0
  669. package/dist/utils/use-controllable-state.js +32 -0
  670. package/icons/LICENSE-lucide +43 -0
  671. package/icons/README.md +15 -0
  672. package/icons/aliases.json +12 -0
  673. package/icons/svg/archive.svg +5 -0
  674. package/icons/svg/armchair.svg +6 -0
  675. package/icons/svg/arrow-down-right.svg +4 -0
  676. package/icons/svg/arrow-down-to-line.svg +5 -0
  677. package/icons/svg/arrow-down.svg +4 -0
  678. package/icons/svg/arrow-left-to-line.svg +5 -0
  679. package/icons/svg/arrow-left.svg +4 -0
  680. package/icons/svg/arrow-right-to-line.svg +5 -0
  681. package/icons/svg/arrow-right.svg +4 -0
  682. package/icons/svg/arrow-up-from-line.svg +5 -0
  683. package/icons/svg/arrow-up-right.svg +4 -0
  684. package/icons/svg/arrow-up-to-line.svg +5 -0
  685. package/icons/svg/arrow-up.svg +4 -0
  686. package/icons/svg/banknote.svg +5 -0
  687. package/icons/svg/bell.svg +4 -0
  688. package/icons/svg/bold.svg +3 -0
  689. package/icons/svg/book-open.svg +4 -0
  690. package/icons/svg/boxes.svg +14 -0
  691. package/icons/svg/brain.svg +10 -0
  692. package/icons/svg/calculator.svg +12 -0
  693. package/icons/svg/calendar-check.svg +7 -0
  694. package/icons/svg/calendar-clock.svg +8 -0
  695. package/icons/svg/calendar-days.svg +12 -0
  696. package/icons/svg/calendar-plus.svg +8 -0
  697. package/icons/svg/calendar-x.svg +8 -0
  698. package/icons/svg/calendar.svg +6 -0
  699. package/icons/svg/camera.svg +4 -0
  700. package/icons/svg/chart-column.svg +6 -0
  701. package/icons/svg/chart-no-axes-column.svg +5 -0
  702. package/icons/svg/check-check.svg +4 -0
  703. package/icons/svg/check.svg +3 -0
  704. package/icons/svg/chevron-down.svg +3 -0
  705. package/icons/svg/chevron-left.svg +3 -0
  706. package/icons/svg/chevron-right.svg +3 -0
  707. package/icons/svg/chevrons-left.svg +4 -0
  708. package/icons/svg/chevrons-right.svg +4 -0
  709. package/icons/svg/chevrons-up-down.svg +4 -0
  710. package/icons/svg/circle-alert.svg +5 -0
  711. package/icons/svg/circle-check.svg +4 -0
  712. package/icons/svg/circle-x.svg +5 -0
  713. package/icons/svg/clipboard-list.svg +8 -0
  714. package/icons/svg/clock.svg +4 -0
  715. package/icons/svg/coins.svg +6 -0
  716. package/icons/svg/columns-3.svg +5 -0
  717. package/icons/svg/construction.svg +10 -0
  718. package/icons/svg/copy.svg +4 -0
  719. package/icons/svg/credit-card.svg +5 -0
  720. package/icons/svg/download.svg +5 -0
  721. package/icons/svg/ellipsis-vertical.svg +5 -0
  722. package/icons/svg/external-link.svg +5 -0
  723. package/icons/svg/eye-off.svg +6 -0
  724. package/icons/svg/face-slightly-smiling-plus.svg +8 -0
  725. package/icons/svg/face-slightly-smiling.svg +6 -0
  726. package/icons/svg/file-code.svg +6 -0
  727. package/icons/svg/file-image.svg +6 -0
  728. package/icons/svg/file-spreadsheet.svg +8 -0
  729. package/icons/svg/file-text.svg +7 -0
  730. package/icons/svg/file.svg +4 -0
  731. package/icons/svg/folder-open.svg +3 -0
  732. package/icons/svg/folder.svg +3 -0
  733. package/icons/svg/funnel.svg +3 -0
  734. package/icons/svg/grip-vertical.svg +8 -0
  735. package/icons/svg/heading-2.svg +6 -0
  736. package/icons/svg/inbox.svg +4 -0
  737. package/icons/svg/info.svg +5 -0
  738. package/icons/svg/italic.svg +5 -0
  739. package/icons/svg/landmark.svg +8 -0
  740. package/icons/svg/layers.svg +5 -0
  741. package/icons/svg/layout-dashboard.svg +6 -0
  742. package/icons/svg/layout-grid.svg +6 -0
  743. package/icons/svg/link-2.svg +5 -0
  744. package/icons/svg/list-checks.svg +7 -0
  745. package/icons/svg/list-filter.svg +5 -0
  746. package/icons/svg/list-ordered.svg +8 -0
  747. package/icons/svg/list.svg +8 -0
  748. package/icons/svg/loader-circle.svg +3 -0
  749. package/icons/svg/lock.svg +4 -0
  750. package/icons/svg/log-out.svg +5 -0
  751. package/icons/svg/map-pin.svg +4 -0
  752. package/icons/svg/menu.svg +5 -0
  753. package/icons/svg/message-circle.svg +3 -0
  754. package/icons/svg/message-square.svg +3 -0
  755. package/icons/svg/minus.svg +3 -0
  756. package/icons/svg/moon.svg +3 -0
  757. package/icons/svg/move-horizontal.svg +5 -0
  758. package/icons/svg/octagon-x.svg +5 -0
  759. package/icons/svg/package.svg +6 -0
  760. package/icons/svg/panel-right.svg +4 -0
  761. package/icons/svg/paperclip.svg +3 -0
  762. package/icons/svg/pause.svg +4 -0
  763. package/icons/svg/pen-line.svg +4 -0
  764. package/icons/svg/pencil.svg +4 -0
  765. package/icons/svg/phone.svg +3 -0
  766. package/icons/svg/pin-off.svg +6 -0
  767. package/icons/svg/play.svg +3 -0
  768. package/icons/svg/plus.svg +4 -0
  769. package/icons/svg/redo-2.svg +4 -0
  770. package/icons/svg/refresh-cw.svg +6 -0
  771. package/icons/svg/rotate-ccw.svg +4 -0
  772. package/icons/svg/scan-barcode.svg +9 -0
  773. package/icons/svg/scissors.svg +7 -0
  774. package/icons/svg/scroll-text.svg +6 -0
  775. package/icons/svg/search.svg +4 -0
  776. package/icons/svg/send.svg +4 -0
  777. package/icons/svg/settings.svg +4 -0
  778. package/icons/svg/shield.svg +3 -0
  779. package/icons/svg/shopping-bag.svg +5 -0
  780. package/icons/svg/shopping-cart.svg +6 -0
  781. package/icons/svg/sliders-horizontal.svg +11 -0
  782. package/icons/svg/smartphone.svg +4 -0
  783. package/icons/svg/sparkles.svg +6 -0
  784. package/icons/svg/square.svg +3 -0
  785. package/icons/svg/star.svg +3 -0
  786. package/icons/svg/sun.svg +11 -0
  787. package/icons/svg/tags.svg +5 -0
  788. package/icons/svg/thumbs-down.svg +4 -0
  789. package/icons/svg/thumbs-up.svg +4 -0
  790. package/icons/svg/trash.svg +7 -0
  791. package/icons/svg/triangle-alert.svg +5 -0
  792. package/icons/svg/truck.svg +7 -0
  793. package/icons/svg/underline.svg +4 -0
  794. package/icons/svg/undo-2.svg +4 -0
  795. package/icons/svg/unlink.svg +8 -0
  796. package/icons/svg/upload.svg +5 -0
  797. package/icons/svg/user-check.svg +5 -0
  798. package/icons/svg/user-cog.svg +13 -0
  799. package/icons/svg/user-plus.svg +6 -0
  800. package/icons/svg/user-round.svg +4 -0
  801. package/icons/svg/user.svg +4 -0
  802. package/icons/svg/users.svg +6 -0
  803. package/icons/svg/video.svg +4 -0
  804. package/icons/svg/wallet.svg +4 -0
  805. package/icons/svg/wrench.svg +3 -0
  806. package/icons/svg/x.svg +4 -0
  807. package/package.json +26 -24
  808. package/scripts/build-theme.mjs +8 -0
  809. package/src/ai/attachment/attachment.tsx +28 -5
  810. package/src/ai/chain-of-thought/chain-of-thought.tsx +47 -10
  811. package/src/ai/chat-list/chat-list.tsx +55 -10
  812. package/src/ai/chat-message/chat-message.tsx +25 -6
  813. package/src/ai/code-block/code-block.tsx +28 -7
  814. package/src/ai/conversation/conversation.tsx +24 -5
  815. package/src/ai/internal/disclosure.tsx +8 -2
  816. package/src/ai/loader/loader.tsx +14 -3
  817. package/src/ai/markdown/markdown.tsx +80 -35
  818. package/src/ai/message-actions/message-actions.tsx +1 -1
  819. package/src/ai/prompt-input/prompt-input.tsx +50 -10
  820. package/src/ai/source/source.tsx +44 -7
  821. package/src/ai/tool-call/tool-call.tsx +47 -12
  822. package/src/atoms/avatar/avatar.tsx +77 -12
  823. package/src/atoms/avatar/index.ts +1 -1
  824. package/src/atoms/avatar-group/avatar-group.tsx +7 -9
  825. package/src/atoms/big-date/big-date.tsx +2 -2
  826. package/src/atoms/button/button.tsx +42 -14
  827. package/src/atoms/button/index.ts +4 -0
  828. package/src/atoms/checkbox/checkbox.tsx +119 -18
  829. package/src/atoms/checkbox/index.ts +1 -1
  830. package/src/atoms/chip/chip.tsx +4 -3
  831. package/src/atoms/chip/index.ts +1 -1
  832. package/src/atoms/icon/icon-map.ts +4 -4
  833. package/src/atoms/icon/icon.tsx +7 -8
  834. package/src/atoms/internal/status-icons.tsx +1 -1
  835. package/src/atoms/led/index.ts +1 -1
  836. package/src/atoms/led/led.tsx +21 -6
  837. package/src/atoms/progress/index.ts +1 -1
  838. package/src/atoms/progress/progress.tsx +52 -13
  839. package/src/atoms/radio-group/index.ts +1 -0
  840. package/src/atoms/radio-group/radio-group-primitive.tsx +196 -0
  841. package/src/atoms/radio-group/radio-group.tsx +48 -14
  842. package/src/atoms/status-dot/index.ts +1 -0
  843. package/src/atoms/status-dot/status-dot.tsx +18 -5
  844. package/src/atoms/status-pill/index.ts +1 -1
  845. package/src/atoms/status-pill/status-pill.tsx +21 -6
  846. package/src/atoms/switch/index.ts +1 -1
  847. package/src/atoms/switch/switch.tsx +102 -15
  848. package/src/atoms/trend-chip/index.ts +1 -1
  849. package/src/atoms/trend-chip/trend-chip.tsx +17 -4
  850. package/src/brand/logo-forge.tsx +1 -1
  851. package/src/calendar/day-chip/day-chip.tsx +16 -6
  852. package/src/calendar/day-chip/index.ts +1 -1
  853. package/src/calendar/event-block/event-block.tsx +44 -9
  854. package/src/calendar/event-block/index.ts +6 -1
  855. package/src/calendar/month-view/index.ts +1 -1
  856. package/src/calendar/month-view/month-view.tsx +37 -6
  857. package/src/calendar/timeline-view/index.ts +1 -1
  858. package/src/calendar/timeline-view/timeline-view.tsx +26 -7
  859. package/src/calendar/week-view/index.ts +1 -1
  860. package/src/calendar/week-view/week-view.tsx +50 -10
  861. package/src/charts/README.md +1 -1
  862. package/src/charts/bar-chart/bar-race-chart.tsx +4 -4
  863. package/src/charts/bubble-map/bubble-map.tsx +1 -1
  864. package/src/charts/bullet-chart/bullet-chart.tsx +2 -2
  865. package/src/charts/candlestick-chart/candlestick-chart.tsx +3 -3
  866. package/src/charts/chart-grid/chart-grid.tsx +2 -2
  867. package/src/charts/chord-chart/chord-chart.tsx +1 -1
  868. package/src/charts/choropleth-map/choropleth-map.tsx +1 -1
  869. package/src/charts/core/axes.tsx +3 -3
  870. package/src/charts/core/breadcrumb.tsx +1 -1
  871. package/src/charts/core/cartesian/annotations.tsx +3 -3
  872. package/src/charts/core/cartesian/cartesian-chart.tsx +1 -1
  873. package/src/charts/core/cartesian/category-group-axis.tsx +1 -1
  874. package/src/charts/core/cartesian/ink-layer.tsx +1 -1
  875. package/src/charts/core/cartesian/marks.tsx +1 -1
  876. package/src/charts/core/chart-states.tsx +2 -2
  877. package/src/charts/core/distribution/layout.ts +1 -1
  878. package/src/charts/core/distribution/marks.tsx +2 -2
  879. package/src/charts/core/distribution/xy-points.tsx +4 -4
  880. package/src/charts/core/export-menu.tsx +1 -1
  881. package/src/charts/core/legend.tsx +2 -2
  882. package/src/charts/core/tooltip.tsx +3 -3
  883. package/src/charts/crossfilter/crossfilter.tsx +4 -4
  884. package/src/charts/donut-chart/donut-chart.tsx +1 -1
  885. package/src/charts/dumbbell-chart/dumbbell-chart.tsx +5 -5
  886. package/src/charts/fill-gauge-chart/fill-gauge-chart.tsx +1 -1
  887. package/src/charts/funnel-chart/funnel-chart.tsx +6 -6
  888. package/src/charts/gantt-chart/gantt-chart.tsx +7 -7
  889. package/src/charts/gantt-chart/gantt-marks.tsx +6 -6
  890. package/src/charts/gauge-chart/gauge-chart.tsx +4 -4
  891. package/src/charts/globe-chart/globe-chart.tsx +1 -1
  892. package/src/charts/heatmap-chart/heatmap-grid.tsx +7 -7
  893. package/src/charts/hierarchy-morph/hierarchy-morph.tsx +3 -3
  894. package/src/charts/histogram/histogram.tsx +1 -1
  895. package/src/charts/icicle-chart/icicle-chart.tsx +2 -2
  896. package/src/charts/isotype-rows/isotype-rows.tsx +3 -3
  897. package/src/charts/lollipop-chart/lollipop-chart.tsx +1 -1
  898. package/src/charts/maps/geo/map-data-table.tsx +3 -3
  899. package/src/charts/maps/geo/map-legend.tsx +5 -5
  900. package/src/charts/maps/geo/map-viewport.tsx +1 -1
  901. package/src/charts/parliament-chart/parliament-chart.tsx +2 -2
  902. package/src/charts/pictogram-chart/pictogram-chart.tsx +1 -1
  903. package/src/charts/polar-area-chart/polar-area-chart.tsx +2 -2
  904. package/src/charts/progress-units/progress-units.tsx +1 -1
  905. package/src/charts/radar-chart/radar-chart.tsx +1 -1
  906. package/src/charts/radial-bar-chart/radial-bar-chart.tsx +1 -1
  907. package/src/charts/sankey-chart/sankey-chart.tsx +5 -5
  908. package/src/charts/slope-chart/slope-chart.tsx +1 -1
  909. package/src/charts/sparkline/sparkline.tsx +1 -1
  910. package/src/charts/stock-chart/stock-chart.tsx +1 -1
  911. package/src/charts/stock-chart/stock-drawing-layer.tsx +4 -4
  912. package/src/charts/stock-chart/stock-plot.tsx +3 -3
  913. package/src/charts/stream-graph/stream-graph.tsx +1 -1
  914. package/src/charts/sunburst-chart/sunburst-chart.tsx +1 -1
  915. package/src/charts/timeline-chart/timeline-chart.tsx +3 -3
  916. package/src/charts/tree-chart/tree-card.tsx +6 -6
  917. package/src/charts/tree-chart/tree-chart.tsx +5 -5
  918. package/src/charts/treemap-chart/treemap-chart.tsx +3 -3
  919. package/src/charts/waterfall-chart/waterfall-chart.tsx +2 -2
  920. package/src/containers/action-bar/action-bar.tsx +21 -4
  921. package/src/containers/action-bar/index.ts +1 -1
  922. package/src/containers/banner/banner.tsx +19 -5
  923. package/src/containers/card/card.tsx +1 -1
  924. package/src/containers/carousel/carousel.tsx +38 -10
  925. package/src/containers/carousel/index.ts +1 -1
  926. package/src/containers/comment/comment.tsx +1 -1
  927. package/src/containers/confirm-action/confirm-action.tsx +41 -8
  928. package/src/containers/data-grid/chart-panel.tsx +4 -4
  929. package/src/containers/data-grid/column-menu.tsx +14 -14
  930. package/src/containers/data-grid/data-grid.demos.tsx +13 -13
  931. package/src/containers/data-grid/data-grid.samples.tsx +1 -1
  932. package/src/containers/data-grid/data-grid.tsx +38 -38
  933. package/src/containers/data-grid/filter-builder-editor.tsx +6 -6
  934. package/src/containers/data-grid/formula-bar.tsx +4 -4
  935. package/src/containers/data-grid/grid-toolbar.tsx +7 -7
  936. package/src/containers/data-grid/spreadsheet.demos.tsx +1 -1
  937. package/src/containers/data-grid/tool-panel.tsx +11 -11
  938. package/src/containers/description-list/description-list.tsx +1 -1
  939. package/src/containers/facts/facts.tsx +2 -2
  940. package/src/containers/file-tree/file-tree.tsx +30 -9
  941. package/src/containers/file-tree/index.ts +1 -1
  942. package/src/containers/generic-row/generic-row.tsx +3 -3
  943. package/src/containers/hbars/hbars.tsx +5 -5
  944. package/src/containers/item-card-group/index.ts +1 -0
  945. package/src/containers/item-card-group/item-card-group.tsx +65 -13
  946. package/src/containers/kanban/index.ts +1 -1
  947. package/src/containers/kanban/kanban.tsx +67 -11
  948. package/src/containers/kpi/kpi.tsx +26 -8
  949. package/src/containers/kpi-group/index.ts +1 -1
  950. package/src/containers/kpi-group/kpi-group.tsx +37 -8
  951. package/src/containers/page-header/page-header.tsx +2 -2
  952. package/src/containers/responsive-list/responsive-list.tsx +57 -10
  953. package/src/containers/settings-layout/settings-layout.tsx +1 -1
  954. package/src/containers/settings-row/settings-row.tsx +20 -5
  955. package/src/containers/table/table.tsx +5 -5
  956. package/src/containers/timeline/index.ts +1 -0
  957. package/src/containers/timeline/timeline.tsx +68 -12
  958. package/src/dashboards/layout.tsx +2 -2
  959. package/src/forms/accent-picker/accent-picker.tsx +23 -13
  960. package/src/forms/accent-picker/index.ts +1 -0
  961. package/src/forms/checkbox-button-group/checkbox-button-group.tsx +19 -2
  962. package/src/forms/checkbox-button-group/index.ts +1 -0
  963. package/src/forms/dropzone/dropzone.tsx +27 -5
  964. package/src/forms/dropzone/index.ts +1 -0
  965. package/src/forms/emoji-picker/emoji-picker.tsx +50 -10
  966. package/src/forms/emoji-picker/index.ts +1 -1
  967. package/src/forms/emoji-reaction-button/emoji-reaction-button.tsx +35 -8
  968. package/src/forms/emoji-reaction-button/index.ts +2 -0
  969. package/src/forms/field/field.tsx +38 -9
  970. package/src/forms/field/index.ts +1 -1
  971. package/src/forms/inline-select/inline-select.tsx +1 -1
  972. package/src/forms/input-icon/index.ts +1 -1
  973. package/src/forms/input-icon/input-icon.tsx +13 -5
  974. package/src/forms/internal/button-option.tsx +15 -5
  975. package/src/forms/native-select/index.ts +1 -0
  976. package/src/forms/native-select/native-select.tsx +13 -3
  977. package/src/forms/number-stepper/index.ts +5 -1
  978. package/src/forms/number-stepper/number-stepper.tsx +18 -5
  979. package/src/forms/pin-input/index.ts +1 -1
  980. package/src/forms/pin-input/pin-input.tsx +22 -3
  981. package/src/forms/radio-button-group/index.ts +1 -0
  982. package/src/forms/radio-button-group/radio-button-group.tsx +14 -2
  983. package/src/forms/rating/index.ts +1 -1
  984. package/src/forms/rating/rating.tsx +27 -8
  985. package/src/forms/select/select.tsx +1 -1
  986. package/src/forms/slider/index.ts +1 -0
  987. package/src/forms/slider/slider.tsx +46 -6
  988. package/src/i18n/strings.ts +3 -0
  989. package/src/icons/alert-triangle.tsx +3 -0
  990. package/src/icons/archive.tsx +13 -0
  991. package/src/icons/armchair.tsx +14 -0
  992. package/src/icons/arrow-down-right.tsx +12 -0
  993. package/src/icons/arrow-down-to-line.tsx +13 -0
  994. package/src/icons/arrow-down.tsx +12 -0
  995. package/src/icons/arrow-left-to-line.tsx +13 -0
  996. package/src/icons/arrow-left.tsx +12 -0
  997. package/src/icons/arrow-right-to-line.tsx +13 -0
  998. package/src/icons/arrow-right.tsx +12 -0
  999. package/src/icons/arrow-up-from-line.tsx +13 -0
  1000. package/src/icons/arrow-up-right.tsx +12 -0
  1001. package/src/icons/arrow-up-to-line.tsx +13 -0
  1002. package/src/icons/arrow-up.tsx +12 -0
  1003. package/src/icons/banknote.tsx +13 -0
  1004. package/src/icons/bar-chart2.tsx +3 -0
  1005. package/src/icons/bar-chart3.tsx +3 -0
  1006. package/src/icons/bell.tsx +12 -0
  1007. package/src/icons/bold.tsx +11 -0
  1008. package/src/icons/book-open.tsx +12 -0
  1009. package/src/icons/boxes.tsx +22 -0
  1010. package/src/icons/brain.tsx +18 -0
  1011. package/src/icons/calculator.tsx +20 -0
  1012. package/src/icons/calendar-check.tsx +15 -0
  1013. package/src/icons/calendar-clock.tsx +16 -0
  1014. package/src/icons/calendar-days.tsx +20 -0
  1015. package/src/icons/calendar-plus.tsx +16 -0
  1016. package/src/icons/calendar-x.tsx +16 -0
  1017. package/src/icons/calendar.tsx +14 -0
  1018. package/src/icons/camera.tsx +12 -0
  1019. package/src/icons/chart-column.tsx +14 -0
  1020. package/src/icons/chart-no-axes-column.tsx +13 -0
  1021. package/src/icons/check-check.tsx +12 -0
  1022. package/src/icons/check-circle2.tsx +3 -0
  1023. package/src/icons/check.tsx +11 -0
  1024. package/src/icons/chevron-down.tsx +11 -0
  1025. package/src/icons/chevron-left.tsx +11 -0
  1026. package/src/icons/chevron-right.tsx +11 -0
  1027. package/src/icons/chevrons-left.tsx +12 -0
  1028. package/src/icons/chevrons-right.tsx +12 -0
  1029. package/src/icons/chevrons-up-down.tsx +12 -0
  1030. package/src/icons/circle-alert.tsx +13 -0
  1031. package/src/icons/circle-check.tsx +12 -0
  1032. package/src/icons/circle-x.tsx +13 -0
  1033. package/src/icons/clipboard-list.tsx +16 -0
  1034. package/src/icons/clock.tsx +12 -0
  1035. package/src/icons/coins.tsx +14 -0
  1036. package/src/icons/columns-3.tsx +13 -0
  1037. package/src/icons/construction.tsx +18 -0
  1038. package/src/icons/copy.tsx +12 -0
  1039. package/src/icons/credit-card.tsx +13 -0
  1040. package/src/icons/download.tsx +13 -0
  1041. package/src/icons/ellipsis-vertical.tsx +13 -0
  1042. package/src/icons/external-link.tsx +13 -0
  1043. package/src/icons/eye-off.tsx +14 -0
  1044. package/src/icons/face-slightly-smiling-plus.tsx +16 -0
  1045. package/src/icons/face-slightly-smiling.tsx +14 -0
  1046. package/src/icons/file-code.tsx +14 -0
  1047. package/src/icons/file-image.tsx +14 -0
  1048. package/src/icons/file-spreadsheet.tsx +16 -0
  1049. package/src/icons/file-text.tsx +15 -0
  1050. package/src/icons/file.tsx +12 -0
  1051. package/src/icons/filter.tsx +3 -0
  1052. package/src/icons/folder-open.tsx +11 -0
  1053. package/src/icons/folder.tsx +11 -0
  1054. package/src/icons/funnel.tsx +11 -0
  1055. package/src/icons/grip-vertical.tsx +16 -0
  1056. package/src/icons/heading-2.tsx +14 -0
  1057. package/src/icons/icon-base.tsx +51 -0
  1058. package/src/icons/inbox.tsx +12 -0
  1059. package/src/icons/index.ts +146 -0
  1060. package/src/icons/info.tsx +13 -0
  1061. package/src/icons/italic.tsx +13 -0
  1062. package/src/icons/landmark.tsx +16 -0
  1063. package/src/icons/layers.tsx +13 -0
  1064. package/src/icons/layout-dashboard.tsx +14 -0
  1065. package/src/icons/layout-grid.tsx +14 -0
  1066. package/src/icons/link-2.tsx +13 -0
  1067. package/src/icons/list-checks.tsx +15 -0
  1068. package/src/icons/list-filter.tsx +13 -0
  1069. package/src/icons/list-ordered.tsx +16 -0
  1070. package/src/icons/list.tsx +16 -0
  1071. package/src/icons/loader-circle.tsx +11 -0
  1072. package/src/icons/lock.tsx +12 -0
  1073. package/src/icons/log-out.tsx +13 -0
  1074. package/src/icons/map-pin.tsx +12 -0
  1075. package/src/icons/menu.tsx +13 -0
  1076. package/src/icons/message-circle.tsx +11 -0
  1077. package/src/icons/message-square.tsx +11 -0
  1078. package/src/icons/minus.tsx +11 -0
  1079. package/src/icons/moon.tsx +11 -0
  1080. package/src/icons/move-horizontal.tsx +13 -0
  1081. package/src/icons/octagon-x.tsx +13 -0
  1082. package/src/icons/package.tsx +14 -0
  1083. package/src/icons/panel-right.tsx +12 -0
  1084. package/src/icons/paperclip.tsx +11 -0
  1085. package/src/icons/pause.tsx +12 -0
  1086. package/src/icons/pen-line.tsx +12 -0
  1087. package/src/icons/pencil.tsx +12 -0
  1088. package/src/icons/phone.tsx +11 -0
  1089. package/src/icons/pin-off.tsx +14 -0
  1090. package/src/icons/play.tsx +11 -0
  1091. package/src/icons/plus.tsx +12 -0
  1092. package/src/icons/redo-2.tsx +12 -0
  1093. package/src/icons/refresh-cw.tsx +14 -0
  1094. package/src/icons/rotate-ccw.tsx +12 -0
  1095. package/src/icons/scan-barcode.tsx +17 -0
  1096. package/src/icons/scissors.tsx +15 -0
  1097. package/src/icons/scroll-text.tsx +14 -0
  1098. package/src/icons/search.tsx +12 -0
  1099. package/src/icons/send.tsx +12 -0
  1100. package/src/icons/settings.tsx +12 -0
  1101. package/src/icons/shield.tsx +11 -0
  1102. package/src/icons/shopping-bag.tsx +13 -0
  1103. package/src/icons/shopping-cart.tsx +14 -0
  1104. package/src/icons/sliders-horizontal.tsx +19 -0
  1105. package/src/icons/smartphone.tsx +12 -0
  1106. package/src/icons/smile-plus.tsx +3 -0
  1107. package/src/icons/smile.tsx +3 -0
  1108. package/src/icons/sparkles.tsx +14 -0
  1109. package/src/icons/square.tsx +11 -0
  1110. package/src/icons/star.tsx +11 -0
  1111. package/src/icons/sun.tsx +19 -0
  1112. package/src/icons/tags.tsx +13 -0
  1113. package/src/icons/thumbs-down.tsx +12 -0
  1114. package/src/icons/thumbs-up.tsx +12 -0
  1115. package/src/icons/trash.tsx +15 -0
  1116. package/src/icons/trash2.tsx +3 -0
  1117. package/src/icons/triangle-alert.tsx +13 -0
  1118. package/src/icons/truck.tsx +15 -0
  1119. package/src/icons/underline.tsx +12 -0
  1120. package/src/icons/undo-2.tsx +12 -0
  1121. package/src/icons/unlink.tsx +16 -0
  1122. package/src/icons/upload.tsx +13 -0
  1123. package/src/icons/user-check.tsx +13 -0
  1124. package/src/icons/user-cog.tsx +21 -0
  1125. package/src/icons/user-plus.tsx +14 -0
  1126. package/src/icons/user-round.tsx +12 -0
  1127. package/src/icons/user.tsx +12 -0
  1128. package/src/icons/users.tsx +14 -0
  1129. package/src/icons/video.tsx +12 -0
  1130. package/src/icons/wallet.tsx +12 -0
  1131. package/src/icons/wrench.tsx +11 -0
  1132. package/src/icons/x.tsx +12 -0
  1133. package/src/icons/xcircle.tsx +3 -0
  1134. package/src/icons/xoctagon.tsx +3 -0
  1135. package/src/navigation/floating-toc/floating-toc.tsx +25 -5
  1136. package/src/navigation/floating-toc/index.ts +1 -1
  1137. package/src/navigation/segmented/segmented.tsx +106 -18
  1138. package/src/navigation/stepper/index.ts +1 -1
  1139. package/src/navigation/stepper/stepper.tsx +22 -6
  1140. package/src/navigation/tabs/tabs.tsx +190 -23
  1141. package/src/overlays/context-menu/context-menu.tsx +9 -14
  1142. package/src/overlays/dialog/dialog.tsx +24 -12
  1143. package/src/overlays/dialog/index.ts +2 -0
  1144. package/src/overlays/drawer/drawer.tsx +29 -13
  1145. package/src/overlays/drawer/index.ts +2 -0
  1146. package/src/overlays/dropdown-menu/dropdown-menu.tsx +107 -28
  1147. package/src/overlays/dropdown-menu/index.ts +9 -0
  1148. package/src/overlays/hover-card/hover-card.tsx +4 -4
  1149. package/src/overlays/popover/index.ts +1 -0
  1150. package/src/overlays/popover/popover.tsx +10 -7
  1151. package/src/overlays/toaster/index.ts +9 -1
  1152. package/src/overlays/toaster/toast-store.ts +100 -0
  1153. package/src/overlays/toaster/toast.ts +18 -0
  1154. package/src/overlays/toaster/toaster.tsx +277 -18
  1155. package/src/palette/command-palette/command-palette.tsx +65 -15
  1156. package/src/palette/command-palette/index.ts +1 -0
  1157. package/src/primitives/command/command.tsx +621 -0
  1158. package/src/primitives/command/score.ts +104 -0
  1159. package/src/primitives/command/store.ts +280 -0
  1160. package/src/primitives/dialog/dialog.tsx +316 -0
  1161. package/src/primitives/focusable.ts +85 -0
  1162. package/src/primitives/global-singleton.ts +10 -0
  1163. package/src/primitives/hide-others.ts +116 -0
  1164. package/src/primitives/index.ts +42 -0
  1165. package/src/primitives/layer-stack.ts +27 -0
  1166. package/src/primitives/menu/grace.ts +40 -0
  1167. package/src/primitives/menu/menu.tsx +1129 -0
  1168. package/src/primitives/menu/navigation.ts +15 -0
  1169. package/src/primitives/menu/typeahead.ts +22 -0
  1170. package/src/primitives/pointer-events-lock.ts +48 -0
  1171. package/src/primitives/popover/popover.tsx +316 -0
  1172. package/src/primitives/popper/geometry.ts +250 -0
  1173. package/src/primitives/popper/popper.tsx +434 -0
  1174. package/src/primitives/portal.tsx +23 -0
  1175. package/src/primitives/scroll-lock.ts +114 -0
  1176. package/src/primitives/use-dismissable-layer.ts +171 -0
  1177. package/src/primitives/use-focus-scope.ts +127 -0
  1178. package/src/primitives/use-layer.ts +14 -0
  1179. package/src/primitives/use-presence.ts +111 -0
  1180. package/src/rich-text/index.ts +1 -0
  1181. package/src/rich-text/rich-text-editor.tsx +57 -10
  1182. package/src/shell/app-shell/app-shell.tsx +6 -4
  1183. package/src/shell/sidebar/index.ts +1 -0
  1184. package/src/shell/sidebar/sidebar.tsx +32 -6
  1185. package/src/shell/topbar/index.ts +1 -1
  1186. package/src/shell/topbar/topbar.tsx +57 -10
  1187. package/src/showcase/controls-bento.tsx +2 -2
  1188. package/src/showcase/kit-tiles.tsx +1 -1
  1189. package/src/showcase/operations-bento.tsx +1 -1
  1190. package/src/showcase/shell.tsx +1 -1
  1191. package/src/states/empty-state/empty-state.tsx +2 -2
  1192. package/src/states/error-state/error-state.tsx +4 -4
  1193. package/src/states/forbidden-state/forbidden-state.tsx +2 -2
  1194. package/src/states/offline-banner/offline-banner.tsx +1 -1
  1195. package/src/utils/class-groups.ts +851 -0
  1196. package/src/utils/class-merge.ts +248 -0
  1197. package/src/utils/class-names.ts +9 -0
  1198. package/src/utils/class-tokens.generated.ts +101 -0
  1199. package/src/utils/class-validators.ts +69 -0
  1200. package/src/utils/cn.ts +82 -87
  1201. package/src/utils/compose.ts +19 -0
  1202. package/src/utils/form-bubble.tsx +147 -0
  1203. package/src/utils/index.ts +9 -1
  1204. package/src/utils/roving-focus.ts +116 -0
  1205. package/src/utils/slot.tsx +91 -0
  1206. package/src/utils/use-controllable-state.ts +47 -0
  1207. package/styles/Theme.kt +1 -1
  1208. package/styles/theme.css +15 -0
  1209. package/styles/tokens.css +1 -1
  1210. package/tokens/default.json +18 -2
@@ -4,22 +4,6 @@
4
4
  // biome-ignore-all lint/a11y/useFocusableInteractive: footer and empty-state cells are read, not navigated.
5
5
  "use client";
6
6
 
7
- import {
8
- ArrowDown,
9
- ArrowDownToLine,
10
- ArrowUp,
11
- ArrowUpToLine,
12
- BarChart3,
13
- ChevronDown,
14
- ChevronLeft,
15
- ChevronRight,
16
- ChevronsLeft,
17
- ChevronsRight,
18
- CircleAlert,
19
- Copy,
20
- GripVertical,
21
- PinOff,
22
- } from "lucide-react";
23
7
  import {
24
8
  type ClipboardEvent,
25
9
  type CSSProperties,
@@ -41,6 +25,22 @@ import {
41
25
  import { Chip } from "../../atoms/chip/chip.js";
42
26
  import { formatCurrency, formatNumber } from "../../charts/core/format.js";
43
27
  import { Sparkline } from "../../charts/sparkline/sparkline.js";
28
+ import {
29
+ ArrowDown,
30
+ ArrowDownToLine,
31
+ ArrowUp,
32
+ ArrowUpToLine,
33
+ BarChart3,
34
+ ChevronDown,
35
+ ChevronLeft,
36
+ ChevronRight,
37
+ ChevronsLeft,
38
+ ChevronsRight,
39
+ CircleAlert,
40
+ Copy,
41
+ GripVertical,
42
+ PinOff,
43
+ } from "../../icons/index.js";
44
44
  import { cn } from "../../utils/cn.js";
45
45
  import { computePinOffsets, type PinPosition, sanitizePinned } from "../table/pin.js";
46
46
  import { type GridChartKind, type RangeChartData, rangeToChart } from "./chart-range.js";
@@ -2110,7 +2110,7 @@ export function DataGrid<T>({
2110
2110
  className={cn(
2111
2111
  cellBase,
2112
2112
  sticky,
2113
- "select-none whitespace-nowrap font-[650] text-[11px] text-ink-3 uppercase tracking-[.07em]",
2113
+ "select-none whitespace-nowrap font-[650] text-fs-110 text-ink-3 uppercase tracking-[.07em]",
2114
2114
  sortable && "cursor-pointer hover:text-ink",
2115
2115
  drop === "before" && "shadow-[inset_2px_0_0_var(--accent)]",
2116
2116
  drop === "after" && "shadow-[inset_-2px_0_0_var(--accent)]",
@@ -2125,7 +2125,7 @@ export function DataGrid<T>({
2125
2125
  {formulasOn ? (
2126
2126
  <span
2127
2127
  aria-hidden="true"
2128
- className="shrink-0 rounded-xs bg-surface-2 px-1 font-[650] text-[10px] text-ink-3 normal-case tracking-normal"
2128
+ className="shrink-0 rounded-xs bg-surface-2 px-1 font-[650] text-fs-100 text-ink-3 normal-case tracking-normal"
2129
2129
  >
2130
2130
  {cellLetter(column.id)}
2131
2131
  </span>
@@ -2141,7 +2141,7 @@ export function DataGrid<T>({
2141
2141
  <ArrowDown aria-hidden="true" className="size-3" />
2142
2142
  )}
2143
2143
  {sort.length > 1 ? (
2144
- <span className="text-[10px] tabular-nums">{state.index + 1}</span>
2144
+ <span className="text-fs-100 tabular-nums">{state.index + 1}</span>
2145
2145
  ) : null}
2146
2146
  {state.index > 0 ? (
2147
2147
  <span className="sr-only">
@@ -2252,7 +2252,7 @@ export function DataGrid<T>({
2252
2252
  if (!editing) return null;
2253
2253
  const errorId = `${helpId}-error`;
2254
2254
  const editorClass = cn(
2255
- "h-[calc(100%-6px)] w-full min-w-0 rounded-xs border bg-surface px-1.5 text-[13px] text-ink outline-none",
2255
+ "h-[calc(100%-6px)] w-full min-w-0 rounded-xs border bg-surface px-1.5 text-fs-130 text-ink outline-none",
2256
2256
  editing.error ? "border-danger" : "border-accent",
2257
2257
  );
2258
2258
  const common = {
@@ -2299,7 +2299,7 @@ export function DataGrid<T>({
2299
2299
  <span
2300
2300
  id={errorId}
2301
2301
  role="alert"
2302
- className="absolute top-full left-1 z-5 mt-0.5 flex max-w-64 items-center gap-1.5 rounded-xs border border-danger bg-surface px-2 py-1 text-[12px] text-danger shadow-overlay"
2302
+ className="absolute top-full left-1 z-5 mt-0.5 flex max-w-64 items-center gap-1.5 rounded-xs border border-danger bg-surface px-2 py-1 text-fs-120 text-danger shadow-overlay"
2303
2303
  >
2304
2304
  <CircleAlert aria-hidden="true" className="size-3.5 shrink-0" />
2305
2305
  {editing.error}
@@ -2335,7 +2335,7 @@ export function DataGrid<T>({
2335
2335
  tabIndex={labelActive ? 0 : -1}
2336
2336
  role="gridcell"
2337
2337
  aria-expanded={!row.collapsed}
2338
- className={cn(cellBase, "cursor-pointer overflow-visible text-[13px]")}
2338
+ className={cn(cellBase, "cursor-pointer overflow-visible text-fs-130")}
2339
2339
  >
2340
2340
  <span
2341
2341
  className="sticky left-3 flex w-fit max-w-full min-w-0 items-center gap-1.5 whitespace-nowrap font-[650] text-ink"
@@ -2354,7 +2354,7 @@ export function DataGrid<T>({
2354
2354
  </span>
2355
2355
  <span className="shrink-0 font-normal text-ink-3">{header}:</span>
2356
2356
  <span className="min-w-0 truncate">{row.label}</span>
2357
- <Chip className="h-5 shrink-0 px-2 text-[11px]">{row.count}</Chip>
2357
+ <Chip className="h-5 shrink-0 px-2 text-fs-110">{row.count}</Chip>
2358
2358
  </span>
2359
2359
  </td>
2360
2360
  );
@@ -2372,7 +2372,7 @@ export function DataGrid<T>({
2372
2372
  style={pinStyle(position)}
2373
2373
  className={cn(
2374
2374
  cellBase,
2375
- "cursor-pointer text-[13px]",
2375
+ "cursor-pointer text-fs-130",
2376
2376
  position && "sticky z-1 bg-surface-2",
2377
2377
  pinShadow(position),
2378
2378
  column && alignClass[columnAlign(column)],
@@ -2702,7 +2702,7 @@ export function DataGrid<T>({
2702
2702
  onDragOver={reorderAllowed ? (event) => onRowDragOver(event, row.key) : undefined}
2703
2703
  onDrop={reorderAllowed ? (event) => onRowDrop(event, row.key) : undefined}
2704
2704
  className={cn(
2705
- "group/row text-[13px] text-ink hover:bg-surface-2 aria-selected:bg-accent-soft",
2705
+ "group/row text-fs-130 text-ink hover:bg-surface-2 aria-selected:bg-accent-soft",
2706
2706
  "data-[drop=before]:[&>td]:shadow-[inset_0_2px_0_var(--accent)] data-[drop=after]:[&>td]:shadow-[inset_0_-2px_0_var(--accent)]",
2707
2707
  "data-[divider=top]:[&>td]:border-b-line-strong",
2708
2708
  )}
@@ -2781,7 +2781,7 @@ export function DataGrid<T>({
2781
2781
  key={idOfColumn(entry)}
2782
2782
  style={pinStyle(position)}
2783
2783
  className={cn(
2784
- "sticky bottom-0 overflow-hidden border-t-divider bg-surface px-3 font-[650] text-[13px] text-ink @max-sm/grid:px-2",
2784
+ "sticky bottom-0 overflow-hidden border-t-divider bg-surface px-3 font-[650] text-fs-130 text-ink @max-sm/grid:px-2",
2785
2785
  position ? "z-3" : "z-2",
2786
2786
  pinShadow(position),
2787
2787
  column && alignClass[columnAlign(column)],
@@ -2794,7 +2794,7 @@ export function DataGrid<T>({
2794
2794
  {formatAggregate(value, column.aggregate, column)}
2795
2795
  </span>
2796
2796
  ) : c === firstDataIndex ? (
2797
- <span className="text-[11px] text-ink-3 uppercase tracking-[.07em]">{labels.total}</span>
2797
+ <span className="text-fs-110 text-ink-3 uppercase tracking-[.07em]">{labels.total}</span>
2798
2798
  ) : null}
2799
2799
  </td>
2800
2800
  );
@@ -2858,7 +2858,7 @@ export function DataGrid<T>({
2858
2858
  role={cell.label ? "columnheader" : "presentation"}
2859
2859
  colSpan={cell.span}
2860
2860
  className={cn(
2861
- "sticky overflow-clip border-b-divider bg-surface px-3 text-center font-[650] text-[11px] text-ink-3 uppercase tracking-[.07em] @max-sm/grid:px-2",
2861
+ "sticky overflow-clip border-b-divider bg-surface px-3 text-center font-[650] text-fs-110 text-ink-3 uppercase tracking-[.07em] @max-sm/grid:px-2",
2862
2862
  zone === "center" ? "z-2" : "z-3",
2863
2863
  cell.label && "border-x",
2864
2864
  )}
@@ -3074,13 +3074,13 @@ export function DataGrid<T>({
3074
3074
  {sourceActive && remote.failed && remote.total !== null ? (
3075
3075
  <div
3076
3076
  role="alert"
3077
- className="flex flex-wrap items-center gap-2 border-b-divider bg-danger-soft px-3 py-2 text-[13px] text-danger"
3077
+ className="flex flex-wrap items-center gap-2 border-b-divider bg-danger-soft px-3 py-2 text-fs-130 text-danger"
3078
3078
  >
3079
3079
  <CircleAlert aria-hidden="true" className="size-4 shrink-0" />
3080
3080
  <span className="min-w-0 flex-1">{labels.loadError}</span>
3081
3081
  <button
3082
3082
  type="button"
3083
- className="rounded-control border border-danger px-2.5 py-1 font-[600] text-[12.5px] hover:bg-surface"
3083
+ className="rounded-control border border-danger px-2.5 py-1 font-[600] text-fs-125 hover:bg-surface"
3084
3084
  onClick={remote.retry}
3085
3085
  >
3086
3086
  {labels.retry}
@@ -3171,7 +3171,7 @@ export function DataGrid<T>({
3171
3171
  ))
3172
3172
  ) : bodyLength === 0 ? (
3173
3173
  <tr aria-rowindex={groupLevels + 2}>
3174
- <td colSpan={colSpan} className="px-4 py-10 text-center text-[13px] text-ink-3">
3174
+ <td colSpan={colSpan} className="px-4 py-10 text-center text-fs-130 text-ink-3">
3175
3175
  <div className="sticky left-0 inline-flex max-w-[calc(100cqw-2rem)] flex-col items-center gap-2">
3176
3176
  <span>
3177
3177
  {sourceActive && remote.failed
@@ -3183,7 +3183,7 @@ export function DataGrid<T>({
3183
3183
  {sourceActive && remote.failed ? (
3184
3184
  <button
3185
3185
  type="button"
3186
- className="rounded-control border-divider px-2.5 py-1 font-[600] text-[12.5px] text-ink-2 hover:text-ink"
3186
+ className="rounded-control border-divider px-2.5 py-1 font-[600] text-fs-125 text-ink-2 hover:text-ink"
3187
3187
  onClick={remote.retry}
3188
3188
  >
3189
3189
  {labels.retry}
@@ -3191,7 +3191,7 @@ export function DataGrid<T>({
3191
3191
  ) : emptyFiltered ? (
3192
3192
  <button
3193
3193
  type="button"
3194
- className="rounded-control border-divider px-2.5 py-1 font-[600] text-[12.5px] text-ink-2 hover:text-ink"
3194
+ className="rounded-control border-divider px-2.5 py-1 font-[600] text-fs-125 text-ink-2 hover:text-ink"
3195
3195
  onClick={() => {
3196
3196
  setFiltersState({});
3197
3197
  setSearch("");
@@ -3230,7 +3230,7 @@ export function DataGrid<T>({
3230
3230
  </div>
3231
3231
  </div>
3232
3232
  {rangeSelection ? (
3233
- <div className="flex flex-wrap items-center gap-x-4 gap-y-1 border-t-divider px-3 py-1.5 text-[12.5px] text-ink-2">
3233
+ <div className="flex flex-wrap items-center gap-x-4 gap-y-1 border-t-divider px-3 py-1.5 text-fs-125 text-ink-2">
3234
3234
  {stats && cellRange ? (
3235
3235
  <>
3236
3236
  <span className="font-[650] text-ink">{labels.rangeCells(rangeCellCount)}</span>
@@ -3262,7 +3262,7 @@ export function DataGrid<T>({
3262
3262
  <button
3263
3263
  type="button"
3264
3264
  onClick={openChart}
3265
- className="ml-auto inline-flex h-7 items-center gap-1.5 rounded-control border-divider bg-surface-control px-2 font-[600] text-[12px] text-ink-2 hover:border-line-strong hover:text-ink [&_svg]:size-3.5"
3265
+ className="ml-auto inline-flex h-7 items-center gap-1.5 rounded-control border-divider bg-surface-control px-2 font-[600] text-fs-120 text-ink-2 hover:border-line-strong hover:text-ink [&_svg]:size-3.5"
3266
3266
  >
3267
3267
  <BarChart3 aria-hidden="true" />
3268
3268
  {labels.chart}
@@ -3272,7 +3272,7 @@ export function DataGrid<T>({
3272
3272
  type="button"
3273
3273
  onClick={copyRange}
3274
3274
  className={cn(
3275
- "inline-flex h-7 items-center gap-1.5 rounded-control border-divider bg-surface-control px-2 font-[600] text-[12px] text-ink-2 hover:border-line-strong hover:text-ink [&_svg]:size-3.5",
3275
+ "inline-flex h-7 items-center gap-1.5 rounded-control border-divider bg-surface-control px-2 font-[600] text-fs-120 text-ink-2 hover:border-line-strong hover:text-ink [&_svg]:size-3.5",
3276
3276
  !charts && "ml-auto",
3277
3277
  )}
3278
3278
  >
@@ -3355,14 +3355,14 @@ function Pagination({
3355
3355
  return (
3356
3356
  <nav
3357
3357
  aria-label={labels.rowsPerPage}
3358
- className="flex flex-wrap items-center justify-end gap-x-3 gap-y-1 border-t-divider px-2 py-1.5 text-[12.5px] text-ink-2"
3358
+ className="flex flex-wrap items-center justify-end gap-x-3 gap-y-1 border-t-divider px-2 py-1.5 text-fs-125 text-ink-2"
3359
3359
  >
3360
3360
  <label className="flex items-center gap-2">
3361
3361
  <span>{labels.rowsPerPage}</span>
3362
3362
  <select
3363
3363
  value={pageSize}
3364
3364
  onChange={(event) => onPageSize(Number(event.target.value))}
3365
- className="h-control-sm rounded-input border-control bg-surface-control px-1.5 text-[12.5px] text-ink"
3365
+ className="h-control-sm rounded-input border-control bg-surface-control px-1.5 text-fs-125 text-ink"
3366
3366
  >
3367
3367
  {[...new Set([...options, pageSize])]
3368
3368
  .sort((a, b) => a - b)
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { Plus, Trash2 } from "lucide-react";
3
+ import { Plus, Trash2 } from "../../icons/index.js";
4
4
  import { cn } from "../../utils/cn.js";
5
5
  import {
6
6
  addChild,
@@ -30,9 +30,9 @@ export interface FilterBuilderProps<T> {
30
30
  }
31
31
 
32
32
  const fieldClass =
33
- "h-control-sm w-full min-w-0 rounded-input border-control bg-surface-control px-2 text-[13px] text-ink placeholder:text-ink-3 focus-visible:border-accent focus-visible:outline-none";
33
+ "h-control-sm w-full min-w-0 rounded-input border-control bg-surface-control px-2 text-fs-130 text-ink placeholder:text-ink-3 focus-visible:border-accent focus-visible:outline-none";
34
34
  const buttonClass =
35
- "inline-flex h-control-sm shrink-0 items-center gap-1.5 whitespace-nowrap rounded-control border-divider bg-surface-control px-2.5 font-[600] text-[12.5px] text-ink-2 hover:border-line-strong hover:text-ink [&_svg]:size-3.5";
35
+ "inline-flex h-control-sm shrink-0 items-center gap-1.5 whitespace-nowrap rounded-control border-divider bg-surface-control px-2.5 font-[600] text-fs-125 text-ink-2 hover:border-line-strong hover:text-ink [&_svg]:size-3.5";
36
36
 
37
37
  /**
38
38
  * Builds a filter of nested AND / OR groups of conditions (column, operator, value). It is a
@@ -98,7 +98,7 @@ function GroupEditor<T>({
98
98
  onClick={() =>
99
99
  onChange(updateNode(root, group.id, (n) => ({ ...n, logic }) as FilterNode))
100
100
  }
101
- className="h-full rounded-xs px-2 font-[600] text-[12px] text-ink-3 hover:text-ink aria-pressed:bg-accent-soft aria-pressed:text-accent-ink"
101
+ className="h-full rounded-xs px-2 font-[600] text-fs-120 text-ink-3 hover:text-ink aria-pressed:bg-accent-soft aria-pressed:text-accent-ink"
102
102
  >
103
103
  {logic === "and" ? labels.matchAll : labels.matchAny}
104
104
  </button>
@@ -136,13 +136,13 @@ function GroupEditor<T>({
136
136
  )}
137
137
  </div>
138
138
  {group.children.length === 0 ? (
139
- <p className="px-1 text-[12.5px] text-ink-3">{labels.noConditions}</p>
139
+ <p className="px-1 text-fs-125 text-ink-3">{labels.noConditions}</p>
140
140
  ) : (
141
141
  <ul className="grid gap-2">
142
142
  {group.children.map((child, index) => (
143
143
  <li key={child.id} className="grid gap-1">
144
144
  {index > 0 ? (
145
- <span className="font-[650] text-[11px] text-ink-3 uppercase tracking-[.07em]">
145
+ <span className="font-[650] text-fs-110 text-ink-3 uppercase tracking-[.07em]">
146
146
  {group.logic === "and" ? labels.filterAnd : labels.filterOr}
147
147
  </span>
148
148
  ) : null}
@@ -36,12 +36,12 @@ export function FormulaBar({
36
36
  <div className="flex min-w-0 items-center gap-2 border-b-divider px-2 py-1.5">
37
37
  <span
38
38
  title={labels.cell}
39
- className="grid h-control-sm min-w-12 shrink-0 place-items-center rounded-xs bg-surface-2 px-2 font-[650] text-[12px] text-ink-2 tabular-nums"
39
+ className="grid h-control-sm min-w-12 shrink-0 place-items-center rounded-xs bg-surface-2 px-2 font-[650] text-fs-120 text-ink-2 tabular-nums"
40
40
  >
41
41
  <span className="sr-only">{labels.cell}: </span>
42
42
  {address || "—"}
43
43
  </span>
44
- <span aria-hidden="true" className="shrink-0 font-[650] text-[13px] text-accent-ink italic">
44
+ <span aria-hidden="true" className="shrink-0 font-[650] text-fs-130 text-accent-ink italic">
45
45
  fx
46
46
  </span>
47
47
  <input
@@ -66,12 +66,12 @@ export function FormulaBar({
66
66
  }
67
67
  }}
68
68
  className={cn(
69
- "h-control-sm min-w-0 flex-1 rounded-input border-control bg-surface-control px-2 font-mono text-[13px] text-ink placeholder:text-ink-3 focus-visible:border-accent focus-visible:outline-none disabled:opacity-60",
69
+ "h-control-sm min-w-0 flex-1 rounded-input border-control bg-surface-control px-2 font-mono text-fs-130 text-ink placeholder:text-ink-3 focus-visible:border-accent focus-visible:outline-none disabled:opacity-60",
70
70
  error && "border-danger",
71
71
  )}
72
72
  />
73
73
  {error ? (
74
- <span role="alert" className="shrink-0 text-[12px] text-danger">
74
+ <span role="alert" className="shrink-0 text-fs-120 text-danger">
75
75
  {error}
76
76
  </span>
77
77
  ) : null}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
 
3
+ import type { ReactNode } from "react";
3
4
  import {
4
5
  Columns3,
5
6
  Download,
@@ -12,8 +13,7 @@ import {
12
13
  Trash2,
13
14
  Undo2,
14
15
  X,
15
- } from "lucide-react";
16
- import type { ReactNode } from "react";
16
+ } from "../../icons/index.js";
17
17
  import { Popover, PopoverContent, PopoverTrigger } from "../../overlays/popover/popover.js";
18
18
  import { cn } from "../../utils/cn.js";
19
19
  import type { DataGridLabels } from "./labels.js";
@@ -22,7 +22,7 @@ import type { DataGridColumn, Density } from "./types.js";
22
22
  const DENSITIES: Density[] = ["compact", "normal", "comfortable"];
23
23
 
24
24
  const buttonClass =
25
- "inline-flex h-control-sm shrink-0 items-center gap-1.5 whitespace-nowrap rounded-control border-divider bg-surface-control px-2.5 font-[600] text-[12.5px] text-ink-2 hover:border-line-strong hover:text-ink [&_svg]:size-3.5";
25
+ "inline-flex h-control-sm shrink-0 items-center gap-1.5 whitespace-nowrap rounded-control border-divider bg-surface-control px-2.5 font-[600] text-fs-125 text-ink-2 hover:border-line-strong hover:text-ink [&_svg]:size-3.5";
26
26
 
27
27
  export interface GridToolbarProps<T> {
28
28
  labels: DataGridLabels;
@@ -106,7 +106,7 @@ export function GridToolbar<T>({
106
106
  value={search}
107
107
  placeholder={labels.searchPlaceholder}
108
108
  onChange={(event) => onSearch(event.target.value)}
109
- className="h-control-sm w-full min-w-0 rounded-input border-control bg-surface-control pr-2 pl-8 text-[13px] text-ink placeholder:text-ink-3 focus-visible:border-accent focus-visible:outline-none"
109
+ className="h-control-sm w-full min-w-0 rounded-input border-control bg-surface-control pr-2 pl-8 text-fs-130 text-ink placeholder:text-ink-3 focus-visible:border-accent focus-visible:outline-none"
110
110
  />
111
111
  </label>
112
112
 
@@ -167,7 +167,7 @@ export function GridToolbar<T>({
167
167
  );
168
168
  })}
169
169
 
170
- <p className="mr-auto text-[12px] text-ink-3" aria-live="polite">
170
+ <p className="mr-auto text-fs-120 text-ink-3" aria-live="polite">
171
171
  {labels.rowsCount(rowCount)}
172
172
  {selectedCount ? ` · ${labels.selectedCount(selectedCount)}` : ""}
173
173
  </p>
@@ -226,7 +226,7 @@ export function GridToolbar<T>({
226
226
  type="button"
227
227
  aria-pressed={density === option}
228
228
  onClick={() => onDensity(option)}
229
- className="h-full rounded-xs px-2 font-[600] text-[12px] text-ink-3 hover:text-ink aria-pressed:bg-accent-soft aria-pressed:text-accent-ink"
229
+ className="h-full rounded-xs px-2 font-[600] text-fs-120 text-ink-3 hover:text-ink aria-pressed:bg-accent-soft aria-pressed:text-accent-ink"
230
230
  >
231
231
  {labels.densities[option]}
232
232
  </button>
@@ -247,7 +247,7 @@ export function GridToolbar<T>({
247
247
  return (
248
248
  <label
249
249
  key={column.id}
250
- className="flex min-h-8 items-center gap-2 rounded-xs px-1.5 text-[13px] text-ink hover:bg-surface-2"
250
+ className="flex min-h-8 items-center gap-2 rounded-xs px-1.5 text-fs-130 text-ink hover:bg-surface-2"
251
251
  >
252
252
  <input
253
253
  type="checkbox"
@@ -13,7 +13,7 @@ import type { CellValue, DataGridColumn } from "./types.js";
13
13
 
14
14
  export type SheetControls = Pick<DataGridProps<Venta>, "density" | "height">;
15
15
 
16
- export const note = "text-[12.5px] text-ink-3";
16
+ export const note = "text-fs-125 text-ink-3";
17
17
 
18
18
  export function Stack({ children }: { children: ReactNode }) {
19
19
  return <div className="grid gap-2">{children}</div>;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
- import { ArrowDown, ArrowUp } from "lucide-react";
4
3
  import { type ReactNode, useId } from "react";
4
+ import { ArrowDown, ArrowUp } from "../../icons/index.js";
5
5
  import { cn } from "../../utils/cn.js";
6
6
  import type { DataGridLabels } from "./labels.js";
7
7
  import type { PivotConfig } from "./pivot.js";
@@ -41,14 +41,14 @@ export interface GridToolPanelProps<T> {
41
41
  }
42
42
 
43
43
  const selectClass =
44
- "h-control-sm w-full min-w-0 rounded-input border-control bg-surface-control px-2 text-[13px] text-ink focus-visible:border-accent focus-visible:outline-none";
44
+ "h-control-sm w-full min-w-0 rounded-input border-control bg-surface-control px-2 text-fs-130 text-ink focus-visible:border-accent focus-visible:outline-none";
45
45
  const iconButton =
46
46
  "grid size-6 shrink-0 place-items-center rounded-xs text-ink-3 hover:bg-surface hover:text-ink disabled:pointer-events-none disabled:opacity-30 [&_svg]:size-3.5";
47
47
 
48
48
  function Section({ title, children }: { title: string; children: ReactNode }) {
49
49
  return (
50
50
  <section className="grid gap-1 border-b-divider p-2 last:border-b-0">
51
- <h3 className="px-1 pb-0.5 font-[650] text-[11px] text-ink-3 uppercase tracking-[.07em]">
51
+ <h3 className="px-1 pb-0.5 font-[650] text-fs-110 text-ink-3 uppercase tracking-[.07em]">
52
52
  {title}
53
53
  </h3>
54
54
  {children}
@@ -68,7 +68,7 @@ function Check({
68
68
  children: ReactNode;
69
69
  }) {
70
70
  return (
71
- <label className="flex min-h-7 min-w-0 flex-1 items-center gap-2 text-[13px] text-ink">
71
+ <label className="flex min-h-7 min-w-0 flex-1 items-center gap-2 text-fs-130 text-ink">
72
72
  <input
73
73
  type="checkbox"
74
74
  className="size-4 shrink-0 accent-accent"
@@ -122,7 +122,7 @@ export function GridToolPanel<T>({
122
122
  aria-label={labels.toolPanel}
123
123
  style={maxHeight ? { maxHeight } : undefined}
124
124
  className={cn(
125
- "min-h-0 min-w-0 overflow-y-auto bg-surface-2/40 text-[13px] @max-2xl/grid:max-h-72 @max-2xl/grid:border-b-divider @2xl/grid:w-64 @2xl/grid:shrink-0 @2xl/grid:border-l-divider",
125
+ "min-h-0 min-w-0 overflow-y-auto bg-surface-2/40 text-fs-130 @max-2xl/grid:max-h-72 @max-2xl/grid:border-b-divider @2xl/grid:w-64 @2xl/grid:shrink-0 @2xl/grid:border-l-divider",
126
126
  className,
127
127
  )}
128
128
  >
@@ -181,7 +181,7 @@ export function GridToolPanel<T>({
181
181
  {column.header}
182
182
  </Check>
183
183
  {groupBy.includes(column.id) ? (
184
- <span className="text-[11px] text-ink-3 tabular-nums">
184
+ <span className="text-fs-110 text-ink-3 tabular-nums">
185
185
  {groupBy.indexOf(column.id) + 1}
186
186
  </span>
187
187
  ) : null}
@@ -203,7 +203,7 @@ export function GridToolPanel<T>({
203
203
  {pivotOn ? (
204
204
  <div className="grid gap-2 pt-1">
205
205
  <fieldset className="grid gap-0.5 border-0 p-0">
206
- <legend className="px-1 pb-0.5 text-[12px] text-ink-3">{labels.pivotRows}</legend>
206
+ <legend className="px-1 pb-0.5 text-fs-120 text-ink-3">{labels.pivotRows}</legend>
207
207
  {dimensions
208
208
  .filter((column) => column.id !== pivot.column)
209
209
  .map((column) => (
@@ -224,7 +224,7 @@ export function GridToolPanel<T>({
224
224
  ))}
225
225
  </fieldset>
226
226
  <label className="grid gap-1" htmlFor={`${id}-column`}>
227
- <span className="px-1 text-[12px] text-ink-3">{labels.pivotColumn}</span>
227
+ <span className="px-1 text-fs-120 text-ink-3">{labels.pivotColumn}</span>
228
228
  <select
229
229
  id={`${id}-column`}
230
230
  className={selectClass}
@@ -245,7 +245,7 @@ export function GridToolPanel<T>({
245
245
  </select>
246
246
  </label>
247
247
  <label className="grid gap-1" htmlFor={`${id}-value`}>
248
- <span className="px-1 text-[12px] text-ink-3">{labels.pivotValue}</span>
248
+ <span className="px-1 text-fs-120 text-ink-3">{labels.pivotValue}</span>
249
249
  <select
250
250
  id={`${id}-value`}
251
251
  className={selectClass}
@@ -261,7 +261,7 @@ export function GridToolPanel<T>({
261
261
  </select>
262
262
  </label>
263
263
  <label className="grid gap-1" htmlFor={`${id}-aggregate`}>
264
- <span className="px-1 text-[12px] text-ink-3">{labels.pivotAggregate}</span>
264
+ <span className="px-1 text-fs-120 text-ink-3">{labels.pivotAggregate}</span>
265
265
  <select
266
266
  id={`${id}-aggregate`}
267
267
  className={selectClass}
@@ -276,7 +276,7 @@ export function GridToolPanel<T>({
276
276
  </select>
277
277
  </label>
278
278
  {pivotValid ? null : (
279
- <p role="status" className="px-1 text-[12px] text-ink-3">
279
+ <p role="status" className="px-1 text-fs-120 text-ink-3">
280
280
  {labels.pivotIncomplete}
281
281
  </p>
282
282
  )}
@@ -13,7 +13,7 @@ export function DescriptionList({ className, ...props }: DescriptionListProps) {
13
13
  <div className="@container/dl min-w-0">
14
14
  <dl
15
15
  className={cn(
16
- "grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-[9px] text-[13px]",
16
+ "grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-2.25 text-fs-130",
17
17
  "[&_dt]:text-ink-3 [&_dd]:m-0 [&_dd]:min-w-0 [&_dd]:break-words [&_dd]:text-right [&_dd]:font-semibold",
18
18
  "@max-sm/dl:grid-cols-1 @max-sm/dl:gap-y-0.5 @max-sm/dl:[&_dd]:mb-2 @max-sm/dl:[&_dd]:text-left",
19
19
  className,
@@ -14,8 +14,8 @@ export function Facts({ className, ...props }: FactsProps) {
14
14
  <dl
15
15
  className={cn(
16
16
  "mt-3.5 grid grid-cols-3 gap-3.5 border-t-divider border-dashed pt-3.5",
17
- "[&_dt]:font-semibold [&_dt]:text-[11.5px] [&_dt]:text-ink-3",
18
- "[&_dd]:mt-0.5 [&_dd]:font-[620] [&_dd]:text-[13px]",
17
+ "[&_dt]:font-semibold [&_dt]:text-fs-115 [&_dt]:text-ink-3",
18
+ "[&_dd]:mt-0.5 [&_dd]:font-[620] [&_dd]:text-fs-130",
19
19
  "[&_dt]:break-words [&_dd]:break-words @max-[560px]/facts:grid-cols-1",
20
20
  className,
21
21
  )}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
 
3
+ import { type KeyboardEvent, useMemo, useRef, useState } from "react";
3
4
  import {
4
5
  ChevronRight,
5
6
  File,
@@ -8,9 +9,9 @@ import {
8
9
  FileText,
9
10
  Folder,
10
11
  FolderOpen,
11
- type LucideIcon,
12
- } from "lucide-react";
13
- import { type KeyboardEvent, useMemo, useRef, useState } from "react";
12
+ type IconComponent,
13
+ } from "../../icons/index.js";
14
+ import type { ClassNames } from "../../utils/class-names.js";
14
15
  import { cn } from "../../utils/cn.js";
15
16
  import {
16
17
  type FileTreeNode,
@@ -21,6 +22,8 @@ import {
21
22
  typeahead,
22
23
  } from "./model.js";
23
24
 
25
+ export type FileTreePart = "root" | "tree" | "item" | "chevron" | "icon" | "name";
26
+
24
27
  export interface FileTreeProps {
25
28
  nodes: FileTreeNode[];
26
29
  /** Accessible name of the tree. */
@@ -32,6 +35,8 @@ export interface FileTreeProps {
32
35
  defaultExpandedIds?: string[];
33
36
  onExpandedChange?: (ids: string[]) => void;
34
37
  className?: string;
38
+ /** Per-part classes merged with `cn`; consumer classes win. `className` still targets the root and is merged last. */
39
+ classNames?: ClassNames<FileTreePart>;
35
40
  }
36
41
 
37
42
  const TREE_KEYS: readonly string[] = [
@@ -43,7 +48,7 @@ const TREE_KEYS: readonly string[] = [
43
48
  "End",
44
49
  ];
45
50
 
46
- function iconFor(name: string): LucideIcon {
51
+ function iconFor(name: string): IconComponent {
47
52
  const ext = name.split(".").pop()?.toLowerCase() ?? "";
48
53
  if (["png", "jpg", "jpeg", "gif", "svg", "webp"].includes(ext)) return FileImage;
49
54
  if (["ts", "tsx", "js", "jsx", "json", "css", "html"].includes(ext)) return FileCode;
@@ -65,6 +70,7 @@ export function FileTree({
65
70
  defaultExpandedIds = [],
66
71
  onExpandedChange,
67
72
  className,
73
+ classNames,
68
74
  }: FileTreeProps) {
69
75
  const [selectedState, setSelectedState] = useState(defaultSelectedId);
70
76
  const [expandedState, setExpandedState] = useState(defaultExpandedIds);
@@ -127,8 +133,13 @@ export function FileTree({
127
133
  };
128
134
 
129
135
  return (
130
- <div className={cn("@container/tree min-w-0", className)}>
131
- <div ref={listRef} role="tree" aria-label={label} className="flex flex-col gap-0.5">
136
+ <div className={cn("@container/tree min-w-0", classNames?.root, className)}>
137
+ <div
138
+ ref={listRef}
139
+ role="tree"
140
+ aria-label={label}
141
+ className={cn("flex flex-col gap-0.5", classNames?.tree)}
142
+ >
132
143
  {rows.map((row) => {
133
144
  const isSelected = row.node.id === selected;
134
145
  const Icon = row.isFolder ? (row.expanded ? FolderOpen : Folder) : iconFor(row.node.name);
@@ -158,9 +169,15 @@ export function FileTree({
158
169
  className={cn(
159
170
  "pressable flex min-h-control-sm min-w-0 cursor-pointer items-center gap-density-sm rounded-button pe-control-x text-body text-ink outline-none hover:bg-surface-2 focus-visible:focus-ring",
160
171
  isSelected && "bg-accent-soft font-semibold text-accent-ink shadow-selected",
172
+ classNames?.item,
161
173
  )}
162
174
  >
163
- <span className="flex size-4 shrink-0 items-center justify-center text-ink-3">
175
+ <span
176
+ className={cn(
177
+ "flex size-4 shrink-0 items-center justify-center text-ink-3",
178
+ classNames?.chevron,
179
+ )}
180
+ >
164
181
  {row.isFolder ? (
165
182
  <ChevronRight
166
183
  aria-hidden="true"
@@ -173,9 +190,13 @@ export function FileTree({
173
190
  </span>
174
191
  <Icon
175
192
  aria-hidden="true"
176
- className={cn("size-4 shrink-0", row.isFolder ? "text-accent-ink" : "text-ink-3")}
193
+ className={cn(
194
+ "size-4 shrink-0",
195
+ row.isFolder ? "text-accent-ink" : "text-ink-3",
196
+ classNames?.icon,
197
+ )}
177
198
  />
178
- <span className="min-w-0 truncate">{row.node.name}</span>
199
+ <span className={cn("min-w-0 truncate", classNames?.name)}>{row.node.name}</span>
179
200
  </div>
180
201
  );
181
202
  })}
@@ -1,4 +1,4 @@
1
- export { FileTree, type FileTreeProps } from "./file-tree.js";
1
+ export { FileTree, type FileTreePart, type FileTreeProps } from "./file-tree.js";
2
2
  export {
3
3
  ancestorsOf,
4
4
  type FileTreeNode,
@@ -12,7 +12,7 @@ export function GenericRow({ className, ...props }: GenericRowProps) {
12
12
  return (
13
13
  <div
14
14
  className={cn(
15
- "grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 border-t-divider px-4 py-[11px] first:border-t-0",
15
+ "grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 border-t-divider px-4 py-2.75 first:border-t-0",
16
16
  className,
17
17
  )}
18
18
  {...props}
@@ -30,12 +30,12 @@ export function GenericRowContent({ className, ...props }: GenericRowContentProp
30
30
  export type GenericRowTitleProps = ComponentPropsWithoutRef<"div">;
31
31
 
32
32
  export function GenericRowTitle({ className, ...props }: GenericRowTitleProps) {
33
- return <div className={cn("break-words font-[650] text-[13px]", className)} {...props} />;
33
+ return <div className={cn("break-words font-[650] text-fs-130", className)} {...props} />;
34
34
  }
35
35
 
36
36
  export type GenericRowMetaProps = ComponentPropsWithoutRef<"div">;
37
37
 
38
38
  /** Secondary metadata under the title. */
39
39
  export function GenericRowMeta({ className, ...props }: GenericRowMetaProps) {
40
- return <div className={cn("break-words text-[12px] text-ink-3", className)} {...props} />;
40
+ return <div className={cn("break-words text-fs-120 text-ink-3", className)} {...props} />;
41
41
  }