@brumaombra/ui-vintage 0.4.0 → 0.5.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 (220) hide show
  1. package/dist/{AlertDialogTitle.vue_vue_type_script_setup_true_lang-Ca0g2mVz.js → AlertDialogTitle.vue_vue_type_script_setup_true_lang-_UW48pv7.js} +6 -5
  2. package/dist/{Busy-D1u_LUYu.js → Busy-BaCc_Jo8.js} +2 -1
  3. package/dist/{CalendarPrevButton.vue_vue_type_script_setup_true_lang-BA4Aw_Sl.js → CalendarPrevButton.vue_vue_type_script_setup_true_lang-DdzS6YGM.js} +18 -11
  4. package/dist/Card.vue_vue_type_script_setup_true_lang-D0pFVflK.js +30 -0
  5. package/dist/{Card.vue_vue_type_script_setup_true_lang-6ol3rxy1.js → CardContent.vue_vue_type_script_setup_true_lang-dBzO0q1t.js} +3 -8
  6. package/dist/{CardFooter.vue_vue_type_script_setup_true_lang-B1eS9wge.js → CardFooter.vue_vue_type_script_setup_true_lang-B5EqgrgN.js} +1 -19
  7. package/dist/CardText.vue_vue_type_script_setup_true_lang-DbDhSd3h.js +22 -0
  8. package/dist/{Collection-Coi6nyvb.js → Collection-4P3HQ4uU.js} +1 -1
  9. package/dist/{ConfigProvider-D2O0Jles.js → ConfigProvider-DYO65bNW.js} +1 -1
  10. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-C2Ug81pX.js +88 -0
  11. package/dist/DialogClose-DxCTEp0d.js +36 -0
  12. package/dist/{DialogPortal-D81oXsCY.js → DialogPortal-BiMJAKLg.js} +1 -1
  13. package/dist/{DialogTitle-CLuntLBB.js → DialogTitle-jKgSCoXM.js} +10 -6
  14. package/dist/{DialogTitle.vue_vue_type_script_setup_true_lang-BG4dvMRo.js → DialogTitle.vue_vue_type_script_setup_true_lang-CycrzAMT.js} +33 -10
  15. package/dist/{DialogTrigger-BQbSAHMb.js → DialogTrigger-Cb3rLcid.js} +5 -35
  16. package/dist/EmptyStateCard.vue_vue_type_script_setup_true_lang-BYKX6WRQ.js +59 -0
  17. package/dist/{FocusScope-DYbCtSNc.js → FocusScope-mzbqk6Y_.js} +8 -14
  18. package/dist/HugeiconsIcon.vue-By2RXWWz.js +111 -0
  19. package/dist/{Input.vue_vue_type_script_setup_true_lang-6SfPeT8d.js → Input.vue_vue_type_script_setup_true_lang-BdjbS5s7.js} +1 -1
  20. package/dist/{Label.vue_vue_type_script_setup_true_lang-pMIzCHzV.js → Label.vue_vue_type_script_setup_true_lang-CdLIMAdF.js} +2 -2
  21. package/dist/LandingContent.vue_vue_type_script_setup_true_lang-Wgtl_yeD.js +21 -0
  22. package/dist/LandingFooter.vue_vue_type_script_setup_true_lang-CDy30mYg.js +159 -0
  23. package/dist/LandingNavbar.vue_vue_type_script_setup_true_lang-0jX2tmdb.js +59 -0
  24. package/dist/LandingShell.vue_vue_type_script_setup_true_lang-BXwdQR24.js +49 -0
  25. package/dist/LanguageFlag.vue_vue_type_script_setup_true_lang-CgszKeNv.js +68 -0
  26. package/dist/LoadMoreButton.vue_vue_type_script_setup_true_lang-CGhFcsF-.js +61 -0
  27. package/dist/LoadingStateCard.vue_vue_type_script_setup_true_lang-DwyQjtZ3.js +53 -0
  28. package/dist/{MessageToast-C1L25W2l.js → MessageToast-uKrMyOZf.js} +15 -12
  29. package/dist/{NativeSelectOption.vue_vue_type_script_setup_true_lang-COnFRt8g.js → NativeSelectOption.vue_vue_type_script_setup_true_lang-CNcUI9Yh.js} +4 -3
  30. package/dist/{PopoverTrigger.vue_vue_type_script_setup_true_lang-DFZJvU_P.js → PopoverTrigger.vue_vue_type_script_setup_true_lang-Cf33q_yT.js} +11 -8
  31. package/dist/{PopperContent-h-thLTz8.js → PopperContent-DUJ8a4i0.js} +4 -4
  32. package/dist/Presence-CTmUEdMR.js +168 -0
  33. package/dist/Progress.vue_vue_type_script_setup_true_lang-BDJfyW-d.js +188 -0
  34. package/dist/{Separator.vue_vue_type_script_setup_true_lang-CMRkdntA.js → Separator.vue_vue_type_script_setup_true_lang-D9BozdWD.js} +1 -1
  35. package/dist/{SheetTitle.vue_vue_type_script_setup_true_lang-BQbpsE2c.js → SheetTitle.vue_vue_type_script_setup_true_lang-Ja7-gmXd.js} +4 -4
  36. package/dist/{Slider.vue_vue_type_script_setup_true_lang-C_CsSGAt.js → Slider.vue_vue_type_script_setup_true_lang-CSOSwGGr.js} +10 -9
  37. package/dist/{Switch.vue_vue_type_script_setup_true_lang-BG6nkPSO.js → Switch.vue_vue_type_script_setup_true_lang-C8mqOepU.js} +7 -6
  38. package/dist/{Teleport-CV0tKbq5.js → Teleport-DTOwRCqx.js} +7 -185
  39. package/dist/TimePicker.vue_vue_type_script_setup_true_lang-tbOoMfZu.js +51 -0
  40. package/dist/{TooltipTrigger.vue_vue_type_script_setup_true_lang-DEPKysA_.js → TooltipTrigger.vue_vue_type_script_setup_true_lang-BMdZRPa3.js} +9 -6
  41. package/dist/{VisuallyHiddenInput-1G1IEkBL.js → VisuallyHiddenInput-D5eipDQU.js} +1 -1
  42. package/dist/alert-dialog.js +7 -6
  43. package/dist/alert.js +8 -18
  44. package/dist/badge.js +9 -36
  45. package/dist/breadcrumb.js +159 -0
  46. package/dist/busy-indicator.js +1 -1
  47. package/dist/busy.js +1 -1
  48. package/dist/button.js +11 -7
  49. package/dist/calendar.js +1 -1
  50. package/dist/card-grid.js +58 -0
  51. package/dist/card.js +9 -6
  52. package/dist/chip.js +47 -0
  53. package/dist/color-tokens-D9BviGPK.js +40 -0
  54. package/dist/command.js +17 -33
  55. package/dist/components/card-grid/CardGrid.vue.d.ts +88 -0
  56. package/dist/components/card-grid/index.d.ts +2 -0
  57. package/dist/components/chip/Chip.vue.d.ts +17 -0
  58. package/dist/components/chip/index.d.ts +2 -0
  59. package/dist/components/confirm-dialog/confirm-dialog-state.d.ts +11 -8
  60. package/dist/components/dashboard-shell/DashboardShell.vue.d.ts +12 -2
  61. package/dist/components/data-list/DataList.vue.d.ts +21 -0
  62. package/dist/components/data-list/DataListItem.vue.d.ts +21 -0
  63. package/dist/components/data-list/DataListLabel.vue.d.ts +21 -0
  64. package/dist/components/data-list/DataListText.vue.d.ts +21 -0
  65. package/dist/components/data-list/DataListValue.vue.d.ts +21 -0
  66. package/dist/components/data-list/index.d.ts +5 -0
  67. package/dist/components/empty-state-card/EmptyStateCard.vue.d.ts +73 -0
  68. package/dist/components/empty-state-card/index.d.ts +2 -0
  69. package/dist/components/info-card/InfoCard.vue.d.ts +46 -0
  70. package/dist/components/info-card/index.d.ts +2 -0
  71. package/dist/components/landing/landing-content/LandingContent.vue.d.ts +2 -3
  72. package/dist/components/landing/landing-footer/LandingFooter.vue.d.ts +5 -10
  73. package/dist/components/landing/landing-navbar/LandingNavbar.vue.d.ts +8 -1
  74. package/dist/components/landing/landing-shell/LandingShell.vue.d.ts +0 -1
  75. package/dist/components/language-flag/LanguageFlag.vue.d.ts +14 -0
  76. package/dist/components/language-flag/flags/EnglishFlag.vue.d.ts +2 -0
  77. package/dist/components/language-flag/flags/ItalianFlag.vue.d.ts +2 -0
  78. package/dist/components/language-flag/index.d.ts +4 -0
  79. package/dist/components/language-selector/LanguageSelector.vue.d.ts +35 -0
  80. package/dist/components/language-selector/index.d.ts +3 -0
  81. package/dist/components/load-more-button/LoadMoreButton.vue.d.ts +36 -0
  82. package/dist/components/load-more-button/index.d.ts +2 -0
  83. package/dist/components/loading-state-card/LoadingStateCard.vue.d.ts +55 -0
  84. package/dist/components/loading-state-card/index.d.ts +2 -0
  85. package/dist/components/message-dialog/message-dialog-state.d.ts +9 -7
  86. package/dist/components/message-toast/index.d.ts +1 -1
  87. package/dist/components/message-toast/message-toast-state.d.ts +3 -3
  88. package/dist/components/page-header/PageHeader.vue.d.ts +48 -0
  89. package/dist/components/page-header/index.d.ts +2 -0
  90. package/dist/components/progress-component/ProgressComponent.vue.d.ts +47 -0
  91. package/dist/components/progress-component/index.d.ts +2 -0
  92. package/dist/components/single-value-card/SingleValueCard.vue.d.ts +40 -0
  93. package/dist/components/single-value-card/index.d.ts +2 -0
  94. package/dist/components/slider-form-component/SliderFormComponent.vue.d.ts +2 -2
  95. package/dist/components/text-link/TextLink.vue.d.ts +35 -0
  96. package/dist/components/text-link/index.d.ts +2 -0
  97. package/dist/components/theme-selector/ThemeSelector.vue.d.ts +2 -0
  98. package/dist/components/theme-selector/index.d.ts +2 -0
  99. package/dist/components/ui/alert/Alert.vue.d.ts +2 -2
  100. package/dist/components/ui/alert/index.d.ts +6 -5
  101. package/dist/components/ui/badge/Badge.vue.d.ts +7 -20
  102. package/dist/components/ui/badge/index.d.ts +0 -5
  103. package/dist/components/ui/breadcrumb/Breadcrumb.vue.d.ts +21 -0
  104. package/dist/components/ui/breadcrumb/BreadcrumbEllipsis.vue.d.ts +21 -0
  105. package/dist/components/ui/breadcrumb/BreadcrumbItem.vue.d.ts +21 -0
  106. package/dist/components/ui/breadcrumb/BreadcrumbLink.vue.d.ts +24 -0
  107. package/dist/components/ui/breadcrumb/BreadcrumbList.vue.d.ts +21 -0
  108. package/dist/components/ui/breadcrumb/BreadcrumbPage.vue.d.ts +21 -0
  109. package/dist/components/ui/breadcrumb/BreadcrumbSeparator.vue.d.ts +21 -0
  110. package/dist/components/ui/breadcrumb/index.d.ts +7 -0
  111. package/dist/components/ui/button/index.d.ts +6 -6
  112. package/dist/components/ui/card/Card.vue.d.ts +3 -0
  113. package/dist/components/ui/card/CardText.vue.d.ts +21 -0
  114. package/dist/components/ui/card/index.d.ts +1 -0
  115. package/dist/components/ui/date-picker/DatePicker.vue.d.ts +2 -0
  116. package/dist/components/ui/date-time-picker/DateTimePicker.vue.d.ts +27 -0
  117. package/dist/components/ui/date-time-picker/index.d.ts +2 -0
  118. package/dist/components/ui/dialog/DialogContent.vue.d.ts +4 -1
  119. package/dist/components/ui/dialog/DialogFooter.vue.d.ts +1 -4
  120. package/dist/components/ui/dialog/DialogScrollContent.vue.d.ts +4 -1
  121. package/dist/components/ui/field/index.d.ts +4 -4
  122. package/dist/components/ui/progress/Progress.vue.d.ts +9 -0
  123. package/dist/components/ui/progress/index.d.ts +1 -0
  124. package/dist/components/ui/scroll-area/ScrollArea.vue.d.ts +22 -0
  125. package/dist/components/ui/scroll-area/ScrollBar.vue.d.ts +9 -0
  126. package/dist/components/ui/scroll-area/index.d.ts +2 -0
  127. package/dist/components/ui/select/SelectItemContent.vue.d.ts +15 -0
  128. package/dist/components/ui/select/SelectValueContent.vue.d.ts +16 -0
  129. package/dist/components/ui/select/index.d.ts +2 -0
  130. package/dist/components/ui/sidebar/index.d.ts +4 -4
  131. package/dist/components/ui/table/Table.vue.d.ts +21 -0
  132. package/dist/components/ui/table/TableBody.vue.d.ts +21 -0
  133. package/dist/components/ui/table/TableCaption.vue.d.ts +21 -0
  134. package/dist/components/ui/table/TableCell.vue.d.ts +21 -0
  135. package/dist/components/ui/table/TableEmpty.vue.d.ts +24 -0
  136. package/dist/components/ui/table/TableFooter.vue.d.ts +21 -0
  137. package/dist/components/ui/table/TableHead.vue.d.ts +21 -0
  138. package/dist/components/ui/table/TableHeader.vue.d.ts +21 -0
  139. package/dist/components/ui/table/TableRow.vue.d.ts +21 -0
  140. package/dist/components/ui/table/index.d.ts +9 -0
  141. package/dist/components/ui/tabs/Tabs.vue.d.ts +28 -0
  142. package/dist/components/ui/tabs/TabsContent.vue.d.ts +22 -0
  143. package/dist/components/ui/tabs/TabsList.vue.d.ts +22 -0
  144. package/dist/components/ui/tabs/TabsTrigger.vue.d.ts +22 -0
  145. package/dist/components/ui/tabs/index.d.ts +4 -0
  146. package/dist/components/ui/textarea/Textarea.vue.d.ts +12 -0
  147. package/dist/components/ui/textarea/index.d.ts +1 -0
  148. package/dist/components/ui/time-picker/TimePicker.vue.d.ts +21 -0
  149. package/dist/components/ui/time-picker/index.d.ts +2 -0
  150. package/dist/confirm-dialog.js +15 -11
  151. package/dist/createContext-BabAT1K8.js +19 -0
  152. package/dist/dashboard-shell.js +88 -38
  153. package/dist/data-list.js +97 -0
  154. package/dist/date-picker.js +3 -82
  155. package/dist/date-time-picker.js +140 -0
  156. package/dist/dialog.js +36 -29
  157. package/dist/empty-state-card.js +5 -0
  158. package/dist/error-page.js +8 -6
  159. package/dist/field.js +2 -2
  160. package/dist/getActiveElement-Bmy6QsUb.js +9 -0
  161. package/dist/i18n/en.json.d.ts +57 -0
  162. package/dist/i18n/it.json.d.ts +57 -0
  163. package/dist/i18n.js +148 -0
  164. package/dist/{index-qGMU40e1.js → index-DDJjWaIl.js} +64 -0
  165. package/dist/{index-Cq9Ekgtb.js → index-Dw56kNV0.js} +10 -10
  166. package/dist/index.min-CZ9FIOXr.js +23 -0
  167. package/dist/info-card.js +65 -0
  168. package/dist/input.js +1 -1
  169. package/dist/label.js +1 -1
  170. package/dist/landing-content.js +5 -0
  171. package/dist/landing-footer.js +5 -0
  172. package/dist/landing-navbar.js +5 -0
  173. package/dist/landing-shell.js +5 -0
  174. package/dist/landing.js +9 -237
  175. package/dist/language-flag.js +7 -0
  176. package/dist/language-selector.js +123 -0
  177. package/dist/lib/color-tokens.d.ts +6 -0
  178. package/dist/lib/i18n.d.ts +222 -0
  179. package/dist/load-more-button.js +5 -0
  180. package/dist/loading-state-card.js +5 -0
  181. package/dist/message-dialog.js +34 -18
  182. package/dist/message-toast.js +2 -2
  183. package/dist/native-select.js +1 -1
  184. package/dist/nullish-D3tMkl6i.js +6 -0
  185. package/dist/page-header.js +57 -0
  186. package/dist/popover.js +4 -4
  187. package/dist/progress-component.js +51 -0
  188. package/dist/progress.js +4 -0
  189. package/dist/scroll-area.js +1080 -0
  190. package/dist/select.js +149 -53
  191. package/dist/separator.js +1 -1
  192. package/dist/sheet.js +3 -2
  193. package/dist/sidebar.js +10 -9
  194. package/dist/single-value-card.js +64 -0
  195. package/dist/slider-form-component.js +2 -2
  196. package/dist/slider.js +1 -1
  197. package/dist/style.css +822 -144
  198. package/dist/switch-form-component.js +2 -2
  199. package/dist/switch.js +1 -1
  200. package/dist/table.js +193 -0
  201. package/dist/tabs.js +658 -0
  202. package/dist/text-link.js +39 -0
  203. package/dist/textarea.js +37 -0
  204. package/dist/theme-selector.js +159 -0
  205. package/dist/time-picker.js +5 -0
  206. package/dist/tooltip.js +2 -2
  207. package/dist/{useDirection-SIyEYNxv.js → useDirection-B2bMgzzV.js} +1 -1
  208. package/dist/{useFocusGuards-WYWvpJy2.js → useFocusGuards-2C1jyYW5.js} +1 -1
  209. package/dist/{useFormControl-CyoJwp9r.js → useFormControl-DZ4LnB9F.js} +1 -1
  210. package/dist/{useForwardExpose-BiRQH8eO.js → useForwardExpose-BcX3VRdS.js} +1 -1
  211. package/dist/{useForwardPropsEmits-DmumnZO5.js → useForwardPropsEmits-GlUGKcIz.js} +1 -17
  212. package/dist/useId-CF6wz41D.js +16 -0
  213. package/dist/useNonce-CWj1JlPB.js +12 -0
  214. package/dist/{usePrimitiveElement-Bk3ZOslv.js → usePrimitiveElement-BCpwlakH.js} +1 -1
  215. package/dist/{useSize-BLYTFgnQ.js → useSize-DUgGY9t1.js} +1 -1
  216. package/dist/{useTypeahead-KTl4-oeq.js → useTypeahead-4RK0Emcv.js} +2 -2
  217. package/dist/{utils-BXBXPGDA.js → utils-DbR1EZn-.js} +1 -1
  218. package/dist/utils-hdwtyAF3.js +44 -0
  219. package/package.json +111 -2
  220. package/dist/HugeiconsIcon.vue-CurGbgrJ.js +0 -125
