@iyulab/components 1.9.0 → 1.12.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 (120) hide show
  1. package/CHANGELOG.md +107 -9
  2. package/README.md +11 -1
  3. package/dist/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.142.0}/helpers/esm/decorate.js +1 -1
  4. package/dist/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.142.0}/helpers/esm/decorateMetadata.js +1 -1
  5. package/dist/_virtual/_glob-assets_raw/dark.css.e8ac080d.js +1 -1
  6. package/dist/_virtual/_glob-assets_raw/light.css.637cb2f8.js +1 -1
  7. package/dist/components/UElement.d.ts +1 -4
  8. package/dist/components/UElement.js +3 -4
  9. package/dist/components/UElement.styles.js +2 -2
  10. package/dist/components/UFloatingElement.js +2 -2
  11. package/dist/components/UFormControlElement.js +2 -2
  12. package/dist/components/UOverlayElement.d.ts +3 -0
  13. package/dist/components/UOverlayElement.js +5 -2
  14. package/dist/components/alert/UAlert.d.ts +3 -0
  15. package/dist/components/alert/UAlert.js +2 -2
  16. package/dist/components/alert/UAlert.styles.js +29 -19
  17. package/dist/components/avatar/UAvatar.js +2 -2
  18. package/dist/components/avatar/UAvatar.styles.js +2 -2
  19. package/dist/components/badge/UBadge.d.ts +2 -0
  20. package/dist/components/badge/UBadge.js +7 -5
  21. package/dist/components/badge/UBadge.styles.js +16 -5
  22. package/dist/components/breadcrumb/UBreadcrumb.js +1 -1
  23. package/dist/components/breadcrumb-item/UBreadcrumbItem.js +2 -2
  24. package/dist/components/breadcrumb-item/UBreadcrumbItem.styles.js +1 -1
  25. package/dist/components/button/UButton.d.ts +19 -2
  26. package/dist/components/button/UButton.js +2 -2
  27. package/dist/components/button/UButton.styles.js +34 -23
  28. package/dist/components/button-group/UButtonGroup.js +2 -2
  29. package/dist/components/card/UCard.d.ts +2 -0
  30. package/dist/components/card/UCard.js +4 -2
  31. package/dist/components/card/UCard.styles.js +17 -3
  32. package/dist/components/carousel/UCarousel.js +2 -2
  33. package/dist/components/carousel/UCarousel.styles.js +1 -1
  34. package/dist/components/checkbox/UCheckbox.d.ts +2 -0
  35. package/dist/components/checkbox/UCheckbox.js +2 -2
  36. package/dist/components/checkbox/UCheckbox.styles.js +39 -99
  37. package/dist/components/chip/UChip.js +2 -2
  38. package/dist/components/copy-button/UCopyButton.js +2 -2
  39. package/dist/components/copy-button/UCopyButton.styles.js +2 -2
  40. package/dist/components/dialog/UDialog.js +2 -2
  41. package/dist/components/dialog/UDialog.styles.js +2 -2
  42. package/dist/components/divider/UDivider.js +2 -2
  43. package/dist/components/drawer/UDrawer.d.ts +1 -1
  44. package/dist/components/drawer/UDrawer.js +2 -2
  45. package/dist/components/drawer/UDrawer.styles.js +1 -1
  46. package/dist/components/field/UField.js +2 -2
  47. package/dist/components/field/UField.styles.js +2 -2
  48. package/dist/components/form/UForm.js +2 -2
  49. package/dist/components/icon/UIcon.js +2 -2
  50. package/dist/components/icon-button/UIconButton.js +2 -2
  51. package/dist/components/icon-button/UIconButton.styles.js +1 -1
  52. package/dist/components/input/UInput.d.ts +4 -0
  53. package/dist/components/input/UInput.js +2 -4
  54. package/dist/components/input/UInput.styles.js +6 -3
  55. package/dist/components/menu/UMenu.d.ts +3 -0
  56. package/dist/components/menu/UMenu.js +5 -4
  57. package/dist/components/menu/UMenu.styles.js +19 -6
  58. package/dist/components/menu-item/UMenuItem.d.ts +2 -0
  59. package/dist/components/menu-item/UMenuItem.js +3 -2
  60. package/dist/components/menu-item/UMenuItem.styles.js +2 -2
  61. package/dist/components/option/UOption.d.ts +4 -0
  62. package/dist/components/option/UOption.js +9 -7
  63. package/dist/components/option/UOption.styles.js +17 -6
  64. package/dist/components/panel/UPanel.js +2 -2
  65. package/dist/components/popover/UPopover.js +2 -3
  66. package/dist/components/progress-bar/UProgressBar.js +4 -3
  67. package/dist/components/progress-bar/UProgressBar.styles.js +10 -10
  68. package/dist/components/progress-ring/UProgressRing.js +2 -2
  69. package/dist/components/progress-ring/UProgressRing.styles.js +9 -9
  70. package/dist/components/radio/URadio.d.ts +3 -0
  71. package/dist/components/radio/URadio.js +2 -3
  72. package/dist/components/radio/URadio.styles.js +2 -2
  73. package/dist/components/rating/URating.js +2 -2
  74. package/dist/components/rating/URating.styles.js +2 -2
  75. package/dist/components/select/USelect.js +2 -4
  76. package/dist/components/select/USelect.styles.js +3 -3
  77. package/dist/components/skeleton/USkeleton.js +2 -2
  78. package/dist/components/skeleton/USkeleton.styles.js +3 -3
  79. package/dist/components/slider/USlider.js +2 -2
  80. package/dist/components/slider/USlider.styles.js +4 -4
  81. package/dist/components/spinner/USpinner.js +2 -2
  82. package/dist/components/spinner/USpinner.styles.js +1 -1
  83. package/dist/components/split-panel/USplitPanel.js +2 -2
  84. package/dist/components/split-panel/USplitPanel.styles.js +2 -2
  85. package/dist/components/switch/USwitch.js +2 -2
  86. package/dist/components/switch/USwitch.styles.js +4 -4
  87. package/dist/components/tab/UTab.d.ts +2 -0
  88. package/dist/components/tab/UTab.js +9 -7
  89. package/dist/components/tab/UTab.styles.js +15 -3
  90. package/dist/components/tab-panel/UTabPanel.d.ts +2 -0
  91. package/dist/components/tab-panel/UTabPanel.js +2 -2
  92. package/dist/components/tab-panel/UTabPanel.styles.js +3 -3
  93. package/dist/components/tag/UTag.d.ts +4 -0
  94. package/dist/components/tag/UTag.js +9 -7
  95. package/dist/components/tag/UTag.styles.js +101 -170
  96. package/dist/components/textarea/UTextarea.js +2 -2
  97. package/dist/components/textarea/UTextarea.styles.js +2 -2
  98. package/dist/components/tooltip/UTooltip.d.ts +2 -0
  99. package/dist/components/tooltip/UTooltip.js +5 -3
  100. package/dist/components/tooltip/UTooltip.styles.js +12 -3
  101. package/dist/components/tree/UTree.d.ts +6 -0
  102. package/dist/components/tree/UTree.js +2 -2
  103. package/dist/components/tree-item/UTreeItem.d.ts +2 -0
  104. package/dist/components/tree-item/UTreeItem.js +2 -2
  105. package/dist/components/tree-item/UTreeItem.styles.js +3 -3
  106. package/dist/react/UDialog.d.ts +5 -1
  107. package/dist/react/UDialog.js +4 -1
  108. package/dist/react/UDrawer.d.ts +5 -1
  109. package/dist/react/UDrawer.js +4 -1
  110. package/dist/react/UPopover.d.ts +4 -2
  111. package/dist/react/UTooltip.d.ts +4 -2
  112. package/dist/styles/dark.css +64 -7
  113. package/dist/styles/light.css +64 -7
  114. package/dist/styles/tokens.css +17 -0
  115. package/dist/utilities/Theme.js +4 -0
  116. package/package.json +7 -4
  117. package/plugins/vite-plugin-glob-resolve.d.ts +0 -12
  118. package/plugins/vite-plugin-glob-resolve.js +0 -66
  119. package/plugins/vite-plugin-react-wrapper.d.ts +0 -14
  120. package/plugins/vite-plugin-react-wrapper.js +0 -235
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UBadge.styles.js";
5
5
  import { html, nothing } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -17,9 +17,11 @@ var UBadge = class UBadge extends UElement {
17
17
  render() {
18
18
  if (this.variant === "dot") return nothing;
19
19
  return html`
20
- <slot name="prefix"></slot>
21
- <slot></slot>
22
- <slot name="suffix"></slot>
20
+ <div class="base" part="base">
21
+ <slot name="prefix"></slot>
22
+ <slot></slot>
23
+ <slot name="suffix"></slot>
24
+ </div>
23
25
  `;
24
26
  }
25
27
  };
