@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
@@ -68,7 +68,7 @@ var styles = css`
68
68
  * 테두리는 CanvasText 원색이 과해 옅게 혼합.
69
69
  */
70
70
  border: 1px solid var(--u-border-color, color-mix(in srgb, CanvasText 20%, Canvas));
71
- border-radius: 6px;
71
+ border-radius: var(--u-radius-lg);
72
72
  background: var(--u-panel-bg-color, Canvas);
73
73
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
74
74
  pointer-events: auto;
@@ -98,7 +98,7 @@ var styles = css`
98
98
  flex-shrink: 0;
99
99
  padding: 4px;
100
100
  font-size: inherit;
101
- border-radius: 4px;
101
+ border-radius: var(--u-radius-md);
102
102
  }
103
103
 
104
104
  .body {
@@ -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 "./UDivider.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -13,7 +13,7 @@ export type DrawerPlacement = 'left' | 'right' | 'top' | 'bottom';
13
13
  * @csspart body - 본문 영역
14
14
  * @csspart close-btn - 닫기 버튼
15
15
  *
16
- * @cssproperty [--drawer-size=28rem] - 드로어 패널의 슬라이드 축 방향 크기.
16
+ * @cssprop --drawer-size - 드로어 패널의 슬라이드 축 방향 크기 (기본값: 좌우 28rem / 상하 16rem).
17
17
  * 좌우(left/right) placement는 너비, 상하(top/bottom) placement는 높이로 적용된다(상하 기본 16rem).
18
18
  * 화면이 좁으면 max-width/max-height:100%로 자동 축소된다.
19
19
  */
@@ -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";
@@ -86,7 +86,7 @@ var styles = css`
86
86
  flex-shrink: 0;
87
87
  padding: 4px;
88
88
  font-size: inherit;
89
- border-radius: 4px;
89
+ border-radius: var(--u-radius-md);
90
90
  }
91
91
 
92
92
  .body {
@@ -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 "./UField.styles.js";
5
5
  import { html, nothing } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -12,7 +12,7 @@ var styles = css`
12
12
  cursor: not-allowed;
13
13
  }
14
14
  :host([invalid]) .footer {
15
- color: var(--u-red-600);
15
+ color: var(--u-danger-color);
16
16
  }
17
17
 
18
18
  .header {
@@ -32,7 +32,7 @@ var styles = css`
32
32
  }
33
33
 
34
34
  .required {
35
- color: var(--u-red-600);
35
+ color: var(--u-danger-color);
36
36
  margin-right: 0.2em;
37
37
  }
38
38
 
@@ -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 { UFormControlElement } from "../UFormControlElement.js";
5
5
  import { arrayAttrConverter } from "../../utilities/converters.js";
6
6
  import { styles } from "./UForm.styles.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 { IconRegistry, getDefaultBaseUrl } from "../../utilities/icons.js";
5
5
  import { styles } from "./UIcon.styles.js";
6
6
  import { nothing } 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 "../button/UButton.js";
5
5
  import "../icon/UIcon.js";
6
6
  import "../tooltip/UTooltip.js";
@@ -11,7 +11,7 @@ var styles = css`
11
11
  color: #fff;
12
12
  }
13
13
  :host([variant="link"]) {
14
- color: var(--u-blue-500);
14
+ color: var(--u-primary-color-weak);
15
15
  }
16
16
 
17
17
  u-button {
@@ -23,6 +23,10 @@ export type InputVariant = 'outlined' | 'filled' | 'underlined' | 'borderless';
23
23
  * docs/theming.md 참고)
24
24
  * @csspart popover - 드롭다운 팝오버 요소
25
25
  *
26
+ * @cssprop --u-input-display - 호스트의 display (기본값: inline-block). 폼/그리드 셀에서
27
+ * 컨테이너 폭을 채우려면 `block`으로 지정한다.
28
+ * @cssprop --u-input-width - 호스트의 width (기본값: auto). flex 컨테이너처럼 block만으로는
29
+ * 늘어나지 않는 맥락에서 `100%`로 지정한다.
26
30
  * @cssprop --input-popover-width - 드롭다운 팝오버의 너비 (기본값: 앵커(트리거) 너비)
