@marioschmidt/design-system-components 1.3.1 → 1.3.2

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 (186) hide show
  1. package/dist/bds/bds.esm.js +1 -1
  2. package/dist/bds/p-72d44f50.entry.js +1 -0
  3. package/dist/bds/{p-DUrpTa_b.js → p-B4AUg0uO.js} +2 -2
  4. package/dist/cjs/bds.cjs.js +2 -2
  5. package/dist/cjs/ds-button_3.cjs.entry.js +28 -140
  6. package/dist/cjs/{index-yDPq0GyD.js → index-Bb064vv6.js} +3 -56
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/collection/ds-button/ds-button.css +3 -6
  9. package/dist/collection/ds-button/ds-button.js +50 -14
  10. package/dist/collection/ds-card/ds-card.js +2 -2
  11. package/dist/collection/ds-icon/ds-icon.css +4 -59
  12. package/dist/collection/ds-icon/ds-icon.js +20 -231
  13. package/dist/components/ds-button.d.ts +1 -1
  14. package/dist/components/ds-button.js +1 -1
  15. package/dist/components/ds-card.d.ts +1 -1
  16. package/dist/components/ds-card.js +1 -1
  17. package/dist/components/ds-icon.d.ts +1 -1
  18. package/dist/components/ds-icon.js +1 -1
  19. package/dist/components/index.js +1 -1
  20. package/dist/components/p-8SkbMDtJ.js +1 -0
  21. package/dist/docs/ds-button/readme.md +19 -4
  22. package/dist/docs/ds-icon/readme.md +17 -8
  23. package/dist/esm/bds.js +3 -3
  24. package/dist/esm/ds-button_3.entry.js +28 -140
  25. package/dist/esm/{index-DUrpTa_b.js → index-B4AUg0uO.js} +4 -56
  26. package/dist/esm/loader.js +3 -3
  27. package/dist/types/components.d.ts +24 -46
  28. package/dist/types/ds-button/ds-button.d.ts +9 -10
  29. package/dist/types/ds-icon/ds-icon.d.ts +2 -45
  30. package/dist/www/build/bds.esm.js +1 -1
  31. package/dist/www/build/p-72d44f50.entry.js +1 -0
  32. package/dist/www/build/{p-DUrpTa_b.js → p-B4AUg0uO.js} +2 -2
  33. package/dist/www/css/advertorial/components/_dsysdocs.css +1 -1
  34. package/dist/www/css/advertorial/components/article.css +1 -1
  35. package/dist/www/css/advertorial/components/audioplayer.css +1 -1
  36. package/dist/www/css/advertorial/components/avatar.css +1 -1
  37. package/dist/www/css/advertorial/components/badge.css +1 -1
  38. package/dist/www/css/advertorial/components/breadcrumb.css +1 -1
  39. package/dist/www/css/advertorial/components/breakingnews.css +1 -1
  40. package/dist/www/css/advertorial/components/button.css +1 -1
  41. package/dist/www/css/advertorial/components/card.css +1 -1
  42. package/dist/www/css/advertorial/components/carousel.css +1 -1
  43. package/dist/www/css/advertorial/components/chip.css +1 -1
  44. package/dist/www/css/advertorial/components/datepicker.css +1 -1
  45. package/dist/www/css/advertorial/components/drawers.css +1 -1
  46. package/dist/www/css/advertorial/components/dropdown.css +1 -1
  47. package/dist/www/css/advertorial/components/footer.css +1 -1
  48. package/dist/www/css/advertorial/components/icon.css +1 -1
  49. package/dist/www/css/advertorial/components/iconbutton.css +1 -1
  50. package/dist/www/css/advertorial/components/infoelement.css +1 -1
  51. package/dist/www/css/advertorial/components/inputfield.css +1 -1
  52. package/dist/www/css/advertorial/components/liveticker.css +1 -1
  53. package/dist/www/css/advertorial/components/mediaplayer.css +1 -1
  54. package/dist/www/css/advertorial/components/menu.css +1 -1
  55. package/dist/www/css/advertorial/components/newsticker.css +1 -1
  56. package/dist/www/css/advertorial/components/pagination.css +1 -1
  57. package/dist/www/css/advertorial/components/paywall.css +1 -1
  58. package/dist/www/css/advertorial/components/quote.css +1 -1
  59. package/dist/www/css/advertorial/components/radiobutton.css +1 -1
  60. package/dist/www/css/advertorial/components/search.css +1 -1
  61. package/dist/www/css/advertorial/components/sectiontitle.css +1 -1
  62. package/dist/www/css/advertorial/components/separator.css +1 -1
  63. package/dist/www/css/advertorial/components/skeletons.css +1 -1
  64. package/dist/www/css/advertorial/components/slider.css +1 -1
  65. package/dist/www/css/advertorial/components/specialnavi.css +1 -1
  66. package/dist/www/css/advertorial/components/spinner.css +1 -1
  67. package/dist/www/css/advertorial/components/tab.css +1 -1
  68. package/dist/www/css/advertorial/components/table.css +1 -1
  69. package/dist/www/css/advertorial/components/teaser.css +1 -1
  70. package/dist/www/css/advertorial/components/toggleswitch.css +1 -1
  71. package/dist/www/css/advertorial/components/video.css +1 -1
  72. package/dist/www/css/advertorial/theme.css +1 -1
  73. package/dist/www/css/advertorial/tokens.css +1 -1
  74. package/dist/www/css/bild/components/_dsysdoc.css +1 -1
  75. package/dist/www/css/bild/components/_dsysdocs.css +1 -1
  76. package/dist/www/css/bild/components/alert.css +1 -1
  77. package/dist/www/css/bild/components/article.css +1 -1
  78. package/dist/www/css/bild/components/audioplayer.css +1 -1
  79. package/dist/www/css/bild/components/avatar.css +1 -1
  80. package/dist/www/css/bild/components/badge.css +1 -1
  81. package/dist/www/css/bild/components/breadcrumb.css +1 -1
  82. package/dist/www/css/bild/components/breakingnews.css +1 -1
  83. package/dist/www/css/bild/components/button.css +1 -1
  84. package/dist/www/css/bild/components/card.css +1 -1
  85. package/dist/www/css/bild/components/carousel.css +1 -1
  86. package/dist/www/css/bild/components/chip.css +1 -1
  87. package/dist/www/css/bild/components/datepicker.css +1 -1
  88. package/dist/www/css/bild/components/drawers.css +1 -1
  89. package/dist/www/css/bild/components/dropdown.css +1 -1
  90. package/dist/www/css/bild/components/empties.css +1 -1
  91. package/dist/www/css/bild/components/footer.css +1 -1
  92. package/dist/www/css/bild/components/gallery.css +1 -1
  93. package/dist/www/css/bild/components/icon.css +1 -1
  94. package/dist/www/css/bild/components/iconbutton.css +1 -1
  95. package/dist/www/css/bild/components/infoelement.css +1 -1
  96. package/dist/www/css/bild/components/inputfield.css +1 -1
  97. package/dist/www/css/bild/components/kicker.css +1 -1
  98. package/dist/www/css/bild/components/liveticker.css +1 -1
  99. package/dist/www/css/bild/components/mediaplayer.css +1 -1
  100. package/dist/www/css/bild/components/menu.css +1 -1
  101. package/dist/www/css/bild/components/menuitem.css +1 -1
  102. package/dist/www/css/bild/components/newsticker.css +1 -1
  103. package/dist/www/css/bild/components/pagination.css +1 -1
  104. package/dist/www/css/bild/components/partnerlinks.css +1 -1
  105. package/dist/www/css/bild/components/paywall.css +1 -1
  106. package/dist/www/css/bild/components/quote.css +1 -1
  107. package/dist/www/css/bild/components/radiobutton.css +1 -1
  108. package/dist/www/css/bild/components/search.css +1 -1
  109. package/dist/www/css/bild/components/sectiontitle.css +1 -1
  110. package/dist/www/css/bild/components/selection.css +1 -1
  111. package/dist/www/css/bild/components/separator.css +1 -1
  112. package/dist/www/css/bild/components/skeletons.css +1 -1
  113. package/dist/www/css/bild/components/slider.css +1 -1
  114. package/dist/www/css/bild/components/specialnavi.css +1 -1
  115. package/dist/www/css/bild/components/spinner.css +1 -1
  116. package/dist/www/css/bild/components/subheader.css +1 -1
  117. package/dist/www/css/bild/components/tab.css +1 -1
  118. package/dist/www/css/bild/components/table.css +1 -1
  119. package/dist/www/css/bild/components/teaser.css +1 -1
  120. package/dist/www/css/bild/components/toggleswitch.css +1 -1
  121. package/dist/www/css/bild/components/video.css +1 -1
  122. package/dist/www/css/bild/theme.css +1 -1
  123. package/dist/www/css/bild/tokens.css +1 -1
  124. package/dist/www/css/bundles/advertorial.css +1 -1
  125. package/dist/www/css/bundles/bild.css +1 -1
  126. package/dist/www/css/bundles/sportbild.css +1 -1
  127. package/dist/www/css/shared/colorprimitive.css +1 -1
  128. package/dist/www/css/shared/fontprimitive.css +1 -1
  129. package/dist/www/css/shared/primitives.css +1 -1
  130. package/dist/www/css/shared/sizeprimitive.css +1 -1
  131. package/dist/www/css/shared/spaceprimitive.css +1 -1
  132. package/dist/www/css/sportbild/components/_dsysdoc.css +1 -1
  133. package/dist/www/css/sportbild/components/_dsysdocs.css +1 -1
  134. package/dist/www/css/sportbild/components/alert.css +1 -1
  135. package/dist/www/css/sportbild/components/article.css +1 -1
  136. package/dist/www/css/sportbild/components/audioplayer.css +1 -1
  137. package/dist/www/css/sportbild/components/avatar.css +1 -1
  138. package/dist/www/css/sportbild/components/badge.css +1 -1
  139. package/dist/www/css/sportbild/components/breadcrumb.css +1 -1
  140. package/dist/www/css/sportbild/components/breakingnews.css +1 -1
  141. package/dist/www/css/sportbild/components/button.css +1 -1
  142. package/dist/www/css/sportbild/components/card.css +1 -1
  143. package/dist/www/css/sportbild/components/carousel.css +1 -1
  144. package/dist/www/css/sportbild/components/chip.css +1 -1
  145. package/dist/www/css/sportbild/components/datepicker.css +1 -1
  146. package/dist/www/css/sportbild/components/drawers.css +1 -1
  147. package/dist/www/css/sportbild/components/dropdown.css +1 -1
  148. package/dist/www/css/sportbild/components/empties.css +1 -1
  149. package/dist/www/css/sportbild/components/footer.css +1 -1
  150. package/dist/www/css/sportbild/components/gallery.css +1 -1
  151. package/dist/www/css/sportbild/components/icon.css +1 -1
  152. package/dist/www/css/sportbild/components/iconbutton.css +1 -1
  153. package/dist/www/css/sportbild/components/infoelement.css +1 -1
  154. package/dist/www/css/sportbild/components/inputfield.css +1 -1
  155. package/dist/www/css/sportbild/components/kicker.css +1 -1
  156. package/dist/www/css/sportbild/components/liveticker.css +1 -1
  157. package/dist/www/css/sportbild/components/mediaplayer.css +1 -1
  158. package/dist/www/css/sportbild/components/menu.css +1 -1
  159. package/dist/www/css/sportbild/components/menuitem.css +1 -1
  160. package/dist/www/css/sportbild/components/newsticker.css +1 -1
  161. package/dist/www/css/sportbild/components/pagination.css +1 -1
  162. package/dist/www/css/sportbild/components/partnerlinks.css +1 -1
  163. package/dist/www/css/sportbild/components/paywall.css +1 -1
  164. package/dist/www/css/sportbild/components/quote.css +1 -1
  165. package/dist/www/css/sportbild/components/radiobutton.css +1 -1
  166. package/dist/www/css/sportbild/components/search.css +1 -1
  167. package/dist/www/css/sportbild/components/sectiontitle.css +1 -1
  168. package/dist/www/css/sportbild/components/selection.css +1 -1
  169. package/dist/www/css/sportbild/components/separator.css +1 -1
  170. package/dist/www/css/sportbild/components/skeletons.css +1 -1
  171. package/dist/www/css/sportbild/components/slider.css +1 -1
  172. package/dist/www/css/sportbild/components/specialnavi.css +1 -1
  173. package/dist/www/css/sportbild/components/spinner.css +1 -1
  174. package/dist/www/css/sportbild/components/subheader.css +1 -1
  175. package/dist/www/css/sportbild/components/tab.css +1 -1
  176. package/dist/www/css/sportbild/components/table.css +1 -1
  177. package/dist/www/css/sportbild/components/teaser.css +1 -1
  178. package/dist/www/css/sportbild/components/toggleswitch.css +1 -1
  179. package/dist/www/css/sportbild/components/video.css +1 -1
  180. package/dist/www/css/sportbild/theme.css +1 -1
  181. package/dist/www/css/sportbild/tokens.css +1 -1
  182. package/dist/www/icons/manifest.json +2 -2
  183. package/dist/www/index.html +2 -2
  184. package/package.json +1 -1
  185. package/dist/bds/p-f4e1fe1f.entry.js +0 -1
  186. package/dist/www/build/p-f4e1fe1f.entry.js +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-yDPq0GyD.js');