@@ -16,21 +16,32 @@ var styles = css`
16
16
  }
17
17
 
18
18
  /* === Variant (형태) === */
19
+ /* 여백은 내부 요소가 진다 — :host 에 두면 소비 앱 CSS 리셋에 지워진다. */
20
+ .base {
21
+ box-sizing: border-box;
22
+ width: 100%;
23
+ height: 100%;
24
+ display: inline-flex;
25
+ flex-direction: row;
26
+ align-items: center;
27
+ justify-content: center;
28
+ gap: inherit;
29
+ padding: var(--badge-padding-block, 0.2em) var(--badge-padding-inline, 0.5em);
30
+ border-radius: inherit;
31
+ }
32
+
19
33
  :host([variant="square"]) {
20
- padding: 0.2em 0.5em;
21
34
  border-radius: 0.2em;
22
35
  }
23
36
  :host([variant="pill"]) {
24
- padding: 0.2em 0.5em;
25
- border-radius: 999px;
37
+ border-radius: var(--u-radius-pill);
26
38
  }
27
39
  :host([variant="dot"]) {
28
40
  width: 0.6em;
29
41
  height: 0.6em;
30
42
  min-width: 0.6em;
31
43
  min-height: 0.6em;
32
- padding: 0;
33
- border-radius: 50%;
44
+ border-radius: var(--u-radius-circle);
34
45
  }
35
46
 
36
47
  /* === Color (색상) === */
@@ -1,5 +1,5 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
3
3
  import "../icon/UIcon.js";
4
4
  import { styles } from "./UBreadcrumb.styles.js";
5
5
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UBreadcrumbItem.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -12,7 +12,7 @@ var styles = css`
12
12
  cursor: pointer;
