@giddaa-housing/ui 0.1.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 (315) hide show
  1. package/README.md +18 -6
  2. package/css/base.css +37 -0
  3. package/css/components.css +135 -0
  4. package/css/generated/shared.css +1 -0
  5. package/css/giddaa.css +402 -0
  6. package/css/preset.css +77 -0
  7. package/css/styles.css +2 -0
  8. package/css/theme.css +255 -0
  9. package/dist/accordion.d.ts +9 -10
  10. package/dist/accordion.js +41 -117
  11. package/dist/activity-timeline.d.ts +29 -0
  12. package/dist/activity-timeline.js +97 -0
  13. package/dist/alert.d.ts +8 -9
  14. package/dist/alert.js +53 -141
  15. package/dist/auth-layout.d.ts +23 -0
  16. package/dist/auth-layout.js +153 -0
  17. package/dist/avatar.d.ts +6 -6
  18. package/dist/avatar.js +40 -142
  19. package/dist/badge.d.ts +12 -13
  20. package/dist/badge.js +66 -114
  21. package/dist/bar-chart.d.ts +136 -114
  22. package/dist/bar-chart.js +244 -297
  23. package/dist/breadcrumb.d.ts +5 -5
  24. package/dist/breadcrumb.js +56 -148
  25. package/dist/bullet-chart.d.ts +33 -33
  26. package/dist/bullet-chart.js +123 -183
  27. package/dist/button-BZIeyUw6.d.ts +17 -0
  28. package/dist/button-group.d.ts +13 -16
  29. package/dist/button-group.js +38 -163
  30. package/dist/button.d.ts +2 -19
  31. package/dist/button.js +90 -142
  32. package/dist/calendar.d.ts +6 -6
  33. package/dist/calendar.js +134 -288
  34. package/dist/card.d.ts +14 -16
  35. package/dist/card.js +58 -174
  36. package/dist/carousel.d.ts +34 -35
  37. package/dist/carousel.js +319 -378
  38. package/dist/chart.d.ts +58 -59
  39. package/dist/chart.js +350 -466
  40. package/dist/checkbox.d.ts +10 -12
  41. package/dist/checkbox.js +84 -84
  42. package/dist/cn-BI_4DMBf.js +23 -0
  43. package/dist/collapsible.d.ts +7 -8
  44. package/dist/collapsible.js +23 -77
  45. package/dist/combobox.d.ts +10 -10
  46. package/dist/combobox.js +220 -696
  47. package/dist/cta.d.ts +64 -0
  48. package/dist/cta.js +192 -0
  49. package/dist/currency-selector.d.ts +41 -0
  50. package/dist/currency-selector.js +114 -0
  51. package/dist/data-table.d.ts +164 -0
  52. package/dist/data-table.js +673 -0
  53. package/dist/date-picker.d.ts +27 -20
  54. package/dist/date-picker.js +122 -520
  55. package/dist/details-card.d.ts +19 -0
  56. package/dist/details-card.js +118 -0
  57. package/dist/dialog.d.ts +13 -14
  58. package/dist/dialog.js +117 -320
  59. package/dist/dropdown-menu.d.ts +14 -14
  60. package/dist/dropdown-menu.js +170 -365
  61. package/dist/dropzone.d.ts +55 -55
  62. package/dist/dropzone.js +328 -467
  63. package/dist/editorial-card.d.ts +27 -0
  64. package/dist/editorial-card.js +144 -0
  65. package/dist/empty-state.d.ts +8 -9
  66. package/dist/empty-state.js +48 -135
  67. package/dist/field.d.ts +23 -25
  68. package/dist/field.js +111 -327
  69. package/dist/filter.d.ts +118 -0
  70. package/dist/filter.js +775 -0
  71. package/dist/footer.d.ts +40 -0
  72. package/dist/footer.js +227 -0
  73. package/dist/funnel-chart.d.ts +38 -41
  74. package/dist/funnel-chart.js +168 -563
  75. package/dist/gallery-indicator.d.ts +17 -0
  76. package/dist/gallery-indicator.js +75 -0
  77. package/dist/heatmap-chart.d.ts +95 -0
  78. package/dist/heatmap-chart.js +197 -0
  79. package/dist/infotip.d.ts +10 -0
  80. package/dist/infotip.js +40 -0
  81. package/dist/input-CfoEJ8A6.d.ts +12 -0
  82. package/dist/input-group.d.ts +16 -19
  83. package/dist/input-group.js +92 -372
  84. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  85. package/dist/input-size-context.d.ts +2 -11
  86. package/dist/input-size-context.js +14 -20
  87. package/dist/input.d.ts +2 -13
  88. package/dist/input.js +23 -79
  89. package/dist/item.d.ts +7 -8
  90. package/dist/item.js +22 -89
  91. package/dist/kpi-card.d.ts +18 -20
  92. package/dist/kpi-card.js +84 -232
  93. package/dist/label.d.ts +6 -6
  94. package/dist/label.js +39 -66
  95. package/dist/line-chart.d.ts +88 -89
  96. package/dist/line-chart.js +143 -262
  97. package/dist/logo.d.ts +4 -4
  98. package/dist/logo.js +87 -141
  99. package/dist/map-indicator.d.ts +13 -0
  100. package/dist/map-indicator.js +83 -0
  101. package/dist/match.d.ts +15 -0
  102. package/dist/match.js +68 -0
  103. package/dist/media-gallery-hero.d.ts +58 -0
  104. package/dist/media-gallery-hero.js +201 -0
  105. package/dist/media-player.d.ts +60 -0
  106. package/dist/media-player.js +919 -0
  107. package/dist/multi-step-form.d.ts +56 -0
  108. package/dist/multi-step-form.js +342 -0
  109. package/dist/number-input.d.ts +34 -34
  110. package/dist/number-input.js +62 -413
  111. package/dist/page-header.d.ts +10 -11
  112. package/dist/page-header.js +34 -107
  113. package/dist/pagination.d.ts +17 -20
  114. package/dist/pagination.js +132 -341
  115. package/dist/password-input.d.ts +5 -12
  116. package/dist/password-input.js +32 -354
  117. package/dist/phone-input.d.ts +19 -19
  118. package/dist/phone-input.js +232 -561
  119. package/dist/photo-gallery.d.ts +20 -20
  120. package/dist/photo-gallery.js +314 -746
  121. package/dist/picker-lzgmsNfG.js +32 -0
  122. package/dist/pie-chart.d.ts +60 -60
  123. package/dist/pie-chart.js +141 -184
  124. package/dist/popover.d.ts +9 -9
  125. package/dist/popover.js +60 -156
  126. package/dist/price-tag.d.ts +34 -0
  127. package/dist/price-tag.js +118 -0
  128. package/dist/progress.d.ts +18 -16
  129. package/dist/progress.js +156 -300
  130. package/dist/property-listing-card.d.ts +29 -0
  131. package/dist/property-listing-card.js +117 -0
  132. package/dist/radar-chart.d.ts +108 -0
  133. package/dist/radar-chart.js +172 -0
  134. package/dist/radio-group.d.ts +11 -13
  135. package/dist/radio-group.js +47 -96
  136. package/dist/review-block.d.ts +18 -0
  137. package/dist/review-block.js +154 -0
  138. package/dist/rich-text-editor.d.ts +30 -14
  139. package/dist/rich-text-editor.js +594 -979
  140. package/dist/scatter-chart.d.ts +140 -0
  141. package/dist/scatter-chart.js +248 -0
  142. package/dist/search-input.d.ts +8 -15
  143. package/dist/search-input.js +58 -408
  144. package/dist/select.d.ts +8 -8
  145. package/dist/select.js +131 -291
  146. package/dist/separator.d.ts +8 -9
  147. package/dist/separator.js +31 -70
  148. package/dist/sheet.d.ts +11 -11
  149. package/dist/sheet.js +84 -262
  150. package/dist/sidebar.d.ts +32 -37
  151. package/dist/sidebar.js +380 -1055
  152. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  153. package/dist/size-context.d.ts +2 -11
  154. package/dist/size-context.js +14 -18
  155. package/dist/skeleton.d.ts +4 -5
  156. package/dist/skeleton.js +9 -45
  157. package/dist/slider.d.ts +27 -0
  158. package/dist/slider.js +81 -0
  159. package/dist/sparkline.d.ts +43 -46
  160. package/dist/sparkline.js +223 -561
  161. package/dist/stepper.d.ts +23 -24
  162. package/dist/stepper.js +149 -276
  163. package/dist/styles.css +9995 -2
  164. package/dist/switch.d.ts +10 -12
  165. package/dist/switch.js +49 -106
  166. package/dist/table-card.d.ts +35 -0
  167. package/dist/table-card.js +125 -0
  168. package/dist/table.d.ts +18 -14
  169. package/dist/table.js +114 -182
  170. package/dist/tabs.d.ts +23 -15
  171. package/dist/tabs.js +62 -149
  172. package/dist/tag.d.ts +22 -23
  173. package/dist/tag.js +104 -156
  174. package/dist/testimonial-block.d.ts +33 -0
  175. package/dist/testimonial-block.js +208 -0
  176. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  177. package/dist/textarea.d.ts +2 -12
  178. package/dist/textarea.js +20 -74
  179. package/dist/time-picker.d.ts +11 -11
  180. package/dist/time-picker.js +247 -464
  181. package/dist/toast.d.ts +16 -18
  182. package/dist/toast.js +154 -310
  183. package/dist/tooltip.d.ts +9 -10
  184. package/dist/tooltip.js +33 -91
  185. package/dist/tree-map.d.ts +54 -57
  186. package/dist/tree-map.js +231 -646
  187. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  188. package/dist/waterfall-chart.d.ts +126 -0
  189. package/dist/waterfall-chart.js +480 -0
  190. package/package.json +123 -34
  191. package/dist/accordion.js.map +0 -1
  192. package/dist/alert.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/base.css +0 -32
  197. package/dist/breadcrumb.js.map +0 -1
  198. package/dist/bullet-chart.js.map +0 -1
  199. package/dist/button-group.js.map +0 -1
  200. package/dist/button.js.map +0 -1
  201. package/dist/calendar.js.map +0 -1
  202. package/dist/card.js.map +0 -1
  203. package/dist/carousel.js.map +0 -1
  204. package/dist/chart.js.map +0 -1
  205. package/dist/checkbox.js.map +0 -1
  206. package/dist/collapsible.js.map +0 -1
  207. package/dist/combobox.js.map +0 -1
  208. package/dist/date-picker.js.map +0 -1
  209. package/dist/dialog.js.map +0 -1
  210. package/dist/dropdown-menu.js.map +0 -1
  211. package/dist/dropzone.js.map +0 -1
  212. package/dist/empty-state.js.map +0 -1
  213. package/dist/field.js.map +0 -1
  214. package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
  215. package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
  216. package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
  217. package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
  218. package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
  219. package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
  220. package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
  221. package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
  222. package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
  223. package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
  224. package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
  225. package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
  226. package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
  227. package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
  228. package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
  229. package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
  230. package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
  231. package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
  232. package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
  233. package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
  234. package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
  235. package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
  236. package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
  237. package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
  238. package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
  239. package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
  240. package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
  241. package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
  242. package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
  243. package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
  244. package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
  245. package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
  246. package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
  247. package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
  248. package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
  249. package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
  250. package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
  251. package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
  252. package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
  253. package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
  254. package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
  255. package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
  256. package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
  257. package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
  258. package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
  259. package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
  260. package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
  261. package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
  262. package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
  263. package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
  264. package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
  265. package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
  266. package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
  267. package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
  268. package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
  269. package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
  270. package/dist/funnel-chart.js.map +0 -1
  271. package/dist/index.d.ts +0 -87
  272. package/dist/index.js +0 -10448
  273. package/dist/index.js.map +0 -1
  274. package/dist/input-group.js.map +0 -1
  275. package/dist/input-size-context.js.map +0 -1
  276. package/dist/input.js.map +0 -1
  277. package/dist/item.js.map +0 -1
  278. package/dist/kpi-card.js.map +0 -1
  279. package/dist/label.js.map +0 -1
  280. package/dist/line-chart.js.map +0 -1
  281. package/dist/logo.js.map +0 -1
  282. package/dist/number-input.js.map +0 -1
  283. package/dist/page-header.js.map +0 -1
  284. package/dist/pagination.js.map +0 -1
  285. package/dist/password-input.js.map +0 -1
  286. package/dist/phone-input.js.map +0 -1
  287. package/dist/photo-gallery.js.map +0 -1
  288. package/dist/pie-chart.js.map +0 -1
  289. package/dist/popover.js.map +0 -1
  290. package/dist/progress.js.map +0 -1
  291. package/dist/radio-group.js.map +0 -1
  292. package/dist/red-hat-display.css +0 -2
  293. package/dist/rich-text-editor.js.map +0 -1
  294. package/dist/search-input.js.map +0 -1
  295. package/dist/select.js.map +0 -1
  296. package/dist/separator.js.map +0 -1
  297. package/dist/sheet.js.map +0 -1
  298. package/dist/sidebar.js.map +0 -1
  299. package/dist/size-context.js.map +0 -1
  300. package/dist/skeleton.js.map +0 -1
  301. package/dist/sparkline.js.map +0 -1
  302. package/dist/stepper.js.map +0 -1
  303. package/dist/switch.js.map +0 -1
  304. package/dist/tab-list.d.ts +0 -38
  305. package/dist/tab-list.js +0 -394
  306. package/dist/tab-list.js.map +0 -1
  307. package/dist/table.js.map +0 -1
  308. package/dist/tabs.js.map +0 -1
  309. package/dist/tag.js.map +0 -1
  310. package/dist/textarea.js.map +0 -1
  311. package/dist/theme/giddaa.css +0 -2
  312. package/dist/time-picker.js.map +0 -1
  313. package/dist/toast.js.map +0 -1
  314. package/dist/tooltip.js.map +0 -1
  315. package/dist/tree-map.js.map +0 -1