3
+ var index = require('./index-Bb064vv6.js');
4
4
 
5
5
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
6
6
  /*
@@ -18,7 +18,7 @@ var patchBrowser = () => {
18
18
 
19
19
  patchBrowser().then(async (options) => {
20
20
  await index.globalScripts();
21
- return index.bootstrapLazy([["ds-button_3.cjs",[[257,"ds-button",{"variant":[1],"disabled":[4]}],[257,"ds-card",{"surface":[1],"cardTitle":[1,"card-title"]}],[1,"ds-icon",{"name":[1],"size":[2],"color":[1],"basePath":[1,"base-path"],"lazy":[4],"label":[1],"svgContent":[32],"isLoading":[32],"hasError":[32]},null,{"name":[{"onNameChange":0}],"basePath":[{"onBasePathChange":0}]}]]]], options);
21
+ return index.bootstrapLazy([["ds-button_3.cjs",[[257,"ds-button",{"variant":[1],"disabled":[4],"icon":[1],"iconPosition":[1,"icon-position"]}],[257,"ds-card",{"surface":[1],"cardTitle":[1,"card-title"]}],[1,"ds-icon",{"name":[1],"basePath":[1,"base-path"],"svgContent":[32]},null,{"name":[{"onNameChange":0}]}]]]], options);
22
22
  });
23
23
 
24
24
  exports.setNonce = index.setNonce;
@@ -1,29 +1,32 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-yDPq0GyD.js');
3
+ var index = require('./index-Bb064vv6.js');
4
4
 
5
- const dsButtonCss = () => `:host{display:inline-block}.ds-button{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:transparent;transition:background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;padding:var(--button-stack-space) var(--button-inline-space);min-height:var(--button-height-size);gap:var(--button-content-gap-space);border-radius:var(--button-border-radius);font-family:var(--button-label-font-family);font-weight:var(--font-weight-bold);font-size:var(--button-label-font-size);line-height:var(--button-label-line-height);letter-spacing:var(--letter-space-0-p-5);text-transform:uppercase}.ds-button__label{display:inline-flex;align-items:center;gap:inherit}::slotted(ds-icon){--icon-size:var(--icon-size, 24px);color:inherit;flex-shrink:0}.ds-button--primary-brand{background-color:var(--button-primary-brand-bg-color-idle);color:var(--button-primary-brand-label-color)}.ds-button--primary-brand:hover:not(:disabled){background-color:var(--button-primary-brand-bg-color-hover)}.ds-button--primary-brand:active:not(:disabled){background-color:var(--button-primary-brand-bg-color-active)}.ds-button--primary-neutral{background-color:var(--button-primary-neutral-bg-color-idle);color:var(--button-primary-neutral-label-color)}.ds-button--primary-neutral:hover:not(:disabled){background-color:var(--button-primary-neutral-bg-color-hover)}.ds-button--primary-neutral:active:not(:disabled){background-color:var(--button-primary-neutral-bg-color-active)}.ds-button--primary-success{background-color:var(--button-primary-success-bg-color-idle);color:var(--button-primary-success-label-color)}.ds-button--primary-success:hover:not(:disabled){background-color:var(--button-primary-success-bg-color-hover)}.ds-button--primary-success:active:not(:disabled){background-color:var(--button-primary-success-bg-color-active)}.ds-button--secondary{background-color:var(--button-secondary-bg-color-idle);color:var(--button-secondary-label-color)}.ds-button--secondary:hover:not(:disabled){background-color:var(--button-secondary-bg-color-hover)}.ds-button--secondary:active:not(:disabled){background-color:var(--button-secondary-bg-color-active)}.ds-button--tertiary-neutral{background-color:transparent;color:var(--button-tertiary-neutral-label-color);border:var(--button-border-width-size) solid var(--button-tertiary-neutral-border-color-idle)}.ds-button--tertiary-neutral:hover:not(:disabled){background-color:var(--button-tertiary-neutral-bg-color-hover);border-color:var(--button-tertiary-neutral-border-color-hover)}.ds-button--tertiary-neutral:active:not(:disabled){background-color:var(--button-tertiary-neutral-bg-color-active)}.ds-button--tertiary-success{background-color:transparent;color:var(--button-tertiary-success-label-color);border:var(--button-border-width-size) solid var(--button-tertiary-success-border-color)}.ds-button--tertiary-success:hover:not(:disabled){background-color:var(--button-tertiary-success-bg-color-hover)}.ds-button--ghost{background-color:transparent;color:var(--button-ghost-label-color)}.ds-button--ghost:hover:not(:disabled){background-color:var(--button-ghost-bg-color-hover)}.ds-button--ghost:active:not(:disabled){background-color:var(--button-ghost-bg-color-active)}.ds-button--disabled,.ds-button:disabled{cursor:not-allowed;background-color:var(--button-disabled-bg-color);color:var(--button-disabled-label-color);border-color:var(--button-disabled-border-color)}.ds-button--disabled:hover,.ds-button--disabled:active,.ds-button:disabled:hover,.ds-button:disabled:active{background-color:var(--button-disabled-bg-color);color:var(--button-disabled-label-color);border-color:var(--button-disabled-border-color)}.ds-button:focus-visible{outline:2px solid var(--core-color-primary);outline-offset:2px}`;
5
+ const dsButtonCss = () => `:host{display:inline-block}.ds-button{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:transparent;transition:background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;padding:var(--button-stack-space) var(--button-inline-space);min-height:var(--button-height-size);gap:var(--button-content-gap-space);border-radius:var(--button-border-radius);font-family:var(--button-label-font-family);font-weight:var(--font-weight-bold);font-size:var(--button-label-font-size);line-height:var(--button-label-line-height);letter-spacing:var(--letter-space-0-p-5);text-transform:uppercase}.ds-button__label{display:inline-flex;align-items:center;gap:inherit}ds-icon{--icon-size:var(--icon-size);flex-shrink:0}.ds-button--primary-brand{background-color:var(--button-primary-brand-bg-color-idle);color:var(--button-primary-brand-label-color)}.ds-button--primary-brand:hover:not(:disabled){background-color:var(--button-primary-brand-bg-color-hover)}.ds-button--primary-brand:active:not(:disabled){background-color:var(--button-primary-brand-bg-color-active)}.ds-button--primary-neutral{background-color:var(--button-primary-neutral-bg-color-idle);color:var(--button-primary-neutral-label-color)}.ds-button--primary-neutral:hover:not(:disabled){background-color:var(--button-primary-neutral-bg-color-hover)}.ds-button--primary-neutral:active:not(:disabled){background-color:var(--button-primary-neutral-bg-color-active)}.ds-button--primary-success{background-color:var(--button-primary-success-bg-color-idle);color:var(--button-primary-success-label-color)}.ds-button--primary-success:hover:not(:disabled){background-color:var(--button-primary-success-bg-color-hover)}.ds-button--primary-success:active:not(:disabled){background-color:var(--button-primary-success-bg-color-active)}.ds-button--secondary{background-color:var(--button-secondary-bg-color-idle);color:var(--button-secondary-label-color)}.ds-button--secondary:hover:not(:disabled){background-color:var(--button-secondary-bg-color-hover)}.ds-button--secondary:active:not(:disabled){background-color:var(--button-secondary-bg-color-active)}.ds-button--tertiary-neutral{background-color:transparent;color:var(--button-tertiary-neutral-label-color);border:var(--button-border-width-size) solid var(--button-tertiary-neutral-border-color-idle)}.ds-button--tertiary-neutral:hover:not(:disabled){background-color:var(--button-tertiary-neutral-bg-color-hover);border-color:var(--button-tertiary-neutral-border-color-hover)}.ds-button--tertiary-neutral:active:not(:disabled){background-color:var(--button-tertiary-neutral-bg-color-active)}.ds-button--tertiary-success{background-color:transparent;color:var(--button-tertiary-success-label-color);border:var(--button-border-width-size) solid var(--button-tertiary-success-border-color)}.ds-button--tertiary-success:hover:not(:disabled){background-color:var(--button-tertiary-success-bg-color-hover)}.ds-button--ghost{background-color:transparent;color:var(--button-ghost-label-color)}.ds-button--ghost:hover:not(:disabled){background-color:var(--button-ghost-bg-color-hover)}.ds-button--ghost:active:not(:disabled){background-color:var(--button-ghost-bg-color-active)}.ds-button--disabled,.ds-button:disabled{cursor:not-allowed;background-color:var(--button-disabled-bg-color);color:var(--button-disabled-label-color);border-color:var(--button-disabled-border-color)}.ds-button--disabled:hover,.ds-button--disabled:active,.ds-button:disabled:hover,.ds-button:disabled:active{background-color:var(--button-disabled-bg-color);color:var(--button-disabled-label-color);border-color:var(--button-disabled-border-color)}.ds-button:focus-visible{outline:2px solid var(--core-color-primary);outline-offset:2px}`;
6
6
 
7
7
  const DsButton = class {
8
8
  constructor(hostRef) {
9
9
  index.registerInstance(this, hostRef);
10
10
  /**
11
11
  * Button variant determining visual style.
12
- * @default 'primary-brand'
13
12
  */
