@olundot/ui 0.10.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import * as class_variance_authority_types from 'class-variance-authority/types';
3
3
  import * as React from 'react';
4
- import { SVGProps } from 'react';
4
+ import { HTMLAttributes, ReactNode, SVGProps } from 'react';
5
5
  import { VariantProps } from 'class-variance-authority';
6
6
  import { LucideIcon } from 'lucide-react';
7
7
  import { Select as Select$1, Label as Label$1, Switch as Switch$1, Tabs as Tabs$1, DropdownMenu as DropdownMenu$1, Dialog as Dialog$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';
@@ -84,9 +84,9 @@ type InputSizeLegacy = "xs" | "sm" | "md" | "lg" | "default";
84
84
  interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof inputVariants> {
85
85
  /**
86
86
  * Field height preset. Replaces `inputSize` (deprecated).
87
- * - sm: 32px (compact toolbar/search)
88
- * - md: 38px (default form field)
89
- * - lg: 44px (prominent / WCAG 2.5.5 touch target)
87
+ * - sm: 30px (compact toolbar/search)
88
+ * - md: 32px (default form field)
89
+ * - lg: 36px (prominent)
90
90
  */
91
91
  size?: InputSize;
92
92
  /**
@@ -141,32 +141,23 @@ interface FileUploadZoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelEl
141
141
  }
142
142
  declare const FileUploadZone: React.ForwardRefExoticComponent<FileUploadZoneProps & React.RefAttributes<HTMLLabelElement>>;
143
143
 
144
- declare const alertVariants: (props?: ({
145
- variant?: "error" | "warning" | "info" | "success" | null | undefined;
146
- } & class_variance_authority_types.ClassProp) | undefined) => string;
147
- declare const inlineAlertVariants: (props?: ({
148
- variant?: "error" | "warning" | "info" | "success" | null | undefined;
149
- surface?: "filled" | "plain" | null | undefined;
150
- } & class_variance_authority_types.ClassProp) | undefined) => string;
151
- type AlertVariant = NonNullable<VariantProps<typeof alertVariants>['variant']>;
152
- interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'children'>, VariantProps<typeof alertVariants> {
153
- title?: React.ReactNode;
154
- children: React.ReactNode;
155
- icon?: React.ReactNode;
144
+ type AlertVariant = 'info' | 'success' | 'warning' | 'error';
145
+ type AlertEmphasis = 'subtle' | 'strong';
146
+ type InlineAlertSurface = 'filled' | 'plain';
147
+ interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'children'> {
148
+ variant?: AlertVariant;
149
+ emphasis?: AlertEmphasis;
150
+ title?: ReactNode;
151
+ children: ReactNode;
156
152
  onDismiss?: () => void;
157
153
  }
158
- interface InlineAlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>, VariantProps<typeof inlineAlertVariants> {
159
- children: React.ReactNode;
160
- icon?: React.ReactNode;
161
- }
162
154
  declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
163
- /**
164
- * InlineAlert is for inline status text only. Use Alert or Toast when the UI needs dismissal.
165
- *
166
- * surface variants:
167
- * - `filled` (default): accent tint 배경. table toolbar / 영역 분리가 필요한 위치.
168
- * - `plain`: 배경 없음. form field 바로 아래처럼 인접 input과 영역 충돌을 피해야 하는 위치.
169
- */
155
+ interface InlineAlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
156
+ variant?: AlertVariant;
157
+ emphasis?: AlertEmphasis;
158
+ surface?: InlineAlertSurface;
159
+ children: ReactNode;
160
+ }
170
161
  declare const InlineAlert: React.ForwardRefExoticComponent<InlineAlertProps & React.RefAttributes<HTMLDivElement>>;
171
162
 
172
163
  declare const textareaVariants: (props?: ({
@@ -267,9 +258,9 @@ interface SelectProps extends Omit<React.ComponentPropsWithoutRef<typeof Select$
267
258
  "aria-invalid"?: React.AriaAttributes["aria-invalid"];
268
259
  /**
269
260
  * Field height preset.
270
- * - sm: 32px (compact toolbar/filter)
271
- * - md: 34px (default, matches Input density)
272
- * - lg: 38px (prominent)
261
+ * - sm: 30px (compact toolbar/filter)
262
+ * - md: 32px (default, matches Input density)
263
+ * - lg: 36px (prominent)
273
264
  */
274
265
  size?: SelectSize;
275
266
  /**
@@ -325,11 +316,11 @@ declare const formFieldVariants: (props?: ({
325
316
  * @deprecated Use `<Label>` primitive instead. This className alias is kept for
326
317
  * 1 cycle (0.2.0 → 0.3.0 removal) for raw label patterns.
327
318
  */
328
- declare const formFieldLabelClassName = "pl-[var(--space-0-5)] pb-[var(--space-0-5)] text-body-sm font-medium leading-snug text-text-secondary";
329
- declare const formFieldRequiredClassName = "ml-[2px] text-[var(--semantic-error,var(--error))]";
319
+ declare const formFieldLabelClassName = "pl-[var(--space-1)] pb-[var(--space-1)] text-body-sm font-medium leading-snug text-text-secondary";
320
+ declare const formFieldRequiredClassName = "ml-[2px] font-bold text-[var(--semantic-error,var(--error))]";
330
321
  declare const formFieldDescriptionClassName = "text-[12px] leading-snug text-text-tertiary";
331
322
  declare const formFieldErrorClassName = "text-[12px] leading-snug text-[var(--semantic-error,var(--error))]";
332
- declare const formFieldControlStackClassName = "flex min-w-0 flex-col gap-[var(--space-0-5)]";
323
+ declare const formFieldControlStackClassName = "flex min-w-0 flex-col gap-[var(--space-1)]";
333
324
  interface FormFieldProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
334
325
  label: React.ReactNode;
335
326
  required?: boolean;
@@ -425,14 +416,15 @@ declare function evaluatePermission(permission: string, state?: PermissionEvalua
425
416
  declare function PermissionGuard({ permission, children, fallback, scope, permissions, disabledReason, }: PermissionGuardProps): react_jsx_runtime.JSX.Element | null;
426
417
 
427
418
  declare const cardBaseVariants: (props?: ({
428
- variant?: "default" | "elevated" | "notice" | "interactive" | null | undefined;
419
+ variant?: "default" | "elevated" | "notice" | null | undefined;
420
+ interactive?: boolean | null | undefined;
429
421
  } & class_variance_authority_types.ClassProp) | undefined) => string;
430
422
  type CardVariant = NonNullable<VariantProps<typeof cardBaseVariants>["variant"]>;
431
423
  interface CardVariantOptions extends VariantProps<typeof cardBaseVariants> {
432
424
  surface?: SurfaceLevel;
433
425
  className?: string;
434
426
  }
435
- declare function cardVariants({ variant, surface, className }?: CardVariantOptions): string;
427
+ declare function cardVariants({ variant, surface, interactive, className }?: CardVariantOptions): string;
436
428
  interface CardProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardBaseVariants> {
437
429
  /**
438
430
  * Background level for the card surface. When omitted, `variant` chooses the
@@ -440,6 +432,12 @@ interface CardProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<t
440
432
  * Selected and disabled states take precedence.
441
433
  */
442
434
  surface?: SurfaceLevel;
435
+ /**
436
+ * Clickable affordance — orthogonal to `variant`. Adds hover lift (shadow +
437
+ * border-strong), a pointer cursor and the neutral focus-ring. Combine with
438
+ * any `variant` (default/elevated/notice).
439
+ */
440
+ interactive?: boolean;
443
441
  selected?: boolean;
444
442
  disabled?: boolean;
445
443
  }
@@ -493,12 +491,51 @@ interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, "title
493
491
  breadcrumb?: React.ReactNode;
494
492
  back?: React.ReactNode;
495
493
  title: React.ReactNode;
494
+ headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
496
495
  subtitle?: React.ReactNode;
497
496
  meta?: React.ReactNode;
498
497
  actions?: React.ReactNode;
499
498
  }
500
499
  declare const PageHeader: React.ForwardRefExoticComponent<PageHeaderProps & React.RefAttributes<HTMLElement>>;
501
500
 
501
+ interface BreadcrumbItem {
502
+ label: React.ReactNode;
503
+ href?: string;
504
+ onClick?: () => void;
505
+ }
506
+ interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
507
+ items: BreadcrumbItem[];
508
+ /** Max items before collapsing to root + ellipsis + tail 2. Default: 4 */
509
+ maxItems?: number;
510
+ }
511
+ declare const Breadcrumb: React.ForwardRefExoticComponent<BreadcrumbProps & React.RefAttributes<HTMLElement>>;
512
+
513
+ interface DataLayoutProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
514
+ /** Top block — typically a PageHeader. Owns the page's single heading and
515
+ * page-level actions. */
516
+ header: React.ReactNode;
517
+ /** Filter row — typically a FilterToolbar (search · filters · result summary). */
518
+ toolbar?: React.ReactNode;
519
+ /** The list body — typically a DataTable or any list/grid. */
520
+ children: React.ReactNode;
521
+ /** Footer row — typically a Pagination component. */
522
+ footer?: React.ReactNode;
523
+ /** Floating selection bar — typically a BulkActionBar. Rendered as a sticky
524
+ * overlay inside the data region so it never displaces the table layout.
525
+ * The BulkActionBar itself self-hides at count 0, so this slot can always
526
+ * be set. */
527
+ bulkBar?: React.ReactNode;
528
+ }
529
+ /**
530
+ * DataLayout — the standard list/table page scaffold. Pure layout, no state.
531
+ * Arranges: PageHeader → FilterToolbar → DataTable → Pagination, with a
532
+ * BulkActionBar floating at the bottom of the data region on selection.
533
+ *
534
+ * The parent owns all state (query, filters, page, selectedIds); DataLayout
535
+ * only standardises placement and spacing so every table page feels identical.
536
+ */
537
+ declare const DataLayout: React.ForwardRefExoticComponent<DataLayoutProps & React.RefAttributes<HTMLDivElement>>;
538
+
502
539
  type WizardStepState = "upcoming" | "current" | "complete";
503
540
  interface WizardStep {
504
541
  id: string;
@@ -661,11 +698,6 @@ interface DataTableSort {
661
698
  key: string;
662
699
  dir: 'asc' | 'desc';
663
700
  }
664
- interface DataTableBulkAction {
665
- label: React.ReactNode;
666
- onClick: (ids: Set<string>) => void;
667
- variant?: 'default' | 'destructive';
668
- }
669
701
  interface DataTableProps<T> extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>, VariantProps<typeof dataTableVariants> {
670
702
  columns: DataTableColumn<T>[];
671
703
  data: T[];
@@ -673,19 +705,17 @@ interface DataTableProps<T> extends Omit<React.HTMLAttributes<HTMLDivElement>, '
673
705
  selectable?: boolean;
674
706
  selectedIds?: Set<string>;
675
707
  onSelectionChange?: (ids: Set<string>) => void;
676
- selectionBar?: 'top' | 'none';
677
708
  activeRowId?: string;
678
709
  onRowContextMenu?: (rowId: string, event: React.MouseEvent) => void;
679
710
  sortBy?: DataTableSort;
680
711
  onSortChange?: (key: string, dir: 'asc' | 'desc' | null) => void;
681
712
  loading?: boolean;
682
713
  emptyState?: React.ReactNode;
683
- bulkActions?: DataTableBulkAction[];
684
714
  rowHref?: (row: T) => string;
685
715
  skeletonRowCount?: number;
686
716
  /**
687
- * Background level for the table container. Header, selected rows, active
688
- * selection bars, loading, and empty states keep their own state styling.
717
+ * Background level for the table container. Header, selected rows, loading,
718
+ * and empty states keep their own state styling.
689
719
  */
690
720
  surface?: SurfaceLevel;
691
721
  }
@@ -749,7 +779,22 @@ interface BulkActionBarProps extends React.HTMLAttributes<HTMLDivElement> {
749
779
  onClear: () => void;
750
780
  emptyHint?: React.ReactNode;
751
781
  }
752
- declare function BulkActionBar({ count, actions, onClear, emptyHint, className, ...props }: BulkActionBarProps): react_jsx_runtime.JSX.Element | null;
782
+ /**
783
+ * OLUN BulkActionBar — floating pill for multi-select table/list actions.
784
+ *
785
+ * Low-chrome by design: actions are borderless text/icon buttons separated by
786
+ * hairline dividers — not filled Button components. Destructive actions read as
787
+ * error-toned text (var(--error)), not a red filled button. Two dividers are
788
+ * always rendered: count↔actions and actions↔clear.
789
+ *
790
+ * @example
791
+ * <BulkActionBar count={sel.size} onClear={clear}
792
+ * actions={[
793
+ * { key: "archive", label: "보관", icon: Archive, onClick: archive },
794
+ * { key: "del", label: "삭제", variant: "destructive", onClick: confirmDelete },
795
+ * ]} />
796
+ */
797
+ declare function BulkActionBar({ count, actions, onClear, emptyHint, className, style, ...props }: BulkActionBarProps): react_jsx_runtime.JSX.Element | null;
753
798
 
754
799
  declare const Dialog: React.FC<Dialog$1.DialogProps>;
755
800
  declare const DialogTrigger: React.ForwardRefExoticComponent<Dialog$1.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
@@ -828,6 +873,7 @@ declare function SheetContent({ className, children, side, mobileSide, motion, s
828
873
  motion?: SheetMotionConfig | false;
829
874
  showCloseButton?: boolean;
830
875
  }): react_jsx_runtime.JSX.Element;
876
+ declare function SheetBody({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
831
877
  declare function SheetHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
832
878
  declare function SheetFooter({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
833
879
  declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof Dialog$1.Title>): react_jsx_runtime.JSX.Element;
@@ -901,54 +947,63 @@ declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProp
901
947
  */
902
948
  declare const PopoverArrow: React.ForwardRefExoticComponent<Omit<Popover$1.PopoverArrowProps & React.RefAttributes<SVGSVGElement>, "ref"> & React.RefAttributes<SVGSVGElement>>;
903
949
 
904
- declare const badgeVariants: (props?: ({
905
- variant?: "brand" | "neutral" | "status" | "semantic" | "pill" | "vibrant" | null | undefined;
906
- tone?: "accent" | "warning" | "info" | "success" | "neutral" | "danger" | null | undefined;
907
- size?: "xs" | "sm" | "md" | null | undefined;
908
- } & class_variance_authority_types.ClassProp) | undefined) => string;
909
- declare const badgeDotVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
910
- type BadgeVariant = NonNullable<VariantProps<typeof badgeVariants>['variant']>;
911
- type BadgeTone = NonNullable<VariantProps<typeof badgeVariants>['tone']>;
912
- type BadgeSize = NonNullable<VariantProps<typeof badgeVariants>['size']>;
913
- interface BadgeProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'>, VariantProps<typeof badgeVariants> {
914
- showDot?: boolean;
915
- disabled?: boolean;
950
+ type BadgeTone = 'error' | 'warning' | 'info' | 'success' | 'neutral' | 'brand';
951
+ interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
952
+ tone?: BadgeTone;
916
953
  }
917
954
  declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
918
955
 
919
- declare const twoTierBadgeVariants: (props?: ({
920
- align?: "end" | "start" | "center" | null | undefined;
921
- } & class_variance_authority_types.ClassProp) | undefined) => string;
922
- declare const twoTierBadgeLineVariants: (props?: ({
923
- tier?: "primary" | "secondary" | null | undefined;
924
- intent?: "brand" | "muted" | "warning" | "success" | "neutral" | "danger" | null | undefined;
925
- } & class_variance_authority_types.ClassProp) | undefined) => string;
926
- type TwoTierBadgeIntent = NonNullable<VariantProps<typeof twoTierBadgeLineVariants>["intent"]>;
927
- interface TwoTierBadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof twoTierBadgeVariants> {
956
+ type TwoTierBadgeTone = 'neutral' | 'info' | 'success' | 'warning' | 'error';
957
+ type TwoTierBadgeEmphasis = 'subtle' | 'strong';
958
+ type TwoTierBadgeSize = 'xs' | 'sm' | 'md';
959
+ interface TwoTierBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
960
+ /** Lead facet — the headline segment (type, state, label). */
928
961
  primary: React.ReactNode;
962
+ /** Trailing qualifier segment (source, reason, count). Omit for a single-segment badge. */
929
963
  secondary?: React.ReactNode;
930
- primaryIntent?: TwoTierBadgeIntent;
931
- secondaryIntent?: TwoTierBadgeIntent;
932
- primaryClassName?: string;
933
- secondaryClassName?: string;
964
+ /** Semantic role — colors the LEAD segment only; the qualifier stays neutral. Brand lime is never used. */
965
+ tone?: TwoTierBadgeTone;
966
+ /** Weight axis (mirrors StatusBadge): `subtle` outlined pill, `strong` tinted lead fill. */
967
+ emphasis?: TwoTierBadgeEmphasis;
968
+ /** xs · sm (default) · md — padding + text + dot scale. */
969
+ size?: TwoTierBadgeSize;
970
+ /** Leading status dot on the lead segment (default false). Hollow ring for neutral. */
971
+ showDot?: boolean;
934
972
  }
935
- declare const TwoTierBadge: React.ForwardRefExoticComponent<TwoTierBadgeProps & React.RefAttributes<HTMLDivElement>>;
973
+ /**
974
+ * OLUN TwoTierBadge — carries TWO related facets in ONE horizontal pill: a
975
+ * `primary` lead segment and an optional `secondary` qualifier, split by a
976
+ * hairline vertical divider (유형│출처, 상태│사유, 완료│312명). Shares the
977
+ * Badge/StatusBadge/Chip grammar: full-pill shape, `--font-sans`, the same 5
978
+ * semantic roles (`tone`) and the `subtle`/`strong` emphasis axis. `tone` colors
979
+ * the lead segment only; the qualifier stays neutral and the brand lime is never
980
+ * spent here. With no `secondary` it degrades to a plain semantic pill — prefer
981
+ * StatusBadge for pure state. Forwards its ref.
982
+ *
983
+ * @example
984
+ * <TwoTierBadge primary="객관식" secondary="순환기내과" />
985
+ * <TwoTierBadge primary="반려" tone="error" emphasis="strong" secondary="중복 문항" />
986
+ */
987
+ declare const TwoTierBadge: React.ForwardRefExoticComponent<TwoTierBadgeProps & React.RefAttributes<HTMLSpanElement>>;
936
988
 
937
- declare const statusBadgeVariants: (props?: ({
938
- status?: "error" | "warning" | "info" | "success" | "active" | "pending" | "archived" | null | undefined;
939
- size?: "xs" | "sm" | "md" | null | undefined;
940
- } & class_variance_authority_types.ClassProp) | undefined) => string;
941
- declare const statusBadgeDotVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
942
- type StatusBadgeStatus = NonNullable<VariantProps<typeof statusBadgeVariants>["status"]>;
943
- interface StatusBadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof statusBadgeVariants> {
989
+ type StatusBadgeStatus = 'active' | 'archived' | 'success' | 'warning' | 'error' | 'info' | 'pending';
990
+ type StatusBadgeEmphasis = 'subtle' | 'strong';
991
+ type StatusBadgeSize = 'xs' | 'sm' | 'md';
992
+ type SemanticRole = 'error' | 'warning' | 'info' | 'success' | 'neutral';
993
+ interface StatusBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
994
+ status?: StatusBadgeStatus;
995
+ emphasis?: StatusBadgeEmphasis;
996
+ size?: StatusBadgeSize;
944
997
  showDot?: boolean;
945
- /**
946
- * Dot pulse animation. Use the default live cue for current/active states and
947
- * `pulse={false}` for historical or static status labels.
948
- * `motion-reduce` environments automatically disable the animation.
949
- */
950
998
  pulse?: boolean;
951
999
  }
1000
+ /**
1001
+ * Read-only state indicator. Two independent axes: `status` picks the semantic
1002
+ * ROLE (color), `emphasis` picks the WEIGHT (subtle vs strong). subtle (default)
1003
+ * keeps a neutral surface with only the dot + text in role color; strong adds a
1004
+ * semantic tinted fill — reserve for must-notice cases. The text label is
1005
+ * mandatory (WCAG 1.4.1); terminal/neutral states use a hollow ring dot.
1006
+ */
952
1007
  declare const StatusBadge: React.ForwardRefExoticComponent<StatusBadgeProps & React.RefAttributes<HTMLSpanElement>>;
953
1008
 
954
1009
  declare const notificationBadgeVariants: (props?: ({
@@ -1113,9 +1168,53 @@ interface PaginationProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onCha
1113
1168
  onPageSizeChange?: (pageSize: number) => void;
1114
1169
  totalLabel?: (total: number) => React.ReactNode;
1115
1170
  pageSizeLabel?: string;
1171
+ /**
1172
+ * When false, the page-size picker is omitted from the pagination bar.
1173
+ * Use this when you hoist a `<PageSizeSelect />` into the table's top toolbar.
1174
+ * Default true.
1175
+ */
1176
+ showPageSize?: boolean;
1116
1177
  }
1117
1178
  declare const Pagination: React.ForwardRefExoticComponent<PaginationProps & React.RefAttributes<HTMLElement>>;
1118
1179
 
1180
+ type PageSizeSelectSize = 'standard' | 'compact';
1181
+ interface PageSizeSelectProps {
1182
+ /** Current items-per-page value. */
1183
+ value: number;
1184
+ onChange: (pageSize: number) => void;
1185
+ /** Available page-size choices. Default [10, 20, 50, 100]. */
1186
+ options?: readonly number[];
1187
+ /**
1188
+ * Leading label rendered before the select. Pass null to hide.
1189
+ * Default "페이지당".
1190
+ */
1191
+ label?: React.ReactNode;
1192
+ /** Unit suffix appended to each option number. Default "개". */
1193
+ unit?: string;
1194
+ /**
1195
+ * Control height preset.
1196
+ * - standard: 32px (default, standalone toolbar)
1197
+ * - compact: 30px (embedded in pagination bar)
1198
+ */
1199
+ size?: PageSizeSelectSize;
1200
+ disabled?: boolean;
1201
+ id?: string;
1202
+ 'aria-label'?: string;
1203
+ className?: string;
1204
+ }
1205
+ /**
1206
+ * Standalone page-size picker for table/list toolbars.
1207
+ * Pair with `<Pagination showPageSize={false} />` to avoid duplication.
1208
+ *
1209
+ * @example
1210
+ * // top toolbar (right side):
1211
+ * <PageSizeSelect value={pageSize} onChange={setPageSize} />
1212
+ * // bottom:
1213
+ * <Pagination total={total} page={page} pageSize={pageSize}
1214
+ * onPageChange={setPage} showPageSize={false} />
1215
+ */
1216
+ declare function PageSizeSelect({ value, onChange, options, label, unit, size, disabled, id, 'aria-label': ariaLabel, className, }: PageSizeSelectProps): react_jsx_runtime.JSX.Element;
1217
+
1119
1218
  declare const modeToggleVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
1120
1219
  declare const modeToggleItemVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
1121
1220
  interface ModeToggleOption<T extends string> {
@@ -1175,7 +1274,10 @@ interface ToastAction {
1175
1274
  }
1176
1275
  interface ToastOptions {
1177
1276
  message: string;
1277
+ /** Optional secondary description line (muted). */
1278
+ description?: string;
1178
1279
  variant?: ToastVariant;
1280
+ /** Auto-dismiss ms. Default 4000 (7000 for error). Infinity = sticky. */
1179
1281
  duration?: number;
1180
1282
  action?: ToastAction;
1181
1283
  }
@@ -1185,9 +1287,9 @@ interface ToastItem extends ToastOptions {
1185
1287
  interface ToastRootProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'id'>, ToastItem {
1186
1288
  onClose?: () => void;
1187
1289
  }
1290
+ declare function getToastDuration(options: ToastOptions): number;
1188
1291
  type ToastListener = (items: ToastItem[]) => void;
1189
1292
  declare function limitToasts(items: ToastItem[], max?: number): ToastItem[];
1190
- declare function getToastDuration(options: ToastOptions): number;
1191
1293
  declare function createToast(options: ToastOptions): string;
1192
1294
  declare const toast: {
1193
1295
  show: typeof createToast;
@@ -1198,6 +1300,16 @@ declare const toast: {
1198
1300
  dismiss(id: string): void;
1199
1301
  subscribe(listener: ToastListener): () => void;
1200
1302
  };
1303
+ /** Capitalized alias — the canonical imperative API on the DS namespace (`Toast.success(...)`). */
1304
+ declare const Toast: {
1305
+ show: typeof createToast;
1306
+ success(message: string, options?: Omit<ToastOptions, "message" | "variant">): string;
1307
+ error(message: string, options?: Omit<ToastOptions, "message" | "variant">): string;
1308
+ warning(message: string, options?: Omit<ToastOptions, "message" | "variant">): string;
1309
+ info(message: string, options?: Omit<ToastOptions, "message" | "variant">): string;
1310
+ dismiss(id: string): void;
1311
+ subscribe(listener: ToastListener): () => void;
1312
+ };
1201
1313
  declare const ToastRoot: React.ForwardRefExoticComponent<ToastRootProps & React.RefAttributes<HTMLDivElement>>;
1202
1314
  declare const ToastViewport: React.ForwardRefExoticComponent<React.OlHTMLAttributes<HTMLOListElement> & React.RefAttributes<HTMLOListElement>>;
1203
1315
  interface ToastProviderProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -1426,8 +1538,8 @@ declare function TreeView<T extends TreeNode>({ nodes, selectedId, selectionAria
1426
1538
  /**
1427
1539
  * OLUN 브랜드 로고.
1428
1540
  *
1429
- * - symbol: O 원형 테두리 + 우하단 accent-solid 작은 circle
1430
- * - wordmark: "OLUN" + 마지막 "." 은 accent-fg 색상
1541
+ * - symbol: O 원형 테두리 + 우하단 accent-pop 작은 circle
1542
+ * - wordmark: "OLUN" + 마지막 "." 은 accent 색상
1431
1543
  *
1432
1544
  * 레퍼런스: apps/web/docs/wireframes/ref/shell-wireframe.html Topbar 브랜드 영역.
1433
1545
  */
@@ -1471,4 +1583,4 @@ interface OrganizationLogoProps extends Omit<SVGProps<SVGSVGElement>, "width" |
1471
1583
  }
1472
1584
  declare function OrganizationLogo({ organization, size, className, style, role, "aria-label": ariaLabel, "aria-hidden": ariaHidden, ...props }: OrganizationLogoProps): react_jsx_runtime.JSX.Element;
1473
1585
 
1474
- export { ActionFooter, type ActionFooterAction, type ActionFooterProps, type ActionFooterStatus, Alert, type AlertProps, type AlertVariant, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, Badge, type BadgeProps, type BadgeSize, type BadgeTone, type BadgeVariant, BulkActionBar, type BulkActionBarAction, type BulkActionBarProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, 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, DataTable, type DataTableBulkAction, type DataTableColumn, type DataTableProps, type DataTableSort, DetailLayout, type DetailLayoutProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogEyebrow, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogRawContent, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, type EmptyStateSize, type EmptyStateTone, type EmptyStateVariantOptions, ErrorState, type ErrorStateProps, FileUploadZone, type FileUploadZoneProps, FilterToolbar, type FilterToolbarProps, FormField, type FormFieldProps, type FormFieldRenderProps, FormLayout, type FormLayoutProps, type FormLayoutSection, FormModal, type FormModalProps, IconButton, type IconButtonBadgeTone, type IconButtonProps, type IconButtonSize, type IconButtonVariant, InfoModal, type InfoModalProps, InlineAlert, type InlineAlertProps, Input, type InputProps, type InputSize, type InputSizeLegacy, type InputState, Label, type LabelProps, 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, PageHeader, type PageHeaderProps, 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, Separator, type SetOlunThemeOptions, Sheet, SheetClose, SheetContent, SheetDescription, SheetDrawer, type SheetDrawerProps, SheetFooter, SheetHeader, type SheetMotionConfig, type SheetMotionDuration, type SheetMotionEasing, type SheetMotionType, SheetTitle, SheetTrigger, Skeleton, type SkeletonProps, SkeletonRow, type SkeletonRowColumn, type SkeletonRowProps, SkeletonText, type SkeletonTextProps, Spinner, type SpinnerProps, StatusBadge, type StatusBadgeProps, type StatusBadgeStatus, type SurfaceLevel, Switch, type SwitchProps, type TabItem, Tabs, TabsContent, type TabsProps, type TabsVariant, Textarea, type TextareaProps, type TextareaSize, type TextareaSizeLegacy, type TextareaState, ThemeFab, type ThemeFabProps, ThemeToggle, 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 TwoTierBadgeIntent, type TwoTierBadgeProps, type UseOlunThemeValue, WizardLayout, type WizardLayoutProps, type WizardStep, type WizardStepState, actionFooterStatusVariants, actionFooterVariants, alertVariants, badgeDotVariants, badgeVariants, 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, inlineAlertVariants, inputMessageVariants, inputVariants, limitToasts, modeToggleItemVariants, modeToggleVariants, notificationBadgeVariants, otpCellVariants, otpFieldGroupVariants, otpFieldMessageVariants, otpFieldVariants, paginationControlVariants, paginationVariants, radioControlVariants, radioGroupVariants, radioVariants, searchFieldInputVariants, searchFieldVariants, selectMessageVariants, selectVariants, setOlunTheme, skeletonVariants, spinnerVariants, statusBadgeDotVariants, statusBadgeVariants, tabsBadgeVariants, tabsListVariants, tabsRootVariants, tabsTriggerVariants, textareaMessageVariants, textareaVariants, toast, toastVariants, toastViewportVariants, treeItemRowVariants, treeViewVariants, twoTierBadgeLineVariants, twoTierBadgeVariants, useOlunTheme, usePermission };
1586
+ export { ActionFooter, type ActionFooterAction, type ActionFooterProps, type ActionFooterStatus, Alert, 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, type ButtonVariant, 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 DataTableProps, type DataTableSort, DetailLayout, type DetailLayoutProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogEyebrow, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogRawContent, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, type EmptyStateSize, type EmptyStateTone, type EmptyStateVariantOptions, ErrorState, type ErrorStateProps, FileUploadZone, type FileUploadZoneProps, FilterToolbar, type FilterToolbarProps, FormField, type FormFieldProps, type FormFieldRenderProps, FormLayout, type FormLayoutProps, type FormLayoutSection, FormModal, type FormModalProps, IconButton, type IconButtonBadgeTone, type IconButtonProps, type IconButtonSize, type IconButtonVariant, InfoModal, type InfoModalProps, InlineAlert, type InlineAlertProps, type InlineAlertSurface, Input, type InputProps, type InputSize, type InputSizeLegacy, type InputState, Label, type LabelProps, 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, 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, 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, type SurfaceLevel, Switch, type SwitchProps, type TabItem, 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, skeletonVariants, spinnerVariants, tabsBadgeVariants, tabsListVariants, tabsRootVariants, tabsTriggerVariants, textareaMessageVariants, textareaVariants, toast, toastVariants, toastViewportVariants, treeItemRowVariants, treeViewVariants, useOlunTheme, usePermission };