27
31
  * @cssprop --input-popover-min-height - 드롭다운 팝오버의 최소 높이 (기본값: 0px)
28
32
  * @cssprop --input-popover-max-height - 드롭다운 팝오버의 최대 높이 (기본값: 50vh)
@@ -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 "../spinner/USpinner.js";
5
5
  import "../icon/UIcon.js";
@@ -71,7 +71,6 @@ var UInput = class UInput extends UFormControlElement {
71
71
  case "Escape":
72
72
  e.preventDefault();
73
73
  this.popoverEl?.hide();
74
- break;
75
74
  }
76
75
  };
77
76
  this.handlePasswordTogglerClick = (e) => {
@@ -115,7 +114,6 @@ var UInput = class UInput extends UFormControlElement {
115
114
  e.preventDefault();
116
115
  this.popoverEl?.hide();
117
116
  this.focus();
118
- break;
119
117
  }
120
118
  };
121
119
  this.handlePopoverShow = (e) => {
@@ -8,7 +8,10 @@ var styles = css`
8
8
 
9
9
  :host {
10
10
  position: relative;
11
+ /* 폼/그리드 셀에서 컨테이너 폭을 채우려면 소비자가 --u-input-display: block 을 준다.
12
+ flex 컨테이너처럼 block 만으로 늘어나지 않는 맥락을 위해 width 경로도 함께 연다. */
11
13
  display: var(--u-input-display, inline-block);
14
+ width: var(--u-input-width, auto);
12
15
  color: var(--u-txt-color);
13
16
  font-size: inherit;
14
17
  font-family: var(--u-font-base);
@@ -72,7 +75,7 @@ var styles = css`
72
75
  padding-left: 0;
73
76
  padding-right: 0;
74
77
  border: none;
75
- border-radius: 0;
78
+ border-radius: var(--u-radius-none);
76
79
  border-bottom: 1px solid var(--u-input-border-color);
77
80
  background-color: transparent;
78
81
  }
@@ -98,7 +101,7 @@ var styles = css`
98
101
  /* ===== Variant: borderless ===== */
99
102
  :host([variant="borderless"]) .container {
100
103
  border: none;
101
- border-radius: 0;
104
+ border-radius: var(--u-radius-none);
102
105
  background-color: transparent;
103
106
  padding: 0;
104
107
  box-shadow: none;
@@ -170,7 +173,7 @@ var styles = css`
170
173
  max-height: var(--input-popover-max-height);
171
174
  padding: 4px;
172
175
  border: 1px solid var(--u-border-color);
173
- border-radius: 6px;
176
+ border-radius: var(--u-radius-lg);
174
177
  background-color: var(--u-panel-bg-color);
175
178
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
176
179
  overflow-x: auto;
@@ -8,6 +8,9 @@ export type MenuSelection = 'none' | 'single' | 'multiple';
8
8
  * @slot - 메뉴 아이템 (u-menu-item, u-divider)
9
9
  *
10
10
  * @cssprop --menu-indent-size - 하위 메뉴 아이템의 들여쓰기 크기 (기본값: 20px)
11
+ * @cssprop --menu-padding - 내부 여백 (`borderless` 는 0)
12
+ * @cssprop --menu-border-width - 테두리 두께 (`borderless` 는 0)
13
+ * @cssprop --menu-border-color - 테두리 색
11
14
  *
12
15
  * @event change - 선택된 아이템이 변경될 때 발생
13
16
  */
@@ -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 { UMenuItem } from "../menu-item/UMenuItem.js";
5
5
  import { styles } from "./UMenu.styles.js";
6
6
  import { html } from "lit";
@@ -88,7 +88,6 @@ var UMenu = class UMenu extends UElement {
88
88
  e.preventDefault();
89
89
  if (!focused.leaf && focused.expanded) focused.expanded = false;
90
90
  else if (focused.parentItem) focused.parentItem.focus();
91
- break;
92
91
  }
