@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.
- package/css/generated/shared.css +1 -1
- package/css/giddaa.css +12 -2
- package/dist/accordion.d.ts +9 -10
- package/dist/accordion.js +41 -87
- package/dist/activity-timeline.d.ts +12 -16
- package/dist/activity-timeline.js +83 -198
- package/dist/alert.d.ts +8 -9
- package/dist/alert.js +53 -111
- package/dist/auth-layout.d.ts +4 -4
- package/dist/auth-layout.js +143 -294
- package/dist/avatar.d.ts +6 -6
- package/dist/avatar.js +49 -19
- package/dist/badge.d.ts +12 -14
- package/dist/badge.js +71 -11
- package/dist/bar-chart.d.ts +65 -67
- package/dist/bar-chart.js +232 -207
- package/dist/breadcrumb.d.ts +5 -5
- package/dist/breadcrumb.js +56 -118
- package/dist/bullet-chart.d.ts +41 -37
- package/dist/bullet-chart.js +125 -148
- package/dist/button-BZIeyUw6.d.ts +17 -0
- package/dist/button-group.d.ts +13 -16
- package/dist/button-group.js +39 -88
- package/dist/button.d.ts +2 -19
- package/dist/button.js +94 -13
- package/dist/calendar.d.ts +6 -6
- package/dist/calendar.js +138 -17
- package/dist/card.d.ts +14 -16
- package/dist/card.js +59 -145
- package/dist/carousel.d.ts +34 -35
- package/dist/carousel.js +335 -20
- package/dist/chart.d.ts +90 -63
- package/dist/chart.js +573 -28
- package/dist/checkbox.d.ts +10 -12
- package/dist/checkbox.js +82 -47
- package/dist/cn-BI_4DMBf.js +23 -0
- package/dist/collapsible.d.ts +7 -8
- package/dist/collapsible.js +22 -47
- package/dist/combobox.d.ts +10 -10
- package/dist/combobox.js +236 -44
- package/dist/cta.d.ts +12 -14
- package/dist/cta.js +175 -341
- package/dist/currency-selector.d.ts +31 -32
- package/dist/currency-selector.js +106 -184
- package/dist/data-table.d.ts +168 -0
- package/dist/data-table.js +676 -0
- package/dist/date-picker.d.ts +22 -23
- package/dist/date-picker.js +119 -192
- package/dist/details-card.d.ts +7 -7
- package/dist/details-card.js +104 -253
- package/dist/dialog.d.ts +13 -14
- package/dist/dialog.js +116 -209
- package/dist/dropdown-menu.d.ts +13 -13
- package/dist/dropdown-menu.js +180 -37
- package/dist/dropzone.d.ts +55 -55
- package/dist/dropzone.js +327 -439
- package/dist/editorial-card.d.ts +23 -25
- package/dist/editorial-card.js +129 -296
- package/dist/empty-state.d.ts +8 -9
- package/dist/empty-state.js +48 -105
- package/dist/field.d.ts +23 -25
- package/dist/field.js +110 -221
- package/dist/filter.d.ts +118 -0
- package/dist/filter.js +775 -0
- package/dist/footer.d.ts +8 -15
- package/dist/footer.js +197 -400
- package/dist/funnel-chart.d.ts +49 -48
- package/dist/funnel-chart.js +170 -189
- package/dist/gallery-indicator.d.ts +11 -12
- package/dist/gallery-indicator.js +75 -12
- package/dist/heatmap-chart.d.ts +47 -50
- package/dist/heatmap-chart.js +186 -237
- package/dist/infotip.d.ts +8 -9
- package/dist/infotip.js +33 -59
- package/dist/input-CfoEJ8A6.d.ts +12 -0
- package/dist/input-group.d.ts +16 -20
- package/dist/input-group.js +99 -23
- 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 +17 -9
- package/dist/input.d.ts +2 -13
- package/dist/input.js +27 -11
- package/dist/item.d.ts +7 -8
- package/dist/item.js +22 -59
- package/dist/kpi-card.d.ts +18 -20
- package/dist/kpi-card.js +84 -192
- package/dist/label.d.ts +6 -6
- package/dist/label.js +40 -8
- package/dist/line-chart.d.ts +200 -129
- package/dist/line-chart.js +330 -105
- package/dist/list-item.d.ts +22 -0
- package/dist/list-item.js +84 -0
- package/dist/logo.d.ts +4 -4
- package/dist/logo.js +92 -9
- package/dist/map-indicator.d.ts +7 -7
- package/dist/map-indicator.js +80 -106
- package/dist/match.d.ts +10 -11
- package/dist/match.js +62 -107
- package/dist/media-gallery-hero.d.ts +40 -42
- package/dist/media-gallery-hero.js +182 -343
- package/dist/media-player.d.ts +17 -17
- package/dist/media-player.js +873 -1348
- 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 +64 -117
- package/dist/page-header.d.ts +10 -11
- package/dist/page-header.js +34 -79
- package/dist/pagination.d.ts +17 -21
- package/dist/pagination.js +132 -207
- package/dist/password-input.d.ts +5 -13
- package/dist/password-input.js +31 -55
- package/dist/phone-input.d.ts +19 -20
- package/dist/phone-input.js +226 -344
- package/dist/photo-gallery.d.ts +19 -19
- package/dist/photo-gallery.js +313 -449
- package/dist/picker-lzgmsNfG.js +32 -0
- package/dist/pie-chart.d.ts +121 -90
- package/dist/pie-chart.js +183 -149
- package/dist/popover.d.ts +9 -9
- package/dist/popover.js +72 -23
- package/dist/price-tag.d.ts +26 -27
- package/dist/price-tag.js +113 -173
- package/dist/progress.d.ts +16 -17
- package/dist/progress.js +169 -24
- package/dist/property-listing-card.d.ts +14 -17
- package/dist/property-listing-card.js +102 -220
- package/dist/purchase-option-card.d.ts +79 -0
- package/dist/purchase-option-card.js +176 -0
- package/dist/radar-chart.d.ts +29 -31
- package/dist/radar-chart.js +162 -137
- package/dist/radio-group.d.ts +11 -13
- package/dist/radio-group.js +46 -60
- package/dist/review-block.d.ts +14 -16
- package/dist/review-block.js +154 -10
- package/dist/rich-text-editor.d.ts +30 -14
- package/dist/rich-text-editor.js +592 -716
- package/dist/scatter-chart.d.ts +45 -47
- package/dist/scatter-chart.js +236 -240
- package/dist/search-input.d.ts +8 -16
- package/dist/search-input.js +57 -109
- package/dist/select.d.ts +8 -8
- package/dist/select.js +144 -27
- package/dist/separator.d.ts +8 -9
- package/dist/separator.js +32 -8
- package/dist/sheet.d.ts +11 -11
- package/dist/sheet.js +103 -24
- package/dist/sidebar.d.ts +32 -37
- package/dist/sidebar.js +364 -634
- package/dist/size-context-D4mYvcg8.d.ts +10 -0
- package/dist/size-context.d.ts +2 -11
- package/dist/size-context.js +17 -9
- package/dist/skeleton.d.ts +4 -5
- package/dist/skeleton.js +12 -8
- package/dist/slider.d.ts +8 -9
- package/dist/slider.js +64 -135
- package/dist/sparkline.d.ts +68 -58
- package/dist/sparkline.js +315 -251
- package/dist/stepper.d.ts +23 -24
- package/dist/stepper.js +149 -246
- package/dist/styles.css +1004 -116
- package/dist/switch.d.ts +10 -12
- package/dist/switch.js +48 -70
- 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 +117 -154
- package/dist/tabs.d.ts +33 -15
- package/dist/tabs.js +110 -18
- package/dist/tag.d.ts +21 -23
- package/dist/tag.js +103 -159
- package/dist/testimonial-block.d.ts +18 -19
- package/dist/testimonial-block.js +189 -358
- package/dist/textarea-IS_D8pXf.d.ts +11 -0
- package/dist/textarea.d.ts +2 -12
- package/dist/textarea.js +24 -11
- package/dist/time-picker.d.ts +11 -11
- package/dist/time-picker.js +245 -302
- package/dist/toast.d.ts +16 -18
- package/dist/toast.js +154 -205
- package/dist/tooltip.d.ts +8 -9
- package/dist/tooltip.js +37 -12
- package/dist/tree-map.d.ts +59 -62
- package/dist/tree-map.js +226 -269
- package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
- package/dist/waterfall-chart.d.ts +94 -97
- package/dist/waterfall-chart.js +455 -552
- package/package.json +36 -9
- package/dist/accordion.js.map +0 -1
- package/dist/activity-timeline.js.map +0 -1
- package/dist/alert.js.map +0 -1
- package/dist/auth-layout.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/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/chunk-322YCNVL.js +0 -278
- package/dist/chunk-322YCNVL.js.map +0 -1
- package/dist/chunk-3ACQVT7A.js +0 -25
- package/dist/chunk-3ACQVT7A.js.map +0 -1
- package/dist/chunk-3T65TLJX.js +0 -334
- package/dist/chunk-3T65TLJX.js.map +0 -1
- package/dist/chunk-6ZSGQHH2.js +0 -192
- package/dist/chunk-6ZSGQHH2.js.map +0 -1
- package/dist/chunk-7TBMLFGW.js +0 -41
- package/dist/chunk-7TBMLFGW.js.map +0 -1
- package/dist/chunk-B4H6RNDH.js +0 -135
- package/dist/chunk-B4H6RNDH.js.map +0 -1
- package/dist/chunk-BUXCGZ6X.js +0 -219
- package/dist/chunk-BUXCGZ6X.js.map +0 -1
- package/dist/chunk-CHII2QHH.js +0 -58
- package/dist/chunk-CHII2QHH.js.map +0 -1
- package/dist/chunk-DMNOXRRW.js +0 -147
- package/dist/chunk-DMNOXRRW.js.map +0 -1
- package/dist/chunk-EFSOSSIC.js +0 -130
- package/dist/chunk-EFSOSSIC.js.map +0 -1
- package/dist/chunk-FZDSVMKY.js +0 -363
- package/dist/chunk-FZDSVMKY.js.map +0 -1
- package/dist/chunk-GJOFIJS3.js +0 -246
- package/dist/chunk-GJOFIJS3.js.map +0 -1
- package/dist/chunk-HL3ZSYES.js +0 -23
- package/dist/chunk-HL3ZSYES.js.map +0 -1
- package/dist/chunk-JVLUBAPB.js +0 -129
- package/dist/chunk-JVLUBAPB.js.map +0 -1
- package/dist/chunk-KDPYSOYZ.js +0 -64
- package/dist/chunk-KDPYSOYZ.js.map +0 -1
- package/dist/chunk-KSMDANKI.js +0 -43
- package/dist/chunk-KSMDANKI.js.map +0 -1
- package/dist/chunk-MEKCCOP5.js +0 -46
- package/dist/chunk-MEKCCOP5.js.map +0 -1
- package/dist/chunk-NOFXVRWL.js +0 -451
- package/dist/chunk-NOFXVRWL.js.map +0 -1
- package/dist/chunk-PC5MHNVA.js +0 -171
- package/dist/chunk-PC5MHNVA.js.map +0 -1
- package/dist/chunk-QKAQZ2GU.js +0 -122
- package/dist/chunk-QKAQZ2GU.js.map +0 -1
- package/dist/chunk-QZHSHSVV.js +0 -26
- package/dist/chunk-QZHSHSVV.js.map +0 -1
- package/dist/chunk-RBMK26XD.js +0 -19
- package/dist/chunk-RBMK26XD.js.map +0 -1
- package/dist/chunk-SFNJGF6M.js +0 -262
- package/dist/chunk-SFNJGF6M.js.map +0 -1
- package/dist/chunk-UJJNLGTM.js +0 -112
- package/dist/chunk-UJJNLGTM.js.map +0 -1
- package/dist/chunk-VGR4ZWJ3.js +0 -418
- package/dist/chunk-VGR4ZWJ3.js.map +0 -1
- package/dist/chunk-XG47P6D4.js +0 -99
- package/dist/chunk-XG47P6D4.js.map +0 -1
- package/dist/chunk-XZZAHNVM.js +0 -21
- package/dist/chunk-XZZAHNVM.js.map +0 -1
- package/dist/chunk-Y4TTYVNE.js +0 -36
- package/dist/chunk-Y4TTYVNE.js.map +0 -1
- package/dist/chunk-YDWIHW6Q.js +0 -69
- package/dist/chunk-YDWIHW6Q.js.map +0 -1
- package/dist/collapsible.js.map +0 -1
- package/dist/combobox.js.map +0 -1
- package/dist/cta.js.map +0 -1
- package/dist/currency-selector.js.map +0 -1
- package/dist/date-picker.js.map +0 -1
- package/dist/details-card.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/editorial-card.js.map +0 -1
- package/dist/empty-state.js.map +0 -1
- package/dist/field.js.map +0 -1
- package/dist/footer.js.map +0 -1
- package/dist/funnel-chart.js.map +0 -1
- package/dist/gallery-indicator.js.map +0 -1
- package/dist/heatmap-chart.js.map +0 -1
- package/dist/infotip.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/map-indicator.js.map +0 -1
- package/dist/match.js.map +0 -1
- package/dist/media-gallery-hero.js.map +0 -1
- package/dist/media-player.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/price-tag.js.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/property-listing-card.js.map +0 -1
- package/dist/radar-chart.js.map +0 -1
- package/dist/radio-group.js.map +0 -1
- package/dist/review-block.js.map +0 -1
- package/dist/rich-text-editor.js.map +0 -1
- package/dist/scatter-chart.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/slider.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 -123
- 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/testimonial-block.js.map +0 -1
- package/dist/textarea.js.map +0 -1
- 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
- package/dist/waterfall-chart.js.map +0 -1
package/dist/bullet-chart.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/bullet-chart.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* A bullet chart — a compact linear gauge for KPI-vs-goal reporting where a full
|
|
6
6
|
* bar chart would be excessive. It encodes three things on one horizontal track:
|
|
@@ -55,44 +55,48 @@ type BulletChartSize = ComponentSize;
|
|
|
55
55
|
/** Measure-bar sentiment — `auto` derives it from `value` vs `target`. */
|
|
56
56
|
type BulletChartStatus = "auto" | "success" | "warning";
|
|
57
57
|
type BulletChartLayout = {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
58
|
+
/** Thickness of the range-band track (the pill) in px. */
|
|
59
|
+
trackHeight: number;
|
|
60
|
+
/** Thickness of the centered measure bar in px. */
|
|
61
|
+
measureHeight: number;
|
|
62
|
+
/** Height of the target marker in px — taller than the bar, inside the track. */
|
|
63
|
+
markerHeight: number;
|
|
64
|
+
/** Target marker thickness in px. */
|
|
65
|
+
markerWidth: number;
|
|
66
|
+
/** Axis tick label class. */
|
|
67
|
+
tickClass: string;
|
|
68
68
|
};
|
|
69
69
|
declare const BULLET_CHART_LAYOUT: Record<BulletChartSize, BulletChartLayout>;
|
|
70
70
|
/**
|
|
71
|
-
* Range-band shades, ordered poor → good
|
|
72
|
-
*
|
|
73
|
-
*
|
|
71
|
+
* Range-band shades, ordered poor → good, on the theme-aware neutral `line`
|
|
72
|
+
* tokens. The poorest zone (`line-subtle`) matches the card surface in both
|
|
73
|
+
* themes, so it blends into the track, and each higher zone steps toward
|
|
74
|
+
* `line-strong` — giving the gauge its qualitative context without competing
|
|
75
|
+
* with the bar. Using the semantic tokens (not raw `stone-200/300/400`) keeps
|
|
76
|
+
* the ramp correct on the dark surface, where the raw light grays would read as
|
|
77
|
+
* bright bands instead of recessive ones.
|
|
74
78
|
*/
|
|
75
|
-
declare const BULLET_RANGE_PALETTE: readonly ["var(--color-
|
|
79
|
+
declare const BULLET_RANGE_PALETTE: readonly ["var(--color-line-subtle)", "var(--color-line)", "var(--color-line-strong)"];
|
|
76
80
|
type BulletChartProps = Omit<React.ComponentProps<"div">, "children"> & {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
81
|
+
/** The realized (actualized) value — drives the measure bar length. */
|
|
82
|
+
value: number;
|
|
83
|
+
/** The goal to beat — drives the target marker and the auto status colour. */
|
|
84
|
+
target: number;
|
|
85
|
+
/** Axis start. Default 0. */
|
|
86
|
+
min?: number;
|
|
87
|
+
/** Axis end. Default the largest of `value`, `target`, and the top range. */
|
|
88
|
+
max?: number;
|
|
89
|
+
/** Internal thresholds dividing [min, max] into qualitative zones, ascending. */
|
|
90
|
+
ranges?: number[];
|
|
91
|
+
/** Axis tick values. Default `[min, midpoint, max]`. Pass `[]` to hide. */
|
|
92
|
+
ticks?: number[];
|
|
93
|
+
/** Measure-bar sentiment. Default `auto` (success when `value >= target`). */
|
|
94
|
+
status?: BulletChartStatus;
|
|
95
|
+
/** Explicit size; otherwise inherited from the nearest `SizeProvider`. */
|
|
96
|
+
size?: BulletChartSize;
|
|
97
|
+
/** Format the tick labels (and the aria summary). Default grouped integer. */
|
|
98
|
+
valueFormatter?: (value: number) => string;
|
|
95
99
|
};
|
|
96
100
|
declare function BulletChart({ value, target, min, max, ranges, ticks, status, size, valueFormatter, className, ...props }: BulletChartProps): React.JSX.Element;
|
|
97
|
-
|
|
98
|
-
export { BULLET_CHART_LAYOUT, BULLET_RANGE_PALETTE, BulletChart, type BulletChartLayout, type BulletChartProps, type BulletChartSize, type BulletChartStatus };
|
|
101
|
+
//#endregion
|
|
102
|
+
export { BULLET_CHART_LAYOUT, BULLET_RANGE_PALETTE, BulletChart, type BulletChartLayout, type BulletChartProps, type BulletChartSize, type BulletChartStatus };
|
package/dist/bullet-chart.js
CHANGED
|
@@ -1,156 +1,133 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
} from "./chunk-HL3ZSYES.js";
|
|
5
|
-
import {
|
|
6
|
-
cn
|
|
7
|
-
} from "./chunk-Y4TTYVNE.js";
|
|
8
|
-
|
|
9
|
-
// src/bullet-chart.tsx
|
|
2
|
+
import { t as cn } from "./cn-BI_4DMBf.js";
|
|
3
|
+
import { useComponentSize } from "./size-context.js";
|
|
10
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
5
|
+
//#region src/bullet-chart.tsx
|
|
6
|
+
const BULLET_CHART_LAYOUT = {
|
|
7
|
+
sm: {
|
|
8
|
+
trackHeight: 26,
|
|
9
|
+
measureHeight: 11,
|
|
10
|
+
markerHeight: 20,
|
|
11
|
+
markerWidth: 3,
|
|
12
|
+
tickClass: "text-gdt-xs"
|
|
13
|
+
},
|
|
14
|
+
md: {
|
|
15
|
+
trackHeight: 34,
|
|
16
|
+
measureHeight: 15,
|
|
17
|
+
markerHeight: 26,
|
|
18
|
+
markerWidth: 4,
|
|
19
|
+
tickClass: "text-gdt-sm"
|
|
20
|
+
},
|
|
21
|
+
lg: {
|
|
22
|
+
trackHeight: 44,
|
|
23
|
+
measureHeight: 19,
|
|
24
|
+
markerHeight: 34,
|
|
25
|
+
markerWidth: 5,
|
|
26
|
+
tickClass: "text-gdt-sm"
|
|
27
|
+
}
|
|
33
28
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Range-band shades, ordered poor → good, on the theme-aware neutral `line`
|
|
31
|
+
* tokens. The poorest zone (`line-subtle`) matches the card surface in both
|
|
32
|
+
* themes, so it blends into the track, and each higher zone steps toward
|
|
33
|
+
* `line-strong` — giving the gauge its qualitative context without competing
|
|
34
|
+
* with the bar. Using the semantic tokens (not raw `stone-200/300/400`) keeps
|
|
35
|
+
* the ramp correct on the dark surface, where the raw light grays would read as
|
|
36
|
+
* bright bands instead of recessive ones.
|
|
37
|
+
*/
|
|
38
|
+
const BULLET_RANGE_PALETTE = [
|
|
39
|
+
"var(--color-line-subtle)",
|
|
40
|
+
"var(--color-line)",
|
|
41
|
+
"var(--color-line-strong)"
|
|
38
42
|
];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
43
|
+
const STATUS_COLOR = {
|
|
44
|
+
success: "var(--color-status-success)",
|
|
45
|
+
warning: "var(--color-status-warning)"
|
|
42
46
|
};
|
|
47
|
+
/** Clamp a value into [min, max] and express it as a 0–100 track percentage. */
|
|
43
48
|
function toPercent(value, min, max) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
if (max <= min) return 0;
|
|
50
|
+
const ratio = (value - min) / (max - min);
|
|
51
|
+
return Math.min(Math.max(ratio, 0), 1) * 100;
|
|
47
52
|
}
|
|
48
|
-
function BulletChart({
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
transform: "translate(-50%, -50%)"
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
)
|
|
130
|
-
] }),
|
|
131
|
-
resolvedTicks.length > 0 && /* @__PURE__ */ jsx("div", { className: "relative h-4 w-full", children: resolvedTicks.map((tick) => {
|
|
132
|
-
const pct = toPercent(tick, min, resolvedMax);
|
|
133
|
-
const transform = pct <= 0 ? "translateX(0)" : pct >= 100 ? "translateX(-100%)" : "translateX(-50%)";
|
|
134
|
-
return /* @__PURE__ */ jsx(
|
|
135
|
-
"span",
|
|
136
|
-
{
|
|
137
|
-
className: cn(
|
|
138
|
-
"absolute top-0 whitespace-nowrap tabular-nums text-fg-caption-placeholder",
|
|
139
|
-
layout.tickClass
|
|
140
|
-
),
|
|
141
|
-
style: { left: `${pct}%`, transform },
|
|
142
|
-
children: valueFormatter(tick)
|
|
143
|
-
},
|
|
144
|
-
tick
|
|
145
|
-
);
|
|
146
|
-
}) })
|
|
147
|
-
]
|
|
148
|
-
}
|
|
149
|
-
);
|
|
53
|
+
function BulletChart({ value, target, min = 0, max, ranges, ticks, status = "auto", size, valueFormatter = (v) => v.toLocaleString("en-NG"), className, ...props }) {
|
|
54
|
+
const layout = BULLET_CHART_LAYOUT[useComponentSize(size)];
|
|
55
|
+
const topRange = ranges?.length ? Math.max(...ranges) : 0;
|
|
56
|
+
const resolvedMax = max ?? (Math.max(value, target, topRange) || 1);
|
|
57
|
+
const resolvedTicks = ticks ?? [
|
|
58
|
+
min,
|
|
59
|
+
(min + resolvedMax) / 2,
|
|
60
|
+
resolvedMax
|
|
61
|
+
];
|
|
62
|
+
const resolvedStatus = status === "auto" ? value >= target ? "success" : "warning" : status;
|
|
63
|
+
const measureColor = STATUS_COLOR[resolvedStatus];
|
|
64
|
+
const thresholds = [
|
|
65
|
+
min,
|
|
66
|
+
...(ranges ?? []).filter((r) => r > min && r < resolvedMax).sort((a, b) => a - b),
|
|
67
|
+
resolvedMax
|
|
68
|
+
];
|
|
69
|
+
const zones = thresholds.slice(0, -1).map((from, i) => ({
|
|
70
|
+
from,
|
|
71
|
+
to: thresholds[i + 1],
|
|
72
|
+
color: BULLET_RANGE_PALETTE[Math.min(i, BULLET_RANGE_PALETTE.length - 1)]
|
|
73
|
+
}));
|
|
74
|
+
const ariaLabel = props["aria-label"] ?? `${valueFormatter(value)} of ${valueFormatter(target)} target — ${resolvedStatus === "success" ? "on track" : "behind"}`;
|
|
75
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
76
|
+
...props,
|
|
77
|
+
role: "img",
|
|
78
|
+
"aria-label": ariaLabel,
|
|
79
|
+
className: cn("flex w-full flex-col gap-2", className),
|
|
80
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
81
|
+
className: "relative w-full",
|
|
82
|
+
style: { height: layout.trackHeight },
|
|
83
|
+
children: [
|
|
84
|
+
/* @__PURE__ */ jsx("div", {
|
|
85
|
+
className: "absolute inset-0 overflow-hidden rounded-full",
|
|
86
|
+
style: { backgroundColor: BULLET_RANGE_PALETTE[0] },
|
|
87
|
+
children: zones.map((zone) => /* @__PURE__ */ jsx("div", {
|
|
88
|
+
className: "absolute inset-y-0",
|
|
89
|
+
style: {
|
|
90
|
+
left: `${toPercent(zone.from, min, resolvedMax)}%`,
|
|
91
|
+
width: `${toPercent(zone.to, min, resolvedMax) - toPercent(zone.from, min, resolvedMax)}%`,
|
|
92
|
+
backgroundColor: zone.color
|
|
93
|
+
}
|
|
94
|
+
}, zone.from))
|
|
95
|
+
}),
|
|
96
|
+
/* @__PURE__ */ jsx("div", {
|
|
97
|
+
className: "absolute left-0 top-1/2 rounded-full",
|
|
98
|
+
style: {
|
|
99
|
+
height: layout.measureHeight,
|
|
100
|
+
width: `${toPercent(value, min, resolvedMax)}%`,
|
|
101
|
+
backgroundColor: measureColor,
|
|
102
|
+
transform: "translateY(-50%)"
|
|
103
|
+
}
|
|
104
|
+
}),
|
|
105
|
+
/* @__PURE__ */ jsx("div", {
|
|
106
|
+
className: "absolute top-1/2 rounded-full bg-fg-primary",
|
|
107
|
+
style: {
|
|
108
|
+
height: layout.markerHeight,
|
|
109
|
+
width: layout.markerWidth,
|
|
110
|
+
left: `${toPercent(target, min, resolvedMax)}%`,
|
|
111
|
+
transform: "translate(-50%, -50%)"
|
|
112
|
+
}
|
|
113
|
+
})
|
|
114
|
+
]
|
|
115
|
+
}), resolvedTicks.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
116
|
+
className: "relative h-4 w-full",
|
|
117
|
+
children: resolvedTicks.map((tick) => {
|
|
118
|
+
const pct = toPercent(tick, min, resolvedMax);
|
|
119
|
+
const transform = pct <= 0 ? "translateX(0)" : pct >= 100 ? "translateX(-100%)" : "translateX(-50%)";
|
|
120
|
+
return /* @__PURE__ */ jsx("span", {
|
|
121
|
+
className: cn("absolute top-0 whitespace-nowrap tabular-nums text-fg-caption-placeholder", layout.tickClass),
|
|
122
|
+
style: {
|
|
123
|
+
left: `${pct}%`,
|
|
124
|
+
transform
|
|
125
|
+
},
|
|
126
|
+
children: valueFormatter(tick)
|
|
127
|
+
}, tick);
|
|
128
|
+
})
|
|
129
|
+
})]
|
|
130
|
+
});
|
|
150
131
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
BULLET_RANGE_PALETTE,
|
|
154
|
-
BulletChart
|
|
155
|
-
};
|
|
156
|
-
//# sourceMappingURL=bullet-chart.js.map
|
|
132
|
+
//#endregion
|
|
133
|
+
export { BULLET_CHART_LAYOUT, BULLET_RANGE_PALETTE, BulletChart };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import { Button } from "@base-ui/react/button";
|
|
4
|
+
//#region src/button.d.ts
|
|
5
|
+
declare const buttonVariants: (props?: ({
|
|
6
|
+
variant?: "danger" | "ghost" | "glass-overlay" | "link-brand" | "link-neutral" | "primary" | "primary-outline" | "secondary" | "secondary-outline" | "tertiary" | "tertiary-outline" | "whatsapp" | null | undefined;
|
|
7
|
+
size?: "icon" | "icon-lg" | "icon-sm" | "icon-xl" | "icon-xs" | "lg" | "md" | "sm" | "xl" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
declare function Button$1({ className, variant, size, isLoading, children, disabled, ...props }: Button.Props & VariantProps<typeof buttonVariants> & {
|
|
10
|
+
isLoading?: boolean;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
type ButtonLinkProps = useRender.ComponentProps<"a"> & VariantProps<typeof buttonVariants> & {
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
};
|
|
15
|
+
declare function ButtonLink({ className, render, variant, size, disabled, onClick, children, ...props }: ButtonLinkProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { ButtonLink as n, buttonVariants as r, Button$1 as t };
|
package/dist/button-group.d.ts
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { useRender } from
|
|
4
|
-
import { VariantProps } from
|
|
5
|
-
|
|
6
|
-
import { ComponentSize } from './size-context.js';
|
|
7
|
-
import '@base-ui/react/separator';
|
|
8
|
-
|
|
1
|
+
import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
|
|
2
|
+
import { Separator } from "./separator.js";
|
|
3
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
+
import { VariantProps } from "class-variance-authority";
|
|
5
|
+
//#region src/button-group.d.ts
|
|
9
6
|
declare const buttonGroupVariants: (props?: ({
|
|
10
|
-
|
|
11
|
-
} &
|
|
7
|
+
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
12
9
|
declare function ButtonGroup({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants> & {
|
|
13
|
-
|
|
14
|
-
}):
|
|
15
|
-
declare function ButtonGroupText({ className, render, ...props }: useRender.ComponentProps<"div">):
|
|
16
|
-
declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps<typeof Separator>):
|
|
17
|
-
|
|
18
|
-
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
|
|
10
|
+
size?: ComponentSize;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
declare function ButtonGroupText({ className, render, ...props }: useRender.ComponentProps<"div">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
13
|
+
declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps<typeof Separator>): import("react").JSX.Element;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
|
package/dist/button-group.js
CHANGED
|
@@ -1,94 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
} from "./
|
|
4
|
-
import {
|
|
5
|
-
SizeProvider,
|
|
6
|
-
useComponentSize
|
|
7
|
-
} from "./chunk-HL3ZSYES.js";
|
|
8
|
-
import {
|
|
9
|
-
cn
|
|
10
|
-
} from "./chunk-Y4TTYVNE.js";
|
|
11
|
-
|
|
12
|
-
// src/button-group.tsx
|
|
1
|
+
import { t as cn } from "./cn-BI_4DMBf.js";
|
|
2
|
+
import { SizeProvider, useComponentSize } from "./size-context.js";
|
|
3
|
+
import { Separator } from "./separator.js";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
13
5
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
14
6
|
import { useRender } from "@base-ui/react/use-render";
|
|
15
7
|
import { cva } from "class-variance-authority";
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}) {
|
|
36
|
-
const size = useComponentSize();
|
|
37
|
-
return /* @__PURE__ */ jsx(SizeProvider, { size, children: /* @__PURE__ */ jsx(
|
|
38
|
-
"div",
|
|
39
|
-
{
|
|
40
|
-
role: "group",
|
|
41
|
-
"data-slot": "button-group",
|
|
42
|
-
"data-orientation": orientation,
|
|
43
|
-
className: cn(buttonGroupVariants({ orientation }), className),
|
|
44
|
-
...props
|
|
45
|
-
}
|
|
46
|
-
) });
|
|
8
|
+
//#region src/button-group.tsx
|
|
9
|
+
const buttonGroupVariants = cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
|
|
10
|
+
variants: { orientation: {
|
|
11
|
+
horizontal: "*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-full! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0",
|
|
12
|
+
vertical: "flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-full! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0"
|
|
13
|
+
} },
|
|
14
|
+
defaultVariants: { orientation: "horizontal" }
|
|
15
|
+
});
|
|
16
|
+
function ButtonGroup({ className, orientation, ...props }) {
|
|
17
|
+
return /* @__PURE__ */ jsx(SizeProvider, {
|
|
18
|
+
size: useComponentSize(),
|
|
19
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
20
|
+
role: "group",
|
|
21
|
+
"data-slot": "button-group",
|
|
22
|
+
"data-orientation": orientation,
|
|
23
|
+
className: cn(buttonGroupVariants({ orientation }), className),
|
|
24
|
+
...props
|
|
25
|
+
})
|
|
26
|
+
});
|
|
47
27
|
}
|
|
48
|
-
function ButtonGroupText({
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
props: mergeProps(
|
|
56
|
-
{
|
|
57
|
-
className: cn(
|
|
58
|
-
"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
59
|
-
className
|
|
60
|
-
)
|
|
61
|
-
},
|
|
62
|
-
props
|
|
63
|
-
),
|
|
64
|
-
render,
|
|
65
|
-
state: {
|
|
66
|
-
slot: "button-group-text"
|
|
67
|
-
}
|
|
68
|
-
});
|
|
28
|
+
function ButtonGroupText({ className, render, ...props }) {
|
|
29
|
+
return useRender({
|
|
30
|
+
defaultTagName: "div",
|
|
31
|
+
props: mergeProps({ className: cn("flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className) }, props),
|
|
32
|
+
render,
|
|
33
|
+
state: { slot: "button-group-text" }
|
|
34
|
+
});
|
|
69
35
|
}
|
|
70
|
-
function ButtonGroupSeparator({
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
{
|
|
78
|
-
"data-slot": "button-group-separator",
|
|
79
|
-
orientation,
|
|
80
|
-
className: cn(
|
|
81
|
-
"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",
|
|
82
|
-
className
|
|
83
|
-
),
|
|
84
|
-
...props
|
|
85
|
-
}
|
|
86
|
-
);
|
|
36
|
+
function ButtonGroupSeparator({ className, orientation = "vertical", ...props }) {
|
|
37
|
+
return /* @__PURE__ */ jsx(Separator, {
|
|
38
|
+
"data-slot": "button-group-separator",
|
|
39
|
+
orientation,
|
|
40
|
+
className: cn("relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto", className),
|
|
41
|
+
...props
|
|
42
|
+
});
|
|
87
43
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
ButtonGroupSeparator,
|
|
91
|
-
ButtonGroupText,
|
|
92
|
-
buttonGroupVariants
|
|
93
|
-
};
|
|
94
|
-
//# sourceMappingURL=button-group.js.map
|
|
44
|
+
//#endregion
|
|
45
|
+
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
|
package/dist/button.d.ts
CHANGED
|
@@ -1,19 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { Button as Button$1 } from '@base-ui/react/button';
|
|
4
|
-
import { useRender } from '@base-ui/react/use-render';
|
|
5
|
-
import { VariantProps } from 'class-variance-authority';
|
|
6
|
-
|
|
7
|
-
declare const buttonVariants: (props?: ({
|
|
8
|
-
variant?: "danger" | "secondary" | "primary" | "primary-outline" | "secondary-outline" | "tertiary" | "tertiary-outline" | "ghost" | "whatsapp" | "glass-overlay" | "link-brand" | "link-neutral" | null | undefined;
|
|
9
|
-
size?: "sm" | "md" | "lg" | "icon" | "xl" | "icon-xs" | "icon-sm" | "icon-lg" | "icon-xl" | null | undefined;
|
|
10
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
11
|
-
declare function Button({ className, variant, size, isLoading, children, disabled, ...props }: Button$1.Props & VariantProps<typeof buttonVariants> & {
|
|
12
|
-
isLoading?: boolean;
|
|
13
|
-
}): React.JSX.Element;
|
|
14
|
-
type ButtonLinkProps = useRender.ComponentProps<"a"> & VariantProps<typeof buttonVariants> & {
|
|
15
|
-
disabled?: boolean;
|
|
16
|
-
};
|
|
17
|
-
declare function ButtonLink({ className, render, variant, size, disabled, onClick, children, ...props }: ButtonLinkProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
18
|
-
|
|
19
|
-
export { Button, ButtonLink, buttonVariants };
|
|
1
|
+
import { n as ButtonLink, r as buttonVariants, t as Button } from "./button-BZIeyUw6.js";
|
|
2
|
+
export { Button, ButtonLink, buttonVariants };
|