@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
@@ -0,0 +1,176 @@
1
+ import { t as cn } from "./cn-BI_4DMBf.js";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { mergeProps } from "@base-ui/react/merge-props";
4
+ import { useRender } from "@base-ui/react/use-render";
5
+ import { cva } from "class-variance-authority";
6
+ //#region src/purchase-option-card.tsx
7
+ const purchaseOptionCardVariants = cva("group/purchase-option-card relative flex w-full min-w-0 flex-col gap-3.5 rounded-2xl border bg-surface-overlay px-6 py-5 shadow-1 transition-[background-color,border-color,box-shadow]", {
8
+ variants: {
9
+ selected: {
10
+ true: "border-line-focus bg-surface-brand-subtle inset-ring-1 inset-ring-line-focus",
11
+ false: "border-line-subtle hover:border-line hover:shadow-2"
12
+ },
13
+ disabled: {
14
+ true: "border-line-subtle bg-surface shadow-none hover:border-line-subtle hover:shadow-none",
15
+ false: ""
16
+ }
17
+ },
18
+ compoundVariants: [{
19
+ selected: true,
20
+ disabled: true,
21
+ class: "border-line-subtle bg-surface shadow-none inset-ring-0 hover:border-line-subtle hover:shadow-none"
22
+ }],
23
+ defaultVariants: {
24
+ selected: false,
25
+ disabled: false
26
+ }
27
+ });
28
+ /**
29
+ * Root surface for a single purchase / mortgage option. Composable — assemble
30
+ * it from the header, grid, and footer parts so the actions can vary per use.
31
+ *
32
+ * `disabled` is propagated to descendants via a `data-disabled` group flag, so
33
+ * the header/grid text mutes automatically. Footer buttons are supplied by the
34
+ * consumer, so pass `disabled` to them too.
35
+ *
36
+ * <PurchaseOptionCard>
37
+ * <PurchaseOptionCardHeader>
38
+ * <PurchaseOptionCardMeta>
39
+ * <PurchaseOptionCardLabel>Mortgage Plan</PurchaseOptionCardLabel>
40
+ * <Badge variant="default" border={false} shape="round" size="sm">
41
+ * 20% Interest Rate
42
+ * </Badge>
43
+ * </PurchaseOptionCardMeta>
44
+ * <div>
45
+ * <PurchaseOptionCardAmount>₦1,200,000</PurchaseOptionCardAmount>
46
+ * <PurchaseOptionCardCadence>Per Month</PurchaseOptionCardCadence>
47
+ * </div>
48
+ * </PurchaseOptionCardHeader>
49
+ * <PurchaseOptionCardGrid>
50
+ * <PurchaseOptionCardItem label="Initial Deposit">₦5,000,000</PurchaseOptionCardItem>
51
+ * <PurchaseOptionCardItem label="Max Loan Amount">₦80,000,000</PurchaseOptionCardItem>
52
+ * <PurchaseOptionCardItem label="Max Payment Period" wide>20 Years</PurchaseOptionCardItem>
53
+ * </PurchaseOptionCardGrid>
54
+ * <PurchaseOptionCardFooter>
55
+ * <Button variant="primary-outline" size="md" className="flex-1">View Details</Button>
56
+ * <Button variant="primary" size="md" className="flex-1">Apply Now</Button>
57
+ * </PurchaseOptionCardFooter>
58
+ * </PurchaseOptionCard>
59
+ */
60
+ function PurchaseOptionCard({ className, disabled = false, render, selected = false, ...props }) {
61
+ return useRender({
62
+ defaultTagName: "article",
63
+ props: mergeProps({
64
+ "data-disabled": disabled || void 0,
65
+ className: cn(purchaseOptionCardVariants({
66
+ selected: !disabled && selected,
67
+ disabled
68
+ }), className)
69
+ }, props),
70
+ render,
71
+ state: {
72
+ disabled,
73
+ selected,
74
+ slot: "purchase-option-card"
75
+ }
76
+ });
77
+ }
78
+ /**
79
+ * Top section wrapper. Stacks the meta row and the headline figure, and draws
80
+ * the divider that separates the header from the grid.
81
+ */
82
+ function PurchaseOptionCardHeader({ className, render, ...props }) {
83
+ return useRender({
84
+ defaultTagName: "div",
85
+ props: mergeProps({ className: cn("flex min-w-0 flex-col gap-3.5 border-line border-b pb-3.5", className) }, props),
86
+ render,
87
+ state: { slot: "purchase-option-card-header" }
88
+ });
89
+ }
90
+ /**
91
+ * Row inside the header that balances the plan label against the interest-rate
92
+ * badge (or any other trailing content).
93
+ */
94
+ function PurchaseOptionCardMeta({ className, render, ...props }) {
95
+ return useRender({
96
+ defaultTagName: "div",
97
+ props: mergeProps({ className: cn("flex items-start justify-between gap-4", className) }, props),
98
+ render,
99
+ state: { slot: "purchase-option-card-meta" }
100
+ });
101
+ }
102
+ /** Eyebrow label naming the plan type. */
103
+ function PurchaseOptionCardLabel({ className, render, ...props }) {
104
+ return useRender({
105
+ defaultTagName: "span",
106
+ props: mergeProps({ className: cn("text-gdt-capitalized font-semibold text-fg-secondary uppercase group-data-disabled/purchase-option-card:text-fg-caption-placeholder", className) }, props),
107
+ render,
108
+ state: { slot: "purchase-option-card-label" }
109
+ });
110
+ }
111
+ /** Headline figure — the plan's payment amount. */
112
+ function PurchaseOptionCardAmount({ className, render, ...props }) {
113
+ return useRender({
114
+ defaultTagName: "h3",
115
+ props: mergeProps({ className: cn("text-gdt-h3 font-extrabold text-fg-primary group-data-disabled/purchase-option-card:text-fg-caption-placeholder", className) }, props),
116
+ render,
117
+ state: { slot: "purchase-option-card-amount" }
118
+ });
119
+ }
120
+ /** Supporting cadence line beneath the headline figure. */
121
+ function PurchaseOptionCardCadence({ className, render, ...props }) {
122
+ return useRender({
123
+ defaultTagName: "p",
124
+ props: mergeProps({ className: cn("text-gdt-sm leading-none text-fg-secondary group-data-disabled/purchase-option-card:text-fg-caption-placeholder", className) }, props),
125
+ render,
126
+ state: { slot: "purchase-option-card-cadence" }
127
+ });
128
+ }
129
+ /** Two-column grid holding the option's detail items. */
130
+ function PurchaseOptionCardGrid({ className, render, ...props }) {
131
+ return useRender({
132
+ defaultTagName: "div",
133
+ props: mergeProps({ className: cn("grid grid-cols-2 gap-x-4 gap-y-6", className) }, props),
134
+ render,
135
+ state: { slot: "purchase-option-card-grid" }
136
+ });
137
+ }
138
+ /**
139
+ * A single labelled detail cell in the grid. The value is passed as `children`,
140
+ * the caption via `label`. Use `wide` to span the full row.
141
+ */
142
+ function PurchaseOptionCardItem({ children, className, label, render, wide = false, ...props }) {
143
+ return useRender({
144
+ defaultTagName: "div",
145
+ props: mergeProps({
146
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
147
+ className: "text-gdt-sm font-semibold text-fg-primary group-data-disabled/purchase-option-card:text-fg-caption-placeholder",
148
+ children
149
+ }), /* @__PURE__ */ jsx("p", {
150
+ className: "text-gdt-xs text-fg-secondary group-data-disabled/purchase-option-card:text-fg-caption-placeholder",
151
+ children: label
152
+ })] }),
153
+ className: cn("flex flex-col gap-1", wide && "col-span-2", className)
154
+ }, props),
155
+ render,
156
+ state: {
157
+ slot: "purchase-option-card-item",
158
+ wide
159
+ }
160
+ });
161
+ }
162
+ /**
163
+ * Action row at the foot of the card. Wraps the consumer-supplied buttons and
164
+ * draws the divider above them. Give each button `className="flex-1"` to share
165
+ * the row evenly.
166
+ */
167
+ function PurchaseOptionCardFooter({ className, render, ...props }) {
168
+ return useRender({
169
+ defaultTagName: "div",
170
+ props: mergeProps({ className: cn("flex items-center gap-3 border-line border-t pt-3.5", className) }, props),
171
+ render,
172
+ state: { slot: "purchase-option-card-footer" }
173
+ });
174
+ }
175
+ //#endregion
176
+ export { PurchaseOptionCard, PurchaseOptionCardAmount, PurchaseOptionCardCadence, PurchaseOptionCardFooter, PurchaseOptionCardGrid, PurchaseOptionCardHeader, PurchaseOptionCardItem, PurchaseOptionCardLabel, PurchaseOptionCardMeta, purchaseOptionCardVariants };
@@ -1,10 +1,8 @@
1
- import * as React from 'react';
2
- import { RadarChart as RadarChart$1, PolarAngleAxis, PolarGrid, Radar, PolarRadiusAxis } from 'recharts';
3
- import { ChartConfig } from './chart.js';
4
- import { ComponentSize } from './size-context.js';
5
- import 'class-variance-authority/types';
6
- import 'class-variance-authority';
7
-
1
+ import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
2
+ import { ChartConfig } from "./chart.js";
3
+ import * as React from "react";
4
+ import { PolarAngleAxis, PolarGrid, PolarRadiusAxis, Radar, RadarChart as RadarChart$1 } from "recharts";
5
+ //#region src/radar-chart.d.ts
8
6
  /**
9
7
  * Radar charts are composable wrappers over the recharts polar primitives.
10
8
  * recharts 3 registers graphical items through context when they render, so —
@@ -40,25 +38,25 @@ import 'class-variance-authority';
40
38
  */
