@giddaa-housing/ui 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/css/giddaa.css +12 -2
  3. package/dist/accordion.d.ts +9 -10
  4. package/dist/accordion.js +41 -87
  5. package/dist/activity-timeline.d.ts +12 -16
  6. package/dist/activity-timeline.js +83 -198
  7. package/dist/alert.d.ts +8 -9
  8. package/dist/alert.js +53 -111
  9. package/dist/auth-layout.d.ts +4 -4
  10. package/dist/auth-layout.js +143 -294
  11. package/dist/avatar.d.ts +6 -6
  12. package/dist/avatar.js +49 -19
  13. package/dist/badge.d.ts +12 -14
  14. package/dist/badge.js +71 -11
  15. package/dist/bar-chart.d.ts +65 -67
  16. package/dist/bar-chart.js +232 -207
  17. package/dist/breadcrumb.d.ts +5 -5
  18. package/dist/breadcrumb.js +56 -118
  19. package/dist/bullet-chart.d.ts +41 -37
  20. package/dist/bullet-chart.js +125 -148
  21. package/dist/button-BZIeyUw6.d.ts +17 -0
  22. package/dist/button-group.d.ts +13 -16
  23. package/dist/button-group.js +39 -88
  24. package/dist/button.d.ts +2 -19
  25. package/dist/button.js +94 -13
  26. package/dist/calendar.d.ts +6 -6
  27. package/dist/calendar.js +138 -17
  28. package/dist/card.d.ts +14 -16
  29. package/dist/card.js +59 -145
  30. package/dist/carousel.d.ts +34 -35
  31. package/dist/carousel.js +335 -20
  32. package/dist/chart.d.ts +90 -63
  33. package/dist/chart.js +573 -28
  34. package/dist/checkbox.d.ts +10 -12
  35. package/dist/checkbox.js +82 -47
  36. package/dist/cn-BI_4DMBf.js +23 -0
  37. package/dist/collapsible.d.ts +7 -8
  38. package/dist/collapsible.js +22 -47
  39. package/dist/combobox.d.ts +10 -10
  40. package/dist/combobox.js +236 -44
  41. package/dist/cta.d.ts +12 -14
  42. package/dist/cta.js +175 -341
  43. package/dist/currency-selector.d.ts +31 -32
  44. package/dist/currency-selector.js +106 -184
  45. package/dist/data-table.d.ts +168 -0
  46. package/dist/data-table.js +676 -0
  47. package/dist/date-picker.d.ts +22 -23
  48. package/dist/date-picker.js +119 -192
  49. package/dist/details-card.d.ts +7 -7
  50. package/dist/details-card.js +104 -253
  51. package/dist/dialog.d.ts +13 -14
  52. package/dist/dialog.js +116 -209
  53. package/dist/dropdown-menu.d.ts +13 -13
  54. package/dist/dropdown-menu.js +180 -37
  55. package/dist/dropzone.d.ts +55 -55
  56. package/dist/dropzone.js +327 -439
  57. package/dist/editorial-card.d.ts +23 -25
  58. package/dist/editorial-card.js +129 -296
  59. package/dist/empty-state.d.ts +8 -9
  60. package/dist/empty-state.js +48 -105
  61. package/dist/field.d.ts +23 -25
  62. package/dist/field.js +110 -221
  63. package/dist/filter.d.ts +118 -0
  64. package/dist/filter.js +775 -0
  65. package/dist/footer.d.ts +8 -15
  66. package/dist/footer.js +197 -400
  67. package/dist/funnel-chart.d.ts +49 -48
  68. package/dist/funnel-chart.js +170 -189
  69. package/dist/gallery-indicator.d.ts +11 -12
  70. package/dist/gallery-indicator.js +75 -12
  71. package/dist/heatmap-chart.d.ts +47 -50
  72. package/dist/heatmap-chart.js +186 -237
  73. package/dist/infotip.d.ts +8 -9
  74. package/dist/infotip.js +33 -59
  75. package/dist/input-CfoEJ8A6.d.ts +12 -0
  76. package/dist/input-group.d.ts +16 -20
  77. package/dist/input-group.js +99 -23
  78. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  79. package/dist/input-size-context.d.ts +2 -11
  80. package/dist/input-size-context.js +17 -9
  81. package/dist/input.d.ts +2 -13
  82. package/dist/input.js +27 -11
  83. package/dist/item.d.ts +7 -8
  84. package/dist/item.js +22 -59
  85. package/dist/kpi-card.d.ts +18 -20
  86. package/dist/kpi-card.js +84 -192
  87. package/dist/label.d.ts +6 -6
  88. package/dist/label.js +40 -8
  89. package/dist/line-chart.d.ts +200 -129
  90. package/dist/line-chart.js +330 -105
  91. package/dist/list-item.d.ts +22 -0
  92. package/dist/list-item.js +84 -0
  93. package/dist/logo.d.ts +4 -4
  94. package/dist/logo.js +92 -9
  95. package/dist/map-indicator.d.ts +7 -7
  96. package/dist/map-indicator.js +80 -106
  97. package/dist/match.d.ts +10 -11
  98. package/dist/match.js +62 -107
  99. package/dist/media-gallery-hero.d.ts +40 -42
  100. package/dist/media-gallery-hero.js +182 -343
  101. package/dist/media-player.d.ts +17 -17
  102. package/dist/media-player.js +873 -1348
  103. package/dist/multi-step-form.d.ts +56 -0
  104. package/dist/multi-step-form.js +342 -0
  105. package/dist/number-input.d.ts +34 -34
  106. package/dist/number-input.js +64 -117
  107. package/dist/page-header.d.ts +10 -11
  108. package/dist/page-header.js +34 -79
  109. package/dist/pagination.d.ts +17 -21
  110. package/dist/pagination.js +132 -207
  111. package/dist/password-input.d.ts +5 -13
  112. package/dist/password-input.js +31 -55
  113. package/dist/phone-input.d.ts +19 -20
  114. package/dist/phone-input.js +226 -344
  115. package/dist/photo-gallery.d.ts +19 -19
  116. package/dist/photo-gallery.js +313 -449
  117. package/dist/picker-lzgmsNfG.js +32 -0
  118. package/dist/pie-chart.d.ts +121 -90
  119. package/dist/pie-chart.js +183 -149
  120. package/dist/popover.d.ts +9 -9
  121. package/dist/popover.js +72 -23
  122. package/dist/price-tag.d.ts +26 -27
  123. package/dist/price-tag.js +113 -173
  124. package/dist/progress.d.ts +16 -17
  125. package/dist/progress.js +169 -24
  126. package/dist/property-listing-card.d.ts +14 -17
  127. package/dist/property-listing-card.js +102 -220
  128. package/dist/purchase-option-card.d.ts +79 -0
  129. package/dist/purchase-option-card.js +176 -0
  130. package/dist/radar-chart.d.ts +29 -31
  131. package/dist/radar-chart.js +162 -137
  132. package/dist/radio-group.d.ts +11 -13
  133. package/dist/radio-group.js +46 -60
  134. package/dist/review-block.d.ts +14 -16
  135. package/dist/review-block.js +154 -10
  136. package/dist/rich-text-editor.d.ts +30 -14
  137. package/dist/rich-text-editor.js +592 -716
  138. package/dist/scatter-chart.d.ts +45 -47
  139. package/dist/scatter-chart.js +236 -240
  140. package/dist/search-input.d.ts +8 -16
  141. package/dist/search-input.js +57 -109
  142. package/dist/select.d.ts +8 -8
  143. package/dist/select.js +144 -27
  144. package/dist/separator.d.ts +8 -9
  145. package/dist/separator.js +32 -8
  146. package/dist/sheet.d.ts +11 -11
  147. package/dist/sheet.js +103 -24
  148. package/dist/sidebar.d.ts +32 -37
  149. package/dist/sidebar.js +364 -634
  150. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  151. package/dist/size-context.d.ts +2 -11
  152. package/dist/size-context.js +17 -9
  153. package/dist/skeleton.d.ts +4 -5
  154. package/dist/skeleton.js +12 -8
  155. package/dist/slider.d.ts +8 -9
  156. package/dist/slider.js +64 -135
  157. package/dist/sparkline.d.ts +68 -58
  158. package/dist/sparkline.js +315 -251
  159. package/dist/stepper.d.ts +23 -24
  160. package/dist/stepper.js +149 -246
  161. package/dist/styles.css +1004 -116
  162. package/dist/switch.d.ts +10 -12
  163. package/dist/switch.js +48 -70
  164. package/dist/table-card.d.ts +35 -0
  165. package/dist/table-card.js +125 -0
  166. package/dist/table.d.ts +18 -14
  167. package/dist/table.js +117 -154
  168. package/dist/tabs.d.ts +33 -15
  169. package/dist/tabs.js +110 -18
  170. package/dist/tag.d.ts +21 -23
  171. package/dist/tag.js +103 -159
  172. package/dist/testimonial-block.d.ts +18 -19
  173. package/dist/testimonial-block.js +189 -358
  174. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  175. package/dist/textarea.d.ts +2 -12
  176. package/dist/textarea.js +24 -11
  177. package/dist/time-picker.d.ts +11 -11
  178. package/dist/time-picker.js +245 -302
  179. package/dist/toast.d.ts +16 -18
  180. package/dist/toast.js +154 -205
  181. package/dist/tooltip.d.ts +8 -9
  182. package/dist/tooltip.js +37 -12
  183. package/dist/tree-map.d.ts +59 -62
  184. package/dist/tree-map.js +226 -269
  185. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  186. package/dist/waterfall-chart.d.ts +94 -97
  187. package/dist/waterfall-chart.js +455 -552
  188. package/package.json +36 -9
  189. package/dist/accordion.js.map +0 -1
  190. package/dist/activity-timeline.js.map +0 -1
  191. package/dist/alert.js.map +0 -1
  192. package/dist/auth-layout.js.map +0 -1
  193. package/dist/avatar.js.map +0 -1
  194. package/dist/badge.js.map +0 -1
  195. package/dist/bar-chart.js.map +0 -1
  196. package/dist/breadcrumb.js.map +0 -1
  197. package/dist/bullet-chart.js.map +0 -1
  198. package/dist/button-group.js.map +0 -1
  199. package/dist/button.js.map +0 -1
  200. package/dist/calendar.js.map +0 -1
  201. package/dist/card.js.map +0 -1
  202. package/dist/carousel.js.map +0 -1
  203. package/dist/chart.js.map +0 -1
  204. package/dist/checkbox.js.map +0 -1
  205. package/dist/chunk-322YCNVL.js +0 -278
  206. package/dist/chunk-322YCNVL.js.map +0 -1
  207. package/dist/chunk-3ACQVT7A.js +0 -25
  208. package/dist/chunk-3ACQVT7A.js.map +0 -1
  209. package/dist/chunk-3T65TLJX.js +0 -334
  210. package/dist/chunk-3T65TLJX.js.map +0 -1
  211. package/dist/chunk-6ZSGQHH2.js +0 -192
  212. package/dist/chunk-6ZSGQHH2.js.map +0 -1
  213. package/dist/chunk-7TBMLFGW.js +0 -41
  214. package/dist/chunk-7TBMLFGW.js.map +0 -1
  215. package/dist/chunk-B4H6RNDH.js +0 -135
  216. package/dist/chunk-B4H6RNDH.js.map +0 -1
  217. package/dist/chunk-BUXCGZ6X.js +0 -219
  218. package/dist/chunk-BUXCGZ6X.js.map +0 -1
  219. package/dist/chunk-CHII2QHH.js +0 -58
  220. package/dist/chunk-CHII2QHH.js.map +0 -1
  221. package/dist/chunk-DMNOXRRW.js +0 -147
  222. package/dist/chunk-DMNOXRRW.js.map +0 -1
  223. package/dist/chunk-EFSOSSIC.js +0 -130
  224. package/dist/chunk-EFSOSSIC.js.map +0 -1
  225. package/dist/chunk-FZDSVMKY.js +0 -363
  226. package/dist/chunk-FZDSVMKY.js.map +0 -1
  227. package/dist/chunk-GJOFIJS3.js +0 -246
  228. package/dist/chunk-GJOFIJS3.js.map +0 -1
  229. package/dist/chunk-HL3ZSYES.js +0 -23
  230. package/dist/chunk-HL3ZSYES.js.map +0 -1
  231. package/dist/chunk-JVLUBAPB.js +0 -129
  232. package/dist/chunk-JVLUBAPB.js.map +0 -1
  233. package/dist/chunk-KDPYSOYZ.js +0 -64
  234. package/dist/chunk-KDPYSOYZ.js.map +0 -1
  235. package/dist/chunk-KSMDANKI.js +0 -43
  236. package/dist/chunk-KSMDANKI.js.map +0 -1
  237. package/dist/chunk-MEKCCOP5.js +0 -46
  238. package/dist/chunk-MEKCCOP5.js.map +0 -1
  239. package/dist/chunk-NOFXVRWL.js +0 -451
  240. package/dist/chunk-NOFXVRWL.js.map +0 -1
  241. package/dist/chunk-PC5MHNVA.js +0 -171
  242. package/dist/chunk-PC5MHNVA.js.map +0 -1
  243. package/dist/chunk-QKAQZ2GU.js +0 -122
  244. package/dist/chunk-QKAQZ2GU.js.map +0 -1
  245. package/dist/chunk-QZHSHSVV.js +0 -26
  246. package/dist/chunk-QZHSHSVV.js.map +0 -1
  247. package/dist/chunk-RBMK26XD.js +0 -19
  248. package/dist/chunk-RBMK26XD.js.map +0 -1
  249. package/dist/chunk-SFNJGF6M.js +0 -262
  250. package/dist/chunk-SFNJGF6M.js.map +0 -1
  251. package/dist/chunk-UJJNLGTM.js +0 -112
  252. package/dist/chunk-UJJNLGTM.js.map +0 -1
  253. package/dist/chunk-VGR4ZWJ3.js +0 -418
  254. package/dist/chunk-VGR4ZWJ3.js.map +0 -1
  255. package/dist/chunk-XG47P6D4.js +0 -99
  256. package/dist/chunk-XG47P6D4.js.map +0 -1
  257. package/dist/chunk-XZZAHNVM.js +0 -21
  258. package/dist/chunk-XZZAHNVM.js.map +0 -1
  259. package/dist/chunk-Y4TTYVNE.js +0 -36
  260. package/dist/chunk-Y4TTYVNE.js.map +0 -1
  261. package/dist/chunk-YDWIHW6Q.js +0 -69
  262. package/dist/chunk-YDWIHW6Q.js.map +0 -1
  263. package/dist/collapsible.js.map +0 -1
  264. package/dist/combobox.js.map +0 -1
  265. package/dist/cta.js.map +0 -1
  266. package/dist/currency-selector.js.map +0 -1
  267. package/dist/date-picker.js.map +0 -1
  268. package/dist/details-card.js.map +0 -1
  269. package/dist/dialog.js.map +0 -1
  270. package/dist/dropdown-menu.js.map +0 -1
  271. package/dist/dropzone.js.map +0 -1
  272. package/dist/editorial-card.js.map +0 -1
  273. package/dist/empty-state.js.map +0 -1
  274. package/dist/field.js.map +0 -1
  275. package/dist/footer.js.map +0 -1
  276. package/dist/funnel-chart.js.map +0 -1
  277. package/dist/gallery-indicator.js.map +0 -1
  278. package/dist/heatmap-chart.js.map +0 -1
  279. package/dist/infotip.js.map +0 -1
  280. package/dist/input-group.js.map +0 -1
  281. package/dist/input-size-context.js.map +0 -1
  282. package/dist/input.js.map +0 -1
  283. package/dist/item.js.map +0 -1
  284. package/dist/kpi-card.js.map +0 -1
  285. package/dist/label.js.map +0 -1
  286. package/dist/line-chart.js.map +0 -1
  287. package/dist/logo.js.map +0 -1
  288. package/dist/map-indicator.js.map +0 -1
  289. package/dist/match.js.map +0 -1
  290. package/dist/media-gallery-hero.js.map +0 -1
  291. package/dist/media-player.js.map +0 -1
  292. package/dist/number-input.js.map +0 -1
  293. package/dist/page-header.js.map +0 -1
  294. package/dist/pagination.js.map +0 -1
  295. package/dist/password-input.js.map +0 -1
  296. package/dist/phone-input.js.map +0 -1
  297. package/dist/photo-gallery.js.map +0 -1
  298. package/dist/pie-chart.js.map +0 -1
  299. package/dist/popover.js.map +0 -1
  300. package/dist/price-tag.js.map +0 -1
  301. package/dist/progress.js.map +0 -1
  302. package/dist/property-listing-card.js.map +0 -1
  303. package/dist/radar-chart.js.map +0 -1
  304. package/dist/radio-group.js.map +0 -1
  305. package/dist/review-block.js.map +0 -1
  306. package/dist/rich-text-editor.js.map +0 -1
  307. package/dist/scatter-chart.js.map +0 -1
  308. package/dist/search-input.js.map +0 -1
  309. package/dist/select.js.map +0 -1
  310. package/dist/separator.js.map +0 -1
  311. package/dist/sheet.js.map +0 -1
  312. package/dist/sidebar.js.map +0 -1
  313. package/dist/size-context.js.map +0 -1
  314. package/dist/skeleton.js.map +0 -1
  315. package/dist/slider.js.map +0 -1
  316. package/dist/sparkline.js.map +0 -1
  317. package/dist/stepper.js.map +0 -1
  318. package/dist/switch.js.map +0 -1
  319. package/dist/tab-list.d.ts +0 -38
  320. package/dist/tab-list.js +0 -123
  321. package/dist/tab-list.js.map +0 -1
  322. package/dist/table.js.map +0 -1
  323. package/dist/tabs.js.map +0 -1
  324. package/dist/tag.js.map +0 -1
  325. package/dist/testimonial-block.js.map +0 -1
  326. package/dist/textarea.js.map +0 -1
  327. package/dist/time-picker.js.map +0 -1
  328. package/dist/toast.js.map +0 -1
  329. package/dist/tooltip.js.map +0 -1
  330. package/dist/tree-map.js.map +0 -1
  331. package/dist/waterfall-chart.js.map +0 -1
