@dmsi/wedgekit-react 0.0.2

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 (263) hide show
  1. package/README.md +35 -0
  2. package/dist/chunk-27KIIUAR.js +59 -0
  3. package/dist/chunk-2G2E2JMA.js +123 -0
  4. package/dist/chunk-4C66DLIJ.js +51 -0
  5. package/dist/chunk-4RD5ZF2V.js +55 -0
  6. package/dist/chunk-4RJKB7LC.js +14 -0
  7. package/dist/chunk-4T7F5BZZ.js +26 -0
  8. package/dist/chunk-5GOBP2JS.js +53 -0
  9. package/dist/chunk-6ZY524ID.js +42 -0
  10. package/dist/chunk-AWQSSKCK.js +32 -0
  11. package/dist/chunk-BNHSAFMP.js +93 -0
  12. package/dist/chunk-BWRHL2AG.js +439 -0
  13. package/dist/chunk-DKKYR6DS.js +132 -0
  14. package/dist/chunk-E5ALT5W7.js +182 -0
  15. package/dist/chunk-FY7PTP6E.js +322 -0
  16. package/dist/chunk-GTCSRHPF.js +119 -0
  17. package/dist/chunk-I2UVVKQI.js +12 -0
  18. package/dist/chunk-IGQVA7SC.js +41 -0
  19. package/dist/chunk-K3IKUSZW.js +59 -0
  20. package/dist/chunk-KENSVWOY.js +151 -0
  21. package/dist/chunk-KX3O6GJ6.js +138 -0
  22. package/dist/chunk-L4UM372R.js +253 -0
  23. package/dist/chunk-ORMEWXMH.js +37 -0
  24. package/dist/chunk-Q3FKEKIN.js +23 -0
  25. package/dist/chunk-SEKKGFM6.js +28 -0
  26. package/dist/chunk-SY3HT54E.js +91 -0
  27. package/dist/chunk-TAW5ZZ4Z.js +346 -0
  28. package/dist/chunk-TRUPPHBQ.js +109 -0
  29. package/dist/chunk-TU55CHXU.js +30 -0
  30. package/dist/chunk-TWZZB4WO.js +114 -0
  31. package/dist/chunk-TYI74BSP.js +62 -0
  32. package/dist/chunk-U42SKNR6.js +104 -0
  33. package/dist/chunk-UU3FA6LV.js +72 -0
  34. package/dist/chunk-WVUIIBRR.js +51 -0
  35. package/dist/chunk-XUIPGYP5.js +39 -0
  36. package/dist/chunk-Z4UCFUF7.js +299 -0
  37. package/dist/components/Breadcrumbs.cjs +376 -0
  38. package/dist/components/Breadcrumbs.js +90 -0
  39. package/dist/components/Button.cjs +319 -0
  40. package/dist/components/Button.js +8 -0
  41. package/dist/components/CalendarRange.cjs +520 -0
  42. package/dist/components/CalendarRange.js +13 -0
  43. package/dist/components/Caption.cjs +283 -0
  44. package/dist/components/Caption.js +80 -0
  45. package/dist/components/Checkbox.cjs +378 -0
  46. package/dist/components/Checkbox.js +11 -0
  47. package/dist/components/ContentTab.cjs +382 -0
  48. package/dist/components/ContentTab.js +10 -0
  49. package/dist/components/ContentTabs.cjs +472 -0
  50. package/dist/components/ContentTabs.js +98 -0
  51. package/dist/components/DMSiLogo.cjs +79 -0
  52. package/dist/components/DMSiLogo.js +56 -0
  53. package/dist/components/DataGrid.cjs +3113 -0
  54. package/dist/components/DataGrid.js +758 -0
  55. package/dist/components/DataGridCell.cjs +1907 -0
  56. package/dist/components/DataGridCell.js +24 -0
  57. package/dist/components/DataTable.cjs +791 -0
  58. package/dist/components/DataTable.js +720 -0
  59. package/dist/components/DateInput.cjs +1130 -0
  60. package/dist/components/DateInput.js +170 -0
  61. package/dist/components/DateRangeInput.cjs +1131 -0
  62. package/dist/components/DateRangeInput.js +171 -0
  63. package/dist/components/DebugJson.cjs +50 -0
  64. package/dist/components/DebugJson.js +27 -0
  65. package/dist/components/Display.cjs +234 -0
  66. package/dist/components/Display.js +12 -0
  67. package/dist/components/EditingContext.cjs +73 -0
  68. package/dist/components/EditingContext.js +35 -0
  69. package/dist/components/FilterGroup.cjs +1431 -0
  70. package/dist/components/FilterGroup.js +231 -0
  71. package/dist/components/FullViewportBox.cjs +35 -0
  72. package/dist/components/FullViewportBox.js +12 -0
  73. package/dist/components/Grid.cjs +69 -0
  74. package/dist/components/Grid.js +36 -0
  75. package/dist/components/GridContainer.cjs +125 -0
  76. package/dist/components/GridContainer.js +92 -0
  77. package/dist/components/Heading.cjs +238 -0
  78. package/dist/components/Heading.js +14 -0
  79. package/dist/components/HorizontalDivider.cjs +33 -0
  80. package/dist/components/HorizontalDivider.js +10 -0
  81. package/dist/components/Icon.cjs +98 -0
  82. package/dist/components/Icon.js +7 -0
  83. package/dist/components/Input.cjs +672 -0
  84. package/dist/components/Input.js +21 -0
  85. package/dist/components/InputGroup.cjs +270 -0
  86. package/dist/components/InputGroup.js +60 -0
  87. package/dist/components/Label.cjs +223 -0
  88. package/dist/components/Label.js +8 -0
  89. package/dist/components/Link.cjs +262 -0
  90. package/dist/components/Link.js +8 -0
  91. package/dist/components/List.cjs +37 -0
  92. package/dist/components/List.js +14 -0
  93. package/dist/components/LiveChatComponent.cjs +63 -0
  94. package/dist/components/LiveChatComponent.js +40 -0
  95. package/dist/components/LogoAgilityTopBar.cjs +115 -0
  96. package/dist/components/LogoAgilityTopBar.js +92 -0
  97. package/dist/components/LogoDMSiTopBar.cjs +79 -0
  98. package/dist/components/LogoDMSiTopBar.js +7 -0
  99. package/dist/components/LogoMillworkTopBar.cjs +221 -0
  100. package/dist/components/LogoMillworkTopBar.js +198 -0
  101. package/dist/components/MainBar.cjs +211 -0
  102. package/dist/components/MainBar.js +65 -0
  103. package/dist/components/Menu.cjs +437 -0
  104. package/dist/components/Menu.js +11 -0
  105. package/dist/components/MenuOption.cjs +483 -0
  106. package/dist/components/MenuOption.js +13 -0
  107. package/dist/components/MobileDataGrid.cjs +658 -0
  108. package/dist/components/MobileDataGrid.js +125 -0
  109. package/dist/components/Modal.cjs +783 -0
  110. package/dist/components/Modal.js +245 -0
  111. package/dist/components/ModalButtons.cjs +385 -0
  112. package/dist/components/ModalButtons.js +10 -0
  113. package/dist/components/ModalContent.cjs +57 -0
  114. package/dist/components/ModalContent.js +7 -0
  115. package/dist/components/ModalHeader.cjs +426 -0
  116. package/dist/components/ModalHeader.js +11 -0
  117. package/dist/components/ModalScrim.cjs +64 -0
  118. package/dist/components/ModalScrim.js +7 -0
  119. package/dist/components/NavigationTab.cjs +431 -0
  120. package/dist/components/NavigationTab.js +10 -0
  121. package/dist/components/NavigationTabs.cjs +477 -0
  122. package/dist/components/NavigationTabs.js +56 -0
  123. package/dist/components/Notification.cjs +640 -0
  124. package/dist/components/Notification.js +117 -0
  125. package/dist/components/OptionPill.cjs +478 -0
  126. package/dist/components/OptionPill.js +11 -0
  127. package/dist/components/Paragraph.cjs +231 -0
  128. package/dist/components/Paragraph.js +8 -0
  129. package/dist/components/Password.cjs +700 -0
  130. package/dist/components/Password.js +53 -0
  131. package/dist/components/ProjectBar.cjs +242 -0
  132. package/dist/components/ProjectBar.js +63 -0
  133. package/dist/components/Radio.cjs +349 -0
  134. package/dist/components/Radio.js +131 -0
  135. package/dist/components/Search.cjs +767 -0
  136. package/dist/components/Search.js +12 -0
  137. package/dist/components/Select.cjs +758 -0
  138. package/dist/components/Select.js +12 -0
  139. package/dist/components/SideMenu.cjs +54 -0
  140. package/dist/components/SideMenu.js +21 -0
  141. package/dist/components/SideMenuGroup.cjs +422 -0
  142. package/dist/components/SideMenuGroup.js +83 -0
  143. package/dist/components/SideMenuItem.cjs +388 -0
  144. package/dist/components/SideMenuItem.js +70 -0
  145. package/dist/components/Stack.cjs +138 -0
  146. package/dist/components/Stack.js +7 -0
  147. package/dist/components/StatusPill.cjs +265 -0
  148. package/dist/components/StatusPill.js +52 -0
  149. package/dist/components/Stepper.cjs +885 -0
  150. package/dist/components/Stepper.js +105 -0
  151. package/dist/components/Subheader.cjs +226 -0
  152. package/dist/components/Subheader.js +8 -0
  153. package/dist/components/Surface.cjs +98 -0
  154. package/dist/components/Surface.js +40 -0
  155. package/dist/components/Swatch.cjs +1728 -0
  156. package/dist/components/Swatch.js +1319 -0
  157. package/dist/components/Textarea.cjs +269 -0
  158. package/dist/components/Textarea.js +96 -0
  159. package/dist/components/Theme.cjs +36 -0
  160. package/dist/components/Theme.js +7 -0
  161. package/dist/components/Time.cjs +1118 -0
  162. package/dist/components/Time.js +353 -0
  163. package/dist/components/Toast.cjs +644 -0
  164. package/dist/components/Toast.js +218 -0
  165. package/dist/components/Tooltip.cjs +273 -0
  166. package/dist/components/Tooltip.js +9 -0
  167. package/dist/components/TopBar.cjs +352 -0
  168. package/dist/components/TopBar.js +132 -0
  169. package/dist/components/useInfiniteScroll.cjs +57 -0
  170. package/dist/components/useInfiniteScroll.js +8 -0
  171. package/dist/components/useMatchesMedia.cjs +53 -0
  172. package/dist/components/useMatchesMedia.js +9 -0
  173. package/dist/components/useMenuSystem.cjs +358 -0
  174. package/dist/components/useMenuSystem.js +11 -0
  175. package/dist/components/useMounted.cjs +39 -0
  176. package/dist/components/useMounted.js +8 -0
  177. package/dist/fonts.css +21 -0
  178. package/dist/icons-light[FILL]-PPZXOLWS.woff2 +0 -0
  179. package/dist/icons-normal[FILL]-PPZXOLWS.woff2 +0 -0
  180. package/dist/index.css +4401 -0
  181. package/dist/open-sans-55T6A4JE.woff2 +0 -0
  182. package/dist/types.cjs +18 -0
  183. package/dist/types.js +0 -0
  184. package/package.json +66 -0
  185. package/src/brand.css +125 -0
  186. package/src/classNames.ts +144 -0
  187. package/src/components/Breadcrumbs.tsx +116 -0
  188. package/src/components/Button.tsx +210 -0
  189. package/src/components/CalendarRange.tsx +429 -0
  190. package/src/components/Caption.tsx +101 -0
  191. package/src/components/Checkbox.tsx +196 -0
  192. package/src/components/ContentTab.tsx +66 -0
  193. package/src/components/ContentTabs.tsx +103 -0
  194. package/src/components/DMSiLogo.tsx +32 -0
  195. package/src/components/DataGrid.tsx +948 -0
  196. package/src/components/DataGridCell.tsx +384 -0
  197. package/src/components/DataTable.tsx +835 -0
  198. package/src/components/DateInput.tsx +188 -0
  199. package/src/components/DateRangeInput.tsx +179 -0
  200. package/src/components/DebugJson.tsx +24 -0
  201. package/src/components/Display.tsx +60 -0
  202. package/src/components/EditingContext.tsx +40 -0
  203. package/src/components/FilterGroup.tsx +234 -0
  204. package/src/components/FullViewportBox.tsx +11 -0
  205. package/src/components/Grid.tsx +75 -0
  206. package/src/components/GridContainer.tsx +124 -0
  207. package/src/components/Heading.tsx +66 -0
  208. package/src/components/HorizontalDivider.tsx +3 -0
  209. package/src/components/Icon.tsx +36 -0
  210. package/src/components/Input.tsx +511 -0
  211. package/src/components/InputGroup.tsx +51 -0
  212. package/src/components/Label.tsx +40 -0
  213. package/src/components/Link.tsx +106 -0
  214. package/src/components/List.tsx +10 -0
  215. package/src/components/LiveChatComponent.tsx +56 -0
  216. package/src/components/LogoAgilityTopBar.tsx +53 -0
  217. package/src/components/LogoDMSiTopBar.tsx +32 -0
  218. package/src/components/LogoMillworkTopBar.tsx +118 -0
  219. package/src/components/MainBar.tsx +83 -0
  220. package/src/components/Menu.tsx +286 -0
  221. package/src/components/MenuOption.tsx +275 -0
  222. package/src/components/MobileDataGrid.tsx +135 -0
  223. package/src/components/Modal.tsx +271 -0
  224. package/src/components/ModalButtons.tsx +44 -0
  225. package/src/components/ModalContent.tsx +23 -0
  226. package/src/components/ModalHeader.tsx +41 -0
  227. package/src/components/ModalScrim.tsx +35 -0
  228. package/src/components/NavigationTab.tsx +89 -0
  229. package/src/components/NavigationTabs.tsx +63 -0
  230. package/src/components/Notification.tsx +120 -0
  231. package/src/components/OptionPill.tsx +114 -0
  232. package/src/components/Paragraph.tsx +49 -0
  233. package/src/components/Password.tsx +46 -0
  234. package/src/components/ProjectBar.tsx +76 -0
  235. package/src/components/Radio.tsx +140 -0
  236. package/src/components/Search.tsx +129 -0
  237. package/src/components/Select.tsx +104 -0
  238. package/src/components/SideMenu.tsx +21 -0
  239. package/src/components/SideMenuGroup.tsx +81 -0
  240. package/src/components/SideMenuItem.tsx +90 -0
  241. package/src/components/Stack.tsx +179 -0
  242. package/src/components/StatusPill.tsx +51 -0
  243. package/src/components/Stepper.tsx +91 -0
  244. package/src/components/Subheader.tsx +44 -0
  245. package/src/components/Surface.tsx +34 -0
  246. package/src/components/Swatch.tsx +1066 -0
  247. package/src/components/Textarea.tsx +101 -0
  248. package/src/components/Theme.tsx +13 -0
  249. package/src/components/Time.tsx +438 -0
  250. package/src/components/Toast.tsx +244 -0
  251. package/src/components/Tooltip.tsx +137 -0
  252. package/src/components/TopBar.tsx +124 -0
  253. package/src/components/useInfiniteScroll.tsx +40 -0
  254. package/src/components/useMatchesMedia.tsx +28 -0
  255. package/src/components/useMenuSystem.tsx +367 -0
  256. package/src/components/useMounted.tsx +14 -0
  257. package/src/darkmode.css +140 -0
  258. package/src/fonts.css +23 -0
  259. package/src/index.css +509 -0
  260. package/src/index.tsx +2 -0
  261. package/src/types.ts +149 -0
  262. package/src/utils/formatting.tsx +81 -0
  263. package/src/utils.ts +23 -0
