@olundot/ui 0.10.1 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @olundot/ui
2
2
 
3
+ ## 0.10.2
4
+
5
+ ### Patch Changes
6
+
7
+ - fix(ui): Dialog 2026 재설계 — 글래스모피즘 블러 제거(단정한 scrim) · 무거운 그림자→floating elevation-8 · radius-lg · 헤더 좌측정렬 · footer 구분선(edge-bleed). API 변경 없음(시각/위계만).
8
+ - fix: toast가 duration 경과 후 자동으로 사라지도록 - ToastRoot가 마운트 시 setTimeout 기반 auto-dismiss 타이머를 걸고 unmount 시 정리한다(기존엔 타이머가 없어 수동 dismiss 전까지 영구 잔존). hover/focus 중에는 일시정지하고 해제 시 남은 시간부터 재개(sonner 관례). 기존 ToastOptions/ToastRoot 공개 API는 변경 없음(additive).
9
+
3
10
  ## 0.10.1
4
11
 
5
12
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -32,8 +32,8 @@ declare function useOlunTheme(): UseOlunThemeValue;
32
32
  type SurfaceLevel = "surface" | "canvas" | "raised";
33
33
 
34
34
  declare const buttonVariants: (props?: ({
35
- variant?: "default" | "primary" | "outline" | "ghost" | "danger" | "emergency" | "subtle" | "destructive" | "secondary" | "link" | null | undefined;
36
- size?: "default" | "xs" | "sm" | "md" | "lg" | "xl" | "icon" | "icon-xs" | null | undefined;
35
+ variant?: "primary" | "secondary" | "destructive" | "default" | "outline" | "ghost" | "danger" | "emergency" | "subtle" | "link" | null | undefined;
36
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "default" | "icon" | "icon-xs" | null | undefined;
37
37
  } & class_variance_authority_types.ClassProp) | undefined) => string;
38
38
  type ButtonVariant = NonNullable<VariantProps<typeof buttonVariants>['variant']>;
39
39
  type ButtonSize = NonNullable<VariantProps<typeof buttonVariants>['size']>;
@@ -54,7 +54,7 @@ type CopyButtonProps = Omit<ButtonProps, 'children' | 'leadingIcon' | 'loading'
54
54
  variant?: ButtonVariant;
55
55
  duration?: number;
56
56
  };