@@ -0,0 +1,37 @@
1
+ import { defineComponent, withDirectives, openBlock, createElementBlock, normalizeClass, unref, isRef, vModelText } from "vue";
2
+ import { a as useVModel } from "./index-Dw56kNV0.js";
3
+ import { c as cn } from "./utils-Bz4m9VPB.js";
4
+ const _sfc_main = /* @__PURE__ */ defineComponent({
5
+ __name: "Textarea",
6
+ props: {
7
+ class: {},
8
+ defaultValue: {},
9
+ modelValue: {}
10
+ },
11
+ emits: ["update:modelValue"],
12
+ setup(__props, { emit: __emit }) {
13
+ const props = __props;
14
+ const emits = __emit;
15
+ const modelValue = useVModel(props, "modelValue", emits, {
16
+ passive: true,
17
+ defaultValue: props.defaultValue
18
+ });
19
+ return (_ctx, _cache) => {
20
+ return withDirectives((openBlock(), createElementBlock("textarea", {
21
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(modelValue) ? modelValue.value = $event : null),
22
+ "data-slot": "textarea",
23
+ class: normalizeClass(unref(cn)(
24
+ "selection:bg-primary selection:text-primary-foreground flex field-sizing-content min-h-[120px] w-full min-w-0 rounded border border-(--border-light) bg-(--button-secondary-light) px-4 py-3 text-xs font-medium text-(--text-primary-light) outline-none transition-all duration-300 ease-in-out placeholder:text-(--text-secondary-light) placeholder:opacity-60 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60 dark:border-(--border-dark) dark:bg-(--button-secondary-dark) dark:text-(--text-primary-dark) dark:placeholder:text-(--text-secondary-dark) sm:text-sm",
25
+ "focus-visible:border-(--border-hover-light) focus-visible:ring-0 dark:focus-visible:border-(--border-hover-dark)",
26
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
27
+ props.class
28
+ ))
29
+ }, null, 2)), [
30
+ [vModelText, unref(modelValue)]
31
+ ]);
32
+ };
33
+ }
34
+ });
35
+ export {
36
+ _sfc_main as Textarea
37
+ };
@@ -0,0 +1,159 @@
1
+ import { defineComponent, ref, computed, onMounted, onUnmounted, openBlock, createBlock, unref, withCtx, createVNode, createElementBlock, Fragment, renderList, createElementVNode, toDisplayString, normalizeClass } from "vue";
2
+ import { useI18n } from "vue-i18n";
3
+ import { T as TWr, s as spr, c as bD, e as bV } from "./index.min-CZ9FIOXr.js";
4
+ import { H as HugeiconsIcon } from "./HugeiconsIcon.vue-By2RXWWz.js";
5
+ import { Button as _sfc_main$3 } from "./button.js";
6
+ import { Command as _sfc_main$5, CommandList as _sfc_main$6, CommandGroup as _sfc_main$7, CommandItem as _sfc_main$8 } from "./command.js";
7
+ import { _ as _sfc_main$1, a as _sfc_main$2, b as _sfc_main$4 } from "./PopoverTrigger.vue_vue_type_script_setup_true_lang-Cf33q_yT.js";
8
+ const _hoisted_1 = { class: "flex-1" };
9
+ const _sfc_main = /* @__PURE__ */ defineComponent({
10
+ __name: "ThemeSelector",
11
+ setup(__props) {
12
+ const { t } = useI18n();
13
+ const isOpen = ref(false);
14
+ const currentTheme = ref("auto");
15
+ let mediaQueryList;
16
+ let handleSystemThemeChange;
17
+ const getThemeIcon = (theme) => {
18
+ if (theme === "light") {
19
+ return spr;
20
+ } else if (theme === "dark") {
21
+ return bD;
22
+ } else {
23
+ return bV;
24
+ }
25
+ };
26
+ const themes = computed(() => [
27
+ { id: "light", label: t("ui.theme.light") },
28
+ { id: "dark", label: t("ui.theme.dark") },
29
+ { id: "auto", label: t("ui.theme.auto") }
30
+ ]);
31
+ const isSystemDarkPreferred = () => {
32
+ return window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
33
+ };
34
+ const applyTheme = (theme) => {
35
+ document.documentElement.classList.remove("light", "dark");
36
+ if (theme === "auto") {
37
+ if (isSystemDarkPreferred()) {
38
+ document.documentElement.classList.add("dark");
39
+ } else {
40
+ document.documentElement.classList.add("light");
41
+ }
42
+ } else {
43
+ document.documentElement.classList.add(theme);
44
+ }
45
+ localStorage.setItem("theme", theme);
46
+ };
47
+ const handleSelectTheme = (theme) => {
48
+ currentTheme.value = theme;
49
+ applyTheme(theme);
50
+ isOpen.value = false;
51
+ };
52
+ const currentThemeIcon = computed(() => {
53
+ return getThemeIcon(currentTheme.value);
54
+ });
55
+ const themeOptions = computed(() => {
56
+ return themes.value.map((theme) => ({
57
+ key: theme.id,
58
+ label: theme.label,
59
+ icon: getThemeIcon(theme.id)
60
+ }));
61
+ });
62
+ onMounted(() => {
63
+ const savedTheme = localStorage.getItem("theme") || "auto";
64
+ currentTheme.value = savedTheme;
65
+ applyTheme(savedTheme);
66
+ mediaQueryList = window.matchMedia("(prefers-color-scheme: dark)");
67
+ handleSystemThemeChange = () => {
68
+ if (currentTheme.value === "auto") {
69
+ applyTheme("auto");
70
+ }
71
+ };
72
+ mediaQueryList.addEventListener("change", handleSystemThemeChange);
73
+ });
74
+ onUnmounted(() => {
75
+ if (mediaQueryList && handleSystemThemeChange) {
76
+ mediaQueryList.removeEventListener("change", handleSystemThemeChange);
77
+ }
78
+ });
79
+ return (_ctx, _cache) => {
80
+ return openBlock(), createBlock(unref(_sfc_main$1), {
81
+ open: isOpen.value,
82
+ "onUpdate:open": _cache[0] || (_cache[0] = ($event) => isOpen.value = $event)
83
+ }, {
84
+ default: withCtx(() => [
85
+ createVNode(unref(_sfc_main$2), { "as-child": "" }, {
86
+ default: withCtx(() => [
87
+ createVNode(unref(_sfc_main$3), {
88
+ variant: "secondary",
89
+ size: "icon",
90
+ "aria-label": unref(t)("ui.theme.ariaLabel")
91
+ }, {
92
+ default: withCtx(() => [
93
+ createVNode(unref(HugeiconsIcon), {
94
+ icon: currentThemeIcon.value,
95
+ class: "h-5 w-5"
96
+ }, null, 8, ["icon"])
97
+ ]),
98
+ _: 1
99
+ }, 8, ["aria-label"])
100
+ ]),
101
+ _: 1
102
+ }),
103
+ createVNode(unref(_sfc_main$4), {
104
+ side: "bottom",
105
+ align: "end",
106
+ "side-offset": 8,
107
+ class: "w-44 !p-0"
108
+ }, {
109
+ default: withCtx(() => [
110
+ createVNode(unref(_sfc_main$5), { "model-value": currentTheme.value }, {
111
+ default: withCtx(() => [
112
+ createVNode(unref(_sfc_main$6), null, {
113
+ default: withCtx(() => [
114
+ createVNode(unref(_sfc_main$7), {
115
+ heading: unref(t)("ui.theme.title")
116
+ }, {
117
+ default: withCtx(() => [
118
+ (openBlock(true), createElementBlock(Fragment, null, renderList(themeOptions.value, (option) => {
119
+ return openBlock(), createBlock(unref(_sfc_main$8), {
120
+ key: option.key,
121
+ value: option.key,
122
+ onSelect: ($event) => handleSelectTheme(option.key)
123
+ }, {
124
+ default: withCtx(() => [
125
+ createVNode(unref(HugeiconsIcon), {
126
+ icon: option.icon,
127
+ class: "size-4"
128
+ }, null, 8, ["icon"]),
129
+ createElementVNode("span", _hoisted_1, toDisplayString(option.label), 1),
130
+ createVNode(unref(HugeiconsIcon), {
131
+ icon: unref(TWr),
132
+ class: normalizeClass(["ml-auto size-4 shrink-0", currentTheme.value === option.key ? "opacity-100" : "opacity-0"])
133
+ }, null, 8, ["icon", "class"])
134
+ ]),
135
+ _: 2
136
+ }, 1032, ["value", "onSelect"]);
137
+ }), 128))
138
+ ]),
139
+ _: 1
140
+ }, 8, ["heading"])
141
+ ]),
142
+ _: 1
143
+ })
144
+ ]),
145
+ _: 1
146
+ }, 8, ["model-value"])
147
+ ]),
148
+ _: 1
149
+ })
150
+ ]),
151
+ _: 1
152
+ }, 8, ["open"]);
153
+ };
154
+ }
155
+ });
156
+ export {
157
+ _sfc_main as ThemeSelector,
158
+ _sfc_main as default
159
+ };
@@ -0,0 +1,5 @@
1
+ import { _, _ as _2 } from "./TimePicker.vue_vue_type_script_setup_true_lang-tbOoMfZu.js";
2
+ export {
3
+ _ as TimePicker,
4
+ _2 as default
5
+ };
package/dist/tooltip.js CHANGED
@@ -1,5 +1,5 @@
1
- import { T as TooltipProvider_default } from "./TooltipTrigger.vue_vue_type_script_setup_true_lang-DEPKysA_.js";
2
- import { _, a, b } from "./TooltipTrigger.vue_vue_type_script_setup_true_lang-DEPKysA_.js";
1
+ import { T as TooltipProvider_default } from "./TooltipTrigger.vue_vue_type_script_setup_true_lang-BMdZRPa3.js";
2
+ import { _, a, b } from "./TooltipTrigger.vue_vue_type_script_setup_true_lang-BMdZRPa3.js";
3
3
  import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from "vue";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "TooltipProvider",