@@ -1,10 +1,7 @@
1
- import * as React from 'react';
2
- import { ChartCard } from './chart.js';
3
- import { ComponentSize } from './size-context.js';
4
- import 'class-variance-authority/types';
5
- import 'class-variance-authority';
6
- import 'recharts';
7
-
1
+ import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
2
+ import { ChartCard } from "./chart.js";
3
+ import * as React from "react";
4
+ //#region src/heatmap-chart.d.ts
8
5
  /**
9
6
  * A heatmap — a row × column grid encoding magnitude as fill intensity.
10
7
  * Reach for one to compare a measure across two categorical dimensions at a
@@ -37,12 +34,12 @@ import 'recharts';
37
34
  /** Heatmap sizes line up with the three shared `ComponentSize` values. */
38
35
  type HeatmapChartSize = ComponentSize;
39
36
  type HeatmapChartCellDatum = {
40
- /** Row category label. */
41
- row: string;
42
- /** Column category label. */
43
- column: string;
44
- /** Magnitude driving the cell's fill. Omit the datum entirely for "no data". */
45
- value: number;
37
+ /** Row category label. */
38
+ row: string;
39
+ /** Column category label. */
40
+ column: string;
41
+ /** Magnitude driving the cell's fill. Omit the datum entirely for "no data". */
42
+ value: number;
46
43
  };
