@bestow-ui/react 1.3.0 → 1.4.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.cts CHANGED
@@ -80,13 +80,30 @@ declare const lightTokens: {
80
80
  type Widen<T> = {
81
81
  [K in keyof T]: T[K] extends string ? string : Widen<T[K]>;
82
82
  };
83
- type ThemeTokens = Widen<typeof lightTokens>;
84
83
  /**
85
- * 컴포넌트 스타일은 반드시 vars 를 통해 토큰을 참조한다.
86
- * CSS 변수 이름은 공개 API 다: `--bestow-color-primary-solid`, `--bestow-space-4`, `--bestow-font-line-height-normal` …
84
+ * 기본값이 없는 선택 토큰 — CSS 변수를 정의하지 않고, 쓰는 곳에서 `fallbackVar` 로 기존 토큰을 따른다.
85
+ * 그래서 넣지 않으면 화면이 그대로이고, 기존 토큰(border.default 등)을 덮어쓴 사용자 설정도 계속 따른다(하위 영역의 CSS 덮어쓰기 포함).
86
+ * - `color.border.input`·`inputHover` (1.x 추가): 입력 칸(Input·Select·Combobox·Textarea·인증번호 칸 등) 테두리. 기본은 border.default·border.strong.
87
+ * 흰 배경과 1.3:1 인 기본 테두리를 3:1 이상으로 올리려면 `strongInputBorders` 를 쓴다(2.0 에서 기본값이 될 예정).
87
88
  */
89
+ declare const optionalTokens: {
90
+ color: {
91
+ border: {
92
+ input: string;
93
+ inputHover: string;
94
+ };
95
+ };
96
+ };
97
+ type ThemeTokens = Widen<typeof lightTokens> & Widen<typeof optionalTokens>;
88
98
  declare const vars: {
89
99
  color: {
100
+ border: {
101
+ input: `var(--${string})`;
102
+ inputHover: `var(--${string})`;
103
+ default: `var(--${string})`;
104
+ strong: `var(--${string})`;
105
+ focus: `var(--${string})`;
106
+ };
90
107
  bg: {
91
108
  default: `var(--${string})`;
92
109
  subtle: `var(--${string})`;
@@ -100,11 +117,6 @@ declare const vars: {
100
117
  subtle: `var(--${string})`;
101
118
  inverse: `var(--${string})`;
102
119
  };
103
- border: {
104
- default: `var(--${string})`;
105
- strong: `var(--${string})`;
106
- focus: `var(--${string})`;
107
- };
108
120
  primary: {
109
121
  solid: `var(--${string})`;
110
122
  solidHover: `var(--${string})`;
@@ -259,6 +271,17 @@ type IntentName = 'primary' | 'neutral' | 'danger' | 'success' | 'warning';
259
271
  */
260
272
  declare function createIntentColors(intent: IntentName, color: string): ThemeInput;
261
273
 
274
+ /**
275
+ * 입력 칸 테두리를 배경과 3:1 이상으로 올리는 테마 입력 (WCAG 1.4.11 비텍스트 대비).
276
+ * 기본 테두리(border.default)는 흰 배경과 1.3:1 이라 칸의 경계가 잘 보이지 않는다 — 2.0 에서 기본값이 될 예정.
277
+ * hover 는 테두리보다 더 진하게(다크는 더 밝게) 바뀐다.
278
+ *
279
+ * @example
280
+ * <ThemeProvider overrides={createTheme(strongInputBorders)}>…</ThemeProvider>
281
+ * createTheme(createIntentColors('primary', '#7c3aed'), strongInputBorders) // 브랜드 테마와 함께
282
+ */
283
+ declare const strongInputBorders: ThemeInput;
284
+
262
285
  /**
263
286
  * 컴포넌트의 기본 문구. 모두 생략할 수 있고, 생략하면 각 컴포넌트의 한국어 기본값을 쓴다.
264
287
  * 우선순위: 컴포넌트에 직접 준 prop > LocaleProvider 의 messages > 한국어 기본값.
@@ -313,6 +336,10 @@ interface BestowMessages {
313
336
  fileTooMany?: (maxFiles: number) => string;
314
337
  /** ErrorSummary 제목 — "입력한 내용에 고칠 곳이 3개 있어요" (1.0 이후 추가, 선택 키) */
315
338
  errorSummaryTitle?: (count: number) => string;
339
+ /** DateRangePicker — "시작일", "종료일", 빠른 선택 묶음 이름 "빠른 선택" (1.0 이후 추가, 선택 키) */
340
+ dateRangeStart?: string;
341
+ dateRangeEnd?: string;
342
+ dateRangePresets?: string;
316
343
  /** Slider 범위 손잡이 — "최소", "최대" */
317
344
  rangeStart: string;
318
345
  rangeEnd: string;
@@ -520,6 +547,23 @@ interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {
520
547
  */
521
548
  declare const DescriptionList: react.ForwardRefExoticComponent<DescriptionListProps & react.RefAttributes<HTMLDListElement>>;
522
549
 
550
+ interface DateRange {
551
+ /** 시작일 'YYYY-MM-DD' (없으면 '') */
552
+ start: string;
553
+ /** 종료일 'YYYY-MM-DD' (없으면 '') */
554
+ end: string;
555
+ }
556
+ /** 빠른 선택 — 오늘에서 거슬러 올라간 기간. `days: 0` 은 오늘 하루 */
557
+ interface DateRangePreset {
558
+ label: string;
559
+ days?: number;
560
+ months?: number;
561
+ }
562
+ /** 조회 화면에서 흔한 빠른 선택(오늘·1주일·1개월·3개월). 그대로 넘기거나 골라 쓴다 */
563
+ declare const dateRangePresets: DateRangePreset[];
564
+ /** 빠른 선택이 가리키는 기간 (오늘 'YYYY-MM-DD' 기준) */
565
+ declare function presetRange(preset: DateRangePreset, today: string): DateRange;
566
+
523
567
  interface DividerProps extends HTMLAttributes<HTMLDivElement> {
524
568
  /** 방향. vertical 은 flex 행 안에서 부모 높이를 채운다 */
525
569
  orientation?: 'horizontal' | 'vertical';
@@ -1076,6 +1120,47 @@ interface DatePickerProps {
1076
1120
  */
1077
1121
  declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLInputElement>>;
1078
1122
 
1123
+ interface DateRangePickerProps {
1124
+ /** 기간 (제어 모드) */
1125
+ value?: DateRange;
1126
+ /** 처음 기간 (비제어 모드) */
1127
+ defaultValue?: DateRange;
1128
+ /** 시작일·종료일이 바뀔 때. 비었거나 고를 수 없는 날짜면 '' */
1129
+ onValueChange?: (range: DateRange) => void;
1130
+ /** 묶음 이름 (legend) — 예: "조회 기간" */
1131
+ label?: ReactNode;
1132
+ /** 시작일 칸 레이블 (기본 "시작일") */
1133
+ startLabel?: string;
1134
+ /** 종료일 칸 레이블 (기본 "종료일") */
1135
+ endLabel?: string;
1136
+ /** 빠른 선택 버튼 — 오늘에서 거슬러 올라간 기간 (`dateRangePresets` 를 그대로 넘겨도 된다) */
1137
+ presets?: DateRangePreset[];
1138
+ /** 고를 수 있는 가장 이른 날 */
1139
+ min?: string;
1140
+ /** 고를 수 있는 가장 늦은 날 */
1141
+ max?: string;
1142
+ isDateDisabled?: (date: Date) => boolean;
1143
+ isHoliday?: (date: Date) => boolean;
1144
+ /** "오늘" 을 고정한다 (빠른 선택의 기준, 달력의 오늘 표시 — 테스트·시각 회귀용) */
1145
+ today?: string;
1146
+ /** 묶음 아래 도움말 */
1147
+ helperText?: ReactNode;
1148
+ error?: boolean;
1149
+ required?: boolean;
1150
+ disabled?: boolean;
1151
+ /** form 제출용 이름 — 시작일·종료일 */
1152
+ startName?: string;
1153
+ endName?: string;
1154
+ /** fieldset 의 id (시작·종료 칸은 `${id}-start`, `${id}-end`) — ErrorSummary 링크가 가리키면 시작일로 간다 */
1155
+ id?: string;
1156
+ className?: string;
1157
+ }
1158
+ /**
1159
+ * 기간 선택 (조회 기간, 예약 기간). 시작일·종료일 DatePicker 두 개를 묶고, 시작일은 종료일보다 늦을 수 없게 서로 제한한다.
1160
+ * 빠른 선택(오늘·1주일·1개월…)은 현재 기간과 같으면 눌린 상태(aria-pressed)로 보인다.
1161
+ */
1162
+ declare const DateRangePicker: react.ForwardRefExoticComponent<DateRangePickerProps & react.RefAttributes<HTMLFieldSetElement>>;
1163
+
1079
1164
  interface DrawerProps {
1080
1165
  /** 열림 상태 (제어 모드) */
1081
1166
  open?: boolean;
@@ -1965,4 +2050,5 @@ interface VerificationCodeInputProps {
1965
2050
  */
1966
2051
  declare const VerificationCodeInput: react.ForwardRefExoticComponent<VerificationCodeInputProps & react.RefAttributes<HTMLInputElement>>;
1967
2052
 
1968
- export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, AddressInput, type AddressInputProps, type AddressProvider, type AddressSearchResult, type AddressValue, AgreementGroup, type AgreementGroupProps, type AgreementItem, Alert, type AlertColor, type AlertProps, AmountInput, type AmountInputProps, Avatar, type AvatarProps, Badge, type BadgeProps, type BestowMessages, type BestowTheme, Breadcrumb, type BreadcrumbItemData, type BreadcrumbProps, BusinessNumberInput, type BusinessNumberInputProps, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardBody, CardFooter, CardHeader, type CardProps, type CardSectionProps, Checkbox, type CheckboxProps, Combobox, type ComboboxOption, type ComboboxProps, DatePicker, type DatePickerProps, type DeepPartial, DescriptionList, type DescriptionListItem, type DescriptionListProps, Divider, type DividerProps, Drawer, DrawerClose, type DrawerProps, DropdownMenu, DropdownMenuCheckboxItem, type DropdownMenuCheckboxItemProps, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, type DropdownMenuProps, DropdownMenuRadioGroup, type DropdownMenuRadioGroupProps, DropdownMenuRadioItem, type DropdownMenuRadioItemProps, DropdownMenuSeparator, type DropdownMenuSeparatorProps, DropdownMenuSub, DropdownMenuSubContent, type DropdownMenuSubContentProps, type DropdownMenuSubProps, DropdownMenuSubTrigger, type DropdownMenuSubTriggerProps, DropdownMenuTrigger, type DropdownMenuTriggerProps, ErrorSummary, type ErrorSummaryItem, type ErrorSummaryProps, type FileRejection, type FileRejectionReason, FileUpload, type FileUploadProps, IconButton, type IconButtonProps, Input, type InputProps, type IntentName, Link, type LinkProps, LocaleProvider, type LocaleProviderProps, type Messages, Modal, ModalClose, type ModalProps, NumberInput, type NumberInputProps, Pagination, type PaginationItemType, type PaginationProps, PhoneNumberInput, type PhoneNumberInputProps, Popover, PopoverClose, type PopoverProps, Progress, type ProgressProps, RadioGroup, type RadioGroupProps, type RadioOption, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, type SelectOption, type SelectProps, Skeleton, type SkeletonProps, SkipLink, type SkipLinkProps, Slider, type SliderProps, Spinner, type SpinnerProps, Stack, type StackProps, Stepper, type StepperProps, type StepperStep, Switch, type SwitchProps, Table, type TableAlign, TableBody, TableCell, type TableCellProps, TableEmpty, type TableEmptyProps, TableFooter, TableHead, type TableHeadProps, TableHeader, type TableProps, TableRow, type TableRowProps, type TableSize, TableSkeleton, type TableSkeletonProps, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, TextField, type TextFieldProps, Textarea, type TextareaProps, type ThemeInput, type ThemeName, type ThemeOverrides, ThemeProvider, type ThemeProviderProps, type ThemeTokens, type ToastColor, type ToastContextValue, type ToastOptions, ToastProvider, type ToastProviderProps, Tooltip, type TooltipProps, Typography, type TypographyProps, type TypographyVariant, VerificationCodeInput, type VerificationCodeInputProps, VisuallyHidden, type VisuallyHiddenProps, composeExtraAddress, contrastRatio, createIntentColors, createTheme, en, focusField, formatBusinessNumber, formatKoreanAmount, formatKoreanDate, formatPhoneNumber, hasAllRequiredAgreements, isValidBusinessNumber, kakaoPostcodeProvider, parseISODate, themeClass, toISODate, useMessages, usePortalProps, useTableSelection, useTheme, useToast, vars };
2053
+ export { Accordion, AccordionItem, AddressInput, AgreementGroup, Alert, AmountInput, Avatar, Badge, Breadcrumb, BusinessNumberInput, Button, Calendar, Card, CardBody, CardFooter, CardHeader, Checkbox, Combobox, DatePicker, DateRangePicker, DescriptionList, Divider, Drawer, DrawerClose, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ErrorSummary, FileUpload, IconButton, Input, Link, LocaleProvider, Modal, ModalClose, NumberInput, Pagination, PhoneNumberInput, Popover, PopoverClose, Progress, RadioGroup, SegmentedControl, Select, Skeleton, SkipLink, Slider, Spinner, Stack, Stepper, Switch, Table, TableBody, TableCell, TableEmpty, TableFooter, TableHead, TableHeader, TableRow, TableSkeleton, Tabs, TabsContent, TabsList, TabsTrigger, TextField, Textarea, ThemeProvider, ToastProvider, Tooltip, Typography, VerificationCodeInput, VisuallyHidden, composeExtraAddress, contrastRatio, createIntentColors, createTheme, dateRangePresets, en, focusField, formatBusinessNumber, formatKoreanAmount, formatKoreanDate, formatPhoneNumber, hasAllRequiredAgreements, isValidBusinessNumber, kakaoPostcodeProvider, parseISODate, presetRange, strongInputBorders, themeClass, toISODate, useMessages, usePortalProps, useTableSelection, useTheme, useToast, vars };
2054
+ export type { AccordionItemProps, AccordionProps, AddressInputProps, AddressProvider, AddressSearchResult, AddressValue, AgreementGroupProps, AgreementItem, AlertColor, AlertProps, AmountInputProps, AvatarProps, BadgeProps, BestowMessages, BestowTheme, BreadcrumbItemData, BreadcrumbProps, BusinessNumberInputProps, ButtonProps, CalendarProps, CardProps, CardSectionProps, CheckboxProps, ComboboxOption, ComboboxProps, DatePickerProps, DateRange, DateRangePickerProps, DateRangePreset, DeepPartial, DescriptionListItem, DescriptionListProps, DividerProps, DrawerProps, DropdownMenuCheckboxItemProps, DropdownMenuContentProps, DropdownMenuItemProps, DropdownMenuLabelProps, DropdownMenuProps, DropdownMenuRadioGroupProps, DropdownMenuRadioItemProps, DropdownMenuSeparatorProps, DropdownMenuSubContentProps, DropdownMenuSubProps, DropdownMenuSubTriggerProps, DropdownMenuTriggerProps, ErrorSummaryItem, ErrorSummaryProps, FileRejection, FileRejectionReason, FileUploadProps, IconButtonProps, InputProps, IntentName, LinkProps, LocaleProviderProps, Messages, ModalProps, NumberInputProps, PaginationItemType, PaginationProps, PhoneNumberInputProps, PopoverProps, ProgressProps, RadioGroupProps, RadioOption, SegmentedControlOption, SegmentedControlProps, SelectOption, SelectProps, SkeletonProps, SkipLinkProps, SliderProps, SpinnerProps, StackProps, StepperProps, StepperStep, SwitchProps, TableAlign, TableCellProps, TableEmptyProps, TableHeadProps, TableProps, TableRowProps, TableSize, TableSkeletonProps, TabsContentProps, TabsListProps, TabsProps, TabsTriggerProps, TextFieldProps, TextareaProps, ThemeInput, ThemeName, ThemeOverrides, ThemeProviderProps, ThemeTokens, ToastColor, ToastContextValue, ToastOptions, ToastProviderProps, TooltipProps, TypographyProps, TypographyVariant, VerificationCodeInputProps, VisuallyHiddenProps };
package/dist/index.d.ts CHANGED
@@ -80,13 +80,30 @@ declare const lightTokens: {
80
80
  type Widen<T> = {
81
81
  [K in keyof T]: T[K] extends string ? string : Widen<T[K]>;
82
82
  };
83
- type ThemeTokens = Widen<typeof lightTokens>;
84
83
  /**
85
- * 컴포넌트 스타일은 반드시 vars 를 통해 토큰을 참조한다.
86
- * CSS 변수 이름은 공개 API 다: `--bestow-color-primary-solid`, `--bestow-space-4`, `--bestow-font-line-height-normal` …
84
+ * 기본값이 없는 선택 토큰 — CSS 변수를 정의하지 않고, 쓰는 곳에서 `fallbackVar` 로 기존 토큰을 따른다.
85
+ * 그래서 넣지 않으면 화면이 그대로이고, 기존 토큰(border.default 등)을 덮어쓴 사용자 설정도 계속 따른다(하위 영역의 CSS 덮어쓰기 포함).
86
+ * - `color.border.input`·`inputHover` (1.x 추가): 입력 칸(Input·Select·Combobox·Textarea·인증번호 칸 등) 테두리. 기본은 border.default·border.strong.
87
+ * 흰 배경과 1.3:1 인 기본 테두리를 3:1 이상으로 올리려면 `strongInputBorders` 를 쓴다(2.0 에서 기본값이 될 예정).
87
88
  */
89
+ declare const optionalTokens: {
90
+ color: {
91
+ border: {
92
+ input: string;
93
+ inputHover: string;
94
+ };
95
+ };
96
+ };
97
+ type ThemeTokens = Widen<typeof lightTokens> & Widen<typeof optionalTokens>;
88
98
  declare const vars: {
89
99
  color: {
100
+ border: {
101
+ input: `var(--${string})`;
102
+ inputHover: `var(--${string})`;
103
+ default: `var(--${string})`;
104
+ strong: `var(--${string})`;
105
+ focus: `var(--${string})`;
106
+ };
90
107
  bg: {
91
108
  default: `var(--${string})`;
92
109
  subtle: `var(--${string})`;
@@ -100,11 +117,6 @@ declare const vars: {
100
117
  subtle: `var(--${string})`;
101
118
  inverse: `var(--${string})`;
102
119
  };
103
- border: {
104
- default: `var(--${string})`;
105
- strong: `var(--${string})`;
106
- focus: `var(--${string})`;
107
- };
108
120
  primary: {
109
121
  solid: `var(--${string})`;
110
122
  solidHover: `var(--${string})`;
@@ -259,6 +271,17 @@ type IntentName = 'primary' | 'neutral' | 'danger' | 'success' | 'warning';
259
271
  */
260
272
  declare function createIntentColors(intent: IntentName, color: string): ThemeInput;
261
273
 
274
+ /**
275
+ * 입력 칸 테두리를 배경과 3:1 이상으로 올리는 테마 입력 (WCAG 1.4.11 비텍스트 대비).
276
+ * 기본 테두리(border.default)는 흰 배경과 1.3:1 이라 칸의 경계가 잘 보이지 않는다 — 2.0 에서 기본값이 될 예정.
277
+ * hover 는 테두리보다 더 진하게(다크는 더 밝게) 바뀐다.
278
+ *
279
+ * @example
280
+ * <ThemeProvider overrides={createTheme(strongInputBorders)}>…</ThemeProvider>
281
+ * createTheme(createIntentColors('primary', '#7c3aed'), strongInputBorders) // 브랜드 테마와 함께
282
+ */
283
+ declare const strongInputBorders: ThemeInput;
284
+
262
285
  /**
263
286
  * 컴포넌트의 기본 문구. 모두 생략할 수 있고, 생략하면 각 컴포넌트의 한국어 기본값을 쓴다.
264
287
  * 우선순위: 컴포넌트에 직접 준 prop > LocaleProvider 의 messages > 한국어 기본값.
@@ -313,6 +336,10 @@ interface BestowMessages {
313
336
  fileTooMany?: (maxFiles: number) => string;
314
337
  /** ErrorSummary 제목 — "입력한 내용에 고칠 곳이 3개 있어요" (1.0 이후 추가, 선택 키) */
315
338
  errorSummaryTitle?: (count: number) => string;
339
+ /** DateRangePicker — "시작일", "종료일", 빠른 선택 묶음 이름 "빠른 선택" (1.0 이후 추가, 선택 키) */
340
+ dateRangeStart?: string;
341
+ dateRangeEnd?: string;
342
+ dateRangePresets?: string;
316
343
  /** Slider 범위 손잡이 — "최소", "최대" */
317
344
  rangeStart: string;
318
345
  rangeEnd: string;
@@ -520,6 +547,23 @@ interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {
520
547
  */
521
548
  declare const DescriptionList: react.ForwardRefExoticComponent<DescriptionListProps & react.RefAttributes<HTMLDListElement>>;
522
549
 
550
+ interface DateRange {
551
+ /** 시작일 'YYYY-MM-DD' (없으면 '') */
552
+ start: string;
553
+ /** 종료일 'YYYY-MM-DD' (없으면 '') */
554
+ end: string;
555
+ }
556
+ /** 빠른 선택 — 오늘에서 거슬러 올라간 기간. `days: 0` 은 오늘 하루 */
557
+ interface DateRangePreset {
558
+ label: string;
559
+ days?: number;
560
+ months?: number;
561
+ }
562
+ /** 조회 화면에서 흔한 빠른 선택(오늘·1주일·1개월·3개월). 그대로 넘기거나 골라 쓴다 */
563
+ declare const dateRangePresets: DateRangePreset[];
564
+ /** 빠른 선택이 가리키는 기간 (오늘 'YYYY-MM-DD' 기준) */
565
+ declare function presetRange(preset: DateRangePreset, today: string): DateRange;
566
+
523
567
  interface DividerProps extends HTMLAttributes<HTMLDivElement> {
524
568
  /** 방향. vertical 은 flex 행 안에서 부모 높이를 채운다 */
525
569
  orientation?: 'horizontal' | 'vertical';
@@ -1076,6 +1120,47 @@ interface DatePickerProps {
1076
1120
  */
1077
1121
  declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLInputElement>>;
1078
1122
 
1123
+ interface DateRangePickerProps {
1124
+ /** 기간 (제어 모드) */
1125
+ value?: DateRange;
1126
+ /** 처음 기간 (비제어 모드) */
1127
+ defaultValue?: DateRange;
1128
+ /** 시작일·종료일이 바뀔 때. 비었거나 고를 수 없는 날짜면 '' */
1129
+ onValueChange?: (range: DateRange) => void;
1130
+ /** 묶음 이름 (legend) — 예: "조회 기간" */
1131
+ label?: ReactNode;
1132
+ /** 시작일 칸 레이블 (기본 "시작일") */
1133
+ startLabel?: string;
1134
+ /** 종료일 칸 레이블 (기본 "종료일") */
1135
+ endLabel?: string;
1136
+ /** 빠른 선택 버튼 — 오늘에서 거슬러 올라간 기간 (`dateRangePresets` 를 그대로 넘겨도 된다) */
1137
+ presets?: DateRangePreset[];
1138
+ /** 고를 수 있는 가장 이른 날 */
1139
+ min?: string;
1140
+ /** 고를 수 있는 가장 늦은 날 */
1141
+ max?: string;
1142
+ isDateDisabled?: (date: Date) => boolean;
1143
+ isHoliday?: (date: Date) => boolean;
1144
+ /** "오늘" 을 고정한다 (빠른 선택의 기준, 달력의 오늘 표시 — 테스트·시각 회귀용) */
1145
+ today?: string;
1146
+ /** 묶음 아래 도움말 */
1147
+ helperText?: ReactNode;
1148
+ error?: boolean;
1149
+ required?: boolean;
1150
+ disabled?: boolean;
1151
+ /** form 제출용 이름 — 시작일·종료일 */
1152
+ startName?: string;
1153
+ endName?: string;
1154
+ /** fieldset 의 id (시작·종료 칸은 `${id}-start`, `${id}-end`) — ErrorSummary 링크가 가리키면 시작일로 간다 */
1155
+ id?: string;
1156
+ className?: string;
1157
+ }
1158
+ /**
1159
+ * 기간 선택 (조회 기간, 예약 기간). 시작일·종료일 DatePicker 두 개를 묶고, 시작일은 종료일보다 늦을 수 없게 서로 제한한다.
1160
+ * 빠른 선택(오늘·1주일·1개월…)은 현재 기간과 같으면 눌린 상태(aria-pressed)로 보인다.
1161
+ */
1162
+ declare const DateRangePicker: react.ForwardRefExoticComponent<DateRangePickerProps & react.RefAttributes<HTMLFieldSetElement>>;
1163
+
1079
1164
  interface DrawerProps {
1080
1165
  /** 열림 상태 (제어 모드) */
1081
1166
  open?: boolean;
@@ -1965,4 +2050,5 @@ interface VerificationCodeInputProps {
1965
2050
  */
1966
2051
  declare const VerificationCodeInput: react.ForwardRefExoticComponent<VerificationCodeInputProps & react.RefAttributes<HTMLInputElement>>;
1967
2052
 
1968
- export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, AddressInput, type AddressInputProps, type AddressProvider, type AddressSearchResult, type AddressValue, AgreementGroup, type AgreementGroupProps, type AgreementItem, Alert, type AlertColor, type AlertProps, AmountInput, type AmountInputProps, Avatar, type AvatarProps, Badge, type BadgeProps, type BestowMessages, type BestowTheme, Breadcrumb, type BreadcrumbItemData, type BreadcrumbProps, BusinessNumberInput, type BusinessNumberInputProps, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardBody, CardFooter, CardHeader, type CardProps, type CardSectionProps, Checkbox, type CheckboxProps, Combobox, type ComboboxOption, type ComboboxProps, DatePicker, type DatePickerProps, type DeepPartial, DescriptionList, type DescriptionListItem, type DescriptionListProps, Divider, type DividerProps, Drawer, DrawerClose, type DrawerProps, DropdownMenu, DropdownMenuCheckboxItem, type DropdownMenuCheckboxItemProps, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, type DropdownMenuProps, DropdownMenuRadioGroup, type DropdownMenuRadioGroupProps, DropdownMenuRadioItem, type DropdownMenuRadioItemProps, DropdownMenuSeparator, type DropdownMenuSeparatorProps, DropdownMenuSub, DropdownMenuSubContent, type DropdownMenuSubContentProps, type DropdownMenuSubProps, DropdownMenuSubTrigger, type DropdownMenuSubTriggerProps, DropdownMenuTrigger, type DropdownMenuTriggerProps, ErrorSummary, type ErrorSummaryItem, type ErrorSummaryProps, type FileRejection, type FileRejectionReason, FileUpload, type FileUploadProps, IconButton, type IconButtonProps, Input, type InputProps, type IntentName, Link, type LinkProps, LocaleProvider, type LocaleProviderProps, type Messages, Modal, ModalClose, type ModalProps, NumberInput, type NumberInputProps, Pagination, type PaginationItemType, type PaginationProps, PhoneNumberInput, type PhoneNumberInputProps, Popover, PopoverClose, type PopoverProps, Progress, type ProgressProps, RadioGroup, type RadioGroupProps, type RadioOption, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, type SelectOption, type SelectProps, Skeleton, type SkeletonProps, SkipLink, type SkipLinkProps, Slider, type SliderProps, Spinner, type SpinnerProps, Stack, type StackProps, Stepper, type StepperProps, type StepperStep, Switch, type SwitchProps, Table, type TableAlign, TableBody, TableCell, type TableCellProps, TableEmpty, type TableEmptyProps, TableFooter, TableHead, type TableHeadProps, TableHeader, type TableProps, TableRow, type TableRowProps, type TableSize, TableSkeleton, type TableSkeletonProps, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, TextField, type TextFieldProps, Textarea, type TextareaProps, type ThemeInput, type ThemeName, type ThemeOverrides, ThemeProvider, type ThemeProviderProps, type ThemeTokens, type ToastColor, type ToastContextValue, type ToastOptions, ToastProvider, type ToastProviderProps, Tooltip, type TooltipProps, Typography, type TypographyProps, type TypographyVariant, VerificationCodeInput, type VerificationCodeInputProps, VisuallyHidden, type VisuallyHiddenProps, composeExtraAddress, contrastRatio, createIntentColors, createTheme, en, focusField, formatBusinessNumber, formatKoreanAmount, formatKoreanDate, formatPhoneNumber, hasAllRequiredAgreements, isValidBusinessNumber, kakaoPostcodeProvider, parseISODate, themeClass, toISODate, useMessages, usePortalProps, useTableSelection, useTheme, useToast, vars };
2053
+ export { Accordion, AccordionItem, AddressInput, AgreementGroup, Alert, AmountInput, Avatar, Badge, Breadcrumb, BusinessNumberInput, Button, Calendar, Card, CardBody, CardFooter, CardHeader, Checkbox, Combobox, DatePicker, DateRangePicker, DescriptionList, Divider, Drawer, DrawerClose, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ErrorSummary, FileUpload, IconButton, Input, Link, LocaleProvider, Modal, ModalClose, NumberInput, Pagination, PhoneNumberInput, Popover, PopoverClose, Progress, RadioGroup, SegmentedControl, Select, Skeleton, SkipLink, Slider, Spinner, Stack, Stepper, Switch, Table, TableBody, TableCell, TableEmpty, TableFooter, TableHead, TableHeader, TableRow, TableSkeleton, Tabs, TabsContent, TabsList, TabsTrigger, TextField, Textarea, ThemeProvider, ToastProvider, Tooltip, Typography, VerificationCodeInput, VisuallyHidden, composeExtraAddress, contrastRatio, createIntentColors, createTheme, dateRangePresets, en, focusField, formatBusinessNumber, formatKoreanAmount, formatKoreanDate, formatPhoneNumber, hasAllRequiredAgreements, isValidBusinessNumber, kakaoPostcodeProvider, parseISODate, presetRange, strongInputBorders, themeClass, toISODate, useMessages, usePortalProps, useTableSelection, useTheme, useToast, vars };
2054
+ export type { AccordionItemProps, AccordionProps, AddressInputProps, AddressProvider, AddressSearchResult, AddressValue, AgreementGroupProps, AgreementItem, AlertColor, AlertProps, AmountInputProps, AvatarProps, BadgeProps, BestowMessages, BestowTheme, BreadcrumbItemData, BreadcrumbProps, BusinessNumberInputProps, ButtonProps, CalendarProps, CardProps, CardSectionProps, CheckboxProps, ComboboxOption, ComboboxProps, DatePickerProps, DateRange, DateRangePickerProps, DateRangePreset, DeepPartial, DescriptionListItem, DescriptionListProps, DividerProps, DrawerProps, DropdownMenuCheckboxItemProps, DropdownMenuContentProps, DropdownMenuItemProps, DropdownMenuLabelProps, DropdownMenuProps, DropdownMenuRadioGroupProps, DropdownMenuRadioItemProps, DropdownMenuSeparatorProps, DropdownMenuSubContentProps, DropdownMenuSubProps, DropdownMenuSubTriggerProps, DropdownMenuTriggerProps, ErrorSummaryItem, ErrorSummaryProps, FileRejection, FileRejectionReason, FileUploadProps, IconButtonProps, InputProps, IntentName, LinkProps, LocaleProviderProps, Messages, ModalProps, NumberInputProps, PaginationItemType, PaginationProps, PhoneNumberInputProps, PopoverProps, ProgressProps, RadioGroupProps, RadioOption, SegmentedControlOption, SegmentedControlProps, SelectOption, SelectProps, SkeletonProps, SkipLinkProps, SliderProps, SpinnerProps, StackProps, StepperProps, StepperStep, SwitchProps, TableAlign, TableCellProps, TableEmptyProps, TableHeadProps, TableProps, TableRowProps, TableSize, TableSkeletonProps, TabsContentProps, TabsListProps, TabsProps, TabsTriggerProps, TextFieldProps, TextareaProps, ThemeInput, ThemeName, ThemeOverrides, ThemeProviderProps, ThemeTokens, ToastColor, ToastContextValue, ToastOptions, ToastProviderProps, TooltipProps, TypographyProps, TypographyVariant, VerificationCodeInputProps, VisuallyHiddenProps };
package/dist/shared.js CHANGED
@@ -3,6 +3,7 @@ import {
3
3
  composeExtraAddress,
4
4
  createTheme,
5
5
  cx,
6
+ dateRangePresets,
6
7
  focusField,
7
8
  formatBusinessNumber,
8
9
  formatKoreanAmount,
@@ -11,11 +12,12 @@ import {
11
12
  isValidBusinessNumber,
12
13
  kakaoPostcodeProvider,
13
14
  parseISODate,
15
+ presetRange,
14
16
  themeClass,
15
17
  toISODate,
16
18
  vars,
17
19
  visuallyHidden
18
- } from "./chunk-VH7JW6N7.js";
20
+ } from "./chunk-TIFI6ZQU.js";
19
21
 
20
22
  // src/theme/color.ts
21
23
  import { darkColors, lightColors, palette } from "@bestow-ui/tokens";
@@ -154,6 +156,14 @@ function createIntentColors(intent, color) {
154
156
  };
155
157
  }
156
158
 
159
+ // src/theme/presets.ts
160
+ var strongInputBorders = /* @__PURE__ */ Object.freeze({
161
+ // 라이트: gray600 / gray700 — 흰 배경 5.18:1, bg.subtle(gray50) 4.91:1
162
+ light: { color: { border: { input: "#666e76", inputHover: "#495057" } } },
163
+ // 다크: gray500 / gray300 — gray600 은 bg.subtle(gray900) 위에서 2.98:1 이라 한 단계 밝게. bg.default 8.57:1, bg.subtle 7.43:1
164
+ dark: { color: { border: { input: "#adb5bd", inputHover: "#dee2e6" } } }
165
+ });
166
+
157
167
  // src/i18n/en.ts
158
168
  var WEEKDAYS_LONG = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
159
169
  var MONTHS = [
@@ -197,6 +207,9 @@ var en = {
197
207
  fileTooLarge: (name, maxSize) => `${name}: files must be ${maxSize} or smaller.`,
198
208
  fileTypeNotAllowed: (name) => `${name}: this file type is not allowed.`,
199
209
  fileTooMany: (maxFiles) => `You can upload up to ${maxFiles} files.`,
210
+ dateRangeStart: "Start date",
211
+ dateRangeEnd: "End date",
212
+ dateRangePresets: "Quick select",
200
213
  errorSummaryTitle: (count) => `There ${count === 1 ? "is 1 problem" : `are ${count} problems`} with your answers`,
201
214
  rangeStart: "minimum",
202
215
  rangeEnd: "maximum",
@@ -472,6 +485,7 @@ export {
472
485
  contrastRatio,
473
486
  createIntentColors,
474
487
  createTheme,
488
+ dateRangePresets,
475
489
  en,
476
490
  focusField,
477
491
  formatBusinessNumber,
@@ -482,6 +496,8 @@ export {
482
496
  isValidBusinessNumber,
483
497
  kakaoPostcodeProvider,
484
498
  parseISODate,
499
+ presetRange,
500
+ strongInputBorders,
485
501
  themeClass,
486
502
  toISODate,
487
503
  vars