13
13
  }
14
14
  :host:hover {
15
- color: var(--u-blue-700);
15
+ color: var(--u-primary-color-strong);
16
16
  }
17
17
  :host([disabled]) {
18
18
  opacity: 0.5;
@@ -18,6 +18,22 @@ export type ButtonSize = "sm" | "md" | "lg";
18
18
  * @csspart mask - 로딩 마스크 영역
19
19
  *
20
20
  * @cssprop --u-primary-color - color="neutral"일 때 버튼 기준색. 지정 시 hover/active/surface 톤이 color-mix()로 자동 파생.
21
+ * @cssprop --btn-padding-block - 내부 버튼의 상하 여백 (기본: 0.5em)
22
+ * @cssprop --btn-padding-inline - 내부 버튼의 좌우 여백 (기본: 0.5em, variant="link"는 0)
23
+ * @cssprop --btn-border-color - 내부 버튼의 테두리 색. variant/hover/active 규칙이 이 값을 정한다
24
+ * (기본: transparent)
25
+ * @cssprop --btn-color - 버튼의 기준색. 아래 파생 토큰이 전부 이 값에서 color-mix()로 계산된다 —
26
+ * 보통 이것 하나만 덮으면 된다.
27
+ * @cssprop --btn-color-hover - solid 배경 hover (기본: --btn-color 85% + black)
28
+ * @cssprop --btn-color-active - solid 배경 active (기본: --btn-color 70% + black)
29
+ * @cssprop --btn-color-surface - surface 배경 (기본: --btn-color 12% + 배경색)
30
+ * @cssprop --btn-color-surface-hover - surface 배경 hover (기본: 22%)
31
+ * @cssprop --btn-color-surface-active - surface 배경 active (기본: 32%)
32
+ * @cssprop --btn-color-border - 테두리 (기본: --btn-color 45% + 배경색)
33
+ * @cssprop --btn-color-border-hover - 테두리 hover (기본: 60%)
34
+ * @cssprop --btn-color-border-active - 테두리 active (기본: 75%)
35
+ * @cssprop --btn-color-outline-hover - outline 배경 hover (기본: 6%)
36
+ * @cssprop --btn-color-outline-active - outline 배경 active (기본: 12%)
21
37
  */
22
38
  export declare class UButton extends UElement {
23
39
  static styles: import('lit').CSSResultGroup[];
@@ -25,8 +41,9 @@ export declare class UButton extends UElement {
25
41
  /** 버튼 스타일 변형 */
26
42
  variant: ButtonVariant;
27
43
  /**
28
- * Semantic 색상. 기본값 `neutral`은 --u-primary-color 미지정 시 blue렌더링(회색에서 변경됨).
29
- * `link`는 neutral일 기존 파랑 유지, 다른 색 지정 시 재정의. `ghost`는 영향받지 않음.
44
+ * Semantic 색상. 기본값 `neutral`은 `--u-primary-color`(역할 토큰)렌더링된다
45
+ * 브랜드 색을 덮으면 기본 버튼이 함께 따라온다.
46
+ * `link`는 neutral일 때 primary 계열 유지, 다른 색 지정 시 재정의. `ghost`는 영향받지 않음.
30
47
  */
31
48
  color: ButtonColor;
32
49
  /** 버튼 크기. `font-size`만 변경하며 나머지는 `em` 단위라 비례 조정됨. */
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
4
4
  import "../spinner/USpinner.js";
5
5
  import { styles } from "./UButton.styles.js";
6
6
  import { html } from "lit";
@@ -3,7 +3,7 @@ import { css } from "lit";
3
3
  var styles = css`
4
4
  :host {
5
5
  /* --btn-color 하나만 정해지면 hover/active/surface/outline 톤이 전부 자동 파생 */
6
- --btn-color: var(--u-primary-color, var(--u-blue-600));
6
+ --btn-color: var(--u-primary-color);
7
7
  --btn-color-hover: color-mix(in srgb, var(--btn-color) 85%, black);
8
8
  --btn-color-active: color-mix(in srgb, var(--btn-color) 70%, black);
9
9
  --btn-color-surface: color-mix(in srgb, var(--btn-color) 12%, var(--u-bg-color));
@@ -23,9 +23,7 @@ var styles = css`
23
23
  font-size: 14px;
24
24
  font-weight: 500;
25
25
  line-height: 1.5;
26
- padding: 0.5em;
27
- border: 1px solid transparent;
28
- border-radius: 6px;
26
+ border-radius: var(--u-radius-lg);
29
27
  background-color: transparent;
30
28
 
31
29
  transition: all 0.2s ease;
@@ -71,7 +69,7 @@ var styles = css`
71
69
  visibility: hidden;
72
70
  }
73
71
  :host([rounded]) {
74
- border-radius: 9999px;
72
+ border-radius: var(--u-radius-pill);
75
73
  }
76
74
  :host([has-spinner]) u-spinner {
77
75
  display: none;
@@ -83,37 +81,37 @@ var styles = css`
83
81
  :host([variant="solid"]) {
84
82
  color: #fff;
85
83
  background-color: var(--btn-color);
86
- border-color: var(--btn-color);
84
+ --btn-border-color: var(--btn-color);
87
85
  }
88
86
  :host([variant="solid"]:hover) {
89
87
  background-color: var(--btn-color-hover);
90
- border-color: var(--btn-color-hover);
88
+ --btn-border-color: var(--btn-color-hover);
91
89
  }
92
90
  :host([variant="solid"]:active) {
93
91
  background-color: var(--btn-color-active);
94
- border-color: var(--btn-color-active);
92
+ --btn-border-color: var(--btn-color-active);
95
93
  }
96
94
 
97
95
  /* surface: 채우기 + 경계 */
98
96
  :host([variant="surface"]) {
99
97
  color: var(--u-txt-color);
100
98
  background-color: var(--btn-color-surface);
101
- border-color: var(--btn-color-border);
99
+ --btn-border-color: var(--btn-color-border);
102
100
  }
103
101
  :host([variant="surface"]:hover) {
104
102
  background-color: var(--btn-color-surface-hover);
105
- border-color: var(--btn-color-border-hover);
103
+ --btn-border-color: var(--btn-color-border-hover);
106
104
  }
107
105
  :host([variant="surface"]:active) {
108
106
  background-color: var(--btn-color-surface-active);
109
- border-color: var(--btn-color-border-active);
107
+ --btn-border-color: var(--btn-color-border-active);
110
108
  }
111
109
 
112
110
  /* filled: 채우기만 */
113
111
  :host([variant="filled"]) {
114
112
  color: var(--u-txt-color);
115
113
  background-color: var(--btn-color-surface);
116
- border-color: transparent;
114
+ --btn-border-color: transparent;
117
115
  }
118
116
  :host([variant="filled"]:hover) {
119
117
  background-color: var(--btn-color-surface-hover);
@@ -125,22 +123,22 @@ var styles = css`
125
123
  /* outlined: 경계만 */
126
124
  :host([variant="outlined"]) {
127
125
  color: var(--u-txt-color);
128
- border-color: var(--btn-color-border);
126
+ --btn-border-color: var(--btn-color-border);
129
127
  background-color: transparent;
130
128
  }
131
129
  :host([variant="outlined"]:hover) {
132
- border-color: var(--btn-color-border-hover);
130
+ --btn-border-color: var(--btn-color-border-hover);
133
131
  background-color: var(--btn-color-outline-hover);
134
132
  }
135
133
  :host([variant="outlined"]:active) {
136
- border-color: var(--btn-color-border-active);
134
+ --btn-border-color: var(--btn-color-border-active);
137
135
  background-color: var(--btn-color-outline-active);
138
136
  }
139
137
 
140
138
  /* ghost: transparent */
141
139
  :host([variant="ghost"]) {
142
140
  color: var(--u-txt-color);
143
- border-color: transparent;
141
+ --btn-border-color: transparent;
144
142
  background-color: transparent;
145
143
  }
146
144
  :host([variant="ghost"]:hover) {
@@ -152,18 +150,17 @@ var styles = css`
152
150
 
153
151
  /* link: blue 링크 스타일 (기본값, color="neutral"일 때도 유지 — 기존 동작 보존) */
154
152
  :host([variant="link"]) {
155
- color: var(--u-blue-500, #3b82f6);
156
- border-color: transparent;
153
+ color: var(--u-primary-color-weak, #3b82f6);
154
+ --btn-border-color: transparent;
157
155
  background-color: transparent;
158
- padding-left: 0;
159
- padding-right: 0;
156
+ --btn-padding-inline: 0;
160
157
  }
161
158
  :host([variant="link"]:hover) {
162
- color: var(--u-blue-600, #2563eb);
159
+ color: var(--u-primary-color, #2563eb);
163
160
  text-decoration: underline;
164
161
  }
165
162
  :host([variant="link"]:active) {
166
- color: var(--u-blue-700, #1d4ed8);
163
+ color: var(--u-primary-color-strong, #1d4ed8);
167
164
  }
168
165
  /* link + 명시적 non-neutral color: 링크 자체 색상을 재정의 (예: 파괴적 액션 링크) */
169
166
  :host([variant="link"][color]:not([color="neutral"])) {
@@ -176,14 +173,28 @@ var styles = css`
176
173
  color: var(--btn-color-active);
177
174
  }
178
175
 
179
- /* === Inner === */
176
+ /* === Inner ===
177
+ *
178
+ * 여백·테두리는 내부 요소가 그린다. :host 에 두면 소비 앱의 CSS 리셋
179
+ * (* { padding:0; border:0 } — Tailwind preflight 등 사실상 표준 관행)에 지워진다.
180
+ * 호스트 요소에 대해서는 문서 작성자 스타일이 섀도의 :host 규칙을 이기기 때문이며,
181
+ * 그 결과 버튼이 글자 높이만 남는다(에러는 없다). 내부 요소는 문서 리셋의 사정권 밖이다.
182
+ *
183
+ * 테두리 색은 여전히 :host([variant=...]) 가 정한다 — --btn-border-color 로 내려보내므로
184
+ * variant/hover/active 규칙은 호스트에 그대로 남는다.
185
+ */
180
186
  button, a {
181
187
  all: unset;
188
+ box-sizing: border-box; /* all:unset 이 content-box 로 되돌리므로 다시 지정 */
182
189
  width: 100%;
183
190
  display: inline-flex;
184
191
  flex-direction: row;
185
192
  align-items: center;
186
193
  justify-content: space-between;
194
+
195
+ padding: var(--btn-padding-block, 0.5em) var(--btn-padding-inline, 0.5em);
196
+ border: 1px solid var(--btn-border-color, transparent);
197
+ border-radius: inherit;
187
198
  }
188
199
  a {
189
200
  text-decoration: none;
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
4
4
  import { UButton } from "../button/UButton.js";
5
5
  import { UIconButton } from "../icon-button/UIconButton.js";
6
6
  import { styles } from "./UButtonGroup.styles.js";
@@ -13,6 +13,8 @@ export type CardOrientation = 'vertical' | 'horizontal';
13
13
  * @csspart header - 헤더 영역 컨테이너
14
14
  * @csspart body - 본문 영역 컨테이너
15
15
  * @csspart footer - 푸터 영역 컨테이너
16
+ * @cssprop --card-border-width - 테두리 두께 (`borderless` 는 0)
17
+ * @cssprop --card-border-color - 테두리 색
16
18
  */
17
19
  export declare class UCard extends UElement {
18
20
  static styles: import('lit').CSSResultGroup[];
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UCard.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -18,6 +18,7 @@ var UCard = class UCard extends UElement {
18
18
  }
19
19
  render() {
20
20
  return html`
21
+ <div class="base" part="base">
21
22
  <div class="media" part="media">
22
23
  <slot name="media" @slotchange=${this.handleSlotChange}></slot>
23
24
  </div>
@@ -32,6 +33,7 @@ var UCard = class UCard extends UElement {
32
33
  <slot name="footer" @slotchange=${this.handleSlotChange}></slot>
33
34
  </footer>
34
35
  </div>
36
+ </div>
35
37
  `;
36
38
  }
37
39
  handleSlotChange(e) {
@@ -3,12 +3,26 @@ import { css } from "lit";
3
3
  var styles = css`
4
4
  :host {
5
5
  display: flex;
6
- border: 1px solid var(--u-border-color);
7
- border-radius: 8px;
6
+ border-radius: var(--u-radius-xl);
8
7
  background-color: var(--u-panel-bg-color);
9
8
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
10
9
  overflow: hidden;
10
+
11
+ --card-border-width: 1px;
12
+ --card-border-color: var(--u-border-color);
13
+ }
14
+
15
+ /* 테두리는 내부 요소가 진다 — :host 에 두면 소비 앱 CSS 리셋에 지워진다. */
16
+ .base {
17
+ box-sizing: border-box;
18
+ width: 100%;
19
+ display: flex;
20
+ flex-direction: inherit;
21
+ border: var(--card-border-width) solid var(--card-border-color);
22
+ border-radius: inherit;
23
+ overflow: hidden;
11
24
  }
25
+
12
26
  :host([orientation="vertical"]) {
13
27
  flex-direction: column;
14
28
  }
@@ -16,7 +30,7 @@ var styles = css`
16
30
  flex-direction: row;
17
31
  }
18
32
  :host([borderless]) {
19
- border: none;
33
+ --card-border-width: 0;
20
34
  }
21
35
  :host([shadowless]) {
22
36
  box-shadow: none;
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
6
6
  import { styles } from "./UCarousel.styles.js";
@@ -94,7 +94,7 @@ var styles = css`
94
94
  height: 10px;
95
95
  padding: 0;
96
96
  border: none;
97
- border-radius: 50%;
97
+ border-radius: var(--u-radius-circle);
98
98
  background-color: var(--u-neutral-400);
99
99
  cursor: pointer;
100
100
  transition: all 0.2s ease;
@@ -19,6 +19,8 @@ export type CheckboxColor = "blue" | "green" | "red" | "orange" | "teal" | "cyan
19
19
  * @cssprop --checkbox-background-color - 체크박스 배경색 (filled variant)
20
20
  *
21
21
  * @event change - 체크 상태 변경 시 발생
22
+ *
23
+ * @cssprop --checkbox-fill-color - 체크된 상태의 채움색 (기본: --u-primary-color)
22
24
  */
23
25
  export declare class UCheckbox extends UFormControlElement<string> {
24
26
  static styles: import('lit').CSSResultGroup[];
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import "../icon/UIcon.js";
5
5
  import { Locale } from "../../utilities/Locale.js";
@@ -2,7 +2,7 @@ import { css } from "lit";
2
2
  //#region src/components/checkbox/UCheckbox.styles.ts
3
3
  var styles = css`
4
4
  :host {
5
- --checkbox-fill-color: var(--u-primary-color, var(--u-blue-600));
5
+ --checkbox-fill-color: var(--u-primary-color);
6
6
  --checkbox-color: inherit;
7
7
  --checkbox-border-color: var(--u-input-border-color);
8
8
  --checkbox-background-color: var(--u-input-bg-color);
@@ -27,10 +27,10 @@ var styles = css`
27
27
  cursor: default;
28
28
  }
29
29
  :host([invalid]) {
30
- --checkbox-border-color: var(--u-red-600);
30
+ --checkbox-border-color: var(--u-danger-color);
31
31
  }
32
32
  :host([invalid]) .footer {
33
- color: var(--u-red-600);
33
+ color: var(--u-danger-color);
34
34
  }
35
35
  :host([checked]) .checkbox u-icon,
36
36
  :host([indeterminate]) .checkbox u-icon {
@@ -44,110 +44,50 @@ var styles = css`
44
44
  :host([variant="filled"][checked]),
45
45
  :host([variant="filled"][indeterminate]) {
46
46
  --checkbox-color: var(--u-neutral-100);
47
- --checkbox-border-color: var(--checkbox-fill-color);
48
- --checkbox-background-color: var(--checkbox-fill-color);
47
+ --checkbox-border-color: var(--checkbox-hue, var(--checkbox-fill-color));
48
+ --checkbox-background-color: var(--checkbox-hue, var(--checkbox-fill-color));
49
49
  }
50
50
 
51
51
  /* === Variant: outline - 테두리만 === */
52
52
  :host([variant="outline"][checked]),
53
53
  :host([variant="outline"][indeterminate]) {
54
- --checkbox-border-color: var(--checkbox-fill-color);
54
+ --checkbox-color: var(--checkbox-hue, var(--checkbox-fill-color));
55
+ --checkbox-border-color: var(--checkbox-hue, var(--checkbox-fill-color));
55
56
  --checkbox-background-color: transparent;
56
57
  }
57
58
 
58
- /* === Color variants (filled) === */
59
- :host([variant="filled"][color="blue"][checked]),
60
- :host([variant="filled"][color="blue"][indeterminate]) {
61
- --checkbox-border-color: var(--checkbox-fill-color);
62
- --checkbox-background-color: var(--checkbox-fill-color);
63
- }
64
- :host([variant="filled"][color="green"][checked]),
65
- :host([variant="filled"][color="green"][indeterminate]) {
66
- --checkbox-border-color: var(--u-green-600);
67
- --checkbox-background-color: var(--u-green-600);
68
- }
69
- :host([variant="filled"][color="red"][checked]),
70
- :host([variant="filled"][color="red"][indeterminate]) {
71
- --checkbox-border-color: var(--u-red-600);
72
- --checkbox-background-color: var(--u-red-600);
73
- }
74
- :host([variant="filled"][color="orange"][checked]),
75
- :host([variant="filled"][color="orange"][indeterminate]) {
76
- --checkbox-border-color: var(--u-orange-600);
77
- --checkbox-background-color: var(--u-orange-600);
78
- }
79
- :host([variant="filled"][color="teal"][checked]),
80
- :host([variant="filled"][color="teal"][indeterminate]) {
81
- --checkbox-border-color: var(--u-teal-600);
82
- --checkbox-background-color: var(--u-teal-600);
83
- }
84
- :host([variant="filled"][color="cyan"][checked]),
85
- :host([variant="filled"][color="cyan"][indeterminate]) {
86
- --checkbox-border-color: var(--u-cyan-600);
87
- --checkbox-background-color: var(--u-cyan-600);
88
- }
89
- :host([variant="filled"][color="purple"][checked]),
90
- :host([variant="filled"][color="purple"][indeterminate]) {
91
- --checkbox-border-color: var(--u-purple-600);
92
- --checkbox-background-color: var(--u-purple-600);
93
- }
94
- :host([variant="filled"][color="pink"][checked]),
95
- :host([variant="filled"][color="pink"][indeterminate]) {
96
- --checkbox-border-color: var(--u-pink-600);
97
- --checkbox-background-color: var(--u-pink-600);
98
- }
99
- :host([variant="filled"][color="neutral"][checked]),
100
- :host([variant="filled"][color="neutral"][indeterminate]) {
101
- --checkbox-border-color: var(--u-neutral-600);
102
- --checkbox-background-color: var(--u-neutral-600);
59
+ /* ==========================================================================
60
+ 장식 축 — color= 는 hue 슬롯만 채운다. variant 규칙이 폴백과 함께 읽는다.
61
+ 기본값 blue 는 규칙이 없다 = 슬롯이 비어 브랜드 훅(--checkbox-fill-color) 탄다.
62
+ u-tag 와 같은 방식이다 — 슬롯이 채워지면 color= 가 최종 권한을 갖는다.
63
+ blue 는 장식 축의 한 값이 아니라 "색을 지정하지 않음" 의 표기다.
64
+ ========================================================================== */
65
+ :host([color="green"]) {
66
+ --checkbox-hue: var(--u-green-600);
103
67
  }
104
-
105
- /* === Color variants (outline) === */
106
- :host([variant="outline"][color="blue"][checked]),
107
- :host([variant="outline"][color="blue"][indeterminate]) {
108
- --checkbox-color: var(--checkbox-fill-color);
109
- --checkbox-border-color: var(--checkbox-fill-color);
110
- }
111
- :host([variant="outline"][color="green"][checked]),
112
- :host([variant="outline"][color="green"][indeterminate]) {
113
- --checkbox-color: var(--u-green-600);
114
- --checkbox-border-color: var(--u-green-600);
115
- }
116
- :host([variant="outline"][color="red"][checked]),
117
- :host([variant="outline"][color="red"][indeterminate]) {
118
- --checkbox-color: var(--u-red-600);
119
- --checkbox-border-color: var(--u-red-600);
120
- }
121
- :host([variant="outline"][color="orange"][checked]),
122
- :host([variant="outline"][color="orange"][indeterminate]) {
123
- --checkbox-color: var(--u-orange-600);
124
- --checkbox-border-color: var(--u-orange-600);
125
- }
126
- :host([variant="outline"][color="teal"][checked]),
127
- :host([variant="outline"][color="teal"][indeterminate]) {
128
- --checkbox-color: var(--u-teal-600);
129
- --checkbox-border-color: var(--u-teal-600);
130
- }
131
- :host([variant="outline"][color="cyan"][checked]),
132
- :host([variant="outline"][color="cyan"][indeterminate]) {
133
- --checkbox-color: var(--u-cyan-600);
134
- --checkbox-border-color: var(--u-cyan-600);
135
- }
136
- :host([variant="outline"][color="purple"][checked]),
137
- :host([variant="outline"][color="purple"][indeterminate]) {
138
- --checkbox-color: var(--u-purple-600);
139
- --checkbox-border-color: var(--u-purple-600);
140
- }
141
- :host([variant="outline"][color="pink"][checked]),
142
- :host([variant="outline"][color="pink"][indeterminate]) {
143
- --checkbox-color: var(--u-pink-600);
144
- --checkbox-border-color: var(--u-pink-600);
145
- }
146
- :host([variant="outline"][color="neutral"][checked]),
147
- :host([variant="outline"][color="neutral"][indeterminate]) {
148
- --checkbox-color: var(--u-neutral-600);
149
- --checkbox-border-color: var(--u-neutral-600);
68
+ :host([color="red"]) {
69
+ --checkbox-hue: var(--u-red-600);
70
+ }
71
+ :host([color="orange"]) {
72
+ --checkbox-hue: var(--u-orange-600);
73
+ }
74
+ :host([color="teal"]) {
75
+ --checkbox-hue: var(--u-teal-600);
76
+ }
77
+ :host([color="cyan"]) {
78
+ --checkbox-hue: var(--u-cyan-600);
79
+ }
80
+ :host([color="purple"]) {
81
+ --checkbox-hue: var(--u-purple-600);
150
82
  }
83
+ :host([color="pink"]) {
84
+ --checkbox-hue: var(--u-pink-600);
85
+ }
86
+ :host([color="neutral"]) {
87
+ --checkbox-hue: var(--u-neutral-600);
88
+ }
89
+
90
+
151
91
 
152
92
  .wrapper {
153
93
  display: inline-flex;
@@ -197,7 +137,7 @@ var styles = css`
197
137
  }
198
138
 
199
139
  .required {
200
- color: var(--u-red-600);
140
+ color: var(--u-danger-color);
201
141
  font-weight: 500;
202
142
  }
203
143
 
@@ -209,7 +149,7 @@ var styles = css`
209
149
  }
210
150
 
211
151
  :host([invalid]) .description {
212
- color: var(--u-red-600);
152
+ color: var(--u-danger-color);
213
153
  }
214
154
  `;
215
155
  //#endregion
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
6
6
  import "../tooltip/UTooltip.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
6
6
  import "../icon-button/UIconButton.js";
@@ -14,12 +14,12 @@ var styles = css`
14
14
  }
15
15
 
16
16
  :host([copied]) u-icon-button {
17
- color: var(--u-green-500);
17
+ color: var(--u-success-color-weak);
18
18
  }
19
19
 
20
20
  /* 라벨 형태(아이콘+텍스트): 복사 완료 시 아이콘/텍스트를 성공색으로 강조 */
21
21
  :host([copied]) u-button {
22
- color: var(--u-green-500);
22
+ color: var(--u-success-color-weak);
23
23
  }
24
24
  `;
25
25
  //#endregion
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
3
3
  import { UOverlayElement } from "../UOverlayElement.js";
4
4
  import "../button/UButton.js";
5
5
  import "../icon/UIcon.js";