@@ -0,0 +1,140 @@
1
+ import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
2
+ import { ChartConfig } from "./chart.js";
3
+ import * as React from "react";
4
+ import { CartesianGrid, Scatter, ScatterChart as ScatterChart$1, XAxis, YAxis } from "recharts";
5
+ import { Payload } from "recharts/types/component/DefaultTooltipContent";
6
+ //#region src/scatter-chart.d.ts
7
+ /**
8
+ * Scatter charts are composable wrappers over the recharts cartesian
9
+ * primitives. recharts 3 registers graphical items through context when they
10
+ * render, so the primitives CAN be wrapped in our own components. Each
11
+ * wrapper bakes in the giddaa defaults (tokens, size-scaled type, mark specs)
12
+ * and forwards every recharts prop, so anything can be overridden in place or
13
+ * replaced with the raw recharts element.
14
+ *
15
+ * Anatomy: `ScatterChart` is the plot root (frame + responsive box + recharts
16
+ * chart); compose the grid, axes, series, and the shared overlays from
17
+ * `./chart` as children. Unlike `BarChart`/`RadarChart`, each series carries
18
+ * its own `data` (an array of `{ x, y }` pairs) rather than sharing one row
19
+ * per category.
20
+ *
21
+ * @example
22
+ * <ChartCard size="md">
23
+ * <ChartHeader>
24
+ * <ChartTitle>Price vs. size</ChartTitle>
25
+ * <ChartDescription>Lekki listings · ₦m by sqm</ChartDescription>
26
+ * </ChartHeader>
27
+ * <ScatterChart config={config}>
28
+ * <ScatterChartGrid />
29
+ * <ScatterChartXAxis dataKey="size" name="Size" unit="sqm" />
30
+ * <ScatterChartYAxis dataKey="price" name="Price" unit="₦m" />
31
+ * <ChartTooltip content={<ScatterChartTooltipContent />} />
32
+ * <ScatterChartSeries data={data} name="Lekki" />
33
+ * </ScatterChart>
34
+ * </ChartCard>
35
+ */
36
+ /**
37
+ * Categorical series palette — the theme-aware `chart-1`…`chart-3` tokens.
38
+ * Assign colours in this fixed order, never cycled: a fourth series folds into
39
+ * "Other" or becomes a second chart.
40
+ */
41
+ declare const SCATTER_CHART_PALETTE: readonly ["var(--color-chart-1)", "var(--color-chart-2)", "var(--color-chart-3)"];
42
+ type ScatterChartLayout = {
43
+ /** Plot height in px. Width stays fluid via the ResponsiveContainer. */
44
+ height: number;
45
+ /** Outer margin around the plot. */
46
+ margin: {
47
+ top: number;
48
+ right: number;
49
+ bottom: number;
50
+ left: number;
51
+ };
52
+ /** Axis tick label font size. */
53
+ tickFontSize: number;
54
+ /** Space between an axis and its tick labels. */
55
+ tickMargin: number;
56
+ /** Reserved width for the value axis. */
57
+ yAxisWidth: number;
58
+ /** Radius of a resting point, in px (r ≥ 4 keeps the ≥8px marker floor). */
59
+ dotRadius: number;
60
+ /** Radius of the active (hover) point. */
61
+ activeDotRadius: number;
62
+ };
63
+ declare const SCATTER_CHART_LAYOUT: Record<ComponentSize, ScatterChartLayout>;
64
+ type ScatterChartProps = Omit<React.ComponentProps<typeof ScatterChart$1>, "width" | "height"> & {
65
+ /** Series labels/icons for the shared tooltip and legend (see `ChartConfig`). */
66
+ config?: ChartConfig;
67
+ /** Plot scale; inherited from the nearest `SizeProvider` when omitted. */
68
+ size?: ComponentSize;
69
+ /** Applied to the responsive plot box, e.g. to override its height. */
70
+ className?: string;
71
+ };
72
+ /**
73
+ * Plot root — wraps the shared `ChartContainer` (tooltip/legend theming,
74
+ * responsive box) around the recharts `ScatterChart` with a size-scaled
75
+ * height and margin. `size` also flows to the child primitives through
76
+ * `SizeProvider`. Extra props reach the recharts chart (`data`, `syncId`,
77
+ * `margin`, …).
78
+ */
79
+ declare function ScatterChart({ config, size, className, children, ...props }: ScatterChartProps): React.JSX.Element;
80
+ type ScatterChartGridProps = React.ComponentProps<typeof CartesianGrid>;
81
+ /**
82
+ * Value reference lines — recharts `CartesianGrid` painted with the `line`
83
+ * token (`line-subtle` matches the chart card surface in both themes, so it
84
+ * would vanish). Both axes are quantitative in a scatter plot, so horizontal
85
+ * and vertical lines render by default; pass `vertical={false}` to thin it out.
86
+ */
87
+ declare function ScatterChartGrid(props: ScatterChartGridProps): React.JSX.Element;
88
+ type ScatterChartXAxisProps = React.ComponentProps<typeof XAxis> & {
89
+ /** Explicit axis scale; otherwise inherited from the chart's `size`. */
90
+ size?: ComponentSize;
91
+ };
92
+ /**
93
+ * Value axis — recharts `XAxis` defaulting to `type="number"` (a scatter axis
94
+ * is continuous, not categorical), with no axis/tick lines, size-scaled tick
95
+ * margin, and caption-placeholder tick ink. Pass `name`/`unit` to label this
96
+ * axis in the tooltip. Passing your own `tick` replaces the default styling
97
+ * entirely.
98
+ */
99
+ declare function ScatterChartXAxis({ size, type, tick, ...props }: ScatterChartXAxisProps): React.JSX.Element;
100
+ type ScatterChartYAxisProps = React.ComponentProps<typeof YAxis> & {
101
+ /** Explicit axis scale; otherwise inherited from the chart's `size`. */
102
+ size?: ComponentSize;
103
+ };
104
+ /**
105
+ * Value axis — recharts `YAxis` defaulting to `type="number"`, with no
106
+ * axis/tick lines, size-scaled tick type, and reserved width for value
107
+ * labels. Pass `name`/`unit` to label this axis in the tooltip. Override
108
+ * `width` for long tick labels.
109
+ */
110
+ declare function ScatterChartYAxis({ size, type, tick, ...props }: ScatterChartYAxisProps): React.JSX.Element;
111
+ type ScatterChartTooltipContentProps = {
112
+ active?: boolean;
113
+ payload?: ReadonlyArray<Payload<string | number, string | number>>;
114
+ className?: string;
115
+ };
116
+ /**
117
+ * Hover tooltip for a scatter point. Unlike the shared `ChartTooltipContent`
118
+ * (built for a single hero value), a scatter point carries one value per
119
+ * axis, so this lists every axis entry — each labelled by its `XAxis`/
120
+ * `YAxis` `name` and `unit` — under one series dot, on the same elevated
121
+ * overlay (bg-surface-overlay, shadow-2, border-subtle) as the rest of the
122
+ * chart library.
123
+ */
124
+ declare function ScatterChartTooltipContent({ active, payload, className }: ScatterChartTooltipContentProps): React.JSX.Element | null;
125
+ type ScatterChartSeriesProps = React.ComponentProps<typeof Scatter> & {
126
+ /** Series colour for the points. Defaults to the first categorical chart token. */
127
+ color?: string;
128
+ /** Explicit mark scale; otherwise inherited from the chart's `size`. */
129
+ size?: ComponentSize;
130
+ };
131
+ /**
132
+ * One data series — recharts `Scatter` with the giddaa mark spec: solid
133
+ * resting points at a size-scaled radius (r ≥ 4, the ≥8px marker floor) and a
134
+ * larger active point ringed in `surface-raised` so overlapping series stay
135
+ * separable. `color` drives both shapes at once; `shape`/`activeShape` still
136
+ * win when passed directly.
137
+ */
138
+ declare function ScatterChartSeries({ color, size, shape, activeShape, ...props }: ScatterChartSeriesProps): React.JSX.Element;
139
+ //#endregion
140
+ export { SCATTER_CHART_LAYOUT, SCATTER_CHART_PALETTE, ScatterChart, ScatterChartGrid, type ScatterChartGridProps, type ScatterChartLayout, type ScatterChartProps, ScatterChartSeries, type ScatterChartSeriesProps, ScatterChartTooltipContent, type ScatterChartTooltipContentProps, ScatterChartXAxis, type ScatterChartXAxisProps, ScatterChartYAxis, type ScatterChartYAxisProps };
@@ -0,0 +1,248 @@
1
+ "use client";
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { SizeProvider, useComponentSize } from "./size-context.js";
4
+ import { ChartContainer, cartesianAxisProps } from "./chart.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { CartesianGrid, Scatter, ScatterChart as ScatterChart$1, XAxis, YAxis } from "recharts";
7
+ //#region src/scatter-chart.tsx
8
+ /**
9
+ * Scatter charts are composable wrappers over the recharts cartesian
10
+ * primitives. recharts 3 registers graphical items through context when they
11
+ * render, so the primitives CAN be wrapped in our own components. Each
12
+ * wrapper bakes in the giddaa defaults (tokens, size-scaled type, mark specs)
13
+ * and forwards every recharts prop, so anything can be overridden in place or
14
+ * replaced with the raw recharts element.
15
+ *
16
+ * Anatomy: `ScatterChart` is the plot root (frame + responsive box + recharts
17
+ * chart); compose the grid, axes, series, and the shared overlays from
18
+ * `./chart` as children. Unlike `BarChart`/`RadarChart`, each series carries
19
+ * its own `data` (an array of `{ x, y }` pairs) rather than sharing one row
20
+ * per category.
21
+ *
22
+ * @example
23
+ * <ChartCard size="md">
24
+ * <ChartHeader>
25
+ * <ChartTitle>Price vs. size</ChartTitle>
26
+ * <ChartDescription>Lekki listings · ₦m by sqm</ChartDescription>
27
+ * </ChartHeader>
28
+ * <ScatterChart config={config}>
29
+ * <ScatterChartGrid />
30
+ * <ScatterChartXAxis dataKey="size" name="Size" unit="sqm" />
31
+ * <ScatterChartYAxis dataKey="price" name="Price" unit="₦m" />
32
+ * <ChartTooltip content={<ScatterChartTooltipContent />} />
33
+ * <ScatterChartSeries data={data} name="Lekki" />
34
+ * </ScatterChart>
35
+ * </ChartCard>
36
+ */
37
+ /**
38
+ * Categorical series palette — the theme-aware `chart-1`…`chart-3` tokens.
39
+ * Assign colours in this fixed order, never cycled: a fourth series folds into
40
+ * "Other" or becomes a second chart.
41
+ */
42
+ const SCATTER_CHART_PALETTE = [
43
+ "var(--color-chart-1)",
44
+ "var(--color-chart-2)",
45
+ "var(--color-chart-3)"
46
+ ];
47
+ const DEFAULT_SERIES_COLOR = SCATTER_CHART_PALETTE[0];
48
+ const SCATTER_CHART_LAYOUT = {
49
+ sm: {
50
+ height: 220,
51
+ margin: {
52
+ top: 16,
53
+ right: 12,
54
+ bottom: 0,
55
+ left: 0
56
+ },
57
+ tickFontSize: 10,
58
+ tickMargin: 6,
59
+ yAxisWidth: 32,
60
+ dotRadius: 4,
61
+ activeDotRadius: 6
62
+ },
63
+ md: {
64
+ height: 260,
65
+ margin: {
66
+ top: 20,
67
+ right: 16,
68
+ bottom: 0,
69
+ left: 0
70
+ },
71
+ tickFontSize: 11,
72
+ tickMargin: 8,
73
+ yAxisWidth: 36,
74
+ dotRadius: 5,
75
+ activeDotRadius: 7
76
+ },
77
+ lg: {
78
+ height: 320,
79
+ margin: {
80
+ top: 24,
81
+ right: 20,
82
+ bottom: 0,
83
+ left: 0
84
+ },
85
+ tickFontSize: 12,
86
+ tickMargin: 10,
87
+ yAxisWidth: 40,
88
+ dotRadius: 6,
89
+ activeDotRadius: 8
90
+ }
91
+ };
92
+ /**
93
+ * Plot root — wraps the shared `ChartContainer` (tooltip/legend theming,
94
+ * responsive box) around the recharts `ScatterChart` with a size-scaled
95
+ * height and margin. `size` also flows to the child primitives through
96
+ * `SizeProvider`. Extra props reach the recharts chart (`data`, `syncId`,
97
+ * `margin`, …).
98
+ */
99
+ function ScatterChart({ config = {}, size, className, children, ...props }) {
100
+ const resolvedSize = useComponentSize(size);
101
+ const layout = SCATTER_CHART_LAYOUT[resolvedSize];
102
+ return /* @__PURE__ */ jsx(SizeProvider, {
103
+ size: resolvedSize,
104
+ children: /* @__PURE__ */ jsx(ChartContainer, {
105
+ config,
106
+ className: cn("aspect-auto w-full", className),
107
+ style: { height: layout.height },
108
+ children: /* @__PURE__ */ jsx(ScatterChart$1, {
109
+ accessibilityLayer: true,
110
+ margin: layout.margin,
111
+ ...props,
112
+ children
113
+ })
114
+ })
115
+ });
116
+ }
117
+ /**
118
+ * Value reference lines — recharts `CartesianGrid` painted with the `line`
119
+ * token (`line-subtle` matches the chart card surface in both themes, so it
120
+ * would vanish). Both axes are quantitative in a scatter plot, so horizontal
121
+ * and vertical lines render by default; pass `vertical={false}` to thin it out.
122
+ */
123
+ function ScatterChartGrid(props) {
124
+ return /* @__PURE__ */ jsx(CartesianGrid, {
125
+ stroke: "var(--color-line)",
126
+ ...props
127
+ });
128
+ }
129
+ /**
130
+ * Value axis — recharts `XAxis` defaulting to `type="number"` (a scatter axis
131
+ * is continuous, not categorical), with no axis/tick lines, size-scaled tick
132
+ * margin, and caption-placeholder tick ink. Pass `name`/`unit` to label this
133
+ * axis in the tooltip. Passing your own `tick` replaces the default styling
134
+ * entirely.
135
+ */
136
+ function ScatterChartXAxis({ size, type = "number", tick, ...props }) {
137
+ const layout = SCATTER_CHART_LAYOUT[useComponentSize(size)];
138
+ const axes = cartesianAxisProps(layout);
139
+ const defaultTick = {
140
+ ...axes.xAxis.tick,
141
+ fill: "var(--color-fg-caption-placeholder)"
142
+ };
143
+ return /* @__PURE__ */ jsx(XAxis, {
144
+ type,
145
+ tickLine: axes.xAxis.tickLine,
146
+ axisLine: axes.xAxis.axisLine,
147
+ tickMargin: axes.xAxis.tickMargin,
148
+ tick: tick ?? defaultTick,
149
+ ...props
150
+ });
151
+ }
152
+ /**
153
+ * Value axis — recharts `YAxis` defaulting to `type="number"`, with no
154
+ * axis/tick lines, size-scaled tick type, and reserved width for value
155
+ * labels. Pass `name`/`unit` to label this axis in the tooltip. Override
156
+ * `width` for long tick labels.
157
+ */
158
+ function ScatterChartYAxis({ size, type = "number", tick, ...props }) {
159
+ const layout = SCATTER_CHART_LAYOUT[useComponentSize(size)];
160
+ const axes = cartesianAxisProps(layout);
161
+ const defaultTick = {
162
+ ...axes.yAxis.tick,
163
+ fill: "var(--color-fg-caption-placeholder)"
164
+ };
165
+ return /* @__PURE__ */ jsx(YAxis, {
166
+ type,
167
+ tickLine: axes.yAxis.tickLine,
168
+ axisLine: axes.yAxis.axisLine,
169
+ width: axes.yAxis.width,
170
+ tick: tick ?? defaultTick,
171
+ ...props
172
+ });
173
+ }
174
+ /**
175
+ * Hover tooltip for a scatter point. Unlike the shared `ChartTooltipContent`
176
+ * (built for a single hero value), a scatter point carries one value per
177
+ * axis, so this lists every axis entry — each labelled by its `XAxis`/
178
+ * `YAxis` `name` and `unit` — under one series dot, on the same elevated
179
+ * overlay (bg-surface-overlay, shadow-2, border-subtle) as the rest of the
180
+ * chart library.
181
+ */
182
+ function ScatterChartTooltipContent({ active, payload, className }) {
183
+ if (!active || !payload?.length) return null;
184
+ const points = payload.filter((entry) => entry.type !== "none" && entry.value != null);
185
+ if (!points.length) return null;
186
+ const dotColor = points[0]?.color ?? points[0]?.fill ?? DEFAULT_SERIES_COLOR;
187
+ return /* @__PURE__ */ jsxs("div", {
188
+ className: cn("flex flex-col gap-1 rounded-lg border border-line-subtle bg-surface-overlay p-3 shadow-2", className),
189
+ children: [/* @__PURE__ */ jsx("span", {
190
+ "aria-hidden": "true",
191
+ className: "size-2.5 shrink-0 rounded-full",
192
+ style: { backgroundColor: dotColor }
193
+ }), points.map((point, index) => /* @__PURE__ */ jsxs("div", {
194
+ className: "flex items-baseline justify-between gap-3 text-gdt-sm",
195
+ children: [/* @__PURE__ */ jsx("span", {
196
+ className: "text-fg-secondary",
197
+ children: point.name
198
+ }), /* @__PURE__ */ jsxs("span", {
199
+ className: "font-extrabold text-fg-primary tabular-nums",
200
+ children: [point.value, point.unit != null && point.unit !== "" && /* @__PURE__ */ jsx("span", {
201
+ className: "ml-1 font-normal text-fg-caption-placeholder",
202
+ children: point.unit
203
+ })]
204
+ })]
205
+ }, `${point.dataKey ?? point.name ?? index}`))]
206
+ });
207
+ }
208
+ /** Renders one resting or active point as a plain filled/ringed circle. */
209
+ function ScatterPoint({ cx, cy, r, color, ringed }) {
210
+ if (cx == null || cy == null) return null;
211
+ return /* @__PURE__ */ jsx("circle", {
212
+ cx,
213
+ cy,
214
+ r,
215
+ fill: color,
216
+ stroke: ringed ? "var(--color-surface-raised)" : "none",
217
+ strokeWidth: ringed ? 2 : 0
218
+ });
219
+ }
220
+ /**
221
+ * One data series — recharts `Scatter` with the giddaa mark spec: solid
222
+ * resting points at a size-scaled radius (r ≥ 4, the ≥8px marker floor) and a
223
+ * larger active point ringed in `surface-raised` so overlapping series stay
224
+ * separable. `color` drives both shapes at once; `shape`/`activeShape` still
225
+ * win when passed directly.
226
+ */
227
+ function ScatterChartSeries({ color = DEFAULT_SERIES_COLOR, size, shape, activeShape, ...props }) {
228
+ const layout = SCATTER_CHART_LAYOUT[useComponentSize(size)];
229
+ return /* @__PURE__ */ jsx(Scatter, {
230
+ shape: shape ?? ((shapeProps) => /* @__PURE__ */ jsx(ScatterPoint, {
231
+ cx: shapeProps.cx,
232
+ cy: shapeProps.cy,
233
+ r: layout.dotRadius,
234
+ color
235
+ })),
236
+ activeShape: activeShape ?? ((shapeProps) => /* @__PURE__ */ jsx(ScatterPoint, {
237
+ cx: shapeProps.cx,
238
+ cy: shapeProps.cy,
239
+ r: layout.activeDotRadius,
240
+ color,
241
+ ringed: true
242
+ })),
243
+ fill: color,
244
+ ...props
245
+ });
246
+ }
247
+ //#endregion
248
+ export { SCATTER_CHART_LAYOUT, SCATTER_CHART_PALETTE, ScatterChart, ScatterChartGrid, ScatterChartSeries, ScatterChartTooltipContent, ScatterChartXAxis, ScatterChartYAxis };
@@ -1,19 +1,12 @@
1
- import * as React from 'react';
2
- import { InputGroupInput } from './input-group.js';
3
- import 'class-variance-authority/types';
4
- import 'class-variance-authority';
5
- import './button.js';
6
- import '@base-ui/react/button';
7
- import './input.js';
8
- import './input-size-context.js';
9
- import './textarea.js';
10
-
1
+ import { InputGroupInput } from "./input-group.js";
2
+ import * as React from "react";
3
+ //#region src/search-input.d.ts
11
4
  type SearchInputVariant = "dashboard" | "app";
12
5
  type SearchInputProps = React.ComponentProps<typeof InputGroupInput> & {
13
- wrapperClassName?: string;
14
- onClear?: () => void;
15
- variant?: SearchInputVariant;
6
+ wrapperClassName?: string;
7
+ onClear?: () => void;
8
+ variant?: SearchInputVariant;
16
9
  };
17
10
  declare const SearchInput: React.ForwardRefExoticComponent<Omit<SearchInputProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
18
-
19
- export { SearchInput };
11
+ //#endregion
12
+ export { SearchInput };