@designbasekorea/theme 0.1.0 → 0.1.1

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.
@@ -1,629 +0,0 @@
1
- /**
2
- * 기본 시맨틱 HTML 태그 테마별 스타일
3
- *
4
- * 목적: 기본 HTML 요소들에 대한 테마별 일관된 스타일 제공
5
- * 기능: 라이트/다크/브랜드 테마에 따른 자동 색상 적용
6
- * 사용법: 자동으로 적용되며, data-theme 속성에 따라 색상 변경
7
- */
8
-
9
- // ============================================================================
10
- // 기본 시맨틱 태그 스타일
11
- // ============================================================================
12
-
13
- // 제목 태그들 (h1 ~ h6)
14
- h1,
15
- h2,
16
- h3,
17
- h4,
18
- h5,
19
- h6 {
20
- margin: 0;
21
- padding: 0;
22
- font-weight: 600;
23
- line-height: 1.2;
24
- color: var(--db-text-primary);
25
- transition: color 0.3s ease;
26
- }
27
-
28
- h1 {
29
- font-size: 2.5rem;
30
- font-weight: 700;
31
- margin-bottom: var(--db-margin-l);
32
- }
33
-
34
- h2 {
35
- font-size: 2rem;
36
- font-weight: 600;
37
- margin-bottom: var(--db-margin-m);
38
- }
39
-
40
- h3 {
41
- font-size: 1.75rem;
42
- font-weight: 600;
43
- margin-bottom: var(--db-margin-m);
44
- }
45
-
46
- h4 {
47
- font-size: 1.5rem;
48
- font-weight: 600;
49
- margin-bottom: var(--db-margin-s);
50
- }
51
-
52
- h5 {
53
- font-size: 1.25rem;
54
- font-weight: 600;
55
- margin-bottom: var(--db-margin-s);
56
- }
57
-
58
- h6 {
59
- font-size: 1rem;
60
- font-weight: 600;
61
- margin-bottom: var(--db-margin-xs);
62
- }
63
-
64
- // 단락 태그
65
- p {
66
- margin: 0 0 var(--db-margin-m) 0;
67
- line-height: 1.6;
68
- color: var(--db-text-primary);
69
- transition: color 0.3s ease;
70
- }
71
-
72
- // 링크 태그
73
- a {
74
- color: var(--db-text-link);
75
- text-decoration: none;
76
- transition: all 0.3s ease;
77
- cursor: pointer;
78
-
79
- &:hover {
80
- color: var(--db-text-link-hover);
81
- text-decoration: underline;
82
- }
83
-
84
- &:active {
85
- color: var(--db-text-link);
86
- }
87
-
88
- &:focus {
89
- outline: 2px solid var(--db-border-focus);
90
- outline-offset: 2px;
91
- }
92
- }
93
-
94
- // 강조 태그
95
- strong,
96
- b {
97
- font-weight: 600;
98
- color: var(--db-text-primary);
99
- }
100
-
101
- em,
102
- i {
103
- font-style: italic;
104
- color: var(--db-text-primary);
105
- }
106
-
107
- // 인용 태그
108
- blockquote {
109
- margin: var(--db-margin-m) 0;
110
- padding: var(--db-padding-m) var(--db-padding-l);
111
- border-left: 4px solid var(--db-border-primary);
112
- background-color: var(--db-bg-secondary);
113
- color: var(--db-text-secondary);
114
- font-style: italic;
115
- border-radius: 0 8px 8px 0;
116
- }
117
-
118
- // 코드 태그
119
- code {
120
- background-color: var(--db-bg-tertiary);
121
- color: var(--db-text-primary);
122
- padding: 0.125rem 0.25rem;
123
- border-radius: 4px;
124
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
125
- font-size: 0.875em;
126
- border: 1px solid var(--db-border-muted);
127
- }
128
-
129
- pre {
130
- background-color: var(--db-bg-tertiary);
131
- color: var(--db-text-primary);
132
- padding: var(--db-padding-m);
133
- border-radius: 8px;
134
- overflow-x: auto;
135
- border: 1px solid var(--db-border-muted);
136
- margin: var(--db-margin-m) 0;
137
-
138
- code {
139
- background: none;
140
- border: none;
141
- padding: 0;
142
- color: inherit;
143
- }
144
- }
145
-
146
- // 목록 태그
147
- ul,
148
- ol {
149
- margin: 0 0 var(--db-margin-m) 0;
150
- padding-left: var(--db-padding-l);
151
- color: var(--db-text-primary);
152
- }
153
-
154
- li {
155
- margin-bottom: var(--db-margin-s);
156
- line-height: 1.6;
157
- color: var(--db-text-primary);
158
- }
159
-
160
- // 정의 목록
161
- dl {
162
- margin: 0 0 var(--db-margin-m) 0;
163
- }
164
-
165
- dt {
166
- font-weight: 600;
167
- color: var(--db-text-primary);
168
- margin-bottom: var(--db-margin-xs);
169
- }
170
-
171
- dd {
172
- margin: 0 0 var(--db-margin-s) var(--db-padding-l);
173
- color: var(--db-text-secondary);
174
- }
175
-
176
- // 구분선
177
- hr {
178
- border: none;
179
- height: 1px;
180
- background-color: var(--db-border-muted);
181
- margin: var(--db-margin-xl) 0;
182
- }
183
-
184
- // 테이블 태그
185
- table {
186
- width: 100%;
187
- border-collapse: collapse;
188
- margin: var(--db-margin-m) 0;
189
- color: var(--db-text-primary);
190
- }
191
-
192
- th,
193
- td {
194
- padding: var(--db-padding-s);
195
- text-align: left;
196
- border-bottom: 1px solid var(--db-border-muted);
197
- }
198
-
199
- th {
200
- background-color: var(--db-bg-secondary);
201
- font-weight: 600;
202
- color: var(--db-text-primary);
203
- }
204
-
205
- tr:hover {
206
- background-color: var(--db-bg-secondary);
207
- }
208
-
209
- // 폼 요소들
210
- input,
211
- textarea,
212
- select {
213
- font-family: inherit;
214
- font-size: inherit;
215
- color: var(--db-text-primary);
216
- background-color: var(--db-bg-primary);
217
- border: 1px solid var(--db-border-primary);
218
- border-radius: 6px;
219
- padding: var(--db-padding-s) var(--db-padding-s);
220
- transition: all 0.3s ease;
221
-
222
- &:focus {
223
- outline: none;
224
- border-color: var(--db-border-focus);
225
- box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.1);
226
- }
227
-
228
- &:disabled {
229
- background-color: var(--db-bg-tertiary);
230
- color: var(--db-text-disabled);
231
- cursor: not-allowed;
232
- }
233
-
234
- &::placeholder {
235
- color: var(--db-text-muted);
236
- }
237
- }
238
-
239
- // 버튼 태그
240
- button {
241
- font-family: inherit;
242
- font-size: inherit;
243
- color: var(--db-text-primary);
244
- background-color: var(--db-bg-primary);
245
- border: 1px solid var(--db-border-primary);
246
- border-radius: 6px;
247
- padding: var(--db-padding-s) var(--db-padding-m);
248
- cursor: pointer;
249
- transition: all 0.3s ease;
250
-
251
- &:hover {
252
- background-color: var(--db-bg-secondary);
253
- border-color: var(--db-border-focus);
254
- }
255
-
256
- &:active {
257
- transform: translateY(1px);
258
- }
259
-
260
- &:focus {
261
- outline: none;
262
- border-color: var(--db-border-focus);
263
- box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.1);
264
- }
265
-
266
- &:disabled {
267
- background-color: var(--db-bg-tertiary);
268
- color: var(--db-text-disabled);
269
- cursor: not-allowed;
270
- }
271
- }
272
-
273
- // 라벨 태그
274
- label {
275
- display: inline-block;
276
- margin-bottom: var(--db-margin-s);
277
- font-weight: 500;
278
- color: var(--db-text-primary);
279
- }
280
-
281
- // 필드셋과 레전드
282
- fieldset {
283
- border: 1px solid var(--db-border-muted);
284
- border-radius: 8px;
285
- padding: var(--db-padding-m);
286
- margin: var(--db-margin-m) 0;
287
- }
288
-
289
- legend {
290
- padding: 0 var(--db-padding-s);
291
- font-weight: 600;
292
- color: var(--color-text-primary);
293
- }
294
-
295
- // 체크박스와 라디오 버튼
296
- input[type="checkbox"],
297
- input[type="radio"] {
298
- margin-right: var(--db-margin-s);
299
- width: auto;
300
- height: auto;
301
- }
302
-
303
- // 범위 슬라이더
304
- input[type="range"] {
305
- background: transparent;
306
- border: none;
307
- padding: 0;
308
- height: 6px;
309
- border-radius: 3px;
310
- background: var(--color-border-muted);
311
-
312
- &::-webkit-slider-thumb {
313
- appearance: none;
314
- width: 18px;
315
- height: 18px;
316
- border-radius: 50%;
317
- background: var(--color-action-primary-bg);
318
- cursor: pointer;
319
- border: 2px solid var(--color-bg-primary);
320
- }
321
-
322
- &::-moz-range-thumb {
323
- width: 18px;
324
- height: 18px;
325
- border-radius: 50%;
326
- background: var(--color-action-primary-bg);
327
- cursor: pointer;
328
- border: 2px solid var(--color-bg-primary);
329
- }
330
- }
331
-
332
- // 진행바
333
- progress {
334
- width: 100%;
335
- height: 8px;
336
- border-radius: 4px;
337
- background-color: var(--color-bg-tertiary);
338
- border: none;
339
-
340
- &::-webkit-progress-bar {
341
- background-color: var(--color-bg-tertiary);
342
- border-radius: 4px;
343
- }
344
-
345
- &::-webkit-progress-value {
346
- background-color: var(--color-action-primary-bg);
347
- border-radius: 4px;
348
- }
349
-
350
- &::-moz-progress-bar {
351
- background-color: var(--color-action-primary-bg);
352
- border-radius: 4px;
353
- }
354
- }
355
-
356
- // 미터
357
- meter {
358
- width: 100%;
359
- height: 8px;
360
- border-radius: 4px;
361
- background-color: var(--color-bg-tertiary);
362
- border: none;
363
-
364
- &::-webkit-meter-bar {
365
- background-color: var(--color-bg-tertiary);
366
- border-radius: 4px;
367
- }
368
-
369
- &::-webkit-meter-optimum-value {
370
- background-color: var(--color-green-500);
371
- border-radius: 4px;
372
- }
373
-
374
- &::-webkit-meter-suboptimum-value {
375
- background-color: var(--color-yellow-500);
376
- border-radius: 4px;
377
- }
378
-
379
- &::-webkit-meter-even-less-good-value {
380
- background-color: var(--color-red-500);
381
- border-radius: 4px;
382
- }
383
- }
384
-
385
- // 상세 정보
386
- details {
387
- margin: var(--db-margin-m) 0;
388
- border: 1px solid var(--color-border-muted);
389
- border-radius: 8px;
390
- overflow: hidden;
391
- }
392
-
393
- summary {
394
- padding: var(--db-padding-m);
395
- background-color: var(--db-bg-secondary);
396
- color: var(--db-text-primary);
397
- font-weight: 600;
398
- cursor: pointer;
399
- transition: background-color 0.3s ease;
400
-
401
- &:hover {
402
- background-color: var(--db-bg-tertiary);
403
- }
404
-
405
- &::-webkit-details-marker {
406
- color: var(--db-text-muted);
407
- }
408
- }
409
-
410
- details[open] summary {
411
- border-bottom: 1px solid var(--db-border-muted);
412
- }
413
-
414
- details>div {
415
- padding: var(--db-padding-m);
416
- color: var(--db-text-primary);
417
- }
418
-
419
- // 마크 태그
420
- mark {
421
- background-color: var(--db-yellow-200);
422
- color: var(--db-yellow-900);
423
- padding: var(--db-padding-xxs) var(--db-padding-xs);
424
- border-radius: 3px;
425
- }
426
-
427
- // 삭제된 텍스트
428
- del,
429
- s {
430
- color: var(--db-text-muted);
431
- text-decoration: line-through;
432
- }
433
-
434
- // 삽입된 텍스트
435
- ins,
436
- u {
437
- color: var(--db-text-primary);
438
- text-decoration: underline;
439
- }
440
-
441
- // 작은 텍스트
442
- small {
443
- font-size: 0.875em;
444
- color: var(--db-text-muted);
445
- }
446
-
447
- // 큰 텍스트
448
- big {
449
- font-size: 1.125em;
450
- color: var(--db-text-primary);
451
- }
452
-
453
- // 인용
454
- cite {
455
- font-style: italic;
456
- color: var(--db-text-secondary);
457
- }
458
-
459
- // 시간
460
- time {
461
- color: var(--color-text-muted);
462
- font-size: 0.875em;
463
- }
464
-
465
- // 주소
466
- address {
467
- font-style: normal;
468
- color: var(--color-text-secondary);
469
- margin: var(--db-margin-m) 0;
470
- }
471
-
472
- // 아티클과 섹션
473
- article,
474
- section {
475
- margin: var(--db-margin-xl) 0;
476
- }
477
-
478
- // 헤더와 푸터
479
- header,
480
- footer {
481
- padding: var(--db-padding-m) 0;
482
- color: var(--db-text-primary);
483
- }
484
-
485
- // 네비게이션
486
- nav {
487
- ul {
488
- list-style: none;
489
- padding: 0;
490
- margin: 0;
491
- display: flex;
492
- gap: var(--db-gap-m);
493
- }
494
-
495
- a {
496
- color: var(--db-text-primary);
497
- text-decoration: none;
498
- padding: var(--db-padding-s);
499
- border-radius: 4px;
500
- transition: all 0.3s ease;
501
-
502
- &:hover {
503
- background-color: var(--db-bg-secondary);
504
- color: var(--db-text-primary);
505
- }
506
-
507
- &.active {
508
- background-color: var(--db-color-primary);
509
- color: var(--db-text-inverse);
510
- }
511
- }
512
- }
513
-
514
- // 메인 콘텐츠
515
- main {
516
- min-height: 100vh;
517
- color: var(--db-text-primary);
518
- }
519
-
520
- // 사이드바
521
- aside {
522
- background-color: var(--db-bg-secondary);
523
- padding: var(--db-padding-m);
524
- border-radius: 8px;
525
- color: var(--db-text-primary);
526
- }
527
-
528
- // 그림
529
- figure {
530
- margin: var(--db-margin-xl) 0;
531
- text-align: center;
532
- }
533
-
534
- figcaption {
535
- margin-top: var(--db-margin-s);
536
- color: var(--db-text-secondary);
537
- font-size: 0.875em;
538
- }
539
-
540
- // 비디오와 오디오
541
- video,
542
- audio {
543
- max-width: 100%;
544
- border-radius: 8px;
545
- }
546
-
547
- // 캔버스
548
- canvas {
549
- border: 1px solid var(--db-border-muted);
550
- border-radius: 8px;
551
- }
552
-
553
- // 선택된 텍스트
554
- ::selection {
555
- background-color: var(--db-color-primary);
556
- color: var(--db-text-inverse);
557
- }
558
-
559
- ::-moz-selection {
560
- background-color: var(--db-color-primary);
561
- color: var(--db-text-inverse);
562
- }
563
-
564
- // 포커스 표시
565
- :focus-visible {
566
- outline: 2px solid var(--db-border-focus);
567
- outline-offset: 2px;
568
- }
569
-
570
- // 스크롤바 스타일링
571
- ::-webkit-scrollbar {
572
- width: 8px;
573
- height: 8px;
574
- }
575
-
576
- ::-webkit-scrollbar-track {
577
- background: var(--db-bg-tertiary);
578
- border-radius: 4px;
579
- }
580
-
581
- ::-webkit-scrollbar-thumb {
582
- background: var(--db-border-muted);
583
- border-radius: 4px;
584
-
585
- &:hover {
586
- background: var(--db-border-primary);
587
- }
588
- }
589
-
590
- // 다크 모드 지원
591
- [data-theme="dark"] {
592
-
593
- // 다크 모드에서 추가적인 스타일 조정
594
- code,
595
- pre {
596
- background-color: var(--db-bg-tertiary);
597
- border-color: var(--db-border-primary);
598
- }
599
-
600
- blockquote {
601
- background-color: var(--db-bg-tertiary);
602
- border-left-color: var(--db-border-primary);
603
- }
604
-
605
- input,
606
- textarea,
607
- select {
608
- background-color: var(--db-bg-primary);
609
- border-color: var(--db-border-primary);
610
- }
611
- }
612
-
613
- // 브랜드 테마 지원
614
- [data-theme="brand"] {
615
-
616
- // 브랜드 테마에서 추가적인 스타일 조정
617
- h1,
618
- h2,
619
- h3,
620
- h4,
621
- h5,
622
- h6 {
623
- color: var(--db-text-primary);
624
- }
625
-
626
- a {
627
- color: var(--db-text-link);
628
- }
629
- }