@iyulab/components 1.3.4 → 1.4.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 (126) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/_virtual/_glob-assets_raw/dark.css.e8ac080d.js +1 -1
  3. package/dist/assets/locales/ar.json.js +23 -0
  4. package/dist/assets/locales/de.json.js +23 -0
  5. package/dist/assets/locales/en.json.js +23 -0
  6. package/dist/assets/locales/es.json.js +23 -0
  7. package/dist/assets/locales/fr.json.js +23 -0
  8. package/dist/assets/locales/id.json.js +23 -0
  9. package/dist/assets/locales/ja.json.js +23 -0
  10. package/dist/assets/locales/ko.json.js +23 -0
  11. package/dist/assets/locales/pt-BR.json.js +23 -0
  12. package/dist/assets/locales/ru.json.js +23 -0
  13. package/dist/assets/locales/th.json.js +23 -0
  14. package/dist/assets/locales/vi.json.js +23 -0
  15. package/dist/assets/locales/zh-CN.json.js +23 -0
  16. package/dist/assets/locales/zh-TW.json.js +23 -0
  17. package/dist/components/UFloatingElement.js +13 -4
  18. package/dist/components/UFormControlElement.d.ts +38 -8
  19. package/dist/components/UFormControlElement.js +61 -6
  20. package/dist/components/UOverlayElement.d.ts +4 -0
  21. package/dist/components/UOverlayElement.js +14 -4
  22. package/dist/components/alert/UAlert.js +10 -4
  23. package/dist/components/alert/UAlert.styles.js +0 -6
  24. package/dist/components/avatar/UAvatar.js +1 -1
  25. package/dist/components/badge/UBadge.d.ts +1 -1
  26. package/dist/components/badge/UBadge.js +2 -2
  27. package/dist/components/badge/UBadge.styles.js +1 -1
  28. package/dist/components/breadcrumb/UBreadcrumb.js +1 -1
  29. package/dist/components/breadcrumb-item/UBreadcrumbItem.js +1 -1
  30. package/dist/components/button/UButton.d.ts +6 -11
  31. package/dist/components/button/UButton.js +1 -1
  32. package/dist/components/button/UButton.styles.js +50 -51
  33. package/dist/components/button-group/UButtonGroup.js +1 -1
  34. package/dist/components/card/UCard.js +1 -1
  35. package/dist/components/carousel/UCarousel.js +2 -2
  36. package/dist/components/checkbox/UCheckbox.d.ts +4 -1
  37. package/dist/components/checkbox/UCheckbox.js +11 -8
  38. package/dist/components/checkbox/UCheckbox.styles.js +12 -7
  39. package/dist/components/chip/UChip.js +6 -3
  40. package/dist/components/dialog/UDialog.js +2 -2
  41. package/dist/components/divider/UDivider.js +1 -1
  42. package/dist/components/drawer/UDrawer.js +2 -2
  43. package/dist/components/drawer/UDrawer.styles.js +0 -6
  44. package/dist/components/field/UField.js +1 -1
  45. package/dist/components/form/UForm.js +1 -1
  46. package/dist/components/icon/UIcon.js +1 -1
  47. package/dist/components/icon-button/UIconButton.d.ts +0 -1
  48. package/dist/components/icon-button/UIconButton.js +2 -7
  49. package/dist/components/input/UInput.d.ts +2 -3
  50. package/dist/components/input/UInput.js +37 -9
  51. package/dist/components/input/UInput.styles.js +1 -4
  52. package/dist/components/menu/UMenu.js +1 -1
  53. package/dist/components/menu-item/UMenuItem.js +1 -1
  54. package/dist/components/menu-item/UMenuItem.styles.js +4 -3
  55. package/dist/components/option/UOption.d.ts +4 -1
  56. package/dist/components/option/UOption.js +10 -4
  57. package/dist/components/option/UOption.styles.js +5 -4
  58. package/dist/components/panel/UPanel.js +1 -1
  59. package/dist/components/popover/UPopover.js +1 -1
  60. package/dist/components/progress-bar/UProgressBar.js +1 -1
  61. package/dist/components/progress-bar/UProgressBar.styles.js +2 -2
  62. package/dist/components/progress-ring/UProgressRing.js +1 -1
  63. package/dist/components/progress-ring/UProgressRing.styles.js +2 -2
  64. package/dist/components/radio/URadio.d.ts +1 -1
  65. package/dist/components/radio/URadio.js +5 -6
  66. package/dist/components/radio/URadio.styles.js +21 -16
  67. package/dist/components/rating/URating.d.ts +3 -2
  68. package/dist/components/rating/URating.js +30 -37
  69. package/dist/components/select/USelect.d.ts +8 -5
  70. package/dist/components/select/USelect.js +29 -41
  71. package/dist/components/select/USelect.styles.js +5 -5
  72. package/dist/components/skeleton/USkeleton.js +1 -1
  73. package/dist/components/slider/USlider.d.ts +3 -2
  74. package/dist/components/slider/USlider.js +20 -30
  75. package/dist/components/slider/USlider.styles.js +2 -2
  76. package/dist/components/spinner/USpinner.js +1 -1
  77. package/dist/components/spinner/USpinner.styles.js +1 -1
  78. package/dist/components/split-panel/USplitPanel.js +25 -13
  79. package/dist/components/switch/USwitch.d.ts +4 -1
  80. package/dist/components/switch/USwitch.js +11 -8
  81. package/dist/components/switch/USwitch.styles.js +5 -1
  82. package/dist/components/tab/UTab.js +6 -3
  83. package/dist/components/tab-panel/UTabPanel.d.ts +5 -0
  84. package/dist/components/tab-panel/UTabPanel.js +12 -4
  85. package/dist/components/tab-panel/UTabPanel.styles.js +7 -3
  86. package/dist/components/tag/UTag.js +1 -1
  87. package/dist/components/tag/UTag.styles.js +14 -13
  88. package/dist/components/textarea/UTextarea.d.ts +1 -1
  89. package/dist/components/textarea/UTextarea.js +17 -6
  90. package/dist/components/tooltip/UTooltip.js +1 -1
  91. package/dist/components/tree/UTree.js +1 -1
  92. package/dist/components/tree-item/UTreeItem.js +10 -4
  93. package/dist/components/tree-item/UTreeItem.styles.js +5 -4
  94. package/dist/index.d.ts +2 -4
  95. package/dist/index.js +6 -8
  96. package/dist/react/UTabPanel.d.ts +1 -0
  97. package/dist/react/UTabPanel.js +3 -1
  98. package/dist/styles/dark.css +99 -99
  99. package/dist/utilities/Locale.d.ts +38 -0
  100. package/dist/utilities/Locale.js +93 -0
  101. package/dist/utilities/Toast.d.ts +9 -0
  102. package/dist/utilities/Toast.js +15 -7
  103. package/dist/utilities/elements.d.ts +0 -23
  104. package/dist/utilities/elements.js +1 -34
  105. package/package.json +2 -3
  106. package/skills/iyulab-components/SKILL.md +2 -3
  107. package/skills/iyulab-components/references/components/input.md +1 -2
  108. package/skills/iyulab-components/references/components/option.md +1 -0
  109. package/skills/iyulab-components/references/components/select.md +1 -2
  110. package/skills/iyulab-components/references/components/tab-panel.md +6 -0
  111. package/skills/iyulab-components/references/extensions/form-control.md +22 -6
  112. package/skills/iyulab-components/references/usage.md +11 -0
  113. package/skills/iyulab-components/references/utilities/elements.md +1 -17
  114. package/skills/iyulab-components/references/utilities/locale.md +36 -0
  115. package/skills/iyulab-components/references/utilities/theme.md +12 -0
  116. package/skills/iyulab-components/references/utilities/toast.md +6 -0
  117. package/dist/components/UDataElement.d.ts +0 -44
  118. package/dist/components/UDataElement.js +0 -101
  119. package/dist/components/UDataElement.styles.d.ts +0 -1
  120. package/dist/components/UDataElement.styles.js +0 -95
  121. package/dist/core/locale.d.ts +0 -69
  122. package/dist/core/locale.js +0 -85
  123. package/dist/utilities/sanitizers.d.ts +0 -35
  124. package/dist/utilities/sanitizers.js +0 -75
  125. package/skills/iyulab-components/references/extensions/data.md +0 -60
  126. package/skills/iyulab-components/references/utilities/sanitizers.md +0 -32
