@olundot/ui 0.20.0-next.1 → 0.20.0-next.11
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 +278 -0
- package/dist/index.d.ts +433 -202
- package/dist/index.js +4137 -2668
- 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
|
};
|
|
@@ -1014,24 +1238,23 @@ interface BulkActionBarAction {
|
|
|
1014
1238
|
/** Disabled reason tooltip. */
|
|
1015
1239
|
title?: string;
|
|
1016
1240
|
}
|
|
1017
|
-
interface
|
|
1241
|
+
interface BulkActionBarBaseProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1018
1242
|
count: number;
|
|
1019
1243
|
actions: BulkActionBarAction[];
|
|
1020
1244
|
onClear: () => void;
|
|
1021
1245
|
emptyHint?: React.ReactNode;
|
|
1022
|
-
/**
|
|
1023
|
-
* `floating` (default) — pill stuck to the bottom of the list, as before.
|
|
1024
|
-
* `inline` — full-width band stuck to the top, placed where the status line sits
|
|
1025
|
-
* under the toolbar. Render it BEFORE the list so it comes first in tab order.
|
|
1026
|
-
*/
|
|
1027
|
-
placement?: "floating" | "inline";
|
|
1028
1246
|
/** Count unit — `12명 선택됨`. Defaults to `개`. */
|
|
1029
1247
|
unit?: string;
|
|
1030
|
-
/**
|
|
1248
|
+
/**
|
|
1249
|
+
* Under the count in the floating card, next to it inline — e.g. an "이 조건의 3,214명
|
|
1250
|
+
* 모두 선택" link or a cap notice. The card wraps it at full width, never clips it.
|
|
1251
|
+
*/
|
|
1031
1252
|
summary?: React.ReactNode;
|
|
1032
1253
|
/**
|
|
1033
1254
|
* Inline only: a shorter `summary` (e.g. "모두 선택") swapped in when the band is too
|
|
1034
1255
|
* narrow to show `summary` on one line. Without it, `summary` is clipped, never wrapped.
|
|
1256
|
+
*
|
|
1257
|
+
* @deprecated Only `placement="inline"` uses it; removed together with `inline` in the next minor.
|
|
1035
1258
|
*/
|
|
1036
1259
|
compactSummary?: React.ReactNode;
|
|
1037
1260
|
/**
|
|
@@ -1039,28 +1262,44 @@ interface BulkActionBarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
1039
1262
|
* Takes precedence over `emptyHint`; with neither, the bar hides at count 0.
|
|
1040
1263
|
*/
|
|
1041
1264
|
idleContent?: React.ReactNode;
|
|
1265
|
+
}
|
|
1266
|
+
type BulkActionBarProps = BulkActionBarBaseProps & ({
|
|
1267
|
+
/** `floating` (default) — card stuck to the bottom of the list. */
|
|
1268
|
+
placement?: "floating";
|
|
1269
|
+
/** Not taken by the floating card: edit-mode controls go at the right end of the toolbar. */
|
|
1270
|
+
trailing?: never;
|
|
1271
|
+
} | {
|
|
1272
|
+
/**
|
|
1273
|
+
* `inline` — full-width band stuck to the top, placed where the status line sits
|
|
1274
|
+
* under the toolbar. Render it BEFORE the list so it comes first in tab order.
|
|
1275
|
+
* Deprecated: `inline` is removed in the next minor.
|
|
1276
|
+
*/
|
|
1277
|
+
placement: "inline";
|
|
1042
1278
|
/**
|
|
1043
|
-
*
|
|
1044
|
-
* sits at the right end, outside the `role="status"` region, so it is
|
|
1045
|
-
* whenever `idleContent` changes.
|
|
1279
|
+
* Inline only: after the clear (✕) button — e.g. an edit-mode "완료" button. On the
|
|
1280
|
+
* idle line it sits at the right end, outside the `role="status"` region, so it is
|
|
1281
|
+
* not re-read whenever `idleContent` changes.
|
|
1046
1282
|
*/
|
|
1047
1283
|
trailing?: React.ReactNode;
|
|
1048
|
-
}
|
|
1284
|
+
});
|
|
1049
1285
|
/**
|
|
1050
1286
|
* OLUN BulkActionBar — multi-select table/list actions.
|
|
1051
1287
|
*
|
|
1052
|
-
* placement="floating" (default) is the bottom
|
|
1053
|
-
*
|
|
1054
|
-
*
|
|
1055
|
-
*
|
|
1056
|
-
*
|
|
1057
|
-
*
|
|
1058
|
-
*
|
|
1288
|
+
* placement="floating" (default) is a card at the bottom of the list: the count
|
|
1289
|
+
* with the clear (✕) button on its right, `summary` under it at full width, then
|
|
1290
|
+
* the actions as outline sm Buttons aligned right, wrapping onto more lines when
|
|
1291
|
+
* they do not fit. `variant: "destructive"` is outline danger. The card is
|
|
1292
|
+
* min(360px, its slot − 32px) wide; while it is mounted the document root carries
|
|
1293
|
+
* `--olun-bulk-bar-offset` (its height + bottom gap) for toasts to clear it.
|
|
1294
|
+
* DOM order stays count → actions → ✕. It takes no `trailing`.
|
|
1295
|
+
*
|
|
1296
|
+
* placement="inline" (deprecated) is a top-sticky band that replaces the status
|
|
1297
|
+
* line under the toolbar, so it comes before the rows in tab order. The band and
|
|
1298
|
+
* the idle line are one 40px line: a long `summary` is clipped or swapped for
|
|
1299
|
+
* `compactSummary`, never wrapped. Its actions are borderless text/icon buttons
|
|
1300
|
+
* between hairline dividers; `trailing` follows the clear button.
|
|
1059
1301
|
*
|
|
1060
|
-
*
|
|
1061
|
-
* hairline dividers — not filled Button components. Destructive actions read as
|
|
1062
|
-
* error-toned text (var(--error)), not a red filled button. Two dividers are
|
|
1063
|
-
* always rendered: count↔actions and actions↔clear.
|
|
1302
|
+
* `unit` sets the count unit, `idleContent` shows while nothing is selected.
|
|
1064
1303
|
*
|
|
1065
1304
|
* @example
|
|
1066
1305
|
* <BulkActionBar count={sel.size} onClear={clear}
|
|
@@ -1089,7 +1328,7 @@ interface ConfirmDialogProps {
|
|
|
1089
1328
|
/** Keeps the confirm button disabled (e.g. until the typed count matches). */
|
|
1090
1329
|
confirmDisabled?: boolean;
|
|
1091
1330
|
/**
|
|
1092
|
-
* @deprecated Ignored. AlertDialog stays a centered card below
|
|
1331
|
+
* @deprecated Ignored. AlertDialog stays a centered card below 1024px.
|
|
1093
1332
|
*/
|
|
1094
1333
|
mobilePresentation?: DialogMobilePresentation;
|
|
1095
1334
|
/** Scrim preset; wins over `<html data-scrim>`. Default: the root preset, else `--scrim`. */
|
|
@@ -1097,7 +1336,7 @@ interface ConfirmDialogProps {
|
|
|
1097
1336
|
}
|
|
1098
1337
|
/**
|
|
1099
1338
|
* @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
|
|
1339
|
+
* `alertdialog`, an outside click does not close it, and it stays a centered card below 1024px.
|
|
1101
1340
|
*/
|
|
1102
1341
|
declare function ConfirmDialog({ open, onOpenChange, title, description, tone, confirmLabel, cancelLabel, onConfirm, loading, children, confirmDisabled, scrim, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
|
|
1103
1342
|
|
|
@@ -1176,11 +1415,11 @@ type SheetMotionConfig = {
|
|
|
1176
1415
|
duration?: SheetMotionDuration;
|
|
1177
1416
|
easing?: SheetMotionEasing;
|
|
1178
1417
|
};
|
|
1179
|
-
/** Structured Sheet width from
|
|
1418
|
+
/** Structured Sheet width from 1024px: 480 · 720 · viewport minus `--space-8`. */
|
|
1180
1419
|
type SheetSize = "md" | "lg" | "full";
|
|
1181
1420
|
/**
|
|
1182
1421
|
* 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
|
|
1422
|
+
* outside click and Escape close, the body scrolls, a bottom sheet below 1024px (OVERLAY_POLICY.sheet).
|
|
1184
1423
|
*/
|
|
1185
1424
|
interface SheetProps {
|
|
1186
1425
|
open: boolean;
|
|
@@ -1193,9 +1432,9 @@ interface SheetProps {
|
|
|
1193
1432
|
caption?: React.ReactNode;
|
|
1194
1433
|
/** Header controls before the X, e.g. an expand toggle. */
|
|
1195
1434
|
headerActions?: React.ReactNode;
|
|
1196
|
-
/** Edge from
|
|
1435
|
+
/** Edge from 1024px. Default `"right"`. Below 1024px it is a bottom sheet. */
|
|
1197
1436
|
side?: "right" | "left";
|
|
1198
|
-
/** Width from
|
|
1437
|
+
/** Width from 1024px. Default `"md"`. */
|
|
1199
1438
|
size?: SheetSize;
|
|
1200
1439
|
/** Body. Scrolls inside the sheet. */
|
|
1201
1440
|
children: React.ReactNode;
|
|
@@ -1203,7 +1442,7 @@ interface SheetProps {
|
|
|
1203
1442
|
footer?: React.ReactNode;
|
|
1204
1443
|
/** Accessible name of the X. Default '닫기'. */
|
|
1205
1444
|
closeLabel?: string;
|
|
1206
|
-
/** Side panel motion from
|
|
1445
|
+
/** Side panel motion from 1024px (`false`: none). Same as SheetContent `motion`. */
|
|
1207
1446
|
motion?: SheetMotionConfig | false;
|
|
1208
1447
|
/** Scrim preset; wins over `<html data-scrim>`. */
|
|
1209
1448
|
scrim?: OverlayScrim;
|
|
@@ -1223,10 +1462,10 @@ declare function SheetClose({ ...props }: React.ComponentProps<typeof Dialog$1.C
|
|
|
1223
1462
|
declare function SheetContent({ className, children, side, mobileSide, motion, showCloseButton, scrim, style, onOpenAutoFocus, onCloseAutoFocus, ...props }: React.ComponentProps<typeof Dialog$1.Content> & {
|
|
1224
1463
|
/**
|
|
1225
1464
|
* Edge. `"top"` and `"bottom"` are deprecated: the structured Sheet takes `"right"` or `"left"`
|
|
1226
|
-
* from
|
|
1465
|
+
* from 1024px and is a bottom sheet below.
|
|
1227
1466
|
*/
|
|
1228
1467
|
side?: "top" | "right" | "bottom" | "left";
|
|
1229
|
-
/** @deprecated The structured Sheet is a bottom sheet below
|
|
1468
|
+
/** @deprecated The structured Sheet is a bottom sheet below 1024px by rule. */
|
|
1230
1469
|
mobileSide?: "top" | "right" | "bottom" | "left";
|
|
1231
1470
|
motion?: SheetMotionConfig | false;
|
|
1232
1471
|
showCloseButton?: boolean;
|
|
@@ -1288,6 +1527,8 @@ interface ActionSheetItem {
|
|
|
1288
1527
|
onSelect: () => void;
|
|
1289
1528
|
destructive?: boolean;
|
|
1290
1529
|
disabled?: boolean;
|
|
1530
|
+
/** Why the row cannot run now: focusable, runs nothing, keeps the sheet open (see ActionMenuItem). */
|
|
1531
|
+
disabledReason?: string;
|
|
1291
1532
|
}
|
|
1292
1533
|
interface ActionSheetProps {
|
|
1293
1534
|
open: boolean;
|
|
@@ -1300,60 +1541,11 @@ interface ActionSheetProps {
|
|
|
1300
1541
|
closeLabel?: string;
|
|
1301
1542
|
}
|
|
1302
1543
|
/**
|
|
1303
|
-
* @deprecated Use ActionMenu: the same items become a DropdownMenu from
|
|
1544
|
+
* @deprecated Use ActionMenu: the same items become a DropdownMenu from 1024px and this menu sheet
|
|
1304
1545
|
* below, from one trigger.
|
|
1305
1546
|
*/
|
|
1306
1547
|
declare function ActionSheet({ open, onOpenChange, title, description, items, closeLabel, }: ActionSheetProps): react_jsx_runtime.JSX.Element;
|
|
1307
1548
|
|
|
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
1549
|
declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof Tooltip$1.Provider>): react_jsx_runtime.JSX.Element;
|
|
1358
1550
|
interface TooltipProps extends React.ComponentProps<typeof Tooltip$1.Root> {
|
|
1359
1551
|
/**
|
|
@@ -1512,6 +1704,7 @@ declare const emptyStateBaseVariants: (props?: ({
|
|
|
1512
1704
|
bordered?: boolean | null | undefined;
|
|
1513
1705
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1514
1706
|
type EmptyStateTone = "neutral" | "muted" | "raised";
|
|
1707
|
+
type EmptyStateLayout = "inline" | "page";
|
|
1515
1708
|
interface EmptyStateVariantOptions extends VariantProps<typeof emptyStateBaseVariants> {
|
|
1516
1709
|
tone?: EmptyStateTone;
|
|
1517
1710
|
surface?: SurfaceLevel;
|
|
@@ -1524,6 +1717,13 @@ declare const emptyStateIconVariants: (props?: ({
|
|
|
1524
1717
|
type EmptyStateSize = NonNullable<VariantProps<typeof emptyStateBaseVariants>["size"]>;
|
|
1525
1718
|
interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof emptyStateBaseVariants> {
|
|
1526
1719
|
tone?: EmptyStateTone;
|
|
1720
|
+
/**
|
|
1721
|
+
* `inline` (default) takes its content height. `page` stands in for a whole page body: it
|
|
1722
|
+
* fills the parent's width, and at >= 768px grows to the free height of the nearest scroll
|
|
1723
|
+
* container and centers its content there. Below 768px it stays top-aligned with a
|
|
1724
|
+
* `--space-12` top gap.
|
|
1725
|
+
*/
|
|
1726
|
+
layout?: EmptyStateLayout;
|
|
1527
1727
|
/**
|
|
1528
1728
|
* Background level for the empty-state container. When provided, this
|
|
1529
1729
|
* overrides the legacy `tone` background mapping.
|
|
@@ -1591,28 +1791,17 @@ interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
|
1591
1791
|
declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<HTMLSpanElement>>;
|
|
1592
1792
|
|
|
1593
1793
|
declare const iconButtonCva: (props?: ({
|
|
1594
|
-
size?: "md" | "sm" | "lg" | null | undefined;
|
|
1794
|
+
size?: "md" | "xs" | "sm" | "lg" | "xl" | null | undefined;
|
|
1595
1795
|
pressed?: boolean | null | undefined;
|
|
1596
1796
|
appearance?: "filled" | "outline" | "ghost" | null | undefined;
|
|
1597
1797
|
tone?: "primary" | "neutral" | "danger" | null | undefined;
|
|
1598
|
-
variant?: "outline" | "ghost" | "danger" | "subtle" | null | undefined;
|
|
1599
1798
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1600
|
-
type
|
|
1601
|
-
type
|
|
1602
|
-
type IconButtonVariantsOptions = (IconButtonCvaOptions & {
|
|
1603
|
-
appearance?: null;
|
|
1604
|
-
tone?: null;
|
|
1605
|
-
}) | (Omit<IconButtonCvaOptions, "size"> & {
|
|
1606
|
-
appearance?: ActionAppearance | null;
|
|
1607
|
-
tone?: ActionTone | null;
|
|
1608
|
-
size?: IconButtonAxisSize | null;
|
|
1609
|
-
});
|
|
1799
|
+
type IconButtonSize = NonNullable<VariantProps<typeof iconButtonCva>["size"]>;
|
|
1800
|
+
type IconButtonVariantsOptions = NonNullable<Parameters<typeof iconButtonCva>[0]>;
|
|
1610
1801
|
declare function iconButtonVariants(options?: IconButtonVariantsOptions): string;
|
|
1611
1802
|
declare const iconButtonBadgeVariants: (props?: ({
|
|
1612
1803
|
tone?: "error" | "info" | null | undefined;
|
|
1613
1804
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1614
|
-
type IconButtonVariant = NonNullable<VariantProps<typeof iconButtonCva>["variant"]>;
|
|
1615
|
-
type IconButtonSize = NonNullable<VariantProps<typeof iconButtonCva>["size"]>;
|
|
1616
1805
|
type IconButtonBadgeTone = NonNullable<VariantProps<typeof iconButtonBadgeVariants>["tone"]>;
|
|
1617
1806
|
type IconButtonIcon = React.ComponentType<React.SVGProps<SVGSVGElement> & {
|
|
1618
1807
|
size?: number | string;
|
|
@@ -1629,34 +1818,26 @@ type IconButtonOptionalName = {
|
|
|
1629
1818
|
"aria-label"?: string;
|
|
1630
1819
|
"aria-labelledby"?: string;
|
|
1631
1820
|
};
|
|
1821
|
+
type IconButtonTextEnd = {
|
|
1822
|
+
iconPosition?: "start" | "end";
|
|
1823
|
+
menuIndicator?: false;
|
|
1824
|
+
} | {
|
|
1825
|
+
iconPosition?: "start";
|
|
1826
|
+
menuIndicator: true;
|
|
1827
|
+
};
|
|
1632
1828
|
type IconButtonContent = (IconButtonAccessibleName & {
|
|
1633
1829
|
label?: never;
|
|
1634
1830
|
children?: never;
|
|
1831
|
+
menuIndicator?: never;
|
|
1635
1832
|
}) | (IconButtonOptionalName & {
|
|
1636
1833
|
label: React.ReactNode;
|
|
1637
1834
|
children?: never;
|
|
1638
|
-
}) | (IconButtonOptionalName & {
|
|
1835
|
+
} & IconButtonTextEnd) | (IconButtonOptionalName & {
|
|
1639
1836
|
children: React.ReactNode;
|
|
1640
1837
|
label?: never;
|
|
1641
|
-
});
|
|
1642
|
-
type IconButtonStyleProps =
|
|
1643
|
-
/**
|
|
1644
|
-
* @deprecated Use `appearance` × `tone` instead. Removed in 0.20.
|
|
1645
|
-
*/
|
|
1646
|
-
variant?: never;
|
|
1838
|
+
} & IconButtonTextEnd);
|
|
1839
|
+
type IconButtonStyleProps = GhostDefaultActionStyle & {
|
|
1647
1840
|
/** Button's scale: `xs` 28 · `sm` 30 · `md` 32 · `lg` 36 · `xl` 40. */
|
|
1648
|
-
size?: IconButtonAxisSize | null;
|
|
1649
|
-
}) | {
|
|
1650
|
-
/**
|
|
1651
|
-
* @deprecated Use `appearance` × `tone`: `ghost` → ghost + neutral · `outline` →
|
|
1652
|
-
* outline + neutral · `subtle` → filled + neutral · `danger` → filled + danger
|
|
1653
|
-
* (solid red; `danger` keeps its light red until removal). When moving to the new axes,
|
|
1654
|
-
* `size` follows Button's scale: `sm` → `xs`, `lg` → `xl` (`md` stays). Removed in 0.20.
|
|
1655
|
-
*/
|
|
1656
|
-
variant?: IconButtonVariant | null;
|
|
1657
|
-
appearance?: never;
|
|
1658
|
-
tone?: never;
|
|
1659
|
-
/** Legacy scale without `appearance`/`tone`: `sm` 28 · `md` 32 · `lg` 40. */
|
|
1660
1841
|
size?: IconButtonSize | null;
|
|
1661
1842
|
};
|
|
1662
1843
|
type IconButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "aria-label" | "aria-labelledby" | "children" | "color"> & IconButtonStyleProps & IconButtonContent & {
|
|
@@ -1666,6 +1847,13 @@ type IconButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "aria
|
|
|
1666
1847
|
badgeTone?: IconButtonBadgeTone;
|
|
1667
1848
|
/** Icon side when the button has text. */
|
|
1668
1849
|
iconPosition?: "start" | "end";
|
|
1850
|
+
/** Like Button: the spinner takes the icon's place and the button is disabled. */
|
|
1851
|
+
loading?: boolean;
|
|
1852
|
+
/**
|
|
1853
|
+
* Trailing ▾ for a menu trigger, with text and a start icon only. The trigger (DropdownMenu
|
|
1854
|
+
* etc.) supplies `aria-haspopup`.
|
|
1855
|
+
*/
|
|
1856
|
+
menuIndicator?: boolean;
|
|
1669
1857
|
};
|
|
1670
1858
|
declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
1671
1859
|
|
|
@@ -1732,6 +1920,43 @@ interface PageSizeSelectProps {
|
|
|
1732
1920
|
*/
|
|
1733
1921
|
declare function PageSizeSelect({ value, onChange, options, label, unit, size, disabled, id, 'aria-label': ariaLabel, className, }: PageSizeSelectProps): react_jsx_runtime.JSX.Element;
|
|
1734
1922
|
|
|
1923
|
+
declare const TABLE_PAGE_SIZE_OPTIONS: readonly [20, 50, 100];
|
|
1924
|
+
interface TablePaginationProps {
|
|
1925
|
+
pageSize: number;
|
|
1926
|
+
/** The caller sends the list back to the first page when the page size changes. */
|
|
1927
|
+
onPageSizeChange: (pageSize: number) => void;
|
|
1928
|
+
/** Default `TABLE_PAGE_SIZE_OPTIONS` (20, 50, 100). */
|
|
1929
|
+
pageSizeOptions?: readonly number[];
|
|
1930
|
+
/** First row number on this page, from 1. 0 when there are no rows. */
|
|
1931
|
+
rangeStart: number;
|
|
1932
|
+
/** Last row number on this page. */
|
|
1933
|
+
rangeEnd: number;
|
|
1934
|
+
/** Total count. Leave it out when the API has none: only the range shows. */
|
|
1935
|
+
total?: number;
|
|
1936
|
+
/** Unit after the total — `명` for people. Default `개`. */
|
|
1937
|
+
unit?: string;
|
|
1938
|
+
hasPrev: boolean;
|
|
1939
|
+
hasNext: boolean;
|
|
1940
|
+
onPrev: () => void;
|
|
1941
|
+
onNext: () => void;
|
|
1942
|
+
/** While the next page loads, ◀ ▶ are disabled. */
|
|
1943
|
+
loading?: boolean;
|
|
1944
|
+
'aria-label'?: string;
|
|
1945
|
+
}
|
|
1946
|
+
type TablePaginationVisibility = Pick<TablePaginationProps, 'rangeEnd' | 'total' | 'hasPrev' | 'hasNext' | 'pageSizeOptions'>;
|
|
1947
|
+
/**
|
|
1948
|
+
* Hide the panel when there are no rows, or when everything fits in the smallest choice
|
|
1949
|
+
* (nothing to pick). Without `total`, the first page with no next page decides by its row count.
|
|
1950
|
+
*/
|
|
1951
|
+
declare function shouldHideTablePagination({ rangeEnd, total, hasPrev, hasNext, pageSizeOptions, }: TablePaginationVisibility): boolean;
|
|
1952
|
+
/**
|
|
1953
|
+
* Page panel at the bottom of a table — page size on the left, the range (`1–100 / 총 N개`)
|
|
1954
|
+
* and ◀ ▶ on the right. Put it in `DataTable`'s `footer`, which draws the line above it.
|
|
1955
|
+
* Below 1024px the `페이지당` label hides (the select keeps its name), and below 400px of
|
|
1956
|
+
* panel width the total hides. Both are CSS, so nothing flashes on hydration or paging.
|
|
1957
|
+
*/
|
|
1958
|
+
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;
|
|
1959
|
+
|
|
1735
1960
|
declare const modeToggleVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
1736
1961
|
declare const modeToggleItemVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
1737
1962
|
interface ModeToggleOption<T extends string> {
|
|
@@ -1746,7 +1971,7 @@ interface ModeToggleProps<T extends string> extends Omit<React.HTMLAttributes<HT
|
|
|
1746
1971
|
onChange: (value: T) => void;
|
|
1747
1972
|
itemClassName?: string;
|
|
1748
1973
|
}
|
|
1749
|
-
declare function ModeToggle<T extends string>({ className, itemClassName, options, value, onChange, ...props }: ModeToggleProps<T>): react_jsx_runtime.JSX.Element;
|
|
1974
|
+
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;
|
|
1750
1975
|
|
|
1751
1976
|
declare const actionFooterVariants: (props?: ({
|
|
1752
1977
|
position?: "fixed" | "static" | "sticky" | null | undefined;
|
|
@@ -1759,16 +1984,15 @@ interface ActionFooterStatus {
|
|
|
1759
1984
|
kind: 'saving' | 'saved' | 'error';
|
|
1760
1985
|
lastSavedAt?: Date;
|
|
1761
1986
|
}
|
|
1762
|
-
|
|
1987
|
+
type ActionFooterAction = FilledDefaultActionStyle & {
|
|
1763
1988
|
id?: string;
|
|
1764
1989
|
label: string;
|
|
1765
|
-
variant?: ButtonVariant;
|
|
1766
1990
|
onClick: () => void;
|
|
1767
1991
|
disabled?: boolean;
|
|
1768
1992
|
loading?: boolean;
|
|
1769
1993
|
permission?: string;
|
|
1770
1994
|
leadingIcon?: LucideIcon;
|
|
1771
|
-
}
|
|
1995
|
+
};
|
|
1772
1996
|
interface ActionFooterProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>, VariantProps<typeof actionFooterVariants> {
|
|
1773
1997
|
status?: ActionFooterStatus;
|
|
1774
1998
|
actions: ActionFooterAction[];
|
|
@@ -1904,11 +2128,11 @@ declare const checkboxBoxVariants: (props?: ({
|
|
|
1904
2128
|
size?: "md" | "sm" | null | undefined;
|
|
1905
2129
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1906
2130
|
declare const checkboxGroupItemVariants: (props?: ({
|
|
1907
|
-
appearance?: "
|
|
2131
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1908
2132
|
density?: "compact" | "comfortable" | null | undefined;
|
|
1909
2133
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1910
2134
|
declare const checkboxGroupBoxVariants: (props?: ({
|
|
1911
|
-
appearance?: "
|
|
2135
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1912
2136
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1913
2137
|
type CheckboxSize = NonNullable<VariantProps<typeof checkboxBoxVariants>["size"]>;
|
|
1914
2138
|
type CheckboxCheckedState = React.ComponentProps<typeof Checkbox$1.Root>["checked"];
|
|
@@ -1917,6 +2141,7 @@ type CheckboxGroupDensity = NonNullable<VariantProps<typeof checkboxGroupItemVar
|
|
|
1917
2141
|
type CheckboxGroupContextValue = {
|
|
1918
2142
|
appearance: CheckboxGroupAppearance;
|
|
1919
2143
|
density: CheckboxGroupDensity;
|
|
2144
|
+
orientation?: "vertical" | "horizontal";
|
|
1920
2145
|
disabled?: boolean;
|
|
1921
2146
|
name?: string;
|
|
1922
2147
|
selectedValues: Set<string>;
|
|
@@ -1933,7 +2158,7 @@ interface CheckboxProps extends Omit<React.ComponentPropsWithoutRef<typeof Check
|
|
|
1933
2158
|
declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLButtonElement>>;
|
|
1934
2159
|
|
|
1935
2160
|
declare const checkboxGroupVariants: (props?: ({
|
|
1936
|
-
appearance?: "
|
|
2161
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1937
2162
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
1938
2163
|
columns?: "one" | "two" | "three" | null | undefined;
|
|
1939
2164
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
@@ -1954,16 +2179,16 @@ interface CheckboxGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
|
1954
2179
|
declare const CheckboxGroup: React.ForwardRefExoticComponent<CheckboxGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
1955
2180
|
|
|
1956
2181
|
declare const radioGroupVariants: (props?: ({
|
|
1957
|
-
appearance?: "
|
|
2182
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1958
2183
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
1959
2184
|
columns?: "one" | "two" | "three" | null | undefined;
|
|
1960
2185
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1961
2186
|
declare const radioVariants: (props?: ({
|
|
1962
|
-
appearance?: "
|
|
2187
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1963
2188
|
density?: "compact" | "comfortable" | null | undefined;
|
|
1964
2189
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1965
2190
|
declare const radioControlVariants: (props?: ({
|
|
1966
|
-
appearance?: "
|
|
2191
|
+
appearance?: "card" | "plain" | null | undefined;
|
|
1967
2192
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1968
2193
|
type RadioGroupAppearance = NonNullable<VariantProps<typeof radioGroupVariants>["appearance"]>;
|
|
1969
2194
|
type RadioGroupColumns = NonNullable<VariantProps<typeof radioGroupVariants>["columns"]>;
|
|
@@ -2055,11 +2280,11 @@ declare function TreeView<T extends TreeNode>({ nodes, selectedId, selectionAria
|
|
|
2055
2280
|
/**
|
|
2056
2281
|
* OLUN 브랜드 로고.
|
|
2057
2282
|
*
|
|
2058
|
-
* - symbol: O
|
|
2059
|
-
* - wordmark:
|
|
2060
|
-
* -
|
|
2283
|
+
* - symbol: O 링 + 우하단 accent-pop 궤도 점 (32px 초과/이하 두 광학 비율)
|
|
2284
|
+
* - wordmark: Montserrat 700 윤곽 `OLUN` + 단독일 때 accent-pop 마침표
|
|
2285
|
+
* - MASTER: symbol과 함께 쓰면 wordmark의 "."를 뺀다. 궤도 점이 마침표를 맡는다(점 두 개 경쟁 방지).
|
|
2061
2286
|
*
|
|
2062
|
-
*
|
|
2287
|
+
* 기하는 `@olundot/tokens/brand`의 정본 데이터(scripts/brand/build-brand-svg.mjs가 생성)에서만 온다.
|
|
2063
2288
|
*/
|
|
2064
2289
|
interface OlunSymbolProps {
|
|
2065
2290
|
/** 심볼 크기 px (기본 28) */
|
|
@@ -2068,9 +2293,15 @@ interface OlunSymbolProps {
|
|
|
2068
2293
|
}
|
|
2069
2294
|
declare function OlunSymbol({ size, className }: OlunSymbolProps): react_jsx_runtime.JSX.Element;
|
|
2070
2295
|
interface OlunLogoProps {
|
|
2071
|
-
/**
|
|
2296
|
+
/**
|
|
2297
|
+
* MASTER 크기. 심볼 240 상자 기준 px (기본 28).
|
|
2298
|
+
* 워드마크와 간격은 고정 비율로 함께 커진다. 32px 이하는 아이콘 비율 심볼을 쓴다.
|
|
2299
|
+
*/
|
|
2072
2300
|
symbolSize?: number;
|
|
2073
|
-
/**
|
|
2301
|
+
/**
|
|
2302
|
+
* 워드마크만 쓸 때(`showSymbol={false}`) 글자 크기 px (기본 18).
|
|
2303
|
+
* MASTER에서는 쓰지 않는다. MASTER 크기는 `symbolSize` 하나로 정한다.
|
|
2304
|
+
*/
|
|
2074
2305
|
fontSize?: number;
|
|
2075
2306
|
/** 심볼 표시 여부 (기본 true) */
|
|
2076
2307
|
showSymbol?: boolean;
|
|
@@ -2101,4 +2332,4 @@ interface OrganizationLogoProps extends Omit<SVGProps<SVGSVGElement>, "width" |
|
|
|
2101
2332
|
}
|
|
2102
2333
|
declare function OrganizationLogo({ organization, size, className, style, role, "aria-label": ariaLabel, "aria-hidden": ariaHidden, ...props }: OrganizationLogoProps): react_jsx_runtime.JSX.Element;
|
|
2103
2334
|
|
|
2104
|
-
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,
|
|
2335
|
+
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 };
|