@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.
Files changed (254) hide show
  1. package/dist/index.css +9 -0
  2. package/package.json +6 -3
  3. package/src/styles/carousel.css +9 -0
  4. package/src/styles/color.css +185 -0
  5. package/src/styles/components/badge.css +41 -0
  6. package/src/styles/components/bread-crumb.css +23 -0
  7. package/src/styles/components/button.css +183 -0
  8. package/src/styles/components/editor.css +147 -0
  9. package/src/styles/components/icon.css +29 -0
  10. package/src/styles/components/index.css +9 -0
  11. package/src/styles/components/input.css +52 -0
  12. package/src/styles/components/modal.css +25 -0
  13. package/src/styles/components/shared.css +52 -0
  14. package/src/styles/components/spinner.css +38 -0
  15. package/src/styles/focus.css +12 -0
  16. package/src/styles/gradient.css +41 -0
  17. package/src/styles/layout.css +19 -0
  18. package/src/styles/motion.css +235 -0
  19. package/src/styles/radius.css +8 -0
  20. package/src/styles/responsive.css +42 -0
  21. package/src/styles/scrollbar.css +59 -0
  22. package/src/styles/slider.css +65 -0
  23. package/src/styles/spacing.css +592 -0
  24. package/src/styles/text-utils.css +7 -0
  25. package/src/styles/typography.css +171 -0
  26. package/src/theme.css +19 -0
  27. package/dist/components/Avatar/Avatar.d.ts +0 -11
  28. package/dist/components/Avatar/Avatar.d.ts.map +0 -1
  29. package/dist/components/Avatar/Avatar.js +0 -24
  30. package/dist/components/Avatar/AvatarBase.d.ts +0 -32
  31. package/dist/components/Avatar/AvatarBase.d.ts.map +0 -1
  32. package/dist/components/Avatar/AvatarBase.js +0 -49
  33. package/dist/components/Badge/Badge.d.ts +0 -25
  34. package/dist/components/Badge/Badge.d.ts.map +0 -1
  35. package/dist/components/Badge/Badge.js +0 -36
  36. package/dist/components/Badge/BadgeBase.d.ts +0 -10
  37. package/dist/components/Badge/BadgeBase.d.ts.map +0 -1
  38. package/dist/components/Badge/BadgeBase.js +0 -9
  39. package/dist/components/BreadCrumb/BreadCrumb.d.ts +0 -17
  40. package/dist/components/BreadCrumb/BreadCrumb.d.ts.map +0 -1
  41. package/dist/components/BreadCrumb/BreadCrumb.js +0 -37
  42. package/dist/components/BreadCrumb/BreadCrumbBase.d.ts +0 -9
  43. package/dist/components/BreadCrumb/BreadCrumbBase.d.ts.map +0 -1
  44. package/dist/components/BreadCrumb/BreadCrumbBase.js +0 -17
  45. package/dist/components/Button/Button.d.ts +0 -26
  46. package/dist/components/Button/Button.d.ts.map +0 -1
  47. package/dist/components/Button/Button.js +0 -102
  48. package/dist/components/Button/ButtonBase.d.ts +0 -5
  49. package/dist/components/Button/ButtonBase.d.ts.map +0 -1
  50. package/dist/components/Button/ButtonBase.js +0 -10
  51. package/dist/components/Button/ButtonSpinner.d.ts +0 -8
  52. package/dist/components/Button/ButtonSpinner.d.ts.map +0 -1
  53. package/dist/components/Button/ButtonSpinner.js +0 -15
  54. package/dist/components/Calendar/Calendar.d.ts +0 -16
  55. package/dist/components/Calendar/Calendar.d.ts.map +0 -1
  56. package/dist/components/Calendar/Calendar.js +0 -75
  57. package/dist/components/Callout/Callout.d.ts +0 -10
  58. package/dist/components/Callout/Callout.d.ts.map +0 -1
  59. package/dist/components/Callout/Callout.js +0 -6
  60. package/dist/components/Callout/CalloutBase.d.ts +0 -18
  61. package/dist/components/Callout/CalloutBase.d.ts.map +0 -1
  62. package/dist/components/Callout/CalloutBase.js +0 -21
  63. package/dist/components/Carousel/Carousel.d.ts +0 -50
  64. package/dist/components/Carousel/Carousel.d.ts.map +0 -1
  65. package/dist/components/Carousel/Carousel.js +0 -22
  66. package/dist/components/Carousel/CarouselBase.d.ts +0 -98
  67. package/dist/components/Carousel/CarouselBase.d.ts.map +0 -1
  68. package/dist/components/Carousel/CarouselBase.js +0 -144
  69. package/dist/components/Checkbox/Checkbox.d.ts +0 -27
  70. package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
  71. package/dist/components/Checkbox/Checkbox.js +0 -30
  72. package/dist/components/Checkbox/CheckboxBase.d.ts +0 -40
  73. package/dist/components/Checkbox/CheckboxBase.d.ts.map +0 -1
  74. package/dist/components/Checkbox/CheckboxBase.js +0 -57
  75. package/dist/components/Checkbox/CheckboxGroup.d.ts +0 -22
  76. package/dist/components/Checkbox/CheckboxGroup.d.ts.map +0 -1
  77. package/dist/components/Checkbox/CheckboxGroup.js +0 -13
  78. package/dist/components/Checkbox/FormCheckbox.d.ts +0 -14
  79. package/dist/components/Checkbox/FormCheckbox.d.ts.map +0 -1
  80. package/dist/components/Checkbox/FormCheckbox.js +0 -9
  81. package/dist/components/Checkbox/FormCheckboxGroup.d.ts +0 -13
  82. package/dist/components/Checkbox/FormCheckboxGroup.d.ts.map +0 -1
  83. package/dist/components/Checkbox/FormCheckboxGroup.js +0 -9
  84. package/dist/components/DataCalendar/DataCalendar.d.ts +0 -12
  85. package/dist/components/DataCalendar/DataCalendar.d.ts.map +0 -1
  86. package/dist/components/DataCalendar/DataCalendar.js +0 -13
  87. package/dist/components/DataCalendar/DataCalendarBase.d.ts +0 -45
  88. package/dist/components/DataCalendar/DataCalendarBase.d.ts.map +0 -1
  89. package/dist/components/DataCalendar/DataCalendarBase.js +0 -57
  90. package/dist/components/DatePicker/DatePicker.d.ts +0 -34
  91. package/dist/components/DatePicker/DatePicker.d.ts.map +0 -1
  92. package/dist/components/DatePicker/DatePicker.js +0 -44
  93. package/dist/components/DatePicker/FormDatePicker.d.ts +0 -12
  94. package/dist/components/DatePicker/FormDatePicker.d.ts.map +0 -1
  95. package/dist/components/DatePicker/FormDatePicker.js +0 -12
  96. package/dist/components/DateRangePicker/DateRangePicker.d.ts +0 -49
  97. package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +0 -1
  98. package/dist/components/DateRangePicker/DateRangePicker.js +0 -197
  99. package/dist/components/DateRangePicker/FormDateRangePicker.d.ts +0 -12
  100. package/dist/components/DateRangePicker/FormDateRangePicker.d.ts.map +0 -1
  101. package/dist/components/DateRangePicker/FormDateRangePicker.js +0 -10
  102. package/dist/components/Divider/Divider.d.ts +0 -9
  103. package/dist/components/Divider/Divider.d.ts.map +0 -1
  104. package/dist/components/Divider/Divider.js +0 -11
  105. package/dist/components/Divider/DividerBase.d.ts +0 -9
  106. package/dist/components/Divider/DividerBase.d.ts.map +0 -1
  107. package/dist/components/Divider/DividerBase.js +0 -9
  108. package/dist/components/Drawer/Drawer.d.ts +0 -51
  109. package/dist/components/Drawer/Drawer.d.ts.map +0 -1
  110. package/dist/components/Drawer/Drawer.js +0 -30
  111. package/dist/components/Drawer/DrawerBase.d.ts +0 -52
  112. package/dist/components/Drawer/DrawerBase.d.ts.map +0 -1
  113. package/dist/components/Drawer/DrawerBase.js +0 -38
  114. package/dist/components/Editor/Editor.d.ts +0 -12
  115. package/dist/components/Editor/Editor.d.ts.map +0 -1
  116. package/dist/components/Editor/Editor.js +0 -162
  117. package/dist/components/Editor/EditorBase.d.ts +0 -52
  118. package/dist/components/Editor/EditorBase.d.ts.map +0 -1
  119. package/dist/components/Editor/EditorBase.js +0 -89
  120. package/dist/components/Editor/Viewer.d.ts +0 -7
  121. package/dist/components/Editor/Viewer.d.ts.map +0 -1
  122. package/dist/components/Editor/Viewer.js +0 -9
  123. package/dist/components/Editor/extensions.d.ts +0 -6
  124. package/dist/components/Editor/extensions.d.ts.map +0 -1
  125. package/dist/components/Editor/extensions.js +0 -38
  126. package/dist/components/FileUpload/FileUploadBase.d.ts +0 -50
  127. package/dist/components/FileUpload/FileUploadBase.d.ts.map +0 -1
  128. package/dist/components/FileUpload/FileUploadBase.js +0 -102
  129. package/dist/components/Input/FormInput.d.ts +0 -15
  130. package/dist/components/Input/FormInput.d.ts.map +0 -1
  131. package/dist/components/Input/FormInput.js +0 -19
  132. package/dist/components/Input/Input.d.ts +0 -24
  133. package/dist/components/Input/Input.d.ts.map +0 -1
  134. package/dist/components/Input/Input.js +0 -71
  135. package/dist/components/Input/InputBase.d.ts +0 -22
  136. package/dist/components/Input/InputBase.d.ts.map +0 -1
  137. package/dist/components/Input/InputBase.js +0 -17
  138. package/dist/components/LNB/LNBBase.d.ts +0 -82
  139. package/dist/components/LNB/LNBBase.d.ts.map +0 -1
  140. package/dist/components/LNB/LNBBase.js +0 -108
  141. package/dist/components/LoadingDots/LoadingDots.d.ts +0 -8
  142. package/dist/components/LoadingDots/LoadingDots.d.ts.map +0 -1
  143. package/dist/components/LoadingDots/LoadingDots.js +0 -29
  144. package/dist/components/MenuBar/MenuBar.d.ts +0 -21
  145. package/dist/components/MenuBar/MenuBar.d.ts.map +0 -1
  146. package/dist/components/MenuBar/MenuBar.js +0 -33
  147. package/dist/components/MenuBar/MenuBarBase.d.ts +0 -43
  148. package/dist/components/MenuBar/MenuBarBase.d.ts.map +0 -1
  149. package/dist/components/MenuBar/MenuBarBase.js +0 -69
  150. package/dist/components/Modal/Modal.d.ts +0 -51
  151. package/dist/components/Modal/Modal.d.ts.map +0 -1
  152. package/dist/components/Modal/Modal.js +0 -72
  153. package/dist/components/Modal/ModalBase.d.ts +0 -42
  154. package/dist/components/Modal/ModalBase.d.ts.map +0 -1
  155. package/dist/components/Modal/ModalBase.js +0 -30
  156. package/dist/components/Modal/openModal.d.ts +0 -24
  157. package/dist/components/Modal/openModal.d.ts.map +0 -1
  158. package/dist/components/Modal/openModal.js +0 -52
  159. package/dist/components/OTPInput/OTPInput.d.ts +0 -46
  160. package/dist/components/OTPInput/OTPInput.d.ts.map +0 -1
  161. package/dist/components/OTPInput/OTPInput.js +0 -87
  162. package/dist/components/Pagination/Pagination.d.ts +0 -12
  163. package/dist/components/Pagination/Pagination.d.ts.map +0 -1
  164. package/dist/components/Pagination/Pagination.js +0 -5
  165. package/dist/components/Pagination/PaginationBase.d.ts +0 -36
  166. package/dist/components/Pagination/PaginationBase.d.ts.map +0 -1
  167. package/dist/components/Pagination/PaginationBase.js +0 -44
  168. package/dist/components/Pagination/paginationUtils.d.ts +0 -2
  169. package/dist/components/Pagination/paginationUtils.d.ts.map +0 -1
  170. package/dist/components/Pagination/paginationUtils.js +0 -18
  171. package/dist/components/Popover/Popover.d.ts +0 -42
  172. package/dist/components/Popover/Popover.d.ts.map +0 -1
  173. package/dist/components/Popover/Popover.js +0 -31
  174. package/dist/components/Popover/PopoverBase.d.ts +0 -31
  175. package/dist/components/Popover/PopoverBase.d.ts.map +0 -1
  176. package/dist/components/Popover/PopoverBase.js +0 -18
  177. package/dist/components/Radio/FormRadioGroup.d.ts +0 -13
  178. package/dist/components/Radio/FormRadioGroup.d.ts.map +0 -1
  179. package/dist/components/Radio/FormRadioGroup.js +0 -9
  180. package/dist/components/Radio/Radio.d.ts +0 -24
  181. package/dist/components/Radio/Radio.d.ts.map +0 -1
  182. package/dist/components/Radio/Radio.js +0 -39
  183. package/dist/components/Radio/RadioBase.d.ts +0 -38
  184. package/dist/components/Radio/RadioBase.d.ts.map +0 -1
  185. package/dist/components/Radio/RadioBase.js +0 -46
  186. package/dist/components/Radio/RadioGroup.d.ts +0 -22
  187. package/dist/components/Radio/RadioGroup.d.ts.map +0 -1
  188. package/dist/components/Radio/RadioGroup.js +0 -7
  189. package/dist/components/ScrollArea/ScrollArea.d.ts +0 -15
  190. package/dist/components/ScrollArea/ScrollArea.d.ts.map +0 -1
  191. package/dist/components/ScrollArea/ScrollArea.js +0 -10
  192. package/dist/components/Select/FormMultiSelect.d.ts +0 -13
  193. package/dist/components/Select/FormMultiSelect.d.ts.map +0 -1
  194. package/dist/components/Select/FormMultiSelect.js +0 -14
  195. package/dist/components/Select/FormSelect.d.ts +0 -13
  196. package/dist/components/Select/FormSelect.d.ts.map +0 -1
  197. package/dist/components/Select/FormSelect.js +0 -10
  198. package/dist/components/Select/MultiSelect.d.ts +0 -31
  199. package/dist/components/Select/MultiSelect.d.ts.map +0 -1
  200. package/dist/components/Select/MultiSelect.js +0 -59
  201. package/dist/components/Select/Select.d.ts +0 -41
  202. package/dist/components/Select/Select.d.ts.map +0 -1
  203. package/dist/components/Select/Select.js +0 -55
  204. package/dist/components/Select/SelectBase.d.ts +0 -59
  205. package/dist/components/Select/SelectBase.d.ts.map +0 -1
  206. package/dist/components/Select/SelectBase.js +0 -211
  207. package/dist/components/Skeleton/Skeleton.d.ts +0 -10
  208. package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
  209. package/dist/components/Skeleton/Skeleton.js +0 -8
  210. package/dist/components/Slider/Slider.d.ts +0 -23
  211. package/dist/components/Slider/Slider.d.ts.map +0 -1
  212. package/dist/components/Slider/Slider.js +0 -195
  213. package/dist/components/Spinner/Spinner.d.ts +0 -25
  214. package/dist/components/Spinner/Spinner.d.ts.map +0 -1
  215. package/dist/components/Spinner/Spinner.js +0 -20
  216. package/dist/components/Table/Table.d.ts +0 -34
  217. package/dist/components/Table/Table.d.ts.map +0 -1
  218. package/dist/components/Table/Table.js +0 -29
  219. package/dist/components/Table/TableBase.d.ts +0 -37
  220. package/dist/components/Table/TableBase.d.ts.map +0 -1
  221. package/dist/components/Table/TableBase.js +0 -39
  222. package/dist/components/Table/TableField.d.ts +0 -64
  223. package/dist/components/Table/TableField.d.ts.map +0 -1
  224. package/dist/components/Table/TableField.js +0 -87
  225. package/dist/components/Table/TanstackTable.d.ts +0 -23
  226. package/dist/components/Table/TanstackTable.d.ts.map +0 -1
  227. package/dist/components/Table/TanstackTable.js +0 -35
  228. package/dist/components/TimePicker/FormTimePicker.d.ts +0 -12
  229. package/dist/components/TimePicker/FormTimePicker.d.ts.map +0 -1
  230. package/dist/components/TimePicker/FormTimePicker.js +0 -12
  231. package/dist/components/TimePicker/TimePicker.d.ts +0 -27
  232. package/dist/components/TimePicker/TimePicker.d.ts.map +0 -1
  233. package/dist/components/TimePicker/TimePicker.js +0 -120
  234. package/dist/components/Toast/Toast.d.ts +0 -18
  235. package/dist/components/Toast/Toast.d.ts.map +0 -1
  236. package/dist/components/Toast/Toast.js +0 -42
  237. package/dist/components/Toast/Toaster.d.ts +0 -7
  238. package/dist/components/Toast/Toaster.d.ts.map +0 -1
  239. package/dist/components/Toast/Toaster.js +0 -7
  240. package/dist/components/ToggleButton/FormToggleButton.d.ts +0 -12
  241. package/dist/components/ToggleButton/FormToggleButton.d.ts.map +0 -1
  242. package/dist/components/ToggleButton/FormToggleButton.js +0 -9
  243. package/dist/components/ToggleButton/ToggleButton.d.ts +0 -31
  244. package/dist/components/ToggleButton/ToggleButton.d.ts.map +0 -1
  245. package/dist/components/ToggleButton/ToggleButton.js +0 -42
  246. package/dist/components/ToggleButton/ToggleButtonBase.d.ts +0 -41
  247. package/dist/components/ToggleButton/ToggleButtonBase.d.ts.map +0 -1
  248. package/dist/components/ToggleButton/ToggleButtonBase.js +0 -59
  249. package/dist/components/Tooltip/Tooltip.d.ts +0 -18
  250. package/dist/components/Tooltip/Tooltip.d.ts.map +0 -1
  251. package/dist/components/Tooltip/Tooltip.js +0 -13
  252. package/dist/components/Tooltip/TooltipBase.d.ts +0 -39
  253. package/dist/components/Tooltip/TooltipBase.d.ts.map +0 -1
  254. package/dist/components/Tooltip/TooltipBase.js +0 -46
