@konstructio/ui 0.1.2-alpha.5 → 0.1.2-alpha.51

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 (203) hide show
  1. package/dist/{Combination-VYaRRJBZ.js → Combination-BtmnusWq.js} +141 -138
  2. package/dist/DatePicker.css +1 -1
  3. package/dist/Modal-CjC-CIJ8.js +99 -0
  4. package/dist/assets/icons/index.js +7 -0
  5. package/dist/chevron-down-DgT-uSF9.js +5 -0
  6. package/dist/chevron-right-DYvXLeql.js +7 -0
  7. package/dist/chevron-up-DEfvgPCw.js +54 -0
  8. package/dist/chevron-up-DrQr2Fwd.js +5 -0
  9. package/dist/components/Alert/Alert.js +2 -2
  10. package/dist/components/AlertDialog/AlertDialog.js +81 -53
  11. package/dist/components/AlertDialog/components/AlertDialogTrigger.js +3 -2
  12. package/dist/components/AlertDialog/components/index.js +1 -1
  13. package/dist/components/Badge/Badge.js +41 -44
  14. package/dist/components/Badge/Badge.variants.js +52 -13
  15. package/dist/components/Breadcrumb/Breadcrumb.js +1 -1
  16. package/dist/components/Breadcrumb/Breadcrumb.variants.js +3 -3
  17. package/dist/components/Breadcrumb/components/Item/Item.js +22 -22
  18. package/dist/components/Breadcrumb/components/Item/Item.variants.js +25 -14
  19. package/dist/components/Breadcrumb/hooks/useBreadcrumb.js +1 -1
  20. package/dist/components/Button/Button.js +1 -1
  21. package/dist/components/Button/Button.variants.js +108 -98
  22. package/dist/components/Card/Card.variants.js +7 -12
  23. package/dist/components/Checkbox/Checkbox.js +108 -105
  24. package/dist/components/Checkbox/Checkbox.variants.js +34 -7
  25. package/dist/components/Command/Command.js +2 -2
  26. package/dist/components/Command/components/Command.js +1 -1
  27. package/dist/components/Command/components/CommandEmpty.js +1 -1
  28. package/dist/components/Command/components/CommandGroup.js +1 -1
  29. package/dist/components/Command/components/CommandInput.js +2 -2
  30. package/dist/components/Command/components/CommandItem.js +1 -1
  31. package/dist/components/Command/components/CommandList.js +1 -1
  32. package/dist/components/Command/components/CommandSeparator.js +1 -1
  33. package/dist/components/Command/components/DialogContent.js +2 -2
  34. package/dist/components/Command/components/DialogOverlay.js +1 -1
  35. package/dist/components/Counter/Counter.js +210 -0
  36. package/dist/components/Counter/Counter.variants.js +70 -0
  37. package/dist/components/Datepicker/DatePicker.js +1587 -1353
  38. package/dist/components/Divider/Divider.variants.js +1 -1
  39. package/dist/components/DropdownButton/DropdownButton.js +1 -1
  40. package/dist/components/Filter/Filter.js +1 -1
  41. package/dist/components/Filter/Filter.variants.js +8 -7
  42. package/dist/components/Filter/components/BadgeDropdown/BadgeMultiSelect.js +71 -45
  43. package/dist/components/Filter/components/DateFilterDropdown/DateFilterDropdown.hook.js +2 -2
  44. package/dist/components/Filter/components/DateFilterDropdown/DateFilterDropdown.js +76 -43
  45. package/dist/components/Filter/components/ResetButton/ResetButton.js +15 -12
  46. package/dist/components/Filter/events/index.js +3 -3
  47. package/dist/components/ImageUpload/ImageUpload.js +221 -0
  48. package/dist/components/ImageUpload/ImageUpload.variants.js +109 -0
  49. package/dist/components/Input/Input.js +185 -118
  50. package/dist/components/Input/Input.variants.js +24 -19
  51. package/dist/components/Loading/Loading.js +1 -7
  52. package/dist/components/Modal/Modal.js +2 -2
  53. package/dist/components/Modal/components/Body/Body.js +1 -1
  54. package/dist/components/Modal/components/Footer/Footer.js +1 -1
  55. package/dist/components/Modal/components/Header/Header.js +1 -1
  56. package/dist/components/Modal/components/Wrapper/Wrapper.js +4 -4
  57. package/dist/components/Modal/components/index.js +1 -1
  58. package/dist/components/MultiSelectDropdown/MultiSelectDropdown.js +34 -0
  59. package/dist/components/MultiSelectDropdown/MultiSelectDropdown.variants.js +30 -0
  60. package/dist/components/MultiSelectDropdown/components/Item/Item.js +30 -0
  61. package/dist/components/MultiSelectDropdown/components/Item/Item.variants.js +38 -0
  62. package/dist/components/MultiSelectDropdown/components/List/List.js +30 -0
  63. package/dist/components/MultiSelectDropdown/components/List/List.variants.js +25 -0
  64. package/dist/components/MultiSelectDropdown/components/Wrapper/Wrapper.js +119 -0
  65. package/dist/components/MultiSelectDropdown/components/index.js +8 -0
  66. package/dist/components/MultiSelectDropdown/contexts/MultiSelectDropdown.context.js +21 -0
  67. package/dist/components/MultiSelectDropdown/contexts/MultiSelectDropdown.hook.js +13 -0
  68. package/dist/components/MultiSelectDropdown/contexts/MultiSelectDropdown.provider.js +138 -0
  69. package/dist/components/MultiSelectDropdown/contexts/index.js +6 -0
  70. package/dist/components/MultiSelectDropdown/hooks/useMultiSelectDropdown.js +32 -0
  71. package/dist/components/PhoneNumberInput/PhoneNumberInput.js +8 -0
  72. package/dist/components/PhoneNumberInput/PhoneNumberInput.variants.js +46 -0
  73. package/dist/components/PhoneNumberInput/components/FlagContent/FlagContent.js +36 -0
  74. package/dist/components/PhoneNumberInput/components/FlagSelectorList/FlagSelectorList.js +690 -0
  75. package/dist/components/PhoneNumberInput/components/FlagSelectorWrapper/FlagSelectorWrapper.js +60 -0
  76. package/dist/components/PhoneNumberInput/components/TruncateText/TruncateText.js +45 -0
  77. package/dist/components/PhoneNumberInput/components/Wrapper.js +651 -0
  78. package/dist/components/PhoneNumberInput/components/index.js +6 -0
  79. package/dist/components/PhoneNumberInput/contexts/index.js +8 -0
  80. package/dist/components/PhoneNumberInput/contexts/phone-number.context.js +28 -0
  81. package/dist/components/PhoneNumberInput/contexts/phone-number.hook.js +13 -0
  82. package/dist/components/PhoneNumberInput/contexts/phone-number.provider.js +6144 -0
  83. package/dist/components/PhoneNumberInput/utils/index.js +11 -0
  84. package/dist/components/PieChart/PieChart.js +463 -482
  85. package/dist/components/Radio/Radio.js +47 -44
  86. package/dist/components/Radio/Radio.variants.js +12 -8
  87. package/dist/components/RadioCard/RadioCard.variants.js +1 -6
  88. package/dist/components/RadioGroup/RadioGroup.js +10 -10
  89. package/dist/components/Range/Range.js +1 -1
  90. package/dist/components/Select/Select.js +48 -0
  91. package/dist/components/{Dropdown/Dropdown.variants.js → Select/Select.variants.js} +17 -11
  92. package/dist/components/Select/components/List/List.js +172 -0
  93. package/dist/components/{Dropdown → Select}/components/List/List.variants.js +11 -8
  94. package/dist/components/Select/components/ListItem/ListItem.js +117 -0
  95. package/dist/components/{Dropdown → Select}/components/ListItem/ListItem.variants.js +5 -4
  96. package/dist/components/Select/components/Wrapper.js +226 -0
  97. package/dist/components/Select/constants/index.js +4 -0
  98. package/dist/components/Select/constants/pagination.js +4 -0
  99. package/dist/components/Select/contexts/index.js +6 -0
  100. package/dist/components/Select/contexts/select.context.js +36 -0
  101. package/dist/components/Select/contexts/select.hook.js +11 -0
  102. package/dist/components/Select/contexts/select.provider.js +58 -0
  103. package/dist/components/Select/hooks/useNavigationList.js +50 -0
  104. package/dist/components/Select/hooks/useSelect.js +103 -0
  105. package/dist/components/Sidebar/Sidebar.variants.js +2 -2
  106. package/dist/components/Slider/Slider.js +1 -1
  107. package/dist/components/Switch/Switch.js +156 -129
  108. package/dist/components/Switch/Switch.variants.js +19 -10
  109. package/dist/components/Tabs/Tabs.js +1 -1
  110. package/dist/components/Tabs/Tabs.variants.js +4 -3
  111. package/dist/components/Tabs/components/Content.js +1 -1
  112. package/dist/components/Tabs/components/List.js +1 -1
  113. package/dist/components/Tabs/components/Trigger.js +1 -1
  114. package/dist/components/Tag/Tag.js +1 -1
  115. package/dist/components/Tag/Tag.variants.js +1 -0
  116. package/dist/components/TagSelect/components/Wrapper/Wrapper.js +49 -98
  117. package/dist/components/TimePicker/TimePicker.js +1 -1
  118. package/dist/components/TimePicker/TimePicker.variants.js +26 -14
  119. package/dist/components/TimePicker/components/MeridianList/MeridianList.js +30 -20
  120. package/dist/components/TimePicker/components/Wrapper/Wrapper.js +57 -35
  121. package/dist/components/TimePicker/components/WrapperList/WrapperList.js +53 -45
  122. package/dist/components/Toast/Toast.js +283 -256
  123. package/dist/components/Toast/Toast.variants.js +37 -24
  124. package/dist/components/Tooltip/Tooltip.js +15 -14
  125. package/dist/components/Tooltip/Tooltip.variants.js +5 -4
  126. package/dist/components/Typography/Typography.js +23 -25
  127. package/dist/components/Typography/Typography.variants.js +55 -52
  128. package/dist/components/VirtualizedTable/VirtualizedTable.js +97 -71
  129. package/dist/components/VirtualizedTable/components/Actions/Actions.js +95 -33
  130. package/dist/components/VirtualizedTable/components/Body/Body.js +73 -21
  131. package/dist/components/VirtualizedTable/components/DotPaginate/DotPaginate.js +94 -91
  132. package/dist/components/VirtualizedTable/components/DropdownPaginate/DropdownPaginate.js +20 -20
  133. package/dist/components/VirtualizedTable/components/Filter/Filter.js +61 -44
  134. package/dist/components/VirtualizedTable/components/FormPaginate/FormPaginate.js +33 -21
  135. package/dist/components/VirtualizedTable/components/Header/Header.js +61 -41
  136. package/dist/components/VirtualizedTable/components/Pagination/Pagination.js +43 -22
  137. package/dist/components/VirtualizedTable/components/Skeleton/Skeleton.js +106 -0
  138. package/dist/components/VirtualizedTable/components/TruncateText/TruncateText.js +22 -1858
  139. package/dist/components/VirtualizedTable/components/WrapperBody/WrapperBody.js +27 -0
  140. package/dist/components/VirtualizedTable/components/index.js +8 -6
  141. package/dist/components/VirtualizedTable/contexts/table.context.js +1 -0
  142. package/dist/components/VirtualizedTable/contexts/table.provider.js +68 -761
  143. package/dist/components/index.js +94 -86
  144. package/dist/contexts/theme.provider.js +0 -1
  145. package/dist/{createLucideIcon-D2CN7Ma9.js → createLucideIcon-D4r5Phnh.js} +0 -24
  146. package/dist/ellipsis-vertical-BVPtjl5f.js +9 -0
  147. package/dist/{index-C1g_chDT.js → index-AV6ZtGhy.js} +2 -2
  148. package/dist/index-BG8O18ZY.js +93 -0
  149. package/dist/index-BKjcReYh.js +55 -0
  150. package/dist/{index-N2OStZoU.js → index-BOE_3f_Z.js} +4 -25
  151. package/dist/{index-Cd2vhaop.js → index-BlSRBdPy.js} +5 -6
  152. package/dist/index-BmVmDQGH.js +662 -0
  153. package/dist/index-BvoZGpli.js +60 -0
  154. package/dist/index-Byr10W8m.js +1873 -0
  155. package/dist/{index-Dx2grAuN.js → index-CSWGJT-v.js} +0 -20
  156. package/dist/index-CeZcoQDw.js +479 -0
  157. package/dist/index-D6KzX_ef.js +135 -0
  158. package/dist/{index-B7t8D14s.js → index-D9SSJ6om.js} +4 -4
  159. package/dist/index-DKfEnhKr.js +200 -0
  160. package/dist/index-DLcqcWxM.js +29 -0
  161. package/dist/{index-ti1b9kqV.js → index-DMb4KD0b.js} +4 -4
  162. package/dist/{index-BAEWsOG1.js → index-DtEcCIrM.js} +1 -1
  163. package/dist/{index-bwWKd82e.js → index-Dy59FQl5.js} +1 -1
  164. package/dist/{index-C84F4YyO.js → index-gSPwC-1I.js} +10 -11
  165. package/dist/{index-Bnb0ezr3.js → index-vcSp8YRZ.js} +11 -12
  166. package/dist/index.d.ts +2142 -99
  167. package/dist/index.js +116 -106
  168. package/dist/libphonenumber-FTwQ9nyV.js +11549 -0
  169. package/dist/loader-juvMSJ9L.js +5 -0
  170. package/dist/package.json +43 -33
  171. package/dist/styles.css +1 -1
  172. package/dist/ui/civo-theme.css +194 -168
  173. package/dist/ui/theme.css +27 -0
  174. package/dist/{useBreadcrumb-B8DnuqkR.js → useBreadcrumb-BAHbGQ_O.js} +0 -10
  175. package/dist/utils/index.js +534 -501
  176. package/dist/x-BXShoIAM.js +8 -0
  177. package/dist/{x-4F_5p77m.js → x-Eoa9FJjA.js} +1 -1
  178. package/package.json +43 -33
  179. package/dist/Modal-D-NOEWMX.js +0 -98
  180. package/dist/chevron-down-MZvQoT2F.js +0 -11
  181. package/dist/chevron-right-VYBOBhRt.js +0 -19
  182. package/dist/components/Dropdown/Dropdown.js +0 -42
  183. package/dist/components/Dropdown/components/List/List.js +0 -79
  184. package/dist/components/Dropdown/components/ListItem/ListItem.js +0 -67
  185. package/dist/components/Dropdown/components/Wrapper.js +0 -205
  186. package/dist/components/Dropdown/contexts/dropdown.context.js +0 -19
  187. package/dist/components/Dropdown/contexts/dropdown.hook.js +0 -13
  188. package/dist/components/Dropdown/contexts/dropdown.provider.js +0 -30
  189. package/dist/components/Dropdown/contexts/index.js +0 -6
  190. package/dist/components/Dropdown/hooks/useDropdown.js +0 -58
  191. package/dist/components/Dropdown/hooks/useNavigationList.js +0 -62
  192. package/dist/components/NumberInput/NumberInput.js +0 -179
  193. package/dist/components/NumberInput/NumberInput.variants.js +0 -50
  194. package/dist/components/TimePicker/components/WrapperList/WrapperList.variants.js +0 -16
  195. package/dist/index-BITvcJAz.js +0 -423
  196. package/dist/index-BfXxHr_2.js +0 -125
  197. package/dist/index-Cvx4lqTq.js +0 -47
  198. package/dist/index-DBbEcSUG.js +0 -31
  199. package/dist/index-DQH6odE9.js +0 -82
  200. package/dist/index-DzIBBMjs.js +0 -436
  201. package/dist/index-os7vysFS.js +0 -131
  202. /package/dist/components/{Dropdown → Select}/components/EmptyList.js +0 -0
  203. /package/dist/components/{Dropdown → Select}/components/index.js +0 -0
