@livestorm/ui-vue 1.1.2 → 2.0.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 (399) hide show
  1. package/README.md +164 -32
  2. package/components-vite.js +5 -5
  3. package/components.d.ts +3 -3
  4. package/dist/UiTimelineItem.vue_vue_type_style_index_0_lang-DOLFRKcb.mjs +5565 -0
  5. package/dist/a11y-DIdrv5Mn.mjs +66 -0
  6. package/dist/breakpoints.mjs +9 -0
  7. package/dist/bus.mjs +5 -0
  8. package/dist/components.mjs +213 -1550
  9. package/dist/index.mjs +84 -166
  10. package/dist/integrations.mjs +8 -0
  11. package/dist/layouts.mjs +236 -0
  12. package/dist/responsive.mjs +25 -0
  13. package/dist/slot.mjs +21 -0
  14. package/dist/toastDSV2-wMh-UMzW.mjs +74 -0
  15. package/dist/types/index.d.ts +84 -0
  16. package/dist/types/src/components/Toast/LayoutToasts.vue.d.ts +3 -0
  17. package/dist/types/src/components/Toast/ToastMessage.vue.d.ts +21 -0
  18. package/dist/types/src/components/Toast/toastDSV2.d.ts +102 -0
  19. package/dist/types/src/components/UiActionBar/UiActionBar.vue.d.ts +44 -0
  20. package/dist/types/src/components/UiActionBar/UiActionBarItem.vue.d.ts +47 -0
  21. package/dist/types/src/components/UiActionBar/UiActionBarSeparator.vue.d.ts +3 -0
  22. package/dist/types/src/components/UiActionBar/index.d.ts +4 -0
  23. package/dist/types/src/components/UiActionBar/types.d.ts +14 -0
  24. package/dist/types/src/components/UiAnimatedLogo/UiAnimatedLogo.vue.d.ts +10 -0
  25. package/dist/types/src/components/UiAnimatedLogo/animations-links.d.ts +3 -0
  26. package/dist/types/src/components/UiAvatar/UiAvatar.vue.d.ts +55 -0
  27. package/dist/types/src/components/UiAvatar/index.d.ts +1 -0
  28. package/dist/types/src/components/UiAvatarList/UiAvatarList.vue.d.ts +28 -0
  29. package/dist/types/src/components/UiAvatarList/index.d.ts +1 -0
  30. package/dist/types/src/components/UiBadge/UiBadge.vue.d.ts +47 -0
  31. package/dist/types/src/components/UiBadge/index.d.ts +1 -0
  32. package/dist/types/src/components/UiBanner/UiBanner.vue.d.ts +96 -0
  33. package/dist/types/src/components/UiBanner/index.d.ts +2 -0
  34. package/dist/types/src/components/UiBreadcrumb/UiBreadcrumb.vue.d.ts +15 -0
  35. package/dist/types/src/components/UiBreadcrumb/index.d.ts +2 -0
  36. package/dist/types/src/components/UiButton/UiButton.vue.d.ts +249 -0
  37. package/dist/types/src/components/UiButtonGroup/UiButtonGroup.vue.d.ts +42 -0
  38. package/dist/types/src/components/UiButtonGroup/UiButtonGroupItem.vue.d.ts +21 -0
  39. package/dist/types/src/components/UiButtonGroup/index.d.ts +3 -0
  40. package/dist/types/src/components/UiButtonGroup/types.d.ts +10 -0
  41. package/dist/types/src/components/UiCard/UiCard.vue.d.ts +31 -0
  42. package/dist/types/src/components/UiCarousel/UiCarousel.vue.d.ts +63 -0
  43. package/dist/types/src/components/UiCarousel/index.d.ts +2 -0
  44. package/dist/types/src/components/UiColorField/UiColorField.vue.d.ts +19 -0
  45. package/dist/types/src/components/UiColorField/index.d.ts +2 -0
  46. package/dist/types/src/components/UiColorField/types.d.ts +29 -0
  47. package/dist/types/src/components/UiColorPicker/UiColorPicker.vue.d.ts +35 -0
  48. package/dist/types/src/components/UiColorPicker/index.d.ts +2 -0
  49. package/dist/types/src/components/UiColorPicker/types.d.ts +97 -0
  50. package/dist/types/src/components/UiDialog/MarketplaceHeaderExample.vue.d.ts +28 -0
  51. package/dist/types/src/components/UiDialog/UiDialog.vue.d.ts +18 -0
  52. package/dist/types/src/components/UiDialog/UiDialogClose.vue.d.ts +10 -0
  53. package/dist/types/src/components/UiDialog/UiDialogContent.vue.d.ts +54 -0
  54. package/dist/types/src/components/UiDialog/UiDialogFooter.vue.d.ts +13 -0
  55. package/dist/types/src/components/UiDialog/UiDialogTrigger.vue.d.ts +14 -0
  56. package/dist/types/src/components/UiDialog/index.d.ts +7 -0
  57. package/dist/types/src/components/UiDropdown/UiDropdown.vue.d.ts +42 -0
  58. package/dist/types/src/components/UiDropdown/UiDropdownContent.vue.d.ts +32 -0
  59. package/dist/types/src/components/UiDropdown/UiDropdownItem.vue.d.ts +27 -0
  60. package/dist/types/src/components/UiDropdown/UiDropdownSeparator.vue.d.ts +3 -0
  61. package/dist/types/src/components/UiDropdown/UiDropdownTrigger.vue.d.ts +45 -0
  62. package/dist/types/src/components/UiDropdown/context.d.ts +7 -0
  63. package/dist/types/src/components/UiDropdown/index.d.ts +6 -0
  64. package/dist/types/src/components/UiEmptyState/UiEmptyState.vue.d.ts +29 -0
  65. package/dist/types/src/components/UiFieldWrapper/UiFieldWrapper.vue.d.ts +36 -0
  66. package/dist/types/src/components/UiFieldWrapper/index.d.ts +1 -0
  67. package/dist/types/src/components/UiForm/UiFormField.types.d.ts +22 -0
  68. package/dist/types/src/components/UiForm/UiFormField.vue.d.ts +34 -0
  69. package/dist/types/src/components/UiForm/index.d.ts +3 -0
  70. package/dist/types/src/components/UiHorizontalSeparator/UiHorizontalSeparator.vue.d.ts +6 -0
  71. package/dist/types/src/components/UiInputCheckbox/UiInputCheckbox.vue.d.ts +108 -0
  72. package/dist/types/src/components/UiInputCheckbox/index.d.ts +2 -0
  73. package/dist/types/src/components/UiInputCheckbox/types.d.ts +1 -0
  74. package/dist/types/src/components/UiInputSelect/UiInputSelect.vue.d.ts +66 -0
  75. package/dist/types/src/components/UiInputSelect/index.d.ts +2 -0
  76. package/dist/types/src/components/UiInputSelect/types.d.ts +1 -0
  77. package/dist/types/src/components/UiInputTextarea/UiInputTextarea.vue.d.ts +49 -0
  78. package/dist/types/src/components/UiInputTextarea/index.d.ts +2 -0
  79. package/dist/types/src/components/UiInputTextarea/types.d.ts +1 -0
  80. package/dist/types/src/components/UiLabel/UiLabel.vue.d.ts +17 -0
  81. package/dist/types/src/components/UiList/UiList.vue.d.ts +27 -0
  82. package/dist/types/src/components/UiListItem/UiListItem.vue.d.ts +35 -0
  83. package/dist/types/src/components/UiLoader/UiLoader.vue.d.ts +17 -0
  84. package/dist/types/src/components/UiLogo/UiLogo.vue.d.ts +20 -0
  85. package/dist/types/src/components/UiLogo/variants/PulseVariant.vue.d.ts +3 -0
  86. package/dist/types/src/components/UiLogo/variants/TornadoVariant.vue.d.ts +3 -0
  87. package/dist/types/src/components/UiMenu/UiMenu.vue.d.ts +18 -0
  88. package/dist/types/src/components/UiMenu/UiMenuContent.vue.d.ts +30 -0
  89. package/dist/types/src/components/UiMenu/UiMenuGroup.vue.d.ts +16 -0
  90. package/dist/types/src/components/UiMenu/UiMenuItem.vue.d.ts +18 -0
  91. package/dist/types/src/components/UiMenu/UiMenuLabel.vue.d.ts +13 -0
  92. package/dist/types/src/components/UiMenu/UiMenuSeparator.vue.d.ts +13 -0
  93. package/dist/types/src/components/UiMenu/UiMenuSub.vue.d.ts +18 -0
  94. package/dist/types/src/components/UiMenu/UiMenuSubContent.vue.d.ts +32 -0
  95. package/dist/types/src/components/UiMenu/UiMenuSubTrigger.vue.d.ts +14 -0
  96. package/dist/types/src/components/UiMenu/UiMenuTrigger.vue.d.ts +14 -0
  97. package/dist/types/src/components/UiMenu/index.d.ts +10 -0
  98. package/dist/types/src/components/UiPage/UiPage.vue.d.ts +37 -0
  99. package/dist/types/src/components/UiPageHeader/UiPageHeader.vue.d.ts +33 -0
  100. package/dist/types/src/components/UiPopover/UiPopover.vue.d.ts +18 -0
  101. package/dist/types/src/components/UiPopover/UiPopoverAnchor.vue.d.ts +14 -0
  102. package/dist/types/src/components/UiPopover/UiPopoverContent.vue.d.ts +28 -0
  103. package/dist/types/src/components/UiPopover/UiPopoverTrigger.vue.d.ts +14 -0
  104. package/dist/types/src/components/UiProgress/UiProgress.vue.d.ts +15 -0
  105. package/dist/types/src/components/UiProgress/index.d.ts +2 -0
  106. package/dist/types/src/components/UiProgress/types.d.ts +4 -0
  107. package/dist/types/src/components/UiRoomButton/UiRoomButton.vue.d.ts +29 -0
  108. package/dist/types/src/components/UiShell/UiShell.vue.d.ts +24 -0
  109. package/dist/types/src/components/UiSideMenu/UiSideMenu.vue.d.ts +64 -0
  110. package/dist/types/src/components/UiSideMenu/UiSideMenuBottom.vue.d.ts +7 -0
  111. package/dist/types/src/components/UiSideMenu/UiSideMenuItem.vue.d.ts +53 -0
  112. package/dist/types/src/components/UiSideMenu/UiSideMenuItemContent.vue.d.ts +43 -0
  113. package/dist/types/src/components/UiSideMenu/UiSideMenuTop.vue.d.ts +7 -0
  114. package/dist/types/src/components/UiSideMenu/injection.d.ts +7 -0
  115. package/dist/types/src/components/UiSideMenu/types.d.ts +39 -0
  116. package/dist/types/src/components/UiSideMenu/useLabelHidden.d.ts +2 -0
  117. package/dist/types/src/components/UiSideMenu/useSideMenuLayout.d.ts +7 -0
  118. package/dist/types/src/components/UiStepper/UiStepper.vue.d.ts +18 -0
  119. package/dist/types/src/components/UiStepper/UiStepperDescription.vue.d.ts +14 -0
  120. package/dist/types/src/components/UiStepper/UiStepperIndicator.vue.d.ts +20 -0
  121. package/dist/types/src/components/UiStepper/UiStepperItem.vue.d.ts +19 -0
  122. package/dist/types/src/components/UiStepper/UiStepperSeparator.vue.d.ts +10 -0
  123. package/dist/types/src/components/UiStepper/UiStepperTitle.vue.d.ts +14 -0
  124. package/dist/types/src/components/UiStepper/index.d.ts +7 -0
  125. package/dist/types/src/components/UiTable/UiTable.vue.d.ts +20 -0
  126. package/dist/types/src/components/UiTable/UiTableBody.vue.d.ts +13 -0
  127. package/dist/types/src/components/UiTable/UiTableCell.vue.d.ts +13 -0
  128. package/dist/types/src/components/UiTable/UiTableHeader.vue.d.ts +13 -0
  129. package/dist/types/src/components/UiTable/UiTableHeaderCell.vue.d.ts +13 -0
  130. package/dist/types/src/components/UiTable/UiTableRow.vue.d.ts +16 -0
  131. package/dist/types/src/components/UiTable/index.d.ts +6 -0
  132. package/dist/types/src/components/UiTabs/UiTabs.vue.d.ts +37 -0
  133. package/dist/types/src/components/UiTabs/index.d.ts +2 -0
  134. package/dist/types/src/components/UiTag/UiTag.vue.d.ts +43 -0
  135. package/dist/types/src/components/UiTag/index.d.ts +1 -0
  136. package/dist/types/src/components/UiTextField/UiTextField.vue.d.ts +65 -0
  137. package/dist/types/src/components/UiTextField/index.d.ts +2 -0
  138. package/dist/types/src/components/UiTextField/types.d.ts +2 -0
  139. package/dist/types/src/components/UiTimeline/UiTimeline.vue.d.ts +19 -0
  140. package/dist/types/src/components/UiTimeline/UiTimelineItem.vue.d.ts +28 -0
  141. package/dist/types/src/components/UiTimeline/index.d.ts +2 -0
  142. package/dist/types/src/components/UiTooltip/UiTooltip.vue.d.ts +18 -0
  143. package/dist/types/src/components/UiTooltip/UiTooltipContent.vue.d.ts +54 -0
  144. package/dist/types/src/components/UiTooltip/UiTooltipProvider.vue.d.ts +17 -0
  145. package/dist/types/src/components/UiTooltip/UiTooltipTrigger.vue.d.ts +14 -0
  146. package/dist/types/src/components/UiTooltip/index.d.ts +4 -0
  147. package/dist/types/src/composables/useButtonStyles.d.ts +20 -0
  148. package/dist/types/src/composables/useMobileMenu.d.ts +11 -0
  149. package/dist/types/src/composables/useThemeAndModes.d.ts +34 -0
  150. package/dist/types/src/constants/index.d.ts +2 -0
  151. package/dist/types/src/constants/sizes.d.ts +2 -0
  152. package/dist/types/src/constants/themes.d.ts +22 -0
  153. package/dist/types/src/integrations/index.d.ts +1 -0
  154. package/dist/types/src/layouts/index.d.ts +2 -0
  155. package/dist/types/src/mixins/DynamicAction.d.ts +30 -0
  156. package/dist/types/src/primitives.d.ts +6 -0
  157. package/dist/types/src/theme.d.ts +1 -0
  158. package/dist/types/src/utils/a11y.d.ts +2 -0
  159. package/dist/types/src/utils/breakpoints.d.ts +9 -0
  160. package/dist/types/src/utils/bus.d.ts +2 -0
  161. package/dist/types/src/utils/clipboard.d.ts +4 -0
  162. package/dist/types/src/utils/devices.d.ts +19 -0
  163. package/dist/types/src/utils/elements.d.ts +1 -0
  164. package/dist/types/src/utils/index.d.ts +9 -0
  165. package/dist/types/src/utils/numbers.d.ts +30 -0
  166. package/dist/types/src/utils/responsive.d.ts +5 -0
  167. package/dist/types/src/utils/responsive.types.d.ts +12 -0
  168. package/dist/types/src/utils/router.d.ts +1 -0
  169. package/dist/types/src/utils/slot.d.ts +8 -0
  170. package/dist/types/src/utils/stack-view.d.ts +10 -0
  171. package/dist/types/src/utils/uid.d.ts +1 -0
  172. package/dist/types/style.d.ts +1 -0
  173. package/dist/ui-vue.css +1 -0
  174. package/dist/useThemeAndModes-DY5SDC0a.mjs +109 -0
  175. package/dist/utils.mjs +111 -0
  176. package/index.d.ts +88 -2
  177. package/index.js +169 -16
  178. package/integrations.d.ts +10 -0
  179. package/package.json +127 -58
  180. package/src/components/Toast/LayoutToasts.vue +63 -0
  181. package/src/components/Toast/ToastMessage.vue +208 -0
  182. package/src/components/Toast/toastDSV2.ts +151 -0
  183. package/src/components/UiActionBar/UiActionBar.vue +86 -0
  184. package/src/components/UiActionBar/UiActionBarItem.vue +179 -0
  185. package/src/components/UiActionBar/UiActionBarSeparator.vue +18 -0
  186. package/src/components/UiActionBar/index.ts +4 -0
  187. package/src/components/UiActionBar/types.ts +24 -0
  188. package/src/components/UiAnimatedLogo/UiAnimatedLogo.vue +47 -0
  189. package/src/components/UiAnimatedLogo/animations-links.ts +6 -0
  190. package/src/components/UiAvatar/UiAvatar.vue +186 -0
  191. package/src/components/UiAvatar/index.js +1 -0
  192. package/src/components/UiAvatarList/UiAvatarList.vue +109 -0
  193. package/src/components/UiAvatarList/index.js +1 -0
  194. package/src/components/UiBadge/UiBadge.vue +161 -0
  195. package/src/components/UiBadge/index.ts +2 -0
  196. package/src/components/UiBanner/UiBanner.vue +363 -0
  197. package/src/components/UiBanner/index.ts +2 -0
  198. package/src/components/UiBreadcrumb/UiBreadcrumb.vue +93 -0
  199. package/src/components/UiBreadcrumb/index.ts +2 -0
  200. package/src/components/UiButton/UiButton.vue +319 -0
  201. package/src/components/UiButtonGroup/UiButtonGroup.vue +198 -0
  202. package/src/components/UiButtonGroup/UiButtonGroupItem.vue +123 -0
  203. package/src/components/UiButtonGroup/index.ts +3 -0
  204. package/src/components/UiButtonGroup/types.ts +24 -0
  205. package/src/components/UiCard/UiCard.vue +112 -0
  206. package/src/components/UiCarousel/UiCarousel.vue +215 -0
  207. package/src/components/UiCarousel/index.ts +2 -0
  208. package/src/components/UiColorField/UiColorField.vue +158 -0
  209. package/src/components/UiColorField/index.ts +2 -0
  210. package/src/components/UiColorField/types.ts +30 -0
  211. package/src/components/UiColorPicker/UiColorPicker.vue +487 -0
  212. package/src/components/UiColorPicker/index.ts +2 -0
  213. package/src/components/UiColorPicker/types.ts +103 -0
  214. package/src/components/UiDialog/MarketplaceHeaderExample.vue +217 -0
  215. package/src/components/UiDialog/UiDialog.md +97 -0
  216. package/src/components/UiDialog/UiDialog.vue +16 -0
  217. package/src/components/UiDialog/UiDialogClose.vue +29 -0
  218. package/src/components/UiDialog/UiDialogContent.vue +238 -0
  219. package/src/components/UiDialog/UiDialogFooter.vue +9 -0
  220. package/src/components/UiDialog/UiDialogTrigger.vue +12 -0
  221. package/src/components/UiDialog/index.ts +18 -0
  222. package/src/components/UiDropdown/UiDropdown.vue +48 -0
  223. package/src/components/UiDropdown/UiDropdownContent.vue +72 -0
  224. package/src/components/UiDropdown/UiDropdownItem.vue +75 -0
  225. package/src/components/UiDropdown/UiDropdownSeparator.vue +7 -0
  226. package/src/components/UiDropdown/UiDropdownTrigger.vue +239 -0
  227. package/src/components/UiDropdown/context.ts +9 -0
  228. package/src/components/UiDropdown/index.ts +21 -0
  229. package/src/components/UiEmptyState/UiEmptyState.vue +80 -0
  230. package/src/components/UiFieldWrapper/UiFieldWrapper.vue +79 -0
  231. package/src/components/UiFieldWrapper/index.ts +1 -0
  232. package/src/components/UiForm/UiFormField.types.ts +24 -0
  233. package/src/components/UiForm/UiFormField.vue +66 -0
  234. package/src/components/UiForm/index.ts +3 -0
  235. package/src/components/UiHorizontalSeparator/UiHorizontalSeparator.vue +28 -0
  236. package/src/components/UiInputCheckbox/UiInputCheckbox.vue +477 -0
  237. package/src/components/UiInputCheckbox/index.ts +2 -0
  238. package/src/components/UiInputCheckbox/types.ts +1 -0
  239. package/src/components/UiInputSelect/UiInputSelect.vue +166 -0
  240. package/src/components/UiInputSelect/index.ts +2 -0
  241. package/src/components/UiInputSelect/types.ts +1 -0
  242. package/src/components/UiInputTextarea/UiInputTextarea.vue +219 -0
  243. package/src/components/UiInputTextarea/index.ts +2 -0
  244. package/src/components/UiInputTextarea/types.ts +1 -0
  245. package/src/components/UiLabel/UiLabel.vue +34 -0
  246. package/src/components/UiList/UiList.vue +45 -0
  247. package/src/components/UiListItem/UiListItem.vue +108 -0
  248. package/src/components/UiLoader/UiLoader.vue +45 -0
  249. package/src/components/UiLogo/UiLogo.vue +99 -0
  250. package/src/components/UiLogo/variants/PulseVariant.vue +51 -0
  251. package/src/components/UiLogo/variants/TornadoVariant.vue +147 -0
  252. package/src/components/UiMenu/UiMenu.vue +15 -0
  253. package/src/components/UiMenu/UiMenuContent.vue +25 -0
  254. package/src/components/UiMenu/UiMenuGroup.vue +19 -0
  255. package/src/components/UiMenu/UiMenuItem.vue +18 -0
  256. package/src/components/UiMenu/UiMenuLabel.vue +9 -0
  257. package/src/components/UiMenu/UiMenuSeparator.vue +9 -0
  258. package/src/components/UiMenu/UiMenuSub.vue +15 -0
  259. package/src/components/UiMenu/UiMenuSubContent.vue +23 -0
  260. package/src/components/UiMenu/UiMenuSubTrigger.vue +17 -0
  261. package/src/components/UiMenu/UiMenuTrigger.vue +13 -0
  262. package/src/components/UiMenu/index.ts +10 -0
  263. package/src/components/UiPage/UiPage.vue +201 -0
  264. package/src/components/UiPageHeader/UiPageHeader.vue +128 -0
  265. package/src/components/UiPopover/UiPopover.vue +16 -0
  266. package/src/components/UiPopover/UiPopoverAnchor.vue +12 -0
  267. package/src/components/UiPopover/UiPopoverContent.vue +26 -0
  268. package/src/components/UiPopover/UiPopoverTrigger.vue +19 -0
  269. package/src/components/UiProgress/UiProgress.vue +92 -0
  270. package/src/components/UiProgress/index.ts +2 -0
  271. package/src/components/UiProgress/types.ts +5 -0
  272. package/src/components/UiRoomButton/UiRoomButton.vue +240 -0
  273. package/src/components/UiShell/UiShell.vue +88 -0
  274. package/src/components/UiSideMenu/UiSideMenu.vue +513 -0
  275. package/src/components/UiSideMenu/UiSideMenuBottom.vue +27 -0
  276. package/src/components/UiSideMenu/UiSideMenuItem.vue +102 -0
  277. package/src/components/UiSideMenu/UiSideMenuItemContent.vue +172 -0
  278. package/src/components/UiSideMenu/UiSideMenuTop.vue +29 -0
  279. package/src/components/UiSideMenu/injection.ts +9 -0
  280. package/src/components/UiSideMenu/types.ts +41 -0
  281. package/src/components/UiSideMenu/useLabelHidden.ts +33 -0
  282. package/src/components/UiSideMenu/useSideMenuLayout.ts +12 -0
  283. package/src/components/UiStepper/UiStepper.vue +40 -0
  284. package/src/components/UiStepper/UiStepperDescription.vue +27 -0
  285. package/src/components/UiStepper/UiStepperIndicator.vue +93 -0
  286. package/src/components/UiStepper/UiStepperItem.vue +30 -0
  287. package/src/components/UiStepper/UiStepperSeparator.vue +49 -0
  288. package/src/components/UiStepper/UiStepperTitle.vue +24 -0
  289. package/src/components/UiStepper/index.ts +17 -0
  290. package/src/components/UiTable/UiTable.vue +24 -0
  291. package/src/components/UiTable/UiTableBody.vue +5 -0
  292. package/src/components/UiTable/UiTableCell.vue +26 -0
  293. package/src/components/UiTable/UiTableHeader.vue +17 -0
  294. package/src/components/UiTable/UiTableHeaderCell.vue +19 -0
  295. package/src/components/UiTable/UiTableRow.vue +27 -0
  296. package/src/components/UiTable/index.ts +6 -0
  297. package/src/components/UiTabs/UiTabs.vue +218 -0
  298. package/src/components/UiTabs/index.ts +5 -0
  299. package/src/components/UiTag/UiTag.vue +187 -0
  300. package/src/components/UiTag/index.js +1 -0
  301. package/src/components/UiTextField/UiTextField.vue +370 -0
  302. package/src/components/UiTextField/index.ts +2 -0
  303. package/src/components/UiTextField/types.ts +2 -0
  304. package/src/components/UiTimeline/README.md +169 -0
  305. package/src/components/UiTimeline/UiTimeline.vue +58 -0
  306. package/src/components/UiTimeline/UiTimelineItem.vue +141 -0
  307. package/src/components/UiTimeline/index.ts +2 -0
  308. package/src/components/UiTooltip/UiTooltip.vue +16 -0
  309. package/src/components/UiTooltip/UiTooltipContent.vue +86 -0
  310. package/src/components/UiTooltip/UiTooltipProvider.vue +15 -0
  311. package/src/components/UiTooltip/UiTooltipTrigger.vue +19 -0
  312. package/src/components/UiTooltip/index.js +4 -0
  313. package/src/composables/useButtonStyles.ts +242 -0
  314. package/src/composables/useMobileMenu.ts +57 -0
  315. package/src/composables/useThemeAndModes.ts +225 -0
  316. package/src/constants/index.ts +2 -0
  317. package/src/constants/sizes.ts +2 -0
  318. package/src/constants/themes.ts +34 -0
  319. package/src/css/{body.postcss → body.css} +3 -2
  320. package/src/css/reka-animations.css +209 -0
  321. package/src/css/{transitions.postcss → transitions.css} +12 -5
  322. package/src/global.d.ts +181 -0
  323. package/src/integrations/index.js +1 -0
  324. package/src/layouts/index.js +5 -0
  325. package/src/mixins/DynamicAction.js +5 -3
  326. package/src/primitives.ts +6 -0
  327. package/src/theme.ts +1 -0
  328. package/src/utils/a11y.ts +8 -0
  329. package/src/utils/{breakpoints.js → breakpoints.ts} +1 -0
  330. package/src/utils/clipboard.js +2 -2
  331. package/src/utils/devices.js +0 -3
  332. package/src/utils/index.js +2 -1
  333. package/src/utils/numbers.ts +61 -0
  334. package/src/utils/responsive.types.ts +12 -0
  335. package/src/utils/{slot.js → slot.ts} +18 -1
  336. package/style.js +3 -12
  337. package/theme.d.ts +1 -0
  338. package/.env +0 -1
  339. package/.eslintignore +0 -4
  340. package/.eslintrc.js +0 -47
  341. package/.pkg +0 -11
  342. package/babel.config.js +0 -5
  343. package/build/Dockerfile +0 -31
  344. package/ci/ci.yml +0 -54
  345. package/components-webpack.js +0 -29
  346. package/dist/environment-e70e5768.mjs +0 -1664
  347. package/dist/style.css +0 -1
  348. package/plugins.js +0 -17
  349. package/postcss.config.js +0 -1
  350. package/src/components/BaseAutocomplete/BaseAutocomplete.spec.js +0 -506
  351. package/src/components/BaseAutocomplete/BaseAutocomplete.stories.js +0 -184
  352. package/src/components/BaseAutocomplete/BaseAutocomplete.vue +0 -431
  353. package/src/components/BaseBanner/BaseBanner.spec.js +0 -32
  354. package/src/components/BaseBanner/BaseBanner.stories.js +0 -133
  355. package/src/components/BaseBanner/BaseBanner.vue +0 -229
  356. package/src/components/BaseButton/BaseButton.spec.js +0 -98
  357. package/src/components/BaseButton/BaseButton.stories.js +0 -291
  358. package/src/components/BaseButton/BaseButton.vue +0 -193
  359. package/src/components/BaseButton/__snapshots__/BaseButton.spec.js.snap +0 -37
  360. package/src/components/BaseButton/__snapshots__/BaseButton.spec.js.snap.old +0 -31
  361. package/src/components/BaseCheckbox/BaseCheckbox.stories.js +0 -82
  362. package/src/components/BaseCheckbox/BaseCheckbox.vue +0 -161
  363. package/src/components/BaseDropdownMenu/BaseDropdownMenu.stories.js +0 -84
  364. package/src/components/BaseDropdownMenu/BaseDropdownMenu.vue +0 -251
  365. package/src/components/BaseDropdownMenu/BaseDropdownMenuButton.vue +0 -26
  366. package/src/components/BaseDropdownMenu/BaseDropdownMenuDivider.vue +0 -10
  367. package/src/components/BaseDropdownMenu/BaseDropdownMenuItem.vue +0 -206
  368. package/src/components/BaseDropdownMenu/BaseDropdownMenuSearch.vue +0 -49
  369. package/src/components/BaseDropdownMenu/BaseDropdownMenuTitle.vue +0 -26
  370. package/src/components/BaseModal/BaseModal.stories.js +0 -143
  371. package/src/components/BaseModal/BaseModal.vue +0 -187
  372. package/src/components/BaseModal/BaseModalContent.vue +0 -164
  373. package/src/components/BaseModal/BaseModalContentOld.vue +0 -242
  374. package/src/components/BaseRating/BaseRating.spec.js +0 -46
  375. package/src/components/BaseRating/BaseRating.stories.js +0 -46
  376. package/src/components/BaseRating/BaseRating.vue +0 -119
  377. package/src/components/BaseSelect/BaseSelect.stories.js +0 -177
  378. package/src/components/BaseSelect/BaseSelect.vue +0 -443
  379. package/src/components/BaseSelect/BaseSelectGroup.vue +0 -34
  380. package/src/components/BaseSelect/BaseSelectOption.vue +0 -219
  381. package/src/components/BaseSwitch/BaseSwitch.stories.js +0 -44
  382. package/src/components/BaseSwitch/BaseSwitch.vue +0 -114
  383. package/src/components/BaseTag/BaseTag.stories.js +0 -123
  384. package/src/components/BaseTag/BaseTag.vue +0 -244
  385. package/src/css/button.postcss +0 -354
  386. package/src/css/checkbox-radio.postcss +0 -152
  387. package/src/css/icon.postcss +0 -9
  388. package/src/css/loader.postcss +0 -120
  389. package/src/css/popper.postcss +0 -143
  390. package/src/css/tailwind-utilities.postcss +0 -1
  391. package/src/css/tailwind.postcss +0 -2
  392. package/style-postcss.d.ts +0 -3
  393. package/style-postcss.js +0 -2
  394. package/tailwind.config.base.cjs +0 -88
  395. package/tailwind.config.js +0 -9
  396. package/tsconfig.check.json +0 -13
  397. package/tsconfig.json +0 -66
  398. package/vite.config.js +0 -43
  399. package/vitest.setup.js +0 -26