41
39
  declare const RADAR_CHART_PALETTE: readonly ["var(--color-chart-1)", "var(--color-chart-2)", "var(--color-chart-3)"];
42
40
  type RadarChartLayout = {
43
- /** Plot height in px. Width stays fluid via the ResponsiveContainer. */
44
- height: number;
45
- /** Category (angle) and value (radius) tick label font size. */
46
- tickFontSize: number;
47
- /** Series outline stroke width in px. */
48
- strokeWidth: number;
49
- /** Radius of the resting data-point dot. */
50
- dotRadius: number;
51
- /** Radius of the active (hover) dot. */
52
- activeDotRadius: number;
41
+ /** Plot height in px. Width stays fluid via the ResponsiveContainer. */
42
+ height: number;
43
+ /** Category (angle) and value (radius) tick label font size. */
44
+ tickFontSize: number;
45
+ /** Series outline stroke width in px. */
46
+ strokeWidth: number;
47
+ /** Radius of the resting data-point dot. */
48
+ dotRadius: number;
49
+ /** Radius of the active (hover) dot. */
50
+ activeDotRadius: number;
53
51
  };
54
52
  declare const RADAR_CHART_LAYOUT: Record<ComponentSize, RadarChartLayout>;
55
53
  type RadarChartProps = Omit<React.ComponentProps<typeof RadarChart$1>, "width" | "height"> & {
56
- /** Series labels/icons for the shared tooltip and legend (see `ChartConfig`). */
57
- config?: ChartConfig;
58
- /** Plot scale; inherited from the nearest `SizeProvider` when omitted. */
59
- size?: ComponentSize;
60
- /** Applied to the responsive plot box, e.g. to override its height. */
61
- className?: string;
54
+ /** Series labels/icons for the shared tooltip and legend (see `ChartConfig`). */
55
+ config?: ChartConfig;
56
+ /** Plot scale; inherited from the nearest `SizeProvider` when omitted. */
57
+ size?: ComponentSize;
58
+ /** Applied to the responsive plot box, e.g. to override its height. */
59
+ className?: string;
62
60
  };
