@giddaa-housing/ui 1.0.0 → 1.1.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 (326) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/dist/accordion.d.ts +9 -10
  3. package/dist/accordion.js +41 -87
  4. package/dist/activity-timeline.d.ts +12 -16
  5. package/dist/activity-timeline.js +83 -198
  6. package/dist/alert.d.ts +8 -9
  7. package/dist/alert.js +53 -111
  8. package/dist/auth-layout.d.ts +4 -4
  9. package/dist/auth-layout.js +143 -294
  10. package/dist/avatar.d.ts +6 -6
  11. package/dist/avatar.js +49 -19
  12. package/dist/badge.d.ts +12 -14
  13. package/dist/badge.js +71 -11
  14. package/dist/bar-chart.d.ts +65 -67
  15. package/dist/bar-chart.js +232 -207
  16. package/dist/breadcrumb.d.ts +5 -5
  17. package/dist/breadcrumb.js +56 -118
  18. package/dist/bullet-chart.d.ts +33 -33
  19. package/dist/bullet-chart.js +121 -148
  20. package/dist/button-BZIeyUw6.d.ts +17 -0
  21. package/dist/button-group.d.ts +13 -16
  22. package/dist/button-group.js +39 -88
  23. package/dist/button.d.ts +2 -19
  24. package/dist/button.js +94 -13
  25. package/dist/calendar.d.ts +6 -6
  26. package/dist/calendar.js +138 -17
  27. package/dist/card.d.ts +14 -16
  28. package/dist/card.js +59 -145
  29. package/dist/carousel.d.ts +34 -35
  30. package/dist/carousel.js +335 -20
  31. package/dist/chart.d.ts +58 -59
  32. package/dist/chart.js +376 -28
  33. package/dist/checkbox.d.ts +10 -12
  34. package/dist/checkbox.js +82 -47
  35. package/dist/cn-BI_4DMBf.js +23 -0
  36. package/dist/collapsible.d.ts +7 -8
  37. package/dist/collapsible.js +22 -47
  38. package/dist/combobox.d.ts +10 -10
  39. package/dist/combobox.js +236 -44
  40. package/dist/cta.d.ts +12 -14
  41. package/dist/cta.js +175 -341
  42. package/dist/currency-selector.d.ts +31 -32
  43. package/dist/currency-selector.js +106 -184
  44. package/dist/data-table.d.ts +164 -0
  45. package/dist/data-table.js +673 -0
  46. package/dist/date-picker.d.ts +22 -23
  47. package/dist/date-picker.js +119 -192
  48. package/dist/details-card.d.ts +7 -7
  49. package/dist/details-card.js +104 -253
  50. package/dist/dialog.d.ts +13 -14
  51. package/dist/dialog.js +116 -209
  52. package/dist/dropdown-menu.d.ts +13 -13
  53. package/dist/dropdown-menu.js +180 -37
  54. package/dist/dropzone.d.ts +55 -55
  55. package/dist/dropzone.js +327 -439
  56. package/dist/editorial-card.d.ts +23 -25
  57. package/dist/editorial-card.js +129 -296
  58. package/dist/empty-state.d.ts +8 -9
  59. package/dist/empty-state.js +48 -105
  60. package/dist/field.d.ts +23 -25
  61. package/dist/field.js +110 -221
  62. package/dist/filter.d.ts +118 -0
  63. package/dist/filter.js +775 -0
  64. package/dist/footer.d.ts +8 -15
  65. package/dist/footer.js +197 -400
  66. package/dist/funnel-chart.d.ts +38 -41
  67. package/dist/funnel-chart.js +167 -189
  68. package/dist/gallery-indicator.d.ts +11 -12
  69. package/dist/gallery-indicator.js +75 -12
  70. package/dist/heatmap-chart.d.ts +47 -50
  71. package/dist/heatmap-chart.js +186 -237
  72. package/dist/infotip.d.ts +8 -9
  73. package/dist/infotip.js +33 -59
  74. package/dist/input-CfoEJ8A6.d.ts +12 -0
  75. package/dist/input-group.d.ts +16 -20
  76. package/dist/input-group.js +99 -23
  77. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  78. package/dist/input-size-context.d.ts +2 -11
  79. package/dist/input-size-context.js +17 -9
  80. package/dist/input.d.ts +2 -13
  81. package/dist/input.js +27 -11
  82. package/dist/item.d.ts +7 -8
  83. package/dist/item.js +22 -59
  84. package/dist/kpi-card.d.ts +18 -20
  85. package/dist/kpi-card.js +84 -192
  86. package/dist/label.d.ts +6 -6
  87. package/dist/label.js +40 -8
  88. package/dist/line-chart.d.ts +88 -89
  89. package/dist/line-chart.js +142 -104
  90. package/dist/logo.d.ts +4 -4
  91. package/dist/logo.js +92 -9
  92. package/dist/map-indicator.d.ts +7 -7
  93. package/dist/map-indicator.js +80 -106
  94. package/dist/match.d.ts +10 -11
  95. package/dist/match.js +62 -107
  96. package/dist/media-gallery-hero.d.ts +40 -42
  97. package/dist/media-gallery-hero.js +182 -343
  98. package/dist/media-player.d.ts +17 -17
  99. package/dist/media-player.js +873 -1348
  100. package/dist/multi-step-form.d.ts +56 -0
  101. package/dist/multi-step-form.js +342 -0
  102. package/dist/number-input.d.ts +34 -34
  103. package/dist/number-input.js +61 -117
  104. package/dist/page-header.d.ts +10 -11
  105. package/dist/page-header.js +34 -79
  106. package/dist/pagination.d.ts +17 -21
  107. package/dist/pagination.js +132 -207
  108. package/dist/password-input.d.ts +5 -13
  109. package/dist/password-input.js +31 -55
  110. package/dist/phone-input.d.ts +19 -20
  111. package/dist/phone-input.js +226 -344
  112. package/dist/photo-gallery.d.ts +19 -19
  113. package/dist/photo-gallery.js +313 -449
  114. package/dist/picker-lzgmsNfG.js +32 -0
  115. package/dist/pie-chart.d.ts +60 -60
  116. package/dist/pie-chart.js +140 -148
  117. package/dist/popover.d.ts +9 -9
  118. package/dist/popover.js +72 -23
  119. package/dist/price-tag.d.ts +26 -27
  120. package/dist/price-tag.js +113 -173
  121. package/dist/progress.d.ts +16 -17
  122. package/dist/progress.js +169 -24
  123. package/dist/property-listing-card.d.ts +14 -17
  124. package/dist/property-listing-card.js +102 -220
  125. package/dist/radar-chart.d.ts +29 -31
  126. package/dist/radar-chart.js +162 -137
  127. package/dist/radio-group.d.ts +11 -13
  128. package/dist/radio-group.js +46 -60
  129. package/dist/review-block.d.ts +14 -16
  130. package/dist/review-block.js +154 -10
  131. package/dist/rich-text-editor.d.ts +30 -14
  132. package/dist/rich-text-editor.js +592 -716
  133. package/dist/scatter-chart.d.ts +45 -47
  134. package/dist/scatter-chart.js +236 -240
  135. package/dist/search-input.d.ts +8 -16
  136. package/dist/search-input.js +57 -109
  137. package/dist/select.d.ts +8 -8
  138. package/dist/select.js +144 -27
  139. package/dist/separator.d.ts +8 -9
  140. package/dist/separator.js +32 -8
  141. package/dist/sheet.d.ts +11 -11
  142. package/dist/sheet.js +103 -24
  143. package/dist/sidebar.d.ts +32 -37
  144. package/dist/sidebar.js +364 -634
  145. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  146. package/dist/size-context.d.ts +2 -11
  147. package/dist/size-context.js +17 -9
  148. package/dist/skeleton.d.ts +4 -5
  149. package/dist/skeleton.js +12 -8
  150. package/dist/slider.d.ts +8 -9
  151. package/dist/slider.js +64 -135
  152. package/dist/sparkline.d.ts +43 -46
  153. package/dist/sparkline.js +221 -251
  154. package/dist/stepper.d.ts +23 -24
  155. package/dist/stepper.js +149 -246
  156. package/dist/styles.css +510 -108
  157. package/dist/switch.d.ts +10 -12
  158. package/dist/switch.js +48 -70
  159. package/dist/table-card.d.ts +35 -0
  160. package/dist/table-card.js +125 -0
  161. package/dist/table.d.ts +18 -14
  162. package/dist/table.js +113 -154
  163. package/dist/tabs.d.ts +23 -15
  164. package/dist/tabs.js +71 -18
  165. package/dist/tag.d.ts +21 -23
  166. package/dist/tag.js +103 -159
  167. package/dist/testimonial-block.d.ts +18 -19
  168. package/dist/testimonial-block.js +189 -358
  169. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  170. package/dist/textarea.d.ts +2 -12
  171. package/dist/textarea.js +24 -11
  172. package/dist/time-picker.d.ts +11 -11
  173. package/dist/time-picker.js +245 -302
  174. package/dist/toast.d.ts +16 -18
  175. package/dist/toast.js +154 -205
  176. package/dist/tooltip.d.ts +8 -9
  177. package/dist/tooltip.js +37 -12
  178. package/dist/tree-map.d.ts +54 -57
  179. package/dist/tree-map.js +227 -269
  180. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  181. package/dist/waterfall-chart.d.ts +94 -97
  182. package/dist/waterfall-chart.js +455 -552
  183. package/package.json +28 -9
  184. package/dist/accordion.js.map +0 -1
  185. package/dist/activity-timeline.js.map +0 -1
  186. package/dist/alert.js.map +0 -1
  187. package/dist/auth-layout.js.map +0 -1
  188. package/dist/avatar.js.map +0 -1
  189. package/dist/badge.js.map +0 -1
  190. package/dist/bar-chart.js.map +0 -1
  191. package/dist/breadcrumb.js.map +0 -1
  192. package/dist/bullet-chart.js.map +0 -1
  193. package/dist/button-group.js.map +0 -1
  194. package/dist/button.js.map +0 -1
  195. package/dist/calendar.js.map +0 -1
  196. package/dist/card.js.map +0 -1
  197. package/dist/carousel.js.map +0 -1
  198. package/dist/chart.js.map +0 -1
  199. package/dist/checkbox.js.map +0 -1
  200. package/dist/chunk-322YCNVL.js +0 -278
  201. package/dist/chunk-322YCNVL.js.map +0 -1
  202. package/dist/chunk-3ACQVT7A.js +0 -25
  203. package/dist/chunk-3ACQVT7A.js.map +0 -1
  204. package/dist/chunk-3T65TLJX.js +0 -334
  205. package/dist/chunk-3T65TLJX.js.map +0 -1
  206. package/dist/chunk-6ZSGQHH2.js +0 -192
  207. package/dist/chunk-6ZSGQHH2.js.map +0 -1
  208. package/dist/chunk-7TBMLFGW.js +0 -41
  209. package/dist/chunk-7TBMLFGW.js.map +0 -1
  210. package/dist/chunk-B4H6RNDH.js +0 -135
  211. package/dist/chunk-B4H6RNDH.js.map +0 -1
  212. package/dist/chunk-BUXCGZ6X.js +0 -219
  213. package/dist/chunk-BUXCGZ6X.js.map +0 -1
  214. package/dist/chunk-CHII2QHH.js +0 -58
  215. package/dist/chunk-CHII2QHH.js.map +0 -1
  216. package/dist/chunk-DMNOXRRW.js +0 -147
  217. package/dist/chunk-DMNOXRRW.js.map +0 -1
  218. package/dist/chunk-EFSOSSIC.js +0 -130
  219. package/dist/chunk-EFSOSSIC.js.map +0 -1
  220. package/dist/chunk-FZDSVMKY.js +0 -363
  221. package/dist/chunk-FZDSVMKY.js.map +0 -1
  222. package/dist/chunk-GJOFIJS3.js +0 -246
  223. package/dist/chunk-GJOFIJS3.js.map +0 -1
  224. package/dist/chunk-HL3ZSYES.js +0 -23
  225. package/dist/chunk-HL3ZSYES.js.map +0 -1
  226. package/dist/chunk-JVLUBAPB.js +0 -129
  227. package/dist/chunk-JVLUBAPB.js.map +0 -1
  228. package/dist/chunk-KDPYSOYZ.js +0 -64
  229. package/dist/chunk-KDPYSOYZ.js.map +0 -1
  230. package/dist/chunk-KSMDANKI.js +0 -43
  231. package/dist/chunk-KSMDANKI.js.map +0 -1
  232. package/dist/chunk-MEKCCOP5.js +0 -46
  233. package/dist/chunk-MEKCCOP5.js.map +0 -1
  234. package/dist/chunk-NOFXVRWL.js +0 -451
  235. package/dist/chunk-NOFXVRWL.js.map +0 -1
  236. package/dist/chunk-PC5MHNVA.js +0 -171
  237. package/dist/chunk-PC5MHNVA.js.map +0 -1
  238. package/dist/chunk-QKAQZ2GU.js +0 -122
  239. package/dist/chunk-QKAQZ2GU.js.map +0 -1
  240. package/dist/chunk-QZHSHSVV.js +0 -26
  241. package/dist/chunk-QZHSHSVV.js.map +0 -1
  242. package/dist/chunk-RBMK26XD.js +0 -19
  243. package/dist/chunk-RBMK26XD.js.map +0 -1
  244. package/dist/chunk-SFNJGF6M.js +0 -262
  245. package/dist/chunk-SFNJGF6M.js.map +0 -1
  246. package/dist/chunk-UJJNLGTM.js +0 -112
  247. package/dist/chunk-UJJNLGTM.js.map +0 -1
  248. package/dist/chunk-VGR4ZWJ3.js +0 -418
  249. package/dist/chunk-VGR4ZWJ3.js.map +0 -1
  250. package/dist/chunk-XG47P6D4.js +0 -99
  251. package/dist/chunk-XG47P6D4.js.map +0 -1
  252. package/dist/chunk-XZZAHNVM.js +0 -21
  253. package/dist/chunk-XZZAHNVM.js.map +0 -1
  254. package/dist/chunk-Y4TTYVNE.js +0 -36
  255. package/dist/chunk-Y4TTYVNE.js.map +0 -1
  256. package/dist/chunk-YDWIHW6Q.js +0 -69
  257. package/dist/chunk-YDWIHW6Q.js.map +0 -1
  258. package/dist/collapsible.js.map +0 -1
  259. package/dist/combobox.js.map +0 -1
  260. package/dist/cta.js.map +0 -1
  261. package/dist/currency-selector.js.map +0 -1
  262. package/dist/date-picker.js.map +0 -1
  263. package/dist/details-card.js.map +0 -1
  264. package/dist/dialog.js.map +0 -1
  265. package/dist/dropdown-menu.js.map +0 -1
  266. package/dist/dropzone.js.map +0 -1
  267. package/dist/editorial-card.js.map +0 -1
  268. package/dist/empty-state.js.map +0 -1
  269. package/dist/field.js.map +0 -1
  270. package/dist/footer.js.map +0 -1
  271. package/dist/funnel-chart.js.map +0 -1
  272. package/dist/gallery-indicator.js.map +0 -1
  273. package/dist/heatmap-chart.js.map +0 -1
  274. package/dist/infotip.js.map +0 -1
  275. package/dist/input-group.js.map +0 -1
  276. package/dist/input-size-context.js.map +0 -1
  277. package/dist/input.js.map +0 -1
  278. package/dist/item.js.map +0 -1
  279. package/dist/kpi-card.js.map +0 -1
  280. package/dist/label.js.map +0 -1
  281. package/dist/line-chart.js.map +0 -1
  282. package/dist/logo.js.map +0 -1
  283. package/dist/map-indicator.js.map +0 -1
  284. package/dist/match.js.map +0 -1
  285. package/dist/media-gallery-hero.js.map +0 -1
  286. package/dist/media-player.js.map +0 -1
  287. package/dist/number-input.js.map +0 -1
  288. package/dist/page-header.js.map +0 -1
  289. package/dist/pagination.js.map +0 -1
  290. package/dist/password-input.js.map +0 -1
  291. package/dist/phone-input.js.map +0 -1
  292. package/dist/photo-gallery.js.map +0 -1
  293. package/dist/pie-chart.js.map +0 -1
  294. package/dist/popover.js.map +0 -1
  295. package/dist/price-tag.js.map +0 -1
  296. package/dist/progress.js.map +0 -1
  297. package/dist/property-listing-card.js.map +0 -1
  298. package/dist/radar-chart.js.map +0 -1
  299. package/dist/radio-group.js.map +0 -1
  300. package/dist/review-block.js.map +0 -1
  301. package/dist/rich-text-editor.js.map +0 -1
  302. package/dist/scatter-chart.js.map +0 -1
  303. package/dist/search-input.js.map +0 -1
  304. package/dist/select.js.map +0 -1
  305. package/dist/separator.js.map +0 -1
  306. package/dist/sheet.js.map +0 -1
  307. package/dist/sidebar.js.map +0 -1
  308. package/dist/size-context.js.map +0 -1
  309. package/dist/skeleton.js.map +0 -1
  310. package/dist/slider.js.map +0 -1
  311. package/dist/sparkline.js.map +0 -1
  312. package/dist/stepper.js.map +0 -1
  313. package/dist/switch.js.map +0 -1
  314. package/dist/tab-list.d.ts +0 -38
  315. package/dist/tab-list.js +0 -123
  316. package/dist/tab-list.js.map +0 -1
  317. package/dist/table.js.map +0 -1
  318. package/dist/tabs.js.map +0 -1
  319. package/dist/tag.js.map +0 -1
  320. package/dist/testimonial-block.js.map +0 -1
  321. package/dist/textarea.js.map +0 -1
  322. package/dist/time-picker.js.map +0 -1
  323. package/dist/toast.js.map +0 -1
  324. package/dist/tooltip.js.map +0 -1
  325. package/dist/tree-map.js.map +0 -1
  326. package/dist/waterfall-chart.js.map +0 -1