57
- declare const CopyButton: React.ForwardRefExoticComponent<Omit<ButtonProps, "size" | "variant" | "leadingIcon" | "trailingIcon" | "loading" | "children"> & {
57
+ declare const CopyButton: React.ForwardRefExoticComponent<Omit<ButtonProps, "variant" | "size" | "leadingIcon" | "trailingIcon" | "loading" | "children"> & {
58
58
  value: string;
59
59
  label?: React.ReactNode;
60
60
  copiedLabel?: React.ReactNode;
@@ -70,7 +70,7 @@ declare const inputVariants: (props?: ({
70
70
  surface?: SurfaceLevel | null | undefined;
71
71
  } & class_variance_authority_types.ClassProp) | undefined) => string;
72
72
  declare const inputMessageVariants: (props?: ({
73
- state?: "default" | "error" | "success" | null | undefined;
73
+ state?: "error" | "success" | "default" | null | undefined;
74
74
  size?: "sm" | "md" | "lg" | null | undefined;
75
75
  } & class_variance_authority_types.ClassProp) | undefined) => string;
76
76
  type InputState = NonNullable<VariantProps<typeof inputMessageVariants>["state"]>;
@@ -119,11 +119,11 @@ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "
119
119
  declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
120
120
 
121
121
  declare const fileUploadZoneVariants: (props?: ({
122
- size?: "default" | "compact" | null | undefined;
122
+ size?: "compact" | "default" | null | undefined;
123
123
  surface?: SurfaceLevel | null | undefined;
124
124
  } & class_variance_authority_types.ClassProp) | undefined) => string;
125
125
  declare const fileUploadIconVariants: (props?: ({
126
- size?: "default" | "compact" | null | undefined;
126
+ size?: "compact" | "default" | null | undefined;
127
127
  } & class_variance_authority_types.ClassProp) | undefined) => string;
128
128
  interface FileUploadZoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, "onChange">, VariantProps<typeof fileUploadZoneVariants> {
129
129
  accept?: string;
@@ -142,10 +142,10 @@ interface FileUploadZoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelEl
142
142
  declare const FileUploadZone: React.ForwardRefExoticComponent<FileUploadZoneProps & React.RefAttributes<HTMLLabelElement>>;
143
143
 
144
144
  declare const alertVariants: (props?: ({
145
- variant?: "error" | "success" | "info" | "warning" | null | undefined;
145
+ variant?: "error" | "warning" | "info" | "success" | null | undefined;
146
146
  } & class_variance_authority_types.ClassProp) | undefined) => string;
147
147
  declare const inlineAlertVariants: (props?: ({
148
- variant?: "error" | "success" | "info" | "warning" | null | undefined;
148
+ variant?: "error" | "warning" | "info" | "success" | null | undefined;
149
149
  surface?: "filled" | "plain" | null | undefined;
150
150
  } & class_variance_authority_types.ClassProp) | undefined) => string;
151
151
  type AlertVariant = NonNullable<VariantProps<typeof alertVariants>['variant']>;
@@ -175,7 +175,7 @@ declare const textareaVariants: (props?: ({
175
175
  surface?: SurfaceLevel | null | undefined;
176
176
  } & class_variance_authority_types.ClassProp) | undefined) => string;
177
177
  declare const textareaMessageVariants: (props?: ({
178
- state?: "default" | "error" | "success" | null | undefined;
178
+ state?: "error" | "success" | "default" | null | undefined;
179
179
  } & class_variance_authority_types.ClassProp) | undefined) => string;
180
180
  type TextareaState = NonNullable<VariantProps<typeof textareaMessageVariants>["state"]>;
181
181
  /** Canonical size type (0.2.0+). Use `size` prop with these values. */
@@ -230,7 +230,7 @@ declare const selectVariants: (props?: ({
230
230
  surface?: SurfaceLevel | null | undefined;
231
231
  } & class_variance_authority_types.ClassProp) | undefined) => string;
232
232
  declare const selectMessageVariants: (props?: ({
233
- state?: "default" | "error" | "success" | null | undefined;
233
+ state?: "error" | "success" | "default" | null | undefined;
234
234
  size?: "sm" | "md" | "lg" | null | undefined;
235
235
  } & class_variance_authority_types.ClassProp) | undefined) => string;
236
236
  type SelectState = NonNullable<VariantProps<typeof selectMessageVariants>["state"]>;
@@ -769,6 +769,12 @@ declare const DialogFooter: {
769
769
  };
770
770
  declare const DialogTitle: React.ForwardRefExoticComponent<Omit<Dialog$1.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
771
771
  declare const DialogDescription: React.ForwardRefExoticComponent<Omit<Dialog$1.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
772
+ /**
773
+ * DialogEyebrow — 제목 위 카테고리 overline(eyebrow). 2026 editorial 헤더 위계의 최상단.
774
+ * DialogHeader 안에서 DialogTitle '위'에 둔다(예: "시간 제어" / "시험 제어").
775
+ * 작은 uppercase + tracking + muted 색으로 title(bold)과 대비.
776
+ */
777
+ declare const DialogEyebrow: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
772
778
  /**
773
779
  * DialogRawContent — shadcn 기본 스타일 없는 순수 radix Content.
774
780
  * 자체 head/body/foot 슬롯을 가진 ModalShell 등 커스텀 구현용.
@@ -896,8 +902,8 @@ declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProp
896
902
  declare const PopoverArrow: React.ForwardRefExoticComponent<Omit<Popover$1.PopoverArrowProps & React.RefAttributes<SVGSVGElement>, "ref"> & React.RefAttributes<SVGSVGElement>>;
897
903
 
898
904
  declare const badgeVariants: (props?: ({
899
- variant?: "status" | "semantic" | "neutral" | "brand" | "pill" | "vibrant" | null | undefined;
900
- tone?: "accent" | "danger" | "success" | "info" | "warning" | "neutral" | null | undefined;
905
+ variant?: "brand" | "neutral" | "status" | "semantic" | "pill" | "vibrant" | null | undefined;
906
+ tone?: "accent" | "warning" | "info" | "success" | "neutral" | "danger" | null | undefined;
901
907
  size?: "xs" | "sm" | "md" | null | undefined;
902
908
  } & class_variance_authority_types.ClassProp) | undefined) => string;
903
909
  declare const badgeDotVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
@@ -915,7 +921,7 @@ declare const twoTierBadgeVariants: (props?: ({
915
921
  } & class_variance_authority_types.ClassProp) | undefined) => string;
916
922
  declare const twoTierBadgeLineVariants: (props?: ({
917
923
  tier?: "primary" | "secondary" | null | undefined;
918
- intent?: "danger" | "success" | "warning" | "neutral" | "brand" | "muted" | null | undefined;
924
+ intent?: "brand" | "muted" | "warning" | "success" | "neutral" | "danger" | null | undefined;
919
925
  } & class_variance_authority_types.ClassProp) | undefined) => string;
920
926
  type TwoTierBadgeIntent = NonNullable<VariantProps<typeof twoTierBadgeLineVariants>["intent"]>;
921
927
  interface TwoTierBadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof twoTierBadgeVariants> {
@@ -929,7 +935,7 @@ interface TwoTierBadgeProps extends React.HTMLAttributes<HTMLDivElement>, Varian
929
935
  declare const TwoTierBadge: React.ForwardRefExoticComponent<TwoTierBadgeProps & React.RefAttributes<HTMLDivElement>>;
930
936
 
931
937
  declare const statusBadgeVariants: (props?: ({
932
- status?: "error" | "success" | "info" | "warning" | "active" | "pending" | "archived" | null | undefined;
938
+ status?: "error" | "warning" | "info" | "success" | "active" | "pending" | "archived" | null | undefined;
933
939
  size?: "xs" | "sm" | "md" | null | undefined;
934
940
  } & class_variance_authority_types.ClassProp) | undefined) => string;
935
941
  declare const statusBadgeDotVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
@@ -959,12 +965,12 @@ declare const NotificationBadge: React.ForwardRefExoticComponent<NotificationBad
959
965
 
960
966
  declare const chipVariants: (props?: ({
961
967
  variant?: "filter" | "choice" | "removable" | "status-filter" | null | undefined;
962
- tone?: "accent" | "danger" | "success" | "warning" | "neutral" | "muted" | null | undefined;
968
+ tone?: "muted" | "accent" | "warning" | "success" | "neutral" | "danger" | null | undefined;
963
969
  size?: "sm" | "md" | "lg" | null | undefined;
964
970
  pressed?: boolean | null | undefined;
965
971
  } & class_variance_authority_types.ClassProp) | undefined) => string;
966
972
  declare const chipCountVariants: (props?: ({
967
- tone?: "accent" | "danger" | "success" | "warning" | "neutral" | "muted" | null | undefined;
973
+ tone?: "muted" | "accent" | "warning" | "success" | "neutral" | "danger" | null | undefined;
968
974
  size?: "sm" | "md" | "lg" | null | undefined;
969
975
  } & class_variance_authority_types.ClassProp) | undefined) => string;
970
976
  type ChipVariant = NonNullable<VariantProps<typeof chipVariants>["variant"]>;
@@ -1159,7 +1165,7 @@ interface ActionFooterProps extends Omit<React.HTMLAttributes<HTMLDivElement>, '
1159
1165
  declare const ActionFooter: React.ForwardRefExoticComponent<ActionFooterProps & React.RefAttributes<HTMLDivElement>>;
1160
1166
 
1161
1167
  declare const toastVariants: (props?: ({
1162
- variant?: "default" | "error" | "success" | "info" | "warning" | null | undefined;
1168
+ variant?: "error" | "warning" | "info" | "success" | "default" | null | undefined;
1163
1169
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1164
1170
  declare const toastViewportVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
1165
1171
  type ToastVariant = NonNullable<VariantProps<typeof toastVariants>['variant']>;
@@ -1200,19 +1206,19 @@ interface ToastProviderProps extends React.HTMLAttributes<HTMLDivElement> {
1200
1206
  declare function ToastProvider({ children, maxToasts, className, ...props }: ToastProviderProps): react_jsx_runtime.JSX.Element;
1201
1207
 
1202
1208
  declare const otpFieldVariants: (props?: ({
1203
- size?: "default" | "compact" | null | undefined;
1209
+ size?: "compact" | "default" | null | undefined;
1204
1210
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1205
1211
  declare const otpFieldGroupVariants: (props?: ({
1206
- size?: "default" | "compact" | null | undefined;
1212
+ size?: "compact" | "default" | null | undefined;
1207
1213
  fluid?: boolean | null | undefined;
1208
1214
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1209
1215
  declare const otpCellVariants: (props?: ({
1210
- size?: "default" | "compact" | null | undefined;
1216
+ size?: "compact" | "default" | null | undefined;
1211
1217
  fluid?: boolean | null | undefined;
1212
1218
  surface?: SurfaceLevel | null | undefined;
1213
1219
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1214
1220
  declare const otpFieldMessageVariants: (props?: ({
1215
- state?: "default" | "error" | null | undefined;
1221
+ state?: "error" | "default" | null | undefined;
1216
1222
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1217
1223
  type OTPFieldSize = NonNullable<VariantProps<typeof otpCellVariants>["size"]>;
1218
1224
  interface OTPFieldProps extends Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, "onChange" | "children" | "defaultValue" | "value">, VariantProps<typeof otpFieldVariants> {
@@ -1269,11 +1275,11 @@ declare const checkboxBoxVariants: (props?: ({
1269
1275
  size?: "sm" | "md" | null | undefined;
1270
1276
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1271
1277
  declare const checkboxGroupItemVariants: (props?: ({
1272
- appearance?: "plain" | "card" | null | undefined;
1278
+ appearance?: "card" | "plain" | null | undefined;
1273
1279
  density?: "compact" | "comfortable" | null | undefined;
1274
1280
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1275
1281
  declare const checkboxGroupBoxVariants: (props?: ({
1276
- appearance?: "plain" | "card" | null | undefined;
1282
+ appearance?: "card" | "plain" | null | undefined;
1277
1283
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1278
1284
  type CheckboxSize = NonNullable<VariantProps<typeof checkboxBoxVariants>["size"]>;
1279
1285
  type CheckboxCheckedState = React.ComponentProps<typeof Checkbox$1.Root>["checked"];
@@ -1298,7 +1304,7 @@ interface CheckboxProps extends Omit<React.ComponentPropsWithoutRef<typeof Check
1298
1304
  declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLButtonElement>>;
1299
1305
 
1300
1306
  declare const checkboxGroupVariants: (props?: ({
1301
- appearance?: "plain" | "card" | null | undefined;
1307
+ appearance?: "card" | "plain" | null | undefined;
1302
1308
  orientation?: "horizontal" | "vertical" | null | undefined;
1303
1309
  columns?: "one" | "two" | "three" | null | undefined;
1304
1310
  } & class_variance_authority_types.ClassProp) | undefined) => string;
@@ -1319,16 +1325,16 @@ interface CheckboxGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
1319
1325
  declare const CheckboxGroup: React.ForwardRefExoticComponent<CheckboxGroupProps & React.RefAttributes<HTMLDivElement>>;
1320
1326
 
1321
1327
  declare const radioGroupVariants: (props?: ({
1322
- appearance?: "plain" | "card" | null | undefined;
1328
+ appearance?: "card" | "plain" | null | undefined;
1323
1329
  orientation?: "horizontal" | "vertical" | null | undefined;
1324
1330
  columns?: "one" | "two" | "three" | null | undefined;
1325
1331
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1326
1332
  declare const radioVariants: (props?: ({
1327
- appearance?: "plain" | "card" | null | undefined;
1333
+ appearance?: "card" | "plain" | null | undefined;
1328
1334
  density?: "compact" | "comfortable" | null | undefined;
1329
1335
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1330
1336
  declare const radioControlVariants: (props?: ({
1331
- appearance?: "plain" | "card" | null | undefined;
1337
+ appearance?: "card" | "plain" | null | undefined;
1332
1338
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1333
1339
  type RadioGroupAppearance = NonNullable<VariantProps<typeof radioGroupVariants>["appearance"]>;
1334
1340
  type RadioGroupColumns = NonNullable<VariantProps<typeof radioGroupVariants>["columns"]>;
@@ -1465,4 +1471,4 @@ interface OrganizationLogoProps extends Omit<SVGProps<SVGSVGElement>, "width" |
1465
1471
  }
1466
1472
  declare function OrganizationLogo({ organization, size, className, style, role, "aria-label": ariaLabel, "aria-hidden": ariaHidden, ...props }: OrganizationLogoProps): react_jsx_runtime.JSX.Element;
1467
1473
 
1468
- 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, 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 };
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 };
package/dist/index.js CHANGED
@@ -3185,7 +3185,8 @@ var DialogOverlay = React18.forwardRef(({ className, ...props }, ref) => /* @__P
3185
3185
  ref,
3186
3186
  className: cn(
3187
3187
  "fixed inset-0 z-[var(--z-modal)]",
3188
- "bg-[var(--bg-base)]/80 backdrop-blur-sm",
3188
+ // 2026: 글래스모피즘 블러 제거 — 단정한 scrim 딤만(FE-skill anti-slop).
3189
+ "bg-[var(--bg-base)]/65",
3189
3190
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
3190
3191
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
3191
3192
  "motion-reduce:animate-none",
@@ -3205,8 +3206,12 @@ var DialogContent = React18.forwardRef(({ className, children, showCloseButton =
3205
3206
  "fixed left-1/2 top-1/2 z-[var(--z-modal)]",
3206
3207
  "-translate-x-1/2 -translate-y-1/2",
3207
3208
  "grid w-full max-w-lg gap-4 p-[var(--space-4)]",
3208
- "bg-raised text-foreground",
3209
- "border border-subtle rounded-[var(--radius-md)] shadow-elevation-4",
3209
+ // modal은 dim overlay 위 — 가장 밝은 DS surface(--bg-base #F1F3F5·여전히 tinted·순백 아님)로 깨끗하게.
3210
+ // arbitrary var 사용: 소비 site/app이 dist를 content-scan 안 해 `bg-base` 유틸이 purge될 수 있어 안전하게 var로.
3211
+ "bg-[var(--bg-base)] text-foreground",
3212
+ // 2026: generic 무거운 그림자 대신 floating elevation-8 + 또렷한 중립 grey border(--border·16%) + radius-lg.
3213
+ // (border-subtle=8%는 너무 흐려 가장자리가 안 보였음 → border-border로 grey 또렷하게.)
3214
+ "border border-border rounded-[var(--radius-lg)] shadow-elevation-8",
3210
3215
  "duration-200",
3211
3216
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
3212
3217
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
@@ -3246,7 +3251,8 @@ var DialogHeader = ({
3246
3251
  "div",
3247
3252
  {
3248
3253
  className: cn(
3249
- "flex flex-col space-y-[var(--space-1)] text-center sm:text-left",
3254
+ // 2026: 중앙정렬 폐기 — 좌측 정렬 editorial 헤더(eyebrow+title+desc 위계).
3255
+ "flex flex-col space-y-[var(--space-1)] text-left",
3250
3256
  className
3251
3257
  ),
3252
3258
  ...props
@@ -3260,7 +3266,12 @@ var DialogFooter = ({
3260
3266
  "div",
3261
3267
  {
3262
3268
  className: cn(
3263
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
3269
+ // 2026: 본문과 footer를 구분선으로 분리(edge-bleed로 full-width border). DialogContent의 p-4를
3270
+ // -mx/-mb로 상쇄해 구분선이 다이얼로그 가장자리까지 닿게 한다.
3271
+ "-mx-[var(--space-4)] -mb-[var(--space-4)] mt-[var(--space-2)]",
3272
+ "flex flex-col-reverse gap-[var(--space-2)] border-t border-border",
3273
+ "px-[var(--space-4)] pb-[var(--space-4)] pt-[var(--space-3)]",
3274
+ "sm:flex-row sm:justify-end",
3264
3275
  className
3265
3276
  ),
3266
3277
  ...props
@@ -3272,7 +3283,7 @@ var DialogTitle = React18.forwardRef(({ className, ...props }, ref) => /* @__PUR
3272
3283
  {
3273
3284
  ref,
3274
3285
  className: cn(
3275
- "text-lg font-semibold leading-tight tracking-tight text-foreground",
3286
+ "text-xl font-bold leading-tight tracking-tight text-foreground",
3276
3287
  className
3277
3288
  ),
3278
3289
  ...props
@@ -3283,11 +3294,23 @@ var DialogDescription = React18.forwardRef(({ className, ...props }, ref) => /*
3283
3294
  DialogPrimitive.Description,
3284
3295
  {
3285
3296
  ref,
3286
- className: cn("text-sm text-muted-foreground", className),
3297
+ className: cn("text-sm text-text-secondary", className),
3287
3298
  ...props
3288
3299
  }
3289
3300
  ));
3290
3301
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
3302
+ var DialogEyebrow = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
3303
+ "p",
3304
+ {
3305
+ ref,
3306
+ className: cn(
3307
+ "text-xs font-semibold uppercase tracking-wider text-muted-foreground",
3308
+ className
3309
+ ),
3310
+ ...props
3311
+ }
3312
+ ));
3313
+ DialogEyebrow.displayName = "DialogEyebrow";
3291
3314
  var DialogRawContent = DialogPrimitive.Content;
3292
3315
 
3293
3316
  // src/components/ui/form-modal.tsx
@@ -7012,6 +7035,39 @@ function getToastDuration(options) {
7012
7035
  }
7013
7036
  return options.variant === "error" ? 7e3 : 3e3;
7014
7037
  }
7038
+ function createToastTimer(durationMs, onExpire) {
7039
+ if (!Number.isFinite(durationMs)) {
7040
+ return { pause() {
7041
+ }, resume() {
7042
+ }, clear() {
7043
+ } };
7044
+ }
7045
+ let remaining = Math.max(0, durationMs);
7046
+ let startedAt = Date.now();
7047
+ let timeoutId;
7048
+ const clear = () => {
7049
+ if (timeoutId !== void 0) {
7050
+ clearTimeout(timeoutId);
7051
+ timeoutId = void 0;
7052
+ }
7053
+ };
7054
+ const schedule = () => {
7055
+ clear();
7056
+ startedAt = Date.now();
7057
+ timeoutId = setTimeout(onExpire, remaining);
7058
+ };
7059
+ const pause = () => {
7060
+ if (timeoutId === void 0) return;
7061
+ clear();
7062
+ remaining = Math.max(0, remaining - (Date.now() - startedAt));
7063
+ };
7064
+ const resume = () => {
7065
+ if (timeoutId !== void 0) return;
7066
+ schedule();
7067
+ };
7068
+ schedule();
7069
+ return { pause, resume, clear };
7070
+ }
7015
7071
  function createToast(options) {
7016
7072
  const id = `toast-${++toastCounter}`;
7017
7073
  toastItems = limitToasts([...toastItems, { id, ...options }]);
@@ -7059,10 +7115,27 @@ var ToastRoot = React36.forwardRef(
7059
7115
  duration,
7060
7116
  action,
7061
7117
  onClose,
7118
+ onMouseEnter,
7119
+ onMouseLeave,
7120
+ onFocus,
7121
+ onBlur,
7062
7122
  ...props
7063
7123
  }, ref) => {
7064
7124
  const Icon = toastIcons[variant];
7065
7125
  const hasIcon = Icon !== null;
7126
+ const durationMs = getToastDuration({ message, variant, duration });
7127
+ const onCloseRef = React36.useRef(onClose);
7128
+ onCloseRef.current = onClose;
7129
+ const timerRef = React36.useRef(null);
7130
+ React36.useEffect(() => {
7131
+ if (!onCloseRef.current) return void 0;
7132
+ const timer = createToastTimer(durationMs, () => onCloseRef.current?.());
7133
+ timerRef.current = timer;
7134
+ return () => {
7135
+ timer.clear();
7136
+ timerRef.current = null;
7137
+ };
7138
+ }, [durationMs]);
7066
7139
  return /* @__PURE__ */ jsxs41(
7067
7140
  "div",
7068
7141
  {
@@ -7071,12 +7144,28 @@ var ToastRoot = React36.forwardRef(
7071
7144
  "data-slot": "toast",
7072
7145
  "data-variant": variant,
7073
7146
  role: variant === "error" ? "alert" : "status",
7074
- "data-duration": getToastDuration({ message, variant, duration }),
7147
+ "data-duration": durationMs,
7075
7148
  className: cn(
7076
7149
  toastVariants({ variant }),
7077
7150
  hasIcon ? "grid-cols-[auto_1fr_auto]" : "grid-cols-[1fr_auto]",
7078
7151
  className
7079
7152
  ),
7153
+ onMouseEnter: (event) => {
7154
+ timerRef.current?.pause();
7155
+ onMouseEnter?.(event);
7156
+ },
7157
+ onMouseLeave: (event) => {
7158
+ timerRef.current?.resume();
7159
+ onMouseLeave?.(event);
7160
+ },
7161
+ onFocus: (event) => {
7162
+ timerRef.current?.pause();
7163
+ onFocus?.(event);
7164
+ },
7165
+ onBlur: (event) => {
7166
+ timerRef.current?.resume();
7167
+ onBlur?.(event);
7168
+ },
7080
7169
  ...props,
7081
7170
  children: [
7082
7171
  Icon ? /* @__PURE__ */ jsx46(
@@ -8586,6 +8675,7 @@ export {
8586
8675
  DialogClose,
8587
8676
  DialogContent,
8588
8677
  DialogDescription,
8678
+ DialogEyebrow,
8589
8679
  DialogFooter,
8590
8680
  DialogHeader,
8591
8681
  DialogOverlay,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@olundot/ui",
3
- "version": "0.10.1",
3
+ "version": "0.10.2",
4
4
  "description": "OLUN. shared React UI components built on OLUN design tokens",
5
5
  "license": "MIT",
6
6
  "keywords": [