@livestorm/ui-vue 1.1.3 → 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 (401) 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 +214 -1663
  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 +131 -63
  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 -49
  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-da321c85.mjs +0 -1656
  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 -300
  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 -157
  362. package/src/components/BaseCheckbox/BaseCheckbox.vue +0 -180
  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 -155
  371. package/src/components/BaseModal/BaseModal.vue +0 -187
  372. package/src/components/BaseModal/BaseModalContent.vue +0 -166
  373. package/src/components/BaseModal/BaseModalContentOld.vue +0 -242
  374. package/src/components/BaseRadio/BaseRadio.stories.js +0 -164
  375. package/src/components/BaseRadio/BaseRadio.vue +0 -153
  376. package/src/components/BaseRating/BaseRating.spec.js +0 -46
  377. package/src/components/BaseRating/BaseRating.stories.js +0 -46
  378. package/src/components/BaseRating/BaseRating.vue +0 -119
  379. package/src/components/BaseSelect/BaseSelect.stories.js +0 -177
  380. package/src/components/BaseSelect/BaseSelect.vue +0 -443
  381. package/src/components/BaseSelect/BaseSelectGroup.vue +0 -34
  382. package/src/components/BaseSelect/BaseSelectOption.vue +0 -219
  383. package/src/components/BaseSwitch/BaseSwitch.stories.js +0 -44
  384. package/src/components/BaseSwitch/BaseSwitch.vue +0 -114
  385. package/src/components/BaseTag/BaseTag.stories.js +0 -123
  386. package/src/components/BaseTag/BaseTag.vue +0 -244
  387. package/src/css/button.postcss +0 -363
  388. package/src/css/checkbox-radio.postcss +0 -188
  389. package/src/css/icon.postcss +0 -9
  390. package/src/css/loader.postcss +0 -120
  391. package/src/css/popper.postcss +0 -161
  392. package/src/css/tailwind-utilities.postcss +0 -1
  393. package/src/css/tailwind.postcss +0 -2
  394. package/style-postcss.d.ts +0 -3
  395. package/style-postcss.js +0 -2
  396. package/tailwind.config.base.cjs +0 -88
  397. package/tailwind.config.js +0 -9
  398. package/tsconfig.check.json +0 -13
  399. package/tsconfig.json +0 -66
  400. package/vite.config.js +0 -43
  401. package/vitest.setup.js +0 -26