47
44
  /**
48
45
  * Sequential fill ramp — `--color-surface-brand` (already theme-aware) at five
@@ -54,45 +51,45 @@ type HeatmapChartCellDatum = {
54
51
  */
55
52
  declare const HEATMAP_CHART_PALETTE: readonly ["rgb(from var(--color-surface-brand) r g b / 0.08)", "rgb(from var(--color-surface-brand) r g b / 0.22)", "rgb(from var(--color-surface-brand) r g b / 0.44)", "rgb(from var(--color-surface-brand) r g b / 0.7)", "rgb(from var(--color-surface-brand) r g b / 1)"];
56
53
  type HeatmapChartLayout = {
57
- /** Width/height of a single (square) cell in px. */
58
- cellSize: number;
59
- /** Gap between cells in px. */
60
- gap: number;
61
- /** Reserved width for row labels in px. */
62
- rowLabelWidth: number;
63
- /** Reserved height for the column header row in px. */
64
- columnLabelHeight: number;
65
- /** Row/column label font size in px. */
66
- labelFontSize: number;
67
- /** In-cell value label font size in px. */
68
- valueFontSize: number;
69
- /** Width of a single legend ramp swatch in px. */
70
- legendSwatchSize: number;
54
+ /** Width/height of a single (square) cell in px. */
55
+ cellSize: number;
56
+ /** Gap between cells in px. */
57
+ gap: number;
58
+ /** Reserved width for row labels in px. */
59
+ rowLabelWidth: number;
60
+ /** Reserved height for the column header row in px. */
61
+ columnLabelHeight: number;
62
+ /** Row/column label font size in px. */
63
+ labelFontSize: number;
64
+ /** In-cell value label font size in px. */
65
+ valueFontSize: number;
66
+ /** Width of a single legend ramp swatch in px. */
67
+ legendSwatchSize: number;
71
68
  };