@@ -0,0 +1,112 @@
1
+ <!-- UiCard.vue - Base Card Component -->
2
+ <script setup lang="ts">
3
+ import { computed } from 'vue'
4
+
5
+ export interface UiCardProps {
6
+ /** Visual variant of the card */
7
+ variant?: 'neutral' | 'success' | 'warning' | 'danger' | 'primary' | 'transparent' | 'primary-fill' | 'white'
8
+ /** Padding size inside the card */
9
+ padding?: 'none' | 'sm' | 'md' | 'lg'
10
+ /** Whether the card is interactive/clickable */
11
+ interactive?: boolean
12
+ /** Whether the card is selected */
13
+ selected?: boolean
14
+ /** Whether the card is disabled */
15
+ disabled?: boolean
16
+ }
17
+
18
+ const props = withDefaults(defineProps<UiCardProps>(), {
19
+ variant: 'neutral',
20
+ padding: 'lg',
21
+ interactive: false,
22
+ selected: false,
23
+ disabled: false,
24
+ })
25
+
26
+ const baseCardClasses = 'bg-surface-neutral-alpha-100 border border-borders-neutral-light'
27
+
28
+ const variantClasses = computed(() => {
29
+ if (props.selected) {
30
+ return 'bg-surface-primary-alpha-100 border border-borders-neutral-light ring-2 ring-actions-primary-idle'
31
+ }
32
+
33
+ switch (props.variant) {
34
+ case 'success':
35
+ return 'bg-surface-success-alpha-200 border border-borders-neutral-light'
36
+ case 'warning':
37
+ return 'bg-surface-warning-alpha-100 border border-borders-neutral-light'
38
+ case 'danger':
39
+ return 'bg-surface-danger-alpha-100 border border-borders-neutral-light'
40
+ case 'primary':
41
+ return 'bg-surface-primary-alpha-100 border border-borders-neutral-light'
42
+ case 'primary-fill':
43
+ return 'bg-surface-primary-bg-alpha border border-borders-neutral-light'
44
+ case 'transparent':
45
+ return 'bg-transparent border border-borders-neutral-light'
46
+ case 'neutral':
47
+ return 'bg-surface-neutral-alpha-100 border border-borders-neutral-light'
48
+ case 'white':
49
+ return 'bg-surface-neutral-bg-main border border-borders-neutral-light'
50
+ default:
51
+ return baseCardClasses
52
+ }
53
+ })
54
+
55
+ const paddingClasses = computed(() => {
56
+ // Based on Figma: default padding is 32px (p-8)
57
+ switch (props.padding) {
58
+ case 'sm':
59
+ return 'p-4'
60
+ case 'md':
61
+ return 'p-6'
62
+ case 'lg':
63
+ return 'p-8'
64
+ case 'none':
65
+ return ''
66
+ default:
67
+ return 'p-8'
68
+ }
69
+ })
70
+
71
+ const interactiveClasses = computed(() => {
72
+ if (!props.interactive || props.disabled) return ''
73
+ // Don't apply hover ring if already selected (to preserve the selected ring-2)
74
+ if (props.selected) {
75
+ return 'cursor-pointer transition-all duration-150 hover:shadow-shadows-drop-shadow-lg'
76
+ }
77
+ return 'cursor-pointer transition-all duration-150 hover:ring-1 hover:ring-shadow-neutral-100 hover:shadow-shadows-drop-shadow-lg'
78
+ })
79
+
80
+ const disabledClasses = computed(() => {
81
+ if (!props.disabled) return ''
82
+ return 'opacity-50 cursor-not-allowed'
83
+ })
84
+ </script>
85
+
86
+ <template>
87
+ <div
88
+ :class="[
89
+ 'rounded-xl relative overflow-hidden',
90
+ variantClasses,
91
+ paddingClasses,
92
+ interactiveClasses,
93
+ disabledClasses,
94
+ ]"
95
+ >
96
+ <!-- Hover overlay for interactive cards -->
97
+ <div
98
+ v-if="interactive && !disabled"
99
+ class="absolute inset-0 bg-actions-neutral-hover-overlay rounded-xl opacity-0 hover:opacity-100 transition-opacity duration-150 pointer-events-none"
100
+ />
101
+
102
+ <!-- Selected overlay -->
103
+ <div
104
+ v-if="selected"
105
+ class="absolute inset-0 bg-actions-primary-idle-alpha-light rounded-xl pointer-events-none"
106
+ />
107
+
108
+ <div class="relative z-10 h-full">
109
+ <slot />
110
+ </div>
111
+ </div>
112
+ </template>
@@ -0,0 +1,215 @@
1
+ <!-- UiCarousel.vue - Carousel Component with Embla -->
2
+ <script setup lang="ts">
3
+ import { computed, ref, watch, onMounted, onBeforeUnmount } from 'vue'
4
+ import emblaCarouselVue from 'embla-carousel-vue'
5
+ import type { EmblaOptionsType } from 'embla-carousel'
6
+ import Autoplay from 'embla-carousel-autoplay'
7
+ import type { AutoplayOptionsType } from 'embla-carousel-autoplay'
8
+ import UiButton from '../UiButton/UiButton.vue'
9
+
10
+ export interface UiCarouselProps {
11
+ /** Carousel options from Embla */
12
+ options?: EmblaOptionsType
13
+ /** Show navigation arrows */
14
+ showArrows?: boolean
15
+ /** Show dot indicators */
16
+ showDots?: boolean
17
+ /** Enable loop mode */
18
+ loop?: boolean
19
+ /** Slides to scroll at once */
20
+ slidesToScroll?: number
21
+ /** Alignment of slides */
22
+ align?: 'start' | 'center' | 'end'
23
+ /** Enable drag interactions */
24
+ draggable?: boolean
25
+ /** Enable autoplay */
26
+ autoplay?: boolean
27
+ /** Autoplay delay in milliseconds */
28
+ autoplayDelay?: number
29
+ /** Stop autoplay on interaction */
30
+ stopOnInteraction?: boolean
31
+ /** Stop autoplay when mouse enters carousel */
32
+ stopOnMouseEnter?: boolean
33
+ }
34
+
35
+ interface Emits {
36
+ (e: 'select', index: number): void
37
+ (e: 'init'): void
38
+ }
39
+
40
+ const emit = defineEmits<Emits>()
41
+
42
+ const props = withDefaults(defineProps<UiCarouselProps>(), {
43
+ showArrows: true,
44
+ showDots: true,
45
+ loop: true,
46
+ slidesToScroll: 1,
47
+ align: 'start',
48
+ draggable: true,
49
+ autoplay: false,
50
+ autoplayDelay: 3000,
51
+ stopOnInteraction: false,
52
+ stopOnMouseEnter: false,
53
+ })
54
+
55
+ const autoplayPlugin = computed(() => {
56
+ if (!props.autoplay) return []
57
+
58
+ const autoplayOptions: AutoplayOptionsType = {
59
+ delay: props.autoplayDelay,
60
+ stopOnInteraction: props.stopOnInteraction,
61
+ stopOnMouseEnter: props.stopOnMouseEnter,
62
+ }
63
+
64
+ return [Autoplay(autoplayOptions)]
65
+ })
66
+
67
+ const emblaOptions = computed<EmblaOptionsType>(() => ({
68
+ loop: props.loop,
69
+ slidesToScroll: props.slidesToScroll,
70
+ align: props.align,
71
+ dragFree: false,
72
+ watchDrag: props.draggable,
73
+ containScroll: 'trimSnaps',
74
+ ...props.options,
75
+ }))
76
+
77
+ const [emblaRef, emblaApi] = emblaCarouselVue(emblaOptions, autoplayPlugin)
78
+
79
+ const selectedIndex = ref<number>(0)
80
+ const scrollSnaps = ref<number[]>([])
81
+ const canScrollPrev = ref<boolean>(false)
82
+ const canScrollNext = ref<boolean>(true)
83
+
84
+ function onSelect (): void {
85
+ if (!emblaApi.value) return
86
+ selectedIndex.value = emblaApi.value.selectedScrollSnap()
87
+ canScrollPrev.value = emblaApi.value.canScrollPrev()
88
+ canScrollNext.value = emblaApi.value.canScrollNext()
89
+ emit('select', selectedIndex.value)
90
+ }
91
+
92
+ function onInit (): void {
93
+ if (!emblaApi.value) return
94
+ scrollSnaps.value = emblaApi.value.scrollSnapList()
95
+ onSelect()
96
+ emit('init')
97
+ }
98
+
99
+ watch(emblaApi, (api) => {
100
+ if (!api) return
101
+ api.on('init', onInit)
102
+ api.on('select', onSelect)
103
+ api.on('reInit', onSelect)
104
+ }, { immediate: true })
105
+
106
+ watch(
107
+ () => [props.autoplay, props.autoplayDelay, props.stopOnInteraction, props.stopOnMouseEnter],
108
+ () => {
109
+ if (emblaApi.value) {
110
+ emblaApi.value.reInit()
111
+ }
112
+ },
113
+ )
114
+
115
+ onMounted(() => {
116
+ if (emblaApi.value) {
117
+ onInit()
118
+ }
119
+ })
120
+
121
+ onBeforeUnmount(() => {
122
+ if (emblaApi.value) {
123
+ emblaApi.value.destroy()
124
+ }
125
+ })
126
+
127
+ function scrollPrev (): void {
128
+ if (!emblaApi.value) return
129
+ if (props.stopOnInteraction && props.autoplay) {
130
+ emblaApi.value.plugins().autoplay?.stop()
131
+ }
132
+ emblaApi.value.scrollPrev()
133
+ }
134
+
135
+ function scrollNext (): void {
136
+ if (!emblaApi.value) return
137
+ if (props.stopOnInteraction && props.autoplay) {
138
+ emblaApi.value.plugins().autoplay?.stop()
139
+ }
140
+ emblaApi.value.scrollNext()
141
+ }
142
+
143
+ function scrollTo (index: number): void {
144
+ emblaApi.value?.scrollTo(index)
145
+ }
146
+
147
+ defineExpose({
148
+ scrollPrev,
149
+ scrollNext,
150
+ scrollTo,
151
+ emblaApi,
152
+ })
153
+ </script>
154
+
155
+ <template>
156
+ <div class="ui-carousel relative">
157
+ <!-- Carousel viewport -->
158
+ <div
159
+ ref="emblaRef"
160
+ data-testid="carousel-viewport"
161
+ class="overflow-hidden"
162
+ >
163
+ <div class="flex -mr-4">
164
+ <slot />
165
+ </div>
166
+ </div>
167
+
168
+ <!-- Navigation controls -->
169
+ <div
170
+ class="flex items-center mt-4 justify-center"
171
+ >
172
+ <!-- Prev arrow -->
173
+ <UiButton
174
+ v-if="showArrows"
175
+ data-testid="carousel-prev"
176
+ variant="tertiary"
177
+ color="primary"
178
+ size="md"
179
+ icon="i-ls-chevron-left"
180
+ label="Previous slide"
181
+ :disabled="!canScrollPrev"
182
+ @click="scrollPrev"
183
+ />
184
+
185
+ <!-- Dot indicators -->
186
+ <div
187
+ v-if="showDots && scrollSnaps.length > 1"
188
+ class="flex items-center gap-4 mx-4"
189
+ >
190
+ <button
191
+ v-for="(snap, index) in scrollSnaps"
192
+ :key="index"
193
+ :data-testid="`carousel-dot-${index}`"
194
+ :aria-label="`Slide ${index + 1}`"
195
+ class="h-3 w-3 rounded-full transition-colors duration-200 cursor-pointer"
196
+ :class="index === selectedIndex ? 'bg-actions-primary-idle' : 'bg-actions-primary-idle-alpha-light'"
197
+ @click="scrollTo(index)"
198
+ />
199
+ </div>
200
+
201
+ <!-- Next arrow -->
202
+ <UiButton
203
+ v-if="showArrows"
204
+ data-testid="carousel-next"
205
+ variant="tertiary"
206
+ color="primary"
207
+ size="md"
208
+ icon="i-ls-chevron-right"
209
+ label="Next slide"
210
+ :disabled="!canScrollNext"
211
+ @click="scrollNext"
212
+ />
213
+ </div>
214
+ </div>
215
+ </template>
@@ -0,0 +1,2 @@
1
+ export { default as UiCarousel } from './UiCarousel.vue'
2
+ export type { UiCarouselProps } from './UiCarousel.vue'
@@ -0,0 +1,158 @@
1
+ <script setup lang="ts">
2
+ import { computed, ref, watch } from 'vue'
3
+ import UiPopover from '../UiPopover/UiPopover.vue'
4
+ import UiPopoverTrigger from '../UiPopover/UiPopoverTrigger.vue'
5
+ import UiPopoverContent from '../UiPopover/UiPopoverContent.vue'
6
+ import { UiColorPicker } from '../UiColorPicker'
7
+ import { UiTextField } from '../UiTextField'
8
+ import type { UiColorFieldProps } from './types'
9
+
10
+ const props = withDefaults(defineProps<UiColorFieldProps>(), {
11
+ modelValue: '',
12
+ defaultColor: undefined,
13
+ disabled: false,
14
+ size: 'md',
15
+ placeholder: undefined,
16
+ label: undefined,
17
+ id: undefined,
18
+ ariaLabel: undefined,
19
+ })
20
+
21
+ const emit = defineEmits<{
22
+ 'update:modelValue': [value: string]
23
+ 'change': [value: string]
24
+ }>()
25
+
26
+ // Mirrors the frontend `color` Vuelidate validator: '#' + 3 or 6 hex digits.
27
+ const HEX_RE = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/
28
+ const FALLBACK_HEX = '#000000'
29
+
30
+ const isOpen = ref(false)
31
+
32
+ // Local draft so typing doesn't fight the model; committed on blur/Enter
33
+ // because the color field can only handle valid hex values, but the user may be in the middle of typing an invalid one.
34
+ const draft = ref(props.modelValue ?? '')
35
+ watch(() => props.modelValue, (value) => {
36
+ // Don't clobber the user's in-progress raw text when the incoming value is
37
+ // just the round-trip of what they're already typing (live-emit). Still
38
+ // resync on a genuine external change (e.g. picker selection, parent reset).
39
+ if (normalizeHex(draft.value) !== value) draft.value = value ?? ''
40
+ })
41
+
42
+ // The swatch and picker always need a concrete, valid color - used for the colour picker
43
+ const currentHex = computed(() => {
44
+ if (props.modelValue && HEX_RE.test(props.modelValue)) return props.modelValue.toLowerCase()
45
+ if (props.defaultColor && HEX_RE.test(props.defaultColor)) return props.defaultColor.toLowerCase()
46
+ return FALLBACK_HEX
47
+ })
48
+
49
+ function setOpen(value: boolean): void {
50
+ if (props.disabled) return
51
+ isOpen.value = value
52
+ }
53
+
54
+ function normalizeHex(input: string): string | null {
55
+ const trimmed = input.trim().toLowerCase()
56
+ const withHash = trimmed.startsWith('#') ? trimmed : `#${trimmed}`
57
+ return HEX_RE.test(withHash) ? withHash : null
58
+ }
59
+
60
+ function commitDraft(): void {
61
+ const normalized = normalizeHex(draft.value)
62
+ if (!normalized) {
63
+ draft.value = props.modelValue ?? '' // revert to last valid value
64
+ return
65
+ }
66
+ draft.value = normalized
67
+ if (normalized !== props.modelValue) {
68
+ emit('update:modelValue', normalized)
69
+ emit('change', normalized)
70
+ }
71
+ }
72
+
73
+ function onFieldInput(value: string): void {
74
+ draft.value = value
75
+ const normalized = normalizeHex(value)
76
+ // Live-emit while the typed text forms a valid hex (matches the legacy field);
77
+ // invalid/partial input is held locally and reverted on blur.
78
+ if (normalized && normalized !== props.modelValue) emit('update:modelValue', normalized)
79
+ }
80
+
81
+ function onFieldKeydown(event: KeyboardEvent): void {
82
+ if (event.key === 'ArrowDown') {
83
+ event.preventDefault()
84
+ setOpen(true)
85
+ } else if (event.key === 'Enter') {
86
+ // These fields live inside <BaseForm>; without this, Enter would submit
87
+ // the surrounding form instead of just committing the color.
88
+ event.preventDefault()
89
+ commitDraft()
90
+ }
91
+ }
92
+
93
+ function onPickerUpdate(value: string): void {
94
+ draft.value = value
95
+ emit('update:modelValue', value)
96
+ }
97
+
98
+ function onPickerChange(value: string): void {
99
+ emit('change', value)
100
+ }
101
+ </script>
102
+
103
+ <template>
104
+ <UiPopover
105
+ :open="isOpen"
106
+ :modal="false"
107
+ @update:open="setOpen"
108
+ >
109
+ <!-- needs as="div" else the input is of type="button" for the popover trigger -->
110
+ <!-- role="combobox" is needed so that the aria values are valid on the element -->
111
+ <UiPopoverTrigger
112
+ as="div"
113
+ role="combobox"
114
+ >
115
+ <UiTextField
116
+ :id="id"
117
+ :model-value="draft"
118
+ :label="label"
119
+ :aria-label="ariaLabel"
120
+ :size="size"
121
+ :disabled="disabled"
122
+ :placeholder="placeholder"
123
+ class="cursor-pointer"
124
+ @update:model-value="onFieldInput"
125
+ @keydown="onFieldKeydown"
126
+ @blur="commitDraft"
127
+ >
128
+ <template #icon>
129
+ <span
130
+ data-testid="ui-color-field-swatch"
131
+ aria-hidden="true"
132
+ class="block size-full rounded border border-borders-neutral-light"
133
+ :style="{ backgroundColor: currentHex }"
134
+ />
135
+ </template>
136
+ </UiTextField>
137
+ </UiPopoverTrigger>
138
+ <UiPopoverContent
139
+ side="bottom"
140
+ align="start"
141
+ :side-offset="8"
142
+ data-colors-semantic="light"
143
+ class="border-none shadow-none rounded-2xl!"
144
+ @open-auto-focus.prevent
145
+ >
146
+ <UiColorPicker
147
+ variant="default"
148
+ :modes="['hex', 'rgb']"
149
+ output-format="hex"
150
+ :show-alpha="false"
151
+ :model-value="currentHex"
152
+ :disabled="disabled"
153
+ @update:model-value="onPickerUpdate"
154
+ @change="onPickerChange"
155
+ />
156
+ </UiPopoverContent>
157
+ </UiPopover>
158
+ </template>
@@ -0,0 +1,2 @@
1
+ export { default as UiColorField } from './UiColorField.vue'
2
+ export type { UiColorFieldProps } from './types'
@@ -0,0 +1,30 @@
1
+ import type { TextFieldSize } from '../UiTextField'
2
+
3
+ export interface UiColorFieldProps {
4
+ /** Hex color, v-model — the source of truth. Emitted as lowercase #rrggbb. */
5
+ modelValue?: string
6
+ /** Fallback color for the swatch/picker when modelValue is empty or invalid. */
7
+ defaultColor?: string
8
+ /** Disable interaction (blocks opening the picker and greys the field). */
9
+ disabled?: boolean
10
+ /** Size passed through to the underlying UiTextField. */
11
+ size?: TextFieldSize
12
+ /** Placeholder shown when there is no value. */
13
+ placeholder?: string
14
+ /**
15
+ * Visible field label, forwarded to the underlying UiTextField and rendered
16
+ * as an associated <label>. Leave unset when the field already sits under an
17
+ * external label (e.g. BaseFormInput) to avoid a duplicate.
18
+ */
19
+ label?: string
20
+ /**
21
+ * Id applied to the underlying input. Set this to match an external
22
+ * <label for="..."> (e.g. BaseFormInput's label) so the two associate.
23
+ */
24
+ id?: string
25
+ /**
26
+ * Accessible name applied as aria-label on the input, for when the field has
27
+ * no visible/associated label of its own.
28
+ */
29
+ ariaLabel?: string
30
+ }