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

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 (319) hide show
  1. package/dist/components/ActionBar/index.js +19 -7
  2. package/dist/components/Alert/index.d.ts +2 -1
  3. package/dist/components/Alert/index.js +98 -20
  4. package/dist/components/Alert/styles.css.d.ts +10 -1
  5. package/dist/components/Alert/styles.css.js +7 -5
  6. package/dist/components/Avatar/index.d.ts +1 -1
  7. package/dist/components/Avatar/index.js +46 -36
  8. package/dist/components/Badge/index.d.ts +1 -1
  9. package/dist/components/Badge/index.js +19 -8
  10. package/dist/components/Banner/index.d.ts +1 -1
  11. package/dist/components/Banner/index.js +87 -28
  12. package/dist/components/BarChart/Tooltip.d.ts +1 -1
  13. package/dist/components/BarChart/Tooltip.js +23 -10
  14. package/dist/components/BarChart/index.d.ts +1 -1
  15. package/dist/components/BarChart/index.js +51 -31
  16. package/dist/components/BarStack/index.d.ts +1 -1
  17. package/dist/components/BarStack/index.js +64 -19
  18. package/dist/components/Breadcrumbs/components/Item.d.ts +1 -1
  19. package/dist/components/Breadcrumbs/components/Item.js +48 -12
  20. package/dist/components/Breadcrumbs/index.js +11 -2
  21. package/dist/components/Bullet/index.d.ts +1 -1
  22. package/dist/components/Bullet/index.js +10 -7
  23. package/dist/components/Button/index.js +122 -72
  24. package/dist/components/Card/index.js +80 -20
  25. package/dist/components/Carousel/index.d.ts +3 -3
  26. package/dist/components/Carousel/index.js +72 -26
  27. package/dist/components/Checkbox/index.js +139 -43
  28. package/dist/components/CheckboxGroup/index.d.ts +3 -3
  29. package/dist/components/CheckboxGroup/index.js +77 -24
  30. package/dist/components/Chip/ChipIcon.d.ts +1 -1
  31. package/dist/components/Chip/ChipIcon.js +46 -12
  32. package/dist/components/Chip/index.d.ts +3 -3
  33. package/dist/components/Chip/index.js +36 -11
  34. package/dist/components/CopyButton/index.d.ts +1 -1
  35. package/dist/components/CopyButton/index.js +23 -8
  36. package/dist/components/DateInput/components/CalendarContent.d.ts +1 -1
  37. package/dist/components/DateInput/components/CalendarContent.js +61 -26
  38. package/dist/components/DateInput/components/CalendarDaily.d.ts +1 -1
  39. package/dist/components/DateInput/components/CalendarDaily.js +105 -62
  40. package/dist/components/DateInput/components/CalendarMonthly.d.ts +1 -1
  41. package/dist/components/DateInput/components/CalendarMonthly.js +62 -39
  42. package/dist/components/DateInput/components/Popup.d.ts +1 -1
  43. package/dist/components/DateInput/components/Popup.js +27 -4
  44. package/dist/components/DateInput/helpers.js +9 -2
  45. package/dist/components/DateInput/helpersLocale.js +3 -9
  46. package/dist/components/DateInput/index.d.ts +1 -1
  47. package/dist/components/DateInput/index.js +193 -62
  48. package/dist/components/Dialog/Context.js +3 -1
  49. package/dist/components/Dialog/components/Button.d.ts +1 -1
  50. package/dist/components/Dialog/components/Button.js +12 -2
  51. package/dist/components/Dialog/components/Buttons.d.ts +1 -1
  52. package/dist/components/Dialog/components/Buttons.js +1 -1
  53. package/dist/components/Dialog/components/CancelButton.d.ts +1 -1
  54. package/dist/components/Dialog/components/CancelButton.js +12 -2
  55. package/dist/components/Dialog/components/Stack.d.ts +1 -1
  56. package/dist/components/Dialog/components/Stack.js +2 -5
  57. package/dist/components/Dialog/components/Text.d.ts +1 -1
  58. package/dist/components/Dialog/components/Text.js +2 -5
  59. package/dist/components/Dialog/index.d.ts +7 -7
  60. package/dist/components/Dialog/index.js +43 -12
  61. package/dist/components/Drawer/index.d.ts +4 -4
  62. package/dist/components/Drawer/index.js +53 -15
  63. package/dist/components/EmptyState/index.d.ts +1 -1
  64. package/dist/components/EmptyState/index.js +63 -21
  65. package/dist/components/Expandable/index.d.ts +2 -2
  66. package/dist/components/Expandable/index.js +52 -15
  67. package/dist/components/ExpandableCard/components/Title.d.ts +1 -1
  68. package/dist/components/ExpandableCard/components/Title.js +12 -2
  69. package/dist/components/ExpandableCard/index.d.ts +1 -1
  70. package/dist/components/ExpandableCard/index.js +197 -96
  71. package/dist/components/GlobalAlert/GlobalAlertLink.d.ts +1 -1
  72. package/dist/components/GlobalAlert/GlobalAlertLink.js +21 -5
  73. package/dist/components/GlobalAlert/index.d.ts +2 -2
  74. package/dist/components/GlobalAlert/index.js +51 -11
  75. package/dist/components/InfiniteScroll/index.d.ts +1 -1
  76. package/dist/components/InfiniteScroll/index.js +40 -33
  77. package/dist/components/Key/index.d.ts +1 -1
  78. package/dist/components/Key/index.js +29 -8
  79. package/dist/components/Label/index.d.ts +1 -1
  80. package/dist/components/Label/index.js +67 -6
  81. package/dist/components/LineChart/CustomLegend.d.ts +1 -1
  82. package/dist/components/LineChart/CustomLegend.js +69 -45
  83. package/dist/components/LineChart/Tooltip.d.ts +1 -1
  84. package/dist/components/LineChart/Tooltip.js +31 -9
  85. package/dist/components/LineChart/helpers.js +13 -12
  86. package/dist/components/LineChart/index.d.ts +1 -1
  87. package/dist/components/LineChart/index.js +56 -40
  88. package/dist/components/Link/index.js +74 -57
  89. package/dist/components/List/Cell.js +24 -22
  90. package/dist/components/List/ColumnProvider.d.ts +1 -1
  91. package/dist/components/List/ColumnProvider.js +12 -6
  92. package/dist/components/List/HeaderCell.d.ts +1 -1
  93. package/dist/components/List/HeaderCell.js +36 -19
  94. package/dist/components/List/HeaderRow.d.ts +1 -1
  95. package/dist/components/List/HeaderRow.js +14 -12
  96. package/dist/components/List/ListContext.d.ts +1 -1
  97. package/dist/components/List/ListContext.js +128 -78
  98. package/dist/components/List/Row.js +166 -90
  99. package/dist/components/List/SelectBar.d.ts +1 -1
  100. package/dist/components/List/SelectBar.js +20 -10
  101. package/dist/components/List/SkeletonRows.d.ts +1 -1
  102. package/dist/components/List/SkeletonRows.js +26 -16
  103. package/dist/components/List/index.d.ts +1 -1
  104. package/dist/components/List/index.js +60 -22
  105. package/dist/components/Loader/index.d.ts +1 -1
  106. package/dist/components/Loader/index.js +47 -23
  107. package/dist/components/Menu/MenuContent.d.ts +1 -1
  108. package/dist/components/Menu/MenuContent.js +216 -162
  109. package/dist/components/Menu/MenuProvider.d.ts +1 -1
  110. package/dist/components/Menu/MenuProvider.js +26 -13
  111. package/dist/components/Menu/components/Group.d.ts +1 -1
  112. package/dist/components/Menu/components/Group.js +11 -2
  113. package/dist/components/Menu/components/Item.js +144 -82
  114. package/dist/components/Menu/helpers.js +3 -1
  115. package/dist/components/Menu/index.d.ts +2 -2
  116. package/dist/components/Menu/index.js +5 -11
  117. package/dist/components/Menu/types.d.ts +2 -2
  118. package/dist/components/Meter/index.d.ts +1 -1
  119. package/dist/components/Meter/index.js +43 -12
  120. package/dist/components/Modal/ModalContent.d.ts +1 -1
  121. package/dist/components/Modal/ModalContent.js +41 -11
  122. package/dist/components/Modal/ModalProvider.d.ts +1 -1
  123. package/dist/components/Modal/ModalProvider.js +14 -11
  124. package/dist/components/Modal/components/Dialog.js +91 -47
  125. package/dist/components/Modal/index.d.ts +1 -1
  126. package/dist/components/Modal/index.js +60 -3
  127. package/dist/components/Notice/index.d.ts +1 -1
  128. package/dist/components/Notice/index.js +24 -5
  129. package/dist/components/Notification/Notification.js +12 -2
  130. package/dist/components/Notification/NotificationContainer.d.ts +1 -1
  131. package/dist/components/Notification/NotificationContainer.js +18 -2
  132. package/dist/components/NumberInput/index.d.ts +1 -1
  133. package/dist/components/NumberInput/index.js +239 -130
  134. package/dist/components/Pagination/PaginationButtons.d.ts +1 -1
  135. package/dist/components/Pagination/PaginationButtons.js +75 -10
  136. package/dist/components/Pagination/PerPage.d.ts +1 -1
  137. package/dist/components/Pagination/PerPage.js +32 -17
  138. package/dist/components/Pagination/getPageNumbers.js +12 -13
  139. package/dist/components/Pagination/index.d.ts +1 -1
  140. package/dist/components/Pagination/index.js +26 -3
  141. package/dist/components/PasswordCheck/index.d.ts +1 -1
  142. package/dist/components/PasswordCheck/index.js +27 -5
  143. package/dist/components/PieChart/Legends.d.ts +1 -1
  144. package/dist/components/PieChart/Legends.js +52 -20
  145. package/dist/components/PieChart/Tooltip.d.ts +1 -1
  146. package/dist/components/PieChart/Tooltip.js +2 -4
  147. package/dist/components/PieChart/index.d.ts +1 -1
  148. package/dist/components/PieChart/index.js +80 -40
  149. package/dist/components/Popover/index.js +104 -46
  150. package/dist/components/Popup/helpers.d.ts +5 -1
  151. package/dist/components/Popup/helpers.js +49 -35
  152. package/dist/components/Popup/index.js +344 -254
  153. package/dist/components/Popup/styles.css.js +0 -1
  154. package/dist/components/Popup/variables.css.js +1 -0
  155. package/dist/components/ProgressBar/index.d.ts +1 -1
  156. package/dist/components/ProgressBar/index.js +74 -20
  157. package/dist/components/ProgressBar/styles.css.js +1 -0
  158. package/dist/components/ProgressBar/variables.css.js +0 -1
  159. package/dist/components/Radio/index.js +83 -51
  160. package/dist/components/RadioGroup/index.d.ts +2 -2
  161. package/dist/components/RadioGroup/index.js +74 -20
  162. package/dist/components/Row/index.d.ts +1 -1
  163. package/dist/components/Row/index.js +38 -27
  164. package/dist/components/SearchInput/KeyGroup.d.ts +1 -1
  165. package/dist/components/SearchInput/KeyGroup.js +2 -6
  166. package/dist/components/SearchInput/index.js +232 -164
  167. package/dist/components/SelectInput/SelectInputProvider.d.ts +1 -1
  168. package/dist/components/SelectInput/SelectInputProvider.js +91 -55
  169. package/dist/components/SelectInput/components/Dropdown.d.ts +1 -1
  170. package/dist/components/SelectInput/components/Dropdown.js +408 -95
  171. package/dist/components/SelectInput/components/DropdownOption.d.ts +1 -1
  172. package/dist/components/SelectInput/components/DropdownOption.js +176 -27
  173. package/dist/components/SelectInput/components/SearchBarDropdown.d.ts +1 -1
  174. package/dist/components/SelectInput/components/SearchBarDropdown.js +40 -14
  175. package/dist/components/SelectInput/components/SelectBar.d.ts +1 -1
  176. package/dist/components/SelectInput/components/SelectBar.js +252 -97
  177. package/dist/components/SelectInput/index.d.ts +1 -1
  178. package/dist/components/SelectInput/index.js +102 -10
  179. package/dist/components/SelectableCard/index.js +200 -114
  180. package/dist/components/SelectableCardGroup/index.d.ts +2 -2
  181. package/dist/components/SelectableCardGroup/index.js +67 -25
  182. package/dist/components/SelectableCardOptionGroup/Provider.js +3 -1
  183. package/dist/components/SelectableCardOptionGroup/components/Image.d.ts +1 -1
  184. package/dist/components/SelectableCardOptionGroup/components/Image.js +12 -8
  185. package/dist/components/SelectableCardOptionGroup/components/Option.d.ts +1 -1
  186. package/dist/components/SelectableCardOptionGroup/components/Option.js +96 -19
  187. package/dist/components/SelectableCardOptionGroup/index.d.ts +2 -2
  188. package/dist/components/SelectableCardOptionGroup/index.js +53 -17
  189. package/dist/components/Separator/index.d.ts +1 -1
  190. package/dist/components/Separator/index.js +43 -26
  191. package/dist/components/Skeleton/Block.d.ts +1 -1
  192. package/dist/components/Skeleton/Block.js +2 -6
  193. package/dist/components/Skeleton/Blocks.d.ts +1 -1
  194. package/dist/components/Skeleton/Blocks.js +14 -9
  195. package/dist/components/Skeleton/BoxWithIcon.d.ts +1 -1
  196. package/dist/components/Skeleton/BoxWithIcon.js +14 -9
  197. package/dist/components/Skeleton/Donut.d.ts +1 -1
  198. package/dist/components/Skeleton/Donut.js +10 -2
  199. package/dist/components/Skeleton/IconSkeleton.d.ts +1 -1
  200. package/dist/components/Skeleton/IconSkeleton.js +1 -1
  201. package/dist/components/Skeleton/Line.d.ts +1 -1
  202. package/dist/components/Skeleton/Line.js +10 -4
  203. package/dist/components/Skeleton/List.d.ts +1 -1
  204. package/dist/components/Skeleton/List.js +3 -9
  205. package/dist/components/Skeleton/Slider.d.ts +1 -1
  206. package/dist/components/Skeleton/Slider.js +11 -8
  207. package/dist/components/Skeleton/Square.d.ts +1 -1
  208. package/dist/components/Skeleton/Square.js +1 -1
  209. package/dist/components/Skeleton/index.d.ts +9 -9
  210. package/dist/components/Skeleton/index.js +16 -5
  211. package/dist/components/Slider/components/DoubleSlider.d.ts +1 -1
  212. package/dist/components/Slider/components/DoubleSlider.js +191 -88
  213. package/dist/components/Slider/components/Options.d.ts +1 -1
  214. package/dist/components/Slider/components/Options.js +44 -28
  215. package/dist/components/Slider/components/SingleSlider.d.ts +1 -1
  216. package/dist/components/Slider/components/SingleSlider.js +133 -53
  217. package/dist/components/Slider/index.d.ts +1 -1
  218. package/dist/components/Slider/index.js +82 -12
  219. package/dist/components/Snippet/index.d.ts +1 -1
  220. package/dist/components/Snippet/index.js +103 -19
  221. package/dist/components/Stack/index.d.ts +1 -1
  222. package/dist/components/Stack/index.js +20 -24
  223. package/dist/components/Status/index.d.ts +1 -1
  224. package/dist/components/Status/index.js +13 -11
  225. package/dist/components/StepList/index.d.ts +2 -2
  226. package/dist/components/StepList/index.js +31 -10
  227. package/dist/components/Stepper/Step.d.ts +1 -1
  228. package/dist/components/Stepper/Step.js +65 -30
  229. package/dist/components/Stepper/StepperProvider.d.ts +1 -1
  230. package/dist/components/Stepper/StepperProvider.js +13 -10
  231. package/dist/components/Stepper/index.d.ts +2 -2
  232. package/dist/components/Stepper/index.js +46 -26
  233. package/dist/components/SwitchButton/FocusOverlay.d.ts +1 -1
  234. package/dist/components/SwitchButton/FocusOverlay.js +11 -5
  235. package/dist/components/SwitchButton/Option.d.ts +1 -1
  236. package/dist/components/SwitchButton/Option.js +20 -2
  237. package/dist/components/SwitchButton/index.d.ts +2 -2
  238. package/dist/components/SwitchButton/index.js +95 -48
  239. package/dist/components/Table/Body.d.ts +1 -1
  240. package/dist/components/Table/Body.js +2 -4
  241. package/dist/components/Table/Cell.d.ts +1 -1
  242. package/dist/components/Table/Cell.js +20 -17
  243. package/dist/components/Table/Header.d.ts +1 -1
  244. package/dist/components/Table/Header.js +2 -4
  245. package/dist/components/Table/HeaderCell.d.ts +1 -1
  246. package/dist/components/Table/HeaderCell.js +46 -22
  247. package/dist/components/Table/HeaderRow.d.ts +1 -1
  248. package/dist/components/Table/HeaderRow.js +21 -12
  249. package/dist/components/Table/Row.d.ts +1 -1
  250. package/dist/components/Table/Row.js +70 -14
  251. package/dist/components/Table/SelectBar.d.ts +1 -1
  252. package/dist/components/Table/SelectBar.js +20 -10
  253. package/dist/components/Table/SkeletonRows.d.ts +1 -1
  254. package/dist/components/Table/SkeletonRows.js +17 -16
  255. package/dist/components/Table/TableContext.d.ts +1 -1
  256. package/dist/components/Table/TableContext.js +22 -13
  257. package/dist/components/Table/index.d.ts +6 -6
  258. package/dist/components/Table/index.js +64 -23
  259. package/dist/components/Tabs/Tab.js +79 -41
  260. package/dist/components/Tabs/TabMenu.js +39 -23
  261. package/dist/components/Tabs/TabMenuItem.d.ts +1 -1
  262. package/dist/components/Tabs/TabMenuItem.js +20 -11
  263. package/dist/components/Tabs/TabsContext.js +3 -1
  264. package/dist/components/Tabs/index.d.ts +3 -3
  265. package/dist/components/Tabs/index.js +34 -14
  266. package/dist/components/Tag/index.d.ts +1 -1
  267. package/dist/components/Tag/index.js +45 -12
  268. package/dist/components/TagInput/index.d.ts +1 -1
  269. package/dist/components/TagInput/index.js +131 -52
  270. package/dist/components/TagInput/styles.css.d.ts +3 -0
  271. package/dist/components/TagList/index.d.ts +1 -1
  272. package/dist/components/TagList/index.js +132 -59
  273. package/dist/components/Text/index.d.ts +1 -1
  274. package/dist/components/Text/index.js +21 -17
  275. package/dist/components/Text/style.css.js +0 -1
  276. package/dist/components/Text/variables.css.js +1 -0
  277. package/dist/components/TextArea/index.js +178 -103
  278. package/dist/components/TextInput/index.d.ts +1 -1
  279. package/dist/components/TextInput/index.js +286 -106
  280. package/dist/components/TimeInput/constants.js +1 -5
  281. package/dist/components/TimeInput/index.d.ts +1 -1
  282. package/dist/components/TimeInput/index.js +207 -118
  283. package/dist/components/Toaster/Toaster.js +1 -1
  284. package/dist/components/Toaster/ToasterContainer.d.ts +1 -1
  285. package/dist/components/Toaster/ToasterContainer.js +21 -2
  286. package/dist/components/Toaster/components/Button.d.ts +1 -1
  287. package/dist/components/Toaster/components/CloseButton.d.ts +1 -1
  288. package/dist/components/Toaster/components/CloseButton.js +12 -2
  289. package/dist/components/Toaster/components/Content.d.ts +1 -1
  290. package/dist/components/Toaster/components/Content.js +2 -4
  291. package/dist/components/Toaster/components/Link.d.ts +1 -1
  292. package/dist/components/Toaster/index.d.ts +2 -2
  293. package/dist/components/Toggle/index.js +101 -40
  294. package/dist/components/ToggleGroup/index.d.ts +3 -3
  295. package/dist/components/ToggleGroup/index.js +61 -22
  296. package/dist/components/Tooltip/index.js +42 -19
  297. package/dist/components/TreeMapChart/Tooltip.d.ts +1 -1
  298. package/dist/components/TreeMapChart/Tooltip.js +1 -1
  299. package/dist/components/TreeMapChart/index.d.ts +1 -1
  300. package/dist/components/TreeMapChart/index.js +33 -27
  301. package/dist/components/UnitInput/index.d.ts +1 -1
  302. package/dist/components/UnitInput/index.js +110 -29
  303. package/dist/components/VerificationCode/index.d.ts +1 -1
  304. package/dist/components/VerificationCode/index.js +80 -21
  305. package/dist/helpers/legend.js +4 -4
  306. package/dist/helpers/treeMap.d.ts +2 -1
  307. package/dist/index.d.ts +1 -1
  308. package/dist/index.js +2 -4
  309. package/dist/theme/ThemeProvider.d.ts +1 -1
  310. package/dist/theme/ThemeProvider.js +4 -2
  311. package/dist/theme/index.js +1 -8
  312. package/dist/ui.css +1 -1
  313. package/dist/utils/ids.js +1 -3
  314. package/dist/utils/index.d.ts +1 -1
  315. package/dist/utils/responsive/index.d.ts +0 -1
  316. package/dist/utils/responsive/style.css.d.ts +3 -0
  317. package/package.json +2 -7
  318. package/dist/utils/responsive/Breakpoint.d.ts +0 -9
  319. package/dist/utils/responsive/Breakpoint.js +0 -14
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "@emotion/react/jsx-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { CheckCircleOutlineIcon, CloseCircleOutlineIcon } from "@ultraviolet/icons";
4
4
  import { Stack } from "../Stack/index.js";