72
69
  declare const HEATMAP_CHART_LAYOUT: Record<HeatmapChartSize, HeatmapChartLayout>;
73
70
  type HeatmapChartProps = Omit<React.ComponentProps<typeof ChartCard>, "size" | "children"> & {
74
- /** Cells — one entry per row/column pair that has a value. */
75
- data: HeatmapChartCellDatum[];
76
- /** Row order, top to bottom. Defaults to first-seen order in `data`. */
77
- rows?: string[];
78
- /** Column order, left to right. Defaults to first-seen order in `data`. */
79
- columns?: string[];
80
- /** Fixed `[min, max]` for the color scale. Defaults to the data's range. */
81
- domain?: [number, number];
82
- /** Explicit size; otherwise inherited from the nearest `SizeProvider`. */
83
- size?: HeatmapChartSize;
84
- /** Chart heading. Omit to hide the title. */
85
- title?: React.ReactNode;
86
- /** Supporting metadata (period, source). Omit to hide the description. */
87
- description?: React.ReactNode;
88
- /** Show the sequential-scale legend under the grid. Default true. */
89
- legend?: boolean;
90
- /** Print the formatted value inside every cell. Default false — the
91
- * hover/focus tooltip carries exact figures without crowding the grid. */
92
- showValues?: boolean;
93
- /** Format a cell value for the tooltip, legend, and in-cell label. */
94
- valueFormatter?: (value: number) => string;
71
+ /** Cells — one entry per row/column pair that has a value. */
72
+ data: HeatmapChartCellDatum[];
73
+ /** Row order, top to bottom. Defaults to first-seen order in `data`. */
74
+ rows?: string[];
75
+ /** Column order, left to right. Defaults to first-seen order in `data`. */
76
+ columns?: string[];
77
+ /** Fixed `[min, max]` for the color scale. Defaults to the data's range. */
78
+ domain?: [number, number];
79
+ /** Explicit size; otherwise inherited from the nearest `SizeProvider`. */
80
+ size?: HeatmapChartSize;
81
+ /** Chart heading. Omit to hide the title. */
82
+ title?: React.ReactNode;
83
+ /** Supporting metadata (period, source). Omit to hide the description. */
84
+ description?: React.ReactNode;
85
+ /** Show the sequential-scale legend under the grid. Default true. */
86
+ legend?: boolean;
87
+ /** Print the formatted value inside every cell. Default false — the
88
+ * hover/focus tooltip carries exact figures without crowding the grid. */
89
+ showValues?: boolean;
90
+ /** Format a cell value for the tooltip, legend, and in-cell label. */
91
+ valueFormatter?: (value: number) => string;
95
92
  };
