@solid-design-system/components 1.26.0 → 1.28.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 (114) hide show
  1. package/dist/components/es/accordion.js +1 -1
  2. package/dist/components/es/notification.js +1 -0
  3. package/dist/components/es/solid-components2.js +1 -1
  4. package/dist/components/es/solid-element.js +1 -1
  5. package/dist/components/umd/solid-components.js +15 -15
  6. package/dist/custom-elements.json +1 -1
  7. package/dist/package/components/accordion/accordion.js +6 -4
  8. package/dist/package/components/icon/library.system.d.ts +3 -0
  9. package/dist/package/components/icon/library.system.js +7 -1
  10. package/dist/package/components/notification/notification.d.ts +31 -0
  11. package/dist/package/components/notification/notification.js +211 -0
  12. package/dist/package/solid-components.d.ts +1 -0
  13. package/dist/package/solid-components.js +20 -18
  14. package/dist/package/styles/tailwind.css.js +1 -1
  15. package/dist/styles/solid-styles.css +1 -1
  16. package/dist/versioned-components/es/accordion-group.js +1 -1
  17. package/dist/versioned-components/es/accordion.js +1 -1
  18. package/dist/versioned-components/es/badge.js +1 -1
  19. package/dist/versioned-components/es/brandshape.js +1 -1
  20. package/dist/versioned-components/es/button.js +1 -1
  21. package/dist/versioned-components/es/carousel-item.js +1 -1
  22. package/dist/versioned-components/es/carousel.js +3 -3
  23. package/dist/versioned-components/es/checkbox-group.js +1 -1
  24. package/dist/versioned-components/es/checkbox.js +1 -1
  25. package/dist/versioned-components/es/divider.js +1 -1
  26. package/dist/versioned-components/es/drawer.js +1 -1
  27. package/dist/versioned-components/es/dropdown.js +1 -1
  28. package/dist/versioned-components/es/form.js +1 -1
  29. package/dist/versioned-components/es/header.js +1 -1
  30. package/dist/versioned-components/es/icon.js +1 -1
  31. package/dist/versioned-components/es/include.js +1 -1
  32. package/dist/versioned-components/es/input.js +1 -1
  33. package/dist/versioned-components/es/link.js +1 -1
  34. package/dist/versioned-components/es/navigation-item.js +1 -1
  35. package/dist/versioned-components/es/notification.js +1 -0
  36. package/dist/versioned-components/es/popup.js +1 -1
  37. package/dist/versioned-components/es/radio-group.js +1 -1
  38. package/dist/versioned-components/es/radio.js +1 -1
  39. package/dist/versioned-components/es/solid-components2.js +1 -1
  40. package/dist/versioned-components/es/solid-element.js +1 -1
  41. package/dist/versioned-components/es/spinner.js +1 -1
  42. package/dist/versioned-components/es/switch.js +1 -1
  43. package/dist/versioned-components/es/tag.js +1 -1
  44. package/dist/versioned-components/es/teaser.js +1 -1
  45. package/dist/versioned-components/es/tooltip.js +2 -2
  46. package/dist/versioned-components/es/video.js +1 -1
  47. package/dist/versioned-package/_components/button-group/button-group.d.ts +1 -1
  48. package/dist/versioned-package/_components/button-group/button-group.js +11 -11
  49. package/dist/versioned-package/components/accordion/accordion.d.ts +1 -1
  50. package/dist/versioned-package/components/accordion/accordion.js +8 -6
  51. package/dist/versioned-package/components/accordion-group/accordion-group.d.ts +1 -1
  52. package/dist/versioned-package/components/accordion-group/accordion-group.js +3 -3
  53. package/dist/versioned-package/components/badge/badge.d.ts +1 -1
  54. package/dist/versioned-package/components/badge/badge.js +1 -1
  55. package/dist/versioned-package/components/brandshape/brandshape.d.ts +1 -1
  56. package/dist/versioned-package/components/brandshape/brandshape.js +1 -1
  57. package/dist/versioned-package/components/button/button.d.ts +1 -1
  58. package/dist/versioned-package/components/button/button.js +4 -4
  59. package/dist/versioned-package/components/carousel/carousel.d.ts +1 -1
  60. package/dist/versioned-package/components/carousel/carousel.js +6 -6
  61. package/dist/versioned-package/components/carousel-item/carousel-item.d.ts +1 -1
  62. package/dist/versioned-package/components/carousel-item/carousel-item.js +1 -1
  63. package/dist/versioned-package/components/checkbox/checkbox.d.ts +1 -1
  64. package/dist/versioned-package/components/checkbox/checkbox.js +4 -4
  65. package/dist/versioned-package/components/checkbox-group/checkbox-group.d.ts +1 -1
  66. package/dist/versioned-package/components/checkbox-group/checkbox-group.js +5 -5
  67. package/dist/versioned-package/components/divider/divider.d.ts +1 -1
  68. package/dist/versioned-package/components/divider/divider.js +2 -2
  69. package/dist/versioned-package/components/drawer/drawer.d.ts +1 -1
  70. package/dist/versioned-package/components/drawer/drawer.js +2 -2
  71. package/dist/versioned-package/components/dropdown/dropdown.d.ts +1 -1
  72. package/dist/versioned-package/components/dropdown/dropdown.js +6 -6
  73. package/dist/versioned-package/components/header/header.d.ts +1 -1
  74. package/dist/versioned-package/components/header/header.js +4 -4
  75. package/dist/versioned-package/components/icon/icon.d.ts +1 -1
  76. package/dist/versioned-package/components/icon/icon.js +1 -1
  77. package/dist/versioned-package/components/icon/library.system.d.ts +3 -0
  78. package/dist/versioned-package/components/icon/library.system.js +7 -1
  79. package/dist/versioned-package/components/include/include.d.ts +1 -1
  80. package/dist/versioned-package/components/include/include.js +1 -1
  81. package/dist/versioned-package/components/input/input.d.ts +1 -1
  82. package/dist/versioned-package/components/input/input.js +4 -4
  83. package/dist/versioned-package/components/link/link.d.ts +1 -1
  84. package/dist/versioned-package/components/link/link.js +2 -2
  85. package/dist/versioned-package/components/navigation-item/navigation-item.d.ts +1 -1
  86. package/dist/versioned-package/components/navigation-item/navigation-item.js +3 -3
  87. package/dist/versioned-package/components/notification/notification.d.ts +31 -0
  88. package/dist/versioned-package/components/notification/notification.js +211 -0
  89. package/dist/versioned-package/components/popup/popup.d.ts +1 -1
  90. package/dist/versioned-package/components/popup/popup.js +1 -1
  91. package/dist/versioned-package/components/radio/radio.d.ts +1 -1
  92. package/dist/versioned-package/components/radio/radio.js +2 -2
  93. package/dist/versioned-package/components/radio-group/radio-group.d.ts +2 -2
  94. package/dist/versioned-package/components/radio-group/radio-group.js +14 -14
  95. package/dist/versioned-package/components/spinner/spinner.d.ts +1 -1
  96. package/dist/versioned-package/components/spinner/spinner.js +1 -1
  97. package/dist/versioned-package/components/switch/switch.d.ts +1 -1
  98. package/dist/versioned-package/components/switch/switch.js +2 -2
  99. package/dist/versioned-package/components/tag/tag.d.ts +1 -1
  100. package/dist/versioned-package/components/tag/tag.js +2 -2
  101. package/dist/versioned-package/components/teaser/teaser.js +1 -1
  102. package/dist/versioned-package/components/tooltip/tooltip.d.ts +1 -1
  103. package/dist/versioned-package/components/tooltip/tooltip.js +5 -5
  104. package/dist/versioned-package/components/video/video.d.ts +1 -1
  105. package/dist/versioned-package/components/video/video.js +2 -2
  106. package/dist/versioned-package/internal/form.js +2 -2
  107. package/dist/versioned-package/solid-components.d.ts +1 -0
  108. package/dist/versioned-package/solid-components.js +20 -18
  109. package/dist/versioned-package/styles/form-control.styles.js +1 -1
  110. package/dist/versioned-package/styles/tailwind.css.js +1 -1
  111. package/dist/versioned-styles/solid-styles.css +1 -1
  112. package/dist/vscode.html-custom-data.json +141 -27
  113. package/dist/web-types.json +167 -1
  114. package/package.json +3 -3