5
5
  import { Text } from "../Text/index.js";
@@ -9,10 +9,32 @@ const PasswordCheck = ({
9
9
  className,
10
10
  "data-testid": dataTestId,
11
11
  style
12
- }) => /* @__PURE__ */ jsx("div", { className: `${className ? `${className} ` : ""}${passwordCheckContainer}`, "data-testid": dataTestId, style, children: rules.map((rule) => /* @__PURE__ */ jsxs(Stack, { alignItems: "center", direction: "row", gap: 1, children: [
13
- rule.valid ? /* @__PURE__ */ jsx(CheckCircleOutlineIcon, { prominence: "weak", sentiment: "success", size: "large" }) : /* @__PURE__ */ jsx(CloseCircleOutlineIcon, { prominence: "weak", sentiment: "neutral", size: "large" }),
14
- /* @__PURE__ */ jsx(Text, { as: "p", variant: "bodySmall", children: rule.text })
15
- ] }, rule.name)) });
12
+ }) => /* @__PURE__ */ jsx(
13
+ "div",
14
+ {
15
+ className: `${className ? `${className} ` : ""}${passwordCheckContainer}`,
16
+ "data-testid": dataTestId,
17
+ style,
18
+ children: rules.map((rule) => /* @__PURE__ */ jsxs(Stack, { alignItems: "center", direction: "row", gap: 1, children: [
19
+ rule.valid ? /* @__PURE__ */ jsx(
20
+ CheckCircleOutlineIcon,
21
+ {
22
+ prominence: "weak",
23
+ sentiment: "success",
24
+ size: "large"
25
+ }
26
+ ) : /* @__PURE__ */ jsx(
27
+ CloseCircleOutlineIcon,
28
+ {
29
+ prominence: "weak",
30
+ sentiment: "neutral",
31
+ size: "large"
32
+ }
33
+ ),
34
+ /* @__PURE__ */ jsx(Text, { as: "p", variant: "bodySmall", children: rule.text })
35
+ ] }, rule.name))
36
+ }
37
+ );
16
38
  export {
17
39
  PasswordCheck
18
40
  };