14
13
  this.variant = 'primary-brand';
15
14
  /**
16
- * Disables the button interaction and applies disabled styling.
17
- * @default false
15
+ * Disables the button.
18
16
  */
19
17
  this.disabled = false;
18
+ /**
19
+ * Icon position: 'start' or 'end'.
20
+ */
21
+ this.iconPosition = 'start';
20
22
  }
21
23
  render() {
22
- return (index.h("button", { key: 'b2c29af56fa84e6274900496d1a57bf7be6070e0', class: {
24
+ const iconEl = this.icon ? index.h("ds-icon", { name: this.icon }) : null;
25
+ return (index.h("button", { key: '000508b5713956932132412d59f9ba1b9baa96c7', class: {
23
26
  'ds-button': true,
24
27
  [`ds-button--${this.variant}`]: true,
25
28
  'ds-button--disabled': this.disabled,
26
- }, disabled: this.disabled }, index.h("slot", { key: 'c87fb66dffa329b2911752390d69d808aea83ead', name: "icon-start" }), index.h("span", { key: '3049998d0fca7eef41dc5bbc51ab14d396855840', class: "ds-button__label" }, index.h("slot", { key: '540e93a8de6f0be305963e7b05b90dcbacda6f37' })), index.h("slot", { key: 'f48be5683052a40bb97436f20b219a42fb09319a', name: "icon-end" })));
29
+ }, disabled: this.disabled }, this.iconPosition === 'start' && iconEl, index.h("span", { key: '1cf189f05c1f2cdb82f54f6f2283eaa9c6e38381', class: "ds-button__label" }, index.h("slot", { key: '89eadaa81aaa4e458e46b29e02291ad45c027101' })), this.iconPosition === 'end' && iconEl));
27
30
  }
