@nurix/ui-component-library 1.1.3-stage.99 → 1.1.4-stage.113
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/dist/agent-avatar-ZI4HOQHG.png +0 -0
- package/dist/index.d.mts +879 -138
- package/dist/index.d.ts +879 -138
- package/dist/index.js +4800 -2278
- package/dist/index.mjs +4795 -2280
- package/dist/styles.css +1363 -481
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -9,9 +9,9 @@ import { LucideIcon } from 'lucide-react';
|
|
|
9
9
|
import { Schema } from 'ajv';
|
|
10
10
|
import { OnMount } from '@monaco-editor/react';
|
|
11
11
|
|
|
12
|
-
type ButtonBorderRadius = "none" | "soft" | "rounded";
|
|
13
|
-
type ButtonVariant = "primary" | "secondary" | "destructive" | "outline" | "link" | "iconPrimary" | "iconSecondary" | "iconOutline";
|
|
14
|
-
type ButtonSize = "default" | "sm" | "
|
|
12
|
+
type ButtonBorderRadius = "none" | "soft" | "rounded" | "nestedLeft" | "nestedMiddle" | "nestedRight";
|
|
13
|
+
type ButtonVariant = "primary" | "secondary" | "destructive" | "outline" | "link" | "iconPrimary" | "iconSecondary" | "iconOutline" | "iconLink";
|
|
14
|
+
type ButtonSize = "lg" | "default" | "sm" | "xs" | "link" | "icon" | "iconMd" | "iconSm" | "iconXs";
|
|
15
15
|
interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
16
16
|
variant?: ButtonVariant;
|
|
17
17
|
size?: ButtonSize;
|
|
@@ -33,10 +33,27 @@ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
36
|
+
interface NestedButtonGroupProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
37
|
+
children: React$1.ReactNode;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* NestedButtonGroup — renders any number of `<Button>` children as one pill.
|
|
41
|
+
* Assigns the correct `button_border_radius` (nestedLeft / nestedMiddle /
|
|
42
|
+
* nestedRight) per position and overlaps borders by -1px so the shared edge
|
|
43
|
+
* draws once. Figma: 5490:33596.
|
|
44
|
+
*/
|
|
45
|
+
declare const NestedButtonGroup: React$1.ForwardRefExoticComponent<NestedButtonGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
36
46
|
|
|
37
47
|
type InputBorderRadius = "none" | "soft" | "rounded" | "pill";
|
|
38
|
-
type
|
|
48
|
+
type InputVariant = "grey" | "white" | "borderless";
|
|
49
|
+
type SupportingTextType = "help" | "error" | "success";
|
|
39
50
|
type InputForceState = "active" | "focussed" | "disabled";
|
|
51
|
+
/**
|
|
52
|
+
* Input size variant.
|
|
53
|
+
* - `md` (default): 40px height — standard forms.
|
|
54
|
+
* - `sm`: 32px height — compact use (filter dropdowns, toolbars).
|
|
55
|
+
*/
|
|
56
|
+
type InputSize = "md" | "sm";
|
|
40
57
|
interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size"> {
|
|
41
58
|
/**
|
|
42
59
|
* Optional label shown above the field.
|
|
@@ -46,6 +63,19 @@ interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>,
|
|
|
46
63
|
* Whether to show a red "*" required indicator next to the label.
|
|
47
64
|
*/
|
|
48
65
|
mandatory?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Icon or element rendered in the leading slot (left side, 16px).
|
|
68
|
+
*/
|
|
69
|
+
leadingIcon?: React$1.ReactNode;
|
|
70
|
+
/**
|
|
71
|
+
* Icon or element rendered in the trailing slot (right side, 16px).
|
|
72
|
+
*/
|
|
73
|
+
trailingIcon?: React$1.ReactNode;
|
|
74
|
+
/**
|
|
75
|
+
* Suffix text rendered at the trailing end (e.g. ".com", "kg").
|
|
76
|
+
* Ignored when `trailingIcon` is provided.
|
|
77
|
+
*/
|
|
78
|
+
suffix?: string;
|
|
49
79
|
/**
|
|
50
80
|
* Supporting/help/error text shown below the field.
|
|
51
81
|
*/
|
|
@@ -58,6 +88,19 @@ interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>,
|
|
|
58
88
|
* Hide the supporting text row (even if `supportingText` is provided).
|
|
59
89
|
*/
|
|
60
90
|
hideSupportingText?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Input field background variant in light mode.
|
|
93
|
+
* grey: light grey background (--input). white: white background (--card).
|
|
94
|
+
* @default "grey"
|
|
95
|
+
*/
|
|
96
|
+
inputVariant?: InputVariant;
|
|
97
|
+
/**
|
|
98
|
+
* Size variant of the input field.
|
|
99
|
+
* - `md` (default): 40px height. Standard forms.
|
|
100
|
+
* - `sm`: 32px height, compact vertical padding. Used in filter dropdowns / toolbars.
|
|
101
|
+
* @default "md"
|
|
102
|
+
*/
|
|
103
|
+
inputSize?: InputSize;
|
|
61
104
|
/**
|
|
62
105
|
* Design-system controlled border radius.
|
|
63
106
|
*/
|
|
@@ -82,6 +125,7 @@ interface FileInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputEleme
|
|
|
82
125
|
placeholder?: string;
|
|
83
126
|
fileName?: string;
|
|
84
127
|
input_border_radius?: InputBorderRadius;
|
|
128
|
+
inputVariant?: InputVariant;
|
|
85
129
|
onFileChange?: (file: File | null) => void;
|
|
86
130
|
}
|
|
87
131
|
|
|
@@ -129,18 +173,70 @@ interface InputGroupProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElem
|
|
|
129
173
|
*/
|
|
130
174
|
endSegment?: React$1.ReactNode;
|
|
131
175
|
input_border_radius?: InputGroupBorderRadius;
|
|
176
|
+
/**
|
|
177
|
+
* Input field background variant in light mode.
|
|
178
|
+
* grey: light grey (--input). white: white (--card).
|
|
179
|
+
* @default "grey"
|
|
180
|
+
*/
|
|
181
|
+
inputVariant?: InputVariant;
|
|
132
182
|
}
|
|
133
|
-
|
|
183
|
+
|
|
184
|
+
declare const InputGroup: React$1.ForwardRefExoticComponent<InputGroupProps & React$1.RefAttributes<HTMLInputElement>>;
|
|
185
|
+
|
|
186
|
+
type TextareaBorderRadius = "none" | "soft" | "rounded" | "pill";
|
|
187
|
+
type TextareaForceState = "active" | "focussed" | "disabled";
|
|
188
|
+
interface TextareaProps extends Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, "style"> {
|
|
189
|
+
/**
|
|
190
|
+
* Optional label shown above the field.
|
|
191
|
+
*/
|
|
134
192
|
label?: string;
|
|
193
|
+
/**
|
|
194
|
+
* Whether to show a red "*" required indicator next to the label.
|
|
195
|
+
*/
|
|
135
196
|
mandatory?: boolean;
|
|
197
|
+
/**
|
|
198
|
+
* Supporting/help/error text shown below the field.
|
|
199
|
+
*/
|
|
136
200
|
supportingText?: string;
|
|
137
|
-
|
|
201
|
+
/**
|
|
202
|
+
* Visual style for supporting text.
|
|
203
|
+
*/
|
|
204
|
+
supportingTextType?: SupportingTextType;
|
|
205
|
+
/**
|
|
206
|
+
* Hide the supporting text row (even if `supportingText` is provided).
|
|
207
|
+
*/
|
|
208
|
+
hideSupportingText?: boolean;
|
|
209
|
+
/**
|
|
210
|
+
* Input field background variant in light mode.
|
|
211
|
+
* grey: light grey (--input). white: white (--card).
|
|
212
|
+
* @default "grey"
|
|
213
|
+
*/
|
|
214
|
+
inputVariant?: InputVariant;
|
|
215
|
+
/**
|
|
216
|
+
* Design-system controlled border radius.
|
|
217
|
+
*/
|
|
218
|
+
input_border_radius?: TextareaBorderRadius;
|
|
219
|
+
/**
|
|
220
|
+
* Force a visual state (useful for sticker-sheet stories).
|
|
221
|
+
* When unset, focus/disabled styles are derived from real DOM state.
|
|
222
|
+
*/
|
|
223
|
+
forceState?: TextareaForceState;
|
|
224
|
+
/**
|
|
225
|
+
* Marks the field as invalid.
|
|
226
|
+
* Sets `aria-invalid` and applies destructive border/ring styling.
|
|
227
|
+
*/
|
|
138
228
|
invalid?: boolean;
|
|
139
|
-
|
|
229
|
+
/**
|
|
230
|
+
* Resize behavior of the textarea.
|
|
231
|
+
*/
|
|
140
232
|
resize?: "none" | "vertical" | "horizontal" | "both";
|
|
233
|
+
style?: React$1.CSSProperties;
|
|
141
234
|
}
|
|
142
235
|
|
|
143
|
-
|
|
236
|
+
/**
|
|
237
|
+
* Textarea - Standalone textarea component.
|
|
238
|
+
* Matches Input component structure and states (label, supportingText, forceState, invalid, etc).
|
|
239
|
+
*/
|
|
144
240
|
declare const Textarea: React$1.ForwardRefExoticComponent<TextareaProps & React$1.RefAttributes<HTMLTextAreaElement>>;
|
|
145
241
|
|
|
146
242
|
type SwitchSize = "default" | "small";
|
|
@@ -211,7 +307,25 @@ interface DialogHeaderNavigationProps extends React$1.HTMLAttributes<HTMLDivElem
|
|
|
211
307
|
backButtonPosition?: BackButtonPosition;
|
|
212
308
|
disabled?: boolean;
|
|
213
309
|
}
|
|
214
|
-
type TabVariant = "top" | "side";
|
|
310
|
+
type TabVariant = "top" | "side" | "section";
|
|
311
|
+
interface ListNavItemProps {
|
|
312
|
+
/** Unique identifier */
|
|
313
|
+
id: string;
|
|
314
|
+
/** Primary text */
|
|
315
|
+
title: string;
|
|
316
|
+
/** Secondary text */
|
|
317
|
+
subtitle?: string;
|
|
318
|
+
/** Trailing content (badges, icons, etc.) */
|
|
319
|
+
trailing?: React$1.ReactNode;
|
|
320
|
+
}
|
|
321
|
+
interface ListNavigationProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
|
|
322
|
+
/** List of items */
|
|
323
|
+
items: ListNavItemProps[];
|
|
324
|
+
/** Currently selected item id */
|
|
325
|
+
selectedId?: string | null;
|
|
326
|
+
/** Callback when an item is clicked */
|
|
327
|
+
onSelect?: (id: string) => void;
|
|
328
|
+
}
|
|
215
329
|
interface TabsProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
216
330
|
value?: string;
|
|
217
331
|
defaultValue?: string;
|
|
@@ -237,6 +351,11 @@ declare function Tabs({ className, value, defaultValue, onValueChange, variant,
|
|
|
237
351
|
declare const TabsList: React$1.ForwardRefExoticComponent<TabsListProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
238
352
|
declare const TabsTrigger: React$1.ForwardRefExoticComponent<TabsTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
239
353
|
declare function TabsContent({ value, forceMount, className, children, ...props }: TabsContentProps): react_jsx_runtime.JSX.Element | null;
|
|
354
|
+
/**
|
|
355
|
+
* ListNavigation — A vertical list of selectable items (e.g. call history).
|
|
356
|
+
* Based on Figma design node: 5503:34142
|
|
357
|
+
*/
|
|
358
|
+
declare const ListNavigation: React$1.ForwardRefExoticComponent<ListNavigationProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
240
359
|
|
|
241
360
|
type AccordionType = "single" | "multiple";
|
|
242
361
|
type AccordionValue<TType extends AccordionType> = TType extends "multiple" ? string[] : string | null;
|
|
@@ -269,17 +388,30 @@ interface AccordionTriggerProps extends React$1.ButtonHTMLAttributes<HTMLButtonE
|
|
|
269
388
|
}
|
|
270
389
|
interface AccordionContentProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
271
390
|
}
|
|
391
|
+
interface AccordionSectionTriggerProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
392
|
+
/**
|
|
393
|
+
* Label shown inside the pill (Figma: "Summary"). Children override.
|
|
394
|
+
*/
|
|
395
|
+
label?: React$1.ReactNode;
|
|
396
|
+
}
|
|
272
397
|
|
|
273
398
|
declare function Accordion<TType extends AccordionType = "single">({ className, type, collapsible, value, defaultValue, onValueChange, disabled, ...props }: AccordionProps<TType>): react_jsx_runtime.JSX.Element;
|
|
274
399
|
declare const AccordionItem: React$1.ForwardRefExoticComponent<AccordionItemProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
275
400
|
declare const AccordionTrigger: React$1.ForwardRefExoticComponent<AccordionTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
401
|
+
/**
|
|
402
|
+
* Section-separator trigger (Figma 6128:5627). A compact pill that separates
|
|
403
|
+
* sections within a card or page. Use in place of `AccordionTrigger` inside
|
|
404
|
+
* an `AccordionItem` — it wires into the same Radix state and flips the
|
|
405
|
+
* chevron when `data-state=open`.
|
|
406
|
+
*/
|
|
407
|
+
declare const AccordionSectionTrigger: React$1.ForwardRefExoticComponent<AccordionSectionTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
276
408
|
declare const AccordionContent: React$1.ForwardRefExoticComponent<AccordionContentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
277
409
|
declare function AccordionContentPlaceholder({ className, children, }: {
|
|
278
410
|
className?: string;
|
|
279
411
|
children?: React$1.ReactNode;
|
|
280
412
|
}): react_jsx_runtime.JSX.Element;
|
|
281
413
|
|
|
282
|
-
type AvatarSize = "sm" | "default" | "lg";
|
|
414
|
+
type AvatarSize = "xxs" | "xs" | "sm" | "default" | "lg";
|
|
283
415
|
type AvatarShape = "circle" | "square";
|
|
284
416
|
interface AvatarProps {
|
|
285
417
|
/**
|
|
@@ -342,6 +474,19 @@ declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & React$1.Re
|
|
|
342
474
|
declare const AvatarGroup: React$1.ForwardRefExoticComponent<AvatarGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
343
475
|
|
|
344
476
|
type BadgeVariant = "default" | "secondary" | "destructive" | "outline" | "success" | "warning";
|
|
477
|
+
/**
|
|
478
|
+
* A tag option for the TagBadge dropdown menu.
|
|
479
|
+
*/
|
|
480
|
+
interface TagOption {
|
|
481
|
+
value: string;
|
|
482
|
+
label: string;
|
|
483
|
+
/** Badge variant to use when this tag is selected */
|
|
484
|
+
variant?: BadgeVariant;
|
|
485
|
+
/** Custom background color (overrides variant) */
|
|
486
|
+
background?: string;
|
|
487
|
+
/** Custom text color (overrides variant) */
|
|
488
|
+
color?: string;
|
|
489
|
+
}
|
|
345
490
|
interface BadgeProps {
|
|
346
491
|
/**
|
|
347
492
|
* The badge variant style.
|
|
@@ -374,6 +519,36 @@ interface BadgeProps {
|
|
|
374
519
|
* Badge content (alternative to label prop).
|
|
375
520
|
*/
|
|
376
521
|
children?: React$1.ReactNode;
|
|
522
|
+
/**
|
|
523
|
+
* Click handler. When provided, badge renders as a button.
|
|
524
|
+
*/
|
|
525
|
+
onClick?: (e: React$1.MouseEvent) => void;
|
|
526
|
+
/**
|
|
527
|
+
* When false, disables hover/pressed/focus affordances and cursor-pointer.
|
|
528
|
+
* Useful for read-only / view-only badges that should not appear clickable.
|
|
529
|
+
* @default true
|
|
530
|
+
*/
|
|
531
|
+
interactive?: boolean;
|
|
532
|
+
className?: string;
|
|
533
|
+
style?: React$1.CSSProperties;
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Props for TagBadge - an interactive badge that opens a dropdown to select a tag.
|
|
537
|
+
* Mirrors the TagsDropdown pattern from the zero repo.
|
|
538
|
+
*/
|
|
539
|
+
interface TagBadgeProps {
|
|
540
|
+
/** Currently selected tag value */
|
|
541
|
+
value: string | null;
|
|
542
|
+
/** Callback when a tag is selected */
|
|
543
|
+
onValueChange?: (value: string) => void;
|
|
544
|
+
/** Available tag options */
|
|
545
|
+
options: TagOption[];
|
|
546
|
+
/** When true, renders as a non-interactive badge (no dropdown) */
|
|
547
|
+
viewOnly?: boolean;
|
|
548
|
+
/** Placeholder text when no tag is selected */
|
|
549
|
+
placeholder?: string;
|
|
550
|
+
/** Default variant when no tag is selected */
|
|
551
|
+
defaultVariant?: BadgeVariant;
|
|
377
552
|
className?: string;
|
|
378
553
|
style?: React$1.CSSProperties;
|
|
379
554
|
}
|
|
@@ -412,6 +587,13 @@ declare const Badge: React$1.ForwardRefExoticComponent<BadgeProps & React$1.RefA
|
|
|
412
587
|
* Based on Figma design node: 3333:1629
|
|
413
588
|
*/
|
|
414
589
|
declare const NumberBadge: React$1.ForwardRefExoticComponent<NumberBadgeProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
590
|
+
/**
|
|
591
|
+
* TagBadge - An interactive badge that opens a dropdown to pick a tag.
|
|
592
|
+
* Mirrors the TagsDropdown behavior from the zero repo:
|
|
593
|
+
* - viewOnly=true: renders as a static badge
|
|
594
|
+
* - viewOnly=false (default): renders as a clickable badge with chevron that opens a tag menu
|
|
595
|
+
*/
|
|
596
|
+
declare const TagBadge: React$1.ForwardRefExoticComponent<TagBadgeProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
415
597
|
|
|
416
598
|
type SelectType = "Single Line Regular" | "Single Line Large" | "Double Line";
|
|
417
599
|
type SelectState = "Default" | "Open";
|
|
@@ -466,7 +648,10 @@ declare const SelectTrigger: React$1.ForwardRefExoticComponent<Omit<SelectPrimit
|
|
|
466
648
|
leadIcon?: React$1.ReactNode;
|
|
467
649
|
/** Size of lead icon. "xs" = 16px, "sm" = 24px (default) */
|
|
468
650
|
leadIconSize?: "xs" | "sm";
|
|
469
|
-
|
|
651
|
+
/** Size variant. "small" = 32px height, "regular" = 48px, "large" = 64px */
|
|
652
|
+
size?: "small" | "regular" | "large";
|
|
653
|
+
/** Background variant. "default" = input grey, "white" = card white */
|
|
654
|
+
bg?: "default" | "white";
|
|
470
655
|
} & React$1.RefAttributes<HTMLButtonElement>>;
|
|
471
656
|
declare const SelectScrollUpButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
472
657
|
declare const SelectScrollDownButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
@@ -580,7 +765,7 @@ declare function usePlaySelect({ value, defaultValue, onValueChange, onPlayClick
|
|
|
580
765
|
type EmptyStateIllustrationPosition = "top" | "bottom";
|
|
581
766
|
/** Illustration size variant. */
|
|
582
767
|
type EmptyStateIllustrationSize = "small" | "banner";
|
|
583
|
-
interface EmptyStateProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
768
|
+
interface EmptyStateProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title" | "description"> {
|
|
584
769
|
/** Illustration element (e.g. image, icon, or SVG). */
|
|
585
770
|
illustration?: React$1.ReactNode;
|
|
586
771
|
/** Where to place the illustration: above or below the text/CTAs. */
|
|
@@ -591,10 +776,10 @@ interface EmptyStateProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
591
776
|
illustrationWidth?: string | number;
|
|
592
777
|
/** Custom illustration height (e.g. "220px", 200). Overrides illustrationSize for height. */
|
|
593
778
|
illustrationHeight?: string | number;
|
|
594
|
-
/** Primary title
|
|
595
|
-
title: string;
|
|
596
|
-
/** Secondary description
|
|
597
|
-
description?: string;
|
|
779
|
+
/** Primary title. String uses default title styles; Typography or other ReactNode is rendered as-is. */
|
|
780
|
+
title: string | React$1.ReactNode;
|
|
781
|
+
/** Secondary description. String uses default description styles; Typography or other ReactNode is rendered as-is. */
|
|
782
|
+
description?: string | React$1.ReactNode;
|
|
598
783
|
/** Action element(s) displayed below the text. Single button or array of buttons. */
|
|
599
784
|
action?: React$1.ReactNode | React$1.ReactNode[];
|
|
600
785
|
}
|
|
@@ -639,6 +824,59 @@ interface ListProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
639
824
|
*/
|
|
640
825
|
declare const List: React$1.ForwardRefExoticComponent<ListProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
641
826
|
|
|
827
|
+
type SurfaceBackground = "white" | "grey";
|
|
828
|
+
interface SurfaceProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
829
|
+
/**
|
|
830
|
+
* Surface fill style.
|
|
831
|
+
* - white: `bg-token-white`
|
|
832
|
+
* - grey: `bg-token-light-grey`
|
|
833
|
+
* @default "white"
|
|
834
|
+
*/
|
|
835
|
+
background?: SurfaceBackground;
|
|
836
|
+
/**
|
|
837
|
+
* When true the surface reserves padding so that content can sit
|
|
838
|
+
* directly inside without a secondary wrapper. Disable when the
|
|
839
|
+
* children handle their own padding (for example when composing
|
|
840
|
+
* full-bleed headers or images).
|
|
841
|
+
* @default true
|
|
842
|
+
*/
|
|
843
|
+
padded?: boolean;
|
|
844
|
+
children?: React$1.ReactNode;
|
|
845
|
+
}
|
|
846
|
+
interface SurfaceHeaderProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
847
|
+
children?: React$1.ReactNode;
|
|
848
|
+
}
|
|
849
|
+
interface SurfaceBodyProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
850
|
+
children?: React$1.ReactNode;
|
|
851
|
+
}
|
|
852
|
+
interface SurfaceFooterProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
853
|
+
children?: React$1.ReactNode;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* Surface - neutral elevated surface used to group related content.
|
|
858
|
+
*
|
|
859
|
+
* Matches the Figma "Card - Surface" primitive:
|
|
860
|
+
* - 16px radius, 1.5px xlight border, xs drop shadow
|
|
861
|
+
* - white / light-grey background variants
|
|
862
|
+
* - overflow hidden so nested media clip to the radius
|
|
863
|
+
*
|
|
864
|
+
* Figma: 6100:42420 (surface), 6100:42423 (white bg), 6100:42428 (grey bg)
|
|
865
|
+
*/
|
|
866
|
+
declare const Surface: React$1.ForwardRefExoticComponent<SurfaceProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
867
|
+
/**
|
|
868
|
+
* Optional header slot — intended for a short title row.
|
|
869
|
+
*/
|
|
870
|
+
declare const SurfaceHeader: React$1.ForwardRefExoticComponent<SurfaceHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
871
|
+
/**
|
|
872
|
+
* Optional body slot — vertical content area with a default 8px gap.
|
|
873
|
+
*/
|
|
874
|
+
declare const SurfaceBody: React$1.ForwardRefExoticComponent<SurfaceBodyProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
875
|
+
/**
|
|
876
|
+
* Optional footer slot — right-aligned action row.
|
|
877
|
+
*/
|
|
878
|
+
declare const SurfaceFooter: React$1.ForwardRefExoticComponent<SurfaceFooterProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
879
|
+
|
|
642
880
|
/**
|
|
643
881
|
* Tooltip provider. Wrap your app (or a subtree) with this to enable tooltips.
|
|
644
882
|
* Based on shadcn/ui + Radix Tooltip.
|
|
@@ -666,14 +904,35 @@ type TooltipContentProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitiv
|
|
|
666
904
|
shortcut?: string;
|
|
667
905
|
};
|
|
668
906
|
|
|
669
|
-
|
|
907
|
+
/**
|
|
908
|
+
* Semantic text-style variants (mapped 1:1 from Figma text styles).
|
|
909
|
+
* Each has a predefined font-size, line-height, and font-weight.
|
|
910
|
+
*/
|
|
911
|
+
type TypographyVariant = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p1" | "p2" | "p3" | "b1" | "b2" | "subtext-xs" | "subtext-sm" | "input-xs" | "input-sm" | "label-sm" | "label-sm-mono" | "label-md" | "label-lg";
|
|
912
|
+
/** Utility text sizes (text-xs through text-6xl). Use with `weight` prop. */
|
|
913
|
+
type TypographySize = "xs" | "sm" | "base" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl";
|
|
914
|
+
/** Font weight options (maps to Figma weight tokens). */
|
|
915
|
+
type TypographyWeight = "thin" | "extra-light" | "light" | "regular" | "medium" | "semi-bold" | "bold" | "extra-bold" | "black";
|
|
670
916
|
type TypographyTone = "default" | "muted" | "inherit";
|
|
671
917
|
interface TypographyProps extends React$1.HTMLAttributes<HTMLElement> {
|
|
672
918
|
/**
|
|
673
|
-
*
|
|
919
|
+
* Semantic typography variant (maps to Figma text styles).
|
|
920
|
+
* Provides predefined size + weight combos.
|
|
921
|
+
* Cannot be used together with `size`.
|
|
674
922
|
* @default "p2"
|
|
675
923
|
*/
|
|
676
924
|
variant?: TypographyVariant;
|
|
925
|
+
/**
|
|
926
|
+
* Utility text size. Use together with `weight` for fine-grained control.
|
|
927
|
+
* Cannot be used together with `variant`.
|
|
928
|
+
*/
|
|
929
|
+
size?: TypographySize;
|
|
930
|
+
/**
|
|
931
|
+
* Font weight. Used with `size` for utility text styles.
|
|
932
|
+
* When used with `variant`, overrides the variant's default weight.
|
|
933
|
+
* @default "regular" (when using `size`)
|
|
934
|
+
*/
|
|
935
|
+
weight?: TypographyWeight;
|
|
677
936
|
/**
|
|
678
937
|
* Text color tone.
|
|
679
938
|
* @default "default"
|
|
@@ -694,6 +953,10 @@ interface TypographyProps extends React$1.HTMLAttributes<HTMLElement> {
|
|
|
694
953
|
/**
|
|
695
954
|
* Typography component
|
|
696
955
|
* Figma reference: 3732-2079 (Text aliases / use cases)
|
|
956
|
+
*
|
|
957
|
+
* Two usage modes:
|
|
958
|
+
* 1. Semantic: `<Typography variant="h1">` — uses predefined size+weight from Figma
|
|
959
|
+
* 2. Utility: `<Typography size="lg" weight="bold">` — fine-grained size × weight control
|
|
697
960
|
*/
|
|
698
961
|
declare const Typography: React$1.ForwardRefExoticComponent<TypographyProps & React$1.RefAttributes<HTMLElement>>;
|
|
699
962
|
|
|
@@ -1071,30 +1334,12 @@ declare const DEFAULT_THEME: {
|
|
|
1071
1334
|
};
|
|
1072
1335
|
readonly uIColors: {
|
|
1073
1336
|
readonly lightMode: {
|
|
1074
|
-
readonly background: "#f5f5f5";
|
|
1075
|
-
readonly foreground: "#0a0a0a";
|
|
1076
|
-
readonly border: "#e5e5e5";
|
|
1077
|
-
readonly destructive: "#ef4444";
|
|
1078
|
-
readonly secondary: "#e5e5e5";
|
|
1079
|
-
readonly mutedForeground: "#737373";
|
|
1080
|
-
readonly muted: "#f5f5f5";
|
|
1081
1337
|
readonly backgroundColor: "#0000004d";
|
|
1082
|
-
readonly primary: "#1d4885";
|
|
1083
|
-
readonly secondaryForeground: "#0a0a0a";
|
|
1084
|
-
readonly accentForeground: "#171717";
|
|
1085
|
-
readonly accent: "#f5f5f5";
|
|
1086
|
-
readonly ring: "#0090ff";
|
|
1087
1338
|
readonly chart3: "#0588f0";
|
|
1088
1339
|
readonly chart2: "#0090ff";
|
|
1089
1340
|
readonly chart4: "#0d74ce";
|
|
1090
1341
|
readonly chart1: "#5eb1ef";
|
|
1091
1342
|
readonly chart5: "#113264";
|
|
1092
|
-
readonly card: "#ffffff";
|
|
1093
|
-
readonly cardForeground: "#0a0a0a";
|
|
1094
|
-
readonly popover: "#ffffff";
|
|
1095
|
-
readonly popoverForeground: "#0a0a0a";
|
|
1096
|
-
readonly primaryForeground: "#fafafa";
|
|
1097
|
-
readonly input: "#f5f5f5";
|
|
1098
1343
|
readonly sidebar: "#fafafa";
|
|
1099
1344
|
readonly sidebarForeground: "#0a0a0a";
|
|
1100
1345
|
readonly sidebarPrimary: "#171717";
|
|
@@ -1106,17 +1351,64 @@ declare const DEFAULT_THEME: {
|
|
|
1106
1351
|
readonly semanticBackground: "#696867";
|
|
1107
1352
|
readonly semanticBorder: "#898887";
|
|
1108
1353
|
readonly semanticForeground: "#ffffff";
|
|
1109
|
-
readonly disabled: "#d4d4d4";
|
|
1110
1354
|
readonly primary10: "#1d488519";
|
|
1111
1355
|
readonly datePickerCircle: "#3d6aa8";
|
|
1112
|
-
readonly success: "#10b981";
|
|
1113
|
-
readonly warning: "#fef3c7";
|
|
1114
|
-
readonly warningForeground: "#78350f";
|
|
1115
|
-
readonly switchTrack: "#e5e5e5";
|
|
1116
|
-
readonly hover: "#0a0a0a1a";
|
|
1117
1356
|
readonly filterInput: "#fff";
|
|
1118
1357
|
readonly primarySelected: "#fff";
|
|
1119
|
-
readonly
|
|
1358
|
+
readonly bgWhite: "#ffffff";
|
|
1359
|
+
readonly bgLightGrey: "#fafafa";
|
|
1360
|
+
readonly bgGrey: "#f5f5f5";
|
|
1361
|
+
readonly bgDarkGrey: "#e5e5e5";
|
|
1362
|
+
readonly bgDark: "#0a0a0a";
|
|
1363
|
+
readonly bgBrandPrimary: "#1d4885";
|
|
1364
|
+
readonly bgBrandSecondary: "#eff8ff";
|
|
1365
|
+
readonly bgDestructivePrimary: "#b91c1c";
|
|
1366
|
+
readonly bgDestructiveSecondary: "#fef2f2";
|
|
1367
|
+
readonly bgWarningPrimary: "#92400e";
|
|
1368
|
+
readonly bgWarningSecondary: "#fef3c7";
|
|
1369
|
+
readonly bgSuccessPrimary: "#047857";
|
|
1370
|
+
readonly bgSuccessSecondary: "#ecfdf5";
|
|
1371
|
+
readonly bgBluePrimary: "#0369a1";
|
|
1372
|
+
readonly bgBlueSecondary: "#f0f9ff";
|
|
1373
|
+
readonly borderXlight: "#f5f5f5";
|
|
1374
|
+
readonly borderLight: "#e5e5e5";
|
|
1375
|
+
readonly borderBrand: "#1d4885";
|
|
1376
|
+
readonly borderDestructive: "#b91c1c";
|
|
1377
|
+
readonly borderInput: "#e5e5e5";
|
|
1378
|
+
readonly hovOpacityPrimary: "#0a0a0a0d";
|
|
1379
|
+
readonly hovOpacitySecondary: "#0a0a0a0d";
|
|
1380
|
+
readonly hovSolidPrimary: "#fafafa";
|
|
1381
|
+
readonly hovSolidSecondary: "#f5f5f5";
|
|
1382
|
+
readonly pressedOpacityPrimary: "#0a0a0a1a";
|
|
1383
|
+
readonly pressedOpacitySecondary: "#0a0a0a1a";
|
|
1384
|
+
readonly pressedSolid: "#e5e5e5";
|
|
1385
|
+
readonly inFocusOpacity: "#0a0a0a26";
|
|
1386
|
+
readonly inFocusSolid: "#f5f5f5";
|
|
1387
|
+
readonly interactionSelected: "#eff8ff";
|
|
1388
|
+
readonly iconWhite: "#fafafa";
|
|
1389
|
+
readonly iconBlack: "#0a0a0a";
|
|
1390
|
+
readonly iconDisable: "#a3a3a3";
|
|
1391
|
+
readonly iconPlaceholder: "#a3a3a3";
|
|
1392
|
+
readonly iconGreyPrimary: "#a3a3a3";
|
|
1393
|
+
readonly iconGreySecondary: "#737373";
|
|
1394
|
+
readonly iconGreyTertiary: "#525252";
|
|
1395
|
+
readonly iconDestructive: "#b91c1c";
|
|
1396
|
+
readonly iconLink: "#1d4885";
|
|
1397
|
+
readonly iconSuccess: "#047857";
|
|
1398
|
+
readonly iconWarning: "#92400e";
|
|
1399
|
+
readonly iconBlue: "#0369a1";
|
|
1400
|
+
readonly textWhite: "#fafafa";
|
|
1401
|
+
readonly textBlack: "#0a0a0a";
|
|
1402
|
+
readonly textDisable: "#a3a3a3";
|
|
1403
|
+
readonly textPlaceholder: "#a3a3a3";
|
|
1404
|
+
readonly textGreyPrimary: "#a3a3a3";
|
|
1405
|
+
readonly textGreySecondary: "#737373";
|
|
1406
|
+
readonly textGreyTertiary: "#525252";
|
|
1407
|
+
readonly textDestructive: "#b91c1c";
|
|
1408
|
+
readonly textBrand: "#1d4885";
|
|
1409
|
+
readonly textSuccess: "#047857";
|
|
1410
|
+
readonly textWarning: "#92400e";
|
|
1411
|
+
readonly textBlue: "#0369a1";
|
|
1120
1412
|
readonly badgeDefaultBg: "#f0f9ff";
|
|
1121
1413
|
readonly badgeDefaultFg: "#0369a1";
|
|
1122
1414
|
readonly badgeSuccessBg: "#ecfdf5";
|
|
@@ -1129,30 +1421,12 @@ declare const DEFAULT_THEME: {
|
|
|
1129
1421
|
readonly badgeDestructiveFg: "#b91c1c";
|
|
1130
1422
|
};
|
|
1131
1423
|
readonly darkMode: {
|
|
1132
|
-
readonly background: "#1e1e1e";
|
|
1133
|
-
readonly foreground: "#fafafa";
|
|
1134
|
-
readonly border: "#404040";
|
|
1135
|
-
readonly destructive: "#f87171";
|
|
1136
|
-
readonly secondary: "#262626";
|
|
1137
|
-
readonly mutedForeground: "#a3a3a3";
|
|
1138
|
-
readonly muted: "#262626";
|
|
1139
1424
|
readonly backgroundColor: "#0000004d";
|
|
1140
|
-
readonly primary: "#b5d5fd";
|
|
1141
|
-
readonly secondaryForeground: "#fafafa";
|
|
1142
|
-
readonly accentForeground: "#fafafa";
|
|
1143
|
-
readonly accent: "#262626";
|
|
1144
|
-
readonly ring: "#acd8fc";
|
|
1145
1425
|
readonly chart3: "#0588f0";
|
|
1146
1426
|
readonly chart2: "#0090ff";
|
|
1147
1427
|
readonly chart4: "#0d74ce";
|
|
1148
1428
|
readonly chart1: "#5eb1ef";
|
|
1149
1429
|
readonly chart5: "#113264";
|
|
1150
|
-
readonly card: "#262626";
|
|
1151
|
-
readonly cardForeground: "#fafafa";
|
|
1152
|
-
readonly popover: "#262626";
|
|
1153
|
-
readonly popoverForeground: "#fafafa";
|
|
1154
|
-
readonly primaryForeground: "#171717";
|
|
1155
|
-
readonly input: "#2e3034";
|
|
1156
1430
|
readonly sidebar: "#171717";
|
|
1157
1431
|
readonly sidebarForeground: "#fafafa";
|
|
1158
1432
|
readonly sidebarPrimary: "#0588f0";
|
|
@@ -1164,13 +1438,63 @@ declare const DEFAULT_THEME: {
|
|
|
1164
1438
|
readonly semanticBackground: "#272625";
|
|
1165
1439
|
readonly semanticBorder: "#535151";
|
|
1166
1440
|
readonly semanticForeground: "#ffffff";
|
|
1167
|
-
readonly disabled: "#404040";
|
|
1168
1441
|
readonly primary10: "#e6f1ff1a";
|
|
1169
1442
|
readonly datePickerCircle: "#7aa5e8";
|
|
1170
|
-
readonly success: "#a7f3d0";
|
|
1171
|
-
readonly warning: "#fde68a";
|
|
1172
|
-
readonly warningForeground: "#78350f";
|
|
1173
1443
|
readonly filterInput: "#171717";
|
|
1444
|
+
readonly bgWhite: "#0a0a0a";
|
|
1445
|
+
readonly bgLightGrey: "#171717";
|
|
1446
|
+
readonly bgGrey: "#262626";
|
|
1447
|
+
readonly bgDarkGrey: "#262626";
|
|
1448
|
+
readonly bgDark: "#ffffff";
|
|
1449
|
+
readonly bgBrandPrimary: "#bfdbfe";
|
|
1450
|
+
readonly bgBrandSecondary: "#262626";
|
|
1451
|
+
readonly bgDestructivePrimary: "#f87171";
|
|
1452
|
+
readonly bgDestructiveSecondary: "#0a0a0a";
|
|
1453
|
+
readonly bgWarningPrimary: "#fbbf24";
|
|
1454
|
+
readonly bgWarningSecondary: "#0a0a0a";
|
|
1455
|
+
readonly bgSuccessPrimary: "#a7f3d0";
|
|
1456
|
+
readonly bgSuccessSecondary: "#0a0a0a";
|
|
1457
|
+
readonly bgBluePrimary: "#7dd3fc";
|
|
1458
|
+
readonly bgBlueSecondary: "#0a0a0a";
|
|
1459
|
+
readonly borderXlight: "#262626";
|
|
1460
|
+
readonly borderLight: "#404040";
|
|
1461
|
+
readonly borderBrand: "#bfdbfe";
|
|
1462
|
+
readonly borderDestructive: "#f87171";
|
|
1463
|
+
readonly borderInput: "#262626";
|
|
1464
|
+
readonly hovOpacityPrimary: "#ffffff0d";
|
|
1465
|
+
readonly hovOpacitySecondary: "#ffffff1a";
|
|
1466
|
+
readonly hovSolidPrimary: "#262626";
|
|
1467
|
+
readonly hovSolidSecondary: "#262626";
|
|
1468
|
+
readonly pressedOpacityPrimary: "#ffffff26";
|
|
1469
|
+
readonly pressedOpacitySecondary: "#ffffff26";
|
|
1470
|
+
readonly pressedSolid: "#171717";
|
|
1471
|
+
readonly inFocusOpacity: "#ffffff40";
|
|
1472
|
+
readonly inFocusSolid: "#262626";
|
|
1473
|
+
readonly interactionSelected: "#262626";
|
|
1474
|
+
readonly iconWhite: "#171717";
|
|
1475
|
+
readonly iconBlack: "#d4d4d4";
|
|
1476
|
+
readonly iconDisable: "#525252";
|
|
1477
|
+
readonly iconPlaceholder: "#a3a3a3";
|
|
1478
|
+
readonly iconGreyPrimary: "#737373";
|
|
1479
|
+
readonly iconGreySecondary: "#a3a3a3";
|
|
1480
|
+
readonly iconGreyTertiary: "#d4d4d4";
|
|
1481
|
+
readonly iconDestructive: "#f87171";
|
|
1482
|
+
readonly iconLink: "#bfdbfe";
|
|
1483
|
+
readonly iconSuccess: "#a7f3d0";
|
|
1484
|
+
readonly iconWarning: "#fbbf24";
|
|
1485
|
+
readonly iconBlue: "#7dd3fc";
|
|
1486
|
+
readonly textWhite: "#0a0a0a";
|
|
1487
|
+
readonly textBlack: "#d4d4d4";
|
|
1488
|
+
readonly textDisable: "#525252";
|
|
1489
|
+
readonly textPlaceholder: "#a3a3a3";
|
|
1490
|
+
readonly textGreyPrimary: "#737373";
|
|
1491
|
+
readonly textGreySecondary: "#a3a3a3";
|
|
1492
|
+
readonly textGreyTertiary: "#d4d4d4";
|
|
1493
|
+
readonly textDestructive: "#f87171";
|
|
1494
|
+
readonly textBrand: "#bfdbfe";
|
|
1495
|
+
readonly textSuccess: "#a7f3d0";
|
|
1496
|
+
readonly textWarning: "#fbbf24";
|
|
1497
|
+
readonly textBlue: "#7dd3fc";
|
|
1174
1498
|
readonly badgeDefaultBg: "#0c4a6e";
|
|
1175
1499
|
readonly badgeDefaultFg: "#7dd3fc";
|
|
1176
1500
|
readonly badgeSuccessBg: "#064e3b";
|
|
@@ -1181,19 +1505,16 @@ declare const DEFAULT_THEME: {
|
|
|
1181
1505
|
readonly badgeNeutralFg: "#d4d4d4";
|
|
1182
1506
|
readonly badgeDestructiveBg: "#7f1d1d";
|
|
1183
1507
|
readonly badgeDestructiveFg: "#fecaca";
|
|
1184
|
-
readonly switchTrack: "#ffffff";
|
|
1185
|
-
readonly hover: "#ffffff1a";
|
|
1186
1508
|
readonly primarySelected: "#1A273A";
|
|
1187
|
-
readonly hoverSolid: "#171717";
|
|
1188
1509
|
};
|
|
1189
1510
|
};
|
|
1190
1511
|
readonly components: {
|
|
1191
1512
|
readonly mode1: {
|
|
1192
|
-
readonly inputRadius:
|
|
1193
|
-
readonly inputHeight:
|
|
1513
|
+
readonly inputRadius: 12;
|
|
1514
|
+
readonly inputHeight: 40;
|
|
1194
1515
|
readonly inputHeightLarge: 56;
|
|
1195
|
-
readonly inputPaddingHorizontal:
|
|
1196
|
-
readonly inputPaddingVertical:
|
|
1516
|
+
readonly inputPaddingHorizontal: 12;
|
|
1517
|
+
readonly inputPaddingVertical: 10;
|
|
1197
1518
|
readonly buttonHeight: 40;
|
|
1198
1519
|
readonly buttonRadius: 24;
|
|
1199
1520
|
readonly inputActiveBg: "#2e3034";
|
|
@@ -1340,11 +1661,8 @@ interface ShowToastOptions extends Omit<ToastProps, "onCancel"> {
|
|
|
1340
1661
|
|
|
1341
1662
|
/**
|
|
1342
1663
|
* Place `<Toaster />` once near the root of your app (inside `LegoLandWrapper`).
|
|
1343
|
-
* It is a thin wrapper around Sonner's Toaster with sensible defaults for this
|
|
1344
|
-
* design system.
|
|
1345
1664
|
*
|
|
1346
1665
|
* @example
|
|
1347
|
-
* // In your app root:
|
|
1348
1666
|
* <LegoLandWrapper>
|
|
1349
1667
|
* <Toaster />
|
|
1350
1668
|
* <App />
|
|
@@ -1404,6 +1722,19 @@ interface StepperBarProps {
|
|
|
1404
1722
|
className?: string;
|
|
1405
1723
|
style?: React$1.CSSProperties;
|
|
1406
1724
|
}
|
|
1725
|
+
interface ProgressBarProps {
|
|
1726
|
+
/**
|
|
1727
|
+
* Progress value from 0 to 100.
|
|
1728
|
+
*/
|
|
1729
|
+
value: number;
|
|
1730
|
+
/**
|
|
1731
|
+
* Maximum value.
|
|
1732
|
+
* @default 100
|
|
1733
|
+
*/
|
|
1734
|
+
max?: number;
|
|
1735
|
+
className?: string;
|
|
1736
|
+
style?: React$1.CSSProperties;
|
|
1737
|
+
}
|
|
1407
1738
|
|
|
1408
1739
|
/**
|
|
1409
1740
|
* StepperBar — Segmented progress bar indicating how many steps are complete.
|
|
@@ -1416,6 +1747,126 @@ declare const StepperBar: React$1.ForwardRefExoticComponent<StepperBarProps & Re
|
|
|
1416
1747
|
* Based on Figma design node: 3729:2600
|
|
1417
1748
|
*/
|
|
1418
1749
|
declare const Stepper: React$1.ForwardRefExoticComponent<StepperProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1750
|
+
/**
|
|
1751
|
+
* ProgressBar — Continuous progress bar with fill percentage.
|
|
1752
|
+
* Based on Figma design node: 3357:4677
|
|
1753
|
+
*/
|
|
1754
|
+
declare const ProgressBar: React$1.ForwardRefExoticComponent<ProgressBarProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1755
|
+
|
|
1756
|
+
/**
|
|
1757
|
+
* Icon component tokens.
|
|
1758
|
+
* Maps semantic color names to the icon CSS variable tokens.
|
|
1759
|
+
* These automatically adapt to light/dark mode.
|
|
1760
|
+
*/
|
|
1761
|
+
declare const ICON_TOKENS: {
|
|
1762
|
+
readonly color: {
|
|
1763
|
+
readonly default: "text-icon-black";
|
|
1764
|
+
readonly white: "text-icon-white";
|
|
1765
|
+
readonly black: "text-icon-black";
|
|
1766
|
+
readonly disable: "text-icon-disable";
|
|
1767
|
+
readonly placeholder: "text-icon-placeholder";
|
|
1768
|
+
readonly "grey-primary": "text-icon-grey-primary";
|
|
1769
|
+
readonly "grey-secondary": "text-icon-grey-secondary";
|
|
1770
|
+
readonly "grey-tertiary": "text-icon-grey-tertiary";
|
|
1771
|
+
readonly destructive: "text-icon-destructive";
|
|
1772
|
+
readonly link: "text-icon-link";
|
|
1773
|
+
readonly success: "text-icon-success";
|
|
1774
|
+
readonly warning: "text-icon-warning";
|
|
1775
|
+
readonly blue: "text-icon-blue";
|
|
1776
|
+
};
|
|
1777
|
+
readonly size: {
|
|
1778
|
+
readonly xs: "size-3";
|
|
1779
|
+
readonly sm: "size-4";
|
|
1780
|
+
readonly md: "size-5";
|
|
1781
|
+
readonly lg: "size-6";
|
|
1782
|
+
readonly xl: "size-8";
|
|
1783
|
+
};
|
|
1784
|
+
readonly picker: {
|
|
1785
|
+
readonly trigger: "inline-flex items-center justify-center border border-token-light rounded-xl p-2 cursor-pointer hover:bg-token-dark/5 transition-colors";
|
|
1786
|
+
readonly dropdown: "bg-token-white rounded-xl p-3 shadow-sm border border-token-xlight w-[320px] max-h-[400px] flex flex-col gap-2";
|
|
1787
|
+
readonly search: "bg-token-light-grey rounded-xl px-3 py-2 text-xs text-fg-black placeholder:text-fg-placeholder outline-none border border-token-xlight focus:border-token-brand w-full";
|
|
1788
|
+
readonly grid: "grid grid-cols-8 gap-1 overflow-y-auto max-h-[280px] p-1";
|
|
1789
|
+
readonly gridItem: "flex items-center justify-center p-2 rounded-xl cursor-pointer hover:bg-interaction-hov-solid-primary transition-colors";
|
|
1790
|
+
readonly gridItemSelected: "bg-token-brand-secondary";
|
|
1791
|
+
readonly emptyText: "text-xs text-fg-grey-secondary text-center py-4";
|
|
1792
|
+
};
|
|
1793
|
+
};
|
|
1794
|
+
type IconColor = keyof typeof ICON_TOKENS.color;
|
|
1795
|
+
type IconSize = keyof typeof ICON_TOKENS.size;
|
|
1796
|
+
|
|
1797
|
+
interface IconWrapperProps {
|
|
1798
|
+
/**
|
|
1799
|
+
* Semantic icon color. Automatically adapts to light/dark mode.
|
|
1800
|
+
* @default "default" (icon-black in light, icon-d4d4d4 in dark)
|
|
1801
|
+
*/
|
|
1802
|
+
color?: IconColor;
|
|
1803
|
+
/**
|
|
1804
|
+
* Icon size preset.
|
|
1805
|
+
* @default "sm" (16px)
|
|
1806
|
+
*/
|
|
1807
|
+
size?: IconSize;
|
|
1808
|
+
/**
|
|
1809
|
+
* The icon to render. Can be a Lucide icon element or any ReactNode.
|
|
1810
|
+
*/
|
|
1811
|
+
children: React$1.ReactNode;
|
|
1812
|
+
className?: string;
|
|
1813
|
+
style?: React$1.CSSProperties;
|
|
1814
|
+
}
|
|
1815
|
+
interface IconPickerProps {
|
|
1816
|
+
/**
|
|
1817
|
+
* Currently selected icon name (e.g. "Home", "Search").
|
|
1818
|
+
*/
|
|
1819
|
+
value?: string | null;
|
|
1820
|
+
/**
|
|
1821
|
+
* Callback when an icon is selected.
|
|
1822
|
+
*/
|
|
1823
|
+
onValueChange?: (iconName: string) => void;
|
|
1824
|
+
/**
|
|
1825
|
+
* Subset of Lucide icon names to show. If not provided, shows all common icons.
|
|
1826
|
+
*/
|
|
1827
|
+
icons?: string[];
|
|
1828
|
+
/**
|
|
1829
|
+
* Icon color for the trigger and grid.
|
|
1830
|
+
* @default "default"
|
|
1831
|
+
*/
|
|
1832
|
+
color?: IconColor;
|
|
1833
|
+
/**
|
|
1834
|
+
* Icon size in the trigger.
|
|
1835
|
+
* @default "md"
|
|
1836
|
+
*/
|
|
1837
|
+
size?: IconSize;
|
|
1838
|
+
/**
|
|
1839
|
+
* Placeholder text when no icon is selected.
|
|
1840
|
+
* @default "Pick icon"
|
|
1841
|
+
*/
|
|
1842
|
+
placeholder?: string;
|
|
1843
|
+
className?: string;
|
|
1844
|
+
style?: React$1.CSSProperties;
|
|
1845
|
+
}
|
|
1846
|
+
|
|
1847
|
+
/**
|
|
1848
|
+
* IconWrapper — Wraps any icon (Lucide or custom SVG) with theme-aware colors.
|
|
1849
|
+
*
|
|
1850
|
+
* Automatically adapts icon color to light/dark mode using the icon/* CSS variable tokens.
|
|
1851
|
+
* Solves the problem of icons breaking when switching themes.
|
|
1852
|
+
*
|
|
1853
|
+
* Usage:
|
|
1854
|
+
* ```tsx
|
|
1855
|
+
* <IconWrapper color="destructive" size="lg">
|
|
1856
|
+
* <Trash2 />
|
|
1857
|
+
* </IconWrapper>
|
|
1858
|
+
* ```
|
|
1859
|
+
*/
|
|
1860
|
+
declare const IconWrapper: React$1.ForwardRefExoticComponent<IconWrapperProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
1861
|
+
/**
|
|
1862
|
+
* IconPicker — A dropdown grid of Lucide icons for the user to pick from.
|
|
1863
|
+
*
|
|
1864
|
+
* Usage:
|
|
1865
|
+
* ```tsx
|
|
1866
|
+
* <IconPicker value={icon} onValueChange={setIcon} />
|
|
1867
|
+
* ```
|
|
1868
|
+
*/
|
|
1869
|
+
declare const IconPicker: React$1.ForwardRefExoticComponent<IconPickerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1419
1870
|
|
|
1420
1871
|
interface ShadowDOMWrapperProps {
|
|
1421
1872
|
children: React$1.ReactNode;
|
|
@@ -1569,17 +2020,38 @@ interface DataTableProps<TRow> {
|
|
|
1569
2020
|
* sort_direction on the sorted column (or clear it when sort is null).
|
|
1570
2021
|
*/
|
|
1571
2022
|
onSortChange?: (sort: SortState | null) => void;
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
2023
|
+
/**
|
|
2024
|
+
* When false, hides the pagination footer. Defaults to true.
|
|
2025
|
+
*/
|
|
2026
|
+
showPagination?: boolean;
|
|
2027
|
+
currentPage?: number;
|
|
2028
|
+
rowsPerPage?: number;
|
|
2029
|
+
total?: number;
|
|
2030
|
+
onPageChange?: (page: number) => void;
|
|
2031
|
+
onRowsPerPageChange?: (rowsPerPage: number) => void;
|
|
1577
2032
|
entityName?: string;
|
|
2033
|
+
/**
|
|
2034
|
+
* When false, hides the outer border. Defaults to true.
|
|
2035
|
+
*/
|
|
2036
|
+
showBorder?: boolean;
|
|
2037
|
+
/**
|
|
2038
|
+
* When true, the header row stays fixed at the top while the table body scrolls.
|
|
2039
|
+
*/
|
|
2040
|
+
stickyHeader?: boolean;
|
|
2041
|
+
/**
|
|
2042
|
+
* Optional React node to render in the header's top-right corner.
|
|
2043
|
+
* Useful for header-level actions like column filters or settings.
|
|
2044
|
+
*/
|
|
2045
|
+
headerAction?: React$1.ReactNode;
|
|
1578
2046
|
className?: string;
|
|
1579
2047
|
/**
|
|
1580
2048
|
* When true, shows skeleton loading state with 10 rows.
|
|
1581
2049
|
*/
|
|
1582
2050
|
loading?: boolean;
|
|
2051
|
+
/**
|
|
2052
|
+
* Called when a data row is clicked. Receives the row data.
|
|
2053
|
+
*/
|
|
2054
|
+
onRowClick?: (row: TRow) => void;
|
|
1583
2055
|
}
|
|
1584
2056
|
|
|
1585
2057
|
/**
|
|
@@ -1604,7 +2076,7 @@ declare namespace Pagination {
|
|
|
1604
2076
|
*
|
|
1605
2077
|
* Figma reference node: 3338:6396
|
|
1606
2078
|
*/
|
|
1607
|
-
declare function DataTable<TRow>({ columns, data, pinnedColumns, showCheckbox, actions, getRowId, selectedRows, onSelectionChange, onSortChange, currentPage, rowsPerPage, total, onPageChange, onRowsPerPageChange, entityName, className, loading, }: DataTableProps<TRow>): react_jsx_runtime.JSX.Element;
|
|
2079
|
+
declare function DataTable<TRow>({ columns, data, pinnedColumns, showCheckbox, actions, getRowId, selectedRows, onSelectionChange, onSortChange, showPagination, currentPage, rowsPerPage, total, onPageChange, onRowsPerPageChange, entityName, showBorder, stickyHeader, headerAction, className, loading, onRowClick, }: DataTableProps<TRow>): react_jsx_runtime.JSX.Element;
|
|
1608
2080
|
declare namespace DataTable {
|
|
1609
2081
|
var displayName: string;
|
|
1610
2082
|
}
|
|
@@ -1615,7 +2087,34 @@ declare namespace DataTable {
|
|
|
1615
2087
|
interface FilterItem<T = string> {
|
|
1616
2088
|
value: T;
|
|
1617
2089
|
label: string;
|
|
2090
|
+
/** Optional secondary line shown under the label (two-line option support) */
|
|
2091
|
+
subtext?: string;
|
|
2092
|
+
/** Optional icon for this item (per-item icon support) */
|
|
2093
|
+
icon?: LucideIcon | React$1.ReactNode;
|
|
2094
|
+
/** Show loading state for this item (per-item loading) */
|
|
2095
|
+
loading?: boolean;
|
|
2096
|
+
/** Optional custom display node to render instead of plain label */
|
|
2097
|
+
labelNode?: React$1.ReactNode;
|
|
1618
2098
|
}
|
|
2099
|
+
/**
|
|
2100
|
+
* Filter item with section grouping
|
|
2101
|
+
*/
|
|
2102
|
+
interface FilterItemWithSection<T = string> {
|
|
2103
|
+
sectionLabel: string;
|
|
2104
|
+
items: FilterItem<T>[];
|
|
2105
|
+
}
|
|
2106
|
+
/**
|
|
2107
|
+
* Filter types.
|
|
2108
|
+
* - "list" : multi-select list (with optional search, sections, drag)
|
|
2109
|
+
* - "text" : textarea
|
|
2110
|
+
* - "text_with_operands" : operand dropdown + textarea
|
|
2111
|
+
* - "numeric" : single numeric input
|
|
2112
|
+
* - "numeric_with_operands" : operand dropdown + numeric input (+ optional range mode for "is between")
|
|
2113
|
+
* - "in_between" : two numeric inputs (min / max) — no operand dropdown
|
|
2114
|
+
* - "duration" : numeric input + unit dropdown (sec / min / hours)
|
|
2115
|
+
* - "date" : date range picker with optional presets
|
|
2116
|
+
*/
|
|
2117
|
+
type FilterSelectType = "list" | "text" | "text_with_operands" | "numeric" | "numeric_with_operands" | "in_between" | "duration" | "date";
|
|
1619
2118
|
/**
|
|
1620
2119
|
* Props for FilterSelect component
|
|
1621
2120
|
*/
|
|
@@ -1626,15 +2125,17 @@ interface FilterSelectProps<T = string> extends Omit<React$1.HTMLAttributes<HTML
|
|
|
1626
2125
|
icon?: LucideIcon;
|
|
1627
2126
|
/** Array of selected item values */
|
|
1628
2127
|
selectedItems?: T[];
|
|
1629
|
-
/** Available items for selection */
|
|
1630
|
-
items: FilterItem<T>[];
|
|
2128
|
+
/** Available items for selection (flat or sectioned) */
|
|
2129
|
+
items: (FilterItem<T> | FilterItemWithSection<T>)[];
|
|
1631
2130
|
/** Enable drag-and-drop reordering (default: false) */
|
|
1632
2131
|
draggable?: boolean;
|
|
2132
|
+
/** To show clear button regardless of selected items or text / date content (default: true) */
|
|
2133
|
+
showClearBtn?: boolean;
|
|
1633
2134
|
/** Callback when selection changes */
|
|
1634
2135
|
onSelectionChange?: (values: T[]) => void;
|
|
1635
2136
|
/** Callback when order changes (draggable mode) */
|
|
1636
2137
|
onOrderChange?: (values: T[]) => void;
|
|
1637
|
-
/** Max width for selected items display
|
|
2138
|
+
/** Max width for selected items display */
|
|
1638
2139
|
selectedItemsMaxWidth?: string;
|
|
1639
2140
|
/** Override classes for selected items display area */
|
|
1640
2141
|
selectedItemsClassName?: string;
|
|
@@ -1644,48 +2145,84 @@ interface FilterSelectProps<T = string> extends Omit<React$1.HTMLAttributes<HTML
|
|
|
1644
2145
|
open?: boolean;
|
|
1645
2146
|
/** Callback when open state changes */
|
|
1646
2147
|
onOpenChange?: (open: boolean) => void;
|
|
1647
|
-
/** Max height for dropdown content
|
|
2148
|
+
/** Max height for dropdown content */
|
|
1648
2149
|
dropdownMaxHeight?: string;
|
|
1649
2150
|
/** Show loading spinner in dropdown */
|
|
1650
2151
|
loading?: boolean;
|
|
1651
2152
|
onRemoveAll?: () => void;
|
|
1652
|
-
/** Type of filter select
|
|
1653
|
-
type?:
|
|
1654
|
-
/** Controlled text value
|
|
2153
|
+
/** Type of filter select */
|
|
2154
|
+
type?: FilterSelectType;
|
|
2155
|
+
/** Controlled text value */
|
|
1655
2156
|
text?: string;
|
|
1656
|
-
/** Callback when text changes
|
|
2157
|
+
/** Callback when text changes */
|
|
1657
2158
|
onTextChange?: (text: string) => void;
|
|
1658
|
-
/** Selected operand value
|
|
2159
|
+
/** Selected operand value */
|
|
1659
2160
|
operand?: string;
|
|
1660
|
-
/** Callback when operand changes
|
|
2161
|
+
/** Callback when operand changes */
|
|
1661
2162
|
onOperandChange?: (operand: string) => void;
|
|
1662
|
-
/** Available operands
|
|
2163
|
+
/** Available operands with label and value */
|
|
1663
2164
|
operands?: {
|
|
1664
2165
|
value: string;
|
|
1665
2166
|
label: string;
|
|
1666
2167
|
}[];
|
|
1667
|
-
/** Placeholder text for textarea/input
|
|
2168
|
+
/** Placeholder text for textarea/input */
|
|
1668
2169
|
textPlaceholder?: string;
|
|
1669
|
-
/** Placeholder for operand select (
|
|
2170
|
+
/** Placeholder for operand select (default: "") */
|
|
1670
2171
|
operandPlaceholder?: string;
|
|
1671
|
-
/**
|
|
2172
|
+
/** Unit label suffix shown inside numeric input (e.g. "sec", "min") */
|
|
2173
|
+
unitLabel?: string;
|
|
2174
|
+
/** Enable range mode for "numeric_with_operands" - shows min/max inputs */
|
|
2175
|
+
isRangeMode?: boolean;
|
|
2176
|
+
/** Range min value */
|
|
2177
|
+
rangeMin?: string;
|
|
2178
|
+
/** Range max value */
|
|
2179
|
+
rangeMax?: string;
|
|
2180
|
+
/** Callback when range min changes */
|
|
2181
|
+
onRangeMinChange?: (value: string) => void;
|
|
2182
|
+
/** Callback when range max changes */
|
|
2183
|
+
onRangeMaxChange?: (value: string) => void;
|
|
2184
|
+
/**
|
|
2185
|
+
* Duration filter options — when type="duration" this defines the unit dropdown choices.
|
|
2186
|
+
* Defaults to [{ value: "sec", label: "sec" }, { value: "min", label: "min" }, { value: "hours", label: "hours" }].
|
|
2187
|
+
*/
|
|
2188
|
+
durationUnits?: {
|
|
2189
|
+
value: string;
|
|
2190
|
+
label: string;
|
|
2191
|
+
}[];
|
|
2192
|
+
/** Currently selected duration unit value */
|
|
2193
|
+
durationUnit?: string;
|
|
2194
|
+
/** Callback when duration unit changes */
|
|
2195
|
+
onDurationUnitChange?: (unit: string) => void;
|
|
2196
|
+
/** Show search input to filter list items */
|
|
2197
|
+
showSearch?: boolean;
|
|
2198
|
+
/** Search placeholder text (default: "Search...") */
|
|
2199
|
+
searchPlaceholder?: string;
|
|
2200
|
+
/** Date range value (for "date" type) */
|
|
1672
2201
|
date?: {
|
|
1673
2202
|
start?: Date;
|
|
1674
2203
|
end?: Date;
|
|
1675
2204
|
};
|
|
1676
|
-
/** Callback when date range changes
|
|
2205
|
+
/** Callback when date range changes */
|
|
1677
2206
|
onDateChange?: (date: {
|
|
1678
2207
|
start?: Date;
|
|
1679
2208
|
end?: Date;
|
|
1680
2209
|
}) => void;
|
|
1681
|
-
/** Date presets to show (default: true
|
|
2210
|
+
/** Date presets to show (default: true) */
|
|
1682
2211
|
datePresets?: boolean | DatePreset[];
|
|
1683
2212
|
/** Show time picker in date filter (default: true) */
|
|
1684
2213
|
showTime?: boolean;
|
|
2214
|
+
/** Empty state label when no items available */
|
|
2215
|
+
emptyStateLabel?: string;
|
|
1685
2216
|
/** Additional className for the trigger button */
|
|
1686
2217
|
triggerClassName?: string;
|
|
1687
2218
|
/** Additional className for the dropdown content */
|
|
1688
2219
|
dropdownClassName?: string;
|
|
2220
|
+
/**
|
|
2221
|
+
* Override className for the `label` span inside the trigger. Useful when embedding
|
|
2222
|
+
* FilterSelect as the right pill of `<CompoundFilterSelect>`, where the Figma spec
|
|
2223
|
+
* paints the label in `text-fg-brand` (Subtext/xs) — see Figma 5427:32334.
|
|
2224
|
+
*/
|
|
2225
|
+
labelClassName?: string;
|
|
1689
2226
|
}
|
|
1690
2227
|
/** Date preset: label and function to compute the range */
|
|
1691
2228
|
interface DatePreset {
|
|
@@ -1704,12 +2241,20 @@ interface FilterListItemProps<T = string> {
|
|
|
1704
2241
|
value: T;
|
|
1705
2242
|
/** Display text */
|
|
1706
2243
|
label: string;
|
|
2244
|
+
/** Optional subtext displayed below the label (two-line option) */
|
|
2245
|
+
subtext?: string;
|
|
1707
2246
|
/** Selection state */
|
|
1708
2247
|
selected?: boolean;
|
|
1709
2248
|
/** Show drag handle */
|
|
1710
2249
|
draggable?: boolean;
|
|
1711
2250
|
/** Selection handler */
|
|
1712
2251
|
onSelect?: (value: T) => void;
|
|
2252
|
+
/** Optional icon for this item */
|
|
2253
|
+
icon?: React$1.ComponentType<any> | React$1.ReactNode;
|
|
2254
|
+
/** Show loading spinner on this item */
|
|
2255
|
+
loading?: boolean;
|
|
2256
|
+
/** Optional custom display node replacing the plain label */
|
|
2257
|
+
labelNode?: React$1.ReactNode;
|
|
1713
2258
|
/** Hover state (for stories) */
|
|
1714
2259
|
hover?: boolean;
|
|
1715
2260
|
/** Additional className */
|
|
@@ -1718,6 +2263,18 @@ interface FilterListItemProps<T = string> {
|
|
|
1718
2263
|
|
|
1719
2264
|
declare const FilterSelect: React$1.ForwardRefExoticComponent<FilterSelectProps<string> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1720
2265
|
|
|
2266
|
+
/**
|
|
2267
|
+
* FilterListItem — single row in a FilterSelect dropdown list.
|
|
2268
|
+
*
|
|
2269
|
+
* Figma spec (4085:5872, 4085:5885):
|
|
2270
|
+
* [drag handle?] [leading icon?] [label / optional subtext] [trailing tick when selected]
|
|
2271
|
+
*
|
|
2272
|
+
* Key fix: only the SELECTED option renders a tick — NOT every option.
|
|
2273
|
+
* We do not render a Checkbox; the design uses trailing check + bg-brand-secondary for selection.
|
|
2274
|
+
*
|
|
2275
|
+
* Layout-shift: the trailing tick slot is always reserved (same width) so selection does not
|
|
2276
|
+
* jitter item width. Hover / selected use background swaps only — no padding or border changes.
|
|
2277
|
+
*/
|
|
1721
2278
|
declare const FilterListItem: React$1.ForwardRefExoticComponent<FilterListItemProps<string> & {
|
|
1722
2279
|
onDragStart?: (e: React$1.DragEvent) => void;
|
|
1723
2280
|
onDragOver?: (e: React$1.DragEvent) => void;
|
|
@@ -1728,6 +2285,49 @@ declare const FilterListItem: React$1.ForwardRefExoticComponent<FilterListItemPr
|
|
|
1728
2285
|
isDragOver?: boolean;
|
|
1729
2286
|
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
1730
2287
|
|
|
2288
|
+
/**
|
|
2289
|
+
* Option for the left-side toggle dropdown (e.g., Agent/Crew).
|
|
2290
|
+
*/
|
|
2291
|
+
interface CompoundFilterToggleOption<T extends string = string> {
|
|
2292
|
+
value: T;
|
|
2293
|
+
label: string;
|
|
2294
|
+
/** Icon shown inside the dropdown menu next to the label */
|
|
2295
|
+
icon?: LucideIcon | React$1.ReactNode;
|
|
2296
|
+
}
|
|
2297
|
+
interface CompoundFilterSelectProps<T extends string = string> extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
2298
|
+
/** Options for the left-side toggle dropdown */
|
|
2299
|
+
options: CompoundFilterToggleOption<T>[];
|
|
2300
|
+
/** Current selected value for the left toggle */
|
|
2301
|
+
value: T;
|
|
2302
|
+
/** Callback when left toggle value changes */
|
|
2303
|
+
onChange: (value: T) => void;
|
|
2304
|
+
/**
|
|
2305
|
+
* Leading icon shown on the left pill (e.g., an icon representing the current selection).
|
|
2306
|
+
* If omitted, falls back to the icon on the currently-selected option.
|
|
2307
|
+
*/
|
|
2308
|
+
leadingIcon?: LucideIcon | React$1.ReactNode;
|
|
2309
|
+
/** Optional label shown on the left pill next to the icon. If omitted, only icon + chevron are shown (compact mode). */
|
|
2310
|
+
leftLabel?: string;
|
|
2311
|
+
/** Right-side content, typically a <FilterSelect /> */
|
|
2312
|
+
children?: React$1.ReactNode;
|
|
2313
|
+
/** Disable the left toggle */
|
|
2314
|
+
disabled?: boolean;
|
|
2315
|
+
}
|
|
2316
|
+
/**
|
|
2317
|
+
* CompoundFilterSelect
|
|
2318
|
+
*
|
|
2319
|
+
* A compound filter comprising:
|
|
2320
|
+
* - Left pill: a dropdown toggle (e.g., Agent / Crew) with its own rounded-left border
|
|
2321
|
+
* - Right pill: any content (typically a <FilterSelect />) with its own rounded-right border
|
|
2322
|
+
*
|
|
2323
|
+
* The two pills overlap by 1px so their borders merge visually into a single continuous pill.
|
|
2324
|
+
* Per Figma spec (1XTtQGgJ2Tb0wycZ7O1Ez9 · 5427:32324).
|
|
2325
|
+
*/
|
|
2326
|
+
declare function CompoundFilterSelect<T extends string = string>({ options, value, onChange, leadingIcon, leftLabel, children, disabled, className, ...props }: CompoundFilterSelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
2327
|
+
declare namespace CompoundFilterSelect {
|
|
2328
|
+
var displayName: string;
|
|
2329
|
+
}
|
|
2330
|
+
|
|
1731
2331
|
interface ButtonListItem {
|
|
1732
2332
|
value: string;
|
|
1733
2333
|
label: string;
|
|
@@ -1884,6 +2484,16 @@ declare const MONACO_OPTIONS_DIALOG: {
|
|
|
1884
2484
|
interface KeyValuePair {
|
|
1885
2485
|
key: string;
|
|
1886
2486
|
value: string;
|
|
2487
|
+
/**
|
|
2488
|
+
* Optional per-row error for the key field. When set, the key Input is
|
|
2489
|
+
* rendered with `invalid` + this message as supporting-text.
|
|
2490
|
+
*/
|
|
2491
|
+
keyError?: string;
|
|
2492
|
+
/**
|
|
2493
|
+
* Optional per-row error for the value field. When set, the value Input is
|
|
2494
|
+
* rendered with `invalid` + this message as supporting-text.
|
|
2495
|
+
*/
|
|
2496
|
+
valueError?: string;
|
|
1887
2497
|
}
|
|
1888
2498
|
interface KeyValueEditorProps {
|
|
1889
2499
|
/**
|
|
@@ -1910,6 +2520,18 @@ interface KeyValueEditorProps {
|
|
|
1910
2520
|
* When true, omit the header row. For use inside KeyValueJsonEditor.
|
|
1911
2521
|
*/
|
|
1912
2522
|
hideHeader?: boolean;
|
|
2523
|
+
/**
|
|
2524
|
+
* When true, show delete button on each row. When false, delete is hidden.
|
|
2525
|
+
* Rows can only be deleted until 1 row remains.
|
|
2526
|
+
* @default true
|
|
2527
|
+
*/
|
|
2528
|
+
allowDeleteRow?: boolean;
|
|
2529
|
+
/**
|
|
2530
|
+
* Optional leading icon rendered inside the value field (e.g. a type
|
|
2531
|
+
* indicator like `<Brackets />`). Defaults to the git-compare glyph that
|
|
2532
|
+
* matches the Figma reference.
|
|
2533
|
+
*/
|
|
2534
|
+
valueLeadingIcon?: React$1.ReactNode;
|
|
1913
2535
|
className?: string;
|
|
1914
2536
|
style?: React$1.CSSProperties;
|
|
1915
2537
|
}
|
|
@@ -1917,64 +2539,183 @@ interface KeyValueEditorProps {
|
|
|
1917
2539
|
/**
|
|
1918
2540
|
* KeyValueEditor - Table-style key-value pair editor.
|
|
1919
2541
|
* Renders header (Key, Value) and editable rows with delete on hover.
|
|
1920
|
-
*
|
|
2542
|
+
*
|
|
2543
|
+
* Each row's key and value fields use the shared <Input> component
|
|
2544
|
+
* (inputSize="sm"), so focus/hover/pressed/invalid states and typography
|
|
2545
|
+
* are inherited from the design system — no ad-hoc input styling lives
|
|
2546
|
+
* here.
|
|
2547
|
+
*
|
|
2548
|
+
* Figma reference: 5905:39527
|
|
1921
2549
|
*/
|
|
1922
2550
|
declare const KeyValueEditor: React$1.ForwardRefExoticComponent<KeyValueEditorProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1923
2551
|
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
/**
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
2552
|
+
interface AudioPlayerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSeek" | "onRateChange"> {
|
|
2553
|
+
/** Whether audio is currently playing. Controls the play/pause icon. */
|
|
2554
|
+
isPlaying: boolean;
|
|
2555
|
+
/** Current playback position, in seconds. */
|
|
2556
|
+
currentTime: number;
|
|
2557
|
+
/** Total duration, in seconds. */
|
|
2558
|
+
duration: number;
|
|
2559
|
+
/**
|
|
2560
|
+
* Normalized bar heights for the waveform, each between 0 and 1.
|
|
2561
|
+
* If omitted, a flat baseline line is rendered.
|
|
2562
|
+
*/
|
|
2563
|
+
waveform?: number[];
|
|
2564
|
+
/** Current playback speed (e.g. 1, 1.5, 2). Shown in a trailing pill. */
|
|
2565
|
+
playbackRate?: number;
|
|
2566
|
+
/** Available playback speeds to cycle through on pill click. */
|
|
2567
|
+
playbackRateOptions?: number[];
|
|
2568
|
+
/** Called when the play/pause button is clicked. */
|
|
2569
|
+
onPlayPause?: () => void;
|
|
2570
|
+
/** Called when the user clicks a position on the waveform. */
|
|
2571
|
+
onSeek?: (seconds: number) => void;
|
|
2572
|
+
/** Called when the user clicks the speed pill. */
|
|
2573
|
+
onRateChange?: (rate: number) => void;
|
|
2574
|
+
/** Custom formatter for times. Defaults to `m:ss`. */
|
|
2575
|
+
formatTime?: (seconds: number) => string;
|
|
2576
|
+
}
|
|
2577
|
+
|
|
2578
|
+
/**
|
|
2579
|
+
* AudioPlayer — presentational waveform audio player.
|
|
2580
|
+
*
|
|
2581
|
+
* Pure / controlled: all state (playing, time, rate) is driven by props.
|
|
2582
|
+
* Clicks on the waveform emit `onSeek(seconds)`; clicking the speed pill
|
|
2583
|
+
* cycles through `playbackRateOptions` (default `[1, 1.5, 2]`).
|
|
2584
|
+
*
|
|
2585
|
+
* Figma: 3576:2351
|
|
2586
|
+
*/
|
|
2587
|
+
declare const AudioPlayer: React$1.ForwardRefExoticComponent<AudioPlayerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2588
|
+
|
|
2589
|
+
interface ChatBubbleBaseProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
|
|
2590
|
+
/** Message body (string or rich node). */
|
|
2591
|
+
message: React$1.ReactNode;
|
|
2592
|
+
/** Timestamp text (e.g. "04:47 PM"). Revealed on hover by default. */
|
|
2593
|
+
timestamp?: string;
|
|
2594
|
+
/** When true, timestamp is always visible. */
|
|
2595
|
+
alwaysShowTimestamp?: boolean;
|
|
2596
|
+
/** Override for the 16px avatar slot. */
|
|
2597
|
+
avatar?: React$1.ReactNode;
|
|
2598
|
+
}
|
|
2599
|
+
interface ChatBubbleAgentProps extends ChatBubbleBaseProps {
|
|
2600
|
+
/** Shown below the bubble (e.g. a "Tool Call" tag). */
|
|
2601
|
+
trailing?: React$1.ReactNode;
|
|
2602
|
+
/** In-Focus state — draws the brand ring around the bubble. */
|
|
2603
|
+
focused?: boolean;
|
|
2604
|
+
}
|
|
2605
|
+
interface ChatBubbleUserProps extends ChatBubbleBaseProps {
|
|
2606
|
+
/** Shown below the message (e.g. a "Tool Call" tag). */
|
|
2607
|
+
trailing?: React$1.ReactNode;
|
|
2608
|
+
/** In-Focus state — draws the brand ring around the row. */
|
|
2609
|
+
focused?: boolean;
|
|
2610
|
+
}
|
|
2611
|
+
|
|
2612
|
+
/**
|
|
2613
|
+
* ChatBubbleAgent — right-aligned agent message with an avatar dot.
|
|
2614
|
+
* Figma: 3575:10095 / 3575:10154 (hover) / 5494:33659 (in-focus).
|
|
2615
|
+
*/
|
|
2616
|
+
declare const ChatBubbleAgent: React$1.ForwardRefExoticComponent<ChatBubbleAgentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2617
|
+
/**
|
|
2618
|
+
* ChatBubbleUser — left-aligned user message with a grey avatar icon.
|
|
2619
|
+
* No bubble background; just inline icon + grey text.
|
|
2620
|
+
* Figma: 3575:10815 / 3575:10829 (hover).
|
|
2621
|
+
*/
|
|
2622
|
+
declare const ChatBubbleUser: React$1.ForwardRefExoticComponent<ChatBubbleUserProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2623
|
+
|
|
2624
|
+
type PopoverSide = "top" | "right" | "bottom" | "left";
|
|
2625
|
+
type PopoverAlign = "start" | "center" | "end";
|
|
2626
|
+
type PopoverShadow = "none" | "xs" | "sm" | "md" | "lg";
|
|
2627
|
+
interface PopoverProps {
|
|
2628
|
+
/** Controlled open state. If omitted, component is uncontrolled. */
|
|
2629
|
+
open?: boolean;
|
|
2630
|
+
/** Called when open state changes (both controlled and uncontrolled). */
|
|
2631
|
+
onOpenChange?: (open: boolean) => void;
|
|
2632
|
+
/** Uncontrolled default open. */
|
|
2633
|
+
defaultOpen?: boolean;
|
|
2634
|
+
/** The trigger element (e.g. button). Rendered in place. */
|
|
2635
|
+
trigger: React$1.ReactNode;
|
|
2636
|
+
/** Popover body content — can be anything. */
|
|
2637
|
+
children: React$1.ReactNode;
|
|
1942
2638
|
/**
|
|
1943
|
-
*
|
|
1944
|
-
|
|
1945
|
-
|
|
2639
|
+
* Optional search input rendered at the top of the popover.
|
|
2640
|
+
* When provided, renders a search bar above `children`.
|
|
2641
|
+
*/
|
|
2642
|
+
search?: {
|
|
2643
|
+
/** Controlled search value */
|
|
2644
|
+
value?: string;
|
|
2645
|
+
/** Called when the search input changes */
|
|
2646
|
+
onValueChange?: (value: string) => void;
|
|
2647
|
+
/** Placeholder text */
|
|
2648
|
+
placeholder?: string;
|
|
2649
|
+
/** Auto-focus the search input when popover opens */
|
|
2650
|
+
autoFocus?: boolean;
|
|
2651
|
+
};
|
|
1946
2652
|
/**
|
|
1947
|
-
*
|
|
2653
|
+
* Position relative to trigger.
|
|
2654
|
+
* @default "bottom"
|
|
1948
2655
|
*/
|
|
1949
|
-
|
|
2656
|
+
side?: PopoverSide;
|
|
1950
2657
|
/**
|
|
1951
|
-
*
|
|
2658
|
+
* Alignment along the side.
|
|
2659
|
+
* @default "start"
|
|
1952
2660
|
*/
|
|
1953
|
-
|
|
2661
|
+
align?: PopoverAlign;
|
|
1954
2662
|
/**
|
|
1955
|
-
*
|
|
2663
|
+
* Offset (px) between trigger and popover.
|
|
2664
|
+
* @default 4
|
|
1956
2665
|
*/
|
|
1957
|
-
|
|
2666
|
+
sideOffset?: number;
|
|
1958
2667
|
/**
|
|
1959
|
-
*
|
|
2668
|
+
* Show border around the popover container.
|
|
2669
|
+
* @default false
|
|
1960
2670
|
*/
|
|
1961
|
-
|
|
1962
|
-
keyPlaceholder?: string;
|
|
1963
|
-
valuePlaceholder?: string;
|
|
1964
|
-
jsonHeight?: string;
|
|
1965
|
-
jsonLabel?: string;
|
|
2671
|
+
bordered?: boolean;
|
|
1966
2672
|
/**
|
|
1967
|
-
*
|
|
2673
|
+
* Shadow variant.
|
|
2674
|
+
* @default "md"
|
|
1968
2675
|
*/
|
|
1969
|
-
|
|
2676
|
+
shadow?: PopoverShadow;
|
|
2677
|
+
/** Width (px or CSS value). If omitted, popover sizes to content. */
|
|
2678
|
+
width?: number | string;
|
|
2679
|
+
/** Min width (defaults to trigger width if omitted) */
|
|
2680
|
+
minWidth?: number | string;
|
|
2681
|
+
/** Max height — content scrolls beyond this. */
|
|
2682
|
+
maxHeight?: number | string;
|
|
2683
|
+
/** Additional className for the popover container. */
|
|
1970
2684
|
className?: string;
|
|
1971
|
-
|
|
2685
|
+
/** Additional className for the outer wrapper (trigger + popover). */
|
|
2686
|
+
wrapperClassName?: string;
|
|
2687
|
+
/** Close popover on outside click. @default true */
|
|
2688
|
+
closeOnOutsideClick?: boolean;
|
|
2689
|
+
/** Close popover on Escape key. @default true */
|
|
2690
|
+
closeOnEscape?: boolean;
|
|
1972
2691
|
}
|
|
1973
2692
|
|
|
1974
2693
|
/**
|
|
1975
|
-
*
|
|
1976
|
-
*
|
|
2694
|
+
* Popover — generic floating container.
|
|
2695
|
+
*
|
|
2696
|
+
* Supports:
|
|
2697
|
+
* - Any children as content
|
|
2698
|
+
* - Optional search bar at the top
|
|
2699
|
+
* - Border / shadow variants
|
|
2700
|
+
* - Controlled or uncontrolled open state
|
|
2701
|
+
* - Positioning (side + align)
|
|
2702
|
+
* - Click-outside / Escape to close
|
|
2703
|
+
*
|
|
2704
|
+
* Figma reference: 43:10346 (Menu Dropdown)
|
|
2705
|
+
*
|
|
2706
|
+
* @example
|
|
2707
|
+
* <Popover trigger={<Button>Open</Button>}>
|
|
2708
|
+
* <div>Any content here</div>
|
|
2709
|
+
* </Popover>
|
|
2710
|
+
*
|
|
2711
|
+
* @example with search
|
|
2712
|
+
* <Popover
|
|
2713
|
+
* trigger={<Button>Filter</Button>}
|
|
2714
|
+
* search={{ value: q, onValueChange: setQ, placeholder: "Search…" }}
|
|
2715
|
+
* >
|
|
2716
|
+
* <ListItems />
|
|
2717
|
+
* </Popover>
|
|
1977
2718
|
*/
|
|
1978
|
-
declare const
|
|
2719
|
+
declare const Popover: React$1.ForwardRefExoticComponent<PopoverProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1979
2720
|
|
|
1980
|
-
export { Accordion, AccordionContent, AccordionContentPlaceholder, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, type AccordionType, type AccordionValue, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarShape, type AvatarSize, type BackButtonPosition, Badge, type BadgeProps, type BadgeVariant, Button, type ButtonBorderRadius, ButtonList, type ButtonListItem, type ButtonListProps, type ButtonProps, type ButtonSize, type ButtonVariant, type CellContent, type CellTextContent, Checkbox, type CheckboxProps, type ColumnDef, ColumnWidth, DEFAULT_THEME, DataTable, type DataTableProps, type DatePreset, Dialog, DialogBody, type DialogBodyProps, DialogFooter, type DialogFooterProps, DialogHeader, DialogHeaderNavigation, type DialogHeaderNavigationProps, type DialogHeaderNavigationVariant, type DialogHeaderProps, DialogIcon, type DialogIconProps, type DialogProps, type DialogSize, type DialogType, EmptyState, type EmptyStateIllustrationPosition, type EmptyStateIllustrationSize, type EmptyStateProps, FileInput, type FileInputProps, type FilterItem, FilterListItem, type FilterListItemProps, FilterSelect, type FilterSelectProps, Input, type InputBorderRadius, type InputForceState, InputGroup, type InputGroupBorderRadius, type InputGroupForceState, type InputGroupProps, type InputProps, JSON_EDITOR_LANGUAGE_OPTIONS, JsonEditor, type JsonEditorLanguage, type JsonEditorProps, KeyValueEditor, type KeyValueEditorProps,
|
|
2721
|
+
export { Accordion, AccordionContent, AccordionContentPlaceholder, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionSectionTrigger, type AccordionSectionTriggerProps, AccordionTrigger, type AccordionTriggerProps, type AccordionType, type AccordionValue, AudioPlayer, type AudioPlayerProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarShape, type AvatarSize, type BackButtonPosition, Badge, type BadgeProps, type BadgeVariant, Button, type ButtonBorderRadius, ButtonList, type ButtonListItem, type ButtonListProps, type ButtonProps, type ButtonSize, type ButtonVariant, type CellContent, type CellTextContent, ChatBubbleAgent, type ChatBubbleAgentProps, ChatBubbleUser, type ChatBubbleUserProps, Checkbox, type CheckboxProps, type ColumnDef, ColumnWidth, CompoundFilterSelect, type CompoundFilterSelectProps, type CompoundFilterToggleOption, DEFAULT_THEME, DataTable, type DataTableProps, type DatePreset, Dialog, DialogBody, type DialogBodyProps, DialogFooter, type DialogFooterProps, DialogHeader, DialogHeaderNavigation, type DialogHeaderNavigationProps, type DialogHeaderNavigationVariant, type DialogHeaderProps, DialogIcon, type DialogIconProps, type DialogProps, type DialogSize, type DialogType, EmptyState, type EmptyStateIllustrationPosition, type EmptyStateIllustrationSize, type EmptyStateProps, FileInput, type FileInputProps, type FilterItem, type FilterItemWithSection, FilterListItem, type FilterListItemProps, FilterSelect, type FilterSelectProps, type IconColor, IconPicker, type IconPickerProps, type IconSize, IconWrapper, type IconWrapperProps, Input, type InputBorderRadius, type InputForceState, InputGroup, type InputGroupBorderRadius, type InputGroupForceState, type InputGroupProps, type InputProps, type InputVariant, JSON_EDITOR_LANGUAGE_OPTIONS, JsonEditor, type JsonEditorLanguage, type JsonEditorProps, KeyValueEditor, type KeyValueEditorProps, type KeyValuePair, LegoLandWrapper, type LegoLandWrapperProps, List, type ListBorderRadius, type ListNavItemProps, ListNavigation, type ListNavigationProps, type ListProps, type ListType, type ListVariant, MONACO_OPTIONS, MONACO_OPTIONS_DIALOG, NestedButtonGroup, type NestedButtonGroupProps, NumberBadge, type NumberBadgeProps, type NumberBadgeVariant, NurixThemeProvider, Pagination, type PaginationProps, PlaySelect, type PlaySelectAudioItem, type PlaySelectProps, PlaybackControl, type PlaybackControlProps, type PlaybackState, Popover, type PopoverAlign, type PopoverProps, type PopoverShadow, type PopoverSide, ProgressBar, type ProgressBarProps, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, Select, SelectContent, type SelectContentItem, SelectFormLabel, SelectGroup, type SelectGroupProps, SelectItem, SelectLabel, type SelectLabelProps, type SelectMenuItemProps, type SelectProps, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, ShadowDOMWrapper, type ShowToastOptions, type SortDirection, type SortState, Spinner, type SpinnerProps, type SpinnerSize, type StepItem, type StepState, Stepper, StepperBar, type StepperBarProps, type StepperProps, type SupportingTextType, Surface, type SurfaceBackground, SurfaceBody, type SurfaceBodyProps, SurfaceFooter, type SurfaceFooterProps, SurfaceHeader, type SurfaceHeaderProps, type SurfaceProps, Switch, type SwitchProps, type SwitchSize, type TabVariant, type TableAction, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, TagBadge, type TagBadgeProps, type TagOption, Textarea, type TextareaBorderRadius, type TextareaForceState, type TextareaProps, ThemeProvider, Toast, type ToastProps, type ToastVariant, Toaster, Tooltip, TooltipContent, type TooltipContentProps, TooltipProvider, TooltipTrigger, Typography, type TypographyProps, type TypographySize, type TypographyTone, type TypographyVariant, type TypographyWeight, type UsePlaySelectProps, type UseSelectProps, enhanceJsonError, showToast, useJsonEditor, usePlaySelect, useSelect, useTheme };
|