@@ -5,5 +5,5 @@ type LegendsProps = {
5
5
  onFocusChange: (index?: string) => void;
6
6
  colors: string[];
7
7
  };
8
- export declare const Legends: ({ focused, data, onFocusChange, colors, }: LegendsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
8
+ export declare const Legends: ({ focused, data, onFocusChange, colors, }: LegendsProps) => import("react/jsx-runtime").JSX.Element;
9
9
  export {};
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "@emotion/react/jsx-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { assignInlineVars } from "@vanilla-extract/dynamic";
4
4
  import { Tooltip } from "../Tooltip/index.js";
5
5
  import { listPie, listItemPie, toggleBoxPie, bulletPie, colorBullet, labelPie, textPie, linePie, progressiveLinePie, valuePie } from "./styles.css.js";
@@ -12,25 +12,57 @@ const Legends = ({
12
12
  }) => /* @__PURE__ */ jsx("ul", { className: listPie, children: data?.map((item, index) => {
13
13
  const isSegmentFocused = focused !== void 0 && item.id === focused;
14
14
  const id = `chart-legend-${item.id}`;
15
- return /* @__PURE__ */ jsx(Tooltip, { id, text: /* @__PURE__ */ jsx(Tooltip$1, { data: item }), visible: isSegmentFocused, children: /* @__PURE__ */ jsxs("li", { className: listItemPie({
16
- isFocused: isSegmentFocused
17
- }), children: [
18
- /* @__PURE__ */ jsx("div", { className: toggleBoxPie, "data-testid": id, onBlur: () => onFocusChange(), onFocus: () => onFocusChange(item.id), onMouseOut: () => onFocusChange(), onMouseOver: () => onFocusChange(item.id) }),
19
- /* @__PURE__ */ jsx("div", { className: bulletPie({
20
- isFocused: isSegmentFocused
21
- }), color: colors[index], id: `chart-legend-${item.id}`, style: assignInlineVars({
22
- [colorBullet]: colors[index]
23
- }) }),
24
- /* @__PURE__ */ jsxs("div", { className: labelPie, children: [
25
- /* @__PURE__ */ jsx("span", { className: textPie({
26
- isFocused: isSegmentFocused
27
- }), children: item.name }),
28
- /* @__PURE__ */ jsx("span", { className: linePie, children: /* @__PURE__ */ jsx("span", { className: progressiveLinePie({
29
- isFocused: isSegmentFocused
30
- }) }) })
31
- ] }),
32
- /* @__PURE__ */ jsx("div", { className: valuePie[isSegmentFocused ? "isFocused" : "default"], children: item.value })
33
- ] }) }, item.id);
15
+ return /* @__PURE__ */ jsx(
16
+ Tooltip,
17
+ {
18
+ id,
19
+ text: /* @__PURE__ */ jsx(Tooltip$1, { data: item }),
20
+ visible: isSegmentFocused,
21
+ children: /* @__PURE__ */ jsxs("li", { className: listItemPie({ isFocused: isSegmentFocused }), children: [
22
+ /* @__PURE__ */ jsx(
23
+ "div",
24
+ {
25
+ className: toggleBoxPie,
26
+ "data-testid": id,
27
+ onBlur: () => onFocusChange(),
28
+ onFocus: () => onFocusChange(item.id),
29
+ onMouseOut: () => onFocusChange(),
30
+ onMouseOver: () => onFocusChange(item.id)
31
+ }
32
+ ),
33
+ /* @__PURE__ */ jsx(
34
+ "div",
35
+ {
36
+ className: bulletPie({ isFocused: isSegmentFocused }),
37
+ color: colors[index],
38
+ id: `chart-legend-${item.id}`,
39
+ style: assignInlineVars({
40
+ [colorBullet]: colors[index]
41
+ })
42
+ }
43
+ ),
44
+ /* @__PURE__ */ jsxs("div", { className: labelPie, children: [
45
+ /* @__PURE__ */ jsx("span", { className: textPie({ isFocused: isSegmentFocused }), children: item.name }),
46
+ /* @__PURE__ */ jsx("span", { className: linePie, children: /* @__PURE__ */ jsx(
47
+ "span",
48
+ {
49
+ className: progressiveLinePie({
50
+ isFocused: isSegmentFocused
51
+ })
52
+ }
53
+ ) })
54
+ ] }),
55
+ /* @__PURE__ */ jsx(
56
+ "div",
57
+ {
58
+ className: valuePie[isSegmentFocused ? "isFocused" : "default"],
59
+ children: item.value
60
+ }
61
+ )
62
+ ] })
63
+ },
64
+ item.id
65
+ );
34
66
  }) });
35
67
  export {
36
68
  Legends
@@ -8,5 +8,5 @@ type TooltipProps = {
8
8
  }[] | null;
9
9
  };
10
10
  };