28
31
  };
29
32
  DsButton.style = dsButtonCss();
@@ -39,173 +42,58 @@ const DsCard = class {
39
42
  this.surface = 'primary';
40
43
  }
41
44
  render() {
42
- return (index.h("div", { key: '0709463754ee76974475f214840ade290ee7aa83', class: {
45
+ return (index.h("div", { key: '545dfb7389201a046b465e96723fdc8ad5cd1160', class: {
43
46
  'ds-card': true,
44
47
  [`ds-card--${this.surface}`]: true,
45
- } }, this.cardTitle && (index.h("div", { key: 'e161468e870e419852e6ef9f92ab9fc24ac60635', class: "ds-card__header" }, index.h("h3", { key: '8cccde3f7e5ea185ef24d90312439d2e49621504', class: "ds-card__title" }, this.cardTitle))), index.h("div", { key: '47457839b1fa00f261c1fbfb8842904fb9bf8245', class: "ds-card__content" }, index.h("slot", { key: '009a1b1e7411daec2c67fd084d654de71875222e' }))));
48
+ } }, this.cardTitle && (index.h("div", { key: '63523222100e039098a941c2125df63a7bc8a0ee', class: "ds-card__header" }, index.h("h3", { key: '7e60906b0aeb4d8d20fc09a85d06f4d0bd4a95ae', class: "ds-card__title" }, this.cardTitle))), index.h("div", { key: '544d6b4e6ac95745261ee73c81f2d01c2806afd3', class: "ds-card__content" }, index.h("slot", { key: '9102bcc585687daf5d954059a138ad7bac27b640' }))));
46
49
  }
