@giddaa-housing/ui 1.0.0 → 1.2.0

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 (331) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/css/giddaa.css +12 -2
  3. package/dist/accordion.d.ts +9 -10
  4. package/dist/accordion.js +41 -87
  5. package/dist/activity-timeline.d.ts +12 -16
  6. package/dist/activity-timeline.js +83 -198
  7. package/dist/alert.d.ts +8 -9
  8. package/dist/alert.js +53 -111
  9. package/dist/auth-layout.d.ts +4 -4
  10. package/dist/auth-layout.js +143 -294
  11. package/dist/avatar.d.ts +6 -6
  12. package/dist/avatar.js +49 -19
  13. package/dist/badge.d.ts +12 -14
  14. package/dist/badge.js +71 -11
  15. package/dist/bar-chart.d.ts +65 -67
  16. package/dist/bar-chart.js +232 -207
  17. package/dist/breadcrumb.d.ts +5 -5
  18. package/dist/breadcrumb.js +56 -118
  19. package/dist/bullet-chart.d.ts +41 -37
  20. package/dist/bullet-chart.js +125 -148
  21. package/dist/button-BZIeyUw6.d.ts +17 -0
  22. package/dist/button-group.d.ts +13 -16
  23. package/dist/button-group.js +39 -88
  24. package/dist/button.d.ts +2 -19
  25. package/dist/button.js +94 -13
  26. package/dist/calendar.d.ts +6 -6
  27. package/dist/calendar.js +138 -17
  28. package/dist/card.d.ts +14 -16
  29. package/dist/card.js +59 -145
  30. package/dist/carousel.d.ts +34 -35
  31. package/dist/carousel.js +335 -20
  32. package/dist/chart.d.ts +90 -63
  33. package/dist/chart.js +573 -28
  34. package/dist/checkbox.d.ts +10 -12
  35. package/dist/checkbox.js +82 -47
  36. package/dist/cn-BI_4DMBf.js +23 -0
  37. package/dist/collapsible.d.ts +7 -8
  38. package/dist/collapsible.js +22 -47
  39. package/dist/combobox.d.ts +10 -10
  40. package/dist/combobox.js +236 -44
  41. package/dist/cta.d.ts +12 -14
  42. package/dist/cta.js +175 -341
  43. package/dist/currency-selector.d.ts +31 -32
  44. package/dist/currency-selector.js +106 -184
  45. package/dist/data-table.d.ts +168 -0
  46. package/dist/data-table.js +676 -0
  47. package/dist/date-picker.d.ts +22 -23
  48. package/dist/date-picker.js +119 -192
  49. package/dist/details-card.d.ts +7 -7
  50. package/dist/details-card.js +104 -253
  51. package/dist/dialog.d.ts +13 -14
  52. package/dist/dialog.js +116 -209
  53. package/dist/dropdown-menu.d.ts +13 -13
  54. package/dist/dropdown-menu.js +180 -37
  55. package/dist/dropzone.d.ts +55 -55
  56. package/dist/dropzone.js +327 -439
  57. package/dist/editorial-card.d.ts +23 -25
  58. package/dist/editorial-card.js +129 -296
  59. package/dist/empty-state.d.ts +8 -9
  60. package/dist/empty-state.js +48 -105
  61. package/dist/field.d.ts +23 -25
  62. package/dist/field.js +110 -221
  63. package/dist/filter.d.ts +118 -0
  64. package/dist/filter.js +775 -0
  65. package/dist/footer.d.ts +8 -15
  66. package/dist/footer.js +197 -400
  67. package/dist/funnel-chart.d.ts +49 -48
  68. package/dist/funnel-chart.js +170 -189
  69. package/dist/gallery-indicator.d.ts +11 -12
  70. package/dist/gallery-indicator.js +75 -12
  71. package/dist/heatmap-chart.d.ts +47 -50
  72. package/dist/heatmap-chart.js +186 -237
  73. package/dist/infotip.d.ts +8 -9
  74. package/dist/infotip.js +33 -59
  75. package/dist/input-CfoEJ8A6.d.ts +12 -0
  76. package/dist/input-group.d.ts +16 -20
  77. package/dist/input-group.js +99 -23
  78. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  79. package/dist/input-size-context.d.ts +2 -11
  80. package/dist/input-size-context.js +17 -9
  81. package/dist/input.d.ts +2 -13
  82. package/dist/input.js +27 -11
  83. package/dist/item.d.ts +7 -8
  84. package/dist/item.js +22 -59
  85. package/dist/kpi-card.d.ts +18 -20
  86. package/dist/kpi-card.js +84 -192
  87. package/dist/label.d.ts +6 -6
  88. package/dist/label.js +40 -8
  89. package/dist/line-chart.d.ts +200 -129
  90. package/dist/line-chart.js +330 -105
  91. package/dist/list-item.d.ts +22 -0
  92. package/dist/list-item.js +84 -0
  93. package/dist/logo.d.ts +4 -4
  94. package/dist/logo.js +92 -9
  95. package/dist/map-indicator.d.ts +7 -7
  96. package/dist/map-indicator.js +80 -106
  97. package/dist/match.d.ts +10 -11
  98. package/dist/match.js +62 -107
  99. package/dist/media-gallery-hero.d.ts +40 -42
  100. package/dist/media-gallery-hero.js +182 -343
  101. package/dist/media-player.d.ts +17 -17
  102. package/dist/media-player.js +873 -1348
  103. package/dist/multi-step-form.d.ts +56 -0
  104. package/dist/multi-step-form.js +342 -0
  105. package/dist/number-input.d.ts +34 -34
  106. package/dist/number-input.js +64 -117
  107. package/dist/page-header.d.ts +10 -11
  108. package/dist/page-header.js +34 -79
  109. package/dist/pagination.d.ts +17 -21
  110. package/dist/pagination.js +132 -207
  111. package/dist/password-input.d.ts +5 -13
  112. package/dist/password-input.js +31 -55
  113. package/dist/phone-input.d.ts +19 -20
  114. package/dist/phone-input.js +226 -344
  115. package/dist/photo-gallery.d.ts +19 -19
  116. package/dist/photo-gallery.js +313 -449
  117. package/dist/picker-lzgmsNfG.js +32 -0
  118. package/dist/pie-chart.d.ts +121 -90
  119. package/dist/pie-chart.js +183 -149
  120. package/dist/popover.d.ts +9 -9
  121. package/dist/popover.js +72 -23
  122. package/dist/price-tag.d.ts +26 -27
  123. package/dist/price-tag.js +113 -173
  124. package/dist/progress.d.ts +16 -17
  125. package/dist/progress.js +169 -24
  126. package/dist/property-listing-card.d.ts +14 -17
  127. package/dist/property-listing-card.js +102 -220
  128. package/dist/purchase-option-card.d.ts +79 -0
  129. package/dist/purchase-option-card.js +176 -0
  130. package/dist/radar-chart.d.ts +29 -31
  131. package/dist/radar-chart.js +162 -137
  132. package/dist/radio-group.d.ts +11 -13
  133. package/dist/radio-group.js +46 -60
  134. package/dist/review-block.d.ts +14 -16
  135. package/dist/review-block.js +154 -10
  136. package/dist/rich-text-editor.d.ts +30 -14
  137. package/dist/rich-text-editor.js +592 -716
  138. package/dist/scatter-chart.d.ts +45 -47
  139. package/dist/scatter-chart.js +236 -240
  140. package/dist/search-input.d.ts +8 -16
  141. package/dist/search-input.js +57 -109
  142. package/dist/select.d.ts +8 -8
  143. package/dist/select.js +144 -27
  144. package/dist/separator.d.ts +8 -9
  145. package/dist/separator.js +32 -8
  146. package/dist/sheet.d.ts +11 -11
  147. package/dist/sheet.js +103 -24
  148. package/dist/sidebar.d.ts +32 -37
  149. package/dist/sidebar.js +364 -634
  150. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  151. package/dist/size-context.d.ts +2 -11
  152. package/dist/size-context.js +17 -9
  153. package/dist/skeleton.d.ts +4 -5
  154. package/dist/skeleton.js +12 -8
  155. package/dist/slider.d.ts +8 -9
  156. package/dist/slider.js +64 -135
  157. package/dist/sparkline.d.ts +68 -58
  158. package/dist/sparkline.js +315 -251
  159. package/dist/stepper.d.ts +23 -24
  160. package/dist/stepper.js +149 -246
  161. package/dist/styles.css +1004 -116
  162. package/dist/switch.d.ts +10 -12
  163. package/dist/switch.js +48 -70
  164. package/dist/table-card.d.ts +35 -0
  165. package/dist/table-card.js +125 -0
  166. package/dist/table.d.ts +18 -14
  167. package/dist/table.js +117 -154
  168. package/dist/tabs.d.ts +33 -15
  169. package/dist/tabs.js +110 -18
  170. package/dist/tag.d.ts +21 -23
  171. package/dist/tag.js +103 -159
  172. package/dist/testimonial-block.d.ts +18 -19
  173. package/dist/testimonial-block.js +189 -358
  174. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  175. package/dist/textarea.d.ts +2 -12
  176. package/dist/textarea.js +24 -11
  177. package/dist/time-picker.d.ts +11 -11
  178. package/dist/time-picker.js +245 -302
  179. package/dist/toast.d.ts +16 -18
  180. package/dist/toast.js +154 -205
  181. package/dist/tooltip.d.ts +8 -9
  182. package/dist/tooltip.js +37 -12
  183. package/dist/tree-map.d.ts +59 -62
  184. package/dist/tree-map.js +226 -269
  185. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  186. package/dist/waterfall-chart.d.ts +94 -97
  187. package/dist/waterfall-chart.js +455 -552
  188. package/package.json +36 -9
  189. package/dist/accordion.js.map +0 -1
  190. package/dist/activity-timeline.js.map +0 -1
  191. package/dist/alert.js.map +0 -1
  192. package/dist/auth-layout.js.map +0 -1
  193. package/dist/avatar.js.map +0 -1
  194. package/dist/badge.js.map +0 -1
  195. package/dist/bar-chart.js.map +0 -1
  196. package/dist/breadcrumb.js.map +0 -1
  197. package/dist/bullet-chart.js.map +0 -1
  198. package/dist/button-group.js.map +0 -1
  199. package/dist/button.js.map +0 -1
  200. package/dist/calendar.js.map +0 -1
  201. package/dist/card.js.map +0 -1
  202. package/dist/carousel.js.map +0 -1
  203. package/dist/chart.js.map +0 -1
  204. package/dist/checkbox.js.map +0 -1
  205. package/dist/chunk-322YCNVL.js +0 -278
  206. package/dist/chunk-322YCNVL.js.map +0 -1
  207. package/dist/chunk-3ACQVT7A.js +0 -25
  208. package/dist/chunk-3ACQVT7A.js.map +0 -1
  209. package/dist/chunk-3T65TLJX.js +0 -334
  210. package/dist/chunk-3T65TLJX.js.map +0 -1
  211. package/dist/chunk-6ZSGQHH2.js +0 -192
  212. package/dist/chunk-6ZSGQHH2.js.map +0 -1
  213. package/dist/chunk-7TBMLFGW.js +0 -41
  214. package/dist/chunk-7TBMLFGW.js.map +0 -1
  215. package/dist/chunk-B4H6RNDH.js +0 -135
  216. package/dist/chunk-B4H6RNDH.js.map +0 -1
  217. package/dist/chunk-BUXCGZ6X.js +0 -219
  218. package/dist/chunk-BUXCGZ6X.js.map +0 -1
  219. package/dist/chunk-CHII2QHH.js +0 -58
  220. package/dist/chunk-CHII2QHH.js.map +0 -1
  221. package/dist/chunk-DMNOXRRW.js +0 -147
  222. package/dist/chunk-DMNOXRRW.js.map +0 -1
  223. package/dist/chunk-EFSOSSIC.js +0 -130
  224. package/dist/chunk-EFSOSSIC.js.map +0 -1
  225. package/dist/chunk-FZDSVMKY.js +0 -363
  226. package/dist/chunk-FZDSVMKY.js.map +0 -1
  227. package/dist/chunk-GJOFIJS3.js +0 -246
  228. package/dist/chunk-GJOFIJS3.js.map +0 -1
  229. package/dist/chunk-HL3ZSYES.js +0 -23
  230. package/dist/chunk-HL3ZSYES.js.map +0 -1
  231. package/dist/chunk-JVLUBAPB.js +0 -129
  232. package/dist/chunk-JVLUBAPB.js.map +0 -1
  233. package/dist/chunk-KDPYSOYZ.js +0 -64
  234. package/dist/chunk-KDPYSOYZ.js.map +0 -1
  235. package/dist/chunk-KSMDANKI.js +0 -43
  236. package/dist/chunk-KSMDANKI.js.map +0 -1
  237. package/dist/chunk-MEKCCOP5.js +0 -46
  238. package/dist/chunk-MEKCCOP5.js.map +0 -1
  239. package/dist/chunk-NOFXVRWL.js +0 -451
  240. package/dist/chunk-NOFXVRWL.js.map +0 -1
  241. package/dist/chunk-PC5MHNVA.js +0 -171
  242. package/dist/chunk-PC5MHNVA.js.map +0 -1
  243. package/dist/chunk-QKAQZ2GU.js +0 -122
  244. package/dist/chunk-QKAQZ2GU.js.map +0 -1
  245. package/dist/chunk-QZHSHSVV.js +0 -26
  246. package/dist/chunk-QZHSHSVV.js.map +0 -1
  247. package/dist/chunk-RBMK26XD.js +0 -19
  248. package/dist/chunk-RBMK26XD.js.map +0 -1
  249. package/dist/chunk-SFNJGF6M.js +0 -262
  250. package/dist/chunk-SFNJGF6M.js.map +0 -1
  251. package/dist/chunk-UJJNLGTM.js +0 -112
  252. package/dist/chunk-UJJNLGTM.js.map +0 -1
  253. package/dist/chunk-VGR4ZWJ3.js +0 -418
  254. package/dist/chunk-VGR4ZWJ3.js.map +0 -1
  255. package/dist/chunk-XG47P6D4.js +0 -99
  256. package/dist/chunk-XG47P6D4.js.map +0 -1
  257. package/dist/chunk-XZZAHNVM.js +0 -21
  258. package/dist/chunk-XZZAHNVM.js.map +0 -1
  259. package/dist/chunk-Y4TTYVNE.js +0 -36
  260. package/dist/chunk-Y4TTYVNE.js.map +0 -1
  261. package/dist/chunk-YDWIHW6Q.js +0 -69
  262. package/dist/chunk-YDWIHW6Q.js.map +0 -1
  263. package/dist/collapsible.js.map +0 -1
  264. package/dist/combobox.js.map +0 -1
  265. package/dist/cta.js.map +0 -1
  266. package/dist/currency-selector.js.map +0 -1
  267. package/dist/date-picker.js.map +0 -1
  268. package/dist/details-card.js.map +0 -1
  269. package/dist/dialog.js.map +0 -1
  270. package/dist/dropdown-menu.js.map +0 -1
  271. package/dist/dropzone.js.map +0 -1
  272. package/dist/editorial-card.js.map +0 -1
  273. package/dist/empty-state.js.map +0 -1
  274. package/dist/field.js.map +0 -1
  275. package/dist/footer.js.map +0 -1
  276. package/dist/funnel-chart.js.map +0 -1
  277. package/dist/gallery-indicator.js.map +0 -1
  278. package/dist/heatmap-chart.js.map +0 -1
  279. package/dist/infotip.js.map +0 -1
  280. package/dist/input-group.js.map +0 -1
  281. package/dist/input-size-context.js.map +0 -1
  282. package/dist/input.js.map +0 -1
  283. package/dist/item.js.map +0 -1
  284. package/dist/kpi-card.js.map +0 -1
  285. package/dist/label.js.map +0 -1
  286. package/dist/line-chart.js.map +0 -1
  287. package/dist/logo.js.map +0 -1
  288. package/dist/map-indicator.js.map +0 -1
  289. package/dist/match.js.map +0 -1
  290. package/dist/media-gallery-hero.js.map +0 -1
  291. package/dist/media-player.js.map +0 -1
  292. package/dist/number-input.js.map +0 -1
  293. package/dist/page-header.js.map +0 -1
  294. package/dist/pagination.js.map +0 -1
  295. package/dist/password-input.js.map +0 -1
  296. package/dist/phone-input.js.map +0 -1
  297. package/dist/photo-gallery.js.map +0 -1
  298. package/dist/pie-chart.js.map +0 -1
  299. package/dist/popover.js.map +0 -1
  300. package/dist/price-tag.js.map +0 -1
  301. package/dist/progress.js.map +0 -1
  302. package/dist/property-listing-card.js.map +0 -1
  303. package/dist/radar-chart.js.map +0 -1
  304. package/dist/radio-group.js.map +0 -1
  305. package/dist/review-block.js.map +0 -1
  306. package/dist/rich-text-editor.js.map +0 -1
  307. package/dist/scatter-chart.js.map +0 -1
  308. package/dist/search-input.js.map +0 -1
  309. package/dist/select.js.map +0 -1
  310. package/dist/separator.js.map +0 -1
  311. package/dist/sheet.js.map +0 -1
  312. package/dist/sidebar.js.map +0 -1
  313. package/dist/size-context.js.map +0 -1
  314. package/dist/skeleton.js.map +0 -1
  315. package/dist/slider.js.map +0 -1
  316. package/dist/sparkline.js.map +0 -1
  317. package/dist/stepper.js.map +0 -1
  318. package/dist/switch.js.map +0 -1
  319. package/dist/tab-list.d.ts +0 -38
  320. package/dist/tab-list.js +0 -123
  321. package/dist/tab-list.js.map +0 -1
  322. package/dist/table.js.map +0 -1
  323. package/dist/tabs.js.map +0 -1
  324. package/dist/tag.js.map +0 -1
  325. package/dist/testimonial-block.js.map +0 -1
  326. package/dist/textarea.js.map +0 -1
  327. package/dist/time-picker.js.map +0 -1
  328. package/dist/toast.js.map +0 -1
  329. package/dist/tooltip.js.map +0 -1
  330. package/dist/tree-map.js.map +0 -1
  331. package/dist/waterfall-chart.js.map +0 -1
