@lawkit/ui 0.1.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.
Files changed (99) hide show
  1. package/dist/index.css +1 -0
  2. package/dist/index.js +3325 -0
  3. package/dist/tokens/src/contracts/theme-contract.css.d.ts +65 -0
  4. package/dist/tokens/src/foundation/color-palette.d.ts +150 -0
  5. package/dist/tokens/src/foundation/spacing-scale.d.ts +17 -0
  6. package/dist/tokens/src/foundation/typography-scale.d.ts +79 -0
  7. package/dist/tokens/src/index.d.ts +11 -0
  8. package/dist/tokens/src/runtime/create-theme-vars.d.ts +9 -0
  9. package/dist/tokens/src/semantic/color-roles.d.ts +409 -0
  10. package/dist/tokens/src/semantic/text-styles.d.ts +548 -0
  11. package/dist/tokens/src/theme.runtime.d.ts +2 -0
  12. package/dist/tokens/src/themes/light-theme.css.d.ts +23 -0
  13. package/dist/ui-v3/src/components/Alert/Alert.css.d.ts +59 -0
  14. package/dist/ui-v3/src/components/Alert/index.d.ts +34 -0
  15. package/dist/ui-v3/src/components/Avatar/Avatar.css.d.ts +95 -0
  16. package/dist/ui-v3/src/components/Avatar/index.d.ts +56 -0
  17. package/dist/ui-v3/src/components/Button/Button.css.d.ts +45 -0
  18. package/dist/ui-v3/src/components/Button/index.d.ts +22 -0
  19. package/dist/ui-v3/src/components/ButtonGroup/ButtonGroup.css.d.ts +68 -0
  20. package/dist/ui-v3/src/components/ButtonGroup/index.d.ts +26 -0
  21. package/dist/ui-v3/src/components/ButtonTab/ButtonTab.css.d.ts +23 -0
  22. package/dist/ui-v3/src/components/ButtonTab/index.d.ts +19 -0
  23. package/dist/ui-v3/src/components/CalendarPopover/CalendarPopover.css.d.ts +72 -0
  24. package/dist/ui-v3/src/components/CalendarPopover/index.d.ts +61 -0
  25. package/dist/ui-v3/src/components/Card/Card.css.d.ts +15 -0
  26. package/dist/ui-v3/src/components/Card/index.d.ts +29 -0
  27. package/dist/ui-v3/src/components/ChartTooltip/ChartTooltip.css.d.ts +36 -0
  28. package/dist/ui-v3/src/components/ChartTooltip/index.d.ts +28 -0
  29. package/dist/ui-v3/src/components/Checkbox/Checkbox.css.d.ts +71 -0
  30. package/dist/ui-v3/src/components/Checkbox/index.d.ts +27 -0
  31. package/dist/ui-v3/src/components/ChipsNavigation/ChipsNavigation.css.d.ts +26 -0
  32. package/dist/ui-v3/src/components/ChipsNavigation/index.d.ts +21 -0
  33. package/dist/ui-v3/src/components/Collapse/Collapse.css.d.ts +67 -0
  34. package/dist/ui-v3/src/components/Collapse/index.d.ts +32 -0
  35. package/dist/ui-v3/src/components/DataTable/DataTable.css.d.ts +32 -0
  36. package/dist/ui-v3/src/components/DataTable/index.d.ts +47 -0
  37. package/dist/ui-v3/src/components/DatePicker/DatePicker.css.d.ts +88 -0
  38. package/dist/ui-v3/src/components/DatePicker/index.d.ts +57 -0
  39. package/dist/ui-v3/src/components/Dropdown/Dropdown.css.d.ts +78 -0
  40. package/dist/ui-v3/src/components/Dropdown/index.d.ts +37 -0
  41. package/dist/ui-v3/src/components/FileUpload/FileUpload.css.d.ts +49 -0
  42. package/dist/ui-v3/src/components/FileUpload/index.d.ts +98 -0
  43. package/dist/ui-v3/src/components/IconButtonGroup/IconButtonGroup.css.d.ts +52 -0
  44. package/dist/ui-v3/src/components/IconButtonGroup/index.d.ts +23 -0
  45. package/dist/ui-v3/src/components/InfoPopover/InfoPopover.css.d.ts +9 -0
  46. package/dist/ui-v3/src/components/InfoPopover/index.d.ts +38 -0
  47. package/dist/ui-v3/src/components/Input/Input.css.d.ts +99 -0
  48. package/dist/ui-v3/src/components/Input/index.d.ts +86 -0
  49. package/dist/ui-v3/src/components/ListGroup/ListGroup.css.d.ts +47 -0
  50. package/dist/ui-v3/src/components/ListGroup/index.d.ts +30 -0
  51. package/dist/ui-v3/src/components/Mention/Mention.css.d.ts +1 -0
  52. package/dist/ui-v3/src/components/Mention/index.d.ts +15 -0
  53. package/dist/ui-v3/src/components/Modal/Modal.css.d.ts +23 -0
  54. package/dist/ui-v3/src/components/Modal/index.d.ts +34 -0
  55. package/dist/ui-v3/src/components/NavigationTab/NavigationTab.css.d.ts +18 -0
  56. package/dist/ui-v3/src/components/NavigationTab/index.d.ts +20 -0
  57. package/dist/ui-v3/src/components/NumberInput/NumberInput.css.d.ts +45 -0
  58. package/dist/ui-v3/src/components/NumberInput/index.d.ts +32 -0
  59. package/dist/ui-v3/src/components/Pagination/Pagination.css.d.ts +20 -0
  60. package/dist/ui-v3/src/components/Pagination/index.d.ts +18 -0
  61. package/dist/ui-v3/src/components/Popover/Popover.css.d.ts +65 -0
  62. package/dist/ui-v3/src/components/Popover/index.d.ts +39 -0
  63. package/dist/ui-v3/src/components/Progress/Progress.css.d.ts +60 -0
  64. package/dist/ui-v3/src/components/Progress/index.d.ts +36 -0
  65. package/dist/ui-v3/src/components/Radio/Radio.css.d.ts +55 -0
  66. package/dist/ui-v3/src/components/Radio/index.d.ts +64 -0
  67. package/dist/ui-v3/src/components/Skeleton/Skeleton.css.d.ts +19 -0
  68. package/dist/ui-v3/src/components/Skeleton/index.d.ts +52 -0
  69. package/dist/ui-v3/src/components/Slider/Slider.css.d.ts +10 -0
  70. package/dist/ui-v3/src/components/Slider/index.d.ts +66 -0
  71. package/dist/ui-v3/src/components/Spinner/Spinner.css.d.ts +68 -0
  72. package/dist/ui-v3/src/components/Spinner/index.d.ts +22 -0
  73. package/dist/ui-v3/src/components/SweetAlert/SweetAlert.css.d.ts +37 -0
  74. package/dist/ui-v3/src/components/SweetAlert/index.d.ts +25 -0
  75. package/dist/ui-v3/src/components/Switch/Switch.css.d.ts +46 -0
  76. package/dist/ui-v3/src/components/Switch/index.d.ts +26 -0
  77. package/dist/ui-v3/src/components/Tabs/Tabs.css.d.ts +55 -0
  78. package/dist/ui-v3/src/components/Tabs/index.d.ts +29 -0
  79. package/dist/ui-v3/src/components/TagSelect/TagSelect.css.d.ts +12 -0
  80. package/dist/ui-v3/src/components/TagSelect/index.d.ts +37 -0
  81. package/dist/ui-v3/src/components/Toast/Toast.css.d.ts +97 -0
  82. package/dist/ui-v3/src/components/Toast/index.d.ts +57 -0
  83. package/dist/ui-v3/src/components/Tooltip/Tooltip.css.d.ts +60 -0
  84. package/dist/ui-v3/src/components/Tooltip/index.d.ts +26 -0
  85. package/dist/ui-v3/src/components/TreeView/TreeView.css.d.ts +103 -0
  86. package/dist/ui-v3/src/components/TreeView/index.d.ts +72 -0
  87. package/dist/ui-v3/src/components/Widget/Widget.css.d.ts +52 -0
  88. package/dist/ui-v3/src/components/Widget/index.d.ts +109 -0
  89. package/dist/ui-v3/src/foundations/field/Field.d.ts +20 -0
  90. package/dist/ui-v3/src/foundations/field/field.css.d.ts +70 -0
  91. package/dist/ui-v3/src/foundations/field/index.d.ts +2 -0
  92. package/dist/ui-v3/src/index.d.ts +80 -0
  93. package/dist/ui-v3/src/lib/Portal.d.ts +6 -0
  94. package/dist/ui-v3/src/lib/cx.d.ts +1 -0
  95. package/dist/ui-v3/src/lib/cx.test.d.ts +1 -0
  96. package/dist/ui-v3/src/lib/useFocusTrap.d.ts +2 -0
  97. package/dist/ui-v3/src/styles/shared.css.d.ts +15 -0
  98. package/dist/ui-v3/src/styles/sprinkles.css.d.ts +29 -0
  99. package/package.json +67 -0
