@giddaa-housing/ui 0.1.0 → 1.0.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 (334) hide show
  1. package/README.md +18 -6
  2. package/css/base.css +37 -0
  3. package/css/components.css +135 -0
  4. package/css/generated/shared.css +1 -0
  5. package/css/giddaa.css +402 -0
  6. package/css/preset.css +77 -0
  7. package/css/styles.css +2 -0
  8. package/css/theme.css +255 -0
  9. package/dist/accordion.js +5 -35
  10. package/dist/accordion.js.map +1 -1
  11. package/dist/activity-timeline.d.ts +33 -0
  12. package/dist/activity-timeline.js +212 -0
  13. package/dist/activity-timeline.js.map +1 -0
  14. package/dist/alert.js +5 -35
  15. package/dist/alert.js.map +1 -1
  16. package/dist/auth-layout.d.ts +23 -0
  17. package/dist/auth-layout.js +304 -0
  18. package/dist/auth-layout.js.map +1 -0
  19. package/dist/avatar.js +10 -142
  20. package/dist/avatar.js.map +1 -1
  21. package/dist/badge.d.ts +3 -2
  22. package/dist/badge.js +6 -114
  23. package/dist/badge.js.map +1 -1
  24. package/dist/bar-chart.d.ts +101 -77
  25. package/dist/bar-chart.js +142 -220
  26. package/dist/bar-chart.js.map +1 -1
  27. package/dist/breadcrumb.js +5 -35
  28. package/dist/breadcrumb.js.map +1 -1
  29. package/dist/bullet-chart.js +15 -48
  30. package/dist/bullet-chart.js.map +1 -1
  31. package/dist/button-group.js +14 -90
  32. package/dist/button-group.js.map +1 -1
  33. package/dist/button.d.ts +5 -5
  34. package/dist/button.js +7 -140
  35. package/dist/button.js.map +1 -1
  36. package/dist/calendar.js +12 -287
  37. package/dist/calendar.js.map +1 -1
  38. package/dist/card.js +5 -35
  39. package/dist/card.js.map +1 -1
  40. package/dist/carousel.js +12 -386
  41. package/dist/carousel.js.map +1 -1
  42. package/dist/chart.js +16 -480
  43. package/dist/chart.js.map +1 -1
  44. package/dist/checkbox.d.ts +1 -1
  45. package/dist/checkbox.js +13 -48
  46. package/dist/checkbox.js.map +1 -1
  47. package/dist/chunk-322YCNVL.js +278 -0
  48. package/dist/chunk-322YCNVL.js.map +1 -0
  49. package/dist/chunk-3ACQVT7A.js +25 -0
  50. package/dist/chunk-3ACQVT7A.js.map +1 -0
  51. package/dist/chunk-3T65TLJX.js +334 -0
  52. package/dist/chunk-3T65TLJX.js.map +1 -0
  53. package/dist/chunk-6ZSGQHH2.js +192 -0
  54. package/dist/chunk-6ZSGQHH2.js.map +1 -0
  55. package/dist/chunk-7TBMLFGW.js +41 -0
  56. package/dist/chunk-7TBMLFGW.js.map +1 -0
  57. package/dist/chunk-B4H6RNDH.js +135 -0
  58. package/dist/chunk-B4H6RNDH.js.map +1 -0
  59. package/dist/chunk-BUXCGZ6X.js +219 -0
  60. package/dist/chunk-BUXCGZ6X.js.map +1 -0
  61. package/dist/chunk-CHII2QHH.js +58 -0
  62. package/dist/chunk-CHII2QHH.js.map +1 -0
  63. package/dist/chunk-DMNOXRRW.js +147 -0
  64. package/dist/chunk-DMNOXRRW.js.map +1 -0
  65. package/dist/chunk-EFSOSSIC.js +130 -0
  66. package/dist/chunk-EFSOSSIC.js.map +1 -0
  67. package/dist/chunk-FZDSVMKY.js +363 -0
  68. package/dist/chunk-FZDSVMKY.js.map +1 -0
  69. package/dist/chunk-GJOFIJS3.js +246 -0
  70. package/dist/chunk-GJOFIJS3.js.map +1 -0
  71. package/dist/chunk-HL3ZSYES.js +23 -0
  72. package/dist/chunk-HL3ZSYES.js.map +1 -0
  73. package/dist/chunk-JVLUBAPB.js +129 -0
  74. package/dist/chunk-JVLUBAPB.js.map +1 -0
  75. package/dist/chunk-KDPYSOYZ.js +64 -0
  76. package/dist/chunk-KDPYSOYZ.js.map +1 -0
  77. package/dist/chunk-KSMDANKI.js +43 -0
  78. package/dist/chunk-KSMDANKI.js.map +1 -0
  79. package/dist/chunk-MEKCCOP5.js +46 -0
  80. package/dist/chunk-MEKCCOP5.js.map +1 -0
  81. package/dist/chunk-NOFXVRWL.js +451 -0
  82. package/dist/chunk-NOFXVRWL.js.map +1 -0
  83. package/dist/chunk-PC5MHNVA.js +171 -0
  84. package/dist/chunk-PC5MHNVA.js.map +1 -0
  85. package/dist/chunk-QKAQZ2GU.js +122 -0
  86. package/dist/chunk-QKAQZ2GU.js.map +1 -0
  87. package/dist/chunk-QZHSHSVV.js +26 -0
  88. package/dist/chunk-QZHSHSVV.js.map +1 -0
  89. package/dist/chunk-RBMK26XD.js +19 -0
  90. package/dist/chunk-RBMK26XD.js.map +1 -0
  91. package/dist/chunk-SFNJGF6M.js +262 -0
  92. package/dist/chunk-SFNJGF6M.js.map +1 -0
  93. package/dist/chunk-UJJNLGTM.js +112 -0
  94. package/dist/chunk-UJJNLGTM.js.map +1 -0
  95. package/dist/chunk-VGR4ZWJ3.js +418 -0
  96. package/dist/chunk-VGR4ZWJ3.js.map +1 -0
  97. package/dist/chunk-XG47P6D4.js +99 -0
  98. package/dist/chunk-XG47P6D4.js.map +1 -0
  99. package/dist/chunk-XZZAHNVM.js +21 -0
  100. package/dist/chunk-XZZAHNVM.js.map +1 -0
  101. package/dist/chunk-Y4TTYVNE.js +36 -0
  102. package/dist/chunk-Y4TTYVNE.js.map +1 -0
  103. package/dist/chunk-YDWIHW6Q.js +69 -0
  104. package/dist/chunk-YDWIHW6Q.js.map +1 -0
  105. package/dist/collapsible.js +6 -35
  106. package/dist/collapsible.js.map +1 -1
  107. package/dist/combobox.js +26 -694
  108. package/dist/combobox.js.map +1 -1
  109. package/dist/cta.d.ts +66 -0
  110. package/dist/cta.js +358 -0
  111. package/dist/cta.js.map +1 -0
  112. package/dist/currency-selector.d.ts +42 -0
  113. package/dist/currency-selector.js +192 -0
  114. package/dist/currency-selector.js.map +1 -0
  115. package/dist/date-picker.d.ts +18 -10
  116. package/dist/date-picker.js +105 -430
  117. package/dist/date-picker.js.map +1 -1
  118. package/dist/details-card.d.ts +19 -0
  119. package/dist/details-card.js +267 -0
  120. package/dist/details-card.js.map +1 -0
  121. package/dist/dialog.js +36 -146
  122. package/dist/dialog.js.map +1 -1
  123. package/dist/dropdown-menu.d.ts +1 -1
  124. package/dist/dropdown-menu.js +20 -358
  125. package/dist/dropdown-menu.js.map +1 -1
  126. package/dist/dropzone.js +13 -40
  127. package/dist/dropzone.js.map +1 -1
  128. package/dist/editorial-card.d.ts +29 -0
  129. package/dist/editorial-card.js +311 -0
  130. package/dist/editorial-card.js.map +1 -0
  131. package/dist/empty-state.js +5 -35
  132. package/dist/empty-state.js.map +1 -1
  133. package/dist/field.js +30 -135
  134. package/dist/field.js.map +1 -1
  135. package/dist/footer.d.ts +47 -0
  136. package/dist/footer.js +430 -0
  137. package/dist/footer.js.map +1 -0
  138. package/dist/funnel-chart.js +42 -415
  139. package/dist/funnel-chart.js.map +1 -1
  140. package/dist/gallery-indicator.d.ts +18 -0
  141. package/dist/gallery-indicator.js +12 -0
  142. package/dist/gallery-indicator.js.map +1 -0
  143. package/dist/heatmap-chart.d.ts +98 -0
  144. package/dist/heatmap-chart.js +248 -0
  145. package/dist/heatmap-chart.js.map +1 -0
  146. package/dist/infotip.d.ts +11 -0
  147. package/dist/infotip.js +66 -0
  148. package/dist/infotip.js.map +1 -0
  149. package/dist/input-group.d.ts +2 -1
  150. package/dist/input-group.js +15 -371
  151. package/dist/input-group.js.map +1 -1
  152. package/dist/input-size-context.js +5 -19
  153. package/dist/input-size-context.js.map +1 -1
  154. package/dist/input.js +6 -78
  155. package/dist/input.js.map +1 -1
  156. package/dist/item.js +5 -35
  157. package/dist/item.js.map +1 -1
  158. package/dist/kpi-card.js +12 -52
  159. package/dist/kpi-card.js.map +1 -1
  160. package/dist/label.js +5 -64
  161. package/dist/label.js.map +1 -1
  162. package/dist/line-chart.js +9 -166
  163. package/dist/line-chart.js.map +1 -1
  164. package/dist/logo.js +4 -141
  165. package/dist/logo.js.map +1 -1
  166. package/dist/map-indicator.d.ts +13 -0
  167. package/dist/map-indicator.js +109 -0
  168. package/dist/map-indicator.js.map +1 -0
  169. package/dist/match.d.ts +16 -0
  170. package/dist/match.js +113 -0
  171. package/dist/match.js.map +1 -0
  172. package/dist/media-gallery-hero.d.ts +60 -0
  173. package/dist/media-gallery-hero.js +362 -0
  174. package/dist/media-gallery-hero.js.map +1 -0
  175. package/dist/media-player.d.ts +60 -0
  176. package/dist/media-player.js +1394 -0
  177. package/dist/media-player.js.map +1 -0
  178. package/dist/number-input.js +30 -325
  179. package/dist/number-input.js.map +1 -1
  180. package/dist/page-header.js +4 -32
  181. package/dist/page-header.js.map +1 -1
  182. package/dist/pagination.d.ts +1 -0
  183. package/dist/pagination.js +27 -161
  184. package/dist/pagination.js.map +1 -1
  185. package/dist/password-input.d.ts +1 -0
  186. package/dist/password-input.js +21 -319
  187. package/dist/password-input.js.map +1 -1
  188. package/dist/phone-input.d.ts +2 -1
  189. package/dist/phone-input.js +148 -359
  190. package/dist/phone-input.js.map +1 -1
  191. package/dist/photo-gallery.d.ts +1 -1
  192. package/dist/photo-gallery.js +97 -393
  193. package/dist/photo-gallery.js.map +1 -1
  194. package/dist/pie-chart.js +17 -52
  195. package/dist/pie-chart.js.map +1 -1
  196. package/dist/popover.js +13 -158
  197. package/dist/popover.js.map +1 -1
  198. package/dist/price-tag.d.ts +35 -0
  199. package/dist/price-tag.js +178 -0
  200. package/dist/price-tag.js.map +1 -0
  201. package/dist/progress.d.ts +5 -2
  202. package/dist/progress.js +14 -303
  203. package/dist/progress.js.map +1 -1
  204. package/dist/property-listing-card.d.ts +32 -0
  205. package/dist/property-listing-card.js +235 -0
  206. package/dist/property-listing-card.js.map +1 -0
  207. package/dist/radar-chart.d.ts +110 -0
  208. package/dist/radar-chart.js +147 -0
  209. package/dist/radar-chart.js.map +1 -0
  210. package/dist/radio-group.js +15 -50
  211. package/dist/radio-group.js.map +1 -1
  212. package/dist/review-block.d.ts +20 -0
  213. package/dist/review-block.js +10 -0
  214. package/dist/review-block.js.map +1 -0
  215. package/dist/rich-text-editor.js +172 -433
  216. package/dist/rich-text-editor.js.map +1 -1
  217. package/dist/scatter-chart.d.ts +142 -0
  218. package/dist/scatter-chart.js +252 -0
  219. package/dist/scatter-chart.js.map +1 -0
  220. package/dist/search-input.d.ts +1 -0
  221. package/dist/search-input.js +22 -320
  222. package/dist/search-input.js.map +1 -1
  223. package/dist/select.js +15 -292
  224. package/dist/select.js.map +1 -1
  225. package/dist/separator.js +5 -68
  226. package/dist/separator.js.map +1 -1
  227. package/dist/sheet.js +14 -271
  228. package/dist/sheet.js.map +1 -1
  229. package/dist/sidebar.d.ts +1 -1
  230. package/dist/sidebar.js +89 -494
  231. package/dist/sidebar.js.map +1 -1
  232. package/dist/size-context.js +5 -17
  233. package/dist/size-context.js.map +1 -1
  234. package/dist/skeleton.js +4 -44
  235. package/dist/skeleton.js.map +1 -1
  236. package/dist/slider.d.ts +28 -0
  237. package/dist/slider.js +152 -0
  238. package/dist/slider.js.map +1 -0
  239. package/dist/sparkline.js +33 -341
  240. package/dist/sparkline.js.map +1 -1
  241. package/dist/stepper.js +5 -35
  242. package/dist/stepper.js.map +1 -1
  243. package/dist/styles.css +9593 -2
  244. package/dist/switch.js +13 -48
  245. package/dist/switch.js.map +1 -1
  246. package/dist/tab-list.js +35 -306
  247. package/dist/tab-list.js.map +1 -1
  248. package/dist/table.js +5 -32
  249. package/dist/table.js.map +1 -1
  250. package/dist/tabs.js +10 -150
  251. package/dist/tabs.js.map +1 -1
  252. package/dist/tag.d.ts +7 -6
  253. package/dist/tag.js +101 -97
  254. package/dist/tag.js.map +1 -1
  255. package/dist/testimonial-block.d.ts +34 -0
  256. package/dist/testimonial-block.js +377 -0
  257. package/dist/testimonial-block.js.map +1 -0
  258. package/dist/textarea.js +6 -73
  259. package/dist/textarea.js.map +1 -1
  260. package/dist/time-picker.js +119 -279
  261. package/dist/time-picker.js.map +1 -1
  262. package/dist/toast.js +27 -132
  263. package/dist/toast.js.map +1 -1
  264. package/dist/tooltip.d.ts +5 -5
  265. package/dist/tooltip.js +7 -90
  266. package/dist/tooltip.js.map +1 -1
  267. package/dist/tree-map.js +41 -414
  268. package/dist/tree-map.js.map +1 -1
  269. package/dist/waterfall-chart.d.ts +129 -0
  270. package/dist/waterfall-chart.js +577 -0
  271. package/dist/waterfall-chart.js.map +1 -0
  272. package/package.json +98 -28
  273. package/dist/base.css +0 -32
  274. package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
  275. package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
  276. package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
  277. package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
  278. package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
  279. package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
  280. package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
  281. package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
  282. package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
  283. package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
  284. package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
  285. package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
  286. package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
  287. package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
  288. package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
  289. package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
  290. package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
  291. package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
  292. package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
  293. package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
  294. package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
  295. package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
  296. package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
  297. package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
  298. package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
  299. package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
  300. package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
  301. package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
  302. package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
  303. package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
  304. package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
  305. package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
  306. package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
  307. package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
  308. package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
  309. package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
  310. package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
  311. package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
  312. package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
  313. package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
  314. package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
  315. package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
  316. package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
  317. package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
  318. package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
  319. package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
  320. package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
  321. package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
  322. package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
  323. package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
  324. package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
  325. package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
  326. package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
  327. package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
  328. package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
  329. package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
  330. package/dist/index.d.ts +0 -87
  331. package/dist/index.js +0 -10448
  332. package/dist/index.js.map +0 -1
  333. package/dist/red-hat-display.css +0 -2
  334. package/dist/theme/giddaa.css +0 -2