@@ -1,13 +1,13 @@
1
- import * as React from 'react';
2
-
1
+ import * as React from "react";
2
+ //#region src/time-picker.d.ts
3
3
  interface TimePickerProps {
4
- value?: string;
5
- onChange?: (time: string | undefined) => void;
6
- format?: "12h" | "24h";
7
- disabled?: boolean;
8
- placeholder?: string;
9
- className?: string;
4
+ value?: string;
5
+ onChange?: (time: string | undefined) => void;
6
+ format?: "12h" | "24h";
7
+ disabled?: boolean;
8
+ placeholder?: string;
9
+ className?: string;
10
10
  }
11
- declare function TimePicker({ value, onChange, format, disabled, placeholder, className, }: TimePickerProps): React.JSX.Element;
12
-
13
- export { TimePicker, type TimePickerProps };
11
+ declare function TimePicker({ value, onChange, format, disabled, placeholder, className }: TimePickerProps): React.JSX.Element;
12
+ //#endregion
13
+ export { TimePicker, type TimePickerProps };
@@ -1,312 +1,255 @@
1
1
  "use client";
2
- import {
3
- PickerFooter,
4
- PickerTrigger
5
- } from "./chunk-YDWIHW6Q.js";
6
- import {
7
- Popover,
8
- PopoverContent
9
- } from "./chunk-JVLUBAPB.js";
10
- import "./chunk-B4H6RNDH.js";
11
- import "./chunk-HL3ZSYES.js";
12
- import {
13
- cn
14
- } from "./chunk-Y4TTYVNE.js";
15
-
16
- // src/time-picker.tsx
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { Popover, PopoverContent } from "./popover.js";
4
+ import { n as PickerTrigger, t as PickerFooter } from "./picker-lzgmsNfG.js";
17
5
  import { ClockIcon } from "lucide-react";
