@olundot/ui 0.20.0-next.0 → 0.20.0-next.10
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/CHANGELOG.md +268 -0
- package/dist/index.d.ts +421 -185
- package/dist/index.js +3936 -2610
- package/dist/tokens.css +6 -0
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { HTMLAttributes, ReactNode, SVGProps } from 'react';
|
|
5
5
|
import { VariantProps } from 'class-variance-authority';
|
|
6
|
-
import { LucideIcon } from 'lucide-react';
|
|
7
6
|
import { Select as Select$1, Label as Label$1, Switch as Switch$1, Tabs as Tabs$1, Dialog as Dialog$1, DropdownMenu as DropdownMenu$1, Separator as Separator$1, Avatar as Avatar$1, Tooltip as Tooltip$1, Popover as Popover$1, Checkbox as Checkbox$1, RadioGroup as RadioGroup$1, ScrollArea as ScrollArea$1 } from 'radix-ui';
|
|
8
7
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
8
|
+
import { LucideIcon } from 'lucide-react';
|
|
9
9
|
|
|
10
10
|
declare function cn(...inputs: ClassValue[]): string;
|
|
11
11
|
|
|
@@ -31,80 +31,74 @@ declare function useOlunTheme(): UseOlunThemeValue;
|
|
|
31
31
|
|
|
32
32
|
type SurfaceLevel = "surface" | "canvas" | "raised";
|
|
33
33
|
|
|
34
|
-
type ActionAppearance = 'filled' | 'outline' | 'ghost';
|
|
35
34
|
type ActionTone = 'primary' | 'neutral' | 'danger';
|
|
36
35
|
type FilledDefaultActionStyle = {
|
|
37
36
|
appearance?: 'filled';
|
|
38
37
|
tone?: ActionTone;
|
|
39
38
|
} | {
|
|
40
|
-
appearance: 'outline'
|
|
39
|
+
appearance: 'outline';
|
|
40
|
+
tone?: 'neutral' | 'danger';
|
|
41
|
+
} | {
|
|
42
|
+
appearance: 'ghost';
|
|
41
43
|
tone?: 'neutral';
|
|
42
44
|
};
|
|
43
|
-
type
|
|
45
|
+
type OutlineDefaultActionStyle = {
|
|
44
46
|
appearance: 'filled';
|
|
45
47
|
tone?: ActionTone;
|
|
46
48
|
} | {
|
|
47
|
-
appearance
|
|
49
|
+
appearance?: 'outline';
|
|
50
|
+
tone?: 'neutral' | 'danger';
|
|
51
|
+
} | {
|
|
52
|
+
appearance: 'ghost';
|
|
48
53
|
tone?: 'neutral';
|
|
54
|
+
};
|
|
55
|
+
type GhostDefaultActionStyle = {
|
|
56
|
+
appearance: 'filled';
|
|
57
|
+
tone?: ActionTone;
|
|
58
|
+
} | {
|
|
59
|
+
appearance: 'outline';
|
|
60
|
+
tone?: 'neutral' | 'danger';
|
|
49
61
|
} | {
|
|
50
|
-
appearance?:
|
|
51
|
-
tone
|
|
62
|
+
appearance?: 'ghost';
|
|
63
|
+
tone?: 'neutral';
|
|
52
64
|
};
|
|
53
65
|
|
|
54
66
|
declare const buttonCva: (props?: ({
|
|
55
|
-
|
|
56
|
-
appearance?: "filled" | "outline" | "ghost" | null | undefined;
|
|
67
|
+
appearance?: "filled" | "outline" | "ghost" | "link" | null | undefined;
|
|
57
68
|
tone?: "primary" | "neutral" | "danger" | null | undefined;
|
|
58
|
-
|
|
69
|
+
size?: "default" | "md" | "xs" | "sm" | "lg" | "xl" | null | undefined;
|
|
59
70
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
60
71
|
type ButtonVariantsOptions = Parameters<typeof buttonCva>[0];
|
|
61
72
|
declare function buttonVariants(options?: ButtonVariantsOptions): string;
|
|
62
|
-
type ButtonVariant = NonNullable<VariantProps<typeof buttonVariants>['variant']>;
|
|
63
73
|
type ButtonSize = NonNullable<VariantProps<typeof buttonVariants>['size']>;
|
|
64
|
-
type ButtonStyleProps =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
*/
|
|
68
|
-
variant?: never;
|
|
69
|
-
}) | {
|
|
70
|
-
/**
|
|
71
|
-
* @deprecated Use `appearance` × `tone`: `primary`/`default` → filled + primary ·
|
|
72
|
-
* `secondary`/`outline`/`subtle` → outline + neutral · `ghost` → ghost + neutral ·
|
|
73
|
-
* `danger`/`destructive`/`emergency` → filled + danger · `link` → no Button replacement
|
|
74
|
-
* (a link component is planned). Removed in 0.20.
|
|
75
|
-
*/
|
|
76
|
-
variant?: ButtonVariant | null;
|
|
74
|
+
type ButtonStyleProps = FilledDefaultActionStyle | {
|
|
75
|
+
appearance: 'link';
|
|
76
|
+
tone?: 'primary' | 'danger';
|
|
77
77
|
};
|
|
78
78
|
type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & ButtonStyleProps & {
|
|
79
|
-
/** `icon`·`icon-xs` are deprecated — use IconButton (`lg`·`md`). */
|
|
80
79
|
size?: ButtonSize | null;
|
|
80
|
+
/**
|
|
81
|
+
* Renders the single child element (e.g. Next `Link`) instead of a `<button>`. Ref, `href` and
|
|
82
|
+
* anchor-typed events belong on that child; Button's own ref and handlers stay typed for
|
|
83
|
+
* `HTMLButtonElement`. Disabled or loading, the child stays in place with its `href` but takes
|
|
84
|
+
* `aria-disabled`, leaves the tab order and swallows clicks.
|
|
85
|
+
*/
|
|
81
86
|
asChild?: boolean;
|
|
82
|
-
/** @deprecated Use IconButton with `label` (or children). Removed in 0.20. */
|
|
83
|
-
leadingIcon?: LucideIcon;
|
|
84
|
-
/** @deprecated Use IconButton with `label` and `iconPosition="end"`. Removed in 0.20. */
|
|
85
|
-
trailingIcon?: LucideIcon;
|
|
86
87
|
loading?: boolean;
|
|
88
|
+
/** Trailing ▾ for a menu trigger. The trigger (DropdownMenu etc.) supplies `aria-haspopup`. */
|
|
89
|
+
menuIndicator?: boolean;
|
|
87
90
|
};
|
|
88
91
|
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
89
92
|
|
|
90
|
-
type CopyButtonProps = Omit<ButtonProps, '
|
|
93
|
+
type CopyButtonProps = Omit<ButtonProps, 'appearance' | 'children' | 'loading' | 'size' | 'tone' | 'variant'> & OutlineDefaultActionStyle & {
|
|
91
94
|
value: string;
|
|
92
95
|
label?: React.ReactNode;
|
|
93
96
|
copiedLabel?: React.ReactNode;
|
|
94
97
|
onCopied?: () => void;
|
|
95
98
|
size?: ButtonSize;
|
|
96
|
-
variant?: ButtonVariant;
|
|
97
99
|
duration?: number;
|
|
98
100
|
};
|
|
99
|
-
declare const CopyButton: React.ForwardRefExoticComponent<
|
|
100
|
-
value: string;
|
|
101
|
-
label?: React.ReactNode;
|
|
102
|
-
copiedLabel?: React.ReactNode;
|
|
103
|
-
onCopied?: () => void;
|
|
104
|
-
size?: ButtonSize;
|
|
105
|
-
variant?: ButtonVariant;
|
|
106
|
-
duration?: number;
|
|
107
|
-
} & React.RefAttributes<HTMLButtonElement>>;
|
|
101
|
+
declare const CopyButton: React.ForwardRefExoticComponent<CopyButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
108
102
|
|
|
109
103
|
declare const inputVariants: (props?: ({
|
|
110
104
|
size?: "md" | "sm" | "lg" | null | undefined;
|
|
@@ -185,19 +179,25 @@ declare const FileUploadZone: React.ForwardRefExoticComponent<FileUploadZoneProp
|
|
|
185
179
|
|
|
186
180
|
type AlertVariant = 'info' | 'success' | 'warning' | 'error';
|
|
187
181
|
type AlertEmphasis = 'subtle' | 'strong';
|
|
188
|
-
type
|
|
182
|
+
type AlertMarker = 'icon' | 'dot';
|
|
189
183
|
interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'children'> {
|
|
190
184
|
variant?: AlertVariant;
|
|
185
|
+
/** `subtle` (default) or `strong` (status-colored surface). */
|
|
191
186
|
emphasis?: AlertEmphasis;
|
|
192
|
-
title
|
|
193
|
-
|
|
187
|
+
/** Status mark before the title. `icon` (default) is the status icon, `dot` a small status dot. */
|
|
188
|
+
marker?: AlertMarker;
|
|
189
|
+
title: ReactNode;
|
|
190
|
+
/** Description under the title. Without it the alert is one line, centered. */
|
|
191
|
+
children?: ReactNode;
|
|
192
|
+
/** Control at the end of the title line, before the dismiss button. Narrow alerts put it under the text. */
|
|
193
|
+
action?: ReactNode;
|
|
194
194
|
onDismiss?: () => void;
|
|
195
195
|
}
|
|
196
196
|
declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
|
|
197
197
|
interface InlineAlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
198
198
|
variant?: AlertVariant;
|
|
199
|
-
|
|
200
|
-
|
|
199
|
+
/** Status mark before the text. `icon` (default) is the status icon, `dot` a small status dot. */
|
|
200
|
+
marker?: AlertMarker;
|
|
201
201
|
children: ReactNode;
|
|
202
202
|
}
|
|
203
203
|
declare const InlineAlert: React.ForwardRefExoticComponent<InlineAlertProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -285,6 +285,8 @@ interface SelectProps extends Omit<React.ComponentPropsWithoutRef<typeof Select$
|
|
|
285
285
|
className?: string;
|
|
286
286
|
id?: string;
|
|
287
287
|
label?: React.ReactNode;
|
|
288
|
+
/** Label position: above the field by default, or inside the trigger before its value. */
|
|
289
|
+
labelPlacement?: "top" | "inline";
|
|
288
290
|
/**
|
|
289
291
|
* Pre-input hint text (always visible in default state). Hidden when
|
|
290
292
|
* `state` is "error" or "success" — `message` takes over.
|
|
@@ -337,7 +339,8 @@ interface SelectProps extends Omit<React.ComponentPropsWithoutRef<typeof Select$
|
|
|
337
339
|
selectVariant?: SelectVariant;
|
|
338
340
|
/**
|
|
339
341
|
* When `true`, prepends a reset option to the dropdown. Selecting it fires
|
|
340
|
-
* `onValueChange("")` and restores the trigger placeholder. Default `
|
|
342
|
+
* `onValueChange("")` and restores the trigger placeholder. Default `true`,
|
|
343
|
+
* or `false` when `labelPlacement="inline"`. An explicit value takes precedence.
|
|
341
344
|
*
|
|
342
345
|
* Eliminates the need for callers to manage a sentinel value themselves —
|
|
343
346
|
* use `value=""` + `onValueChange` with `clearable` for the standard pattern.
|
|
@@ -422,6 +425,13 @@ interface SwitchProps extends Omit<React.ComponentPropsWithoutRef<typeof Switch$
|
|
|
422
425
|
* Use for pending async preference changes (e.g., saving remote setting).
|
|
423
426
|
*/
|
|
424
427
|
loading?: boolean;
|
|
428
|
+
/**
|
|
429
|
+
* Where the label sits relative to the track. `end` (default) puts the track first,
|
|
430
|
+
* `start` puts the label first and pushes the track to the row's right edge.
|
|
431
|
+
*/
|
|
432
|
+
labelPlacement?: "end" | "start";
|
|
433
|
+
/** Fills the parent's width. With `labelPlacement="start"` the track ends at the right edge. */
|
|
434
|
+
fullWidth?: boolean;
|
|
425
435
|
}
|
|
426
436
|
declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLButtonElement>>;
|
|
427
437
|
|
|
@@ -554,8 +564,9 @@ declare const Breadcrumb: React.ForwardRefExoticComponent<BreadcrumbProps & Reac
|
|
|
554
564
|
|
|
555
565
|
interface DataLayoutProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
556
566
|
/** Top block — typically a PageHeader. Owns the page's single heading and
|
|
557
|
-
* page-level actions.
|
|
558
|
-
|
|
567
|
+
* page-level actions. Omit when the app shell already renders the page
|
|
568
|
+
* header; no header block or gap is rendered then. */
|
|
569
|
+
header?: React.ReactNode;
|
|
559
570
|
/** Filter row — typically a FilterToolbar (search · filters · result summary). */
|
|
560
571
|
toolbar?: React.ReactNode;
|
|
561
572
|
/** The list body — typically a DataTable or any list/grid. */
|
|
@@ -612,6 +623,7 @@ declare const tabsBadgeVariants: (props?: class_variance_authority_types.ClassPr
|
|
|
612
623
|
interface TabItem {
|
|
613
624
|
key: string;
|
|
614
625
|
label: string;
|
|
626
|
+
/** 라벨 뒤 건수 알약입니다. 0도 보이고, 1000부터는 `999+`로 보입니다. 접근 이름에는 실제 수가 들어갑니다. */
|
|
615
627
|
badge?: number;
|
|
616
628
|
disabled?: boolean;
|
|
617
629
|
}
|
|
@@ -690,11 +702,11 @@ declare const FormLayout: React.ForwardRefExoticComponent<FormLayoutProps & Reac
|
|
|
690
702
|
type OverlayScrim = "blur" | "dim";
|
|
691
703
|
|
|
692
704
|
/**
|
|
693
|
-
* @deprecated The structured Dialog (`title`) is a bottom sheet below
|
|
705
|
+
* @deprecated The structured Dialog (`title`) is a bottom sheet below 1024px on its own.
|
|
694
706
|
*
|
|
695
|
-
* Where a dialog sits below
|
|
707
|
+
* Where a dialog sits below 1024px (the DS mobile band, same as Sheet `mobileSide`).
|
|
696
708
|
* - `"center"` (default): the centered card at every width.
|
|
697
|
-
* - `"sheet"`: a bottom sheet below
|
|
709
|
+
* - `"sheet"`: a bottom sheet below 1024px — pinned to the bottom edge, full width, top corners
|
|
698
710
|
* rounded, height capped with its own scroll, sliding in on the Sheet bottom keyframes.
|
|
699
711
|
* Pure CSS, so SSR and hydration render the same tree at every width (no matchMedia swap).
|
|
700
712
|
*/
|
|
@@ -704,7 +716,7 @@ type DialogSize = "sm" | "md" | "lg";
|
|
|
704
716
|
/**
|
|
705
717
|
* Structured Dialog (spec §3.2): a center window for forms, pickers and long content. X + footer,
|
|
706
718
|
* outside click does not close, Escape does (not while submitting), the body scrolls inside the max
|
|
707
|
-
* height, a bottom sheet below
|
|
719
|
+
* height, a bottom sheet below 1024px (OVERLAY_POLICY.dialog).
|
|
708
720
|
*/
|
|
709
721
|
interface DialogProps {
|
|
710
722
|
open: boolean;
|
|
@@ -745,7 +757,7 @@ type DialogRootProps = React.ComponentProps<typeof Dialog$1.Root> & {
|
|
|
745
757
|
};
|
|
746
758
|
declare function Dialog(props: DialogProps | DialogRootProps): react_jsx_runtime.JSX.Element;
|
|
747
759
|
declare const DialogTrigger: React.ForwardRefExoticComponent<Dialog$1.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
748
|
-
declare
|
|
760
|
+
declare function DialogPortal(props: React.ComponentProps<typeof Dialog$1.Portal>): react_jsx_runtime.JSX.Element;
|
|
749
761
|
declare const DialogClose: React.ForwardRefExoticComponent<Dialog$1.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
|
|
750
762
|
declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<Dialog$1.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
751
763
|
/** Scrim preset; wins over `<html data-scrim>`. Default: the root preset, else `--scrim`. */
|
|
@@ -755,9 +767,9 @@ declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<Dialog$1.Dialo
|
|
|
755
767
|
declare const DialogContent: React.ForwardRefExoticComponent<Omit<Dialog$1.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
756
768
|
showCloseButton?: boolean;
|
|
757
769
|
/**
|
|
758
|
-
* @deprecated The structured Dialog (`title`) is a bottom sheet below
|
|
770
|
+
* @deprecated The structured Dialog (`title`) is a bottom sheet below 1024px on its own.
|
|
759
771
|
*
|
|
760
|
-
* Below
|
|
772
|
+
* Below 1024px: `"center"` card (default) or `"sheet"` — see {@link DialogMobilePresentation}.
|
|
761
773
|
*/
|
|
762
774
|
mobilePresentation?: DialogMobilePresentation;
|
|
763
775
|
/** Scrim preset; wins over `<html data-scrim>`. Default: the root preset, else `--scrim`. */
|
|
@@ -792,7 +804,7 @@ declare const DialogEyebrow: React.ForwardRefExoticComponent<React.HTMLAttribute
|
|
|
792
804
|
* 자체 head/body/foot 슬롯을 가진 ModalShell 등 커스텀 구현용.
|
|
793
805
|
* DialogPortal + DialogOverlay와 함께 수동으로 조합해서 사용.
|
|
794
806
|
*/
|
|
795
|
-
declare const DialogRawContent: React.ForwardRefExoticComponent<Dialog$1.DialogContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
807
|
+
declare const DialogRawContent: React.ForwardRefExoticComponent<Omit<Dialog$1.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
796
808
|
|
|
797
809
|
interface FormModalProps {
|
|
798
810
|
open: boolean;
|
|
@@ -809,7 +821,7 @@ interface FormModalProps {
|
|
|
809
821
|
/** Rendered at the top of the body. */
|
|
810
822
|
status?: React.ReactNode;
|
|
811
823
|
/**
|
|
812
|
-
* @deprecated Ignored. Dialog is a bottom sheet below
|
|
824
|
+
* @deprecated Ignored. Dialog is a bottom sheet below 1024px on its own.
|
|
813
825
|
*/
|
|
814
826
|
mobilePresentation?: DialogMobilePresentation;
|
|
815
827
|
}
|
|
@@ -832,7 +844,7 @@ interface InfoModalProps {
|
|
|
832
844
|
/** @deprecated Ignored. Content that needs the wide box belongs in Dialog. */
|
|
833
845
|
width?: "default" | "wide";
|
|
834
846
|
footer?: React.ReactNode;
|
|
835
|
-
/** @deprecated Ignored. AlertDialog stays a centered card below
|
|
847
|
+
/** @deprecated Ignored. AlertDialog stays a centered card below 1024px. */
|
|
836
848
|
mobilePresentation?: DialogMobilePresentation;
|
|
837
849
|
}
|
|
838
850
|
/**
|
|
@@ -856,6 +868,103 @@ interface FilterToolbarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
856
868
|
}
|
|
857
869
|
declare const FilterToolbar: React.ForwardRefExoticComponent<FilterToolbarProps & React.RefAttributes<HTMLDivElement>>;
|
|
858
870
|
|
|
871
|
+
/** Props an item icon receives: a Lucide icon or any component taking `size` and `strokeWidth`. */
|
|
872
|
+
type ActionMenuIconProps = {
|
|
873
|
+
size?: number | string;
|
|
874
|
+
strokeWidth?: number | string;
|
|
875
|
+
className?: string;
|
|
876
|
+
"aria-hidden"?: boolean;
|
|
877
|
+
};
|
|
878
|
+
interface ActionMenuItem {
|
|
879
|
+
id: string;
|
|
880
|
+
label: string;
|
|
881
|
+
/** Leading icon. */
|
|
882
|
+
icon?: React.ComponentType<ActionMenuIconProps>;
|
|
883
|
+
/** Secondary line under the label (menu sheet only). */
|
|
884
|
+
description?: string;
|
|
885
|
+
/** Danger color (DropdownMenuItem `variant="destructive"`, the sheet row's error color). */
|
|
886
|
+
destructive?: boolean;
|
|
887
|
+
/** Not focusable and runs nothing. */
|
|
888
|
+
disabled?: boolean;
|
|
889
|
+
/**
|
|
890
|
+
* Why the item cannot run now. The item shows faded but stays in the focus order like the other
|
|
891
|
+
* items, named by its label alone; this line sits under the label at every width as its
|
|
892
|
+
* description (`aria-describedby`), and choosing the item runs nothing and leaves the menu open.
|
|
893
|
+
* Shown instead of `description`; wins over `disabled`.
|
|
894
|
+
*/
|
|
895
|
+
disabledReason?: string;
|
|
896
|
+
/** Runs after the menu has closed and focus is back on the trigger. */
|
|
897
|
+
onSelect: () => void;
|
|
898
|
+
}
|
|
899
|
+
interface ActionMenuGroup {
|
|
900
|
+
id: string;
|
|
901
|
+
/** Group heading. */
|
|
902
|
+
label?: string;
|
|
903
|
+
items: ActionMenuItem[];
|
|
904
|
+
}
|
|
905
|
+
interface ActionMenuBaseProps {
|
|
906
|
+
/** The button that opens the menu, e.g. an IconButton with an `aria-label`. */
|
|
907
|
+
trigger: React.ReactElement;
|
|
908
|
+
/** Heading of the menu sheet below 1024px (also its accessible name). The dropdown shows none. */
|
|
909
|
+
title?: string;
|
|
910
|
+
/** Line under the heading, menu sheet only (from ActionSheet). */
|
|
911
|
+
description?: string;
|
|
912
|
+
/** Controlled open state (optional). */
|
|
913
|
+
open?: boolean;
|
|
914
|
+
onOpenChange?: (open: boolean) => void;
|
|
915
|
+
/** Accessible name of the menu sheet's screen-reader-only close button. Default '닫기'. */
|
|
916
|
+
closeLabel?: string;
|
|
917
|
+
}
|
|
918
|
+
type ActionMenuProps = ActionMenuBaseProps & ({
|
|
919
|
+
items: ActionMenuItem[];
|
|
920
|
+
groups?: never;
|
|
921
|
+
} | {
|
|
922
|
+
/** Items in groups, with a separator between groups. Use instead of `items`. */
|
|
923
|
+
groups: ActionMenuGroup[];
|
|
924
|
+
items?: never;
|
|
925
|
+
});
|
|
926
|
+
declare function ActionMenu({ trigger, title, description, open: openProp, onOpenChange, closeLabel, items, groups, }: ActionMenuProps): react_jsx_runtime.JSX.Element;
|
|
927
|
+
|
|
928
|
+
/** The card's ⋮ menu: the same items as the desktop row menu. */
|
|
929
|
+
interface ListCardActions {
|
|
930
|
+
items: readonly ActionMenuItem[];
|
|
931
|
+
/** Accessible name of the ⋮ button, e.g. the desktop ⋮ label. */
|
|
932
|
+
label: string;
|
|
933
|
+
}
|
|
934
|
+
interface ListCardProps {
|
|
935
|
+
title: React.ReactNode;
|
|
936
|
+
/**
|
|
937
|
+
* Up to two meta groups; each is one node or a list of values. A group is one line with its
|
|
938
|
+
* values 12px apart; values wrap to the next line whole.
|
|
939
|
+
*/
|
|
940
|
+
meta?: readonly [React.ReactNode, React.ReactNode?];
|
|
941
|
+
/** One status badge at the bottom row's left. */
|
|
942
|
+
status?: React.ReactNode;
|
|
943
|
+
/** On the bottom row, after `status` or alone at its left. */
|
|
944
|
+
caption?: React.ReactNode;
|
|
945
|
+
leading?: React.ReactNode;
|
|
946
|
+
/** Optional value (score, count) at the right of the top line, before the ⋮ or the chevron. */
|
|
947
|
+
value?: React.ReactNode;
|
|
948
|
+
/**
|
|
949
|
+
* The icon at the top right. With `actions` it moves to the bottom right and the card is at
|
|
950
|
+
* least 84px tall, so the two 44px hit areas do not overlap.
|
|
951
|
+
*/
|
|
952
|
+
trailing?: 'chevron' | 'none' | React.ReactNode;
|
|
953
|
+
/**
|
|
954
|
+
* ⋮ menu at the top right. With `href` or `onClick` the title becomes the link or button and
|
|
955
|
+
* its ::after covers the card, so the ⋮ button is never inside it.
|
|
956
|
+
*/
|
|
957
|
+
actions?: ListCardActions;
|
|
958
|
+
href?: string;
|
|
959
|
+
linkComponent?: React.ElementType;
|
|
960
|
+
linkProps?: Record<string, unknown>;
|
|
961
|
+
onClick?: () => void;
|
|
962
|
+
/** Prefix for the `data-slot` of each part (`<slot>-title`, `<slot>-meta1`, …). */
|
|
963
|
+
slot?: string;
|
|
964
|
+
className?: string;
|
|
965
|
+
}
|
|
966
|
+
declare function ListCard({ title, meta, status, caption, leading, value, trailing, actions, href, linkComponent, linkProps, onClick, slot, className, }: ListCardProps): react_jsx_runtime.JSX.Element;
|
|
967
|
+
|
|
859
968
|
declare const dataTableVariants: (props?: ({
|
|
860
969
|
density?: "compact" | "standard" | null | undefined;
|
|
861
970
|
surface?: SurfaceLevel | null | undefined;
|
|
@@ -866,12 +975,20 @@ declare const dataTableRowVariants: (props?: ({
|
|
|
866
975
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
867
976
|
interface DataTableColumn<T> {
|
|
868
977
|
key: string;
|
|
869
|
-
|
|
978
|
+
/** Column name as text. It is also the name of the column's cells for screen readers. */
|
|
979
|
+
header: string;
|
|
980
|
+
/** Hides the header text on screen and keeps it as the accessible name. */
|
|
981
|
+
hideHeader?: boolean;
|
|
870
982
|
width?: string;
|
|
871
983
|
align?: 'left' | 'right' | 'center';
|
|
872
984
|
render?: (row: T) => React.ReactNode;
|
|
873
985
|
tabular?: boolean;
|
|
874
986
|
sortable?: boolean;
|
|
987
|
+
/**
|
|
988
|
+
* Cells of this column wrap onto several lines (at word boundaries) instead of being cut with
|
|
989
|
+
* an ellipsis; the row grows to its tallest cell. Not with `virtual`: virtual rows share one height.
|
|
990
|
+
*/
|
|
991
|
+
wrap?: boolean;
|
|
875
992
|
}
|
|
876
993
|
interface DataTableLinkProps {
|
|
877
994
|
href: string;
|
|
@@ -908,11 +1025,61 @@ interface DataTableSort {
|
|
|
908
1025
|
key: string;
|
|
909
1026
|
dir: 'asc' | 'desc';
|
|
910
1027
|
}
|
|
911
|
-
|
|
1028
|
+
/** One card meta group: up to two values on one line, 12px apart. */
|
|
1029
|
+
type DataTableMobileMetaLine = readonly [React.ReactNode, React.ReactNode?];
|
|
1030
|
+
type DataTableMobileCardName = {
|
|
1031
|
+
title: string | number;
|
|
1032
|
+
/** Accessible name of the card (`listitem`). Defaults to the title text. */
|
|
1033
|
+
ariaLabel?: string;
|
|
1034
|
+
} | {
|
|
1035
|
+
title: React.ReactNode;
|
|
1036
|
+
/** Accessible name of the card (`listitem`). */
|
|
1037
|
+
ariaLabel: string;
|
|
1038
|
+
};
|
|
1039
|
+
/** What one row shows as a card below the table breakpoint. */
|
|
1040
|
+
type DataTableMobileCardContent = DataTableMobileCardName & {
|
|
1041
|
+
leading?: React.ReactNode;
|
|
1042
|
+
/** Up to two meta groups under the title, one line each. */
|
|
1043
|
+
meta?: readonly [DataTableMobileMetaLine, DataTableMobileMetaLine?];
|
|
1044
|
+
/** One status badge at the bottom row's left. */
|
|
1045
|
+
status?: React.ReactNode;
|
|
1046
|
+
/** On the bottom row, after `status` or alone at its left. */
|
|
1047
|
+
date?: React.ReactNode;
|
|
1048
|
+
/** Optional value at the right of the card's top line, before the ⋮ or the chevron. */
|
|
1049
|
+
value?: React.ReactNode;
|
|
1050
|
+
/**
|
|
1051
|
+
* ⋮ menu at the card's top right (a menu sheet below 1024px). `label` names the ⋮ button —
|
|
1052
|
+
* pass the desktop ⋮ label. On a navigating card the chevron moves to the bottom right.
|
|
1053
|
+
* With the table's `rowActions` the card takes that menu instead and this is ignored.
|
|
1054
|
+
*/
|
|
1055
|
+
actions?: ListCardActions;
|
|
1056
|
+
};
|
|
1057
|
+
/** A row's menu: items, or groups with a separator between them. An empty list draws no ⋮. */
|
|
1058
|
+
type DataTableRowActions = readonly ActionMenuItem[] | readonly ActionMenuGroup[];
|
|
1059
|
+
interface DataTableBaseProps<T> extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>, Omit<VariantProps<typeof dataTableVariants>, 'density'> {
|
|
1060
|
+
/**
|
|
1061
|
+
* @deprecated No effect: rows and header look the same for every value. Remove it; it will be
|
|
1062
|
+
* dropped in a breaking release.
|
|
1063
|
+
*/
|
|
1064
|
+
density?: VariantProps<typeof dataTableVariants>['density'];
|
|
912
1065
|
columns: DataTableColumn<T>[];
|
|
913
1066
|
data: T[];
|
|
914
1067
|
keyField: keyof T;
|
|
1068
|
+
/**
|
|
1069
|
+
* Maps a row to its card below the table breakpoint. Navigation, expanding, selection and
|
|
1070
|
+
* the chevron come from the table (`rowHref`, `linkComponent`, `onRowClick`,
|
|
1071
|
+
* `renderExpanded`, `selectable`): the card title becomes the link or button and its ::after
|
|
1072
|
+
* covers the card, so the checkbox and the ⋮ stay beside it, never inside.
|
|
1073
|
+
* With `virtual`, keep it stable (module function or `useCallback`) like `columns`.
|
|
1074
|
+
*/
|
|
1075
|
+
getMobileCardContent: (row: T) => DataTableMobileCardContent;
|
|
915
1076
|
selectable?: boolean;
|
|
1077
|
+
/**
|
|
1078
|
+
* With `selectable`, `false` blocks a row's selection: its checkbox is disabled, it is never
|
|
1079
|
+
* drawn selected or passed to `onSelectionChange`, and select-all counts only the other rows.
|
|
1080
|
+
* Navigating, expanding and the row menu still work.
|
|
1081
|
+
*/
|
|
1082
|
+
isRowSelectable?: (row: T) => boolean;
|
|
916
1083
|
selectedIds?: Set<string>;
|
|
917
1084
|
onSelectionChange?: (ids: Set<string>) => void;
|
|
918
1085
|
/** Unit in the screen-reader selection message — `12명 선택됨`. Defaults to `개`. */
|
|
@@ -925,11 +1092,30 @@ interface DataTableProps<T> extends Omit<React.HTMLAttributes<HTMLDivElement>, '
|
|
|
925
1092
|
*/
|
|
926
1093
|
announceSelection?: boolean;
|
|
927
1094
|
activeRowId?: string;
|
|
928
|
-
onRowContextMenu?: (rowId: string, event: React.MouseEvent) => void;
|
|
929
1095
|
sortBy?: DataTableSort;
|
|
1096
|
+
/**
|
|
1097
|
+
* The order the rows fall back to when the sort is cleared. Clicking its column
|
|
1098
|
+
* flips between its direction and the opposite one, never to a clear that looks
|
|
1099
|
+
* the same. Without `sortBy`, the header and the sort button show this sort.
|
|
1100
|
+
*/
|
|
1101
|
+
defaultSort?: DataTableSort;
|
|
930
1102
|
onSortChange?: (key: string, dir: 'asc' | 'desc' | null) => void;
|
|
931
1103
|
loading?: boolean;
|
|
932
1104
|
emptyState?: React.ReactNode;
|
|
1105
|
+
skeletonRowCount?: number;
|
|
1106
|
+
/**
|
|
1107
|
+
* Background level for the table container. Header, selected rows, loading,
|
|
1108
|
+
* and empty states keep their own state styling.
|
|
1109
|
+
*/
|
|
1110
|
+
surface?: SurfaceLevel;
|
|
1111
|
+
/**
|
|
1112
|
+
* Bottom of the table frame, under the rows or cards in both layouts — a `TablePagination`.
|
|
1113
|
+
* The line above it is drawn only when the footer renders something.
|
|
1114
|
+
*/
|
|
1115
|
+
footer?: React.ReactNode;
|
|
1116
|
+
}
|
|
1117
|
+
/** Rows that navigate, or a long virtual list. No expanded rows. */
|
|
1118
|
+
interface DataTableNavigationProps<T> {
|
|
933
1119
|
rowHref?: (row: T) => string;
|
|
934
1120
|
/**
|
|
935
1121
|
* Renders `rowHref` as a real link — e.g. Next `Link` — instead of
|
|
@@ -944,22 +1130,60 @@ interface DataTableProps<T> extends Omit<React.HTMLAttributes<HTMLDivElement>, '
|
|
|
944
1130
|
* `rowHref` full-page `window.location.assign` — e.g. `router.push`.
|
|
945
1131
|
*/
|
|
946
1132
|
onRowClick?: (row: T, event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>) => void;
|
|
947
|
-
skeletonRowCount?: number;
|
|
948
1133
|
/**
|
|
949
|
-
* Virtual scrolling for long, continuously loaded lists (opt-in).
|
|
950
|
-
* share one fixed height (measured from the first rendered row)
|
|
951
|
-
*
|
|
952
|
-
*
|
|
1134
|
+
* Virtual scrolling for long, continuously loaded lists (opt-in). Table rows must
|
|
1135
|
+
* share one fixed height (measured from the first rendered row); cards are
|
|
1136
|
+
* measured one by one, and unmeasured cards are estimated from the measured
|
|
1137
|
+
* average. Only the visible layout — table or cards — renders rows, and only
|
|
1138
|
+
* those near the viewport; rows are memoized. Works with any scroll container (window or an
|
|
953
1139
|
* app-shell `overflow-y-auto` main). Header "select all" still covers every
|
|
954
|
-
* loaded row. Browser find (Ctrl+F) cannot see rows outside the window.
|
|
1140
|
+
* loaded row that can be selected. Browser find (Ctrl+F) cannot see rows outside the window.
|
|
955
1141
|
*/
|
|
956
1142
|
virtual?: boolean | DataTableVirtualOptions;
|
|
1143
|
+
renderExpanded?: never;
|
|
1144
|
+
getExpandLabel?: never;
|
|
1145
|
+
expandedIds?: never;
|
|
1146
|
+
onExpandedChange?: never;
|
|
1147
|
+
}
|
|
1148
|
+
/**
|
|
1149
|
+
* Rows that expand in place. Not with navigation (`rowHref`, `linkComponent`, `onRowClick`) or
|
|
1150
|
+
* `virtual`: virtual rows share one fixed height.
|
|
1151
|
+
*/
|
|
1152
|
+
interface DataTableExpandProps<T> {
|
|
957
1153
|
/**
|
|
958
|
-
*
|
|
959
|
-
*
|
|
1154
|
+
* Content drawn under the row, full width — below the row from 1024px, inside the card below
|
|
1155
|
+
* it. Giving it turns on expanding: a 32px button column at the table's end, and the card
|
|
1156
|
+
* title as the toggle. Rendered on first open and kept, so closing animates.
|
|
960
1157
|
*/
|
|
961
|
-
|
|
1158
|
+
renderExpanded: (row: T) => React.ReactNode;
|
|
1159
|
+
/** Accessible name of the expand button and of the card title button, e.g. `3번 펼치기`. */
|
|
1160
|
+
getExpandLabel: (row: T) => string;
|
|
1161
|
+
/** Expanded row ids (`keyField` values), several at once. Without it the table keeps the state. */
|
|
1162
|
+
expandedIds?: Set<string>;
|
|
1163
|
+
onExpandedChange?: (ids: Set<string>) => void;
|
|
1164
|
+
rowHref?: never;
|
|
1165
|
+
linkComponent?: never;
|
|
1166
|
+
onRowClick?: never;
|
|
1167
|
+
virtual?: never;
|
|
1168
|
+
}
|
|
1169
|
+
/**
|
|
1170
|
+
* The row menu, one list for the ⋮ column from 1024px, the card ⋮ below it, and a right click
|
|
1171
|
+
* on the row. Not with `onRowContextMenu`: the table opens the right-click menu itself.
|
|
1172
|
+
*/
|
|
1173
|
+
interface DataTableRowActionsProps<T> {
|
|
1174
|
+
/** Items or groups of the row's menu. An empty list draws no ⋮ and keeps the column. */
|
|
1175
|
+
rowActions: (row: T) => DataTableRowActions;
|
|
1176
|
+
/** Accessible name of the row's ⋮ button, e.g. `김지수 더보기`. */
|
|
1177
|
+
getRowActionsLabel: (row: T) => string;
|
|
1178
|
+
onRowContextMenu?: never;
|
|
1179
|
+
}
|
|
1180
|
+
/** No row menu from the table; a right click is the consumer's (`onRowContextMenu`). */
|
|
1181
|
+
interface DataTableOwnContextMenuProps {
|
|
1182
|
+
rowActions?: never;
|
|
1183
|
+
getRowActionsLabel?: never;
|
|
1184
|
+
onRowContextMenu?: (rowId: string, event: React.MouseEvent) => void;
|
|
962
1185
|
}
|
|
1186
|
+
type DataTableProps<T> = DataTableBaseProps<T> & (DataTableNavigationProps<T> | DataTableExpandProps<T>) & (DataTableRowActionsProps<T> | DataTableOwnContextMenuProps);
|
|
963
1187
|
type DataTableComponent = (<T>(props: DataTableProps<T> & React.RefAttributes<HTMLDivElement>) => React.ReactElement | null) & {
|
|
964
1188
|
displayName?: string;
|
|
965
1189
|
};
|
|
@@ -1020,9 +1244,10 @@ interface BulkActionBarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
1020
1244
|
onClear: () => void;
|
|
1021
1245
|
emptyHint?: React.ReactNode;
|
|
1022
1246
|
/**
|
|
1023
|
-
* `floating` (default) — pill stuck to the bottom of the list
|
|
1247
|
+
* `floating` (default) — pill stuck to the bottom of the list.
|
|
1024
1248
|
* `inline` — full-width band stuck to the top, placed where the status line sits
|
|
1025
1249
|
* under the toolbar. Render it BEFORE the list so it comes first in tab order.
|
|
1250
|
+
* Deprecated: `inline` is removed in the next minor.
|
|
1026
1251
|
*/
|
|
1027
1252
|
placement?: "floating" | "inline";
|
|
1028
1253
|
/** Count unit — `12명 선택됨`. Defaults to `개`. */
|
|
@@ -1032,6 +1257,8 @@ interface BulkActionBarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
1032
1257
|
/**
|
|
1033
1258
|
* Inline only: a shorter `summary` (e.g. "모두 선택") swapped in when the band is too
|
|
1034
1259
|
* narrow to show `summary` on one line. Without it, `summary` is clipped, never wrapped.
|
|
1260
|
+
*
|
|
1261
|
+
* @deprecated Only `placement="inline"` uses it; removed together with `inline` in the next minor.
|
|
1035
1262
|
*/
|
|
1036
1263
|
compactSummary?: React.ReactNode;
|
|
1037
1264
|
/**
|
|
@@ -1089,7 +1316,7 @@ interface ConfirmDialogProps {
|
|
|
1089
1316
|
/** Keeps the confirm button disabled (e.g. until the typed count matches). */
|
|
1090
1317
|
confirmDisabled?: boolean;
|
|
1091
1318
|
/**
|
|
1092
|
-
* @deprecated Ignored. AlertDialog stays a centered card below
|
|
1319
|
+
* @deprecated Ignored. AlertDialog stays a centered card below 1024px.
|
|
1093
1320
|
*/
|
|
1094
1321
|
mobilePresentation?: DialogMobilePresentation;
|
|
1095
1322
|
/** Scrim preset; wins over `<html data-scrim>`. Default: the root preset, else `--scrim`. */
|
|
@@ -1097,7 +1324,7 @@ interface ConfirmDialogProps {
|
|
|
1097
1324
|
}
|
|
1098
1325
|
/**
|
|
1099
1326
|
* @deprecated Use AlertDialog. ConfirmDialog is a thin wrapper over it: the surface has role
|
|
1100
|
-
* `alertdialog`, an outside click does not close it, and it stays a centered card below
|
|
1327
|
+
* `alertdialog`, an outside click does not close it, and it stays a centered card below 1024px.
|
|
1101
1328
|
*/
|
|
1102
1329
|
declare function ConfirmDialog({ open, onOpenChange, title, description, tone, confirmLabel, cancelLabel, onConfirm, loading, children, confirmDisabled, scrim, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
|
|
1103
1330
|
|
|
@@ -1176,11 +1403,11 @@ type SheetMotionConfig = {
|
|
|
1176
1403
|
duration?: SheetMotionDuration;
|
|
1177
1404
|
easing?: SheetMotionEasing;
|
|
1178
1405
|
};
|
|
1179
|
-
/** Structured Sheet width from
|
|
1406
|
+
/** Structured Sheet width from 1024px: 480 · 720 · viewport minus `--space-8`. */
|
|
1180
1407
|
type SheetSize = "md" | "lg" | "full";
|
|
1181
1408
|
/**
|
|
1182
1409
|
* Structured Sheet (spec §3.3): a side surface for supporting work without leaving the page. X,
|
|
1183
|
-
* outside click and Escape close, the body scrolls, a bottom sheet below
|
|
1410
|
+
* outside click and Escape close, the body scrolls, a bottom sheet below 1024px (OVERLAY_POLICY.sheet).
|
|
1184
1411
|
*/
|
|
1185
1412
|
interface SheetProps {
|
|
1186
1413
|
open: boolean;
|
|
@@ -1193,9 +1420,9 @@ interface SheetProps {
|
|
|
1193
1420
|
caption?: React.ReactNode;
|
|
1194
1421
|
/** Header controls before the X, e.g. an expand toggle. */
|
|
1195
1422
|
headerActions?: React.ReactNode;
|
|
1196
|
-
/** Edge from
|
|
1423
|
+
/** Edge from 1024px. Default `"right"`. Below 1024px it is a bottom sheet. */
|
|
1197
1424
|
side?: "right" | "left";
|
|
1198
|
-
/** Width from
|
|
1425
|
+
/** Width from 1024px. Default `"md"`. */
|
|
1199
1426
|
size?: SheetSize;
|
|
1200
1427
|
/** Body. Scrolls inside the sheet. */
|
|
1201
1428
|
children: React.ReactNode;
|
|
@@ -1203,7 +1430,7 @@ interface SheetProps {
|
|
|
1203
1430
|
footer?: React.ReactNode;
|
|
1204
1431
|
/** Accessible name of the X. Default '닫기'. */
|
|
1205
1432
|
closeLabel?: string;
|
|
1206
|
-
/** Side panel motion from
|
|
1433
|
+
/** Side panel motion from 1024px (`false`: none). Same as SheetContent `motion`. */
|
|
1207
1434
|
motion?: SheetMotionConfig | false;
|
|
1208
1435
|
/** Scrim preset; wins over `<html data-scrim>`. */
|
|
1209
1436
|
scrim?: OverlayScrim;
|
|
@@ -1223,10 +1450,10 @@ declare function SheetClose({ ...props }: React.ComponentProps<typeof Dialog$1.C
|
|
|
1223
1450
|
declare function SheetContent({ className, children, side, mobileSide, motion, showCloseButton, scrim, style, onOpenAutoFocus, onCloseAutoFocus, ...props }: React.ComponentProps<typeof Dialog$1.Content> & {
|
|
1224
1451
|
/**
|
|
1225
1452
|
* Edge. `"top"` and `"bottom"` are deprecated: the structured Sheet takes `"right"` or `"left"`
|
|
1226
|
-
* from
|
|
1453
|
+
* from 1024px and is a bottom sheet below.
|
|
1227
1454
|
*/
|
|
1228
1455
|
side?: "top" | "right" | "bottom" | "left";
|
|
1229
|
-
/** @deprecated The structured Sheet is a bottom sheet below
|
|
1456
|
+
/** @deprecated The structured Sheet is a bottom sheet below 1024px by rule. */
|
|
1230
1457
|
mobileSide?: "top" | "right" | "bottom" | "left";
|
|
1231
1458
|
motion?: SheetMotionConfig | false;
|
|
1232
1459
|
showCloseButton?: boolean;
|
|
@@ -1288,6 +1515,8 @@ interface ActionSheetItem {
|
|
|
1288
1515
|
onSelect: () => void;
|
|
1289
1516
|
destructive?: boolean;
|
|
1290
1517
|
disabled?: boolean;
|
|
1518
|
+
/** Why the row cannot run now: focusable, runs nothing, keeps the sheet open (see ActionMenuItem). */
|
|
1519
|
+
disabledReason?: string;
|
|
1291
1520
|
}
|
|
1292
1521
|
interface ActionSheetProps {
|
|
1293
1522
|
open: boolean;
|
|
@@ -1300,60 +1529,11 @@ interface ActionSheetProps {
|
|
|
1300
1529
|
closeLabel?: string;
|
|
1301
1530
|
}
|
|
1302
1531
|
/**
|
|
1303
|
-
* @deprecated Use ActionMenu: the same items become a DropdownMenu from
|
|
1532
|
+
* @deprecated Use ActionMenu: the same items become a DropdownMenu from 1024px and this menu sheet
|
|
1304
1533
|
* below, from one trigger.
|
|
1305
1534
|
*/
|
|
1306
1535
|
declare function ActionSheet({ open, onOpenChange, title, description, items, closeLabel, }: ActionSheetProps): react_jsx_runtime.JSX.Element;
|
|
1307
1536
|
|
|
1308
|
-
/** Props an item icon receives: a Lucide icon or any component taking `size` and `strokeWidth`. */
|
|
1309
|
-
type ActionMenuIconProps = {
|
|
1310
|
-
size?: number | string;
|
|
1311
|
-
strokeWidth?: number | string;
|
|
1312
|
-
className?: string;
|
|
1313
|
-
"aria-hidden"?: boolean;
|
|
1314
|
-
};
|
|
1315
|
-
interface ActionMenuItem {
|
|
1316
|
-
id: string;
|
|
1317
|
-
label: string;
|
|
1318
|
-
/** Leading icon. */
|
|
1319
|
-
icon?: React.ComponentType<ActionMenuIconProps>;
|
|
1320
|
-
/** Secondary line under the label (menu sheet only). */
|
|
1321
|
-
description?: string;
|
|
1322
|
-
/** Danger color (DropdownMenuItem `variant="destructive"`, the sheet row's error color). */
|
|
1323
|
-
destructive?: boolean;
|
|
1324
|
-
disabled?: boolean;
|
|
1325
|
-
/** Runs after the menu has closed and focus is back on the trigger. */
|
|
1326
|
-
onSelect: () => void;
|
|
1327
|
-
}
|
|
1328
|
-
interface ActionMenuGroup {
|
|
1329
|
-
id: string;
|
|
1330
|
-
/** Group heading. */
|
|
1331
|
-
label?: string;
|
|
1332
|
-
items: ActionMenuItem[];
|
|
1333
|
-
}
|
|
1334
|
-
interface ActionMenuBaseProps {
|
|
1335
|
-
/** The button that opens the menu, e.g. an IconButton with an `aria-label`. */
|
|
1336
|
-
trigger: React.ReactElement;
|
|
1337
|
-
/** Heading of the menu sheet below 900px (also its accessible name). The dropdown shows none. */
|
|
1338
|
-
title?: string;
|
|
1339
|
-
/** Line under the heading, menu sheet only (from ActionSheet). */
|
|
1340
|
-
description?: string;
|
|
1341
|
-
/** Controlled open state (optional). */
|
|
1342
|
-
open?: boolean;
|
|
1343
|
-
onOpenChange?: (open: boolean) => void;
|
|
1344
|
-
/** Accessible name of the menu sheet's screen-reader-only close button. Default '닫기'. */
|
|
1345
|
-
closeLabel?: string;
|
|
1346
|
-
}
|
|
1347
|
-
type ActionMenuProps = ActionMenuBaseProps & ({
|
|
1348
|
-
items: ActionMenuItem[];
|
|
1349
|
-
groups?: never;
|
|
1350
|
-
} | {
|
|
1351
|
-
/** Items in groups, with a separator between groups. Use instead of `items`. */
|
|
1352
|
-
groups: ActionMenuGroup[];
|
|
1353
|
-
items?: never;
|
|
1354
|
-
});
|
|
1355
|
-
declare function ActionMenu({ trigger, title, description, open: openProp, onOpenChange, closeLabel, items, groups, }: ActionMenuProps): react_jsx_runtime.JSX.Element;
|
|
1356
|
-
|
|
1357
1537
|
declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof Tooltip$1.Provider>): react_jsx_runtime.JSX.Element;
|
|
1358
1538
|
interface TooltipProps extends React.ComponentProps<typeof Tooltip$1.Root> {
|
|
1359
1539
|
/**
|
|
@@ -1438,25 +1618,42 @@ interface TwoTierBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
|
1438
1618
|
declare const TwoTierBadge: React.ForwardRefExoticComponent<TwoTierBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
1439
1619
|
|
|
1440
1620
|
type StatusBadgeStatus = 'active' | 'archived' | 'success' | 'warning' | 'error' | 'info' | 'pending';
|
|
1621
|
+
/** @deprecated Ignored. Badge has one look. */
|
|
1441
1622
|
type StatusBadgeEmphasis = 'subtle' | 'strong';
|
|
1623
|
+
/** @deprecated Ignored. Badge has one size. */
|
|
1442
1624
|
type StatusBadgeSize = 'xs' | 'sm' | 'md';
|
|
1443
1625
|
type SemanticRole = 'error' | 'warning' | 'info' | 'success' | 'neutral';
|
|
1444
1626
|
interface StatusBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
1445
1627
|
status?: StatusBadgeStatus;
|
|
1628
|
+
/** @deprecated Ignored. Badge has one look. */
|
|
1446
1629
|
emphasis?: StatusBadgeEmphasis;
|
|
1630
|
+
/** @deprecated Ignored. Badge has one size. */
|
|
1447
1631
|
size?: StatusBadgeSize;
|
|
1632
|
+
/** @deprecated Ignored. Badge has no dot; use StatusDot for a page's single current state. */
|
|
1448
1633
|
showDot?: boolean;
|
|
1634
|
+
/** @deprecated Ignored. Use StatusDot `pulse` for a live state. */
|
|
1449
1635
|
pulse?: boolean;
|
|
1450
1636
|
}
|
|
1451
1637
|
/**
|
|
1452
|
-
*
|
|
1453
|
-
*
|
|
1454
|
-
*
|
|
1455
|
-
* semantic tinted fill — reserve for must-notice cases. The text label is
|
|
1456
|
-
* mandatory (WCAG 1.4.1); terminal/neutral states use a hollow ring dot.
|
|
1638
|
+
* @deprecated Use Badge (or StatusDot for a page's single current state). StatusBadge draws a
|
|
1639
|
+
* Badge: `status` maps to `tone` (active·info → info, pending·warning → warning, success →
|
|
1640
|
+
* success, error → error, archived → neutral). `emphasis`, `size`, `showDot`, `pulse` are ignored.
|
|
1457
1641
|
*/
|
|
1458
1642
|
declare const StatusBadge: React.ForwardRefExoticComponent<StatusBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
1459
1643
|
|
|
1644
|
+
type StatusDotTone = 'error' | 'warning' | 'info' | 'success' | 'neutral';
|
|
1645
|
+
interface StatusDotProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'> {
|
|
1646
|
+
tone: StatusDotTone;
|
|
1647
|
+
label: React.ReactNode;
|
|
1648
|
+
/** Live (in-progress) state only. Stops under `prefers-reduced-motion`. */
|
|
1649
|
+
pulse?: boolean;
|
|
1650
|
+
}
|
|
1651
|
+
/**
|
|
1652
|
+
* A page's single current state: a 6px dot in the tone's color and a label in body color, no
|
|
1653
|
+
* container. Header status and the current step of a step list. Repeated rows use Badge.
|
|
1654
|
+
*/
|
|
1655
|
+
declare const StatusDot: React.ForwardRefExoticComponent<StatusDotProps & React.RefAttributes<HTMLSpanElement>>;
|
|
1656
|
+
|
|
1460
1657
|
declare const notificationBadgeVariants: (props?: ({
|
|
1461
1658
|
size?: "md" | "sm" | null | undefined;
|
|
1462
1659
|
placement?: "none" | "inline" | "corner" | null | undefined;
|
|
@@ -1495,6 +1692,7 @@ declare const emptyStateBaseVariants: (props?: ({
|
|
|
1495
1692
|
bordered?: boolean | null | undefined;
|
|
1496
1693
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1497
1694
|
type EmptyStateTone = "neutral" | "muted" | "raised";
|
|
1695
|
+
type EmptyStateLayout = "inline" | "page";
|
|
1498
1696
|
interface EmptyStateVariantOptions extends VariantProps<typeof emptyStateBaseVariants> {
|
|
1499
1697
|
tone?: EmptyStateTone;
|
|
1500
1698
|
surface?: SurfaceLevel;
|
|
@@ -1507,6 +1705,13 @@ declare const emptyStateIconVariants: (props?: ({
|
|
|
1507
1705
|
type EmptyStateSize = NonNullable<VariantProps<typeof emptyStateBaseVariants>["size"]>;
|
|
1508
1706
|
interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof emptyStateBaseVariants> {
|
|
1509
1707
|
tone?: EmptyStateTone;
|
|
1708
|
+
/**
|
|
1709
|
+
* `inline` (default) takes its content height. `page` stands in for a whole page body: it
|
|
1710
|
+
* fills the parent's width, and at >= 768px grows to the free height of the nearest scroll
|
|
1711
|
+
* container and centers its content there. Below 768px it stays top-aligned with a
|
|
1712
|
+
* `--space-12` top gap.
|
|
1713
|
+
*/
|
|
1714
|
+
layout?: EmptyStateLayout;
|
|
1510
1715
|
/**
|
|
1511
1716
|
* Background level for the empty-state container. When provided, this
|
|
1512
1717
|
* overrides the legacy `tone` background mapping.
|
|
@@ -1574,28 +1779,17 @@ interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
|
1574
1779
|
declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<HTMLSpanElement>>;
|
|
1575
1780
|
|
|
1576
1781
|
declare const iconButtonCva: (props?: ({
|
|
1577
|
-
size?: "md" | "sm" | "lg" | null | undefined;
|
|
1782
|
+
size?: "md" | "xs" | "sm" | "lg" | "xl" | null | undefined;
|
|
1578
1783
|
pressed?: boolean | null | undefined;
|
|
1579
1784
|
appearance?: "filled" | "outline" | "ghost" | null | undefined;
|
|
1580
1785
|
tone?: "primary" | "neutral" | "danger" | null | undefined;
|
|
1581
|
-
variant?: "outline" | "ghost" | "danger" | "subtle" | null | undefined;
|
|
1582
1786
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1583
|
-
type
|
|
1584
|
-
type
|
|
1585
|
-
type IconButtonVariantsOptions = (IconButtonCvaOptions & {
|
|
1586
|
-
appearance?: null;
|
|
1587
|
-
tone?: null;
|
|
1588
|
-
}) | (Omit<IconButtonCvaOptions, "size"> & {
|
|
1589
|
-
appearance?: ActionAppearance | null;
|
|
1590
|
-
tone?: ActionTone | null;
|
|
1591
|
-
size?: IconButtonAxisSize | null;
|
|
1592
|
-
});
|
|
1787
|
+
type IconButtonSize = NonNullable<VariantProps<typeof iconButtonCva>["size"]>;
|
|
1788
|
+
type IconButtonVariantsOptions = NonNullable<Parameters<typeof iconButtonCva>[0]>;
|
|
1593
1789
|
declare function iconButtonVariants(options?: IconButtonVariantsOptions): string;
|
|
1594
1790
|
declare const iconButtonBadgeVariants: (props?: ({
|
|
1595
1791
|
tone?: "error" | "info" | null | undefined;
|
|
1596
1792
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1597
|
-
type IconButtonVariant = NonNullable<VariantProps<typeof iconButtonCva>["variant"]>;
|
|
1598
|
-
type IconButtonSize = NonNullable<VariantProps<typeof iconButtonCva>["size"]>;
|
|
1599
1793
|
type IconButtonBadgeTone = NonNullable<VariantProps<typeof iconButtonBadgeVariants>["tone"]>;
|
|
1600
1794
|
type IconButtonIcon = React.ComponentType<React.SVGProps<SVGSVGElement> & {
|
|
1601
1795
|
size?: number | string;
|
|
@@ -1612,34 +1806,26 @@ type IconButtonOptionalName = {
|
|
|
1612
1806
|
"aria-label"?: string;
|
|
1613
1807
|
"aria-labelledby"?: string;
|
|
1614
1808
|
};
|
|
1809
|
+
type IconButtonTextEnd = {
|
|
1810
|
+
iconPosition?: "start" | "end";
|
|
1811
|
+
menuIndicator?: false;
|
|
1812
|
+
} | {
|
|
1813
|
+
iconPosition?: "start";
|
|
1814
|
+
menuIndicator: true;
|
|
1815
|
+
};
|
|
1615
1816
|
type IconButtonContent = (IconButtonAccessibleName & {
|
|
1616
1817
|
label?: never;
|
|
1617
1818
|
children?: never;
|
|
1819
|
+
menuIndicator?: never;
|
|
1618
1820
|
}) | (IconButtonOptionalName & {
|
|
1619
1821
|
label: React.ReactNode;
|
|
1620
1822
|
children?: never;
|
|
1621
|
-
}) | (IconButtonOptionalName & {
|
|
1823
|
+
} & IconButtonTextEnd) | (IconButtonOptionalName & {
|
|
1622
1824
|
children: React.ReactNode;
|
|
1623
1825
|
label?: never;
|
|
1624
|
-
});
|
|
1625
|
-
type IconButtonStyleProps =
|
|
1626
|
-
/**
|
|
1627
|
-
* @deprecated Use `appearance` × `tone` instead. Removed in 0.20.
|
|
1628
|
-
*/
|
|
1629
|
-
variant?: never;
|
|
1826
|
+
} & IconButtonTextEnd);
|
|
1827
|
+
type IconButtonStyleProps = GhostDefaultActionStyle & {
|
|
1630
1828
|
/** Button's scale: `xs` 28 · `sm` 30 · `md` 32 · `lg` 36 · `xl` 40. */
|
|
1631
|
-
size?: IconButtonAxisSize | null;
|
|
1632
|
-
}) | {
|
|
1633
|
-
/**
|
|
1634
|
-
* @deprecated Use `appearance` × `tone`: `ghost` → ghost + neutral · `outline` →
|
|
1635
|
-
* outline + neutral · `subtle` → filled + neutral · `danger` → filled + danger
|
|
1636
|
-
* (solid red; `danger` keeps its light red until removal). When moving to the new axes,
|
|
1637
|
-
* `size` follows Button's scale: `sm` → `xs`, `lg` → `xl` (`md` stays). Removed in 0.20.
|
|
1638
|
-
*/
|
|
1639
|
-
variant?: IconButtonVariant | null;
|
|
1640
|
-
appearance?: never;
|
|
1641
|
-
tone?: never;
|
|
1642
|
-
/** Legacy scale without `appearance`/`tone`: `sm` 28 · `md` 32 · `lg` 40. */
|
|
1643
1829
|
size?: IconButtonSize | null;
|
|
1644
1830
|
};
|
|
1645
1831
|
type IconButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "aria-label" | "aria-labelledby" | "children" | "color"> & IconButtonStyleProps & IconButtonContent & {
|
|
@@ -1649,6 +1835,13 @@ type IconButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "aria
|
|
|
1649
1835
|
badgeTone?: IconButtonBadgeTone;
|
|
1650
1836
|
/** Icon side when the button has text. */
|
|
1651
1837
|
iconPosition?: "start" | "end";
|
|
1838
|
+
/** Like Button: the spinner takes the icon's place and the button is disabled. */
|
|
1839
|
+
loading?: boolean;
|
|
1840
|
+
/**
|
|
1841
|
+
* Trailing ▾ for a menu trigger, with text and a start icon only. The trigger (DropdownMenu
|
|
1842
|
+
* etc.) supplies `aria-haspopup`.
|
|
1843
|
+
*/
|
|
1844
|
+
menuIndicator?: boolean;
|
|
1652
1845
|
};
|
|
1653
1846
|
declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
1654
1847
|
|
|
@@ -1715,6 +1908,43 @@ interface PageSizeSelectProps {
|
|
|
1715
1908
|
*/
|
|
1716
1909
|
declare function PageSizeSelect({ value, onChange, options, label, unit, size, disabled, id, 'aria-label': ariaLabel, className, }: PageSizeSelectProps): react_jsx_runtime.JSX.Element;
|
|
1717
1910
|
|
|
1911
|
+
declare const TABLE_PAGE_SIZE_OPTIONS: readonly [20, 50, 100];
|
|
1912
|
+
interface TablePaginationProps {
|
|
1913
|
+
pageSize: number;
|
|
1914
|
+
/** The caller sends the list back to the first page when the page size changes. */
|
|
1915
|
+
onPageSizeChange: (pageSize: number) => void;
|
|
1916
|
+
/** Default `TABLE_PAGE_SIZE_OPTIONS` (20, 50, 100). */
|
|
1917
|
+
pageSizeOptions?: readonly number[];
|
|
1918
|
+
/** First row number on this page, from 1. 0 when there are no rows. */
|
|
1919
|
+
rangeStart: number;
|
|
1920
|
+
/** Last row number on this page. */
|
|
1921
|
+
rangeEnd: number;
|
|
1922
|
+
/** Total count. Leave it out when the API has none: only the range shows. */
|
|
1923
|
+
total?: number;
|
|
1924
|
+
/** Unit after the total — `명` for people. Default `개`. */
|
|
1925
|
+
unit?: string;
|
|
1926
|
+
hasPrev: boolean;
|
|
1927
|
+
hasNext: boolean;
|
|
1928
|
+
onPrev: () => void;
|
|
1929
|
+
onNext: () => void;
|
|
1930
|
+
/** While the next page loads, ◀ ▶ are disabled. */
|
|
1931
|
+
loading?: boolean;
|
|
1932
|
+
'aria-label'?: string;
|
|
1933
|
+
}
|
|
1934
|
+
type TablePaginationVisibility = Pick<TablePaginationProps, 'rangeEnd' | 'total' | 'hasPrev' | 'hasNext' | 'pageSizeOptions'>;
|
|
1935
|
+
/**
|
|
1936
|
+
* Hide the panel when there are no rows, or when everything fits in the smallest choice
|
|
1937
|
+
* (nothing to pick). Without `total`, the first page with no next page decides by its row count.
|
|
1938
|
+
*/
|
|
1939
|
+
declare function shouldHideTablePagination({ rangeEnd, total, hasPrev, hasNext, pageSizeOptions, }: TablePaginationVisibility): boolean;
|
|
1940
|
+
/**
|
|
1941
|
+
* Page panel at the bottom of a table — page size on the left, the range (`1–100 / 총 N개`)
|
|
1942
|
+
* and ◀ ▶ on the right. Put it in `DataTable`'s `footer`, which draws the line above it.
|
|
1943
|
+
* Below 1024px the `페이지당` label hides (the select keeps its name), and below 400px of
|
|
1944
|
+
* panel width the total hides. Both are CSS, so nothing flashes on hydration or paging.
|
|
1945
|
+
*/
|
|
1946
|
+
declare function TablePagination({ pageSize, onPageSizeChange, pageSizeOptions, rangeStart, rangeEnd, total, unit, hasPrev, hasNext, onPrev, onNext, loading, 'aria-label': ariaLabel, }: TablePaginationProps): react_jsx_runtime.JSX.Element | null;
|
|
1947
|
+
|
|
1718
1948
|
declare const modeToggleVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
1719
1949
|
declare const modeToggleItemVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
1720
1950
|
interface ModeToggleOption<T extends string> {
|
|
@@ -1729,7 +1959,7 @@ interface ModeToggleProps<T extends string> extends Omit<React.HTMLAttributes<HT
|
|
|
1729
1959
|
onChange: (value: T) => void;
|
|
1730
1960
|
itemClassName?: string;
|
|
1731
1961
|
}
|
|
1732
|
-
declare function ModeToggle<T extends string>({ className, itemClassName, options, value, onChange, ...props }: ModeToggleProps<T>): react_jsx_runtime.JSX.Element;
|
|
1962
|
+
declare function ModeToggle<T extends string>({ className, itemClassName, options, value, onChange, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, ...props }: ModeToggleProps<T>): react_jsx_runtime.JSX.Element;
|
|
1733
1963
|
|
|
1734
1964
|
declare const actionFooterVariants: (props?: ({
|
|
1735
1965
|
position?: "fixed" | "static" | "sticky" | null | undefined;
|
|
@@ -1742,16 +1972,15 @@ interface ActionFooterStatus {
|
|
|
1742
1972
|
kind: 'saving' | 'saved' | 'error';
|
|
1743
1973
|
lastSavedAt?: Date;
|
|
1744
1974
|
}
|
|
1745
|
-
|
|
1975
|
+
type ActionFooterAction = FilledDefaultActionStyle & {
|
|
1746
1976
|
id?: string;
|
|
1747
1977
|
label: string;
|
|
1748
|
-
variant?: ButtonVariant;
|
|
1749
1978
|
onClick: () => void;
|
|
1750
1979
|
disabled?: boolean;
|
|
1751
1980
|
loading?: boolean;
|
|
1752
1981
|
permission?: string;
|
|
1753
1982
|
leadingIcon?: LucideIcon;
|
|
1754
|
-
}
|
|
1983
|
+
};
|
|
1755
1984
|
interface ActionFooterProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>, VariantProps<typeof actionFooterVariants> {
|
|
1756
1985
|
status?: ActionFooterStatus;
|
|
1757
1986
|
actions: ActionFooterAction[];
|
|
@@ -1887,11 +2116,11 @@ declare const checkboxBoxVariants: (props?: ({
|
|
|
1887
2116
|
size?: "md" | "sm" | null | undefined;
|
|
1888
2117
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1889
2118
|
declare const checkboxGroupItemVariants: (props?: ({
|
|
1890
|
-
appearance?: "
|
|
2119
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1891
2120
|
density?: "compact" | "comfortable" | null | undefined;
|
|
1892
2121
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1893
2122
|
declare const checkboxGroupBoxVariants: (props?: ({
|
|
1894
|
-
appearance?: "
|
|
2123
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1895
2124
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1896
2125
|
type CheckboxSize = NonNullable<VariantProps<typeof checkboxBoxVariants>["size"]>;
|
|
1897
2126
|
type CheckboxCheckedState = React.ComponentProps<typeof Checkbox$1.Root>["checked"];
|
|
@@ -1900,6 +2129,7 @@ type CheckboxGroupDensity = NonNullable<VariantProps<typeof checkboxGroupItemVar
|
|
|
1900
2129
|
type CheckboxGroupContextValue = {
|
|
1901
2130
|
appearance: CheckboxGroupAppearance;
|
|
1902
2131
|
density: CheckboxGroupDensity;
|
|
2132
|
+
orientation?: "vertical" | "horizontal";
|
|
1903
2133
|
disabled?: boolean;
|
|
1904
2134
|
name?: string;
|
|
1905
2135
|
selectedValues: Set<string>;
|
|
@@ -1916,7 +2146,7 @@ interface CheckboxProps extends Omit<React.ComponentPropsWithoutRef<typeof Check
|
|
|
1916
2146
|
declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLButtonElement>>;
|
|
1917
2147
|
|
|
1918
2148
|
declare const checkboxGroupVariants: (props?: ({
|
|
1919
|
-
appearance?: "
|
|
2149
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1920
2150
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
1921
2151
|
columns?: "one" | "two" | "three" | null | undefined;
|
|
1922
2152
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
@@ -1937,16 +2167,16 @@ interface CheckboxGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
|
1937
2167
|
declare const CheckboxGroup: React.ForwardRefExoticComponent<CheckboxGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
1938
2168
|
|
|
1939
2169
|
declare const radioGroupVariants: (props?: ({
|
|
1940
|
-
appearance?: "
|
|
2170
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1941
2171
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
1942
2172
|
columns?: "one" | "two" | "three" | null | undefined;
|
|
1943
2173
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1944
2174
|
declare const radioVariants: (props?: ({
|
|
1945
|
-
appearance?: "
|
|
2175
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1946
2176
|
density?: "compact" | "comfortable" | null | undefined;
|
|
1947
2177
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1948
2178
|
declare const radioControlVariants: (props?: ({
|
|
1949
|
-
appearance?: "
|
|
2179
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1950
2180
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1951
2181
|
type RadioGroupAppearance = NonNullable<VariantProps<typeof radioGroupVariants>["appearance"]>;
|
|
1952
2182
|
type RadioGroupColumns = NonNullable<VariantProps<typeof radioGroupVariants>["columns"]>;
|
|
@@ -2038,11 +2268,11 @@ declare function TreeView<T extends TreeNode>({ nodes, selectedId, selectionAria
|
|
|
2038
2268
|
/**
|
|
2039
2269
|
* OLUN 브랜드 로고.
|
|
2040
2270
|
*
|
|
2041
|
-
* - symbol: O
|
|
2042
|
-
* - wordmark:
|
|
2043
|
-
* -
|
|
2271
|
+
* - symbol: O 링 + 우하단 accent-pop 궤도 점 (32px 초과/이하 두 광학 비율)
|
|
2272
|
+
* - wordmark: Montserrat 700 윤곽 `OLUN` + 단독일 때 accent-pop 마침표
|
|
2273
|
+
* - MASTER: symbol과 함께 쓰면 wordmark의 "."를 뺀다. 궤도 점이 마침표를 맡는다(점 두 개 경쟁 방지).
|
|
2044
2274
|
*
|
|
2045
|
-
*
|
|
2275
|
+
* 기하는 `@olundot/tokens/brand`의 정본 데이터(scripts/brand/build-brand-svg.mjs가 생성)에서만 온다.
|
|
2046
2276
|
*/
|
|
2047
2277
|
interface OlunSymbolProps {
|
|
2048
2278
|
/** 심볼 크기 px (기본 28) */
|
|
@@ -2051,9 +2281,15 @@ interface OlunSymbolProps {
|
|
|
2051
2281
|
}
|
|
2052
2282
|
declare function OlunSymbol({ size, className }: OlunSymbolProps): react_jsx_runtime.JSX.Element;
|
|
2053
2283
|
interface OlunLogoProps {
|
|
2054
|
-
/**
|
|
2284
|
+
/**
|
|
2285
|
+
* MASTER 크기. 심볼 240 상자 기준 px (기본 28).
|
|
2286
|
+
* 워드마크와 간격은 고정 비율로 함께 커진다. 32px 이하는 아이콘 비율 심볼을 쓴다.
|
|
2287
|
+
*/
|
|
2055
2288
|
symbolSize?: number;
|
|
2056
|
-
/**
|
|
2289
|
+
/**
|
|
2290
|
+
* 워드마크만 쓸 때(`showSymbol={false}`) 글자 크기 px (기본 18).
|
|
2291
|
+
* MASTER에서는 쓰지 않는다. MASTER 크기는 `symbolSize` 하나로 정한다.
|
|
2292
|
+
*/
|
|
2057
2293
|
fontSize?: number;
|
|
2058
2294
|
/** 심볼 표시 여부 (기본 true) */
|
|
2059
2295
|
showSymbol?: boolean;
|
|
@@ -2084,4 +2320,4 @@ interface OrganizationLogoProps extends Omit<SVGProps<SVGSVGElement>, "width" |
|
|
|
2084
2320
|
}
|
|
2085
2321
|
declare function OrganizationLogo({ organization, size, className, style, role, "aria-label": ariaLabel, "aria-hidden": ariaHidden, ...props }: OrganizationLogoProps): react_jsx_runtime.JSX.Element;
|
|
2086
2322
|
|
|
2087
|
-
export { ActionFooter, type ActionFooterAction, type ActionFooterProps, type ActionFooterStatus, ActionMenu, type ActionMenuGroup, type ActionMenuItem, type ActionMenuProps, ActionSheet, type ActionSheetIconProps, type ActionSheetItem, type ActionSheetProps, Alert, AlertDialog, type AlertDialogProps, type AlertDialogTone, type AlertEmphasis, type AlertProps, type AlertVariant, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, Badge, type BadgeProps, type BadgeTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, BulkActionBar, type BulkActionBarAction, type BulkActionBarProps, Button, type ButtonProps, type ButtonSize,
|
|
2323
|
+
export { ActionFooter, type ActionFooterAction, type ActionFooterProps, type ActionFooterStatus, ActionMenu, type ActionMenuGroup, type ActionMenuItem, type ActionMenuProps, ActionSheet, type ActionSheetIconProps, type ActionSheetItem, type ActionSheetProps, Alert, AlertDialog, type AlertDialogProps, type AlertDialogTone, type AlertEmphasis, type AlertMarker, type AlertProps, type AlertVariant, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, Badge, type BadgeProps, type BadgeTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, BulkActionBar, type BulkActionBarAction, type BulkActionBarProps, Button, type ButtonProps, type ButtonSize, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardProse, CardTitle, type CardVariant, type CardVariantOptions, Checkbox, type CheckboxCheckedState, CheckboxGroup, type CheckboxGroupAppearance, type CheckboxGroupColumns, CheckboxGroupContext, type CheckboxGroupContextValue, type CheckboxGroupDensity, type CheckboxGroupOrientation, type CheckboxGroupProps, type CheckboxProps, type CheckboxSize, Chip, type ChipProps, type ChipSize, type ChipTone, type ChipVariant, ConfirmDialog, type ConfirmDialogProps, ContextMenu, type ContextMenuPosition, type ContextMenuProps, CopyButton, type CopyButtonProps, DataLayout, type DataLayoutProps, DataTable, type DataTableColumn, type DataTableLinkProps, type DataTableMobileCardContent, type DataTableMobileMetaLine, type DataTableProps, type DataTableRowActions, type DataTableSort, type DataTableVirtualHandle, type DataTableVirtualOptions, type DataTableVirtualRange, DetailLayout, type DetailLayoutProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogEyebrow, DialogFooter, DialogHeader, type DialogMobilePresentation, DialogOverlay, DialogPortal, type DialogProps, DialogRawContent, type DialogSize, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateLayout, type EmptyStateProps, type EmptyStateSize, type EmptyStateTone, type EmptyStateVariantOptions, ErrorState, type ErrorStateProps, FileUploadZone, type FileUploadZoneProps, FilterToolbar, type FilterToolbarCollapseBelow, type FilterToolbarProps, FormField, type FormFieldProps, type FormFieldRenderProps, FormLayout, type FormLayoutProps, type FormLayoutSection, FormModal, type FormModalProps, IconButton, type IconButtonBadgeTone, type IconButtonProps, type IconButtonSize, InfoModal, type InfoModalProps, InlineAlert, type InlineAlertProps, Input, type InputProps, type InputSize, type InputSizeLegacy, type InputState, Label, type LabelProps, ListCard, type ListCardActions, type ListCardProps, ModeToggle, type ModeToggleOption, type ModeToggleProps, NotificationBadge, type NotificationBadgePlacement, type NotificationBadgeProps, type NotificationBadgeSize, OTPField, type OTPFieldProps, type OTPFieldSize, OlunLogo, OlunSymbol, type OlunTheme, type OlunThemeDuration, type OlunThemeState, OrganizationLogo, type OrganizationLogoId, type OrganizationLogoProps, type OverlayScrim, PageHeader, type PageHeaderProps, PageSizeSelect, type PageSizeSelectProps, type PageSizeSelectSize, Pagination, type PaginationProps, type PaginationSize, PermissionContext, type PermissionEvaluator, type PermissionFallback, PermissionGuard, type PermissionGuardProps, PermissionProvider, type PermissionProviderProps, type PermissionScope, type PermissionState, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, Progress, type ProgressProps, type ProgressStatus, Radio, RadioGroup, type RadioGroupAppearance, type RadioGroupColumns, type RadioGroupDensity, type RadioGroupOrientation, type RadioGroupProps, type RadioProps, ScrollArea, ScrollBar, SearchField, type SearchFieldProps, type SearchFieldSize, Select, type SelectAppearance, type SelectOption, type SelectProps, type SelectSize, type SelectState, type SelectVariant, type SemanticRole, Separator, type SetOlunThemeOptions, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetDrawer, type SheetDrawerProps, SheetFooter, SheetHeader, type SheetMotionConfig, type SheetMotionDuration, type SheetMotionEasing, type SheetMotionType, type SheetProps, type SheetSize, SheetTitle, SheetTrigger, Skeleton, type SkeletonProps, SkeletonRow, type SkeletonRowColumn, type SkeletonRowProps, SkeletonText, type SkeletonTextProps, Spinner, type SpinnerProps, StatusBadge, type StatusBadgeEmphasis, type StatusBadgeProps, type StatusBadgeSize, type StatusBadgeStatus, StatusDot, type StatusDotProps, type StatusDotTone, type SurfaceLevel, Switch, type SwitchProps, TABLE_PAGE_SIZE_OPTIONS, type TabItem, TablePagination, type TablePaginationProps, type TablePaginationVisibility, Tabs, TabsContent, type TabsProps, type TabsVariant, Textarea, type TextareaProps, type TextareaSize, type TextareaSizeLegacy, type TextareaState, ThemeFab, type ThemeFabProps, ThemeToggle, Toast, type ToastAction, type ToastItem, type ToastOptions, ToastProvider, ToastRoot, type ToastVariant, ToastViewport, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TreeItemRowVariantProps, type TreeItemState, type TreeNode, TreeView, type TreeViewProps, TwoTierBadge, type TwoTierBadgeEmphasis, type TwoTierBadgeProps, type TwoTierBadgeSize, type TwoTierBadgeTone, type UseOlunThemeValue, WizardLayout, type WizardLayoutProps, type WizardStep, type WizardStepState, actionFooterStatusVariants, actionFooterVariants, buttonVariants, cardVariants, checkboxBoxVariants, checkboxFieldVariants, checkboxGroupBoxVariants, checkboxGroupItemVariants, checkboxGroupVariants, checkboxRootVariants, checkboxVariants, chipCountVariants, chipVariants, cn, dataTableRowVariants, dataTableVariants, emptyStateIconVariants, emptyStateVariants, errorStateVariants, evaluatePermission, fileUploadIconVariants, fileUploadZoneVariants, formFieldControlStackClassName, formFieldDescriptionClassName, formFieldErrorClassName, formFieldLabelClassName, formFieldRequiredClassName, formFieldVariants, getOlunThemeState, getToastDuration, iconButtonBadgeVariants, iconButtonVariants, inputMessageVariants, inputVariants, limitToasts, modeToggleItemVariants, modeToggleVariants, notificationBadgeVariants, otpCellVariants, otpFieldGroupVariants, otpFieldMessageVariants, otpFieldVariants, paginationControlVariants, paginationVariants, radioControlVariants, radioGroupVariants, radioVariants, searchFieldInputVariants, searchFieldVariants, selectMessageVariants, selectVariants, setOlunTheme, shouldHideTablePagination, skeletonVariants, spinnerVariants, tabsBadgeVariants, tabsListVariants, tabsRootVariants, tabsTriggerVariants, textareaMessageVariants, textareaVariants, toast, toastVariants, toastViewportVariants, treeItemRowVariants, treeViewVariants, useOlunTheme, usePermission };
|