@ultraviolet/ui 3.0.0-beta.27 → 3.0.0-beta.29

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 (323) hide show
  1. package/README.md +47 -18
  2. package/dist/components/ActionBar/index.js +19 -7
  3. package/dist/components/Alert/index.d.ts +2 -1
  4. package/dist/components/Alert/index.js +98 -20
  5. package/dist/components/Alert/styles.css.d.ts +10 -1
  6. package/dist/components/Alert/styles.css.js +7 -5
  7. package/dist/components/Avatar/index.d.ts +1 -1
  8. package/dist/components/Avatar/index.js +46 -36
  9. package/dist/components/Avatar/styles.css.js +0 -1
  10. package/dist/components/Avatar/variables.css.js +1 -0
  11. package/dist/components/Badge/index.d.ts +1 -1
  12. package/dist/components/Badge/index.js +19 -8
  13. package/dist/components/Banner/index.d.ts +1 -1
  14. package/dist/components/Banner/index.js +87 -28
  15. package/dist/components/BarChart/Tooltip.d.ts +1 -1
  16. package/dist/components/BarChart/Tooltip.js +23 -10
  17. package/dist/components/BarChart/index.d.ts +1 -1
  18. package/dist/components/BarChart/index.js +51 -31
  19. package/dist/components/BarStack/index.d.ts +1 -1
  20. package/dist/components/BarStack/index.js +64 -19
  21. package/dist/components/Breadcrumbs/components/Item.d.ts +1 -1
  22. package/dist/components/Breadcrumbs/components/Item.js +48 -12
  23. package/dist/components/Breadcrumbs/index.js +11 -2
  24. package/dist/components/Bullet/index.d.ts +1 -1
  25. package/dist/components/Bullet/index.js +10 -7
  26. package/dist/components/Button/index.js +122 -72
  27. package/dist/components/Card/index.js +80 -20
  28. package/dist/components/Carousel/index.d.ts +3 -3
  29. package/dist/components/Carousel/index.js +72 -26
  30. package/dist/components/Checkbox/index.js +139 -43
  31. package/dist/components/CheckboxGroup/index.d.ts +3 -3
  32. package/dist/components/CheckboxGroup/index.js +77 -24
  33. package/dist/components/Chip/ChipIcon.d.ts +1 -1
  34. package/dist/components/Chip/ChipIcon.js +46 -12
  35. package/dist/components/Chip/index.d.ts +3 -3
  36. package/dist/components/Chip/index.js +36 -11
  37. package/dist/components/CopyButton/index.d.ts +1 -1
  38. package/dist/components/CopyButton/index.js +23 -8
  39. package/dist/components/DateInput/components/CalendarContent.d.ts +1 -1
  40. package/dist/components/DateInput/components/CalendarContent.js +61 -26
  41. package/dist/components/DateInput/components/CalendarDaily.d.ts +1 -1
  42. package/dist/components/DateInput/components/CalendarDaily.js +105 -62
  43. package/dist/components/DateInput/components/CalendarMonthly.d.ts +1 -1
  44. package/dist/components/DateInput/components/CalendarMonthly.js +62 -39
  45. package/dist/components/DateInput/components/Popup.d.ts +1 -1
  46. package/dist/components/DateInput/components/Popup.js +29 -6
  47. package/dist/components/DateInput/helpers.js +9 -2
  48. package/dist/components/DateInput/helpersLocale.js +3 -9
  49. package/dist/components/DateInput/index.d.ts +1 -1
  50. package/dist/components/DateInput/index.js +193 -62
  51. package/dist/components/Dialog/Context.js +3 -1
  52. package/dist/components/Dialog/components/Button.d.ts +1 -1
  53. package/dist/components/Dialog/components/Button.js +12 -2
  54. package/dist/components/Dialog/components/Buttons.d.ts +1 -1
  55. package/dist/components/Dialog/components/Buttons.js +1 -1
  56. package/dist/components/Dialog/components/CancelButton.d.ts +1 -1
  57. package/dist/components/Dialog/components/CancelButton.js +12 -2
  58. package/dist/components/Dialog/components/Stack.d.ts +1 -1
  59. package/dist/components/Dialog/components/Stack.js +2 -5
  60. package/dist/components/Dialog/components/Text.d.ts +1 -1
  61. package/dist/components/Dialog/components/Text.js +2 -5
  62. package/dist/components/Dialog/index.d.ts +7 -7
  63. package/dist/components/Dialog/index.js +43 -12
  64. package/dist/components/Drawer/index.d.ts +4 -4
  65. package/dist/components/Drawer/index.js +53 -15
  66. package/dist/components/EmptyState/index.d.ts +1 -1
  67. package/dist/components/EmptyState/index.js +63 -21
  68. package/dist/components/Expandable/index.d.ts +2 -2
  69. package/dist/components/Expandable/index.js +52 -15
  70. package/dist/components/ExpandableCard/components/Title.d.ts +1 -1
  71. package/dist/components/ExpandableCard/components/Title.js +12 -2
  72. package/dist/components/ExpandableCard/index.d.ts +1 -1
  73. package/dist/components/ExpandableCard/index.js +197 -96
  74. package/dist/components/GlobalAlert/GlobalAlertLink.d.ts +1 -1
  75. package/dist/components/GlobalAlert/GlobalAlertLink.js +21 -5
  76. package/dist/components/GlobalAlert/index.d.ts +2 -2
  77. package/dist/components/GlobalAlert/index.js +51 -11
  78. package/dist/components/InfiniteScroll/index.d.ts +1 -1
  79. package/dist/components/InfiniteScroll/index.js +40 -33
  80. package/dist/components/Key/index.d.ts +1 -1
  81. package/dist/components/Key/index.js +29 -8
  82. package/dist/components/Label/index.d.ts +1 -1
  83. package/dist/components/Label/index.js +67 -6
  84. package/dist/components/LineChart/CustomLegend.d.ts +1 -1
  85. package/dist/components/LineChart/CustomLegend.js +69 -45
  86. package/dist/components/LineChart/Tooltip.d.ts +1 -1
  87. package/dist/components/LineChart/Tooltip.js +31 -9
  88. package/dist/components/LineChart/helpers.js +13 -12
  89. package/dist/components/LineChart/index.d.ts +1 -1
  90. package/dist/components/LineChart/index.js +56 -40
  91. package/dist/components/Link/index.js +74 -57
  92. package/dist/components/List/Cell.js +24 -22
  93. package/dist/components/List/ColumnProvider.d.ts +1 -1
  94. package/dist/components/List/ColumnProvider.js +12 -6
  95. package/dist/components/List/HeaderCell.d.ts +1 -1
  96. package/dist/components/List/HeaderCell.js +36 -19
  97. package/dist/components/List/HeaderRow.d.ts +1 -1
  98. package/dist/components/List/HeaderRow.js +14 -12
  99. package/dist/components/List/ListContext.d.ts +1 -1
  100. package/dist/components/List/ListContext.js +128 -78
  101. package/dist/components/List/Row.js +166 -90
  102. package/dist/components/List/SelectBar.d.ts +1 -1
  103. package/dist/components/List/SelectBar.js +20 -10
  104. package/dist/components/List/SkeletonRows.d.ts +1 -1
  105. package/dist/components/List/SkeletonRows.js +26 -16
  106. package/dist/components/List/index.d.ts +1 -1
  107. package/dist/components/List/index.js +60 -22
  108. package/dist/components/Loader/index.d.ts +1 -1
  109. package/dist/components/Loader/index.js +47 -23
  110. package/dist/components/Menu/MenuContent.d.ts +1 -1
  111. package/dist/components/Menu/MenuContent.js +216 -162
  112. package/dist/components/Menu/MenuProvider.d.ts +1 -1
  113. package/dist/components/Menu/MenuProvider.js +26 -13
  114. package/dist/components/Menu/components/Group.d.ts +1 -1
  115. package/dist/components/Menu/components/Group.js +11 -2
  116. package/dist/components/Menu/components/Item.js +144 -82
  117. package/dist/components/Menu/helpers.js +3 -1
  118. package/dist/components/Menu/index.d.ts +2 -2
  119. package/dist/components/Menu/index.js +5 -11
  120. package/dist/components/Menu/types.d.ts +2 -2
  121. package/dist/components/Meter/index.d.ts +1 -1
  122. package/dist/components/Meter/index.js +43 -12
  123. package/dist/components/Modal/ModalContent.d.ts +1 -1
  124. package/dist/components/Modal/ModalContent.js +41 -11
  125. package/dist/components/Modal/ModalProvider.d.ts +1 -1
  126. package/dist/components/Modal/ModalProvider.js +14 -11
  127. package/dist/components/Modal/components/Dialog.js +91 -47
  128. package/dist/components/Modal/index.d.ts +1 -1
  129. package/dist/components/Modal/index.js +60 -3
  130. package/dist/components/Notice/index.d.ts +1 -1
  131. package/dist/components/Notice/index.js +24 -5
  132. package/dist/components/Notification/Notification.js +12 -2
  133. package/dist/components/Notification/NotificationContainer.d.ts +1 -1
  134. package/dist/components/Notification/NotificationContainer.js +18 -2
  135. package/dist/components/NumberInput/index.d.ts +1 -1
  136. package/dist/components/NumberInput/index.js +239 -130
  137. package/dist/components/Pagination/PaginationButtons.d.ts +1 -1
  138. package/dist/components/Pagination/PaginationButtons.js +75 -10
  139. package/dist/components/Pagination/PerPage.d.ts +1 -1
  140. package/dist/components/Pagination/PerPage.js +32 -17
  141. package/dist/components/Pagination/getPageNumbers.js +12 -13
  142. package/dist/components/Pagination/index.d.ts +1 -1
  143. package/dist/components/Pagination/index.js +26 -3
  144. package/dist/components/PasswordCheck/index.d.ts +1 -1
  145. package/dist/components/PasswordCheck/index.js +27 -5
  146. package/dist/components/PieChart/Legends.d.ts +1 -1
  147. package/dist/components/PieChart/Legends.js +52 -20
  148. package/dist/components/PieChart/Tooltip.d.ts +1 -1
  149. package/dist/components/PieChart/Tooltip.js +2 -4
  150. package/dist/components/PieChart/index.d.ts +1 -1
  151. package/dist/components/PieChart/index.js +80 -40
  152. package/dist/components/Popover/index.js +104 -46
  153. package/dist/components/Popup/helpers.d.ts +5 -1
  154. package/dist/components/Popup/helpers.js +49 -35
  155. package/dist/components/Popup/index.d.ts +2 -1
  156. package/dist/components/Popup/index.js +373 -255
  157. package/dist/components/Popup/styles.css.js +0 -1
  158. package/dist/components/Popup/variables.css.js +1 -0
  159. package/dist/components/ProgressBar/index.d.ts +1 -1
  160. package/dist/components/ProgressBar/index.js +74 -20
  161. package/dist/components/Radio/index.js +83 -51
  162. package/dist/components/RadioGroup/index.d.ts +2 -2
  163. package/dist/components/RadioGroup/index.js +74 -20
  164. package/dist/components/Row/index.d.ts +1 -1
  165. package/dist/components/Row/index.js +38 -27
  166. package/dist/components/Row/styles.css.d.ts +11 -0
  167. package/dist/components/Row/styles.css.js +2 -2
  168. package/dist/components/SearchInput/KeyGroup.d.ts +1 -1
  169. package/dist/components/SearchInput/KeyGroup.js +2 -6
  170. package/dist/components/SearchInput/index.js +232 -164
  171. package/dist/components/SelectInput/SelectInputProvider.d.ts +1 -1
  172. package/dist/components/SelectInput/SelectInputProvider.js +91 -55
  173. package/dist/components/SelectInput/components/Dropdown.d.ts +1 -1
  174. package/dist/components/SelectInput/components/Dropdown.js +442 -101
  175. package/dist/components/SelectInput/components/DropdownOption.d.ts +1 -1
  176. package/dist/components/SelectInput/components/DropdownOption.js +176 -27
  177. package/dist/components/SelectInput/components/SearchBarDropdown.d.ts +1 -1
  178. package/dist/components/SelectInput/components/SearchBarDropdown.js +40 -14
  179. package/dist/components/SelectInput/components/SelectBar.d.ts +1 -1
  180. package/dist/components/SelectInput/components/SelectBar.js +252 -97
  181. package/dist/components/SelectInput/index.d.ts +1 -1
  182. package/dist/components/SelectInput/index.js +102 -10
  183. package/dist/components/SelectableCard/index.js +200 -114
  184. package/dist/components/SelectableCardGroup/index.d.ts +2 -2
  185. package/dist/components/SelectableCardGroup/index.js +67 -25
  186. package/dist/components/SelectableCardOptionGroup/Provider.js +3 -1
  187. package/dist/components/SelectableCardOptionGroup/components/Image.d.ts +1 -1
  188. package/dist/components/SelectableCardOptionGroup/components/Image.js +12 -8
  189. package/dist/components/SelectableCardOptionGroup/components/Option.d.ts +1 -1
  190. package/dist/components/SelectableCardOptionGroup/components/Option.js +96 -19
  191. package/dist/components/SelectableCardOptionGroup/index.d.ts +2 -2
  192. package/dist/components/SelectableCardOptionGroup/index.js +53 -17
  193. package/dist/components/Separator/index.d.ts +1 -1
  194. package/dist/components/Separator/index.js +43 -26
  195. package/dist/components/Skeleton/Block.d.ts +1 -1
  196. package/dist/components/Skeleton/Block.js +2 -6
  197. package/dist/components/Skeleton/Blocks.d.ts +1 -1
  198. package/dist/components/Skeleton/Blocks.js +14 -9
  199. package/dist/components/Skeleton/BoxWithIcon.d.ts +1 -1
  200. package/dist/components/Skeleton/BoxWithIcon.js +14 -9
  201. package/dist/components/Skeleton/Donut.d.ts +1 -1
  202. package/dist/components/Skeleton/Donut.js +10 -2
  203. package/dist/components/Skeleton/IconSkeleton.d.ts +1 -1
  204. package/dist/components/Skeleton/IconSkeleton.js +1 -1
  205. package/dist/components/Skeleton/Line.d.ts +1 -1
  206. package/dist/components/Skeleton/Line.js +10 -4
  207. package/dist/components/Skeleton/List.d.ts +1 -1
  208. package/dist/components/Skeleton/List.js +3 -9
  209. package/dist/components/Skeleton/Slider.d.ts +1 -1
  210. package/dist/components/Skeleton/Slider.js +11 -8
  211. package/dist/components/Skeleton/Square.d.ts +1 -1
  212. package/dist/components/Skeleton/Square.js +1 -1
  213. package/dist/components/Skeleton/index.d.ts +9 -9
  214. package/dist/components/Skeleton/index.js +16 -5
  215. package/dist/components/Slider/components/DoubleSlider.d.ts +1 -1
  216. package/dist/components/Slider/components/DoubleSlider.js +191 -88
  217. package/dist/components/Slider/components/Options.d.ts +1 -1
  218. package/dist/components/Slider/components/Options.js +44 -28
  219. package/dist/components/Slider/components/SingleSlider.d.ts +1 -1
  220. package/dist/components/Slider/components/SingleSlider.js +133 -53
  221. package/dist/components/Slider/index.d.ts +1 -1
  222. package/dist/components/Slider/index.js +82 -12
  223. package/dist/components/Snippet/index.d.ts +1 -1
  224. package/dist/components/Snippet/index.js +103 -19
  225. package/dist/components/Stack/index.d.ts +1 -1
  226. package/dist/components/Stack/index.js +20 -24
  227. package/dist/components/Stack/styles.css.js +2 -2
  228. package/dist/components/Status/index.d.ts +1 -1
  229. package/dist/components/Status/index.js +13 -11
  230. package/dist/components/StepList/index.d.ts +2 -2
  231. package/dist/components/StepList/index.js +31 -10
  232. package/dist/components/Stepper/Step.d.ts +1 -1
  233. package/dist/components/Stepper/Step.js +65 -30
  234. package/dist/components/Stepper/StepperProvider.d.ts +1 -1
  235. package/dist/components/Stepper/StepperProvider.js +13 -10
  236. package/dist/components/Stepper/index.d.ts +2 -2
  237. package/dist/components/Stepper/index.js +46 -26
  238. package/dist/components/SwitchButton/FocusOverlay.d.ts +1 -1
  239. package/dist/components/SwitchButton/FocusOverlay.js +11 -5
  240. package/dist/components/SwitchButton/Option.d.ts +1 -1
  241. package/dist/components/SwitchButton/Option.js +20 -2
  242. package/dist/components/SwitchButton/index.d.ts +2 -2
  243. package/dist/components/SwitchButton/index.js +95 -48
  244. package/dist/components/Table/Body.d.ts +1 -1
  245. package/dist/components/Table/Body.js +2 -4
  246. package/dist/components/Table/Cell.d.ts +1 -1
  247. package/dist/components/Table/Cell.js +20 -17
  248. package/dist/components/Table/Header.d.ts +1 -1
  249. package/dist/components/Table/Header.js +2 -4
  250. package/dist/components/Table/HeaderCell.d.ts +1 -1
  251. package/dist/components/Table/HeaderCell.js +46 -22
  252. package/dist/components/Table/HeaderRow.d.ts +1 -1
  253. package/dist/components/Table/HeaderRow.js +21 -12
  254. package/dist/components/Table/Row.d.ts +1 -1
  255. package/dist/components/Table/Row.js +70 -14
  256. package/dist/components/Table/SelectBar.d.ts +1 -1
  257. package/dist/components/Table/SelectBar.js +20 -10
  258. package/dist/components/Table/SkeletonRows.d.ts +1 -1
  259. package/dist/components/Table/SkeletonRows.js +17 -16
  260. package/dist/components/Table/TableContext.d.ts +1 -1
  261. package/dist/components/Table/TableContext.js +22 -13
  262. package/dist/components/Table/index.d.ts +6 -6
  263. package/dist/components/Table/index.js +64 -23
  264. package/dist/components/Tabs/Tab.js +79 -41
  265. package/dist/components/Tabs/TabMenu.js +39 -23
  266. package/dist/components/Tabs/TabMenuItem.d.ts +1 -1
  267. package/dist/components/Tabs/TabMenuItem.js +20 -11
  268. package/dist/components/Tabs/TabsContext.js +3 -1
  269. package/dist/components/Tabs/index.d.ts +3 -3
  270. package/dist/components/Tabs/index.js +34 -14
  271. package/dist/components/Tag/index.d.ts +1 -1
  272. package/dist/components/Tag/index.js +45 -12
  273. package/dist/components/TagInput/index.d.ts +1 -1
  274. package/dist/components/TagInput/index.js +131 -52
  275. package/dist/components/TagInput/styles.css.d.ts +3 -0
  276. package/dist/components/TagList/index.d.ts +1 -1
  277. package/dist/components/TagList/index.js +132 -59
  278. package/dist/components/Text/index.d.ts +1 -1
  279. package/dist/components/Text/index.js +21 -17
  280. package/dist/components/TextArea/index.js +178 -103
  281. package/dist/components/TextInput/index.d.ts +1 -1
  282. package/dist/components/TextInput/index.js +286 -106
  283. package/dist/components/TimeInput/constants.js +1 -5
  284. package/dist/components/TimeInput/index.d.ts +1 -1
  285. package/dist/components/TimeInput/index.js +207 -118
  286. package/dist/components/Toaster/Toaster.js +1 -1
  287. package/dist/components/Toaster/ToasterContainer.d.ts +1 -1
  288. package/dist/components/Toaster/ToasterContainer.js +21 -2
  289. package/dist/components/Toaster/components/Button.d.ts +1 -1
  290. package/dist/components/Toaster/components/CloseButton.d.ts +1 -1
  291. package/dist/components/Toaster/components/CloseButton.js +12 -2
  292. package/dist/components/Toaster/components/Content.d.ts +1 -1
  293. package/dist/components/Toaster/components/Content.js +2 -4
  294. package/dist/components/Toaster/components/Link.d.ts +1 -1
  295. package/dist/components/Toaster/index.d.ts +2 -2
  296. package/dist/components/Toggle/index.js +101 -40
  297. package/dist/components/ToggleGroup/index.d.ts +3 -3
  298. package/dist/components/ToggleGroup/index.js +61 -22
  299. package/dist/components/Tooltip/index.d.ts +1 -1
  300. package/dist/components/Tooltip/index.js +42 -19
  301. package/dist/components/TreeMapChart/Tooltip.d.ts +1 -1
  302. package/dist/components/TreeMapChart/Tooltip.js +1 -1
  303. package/dist/components/TreeMapChart/index.d.ts +1 -1
  304. package/dist/components/TreeMapChart/index.js +33 -27
  305. package/dist/components/UnitInput/index.d.ts +1 -1
  306. package/dist/components/UnitInput/index.js +110 -29
  307. package/dist/components/VerificationCode/index.d.ts +1 -1
  308. package/dist/components/VerificationCode/index.js +80 -21
  309. package/dist/helpers/legend.js +4 -4
  310. package/dist/helpers/treeMap.d.ts +2 -1
  311. package/dist/index.d.ts +1 -1
  312. package/dist/index.js +2 -4
  313. package/dist/theme/ThemeProvider.d.ts +1 -1
  314. package/dist/theme/ThemeProvider.js +4 -2
  315. package/dist/theme/index.js +1 -8
  316. package/dist/ui.css +1 -1
  317. package/dist/utils/ids.js +1 -3
  318. package/dist/utils/index.d.ts +1 -1
  319. package/dist/utils/responsive/index.d.ts +0 -1
  320. package/dist/utils/responsive/style.css.d.ts +3 -0
  321. package/package.json +5 -10
  322. package/dist/utils/responsive/Breakpoint.d.ts +0 -9
  323. package/dist/utils/responsive/Breakpoint.js +0 -14
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { jsx, jsxs, Fragment } from "@emotion/react/jsx-runtime";
2
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
3
3
  import { assignInlineVars } from "@vanilla-extract/dynamic";
