@solid-design-system/components 2.5.0 → 2.6.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 (139) hide show
  1. package/dist/components/es/solid-components2.js +1 -1
  2. package/dist/components/es/solid-element.js +5 -5
  3. package/dist/components/es/tab-group.js +1 -0
  4. package/dist/components/es/tab-panel.js +1 -0
  5. package/dist/components/es/tab.js +1 -0
  6. package/dist/components/umd/solid-components.js +18 -18
  7. package/dist/custom-elements.json +1 -1
  8. package/dist/package/components/tab/tab.d.ts +22 -0
  9. package/dist/package/components/tab/tab.js +94 -0
  10. package/dist/package/components/tab-group/tab-group.d.ts +40 -0
  11. package/dist/package/components/tab-group/tab-group.js +249 -0
  12. package/dist/package/components/tab-panel/tab-panel.d.ts +16 -0
  13. package/dist/package/components/tab-panel/tab-panel.js +59 -0
  14. package/dist/package/solid-components.d.ts +3 -0
  15. package/dist/package/solid-components.js +18 -12
  16. package/dist/package/styles/tailwind.css.js +1 -1
  17. package/dist/versioned-components/es/accordion-group.js +1 -1
  18. package/dist/versioned-components/es/accordion.js +1 -1
  19. package/dist/versioned-components/es/badge.js +1 -1
  20. package/dist/versioned-components/es/brandshape.js +1 -1
  21. package/dist/versioned-components/es/button.js +1 -1
  22. package/dist/versioned-components/es/carousel-item.js +1 -1
  23. package/dist/versioned-components/es/carousel.js +3 -3
  24. package/dist/versioned-components/es/checkbox-group.js +1 -1
  25. package/dist/versioned-components/es/checkbox.js +1 -1
  26. package/dist/versioned-components/es/dialog.js +1 -1
  27. package/dist/versioned-components/es/divider.js +1 -1
  28. package/dist/versioned-components/es/drawer.js +1 -1
  29. package/dist/versioned-components/es/dropdown.js +1 -1
  30. package/dist/versioned-components/es/form.js +1 -1
  31. package/dist/versioned-components/es/header.js +1 -1
  32. package/dist/versioned-components/es/icon.js +1 -1
  33. package/dist/versioned-components/es/include.js +1 -1
  34. package/dist/versioned-components/es/input.js +1 -1
  35. package/dist/versioned-components/es/link.js +1 -1
  36. package/dist/versioned-components/es/navigation-item.js +1 -1
  37. package/dist/versioned-components/es/notification.js +1 -1
  38. package/dist/versioned-components/es/option.js +1 -1
  39. package/dist/versioned-components/es/popup.js +1 -1
  40. package/dist/versioned-components/es/radio-button.js +1 -1
  41. package/dist/versioned-components/es/radio-group.js +1 -1
  42. package/dist/versioned-components/es/radio.js +1 -1
  43. package/dist/versioned-components/es/select.js +3 -3
  44. package/dist/versioned-components/es/solid-components2.js +1 -1
  45. package/dist/versioned-components/es/solid-element.js +5 -5
  46. package/dist/versioned-components/es/spinner.js +1 -1
  47. package/dist/versioned-components/es/switch.js +1 -1
  48. package/dist/versioned-components/es/tab-group.js +1 -0
  49. package/dist/versioned-components/es/tab-panel.js +1 -0
  50. package/dist/versioned-components/es/tab.js +1 -0
  51. package/dist/versioned-components/es/tag.js +1 -1
  52. package/dist/versioned-components/es/teaser-media.js +1 -1
  53. package/dist/versioned-components/es/teaser.js +1 -1
  54. package/dist/versioned-components/es/textarea.js +1 -1
  55. package/dist/versioned-components/es/tooltip.js +2 -2
  56. package/dist/versioned-components/es/video.js +1 -1
  57. package/dist/versioned-package/_components/button-group/button-group.d.ts +1 -1
  58. package/dist/versioned-package/_components/button-group/button-group.js +11 -11
  59. package/dist/versioned-package/components/accordion/accordion.d.ts +1 -1
  60. package/dist/versioned-package/components/accordion/accordion.js +2 -2
  61. package/dist/versioned-package/components/accordion-group/accordion-group.d.ts +1 -1
  62. package/dist/versioned-package/components/accordion-group/accordion-group.js +3 -3
  63. package/dist/versioned-package/components/badge/badge.d.ts +1 -1
  64. package/dist/versioned-package/components/badge/badge.js +1 -1
  65. package/dist/versioned-package/components/brandshape/brandshape.d.ts +1 -1
  66. package/dist/versioned-package/components/brandshape/brandshape.js +1 -1
  67. package/dist/versioned-package/components/button/button.d.ts +1 -1
  68. package/dist/versioned-package/components/button/button.js +4 -4
  69. package/dist/versioned-package/components/carousel/carousel.d.ts +1 -1
  70. package/dist/versioned-package/components/carousel/carousel.js +6 -6
  71. package/dist/versioned-package/components/carousel-item/carousel-item.d.ts +1 -1
  72. package/dist/versioned-package/components/carousel-item/carousel-item.js +1 -1
  73. package/dist/versioned-package/components/checkbox/checkbox.d.ts +1 -1
  74. package/dist/versioned-package/components/checkbox/checkbox.js +4 -4
  75. package/dist/versioned-package/components/checkbox-group/checkbox-group.d.ts +1 -1
  76. package/dist/versioned-package/components/checkbox-group/checkbox-group.js +5 -5
  77. package/dist/versioned-package/components/dialog/dialog.d.ts +1 -1
  78. package/dist/versioned-package/components/dialog/dialog.js +2 -2
  79. package/dist/versioned-package/components/divider/divider.d.ts +1 -1
  80. package/dist/versioned-package/components/divider/divider.js +2 -2
  81. package/dist/versioned-package/components/drawer/drawer.d.ts +1 -1
  82. package/dist/versioned-package/components/drawer/drawer.js +2 -2
  83. package/dist/versioned-package/components/dropdown/dropdown.d.ts +1 -1
  84. package/dist/versioned-package/components/dropdown/dropdown.js +8 -8
  85. package/dist/versioned-package/components/header/header.d.ts +1 -1
  86. package/dist/versioned-package/components/header/header.js +4 -4
  87. package/dist/versioned-package/components/icon/icon.d.ts +1 -1
  88. package/dist/versioned-package/components/icon/icon.js +1 -1
  89. package/dist/versioned-package/components/include/include.d.ts +1 -1
  90. package/dist/versioned-package/components/include/include.js +1 -1
  91. package/dist/versioned-package/components/input/input.d.ts +1 -1
  92. package/dist/versioned-package/components/input/input.js +4 -4
  93. package/dist/versioned-package/components/link/link.d.ts +1 -1
  94. package/dist/versioned-package/components/link/link.js +2 -2
  95. package/dist/versioned-package/components/navigation-item/navigation-item.d.ts +1 -1
  96. package/dist/versioned-package/components/navigation-item/navigation-item.js +3 -3
  97. package/dist/versioned-package/components/notification/notification.d.ts +1 -1
  98. package/dist/versioned-package/components/notification/notification.js +5 -5
  99. package/dist/versioned-package/components/option/option.d.ts +1 -1
  100. package/dist/versioned-package/components/option/option.js +2 -2
  101. package/dist/versioned-package/components/popup/popup.d.ts +1 -1
  102. package/dist/versioned-package/components/popup/popup.js +1 -1
  103. package/dist/versioned-package/components/radio/radio.d.ts +1 -1
  104. package/dist/versioned-package/components/radio/radio.js +2 -2
  105. package/dist/versioned-package/components/radio-button/radio-button.d.ts +1 -1
  106. package/dist/versioned-package/components/radio-button/radio-button.js +2 -2
  107. package/dist/versioned-package/components/radio-group/radio-group.d.ts +2 -2
  108. package/dist/versioned-package/components/radio-group/radio-group.js +15 -15
  109. package/dist/versioned-package/components/select/select.d.ts +4 -4
  110. package/dist/versioned-package/components/select/select.js +28 -28
  111. package/dist/versioned-package/components/spinner/spinner.d.ts +1 -1
  112. package/dist/versioned-package/components/spinner/spinner.js +1 -1
  113. package/dist/versioned-package/components/switch/switch.d.ts +1 -1
  114. package/dist/versioned-package/components/switch/switch.js +2 -2
  115. package/dist/versioned-package/components/tab/tab.d.ts +22 -0
  116. package/dist/versioned-package/components/tab/tab.js +94 -0
  117. package/dist/versioned-package/components/tab-group/tab-group.d.ts +40 -0
  118. package/dist/versioned-package/components/tab-group/tab-group.js +249 -0
  119. package/dist/versioned-package/components/tab-panel/tab-panel.d.ts +16 -0
  120. package/dist/versioned-package/components/tab-panel/tab-panel.js +59 -0
  121. package/dist/versioned-package/components/tag/tag.d.ts +1 -1
  122. package/dist/versioned-package/components/tag/tag.js +2 -2
  123. package/dist/versioned-package/components/teaser/teaser.js +1 -1
  124. package/dist/versioned-package/components/teaser-media/teaser-media.js +1 -1
  125. package/dist/versioned-package/components/textarea/textarea.d.ts +1 -1
  126. package/dist/versioned-package/components/textarea/textarea.js +3 -3
  127. package/dist/versioned-package/components/tooltip/tooltip.d.ts +1 -1
  128. package/dist/versioned-package/components/tooltip/tooltip.js +5 -5
  129. package/dist/versioned-package/components/video/video.d.ts +1 -1
  130. package/dist/versioned-package/components/video/video.js +2 -2
  131. package/dist/versioned-package/internal/form.js +3 -3
  132. package/dist/versioned-package/solid-components.d.ts +3 -0
  133. package/dist/versioned-package/solid-components.js +18 -12
  134. package/dist/versioned-package/styles/headline/headline.css.js +1 -1
  135. package/dist/versioned-package/styles/tailwind.css.js +1 -1
  136. package/dist/versioned-styles/solid-styles.css +1 -1
  137. package/dist/vscode.html-custom-data.json +174 -34
  138. package/dist/web-types.json +573 -35
  139. package/package.json +3 -3