47
50
  };
48
51
  DsCard.style = dsCardCss();
49
52
 
50
- const dsIconCss = () => `:host{display:inline-flex;align-items:center;justify-content:center}.ds-icon{display:inline-flex;align-items:center;justify-content:center;width:var(--icon-size, 24px);height:var(--icon-size, 24px);color:var(--icon-color, currentColor);flex-shrink:0}.ds-icon__svg{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.ds-icon__svg svg{width:100%;height:100%;fill:currentColor}.ds-icon--loading{opacity:0.5}.ds-icon--error{opacity:0.3}.ds-icon__error{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.ds-icon__error svg{width:100%;height:100%;fill:currentColor}`;
53
+ const dsIconCss = () => `:host{display:inline-flex;align-items:center;justify-content:center;width:var(--icon-size);height:var(--icon-size);color:inherit}.ds-icon{display:flex;width:100%;height:100%}.ds-icon svg{width:100%;height:100%;fill:currentColor}`;
51
54
 
52
- /**
53
- * Icon cache shared between all ds-icon instances.
54
- * Prevents duplicate fetch requests for the same icon.
55
- */
56
55
  const iconCache = new Map();
57
- const pendingRequests = new Map();
58
56
  const DsIcon = class {
59
57
  constructor(hostRef) {
60
58
  index.registerInstance(this, hostRef);
61
59
  /**
62
- * Size of the icon in pixels.
63
- * @default 24
64
- */
65
- this.size = 24;
66
- /**
67
- * Color of the icon. Accepts any valid CSS color value.
68
- * Icons use currentColor by default, inheriting from parent.
69
- * @default 'currentColor'
70
- */
71
- this.color = 'currentColor';
72
- /**
73
- * Base path for loading icon SVG files.
74
- * @default '/icons'
60
+ * Base path for icon SVG files.
75
61
  */
76
62
  this.basePath = '/icons';
77
- /**
78
- * Enable lazy loading with IntersectionObserver.
79
- * Icon will only load when visible in viewport.
80
- * @default false
81
- */
82
- this.lazy = false;
83
- /**
84
- * Internal state for the loaded SVG content.
85
- */
86
63
  this.svgContent = '';
87
- /**
88
- * Internal state for loading status.
89
- */
90
- this.isLoading = false;
91
- /**
92
- * Internal state for error status.
93
- */
94
- this.hasError = false;
95
- this.isVisible = false;
96
64
  }
97
65
  connectedCallback() {
98
- if (this.lazy) {
99
- this.setupIntersectionObserver();
100
- }
101
- else {
102
- this.loadIcon();
103
- }
104
- }
105
- disconnectedCallback() {
106
- this.observer?.disconnect();
66
+ this.loadIcon();
107
67
  }
108
68
  onNameChange() {
109
- if (!this.lazy || this.isVisible) {
110
- this.loadIcon();
111
- }
112
- }
113
- onBasePathChange() {
114
- if (!this.lazy || this.isVisible) {
115
- this.loadIcon();
116
- }
117
- }
118
- setupIntersectionObserver() {
119
- if (typeof IntersectionObserver === 'undefined') {
120
- // Fallback for browsers without IntersectionObserver
121
- this.loadIcon();
122
- return;
123
- }
124
- this.observer = new IntersectionObserver((entries) => {
125
- entries.forEach((entry) => {
126
- if (entry.isIntersecting) {
127
- this.isVisible = true;
128
- this.loadIcon();
129
- this.observer?.disconnect();
130
- }
131
- });
132
- }, {
133
- rootMargin: '50px', // Load slightly before entering viewport
134
- });
135
- this.observer.observe(this.el);
69
+ this.loadIcon();
136
70
  }
137
71
  async loadIcon() {
138
- if (!this.name) {
139
- this.hasError = true;
140
- return;
141
- }
142
- const iconUrl = `${this.basePath}/${this.name}.svg`;
143
- // Check cache first
144
- if (iconCache.has(iconUrl)) {
145
- this.svgContent = iconCache.get(iconUrl);
146
- this.hasError = false;
72
+ if (!this.name)
147
73
  return;
148
- }
149
- // Check for pending request (prevent duplicate fetches)
150
- if (pendingRequests.has(iconUrl)) {
151
- try {
152
- this.svgContent = await pendingRequests.get(iconUrl);
153
- this.hasError = false;
154
- }
155
- catch {
156
- this.hasError = true;
157
- }
74
+ const url = `${this.basePath}/${this.name}.svg`;
75
+ if (iconCache.has(url)) {
76
+ this.svgContent = iconCache.get(url);
158
77
  return;
159
78
  }
160
- this.isLoading = true;
161
- this.hasError = false;
162
- // Create fetch promise and store it
163
- const fetchPromise = this.fetchIcon(iconUrl);
164
- pendingRequests.set(iconUrl, fetchPromise);
165
79
  try {
166
- this.svgContent = await fetchPromise;
167
- iconCache.set(iconUrl, this.svgContent);
168
- this.hasError = false;
80
+ const response = await fetch(url);
81
+ if (response.ok) {
82
+ const svg = await response.text();
83
+ iconCache.set(url, svg);
84
+ this.svgContent = svg;
85
+ }
169
86
  }
170
87
  catch {
171
- this.hasError = true;
172
- this.svgContent = '';
173
- }
174
- finally {
175
- this.isLoading = false;
176
- pendingRequests.delete(iconUrl);
177
- }
178
- }
179
- async fetchIcon(url) {
180
- const response = await fetch(url);
181
- if (!response.ok) {
182
- throw new Error(`Failed to load icon: ${url}`);
183
- }
184
- const svgText = await response.text();
185
- // Basic security check - ensure it's valid SVG
186
- if (!svgText.includes('<svg')) {
187
- throw new Error(`Invalid SVG content: ${url}`);
88
+ // Silent fail
188
89
  }
189
- return svgText;
190
90
  }
191
91
  render() {
192
- const isDecorative = !this.label;
193
- return (index.h("span", { key: 'f3c397e6532cf9022416cf53458dd6d0b128a3ed', class: {
194
- 'ds-icon': true,
195
- 'ds-icon--loading': this.isLoading,
196
- 'ds-icon--error': this.hasError,
197
- }, style: {
198
- '--icon-size': `${this.size}px`,
199
- '--icon-color': this.color,
200
- }, role: isDecorative ? 'presentation' : 'img', "aria-hidden": isDecorative ? 'true' : undefined, "aria-label": this.label }, this.svgContent ? (index.h("span", { class: "ds-icon__svg", innerHTML: this.svgContent })) : this.hasError ? (index.h("span", { class: "ds-icon__error", title: `Icon "${this.name}" not found` }, index.h("svg", { viewBox: "0 0 24 24", fill: "currentColor" }, index.h("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })))) : null));
92
+ return (index.h("span", { key: 'f3549bfd71c52f0bf0b23c346fa5a665119c4033', class: "ds-icon", innerHTML: this.svgContent }));
201
93
  }
202
- get el() { return index.getElement(this); }
203
94
  static get watchers() { return {
204
95
  "name": [{
205
96
  "onNameChange": 0
206
- }],
207
- "basePath": [{
208
- "onBasePathChange": 0
209
97
  }]
210
98
  }; }
211
99
  };
@@ -255,10 +255,6 @@ var require_brace_expansion = __commonJS({
255
255
  }
256
256
  }
257
257
  });
258
-
259
- // src/utils/constants.ts
260
- var SVG_NS = "http://www.w3.org/2000/svg";
261
- var HTML_NS = "http://www.w3.org/1999/xhtml";
262
258
  var reWireGetterSetter = (instance, hostRef) => {
263
259
  var _a;
264
260
  const cmpMeta = hostRef.$cmpMeta$;
@@ -2126,9 +2122,6 @@ var parsePropertyValue = (propValue, propType, isFormAssociated) => {
2126
2122
  return propValue === "false" ? false : propValue === "" || !!propValue;
2127
2123
  }
2128
2124
  }
2129
- if (propType & 2 /* Number */) {
2130
- return typeof propValue === "string" ? parseFloat(propValue) : typeof propValue === "number" ? propValue : NaN;
2131
- }
2132
2125
  if (propType & 1 /* String */) {
2133
2126
  return String(propValue);
2134
2127
  }
@@ -2136,10 +2129,6 @@ var parsePropertyValue = (propValue, propType, isFormAssociated) => {
2136
2129
  }
2137
2130
  return propValue;
2138
2131
  };
2139
- var getElement = (ref) => {
2140
- var _a;
2141
- return (_a = getHostRef(ref)) == null ? void 0 : _a.$hostElement$ ;
2142
- };
2143
2132
  var emitEvent = (elm, name, opts) => {
2144
2133
  const ev = plt.ce(name, opts);
2145
2134
  elm.dispatchEvent(ev);
@@ -2159,30 +2148,9 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
2159
2148
  classList.remove(...oldClasses.filter((c) => c && !newClasses.includes(c)));
2160
2149
  classList.add(...newClasses.filter((c) => c && !oldClasses.includes(c)));
2161
2150
  }
2162
- } else if (memberName === "style") {
2163
- {
2164
- for (const prop in oldValue) {
2165
- if (!newValue || newValue[prop] == null) {
2166
- if (prop.includes("-")) {
2167
- elm.style.removeProperty(prop);
2168
- } else {
2169
- elm.style[prop] = "";
2170
- }
2171
- }
2172
- }
2173
- }
2174
- for (const prop in newValue) {
2175
- if (!oldValue || newValue[prop] !== oldValue[prop]) {
2176
- if (prop.includes("-")) {
2177
- elm.style.setProperty(prop, newValue[prop]);
2178
- } else {
2179
- elm.style[prop] = newValue[prop];
2180
- }
2181
- }
2182
- }
2183
2151
  } else if (memberName === "key") ; else {
2184
2152
  const isComplex = isComplexType(newValue);
2185
- if ((isProp || isComplex && newValue !== null) && !isSvg) {
2153
+ if ((isProp || isComplex && newValue !== null) && true) {
2186
2154
  try {
2187
2155
  if (!elm.tagName.includes("-")) {
2188
2156
  const n = newValue == null ? "" : newValue;
@@ -2274,21 +2242,14 @@ var createElm = (oldParentVNode, newParentVNode, childIndex) => {
2274
2242
  if (newVNode2.$text$ !== null) {
2275
2243
  elm = newVNode2.$elm$ = win.document.createTextNode(newVNode2.$text$);
2276
2244
  } else {
2277
- if (!isSvgMode) {
2278
- isSvgMode = newVNode2.$tag$ === "svg";
2279
- }
2280
2245
  if (!win.document) {
2281
2246
  throw new Error(
2282
2247
  "You are trying to render a Stencil component in an environment that doesn't support the DOM. Make sure to populate the [`window`](https://developer.mozilla.org/en-US/docs/Web/API/Window/window) object before rendering a component."
2283
2248
  );
2284
2249
  }
2285
- elm = newVNode2.$elm$ = win.document.createElementNS(
2286
- isSvgMode ? SVG_NS : HTML_NS,
2250
+ elm = newVNode2.$elm$ = win.document.createElement(
2287
2251
  newVNode2.$tag$
2288
- ) ;
2289
- if (isSvgMode && newVNode2.$tag$ === "foreignObject") {
2290
- isSvgMode = false;
2291
- }
2252
+ );
2292
2253
  {
2293
2254
  updateElement(null, newVNode2, isSvgMode);
2294
2255
  }
@@ -2301,13 +2262,6 @@ var createElm = (oldParentVNode, newParentVNode, childIndex) => {
2301
2262
  }
2302
2263
  }
2303
2264
  }
2304
- {
2305
- if (newVNode2.$tag$ === "svg") {
2306
- isSvgMode = false;
2307
- } else if (elm.tagName === "foreignObject") {
2308
- isSvgMode = true;
2309
- }
2310
- }
2311
2265
  }
2312
2266
  elm["s-hn"] = hostTagName;
2313
2267
  return elm;
@@ -2465,9 +2419,6 @@ var patch = (oldVNode, newVNode2, isInitialRender = false) => {
2465
2419
  const tag = newVNode2.$tag$;
2466
2420
  const text = newVNode2.$text$;
2467
2421
  if (text === null) {
2468
- {
2469
- isSvgMode = tag === "svg" ? true : tag === "foreignObject" ? false : isSvgMode;
2470
- }
2471
2422
  {
2472
2423
  if (tag === "slot" && !useNativeShadowDom) {
2473
2424
  if (oldVNode.$name$ !== newVNode2.$name$) {
@@ -2490,9 +2441,6 @@ var patch = (oldVNode, newVNode2, isInitialRender = false) => {
2490
2441
  ) {
2491
2442
  removeVnodes(oldChildren, 0, oldChildren.length - 1);
2492
2443
  } else ;
2493
- if (isSvgMode && tag === "svg") {
2494
- isSvgMode = false;
2495
- }
2496
2444
  } else if (oldVNode.$text$ !== text) {
2497
2445
  elm.data = text;
2498
2446
  }
@@ -3187,7 +3135,6 @@ function transformTag(tag) {
3187
3135
  }
3188
3136
 
3189
3137
  exports.bootstrapLazy = bootstrapLazy;
3190
- exports.getElement = getElement;
3191
3138
  exports.globalScripts = globalScripts;
3192
3139
  exports.h = h;
3193
3140
  exports.promiseResolve = promiseResolve;
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-yDPq0GyD.js');
3
+ var index = require('./index-Bb064vv6.js');
4
4
 
5
5
  const defineCustomElements = async (win, options) => {
6
6
  if (typeof window === 'undefined') return undefined;
7
7
  await index.globalScripts();
8
- return index.bootstrapLazy([["ds-button_3.cjs",[[257,"ds-button",{"variant":[1],"disabled":[4]}],[257,"ds-card",{"surface":[1],"cardTitle":[1,"card-title"]}],[1,"ds-icon",{"name":[1],"size":[2],"color":[1],"basePath":[1,"base-path"],"lazy":[4],"label":[1],"svgContent":[32],"isLoading":[32],"hasError":[32]},null,{"name":[{"onNameChange":0}],"basePath":[{"onBasePathChange":0}]}]]]], options);
8
+ return index.bootstrapLazy([["ds-button_3.cjs",[[257,"ds-button",{"variant":[1],"disabled":[4],"icon":[1],"iconPosition":[1,"icon-position"]}],[257,"ds-card",{"surface":[1],"cardTitle":[1,"card-title"]}],[1,"ds-icon",{"name":[1],"basePath":[1,"base-path"],"svgContent":[32]},null,{"name":[{"onNameChange":0}]}]]]], options);
9
9
  };
10
10
 
11
11
  exports.setNonce = index.setNonce;
@@ -50,14 +50,11 @@
50
50
  }
51
51
 
52
52
  /* =============================================================================
53
- ICON SLOTS
54
- Styling for slotted icons (icon-start and icon-end)
55
- Icons use --icon-size token (24px) and inherit label color from button
53
+ ICON STYLING
56
54
  ============================================================================= */
57
55
 
58
- ::slotted(ds-icon) {
59
- --icon-size: var(--icon-size, 24px);
60
- color: inherit;
56
+ ds-icon {
57
+ --icon-size: var(--icon-size);
61
58
  flex-shrink: 0;
62
59
  }
63
60
 
@@ -3,21 +3,24 @@ export class DsButton {
3
3
  constructor() {
4
4
  /**
5
5
  * Button variant determining visual style.
6
- * @default 'primary-brand'
7
6
  */
8
7
  this.variant = 'primary-brand';
9
8
  /**
10
- * Disables the button interaction and applies disabled styling.
11
- * @default false
9
+ * Disables the button.
12
10
  */
13
11
  this.disabled = false;
12
+ /**
13
+ * Icon position: 'start' or 'end'.
14
+ */
15
+ this.iconPosition = 'start';
14
16
  }
15
17
  render() {
16
- return (h("button", { key: 'b2c29af56fa84e6274900496d1a57bf7be6070e0', class: {
18
+ const iconEl = this.icon ? h("ds-icon", { name: this.icon }) : null;
19
+ return (h("button", { key: '000508b5713956932132412d59f9ba1b9baa96c7', class: {
17
20
  'ds-button': true,
18
21
  [`ds-button--${this.variant}`]: true,
19
22
  'ds-button--disabled': this.disabled,
20
- }, disabled: this.disabled }, h("slot", { key: 'c87fb66dffa329b2911752390d69d808aea83ead', name: "icon-start" }), h("span", { key: '3049998d0fca7eef41dc5bbc51ab14d396855840', class: "ds-button__label" }, h("slot", { key: '540e93a8de6f0be305963e7b05b90dcbacda6f37' })), h("slot", { key: 'f48be5683052a40bb97436f20b219a42fb09319a', name: "icon-end" })));
23
+ }, disabled: this.disabled }, this.iconPosition === 'start' && iconEl, h("span", { key: '1cf189f05c1f2cdb82f54f6f2283eaa9c6e38381', class: "ds-button__label" }, h("slot", { key: '89eadaa81aaa4e458e46b29e02291ad45c027101' })), this.iconPosition === 'end' && iconEl));
21
24
  }
22
25
  static get is() { return "ds-button"; }
23
26
  static get encapsulation() { return "shadow"; }
@@ -50,10 +53,7 @@ export class DsButton {
50
53
  "required": false,
51
54
  "optional": false,
52
55
  "docs": {
53
- "tags": [{
54
- "name": "default",
55
- "text": "'primary-brand'"
56
- }],
56
+ "tags": [],
57
57
  "text": "Button variant determining visual style."
58
58
  },
59
59
  "getter": false,
@@ -73,17 +73,53 @@ export class DsButton {
73
73
  "required": false,
74
74
  "optional": false,
75
75
  "docs": {
76
- "tags": [{
77
- "name": "default",
78
- "text": "false"
79
- }],
80
- "text": "Disables the button interaction and applies disabled styling."
76
+ "tags": [],
77
+ "text": "Disables the button."
81
78
  },
82
79
  "getter": false,
83
80
  "setter": false,
84
81
  "reflect": false,
85
82
  "attribute": "disabled",
86
83
  "defaultValue": "false"
84
+ },
85
+ "icon": {
86
+ "type": "string",
87
+ "mutable": false,
88
+ "complexType": {
89
+ "original": "string",
90
+ "resolved": "string | undefined",
91
+ "references": {}
92
+ },
93
+ "required": false,
94
+ "optional": true,
95
+ "docs": {
96
+ "tags": [],
97
+ "text": "Icon name to display (optional)."
98
+ },
99
+ "getter": false,
100
+ "setter": false,
101
+ "reflect": false,
102
+ "attribute": "icon"
103
+ },
104
+ "iconPosition": {
105
+ "type": "string",
106
+ "mutable": false,
107
+ "complexType": {
108
+ "original": "'start' | 'end'",
109
+ "resolved": "\"end\" | \"start\"",
110
+ "references": {}
111
+ },
112
+ "required": false,
113
+ "optional": false,
114
+ "docs": {
115
+ "tags": [],
116
+ "text": "Icon position: 'start' or 'end'."
117
+ },
118
+ "getter": false,
119
+ "setter": false,
120
+ "reflect": false,
121
+ "attribute": "icon-position",
122
+ "defaultValue": "'start'"
87
123
  }
88
124
  };
89
125
  }
@@ -7,10 +7,10 @@ export class DsCard {
7
7
  this.surface = 'primary';
8
8
  }
9
9
  render() {
10
- return (h("div", { key: '0709463754ee76974475f214840ade290ee7aa83', class: {
10
+ return (h("div", { key: '545dfb7389201a046b465e96723fdc8ad5cd1160', class: {
11
11
  'ds-card': true,
12
12
  [`ds-card--${this.surface}`]: true,
13
- } }, this.cardTitle && (h("div", { key: 'e161468e870e419852e6ef9f92ab9fc24ac60635', class: "ds-card__header" }, h("h3", { key: '8cccde3f7e5ea185ef24d90312439d2e49621504', class: "ds-card__title" }, this.cardTitle))), h("div", { key: '47457839b1fa00f261c1fbfb8842904fb9bf8245', class: "ds-card__content" }, h("slot", { key: '009a1b1e7411daec2c67fd084d654de71875222e' }))));
13
+ } }, this.cardTitle && (h("div", { key: '63523222100e039098a941c2125df63a7bc8a0ee', class: "ds-card__header" }, h("h3", { key: '7e60906b0aeb4d8d20fc09a85d06f4d0bd4a95ae', class: "ds-card__title" }, this.cardTitle))), h("div", { key: '544d6b4e6ac95745261ee73c81f2d01c2806afd3', class: "ds-card__content" }, h("slot", { key: '9102bcc585687daf5d954059a138ad7bac27b640' }))));
14
14
  }
15
15
  static get is() { return "ds-card"; }
16
16
  static get encapsulation() { return "shadow"; }
@@ -1,74 +1,19 @@
1
- /* =============================================================================
2
- DS-ICON Component Styles
3
-
4
- Token-based styling for the icon component.
5
- Icons inherit color from parent by default (currentColor).
6
- ============================================================================= */
7
-
8
1
  :host {
9
2
  display: inline-flex;
10
3
  align-items: center;
11
4
  justify-content: center;
5
+ width: var(--icon-size);
6
+ height: var(--icon-size);
7
+ color: inherit;
12
8
  }
13
9
 
14
- /* =============================================================================
15
- BASE STYLES
16
- ============================================================================= */
17
-
18
10
  .ds-icon {
19
- display: inline-flex;
20
- align-items: center;
21
- justify-content: center;
22
- width: var(--icon-size, 24px);
23
- height: var(--icon-size, 24px);
24
- color: var(--icon-color, currentColor);
25
- flex-shrink: 0;
26
- }
27
-
28
- /* =============================================================================
29
- SVG CONTAINER
30
- ============================================================================= */
31
-
32
- .ds-icon__svg {
33
11
  display: flex;
34
- align-items: center;
35
- justify-content: center;
36
- width: 100%;
37
- height: 100%;
38
- }
39
-
40
- /* Target the SVG element inside the container */
41
- .ds-icon__svg svg {
42
- width: 100%;
43
- height: 100%;
44
- fill: currentColor;
45
- }
46
-
47
- /* =============================================================================
48
- LOADING STATE
49
- ============================================================================= */
50
-
51
- .ds-icon--loading {
52
- opacity: 0.5;
53
- }
54
-
55
- /* =============================================================================
56
- ERROR STATE
57
- ============================================================================= */
58
-
59
- .ds-icon--error {
60
- opacity: 0.3;
61
- }
62
-
63
- .ds-icon__error {
64
- display: flex;
65
- align-items: center;
66
- justify-content: center;
67
12
  width: 100%;
68
13
  height: 100%;
69
14
  }
70
15
 
71
- .ds-icon__error svg {
16
+ .ds-icon svg {
72
17
  width: 100%;
73
18
  height: 100%;
74
19
  fill: currentColor;