18
- import * as React from "react";
19
6
  import { jsx, jsxs } from "react/jsx-runtime";
20
- var ITEM_HEIGHT = 40;
21
- var VISIBLE_COUNT = 5;
22
- var SCROLL_PADDING = Math.floor(VISIBLE_COUNT / 2) * ITEM_HEIGHT;
23
- var CURVE_CLAMP = 3;
24
- var HOURS_12 = Array.from(
25
- { length: 12 },
26
- (_, i) => String(i + 1).padStart(2, "0")
27
- );
28
- var HOURS_24 = Array.from(
29
- { length: 24 },
30
- (_, i) => String(i).padStart(2, "0")
31
- );
32
- var MINUTES = Array.from(
33
- { length: 60 },
34
- (_, i) => String(i).padStart(2, "0")
35
- );
36
- var PERIODS = ["AM", "PM"];
7
+ import * as React from "react";
8
+ //#region src/time-picker.tsx
9
+ const ITEM_HEIGHT = 40;
10
+ const VISIBLE_COUNT = 5;
11
+ const SCROLL_PADDING = Math.floor(VISIBLE_COUNT / 2) * ITEM_HEIGHT;
12
+ const CURVE_CLAMP = 3;
13
+ const HOURS_12 = Array.from({ length: 12 }, (_, i) => String(i + 1).padStart(2, "0"));
14
+ const HOURS_24 = Array.from({ length: 24 }, (_, i) => String(i).padStart(2, "0"));
15
+ const MINUTES = Array.from({ length: 60 }, (_, i) => String(i).padStart(2, "0"));
16
+ const PERIODS = ["AM", "PM"];
37
17
  function parseTimeString(value, format) {
38
- if (value) {
39
- if (format === "12h") {
40
- const m = value.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);
41
- if (m) {
42
- return {
43
- hour: m[1].padStart(2, "0"),
44
- minute: m[2],
45
- period: m[3].toUpperCase()
46
- };
47
- }
48
- } else {
49
- const m = value.match(/^(\d{1,2}):(\d{2})$/);
50
- if (m) {
51
- return { hour: m[1].padStart(2, "0"), minute: m[2], period: "" };
52
- }
53
- }
54
- }
55
- const now = /* @__PURE__ */ new Date();
56
- if (format === "12h") {
57
- const h = now.getHours();
58
- return {
59
- hour: String(h % 12 || 12).padStart(2, "0"),
60
- minute: String(now.getMinutes()).padStart(2, "0"),
61
- period: h >= 12 ? "PM" : "AM"
62
- };
63
- }
64
- return {
65
- hour: String(now.getHours()).padStart(2, "0"),
66
- minute: String(now.getMinutes()).padStart(2, "0"),
67
- period: ""
68
- };
18
+ if (value) if (format === "12h") {
19
+ const m = value.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);
20
+ if (m) return {
21
+ hour: m[1].padStart(2, "0"),
22
+ minute: m[2],
23
+ period: m[3].toUpperCase()
24
+ };
25
+ } else {
26
+ const m = value.match(/^(\d{1,2}):(\d{2})$/);
27
+ if (m) return {
28
+ hour: m[1].padStart(2, "0"),
29
+ minute: m[2],
30
+ period: ""
31
+ };
32
+ }
33
+ const now = /* @__PURE__ */ new Date();
34
+ if (format === "12h") {
35
+ const h = now.getHours();
36
+ return {
37
+ hour: String(h % 12 || 12).padStart(2, "0"),
38
+ minute: String(now.getMinutes()).padStart(2, "0"),
39
+ period: h >= 12 ? "PM" : "AM"
40
+ };
41
+ }
42
+ return {
43
+ hour: String(now.getHours()).padStart(2, "0"),
44
+ minute: String(now.getMinutes()).padStart(2, "0"),
45
+ period: ""
46
+ };
69
47
  }
