@iyulab/components 1.13.0 → 1.14.0

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 (44) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/components/UElement.styles.js +8 -8
  3. package/dist/components/UOverlayElement.styles.js +1 -1
  4. package/dist/components/alert/UAlert.styles.js +21 -21
  5. package/dist/components/avatar/UAvatar.styles.js +5 -5
  6. package/dist/components/badge/UBadge.styles.js +22 -22
  7. package/dist/components/breadcrumb/UBreadcrumb.styles.js +2 -2
  8. package/dist/components/breadcrumb-item/UBreadcrumbItem.styles.js +2 -2
  9. package/dist/components/button/UButton.styles.js +28 -28
  10. package/dist/components/card/UCard.styles.js +5 -5
  11. package/dist/components/carousel/UCarousel.styles.js +8 -8
  12. package/dist/components/checkbox/UCheckbox.styles.js +20 -20
  13. package/dist/components/copy-button/UCopyButton.styles.js +2 -2
  14. package/dist/components/dialog/UDialog.styles.js +4 -4
  15. package/dist/components/divider/UDivider.styles.js +2 -2
  16. package/dist/components/drawer/UDrawer.styles.js +3 -3
  17. package/dist/components/field/UField.styles.js +4 -4
  18. package/dist/components/icon-button/UIconButton.styles.js +2 -2
  19. package/dist/components/input/UInput.styles.js +30 -30
  20. package/dist/components/menu/UMenu.styles.js +4 -4
  21. package/dist/components/menu-item/UMenuItem.styles.js +7 -7
  22. package/dist/components/option/UOption.styles.js +9 -9
  23. package/dist/components/progress-bar/UProgressBar.styles.js +12 -12
  24. package/dist/components/progress-ring/UProgressRing.styles.js +11 -11
  25. package/dist/components/radio/URadio.styles.js +6 -6
  26. package/dist/components/rating/URating.styles.js +3 -3
  27. package/dist/components/select/USelect.styles.js +34 -34
  28. package/dist/components/skeleton/USkeleton.d.ts +2 -2
  29. package/dist/components/skeleton/USkeleton.styles.js +5 -5
  30. package/dist/components/slider/USlider.styles.js +10 -10
  31. package/dist/components/spinner/USpinner.styles.js +11 -11
  32. package/dist/components/split-panel/USplitPanel.styles.js +3 -3
  33. package/dist/components/switch/USwitch.styles.js +10 -10
  34. package/dist/components/tab/UTab.styles.js +3 -3
  35. package/dist/components/tab-panel/UTabPanel.styles.js +22 -22
  36. package/dist/components/tag/UTag.styles.js +55 -55
  37. package/dist/components/textarea/UTextarea.styles.js +25 -25
  38. package/dist/components/tooltip/UTooltip.styles.js +3 -3
  39. package/dist/components/tree/UTree.d.ts +1 -1
  40. package/dist/components/tree/UTree.styles.js +6 -3
  41. package/dist/components/tree-item/UTreeItem.styles.js +7 -7
  42. package/dist/utilities/Theme.d.ts +16 -1
  43. package/dist/utilities/Theme.js +22 -1
  44. package/package.json +1 -1
@@ -2,9 +2,9 @@ import { css } from "lit";
2
2
  //#region src/components/tag/UTag.styles.ts
3
3
  var styles = css`
4
4
  :host {
5
- --tag-fill-color: var(--u-primary-color);
6
- --tag-color: var(--u-neutral-800);
7
- --tag-bg-color: var(--u-neutral-100);
5
+ --tag-fill-color: var(--u-primary-color, #1E88E5);
6
+ --tag-color: var(--u-neutral-800, #424242);
7
+ --tag-bg-color: var(--u-neutral-100, #F5F5F5);
8
8
  --tag-border-color: transparent;
9
9
  }
10
10
 
@@ -16,73 +16,73 @@ var styles = css`
16
16
  슬롯이 비면(color="neutral") variant 규칙의 폴백 = 브랜드 경로를 탄다.
