@sewadah/selaras 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +131 -0
  3. package/dist/module.d.mts +22 -0
  4. package/dist/module.json +9 -0
  5. package/dist/module.mjs +127 -0
  6. package/dist/runtime/components/Accordion.d.vue.ts +59 -0
  7. package/dist/runtime/components/Accordion.vue +65 -0
  8. package/dist/runtime/components/Accordion.vue.d.ts +59 -0
  9. package/dist/runtime/components/Alert.d.vue.ts +39 -0
  10. package/dist/runtime/components/Alert.vue +64 -0
  11. package/dist/runtime/components/Alert.vue.d.ts +39 -0
  12. package/dist/runtime/components/AlertDialog.d.vue.ts +66 -0
  13. package/dist/runtime/components/AlertDialog.vue +116 -0
  14. package/dist/runtime/components/AlertDialog.vue.d.ts +66 -0
  15. package/dist/runtime/components/App.d.vue.ts +32 -0
  16. package/dist/runtime/components/App.vue +26 -0
  17. package/dist/runtime/components/App.vue.d.ts +32 -0
  18. package/dist/runtime/components/Autocomplete.d.vue.ts +61 -0
  19. package/dist/runtime/components/Autocomplete.vue +41 -0
  20. package/dist/runtime/components/Autocomplete.vue.d.ts +61 -0
  21. package/dist/runtime/components/Avatar.d.vue.ts +46 -0
  22. package/dist/runtime/components/Avatar.vue +64 -0
  23. package/dist/runtime/components/Avatar.vue.d.ts +46 -0
  24. package/dist/runtime/components/AvatarGroup.d.vue.ts +14 -0
  25. package/dist/runtime/components/AvatarGroup.vue +41 -0
  26. package/dist/runtime/components/AvatarGroup.vue.d.ts +14 -0
  27. package/dist/runtime/components/Badge.d.vue.ts +37 -0
  28. package/dist/runtime/components/Badge.vue +47 -0
  29. package/dist/runtime/components/Badge.vue.d.ts +37 -0
  30. package/dist/runtime/components/Breadcrumb.d.vue.ts +37 -0
  31. package/dist/runtime/components/Breadcrumb.vue +109 -0
  32. package/dist/runtime/components/Breadcrumb.vue.d.ts +37 -0
  33. package/dist/runtime/components/Button.d.vue.ts +45 -0
  34. package/dist/runtime/components/Button.vue +67 -0
  35. package/dist/runtime/components/Button.vue.d.ts +45 -0
  36. package/dist/runtime/components/ButtonGroup.d.vue.ts +22 -0
  37. package/dist/runtime/components/ButtonGroup.vue +21 -0
  38. package/dist/runtime/components/ButtonGroup.vue.d.ts +22 -0
  39. package/dist/runtime/components/Callout.d.vue.ts +27 -0
  40. package/dist/runtime/components/Callout.vue +47 -0
  41. package/dist/runtime/components/Callout.vue.d.ts +27 -0
  42. package/dist/runtime/components/Card.d.vue.ts +25 -0
  43. package/dist/runtime/components/Card.vue +30 -0
  44. package/dist/runtime/components/Card.vue.d.ts +25 -0
  45. package/dist/runtime/components/CardGroup.d.vue.ts +23 -0
  46. package/dist/runtime/components/CardGroup.vue +19 -0
  47. package/dist/runtime/components/CardGroup.vue.d.ts +23 -0
  48. package/dist/runtime/components/Checkbox.d.vue.ts +45 -0
  49. package/dist/runtime/components/Checkbox.vue +76 -0
  50. package/dist/runtime/components/Checkbox.vue.d.ts +45 -0
  51. package/dist/runtime/components/Chip.d.vue.ts +50 -0
  52. package/dist/runtime/components/Chip.vue +75 -0
  53. package/dist/runtime/components/Chip.vue.d.ts +50 -0
  54. package/dist/runtime/components/CodeButton.d.vue.ts +21 -0
  55. package/dist/runtime/components/CodeButton.vue +33 -0
  56. package/dist/runtime/components/CodeButton.vue.d.ts +21 -0
  57. package/dist/runtime/components/CodeGroup.d.vue.ts +3 -0
  58. package/dist/runtime/components/CodeGroup.vue +46 -0
  59. package/dist/runtime/components/CodeGroup.vue.d.ts +3 -0
  60. package/dist/runtime/components/CodeTree.d.vue.ts +17 -0
  61. package/dist/runtime/components/CodeTree.vue +56 -0
  62. package/dist/runtime/components/CodeTree.vue.d.ts +17 -0
  63. package/dist/runtime/components/Collapsible.d.vue.ts +44 -0
  64. package/dist/runtime/components/Collapsible.vue +52 -0
  65. package/dist/runtime/components/Collapsible.vue.d.ts +44 -0
  66. package/dist/runtime/components/ColorModeToggle.d.vue.ts +3 -0
  67. package/dist/runtime/components/ColorModeToggle.vue +24 -0
  68. package/dist/runtime/components/ColorModeToggle.vue.d.ts +3 -0
  69. package/dist/runtime/components/ColorPicker.d.vue.ts +30 -0
  70. package/dist/runtime/components/ColorPicker.vue +112 -0
  71. package/dist/runtime/components/ColorPicker.vue.d.ts +30 -0
  72. package/dist/runtime/components/Column.d.ts +72 -0
  73. package/dist/runtime/components/Column.js +34 -0
  74. package/dist/runtime/components/ColumnGroup.d.ts +33 -0
  75. package/dist/runtime/components/ColumnGroup.js +17 -0
  76. package/dist/runtime/components/CommandPalette.d.vue.ts +41 -0
  77. package/dist/runtime/components/CommandPalette.vue +208 -0
  78. package/dist/runtime/components/CommandPalette.vue.d.ts +41 -0
  79. package/dist/runtime/components/Container.d.vue.ts +22 -0
  80. package/dist/runtime/components/Container.vue +21 -0
  81. package/dist/runtime/components/Container.vue.d.ts +22 -0
  82. package/dist/runtime/components/ContentNavigation.d.vue.ts +31 -0
  83. package/dist/runtime/components/ContentNavigation.vue +64 -0
  84. package/dist/runtime/components/ContentNavigation.vue.d.ts +31 -0
  85. package/dist/runtime/components/ContentSurround.d.vue.ts +16 -0
  86. package/dist/runtime/components/ContentSurround.vue +46 -0
  87. package/dist/runtime/components/ContentSurround.vue.d.ts +16 -0
  88. package/dist/runtime/components/ContentToc.d.vue.ts +35 -0
  89. package/dist/runtime/components/ContentToc.vue +265 -0
  90. package/dist/runtime/components/ContentToc.vue.d.ts +35 -0
  91. package/dist/runtime/components/ContextMenu.d.vue.ts +33 -0
  92. package/dist/runtime/components/ContextMenu.vue +49 -0
  93. package/dist/runtime/components/ContextMenu.vue.d.ts +33 -0
  94. package/dist/runtime/components/DashboardGroup.d.vue.ts +24 -0
  95. package/dist/runtime/components/DashboardGroup.vue +52 -0
  96. package/dist/runtime/components/DashboardGroup.vue.d.ts +24 -0
  97. package/dist/runtime/components/DashboardNavbar.d.vue.ts +23 -0
  98. package/dist/runtime/components/DashboardNavbar.vue +33 -0
  99. package/dist/runtime/components/DashboardNavbar.vue.d.ts +23 -0
  100. package/dist/runtime/components/DashboardPanel.d.vue.ts +22 -0
  101. package/dist/runtime/components/DashboardPanel.vue +26 -0
  102. package/dist/runtime/components/DashboardPanel.vue.d.ts +22 -0
  103. package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +8 -0
  104. package/dist/runtime/components/DashboardResizeHandle.vue +19 -0
  105. package/dist/runtime/components/DashboardResizeHandle.vue.d.ts +8 -0
  106. package/dist/runtime/components/DashboardSidebar.d.vue.ts +40 -0
  107. package/dist/runtime/components/DashboardSidebar.vue +117 -0
  108. package/dist/runtime/components/DashboardSidebar.vue.d.ts +40 -0
  109. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +21 -0
  110. package/dist/runtime/components/DashboardSidebarToggle.vue +42 -0
  111. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +21 -0
  112. package/dist/runtime/components/DatePicker.d.vue.ts +165 -0
  113. package/dist/runtime/components/DatePicker.vue +796 -0
  114. package/dist/runtime/components/DatePicker.vue.d.ts +165 -0
  115. package/dist/runtime/components/Drawer.d.vue.ts +74 -0
  116. package/dist/runtime/components/Drawer.vue +157 -0
  117. package/dist/runtime/components/Drawer.vue.d.ts +74 -0
  118. package/dist/runtime/components/DrawerRenderer.d.vue.ts +3 -0
  119. package/dist/runtime/components/DrawerRenderer.vue +30 -0
  120. package/dist/runtime/components/DrawerRenderer.vue.d.ts +3 -0
  121. package/dist/runtime/components/Dropdown.d.vue.ts +35 -0
  122. package/dist/runtime/components/Dropdown.vue +51 -0
  123. package/dist/runtime/components/Dropdown.vue.d.ts +35 -0
  124. package/dist/runtime/components/FileTree.d.vue.ts +28 -0
  125. package/dist/runtime/components/FileTree.vue +68 -0
  126. package/dist/runtime/components/FileTree.vue.d.ts +28 -0
  127. package/dist/runtime/components/FileUpload.d.vue.ts +68 -0
  128. package/dist/runtime/components/FileUpload.vue +226 -0
  129. package/dist/runtime/components/FileUpload.vue.d.ts +68 -0
  130. package/dist/runtime/components/FormField.d.vue.ts +37 -0
  131. package/dist/runtime/components/FormField.vue +72 -0
  132. package/dist/runtime/components/FormField.vue.d.ts +37 -0
  133. package/dist/runtime/components/Header.d.vue.ts +20 -0
  134. package/dist/runtime/components/Header.vue +23 -0
  135. package/dist/runtime/components/Header.vue.d.ts +20 -0
  136. package/dist/runtime/components/Icon.d.vue.ts +14 -0
  137. package/dist/runtime/components/Icon.vue +18 -0
  138. package/dist/runtime/components/Icon.vue.d.ts +14 -0
  139. package/dist/runtime/components/Input.d.vue.ts +41 -0
  140. package/dist/runtime/components/Input.vue +86 -0
  141. package/dist/runtime/components/Input.vue.d.ts +41 -0
  142. package/dist/runtime/components/InputGroup.d.vue.ts +22 -0
  143. package/dist/runtime/components/InputGroup.vue +21 -0
  144. package/dist/runtime/components/InputGroup.vue.d.ts +22 -0
  145. package/dist/runtime/components/InputNumber.d.vue.ts +37 -0
  146. package/dist/runtime/components/InputNumber.vue +173 -0
  147. package/dist/runtime/components/InputNumber.vue.d.ts +37 -0
  148. package/dist/runtime/components/Kbd.d.vue.ts +24 -0
  149. package/dist/runtime/components/Kbd.vue +42 -0
  150. package/dist/runtime/components/Kbd.vue.d.ts +24 -0
  151. package/dist/runtime/components/Modal.d.vue.ts +72 -0
  152. package/dist/runtime/components/Modal.vue +178 -0
  153. package/dist/runtime/components/Modal.vue.d.ts +72 -0
  154. package/dist/runtime/components/ModalRenderer.d.vue.ts +3 -0
  155. package/dist/runtime/components/ModalRenderer.vue +25 -0
  156. package/dist/runtime/components/ModalRenderer.vue.d.ts +3 -0
  157. package/dist/runtime/components/NavigationMenu.d.vue.ts +108 -0
  158. package/dist/runtime/components/NavigationMenu.vue +166 -0
  159. package/dist/runtime/components/NavigationMenu.vue.d.ts +108 -0
  160. package/dist/runtime/components/NavigationMenuAccordionItem.d.vue.ts +23 -0
  161. package/dist/runtime/components/NavigationMenuAccordionItem.vue +106 -0
  162. package/dist/runtime/components/NavigationMenuAccordionItem.vue.d.ts +23 -0
  163. package/dist/runtime/components/NavigationMenuFlyoutList.d.vue.ts +19 -0
  164. package/dist/runtime/components/NavigationMenuFlyoutList.vue +44 -0
  165. package/dist/runtime/components/NavigationMenuFlyoutList.vue.d.ts +19 -0
  166. package/dist/runtime/components/NavigationMenuFlyoutTrigger.d.vue.ts +49 -0
  167. package/dist/runtime/components/NavigationMenuFlyoutTrigger.vue +116 -0
  168. package/dist/runtime/components/NavigationMenuFlyoutTrigger.vue.d.ts +49 -0
  169. package/dist/runtime/components/PageAside.d.vue.ts +20 -0
  170. package/dist/runtime/components/PageAside.vue +26 -0
  171. package/dist/runtime/components/PageAside.vue.d.ts +20 -0
  172. package/dist/runtime/components/PageHeader.d.vue.ts +24 -0
  173. package/dist/runtime/components/PageHeader.vue +30 -0
  174. package/dist/runtime/components/PageHeader.vue.d.ts +24 -0
  175. package/dist/runtime/components/Pagination.d.vue.ts +42 -0
  176. package/dist/runtime/components/Pagination.vue +113 -0
  177. package/dist/runtime/components/Pagination.vue.d.ts +42 -0
  178. package/dist/runtime/components/PinInput.d.vue.ts +40 -0
  179. package/dist/runtime/components/PinInput.vue +66 -0
  180. package/dist/runtime/components/PinInput.vue.d.ts +40 -0
  181. package/dist/runtime/components/Popover.d.vue.ts +52 -0
  182. package/dist/runtime/components/Popover.vue +77 -0
  183. package/dist/runtime/components/Popover.vue.d.ts +52 -0
  184. package/dist/runtime/components/Progress.d.vue.ts +32 -0
  185. package/dist/runtime/components/Progress.vue +76 -0
  186. package/dist/runtime/components/Progress.vue.d.ts +32 -0
  187. package/dist/runtime/components/ProseH1.d.vue.ts +18 -0
  188. package/dist/runtime/components/ProseH1.vue +21 -0
  189. package/dist/runtime/components/ProseH1.vue.d.ts +18 -0
  190. package/dist/runtime/components/ProseH2.d.vue.ts +18 -0
  191. package/dist/runtime/components/ProseH2.vue +21 -0
  192. package/dist/runtime/components/ProseH2.vue.d.ts +18 -0
  193. package/dist/runtime/components/ProseH3.d.vue.ts +18 -0
  194. package/dist/runtime/components/ProseH3.vue +21 -0
  195. package/dist/runtime/components/ProseH3.vue.d.ts +18 -0
  196. package/dist/runtime/components/ProseH4.d.vue.ts +18 -0
  197. package/dist/runtime/components/ProseH4.vue +21 -0
  198. package/dist/runtime/components/ProseH4.vue.d.ts +18 -0
  199. package/dist/runtime/components/ProseH5.d.vue.ts +18 -0
  200. package/dist/runtime/components/ProseH5.vue +21 -0
  201. package/dist/runtime/components/ProseH5.vue.d.ts +18 -0
  202. package/dist/runtime/components/ProseH6.d.vue.ts +18 -0
  203. package/dist/runtime/components/ProseH6.vue +21 -0
  204. package/dist/runtime/components/ProseH6.vue.d.ts +18 -0
  205. package/dist/runtime/components/ProsePre.d.vue.ts +20 -0
  206. package/dist/runtime/components/ProsePre.vue +50 -0
  207. package/dist/runtime/components/ProsePre.vue.d.ts +20 -0
  208. package/dist/runtime/components/RadioGroup.d.vue.ts +50 -0
  209. package/dist/runtime/components/RadioGroup.vue +82 -0
  210. package/dist/runtime/components/RadioGroup.vue.d.ts +50 -0
  211. package/dist/runtime/components/Rating.d.vue.ts +36 -0
  212. package/dist/runtime/components/Rating.vue +83 -0
  213. package/dist/runtime/components/Rating.vue.d.ts +36 -0
  214. package/dist/runtime/components/ReadMore.d.vue.ts +20 -0
  215. package/dist/runtime/components/ReadMore.vue +59 -0
  216. package/dist/runtime/components/ReadMore.vue.d.ts +20 -0
  217. package/dist/runtime/components/ScrollArea.d.vue.ts +19 -0
  218. package/dist/runtime/components/ScrollArea.vue +37 -0
  219. package/dist/runtime/components/ScrollArea.vue.d.ts +19 -0
  220. package/dist/runtime/components/Select.d.vue.ts +60 -0
  221. package/dist/runtime/components/Select.vue +40 -0
  222. package/dist/runtime/components/Select.vue.d.ts +60 -0
  223. package/dist/runtime/components/Separator.d.vue.ts +27 -0
  224. package/dist/runtime/components/Separator.vue +36 -0
  225. package/dist/runtime/components/Separator.vue.d.ts +27 -0
  226. package/dist/runtime/components/Skeleton.d.vue.ts +13 -0
  227. package/dist/runtime/components/Skeleton.vue +17 -0
  228. package/dist/runtime/components/Skeleton.vue.d.ts +13 -0
  229. package/dist/runtime/components/Slideover.d.vue.ts +65 -0
  230. package/dist/runtime/components/Slideover.vue +140 -0
  231. package/dist/runtime/components/Slideover.vue.d.ts +65 -0
  232. package/dist/runtime/components/SlideoverRenderer.d.vue.ts +3 -0
  233. package/dist/runtime/components/SlideoverRenderer.vue +27 -0
  234. package/dist/runtime/components/SlideoverRenderer.vue.d.ts +3 -0
  235. package/dist/runtime/components/Slider.d.vue.ts +60 -0
  236. package/dist/runtime/components/Slider.vue +186 -0
  237. package/dist/runtime/components/Slider.vue.d.ts +60 -0
  238. package/dist/runtime/components/Splitter.d.vue.ts +41 -0
  239. package/dist/runtime/components/Splitter.vue +31 -0
  240. package/dist/runtime/components/Splitter.vue.d.ts +41 -0
  241. package/dist/runtime/components/SplitterPanel.d.vue.ts +55 -0
  242. package/dist/runtime/components/SplitterPanel.vue +52 -0
  243. package/dist/runtime/components/SplitterPanel.vue.d.ts +55 -0
  244. package/dist/runtime/components/SplitterResizeHandle.d.vue.ts +14 -0
  245. package/dist/runtime/components/SplitterResizeHandle.vue +22 -0
  246. package/dist/runtime/components/SplitterResizeHandle.vue.d.ts +14 -0
  247. package/dist/runtime/components/Stepper.d.vue.ts +57 -0
  248. package/dist/runtime/components/Stepper.vue +101 -0
  249. package/dist/runtime/components/Stepper.vue.d.ts +57 -0
  250. package/dist/runtime/components/Switch.d.vue.ts +49 -0
  251. package/dist/runtime/components/Switch.vue +73 -0
  252. package/dist/runtime/components/Switch.vue.d.ts +49 -0
  253. package/dist/runtime/components/Table.d.vue.ts +83 -0
  254. package/dist/runtime/components/Table.vue +339 -0
  255. package/dist/runtime/components/Table.vue.d.ts +83 -0
  256. package/dist/runtime/components/Tabs.d.vue.ts +43 -0
  257. package/dist/runtime/components/Tabs.vue +60 -0
  258. package/dist/runtime/components/Tabs.vue.d.ts +43 -0
  259. package/dist/runtime/components/Textarea.d.vue.ts +45 -0
  260. package/dist/runtime/components/Textarea.vue +110 -0
  261. package/dist/runtime/components/Textarea.vue.d.ts +45 -0
  262. package/dist/runtime/components/Theme.d.vue.ts +19 -0
  263. package/dist/runtime/components/Theme.vue +18 -0
  264. package/dist/runtime/components/Theme.vue.d.ts +19 -0
  265. package/dist/runtime/components/Toast.d.vue.ts +8 -0
  266. package/dist/runtime/components/Toast.vue +58 -0
  267. package/dist/runtime/components/Toast.vue.d.ts +8 -0
  268. package/dist/runtime/components/Toggle.d.vue.ts +38 -0
  269. package/dist/runtime/components/Toggle.vue +44 -0
  270. package/dist/runtime/components/Toggle.vue.d.ts +38 -0
  271. package/dist/runtime/components/ToggleGroup.d.vue.ts +48 -0
  272. package/dist/runtime/components/ToggleGroup.vue +61 -0
  273. package/dist/runtime/components/ToggleGroup.vue.d.ts +48 -0
  274. package/dist/runtime/components/Tooltip.d.vue.ts +28 -0
  275. package/dist/runtime/components/Tooltip.vue +40 -0
  276. package/dist/runtime/components/Tooltip.vue.d.ts +28 -0
  277. package/dist/runtime/components/Tree.d.vue.ts +64 -0
  278. package/dist/runtime/components/Tree.vue +139 -0
  279. package/dist/runtime/components/Tree.vue.d.ts +64 -0
  280. package/dist/runtime/composables/use-combobox-select.d.ts +45 -0
  281. package/dist/runtime/composables/use-combobox-select.js +80 -0
  282. package/dist/runtime/composables/use-command-palette.d.ts +8 -0
  283. package/dist/runtime/composables/use-command-palette.js +14 -0
  284. package/dist/runtime/composables/use-drawer.d.ts +42 -0
  285. package/dist/runtime/composables/use-drawer.js +44 -0
  286. package/dist/runtime/composables/use-form-field.d.ts +10 -0
  287. package/dist/runtime/composables/use-form-field.js +8 -0
  288. package/dist/runtime/composables/use-icons.d.ts +10 -0
  289. package/dist/runtime/composables/use-icons.js +7 -0
  290. package/dist/runtime/composables/use-locale.d.ts +12 -0
  291. package/dist/runtime/composables/use-locale.js +6 -0
  292. package/dist/runtime/composables/use-media-query.d.ts +11 -0
  293. package/dist/runtime/composables/use-media-query.js +15 -0
  294. package/dist/runtime/composables/use-messages.d.ts +12 -0
  295. package/dist/runtime/composables/use-messages.js +7 -0
  296. package/dist/runtime/composables/use-modal.d.ts +32 -0
  297. package/dist/runtime/composables/use-modal.js +39 -0
  298. package/dist/runtime/composables/use-ripple.d.ts +15 -0
  299. package/dist/runtime/composables/use-ripple.js +6 -0
  300. package/dist/runtime/composables/use-slideover.d.ts +36 -0
  301. package/dist/runtime/composables/use-slideover.js +41 -0
  302. package/dist/runtime/composables/use-table.d.ts +63 -0
  303. package/dist/runtime/composables/use-table.js +142 -0
  304. package/dist/runtime/composables/use-toast.d.ts +15 -0
  305. package/dist/runtime/composables/use-toast.js +16 -0
  306. package/dist/runtime/directives/index.d.ts +1 -0
  307. package/dist/runtime/directives/index.js +1 -0
  308. package/dist/runtime/directives/ripple.d.ts +16 -0
  309. package/dist/runtime/directives/ripple.js +80 -0
  310. package/dist/runtime/internal/ColorPickerBody.d.vue.ts +26 -0
  311. package/dist/runtime/internal/ColorPickerBody.vue +111 -0
  312. package/dist/runtime/internal/ColorPickerBody.vue.d.ts +26 -0
  313. package/dist/runtime/internal/ComboboxSelectBase.d.vue.ts +122 -0
  314. package/dist/runtime/internal/ComboboxSelectBase.vue +590 -0
  315. package/dist/runtime/internal/ComboboxSelectBase.vue.d.ts +122 -0
  316. package/dist/runtime/internal/ComboboxSelectBody.d.vue.ts +71 -0
  317. package/dist/runtime/internal/ComboboxSelectBody.vue +146 -0
  318. package/dist/runtime/internal/ComboboxSelectBody.vue.d.ts +71 -0
  319. package/dist/runtime/internal/DatePickerCalendarBody.d.vue.ts +71 -0
  320. package/dist/runtime/internal/DatePickerCalendarBody.vue +215 -0
  321. package/dist/runtime/internal/DatePickerCalendarBody.vue.d.ts +71 -0
  322. package/dist/runtime/internal/DatePickerRangeCalendarBody.d.vue.ts +37 -0
  323. package/dist/runtime/internal/DatePickerRangeCalendarBody.vue +96 -0
  324. package/dist/runtime/internal/DatePickerRangeCalendarBody.vue.d.ts +37 -0
  325. package/dist/runtime/internal/DatePickerTimeBody.d.vue.ts +33 -0
  326. package/dist/runtime/internal/DatePickerTimeBody.vue +53 -0
  327. package/dist/runtime/internal/DatePickerTimeBody.vue.d.ts +33 -0
  328. package/dist/runtime/internal/TimeStepper.d.vue.ts +28 -0
  329. package/dist/runtime/internal/TimeStepper.vue +99 -0
  330. package/dist/runtime/internal/TimeStepper.vue.d.ts +28 -0
  331. package/dist/runtime/prose.css +1 -0
  332. package/dist/runtime/server/tsconfig.json +3 -0
  333. package/dist/runtime/theme/accordion.d.ts +131 -0
  334. package/dist/runtime/theme/accordion.js +60 -0
  335. package/dist/runtime/theme/alert-dialog.d.ts +50 -0
  336. package/dist/runtime/theme/alert-dialog.js +30 -0
  337. package/dist/runtime/theme/alert.d.ts +62 -0
  338. package/dist/runtime/theme/alert.js +52 -0
  339. package/dist/runtime/theme/avatar-group.d.ts +59 -0
  340. package/dist/runtime/theme/avatar-group.js +18 -0
  341. package/dist/runtime/theme/avatar.d.ts +206 -0
  342. package/dist/runtime/theme/avatar.js +67 -0
  343. package/dist/runtime/theme/badge.d.ts +140 -0
  344. package/dist/runtime/theme/badge.js +90 -0
  345. package/dist/runtime/theme/breadcrumb.d.ts +86 -0
  346. package/dist/runtime/theme/breadcrumb.js +22 -0
  347. package/dist/runtime/theme/button-group.d.ts +53 -0
  348. package/dist/runtime/theme/button-group.js +21 -0
  349. package/dist/runtime/theme/button.d.ts +155 -0
  350. package/dist/runtime/theme/button.js +99 -0
  351. package/dist/runtime/theme/callout.d.ts +74 -0
  352. package/dist/runtime/theme/callout.js +23 -0
  353. package/dist/runtime/theme/card-group.d.ts +44 -0
  354. package/dist/runtime/theme/card-group.js +19 -0
  355. package/dist/runtime/theme/card.d.ts +62 -0
  356. package/dist/runtime/theme/card.js +23 -0
  357. package/dist/runtime/theme/checkbox.d.ts +218 -0
  358. package/dist/runtime/theme/checkbox.js +113 -0
  359. package/dist/runtime/theme/chip.d.ts +155 -0
  360. package/dist/runtime/theme/chip.js +86 -0
  361. package/dist/runtime/theme/code-button.d.ts +32 -0
  362. package/dist/runtime/theme/code-button.js +7 -0
  363. package/dist/runtime/theme/code-tree.d.ts +50 -0
  364. package/dist/runtime/theme/code-tree.js +13 -0
  365. package/dist/runtime/theme/collapsible.d.ts +95 -0
  366. package/dist/runtime/theme/collapsible.js +46 -0
  367. package/dist/runtime/theme/color-picker.d.ts +152 -0
  368. package/dist/runtime/theme/color-picker.js +83 -0
  369. package/dist/runtime/theme/command-palette.d.ts +110 -0
  370. package/dist/runtime/theme/command-palette.js +23 -0
  371. package/dist/runtime/theme/container.d.ts +62 -0
  372. package/dist/runtime/theme/container.js +18 -0
  373. package/dist/runtime/theme/content-navigation.d.ts +47 -0
  374. package/dist/runtime/theme/content-navigation.js +38 -0
  375. package/dist/runtime/theme/content-surround.d.ts +53 -0
  376. package/dist/runtime/theme/content-surround.js +22 -0
  377. package/dist/runtime/theme/content-toc.d.ts +56 -0
  378. package/dist/runtime/theme/content-toc.js +41 -0
  379. package/dist/runtime/theme/context-menu.d.ts +38 -0
  380. package/dist/runtime/theme/context-menu.js +21 -0
  381. package/dist/runtime/theme/dashboard-group.d.ts +26 -0
  382. package/dist/runtime/theme/dashboard-group.js +9 -0
  383. package/dist/runtime/theme/dashboard-navbar.d.ts +44 -0
  384. package/dist/runtime/theme/dashboard-navbar.js +9 -0
  385. package/dist/runtime/theme/dashboard-panel.d.ts +26 -0
  386. package/dist/runtime/theme/dashboard-panel.js +6 -0
  387. package/dist/runtime/theme/dashboard-resize-handle.d.ts +26 -0
  388. package/dist/runtime/theme/dashboard-resize-handle.js +17 -0
  389. package/dist/runtime/theme/dashboard-sidebar.d.ts +50 -0
  390. package/dist/runtime/theme/dashboard-sidebar.js +40 -0
  391. package/dist/runtime/theme/date-picker.d.ts +119 -0
  392. package/dist/runtime/theme/date-picker.js +75 -0
  393. package/dist/runtime/theme/drawer.d.ts +95 -0
  394. package/dist/runtime/theme/drawer.js +57 -0
  395. package/dist/runtime/theme/dropdown.d.ts +41 -0
  396. package/dist/runtime/theme/dropdown.js +21 -0
  397. package/dist/runtime/theme/file-tree.d.ts +56 -0
  398. package/dist/runtime/theme/file-tree.js +33 -0
  399. package/dist/runtime/theme/file-upload.d.ts +233 -0
  400. package/dist/runtime/theme/file-upload.js +63 -0
  401. package/dist/runtime/theme/form-field.d.ts +95 -0
  402. package/dist/runtime/theme/form-field.js +37 -0
  403. package/dist/runtime/theme/header.d.ts +38 -0
  404. package/dist/runtime/theme/header.js +8 -0
  405. package/dist/runtime/theme/icon.d.ts +80 -0
  406. package/dist/runtime/theme/icon.js +26 -0
  407. package/dist/runtime/theme/input-group.d.ts +95 -0
  408. package/dist/runtime/theme/input-group.js +39 -0
  409. package/dist/runtime/theme/input-number.d.ts +164 -0
  410. package/dist/runtime/theme/input-number.js +76 -0
  411. package/dist/runtime/theme/input.d.ts +185 -0
  412. package/dist/runtime/theme/input.js +72 -0
  413. package/dist/runtime/theme/kbd.d.ts +44 -0
  414. package/dist/runtime/theme/kbd.js +16 -0
  415. package/dist/runtime/theme/modal.d.ts +74 -0
  416. package/dist/runtime/theme/modal.js +58 -0
  417. package/dist/runtime/theme/navigation-menu.d.ts +224 -0
  418. package/dist/runtime/theme/navigation-menu.js +232 -0
  419. package/dist/runtime/theme/page-aside.d.ts +44 -0
  420. package/dist/runtime/theme/page-aside.js +17 -0
  421. package/dist/runtime/theme/page-header.d.ts +38 -0
  422. package/dist/runtime/theme/page-header.js +8 -0
  423. package/dist/runtime/theme/pagination.d.ts +68 -0
  424. package/dist/runtime/theme/pagination.js +21 -0
  425. package/dist/runtime/theme/pin-input.d.ts +131 -0
  426. package/dist/runtime/theme/pin-input.js +40 -0
  427. package/dist/runtime/theme/popover.d.ts +32 -0
  428. package/dist/runtime/theme/popover.js +7 -0
  429. package/dist/runtime/theme/progress.d.ts +185 -0
  430. package/dist/runtime/theme/progress.js +54 -0
  431. package/dist/runtime/theme/prose.d.ts +92 -0
  432. package/dist/runtime/theme/prose.js +17 -0
  433. package/dist/runtime/theme/radio-group.d.ts +239 -0
  434. package/dist/runtime/theme/radio-group.js +134 -0
  435. package/dist/runtime/theme/rating.d.ts +167 -0
  436. package/dist/runtime/theme/rating.js +77 -0
  437. package/dist/runtime/theme/read-more.d.ts +38 -0
  438. package/dist/runtime/theme/read-more.js +21 -0
  439. package/dist/runtime/theme/scroll-area.d.ts +50 -0
  440. package/dist/runtime/theme/scroll-area.js +10 -0
  441. package/dist/runtime/theme/select.d.ts +176 -0
  442. package/dist/runtime/theme/select.js +74 -0
  443. package/dist/runtime/theme/separator.d.ts +158 -0
  444. package/dist/runtime/theme/separator.js +63 -0
  445. package/dist/runtime/theme/skeleton.d.ts +35 -0
  446. package/dist/runtime/theme/skeleton.js +27 -0
  447. package/dist/runtime/theme/slideover.d.ts +107 -0
  448. package/dist/runtime/theme/slideover.js +62 -0
  449. package/dist/runtime/theme/slider.d.ts +227 -0
  450. package/dist/runtime/theme/slider.js +73 -0
  451. package/dist/runtime/theme/splitter-panel.d.ts +26 -0
  452. package/dist/runtime/theme/splitter-panel.js +9 -0
  453. package/dist/runtime/theme/splitter-resize-handle.d.ts +44 -0
  454. package/dist/runtime/theme/splitter-resize-handle.js +18 -0
  455. package/dist/runtime/theme/splitter.d.ts +35 -0
  456. package/dist/runtime/theme/splitter.js +15 -0
  457. package/dist/runtime/theme/stepper.d.ts +221 -0
  458. package/dist/runtime/theme/stepper.js +106 -0
  459. package/dist/runtime/theme/switch.d.ts +206 -0
  460. package/dist/runtime/theme/switch.js +84 -0
  461. package/dist/runtime/theme/table.d.ts +176 -0
  462. package/dist/runtime/theme/table.js +59 -0
  463. package/dist/runtime/theme/tabs.d.ts +59 -0
  464. package/dist/runtime/theme/tabs.js +44 -0
  465. package/dist/runtime/theme/textarea.d.ts +212 -0
  466. package/dist/runtime/theme/textarea.js +56 -0
  467. package/dist/runtime/theme/toast.d.ts +80 -0
  468. package/dist/runtime/theme/toast.js +31 -0
  469. package/dist/runtime/theme/toggle-group.d.ts +110 -0
  470. package/dist/runtime/theme/toggle-group.js +48 -0
  471. package/dist/runtime/theme/toggle.d.ts +92 -0
  472. package/dist/runtime/theme/toggle.js +48 -0
  473. package/dist/runtime/theme/tooltip.d.ts +44 -0
  474. package/dist/runtime/theme/tooltip.js +14 -0
  475. package/dist/runtime/theme/tree.d.ts +80 -0
  476. package/dist/runtime/theme/tree.js +32 -0
  477. package/dist/runtime/theme.css +1 -0
  478. package/dist/runtime/types/app-config.d.ts +15 -0
  479. package/dist/runtime/types/index.d.ts +82 -0
  480. package/dist/runtime/types/index.js +2 -0
  481. package/dist/runtime/utils/format-bytes.d.ts +2 -0
  482. package/dist/runtime/utils/format-bytes.js +9 -0
  483. package/dist/runtime/utils/fuzzy-match.d.ts +12 -0
  484. package/dist/runtime/utils/fuzzy-match.js +21 -0
  485. package/dist/runtime/utils/icons.d.ts +38 -0
  486. package/dist/runtime/utils/icons.js +51 -0
  487. package/dist/runtime/utils/injection-keys.d.ts +69 -0
  488. package/dist/runtime/utils/injection-keys.js +3 -0
  489. package/dist/runtime/utils/messages.d.ts +70 -0
  490. package/dist/runtime/utils/messages.js +68 -0
  491. package/dist/runtime/utils/navigation-menu.d.ts +32 -0
  492. package/dist/runtime/utils/navigation-menu.js +5 -0
  493. package/dist/runtime/utils/table-columns.d.ts +30 -0
  494. package/dist/runtime/utils/table-columns.js +89 -0
  495. package/dist/runtime/utils/table-export.d.ts +12 -0
  496. package/dist/runtime/utils/table-export.js +29 -0
  497. package/dist/runtime/utils/ui.d.ts +124 -0
  498. package/dist/runtime/utils/ui.js +74 -0
  499. package/dist/types.d.mts +3 -0
  500. package/package.json +99 -0
