@loword/loword-design-system 0.0.5 → 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 +5 -2
- 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
|
@@ -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,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
|
+
}
|