93
92
  };
94
93
  }
@@ -121,7 +120,9 @@ var UMenu = class UMenu extends UElement {
121
120
  ].some((k) => changedProperties.has(k))) this.propagate();
122
121
  }
123
122
  render() {
124
- return html`<slot @slotchange=${this.handleSlotChange}></slot>`;
123
+ return html`<div class="base" part="base">
124
+ <slot @slotchange=${this.handleSlotChange}></slot>
125
+ </div>`;
125
126
  }
126
127
  getItems(fn) {
127
128
  const result = [];
@@ -8,16 +8,29 @@ var styles = css`
8
8
  :host {
9
9
  display: flex;
10
10
  flex-direction: column;
11
- padding: 4px;
12
11
  min-width: 160px;
13
- border: 1px solid var(--u-border-color);
14
- border-radius: 6px;
12
+ border-radius: var(--u-radius-lg);
15
13
  background-color: var(--u-panel-bg-color);
14
+
15
+ --menu-padding: 4px;
16
+ --menu-border-width: 1px;
17
+ --menu-border-color: var(--u-border-color);
18
+ }
19
+
20
+ /* 여백/테두리는 내부 요소가 진다 — :host 에 두면 소비 앱 CSS 리셋에 지워진다. */
21
+ .base {
22
+ box-sizing: border-box;
23
+ width: 100%;
24
+ display: flex;
25
+ flex-direction: column;
26
+ padding: var(--menu-padding);
27
+ border: var(--menu-border-width) solid var(--menu-border-color);
28
+ border-radius: inherit;
16
29
  }
17
30
  :host([borderless]) {
18
- padding: 0;
19
- border: none;
20
- border-radius: 0;
31
+ --menu-padding: 0;
32
+ --menu-border-width: 0;
33
+ border-radius: var(--u-radius-none);
21
34
  background-color: transparent;
22
35
  }
23
36
  `;
@@ -16,6 +16,8 @@ export type MenuItemAlign = 'left' | 'center' | 'right';
16
16
  * @csspart popover - 팝오버 모드에서 하위 메뉴 컨테이너
17
17
  *
18
18
  * @event pick - 아이템 선택 시 발생 (하위 메뉴가 없는 경우)
19
+ *
20
+ * @cssprop --menu-item-color - 선택/활성 상태의 기준색 (기본: --u-primary-color)
19
21
  */
20
22
  export declare class UMenuItem extends UElement {
21
23
  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 "../icon/UIcon.js";
5
5
  import { UDivider } from "../divider/UDivider.js";
6
6
  import "../popover/UPopover.js";
@@ -121,6 +121,7 @@ var UMenuItem = class UMenuItem extends UElement {
121
121
  trigger="hover"
122
122
  placement="right-start"
123
123
  offset="4"
124
+ strategy="fixed"
124
125
  >
125
126
  <slot name="children" @slotchange=${this.handleChildrenSlotChange}></slot>
126
127
  </u-popover>`}
@@ -3,7 +3,7 @@ import { css } from "lit";
3
3
  var styles = css`
4
4
  :host {
5
5
  --menu-item-depth: 0;
6
- --menu-item-color: var(--u-primary-color, var(--u-blue-600));
6
+ --menu-item-color: var(--u-primary-color);
7
7
  }
8
8
 
9
9
  :host {
@@ -137,7 +137,7 @@ var styles = css`
137
137
  flex-direction: column;
138
138
  padding: 4px;
139
139
  border: 1px solid var(--u-border-color);
140
- border-radius: 4px;
140
+ border-radius: var(--u-radius-md);
141
141
  background-color: var(--u-panel-bg-color);
142
142
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
143
143
  transform: scale(0.8);
@@ -20,6 +20,10 @@ export type OptionMarker = 'radio' | 'check';
20
20
  * @cssprop --option-color-active-interactive - 선택된 상태에서 호버/포커스 시 텍스트 색상
21
21
  * @cssprop --option-border-color-active-interactive - 선택된 상태에서 호버/포커스 시 테두리 색상
22
22
  * @cssprop --option-background-color-active-interactive - 선택된 상태에서 호버/포커스 시 배경 색상
23
+ * @cssprop --option-color - 선택 상태의 기준색. 위 active 계열이 이 값에서 파생된다
24
+ * (기본: --u-primary-color)
25
+ * @cssprop --option-padding-block - 세로 여백
26
+ * @cssprop --option-padding-inline - 가로 여백
23
27
  */
24
28
  export declare class UOption extends UElement {
25
29
  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 "../icon/UIcon.js";
5
5
  import { styles } from "./UOption.styles.js";
6
6
  import { html, nothing } from "lit";
@@ -32,12 +32,14 @@ var UOption = class UOption extends UElement {
32
32
  }
33
33
  render() {
34
34
  return html`
35
- ${this.renderMarker()}
36
- <slot name="prefix"></slot>
37
- <div class="content" part="content">
38
- <slot></slot>
35
+ <div class="base" part="base">
36
+ ${this.renderMarker()}
37
+ <slot name="prefix"></slot>
38
+ <div class="content" part="content">
39
+ <slot></slot>
40
+ </div>
41
+ <slot name="suffix"></slot>
39
42
  </div>
40
- <slot name="suffix"></slot>
41
43
  `;
42
44
  }
43
45
  renderMarker() {
@@ -2,7 +2,7 @@ import { css } from "lit";
2
2
  //#region src/components/option/UOption.styles.ts
3
3
  var styles = css`
4
4
  :host {
5
- --option-color: var(--u-primary-color, var(--u-blue-600));
5
+ --option-color: var(--u-primary-color);
6
6
  --option-color-interactive: inherit;
7
7
  --option-border-color-interactive: var(--u-border-color-hover);
8
8
  --option-background-color-interactive: var(--u-bg-color-hover);
@@ -18,12 +18,23 @@ var styles = css`
18
18
 
19
19
  :host {
20
20
  display: flex;
21
- flex-direction: row;
22
- align-items: center;
23
- padding: 0.25em 0.5em;
24
21
  transition: background-color 0.15s ease, color 0.15s ease;
25
22
  user-select: none;
26
23
  cursor: pointer;
24
+
25
+ --option-padding-block: 0.25em;
26
+ --option-padding-inline: 0.5em;
27
+ }
28
+
29
+ /* 여백은 내부 요소가 진다 — :host 에 두면 소비 앱 CSS 리셋에 지워진다. */
30
+ .base {
31
+ box-sizing: border-box;
32
+ width: 100%;
33
+ display: flex;
34
+ flex-direction: row;
35
+ align-items: center;
36
+ padding: var(--option-padding-block) var(--option-padding-inline);
37
+ border-radius: inherit;
27
38
  }
28
39
  :host(:focus-visible) {
29
40
  outline: none;
@@ -89,7 +100,7 @@ var styles = css`
89
100
  width: 1.25em;
90
101
  height: 1.25em;
91
102
  border: 2px solid var(--u-neutral-400);
92
- border-radius: 50%;
103
+ border-radius: var(--u-radius-circle);
93
104
  background-color: var(--u-bg-color);
94
105
  transition: border-color 0.2s ease, background-color 0.2s ease;
95
106
  }
@@ -113,7 +124,7 @@ var styles = css`
113
124
  display: block;
114
125
  width: 0.45em;
115
126
  height: 0.45em;
116
- border-radius: 50%;
127
+ border-radius: var(--u-radius-circle);
117
128
  background-color: var(--option-color-active);
118
129
  transform: scale(0);
119
130
  transition: transform 0.15s ease;
@@ -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 "./UPanel.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -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 { UFloatingElement } from "../UFloatingElement.js";
4
4
  import { arrayAttrConverter } from "../../utilities/converters.js";
5
5
  import { styles } from "./UPopover.styles.js";
@@ -171,7 +171,6 @@ var UPopover = class UPopover extends UFloatingElement {
171
171
  }
172
172
  this.addEventListener("focusin", this.handlePopoverFocusIn);
173
173
  this.addEventListener("focusout", this.handlePopoverFocusOut);
174
- break;
175
174
  }
176
175
  const dismissList = new Set(this.dismiss);
177
176
  if (dismissList.has("click")) document.addEventListener("click", this.handleDocumentClick);
@@ -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 "./UProgressBar.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property, state } from "lit/decorators.js";
@@ -49,7 +49,8 @@ var UProgressBar = class UProgressBar extends UElement {
49
49
 
50
50
  <div class="segments" part="segments" ?hidden=${!hasSegments}>
51
51
  ${Array.from({ length: Math.max(this.segments - 1, 0) }, (_, i) => {
52
- return html`<div class="segment-gap" style="left: ${(i + 1) / this.segments * 100}%; width: ${this.segmentGap}px;"></div>`;
52
+ const left = (i + 1) / this.segments * 100;
53
+ return html`<div class="segment-gap" style="left: ${left}%; width: ${this.segmentGap}px;"></div>`;
53
54
  })}
54
55
  </div>
55
56
 
@@ -3,27 +3,27 @@ import { css } from "lit";
3
3
  var styles = css`
4
4
  :host {
5
5
  --progress-bar-height: 0.5em;
6
- --progress-bar-color: var(--u-primary-color, var(--u-blue-600));
6
+ --progress-bar-color: var(--u-primary-color);
7
7
  --progress-bar-buffer-color: color-mix(in srgb, var(--progress-bar-color) 35%, var(--u-bg-color));
8
8
  --progress-bar-track-color: var(--u-neutral-200);
9
9
  }
10
10
 
11
11
  /* === Status Colors === */
12
12
  :host([status="success"]) {
13
- --progress-bar-color: var(--u-green-600);
14
- --progress-bar-buffer-color: var(--u-green-200);
13
+ --progress-bar-color: var(--u-success-color);
14
+ --progress-bar-buffer-color: var(--u-success-color-weakest);
15
15
  }
16
16
  :host([status="warning"]) {
17
- --progress-bar-color: var(--u-yellow-500);
18
- --progress-bar-buffer-color: var(--u-yellow-200);
17
+ --progress-bar-color: var(--u-warning-color-weak);
18
+ --progress-bar-buffer-color: var(--u-warning-color-weakest);
19
19
  }
20
20
  :host([status="error"]) {
21
- --progress-bar-color: var(--u-red-600);
22
- --progress-bar-buffer-color: var(--u-red-200);
21
+ --progress-bar-color: var(--u-danger-color);
22
+ --progress-bar-buffer-color: var(--u-danger-color-weakest);
23
23
  }
24
24
  :host([status="info"]) {
25
- --progress-bar-color: var(--u-blue-500);
26
- --progress-bar-buffer-color: var(--u-blue-200);
25
+ --progress-bar-color: var(--u-info-color-weak);
26
+ --progress-bar-buffer-color: var(--u-info-color-weakest);
27
27
  }
28
28
 
29
29
  :host {
@@ -37,7 +37,7 @@ var styles = css`
37
37
 
38
38
  /* === Rounded === */
39
39
  :host([rounded]) {
40
- border-radius: 9999px;
40
+ border-radius: var(--u-radius-pill);
41
41
  }
42
42
 
43
43
  /* === Indeterminate === */
@@ -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 "./UProgressRing.styles.js";
5
5
  import { html } from "lit";
6
6
  import { customElement, property, state } from "lit/decorators.js";
@@ -3,7 +3,7 @@ import { css } from "lit";
3
3
  var styles = css`
4
4
  :host {
5
5
  --progress-ring-size: 6em;
6
- --progress-ring-color: var(--u-primary-color, var(--u-blue-600));
6
+ --progress-ring-color: var(--u-primary-color);
7
7
  --progress-ring-track-width: 6;
8
8
  --progress-ring-track-color: var(--u-neutral-200);
9
9
  --progress-ring-buffer-color: color-mix(in srgb, var(--progress-ring-color) 35%, var(--u-bg-color));
@@ -11,20 +11,20 @@ var styles = css`
11
11
 
12
12
  /* === Status Colors === */
13
13
  :host([status="success"]) {
14
- --progress-ring-color: var(--u-green-600);
15
- --progress-ring-buffer-color: var(--u-green-200);
14
+ --progress-ring-color: var(--u-success-color);
15
+ --progress-ring-buffer-color: var(--u-success-color-weakest);
16
16
  }
17
17
  :host([status="warning"]) {
18
- --progress-ring-color: var(--u-yellow-500);
19
- --progress-ring-buffer-color: var(--u-yellow-200);
18
+ --progress-ring-color: var(--u-warning-color-weak);
19
+ --progress-ring-buffer-color: var(--u-warning-color-weakest);
20
20
  }
21
21
  :host([status="error"]) {
22
- --progress-ring-color: var(--u-red-600);
23
- --progress-ring-buffer-color: var(--u-red-200);
22
+ --progress-ring-color: var(--u-danger-color);
23
+ --progress-ring-buffer-color: var(--u-danger-color-weakest);
24
24
  }
25
25
  :host([status="info"]) {
26
- --progress-ring-color: var(--u-blue-500);
27
- --progress-ring-buffer-color: var(--u-blue-200);
26
+ --progress-ring-color: var(--u-info-color-weak);
27
+ --progress-ring-buffer-color: var(--u-info-color-weakest);
28
28
  }
29
29
 
30
30
  /* === Host === */
@@ -11,6 +11,9 @@ export type RadioOrientation = "vertical" | "horizontal";
11
11
  * @csspart field - u-field 요소
12
12
  * @csspart container - 옵션들을 감싸는 컨테이너
13
13
  *
14
+ * @cssprop --radio-color - 선택 상태의 기준색 (기본: --u-primary-color)
15
+ * @cssprop --radio-color-active - 선택 상태 active 톤 (기본: --radio-color 85% + black)
16
+ *
14
17
  * @event change - 사용자 상호작용(옵션 클릭·키보드)으로 선택 값이 변경될 때 발생.
15
18
  * 네이티브 라디오와 동일하게 프로그램적 value 세팅·옵션 등록으로는 발화하지 않는다.
16
19
  */
@@ -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 { Locale } from "../../utilities/Locale.js";
5
5
  import "../field/UField.js";
@@ -59,7 +59,6 @@ var URadio = class URadio extends UFormControlElement {
59
59
  case "End":
60
60
  e.preventDefault();
61
61
  options[options.length - 1].focus();
62
- break;
63
62
  }
64
63
  };
65
64
  }
@@ -2,7 +2,7 @@ import { css } from "lit";
2
2
  //#region src/components/radio/URadio.styles.ts
3
3
  var styles = css`
4
4
  :host {
5
- --radio-color: var(--u-primary-color, var(--u-blue-600));
5
+ --radio-color: var(--u-primary-color);
6
6
  --radio-color-active: color-mix(in srgb, var(--radio-color) 85%, black);
7
7
  }
8
8
 
@@ -38,7 +38,7 @@ var styles = css`
38
38
  border-radius: 0.35em;
39
39
  }
40
40
  :host([invalid]) .container {
41
- border-color: var(--u-red-600);
41
+ border-color: var(--u-danger-color);
42
42
  }
43
43
 
44
44
  /* Type: default */
@@ -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/rating/URating.styles.ts
3
3
  var styles = css`
4
4
  :host {
5
- --rating-symbol-color: var(--u-yellow-500);
5
+ --rating-symbol-color: var(--u-warning-color-weak);
6
6
  --rating-symbol-off-color: var(--u-neutral-300);
7
7
  }
8
8
 
@@ -32,7 +32,7 @@ var styles = css`
32
32
  transition: color 0.15s ease, transform 0.15s ease;
33
33
  }
34
34
  .symbol:focus-visible {
35
- outline: 2px solid var(--u-blue-500);
35
+ outline: 2px solid var(--u-primary-color-weak);
36
36
  outline-offset: 2px;
37
37
  }
38
38
  :host(:not([disabled]):not([readonly])) .symbol:hover {