70
48
  function formatTimeValue(tv, format) {
71
- if (format === "12h") return `${tv.hour}:${tv.minute} ${tv.period}`;
72
- return `${tv.hour}:${tv.minute}`;
49
+ if (format === "12h") return `${tv.hour}:${tv.minute} ${tv.period}`;
50
+ return `${tv.hour}:${tv.minute}`;
73
51
  }
74
52
  function TimeColumn({ label, items, value, onChange }) {
75
- const scrollRef = React.useRef(null);
76
- const itemRefs = React.useRef([]);
77
- const [centerIndex, setCenterIndex] = React.useState(
78
- () => Math.max(0, items.indexOf(value))
79
- );
80
- const isProgrammatic = React.useRef(false);
81
- const onChangeRef = React.useRef(onChange);
82
- onChangeRef.current = onChange;
83
- const paintCurve = React.useCallback(() => {
84
- const el = scrollRef.current;
85
- if (!el) return;
86
- const offset = el.scrollTop / ITEM_HEIGHT;
87
- itemRefs.current.forEach((node, index) => {
88
- if (!node) return;
89
- const distance = index - offset;
90
- const abs = Math.min(Math.abs(distance), CURVE_CLAMP);
91
- const tilt = Math.max(Math.min(distance, CURVE_CLAMP), -CURVE_CLAMP);
92
- node.style.opacity = String(Math.max(1 - abs * 0.28, 0.2));
93
- node.style.transform = `perspective(280px) rotateX(${tilt * -20}deg) scale(${1 - abs * 0.04})`;
94
- });
95
- }, []);
96
- React.useEffect(() => {
97
- const el = scrollRef.current;
98
- if (!el) return;
99
- isProgrammatic.current = true;
100
- el.scrollTop = centerIndex * ITEM_HEIGHT;
101
- paintCurve();
102
- requestAnimationFrame(() => {
103
- isProgrammatic.current = false;
104
- });
105
- }, []);
106
- React.useEffect(() => {
107
- const idx = items.indexOf(value);
108
- if (idx === -1 || idx === centerIndex) return;
109
- setCenterIndex(idx);
110
- const el = scrollRef.current;
111
- if (!el) return;
112
- isProgrammatic.current = true;
113
- el.scrollTo({ top: idx * ITEM_HEIGHT, behavior: "smooth" });
114
- setTimeout(() => {
115
- isProgrammatic.current = false;
116
- paintCurve();
117
- }, 320);
118
- }, [value]);
119
- function selectIndex(index) {
120
- const el = scrollRef.current;
121
- if (!el) return;
122
- isProgrammatic.current = true;
123
- setCenterIndex(index);
124
- onChangeRef.current(items[index]);
125
- el.scrollTo({ top: index * ITEM_HEIGHT, behavior: "smooth" });
126
- setTimeout(() => {
127
- isProgrammatic.current = false;
128
- }, 350);
129
- }
130
- function handleScroll() {
131
- paintCurve();
132
- if (isProgrammatic.current) return;
133
- const el = scrollRef.current;
134
- if (!el) return;
135
- const idx = Math.max(
136
- 0,
137
- Math.min(Math.round(el.scrollTop / ITEM_HEIGHT), items.length - 1)
138
- );
139
- if (idx !== centerIndex) {
140
- setCenterIndex(idx);
141
- onChangeRef.current(items[idx]);
142
- }
143
- }
144
- return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
145
- /* @__PURE__ */ jsx(
146
- "div",
147
- {
148
- "aria-hidden": true,
149
- style: { height: `${ITEM_HEIGHT - 4}px` },
150
- className: "pointer-events-none absolute inset-x-0.5 top-1/2 -translate-y-1/2 rounded-full bg-action-primary"
151
- }
152
- ),
153
- /* @__PURE__ */ jsx(
154
- "div",
155
- {
156
- ref: scrollRef,
157
- onScroll: handleScroll,
158
- role: "listbox",
159
- "aria-label": label,
160
- style: { height: `${VISIBLE_COUNT * ITEM_HEIGHT}px` },
161
- className: "relative snap-y snap-mandatory overflow-y-scroll overscroll-contain [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
162
- children: /* @__PURE__ */ jsx(
163
- "div",
164
- {
165
- style: {
166
- paddingTop: `${SCROLL_PADDING}px`,
167
- paddingBottom: `${SCROLL_PADDING}px`
168
- },
169
- children: items.map((item, index) => {
170
- const dist = Math.abs(index - centerIndex);
171
- return /* @__PURE__ */ jsx(
172
- "button",
173
- {
174
- type: "button",
175
- role: "option",
176
- "aria-selected": index === centerIndex,
177
- tabIndex: index === centerIndex ? 0 : -1,
178
- ref: (node) => {
179
- itemRefs.current[index] = node;
180
- },
181
- onClick: () => selectIndex(index),
182
- style: { height: `${ITEM_HEIGHT}px` },
183
- className: "flex w-full cursor-pointer snap-center items-center justify-center select-none will-change-transform",
184
- children: /* @__PURE__ */ jsx(
185
- "span",
186
- {
187
- className: cn(
188
- "text-gdt-sm font-medium transition-colors",
189
- dist === 0 ? "text-fg-on-brand" : dist === 1 ? "text-fg-secondary" : "text-fg-caption-placeholder"
190
- ),
191
- children: item
192
- }
193
- )
194
- },
195
- item
196
- );
197
- })
198
- }
199
- )
200
- }
201
- )
202
- ] });
53
+ const scrollRef = React.useRef(null);
54
+ const itemRefs = React.useRef([]);
55
+ const [centerIndex, setCenterIndex] = React.useState(() => Math.max(0, items.indexOf(value)));
56
+ const isProgrammatic = React.useRef(false);
57
+ const onChangeRef = React.useRef(onChange);
58
+ onChangeRef.current = onChange;
59
+ const paintCurve = React.useCallback(() => {
60
+ const el = scrollRef.current;
61
+ if (!el) return;
62
+ const offset = el.scrollTop / ITEM_HEIGHT;
63
+ itemRefs.current.forEach((node, index) => {
64
+ if (!node) return;
65
+ const distance = index - offset;
66
+ const abs = Math.min(Math.abs(distance), CURVE_CLAMP);
67
+ const tilt = Math.max(Math.min(distance, CURVE_CLAMP), -3);
68
+ node.style.opacity = String(Math.max(1 - abs * .28, .2));
69
+ node.style.transform = `perspective(280px) rotateX(${tilt * -20}deg) scale(${1 - abs * .04})`;
70
+ });
71
+ }, []);
72
+ React.useEffect(() => {
73
+ const el = scrollRef.current;
74
+ if (!el) return;
75
+ isProgrammatic.current = true;
76
+ el.scrollTop = centerIndex * ITEM_HEIGHT;
77
+ paintCurve();
78
+ requestAnimationFrame(() => {
79
+ isProgrammatic.current = false;
80
+ });
81
+ }, []);
82
+ React.useEffect(() => {
83
+ const idx = items.indexOf(value);
84
+ if (idx === -1 || idx === centerIndex) return;
85
+ setCenterIndex(idx);
86
+ const el = scrollRef.current;
87
+ if (!el) return;
88
+ isProgrammatic.current = true;
89
+ el.scrollTo({
90
+ top: idx * ITEM_HEIGHT,
91
+ behavior: "smooth"
92
+ });
93
+ setTimeout(() => {
94
+ isProgrammatic.current = false;
95
+ paintCurve();
96
+ }, 320);
97
+ }, [value]);
98
+ function selectIndex(index) {
99
+ const el = scrollRef.current;
100
+ if (!el) return;
101
+ isProgrammatic.current = true;
102
+ setCenterIndex(index);
103
+ onChangeRef.current(items[index]);
104
+ el.scrollTo({
105
+ top: index * ITEM_HEIGHT,
106
+ behavior: "smooth"
107
+ });
108
+ setTimeout(() => {
109
+ isProgrammatic.current = false;
110
+ }, 350);
111
+ }
112
+ function handleScroll() {
113
+ paintCurve();
114
+ if (isProgrammatic.current) return;
115
+ const el = scrollRef.current;
116
+ if (!el) return;
117
+ const idx = Math.max(0, Math.min(Math.round(el.scrollTop / ITEM_HEIGHT), items.length - 1));
118
+ if (idx !== centerIndex) {
119
+ setCenterIndex(idx);
120
+ onChangeRef.current(items[idx]);
121
+ }
122
+ }
123
+ return /* @__PURE__ */ jsxs("div", {
124
+ className: "relative",
125
+ children: [/* @__PURE__ */ jsx("div", {
126
+ "aria-hidden": true,
127
+ style: { height: `${ITEM_HEIGHT - 4}px` },
128
+ className: "pointer-events-none absolute inset-x-0.5 top-1/2 -translate-y-1/2 rounded-full bg-action-primary"
129
+ }), /* @__PURE__ */ jsx("div", {
130
+ ref: scrollRef,
131
+ onScroll: handleScroll,
132
+ role: "listbox",
133
+ "aria-label": label,
134
+ style: { height: `${VISIBLE_COUNT * ITEM_HEIGHT}px` },
135
+ className: "relative snap-y snap-mandatory overflow-y-scroll overscroll-contain [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
136
+ children: /* @__PURE__ */ jsx("div", {
137
+ style: {
138
+ paddingTop: `${SCROLL_PADDING}px`,
139
+ paddingBottom: `${SCROLL_PADDING}px`
140
+ },
141
+ children: items.map((item, index) => {
142
+ const dist = Math.abs(index - centerIndex);
143
+ return /* @__PURE__ */ jsx("button", {
144
+ type: "button",
145
+ role: "option",
146
+ "aria-selected": index === centerIndex,
147
+ tabIndex: index === centerIndex ? 0 : -1,
148
+ ref: (node) => {
149
+ itemRefs.current[index] = node;
150
+ },
151
+ onClick: () => selectIndex(index),
152
+ style: { height: `${ITEM_HEIGHT}px` },
153
+ className: "flex w-full cursor-pointer snap-center items-center justify-center select-none will-change-transform",
154
+ children: /* @__PURE__ */ jsx("span", {
155
+ className: cn("text-gdt-sm font-medium transition-colors", dist === 0 ? "text-fg-on-brand" : dist === 1 ? "text-fg-secondary" : "text-fg-caption-placeholder"),
156
+ children: item
157
+ })
158
+ }, item);
159
+ })
160
+ })
161
+ })]
162
+ });
203
163
  }
