@sellmate/design-system 1.0.54 → 1.0.55

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 (82) hide show
  1. package/dist/cjs/{component.textinput-DIDZPtYE.js → component.textinput-BWW8c3OY.js} +10 -1
  2. package/dist/cjs/design-system.cjs.js +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/sd-barcode-input.cjs.entry.js +1 -1
  5. package/dist/cjs/{sd-button_5.cjs.entry.js → sd-button_4.cjs.entry.js} +2 -146
  6. package/dist/cjs/sd-ghost-button.cjs.entry.js +148 -0
  7. package/dist/cjs/sd-input_2.cjs.entry.js +1 -1
  8. package/dist/cjs/sd-textarea.cjs.entry.js +76 -37
  9. package/dist/cjs/sd-toast-container.cjs.entry.js +1 -1
  10. package/dist/cjs/sd-toast.cjs.entry.js +2 -2
  11. package/dist/cjs/sd-toggle-button.cjs.entry.js +1 -1
  12. package/dist/cjs/sd-toggle.cjs.entry.js +1 -1
  13. package/dist/collection/components/sd-textarea/sd-textarea.config.js +16 -0
  14. package/dist/collection/components/sd-textarea/sd-textarea.css +13 -53
  15. package/dist/collection/components/sd-textarea/sd-textarea.js +445 -60
  16. package/dist/collection/components/sd-toast/sd-toast.js +2 -2
  17. package/dist/collection/components/sd-toast-container/sd-toast-container.js +1 -1
  18. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  19. package/dist/collection/components/sd-toggle-button/sd-toggle-button.js +1 -1
  20. package/dist/collection/components/sd-tooltip/sd-tooltip.js +2 -2
  21. package/dist/components/{p-hWm-Llzv.js → p-BM4qDFZj.js} +1 -1
  22. package/dist/components/{p-Bbl5852O.js → p-BR0LWoJL.js} +1 -1
  23. package/dist/components/p-C8kA64_1.js +1 -0
  24. package/dist/components/{p-DJdigrkS.js → p-Cbtpfl9F.js} +1 -1
  25. package/dist/components/{p-CYppNuFU.js → p-CmXAKr-2.js} +1 -1
  26. package/dist/components/p-DSNs8RRn.js +1 -0
  27. package/dist/components/{p-CpGiSLY_.js → p-DxzIjbQJ.js} +1 -1
  28. package/dist/components/{p-CSrbKcYv.js → p-w3CsjVGg.js} +1 -1
  29. package/dist/components/sd-barcode-input.js +1 -1
  30. package/dist/components/sd-date-picker.js +1 -1
  31. package/dist/components/sd-date-range-picker.js +1 -1
  32. package/dist/components/sd-field.js +1 -1
  33. package/dist/components/sd-file-picker.js +1 -1
  34. package/dist/components/sd-input.js +1 -1
  35. package/dist/components/sd-number-input.js +1 -1
  36. package/dist/components/sd-select-dropdown.js +1 -1
  37. package/dist/components/sd-select-group.js +1 -1
  38. package/dist/components/sd-select-multiple-group.js +1 -1
  39. package/dist/components/sd-select-multiple.js +1 -1
  40. package/dist/components/sd-select-search-input.js +1 -1
  41. package/dist/components/sd-select-v2.js +1 -1
  42. package/dist/components/sd-select.js +1 -1
  43. package/dist/components/sd-table.js +1 -1
  44. package/dist/components/sd-textarea.js +1 -1
  45. package/dist/components/sd-toast-container.js +1 -1
  46. package/dist/components/sd-toast.js +1 -1
  47. package/dist/components/sd-toggle-button.js +1 -1
  48. package/dist/components/sd-toggle.js +1 -1
  49. package/dist/components/sd-tooltip.js +1 -1
  50. package/dist/design-system/design-system.esm.js +1 -1
  51. package/dist/design-system/{p-47931c26.entry.js → p-184649a9.entry.js} +1 -1
  52. package/dist/design-system/{p-64f2a188.entry.js → p-266ff86b.entry.js} +1 -1
  53. package/dist/design-system/{p-cebaca7c.entry.js → p-391cf704.entry.js} +1 -1
  54. package/dist/design-system/{p-a59c0cab.entry.js → p-4e9413c0.entry.js} +1 -1
  55. package/dist/design-system/p-5213773b.entry.js +1 -0
  56. package/dist/design-system/{p-4487b2ec.entry.js → p-99b6157f.entry.js} +1 -1
  57. package/dist/design-system/p-DSNs8RRn.js +1 -0
  58. package/dist/design-system/p-c2a0f10d.entry.js +1 -0
  59. package/dist/design-system/{p-c9af0fc9.entry.js → p-efe684e6.entry.js} +1 -1
  60. package/dist/design-system/{p-ea768c2e.entry.js → p-fdf7ed87.entry.js} +1 -1
  61. package/dist/esm/{component.textinput-BGovA1BG.js → component.textinput-DSNs8RRn.js} +10 -1
  62. package/dist/esm/design-system.js +1 -1
  63. package/dist/esm/loader.js +1 -1
  64. package/dist/esm/sd-barcode-input.entry.js +1 -1
  65. package/dist/esm/{sd-button_5.entry.js → sd-button_4.entry.js} +3 -146
  66. package/dist/esm/sd-ghost-button.entry.js +146 -0
  67. package/dist/esm/sd-input_2.entry.js +1 -1
  68. package/dist/esm/sd-textarea.entry.js +76 -37
  69. package/dist/esm/sd-toast-container.entry.js +1 -1
  70. package/dist/esm/sd-toast.entry.js +2 -2
  71. package/dist/esm/sd-toggle-button.entry.js +1 -1
  72. package/dist/esm/sd-toggle.entry.js +1 -1
  73. package/dist/types/components/sd-textarea/sd-textarea.config.d.ts +34 -0
  74. package/dist/types/components/sd-textarea/sd-textarea.d.ts +28 -9
  75. package/dist/types/components.d.ts +142 -8
  76. package/hydrate/index.js +114 -52
  77. package/hydrate/index.mjs +114 -52
  78. package/package.json +1 -1
  79. package/dist/components/p-BGovA1BG.js +0 -1
  80. package/dist/components/p-Ck-2jtzb.js +0 -1
  81. package/dist/design-system/p-52d6d7b5.entry.js +0 -1
  82. package/dist/design-system/p-BGovA1BG.js +0 -1
package/hydrate/index.js CHANGED
@@ -4918,6 +4918,7 @@ const input = {
4918
4918
  sm: {
4919
4919
  height: "28",
4920
4920
  paddingX: "12",
4921
+ paddingY: "4",
4921
4922
  gap: "8",
4922
4923
  radius: "4",
4923
4924
  typography: {
@@ -4935,7 +4936,11 @@ const input = {
4935
4936
  fontSize: "16",
4936
4937
  lineHeight: "26"}
4937
4938
  },
4939
+ border: {
4940
+ "default": "#AAAAAA"},
4938
4941
  bg: {
4942
+ "default": "#FFFFFF",
4943
+ disabled: "#E1E1E1",
4939
4944
  barcode: "#FAFAA1"
4940
4945
  },
4941
4946
  text: {
@@ -4944,7 +4949,11 @@ const input = {
4944
4949
  disabled: "#888888"},
4945
4950
  icon: {
4946
4951
  "default": "#888888"
4947
- }};
4952
+ },
4953
+ resizer: {
4954
+ color: "#AAAAAA"
4955
+ }
4956
+ };
4948
4957
  var inputTokens = {
4949
4958
  input: input
4950
4959
  };
@@ -14157,7 +14166,21 @@ class SdTextLink {
14157
14166
  }; }
14158
14167
  }
14159
14168
 
