@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.
- package/README.md +18 -6
- package/css/base.css +37 -0
- package/css/components.css +135 -0
- package/css/generated/shared.css +1 -0
- package/css/giddaa.css +402 -0
- package/css/preset.css +77 -0
- package/css/styles.css +2 -0
- package/css/theme.css +255 -0
- package/dist/accordion.d.ts +9 -10
- package/dist/accordion.js +41 -117
- package/dist/activity-timeline.d.ts +29 -0
- package/dist/activity-timeline.js +97 -0
- package/dist/alert.d.ts +8 -9
- package/dist/alert.js +53 -141
- package/dist/auth-layout.d.ts +23 -0
- package/dist/auth-layout.js +153 -0
- package/dist/avatar.d.ts +6 -6
- package/dist/avatar.js +40 -142
- package/dist/badge.d.ts +12 -13
- package/dist/badge.js +66 -114
- package/dist/bar-chart.d.ts +136 -114
- package/dist/bar-chart.js +244 -297
- package/dist/breadcrumb.d.ts +5 -5
- package/dist/breadcrumb.js +56 -148
- package/dist/bullet-chart.d.ts +33 -33
- package/dist/bullet-chart.js +123 -183
- package/dist/button-BZIeyUw6.d.ts +17 -0
- package/dist/button-group.d.ts +13 -16
- package/dist/button-group.js +38 -163
- package/dist/button.d.ts +2 -19
- package/dist/button.js +90 -142
- package/dist/calendar.d.ts +6 -6
- package/dist/calendar.js +134 -288
- package/dist/card.d.ts +14 -16
- package/dist/card.js +58 -174
- package/dist/carousel.d.ts +34 -35
- package/dist/carousel.js +319 -378
- package/dist/chart.d.ts +58 -59
- package/dist/chart.js +350 -466
- package/dist/checkbox.d.ts +10 -12
- package/dist/checkbox.js +84 -84
- package/dist/cn-BI_4DMBf.js +23 -0
- package/dist/collapsible.d.ts +7 -8
- package/dist/collapsible.js +23 -77
- package/dist/combobox.d.ts +10 -10
- package/dist/combobox.js +220 -696
- package/dist/cta.d.ts +64 -0
- package/dist/cta.js +192 -0
- package/dist/currency-selector.d.ts +41 -0
- package/dist/currency-selector.js +114 -0
- package/dist/data-table.d.ts +164 -0
- package/dist/data-table.js +673 -0
- package/dist/date-picker.d.ts +27 -20
- package/dist/date-picker.js +122 -520
- package/dist/details-card.d.ts +19 -0
- package/dist/details-card.js +118 -0
- package/dist/dialog.d.ts +13 -14
- package/dist/dialog.js +117 -320
- package/dist/dropdown-menu.d.ts +14 -14
- package/dist/dropdown-menu.js +170 -365
- package/dist/dropzone.d.ts +55 -55
- package/dist/dropzone.js +328 -467
- package/dist/editorial-card.d.ts +27 -0
- package/dist/editorial-card.js +144 -0
- package/dist/empty-state.d.ts +8 -9
- package/dist/empty-state.js +48 -135
- package/dist/field.d.ts +23 -25
- package/dist/field.js +111 -327
- package/dist/filter.d.ts +118 -0
- package/dist/filter.js +775 -0
- package/dist/footer.d.ts +40 -0
- package/dist/footer.js +227 -0
- package/dist/funnel-chart.d.ts +38 -41
- package/dist/funnel-chart.js +168 -563
- package/dist/gallery-indicator.d.ts +17 -0
- package/dist/gallery-indicator.js +75 -0
- package/dist/heatmap-chart.d.ts +95 -0
- package/dist/heatmap-chart.js +197 -0
- package/dist/infotip.d.ts +10 -0
- package/dist/infotip.js +40 -0
- package/dist/input-CfoEJ8A6.d.ts +12 -0
- package/dist/input-group.d.ts +16 -19
- package/dist/input-group.js +92 -372
- package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
- package/dist/input-size-context.d.ts +2 -11
- package/dist/input-size-context.js +14 -20
- package/dist/input.d.ts +2 -13
- package/dist/input.js +23 -79
- package/dist/item.d.ts +7 -8
- package/dist/item.js +22 -89
- package/dist/kpi-card.d.ts +18 -20
- package/dist/kpi-card.js +84 -232
- package/dist/label.d.ts +6 -6
- package/dist/label.js +39 -66
- package/dist/line-chart.d.ts +88 -89
- package/dist/line-chart.js +143 -262
- package/dist/logo.d.ts +4 -4
- package/dist/logo.js +87 -141
- package/dist/map-indicator.d.ts +13 -0
- package/dist/map-indicator.js +83 -0
- package/dist/match.d.ts +15 -0
- package/dist/match.js +68 -0
- package/dist/media-gallery-hero.d.ts +58 -0
- package/dist/media-gallery-hero.js +201 -0
- package/dist/media-player.d.ts +60 -0
- package/dist/media-player.js +919 -0
- package/dist/multi-step-form.d.ts +56 -0
- package/dist/multi-step-form.js +342 -0
- package/dist/number-input.d.ts +34 -34
- package/dist/number-input.js +62 -413
- package/dist/page-header.d.ts +10 -11
- package/dist/page-header.js +34 -107
- package/dist/pagination.d.ts +17 -20
- package/dist/pagination.js +132 -341
- package/dist/password-input.d.ts +5 -12
- package/dist/password-input.js +32 -354
- package/dist/phone-input.d.ts +19 -19
- package/dist/phone-input.js +232 -561
- package/dist/photo-gallery.d.ts +20 -20
- package/dist/photo-gallery.js +314 -746
- package/dist/picker-lzgmsNfG.js +32 -0
- package/dist/pie-chart.d.ts +60 -60
- package/dist/pie-chart.js +141 -184
- package/dist/popover.d.ts +9 -9
- package/dist/popover.js +60 -156
- package/dist/price-tag.d.ts +34 -0
- package/dist/price-tag.js +118 -0
- package/dist/progress.d.ts +18 -16
- package/dist/progress.js +156 -300
- package/dist/property-listing-card.d.ts +29 -0
- package/dist/property-listing-card.js +117 -0
- package/dist/radar-chart.d.ts +108 -0
- package/dist/radar-chart.js +172 -0
- package/dist/radio-group.d.ts +11 -13
- package/dist/radio-group.js +47 -96
- package/dist/review-block.d.ts +18 -0
- package/dist/review-block.js +154 -0
- package/dist/rich-text-editor.d.ts +30 -14
- package/dist/rich-text-editor.js +594 -979
- package/dist/scatter-chart.d.ts +140 -0
- package/dist/scatter-chart.js +248 -0
- package/dist/search-input.d.ts +8 -15
- package/dist/search-input.js +58 -408
- package/dist/select.d.ts +8 -8
- package/dist/select.js +131 -291
- package/dist/separator.d.ts +8 -9
- package/dist/separator.js +31 -70
- package/dist/sheet.d.ts +11 -11
- package/dist/sheet.js +84 -262
- package/dist/sidebar.d.ts +32 -37
- package/dist/sidebar.js +380 -1055
- package/dist/size-context-D4mYvcg8.d.ts +10 -0
- package/dist/size-context.d.ts +2 -11
- package/dist/size-context.js +14 -18
- package/dist/skeleton.d.ts +4 -5
- package/dist/skeleton.js +9 -45
- package/dist/slider.d.ts +27 -0
- package/dist/slider.js +81 -0
- package/dist/sparkline.d.ts +43 -46
- package/dist/sparkline.js +223 -561
- package/dist/stepper.d.ts +23 -24
- package/dist/stepper.js +149 -276
- package/dist/styles.css +9995 -2
- package/dist/switch.d.ts +10 -12
- package/dist/switch.js +49 -106
- package/dist/table-card.d.ts +35 -0
- package/dist/table-card.js +125 -0
- package/dist/table.d.ts +18 -14
- package/dist/table.js +114 -182
- package/dist/tabs.d.ts +23 -15
- package/dist/tabs.js +62 -149
- package/dist/tag.d.ts +22 -23
- package/dist/tag.js +104 -156
- package/dist/testimonial-block.d.ts +33 -0
- package/dist/testimonial-block.js +208 -0
- package/dist/textarea-IS_D8pXf.d.ts +11 -0
- package/dist/textarea.d.ts +2 -12
- package/dist/textarea.js +20 -74
- package/dist/time-picker.d.ts +11 -11
- package/dist/time-picker.js +247 -464
- package/dist/toast.d.ts +16 -18
- package/dist/toast.js +154 -310
- package/dist/tooltip.d.ts +9 -10
- package/dist/tooltip.js +33 -91
- package/dist/tree-map.d.ts +54 -57
- package/dist/tree-map.js +231 -646
- package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
- package/dist/waterfall-chart.d.ts +126 -0
- package/dist/waterfall-chart.js +480 -0
- package/package.json +123 -34
- package/dist/accordion.js.map +0 -1
- package/dist/alert.js.map +0 -1
- package/dist/avatar.js.map +0 -1
- package/dist/badge.js.map +0 -1
- package/dist/bar-chart.js.map +0 -1
- package/dist/base.css +0 -32
- package/dist/breadcrumb.js.map +0 -1
- package/dist/bullet-chart.js.map +0 -1
- package/dist/button-group.js.map +0 -1
- package/dist/button.js.map +0 -1
- package/dist/calendar.js.map +0 -1
- package/dist/card.js.map +0 -1
- package/dist/carousel.js.map +0 -1
- package/dist/chart.js.map +0 -1
- package/dist/checkbox.js.map +0 -1
- package/dist/collapsible.js.map +0 -1
- package/dist/combobox.js.map +0 -1
- package/dist/date-picker.js.map +0 -1
- package/dist/dialog.js.map +0 -1
- package/dist/dropdown-menu.js.map +0 -1
- package/dist/dropzone.js.map +0 -1
- package/dist/empty-state.js.map +0 -1
- package/dist/field.js.map +0 -1
- package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
- package/dist/funnel-chart.js.map +0 -1
- package/dist/index.d.ts +0 -87
- package/dist/index.js +0 -10448
- package/dist/index.js.map +0 -1
- package/dist/input-group.js.map +0 -1
- package/dist/input-size-context.js.map +0 -1
- package/dist/input.js.map +0 -1
- package/dist/item.js.map +0 -1
- package/dist/kpi-card.js.map +0 -1
- package/dist/label.js.map +0 -1
- package/dist/line-chart.js.map +0 -1
- package/dist/logo.js.map +0 -1
- package/dist/number-input.js.map +0 -1
- package/dist/page-header.js.map +0 -1
- package/dist/pagination.js.map +0 -1
- package/dist/password-input.js.map +0 -1
- package/dist/phone-input.js.map +0 -1
- package/dist/photo-gallery.js.map +0 -1
- package/dist/pie-chart.js.map +0 -1
- package/dist/popover.js.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/radio-group.js.map +0 -1
- package/dist/red-hat-display.css +0 -2
- package/dist/rich-text-editor.js.map +0 -1
- package/dist/search-input.js.map +0 -1
- package/dist/select.js.map +0 -1
- package/dist/separator.js.map +0 -1
- package/dist/sheet.js.map +0 -1
- package/dist/sidebar.js.map +0 -1
- package/dist/size-context.js.map +0 -1
- package/dist/skeleton.js.map +0 -1
- package/dist/sparkline.js.map +0 -1
- package/dist/stepper.js.map +0 -1
- package/dist/switch.js.map +0 -1
- package/dist/tab-list.d.ts +0 -38
- package/dist/tab-list.js +0 -394
- package/dist/tab-list.js.map +0 -1
- package/dist/table.js.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/tag.js.map +0 -1
- package/dist/textarea.js.map +0 -1
- package/dist/theme/giddaa.css +0 -2
- package/dist/time-picker.js.map +0 -1
- package/dist/toast.js.map +0 -1
- package/dist/tooltip.js.map +0 -1
- 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 };
|
package/dist/search-input.d.ts
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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 };
|