@robr0/design-system 0.13.0 → 0.15.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 +15 -6
- package/charts.d.ts +1 -0
- package/charts.js +2 -0
- package/components/AnchorNav/AnchorNav.css +74 -0
- package/components/AnchorNav/AnchorNav.d.ts +7 -0
- package/components/AnchorNav/AnchorNav.js +74 -21
- package/components/Banner/Banner.css +110 -0
- package/components/Banner/Banner.d.ts +36 -0
- package/components/Banner/Banner.js +59 -0
- package/components/Button/Button.css +51 -0
- package/components/Button/Button.d.ts +2 -2
- package/components/Chart/Chart.css +4 -1
- package/components/CircularButton/CircularButton.css +46 -0
- package/components/CircularButton/CircularButton.d.ts +13 -2
- package/components/CircularButton/CircularButton.js +19 -16
- package/components/CommandPalette/CommandPalette.css +26 -1
- package/components/CommandPalette/CommandPalette.js +11 -7
- package/components/Composer/Composer.css +18 -0
- package/components/Composer/Composer.d.ts +4 -2
- package/components/Composer/Composer.js +1 -0
- package/components/ContributionGraph/ContributionGraph.css +28 -1
- package/components/ContributionGraph/ContributionGraph.d.ts +9 -1
- package/components/ContributionGraph/ContributionGraph.js +66 -42
- package/components/EmptyState/EmptyState.css +5 -0
- package/components/Figure/Figure.css +14 -4
- package/components/Figure/Figure.js +11 -20
- package/components/FunnelChart/FunnelChart.css +11 -35
- package/components/FunnelChart/FunnelChart.d.ts +26 -15
- package/components/FunnelChart/FunnelChart.js +82 -34
- package/components/Gauge/Gauge.css +39 -12
- package/components/Gauge/Gauge.d.ts +16 -8
- package/components/Gauge/Gauge.js +78 -62
- package/components/HoverCard/HoverCard.css +97 -0
- package/components/HoverCard/HoverCard.d.ts +29 -0
- package/components/HoverCard/HoverCard.js +83 -0
- package/components/ImageCompare/ImageCompare.css +112 -0
- package/components/ImageCompare/ImageCompare.d.ts +40 -0
- package/components/ImageCompare/ImageCompare.js +134 -0
- package/components/LinkList/LinkList.d.ts +3 -1
- package/components/LinkList/LinkList.js +4 -3
- package/components/Meter/Meter.css +98 -0
- package/components/Meter/Meter.d.ts +36 -0
- package/components/Meter/Meter.js +48 -0
- package/components/NotificationCenter/NotificationCenter.css +11 -3
- package/components/ProgressBar/ProgressBar.css +1 -1
- package/components/Rating/Rating.css +74 -0
- package/components/Rating/Rating.d.ts +41 -0
- package/components/Rating/Rating.js +124 -0
- package/components/SegmentedControl/SegmentedControl.css +23 -0
- package/components/SegmentedControl/SegmentedControl.d.ts +3 -1
- package/components/SegmentedControl/SegmentedControl.js +3 -1
- package/components/Slider/Slider.css +1 -1
- package/components/Slider/Slider.js +1 -1
- package/components/SourceTrail/SourceTrail.css +209 -0
- package/components/SourceTrail/SourceTrail.d.ts +49 -0
- package/components/SourceTrail/SourceTrail.js +108 -0
- package/components/Sparkline/Sparkline.css +26 -2
- package/components/Sparkline/Sparkline.d.ts +5 -3
- package/components/Sparkline/Sparkline.js +32 -2
- package/components/Spinner/Spinner.css +1 -1
- package/components/SplitButton/SplitButton.css +93 -0
- package/components/SplitButton/SplitButton.d.ts +43 -0
- package/components/SplitButton/SplitButton.js +67 -0
- package/components/StreamingText/StreamingText.d.ts +27 -9
- package/components/StreamingText/StreamingText.js +17 -29
- package/components/StreamingText/useStreamReveal.d.ts +70 -0
- package/components/StreamingText/useStreamReveal.js +121 -0
- package/components/ToggleGroup/ToggleGroup.css +17 -0
- package/components/ToggleGroup/ToggleGroup.d.ts +2 -0
- package/components/ToggleGroup/ToggleGroup.js +2 -0
- package/components/ToolCall/ToolCall.css +7 -2
- package/components/Tooltip/Tooltip.css +24 -7
- package/components/Tooltip/Tooltip.d.ts +2 -1
- package/components/UsageCard/UsageCard.css +30 -0
- package/components/UsageCard/UsageCard.d.ts +48 -0
- package/components/UsageCard/UsageCard.js +54 -0
- package/components/registry.d.ts +8 -2
- package/components/registry.json +89 -14
- package/components/registry.json.d.ts +89 -14
- package/components/registry.json.js +1 -1
- package/index.d.ts +8 -1
- package/index.js +19 -2
- package/package.json +5 -1
- package/tokens/motion.d.ts +9 -4
- package/tokens/motion.js +5 -1
- package/tokens/registry.json +4 -0
- package/tokens/registry.json.d.ts +4 -0
- package/tokens/registry.json.js +1 -1
- package/tokens/tokens-dark.css +11 -2
- package/tokens/tokens-light.css +25 -11
- package/tokens/tokens-primitives.css +3 -0
|
@@ -62,6 +62,23 @@
|
|
|
62
62
|
color: var(--color-action-primary-text);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
/* ============================================
|
|
66
|
+
NEUTRAL VARIANT
|
|
67
|
+
Active items fill grey instead of the action
|
|
68
|
+
teal — for sets where the selection should
|
|
69
|
+
not carry the action colour's weight.
|
|
70
|
+
============================================ */
|
|
71
|
+
|
|
72
|
+
.ds-toggle-group--neutral .ds-toggle-group__item--active {
|
|
73
|
+
background-color: var(--color-action-neutral-bg);
|
|
74
|
+
color: var(--color-action-neutral-text);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.ds-toggle-group--neutral .ds-toggle-group__item--active:hover {
|
|
78
|
+
background-color: var(--color-action-neutral-bg-hover);
|
|
79
|
+
color: var(--color-action-neutral-text);
|
|
80
|
+
}
|
|
81
|
+
|
|
65
82
|
/* ============================================
|
|
66
83
|
COMPACT
|
|
67
84
|
============================================ */
|
|
@@ -17,6 +17,8 @@ type ToggleGroupOwnProps = {
|
|
|
17
17
|
multiple?: boolean;
|
|
18
18
|
/** Component size */
|
|
19
19
|
size?: 'default' | 'compact';
|
|
20
|
+
/** Visual treatment of active items — teal by default, `neutral` fills them grey */
|
|
21
|
+
variant?: 'primary' | 'neutral';
|
|
20
22
|
/** Whether the whole group is disabled */
|
|
21
23
|
disabled?: boolean;
|
|
22
24
|
/** Called with the next selection — a string when single, an array when `multiple` */
|
|
@@ -8,6 +8,7 @@ const ToggleGroup = React.forwardRef(
|
|
|
8
8
|
value = [],
|
|
9
9
|
multiple = false,
|
|
10
10
|
size = "default",
|
|
11
|
+
variant = "primary",
|
|
11
12
|
disabled = false,
|
|
12
13
|
onValueChange,
|
|
13
14
|
onChange,
|
|
@@ -19,6 +20,7 @@ const ToggleGroup = React.forwardRef(
|
|
|
19
20
|
const classes = [
|
|
20
21
|
baseClass,
|
|
21
22
|
`${baseClass}--${size}`,
|
|
23
|
+
`${baseClass}--${variant}`,
|
|
22
24
|
disabled ? `${baseClass}--disabled` : "",
|
|
23
25
|
className
|
|
24
26
|
].filter(Boolean).join(" ");
|
|
@@ -40,6 +40,9 @@
|
|
|
40
40
|
padding: var(--padding-sm) var(--padding-lg);
|
|
41
41
|
background: none;
|
|
42
42
|
border: none;
|
|
43
|
+
/* Buttons default to the UA's buttontext, not the inherited colour, so
|
|
44
|
+
anything in the header that inherits would read black in both themes. */
|
|
45
|
+
color: var(--color-text-primary);
|
|
43
46
|
text-align: left;
|
|
44
47
|
cursor: pointer;
|
|
45
48
|
transition: background-color var(--motion-duration-fast) var(--motion-ease-standard);
|
|
@@ -215,7 +218,9 @@
|
|
|
215
218
|
inherited by default: a consumer stylesheet that sets a colour on
|
|
216
219
|
.material-symbols-rounded itself (a common global default) would
|
|
217
220
|
otherwise override inheritance and detach the icon from the state
|
|
218
|
-
colours this component sets on its parents.
|
|
219
|
-
|
|
221
|
+
colours this component sets on its parents. The chevron is excluded —
|
|
222
|
+
it is the one icon that carries its own colour rule, which this
|
|
223
|
+
higher-specificity rule would otherwise silently override. */
|
|
224
|
+
.ds-tool-call .material-symbols-rounded:not(.ds-tool-call__chevron) {
|
|
220
225
|
color: inherit;
|
|
221
226
|
}
|
|
@@ -17,8 +17,14 @@
|
|
|
17
17
|
z-index: 50;
|
|
18
18
|
padding: var(--padding-xs) var(--padding-sm); /* 6px 8px */
|
|
19
19
|
border-radius: var(--radius-xs); /* 4px */
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
/* The floating surface, same recipe as Popover: page background (the
|
|
21
|
+
container fill is semi-transparent), hairline border, floating shadow.
|
|
22
|
+
Same-polarity in both themes — light bubble on light, dark on dark —
|
|
23
|
+
softer than the old inverse fill. */
|
|
24
|
+
border: var(--border-xs) solid var(--color-bg-container-border);
|
|
25
|
+
background-color: var(--color-bg-page-primary);
|
|
26
|
+
color: var(--color-text-primary);
|
|
27
|
+
box-shadow: var(--shadow-floating);
|
|
22
28
|
font-family: var(--font-paragraph-sm-family);
|
|
23
29
|
font-size: var(--font-paragraph-sm-size);
|
|
24
30
|
font-weight: var(--font-paragraph-sm-weight);
|
|
@@ -85,38 +91,49 @@
|
|
|
85
91
|
ARROW
|
|
86
92
|
============================================ */
|
|
87
93
|
|
|
94
|
+
/* The arrow is a rotated square in the panel's fill. It overlaps the panel
|
|
95
|
+
by a pixel more than before so its opaque fill covers the panel border
|
|
96
|
+
behind it, and draws the hairline itself on its two outward edges only. */
|
|
88
97
|
.ds-tooltip__arrow {
|
|
89
98
|
position: absolute;
|
|
90
99
|
width: 8px;
|
|
91
100
|
height: 8px;
|
|
92
|
-
background-color: var(--color-bg-
|
|
101
|
+
background-color: var(--color-bg-page-primary);
|
|
93
102
|
transform: rotate(45deg);
|
|
94
103
|
}
|
|
95
104
|
|
|
96
105
|
/* Arrow — top position (arrow points down) */
|
|
97
106
|
.ds-tooltip__panel--top .ds-tooltip__arrow {
|
|
98
|
-
bottom: -
|
|
107
|
+
bottom: -5px;
|
|
99
108
|
left: 50%;
|
|
100
109
|
margin-left: -4px;
|
|
110
|
+
border-right: var(--border-xs) solid var(--color-bg-container-border);
|
|
111
|
+
border-bottom: var(--border-xs) solid var(--color-bg-container-border);
|
|
101
112
|
}
|
|
102
113
|
|
|
103
114
|
/* Arrow — bottom position (arrow points up) */
|
|
104
115
|
.ds-tooltip__panel--bottom .ds-tooltip__arrow {
|
|
105
|
-
top: -
|
|
116
|
+
top: -5px;
|
|
106
117
|
left: 50%;
|
|
107
118
|
margin-left: -4px;
|
|
119
|
+
border-top: var(--border-xs) solid var(--color-bg-container-border);
|
|
120
|
+
border-left: var(--border-xs) solid var(--color-bg-container-border);
|
|
108
121
|
}
|
|
109
122
|
|
|
110
123
|
/* Arrow — left position (arrow points right) */
|
|
111
124
|
.ds-tooltip__panel--left .ds-tooltip__arrow {
|
|
112
|
-
right: -
|
|
125
|
+
right: -5px;
|
|
113
126
|
top: 50%;
|
|
114
127
|
margin-top: -4px;
|
|
128
|
+
border-top: var(--border-xs) solid var(--color-bg-container-border);
|
|
129
|
+
border-right: var(--border-xs) solid var(--color-bg-container-border);
|
|
115
130
|
}
|
|
116
131
|
|
|
117
132
|
/* Arrow — right position (arrow points left) */
|
|
118
133
|
.ds-tooltip__panel--right .ds-tooltip__arrow {
|
|
119
|
-
left: -
|
|
134
|
+
left: -5px;
|
|
120
135
|
top: 50%;
|
|
121
136
|
margin-top: -4px;
|
|
137
|
+
border-bottom: var(--border-xs) solid var(--color-bg-container-border);
|
|
138
|
+
border-left: var(--border-xs) solid var(--color-bg-container-border);
|
|
122
139
|
}
|
|
@@ -16,6 +16,7 @@ export interface TooltipProps {
|
|
|
16
16
|
/**
|
|
17
17
|
* Tooltip component for contextual text labels.
|
|
18
18
|
* Appears on hover or focus with a short delay.
|
|
19
|
-
*
|
|
19
|
+
* Rides the system's floating surface — page background, hairline border,
|
|
20
|
+
* floating shadow — so the bubble stays light in light theme and dark in dark.
|
|
20
21
|
*/
|
|
21
22
|
export declare const Tooltip: ({ children, content, position, showDelay, hideDelay, className, }: TooltipProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* ============================================
|
|
2
|
+
USAGE CARD COMPONENT
|
|
3
|
+
An agent's budgets at a glance — meter rows
|
|
4
|
+
with reset captions, in the chart card chrome
|
|
5
|
+
============================================ */
|
|
6
|
+
|
|
7
|
+
/* Base — the card chrome itself comes from ds-chart */
|
|
8
|
+
|
|
9
|
+
.ds-usage-card__items {
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
gap: var(--gap-lg);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.ds-usage-card__item {
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
gap: var(--gap-xxs);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Reset caption — sits under the bar's trailing edge */
|
|
22
|
+
|
|
23
|
+
.ds-usage-card__reset {
|
|
24
|
+
align-self: flex-end;
|
|
25
|
+
font-family: var(--font-caption-family);
|
|
26
|
+
font-size: var(--font-caption-size);
|
|
27
|
+
font-weight: var(--font-caption-weight);
|
|
28
|
+
line-height: var(--font-caption-line-height);
|
|
29
|
+
color: var(--color-text-secondary);
|
|
30
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/** One budgeted quantity in the card — a meter row with an optional reset caption. */
|
|
3
|
+
export interface UsageItem {
|
|
4
|
+
/** What is being budgeted, e.g. the context window or a weekly limit */
|
|
5
|
+
label: string;
|
|
6
|
+
/** Current level */
|
|
7
|
+
value: number;
|
|
8
|
+
/** Upper bound of the budget; defaults to 100 */
|
|
9
|
+
max?: number;
|
|
10
|
+
/** Readout override replacing the default percentage, e.g. a token count */
|
|
11
|
+
valueText?: string;
|
|
12
|
+
/** Caption under the bar's trailing edge, e.g. when the limit resets */
|
|
13
|
+
resetLabel?: string;
|
|
14
|
+
/** Status override; left unset, the fill recolours through the card's thresholds */
|
|
15
|
+
variant?: 'info' | 'positive' | 'warning' | 'error' | 'neutral';
|
|
16
|
+
}
|
|
17
|
+
/** Props owned by UsageCard itself — everything else falls through to the root node. */
|
|
18
|
+
type UsageCardOwnProps = {
|
|
19
|
+
/** The budgets to show, one meter row each */
|
|
20
|
+
items: UsageItem[];
|
|
21
|
+
/** Card title in the shared chart-chrome header */
|
|
22
|
+
title?: string;
|
|
23
|
+
/** Supporting line under the title */
|
|
24
|
+
subtitle?: string;
|
|
25
|
+
/** Fractions of an item's max where its fill recolours to warning and then error */
|
|
26
|
+
thresholds?: {
|
|
27
|
+
warning?: number;
|
|
28
|
+
error?: number;
|
|
29
|
+
};
|
|
30
|
+
/** Chrome off (no border, padding, or fill) for use inside a panel that supplies the surface */
|
|
31
|
+
bare?: boolean;
|
|
32
|
+
/** Additional CSS classes */
|
|
33
|
+
className?: string;
|
|
34
|
+
};
|
|
35
|
+
export interface UsageCardProps extends UsageCardOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof UsageCardOwnProps> {
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* An agent's budgets at a glance — the context window plus any number of
|
|
39
|
+
* plan or rate limits, one Meter row each, with reset captions. Wears the
|
|
40
|
+
* chart family's card chrome and takes `bare` for use inside a panel.
|
|
41
|
+
*
|
|
42
|
+
* Each fill recolours as its level crosses the card's thresholds (info
|
|
43
|
+
* until warning, then warning, then error), mirroring Gauge's threshold
|
|
44
|
+
* idea; an item's own `variant` overrides the derivation. Purely
|
|
45
|
+
* presentational (no 'use client'), so it renders from a Server Component.
|
|
46
|
+
*/
|
|
47
|
+
export declare const UsageCard: React.ForwardRefExoticComponent<UsageCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
48
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Meter } from "../Meter/Meter.js";
|
|
4
|
+
import "../Chart/Chart.css";
|
|
5
|
+
import "./UsageCard.css";
|
|
6
|
+
const DEFAULT_THRESHOLDS = { warning: 0.8, error: 0.95 };
|
|
7
|
+
const UsageCard = React.forwardRef(
|
|
8
|
+
({
|
|
9
|
+
items,
|
|
10
|
+
title,
|
|
11
|
+
subtitle,
|
|
12
|
+
thresholds,
|
|
13
|
+
bare = false,
|
|
14
|
+
className = "",
|
|
15
|
+
...rest
|
|
16
|
+
}, ref) => {
|
|
17
|
+
const baseClass = "ds-usage-card";
|
|
18
|
+
const limits = { ...DEFAULT_THRESHOLDS, ...thresholds };
|
|
19
|
+
const variantFor = (item) => {
|
|
20
|
+
if (item.variant) return item.variant;
|
|
21
|
+
const max = item.max ?? 100;
|
|
22
|
+
const fraction = max > 0 ? Math.max(0, Math.min(1, item.value / max)) : 0;
|
|
23
|
+
if (fraction >= limits.error) return "error";
|
|
24
|
+
if (fraction >= limits.warning) return "warning";
|
|
25
|
+
return "info";
|
|
26
|
+
};
|
|
27
|
+
const classes = [baseClass, "ds-chart", bare && "ds-chart--bare", className].filter(Boolean).join(" ");
|
|
28
|
+
return /* @__PURE__ */ jsxs("div", { ...rest, ref, className: classes, children: [
|
|
29
|
+
(title || subtitle) && /* @__PURE__ */ jsx("div", { className: "ds-chart__header", children: /* @__PURE__ */ jsxs("div", { className: "ds-chart__header-text", children: [
|
|
30
|
+
title && /* @__PURE__ */ jsx("span", { className: "ds-chart__title", children: title }),
|
|
31
|
+
subtitle && /* @__PURE__ */ jsx("span", { className: "ds-chart__subtitle", children: subtitle })
|
|
32
|
+
] }) }),
|
|
33
|
+
/* @__PURE__ */ jsx("div", { className: `${baseClass}__items`, children: items.map((item, index) => /* @__PURE__ */ jsxs("div", { className: `${baseClass}__item`, children: [
|
|
34
|
+
/* @__PURE__ */ jsx(
|
|
35
|
+
Meter,
|
|
36
|
+
{
|
|
37
|
+
label: item.label,
|
|
38
|
+
value: item.value,
|
|
39
|
+
max: item.max ?? 100,
|
|
40
|
+
valueText: item.valueText,
|
|
41
|
+
showValue: true,
|
|
42
|
+
variant: variantFor(item),
|
|
43
|
+
size: "compact"
|
|
44
|
+
}
|
|
45
|
+
),
|
|
46
|
+
item.resetLabel && /* @__PURE__ */ jsx("span", { className: `${baseClass}__reset`, children: item.resetLabel })
|
|
47
|
+
] }, `${item.label}-${index}`)) })
|
|
48
|
+
] });
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
UsageCard.displayName = "UsageCard";
|
|
52
|
+
export {
|
|
53
|
+
UsageCard
|
|
54
|
+
};
|
package/components/registry.d.ts
CHANGED
|
@@ -18,8 +18,12 @@
|
|
|
18
18
|
* deliberately false so consumers can render them from a React
|
|
19
19
|
* Server Component.
|
|
20
20
|
* folder set only when the implementation lives in a shared folder
|
|
21
|
-
* rather than one named after the component — the
|
|
22
|
-
*
|
|
21
|
+
* rather than one named after the component — the recharts
|
|
22
|
+
* wrapper set lives in Chart/. Omitted everywhere else.
|
|
23
|
+
* recharts true when the component's module imports recharts, so it
|
|
24
|
+
* exports from the charts barrel rather than the main one
|
|
25
|
+
* (recharts is an optional peer). Held to the actual imports
|
|
26
|
+
* by scripts/generate-library-barrel.mjs on every build.
|
|
23
27
|
*
|
|
24
28
|
* `docOnlyHelpers` names the internal documentation helpers that are
|
|
25
29
|
* deliberately excluded from the public count.
|
|
@@ -47,6 +51,8 @@ export interface ComponentMeta {
|
|
|
47
51
|
client: boolean;
|
|
48
52
|
/** Folder under src/components when it differs from `name` (shared folders like Chart) */
|
|
49
53
|
folder?: string;
|
|
54
|
+
/** True when the module imports recharts and so exports from the charts barrel, not the main one */
|
|
55
|
+
recharts?: boolean;
|
|
50
56
|
}
|
|
51
57
|
export interface ComponentCategoryMeta {
|
|
52
58
|
/** Category id — the value each component's `category` field carries, and the website route segment under /components */
|
package/components/registry.json
CHANGED
|
@@ -137,7 +137,8 @@
|
|
|
137
137
|
"description": "Filled area chart for showing volume over time, with stacked and single-series variants.",
|
|
138
138
|
"category": "charts",
|
|
139
139
|
"client": false,
|
|
140
|
-
"folder": "Chart"
|
|
140
|
+
"folder": "Chart",
|
|
141
|
+
"recharts": true
|
|
141
142
|
},
|
|
142
143
|
{
|
|
143
144
|
"name": "Avatar",
|
|
@@ -163,6 +164,14 @@
|
|
|
163
164
|
"category": "data-display",
|
|
164
165
|
"client": false
|
|
165
166
|
},
|
|
167
|
+
{
|
|
168
|
+
"name": "Banner",
|
|
169
|
+
"label": "Banner",
|
|
170
|
+
"slug": "banner",
|
|
171
|
+
"description": "Full-width status strip for page-level announcements, with an action slot and optional dismissal.",
|
|
172
|
+
"category": "feedback",
|
|
173
|
+
"client": false
|
|
174
|
+
},
|
|
166
175
|
{
|
|
167
176
|
"name": "BarChart",
|
|
168
177
|
"label": "Bar chart",
|
|
@@ -170,7 +179,8 @@
|
|
|
170
179
|
"description": "Vertical bars for comparing values across categories or time, with summary stats and tooltips.",
|
|
171
180
|
"category": "charts",
|
|
172
181
|
"client": false,
|
|
173
|
-
"folder": "Chart"
|
|
182
|
+
"folder": "Chart",
|
|
183
|
+
"recharts": true
|
|
174
184
|
},
|
|
175
185
|
{
|
|
176
186
|
"name": "Breadcrumb",
|
|
@@ -184,7 +194,7 @@
|
|
|
184
194
|
"name": "Button",
|
|
185
195
|
"label": "Button",
|
|
186
196
|
"slug": "button",
|
|
187
|
-
"description": "Primary and
|
|
197
|
+
"description": "Primary, secondary, tertiary, neutral and destructive variants in default and compact sizes, with icon support and multiple states.",
|
|
188
198
|
"category": "actions",
|
|
189
199
|
"client": true
|
|
190
200
|
},
|
|
@@ -272,7 +282,7 @@
|
|
|
272
282
|
"name": "CircularButton",
|
|
273
283
|
"label": "Circular button",
|
|
274
284
|
"slug": "circular-button",
|
|
275
|
-
"description": "Round icon button with primary and
|
|
285
|
+
"description": "Round icon button with primary, secondary, tertiary and neutral variants, default and compact sizes.",
|
|
276
286
|
"category": "actions",
|
|
277
287
|
"client": false
|
|
278
288
|
},
|
|
@@ -307,7 +317,8 @@
|
|
|
307
317
|
"description": "Bar and line series in one chart, with an optional second y-axis for pairs in different units, like spend and ROAS.",
|
|
308
318
|
"category": "charts",
|
|
309
319
|
"client": false,
|
|
310
|
-
"folder": "Chart"
|
|
320
|
+
"folder": "Chart",
|
|
321
|
+
"recharts": true
|
|
311
322
|
},
|
|
312
323
|
{
|
|
313
324
|
"name": "Combobox",
|
|
@@ -489,9 +500,10 @@
|
|
|
489
500
|
"name": "FunnelChart",
|
|
490
501
|
"label": "Funnel chart",
|
|
491
502
|
"slug": "funnel-chart",
|
|
492
|
-
"description": "Ordered funnel stages as
|
|
503
|
+
"description": "Ordered funnel stages as centred trapezoid bands, each sized by its share of the first stage.",
|
|
493
504
|
"category": "charts",
|
|
494
|
-
"client": false
|
|
505
|
+
"client": false,
|
|
506
|
+
"recharts": true
|
|
495
507
|
},
|
|
496
508
|
{
|
|
497
509
|
"name": "Gauge",
|
|
@@ -509,6 +521,22 @@
|
|
|
509
521
|
"category": "maps",
|
|
510
522
|
"client": true
|
|
511
523
|
},
|
|
524
|
+
{
|
|
525
|
+
"name": "HoverCard",
|
|
526
|
+
"label": "Hover card",
|
|
527
|
+
"slug": "hover-card",
|
|
528
|
+
"description": "Rich preview panel that opens from hover or focus, with interactive content and position options.",
|
|
529
|
+
"category": "overlays",
|
|
530
|
+
"client": true
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
"name": "ImageCompare",
|
|
534
|
+
"label": "Image compare",
|
|
535
|
+
"slug": "image-compare",
|
|
536
|
+
"description": "Before-and-after image comparison with a draggable divider, keyboard control, and corner labels.",
|
|
537
|
+
"category": "data-display",
|
|
538
|
+
"client": true
|
|
539
|
+
},
|
|
512
540
|
{
|
|
513
541
|
"name": "Input",
|
|
514
542
|
"label": "Input",
|
|
@@ -556,7 +584,8 @@
|
|
|
556
584
|
"description": "Multi-series line chart for trends over time, with per-series colours and a summary row.",
|
|
557
585
|
"category": "charts",
|
|
558
586
|
"client": false,
|
|
559
|
-
"folder": "Chart"
|
|
587
|
+
"folder": "Chart",
|
|
588
|
+
"recharts": true
|
|
560
589
|
},
|
|
561
590
|
{
|
|
562
591
|
"name": "LinkList",
|
|
@@ -598,6 +627,14 @@
|
|
|
598
627
|
"category": "ai",
|
|
599
628
|
"client": false
|
|
600
629
|
},
|
|
630
|
+
{
|
|
631
|
+
"name": "Meter",
|
|
632
|
+
"label": "Meter",
|
|
633
|
+
"slug": "meter",
|
|
634
|
+
"description": "Level indicator for a known quantity, with a status-coloured fill and an optional value readout.",
|
|
635
|
+
"category": "feedback",
|
|
636
|
+
"client": false
|
|
637
|
+
},
|
|
601
638
|
{
|
|
602
639
|
"name": "ModelPicker",
|
|
603
640
|
"label": "Model picker",
|
|
@@ -661,7 +698,8 @@
|
|
|
661
698
|
"description": "Proportional share of a whole as a pie or donut, with per-slice colours.",
|
|
662
699
|
"category": "charts",
|
|
663
700
|
"client": false,
|
|
664
|
-
"folder": "Chart"
|
|
701
|
+
"folder": "Chart",
|
|
702
|
+
"recharts": true
|
|
665
703
|
},
|
|
666
704
|
{
|
|
667
705
|
"name": "PinInput",
|
|
@@ -718,7 +756,8 @@
|
|
|
718
756
|
"description": "Multi-axis comparison of series across categories on a radial grid.",
|
|
719
757
|
"category": "charts",
|
|
720
758
|
"client": false,
|
|
721
|
-
"folder": "Chart"
|
|
759
|
+
"folder": "Chart",
|
|
760
|
+
"recharts": true
|
|
722
761
|
},
|
|
723
762
|
{
|
|
724
763
|
"name": "RadialChart",
|
|
@@ -727,7 +766,8 @@
|
|
|
727
766
|
"description": "Concentric progress rings for completion and KPI readouts.",
|
|
728
767
|
"category": "charts",
|
|
729
768
|
"client": false,
|
|
730
|
-
"folder": "Chart"
|
|
769
|
+
"folder": "Chart",
|
|
770
|
+
"recharts": true
|
|
731
771
|
},
|
|
732
772
|
{
|
|
733
773
|
"name": "RadioButton",
|
|
@@ -737,6 +777,14 @@
|
|
|
737
777
|
"category": "forms",
|
|
738
778
|
"client": true
|
|
739
779
|
},
|
|
780
|
+
{
|
|
781
|
+
"name": "Rating",
|
|
782
|
+
"label": "Rating",
|
|
783
|
+
"slug": "rating",
|
|
784
|
+
"description": "Star-scale rating control with keyboard selection, a read-only mode, and a configurable icon.",
|
|
785
|
+
"category": "forms",
|
|
786
|
+
"client": true
|
|
787
|
+
},
|
|
740
788
|
{
|
|
741
789
|
"name": "Reasoning",
|
|
742
790
|
"label": "Reasoning",
|
|
@@ -752,7 +800,8 @@
|
|
|
752
800
|
"description": "Plots point clusters across two axes to show correlation and distribution.",
|
|
753
801
|
"category": "charts",
|
|
754
802
|
"client": false,
|
|
755
|
-
"folder": "Chart"
|
|
803
|
+
"folder": "Chart",
|
|
804
|
+
"recharts": true
|
|
756
805
|
},
|
|
757
806
|
{
|
|
758
807
|
"name": "SectionTitle",
|
|
@@ -810,6 +859,14 @@
|
|
|
810
859
|
"category": "ai",
|
|
811
860
|
"client": false
|
|
812
861
|
},
|
|
862
|
+
{
|
|
863
|
+
"name": "SourceTrail",
|
|
864
|
+
"label": "Source trail",
|
|
865
|
+
"slug": "source-trail",
|
|
866
|
+
"description": "The sources an agent opened while answering, as a collapsible list with per-item status.",
|
|
867
|
+
"category": "ai",
|
|
868
|
+
"client": true
|
|
869
|
+
},
|
|
813
870
|
{
|
|
814
871
|
"name": "Sparkline",
|
|
815
872
|
"label": "Sparkline",
|
|
@@ -826,6 +883,14 @@
|
|
|
826
883
|
"category": "feedback",
|
|
827
884
|
"client": false
|
|
828
885
|
},
|
|
886
|
+
{
|
|
887
|
+
"name": "SplitButton",
|
|
888
|
+
"label": "Split button",
|
|
889
|
+
"slug": "split-button",
|
|
890
|
+
"description": "Primary action with an attached menu of alternatives, composing Button and DropdownMenu in one pill.",
|
|
891
|
+
"category": "actions",
|
|
892
|
+
"client": false
|
|
893
|
+
},
|
|
829
894
|
{
|
|
830
895
|
"name": "SplitPane",
|
|
831
896
|
"label": "Split pane",
|
|
@@ -841,7 +906,8 @@
|
|
|
841
906
|
"description": "Bars split into stacked segments to compare totals and their composition.",
|
|
842
907
|
"category": "charts",
|
|
843
908
|
"client": false,
|
|
844
|
-
"folder": "Chart"
|
|
909
|
+
"folder": "Chart",
|
|
910
|
+
"recharts": true
|
|
845
911
|
},
|
|
846
912
|
{
|
|
847
913
|
"name": "Stat",
|
|
@@ -978,7 +1044,16 @@
|
|
|
978
1044
|
"description": "Nested rectangles sized by value for part-to-whole breakdowns.",
|
|
979
1045
|
"category": "charts",
|
|
980
1046
|
"client": false,
|
|
981
|
-
"folder": "Chart"
|
|
1047
|
+
"folder": "Chart",
|
|
1048
|
+
"recharts": true
|
|
1049
|
+
},
|
|
1050
|
+
{
|
|
1051
|
+
"name": "UsageCard",
|
|
1052
|
+
"label": "Usage card",
|
|
1053
|
+
"slug": "usage-card",
|
|
1054
|
+
"description": "An agent's budgets at a glance: context window and plan limits as meter rows with reset captions.",
|
|
1055
|
+
"category": "ai",
|
|
1056
|
+
"client": false
|
|
982
1057
|
}
|
|
983
1058
|
],
|
|
984
1059
|
"docOnlyHelpers": [
|