96
93
  declare function HeatmapChart({ data, rows: rowsProp, columns: columnsProp, domain: domainProp, size, title, description, legend, showValues, valueFormatter, className, ...props }: HeatmapChartProps): React.JSX.Element;
97
-
98
- export { HEATMAP_CHART_LAYOUT, HEATMAP_CHART_PALETTE, HeatmapChart, type HeatmapChartCellDatum, type HeatmapChartLayout, type HeatmapChartProps, type HeatmapChartSize };
94
+ //#endregion
95
+ export { HEATMAP_CHART_LAYOUT, HEATMAP_CHART_PALETTE, HeatmapChart, type HeatmapChartCellDatum, type HeatmapChartLayout, type HeatmapChartProps, type HeatmapChartSize };
@@ -1,248 +1,197 @@
1
1
  "use client";
2
- import {
3
- ChartCard,
4
- ChartDescription,
5
- ChartHeader,
6
- ChartTitle
7
- } from "./chunk-NOFXVRWL.js";
8
- import {
9
- useComponentSize
10
- } from "./chunk-HL3ZSYES.js";
11
- import "./chunk-Y4TTYVNE.js";
12
-
13
- // src/heatmap-chart.tsx
14
- import { Fragment } from "react";
2
+ import { useComponentSize } from "./size-context.js";
3
+ import { ChartCard, ChartDescription, ChartHeader, ChartTitle } from "./chart.js";
15
4
  import { jsx, jsxs } from "react/jsx-runtime";