@@ -0,0 +1,690 @@
1
+ import { jsx as g, jsxs as R } from "react/jsx-runtime";
2
+ import * as S from "react";
3
+ import { useRef as T, useMemo as k, useEffect as D } from "react";
4
+ import { flushSync as W } from "react-dom";
5
+ import { Typography as O } from "../../../Typography/Typography.js";
6
+ import { cn as z } from "../../../../utils/index.js";
7
+ import { TruncateText as L } from "../TruncateText/TruncateText.js";
8
+ import { usePhoneNumberContext as V } from "../../contexts/phone-number.hook.js";
9
+ function x(r, l, e) {
10
+ let s = e.initialDeps ?? [], t, o = !0;
11
+ function n() {
12
+ var i, a, u;
13
+ let c;
14
+ e.key && ((i = e.debug) != null && i.call(e)) && (c = Date.now());
15
+ const d = r();
16
+ if (!(d.length !== s.length || d.some((v, f) => s[f] !== v)))
17
+ return t;
18
+ s = d;
19
+ let m;
20
+ if (e.key && ((a = e.debug) != null && a.call(e)) && (m = Date.now()), t = l(...d), e.key && ((u = e.debug) != null && u.call(e))) {
21
+ const v = Math.round((Date.now() - c) * 100) / 100, f = Math.round((Date.now() - m) * 100) / 100, y = f / 16, E = (p, w) => {
22
+ for (p = String(p); p.length < w; )
23
+ p = " " + p;
24
+ return p;
25
+ };
26
+ console.info(
27
+ `%c⏱ ${E(f, 5)} /${E(v, 5)} ms`,
28
+ `
29
+ font-size: .6rem;
30
+ font-weight: bold;
31
+ color: hsl(${Math.max(
32
+ 0,
33
+ Math.min(120 - 120 * y, 120)
34
+ )}deg 100% 31%);`,
35
+ e?.key
36
+ );
37
+ }
38
+ return e?.onChange && !(o && e.skipInitialOnChange) && e.onChange(t), o = !1, t;
39
+ }
40
+ return n.updateDeps = (i) => {
41
+ s = i;
42
+ }, n;
43
+ }
44
+ function C(r, l) {
45
+ if (r === void 0)
46
+ throw new Error("Unexpected undefined");
47
+ return r;
48
+ }
49
+ const j = (r, l) => Math.abs(r - l) < 1.01, P = (r, l, e) => {
50
+ let s;
51
+ return function(...t) {
52
+ r.clearTimeout(s), s = r.setTimeout(() => l.apply(this, t), e);
53
+ };
54
+ }, I = (r) => {
55
+ const { offsetWidth: l, offsetHeight: e } = r;
56
+ return { width: l, height: e };
57
+ }, B = (r) => r, H = (r) => {
58
+ const l = Math.max(r.startIndex - r.overscan, 0), e = Math.min(r.endIndex + r.overscan, r.count - 1), s = [];
59
+ for (let t = l; t <= e; t++)
60
+ s.push(t);
61
+ return s;
62
+ }, $ = (r, l) => {
63
+ const e = r.scrollElement;
64
+ if (!e)
65
+ return;
66
+ const s = r.targetWindow;
67
+ if (!s)
68
+ return;
69
+ const t = (n) => {
70
+ const { width: i, height: a } = n;
71
+ l({ width: Math.round(i), height: Math.round(a) });
72
+ };
73
+ if (t(I(e)), !s.ResizeObserver)
74
+ return () => {
75
+ };
76
+ const o = new s.ResizeObserver((n) => {
77
+ const i = () => {
78
+ const a = n[0];
79
+ if (a?.borderBoxSize) {
80
+ const u = a.borderBoxSize[0];
81
+ if (u) {
82
+ t({ width: u.inlineSize, height: u.blockSize });
83
+ return;
84
+ }
85
+ }
86
+ t(I(e));
87
+ };
88
+ r.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(i) : i();
89
+ });
90
+ return o.observe(e, { box: "border-box" }), () => {
91
+ o.unobserve(e);
92
+ };
93
+ }, A = {
94
+ passive: !0
95
+ }, F = typeof window > "u" ? !0 : "onscrollend" in window, q = (r, l) => {
96
+ const e = r.scrollElement;
97
+ if (!e)
98
+ return;
99
+ const s = r.targetWindow;
100
+ if (!s)
101
+ return;
102
+ let t = 0;
103
+ const o = r.options.useScrollendEvent && F ? () => {
104
+ } : P(
105
+ s,
106
+ () => {
107
+ l(t, !1);
108
+ },
109
+ r.options.isScrollingResetDelay
110
+ ), n = (c) => () => {
111
+ const { horizontal: d, isRtl: h } = r.options;
112
+ t = d ? e.scrollLeft * (h && -1 || 1) : e.scrollTop, o(), l(t, c);
113
+ }, i = n(!0), a = n(!1);
114
+ e.addEventListener("scroll", i, A);
115
+ const u = r.options.useScrollendEvent && F;
116
+ return u && e.addEventListener("scrollend", a, A), () => {
117
+ e.removeEventListener("scroll", i), u && e.removeEventListener("scrollend", a);
118
+ };
119
+ }, U = (r, l, e) => {
120
+ if (l?.borderBoxSize) {
121
+ const s = l.borderBoxSize[0];
122
+ if (s)
123
+ return Math.round(
124
+ s[e.options.horizontal ? "inlineSize" : "blockSize"]
125
+ );
126
+ }
127
+ return r[e.options.horizontal ? "offsetWidth" : "offsetHeight"];
128
+ }, K = (r, {
129
+ adjustments: l = 0,
130
+ behavior: e
131
+ }, s) => {
132
+ var t, o;
133
+ const n = r + l;
134
+ (o = (t = s.scrollElement) == null ? void 0 : t.scrollTo) == null || o.call(t, {
135
+ [s.options.horizontal ? "left" : "top"]: n,
136
+ behavior: e
137
+ });
138
+ };
139
+ class G {
140
+ constructor(l) {
141
+ this.unsubs = [], this.scrollElement = null, this.targetWindow = null, this.isScrolling = !1, this.currentScrollToIndex = null, this.measurementsCache = [], this.itemSizeCache = /* @__PURE__ */ new Map(), this.laneAssignments = /* @__PURE__ */ new Map(), this.pendingMeasuredCacheIndexes = [], this.prevLanes = void 0, this.lanesChangedFlag = !1, this.lanesSettling = !1, this.scrollRect = null, this.scrollOffset = null, this.scrollDirection = null, this.scrollAdjustments = 0, this.elementsCache = /* @__PURE__ */ new Map(), this.observer = /* @__PURE__ */ (() => {
142
+ let e = null;
143
+ const s = () => e || (!this.targetWindow || !this.targetWindow.ResizeObserver ? null : e = new this.targetWindow.ResizeObserver((t) => {
144
+ t.forEach((o) => {
145
+ const n = () => {
146
+ this._measureElement(o.target, o);
147
+ };
148
+ this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(n) : n();
149
+ });
150
+ }));
151
+ return {
152
+ disconnect: () => {
153
+ var t;
154
+ (t = s()) == null || t.disconnect(), e = null;
155
+ },
156
+ observe: (t) => {
157
+ var o;
158
+ return (o = s()) == null ? void 0 : o.observe(t, { box: "border-box" });
159
+ },
160
+ unobserve: (t) => {
161
+ var o;
162
+ return (o = s()) == null ? void 0 : o.unobserve(t);
163
+ }
164
+ };
165
+ })(), this.range = null, this.setOptions = (e) => {
166
+ Object.entries(e).forEach(([s, t]) => {
167
+ typeof t > "u" && delete e[s];
168
+ }), this.options = {
169
+ debug: !1,
170
+ initialOffset: 0,
171
+ overscan: 1,
172
+ paddingStart: 0,
173
+ paddingEnd: 0,
174
+ scrollPaddingStart: 0,
175
+ scrollPaddingEnd: 0,
176
+ horizontal: !1,
177
+ getItemKey: B,
178
+ rangeExtractor: H,
179
+ onChange: () => {
180
+ },
181
+ measureElement: U,
182
+ initialRect: { width: 0, height: 0 },
183
+ scrollMargin: 0,
184
+ gap: 0,
185
+ indexAttribute: "data-index",
186
+ initialMeasurementsCache: [],
187
+ lanes: 1,
188
+ isScrollingResetDelay: 150,
189
+ enabled: !0,
190
+ isRtl: !1,
191
+ useScrollendEvent: !1,
192
+ useAnimationFrameWithResizeObserver: !1,
193
+ ...e
194
+ };
195
+ }, this.notify = (e) => {
196
+ var s, t;
197
+ (t = (s = this.options).onChange) == null || t.call(s, this, e);
198
+ }, this.maybeNotify = x(
199
+ () => (this.calculateRange(), [
200
+ this.isScrolling,
201
+ this.range ? this.range.startIndex : null,
202
+ this.range ? this.range.endIndex : null
203
+ ]),
204
+ (e) => {
205
+ this.notify(e);
206
+ },
207
+ {
208
+ key: process.env.NODE_ENV !== "production" && "maybeNotify",
209
+ debug: () => this.options.debug,
210
+ initialDeps: [
211
+ this.isScrolling,
212
+ this.range ? this.range.startIndex : null,
213
+ this.range ? this.range.endIndex : null
214
+ ]
215
+ }
216
+ ), this.cleanup = () => {
217
+ this.unsubs.filter(Boolean).forEach((e) => e()), this.unsubs = [], this.observer.disconnect(), this.scrollElement = null, this.targetWindow = null;
218
+ }, this._didMount = () => () => {
219
+ this.cleanup();
220
+ }, this._willUpdate = () => {
221
+ var e;
222
+ const s = this.options.enabled ? this.options.getScrollElement() : null;
223
+ if (this.scrollElement !== s) {
224
+ if (this.cleanup(), !s) {
225
+ this.maybeNotify();
226
+ return;
227
+ }
228
+ this.scrollElement = s, this.scrollElement && "ownerDocument" in this.scrollElement ? this.targetWindow = this.scrollElement.ownerDocument.defaultView : this.targetWindow = ((e = this.scrollElement) == null ? void 0 : e.window) ?? null, this.elementsCache.forEach((t) => {
229
+ this.observer.observe(t);
230
+ }), this.unsubs.push(
231
+ this.options.observeElementRect(this, (t) => {
232
+ this.scrollRect = t, this.maybeNotify();
233
+ })
234
+ ), this.unsubs.push(
235
+ this.options.observeElementOffset(this, (t, o) => {
236
+ this.scrollAdjustments = 0, this.scrollDirection = o ? this.getScrollOffset() < t ? "forward" : "backward" : null, this.scrollOffset = t, this.isScrolling = o, this.maybeNotify();
237
+ })
238
+ ), this._scrollToOffset(this.getScrollOffset(), {
239
+ adjustments: void 0,
240
+ behavior: void 0
241
+ });
242
+ }
243
+ }, this.getSize = () => this.options.enabled ? (this.scrollRect = this.scrollRect ?? this.options.initialRect, this.scrollRect[this.options.horizontal ? "width" : "height"]) : (this.scrollRect = null, 0), this.getScrollOffset = () => this.options.enabled ? (this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset == "function" ? this.options.initialOffset() : this.options.initialOffset), this.scrollOffset) : (this.scrollOffset = null, 0), this.getFurthestMeasurement = (e, s) => {
244
+ const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
245
+ for (let n = s - 1; n >= 0; n--) {
246
+ const i = e[n];
247
+ if (t.has(i.lane))
248
+ continue;
249
+ const a = o.get(
250
+ i.lane
251
+ );
252
+ if (a == null || i.end > a.end ? o.set(i.lane, i) : i.end < a.end && t.set(i.lane, !0), t.size === this.options.lanes)
253
+ break;
254
+ }
255
+ return o.size === this.options.lanes ? Array.from(o.values()).sort((n, i) => n.end === i.end ? n.index - i.index : n.end - i.end)[0] : void 0;
256
+ }, this.getMeasurementOptions = x(
257
+ () => [
258
+ this.options.count,
259
+ this.options.paddingStart,
260
+ this.options.scrollMargin,
261
+ this.options.getItemKey,
262
+ this.options.enabled,
263
+ this.options.lanes
264
+ ],
265
+ (e, s, t, o, n, i) => (this.prevLanes !== void 0 && this.prevLanes !== i && (this.lanesChangedFlag = !0), this.prevLanes = i, this.pendingMeasuredCacheIndexes = [], {
266
+ count: e,
267
+ paddingStart: s,
268
+ scrollMargin: t,
269
+ getItemKey: o,
270
+ enabled: n,
271
+ lanes: i
272
+ }),
273
+ {
274
+ key: !1
275
+ }
276
+ ), this.getMeasurements = x(
277
+ () => [this.getMeasurementOptions(), this.itemSizeCache],
278
+ ({ count: e, paddingStart: s, scrollMargin: t, getItemKey: o, enabled: n, lanes: i }, a) => {
279
+ if (!n)
280
+ return this.measurementsCache = [], this.itemSizeCache.clear(), this.laneAssignments.clear(), [];
281
+ if (this.laneAssignments.size > e)
282
+ for (const h of this.laneAssignments.keys())
283
+ h >= e && this.laneAssignments.delete(h);
284
+ this.lanesChangedFlag && (this.lanesChangedFlag = !1, this.lanesSettling = !0, this.measurementsCache = [], this.itemSizeCache.clear(), this.laneAssignments.clear(), this.pendingMeasuredCacheIndexes = []), this.measurementsCache.length === 0 && !this.lanesSettling && (this.measurementsCache = this.options.initialMeasurementsCache, this.measurementsCache.forEach((h) => {
285
+ this.itemSizeCache.set(h.key, h.size);
286
+ }));
287
+ const u = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
288
+ this.pendingMeasuredCacheIndexes = [], this.lanesSettling && this.measurementsCache.length === e && (this.lanesSettling = !1);
289
+ const c = this.measurementsCache.slice(0, u), d = new Array(i).fill(
290
+ void 0
291
+ );
292
+ for (let h = 0; h < u; h++) {
293
+ const m = c[h];
294
+ m && (d[m.lane] = h);
295
+ }
296
+ for (let h = u; h < e; h++) {
297
+ const m = o(h), v = this.laneAssignments.get(h);
298
+ let f, y;
299
+ if (v !== void 0 && this.options.lanes > 1) {
300
+ f = v;
301
+ const b = d[f], M = b !== void 0 ? c[b] : void 0;
302
+ y = M ? M.end + this.options.gap : s + t;
303
+ } else {
304
+ const b = this.options.lanes === 1 ? c[h - 1] : this.getFurthestMeasurement(c, h);
305
+ y = b ? b.end + this.options.gap : s + t, f = b ? b.lane : h % this.options.lanes, this.options.lanes > 1 && this.laneAssignments.set(h, f);
306
+ }
307
+ const E = a.get(m), p = typeof E == "number" ? E : this.options.estimateSize(h), w = y + p;
308
+ c[h] = {
309
+ index: h,
310
+ start: y,
311
+ size: p,
312
+ end: w,
313
+ key: m,
314
+ lane: f
315
+ }, d[f] = h;
316
+ }
317
+ return this.measurementsCache = c, c;
318
+ },
319
+ {
320
+ key: process.env.NODE_ENV !== "production" && "getMeasurements",
321
+ debug: () => this.options.debug
322
+ }
323
+ ), this.calculateRange = x(
324
+ () => [
325
+ this.getMeasurements(),
326
+ this.getSize(),
327
+ this.getScrollOffset(),
328
+ this.options.lanes
329
+ ],
330
+ (e, s, t, o) => this.range = e.length > 0 && s > 0 ? J({
331
+ measurements: e,
332
+ outerSize: s,
333
+ scrollOffset: t,
334
+ lanes: o
335
+ }) : null,
336
+ {
337
+ key: process.env.NODE_ENV !== "production" && "calculateRange",
338
+ debug: () => this.options.debug
339
+ }
340
+ ), this.getVirtualIndexes = x(
341
+ () => {
342
+ let e = null, s = null;
343
+ const t = this.calculateRange();
344
+ return t && (e = t.startIndex, s = t.endIndex), this.maybeNotify.updateDeps([this.isScrolling, e, s]), [
345
+ this.options.rangeExtractor,
346
+ this.options.overscan,
347
+ this.options.count,
348
+ e,
349
+ s
350
+ ];
351
+ },
352
+ (e, s, t, o, n) => o === null || n === null ? [] : e({
353
+ startIndex: o,
354
+ endIndex: n,
355
+ overscan: s,
356
+ count: t
357
+ }),
358
+ {
359
+ key: process.env.NODE_ENV !== "production" && "getVirtualIndexes",
360
+ debug: () => this.options.debug
361
+ }
362
+ ), this.indexFromElement = (e) => {
363
+ const s = this.options.indexAttribute, t = e.getAttribute(s);
364
+ return t ? parseInt(t, 10) : (console.warn(
365
+ `Missing attribute name '${s}={index}' on measured element.`
366
+ ), -1);
367
+ }, this._measureElement = (e, s) => {
368
+ const t = this.indexFromElement(e), o = this.measurementsCache[t];
369
+ if (!o)
370
+ return;
371
+ const n = o.key, i = this.elementsCache.get(n);
372
+ i !== e && (i && this.observer.unobserve(i), this.observer.observe(e), this.elementsCache.set(n, e)), e.isConnected && this.resizeItem(t, this.options.measureElement(e, s, this));
373
+ }, this.resizeItem = (e, s) => {
374
+ const t = this.measurementsCache[e];
375
+ if (!t)
376
+ return;
377
+ const o = this.itemSizeCache.get(t.key) ?? t.size, n = s - o;
378
+ n !== 0 && ((this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(t, n, this) : t.start < this.getScrollOffset() + this.scrollAdjustments) && (process.env.NODE_ENV !== "production" && this.options.debug && console.info("correction", n), this._scrollToOffset(this.getScrollOffset(), {
379
+ adjustments: this.scrollAdjustments += n,
380
+ behavior: void 0
381
+ })), this.pendingMeasuredCacheIndexes.push(t.index), this.itemSizeCache = new Map(this.itemSizeCache.set(t.key, s)), this.notify(!1));
382
+ }, this.measureElement = (e) => {
383
+ if (!e) {
384
+ this.elementsCache.forEach((s, t) => {
385
+ s.isConnected || (this.observer.unobserve(s), this.elementsCache.delete(t));
386
+ });
387
+ return;
388
+ }
389
+ this._measureElement(e, void 0);
390
+ }, this.getVirtualItems = x(
391
+ () => [this.getVirtualIndexes(), this.getMeasurements()],
392
+ (e, s) => {
393
+ const t = [];
394
+ for (let o = 0, n = e.length; o < n; o++) {
395
+ const i = e[o], a = s[i];
396
+ t.push(a);
397
+ }
398
+ return t;
399
+ },
400
+ {
401
+ key: process.env.NODE_ENV !== "production" && "getVirtualItems",
402
+ debug: () => this.options.debug
403
+ }
404
+ ), this.getVirtualItemForOffset = (e) => {
405
+ const s = this.getMeasurements();
406
+ if (s.length !== 0)
407
+ return C(
408
+ s[_(
409
+ 0,
410
+ s.length - 1,
411
+ (t) => C(s[t]).start,
412
+ e
413
+ )]
414
+ );
415
+ }, this.getMaxScrollOffset = () => {
416
+ if (!this.scrollElement) return 0;
417
+ if ("scrollHeight" in this.scrollElement)
418
+ return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight;
419
+ {
420
+ const e = this.scrollElement.document.documentElement;
421
+ return this.options.horizontal ? e.scrollWidth - this.scrollElement.innerWidth : e.scrollHeight - this.scrollElement.innerHeight;
422
+ }
423
+ }, this.getOffsetForAlignment = (e, s, t = 0) => {
424
+ if (!this.scrollElement) return 0;
425
+ const o = this.getSize(), n = this.getScrollOffset();
426
+ s === "auto" && (s = e >= n + o ? "end" : "start"), s === "center" ? e += (t - o) / 2 : s === "end" && (e -= o);
427
+ const i = this.getMaxScrollOffset();
428
+ return Math.max(Math.min(i, e), 0);
429
+ }, this.getOffsetForIndex = (e, s = "auto") => {
430
+ e = Math.max(0, Math.min(e, this.options.count - 1));
431
+ const t = this.measurementsCache[e];
432
+ if (!t)
433
+ return;
434
+ const o = this.getSize(), n = this.getScrollOffset();
435
+ if (s === "auto")
436
+ if (t.end >= n + o - this.options.scrollPaddingEnd)
437
+ s = "end";
438
+ else if (t.start <= n + this.options.scrollPaddingStart)
439
+ s = "start";
440
+ else
441
+ return [n, s];
442
+ if (s === "end" && e === this.options.count - 1)
443
+ return [this.getMaxScrollOffset(), s];
444
+ const i = s === "end" ? t.end + this.options.scrollPaddingEnd : t.start - this.options.scrollPaddingStart;
445
+ return [
446
+ this.getOffsetForAlignment(i, s, t.size),
447
+ s
448
+ ];
449
+ }, this.isDynamicMode = () => this.elementsCache.size > 0, this.scrollToOffset = (e, { align: s = "start", behavior: t } = {}) => {
450
+ t === "smooth" && this.isDynamicMode() && console.warn(
451
+ "The `smooth` scroll behavior is not fully supported with dynamic size."
452
+ ), this._scrollToOffset(this.getOffsetForAlignment(e, s), {
453
+ adjustments: void 0,
454
+ behavior: t
455
+ });
456
+ }, this.scrollToIndex = (e, { align: s = "auto", behavior: t } = {}) => {
457
+ t === "smooth" && this.isDynamicMode() && console.warn(
458
+ "The `smooth` scroll behavior is not fully supported with dynamic size."
459
+ ), e = Math.max(0, Math.min(e, this.options.count - 1)), this.currentScrollToIndex = e;
460
+ let o = 0;
461
+ const n = 10, i = (u) => {
462
+ if (!this.targetWindow) return;
463
+ const c = this.getOffsetForIndex(e, u);
464
+ if (!c) {
465
+ console.warn("Failed to get offset for index:", e);
466
+ return;
467
+ }
468
+ const [d, h] = c;
469
+ this._scrollToOffset(d, { adjustments: void 0, behavior: t }), this.targetWindow.requestAnimationFrame(() => {
470
+ const m = () => {
471
+ if (this.currentScrollToIndex !== e) return;
472
+ const v = this.getScrollOffset(), f = this.getOffsetForIndex(e, h);
473
+ if (!f) {
474
+ console.warn("Failed to get offset for index:", e);
475
+ return;
476
+ }
477
+ j(f[0], v) || a(h);
478
+ };
479
+ this.isDynamicMode() ? this.targetWindow.requestAnimationFrame(m) : m();
480
+ });
481
+ }, a = (u) => {
482
+ this.targetWindow && this.currentScrollToIndex === e && (o++, o < n ? (process.env.NODE_ENV !== "production" && this.options.debug && console.info("Schedule retry", o, n), this.targetWindow.requestAnimationFrame(() => i(u))) : console.warn(
483
+ `Failed to scroll to index ${e} after ${n} attempts.`
484
+ ));
485
+ };
486
+ i(s);
487
+ }, this.scrollBy = (e, { behavior: s } = {}) => {
488
+ s === "smooth" && this.isDynamicMode() && console.warn(
489
+ "The `smooth` scroll behavior is not fully supported with dynamic size."
490
+ ), this._scrollToOffset(this.getScrollOffset() + e, {
491
+ adjustments: void 0,
492
+ behavior: s
493
+ });
494
+ }, this.getTotalSize = () => {
495
+ var e;
496
+ const s = this.getMeasurements();
497
+ let t;
498
+ if (s.length === 0)
499
+ t = this.options.paddingStart;
500
+ else if (this.options.lanes === 1)
501
+ t = ((e = s[s.length - 1]) == null ? void 0 : e.end) ?? 0;
502
+ else {
503
+ const o = Array(this.options.lanes).fill(null);
504
+ let n = s.length - 1;
505
+ for (; n >= 0 && o.some((i) => i === null); ) {
506
+ const i = s[n];
507
+ o[i.lane] === null && (o[i.lane] = i.end), n--;
508
+ }
509
+ t = Math.max(...o.filter((i) => i !== null));
510
+ }
511
+ return Math.max(
512
+ t - this.options.scrollMargin + this.options.paddingEnd,
513
+ 0
514
+ );
515
+ }, this._scrollToOffset = (e, {
516
+ adjustments: s,
517
+ behavior: t
518
+ }) => {
519
+ this.options.scrollToFn(e, { behavior: t, adjustments: s }, this);
520
+ }, this.measure = () => {
521
+ this.itemSizeCache = /* @__PURE__ */ new Map(), this.laneAssignments = /* @__PURE__ */ new Map(), this.notify(!1);
522
+ }, this.setOptions(l);
523
+ }
524
+ }
525
+ const _ = (r, l, e, s) => {
526
+ for (; r <= l; ) {
527
+ const t = (r + l) / 2 | 0, o = e(t);
528
+ if (o < s)
529
+ r = t + 1;
530
+ else if (o > s)
531
+ l = t - 1;
532
+ else
533
+ return t;
534
+ }
535
+ return r > 0 ? r - 1 : 0;
536
+ };
537
+ function J({
538
+ measurements: r,
539
+ outerSize: l,
540
+ scrollOffset: e,
541
+ lanes: s
542
+ }) {
543
+ const t = r.length - 1, o = (a) => r[a].start;
544
+ if (r.length <= s)
545
+ return {
546
+ startIndex: 0,
547
+ endIndex: t
548
+ };
549
+ let n = _(
550
+ 0,
551
+ t,
552
+ o,
553
+ e
554
+ ), i = n;
555
+ if (s === 1)
556
+ for (; i < t && r[i].end < e + l; )
557
+ i++;
558
+ else if (s > 1) {
559
+ const a = Array(s).fill(0);
560
+ for (; i < t && a.some((c) => c < e + l); ) {
561
+ const c = r[i];
562
+ a[c.lane] = c.end, i++;
563
+ }
564
+ const u = Array(s).fill(e + l);
565
+ for (; n >= 0 && u.some((c) => c >= e); ) {
566
+ const c = r[n];
567
+ u[c.lane] = c.start, n--;
568
+ }
569
+ n = Math.max(0, n - n % s), i = Math.min(t, i + (s - 1 - i % s));
570
+ }
571
+ return { startIndex: n, endIndex: i };
572
+ }
573
+ const N = typeof document < "u" ? S.useLayoutEffect : S.useEffect;
574
+ function Q({
575
+ useFlushSync: r = !0,
576
+ ...l
577
+ }) {
578
+ const e = S.useReducer(() => ({}), {})[1], s = {
579
+ ...l,
580
+ onChange: (o, n) => {
581
+ var i;
582
+ r && n ? W(e) : e(), (i = l.onChange) == null || i.call(l, o, n);
583
+ }
584
+ }, [t] = S.useState(
585
+ () => new G(s)
586
+ );
587
+ return t.setOptions(s), N(() => t._didMount(), []), N(() => t._willUpdate()), t;
588
+ }
589
+ function X(r) {
590
+ return Q({
591
+ observeElementRect: $,
592
+ observeElementOffset: q,
593
+ scrollToFn: K,
594
+ ...r
595
+ });
596
+ }
597
+ const oe = ({
598
+ showFlagOnSearch: r,
599
+ showNameOnSearch: l
600
+ }) => {
601
+ const e = T(null), { termOfSearch: s, countries: t, handleSelectCountry: o } = V(), n = k(() => t.filter(
602
+ (a) => a.name.toLocaleLowerCase().includes(s.toLowerCase())
603
+ ), [s]), i = X({
604
+ count: n.length,
605
+ overscan: 5,
606
+ getScrollElement: () => e.current,
607
+ estimateSize: () => 40
608
+ });
609
+ return D(() => {
610
+ n.length > 0 && i.scrollToIndex(0);
611
+ }, [s, i]), n.length === 0 ? /* @__PURE__ */ g("div", { className: "overflow-y-auto max-h-60 snap-y snap-mandatory", children: /* @__PURE__ */ g("ul", { className: "relative", children: /* @__PURE__ */ g("li", { className: "w-full flex items-center h-10 select-none px-6", children: /* @__PURE__ */ g(
612
+ O,
613
+ {
614
+ variant: "body2",
615
+ component: "span",
616
+ className: "flex gap-2 items-center text-left",
617
+ children: "No options"
618
+ }
619
+ ) }) }) }) : /* @__PURE__ */ g(
620
+ "div",
621
+ {
622
+ ref: e,
623
+ className: "overflow-y-auto max-h-60 snap-y snap-mandatory scrollbar",
624
+ children: /* @__PURE__ */ g(
625
+ "ul",
626
+ {
627
+ className: "relative",
628
+ style: { height: i.getTotalSize() },
629
+ children: i.getVirtualItems().map((a) => {
630
+ const u = n[a.index], { flag: c, name: d, prefix: h } = u;
631
+ return /* @__PURE__ */ g(
632
+ "li",
633
+ {
634
+ className: z(
635
+ "absolute",
636
+ "w-full",
637
+ "snap-start",
638
+ "snap-always",
639
+ "scroll-m-0",
640
+ "flex",
641
+ "items-center",
642
+ "h-10"
643
+ ),
644
+ style: {
645
+ top: a.start,
646
+ height: a.size
647
+ },
648
+ children: /* @__PURE__ */ g(
649
+ "button",
650
+ {
651
+ className: z(
652
+ "w-full",
653
+ "h-full",
654
+ "cursor-pointer",
655
+ "px-6",
656
+ "hover:bg-gray-50",
657
+ "transition-colors",
658
+ "duration-150",
659
+ "focus-visible:outline-0",
660
+ "hover:outline-gray-100",
661
+ "focus:bg-gray-50",
662
+ "dark:hover:bg-metal-700"
663
+ ),
664
+ onClick: () => o(u),
665
+ children: /* @__PURE__ */ R(
666
+ O,
667
+ {
668
+ variant: "body2",
669
+ component: "span",
670
+ className: "flex gap-2 items-center text-left",
671
+ children: [
672
+ r && /* @__PURE__ */ g(c, {}),
673
+ l && /* @__PURE__ */ g(L, { text: d, prefix: h })
674
+ ]
675
+ }
676
+ )
677
+ }
678
+ )
679
+ },
680
+ a.key
681
+ );
682
+ })
683
+ }
684
+ )
685
+ }
686
+ );
687
+ };
688
+ export {
689
+ oe as FlagSelectorList
690
+ };