@iyulab/components 1.0.10 → 1.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/_virtual/{_@oxc-project_runtime@0.133.0 → _@oxc-project_runtime@0.137.0}/helpers/esm/decorate.js +2 -2
  3. package/dist/_virtual/{_@oxc-project_runtime@0.133.0 → _@oxc-project_runtime@0.137.0}/helpers/esm/decorateMetadata.js +2 -2
  4. package/dist/components/UFloatingElement.js +2 -2
  5. package/dist/components/UFormControlElement.d.ts +2 -0
  6. package/dist/components/UFormControlElement.js +3 -2
  7. package/dist/components/UOverlayElement.js +2 -2
  8. package/dist/components/alert/UAlert.js +2 -2
  9. package/dist/components/alert/UAlert.styles.js +7 -1
  10. package/dist/components/avatar/UAvatar.js +2 -2
  11. package/dist/components/badge/UBadge.js +2 -2
  12. package/dist/components/breadcrumb/UBreadcrumb.js +1 -1
  13. package/dist/components/breadcrumb-item/UBreadcrumbItem.js +2 -2
  14. package/dist/components/button/UButton.js +2 -2
  15. package/dist/components/button-group/UButtonGroup.js +2 -2
  16. package/dist/components/card/UCard.js +2 -2
  17. package/dist/components/carousel/UCarousel.js +2 -2
  18. package/dist/components/checkbox/UCheckbox.js +2 -2
  19. package/dist/components/chip/UChip.js +2 -2
  20. package/dist/components/dialog/UDialog.js +2 -2
  21. package/dist/components/divider/UDivider.js +2 -2
  22. package/dist/components/drawer/UDrawer.d.ts +4 -0
  23. package/dist/components/drawer/UDrawer.js +2 -2
  24. package/dist/components/drawer/UDrawer.styles.js +18 -2
  25. package/dist/components/field/UField.js +2 -2
  26. package/dist/components/form/UForm.js +2 -2
  27. package/dist/components/icon/UIcon.js +2 -2
  28. package/dist/components/icon-button/UIconButton.js +2 -2
  29. package/dist/components/input/UInput.js +2 -2
  30. package/dist/components/menu/UMenu.js +2 -2
  31. package/dist/components/menu-item/UMenuItem.js +2 -2
  32. package/dist/components/option/UOption.js +2 -2
  33. package/dist/components/panel/UPanel.js +2 -2
  34. package/dist/components/popover/UPopover.js +2 -2
  35. package/dist/components/progress-bar/UProgressBar.js +2 -2
  36. package/dist/components/progress-ring/UProgressRing.js +2 -2
  37. package/dist/components/radio/URadio.js +2 -2
  38. package/dist/components/rating/URating.js +8 -6
  39. package/dist/components/select/USelect.js +7 -5
  40. package/dist/components/skeleton/USkeleton.js +2 -2
  41. package/dist/components/slider/USlider.js +7 -5
  42. package/dist/components/spinner/USpinner.js +2 -2
  43. package/dist/components/split-panel/USplitPanel.js +2 -2
  44. package/dist/components/switch/USwitch.js +2 -2
  45. package/dist/components/tab/UTab.js +2 -2
  46. package/dist/components/tab-panel/UTabPanel.js +2 -2
  47. package/dist/components/tag/UTag.js +2 -2
  48. package/dist/components/textarea/UTextarea.js +2 -2
  49. package/dist/components/tooltip/UTooltip.js +2 -2
  50. package/dist/components/tree/UTree.js +2 -2
  51. package/dist/components/tree-item/UTreeItem.js +2 -2
  52. package/dist/core/locale.d.ts +69 -0
  53. package/dist/core/locale.js +85 -0
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.js +2 -1
  56. package/dist/utilities/elements.js +1 -1
  57. package/package.json +6 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.1] - 2026-06-26