16
- var HEATMAP_CHART_PALETTE = [
17
- "rgb(from var(--color-surface-brand) r g b / 0.08)",
18
- "rgb(from var(--color-surface-brand) r g b / 0.22)",
19
- "rgb(from var(--color-surface-brand) r g b / 0.44)",
20
- "rgb(from var(--color-surface-brand) r g b / 0.7)",
21
- "rgb(from var(--color-surface-brand) r g b / 1)"
5
+ import { Fragment as Fragment$1 } from "react";
6
+ //#region src/heatmap-chart.tsx
7
+ /**
8
+ * Sequential fill ramp — `--color-surface-brand` (already theme-aware) at five
9
+ * magnitude-scaled opacity stops: 8%, 22%, 44%, 70%, 100%. Index 0 is the
10
+ * lowest magnitude bucket, index 4 the highest — assign by bucket order,
11
+ * never by an arbitrary opacity pick. Relative color syntax (`rgb(from … / a)`)
12
+ * keeps each stop a true alpha over whatever surface it sits on, matching the
13
+ * shadow/gradient tokens in `styles/giddaa.css`.
14
+ */
15
+ const HEATMAP_CHART_PALETTE = [
16
+ "rgb(from var(--color-surface-brand) r g b / 0.08)",
17
+ "rgb(from var(--color-surface-brand) r g b / 0.22)",
18
+ "rgb(from var(--color-surface-brand) r g b / 0.44)",
19
+ "rgb(from var(--color-surface-brand) r g b / 0.7)",
20
+ "rgb(from var(--color-surface-brand) r g b / 1)"
22
21
  ];
23
- var HEATMAP_CHART_LAYOUT = {
24
- sm: {
25
- cellSize: 20,
26
- gap: 3,
27
- rowLabelWidth: 64,
28
- columnLabelHeight: 20,
29
- labelFontSize: 10,
30
- valueFontSize: 9,
31
- legendSwatchSize: 14
32
- },
33
- md: {
34
- cellSize: 26,
35
- gap: 3,
36
- rowLabelWidth: 80,
37
- columnLabelHeight: 22,
38
- labelFontSize: 11,
39
- valueFontSize: 10,
40
- legendSwatchSize: 16
41
- },
42
- lg: {
43
- cellSize: 32,
44
- gap: 4,
45
- rowLabelWidth: 96,
46
- columnLabelHeight: 24,
47
- labelFontSize: 12,
48
- valueFontSize: 11,
49
- legendSwatchSize: 18
50
- }
22
+ const HEATMAP_CHART_LAYOUT = {
23
+ sm: {
24
+ cellSize: 20,
25
+ gap: 3,
26
+ rowLabelWidth: 64,
27
+ columnLabelHeight: 20,
28
+ labelFontSize: 10,
29
+ valueFontSize: 9,
30
+ legendSwatchSize: 14
31
+ },
32
+ md: {
33
+ cellSize: 26,
34
+ gap: 3,
35
+ rowLabelWidth: 80,
36
+ columnLabelHeight: 22,
37
+ labelFontSize: 11,
38
+ valueFontSize: 10,
39
+ legendSwatchSize: 16
40
+ },
41
+ lg: {
42
+ cellSize: 32,
43
+ gap: 4,
44
+ rowLabelWidth: 96,
45
+ columnLabelHeight: 24,
46
+ labelFontSize: 12,
47
+ valueFontSize: 11,
48
+ legendSwatchSize: 18
49
+ }
51
50
  };
51
+ /** Joins a row/column pair into a stable lookup key. */
52
52
  function cellKey(row, column) {
53
- return `${row}\u241F${column}`;
53
+ return `${row}␟${column}`;
54
54
  }
55
+ /** Buckets a value into one of the five palette steps (1 = lowest, 5 = highest). */
55
56
  function heatmapStep(value, domain) {
56
- const [min, max] = domain;
57
- if (max <= min) return HEATMAP_CHART_PALETTE.length;
58
- const ratio = (value - min) / (max - min);
59
- const step = Math.ceil(ratio * HEATMAP_CHART_PALETTE.length);
60
- return Math.min(HEATMAP_CHART_PALETTE.length, Math.max(1, step));
57
+ const [min, max] = domain;
58
+ if (max <= min) return HEATMAP_CHART_PALETTE.length;
59
+ const ratio = (value - min) / (max - min);
60
+ const step = Math.ceil(ratio * HEATMAP_CHART_PALETTE.length);
61
+ return Math.min(HEATMAP_CHART_PALETTE.length, Math.max(1, step));
61
62
  }
62
- function HeatmapChart({
63
- data,
64
- rows: rowsProp,
65
- columns: columnsProp,
66
- domain: domainProp,
67
- size,
68
- title,
69
- description,
70
- legend = true,
71
- showValues = false,
72
- valueFormatter = (value) => value.toLocaleString("en-NG"),
73
- className,
74
- ...props
75
- }) {
76
- const resolvedSize = useComponentSize(size);
77
- const layout = HEATMAP_CHART_LAYOUT[resolvedSize];
78
- const rows = rowsProp ?? Array.from(new Set(data.map((d) => d.row)));
79
- const columns = columnsProp ?? Array.from(new Set(data.map((d) => d.column)));
80
- const valuesByKey = new Map(
81
- data.map((datum) => [cellKey(datum.row, datum.column), datum.value])
82
- );
83
- const values = data.map((datum) => datum.value);
84
- const domain = domainProp ?? [
85
- values.length ? Math.min(...values) : 0,
86
- values.length ? Math.max(...values) : 1
87
- ];
88
- return /* @__PURE__ */ jsxs(ChartCard, { size: resolvedSize, className, ...props, children: [
89
- (title != null || description != null) && /* @__PURE__ */ jsxs(ChartHeader, { children: [
90
- title != null && /* @__PURE__ */ jsx(ChartTitle, { children: title }),
91
- description != null && /* @__PURE__ */ jsx(ChartDescription, { children: description })
92
- ] }),
93
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
94
- /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs(
95
- "div",
96
- {
97
- className: "inline-grid",
98
- style: {
99
- gridTemplateColumns: `${layout.rowLabelWidth}px repeat(${columns.length}, ${layout.cellSize}px)`,
100
- gap: layout.gap
101
- },
102
- children: [
103
- /* @__PURE__ */ jsx("span", { "aria-hidden": "true" }),
104
- columns.map((column) => /* @__PURE__ */ jsx(
105
- "span",
106
- {
107
- className: "flex items-end justify-center truncate px-0.5 pb-1 text-fg-secondary",
108
- style: {
109
- fontSize: layout.labelFontSize,
110
- height: layout.columnLabelHeight
111
- },
112
- title: column,
113
- children: column
114
- },
115
- column
116
- )),
117
- rows.map((row) => /* @__PURE__ */ jsxs(Fragment, { children: [
118
- /* @__PURE__ */ jsx(
119
- "span",
120
- {
121
- className: "flex items-center truncate pr-2 text-fg-secondary",
122
- style: {
123
- fontSize: layout.labelFontSize,
124
- height: layout.cellSize
125
- },
126
- title: row,
127
- children: row
128
- }
129
- ),
130
- columns.map((column) => /* @__PURE__ */ jsx(
131
- HeatmapChartCell,
132
- {
133
- row,
134
- column,
135
- value: valuesByKey.get(cellKey(row, column)),
136
- domain,
137
- layout,
138
- showValue: showValues,
139
- valueFormatter
140
- },
141
- column
142
- ))
143
- ] }, row))
144
- ]
145
- }
146
- ) }),
147
- legend && /* @__PURE__ */ jsx(
148
- HeatmapChartLegend,
149
- {
150
- domain,
151
- layout,
152
- valueFormatter
153
- }
154
- )
155
- ] })
156
- ] });
63
+ function HeatmapChart({ data, rows: rowsProp, columns: columnsProp, domain: domainProp, size, title, description, legend = true, showValues = false, valueFormatter = (value) => value.toLocaleString("en-NG"), className, ...props }) {
64
+ const resolvedSize = useComponentSize(size);
65
+ const layout = HEATMAP_CHART_LAYOUT[resolvedSize];
66
+ const rows = rowsProp ?? Array.from(new Set(data.map((d) => d.row)));
67
+ const columns = columnsProp ?? Array.from(new Set(data.map((d) => d.column)));
68
+ const valuesByKey = new Map(data.map((datum) => [cellKey(datum.row, datum.column), datum.value]));
69
+ const values = data.map((datum) => datum.value);
70
+ const domain = domainProp ?? [values.length ? Math.min(...values) : 0, values.length ? Math.max(...values) : 1];
71
+ return /* @__PURE__ */ jsxs(ChartCard, {
72
+ size: resolvedSize,
73
+ className,
74
+ ...props,
75
+ 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", {
76
+ className: "flex flex-col gap-3",
77
+ children: [/* @__PURE__ */ jsx("div", {
78
+ className: "overflow-x-auto",
79
+ children: /* @__PURE__ */ jsxs("div", {
80
+ className: "inline-grid",
81
+ style: {
82
+ gridTemplateColumns: `${layout.rowLabelWidth}px repeat(${columns.length}, ${layout.cellSize}px)`,
83
+ gap: layout.gap
84
+ },
85
+ children: [
86
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true" }),
87
+ columns.map((column) => /* @__PURE__ */ jsx("span", {
88
+ className: "flex items-end justify-center truncate px-0.5 pb-1 text-fg-secondary",
89
+ style: {
90
+ fontSize: layout.labelFontSize,
91
+ height: layout.columnLabelHeight
92
+ },
93
+ title: column,
94
+ children: column
95
+ }, column)),
96
+ rows.map((row) => /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
97
+ className: "flex items-center truncate pr-2 text-fg-secondary",
98
+ style: {
99
+ fontSize: layout.labelFontSize,
100
+ height: layout.cellSize
101
+ },
102
+ title: row,
103
+ children: row
104
+ }), columns.map((column) => /* @__PURE__ */ jsx(HeatmapChartCell, {
105
+ row,
106
+ column,
107
+ value: valuesByKey.get(cellKey(row, column)),
108
+ domain,
109
+ layout,
110
+ showValue: showValues,
111
+ valueFormatter
112
+ }, column))] }, row))
113
+ ]
114
+ })
115
+ }), legend && /* @__PURE__ */ jsx(HeatmapChartLegend, {
116
+ domain,
117
+ layout,
118
+ valueFormatter
119
+ })]
120
+ })]
121
+ });
157
122
  }