@@ -0,0 +1,28 @@
1
+ import type { FileTreeThemeSlots } from '../theme/file-tree.js';
2
+ import type { UiProp } from '../utils/ui.js';
3
+ export interface FileTreeNode {
4
+ name: string;
5
+ /** A node with children renders as a directory, one without as a file - the same convention ContentNavigation's own tree uses. */
6
+ children?: FileTreeNode[];
7
+ icon?: string;
8
+ }
9
+ export interface FileTreeProps {
10
+ items: FileTreeNode[];
11
+ /** The currently selected file, by reference - highlights its row. */
12
+ selected?: FileTreeNode;
13
+ /** Whether a directory starts expanded. @default true */
14
+ defaultExpanded?: boolean;
15
+ /** Internal - true for a recursive call rendering a directory's children, skipping the outer box. */
16
+ isNested?: boolean;
17
+ ui?: UiProp<FileTreeThemeSlots>;
18
+ }
19
+ export interface FileTreeEmits {
20
+ 'update:selected': [node: FileTreeNode];
21
+ }
22
+ declare const __VLS_export: import("vue").DefineComponent<FileTreeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
23
+ "update:selected": (node: FileTreeNode) => any;
24
+ }, string, import("vue").PublicProps, Readonly<FileTreeProps> & Readonly<{
25
+ "onUpdate:selected"?: ((node: FileTreeNode) => any) | undefined;
26
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
+ declare const _default: typeof __VLS_export;
28
+ export default _default;
@@ -0,0 +1,68 @@
1
+ <script setup>
2
+ import { computed, ref } from "vue";
3
+ import { useIcons } from "../composables/use-icons";
4
+ import { fileTreeTheme } from "../theme/file-tree";
5
+ import { resolveSlot, useComponentTheme, useRootProps } from "../utils/ui";
6
+ import Icon from "./Icon.vue";
7
+ defineOptions({ inheritAttrs: false });
8
+ const props = defineProps({
9
+ items: { type: Array, required: true },
10
+ selected: { type: Object, required: false },
11
+ defaultExpanded: { type: Boolean, required: false, default: true },
12
+ isNested: { type: Boolean, required: false, default: false },
13
+ ui: { type: Object, required: false }
14
+ });
15
+ const emit = defineEmits(["update:selected"]);
16
+ const icons = useIcons();
17
+ const expanded = ref(new Set(props.defaultExpanded ? props.items.flatMap((node, index) => node.children ? [index] : []) : []));
18
+ function isExpanded(index) {
19
+ return expanded.value.has(index);
20
+ }
21
+ function toggle(index) {
22
+ const next = new Set(expanded.value);
23
+ if (next.has(index))
24
+ next.delete(index);
25
+ else
26
+ next.add(index);
27
+ expanded.value = next;
28
+ }
29
+ function selectFile(node) {
30
+ emit("update:selected", node);
31
+ }
32
+ function iconFor(node, index) {
33
+ if (node.icon)
34
+ return node.icon;
35
+ if (!node.children)
36
+ return icons.value.file;
37
+ return isExpanded(index) ? icons.value.folderOpen : icons.value.folder;
38
+ }
39
+ const theme = useComponentTheme("fileTree", fileTreeTheme);
40
+ const ui = computed(() => theme.value({ isNested: props.isNested }));
41
+ const rootProps = useRootProps(() => props.isNested ? ui.value.list : ui.value.root, () => props.isNested ? props.ui?.list : props.ui?.root);
42
+ const itemProps = computed(() => resolveSlot(ui.value.item, props.ui?.item));
43
+ const iconProps = computed(() => resolveSlot(ui.value.icon, props.ui?.icon));
44
+ const labelProps = computed(() => resolveSlot(ui.value.label, props.ui?.label));
45
+ function rowProps(node) {
46
+ return resolveSlot(theme.value({ selected: props.selected === node }).row, props.ui?.row);
47
+ }
48
+ </script>
49
+
50
+ <template>
51
+ <ul v-bind="rootProps">
52
+ <li v-for="(node, index) in items" :key="node.name" v-bind="itemProps">
53
+ <button type="button" v-bind="rowProps(node)" @click="node.children ? toggle(index) : selectFile(node)">
54
+ <Icon :name="iconFor(node, index)" v-bind="iconProps" />
55
+ <span v-bind="labelProps">{{ node.name }}</span>
56
+ </button>
57
+ <FileTree
58
+ v-if="node.children && isExpanded(index)"
59
+ :items="node.children"
60
+ is-nested
61
+ :selected="selected"
62
+ :default-expanded="defaultExpanded"
63
+ :ui="props.ui"
64
+ @update:selected="emit('update:selected', $event)"
65
+ />
66
+ </li>
67
+ </ul>
68
+ </template>
@@ -0,0 +1,28 @@
1
+ import type { FileTreeThemeSlots } from '../theme/file-tree.js';
2
+ import type { UiProp } from '../utils/ui.js';
3
+ export interface FileTreeNode {
4
+ name: string;
5
+ /** A node with children renders as a directory, one without as a file - the same convention ContentNavigation's own tree uses. */
6
+ children?: FileTreeNode[];
7
+ icon?: string;
8
+ }
9
+ export interface FileTreeProps {
10
+ items: FileTreeNode[];
11
+ /** The currently selected file, by reference - highlights its row. */
12
+ selected?: FileTreeNode;
13
+ /** Whether a directory starts expanded. @default true */
14
+ defaultExpanded?: boolean;
15
+ /** Internal - true for a recursive call rendering a directory's children, skipping the outer box. */
16
+ isNested?: boolean;
17
+ ui?: UiProp<FileTreeThemeSlots>;
18
+ }
19
+ export interface FileTreeEmits {
20
+ 'update:selected': [node: FileTreeNode];
21
+ }
22
+ declare const __VLS_export: import("vue").DefineComponent<FileTreeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
23
+ "update:selected": (node: FileTreeNode) => any;
24
+ }, string, import("vue").PublicProps, Readonly<FileTreeProps> & Readonly<{
25
+ "onUpdate:selected"?: ((node: FileTreeNode) => any) | undefined;
26
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
+ declare const _default: typeof __VLS_export;
28
+ export default _default;
@@ -0,0 +1,68 @@
1
+ import type { VariantProps } from 'tailwind-variants';
2
+ import type { FileUploadThemeSlots } from '../theme/file-upload.js';
3
+ import type { UiProp } from '../utils/ui.js';
4
+ import { fileUploadTheme } from '../theme/file-upload.js';
5
+ type FileUploadVariants = VariantProps<typeof fileUploadTheme>;
6
+ type __VLS_Slots = FileUploadSlots;
7
+ export interface FileUploadProps {
8
+ id?: string;
9
+ modelValue?: File[];
10
+ /** Comma-separated MIME types/wildcards (`image/*`) or extensions (`.pdf`) - applied to both the native file dialog and dropped files (drops bypass the dialog's own filtering entirely). */
11
+ accept?: string;
12
+ /** @default false */
13
+ multiple?: boolean;
14
+ /** Only meaningful with `multiple` - excess files beyond this count are rejected, not silently dropped. */
15
+ maxFiles?: number;
16
+ /** Bytes. */
17
+ maxSize?: number;
18
+ /** Shows an image thumbnail (an object URL) for image files. @default true */
19
+ preview?: boolean;
20
+ disabled?: boolean;
21
+ invalid?: boolean;
22
+ size?: FileUploadVariants['size'];
23
+ color?: FileUploadVariants['color'];
24
+ name?: string;
25
+ required?: boolean;
26
+ ui?: UiProp<FileUploadThemeSlots>;
27
+ }
28
+ export interface FileUploadEmits {
29
+ 'update:modelValue': [value: File[]];
30
+ /** Fires whenever one or more files are rejected (wrong type, too large, or the count limit was hit) - one reason per rejected file. */
31
+ 'error': [errors: {
32
+ file: File;
33
+ reason: string;
34
+ }[]];
35
+ }
36
+ export interface FileUploadSlots {
37
+ /** Replaces the dropzone's own default icon/label/description content. */
38
+ default?: (props: {
39
+ isDragging: boolean;
40
+ }) => any;
41
+ /** Replaces one file row's content. */
42
+ file?: (props: {
43
+ file: File;
44
+ index: number;
45
+ remove: () => void;
46
+ }) => any;
47
+ }
48
+ declare const __VLS_base: import("vue").DefineComponent<FileUploadProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
49
+ error: (errors: {
50
+ file: File;
51
+ reason: string;
52
+ }[]) => any;
53
+ "update:modelValue": (value: File[]) => any;
54
+ }, string, import("vue").PublicProps, Readonly<FileUploadProps> & Readonly<{
55
+ onError?: ((errors: {
56
+ file: File;
57
+ reason: string;
58
+ }[]) => any) | undefined;
59
+ "onUpdate:modelValue"?: ((value: File[]) => any) | undefined;
60
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
61
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
62
+ declare const _default: typeof __VLS_export;
63
+ export default _default;
64
+ type __VLS_WithSlots<T, S> = T & {
65
+ new (): {
66
+ $slots: S;
67
+ };
68
+ };
@@ -0,0 +1,226 @@
1
+ <script setup>
2
+ import { computed, ref, watch } from "vue";
3
+ import { useFormField } from "../composables/use-form-field";
4
+ import { useIcons } from "../composables/use-icons";
5
+ import { useLocale } from "../composables/use-locale";
6
+ import { useMessages } from "../composables/use-messages";
7
+ import { fileUploadTheme } from "../theme/file-upload";
8
+ import { formatBytes } from "../utils/format-bytes";
9
+ import { resolveSlot, useComponentTheme, useRootProps } from "../utils/ui";
10
+ import Button from "./Button.vue";
11
+ import Icon from "./Icon.vue";
12
+ defineOptions({ inheritAttrs: false });
13
+ const props = defineProps({
14
+ id: { type: String, required: false },
15
+ modelValue: { type: Array, required: false },
16
+ accept: { type: String, required: false },
17
+ multiple: { type: Boolean, required: false },
18
+ maxFiles: { type: Number, required: false },
19
+ maxSize: { type: Number, required: false },
20
+ preview: { type: Boolean, required: false, default: true },
21
+ disabled: { type: Boolean, required: false },
22
+ invalid: { type: Boolean, required: false },
23
+ size: { type: null, required: false },
24
+ color: { type: null, required: false },
25
+ name: { type: String, required: false },
26
+ required: { type: Boolean, required: false },
27
+ ui: { type: Object, required: false }
28
+ });
29
+ const emit = defineEmits(["update:modelValue", "error"]);
30
+ defineSlots();
31
+ const field = useFormField();
32
+ const fileUploadId = computed(() => props.id ?? field?.id);
33
+ const fileUploadInvalid = computed(() => props.invalid || (field?.invalid.value ?? false));
34
+ const effectiveSize = computed(() => props.size ?? field?.size ?? "md");
35
+ const describedBy = computed(() => field?.describedBy.value);
36
+ const icons = useIcons();
37
+ const messages = useMessages();
38
+ const effectiveLocale = useLocale();
39
+ const internalFiles = ref(props.modelValue ?? []);
40
+ watch(() => props.modelValue, (value) => {
41
+ if (value !== void 0)
42
+ internalFiles.value = value;
43
+ });
44
+ const isDragging = ref(false);
45
+ const dropzoneEl = ref();
46
+ const inputEl = ref();
47
+ const previewUrls = /* @__PURE__ */ new WeakMap();
48
+ function previewUrlFor(file) {
49
+ if (!props.preview || !file.type.startsWith("image/"))
50
+ return void 0;
51
+ let url = previewUrls.get(file);
52
+ if (!url) {
53
+ url = URL.createObjectURL(file);
54
+ previewUrls.set(file, url);
55
+ }
56
+ return url;
57
+ }
58
+ function revokePreview(file) {
59
+ const url = previewUrls.get(file);
60
+ if (url) {
61
+ URL.revokeObjectURL(url);
62
+ previewUrls.delete(file);
63
+ }
64
+ }
65
+ function matchesAccept(file, accept) {
66
+ return accept.split(",").map((p) => p.trim()).filter(Boolean).some((pattern) => {
67
+ if (pattern.startsWith("."))
68
+ return file.name.toLowerCase().endsWith(pattern.toLowerCase());
69
+ if (pattern.endsWith("/*"))
70
+ return file.type.startsWith(pattern.slice(0, -1));
71
+ return file.type === pattern;
72
+ });
73
+ }
74
+ function validate(file, acceptedSoFar) {
75
+ if (props.accept && !matchesAccept(file, props.accept))
76
+ return messages.value.invalidFileType(file.name);
77
+ if (props.maxSize && file.size > props.maxSize)
78
+ return messages.value.invalidFileSize(file.name, formatBytes(props.maxSize, effectiveLocale.value));
79
+ if (props.multiple && props.maxFiles && internalFiles.value.length + acceptedSoFar >= props.maxFiles)
80
+ return messages.value.tooManyFiles(props.maxFiles);
81
+ return void 0;
82
+ }
83
+ function processFiles(fileList) {
84
+ if (props.disabled)
85
+ return;
86
+ const incoming = Array.from(fileList);
87
+ const accepted = [];
88
+ const errors = [];
89
+ for (const file of incoming) {
90
+ const reason = validate(file, accepted.length);
91
+ if (reason)
92
+ errors.push({ file, reason });
93
+ else
94
+ accepted.push(file);
95
+ }
96
+ if (accepted.length) {
97
+ const next = props.multiple ? [...internalFiles.value, ...accepted] : accepted.slice(0, 1);
98
+ internalFiles.value = next;
99
+ emit("update:modelValue", next);
100
+ }
101
+ if (errors.length)
102
+ emit("error", errors);
103
+ }
104
+ function openDialog() {
105
+ if (!props.disabled)
106
+ inputEl.value?.click();
107
+ }
108
+ function onInputChange(event) {
109
+ const target = event.target;
110
+ if (target.files?.length)
111
+ processFiles(target.files);
112
+ target.value = "";
113
+ }
114
+ function onDragEnter(event) {
115
+ event.preventDefault();
116
+ if (!props.disabled)
117
+ isDragging.value = true;
118
+ }
119
+ function onDragOver(event) {
120
+ event.preventDefault();
121
+ }
122
+ function onDragLeave(event) {
123
+ const related = event.relatedTarget;
124
+ if (!related || !dropzoneEl.value?.contains(related))
125
+ isDragging.value = false;
126
+ }
127
+ function onDrop(event) {
128
+ event.preventDefault();
129
+ isDragging.value = false;
130
+ if (event.dataTransfer?.files.length)
131
+ processFiles(event.dataTransfer.files);
132
+ }
133
+ function removeFile(index) {
134
+ const file = internalFiles.value[index];
135
+ if (file)
136
+ revokePreview(file);
137
+ const next = internalFiles.value.filter((_, i) => i !== index);
138
+ internalFiles.value = next;
139
+ emit("update:modelValue", next);
140
+ }
141
+ const theme = useComponentTheme("fileUpload", fileUploadTheme);
142
+ const ui = computed(() => theme.value({
143
+ size: effectiveSize.value,
144
+ color: props.color,
145
+ invalid: fileUploadInvalid.value
146
+ }));
147
+ const rootProps = useRootProps(() => ui.value.root, () => props.ui?.root);
148
+ const dropzoneProps = computed(() => resolveSlot(ui.value.dropzone, props.ui?.dropzone));
149
+ const iconProps = computed(() => resolveSlot(ui.value.icon, props.ui?.icon));
150
+ const labelProps = computed(() => resolveSlot(ui.value.label, props.ui?.label));
151
+ const descriptionProps = computed(() => resolveSlot(ui.value.description, props.ui?.description));
152
+ const inputProps = computed(() => resolveSlot(ui.value.input, props.ui?.input));
153
+ const fileListProps = computed(() => resolveSlot(ui.value.fileList, props.ui?.fileList));
154
+ const fileProps = computed(() => resolveSlot(ui.value.file, props.ui?.file));
155
+ const fileThumbnailProps = computed(() => resolveSlot(ui.value.fileThumbnail, props.ui?.fileThumbnail));
156
+ const fileIconProps = computed(() => resolveSlot(ui.value.fileIcon, props.ui?.fileIcon));
157
+ const fileInfoProps = computed(() => resolveSlot(ui.value.fileInfo, props.ui?.fileInfo));
158
+ const fileNameProps = computed(() => resolveSlot(ui.value.fileName, props.ui?.fileName));
159
+ const fileSizeProps = computed(() => resolveSlot(ui.value.fileSize, props.ui?.fileSize));
160
+ const fileRemoveProps = computed(() => resolveSlot(ui.value.fileRemove, props.ui?.fileRemove));
161
+ const removeButtonSize = computed(() => ({ sm: "sm", md: "sm", lg: "md" })[effectiveSize.value]);
162
+ </script>
163
+
164
+ <template>
165
+ <div v-bind="rootProps">
166
+ <button
167
+ ref="dropzoneEl"
168
+ type="button"
169
+ :disabled="disabled"
170
+ :data-dragging="isDragging ? '' : void 0"
171
+ v-bind="dropzoneProps"
172
+ @click="openDialog"
173
+ @dragenter="onDragEnter"
174
+ @dragover="onDragOver"
175
+ @dragleave="onDragLeave"
176
+ @drop="onDrop"
177
+ >
178
+ <slot :is-dragging="isDragging">
179
+ <Icon :name="icons.upload" v-bind="iconProps" />
180
+ <span v-bind="labelProps">{{ messages.dropFiles }}</span>
181
+ <span v-if="accept || maxSize" v-bind="descriptionProps">
182
+ <template v-if="accept">{{ accept }}</template>
183
+ <template v-if="accept && maxSize"> · </template>
184
+ <template v-if="maxSize">{{ messages.upToSize(formatBytes(maxSize, effectiveLocale)) }}</template>
185
+ </span>
186
+ </slot>
187
+ <input
188
+ :id="fileUploadId"
189
+ ref="inputEl"
190
+ type="file"
191
+ :accept="accept"
192
+ :multiple="multiple"
193
+ :disabled="disabled"
194
+ :name="name ?? field?.name"
195
+ :required="required"
196
+ :aria-invalid="fileUploadInvalid || void 0"
197
+ :aria-describedby="describedBy"
198
+ tabindex="-1"
199
+ v-bind="inputProps"
200
+ @click.stop
201
+ @change="onInputChange"
202
+ >
203
+ </button>
204
+ <ul v-if="internalFiles.length" v-bind="fileListProps">
205
+ <li v-for="(file, index) in internalFiles" :key="index" v-bind="fileProps">
206
+ <slot name="file" :file="file" :index="index" :remove="() => removeFile(index)">
207
+ <img v-if="previewUrlFor(file)" :src="previewUrlFor(file)" :alt="file.name" v-bind="fileThumbnailProps">
208
+ <Icon v-else :name="icons.file" v-bind="fileIconProps" />
209
+ <span v-bind="fileInfoProps">
210
+ <span v-bind="fileNameProps">{{ file.name }}</span>
211
+ <span v-bind="fileSizeProps">{{ formatBytes(file.size, effectiveLocale) }}</span>
212
+ </span>
213
+ <Button
214
+ :size="removeButtonSize"
215
+ variant="text"
216
+ color="neutral"
217
+ :icon="icons.close"
218
+ :aria-label="messages.removeItem(file.name)"
219
+ v-bind="fileRemoveProps"
220
+ @click="removeFile(index)"
221
+ />
222
+ </slot>
223
+ </li>
224
+ </ul>
225
+ </div>
226
+ </template>
@@ -0,0 +1,68 @@
1
+ import type { VariantProps } from 'tailwind-variants';
2
+ import type { FileUploadThemeSlots } from '../theme/file-upload.js';
3
+ import type { UiProp } from '../utils/ui.js';
4
+ import { fileUploadTheme } from '../theme/file-upload.js';
5
+ type FileUploadVariants = VariantProps<typeof fileUploadTheme>;
6
+ type __VLS_Slots = FileUploadSlots;
7
+ export interface FileUploadProps {
8
+ id?: string;
9
+ modelValue?: File[];
10
+ /** Comma-separated MIME types/wildcards (`image/*`) or extensions (`.pdf`) - applied to both the native file dialog and dropped files (drops bypass the dialog's own filtering entirely). */
11
+ accept?: string;
12
+ /** @default false */
13
+ multiple?: boolean;
14
+ /** Only meaningful with `multiple` - excess files beyond this count are rejected, not silently dropped. */
15
+ maxFiles?: number;
16
+ /** Bytes. */
17
+ maxSize?: number;
18
+ /** Shows an image thumbnail (an object URL) for image files. @default true */
19
+ preview?: boolean;
20
+ disabled?: boolean;
21
+ invalid?: boolean;
22
+ size?: FileUploadVariants['size'];
23
+ color?: FileUploadVariants['color'];
24
+ name?: string;
25
+ required?: boolean;
26
+ ui?: UiProp<FileUploadThemeSlots>;
27
+ }
28
+ export interface FileUploadEmits {
29
+ 'update:modelValue': [value: File[]];
30
+ /** Fires whenever one or more files are rejected (wrong type, too large, or the count limit was hit) - one reason per rejected file. */
31
+ 'error': [errors: {
32
+ file: File;
33
+ reason: string;
34
+ }[]];
35
+ }
36
+ export interface FileUploadSlots {
37
+ /** Replaces the dropzone's own default icon/label/description content. */
38
+ default?: (props: {
39
+ isDragging: boolean;
40
+ }) => any;
41
+ /** Replaces one file row's content. */
42
+ file?: (props: {
43
+ file: File;
44
+ index: number;
45
+ remove: () => void;
46
+ }) => any;
47
+ }
48
+ declare const __VLS_base: import("vue").DefineComponent<FileUploadProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
49
+ error: (errors: {
50
+ file: File;
51
+ reason: string;
52
+ }[]) => any;
53
+ "update:modelValue": (value: File[]) => any;
54
+ }, string, import("vue").PublicProps, Readonly<FileUploadProps> & Readonly<{
55
+ onError?: ((errors: {
56
+ file: File;
57
+ reason: string;
58
+ }[]) => any) | undefined;
59
+ "onUpdate:modelValue"?: ((value: File[]) => any) | undefined;
60
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
61
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
62
+ declare const _default: typeof __VLS_export;
63
+ export default _default;
64
+ type __VLS_WithSlots<T, S> = T & {
65
+ new (): {
66
+ $slots: S;
67
+ };
68
+ };
@@ -0,0 +1,37 @@
1
+ import type { VariantProps } from 'tailwind-variants';
2
+ import type { FormFieldThemeSlots } from '../theme/form-field.js';
3
+ import type { UiProp } from '../utils/ui.js';
4
+ import { formFieldTheme } from '../theme/form-field.js';
5
+ type FormFieldVariants = VariantProps<typeof formFieldTheme>;
6
+ export interface FormFieldProps {
7
+ label?: string;
8
+ name?: string;
9
+ /** A second, muted line under the label, before the control - for context the user should read before reaching it (e.g. "We'll use this to send your receipt"). Distinct from `hint`, which sits below the control instead. */
10
+ description?: string;
11
+ hint?: string;
12
+ error?: string | boolean;
13
+ required?: boolean;
14
+ size?: FormFieldVariants['size'];
15
+ /** 'vertical' (default) stacks the label above the control; 'horizontal' places the label beside it, with the control filling the remaining row width. */
16
+ orientation?: FormFieldVariants['orientation'];
17
+ ui?: UiProp<FormFieldThemeSlots>;
18
+ }
19
+ declare var __VLS_1: {}, __VLS_3: {
20
+ id: string;
21
+ invalid: boolean;
22
+ describedBy: string | undefined;
23
+ };
24
+ type __VLS_Slots = {} & {
25
+ description?: (props: typeof __VLS_1) => any;
26
+ } & {
27
+ default?: (props: typeof __VLS_3) => any;
28
+ };
29
+ declare const __VLS_base: import("vue").DefineComponent<FormFieldProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FormFieldProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
31
+ declare const _default: typeof __VLS_export;
32
+ export default _default;
33
+ type __VLS_WithSlots<T, S> = T & {
34
+ new (): {
35
+ $slots: S;
36
+ };
37
+ };
@@ -0,0 +1,72 @@
1
+ <script setup>
2
+ import { computed, useId } from "vue";
3
+ import { provideFormField } from "../composables/use-form-field";
4
+ import { formFieldTheme } from "../theme/form-field";
5
+ import { resolveSlot, useComponentTheme, useRootProps } from "../utils/ui";
6
+ defineOptions({ inheritAttrs: false });
7
+ const props = defineProps({
8
+ label: { type: String, required: false },
9
+ name: { type: String, required: false },
10
+ description: { type: String, required: false },
11
+ hint: { type: String, required: false },
12
+ error: { type: [String, Boolean], required: false },
13
+ required: { type: Boolean, required: false },
14
+ size: { type: null, required: false },
15
+ orientation: { type: null, required: false, default: "vertical" },
16
+ ui: { type: Object, required: false }
17
+ });
18
+ const id = useId();
19
+ const invalid = computed(() => !!props.error);
20
+ const errorMessage = computed(() => typeof props.error === "string" ? props.error : void 0);
21
+ const describedBy = computed(() => {
22
+ if (invalid.value && errorMessage.value)
23
+ return `${id}-error`;
24
+ if (props.hint)
25
+ return `${id}-hint`;
26
+ return void 0;
27
+ });
28
+ provideFormField({
29
+ id,
30
+ name: props.name,
31
+ size: props.size,
32
+ invalid,
33
+ describedBy
34
+ });
35
+ const theme = useComponentTheme("formField", formFieldTheme);
36
+ const ui = computed(() => theme.value({ size: props.size, orientation: props.orientation }));
37
+ const rootProps = useRootProps(() => ui.value.root, () => props.ui?.root);
38
+ const bodyProps = computed(() => resolveSlot(ui.value.body, props.ui?.body));
39
+ const headerProps = computed(() => resolveSlot(ui.value.header, props.ui?.header));
40
+ const labelProps = computed(() => resolveSlot(ui.value.label, props.ui?.label));
41
+ const requiredProps = computed(() => resolveSlot(ui.value.required, props.ui?.required));
42
+ const descriptionProps = computed(() => resolveSlot(ui.value.description, props.ui?.description));
43
+ const containerProps = computed(() => resolveSlot(ui.value.container, props.ui?.container));
44
+ const hintProps = computed(() => resolveSlot(ui.value.hint, props.ui?.hint));
45
+ const errorProps = computed(() => resolveSlot(ui.value.error, props.ui?.error));
46
+ </script>
47
+
48
+ <template>
49
+ <div v-bind="rootProps">
50
+ <div v-bind="bodyProps">
51
+ <div v-bind="headerProps">
52
+ <label v-if="label" :for="id" v-bind="labelProps">
53
+ {{ label }}<span v-if="required" v-bind="requiredProps">*</span>
54
+ </label>
55
+ <p v-if="description" v-bind="descriptionProps">
56
+ <slot name="description">
57
+ {{ description }}
58
+ </slot>
59
+ </p>
60
+ </div>
61
+ <div v-bind="containerProps">
62
+ <slot :id="id" :invalid="invalid" :described-by="describedBy" />
63
+ </div>
64
+ </div>
65
+ <p v-if="invalid && errorMessage" :id="`${id}-error`" role="alert" v-bind="errorProps">
66
+ {{ errorMessage }}
67
+ </p>
68
+ <p v-else-if="hint" :id="`${id}-hint`" v-bind="hintProps">
69
+ {{ hint }}
70
+ </p>
71
+ </div>
72
+ </template>
@@ -0,0 +1,37 @@
1
+ import type { VariantProps } from 'tailwind-variants';
2
+ import type { FormFieldThemeSlots } from '../theme/form-field.js';
3
+ import type { UiProp } from '../utils/ui.js';
4
+ import { formFieldTheme } from '../theme/form-field.js';
5
+ type FormFieldVariants = VariantProps<typeof formFieldTheme>;
6
+ export interface FormFieldProps {
7
+ label?: string;
8
+ name?: string;
9
+ /** A second, muted line under the label, before the control - for context the user should read before reaching it (e.g. "We'll use this to send your receipt"). Distinct from `hint`, which sits below the control instead. */
10
+ description?: string;
11
+ hint?: string;
12
+ error?: string | boolean;
13
+ required?: boolean;
14
+ size?: FormFieldVariants['size'];
15
+ /** 'vertical' (default) stacks the label above the control; 'horizontal' places the label beside it, with the control filling the remaining row width. */
16
+ orientation?: FormFieldVariants['orientation'];
17
+ ui?: UiProp<FormFieldThemeSlots>;
18
+ }
19
+ declare var __VLS_1: {}, __VLS_3: {
20
+ id: string;
21
+ invalid: boolean;
22
+ describedBy: string | undefined;
23
+ };
24
+ type __VLS_Slots = {} & {
25
+ description?: (props: typeof __VLS_1) => any;
26
+ } & {
27
+ default?: (props: typeof __VLS_3) => any;
28
+ };
29
+ declare const __VLS_base: import("vue").DefineComponent<FormFieldProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FormFieldProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
31
+ declare const _default: typeof __VLS_export;
32
+ export default _default;
33
+ type __VLS_WithSlots<T, S> = T & {
34
+ new (): {
35
+ $slots: S;
36
+ };
37
+ };
@@ -0,0 +1,20 @@
1
+ import type { HeaderThemeSlots } from '../theme/header.js';
2
+ import type { UiProp } from '../utils/ui.js';
3
+ export interface HeaderProps {
4
+ ui?: UiProp<HeaderThemeSlots>;
5
+ }
6
+ declare var __VLS_1: {}, __VLS_3: {};
7
+ type __VLS_Slots = {} & {
8
+ default?: (props: typeof __VLS_1) => any;
9
+ } & {
10
+ right?: (props: typeof __VLS_3) => any;
11
+ };
12
+ declare const __VLS_base: import("vue").DefineComponent<HeaderProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<HeaderProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;
16
+ type __VLS_WithSlots<T, S> = T & {
17
+ new (): {
18
+ $slots: S;
19
+ };
20
+ };