63
61
  /**
64
62
  * Plot root — wraps the shared `ChartContainer` (tooltip/legend theming,
@@ -80,7 +78,7 @@ declare function RadarChartGrid(props: React.ComponentProps<typeof PolarGrid>):
80
78
  * replaces the default styling entirely.
81
79
  */
82
80
  declare function RadarChartAngleAxis({ size, tick, ...props }: React.ComponentProps<typeof PolarAngleAxis> & {
83
- size?: ComponentSize;
81
+ size?: ComponentSize;
84
82
  }): React.JSX.Element;
85
83
  /**
86
84
  * Value scale along one spoke — recharts `PolarRadiusAxis`, muted and
@@ -90,13 +88,13 @@ declare function RadarChartAngleAxis({ size, tick, ...props }: React.ComponentPr
90
88
  * scale between two spokes with `angle`.
91
89
  */
92
90
  declare function RadarChartValueAxis({ size, tick, ...props }: React.ComponentProps<typeof PolarRadiusAxis> & {
93
- size?: ComponentSize;
91
+ size?: ComponentSize;
94
92
  }): React.JSX.Element;
95
93
  type RadarChartSeriesProps = React.ComponentProps<typeof Radar> & {
96
- /** Series colour for the outline, wash, and dots. Defaults to brand. */
97
- color?: string;
98
- /** Explicit mark scale; otherwise inherited from the chart's `size`. */
99
- size?: ComponentSize;
94
+ /** Series colour for the outline, wash, and dots. Defaults to brand. */
95
+ color?: string;
96
+ /** Explicit mark scale; otherwise inherited from the chart's `size`. */
97
+ size?: ComponentSize;
100
98
  };