@@ -1,434 +1,70 @@
1
- // src/components/ui/date-picker.tsx
2
- import { CalendarIcon } from "lucide-react";
3
- import * as React2 from "react";
4
-
5
- // src/lib/cn.ts
6
- import { clsx } from "clsx";
7
- import { extendTailwindMerge } from "tailwind-merge";
8
- var twMerge = extendTailwindMerge({
9
- extend: {
10
- classGroups: {
11
- "font-size": [
12
- {
13
- text: [
14
- "gdt-display",
15
- "gdt-h1",
16
- "gdt-h2",
17
- "gdt-h3",
18
- "gdt-h4",
19
- "gdt-h5",
20
- "gdt-xl",
21
- "gdt-lg",
22
- "gdt-md",
23
- "gdt-sm",
24
- "gdt-xs",
25
- "gdt-subtext",
26
- "gdt-capitalized"
27
- ]
28
- }
29
- ]
30
- }
31
- }
32
- });
33
- function cn(...inputs) {
34
- return twMerge(clsx(inputs));
35
- }
36
-
37
- // src/components/ui/button.tsx
38
- import { Button as ButtonPrimitive } from "@base-ui/react/button";
39
- import { cva } from "class-variance-authority";
40
- import { Loader } from "lucide-react";
41
-
42
- // src/components/ui/size-context.tsx
43
- import { createContext, useContext } from "react";
44
- import { Fragment, jsx } from "react/jsx-runtime";
45
- var SizeContext = createContext(void 0);
46
- function SizeProvider({
47
- children,
48
- size
49
- }) {
50
- if (!size) {
51
- return /* @__PURE__ */ jsx(Fragment, { children });
52
- }
53
- return /* @__PURE__ */ jsx(SizeContext.Provider, { value: size, children });
54
- }
55
- function useComponentSize(size, fallback = "md") {
56
- const inheritedSize = useContext(SizeContext);
57
- return size ?? inheritedSize ?? fallback;
58
- }
59
-
60
- // src/components/ui/button.tsx
61
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
62
- var buttonVariants = cva(
63
- "group/button inline-flex shrink-0 items-center justify-center rounded-full bg-clip-padding whitespace-nowrap font-bold transition-[background-color,color,border-color,box-shadow,transform] outline-none select-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
64
- {
65
- variants: {
66
- variant: {
67
- primary: "bg-action-primary text-fg-on-brand hover:bg-action-primary-hover active:bg-action-primary-pressed",
68
- "primary-outline": "border-2 border-action-primary bg-transparent text-fg-brand hover:bg-surface-brand-subtle active:bg-surface-brand-subtle data-focused:bg-surface-brand-subtle data-pressed:bg-surface-brand-subtle",
69
- secondary: "bg-surface-brand-subtle text-fg-brand hover:bg-action-primary-hover hover:text-fg-on-brand active:bg-action-primary-pressed active:text-fg-on-brand data-focused:bg-action-primary-hover data-pressed:bg-action-primary-pressed data-focused:text-fg-on-brand data-pressed:text-fg-on-brand",
70
- "secondary-outline": "border-2 border-action-secondary bg-transparent text-fg-brand hover:bg-surface-brand-subtle active:bg-surface-brand-subtle data-focused:bg-surface-brand-subtle data-pressed:bg-surface-brand-subtle",
71
- tertiary: "bg-action-tertiary text-fg-primary hover:bg-action-tertiary-hover active:bg-action-tertiary-pressed data-focused:bg-action-tertiary-hover data-pressed:bg-action-tertiary-pressed",
72
- "tertiary-outline": "border border-line-strong bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised",
73
- ghost: "bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised",
74
- danger: "bg-action-danger text-fg-on-brand hover:bg-action-danger-hover active:bg-action-danger-pressed data-focused:bg-action-danger-hover data-pressed:bg-action-danger-pressed",
75
- "glass-overlay": "bg-surface-glass-overlay-button text-fg-on-brand",
76
- "link-brand": "border-transparent bg-transparent px-0 text-fg-brand hover:underline active:underline active:opacity-70",
77
- "link-neutral": "border-transparent bg-transparent px-0 text-fg-secondary hover:underline active:underline active:opacity-70"
78
- },
79
- size: {
80
- sm: "h-8 gap-2 px-3.5 text-gdt-xs has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 [&_svg:not([class*='size-'])]:size-3.5",
81
- md: "h-10 gap-2 px-4.5 text-gdt-sm has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4",
82
- lg: "h-12.5 gap-2.5 px-5.5 text-gdt-md has-data-[icon=inline-end]:pr-5 has-data-[icon=inline-start]:pl-5 [&_svg:not([class*='size-'])]:size-4.5",
83
- xl: "h-14 gap-3 px-6.5 text-gdt-lg has-data-[icon=inline-end]:pr-6 has-data-[icon=inline-start]:pl-6 [&_svg:not([class*='size-'])]:size-5",
84
- icon: "size-10",
85
- "icon-xs": "size-6 text-gdt-xs [&_svg:not([class*='size-'])]:size-3",
86
- "icon-sm": "size-8 text-gdt-sm [&_svg:not([class*='size-'])]:size-3.5",
87
- "icon-lg": "size-12.5 text-gdt-md [&_svg:not([class*='size-'])]:size-4.5",
88
- "icon-xl": "size-14 text-gdt-lg [&_svg:not([class*='size-'])]:size-5"
89
- }
90
- },
91
- defaultVariants: {
92
- variant: "primary",
93
- size: "md"
94
- }
95
- }
96
- );
97
- function Button({
98
- className,
99
- variant = "primary",
100
- size,
101
- isLoading = false,
102
- children,
103
- disabled = false,
104
- ...props
105
- }) {
106
- const inheritedSize = useComponentSize();
107
- const resolvedSize = size ?? inheritedSize;
108
- const _disabled = disabled || isLoading;
109
- return /* @__PURE__ */ jsxs(
110
- ButtonPrimitive,
111
- {
112
- "data-slot": "button",
113
- className: cn(buttonVariants({ variant, size: resolvedSize, className })),
114
- disabled: _disabled,
115
- ...props,
116
- children: [
117
- isLoading && /* @__PURE__ */ jsx2(Loader, { className: "size-4 animate-spin" }),
118
- " ",
119
- children
120
- ]
121
- }
122
- );
123
- }
124
-
125
- // src/components/ui/calendar.tsx
126
- import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
127
- import * as React from "react";
1
+ "use client";
128
2
  import {
129
- DayPicker,
130
- getDefaultClassNames
131
- } from "react-day-picker";
132
- import { jsx as jsx3 } from "react/jsx-runtime";
133
- function Calendar({
134
- className,
135
- classNames,
136
- showOutsideDays = false,
137
- weekStartsOn = 1,
138
- locale,
139
- formatters,
140
- components,
141
- ...props
142
- }) {
143
- const defaultClassNames = getDefaultClassNames();
144
- return /* @__PURE__ */ jsx3(
145
- DayPicker,
146
- {
147
- showOutsideDays,
148
- weekStartsOn,
149
- className: cn(
150
- "group/calendar bg-transparent p-4 [--cell-radius:var(--radius-md)] [--cell-height:36px] [--cell-width:40px]",
151
- String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
152
- String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
153
- className
154
- ),
155
- locale,
156
- formatters: {
157
- formatWeekdayName: (date) => date.toLocaleString(locale?.code, { weekday: "narrow" }),
158
- ...formatters
159
- },
160
- classNames: {
161
- root: cn("w-fit", defaultClassNames.root),
162
- months: cn(
163
- "relative flex flex-col gap-4 md:flex-row",
164
- defaultClassNames.months
165
- ),
166
- month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
167
- nav: cn(
168
- "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
169
- defaultClassNames.nav
170
- ),
171
- button_previous: cn(
172
- "flex size-7 items-center justify-center rounded-(--cell-radius) text-fg-secondary transition-colors outline-none select-none hover:bg-surface focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-disabled:opacity-40",
173
- defaultClassNames.button_previous
174
- ),
175
- button_next: cn(
176
- "flex size-7 items-center justify-center rounded-(--cell-radius) text-fg-secondary transition-colors outline-none select-none hover:bg-surface focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-disabled:opacity-40",
177
- defaultClassNames.button_next
178
- ),
179
- month_caption: cn(
180
- "flex h-(--cell-height) w-full items-center justify-center px-(--cell-width)",
181
- defaultClassNames.month_caption
182
- ),
183
- caption_label: cn(
184
- "text-gdt-sm font-medium text-fg-primary select-none",
185
- defaultClassNames.caption_label
186
- ),
187
- table: "w-full border-collapse",
188
- weekdays: cn("flex", defaultClassNames.weekdays),
189
- weekday: cn(
190
- "flex-1 text-gdt-xs font-normal text-fg-secondary select-none",
191
- defaultClassNames.weekday
192
- ),
193
- week: cn("mt-1 flex w-full", defaultClassNames.week),
194
- day: cn(
195
- "group/day relative aspect-square h-full w-full p-0 text-center select-none",
196
- defaultClassNames.day
197
- ),
198
- range_start: cn(
199
- "rounded-l-full bg-surface-brand-subtle",
200
- defaultClassNames.range_start
201
- ),
202
- range_middle: cn(
203
- "rounded-none bg-surface-brand-subtle",
204
- defaultClassNames.range_middle
205
- ),
206
- range_end: cn(
207
- "rounded-r-full bg-surface-brand-subtle",
208
- defaultClassNames.range_end
209
- ),
210
- today: cn(
211
- "rounded-full h-(--cell-height) w-(--cell-width) flex items-center justify-center bg-surface-brand-subtle p-0",
212
- defaultClassNames.today
213
- ),
214
- outside: cn(
215
- "text-fg-caption-placeholder aria-selected:text-fg-caption-placeholder",
216
- defaultClassNames.outside
217
- ),
218
- disabled: cn(
219
- "text-fg-caption-placeholder opacity-50",
220
- defaultClassNames.disabled
221
- ),
222
- hidden: cn("invisible", defaultClassNames.hidden),
223
- ...classNames
224
- },
225
- components: {
226
- Root: ({ className: className2, rootRef, ...props2 }) => {
227
- return /* @__PURE__ */ jsx3(
228
- "div",
229
- {
230
- "data-slot": "calendar",
231
- ref: rootRef,
232
- className: cn(className2),
233
- ...props2
234
- }
235
- );
236
- },
237
- Chevron: ({ className: className2, orientation, ...props2 }) => {
238
- if (orientation === "right") {
239
- return /* @__PURE__ */ jsx3(
240
- ChevronRightIcon,
241
- {
242
- className: cn("size-4", className2),
243
- ...props2
244
- }
245
- );
246
- }
247
- return /* @__PURE__ */ jsx3(ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
248
- },
249
- DayButton: ({ ...props2 }) => /* @__PURE__ */ jsx3(CalendarDayButton, { locale, ...props2 }),
250
- WeekNumber: ({ children, ...props2 }) => {
251
- return /* @__PURE__ */ jsx3("td", { ...props2, children: /* @__PURE__ */ jsx3("div", { className: "flex h-(--cell-height) w-(--cell-width) items-center justify-center text-center", children }) });
252
- },
253
- ...components
254
- },
255
- ...props
256
- }
257
- );
258
- }
259
- function CalendarDayButton({
260
- className,
261
- day,
262
- modifiers,
263
- locale,
264
- ...props
265
- }) {
266
- const defaultClassNames = getDefaultClassNames();
267
- const ref = React.useRef(null);
268
- React.useEffect(() => {
269
- if (modifiers.focused) ref.current?.focus();
270
- }, [modifiers.focused]);
271
- const isEndpoint = modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle || modifiers.range_start || modifiers.range_end;
272
- return /* @__PURE__ */ jsx3(
273
- Button,
274
- {
275
- ref,
276
- variant: "ghost",
277
- size: "icon",
278
- "data-day": day.date.toLocaleDateString(locale?.code),
279
- "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
280
- "data-range-start": modifiers.range_start,
281
- "data-range-end": modifiers.range_end,
282
- "data-range-middle": modifiers.range_middle,
283
- className: cn(
284
- "relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-width) h-(--cell-height) items-center justify-center rounded-full border-0 text-gdt-sm font-normal leading-none",
285
- // Selected single + range endpoints: filled brand circle.
286
- "data-[range-end=true]:bg-action-primary data-[range-end=true]:text-fg-on-brand data-[range-end=true]:hover:bg-action-primary-hover data-[range-end=true]:hover:text-fg-on-brand",
287
- "data-[range-start=true]:bg-action-primary data-[range-start=true]:text-fg-on-brand data-[range-start=true]:hover:bg-action-primary-hover data-[range-start=true]:hover:text-fg-on-brand",
288
- "data-[selected-single=true]:bg-action-primary data-[selected-single=true]:text-fg-on-brand data-[selected-single=true]:hover:bg-action-primary-hover data-[selected-single=true]:hover:text-fg-on-brand",
289
- // In-range days: brand wash carried by the cell, brand text on the button.
290
- "data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-transparent data-[range-middle=true]:text-fg-brand data-[range-middle=true]:hover:bg-transparent",
291
- isEndpoint && "font-medium",
292
- "group-data-[focused=true]/day:border-line-focus group-data-[focused=true]/day:shadow-[0px_0px_0px_2px_var(--color-line-focus)]",
293
- defaultClassNames.day,
294
- className
295
- ),
296
- ...props
297
- }
298
- );
299
- }
300
-
301
- // src/components/ui/popover.tsx
302
- import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
303
- import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
304
- function Popover({ ...props }) {
305
- return /* @__PURE__ */ jsx4(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
306
- }
307
- function PopoverTrigger({ ...props }) {
308
- return /* @__PURE__ */ jsx4(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
309
- }
310
- function PopoverContent({
311
- className,
312
- align = "center",
313
- alignOffset = 0,
314
- side = "bottom",
315
- sideOffset = 6,
316
- showArrow = true,
317
- size = "md",
318
- children,
319
- ...props
320
- }) {
321
- return /* @__PURE__ */ jsx4(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx4(
322
- PopoverPrimitive.Positioner,
323
- {
324
- align,
325
- alignOffset,
326
- side,
327
- sideOffset,
328
- className: "isolate z-50",
329
- children: /* @__PURE__ */ jsxs2(
330
- PopoverPrimitive.Popup,
331
- {
332
- "data-slot": "popover-content",
333
- className: cn(
334
- "z-50 relative flex w-72 max-w-[calc(100vw-2rem)] origin-(--transform-origin) flex-col rounded-lg border-0 bg-surface-overlay py-4 text-gdt-sm text-fg-primary shadow-2 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 has-[&_[data-slot=popover-footer]]:pb-0",
335
- className
336
- ),
337
- ...props,
338
- children: [
339
- /* @__PURE__ */ jsx4(SizeProvider, { size, children }),
340
- showArrow ? /* @__PURE__ */ jsx4(PopoverPrimitive.Arrow, { className: "relative block w-3 h-1.5 overflow-clip data-[side=bottom]:top-[-6px] data-[side=left]:right-[-9px] data-[side=left]:rotate-90 data-[side=right]:left-[-9px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-6px] data-[side=top]:rotate-180 before:content-[''] before:absolute before:bottom-0 before:left-1/2 before:w-[calc(6px*sqrt(2))] before:h-[calc(6px*sqrt(2))] before:bg-surface-overlay before:border before:border-line before:[transform:translate(-50%,50%)_rotate(45deg)]" }) : null
341
- ]
342
- }
343
- )
344
- }
345
- ) });
346
- }
3
+ PickerFooter,
4
+ PickerTrigger
5
+ } from "./chunk-YDWIHW6Q.js";
6
+ import {
7
+ Popover,
8
+ PopoverContent
9
+ } from "./chunk-JVLUBAPB.js";
10
+ import {
11
+ Calendar
12
+ } from "./chunk-GJOFIJS3.js";
13
+ import "./chunk-VGR4ZWJ3.js";
14
+ import "./chunk-6ZSGQHH2.js";
15
+ import "./chunk-KSMDANKI.js";
16
+ import "./chunk-MEKCCOP5.js";
17
+ import "./chunk-3ACQVT7A.js";
18
+ import "./chunk-B4H6RNDH.js";
19
+ import "./chunk-HL3ZSYES.js";
20
+ import {
21
+ cn
22
+ } from "./chunk-Y4TTYVNE.js";
347
23
 
348
- // src/components/ui/date-picker.tsx
349
- import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
350
- var MONTHS = [
351
- "January",
352
- "February",
353
- "March",
354
- "April",
355
- "May",
356
- "June",
357
- "July",
358
- "August",
359
- "September",
360
- "October",
361
- "November",
362
- "December"
363
- ];
24
+ // src/date-picker.tsx
25
+ import { CalendarIcon } from "lucide-react";
26
+ import * as React from "react";
27
+ import { jsx, jsxs } from "react/jsx-runtime";
364
28
  function formatDate(date) {
365
- const day = date.getDate().toString().padStart(2, "0");
366
- return `${day} ${MONTHS[date.getMonth()]} ${date.getFullYear()}`;
29
+ return date.toLocaleDateString("en-GB", {
30
+ day: "2-digit",
31
+ month: "long",
32
+ year: "numeric"
33
+ });
367
34
  }
368
- function PickerTrigger({
369
- displayValue,
370
- placeholder,
371
- disabled,
372
- open,
373
- className
374
- }) {
375
- return /* @__PURE__ */ jsxs3(
376
- PopoverTrigger,
377
- {
378
- disabled,
379
- className: cn(
380
- "flex h-10 w-full items-center justify-between rounded-full border px-3.5 text-gdt-sm transition-[border-color,box-shadow] outline-none",
381
- disabled ? "cursor-not-allowed border-line-subtle bg-surface text-fg-caption-placeholder" : open ? "border-line-focus bg-canvas text-fg-primary inset-ring-1 inset-ring-line-focus" : "border-line bg-canvas text-fg-primary hover:border-line-strong",
382
- className
383
- ),
384
- children: [
385
- /* @__PURE__ */ jsx5(
386
- "span",
387
- {
388
- className: cn(
389
- "min-w-0 truncate",
390
- !displayValue && "text-fg-caption-placeholder"
391
- ),
392
- children: displayValue || placeholder
393
- }
394
- ),
395
- /* @__PURE__ */ jsx5(
396
- CalendarIcon,
397
- {
398
- className: cn(
399
- "ml-2 size-4 shrink-0",
400
- disabled ? "text-fg-caption-placeholder" : "text-fg-secondary"
401
- )
402
- }
403
- )
404
- ]
405
- }
406
- );
35
+ var PANEL_CLASSES = "flex min-w-(--anchor-width) flex-col items-center gap-0 overflow-hidden rounded-2xl p-0";
36
+ function defaultStartMonth() {
37
+ return new Date((/* @__PURE__ */ new Date()).getFullYear() - 100, 0);
407
38
  }
408
- function PickerFooter({ onClear, onApply }) {
409
- return /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-end gap-2 border-t border-line-subtle px-4 py-3", children: [
410
- /* @__PURE__ */ jsx5(Button, { variant: "tertiary-outline", size: "sm", onClick: onClear, children: "Clear" }),
411
- /* @__PURE__ */ jsx5(Button, { size: "sm", onClick: onApply, children: "Apply" })
412
- ] });
39
+ function defaultEndMonth() {
40
+ return new Date((/* @__PURE__ */ new Date()).getFullYear() + 10, 11);
413
41
  }