@@ -7,9 +7,9 @@ import type { TemplateResult } from 'lit';
7
7
  import type SdOption from '../option/option';
8
8
  export default class SdSelect extends SolidElement implements SolidFormControl {
9
9
  static dependencies: {
10
- 'sd-2-5-0-icon': typeof SdIcon;
11
- 'sd-2-5-0-popup': typeof SdPopup;
12
- 'sd-2-5-0-tag': typeof SdTag;
10
+ 'sd-2-6-0-icon': typeof SdIcon;
11
+ 'sd-2-6-0-popup': typeof SdPopup;
12
+ 'sd-2-6-0-tag': typeof SdTag;
13
13
  };
14
14
  private readonly formControlController;
15
15
  private readonly hasSlotController;
@@ -97,6 +97,6 @@ export default class SdSelect extends SolidElement implements SolidFormControl {
97
97
  }
98
98
  declare global {
99
99
  interface HTMLElementTagNameMap {
100
- 'sd-2-5-0-select': SdSelect;
100
+ 'sd-2-6-0-select': SdSelect;
101
101
  }
102
102
  }
@@ -32,7 +32,7 @@ let SdSelect = class extends SolidElement {
32
32
  constructor() {
33
33
  super(...arguments);
34
34
  this.formControlController = new FormControlController(this, {
35
- assumeInteractionOn: ["sd-blur", "sd-2-5-0-input"]
35
+ assumeInteractionOn: ["sd-blur", "sd-2-6-0-input"]
36
36
  });
37
37
  this.hasSlotController = new HasSlotController(this, "help-text", "label");
38
38
  this.localize = new LocalizeController(this);
@@ -63,11 +63,11 @@ let SdSelect = class extends SolidElement {
63
63
  this.styleOnValid = false;
64
64
  this.hoist = false;
65
65
  this.getTag = (option) => {
66
- return html`<sd-2-5-0-tag ?disabled="${this.disabled}" part="tag" exportparts="
66
+ return html`<sd-2-6-0-tag ?disabled="${this.disabled}" part="tag" exportparts="
67
67
  base:tag__base,
68
68
  content:tag__content,
69
69
  removable-indicator:tag__removable-indicator,
70
- " size="${this.size === "sm" ? "sm" : "lg"}" removable @sd-remove="${(event) => this.handleTagRemove(event, option)}">${option.getTextLabel()}</sd-2-5-0-tag>`;
70
+ " size="${this.size === "sm" ? "sm" : "lg"}" removable @sd-remove="${(event) => this.handleTagRemove(event, option)}">${option.getTextLabel()}</sd-2-6-0-tag>`;
71
71
  };
72
72
  this.handleDocumentFocusIn = (event) => {
73
73
  const path = event.composedPath();
@@ -78,7 +78,7 @@ let SdSelect = class extends SolidElement {
78
78
  this.handleDocumentKeyDown = (event) => {
79
79
  const target = event.target;
80
80
  const isClearButton = target.closest(".select__clear") !== null;
81
- const isIconButton = target.closest("sd-2-5-0-icon-button") !== null;
81
+ const isIconButton = target.closest("sd-2-6-0-icon-button") !== null;
82
82
  if (isClearButton || isIconButton) {
83
83
  return;
84
84
  }
@@ -102,7 +102,7 @@ let SdSelect = class extends SolidElement {
102
102
  this.setSelectedOptions(this.currentOption);
103
103
  }
104
104
  this.updateComplete.then(() => {
105
- this.emit("sd-2-5-0-input");
105
+ this.emit("sd-2-6-0-input");
106
106
  this.emit("sd-change");
107
107
  });
108
108
  if (!this.multiple) {
@@ -230,7 +230,7 @@ let SdSelect = class extends SolidElement {
230
230
  this.displayInput.focus({ preventScroll: true });
231
231
  this.updateComplete.then(() => {
232
232
  this.emit("sd-clear");
233
- this.emit("sd-2-5-0-input");
233
+ this.emit("sd-2-6-0-input");
234
234
  this.emit("sd-change");
235
235
  });
236
236
  }
@@ -241,7 +241,7 @@ let SdSelect = class extends SolidElement {
241
241
  }
242
242
  handleOptionClick(event) {
243
243
  const target = event.target;
244
- const option = target.closest("sd-2-5-0-option");
244
+ const option = target.closest("sd-2-6-0-option");
245
245
  const oldValue = this.value;
246
246
  if (option && !option.disabled) {
247
247
  if (this.multiple) {
@@ -252,7 +252,7 @@ let SdSelect = class extends SolidElement {
252
252
  this.updateComplete.then(() => this.displayInput.focus({ preventScroll: true }));
253
253
  if (this.value !== oldValue) {
254
254
  this.updateComplete.then(() => {
255
- this.emit("sd-2-5-0-input");
255
+ this.emit("sd-2-6-0-input");
256
256
  this.emit("sd-change");
257
257
  });
258
258
  }
@@ -266,7 +266,7 @@ let SdSelect = class extends SolidElement {
266
266
  const allOptions = this.getAllOptions();
267
267
  const value = Array.isArray(this.value) ? this.value : [this.value];
268
268
  const values = [];
269
- if (customElements.get("sd-2-5-0-option")) {
269
+ if (customElements.get("sd-2-6-0-option")) {
270
270
  allOptions.forEach((option) => {
271
271
  if (this.multiple) {
272
272
  option.checkbox = true;
@@ -275,7 +275,7 @@ let SdSelect = class extends SolidElement {
275
275
  });
276
276
  this.setSelectedOptions(allOptions.filter((el) => value.includes(el.value)));
277
277
  } else {
278
- customElements.whenDefined("sd-2-5-0-option").then(() => this.handleDefaultSlotChange());
278
+ customElements.whenDefined("sd-2-6-0-option").then(() => this.handleDefaultSlotChange());
279
279
  }
280
280
  }
281
281
  handleTagRemove(event, option) {
@@ -283,18 +283,18 @@ let SdSelect = class extends SolidElement {
283
283
  if (!this.disabled) {
284
284
  this.toggleOptionSelection(option, false);
285
285
  this.updateComplete.then(() => {
286
- this.emit("sd-2-5-0-input");
286
+ this.emit("sd-2-6-0-input");
287
287
  this.emit("sd-change");
288
288
  });
289
289
  }
290
290
  }
291
- // Gets an array of all <sd-2-5-0-option> elements
291
+ // Gets an array of all <sd-2-6-0-option> elements
292
292
  getAllOptions() {
293
- return [...this.querySelectorAll("sd-2-5-0-option")];
293
+ return [...this.querySelectorAll("sd-2-6-0-option")];
294
294
  }
295
- // Gets the first <sd-2-5-0-option> element
295
+ // Gets the first <sd-2-6-0-option> element
296
296
  getFirstOption() {
297
- return this.querySelector("sd-2-5-0-option");
297
+ return this.querySelector("sd-2-6-0-option");
298
298
  }
299
299
  // Sets the current option, which is the option the user is currently interacting with (e.g. via keyboard). Only one
300
300
  // option may be "current" at a time.
@@ -356,7 +356,7 @@ let SdSelect = class extends SolidElement {
356
356
  const tag = this.getTag(option, index);
357
357
  return html`<div @sd-remove="${(e) => this.handleTagRemove(e, option)}">${typeof tag === "string" ? unsafeHTML(tag) : tag}</div>`;
358
358
  } else if (index === this.maxOptionsVisible) {
359
- return html`<sd-2-5-0-tag size="${this.size === "sm" ? "sm" : "lg"}" ?disabled="${this.disabled}">+${this.selectedOptions.length - index}</sd-2-5-0-tag>`;
359
+ return html`<sd-2-6-0-tag size="${this.size === "sm" ? "sm" : "lg"}" ?disabled="${this.disabled}">+${this.selectedOptions.length - index}</sd-2-6-0-tag>`;
360
360
  }
361
361
  return html``;
362
362
  });
@@ -372,7 +372,7 @@ let SdSelect = class extends SolidElement {
372
372
  handleMouseLeave() {
373
373
  this.hasHover = false;
374
374
  }
375
- /** Receives incoming event detail from sd-2-5-0-popup and updates local state for conditional styling. */
375
+ /** Receives incoming event detail from sd-2-6-0-popup and updates local state for conditional styling. */
376
376
  handleCurrentPlacement(e) {
377
377
  const incomingPlacement = e.detail;
378
378
  if (incomingPlacement) {
@@ -381,7 +381,7 @@ let SdSelect = class extends SolidElement {
381
381
  }
382
382
  handleUseTagsChange() {
383
383
  const allOptions = this.getAllOptions();
384
- if (customElements.get("sd-2-5-0-option")) {
384
+ if (customElements.get("sd-2-6-0-option")) {
385
385
  allOptions.forEach((option) => {
386
386
  option.checkbox = this.multiple;
387
387
  });
@@ -526,7 +526,7 @@ let SdSelect = class extends SolidElement {
526
526
  default: "border-neutral-800"
527
527
  }[selectState],
528
528
  this.open && (this.currentPlacement === "bottom" ? "rounded-bl-none rounded-br-none" : "rounded-tl-none rounded-tr-none")
529
- )}"></div><sd-2-5-0-popup @sd-current-placement="${this.handleCurrentPlacement}" class="${cx(
529
+ )}"></div><sd-2-6-0-popup @sd-current-placement="${this.handleCurrentPlacement}" class="${cx(
530
530
  "inline-flex relative w-full",
531
531
  this.currentPlacement === "bottom" ? "origin-top" : "origin-bottom"
532
532
  )}" placement="${this.placement}" strategy="${this.hoist ? "fixed" : "absolute"}" flip shift sync="width" auto-size="vertical" auto-size-padding="10" exportparts="
@@ -542,27 +542,27 @@ let SdSelect = class extends SolidElement {
542
542
  "appearance-none outline-none flex-grow bg-transparent w-full",
543
543
  cursorStyles,
544
544
  this.multiple && this.useTags && this.value.length > 0 ? "hidden" : ""
545
- )}" type="text" placeholder="${this.placeholder}" .disabled="${this.disabled}" .value="${this.displayLabel}" autocomplete="off" spellcheck="false" autocapitalize="off" readonly="readonly" aria-controls="listbox" aria-expanded="${this.open ? "true" : "false"}" aria-haspopup="listbox" aria-labelledby="label" aria-disabled="${this.disabled ? "true" : "false"}" aria-describedby="help-text" role="combobox" tabindex="0" @focus="${this.handleFocus}" @blur="${this.handleBlur}"> ${this.multiple && this.useTags ? html`<div part="tags" class="flex-grow flex flex-wrap items-center gap-1">${this.tags}</div>` : ""} <input class="${cx("value-input absolute top-0 left-0 w-full h-full opacity-0 -z-10", cursorStyles)}" type="text" ?disabled="${this.disabled}" ?required="${this.required}" .value="${Array.isArray(this.value) ? this.value.join(", ") : this.value}" tabindex="-1" aria-hidden="true" @focus="${() => this.focus()}" @invalid="${this.handleInvalid}"> ${hasClearIcon ? html`<button part="clear-button" class="${cx("select__clear flex justify-center", iconMarginLeft)}" type="button" aria-label="${this.localize.term("clearEntry")}" @mousedown="${this.handleClearMouseDown}" @click="${this.handleClearClick}" tabindex="-1"><slot name="clear-icon"><sd-2-5-0-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-2-5-0-icon></slot></button>` : ""} ${this.showInvalidStyle ? html`<sd-2-5-0-icon part="invalid-icon" class="${cx("text-error", iconMarginLeft, iconSize)}" library="system" name="risk"></sd-2-5-0-icon>` : ""} ${this.styleOnValid && this.showValidStyle ? html`<sd-2-5-0-icon part="valid-icon" class="${cx("text-success flex-shrink-0", iconMarginLeft, iconSize)}" library="system" name="confirm"></sd-2-5-0-icon>` : ""}<slot name="expand-icon" part="expand-icon" class="${cx("inline-flex ml-2 transition-all", this.open ? "rotate-180" : "rotate-0", iconSize)}"><sd-2-5-0-icon name="chevron-down" part="chevron" library="system" color="currentColor"></sd-2-5-0-icon></slot></div><div id="listbox" role="listbox" aria-expanded="${this.open ? "true" : "false"}" aria-multiselectable="${this.multiple ? "true" : "false"}" aria-labelledby="label" part="listbox" class="${cx(
545
+ )}" type="text" placeholder="${this.placeholder}" .disabled="${this.disabled}" .value="${this.displayLabel}" autocomplete="off" spellcheck="false" autocapitalize="off" readonly="readonly" aria-controls="listbox" aria-expanded="${this.open ? "true" : "false"}" aria-haspopup="listbox" aria-labelledby="label" aria-disabled="${this.disabled ? "true" : "false"}" aria-describedby="help-text" role="combobox" tabindex="0" @focus="${this.handleFocus}" @blur="${this.handleBlur}"> ${this.multiple && this.useTags ? html`<div part="tags" class="flex-grow flex flex-wrap items-center gap-1">${this.tags}</div>` : ""} <input class="${cx("value-input absolute top-0 left-0 w-full h-full opacity-0 -z-10", cursorStyles)}" type="text" ?disabled="${this.disabled}" ?required="${this.required}" .value="${Array.isArray(this.value) ? this.value.join(", ") : this.value}" tabindex="-1" aria-hidden="true" @focus="${() => this.focus()}" @invalid="${this.handleInvalid}"> ${hasClearIcon ? html`<button part="clear-button" class="${cx("select__clear flex justify-center", iconMarginLeft)}" type="button" aria-label="${this.localize.term("clearEntry")}" @mousedown="${this.handleClearMouseDown}" @click="${this.handleClearClick}" tabindex="-1"><slot name="clear-icon"><sd-2-6-0-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-2-6-0-icon></slot></button>` : ""} ${this.showInvalidStyle ? html`<sd-2-6-0-icon part="invalid-icon" class="${cx("text-error", iconMarginLeft, iconSize)}" library="system" name="risk"></sd-2-6-0-icon>` : ""} ${this.styleOnValid && this.showValidStyle ? html`<sd-2-6-0-icon part="valid-icon" class="${cx("text-success flex-shrink-0", iconMarginLeft, iconSize)}" library="system" name="confirm"></sd-2-6-0-icon>` : ""}<slot name="expand-icon" part="expand-icon" class="${cx("inline-flex ml-2 transition-all", this.open ? "rotate-180" : "rotate-0", iconSize)}"><sd-2-6-0-icon name="chevron-down" part="chevron" library="system" color="currentColor"></sd-2-6-0-icon></slot></div><div id="listbox" role="listbox" aria-expanded="${this.open ? "true" : "false"}" aria-multiselectable="${this.multiple ? "true" : "false"}" aria-labelledby="label" part="listbox" class="${cx(
546
546
  "bg-white px-2 py-3 relative",
547
547
  this.currentPlacement === "bottom" ? "border-r-2 border-b-2 border-l-2 rounded-br-default rounded-bl-default" : "border-r-2 border-t-2 border-l-2 rounded-tr-default rounded-tl-default"
548
- )}" tabindex="-1" @mouseup="${this.handleOptionClick}" @slotchange="${this.handleDefaultSlotChange}"><slot></slot></div></sd-2-5-0-popup></div><div class="text-sm text-neutral-700" part="form-control-help-text" id="help-text" aria-hidden="${hasHelpText ? "false" : "true"}"><slot name="help-text">${this.helpText}</slot></div></div>${this.formControlController.renderInvalidMessage()}`;
548
+ )}" tabindex="-1" @mouseup="${this.handleOptionClick}" @slotchange="${this.handleDefaultSlotChange}"><slot></slot></div></sd-2-6-0-popup></div><div class="text-sm text-neutral-700" part="form-control-help-text" id="help-text" aria-hidden="${hasHelpText ? "false" : "true"}"><slot name="help-text">${this.helpText}</slot></div></div>${this.formControlController.renderInvalidMessage()}`;
549
549
  }
550
550
  };
551
551
  SdSelect.dependencies = {
552
- "sd-2-5-0-icon": SdIcon,
553
- "sd-2-5-0-popup": SdPopup,
554
- "sd-2-5-0-tag": SdTag
552
+ "sd-2-6-0-icon": SdIcon,
553
+ "sd-2-6-0-popup": SdPopup,
554
+ "sd-2-6-0-tag": SdTag
555
555
  };
556
556
  SdSelect.styles = [
557
557
  componentStyles,
558
558
  SolidElement.styles,
559
- css`:host{position:relative;display:block;width:100%}:host([required]) #label::after{content:' *'}sd-2-5-0-popup::part(popup){z-index:var(--sd-z-index-dropdown,900);overflow-y:scroll}sd-2-5-0-tag::part(base){border-radius:var(--sd-border-radius-default,.25rem);padding-left:var(--sd-spacing-1,.25rem);padding-right:var(--sd-spacing-1,.25rem)}sd-2-5-0-tag[size=lg]::part(base){padding-left:var(--sd-spacing-2,.5rem);padding-right:var(--sd-spacing-2,.5rem)}sd-2-5-0-tag[disabled=false]::part(base):hover{--tw-bg-opacity:1;background-color:rgb(var(--sd-color-primary-100,236 240 249) / var(--tw-bg-opacity))}`
559
+ css`:host{position:relative;display:block;width:100%}:host([required]) #label::after{content:' *'}sd-2-6-0-popup::part(popup){z-index:var(--sd-z-index-dropdown,900);overflow-y:scroll}sd-2-6-0-tag::part(base){border-radius:var(--sd-border-radius-default,.25rem);padding-left:var(--sd-spacing-1,.25rem);padding-right:var(--sd-spacing-1,.25rem)}sd-2-6-0-tag[size=lg]::part(base){padding-left:var(--sd-spacing-2,.5rem);padding-right:var(--sd-spacing-2,.5rem)}sd-2-6-0-tag[disabled=false]::part(base):hover{--tw-bg-opacity:1;background-color:rgb(var(--sd-color-primary-100,236 240 249) / var(--tw-bg-opacity))}`
560
560
  ];
561
561
  __decorateClass([
562
- queryAssignedElements({ selector: "sd-2-5-0-option" })
562
+ queryAssignedElements({ selector: "sd-2-6-0-option" })
563
563
  ], SdSelect.prototype, "_optionsInDefaultSlot", 2);
564
564
  __decorateClass([
565
- query("sd-2-5-0-popup")
565
+ query("sd-2-6-0-popup")
566
566
  ], SdSelect.prototype, "popup", 2);
567
567
  __decorateClass([
568
568
  query('[part="combobox"]')
@@ -681,7 +681,7 @@ __decorateClass([
681
681
  watch("value", { waitUntilFirstUpdate: true })
682
682
  ], SdSelect.prototype, "handleValueChange", 1);
683
683
  SdSelect = __decorateClass([
684
- customElement("sd-2-5-0-select")
684
+ customElement("sd-2-6-0-select")
685
685
  ], SdSelect);
686
686
  setDefaultAnimation("select.show", {
687
687
  keyframes: [
@@ -7,6 +7,6 @@ export default class SdSpinner extends SolidElement {
7
7
  }
8
8
  declare global {
9
9
  interface HTMLElementTagNameMap {
10
- 'sd-2-5-0-spinner': SdSpinner;
10
+ 'sd-2-6-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-2-5-0-spinner")
43
+ customElement("sd-2-6-0-spinner")
44
44
  ], SdSpinner);
45
45
  export {
46
46
  SdSpinner as default
@@ -34,6 +34,6 @@ export default class SdSwitch extends SolidElement implements SolidFormControl {
34
34
  }
35
35
  declare global {
36
36
  interface HTMLElementTagNameMap {
37
- 'sd-2-5-0-switch': SdSwitch;
37
+ 'sd-2-6-0-switch': SdSwitch;
38
38
  }
39
39
  }
@@ -51,7 +51,7 @@ let SdSwitch = class extends SolidElement {
51
51
  this.emit("sd-blur");
52
52
  }
53
53
  handleInput() {
54
- this.emit("sd-2-5-0-input");
54
+ this.emit("sd-2-6-0-input");
55
55
  }
56
56
  handleInvalid(event) {
57
57
  this.formControlController.setValidity(false);
@@ -163,7 +163,7 @@ __decorateClass([
163
163
  watch(["checked"], { waitUntilFirstUpdate: true })
164
164
  ], SdSwitch.prototype, "handleStateChange", 1);
165
165
  SdSwitch = __decorateClass([
166
- customElement("sd-2-5-0-switch")
166
+ customElement("sd-2-6-0-switch")
167
167
  ], SdSwitch);
168
168
  export {
169
169
  SdSwitch as default
@@ -0,0 +1,22 @@
1
+ import SolidElement from '../../internal/solid-element';
2
+ export default class SdTab extends SolidElement {
3
+ private readonly attrId;
4
+ private readonly componentId;
5
+ tab: HTMLElement;
6
+ panel: string;
7
+ variant: 'default' | 'container';
8
+ active: boolean;
9
+ disabled: boolean;
10
+ connectedCallback(): void;
11
+ handleActiveChange(): void;
12
+ handleDisabledChange(): void;
13
+ focus(options?: FocusOptions): void;
14
+ blur(): void;
15
+ render(): import("lit-html").TemplateResult<1>;
16
+ static styles: import("lit").CSSResultGroup[];
17
+ }
18
+ declare global {
19
+ interface HTMLElementTagNameMap {
20
+ 'sd-2-6-0-tab': SdTab;
21
+ }
22
+ }
@@ -0,0 +1,94 @@
1
+ import { css, html } from "lit";
2
+ import { customElement } from "../../internal/register-custom-element.js";
3
+ import { query, property } from "lit/decorators.js";
4
+ import { watch } from "../../internal/watch.js";
5
+ import componentStyles from "../../styles/component.styles.js";
6
+ import cx from "classix";
7
+ import SolidElement from "../../internal/solid-element.js";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __decorateClass = (decorators, target, key, kind) => {
11
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
12
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
13
+ if (decorator = decorators[i])
14
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
15
+ if (kind && result)
16
+ __defProp(target, key, result);
17
+ return result;
18
+ };
19
+ let id = 0;
20
+ let SdTab = class extends SolidElement {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.attrId = ++id;
24
+ this.componentId = `sd-2-6-0-tab-${this.attrId}`;
25
+ this.panel = "";
26
+ this.variant = "default";
27
+ this.active = false;
28
+ this.disabled = false;
29
+ }
30
+ connectedCallback() {
31
+ super.connectedCallback();
32
+ this.setAttribute("role", "tab");
33
+ }
34
+ handleActiveChange() {
35
+ this.setAttribute("aria-selected", this.active ? "true" : "false");
36
+ }
37
+ handleDisabledChange() {
38
+ this.setAttribute("aria-disabled", this.disabled ? "true" : "false");
39
+ }
40
+ /** Sets focus to the tab. */
41
+ focus(options) {
42
+ this.tab.focus(options);
43
+ }
44
+ /** Removes focus from the tab. */
45
+ blur() {
46
+ this.tab.blur();
47
+ }
48
+ render() {
49
+ this.id = this.id.length > 0 ? this.id : this.componentId;
50
+ return html`<div part="base" class="${cx(
51
+ "inline-flex gap-2 w-20 h-12 px-3 leading-none items-center justify-center whitespace-nowrap select-none cursor-pointer hover:bg-neutral-200 group relative focus-visible:focus-outline outline-2 !-outline-offset-2",
52
+ !this.active && "hover:border-b hover:border-neutral-400",
53
+ this.variant === "container" && " rounded-[4px_4px_0_0]",
54
+ this.variant === "container" && this.active && "tab--active-container-border bg-white",
55
+ this.disabled && "opacity-50 !cursor-not-allowed"
56
+ )}" tabindex="${this.disabled ? "-1" : "0"}"><slot name="left" class="pr-2"></slot><slot class="${cx(this.disabled ? "text-neutral-500" : "text-primary")}"></slot><div part="active-tab-indicator" class="${cx(
57
+ (!this.active || this.disabled) && "hidden",
58
+ "absolute bottom-0 h-1 bg-accent",
59
+ this.variant === "default" ? "w-full" : "w-1/2 group-hover:w-full transition-all duration-200 ease-in-out"
60
+ )}"></div></div>`;
61
+ }
62
+ };
63
+ SdTab.styles = [
64
+ SolidElement.styles,
65
+ componentStyles,
66
+ css`:host{box-sizing:border-box;display:block}.tab--active-container-border::after{content:'';position:absolute;height:100%;width:100%;border-width:1px;--tw-border-opacity:1;border-color:rgb(var(--sd-color-neutral-400,195 195 195) / var(--tw-border-opacity));border-bottom:none;border-radius:4px 4px 0 0}`
67
+ ];
68
+ __decorateClass([
69
+ query("[part=base]")
70
+ ], SdTab.prototype, "tab", 2);
71
+ __decorateClass([
72
+ property({ reflect: true })
73
+ ], SdTab.prototype, "panel", 2);
74
+ __decorateClass([
75
+ property({ type: String, reflect: true })
76
+ ], SdTab.prototype, "variant", 2);
77
+ __decorateClass([
78
+ property({ type: Boolean, reflect: true })
79
+ ], SdTab.prototype, "active", 2);
80
+ __decorateClass([
81
+ property({ type: Boolean, reflect: true })
82
+ ], SdTab.prototype, "disabled", 2);
83
+ __decorateClass([
84
+ watch("active")
85
+ ], SdTab.prototype, "handleActiveChange", 1);
86
+ __decorateClass([
87
+ watch("disabled")
88
+ ], SdTab.prototype, "handleDisabledChange", 1);
89
+ SdTab = __decorateClass([
90
+ customElement("sd-2-6-0-tab")
91
+ ], SdTab);
92
+ export {
93
+ SdTab as default
94
+ };
@@ -0,0 +1,40 @@
1
+ import SolidElement from '../../internal/solid-element';
2
+ import type SdTab from '../tab/tab';
3
+ export default class SdTabGroup extends SolidElement {
4
+ private readonly localize;
5
+ private activeTab?;
6
+ private mutationObserver;
7
+ private resizeObserver;
8
+ private tabs;
9
+ private panels;
10
+ tabGroup: HTMLElement;
11
+ body: HTMLSlotElement;
12
+ nav: HTMLElement;
13
+ hasScrollControls: boolean;
14
+ variant: string;
15
+ activation: 'auto' | 'manual';
16
+ connectedCallback(): void;
17
+ disconnectedCallback(): void;
18
+ private getAllTabs;
19
+ private getAllPanels;
20
+ private getActiveTab;
21
+ private handleClick;
22
+ private handleKeyDown;
23
+ private handleScrollToStart;
24
+ private handleScrollToEnd;
25
+ setActiveTab(tab: SdTab, options?: {
26
+ emitEvents?: boolean;
27
+ scrollBehavior?: 'auto' | 'smooth';
28
+ }): void;
29
+ private setAriaLabels;
30
+ private syncTabsAndPanels;
31
+ private updateScrollControls;
32
+ show(panel: string): void;
33
+ render(): import("lit-html").TemplateResult<1>;
34
+ static styles: import("lit").CSSResultGroup[];
35
+ }
36
+ declare global {
37
+ interface HTMLElementTagNameMap {
38
+ 'sd-2-6-0-tab-group': SdTabGroup;
39
+ }
40
+ }