@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,1080 @@
1
+ import { defineComponent, ref, toRefs, openBlock, createBlock, unref, normalizeStyle, withCtx, renderSlot, computed, watch, mergeProps, createCommentVNode, onMounted, createVNode, watchEffect, onUnmounted, createElementBlock, Fragment, createElementVNode, createTextVNode } from "vue";
2
+ import { c as createContext } from "./createContext-BabAT1K8.js";
3
+ import { u as useDirection } from "./useDirection-B2bMgzzV.js";
4
+ import { u as useForwardExpose } from "./useForwardExpose-BcX3VRdS.js";
5
+ import { P as Primitive } from "./Primitive-D3IcFg81.js";
6
+ import { e as useResizeObserver } from "./index-Dw56kNV0.js";
7
+ import { u as useNonce } from "./useNonce-CWj1JlPB.js";
8
+ import { c as cn } from "./utils-Bz4m9VPB.js";
9
+ import { c as clamp } from "./clamp-D5Ye0kJT.js";
10
+ import { P as Presence_default, u as useStateMachine } from "./Presence-CTmUEdMR.js";
11
+ import { q as useDebounceFn, s as watchOnce, r as reactiveOmit } from "./index-DDJjWaIl.js";
12
+ const [injectScrollAreaRootContext, provideScrollAreaRootContext] = createContext("ScrollAreaRoot");
13
+ var ScrollAreaRoot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
14
+ __name: "ScrollAreaRoot",
15
+ props: {
16
+ type: {
17
+ type: String,
18
+ required: false,
19
+ default: "hover"
20
+ },
21
+ dir: {
22
+ type: String,
23
+ required: false
24
+ },
25
+ scrollHideDelay: {
26
+ type: Number,
27
+ required: false,
28
+ default: 600
29
+ },
30
+ asChild: {
31
+ type: Boolean,
32
+ required: false
33
+ },
34
+ as: {
35
+ type: null,
36
+ required: false
37
+ }
38
+ },
39
+ setup(__props, { expose: __expose }) {
40
+ const props = __props;
41
+ const cornerWidth = ref(0);
42
+ const cornerHeight = ref(0);
43
+ const viewport = ref();
44
+ const content = ref();
45
+ const scrollbarX = ref();
46
+ const scrollbarY = ref();
47
+ const scrollbarXEnabled = ref(false);
48
+ const scrollbarYEnabled = ref(false);
49
+ const { type, dir: propDir, scrollHideDelay } = toRefs(props);
50
+ const dir = useDirection(propDir);
51
+ function scrollTop() {
52
+ var _a;
53
+ (_a = viewport.value) == null ? void 0 : _a.scrollTo({ top: 0 });
54
+ }
55
+ function scrollTopLeft() {
56
+ var _a;
57
+ (_a = viewport.value) == null ? void 0 : _a.scrollTo({
58
+ top: 0,
59
+ left: 0
60
+ });
61
+ }
62
+ __expose({
63
+ viewport,
64
+ scrollTop,
65
+ scrollTopLeft
66
+ });
67
+ const { forwardRef, currentElement: scrollArea } = useForwardExpose();
68
+ provideScrollAreaRootContext({
69
+ type,
70
+ dir,
71
+ scrollHideDelay,
72
+ scrollArea,
73
+ viewport,
74
+ onViewportChange: (el) => {
75
+ viewport.value = el || void 0;
76
+ },
77
+ content,
78
+ onContentChange: (el) => {
79
+ content.value = el;
80
+ },
81
+ scrollbarX,
82
+ scrollbarXEnabled,
83
+ scrollbarY,
84
+ scrollbarYEnabled,
85
+ onScrollbarXChange: (scrollbar) => {
86
+ scrollbarX.value = scrollbar || void 0;
87
+ },
88
+ onScrollbarYChange: (scrollbar) => {
89
+ scrollbarY.value = scrollbar || void 0;
90
+ },
91
+ onScrollbarXEnabledChange: (rendered) => {
92
+ scrollbarXEnabled.value = rendered;
93
+ },
94
+ onScrollbarYEnabledChange: (rendered) => {
95
+ scrollbarYEnabled.value = rendered;
96
+ },
97
+ onCornerWidthChange: (width) => {
98
+ cornerWidth.value = width;
99
+ },
100
+ onCornerHeightChange: (height) => {
101
+ cornerHeight.value = height;
102
+ }
103
+ });
104
+ return (_ctx, _cache) => {
105
+ return openBlock(), createBlock(unref(Primitive), {
106
+ ref: unref(forwardRef),
107
+ "as-child": props.asChild,
108
+ as: _ctx.as,
109
+ dir: unref(dir),
110
+ style: normalizeStyle({
111
+ position: "relative",
112
+ ["--reka-scroll-area-corner-width"]: `${cornerWidth.value}px`,
113
+ ["--reka-scroll-area-corner-height"]: `${cornerHeight.value}px`
114
+ })
115
+ }, {
116
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
117
+ _: 3
118
+ }, 8, [
119
+ "as-child",
120
+ "as",
121
+ "dir",
122
+ "style"
123
+ ]);
124
+ };
125
+ }
126
+ });
127
+ var ScrollAreaRoot_default = ScrollAreaRoot_vue_vue_type_script_setup_true_lang_default;
128
+ var ScrollAreaCornerImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
129
+ __name: "ScrollAreaCornerImpl",
130
+ setup(__props) {
131
+ const rootContext = injectScrollAreaRootContext();
132
+ const width = ref(0);
133
+ const height = ref(0);
134
+ const hasSize = computed(() => !!width.value && !!height.value);
135
+ function setCornerHeight() {
136
+ var _a;
137
+ const offsetHeight = ((_a = rootContext.scrollbarX.value) == null ? void 0 : _a.offsetHeight) || 0;
138
+ rootContext.onCornerHeightChange(offsetHeight);
139
+ height.value = offsetHeight;
140
+ }
141
+ function setCornerWidth() {
142
+ var _a;
143
+ const offsetWidth = ((_a = rootContext.scrollbarY.value) == null ? void 0 : _a.offsetWidth) || 0;
144
+ rootContext.onCornerWidthChange(offsetWidth);
145
+ width.value = offsetWidth;
146
+ }
147
+ useResizeObserver(rootContext.scrollbarX.value, setCornerHeight);
148
+ useResizeObserver(rootContext.scrollbarY.value, setCornerWidth);
149
+ watch(() => rootContext.scrollbarX.value, setCornerHeight);
150
+ watch(() => rootContext.scrollbarY.value, setCornerWidth);
151
+ return (_ctx, _cache) => {
152
+ var _a;
153
+ return hasSize.value ? (openBlock(), createBlock(unref(Primitive), mergeProps({
154
+ key: 0,
155
+ style: {
156
+ width: `${width.value}px`,
157
+ height: `${height.value}px`,
158
+ position: "absolute",
159
+ right: unref(rootContext).dir.value === "ltr" ? 0 : void 0,
160
+ left: unref(rootContext).dir.value === "rtl" ? 0 : void 0,
161
+ bottom: 0
162
+ }
163
+ }, (_a = _ctx.$parent) == null ? void 0 : _a.$props), {
164
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
165
+ _: 3
166
+ }, 16, ["style"])) : createCommentVNode("v-if", true);
167
+ };
168
+ }
169
+ });
170
+ var ScrollAreaCornerImpl_default = ScrollAreaCornerImpl_vue_vue_type_script_setup_true_lang_default;
171
+ var ScrollAreaCorner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
172
+ __name: "ScrollAreaCorner",
173
+ props: {
174
+ asChild: {
175
+ type: Boolean,
176
+ required: false
177
+ },
178
+ as: {
179
+ type: null,
180
+ required: false
181
+ }
182
+ },
183
+ setup(__props) {
184
+ const props = __props;
185
+ const { forwardRef } = useForwardExpose();
186
+ const rootContext = injectScrollAreaRootContext();
187
+ const hasBothScrollbarsVisible = computed(() => !!rootContext.scrollbarX.value && !!rootContext.scrollbarY.value);
188
+ const hasCorner = computed(() => rootContext.type.value !== "scroll" && hasBothScrollbarsVisible.value);
189
+ return (_ctx, _cache) => {
190
+ return hasCorner.value ? (openBlock(), createBlock(ScrollAreaCornerImpl_default, mergeProps({ key: 0 }, props, { ref: unref(forwardRef) }), {
191
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
192
+ _: 3
193
+ }, 16)) : createCommentVNode("v-if", true);
194
+ };
195
+ }
196
+ });
197
+ var ScrollAreaCorner_default = ScrollAreaCorner_vue_vue_type_script_setup_true_lang_default;
198
+ function linearScale(input, output) {
199
+ return (value) => {
200
+ if (input[0] === input[1] || output[0] === output[1]) return output[0];
201
+ const ratio = (output[1] - output[0]) / (input[1] - input[0]);
202
+ return output[0] + ratio * (value - input[0]);
203
+ };
204
+ }
205
+ function getThumbSize(sizes) {
206
+ const ratio = getThumbRatio(sizes.viewport, sizes.content);
207
+ const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;
208
+ const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;
209
+ return Math.max(thumbSize, 18);
210
+ }
211
+ function getThumbRatio(viewportSize, contentSize) {
212
+ const ratio = viewportSize / contentSize;
213
+ return Number.isNaN(ratio) ? 0 : ratio;
214
+ }
215
+ function addUnlinkedScrollListener(node, handler = () => {
216
+ }) {
217
+ let prevPosition = {
218
+ left: node.scrollLeft,
219
+ top: node.scrollTop
220
+ };
221
+ let rAF = 0;
222
+ (function loop() {
223
+ const position = {
224
+ left: node.scrollLeft,
225
+ top: node.scrollTop
226
+ };
227
+ const isHorizontalScroll = prevPosition.left !== position.left;
228
+ const isVerticalScroll = prevPosition.top !== position.top;
229
+ if (isHorizontalScroll || isVerticalScroll) handler();
230
+ prevPosition = position;
231
+ rAF = window.requestAnimationFrame(loop);
232
+ })();
233
+ return () => window.cancelAnimationFrame(rAF);
234
+ }
235
+ function getThumbOffsetFromScroll(scrollPos, sizes, dir = "ltr") {
236
+ const thumbSizePx = getThumbSize(sizes);
237
+ const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;
238
+ const scrollbar = sizes.scrollbar.size - scrollbarPadding;
239
+ const maxScrollPos = sizes.content - sizes.viewport;
240
+ const maxThumbPos = scrollbar - thumbSizePx;
241
+ const scrollClampRange = dir === "ltr" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];
242
+ const scrollWithoutMomentum = clamp(scrollPos, scrollClampRange[0], scrollClampRange[1]);
243
+ const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);
244
+ return interpolate(scrollWithoutMomentum);
245
+ }
246
+ function toInt(value) {
247
+ return value ? Number.parseInt(value, 10) : 0;
248
+ }
249
+ function getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = "ltr") {
250
+ const thumbSizePx = getThumbSize(sizes);
251
+ const thumbCenter = thumbSizePx / 2;
252
+ const offset = pointerOffset || thumbCenter;
253
+ const thumbOffsetFromEnd = thumbSizePx - offset;
254
+ const minPointerPos = sizes.scrollbar.paddingStart + offset;
255
+ const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;
256
+ const maxScrollPos = sizes.content - sizes.viewport;
257
+ const scrollRange = dir === "ltr" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];
258
+ const interpolate = linearScale([minPointerPos, maxPointerPos], scrollRange);
259
+ return interpolate(pointerPos);
260
+ }
261
+ function isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {
262
+ return scrollPos > 0 && scrollPos < maxScrollPos;
263
+ }
264
+ var ScrollAreaScrollbarX_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
265
+ __name: "ScrollAreaScrollbarX",
266
+ setup(__props) {
267
+ const rootContext = injectScrollAreaRootContext();
268
+ const scrollbarVisibleContext = injectScrollAreaScrollbarVisibleContext();
269
+ const { forwardRef, currentElement: scrollbarElement } = useForwardExpose();
270
+ onMounted(() => {
271
+ if (scrollbarElement.value) rootContext.onScrollbarXChange(scrollbarElement.value);
272
+ });
273
+ const sizes = computed(() => scrollbarVisibleContext.sizes.value);
274
+ return (_ctx, _cache) => {
275
+ return openBlock(), createBlock(ScrollAreaScrollbarImpl_default, {
276
+ ref: unref(forwardRef),
277
+ "is-horizontal": true,
278
+ "data-orientation": "horizontal",
279
+ style: normalizeStyle({
280
+ bottom: 0,
281
+ left: unref(rootContext).dir.value === "rtl" ? "var(--reka-scroll-area-corner-width)" : 0,
282
+ right: unref(rootContext).dir.value === "ltr" ? "var(--reka-scroll-area-corner-width)" : 0,
283
+ ["--reka-scroll-area-thumb-width"]: sizes.value ? `${unref(getThumbSize)(sizes.value)}px` : void 0
284
+ }),
285
+ onOnDragScroll: _cache[0] || (_cache[0] = ($event) => unref(scrollbarVisibleContext).onDragScroll($event.x))
286
+ }, {
287
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
288
+ _: 3
289
+ }, 8, ["style"]);
290
+ };
291
+ }
292
+ });
293
+ var ScrollAreaScrollbarX_default = ScrollAreaScrollbarX_vue_vue_type_script_setup_true_lang_default;
294
+ var ScrollAreaScrollbarY_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
295
+ __name: "ScrollAreaScrollbarY",
296
+ setup(__props) {
297
+ const rootContext = injectScrollAreaRootContext();
298
+ const scrollbarVisibleContext = injectScrollAreaScrollbarVisibleContext();
299
+ const { forwardRef, currentElement: scrollbarElement } = useForwardExpose();
300
+ onMounted(() => {
301
+ if (scrollbarElement.value) rootContext.onScrollbarYChange(scrollbarElement.value);
302
+ });
303
+ const sizes = computed(() => scrollbarVisibleContext.sizes.value);
304
+ return (_ctx, _cache) => {
305
+ return openBlock(), createBlock(ScrollAreaScrollbarImpl_default, {
306
+ ref: unref(forwardRef),
307
+ "is-horizontal": false,
308
+ "data-orientation": "vertical",
309
+ style: normalizeStyle({
310
+ top: 0,
311
+ right: unref(rootContext).dir.value === "ltr" ? 0 : void 0,
312
+ left: unref(rootContext).dir.value === "rtl" ? 0 : void 0,
313
+ bottom: "var(--reka-scroll-area-corner-height)",
314
+ ["--reka-scroll-area-thumb-height"]: sizes.value ? `${unref(getThumbSize)(sizes.value)}px` : void 0
315
+ }),
316
+ onOnDragScroll: _cache[0] || (_cache[0] = ($event) => unref(scrollbarVisibleContext).onDragScroll($event.y))
317
+ }, {
318
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
319
+ _: 3
320
+ }, 8, ["style"]);
321
+ };
322
+ }
323
+ });
324
+ var ScrollAreaScrollbarY_default = ScrollAreaScrollbarY_vue_vue_type_script_setup_true_lang_default;
325
+ var ScrollAreaScrollbarAuto_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
326
+ __name: "ScrollAreaScrollbarAuto",
327
+ props: { forceMount: {
328
+ type: Boolean,
329
+ required: false
330
+ } },
331
+ setup(__props) {
332
+ const rootContext = injectScrollAreaRootContext();
333
+ const scrollbarContext = injectScrollAreaScrollbarContext();
334
+ const { forwardRef } = useForwardExpose();
335
+ const visible = ref(false);
336
+ const handleResize = useDebounceFn(() => {
337
+ if (rootContext.viewport.value) {
338
+ const isOverflowX = rootContext.viewport.value.offsetWidth < rootContext.viewport.value.scrollWidth;
339
+ const isOverflowY = rootContext.viewport.value.offsetHeight < rootContext.viewport.value.scrollHeight;
340
+ visible.value = scrollbarContext.isHorizontal.value ? isOverflowX : isOverflowY;
341
+ }
342
+ }, 10);
343
+ onMounted(() => handleResize());
344
+ useResizeObserver(rootContext.viewport, handleResize);
345
+ useResizeObserver(rootContext.content, handleResize);
346
+ return (_ctx, _cache) => {
347
+ return openBlock(), createBlock(unref(Presence_default), { present: _ctx.forceMount || visible.value }, {
348
+ default: withCtx(() => [createVNode(ScrollAreaScrollbarVisible_default, mergeProps(_ctx.$attrs, {
349
+ ref: unref(forwardRef),
350
+ "data-state": visible.value ? "visible" : "hidden"
351
+ }), {
352
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
353
+ _: 3
354
+ }, 16, ["data-state"])]),
355
+ _: 3
356
+ }, 8, ["present"]);
357
+ };
358
+ }
359
+ });
360
+ var ScrollAreaScrollbarAuto_default = ScrollAreaScrollbarAuto_vue_vue_type_script_setup_true_lang_default;
361
+ var ScrollAreaScrollbarGlimpse_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
362
+ inheritAttrs: false,
363
+ __name: "ScrollAreaScrollbarGlimpse",
364
+ props: { forceMount: {
365
+ type: Boolean,
366
+ required: false
367
+ } },
368
+ setup(__props) {
369
+ const rootContext = injectScrollAreaRootContext();
370
+ const scrollbarContext = injectScrollAreaScrollbarContext();
371
+ const { forwardRef } = useForwardExpose();
372
+ const { state, dispatch } = useStateMachine("hidden", {
373
+ hidden: {
374
+ POINTER_ENTER: "glimpse",
375
+ SCROLL: "scrolling"
376
+ },
377
+ glimpse: {
378
+ HIDE: "hidden",
379
+ POINTER_LEAVE: "hidden",
380
+ SCROLL: "scrolling",
381
+ POINTER_ENTER: "glimpse"
382
+ },
383
+ scrolling: {
384
+ SCROLL_END: "idle",
385
+ POINTER_ENTER: "interacting"
386
+ },
387
+ interacting: {
388
+ SCROLL: "interacting",
389
+ POINTER_LEAVE: "idle"
390
+ },
391
+ idle: {
392
+ HIDE: "hidden",
393
+ SCROLL: "scrolling",
394
+ POINTER_ENTER: "interacting"
395
+ }
396
+ });
397
+ const visible = computed(() => state.value !== "hidden");
398
+ function handlePointerEnter() {
399
+ dispatch("POINTER_ENTER");
400
+ }
401
+ function handlePointerLeave() {
402
+ dispatch("POINTER_LEAVE");
403
+ }
404
+ const debounceScrollEnd = useDebounceFn(() => dispatch("SCROLL_END"), 100);
405
+ watchEffect((onCleanup) => {
406
+ if (state.value === "glimpse") {
407
+ const timeId = window.setTimeout(() => dispatch("HIDE"), rootContext.scrollHideDelay.value);
408
+ onCleanup(() => {
409
+ window.clearTimeout(timeId);
410
+ });
411
+ }
412
+ });
413
+ watchEffect((onCleanup) => {
414
+ if (state.value === "idle") {
415
+ const timeId = window.setTimeout(() => dispatch("HIDE"), rootContext.scrollHideDelay.value);
416
+ onCleanup(() => {
417
+ window.clearTimeout(timeId);
418
+ });
419
+ }
420
+ });
421
+ watchEffect((onCleanup) => {
422
+ const viewport = rootContext.viewport.value;
423
+ const scrollDirection = scrollbarContext.isHorizontal.value ? "scrollLeft" : "scrollTop";
424
+ if (viewport) {
425
+ let prevScrollPos = viewport[scrollDirection];
426
+ const handleScroll = () => {
427
+ const scrollPos = viewport[scrollDirection];
428
+ const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;
429
+ if (hasScrollInDirectionChanged) {
430
+ dispatch("SCROLL");
431
+ debounceScrollEnd();
432
+ }
433
+ prevScrollPos = scrollPos;
434
+ };
435
+ viewport.addEventListener("scroll", handleScroll);
436
+ onCleanup(() => {
437
+ viewport.removeEventListener("scroll", handleScroll);
438
+ });
439
+ }
440
+ });
441
+ onMounted(() => {
442
+ const scrollArea = rootContext.scrollArea.value;
443
+ if (scrollArea) {
444
+ scrollArea.addEventListener("pointerenter", handlePointerEnter);
445
+ scrollArea.addEventListener("pointerleave", handlePointerLeave);
446
+ }
447
+ });
448
+ onUnmounted(() => {
449
+ const scrollArea = rootContext.scrollArea.value;
450
+ if (scrollArea) {
451
+ scrollArea.removeEventListener("pointerenter", handlePointerEnter);
452
+ scrollArea.removeEventListener("pointerleave", handlePointerLeave);
453
+ }
454
+ });
455
+ return (_ctx, _cache) => {
456
+ return openBlock(), createBlock(unref(Presence_default), { present: _ctx.forceMount || visible.value }, {
457
+ default: withCtx(() => [createVNode(ScrollAreaScrollbarAuto_default, mergeProps(_ctx.$attrs, {
458
+ ref: unref(forwardRef),
459
+ "data-state": visible.value ? "visible" : "hidden"
460
+ }), {
461
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
462
+ _: 3
463
+ }, 16, ["data-state"])]),
464
+ _: 3
465
+ }, 8, ["present"]);
466
+ };
467
+ }
468
+ });
469
+ var ScrollAreaScrollbarGlimpse_default = ScrollAreaScrollbarGlimpse_vue_vue_type_script_setup_true_lang_default;
470
+ var ScrollAreaScrollbarHover_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
471
+ inheritAttrs: false,
472
+ __name: "ScrollAreaScrollbarHover",
473
+ props: { forceMount: {
474
+ type: Boolean,
475
+ required: false
476
+ } },
477
+ setup(__props) {
478
+ const rootContext = injectScrollAreaRootContext();
479
+ const { forwardRef } = useForwardExpose();
480
+ let timeout;
481
+ const visible = ref(false);
482
+ function handlePointerEnter() {
483
+ window.clearTimeout(timeout);
484
+ visible.value = true;
485
+ }
486
+ function handlePointerLeave() {
487
+ timeout = window.setTimeout(() => {
488
+ visible.value = false;
489
+ }, rootContext.scrollHideDelay.value);
490
+ }
491
+ onMounted(() => {
492
+ const scrollArea = rootContext.scrollArea.value;
493
+ if (scrollArea) {
494
+ scrollArea.addEventListener("pointerenter", handlePointerEnter);
495
+ scrollArea.addEventListener("pointerleave", handlePointerLeave);
496
+ }
497
+ });
498
+ onUnmounted(() => {
499
+ const scrollArea = rootContext.scrollArea.value;
500
+ if (scrollArea) {
501
+ window.clearTimeout(timeout);
502
+ scrollArea.removeEventListener("pointerenter", handlePointerEnter);
503
+ scrollArea.removeEventListener("pointerleave", handlePointerLeave);
504
+ }
505
+ });
506
+ return (_ctx, _cache) => {
507
+ return openBlock(), createBlock(unref(Presence_default), { present: _ctx.forceMount || visible.value }, {
508
+ default: withCtx(() => [createVNode(ScrollAreaScrollbarAuto_default, mergeProps(_ctx.$attrs, {
509
+ ref: unref(forwardRef),
510
+ "data-state": visible.value ? "visible" : "hidden"
511
+ }), {
512
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
513
+ _: 3
514
+ }, 16, ["data-state"])]),
515
+ _: 3
516
+ }, 8, ["present"]);
517
+ };
518
+ }
519
+ });
520
+ var ScrollAreaScrollbarHover_default = ScrollAreaScrollbarHover_vue_vue_type_script_setup_true_lang_default;
521
+ var ScrollAreaScrollbarScroll_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
522
+ __name: "ScrollAreaScrollbarScroll",
523
+ props: { forceMount: {
524
+ type: Boolean,
525
+ required: false
526
+ } },
527
+ setup(__props) {
528
+ const rootContext = injectScrollAreaRootContext();
529
+ const scrollbarContext = injectScrollAreaScrollbarContext();
530
+ const { forwardRef } = useForwardExpose();
531
+ const { state, dispatch } = useStateMachine("hidden", {
532
+ hidden: { SCROLL: "scrolling" },
533
+ scrolling: {
534
+ SCROLL_END: "idle",
535
+ POINTER_ENTER: "interacting"
536
+ },
537
+ interacting: {
538
+ SCROLL: "interacting",
539
+ POINTER_LEAVE: "idle"
540
+ },
541
+ idle: {
542
+ HIDE: "hidden",
543
+ SCROLL: "scrolling",
544
+ POINTER_ENTER: "interacting"
545
+ }
546
+ });
547
+ const visible = computed(() => state.value !== "hidden");
548
+ watchEffect((onCleanup) => {
549
+ if (state.value === "idle") {
550
+ const timeId = window.setTimeout(() => dispatch("HIDE"), rootContext.scrollHideDelay.value);
551
+ onCleanup(() => {
552
+ window.clearTimeout(timeId);
553
+ });
554
+ }
555
+ });
556
+ const debounceScrollEnd = useDebounceFn(() => dispatch("SCROLL_END"), 100);
557
+ watchEffect((onCleanup) => {
558
+ const viewport = rootContext.viewport.value;
559
+ const scrollDirection = scrollbarContext.isHorizontal.value ? "scrollLeft" : "scrollTop";
560
+ if (viewport) {
561
+ let prevScrollPos = viewport[scrollDirection];
562
+ const handleScroll = () => {
563
+ const scrollPos = viewport[scrollDirection];
564
+ const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;
565
+ if (hasScrollInDirectionChanged) {
566
+ dispatch("SCROLL");
567
+ debounceScrollEnd();
568
+ }
569
+ prevScrollPos = scrollPos;
570
+ };
571
+ viewport.addEventListener("scroll", handleScroll);
572
+ onCleanup(() => {
573
+ viewport.removeEventListener("scroll", handleScroll);
574
+ });
575
+ }
576
+ });
577
+ return (_ctx, _cache) => {
578
+ return openBlock(), createBlock(unref(Presence_default), { present: _ctx.forceMount || visible.value }, {
579
+ default: withCtx(() => [createVNode(ScrollAreaScrollbarVisible_default, mergeProps(_ctx.$attrs, {
580
+ ref: unref(forwardRef),
581
+ "data-state": visible.value ? "visible" : "hidden"
582
+ }), {
583
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
584
+ _: 3
585
+ }, 16, ["data-state"])]),
586
+ _: 3
587
+ }, 8, ["present"]);
588
+ };
589
+ }
590
+ });
591
+ var ScrollAreaScrollbarScroll_default = ScrollAreaScrollbarScroll_vue_vue_type_script_setup_true_lang_default;
592
+ const [injectScrollAreaScrollbarContext, provideScrollAreaScrollbarContext] = createContext("ScrollAreaScrollbar");
593
+ var ScrollAreaScrollbar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
594
+ inheritAttrs: false,
595
+ __name: "ScrollAreaScrollbar",
596
+ props: {
597
+ orientation: {
598
+ type: String,
599
+ required: false,
600
+ default: "vertical"
601
+ },
602
+ forceMount: {
603
+ type: Boolean,
604
+ required: false
605
+ },
606
+ asChild: {
607
+ type: Boolean,
608
+ required: false
609
+ },
610
+ as: {
611
+ type: null,
612
+ required: false,
613
+ default: "div"
614
+ }
615
+ },
616
+ setup(__props) {
617
+ const props = __props;
618
+ const { forwardRef } = useForwardExpose();
619
+ const rootContext = injectScrollAreaRootContext();
620
+ const isHorizontal = computed(() => props.orientation === "horizontal");
621
+ watch(isHorizontal, () => {
622
+ if (isHorizontal.value) rootContext.onScrollbarXEnabledChange(true);
623
+ else rootContext.onScrollbarYEnabledChange(true);
624
+ }, { immediate: true });
625
+ onUnmounted(() => {
626
+ rootContext.onScrollbarXEnabledChange(false);
627
+ rootContext.onScrollbarYEnabledChange(false);
628
+ });
629
+ const { orientation, forceMount, asChild, as } = toRefs(props);
630
+ provideScrollAreaScrollbarContext({
631
+ orientation,
632
+ forceMount,
633
+ isHorizontal,
634
+ as,
635
+ asChild
636
+ });
637
+ return (_ctx, _cache) => {
638
+ return unref(rootContext).type.value === "hover" ? (openBlock(), createBlock(ScrollAreaScrollbarHover_default, mergeProps({ key: 0 }, _ctx.$attrs, {
639
+ ref: unref(forwardRef),
640
+ "force-mount": unref(forceMount)
641
+ }), {
642
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
643
+ _: 3
644
+ }, 16, ["force-mount"])) : unref(rootContext).type.value === "scroll" ? (openBlock(), createBlock(ScrollAreaScrollbarScroll_default, mergeProps({ key: 1 }, _ctx.$attrs, {
645
+ ref: unref(forwardRef),
646
+ "force-mount": unref(forceMount)
647
+ }), {
648
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
649
+ _: 3
650
+ }, 16, ["force-mount"])) : unref(rootContext).type.value === "glimpse" ? (openBlock(), createBlock(ScrollAreaScrollbarGlimpse_default, mergeProps({ key: 2 }, _ctx.$attrs, {
651
+ ref: unref(forwardRef),
652
+ "force-mount": unref(forceMount)
653
+ }), {
654
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
655
+ _: 3
656
+ }, 16, ["force-mount"])) : unref(rootContext).type.value === "auto" ? (openBlock(), createBlock(ScrollAreaScrollbarAuto_default, mergeProps({ key: 3 }, _ctx.$attrs, {
657
+ ref: unref(forwardRef),
658
+ "force-mount": unref(forceMount)
659
+ }), {
660
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
661
+ _: 3
662
+ }, 16, ["force-mount"])) : unref(rootContext).type.value === "always" ? (openBlock(), createBlock(ScrollAreaScrollbarVisible_default, mergeProps({ key: 4 }, _ctx.$attrs, {
663
+ ref: unref(forwardRef),
664
+ "data-state": "visible"
665
+ }), {
666
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
667
+ _: 3
668
+ }, 16)) : createCommentVNode("v-if", true);
669
+ };
670
+ }
671
+ });
672
+ var ScrollAreaScrollbar_default = ScrollAreaScrollbar_vue_vue_type_script_setup_true_lang_default;
673
+ const [injectScrollAreaScrollbarVisibleContext, provideScrollAreaScrollbarVisibleContext] = createContext("ScrollAreaScrollbarVisible");
674
+ var ScrollAreaScrollbarVisible_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
675
+ __name: "ScrollAreaScrollbarVisible",
676
+ setup(__props) {
677
+ const rootContext = injectScrollAreaRootContext();
678
+ const scrollbarContext = injectScrollAreaScrollbarContext();
679
+ const { forwardRef } = useForwardExpose();
680
+ const sizes = ref({
681
+ content: 0,
682
+ viewport: 0,
683
+ scrollbar: {
684
+ size: 0,
685
+ paddingStart: 0,
686
+ paddingEnd: 0
687
+ }
688
+ });
689
+ const hasThumb = computed(() => {
690
+ const thumbRatio = getThumbRatio(sizes.value.viewport, sizes.value.content);
691
+ return Boolean(thumbRatio > 0 && thumbRatio < 1);
692
+ });
693
+ const thumbRef = ref();
694
+ const pointerOffset = ref(0);
695
+ function handleWheelScroll(event, payload) {
696
+ if (isShowingScrollbarX.value) {
697
+ const scrollPos = rootContext.viewport.value.scrollLeft + event.deltaY;
698
+ rootContext.viewport.value.scrollLeft = scrollPos;
699
+ if (isScrollingWithinScrollbarBounds(scrollPos, payload)) event.preventDefault();
700
+ } else {
701
+ const scrollPos = rootContext.viewport.value.scrollTop + event.deltaY;
702
+ rootContext.viewport.value.scrollTop = scrollPos;
703
+ if (isScrollingWithinScrollbarBounds(scrollPos, payload)) event.preventDefault();
704
+ }
705
+ }
706
+ function handleThumbDown(event, payload) {
707
+ if (isShowingScrollbarX.value) pointerOffset.value = payload.x;
708
+ else pointerOffset.value = payload.y;
709
+ }
710
+ function handleThumbUp(event) {
711
+ pointerOffset.value = 0;
712
+ }
713
+ function handleSizeChange(payload) {
714
+ sizes.value = payload;
715
+ }
716
+ function getScrollPosition(pointerPos, dir) {
717
+ return getScrollPositionFromPointer(pointerPos, pointerOffset.value, sizes.value, dir);
718
+ }
719
+ const isShowingScrollbarX = computed(() => scrollbarContext.isHorizontal.value);
720
+ function onDragScroll(payload) {
721
+ if (isShowingScrollbarX.value) rootContext.viewport.value.scrollLeft = getScrollPosition(payload, rootContext.dir.value);
722
+ else rootContext.viewport.value.scrollTop = getScrollPosition(payload);
723
+ }
724
+ function onThumbPositionChange() {
725
+ if (isShowingScrollbarX.value) {
726
+ if (rootContext.viewport.value && thumbRef.value) {
727
+ const scrollPos = rootContext.viewport.value.scrollLeft;
728
+ const offset = getThumbOffsetFromScroll(scrollPos, sizes.value, rootContext.dir.value);
729
+ thumbRef.value.style.transform = `translate3d(${offset}px, 0, 0)`;
730
+ }
731
+ } else if (rootContext.viewport.value && thumbRef.value) {
732
+ const scrollPos = rootContext.viewport.value.scrollTop;
733
+ const offset = getThumbOffsetFromScroll(scrollPos, sizes.value);
734
+ thumbRef.value.style.transform = `translate3d(0, ${offset}px, 0)`;
735
+ }
736
+ }
737
+ function onThumbChange(element) {
738
+ thumbRef.value = element;
739
+ }
740
+ provideScrollAreaScrollbarVisibleContext({
741
+ sizes,
742
+ hasThumb,
743
+ handleWheelScroll,
744
+ handleThumbDown,
745
+ handleThumbUp,
746
+ handleSizeChange,
747
+ onThumbPositionChange,
748
+ onThumbChange,
749
+ onDragScroll
750
+ });
751
+ return (_ctx, _cache) => {
752
+ return isShowingScrollbarX.value ? (openBlock(), createBlock(ScrollAreaScrollbarX_default, mergeProps({ key: 0 }, _ctx.$attrs, { ref: unref(forwardRef) }), {
753
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
754
+ _: 3
755
+ }, 16)) : (openBlock(), createBlock(ScrollAreaScrollbarY_default, mergeProps({ key: 1 }, _ctx.$attrs, { ref: unref(forwardRef) }), {
756
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
757
+ _: 3
758
+ }, 16));
759
+ };
760
+ }
761
+ });
762
+ var ScrollAreaScrollbarVisible_default = ScrollAreaScrollbarVisible_vue_vue_type_script_setup_true_lang_default;
763
+ var ScrollAreaScrollbarImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
764
+ __name: "ScrollAreaScrollbarImpl",
765
+ props: { isHorizontal: {
766
+ type: Boolean,
767
+ required: true
768
+ } },
769
+ emits: [
770
+ "onDragScroll",
771
+ "onWheelScroll",
772
+ "onThumbPointerDown"
773
+ ],
774
+ setup(__props, { emit: __emit }) {
775
+ const props = __props;
776
+ const emit = __emit;
777
+ const rootContext = injectScrollAreaRootContext();
778
+ const scrollbarVisibleContext = injectScrollAreaScrollbarVisibleContext();
779
+ const scrollbarContext = injectScrollAreaScrollbarContext();
780
+ const { forwardRef, currentElement: scrollbar } = useForwardExpose();
781
+ const prevWebkitUserSelectRef = ref("");
782
+ const rectRef = ref();
783
+ function handleDragScroll(event) {
784
+ var _a, _b;
785
+ if (rectRef.value) {
786
+ const x = event.clientX - ((_a = rectRef.value) == null ? void 0 : _a.left);
787
+ const y = event.clientY - ((_b = rectRef.value) == null ? void 0 : _b.top);
788
+ emit("onDragScroll", {
789
+ x,
790
+ y
791
+ });
792
+ }
793
+ }
794
+ function handlePointerDown(event) {
795
+ const mainPointer = 0;
796
+ if (event.button === mainPointer) {
797
+ const element = event.target;
798
+ element.setPointerCapture(event.pointerId);
799
+ rectRef.value = scrollbar.value.getBoundingClientRect();
800
+ prevWebkitUserSelectRef.value = document.body.style.webkitUserSelect;
801
+ document.body.style.webkitUserSelect = "none";
802
+ if (rootContext.viewport) rootContext.viewport.value.style.scrollBehavior = "auto";
803
+ handleDragScroll(event);
804
+ }
805
+ }
806
+ function handlePointerMove(event) {
807
+ handleDragScroll(event);
808
+ }
809
+ function handlePointerUp(event) {
810
+ const element = event.target;
811
+ if (element.hasPointerCapture(event.pointerId)) element.releasePointerCapture(event.pointerId);
812
+ document.body.style.webkitUserSelect = prevWebkitUserSelectRef.value;
813
+ if (rootContext.viewport) rootContext.viewport.value.style.scrollBehavior = "";
814
+ rectRef.value = void 0;
815
+ }
816
+ function handleWheel(event) {
817
+ var _a;
818
+ const element = event.target;
819
+ const isScrollbarWheel = (_a = scrollbar.value) == null ? void 0 : _a.contains(element);
820
+ const maxScrollPos = scrollbarVisibleContext.sizes.value.content - scrollbarVisibleContext.sizes.value.viewport;
821
+ if (isScrollbarWheel) scrollbarVisibleContext.handleWheelScroll(event, maxScrollPos);
822
+ }
823
+ onMounted(() => {
824
+ document.addEventListener("wheel", handleWheel, { passive: false });
825
+ });
826
+ onUnmounted(() => {
827
+ document.removeEventListener("wheel", handleWheel);
828
+ });
829
+ function handleSizeChange() {
830
+ var _a, _b, _c, _d, _e;
831
+ if (!scrollbar.value) return;
832
+ if (props.isHorizontal) scrollbarVisibleContext.handleSizeChange({
833
+ content: ((_a = rootContext.viewport.value) == null ? void 0 : _a.scrollWidth) ?? 0,
834
+ viewport: ((_b = rootContext.viewport.value) == null ? void 0 : _b.offsetWidth) ?? 0,
835
+ scrollbar: {
836
+ size: scrollbar.value.clientWidth ?? 0,
837
+ paddingStart: toInt(getComputedStyle(scrollbar.value).paddingLeft),
838
+ paddingEnd: toInt(getComputedStyle(scrollbar.value).paddingRight)
839
+ }
840
+ });
841
+ else scrollbarVisibleContext.handleSizeChange({
842
+ content: ((_c = rootContext.viewport.value) == null ? void 0 : _c.scrollHeight) ?? 0,
843
+ viewport: ((_d = rootContext.viewport.value) == null ? void 0 : _d.offsetHeight) ?? 0,
844
+ scrollbar: {
845
+ size: ((_e = scrollbar.value) == null ? void 0 : _e.clientHeight) ?? 0,
846
+ paddingStart: toInt(getComputedStyle(scrollbar.value).paddingTop),
847
+ paddingEnd: toInt(getComputedStyle(scrollbar.value).paddingBottom)
848
+ }
849
+ });
850
+ scrollbarVisibleContext.onThumbPositionChange();
851
+ }
852
+ useResizeObserver(scrollbar, handleSizeChange);
853
+ useResizeObserver(rootContext.content, handleSizeChange);
854
+ return (_ctx, _cache) => {
855
+ return openBlock(), createBlock(unref(Primitive), {
856
+ ref: unref(forwardRef),
857
+ style: { "position": "absolute" },
858
+ "data-scrollbarimpl": "",
859
+ as: unref(scrollbarContext).as.value,
860
+ "as-child": unref(scrollbarContext).asChild.value,
861
+ onPointerdown: handlePointerDown,
862
+ onPointermove: handlePointerMove,
863
+ onPointerup: handlePointerUp
864
+ }, {
865
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
866
+ _: 3
867
+ }, 8, ["as", "as-child"]);
868
+ };
869
+ }
870
+ });
871
+ var ScrollAreaScrollbarImpl_default = ScrollAreaScrollbarImpl_vue_vue_type_script_setup_true_lang_default;
872
+ var ScrollAreaThumb_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
873
+ __name: "ScrollAreaThumb",
874
+ props: {
875
+ asChild: {
876
+ type: Boolean,
877
+ required: false
878
+ },
879
+ as: {
880
+ type: null,
881
+ required: false
882
+ }
883
+ },
884
+ setup(__props) {
885
+ const props = __props;
886
+ const rootContext = injectScrollAreaRootContext();
887
+ const scrollbarContextVisible = injectScrollAreaScrollbarVisibleContext();
888
+ function handlePointerDown(event) {
889
+ const thumb = event.target;
890
+ const thumbRect = thumb.getBoundingClientRect();
891
+ const x = event.clientX - thumbRect.left;
892
+ const y = event.clientY - thumbRect.top;
893
+ scrollbarContextVisible.handleThumbDown(event, {
894
+ x,
895
+ y
896
+ });
897
+ }
898
+ function handlePointerUp(event) {
899
+ scrollbarContextVisible.handleThumbUp(event);
900
+ }
901
+ const { forwardRef, currentElement: thumbElement } = useForwardExpose();
902
+ const removeUnlinkedScrollListenerRef = ref();
903
+ const viewport = computed(() => rootContext.viewport.value);
904
+ function handleScroll() {
905
+ if (!removeUnlinkedScrollListenerRef.value) {
906
+ const listener = addUnlinkedScrollListener(viewport.value, scrollbarContextVisible.onThumbPositionChange);
907
+ removeUnlinkedScrollListenerRef.value = listener;
908
+ scrollbarContextVisible.onThumbPositionChange();
909
+ }
910
+ }
911
+ const sizes = computed(() => scrollbarContextVisible.sizes.value);
912
+ watchOnce(sizes, () => {
913
+ scrollbarContextVisible.onThumbChange(thumbElement.value);
914
+ if (viewport.value) {
915
+ scrollbarContextVisible.onThumbPositionChange();
916
+ viewport.value.addEventListener("scroll", handleScroll);
917
+ }
918
+ });
919
+ onUnmounted(() => {
920
+ var _a;
921
+ viewport.value.removeEventListener("scroll", handleScroll);
922
+ (_a = rootContext.viewport.value) == null ? void 0 : _a.removeEventListener("scroll", handleScroll);
923
+ });
924
+ return (_ctx, _cache) => {
925
+ return openBlock(), createBlock(unref(Primitive), {
926
+ ref: unref(forwardRef),
927
+ "data-state": unref(scrollbarContextVisible).hasThumb ? "visible" : "hidden",
928
+ style: {
929
+ width: "var(--reka-scroll-area-thumb-width)",
930
+ height: "var(--reka-scroll-area-thumb-height)"
931
+ },
932
+ "as-child": props.asChild,
933
+ as: _ctx.as,
934
+ onPointerdown: handlePointerDown,
935
+ onPointerup: handlePointerUp
936
+ }, {
937
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
938
+ _: 3
939
+ }, 8, [
940
+ "data-state",
941
+ "as-child",
942
+ "as"
943
+ ]);
944
+ };
945
+ }
946
+ });
947
+ var ScrollAreaThumb_default = ScrollAreaThumb_vue_vue_type_script_setup_true_lang_default;
948
+ var ScrollAreaViewport_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
949
+ inheritAttrs: false,
950
+ __name: "ScrollAreaViewport",
951
+ props: {
952
+ nonce: {
953
+ type: String,
954
+ required: false
955
+ },
956
+ asChild: {
957
+ type: Boolean,
958
+ required: false
959
+ },
960
+ as: {
961
+ type: null,
962
+ required: false
963
+ }
964
+ },
965
+ setup(__props, { expose: __expose }) {
966
+ const props = __props;
967
+ const { nonce: propNonce } = toRefs(props);
968
+ const nonce = useNonce(propNonce);
969
+ const rootContext = injectScrollAreaRootContext();
970
+ const viewportElement = ref();
971
+ onMounted(() => {
972
+ rootContext.onViewportChange(viewportElement.value);
973
+ rootContext.onContentChange(contentElement.value);
974
+ });
975
+ __expose({ viewportElement });
976
+ const { forwardRef, currentElement: contentElement } = useForwardExpose();
977
+ return (_ctx, _cache) => {
978
+ return openBlock(), createElementBlock(Fragment, null, [createElementVNode("div", mergeProps({
979
+ ref_key: "viewportElement",
980
+ ref: viewportElement,
981
+ "data-reka-scroll-area-viewport": "",
982
+ style: {
983
+ overflowX: unref(rootContext).scrollbarXEnabled.value ? "scroll" : "hidden",
984
+ overflowY: unref(rootContext).scrollbarYEnabled.value ? "scroll" : "hidden"
985
+ }
986
+ }, _ctx.$attrs, { tabindex: 0 }), [createVNode(unref(Primitive), {
987
+ ref: unref(forwardRef),
988
+ style: normalizeStyle({ minWidth: unref(rootContext).scrollbarXEnabled.value ? "fit-content" : void 0 }),
989
+ "as-child": props.asChild,
990
+ as: _ctx.as
991
+ }, {
992
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
993
+ _: 3
994
+ }, 8, [
995
+ "style",
996
+ "as-child",
997
+ "as"
998
+ ])], 16), createVNode(unref(Primitive), {
999
+ as: "style",
1000
+ nonce: unref(nonce)
1001
+ }, {
1002
+ default: withCtx(() => _cache[0] || (_cache[0] = [createTextVNode(" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-scroll-area-viewport] { scrollbar-width:none; -ms-overflow-style:none; -webkit-overflow-scrolling:touch; } [data-reka-scroll-area-viewport]::-webkit-scrollbar { display:none; } ")])),
1003
+ _: 1,
1004
+ __: [0]
1005
+ }, 8, ["nonce"])], 64);
1006
+ };
1007
+ }
1008
+ });
1009
+ var ScrollAreaViewport_default = ScrollAreaViewport_vue_vue_type_script_setup_true_lang_default;
1010
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1011
+ __name: "ScrollBar",
1012
+ props: {
1013
+ orientation: { default: "vertical" },
1014
+ forceMount: { type: Boolean },
1015
+ asChild: { type: Boolean },
1016
+ as: {},
1017
+ class: {}
1018
+ },
1019
+ setup(__props) {
1020
+ const props = __props;
1021
+ const delegatedProps = reactiveOmit(props, "class");
1022
+ return (_ctx, _cache) => {
1023
+ return openBlock(), createBlock(unref(ScrollAreaScrollbar_default), mergeProps({ "data-slot": "scroll-area-scrollbar" }, unref(delegatedProps), {
1024
+ class: unref(cn)(
1025
+ "flex touch-none p-px transition-colors select-none",
1026
+ _ctx.orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
1027
+ _ctx.orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
1028
+ props.class
1029
+ )
1030
+ }), {
1031
+ default: withCtx(() => [
1032
+ createVNode(unref(ScrollAreaThumb_default), {
1033
+ "data-slot": "scroll-area-thumb",
1034
+ class: "bg-border relative flex-1 rounded-full"
1035
+ })
1036
+ ]),
1037
+ _: 1
1038
+ }, 16, ["class"]);
1039
+ };
1040
+ }
1041
+ });
1042
+ const _sfc_main = /* @__PURE__ */ defineComponent({
1043
+ __name: "ScrollArea",
1044
+ props: {
1045
+ type: {},
1046
+ dir: {},
1047
+ scrollHideDelay: {},
1048
+ asChild: { type: Boolean },
1049
+ as: {},
1050
+ class: {}
1051
+ },
1052
+ setup(__props) {
1053
+ const props = __props;
1054
+ const delegatedProps = reactiveOmit(props, "class");
1055
+ return (_ctx, _cache) => {
1056
+ return openBlock(), createBlock(unref(ScrollAreaRoot_default), mergeProps({ "data-slot": "scroll-area" }, unref(delegatedProps), {
1057
+ class: unref(cn)("relative", props.class)
1058
+ }), {
1059
+ default: withCtx(() => [
1060
+ createVNode(unref(ScrollAreaViewport_default), {
1061
+ "data-slot": "scroll-area-viewport",
1062
+ class: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"
1063
+ }, {
1064
+ default: withCtx(() => [
1065
+ renderSlot(_ctx.$slots, "default")
1066
+ ]),
1067
+ _: 3
1068
+ }),
1069
+ createVNode(_sfc_main$1),
1070
+ createVNode(unref(ScrollAreaCorner_default))
1071
+ ]),
1072
+ _: 3
1073
+ }, 16, ["class"]);
1074
+ };
1075
+ }
1076
+ });
1077
+ export {
1078
+ _sfc_main as ScrollArea,
1079
+ _sfc_main$1 as ScrollBar
1080
+ };