@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 CHANGED
@@ -44,6 +44,7 @@
44
44
  --color-mono300: #dadada;
45
45
  --color-mono400: #aaaaaa;
46
46
  --color-mono500: #7c7c7c;
47
+ --color-mono600: #5c5c5c;
47
48
  --color-mono700: #4e4e4e;
48
49
  --color-mono800: #2a2a2a;
49
50
  --color-mono900: #111111;
@@ -2167,6 +2168,9 @@
2167
2168
  .bg-mono300 {
2168
2169
  background-color: var(--color-mono300);
2169
2170
  }
2171
+ .bg-mono600 {
2172
+ background-color: var(--color-mono600);
2173
+ }
2170
2174
  .bg-neutral-100 {
2171
2175
  background-color: var(--color-neutral-100);
2172
2176
  }
@@ -2471,6 +2475,11 @@
2471
2475
  line-height: var(--leading-display32);
2472
2476
  letter-spacing: var(--tracking-display32);
2473
2477
  }
2478
+ .display40 {
2479
+ font-size: var(--text-display40);
2480
+ line-height: var(--leading-display40);
2481
+ letter-spacing: var(--tracking-display40);
2482
+ }
2474
2483
  .toggle-lg {
2475
2484
  font-size: var(--text-display14);
2476
2485
  line-height: var(--leading-display14);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loword/loword-design-system",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "로워드 디자인 시스템 컴포넌트 패키지(Tailwind v4)",
5
5
  "keywords": [
6
6
  "react",
@@ -27,13 +27,16 @@
27
27
  "main": "./dist/index.js",
28
28
  "types": "./dist/index.d.ts",
29
29
  "files": [
30
- "dist"
30
+ "dist",
31
+ "src/theme.css",
32
+ "src/styles"
31
33
  ],
32
34
  "exports": {
33
35
  ".": {
34
36
  "types": "./dist/index.d.ts",
35
37
  "default": "./dist/index.js"
36
38
  },
39
+ "./theme.css": "./src/theme.css",
37
40
  "./styles.css": "./dist/index.css",
38
41
  "./*": {
39
42
  "types": "./dist/*.d.ts",
@@ -0,0 +1,9 @@
1
+ .ld-carousel__viewport {
2
+ overflow: hidden;
3
+ }
4
+
5
+ /* 세로 방향 캐러셀은 viewport에 높이가 필요합니다.
6
+ 소비자가 viewportClassName 또는 height 스타일로 지정합니다. */
7
+ .ld-carousel__viewport > * {
8
+ height: 100%;
9
+ }
@@ -0,0 +1,185 @@
1
+ @theme {
2
+ --color-scheme: light;
3
+
4
+ /* absolute */
5
+ --color-white: #ffffff;
6
+ --color-black: #000000;
7
+
8
+ /* hyper */
9
+ --color-hyper-blue: #0066ff;
10
+
11
+ /* mono (grayscale) */
12
+ --color-mono50: #f6f7f9;
13
+ --color-mono100: #f0f0f0;
14
+ --color-mono200: #ebebeb;
15
+ --color-mono300: #dadada;
16
+ --color-mono400: #aaaaaa;
17
+ --color-mono500: #7c7c7c;
18
+ --color-mono600: #5c5c5c;
19
+ --color-mono700: #4e4e4e;
20
+ --color-mono800: #2a2a2a;
21
+ --color-mono900: #111111;
22
+
23
+ /* neutral (cool gray) */
24
+ --color-neutral50: #fafafa;
25
+ --color-neutral100: #e3e6ea;
26
+ --color-neutral200: #cdd2d7;
27
+ --color-neutral300: #b7bbbf;
28
+ --color-neutral400: #9da3a9;
29
+ --color-neutral500: #848a92;
30
+ --color-neutral600: #6a7079;
31
+ --color-neutral700: #535a64;
32
+ --color-neutral800: #3a3f46;
33
+ --color-neutral900: #191f28;
34
+
35
+ /* blue (primary palette) */
36
+ --color-blue50: #ccd9ff;
37
+ --color-blue100: #b8c9ff;
38
+ --color-blue200: #8fabff;
39
+ --color-blue300: #5c85ff;
40
+ --color-blue400: #2158fd;
41
+ --color-blue500: #003fff;
42
+ --color-blue600: #0033cc;
43
+ --color-blue700: #002699;
44
+ --color-blue800: #011960;
45
+ --color-blue900: #000a29;
46
+
47
+ /* red */
48
+ --color-red50: #ffdbdb;
49
+ --color-red100: #ffbdbd;
50
+ --color-red200: #ff9494;
51
+ --color-red300: #ff7575;
52
+ --color-red400: #ff5a5a;
53
+ --color-red500: #ff4747;
54
+ --color-red600: #ff2e2e;
55
+ --color-red700: #ff0404;
56
+ --color-red800: #c70000;
57
+ --color-red900: #7b0000;
58
+
59
+ /* orange */
60
+ --color-orange50: #ffe8dd;
61
+ --color-orange100: #ffd4c4;
62
+ --color-orange200: #ffb699;
63
+ --color-orange300: #ff9166;
64
+ --color-orange400: #ff7a33;
65
+ --color-orange500: #ff6a00;
66
+ --color-orange600: #ff530f;
67
+ --color-orange700: #e64500;
68
+ --color-orange800: #cc3a00;
69
+ --color-orange900: #802300;
70
+
71
+ /* yellow */
72
+ --color-yellow50: #fff8e0;
73
+ --color-yellow100: #fff3cc;
74
+ --color-yellow200: #ffedb3;
75
+ --color-yellow300: #fce392;
76
+ --color-yellow400: #ffdc6b;
77
+ --color-yellow500: #ffd23d;
78
+ --color-yellow600: #ffcc24;
79
+ --color-yellow700: #f0ac00;
80
+ --color-yellow800: #c58e02;
81
+ --color-yellow900: #856403;
82
+
83
+ /* green */
84
+ --color-green50: #e6ffee;
85
+ --color-green100: #c2ffd5;
86
+ --color-green200: #8effae;
87
+ --color-green300: #52ff89;
88
+ --color-green400: #25f968;
89
+ --color-green500: #00f34c;
90
+ --color-green600: #00de47;
91
+ --color-green700: #00cc41;
92
+ --color-green800: #008f2d;
93
+ --color-green900: #004717;
94
+
95
+ /* pink */
96
+ --color-pink50: #fcf2f8;
97
+ --color-pink100: #fde0ef;
98
+ --color-pink200: #fbb9db;
99
+ --color-pink300: #ff78cb;
100
+ --color-pink400: #ff52d0;
101
+ --color-pink500: #ff33d3;
102
+ --color-pink600: #e61eb8;
103
+ --color-pink700: #c2128f;
104
+ --color-pink800: #930e6d;
105
+ --color-pink900: #5a0744;
106
+
107
+ /* purple */
108
+ --color-purple50: #f1e3ff;
109
+ --color-purple100: #deb3ff;
110
+ --color-purple200: #c78ef0;
111
+ --color-purple300: #b06be0;
112
+ --color-purple400: #9069c2;
113
+ --color-purple500: #7b40c7;
114
+ --color-purple600: #8520c9;
115
+ --color-purple700: #9210cc;
116
+ --color-purple800: #6a0ea9;
117
+ --color-purple900: #450b90;
118
+
119
+ /* danger */
120
+ --color-danger50: #fef7f7;
121
+ --color-danger100: #fdefef;
122
+ --color-danger200: #fbdede;
123
+ --color-danger300: #f7bdbd;
124
+ --color-danger400: #f29d9d;
125
+ --color-danger500: #ee7c7c;
126
+ --color-danger600: #ea5b5b;
127
+ --color-danger700: #c54646;
128
+ --color-danger800: #9e3838;
129
+ --color-danger900: #6d2626;
130
+
131
+ /* accept */
132
+ --color-accept50: #f0f6ff;
133
+ --color-accept100: #e0eaff;
134
+ --color-accept200: #bdd4ff;
135
+ --color-accept300: #9bbdff;
136
+ --color-accept400: #81abfc;
137
+ --color-accept500: #6c9cf9;
138
+ --color-accept600: #5388ef;
139
+ --color-accept700: #3e73dc;
140
+ --color-accept800: #2a5ec0;
141
+ --color-accept900: #1a4499;
142
+
143
+ /* success */
144
+ --color-success50: #f5fdf8;
145
+ --color-success100: #eafbf1;
146
+ --color-success200: #d5f7e3;
147
+ --color-success300: #a9eec7;
148
+ --color-success400: #82e6ab;
149
+ --color-success500: #58dd8f;
150
+ --color-success600: #2ed573;
151
+ --color-success700: #20b560;
152
+ --color-success800: #158a47;
153
+ --color-success900: #0c5e30;
154
+
155
+ /* warning */
156
+ --color-warning50: #fffcf4;
157
+ --color-warning100: #fff8e9;
158
+ --color-warning200: #fff2d3;
159
+ --color-warning300: #ffe5a6;
160
+ --color-warning400: #ffd87a;
161
+ --color-warning500: #ffcb4d;
162
+ --color-warning600: #ffbe21;
163
+ --color-warning700: #e6a500;
164
+ --color-warning800: #b38000;
165
+ --color-warning900: #805b00;
166
+
167
+ /* loword blue */
168
+ --color-lb50: #e0e9ff;
169
+ --color-lb100: #c3d4ff;
170
+ --color-lb200: #acc3ff;
171
+ --color-lb300: #95b2fa;
172
+ --color-lb400: #7ea1f9;
173
+ --color-lb500: #6891f8;
174
+ --color-lb600: #5883ee;
175
+ --color-lb700: #4a75df;
176
+ --color-lb800: #315cc9;
177
+ --color-lb900: #143ca3;
178
+
179
+ /* tint (배경 전용) */
180
+ --color-tintRed: #fdf4f4;
181
+ --color-tintOrange: #fffaf2;
182
+ --color-tintYellow: #ffefd2;
183
+ --color-tintGreen: #f5fbf8;
184
+ --color-tintBlue: #f0f4ff;
185
+ }
@@ -0,0 +1,41 @@
1
+ @theme {
2
+ /* padding-x: Button */
3
+ --control-padding-x-badge-2xs: var(--spacing_4);
4
+ --control-padding-x-badge-xs: var(--spacing_8);
5
+ --control-padding-x-badge-sm: var(--spacing_12);
6
+ --control-padding-x-badge-md: var(--spacing_16);
7
+ --control-padding-x-badge-lg: var(--spacing_20);
8
+ --control-padding-x-badge-xl: var(--spacing_28);
9
+ }
10
+
11
+ @utility badge-xs {
12
+ height: var(--control-height-2xs);
13
+ padding-inline: var(--control-padding-x-badge-2xs);
14
+ border-radius: var(--control-radius-xs);
15
+ gap: var(--control-gap-2xs);
16
+ @apply display10;
17
+ }
18
+
19
+ @utility badge-sm {
20
+ height: var(--control-height-xs);
21
+ padding-inline: var(--control-padding-x-badge-xs);
22
+ border-radius: var(--control-radius-xs);
23
+ gap: var(--control-gap-xs);
24
+ @apply display12;
25
+ }
26
+
27
+ @utility badge-md {
28
+ height: var(--control-height-sm);
29
+ padding-inline: var(--control-padding-x-badge-sm);
30
+ border-radius: var(--control-radius-sm);
31
+ gap: var(--control-gap-sm);
32
+ @apply display16;
33
+ }
34
+
35
+ @utility badge-lg {
36
+ height: var(--control-height-md);
37
+ padding-inline: var(--control-padding-x-badge-md);
38
+ border-radius: var(--control-radius-md);
39
+ gap: var(--control-gap-md);
40
+ @apply display20;
41
+ }
@@ -0,0 +1,23 @@
1
+ @utility bread-crumb-2xs {
2
+ @apply display10;
3
+ }
4
+
5
+ @utility bread-crumb-xs {
6
+ @apply display12;
7
+ }
8
+
9
+ @utility bread-crumb-sm {
10
+ @apply display14;
11
+ }
12
+
13
+ @utility bread-crumb-md {
14
+ @apply display16;
15
+ }
16
+
17
+ @utility bread-crumb-lg {
18
+ @apply display18;
19
+ }
20
+
21
+ @utility bread-crumb-xl {
22
+ @apply display20;
23
+ }
@@ -0,0 +1,183 @@
1
+ @theme {
2
+ /* padding-x: Button */
3
+ --control-padding-x-button-2xs: var(--spacing_4);
4
+ --control-padding-x-button-xs: var(--spacing_8);
5
+ --control-padding-x-button-sm: var(--spacing_12);
6
+ --control-padding-x-button-md: var(--spacing_16);
7
+ --control-padding-x-button-lg: var(--spacing_20);
8
+ --control-padding-x-button-xl: var(--spacing_28);
9
+
10
+ /* min-width (Button) */
11
+ --control-min-width-2xs: 32px;
12
+ --control-min-width-xs: 48px;
13
+ --control-min-width-sm: 64px;
14
+ --control-min-width-md: 80px;
15
+ --control-min-width-lg: 96px;
16
+ --control-min-width-xl: 128px;
17
+
18
+ /* toggle-gap */
19
+ --toggle-gap: 2px;
20
+ }
21
+
22
+ /**
23
+ * button-root
24
+ */
25
+
26
+ @utility btn-2xs {
27
+ height: var(--control-height-2xs);
28
+ /* min-width: var(--control-min-width-2xs); */
29
+ padding-inline: var(--control-padding-x-button-2xs);
30
+ border-radius: var(--control-radius-2xs);
31
+ gap: var(--control-gap-2xs);
32
+ font-weight: var(--control-font-weight);
33
+ @apply display10;
34
+ }
35
+
36
+ @utility btn-xs {
37
+ height: var(--control-height-xs);
38
+ /* min-width: var(--control-min-width-xs); */
39
+ padding-inline: var(--control-padding-x-button-xs);
40
+ border-radius: var(--control-radius-xs);
41
+ gap: var(--control-gap-xs);
42
+ font-weight: var(--control-font-weight);
43
+ @apply display12;
44
+ }
45
+
46
+ @utility btn-sm {
47
+ height: var(--control-height-sm);
48
+ min-width: var(--control-min-width-sm);
49
+ padding-inline: var(--control-padding-x-button-sm);
50
+ border-radius: var(--control-radius-sm);
51
+ gap: var(--control-gap-sm);
52
+ font-weight: var(--control-font-weight);
53
+ @apply display14;
54
+ }
55
+
56
+ @utility btn-md {
57
+ height: var(--control-height-md);
58
+ min-width: var(--control-min-width-md);
59
+ padding-inline: var(--control-padding-x-button-md);
60
+ border-radius: var(--control-radius-md);
61
+ gap: var(--control-gap-md);
62
+ font-weight: var(--control-font-weight);
63
+ @apply display16;
64
+ }
65
+
66
+ @utility btn-lg {
67
+ height: var(--control-height-lg);
68
+ min-width: var(--control-min-width-lg);
69
+ padding-inline: var(--control-padding-x-button-lg);
70
+ border-radius: var(--control-radius-lg);
71
+ gap: var(--control-gap-lg);
72
+ font-weight: var(--control-font-weight);
73
+ @apply display18;
74
+ }
75
+
76
+ @utility btn-xl {
77
+ height: var(--control-height-xl);
78
+ min-width: var(--control-min-width-xl);
79
+ padding-inline: var(--control-padding-x-button-xl);
80
+ border-radius: var(--control-radius-xl);
81
+ gap: var(--control-gap-xl);
82
+ font-weight: var(--control-font-weight);
83
+ @apply display20;
84
+ }
85
+
86
+ /**
87
+ * toggle-button size
88
+ */
89
+
90
+ /* track */
91
+ @utility toggle-track-xs {
92
+ width: 28px;
93
+ height: 14px;
94
+ }
95
+ @utility toggle-track-sm {
96
+ width: 32px;
97
+ height: 16px;
98
+ }
99
+ @utility toggle-track-md {
100
+ width: 36px;
101
+ height: 18px;
102
+ }
103
+ @utility toggle-track-lg {
104
+ width: 40px;
105
+ height: 20px;
106
+ }
107
+ @utility toggle-track-xl {
108
+ width: 44px;
109
+ height: 22px;
110
+ }
111
+
112
+ /* thumb */
113
+ @utility toggle-thumb-xs {
114
+ width: 10px;
115
+ height: 10px;
116
+ }
117
+ @utility toggle-thumb-sm {
118
+ width: 12px;
119
+ height: 12px;
120
+ }
121
+ @utility toggle-thumb-md {
122
+ width: 14px;
123
+ height: 14px;
124
+ }
125
+ @utility toggle-thumb-lg {
126
+ width: 16px;
127
+ height: 16px;
128
+ }
129
+ @utility toggle-thumb-xl {
130
+ width: 18px;
131
+ height: 18px;
132
+ }
133
+
134
+ /* thumb unchecked */
135
+ @utility toggle-thumb-off-xs {
136
+ left: var(--toggle-gap);
137
+ }
138
+ @utility toggle-thumb-off-sm {
139
+ left: var(--toggle-gap);
140
+ }
141
+ @utility toggle-thumb-off-md {
142
+ left: var(--toggle-gap);
143
+ }
144
+ @utility toggle-thumb-off-lg {
145
+ left: var(--toggle-gap);
146
+ }
147
+ @utility toggle-thumb-off-xl {
148
+ left: var(--toggle-gap);
149
+ }
150
+
151
+ /* thumb checked */
152
+ @utility toggle-thumb-on-xs {
153
+ left: 16px;
154
+ } /* 28 - 10 - 2 */
155
+ @utility toggle-thumb-on-sm {
156
+ left: 18px;
157
+ } /* 32 - 12 - 2 */
158
+ @utility toggle-thumb-on-md {
159
+ left: 20px;
160
+ } /* 36 - 14 - 2 */
161
+ @utility toggle-thumb-on-lg {
162
+ left: 22px;
163
+ } /* 40 - 16 - 2 */
164
+ @utility toggle-thumb-on-xl {
165
+ left: 24px;
166
+ } /* 44 - 18 - 2 */
167
+
168
+ /* root font */
169
+ @utility toggle-xs {
170
+ @apply display12;
171
+ }
172
+ @utility toggle-sm {
173
+ @apply display12;
174
+ }
175
+ @utility toggle-md {
176
+ @apply display14;
177
+ }
178
+ @utility toggle-lg {
179
+ @apply display14;
180
+ }
181
+ @utility toggle-xl {
182
+ @apply display16;
183
+ }
@@ -0,0 +1,147 @@
1
+ @layer utilities {
2
+ prose p {
3
+ margin-top: 0 !important;
4
+ margin-bottom: 0.5rem !important;
5
+ padding: 0 !important;
6
+ }
7
+
8
+ prose h1,
9
+ prose h2,
10
+ prose h3 {
11
+ margin-top: 0 !important;
12
+ margin-bottom: 0.5rem !important;
13
+ padding: 0 !important;
14
+ }
15
+
16
+ prose ul,
17
+ prose ol {
18
+ margin-top: 0 !important;
19
+ margin-bottom: 0.5rem !important;
20
+ padding: 0 20px !important;
21
+ }
22
+
23
+ prose ul li::marker,
24
+ prose ol li::marker {
25
+ color: #000 !important;
26
+ }
27
+ }
28
+
29
+ /* 이미지 정렬 스타일 */
30
+ .ProseMirror img {
31
+ max-width: 100%;
32
+ height: auto;
33
+ display: block;
34
+ margin: 1rem auto;
35
+ }
36
+
37
+ .ProseMirror img[style*='text-align: left'] {
38
+ margin-left: 0;
39
+ margin-right: auto;
40
+ }
41
+
42
+ .ProseMirror img[style*='text-align: center'] {
43
+ margin-left: auto;
44
+ margin-right: auto;
45
+ }
46
+
47
+ .ProseMirror img[style*='text-align: right'] {
48
+ margin-left: auto;
49
+ margin-right: 0;
50
+ }
51
+
52
+ /* 이미지 선택 스타일 */
53
+ .ProseMirror img {
54
+ cursor: pointer;
55
+ border: 2px solid transparent;
56
+ transition: border-color 0.2s;
57
+ }
58
+
59
+ .ProseMirror img:hover {
60
+ border-color: rgba(59, 130, 246, 0.3);
61
+ }
62
+
63
+ /* 이미지 리사이즈 핸들 스타일 */
64
+ .ProseMirror [data-resize-handle] {
65
+ position: absolute;
66
+ background: rgba(0, 0, 0, 0.5);
67
+ border: 1px solid rgba(255, 255, 255, 0.8);
68
+ border-radius: 2px;
69
+ z-index: 10;
70
+ }
71
+
72
+ .ProseMirror [data-resize-handle]:hover {
73
+ background: rgba(0, 0, 0, 0.8);
74
+ }
75
+
76
+ /* 모서리 핸들 */
77
+ .ProseMirror [data-resize-handle='top-left'],
78
+ .ProseMirror [data-resize-handle='top-right'],
79
+ .ProseMirror [data-resize-handle='bottom-left'],
80
+ .ProseMirror [data-resize-handle='bottom-right'] {
81
+ width: 8px;
82
+ height: 8px;
83
+ }
84
+
85
+ .ProseMirror [data-resize-handle='top-left'] {
86
+ top: -4px;
87
+ left: -4px;
88
+ cursor: nwse-resize;
89
+ }
90
+
91
+ .ProseMirror [data-resize-handle='top-right'] {
92
+ top: -4px;
93
+ right: -4px;
94
+ cursor: nesw-resize;
95
+ }
96
+
97
+ .ProseMirror [data-resize-handle='bottom-left'] {
98
+ bottom: -4px;
99
+ left: -4px;
100
+ cursor: nesw-resize;
101
+ }
102
+
103
+ .ProseMirror [data-resize-handle='bottom-right'] {
104
+ bottom: -4px;
105
+ right: -4px;
106
+ cursor: nwse-resize;
107
+ }
108
+
109
+ /* 상하 핸들 */
110
+ .ProseMirror [data-resize-handle='top'],
111
+ .ProseMirror [data-resize-handle='bottom'] {
112
+ height: 6px;
113
+ left: 8px;
114
+ right: 8px;
115
+ }
116
+
117
+ .ProseMirror [data-resize-handle='top'] {
118
+ top: -3px;
119
+ cursor: ns-resize;
120
+ }
121
+
122
+ .ProseMirror [data-resize-handle='bottom'] {
123
+ bottom: -3px;
124
+ cursor: ns-resize;
125
+ }
126
+
127
+ /* 좌우 핸들 */
128
+ .ProseMirror [data-resize-handle='left'],
129
+ .ProseMirror [data-resize-handle='right'] {
130
+ width: 6px;
131
+ top: 8px;
132
+ bottom: 8px;
133
+ }
134
+
135
+ .ProseMirror [data-resize-handle='left'] {
136
+ left: -3px;
137
+ cursor: ew-resize;
138
+ }
139
+
140
+ .ProseMirror [data-resize-handle='right'] {
141
+ right: -3px;
142
+ cursor: ew-resize;
143
+ }
144
+
145
+ .ProseMirror [data-resize-wrapper] img {
146
+ margin: 0 !important;
147
+ }
@@ -0,0 +1,29 @@
1
+ @utility icon-2xs {
2
+ width: var(--control-icon-2xs);
3
+ height: var(--control-icon-2xs);
4
+ }
5
+
6
+ @utility icon-xs {
7
+ width: var(--control-icon-xs);
8
+ height: var(--control-icon-xs);
9
+ }
10
+
11
+ @utility icon-sm {
12
+ width: var(--control-icon-sm);
13
+ height: var(--control-icon-sm);
14
+ }
15
+
16
+ @utility icon-md {
17
+ width: var(--control-icon-md);
18
+ height: var(--control-icon-md);
19
+ }
20
+
21
+ @utility icon-lg {
22
+ width: var(--control-icon-lg);
23
+ height: var(--control-icon-lg);
24
+ }
25
+
26
+ @utility icon-xl {
27
+ width: var(--control-icon-xl);
28
+ height: var(--control-icon-xl);
29
+ }
@@ -0,0 +1,9 @@
1
+ @import './shared.css';
2
+ @import './icon.css';
3
+ @import './spinner.css';
4
+ @import './button.css';
5
+ @import './input.css';
6
+ @import './badge.css';
7
+ @import './modal.css';
8
+ @import './editor.css';
9
+ @import './bread-crumb.css';