@konstructio/ui 0.1.2-alpha.103 → 0.1.2-alpha.105

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 (248) hide show
  1. package/README.md +15 -21
  2. package/dist/{AdditionalOptions-Cj29eeMF.js → AdditionalOptions-D0BAS2HG.js} +1 -1
  3. package/dist/{AlertDialogTrigger-CgcsW_ta.js → AlertDialogTrigger-BGo_acd5.js} +3 -3
  4. package/dist/{Checkbox-DzAx7n67.js → Checkbox-B_ngk9Dj.js} +56 -56
  5. package/dist/{Combination-cjXRJS03.js → Combination-CnMM05mt.js} +51 -45
  6. package/dist/{CommandInput-BnvRMfLI.js → CommandInput-BLq69pOT.js} +1 -1
  7. package/dist/Counter-BV680M5r.js +195 -0
  8. package/dist/DropdownButton-DfNojmCW.js +493 -0
  9. package/dist/{FlagSelectorList-BoYG-_It.js → FlagSelectorList-CkTR3j6O.js} +222 -218
  10. package/dist/{HamburgerTrigger-1vOTrm8-.js → HamburgerTrigger-DRylBL2d.js} +1 -1
  11. package/dist/{ImageUpload-DZTm4SBB.js → ImageUpload-DiwymQcU.js} +1 -1
  12. package/dist/{Input-CW0VwW2T.js → Input-Cf44DzfE.js} +18 -18
  13. package/dist/{Loading-fD0Xiyeq.js → Loading-DUh9PMJN.js} +3 -1
  14. package/dist/Modal-Dyn088X7.js +81 -0
  15. package/dist/Sidebar.css +1 -1
  16. package/dist/{Spinner-Lw9mZYhg.js → Spinner-CUwE2bLm.js} +1 -1
  17. package/dist/{Switch-WBRr8uOJ.js → Switch-aPhL5rNG.js} +4 -4
  18. package/dist/{Toast-ByH-l4XK.js → Toast-3NEz7LLa.js} +149 -148
  19. package/dist/Wrapper-CVJSuYWx.js +114 -0
  20. package/dist/{Wrapper-XeeD3av7.js → Wrapper-DP6Sxngx.js} +185 -180
  21. package/dist/Wrapper-R8fik3ah.js +182 -0
  22. package/dist/components/Alert/Alert.js +21 -21
  23. package/dist/components/AlertDialog/AlertDialog.js +1 -1
  24. package/dist/components/AlertDialog/components/AlertDialogTrigger.js +1 -1
  25. package/dist/components/AlertDialog/components/index.js +1 -1
  26. package/dist/components/AlertDialog/hooks/useAlertDialog.js +14 -10
  27. package/dist/components/Autocomplete/components/List/List.js +22 -26
  28. package/dist/components/Autocomplete/components/List/List.variants.js +7 -19
  29. package/dist/components/Autocomplete/hooks/useAutocomplete.js +39 -38
  30. package/dist/components/Autocomplete/hooks/useNavigationList.js +2 -1
  31. package/dist/components/Badge/Badge.js +37 -36
  32. package/dist/components/Button/Button.js +1 -1
  33. package/dist/components/Checkbox/Checkbox.js +1 -1
  34. package/dist/components/Command/Command.js +2 -2
  35. package/dist/components/Command/components/Command.js +6 -6
  36. package/dist/components/Command/components/CommandEmpty.js +1 -1
  37. package/dist/components/Command/components/CommandGroup.js +1 -1
  38. package/dist/components/Command/components/CommandInput.js +1 -1
  39. package/dist/components/Command/components/CommandItem.js +1 -1
  40. package/dist/components/Command/components/CommandList.js +2 -2
  41. package/dist/components/Command/components/CommandSeparator.js +1 -1
  42. package/dist/components/Command/components/DialogContent.js +2 -2
  43. package/dist/components/Command/components/DialogOverlay.js +1 -1
  44. package/dist/components/Command/components/index.js +1 -1
  45. package/dist/components/Command/contexts/Command.provider.js +16 -12
  46. package/dist/components/Counter/Counter.js +1 -1
  47. package/dist/components/DateRangePicker/components/CalendarPanel/components/CalendarMonth/CalendarMonth.js +1 -1
  48. package/dist/components/DateRangePicker/components/CalendarPanel/components/IndependentModeCalendar/IndependentModeCalendar.js +57 -58
  49. package/dist/components/DateRangePicker/components/CalendarPanel/components/TogetherModeCalendar/TogetherModeCalendar.js +42 -43
  50. package/dist/components/DateRangePicker/components/CalendarPanel/constants/dayPickerClassNames.js +1 -1
  51. package/dist/components/DateRangePicker/components/CalendarPanel/constants/index.js +1 -1
  52. package/dist/components/DateRangePicker/components/CalendarPanel/hooks/index.js +1 -1
  53. package/dist/components/DateRangePicker/components/CalendarPanel/hooks/useIndependentCarousel.js +42 -50
  54. package/dist/components/DateRangePicker/components/CalendarPanel/hooks/useTogetherCarousel.js +61 -79
  55. package/dist/components/DateRangePicker/components/CalendarPanel/utils/index.js +1 -1
  56. package/dist/components/DateRangePicker/components/DateTimeInputs/components/EndInputFields/EndInputFields.js +1 -1
  57. package/dist/components/DateRangePicker/components/DateTimeInputs/components/StartInputFields/StartInputFields.js +1 -1
  58. package/dist/components/DateRangePicker/components/DateTimeInputs/hooks/useDateTimeInputs.js +89 -122
  59. package/dist/components/Datepicker/DatePicker.js +13 -13
  60. package/dist/components/Drawer/Drawer.js +54 -49
  61. package/dist/components/Drawer/hooks/useDrawer.js +39 -44
  62. package/dist/components/DropdownButton/DropdownButton.js +1 -1
  63. package/dist/components/Filter/Filter.js +23 -22
  64. package/dist/components/Filter/components/BadgeDropdown/BadgeMultiSelect.hook.js +42 -56
  65. package/dist/components/Filter/components/BadgeDropdown/BadgeMultiSelect.js +1 -1
  66. package/dist/components/Filter/components/DateFilterDropdown/DateFilterDropdown.hook.js +30 -43
  67. package/dist/components/Filter/components/DateRangeFilterDropdown/DateRangeFilterDropdown.hook.js +36 -49
  68. package/dist/components/Filter/components/FilterDropdown/FilterDropdown.js +1 -1
  69. package/dist/components/Filter/components/ResetButton/ResetButton.js +21 -18
  70. package/dist/components/Filter/components/TextMultiSelect/TextMultiSelect.js +1 -1
  71. package/dist/components/Filter/components/TimeFilterDropdown/TimeFilterDropdown.hook.js +31 -45
  72. package/dist/components/Filter/contexts/filter.provider.js +15 -10
  73. package/dist/components/Filter/events/index.js +26 -5
  74. package/dist/components/Filter/hooks/index.js +4 -0
  75. package/dist/components/Filter/hooks/useFilterDropdownSync.js +26 -0
  76. package/dist/components/ImageUpload/ImageUpload.js +1 -1
  77. package/dist/components/Input/Input.js +1 -1
  78. package/dist/components/Loading/Loading.js +1 -1
  79. package/dist/components/Modal/Modal.js +1 -1
  80. package/dist/components/Modal/components/Body/Body.js +1 -1
  81. package/dist/components/Modal/components/Footer/Footer.js +1 -1
  82. package/dist/components/Modal/components/Header/Header.js +1 -1
  83. package/dist/components/Modal/components/Wrapper/Wrapper.js +1 -1
  84. package/dist/components/Modal/components/index.js +1 -1
  85. package/dist/components/Modal/contexts/Modal.provider.js +26 -19
  86. package/dist/components/MultiSelectDropdown/MultiSelectDropdown.js +1 -1
  87. package/dist/components/MultiSelectDropdown/components/List/List.js +1 -1
  88. package/dist/components/MultiSelectDropdown/components/Wrapper/Wrapper.js +1 -1
  89. package/dist/components/MultiSelectDropdown/components/index.js +1 -1
  90. package/dist/components/MultiSelectDropdown/hooks/useMultiSelectDropdown.js +14 -13
  91. package/dist/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  92. package/dist/components/PhoneNumberInput/components/FlagContent/FlagContent.js +6 -4
  93. package/dist/components/PhoneNumberInput/components/FlagSelectorList/FlagSelectorList.js +1 -1
  94. package/dist/components/PhoneNumberInput/components/FlagSelectorWrapper/FlagSelectorWrapper.js +16 -16
  95. package/dist/components/PhoneNumberInput/components/TruncateText/TruncateText.js +1 -1
  96. package/dist/components/PhoneNumberInput/components/Wrapper.js +1 -1
  97. package/dist/components/PhoneNumberInput/components/index.js +2 -2
  98. package/dist/components/PieChart/PieChart.js +33 -32
  99. package/dist/components/ProgressBar/ProgressBar.js +26 -20
  100. package/dist/components/Radio/Radio.js +28 -30
  101. package/dist/components/RadioCardGroup/RadioCardGroup.js +18 -18
  102. package/dist/components/RadioGroup/RadioGroup.js +24 -24
  103. package/dist/components/Range/Range.js +15 -13
  104. package/dist/components/Select/Select.js +2 -2
  105. package/dist/components/Select/components/AdditionalOptions/AdditionalOptions.js +1 -1
  106. package/dist/components/Select/components/List/List.js +2 -2
  107. package/dist/components/Select/components/ListItem/ListItem.js +30 -30
  108. package/dist/components/Select/components/Wrapper.js +1 -1
  109. package/dist/components/Select/components/index.js +2 -2
  110. package/dist/components/Select/hooks/useSelect.js +28 -39
  111. package/dist/components/Sidebar/Sidebar.js +21 -18
  112. package/dist/components/Sidebar/components/CollapseTrigger/CollapseTrigger.js +30 -0
  113. package/dist/components/Sidebar/components/CollapseTrigger/CollapseTrigger.variants.js +20 -0
  114. package/dist/components/Sidebar/components/HamburgerTrigger/HamburgerTrigger.js +1 -1
  115. package/dist/components/Sidebar/components/Logo/Logo.js +14 -10
  116. package/dist/components/Sidebar/components/Logo/Logo.variants.js +14 -4
  117. package/dist/components/Sidebar/components/NavigationOption/NavigationOption.js +41 -37
  118. package/dist/components/Sidebar/components/NavigationOption/NavigationOption.variants.js +4 -5
  119. package/dist/components/Sidebar/components/Wrapper/Wrapper.js +75 -68
  120. package/dist/components/Sidebar/components/index.js +17 -15
  121. package/dist/components/Sidebar/contexts/SidebarContext.js +8 -5
  122. package/dist/components/Slider/Slider.js +17 -15
  123. package/dist/components/Spinner/Spinner.js +1 -1
  124. package/dist/components/Stepper/Stepper.variants.js +6 -6
  125. package/dist/components/Stepper/hooks/useStepItemLogic.js +12 -17
  126. package/dist/components/Switch/Switch.js +1 -1
  127. package/dist/components/Table/components/Filter.js +1 -1
  128. package/dist/components/Tabs/Tabs.js +1 -1
  129. package/dist/components/Tabs/Tabs.variants.js +1 -1
  130. package/dist/components/Tabs/components/Content.js +1 -1
  131. package/dist/components/Tabs/components/List.js +1 -1
  132. package/dist/components/Tabs/components/Trigger.js +1 -1
  133. package/dist/components/Tag/Tag.js +1 -1
  134. package/dist/components/Tag/Tag.variants.js +17 -17
  135. package/dist/components/TagSelect/TagSelect.js +1 -1
  136. package/dist/components/TagSelect/components/Wrapper/Wrapper.js +1 -1
  137. package/dist/components/TagSelect/components/index.js +1 -1
  138. package/dist/components/TagSelect/hooks/useTagSelect.js +12 -11
  139. package/dist/components/TimePicker/components/HoursList/HoursList.js +34 -38
  140. package/dist/components/TimePicker/components/MeridianList/MeridianList.js +25 -29
  141. package/dist/components/TimePicker/components/MinutesList/MinutesList.js +33 -33
  142. package/dist/components/TimePicker/components/Wrapper/Wrapper.js +91 -99
  143. package/dist/components/TimePicker/components/WrapperList/WrapperList.js +29 -30
  144. package/dist/components/TimePicker/contexts/time-picker.provider.js +10 -10
  145. package/dist/components/Toast/Toast.js +1 -1
  146. package/dist/components/Toast/Toast.variants.js +1 -1
  147. package/dist/components/Tooltip/Tooltip.js +1 -1
  148. package/dist/components/VirtualizedTable/VirtualizedTable.js +32 -29
  149. package/dist/components/VirtualizedTable/components/Actions/Actions.js +0 -2
  150. package/dist/components/VirtualizedTable/components/Body/Body.js +5 -5
  151. package/dist/components/VirtualizedTable/components/DropdownPaginate/DropdownPaginate.js +1 -1
  152. package/dist/components/VirtualizedTable/components/Filter/Filter.js +55 -53
  153. package/dist/components/VirtualizedTable/components/FormPaginate/FormPaginate.js +1 -1
  154. package/dist/components/VirtualizedTable/components/Header/Header.js +1 -1
  155. package/dist/components/VirtualizedTable/contexts/index.js +1 -1
  156. package/dist/components/VirtualizedTable/contexts/table.provider.js +1 -1
  157. package/dist/components/VirtualizedTable/events/filters/filters.js +7 -0
  158. package/dist/components/VirtualizedTable/events/index.js +10 -25
  159. package/dist/components/VirtualizedTable/events/refresh/refresh.js +7 -0
  160. package/dist/components/VirtualizedTable/events/row/row.js +22 -0
  161. package/dist/components/VirtualizedTable/utils/get-table-id.js +4 -0
  162. package/dist/components/VirtualizedTable/utils/index.js +4 -2
  163. package/dist/components/index.js +95 -89
  164. package/dist/{components-BIHlj4yH.js → components-Cf345jTv.js} +45 -41
  165. package/dist/constants-CxJJRVK3.js +31 -0
  166. package/dist/{dist-DISvWx7U.js → dist-BUocnzkM.js} +1 -1
  167. package/dist/{dist-Dse3gSmZ.js → dist-BZNE2Tnx.js} +4 -4
  168. package/dist/{dist-2bGlmy8N2.js → dist-BaPW7qXd2.js} +27 -26
  169. package/dist/dist-BdobXn93.js +192 -0
  170. package/dist/dist-BlPTJNIm.js +118 -0
  171. package/dist/{dist-BiJrNvNo.js → dist-C3YVLapk.js} +29 -28
  172. package/dist/dist-C4j75TwZ.js +20 -0
  173. package/dist/dist-CCdbu9GU.js +46 -0
  174. package/dist/dist-CzKqHuqJ2.js +427 -0
  175. package/dist/dist-D-yS0HN8.js +228 -0
  176. package/dist/dist-D5XYRjmR.js +15 -0
  177. package/dist/dist-DDck_2lb.js +451 -0
  178. package/dist/{dist-C2aTw0m62.js → dist-DFCz63oC2.js} +5 -5
  179. package/dist/dist-DGOjiAnB2.js +14 -0
  180. package/dist/dist-DKryKPmP.js +193 -0
  181. package/dist/{dist-CTvBzxW8.js → dist-DX0sBG3Q.js} +1 -1
  182. package/dist/dist-DYIabsrY.js +17 -0
  183. package/dist/dist-pWlMx4Fi2.js +36 -0
  184. package/dist/{dist-CVDFmWf2.js → dist-tGUUcv8n.js} +17 -16
  185. package/dist/dist-xCbHbMLA.js +116 -0
  186. package/dist/{es2015-BWf6xQHm.js → es2015-CoHq2g4y.js} +95 -86
  187. package/dist/es2015-DigR3dar.js +795 -0
  188. package/dist/events.types-BG1Uh8i6.js +6 -0
  189. package/dist/hooks/index.js +6 -4
  190. package/dist/hooks/useClickOutside.js +14 -0
  191. package/dist/index.js +146 -138
  192. package/dist/lib/components/Autocomplete/components/List/List.variants.d.ts +0 -1
  193. package/dist/lib/components/DropdownButton/DropdownButton.d.ts +5 -6
  194. package/dist/lib/components/DropdownButton/DropdownButton.types.d.ts +2 -0
  195. package/dist/lib/components/Filter/Filter.types.d.ts +2 -0
  196. package/dist/lib/components/Filter/contexts/filter.context.d.ts +1 -0
  197. package/dist/lib/components/Filter/events/index.d.ts +10 -2
  198. package/dist/lib/components/Filter/hooks/index.d.ts +1 -0
  199. package/dist/lib/components/Filter/hooks/useFilterDropdownSync.d.ts +2 -0
  200. package/dist/lib/components/Filter/hooks/useFilterDropdownSync.types.d.ts +5 -0
  201. package/dist/lib/components/PieChart/PieChart.types.d.ts +4 -4
  202. package/dist/lib/components/ProgressBar/ProgressBar.types.d.ts +2 -0
  203. package/dist/lib/components/Select/hooks/useSelect.d.ts +2 -3
  204. package/dist/lib/components/Sidebar/Sidebar.d.ts +2 -2
  205. package/dist/lib/components/Sidebar/Sidebar.types.d.ts +6 -5
  206. package/dist/lib/components/Sidebar/components/CollapseTrigger/CollapseTrigger.d.ts +4 -0
  207. package/dist/lib/components/Sidebar/components/CollapseTrigger/CollapseTrigger.types.d.ts +4 -0
  208. package/dist/lib/components/Sidebar/components/CollapseTrigger/CollapseTrigger.variants.d.ts +1 -0
  209. package/dist/lib/components/Sidebar/components/Logo/Logo.types.d.ts +8 -0
  210. package/dist/lib/components/Sidebar/components/Logo/Logo.variants.d.ts +3 -1
  211. package/dist/lib/components/Sidebar/components/index.d.ts +2 -0
  212. package/dist/lib/components/Sidebar/contexts/SidebarContext.d.ts +12 -0
  213. package/dist/lib/components/VirtualizedTable/VirtualizedTable.d.ts +1 -0
  214. package/dist/lib/components/VirtualizedTable/events/events.types.d.ts +11 -0
  215. package/dist/lib/components/VirtualizedTable/events/filters/filters.d.ts +1 -0
  216. package/dist/lib/components/VirtualizedTable/events/index.d.ts +4 -14
  217. package/dist/lib/components/VirtualizedTable/events/refresh/refresh.d.ts +2 -0
  218. package/dist/lib/components/VirtualizedTable/events/refresh/refresh.types.d.ts +3 -0
  219. package/dist/lib/components/VirtualizedTable/events/row/row.d.ts +3 -0
  220. package/dist/lib/components/VirtualizedTable/utils/get-table-id.d.ts +1 -0
  221. package/dist/lib/components/VirtualizedTable/utils/index.d.ts +1 -0
  222. package/dist/lib/components/index.d.ts +2 -2
  223. package/dist/lib/hooks/index.d.ts +1 -0
  224. package/dist/lib/hooks/useClickOutside.d.ts +2 -0
  225. package/dist/package.json +24 -24
  226. package/dist/styles.css +1 -1
  227. package/dist/{table.provider-2sAkE7z_.js → table.provider-B0BafHuU.js} +395 -381
  228. package/dist/ui/civo-theme.css +4 -0
  229. package/dist/ui/kubefirst-theme.css +4 -0
  230. package/package.json +24 -24
  231. package/dist/Counter-CY0xGnVM.js +0 -208
  232. package/dist/DropdownButton-DnlwdPmb.js +0 -92
  233. package/dist/Modal-Bfzggwlr.js +0 -76
  234. package/dist/Wrapper-ClJ_Mham.js +0 -110
  235. package/dist/Wrapper-DNEn4fef.js +0 -161
  236. package/dist/constants-DXrF9vV4.js +0 -31
  237. package/dist/dist-B-Aoze_D.js +0 -10
  238. package/dist/dist-BuFiu480.js +0 -13
  239. package/dist/dist-C2s4VX-42.js +0 -31
  240. package/dist/dist-CT6d9xe7.js +0 -441
  241. package/dist/dist-CVy-ulDZ.js +0 -42
  242. package/dist/dist-D4FePjTS.js +0 -194
  243. package/dist/dist-Db6UeFo4.js +0 -291
  244. package/dist/dist-DqKFpce5.js +0 -98
  245. package/dist/dist-j7FOUrFU.js +0 -206
  246. package/dist/dist-l-aDnQZC.js +0 -62
  247. package/dist/dist-ppXKUlVt.js +0 -10
  248. /package/dist/{x-a_LpoXzG.js → x-a_LpoXzG2.js} +0 -0