@@ -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 };
@@ -1,65 +1,51 @@
1
1
  "use client";
2
- import {
3
- useComponentSize
4
- } from "./chunk-HL3ZSYES.js";
5
- import {
6
- cn
7
- } from "./chunk-Y4TTYVNE.js";
8
-
9
- // src/radio-group.tsx
10
- import { Radio as RadioPrimitive } from "@base-ui/react/radio";
11
- import { RadioGroup as RadioGroupPrimitive } from "@base-ui/react/radio-group";
12
- import { cva } from "class-variance-authority";
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { useComponentSize } from "./size-context.js";
13
4
  import { jsx } from "react/jsx-runtime";
5
+ import { cva } from "class-variance-authority";
6
+ import { Radio } from "@base-ui/react/radio";
7
+ import { RadioGroup as RadioGroup$1 } from "@base-ui/react/radio-group";
8
+ //#region src/radio-group.tsx
14
9
  function RadioGroup({ className, ...props }) {
15
- return /* @__PURE__ */ jsx(
16
- RadioGroupPrimitive,
17
- {
18
- "data-slot": "radio-group",
19
- className: cn("grid w-full gap-2", className),
20
- ...props
21
- }
22
- );
10
+ return /* @__PURE__ */ jsx(RadioGroup$1, {
11
+ "data-slot": "radio-group",
12
+ className: cn("grid w-full gap-2", className),
13
+ ...props
14
+ });
23
15
  }