101
99
  /**
102
100
  * One data series — recharts `Radar` with the giddaa mark spec: a 2px outline,
@@ -106,5 +104,5 @@ type RadarChartSeriesProps = React.ComponentProps<typeof Radar> & {
106
104
  * `stroke`/`fill`/`dot` still win when passed directly.
107
105
  */
108
106
  declare function RadarChartSeries({ color, size, dot, activeDot, ...props }: RadarChartSeriesProps): React.JSX.Element;
109
-
110
- export { RADAR_CHART_LAYOUT, RADAR_CHART_PALETTE, RadarChart, RadarChartAngleAxis, RadarChartGrid, type RadarChartLayout, type RadarChartProps, RadarChartSeries, type RadarChartSeriesProps, RadarChartValueAxis };
107
+ //#endregion
108
+ export { RADAR_CHART_LAYOUT, RADAR_CHART_PALETTE, RadarChart, RadarChartAngleAxis, RadarChartGrid, type RadarChartLayout, type RadarChartProps, RadarChartSeries, type RadarChartSeriesProps, RadarChartValueAxis };
@@ -1,147 +1,172 @@
1
1
  "use client";
2
- import {
3
- ChartContainer
4
- } from "./chunk-NOFXVRWL.js";
5
- import {
6
- SizeProvider,
7
- useComponentSize
8
- } from "./chunk-HL3ZSYES.js";
9
- import {
10
- cn
11
- } from "./chunk-Y4TTYVNE.js";
12
-
13
- // src/radar-chart.tsx
14
- import {
15
- PolarAngleAxis,
16
- PolarGrid,
17
- PolarRadiusAxis,
18
- Radar,
19
- RadarChart as RadarChartPrimitive
20
- } from "recharts";
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { SizeProvider, useComponentSize } from "./size-context.js";
4
+ import { ChartContainer } from "./chart.js";
21
5
  import { jsx } from "react/jsx-runtime";
