@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,172 @@
1
+ <script setup lang="ts">
2
+ import type { SideMenuItemProps } from './types'
3
+ import { computed, useSlots } from 'vue'
4
+ import { useForwardExpose } from 'reka-ui'
5
+
6
+ // Visual body of a side menu item (icon, label, badge, interactive overlay).
7
+ // Extracted from UiSideMenuItem so the latter can optionally wrap this in a
8
+ // tooltip. `useForwardExpose` exposes the root element so reka-ui's
9
+ // `TooltipTrigger as-child` merges its props/listeners onto this <div> instead
10
+ // of rendering its own wrapping <button> (which would intercept clicks).
11
+ const { forwardRef } = useForwardExpose()
12
+
13
+ const slots = useSlots()
14
+ const hasAvatarSlot = computed(() => !!slots.avatar)
15
+
16
+ const props = withDefaults(defineProps<SideMenuItemProps & {
17
+ navigateToLabel?: string
18
+ /**
19
+ * When true, removes the interactive overlay (router-link/button) from
20
+ * the tab order. Use when wrapped by an interactive ancestor (e.g.
21
+ * UiPopoverTrigger) that already owns focus and click semantics —
22
+ * otherwise the component contributes a second tab stop.
23
+ */
24
+ insideInteractive?: boolean
25
+ /**
26
+ * Notification indicator shown at the top-right of the icon. A number
27
+ * renders a count pill (values > 99 display as "99+"); `true` renders a
28
+ * plain dot. Omit / 0 / false to hide.
29
+ */
30
+ badge?: number | boolean
31
+ /**
32
+ * Keep the text label visible even on short-height screens (where item
33
+ * labels are normally hidden). Use for the account/avatar item so the user
34
+ * name stays shown.
35
+ */
36
+ alwaysShowLabel?: boolean
37
+ }>(), {
38
+ textAlign: undefined,
39
+ insideInteractive: false,
40
+ badge: undefined,
41
+ alwaysShowLabel: false,
42
+ })
43
+
44
+ // Normalise the badge into either a display string (count pill) or null (dot)
45
+ // when shown. `showBadge` gates rendering so 0/false stay hidden.
46
+ const showBadge = computed(() => props.badge === true || (typeof props.badge === 'number' && props.badge > 0))
47
+ const badgeCount = computed(() => {
48
+ if (typeof props.badge !== 'number') return null
49
+ return props.badge > 99 ? '99+' : String(props.badge)
50
+ })
51
+
52
+ const textAlignClass = computed(() => {
53
+ if (props.textAlign) {
54
+ return `text-${props.textAlign}`
55
+ }
56
+ return hasAvatarSlot.value ? 'text-left' : 'text-center'
57
+ })
58
+ </script>
59
+
60
+ <template>
61
+ <div
62
+ :ref="forwardRef"
63
+ class="md:w-18 relative flex md:flex-col md:items-center gap-1 p-1 group/side-menu-item"
64
+ >
65
+ <router-link
66
+ v-if="to"
67
+ :to="to"
68
+ class="block w-full h-full absolute inset-0 z-20 transition-all duration-150"
69
+ :class="{ 'pointer-events-none': insideInteractive }"
70
+ :tabindex="insideInteractive ? -1 : undefined"
71
+ :aria-hidden="insideInteractive ? 'true' : undefined"
72
+ :aria-label="navigateToLabel || `Navigate to ${label}`"
73
+ :aria-current="isActive ? 'page' : undefined"
74
+ >
75
+ <span class="sr-only">{{ label }}</span>
76
+ </router-link>
77
+ <a
78
+ v-else-if="href"
79
+ :href="href"
80
+ class="block w-full h-full absolute inset-0 z-20 transition-all duration-150"
81
+ :class="{ 'pointer-events-none': insideInteractive }"
82
+ :tabindex="insideInteractive ? -1 : undefined"
83
+ :aria-hidden="insideInteractive ? 'true' : undefined"
84
+ :aria-label="navigateToLabel || `Navigate to ${label}`"
85
+ >
86
+ <span class="sr-only">{{ label }}</span>
87
+ </a>
88
+ <button
89
+ v-else
90
+ type="button"
91
+ class="block w-full h-full absolute inset-0 z-20 transition-all duration-150 cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-actions-primary-idle rounded-xl"
92
+ :class="{ 'pointer-events-none': insideInteractive }"
93
+ :tabindex="insideInteractive ? -1 : undefined"
94
+ :aria-hidden="insideInteractive ? 'true' : undefined"
95
+ :aria-label="label"
96
+ :aria-current="isActive ? 'true' : undefined"
97
+ >
98
+ <span class="sr-only">{{ label }}</span>
99
+ </button>
100
+ <div
101
+ :class="[
102
+ 'flex justify-center w-full md:w-10 group-hover/side-menu-item:bg-actions-neutral-hover-overlay group-active/side-menu-item:bg-actions-neutral-active-overlay rounded-xl transition-all duration-150 ease-in-out',
103
+ isActive ? 'bg-actions-neutral-active-overlay text-actions-neutral-idle' : 'text-actions-neutral-idle-alpha-strong',
104
+ // Avatar box is 40px; on mobile `p-1` makes its total height (48px)
105
+ // match icon items (`p-3` + 24px icon). Both are 40px on desktop.
106
+ hasAvatarSlot ? 'p-1 md:p-0' : 'p-3',
107
+ ]"
108
+ >
109
+ <!-- Icon/avatar wrapper: anchors the notification badge to the icon's
110
+ top-right corner so it stays correct in both the icon-centered
111
+ (desktop) and icon-left (mobile row) layouts. -->
112
+ <div class="relative shrink-0">
113
+ <div
114
+ v-if="hasAvatarSlot"
115
+ class="flex items-center justify-center w-10 h-10"
116
+ >
117
+ <slot name="avatar" />
118
+ </div>
119
+ <div
120
+ v-if="icon"
121
+ :class="[
122
+ 'w-6 h-6 md:w-4 md:h-4',
123
+ icon
124
+ ]"
125
+ aria-hidden="true"
126
+ />
127
+ <!-- Notification badge, pushed out toward the button's top-right
128
+ corner (past the icon's p-3 padding). -->
129
+ <div
130
+ v-if="showBadge"
131
+ class="absolute z-30 pointer-events-none flex items-center justify-center bg-surface-danger-bg-alpha text-text-neutral-invert-base rounded-2xl"
132
+ :class="badgeCount
133
+ ? '-top-3.5 -right-3.5 min-w-4 px-1 py-0.5 text-content-badges-bold-md'
134
+ : '-top-2.5 -right-2.5 w-2 h-2'"
135
+ aria-hidden="true"
136
+ >
137
+ <span v-if="badgeCount">{{ badgeCount }}</span>
138
+ </div>
139
+ </div>
140
+ <div
141
+ class="pl-4 flex md:hidden text-content-text-md-regular font-bold truncate w-full items-center md:justify-center md:text-center"
142
+ aria-hidden="true"
143
+ >
144
+ {{ label }}
145
+ </div>
146
+ </div>
147
+ <div
148
+ class="hidden md:block text-content-legends-bold-md truncate w-[75px]"
149
+ :class="[
150
+ textAlignClass,
151
+ isActive ? 'text-actions-neutral-idle' : 'text-actions-neutral-idle-alpha-strong',
152
+ { 'hidden-on-short-height': !alwaysShowLabel },
153
+ ]"
154
+ aria-hidden="true"
155
+ >
156
+ {{ label }}
157
+ </div>
158
+ <slot />
159
+ </div>
160
+ </template>
161
+
162
+ <style scoped>
163
+ .hidden-on-short-height {
164
+ display: none;
165
+ }
166
+
167
+ @media (min-height: 600px) and (min-width: 768px) {
168
+ .hidden-on-short-height {
169
+ display: block;
170
+ }
171
+ }
172
+ </style>
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import LivestormLogo from '@livestorm/ui-tokens/output/vectors/logos/livestorm-white.svg'
3
+ import UiSideMenuItem from './UiSideMenuItem.vue'
4
+ import type { SideMenuItemProps } from './types'
5
+
6
+ defineProps<{
7
+ menuItems: SideMenuItemProps[]
8
+ }>()
9
+ </script>
10
+
11
+ <template>
12
+ <div class="flex flex-col items-center gap-8">
13
+ <img
14
+ :src="LivestormLogo"
15
+ alt="Livestorm logo"
16
+ class="w-10 h-10"
17
+ >
18
+ <div class="flex flex-col gap-2">
19
+ <UiSideMenuItem
20
+ v-for="item in menuItems"
21
+ :key="item.label"
22
+ :label="item.label"
23
+ :icon="item.icon"
24
+ :to="item.to"
25
+ :is-active="item.isActive"
26
+ />
27
+ </div>
28
+ </div>
29
+ </template>
@@ -0,0 +1,9 @@
1
+ import type { InjectionKey, Ref } from 'vue'
2
+
3
+ export interface SideMenuLayoutContext {
4
+ isShortHeight: Ref<boolean>
5
+ moreButtonEl: Ref<HTMLElement | null>
6
+ closeMoreMenu: () => void
7
+ }
8
+
9
+ export const SIDE_MENU_LAYOUT_KEY: InjectionKey<SideMenuLayoutContext> = Symbol('UiSideMenuLayout')
@@ -0,0 +1,41 @@
1
+ import type { RouteLocationRaw } from 'vue-router'
2
+ export interface SideMenuItemProps {
3
+ label: string
4
+ icon?: string
5
+ to?: string | RouteLocationRaw
6
+ href?: string
7
+ isActive?: boolean
8
+ textAlign?: 'left' | 'center' | 'right'
9
+ /** Notification indicator: a count pill (number) or a dot (`true`). */
10
+ badge?: number | boolean
11
+ }
12
+
13
+ /**
14
+ * Proxy entry rendered inside the More popover on short-height screens.
15
+ * Used to surface buttons that live in the #bottom slot (e.g. Help, Updates)
16
+ * which are hidden in that layout. The click handler should toggle the
17
+ * underlying component's popover; that component should register a
18
+ * UiPopoverAnchor pointing to the More button so its popover visually
19
+ * emerges from there.
20
+ */
21
+ export interface SideMenuMoreItem {
22
+ label: string
23
+ icon?: string
24
+ onClick: () => void
25
+ }
26
+
27
+ /**
28
+ * Entry rendered inside the persistent "More" popover (the collapsed menu
29
+ * shown at every height). Unlike SideMenuMoreItem, these are first-class menu
30
+ * entries — they can navigate (`to`/`href`) or run a handler (`onClick`).
31
+ */
32
+ export interface SideMenuCollapsedItem {
33
+ label: string
34
+ icon?: string
35
+ to?: string | RouteLocationRaw
36
+ href?: string
37
+ isActive?: boolean
38
+ onClick?: () => void
39
+ /** Notification indicator: a count pill (number) or a dot (`true`). */
40
+ badge?: number | boolean
41
+ }
@@ -0,0 +1,33 @@
1
+ import { onBeforeUnmount, onMounted, ref, type Ref } from 'vue'
2
+
3
+ // When is a side menu item's text label hidden? (see UiSideMenuItemContent)
4
+ // - mobile width (< 768px): the inline `md:hidden` label IS shown
5
+ // - desktop, tall (>= 600px height): the bottom `.hidden-on-short-height`
6
+ // label IS shown
7
+ // - desktop, short (< 600px height): BOTH labels hidden
8
+ // So the label is hidden only on short-height desktop. We also require a
9
+ // hover-capable, fine pointer so touch/mobile never get a hover tooltip.
10
+ const LABEL_HIDDEN_QUERY =
11
+ '(min-width: 768px) and (max-height: 599.98px) and (hover: hover) and (pointer: fine)'
12
+
13
+ export function useLabelHidden (): Ref<boolean> {
14
+ const labelHidden = ref(false)
15
+ let mql: MediaQueryList | null = null
16
+
17
+ const update = (e: MediaQueryListEvent | MediaQueryList) => {
18
+ labelHidden.value = e.matches
19
+ }
20
+
21
+ onMounted(() => {
22
+ if (typeof window === 'undefined') return
23
+ mql = window.matchMedia(LABEL_HIDDEN_QUERY)
24
+ labelHidden.value = mql.matches
25
+ mql.addEventListener('change', update)
26
+ })
27
+
28
+ onBeforeUnmount(() => {
29
+ mql?.removeEventListener('change', update)
30
+ })
31
+
32
+ return labelHidden
33
+ }
@@ -0,0 +1,12 @@
1
+ import { inject } from 'vue'
2
+ import { SIDE_MENU_LAYOUT_KEY } from './injection'
3
+
4
+ /**
5
+ * Read the parent UiSideMenu's layout context. Returns `undefined` when
6
+ * used outside a UiSideMenu (e.g. in isolation). Consumers typically use
7
+ * this to anchor their own popovers to the More button on short-height
8
+ * screens, where the #bottom slot is visually hidden.
9
+ */
10
+ export function useSideMenuLayout () {
11
+ return inject(SIDE_MENU_LAYOUT_KEY, undefined)
12
+ }
@@ -0,0 +1,40 @@
1
+ <script setup lang="ts">
2
+ import type { StepperRootEmits, StepperRootProps } from 'reka-ui'
3
+ import { StepperRoot, useForwardPropsEmits } from 'reka-ui'
4
+ import { computed, provide, toRef } from 'vue'
5
+
6
+ const props = defineProps<StepperRootProps>()
7
+ const emits = defineEmits<StepperRootEmits>()
8
+
9
+ const forwarded = useForwardPropsEmits(props, emits)
10
+
11
+ const isHorizontal = computed(() => props.orientation === 'horizontal')
12
+
13
+ // Provide orientation to child components
14
+ provide('stepperOrientation', toRef(props, 'orientation'))
15
+ </script>
16
+
17
+ <template>
18
+ <StepperRoot
19
+ v-bind="{ ...forwarded, ...$attrs }"
20
+ class="ui-stepper"
21
+ :class="{
22
+ 'ui-stepper--horizontal': isHorizontal,
23
+ 'ui-stepper--vertical': !isHorizontal,
24
+ }"
25
+ >
26
+ <slot />
27
+ </StepperRoot>
28
+ </template>
29
+
30
+ <style>
31
+ @reference '@livestorm/ui-tokens/output/supernova/index.css';
32
+
33
+ .ui-stepper--horizontal {
34
+ @apply flex items-start gap-8;
35
+ }
36
+
37
+ .ui-stepper--vertical > *:not(:last-child) {
38
+ @apply mb-2;
39
+ }
40
+ </style>
@@ -0,0 +1,27 @@
1
+ <script setup lang="ts">
2
+ import type { StepperDescriptionProps } from 'reka-ui'
3
+ import { StepperDescription } from 'reka-ui'
4
+
5
+ defineProps<StepperDescriptionProps>()
6
+ </script>
7
+
8
+ <template>
9
+ <StepperDescription
10
+ v-bind="$attrs"
11
+ :class="[
12
+ 'ui-stepper-description',
13
+ 'transition-all duration-200',
14
+ ]"
15
+ >
16
+ <slot />
17
+ </StepperDescription>
18
+ </template>
19
+
20
+ <style scoped>
21
+ @reference '@livestorm/ui-tokens/output/supernova/index.css';
22
+
23
+ .ui-stepper-description {
24
+ @apply max-w-60 truncate;
25
+ @apply text-content-text-md-regular text-text-neutral-tertiary block;
26
+ }
27
+ </style>
@@ -0,0 +1,93 @@
1
+ <script setup lang="ts">
2
+ import type { StepperIndicatorProps } from 'reka-ui'
3
+ import { StepperIndicator } from 'reka-ui'
4
+
5
+ type Size = 'sm' | 'md' | 'lg'
6
+
7
+ interface UiStepperIndicatorProps extends StepperIndicatorProps {
8
+ size?: Size
9
+ showCheckmark?: boolean
10
+ icon?: string
11
+ }
12
+
13
+ const { size = 'md', showCheckmark = true, icon } = defineProps<UiStepperIndicatorProps>()
14
+
15
+ const sizeClasses = {
16
+ sm: 'size-6 text-content-text-md-regular',
17
+ md: 'size-8 text-content-text-md-regular',
18
+ lg: 'size-10 text-content-text-lg-regular',
19
+ }
20
+
21
+ const iconSizeClasses = {
22
+ sm: 'size-3',
23
+ md: 'size-4',
24
+ lg: 'size-5',
25
+ }
26
+ </script>
27
+
28
+ <template>
29
+ <StepperIndicator
30
+ v-bind="$attrs"
31
+ class="stepper-indicator"
32
+ :class="sizeClasses[size]"
33
+ >
34
+ <span
35
+ v-if="icon"
36
+ class="stepper-custom-icon"
37
+ :class="[iconSizeClasses[size], icon]"
38
+ />
39
+
40
+ <span
41
+ v-if="showCheckmark"
42
+ class="stepper-checkmark i-ls-check"
43
+ :class="iconSizeClasses[size]"
44
+ />
45
+
46
+ <span class="stepper-number">
47
+ <slot />
48
+ </span>
49
+ </StepperIndicator>
50
+ </template>
51
+
52
+ <style>
53
+ @reference '@livestorm/ui-tokens/output/supernova/index.css';
54
+
55
+ .stepper-indicator {
56
+ @apply flex items-center justify-center shrink-0;
57
+ @apply rounded-full;
58
+ @apply transition-all duration-200 font-semibold;
59
+ @apply bg-surface-neutral-alpha-200 text-text-neutral-base;
60
+ }
61
+
62
+ [data-state="active"] .stepper-indicator {
63
+ @apply bg-surface-primary-bg-alpha text-text-neutral-invert-base;
64
+ }
65
+
66
+ .stepper-custom-icon {
67
+ @apply block;
68
+ }
69
+
70
+ [data-state="completed"] .stepper-custom-icon {
71
+ @apply hidden;
72
+ }
73
+
74
+ .stepper-custom-icon ~ .stepper-number {
75
+ @apply hidden;
76
+ }
77
+
78
+ [data-state="completed"] .stepper-custom-icon ~ .stepper-number {
79
+ @apply block;
80
+ }
81
+
82
+ .stepper-checkmark {
83
+ @apply hidden;
84
+ }
85
+
86
+ [data-state="completed"] .stepper-checkmark {
87
+ @apply block;
88
+ }
89
+
90
+ [data-state="completed"] .stepper-number {
91
+ @apply hidden;
92
+ }
93
+ </style>
@@ -0,0 +1,30 @@
1
+ <script setup lang="ts">
2
+ import type { StepperItemProps } from 'reka-ui'
3
+ import { StepperItem } from 'reka-ui'
4
+
5
+ interface UiStepperItemProps extends StepperItemProps {
6
+ showSeparator?: boolean
7
+ }
8
+
9
+ withDefaults(defineProps<UiStepperItemProps>(), {
10
+ showSeparator: true,
11
+ })
12
+ </script>
13
+
14
+ <template>
15
+ <StepperItem
16
+ v-bind="$attrs"
17
+ :step="step"
18
+ :disabled="disabled"
19
+ class="ui-stepper-item"
20
+ >
21
+ <slot />
22
+ </StepperItem>
23
+ </template>
24
+
25
+ <style>
26
+ @reference '@livestorm/ui-tokens/output/supernova/index.css';
27
+ .ui-stepper-item {
28
+ @apply relative;
29
+ }
30
+ </style>
@@ -0,0 +1,49 @@
1
+ <script setup lang="ts">
2
+ import type { StepperSeparatorProps } from 'reka-ui'
3
+ import { StepperSeparator } from 'reka-ui'
4
+ import { inject, computed, unref, type Ref } from 'vue'
5
+
6
+ type Orientation = 'horizontal' | 'vertical'
7
+
8
+ interface UiStepperSeparatorProps extends StepperSeparatorProps {
9
+ orientation?: Orientation
10
+ }
11
+
12
+ const props = withDefaults(defineProps<UiStepperSeparatorProps>(), {
13
+ orientation: undefined,
14
+ })
15
+
16
+ // Inject orientation from parent Stepper, fallback to prop, then default to 'vertical'
17
+ const injectedOrientation = inject<Ref<Orientation>>('stepperOrientation')
18
+ const orientation = computed(() => props.orientation || unref(injectedOrientation) || 'vertical')
19
+ </script>
20
+
21
+ <template>
22
+ <div
23
+ class="flex justify-center h-full"
24
+ :class="{
25
+ 'w-full': orientation === 'horizontal',
26
+ 'size-8': orientation === 'vertical',
27
+ }"
28
+ >
29
+ <StepperSeparator
30
+ v-bind="$attrs"
31
+ :class="[
32
+ 'ui-stepper-separator',
33
+ 'transition-colors duration-200',
34
+ {
35
+ 'h-px w-full min-w-8': orientation === 'horizontal',
36
+ 'w-px min-h-8': orientation === 'vertical',
37
+ }
38
+ ]"
39
+ />
40
+ </div>
41
+ </template>
42
+
43
+ <style scoped>
44
+ @reference '@livestorm/ui-tokens/output/supernova/index.css';
45
+
46
+ .ui-stepper-separator {
47
+ @apply bg-surface-neutral-alpha-400;
48
+ }
49
+ </style>
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import type { StepperTitleProps } from 'reka-ui'
3
+ import { StepperTitle } from 'reka-ui'
4
+
5
+ defineProps<StepperTitleProps>()
6
+ </script>
7
+
8
+ <template>
9
+ <StepperTitle
10
+ v-bind="$attrs"
11
+ :class="[
12
+ 'ui-stepper-title',
13
+ ]"
14
+ >
15
+ <slot />
16
+ </StepperTitle>
17
+ </template>
18
+
19
+ <style scoped>
20
+ @reference '@livestorm/ui-tokens/output/supernova/index.css';
21
+ .ui-stepper-title {
22
+ @apply text-content-text-lg-bold text-content-text-lg-bold text-text-neutral-secondary;
23
+ }
24
+ </style>
@@ -0,0 +1,17 @@
1
+ export { default as UiStepper } from './UiStepper.vue'
2
+ export { default as UiStepperItem } from './UiStepperItem.vue'
3
+ export { default as UiStepperIndicator } from './UiStepperIndicator.vue'
4
+ export { default as UiStepperTitle } from './UiStepperTitle.vue'
5
+ export { default as UiStepperDescription } from './UiStepperDescription.vue'
6
+ export { default as UiStepperSeparator } from './UiStepperSeparator.vue'
7
+
8
+ export {
9
+ StepperTrigger,
10
+ type StepperRootProps,
11
+ type StepperRootEmits,
12
+ type StepperItemProps,
13
+ type StepperIndicatorProps,
14
+ type StepperTitleProps,
15
+ type StepperDescriptionProps,
16
+ type StepperSeparatorProps,
17
+ } from 'reka-ui'
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import { provide, toRef } from 'vue'
3
+
4
+ export interface UiTableProps {
5
+ variant?: 'condensed' | 'large'
6
+ hoverEffect?: boolean
7
+ }
8
+
9
+ const props = withDefaults(defineProps<UiTableProps>(), {
10
+ variant: 'condensed',
11
+ hoverEffect: false,
12
+ })
13
+
14
+ provide('tableVariant', toRef(props, 'variant'))
15
+ provide('hoverEffect', toRef(props, 'hoverEffect'))
16
+ </script>
17
+
18
+ <template>
19
+ <div class="w-full">
20
+ <table class="w-full border-separate border-spacing-0">
21
+ <slot />
22
+ </table>
23
+ </div>
24
+ </template>
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <tbody>
3
+ <slot />
4
+ </tbody>
5
+ </template>
@@ -0,0 +1,26 @@
1
+ <script setup lang="ts">
2
+ import { inject, computed, unref, type Ref } from 'vue'
3
+
4
+ const variant = inject<Ref<'condensed' | 'large'>>('tableVariant')
5
+ const isEven = inject<boolean>('rowIsEven', false)
6
+ const hoverEffect = inject<Ref<boolean>>('hoverEffect')
7
+
8
+ const cellClasses = computed(() => ({
9
+ 'h-10': unref(variant) === 'condensed',
10
+ 'h-20': unref(variant) === 'large',
11
+ 'bg-surface-neutral-alpha-100': isEven,
12
+ 'group-hover:bg-surface-neutral-alpha-200': unref(hoverEffect) && isEven,
13
+ 'group-hover:bg-surface-neutral-alpha-100': unref(hoverEffect) && !isEven,
14
+ 'first:rounded-l-md': true,
15
+ 'last:rounded-r-md': true,
16
+ }))
17
+ </script>
18
+
19
+ <template>
20
+ <td
21
+ :class="cellClasses"
22
+ class="px-3 overflow-hidden text-ellipsis transition-colors"
23
+ >
24
+ <slot />
25
+ </td>
26
+ </template>
@@ -0,0 +1,17 @@
1
+ <script setup lang="ts">
2
+ import { inject, computed, unref, type Ref } from 'vue'
3
+
4
+ const variant = inject<Ref<'condensed' | 'large'>>('tableVariant')
5
+
6
+ const headerClasses = computed(() => ({
7
+ 'h-10': unref(variant) === 'condensed',
8
+ 'h-12': unref(variant) === 'large',
9
+ 'sticky top-0 z-20': true,
10
+ }))
11
+ </script>
12
+
13
+ <template>
14
+ <thead :class="headerClasses">
15
+ <slot />
16
+ </thead>
17
+ </template>