@@ -1,62 +1,49 @@
1
1
  import { useFilterContext as F } from "../../contexts/filter.hook.js";
2
- import { FilterEvent as g, sendOpenFilterEvent as L } from "../../events/index.js";
3
- import { t as S } from "../../../../utils-B-BTGYA5.js";
4
- import { useCallback as a, useEffect as u, useId as D, useMemo as w, useState as f } from "react";
5
- var k = ({ defaultRange: h, onApply: t, countryCode: v = "US" }) => {
6
- const { closeOnApply: s } = F(), o = D(), [p, r] = f(!1), [i, l] = f(h), [n, d] = f(), R = w(() => {
7
- if (!n?.from) return;
8
- const e = (c) => c.toLocaleDateString(S(v), {
2
+ import { sendOpenFilterEvent as O } from "../../events/index.js";
3
+ import { useFilterDropdownSync as w } from "../../hooks/useFilterDropdownSync.js";
4
+ import { t as x } from "../../../../utils-B-BTGYA5.js";
5
+ import { useCallback as a, useId as y, useMemo as I, useState as i } from "react";
6
+ var E = ({ defaultRange: d, onApply: n, countryCode: p = "US" }) => {
7
+ const { closeOnApply: l } = F(), r = y(), [g, o] = i(!1), [s, c] = i(d), [t, m] = i(), u = I(() => {
8
+ if (!t?.from) return;
9
+ const e = (D) => D.toLocaleDateString(x(p), {
9
10
  day: "numeric",
10
11
  month: "short"
11
12
  });
12
- return n.to ? `${e(n.from)} - ${e(n.to)}` : e(n.from);
13
- }, [n]), E = a((e) => {
14
- e && L(o), r(e);
15
- }, [o]), C = a(() => {
13
+ return t.to ? `${e(t.from)} - ${e(t.to)}` : e(t.from);
14
+ }, [t]), h = (e) => {
15
+ e && O(r), o(e);
16
+ }, R = () => {
16
17
  const e = {
17
- from: i?.from,
18
- to: i?.to
18
+ from: s?.from,
19
+ to: s?.to
19
20
  };
20
- d(e), t?.(e), s && r(!1);
21
- }, [
22
- s,
23
- t,
24
- i
25
- ]), b = a((e) => {
26
- l({
21
+ m(e), n?.(e), l && o(!1);
22
+ }, C = a((e) => {
23
+ c({
27
24
  from: e.from,
28
25
  to: e.to
29
26
  });
30
- }, []), m = a(() => r(!1), []), O = a(() => {
31
- l(void 0), d(void 0), t?.(), s && r(!1);
32
- }, [s, t]);
33
- return u(() => {
34
- const e = new AbortController();
35
- return document.addEventListener(g.OPEN, (c) => {
36
- c.detail !== o && r(!1);
37
- }, { signal: e.signal }), document.addEventListener(g.RESET, () => {
38
- l(void 0), d(void 0), t?.();
39
- }, { signal: e.signal }), () => {
40
- e.abort();
41
- };
42
- }, [o, t]), u(() => {
43
- const e = new AbortController();
44
- return document.addEventListener("visibilitychange", () => {
45
- document.hidden && m();
46
- }, { signal: e.signal }), () => {
47
- e.abort();
48
- };
49
- }, [m]), {
50
- id: o,
51
- appliedRange: R,
52
- isOpen: p,
53
- selectedRange: i,
54
- handleApply: C,
55
- handleOpenChange: E,
56
- handleRangeChange: b,
57
- handleReset: O
27
+ }, []), S = a(() => o(!1), []), f = a(() => {
28
+ c(void 0), m(void 0), n?.();
29
+ }, [n]), v = () => {
30
+ f(), l && o(!1);
31
+ };
32
+ return w({
33
+ id: r,
34
+ onClose: S,
35
+ onReset: f
36
+ }), {
37
+ id: r,
38
+ appliedRange: u,
39
+ isOpen: g,
40
+ selectedRange: s,
41
+ handleApply: R,
42
+ handleOpenChange: h,
43
+ handleRangeChange: C,
44
+ handleReset: v
58
45
  };
59
46
  };
60
47
  export {
61
- k as useDateRangeFilterDropdown
48
+ E as useDateRangeFilterDropdown
62
49
  };
@@ -1,6 +1,6 @@
1
1
  import { t as l } from "../../../../utils-Cx-WzRZF.js";
2
2
  import { useFilterContext as f } from "../../contexts/filter.hook.js";
3
- import { i as p, n as c, r as h, t as g } from "../../../../dist-2bGlmy8N2.js";
3
+ import { i as p, n as c, r as h, t as g } from "../../../../dist-BaPW7qXd2.js";
4
4
  import { jsx as e, jsxs as u } from "react/jsx-runtime";
5
5
  var j = ({ isOpen: t, trigger: r, triggerClassName: o, position: a = "left", contentClassName: n, children: s, onOpenChange: i }) => {
6
6
  const { theme: m } = f();
@@ -1,21 +1,24 @@
1
- import { t as n } from "../../../../utils-Cx-WzRZF.js";
2
- import { Button as a } from "../../../Button/Button.js";
1
+ import { t as a } from "../../../../utils-Cx-WzRZF.js";
2
+ import { Button as i } from "../../../Button/Button.js";
3
+ import { useFilterContext as c } from "../../contexts/filter.hook.js";
3
4
  import { resetEvent as m } from "../../events/index.js";
4
- import { useCallback as i } from "react";
5
- import { jsx as p } from "react/jsx-runtime";
6
- var v = ({ disabled: r, className: e, onClick: t, ...o }) => /* @__PURE__ */ p(a, {
7
- type: "button",
8
- variant: "link",
9
- appearance: "compact",
10
- version: "alternate",
11
- onClick: i(() => {
12
- m(), t?.();
13
- }, [t]),
14
- disabled: r,
15
- className: n("hover:no-underline", e),
16
- ...o,
17
- children: "Reset"
18
- });
5
+ import { jsx as s } from "react/jsx-runtime";
6
+ var h = ({ disabled: t, className: e, onClick: r, ...o }) => {
7
+ const { resetScope: n } = c();
8
+ return /* @__PURE__ */ s(i, {
9
+ type: "button",
10
+ variant: "link",
11
+ appearance: "compact",
12
+ version: "alternate",
13
+ onClick: () => {
14
+ m(n), r?.();
15
+ },
16
+ disabled: t,
17
+ className: a("hover:no-underline", e),
18
+ ...o,
19
+ children: "Reset"
20
+ });
21
+ };
19
22
  export {
20
- v as ResetButton
23
+ h as ResetButton
21
24
  };
@@ -1,4 +1,4 @@
1
- import { t as m } from "../../../../Checkbox-DzAx7n67.js";
1
+ import { t as m } from "../../../../Checkbox-B_ngk9Dj.js";
2
2
  import { t as s } from "../../../../utils-Cx-WzRZF.js";
3
3
  import { Button as o } from "../../../Button/Button.js";
4
4
  import { t as y } from "../../../../chevron-down-DNP-OOAQ.js";
@@ -1,51 +1,37 @@
1
- import { getFormattedTime as w } from "../../../TimePicker/utils/index.js";
2
- import { useFilterContext as x } from "../../contexts/filter.hook.js";
3
- import { FilterEvent as b, sendOpenFilterEvent as I } from "../../events/index.js";
4
- import { useCallback as s, useEffect as p, useId as R, useState as i } from "react";
5
- var j = ({ onApply: t, format: g = "24" }) => {
6
- const { closeOnApply: l } = x(), n = R(), [h, o] = i(!1), [d, r] = i(), [f, c] = i(), [m, a] = i(), [E, v] = i(), L = E ?? (f ? w(f, g) : void 0), C = s((e) => {
7
- e && I(n), o(e);
8
- }, [n]), T = s((e) => {
9
- r(e.value), a(e.label);
10
- }, []), O = s((e) => {
11
- r(e), a(void 0);
12
- }, []), P = s(() => {
13
- c(d), v(m), t?.(d), l && o(!1);
14
- }, [
15
- l,
16
- t,
17
- d,
18
- m
19
- ]), u = s(() => o(!1), []), S = s(() => {
20
- r(void 0), c(void 0), a(void 0), v(void 0), t?.(), l && o(!1);
21
- }, [l, t]);
22
- return p(() => {
23
- const e = new AbortController();
24
- return document.addEventListener(b.OPEN, (F) => {
25
- F.detail !== n && o(!1);
26
- }, { signal: e.signal }), document.addEventListener(b.RESET, () => {
27
- r(void 0), c(void 0), a(void 0), v(void 0), t?.();
28
- }, { signal: e.signal }), () => {
29
- e.abort();
30
- };
31
- }, [n, t]), p(() => {
32
- const e = new AbortController();
33
- return document.addEventListener("visibilitychange", () => {
34
- document.hidden && u();
35
- }, { signal: e.signal }), () => {
36
- e.abort();
37
- };
38
- }, [u]), {
39
- id: n,
40
- appliedLabel: L,
41
- isOpen: h,
42
- selectedTime: d,
1
+ import { getFormattedTime as g } from "../../../TimePicker/utils/index.js";
2
+ import { useFilterContext as w } from "../../contexts/filter.hook.js";
3
+ import { sendOpenFilterEvent as x } from "../../events/index.js";
4
+ import { useFilterDropdownSync as A } from "../../hooks/useFilterDropdownSync.js";
5
+ import { useCallback as d, useId as D, useState as t } from "react";
6
+ var j = ({ onApply: o, format: v = "24" }) => {
7
+ const { closeOnApply: c } = w(), l = D(), [b, s] = t(!1), [n, i] = t(), [r, p] = t(), [m, a] = t(), [h, f] = t(), S = h ?? (r ? g(r, v) : void 0), C = (e) => {
8
+ e && x(l), s(e);
9
+ }, T = (e) => {
10
+ i(e.value), a(e.label);
11
+ }, F = d((e) => {
12
+ i(e), a(void 0);
13
+ }, []), L = () => {
14
+ p(n), f(m), o?.(n), c && s(!1);
15
+ }, O = d(() => s(!1), []), u = d(() => {
16
+ i(void 0), p(void 0), a(void 0), f(void 0), o?.();
17
+ }, [o]), P = () => {
18
+ u(), c && s(!1);
19
+ };
20
+ return A({
21
+ id: l,
22
+ onClose: O,
23
+ onReset: u
24
+ }), {
25
+ id: l,
26
+ appliedLabel: S,
27
+ isOpen: b,
28
+ selectedTime: n,
43
29
  selectedPresetLabel: m,
44
- handleApply: P,
30
+ handleApply: L,
45
31
  handleOpenChange: C,
46
32
  handleSelectPreset: T,
47
- handleSelectCustom: O,
48
- handleReset: S
33
+ handleSelectCustom: F,
34
+ handleReset: P
49
35
  };
50
36
  };
51
37
  export {
@@ -1,12 +1,17 @@
1
- import { FilterContext as t } from "./filter.context.js";
2
- import { jsx as i } from "react/jsx-runtime";
3
- var l = ({ children: r, closeOnApply: o, theme: e }) => /* @__PURE__ */ i(t.Provider, {
4
- value: {
5
- closeOnApply: o,
6
- theme: e
7
- },
8
- children: r
9
- });
1
+ import { FilterContext as m } from "./filter.context.js";
2
+ import { useId as p } from "react";
3
+ import { jsx as d } from "react/jsx-runtime";
4
+ var a = ({ children: r, closeOnApply: e, resetScope: o, theme: t }) => {
5
+ const i = p();
6
+ return /* @__PURE__ */ d(m.Provider, {
7
+ value: {
8
+ closeOnApply: e,
9
+ resetScope: o ?? i,
10
+ theme: t
11
+ },
12
+ children: r
13
+ });
14
+ };
10
15
  export {
11
- l as FilterProvider
16
+ a as FilterProvider
12
17
  };
@@ -1,8 +1,29 @@
1
- var e = /* @__PURE__ */ (function(t) {
1
+ var s = /* @__PURE__ */ (function(t) {
2
+ return t.OPEN = "@konstructio/KonstructFilter/event-OPEN", t.RESET = "@konstructio/KonstructFilter/event-RESET", t;
3
+ })({}), E = /* @__PURE__ */ (function(t) {
2
4
  return t.OPEN = "@konstrtuctio/KonstructFilter/event-OPEN", t.RESET = "@konstrtuctio/KonstructFilter/event-RESET", t;
3
- })({}), n = (t) => document.dispatchEvent(new CustomEvent("@konstrtuctio/KonstructFilter/event-OPEN", { detail: t })), r = () => document.dispatchEvent(new CustomEvent("@konstrtuctio/KonstructFilter/event-RESET"));
5
+ })({}), o = {
6
+ "@konstructio/KonstructFilter/event-OPEN": "@konstrtuctio/KonstructFilter/event-OPEN",
7
+ "@konstructio/KonstructFilter/event-RESET": "@konstrtuctio/KonstructFilter/event-RESET"
8
+ }, c = "__konstructFilterDuplicate", u = (t, e) => {
9
+ document.dispatchEvent(new CustomEvent(t, { detail: e }));
10
+ const n = new CustomEvent(o[t], { detail: e });
11
+ Object.assign(n, { [c]: !0 }), document.dispatchEvent(n);
12
+ }, i = (t) => {
13
+ u("@konstructio/KonstructFilter/event-OPEN", t);
14
+ }, v = (t) => {
15
+ u("@konstructio/KonstructFilter/event-RESET", t);
16
+ }, a = (t, e, n) => {
17
+ document.addEventListener(t, (r) => {
18
+ e(r);
19
+ }, n), document.addEventListener(o[t], (r) => {
20
+ c in r || e(r);
21
+ }, n);
22
+ };
4
23
  export {
5
- e as FilterEvent,
6
- r as resetEvent,
7
- n as sendOpenFilterEvent
24
+ s as FilterEvent,
25
+ E as LegacyFilterEvent,
26
+ a as addFilterEventListener,
27
+ v as resetEvent,
28
+ i as sendOpenFilterEvent
8
29
  };
@@ -0,0 +1,4 @@
1
+ import { useFilterDropdownSync as r } from "./useFilterDropdownSync.js";
2
+ export {
3
+ r as useFilterDropdownSync
4
+ };
@@ -0,0 +1,26 @@
1
+ import { useFilterContext as s } from "../contexts/filter.hook.js";
2
+ import { FilterEvent as o, addFilterEventListener as a } from "../events/index.js";
3
+ import { useEffect as d } from "react";
4
+ var u = ({ id: i, onClose: r, onReset: n }) => {
5
+ const { resetScope: l } = s();
6
+ d(() => {
7
+ const t = new AbortController();
8
+ return a(o.OPEN, (e) => {
9
+ e.detail !== i && r();
10
+ }, { signal: t.signal }), a(o.RESET, (e) => {
11
+ e.detail != null && e.detail !== l || n();
12
+ }, { signal: t.signal }), document.addEventListener("visibilitychange", () => {
13
+ document.hidden && r();
14
+ }, { signal: t.signal }), () => {
15
+ t.abort();
16
+ };
17
+ }, [
18
+ i,
19
+ r,
20
+ n,
21
+ l
22
+ ]);
23
+ };
24
+ export {
25
+ u as useFilterDropdownSync
26
+ };
@@ -1,4 +1,4 @@
1
- import { t as a } from "../../ImageUpload-DZTm4SBB.js";
1
+ import { t as a } from "../../ImageUpload-DiwymQcU.js";
2
2
  export {
3
3
  a as ImageUpload
4
4
  };
@@ -1,4 +1,4 @@
1
- import { t as o } from "../../Input-CW0VwW2T.js";
1
+ import { t as o } from "../../Input-Cf44DzfE.js";
2
2
  export {
3
3
  o as Input
4
4
  };
@@ -1,4 +1,4 @@
1
- import { t as r } from "../../Loading-fD0Xiyeq.js";
1
+ import { t as r } from "../../Loading-DUh9PMJN.js";
2
2
  export {
3
3
  r as Loading
4
4
  };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t } from "../../Modal-Bfzggwlr.js";
2
+ import { t } from "../../Modal-Dyn088X7.js";
3
3
  export {
4
4
  t as Modal
5
5
  };
@@ -1,4 +1,4 @@
1
- import { t as m } from "../../../../dist-DqKFpce5.js";
1
+ import { t as m } from "../../../../dist-xCbHbMLA.js";
2
2
  import { t as a } from "../../../../utils-Cx-WzRZF.js";
3
3
  import { jsx as s } from "react/jsx-runtime";
4
4
  var p = ({ children: r, asChild: o, className: t }) => /* @__PURE__ */ s(o ? m : "div", {
@@ -1,4 +1,4 @@
1
- import { t as m } from "../../../../dist-DqKFpce5.js";
1
+ import { t as m } from "../../../../dist-xCbHbMLA.js";
2
2
  import { t as a } from "../../../../utils-Cx-WzRZF.js";
3
3
  import { jsx as e } from "react/jsx-runtime";
4
4
  var p = ({ children: r, asChild: o, className: t }) => /* @__PURE__ */ e(o ? m : "div", {
@@ -1,4 +1,4 @@
1
- import { t as a } from "../../../../dist-DqKFpce5.js";
1
+ import { t as a } from "../../../../dist-xCbHbMLA.js";
2
2
  import { t as e } from "../../../../utils-Cx-WzRZF.js";
3
3
  import { jsx as m } from "react/jsx-runtime";
4
4
  var p = ({ children: r, asChild: o, className: t }) => /* @__PURE__ */ m(o ? a : "div", {
@@ -1,4 +1,4 @@
1
- import { n as p } from "../../../../Modal-Bfzggwlr.js";
1
+ import { n as p } from "../../../../Modal-Dyn088X7.js";
2
2
  export {
3
3
  p as Wrapper
4
4
  };
@@ -1,7 +1,7 @@
1
1
  import { Body as o } from "./Body/Body.js";
2
2
  import { Footer as p } from "./Footer/Footer.js";
3
3
  import { Header as e } from "./Header/Header.js";
4
- import { n as i } from "../../../Modal-Bfzggwlr.js";
4
+ import { n as i } from "../../../Modal-Dyn088X7.js";
5
5
  export {
6
6
  o as Body,
7
7
  p as Footer,
@@ -1,23 +1,30 @@
1
- import { useToggle as i } from "../../../hooks/useToggle.js";
2
- import { ModalContext as f } from "./Modal.context.js";
3
- import { useCallback as t, useState as n } from "react";
4
- import { jsx as h } from "react/jsx-runtime";
5
- var x = ({ children: s }) => {
6
- const [r, l] = n(!0), [a, o] = i(!1), [u, d] = n(), e = t(() => o(!0), [o]), p = t(() => o(!1), [o]), c = (m, C = !0) => {
7
- d(m), e(), l(C);
8
- };
9
- return /* @__PURE__ */ h(f.Provider, {
10
- value: {
11
- content: u,
12
- isOpen: a,
13
- shouldShowClose: r,
14
- onClose: p,
15
- onOpen: e,
16
- setContentAndOpen: c
17
- },
18
- children: s
1
+ import { useToggle as f } from "../../../hooks/useToggle.js";
2
+ import { ModalContext as h } from "./Modal.context.js";
3
+ import { useCallback as t, useMemo as S, useState as u } from "react";
4
+ import { jsx as g } from "react/jsx-runtime";
5
+ var w = ({ children: c }) => {
6
+ const [n, d] = u(!0), [s, o] = f(!1), [r, m] = u(), e = t(() => o(!0), [o]), l = t(() => o(!1), [o]), a = t((C, i = !0) => {
7
+ m(C), e(), d(i);
8
+ }, [e]), p = S(() => ({
9
+ content: r,
10
+ isOpen: s,
11
+ shouldShowClose: n,
12
+ onClose: l,
13
+ onOpen: e,
14
+ setContentAndOpen: a
15
+ }), [
16
+ r,
17
+ s,
18
+ n,
19
+ l,
20
+ e,
21
+ a
22
+ ]);
23
+ return /* @__PURE__ */ g(h.Provider, {
24
+ value: p,
25
+ children: c
19
26
  });
20
27
  };
21
28
  export {
22
- x as ModalProvider
29
+ w as ModalProvider
23
30
  };
@@ -1,4 +1,4 @@
1
- import { t } from "../../components-BIHlj4yH.js";
1
+ import { t } from "../../components-Cf345jTv.js";
2
2
  export {
3
3
  t as MultiSelectDropdown
4
4
  };
@@ -1,4 +1,4 @@
1
- import { r as o } from "../../../../components-BIHlj4yH.js";
1
+ import { r as o } from "../../../../components-Cf345jTv.js";
2
2
  export {
3
3
  o as List
4
4
  };
@@ -1,4 +1,4 @@
1
- import { n as p } from "../../../../components-BIHlj4yH.js";
1
+ import { n as p } from "../../../../components-Cf345jTv.js";
2
2
  export {
3
3
  p as Wrapper
4
4
  };
@@ -1,5 +1,5 @@
1
1
  import { Item as m } from "./Item/Item.js";
2
- import { n as p, r as t } from "../../../components-BIHlj4yH.js";
2
+ import { n as p, r as t } from "../../../components-Cf345jTv.js";
3
3
  export {
4
4
  m as Item,
5
5
  t as List,
@@ -1,23 +1,24 @@
1
+ import { useClickOutside as l } from "../../../hooks/useClickOutside.js";
1
2
  import { useMultiSelectDropdown as s } from "../contexts/MultiSelectDropdown.hook.js";
2
3
  import { useCallback as a, useEffect as u, useRef as c } from "react";
3
- var f = () => {
4
- const n = c(null), { onOpen: e } = s();
5
- return u(() => {
6
- const t = new AbortController(), r = (o) => {
7
- o.key === "Escape" && e(!1);
8
- }, l = (o) => {
9
- n.current?.contains(o.target) || e(!1);
4
+ var m = () => {
5
+ const o = c(null), { onOpen: e } = s();
6
+ return l(o, a(() => {
7
+ e(!1);
8
+ }, [e])), u(() => {
9
+ const t = new AbortController(), n = (r) => {
10
+ r.key === "Escape" && e(!1);
10
11
  };
11
- return document.addEventListener("keydown", r, { signal: t.signal }), document.addEventListener("mousedown", l, { signal: t.signal }), () => {
12
+ return document.addEventListener("keydown", n, { signal: t.signal }), () => {
12
13
  t.abort();
13
14
  };
14
- }, [e, n]), {
15
- wrapperRef: n,
16
- handleOpen: a((t) => {
15
+ }, [e]), {
16
+ wrapperRef: o,
17
+ handleOpen: (t) => {
17
18
  t.target?.closest("[data-value]") || e(!0);
18
- }, [e])
19
+ }
19
20
  };
20
21
  };
21
22
  export {
22
- f as useMultiSelectDropdown
23
+ m as useMultiSelectDropdown
23
24
  };
@@ -1,5 +1,5 @@
1
1
  import { t as p } from "../../phone-number.provider-BxQCTxp8.js";
2
- import { t } from "../../Wrapper-XeeD3av7.js";
2
+ import { t } from "../../Wrapper-DP6Sxngx.js";
3
3
  import { forwardRef as f } from "react";
4
4
  import { jsx as r } from "react/jsx-runtime";
5
5
  var h = f(({ defaultCountryCode: o = "US", ...m }, e) => /* @__PURE__ */ r(p, {
@@ -1,14 +1,16 @@
1
1
  import { t as n } from "../../../../utils-Cx-WzRZF.js";
2
2
  import { t as s } from "../../../../chevron-up-Bjpvg6ui.js";
3
3
  import { usePhoneNumberContext as l } from "../../contexts/phone-number.hook.js";
4
- import { jsx as e, jsxs as c } from "react/jsx-runtime";
4
+ import { jsx as a, jsxs as c } from "react/jsx-runtime";
5
5
  var u = () => {
6
- const { selectedCountry: o, isOpenSelector: t, handleOpenSelector: a } = l(), { flag: r } = o;
6
+ const { selectedCountry: e, isOpenSelector: t, handleOpenSelector: o } = l(), { flag: r } = e;
7
7
  return /* @__PURE__ */ c("button", {
8
8
  type: "button",
9
+ "aria-label": `Select country, ${e.name}`,
10
+ "aria-expanded": t,
9
11
  className: "flex items-center gap-2 cursor-pointer",
10
- onClick: () => a(!t),
11
- children: [/* @__PURE__ */ e(r, {}), /* @__PURE__ */ e(s, {
12
+ onClick: () => o(!t),
13
+ children: [/* @__PURE__ */ a(r, {}), /* @__PURE__ */ a(s, {
12
14
  className: n("transition-all", "duration-100", "data-[state=open]:rotate-0", "data-[state=closed]:rotate-180", "w-5", "h-5", "text-slate-400"),
13
15
  "data-state": t ? "open" : "closed"
14
16
  })]
@@ -1,4 +1,4 @@
1
- import { t as o } from "../../../../FlagSelectorList-BoYG-_It.js";
1
+ import { t as o } from "../../../../FlagSelectorList-CkTR3j6O.js";
2
2
  export {
3
3
  o as FlagSelectorList
4
4
  };
@@ -1,28 +1,28 @@
1
- import { t as n } from "../../../../Input-CW0VwW2T.js";
2
- import { t as d } from "../../../../utils-Cx-WzRZF.js";
3
- import { t as p } from "../../../../FlagSelectorList-BoYG-_It.js";
4
- import { usePhoneNumberContext as c } from "../../contexts/phone-number.hook.js";
5
- import { useCallback as u } from "react";
1
+ import { t as i } from "../../../../Input-Cf44DzfE.js";
2
+ import { t as c } from "../../../../utils-Cx-WzRZF.js";
3
+ import { t as d } from "../../../../FlagSelectorList-CkTR3j6O.js";
4
+ import { usePhoneNumberContext as p } from "../../contexts/phone-number.hook.js";
6
5
  import { jsx as r, jsxs as h } from "react/jsx-runtime";
7
- var C = ({ placeholder: e = "Search", showFlagOnSearch: o, showInputFilter: a, showNameOnSearch: t, showPlaceHolder: m = !0 }) => {
8
- const { onChangeTermOfSearch: l } = c(), s = u((i) => {
9
- l(i.target.value);
10
- }, []);
6
+ var v = ({ placeholder: e = "Search", showFlagOnSearch: a, showInputFilter: o, showNameOnSearch: t, showPlaceHolder: m = !0 }) => {
7
+ const { onChangeTermOfSearch: l } = p(), n = (s) => {
8
+ l(s.target.value);
9
+ };
11
10
  return /* @__PURE__ */ h("div", {
12
- className: d("absolute", "top-full", "mt-1.5", "animate-in", "fade-in-0", "zoom-in-95", "w-full", "border", "border-gray-100", "bg-white", "shadow-sm", "py-2", "z-10", "rounded-sm", "dark:bg-metal-800", "dark:border-metal-700"),
13
- children: [a && /* @__PURE__ */ r("div", {
11
+ className: c("absolute", "top-full", "mt-1.5", "animate-in", "fade-in-0", "zoom-in-95", "w-full", "border", "border-gray-100", "bg-white", "shadow-sm", "py-2", "z-10", "rounded-sm", "dark:bg-metal-800", "dark:border-metal-700"),
12
+ children: [o && /* @__PURE__ */ r("div", {
14
13
  className: "px-6 py-2.5",
15
- children: /* @__PURE__ */ r(n, {
14
+ children: /* @__PURE__ */ r(i, {
16
15
  isSearch: !0,
16
+ "aria-label": "Search country",
17
17
  placeholder: m ? e : void 0,
18
- onChange: s
18
+ onChange: n
19
19
  })
20
- }), /* @__PURE__ */ r(p, {
21
- showFlagOnSearch: o,
20
+ }), /* @__PURE__ */ r(d, {
21
+ showFlagOnSearch: a,
22
22
  showNameOnSearch: t
23
23
  })]
24
24
  });
25
25
  };
26
26
  export {
27
- C as FlagSelectorWrapper
27
+ v as FlagSelectorWrapper
28
28
  };
@@ -1,5 +1,5 @@
1
1
  import { o as f } from "../../../../rolldown-runtime-Ck3dxwZt.js";
2
- import { a as u, i as b, n as m, o as p } from "../../../../dist-CVDFmWf2.js";
2
+ import { a as u, i as b, n as m, o as p } from "../../../../dist-tGUUcv8n.js";
3
3
  import { t as h } from "../../../../debounce-C5Ycjilj.js";
4
4
  import { useCallback as w, useEffect as i, useRef as g, useState as v } from "react";
5
5
  import { jsx as s, jsxs as a } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { t as p } from "../../../Wrapper-XeeD3av7.js";
1
+ import { t as p } from "../../../Wrapper-DP6Sxngx.js";
2
2
  export {
3
3
  p as Wrapper
4
4
  };