414
- var PANEL_CLASSES = "min-w-(--anchor-width) gap-0 overflow-hidden rounded-2xl flex flex-col items-center p-0";
415
42
  function DatePicker({
416
43
  value,
417
44
  onChange,
418
45
  disabled = false,
419
46
  placeholder = "Select date",
420
- className
47
+ className,
48
+ captionLayout = "dropdown",
49
+ startMonth,
50
+ endMonth,
51
+ disabledDates
421
52
  }) {
422
- const [open, setOpen] = React2.useState(false);
423
- const [pending, setPending] = React2.useState(value);
53
+ const [open, setOpen] = React.useState(false);
54
+ const [pending, setPending] = React.useState(value);
55
+ const [month, setMonth] = React.useState(() => value ?? /* @__PURE__ */ new Date());
424
56
  function handleOpenChange(next) {
425
- if (next) setPending(value);
57
+ if (next) {
58
+ setPending(value);
59
+ setMonth(value ?? /* @__PURE__ */ new Date());
60
+ }
426
61
  setOpen(next);
427
62
  }
428
- return /* @__PURE__ */ jsxs3(Popover, { open, onOpenChange: handleOpenChange, children: [
429
- /* @__PURE__ */ jsx5(
63
+ return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
64
+ /* @__PURE__ */ jsx(
430
65
  PickerTrigger,
431
66
  {
67
+ icon: CalendarIcon,
432
68
  displayValue: value ? formatDate(value) : "",
433
69
  placeholder,
434
70
  disabled,
@@ -436,19 +72,33 @@ function DatePicker({
436
72
  className
437
73
  }
438
74
  ),
439
- /* @__PURE__ */ jsx5(
75
+ /* @__PURE__ */ jsxs(
440
76
  PopoverContent,
441
77
  {
442
78
  showArrow: false,
443
79
  align: "start",
444
80
  side: "bottom",
445
81
  className: PANEL_CLASSES,
446
- children: /* @__PURE__ */ jsxs3("div", { children: [
447
- /* @__PURE__ */ jsx5(Calendar, { mode: "single", selected: pending, onSelect: setPending }),
448
- /* @__PURE__ */ jsx5(
82
+ children: [
83
+ /* @__PURE__ */ jsx(
84
+ Calendar,
85
+ {
86
+ mode: "single",
87
+ selected: pending,
88
+ onSelect: setPending,
89
+ month,
90
+ onMonthChange: setMonth,
91
+ captionLayout,
92
+ startMonth: startMonth ?? defaultStartMonth(),
93
+ endMonth: endMonth ?? defaultEndMonth(),
94
+ disabled: disabledDates
95
+ }
96
+ ),
97
+ /* @__PURE__ */ jsx(
449
98
  PickerFooter,
450
99
  {
451
- onClear: () => {
100
+ secondaryLabel: "Clear",
101
+ onSecondary: () => {
452
102
  setPending(void 0);
453
103
  onChange?.(void 0);
454
104
  setOpen(false);
@@ -459,7 +109,7 @@ function DatePicker({
459
109
  }
460
110
  }
461
111
  )
462
- ] })
112
+ ]
463
113
  }
464
114
  )
465
115
  ] });
@@ -469,12 +119,22 @@ function DateRangePicker({
469
119
  onChange,
470
120
  disabled = false,
471
121
  placeholder = "Select date range",
472
- className
122
+ className,
123
+ captionLayout = "dropdown",
124
+ startMonth,
125
+ endMonth,
126
+ disabledDates
473
127
  }) {
474
- const [open, setOpen] = React2.useState(false);
475
- const [pending, setPending] = React2.useState(value);
128
+ const [open, setOpen] = React.useState(false);
129
+ const [pending, setPending] = React.useState(value);
130
+ const [month, setMonth] = React.useState(
131
+ () => value?.from ?? /* @__PURE__ */ new Date()
132
+ );
476
133
  function handleOpenChange(next) {
477
- if (next) setPending(value);
134
+ if (next) {
135
+ setPending(value);
136
+ setMonth(value?.from ?? /* @__PURE__ */ new Date());
137
+ }
478
138
  setOpen(next);
479
139
  }
480
140
  const displayValue = (() => {
@@ -483,10 +143,11 @@ function DateRangePicker({
483
143
  if (value?.from) return formatDate(value.from);
484
144
  return "";
485
145
  })();
486
- return /* @__PURE__ */ jsxs3(Popover, { open, onOpenChange: handleOpenChange, children: [
487
- /* @__PURE__ */ jsx5(
146
+ return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
147
+ /* @__PURE__ */ jsx(
488
148
  PickerTrigger,
489
149
  {
150
+ icon: CalendarIcon,
490
151
  displayValue,
491
152
  placeholder,
492
153
  disabled,
@@ -494,18 +155,32 @@ function DateRangePicker({
494
155
  className
495
156
  }
496
157
  ),
497
- /* @__PURE__ */ jsxs3(
158
+ /* @__PURE__ */ jsxs(
498
159
  PopoverContent,
499
160
  {
500
161
  showArrow: false,
501
162
  align: "start",
502
163
  className: cn(PANEL_CLASSES, "w-auto"),
503
164
  children: [
504
- /* @__PURE__ */ jsx5(Calendar, { mode: "range", selected: pending, onSelect: setPending }),
505
- /* @__PURE__ */ jsx5(
165
+ /* @__PURE__ */ jsx(
166
+ Calendar,
167
+ {
168
+ mode: "range",
169
+ selected: pending,
170
+ onSelect: setPending,
171
+ month,
172
+ onMonthChange: setMonth,
173
+ captionLayout,
174
+ startMonth: startMonth ?? defaultStartMonth(),
175
+ endMonth: endMonth ?? defaultEndMonth(),
176
+ disabled: disabledDates
177
+ }
178
+ ),
179
+ /* @__PURE__ */ jsx(
506
180
  PickerFooter,
507
181
  {
508
- onClear: () => {
182
+ secondaryLabel: "Clear",
183
+ onSecondary: () => {
509
184
  setPending(void 0);
510
185
  onChange?.(void 0);
511
186
  setOpen(false);