@akhil-saxena/design-system 1.2.0 → 1.4.2
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 +17 -17
- package/dist/chunk-34YNJKI2.js +231 -0
- package/dist/chunk-34YNJKI2.js.map +1 -0
- package/dist/hooks/index.js +3 -126
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.d.ts +800 -63
- package/dist/index.js +2929 -279
- package/dist/index.js.map +1 -1
- package/dist/primitives.css +1197 -40
- package/dist/tokens.css +78 -29
- package/package.json +4 -2
- package/dist/chunk-FUXR6QZ3.js +0 -108
- package/dist/chunk-FUXR6QZ3.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import react__default, { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes,
|
|
2
|
+
import react__default, { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, CSSProperties, HTMLAttributes, ElementType, AnchorHTMLAttributes, TextareaHTMLAttributes, ChangeEvent, ReactElement, RefObject } from 'react';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
export { I as Icon, a as IconProps } from './Icon-XUp5t4PQ.js';
|
|
5
5
|
import { UniqueIdentifier } from '@dnd-kit/core';
|
|
@@ -51,6 +51,28 @@ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
51
51
|
*/
|
|
52
52
|
declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
53
53
|
|
|
54
|
+
type OAuthProvider = "google" | "github" | "apple";
|
|
55
|
+
interface OAuthButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
56
|
+
/** OAuth provider — determines logo + default label. @default "google" */
|
|
57
|
+
provider?: OAuthProvider;
|
|
58
|
+
/** Override the button label (defaults to "Continue with {Provider}"). */
|
|
59
|
+
label?: string;
|
|
60
|
+
/** When true, renders inverted for dark surfaces. @default false */
|
|
61
|
+
dark?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* OAuth provider button. Renders the provider's official logo + a label
|
|
65
|
+
* styled to match DS Button conventions (44px height, 9px radius, transitions).
|
|
66
|
+
*
|
|
67
|
+
* Hooks into press feedback via `.ds-atom-oauthbtn:active { transform: scale(.97); }`
|
|
68
|
+
* defined in primitives.css.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* <OAuthButton provider="google" type="submit" />
|
|
72
|
+
* <OAuthButton provider="github" dark />
|
|
73
|
+
*/
|
|
74
|
+
declare const OAuthButton: react.ForwardRefExoticComponent<OAuthButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
75
|
+
|
|
54
76
|
interface TextInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "prefix"> {
|
|
55
77
|
/** When true, applies error-state border color to the input or wrapper. */
|
|
56
78
|
error?: boolean;
|
|
@@ -65,6 +87,282 @@ interface TextInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "pr
|
|
|
65
87
|
}
|
|
66
88
|
declare const TextInput: react.ForwardRefExoticComponent<TextInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
67
89
|
|
|
90
|
+
interface InlineEditFieldProps {
|
|
91
|
+
/** Current display value. */
|
|
92
|
+
value: string;
|
|
93
|
+
/**
|
|
94
|
+
* Called with the new value on commit (Enter, ⌘Enter for multiline, or blur).
|
|
95
|
+
* Return a Promise to trigger the saving state.
|
|
96
|
+
* If the Promise rejects, component enters error state with rejection message.
|
|
97
|
+
*/
|
|
98
|
+
onSave: (next: string) => void | Promise<void>;
|
|
99
|
+
/** When true, renders a Textarea instead of a single-line TextInput.
|
|
100
|
+
* @default false
|
|
101
|
+
*/
|
|
102
|
+
multiline?: boolean;
|
|
103
|
+
/** Placeholder shown in idle state when value is empty.
|
|
104
|
+
* Rendered as an italic span with `var(--ink-4)` color.
|
|
105
|
+
*/
|
|
106
|
+
placeholder?: string;
|
|
107
|
+
/** When true, the idle span is not clickable.
|
|
108
|
+
* @default false
|
|
109
|
+
*/
|
|
110
|
+
disabled?: boolean;
|
|
111
|
+
/** Maximum character length passed to the underlying input/textarea. */
|
|
112
|
+
maxLength?: number;
|
|
113
|
+
/**
|
|
114
|
+
* Accessible label for the trigger element in idle state and the underlying
|
|
115
|
+
* input in edit state. Required.
|
|
116
|
+
*/
|
|
117
|
+
ariaLabel: string;
|
|
118
|
+
/**
|
|
119
|
+
* Typography preset for edit-mode input. Controls font-family + matching
|
|
120
|
+
* size defaults. Does NOT affect idle mode — idle inherits from parent.
|
|
121
|
+
* - "default" — Inter, 13px, weight 500 (matches existing INPUT style object)
|
|
122
|
+
* - "mono" — var(--mono), 10.5px, weight 700, letter-spacing .12em, uppercase
|
|
123
|
+
* - "serif" — Newsreader, 14px, line-height 1.55
|
|
124
|
+
* @default "default"
|
|
125
|
+
*/
|
|
126
|
+
font?: "default" | "mono" | "serif";
|
|
127
|
+
className?: string;
|
|
128
|
+
style?: CSSProperties;
|
|
129
|
+
}
|
|
130
|
+
declare function InlineEditField({ value, onSave, multiline, placeholder, disabled, maxLength, ariaLabel, font, className, style, }: InlineEditFieldProps): react_jsx_runtime.JSX.Element;
|
|
131
|
+
|
|
132
|
+
type EyebrowSize = "xs" | "sm" | "md";
|
|
133
|
+
type EyebrowTone = "ink-3" | "ink-4" | "amber";
|
|
134
|
+
interface EyebrowProps extends HTMLAttributes<HTMLSpanElement> {
|
|
135
|
+
/** Type-scale token. @default "sm" */
|
|
136
|
+
size?: EyebrowSize;
|
|
137
|
+
/** Override color (legacy — defaults to var(--ink-3)). Use `tone` for the
|
|
138
|
+
* declarative path. */
|
|
139
|
+
color?: string;
|
|
140
|
+
/** Tone token — emits a data-attr so CSS rules apply the color. */
|
|
141
|
+
tone?: EyebrowTone;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Mono-caps eyebrow / overline. Used as form field labels, hero kickers,
|
|
145
|
+
* section headers, and stage-chip captions.
|
|
146
|
+
*
|
|
147
|
+
* `tone` (declarative, CSS data-attr) is the preferred way to set color in
|
|
148
|
+
* new code; `color` (legacy inline override) still works for one-offs.
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* <Eyebrow>FULL NAME</Eyebrow>
|
|
152
|
+
* <Eyebrow size="md" tone="amber">WELCOME BACK</Eyebrow>
|
|
153
|
+
*/
|
|
154
|
+
declare const Eyebrow: react.ForwardRefExoticComponent<EyebrowProps & react.RefAttributes<HTMLSpanElement>>;
|
|
155
|
+
|
|
156
|
+
type TextVariant = "body" | "small" | "caption" | "legal";
|
|
157
|
+
type TextElement = "p" | "span" | "div";
|
|
158
|
+
type TextSizeToken = "2xs" | "xs" | "sm" | "base" | "md" | "lg";
|
|
159
|
+
type TextWeightToken = "regular" | "medium" | "bold" | "black";
|
|
160
|
+
type TextTone = "ink" | "ink-2" | "ink-3" | "ink-4" | "amber" | "red" | "green";
|
|
161
|
+
type TextLeading = "tight" | "snug" | "normal" | "relaxed";
|
|
162
|
+
interface TextProps extends HTMLAttributes<HTMLElement> {
|
|
163
|
+
/** Legacy preset — drives inline style. @default "body" */
|
|
164
|
+
variant?: TextVariant;
|
|
165
|
+
/** Semantic element to render. @default "p" */
|
|
166
|
+
as?: TextElement;
|
|
167
|
+
/** Override color (legacy — defaults to tone for variant). Use `tone` for
|
|
168
|
+
* the declarative path. */
|
|
169
|
+
color?: string;
|
|
170
|
+
/** Override max-width — caps line length for readability. */
|
|
171
|
+
maxWidth?: number | string;
|
|
172
|
+
/** Type-scale token — emits data-attr; CSS applies font-size. */
|
|
173
|
+
size?: TextSizeToken;
|
|
174
|
+
/** Weight token — emits data-attr; CSS applies font-weight. */
|
|
175
|
+
weight?: TextWeightToken;
|
|
176
|
+
/** Color tone token — emits data-attr; CSS applies color. */
|
|
177
|
+
tone?: TextTone;
|
|
178
|
+
/** When true, swaps to var(--mono) family + letter-spacing. */
|
|
179
|
+
mono?: boolean;
|
|
180
|
+
/** Line-height token — overrides the default (relaxed). */
|
|
181
|
+
leading?: TextLeading;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Body text primitive. Two APIs coexist:
|
|
185
|
+
* - **Legacy:** `variant` preset drives inline style (body/small/caption/legal).
|
|
186
|
+
* - **Token/data-attr:** `size` + `tone` + `weight` + `mono` + `leading` all
|
|
187
|
+
* emit data-attrs; `primitives.css` resolves them. Use this for new code.
|
|
188
|
+
*
|
|
189
|
+
* The two are NOT exclusive — pass `variant` for the base + a `size`/`tone`
|
|
190
|
+
* override to tweak one axis.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* <Text>Mark every step of your job search.</Text>
|
|
194
|
+
* <Text size="sm" tone="ink-3">Applied 3d ago</Text>
|
|
195
|
+
* <Text variant="caption" maxWidth={360}>Sent to alex@example.com…</Text>
|
|
196
|
+
*/
|
|
197
|
+
declare const Text: react.ForwardRefExoticComponent<TextProps & react.RefAttributes<HTMLElement>>;
|
|
198
|
+
|
|
199
|
+
type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
200
|
+
type HeadingSizeToken = "2xs" | "xs" | "sm" | "base" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl";
|
|
201
|
+
type HeadingWeightToken = "regular" | "medium" | "bold" | "black";
|
|
202
|
+
type HeadingTone = "ink" | "ink-2" | "ink-3" | "amber";
|
|
203
|
+
interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {
|
|
204
|
+
/** Semantic heading level. @default 2 */
|
|
205
|
+
level?: HeadingLevel;
|
|
206
|
+
/** Visual size — either a px number (legacy, drives inline style) or a
|
|
207
|
+
* type-scale token ('2xs'..'4xl') which routes through the CSS data-attr
|
|
208
|
+
* path. @default 28
|
|
209
|
+
*/
|
|
210
|
+
size?: number | HeadingSizeToken;
|
|
211
|
+
/** Archivo weight — numeric (legacy) or token. @default 900 */
|
|
212
|
+
weight?: 500 | 600 | 700 | 800 | 900 | HeadingWeightToken;
|
|
213
|
+
/** Override color (legacy — defaults to var(--ink)). Use `tone` for the
|
|
214
|
+
* declarative path. */
|
|
215
|
+
color?: string;
|
|
216
|
+
/** Tone token — emits a data-attr so CSS rules apply the color. */
|
|
217
|
+
tone?: HeadingTone;
|
|
218
|
+
/** Override the rendered tag — useful when the visual size and the semantic
|
|
219
|
+
* level diverge (e.g. an `<h2>` styled as a small kicker). */
|
|
220
|
+
as?: ElementType;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Display heading primitive — for hero headlines and form headlines.
|
|
224
|
+
*
|
|
225
|
+
* Two APIs coexist:
|
|
226
|
+
* - **Legacy/inline:** `size={28}` (number) + `weight={900}` (number) drives
|
|
227
|
+
* inline style. Letter-spacing derives from size.
|
|
228
|
+
* - **Token/data-attr:** `size="2xl"` + `weight="black"` emit data-attrs;
|
|
229
|
+
* `primitives.css` applies font-size + font-weight from token vars. Use this
|
|
230
|
+
* for new code where the theme drives sizing.
|
|
231
|
+
*
|
|
232
|
+
* @example
|
|
233
|
+
* <Heading level={1} size={72} weight={900}>Job search, organized.</Heading>
|
|
234
|
+
* <Heading level={2} size="2xl" weight="black" tone="amber">Settings</Heading>
|
|
235
|
+
*/
|
|
236
|
+
declare const Heading: react.ForwardRefExoticComponent<HeadingProps & react.RefAttributes<HTMLHeadingElement>>;
|
|
237
|
+
|
|
238
|
+
type DividerSpacing = "none" | "sm" | "md" | "lg" | "xl";
|
|
239
|
+
type DividerAccent = "dashed" | "amber";
|
|
240
|
+
interface DividerProps extends HTMLAttributes<HTMLDivElement> {
|
|
241
|
+
/** Optional centered label between two hairlines (e.g. "OR"). */
|
|
242
|
+
label?: ReactNode;
|
|
243
|
+
/** When true, renders vertically (height: 100%, width: 1px). @default false */
|
|
244
|
+
vertical?: boolean;
|
|
245
|
+
/** Override the hairline color (defaults to var(--rule)). */
|
|
246
|
+
color?: string;
|
|
247
|
+
/** Margin preset — data-attr-driven via primitives.css. When set, overrides
|
|
248
|
+
* the legacy default (no margin for horizontal, var(--space-3) horizontal
|
|
249
|
+
* for vertical). */
|
|
250
|
+
spacing?: DividerSpacing;
|
|
251
|
+
/** Accent style — `dashed` uses a dashed top-border, `amber` paints an
|
|
252
|
+
* amber-tinted 2px hairline. */
|
|
253
|
+
accent?: DividerAccent;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Hairline rule with an optional centered label.
|
|
257
|
+
*
|
|
258
|
+
* - Horizontal (default): `1px` rule across the row; label centered with
|
|
259
|
+
* monospace caps if provided (e.g. the "OR" between OAuth and email forms).
|
|
260
|
+
* - Vertical: `1px` rule fills the parent's height.
|
|
261
|
+
*
|
|
262
|
+
* New axes (data-attr driven):
|
|
263
|
+
* - `spacing` adds the bundle's margin presets.
|
|
264
|
+
* - `accent` swaps to dashed or amber-tinted stylings via primitives.css.
|
|
265
|
+
*
|
|
266
|
+
* @example
|
|
267
|
+
* <Divider />
|
|
268
|
+
* <Divider label="OR" spacing="md" />
|
|
269
|
+
* <Divider accent="amber" spacing="lg" />
|
|
270
|
+
*/
|
|
271
|
+
declare const Divider: react.ForwardRefExoticComponent<DividerProps & react.RefAttributes<HTMLDivElement>>;
|
|
272
|
+
|
|
273
|
+
type LinkVariant = "default" | "inline" | "footer" | "action" | "quiet";
|
|
274
|
+
interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
275
|
+
/** Style variant.
|
|
276
|
+
* - `default` — neutral inline link, amber on hover.
|
|
277
|
+
* - `inline` — body-text inline link, amber underline.
|
|
278
|
+
* - `footer` — small footer/cross-link.
|
|
279
|
+
* - `action` — bold action link with trailing arrow (e.g. "Sign in →").
|
|
280
|
+
* - `quiet` — muted, no underline until hover.
|
|
281
|
+
* @default "inline"
|
|
282
|
+
*/
|
|
283
|
+
variant?: LinkVariant;
|
|
284
|
+
/** Override color (inline). */
|
|
285
|
+
color?: string;
|
|
286
|
+
/** Override the rendered element. Use to attach Link styles to a `<button>`
|
|
287
|
+
* or any custom element. @default "a"
|
|
288
|
+
*/
|
|
289
|
+
as?: ElementType;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Text-style hyperlink primitive. Five variants cover the common surfaces:
|
|
293
|
+
* default (neutral), inline (body-text amber), footer (small cross-link),
|
|
294
|
+
* action (bold with arrow), quiet (muted, hover-only underline).
|
|
295
|
+
*
|
|
296
|
+
* `as` overrides the rendered element — useful when the visual contract is
|
|
297
|
+
* "link" but the semantic is "button" (e.g. JS-handled actions).
|
|
298
|
+
*
|
|
299
|
+
* @example
|
|
300
|
+
* <Link href="/signin">Sign in</Link>
|
|
301
|
+
* <Link variant="quiet" href="/legal">Legal</Link>
|
|
302
|
+
* <Link variant="footer" as="button" onClick={clear}>CLEAR</Link>
|
|
303
|
+
*/
|
|
304
|
+
declare const Link: react.ForwardRefExoticComponent<LinkProps & react.RefAttributes<HTMLAnchorElement>>;
|
|
305
|
+
|
|
306
|
+
interface DotGridProps extends HTMLAttributes<HTMLDivElement> {
|
|
307
|
+
/** Dot color (any CSS color). @default "var(--cream)" */
|
|
308
|
+
color?: string;
|
|
309
|
+
/** Dot opacity. @default 0.055 */
|
|
310
|
+
opacity?: number;
|
|
311
|
+
/** Tile size in px — controls dot spacing. @default 18 */
|
|
312
|
+
tile?: number;
|
|
313
|
+
/** Dot radius in px. @default 1.4 */
|
|
314
|
+
dotRadius?: number;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Radial-gradient dot-pattern overlay. Use as an `position: absolute; inset: 0;`
|
|
318
|
+
* decoration on dark hero panels, marketing surfaces, or empty-state backgrounds.
|
|
319
|
+
*
|
|
320
|
+
* Pointer-events disabled so it never blocks content underneath.
|
|
321
|
+
*
|
|
322
|
+
* @example
|
|
323
|
+
* <div style={{ position: "relative" }}>
|
|
324
|
+
* <DotGrid />
|
|
325
|
+
* <p>Hero content over dots…</p>
|
|
326
|
+
* </div>
|
|
327
|
+
*/
|
|
328
|
+
declare const DotGrid: react.ForwardRefExoticComponent<DotGridProps & react.RefAttributes<HTMLDivElement>>;
|
|
329
|
+
|
|
330
|
+
interface SplitHeroProps extends Omit<HTMLAttributes<HTMLElement>, "children"> {
|
|
331
|
+
/** Left/aside content — typically a marketing or brand panel on a dark surface. */
|
|
332
|
+
aside: ReactNode;
|
|
333
|
+
/** Right/main content — typically the form, body, or interactive payload. */
|
|
334
|
+
main: ReactNode;
|
|
335
|
+
/** Aside-to-main column ratio, e.g. "1fr 1fr" (default) or "1.15fr 1fr". @default "1fr 1fr" */
|
|
336
|
+
ratio?: string;
|
|
337
|
+
/** Aside background color. @default "var(--ink)" */
|
|
338
|
+
asideBackground?: string;
|
|
339
|
+
/** Main background color. @default "var(--cream)" */
|
|
340
|
+
mainBackground?: string;
|
|
341
|
+
/** When viewport ≤ this breakpoint (px), stack vertically (aside on top). @default 900 */
|
|
342
|
+
stackBelow?: number;
|
|
343
|
+
/** When viewport ≤ this breakpoint (px), hide the aside entirely. @default 600 */
|
|
344
|
+
hideAsideBelow?: number;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Two-column page chrome for marketing / auth / onboarding surfaces.
|
|
348
|
+
*
|
|
349
|
+
* - Desktop (`> stackBelow`): aside | main, side-by-side.
|
|
350
|
+
* - Tablet (`≤ stackBelow`, `> hideAsideBelow`): stacked vertically.
|
|
351
|
+
* - Mobile (`≤ hideAsideBelow`): aside hidden, main fills the viewport.
|
|
352
|
+
*
|
|
353
|
+
* The root is `height: 100vh; overflow: hidden;` so the aside cannot push the
|
|
354
|
+
* page taller than the viewport; the `main` slot internally allows scroll for
|
|
355
|
+
* long forms. At the stacked breakpoints the clamp releases so the page
|
|
356
|
+
* scrolls naturally.
|
|
357
|
+
*
|
|
358
|
+
* @example
|
|
359
|
+
* <SplitHero
|
|
360
|
+
* aside={<HeroPanel kicker="WELCOME BACK" headline="Sign in to your trail." />}
|
|
361
|
+
* main={<SignInForm />}
|
|
362
|
+
* />
|
|
363
|
+
*/
|
|
364
|
+
declare const SplitHero: react.ForwardRefExoticComponent<SplitHeroProps & react.RefAttributes<HTMLElement>>;
|
|
365
|
+
|
|
68
366
|
interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
69
367
|
/** When true, applies error-state border color to the textarea. */
|
|
70
368
|
error?: boolean;
|
|
@@ -84,6 +382,13 @@ interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
|
84
382
|
}
|
|
85
383
|
declare const Badge: react.ForwardRefExoticComponent<BadgeProps & react.RefAttributes<HTMLSpanElement>>;
|
|
86
384
|
|
|
385
|
+
type KbdSize = "sm" | "md";
|
|
386
|
+
interface KbdProps extends HTMLAttributes<HTMLElement> {
|
|
387
|
+
/** Size variant. "sm" for inline hints (9.5px); "md" default (11px). */
|
|
388
|
+
size?: KbdSize;
|
|
389
|
+
}
|
|
390
|
+
declare const Kbd: react.ForwardRefExoticComponent<KbdProps & react.RefAttributes<HTMLElement>>;
|
|
391
|
+
|
|
87
392
|
type ChipTone = "default" | "match" | "miss" | "learning" | "tag";
|
|
88
393
|
interface ChipProps extends HTMLAttributes<HTMLSpanElement> {
|
|
89
394
|
/** Color tone applying semantic background and text colors.
|
|
@@ -248,6 +553,55 @@ interface RollingNumberProps {
|
|
|
248
553
|
}
|
|
249
554
|
declare function RollingNumber({ value, format, prefix, suffix, variant, ariaLabel, className, style, }: RollingNumberProps): react_jsx_runtime.JSX.Element;
|
|
250
555
|
|
|
556
|
+
type StatCardChangeDir = "up" | "down";
|
|
557
|
+
interface StatCardProps {
|
|
558
|
+
/** Monospace uppercase label, e.g. "Total Applications" */
|
|
559
|
+
label: string;
|
|
560
|
+
/** Primary metric value as string or number, e.g. "24", "42%", "4.2d" */
|
|
561
|
+
value: string | number;
|
|
562
|
+
/** Change string displayed in trend badge, e.g. "+12%", "-5%" */
|
|
563
|
+
change?: string;
|
|
564
|
+
/** Trend direction — determines badge and sparkline color */
|
|
565
|
+
changeDir?: StatCardChangeDir;
|
|
566
|
+
/** Sparkline data points — renders chart when provided (min 2 points) */
|
|
567
|
+
data?: number[];
|
|
568
|
+
/** Additional className forwarded to the root div */
|
|
569
|
+
className?: string;
|
|
570
|
+
/** Additional inline styles for the root div */
|
|
571
|
+
style?: CSSProperties;
|
|
572
|
+
}
|
|
573
|
+
declare function StatCard({ label, value, change, changeDir, data, className, style, }: StatCardProps): react_jsx_runtime.JSX.Element;
|
|
574
|
+
|
|
575
|
+
interface SparklineProps {
|
|
576
|
+
data: number[];
|
|
577
|
+
width?: number;
|
|
578
|
+
height?: number;
|
|
579
|
+
color?: string;
|
|
580
|
+
fill?: boolean;
|
|
581
|
+
/** Accessible label. Defaults to "Trend chart". */
|
|
582
|
+
ariaLabel?: string;
|
|
583
|
+
}
|
|
584
|
+
declare function Sparkline({ data, width, height, color, fill, ariaLabel, }: SparklineProps): react_jsx_runtime.JSX.Element | null;
|
|
585
|
+
|
|
586
|
+
interface MiniDonutProps {
|
|
587
|
+
value: number;
|
|
588
|
+
max?: number;
|
|
589
|
+
size?: number;
|
|
590
|
+
strokeWidth?: number;
|
|
591
|
+
color?: string;
|
|
592
|
+
/** Accessible label. Defaults to "{percentage}%". */
|
|
593
|
+
ariaLabel?: string;
|
|
594
|
+
}
|
|
595
|
+
declare function MiniDonut({ value, max, size, strokeWidth, color, ariaLabel, }: MiniDonutProps): react_jsx_runtime.JSX.Element;
|
|
596
|
+
|
|
597
|
+
interface MiniBarProps {
|
|
598
|
+
data: number[];
|
|
599
|
+
labels?: string[];
|
|
600
|
+
height?: number;
|
|
601
|
+
barColor?: string;
|
|
602
|
+
}
|
|
603
|
+
declare function MiniBar({ data, labels, height, barColor }: MiniBarProps): react_jsx_runtime.JSX.Element;
|
|
604
|
+
|
|
251
605
|
interface RangeSliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "value" | "onChange" | "min" | "max" | "step" | "disabled"> {
|
|
252
606
|
/** Controlled numeric value of the slider thumb position. */
|
|
253
607
|
value: number;
|
|
@@ -310,6 +664,41 @@ interface StarRatingProps {
|
|
|
310
664
|
}
|
|
311
665
|
declare function StarRating({ value, onChange, size, label, readOnly, disabled, className, style, }: StarRatingProps): react_jsx_runtime.JSX.Element;
|
|
312
666
|
|
|
667
|
+
type StatusPillStage = "wishlist" | "applied" | "screening" | "interviewing" | "offer" | "closed";
|
|
668
|
+
interface StatusPillBaseProps {
|
|
669
|
+
/** Pipeline stage — drives bg/color tinting. */
|
|
670
|
+
stage: StatusPillStage;
|
|
671
|
+
/** Show trailing chevron (▾) — signals the pill is a dropdown trigger. */
|
|
672
|
+
withChevron?: boolean;
|
|
673
|
+
/** When true, renders as <button>. When false, renders as <span> and ignores
|
|
674
|
+
* onClick. Use false for table cells / read-only kanban cards where the pill
|
|
675
|
+
* is decorative.
|
|
676
|
+
* @default true
|
|
677
|
+
*/
|
|
678
|
+
interactive?: boolean;
|
|
679
|
+
children: ReactNode;
|
|
680
|
+
}
|
|
681
|
+
type StatusPillProps = StatusPillBaseProps & ((Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof StatusPillBaseProps> & {
|
|
682
|
+
interactive?: true;
|
|
683
|
+
}) | (Omit<HTMLAttributes<HTMLSpanElement>, keyof StatusPillBaseProps> & {
|
|
684
|
+
interactive: false;
|
|
685
|
+
}));
|
|
686
|
+
/**
|
|
687
|
+
* StatusPill - per-stage tinted chip for Cairn-style kanban + DataGrid status columns.
|
|
688
|
+
*
|
|
689
|
+
* Six locked stage variants (`wishlist`, `applied`, `screening`, `interviewing`,
|
|
690
|
+
* `offer`, `closed`) map to subtle tints — `wishlist`/`applied` are outlined,
|
|
691
|
+
* `screening`/`interviewing` use amber tints, `offer` uses green, `closed` is muted.
|
|
692
|
+
* Use the same atom in both kanban cards and DataGrid status columns so the
|
|
693
|
+
* visual contract stays single-sourced.
|
|
694
|
+
*
|
|
695
|
+
* <StatusPill stage="screening" withChevron onClick={openMenu}>Screening</StatusPill>
|
|
696
|
+
* <StatusPill stage="offer" interactive={false}>Offer</StatusPill>
|
|
697
|
+
*
|
|
698
|
+
* Visual styling lives in primitives.css under `.ds-atom-statuspill[.stage]`.
|
|
699
|
+
*/
|
|
700
|
+
declare const StatusPill: react.ForwardRefExoticComponent<StatusPillProps & react.RefAttributes<HTMLButtonElement | HTMLSpanElement>>;
|
|
701
|
+
|
|
313
702
|
type StickyNoteRotation = "left" | "right" | "none";
|
|
314
703
|
interface StickyNoteProps extends HTMLAttributes<HTMLDivElement> {
|
|
315
704
|
/** Static rotation applied to the note surface for a handwritten feel.
|
|
@@ -338,38 +727,39 @@ interface StickyNoteProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
338
727
|
declare const StickyNote: react.ForwardRefExoticComponent<StickyNoteProps & react.RefAttributes<HTMLDivElement>>;
|
|
339
728
|
|
|
340
729
|
type CardVariant = "glass" | "amber" | "dark" | "kanban";
|
|
730
|
+
type CardPadding = "none" | "sm" | "md" | "lg" | "xl";
|
|
731
|
+
type CardRadius = "sm" | "md" | "lg" | "xl";
|
|
732
|
+
type CardTone = "amber" | "cream-2" | "flat";
|
|
733
|
+
type CardHover = "elevate";
|
|
341
734
|
interface CardProps extends HTMLAttributes<HTMLDivElement> {
|
|
342
|
-
/**
|
|
343
|
-
*
|
|
344
|
-
* - `amber` - amber-tinted CTA card.
|
|
345
|
-
* - `dark` - always-dark surface independent of theme.
|
|
346
|
-
* - `kanban` - compact glass with hover-lift; use for drag-and-drop boards.
|
|
347
|
-
* @default "glass"
|
|
348
|
-
*/
|
|
735
|
+
/** Top-level preset (legacy). One of glass / amber / dark / kanban. Adds
|
|
736
|
+
* its own bg + border treatment via `data-variant`. @default "glass" */
|
|
349
737
|
variant?: CardVariant;
|
|
350
|
-
/**
|
|
738
|
+
/** Padding scale. Independent of variant. */
|
|
739
|
+
padding?: CardPadding;
|
|
740
|
+
/** Border-radius token. Independent of variant. */
|
|
741
|
+
radius?: CardRadius;
|
|
742
|
+
/** Surface tone (separate axis from variant). `amber` tints the bg, `flat`
|
|
743
|
+
* uses a dashed neutral border, `cream-2` switches to the cream-2 surface. */
|
|
744
|
+
tone?: CardTone;
|
|
745
|
+
/** Interactive elevation on hover. Adds shadow + cursor + border-color shift. */
|
|
746
|
+
hover?: CardHover;
|
|
747
|
+
/** Override the rendered element. @default "div" */
|
|
748
|
+
as?: ElementType;
|
|
351
749
|
children: ReactNode;
|
|
352
750
|
}
|
|
353
751
|
/**
|
|
354
|
-
* Card
|
|
752
|
+
* Card — surface primitive. Visual is driven by a top-level `variant` plus
|
|
753
|
+
* independent data-attr axes (`padding`, `radius`, `tone`, `hover`).
|
|
355
754
|
*
|
|
356
|
-
* <Card
|
|
357
|
-
* <Card variant="amber">
|
|
358
|
-
* <Card variant="
|
|
359
|
-
* <Card
|
|
755
|
+
* <Card>...</Card> // glass, default radius/padding
|
|
756
|
+
* <Card variant="amber">...</Card> // amber CTA card
|
|
757
|
+
* <Card variant="kanban" hover="elevate">...</Card> // hover-lift kanban surface
|
|
758
|
+
* <Card padding="lg" radius="xl" tone="cream-2"> // declarative overrides
|
|
360
759
|
*
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
-
*
|
|
364
|
-
* <header>...</header>
|
|
365
|
-
* <div>...</div>
|
|
366
|
-
* <footer>...</footer>
|
|
367
|
-
* </Card>
|
|
368
|
-
*
|
|
369
|
-
* The `kanban` variant ships only the VISUAL surface (12px padding, 10px
|
|
370
|
-
* radius, glass bg, hover shadow lift). Application data binding (logo +
|
|
371
|
-
* role + age + chips + priority dot) is deferred to Wave 7 / DragDropList
|
|
372
|
-
* per D-302.
|
|
760
|
+
* The four axes layer on top of each other — variant sets the baseline, the
|
|
761
|
+
* data-attr axes refine padding/radius/tone/hover. See primitives.css for
|
|
762
|
+
* the resolved rules.
|
|
373
763
|
*/
|
|
374
764
|
declare const Card: react.ForwardRefExoticComponent<CardProps & react.RefAttributes<HTMLDivElement>>;
|
|
375
765
|
|
|
@@ -538,57 +928,92 @@ interface ModalProps {
|
|
|
538
928
|
* - closeOnBackdropClick defaults to true; click on backdrop only (not panel) closes
|
|
539
929
|
* - Animations namespaced (ds-atom-modal-fadein, ds-atom-modal-in) to avoid
|
|
540
930
|
* colliding with consumer-defined keyframes
|
|
541
|
-
*
|
|
542
|
-
* ConfirmDialog ships from this same file as a named variant export (D-287, D-356).
|
|
543
931
|
*/
|
|
544
932
|
declare function Modal({ open, onClose, title, description, footer, children, closeOnBackdropClick, role, initialFocus, className, style, }: ModalProps): react_jsx_runtime.JSX.Element | null;
|
|
933
|
+
|
|
934
|
+
type ConfirmDialogTone = "danger" | "warn" | "success" | "neutral";
|
|
545
935
|
interface ConfirmDialogProps {
|
|
546
936
|
/** Controls visibility; returns null when false. */
|
|
547
937
|
open: boolean;
|
|
548
|
-
/** Called when the user
|
|
938
|
+
/** Called when the user cancels (Escape key or Cancel button). */
|
|
549
939
|
onClose: () => void;
|
|
550
|
-
/**
|
|
940
|
+
/** Called when the user confirms (Enter key or Confirm button). */
|
|
941
|
+
onConfirm: () => void;
|
|
942
|
+
/** Visual tone — controls icon, icon bg, and confirm button style. */
|
|
943
|
+
tone?: ConfirmDialogTone;
|
|
944
|
+
/** Dialog heading. */
|
|
551
945
|
title: ReactNode;
|
|
552
|
-
/**
|
|
553
|
-
|
|
554
|
-
/** Label for the confirm
|
|
946
|
+
/** Optional body text below the heading. */
|
|
947
|
+
body?: ReactNode;
|
|
948
|
+
/** Label for the confirm button.
|
|
555
949
|
* @default "Confirm"
|
|
556
950
|
*/
|
|
557
951
|
confirmLabel?: string;
|
|
558
|
-
/** Label for the cancel
|
|
952
|
+
/** Label for the cancel button.
|
|
559
953
|
* @default "Cancel"
|
|
560
954
|
*/
|
|
561
955
|
cancelLabel?: string;
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
956
|
+
}
|
|
957
|
+
declare function ConfirmDialog({ open, onClose, onConfirm, tone, title, body, confirmLabel, cancelLabel, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element | null;
|
|
958
|
+
interface TypeToConfirmProps {
|
|
959
|
+
/** Controls visibility; returns null when false. */
|
|
960
|
+
open: boolean;
|
|
961
|
+
/** Called when the user cancels (Escape key or Cancel button). */
|
|
962
|
+
onClose: () => void;
|
|
963
|
+
/** Called when the user confirms (Enter key when ok, or Confirm button). */
|
|
567
964
|
onConfirm: () => void;
|
|
965
|
+
/** Dialog heading. */
|
|
966
|
+
title: ReactNode;
|
|
967
|
+
/** Optional body text below the heading. */
|
|
968
|
+
body?: ReactNode;
|
|
969
|
+
/** Word the user must type exactly (case-sensitive, no trim) to enable confirm.
|
|
970
|
+
* @default "DELETE"
|
|
971
|
+
*/
|
|
972
|
+
guardWord?: string;
|
|
973
|
+
/** Label for the confirm button.
|
|
974
|
+
* @default "Delete forever"
|
|
975
|
+
*/
|
|
976
|
+
confirmLabel?: string;
|
|
977
|
+
/** Label for the cancel button.
|
|
978
|
+
* @default "Cancel"
|
|
979
|
+
*/
|
|
980
|
+
cancelLabel?: string;
|
|
568
981
|
}
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
*/
|
|
591
|
-
|
|
982
|
+
declare function TypeToConfirm({ open, onClose, onConfirm, title, body, guardWord, confirmLabel, cancelLabel, }: TypeToConfirmProps): react_jsx_runtime.JSX.Element | null;
|
|
983
|
+
|
|
984
|
+
interface CommandPaletteItem {
|
|
985
|
+
/** Stable identity used as the React key. */
|
|
986
|
+
id: string;
|
|
987
|
+
/** Display label; used for case-insensitive substring filtering. */
|
|
988
|
+
label: string;
|
|
989
|
+
/** Group bucket name; items with the same group cluster under a header. */
|
|
990
|
+
group: string;
|
|
991
|
+
/** Optional ReactNode icon (16–18px recommended). */
|
|
992
|
+
icon?: ReactNode;
|
|
993
|
+
/** Optional keyboard shortcut hint, rendered as a Kbd chip. */
|
|
994
|
+
shortcut?: string;
|
|
995
|
+
/** Fires when the item is selected (Enter on active row, or click). */
|
|
996
|
+
onSelect: () => void;
|
|
997
|
+
}
|
|
998
|
+
interface CommandPaletteProps {
|
|
999
|
+
/** Controls visibility; component returns null when false. */
|
|
1000
|
+
open: boolean;
|
|
1001
|
+
/** Called when the user dismisses the palette (Escape, backdrop click, item select). */
|
|
1002
|
+
onClose: () => void;
|
|
1003
|
+
/** Flat list of items; the component derives groups internally. */
|
|
1004
|
+
items: CommandPaletteItem[];
|
|
1005
|
+
/** Search input placeholder.
|
|
1006
|
+
* @default "Type a command or search…"
|
|
1007
|
+
*/
|
|
1008
|
+
placeholder?: string;
|
|
1009
|
+
/** Optional override text shown when filter has zero matches. Defaults to `No results for "<query>"`. */
|
|
1010
|
+
emptyText?: string;
|
|
1011
|
+
/** Optional className appended to the panel. */
|
|
1012
|
+
className?: string;
|
|
1013
|
+
/** Optional inline style applied to the panel. */
|
|
1014
|
+
style?: CSSProperties;
|
|
1015
|
+
}
|
|
1016
|
+
declare function CommandPalette({ open, onClose, items, placeholder, emptyText, className, style, }: CommandPaletteProps): react_jsx_runtime.JSX.Element | null;
|
|
592
1017
|
|
|
593
1018
|
type SheetSide = "right" | "left";
|
|
594
1019
|
interface SheetProps {
|
|
@@ -937,6 +1362,12 @@ interface AlertBannerProps extends Omit<HTMLAttributes<HTMLDivElement>, "title">
|
|
|
937
1362
|
children?: ReactNode;
|
|
938
1363
|
/** Whether to show the dismiss X button. Defaults to `!!onDismiss`. Pass `false` to suppress it. */
|
|
939
1364
|
dismissible?: boolean;
|
|
1365
|
+
/** Whether the title renders in semibold (600) or regular (400) weight.
|
|
1366
|
+
* Default `true` keeps the original bold weight; `false` is for surfaces
|
|
1367
|
+
* where the icon + tone already signal severity and bold feels heavy.
|
|
1368
|
+
* @default true
|
|
1369
|
+
*/
|
|
1370
|
+
boldTitle?: boolean;
|
|
940
1371
|
}
|
|
941
1372
|
/**
|
|
942
1373
|
* AlertBanner - inline-flow controlled tone banner (D-410, D-411).
|
|
@@ -1059,6 +1490,81 @@ interface ToastProviderProps {
|
|
|
1059
1490
|
*/
|
|
1060
1491
|
declare function ToastProvider({ children }: ToastProviderProps): react_jsx_runtime.JSX.Element;
|
|
1061
1492
|
|
|
1493
|
+
/**
|
|
1494
|
+
* Snackbar — bottom-center, solid-fill action surface. Companion to Toast
|
|
1495
|
+
* but with a different intent: snackbars confirm a destructive or
|
|
1496
|
+
* reversible action and offer an inline UNDO / RETRY. Toast is for
|
|
1497
|
+
* passive notifications; Snackbar pairs with a callback. Single-at-a-time
|
|
1498
|
+
* (replaces any active snackbar with FIFO ordering) — never stacks. Solid
|
|
1499
|
+
* ink background so the message stays readable over any page chrome
|
|
1500
|
+
* (Toast's translucent fill becomes hard to read on top-heavy apps).
|
|
1501
|
+
*/
|
|
1502
|
+
type SnackbarTone = "neutral" | "success" | "error";
|
|
1503
|
+
interface SnackbarAction {
|
|
1504
|
+
/** Visible label, e.g. "UNDO", "RETRY". Rendered mono caps amber. */
|
|
1505
|
+
label: string;
|
|
1506
|
+
/** Fires when the action is activated. The snackbar auto-dismisses after. */
|
|
1507
|
+
onClick: () => void;
|
|
1508
|
+
}
|
|
1509
|
+
interface SnackbarOptions {
|
|
1510
|
+
/** Auto-dismiss after `duration` ms. Default 5000 (longer than Toast — the
|
|
1511
|
+
* user needs time to read + click the action). Pass `Infinity` to disable. */
|
|
1512
|
+
duration?: number;
|
|
1513
|
+
/** Optional inline action (UNDO / RETRY / etc.). Rendered to the right of
|
|
1514
|
+
* the message. Clicking it fires `onClick` then dismisses the snackbar. */
|
|
1515
|
+
action?: SnackbarAction;
|
|
1516
|
+
/** Visual tone. `"neutral"` (default) for confirmations; `"success"` /
|
|
1517
|
+
* `"error"` add a left-border accent without changing the ink fill. */
|
|
1518
|
+
tone?: SnackbarTone;
|
|
1519
|
+
/** Show the explicit dismiss "✕" affordance.
|
|
1520
|
+
*
|
|
1521
|
+
* Default behavior:
|
|
1522
|
+
* - with `action` → false (the action button doubles as the dismiss path,
|
|
1523
|
+
* plus the timeout will close it; an extra "✕" is redundant chrome)
|
|
1524
|
+
* - without `action` → true (otherwise the snackbar would only have the
|
|
1525
|
+
* timeout as an escape hatch, which is too implicit)
|
|
1526
|
+
*
|
|
1527
|
+
* Pass an explicit boolean to override.
|
|
1528
|
+
*/
|
|
1529
|
+
dismissible?: boolean;
|
|
1530
|
+
}
|
|
1531
|
+
interface SnackbarApi {
|
|
1532
|
+
/** Show a snackbar. Replaces any active snackbar (single-at-a-time). */
|
|
1533
|
+
show: (message: ReactNode, opts?: SnackbarOptions) => number;
|
|
1534
|
+
dismiss: (id: number) => void;
|
|
1535
|
+
}
|
|
1536
|
+
/**
|
|
1537
|
+
* useSnackbar — imperative bottom-center action surface hook.
|
|
1538
|
+
*
|
|
1539
|
+
* Must be called inside a `<SnackbarProvider>`. Throws otherwise.
|
|
1540
|
+
*
|
|
1541
|
+
* const snack = useSnackbar();
|
|
1542
|
+
* snack.show("Application deleted.", {
|
|
1543
|
+
* action: { label: "UNDO", onClick: () => restore(row) },
|
|
1544
|
+
* });
|
|
1545
|
+
* snack.show("Saved.", { tone: "success" });
|
|
1546
|
+
* const id = snack.show("...", { duration: Infinity });
|
|
1547
|
+
* snack.dismiss(id);
|
|
1548
|
+
*/
|
|
1549
|
+
declare function useSnackbar(): SnackbarApi;
|
|
1550
|
+
interface SnackbarProviderProps {
|
|
1551
|
+
children: ReactNode;
|
|
1552
|
+
}
|
|
1553
|
+
/**
|
|
1554
|
+
* SnackbarProvider — context + DSPortal-mounted region (bottom-center).
|
|
1555
|
+
*
|
|
1556
|
+
* <SnackbarProvider>
|
|
1557
|
+
* <App />
|
|
1558
|
+
* </SnackbarProvider>
|
|
1559
|
+
*
|
|
1560
|
+
* Single-snackbar-at-a-time: calling show() while another is visible
|
|
1561
|
+
* dismisses the old one before fading in the new (FIFO swap, not a queue).
|
|
1562
|
+
* Mounts a fixed bottom-center region (z-1100) that renders only when a
|
|
1563
|
+
* snackbar is active. The region pointer-events:none lets clicks pass to
|
|
1564
|
+
* the page; the snackbar itself sets pointer-events:auto.
|
|
1565
|
+
*/
|
|
1566
|
+
declare function SnackbarProvider({ children }: SnackbarProviderProps): react_jsx_runtime.JSX.Element;
|
|
1567
|
+
|
|
1062
1568
|
interface CopyToClipboardProps extends Omit<HTMLAttributes<HTMLButtonElement>, "onCopy" | "onError"> {
|
|
1063
1569
|
/** The string value written to the clipboard on click. */
|
|
1064
1570
|
value: string;
|
|
@@ -1084,6 +1590,16 @@ interface CopyToClipboardProps extends Omit<HTMLAttributes<HTMLButtonElement>, "
|
|
|
1084
1590
|
*/
|
|
1085
1591
|
declare const CopyToClipboard: react.ForwardRefExoticComponent<CopyToClipboardProps & react.RefAttributes<HTMLButtonElement>>;
|
|
1086
1592
|
|
|
1593
|
+
interface RelativeTimeProps extends HTMLAttributes<HTMLTimeElement> {
|
|
1594
|
+
/** Date to format. Accepts Date object, ISO string, or Unix ms timestamp. */
|
|
1595
|
+
date: Date | string | number;
|
|
1596
|
+
/** Optional prefix rendered in --ink-4 color before the relative string (e.g. "Applied"). */
|
|
1597
|
+
prefix?: string;
|
|
1598
|
+
/** Recompute interval in ms. Pass 0 to disable live updates. @default 60000 */
|
|
1599
|
+
updateInterval?: number;
|
|
1600
|
+
}
|
|
1601
|
+
declare const RelativeTime: react.ForwardRefExoticComponent<RelativeTimeProps & react.RefAttributes<HTMLTimeElement>>;
|
|
1602
|
+
|
|
1087
1603
|
interface DatePickerProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
1088
1604
|
/** Controlled selected date; pass `null` for no selection. */
|
|
1089
1605
|
value: Date | null;
|
|
@@ -1117,6 +1633,15 @@ interface DatePickerProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange
|
|
|
1117
1633
|
isRangeStart?: (d: Date) => boolean;
|
|
1118
1634
|
/** Marks a cell as the end of a range for edge-pill visual polish; used by DateRangePicker. */
|
|
1119
1635
|
isRangeEnd?: (d: Date) => boolean;
|
|
1636
|
+
/** Render mode. `"inline"` (default) shows the calendar grid in flow. `"popover"`
|
|
1637
|
+
* renders a trigger pill that opens the grid in an anchored DS Popover.
|
|
1638
|
+
* @default "inline"
|
|
1639
|
+
*/
|
|
1640
|
+
variant?: "inline" | "popover";
|
|
1641
|
+
/** Placeholder text shown on the trigger pill when `value` is null. Only used when `variant="popover"`. */
|
|
1642
|
+
placeholder?: string;
|
|
1643
|
+
/** Override the date formatter for the trigger pill label. Only used when `variant="popover"`. */
|
|
1644
|
+
formatLabel?: (d: Date, showTime: boolean) => string;
|
|
1120
1645
|
}
|
|
1121
1646
|
declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLDivElement>>;
|
|
1122
1647
|
|
|
@@ -1191,6 +1716,42 @@ interface MultiSelectProps {
|
|
|
1191
1716
|
* @default "Select…"
|
|
1192
1717
|
*/
|
|
1193
1718
|
placeholder?: string;
|
|
1719
|
+
/** When true, the trigger renders as a single-line count summary instead of
|
|
1720
|
+
* the default chips-in-trigger layout. Useful in filter bars where the
|
|
1721
|
+
* trigger height needs to stay stable regardless of selection count.
|
|
1722
|
+
*
|
|
1723
|
+
* Trigger copy:
|
|
1724
|
+
* - 0 selected → `placeholder` (e.g. "Status")
|
|
1725
|
+
* - all selected (value.length === options.length) → `allSelectedLabel`
|
|
1726
|
+
* - 1+ selected (partial) → `${placeholder} (${count})`
|
|
1727
|
+
*
|
|
1728
|
+
* @default false
|
|
1729
|
+
*/
|
|
1730
|
+
compact?: boolean;
|
|
1731
|
+
/** Label rendered in the compact trigger when every option is selected.
|
|
1732
|
+
* Has no effect unless `compact` is true.
|
|
1733
|
+
* @default "All"
|
|
1734
|
+
*/
|
|
1735
|
+
allSelectedLabel?: string;
|
|
1736
|
+
/** Visual tone of the trigger surface.
|
|
1737
|
+
* - `"default"` — cream surface with ink text + a thin rule border.
|
|
1738
|
+
* The standard look for filter-bar triggers.
|
|
1739
|
+
* - `"solid"` — ink fill with cream text, no border. A confident
|
|
1740
|
+
* "filter applied" affordance; pairs well with `compact` for a
|
|
1741
|
+
* count-summary chip.
|
|
1742
|
+
*
|
|
1743
|
+
* @default "default"
|
|
1744
|
+
*/
|
|
1745
|
+
tone?: "default" | "solid";
|
|
1746
|
+
/** Trigger height + padding scale.
|
|
1747
|
+
* - `"md"` (default) — 36px height, standard form-input rhythm.
|
|
1748
|
+
* - `"sm"` — 28px height, smaller padding + 12px text.
|
|
1749
|
+
* Use when the trigger sits in a dense filter row where the chips
|
|
1750
|
+
* should read as chips, not full-size form controls.
|
|
1751
|
+
*
|
|
1752
|
+
* @default "md"
|
|
1753
|
+
*/
|
|
1754
|
+
size?: "sm" | "md";
|
|
1194
1755
|
/** When true, disables the trigger and prevents interaction.
|
|
1195
1756
|
* @default false
|
|
1196
1757
|
*/
|
|
@@ -1228,6 +1789,22 @@ interface SelectProps {
|
|
|
1228
1789
|
* @default true
|
|
1229
1790
|
*/
|
|
1230
1791
|
searchable?: boolean;
|
|
1792
|
+
/** Visual tone of the trigger surface.
|
|
1793
|
+
* - `"default"` — cream surface with ink text + a thin rule border.
|
|
1794
|
+
* - `"solid"` — ink fill with cream text, no visible border. Pairs with
|
|
1795
|
+
* MultiSelect's matching tone for filter-bar consistency.
|
|
1796
|
+
*
|
|
1797
|
+
* @default "default"
|
|
1798
|
+
*/
|
|
1799
|
+
tone?: "default" | "solid";
|
|
1800
|
+
/** Trigger height + padding scale.
|
|
1801
|
+
* - `"md"` (default) — 36px height, standard form-input rhythm.
|
|
1802
|
+
* - `"sm"` — 28px height, smaller padding + 12px text. Use in
|
|
1803
|
+
* dense filter rows alongside MultiSelect at the same size.
|
|
1804
|
+
*
|
|
1805
|
+
* @default "md"
|
|
1806
|
+
*/
|
|
1807
|
+
size?: "sm" | "md";
|
|
1231
1808
|
/** When true, disables the trigger button and prevents interaction.
|
|
1232
1809
|
* @default false
|
|
1233
1810
|
*/
|
|
@@ -1342,6 +1919,89 @@ interface AutocompleteProps<T> {
|
|
|
1342
1919
|
*/
|
|
1343
1920
|
declare function Autocomplete<T>({ value, onValueChange, items, recentItems, onSelect, onCreate, getItemLabel, getItemKey, renderItem, placeholder, className, style, }: AutocompleteProps<T>): react_jsx_runtime.JSX.Element;
|
|
1344
1921
|
|
|
1922
|
+
interface FileInputProps {
|
|
1923
|
+
/** Called when the user selects or drops file(s). */
|
|
1924
|
+
onSelect: (files: File[]) => void;
|
|
1925
|
+
/** MIME type or file extension allowlist (passed to hidden input `accept`).
|
|
1926
|
+
* @example "application/pdf" | ".pdf,.docx,.md"
|
|
1927
|
+
*/
|
|
1928
|
+
accept?: string;
|
|
1929
|
+
/** Whether to allow multiple files.
|
|
1930
|
+
* @default false
|
|
1931
|
+
*/
|
|
1932
|
+
multiple?: boolean;
|
|
1933
|
+
/** Maximum file size in bytes. `onError` is called if exceeded.
|
|
1934
|
+
* @default undefined (no limit)
|
|
1935
|
+
*/
|
|
1936
|
+
maxSizeBytes?: number;
|
|
1937
|
+
/**
|
|
1938
|
+
* Called when a file is rejected due to type or size constraint.
|
|
1939
|
+
* Receives a human-readable reason string.
|
|
1940
|
+
*/
|
|
1941
|
+
onError?: (reason: string) => void;
|
|
1942
|
+
/** When true, disables interaction.
|
|
1943
|
+
* @default false
|
|
1944
|
+
*/
|
|
1945
|
+
disabled?: boolean;
|
|
1946
|
+
/**
|
|
1947
|
+
* Visual variant.
|
|
1948
|
+
* - "dropzone" — dashed bordered drop area; accepts drag-and-drop.
|
|
1949
|
+
* - "button" — renders a Button-like trigger with no drop area.
|
|
1950
|
+
* @default "dropzone"
|
|
1951
|
+
*/
|
|
1952
|
+
variant?: "dropzone" | "button";
|
|
1953
|
+
/** Accessible label for the trigger.
|
|
1954
|
+
* @default "Upload file"
|
|
1955
|
+
*/
|
|
1956
|
+
ariaLabel?: string;
|
|
1957
|
+
/**
|
|
1958
|
+
* Content rendered inside the dropzone area (dropzone variant only).
|
|
1959
|
+
* When not provided, a default amber icon + "Drop a file here, or click
|
|
1960
|
+
* to upload" + meta line is rendered (matching cairn UploadDropZone visual).
|
|
1961
|
+
*/
|
|
1962
|
+
children?: ReactNode;
|
|
1963
|
+
className?: string;
|
|
1964
|
+
style?: CSSProperties;
|
|
1965
|
+
}
|
|
1966
|
+
declare function FileInput({ onSelect, accept, multiple, maxSizeBytes, onError, disabled, variant, ariaLabel, children, className, style, }: FileInputProps): react_jsx_runtime.JSX.Element;
|
|
1967
|
+
|
|
1968
|
+
interface ColorPickerProps {
|
|
1969
|
+
/** Controlled hex value, e.g. '#f59e0b'. Optional — uncontrolled if absent. */
|
|
1970
|
+
value?: string;
|
|
1971
|
+
/** Called with new hex string when color changes via any sub-control. */
|
|
1972
|
+
onChange?: (hex: string) => void;
|
|
1973
|
+
/** Initial hex when uncontrolled. @default '#f59e0b' */
|
|
1974
|
+
defaultValue?: string;
|
|
1975
|
+
/** Custom preset swatches. @default the 10-color amber-led palette */
|
|
1976
|
+
presets?: string[];
|
|
1977
|
+
/** Additional className applied to the root wrapper. */
|
|
1978
|
+
className?: string;
|
|
1979
|
+
/** Inline styles applied to the root wrapper. */
|
|
1980
|
+
style?: CSSProperties;
|
|
1981
|
+
}
|
|
1982
|
+
declare function ColorPicker({ value, onChange, defaultValue, presets, className, style, }: ColorPickerProps): react_jsx_runtime.JSX.Element;
|
|
1983
|
+
|
|
1984
|
+
interface ColorInputProps {
|
|
1985
|
+
/** Controlled hex value, e.g. '#f59e0b'. Optional — uncontrolled if absent. */
|
|
1986
|
+
value?: string;
|
|
1987
|
+
/** Called with new hex string when a valid 6-digit hex is typed. */
|
|
1988
|
+
onChange?: (hex: string) => void;
|
|
1989
|
+
/** Initial hex when uncontrolled. @default '#f59e0b' */
|
|
1990
|
+
defaultValue?: string;
|
|
1991
|
+
/** Optional label rendered above the input row. */
|
|
1992
|
+
label?: string;
|
|
1993
|
+
/** Additional className applied to the root wrapper. */
|
|
1994
|
+
className?: string;
|
|
1995
|
+
/** Inline styles applied to the root wrapper. */
|
|
1996
|
+
style?: CSSProperties;
|
|
1997
|
+
}
|
|
1998
|
+
/**
|
|
1999
|
+
* Compact inline color field — swatch + hex text input.
|
|
2000
|
+
* No popover, no full picker — designed to drop into form rows alongside
|
|
2001
|
+
* other inline form fields.
|
|
2002
|
+
*/
|
|
2003
|
+
declare function ColorInput({ value, onChange, defaultValue, label, className, style, }: ColorInputProps): react_jsx_runtime.JSX.Element;
|
|
2004
|
+
|
|
1345
2005
|
interface SegmentedOption<T extends string = string> {
|
|
1346
2006
|
value: T;
|
|
1347
2007
|
label: string;
|
|
@@ -1751,6 +2411,83 @@ declare const Calendar: react.ForwardRefExoticComponent<CalendarProps & react.Re
|
|
|
1751
2411
|
Agenda: typeof AgendaList;
|
|
1752
2412
|
};
|
|
1753
2413
|
|
|
2414
|
+
interface PaginationProps {
|
|
2415
|
+
/** Total number of pages. */
|
|
2416
|
+
totalPages: number;
|
|
2417
|
+
/** Currently active page (1-based). */
|
|
2418
|
+
currentPage: number;
|
|
2419
|
+
/** Called when user navigates to a different page. */
|
|
2420
|
+
onPageChange: (page: number) => void;
|
|
2421
|
+
/** Display variant. "full" shows numbered page buttons; "compact" shows "N / M" only.
|
|
2422
|
+
* @default "full"
|
|
2423
|
+
*/
|
|
2424
|
+
variant?: "full" | "compact";
|
|
2425
|
+
/** Accessible label for the nav landmark.
|
|
2426
|
+
* @default "Pagination"
|
|
2427
|
+
*/
|
|
2428
|
+
ariaLabel?: string;
|
|
2429
|
+
/** Additional className applied to the root `<nav>` element. */
|
|
2430
|
+
className?: string;
|
|
2431
|
+
/** Inline styles applied to the root `<nav>` element. */
|
|
2432
|
+
style?: CSSProperties;
|
|
2433
|
+
}
|
|
2434
|
+
declare const Pagination: react.ForwardRefExoticComponent<PaginationProps & react.RefAttributes<HTMLElement>>;
|
|
2435
|
+
|
|
2436
|
+
/**
|
|
2437
|
+
* # Usage Audit - DataGrid (DS-62)
|
|
2438
|
+
*
|
|
2439
|
+
* Composed component built on Table.* + three table hooks. Provides a
|
|
2440
|
+
* higher-level columns/rows API with status badge rendering, priority dots,
|
|
2441
|
+
* bulk-action bar, and footer pagination.
|
|
2442
|
+
*
|
|
2443
|
+
* <DataGrid
|
|
2444
|
+
* columns={cols}
|
|
2445
|
+
* rows={rows}
|
|
2446
|
+
* page={page}
|
|
2447
|
+
* totalPages={n}
|
|
2448
|
+
* onPageChange={setPage}
|
|
2449
|
+
* onSelectionChange={(ids) => setSelected(ids)}
|
|
2450
|
+
* />
|
|
2451
|
+
*
|
|
2452
|
+
* Important: <Pagination> is rendered as a SIBLING of the inner Table.Root,
|
|
2453
|
+
* NOT inside it. <nav> inside <table> is invalid HTML.
|
|
2454
|
+
*
|
|
2455
|
+
* Status mapping:
|
|
2456
|
+
* applied → Badge tone="upcoming" label="Applied"
|
|
2457
|
+
* interviewing → Badge tone="done" label="Interview"
|
|
2458
|
+
* offer → Badge tone="passed" label="Offer"
|
|
2459
|
+
* rejected → Badge tone="pending" label="Rejected"
|
|
2460
|
+
*
|
|
2461
|
+
* Priority mapping:
|
|
2462
|
+
* high → red dot (var(--red-vivid))
|
|
2463
|
+
* medium → amber dot (var(--amber-vivid))
|
|
2464
|
+
* low → green dot (var(--green-vivid))
|
|
2465
|
+
*/
|
|
2466
|
+
|
|
2467
|
+
interface DataGridColumn {
|
|
2468
|
+
key: string;
|
|
2469
|
+
label: string;
|
|
2470
|
+
width: number;
|
|
2471
|
+
sortable?: boolean;
|
|
2472
|
+
align?: "left" | "right";
|
|
2473
|
+
}
|
|
2474
|
+
type DataGridRow = Record<string, unknown> & {
|
|
2475
|
+
id: string | number;
|
|
2476
|
+
};
|
|
2477
|
+
interface DataGridProps extends react__default.HTMLAttributes<HTMLDivElement> {
|
|
2478
|
+
columns: DataGridColumn[];
|
|
2479
|
+
rows: DataGridRow[];
|
|
2480
|
+
/** Current page (1-based). Optional — defaults to 1 when pagination not used. */
|
|
2481
|
+
page?: number;
|
|
2482
|
+
/** Total page count. Optional — defaults to 1. */
|
|
2483
|
+
totalPages?: number;
|
|
2484
|
+
/** Page-change callback wired to <Pagination>. */
|
|
2485
|
+
onPageChange?: (page: number) => void;
|
|
2486
|
+
/** Fires whenever the selected row IDs change. */
|
|
2487
|
+
onSelectionChange?: (ids: Array<string | number>) => void;
|
|
2488
|
+
}
|
|
2489
|
+
declare const DataGrid: react__default.ForwardRefExoticComponent<DataGridProps & react__default.RefAttributes<HTMLDivElement>>;
|
|
2490
|
+
|
|
1754
2491
|
interface RichTextProps {
|
|
1755
2492
|
/** Controlled HTML string (default) or TipTap JSON Doc object when `outputFormat="json"`. */
|
|
1756
2493
|
value: string | object;
|
|
@@ -2088,4 +2825,4 @@ declare function SortableItem({ id, children, reducedMotion }: SortableItemProps
|
|
|
2088
2825
|
declare function SortableDndContext({ children, onMove, renderOverlay }: SortableDndContextProps): react_jsx_runtime.JSX.Element;
|
|
2089
2826
|
declare function Sortable({ items, onReorder, renderItem, id, className, style }: SortableProps): react_jsx_runtime.JSX.Element;
|
|
2090
2827
|
|
|
2091
|
-
export { Accordion, type AccordionItemProps, type AccordionProps, AlertBanner, type AlertBannerProps, type AlertBannerTone, AppBar, type AppBarProps, type AppBarVariant, AppShell, type AppShellProps, Autocomplete, type AutocompleteProps, Avatar, type AvatarPresence, type AvatarPresencePosition, type AvatarProps, type AvatarSize, AvatarStack, type AvatarStackProps, Badge, type BadgeProps, type BadgeTone, BottomSheet, type BottomSheetHeight, type BottomSheetProps, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Calendar, type CalendarEvent, type CalendarProps, Card, type CardProps, type CardVariant, Carousel, type CarouselProps, type CarouselSlide, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipTone, Coachmark, type CoachmarkProps, ConfirmDialog, type ConfirmDialogProps, ContextMenu, type ContextMenuItem, type ContextMenuProps, CopyToClipboard, type CopyToClipboardProps, DSPortal, type DSPortalProps, DatePicker, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, EmptyState, type EmptyStateProps, FieldError, type FieldErrorProps, Footer, type FooterColumn, type FooterProps, type FooterVariant, FormErrorSummary, type FormErrorSummaryProps, HoverCard, type HoverCardPlacement, type HoverCardProps, InfiniteList, type InfiniteListProps, InlineConfirm, type InlineConfirmProps, type InlineConfirmTriggerProps, InlineEdit, type InlineEditProps, Lightbox, type LightboxItem, type LightboxProps, Modal, type ModalProps, type ModalRole, MultiSelect, type MultiSelectOption, type MultiSelectProps, NumberStepper, type NumberStepperProps, PasswordStrength, type PasswordStrengthProps, Popover, type PopoverPlacement, type PopoverProps, type PopoverVariant, ProgressBar, type ProgressBarProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, RangeSlider, type RangeSliderProps, RichText, type RichTextProps, RollingNumber, type RollingNumberProps, SearchAndFilters, type SearchAndFiltersProps, type SearchFilter, type SearchSuggestion, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Select, type SelectOption, type SelectProps, Sheet, type SheetProps, type SheetSide, Skeleton, type SkeletonProps, type SkeletonShape, Sortable, SortableDndContext, type SortableDndContextProps, SortableItem, type SortableItemData, type SortableItemProps, type SortableProps, SplitButton, type SplitButtonAction, type SplitButtonProps, StarRating, type StarRatingProps, type StarRatingSize, StickyNote, type StickyNoteProps, type StickyNoteRotation, type TabItem, Table, type TableHeaderCellProps, type TableRootProps, Tabs, type TabsProps, TextInput, type TextInputProps, Textarea, type TextareaProps, Timeline, type TimelineEvent, type TimelineProps, type ToastOptions, ToastProvider, type ToastProviderProps, type ToastTone, Toggle, type ToggleProps, Tooltip, type TooltipPlacement, type TooltipProps, Wizard, type WizardProps, type WizardStep, deriveGradient, deriveInitials, useToast };
|
|
2828
|
+
export { Accordion, type AccordionItemProps, type AccordionProps, AlertBanner, type AlertBannerProps, type AlertBannerTone, AppBar, type AppBarProps, type AppBarVariant, AppShell, type AppShellProps, Autocomplete, type AutocompleteProps, Avatar, type AvatarPresence, type AvatarPresencePosition, type AvatarProps, type AvatarSize, AvatarStack, type AvatarStackProps, Badge, type BadgeProps, type BadgeTone, BottomSheet, type BottomSheetHeight, type BottomSheetProps, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Calendar, type CalendarEvent, type CalendarProps, Card, type CardProps, type CardVariant, Carousel, type CarouselProps, type CarouselSlide, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipTone, Coachmark, type CoachmarkProps, ColorInput, type ColorInputProps, ColorPicker, type ColorPickerProps, CommandPalette, type CommandPaletteItem, type CommandPaletteProps, ConfirmDialog, type ConfirmDialogProps, type ConfirmDialogTone, ContextMenu, type ContextMenuItem, type ContextMenuProps, CopyToClipboard, type CopyToClipboardProps, DSPortal, type DSPortalProps, DataGrid, type DataGridColumn, type DataGridProps, type DataGridRow, DatePicker, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, Divider, type DividerProps, DotGrid, type DotGridProps, EmptyState, type EmptyStateProps, Eyebrow, type EyebrowProps, type EyebrowSize, FieldError, type FieldErrorProps, FileInput, type FileInputProps, Footer, type FooterColumn, type FooterProps, type FooterVariant, FormErrorSummary, type FormErrorSummaryProps, Heading, type HeadingLevel, type HeadingProps, HoverCard, type HoverCardPlacement, type HoverCardProps, InfiniteList, type InfiniteListProps, InlineConfirm, type InlineConfirmProps, type InlineConfirmTriggerProps, InlineEdit, InlineEditField, type InlineEditFieldProps, type InlineEditProps, Kbd, type KbdProps, type KbdSize, Lightbox, type LightboxItem, type LightboxProps, Link, type LinkProps, type LinkVariant, MiniBar, type MiniBarProps, MiniDonut, type MiniDonutProps, Modal, type ModalProps, type ModalRole, MultiSelect, type MultiSelectOption, type MultiSelectProps, NumberStepper, type NumberStepperProps, OAuthButton, type OAuthButtonProps, type OAuthProvider, Pagination, type PaginationProps, PasswordStrength, type PasswordStrengthProps, Popover, type PopoverPlacement, type PopoverProps, type PopoverVariant, ProgressBar, type ProgressBarProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, RangeSlider, type RangeSliderProps, RelativeTime, type RelativeTimeProps, RichText, type RichTextProps, RollingNumber, type RollingNumberProps, SearchAndFilters, type SearchAndFiltersProps, type SearchFilter, type SearchSuggestion, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Select, type SelectOption, type SelectProps, Sheet, type SheetProps, type SheetSide, Skeleton, type SkeletonProps, type SkeletonShape, type SnackbarAction, type SnackbarOptions, SnackbarProvider, type SnackbarProviderProps, type SnackbarTone, Sortable, SortableDndContext, type SortableDndContextProps, SortableItem, type SortableItemData, type SortableItemProps, type SortableProps, Sparkline, type SparklineProps, SplitButton, type SplitButtonAction, type SplitButtonProps, SplitHero, type SplitHeroProps, StarRating, type StarRatingProps, type StarRatingSize, StatCard, type StatCardChangeDir, type StatCardProps, StatusPill, type StatusPillProps, type StatusPillStage, StickyNote, type StickyNoteProps, type StickyNoteRotation, type TabItem, Table, type TableHeaderCellProps, type TableRootProps, Tabs, type TabsProps, Text, type TextElement, TextInput, type TextInputProps, type TextProps, type TextVariant, Textarea, type TextareaProps, Timeline, type TimelineEvent, type TimelineProps, type ToastOptions, ToastProvider, type ToastProviderProps, type ToastTone, Toggle, type ToggleProps, Tooltip, type TooltipPlacement, type TooltipProps, TypeToConfirm, type TypeToConfirmProps, Wizard, type WizardProps, type WizardStep, deriveGradient, deriveInitials, useSnackbar, useToast };
|