204
- function TimePicker({
205
- value,
206
- onChange,
207
- format = "12h",
208
- disabled = false,
209
- placeholder = "Select time",
210
- className
211
- }) {
212
- const [open, setOpen] = React.useState(false);
213
- const [pending, setPending] = React.useState(
214
- () => parseTimeString(value, format)
215
- );
216
- function handleOpenChange(next) {
217
- if (next) setPending(parseTimeString(value, format));
218
- setOpen(next);
219
- }
220
- const columns = [
221
- { key: "Hour", show: true },
222
- { key: "Minute", show: true },
223
- { key: "Period", show: format === "12h" }
224
- ].filter((c) => c.show);
225
- return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
226
- /* @__PURE__ */ jsx(
227
- PickerTrigger,
228
- {
229
- icon: ClockIcon,
230
- displayValue: value ?? "",
231
- placeholder,
232
- disabled,
233
- open,
234
- className
235
- }
236
- ),
237
- /* @__PURE__ */ jsxs(
238
- PopoverContent,
239
- {
240
- showArrow: false,
241
- align: "start",
242
- className: "min-w-(--anchor-width) gap-0 overflow-hidden rounded-2xl p-0",
243
- children: [
244
- /* @__PURE__ */ jsx("div", { className: "flex w-full items-center justify-center gap-2 border-b border-line-subtle", children: columns.map((column) => /* @__PURE__ */ jsx(
245
- "p",
246
- {
247
- className: cn(
248
- "py-3 text-center text-gdt-xs text-fg-caption-placeholder",
249
- format === "12h" ? "w-20.5" : "w-31"
250
- ),
251
- children: column.key
252
- },
253
- column.key
254
- )) }),
255
- /* @__PURE__ */ jsxs(
256
- "div",
257
- {
258
- className: cn(
259
- "flex justify-center gap-2 px-3 pt-2",
260
- format === "12h" ? "*:w-20.5" : "*:w-31"
261
- ),
262
- children: [
263
- /* @__PURE__ */ jsx(
264
- TimeColumn,
265
- {
266
- label: "Hour",
267
- items: format === "12h" ? HOURS_12 : HOURS_24,
268
- value: pending.hour,
269
- onChange: (hour) => setPending((prev) => ({ ...prev, hour }))
270
- }
271
- ),
272
- /* @__PURE__ */ jsx(
273
- TimeColumn,
274
- {
275
- label: "Minute",
276
- items: MINUTES,
277
- value: pending.minute,
278
- onChange: (minute) => setPending((prev) => ({ ...prev, minute }))
279
- }
280
- ),
281
- format === "12h" && /* @__PURE__ */ jsx(
282
- TimeColumn,
283
- {
284
- label: "Period",
285
- items: PERIODS,
286
- value: pending.period,
287
- onChange: (period) => setPending((prev) => ({ ...prev, period }))
288
- }
289
- )
290
- ]
291
- }
292
- ),
293
- /* @__PURE__ */ jsx("div", { className: "mt-2 w-full", children: /* @__PURE__ */ jsx(
294
- PickerFooter,
295
- {
296
- secondaryLabel: "Cancel",
297
- onSecondary: () => setOpen(false),
298
- onApply: () => {
299
- onChange?.(formatTimeValue(pending, format));
300
- setOpen(false);
301
- }
302
- }
303
- ) })
304
- ]
305
- }
306
- )
307
- ] });
164
+ function TimePicker({ value, onChange, format = "12h", disabled = false, placeholder = "Select time", className }) {
165
+ const [open, setOpen] = React.useState(false);
166
+ const [pending, setPending] = React.useState(() => parseTimeString(value, format));
167
+ function handleOpenChange(next) {
168
+ if (next) setPending(parseTimeString(value, format));
169
+ setOpen(next);
170
+ }
171
+ const columns = [
172
+ {
173
+ key: "Hour",
174
+ show: true
175
+ },
176
+ {
177
+ key: "Minute",
178
+ show: true
179
+ },
180
+ {
181
+ key: "Period",
182
+ show: format === "12h"
183
+ }
184
+ ].filter((c) => c.show);
185
+ return /* @__PURE__ */ jsxs(Popover, {
186
+ open,
187
+ onOpenChange: handleOpenChange,
188
+ children: [/* @__PURE__ */ jsx(PickerTrigger, {
189
+ icon: ClockIcon,
190
+ displayValue: value ?? "",
191
+ placeholder,
192
+ disabled,
193
+ open,
194
+ className
195
+ }), /* @__PURE__ */ jsxs(PopoverContent, {
196
+ showArrow: false,
197
+ align: "start",
198
+ className: "min-w-(--anchor-width) gap-0 overflow-hidden rounded-2xl p-0",
199
+ children: [
200
+ /* @__PURE__ */ jsx("div", {
201
+ className: "flex w-full items-center justify-center gap-2 border-b border-line-subtle",
202
+ children: columns.map((column) => /* @__PURE__ */ jsx("p", {
203
+ className: cn("py-3 text-center text-gdt-xs text-fg-caption-placeholder", format === "12h" ? "w-20.5" : "w-31"),
204
+ children: column.key
205
+ }, column.key))
206
+ }),
207
+ /* @__PURE__ */ jsxs("div", {
208
+ className: cn("flex justify-center gap-2 px-3 pt-2", format === "12h" ? "*:w-20.5" : "*:w-31"),
209
+ children: [
210
+ /* @__PURE__ */ jsx(TimeColumn, {
211
+ label: "Hour",
212
+ items: format === "12h" ? HOURS_12 : HOURS_24,
213
+ value: pending.hour,
214
+ onChange: (hour) => setPending((prev) => ({
215
+ ...prev,
216
+ hour
217
+ }))
218
+ }),
219
+ /* @__PURE__ */ jsx(TimeColumn, {
220
+ label: "Minute",
221
+ items: MINUTES,
222
+ value: pending.minute,
223
+ onChange: (minute) => setPending((prev) => ({
224
+ ...prev,
225
+ minute
226
+ }))
227
+ }),
228
+ format === "12h" && /* @__PURE__ */ jsx(TimeColumn, {
229
+ label: "Period",
230
+ items: PERIODS,
231
+ value: pending.period,
232
+ onChange: (period) => setPending((prev) => ({
233
+ ...prev,
234
+ period
235
+ }))
236
+ })
237
+ ]
238
+ }),
239
+ /* @__PURE__ */ jsx("div", {
240
+ className: "mt-2 w-full",
241
+ children: /* @__PURE__ */ jsx(PickerFooter, {
242
+ secondaryLabel: "Cancel",
243
+ onSecondary: () => setOpen(false),
244
+ onApply: () => {
245
+ onChange?.(formatTimeValue(pending, format));
246
+ setOpen(false);
247
+ }
248
+ })
249
+ })
250
+ ]
251
+ })]
252
+ });
308
253
  }