@@ -0,0 +1,370 @@
1
+ <script setup lang="ts">
2
+ import { computed, nextTick, ref, useSlots } from 'vue'
3
+ import UiFieldWrapper from '../UiFieldWrapper/UiFieldWrapper.vue'
4
+ import type { TextFieldSize } from './types'
5
+
6
+ interface UiTextFieldProps {
7
+ size?: TextFieldSize
8
+ modelValue?: string
9
+ placeholder?: string
10
+ disabled?: boolean
11
+ loading?: boolean
12
+ error?: boolean
13
+ label?: string
14
+ required?: boolean
15
+ labelInfo?: string
16
+ helperMessage?: string
17
+ errorMessage?: string
18
+ clearable?: boolean
19
+ type?: string
20
+ name?: string
21
+ autocomplete?: string
22
+ id?: string
23
+ ariaLabel?: string
24
+ ariaDescribedby?: string
25
+ }
26
+
27
+ const props = withDefaults(defineProps<UiTextFieldProps>(), {
28
+ size: 'md',
29
+ disabled: false,
30
+ loading: false,
31
+ error: false,
32
+ required: false,
33
+ clearable: false,
34
+ type: 'text',
35
+ modelValue: '',
36
+ ariaLabel: undefined,
37
+ ariaDescribedby: undefined,
38
+ })
39
+
40
+ const emit = defineEmits<{
41
+ 'update:modelValue': [value: string]
42
+ 'clear': []
43
+ 'focus': [event: FocusEvent]
44
+ 'blur': [event: FocusEvent]
45
+ 'keydown': [event: KeyboardEvent]
46
+ 'keyup': [event: KeyboardEvent]
47
+ }>()
48
+
49
+ const slots = useSlots()
50
+ const textFieldRef = ref<HTMLInputElement | null>(null)
51
+ const isFocused = ref(false)
52
+
53
+ const hasLeftIcon = computed(() => !!slots.icon)
54
+ const hasRightAction = computed(() => !!slots['right-action'])
55
+ const showClearButton = computed(() => props.clearable && !!props.modelValue && !props.disabled && !props.loading)
56
+
57
+ const textFieldClasses = computed(() => {
58
+ const classes = ['ui-text-field-field']
59
+
60
+ // Size classes
61
+ if (props.size === 'sm') classes.push('h-8 text-content-text-md-regular')
62
+ if (props.size === 'md') classes.push('h-10 text-content-text-md-regular')
63
+ if (props.size === 'lg') classes.push('h-12 text-content-text-md-regular')
64
+ if (props.size === 'xl') classes.push('h-16 text-content-text-md-regular')
65
+
66
+ // State classes
67
+ if (props.error) {
68
+ classes.push('ui-text-field-field--error')
69
+ } else {
70
+ classes.push('ui-text-field-field--default')
71
+ }
72
+
73
+ if (props.disabled) classes.push('ui-text-field-field--disabled')
74
+ if (isFocused.value && !props.disabled) classes.push('ui-text-field-field--focused')
75
+
76
+ return classes
77
+ })
78
+
79
+ function handleInput (event: Event) {
80
+ const target = event.target as HTMLInputElement
81
+ emit('update:modelValue', target.value)
82
+ }
83
+
84
+ function handleClear () {
85
+ emit('update:modelValue', '')
86
+ emit('clear')
87
+ textFieldRef.value?.focus()
88
+ }
89
+
90
+ function handleFocus (event: FocusEvent) {
91
+ isFocused.value = true
92
+ emit('focus', event)
93
+ }
94
+
95
+ function handleBlur (event: FocusEvent) {
96
+ isFocused.value = false
97
+ emit('blur', event)
98
+ }
99
+
100
+ function handleKeydown (event: KeyboardEvent) {
101
+ emit('keydown', event)
102
+ }
103
+
104
+ function handleKeyup (event: KeyboardEvent) {
105
+ emit('keyup', event)
106
+ }
107
+
108
+ defineExpose({
109
+ focus: () => textFieldRef.value?.focus(),
110
+ blur: () => textFieldRef.value?.blur(),
111
+ insertAtCursor: (text: string) => {
112
+ const input = textFieldRef.value
113
+ if (!input) return
114
+ const start = input.selectionStart ?? input.value.length
115
+ const end = input.selectionEnd ?? start
116
+ const before = input.value.slice(0, start)
117
+ const after = input.value.slice(end)
118
+ const newValue = before + text + after
119
+ emit('update:modelValue', newValue)
120
+ // Restore cursor position after the inserted text
121
+ nextTick(() => {
122
+ const pos = start + text.length
123
+ input.setSelectionRange(pos, pos)
124
+ input.focus()
125
+ })
126
+ },
127
+ })
128
+ </script>
129
+
130
+ <template>
131
+ <UiFieldWrapper
132
+ :id="id"
133
+ :label="label"
134
+ :required="required"
135
+ :label-info="labelInfo"
136
+ :error="error"
137
+ :helper-message="helperMessage"
138
+ :error-message="errorMessage"
139
+ >
140
+ <template #default="{ fieldId }">
141
+ <!-- Input Field -->
142
+ <div :class="textFieldClasses">
143
+ <!-- Hover/Focus Overlay -->
144
+ <div class="ui-text-field-overlay" />
145
+
146
+ <!-- Left Icon Slot -->
147
+ <div
148
+ v-if="hasLeftIcon"
149
+ class="ui-text-field-icon text-text-neutral-base"
150
+ :class="{
151
+ 'size-3': size === 'sm',
152
+ 'size-4': size === 'md' || size === 'lg',
153
+ 'size-5': size === 'xl',
154
+ }"
155
+ >
156
+ <slot name="icon" />
157
+ </div>
158
+
159
+ <!-- Input Element -->
160
+ <input
161
+ :id="id || fieldId"
162
+ ref="textFieldRef"
163
+ :type="type"
164
+ :name="name"
165
+ :value="modelValue"
166
+ :placeholder="placeholder"
167
+ :disabled="disabled || loading"
168
+ :autocomplete="autocomplete"
169
+ :aria-label="ariaLabel"
170
+ :aria-invalid="error || undefined"
171
+ :aria-describedby="ariaDescribedby || ((helperMessage || errorMessage) ? `${fieldId}-message` : undefined)"
172
+ class="ui-text-field-element text-text-neutral-base placeholder:text-text-neutral-tertiary"
173
+ @input="handleInput"
174
+ @focus="handleFocus"
175
+ @blur="handleBlur"
176
+ @keydown="handleKeydown"
177
+ @keyup="handleKeyup"
178
+ >
179
+
180
+ <!-- Right Actions -->
181
+ <div
182
+ v-if="loading || showClearButton"
183
+ class="ui-text-field-actions"
184
+ >
185
+ <!-- Loading Spinner -->
186
+ <div
187
+ v-if="loading"
188
+ class="ui-text-field-loader"
189
+ >
190
+ <span class="loader" />
191
+ </div>
192
+
193
+ <!-- Clear Button -->
194
+ <button
195
+ v-else-if="showClearButton"
196
+ type="button"
197
+ class="ui-text-field-clear text-text-neutral-base hover:text-text-neutral-secondary"
198
+ :class="{
199
+ 'size-3': size === 'sm',
200
+ 'size-4': size === 'md' || size === 'lg',
201
+ 'size-5': size === 'xl',
202
+ }"
203
+ @click="handleClear"
204
+ >
205
+ <div class="i-ls-x size-full" />
206
+ </button>
207
+ </div>
208
+
209
+ <!-- Right Action Slot (e.g. variable picker trigger) -->
210
+ <div
211
+ v-if="hasRightAction"
212
+ class="ui-text-field-actions"
213
+ >
214
+ <slot name="right-action" />
215
+ </div>
216
+ </div>
217
+ </template>
218
+ </UiFieldWrapper>
219
+ </template>
220
+
221
+ <style scoped>
222
+ @reference '@livestorm/ui-tokens/output/supernova/index.css';
223
+
224
+ .ui-text-field-field {
225
+ @apply relative flex items-center gap-1.5 w-full rounded-lg border transition-all;
226
+ @apply pl-3 pr-0;
227
+ }
228
+
229
+ .ui-text-field-field--default {
230
+ @apply bg-actions-neutral-idle-alpha-light border-borders-neutral-strong;
231
+
232
+ &:not(.ui-text-field-field--disabled) {
233
+ &:hover .ui-text-field-overlay {
234
+ @apply bg-actions-neutral-hover-overlay;
235
+ }
236
+
237
+ &.ui-text-field-field--focused {
238
+ @apply border-actions-primary-idle-alpha-strong ring-1 ring-inset ring-focus-ring;
239
+
240
+ .ui-text-field-overlay {
241
+ background: transparent;
242
+ }
243
+ }
244
+ }
245
+ }
246
+
247
+ .ui-text-field-field--error {
248
+ @apply bg-actions-danger-idle-alpha-light border-borders-danger-strong;
249
+
250
+ &:not(.ui-text-field-field--disabled) {
251
+ &:hover .ui-text-field-overlay {
252
+ @apply bg-actions-danger-hover-overlay;
253
+ }
254
+
255
+ &.ui-text-field-field--focused {
256
+ @apply border-borders-danger-strong ring-1 ring-inset ring-borders-danger-strong;
257
+
258
+ .ui-text-field-overlay {
259
+ background: transparent;
260
+ }
261
+ }
262
+ }
263
+ }
264
+
265
+ .ui-text-field-field--disabled {
266
+ @apply opacity-50 cursor-not-allowed;
267
+ }
268
+
269
+ .ui-text-field-overlay {
270
+ @apply absolute inset-0 rounded-lg pointer-events-none transition-colors;
271
+ z-index: 1;
272
+ }
273
+
274
+ .ui-text-field-icon {
275
+ @apply shrink-0 flex items-center justify-center;
276
+ position: relative;
277
+ z-index: 2;
278
+ }
279
+
280
+ /* Edge fade widths, animated by the keyframes below. @property gives them an
281
+ * interpolatable <length>; the 0px initial value shows when the animation is
282
+ * inactive. Namespaced because @property registers globally (unlike keyframes). */
283
+ @property --ui-text-field-fade-left {
284
+ syntax: '<length>';
285
+ inherits: false;
286
+ initial-value: 0px;
287
+ }
288
+
289
+ @property --ui-text-field-fade-right {
290
+ syntax: '<length>';
291
+ inherits: false;
292
+ initial-value: 0px;
293
+ }
294
+
295
+ .ui-text-field-element {
296
+ @apply flex-1 text-content-text-md-regular min-w-0;
297
+ background: transparent;
298
+ border: none;
299
+ outline: none;
300
+ position: relative;
301
+ z-index: 2;
302
+
303
+ /* The input scrolls its own text; mark it as a scroll container so the fade
304
+ * animation can track its scroll position, and hide the (rare) native bar. */
305
+ overflow-x: auto;
306
+ scrollbar-width: none;
307
+ -ms-overflow-style: none;
308
+
309
+ /* Fade the text out at whichever edge overflows, driven by the input's own
310
+ * scroll position via scroll(self x) — no JS. When the value fits, the scroll
311
+ * timeline is inactive so the widths hold at 0px (no fade); same graceful
312
+ * fallback where scroll timelines aren't supported (e.g. Firefox by default). */
313
+ -webkit-mask-image: linear-gradient(to right, #0000, #000 var(--ui-text-field-fade-left), #000 calc(100% - var(--ui-text-field-fade-right)), #0000);
314
+ mask-image: linear-gradient(to right, #0000, #000 var(--ui-text-field-fade-left), #000 calc(100% - var(--ui-text-field-fade-right)), #0000);
315
+ animation: ui-text-field-fade linear;
316
+ animation-timeline: scroll(self x);
317
+
318
+ &:disabled {
319
+ @apply cursor-not-allowed;
320
+ }
321
+
322
+ &::-webkit-scrollbar {
323
+ display: none;
324
+ }
325
+ }
326
+
327
+ @keyframes ui-text-field-fade {
328
+ /* Left fades in once scrolled off the start; right stays faded until the end. */
329
+ 0% {
330
+ --ui-text-field-fade-left: 0px;
331
+ }
332
+ 10%, 100% {
333
+ --ui-text-field-fade-left: 1.5rem;
334
+ }
335
+ 0%, 90% {
336
+ --ui-text-field-fade-right: 1.5rem;
337
+ }
338
+ 100% {
339
+ --ui-text-field-fade-right: 0px;
340
+ }
341
+ }
342
+
343
+ .ui-text-field-actions {
344
+ @apply flex items-center justify-center px-3 h-full rounded-lg;
345
+ position: relative;
346
+ z-index: 2;
347
+ }
348
+
349
+ .ui-text-field-loader {
350
+ @apply flex items-center justify-center;
351
+
352
+ .loader {
353
+ @apply w-4 h-4 rounded-full animate-spin;
354
+ border: 2px solid currentColor;
355
+ border-top-color: transparent;
356
+ }
357
+ }
358
+
359
+ .ui-text-field-clear {
360
+ @apply shrink-0 flex items-center justify-center cursor-pointer transition-colors;
361
+ background: transparent;
362
+ border: none;
363
+ outline: none;
364
+ padding: 0;
365
+
366
+ &:focus-visible {
367
+ @apply ring-2 ring-borders-neutral-strong rounded;
368
+ }
369
+ }
370
+ </style>
@@ -0,0 +1,2 @@
1
+ export { default as UiTextField } from './UiTextField.vue'
2
+ export * from './types'
@@ -0,0 +1,2 @@
1
+ export const TEXT_FIELD_SIZES = ['sm', 'md', 'lg', 'xl'] as const
2
+ export type TextFieldSize = typeof TEXT_FIELD_SIZES[number]
@@ -0,0 +1,169 @@
1
+ # UiTimeline
2
+
3
+ A flexible timeline component for displaying chronological events with various visual states.
4
+
5
+ ## Components
6
+
7
+ - `UiTimeline` - Container component for timeline items
8
+ - `UiTimelineItem` - Individual timeline event/item
9
+
10
+ ## Basic Usage
11
+
12
+ ```vue
13
+ <template>
14
+ <UiTimeline>
15
+ <UiTimelineItem>
16
+ <div>
17
+ <h4>Event Title</h4>
18
+ <p>Event description</p>
19
+ <span>2 hours ago</span>
20
+ </div>
21
+ </UiTimelineItem>
22
+ <UiTimelineItem>
23
+ <div>
24
+ <h4>Another Event</h4>
25
+ <p>Another description</p>
26
+ <span>1 day ago</span>
27
+ </div>
28
+ </UiTimelineItem>
29
+ </UiTimeline>
30
+ </template>
31
+ ```
32
+
33
+ ## Props
34
+
35
+ ### UiTimeline
36
+
37
+ | Prop | Type | Default | Description |
38
+ |------|------|---------|-------------|
39
+ | `orientation` | `'vertical' \| 'horizontal'` | `'vertical'` | Orientation of the timeline |
40
+
41
+ ### UiTimelineItem
42
+
43
+ | Prop | Type | Default | Description |
44
+ |------|------|---------|-------------|
45
+ | `variant` | `'default' \| 'primary' \| 'success' \| 'warning' \| 'danger'` | `'default'` | Visual variant of the timeline item |
46
+ | `showConnector` | `boolean` | `true` | Whether to show the connecting line |
47
+ | `indicatorSize` | `'sm' \| 'md' \| 'lg'` | `'md'` | Size of the indicator dot |
48
+ | `indicatorIcon` | `string` | `undefined` | Custom icon class for the indicator (e.g., `'i-ls-check-circle'`) |
49
+
50
+ ## Examples
51
+
52
+ ### With Variants
53
+
54
+ ```vue
55
+ <UiTimeline>
56
+ <UiTimelineItem variant="primary">
57
+ <div>Primary event</div>
58
+ </UiTimelineItem>
59
+ <UiTimelineItem variant="success">
60
+ <div>Success event</div>
61
+ </UiTimelineItem>
62
+ <UiTimelineItem variant="warning">
63
+ <div>Warning event</div>
64
+ </UiTimelineItem>
65
+ <UiTimelineItem variant="danger">
66
+ <div>Danger event</div>
67
+ </UiTimelineItem>
68
+ </UiTimeline>
69
+ ```
70
+
71
+ ### With Icons
72
+
73
+ ```vue
74
+ <UiTimeline>
75
+ <UiTimelineItem variant="primary" indicator-icon="i-ls-user" indicator-size="md">
76
+ <div>User registered</div>
77
+ </UiTimelineItem>
78
+ <UiTimelineItem variant="success" indicator-icon="i-ls-check-circle" indicator-size="md">
79
+ <div>Email verified</div>
80
+ </UiTimelineItem>
81
+ <UiTimelineItem variant="success" indicator-icon="i-ls-play-fill" indicator-size="md">
82
+ <div>Setup complete</div>
83
+ </UiTimelineItem>
84
+ </UiTimeline>
85
+ ```
86
+
87
+ ### With Rich Content
88
+
89
+ ```vue
90
+ <UiTimeline>
91
+ <UiTimelineItem variant="primary" indicator-icon="i-ls-user" indicator-size="md">
92
+ <div>
93
+ <div class="flex items-center gap-2 mb-2">
94
+ <h4 class="text-content-text-md-bold font-semibold">John Doe joined</h4>
95
+ <UiBadge color="primary" :count="1" />
96
+ </div>
97
+ <p class="text-content-text-md-regular text-text-neutral-secondary">
98
+ New team member added
99
+ </p>
100
+ <UiCard variant="transparent" padding="sm">
101
+ <div class="flex items-center gap-3">
102
+ <div class="w-10 h-10 rounded-full bg-surface-primary-alpha-200">
103
+ <!-- Avatar -->
104
+ </div>
105
+ <div>
106
+ <p class="font-semibold">John Doe</p>
107
+ <p class="text-xs text-text-neutral-tertiary">Marketing Manager</p>
108
+ </div>
109
+ </div>
110
+ </UiCard>
111
+ <span class="text-xs text-text-neutral-tertiary mt-3">Today at 2:30 PM</span>
112
+ </div>
113
+ </UiTimelineItem>
114
+ </UiTimeline>
115
+ ```
116
+
117
+ ### Different Sizes
118
+
119
+ ```vue
120
+ <UiTimeline>
121
+ <UiTimelineItem indicator-size="sm">
122
+ <div>Small indicator</div>
123
+ </UiTimelineItem>
124
+ <UiTimelineItem indicator-size="md">
125
+ <div>Medium indicator (default)</div>
126
+ </UiTimelineItem>
127
+ <UiTimelineItem indicator-size="lg">
128
+ <div>Large indicator</div>
129
+ </UiTimelineItem>
130
+ </UiTimeline>
131
+ ```
132
+
133
+ ### Billing History Example
134
+
135
+ ```vue
136
+ <UiTimeline>
137
+ <UiTimelineItem variant="success" indicator-icon="i-ls-check-circle" indicator-size="md">
138
+ <div>
139
+ <div class="flex items-center justify-between mb-2">
140
+ <h4 class="font-semibold">Payment Successful</h4>
141
+ <span class="font-semibold">$149.00</span>
142
+ </div>
143
+ <p class="text-sm text-text-neutral-secondary mb-2">
144
+ Monthly subscription - Pro Plan
145
+ </p>
146
+ <div class="flex items-center gap-2">
147
+ <UiBadge color="success" variant="light" />
148
+ <span class="text-xs text-text-success-base">Completed</span>
149
+ </div>
150
+ <span class="text-xs text-text-neutral-tertiary mt-2">Dec 15, 2025</span>
151
+ </div>
152
+ </UiTimelineItem>
153
+ </UiTimeline>
154
+ ```
155
+
156
+ ## Design Tokens
157
+
158
+ The component uses semantic design tokens from the design system:
159
+
160
+ - Surface tokens: `bg-surface-{variant}-alpha-{weight}`
161
+ - Text tokens: `text-text-{variant}-{level}`
162
+ - Border tokens: `border-borders-{variant}-{weight}`
163
+
164
+ ## Notes
165
+
166
+ - The connector line is automatically hidden for the last timeline item
167
+ - Content area padding is automatically adjusted for the last item
168
+ - Icon indicators will expand the indicator size to accommodate the icon
169
+ - Slots provide full flexibility for custom content within timeline items
@@ -0,0 +1,58 @@
1
+ <script setup lang="ts">
2
+ interface Props {
3
+ /** Orientation of the timeline */
4
+ orientation?: 'vertical' | 'horizontal'
5
+ }
6
+
7
+ const props = withDefaults(defineProps<Props>(), {
8
+ orientation: 'vertical',
9
+ })
10
+ </script>
11
+
12
+ <template>
13
+ <div
14
+ class="ui-timeline"
15
+ :class="{
16
+ 'ui-timeline--vertical': props.orientation === 'vertical',
17
+ 'ui-timeline--horizontal': props.orientation === 'horizontal',
18
+ }"
19
+ >
20
+ <slot />
21
+ </div>
22
+ </template>
23
+
24
+ <style>
25
+ @reference '@livestorm/ui-tokens/output/supernova/index.css';
26
+ .ui-timeline--vertical {
27
+ @apply flex flex-col;
28
+ }
29
+
30
+ .ui-timeline--horizontal {
31
+ @apply flex flex-row items-start gap-6;
32
+ }
33
+
34
+ /* Horizontal mode adjustments for timeline items */
35
+ .ui-timeline--horizontal .ui-timeline-item {
36
+ @apply flex-col items-center;
37
+ max-width: 200px;
38
+ }
39
+
40
+ .ui-timeline--horizontal .ui-timeline-item__indicator-wrapper {
41
+ @apply flex-row items-center;
42
+ }
43
+
44
+ .ui-timeline--horizontal .ui-timeline-item__connector {
45
+ @apply h-px w-auto mt-0 mb-0 ml-2;
46
+ min-width: 2rem;
47
+ min-height: auto;
48
+ }
49
+
50
+ .ui-timeline--horizontal .ui-timeline-item__content {
51
+ @apply pt-4 pb-0;
52
+ }
53
+
54
+ /* Hide horizontal connector for last item */
55
+ .ui-timeline--horizontal .ui-timeline-item:last-child .ui-timeline-item__connector {
56
+ @apply hidden;
57
+ }
58
+ </style>