4
+
5
+ ### Fixed
6
+ - `UAlert`: Moved padding from `:host` to the Shadow DOM `.container`. A consumer-side light-DOM reset (e.g. Tailwind preflight's `*{padding:0}`) targets the host element directly and overrode the `:host` padding, collapsing toast/alert spacing to zero. Padding on a Shadow DOM inner element is immune to outer-tree resets.
7
+ - `UDrawer`: `.panel` now honors `--drawer-size`. Previously the panel never referenced the variable, so setting `--drawer-size` had no effect and the panel sized to its intrinsic content width. Slide-axis size is now `width: var(--drawer-size, 28rem)` (left/right) / `height: var(--drawer-size, 16rem)` (top/bottom), with `max-width`/`max-height: 100%` for narrow viewports.
8
+
9
+ ### Added
10
+ - `UDrawer`: Documented `--drawer-size` as a public CSS custom property (`@cssproperty`).
11
+
12
+ ## [1.1.0] - 2026-06-22
13
+
14
+ ### Added
15
+ - Validation messages: Introduced a locale registry (English default + `registerLocale`) so consumers can register and switch validation-message locales.
16
+
17
+ ## [1.0.10] - 2026-06-09
18
+
19
+ ### Fixed
20
+ - `UInput`: Fixed broken IME composition input and prevented duplicate `input` event dispatch.
21
+
22
+ ## [1.0.9] - 2026-05-27
23
+
24
+ ### Changed
25
+ - `Toast`: Default duration changed from 3000ms to 4000ms.
26
+
27
+ ## [1.0.8] - 2026-05-21
28
+
29
+ ### Added
30
+ - `vite-plugin-react-wrapper`: Added an `exclude` option.
31
+
32
+ ## [1.0.7] - 2026-05-21
33
+
34
+ ### Changed
35
+ - `UAlert`: Increased padding (8px→12px vertical, 12px→16px horizontal) to improve toast spacing.
36
+
3
37
  ## [1.0.6] - 2026-05-15
4
38
 
5
39
  ### Changed
@@ -1,4 +1,4 @@
1
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorate.js
1
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
2
2
  function __decorate(decorators, target, key, desc) {
3
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -6,4 +6,4 @@ function __decorate(decorators, target, key, desc) {
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  }
8
8
  //#endregion
9
- export { __decorate };
9
+ export { __decorate as default };
@@ -1,6 +1,6 @@
1
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorateMetadata.js
1
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateMetadata.js
2
2
  function __decorateMetadata(k, v) {
3
3
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
4
4
  }
5
5
  //#endregion
6
- export { __decorateMetadata };
6
+ export { __decorateMetadata as default };
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "./UElement.js";
2
- import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { getParentElement, querySelectorAllWithin } from "../utilities/elements.js";
5
5
  import { styles } from "./UFloatingElement.styles.js";
6
6
  import { property, state } from "lit/decorators.js";
@@ -23,6 +23,8 @@ export declare abstract class UFormControlElement<T> extends UElement {
23
23
  description?: string;
24
24
  /** 커스텀 유효성 검증 메시지 */
25
25
  validationMessage?: string;
26
+ /** chrome 문자열(검증 메시지 등)에 사용할 로케일 태그 (예: 'ko-KR'). 미지정 시 전역 기본/문서 언어를 따른다. */
27
+ locale?: string;
26
28
  /** 폼 제출 시 사용되는 이름 */
27
29
  name?: string;
28
30
  /** 폼 제출 시 사용되는 값 */
@@ -1,7 +1,7 @@
1
1
  import { UElement } from "./UElement.js";
2
2
  import { styles } from "./UFormControlElement.styles.js";
3
- import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
4
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
3
+ import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
4
+ import __decorate from "../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
5
5
  import { property } from "lit/decorators.js";
6
6
  //#region src/components/UFormControlElement.ts
7
7
  /**
@@ -62,6 +62,7 @@ __decorate([property({ type: Boolean }), __decorateMetadata("design:type", Boole
62
62
  __decorate([property({ type: String }), __decorateMetadata("design:type", String)], UFormControlElement.prototype, "label", void 0);
63
63
  __decorate([property({ type: String }), __decorateMetadata("design:type", String)], UFormControlElement.prototype, "description", void 0);
64
64
  __decorate([property({ type: String }), __decorateMetadata("design:type", String)], UFormControlElement.prototype, "validationMessage", void 0);
65
+ __decorate([property({ type: String }), __decorateMetadata("design:type", String)], UFormControlElement.prototype, "locale", void 0);
65
66
  __decorate([property({ type: String }), __decorateMetadata("design:type", String)], UFormControlElement.prototype, "name", void 0);
66
67
  __decorate([property({ type: Object }), __decorateMetadata("design:type", Object)], UFormControlElement.prototype, "value", void 0);
67
68
  //#endregion
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "./UElement.js";
2
- import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { OverlayManager } from "../utilities/OverlayManager.js";
5
5
  import { arrayAttrConverter } from "../utilities/converters.js";
6
6
  import { styles } from "./UOverlayElement.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import "../icon/UIcon.js";
5
5
  import "../button/UButton.js";
6
6
  import { styles } from "./UAlert.styles.js";
@@ -39,7 +39,12 @@ var styles = css`
39
39
  min-width: 200px;
40
40
  max-width: 100%;
41
41
  max-height: 50vh;
42
- padding: 12px 16px;
42
+ /*
43
+ * 내부 여백은 .container 에 둔다(:host 아님).
44
+ * 소비앱의 light-DOM 리셋(예: Tailwind preflight 의 *{padding:0})은
45
+ * 호스트 엘리먼트의 :host padding 을 덮어버리므로, Shadow DOM 내부
46
+ * 엘리먼트(.container)에 패딩을 두어 외부 리셋으로부터 보호한다.
47
+ */
43
48
  border-radius: 8px;
44
49
  box-shadow: 0 4px 12px var(--u-shadow-color-normal);
45
50
 
@@ -87,6 +92,7 @@ var styles = css`
87
92
  display: flex;
88
93
  flex-direction: column;
89
94
  overflow: hidden;
95
+ padding: 12px 16px;
90
96
  }
91
97
 
92
98
  .header {
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UAvatar.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
6
6
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UBadge.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
6
6
  import { html, nothing } from "lit";
@@ -1,5 +1,5 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
3
  import "../icon/UIcon.js";
4
4
  import { styles } from "./UBreadcrumb.styles.js";
5
5
  import { customElement } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UBreadcrumbItem.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
6
6
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import "../spinner/USpinner.js";
5
5
  import { styles } from "./UButton.styles.js";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.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";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UCard.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
6
6
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import "../icon/UIcon.js";
5
5
  import "../button/UButton.js";
6
6
  import { styles } from "./UCarousel.styles.js";
@@ -1,5 +1,5 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import "../icon/UIcon.js";
5
5
  import { styles } from "./UCheckbox.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import "../icon/UIcon.js";
5
5
  import "../button/UButton.js";
6
6
  import "../tooltip/UTooltip.js";
@@ -1,5 +1,5 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
3
  import "../icon/UIcon.js";
4
4
  import { UOverlayElement } from "../UOverlayElement.js";
5
5
  import "../button/UButton.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UDivider.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
6
6
  import { html } from "lit";
@@ -12,6 +12,10 @@ export type DrawerPlacement = 'left' | 'right' | 'top' | 'bottom';
12
12
  * @csspart header - 헤더 영역
13
13
  * @csspart body - 본문 영역
14
14
  * @csspart close-btn - 닫기 버튼
15
+ *
16
+ * @cssproperty [--drawer-size=28rem] - 드로어 패널의 슬라이드 축 방향 크기.
17
+ * 좌우(left/right) placement는 너비, 상하(top/bottom) placement는 높이로 적용된다(상하 기본 16rem).
18
+ * 화면이 좁으면 max-width/max-height:100%로 자동 축소된다.
15
19
  */
16
20
  export declare class UDrawer extends UOverlayElement {
17
21
  static styles: CSSResultGroup;
@@ -1,5 +1,5 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
3
  import "../icon/UIcon.js";
4
4
  import { UOverlayElement } from "../UOverlayElement.js";
5
5
  import "../button/UButton.js";
@@ -7,19 +7,35 @@ var styles = css`
7
7
  :host([placement="top"]) { flex-direction: column; justify-content: flex-start; }
8
8
  :host([placement="bottom"]) { flex-direction: column; justify-content: flex-end; }
9
9
 
10
- /* 좌우: 높이 100% */
10
+ /*
11
+ * 패널 크기 — 슬라이드 축 방향 크기를 --drawer-size 로 제어한다.
12
+ * 좌우(left/right): 너비 = --drawer-size (기본 28rem), 높이 100%
13
+ * 상하(top/bottom): 높이 = --drawer-size (기본 16rem), 너비 100%
14
+ * 호스트 앱이 style="--drawer-size: 600px" 로 오버라이드한다.
15
+ */
16
+ /* 좌우: 높이 100%, 너비 = --drawer-size */
11
17
  :host([placement="left"]) .panel,
12
18
  :host([placement="right"]) .panel {
13
19
  height: 100%;
20
+ width: var(--drawer-size, 28rem);
14
21
  max-width: 100%;
15
22
  }
16
- /* 상하: 너비 100% */
23
+ /* 상하: 너비 100%, 높이 = --drawer-size */
17
24
  :host([placement="top"]) .panel,
18
25
  :host([placement="bottom"]) .panel {
19
26
  width: 100%;
27
+ height: var(--drawer-size, 16rem);
20
28
  max-height: 100%;
21
29
  }
22
30
 
31
+ /* 모바일: 좌우 드로어는 전체 너비로 펼쳐 입력 공간을 확보한다. */
32
+ @media (max-width: 640px) {
33
+ :host([placement="left"]) .panel,
34
+ :host([placement="right"]) .panel {
35
+ width: 100%;
36
+ }
37
+ }
38
+
23
39
  /* placement별 border */
24
40
  :host([placement="left"]) .panel { border-right: 1px solid var(--u-border-color); }
25
41
  :host([placement="right"]) .panel { border-left: 1px solid var(--u-border-color); }
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UField.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
6
6
  import { html, nothing } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.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.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.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 { customElement, property } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import "../icon/UIcon.js";
5
5
  import "../button/UButton.js";
6
6
  import "../tooltip/UTooltip.js";
@@ -1,5 +1,5 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import "../icon/UIcon.js";
5
5
  import "../spinner/USpinner.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.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 { customElement, property } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.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";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import "../icon/UIcon.js";
5
5
  import { styles } from "./UOption.styles.js";
6
6
  import { customElement, property } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UPanel.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
6
6
  import { html } from "lit";
@@ -1,5 +1,5 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.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";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UProgressBar.styles.js";
5
5
  import { customElement, property, state } from "lit/decorators.js";
6
6
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UProgressRing.styles.js";
5
5
  import { customElement, property, state } from "lit/decorators.js";
6
6
  import { html } from "lit";
@@ -1,5 +1,5 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import "../field/UField.js";
5
5
  import { UOption } from "../option/UOption.js";
@@ -1,5 +1,6 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import { formatTemplate, getLocaleStrings, resolveLocale } from "../../core/locale.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
4
  import { UFormControlElement } from "../UFormControlElement.js";
4
5
  import "../icon/UIcon.js";
5
6
  import "../field/UField.js";
@@ -153,23 +154,24 @@ var URating = class URating extends UFormControlElement {
153
154
  }
154
155
  getValidity() {
155
156
  const v = this.value || 0;
157
+ const s = getLocaleStrings(resolveLocale(this.locale));
156
158
  if (this.required && !v) return {
157
159
  flags: { valueMissing: true },
158
- message: "This field is required"
160
+ message: s.required
159
161
  };
160
162
  if (v && v < this.min) return {
161
163
  flags: { rangeUnderflow: true },
162
- message: `Value must be at least ${this.min}`
164
+ message: formatTemplate(s.minValue, { min: this.min })
163
165
  };
164
166
  if (v && v > this.max) return {
165
167
  flags: { rangeOverflow: true },
166
- message: `Value must be no more than ${this.max}`
168
+ message: formatTemplate(s.maxValue, { max: this.max })
167
169
  };
168
170
  if (v && this.precision < 1) {
169
171
  const remainder = Math.abs(v % this.precision);
170
172
  if (remainder > .001 && Math.abs(remainder - this.precision) > .001) return {
171
173
  flags: { stepMismatch: true },
172
- message: `Value must be a multiple of ${this.precision}`
174
+ message: formatTemplate(s.stepMismatch, { step: this.precision })
173
175
  };
174
176
  }
175
177
  return {
@@ -1,5 +1,6 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import { formatTemplate, getLocaleStrings, resolveLocale } from "../../core/locale.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
4
  import { UFormControlElement } from "../UFormControlElement.js";
4
5
  import "../icon/UIcon.js";
5
6
  import "../spinner/USpinner.js";
@@ -261,17 +262,18 @@ var USelect = class USelect extends UFormControlElement {
261
262
  }));
262
263
  }
263
264
  getValidity(values) {
265
+ const s = getLocaleStrings(resolveLocale(this.locale));
264
266
  if (this.required && !values.length) return {
265
267
  flags: { valueMissing: true },
266
- message: "This field is required"
268
+ message: s.required
267
269
  };
268
270
  if (this.multiple && this.minCount != null && values.length > 0 && values.length < this.minCount) return {
269
271
  flags: { rangeUnderflow: true },
270
- message: `Please select at least ${this.minCount} items`
272
+ message: formatTemplate(s.minCount, { min: this.minCount })
271
273
  };
272
274
  if (this.multiple && this.maxCount != null && values.length > this.maxCount) return {
273
275
  flags: { rangeOverflow: true },
274
- message: `Please select no more than ${this.maxCount} items`
276
+ message: formatTemplate(s.maxCount, { max: this.maxCount })
275
277
  };
276
278
  return {
277
279
  flags: {},
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./USkeleton.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
6
6
  import { html } from "lit";
@@ -1,5 +1,6 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import { formatTemplate, getLocaleStrings, resolveLocale } from "../../core/locale.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
4
  import { UFormControlElement } from "../UFormControlElement.js";
4
5
  import "../tooltip/UTooltip.js";
5
6
  import "../field/UField.js";
@@ -194,17 +195,18 @@ var USlider = class USlider extends UFormControlElement {
194
195
  }
195
196
  getValidity() {
196
197
  const v = this.valueAsNumber;
198
+ const s = getLocaleStrings(resolveLocale(this.locale));
197
199
  if (this.required && !v) return {
198
200
  flags: { valueMissing: true },
199
- message: "This field is required"
201
+ message: s.required
200
202
  };
201
203
  if (v < this.min) return {
202
204
  flags: { rangeUnderflow: true },
203
- message: `Value must be at least ${this.min}`
205
+ message: formatTemplate(s.minValue, { min: this.min })
204
206
  };
205
207
  if (v > this.max) return {
206
208
  flags: { rangeOverflow: true },
207
- message: `Value must be at most ${this.max}`
209
+ message: formatTemplate(s.maxValue, { max: this.max })
208
210
  };
209
211
  return {
210
212
  flags: {},
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./USpinner.styles.js";
5
5
  import { customElement, property, state } from "lit/decorators.js";
6
6
  import { html } from "lit";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { arrayAttrConverter } from "../../utilities/converters.js";
5
5
  import { styles } from "./USplitPanel.styles.js";
6
6
  import { customElement, property, query } from "lit/decorators.js";
@@ -1,5 +1,5 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import { styles } from "./USwitch.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import "../icon/UIcon.js";
5
5
  import "../button/UButton.js";
6
6
  import { styles } from "./UTab.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { UPanel } from "../panel/UPanel.js";
5
5
  import { UTab } from "../tab/UTab.js";
6
6
  import { styles } from "./UTabPanel.styles.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UTag.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
6
6
  import { html } from "lit";
@@ -1,5 +1,5 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
4
  import "../field/UField.js";
5
5
  import { styles } from "./UTextarea.styles.js";
@@ -1,5 +1,5 @@
1
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
2
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
3
3
  import { UFloatingElement } from "../UFloatingElement.js";
4
4
  import { styles } from "./UTooltip.styles.js";
5
5
  import { customElement, property } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import { UTreeItem } from "../tree-item/UTreeItem.js";
5
5
  import { styles } from "./UTree.styles.js";
6
6
  import { customElement, property, state } from "lit/decorators.js";
@@ -1,6 +1,6 @@
1
1
  import { UElement } from "../UElement.js";
2
- import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorateMetadata.js";
3
- import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.137.0/helpers/esm/decorate.js";
4
4
  import "../icon/UIcon.js";
5
5
  import "../spinner/USpinner.js";
6
6
  import { styles } from "./UTreeItem.styles.js";
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @iyulab/components 의 경량 로케일 레지스트리.
3
+ *
4
+ * 범위: 라이브러리가 스스로 생성하는 chrome 문자열(검증 메시지 등)만 대상.
5
+ * 일반 i18n 프레임워크가 아니다. 앱 콘텐츠 번역은 consumer 의 i18n 계층(예:
6
+ * modern-app 의 i18next)이 담당한다.
7
+ *
8
+ * 영어가 내장 기본값이며, 한국어 등 도메인 로케일은 consumer 가 등록한다:
9
+ * registerLocale('ko', { required: '필수 항목입니다.', ... });
10
+ * setDefaultLocale('ko');
11
+ *
12
+ * 모노레포 로케일 표준(packages/u-widgets/src/core/locale.ts)과 동일한 계약을 따른다.
13
+ */
14
+ export interface UComponentsLocaleStrings {
15
+ required: string;
16
+ minValue: string;
17
+ maxValue: string;
18
+ stepMismatch: string;
19
+ minCount: string;
20
+ maxCount: string;
21
+ }
22
+ /**
23
+ * 로케일을 등록한다. 부분 등록은 영어 기본값에 병합된다.
24
+ */
25
+ export declare function registerLocale(lang: string, strings: Partial<UComponentsLocaleStrings>): void;
26
+ /**
27
+ * 주어진 언어 태그에 대한 로케일 문자열을 해석한다.
28
+ *
29
+ * 해석 순서:
30
+ * 1. 정확히 일치 (예: 'ko-KR')
31
+ * 2. 기반 언어 (예: 'ko')
32
+ * 3. 영어 폴백
33
+ */
34
+ export declare function getLocaleStrings(lang?: string): UComponentsLocaleStrings;
35
+ /**
36
+ * 템플릿 문자열의 {key} 플레이스홀더를 치환한다.
37
+ */
38
+ export declare function formatTemplate(template: string, params: Record<string, string | number>): string;
39
+ /**
40
+ * 영어 기본값을 반환한다 (테스트/참조용).
41
+ */
42
+ export declare function getDefaultLocale(): UComponentsLocaleStrings;
43
+ /**
44
+ * 모든 컴포넌트에 적용되는 전역 기본 로케일을 설정한다.
45
+ *
46
+ * 해석 순서(우선순위 높은 순):
47
+ * 1. 컴포넌트별 `locale` 속성/프로퍼티
48
+ * 2. setDefaultLocale() 값
49
+ * 3. document.documentElement.lang (브라우저)
50
+ * 4. 영어 폴백
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * import { setDefaultLocale } from '@iyulab/components';
55
+ * setDefaultLocale('ko-KR');
56
+ * ```
57
+ */
58
+ export declare function setDefaultLocale(lang: string | undefined): void;
59
+ /**
60
+ * setDefaultLocale() 로 설정된 전역 기본 로케일을 반환한다.
61
+ * 설정되지 않았으면 undefined 를 반환한다.
62
+ */
63
+ export declare function getEffectiveLocale(): string | undefined;
64
+ /**
65
+ * 컴포넌트가 사용할 로케일을 해석한다.
66
+ *
67
+ * 우선순위: widgetLocale > setDefaultLocale() > document.lang > undefined
68
+ */
69
+ export declare function resolveLocale(widgetLocale?: string | null): string | undefined;
@@ -0,0 +1,85 @@
1
+ //#region src/core/locale.ts
2
+ var EN = {
3
+ required: "This field is required",
4
+ minValue: "Value must be at least {min}",
5
+ maxValue: "Value must be at most {max}",
6
+ stepMismatch: "Value must be a multiple of {step}",
7
+ minCount: "Please select at least {min} items",
8
+ maxCount: "Please select no more than {max} items"
9
+ };
10
+ var registry = /* @__PURE__ */ new Map();
11
+ /**
12
+ * 로케일을 등록한다. 부분 등록은 영어 기본값에 병합된다.
13
+ */
14
+ function registerLocale(lang, strings) {
15
+ registry.set(lang.toLowerCase(), {
16
+ ...EN,
17
+ ...strings
18
+ });
19
+ }
20
+ /**
21
+ * 주어진 언어 태그에 대한 로케일 문자열을 해석한다.
22
+ *
23
+ * 해석 순서:
24
+ * 1. 정확히 일치 (예: 'ko-KR')
25
+ * 2. 기반 언어 (예: 'ko')
26
+ * 3. 영어 폴백
27
+ */
28
+ function getLocaleStrings(lang) {
29
+ if (!lang) return EN;
30
+ const key = lang.toLowerCase();
31
+ if (registry.has(key)) return registry.get(key);
32
+ const base = key.split("-")[0];
33
+ if (base !== key && registry.has(base)) return registry.get(base);
34
+ return EN;
35
+ }
36
+ /**
37
+ * 템플릿 문자열의 {key} 플레이스홀더를 치환한다.
38
+ */
39
+ function formatTemplate(template, params) {
40
+ return template.replace(/\{(\w+)\}/g, (_, key) => params[key] != null ? String(params[key]) : `{${key}}`);
41
+ }
42
+ /**
43
+ * 영어 기본값을 반환한다 (테스트/참조용).
44
+ */
45
+ function getDefaultLocale() {
46
+ return { ...EN };
47
+ }
48
+ var _defaultLocale;
49
+ /**
50
+ * 모든 컴포넌트에 적용되는 전역 기본 로케일을 설정한다.
51
+ *
52
+ * 해석 순서(우선순위 높은 순):
53
+ * 1. 컴포넌트별 `locale` 속성/프로퍼티
54
+ * 2. setDefaultLocale() 값
55
+ * 3. document.documentElement.lang (브라우저)
56
+ * 4. 영어 폴백
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * import { setDefaultLocale } from '@iyulab/components';
61
+ * setDefaultLocale('ko-KR');
62
+ * ```
63
+ */
64
+ function setDefaultLocale(lang) {
65
+ _defaultLocale = lang;
66
+ }
67
+ /**
68
+ * setDefaultLocale() 로 설정된 전역 기본 로케일을 반환한다.
69
+ * 설정되지 않았으면 undefined 를 반환한다.
70
+ */
71
+ function getEffectiveLocale() {
72
+ return _defaultLocale;
73
+ }
74
+ /**
75
+ * 컴포넌트가 사용할 로케일을 해석한다.
76
+ *
77
+ * 우선순위: widgetLocale > setDefaultLocale() > document.lang > undefined
78
+ */
79
+ function resolveLocale(widgetLocale) {
80
+ if (widgetLocale) return widgetLocale;
81
+ if (_defaultLocale) return _defaultLocale;
82
+ if (typeof document !== "undefined" && document.documentElement?.lang) return document.documentElement.lang;
83
+ }
84
+ //#endregion
85
+ export { formatTemplate, getDefaultLocale, getEffectiveLocale, getLocaleStrings, registerLocale, resolveLocale, setDefaultLocale };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './core/locale.js';
1
2
  export * from './components/UFormControlElement.js';
2
3
  export * from './components/UDataElement.js';
3
4
  export * from './components/UElement.js';
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { formatTemplate, getDefaultLocale, getEffectiveLocale, getLocaleStrings, registerLocale, resolveLocale, setDefaultLocale } from "./core/locale.js";
1
2
  import { UElement } from "./components/UElement.js";
2
3
  import { UFormControlElement } from "./components/UFormControlElement.js";
3
4
  import { IconCache, IconRegistry, getDefaultBaseUrl, setDefaultBaseUrl } from "./utilities/icons.js";
@@ -53,4 +54,4 @@ import { BrowserStorage } from "./utilities/BrowserStorage.js";
53
54
  import { Dialog } from "./utilities/Dialog.js";
54
55
  import { Theme } from "./utilities/Theme.js";
55
56
  import { Toast } from "./utilities/Toast.js";
56
- export { BrowserStorage, Dialog, IconCache, IconRegistry, OverlayManager, Theme, Toast, UAlert, UAvatar, UBadge, UBreadcrumb, UBreadcrumbItem, UButton, UButtonGroup, UCard, UCarousel, UCheckbox, UChip, UDataElement, UDialog, UDivider, UDrawer, UElement, UField, UFloatingElement, UForm, UFormControlElement, UIcon, UIconButton, UInput, UMenu, UMenuItem, UOption, UOverlayElement, UPanel, UPopover, UProgressBar, UProgressRing, URadio, URating, USelect, USkeleton, USlider, USpinner, USplitPanel, USwitch, UTab, UTabPanel, UTag, UTextarea, UTooltip, UTree, UTreeItem, arrayAttrConverter, booleanAttrConverter, buildElementHTML, dateAttrConverter, escapeHtmlAttr, escapeHtmlHref, escapeHtmlText, getDefaultBaseUrl, getParentElement, jsonAttrConverter, querySelectorAllWithin, querySelectorWithin, setDefaultBaseUrl, stripZeroWidth, urlAttrConverter };
57
+ export { BrowserStorage, Dialog, IconCache, IconRegistry, OverlayManager, Theme, Toast, UAlert, UAvatar, UBadge, UBreadcrumb, UBreadcrumbItem, UButton, UButtonGroup, UCard, UCarousel, UCheckbox, UChip, UDataElement, UDialog, UDivider, UDrawer, UElement, UField, UFloatingElement, UForm, UFormControlElement, UIcon, UIconButton, UInput, UMenu, UMenuItem, UOption, UOverlayElement, UPanel, UPopover, UProgressBar, UProgressRing, URadio, URating, USelect, USkeleton, USlider, USpinner, USplitPanel, USwitch, UTab, UTabPanel, UTag, UTextarea, UTooltip, UTree, UTreeItem, arrayAttrConverter, booleanAttrConverter, buildElementHTML, dateAttrConverter, escapeHtmlAttr, escapeHtmlHref, escapeHtmlText, formatTemplate, getDefaultBaseUrl, getDefaultLocale, getEffectiveLocale, getLocaleStrings, getParentElement, jsonAttrConverter, querySelectorAllWithin, querySelectorWithin, registerLocale, resolveLocale, setDefaultBaseUrl, setDefaultLocale, stripZeroWidth, urlAttrConverter };
@@ -58,7 +58,7 @@ function querySelectorAllWithin(element, selectors) {
58
58
  * // → '<u-ref-tag href="https://example.com" disabled>Click</u-ref-tag>'
59
59
  */
60
60
  function buildElementHTML(tag, attrs = {}, content = "") {
61
- const URL_ATTR = new Set(["href", "src"]);
61
+ const URL_ATTR = /* @__PURE__ */ new Set(["href", "src"]);
62
62
  const attrStr = Object.entries(attrs).flatMap(([k, v]) => {
63
63
  if (v === void 0 || v == null || v === false) return [];
64
64
  if (v === true) return [k];
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.0.10",
4
+ "version": "1.1.1",
5
5
  "keywords": [
6
6
  "iyulab",
7
7
  "components",
@@ -39,7 +39,9 @@
39
39
  "./plugins/*": "./plugins/*"
40
40
  },
41
41
  "scripts": {
42
- "test": "vite --force",
42
+ "dev": "vite --force",
43
+ "test": "vitest run",
44
+ "test:watch": "vitest",
43
45
  "build:plugins": "tsc -p plugins/tsconfig.json",
44
46
  "build": "eslint && vite build && npm run build:plugins"
45
47
  },
@@ -72,6 +74,7 @@
72
74
  "typescript-eslint": "^8.59.3",
73
75
  "vite": "^8.0.13",
74
76
  "vite-plugin-dts": "^5.0.0",
75
- "vite-plugin-static-copy": "^4.1.0"
77
+ "vite-plugin-static-copy": "^4.1.0",
78
+ "vitest": "^4.1.8"
76
79
  }
77
80
  }