22
- var RADAR_CHART_PALETTE = [
23
- "var(--color-chart-1)",
24
- "var(--color-chart-2)",
25
- "var(--color-chart-3)"
6
+ import { PolarAngleAxis, PolarGrid, PolarRadiusAxis, Radar, RadarChart as RadarChart$1 } from "recharts";
7
+ //#region src/radar-chart.tsx
8
+ /**
9
+ * Radar charts are composable wrappers over the recharts polar primitives.
10
+ * recharts 3 registers graphical items through context when they render, so —
11
+ * unlike the recharts 2 era that shaped `bar-chart`/`line-chart` — the
12
+ * primitives CAN be wrapped in our own components. Each wrapper bakes in the
13
+ * giddaa defaults (tokens, size-scaled type, mark specs) and forwards every
14
+ * recharts prop, so anything can be overridden in place or replaced with the
15
+ * raw recharts element.
16
+ *
17
+ * Anatomy: `RadarChart` is the plot root (frame + responsive box + recharts
18
+ * chart); compose the grid, axes, series, and the shared overlays from
19
+ * `./chart` as children:
20
+ *
21
+ * @example
22
+ * <ChartCard size="md">
23
+ * <ChartHeader>
24
+ * <ChartTitle>Listing scorecard</ChartTitle>
25
+ * <ChartDescription>How this listing scores per criterion</ChartDescription>
26
+ * </ChartHeader>
27
+ * <RadarChart config={config} data={data}>
28
+ * <RadarChartGrid />
29
+ * <RadarChartAngleAxis dataKey="criterion" />
30
+ * <ChartTooltip content={<ChartTooltipContent />} />
31
+ * <RadarChartSeries dataKey="score" name="This listing" />
32
+ * </RadarChart>
33
+ * </ChartCard>
34
+ */
35
+ /**
36
+ * Categorical series palette — the theme-aware `chart-1`…`chart-3` tokens
37
+ * (each theme's steps are validated against that theme's chart surface; see
38
+ * `styles/giddaa.css`). Assign colours in this fixed order, never cycled: a
39
+ * fourth series folds into "Other" or becomes a second chart.
40
+ */
41
+ const RADAR_CHART_PALETTE = [
42
+ "var(--color-chart-1)",
43
+ "var(--color-chart-2)",
44
+ "var(--color-chart-3)"
26
45
  ];
27
- var DEFAULT_SERIES_COLOR = RADAR_CHART_PALETTE[0];
28
- var RADAR_CHART_LAYOUT = {
29
- sm: {
30
- height: 180,
31
- tickFontSize: 10,
32
- strokeWidth: 2,
33
- dotRadius: 2.5,
34
- activeDotRadius: 4
35
- },
36
- md: {
37
- height: 240,
38
- tickFontSize: 11,
39
- strokeWidth: 2,
40
- dotRadius: 3,
41
- activeDotRadius: 4.5
42
- },
43
- lg: {
44
- height: 300,
45
- tickFontSize: 12,
46
- strokeWidth: 2,
47
- dotRadius: 3.5,
48
- activeDotRadius: 5
49
- }
46
+ const DEFAULT_SERIES_COLOR = RADAR_CHART_PALETTE[0];
47
+ const RADAR_CHART_LAYOUT = {
48
+ sm: {
49
+ height: 180,
50
+ tickFontSize: 10,
51
+ strokeWidth: 2,
52
+ dotRadius: 2.5,
53
+ activeDotRadius: 4
54
+ },
55
+ md: {
56
+ height: 240,
57
+ tickFontSize: 11,
58
+ strokeWidth: 2,
59
+ dotRadius: 3,
60
+ activeDotRadius: 4.5
61
+ },
62
+ lg: {
63
+ height: 300,
64
+ tickFontSize: 12,
65
+ strokeWidth: 2,
66
+ dotRadius: 3.5,
67
+ activeDotRadius: 5
68
+ }
50
69
  };
51
- function RadarChart({
52
- config = {},
53
- size,
54
- className,
55
- children,
56
- ...props
57
- }) {
58
- const resolvedSize = useComponentSize(size);
59
- const layout = RADAR_CHART_LAYOUT[resolvedSize];
60
- return /* @__PURE__ */ jsx(SizeProvider, { size: resolvedSize, children: /* @__PURE__ */ jsx(
61
- ChartContainer,
62
- {
63
- config,
64
- className: cn("aspect-auto w-full", className),
65
- style: { height: layout.height },
66
- children: /* @__PURE__ */ jsx(RadarChartPrimitive, { accessibilityLayer: true, ...props, children })
67
- }
68
- ) });
70
+ /**
71
+ * Plot root — wraps the shared `ChartContainer` (tooltip/legend theming,
72
+ * responsive box) around the recharts `RadarChart` with a size-scaled height.
73
+ * `size` also flows to the child primitives through `SizeProvider`. Extra
74
+ * props reach the recharts chart (`outerRadius`, `startAngle`, `margin`, …).
75
+ */
76
+ function RadarChart({ config = {}, size, className, children, ...props }) {
77
+ const resolvedSize = useComponentSize(size);
78
+ const layout = RADAR_CHART_LAYOUT[resolvedSize];
79
+ return /* @__PURE__ */ jsx(SizeProvider, {
80
+ size: resolvedSize,
81
+ children: /* @__PURE__ */ jsx(ChartContainer, {
82
+ config,
83
+ className: cn("aspect-auto w-full", className),
84
+ style: { height: layout.height },
85
+ children: /* @__PURE__ */ jsx(RadarChart$1, {
86
+ accessibilityLayer: true,
87
+ ...props,
88
+ children
89
+ })
90
+ })
91
+ });
69
92
  }
93
+ /**
94
+ * Polygon web behind the series — recharts `PolarGrid` on the recessive
95
+ * `line` token (`line-subtle` matches the ChartCard surface in both themes,
96
+ * so it would vanish). Pass `gridType="circle"` for rings or
97
+ * `radialLines={false}` to keep only the concentric outlines.
98
+ */
70
99
  function RadarChartGrid(props) {
71
- return /* @__PURE__ */ jsx(PolarGrid, { stroke: "var(--color-line)", ...props });
100
+ return /* @__PURE__ */ jsx(PolarGrid, {
101
+ stroke: "var(--color-line)",
102
+ ...props
103
+ });
72
104
  }
73
- function RadarChartAngleAxis({
74
- size,
75
- tick,
76
- ...props
77
- }) {
78
- const layout = RADAR_CHART_LAYOUT[useComponentSize(size)];
79
- const defaultTick = {
80
- fontSize: layout.tickFontSize,
81
- fill: "var(--color-fg-secondary)"
82
- };
83
- return /* @__PURE__ */ jsx(PolarAngleAxis, { tickLine: false, tick: tick ?? defaultTick, ...props });
105
+ /**
106
+ * Category labels around the rim — recharts `PolarAngleAxis` with no tick
107
+ * lines and size-scaled secondary-ink labels. Passing your own `tick`
108
+ * replaces the default styling entirely.
109
+ */
110
+ function RadarChartAngleAxis({ size, tick, ...props }) {
111
+ const defaultTick = {
112
+ fontSize: RADAR_CHART_LAYOUT[useComponentSize(size)].tickFontSize,
113
+ fill: "var(--color-fg-secondary)"
114
+ };
115
+ return /* @__PURE__ */ jsx(PolarAngleAxis, {
116
+ tickLine: false,
117
+ tick: tick ?? defaultTick,
118
+ ...props
119
+ });
84
120
  }
85
- function RadarChartValueAxis({
86
- size,
87
- tick,
88
- ...props
89
- }) {
90
- const layout = RADAR_CHART_LAYOUT[useComponentSize(size)];
91
- const defaultTick = {
92
- fontSize: layout.tickFontSize,
93
- fill: "var(--color-fg-caption-placeholder)"
94
- };
95
- return /* @__PURE__ */ jsx(
96
- PolarRadiusAxis,
97
- {
98
- axisLine: false,
99
- tickLine: false,
100
- tick: tick ?? defaultTick,
101
- ...props
102
- }
103
- );
121
+ /**
122
+ * Value scale along one spoke — recharts `PolarRadiusAxis`, muted and
123
+ * line-free. Radars are usually read comparatively, so this is opt-in;
124
+ * include it (often with an explicit `domain={[0, max]}`) when the absolute
125
+ * scale matters. If the tick labels collide with a category label, move the
126
+ * scale between two spokes with `angle`.
127
+ */
128
+ function RadarChartValueAxis({ size, tick, ...props }) {
129
+ const defaultTick = {
130
+ fontSize: RADAR_CHART_LAYOUT[useComponentSize(size)].tickFontSize,
131
+ fill: "var(--color-fg-caption-placeholder)"
132
+ };
133
+ return /* @__PURE__ */ jsx(PolarRadiusAxis, {
134
+ axisLine: false,
135
+ tickLine: false,
136
+ tick: tick ?? defaultTick,
137
+ ...props
138
+ });
104
139
  }
105
- function RadarChartSeries({
106
- color = DEFAULT_SERIES_COLOR,
107
- size,
108
- dot,
109
- activeDot,
110
- ...props
111
- }) {
112
- const layout = RADAR_CHART_LAYOUT[useComponentSize(size)];
113
- const defaultDot = {
114
- r: layout.dotRadius,
115
- fill: color,
116
- fillOpacity: 1,
117
- strokeWidth: 0
118
- };
119
- const defaultActiveDot = {
120
- r: layout.activeDotRadius,
121
- fill: color,
122
- stroke: "var(--color-surface-raised)",
123
- strokeWidth: 2
124
- };
125
- return /* @__PURE__ */ jsx(
126
- Radar,
127
- {
128
- stroke: color,
129
- fill: color,
130
- fillOpacity: 0.15,
131
- strokeWidth: layout.strokeWidth,
132
- dot: dot ?? defaultDot,
133
- activeDot: activeDot ?? defaultActiveDot,
134
- ...props
135
- }
136
- );
140
+ /**
141
+ * One data series — recharts `Radar` with the giddaa mark spec: a 2px outline,
142
+ * the series colour washed to 15% inside the shape (matches the line-chart
143
+ * area wash), solid resting dots, and a hover dot ringed in `surface-raised`
144
+ * so overlapping series stay separable. `color` drives all of them at once;
145
+ * `stroke`/`fill`/`dot` still win when passed directly.
146
+ */
147
+ function RadarChartSeries({ color = DEFAULT_SERIES_COLOR, size, dot, activeDot, ...props }) {
148
+ const layout = RADAR_CHART_LAYOUT[useComponentSize(size)];
149
+ const defaultDot = {
150
+ r: layout.dotRadius,
151
+ fill: color,
152
+ fillOpacity: 1,
153
+ strokeWidth: 0
154
+ };
155
+ const defaultActiveDot = {
156
+ r: layout.activeDotRadius,
157
+ fill: color,
158
+ stroke: "var(--color-surface-raised)",
159
+ strokeWidth: 2
160
+ };
161
+ return /* @__PURE__ */ jsx(Radar, {
162
+ stroke: color,
163
+ fill: color,
164
+ fillOpacity: .15,
165
+ strokeWidth: layout.strokeWidth,
166
+ dot: dot ?? defaultDot,
167
+ activeDot: activeDot ?? defaultActiveDot,
168
+ ...props
169
+ });
137
170
  }
138
- export {
139
- RADAR_CHART_LAYOUT,
140
- RADAR_CHART_PALETTE,
141
- RadarChart,
142
- RadarChartAngleAxis,
143
- RadarChartGrid,
144
- RadarChartSeries,
145
- RadarChartValueAxis
146
- };
147
- //# sourceMappingURL=radar-chart.js.map
171
+ //#endregion
172
+ export { RADAR_CHART_LAYOUT, RADAR_CHART_PALETTE, RadarChart, RadarChartAngleAxis, RadarChartGrid, RadarChartSeries, RadarChartValueAxis };
@@ -1,16 +1,14 @@
1
- import * as class_variance_authority_types from 'class-variance-authority/types';
2
- import * as React from 'react';
3
- import { Radio } from '@base-ui/react/radio';
4
- import { RadioGroup as RadioGroup$1 } from '@base-ui/react/radio-group';
5
- import { VariantProps } from 'class-variance-authority';
6
-
7
- declare function RadioGroup({ className, ...props }: RadioGroup$1.Props): React.JSX.Element;
1
+ import { VariantProps } from "class-variance-authority";
2
+ import { Radio } from "@base-ui/react/radio";
3
+ import { RadioGroup as RadioGroup$1 } from "@base-ui/react/radio-group";
4
+ //#region src/radio-group.d.ts
5
+ declare function RadioGroup({ className, ...props }: RadioGroup$1.Props): import("react").JSX.Element;
8
6
  declare const radioVariants: (props?: ({
9
- size?: "sm" | "md" | "lg" | null | undefined;
10
- } & class_variance_authority_types.ClassProp) | undefined) => string;
7
+ size?: "lg" | "md" | "sm" | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
9
  type RadioGroupItemSize = NonNullable<VariantProps<typeof radioVariants>["size"]>;
12
10
  type RadioGroupItemProps<Value = unknown> = Radio.Root.Props<Value> & {
13
- size?: RadioGroupItemSize;
11
+ size?: RadioGroupItemSize;
14
12
  };
15
13
  /**
16
14
  * Compose each radio item with the shared field primitives.
@@ -27,6 +25,6 @@ type RadioGroupItemProps<Value = unknown> = Radio.Root.Props<Value> & {
27
25
  * </RadioGroup>
28
26
  * ```
29
27
  */
30
- declare function RadioGroupItem<Value = unknown>({ className, size, ...props }: RadioGroupItemProps<Value>): React.JSX.Element;
31
-
32
- export { RadioGroup, RadioGroupItem, radioVariants };
28
+ declare function RadioGroupItem<Value = unknown>({ className, size, ...props }: RadioGroupItemProps<Value>): import("react").JSX.Element;
29
+ //#endregion
30
+ export { RadioGroup, RadioGroupItem, radioVariants };