@@ -66,7 +66,7 @@ __decorateClass([
66
66
  watch("src")
67
67
  ], SdInclude.prototype, "handleSrcChange", 1);
68
68
  SdInclude = __decorateClass([
69
- customElement("sd-1-26-0-include")
69
+ customElement("sd-1-28-0-include")
70
70
  ], SdInclude);
71
71
  export {
72
72
  SdInclude as default
@@ -71,6 +71,6 @@ export default class SdInput extends SolidElement implements SolidFormControl {
71
71
  }
72
72
  declare global {
73
73
  interface HTMLElementTagNameMap {
74
- 'sd-1-26-0-input': SdInput;
74
+ 'sd-1-28-0-input': SdInput;
75
75
  }
76
76
  }
@@ -101,7 +101,7 @@ let SdInput = class extends SolidElement {
101
101
  handleClearClick(event) {
102
102
  this.value = "";
103
103
  this.emit("sd-clear");
104
- this.emit("sd-1-26-0-input");
104
+ this.emit("sd-1-28-0-input");
105
105
  this.emit("sd-change");
106
106
  this.input.focus();
107
107
  event.stopPropagation();
@@ -113,7 +113,7 @@ let SdInput = class extends SolidElement {
113
113
  handleInput() {
114
114
  this.value = this.input.value;
115
115
  this.formControlController.updateValidity();
116
- this.emit("sd-1-26-0-input");
116
+ this.emit("sd-1-28-0-input");
117
117
  }
118
118
  handleInvalid() {
119
119
  this.formControlController.setValidity(false);
@@ -261,7 +261,7 @@ let SdInput = class extends SolidElement {
261
261
  "min-w-0 flex-grow focus:outline-none bg-transparent placeholder-neutral-700",
262
262
  this.size === "sm" ? "h-6" : "h-8",
263
263
  textSize
264
- )}" type="${this.type === "password" && this.passwordVisible ? "text" : this.type}" title="${this.title}" name="${ifDefined(this.name)}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?required="${this.required}" placeholder="${ifDefined(this.placeholder)}" minlength="${ifDefined(this.minlength)}" maxlength="${ifDefined(this.maxlength)}" min="${ifDefined(this.min)}" max="${ifDefined(this.max)}" step="${ifDefined(this.step)}" .value="${live(this.value)}" autocapitalize="${ifDefined(this.type === "password" ? "off" : this.autocapitalize)}" autocomplete="${ifDefined(this.type === "password" ? "off" : this.autocomplete)}" autocorrect="${ifDefined(this.type === "password" ? "off" : this.autocorrect)}" ?autofocus="${this.autofocus}" spellcheck="${this.spellcheck}" pattern="${ifDefined(this.pattern)}" enterkeyhint="${ifDefined(this.enterkeyhint)}" inputmode="${ifDefined(this.inputmode)}" aria-describedby="help-text" @change="${this.handleChange}" @input="${this.handleInput}" @invalid="${this.handleInvalid}" @keydown="${this.handleKeyDown}" @focus="${this.handleFocus}" @blur="${this.handleBlur}"> ${hasClearIcon ? html`<button part="clear-button" class="${cx("flex justify-center ", iconMarginLeft)}" type="button" aria-label="${this.localize.term("clearEntry")}" @click="${this.handleClearClick}" tabindex="-1"><slot name="clear-icon"><sd-1-26-0-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-1-26-0-icon></slot></button>` : ""} ${this.passwordToggle && this.type === "password" ? html`<button aria-label="${this.localize.term(this.passwordVisible ? "hidePassword" : "showPassword")}" part="password-toggle-button" class="flex items-center" type="button" @click="${this.handlePasswordToggle}" tabindex="-1">${this.passwordVisible ? html`<slot name="show-password-icon"><sd-1-26-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye"></sd-1-26-0-icon></slot>` : html`<slot name="hide-password-icon"><sd-1-26-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye-crossed-out"></sd-1-26-0-icon></slot>`}</button>` : ""} ${(this.type === "date" || this.type === "datetime-local") && !isFirefox ? html`<sd-1-26-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="calendar"></sd-1-26-0-icon>` : ""} ${this.type === "time" ? html`<sd-1-26-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="clock"></sd-1-26-0-icon>` : ""} ${isInvalid ? html`<sd-1-26-0-icon class="${cx("text-error", iconMarginLeft, iconSize)}" library="system" name="risk"></sd-1-26-0-icon>` : ""} ${isValid ? html`<sd-1-26-0-icon class="${cx("text-success", iconMarginLeft, iconSize)}" library="system" name="confirm"></sd-1-26-0-icon>` : ""} ${slots["right"] ? html`<slot name="right" part="right" class="${cx("inline-flex", iconColor, iconMarginLeft, iconSize)}"></slot>` : ""}</div></div><slot name="help-text" part="form-control-help-text" id="help-text" class="${cx("text-sm text-neutral-700", hasHelpText ? "block" : "hidden")}" aria-hidden="${hasHelpText ? "false" : "true"}">${this.helpText}</slot></div>`;
264
+ )}" type="${this.type === "password" && this.passwordVisible ? "text" : this.type}" title="${this.title}" name="${ifDefined(this.name)}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?required="${this.required}" placeholder="${ifDefined(this.placeholder)}" minlength="${ifDefined(this.minlength)}" maxlength="${ifDefined(this.maxlength)}" min="${ifDefined(this.min)}" max="${ifDefined(this.max)}" step="${ifDefined(this.step)}" .value="${live(this.value)}" autocapitalize="${ifDefined(this.type === "password" ? "off" : this.autocapitalize)}" autocomplete="${ifDefined(this.type === "password" ? "off" : this.autocomplete)}" autocorrect="${ifDefined(this.type === "password" ? "off" : this.autocorrect)}" ?autofocus="${this.autofocus}" spellcheck="${this.spellcheck}" pattern="${ifDefined(this.pattern)}" enterkeyhint="${ifDefined(this.enterkeyhint)}" inputmode="${ifDefined(this.inputmode)}" aria-describedby="help-text" @change="${this.handleChange}" @input="${this.handleInput}" @invalid="${this.handleInvalid}" @keydown="${this.handleKeyDown}" @focus="${this.handleFocus}" @blur="${this.handleBlur}"> ${hasClearIcon ? html`<button part="clear-button" class="${cx("flex justify-center ", iconMarginLeft)}" type="button" aria-label="${this.localize.term("clearEntry")}" @click="${this.handleClearClick}" tabindex="-1"><slot name="clear-icon"><sd-1-28-0-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-1-28-0-icon></slot></button>` : ""} ${this.passwordToggle && this.type === "password" ? html`<button aria-label="${this.localize.term(this.passwordVisible ? "hidePassword" : "showPassword")}" part="password-toggle-button" class="flex items-center" type="button" @click="${this.handlePasswordToggle}" tabindex="-1">${this.passwordVisible ? html`<slot name="show-password-icon"><sd-1-28-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye"></sd-1-28-0-icon></slot>` : html`<slot name="hide-password-icon"><sd-1-28-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye-crossed-out"></sd-1-28-0-icon></slot>`}</button>` : ""} ${(this.type === "date" || this.type === "datetime-local") && !isFirefox ? html`<sd-1-28-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="calendar"></sd-1-28-0-icon>` : ""} ${this.type === "time" ? html`<sd-1-28-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="clock"></sd-1-28-0-icon>` : ""} ${isInvalid ? html`<sd-1-28-0-icon class="${cx("text-error", iconMarginLeft, iconSize)}" library="system" name="risk"></sd-1-28-0-icon>` : ""} ${isValid ? html`<sd-1-28-0-icon class="${cx("text-success", iconMarginLeft, iconSize)}" library="system" name="confirm"></sd-1-28-0-icon>` : ""} ${slots["right"] ? html`<slot name="right" part="right" class="${cx("inline-flex", iconColor, iconMarginLeft, iconSize)}"></slot>` : ""}</div></div><slot name="help-text" part="form-control-help-text" id="help-text" class="${cx("text-sm text-neutral-700", hasHelpText ? "block" : "hidden")}" aria-hidden="${hasHelpText ? "false" : "true"}">${this.helpText}</slot></div>`;
265
265
  }
266
266
  };
267
267
  SdInput.styles = [
@@ -383,7 +383,7 @@ __decorateClass([
383
383
  watch("value", { waitUntilFirstUpdate: true })
384
384
  ], SdInput.prototype, "handleValueChange", 1);
385
385
  SdInput = __decorateClass([
386
- customElement("sd-1-26-0-input")
386
+ customElement("sd-1-28-0-input")
387
387
  ], SdInput);
388
388
  export {
389
389
  SdInput as default
@@ -17,6 +17,6 @@ export default class SdLink extends SolidElement {
17
17
  }
18
18
  declare global {
19
19
  interface HTMLElementTagNameMap {
20
- 'sd-1-26-0-link': SdLink;
20
+ 'sd-1-28-0-link': SdLink;
21
21
  }
22
22
  }
@@ -77,7 +77,7 @@ let SdLink = class extends SolidElement {
77
77
  };
78
78
  SdLink.styles = [
79
79
  SolidElement.styles,
80
- css`::slotted(sd-1-26-0-icon){font-size:1.25em;margin-bottom:-.25em}:host([size=sm][standalone]) ::slotted(sd-1-26-0-icon){font-size:1rem}:host([size=lg][standalone]) ::slotted(sd-1-26-0-icon){font-size:1.5rem}`
80
+ css`::slotted(sd-1-28-0-icon){font-size:1.25em;margin-bottom:-.25em}:host([size=sm][standalone]) ::slotted(sd-1-28-0-icon){font-size:1rem}:host([size=lg][standalone]) ::slotted(sd-1-28-0-icon){font-size:1.5rem}`
81
81
  ];
82
82
  __decorateClass([
83
83
  query("a")
@@ -101,7 +101,7 @@ __decorateClass([
101
101
  property()
102
102
  ], SdLink.prototype, "download", 2);
103
103
  SdLink = __decorateClass([
104
- customElement("sd-1-26-0-link")
104
+ customElement("sd-1-28-0-link")
105
105
  ], SdLink);
106
106
  export {
107
107
  SdLink as default
@@ -26,6 +26,6 @@ export default class SdNavigationItem extends SolidElement {
26
26
  }
27
27
  declare global {
28
28
  interface HTMLElementTagNameMap {
29
- 'sd-1-26-0-navigation-item': SdNavigationItem;
29
+ 'sd-1-28-0-navigation-item': SdNavigationItem;
30
30
  }
31
31
  }
@@ -105,10 +105,10 @@ let SdNavigationItem = class extends SolidElement {
105
105
  isAccordion ? "grow" : "w-full",
106
106
  slots["description"] ? "pb-1" : horizontalPaddingBottom,
107
107
  this.calculatePaddingX()
108
- )}">${this.divider && this.vertical ? html`<sd-1-26-0-divider part="divider" class="${cx("w-full transition-all absolute -top-[1px] left-0", this.calculatePaddingX())}"></sd-1-26-0-divider>` : ""} <span class="inline-flex items-center flex-auto"><slot part="content" class="inline"></slot></span>${(this.chevron || slots["children"]) && this.vertical ? html`<sd-1-26-0-icon name="chevron-down" part="chevron" library="system" color="currentColor" class="${cx(
108
+ )}">${this.divider && this.vertical ? html`<sd-1-28-0-divider part="divider" class="${cx("w-full transition-all absolute -top-[1px] left-0", this.calculatePaddingX())}"></sd-1-28-0-divider>` : ""} <span class="inline-flex items-center flex-auto"><slot part="content" class="inline"></slot></span>${(this.chevron || slots["children"]) && this.vertical ? html`<sd-1-28-0-icon name="chevron-down" part="chevron" library="system" color="currentColor" class="${cx(
109
109
  "h-6 w-6 ml-2 transition-all",
110
110
  isAccordion ? this.open ? "rotate-180" : "rotate-0" : "rotate-[270deg]"
111
- )}"></sd-1-26-0-icon>` : ""} </span>${slots["description"] && this.vertical ? html`<slot name="description" part="description" class="${cx(
111
+ )}"></sd-1-28-0-icon>` : ""} </span>${slots["description"] && this.vertical ? html`<slot name="description" part="description" class="${cx(
112
112
  "inline-block text-sm text-left text-black",
113
113
  isAccordion ? "grow" : "w-full",
114
114
  horizontalPaddingBottom,
@@ -159,7 +159,7 @@ __decorateClass([
159
159
  property({ type: Boolean, reflect: true })
160
160
  ], SdNavigationItem.prototype, "open", 2);
161
161
  SdNavigationItem = __decorateClass([
162
- customElement("sd-1-26-0-navigation-item")
162
+ customElement("sd-1-28-0-navigation-item")
163
163
  ], SdNavigationItem);
164
164
  export {
165
165
  SdNavigationItem as default
@@ -0,0 +1,31 @@
1
+ import SolidElement from '../../internal/solid-element.js';
2
+ export default class SdNotification extends SolidElement {
3
+ private autoHideTimeout;
4
+ private readonly localize;
5
+ base: HTMLElement;
6
+ open: boolean;
7
+ closable: boolean;
8
+ variant: 'info' | 'success' | 'error' | 'warning';
9
+ toastStack: 'top-right' | 'bottom-center';
10
+ duration: number;
11
+ durationIndicator: boolean;
12
+ private remainingDuration;
13
+ private startTime;
14
+ firstUpdated(): void;
15
+ private startAutoHide;
16
+ private onHover;
17
+ private onHoverEnd;
18
+ private handleCloseClick;
19
+ handleOpenChange(): Promise<void>;
20
+ handleDurationChange(): void;
21
+ show(): Promise<void>;
22
+ hide(): Promise<void>;
23
+ toast(): Promise<void>;
24
+ render(): import("lit-html").TemplateResult<1>;
25
+ static styles: import("lit").CSSResultGroup[];
26
+ }
27
+ declare global {
28
+ interface HTMLElementTagNameMap {
29
+ 'sd-1-28-0-notification': SdNotification;
30
+ }
31
+ }
@@ -0,0 +1,211 @@
1
+ import { stopAnimations, animateTo } from "../../internal/animate.js";
2
+ import { css, html } from "lit";
3
+ import { customElement } from "../../internal/register-custom-element.js";
4
+ import { setDefaultAnimation, getAnimation } from "../../utilities/animation-registry.js";
5
+ import { LocalizeController } from "../../utilities/localize.js";
6
+ import { query, property } from "lit/decorators.js";
7
+ import { waitForEvent } from "../../internal/event.js";
8
+ import { watch } from "../../internal/watch.js";
9
+ import componentStyles from "../../styles/component.styles.js";
10
+ import cx from "classix";
11
+ import SolidElement from "../../internal/solid-element.js";
12
+ var __defProp = Object.defineProperty;
13
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
14
+ var __decorateClass = (decorators, target, key, kind) => {
15
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
16
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
17
+ if (decorator = decorators[i])
18
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
19
+ if (kind && result)
20
+ __defProp(target, key, result);
21
+ return result;
22
+ };
23
+ const toastStackDefault = Object.assign(document.createElement("div"), {
24
+ className: "sd-toast-stack sd-toast-stack--top-right"
25
+ });
26
+ const toastStackBottomCenter = Object.assign(document.createElement("div"), {
27
+ className: "sd-toast-stack sd-toast-stack--bottom-center"
28
+ });
29
+ let SdNotification = class extends SolidElement {
30
+ constructor() {
31
+ super(...arguments);
32
+ this.localize = new LocalizeController(this);
33
+ this.open = false;
34
+ this.closable = false;
35
+ this.variant = "info";
36
+ this.toastStack = "top-right";
37
+ this.duration = Infinity;
38
+ this.durationIndicator = false;
39
+ this.remainingDuration = this.duration;
40
+ this.startTime = Date.now();
41
+ }
42
+ firstUpdated() {
43
+ this.base.hidden = !this.open;
44
+ }
45
+ startAutoHide() {
46
+ clearTimeout(this.autoHideTimeout);
47
+ this.startTime = Date.now();
48
+ this.remainingDuration = this.duration;
49
+ if (this.open && this.duration < Infinity) {
50
+ this.autoHideTimeout = window.setTimeout(() => this.hide(), this.duration);
51
+ }
52
+ }
53
+ onHover() {
54
+ clearTimeout(this.autoHideTimeout);
55
+ if (this.duration < Infinity) {
56
+ this.remainingDuration -= Date.now() - this.startTime;
57
+ }
58
+ }
59
+ onHoverEnd() {
60
+ this.startTime = Date.now();
61
+ clearTimeout(this.autoHideTimeout);
62
+ if (this.open && this.duration < Infinity) {
63
+ this.autoHideTimeout = window.setTimeout(() => {
64
+ this.hide();
65
+ }, this.remainingDuration);
66
+ }
67
+ }
68
+ handleCloseClick() {
69
+ this.hide();
70
+ }
71
+ async handleOpenChange() {
72
+ if (this.open) {
73
+ this.emit("sd-show");
74
+ if (this.duration < Infinity) {
75
+ this.startAutoHide();
76
+ }
77
+ await stopAnimations(this.base);
78
+ this.base.hidden = false;
79
+ const { keyframes, options } = getAnimation(this, "notification.show", { dir: this.localize.dir() });
80
+ await animateTo(this.base, keyframes, options);
81
+ this.emit("sd-after-show");
82
+ } else {
83
+ this.emit("sd-hide");
84
+ clearTimeout(this.autoHideTimeout);
85
+ await stopAnimations(this.base);
86
+ const { keyframes, options } = getAnimation(this, "notification.hide", { dir: this.localize.dir() });
87
+ await animateTo(this.base, keyframes, options);
88
+ this.base.hidden = true;
89
+ this.emit("sd-after-hide");
90
+ }
91
+ }
92
+ handleDurationChange() {
93
+ this.startAutoHide();
94
+ }
95
+ /** Shows the notification. */
96
+ async show() {
97
+ if (this.open) {
98
+ return void 0;
99
+ }
100
+ this.open = true;
101
+ return waitForEvent(this, "sd-after-show");
102
+ }
103
+ /** Hides the notification */
104
+ async hide() {
105
+ if (!this.open) {
106
+ return void 0;
107
+ }
108
+ this.open = false;
109
+ return waitForEvent(this, "sd-after-hide");
110
+ }
111
+ /**
112
+ * Displays the notification as a toast notification. This will move the notification out of its position in the DOM and, when
113
+ * dismissed, it will be removed from the DOM completely. By storing a reference to the notification, you can reuse it by
114
+ * calling this method again. The returned promise will resolve after the notification is hidden.
115
+ */
116
+ async toast() {
117
+ return new Promise((resolve) => {
118
+ const toastStack = this.toastStack === "bottom-center" ? toastStackBottomCenter : toastStackDefault;
119
+ if (toastStack.parentElement === null) {
120
+ document.body.append(toastStack);
121
+ }
122
+ toastStack.appendChild(this);
123
+ requestAnimationFrame(() => {
124
+ this.clientWidth;
125
+ this.show();
126
+ });
127
+ this.addEventListener(
128
+ "sd-after-hide",
129
+ () => {
130
+ toastStack.removeChild(this);
131
+ resolve();
132
+ if (toastStack.querySelector("sd-1-28-0-notification") === null) {
133
+ toastStack.remove();
134
+ }
135
+ },
136
+ { once: true }
137
+ );
138
+ });
139
+ }
140
+ render() {
141
+ return html`<div part="base" class="${cx("w-full overflow-hidden flex items-stretch relative m-2")}" role="alert" id="notification" aria-hidden="${this.open ? "false" : "true"}" @mouseenter="${this.onHover}" @mouseleave="${this.onHoverEnd}"><slot name="icon" part="icon" class="${cx(
142
+ "min-w-min flex items-center px-3 justify-center",
143
+ {
144
+ info: "bg-info",
145
+ success: "bg-success",
146
+ warning: "bg-warning",
147
+ error: "bg-error"
148
+ }[this.variant]
149
+ )}"><sd-1-28-0-icon name="${{
150
+ info: "info-circle",
151
+ success: "confirm-circle",
152
+ warning: "exclamation-circle",
153
+ error: "warning"
154
+ }[this.variant] || ""}" library="system" class="h-6 w-6 text-white"></sd-1-28-0-icon></slot><div part="content" class="${cx(
155
+ "h-full w-full p-1 gap-2 flex items-center justify-stretch bg-white",
156
+ "border-solid border-[1px] border-l-0 border-neutral-400"
157
+ )}"><slot part="message" class="block w-full pl-3 py-2" aria-live="polite"></slot>${this.closable ? html`<sd-1-28-0-button size="md" variant="tertiary" part="close-button" class="ml-auto flex flex-[0_0_auto] items-stretch" label="${this.localize.term("close")}" @click="${this.handleCloseClick}"><sd-1-28-0-icon name="close" library="system" color="currentColor"></sd-1-28-0-icon></sd-1-28-0-button>` : ""}</div>${this.durationIndicator ? html`<div part="duration-indicator__elapsed" id="duration-indicator__elapsed" style="${`animation-duration: ${this.duration}ms`}" class="${cx(`absolute w-0 h-[2px] bottom-0 bg-primary z-10 animate-grow`)}"></div><div part="duration-indicator__total" class="w-full h-[2px] bottom-0 absolute bg-neutral-400"></div>` : ""}</div>`;
158
+ }
159
+ };
160
+ SdNotification.styles = [
161
+ componentStyles,
162
+ SolidElement.styles,
163
+ css`:host{display:contents}#notification:hover #duration-indicator__elapsed{animation-play-state:paused!important}`
164
+ ];
165
+ __decorateClass([
166
+ query('[part~="base"]')
167
+ ], SdNotification.prototype, "base", 2);
168
+ __decorateClass([
169
+ property({ type: Boolean, reflect: true })
170
+ ], SdNotification.prototype, "open", 2);
171
+ __decorateClass([
172
+ property({ type: Boolean, reflect: true })
173
+ ], SdNotification.prototype, "closable", 2);
174
+ __decorateClass([
175
+ property({ reflect: true })
176
+ ], SdNotification.prototype, "variant", 2);
177
+ __decorateClass([
178
+ property({ reflect: true, attribute: "toast-stack" })
179
+ ], SdNotification.prototype, "toastStack", 2);
180
+ __decorateClass([
181
+ property({ type: Number })
182
+ ], SdNotification.prototype, "duration", 2);
183
+ __decorateClass([
184
+ property({ type: Boolean, reflect: true, attribute: "duration-indicator" })
185
+ ], SdNotification.prototype, "durationIndicator", 2);
186
+ __decorateClass([
187
+ watch("open", { waitUntilFirstUpdate: true })
188
+ ], SdNotification.prototype, "handleOpenChange", 1);
189
+ __decorateClass([
190
+ watch("duration")
191
+ ], SdNotification.prototype, "handleDurationChange", 1);
192
+ SdNotification = __decorateClass([
193
+ customElement("sd-1-28-0-notification")
194
+ ], SdNotification);
195
+ setDefaultAnimation("notification.show", {
196
+ keyframes: [
197
+ { opacity: 0, scale: 0.8 },
198
+ { opacity: 1, scale: 1 }
199
+ ],
200
+ options: { duration: 250, easing: "ease" }
201
+ });
202
+ setDefaultAnimation("notification.hide", {
203
+ keyframes: [
204
+ { opacity: 1, scale: 1 },
205
+ { opacity: 0, scale: 0.8 }
206
+ ],
207
+ options: { duration: 250, easing: "ease" }
208
+ });
209
+ export {
210
+ SdNotification as default
211
+ };
@@ -37,6 +37,6 @@ export default class SdPopup extends SolidElement {
37
37
  }
38
38
  declare global {
39
39
  interface HTMLElementTagNameMap {
40
- 'sd-1-26-0-popup': SdPopup;
40
+ 'sd-1-28-0-popup': SdPopup;
41
41
  }
42
42
  }
@@ -312,7 +312,7 @@ __decorateClass([
312
312
  property({ attribute: "auto-size-padding", type: Number })
313
313
  ], SdPopup.prototype, "autoSizePadding", 2);
314
314
  SdPopup = __decorateClass([
315
- customElement("sd-1-26-0-popup")
315
+ customElement("sd-1-28-0-popup")
316
316
  ], SdPopup);
317
317
  export {
318
318
  SdPopup as default
@@ -22,6 +22,6 @@ export default class SdRadio extends SolidElement {
22
22
  }
23
23
  declare global {
24
24
  interface HTMLElementTagNameMap {
25
- 'sd-1-26-0-radio': SdRadio;
25
+ 'sd-1-28-0-radio': SdRadio;
26
26
  }
27
27
  }
@@ -73,7 +73,7 @@ let SdRadio = class extends SolidElement {
73
73
  }
74
74
  render() {
75
75
  return html`<span part="base" class="${cx(
76
- "sd-1-26-0-radio group inline-flex items-start items-center text-base leading-normal text-black cursor-pointer align-middle",
76
+ "sd-1-28-0-radio group inline-flex items-start items-center text-base leading-normal text-black cursor-pointer align-middle",
77
77
  this.disabled && "hover:cursor-not-allowed",
78
78
  {
79
79
  /* sizes, fonts */
@@ -121,7 +121,7 @@ __decorateClass([
121
121
  watch("disabled", { waitUntilFirstUpdate: true })
122
122
  ], SdRadio.prototype, "handleDisabledChange", 1);
123
123
  SdRadio = __decorateClass([
124
- customElement("sd-1-26-0-radio")
124
+ customElement("sd-1-28-0-radio")
125
125
  ], SdRadio);
126
126
  export {
127
127
  SdRadio as default
@@ -4,7 +4,7 @@ import SolidElement from '../../internal/solid-element';
4
4
  import type { SolidFormControl } from '../../internal/solid-element';
5
5
  export default class SdRadioGroup extends SolidElement implements SolidFormControl {
6
6
  static dependencies: {
7
- 'sd-1-26-0-button-group': typeof SdButtonGroup;
7
+ 'sd-1-28-0-button-group': typeof SdButtonGroup;
8
8
  };
9
9
  protected readonly formControlController: FormControlController;
10
10
  private readonly hasSlotController;
@@ -47,6 +47,6 @@ export default class SdRadioGroup extends SolidElement implements SolidFormContr
47
47
  }
48
48
  declare global {
49
49
  interface HTMLElementTagNameMap {
50
- 'sd-1-26-0-radio-group': SdRadioGroup;
50
+ 'sd-1-28-0-radio-group': SdRadioGroup;
51
51
  }
52
52
  }
@@ -72,10 +72,10 @@ let SdRadioGroup = class extends SolidElement {
72
72
  this.formControlController.updateValidity();
73
73
  }
74
74
  getAllRadios() {
75
- return [...this.querySelectorAll("sd-1-26-0-radio, sd-1-26-0-radio-button")];
75
+ return [...this.querySelectorAll("sd-1-28-0-radio, sd-1-28-0-radio-button")];
76
76
  }
77
77
  handleRadioClick(event) {
78
- const target = event.target.closest("sd-1-26-0-radio, sd-1-26-0-radio-button");
78
+ const target = event.target.closest("sd-1-28-0-radio, sd-1-28-0-radio-button");
79
79
  const radios = this.getAllRadios();
80
80
  const oldValue = this.value;
81
81
  if (target.disabled) {
@@ -85,7 +85,7 @@ let SdRadioGroup = class extends SolidElement {
85
85
  radios.forEach((radio) => radio.checked = radio === target);
86
86
  if (this.value !== oldValue) {
87
87
  this.emit("sd-change");
88
- this.emit("sd-1-26-0-input");
88
+ this.emit("sd-1-28-0-input");
89
89
  }
90
90
  }
91
91
  handleKeyDown(event) {
@@ -119,7 +119,7 @@ let SdRadioGroup = class extends SolidElement {
119
119
  }
120
120
  if (this.value !== oldValue) {
121
121
  this.emit("sd-change");
122
- this.emit("sd-1-26-0-input");
122
+ this.emit("sd-1-28-0-input");
123
123
  }
124
124
  event.preventDefault();
125
125
  }
@@ -147,7 +147,7 @@ let SdRadioGroup = class extends SolidElement {
147
147
  radio.invalid = this.invalid;
148
148
  })
149
149
  );
150
- this.hasButtonGroup = radios.some((radio) => radio.tagName.toLowerCase() === "sd-1-26-0-radio-button");
150
+ this.hasButtonGroup = radios.some((radio) => radio.tagName.toLowerCase() === "sd-1-28-0-radio-button");
151
151
  if (!radios.some((radio) => radio.checked)) {
152
152
  if (this.hasButtonGroup) {
153
153
  const buttonRadio = (_a = radios[0].shadowRoot) == null ? void 0 : _a.querySelector("button");
@@ -159,26 +159,26 @@ let SdRadioGroup = class extends SolidElement {
159
159
  }
160
160
  }
161
161
  if (this.hasButtonGroup) {
162
- const buttonGroup = (_b = this.shadowRoot) == null ? void 0 : _b.querySelector("sd-1-26-0-button-group");
162
+ const buttonGroup = (_b = this.shadowRoot) == null ? void 0 : _b.querySelector("sd-1-28-0-button-group");
163
163
  if (buttonGroup) {
164
164
  buttonGroup.disableRole = true;
165
165
  }
166
166
  }
167
167
  }
168
168
  syncRadios() {
169
- if (customElements.get("sd-1-26-0-radio") && customElements.get("sd-1-26-0-radio-button")) {
169
+ if (customElements.get("sd-1-28-0-radio") && customElements.get("sd-1-28-0-radio-button")) {
170
170
  this.syncRadioElements();
171
171
  return;
172
172
  }
173
- if (customElements.get("sd-1-26-0-radio")) {
173
+ if (customElements.get("sd-1-28-0-radio")) {
174
174
  this.syncRadioElements();
175
175
  } else {
176
- customElements.whenDefined("sd-1-26-0-radio").then(() => this.syncRadios());
176
+ customElements.whenDefined("sd-1-28-0-radio").then(() => this.syncRadios());
177
177
  }
178
- if (customElements.get("sd-1-26-0-radio-button")) {
178
+ if (customElements.get("sd-1-28-0-radio-button")) {
179
179
  this.syncRadioElements();
180
180
  } else {
181
- customElements.whenDefined("sd-1-26-0-radio-button").then(() => this.syncRadios());
181
+ customElements.whenDefined("sd-1-28-0-radio-button").then(() => this.syncRadios());
182
182
  }
183
183
  }
184
184
  updateCheckedRadio() {
@@ -258,11 +258,11 @@ let SdRadioGroup = class extends SolidElement {
258
258
  )}"><div class="sr-only"><div id="error-message" aria-live="assertive">${this.errorText}</div><label><input id="validation-input" type="text" ?required="${this.required}" tabindex="-1" hidden @invalid="${this.handleInvalid}"></label></div>${defaultSlot}</div></fieldset>`;
259
259
  }
260
260
  };
261
- SdRadioGroup.dependencies = { "sd-1-26-0-button-group": SdButtonGroup };
261
+ SdRadioGroup.dependencies = { "sd-1-28-0-button-group": SdButtonGroup };
262
262
  SdRadioGroup.styles = [
263
263
  componentStyles,
264
264
  SolidElement.styles,
265
- css`:host{display:block}:host([orientation=vertical]) ::slotted(sd-1-26-0-radio){margin-bottom:8px;display:flex}:host([orientation=vertical]) ::slotted(sd-1-26-0-radio:last-of-type){margin-bottom:0}:host([orientation=horizontal]) ::slotted(sd-1-26-0-radio){margin-right:24px}:host([size=sm]):host([orientation=horizontal]) ::slotted(sd-1-26-0-radio){margin-right:16px}:host([orientation=horizontal]) ::slotted(sd-1-26-0-radio:last-of-type){margin-right:0}:host([required]) #label.has-label::after{content:'*';margin-left:2px}`
265
+ css`:host{display:block}:host([orientation=vertical]) ::slotted(sd-1-28-0-radio){margin-bottom:8px;display:flex}:host([orientation=vertical]) ::slotted(sd-1-28-0-radio:last-of-type){margin-bottom:0}:host([orientation=horizontal]) ::slotted(sd-1-28-0-radio){margin-right:24px}:host([size=sm]):host([orientation=horizontal]) ::slotted(sd-1-28-0-radio){margin-right:16px}:host([orientation=horizontal]) ::slotted(sd-1-28-0-radio:last-of-type){margin-right:0}:host([required]) #label.has-label::after{content:'*';margin-left:2px}`
266
266
  ];
267
267
  __decorateClass([
268
268
  query("slot:not([name])")
@@ -313,7 +313,7 @@ __decorateClass([
313
313
  watch("value")
314
314
  ], SdRadioGroup.prototype, "handleValueChange", 1);
315
315
  SdRadioGroup = __decorateClass([
316
- customElement("sd-1-26-0-radio-group")
316
+ customElement("sd-1-28-0-radio-group")
317
317
  ], SdRadioGroup);
318
318
  export {
319
319
  SdRadioGroup as default
@@ -7,6 +7,6 @@ export default class SdSpinner extends SolidElement {
7
7
  }
8
8
  declare global {
9
9
  interface HTMLElementTagNameMap {
10
- 'sd-1-26-0-spinner': SdSpinner;
10
+ 'sd-1-28-0-spinner': SdSpinner;
11
11
  }
12
12
  }
@@ -40,7 +40,7 @@ __decorateClass([
40
40
  property({ reflect: true })
41
41
  ], SdSpinner.prototype, "color", 2);
42
42
  SdSpinner = __decorateClass([
43
- customElement("sd-1-26-0-spinner")
43
+ customElement("sd-1-28-0-spinner")
44
44
  ], SdSpinner);
45
45
  export {
46
46
  SdSpinner as default
@@ -32,6 +32,6 @@ export default class SdSwitch extends SolidElement implements SolidFormControl {
32
32
  }
33
33
  declare global {
34
34
  interface HTMLElementTagNameMap {
35
- 'sd-1-26-0-switch': SdSwitch;
35
+ 'sd-1-28-0-switch': SdSwitch;
36
36
  }
37
37
  }
@@ -50,7 +50,7 @@ let SdSwitch = class extends SolidElement {
50
50
  this.emit("sd-blur");
51
51
  }
52
52
  handleInput() {
53
- this.emit("sd-1-26-0-input");
53
+ this.emit("sd-1-28-0-input");
54
54
  }
55
55
  handleInvalid(event) {
56
56
  this.formControlController.setValidity(false);
@@ -155,7 +155,7 @@ __decorateClass([
155
155
  watch(["checked"], { waitUntilFirstUpdate: true })
156
156
  ], SdSwitch.prototype, "handleStateChange", 1);
157
157
  SdSwitch = __decorateClass([
158
- customElement("sd-1-26-0-switch")
158
+ customElement("sd-1-28-0-switch")
159
159
  ], SdSwitch);
160
160
  export {
161
161
  SdSwitch as default
@@ -19,6 +19,6 @@ export default class SdTag extends SolidElement {
19
19
  }
20
20
  declare global {
21
21
  interface HTMLElementTagNameMap {
22
- 'sd-1-26-0-tag': SdTag;
22
+ 'sd-1-28-0-tag': SdTag;
23
23
  }
24
24
  }
@@ -72,7 +72,7 @@ let SdTag = class extends SolidElement {
72
72
  lg: "text-base",
73
73
  sm: "text-[12px]"
74
74
  }[this.size]
75
- )}"><sd-1-26-0-icon library="system" name="close" label="remove"></sd-1-26-0-icon></slot></${tag}>`;
75
+ )}"><sd-1-28-0-icon library="system" name="close" label="remove"></sd-1-28-0-icon></slot></${tag}>`;
76
76
  }
77
77
  };
78
78
  SdTag.styles = [
@@ -104,7 +104,7 @@ __decorateClass([
104
104
  property()
105
105
  ], SdTag.prototype, "download", 2);
106
106
  SdTag = __decorateClass([
107
- customElement("sd-1-26-0-tag")
107
+ customElement("sd-1-28-0-tag")
108
108
  ], SdTag);
109
109
  export {
110
110
  SdTag as default
@@ -96,7 +96,7 @@ __decorateClass([
96
96
  state()
97
97
  ], SdTeaser.prototype, "_orientation", 2);
98
98
  SdTeaser = __decorateClass([
99
- customElement("sd-1-26-0-teaser")
99
+ customElement("sd-1-28-0-teaser")
100
100
  ], SdTeaser);
101
101
  export {
102
102
  SdTeaser as default
@@ -34,6 +34,6 @@ export default class SdTooltip extends SolidElement {
34
34
  }
35
35
  declare global {
36
36
  interface HTMLElementTagNameMap {
37
- 'sd-1-26-0-tooltip': SdTooltip;
37
+ 'sd-1-28-0-tooltip': SdTooltip;
38
38
  }
39
39
  }