@loword/loword-design-system 0.0.4 → 0.0.6
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.css +9 -0
- package/package.json +6 -3
- package/src/styles/carousel.css +9 -0
- package/src/styles/color.css +185 -0
- package/src/styles/components/badge.css +41 -0
- package/src/styles/components/bread-crumb.css +23 -0
- package/src/styles/components/button.css +183 -0
- package/src/styles/components/editor.css +147 -0
- package/src/styles/components/icon.css +29 -0
- package/src/styles/components/index.css +9 -0
- package/src/styles/components/input.css +52 -0
- package/src/styles/components/modal.css +25 -0
- package/src/styles/components/shared.css +52 -0
- package/src/styles/components/spinner.css +38 -0
- package/src/styles/focus.css +12 -0
- package/src/styles/gradient.css +41 -0
- package/src/styles/layout.css +19 -0
- package/src/styles/motion.css +235 -0
- package/src/styles/radius.css +8 -0
- package/src/styles/responsive.css +42 -0
- package/src/styles/scrollbar.css +59 -0
- package/src/styles/slider.css +65 -0
- package/src/styles/spacing.css +592 -0
- package/src/styles/text-utils.css +7 -0
- package/src/styles/typography.css +171 -0
- package/src/theme.css +19 -0
- package/dist/components/Avatar/Avatar.d.ts +0 -11
- package/dist/components/Avatar/Avatar.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.js +0 -24
- package/dist/components/Avatar/AvatarBase.d.ts +0 -32
- package/dist/components/Avatar/AvatarBase.d.ts.map +0 -1
- package/dist/components/Avatar/AvatarBase.js +0 -49
- package/dist/components/Badge/Badge.d.ts +0 -25
- package/dist/components/Badge/Badge.d.ts.map +0 -1
- package/dist/components/Badge/Badge.js +0 -36
- package/dist/components/Badge/BadgeBase.d.ts +0 -10
- package/dist/components/Badge/BadgeBase.d.ts.map +0 -1
- package/dist/components/Badge/BadgeBase.js +0 -9
- package/dist/components/BreadCrumb/BreadCrumb.d.ts +0 -17
- package/dist/components/BreadCrumb/BreadCrumb.d.ts.map +0 -1
- package/dist/components/BreadCrumb/BreadCrumb.js +0 -37
- package/dist/components/BreadCrumb/BreadCrumbBase.d.ts +0 -9
- package/dist/components/BreadCrumb/BreadCrumbBase.d.ts.map +0 -1
- package/dist/components/BreadCrumb/BreadCrumbBase.js +0 -17
- package/dist/components/Button/Button.d.ts +0 -26
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.js +0 -102
- package/dist/components/Button/ButtonBase.d.ts +0 -5
- package/dist/components/Button/ButtonBase.d.ts.map +0 -1
- package/dist/components/Button/ButtonBase.js +0 -10
- package/dist/components/Button/ButtonSpinner.d.ts +0 -8
- package/dist/components/Button/ButtonSpinner.d.ts.map +0 -1
- package/dist/components/Button/ButtonSpinner.js +0 -15
- package/dist/components/Calendar/Calendar.d.ts +0 -16
- package/dist/components/Calendar/Calendar.d.ts.map +0 -1
- package/dist/components/Calendar/Calendar.js +0 -75
- package/dist/components/Callout/Callout.d.ts +0 -10
- package/dist/components/Callout/Callout.d.ts.map +0 -1
- package/dist/components/Callout/Callout.js +0 -6
- package/dist/components/Callout/CalloutBase.d.ts +0 -18
- package/dist/components/Callout/CalloutBase.d.ts.map +0 -1
- package/dist/components/Callout/CalloutBase.js +0 -21
- package/dist/components/Carousel/Carousel.d.ts +0 -50
- package/dist/components/Carousel/Carousel.d.ts.map +0 -1
- package/dist/components/Carousel/Carousel.js +0 -22
- package/dist/components/Carousel/CarouselBase.d.ts +0 -98
- package/dist/components/Carousel/CarouselBase.d.ts.map +0 -1
- package/dist/components/Carousel/CarouselBase.js +0 -144
- package/dist/components/Checkbox/Checkbox.d.ts +0 -27
- package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.js +0 -30
- package/dist/components/Checkbox/CheckboxBase.d.ts +0 -40
- package/dist/components/Checkbox/CheckboxBase.d.ts.map +0 -1
- package/dist/components/Checkbox/CheckboxBase.js +0 -57
- package/dist/components/Checkbox/CheckboxGroup.d.ts +0 -22
- package/dist/components/Checkbox/CheckboxGroup.d.ts.map +0 -1
- package/dist/components/Checkbox/CheckboxGroup.js +0 -13
- package/dist/components/Checkbox/FormCheckbox.d.ts +0 -14
- package/dist/components/Checkbox/FormCheckbox.d.ts.map +0 -1
- package/dist/components/Checkbox/FormCheckbox.js +0 -9
- package/dist/components/Checkbox/FormCheckboxGroup.d.ts +0 -13
- package/dist/components/Checkbox/FormCheckboxGroup.d.ts.map +0 -1
- package/dist/components/Checkbox/FormCheckboxGroup.js +0 -9
- package/dist/components/DataCalendar/DataCalendar.d.ts +0 -12
- package/dist/components/DataCalendar/DataCalendar.d.ts.map +0 -1
- package/dist/components/DataCalendar/DataCalendar.js +0 -13
- package/dist/components/DataCalendar/DataCalendarBase.d.ts +0 -45
- package/dist/components/DataCalendar/DataCalendarBase.d.ts.map +0 -1
- package/dist/components/DataCalendar/DataCalendarBase.js +0 -57
- package/dist/components/DatePicker/DatePicker.d.ts +0 -34
- package/dist/components/DatePicker/DatePicker.d.ts.map +0 -1
- package/dist/components/DatePicker/DatePicker.js +0 -44
- package/dist/components/DatePicker/FormDatePicker.d.ts +0 -12
- package/dist/components/DatePicker/FormDatePicker.d.ts.map +0 -1
- package/dist/components/DatePicker/FormDatePicker.js +0 -12
- package/dist/components/DateRangePicker/DateRangePicker.d.ts +0 -49
- package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +0 -1
- package/dist/components/DateRangePicker/DateRangePicker.js +0 -197
- package/dist/components/DateRangePicker/FormDateRangePicker.d.ts +0 -12
- package/dist/components/DateRangePicker/FormDateRangePicker.d.ts.map +0 -1
- package/dist/components/DateRangePicker/FormDateRangePicker.js +0 -10
- package/dist/components/Divider/Divider.d.ts +0 -9
- package/dist/components/Divider/Divider.d.ts.map +0 -1
- package/dist/components/Divider/Divider.js +0 -11
- package/dist/components/Divider/DividerBase.d.ts +0 -9
- package/dist/components/Divider/DividerBase.d.ts.map +0 -1
- package/dist/components/Divider/DividerBase.js +0 -9
- package/dist/components/Drawer/Drawer.d.ts +0 -51
- package/dist/components/Drawer/Drawer.d.ts.map +0 -1
- package/dist/components/Drawer/Drawer.js +0 -30
- package/dist/components/Drawer/DrawerBase.d.ts +0 -52
- package/dist/components/Drawer/DrawerBase.d.ts.map +0 -1
- package/dist/components/Drawer/DrawerBase.js +0 -38
- package/dist/components/Editor/Editor.d.ts +0 -12
- package/dist/components/Editor/Editor.d.ts.map +0 -1
- package/dist/components/Editor/Editor.js +0 -162
- package/dist/components/Editor/EditorBase.d.ts +0 -52
- package/dist/components/Editor/EditorBase.d.ts.map +0 -1
- package/dist/components/Editor/EditorBase.js +0 -89
- package/dist/components/Editor/Viewer.d.ts +0 -7
- package/dist/components/Editor/Viewer.d.ts.map +0 -1
- package/dist/components/Editor/Viewer.js +0 -9
- package/dist/components/Editor/extensions.d.ts +0 -6
- package/dist/components/Editor/extensions.d.ts.map +0 -1
- package/dist/components/Editor/extensions.js +0 -38
- package/dist/components/FileUpload/FileUploadBase.d.ts +0 -50
- package/dist/components/FileUpload/FileUploadBase.d.ts.map +0 -1
- package/dist/components/FileUpload/FileUploadBase.js +0 -102
- package/dist/components/Input/FormInput.d.ts +0 -15
- package/dist/components/Input/FormInput.d.ts.map +0 -1
- package/dist/components/Input/FormInput.js +0 -19
- package/dist/components/Input/Input.d.ts +0 -24
- package/dist/components/Input/Input.d.ts.map +0 -1
- package/dist/components/Input/Input.js +0 -71
- package/dist/components/Input/InputBase.d.ts +0 -22
- package/dist/components/Input/InputBase.d.ts.map +0 -1
- package/dist/components/Input/InputBase.js +0 -17
- package/dist/components/LNB/LNBBase.d.ts +0 -82
- package/dist/components/LNB/LNBBase.d.ts.map +0 -1
- package/dist/components/LNB/LNBBase.js +0 -108
- package/dist/components/LoadingDots/LoadingDots.d.ts +0 -8
- package/dist/components/LoadingDots/LoadingDots.d.ts.map +0 -1
- package/dist/components/LoadingDots/LoadingDots.js +0 -29
- package/dist/components/MenuBar/MenuBar.d.ts +0 -21
- package/dist/components/MenuBar/MenuBar.d.ts.map +0 -1
- package/dist/components/MenuBar/MenuBar.js +0 -33
- package/dist/components/MenuBar/MenuBarBase.d.ts +0 -43
- package/dist/components/MenuBar/MenuBarBase.d.ts.map +0 -1
- package/dist/components/MenuBar/MenuBarBase.js +0 -69
- package/dist/components/Modal/Modal.d.ts +0 -51
- package/dist/components/Modal/Modal.d.ts.map +0 -1
- package/dist/components/Modal/Modal.js +0 -72
- package/dist/components/Modal/ModalBase.d.ts +0 -42
- package/dist/components/Modal/ModalBase.d.ts.map +0 -1
- package/dist/components/Modal/ModalBase.js +0 -30
- package/dist/components/Modal/openModal.d.ts +0 -24
- package/dist/components/Modal/openModal.d.ts.map +0 -1
- package/dist/components/Modal/openModal.js +0 -52
- package/dist/components/OTPInput/OTPInput.d.ts +0 -46
- package/dist/components/OTPInput/OTPInput.d.ts.map +0 -1
- package/dist/components/OTPInput/OTPInput.js +0 -87
- package/dist/components/Pagination/Pagination.d.ts +0 -12
- package/dist/components/Pagination/Pagination.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.js +0 -5
- package/dist/components/Pagination/PaginationBase.d.ts +0 -36
- package/dist/components/Pagination/PaginationBase.d.ts.map +0 -1
- package/dist/components/Pagination/PaginationBase.js +0 -44
- package/dist/components/Pagination/paginationUtils.d.ts +0 -2
- package/dist/components/Pagination/paginationUtils.d.ts.map +0 -1
- package/dist/components/Pagination/paginationUtils.js +0 -18
- package/dist/components/Popover/Popover.d.ts +0 -42
- package/dist/components/Popover/Popover.d.ts.map +0 -1
- package/dist/components/Popover/Popover.js +0 -31
- package/dist/components/Popover/PopoverBase.d.ts +0 -31
- package/dist/components/Popover/PopoverBase.d.ts.map +0 -1
- package/dist/components/Popover/PopoverBase.js +0 -18
- package/dist/components/Radio/FormRadioGroup.d.ts +0 -13
- package/dist/components/Radio/FormRadioGroup.d.ts.map +0 -1
- package/dist/components/Radio/FormRadioGroup.js +0 -9
- package/dist/components/Radio/Radio.d.ts +0 -24
- package/dist/components/Radio/Radio.d.ts.map +0 -1
- package/dist/components/Radio/Radio.js +0 -39
- package/dist/components/Radio/RadioBase.d.ts +0 -38
- package/dist/components/Radio/RadioBase.d.ts.map +0 -1
- package/dist/components/Radio/RadioBase.js +0 -46
- package/dist/components/Radio/RadioGroup.d.ts +0 -22
- package/dist/components/Radio/RadioGroup.d.ts.map +0 -1
- package/dist/components/Radio/RadioGroup.js +0 -7
- package/dist/components/ScrollArea/ScrollArea.d.ts +0 -15
- package/dist/components/ScrollArea/ScrollArea.d.ts.map +0 -1
- package/dist/components/ScrollArea/ScrollArea.js +0 -10
- package/dist/components/Select/FormMultiSelect.d.ts +0 -13
- package/dist/components/Select/FormMultiSelect.d.ts.map +0 -1
- package/dist/components/Select/FormMultiSelect.js +0 -14
- package/dist/components/Select/FormSelect.d.ts +0 -13
- package/dist/components/Select/FormSelect.d.ts.map +0 -1
- package/dist/components/Select/FormSelect.js +0 -10
- package/dist/components/Select/MultiSelect.d.ts +0 -31
- package/dist/components/Select/MultiSelect.d.ts.map +0 -1
- package/dist/components/Select/MultiSelect.js +0 -59
- package/dist/components/Select/Select.d.ts +0 -41
- package/dist/components/Select/Select.d.ts.map +0 -1
- package/dist/components/Select/Select.js +0 -55
- package/dist/components/Select/SelectBase.d.ts +0 -59
- package/dist/components/Select/SelectBase.d.ts.map +0 -1
- package/dist/components/Select/SelectBase.js +0 -211
- package/dist/components/Skeleton/Skeleton.d.ts +0 -10
- package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
- package/dist/components/Skeleton/Skeleton.js +0 -8
- package/dist/components/Slider/Slider.d.ts +0 -23
- package/dist/components/Slider/Slider.d.ts.map +0 -1
- package/dist/components/Slider/Slider.js +0 -195
- package/dist/components/Spinner/Spinner.d.ts +0 -25
- package/dist/components/Spinner/Spinner.d.ts.map +0 -1
- package/dist/components/Spinner/Spinner.js +0 -20
- package/dist/components/Table/Table.d.ts +0 -34
- package/dist/components/Table/Table.d.ts.map +0 -1
- package/dist/components/Table/Table.js +0 -29
- package/dist/components/Table/TableBase.d.ts +0 -37
- package/dist/components/Table/TableBase.d.ts.map +0 -1
- package/dist/components/Table/TableBase.js +0 -39
- package/dist/components/Table/TableField.d.ts +0 -64
- package/dist/components/Table/TableField.d.ts.map +0 -1
- package/dist/components/Table/TableField.js +0 -87
- package/dist/components/Table/TanstackTable.d.ts +0 -23
- package/dist/components/Table/TanstackTable.d.ts.map +0 -1
- package/dist/components/Table/TanstackTable.js +0 -35
- package/dist/components/TimePicker/FormTimePicker.d.ts +0 -12
- package/dist/components/TimePicker/FormTimePicker.d.ts.map +0 -1
- package/dist/components/TimePicker/FormTimePicker.js +0 -12
- package/dist/components/TimePicker/TimePicker.d.ts +0 -27
- package/dist/components/TimePicker/TimePicker.d.ts.map +0 -1
- package/dist/components/TimePicker/TimePicker.js +0 -120
- package/dist/components/Toast/Toast.d.ts +0 -18
- package/dist/components/Toast/Toast.d.ts.map +0 -1
- package/dist/components/Toast/Toast.js +0 -42
- package/dist/components/Toast/Toaster.d.ts +0 -7
- package/dist/components/Toast/Toaster.d.ts.map +0 -1
- package/dist/components/Toast/Toaster.js +0 -7
- package/dist/components/ToggleButton/FormToggleButton.d.ts +0 -12
- package/dist/components/ToggleButton/FormToggleButton.d.ts.map +0 -1
- package/dist/components/ToggleButton/FormToggleButton.js +0 -9
- package/dist/components/ToggleButton/ToggleButton.d.ts +0 -31
- package/dist/components/ToggleButton/ToggleButton.d.ts.map +0 -1
- package/dist/components/ToggleButton/ToggleButton.js +0 -42
- package/dist/components/ToggleButton/ToggleButtonBase.d.ts +0 -41
- package/dist/components/ToggleButton/ToggleButtonBase.d.ts.map +0 -1
- package/dist/components/ToggleButton/ToggleButtonBase.js +0 -59
- package/dist/components/Tooltip/Tooltip.d.ts +0 -18
- package/dist/components/Tooltip/Tooltip.d.ts.map +0 -1
- package/dist/components/Tooltip/Tooltip.js +0 -13
- package/dist/components/Tooltip/TooltipBase.d.ts +0 -39
- package/dist/components/Tooltip/TooltipBase.d.ts.map +0 -1
- package/dist/components/Tooltip/TooltipBase.js +0 -46
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
@theme {
|
|
2
|
+
--font-pretendard: 'var(--font-pretendard)', sans-serif;
|
|
3
|
+
|
|
4
|
+
/* typography */
|
|
5
|
+
--text-display10: 10px;
|
|
6
|
+
--leading-display10: 14px;
|
|
7
|
+
--tracking-display10: -1px;
|
|
8
|
+
|
|
9
|
+
--text-display12: 12px;
|
|
10
|
+
--leading-display12: 16px;
|
|
11
|
+
--tracking-display12: -1px;
|
|
12
|
+
|
|
13
|
+
--text-display14: 14px;
|
|
14
|
+
--leading-display14: 18px;
|
|
15
|
+
--tracking-display14: -1px;
|
|
16
|
+
|
|
17
|
+
--text-display16: 16px;
|
|
18
|
+
--leading-display16: 20px;
|
|
19
|
+
--tracking-display16: -1px;
|
|
20
|
+
|
|
21
|
+
--text-display18: 18px;
|
|
22
|
+
--leading-display18: 22px;
|
|
23
|
+
--tracking-display18: -1px;
|
|
24
|
+
|
|
25
|
+
--text-display20: 20px;
|
|
26
|
+
--leading-display20: 24px;
|
|
27
|
+
--tracking-display20: -1px;
|
|
28
|
+
|
|
29
|
+
--text-display24: 24px;
|
|
30
|
+
--leading-display24: 28px;
|
|
31
|
+
--tracking-display24: -1px;
|
|
32
|
+
|
|
33
|
+
--text-display28: 28px;
|
|
34
|
+
--leading-display28: 32px;
|
|
35
|
+
--tracking-display28: -1px;
|
|
36
|
+
|
|
37
|
+
--text-display30: 30px;
|
|
38
|
+
--leading-display30: 36px;
|
|
39
|
+
--tracking-display30: -1px;
|
|
40
|
+
|
|
41
|
+
--text-display32: 32px;
|
|
42
|
+
--leading-display32: 38px;
|
|
43
|
+
--tracking-display32: -1px;
|
|
44
|
+
|
|
45
|
+
--text-display36: 36px;
|
|
46
|
+
--leading-display36: 42px;
|
|
47
|
+
--tracking-display36: -1px;
|
|
48
|
+
|
|
49
|
+
--text-display40: 40px;
|
|
50
|
+
--leading-display40: 48px;
|
|
51
|
+
--tracking-display40: -1px;
|
|
52
|
+
|
|
53
|
+
--text-display64: 64px;
|
|
54
|
+
--leading-display64: 72px;
|
|
55
|
+
--tracking-display64: -1px;
|
|
56
|
+
|
|
57
|
+
--text-display80: 80px;
|
|
58
|
+
--leading-display80: 88px;
|
|
59
|
+
--tracking-display80: -1px;
|
|
60
|
+
|
|
61
|
+
--text-display120: 120px;
|
|
62
|
+
--leading-display120: 128px;
|
|
63
|
+
--tracking-display120: -1px;
|
|
64
|
+
|
|
65
|
+
/* font-weight */
|
|
66
|
+
--font-light: 300;
|
|
67
|
+
--font-regular: 400;
|
|
68
|
+
--font-medium: 500;
|
|
69
|
+
--font-semibold: 550;
|
|
70
|
+
--font-bold: 600;
|
|
71
|
+
--font-extrabold: 700;
|
|
72
|
+
--font-black: 900;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@utility display10 {
|
|
76
|
+
font-size: var(--text-display10);
|
|
77
|
+
line-height: var(--leading-display10);
|
|
78
|
+
letter-spacing: var(--tracking-display10);
|
|
79
|
+
}
|
|
80
|
+
@utility display12 {
|
|
81
|
+
font-size: var(--text-display12);
|
|
82
|
+
line-height: var(--leading-display12);
|
|
83
|
+
letter-spacing: var(--tracking-display12);
|
|
84
|
+
}
|
|
85
|
+
@utility display14 {
|
|
86
|
+
font-size: var(--text-display14);
|
|
87
|
+
line-height: var(--leading-display14);
|
|
88
|
+
letter-spacing: var(--tracking-display14);
|
|
89
|
+
}
|
|
90
|
+
@utility display16 {
|
|
91
|
+
font-size: var(--text-display16);
|
|
92
|
+
line-height: var(--leading-display16);
|
|
93
|
+
letter-spacing: var(--tracking-display16);
|
|
94
|
+
}
|
|
95
|
+
@utility display18 {
|
|
96
|
+
font-size: var(--text-display18);
|
|
97
|
+
line-height: var(--leading-display18);
|
|
98
|
+
letter-spacing: var(--tracking-display18);
|
|
99
|
+
}
|
|
100
|
+
@utility display20 {
|
|
101
|
+
font-size: var(--text-display20);
|
|
102
|
+
line-height: var(--leading-display20);
|
|
103
|
+
letter-spacing: var(--tracking-display20);
|
|
104
|
+
}
|
|
105
|
+
@utility display24 {
|
|
106
|
+
font-size: var(--text-display24);
|
|
107
|
+
line-height: var(--leading-display24);
|
|
108
|
+
letter-spacing: var(--tracking-display24);
|
|
109
|
+
}
|
|
110
|
+
@utility display28 {
|
|
111
|
+
font-size: var(--text-display28);
|
|
112
|
+
line-height: var(--leading-display28);
|
|
113
|
+
letter-spacing: var(--tracking-display28);
|
|
114
|
+
}
|
|
115
|
+
@utility display30 {
|
|
116
|
+
font-size: var(--text-display30);
|
|
117
|
+
line-height: var(--leading-display30);
|
|
118
|
+
letter-spacing: var(--tracking-display30);
|
|
119
|
+
}
|
|
120
|
+
@utility display32 {
|
|
121
|
+
font-size: var(--text-display32);
|
|
122
|
+
line-height: var(--leading-display32);
|
|
123
|
+
letter-spacing: var(--tracking-display32);
|
|
124
|
+
}
|
|
125
|
+
@utility display36 {
|
|
126
|
+
font-size: var(--text-display36);
|
|
127
|
+
line-height: var(--leading-display36);
|
|
128
|
+
letter-spacing: var(--tracking-display36);
|
|
129
|
+
}
|
|
130
|
+
@utility display40 {
|
|
131
|
+
font-size: var(--text-display40);
|
|
132
|
+
line-height: var(--leading-display40);
|
|
133
|
+
letter-spacing: var(--tracking-display40);
|
|
134
|
+
}
|
|
135
|
+
@utility display64 {
|
|
136
|
+
font-size: var(--text-display64);
|
|
137
|
+
line-height: var(--leading-display64);
|
|
138
|
+
letter-spacing: var(--tracking-display64);
|
|
139
|
+
}
|
|
140
|
+
@utility display80 {
|
|
141
|
+
font-size: var(--text-display80);
|
|
142
|
+
line-height: var(--leading-display80);
|
|
143
|
+
letter-spacing: var(--tracking-display80);
|
|
144
|
+
}
|
|
145
|
+
@utility display120 {
|
|
146
|
+
font-size: var(--text-display120);
|
|
147
|
+
line-height: var(--leading-display120);
|
|
148
|
+
letter-spacing: var(--tracking-display120);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
@utility light {
|
|
152
|
+
font-weight: var(--font-light);
|
|
153
|
+
}
|
|
154
|
+
@utility regular {
|
|
155
|
+
font-weight: var(--font-regular);
|
|
156
|
+
}
|
|
157
|
+
@utility medium {
|
|
158
|
+
font-weight: var(--font-medium);
|
|
159
|
+
}
|
|
160
|
+
@utility semibold {
|
|
161
|
+
font-weight: var(--font-semibold);
|
|
162
|
+
}
|
|
163
|
+
@utility bold {
|
|
164
|
+
font-weight: var(--font-bold);
|
|
165
|
+
}
|
|
166
|
+
@utility extrabold {
|
|
167
|
+
font-weight: var(--font-extrabold);
|
|
168
|
+
}
|
|
169
|
+
@utility black {
|
|
170
|
+
font-weight: var(--font-black);
|
|
171
|
+
}
|
package/src/theme.css
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* theme.css — 소비처(ledu-mono 등)의 Tailwind 컴파일러가 직접 처리하는
|
|
3
|
+
* raw @theme/@utility 진입점.
|
|
4
|
+
*
|
|
5
|
+
* 컴파일된 dist/index.css(styles.css)와 달리 토큰·유틸 정의가 원문 그대로 남아있어,
|
|
6
|
+
* 소비처가 자기 코드에 대해 `display40`, `bg-mono600` 같은 클래스를 on-demand로 생성할 수 있다.
|
|
7
|
+
*
|
|
8
|
+
* 주의:
|
|
9
|
+
* - `@import 'tailwindcss'`를 넣지 않는다. 소비처가 이미 import하므로 중복되면 충돌난다.
|
|
10
|
+
* - 컴포넌트 스타일(components/*, slider/carousel 등)은 포함하지 않는다 — styles.css가 담당.
|
|
11
|
+
*/
|
|
12
|
+
@import './styles/color.css';
|
|
13
|
+
@import './styles/typography.css';
|
|
14
|
+
@import './styles/text-utils.css';
|
|
15
|
+
@import './styles/radius.css';
|
|
16
|
+
@import './styles/spacing.css';
|
|
17
|
+
@import './styles/layout.css';
|
|
18
|
+
@import './styles/gradient.css';
|
|
19
|
+
@import './styles/motion.css';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
type AvatarSize = 'sm' | 'md' | 'lg';
|
|
2
|
-
export interface AvatarProps {
|
|
3
|
-
src?: string | null;
|
|
4
|
-
alt?: string;
|
|
5
|
-
size?: AvatarSize;
|
|
6
|
-
className?: string;
|
|
7
|
-
style?: React.CSSProperties;
|
|
8
|
-
}
|
|
9
|
-
declare const Avatar: ({ src, alt, size, className, style, }: AvatarProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
-
export default Avatar;
|
|
11
|
-
//# sourceMappingURL=Avatar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":"AAKA,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAqBrC,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,MAAM,GAAI,uCAMb,WAAW,4CAeb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { UserRound } from 'lucide-react';
|
|
3
|
-
import AvatarBase from './AvatarBase.js';
|
|
4
|
-
import cn from '../../utils/cn.js';
|
|
5
|
-
const SIZE_MAP = {
|
|
6
|
-
sm: 'w-8 h-8',
|
|
7
|
-
md: 'w-12 h-12',
|
|
8
|
-
lg: 'w-16 h-16',
|
|
9
|
-
};
|
|
10
|
-
const IMAGE_SIZE_MAP = {
|
|
11
|
-
sm: 32,
|
|
12
|
-
md: 48,
|
|
13
|
-
lg: 64,
|
|
14
|
-
};
|
|
15
|
-
const ICON_SIZE_MAP = {
|
|
16
|
-
sm: 24,
|
|
17
|
-
md: 32,
|
|
18
|
-
lg: 40,
|
|
19
|
-
};
|
|
20
|
-
const Avatar = ({ src, alt = 'avatar', size = 'sm', className, style, }) => {
|
|
21
|
-
const px = IMAGE_SIZE_MAP[size];
|
|
22
|
-
return (_jsxs(AvatarBase.Root, { src: src, style: style, className: cn(SIZE_MAP[size], className), children: [_jsx(AvatarBase.Image, { alt: alt, width: px, height: px }), _jsx(AvatarBase.Fallback, { className: "bg-mono100", children: _jsx(UserRound, { size: ICON_SIZE_MAP[size], className: "text-mono400" }) })] }));
|
|
23
|
-
};
|
|
24
|
-
export default Avatar;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
2
|
-
interface AvatarContextType {
|
|
3
|
-
src?: string | null;
|
|
4
|
-
status: 'idle' | 'loading' | 'loaded' | 'error';
|
|
5
|
-
setStatus: (status: 'idle' | 'loading' | 'loaded' | 'error') => void;
|
|
6
|
-
}
|
|
7
|
-
export declare const useAvatarContext: () => AvatarContextType;
|
|
8
|
-
interface RootProps {
|
|
9
|
-
src?: string | null;
|
|
10
|
-
className?: string;
|
|
11
|
-
style?: React.CSSProperties;
|
|
12
|
-
children?: ReactNode;
|
|
13
|
-
}
|
|
14
|
-
interface ImageProps {
|
|
15
|
-
alt?: string;
|
|
16
|
-
width?: number;
|
|
17
|
-
height?: number;
|
|
18
|
-
className?: string;
|
|
19
|
-
}
|
|
20
|
-
interface FallbackProps {
|
|
21
|
-
className?: string;
|
|
22
|
-
children?: ReactNode;
|
|
23
|
-
/** 이미지 로드 지연 처리용 딜레이(ms). 기본값 0 (즉시 표시) */
|
|
24
|
-
delayMs?: number;
|
|
25
|
-
}
|
|
26
|
-
export declare const AvatarBase: {
|
|
27
|
-
Root: ({ src, className, style, children }: RootProps) => import("react/jsx-runtime").JSX.Element;
|
|
28
|
-
Image: ({ alt, width, height, className }: ImageProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
29
|
-
Fallback: ({ className, children, delayMs }: FallbackProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
30
|
-
};
|
|
31
|
-
export default AvatarBase;
|
|
32
|
-
//# sourceMappingURL=AvatarBase.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarBase.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/AvatarBase.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAIf,UAAU,iBAAiB;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;CACtE;AAID,eAAO,MAAM,gBAAgB,yBAO5B,CAAC;AAGF,UAAU,SAAS;IACjB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAiCD,UAAU,UAAU;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqBD,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA6BD,eAAO,MAAM,UAAU;gDA3F4B,SAAS;+CAsCC,UAAU;iDA0Bf,aAAa;CA+BpE,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { createContext, useContext, useState, useEffect, } from 'react';
|
|
4
|
-
import cn from '../../utils/cn.js';
|
|
5
|
-
const AvatarContext = createContext(null);
|
|
6
|
-
export const useAvatarContext = () => {
|
|
7
|
-
const ctx = useContext(AvatarContext);
|
|
8
|
-
if (!ctx)
|
|
9
|
-
throw new Error('AvatarBase 하위 컴포넌트는 Root 내부에서 사용해야 합니다.');
|
|
10
|
-
return ctx;
|
|
11
|
-
};
|
|
12
|
-
const Root = ({ src, className, style, children }) => {
|
|
13
|
-
const [status, setStatus] = useState(src ? 'loading' : 'error');
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
setStatus(src ? 'loading' : 'error');
|
|
16
|
-
}, [src]);
|
|
17
|
-
return (_jsx(AvatarContext, { value: {
|
|
18
|
-
src,
|
|
19
|
-
status,
|
|
20
|
-
setStatus,
|
|
21
|
-
}, children: _jsx("span", { style: style, className: cn('relative flex shrink-0 overflow-hidden rounded-full', className), children: children }) }));
|
|
22
|
-
};
|
|
23
|
-
const Image = ({ alt = 'avatar', width, height, className }) => {
|
|
24
|
-
const { src, status, setStatus } = useAvatarContext();
|
|
25
|
-
if (!src || status === 'error')
|
|
26
|
-
return null;
|
|
27
|
-
return (_jsx("img", { src: src, alt: alt, width: width, height: height, onLoad: () => setStatus('loaded'), onError: () => setStatus('error'), className: cn('aspect-square h-full w-full object-cover', className) }));
|
|
28
|
-
};
|
|
29
|
-
const Fallback = ({ className, children, delayMs = 0 }) => {
|
|
30
|
-
const { status } = useAvatarContext();
|
|
31
|
-
const [show, setShow] = useState(delayMs === 0);
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
if (delayMs === 0) {
|
|
34
|
-
setShow(true);
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
const timer = setTimeout(() => setShow(true), delayMs);
|
|
38
|
-
return () => clearTimeout(timer);
|
|
39
|
-
}, [delayMs]);
|
|
40
|
-
if (status === 'loaded' || !show)
|
|
41
|
-
return null;
|
|
42
|
-
return (_jsx("span", { className: cn('flex h-full w-full items-center justify-center rounded-full', className), children: children }));
|
|
43
|
-
};
|
|
44
|
-
export const AvatarBase = {
|
|
45
|
-
Root,
|
|
46
|
-
Image,
|
|
47
|
-
Fallback,
|
|
48
|
-
};
|
|
49
|
-
export default AvatarBase;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
2
|
-
import { type IconName } from '../Icon/LucideIcon.js';
|
|
3
|
-
type BadgeSize = 'xsmall' | 'small' | 'medium' | 'large';
|
|
4
|
-
type BadgeColor = 'orange' | 'fillOrange' | 'red' | 'fillRed' | 'green' | 'fillGreen' | 'blue' | 'fillBlue' | 'yellow' | 'fillYellow' | 'gray' | 'fillGray';
|
|
5
|
-
export interface BadgeProps<T extends string> {
|
|
6
|
-
/** 뱃지 유형 키 (colorsMap의 키와 매칭) */
|
|
7
|
-
type: T;
|
|
8
|
-
/** 뱃지 사이즈 */
|
|
9
|
-
size?: BadgeSize;
|
|
10
|
-
/** type별 색상 매핑 객체 (프리셋 BadgeColor 또는 커스텀 Tailwind 클래스) */
|
|
11
|
-
colorsMap: Record<T, BadgeColor | string>;
|
|
12
|
-
/** 뱃지 내용 */
|
|
13
|
-
children?: ReactNode;
|
|
14
|
-
/** 왼쪽 아이콘 (IconName 또는 ReactNode) */
|
|
15
|
-
leftIcon?: IconName | ReactNode;
|
|
16
|
-
/** 오른쪽 아이콘 (IconName 또는 ReactNode) */
|
|
17
|
-
rightIcon?: IconName | ReactNode;
|
|
18
|
-
/** 추가 CSS 클래스 */
|
|
19
|
-
className?: string;
|
|
20
|
-
/** 인라인 스타일 */
|
|
21
|
-
style?: React.CSSProperties;
|
|
22
|
-
}
|
|
23
|
-
declare const Badge: <T extends string>({ type, size, colorsMap, children, leftIcon, rightIcon, className, style, }: BadgeProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
24
|
-
export default Badge;
|
|
25
|
-
//# sourceMappingURL=Badge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD,KAAK,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AACzD,KAAK,UAAU,GACX,QAAQ,GACR,YAAY,GACZ,KAAK,GACL,SAAS,GACT,OAAO,GACP,WAAW,GACX,MAAM,GACN,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,UAAU,CAAC;AAEf,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM;IAC1C,iCAAiC;IACjC,IAAI,EAAE,CAAC,CAAC;IACR,aAAa;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;IAC1C,YAAY;IACZ,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,sCAAsC;IACtC,SAAS,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AA+BD,QAAA,MAAM,KAAK,GAAI,CAAC,SAAS,MAAM,EAAE,6EAS9B,UAAU,CAAC,CAAC,CAAC,4CAmBf,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import BadgeBase from './BadgeBase.js';
|
|
3
|
-
import { renderIcon } from '../../utils/renderIcon.js';
|
|
4
|
-
import cn from '../../utils/cn.js';
|
|
5
|
-
const colorClasses = {
|
|
6
|
-
orange: 'bg-tintOrange text-orange500',
|
|
7
|
-
fillOrange: 'bg-orange400 text-white',
|
|
8
|
-
green: 'bg-tintGreen text-green700',
|
|
9
|
-
fillGreen: 'bg-success600 text-white',
|
|
10
|
-
red: 'bg-tintRed text-red200',
|
|
11
|
-
fillRed: 'bg-danger600 text-white',
|
|
12
|
-
blue: 'bg-tintBlue text-blue200',
|
|
13
|
-
fillBlue: 'bg-accept600 text-white',
|
|
14
|
-
yellow: 'bg-tintYellow text-yellow700',
|
|
15
|
-
fillYellow: 'bg-warning600 text-white',
|
|
16
|
-
gray: 'bg-mono200 text-neutral800',
|
|
17
|
-
fillGray: 'bg-neutral200 text-white',
|
|
18
|
-
};
|
|
19
|
-
const sizeClasses = {
|
|
20
|
-
xsmall: 'badge-xs',
|
|
21
|
-
small: 'badge-sm',
|
|
22
|
-
medium: 'badge-md',
|
|
23
|
-
large: 'badge-lg',
|
|
24
|
-
};
|
|
25
|
-
const iconSizes = {
|
|
26
|
-
xsmall: 'icon-xs',
|
|
27
|
-
small: 'icon-sm',
|
|
28
|
-
medium: 'icon-md',
|
|
29
|
-
large: 'icon-lg',
|
|
30
|
-
};
|
|
31
|
-
const Badge = ({ type, size = 'small', colorsMap, children, leftIcon, rightIcon, className, style, }) => {
|
|
32
|
-
const color = colorsMap[type];
|
|
33
|
-
const iconSize = iconSizes[size];
|
|
34
|
-
return (_jsxs(BadgeBase.Root, { className: cn('w-auto text-center whitespace-nowrap border border-transparent', colorClasses[color] ?? color, sizeClasses[size], className), style: style, children: [renderIcon(leftIcon, iconSize), children, renderIcon(rightIcon, iconSize)] }));
|
|
35
|
-
};
|
|
36
|
-
export default Badge;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { type HTMLAttributes, type ReactNode, type Ref } from 'react';
|
|
2
|
-
interface RootProps extends HTMLAttributes<HTMLSpanElement> {
|
|
3
|
-
children?: ReactNode;
|
|
4
|
-
ref?: Ref<HTMLSpanElement>;
|
|
5
|
-
}
|
|
6
|
-
export declare const BadgeBase: {
|
|
7
|
-
Root: ({ className, children, ref, ...props }: RootProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
};
|
|
9
|
-
export default BadgeBase;
|
|
10
|
-
//# sourceMappingURL=BadgeBase.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BadgeBase.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/BadgeBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAItE,UAAU,SAAU,SAAQ,cAAc,CAAC,eAAe,CAAC;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,GAAG,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;CAC5B;AAcD,eAAO,MAAM,SAAS;mDAZgC,SAAS;CAc9D,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import cn from '../../utils/cn.js';
|
|
3
|
-
const Root = ({ className, children, ref, ...props }) => {
|
|
4
|
-
return (_jsx("span", { ref: ref, className: cn('inline-flex items-center justify-center', className), ...props, children: children }));
|
|
5
|
-
};
|
|
6
|
-
export const BadgeBase = {
|
|
7
|
-
Root,
|
|
8
|
-
};
|
|
9
|
-
export default BadgeBase;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
2
|
-
import { type ButtonSize } from '../Button/Button.js';
|
|
3
|
-
import { type IconName } from '../Icon/LucideIcon.js';
|
|
4
|
-
export interface BreadCrumbItem {
|
|
5
|
-
label: string;
|
|
6
|
-
href?: string;
|
|
7
|
-
icon?: IconName | ReactNode;
|
|
8
|
-
}
|
|
9
|
-
export interface BreadCrumbProps {
|
|
10
|
-
items: BreadCrumbItem[];
|
|
11
|
-
size?: ButtonSize;
|
|
12
|
-
separator?: ReactNode;
|
|
13
|
-
className?: string;
|
|
14
|
-
}
|
|
15
|
-
declare const BreadCrumb: ({ items, size, separator, className, }: BreadCrumbProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
export default BreadCrumb;
|
|
17
|
-
//# sourceMappingURL=BreadCrumb.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BreadCrumb.d.ts","sourceRoot":"","sources":["../../../src/components/BreadCrumb/BreadCrumb.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAe,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6BD,QAAA,MAAM,UAAU,GAAI,wCAKjB,eAAe,4CAiDjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import BreadCrumbBase from './BreadCrumbBase.js';
|
|
4
|
-
import Button from '../Button/Button.js';
|
|
5
|
-
import { renderIcon } from '../../utils/renderIcon.js';
|
|
6
|
-
import cn from '../../utils/cn.js';
|
|
7
|
-
const textSizeClasses = {
|
|
8
|
-
'2xsmall': 'bread-crumb-2xs',
|
|
9
|
-
xsmall: 'bread-crumb-xs',
|
|
10
|
-
small: 'bread-crumb-sm',
|
|
11
|
-
medium: 'bread-crumb-md',
|
|
12
|
-
large: 'bread-crumb-lg',
|
|
13
|
-
xlarge: 'bread-crumb-xl',
|
|
14
|
-
};
|
|
15
|
-
const iconSizeClasses = {
|
|
16
|
-
'2xsmall': 'icon-2xs',
|
|
17
|
-
xsmall: 'icon-xs',
|
|
18
|
-
small: 'icon-sm',
|
|
19
|
-
medium: 'icon-md',
|
|
20
|
-
large: 'icon-lg',
|
|
21
|
-
xlarge: 'icon-xl',
|
|
22
|
-
};
|
|
23
|
-
const separatorIconSizeClasses = {
|
|
24
|
-
'2xsmall': '[&>svg]:icon-2xs',
|
|
25
|
-
xsmall: '[&>svg]:icon-xs',
|
|
26
|
-
small: '[&>svg]:icon-sm',
|
|
27
|
-
medium: '[&>svg]:icon-md',
|
|
28
|
-
large: '[&>svg]:icon-lg',
|
|
29
|
-
xlarge: '[&>svg]:icon-xl',
|
|
30
|
-
};
|
|
31
|
-
const BreadCrumb = ({ items, size = 'small', separator, className, }) => {
|
|
32
|
-
return (_jsx(BreadCrumbBase.Root, { children: _jsx(BreadCrumbBase.List, { className: className, children: items.map((item, index) => {
|
|
33
|
-
const isCurrent = index === items.length - 1;
|
|
34
|
-
return (_jsxs(React.Fragment, { children: [_jsx(BreadCrumbBase.Item, { className: "gap-xs", children: !item.href ? (_jsxs("span", { "aria-current": "page", className: cn(textSizeClasses[size], 'flex items-center text-neutral700 gap-0.5'), children: [renderIcon(item.icon, iconSizeClasses[size]), item.label] })) : (_jsx(Button, { as: "a", href: item.href, variant: "ghost", color: "neutral", size: size, leftIcon: item.icon, className: "h-auto! px-0! min-w-0 hover:bg-transparent active:bg-transparent text-neutral700 regular flex flex-row gap-0.5", children: item.label })) }), !isCurrent && (_jsx(BreadCrumbBase.Separator, { className: separatorIconSizeClasses[size], children: separator }))] }, `${item.label}-${index}`));
|
|
35
|
-
}) }) }));
|
|
36
|
-
};
|
|
37
|
-
export default BreadCrumb;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
export declare const BreadCrumb: {
|
|
3
|
-
Root: ({ className, ...props }: React.ComponentProps<"nav">) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
-
List: ({ className, ...props }: React.ComponentProps<"ol">) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
Item: ({ className, children, ...props }: React.ComponentProps<"li">) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
Separator: ({ children, className, ...props }: React.ComponentProps<"li">) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
};
|
|
8
|
-
export default BreadCrumb;
|
|
9
|
-
//# sourceMappingURL=BreadCrumbBase.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BreadCrumbBase.d.ts","sourceRoot":"","sources":["../../../src/components/BreadCrumb/BreadCrumbBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA8C/B,eAAO,MAAM,UAAU;oCA1CgB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;oCAI3B,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;8CAU9D,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;mDAY1B,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;CAgB4B,CAAC;AAE1D,eAAe,UAAU,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { ChevronRightIcon } from 'lucide-react';
|
|
3
|
-
import cn from '../../utils/cn.js';
|
|
4
|
-
const Root = ({ className, ...props }) => {
|
|
5
|
-
return _jsx("nav", { "aria-label": "breadcrumb", className: cn(className), ...props });
|
|
6
|
-
};
|
|
7
|
-
const List = ({ className, ...props }) => {
|
|
8
|
-
return (_jsx("ol", { className: cn('flex flex-wrap items-center', className), ...props }));
|
|
9
|
-
};
|
|
10
|
-
const Item = ({ className, children, ...props }) => {
|
|
11
|
-
return (_jsx("li", { className: cn('inline-flex items-center', className), ...props, children: children }));
|
|
12
|
-
};
|
|
13
|
-
const Separator = ({ children, className, ...props }) => {
|
|
14
|
-
return (_jsx("li", { role: "presentation", "aria-hidden": "true", className: cn('inline-flex items-center justify-center text-neutral700 [&>svg]:shrink-0', className), ...props, children: children ?? _jsx(ChevronRightIcon, {}) }));
|
|
15
|
-
};
|
|
16
|
-
export const BreadCrumb = { Root, List, Item, Separator };
|
|
17
|
-
export default BreadCrumb;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { type ElementType } from 'react';
|
|
3
|
-
import { PolymorphicComponentProps } from '../../types/polymorphic.js';
|
|
4
|
-
import { type IconName } from '../Icon/LucideIcon.js';
|
|
5
|
-
type ButtonVariant = 'solid' | 'outline' | 'ghost' | 'link';
|
|
6
|
-
type ButtonColor = 'neutral' | 'point' | 'danger';
|
|
7
|
-
export type ButtonSize = '2xsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
|
|
8
|
-
type ButtonShape = 'default' | 'capsule';
|
|
9
|
-
type ButtonAlign = 'left' | 'center' | 'right';
|
|
10
|
-
type _ButtonProps = {
|
|
11
|
-
variant?: ButtonVariant;
|
|
12
|
-
color?: ButtonColor;
|
|
13
|
-
size?: ButtonSize;
|
|
14
|
-
shape?: ButtonShape;
|
|
15
|
-
align?: ButtonAlign;
|
|
16
|
-
loading?: boolean;
|
|
17
|
-
block?: boolean;
|
|
18
|
-
leftIcon?: IconName | React.ReactNode;
|
|
19
|
-
rightIcon?: IconName | React.ReactNode;
|
|
20
|
-
compact?: boolean;
|
|
21
|
-
};
|
|
22
|
-
export type ButtonProps<T extends ElementType> = PolymorphicComponentProps<T, _ButtonProps>;
|
|
23
|
-
type ButtonComponent = <T extends React.ElementType = 'button'>(props: ButtonProps<T>) => React.ReactElement | null;
|
|
24
|
-
declare const Button: ButtonComponent;
|
|
25
|
-
export default Button;
|
|
26
|
-
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAQnD,KAAK,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAC5D,KAAK,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAClD,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,CAAC;AACb,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AACzC,KAAK,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAkG/C,KAAK,YAAY,GAAG;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,IAAI,yBAAyB,CACxE,CAAC,EACD,YAAY,CACb,CAAC;AAEF,KAAK,eAAe,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,QAAQ,EAC5D,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAClB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAE/B,QAAA,MAAM,MAAM,EAAE,eAoEb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import cn from '../../utils/cn.js';
|
|
3
|
-
import ButtonBase from './ButtonBase.js';
|
|
4
|
-
import { renderIcon } from '../../utils/renderIcon.js';
|
|
5
|
-
import ButtonSpinner from './ButtonSpinner.js';
|
|
6
|
-
// ── 스타일 매핑 (static) ──
|
|
7
|
-
const variantBaseClasses = {
|
|
8
|
-
solid: {
|
|
9
|
-
neutral: 'bg-neutral800 text-white',
|
|
10
|
-
point: 'bg-lb500 text-white',
|
|
11
|
-
danger: 'bg-danger500 text-white',
|
|
12
|
-
},
|
|
13
|
-
outline: {
|
|
14
|
-
neutral: 'bg-white outline outline-neutral200',
|
|
15
|
-
point: 'bg-white outline outline-lb500 text-lb500',
|
|
16
|
-
danger: 'bg-white outline outline-danger500 text-danger500',
|
|
17
|
-
},
|
|
18
|
-
ghost: {
|
|
19
|
-
neutral: 'bg-transparent',
|
|
20
|
-
point: 'bg-transparent text-lb500',
|
|
21
|
-
danger: 'bg-transparent text-danger500',
|
|
22
|
-
},
|
|
23
|
-
link: {
|
|
24
|
-
neutral: 'bg-transparent underline underline-offset-[4px]',
|
|
25
|
-
point: 'bg-transparent text-lb500 underline underline-offset-[4px]',
|
|
26
|
-
danger: 'bg-transparent text-danger500 underline underline-offset-[4px]',
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
const variantHoverClasses = {
|
|
30
|
-
solid: {
|
|
31
|
-
neutral: 'hover:bg-neutral900 active:bg-neutral900',
|
|
32
|
-
point: 'hover:bg-lb700 active:bg-lb700',
|
|
33
|
-
danger: 'hover:bg-danger700 active:bg-danger700',
|
|
34
|
-
},
|
|
35
|
-
outline: {
|
|
36
|
-
neutral: 'hover:bg-mono100 active:bg-mono100',
|
|
37
|
-
point: 'hover:bg-accept50 active:bg-accept50',
|
|
38
|
-
danger: 'hover:bg-danger50 active:bg-danger50',
|
|
39
|
-
},
|
|
40
|
-
ghost: {
|
|
41
|
-
neutral: 'hover:bg-mono100',
|
|
42
|
-
point: 'hover:bg-accept50',
|
|
43
|
-
danger: 'hover:bg-danger50',
|
|
44
|
-
},
|
|
45
|
-
link: {
|
|
46
|
-
neutral: 'hover:text-neutral700 active:text-neutral700',
|
|
47
|
-
point: 'hover:text-lb700 active:text-lb700',
|
|
48
|
-
danger: 'hover:text-danger600 active:text-danger600',
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
const variantDisabledClasses = {
|
|
52
|
-
solid: 'bg-mono300 text-white',
|
|
53
|
-
outline: 'text-mono300 outline outline-neutral100',
|
|
54
|
-
ghost: 'text-mono300',
|
|
55
|
-
link: 'text-mono300 underline underline-offset-[4px]',
|
|
56
|
-
};
|
|
57
|
-
const colorFocusClasses = {
|
|
58
|
-
neutral: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral800',
|
|
59
|
-
point: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-lb500',
|
|
60
|
-
danger: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-danger500',
|
|
61
|
-
};
|
|
62
|
-
const sizeClasses = {
|
|
63
|
-
'2xsmall': 'btn-2xs',
|
|
64
|
-
xsmall: 'btn-xs',
|
|
65
|
-
small: 'btn-sm',
|
|
66
|
-
medium: 'btn-md',
|
|
67
|
-
large: 'btn-lg',
|
|
68
|
-
xlarge: 'btn-xl',
|
|
69
|
-
};
|
|
70
|
-
const iconSizeClasses = {
|
|
71
|
-
'2xsmall': 'icon-2xs',
|
|
72
|
-
xsmall: 'icon-xs',
|
|
73
|
-
small: 'icon-sm',
|
|
74
|
-
medium: 'icon-md',
|
|
75
|
-
large: 'icon-lg',
|
|
76
|
-
xlarge: 'icon-xl',
|
|
77
|
-
};
|
|
78
|
-
const alignClasses = {
|
|
79
|
-
left: 'justify-start',
|
|
80
|
-
center: 'justify-center',
|
|
81
|
-
right: 'justify-end',
|
|
82
|
-
};
|
|
83
|
-
const shapeClasses = {
|
|
84
|
-
default: 'rounded-[5px]',
|
|
85
|
-
capsule: 'rounded-full',
|
|
86
|
-
};
|
|
87
|
-
const Button = ({ as, variant = 'solid', color = 'point', size = 'small', shape = 'default', align = 'center', loading = false, block = false, children, className, leftIcon, rightIcon, compact = false, ref, ...props }) => {
|
|
88
|
-
const iconSize = iconSizeClasses[size];
|
|
89
|
-
return (_jsxs(ButtonBase.Root, { as: as, ref: ref, className: cn('relative ld-transition', {
|
|
90
|
-
[variantBaseClasses[variant][color]]: !props.disabled,
|
|
91
|
-
[variantHoverClasses[variant][color]]: !props.disabled && !loading,
|
|
92
|
-
[variantDisabledClasses[variant]]: props.disabled,
|
|
93
|
-
}, {
|
|
94
|
-
[`${colorFocusClasses[color]} focus-visible:ring-offset-2`]: variant === 'solid',
|
|
95
|
-
[`${colorFocusClasses[color]} focus-visible:ring-inset`]: variant !== 'solid',
|
|
96
|
-
}, {
|
|
97
|
-
['cursor-pointer']: !props.disabled && !loading,
|
|
98
|
-
['cursor-wait']: !props.disabled && loading,
|
|
99
|
-
['cursor-not-allowed']: props.disabled,
|
|
100
|
-
}, block && 'w-full', sizeClasses[size], shapeClasses[shape], alignClasses[align], compact && 'px-0 min-w-0 aspect-square', className), ...props, disabled: props.disabled || loading, children: [loading ? (_jsx(ButtonSpinner, { size: size, className: "mobile:absolute mobile:left-1/2 mobile:top-1/2 mobile:-translate-x-1/2 mobile:-translate-y-1/2" })) : (renderIcon(leftIcon, iconSize)), children && (_jsx("span", { className: cn('shrink-0', loading && 'mobile:invisible'), children: children })), renderIcon(rightIcon, iconSize, loading && 'mobile:invisible')] }));
|
|
101
|
-
};
|
|
102
|
-
export default Button;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonBase.d.ts","sourceRoot":"","sources":["../../../src/components/Button/ButtonBase.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,UAAU;UACP,KAAK,CAAC,WAAW;CAChC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|