@sewadah/selaras 0.1.1 → 0.3.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 (385) hide show
  1. package/README.md +67 -20
  2. package/dist/module.d.mts +10 -0
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +123 -36
  5. package/dist/runtime/components/Accordion.d.vue.ts +3 -0
  6. package/dist/runtime/components/Accordion.vue +5 -1
  7. package/dist/runtime/components/Accordion.vue.d.ts +3 -0
  8. package/dist/runtime/components/Alert.d.vue.ts +2 -1
  9. package/dist/runtime/components/Alert.vue +6 -3
  10. package/dist/runtime/components/Alert.vue.d.ts +2 -1
  11. package/dist/runtime/components/AlertDialog.d.vue.ts +2 -0
  12. package/dist/runtime/components/AlertDialog.vue +21 -8
  13. package/dist/runtime/components/AlertDialog.vue.d.ts +2 -0
  14. package/dist/runtime/components/App.vue +9 -2
  15. package/dist/runtime/components/Autocomplete.d.vue.ts +22 -58
  16. package/dist/runtime/components/Autocomplete.vue +50 -11
  17. package/dist/runtime/components/Autocomplete.vue.d.ts +22 -58
  18. package/dist/runtime/components/Avatar.d.vue.ts +2 -1
  19. package/dist/runtime/components/Avatar.vue +4 -2
  20. package/dist/runtime/components/Avatar.vue.d.ts +2 -1
  21. package/dist/runtime/components/Badge.d.vue.ts +3 -2
  22. package/dist/runtime/components/Badge.vue +8 -5
  23. package/dist/runtime/components/Badge.vue.d.ts +3 -2
  24. package/dist/runtime/components/Breadcrumb.d.vue.ts +3 -0
  25. package/dist/runtime/components/Breadcrumb.vue +5 -2
  26. package/dist/runtime/components/Breadcrumb.vue.d.ts +3 -0
  27. package/dist/runtime/components/Button.d.vue.ts +5 -2
  28. package/dist/runtime/components/Button.vue +5 -2
  29. package/dist/runtime/components/Button.vue.d.ts +5 -2
  30. package/dist/runtime/components/Checkbox.d.vue.ts +2 -1
  31. package/dist/runtime/components/Checkbox.vue +4 -2
  32. package/dist/runtime/components/Checkbox.vue.d.ts +2 -1
  33. package/dist/runtime/components/Chip.d.vue.ts +2 -1
  34. package/dist/runtime/components/Chip.vue +4 -2
  35. package/dist/runtime/components/Chip.vue.d.ts +2 -1
  36. package/dist/runtime/components/Collapsible.d.vue.ts +3 -0
  37. package/dist/runtime/components/Collapsible.vue +11 -6
  38. package/dist/runtime/components/Collapsible.vue.d.ts +3 -0
  39. package/dist/runtime/components/ColorPicker.d.vue.ts +13 -3
  40. package/dist/runtime/components/ColorPicker.vue +60 -14
  41. package/dist/runtime/components/ColorPicker.vue.d.ts +13 -3
  42. package/dist/runtime/components/Column.d.ts +1 -1
  43. package/dist/runtime/components/CommandPalette.vue +18 -16
  44. package/dist/runtime/components/ContentNavigation.d.vue.ts +3 -0
  45. package/dist/runtime/components/ContentNavigation.vue +6 -3
  46. package/dist/runtime/components/ContentNavigation.vue.d.ts +3 -0
  47. package/dist/runtime/components/ContentSurround.d.vue.ts +3 -0
  48. package/dist/runtime/components/ContentSurround.vue +7 -4
  49. package/dist/runtime/components/ContentSurround.vue.d.ts +3 -0
  50. package/dist/runtime/components/ContentToc.d.vue.ts +3 -0
  51. package/dist/runtime/components/ContentToc.vue +22 -12
  52. package/dist/runtime/components/ContentToc.vue.d.ts +3 -0
  53. package/dist/runtime/components/ContextMenu.vue +3 -2
  54. package/dist/runtime/components/DashboardSidebar.vue +1 -1
  55. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +1 -0
  56. package/dist/runtime/components/DashboardSidebarToggle.vue +3 -1
  57. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +1 -0
  58. package/dist/runtime/components/DatePicker.d.vue.ts +32 -23
  59. package/dist/runtime/components/DatePicker.vue +130 -60
  60. package/dist/runtime/components/DatePicker.vue.d.ts +32 -23
  61. package/dist/runtime/components/Drawer.d.vue.ts +2 -0
  62. package/dist/runtime/components/Drawer.vue +21 -8
  63. package/dist/runtime/components/Drawer.vue.d.ts +2 -0
  64. package/dist/runtime/components/DrawerRenderer.vue +28 -21
  65. package/dist/runtime/components/Dropdown.d.vue.ts +14 -4
  66. package/dist/runtime/components/Dropdown.vue +19 -4
  67. package/dist/runtime/components/Dropdown.vue.d.ts +14 -4
  68. package/dist/runtime/components/FileTree.d.vue.ts +3 -0
  69. package/dist/runtime/components/FileTree.vue +7 -3
  70. package/dist/runtime/components/FileTree.vue.d.ts +3 -0
  71. package/dist/runtime/components/FileUpload.d.vue.ts +2 -1
  72. package/dist/runtime/components/FileUpload.vue +75 -32
  73. package/dist/runtime/components/FileUpload.vue.d.ts +2 -1
  74. package/dist/runtime/components/FormField.d.vue.ts +2 -0
  75. package/dist/runtime/components/FormField.vue +12 -9
  76. package/dist/runtime/components/FormField.vue.d.ts +2 -0
  77. package/dist/runtime/components/Icon.d.vue.ts +2 -4
  78. package/dist/runtime/components/Icon.vue +7 -2
  79. package/dist/runtime/components/Icon.vue.d.ts +2 -4
  80. package/dist/runtime/components/Input.d.vue.ts +2 -1
  81. package/dist/runtime/components/Input.vue +12 -6
  82. package/dist/runtime/components/Input.vue.d.ts +2 -1
  83. package/dist/runtime/components/InputNumber.d.vue.ts +4 -1
  84. package/dist/runtime/components/InputNumber.vue +21 -8
  85. package/dist/runtime/components/InputNumber.vue.d.ts +4 -1
  86. package/dist/runtime/components/Modal.d.vue.ts +2 -0
  87. package/dist/runtime/components/Modal.vue +21 -8
  88. package/dist/runtime/components/Modal.vue.d.ts +2 -0
  89. package/dist/runtime/components/ModalRenderer.vue +23 -16
  90. package/dist/runtime/components/NavigationMenu.d.vue.ts +2 -4
  91. package/dist/runtime/components/NavigationMenu.vue +8 -4
  92. package/dist/runtime/components/NavigationMenu.vue.d.ts +2 -4
  93. package/dist/runtime/components/NavigationMenuAccordionItem.d.vue.ts +2 -4
  94. package/dist/runtime/components/NavigationMenuAccordionItem.vue +5 -3
  95. package/dist/runtime/components/NavigationMenuAccordionItem.vue.d.ts +2 -4
  96. package/dist/runtime/components/NavigationMenuFlyoutList.d.vue.ts +2 -4
  97. package/dist/runtime/components/NavigationMenuFlyoutList.vue +7 -4
  98. package/dist/runtime/components/NavigationMenuFlyoutList.vue.d.ts +2 -4
  99. package/dist/runtime/components/NavigationMenuFlyoutTrigger.d.vue.ts +2 -4
  100. package/dist/runtime/components/NavigationMenuFlyoutTrigger.vue +9 -2
  101. package/dist/runtime/components/NavigationMenuFlyoutTrigger.vue.d.ts +2 -4
  102. package/dist/runtime/components/Pagination.d.vue.ts +3 -2
  103. package/dist/runtime/components/Pagination.vue.d.ts +3 -2
  104. package/dist/runtime/components/PinInput.d.vue.ts +2 -1
  105. package/dist/runtime/components/PinInput.vue +17 -6
  106. package/dist/runtime/components/PinInput.vue.d.ts +2 -1
  107. package/dist/runtime/components/Popover.d.vue.ts +2 -0
  108. package/dist/runtime/components/Popover.vue +14 -7
  109. package/dist/runtime/components/Popover.vue.d.ts +2 -0
  110. package/dist/runtime/components/Progress.d.vue.ts +2 -1
  111. package/dist/runtime/components/Progress.vue +6 -4
  112. package/dist/runtime/components/Progress.vue.d.ts +2 -1
  113. package/dist/runtime/components/ProseH1.d.vue.ts +2 -0
  114. package/dist/runtime/components/ProseH1.vue +7 -4
  115. package/dist/runtime/components/ProseH1.vue.d.ts +2 -0
  116. package/dist/runtime/components/ProseH2.d.vue.ts +2 -0
  117. package/dist/runtime/components/ProseH2.vue +7 -4
  118. package/dist/runtime/components/ProseH2.vue.d.ts +2 -0
  119. package/dist/runtime/components/ProseH3.d.vue.ts +2 -0
  120. package/dist/runtime/components/ProseH3.vue +7 -4
  121. package/dist/runtime/components/ProseH3.vue.d.ts +2 -0
  122. package/dist/runtime/components/ProseH4.d.vue.ts +2 -0
  123. package/dist/runtime/components/ProseH4.vue +7 -4
  124. package/dist/runtime/components/ProseH4.vue.d.ts +2 -0
  125. package/dist/runtime/components/ProseH5.d.vue.ts +2 -0
  126. package/dist/runtime/components/ProseH5.vue +7 -4
  127. package/dist/runtime/components/ProseH5.vue.d.ts +2 -0
  128. package/dist/runtime/components/ProseH6.d.vue.ts +2 -0
  129. package/dist/runtime/components/ProseH6.vue +7 -4
  130. package/dist/runtime/components/ProseH6.vue.d.ts +2 -0
  131. package/dist/runtime/components/ProsePre.d.vue.ts +4 -2
  132. package/dist/runtime/components/ProsePre.vue +9 -3
  133. package/dist/runtime/components/ProsePre.vue.d.ts +4 -2
  134. package/dist/runtime/components/RadioGroup.d.vue.ts +2 -1
  135. package/dist/runtime/components/RadioGroup.vue +9 -5
  136. package/dist/runtime/components/RadioGroup.vue.d.ts +2 -1
  137. package/dist/runtime/components/Rating.d.vue.ts +2 -1
  138. package/dist/runtime/components/Rating.vue +4 -1
  139. package/dist/runtime/components/Rating.vue.d.ts +2 -1
  140. package/dist/runtime/components/ReadMore.d.vue.ts +3 -0
  141. package/dist/runtime/components/ReadMore.vue +24 -6
  142. package/dist/runtime/components/ReadMore.vue.d.ts +3 -0
  143. package/dist/runtime/components/Select.d.vue.ts +21 -57
  144. package/dist/runtime/components/Select.vue +58 -9
  145. package/dist/runtime/components/Select.vue.d.ts +21 -57
  146. package/dist/runtime/components/Separator.d.vue.ts +2 -1
  147. package/dist/runtime/components/Separator.vue +4 -2
  148. package/dist/runtime/components/Separator.vue.d.ts +2 -1
  149. package/dist/runtime/components/Slideover.d.vue.ts +2 -0
  150. package/dist/runtime/components/Slideover.vue +21 -8
  151. package/dist/runtime/components/Slideover.vue.d.ts +2 -0
  152. package/dist/runtime/components/SlideoverRenderer.vue +25 -18
  153. package/dist/runtime/components/Slider.d.vue.ts +2 -1
  154. package/dist/runtime/components/Slider.vue +4 -1
  155. package/dist/runtime/components/Slider.vue.d.ts +2 -1
  156. package/dist/runtime/components/SplitterResizeHandle.d.vue.ts +3 -0
  157. package/dist/runtime/components/SplitterResizeHandle.vue +5 -2
  158. package/dist/runtime/components/SplitterResizeHandle.vue.d.ts +3 -0
  159. package/dist/runtime/components/Stepper.d.vue.ts +2 -1
  160. package/dist/runtime/components/Stepper.vue +4 -1
  161. package/dist/runtime/components/Stepper.vue.d.ts +2 -1
  162. package/dist/runtime/components/Switch.d.vue.ts +2 -1
  163. package/dist/runtime/components/Switch.vue +4 -2
  164. package/dist/runtime/components/Switch.vue.d.ts +2 -1
  165. package/dist/runtime/components/Table.d.vue.ts +28 -80
  166. package/dist/runtime/components/Table.vue +25 -13
  167. package/dist/runtime/components/Table.vue.d.ts +28 -80
  168. package/dist/runtime/components/Tabs.d.vue.ts +3 -0
  169. package/dist/runtime/components/Tabs.vue +5 -1
  170. package/dist/runtime/components/Tabs.vue.d.ts +3 -0
  171. package/dist/runtime/components/Textarea.d.vue.ts +2 -1
  172. package/dist/runtime/components/Textarea.vue +11 -6
  173. package/dist/runtime/components/Textarea.vue.d.ts +2 -1
  174. package/dist/runtime/components/Theme.d.vue.ts +16 -5
  175. package/dist/runtime/components/Theme.vue +30 -5
  176. package/dist/runtime/components/Theme.vue.d.ts +16 -5
  177. package/dist/runtime/components/Toast.vue +11 -39
  178. package/dist/runtime/components/Toggle.d.vue.ts +2 -1
  179. package/dist/runtime/components/Toggle.vue +4 -1
  180. package/dist/runtime/components/Toggle.vue.d.ts +2 -1
  181. package/dist/runtime/components/ToggleGroup.d.vue.ts +2 -1
  182. package/dist/runtime/components/ToggleGroup.vue +4 -1
  183. package/dist/runtime/components/ToggleGroup.vue.d.ts +2 -1
  184. package/dist/runtime/components/Tooltip.vue +3 -2
  185. package/dist/runtime/components/Tree.d.vue.ts +5 -2
  186. package/dist/runtime/components/Tree.vue +5 -1
  187. package/dist/runtime/components/Tree.vue.d.ts +5 -2
  188. package/dist/runtime/composables/use-drawer.d.ts +1 -22
  189. package/dist/runtime/composables/use-drawer.js +12 -18
  190. package/dist/runtime/composables/use-form-field.d.ts +1 -0
  191. package/dist/runtime/composables/use-icons.d.ts +2 -2
  192. package/dist/runtime/composables/use-icons.js +1 -1
  193. package/dist/runtime/composables/use-locale.d.ts +2 -2
  194. package/dist/runtime/composables/use-locale.js +1 -1
  195. package/dist/runtime/composables/use-media-query.d.ts +6 -8
  196. package/dist/runtime/composables/use-media-query.js +7 -2
  197. package/dist/runtime/composables/use-messages.d.ts +2 -2
  198. package/dist/runtime/composables/use-messages.js +1 -1
  199. package/dist/runtime/composables/use-modal.d.ts +1 -17
  200. package/dist/runtime/composables/use-modal.js +12 -18
  201. package/dist/runtime/composables/use-ripple.d.ts +2 -2
  202. package/dist/runtime/composables/use-ripple.js +1 -1
  203. package/dist/runtime/composables/use-slideover.d.ts +1 -19
  204. package/dist/runtime/composables/use-slideover.js +12 -18
  205. package/dist/runtime/composables/use-table.d.ts +74 -17
  206. package/dist/runtime/composables/use-table.js +4 -1
  207. package/dist/runtime/composables/use-toast.d.ts +8 -8
  208. package/dist/runtime/composables/use-toast.js +9 -11
  209. package/dist/runtime/default-color-metadata.d.ts +4 -0
  210. package/dist/runtime/default-color-metadata.js +4 -0
  211. package/dist/runtime/default-colors.css +1 -0
  212. package/dist/runtime/internal/ColorPickerBody.d.vue.ts +1 -0
  213. package/dist/runtime/internal/ColorPickerBody.vue +24 -1
  214. package/dist/runtime/internal/ColorPickerBody.vue.d.ts +1 -0
  215. package/dist/runtime/internal/ComboboxSelectBase.d.vue.ts +50 -46
  216. package/dist/runtime/internal/ComboboxSelectBase.vue +340 -93
  217. package/dist/runtime/internal/ComboboxSelectBase.vue.d.ts +50 -46
  218. package/dist/runtime/internal/ComboboxSelectBody.d.vue.ts +29 -23
  219. package/dist/runtime/internal/ComboboxSelectBody.vue +74 -40
  220. package/dist/runtime/internal/ComboboxSelectBody.vue.d.ts +29 -23
  221. package/dist/runtime/internal/DatePickerCalendarBody.d.vue.ts +3 -5
  222. package/dist/runtime/internal/DatePickerCalendarBody.vue +2 -2
  223. package/dist/runtime/internal/DatePickerCalendarBody.vue.d.ts +3 -5
  224. package/dist/runtime/internal/DatePickerRangeCalendarBody.d.vue.ts +3 -5
  225. package/dist/runtime/internal/DatePickerRangeCalendarBody.vue +1 -1
  226. package/dist/runtime/internal/DatePickerRangeCalendarBody.vue.d.ts +3 -5
  227. package/dist/runtime/internal/DatePickerTimeBody.d.vue.ts +2 -4
  228. package/dist/runtime/internal/DatePickerTimeBody.vue.d.ts +2 -4
  229. package/dist/runtime/internal/ProgrammaticTheme.d.vue.ts +17 -0
  230. package/dist/runtime/internal/ProgrammaticTheme.vue +41 -0
  231. package/dist/runtime/internal/ProgrammaticTheme.vue.d.ts +17 -0
  232. package/dist/runtime/internal/TimeStepper.vue +1 -1
  233. package/dist/runtime/internal/ToastItemRenderer.d.vue.ts +14 -0
  234. package/dist/runtime/internal/ToastItemRenderer.vue +54 -0
  235. package/dist/runtime/internal/ToastItemRenderer.vue.d.ts +14 -0
  236. package/dist/runtime/internal/combobox-select.d.ts +52 -0
  237. package/dist/runtime/{composables/use-combobox-select.js → internal/combobox-select.js} +26 -11
  238. package/dist/runtime/internal/programmatic-services.d.ts +71 -0
  239. package/dist/runtime/internal/programmatic-services.js +61 -0
  240. package/dist/runtime/prose.css +1 -1
  241. package/dist/runtime/structural.css +1 -0
  242. package/dist/runtime/table.d.ts +3 -0
  243. package/dist/runtime/table.js +1 -0
  244. package/dist/runtime/theme/accordion.d.ts +27 -0
  245. package/dist/runtime/theme/accordion.js +15 -6
  246. package/dist/runtime/theme/alert-dialog.js +5 -5
  247. package/dist/runtime/theme/alert.js +6 -15
  248. package/dist/runtime/theme/avatar-group.js +2 -2
  249. package/dist/runtime/theme/avatar.js +12 -18
  250. package/dist/runtime/theme/badge.d.ts +39 -9
  251. package/dist/runtime/theme/badge.js +11 -40
  252. package/dist/runtime/theme/breadcrumb.d.ts +29 -47
  253. package/dist/runtime/theme/breadcrumb.js +16 -5
  254. package/dist/runtime/theme/button.d.ts +45 -15
  255. package/dist/runtime/theme/button.js +10 -57
  256. package/dist/runtime/theme/callout.js +7 -7
  257. package/dist/runtime/theme/card.js +7 -7
  258. package/dist/runtime/theme/checkbox.d.ts +21 -84
  259. package/dist/runtime/theme/checkbox.js +15 -36
  260. package/dist/runtime/theme/chip.js +4 -22
  261. package/dist/runtime/theme/code-button.js +2 -2
  262. package/dist/runtime/theme/code-tree.d.ts +3 -3
  263. package/dist/runtime/theme/code-tree.js +4 -4
  264. package/dist/runtime/theme/collapsible.d.ts +27 -0
  265. package/dist/runtime/theme/collapsible.js +12 -3
  266. package/dist/runtime/theme/color-picker.d.ts +18 -54
  267. package/dist/runtime/theme/color-picker.js +19 -18
  268. package/dist/runtime/theme/command-palette.d.ts +6 -6
  269. package/dist/runtime/theme/command-palette.js +12 -10
  270. package/dist/runtime/theme/content-navigation.d.ts +27 -0
  271. package/dist/runtime/theme/content-navigation.js +14 -5
  272. package/dist/runtime/theme/content-surround.d.ts +27 -0
  273. package/dist/runtime/theme/content-surround.js +13 -4
  274. package/dist/runtime/theme/content-toc.d.ts +27 -0
  275. package/dist/runtime/theme/content-toc.js +14 -5
  276. package/dist/runtime/theme/context-menu.js +7 -7
  277. package/dist/runtime/theme/dashboard-navbar.d.ts +6 -6
  278. package/dist/runtime/theme/dashboard-navbar.js +2 -2
  279. package/dist/runtime/theme/dashboard-resize-handle.js +3 -3
  280. package/dist/runtime/theme/dashboard-sidebar.js +3 -3
  281. package/dist/runtime/theme/date-picker.js +10 -10
  282. package/dist/runtime/theme/drawer.js +9 -9
  283. package/dist/runtime/theme/dropdown.js +7 -7
  284. package/dist/runtime/theme/file-tree.d.ts +27 -0
  285. package/dist/runtime/theme/file-tree.js +12 -3
  286. package/dist/runtime/theme/file-upload.d.ts +18 -72
  287. package/dist/runtime/theme/file-upload.js +20 -19
  288. package/dist/runtime/theme/form-field.js +5 -5
  289. package/dist/runtime/theme/header.d.ts +3 -3
  290. package/dist/runtime/theme/header.js +1 -1
  291. package/dist/runtime/theme/icon.d.ts +30 -57
  292. package/dist/runtime/theme/icon.js +19 -9
  293. package/dist/runtime/theme/input-number.d.ts +21 -63
  294. package/dist/runtime/theme/input-number.js +12 -12
  295. package/dist/runtime/theme/input.d.ts +21 -63
  296. package/dist/runtime/theme/input.js +12 -12
  297. package/dist/runtime/theme/kbd.js +1 -1
  298. package/dist/runtime/theme/modal.js +4 -4
  299. package/dist/runtime/theme/navigation-menu.d.ts +2 -0
  300. package/dist/runtime/theme/navigation-menu.js +17 -28
  301. package/dist/runtime/theme/page-header.js +3 -3
  302. package/dist/runtime/theme/pagination.js +1 -1
  303. package/dist/runtime/theme/pin-input.d.ts +21 -63
  304. package/dist/runtime/theme/pin-input.js +13 -11
  305. package/dist/runtime/theme/popover.js +2 -2
  306. package/dist/runtime/theme/progress.d.ts +21 -84
  307. package/dist/runtime/theme/progress.js +12 -12
  308. package/dist/runtime/theme/prose.d.ts +35 -50
  309. package/dist/runtime/theme/prose.js +24 -11
  310. package/dist/runtime/theme/radio-group.d.ts +21 -84
  311. package/dist/runtime/theme/radio-group.js +16 -22
  312. package/dist/runtime/theme/rating.d.ts +21 -63
  313. package/dist/runtime/theme/rating.js +10 -10
  314. package/dist/runtime/theme/read-more.d.ts +27 -0
  315. package/dist/runtime/theme/read-more.js +13 -4
  316. package/dist/runtime/theme/scroll-area.d.ts +3 -3
  317. package/dist/runtime/theme/scroll-area.js +2 -2
  318. package/dist/runtime/theme/select.d.ts +21 -54
  319. package/dist/runtime/theme/select.js +32 -24
  320. package/dist/runtime/theme/separator.d.ts +18 -54
  321. package/dist/runtime/theme/separator.js +16 -12
  322. package/dist/runtime/theme/skeleton.js +4 -4
  323. package/dist/runtime/theme/slideover.js +5 -5
  324. package/dist/runtime/theme/slider.d.ts +21 -84
  325. package/dist/runtime/theme/slider.js +14 -14
  326. package/dist/runtime/theme/splitter-resize-handle.d.ts +27 -0
  327. package/dist/runtime/theme/splitter-resize-handle.js +11 -1
  328. package/dist/runtime/theme/stepper.d.ts +21 -84
  329. package/dist/runtime/theme/stepper.js +12 -33
  330. package/dist/runtime/theme/switch.d.ts +21 -84
  331. package/dist/runtime/theme/switch.js +13 -13
  332. package/dist/runtime/theme/table.d.ts +27 -0
  333. package/dist/runtime/theme/table.js +31 -21
  334. package/dist/runtime/theme/tabs.d.ts +27 -0
  335. package/dist/runtime/theme/tabs.js +17 -7
  336. package/dist/runtime/theme/textarea.d.ts +21 -63
  337. package/dist/runtime/theme/textarea.js +12 -12
  338. package/dist/runtime/theme/toast.d.ts +12 -48
  339. package/dist/runtime/theme/toast.js +9 -9
  340. package/dist/runtime/theme/toggle-group.js +5 -11
  341. package/dist/runtime/theme/toggle.js +2 -12
  342. package/dist/runtime/theme/tooltip.d.ts +3 -3
  343. package/dist/runtime/theme/tooltip.js +3 -3
  344. package/dist/runtime/theme/tree.d.ts +27 -0
  345. package/dist/runtime/theme/tree.js +13 -3
  346. package/dist/runtime/theme-api.d.ts +15 -0
  347. package/dist/runtime/theme-api.js +12 -0
  348. package/dist/runtime/theme-config.d.ts +470 -0
  349. package/dist/runtime/theme-config.js +0 -0
  350. package/dist/runtime/theme.css +1 -1
  351. package/dist/runtime/types/app-config.d.ts +11 -8
  352. package/dist/runtime/types/index.d.ts +19 -1
  353. package/dist/runtime/utils/app-scoped-state.d.ts +2 -0
  354. package/dist/runtime/utils/app-scoped-state.js +13 -0
  355. package/dist/runtime/utils/autocomplete-contracts.d.ts +24 -0
  356. package/dist/runtime/utils/autocomplete-contracts.js +0 -0
  357. package/dist/runtime/utils/color-registry.d.ts +62 -0
  358. package/dist/runtime/utils/color-registry.js +191 -0
  359. package/dist/runtime/utils/dtcg-colors.d.ts +25 -0
  360. package/dist/runtime/utils/dtcg-colors.js +40 -0
  361. package/dist/runtime/utils/file-icons.d.ts +8 -0
  362. package/dist/runtime/utils/file-icons.js +131 -0
  363. package/dist/runtime/utils/functional-tokens.d.ts +26 -0
  364. package/dist/runtime/utils/functional-tokens.js +54 -0
  365. package/dist/runtime/utils/icons.d.ts +3 -0
  366. package/dist/runtime/utils/icons.js +4 -0
  367. package/dist/runtime/utils/injection-keys.d.ts +12 -3
  368. package/dist/runtime/utils/native-input.d.ts +5 -0
  369. package/dist/runtime/utils/native-input.js +32 -0
  370. package/dist/runtime/utils/navigation-menu.d.ts +3 -0
  371. package/dist/runtime/utils/programmatic-theme.d.ts +17 -0
  372. package/dist/runtime/utils/programmatic-theme.js +59 -0
  373. package/dist/runtime/utils/registered-colors.d.ts +3 -0
  374. package/dist/runtime/utils/registered-colors.js +14 -0
  375. package/dist/runtime/utils/seed-colors.d.ts +19 -0
  376. package/dist/runtime/utils/seed-colors.js +207 -0
  377. package/dist/runtime/utils/select-contracts.d.ts +101 -0
  378. package/dist/runtime/utils/select-contracts.js +0 -0
  379. package/dist/runtime/utils/table-contracts.d.ts +60 -0
  380. package/dist/runtime/utils/table-contracts.js +0 -0
  381. package/dist/runtime/utils/ui.d.ts +26 -4
  382. package/dist/runtime/utils/ui.js +38 -5
  383. package/dist/tokens/default-colors.tokens.json +879 -0
  384. package/package.json +83 -16
  385. package/dist/runtime/composables/use-combobox-select.d.ts +0 -45