17
17
  ========================================================================== */
18
18
  :host([color="blue"]) {
19
- --tag-hue-solid: var(--u-blue-500);
20
- --tag-hue-line: var(--u-blue-300);
21
- --tag-hue-surface: var(--u-blue-100);
22
- --tag-hue-text: var(--u-blue-800);
23
- --tag-hue-text-outlined: var(--u-blue-600);
19
+ --tag-hue-solid: var(--u-blue-500, #2196F3);
20
+ --tag-hue-line: var(--u-blue-300, #64B5F6);
21
+ --tag-hue-surface: var(--u-blue-100, #BBDEFB);
22
+ --tag-hue-text: var(--u-blue-800, #1565C0);
23
+ --tag-hue-text-outlined: var(--u-blue-600, #1E88E5);
24
24
  }
25
25
  :host([color="green"]) {
26
- --tag-hue-solid: var(--u-green-500);
27
- --tag-hue-line: var(--u-green-300);
28
- --tag-hue-surface: var(--u-green-100);
29
- --tag-hue-text: var(--u-green-800);
30
- --tag-hue-text-outlined: var(--u-green-600);
26
+ --tag-hue-solid: var(--u-green-500, #4CAF50);
27
+ --tag-hue-line: var(--u-green-300, #81C784);
28
+ --tag-hue-surface: var(--u-green-100, #C8E6C9);
29
+ --tag-hue-text: var(--u-green-800, #2E7D32);
30
+ --tag-hue-text-outlined: var(--u-green-600, #43A047);
31
31
  }
32
32
  /* yellow 는 명도가 높아 solid·outlined 텍스트를 한 단 진하게 쓴다 */
33
33
  :host([color="yellow"]) {
34
- --tag-hue-solid: var(--u-yellow-600);
35
- --tag-hue-line: var(--u-yellow-300);
36
- --tag-hue-surface: var(--u-yellow-100);
37
- --tag-hue-text: var(--u-yellow-800);
38
- --tag-hue-text-outlined: var(--u-yellow-700);
34
+ --tag-hue-solid: var(--u-yellow-600, #FDD835);
35
+ --tag-hue-line: var(--u-yellow-300, #FFF176);
36
+ --tag-hue-surface: var(--u-yellow-100, #FFF9C4);
37
+ --tag-hue-text: var(--u-yellow-800, #F9A825);
38
+ --tag-hue-text-outlined: var(--u-yellow-700, #FBC02D);
39
39
  }
40
40
  :host([color="red"]) {
41
- --tag-hue-solid: var(--u-red-500);
42
- --tag-hue-line: var(--u-red-300);
43
- --tag-hue-surface: var(--u-red-100);
44
- --tag-hue-text: var(--u-red-800);
45
- --tag-hue-text-outlined: var(--u-red-600);
41
+ --tag-hue-solid: var(--u-red-500, #F44336);
42
+ --tag-hue-line: var(--u-red-300, #E57373);
43
+ --tag-hue-surface: var(--u-red-100, #FFCDD2);
44
+ --tag-hue-text: var(--u-red-800, #C62828);
45
+ --tag-hue-text-outlined: var(--u-red-600, #E53935);
46
46
  }
47
47
  :host([color="orange"]) {
48
- --tag-hue-solid: var(--u-orange-500);
49
- --tag-hue-line: var(--u-orange-300);
50
- --tag-hue-surface: var(--u-orange-100);
51
- --tag-hue-text: var(--u-orange-800);
52
- --tag-hue-text-outlined: var(--u-orange-600);
48
+ --tag-hue-solid: var(--u-orange-500, #FF9800);
49
+ --tag-hue-line: var(--u-orange-300, #FFB74D);
50
+ --tag-hue-surface: var(--u-orange-100, #FFE0B2);
51
+ --tag-hue-text: var(--u-orange-800, #EF6C00);
52
+ --tag-hue-text-outlined: var(--u-orange-600, #FB8C00);
53
53
  }
54
54
  :host([color="teal"]) {
55
- --tag-hue-solid: var(--u-teal-500);
56
- --tag-hue-line: var(--u-teal-300);
57
- --tag-hue-surface: var(--u-teal-100);
58
- --tag-hue-text: var(--u-teal-800);
59
- --tag-hue-text-outlined: var(--u-teal-600);
55
+ --tag-hue-solid: var(--u-teal-500, #009688);
56
+ --tag-hue-line: var(--u-teal-300, #4DB6AC);
57
+ --tag-hue-surface: var(--u-teal-100, #B2DFDB);
58
+ --tag-hue-text: var(--u-teal-800, #00695C);
59
+ --tag-hue-text-outlined: var(--u-teal-600, #00897B);
60
60
  }
61
61
  :host([color="cyan"]) {
62
- --tag-hue-solid: var(--u-cyan-500);
63
- --tag-hue-line: var(--u-cyan-300);
64
- --tag-hue-surface: var(--u-cyan-100);
65
- --tag-hue-text: var(--u-cyan-800);
66
- --tag-hue-text-outlined: var(--u-cyan-600);
62
+ --tag-hue-solid: var(--u-cyan-500, #00BCD4);
63
+ --tag-hue-line: var(--u-cyan-300, #4DD0E1);
64
+ --tag-hue-surface: var(--u-cyan-100, #B2EBF2);
65
+ --tag-hue-text: var(--u-cyan-800, #00838F);
66
+ --tag-hue-text-outlined: var(--u-cyan-600, #00ACC1);
67
67
  }
68
68
  :host([color="purple"]) {
69
- --tag-hue-solid: var(--u-purple-500);
70
- --tag-hue-line: var(--u-purple-300);
71
- --tag-hue-surface: var(--u-purple-100);
72
- --tag-hue-text: var(--u-purple-800);
73
- --tag-hue-text-outlined: var(--u-purple-600);
69
+ --tag-hue-solid: var(--u-purple-500, #9C27B0);
70
+ --tag-hue-line: var(--u-purple-300, #BA68C8);
71
+ --tag-hue-surface: var(--u-purple-100, #E1BEE7);
72
+ --tag-hue-text: var(--u-purple-800, #6A1B9A);
73
+ --tag-hue-text-outlined: var(--u-purple-600, #8E24AA);
74
74
  }
75
75
  :host([color="pink"]) {
76
- --tag-hue-solid: var(--u-pink-500);
77
- --tag-hue-line: var(--u-pink-300);
78
- --tag-hue-surface: var(--u-pink-100);
79
- --tag-hue-text: var(--u-pink-800);
80
- --tag-hue-text-outlined: var(--u-pink-600);
76
+ --tag-hue-solid: var(--u-pink-500, #E91E63);
77
+ --tag-hue-line: var(--u-pink-300, #F06292);
78
+ --tag-hue-surface: var(--u-pink-100, #F8BBD0);
79
+ --tag-hue-text: var(--u-pink-800, #AD1457);
80
+ --tag-hue-text-outlined: var(--u-pink-600, #D81B60);
81
81
  }
82
82
 
83
83
  /* Variant: solid (강한 채움, 색 미지정 시 --tag-fill-color = 브랜드) */
84
84
  :host([variant="solid"]) {
85
- --tag-color: var(--u-neutral-0);
85
+ --tag-color: var(--u-neutral-0, #FFFFFF);
86
86
  --tag-bg-color: var(--tag-hue-solid, var(--tag-fill-color));
87
87
  --tag-border-color: var(--tag-hue-solid, var(--tag-fill-color));
88
88
  }
@@ -90,14 +90,14 @@ var styles = css`
90
90
  /* Variant: surface (채우기 + 테두리, 기본 색상은 --u-primary-color) */
91
91
  :host([variant="surface"]) {
92
92
  --tag-color: var(--tag-hue-text, color-mix(in srgb, var(--tag-fill-color) 70%, black));
93
- --tag-bg-color: var(--tag-hue-surface, color-mix(in srgb, var(--tag-fill-color) 15%, var(--u-bg-color)));
94
- --tag-border-color: var(--tag-hue-line, color-mix(in srgb, var(--tag-fill-color) 40%, var(--u-bg-color)));
93
+ --tag-bg-color: var(--tag-hue-surface, color-mix(in srgb, var(--tag-fill-color) 15%, var(--u-bg-color, #FFFFFF)));
94
+ --tag-border-color: var(--tag-hue-line, color-mix(in srgb, var(--tag-fill-color) 40%, var(--u-bg-color, #FFFFFF)));
95
95
  }
96
96
 
97
97
  /* Variant: filled (채우기만, 테두리 없음, 기본 색상은 --u-primary-color) */
98
98
  :host([variant="filled"]) {
99
99
  --tag-color: var(--tag-hue-text, color-mix(in srgb, var(--tag-fill-color) 70%, black));
100
- --tag-bg-color: var(--tag-hue-surface, color-mix(in srgb, var(--tag-fill-color) 15%, var(--u-bg-color)));
100
+ --tag-bg-color: var(--tag-hue-surface, color-mix(in srgb, var(--tag-fill-color) 15%, var(--u-bg-color, #FFFFFF)));
101
101
  --tag-border-color: transparent;
102
102
  }
103
103
 
@@ -105,14 +105,14 @@ var styles = css`
105
105
  :host([variant="outlined"]) {
106
106
  --tag-color: var(--tag-hue-text-outlined, color-mix(in srgb, var(--tag-fill-color) 85%, black));
107
107
  --tag-bg-color: transparent;
108
- --tag-border-color: var(--tag-hue-line, color-mix(in srgb, var(--tag-fill-color) 40%, var(--u-bg-color)));
108
+ --tag-border-color: var(--tag-hue-line, color-mix(in srgb, var(--tag-fill-color) 40%, var(--u-bg-color, #FFFFFF)));
109
109
  }
110
110
 
111
111
  :host {
112
112
  display: inline-flex;
113
113
  font-size: 12px;
114
114
  font-weight: 500;
115
- border-radius: var(--u-radius-md);
115
+ border-radius: var(--u-radius-md, 4px);
116
116
 
117
117
  --tag-padding-block: 0.25em;
118
118
  --tag-padding-inline: 0.5em;
@@ -137,7 +137,7 @@ var styles = css`
137
137
  border-radius: inherit;
138
138
  }
139
139
  :host([rounded]) {
140
- border-radius: var(--u-radius-pill);
140
+ border-radius: var(--u-radius-pill, 9999px);
141
141
  }
142
142
 
143
143
  /*
@@ -3,7 +3,7 @@ import { css } from "lit";
3
3
  var styles = css`
4
4
  :host {
5
5
  display: inline-block;
6
- color: var(--u-txt-color);
6
+ color: var(--u-txt-color, #212121);
7
7
  font-size: inherit;
8
8
  font-family: var(--u-font-base);
9
9
  }
@@ -12,84 +12,84 @@ var styles = css`
12
12
  .container {
13
13
  display: flex;
14
14
  padding: 0.3em 0.6em;
15
- border: 1px solid var(--u-input-border-color);
15
+ border: 1px solid var(--u-input-border-color, #E0E0E0);
16
16
  border-radius: 0.25em;
17
- background-color: var(--u-input-bg-color);
17
+ background-color: var(--u-input-bg-color, #FFFFFF);
18
18
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
19
19
  }
20
20
  :host([readonly]) .container,
21
21
  :host([disabled]) .container {
22
- border-color: var(--u-border-color-weak);
23
- background-color: var(--u-bg-color-disabled);
22
+ border-color: var(--u-border-color-weak, #EEEEEE);
23
+ background-color: var(--u-bg-color-disabled, #FAFAFA);
24
24
  }
25
25
  :host(:not([readonly]):not([disabled])) .container:hover {
26
- box-shadow: 0 0 0 1px var(--u-input-border-color-hover);
26
+ box-shadow: 0 0 0 1px var(--u-input-border-color-hover, #BDBDBD);
27
27
  }
28
28
  :host(:not([readonly]):not([disabled])) .container:focus-within {
29
- box-shadow: 0 0 0 1px var(--u-input-border-color-focus);
29
+ box-shadow: 0 0 0 1px var(--u-input-border-color-focus, #1E88E5);
30
30
  }
31
31
  :host([invalid]:not([readonly]):not([disabled])) .container {
32
- box-shadow: 0 0 0 1px var(--u-input-border-color-invalid);
32
+ box-shadow: 0 0 0 1px var(--u-input-border-color-invalid, #E53935);
33
33
  }
34
34
 
35
35
  /* ===== Variant: filled ===== */
36
36
  :host([variant="filled"]) .container {
37
37
  border-color: transparent;
38
- background-color: var(--u-neutral-200);
38
+ background-color: var(--u-neutral-200, #EEEEEE);
39
39
  border-radius: 0.25em 0.25em 0 0;
40
- border-bottom: 2px solid var(--u-input-border-color);
40
+ border-bottom: 2px solid var(--u-input-border-color, #E0E0E0);
41
41
  }
42
42
  :host([variant="filled"][readonly]) .container,
43
43
  :host([variant="filled"][disabled]) .container {
44
- background-color: var(--u-bg-color-disabled);
45
- border-bottom-color: var(--u-border-color-weak);
44
+ background-color: var(--u-bg-color-disabled, #FAFAFA);
45
+ border-bottom-color: var(--u-border-color-weak, #EEEEEE);
46
46
  }
47
47
  :host([variant="filled"]:not([readonly]):not([disabled])) .container:hover {
48
48
  box-shadow: none;
49
- background-color: var(--u-neutral-300);
50
- border-bottom-color: var(--u-input-border-color-hover);
49
+ background-color: var(--u-neutral-300, #E0E0E0);
50
+ border-bottom-color: var(--u-input-border-color-hover, #BDBDBD);
51
51
  }
52
52
  :host([variant="filled"]:not([readonly]):not([disabled])) .container:focus-within {
53
53
  box-shadow: none;
54
- border-bottom-color: var(--u-input-border-color-focus);
54
+ border-bottom-color: var(--u-input-border-color-focus, #1E88E5);
55
55
  }
56
56
  :host([variant="filled"][invalid]:not([readonly]):not([disabled])) .container {
57
57
  box-shadow: none;
58
- border-bottom-color: var(--u-input-border-color-invalid);
58
+ border-bottom-color: var(--u-input-border-color-invalid, #E53935);
59
59
  }
60
60
 
61
61
  /* ===== Variant: underlined ===== */
62
62
  :host([variant="underlined"]) .container {
63
63
  border: none;
64
- border-radius: var(--u-radius-none);
64
+ border-radius: var(--u-radius-none, 0);
65
65
  background-color: transparent;
66
66
  padding-left: 0;
67
67
  padding-right: 0;
68
- border-bottom: 1px solid var(--u-input-border-color);
68
+ border-bottom: 1px solid var(--u-input-border-color, #E0E0E0);
69
69
  }
70
70
  :host([variant="underlined"][readonly]) .container,
71
71
  :host([variant="underlined"][disabled]) .container {
72
72
  background-color: transparent;
73
- border-bottom-color: var(--u-border-color-weak);
73
+ border-bottom-color: var(--u-border-color-weak, #EEEEEE);
74
74
  }
75
75
  :host([variant="underlined"]:not([readonly]):not([disabled])) .container:hover {
76
76
  box-shadow: none;
77
- border-bottom-color: var(--u-input-border-color-hover);
77
+ border-bottom-color: var(--u-input-border-color-hover, #BDBDBD);
78
78
  }
79
79
  :host([variant="underlined"]:not([readonly]):not([disabled])) .container:focus-within {
80
80
  box-shadow: none;
81
- border-bottom-color: var(--u-input-border-color-focus);
81
+ border-bottom-color: var(--u-input-border-color-focus, #1E88E5);
82
82
  border-bottom-width: 2px;
83
83
  }
84
84
  :host([variant="underlined"][invalid]:not([readonly]):not([disabled])) .container {
85
85
  box-shadow: none;
86
- border-bottom-color: var(--u-input-border-color-invalid);
86
+ border-bottom-color: var(--u-input-border-color-invalid, #E53935);
87
87
  }
88
88
 
89
89
  /* ===== Variant: borderless ===== */
90
90
  :host([variant="borderless"]) .container {
91
91
  border: none;
92
- border-radius: var(--u-radius-none);
92
+ border-radius: var(--u-radius-none, 0);
93
93
  background-color: transparent;
94
94
  padding: 0;
95
95
  box-shadow: none;
@@ -117,7 +117,7 @@ var styles = css`
117
117
  word-wrap: break-word;
118
118
  }
119
119
  textarea::placeholder {
120
- color: var(--u-txt-color-weak);
120
+ color: var(--u-txt-color-weak, #9E9E9E);
121
121
  }
122
122
  textarea:disabled {
123
123
  cursor: not-allowed;
@@ -155,7 +155,7 @@ var styles = css`
155
155
  .counter {
156
156
  margin-top: 0.25em;
157
157
  text-align: right;
158
- color: var(--u-txt-color-weak);
158
+ color: var(--u-txt-color-weak, #9E9E9E);
159
159
  font-size: 0.75em;
160
160
  line-height: 1.2;
161
161
  }
@@ -6,12 +6,12 @@ var styles = css`
6
6
  }
7
7
 
8
8
  :host {
9
- color: var(--u-tooltip-txt-color);
9
+ color: var(--u-tooltip-txt-color, #FFFFFF);
10
10
  font-family: var(--u-font-display, inherit);
11
11
  font-size: 12px;
12
12
  line-height: 1.25;
13
- border-radius: var(--u-radius-md);
14
- background-color: var(--u-tooltip-bg-color);
13
+ border-radius: var(--u-radius-md, 4px);
14
+ background-color: var(--u-tooltip-bg-color, rgba(0, 0, 0, 0.75));
15
15
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.2);
16
16
  transform: scale(0.9);
17
17
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0s 0.2s;
@@ -10,7 +10,7 @@ import { UTreeItem, TreeItemTrigger } from '../tree-item/UTreeItem.js';
10
10
  * @cssprop tree-indent-guide-offset - 들여쓰기 가이드 선의 좌측 간격 (기본값: 8px)
11
11
  * @cssprop tree-indent-guide-width - 들여쓰기 가이드 선의 두께 (기본값: 1px)
12
12
  * @cssprop tree-indent-guide-style - 들여쓰기 가이드 선의 스타일 (기본값: solid)
13
- * @cssprop tree-indent-guide-color - 들여쓰기 가이드 선의 색상 (기본값: var(--u-border-color-weak))
13
+ * @cssprop tree-indent-guide-color - 들여쓰기 가이드 선의 색상 (기본값: var(--u-border-color-weak, #EEEEEE))
14
14
  *
15
15
  * @event change - 선택된 아이템이 변경될 때 발생
16
16
  *
@@ -6,13 +6,16 @@ var styles = css`
6
6
  --tree-indent-guide-offset: 8px;
7
7
  --tree-indent-guide-width: 1px;
8
8
  --tree-indent-guide-style: solid;
9
- --tree-indent-guide-color: var(--u-border-color-weak);
9
+ --tree-indent-guide-color: var(--u-border-color-weak, #EEEEEE);
10
10
  }
11
11
 
12
12
  :host {
13
13
  display: block;
14
- font-size: 0.875rem;
15
- color: var(--u-txt-color);
14
+ /* rem 이 아니라 em 이다 — 루트 기준이면 소비자가 컨테이너 타이포를 키워도
15
+ 트리만 따라오지 않는다. 기본 상황(루트 16px)에서는 두 단위가 같은 14px 이므로
16
+ 시각은 바뀌지 않고, 상속 컨텍스트에서만 동작이 달라진다. */
17
+ font-size: 0.875em;
18
+ color: var(--u-txt-color, #212121);
16
19
  }
17
20
  `;
18
21
  //#endregion
@@ -3,7 +3,7 @@ import { css } from "lit";
3
3
  var styles = css`
4
4
  :host {
5
5
  --tree-item-depth: 0;
6
- --tree-item-color: var(--u-primary-color);
6
+ --tree-item-color: var(--u-primary-color, #1E88E5);
7
7
  }
8
8
 
9
9
  :host {
@@ -33,12 +33,12 @@ var styles = css`
33
33
  }
34
34
  :host(:not([disabled])[trigger="item"]) .header:hover,
35
35
  :host(:not([disabled])[trigger="item"]:focus-visible) .header {
36
- background-color: var(--u-bg-color-hover);
36
+ background-color: var(--u-bg-color-hover, #F5F5F5);
37
37
  }
38
38
  .header[selected] {
39
39
  color: color-mix(in srgb, var(--tree-item-color) 85%, black);
40
40
  font-weight: 600;
41
- background-color: color-mix(in srgb, var(--tree-item-color) 15%, var(--u-bg-color));
41
+ background-color: color-mix(in srgb, var(--tree-item-color) 15%, var(--u-bg-color, #FFFFFF));
42
42
  }
43
43
 
44
44
  ::slotted([slot="prefix"]) {
@@ -67,14 +67,14 @@ var styles = css`
67
67
  justify-content: center;
68
68
  width: 18px;
69
69
  height: 18px;
70
- border-radius: var(--u-radius-sm);
70
+ border-radius: var(--u-radius-sm, 3px);
71
71
  }
72
72
  .prefix-toggler u-icon {
73
73
  font-size: 12px;
74
74
  }
75
75
  :host(:not([disabled])[trigger="icon"]) .prefix-toggler:hover,
76
76
  :host(:not([disabled])[trigger="icon"]:focus-visible) .prefix-toggler {
77
- background-color: var(--u-bg-color-hover);
77
+ background-color: var(--u-bg-color-hover, #F5F5F5);
78
78
  }
79
79
 
80
80
  /* ── checkbox ── */
@@ -86,8 +86,8 @@ var styles = css`
86
86
  justify-content: center;
87
87
  width: 16px;
88
88
  height: 16px;
89
- border-radius: var(--u-radius-sm);
90
- border: 1.5px solid var(--u-input-border-color);
89
+ border-radius: var(--u-radius-sm, 3px);
90
+ border: 1.5px solid var(--u-input-border-color, #E0E0E0);
91
91
  background-color: transparent;
92
92
  transition: background-color 0.15s ease, border-color 0.15s ease;
93
93
  cursor: pointer;
@@ -41,9 +41,24 @@ export declare class Theme {
41
41
  */
42
42
  static init(options?: ThemeInitOptions): Promise<void>;
43
43
  /**
44
- * 현재 문서에 적용된 테마를 가져옵니다.
44
+ * 사용자가 **선택한** 테마를 가져옵니다 — `'system'` 을 포함합니다.
45
+ *
46
+ * ⚠**이 값을 밝기 판단에 그대로 쓰지 마십시오.** `'system'` 은 실제로 적용된 색이
47
+ * 아니라 *"OS 를 따른다"* 는 선호이며, 기본값이기도 합니다. 스타일이나 서드파티
48
+ * 에디터 테마를 고를 때는 {@link resolved} 를 쓰십시오.
45
49
  */
46
50
  static get(): ThemeType | undefined;
51
+ /**
52
+ * 문서에 **실제로 적용된** 테마를 가져옵니다 — 항상 `'light'` 또는 `'dark'` 입니다.
53
+ *
54
+ * `get()` 과 갈리는 지점은 `'system'` 일 때입니다. 선호가 system 이면 실효 테마는
55
+ * OS 설정에 따라 갈리는데, `get()` 은 그것을 알려주지 못합니다. 그래서 소비자가
56
+ * `get() === 'dark'` 로 분기하면 **system + OS 다크에서 밝은 화면을 그리게 됩니다**
57
+ * — 기본 설정이 system 이라 이 경로가 가장 흔합니다.
58
+ *
59
+ * 판정 순서: `<html theme>`(항상 실효값이 적힘) → 명시 선호 → `prefers-color-scheme`.
60
+ */
61
+ static resolved(): 'light' | 'dark';
47
62
  /**
48
63
  * 현재 문서에 적용할 테마를 설정합니다.
49
64
  */
@@ -83,7 +83,11 @@ var Theme = class {
83
83
  this.log("theme initialized");
84
84
  }
85
85
  /**
86
- * 현재 문서에 적용된 테마를 가져옵니다.
86
+ * 사용자가 **선택한** 테마를 가져옵니다 — `'system'` 을 포함합니다.
87
+ *
88
+ * ⚠**이 값을 밝기 판단에 그대로 쓰지 마십시오.** `'system'` 은 실제로 적용된 색이
89
+ * 아니라 *"OS 를 따른다"* 는 선호이며, 기본값이기도 합니다. 스타일이나 서드파티
90
+ * 에디터 테마를 고를 때는 {@link resolved} 를 쓰십시오.
87
91
  */
88
92
  static get() {
89
93
  switch (document.documentElement.getAttribute("data-theme")) {
@@ -94,6 +98,23 @@ var Theme = class {
94
98
  }
95
99
  }
96
100
  /**
101
+ * 문서에 **실제로 적용된** 테마를 가져옵니다 — 항상 `'light'` 또는 `'dark'` 입니다.
102
+ *
103
+ * `get()` 과 갈리는 지점은 `'system'` 일 때입니다. 선호가 system 이면 실효 테마는
104
+ * OS 설정에 따라 갈리는데, `get()` 은 그것을 알려주지 못합니다. 그래서 소비자가
105
+ * `get() === 'dark'` 로 분기하면 **system + OS 다크에서 밝은 화면을 그리게 됩니다**
106
+ * — 기본 설정이 system 이라 이 경로가 가장 흔합니다.
107
+ *
108
+ * 판정 순서: `<html theme>`(항상 실효값이 적힘) → 명시 선호 → `prefers-color-scheme`.
109
+ */
110
+ static resolved() {
111
+ const applied = document.documentElement.getAttribute("theme");
112
+ if (applied === "dark" || applied === "light") return applied;
113
+ const preference = this.get();
114
+ if (preference === "dark" || preference === "light") return preference;
115
+ return typeof window !== "undefined" && window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light";
116
+ }
117
+ /**
97
118
  * 현재 문서에 적용할 테마를 설정합니다.
98
119
  */
99
120
  static set(theme) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@iyulab/components",
3
3
  "description": "web-components library based on lit-element made by iyulab",
4
- "version": "1.13.0",
4
+ "version": "1.14.0",
5
5
  "keywords": [
6
6
  "iyulab",
7
7
  "components",