4
- import { forwardRef, useRef, useImperativeHandle, useMemo, useState, useId, useCallback, startTransition, useEffect } from "react";
4
+ import { forwardRef, useRef, useImperativeHandle, useState, useId, useMemo, useCallback, startTransition, useLayoutEffect, useEffect } from "react";
5
5
  import { createPortal } from "react-dom";
6
6
  import { isClientSide } from "../../helpers/isClientSide.js";
7
7
  import { DEFAULT_POSITIONS, computePositions } from "./helpers.js";
@@ -14,278 +14,396 @@ const noop = () => {
14
14
  const stopClickPropagation = (event) => {
15
15
  event.nativeEvent.stopImmediatePropagation();
16
16
  };
17
- const Popup = forwardRef(({
18
- children,
19
- text = "",
20
- placement = "auto",
21
- align = "center",
22
- id,
23
- className,
24
- containerFullWidth,
25
- containerFullHeight,
26
- maxWidth = "14.5rem",
27
- maxHeight,
28
- visible,
29
- innerRef,
30
- role = "popup",
31
- "data-testid": dataTestId,
32
- hasArrow = true,
33
- onClose,
34
- tabIndex = 0,
35
- onKeyDown,
36
- "aria-haspopup": ariaHasPopup,
37
- hideOnClickOutside = false,
38
- debounceDelay = DEFAULT_DEBOUNCE_DURATION,
39
- disableAnimation = false,
40
- portalTarget,
41
- dynamicDomRendering = true,
42
- style
43
- }, ref) => {
44
- const childrenRef = useRef(null);
45
- useImperativeHandle(innerRef, () => childrenRef.current);
46
- const innerPopupRef = useRef(null);
47
- useImperativeHandle(ref, () => innerPopupRef.current);
48
- const timer = useRef(void 0);
49
- const popupPortalTarget = useMemo(() => {
50
- if (portalTarget) {
51
- return portalTarget;
52
- }
53
- if (role === "dialog") {
54
- if (childrenRef.current) {
55
- return childrenRef.current;
56
- }
57
- if (isClientSide) {
58
- return document.body;
59
- }
60
- return null;
17
+ const getPopupPortalTarget = ({
18
+ node,
19
+ role,
20
+ portalTarget
21
+ }) => {
22
+ if (portalTarget) {
23
+ return portalTarget;
24
+ }
25
+ if (role === "dialog") {
26
+ if (node) {
27
+ return node;
61
28
  }
62
- if (typeof window !== "undefined") {
29
+ if (isClientSide) {
63
30
  return document.body;
64
31
  }
65
32
  return null;
66
- }, [portalTarget, role, childrenRef.current]);
67
- const animationDuration = disableAnimation || maxHeight ? 0 : DEFAULT_ANIMATION_DURATION;
68
- const debounceTimer = useRef(void 0);
69
- const [visibleInDom, setVisibleInDom] = useState(false);
70
- const [reverseAnimation, setReverseAnimation] = useState(false);
71
- const [positions, setPositions] = useState({
72
- ...DEFAULT_POSITIONS
73
- });
74
- const uniqueId = useId();
75
- const generatedId = id ?? uniqueId;
76
- const isControlled = visible !== void 0;
77
- const isAnimated = useMemo(() => animationDuration > 0 && !maxHeight, [animationDuration, maxHeight]);
78
- const generatePopupPositions = useCallback(() => {
79
- if (childrenRef.current && innerPopupRef.current) {
80
- setPositions(computePositions({
81
- align,
82
- childrenRef,
83
- hasArrow,
84
- placement,
85
- popupPortalTarget,
86
- popupRef: innerPopupRef
87
- }));
88
- }
89
- }, [hasArrow, placement, popupPortalTarget, align]);
90
- const onWindowChangeDetected = useCallback(() => {
91
- if (innerPopupRef.current) {
92
- innerPopupRef.current.style.animation = "none";
93
- }
94
- generatePopupPositions();
95
- }, [generatePopupPositions, innerPopupRef]);
96
- const unmountPopupFromDom = useCallback(() => {
97
- setVisibleInDom(false);
98
- setReverseAnimation(false);
99
- window.removeEventListener("scroll", onWindowChangeDetected, true);
100
- }, [onWindowChangeDetected]);
101
- const closePopup = useCallback(() => {
102
- const closeFunction = () => {
103
- if (!disableAnimation) {
104
- setReverseAnimation(true);
105
- timer.current = setTimeout(() => {
33
+ }
34
+ if (typeof window !== "undefined") {
35
+ return document.body;
36
+ }
37
+ return null;
38
+ };
39
+ const Popup = forwardRef(
40
+ ({
41
+ children,
42
+ text = "",
43
+ placement = "auto",
44
+ align = "center",
45
+ id,
46
+ className,
47
+ containerFullWidth,
48
+ containerFullHeight,
49
+ maxWidth = "14.5rem",
50
+ maxHeight,
51
+ visible,
52
+ innerRef,
53
+ role = "popup",
54
+ "data-testid": dataTestId,
55
+ hasArrow = true,
56
+ onClose,
57
+ tabIndex = 0,
58
+ onKeyDown,
59
+ "aria-haspopup": ariaHasPopup,
60
+ hideOnClickOutside = false,
61
+ debounceDelay = DEFAULT_DEBOUNCE_DURATION,
62
+ disableAnimation = false,
63
+ portalTarget,
64
+ dynamicDomRendering = true,
65
+ style
66
+ }, ref) => {
67
+ const childrenRef = useRef(null);
68
+ useImperativeHandle(innerRef, () => childrenRef.current);
69
+ const innerPopupRef = useRef(null);
70
+ useImperativeHandle(ref, () => innerPopupRef.current);
71
+ const timer = useRef(void 0);
72
+ const popupPortalTarget = getPopupPortalTarget({
73
+ node: childrenRef.current,
74
+ portalTarget,
75
+ role
76
+ });
77
+ const animationDuration = disableAnimation || maxHeight ? 0 : DEFAULT_ANIMATION_DURATION;
78
+ const debounceTimer = useRef(void 0);
79
+ const [visibleInDom, setVisibleInDom] = useState(false);
80
+ const [reverseAnimation, setReverseAnimation] = useState(false);
81
+ const [positions, setPositions] = useState({
82
+ ...DEFAULT_POSITIONS
83
+ });
84
+ const uniqueId = useId();
85
+ const generatedId = id ?? uniqueId;
86
+ const isControlled = visible !== void 0;
87
+ const isAnimated = useMemo(
88
+ () => animationDuration > 0 && !maxHeight,
89
+ [animationDuration, maxHeight]
90
+ );
91
+ const generatePopupPositions = useCallback(() => {
92
+ if (childrenRef.current && innerPopupRef.current && popupPortalTarget) {
93
+ setPositions(
94
+ computePositions({
95
+ align,
96
+ childrenRef,
97
+ hasArrow,
98
+ placement,
99
+ popupPortalTarget,
100
+ popupRef: innerPopupRef
101
+ })
102
+ );
103
+ }
104
+ }, [hasArrow, placement, align, popupPortalTarget]);
105
+ const onWindowChangeDetected = useCallback(() => {
106
+ if (innerPopupRef.current) {
107
+ innerPopupRef.current.style.animation = "none";
108
+ }
109
+ generatePopupPositions();
110
+ }, [generatePopupPositions, innerPopupRef]);
111
+ const unmountPopupFromDom = useCallback(() => {
112
+ setVisibleInDom(false);
113
+ setReverseAnimation(false);
114
+ window.removeEventListener("scroll", onWindowChangeDetected, true);
115
+ }, [onWindowChangeDetected]);
116
+ const closePopup = useCallback(() => {
117
+ const closeFunction = () => {
118
+ if (!disableAnimation) {
119
+ setReverseAnimation(true);
120
+ timer.current = setTimeout(() => {
121
+ onClose?.();
122
+ unmountPopupFromDom();
123
+ }, animationDuration);
124
+ } else {
106
125
  onClose?.();
107
126
  unmountPopupFromDom();
108
- }, animationDuration);
127
+ }
128
+ };
129
+ if (!disableAnimation) {
130
+ debounceTimer.current = setTimeout(
131
+ () => {
132
+ closeFunction();
133
+ },
134
+ debounceDelay && !disableAnimation ? debounceDelay : 0
135
+ );
109
136
  } else {
110
- onClose?.();
111
- unmountPopupFromDom();
112
- }
113
- };
114
- if (!disableAnimation) {
115
- debounceTimer.current = setTimeout(() => {
116
137
  closeFunction();
117
- }, debounceDelay && !disableAnimation ? debounceDelay : 0);
118
- } else {
119
- closeFunction();
120
- }
121
- }, [animationDuration, disableAnimation, debounceDelay, onClose, unmountPopupFromDom]);
122
- const onPointerEvent = useCallback((isVisible) => () => {
123
- if (!visible && debounceDelay > 0 && debounceTimer.current) {
124
- clearTimeout(debounceTimer.current);
125
- debounceTimer.current = void 0;
126
- }
127
- if (!isVisible && innerPopupRef.current && !debounceTimer.current) {
128
- closePopup();
129
- } else if (isVisible) {
130
- if (timer.current) {
131
- setReverseAnimation(false);
132
- clearTimeout(timer.current);
133
- timer.current = void 0;
134
138
  }
135
- if (debounceTimer.current) {
136
- clearTimeout(debounceTimer.current);
137
- debounceTimer.current = void 0;
139
+ }, [
140
+ animationDuration,
141
+ disableAnimation,
142
+ debounceDelay,
143
+ onClose,
144
+ unmountPopupFromDom
145
+ ]);
146
+ const onPointerEvent = useCallback(
147
+ (isVisible) => () => {
148
+ if (!visible && debounceDelay > 0 && debounceTimer.current) {
149
+ clearTimeout(debounceTimer.current);
150
+ debounceTimer.current = void 0;
151
+ }
152
+ if (!isVisible && innerPopupRef.current && !debounceTimer.current) {
153
+ closePopup();
154
+ } else if (isVisible) {
155
+ if (timer.current) {
156
+ setReverseAnimation(false);
157
+ clearTimeout(timer.current);
158
+ timer.current = void 0;
159
+ }
160
+ if (debounceTimer.current) {
161
+ clearTimeout(debounceTimer.current);
162
+ debounceTimer.current = void 0;
163
+ }
164
+ if (debounceDelay > 0) {
165
+ debounceTimer.current = setTimeout(() => {
166
+ setVisibleInDom(true);
167
+ }, debounceDelay);
168
+ } else {
169
+ startTransition(() => {
170
+ setVisibleInDom(true);
171
+ });
172
+ }
173
+ }
174
+ },
175
+ [closePopup, debounceDelay, visible]
176
+ );
177
+ useLayoutEffect(() => {
178
+ const currentRef = childrenRef.current;
179
+ const mutationObserver = new MutationObserver(() => {
180
+ generatePopupPositions();
181
+ });
182
+ const resizeObserver = new ResizeObserver(() => {
183
+ generatePopupPositions();
184
+ });
185
+ if (currentRef) {
186
+ resizeObserver.observe(currentRef);
187
+ mutationObserver.observe(currentRef, { characterData: true });
138
188
  }
139
- if (debounceDelay > 0) {
140
- debounceTimer.current = setTimeout(() => {
141
- setVisibleInDom(true);
142
- }, debounceDelay);
143
- } else {
144
- startTransition(() => {
145
- setVisibleInDom(true);
146
- });
189
+ return () => {
190
+ if (currentRef) {
191
+ resizeObserver.unobserve(currentRef);
192
+ mutationObserver.disconnect();
193
+ }
194
+ };
195
+ }, [visibleInDom, generatePopupPositions]);
196
+ useLayoutEffect(() => {
197
+ if (visibleInDom) {
198
+ generatePopupPositions();
199
+ if (popupPortalTarget === document.body) {
200
+ window.addEventListener("scroll", onWindowChangeDetected, true);
201
+ }
202
+ window.addEventListener("resize", onWindowChangeDetected, true);
147
203
  }
148
- }
149
- }, [closePopup, debounceDelay, visible]);
150
- useEffect(() => {
151
- if (visibleInDom) {
152
- generatePopupPositions();
153
- if (popupPortalTarget === document.body) {
154
- window.addEventListener("scroll", onWindowChangeDetected, true);
204
+ return () => {
205
+ window.removeEventListener("scroll", onWindowChangeDetected, true);
206
+ window.removeEventListener("resize", onWindowChangeDetected, true);
207
+ if (timer.current) {
208
+ clearTimeout(timer.current);
209
+ timer.current = void 0;
210
+ }
211
+ };
212
+ }, [
213
+ generatePopupPositions,
214
+ onWindowChangeDetected,
215
+ visibleInDom,
216
+ maxWidth,
217
+ popupPortalTarget
218
+ ]);
219
+ useLayoutEffect(() => {
220
+ if (visibleInDom && innerPopupRef.current) {
221
+ innerPopupRef.current.style.opacity = "1";
155
222
  }
156
- window.addEventListener("resize", onWindowChangeDetected, true);
157
- }
158
- return () => {
159
- window.removeEventListener("scroll", onWindowChangeDetected, true);
160
- window.removeEventListener("resize", onWindowChangeDetected, true);
161
- if (timer.current) {
162
- clearTimeout(timer.current);
163
- timer.current = void 0;
223
+ }, [visibleInDom, positions]);
224
+ useEffect(() => {
225
+ if (isControlled) {
226
+ onPointerEvent(visible)();
164
227
  }
165
- };
166
- }, [generatePopupPositions, onWindowChangeDetected, visibleInDom, maxWidth, popupPortalTarget]);
167
- useEffect(() => {
168
- if (visibleInDom && innerPopupRef.current) {
169
- innerPopupRef.current.style.opacity = "1";
170
- }
171
- }, [positions]);
172
- useEffect(() => {
173
- if (isControlled) {
174
- onPointerEvent(visible)();
175
- }
176
- }, [isControlled, onPointerEvent, visible]);
177
- useEffect(() => {
178
- const handleEscPress = (event) => {
179
- if (event.key === "Escape") {
180
- event.preventDefault();
181
- event.stopPropagation();
182
- closePopup();
228
+ }, [isControlled, onPointerEvent, visible]);
229
+ useEffect(() => {
230
+ const handleEscPress = (event) => {
231
+ if (event.key === "Escape") {
232
+ event.preventDefault();
233
+ event.stopPropagation();
234
+ closePopup();
235
+ }
236
+ };
237
+ const handleClickOutside = (event) => {
238
+ const popupCurrent = innerPopupRef.current;
239
+ const childrenCurrent = childrenRef.current;
240
+ if (popupCurrent && hideOnClickOutside && !event.defaultPrevented && event.target && event.target !== popupCurrent && event.target !== childrenCurrent && !childrenCurrent?.contains(event.target) && !popupCurrent.contains(event.target)) {
241
+ event.preventDefault();
242
+ event.stopPropagation();
243
+ closePopup();
244
+ }
245
+ };
246
+ if (visibleInDom) {
247
+ document.body.addEventListener("keyup", handleEscPress);
248
+ document.body.addEventListener("click", handleClickOutside);
183
249
  }
184
- };
185
- const handleClickOutside = (event) => {
186
- const popupCurrent = innerPopupRef.current;
187
- const childrenCurrent = childrenRef.current;
188
- if (popupCurrent && hideOnClickOutside && !event.defaultPrevented && event.target && event.target !== popupCurrent && event.target !== childrenCurrent && !childrenCurrent?.contains(event.target) && !popupCurrent.contains(event.target)) {
189
- event.preventDefault();
190
- event.stopPropagation();
191
- closePopup();
250
+ return () => {
251
+ document.body.removeEventListener("keyup", handleEscPress);
252
+ document.body.removeEventListener("click", handleClickOutside);
253
+ };
254
+ }, [
255
+ closePopup,
256
+ visibleInDom,
257
+ innerPopupRef,
258
+ childrenRef,
259
+ hideOnClickOutside
260
+ ]);
261
+ const handleFocusTrap = useCallback((event) => {
262
+ const isTabPressed = event.key === "Tab";
263
+ if (!isTabPressed) {
264
+ return;
192
265
  }
193
- };
194
- if (visibleInDom) {
195
- document.body.addEventListener("keyup", handleEscPress);
196
- document.body.addEventListener("click", handleClickOutside);
197
- }
198
- return () => {
199
- document.body.removeEventListener("keyup", handleEscPress);
200
- document.body.removeEventListener("click", handleClickOutside);
201
- };
202
- }, [closePopup, visibleInDom, innerPopupRef, childrenRef, hideOnClickOutside]);
203
- const handleFocusTrap = useCallback((event) => {
204
- const isTabPressed = event.key === "Tab";
205
- if (!isTabPressed) {
206
- return;
207
- }
208
- event.stopPropagation();
209
- const focusableEls = innerPopupRef.current?.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled])") ?? [];
210
- if (focusableEls.length === 0) {
211
- event.preventDefault();
212
- }
213
- const firstFocusableEl = focusableEls[0];
214
- const lastFocusableEl = focusableEls[focusableEls.length - 1];
215
- if (event.shiftKey) {
216
- if (document.activeElement === firstFocusableEl || document.activeElement === innerPopupRef.current) {
217
- lastFocusableEl.focus();
266
+ event.stopPropagation();
267
+ const focusableEls = innerPopupRef.current?.querySelectorAll(
268
+ "a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled])"
269
+ );
270
+ if (focusableEls?.length === 0) {
218
271
  event.preventDefault();
219
272
  }
220
- } else if (document.activeElement === lastFocusableEl || document.activeElement === innerPopupRef.current) {
221
- firstFocusableEl.focus();
222
- event.preventDefault();
223
- }
224
- }, []);
225
- useEffect(() => () => {
226
- if (timer.current) {
227
- clearTimeout(timer.current);
228
- }
229
- if (debounceTimer.current) {
230
- clearTimeout(debounceTimer.current);
231
- }
232
- }, []);
233
- const renderChildren = useCallback(() => {
234
- if (typeof children === "function") {
235
- return children({
236
- onBlur: !isControlled ? onPointerEvent(false) : noop,
237
- onFocus: !isControlled ? onPointerEvent(true) : noop,
238
- onPointerEnter: !isControlled ? onPointerEvent(true) : noop,
239
- onPointerLeave: !isControlled ? onPointerEvent(false) : noop,
240
- ref: childrenRef
241
- });
242
- }
243
- return /* @__PURE__ */ jsx("div", { "aria-controls": generatedId, "aria-describedby": generatedId, "aria-haspopup": ariaHasPopup, className: childrenContainerPopup({
244
- fullHeight: containerFullHeight,
245
- fullWidth: containerFullWidth
246
- }), onBlur: !isControlled ? onPointerEvent(false) : noop, onFocus: !isControlled ? onPointerEvent(true) : noop, onKeyDown: (event) => {
247
- onKeyDown?.(event);
248
- }, onPointerEnter: !isControlled ? onPointerEvent(true) : noop, onPointerLeave: !isControlled ? onPointerEvent(false) : noop, ref: childrenRef, tabIndex, children });
249
- }, [ariaHasPopup, children, containerFullHeight, containerFullWidth, generatedId, isControlled, onKeyDown, onPointerEvent, tabIndex]);
250
- const shouldRender = useMemo(() => {
251
- if (!dynamicDomRendering) {
252
- return true;
253
- }
254
- if (dynamicDomRendering && visibleInDom) {
255
- return true;
256
- }
257
- return false;
258
- }, [dynamicDomRendering, visibleInDom]);
259
- if (!text) {
260
- if (typeof children === "function") {
261
- return null;
273
+ if (focusableEls) {
274
+ const elems = [...focusableEls];
275
+ const firstFocusableEl = elems[0];
276
+ const lastFocusableEl = elems.at(-1);
277
+ if (event.shiftKey) {
278
+ if (document.activeElement === firstFocusableEl || document.activeElement === innerPopupRef.current) {
279
+ if (lastFocusableEl instanceof HTMLElement) {
280
+ lastFocusableEl.focus();
281
+ }
282
+ event.preventDefault();
283
+ }
284
+ } else if (document.activeElement === lastFocusableEl || document.activeElement === innerPopupRef.current) {
285
+ if (firstFocusableEl instanceof HTMLElement) {
286
+ firstFocusableEl.focus();
287
+ }
288
+ event.preventDefault();
289
+ }
290
+ }
291
+ }, []);
292
+ useEffect(
293
+ () => () => {
294
+ if (timer.current) {
295
+ clearTimeout(timer.current);
296
+ }
297
+ if (debounceTimer.current) {
298
+ clearTimeout(debounceTimer.current);
299
+ }
300
+ },
301
+ []
302
+ );
303
+ const renderChildren = useCallback(() => {
304
+ if (typeof children === "function") {
305
+ return children({
306
+ onBlur: !isControlled ? onPointerEvent(false) : noop,
307
+ onFocus: !isControlled ? onPointerEvent(true) : noop,
308
+ onPointerEnter: !isControlled ? onPointerEvent(true) : noop,
309
+ onPointerLeave: !isControlled ? onPointerEvent(false) : noop,
310
+ ref: childrenRef
311
+ });
312
+ }
313
+ return /* @__PURE__ */ jsx(
314
+ "div",
315
+ {
316
+ "aria-controls": generatedId,
317
+ "aria-describedby": generatedId,
318
+ "aria-haspopup": ariaHasPopup,
319
+ className: childrenContainerPopup({
320
+ fullHeight: containerFullHeight,
321
+ fullWidth: containerFullWidth
322
+ }),
323
+ onBlur: !isControlled ? onPointerEvent(false) : noop,
324
+ onFocus: !isControlled ? onPointerEvent(true) : noop,
325
+ onKeyDown: (event) => {
326
+ onKeyDown?.(event);
327
+ },
328
+ onPointerEnter: !isControlled ? onPointerEvent(true) : noop,
329
+ onPointerLeave: !isControlled ? onPointerEvent(false) : noop,
330
+ ref: childrenRef,
331
+ tabIndex,
332
+ children
333
+ }
334
+ );
335
+ }, [
336
+ ariaHasPopup,
337
+ children,
338
+ containerFullHeight,
339
+ containerFullWidth,
340
+ generatedId,
341
+ isControlled,
342
+ onKeyDown,
343
+ onPointerEvent,
344
+ tabIndex
345
+ ]);
346
+ const shouldRender = useMemo(() => {
347
+ if (!dynamicDomRendering) {
348
+ return true;
349
+ }
350
+ if (dynamicDomRendering && visibleInDom) {
351
+ return true;
352
+ }
353
+ return false;
354
+ }, [dynamicDomRendering, visibleInDom]);
355
+ if (!text) {
356
+ if (typeof children === "function") {
357
+ return null;
358
+ }
359
+ return children;
262
360
  }
263
- return children;
361
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
362
+ renderChildren(),
363
+ shouldRender ? createPortal(
364
+ /* @__PURE__ */ jsx(
365
+ "div",
366
+ {
367
+ className: `${className ? `${className} ` : ""}${popup({ hasArrow, visibleInDom: !dynamicDomRendering ? visibleInDom : void 0 })} ${isAnimated ? animationPopup[reverseAnimation ? "reverse" : "notReverse"] : null}`,
368
+ "data-testid": dataTestId,
369
+ "data-visible-in-dom": !dynamicDomRendering ? visibleInDom : void 0,
370
+ id: generatedId,
371
+ onClick: stopClickPropagation,
372
+ onKeyDown: role === "dialog" ? handleFocusTrap : void 0,
373
+ onPointerEnter: !isControlled ? onPointerEvent(true) : noop,
374
+ onPointerLeave: !isControlled ? onPointerEvent(false) : noop,
375
+ ref: innerPopupRef,
376
+ role,
377
+ style: {
378
+ ...assignInlineVars({
379
+ [arrowTop]: `${positions.arrowTop}px`,
380
+ [arrowLeft]: `${positions.arrowLeft}px`,
381
+ [arrowTransform]: `${positions.arrowTransform} rotate(${positions.rotate}deg)`,
382
+ [popupPosition]: positions.popupPosition,
383
+ [animationDurationPopup]: `${animationDuration}ms`,
384
+ [popupInitialPosition]: positions.popupInitialPosition,
385
+ [maxWidthPopup]: `${typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth}`,
386
+ [maxHeightPopup]: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight
387
+ }),
388
+ ...style
389
+ },
390
+ children: /* @__PURE__ */ jsx(
391
+ "div",
392
+ {
393
+ className: containerPopup({ hasMaxHeight: !!maxHeight }),
394
+ style: assignInlineVars({
395
+ [maxHeightPopup]: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight
396
+ }),
397
+ children: text
398
+ }
399
+ )
400
+ }
401
+ ),
402
+ popupPortalTarget
403
+ ) : null
404
+ ] });
264
405
  }
265
- return /* @__PURE__ */ jsxs(Fragment, { children: [
266
- renderChildren(),
267
- shouldRender ? createPortal(/* @__PURE__ */ jsx("div", { className: `${className ? `${className} ` : ""}${popup({
268
- hasArrow,
269
- visibleInDom: !dynamicDomRendering ? visibleInDom : void 0
270
- })} ${isAnimated ? animationPopup[reverseAnimation ? "reverse" : "notReverse"] : null}`, "data-testid": dataTestId, "data-visible-in-dom": !dynamicDomRendering ? visibleInDom : void 0, id: generatedId, onClick: stopClickPropagation, onKeyDown: role === "dialog" ? handleFocusTrap : void 0, onPointerEnter: !isControlled ? onPointerEvent(true) : noop, onPointerLeave: !isControlled ? onPointerEvent(false) : noop, ref: innerPopupRef, role, style: {
271
- ...assignInlineVars({
272
- [arrowTop]: `${positions.arrowTop}px`,
273
- [arrowLeft]: `${positions.arrowLeft}px`,
274
- [arrowTransform]: `${positions.arrowTransform} rotate(${positions.rotate}deg)`,
275
- [popupPosition]: positions.popupPosition,
276
- [animationDurationPopup]: `${animationDuration}ms`,
277
- [popupInitialPosition]: positions.popupInitialPosition,
278
- [maxWidthPopup]: `${typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth}`,
279
- [maxHeightPopup]: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight
280
- }),
281
- ...style
282
- }, children: /* @__PURE__ */ jsx("div", { className: containerPopup({
283
- hasMaxHeight: !!maxHeight
284
- }), style: assignInlineVars({
285
- [maxHeightPopup]: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight
286
- }), children: text }) }), popupPortalTarget) : null
287
- ] });
288
- });
406
+ );
289
407
  export {
290
408
  Popup
291
409
  };
@@ -1,4 +1,3 @@
1
- /* empty css */
2
1
  /* empty css */
3
2
  import { createRuntimeFn } from "@vanilla-extract/recipes/createRuntimeFn";
4
3
  var containerPopup = createRuntimeFn({ defaultClassName: "uv_w40vpo2", variantClassNames: { hasMaxHeight: { true: "uv_w40vpo3" } }, defaultVariants: {}, compoundVariants: [] });
@@ -1,3 +1,4 @@
1
+ /* empty css */
1
2
  var arrowTop = "var(--uv_ozfz3c0)";
2
3
  var arrowLeft = "var(--uv_ozfz3c1)";
3
4
  var arrowTransform = "var(--uv_ozfz3c2)";