@@ -1,14 +1,15 @@
1
1
  <script setup>
2
2
  import { DialogClose, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger, VisuallyHidden } from "reka-ui";
3
- import { computed, ref, useSlots, watch, watchEffect } from "vue";
3
+ import { computed, getCurrentInstance, ref, useSlots, watch, watchEffect } from "vue";
4
4
  import { useIcons } from "../composables/use-icons";
5
5
  import { useMessages } from "../composables/use-messages";
6
6
  import { slideoverTheme } from "../theme/slideover";
7
- import { resolveSlot, useComponentTheme } from "../utils/ui";
7
+ import { resolveSlot, useComponentTheme, useThemeBindings } from "../utils/ui";
8
8
  import Button from "./Button.vue";
9
9
  import Icon from "./Icon.vue";
10
10
  const props = defineProps({
11
- open: { type: Boolean, required: false },
11
+ open: { type: Boolean, required: false, default: void 0 },
12
+ defaultOpen: { type: Boolean, required: false },
12
13
  title: { type: String, required: false },
13
14
  description: { type: String, required: false },
14
15
  side: { type: String, required: false, default: "right" },
@@ -42,13 +43,15 @@ function onContentAnimationEnd(event) {
42
43
  if (event.target.getAttribute("data-state") === "closed")
43
44
  emit("afterLeave");
44
45
  }
45
- const internalOpen = ref(props.open ?? false);
46
+ const isControlled = Object.hasOwn(getCurrentInstance()?.vnode.props ?? {}, "open");
47
+ const internalOpen = ref(props.open ?? props.defaultOpen ?? false);
46
48
  watch(() => props.open, (value) => {
47
- if (value !== void 0)
48
- internalOpen.value = value;
49
+ if (isControlled)
50
+ internalOpen.value = value ?? false;
49
51
  });
50
52
  function onUpdateOpen(value) {
51
- internalOpen.value = value;
53
+ if (!isControlled)
54
+ internalOpen.value = value;
52
55
  emit("update:open", value);
53
56
  }
54
57
  watch(internalOpen, (value) => {
@@ -65,6 +68,7 @@ if (import.meta.dev) {
65
68
  const icons = useIcons();
66
69
  const messages = useMessages();
67
70
  const theme = useComponentTheme("slideover", slideoverTheme);
71
+ const themeBindings = useThemeBindings();
68
72
  const ui = computed(() => theme.value({ side: props.side, inset: props.inset, transition: props.transition }));
69
73
  const overlayProps = computed(() => resolveSlot(ui.value.overlay, props.ui?.overlay));
70
74
  const contentProps = computed(() => resolveSlot(ui.value.content, props.ui?.content));
@@ -82,8 +86,17 @@ const footerProps = computed(() => resolveSlot(ui.value.footer, props.ui?.footer
82
86
  <slot />
83
87
  </DialogTrigger>
84
88
  <DialogPortal>
85
- <DialogOverlay v-if="overlay" v-bind="overlayProps" />
89
+ <DialogOverlay
90
+ v-if="overlay"
91
+ :data-selaras-theme="themeBindings['data-selaras-theme']"
92
+ :data-selaras-mode="themeBindings['data-selaras-mode']"
93
+ :style="themeBindings.style"
94
+ v-bind="overlayProps"
95
+ />
86
96
  <DialogContent
97
+ :data-selaras-theme="themeBindings['data-selaras-theme']"
98
+ :data-selaras-mode="themeBindings['data-selaras-mode']"
99
+ :style="themeBindings.style"
87
100
  v-bind="contentProps"
88
101
  @escape-key-down="onEscapeKeyDown"
89
102
  @pointer-down-outside="onPointerDownOutside"
@@ -2,6 +2,8 @@ import type { SlideoverThemeSlots } from '../theme/slideover.js';
2
2
  import type { UiProp } from '../utils/ui.js';
3
3
  export interface SlideoverProps {
4
4
  open?: boolean;
5
+ /** Initial visibility for an uncontrolled slideover. Supplying `open` makes the parent authoritative. */
6
+ defaultOpen?: boolean;
5
7
  title?: string;
6
8
  description?: string;
7
9
  /** Which edge the panel slides in from. */
@@ -1,27 +1,34 @@
1
1
  <script setup>
2
- import { useSlideover } from "../composables/use-slideover";
2
+ import { onUnmounted } from "vue";
3
+ import { useSlideoverService } from "../internal/programmatic-services";
4
+ import ProgrammaticTheme from "../internal/ProgrammaticTheme.vue";
3
5
  import Slideover from "./Slideover.vue";
4
- const { slideovers, close, remove } = useSlideover();
6
+ const { instances: slideovers, close, remove, dispose } = useSlideoverService();
7
+ onUnmounted(dispose);
5
8
  </script>
6
9
 
7
10
  <template>
8
- <Slideover
11
+ <ProgrammaticTheme
9
12
  v-for="instance in slideovers"
10
13
  :key="instance.id"
11
- :open="instance.isOpen"
12
- :title="instance.title"
13
- :description="instance.description"
14
- :side="instance.side"
15
- :inset="instance.inset"
16
- :dismissible="instance.dismissible"
17
- :modal="instance.modal"
18
- :overlay="instance.overlay"
19
- :transition="instance.transition"
20
- @update:open="(open) => !open && close(instance.id)"
21
- @after-leave="remove(instance.id)"
14
+ :snapshot="instance._theme"
22
15
  >
23
- <template #content>
24
- <component :is="instance.component" v-bind="instance.props" @close="(value) => close(instance.id, value)" />
25
- </template>
26
- </Slideover>
16
+ <Slideover
17
+ :open="instance.isOpen"
18
+ :title="instance.title"
19
+ :description="instance.description"
20
+ :side="instance.side"
21
+ :inset="instance.inset"
22
+ :dismissible="instance.dismissible"
23
+ :modal="instance.modal"
24
+ :overlay="instance.overlay"
25
+ :transition="instance.transition"
26
+ @update:open="(open) => !open && close(instance.id)"
27
+ @after-leave="remove(instance.id)"
28
+ >
29
+ <template #content>
30
+ <component :is="instance.component" v-bind="instance.props" @close="(value) => close(instance.id, value)" />
31
+ </template>
32
+ </Slideover>
33
+ </ProgrammaticTheme>
27
34
  </template>
@@ -1,5 +1,6 @@
1
1
  import type { VariantProps } from 'tailwind-variants';
2
2
  import type { SliderThemeSlots } from '../theme/slider.js';
3
+ import type { ColorRole } from '../utils/color-registry.js';
3
4
  import type { UiProp } from '../utils/ui.js';
4
5
  import { sliderTheme } from '../theme/slider.js';
5
6
  type SliderVariants = VariantProps<typeof sliderTheme>;
@@ -19,7 +20,7 @@ export interface SliderProps {
19
20
  /** Shows a tick mark at every step along the track - own addition, Reka's primitive has no tick/mark concept of its own. */
20
21
  showTicks?: boolean;
21
22
  size?: SliderVariants['size'];
22
- color?: SliderVariants['color'];
23
+ color?: ColorRole;
23
24
  /** @default 'circle' */
24
25
  thumbVariant?: SliderVariants['thumbVariant'];
25
26
  /** Shows the current value in a tooltip on hover/focus of each thumb - reuses Tooltip, not a bespoke floating label. */
@@ -4,6 +4,7 @@ import { computed, ref, watch } from "vue";
4
4
  import { useIcons } from "../composables/use-icons";
5
5
  import { useMessages } from "../composables/use-messages";
6
6
  import { sliderTheme } from "../theme/slider";
7
+ import { resolveRegisteredColorRole } from "../utils/registered-colors";
7
8
  import { resolveSlot, useComponentTheme, useRootProps } from "../utils/ui";
8
9
  import Button from "./Button.vue";
9
10
  import Tooltip from "./Tooltip.vue";
@@ -83,9 +84,10 @@ const ticks = computed(() => {
83
84
  });
84
85
  });
85
86
  const theme = useComponentTheme("slider", sliderTheme);
87
+ const effectiveColor = computed(() => resolveRegisteredColorRole(props.color ?? "primary", "primary"));
86
88
  const ui = computed(() => theme.value({
87
89
  size: props.size,
88
- color: props.color,
90
+ color: effectiveColor.value,
89
91
  orientation: props.orientation,
90
92
  thumbVariant: props.thumbVariant
91
93
  }));
@@ -109,6 +111,7 @@ const endProps = computed(() => resolveSlot(ui.value.end, props.ui?.end));
109
111
  :orientation="orientation"
110
112
  :inverted="inverted"
111
113
  :name="name"
114
+ :data-selaras-color="effectiveColor"
112
115
  v-bind="rootProps"
113
116
  @update:model-value="onUpdateModelValue"
114
117
  @value-commit="onValueCommit"
@@ -1,5 +1,6 @@
1
1
  import type { VariantProps } from 'tailwind-variants';
2
2
  import type { SliderThemeSlots } from '../theme/slider.js';
3
+ import type { ColorRole } from '../utils/color-registry.js';
3
4
  import type { UiProp } from '../utils/ui.js';
4
5
  import { sliderTheme } from '../theme/slider.js';
5
6
  type SliderVariants = VariantProps<typeof sliderTheme>;
@@ -19,7 +20,7 @@ export interface SliderProps {
19
20
  /** Shows a tick mark at every step along the track - own addition, Reka's primitive has no tick/mark concept of its own. */
20
21
  showTicks?: boolean;
21
22
  size?: SliderVariants['size'];
22
- color?: SliderVariants['color'];
23
+ color?: ColorRole;
23
24
  /** @default 'circle' */
24
25
  thumbVariant?: SliderVariants['thumbVariant'];
25
26
  /** Shows the current value in a tooltip on hover/focus of each thumb - reuses Tooltip, not a bespoke floating label. */
@@ -1,11 +1,14 @@
1
1
  import type { VariantProps } from 'tailwind-variants';
2
2
  import type { SplitterResizeHandleThemeSlots } from '../theme/splitter-resize-handle.js';
3
+ import type { ColorRole } from '../utils/color-registry.js';
3
4
  import type { UiProp } from '../utils/ui.js';
4
5
  import { splitterResizeHandleTheme } from '../theme/splitter-resize-handle.js';
5
6
  type SplitterResizeHandleVariants = VariantProps<typeof splitterResizeHandleTheme>;
6
7
  export interface SplitterResizeHandleProps {
7
8
  /** Match the parent Splitter's own `direction` - this isn't read from it automatically. @default 'horizontal' */
8
9
  direction?: SplitterResizeHandleVariants['direction'];
10
+ /** The hover and drag accent. @default 'primary' */
11
+ color?: ColorRole;
9
12
  disabled?: boolean;
10
13
  ui?: UiProp<SplitterResizeHandleThemeSlots>;
11
14
  }
@@ -2,21 +2,24 @@
2
2
  import { SplitterResizeHandle as RekaSplitterResizeHandle } from "reka-ui";
3
3
  import { computed } from "vue";
4
4
  import { splitterResizeHandleTheme } from "../theme/splitter-resize-handle";
5
+ import { resolveRegisteredColorRole } from "../utils/registered-colors";
5
6
  import { resolveSlot, useComponentTheme, useRootProps } from "../utils/ui";
6
7
  defineOptions({ inheritAttrs: false });
7
8
  const props = defineProps({
8
9
  direction: { type: null, required: false, default: "horizontal" },
10
+ color: { type: null, required: false },
9
11
  disabled: { type: Boolean, required: false },
10
12
  ui: { type: Object, required: false }
11
13
  });
12
14
  const theme = useComponentTheme("splitterResizeHandle", splitterResizeHandleTheme);
13
- const ui = computed(() => theme.value({ direction: props.direction }));
15
+ const effectiveColor = computed(() => resolveRegisteredColorRole(props.color ?? "primary", "primary"));
16
+ const ui = computed(() => theme.value({ direction: props.direction, color: effectiveColor.value }));
14
17
  const rootProps = useRootProps(() => ui.value.root, () => props.ui?.root);
15
18
  const lineProps = computed(() => resolveSlot(ui.value.line, props.ui?.line));
16
19
  </script>
17
20
 
18
21
  <template>
19
- <RekaSplitterResizeHandle :disabled="disabled" v-bind="rootProps">
22
+ <RekaSplitterResizeHandle :disabled="disabled" :data-selaras-color="effectiveColor" v-bind="rootProps">
20
23
  <div v-bind="lineProps" />
21
24
  </RekaSplitterResizeHandle>
22
25
  </template>
@@ -1,11 +1,14 @@
1
1
  import type { VariantProps } from 'tailwind-variants';
2
2
  import type { SplitterResizeHandleThemeSlots } from '../theme/splitter-resize-handle.js';
3
+ import type { ColorRole } from '../utils/color-registry.js';
3
4
  import type { UiProp } from '../utils/ui.js';
4
5
  import { splitterResizeHandleTheme } from '../theme/splitter-resize-handle.js';
5
6
  type SplitterResizeHandleVariants = VariantProps<typeof splitterResizeHandleTheme>;
6
7
  export interface SplitterResizeHandleProps {
7
8
  /** Match the parent Splitter's own `direction` - this isn't read from it automatically. @default 'horizontal' */
8
9
  direction?: SplitterResizeHandleVariants['direction'];
10
+ /** The hover and drag accent. @default 'primary' */
11
+ color?: ColorRole;
9
12
  disabled?: boolean;
10
13
  ui?: UiProp<SplitterResizeHandleThemeSlots>;
11
14
  }
@@ -1,5 +1,6 @@
1
1
  import type { VariantProps } from 'tailwind-variants';
2
2
  import type { StepperThemeSlots } from '../theme/stepper.js';
3
+ import type { ColorRole } from '../utils/color-registry.js';
3
4
  import type { UiProp } from '../utils/ui.js';
4
5
  import { stepperTheme } from '../theme/stepper.js';
5
6
  type StepperVariants = VariantProps<typeof stepperTheme>;
@@ -19,7 +20,7 @@ export interface StepperProps {
19
20
  linear?: boolean;
20
21
  orientation?: StepperVariants['orientation'];
21
22
  size?: StepperVariants['size'];
22
- color?: StepperVariants['color'];
23
+ color?: ColorRole;
23
24
  ui?: UiProp<StepperThemeSlots>;
24
25
  }
25
26
  export interface StepperEmits {
@@ -3,6 +3,7 @@ import { StepperDescription, StepperIndicator, StepperItem, StepperRoot, Stepper
3
3
  import { computed } from "vue";
4
4
  import { useIcons } from "../composables/use-icons";
5
5
  import { stepperTheme } from "../theme/stepper";
6
+ import { resolveRegisteredColorRole } from "../utils/registered-colors";
6
7
  import { resolveSlot, useComponentTheme, useRootProps } from "../utils/ui";
7
8
  import Icon from "./Icon.vue";
8
9
  defineOptions({ inheritAttrs: false });
@@ -20,10 +21,11 @@ const emit = defineEmits(["update:modelValue"]);
20
21
  defineSlots();
21
22
  const icons = useIcons();
22
23
  const theme = useComponentTheme("stepper", stepperTheme);
24
+ const effectiveColor = computed(() => resolveRegisteredColorRole(props.color ?? "primary", "primary"));
23
25
  const ui = computed(() => theme.value({
24
26
  orientation: props.orientation,
25
27
  size: props.size,
26
- color: props.color
28
+ color: effectiveColor.value
27
29
  }));
28
30
  const rootProps = useRootProps(() => ui.value.root, () => props.ui?.root);
29
31
  const itemProps = computed(() => resolveSlot(ui.value.item, props.ui?.item));
@@ -43,6 +45,7 @@ const separatorProps = computed(() => resolveSlot(ui.value.separator, props.ui?.
43
45
  :default-value="defaultValue"
44
46
  :linear="linear"
45
47
  :orientation="orientation"
48
+ :data-selaras-color="effectiveColor"
46
49
  v-bind="rootProps"
47
50
  @update:model-value="(value) => emit('update:modelValue', value)"
48
51
  >
@@ -1,5 +1,6 @@
1
1
  import type { VariantProps } from 'tailwind-variants';
2
2
  import type { StepperThemeSlots } from '../theme/stepper.js';
3
+ import type { ColorRole } from '../utils/color-registry.js';
3
4
  import type { UiProp } from '../utils/ui.js';
4
5
  import { stepperTheme } from '../theme/stepper.js';
5
6
  type StepperVariants = VariantProps<typeof stepperTheme>;
@@ -19,7 +20,7 @@ export interface StepperProps {
19
20
  linear?: boolean;
20
21
  orientation?: StepperVariants['orientation'];
21
22
  size?: StepperVariants['size'];
22
- color?: StepperVariants['color'];
23
+ color?: ColorRole;
23
24
  ui?: UiProp<StepperThemeSlots>;
24
25
  }
25
26
  export interface StepperEmits {
@@ -1,5 +1,6 @@
1
1
  import type { VariantProps } from 'tailwind-variants';
2
2
  import type { SwitchThemeSlots } from '../theme/switch.js';
3
+ import type { ColorRole } from '../utils/color-registry.js';
3
4
  import type { UiProp } from '../utils/ui.js';
4
5
  import { switchTheme } from '../theme/switch.js';
5
6
  type SwitchVariants = VariantProps<typeof switchTheme>;
@@ -14,7 +15,7 @@ export interface SwitchProps {
14
15
  invalid?: boolean;
15
16
  required?: boolean;
16
17
  size?: SwitchVariants['size'];
17
- color?: SwitchVariants['color'];
18
+ color?: ColorRole;
18
19
  /** Shows a spinner in the thumb. Doesn't imply `disabled` - combine `:loading="x" :disabled="x"` if a busy switch shouldn't be touchable. Takes precedence over checkedIcon/uncheckedIcon. */
19
20
  loading?: boolean;
20
21
  /** Icon shown in the thumb when on. */
@@ -4,6 +4,7 @@ import { computed } from "vue";
4
4
  import { useFormField } from "../composables/use-form-field";
5
5
  import { useIcons } from "../composables/use-icons";
6
6
  import { switchTheme } from "../theme/switch";
7
+ import { resolveRegisteredColorRole } from "../utils/registered-colors";
7
8
  import { applyClassPrefix, resolveSlot, useComponentTheme, useRootProps, withFallthroughClass } from "../utils/ui";
8
9
  import Icon from "./Icon.vue";
9
10
  defineOptions({ inheritAttrs: false });
@@ -30,7 +31,8 @@ const switchInvalid = computed(() => props.invalid || (field?.invalid.value ?? f
30
31
  const effectiveSize = computed(() => props.size ?? field?.size ?? "md");
31
32
  const describedBy = computed(() => field?.describedBy.value);
32
33
  const theme = useComponentTheme("switch", switchTheme);
33
- const ui = computed(() => theme.value({ invalid: switchInvalid.value, size: effectiveSize.value, color: props.color }));
34
+ const effectiveColor = computed(() => resolveRegisteredColorRole(props.color ?? "primary", "primary"));
35
+ const ui = computed(() => theme.value({ invalid: switchInvalid.value, size: effectiveSize.value, color: effectiveColor.value }));
34
36
  const rootProps = useRootProps(() => ui.value.root, () => withFallthroughClass(props.description ? "items-start" : void 0, props.ui?.root));
35
37
  const trackProps = computed(() => resolveSlot(ui.value.track, withFallthroughClass(props.description ? "mt-0.5" : void 0, props.ui?.track)));
36
38
  const thumbProps = computed(() => resolveSlot(ui.value.thumb, props.ui?.thumb));
@@ -42,7 +44,7 @@ const icons = useIcons();
42
44
  </script>
43
45
 
44
46
  <template>
45
- <label v-bind="rootProps">
47
+ <label :data-selaras-color="switchInvalid ? 'danger' : effectiveColor" v-bind="rootProps">
46
48
  <SwitchRoot
47
49
  :id="switchId"
48
50
  :model-value="modelValue"
@@ -1,5 +1,6 @@
1
1
  import type { VariantProps } from 'tailwind-variants';
2
2
  import type { SwitchThemeSlots } from '../theme/switch.js';
3
+ import type { ColorRole } from '../utils/color-registry.js';
3
4
  import type { UiProp } from '../utils/ui.js';
4
5
  import { switchTheme } from '../theme/switch.js';
5
6
  type SwitchVariants = VariantProps<typeof switchTheme>;
@@ -14,7 +15,7 @@ export interface SwitchProps {
14
15
  invalid?: boolean;
15
16
  required?: boolean;
16
17
  size?: SwitchVariants['size'];
17
- color?: SwitchVariants['color'];
18
+ color?: ColorRole;
18
19
  /** Shows a spinner in the thumb. Doesn't imply `disabled` - combine `:loading="x" :disabled="x"` if a busy switch shouldn't be touchable. Takes precedence over checkedIcon/uncheckedIcon. */
19
20
  loading?: boolean;
20
21
  /** Icon shown in the thumb when on. */
@@ -1,83 +1,31 @@
1
- import type { TableThemeSlots } from '../theme/table.js';
2
- import type { UiProp } from '../utils/ui.js';
3
- export interface TableProps {
4
- data: unknown[];
5
- columns?: any[];
6
- selectable?: boolean;
7
- pageSize?: number;
8
- loading?: boolean;
9
- sorting?: any[];
10
- defaultSorting?: any[];
11
- rowSelection?: Record<string, boolean>;
12
- globalFilter?: string;
13
- pageIndex?: number;
14
- size?: 'sm' | 'md' | 'lg';
15
- gridlines?: boolean;
16
- striped?: boolean;
17
- expandable?: boolean;
18
- expanded?: any;
19
- columnVisibility?: Record<string, boolean>;
20
- columnToggle?: boolean;
21
- /** Enables vertical scroll with a sticky header, capped at this CSS height (e.g. '24rem'). */
22
- scrollHeight?: string;
23
- virtualize?: boolean | {
24
- estimateSize?: number;
25
- overscan?: number;
26
- };
27
- /** Opts out of the local sorted/filtered/paginated row models - set when `data` is already sorted/filtered/paginated server-side, so this table doesn't redundantly (and incorrectly) reprocess an already-server-processed slice. `sorting`/`globalFilter`/`pageIndex` still drive the UI and still emit their `update:*` events the same way - only the *local row model* is skipped, not the state itself. `manualPagination` also suppresses the built-in Pagination UI entirely (there's no way to know the real page count from a server-paginated slice) - bring your own `SPagination`, bound to your own server metadata, the same way this table already expects you to bring your own search input for `globalFilter`. */
28
- manualSorting?: boolean;
29
- manualFiltering?: boolean;
30
- manualPagination?: boolean;
31
- /** Adds a class to a body row based on its own data - e.g. highlighting a flagged row. Called per row, not per render, so keep it cheap. */
32
- rowClass?: (row: unknown) => string | undefined;
33
- /** Same as `rowClass`, for inline styles. */
34
- rowStyle?: (row: unknown) => Record<string, string> | undefined;
35
- ui?: UiProp<TableThemeSlots>;
36
- }
37
- export interface TableEmits {
38
- 'update:sorting': [value: any[]];
39
- 'update:rowSelection': [value: Record<string, boolean>];
40
- 'update:globalFilter': [value: string];
41
- 'update:pageIndex': [value: number];
42
- 'update:expanded': [value: any];
43
- 'update:columnVisibility': [value: Record<string, boolean>];
44
- 'rowClick': [row: unknown, event: MouseEvent];
45
- 'rowContextmenu': [row: unknown, event: MouseEvent];
46
- }
47
- declare var __VLS_44: {
48
- row: import("@tanstack/vue-table").RowData;
49
- }, __VLS_51: {};
50
- type __VLS_Slots = {} & {
51
- expanded?: (props: typeof __VLS_44) => any;
52
- } & {
53
- empty?: (props: typeof __VLS_51) => any;
1
+ import type { RowData } from '@tanstack/vue-table';
2
+ import type { TableProps, TableSlots } from '../utils/table-contracts.js';
3
+ declare const __VLS_export: <TData extends RowData = RowData>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
4
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<TableProps<TData> & {
5
+ "onUpdate:sorting"?: ((value: import("@tanstack/vue-table").SortingState) => any) | undefined;
6
+ "onUpdate:rowSelection"?: ((value: import("@tanstack/vue-table").RowSelectionState) => any) | undefined;
7
+ "onUpdate:globalFilter"?: ((value: string) => any) | undefined;
8
+ "onUpdate:pageIndex"?: ((value: number) => any) | undefined;
9
+ "onUpdate:expanded"?: ((value: import("@tanstack/vue-table").ExpandedState) => any) | undefined;
10
+ "onUpdate:columnVisibility"?: ((value: import("@tanstack/vue-table").ColumnVisibilityState) => any) | undefined;
11
+ onRowClick?: ((row: TData, event: MouseEvent) => any) | undefined;
12
+ onRowContextmenu?: ((row: TData, event: MouseEvent) => any) | undefined;
13
+ }> & (typeof globalThis extends {
14
+ __VLS_PROPS_FALLBACK: infer P;
15
+ } ? P : {});
16
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
17
+ exportCsv: (filename?: string) => void;
18
+ }>) => void;
19
+ attrs: any;
20
+ slots: TableSlots<TData>;
21
+ emit: ((evt: "update:sorting", value: import("@tanstack/vue-table").SortingState) => void) & ((evt: "update:rowSelection", value: import("@tanstack/vue-table").RowSelectionState) => void) & ((evt: "update:globalFilter", value: string) => void) & ((evt: "update:pageIndex", value: number) => void) & ((evt: "update:expanded", value: import("@tanstack/vue-table").ExpandedState) => void) & ((evt: "update:columnVisibility", value: import("@tanstack/vue-table").ColumnVisibilityState) => void) & ((evt: "rowClick", row: TData, event: MouseEvent) => void) & ((evt: "rowContextmenu", row: TData, event: MouseEvent) => void);
22
+ }>) => import("vue").VNode & {
23
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
54
24
  };
55
- declare const __VLS_base: import("vue").DefineComponent<TableProps, {
56
- exportCsv: (filename?: string) => void;
57
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
58
- "update:sorting": (value: any[]) => any;
59
- "update:rowSelection": (value: Record<string, boolean>) => any;
60
- "update:globalFilter": (value: string) => any;
61
- "update:pageIndex": (value: number) => any;
62
- "update:expanded": (value: any) => any;
63
- "update:columnVisibility": (value: Record<string, boolean>) => any;
64
- rowClick: (row: unknown, event: MouseEvent) => any;
65
- rowContextmenu: (row: unknown, event: MouseEvent) => any;
66
- }, string, import("vue").PublicProps, Readonly<TableProps> & Readonly<{
67
- "onUpdate:sorting"?: ((value: any[]) => any) | undefined;
68
- "onUpdate:rowSelection"?: ((value: Record<string, boolean>) => any) | undefined;
69
- "onUpdate:globalFilter"?: ((value: string) => any) | undefined;
70
- "onUpdate:pageIndex"?: ((value: number) => any) | undefined;
71
- "onUpdate:expanded"?: ((value: any) => any) | undefined;
72
- "onUpdate:columnVisibility"?: ((value: Record<string, boolean>) => any) | undefined;
73
- onRowClick?: ((row: unknown, event: MouseEvent) => any) | undefined;
74
- onRowContextmenu?: ((row: unknown, event: MouseEvent) => any) | undefined;
75
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
76
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
77
25
  declare const _default: typeof __VLS_export;
78
26
  export default _default;
79
- type __VLS_WithSlots<T, S> = T & {
80
- new (): {
81
- $slots: S;
82
- };
83
- };
27
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
28
+ [K in keyof T]: T[K];
29
+ } : {
30
+ [K in keyof T as K]: T[K];
31
+ }) & {};
@@ -1,11 +1,12 @@
1
1
  <script setup>
2
2
  import { FlexRender } from "@tanstack/vue-table";
3
3
  import { useVirtualizer } from "@tanstack/vue-virtual";
4
- import { computed, getCurrentInstance, h, nextTick, onMounted, onUnmounted, ref, useSlots, watch, watchEffect } from "vue";
4
+ import { computed, getCurrentInstance, h, nextTick, onMounted, onUnmounted, ref, watch, watchEffect } from "vue";
5
5
  import { useIcons } from "../composables/use-icons";
6
6
  import { useMessages } from "../composables/use-messages";
7
7
  import { useTable } from "../composables/use-table";
8
8
  import { tableTheme } from "../theme/table";
9
+ import { resolveRegisteredColorRole } from "../utils/registered-colors";
9
10
  import { collectColumnPinning, convertChildrenToColumns } from "../utils/table-columns";
10
11
  import { exportTableToCsv } from "../utils/table-export";
11
12
  import { applyClassPrefix, resolveSlot, useComponentTheme, useRootProps, withFallthroughClass } from "../utils/ui";
@@ -21,33 +22,42 @@ const props = defineProps({
21
22
  selectable: { type: Boolean, required: false },
22
23
  pageSize: { type: Number, required: false },
23
24
  loading: { type: Boolean, required: false },
24
- sorting: { type: Array, required: false },
25
- defaultSorting: { type: Array, required: false },
26
- rowSelection: { type: Object, required: false },
25
+ sorting: { type: null, required: false },
26
+ defaultSorting: { type: null, required: false },
27
+ rowSelection: { type: null, required: false },
27
28
  globalFilter: { type: String, required: false },
28
29
  pageIndex: { type: Number, required: false },
29
30
  size: { type: String, required: false, default: "md" },
31
+ color: { type: null, required: false },
30
32
  gridlines: { type: Boolean, required: false },
31
33
  striped: { type: Boolean, required: false },
32
34
  expandable: { type: Boolean, required: false },
33
35
  expanded: { type: null, required: false },
34
- columnVisibility: { type: Object, required: false },
36
+ columnVisibility: { type: null, required: false },
35
37
  columnToggle: { type: Boolean, required: false },
36
38
  scrollHeight: { type: String, required: false },
37
39
  virtualize: { type: [Boolean, Object], required: false },
38
40
  manualSorting: { type: Boolean, required: false },
39
41
  manualFiltering: { type: Boolean, required: false },
40
42
  manualPagination: { type: Boolean, required: false },
43
+ getRowId: { type: Function, required: false },
41
44
  rowClass: { type: Function, required: false },
42
45
  rowStyle: { type: Function, required: false },
43
46
  ui: { type: Object, required: false }
44
47
  });
45
48
  const emit = defineEmits(["update:sorting", "update:rowSelection", "update:globalFilter", "update:pageIndex", "update:expanded", "update:columnVisibility", "rowClick", "rowContextmenu"]);
46
- const slots = useSlots();
49
+ const slots = defineSlots();
47
50
  const icons = useIcons();
48
51
  const messages = useMessages();
49
52
  const theme = useComponentTheme("table", tableTheme);
50
- const ui = computed(() => theme.value({ size: props.size, gridlines: props.gridlines, striped: props.striped, scrollable: !!props.scrollHeight }));
53
+ const effectiveColor = computed(() => resolveRegisteredColorRole(props.color ?? "primary", "primary"));
54
+ const ui = computed(() => theme.value({
55
+ size: props.size,
56
+ color: effectiveColor.value,
57
+ gridlines: props.gridlines,
58
+ striped: props.striped,
59
+ scrollable: !!props.scrollHeight
60
+ }));
51
61
  const selectColumn = {
52
62
  id: "__select__",
53
63
  header: ({ table: table2 }) => h(Checkbox, {
@@ -64,13 +74,15 @@ const selectColumn = {
64
74
  };
65
75
  const expandColumn = {
66
76
  id: "__expand__",
67
- header: "",
77
+ // An empty-string component root has no SSR text node to hydrate. Render
78
+ // no content explicitly so Vue preserves a stable comment anchor instead.
79
+ header: () => null,
68
80
  cell: ({ row }) => h("button", {
69
81
  "type": "button",
70
- "class": ui.value.expandButton(),
82
+ ...resolveSlot(ui.value.expandButton, props.ui?.expandButton),
71
83
  "aria-label": row.getIsExpanded() ? messages.value.collapseRow : messages.value.expandRow,
72
84
  "onClick": () => row.toggleExpanded()
73
- }, [h(Icon, { "name": icons.value.chevronRight, "class": ui.value.expandChevron(), "data-expanded": row.getIsExpanded() || void 0 })]),
85
+ }, [h(Icon, { "name": icons.value.chevronRight, ...resolveSlot(ui.value.expandChevron, props.ui?.expandChevron), "data-expanded": row.getIsExpanded() || void 0 })]),
74
86
  enableSorting: false,
75
87
  enableColumnFilter: false
76
88
  };
@@ -87,7 +99,7 @@ if (import.meta.dev) {
87
99
  if (!firstRow)
88
100
  return;
89
101
  for (const column of columns.value) {
90
- if (column.accessorKey && !(column.accessorKey in firstRow))
102
+ if ("accessorKey" in column && typeof column.accessorKey === "string" && !(column.accessorKey in firstRow))
91
103
  console.warn(`[SColumn] field "${column.accessorKey}" was not found on the first row of data.`);
92
104
  }
93
105
  });
@@ -117,7 +129,7 @@ function onRowContextmenu(rowOriginal, event) {
117
129
  emit("rowContextmenu", rowOriginal, event);
118
130
  }
119
131
  const thProps = computed(() => resolveSlot(ui.value.th, props.ui?.th));
120
- const thSortableClass = computed(() => ui.value.thSortable());
132
+ const thSortableClass = computed(() => resolveSlot(ui.value.thSortable, props.ui?.thSortable).class);
121
133
  const sortIconProps = computed(() => resolveSlot(ui.value.sortIcon, props.ui?.sortIcon));
122
134
  const tdProps = computed(() => resolveSlot(ui.value.td, props.ui?.td));
123
135
  const tfootProps = computed(() => resolveSlot(ui.value.tfoot, props.ui?.tfoot));
@@ -207,7 +219,7 @@ defineExpose({
207
219
  </script>
208
220
 
209
221
  <template>
210
- <div v-bind="rootProps">
222
+ <div :data-selaras-color="effectiveColor" v-bind="rootProps">
211
223
  <div v-if="columnToggle" :class="applyClassPrefix('mb-2 flex justify-end')">
212
224
  <div data-column-toggle v-bind="columnToggleProps">
213
225
  <Button variant="outline" size="sm" :icon="icons.columns" @click="showColumnTogglePanel = !showColumnTogglePanel">