158
- function HeatmapChartCell({
159
- row,
160
- column,
161
- value,
162
- domain,
163
- layout,
164
- showValue,
165
- valueFormatter
166
- }) {
167
- if (value == null) {
168
- return /* @__PURE__ */ jsx(
169
- "span",
170
- {
171
- className: "rounded-[4px] border border-line-subtle border-dashed",
172
- style: { width: layout.cellSize, height: layout.cellSize },
173
- title: `${row} \xB7 ${column}: no data`
174
- }
175
- );
176
- }
177
- const step = heatmapStep(value, domain);
178
- const color = HEATMAP_CHART_PALETTE[step - 1];
179
- const formatted = valueFormatter(value);
180
- const label = `${row} \xB7 ${column}: ${formatted}`;
181
- const textColor = step >= 4 ? "var(--color-fg-on-brand)" : "var(--color-fg-primary)";
182
- return /* @__PURE__ */ jsxs(
183
- "button",
184
- {
185
- type: "button",
186
- className: "group/cell relative flex items-center justify-center rounded-[4px] outline-none focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)]",
187
- style: {
188
- width: layout.cellSize,
189
- height: layout.cellSize,
190
- backgroundColor: color
191
- },
192
- "aria-label": label,
193
- children: [
194
- showValue && /* @__PURE__ */ jsx(
195
- "span",
196
- {
197
- className: "pointer-events-none tabular-nums",
198
- style: { fontSize: layout.valueFontSize, color: textColor },
199
- children: formatted
200
- }
201
- ),
202
- /* @__PURE__ */ jsx(
203
- "span",
204
- {
205
- role: "tooltip",
206
- className: "pointer-events-none absolute bottom-full left-1/2 z-10 mb-1.5 -translate-x-1/2 whitespace-nowrap rounded-md border border-line-subtle bg-surface-overlay px-2 py-1 text-fg-primary text-gdt-xs opacity-0 shadow-2 transition-opacity group-hover/cell:opacity-100 group-focus-visible/cell:opacity-100",
207
- children: label
208
- }
209
- )
210
- ]
211
- }
212
- );
123
+ /**
124
+ * One grid cell. Missing data (no matching datum for this row/column) renders
125
+ * a dashed placeholder and is skipped from tab order — there is nothing to
126
+ * announce or hover. A valued cell is a focusable, hoverable swatch: the
127
+ * `aria-label` carries the row/column/value so screen readers get the exact
128
+ * figure without relying on the visual tooltip, which mirrors it for sighted
129
+ * hover/keyboard-focus use.
130
+ */
131
+ function HeatmapChartCell({ row, column, value, domain, layout, showValue, valueFormatter }) {
132
+ if (value == null) return /* @__PURE__ */ jsx("span", {
133
+ className: "rounded-[4px] border border-line-subtle border-dashed",
134
+ style: {
135
+ width: layout.cellSize,
136
+ height: layout.cellSize
137
+ },
138
+ title: `${row} · ${column}: no data`
139
+ });
140
+ const step = heatmapStep(value, domain);
141
+ const color = HEATMAP_CHART_PALETTE[step - 1];
142
+ const formatted = valueFormatter(value);
143
+ const label = `${row} · ${column}: ${formatted}`;
144
+ const textColor = step >= 4 ? "var(--color-fg-on-brand)" : "var(--color-fg-primary)";
145
+ return /* @__PURE__ */ jsxs("button", {
146
+ type: "button",
147
+ className: "group/cell relative flex items-center justify-center rounded-[4px] outline-none focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)]",
148
+ style: {
149
+ width: layout.cellSize,
150
+ height: layout.cellSize,
151
+ backgroundColor: color
152
+ },
153
+ "aria-label": label,
154
+ children: [showValue && /* @__PURE__ */ jsx("span", {
155
+ className: "pointer-events-none tabular-nums",
156
+ style: {
157
+ fontSize: layout.valueFontSize,
158
+ color: textColor
159
+ },
160
+ children: formatted
161
+ }), /* @__PURE__ */ jsx("span", {
162
+ role: "tooltip",
163
+ className: "pointer-events-none absolute bottom-full left-1/2 z-10 mb-1.5 -translate-x-1/2 whitespace-nowrap rounded-md border border-line-subtle bg-surface-overlay px-2 py-1 text-fg-primary text-gdt-xs opacity-0 shadow-2 transition-opacity group-hover/cell:opacity-100 group-focus-visible/cell:opacity-100",
164
+ children: label
165
+ })]
166
+ });
213
167
  }
214
- function HeatmapChartLegend({
215
- domain,
216
- layout,
217
- valueFormatter
218
- }) {
219
- return /* @__PURE__ */ jsxs(
220
- "div",
221
- {
222
- className: "flex items-center gap-2 text-fg-caption-placeholder",
223
- style: { fontSize: layout.labelFontSize },
224
- children: [
225
- /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: valueFormatter(domain[0]) }),
226
- /* @__PURE__ */ jsx("div", { className: "flex overflow-hidden rounded-[3px]", children: HEATMAP_CHART_PALETTE.map((color) => /* @__PURE__ */ jsx(
227
- "span",
228
- {
229
- "aria-hidden": "true",
230
- style: {
231
- backgroundColor: color,
232
- width: layout.legendSwatchSize,
233
- height: layout.legendSwatchSize / 2
234
- }
235
- },
236
- color
237
- )) }),
238
- /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: valueFormatter(domain[1]) })
239
- ]
240
- }
241
- );
168
+ /** Sequential-scale legend — the opacity ramp bounded by the domain's min/max. */
169
+ function HeatmapChartLegend({ domain, layout, valueFormatter }) {
170
+ return /* @__PURE__ */ jsxs("div", {
171
+ className: "flex items-center gap-2 text-fg-caption-placeholder",
172
+ style: { fontSize: layout.labelFontSize },
173
+ children: [
174
+ /* @__PURE__ */ jsx("span", {
175
+ className: "tabular-nums",
176
+ children: valueFormatter(domain[0])
177
+ }),
178
+ /* @__PURE__ */ jsx("div", {
179
+ className: "flex overflow-hidden rounded-[3px]",
180
+ children: HEATMAP_CHART_PALETTE.map((color) => /* @__PURE__ */ jsx("span", {
181
+ "aria-hidden": "true",
182
+ style: {
183
+ backgroundColor: color,
184
+ width: layout.legendSwatchSize,
185
+ height: layout.legendSwatchSize / 2
186
+ }
187
+ }, color))
188
+ }),
189
+ /* @__PURE__ */ jsx("span", {
190
+ className: "tabular-nums",
191
+ children: valueFormatter(domain[1])
192
+ })
193
+ ]
194
+ });
242
195
  }