@@ -0,0 +1,1118 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __getProtoOf = Object.getPrototypeOf;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
+ var __spreadValues = (a, b) => {
14
+ for (var prop in b || (b = {}))
15
+ if (__hasOwnProp.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ if (__getOwnPropSymbols)
18
+ for (var prop of __getOwnPropSymbols(b)) {
19
+ if (__propIsEnum.call(b, prop))
20
+ __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
+ var __objRest = (source, exclude) => {
26
+ var target = {};
27
+ for (var prop in source)
28
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
+ target[prop] = source[prop];
30
+ if (source != null && __getOwnPropSymbols)
31
+ for (var prop of __getOwnPropSymbols(source)) {
32
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
+ target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
37
+ var __export = (target, all) => {
38
+ for (var name in all)
39
+ __defProp(target, name, { get: all[name], enumerable: true });
40
+ };
41
+ var __copyProps = (to, from, except, desc) => {
42
+ if (from && typeof from === "object" || typeof from === "function") {
43
+ for (let key of __getOwnPropNames(from))
44
+ if (!__hasOwnProp.call(to, key) && key !== except)
45
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
+ }
47
+ return to;
48
+ };
49
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
+ // If the importer is in node compatibility mode or this is not an ESM
51
+ // file that has been converted to a CommonJS file using a Babel-
52
+ // compatible transform (i.e. "__esModule" has not been set), then set
53
+ // "default" to the CommonJS "module.exports" for node compatibility.
54
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
55
+ mod
56
+ ));
57
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
58
+
59
+ // src/components/Time.tsx
60
+ var Time_exports = {};
61
+ __export(Time_exports, {
62
+ Time: () => Time
63
+ });
64
+ module.exports = __toCommonJS(Time_exports);
65
+ var import_react2 = require("react");
66
+
67
+ // src/components/Input.tsx
68
+ var import_react = require("react");
69
+ var import_clsx4 = __toESM(require("clsx"), 1);
70
+
71
+ // src/classNames.ts
72
+ var import_clsx = __toESM(require("clsx"), 1);
73
+ var typography = {
74
+ display1: (0, import_clsx.default)(
75
+ "font-sans font-semibold",
76
+ "text-display-1-mobile desktop:text-display-1-desktop compact:text-display-1-desktop-compact",
77
+ "leading-display-1-mobile desktop:leading-display-1-desktop"
78
+ ),
79
+ display2: (0, import_clsx.default)(
80
+ "font-sans font-bold",
81
+ "text-display-2-mobile desktop:text-display-2-desktop compact:text-display-2-desktop-compact",
82
+ "leading-display-2-mobile desktop:leading-display-2-desktop"
83
+ ),
84
+ heading1: (0, import_clsx.default)(
85
+ "font-sans font-semibold",
86
+ "text-heading-1-mobile desktop:text-heading-1-desktop compact:text-heading-1-desktop-compact",
87
+ "leading-heading-1-mobile desktop:leading-heading-1-desktop"
88
+ ),
89
+ heading2: (0, import_clsx.default)(
90
+ "font-sans font-normal",
91
+ "text-heading-2-mobile desktop:text-heading-2-desktop compact:text-heading-2-desktop-compact",
92
+ "leading-heading-2-mobile desktop:leading-heading-2-desktop"
93
+ ),
94
+ heading3: (0, import_clsx.default)(
95
+ "font-sans font-semibold",
96
+ "text-heading-3-mobile desktop:text-heading-3-desktop compact:text-heading-3-desktop-compact",
97
+ "leading-heading-3-mobile desktop:leading-heading-3-desktop"
98
+ ),
99
+ subheader: (0, import_clsx.default)(
100
+ "font-sans font-semibold",
101
+ "text-subheader-mobile desktop:text-subheader-desktop compact:text-subheader-desktop-compact",
102
+ "leading-subheader-mobile desktop:leading-subheader-desktop"
103
+ ),
104
+ link: (0, import_clsx.default)(
105
+ "font-sans font-normal",
106
+ "text-link-mobile desktop:text-link-desktop compact:text-link-desktop-compact",
107
+ "leading-link-mobile desktop:leading-link-desktop"
108
+ ),
109
+ buttonLabel: (0, import_clsx.default)(
110
+ "font-sans font-semibold",
111
+ "text-label-mobile desktop:text-label-desktop compact:text-label-desktop-compact",
112
+ "leading-label-mobile desktop:leading-label-desktop"
113
+ ),
114
+ label: (0, import_clsx.default)(
115
+ "font-sans font-semibold",
116
+ "text-label-mobile desktop:text-label-desktop compact:text-label-desktop-compact",
117
+ "leading-label-mobile desktop:leading-label-desktop"
118
+ ),
119
+ paragraph: (0, import_clsx.default)(
120
+ "font-sans font-normal",
121
+ "text-paragraph-mobile desktop:text-paragraph-desktop compact:text-paragraph-desktop-compact",
122
+ "leading-paragraph-mobile desktop:leading-paragraph-desktop"
123
+ ),
124
+ caption: (0, import_clsx.default)(
125
+ "font-sans font-normal",
126
+ "text-caption-mobile desktop:text-caption-desktop compact:text-caption-desktop-compact",
127
+ "leading-caption-mobile desktop:leading-caption-desktop"
128
+ )
129
+ };
130
+ var baseTransition = (0, import_clsx.default)(
131
+ "transition-colors duration-100 ease-in-out"
132
+ );
133
+ var componentGap = (0, import_clsx.default)(
134
+ "gap-mobile-component-gap desktop:gap-desktop-component-gap compact:gap-desktop-compact-component-gap"
135
+ );
136
+ var paddingUsingComponentGap = (0, import_clsx.default)(
137
+ "p-mobile-component-gap desktop:p-desktop-component-gap compact:p-desktop-compact-component-gap"
138
+ );
139
+ var paddingYUsingLayoutGroupGap = (0, import_clsx.default)(
140
+ "py-mobile-layout-group-gap desktop:py-desktop-layout-group-gap compact:py-desktop-compact-layout-group-gap"
141
+ );
142
+ var componentPadding = (0, import_clsx.default)(
143
+ "p-mobile-component-padding desktop:p-desktop-component-padding compact:p-desktop-compact-component-padding"
144
+ );
145
+ var componentPaddingBottom = (0, import_clsx.default)(
146
+ "pb-mobile-component-padding desktop:pb-desktop-component-padding compact:pb-desktop-compact-component-padding"
147
+ );
148
+ var componentPaddingY = (0, import_clsx.default)(
149
+ "py-mobile-component-padding desktop:py-desktop-component-padding compact:py-desktop-compact-component-padding"
150
+ );
151
+ var componentPaddingXUsingComponentGap = (0, import_clsx.default)(
152
+ "px-mobile-component-gap desktop:px-desktop-component-gap compact:px-desktop-compact-component-gap"
153
+ );
154
+ var componentPaddingYUsingComponentGap = (0, import_clsx.default)(
155
+ "py-mobile-component-gap desktop:py-desktop-component-gap compact:py-desktop-compact-component-gap"
156
+ );
157
+ var componentPaddingMinusBorder = (0, import_clsx.default)(
158
+ "p-[calc(var(--spacing-mobile-component-padding)_-_1px)] desktop:p-[calc(var(--spacing-desktop-component-padding)_-_1px)] compact:p-[calc(var(--spacing-desktop-compact-component-padding)_-_1px)]"
159
+ );
160
+ var componentPaddingMinus2pxBorder = (0, import_clsx.default)(
161
+ "p-[calc(var(--spacing-mobile-component-padding)_-_2px)] desktop:p-[calc(var(--spacing-desktop-component-padding)_-_2px)] compact:p-[calc(var(--spacing-desktop-compact-component-padding)_-_2px)]"
162
+ );
163
+ var layoutPaddingBottom = (0, import_clsx.default)(
164
+ "pb-mobile-layout-padding desktop:pb-desktop-layout-padding compact:pb-desktop-compact-layout-padding"
165
+ );
166
+ var layoutPaddingY = (0, import_clsx.default)(
167
+ "py-mobile-layout-padding desktop:py-desktop-layout-padding compact:py-desktop-compact-layout-padding"
168
+ );
169
+ var containerPaddingX = (0, import_clsx.default)(
170
+ "px-mobile-container-padding desktop:px-desktop-container-padding compact:px-desktop-compact-container-padding"
171
+ );
172
+ var containerPaddingY = (0, import_clsx.default)(
173
+ "py-mobile-container-padding desktop:py-desktop-container-padding compact:py-desktop-compact-container-padding"
174
+ );
175
+ var layoutGroupGapPaddingY = (0, import_clsx.default)(
176
+ "py-mobile-layout-group-gap desktop:py-desktop-layout-group-gap compact:py-desktop-compact-layout-group-gap"
177
+ );
178
+ var layoutGroupGap = (0, import_clsx.default)(
179
+ "gap-mobile-layout-group-gap desktop:gap-desktop-layout-group-gap compact:gap-desktop-compact-layout-group-gap"
180
+ );
181
+ var layoutGap = (0, import_clsx.default)(
182
+ "gap-mobile-layout-gap desktop:gap-desktop-layout-gap compact:gap-desktop-compact-layout-gap"
183
+ );
184
+ var gapUsingContainerPadding = (0, import_clsx.default)(
185
+ "gap-mobile-container-padding desktop:gap-desktop-container-padding compact:gap-desktop-compact-container-padding"
186
+ );
187
+
188
+ // src/components/Label.tsx
189
+ var import_clsx2 = __toESM(require("clsx"), 1);
190
+ var import_jsx_runtime = require("react/jsx-runtime");
191
+ var Label = (_a) => {
192
+ var _b = _a, {
193
+ as = "span",
194
+ padded,
195
+ className,
196
+ color,
197
+ align
198
+ } = _b, props = __objRest(_b, [
199
+ "as",
200
+ "padded",
201
+ "className",
202
+ "color",
203
+ "align"
204
+ ]);
205
+ const Element = as;
206
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
207
+ Element,
208
+ __spreadProps(__spreadValues({
209
+ className: (0, import_clsx2.default)(
210
+ typography.label,
211
+ align === "left" && "text-left",
212
+ align === "center" && "text-center",
213
+ align === "right" && "text-right",
214
+ className,
215
+ padded && componentPaddingXUsingComponentGap
216
+ )
217
+ }, props), {
218
+ style: __spreadProps(__spreadValues({}, props.style), {
219
+ color: color ? `var(--color-${color})` : void 0
220
+ })
221
+ })
222
+ );
223
+ };
224
+ Label.displayName = "Label";
225
+
226
+ // src/components/Icon.tsx
227
+ var import_clsx3 = __toESM(require("clsx"), 1);
228
+ var import_jsx_runtime2 = require("react/jsx-runtime");
229
+ function Icon(_a) {
230
+ var _b = _a, {
231
+ name,
232
+ size = 24,
233
+ variant = "outline"
234
+ } = _b, props = __objRest(_b, [
235
+ "name",
236
+ "size",
237
+ "variant"
238
+ ]);
239
+ const variantStyle = variant === "filled" ? '"FILL" 1' : '"FILL" 0';
240
+ const weightStyle = size === 16 ? '"wght" 400' : '"wght" 300';
241
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
242
+ "span",
243
+ __spreadProps(__spreadValues({}, props), {
244
+ className: (0, import_clsx3.default)(
245
+ "icon",
246
+ `icon-${size}`,
247
+ // size === 16 ? "font-normal" : "font-light", // size 16 font weight is not working as normal from before
248
+ props.className
249
+ ),
250
+ style: __spreadValues({
251
+ fontVariationSettings: variantStyle + `, ${weightStyle}`
252
+ }, props.style),
253
+ children: name
254
+ })
255
+ );
256
+ }
257
+
258
+ // src/utils/formatting.tsx
259
+ function getDecimalPlaceholder(decimals) {
260
+ if (!decimals || decimals <= 0) {
261
+ return {};
262
+ }
263
+ return {
264
+ placeholder: `0.${"0".repeat(decimals)}`
265
+ };
266
+ }
267
+ function formatDecimalValue(value, decimals) {
268
+ if (!value || value === "") {
269
+ return "";
270
+ }
271
+ const numValue = typeof value === "string" ? parseFloat(value) : value;
272
+ if (isNaN(numValue)) {
273
+ return "";
274
+ }
275
+ if (!decimals || decimals <= 0) {
276
+ return String(Math.round(numValue));
277
+ }
278
+ return numValue.toFixed(decimals);
279
+ }
280
+ function formatCurrencyDisplay(value) {
281
+ if (!value || value === "") {
282
+ return "";
283
+ }
284
+ const parts = value.split(".");
285
+ const integerPart = parts[0];
286
+ const decimalPart = parts[1];
287
+ const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
288
+ return decimalPart !== void 0 ? `${formattedInteger}.${decimalPart}` : formattedInteger;
289
+ }
290
+
291
+ // src/components/Input.tsx
292
+ var import_jsx_runtime3 = require("react/jsx-runtime");
293
+ var InputBase = (_a) => {
294
+ var _b = _a, {
295
+ before,
296
+ after,
297
+ type,
298
+ label,
299
+ error,
300
+ className,
301
+ align = "left",
302
+ caption,
303
+ required,
304
+ selectOnFocus,
305
+ removeRoundness,
306
+ inputContainerRef,
307
+ removeBorder,
308
+ wrapperClassName,
309
+ focus
310
+ } = _b, props = __objRest(_b, [
311
+ "before",
312
+ "after",
313
+ "type",
314
+ "label",
315
+ "error",
316
+ "className",
317
+ "align",
318
+ "caption",
319
+ "required",
320
+ "selectOnFocus",
321
+ "removeRoundness",
322
+ "inputContainerRef",
323
+ "removeBorder",
324
+ "wrapperClassName",
325
+ "focus"
326
+ ]);
327
+ const attributes = {
328
+ "data-error": error && !focus || null,
329
+ "data-focus": focus || null
330
+ };
331
+ const inputRef = (0, import_react.useRef)(null);
332
+ (0, import_react.useEffect)(() => {
333
+ var _a2;
334
+ const input = inputRef.current;
335
+ const focusHandler = () => {
336
+ input == null ? void 0 : input.select();
337
+ };
338
+ if (selectOnFocus) {
339
+ (_a2 = inputRef.current) == null ? void 0 : _a2.addEventListener("focus", focusHandler);
340
+ return () => {
341
+ input == null ? void 0 : input.removeEventListener("focus", focusHandler);
342
+ };
343
+ }
344
+ }, [selectOnFocus]);
345
+ const inputBaseClass = (0, import_clsx4.default)(
346
+ "w-full",
347
+ "flex flex-row items-center",
348
+ "bg-background-action-secondary-normal caret-icon-on-action-secondary-normal",
349
+ componentGap,
350
+ baseTransition,
351
+ "outline-transparent outline-2 -outline-offset-2",
352
+ componentPaddingMinusBorder,
353
+ !removeRoundness && "rounded-base",
354
+ !removeBorder && "border border-border-primary-normal",
355
+ "relative"
356
+ );
357
+ const inputFocusClass = (0, import_clsx4.default)(
358
+ "has-[[data-focus]]:border-transparent has-[[data-focus]]:outline-border-primary-focus focus-within:border-transparent focus-within:outline-border-primary-focus"
359
+ );
360
+ const inputDisabledClass = (0, import_clsx4.default)(
361
+ "has-disabled:bg-background-action-secondary-disabled"
362
+ );
363
+ const inputReadOnlyClass = (0, import_clsx4.default)(
364
+ "has-[input:not(:disabled):read-only]:outline-none has-[input:not(:disabled):read-only]:bg-transparent has-[input:not(:disabled):read-only]:border-transparent has-[input:not(:disabled):read-only]:pl-0"
365
+ );
366
+ const inputInvalidClass = (0, import_clsx4.default)(
367
+ "has-[[data-error]]:border-transparent has-[[data-error]]:not-focus-within:outline-border-primary-error has-[[data-error]]:not-focus-within:outline-1"
368
+ );
369
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
370
+ "label",
371
+ {
372
+ ref: inputContainerRef,
373
+ className: (0, import_clsx4.default)(
374
+ "w-full flex flex-col",
375
+ "block",
376
+ "text-text-primary-normal has-disabled:text-text-primary-disabled",
377
+ componentGap
378
+ ),
379
+ style: __spreadValues({}, props.style),
380
+ children: [
381
+ label && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: (0, import_clsx4.default)("flex items-center", componentGap), children: [
382
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
383
+ Label,
384
+ {
385
+ className: (0, import_clsx4.default)(
386
+ props.disabled || props.readOnly ? "cursor-default" : "cursor-pointer"
387
+ ),
388
+ children: label
389
+ }
390
+ ),
391
+ required && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
392
+ "span",
393
+ {
394
+ className: (0, import_clsx4.default)(typography.label, "text-text-critical-normal"),
395
+ children: "*"
396
+ }
397
+ )
398
+ ] }),
399
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
400
+ "div",
401
+ {
402
+ className: (0, import_clsx4.default)(
403
+ inputBaseClass,
404
+ !props.disabled && inputInvalidClass,
405
+ inputFocusClass,
406
+ inputDisabledClass,
407
+ inputReadOnlyClass,
408
+ wrapperClassName
409
+ ),
410
+ children: [
411
+ before,
412
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
413
+ "input",
414
+ __spreadProps(__spreadValues(__spreadValues({
415
+ ref: (el) => {
416
+ inputRef.current = el;
417
+ },
418
+ type,
419
+ required
420
+ }, props), attributes), {
421
+ id: props.id,
422
+ className: (0, import_clsx4.default)(
423
+ "flex-1 outline-none w-full max-w-full min-h-6 min-w-0",
424
+ "[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none",
425
+ "placeholder:text-text-secondary-normal disabled:text-text-secondary-disabled",
426
+ align === "right" && "text-right",
427
+ align === "center" && "text-center",
428
+ componentPaddingXUsingComponentGap,
429
+ typography.paragraph,
430
+ className,
431
+ props.readOnly && !props.disabled && "!px-0"
432
+ )
433
+ })
434
+ ),
435
+ after
436
+ ]
437
+ }
438
+ ),
439
+ caption
440
+ ]
441
+ }
442
+ );
443
+ };
444
+ var Input = (_a) => {
445
+ var _b = _a, {
446
+ variant = "default",
447
+ decimals,
448
+ uom,
449
+ removeSearchIcon,
450
+ value: propValue,
451
+ onChange,
452
+ onBlur,
453
+ onClear
454
+ } = _b, props = __objRest(_b, [
455
+ "variant",
456
+ "decimals",
457
+ "uom",
458
+ "removeSearchIcon",
459
+ "value",
460
+ "onChange",
461
+ "onBlur",
462
+ "onClear"
463
+ ]);
464
+ const [internalValue, setInternalValue] = (0, import_react.useState)("");
465
+ const [displayValue, setDisplayValue] = (0, import_react.useState)("");
466
+ (0, import_react.useEffect)(() => {
467
+ var _a2;
468
+ const stringValue = (_a2 = propValue == null ? void 0 : propValue.toString()) != null ? _a2 : "";
469
+ if (variant === "currency") {
470
+ if (propValue === void 0 || propValue === "" || typeof propValue === "number" && isNaN(propValue)) {
471
+ setInternalValue("");
472
+ setDisplayValue("");
473
+ } else {
474
+ const numValue = typeof propValue === "string" ? parseFloat(propValue) : propValue;
475
+ if (!isNaN(numValue)) {
476
+ const formatted = numValue.toFixed(decimals != null ? decimals : 2);
477
+ setInternalValue(formatted);
478
+ setDisplayValue(formatCurrencyDisplay(formatted));
479
+ }
480
+ }
481
+ } else {
482
+ setInternalValue(stringValue);
483
+ setDisplayValue(stringValue);
484
+ }
485
+ }, [propValue, decimals, variant]);
486
+ const getInputProps = () => {
487
+ var _a2;
488
+ const baseProps = __spreadProps(__spreadValues(__spreadValues({}, props), getDecimalPlaceholder(decimals)), {
489
+ value: propValue
490
+ });
491
+ switch (variant) {
492
+ case "search":
493
+ return __spreadProps(__spreadValues({}, baseProps), {
494
+ placeholder: (_a2 = props.placeholder) != null ? _a2 : "Search",
495
+ className: "!mr-6",
496
+ value: displayValue
497
+ });
498
+ case "finder":
499
+ return baseProps;
500
+ case "currency":
501
+ return __spreadProps(__spreadValues({}, baseProps), {
502
+ align: "right",
503
+ type: "text",
504
+ value: displayValue
505
+ });
506
+ case "percentage":
507
+ case "uom":
508
+ return __spreadProps(__spreadValues({}, baseProps), {
509
+ type: "number",
510
+ align: "right"
511
+ });
512
+ default:
513
+ return baseProps;
514
+ }
515
+ };
516
+ const getBeforeElement = () => {
517
+ if (props.before) return props.before;
518
+ switch (variant) {
519
+ case "search":
520
+ return !removeSearchIcon ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-icon-primary-normal contents", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Icon, { name: "search" }) }) : null;
521
+ case "currency":
522
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-icon-primary-normal contents", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Icon, { name: "attach_money" }) });
523
+ default:
524
+ return null;
525
+ }
526
+ };
527
+ const getAfterElement = () => {
528
+ if (props.after) return props.after;
529
+ switch (variant) {
530
+ case "search": {
531
+ const hasValue = displayValue.length > 0;
532
+ return hasValue && !props.readOnly ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
533
+ Icon,
534
+ {
535
+ name: "close",
536
+ onClick: handleSearchReset,
537
+ className: "cursor-pointer absolute right-2 bottom-2/4 translate-y-2/4"
538
+ }
539
+ ) : null;
540
+ }
541
+ case "finder":
542
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Icon, { name: "search" });
543
+ case "uom":
544
+ return uom ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-text-secondary-normal uppercase", children: uom.slice(0, 4) }) : null;
545
+ case "percentage":
546
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-icon-primary-normal contents", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Icon, { name: "percent" }) });
547
+ default:
548
+ return null;
549
+ }
550
+ };
551
+ const handleSearchReset = () => {
552
+ setInternalValue("");
553
+ setDisplayValue("");
554
+ if (onChange) {
555
+ const syntheticEvent = {
556
+ target: { value: "" }
557
+ };
558
+ if (typeof onChange === "function") {
559
+ onChange(syntheticEvent);
560
+ }
561
+ }
562
+ onClear == null ? void 0 : onClear();
563
+ };
564
+ const handleChange = (e) => {
565
+ const rawValue = e.target.value;
566
+ if (variant === "search") {
567
+ setInternalValue(rawValue);
568
+ setDisplayValue(rawValue);
569
+ if (typeof onChange === "function") {
570
+ onChange(e);
571
+ }
572
+ return;
573
+ }
574
+ if (variant === "currency") {
575
+ const raw = rawValue.replace(/,/g, "");
576
+ if (raw === "") {
577
+ setInternalValue("");
578
+ setDisplayValue("");
579
+ if (onChange) {
580
+ const syntheticEvent = __spreadProps(__spreadValues({}, e), {
581
+ target: __spreadProps(__spreadValues({}, e.target), { value: "" })
582
+ });
583
+ onChange(syntheticEvent);
584
+ }
585
+ return;
586
+ }
587
+ const regex = /^\d*\.?\d*$/;
588
+ if (!regex.test(raw)) return;
589
+ const parts = raw.split(".");
590
+ const currentDecimals = decimals != null ? decimals : 2;
591
+ if (parts.length === 2 && parts[1].length > currentDecimals) return;
592
+ setInternalValue(raw);
593
+ setDisplayValue(formatCurrencyDisplay(raw));
594
+ const asNumber = Number(raw);
595
+ if (!isNaN(asNumber) && onChange) {
596
+ const syntheticEvent = __spreadProps(__spreadValues({}, e), {
597
+ target: __spreadProps(__spreadValues({}, e.target), { value: asNumber.toString() })
598
+ });
599
+ onChange(syntheticEvent);
600
+ }
601
+ return;
602
+ }
603
+ setInternalValue(rawValue);
604
+ setDisplayValue(rawValue);
605
+ if (typeof onChange === "function") {
606
+ onChange(e);
607
+ }
608
+ };
609
+ const handleBlur = (e) => {
610
+ if (variant === "currency") {
611
+ const formatted = formatDecimalValue(internalValue, decimals != null ? decimals : 2);
612
+ setInternalValue(formatted);
613
+ setDisplayValue(formatCurrencyDisplay(formatted));
614
+ const asNumber = Number(formatted);
615
+ if (!isNaN(asNumber) && onChange) {
616
+ const syntheticEvent = __spreadProps(__spreadValues({}, e), {
617
+ target: __spreadProps(__spreadValues({}, e.target), { value: asNumber.toString() })
618
+ });
619
+ onChange(syntheticEvent);
620
+ }
621
+ } else if (variant === "uom" || variant === "percentage") {
622
+ const formattedValue = formatDecimalValue(e.target.value, decimals);
623
+ e.target.value = formattedValue;
624
+ }
625
+ onBlur == null ? void 0 : onBlur(e);
626
+ };
627
+ const inputProps = getInputProps();
628
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
629
+ InputBase,
630
+ __spreadProps(__spreadValues({}, inputProps), {
631
+ before: getBeforeElement(),
632
+ after: getAfterElement(),
633
+ onChange: handleChange,
634
+ onBlur: handleBlur
635
+ })
636
+ );
637
+ };
638
+ Input.displayName = "Input";
639
+ var Finder = (props) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Input, __spreadProps(__spreadValues({}, props), { variant: "finder" }));
640
+ var UOM = (props) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Input, __spreadProps(__spreadValues({}, props), { variant: "uom" }));
641
+ var Currency = (props) => {
642
+ var _a;
643
+ const handleCurrencyChange = (e) => {
644
+ var _a2;
645
+ (_a2 = props.onChange) == null ? void 0 : _a2.call(props, e);
646
+ };
647
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
648
+ Input,
649
+ __spreadProps(__spreadValues({}, props), {
650
+ variant: "currency",
651
+ decimals: (_a = props.decimals) != null ? _a : 2,
652
+ onChange: handleCurrencyChange
653
+ })
654
+ );
655
+ };
656
+ var Percentage = (props) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Input, __spreadProps(__spreadValues({}, props), { variant: "percentage" }));
657
+ Finder.displayName = "Finder";
658
+ UOM.displayName = "UOM";
659
+ Currency.displayName = "Currency";
660
+ Percentage.displayName = "Percentage";
661
+
662
+ // src/components/Time.tsx
663
+ var import_react_dom = require("react-dom");
664
+ var import_clsx6 = __toESM(require("clsx"), 1);
665
+
666
+ // src/utils.ts
667
+ function findDocumentRoot(element) {
668
+ if (typeof window === "undefined" || typeof document === "undefined") {
669
+ throw new Error(
670
+ "findDocumentRoot can only be used in a browser environment."
671
+ );
672
+ }
673
+ if (!element || !(element instanceof Node)) {
674
+ return window.document.body;
675
+ }
676
+ var currentElement = element;
677
+ while (currentElement && currentElement.parentNode) {
678
+ if (currentElement.parentNode === document) {
679
+ return document.body;
680
+ } else if (currentElement.parentNode instanceof DocumentFragment) {
681
+ return currentElement.parentNode;
682
+ } else {
683
+ currentElement = currentElement.parentNode;
684
+ }
685
+ }
686
+ return window.document.body;
687
+ }
688
+
689
+ // src/components/Stack.tsx
690
+ var import_clsx5 = __toESM(require("clsx"), 1);
691
+ var import_jsx_runtime4 = require("react/jsx-runtime");
692
+ var useFlexClassNames = ({ items, justify, grow }) => (0, import_clsx5.default)(
693
+ "flex",
694
+ items === "start" && "items-start",
695
+ grow && "grow",
696
+ items === "start" && "items-start",
697
+ items === "center" && "items-center",
698
+ items === "end" && "items-end",
699
+ items === "start-center" && "items-start desktop:items-center",
700
+ justify === "start" && "justify-start",
701
+ justify === "center" && "justify-center",
702
+ justify === "end" && "justify-end",
703
+ justify === "end" && "justify-end",
704
+ justify === "between" && "justify-between",
705
+ justify === "around" && "justify-around"
706
+ );
707
+ var Stack = ({
708
+ children,
709
+ items,
710
+ justify,
711
+ grow,
712
+ padding,
713
+ paddingX,
714
+ horizontal,
715
+ horizontalMobile,
716
+ elevation = 0,
717
+ rounded,
718
+ centered,
719
+ width,
720
+ maxWidth,
721
+ minWidth,
722
+ height,
723
+ maxHeight,
724
+ borderColor,
725
+ backgroundColor,
726
+ sizing = "none",
727
+ overflowY = "inherit",
728
+ overflowX = "inherit",
729
+ flexShrink,
730
+ flexGrow,
731
+ position,
732
+ top,
733
+ left
734
+ }) => {
735
+ const flexClassNames = useFlexClassNames({ items, justify, grow });
736
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
737
+ "div",
738
+ {
739
+ style: {
740
+ height: height === "full" ? "100%" : height !== void 0 ? `${height}px` : void 0,
741
+ maxHeight: maxHeight !== void 0 ? `${maxHeight}px` : void 0,
742
+ maxWidth: maxWidth !== void 0 ? `${maxWidth}px` : void 0,
743
+ width: width !== void 0 && typeof width === "number" ? `${width}px` : void 0,
744
+ minWidth: minWidth !== void 0 ? `${minWidth}px` : void 0,
745
+ border: borderColor ? `1px solid var(--color-${borderColor})` : void 0,
746
+ backgroundColor: backgroundColor ? `var(--color-${backgroundColor})` : void 0,
747
+ flexGrow: flexGrow !== void 0 ? flexGrow : void 0,
748
+ flexShrink: flexShrink !== void 0 ? flexShrink : void 0,
749
+ position: position !== void 0 ? position : void 0,
750
+ top: top !== void 0 ? `${top}px` : void 0,
751
+ left: left !== void 0 ? `${left}px` : void 0
752
+ },
753
+ className: (0, import_clsx5.default)(
754
+ "scrollbar-thin",
755
+ width !== "fit" && "w-full",
756
+ width === "full" && "w-full",
757
+ centered && "mx-auto",
758
+ overflowY == "auto" && "overflow-y-auto",
759
+ overflowY == "hidden" && "overflow-y-hidden",
760
+ overflowY == "scroll" && "overflow-y-scroll",
761
+ overflowX == "auto" && "overflow-x-auto",
762
+ overflowX == "hidden" && "overflow-x-hidden",
763
+ overflowX == "scroll" && "overflow-x-scroll",
764
+ padding && sizing === "container" && "p-mobile-container-padding desktop:p-desktop-container-padding compact:p-desktop-compact-container-padding",
765
+ padding && sizing === "layout" && "p-mobile-layout-padding desktop:p-desktop-layout-padding compact:p-desktop-compact-layout-padding",
766
+ padding && sizing === "layout-group" && "p-mobile-layout-group-padding desktop:p-desktop-layout-group-padding compact:p-desktop-compact-layout-group-padding",
767
+ padding && sizing === "component" && "p-mobile-component-padding desktop:p-desktop-component-padding compact:p-desktop-compact-component-padding",
768
+ paddingX && sizing === "container" && "px-mobile-container-padding desktop:px-desktop-container-padding compact:px-desktop-compact-container-padding",
769
+ paddingX && sizing === "layout" && "px-mobile-layout-padding desktop:px-desktop-layout-padding compact:px-desktop-compact-layout-padding",
770
+ paddingX && sizing === "layout-group" && "px-mobile-layout-group-padding desktop:px-desktop-layout-group-padding compact:px-desktop-compact-layout-group-padding",
771
+ paddingX && sizing === "component" && "px-mobile-component-padding desktop:px-desktop-component-padding compact:px-desktop-compact-component-padding",
772
+ horizontal ? "desktop:flex-row" : "desktop:flex-col",
773
+ horizontalMobile ? "flex-row" : "flex-col",
774
+ flexClassNames,
775
+ sizing === "layout-group" && "gap-mobile-layout-group-gap desktop:gap-desktop-layout-group-gap compact:gap-compact-layout-group-gap",
776
+ sizing === "layout" && "gap-mobile-layout-gap desktop:gap-desktop-layout-gap compact:gap-compact-layout-gap",
777
+ sizing === "container" && "gap-mobile-container-gap desktop:gap-desktop-container-gap compact:gap-compact-container-gap",
778
+ sizing === "component" && "gap-mobile-component-gap desktop:gap-desktop-component-gap compact:gap-compact-component-gap",
779
+ elevation === 0 && "shadow-none",
780
+ elevation === 2 && "shadow-2",
781
+ elevation === 4 && "shadow-4",
782
+ elevation === 16 && "shadow-16",
783
+ rounded && "rounded"
784
+ ),
785
+ children
786
+ }
787
+ );
788
+ };
789
+
790
+ // src/components/Time.tsx
791
+ var import_jsx_runtime5 = require("react/jsx-runtime");
792
+ var timePickerScrollableStyle = "overflow-auto max-h-full py-4 no-scrollbar";
793
+ var Time = (_a) => {
794
+ var _b = _a, { onChange, format = "12h" } = _b, props = __objRest(_b, ["onChange", "format"]);
795
+ const [showTimePicker, setShowTimePicker] = (0, import_react2.useState)(false);
796
+ const [hasInteracted, setHasInteracted] = (0, import_react2.useState)(false);
797
+ const inputRef = (0, import_react2.useRef)(null);
798
+ const inputContainerRef = (0, import_react2.useRef)(null);
799
+ const timeRef = (0, import_react2.useRef)(null);
800
+ const [timePosition, setTimePosition] = (0, import_react2.useState)({
801
+ top: 0,
802
+ left: 0,
803
+ width: 0
804
+ });
805
+ const [hour, setHour] = (0, import_react2.useState)(null);
806
+ const [minute, setMinute] = (0, import_react2.useState)(null);
807
+ const [meridiem, setMeridiem] = (0, import_react2.useState)(null);
808
+ const [inputValue, setInputValue] = (0, import_react2.useState)("");
809
+ const is12HourFormat = format === "12h";
810
+ const formattedTime = hour && minute ? is12HourFormat ? meridiem ? `${hour}:${minute} ${meridiem}` : `${hour}:${minute}` : `${hour}:${minute}` : "";
811
+ const updatePosition = () => {
812
+ if (inputContainerRef.current) {
813
+ const rect = inputContainerRef.current.getBoundingClientRect();
814
+ setTimePosition({
815
+ top: rect.bottom + window.scrollY + 6,
816
+ left: rect.left + window.scrollX,
817
+ width: rect.width
818
+ });
819
+ }
820
+ };
821
+ (0, import_react2.useEffect)(() => {
822
+ if (showTimePicker) {
823
+ updatePosition();
824
+ }
825
+ }, [showTimePicker, is12HourFormat]);
826
+ (0, import_react2.useEffect)(() => {
827
+ const handleClickOutside = (event) => {
828
+ if (inputRef.current && timeRef.current && !inputRef.current.contains(event.target) && !timeRef.current.contains(event.target)) {
829
+ setShowTimePicker(false);
830
+ }
831
+ };
832
+ if (showTimePicker) {
833
+ document.addEventListener("mousedown", handleClickOutside);
834
+ }
835
+ return () => {
836
+ document.removeEventListener("mousedown", handleClickOutside);
837
+ };
838
+ }, [showTimePicker, is12HourFormat]);
839
+ (0, import_react2.useEffect)(() => {
840
+ if (formattedTime && hasInteracted) {
841
+ setInputValue(formattedTime);
842
+ onChange == null ? void 0 : onChange({
843
+ target: { value: formattedTime }
844
+ });
845
+ }
846
+ }, [formattedTime, hasInteracted, onChange]);
847
+ const handleFocus = () => {
848
+ if (!props.disabled && !props.readOnly) {
849
+ setHasInteracted(true);
850
+ setShowTimePicker(true);
851
+ if (is12HourFormat && meridiem === null) {
852
+ setMeridiem("AM");
853
+ }
854
+ }
855
+ };
856
+ const handleSelect = (type, value) => {
857
+ if (type === "hour") setHour(value);
858
+ if (type === "minute") setMinute(value);
859
+ if (type === "meridiem") setMeridiem(value);
860
+ setTimeout(() => {
861
+ const allSet = (type === "hour" ? value : hour) && (type === "minute" ? value : minute) && (is12HourFormat ? type === "meridiem" ? value : meridiem : true);
862
+ if (allSet) {
863
+ setShowTimePicker(false);
864
+ }
865
+ }, 100);
866
+ };
867
+ (0, import_react2.useEffect)(() => {
868
+ if (!showTimePicker && formattedTime) {
869
+ setInputValue(formattedTime);
870
+ }
871
+ }, [showTimePicker, formattedTime]);
872
+ const handleInputChange = (e) => {
873
+ const value = e.target.value.toUpperCase().replace(/[^0-9:APM ]/gi, "").trim();
874
+ setInputValue(value);
875
+ if (value === "") {
876
+ setHour(null);
877
+ setMinute(null);
878
+ setMeridiem(null);
879
+ setShowTimePicker(true);
880
+ }
881
+ const match = value.match(
882
+ is12HourFormat ? /^(\d{1,2}):(\d{2})(?:\s*(AM|PM))?$/ : /^(\d{1,2}):(\d{2})$/
883
+ );
884
+ if (match) {
885
+ const [, hRaw, mRaw, mer] = match;
886
+ const h = parseInt(hRaw, 10);
887
+ const m = parseInt(mRaw, 10);
888
+ if (h >= 0 && h <= 23 && m >= 0 && m <= 59) {
889
+ let hStr;
890
+ const mStr = m.toString().padStart(2, "0");
891
+ let meridiemValue = mer;
892
+ if (is12HourFormat) {
893
+ hStr = (h % 12 || 12).toString().padStart(2, "0");
894
+ if (h > 12) {
895
+ meridiemValue = "PM";
896
+ }
897
+ setHour(hStr);
898
+ setMinute(mStr);
899
+ if (meridiemValue) {
900
+ setMeridiem(meridiemValue);
901
+ }
902
+ } else {
903
+ hStr = h.toString().padStart(2, "0");
904
+ setHour(hStr);
905
+ setMinute(mStr);
906
+ }
907
+ }
908
+ }
909
+ onChange == null ? void 0 : onChange(e);
910
+ };
911
+ const selectedRefs = {
912
+ hour: (0, import_react2.useRef)(null),
913
+ minute: (0, import_react2.useRef)(null),
914
+ meridiem: (0, import_react2.useRef)(null)
915
+ };
916
+ const handleKeyDown = (e) => {
917
+ if (e.key === "Enter") {
918
+ setShowTimePicker(false);
919
+ return;
920
+ }
921
+ if (e.key !== "ArrowUp" && e.key !== "ArrowDown") return;
922
+ e.preventDefault();
923
+ let h;
924
+ let m;
925
+ let mer;
926
+ if (hour === null || minute === null || is12HourFormat && meridiem === null) {
927
+ const now = /* @__PURE__ */ new Date();
928
+ h = now.getHours();
929
+ m = Math.round(now.getMinutes() / 5) * 5;
930
+ if (m === 60) {
931
+ m = 0;
932
+ h += 1;
933
+ }
934
+ if (is12HourFormat) {
935
+ mer = h >= 12 ? "PM" : "AM";
936
+ h = h % 12 || 12;
937
+ } else {
938
+ mer = "AM";
939
+ }
940
+ } else {
941
+ h = parseInt(hour, 10);
942
+ m = parseInt(minute, 10);
943
+ mer = meridiem || "AM";
944
+ }
945
+ const step = 5;
946
+ const remainder = m % step;
947
+ m += e.key === "ArrowDown" ? remainder === 0 ? step : step - remainder : -(remainder === 0 ? step : remainder);
948
+ if (m >= 60) {
949
+ m -= 60;
950
+ h += 1;
951
+ } else if (m < 0) {
952
+ m += 60;
953
+ h -= 1;
954
+ }
955
+ if (is12HourFormat) {
956
+ if (h > 12) {
957
+ h = 1;
958
+ mer = mer === "AM" ? "PM" : "AM";
959
+ } else if (h <= 0) {
960
+ h = 12;
961
+ mer = mer === "AM" ? "PM" : "AM";
962
+ }
963
+ } else {
964
+ h = (h + 24) % 24;
965
+ }
966
+ setHour(h.toString().padStart(2, "0"));
967
+ setMinute(m.toString().padStart(2, "0"));
968
+ if (is12HourFormat) setMeridiem(mer);
969
+ };
970
+ (0, import_react2.useEffect)(() => {
971
+ if (showTimePicker) {
972
+ setTimeout(() => {
973
+ var _a2, _b2, _c;
974
+ (_a2 = selectedRefs.hour.current) == null ? void 0 : _a2.scrollIntoView({
975
+ block: "nearest",
976
+ behavior: "instant"
977
+ });
978
+ (_b2 = selectedRefs.minute.current) == null ? void 0 : _b2.scrollIntoView({
979
+ block: "nearest",
980
+ behavior: "instant"
981
+ });
982
+ if (is12HourFormat) {
983
+ (_c = selectedRefs.meridiem.current) == null ? void 0 : _c.scrollIntoView({
984
+ block: "nearest",
985
+ behavior: "instant"
986
+ });
987
+ }
988
+ }, 0);
989
+ }
990
+ }, [showTimePicker, is12HourFormat, selectedRefs.hour, selectedRefs.minute, selectedRefs.meridiem]);
991
+ const renderOptions = (items, type) => items.map((val) => {
992
+ const isSelected = type === "hour" && val === hour || type === "minute" && val === minute || type === "meridiem" && val === meridiem;
993
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
994
+ TimeCell,
995
+ {
996
+ selected: isSelected,
997
+ ref: isSelected ? (el) => {
998
+ selectedRefs[type].current = el;
999
+ } : null,
1000
+ onClick: () => handleSelect(type, val),
1001
+ className: (0, import_clsx6.default)("!size-10 cursor-pointer", typography.caption),
1002
+ children: val
1003
+ },
1004
+ val
1005
+ );
1006
+ });
1007
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative max-w-38", children: [
1008
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1009
+ InputBase,
1010
+ __spreadProps(__spreadValues({}, props), {
1011
+ ref: inputRef,
1012
+ inputContainerRef,
1013
+ value: inputValue,
1014
+ placeholder: is12HourFormat ? "hh:mm am" : "hh:mm",
1015
+ after: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-icon-primary-normal contents", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Icon, { name: "schedule" }) }),
1016
+ onFocus: handleFocus,
1017
+ caption: props.caption,
1018
+ onChange: handleInputChange,
1019
+ onKeyDown: handleKeyDown,
1020
+ type: "text"
1021
+ })
1022
+ ),
1023
+ showTimePicker && (0, import_react_dom.createPortal)(
1024
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1025
+ Stack,
1026
+ {
1027
+ elevation: 4,
1028
+ height: 240,
1029
+ position: "absolute",
1030
+ backgroundColor: "background-grouped-primary-normal",
1031
+ overflowX: "hidden",
1032
+ overflowY: "hidden",
1033
+ zIndex: 50,
1034
+ top: timePosition.top,
1035
+ left: timePosition.left,
1036
+ minWidth: timePosition.width,
1037
+ maxWidth: 0,
1038
+ rounded: true,
1039
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { ref: timeRef, className: "px-4 flex h-60", children: [
1040
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: (0, import_clsx6.default)(timePickerScrollableStyle), children: renderOptions(
1041
+ Array.from(
1042
+ { length: is12HourFormat ? 12 : 24 },
1043
+ (_, i) => (i + 1).toString().padStart(2, "0")
1044
+ ),
1045
+ "hour"
1046
+ ) }),
1047
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: (0, import_clsx6.default)(timePickerScrollableStyle), children: renderOptions(
1048
+ Array.from(
1049
+ { length: 12 },
1050
+ (_, i) => (i * 5).toString().padStart(2, "0")
1051
+ ),
1052
+ "minute"
1053
+ ) }),
1054
+ is12HourFormat && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "py-4", children: renderOptions(["AM", "PM"], "meridiem") })
1055
+ ] })
1056
+ }
1057
+ ),
1058
+ findDocumentRoot(timeRef.current)
1059
+ )
1060
+ ] });
1061
+ };
1062
+ function TimeCell(_a) {
1063
+ var _b = _a, {
1064
+ selected = false,
1065
+ start = false,
1066
+ intermediate = false,
1067
+ end = false,
1068
+ today = false,
1069
+ disabled = false,
1070
+ onClick,
1071
+ onHover,
1072
+ onKeyDown,
1073
+ children,
1074
+ className,
1075
+ ref
1076
+ } = _b, props = __objRest(_b, [
1077
+ "selected",
1078
+ "start",
1079
+ "intermediate",
1080
+ "end",
1081
+ "today",
1082
+ "disabled",
1083
+ "onClick",
1084
+ "onHover",
1085
+ "onKeyDown",
1086
+ "children",
1087
+ "className",
1088
+ "ref"
1089
+ ]);
1090
+ const isDefault = !selected && !start && !intermediate && !end && !today;
1091
+ const isToday = today && !selected && !start && !intermediate && !end;
1092
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1093
+ "button",
1094
+ __spreadProps(__spreadValues({
1095
+ onPointerOver: onHover,
1096
+ onClick,
1097
+ onKeyDown,
1098
+ disabled,
1099
+ ref,
1100
+ className: (0, import_clsx6.default)(
1101
+ "w-full h-full aspect-square flex items-center justify-center ",
1102
+ isDefault && "text-neutral-500 hover:bg-action-100 hover:text-action-500 active:text-action-300 disabled:text-neutral-300 disabled:pointer-events-none rounded",
1103
+ isToday && "rounded-full border border-neutral-300 hover:bg-action-100 hover:text-action-500 active:text-action-300 disabled:text-neutral-300 ",
1104
+ selected && "text-white bg-action-400 hover:bg-action-500 active:bg-action-300 disabled:text-neutral-400 disabled:bg-neutral-200 rounded",
1105
+ start && "bg-action-400 hover:bg-action-500 active:bg-action-300 disabled:text-neutral-400 disabled:bg-neutral-200 rounded-l",
1106
+ end && "bg-action-400 hover:bg-action-500 active:bg-action-300 disabled:text-neutral-400 disabled:bg-neutral-200 rounded-r",
1107
+ intermediate && "bg-action-100 border-y border-action-400",
1108
+ className
1109
+ )
1110
+ }, props), {
1111
+ children
1112
+ })
1113
+ );
1114
+ }
1115
+ // Annotate the CommonJS export names for ESM import in node:
1116
+ 0 && (module.exports = {
1117
+ Time
1118
+ });