14160
- const sdTextareaCss = () => `sd-textarea{display:block}sd-textarea .sd-textarea{display:flex;flex-direction:column;color:#333333;font-size:12px;line-height:20px}sd-textarea .sd-textarea .sd-textarea__content{width:100%;display:flex;border:1px solid #AAAAAA;border-radius:4px;background:white}sd-textarea .sd-textarea .sd-textarea__content .sd-textarea__native{width:100%;min-height:100px;border:none;outline:none;background:transparent;padding:4px 8px;font-family:inherit;font-size:12px;line-height:20px;color:#333333;resize:vertical}sd-textarea .sd-textarea .sd-textarea__content .sd-textarea__native::placeholder{color:#AAAAAA}sd-textarea .sd-textarea--hovered .sd-textarea__content,sd-textarea .sd-textarea--focused .sd-textarea__content{border-color:#0075FF;box-shadow:0 0 4px 0 rgba(0, 113, 255, 0.4)}sd-textarea .sd-textarea--disabled{cursor:not-allowed !important;box-shadow:none !important}sd-textarea .sd-textarea--disabled .sd-textarea__content{background:#EEEEEE !important;border:1px solid #CCCCCC !important;color:#888888 !important}sd-textarea .sd-textarea--disabled .sd-textarea__content .sd-textarea__native{cursor:not-allowed !important;color:#888888 !important}sd-textarea .sd-textarea .sd-textarea__footer{display:flex;justify-content:space-between;align-items:center;margin-top:4px;font-size:12px;line-height:20px}sd-textarea .sd-textarea .sd-textarea__help-text{font-size:12px;line-height:20px;font-weight:400;color:#222222}sd-textarea .sd-textarea .sd-textarea__counter{color:#CCCCCC;margin-left:auto}`;
14169
+ const TEXTAREA_TOKENS = {
14170
+ paddingX: inputTokens.input.sm.paddingX,
14171
+ paddingY: inputTokens.input.sm.paddingY,
14172
+ radius: inputTokens.input.sm.radius,
14173
+ fontSize: inputTokens.input.sm.typography.fontSize,
14174
+ lineHeight: inputTokens.input.sm.typography.lineHeight,
14175
+ fontWeight: inputTokens.input.sm.typography.fontWeight};
14176
+ const TEXTAREA_COLORS = {
14177
+ text: inputTokens.input.text,
14178
+ bg: inputTokens.input.bg,
14179
+ border: inputTokens.input.border,
14180
+ resizer: inputTokens.input.resizer,
14181
+ };
14182
+
14183
+ const sdTextareaCss = () => `sd-textarea{display:inline-flex}sd-textarea .sd-textarea__content{width:100%;display:flex}sd-textarea .sd-textarea__content .sd-textarea__native{width:100%;min-height:100px;border:none;outline:none;background:transparent;padding:var(--sd-textarea-padding-y) var(--sd-textarea-padding-x);font-family:inherit;font-size:var(--sd-textarea-font-size);line-height:var(--sd-textarea-line-height);font-weight:var(--sd-textarea-font-weight);color:var(--sd-textarea-text-color);resize:vertical}sd-textarea .sd-textarea__content .sd-textarea__native::placeholder{color:var(--sd-textarea-placeholder-color)}sd-textarea .sd-textarea__content .sd-textarea__native:disabled{cursor:not-allowed;color:var(--sd-textarea-disabled-color)}`;
14161
14184
 