243
- export {
244
- HEATMAP_CHART_LAYOUT,
245
- HEATMAP_CHART_PALETTE,
246
- HeatmapChart
247
- };
248
- //# sourceMappingURL=heatmap-chart.js.map
196
+ //#endregion
197
+ export { HEATMAP_CHART_LAYOUT, HEATMAP_CHART_PALETTE, HeatmapChart };
package/dist/infotip.d.ts CHANGED
@@ -1,11 +1,10 @@
1
- import * as React from 'react';
2
- import { Popover } from '@base-ui/react/popover';
3
-
4
- declare function Infotip({ ...props }: Popover.Root.Props): React.JSX.Element;
5
- declare function InfotipTrigger({ ...props }: Popover.Trigger.Props): React.JSX.Element;
1
+ import { Popover } from "@base-ui/react/popover";
2
+ //#region src/infotip.d.ts
3
+ declare function Infotip({ ...props }: Popover.Root.Props): import("react").JSX.Element;
4
+ declare function InfotipTrigger({ ...props }: Popover.Trigger.Props): import("react").JSX.Element;
6
5
  type InfotipContentProps = Popover.Popup.Props & Pick<Popover.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset"> & Pick<Popover.Portal.Props, "container"> & {
7
- showArrow?: boolean;
6
+ showArrow?: boolean;
8
7
  };
9
- declare function InfotipContent({ className, container, side, sideOffset, align, alignOffset, showArrow, children, ...props }: InfotipContentProps): React.JSX.Element;
10
-
11
- export { Infotip, InfotipContent, InfotipTrigger };
8
+ declare function InfotipContent({ className, container, side, sideOffset, align, alignOffset, showArrow, children, ...props }: InfotipContentProps): import("react").JSX.Element;
9
+ //#endregion
10
+ export { Infotip, InfotipContent, InfotipTrigger };