24
- var radioVariants = cva(
25
- "group/radio-group-item peer relative flex aspect-square shrink-0 rounded-full border-2 bg-transparent text-transparent outline-none transition-[background-color,border-color,box-shadow,color] after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 border-line-strong data-checked:border-action-primary data-checked:text-action-primary data-disabled:cursor-not-allowed data-disabled:border-line-subtle data-disabled:bg-surface data-disabled:text-fg-caption-placeholder size-5 [--radio-dot-size:0.75rem] group-data-[size=sm]/field:size-4 group-data-[size=sm]/field:[--radio-dot-size:0.625rem] group-data-[size=md]/field:size-5 group-data-[size=md]/field:[--radio-dot-size:0.75rem] group-data-[size=lg]/field:size-6 group-data-[size=lg]/field:[--radio-dot-size:0.875rem]",
26
- {
27
- variants: {
28
- size: {
29
- sm: "size-4 [--radio-dot-size:0.625rem]",
30
- md: "size-5 [--radio-dot-size:0.75rem]",
31
- lg: "size-6 [--radio-dot-size:0.875rem]"
32
- }
33
- }
34
- }
35
- );
36
- function RadioGroupItem({
37
- className,
38
- size,
39
- ...props
40
- }) {
41
- const resolvedSize = useComponentSize(size);
42
- return /* @__PURE__ */ jsx(
43
- RadioPrimitive.Root,
44
- {
45
- "data-slot": "radio-group-item",
46
- "data-size": resolvedSize,
47
- className: cn(radioVariants({ size: resolvedSize }), className),
48
- ...props,
49
- children: /* @__PURE__ */ jsx(
50
- RadioPrimitive.Indicator,
51
- {
52
- "data-slot": "radio-group-indicator",
53
- className: "flex size-full items-center justify-center",
54
- children: /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 size-(--radio-dot-size) -translate-x-1/2 -translate-y-1/2 rounded-full bg-current" })
55
- }
56
- )
57
- }
58
- );
16
+ const radioVariants = cva("group/radio-group-item peer relative flex aspect-square shrink-0 rounded-full border-2 bg-transparent text-transparent outline-none transition-[background-color,border-color,box-shadow,color] after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 border-line-strong data-checked:border-action-primary data-checked:text-action-primary data-disabled:cursor-not-allowed data-disabled:border-line-subtle data-disabled:bg-surface data-disabled:text-fg-caption-placeholder size-5 [--radio-dot-size:0.75rem] group-data-[size=sm]/field:size-4 group-data-[size=sm]/field:[--radio-dot-size:0.625rem] group-data-[size=md]/field:size-5 group-data-[size=md]/field:[--radio-dot-size:0.75rem] group-data-[size=lg]/field:size-6 group-data-[size=lg]/field:[--radio-dot-size:0.875rem]", { variants: { size: {
17
+ sm: "size-4 [--radio-dot-size:0.625rem]",
18
+ md: "size-5 [--radio-dot-size:0.75rem]",
19
+ lg: "size-6 [--radio-dot-size:0.875rem]"
20
+ } } });
21
+ /**
22
+ * Compose each radio item with the shared field primitives.
23
+ *
24
+ * ```tsx
25
+ * <RadioGroup defaultValue="option-1">
26
+ * <Field orientation="horizontal" size="md">
27
+ * <RadioGroupItem id="option-1" value="option-1" />
28
+ * <FieldContent>
29
+ * <FieldLabel htmlFor="option-1">Radio label</FieldLabel>
30
+ * <FieldDescription>Optional helper description for context.</FieldDescription>
31
+ * </FieldContent>
32
+ * </Field>
33
+ * </RadioGroup>
34
+ * ```
35
+ */
36
+ function RadioGroupItem({ className, size, ...props }) {
37
+ const resolvedSize = useComponentSize(size);
38
+ return /* @__PURE__ */ jsx(Radio.Root, {
39
+ "data-slot": "radio-group-item",
40
+ "data-size": resolvedSize,
41
+ className: cn(radioVariants({ size: resolvedSize }), className),
42
+ ...props,
43
+ children: /* @__PURE__ */ jsx(Radio.Indicator, {
44
+ "data-slot": "radio-group-indicator",
45
+ className: "flex size-full items-center justify-center",
46
+ children: /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 size-(--radio-dot-size) -translate-x-1/2 -translate-y-1/2 rounded-full bg-current" })
47
+ })
48
+ });
59
49
  }
60
- export {
61
- RadioGroup,
62
- RadioGroupItem,
63
- radioVariants
64
- };
65
- //# sourceMappingURL=radio-group.js.map
50
+ //#endregion
51
+ export { RadioGroup, RadioGroupItem, radioVariants };
@@ -1,20 +1,18 @@
1
- import * as React from 'react';
2
- import * as class_variance_authority_types from 'class-variance-authority/types';
3
- import { useRender } from '@base-ui/react/use-render';
4
- import { VariantProps } from 'class-variance-authority';
5
-
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import { VariantProps } from "class-variance-authority";
3
+ //#region src/review-block.d.ts
6
4
  declare const reviewBlockVariants: (props?: ({
7
- size?: "sm" | "md" | "lg" | "xs" | null | undefined;
8
- bordered?: boolean | null | undefined;
9
- showReviewText?: boolean | null | undefined;
10
- } & class_variance_authority_types.ClassProp) | undefined) => string;
5
+ size?: "lg" | "md" | "sm" | "xs" | null | undefined;
6
+ bordered?: boolean | null | undefined;
7
+ showReviewText?: boolean | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
9
  type ReviewBlockSize = NonNullable<VariantProps<typeof reviewBlockVariants>["size"]>;
12
10
  type ReviewBlockProps = Omit<useRender.ComponentProps<"div">, "children"> & VariantProps<typeof reviewBlockVariants> & {
13
- rating: number;
14
- reviewCount?: number;
15
- reviewLabel?: string;
16
- ratingLabel?: string;
11
+ rating: number;
12
+ reviewCount?: number;
13
+ reviewLabel?: string;
14
+ ratingLabel?: string;
17
15
  };
18
- declare function ReviewBlock({ bordered, className, rating, ratingLabel, render, reviewCount, reviewLabel, size, showReviewText, ...props }: ReviewBlockProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
19
-
20
- export { ReviewBlock, type ReviewBlockProps, type ReviewBlockSize, reviewBlockVariants };
16
+ declare function ReviewBlock({ bordered, className, rating, ratingLabel, render, reviewCount, reviewLabel, size, showReviewText, ...props }: ReviewBlockProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
17
+ //#endregion
18
+ export { ReviewBlock, type ReviewBlockProps, type ReviewBlockSize, reviewBlockVariants };
@@ -1,10 +1,154 @@
1
- import {
2
- ReviewBlock,
3
- reviewBlockVariants
4
- } from "./chunk-BUXCGZ6X.js";
5
- import "./chunk-Y4TTYVNE.js";
6
- export {
7
- ReviewBlock,
8
- reviewBlockVariants
9
- };
10
- //# sourceMappingURL=review-block.js.map
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/review-block.tsx
7
+ const STAR_INDEXES = [
8
+ 0,
9
+ 1,
10
+ 2,
11
+ 3,
12
+ 4
13
+ ];
14
+ const reviewBlockVariants = cva("group/review-block inline-flex w-fit min-w-0 flex-col items-center justify-center rounded-full bg-canvas text-fg-primary transition-[background-color,border-color,box-shadow]", {
15
+ variants: {
16
+ size: {
17
+ xs: "gap-[2px] border px-6 py-1.5",
18
+ sm: "gap-[3px] border-[1.5px] px-10 py-1.5",
19
+ md: "gap-1 border-2 px-14 py-2",
20
+ lg: "gap-[5px] border-[2.5px] px-18 py-2.5"
21
+ },
22
+ bordered: {
23
+ true: "border-line-focus",
24
+ false: "border-transparent"
25
+ },
26
+ showReviewText: {
27
+ true: "",
28
+ false: ""
29
+ }
30
+ },
31
+ defaultVariants: {
32
+ size: "md",
33
+ bordered: true,
34
+ showReviewText: true
35
+ }
36
+ });
37
+ const reviewBlockStarsVariants = cva("inline-flex shrink-0 items-center", {
38
+ variants: { size: {
39
+ xs: "gap-1.5",
40
+ sm: "gap-2",
41
+ md: "gap-2.5",
42
+ lg: "gap-3.5"
43
+ } },
44
+ defaultVariants: { size: "md" }
45
+ });
46
+ const reviewBlockStarVariants = cva("relative inline-flex shrink-0", {
47
+ variants: { size: {
48
+ xs: "size-4",
49
+ sm: "size-6",
50
+ md: "size-9",
51
+ lg: "size-12"
52
+ } },
53
+ defaultVariants: { size: "md" }
54
+ });
55
+ const reviewBlockStarIconVariants = cva("block h-full max-w-none", {
56
+ variants: { size: {
57
+ xs: "w-4",
58
+ sm: "w-6",
59
+ md: "w-9",
60
+ lg: "w-12"
61
+ } },
62
+ defaultVariants: { size: "md" }
63
+ });
64
+ const reviewBlockTextVariants = cva("text-center font-medium text-fg-primary whitespace-nowrap", {
65
+ variants: { size: {
66
+ xs: "text-[0.75rem] leading-[1.125rem]",
67
+ sm: "text-gdt-sm",
68
+ md: "text-[1rem] leading-[1.375rem]",
69
+ lg: "text-[1.125rem] leading-[1.5rem]"
70
+ } },
71
+ defaultVariants: { size: "md" }
72
+ });
73
+ function clampRating(rating) {
74
+ if (!Number.isFinite(rating)) return 0;
75
+ return Math.min(5, Math.max(0, rating));
76
+ }
77
+ function getStarFill(index, rating) {
78
+ return Math.min(1, Math.max(0, rating - index)) * 100;
79
+ }
80
+ function formatRating(rating) {
81
+ return Number.isInteger(rating) ? rating.toString() : rating.toFixed(2).replace(/0+$/, "").replace(/\.$/, "");
82
+ }
83
+ function formatReviewText(reviewCount, reviewLabel = "Review") {
84
+ const normalizedLabel = reviewCount === 1 ? reviewLabel : `${reviewLabel}s`;
85
+ return `${reviewCount.toLocaleString()} ${normalizedLabel}`;
86
+ }
87
+ function ReviewStarIcon(props) {
88
+ return /* @__PURE__ */ jsx("svg", {
89
+ "aria-hidden": "true",
90
+ fill: "none",
91
+ focusable: "false",
92
+ viewBox: "0 0 35 33",
93
+ xmlns: "http://www.w3.org/2000/svg",
94
+ ...props,
95
+ children: /* @__PURE__ */ jsx("path", {
96
+ d: "m17.119 0 4.042 12.437h13.077l-10.58 7.688L27.7 32.562l-10.58-7.686-10.58 7.686 4.04-12.437L0 12.438h13.077L17.12 0Z",
97
+ fill: "currentColor"
98
+ })
99
+ });
100
+ }
101
+ function ReviewStar({ fillPercent, size }) {
102
+ return /* @__PURE__ */ jsxs("span", {
103
+ className: reviewBlockStarVariants({ size }),
104
+ children: [/* @__PURE__ */ jsx(ReviewStarIcon, {
105
+ "aria-hidden": "true",
106
+ className: cn("text-line-focus", reviewBlockStarIconVariants({ size }))
107
+ }), /* @__PURE__ */ jsx("span", {
108
+ "aria-hidden": "true",
109
+ className: "absolute inset-y-0 left-0 overflow-hidden text-line-focus",
110
+ style: { width: `${fillPercent}%` },
111
+ children: /* @__PURE__ */ jsx(ReviewStarIcon, { className: reviewBlockStarIconVariants({ size }) })
112
+ })]
113
+ });
114
+ }
115
+ function ReviewBlock({ bordered = true, className, rating, ratingLabel, render, reviewCount, reviewLabel, size = "md", showReviewText = true, ...props }) {
116
+ const resolvedSize = size ?? "md";
117
+ const normalizedRating = clampRating(rating);
118
+ const formattedRating = formatRating(normalizedRating);
119
+ const reviewText = showReviewText && typeof reviewCount === "number" ? formatReviewText(reviewCount, reviewLabel) : null;
120
+ return useRender({
121
+ defaultTagName: "div",
122
+ props: mergeProps({
123
+ "aria-label": ratingLabel ?? (reviewText ? `${formattedRating} out of 5 stars, ${reviewText}` : `${formattedRating} out of 5 stars`),
124
+ className: cn(reviewBlockVariants({
125
+ bordered,
126
+ size: resolvedSize,
127
+ showReviewText: Boolean(reviewText)
128
+ }), className),
129
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
130
+ "aria-hidden": "true",
131
+ className: reviewBlockStarsVariants({ size: resolvedSize }),
132
+ children: STAR_INDEXES.map((index) => /* @__PURE__ */ jsx(ReviewStar, {
133
+ fillPercent: getStarFill(index, normalizedRating),
134
+ size: resolvedSize
135
+ }, index))
136
+ }), reviewText ? /* @__PURE__ */ jsx("span", {
137
+ className: reviewBlockTextVariants({ size: resolvedSize }),
138
+ children: reviewText
139
+ }) : null] }),
140
+ role: "img"
141
+ }, props),
142
+ render,
143
+ state: {
144
+ bordered,
145
+ rating: normalizedRating,
146
+ reviewCount,
147
+ size: resolvedSize,
148
+ showReviewText: Boolean(reviewText),
149
+ slot: "review-block"
150
+ }
151
+ });
152
+ }
153
+ //#endregion
154
+ export { ReviewBlock, reviewBlockVariants };