@@ -0,0 +1,27 @@
1
+ import { InputHTMLAttributes } from 'react';
2
+ export type CheckboxSize = "small" | "medium" | "large";
3
+ export interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "type"> {
4
+ /** 사이즈 */
5
+ size?: CheckboxSize;
6
+ /** 체크 상태 */
7
+ checked?: boolean;
8
+ /** 라벨 텍스트 */
9
+ label?: string;
10
+ /** 변경 핸들러 */
11
+ onCheckedChange?: (checked: boolean) => void;
12
+ }
13
+ /**
14
+ * **Checkbox**
15
+ *
16
+ * 체크박스 폼 컨트롤.
17
+ *
18
+ * - `size`: small(12px) / medium(14px) / large(18px)
19
+ * - Checked: 파란 배경 + 흰 체크 아이콘
20
+ * - Disabled Unchecked: 회색 배경
21
+ * - Disabled Checked: 파란 배경 opacity 0.65
22
+ *
23
+ * ```tsx
24
+ * <Checkbox label="동의합니다" checked={agreed} onCheckedChange={setAgreed} />
25
+ * ```
26
+ */
27
+ export declare function Checkbox({ size, checked, label, disabled, onCheckedChange, onChange, className, ...rest }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,26 @@
1
+ export declare const root: string;
2
+ export declare const divider: string;
3
+ export declare const options: string;
4
+ export declare const chip: import('@vanilla-extract/recipes').RuntimeFn<{
5
+ active: {
6
+ true: {
7
+ backgroundColor: "#343434";
8
+ color: string;
9
+ selectors: {
10
+ "&:hover": {
11
+ opacity: number;
12
+ };
13
+ };
14
+ };
15
+ false: {
16
+ backgroundColor: "#3434341F";
17
+ color: string;
18
+ selectors: {
19
+ "&:hover": {
20
+ backgroundColor: "#34343433";
21
+ };
22
+ };
23
+ };
24
+ };
25
+ }>;
26
+ export declare const checkIcon: string;
@@ -0,0 +1,21 @@
1
+ export interface ChipsNavigationItem {
2
+ /** 고유 식별 값 */
3
+ value: string;
4
+ /** 표시 텍스트 */
5
+ label: string;
6
+ }
7
+ export interface ChipsNavigationProps {
8
+ /** 옵션 목록 */
9
+ items: ChipsNavigationItem[];
10
+ /** 선택된 값 (단일 선택 시 string, 다중 선택 시 string[]) */
11
+ value?: string | string[];
12
+ /** 값 변경 핸들러 */
13
+ onChange?: (value: string | string[]) => void;
14
+ /** 다중 선택 모드 */
15
+ multiple?: boolean;
16
+ /** "All" 칩 텍스트 */
17
+ allLabel?: string;
18
+ /** 추가 className */
19
+ className?: string;
20
+ }
21
+ export declare function ChipsNavigation({ items, value, onChange, multiple, allLabel, className, }: ChipsNavigationProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,67 @@
1
+ export declare const root: import('@vanilla-extract/recipes').RuntimeFn<{
2
+ variant: {
3
+ default: {};
4
+ shadow: {};
5
+ border: {};
6
+ margin: {};
7
+ };
8
+ expanded: {
9
+ true: {};
10
+ false: {};
11
+ };
12
+ }>;
13
+ export declare const header: import('@vanilla-extract/recipes').RuntimeFn<{
14
+ variant: {
15
+ default: {
16
+ borderBottom: `1px solid ${string}`;
17
+ };
18
+ shadow: {};
19
+ border: {};
20
+ margin: {};
21
+ };
22
+ }>;
23
+ export declare const chevron: import('@vanilla-extract/recipes').RuntimeFn<{
24
+ expanded: {
25
+ true: {
26
+ transform: "rotate(180deg)";
27
+ };
28
+ false: {
29
+ transform: "rotate(0deg)";
30
+ };
31
+ };
32
+ }>;
33
+ export declare const headerText: string;
34
+ export declare const headerAction: string;
35
+ export declare const content: import('@vanilla-extract/recipes').RuntimeFn<{
36
+ expanded: {
37
+ true: {
38
+ gridTemplateRows: "1fr";
39
+ };
40
+ false: {
41
+ gridTemplateRows: "0fr";
42
+ };
43
+ };
44
+ }>;
45
+ export declare const contentInner: import('@vanilla-extract/recipes').RuntimeFn<{
46
+ variant: {
47
+ default: {};
48
+ shadow: {
49
+ borderTop: `1px solid ${string}`;
50
+ };
51
+ border: {
52
+ borderTop: `1px solid ${string}`;
53
+ };
54
+ margin: {};
55
+ };
56
+ }>;
57
+ export declare const contentBody: string;
58
+ export declare const group: import('@vanilla-extract/recipes').RuntimeFn<{
59
+ variant: {
60
+ default: {};
61
+ shadow: {};
62
+ border: {};
63
+ margin: {
64
+ gap: `var(--${string})`;
65
+ };
66
+ };
67
+ }>;
@@ -0,0 +1,32 @@
1
+ import { ReactNode } from 'react';
2
+ export type CollapseVariant = "default" | "shadow" | "border" | "margin";
3
+ export interface CollapseProps {
4
+ /** 스타일 변형 */
5
+ variant?: CollapseVariant;
6
+ /** 헤더 텍스트 */
7
+ header: ReactNode;
8
+ /** 우측 액션 아이콘 */
9
+ action?: ReactNode;
10
+ /** 펼침 상태 (controlled) */
11
+ expanded?: boolean;
12
+ /** 초기 펼침 상태 (uncontrolled) */
13
+ defaultExpanded?: boolean;
14
+ /** 토글 핸들러 */
15
+ onToggle?: (expanded: boolean) => void;
16
+ /** 콘텐츠 */
17
+ children?: ReactNode;
18
+ /** 추가 className */
19
+ className?: string;
20
+ }
21
+ export declare function Collapse({ variant, header, action, expanded: controlledExpanded, defaultExpanded, onToggle, children, className, }: CollapseProps): import("react/jsx-runtime").JSX.Element;
22
+ export interface CollapseGroupProps {
23
+ /** 스타일 변형 (자식에게 전파) */
24
+ variant?: CollapseVariant;
25
+ /** 단일 패널만 열기 (accordion 모드) */
26
+ accordion?: boolean;
27
+ /** children (Collapse 컴포넌트들) */
28
+ children?: ReactNode;
29
+ /** 추가 className */
30
+ className?: string;
31
+ }
32
+ export declare function CollapseGroup({ variant, children, className, }: CollapseGroupProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,32 @@
1
+ export declare const wrapper: string;
2
+ export declare const table: string;
3
+ export declare const thead: string;
4
+ export declare const th: string;
5
+ export declare const thSortable: string;
6
+ export declare const thInner: string;
7
+ export declare const sortIcon: import('@vanilla-extract/recipes').RuntimeFn<{
8
+ active: {
9
+ true: {
10
+ opacity: number;
11
+ color: string;
12
+ };
13
+ false: {};
14
+ };
15
+ direction: {
16
+ asc: {
17
+ transform: "rotate(180deg)";
18
+ };
19
+ desc: {};
20
+ };
21
+ }>;
22
+ export declare const tbody: string;
23
+ export declare const tr: string;
24
+ export declare const trSelected: string;
25
+ export declare const td: string;
26
+ export declare const tableBordered: string;
27
+ export declare const tdBordered: string;
28
+ export declare const thBordered: string;
29
+ export declare const checkboxCell: string;
30
+ export declare const checkbox: string;
31
+ export declare const emptyRow: string;
32
+ export declare const emptyCell: string;
@@ -0,0 +1,47 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ import { ColumnDef, SortingState, RowSelectionState, OnChangeFn } from '@tanstack/react-table';
3
+ export type { ColumnDef, SortingState, RowSelectionState };
4
+ export interface DataTableProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
5
+ /** 테이블 데이터 */
6
+ data: T[];
7
+ /** @tanstack/react-table ColumnDef 배열 */
8
+ columns: ColumnDef<T, any>[];
9
+ /** 행 선택 체크박스 표시 */
10
+ selectable?: boolean;
11
+ /** 세로 구분선 표시 */
12
+ bordered?: boolean;
13
+ /** 정렬 상태 (controlled) */
14
+ sorting?: SortingState;
15
+ /** 정렬 상태 변경 콜백 */
16
+ onSortingChange?: OnChangeFn<SortingState>;
17
+ /** 행 선택 상태 (controlled) */
18
+ rowSelection?: RowSelectionState;
19
+ /** 행 선택 상태 변경 콜백 */
20
+ onRowSelectionChange?: OnChangeFn<RowSelectionState>;
21
+ /** 행 클릭 콜백 */
22
+ onRowClick?: (row: T) => void;
23
+ /** 데이터 없을 때 표시 메시지 */
24
+ emptyText?: ReactNode;
25
+ /** 행의 고유 ID를 반환하는 함수 */
26
+ getRowId?: (row: T) => string;
27
+ }
28
+ /**
29
+ * **DataTable**
30
+ *
31
+ * @tanstack/react-table 기반 데이터 테이블 컴포넌트.
32
+ *
33
+ * - `selectable`: 행 선택 체크박스 자동 추가
34
+ * - `bordered`: 세로 구분선 표시
35
+ * - `sorting` / `onSortingChange`: 정렬 상태 제어
36
+ * - `rowSelection` / `onRowSelectionChange`: 행 선택 제어
37
+ *
38
+ * ```tsx
39
+ * const columns: ColumnDef<Item>[] = [
40
+ * { accessorKey: "name", header: "이름" },
41
+ * { accessorKey: "email", header: "이메일" },
42
+ * ];
43
+ *
44
+ * <DataTable data={items} columns={columns} selectable bordered />
45
+ * ```
46
+ */
47
+ export declare function DataTable<T>({ data, columns, selectable, bordered, sorting: controlledSorting, onSortingChange, rowSelection: controlledRowSelection, onRowSelectionChange, onRowClick, emptyText, getRowId, className, ...rest }: DataTableProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,88 @@
1
+ export declare const container: string;
2
+ export declare const calendarPanel: string;
3
+ export declare const header: string;
4
+ export declare const headerTitle: string;
5
+ export declare const navButton: string;
6
+ export declare const navPlaceholder: string;
7
+ export declare const weekdays: string;
8
+ export declare const weekdayLabel: string;
9
+ export declare const divider: string;
10
+ export declare const dateGrid: string;
11
+ export declare const dateCell: string;
12
+ export declare const dateButton: import('@vanilla-extract/recipes').RuntimeFn<{
13
+ state: {
14
+ default: {
15
+ color: "#4c5469";
16
+ ":hover": {
17
+ backgroundColor: "rgba(158, 167, 184, 0.12)";
18
+ borderColor: "#cfd5e1";
19
+ };
20
+ ":focus-visible": {
21
+ borderColor: string;
22
+ };
23
+ };
24
+ today: {
25
+ color: string;
26
+ fontWeight: `var(--${string})`;
27
+ ":hover": {
28
+ backgroundColor: "rgba(158, 167, 184, 0.12)";
29
+ borderColor: "#cfd5e1";
30
+ };
31
+ ":focus-visible": {
32
+ borderColor: string;
33
+ };
34
+ };
35
+ selected: {
36
+ backgroundColor: string;
37
+ color: string;
38
+ ":hover": {
39
+ backgroundColor: string;
40
+ };
41
+ };
42
+ disabled: {
43
+ color: string;
44
+ cursor: "not-allowed";
45
+ };
46
+ outside: {
47
+ color: "#d1d1d1";
48
+ cursor: "default";
49
+ };
50
+ rangeStart: {
51
+ backgroundColor: string;
52
+ color: string;
53
+ };
54
+ rangeEnd: {
55
+ backgroundColor: string;
56
+ color: string;
57
+ };
58
+ inRange: {
59
+ color: string;
60
+ ":hover": {
61
+ backgroundColor: "rgba(158, 167, 184, 0.12)";
62
+ borderColor: "#cfd5e1";
63
+ };
64
+ };
65
+ };
66
+ }>;
67
+ export declare const rangeBg: import('@vanilla-extract/recipes').RuntimeFn<{
68
+ position: {
69
+ start: {
70
+ left: "50%";
71
+ backgroundColor: "rgba(33, 81, 236, 0.12)";
72
+ };
73
+ middle: {
74
+ backgroundColor: "rgba(33, 81, 236, 0.12)";
75
+ };
76
+ end: {
77
+ right: "50%";
78
+ backgroundColor: "rgba(33, 81, 236, 0.12)";
79
+ };
80
+ none: {};
81
+ };
82
+ }>;
83
+ export declare const timeRow: string;
84
+ export declare const timeInput: string;
85
+ export declare const timeSeparator: string;
86
+ export declare const amPmToggle: string;
87
+ export declare const rangeContainer: string;
88
+ export declare const verticalDivider: string;
@@ -0,0 +1,57 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export interface DatePickerProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
3
+ /** 선택된 날짜 */
4
+ value?: Date | null;
5
+ /** 날짜 변경 콜백 */
6
+ onChange?: (date: Date) => void;
7
+ /** 시간 선택 표시 */
8
+ showTime?: boolean;
9
+ /** 최소 선택 가능 날짜 */
10
+ minDate?: Date;
11
+ /** 최대 선택 가능 날짜 */
12
+ maxDate?: Date;
13
+ }
14
+ export interface DateRangePickerProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
15
+ /** 시작 날짜 */
16
+ startDate?: Date | null;
17
+ /** 종료 날짜 */
18
+ endDate?: Date | null;
19
+ /** 범위 변경 콜백 */
20
+ onChange?: (range: {
21
+ start: Date | null;
22
+ end: Date | null;
23
+ }) => void;
24
+ }
25
+ /**
26
+ * **DatePicker**
27
+ *
28
+ * 날짜 선택 캘린더 패널.
29
+ *
30
+ * - 단일 날짜 선택
31
+ * - `showTime`으로 시간 입력 추가 가능
32
+ * - `minDate` / `maxDate`로 선택 범위 제한
33
+ *
34
+ * ```tsx
35
+ * <DatePicker value={date} onChange={setDate} />
36
+ * <DatePicker value={date} onChange={setDate} showTime />
37
+ * ```
38
+ */
39
+ export declare function DatePicker({ value, onChange, showTime, minDate, maxDate, className, ...rest }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
40
+ /**
41
+ * **DateRangePicker**
42
+ *
43
+ * 날짜 범위 선택을 위한 듀얼 캘린더 패널.
44
+ *
45
+ * - 좌측: 현재 월, 우측: 다음 월
46
+ * - 시작일 → 종료일 순서로 클릭하여 범위 선택
47
+ * - 호버 시 범위 미리보기
48
+ *
49
+ * ```tsx
50
+ * <DateRangePicker
51
+ * startDate={start}
52
+ * endDate={end}
53
+ * onChange={({ start, end }) => { setStart(start); setEnd(end); }}
54
+ * />
55
+ * ```
56
+ */
57
+ export declare function DateRangePicker({ startDate, endDate, onChange, className, ...rest }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,78 @@
1
+ export declare const trigger: import('@vanilla-extract/recipes').RuntimeFn<{
2
+ size: {
3
+ small: {
4
+ height: number;
5
+ padding: `0 var(--${string})`;
6
+ fontSize: `var(--${string})`;
7
+ };
8
+ medium: {
9
+ height: number;
10
+ padding: `0 var(--${string})`;
11
+ fontSize: `var(--${string})`;
12
+ };
13
+ large: {
14
+ height: number;
15
+ padding: `0 var(--${string})`;
16
+ fontSize: `var(--${string})`;
17
+ };
18
+ };
19
+ open: {
20
+ true: {
21
+ borderColor: string;
22
+ };
23
+ false: {};
24
+ };
25
+ disabled: {
26
+ true: {
27
+ opacity: number;
28
+ cursor: "not-allowed";
29
+ pointerEvents: "none";
30
+ };
31
+ false: {};
32
+ };
33
+ }>;
34
+ export declare const triggerIcon: string;
35
+ export declare const triggerLabel: string;
36
+ export declare const placeholder: string;
37
+ export declare const chevron: import('@vanilla-extract/recipes').RuntimeFn<{
38
+ open: {
39
+ true: {
40
+ transform: "rotate(180deg)";
41
+ };
42
+ false: {
43
+ transform: "rotate(0deg)";
44
+ };
45
+ };
46
+ }>;
47
+ export declare const wrapper: string;
48
+ export declare const panel: string;
49
+ export declare const option: import('@vanilla-extract/recipes').RuntimeFn<{
50
+ selected: {
51
+ true: {
52
+ color: string;
53
+ backgroundColor: "rgba(33, 81, 236, 0.12)";
54
+ };
55
+ false: {};
56
+ };
57
+ disabled: {
58
+ true: {
59
+ opacity: number;
60
+ cursor: "not-allowed";
61
+ pointerEvents: "none";
62
+ };
63
+ false: {};
64
+ };
65
+ }>;
66
+ export declare const optionTextGroup: string;
67
+ export declare const optionDescription: string;
68
+ export declare const checkbox: import('@vanilla-extract/recipes').RuntimeFn<{
69
+ checked: {
70
+ true: {
71
+ backgroundColor: string;
72
+ borderColor: string;
73
+ color: string;
74
+ };
75
+ false: {};
76
+ };
77
+ }>;
78
+ export declare const panelHeader: string;
@@ -0,0 +1,37 @@
1
+ import { ReactNode } from 'react';
2
+ export type DropdownSize = "small" | "medium" | "large";
3
+ export interface DropdownOption {
4
+ /** 옵션 값 */
5
+ value: string;
6
+ /** 표시 텍스트 */
7
+ label: string;
8
+ /** 설명 (Multi Level 모드) */
9
+ description?: string;
10
+ /** 비활성화 */
11
+ disabled?: boolean;
12
+ }
13
+ export interface DropdownProps {
14
+ /** 크기 */
15
+ size?: DropdownSize;
16
+ /** 옵션 목록 */
17
+ options: DropdownOption[];
18
+ /** 선택된 값 (controlled) — 다중 선택 시 배열 */
19
+ value?: string | string[];
20
+ /** 기본 선택 값 (uncontrolled) */
21
+ defaultValue?: string | string[];
22
+ /** 변경 핸들러 */
23
+ onChange?: (value: string | string[]) => void;
24
+ /** 플레이스홀더 */
25
+ placeholder?: string;
26
+ /** 좌측 아이콘 */
27
+ icon?: ReactNode;
28
+ /** 다중 선택 (체크박스 모드) */
29
+ multiple?: boolean;
30
+ /** 패널 헤더 텍스트 (Multi Check 모드) */
31
+ panelHeader?: string;
32
+ /** 비활성화 */
33
+ disabled?: boolean;
34
+ /** 추가 className */
35
+ className?: string;
36
+ }
37
+ export declare function Dropdown({ size, options, value: controlledValue, defaultValue, onChange, placeholder, icon, multiple, panelHeader, disabled, className, }: DropdownProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,49 @@
1
+ /** gradient border 외곽 */
2
+ export declare const uploadAreaOuter: string;
3
+ /** 내부 흰색 영역 */
4
+ export declare const uploadAreaInner: string;
5
+ /** 상단 텍스트 영역 */
6
+ export declare const uploadTextGroup: string;
7
+ export declare const uploadTitle: string;
8
+ export declare const uploadDescription: string;
9
+ /** 버튼 그룹 */
10
+ export declare const uploadButtons: string;
11
+ export declare const attachButton: string;
12
+ export declare const primaryButton: string;
13
+ /** 첨부 파일 목록 (completed 상태) */
14
+ export declare const attachedList: string;
15
+ export declare const thumbnail: import('@vanilla-extract/recipes').RuntimeFn<{
16
+ layout: {
17
+ horizontal: {};
18
+ vertical: {};
19
+ };
20
+ size: {
21
+ large: {};
22
+ medium: {};
23
+ small: {};
24
+ };
25
+ }>;
26
+ export declare const thumbnailImg: string;
27
+ export declare const thumbnailOverlay: string;
28
+ export declare const thumbnailActions: string;
29
+ export declare const thumbnailActionBtn: string;
30
+ export declare const thumbnailFilename: string;
31
+ export declare const fileItem: import('@vanilla-extract/recipes').RuntimeFn<{
32
+ active: {
33
+ true: {
34
+ borderColor: string;
35
+ backgroundColor: "rgba(33, 81, 236, 0.12)";
36
+ };
37
+ false: {};
38
+ };
39
+ }>;
40
+ export declare const fileItemLeft: string;
41
+ export declare const fileIconBox: string;
42
+ export declare const fileInfo: string;
43
+ export declare const fileName: string;
44
+ export declare const fileMeta: string;
45
+ export declare const fileDeleteBtn: string;
46
+ export declare const badge: string;
47
+ export declare const badgeIcon: string;
48
+ export declare const badgeRemoveBtn: string;
49
+ export declare const selectedPill: string;
@@ -0,0 +1,98 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export type ThumbnailLayout = "horizontal" | "vertical";
3
+ export type ThumbnailSize = "large" | "medium" | "small";
4
+ export interface FileUploadAreaProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
5
+ /** 파일 추가 콜백 */
6
+ onFilesAdded?: (files: File[]) => void;
7
+ /** 설명 텍스트 */
8
+ description?: string;
9
+ /** accept (input file) */
10
+ accept?: string;
11
+ /** 추가 버튼 영역 */
12
+ extra?: ReactNode;
13
+ /** 첨부 파일 목록 (children) */
14
+ children?: ReactNode;
15
+ }
16
+ /**
17
+ * **FileUploadArea**
18
+ *
19
+ * 드래그 앤 드롭 파일 업로드 영역.
20
+ *
21
+ * - 그래디언트 보더 (cyan → primary blue)
22
+ * - AI 아이콘 + 설명 텍스트
23
+ * - 파일 첨부 버튼
24
+ * - children으로 첨부된 파일 목록 렌더링
25
+ *
26
+ * ```tsx
27
+ * <FileUploadArea onFilesAdded={handleFiles} description="파일을 드래그하세요">
28
+ * {files.map(f => <FileItem key={f.name} filename={f.name} />)}
29
+ * </FileUploadArea>
30
+ * ```
31
+ */
32
+ export declare function FileUploadArea({ onFilesAdded, description, accept, extra, children, className, ...rest }: FileUploadAreaProps): import("react/jsx-runtime").JSX.Element;
33
+ export interface FileThumbnailProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
34
+ /** 이미지 src */
35
+ src: string;
36
+ /** 파일명 */
37
+ filename?: string;
38
+ /** 레이아웃 */
39
+ layout?: ThumbnailLayout;
40
+ /** 사이즈 */
41
+ size?: ThumbnailSize;
42
+ /** 다운로드 콜백 */
43
+ onDownload?: () => void;
44
+ /** 확대/삭제 콜백 */
45
+ onExpand?: () => void;
46
+ }
47
+ /**
48
+ * **FileThumbnail**
49
+ *
50
+ * 이미지 썸네일 미리보기 카드.
51
+ *
52
+ * - horizontal / vertical 레이아웃
53
+ * - large / medium / small 사이즈
54
+ * - 호버 시 오버레이 + 액션 아이콘
55
+ *
56
+ * ```tsx
57
+ * <FileThumbnail src="/img.jpg" filename="photo.jpg" size="large" />
58
+ * ```
59
+ */
60
+ export declare function FileThumbnail({ src, filename, layout, size, onDownload, onExpand, className, ...rest }: FileThumbnailProps): import("react/jsx-runtime").JSX.Element;
61
+ export interface FileItemProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
62
+ /** 파일명 */
63
+ filename: string;
64
+ /** 파일 크기 / 설명 */
65
+ fileMeta?: string;
66
+ /** 선택(active) 상태 */
67
+ active?: boolean;
68
+ /** 삭제 콜백 */
69
+ onDelete?: () => void;
70
+ /** 커스텀 아이콘 */
71
+ icon?: ReactNode;
72
+ }
73
+ /**
74
+ * **FileItem**
75
+ *
76
+ * 파일 목록 항목. 아이콘 + 파일명 + 메타 + 삭제 버튼.
77
+ *
78
+ * ```tsx
79
+ * <FileItem filename="document.docx" fileMeta="2.4 MB" onDelete={handleDelete} />
80
+ * ```
81
+ */
82
+ export declare function FileItem({ filename, fileMeta, active, onDelete, icon, className, ...rest }: FileItemProps): import("react/jsx-runtime").JSX.Element;
83
+ export interface FileAttachBadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, "children"> {
84
+ /** 파일명 */
85
+ filename: string;
86
+ /** 제거 콜백 */
87
+ onRemove?: () => void;
88
+ }
89
+ /**
90
+ * **FileAttachBadge**
91
+ *
92
+ * 첨부 파일 인라인 배지 (📎 파일명 ✕).
93
+ *
94
+ * ```tsx
95
+ * <FileAttachBadge filename="report.pdf" onRemove={() => {}} />
96
+ * ```
97
+ */
98
+ export declare function FileAttachBadge({ filename, onRemove, className, ...rest }: FileAttachBadgeProps): import("react/jsx-runtime").JSX.Element;