@@ -1,4 +1,4 @@
1
- import { i as injectConfigProviderContext } from "./ConfigProvider-D2O0Jles.js";
1
+ import { i as injectConfigProviderContext } from "./ConfigProvider-DYO65bNW.js";
2
2
  import { ref, computed } from "vue";
3
3
  function useDirection(dir) {
4
4
  const context = injectConfigProviderContext({ dir: ref("ltr") });
@@ -1,5 +1,5 @@
1
1
  import { watchEffect } from "vue";
2
- import { i as isClient } from "./index-qGMU40e1.js";
2
+ import { i as isClient } from "./index-DDJjWaIl.js";
3
3
  let count = 0;
4
4
  function useFocusGuards() {
5
5
  watchEffect((cleanupFn) => {
@@ -1,5 +1,5 @@
1
1
  import { computed, toValue } from "vue";
2
- import { a as unrefElement } from "./index-Cq9Ekgtb.js";
2
+ import { u as unrefElement } from "./index-Dw56kNV0.js";
3
3
  function useFormControl(el) {
4
4
  return computed(() => {
5
5
  var _a;
@@ -1,5 +1,5 @@
1
1
  import { getCurrentInstance, ref, computed, onUpdated, triggerRef } from "vue";
2
- import { a as unrefElement } from "./index-Cq9Ekgtb.js";
2
+ import { u as unrefElement } from "./index-Dw56kNV0.js";
3
3
  function useForwardExpose() {
4
4
  const instance = getCurrentInstance();
5
5
  const currentRef = ref();
@@ -1,19 +1,4 @@
1
- import { inject, provide, getCurrentInstance, toHandlerKey, camelize, toRef, computed } from "vue";
2
- function createContext(providerComponentName, contextName) {
3
- const symbolDescription = typeof providerComponentName === "string" && !contextName ? `${providerComponentName}Context` : contextName;
4
- const injectionKey = Symbol(symbolDescription);
5
- const injectContext = (fallback) => {
6
- const context = inject(injectionKey, fallback);
7
- if (context) return context;
8
- if (context === null) return context;
9
- throw new Error(`Injection \`${injectionKey.toString()}\` not found. Component must be used within ${Array.isArray(providerComponentName) ? `one of the following components: ${providerComponentName.join(", ")}` : `\`${providerComponentName}\``}`);
10
- };
11
- const provideContext = (contextValue) => {
12
- provide(injectionKey, contextValue);
13
- return contextValue;
14
- };
15
- return [injectContext, provideContext];
16
- }
1
+ import { getCurrentInstance, toHandlerKey, camelize, toRef, computed } from "vue";
17
2
  function useEmitAsProps(emit) {
18
3
  const vm = getCurrentInstance();
19
4
  const events = vm == null ? void 0 : vm.type.emits;
@@ -58,6 +43,5 @@ function useForwardPropsEmits(props, emit) {
58
43
  export {
59
44
  useForwardProps as a,
60
45
  useEmitAsProps as b,
61
- createContext as c,
62
46
  useForwardPropsEmits as u
63
47
  };
@@ -0,0 +1,16 @@
1
+ import { i as injectConfigProviderContext } from "./ConfigProvider-DYO65bNW.js";
2
+ import * as vue from "vue";
3
+ let count = 0;
4
+ function useId(deterministicId, prefix = "reka") {
5
+ var _a, _b;
6
+ let id;
7
+ if ("useId" in vue) id = (_a = vue.useId) == null ? void 0 : _a.call(vue);
8
+ else {
9
+ const configProviderContext = injectConfigProviderContext({ useId: void 0 });
10
+ id = ((_b = configProviderContext.useId) == null ? void 0 : _b.call(configProviderContext)) ?? `${++count}`;
11
+ }
12
+ return prefix ? `${prefix}-${id}` : id;
13
+ }
14
+ export {
15
+ useId as u
16
+ };
@@ -0,0 +1,12 @@
1
+ import { i as injectConfigProviderContext } from "./ConfigProvider-DYO65bNW.js";
2
+ import { ref, computed } from "vue";
3
+ function useNonce(nonce) {
4
+ const context = injectConfigProviderContext({ nonce: ref() });
5
+ return computed(() => {
6
+ var _a;
7
+ return (nonce == null ? void 0 : nonce.value) || ((_a = context.nonce) == null ? void 0 : _a.value);
8
+ });
9
+ }
10
+ export {
11
+ useNonce as u
12
+ };
@@ -1,5 +1,5 @@
1
1
  import { ref, computed } from "vue";
2
- import { a as unrefElement } from "./index-Cq9Ekgtb.js";
2
+ import { u as unrefElement } from "./index-Dw56kNV0.js";
3
3
  function usePrimitiveElement() {
4
4
  const primitiveElement = ref();
5
5
  const currentElement = computed(() => {
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, onMounted } from "vue";
2
- import { a as unrefElement } from "./index-Cq9Ekgtb.js";
2
+ import { u as unrefElement } from "./index-Dw56kNV0.js";
3
3
  function useSize(element) {
4
4
  const size = ref();
5
5
  const width = computed(() => {
@@ -4,8 +4,8 @@ var __typeError = (msg) => {
4
4
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
5
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
6
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
- import { g as getActiveElement } from "./FocusScope-DYbCtSNc.js";
8
- import { g as refAutoReset } from "./index-qGMU40e1.js";
7
+ import { g as getActiveElement } from "./getActiveElement-Bmy6QsUb.js";
8
+ import { g as refAutoReset } from "./index-DDJjWaIl.js";
9
9
  function serialize(o) {
10
10
  return typeof o == "string" ? `'${o}'` : new c().serialize(o);
11
11
  }
@@ -1,4 +1,4 @@
1
- import { g as getActiveElement } from "./FocusScope-DYbCtSNc.js";
1
+ import { g as getActiveElement } from "./getActiveElement-Bmy6QsUb.js";
2
2
  function getOpenState(open) {
3
3
  return open ? "open" : "closed";
4
4
  }
@@ -0,0 +1,44 @@
1
+ import { g as getActiveElement } from "./getActiveElement-Bmy6QsUb.js";
2
+ const ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus";
3
+ const EVENT_OPTIONS = {
4
+ bubbles: false,
5
+ cancelable: true
6
+ };
7
+ const MAP_KEY_TO_FOCUS_INTENT = {
8
+ ArrowLeft: "prev",
9
+ ArrowUp: "prev",
10
+ ArrowRight: "next",
11
+ ArrowDown: "next",
12
+ PageUp: "first",
13
+ Home: "first",
14
+ PageDown: "last",
15
+ End: "last"
16
+ };
17
+ function getDirectionAwareKey(key, dir) {
18
+ if (dir !== "rtl") return key;
19
+ return key === "ArrowLeft" ? "ArrowRight" : key === "ArrowRight" ? "ArrowLeft" : key;
20
+ }
21
+ function getFocusIntent(event, orientation, dir) {
22
+ const key = getDirectionAwareKey(event.key, dir);
23
+ if (orientation === "vertical" && ["ArrowLeft", "ArrowRight"].includes(key)) return void 0;
24
+ if (orientation === "horizontal" && ["ArrowUp", "ArrowDown"].includes(key)) return void 0;
25
+ return MAP_KEY_TO_FOCUS_INTENT[key];
26
+ }
27
+ function focusFirst(candidates, preventScroll = false) {
28
+ const PREVIOUSLY_FOCUSED_ELEMENT = getActiveElement();
29
+ for (const candidate of candidates) {
30
+ if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;
31
+ candidate.focus({ preventScroll });
32
+ if (getActiveElement() !== PREVIOUSLY_FOCUSED_ELEMENT) return;
33
+ }
34
+ }
35
+ function wrapArray(array, startIndex) {
36
+ return array.map((_, index) => array[(startIndex + index) % array.length]);
37
+ }
38
+ export {
39
+ ENTRY_FOCUS as E,
40
+ EVENT_OPTIONS as a,
41
+ focusFirst as f,
42
+ getFocusIntent as g,
43
+ wrapArray as w
44
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brumaombra/ui-vintage",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Vue 3 component library with shadcn-style primitives, app shells, dialogs, and shared theme tokens.",
5
5
  "private": false,
6
6
  "author": "Mauro Brambilla",
@@ -60,6 +60,10 @@
60
60
  "types": "./dist/components/ui/button/index.d.ts",
61
61
  "import": "./dist/button.js"
62
62
  },
63
+ "./breadcrumb": {
64
+ "types": "./dist/components/ui/breadcrumb/index.d.ts",
65
+ "import": "./dist/breadcrumb.js"
66
+ },
63
67
  "./calendar": {
64
68
  "types": "./dist/components/ui/calendar/index.d.ts",
65
69
  "import": "./dist/calendar.js"
@@ -68,6 +72,10 @@
68
72
  "types": "./dist/components/ui/card/index.d.ts",
69
73
  "import": "./dist/card.js"
70
74
  },
75
+ "./chip": {
76
+ "types": "./dist/components/chip/index.d.ts",
77
+ "import": "./dist/chip.js"
78
+ },
71
79
  "./command": {
72
80
  "types": "./dist/components/ui/command/index.d.ts",
73
81
  "import": "./dist/command.js"
@@ -76,6 +84,14 @@
76
84
  "types": "./dist/components/ui/date-picker/index.d.ts",
77
85
  "import": "./dist/date-picker.js"
78
86
  },
87
+ "./data-list": {
88
+ "types": "./dist/components/data-list/index.d.ts",
89
+ "import": "./dist/data-list.js"
90
+ },
91
+ "./date-time-picker": {
92
+ "types": "./dist/components/ui/date-time-picker/index.d.ts",
93
+ "import": "./dist/date-time-picker.js"
94
+ },
79
95
  "./dashboard-shell": {
80
96
  "types": "./dist/components/dashboard-shell/index.d.ts",
81
97
  "import": "./dist/dashboard-shell.js"
@@ -88,6 +104,14 @@
88
104
  "types": "./dist/components/ui/dialog/index.d.ts",
89
105
  "import": "./dist/dialog.js"
90
106
  },
107
+ "./card-grid": {
108
+ "types": "./dist/components/card-grid/index.d.ts",
109
+ "import": "./dist/card-grid.js"
110
+ },
111
+ "./empty-state-card": {
112
+ "types": "./dist/components/empty-state-card/index.d.ts",
113
+ "import": "./dist/empty-state-card.js"
114
+ },
91
115
  "./confirm-dialog": {
92
116
  "types": "./dist/components/confirm-dialog/index.d.ts",
93
117
  "import": "./dist/confirm-dialog.js"
@@ -112,26 +136,86 @@
112
136
  "types": "./dist/components/ui/input/index.d.ts",
113
137
  "import": "./dist/input.js"
114
138
  },
139
+ "./info-card": {
140
+ "types": "./dist/components/info-card/index.d.ts",
141
+ "import": "./dist/info-card.js"
142
+ },
115
143
  "./label": {
116
144
  "types": "./dist/components/ui/label/index.d.ts",
117
145
  "import": "./dist/label.js"
118
146
  },
147
+ "./i18n": {
148
+ "types": "./dist/lib/i18n.d.ts",
149
+ "import": "./dist/i18n.js"
150
+ },
151
+ "./language-flag": {
152
+ "types": "./dist/components/language-flag/index.d.ts",
153
+ "import": "./dist/language-flag.js"
154
+ },
155
+ "./language-selector": {
156
+ "types": "./dist/components/language-selector/index.d.ts",
157
+ "import": "./dist/language-selector.js"
158
+ },
159
+ "./load-more-button": {
160
+ "types": "./dist/components/load-more-button/index.d.ts",
161
+ "import": "./dist/load-more-button.js"
162
+ },
163
+ "./loading-state-card": {
164
+ "types": "./dist/components/loading-state-card/index.d.ts",
165
+ "import": "./dist/loading-state-card.js"
166
+ },
119
167
  "./landing": {
120
168
  "types": "./dist/components/landing/index.d.ts",
121
169
  "import": "./dist/landing.js"
122
170
  },
171
+ "./landing-content": {
172
+ "types": "./dist/components/landing/landing-content/index.d.ts",
173
+ "import": "./dist/landing-content.js"
174
+ },
175
+ "./landing-footer": {
176
+ "types": "./dist/components/landing/landing-footer/index.d.ts",
177
+ "import": "./dist/landing-footer.js"
178
+ },
179
+ "./landing-navbar": {
180
+ "types": "./dist/components/landing/landing-navbar/index.d.ts",
181
+ "import": "./dist/landing-navbar.js"
182
+ },
183
+ "./landing-shell": {
184
+ "types": "./dist/components/landing/landing-shell/index.d.ts",
185
+ "import": "./dist/landing-shell.js"
186
+ },
123
187
  "./popover": {
124
188
  "types": "./dist/components/ui/popover/index.d.ts",
125
189
  "import": "./dist/popover.js"
126
190
  },
191
+ "./progress": {
192
+ "types": "./dist/components/ui/progress/index.d.ts",
193
+ "import": "./dist/progress.js"
194
+ },
195
+ "./progress-component": {
196
+ "types": "./dist/components/progress-component/index.d.ts",
197
+ "import": "./dist/progress-component.js"
198
+ },
199
+ "./page-header": {
200
+ "types": "./dist/components/page-header/index.d.ts",
201
+ "import": "./dist/page-header.js"
202
+ },
127
203
  "./select": {
128
204
  "types": "./dist/components/ui/select/index.d.ts",
129
205
  "import": "./dist/select.js"
130
206
  },
207
+ "./scroll-area": {
208
+ "types": "./dist/components/ui/scroll-area/index.d.ts",
209
+ "import": "./dist/scroll-area.js"
210
+ },
131
211
  "./separator": {
132
212
  "types": "./dist/components/ui/separator/index.d.ts",
133
213
  "import": "./dist/separator.js"
134
214
  },
215
+ "./single-value-card": {
216
+ "types": "./dist/components/single-value-card/index.d.ts",
217
+ "import": "./dist/single-value-card.js"
218
+ },
135
219
  "./sheet": {
136
220
  "types": "./dist/components/ui/sheet/index.d.ts",
137
221
  "import": "./dist/sheet.js"
@@ -160,6 +244,30 @@
160
244
  "types": "./dist/components/switch-form-component/index.d.ts",
161
245
  "import": "./dist/switch-form-component.js"
162
246
  },
247
+ "./tabs": {
248
+ "types": "./dist/components/ui/tabs/index.d.ts",
249
+ "import": "./dist/tabs.js"
250
+ },
251
+ "./table": {
252
+ "types": "./dist/components/ui/table/index.d.ts",
253
+ "import": "./dist/table.js"
254
+ },
255
+ "./text-link": {
256
+ "types": "./dist/components/text-link/index.d.ts",
257
+ "import": "./dist/text-link.js"
258
+ },
259
+ "./textarea": {
260
+ "types": "./dist/components/ui/textarea/index.d.ts",
261
+ "import": "./dist/textarea.js"
262
+ },
263
+ "./theme-selector": {
264
+ "types": "./dist/components/theme-selector/index.d.ts",
265
+ "import": "./dist/theme-selector.js"
266
+ },
267
+ "./time-picker": {
268
+ "types": "./dist/components/ui/time-picker/index.d.ts",
269
+ "import": "./dist/time-picker.js"
270
+ },
163
271
  "./tooltip": {
164
272
  "types": "./dist/components/ui/tooltip/index.d.ts",
165
273
  "import": "./dist/tooltip.js"
@@ -178,7 +286,8 @@
178
286
  "typecheck": "vue-tsc --noEmit"
179
287
  },
180
288
  "peerDependencies": {
181
- "vue": "^3.5.0"
289
+ "vue": "^3.5.0",
290
+ "vue-i18n": "^9.0.0 || ^10.0.0"
182
291
  },
183
292
  "dependencies": {
184
293
  "@hugeicons/core-free-icons": "4.1.1",