14162
14185
  class SdTextarea {
14163
14186
  constructor(hostRef) {
@@ -14168,17 +14191,33 @@ class SdTextarea {
14168
14191
  }
14169
14192
  get host() { return getElement(this); }
14170
14193
  value = null;
14171
- name;
14194
+ placeholder = '입력해 주세요.';
14172
14195
  disabled = false;
14196
+ readonly = false;
14173
14197
  autoFocus = false;
14174
14198
  textareaClass = '';
14175
- helpText;
14199
+ textareaStyle = {};
14176
14200
  maxLength;
14177
- placeholder = '입력해 주세요.';
14178
- internalValue = null;
14201
+ rows;
14202
+ spellcheck = false;
14203
+ width = '';
14204
+ // props - sd-field
14205
+ label = '';
14206
+ addonLabel = '';
14207
+ hint = '';
14208
+ errorMessage = '';
14209
+ icon = undefined;
14210
+ labelTooltip = '';
14211
+ labelTooltipProps = null;
14212
+ rules = [];
14213
+ error = false;
14214
+ status;
14179
14215
  focused = false;
14180
14216
  hovered = false;
14217
+ internalValue = null;
14181
14218
  nativeEl = undefined;
14219
+ formField;
14220
+ name = nanoid();
14182
14221
  input;
14183
14222
  focus;
14184
14223
  blur;
@@ -14191,12 +14230,21 @@ class SdTextarea {
14191
14230
  this.input?.emit(this.value);
14192
14231
  }
14193
14232
  }
14194
- async sdFocus() {
14195
- this.nativeEl?.focus();
14196
- }
14197
- async getNativeElement() {
14233
+ async sdGetNativeElement() {
14198
14234
  return this.nativeEl || null;
14199
14235
  }
14236
+ async sdValidate() {
14237
+ this.formField?.sdValidate();
14238
+ }
14239
+ async sdReset() {
14240
+ this.formField?.sdReset();
14241
+ }
14242
+ async sdResetValidate() {
14243
+ this.formField?.sdResetValidation();
14244
+ }
14245
+ async sdFocus() {
14246
+ this.formField?.sdFocus();
14247
+ }
14200
14248
  componentWillLoad() {
14201
14249
  if (this.value !== null && this.value !== undefined) {
14202
14250
  this.internalValue = this.value;
@@ -14207,44 +14255,42 @@ class SdTextarea {
14207
14255
  this.nativeEl?.focus();
14208
14256
  }
14209
14257
  }
14210
- handleInput(event) {
14258
+ handleInput = (event) => {
14211
14259
  const target = event.target;
14212
14260
  this.internalValue = target.value;
14213
- }
14214
- handleFocus(type, event) {
14261
+ };
14262
+ handleFocus = async (type, event) => {
14215
14263
  this.focused = type === 'focus';
14216
14264
  if (type === 'blur') {
14265
+ if (this.rules && this.rules.length > 0) {
14266
+ await this.formField?.sdValidate();
14267
+ }
14217
14268
  this.blur?.emit(event);
14218
14269
  }
14219
14270
  else {
14220
14271
  this.focus?.emit(event);
14221
14272
  }
14222
- }
14223
- getTextareaStatus() {
14224
- if (this.disabled)
14225
- return 'sd-textarea--disabled';
14226
- if (this.hovered)
14227
- return 'sd-textarea--hovered';
14228
- if (this.focused)
14229
- return 'sd-textarea--focused';
14230
- return '';
14231
- }
14232
- getMaxLengthCounter() {
14233
- if (this.maxLength === undefined) {
14234
- return null;
14235
- }
14236
- const currentLength = (this.internalValue || '').length;
14237
- return `${currentLength}/${this.maxLength}`;
14238
- }
14239
- hasFooter() {
14240
- return this.helpText !== undefined || this.maxLength !== undefined;
14241
- }
14273
+ };
14242
14274
  render() {
14243
- const maxLengthCounter = this.getMaxLengthCounter();
14244
- return (hAsync("div", { key: '05fa25ff5bc2a8a0927fbc5301c1404a92e26d5c', class: {
14245
- 'sd-textarea': true,
14246
- [this.getTextareaStatus()]: true,
14247
- }, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, hAsync("div", { key: 'a15fabde4ef35369129cb638aa0a680f4c8e231c', class: "sd-textarea__content" }, hAsync("textarea", { key: '1967728740bfa9b749040eefbd813116f281db91', name: this.name, ref: el => (this.nativeEl = el), class: `sd-textarea__native ${this.textareaClass}`, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, autofocus: this.autoFocus, maxLength: this.maxLength, onInput: this.handleInput.bind(this), onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event) })), this.hasFooter() && (hAsync("div", { key: 'ad466295bab42461aeb7a29e81ca147cc473cbea', class: "sd-textarea__footer" }, this.helpText !== undefined && hAsync("span", { key: 'd3ad4c9ae5e16114b2b1216ae643c5a53b7bd02a', class: "sd-textarea__help-text" }, this.helpText), maxLengthCounter !== null && hAsync("span", { key: 'bd8ee146625f96e4b19b15247ca72a3b0816d2a9', class: "sd-textarea__counter" }, maxLengthCounter)))));
14275
+ const cssVars = {
14276
+ '--sd-textarea-font-size': `${TEXTAREA_TOKENS.fontSize}px`,
14277
+ '--sd-textarea-line-height': `${TEXTAREA_TOKENS.lineHeight}px`,
14278
+ '--sd-textarea-font-weight': TEXTAREA_TOKENS.fontWeight,
14279
+ '--sd-textarea-padding-x': `${TEXTAREA_TOKENS.paddingX}px`,
14280
+ '--sd-textarea-padding-y': `${TEXTAREA_TOKENS.paddingY}px`,
14281
+ '--sd-textarea-radius': `${TEXTAREA_TOKENS.radius}px`,
14282
+ '--sd-textarea-text-color': TEXTAREA_COLORS.text.default,
14283
+ '--sd-textarea-placeholder-color': TEXTAREA_COLORS.text.placeholder,
14284
+ '--sd-textarea-disabled-color': TEXTAREA_COLORS.text.disabled,
14285
+ '--sd-textarea-bg-color': TEXTAREA_COLORS.bg.default,
14286
+ '--sd-textarea-disabled-bg-color': TEXTAREA_COLORS.bg.disabled,
14287
+ '--sd-textarea-border-color': TEXTAREA_COLORS.border.default,
14288
+ '--sd-textarea-resizer-color': TEXTAREA_COLORS.resizer.color,
14289
+ // sd-field 시스템 변수 override (textarea는 고정 높이가 아닌 auto)
14290
+ '--sd-system-size-field-sm-height': 'auto',
14291
+ '--sd-system-radius-field-sm': `${TEXTAREA_TOKENS.radius}px`,
14292
+ };
14293
+ return (hAsync("sd-field", { key: '390028112d84c22766c6e00fa3625312b8096629', name: this.name, label: this.label, addonLabel: this.addonLabel, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, hAsync("div", { key: '026ec0293049da167e7dbab5d3a28593d5e6b291', class: "sd-textarea__content" }, hAsync("textarea", { key: 'd30b5e1bc61535c1c350f09bf2ea289f0b09001b', name: this.name, ref: el => (this.nativeEl = el), class: `sd-textarea__native ${this.textareaClass}`, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, autofocus: this.autoFocus, maxLength: this.maxLength, rows: this.rows, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.textareaStyle }))));
14248
14294
  }
14249
14295
  static get watchers() { return {
14250
14296
  "value": [{
@@ -14260,18 +14306,34 @@ class SdTextarea {
14260
14306
  "$tagName$": "sd-textarea",
14261
14307
  "$members$": {
14262
14308
  "value": [1025],
14263
- "name": [1],
14309
+ "placeholder": [1],
14264
14310
  "disabled": [4],
14311
+ "readonly": [4],
14265
14312
  "autoFocus": [4, "auto-focus"],
14266
14313
  "textareaClass": [1, "textarea-class"],
14267
- "helpText": [1, "help-text"],
14314
+ "textareaStyle": [16],
14268
14315
  "maxLength": [2, "max-length"],
14269
- "placeholder": [1],
14316
+ "rows": [2],
14317
+ "spellcheck": [4],
14318
+ "width": [8],
14319
+ "label": [1],
14320
+ "addonLabel": [1, "addon-label"],
14321
+ "hint": [1],
14322
+ "errorMessage": [1, "error-message"],
14323
+ "icon": [16],
14324
+ "labelTooltip": [1, "label-tooltip"],
14325
+ "labelTooltipProps": [16],
14326
+ "rules": [16],
14327
+ "error": [1028],
14328
+ "status": [1],
14329
+ "focused": [1028],
14330
+ "hovered": [1028],
14270
14331
  "internalValue": [32],
14271
- "focused": [32],
14272
- "hovered": [32],
14273
- "sdFocus": [64],
14274
- "getNativeElement": [64]
14332
+ "sdGetNativeElement": [64],
14333
+ "sdValidate": [64],
14334
+ "sdReset": [64],
14335
+ "sdResetValidate": [64],
14336
+ "sdFocus": [64]
14275
14337
  },
14276
14338
  "$listeners$": undefined,
14277
14339
  "$lazyBundleId$": "-",
@@ -14334,10 +14396,10 @@ class SdToast {
14334
14396
  render() {
14335
14397
  const typeConfig = TOAST_TYPE_CONFIG[this.type] ?? TOAST_TYPE_CONFIG.default;
14336
14398
  const iconSize = Number(TOAST_LAYOUT.iconSize);
14337
- return (hAsync("div", { key: '630fa227d71315f8e0e61bb19d0f37ca8363b856', style: {
14399
+ return (hAsync("div", { key: 'cb42937774233de10872edb8414db88f03868eb3', style: {
14338
14400
  '--sd-toast-bg': typeConfig.bg,
14339
14401
  '--sd-toast-text': typeConfig.content,
14340
- } }, hAsync("div", { key: '49fd9cb53f3c12aa372b44191ccd9f09cc159deb', class: "sd-toast", role: "status", "aria-live": "polite", "aria-atomic": "true" }, this.icon && (hAsync("div", { key: 'c57ccceb89350863b19f00b7d725c20ddde33789', class: "sd-toast__icon" }, hAsync("sd-icon", { key: 'f17a78f7e326005117d69dddcb03e8c0a1443efe', name: this.icon, size: iconSize, color: typeConfig.content }))), hAsync("div", { key: '713c2c40003b17f29c6921826b4ef3a68d201761', class: "sd-toast__content" }, hAsync("span", { key: '50e48da188d6ab805d7cce55705be5da19207724', class: "sd-toast__message" }, this.message)), this.link && (hAsync("a", { key: 'f04fa2c7386cfb1655bfcfd76e6c1dcb1c5c1ea4', href: this.link, class: "sd-toast__link", target: "_blank", rel: "noopener noreferrer" }, this.linkLabel || this.link)), this.useClose && (hAsync("sd-ghost-button", { key: '994248033b0d762693a9bacded1454ae1b66c770', class: "sd-toast__close", icon: "close", ariaLabel: "close", size: "xs", onClick: () => this.close.emit() })))));
14402
+ } }, hAsync("div", { key: 'e58b3335c4d7c450ef3686c53138636502c4e0f3', class: "sd-toast", role: "status", "aria-live": "polite", "aria-atomic": "true" }, this.icon && (hAsync("div", { key: '62e42c814ab2f15d563b3f75c4e9dd3e559318a0', class: "sd-toast__icon" }, hAsync("sd-icon", { key: '3e346baecd3207ee817ba843427ed2076fd7cc7c', name: this.icon, size: iconSize, color: typeConfig.content }))), hAsync("div", { key: '700c7127a1d59409103b5ceb917e584020078736', class: "sd-toast__content" }, hAsync("span", { key: 'd4165f0e324048edcb2492f3050795d26ce1fc86', class: "sd-toast__message" }, this.message)), this.link && (hAsync("a", { key: 'f87089865b4e4fd5b488185478c453641920ac92', href: this.link, class: "sd-toast__link", target: "_blank", rel: "noopener noreferrer" }, this.linkLabel || this.link)), this.useClose && (hAsync("sd-ghost-button", { key: '33de3a35d1532cd15215751996827a462a7b8cad', class: "sd-toast__close", icon: "close", ariaLabel: "close", size: "xs", onClick: () => this.close.emit() })))));
14341
14403
  }
14342
14404
  static get style() { return sdToastCss(); }
14343
14405
  static get cmpMeta() { return {
@@ -14589,7 +14651,7 @@ class SdToastContainer {
14589
14651
  const activeToasts = toasts.filter(t => t.state !== 'exiting').reverse();
14590
14652
  const indexMap = new Map();
14591
14653
  activeToasts.forEach((t, i) => indexMap.set(t.id, i));
14592
- return (hAsync("div", { key: '857b7a794e3dd945d706744519456ad033672760', class: "sd-toast-container", style: this.getContainerStyles(), onMouseEnter: () => {
14654
+ return (hAsync("div", { key: '7d2c4a095a0762710024c4c102ce49c7c7163368', class: "sd-toast-container", style: this.getContainerStyles(), onMouseEnter: () => {
14593
14655
  this.expanded = true;
14594
14656
  this.pauseTimers();
14595
14657
  }, onMouseLeave: () => {
@@ -14664,7 +14726,7 @@ class SdToggle {
14664
14726
  this.change.emit(newValue);
14665
14727
  };
14666
14728
  render() {
14667
- return (hAsync("label", { key: '2a50a4c8bd89f40db18b78ad5e5ed5885596f0d0', "aria-label": this.label || 'toggle', class: this.toggleClasses }, hAsync("input", { key: 'cfdea2ecd3d5946f3b4264d05da09af6e82ca4cd', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), this.label && hAsync("span", { key: 'f27cc85d92d47649f31e096ba09894c85a934c52', class: "sd-toggle__label" }, this.label), hAsync("div", { key: '4a19cae7fdc7e3b12e03281e31b8b3a2a4cfc88b', class: "sd-toggle__track" }, hAsync("div", { key: 'e99a72c39e20e8ea6b4d2df14e74c592b3b0eb22', class: "sd-toggle__thumb" }))));
14729
+ return (hAsync("label", { key: '9f4cf71a2aab588deb68d8e6908f0988ddbacb90', "aria-label": this.label || 'toggle', class: this.toggleClasses }, hAsync("input", { key: '6d1279761ea384a233bff234c549030709fd4ea3', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), this.label && hAsync("span", { key: '7ecd96f5e2c48fda17ed0086ab3cc8bc1caab458', class: "sd-toggle__label" }, this.label), hAsync("div", { key: '26f4d468e4ff0c4473e2ce00b7e69a855a249a96', class: "sd-toggle__track" }, hAsync("div", { key: '3a7f4019197cfa23dc268ee95308e60d7159ba28', class: "sd-toggle__thumb" }))));
14668
14730
  }
14669
14731
  static get style() { return sdToggleCss(); }
14670
14732
  static get cmpMeta() { return {
@@ -14720,7 +14782,7 @@ class SdToggleButton {
14720
14782
  this.change.emit(newValue);
14721
14783
  };
14722
14784
  render() {
14723
- return (hAsync("label", { key: '964590e261c212de41cae1cbb6e7e2054182d1f6', class: this.buttonClasses, "aria-label": this.label || 'toggle button' }, this.label, hAsync("input", { key: 'f1bfd190408a6e2899cdcd1d66688b94a8d2ecc0', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
14785
+ return (hAsync("label", { key: '9d98201d5ab361d0d2d5c8c61ce1e5b129f4d588', class: this.buttonClasses, "aria-label": this.label || 'toggle button' }, this.label, hAsync("input", { key: 'a745715a752bf99a94ab01d8c07c87d0f507a8ef', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
14724
14786
  }
14725
14787
  static get style() { return sdToggleButtonCss(); }
14726
14788
  static get cmpMeta() { return {
@@ -14848,14 +14910,14 @@ class SdTooltip {
14848
14910
  const toggleTooltip = () => (this.showTooltip = !this.showTooltip);
14849
14911
  const divTrigger = trigger === 'hover' ? hoverTrigger : this.label ? {} : { onClick: toggleTooltip };
14850
14912
  const buttonClickTrigger = trigger === 'click' && this.label ? { onSdClick: toggleTooltip } : {};
14851
- return (hAsync(Fragment, { key: '45662c35d1eb8cd1f23e0c62646a02fd244fee13' }, hAsync("div", { key: '7f04bfcc31aecad132ce95eeb1a6d936f79189ee', class: `sd-tooltip-trigger ${this.sdClass || ''}`, ...divTrigger }, this.label ? (hAsync("sd-button", { ref: el => (this.buttonEl = el), label: this.label, icon: icon, size: this.buttonSize ?? 'sm', color: color, variant: this.buttonVariant ?? 'primary', class: "sd-tooltip", ...buttonClickTrigger })) : (hAsync("sd-icon", { ref: el => (this.buttonEl = el), name: icon, size: this.iconSize ?? 12, color: color, class: "sd-tooltip" }))), this.showTooltip && (hAsync("sd-floating-portal", { key: '95c16d600733dca5f40d06b222b422bd48ddb2dd', parentRef: this.buttonEl, onSdClose: this.handleClose.bind(this), placement: placement, offset: this.tooltipOffset }, hAsync("div", { key: '84b63cb44fbe9e7a81e033acde6be32b72ed24ba', ref: el => (this.menuEl = el), class: {
14913
+ return (hAsync(Fragment, { key: '2e854c5a056af93e65460500da199ddd763de777' }, hAsync("div", { key: 'aa5e250e4d371c4a54401d367fdf647cefb6aecc', class: `sd-tooltip-trigger ${this.sdClass || ''}`, ...divTrigger }, this.label ? (hAsync("sd-button", { ref: el => (this.buttonEl = el), label: this.label, icon: icon, size: this.buttonSize ?? 'sm', color: color, variant: this.buttonVariant ?? 'primary', class: "sd-tooltip", ...buttonClickTrigger })) : (hAsync("sd-icon", { ref: el => (this.buttonEl = el), name: icon, size: this.iconSize ?? 12, color: color, class: "sd-tooltip" }))), this.showTooltip && (hAsync("sd-floating-portal", { key: 'f94aa0d5730b7f585f943b60bf39e4248d0b695e', parentRef: this.buttonEl, onSdClose: this.handleClose.bind(this), placement: placement, offset: this.tooltipOffset }, hAsync("div", { key: '76ece6c53c4daad54a13950b616bb7edd0827f81', ref: el => (this.menuEl = el), class: {
14852
14914
  'sd-floating-menu': true,
14853
14915
  [`sd-floating-menu--${tooltipType}`]: true,
14854
14916
  [`sd-floating-menu--${placement}`]: true,
14855
14917
  }, style: {
14856
14918
  '--sd-floating-bg': typeConfig.bg,
14857
14919
  '--sd-floating-content': typeConfig.content,
14858
- }, onMouseEnter: () => this.show(), onMouseLeave: () => this.startHideTimer() }, hAsync("i", { key: 'c05e9ecb128e780f3596e8e17b6796255e21b61e', class: `sd-floating-menu__arrow sd-floating-menu__arrow--${placement}` }, hAsync(TooltipArrow, { key: 'fa56346eb836456d4a646cd2d3959e2c4c98c2d7' })), hAsync("div", { key: '926e918d55db0f79e5e776b341fe4d0d6b0bf574', class: "sd-floating-menu__content", innerHTML: this.slotContentHTML }))))));
14920
+ }, onMouseEnter: () => this.show(), onMouseLeave: () => this.startHideTimer() }, hAsync("i", { key: '4beed6bf9afbccd072c2c8ab9885d7a8bde99284', class: `sd-floating-menu__arrow sd-floating-menu__arrow--${placement}` }, hAsync(TooltipArrow, { key: 'e73b4c9085c57f40410ecc0a7ec758019418899e' })), hAsync("div", { key: '8dcd58077836c846fafb948dbf0c77e149987818', class: "sd-floating-menu__content", innerHTML: this.slotContentHTML }))))));
14859
14921
  }
14860
14922
  static get style() { return sdTooltipCss(); }
14861
14923
  static get cmpMeta() { return {
package/hydrate/index.mjs CHANGED
@@ -4916,6 +4916,7 @@ const input = {
4916
4916
  sm: {
4917
4917
  height: "28",
4918
4918
  paddingX: "12",
4919
+ paddingY: "4",
4919
4920
  gap: "8",
4920
4921
  radius: "4",
4921
4922
  typography: {
@@ -4933,7 +4934,11 @@ const input = {
4933
4934
  fontSize: "16",
4934
4935
  lineHeight: "26"}
4935
4936
  },
4937
+ border: {
4938
+ "default": "#AAAAAA"},
4936
4939
  bg: {
4940
+ "default": "#FFFFFF",
4941
+ disabled: "#E1E1E1",
4937
4942
  barcode: "#FAFAA1"
4938
4943
  },
4939
4944
  text: {
@@ -4942,7 +4947,11 @@ const input = {
4942
4947
  disabled: "#888888"},
4943
4948
  icon: {
4944
4949
  "default": "#888888"
4945
- }};
4950
+ },
4951
+ resizer: {
4952
+ color: "#AAAAAA"
4953
+ }
4954
+ };
4946
4955
  var inputTokens = {
4947
4956
  input: input
4948
4957
  };
@@ -14155,7 +14164,21 @@ class SdTextLink {
14155
14164
  }; }
14156
14165
  }
14157
14166
 
14158
- const sdTextareaCss = () => `sd-textarea{display:block}sd-textarea .sd-textarea{display:flex;flex-direction:column;color:#333333;font-size:12px;line-height:20px}sd-textarea .sd-textarea .sd-textarea__content{width:100%;display:flex;border:1px solid #AAAAAA;border-radius:4px;background:white}sd-textarea .sd-textarea .sd-textarea__content .sd-textarea__native{width:100%;min-height:100px;border:none;outline:none;background:transparent;padding:4px 8px;font-family:inherit;font-size:12px;line-height:20px;color:#333333;resize:vertical}sd-textarea .sd-textarea .sd-textarea__content .sd-textarea__native::placeholder{color:#AAAAAA}sd-textarea .sd-textarea--hovered .sd-textarea__content,sd-textarea .sd-textarea--focused .sd-textarea__content{border-color:#0075FF;box-shadow:0 0 4px 0 rgba(0, 113, 255, 0.4)}sd-textarea .sd-textarea--disabled{cursor:not-allowed !important;box-shadow:none !important}sd-textarea .sd-textarea--disabled .sd-textarea__content{background:#EEEEEE !important;border:1px solid #CCCCCC !important;color:#888888 !important}sd-textarea .sd-textarea--disabled .sd-textarea__content .sd-textarea__native{cursor:not-allowed !important;color:#888888 !important}sd-textarea .sd-textarea .sd-textarea__footer{display:flex;justify-content:space-between;align-items:center;margin-top:4px;font-size:12px;line-height:20px}sd-textarea .sd-textarea .sd-textarea__help-text{font-size:12px;line-height:20px;font-weight:400;color:#222222}sd-textarea .sd-textarea .sd-textarea__counter{color:#CCCCCC;margin-left:auto}`;
14167
+ const TEXTAREA_TOKENS = {
14168
+ paddingX: inputTokens.input.sm.paddingX,
14169
+ paddingY: inputTokens.input.sm.paddingY,
14170
+ radius: inputTokens.input.sm.radius,
14171
+ fontSize: inputTokens.input.sm.typography.fontSize,
14172
+ lineHeight: inputTokens.input.sm.typography.lineHeight,
14173
+ fontWeight: inputTokens.input.sm.typography.fontWeight};
14174
+ const TEXTAREA_COLORS = {
14175
+ text: inputTokens.input.text,
14176
+ bg: inputTokens.input.bg,
14177
+ border: inputTokens.input.border,
14178
+ resizer: inputTokens.input.resizer,
14179
+ };
14180
+
14181
+ const sdTextareaCss = () => `sd-textarea{display:inline-flex}sd-textarea .sd-textarea__content{width:100%;display:flex}sd-textarea .sd-textarea__content .sd-textarea__native{width:100%;min-height:100px;border:none;outline:none;background:transparent;padding:var(--sd-textarea-padding-y) var(--sd-textarea-padding-x);font-family:inherit;font-size:var(--sd-textarea-font-size);line-height:var(--sd-textarea-line-height);font-weight:var(--sd-textarea-font-weight);color:var(--sd-textarea-text-color);resize:vertical}sd-textarea .sd-textarea__content .sd-textarea__native::placeholder{color:var(--sd-textarea-placeholder-color)}sd-textarea .sd-textarea__content .sd-textarea__native:disabled{cursor:not-allowed;color:var(--sd-textarea-disabled-color)}`;
14159
14182
 
14160
14183
  class SdTextarea {
14161
14184
  constructor(hostRef) {
@@ -14166,17 +14189,33 @@ class SdTextarea {
14166
14189
  }
14167
14190
  get host() { return getElement(this); }
14168
14191
  value = null;
14169
- name;
14192
+ placeholder = '입력해 주세요.';
14170
14193
  disabled = false;
14194
+ readonly = false;
14171
14195
  autoFocus = false;
14172
14196
  textareaClass = '';
14173
- helpText;
14197
+ textareaStyle = {};
14174
14198
  maxLength;
14175
- placeholder = '입력해 주세요.';
14176
- internalValue = null;
14199
+ rows;
14200
+ spellcheck = false;
14201
+ width = '';
14202
+ // props - sd-field
14203
+ label = '';
14204
+ addonLabel = '';
14205
+ hint = '';
14206
+ errorMessage = '';
14207
+ icon = undefined;
14208
+ labelTooltip = '';
14209
+ labelTooltipProps = null;
14210
+ rules = [];
14211
+ error = false;
14212
+ status;
14177
14213
  focused = false;
14178
14214
  hovered = false;
14215
+ internalValue = null;
14179
14216
  nativeEl = undefined;
14217
+ formField;
14218
+ name = nanoid();
14180
14219
  input;
14181
14220
  focus;
14182
14221
  blur;
@@ -14189,12 +14228,21 @@ class SdTextarea {
14189
14228
  this.input?.emit(this.value);
14190
14229
  }
14191
14230
  }
14192
- async sdFocus() {
14193
- this.nativeEl?.focus();
14194
- }
14195
- async getNativeElement() {
14231
+ async sdGetNativeElement() {
14196
14232
  return this.nativeEl || null;
14197
14233
  }
14234
+ async sdValidate() {
14235
+ this.formField?.sdValidate();
14236
+ }
14237
+ async sdReset() {
14238
+ this.formField?.sdReset();
14239
+ }
14240
+ async sdResetValidate() {
14241
+ this.formField?.sdResetValidation();
14242
+ }
14243
+ async sdFocus() {
14244
+ this.formField?.sdFocus();
14245
+ }
14198
14246
  componentWillLoad() {
14199
14247
  if (this.value !== null && this.value !== undefined) {
14200
14248
  this.internalValue = this.value;
@@ -14205,44 +14253,42 @@ class SdTextarea {
14205
14253
  this.nativeEl?.focus();
14206
14254
  }
14207
14255
  }
14208
- handleInput(event) {
14256
+ handleInput = (event) => {
14209
14257
  const target = event.target;
14210
14258
  this.internalValue = target.value;
14211
- }
14212
- handleFocus(type, event) {
14259
+ };
14260
+ handleFocus = async (type, event) => {
14213
14261
  this.focused = type === 'focus';
14214
14262
  if (type === 'blur') {
14263
+ if (this.rules && this.rules.length > 0) {
14264
+ await this.formField?.sdValidate();
14265
+ }
14215
14266
  this.blur?.emit(event);
14216
14267
  }
14217
14268
  else {
14218
14269
  this.focus?.emit(event);
14219
14270
  }
14220
- }
14221
- getTextareaStatus() {
14222
- if (this.disabled)
14223
- return 'sd-textarea--disabled';
14224
- if (this.hovered)
14225
- return 'sd-textarea--hovered';
14226
- if (this.focused)
14227
- return 'sd-textarea--focused';
14228
- return '';
14229
- }
14230
- getMaxLengthCounter() {
14231
- if (this.maxLength === undefined) {
14232
- return null;
14233
- }
14234
- const currentLength = (this.internalValue || '').length;
14235
- return `${currentLength}/${this.maxLength}`;
14236
- }
14237
- hasFooter() {
14238
- return this.helpText !== undefined || this.maxLength !== undefined;
14239
- }
14271
+ };
14240
14272
  render() {
14241
- const maxLengthCounter = this.getMaxLengthCounter();
14242
- return (hAsync("div", { key: '05fa25ff5bc2a8a0927fbc5301c1404a92e26d5c', class: {
14243
- 'sd-textarea': true,
14244
- [this.getTextareaStatus()]: true,
14245
- }, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, hAsync("div", { key: 'a15fabde4ef35369129cb638aa0a680f4c8e231c', class: "sd-textarea__content" }, hAsync("textarea", { key: '1967728740bfa9b749040eefbd813116f281db91', name: this.name, ref: el => (this.nativeEl = el), class: `sd-textarea__native ${this.textareaClass}`, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, autofocus: this.autoFocus, maxLength: this.maxLength, onInput: this.handleInput.bind(this), onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event) })), this.hasFooter() && (hAsync("div", { key: 'ad466295bab42461aeb7a29e81ca147cc473cbea', class: "sd-textarea__footer" }, this.helpText !== undefined && hAsync("span", { key: 'd3ad4c9ae5e16114b2b1216ae643c5a53b7bd02a', class: "sd-textarea__help-text" }, this.helpText), maxLengthCounter !== null && hAsync("span", { key: 'bd8ee146625f96e4b19b15247ca72a3b0816d2a9', class: "sd-textarea__counter" }, maxLengthCounter)))));
14273
+ const cssVars = {
14274
+ '--sd-textarea-font-size': `${TEXTAREA_TOKENS.fontSize}px`,
14275
+ '--sd-textarea-line-height': `${TEXTAREA_TOKENS.lineHeight}px`,
14276
+ '--sd-textarea-font-weight': TEXTAREA_TOKENS.fontWeight,
14277
+ '--sd-textarea-padding-x': `${TEXTAREA_TOKENS.paddingX}px`,
14278
+ '--sd-textarea-padding-y': `${TEXTAREA_TOKENS.paddingY}px`,
14279
+ '--sd-textarea-radius': `${TEXTAREA_TOKENS.radius}px`,
14280
+ '--sd-textarea-text-color': TEXTAREA_COLORS.text.default,
14281
+ '--sd-textarea-placeholder-color': TEXTAREA_COLORS.text.placeholder,
14282
+ '--sd-textarea-disabled-color': TEXTAREA_COLORS.text.disabled,
14283
+ '--sd-textarea-bg-color': TEXTAREA_COLORS.bg.default,
14284
+ '--sd-textarea-disabled-bg-color': TEXTAREA_COLORS.bg.disabled,
14285
+ '--sd-textarea-border-color': TEXTAREA_COLORS.border.default,
14286
+ '--sd-textarea-resizer-color': TEXTAREA_COLORS.resizer.color,
14287
+ // sd-field 시스템 변수 override (textarea는 고정 높이가 아닌 auto)
14288
+ '--sd-system-size-field-sm-height': 'auto',
14289
+ '--sd-system-radius-field-sm': `${TEXTAREA_TOKENS.radius}px`,
14290
+ };
14291
+ return (hAsync("sd-field", { key: '390028112d84c22766c6e00fa3625312b8096629', name: this.name, label: this.label, addonLabel: this.addonLabel, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, hAsync("div", { key: '026ec0293049da167e7dbab5d3a28593d5e6b291', class: "sd-textarea__content" }, hAsync("textarea", { key: 'd30b5e1bc61535c1c350f09bf2ea289f0b09001b', name: this.name, ref: el => (this.nativeEl = el), class: `sd-textarea__native ${this.textareaClass}`, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, autofocus: this.autoFocus, maxLength: this.maxLength, rows: this.rows, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.textareaStyle }))));
14246
14292
  }
14247
14293
  static get watchers() { return {
14248
14294
  "value": [{
@@ -14258,18 +14304,34 @@ class SdTextarea {
14258
14304
  "$tagName$": "sd-textarea",
14259
14305
  "$members$": {
14260
14306
  "value": [1025],
14261
- "name": [1],
14307
+ "placeholder": [1],
14262
14308
  "disabled": [4],
14309
+ "readonly": [4],
14263
14310
  "autoFocus": [4, "auto-focus"],
14264
14311
  "textareaClass": [1, "textarea-class"],
14265
- "helpText": [1, "help-text"],
14312
+ "textareaStyle": [16],
14266
14313
  "maxLength": [2, "max-length"],
14267
- "placeholder": [1],
14314
+ "rows": [2],
14315
+ "spellcheck": [4],
14316
+ "width": [8],
14317
+ "label": [1],
14318
+ "addonLabel": [1, "addon-label"],
14319
+ "hint": [1],
14320
+ "errorMessage": [1, "error-message"],
14321
+ "icon": [16],
14322
+ "labelTooltip": [1, "label-tooltip"],
14323
+ "labelTooltipProps": [16],
14324
+ "rules": [16],
14325
+ "error": [1028],
14326
+ "status": [1],
14327
+ "focused": [1028],
14328
+ "hovered": [1028],
14268
14329
  "internalValue": [32],
14269
- "focused": [32],
14270
- "hovered": [32],
14271
- "sdFocus": [64],
14272
- "getNativeElement": [64]
14330
+ "sdGetNativeElement": [64],
14331
+ "sdValidate": [64],
14332
+ "sdReset": [64],
14333
+ "sdResetValidate": [64],
14334
+ "sdFocus": [64]
14273
14335
  },
14274
14336
  "$listeners$": undefined,
14275
14337
  "$lazyBundleId$": "-",
@@ -14332,10 +14394,10 @@ class SdToast {
14332
14394
  render() {
14333
14395
  const typeConfig = TOAST_TYPE_CONFIG[this.type] ?? TOAST_TYPE_CONFIG.default;
14334
14396
  const iconSize = Number(TOAST_LAYOUT.iconSize);
14335
- return (hAsync("div", { key: '630fa227d71315f8e0e61bb19d0f37ca8363b856', style: {
14397
+ return (hAsync("div", { key: 'cb42937774233de10872edb8414db88f03868eb3', style: {
14336
14398
  '--sd-toast-bg': typeConfig.bg,
14337
14399
  '--sd-toast-text': typeConfig.content,
14338
- } }, hAsync("div", { key: '49fd9cb53f3c12aa372b44191ccd9f09cc159deb', class: "sd-toast", role: "status", "aria-live": "polite", "aria-atomic": "true" }, this.icon && (hAsync("div", { key: 'c57ccceb89350863b19f00b7d725c20ddde33789', class: "sd-toast__icon" }, hAsync("sd-icon", { key: 'f17a78f7e326005117d69dddcb03e8c0a1443efe', name: this.icon, size: iconSize, color: typeConfig.content }))), hAsync("div", { key: '713c2c40003b17f29c6921826b4ef3a68d201761', class: "sd-toast__content" }, hAsync("span", { key: '50e48da188d6ab805d7cce55705be5da19207724', class: "sd-toast__message" }, this.message)), this.link && (hAsync("a", { key: 'f04fa2c7386cfb1655bfcfd76e6c1dcb1c5c1ea4', href: this.link, class: "sd-toast__link", target: "_blank", rel: "noopener noreferrer" }, this.linkLabel || this.link)), this.useClose && (hAsync("sd-ghost-button", { key: '994248033b0d762693a9bacded1454ae1b66c770', class: "sd-toast__close", icon: "close", ariaLabel: "close", size: "xs", onClick: () => this.close.emit() })))));
14400
+ } }, hAsync("div", { key: 'e58b3335c4d7c450ef3686c53138636502c4e0f3', class: "sd-toast", role: "status", "aria-live": "polite", "aria-atomic": "true" }, this.icon && (hAsync("div", { key: '62e42c814ab2f15d563b3f75c4e9dd3e559318a0', class: "sd-toast__icon" }, hAsync("sd-icon", { key: '3e346baecd3207ee817ba843427ed2076fd7cc7c', name: this.icon, size: iconSize, color: typeConfig.content }))), hAsync("div", { key: '700c7127a1d59409103b5ceb917e584020078736', class: "sd-toast__content" }, hAsync("span", { key: 'd4165f0e324048edcb2492f3050795d26ce1fc86', class: "sd-toast__message" }, this.message)), this.link && (hAsync("a", { key: 'f87089865b4e4fd5b488185478c453641920ac92', href: this.link, class: "sd-toast__link", target: "_blank", rel: "noopener noreferrer" }, this.linkLabel || this.link)), this.useClose && (hAsync("sd-ghost-button", { key: '33de3a35d1532cd15215751996827a462a7b8cad', class: "sd-toast__close", icon: "close", ariaLabel: "close", size: "xs", onClick: () => this.close.emit() })))));
14339
14401
  }
14340
14402
  static get style() { return sdToastCss(); }
14341
14403
  static get cmpMeta() { return {
@@ -14587,7 +14649,7 @@ class SdToastContainer {
14587
14649
  const activeToasts = toasts.filter(t => t.state !== 'exiting').reverse();
14588
14650
  const indexMap = new Map();
14589
14651
  activeToasts.forEach((t, i) => indexMap.set(t.id, i));
14590
- return (hAsync("div", { key: '857b7a794e3dd945d706744519456ad033672760', class: "sd-toast-container", style: this.getContainerStyles(), onMouseEnter: () => {
14652
+ return (hAsync("div", { key: '7d2c4a095a0762710024c4c102ce49c7c7163368', class: "sd-toast-container", style: this.getContainerStyles(), onMouseEnter: () => {
14591
14653
  this.expanded = true;
14592
14654
  this.pauseTimers();
14593
14655
  }, onMouseLeave: () => {
@@ -14662,7 +14724,7 @@ class SdToggle {
14662
14724
  this.change.emit(newValue);
14663
14725
  };
14664
14726
  render() {
14665
- return (hAsync("label", { key: '2a50a4c8bd89f40db18b78ad5e5ed5885596f0d0', "aria-label": this.label || 'toggle', class: this.toggleClasses }, hAsync("input", { key: 'cfdea2ecd3d5946f3b4264d05da09af6e82ca4cd', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), this.label && hAsync("span", { key: 'f27cc85d92d47649f31e096ba09894c85a934c52', class: "sd-toggle__label" }, this.label), hAsync("div", { key: '4a19cae7fdc7e3b12e03281e31b8b3a2a4cfc88b', class: "sd-toggle__track" }, hAsync("div", { key: 'e99a72c39e20e8ea6b4d2df14e74c592b3b0eb22', class: "sd-toggle__thumb" }))));
14727
+ return (hAsync("label", { key: '9f4cf71a2aab588deb68d8e6908f0988ddbacb90', "aria-label": this.label || 'toggle', class: this.toggleClasses }, hAsync("input", { key: '6d1279761ea384a233bff234c549030709fd4ea3', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), this.label && hAsync("span", { key: '7ecd96f5e2c48fda17ed0086ab3cc8bc1caab458', class: "sd-toggle__label" }, this.label), hAsync("div", { key: '26f4d468e4ff0c4473e2ce00b7e69a855a249a96', class: "sd-toggle__track" }, hAsync("div", { key: '3a7f4019197cfa23dc268ee95308e60d7159ba28', class: "sd-toggle__thumb" }))));
14666
14728
  }
14667
14729
  static get style() { return sdToggleCss(); }
14668
14730
  static get cmpMeta() { return {
@@ -14718,7 +14780,7 @@ class SdToggleButton {
14718
14780
  this.change.emit(newValue);
14719
14781
  };
14720
14782
  render() {
14721
- return (hAsync("label", { key: '964590e261c212de41cae1cbb6e7e2054182d1f6', class: this.buttonClasses, "aria-label": this.label || 'toggle button' }, this.label, hAsync("input", { key: 'f1bfd190408a6e2899cdcd1d66688b94a8d2ecc0', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
14783
+ return (hAsync("label", { key: '9d98201d5ab361d0d2d5c8c61ce1e5b129f4d588', class: this.buttonClasses, "aria-label": this.label || 'toggle button' }, this.label, hAsync("input", { key: 'a745715a752bf99a94ab01d8c07c87d0f507a8ef', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
14722
14784
  }
14723
14785
  static get style() { return sdToggleButtonCss(); }
14724
14786
  static get cmpMeta() { return {
@@ -14846,14 +14908,14 @@ class SdTooltip {
14846
14908
  const toggleTooltip = () => (this.showTooltip = !this.showTooltip);
14847
14909
  const divTrigger = trigger === 'hover' ? hoverTrigger : this.label ? {} : { onClick: toggleTooltip };
14848
14910
  const buttonClickTrigger = trigger === 'click' && this.label ? { onSdClick: toggleTooltip } : {};
14849
- return (hAsync(Fragment, { key: '45662c35d1eb8cd1f23e0c62646a02fd244fee13' }, hAsync("div", { key: '7f04bfcc31aecad132ce95eeb1a6d936f79189ee', class: `sd-tooltip-trigger ${this.sdClass || ''}`, ...divTrigger }, this.label ? (hAsync("sd-button", { ref: el => (this.buttonEl = el), label: this.label, icon: icon, size: this.buttonSize ?? 'sm', color: color, variant: this.buttonVariant ?? 'primary', class: "sd-tooltip", ...buttonClickTrigger })) : (hAsync("sd-icon", { ref: el => (this.buttonEl = el), name: icon, size: this.iconSize ?? 12, color: color, class: "sd-tooltip" }))), this.showTooltip && (hAsync("sd-floating-portal", { key: '95c16d600733dca5f40d06b222b422bd48ddb2dd', parentRef: this.buttonEl, onSdClose: this.handleClose.bind(this), placement: placement, offset: this.tooltipOffset }, hAsync("div", { key: '84b63cb44fbe9e7a81e033acde6be32b72ed24ba', ref: el => (this.menuEl = el), class: {
14911
+ return (hAsync(Fragment, { key: '2e854c5a056af93e65460500da199ddd763de777' }, hAsync("div", { key: 'aa5e250e4d371c4a54401d367fdf647cefb6aecc', class: `sd-tooltip-trigger ${this.sdClass || ''}`, ...divTrigger }, this.label ? (hAsync("sd-button", { ref: el => (this.buttonEl = el), label: this.label, icon: icon, size: this.buttonSize ?? 'sm', color: color, variant: this.buttonVariant ?? 'primary', class: "sd-tooltip", ...buttonClickTrigger })) : (hAsync("sd-icon", { ref: el => (this.buttonEl = el), name: icon, size: this.iconSize ?? 12, color: color, class: "sd-tooltip" }))), this.showTooltip && (hAsync("sd-floating-portal", { key: 'f94aa0d5730b7f585f943b60bf39e4248d0b695e', parentRef: this.buttonEl, onSdClose: this.handleClose.bind(this), placement: placement, offset: this.tooltipOffset }, hAsync("div", { key: '76ece6c53c4daad54a13950b616bb7edd0827f81', ref: el => (this.menuEl = el), class: {
14850
14912
  'sd-floating-menu': true,
14851
14913
  [`sd-floating-menu--${tooltipType}`]: true,
14852
14914
  [`sd-floating-menu--${placement}`]: true,
14853
14915
  }, style: {
14854
14916
  '--sd-floating-bg': typeConfig.bg,
14855
14917
  '--sd-floating-content': typeConfig.content,
14856
- }, onMouseEnter: () => this.show(), onMouseLeave: () => this.startHideTimer() }, hAsync("i", { key: 'c05e9ecb128e780f3596e8e17b6796255e21b61e', class: `sd-floating-menu__arrow sd-floating-menu__arrow--${placement}` }, hAsync(TooltipArrow, { key: 'fa56346eb836456d4a646cd2d3959e2c4c98c2d7' })), hAsync("div", { key: '926e918d55db0f79e5e776b341fe4d0d6b0bf574', class: "sd-floating-menu__content", innerHTML: this.slotContentHTML }))))));
14918
+ }, onMouseEnter: () => this.show(), onMouseLeave: () => this.startHideTimer() }, hAsync("i", { key: '4beed6bf9afbccd072c2c8ab9885d7a8bde99284', class: `sd-floating-menu__arrow sd-floating-menu__arrow--${placement}` }, hAsync(TooltipArrow, { key: 'e73b4c9085c57f40410ecc0a7ec758019418899e' })), hAsync("div", { key: '8dcd58077836c846fafb948dbf0c77e149987818', class: "sd-floating-menu__content", innerHTML: this.slotContentHTML }))))));
14857
14919
  }
14858
14920
  static get style() { return sdTooltipCss(); }
14859
14921
  static get cmpMeta() { return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellmate/design-system",
3
- "version": "1.0.54",
3
+ "version": "1.0.55",
4
4
  "description": "Sellmate Design System - Web Components Library built with Stencil",
5
5
  "keywords": [
6
6
  "web-components",
@@ -1 +0,0 @@
1
- var e={input:{sm:{height:"28",paddingX:"12",gap:"8",radius:"4",typography:{fontWeight:"400",fontSize:"12",lineHeight:"20"}},md:{height:"36",paddingX:"16",gap:"12",radius:"6",typography:{fontWeight:"400",fontSize:"16",lineHeight:"26"}},bg:{barcode:"#FAFAA1"},text:{default:"#222222",placeholder:"#AAAAAA",disabled:"#888888"},icon:{default:"#888888"}}};export{e as i}
@@ -1 +0,0 @@
1
- import{p as t,H as s,c as e,h as o,t as a}from"./p-D-pFdq6g.js";import{d as n}from"./p-B3CfLqLu.js";import{d as c}from"./p-DSYw-7RA.js";var d={bg:"#07284A",content:"#FFFFFF"},i={bg:"#FB4444",content:"#FFFFFF"},r={bg:"#FFC700",content:"#222222"},l={bg:"#00973C",content:"#FFFFFF"},b={bg:"#005CC9",content:"#FFFFFF"};const p={default:{bg:d.bg,content:d.content},danger:{bg:i.bg,content:i.content},caution:{bg:r.bg,content:r.content},complete:{bg:l.bg,content:l.content},accent:{bg:b.bg,content:b.content}},f={iconSize:"16"},g=t(class extends s{constructor(t){super(),!1!==t&&this.__registerHost(),this.close=e(this,"sdClose",7)}icon;message;link;linkLabel;useClose=!1;type="default";close;render(){const t=p[this.type]??p.default,s=Number(f.iconSize);return o("div",{key:"630fa227d71315f8e0e61bb19d0f37ca8363b856",style:{"--sd-toast-bg":t.bg,"--sd-toast-text":t.content}},o("div",{key:"49fd9cb53f3c12aa372b44191ccd9f09cc159deb",class:"sd-toast",role:"status","aria-live":"polite","aria-atomic":"true"},this.icon&&o("div",{key:"c57ccceb89350863b19f00b7d725c20ddde33789",class:"sd-toast__icon"},o("sd-icon",{key:"f17a78f7e326005117d69dddcb03e8c0a1443efe",name:this.icon,size:s,color:t.content})),o("div",{key:"713c2c40003b17f29c6921826b4ef3a68d201761",class:"sd-toast__content"},o("span",{key:"50e48da188d6ab805d7cce55705be5da19207724",class:"sd-toast__message"},this.message)),this.link&&o("a",{key:"f04fa2c7386cfb1655bfcfd76e6c1dcb1c5c1ea4",href:this.link,class:"sd-toast__link",target:"_blank",rel:"noopener noreferrer"},this.linkLabel||this.link),this.useClose&&o("sd-ghost-button",{key:"994248033b0d762693a9bacded1454ae1b66c770",class:"sd-toast__close",icon:"close",ariaLabel:"close",size:"xs",onClick:()=>this.close.emit()})))}static get style(){return"sd-toast{display:block;width:fit-content;height:fit-content}sd-toast .sd-toast{display:flex;width:fit-content;align-items:center;gap:var(--sd-toast-gap, 16px);padding:var(--sd-toast-padding-y, 12px) var(--sd-toast-padding-x, 24px);border-radius:var(--sd-toast-radius, 8px);background-color:var(--sd-toast-bg);color:var(--sd-toast-text);box-shadow:2px 2px 8px 2px rgba(0, 0, 0, 0.2)}sd-toast .sd-toast__icon{display:flex;align-items:center;flex-shrink:0}sd-toast .sd-toast__content{display:flex;flex:1}sd-toast .sd-toast__message{font-size:14px;line-height:24px;font-weight:700;white-space:nowrap}sd-toast .sd-toast__link{font-size:14px;line-height:24px;font-weight:700;color:var(--sd-toast-text);text-decoration:underline;cursor:pointer;transition:opacity 0.2s ease;margin-left:4px}sd-toast .sd-toast__link:hover{opacity:0.8}sd-toast .sd-toast__button{flex-shrink:0}sd-toast .sd-toast__button button{color:var(--button-text-color, inherit) !important}sd-toast .sd-toast__close{flex-shrink:0}"}},[512,"sd-toast",{icon:[1],message:[1],link:[1],linkLabel:[1,"link-label"],useClose:[4,"use-close"],type:[1]}]);function h(){"undefined"!=typeof customElements&&["sd-toast","sd-ghost-button","sd-icon"].forEach((t=>{switch(t){case"sd-toast":customElements.get(a(t))||customElements.define(a(t),g);break;case"sd-ghost-button":customElements.get(a(t))||n();break;case"sd-icon":customElements.get(a(t))||c()}}))}export{g as S,h as d}
@@ -1 +0,0 @@
1
- import{r as t,c as e,g as a,h as s}from"./p-DsU722JF.js";const r=class{constructor(a){t(this,a),this.input=e(this,"sdUpdate",7),this.focus=e(this,"sdFocus",7),this.blur=e(this,"sdBlur",7)}get host(){return a(this)}value=null;name;disabled=!1;autoFocus=!1;textareaClass="";helpText;maxLength;placeholder="입력해 주세요.";internalValue=null;focused=!1;hovered=!1;nativeEl=void 0;input;focus;blur;valueChanged(t){this.internalValue=t}internalValueChanged(t){t!==this.value&&(this.value=t,this.input?.emit(this.value))}async sdFocus(){this.nativeEl?.focus()}async getNativeElement(){return this.nativeEl||null}componentWillLoad(){null!=this.value&&(this.internalValue=this.value)}componentDidLoad(){this.autoFocus&&this.nativeEl?.focus()}handleInput(t){this.internalValue=t.target.value}handleFocus(t,e){this.focused="focus"===t,"blur"===t?this.blur?.emit(e):this.focus?.emit(e)}getTextareaStatus(){return this.disabled?"sd-textarea--disabled":this.hovered?"sd-textarea--hovered":this.focused?"sd-textarea--focused":""}getMaxLengthCounter(){return void 0===this.maxLength?null:`${(this.internalValue||"").length}/${this.maxLength}`}hasFooter(){return void 0!==this.helpText||void 0!==this.maxLength}render(){const t=this.getMaxLengthCounter();return s("div",{key:"05fa25ff5bc2a8a0927fbc5301c1404a92e26d5c",class:{"sd-textarea":!0,[this.getTextareaStatus()]:!0},onMouseEnter:()=>this.hovered=!0,onMouseLeave:()=>this.hovered=!1},s("div",{key:"a15fabde4ef35369129cb638aa0a680f4c8e231c",class:"sd-textarea__content"},s("textarea",{key:"1967728740bfa9b749040eefbd813116f281db91",name:this.name,ref:t=>this.nativeEl=t,class:`sd-textarea__native ${this.textareaClass}`,value:this.internalValue||"",placeholder:this.placeholder,disabled:this.disabled,autofocus:this.autoFocus,maxLength:this.maxLength,onInput:this.handleInput.bind(this),onFocus:t=>this.handleFocus("focus",t),onBlur:t=>this.handleFocus("blur",t)})),this.hasFooter()&&s("div",{key:"ad466295bab42461aeb7a29e81ca147cc473cbea",class:"sd-textarea__footer"},void 0!==this.helpText&&s("span",{key:"d3ad4c9ae5e16114b2b1216ae643c5a53b7bd02a",class:"sd-textarea__help-text"},this.helpText),null!==t&&s("span",{key:"bd8ee146625f96e4b19b15247ca72a3b0816d2a9",class:"sd-textarea__counter"},t)))}static get watchers(){return{value:[{valueChanged:0}],internalValue:[{internalValueChanged:0}]}}};r.style="sd-textarea{display:block}sd-textarea .sd-textarea{display:flex;flex-direction:column;color:#333333;font-size:12px;line-height:20px}sd-textarea .sd-textarea .sd-textarea__content{width:100%;display:flex;border:1px solid #AAAAAA;border-radius:4px;background:white}sd-textarea .sd-textarea .sd-textarea__content .sd-textarea__native{width:100%;min-height:100px;border:none;outline:none;background:transparent;padding:4px 8px;font-family:inherit;font-size:12px;line-height:20px;color:#333333;resize:vertical}sd-textarea .sd-textarea .sd-textarea__content .sd-textarea__native::placeholder{color:#AAAAAA}sd-textarea .sd-textarea--hovered .sd-textarea__content,sd-textarea .sd-textarea--focused .sd-textarea__content{border-color:#0075FF;box-shadow:0 0 4px 0 rgba(0, 113, 255, 0.4)}sd-textarea .sd-textarea--disabled{cursor:not-allowed !important;box-shadow:none !important}sd-textarea .sd-textarea--disabled .sd-textarea__content{background:#EEEEEE !important;border:1px solid #CCCCCC !important;color:#888888 !important}sd-textarea .sd-textarea--disabled .sd-textarea__content .sd-textarea__native{cursor:not-allowed !important;color:#888888 !important}sd-textarea .sd-textarea .sd-textarea__footer{display:flex;justify-content:space-between;align-items:center;margin-top:4px;font-size:12px;line-height:20px}sd-textarea .sd-textarea .sd-textarea__help-text{font-size:12px;line-height:20px;font-weight:400;color:#222222}sd-textarea .sd-textarea .sd-textarea__counter{color:#CCCCCC;margin-left:auto}";export{r as sd_textarea}
@@ -1 +0,0 @@
1
- var e={input:{sm:{height:"28",paddingX:"12",gap:"8",radius:"4",typography:{fontWeight:"400",fontSize:"12",lineHeight:"20"}},md:{height:"36",paddingX:"16",gap:"12",radius:"6",typography:{fontWeight:"400",fontSize:"16",lineHeight:"26"}},bg:{barcode:"#FAFAA1"},text:{default:"#222222",placeholder:"#AAAAAA",disabled:"#888888"},icon:{default:"#888888"}}};export{e as i}