@@ -0,0 +1,52 @@
1
+ @theme {
2
+ /* padding-x: Input */
3
+ --control-padding-x-input-2xs: var(--spacing_4);
4
+ --control-padding-x-input-xs: var(--spacing_6);
5
+ --control-padding-x-input-sm: var(--spacing_10);
6
+ --control-padding-x-input-md: var(--spacing_12);
7
+ --control-padding-x-input-lg: var(--spacing_16);
8
+ --control-padding-x-input-xl: var(--spacing_20);
9
+ }
10
+
11
+ @utility input-2xs {
12
+ height: var(--control-height-2xs);
13
+ padding-inline: var(--control-padding-x-input-2xs);
14
+ border-radius: var(--control-radius-2xs);
15
+ border-width: var(--control-border-2xs);
16
+ @apply display10;
17
+ }
18
+ @utility input-xs {
19
+ height: var(--control-height-xs);
20
+ padding-inline: var(--control-padding-x-input-xs);
21
+ border-radius: var(--control-radius-xs);
22
+ border-width: var(--control-border-2xs);
23
+ @apply display12;
24
+ }
25
+ @utility input-sm {
26
+ height: var(--control-height-sm);
27
+ padding-inline: var(--control-padding-x-input-sm);
28
+ border-radius: var(--control-radius-sm);
29
+ border-width: var(--control-border-2xs);
30
+ @apply display14;
31
+ }
32
+ @utility input-md {
33
+ height: var(--control-height-md);
34
+ padding-inline: var(--control-padding-x-input-md);
35
+ border-radius: var(--control-radius-md);
36
+ border-width: var(--control-border-2xs);
37
+ @apply display16;
38
+ }
39
+ @utility input-lg {
40
+ height: var(--control-height-lg);
41
+ padding-inline: var(--control-padding-x-input-lg);
42
+ border-radius: var(--control-radius-lg);
43
+ border-width: var(--control-border-2xs);
44
+ @apply display18;
45
+ }
46
+ @utility input-xl {
47
+ height: var(--control-height-xl);
48
+ padding-inline: var(--control-padding-x-input-xl);
49
+ border-radius: var(--control-radius-xl);
50
+ border-width: var(--control-border-xs);
51
+ @apply display20;
52
+ }
@@ -0,0 +1,25 @@
1
+ /* small | medium | large | xlarge */
2
+
3
+ @theme {
4
+ --modal-width-sm: 400px;
5
+ --modal-width-md: 520px;
6
+ --modal-width-lg: 680px;
7
+ --modal-width-xl: 860px;
8
+ --modal-mobile-margin: px;
9
+ }
10
+
11
+ @utility modal-sm {
12
+ width: var(--modal-width-sm);
13
+ }
14
+
15
+ @utility modal-md {
16
+ width: var(--modal-width-md);
17
+ }
18
+
19
+ @utility modal-lg {
20
+ width: var(--modal-width-lg);
21
+ }
22
+
23
+ @utility modal-xl {
24
+ width: var(--modal-width-xl);
25
+ }
@@ -0,0 +1,52 @@
1
+ @theme {
2
+ /* height (축) */
3
+ --control-height-2xs: 16px;
4
+ --control-height-xs: 24px;
5
+ --control-height-sm: 32px;
6
+ --control-height-md: 40px;
7
+ --control-height-lg: 48px;
8
+ --control-height-xl: 64px;
9
+
10
+ /* radius */
11
+ --control-radius-2xs: var(--radius_2);
12
+ --control-radius-xs: var(--radius_4);
13
+ --control-radius-sm: var(--radius_6);
14
+ --control-radius-md: var(--radius_8);
15
+ --control-radius-lg: var(--radius_10);
16
+ --control-radius-xl: var(--radius_16);
17
+
18
+ /* icon size (≈ height * 0.5) */
19
+ --control-icon-2xs: 8px;
20
+ --control-icon-xs: 12px;
21
+ --control-icon-sm: 16px;
22
+ --control-icon-md: 20px;
23
+ --control-icon-lg: 24px;
24
+ --control-icon-xl: 28px;
25
+
26
+ /* gap (text ↔ icon) */
27
+ --control-gap-2xs: var(--spacing_2);
28
+ --control-gap-xs: var(--spacing_4);
29
+ --control-gap-sm: var(--spacing_6);
30
+ --control-gap-md: var(--spacing_8);
31
+ --control-gap-lg: var(--spacing_10);
32
+ --control-gap-xl: var(--spacing_12);
33
+
34
+ /* border width */
35
+ --control-border-2xs: 1px;
36
+ --control-border-xs: 2px;
37
+ --control-border-sm: 3px;
38
+ --control-border-md: 4px;
39
+ --control-border-lg: 5px;
40
+ --control-border-xl: 6px;
41
+
42
+ /* focus ring width */
43
+ --control-focus-ring-2xs: 1px;
44
+ --control-focus-ring-xs: 2px;
45
+ --control-focus-ring-sm: 3px;
46
+ --control-focus-ring-md: 4px;
47
+ --control-focus-ring-lg: 5px;
48
+ --control-focus-ring-xl: 6px;
49
+
50
+ /* font-weight (컴포넌트 공용) */
51
+ --control-font-weight: var(--font-medium);
52
+ }
@@ -0,0 +1,38 @@
1
+ @theme {
2
+ --control-size-spinner-2xs: var(--spacing_8);
3
+ --control-size-spinner-xs: var(--spacing_12);
4
+ --control-size-spinner-sm: var(--spacing_16);
5
+ --control-size-spinner-md: var(--spacing_20);
6
+ --control-size-spinner-lg: var(--spacing_24);
7
+ --control-size-spinner-xl: var(--spacing_28);
8
+ }
9
+
10
+ @utility spinner-2xs {
11
+ width: var(--control-size-spinner-2xs);
12
+ height: var(--control-size-spinner-2xs);
13
+ }
14
+
15
+ @utility spinner-xs {
16
+ width: var(--control-size-spinner-xs);
17
+ height: var(--control-size-spinner-xs);
18
+ }
19
+
20
+ @utility spinner-sm {
21
+ width: var(--control-size-spinner-sm);
22
+ height: var(--control-size-spinner-sm);
23
+ }
24
+
25
+ @utility spinner-md {
26
+ width: var(--control-size-spinner-md);
27
+ height: var(--control-size-spinner-md);
28
+ }
29
+
30
+ @utility spinner-lg {
31
+ width: var(--control-size-spinner-lg);
32
+ height: var(--control-size-spinner-lg);
33
+ }
34
+
35
+ @utility spinner-xl {
36
+ width: var(--control-size-spinner-xl);
37
+ height: var(--control-size-spinner-xl);
38
+ }
@@ -0,0 +1,12 @@
1
+ /* ==================== focus ==================== */
2
+ /* 포커스 시 outline을 강조 */
3
+ @utility ld-outline {
4
+ outline: 3px solid transparent;
5
+ transition: all 300ms ease-out;
6
+ border: 1px solid var(--color-mono10);
7
+
8
+ &:focus {
9
+ outline: 3px solid var(--color-lb500);
10
+ border: 0px;
11
+ }
12
+ }
@@ -0,0 +1,41 @@
1
+ /* ==================== text gradient ==================== */
2
+ /* 텍스트에 그라데이션을 적용 */
3
+ @utility gradient-text {
4
+ background: linear-gradient(to right, #06f, #c0f, #f00);
5
+ background-clip: text;
6
+ -webkit-background-clip: text;
7
+ -webkit-text-fill-color: transparent;
8
+ }
9
+
10
+ @utility gradient-text2 {
11
+ background: linear-gradient(90deg, #9f21ff 0%, #d427db 50.96%, #f6214b 100%);
12
+ background-clip: text;
13
+ -webkit-background-clip: text;
14
+ -webkit-text-fill-color: transparent;
15
+ }
16
+
17
+ /* ==================== gradient motion ==================== */
18
+ /* 그라데이션 배경 이동 애니메이션 */
19
+ @utility animate-gradient {
20
+ animation: gradient 8s linear infinite;
21
+ }
22
+
23
+ @keyframes gradient {
24
+ 0% {
25
+ background-position: 0% 50%;
26
+ }
27
+ 50% {
28
+ background-position: 100% 50%;
29
+ }
30
+ 100% {
31
+ background-position: 0% 50%;
32
+ }
33
+ }
34
+
35
+ /* ==================== performance ==================== */
36
+ /* 그라데이션 렌더링 최적화 */
37
+ @utility gradient-options {
38
+ will-change: transform;
39
+ transform: translateZ(0);
40
+ contain: layout style paint;
41
+ }
@@ -0,0 +1,19 @@
1
+ @theme {
2
+ /* layout size */
3
+ --size_xs: 480px;
4
+ --size_sm: 576px;
5
+ --size_md: 768px;
6
+ --size_lg: 992px;
7
+ --size_xl: 1200px;
8
+ --size_2xl: 1600px;
9
+ --size_3xl: 1920px;
10
+
11
+ /* width layout */
12
+ --width-layout_xs: var(--size_xs);
13
+ --width-layout_sm: var(--size_sm);
14
+ --width-layout_md: var(--size_md);
15
+ --width-layout_lg: var(--size_lg);
16
+ --width-layout_xl: var(--size_xl);
17
+ --width-layout_2xl: var(--size_2xl);
18
+ --width-layout_3xl: var(--size_3xl);
19
+ }
@@ -0,0 +1,235 @@
1
+ /* ==================== transition ==================== */
2
+ /* 상태 전환을 부드럽게 처리 */
3
+ @utility ld-transition {
4
+ transition: all 300ms ease-out;
5
+ }
6
+
7
+ /* ==================== error ==================== */
8
+ /* 에러 메시지 등장/퇴장 */
9
+ @keyframes error-fade-in {
10
+ from {
11
+ opacity: 0;
12
+ transform: translateY(-4px);
13
+ }
14
+ to {
15
+ opacity: 1;
16
+ transform: translateY(0);
17
+ }
18
+ }
19
+
20
+ @keyframes error-fade-out {
21
+ from {
22
+ opacity: 1;
23
+ transform: translateY(0);
24
+ }
25
+ to {
26
+ opacity: 0;
27
+ transform: translateY(-4px);
28
+ }
29
+ }
30
+
31
+ /* ==================== shake ==================== */
32
+ /* 흔들림 피드백 */
33
+ @utility animate-shake {
34
+ animation: shake 0.1s ease-in-out 2;
35
+ }
36
+
37
+ @keyframes shake {
38
+ 0%,
39
+ 100% {
40
+ transform: translateX(0);
41
+ }
42
+ 25% {
43
+ transform: translateX(-10px);
44
+ }
45
+ 75% {
46
+ transform: translateX(10px);
47
+ }
48
+ }
49
+
50
+ /* ==================== collapsible ==================== */
51
+ /* 펼침/접힘 모션 */
52
+ @utility animate-down {
53
+ animation: collapsible-down 300ms ease-in-out;
54
+ }
55
+
56
+ @utility animate-up {
57
+ animation: collapsible-up 300ms ease-in-out;
58
+ }
59
+
60
+ @keyframes collapsible-down {
61
+ from {
62
+ opacity: 0;
63
+ }
64
+ to {
65
+ opacity: 1;
66
+ }
67
+ }
68
+
69
+ @keyframes collapsible-up {
70
+ from {
71
+ opacity: 1;
72
+ }
73
+ to {
74
+ opacity: 0;
75
+ }
76
+ }
77
+
78
+ /* ==================== plan ==================== */
79
+ /* plan 패널 등장/퇴장 */
80
+ @utility plan-enter {
81
+ animation: plan-enter 400ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
82
+ }
83
+
84
+ @utility plan-leave {
85
+ animation: plan-leave 400ms cubic-bezier(0.4, 0, 0.2, 1) both;
86
+ }
87
+
88
+ @keyframes plan-enter {
89
+ from {
90
+ opacity: 0;
91
+ transform: translateY(10px);
92
+ }
93
+ to {
94
+ opacity: 1;
95
+ transform: translateY(0);
96
+ }
97
+ }
98
+
99
+ @keyframes plan-leave {
100
+ from {
101
+ opacity: 1;
102
+ transform: translateY(0);
103
+ }
104
+ to {
105
+ opacity: 0;
106
+ transform: translateY(10px);
107
+ }
108
+ }
109
+
110
+ /* ==================== plan slide ==================== */
111
+ /* plan 패널 폭 슬라이드 */
112
+ @utility plan-slide-enter {
113
+ animation: plan-slide-enter-w 400ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
114
+ will-change: width;
115
+ }
116
+
117
+ @utility plan-slide-leave {
118
+ animation: plan-slide-leave-w 400ms cubic-bezier(0.4, 0, 0.2, 1) both;
119
+ will-change: width;
120
+ }
121
+
122
+ @keyframes plan-slide-enter-w {
123
+ from {
124
+ width: 0;
125
+ max-width: 0;
126
+ }
127
+ to {
128
+ width: 300px;
129
+ max-width: 300px;
130
+ }
131
+ }
132
+
133
+ @keyframes plan-slide-leave-w {
134
+ from {
135
+ width: 300px;
136
+ max-width: 300px;
137
+ }
138
+ to {
139
+ width: 0;
140
+ max-width: 0;
141
+ }
142
+ }
143
+
144
+ /* ==================== spin ==================== */
145
+ /* 1회 회전 */
146
+ @keyframes spin-once {
147
+ from {
148
+ transform: rotate(0deg);
149
+ }
150
+ to {
151
+ transform: rotate(360deg);
152
+ }
153
+ }
154
+
155
+ @utility spin-once {
156
+ animation: spin-once 1000ms;
157
+ }
158
+
159
+ /* ==================== migration ==================== */
160
+ /* migration 드롭 모션 */
161
+ @keyframes migration-drop {
162
+ 0% {
163
+ transform: translateX(-50%) translateY(-200px)
164
+ rotate(calc(var(--rf) + 18deg)) scale(0.98);
165
+ opacity: 0;
166
+ }
167
+ 100% {
168
+ transform: translateX(-50%) translateY(0) rotate(var(--rf));
169
+ opacity: 1;
170
+ }
171
+ }
172
+
173
+ @utility migration-drop {
174
+ animation: migration-drop var(--dur, 1.1s) cubic-bezier(0.16, 0.9, 0.1, 1)
175
+ both;
176
+ }
177
+
178
+ @utility migration-variation {
179
+ position: absolute;
180
+ left: 50%;
181
+ will-change: transform, opacity;
182
+ }
183
+
184
+ /* migration 드롭 모바일 버전 */
185
+ @keyframes migration-drop-mobile {
186
+ 0% {
187
+ transform: translateX(-50%) translateY(-100px)
188
+ rotate(calc(var(--rf) + 18deg)) scale(0.98);
189
+ opacity: 0;
190
+ }
191
+ 100% {
192
+ transform: translateX(-50%) translateY(0) rotate(var(--rf));
193
+ opacity: 1;
194
+ }
195
+ }
196
+
197
+ @media (prefers-reduced-motion: reduce) {
198
+ .migration-drop {
199
+ animation: none !important;
200
+ opacity: 1 !important;
201
+ transform: translateX(-50%) translateY(0) rotate(var(--rf));
202
+ }
203
+ }
204
+
205
+ @media (max-width: 1080px) {
206
+ .migration-drop {
207
+ animation: migration-drop-mobile var(--dur, 1.1s)
208
+ cubic-bezier(0.16, 0.9, 0.1, 1) both;
209
+ }
210
+ }
211
+
212
+ /* ==================== fade ==================== */
213
+ /* 일반 fade-in */
214
+ @keyframes fade-in {
215
+ from {
216
+ opacity: 0;
217
+ }
218
+ to {
219
+ opacity: 1;
220
+ }
221
+ }
222
+
223
+ @keyframes fade-out {
224
+ to {
225
+ opacity: 0;
226
+ }
227
+ }
228
+
229
+ @utility animate-fade-in {
230
+ animation: fade-in 300ms ease-out forwards;
231
+ }
232
+
233
+ @utility animate-fade-out {
234
+ animation: fade-out 300ms ease-out forwards;
235
+ }
@@ -0,0 +1,8 @@
1
+ @theme {
2
+ --radius_2: 2px;
3
+ --radius_4: 4px;
4
+ --radius_6: 6px;
5
+ --radius_8: 8px;
6
+ --radius_10: 10px;
7
+ --radius_16: 16px;
8
+ }
@@ -0,0 +1,42 @@
1
+ @variant responsive_layout_min_xs (@media (min-width: theme(--size_xs)));
2
+ @variant responsive_layout_max_xs (@media (max-width: calc(theme(--size_xs) - 1px)));
3
+ @variant responsive_layout_min_sm (@media (min-width: theme(--size_sm)));
4
+ @variant responsive_layout_max_sm (@media (max-width: calc(theme(--size_sm) - 1px)));
5
+ @variant responsive_layout_min_md (@media (min-width: theme(--size_md)));
6
+ @variant responsive_layout_max_md (@media (max-width: calc(theme(--size_md) - 1px)));
7
+ @variant responsive_layout_min_lg (@media (min-width: theme(--size_lg)));
8
+ @variant responsive_layout_max_lg (@media (max-width: calc(theme(--size_lg) - 1px)));
9
+ @variant responsive_layout_min_xl (@media (min-width: theme(--size_xl)));
10
+ @variant responsive_layout_max_xl (@media (max-width: calc(theme(--size_xl) - 1px)));
11
+ @variant responsive_layout_min_2xl (@media (min-width: theme(--size_2xl)));
12
+ @variant responsive_layout_max_2xl (@media (max-width: calc(theme(--size_2xl) - 1px)));
13
+ @variant responsive_layout_min_3xl (@media (min-width: theme(--size_3xl)));
14
+ @variant responsive_layout_max_3xl (@media (max-width: calc(theme(--size_3xl) - 1px)));
15
+
16
+ @custom-variant mobile {
17
+ @variant responsive_layout_max_md {
18
+ @slot;
19
+ }
20
+ }
21
+ @custom-variant tablet {
22
+ @variant responsive_layout_min_md {
23
+ @variant responsive_layout_max_lg {
24
+ @slot;
25
+ }
26
+ }
27
+ }
28
+ @custom-variant tablet-up {
29
+ @variant responsive_layout_min_md {
30
+ @slot;
31
+ }
32
+ }
33
+ @custom-variant tablet-down {
34
+ @variant responsive_layout_max_lg {
35
+ @slot;
36
+ }
37
+ }
38
+ @custom-variant pc {
39
+ @variant responsive_layout_min_lg {
40
+ @slot;
41
+ }
42
+ }
@@ -0,0 +1,59 @@
1
+ /* ==================== scrollbar ==================== */
2
+ /* 스크롤은 유지하고 스크롤바는 숨김 */
3
+ @utility scrollbar-hide {
4
+ scrollbar-width: none;
5
+
6
+ &::-webkit-scrollbar {
7
+ display: none;
8
+ }
9
+
10
+ -ms-overflow-style: none;
11
+ }
12
+
13
+ /* hover 시 스크롤바를 드러냄 */
14
+ @utility scrollbar-hover {
15
+ scrollbar-width: thin;
16
+ scrollbar-color: transparent transparent;
17
+
18
+ &::-webkit-scrollbar {
19
+ width: 6px;
20
+ }
21
+
22
+ &::-webkit-scrollbar-track {
23
+ background: transparent;
24
+ }
25
+
26
+ &::-webkit-scrollbar-thumb {
27
+ background: transparent;
28
+ }
29
+
30
+ &:hover {
31
+ scrollbar-color: rgba(0, 0, 0, 0.3) transparent;
32
+ }
33
+
34
+ &:hover::-webkit-scrollbar-thumb {
35
+ animation: scrollbar-fade-in 0.3s ease forwards;
36
+ }
37
+
38
+ &:not(:hover)::-webkit-scrollbar-thumb {
39
+ animation: scrollbar-fade-out 0.3s ease forwards;
40
+ }
41
+ }
42
+
43
+ @keyframes scrollbar-fade-in {
44
+ from {
45
+ background: transparent;
46
+ }
47
+ to {
48
+ background: rgba(0, 0, 0, 0.3);
49
+ }
50
+ }
51
+
52
+ @keyframes scrollbar-fade-out {
53
+ from {
54
+ background: rgba(0, 0, 0, 0.3);
55
+ }
56
+ to {
57
+ background: transparent;
58
+ }
59
+ }
@@ -0,0 +1,65 @@
1
+ .ld-slider-thumb {
2
+ -webkit-appearance: none;
3
+ appearance: none;
4
+ background: transparent;
5
+ cursor: pointer;
6
+ pointer-events: none;
7
+ }
8
+
9
+ .ld-slider-thumb::-webkit-slider-runnable-track {
10
+ background: transparent;
11
+ }
12
+
13
+ .ld-slider-thumb::-moz-range-track {
14
+ background: transparent;
15
+ }
16
+
17
+ .ld-slider-thumb::-webkit-slider-thumb {
18
+ -webkit-appearance: none;
19
+ width: 18px;
20
+ height: 18px;
21
+ border-radius: 50%;
22
+ background-color: var(--color-lb500);
23
+ border: 2px solid white;
24
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
25
+ transition: transform 150ms ease-out, box-shadow 150ms ease-out;
26
+ pointer-events: auto;
27
+ }
28
+
29
+ .ld-slider-thumb::-webkit-slider-thumb:hover {
30
+ transform: scale(1.15);
31
+ box-shadow: 0 2px 8px rgba(104, 145, 248, 0.4);
32
+ }
33
+
34
+ .ld-slider-thumb::-webkit-slider-thumb:active {
35
+ transform: scale(1.25);
36
+ }
37
+
38
+ .ld-slider-thumb::-moz-range-thumb {
39
+ width: 18px;
40
+ height: 18px;
41
+ border-radius: 50%;
42
+ background-color: var(--color-lb500);
43
+ border: 2px solid white;
44
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
45
+ cursor: pointer;
46
+ pointer-events: auto;
47
+ }
48
+
49
+ .ld-slider-thumb:disabled::-webkit-slider-thumb {
50
+ background-color: var(--color-mono300);
51
+ cursor: not-allowed;
52
+ }
53
+
54
+ .ld-slider-thumb:disabled::-moz-range-thumb {
55
+ background-color: var(--color-mono300);
56
+ cursor: not-allowed;
57
+ }
58
+
59
+ .ld-slider-thumb-active::-webkit-slider-thumb {
60
+ pointer-events: auto;
61
+ }
62
+
63
+ .ld-slider-thumb-inactive::-webkit-slider-thumb {
64
+ pointer-events: none;
65
+ }