11
- export declare const Tooltip: ({ data }: TooltipProps) => import("@emotion/react/jsx-runtime").JSX.Element;
11
+ export declare const Tooltip: ({ data }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
12
12
  export {};
@@ -1,10 +1,8 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "@emotion/react/jsx-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Text } from "../Text/index.js";
4
4
  import { listTooltipPie, itemTooltipPie } from "./styles.css.js";
5
- const Tooltip = ({
6
- data
7
- }) => /* @__PURE__ */ jsx("div", { role: "tooltip", tabIndex: -1, children: /* @__PURE__ */ jsxs("ul", { className: listTooltipPie, children: [
5
+ const Tooltip = ({ data }) => /* @__PURE__ */ jsx("div", { role: "tooltip", tabIndex: -1, children: /* @__PURE__ */ jsxs("ul", { className: listTooltipPie, children: [
8
6
  /* @__PURE__ */ jsxs("li", { className: itemTooltipPie, children: [
9
7
  /* @__PURE__ */ jsx(Text, { as: "p", prominence: "stronger", variant: "body", children: data.name }),
10
8
  /* @__PURE__ */ jsx(Text, { as: "p", prominence: "stronger", variant: "body", children: data.value })
@@ -17,5 +17,5 @@ type PieChartProps = {
17
17
  * See https://nivo.rocks/pie/ for more information.
18
18
  * @experimental This component is experimental and may be subject to breaking changes in the future.
19
19
  */
20
- export declare const PieChart: ({ height, width, data, emptyLegend, content, withLegend, margin, chartProps, style, }: PieChartProps) => import("@emotion/react/jsx-runtime").JSX.Element;
20
+ export declare const PieChart: ({ height, width, data, emptyLegend, content, withLegend, margin, chartProps, style, }: PieChartProps) => import("react/jsx-runtime").JSX.Element;
21
21
  export {};
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "@emotion/react/jsx-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Pie } from "@nivo/pie";
4
4
  import { useTheme } from "@ultraviolet/themes";
5
5
  import { assignInlineVars } from "@vanilla-extract/dynamic";
@@ -10,12 +10,7 @@ import { Text } from "../Text/index.js";
10
10
  import { Legends } from "./Legends.js";
11
11
  import { emptyLegendPie, containerPie, contentPie, heightContainerPie } from "./styles.css.js";
12
12
  const DEFAULT_CHARTPROPS = {};
13
- const DEFAULT_MARGIN = {
14
- bottom: 10,
15
- left: 10,
16
- right: 10,
17
- top: 10
18
- };
13
+ const DEFAULT_MARGIN = { bottom: 10, left: 10, right: 10, top: 10 };
19
14
  const PieChart = ({
20
15
  height = 206,
21
16
  width = 206,
@@ -31,40 +26,85 @@ const PieChart = ({
31
26
  const [currentFocusIndex, setCurrentFocusIndex] = useState();
32
27
  const emptyTooltip = useCallback(() => /* @__PURE__ */ jsx("span", {}), []);
33
28
  const isEmpty = !data || data.length === 0;
34
- const EmptyLegendDisplayed = useCallback(() => emptyLegend ? /* @__PURE__ */ jsx("div", { className: emptyLegendPie, children: /* @__PURE__ */ jsx(Text, { as: "p", variant: "body", children: emptyLegend }) }) : null, [emptyLegend]);
29
+ const EmptyLegendDisplayed = useCallback(
30
+ () => emptyLegend ? /* @__PURE__ */ jsx("div", { className: emptyLegendPie, children: /* @__PURE__ */ jsx(Text, { as: "p", variant: "body", children: emptyLegend }) }) : null,
31
+ [emptyLegend]
32
+ );
35
33
  const localColors = getLegendColor(theme);
36
- const LegendDisplayer = useCallback(() => isEmpty ? /* @__PURE__ */ jsx(EmptyLegendDisplayed, {}) : /* @__PURE__ */ jsx(Legends, { colors: localColors, data, focused: currentFocusIndex, onFocusChange: setCurrentFocusIndex }), [isEmpty, currentFocusIndex, data, EmptyLegendDisplayed, localColors]);
37
- return /* @__PURE__ */ jsxs("div", { className: containerPie, style: {
38
- ...assignInlineVars({
39
- [heightContainerPie]: height ? `${height}px` : ""
40
- }),
41
- ...style
42
- }, children: [
43
- /* @__PURE__ */ jsxs("div", { style: {
44
- position: "relative"
45
- }, children: [
46
- /* @__PURE__ */ jsx(Pie, { activeOuterRadiusOffset: !isEmpty ? 4 : 0, colors: localColors, cornerRadius: 0, data: !isEmpty ? data : [{
47
- id: "empty",
48
- percent: 100
49
- }], defs: [{
50
- background: "inherit",
51
- color: theme.colors.neutral.textStrong,
52
- id: "lines",
53
- lineWidth: 2,
54
- rotation: 0,
55
- spacing: 5,
56
- type: "patternLines"
57
- }], enableArcLabels: false, enableArcLinkLabels: false, height, innerRadius: 0.8, margin, onMouseEnter: (datum, event) => {
58
- if (!isEmpty) {
59
- const pie = event.currentTarget;
60
- pie.style.cursor = "pointer";
61
- setCurrentFocusIndex(datum.id.toString());
62
- }
63
- }, onMouseLeave: () => setCurrentFocusIndex(void 0), padAngle: 1, theme: getNivoTheme(theme), tooltip: emptyTooltip, value: "percent", width, ...chartProps }),
64
- content ? /* @__PURE__ */ jsx("div", { className: contentPie, children: content }) : null
65
- ] }),
66
- withLegend ? /* @__PURE__ */ jsx(LegendDisplayer, {}) : null
67
- ] });
34
+ const LegendDisplayer = useCallback(
35
+ () => isEmpty ? /* @__PURE__ */ jsx(EmptyLegendDisplayed, {}) : /* @__PURE__ */ jsx(
36
+ Legends,
37
+ {
38
+ colors: localColors,
39
+ data,
40
+ focused: currentFocusIndex,
41
+ onFocusChange: setCurrentFocusIndex
42
+ }
43
+ ),
44
+ [isEmpty, currentFocusIndex, data, EmptyLegendDisplayed, localColors]
45
+ );
46
+ return /* @__PURE__ */ jsxs(
47
+ "div",
48
+ {
49
+ className: containerPie,
50
+ style: {
51
+ ...assignInlineVars({
52
+ [heightContainerPie]: height ? `${height}px` : ""
53
+ }),
54
+ ...style
55
+ },
56
+ children: [
57
+ /* @__PURE__ */ jsxs("div", { style: { position: "relative" }, children: [
58
+ /* @__PURE__ */ jsx(
59
+ Pie,
60
+ {
61
+ activeOuterRadiusOffset: !isEmpty ? 4 : 0,
62
+ colors: localColors,
63
+ cornerRadius: 0,
64
+ data: !isEmpty ? data : [
65
+ {
66
+ id: "empty",
67
+ percent: 100
68
+ }
69
+ ],
70
+ defs: [
71
+ {
72
+ background: "inherit",
73
+ color: theme.colors.neutral.textStrong,
74
+ id: "lines",
75
+ lineWidth: 2,
76
+ rotation: 0,
77
+ spacing: 5,
78
+ type: "patternLines"
79
+ }
80
+ ],
81
+ enableArcLabels: false,
82
+ enableArcLinkLabels: false,
83
+ height,
84
+ innerRadius: 0.8,
85
+ margin,
86
+ onMouseEnter: (datum, event) => {
87
+ if (!isEmpty) {
88
+ const pie = event.currentTarget;
89
+ pie.style.cursor = "pointer";
90
+ setCurrentFocusIndex(datum.id.toString());
91
+ }
92
+ },
93
+ onMouseLeave: () => setCurrentFocusIndex(void 0),
94
+ padAngle: 1,
95
+ theme: getNivoTheme(theme),
96
+ tooltip: emptyTooltip,
97
+ value: "percent",
98
+ width,
99
+ ...chartProps
100
+ }
101
+ ),
102
+ content ? /* @__PURE__ */ jsx("div", { className: contentPie, children: content }) : null
103
+ ] }),
104
+ withLegend ? /* @__PURE__ */ jsx(LegendDisplayer, {}) : null
105
+ ]
106
+ }
107
+ );
68
108
  };
69
109
  export {
70
110
  PieChart
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "@emotion/react/jsx-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { CloseIcon } from "@ultraviolet/icons";
4
4
  import { forwardRef, useRef, useContext, useState, useEffect, useCallback, useMemo } from "react";
5
5
  import { Button } from "../Button/index.js";
@@ -15,53 +15,111 @@ const ContentWrapper = ({
15
15
  sentiment
16
16
  }) => /* @__PURE__ */ jsxs(Stack, { className: stackPopover, gap: 1, children: [
17
17
  /* @__PURE__ */ jsxs(Stack, { direction: "row", justifyContent: "space-between", children: [
18
- /* @__PURE__ */ jsx(Text, { as: "h3", prominence: sentiment === "neutral" ? "strong" : "stronger", sentiment: sentiment === "neutral" ? "neutral" : "white", variant: "bodyStrong", children: title }),
19
- /* @__PURE__ */ jsx(Button, { "aria-label": "close", onClick: onClose, sentiment: sentiment === "neutral" ? "neutral" : "primary", size: "small", variant: sentiment === "neutral" ? "ghost" : "filled", children: /* @__PURE__ */ jsx(CloseIcon, {}) })
18
+ /* @__PURE__ */ jsx(
19
+ Text,
20
+ {
21
+ as: "h3",
22
+ prominence: sentiment === "neutral" ? "strong" : "stronger",
23
+ sentiment: sentiment === "neutral" ? "neutral" : "white",
24
+ variant: "bodyStrong",
25
+ children: title
26
+ }
27
+ ),
28
+ /* @__PURE__ */ jsx(
29
+ Button,
30
+ {
31
+ "aria-label": "close",
32
+ onClick: onClose,
33
+ sentiment: sentiment === "neutral" ? "neutral" : "primary",
34
+ size: "small",
35
+ variant: sentiment === "neutral" ? "ghost" : "filled",
36
+ children: /* @__PURE__ */ jsx(CloseIcon, {})
37
+ }
38
+ )
20
39
  ] }),
21
- typeof children === "string" ? /* @__PURE__ */ jsx(Text, { as: "p", prominence: sentiment === "neutral" ? "strong" : "stronger", sentiment: sentiment === "neutral" ? "neutral" : "white", variant: "bodySmall", children }) : children
22
- ] });
23
- const Popover = forwardRef(({
24
- visible = false,
25
- children,
26
- placement,
27
- content,
28
- title,
29
- sentiment = "neutral",
30
- size = "medium",
31
- onClose,
32
- className,
33
- maxWidth,
34
- maxHeight,
35
- "data-testid": dataTestId,
36
- portalTarget,
37
- dynamicDomRendering,
38
- align,
39
- style
40
- }, ref) => {
41
- const innerRef = useRef(null);
42
- const isInsideModal = useContext(ModalContext);
43
- const [localVisible, setLocalVisible] = useState(visible);
44
- useEffect(() => {
45
- setLocalVisible(visible);
46
- }, [visible]);
47
- const localOnClose = useCallback(() => {
48
- setLocalVisible(false);
49
- onClose?.();
50
- }, [onClose]);
51
- const smartPortalTarget = useMemo(() => {
52
- if (!portalTarget && isInsideModal) {
53
- return void 0;
54
- }
55
- if (!portalTarget && !isInsideModal) {
56
- return document.body;
40
+ typeof children === "string" ? /* @__PURE__ */ jsx(
41
+ Text,
42
+ {
43
+ as: "p",
44
+ prominence: sentiment === "neutral" ? "strong" : "stronger",
45
+ sentiment: sentiment === "neutral" ? "neutral" : "white",
46
+ variant: "bodySmall",
47
+ children
57
48
  }
58
- return portalTarget;
59
- }, [isInsideModal, portalTarget]);
60
- return /* @__PURE__ */ jsx(Popup, { align, className: `${className ? `${className} ` : ""}${popover({
61
- sentiment,
62
- size
63
- })}`, "data-testid": dataTestId, debounceDelay: 0, dynamicDomRendering, hideOnClickOutside: true, innerRef, maxHeight, maxWidth, onClose: localOnClose, placement, portalTarget: smartPortalTarget, ref, role: "dialog", style, tabIndex: -1, text: /* @__PURE__ */ jsx(ContentWrapper, { onClose: localOnClose, sentiment, title, children: content }), visible: localVisible, children });
64
- });
49
+ ) : children
50
+ ] });
51
+ const Popover = forwardRef(
52
+ ({
53
+ visible = false,
54
+ children,
55
+ placement,
56
+ content,
57
+ title,
58
+ sentiment = "neutral",
59
+ size = "medium",
60
+ onClose,
61
+ className,
62
+ maxWidth,
63
+ maxHeight,
64
+ "data-testid": dataTestId,
65
+ portalTarget,
66
+ dynamicDomRendering,
67
+ align,
68
+ style
69
+ }, ref) => {
70
+ const innerRef = useRef(null);
71
+ const isInsideModal = useContext(ModalContext);
72
+ const [localVisible, setLocalVisible] = useState(visible);
73
+ useEffect(() => {
74
+ setLocalVisible(visible);
75
+ }, [visible]);
76
+ const localOnClose = useCallback(() => {
77
+ setLocalVisible(false);
78
+ onClose?.();
79
+ }, [onClose]);
80
+ const smartPortalTarget = useMemo(() => {
81
+ if (!portalTarget && isInsideModal) {
82
+ return void 0;
83
+ }
84
+ if (!portalTarget && !isInsideModal) {
85
+ return document.body;
86
+ }
87
+ return portalTarget;
88
+ }, [isInsideModal, portalTarget]);
89
+ return /* @__PURE__ */ jsx(
90
+ Popup,
91
+ {
92
+ align,
93
+ className: `${className ? `${className} ` : ""}${popover({ sentiment, size })}`,
94
+ "data-testid": dataTestId,
95
+ debounceDelay: 0,
96
+ dynamicDomRendering,
97
+ hideOnClickOutside: true,
98
+ innerRef,
99
+ maxHeight,
100
+ maxWidth,
101
+ onClose: localOnClose,
102
+ placement,
103
+ portalTarget: smartPortalTarget,
104
+ ref,
105
+ role: "dialog",
106
+ style,
107
+ tabIndex: -1,
108
+ text: /* @__PURE__ */ jsx(
109
+ ContentWrapper,
110
+ {
111
+ onClose: localOnClose,
112
+ sentiment,
113
+ title,
114
+ children: content
115
+ }
116
+ ),
117
+ visible: localVisible,
118
+ children
119
+ }
120
+ );
121
+ }
122
+ );
65
123
  export {
66
124
  Popover
67
125
  };
@@ -1,5 +1,9 @@
1
1
  import type { RefObject } from 'react';
2
- export type PopupPlacement = 'top' | 'right' | 'bottom' | 'left' | 'auto' | 'nested-menu';
2
+ declare const PLACEMENTS: readonly ["top", "right", "bottom", "left", "nested-menu"];
3
+ type Placements = (typeof PLACEMENTS)[number];
4
+ type AddPrefixToUnion<T extends string, P extends string> = T extends string ? `${P}${T}` : never;
5
+ type AutoPlacements = AddPrefixToUnion<Exclude<Placements, 'nested-menu'>, 'auto-'> | 'auto';
6
+ export type PopupPlacement = AutoPlacements | Placements;
3
7
  export type PopupAlign = 'start' | 'center';
4
8
  export declare const DEFAULT_ARROW_WIDTH = 8;
5
9
  export declare const DEFAULT_POSITIONS: {
@@ -1,3 +1,5 @@
1
+ const PLACEMENTS = ["top", "right", "bottom", "left", "nested-menu"];
2
+ const isGenericPlacement = (placement) => PLACEMENTS.includes(placement);
1
3
  const DEFAULT_ARROW_WIDTH = 8;
2
4
  const SPACE = 4;
3
5
  const TOTAL_USED_SPACE = 0;
@@ -10,13 +12,26 @@ const DEFAULT_POSITIONS = {
10
12
  popupPosition: "translate3d(0px, 0px, 0)",
11
13
  rotate: 135
12
14
  };
15
+ const getOrderOfPlacement = (autoPlacement) => {
16
+ if (autoPlacement === "auto-bottom") {
17
+ return ["bottom", "top", "left", "right"];
18
+ }
19
+ if (autoPlacement === "auto-left") {
20
+ return ["left", "right", "top", "bottom"];
21
+ }
22
+ if (autoPlacement === "auto-right") {
23
+ return ["right", "left", "top", "bottom"];
24
+ }
25
+ return ["top", "bottom", "left", "right"];
26
+ };
13
27
  const computePlacement = ({
14
28
  childrenStructuredRef,
15
29
  popupStructuredRef,
16
30
  offsetParentRect,
17
31
  offsetParent,
18
32
  popupPortalTarget,
19
- isNestedMenu
33
+ isNestedMenu,
34
+ autoPlacement
20
35
  }) => {
21
36
  const {
22
37
  top: childrenTop,
@@ -24,34 +39,35 @@ const computePlacement = ({
24
39
  right: childrenRight,
25
40
  width: childrenWidth
26
41
  } = childrenStructuredRef;
27
- const {
28
- top: parentTop,
29
- left: parentLeft
30
- } = offsetParentRect;
42
+ const orderOfPlacement = getOrderOfPlacement(autoPlacement ?? "auto");
43
+ const { top: parentTop, left: parentLeft } = offsetParentRect;
31
44
  const isPopupPortalTargetBody = popupPortalTarget === document.body || offsetParent === document.body;
32
45
  const overloadedChildrenLeft = isPopupPortalTargetBody ? childrenLeft : childrenLeft - parentLeft;
33
46
  const overloadedChildrenTop = isPopupPortalTargetBody ? childrenTop : childrenTop - parentTop;
34
47
  const overloadedChildrenRight = isPopupPortalTargetBody ? childrenRight : childrenLeft - parentLeft + childrenWidth;
35
- const {
36
- width: popupWidth,
37
- height: popupHeight
38
- } = popupStructuredRef;
48
+ const { width: popupWidth, height: popupHeight } = popupStructuredRef;
39
49
  if (isNestedMenu) {
40
50
  if (overloadedChildrenRight + popupWidth + TOTAL_USED_SPACE > window.innerWidth) {
41
51
  return "left";
42
52
  }
43
53
  return "right";
44
54
  }
45
- if (overloadedChildrenTop - popupHeight - TOTAL_USED_SPACE < 0) {
46
- return "bottom";
55
+ const conditionsOfPlacement = {
56
+ bottom: window.innerHeight - overloadedChildrenTop - TOTAL_USED_SPACE >= popupHeight,
57
+ left: overloadedChildrenLeft - TOTAL_USED_SPACE >= popupWidth,
58
+ right: window.innerWidth - overloadedChildrenLeft - TOTAL_USED_SPACE >= popupWidth,
59
+ top: overloadedChildrenTop - popupHeight - TOTAL_USED_SPACE >= 0
60
+ };
61
+ if (conditionsOfPlacement[orderOfPlacement[0]]) {
62
+ return orderOfPlacement[0];
47
63
  }
48
- if (overloadedChildrenLeft - popupWidth - TOTAL_USED_SPACE < 0) {
49
- return "right";
64
+ if (conditionsOfPlacement[orderOfPlacement[1]]) {
65
+ return orderOfPlacement[1];
50
66
  }
51
- if (overloadedChildrenRight + popupWidth + TOTAL_USED_SPACE > window.innerWidth) {
52
- return "left";
67
+ if (conditionsOfPlacement[orderOfPlacement[2]]) {
68
+ return orderOfPlacement[2];
53
69
  }
54
- return "top";
70
+ return orderOfPlacement[3];
55
71
  };
56
72
  const findOffsetParent = (element) => {
57
73
  const offsetParent = element?.current?.offsetParent;
@@ -60,9 +76,7 @@ const findOffsetParent = (element) => {
60
76
  }
61
77
  let currentElement = element?.current;
62
78
  while (currentElement && currentElement.tagName !== "BODY") {
63
- const {
64
- position
65
- } = window.getComputedStyle(currentElement);
79
+ const { position } = window.getComputedStyle(currentElement);
66
80
  if (position !== "static") {
67
81
  return currentElement;
68
82
  }
@@ -83,10 +97,7 @@ const getPopupOverflowFromParent = (position, offsetParentRect, childrenRect, po
83
97
  right: childrenRight,
84
98
  width: childrenWidth
85
99
  } = childrenRect;
86
- const {
87
- width: popupWidth,
88
- height: popupHeight
89
- } = popupStructuredRef;
100
+ const { width: popupWidth, height: popupHeight } = popupStructuredRef;
90
101
  const popupHalfWidthWithArrow = popupWidth / 2 - arrowWidth - 1;
91
102
  const popupHalfHeightWithArrow = popupHeight / 2 - arrowWidth - 1;
92
103
  if (position === "top" || position === "bottom") {
@@ -129,20 +140,23 @@ const computePositions = ({
129
140
  }) => {
130
141
  const arrowWidth = hasArrow ? DEFAULT_ARROW_WIDTH : 0;
131
142
  const childrenRect = childrenRef.current.getBoundingClientRect();
132
- const offsetParent = findOffsetParent(childrenRef);
143
+ const offsetParent = findOffsetParent(
144
+ childrenRef
145
+ );
133
146
  const offsetParentRect = offsetParent?.getBoundingClientRect() ?? {
134
147
  left: 0,
135
148
  right: window?.innerWidth ?? 0,
136
149
  top: 0
137
150
  };
138
151
  const popupStructuredRef = popupRef.current.getBoundingClientRect();
139
- const placementBasedOnWindowSize = placement === "auto" ? computePlacement({
152
+ const placementBasedOnWindowSize = isGenericPlacement(placement) ? placement : computePlacement({
153
+ autoPlacement: placement,
140
154
  childrenStructuredRef: childrenRect,
141
155
  offsetParent,
142
156
  offsetParentRect,
143
157
  popupPortalTarget,
144
158
  popupStructuredRef
145
- }) : placement;
159
+ });
146
160
  const {
147
161
  top: childrenTop,
148
162
  left: childrenLeft,
@@ -150,20 +164,20 @@ const computePositions = ({
150
164
  width: childrenWidth,
151
165
  height: childrenHeight
152
166
  } = childrenRect;
153
- const {
154
- top: parentTop,
155
- left: parentLeft
156
- } = offsetParentRect;
157
- const {
158
- width: popupWidth,
159
- height: popupHeight
160
- } = popupStructuredRef;
167
+ const { top: parentTop, left: parentLeft } = offsetParentRect;
168
+ const { width: popupWidth, height: popupHeight } = popupStructuredRef;
161
169
  const isPopupPortalTargetBody = popupPortalTarget === document.body || offsetParent === document.body;
162
170
  const scrollTopValue = isPopupPortalTargetBody ? document.documentElement.scrollTop : offsetParent.scrollTop;
163
171
  const overloadedChildrenLeft = isPopupPortalTargetBody ? childrenLeft : childrenLeft - parentLeft;
164
172
  const overloadedChildrenTop = isPopupPortalTargetBody ? childrenTop : childrenTop - parentTop;
165
173
  const overloadedChildrenRight = isPopupPortalTargetBody ? childrenRight : childrenLeft - parentLeft + childrenWidth;
166
- const popupOverflow = getPopupOverflowFromParent(placementBasedOnWindowSize, offsetParentRect, childrenRect, popupStructuredRef, arrowWidth);
174
+ const popupOverflow = getPopupOverflowFromParent(
175
+ placementBasedOnWindowSize,
176
+ offsetParentRect,
177
+ childrenRect,
178
+ popupStructuredRef,
179
+ arrowWidth
180
+ );
167
181
  const isAligned = align === "start";
168
182
  switch (placementBasedOnWindowSize) {
169
183
  case "bottom": {