@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
package/dist/tree-map.js CHANGED
@@ -1,279 +1,237 @@
1
1
  "use client";
2
- import {
3
- ChartCard,
4
- ChartContainer,
5
- ChartDescription,
6
- ChartHeader,
7
- ChartTitle,
8
- ChartTooltip,
9
- ChartTooltipContent
10
- } from "./chunk-NOFXVRWL.js";
11
- import {
12
- useComponentSize
13
- } from "./chunk-HL3ZSYES.js";
14
- import {
15
- cn
16
- } from "./chunk-Y4TTYVNE.js";
17
-
18
- // src/tree-map.tsx
19
- import { cva } from "class-variance-authority";
20
- import { Treemap as RechartsTreemap } from "recharts";
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { useComponentSize } from "./size-context.js";
4
+ import { ChartCard, ChartContainer, ChartDescription, ChartHeader, ChartTitle, ChartTooltip, ChartTooltipContent } from "./chart.js";
21
5
  import { jsx, jsxs } from "react/jsx-runtime";
22
- var TREE_MAP_PALETTE = [
23
- { fill: "var(--color-forest-700)", text: "var(--color-forest-100)" },
24
- { fill: "var(--color-brass-500)", text: "var(--color-brass-900)" },
25
- { fill: "var(--color-moss-600)", text: "var(--color-moss-100)" },
26
- { fill: "var(--color-clay-500)", text: "var(--color-clay-50)" },
27
- { fill: "var(--color-stone-500)", text: "var(--color-stone-50)" }
6
+ import { cva } from "class-variance-authority";
7
+ import { Treemap } from "recharts";
8
+ //#region src/tree-map.tsx
9
+ /**
10
+ * Tile palette, ordered by share: forest → brass → moss → clay → stone. Each
11
+ * entry pairs a tile `fill` with the `text` colour that reads on it (a tonal
12
+ * tint of the same scale). Giddaa has no `chart-1`…`chart-N` tokens yet, so these
13
+ * map to the brand scales; assign by order, or override per datum with `fill`.
14
+ */
15
+ const TREE_MAP_PALETTE = [
16
+ {
17
+ fill: "var(--color-forest-700)",
18
+ text: "var(--color-forest-100)"
19
+ },
20
+ {
21
+ fill: "var(--color-brass-500)",
22
+ text: "var(--color-brass-900)"
23
+ },
24
+ {
25
+ fill: "var(--color-moss-600)",
26
+ text: "var(--color-moss-100)"
27
+ },
28
+ {
29
+ fill: "var(--color-clay-500)",
30
+ text: "var(--color-clay-50)"
31
+ },
32
+ {
33
+ fill: "var(--color-stone-500)",
34
+ text: "var(--color-stone-50)"
35
+ }
28
36
  ];
29
- var TREE_MAP_LAYOUT = {
30
- sm: {
31
- height: 180,
32
- gap: 3,
33
- radius: 4,
34
- labelPadding: 8,
35
- nameFontSize: 11,
36
- shareFontSize: 10,
37
- labelMinSide: 44
38
- },
39
- md: {
40
- height: 240,
41
- gap: 4,
42
- radius: 6,
43
- labelPadding: 10,
44
- nameFontSize: 12,
45
- shareFontSize: 11,
46
- labelMinSide: 52
47
- },
48
- lg: {
49
- height: 300,
50
- gap: 5,
51
- radius: 8,
52
- labelPadding: 12,
53
- nameFontSize: 14,
54
- shareFontSize: 12,
55
- labelMinSide: 60
56
- }
37
+ const TREE_MAP_LAYOUT = {
38
+ sm: {
39
+ height: 180,
40
+ gap: 3,
41
+ radius: 4,
42
+ labelPadding: 8,
43
+ nameFontSize: 11,
44
+ shareFontSize: 10,
45
+ labelMinSide: 44
46
+ },
47
+ md: {
48
+ height: 240,
49
+ gap: 4,
50
+ radius: 6,
51
+ labelPadding: 10,
52
+ nameFontSize: 12,
53
+ shareFontSize: 11,
54
+ labelMinSide: 52
55
+ },
56
+ lg: {
57
+ height: 300,
58
+ gap: 5,
59
+ radius: 8,
60
+ labelPadding: 12,
61
+ nameFontSize: 14,
62
+ shareFontSize: 12,
63
+ labelMinSide: 60
64
+ }
57
65
  };
58
- var treeMapLegendVariants = cva("flex min-w-0", {
59
- variants: {
60
- placement: {
61
- right: "flex-col",
62
- bottom: "flex-row flex-wrap items-center"
63
- },
64
- size: {
65
- sm: "text-gdt-xs",
66
- md: "text-gdt-sm",
67
- lg: "text-gdt-sm"
68
- }
69
- },
70
- compoundVariants: [
71
- { placement: "right", size: "sm", className: "gap-2" },
72
- { placement: "right", size: "md", className: "gap-3" },
73
- { placement: "right", size: "lg", className: "gap-3.5" },
74
- { placement: "bottom", className: "gap-x-4 gap-y-2" }
75
- ],
76
- defaultVariants: { placement: "right", size: "md" }
66
+ /** Vertical legend column / value list — shared with the right-hand legend. */
67
+ const treeMapLegendVariants = cva("flex min-w-0", {
68
+ variants: {
69
+ placement: {
70
+ right: "flex-col",
71
+ bottom: "flex-row flex-wrap items-center"
72
+ },
73
+ size: {
74
+ sm: "text-gdt-xs",
75
+ md: "text-gdt-sm",
76
+ lg: "text-gdt-sm"
77
+ }
78
+ },
79
+ compoundVariants: [
80
+ {
81
+ placement: "right",
82
+ size: "sm",
83
+ className: "gap-2"
84
+ },
85
+ {
86
+ placement: "right",
87
+ size: "md",
88
+ className: "gap-3"
89
+ },
90
+ {
91
+ placement: "right",
92
+ size: "lg",
93
+ className: "gap-3.5"
94
+ },
95
+ {
96
+ placement: "bottom",
97
+ className: "gap-x-4 gap-y-2"
98
+ }
99
+ ],
100
+ defaultVariants: {
101
+ placement: "right",
102
+ size: "md"
103
+ }
77
104
  });
78
- var treeMapLegendDotVariants = cva("shrink-0 rounded-full", {
79
- variants: {
80
- size: { sm: "size-2", md: "size-2.5", lg: "size-3" }
81
- },
82
- defaultVariants: { size: "md" }
105
+ const treeMapLegendDotVariants = cva("shrink-0 rounded-full", {
106
+ variants: { size: {
107
+ sm: "size-2",
108
+ md: "size-2.5",
109
+ lg: "size-3"
110
+ } },
111
+ defaultVariants: { size: "md" }
83
112
  });
113
+ /**
114
+ * Walk the data, assigning each top-level entry a palette colour (by order) that
115
+ * its leaves inherit, and summing the leaf values into a grand total. Top-level
116
+ * entries become the legend keys: tiles in `flat`, groups in `nested`.
117
+ */
84
118
  function resolveData(data) {
85
- let total = 0;
86
- const resolve = (datum, palette) => {
87
- const fill = datum.fill ?? palette.fill;
88
- const text = palette.text;
89
- if (datum.children?.length) {
90
- return {
91
- label: datum.label,
92
- fill,
93
- text,
94
- children: datum.children.map((child) => resolve(child, { fill, text }))
95
- };
96
- }
97
- total += datum.value ?? 0;
98
- return { label: datum.label, value: datum.value, fill, text };
99
- };
100
- const resolved = data.map(
101
- (datum, i) => resolve(datum, TREE_MAP_PALETTE[i % TREE_MAP_PALETTE.length])
102
- );
103
- return { resolved, total };
119
+ let total = 0;
120
+ const resolve = (datum, palette) => {
121
+ const fill = datum.fill ?? palette.fill;
122
+ const text = palette.text;
123
+ if (datum.children?.length) return {
124
+ label: datum.label,
125
+ fill,
126
+ text,
127
+ children: datum.children.map((child) => resolve(child, {
128
+ fill,
129
+ text
130
+ }))
131
+ };
132
+ total += datum.value ?? 0;
133
+ return {
134
+ label: datum.label,
135
+ value: datum.value,
136
+ fill,
137
+ text
138
+ };
139
+ };
140
+ return {
141
+ resolved: data.map((datum, i) => resolve(datum, TREE_MAP_PALETTE[i % TREE_MAP_PALETTE.length])),
142
+ total
143
+ };
104
144
  }
105
- function TreeMap({
106
- data,
107
- size,
108
- title,
109
- description,
110
- tooltip = false,
111
- legend = "right",
112
- valueFormatter,
113
- valueType = "number",
114
- className,
115
- ...props
116
- }) {
117
- const resolvedSize = useComponentSize(size);
118
- const layout = TREE_MAP_LAYOUT[resolvedSize];
119
- const { resolved, total } = resolveData(data);
120
- const config = Object.fromEntries(
121
- resolved.map((datum) => [
122
- datum.label,
123
- { label: datum.label, color: datum.fill }
124
- ])
125
- );
126
- const tooltipNode = tooltip ? /* @__PURE__ */ jsx(
127
- ChartTooltip,
128
- {
129
- content: /* @__PURE__ */ jsx(
130
- ChartTooltipContent,
131
- {
132
- nameKey: "label",
133
- valueType,
134
- formatter: valueFormatter ? (value) => typeof value === "number" ? valueFormatter(value) : value : void 0
135
- }
136
- )
137
- }
138
- ) : null;
139
- const legendNode = /* @__PURE__ */ jsx(
140
- "ul",
141
- {
142
- className: cn(
143
- treeMapLegendVariants({ placement: legend, size: resolvedSize })
144
- ),
145
- children: resolved.map((datum) => /* @__PURE__ */ jsxs(
146
- "li",
147
- {
148
- className: "flex items-center gap-2 text-fg-primary",
149
- children: [
150
- /* @__PURE__ */ jsx(
151
- "span",
152
- {
153
- "aria-hidden": "true",
154
- className: cn(treeMapLegendDotVariants({ size: resolvedSize })),
155
- style: { backgroundColor: datum.fill }
156
- }
157
- ),
158
- /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: datum.label })
159
- ]
160
- },
161
- datum.label
162
- ))
163
- }
164
- );
165
- return /* @__PURE__ */ jsxs(ChartCard, { size: resolvedSize, className, ...props, children: [
166
- (title != null || description != null) && /* @__PURE__ */ jsxs(ChartHeader, { children: [
167
- title != null && /* @__PURE__ */ jsx(ChartTitle, { children: title }),
168
- description != null && /* @__PURE__ */ jsx(ChartDescription, { children: description })
169
- ] }),
170
- /* @__PURE__ */ jsxs(
171
- "div",
172
- {
173
- className: cn(
174
- "flex gap-4",
175
- legend === "right" ? "flex-row items-stretch" : "flex-col"
176
- ),
177
- children: [
178
- /* @__PURE__ */ jsx(
179
- ChartContainer,
180
- {
181
- config,
182
- className: "aspect-auto min-w-0 flex-1",
183
- style: { height: layout.height },
184
- children: /* @__PURE__ */ jsx(
185
- RechartsTreemap,
186
- {
187
- data: resolved,
188
- dataKey: "value",
189
- nameKey: "label",
190
- type: "flat",
191
- isAnimationActive: false,
192
- content: /* @__PURE__ */ jsx(TreeMapTile, { total, layout }),
193
- children: tooltipNode
194
- }
195
- )
196
- }
197
- ),
198
- legendNode
199
- ]
200
- }
201
- )
202
- ] });
145
+ function TreeMap({ data, size, title, description, tooltip = false, legend = "right", valueFormatter, valueType = "number", className, ...props }) {
146
+ const resolvedSize = useComponentSize(size);
147
+ const layout = TREE_MAP_LAYOUT[resolvedSize];
148
+ const { resolved, total } = resolveData(data);
149
+ const config = Object.fromEntries(resolved.map((datum) => [datum.label, {
150
+ label: datum.label,
151
+ color: datum.fill
152
+ }]));
153
+ const tooltipNode = tooltip ? /* @__PURE__ */ jsx(ChartTooltip, { content: /* @__PURE__ */ jsx(ChartTooltipContent, {
154
+ nameKey: "label",
155
+ valueType,
156
+ formatter: valueFormatter ? (value) => typeof value === "number" ? valueFormatter(value) : value : void 0
157
+ }) }) : null;
158
+ const legendNode = /* @__PURE__ */ jsx("ul", {
159
+ className: cn(treeMapLegendVariants({
160
+ placement: legend,
161
+ size: resolvedSize
162
+ })),
163
+ children: resolved.map((datum) => /* @__PURE__ */ jsxs("li", {
164
+ className: "flex items-center gap-2 text-fg-primary",
165
+ children: [/* @__PURE__ */ jsx("span", {
166
+ "aria-hidden": "true",
167
+ className: cn(treeMapLegendDotVariants({ size: resolvedSize })),
168
+ style: { backgroundColor: datum.fill }
169
+ }), /* @__PURE__ */ jsx("span", {
170
+ className: "min-w-0 truncate",
171
+ children: datum.label
172
+ })]
173
+ }, datum.label))
174
+ });
175
+ return /* @__PURE__ */ jsxs(ChartCard, {
176
+ size: resolvedSize,
177
+ className,
178
+ ...props,
179
+ children: [(title != null || description != null) && /* @__PURE__ */ jsxs(ChartHeader, { children: [title != null && /* @__PURE__ */ jsx(ChartTitle, { children: title }), description != null && /* @__PURE__ */ jsx(ChartDescription, { children: description })] }), /* @__PURE__ */ jsxs("div", {
180
+ className: cn("flex gap-4", legend === "right" ? "flex-row items-stretch" : "flex-col"),
181
+ children: [/* @__PURE__ */ jsx(ChartContainer, {
182
+ config,
183
+ className: "aspect-auto min-w-0 flex-1",
184
+ style: { height: layout.height },
185
+ children: /* @__PURE__ */ jsx(Treemap, {
186
+ data: resolved,
187
+ dataKey: "value",
188
+ nameKey: "label",
189
+ type: "flat",
190
+ isAnimationActive: false,
191
+ content: /* @__PURE__ */ jsx(TreeMapTile, {
192
+ total,
193
+ layout
194
+ }),
195
+ children: tooltipNode
196
+ })
197
+ }), legendNode]
198
+ })]
199
+ });
203
200
  }
204
- function TreeMapTile({
205
- total,
206
- layout,
207
- x,
208
- y,
209
- width,
210
- height,
211
- value,
212
- name,
213
- children,
214
- fill,
215
- text
216
- }) {
217
- if (children != null || x == null || y == null || width == null || height == null) {
218
- return /* @__PURE__ */ jsx("g", {});
219
- }
220
- const tileX = x + layout.gap / 2;
221
- const tileY = y + layout.gap / 2;
222
- const tileW = Math.max(0, width - layout.gap);
223
- const tileH = Math.max(0, height - layout.gap);
224
- const showLabel = tileW >= layout.labelMinSide && tileH >= layout.labelMinSide;
225
- const share = total > 0 ? Math.round((value ?? 0) / total * 100) : 0;
226
- return /* @__PURE__ */ jsxs("g", { children: [
227
- /* @__PURE__ */ jsx(
228
- "rect",
229
- {
230
- x: tileX,
231
- y: tileY,
232
- width: tileW,
233
- height: tileH,
234
- rx: layout.radius,
235
- ry: layout.radius,
236
- fill
237
- }
238
- ),
239
- showLabel && /* @__PURE__ */ jsxs(
240
- "text",
241
- {
242
- x: tileX + layout.labelPadding,
243
- y: tileY + layout.labelPadding,
244
- fill: text,
245
- dominantBaseline: "hanging",
246
- children: [
247
- /* @__PURE__ */ jsx(
248
- "tspan",
249
- {
250
- x: tileX + layout.labelPadding,
251
- className: "font-semibold",
252
- style: { fontSize: layout.nameFontSize },
253
- children: name
254
- }
255
- ),
256
- /* @__PURE__ */ jsxs(
257
- "tspan",
258
- {
259
- x: tileX + layout.labelPadding,
260
- dy: layout.nameFontSize + 4,
261
- className: "tabular-nums",
262
- style: { fontSize: layout.shareFontSize },
263
- children: [
264
- share,
265
- "%"
266
- ]
267
- }
268
- )
269
- ]
270
- }
271
- )
272
- ] });
201
+ function TreeMapTile({ total, layout, x, y, width, height, value, name, children, fill, text }) {
202
+ if (children != null || x == null || y == null || width == null || height == null) return /* @__PURE__ */ jsx("g", {});
203
+ const tileX = x + layout.gap / 2;
204
+ const tileY = y + layout.gap / 2;
205
+ const tileW = Math.max(0, width - layout.gap);
206
+ const tileH = Math.max(0, height - layout.gap);
207
+ const showLabel = tileW >= layout.labelMinSide && tileH >= layout.labelMinSide;
208
+ const share = total > 0 ? Math.round((value ?? 0) / total * 100) : 0;
209
+ return /* @__PURE__ */ jsxs("g", { children: [/* @__PURE__ */ jsx("rect", {
210
+ x: tileX,
211
+ y: tileY,
212
+ width: tileW,
213
+ height: tileH,
214
+ rx: layout.radius,
215
+ ry: layout.radius,
216
+ fill
217
+ }), showLabel && /* @__PURE__ */ jsxs("text", {
218
+ x: tileX + layout.labelPadding,
219
+ y: tileY + layout.labelPadding,
220
+ fill: text,
221
+ dominantBaseline: "hanging",
222
+ children: [/* @__PURE__ */ jsx("tspan", {
223
+ x: tileX + layout.labelPadding,
224
+ className: "font-semibold",
225
+ style: { fontSize: layout.nameFontSize },
226
+ children: name
227
+ }), /* @__PURE__ */ jsxs("tspan", {
228
+ x: tileX + layout.labelPadding,
229
+ dy: layout.nameFontSize + 4,
230
+ className: "tabular-nums",
231
+ style: { fontSize: layout.shareFontSize },
232
+ children: [share, "%"]
233
+ })]
234
+ })] });
273
235
  }
274
- export {
275
- TREE_MAP_LAYOUT,
276
- TREE_MAP_PALETTE,
277
- TreeMap
278
- };
279
- //# sourceMappingURL=tree-map.js.map
236
+ //#endregion
237
+ export { TREE_MAP_LAYOUT, TREE_MAP_PALETTE, TreeMap };
@@ -0,0 +1,21 @@
1
+ import { useState } from "react";
2
+ //#region src/lib/use-uncontrolled.ts
3
+ function useUncontrolled({ value, defaultValue, finalValue, onChange = () => {} }) {
4
+ const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue !== void 0 ? defaultValue : finalValue);
5
+ const handleUncontrolledChange = (nextValue, ...payload) => {
6
+ setUncontrolledValue(nextValue);
7
+ onChange?.(nextValue, ...payload);
8
+ };
9
+ if (value !== void 0) return [
10
+ value,
11
+ onChange,
12
+ true
13
+ ];
14
+ return [
15
+ uncontrolledValue,
16
+ handleUncontrolledChange,
17
+ false
18
+ ];
19
+ }
20
+ //#endregion
21
+ export { useUncontrolled as t };