309
- export {
310
- TimePicker
311
- };
312
- //# sourceMappingURL=time-picker.js.map
254
+ //#endregion
255
+ export { TimePicker };
package/dist/toast.d.ts CHANGED
@@ -1,23 +1,21 @@
1
- import * as React from 'react';
2
- import { PropsWithChildren } from 'react';
3
- import * as _base_ui_react from '@base-ui/react';
4
- import { ToastManagerAddOptions, ToastManagerUpdateOptions } from '@base-ui/react/toast';
5
-
1
+ import { PropsWithChildren } from "react";
2
+ import { ToastManagerAddOptions, ToastManagerUpdateOptions } from "@base-ui/react/toast";
3
+ //#region src/toast.d.ts
6
4
  type ToastVariant = "success" | "info" | "warning" | "error" | "loading";
7
5
  type ToastData = {
8
- type: ToastVariant;
6
+ type: ToastVariant;
9
7
  };
10
- declare const toastManager: _base_ui_react.ToastManager<any>;
8
+ declare const toastManager: import("@base-ui/react").ToastManager<any>;
11
9
  declare const toast: ((options: ToastManagerAddOptions<ToastData>) => string) & {
12
- success: (options: ToastManagerAddOptions<ToastData>) => string;
13
- info: (options: ToastManagerAddOptions<ToastData>) => string;
14
- warning: (options: ToastManagerAddOptions<ToastData>) => string;
15
- error: (options: ToastManagerAddOptions<ToastData>) => string;
16
- loading: (options: ToastManagerAddOptions<ToastData>) => string;
17
- dismiss: (toastId?: string | number) => void;
18
- update: (toastId: string | number, options: ToastManagerUpdateOptions<ToastData>) => void;
19
- promise: <Value, T extends any = any>(promiseValue: Promise<Value>, options: _base_ui_react.ToastManagerPromiseOptions<Value, T>) => Promise<Value>;
10
+ success: (options: ToastManagerAddOptions<ToastData>) => string;
11
+ info: (options: ToastManagerAddOptions<ToastData>) => string;
12
+ warning: (options: ToastManagerAddOptions<ToastData>) => string;
13
+ error: (options: ToastManagerAddOptions<ToastData>) => string;
14
+ loading: (options: ToastManagerAddOptions<ToastData>) => string;
15
+ dismiss: (toastId?: string | number) => void;
16
+ update: (toastId: string | number, options: ToastManagerUpdateOptions<ToastData>) => void;
17
+ promise: <Value, T extends any = any>(promiseValue: Promise<Value>, options: import("@base-ui/react").ToastManagerPromiseOptions<Value, T>) => Promise<Value>;
20
18
  };
21
- declare function ToastProvider({ children }: PropsWithChildren): React.JSX.Element;
22
-
23
- export { ToastProvider, toast, toastManager };
19
+ declare function ToastProvider({ children }: PropsWithChildren): import("react").JSX.Element;
20
+ //#endregion
21
+ export { ToastProvider, toast, toastManager };