@@ -1,6 +1,10 @@
1
1
  import { css } from "lit";
2
2
  //#region src/components/tab-panel/UTabPanel.styles.ts
3
3
  var styles = css`
4
+ :host {
5
+ --tab-panel-color: var(--u-primary-color, var(--u-blue-600));
6
+ }
7
+
4
8
  :host {
5
9
  display: flex;
6
10
  color: var(--u-txt-color);
@@ -79,12 +83,12 @@ var styles = css`
79
83
 
80
84
  :host([variant="line"]) ::slotted(u-tab[active]) {
81
85
  position: relative;
82
- color: var(--u-blue-600);
86
+ color: var(--tab-panel-color);
83
87
  }
84
88
  :host([variant="line"]) ::slotted(u-tab[active])::after {
85
89
  content: '';
86
90
  position: absolute;
87
- background-color: var(--u-blue-600);
91
+ background-color: var(--tab-panel-color);
88
92
  }
89
93
 
90
94
  :host([variant="line"][placement="top"]) .header {
@@ -193,7 +197,7 @@ var styles = css`
193
197
  gap: 0.25em;
194
198
  }
195
199
  :host([variant="plain"]) ::slotted(u-tab[active]) {
196
- color: var(--u-blue-600);
200
+ color: var(--tab-panel-color);
197
201
  font-weight: 600;
198
202
  }
199
203
  `;
@@ -2,8 +2,8 @@ import { UElement } from "../UElement.js";
2
2
  import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
3
  import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
4
4
  import { styles } from "./UTag.styles.js";
5
- import { customElement, property } from "lit/decorators.js";
6
5
  import { html } from "lit";
6
+ import { customElement, property } from "lit/decorators.js";
7
7
  //#region src/components/tag/UTag.ts
8
8
  var UTag = class UTag extends UElement {
9
9
  constructor(..._args) {
@@ -2,16 +2,17 @@ import { css } from "lit";
2
2
  //#region src/components/tag/UTag.styles.ts
3
3
  var styles = css`
4
4
  :host {
5
+ --tag-fill-color: var(--u-primary-color, var(--u-blue-600));
5
6
  --tag-color: var(--u-neutral-800);
6
7
  --tag-bg-color: var(--u-neutral-100);
7
8
  --tag-border-color: transparent;
8
9
  }
9
10
 
10
- /* Variant: solid (강한 채움) */
11
+ /* Variant: solid (강한 채움, 기본 색상은 --u-primary-color) */
11
12
  :host([variant="solid"]) {
12
13
  --tag-color: var(--u-neutral-0);
13
- --tag-bg-color: var(--u-neutral-600);
14
- --tag-border-color: var(--u-neutral-600);
14
+ --tag-bg-color: var(--tag-fill-color);
15
+ --tag-border-color: var(--tag-fill-color);
15
16
  }
16
17
  :host([variant="solid"][color="blue"]) {
17
18
  --tag-bg-color: var(--u-blue-500);
@@ -50,11 +51,11 @@ var styles = css`
50
51
  --tag-border-color: var(--u-pink-500);
51
52
  }
52
53
 
53
- /* Variant: surface (채우기 + 테두리) */
54
+ /* Variant: surface (채우기 + 테두리, 기본 색상은 --u-primary-color) */
54
55
  :host([variant="surface"]) {
55
- --tag-color: var(--u-neutral-800);
56
- --tag-bg-color: var(--u-neutral-100);
57
- --tag-border-color: var(--u-neutral-300);
56
+ --tag-color: color-mix(in srgb, var(--tag-fill-color) 70%, black);
57
+ --tag-bg-color: color-mix(in srgb, var(--tag-fill-color) 15%, var(--u-bg-color));
58
+ --tag-border-color: color-mix(in srgb, var(--tag-fill-color) 40%, var(--u-bg-color));
58
59
  }
59
60
  :host([variant="surface"][color="blue"]) {
60
61
  --tag-color: var(--u-blue-800);
@@ -102,10 +103,10 @@ var styles = css`
102
103
  --tag-border-color: var(--u-pink-300);
103
104
  }
104
105
 
105
- /* Variant: filled (채우기만, 테두리 없음) */
106
+ /* Variant: filled (채우기만, 테두리 없음, 기본 색상은 --u-primary-color) */
106
107
  :host([variant="filled"]) {
107
- --tag-color: var(--u-neutral-800);
108
- --tag-bg-color: var(--u-neutral-100);
108
+ --tag-color: color-mix(in srgb, var(--tag-fill-color) 70%, black);
109
+ --tag-bg-color: color-mix(in srgb, var(--tag-fill-color) 15%, var(--u-bg-color));
109
110
  --tag-border-color: transparent;
110
111
  }
111
112
  :host([variant="filled"][color="blue"]) {
@@ -145,11 +146,11 @@ var styles = css`
145
146
  --tag-bg-color: var(--u-pink-100);
146
147
  }
147
148
 
148
- /* Variant: outlined (테두리만) */
149
+ /* Variant: outlined (테두리만, 기본 색상은 --u-primary-color) */
149
150
  :host([variant="outlined"]) {
150
- --tag-color: var(--u-neutral-700);
151
+ --tag-color: color-mix(in srgb, var(--tag-fill-color) 85%, black);
151
152
  --tag-bg-color: transparent;
152
- --tag-border-color: var(--u-neutral-300);
153
+ --tag-border-color: color-mix(in srgb, var(--tag-fill-color) 40%, var(--u-bg-color));
153
154
  }
154
155
  :host([variant="outlined"][color="blue"]) {
155
156
  --tag-color: var(--u-blue-600);
@@ -51,7 +51,7 @@ export declare class UTextarea extends UFormControlElement<string> {
51
51
  textareaEl?: HTMLTextAreaElement;
52
52
  protected updated(changedProperties: PropertyValues): Promise<void>;
53
53
  render(): import('lit-html').TemplateResult<1>;
54
- validate(): boolean;
54
+ protected setValidity(): void;
55
55
  reset(): void;
56
56
  private resizeTextarea;
57
57
  private handleTextareaInput;
@@ -1,10 +1,11 @@
1
1
  import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
2
2
  import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
3
3
  import { UFormControlElement } from "../UFormControlElement.js";
4
+ import { Locale } from "../../utilities/Locale.js";
4
5
  import "../field/UField.js";
5
6
  import { styles } from "./UTextarea.styles.js";
6
- import { customElement, property, query } from "lit/decorators.js";
7
7
  import { html } from "lit";
8
+ import { customElement, property, query } from "lit/decorators.js";
8
9
  import { ifDefined } from "lit/directives/if-defined.js";
9
10
  import { live } from "lit/directives/live.js";
10
11
  //#region src/components/textarea/UTextarea.ts
@@ -25,7 +26,6 @@ var UTextarea = class UTextarea extends UFormControlElement {
25
26
  this.handleTextareaChange = (e) => {
26
27
  this.value = this.textareaEl?.value;
27
28
  this.internals?.setFormValue(this.value || "");
28
- this.internals?.setValidity(this.textareaEl?.validity, this.textareaEl?.validationMessage, this.textareaEl);
29
29
  if (!this.novalidate) this.validate();
30
30
  this.relay(e);
31
31
  };
@@ -84,10 +84,21 @@ var UTextarea = class UTextarea extends UFormControlElement {
84
84
  </u-field>
85
85
  `;
86
86
  }
87
- validate() {
88
- if (this.internals) this.invalid = !this.internals.checkValidity();
89
- else this.invalid = !this.textareaEl?.checkValidity();
90
- return !this.invalid;
87
+ setValidity() {
88
+ const v = this.textareaEl?.validity;
89
+ let flags = {};
90
+ let message = "";
91
+ if (v?.valueMissing) {
92
+ flags = { valueMissing: true };
93
+ message = Locale.getValue("valueMissing");
94
+ } else if (v?.tooShort) {
95
+ flags = { tooShort: true };
96
+ message = Locale.getValue("tooShort", { min: this.minlength ?? 0 });
97
+ } else if (v?.tooLong) {
98
+ flags = { tooLong: true };
99
+ message = Locale.getValue("tooLong", { max: this.maxlength ?? 0 });
100
+ }
101
+ this.commit(flags, message, this.textareaEl ?? void 0);
91
102
  }
92
103
  reset() {
93
104
  this.value = void 0;
@@ -2,8 +2,8 @@ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/hel
2
2
  import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
3
3
  import { UFloatingElement } from "../UFloatingElement.js";
4
4
  import { styles } from "./UTooltip.styles.js";
5
- import { customElement, property } from "lit/decorators.js";
6
5
  import { html } from "lit";
6
+ import { customElement, property } from "lit/decorators.js";
7
7
  //#region src/components/tooltip/UTooltip.ts
8
8
  var UTooltip = class UTooltip extends UFloatingElement {
9
9
  constructor(..._args) {
@@ -3,8 +3,8 @@ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/hel
3
3
  import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
4
4
  import { UTreeItem } from "../tree-item/UTreeItem.js";
5
5
  import { styles } from "./UTree.styles.js";
6
- import { customElement, property, state } from "lit/decorators.js";
7
6
  import { html } from "lit";
7
+ import { customElement, property, state } from "lit/decorators.js";
8
8
  //#region src/components/tree/UTree.ts
9
9
  var UTree = class UTree extends UElement {
10
10
  constructor(..._args) {
@@ -1,11 +1,11 @@
1
1
  import { UElement } from "../UElement.js";
2
2
  import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorateMetadata.js";
3
3
  import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
4
- import "../icon/UIcon.js";
5
4
  import "../spinner/USpinner.js";
5
+ import "../icon/UIcon.js";
6
6
  import { styles } from "./UTreeItem.styles.js";
7
- import { customElement, property, state } from "lit/decorators.js";
8
7
  import { html } from "lit";
8
+ import { customElement, property, state } from "lit/decorators.js";
9
9
  //#region src/components/tree-item/UTreeItem.ts
10
10
  var _UTreeItem;
11
11
  var UTreeItem = class UTreeItem extends UElement {
@@ -125,7 +125,10 @@ var UTreeItem = class UTreeItem extends UElement {
125
125
  }
126
126
  expand() {
127
127
  if (this.disabled || this.leaf) return false;
128
- if (this.fire("expand")) {
128
+ if (this.fire("expand", {
129
+ bubbles: false,
130
+ composed: false
131
+ })) {
129
132
  this.expanded = true;
130
133
  return true;
131
134
  }
@@ -133,7 +136,10 @@ var UTreeItem = class UTreeItem extends UElement {
133
136
  }
134
137
  collapse() {
135
138
  if (this.disabled || this.leaf) return false;
136
- if (this.fire("collapse")) {
139
+ if (this.fire("collapse", {
140
+ bubbles: false,
141
+ composed: false
142
+ })) {
137
143
  this.expanded = false;
138
144
  return true;
139
145
  }
@@ -3,6 +3,7 @@ import { css } from "lit";
3
3
  var styles = css`
4
4
  :host {
5
5
  --tree-item-depth: 0;
6
+ --tree-item-color: var(--u-primary-color, var(--u-blue-600));
6
7
  }
7
8
 
8
9
  :host {
@@ -35,9 +36,9 @@ var styles = css`
35
36
  background-color: var(--u-bg-color-hover);
36
37
  }
37
38
  .header[selected] {
38
- color: var(--u-blue-700);
39
+ color: color-mix(in srgb, var(--tree-item-color) 85%, black);
39
40
  font-weight: 600;
40
- background-color: var(--u-blue-100);
41
+ background-color: color-mix(in srgb, var(--tree-item-color) 15%, var(--u-bg-color));
41
42
  }
42
43
 
43
44
  ::slotted([slot="prefix"]) {
@@ -98,8 +99,8 @@ var styles = css`
98
99
  }
99
100
  .prefix-checkbox[checked],
100
101
  .prefix-checkbox[indeterminate] {
101
- border-color: var(--u-blue-600);
102
- background-color: var(--u-blue-600);
102
+ border-color: var(--tree-item-color);
103
+ background-color: var(--tree-item-color);
103
104
  }
104
105
  .prefix-checkbox[checked] u-icon,
105
106
  .prefix-checkbox[indeterminate] u-icon {
package/dist/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- export * from './core/locale.js';
2
- export * from './components/UFormControlElement.js';
3
- export * from './components/UDataElement.js';
4
1
  export * from './components/UElement.js';
5
2
  export * from './components/UFloatingElement.js';
3
+ export * from './components/UFormControlElement.js';
6
4
  export * from './components/UOverlayElement.js';
7
5
  export * from './components/alert/UAlert.js';
8
6
  export * from './components/avatar/UAvatar.js';
@@ -59,7 +57,7 @@ export * from './utilities/converters.js';
59
57
  export * from './utilities/Dialog.js';
60
58
  export * from './utilities/elements.js';
61
59
  export * from './utilities/icons.js';
60
+ export * from './utilities/Locale.js';
62
61
  export * from './utilities/OverlayManager.js';
63
- export * from './utilities/sanitizers.js';
64
62
  export * from './utilities/Theme.js';
65
63
  export * from './utilities/Toast.js';
package/dist/index.js CHANGED
@@ -1,17 +1,14 @@
1
- import { formatTemplate, getDefaultLocale, getEffectiveLocale, getLocaleStrings, registerLocale, resolveLocale, setDefaultLocale } from "./core/locale.js";
2
1
  import { UElement } from "./components/UElement.js";
3
- import { UFormControlElement } from "./components/UFormControlElement.js";
4
- import { IconCache, IconRegistry, getDefaultBaseUrl, setDefaultBaseUrl } from "./utilities/icons.js";
5
- import { UIcon } from "./components/icon/UIcon.js";
6
- import { escapeHtmlAttr, escapeHtmlHref, escapeHtmlText, stripZeroWidth } from "./utilities/sanitizers.js";
7
- import { buildElementHTML, getParentElement, querySelectorAllWithin, querySelectorWithin } from "./utilities/elements.js";
8
- import { UDataElement } from "./components/UDataElement.js";
2
+ import { getParentElement, querySelectorAllWithin, querySelectorWithin } from "./utilities/elements.js";
9
3
  import { UFloatingElement } from "./components/UFloatingElement.js";
4
+ import { UFormControlElement } from "./components/UFormControlElement.js";
10
5
  import { OverlayManager } from "./utilities/OverlayManager.js";
11
6
  import { arrayAttrConverter, booleanAttrConverter, dateAttrConverter, jsonAttrConverter, urlAttrConverter } from "./utilities/converters.js";
12
7
  import { UOverlayElement } from "./components/UOverlayElement.js";
13
8
  import { USpinner } from "./components/spinner/USpinner.js";
14
9
  import { UButton } from "./components/button/UButton.js";
10
+ import { IconCache, IconRegistry, getDefaultBaseUrl, setDefaultBaseUrl } from "./utilities/icons.js";
11
+ import { UIcon } from "./components/icon/UIcon.js";
15
12
  import { UAlert } from "./components/alert/UAlert.js";
16
13
  import { UAvatar } from "./components/avatar/UAvatar.js";
17
14
  import { UBadge } from "./components/badge/UBadge.js";
@@ -22,6 +19,7 @@ import { UIconButton } from "./components/icon-button/UIconButton.js";
22
19
  import { UButtonGroup } from "./components/button-group/UButtonGroup.js";
23
20
  import { UCard } from "./components/card/UCard.js";
24
21
  import { UCarousel } from "./components/carousel/UCarousel.js";
22
+ import { Locale } from "./utilities/Locale.js";
25
23
  import { UCheckbox } from "./components/checkbox/UCheckbox.js";
26
24
  import { UTag } from "./components/tag/UTag.js";
27
25
  import { UChip } from "./components/chip/UChip.js";
@@ -54,4 +52,4 @@ import { BrowserStorage } from "./utilities/BrowserStorage.js";
54
52
  import { Dialog } from "./utilities/Dialog.js";
55
53
  import { Theme } from "./utilities/Theme.js";
56
54
  import { Toast } from "./utilities/Toast.js";
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 };
55
+ export { BrowserStorage, Dialog, IconCache, IconRegistry, Locale, OverlayManager, Theme, Toast, UAlert, UAvatar, UBadge, UBreadcrumb, UBreadcrumbItem, UButton, UButtonGroup, UCard, UCarousel, UCheckbox, UChip, 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, dateAttrConverter, getDefaultBaseUrl, getParentElement, jsonAttrConverter, querySelectorAllWithin, querySelectorWithin, setDefaultBaseUrl, urlAttrConverter };
@@ -3,6 +3,7 @@ import { UTabPanel as UTabPanelElement } from '../components/tab-panel/UTabPanel
3
3
 
4
4
  export declare const UTabPanel: React.ForwardRefExoticComponent<
5
5
  Partial<UTabPanelElement> & React.HTMLAttributes<UTabPanelElement> & {
6
+ onChange?: (event: CustomEvent) => void;
6
7
  }
7
8
  >;
8
9
 
@@ -6,5 +6,7 @@ export const UTabPanel = createComponent({
6
6
  react: React,
7
7
  tagName: 'u-tab-panel',
8
8
  elementClass: UTabPanelElement,
9
- events: {},
9
+ events: {
10
+ onChange: 'change',
11
+ },
10
12
  });
@@ -16,121 +16,121 @@
16
16
  --u-neutral-1000: #FFFFFF;
17
17
 
18
18
  /* Blue Colors */
19
- --u-blue-0: #0A1E3D;
20
- --u-blue-100: #1E3A5F;
21
- --u-blue-200: #2B4F7E;
22
- --u-blue-300: #3D6B9E;
23
- --u-blue-400: #5284BE;
24
- --u-blue-500: #6BA3E3;
25
- --u-blue-600: #87B8F5;
26
- --u-blue-700: #A5CDFF;
27
- --u-blue-800: #C2DEFF;
28
- --u-blue-900: #DDEEFF;
29
- --u-blue-1000: #F0F7FF;
19
+ --u-blue-0: #030D1A;
20
+ --u-blue-100: #061629;
21
+ --u-blue-200: #0A223B;
22
+ --u-blue-300: #103150;
23
+ --u-blue-400: #174167;
24
+ --u-blue-500: #205281;
25
+ --u-blue-600: #2A659D;
26
+ --u-blue-700: #3678B8;
27
+ --u-blue-800: #478DCE;
28
+ --u-blue-900: #5DA2DF;
29
+ --u-blue-1000: #79BBEA;
30
30
 
31
31
  /* Green Colors */
32
- --u-green-0: #0D2818;
33
- --u-green-100: #1A3F2A;
34
- --u-green-200: #285639;
35
- --u-green-300: #3A7450;
36
- --u-green-400: #4E9268;
37
- --u-green-500: #66B584;
38
- --u-green-600: #81D19D;
39
- --u-green-700: #9FE5B5;
40
- --u-green-800: #BEF2CD;
41
- --u-green-900: #DDF9E5;
42
- --u-green-1000: #F0FDF5;
32
+ --u-green-0: #06140C;
33
+ --u-green-100: #0A2114;
34
+ --u-green-200: #10301D;
35
+ --u-green-300: #164228;
36
+ --u-green-400: #1F5535;
37
+ --u-green-500: #2A6942;
38
+ --u-green-600: #367E50;
39
+ --u-green-700: #4A9563;
40
+ --u-green-800: #63AB7A;
41
+ --u-green-900: #80BE97;
42
+ --u-green-1000: #9BCFB1;
43
43
 
44
44
  /* Yellow Colors */
45
- --u-yellow-0: #2E2200;
46
- --u-yellow-100: #4D3A00;
47
- --u-yellow-200: #6B5200;
48
- --u-yellow-300: #8A6B00;
49
- --u-yellow-400: #B08900;
50
- --u-yellow-500: #D4A712;
51
- --u-yellow-600: #F5C842;
52
- --u-yellow-700: #FFE066;
53
- --u-yellow-800: #FFED99;
54
- --u-yellow-900: #FFF5CC;
55
- --u-yellow-1000: #FFFBE6;
45
+ --u-yellow-0: #1C1300;
46
+ --u-yellow-100: #2D1E00;
47
+ --u-yellow-200: #402B00;
48
+ --u-yellow-300: #553900;
49
+ --u-yellow-400: #6B4900;
50
+ --u-yellow-500: #825A00;
51
+ --u-yellow-600: #9A6C00;
52
+ --u-yellow-700: #B08012;
53
+ --u-yellow-800: #C69635;
54
+ --u-yellow-900: #D9AD5A;
55
+ --u-yellow-1000: #E8C57F;
56
56
 
57
57
  /* Red Colors */
58
- --u-red-0: #2E0A0A;
59
- --u-red-100: #4D1717;
60
- --u-red-200: #6B2424;
61
- --u-red-300: #8F3535;
62
- --u-red-400: #B24848;
63
- --u-red-500: #D66060;
64
- --u-red-600: #F57878;
65
- --u-red-700: #FF9494;
66
- --u-red-800: #FFB3B3;
67
- --u-red-900: #FFD2D2;
68
- --u-red-1000: #FFF0F0;
58
+ --u-red-0: #1C0707;
59
+ --u-red-100: #2C0B0B;
60
+ --u-red-200: #3E1111;
61
+ --u-red-300: #541818;
62
+ --u-red-400: #6C2020;
63
+ --u-red-500: #852A2A;
64
+ --u-red-600: #A13535;
65
+ --u-red-700: #B94949;
66
+ --u-red-800: #CB6262;
67
+ --u-red-900: #D98383;
68
+ --u-red-1000: #E7A2A2;
69
69
 
70
70
  /* Orange Colors */
71
- --u-orange-0: #2E1A00;
72
- --u-orange-100: #4D2E00;
73
- --u-orange-200: #6B4200;
74
- --u-orange-300: #8A5A00;
75
- --u-orange-400: #B07500;
76
- --u-orange-500: #D49212;
77
- --u-orange-600: #F5AE42;
78
- --u-orange-700: #FFC566;
79
- --u-orange-800: #FFD899;
80
- --u-orange-900: #FFEBCC;
81
- --u-orange-1000: #FFF5E6;
71
+ --u-orange-0: #1D0E00;
72
+ --u-orange-100: #2F1700;
73
+ --u-orange-200: #421F00;
74
+ --u-orange-300: #582A00;
75
+ --u-orange-400: #703600;
76
+ --u-orange-500: #8A4500;
77
+ --u-orange-600: #A55600;
78
+ --u-orange-700: #BD6A18;
79
+ --u-orange-800: #D1823C;
80
+ --u-orange-900: #E19D67;
81
+ --u-orange-1000: #EDB992;
82
82
 
83
83
  /* Teal Colors */
84
- --u-teal-0: #002018;
85
- --u-teal-100: #00382B;
86
- --u-teal-200: #005040;
87
- --u-teal-300: #006B55;
88
- --u-teal-400: #00886C;
89
- --u-teal-500: #1AA88A;
90
- --u-teal-600: #42C4A5;
91
- --u-teal-700: #6EDABD;
92
- --u-teal-800: #9EEAD5;
93
- --u-teal-900: #CFF5EA;
94
- --u-teal-1000: #EDFCF7;
84
+ --u-teal-0: #041411;
85
+ --u-teal-100: #07201B;
86
+ --u-teal-200: #0B2E28;
87
+ --u-teal-300: #10403A;
88
+ --u-teal-400: #16544D;
89
+ --u-teal-500: #1E6860;
90
+ --u-teal-600: #297D74;
91
+ --u-teal-700: #3A9389;
92
+ --u-teal-800: #54A89F;
93
+ --u-teal-900: #73BBB3;
94
+ --u-teal-1000: #93CBC5;
95
95
 
96
96
  /* Cyan Colors */
97
- --u-cyan-0: #002830;
98
- --u-cyan-100: #00404D;
99
- --u-cyan-200: #005A6B;
100
- --u-cyan-300: #00768A;
101
- --u-cyan-400: #0094B0;
102
- --u-cyan-500: #12B4D4;
103
- --u-cyan-600: #42CFF5;
104
- --u-cyan-700: #66DFFF;
105
- --u-cyan-800: #99EBFF;
106
- --u-cyan-900: #CCF5FF;
107
- --u-cyan-1000: #E6FAFF;
97
+ --u-cyan-0: #041318;
98
+ --u-cyan-100: #071F29;
99
+ --u-cyan-200: #0B2D3A;
100
+ --u-cyan-300: #104050;
101
+ --u-cyan-400: #165469;
102
+ --u-cyan-500: #1E6A82;
103
+ --u-cyan-600: #287F9C;
104
+ --u-cyan-700: #3995B5;
105
+ --u-cyan-800: #53AACC;
106
+ --u-cyan-900: #73BEDD;
107
+ --u-cyan-1000: #95CFE8;
108
108
 
109
109
  /* Purple Colors */
110
- --u-purple-0: #1A0A2E;
111
- --u-purple-100: #2E174D;
112
- --u-purple-200: #42246B;
113
- --u-purple-300: #5A358F;
114
- --u-purple-400: #7548B2;
115
- --u-purple-500: #9260D6;
116
- --u-purple-600: #AE78F5;
117
- --u-purple-700: #C494FF;
118
- --u-purple-800: #D8B3FF;
119
- --u-purple-900: #ECD2FF;
120
- --u-purple-1000: #F7F0FF;
110
+ --u-purple-0: #150A22;
111
+ --u-purple-100: #220F36;
112
+ --u-purple-200: #31164B;
113
+ --u-purple-300: #432064;
114
+ --u-purple-400: #572B80;
115
+ --u-purple-500: #6C379C;
116
+ --u-purple-600: #8245B7;
117
+ --u-purple-700: #975BCB;
118
+ --u-purple-800: #AB79D9;
119
+ --u-purple-900: #BD99E2;
120
+ --u-purple-1000: #CEB8EA;
121
121
 
122
122
  /* Pink Colors */
123
- --u-pink-0: #2E0A1A;
124
- --u-pink-100: #4D172E;
125
- --u-pink-200: #6B2442;
126
- --u-pink-300: #8F355A;
127
- --u-pink-400: #B24875;
128
- --u-pink-500: #D66092;
129
- --u-pink-600: #F578AE;
130
- --u-pink-700: #FF94C4;
131
- --u-pink-800: #FFB3D8;
132
- --u-pink-900: #FFD2EB;
133
- --u-pink-1000: #FFF0F7;
123
+ --u-pink-0: #1F0A14;
124
+ --u-pink-100: #310F20;
125
+ --u-pink-200: #451532;
126
+ --u-pink-300: #5C1D45;
127
+ --u-pink-400: #74285A;
128
+ --u-pink-500: #8F336F;
129
+ --u-pink-600: #AB4187;
130
+ --u-pink-700: #C0569D;
131
+ --u-pink-800: #D174B3;
132
+ --u-pink-900: #E095C7;
133
+ --u-pink-1000: #EBB5D9;
134
134
 
135
135
  /* Text Colors */
136
136
  --u-txt-color: var(--u-neutral-900);
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @iyulab/components 의 경량 로케일 유틸리티.
3
+ *
4
+ * 범위: 라이브러리가 스스로 생성하는 chrome 문자열(검증 메시지 등)만 대상.
5
+ * 일반 i18n 프레임워크가 아니다. 앱 콘텐츠 번역은 consumer 의 i18n 계층이 담당한다.
6
+ *
7
+ * en/ko/ja/zh-CN/es/fr 은 빌드 시점에 내장된다 (src/assets/locales/*.json).
8
+ * 그 외 언어는 register()로 테이블 단위 등록/오버라이드한다.
9
+ */
10
+ /** 라이브러리가 기본 제공하는 로케일. */
11
+ export type SupportedLocale = 'en' | 'ko' | 'ja' | 'zh-CN' | 'zh-TW' | 'es' | 'fr' | 'de' | 'pt-BR' | 'vi' | 'th' | 'id' | 'ru' | 'ar';
12
+ /** 내장 로케일은 자동완성되지만, 임의의 BCP47 태그도 그대로 받는다. */
13
+ export type LocaleTag = SupportedLocale | (string & {});
14
+ /** 라이브러리가 제공하는 chrome 문자열 키. 지금은 검증 메시지뿐이지만 이후 다른 UI 문구도 추가될 수 있다. */
15
+ export type LocaleMessageKey = 'valueMissing' | 'badInput' | 'typeMismatch' | 'patternMismatch' | 'rangeUnderflow' | 'rangeOverflow' | 'stepMismatch' | 'tooShort' | 'tooLong';
16
+ type LocaleTable = Record<LocaleMessageKey, string>;
17
+ /**
18
+ * 검증 메시지 로케일을 관리하는 정적 유틸리티입니다.
19
+ */
20
+ export declare class Locale {
21
+ /** 개별 인스턴스 생성을 방지합니다. */
22
+ private constructor();
23
+ /** 전역 활성 로케일을 지정합니다. */
24
+ static set(locale: LocaleTag): void;
25
+ /** 전역 활성 로케일을 반환합니다 (초기값은 브라우저 언어 자동 감지, 실패 시 'en'). */
26
+ static get(): LocaleTag;
27
+ /**
28
+ * 로케일 하나의 메시지 테이블(전체 또는 일부)을 등록합니다.
29
+ * 이미 존재하는 값(내장 포함) 위에 병합되므로, 일부 키만 넘겨도 나머지 키가 사라지지 않습니다.
30
+ */
31
+ static register(locale: LocaleTag, table: Partial<LocaleTable>): void;
32
+ /**
33
+ * 현재 활성 로케일 기준으로 메시지를 조회합니다.
34
+ * `params`가 있으면 템플릿의 `{name}` 자리를 치환합니다.
35
+ */
36
+ static getValue(key: LocaleMessageKey, params?: Record<string, string | number>): string;
37
+ }
38
+ export {};