@marioschmidt/design-system-components 1.3.1 → 1.3.3
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.
- package/dist/bds/bds.esm.js +1 -1
- package/dist/bds/{p-DUrpTa_b.js → p-B4AUg0uO.js} +2 -2
- package/dist/bds/p-a851ab89.entry.js +1 -0
- package/dist/cjs/bds.cjs.js +2 -2
- package/dist/cjs/ds-button_3.cjs.entry.js +28 -140
- package/dist/cjs/{index-yDPq0GyD.js → index-Bb064vv6.js} +3 -56
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/ds-button/ds-button.css +2 -6
- package/dist/collection/ds-button/ds-button.js +50 -14
- package/dist/collection/ds-card/ds-card.js +2 -2
- package/dist/collection/ds-icon/ds-icon.css +3 -58
- package/dist/collection/ds-icon/ds-icon.js +20 -231
- package/dist/collection/icons.js +205 -0
- package/dist/components/ds-button.d.ts +1 -1
- package/dist/components/ds-button.js +1 -1
- package/dist/components/ds-card.d.ts +1 -1
- package/dist/components/ds-card.js +1 -1
- package/dist/components/ds-icon.d.ts +1 -1
- package/dist/components/ds-icon.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/p-o-zDLqwP.js +1 -0
- package/dist/docs/ds-button/readme.md +19 -4
- package/dist/docs/ds-icon/readme.md +17 -8
- package/dist/esm/bds.js +3 -3
- package/dist/esm/ds-button_3.entry.js +28 -140
- package/dist/esm/{index-DUrpTa_b.js → index-B4AUg0uO.js} +4 -56
- package/dist/esm/loader.js +3 -3
- package/dist/types/components.d.ts +24 -46
- package/dist/types/ds-button/ds-button.d.ts +9 -10
- package/dist/types/ds-icon/ds-icon.d.ts +2 -45
- package/dist/types/icons.d.ts +6 -0
- package/dist/www/build/bds.esm.js +1 -1
- package/dist/www/build/{p-DUrpTa_b.js → p-B4AUg0uO.js} +2 -2
- package/dist/www/build/p-a851ab89.entry.js +1 -0
- package/dist/www/css/advertorial/components/_dsysdocs.css +1 -1
- package/dist/www/css/advertorial/components/article.css +1 -1
- package/dist/www/css/advertorial/components/audioplayer.css +1 -1
- package/dist/www/css/advertorial/components/avatar.css +1 -1
- package/dist/www/css/advertorial/components/badge.css +1 -1
- package/dist/www/css/advertorial/components/breadcrumb.css +1 -1
- package/dist/www/css/advertorial/components/breakingnews.css +1 -1
- package/dist/www/css/advertorial/components/button.css +1 -1
- package/dist/www/css/advertorial/components/card.css +1 -1
- package/dist/www/css/advertorial/components/carousel.css +1 -1
- package/dist/www/css/advertorial/components/chip.css +1 -1
- package/dist/www/css/advertorial/components/datepicker.css +1 -1
- package/dist/www/css/advertorial/components/drawers.css +1 -1
- package/dist/www/css/advertorial/components/dropdown.css +1 -1
- package/dist/www/css/advertorial/components/footer.css +1 -1
- package/dist/www/css/advertorial/components/icon.css +1 -1
- package/dist/www/css/advertorial/components/iconbutton.css +1 -1
- package/dist/www/css/advertorial/components/infoelement.css +1 -1
- package/dist/www/css/advertorial/components/inputfield.css +1 -1
- package/dist/www/css/advertorial/components/liveticker.css +1 -1
- package/dist/www/css/advertorial/components/mediaplayer.css +1 -1
- package/dist/www/css/advertorial/components/menu.css +1 -1
- package/dist/www/css/advertorial/components/newsticker.css +1 -1
- package/dist/www/css/advertorial/components/pagination.css +1 -1
- package/dist/www/css/advertorial/components/paywall.css +1 -1
- package/dist/www/css/advertorial/components/quote.css +1 -1
- package/dist/www/css/advertorial/components/radiobutton.css +1 -1
- package/dist/www/css/advertorial/components/search.css +1 -1
- package/dist/www/css/advertorial/components/sectiontitle.css +1 -1
- package/dist/www/css/advertorial/components/separator.css +1 -1
- package/dist/www/css/advertorial/components/skeletons.css +1 -1
- package/dist/www/css/advertorial/components/slider.css +1 -1
- package/dist/www/css/advertorial/components/specialnavi.css +1 -1
- package/dist/www/css/advertorial/components/spinner.css +1 -1
- package/dist/www/css/advertorial/components/tab.css +1 -1
- package/dist/www/css/advertorial/components/table.css +1 -1
- package/dist/www/css/advertorial/components/teaser.css +1 -1
- package/dist/www/css/advertorial/components/toggleswitch.css +1 -1
- package/dist/www/css/advertorial/components/video.css +1 -1
- package/dist/www/css/advertorial/theme.css +1 -1
- package/dist/www/css/advertorial/tokens.css +1 -1
- package/dist/www/css/bild/components/_dsysdoc.css +1 -1
- package/dist/www/css/bild/components/_dsysdocs.css +1 -1
- package/dist/www/css/bild/components/alert.css +1 -1
- package/dist/www/css/bild/components/article.css +1 -1
- package/dist/www/css/bild/components/audioplayer.css +1 -1
- package/dist/www/css/bild/components/avatar.css +1 -1
- package/dist/www/css/bild/components/badge.css +1 -1
- package/dist/www/css/bild/components/breadcrumb.css +1 -1
- package/dist/www/css/bild/components/breakingnews.css +1 -1
- package/dist/www/css/bild/components/button.css +1 -1
- package/dist/www/css/bild/components/card.css +1 -1
- package/dist/www/css/bild/components/carousel.css +1 -1
- package/dist/www/css/bild/components/chip.css +1 -1
- package/dist/www/css/bild/components/datepicker.css +1 -1
- package/dist/www/css/bild/components/drawers.css +1 -1
- package/dist/www/css/bild/components/dropdown.css +1 -1
- package/dist/www/css/bild/components/empties.css +1 -1
- package/dist/www/css/bild/components/footer.css +1 -1
- package/dist/www/css/bild/components/gallery.css +1 -1
- package/dist/www/css/bild/components/icon.css +1 -1
- package/dist/www/css/bild/components/iconbutton.css +1 -1
- package/dist/www/css/bild/components/infoelement.css +1 -1
- package/dist/www/css/bild/components/inputfield.css +1 -1
- package/dist/www/css/bild/components/kicker.css +1 -1
- package/dist/www/css/bild/components/liveticker.css +1 -1
- package/dist/www/css/bild/components/mediaplayer.css +1 -1
- package/dist/www/css/bild/components/menu.css +1 -1
- package/dist/www/css/bild/components/menuitem.css +1 -1
- package/dist/www/css/bild/components/newsticker.css +1 -1
- package/dist/www/css/bild/components/pagination.css +1 -1
- package/dist/www/css/bild/components/partnerlinks.css +1 -1
- package/dist/www/css/bild/components/paywall.css +1 -1
- package/dist/www/css/bild/components/quote.css +1 -1
- package/dist/www/css/bild/components/radiobutton.css +1 -1
- package/dist/www/css/bild/components/search.css +1 -1
- package/dist/www/css/bild/components/sectiontitle.css +1 -1
- package/dist/www/css/bild/components/selection.css +1 -1
- package/dist/www/css/bild/components/separator.css +1 -1
- package/dist/www/css/bild/components/skeletons.css +1 -1
- package/dist/www/css/bild/components/slider.css +1 -1
- package/dist/www/css/bild/components/specialnavi.css +1 -1
- package/dist/www/css/bild/components/spinner.css +1 -1
- package/dist/www/css/bild/components/subheader.css +1 -1
- package/dist/www/css/bild/components/tab.css +1 -1
- package/dist/www/css/bild/components/table.css +1 -1
- package/dist/www/css/bild/components/teaser.css +1 -1
- package/dist/www/css/bild/components/toggleswitch.css +1 -1
- package/dist/www/css/bild/components/video.css +1 -1
- package/dist/www/css/bild/theme.css +1 -1
- package/dist/www/css/bild/tokens.css +1 -1
- package/dist/www/css/bundles/advertorial.css +1 -1
- package/dist/www/css/bundles/bild.css +1 -1
- package/dist/www/css/bundles/sportbild.css +1 -1
- package/dist/www/css/shared/colorprimitive.css +1 -1
- package/dist/www/css/shared/fontprimitive.css +1 -1
- package/dist/www/css/shared/primitives.css +1 -1
- package/dist/www/css/shared/sizeprimitive.css +1 -1
- package/dist/www/css/shared/spaceprimitive.css +1 -1
- package/dist/www/css/sportbild/components/_dsysdoc.css +1 -1
- package/dist/www/css/sportbild/components/_dsysdocs.css +1 -1
- package/dist/www/css/sportbild/components/alert.css +1 -1
- package/dist/www/css/sportbild/components/article.css +1 -1
- package/dist/www/css/sportbild/components/audioplayer.css +1 -1
- package/dist/www/css/sportbild/components/avatar.css +1 -1
- package/dist/www/css/sportbild/components/badge.css +1 -1
- package/dist/www/css/sportbild/components/breadcrumb.css +1 -1
- package/dist/www/css/sportbild/components/breakingnews.css +1 -1
- package/dist/www/css/sportbild/components/button.css +1 -1
- package/dist/www/css/sportbild/components/card.css +1 -1
- package/dist/www/css/sportbild/components/carousel.css +1 -1
- package/dist/www/css/sportbild/components/chip.css +1 -1
- package/dist/www/css/sportbild/components/datepicker.css +1 -1
- package/dist/www/css/sportbild/components/drawers.css +1 -1
- package/dist/www/css/sportbild/components/dropdown.css +1 -1
- package/dist/www/css/sportbild/components/empties.css +1 -1
- package/dist/www/css/sportbild/components/footer.css +1 -1
- package/dist/www/css/sportbild/components/gallery.css +1 -1
- package/dist/www/css/sportbild/components/icon.css +1 -1
- package/dist/www/css/sportbild/components/iconbutton.css +1 -1
- package/dist/www/css/sportbild/components/infoelement.css +1 -1
- package/dist/www/css/sportbild/components/inputfield.css +1 -1
- package/dist/www/css/sportbild/components/kicker.css +1 -1
- package/dist/www/css/sportbild/components/liveticker.css +1 -1
- package/dist/www/css/sportbild/components/mediaplayer.css +1 -1
- package/dist/www/css/sportbild/components/menu.css +1 -1
- package/dist/www/css/sportbild/components/menuitem.css +1 -1
- package/dist/www/css/sportbild/components/newsticker.css +1 -1
- package/dist/www/css/sportbild/components/pagination.css +1 -1
- package/dist/www/css/sportbild/components/partnerlinks.css +1 -1
- package/dist/www/css/sportbild/components/paywall.css +1 -1
- package/dist/www/css/sportbild/components/quote.css +1 -1
- package/dist/www/css/sportbild/components/radiobutton.css +1 -1
- package/dist/www/css/sportbild/components/search.css +1 -1
- package/dist/www/css/sportbild/components/sectiontitle.css +1 -1
- package/dist/www/css/sportbild/components/selection.css +1 -1
- package/dist/www/css/sportbild/components/separator.css +1 -1
- package/dist/www/css/sportbild/components/skeletons.css +1 -1
- package/dist/www/css/sportbild/components/slider.css +1 -1
- package/dist/www/css/sportbild/components/specialnavi.css +1 -1
- package/dist/www/css/sportbild/components/spinner.css +1 -1
- package/dist/www/css/sportbild/components/subheader.css +1 -1
- package/dist/www/css/sportbild/components/tab.css +1 -1
- package/dist/www/css/sportbild/components/table.css +1 -1
- package/dist/www/css/sportbild/components/teaser.css +1 -1
- package/dist/www/css/sportbild/components/toggleswitch.css +1 -1
- package/dist/www/css/sportbild/components/video.css +1 -1
- package/dist/www/css/sportbild/theme.css +1 -1
- package/dist/www/css/sportbild/tokens.css +1 -1
- package/dist/www/icons/manifest.json +2 -2
- package/dist/www/index.html +2 -2
- package/package.json +1 -1
- package/dist/bds/p-f4e1fe1f.entry.js +0 -1
- package/dist/www/build/p-f4e1fe1f.entry.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t,p as e,H as s,h as n}from"./index.js";const i=new Map,a=e(class extends s{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.basePath="/icons",this.svgContent=""}connectedCallback(){this.loadIcon()}onNameChange(){this.loadIcon()}async loadIcon(){if(!this.name)return;const t=`${this.basePath}/${this.name}.svg`;if(i.has(t))this.svgContent=i.get(t);else try{const e=await fetch(t);if(e.ok){const s=await e.text();i.set(t,s),this.svgContent=s}}catch{}}render(){return n("span",{key:"f3549bfd71c52f0bf0b23c346fa5a665119c4033",class:"ds-icon",innerHTML:this.svgContent})}static get watchers(){return{name:[{onNameChange:0}]}}static get style(){return":host{display:inline-flex;align-items:center;justify-content:center;width:var(--icon-size, 24px);height:var(--icon-size, 24px);color:inherit}.ds-icon{display:flex;width:100%;height:100%}.ds-icon svg{width:100%;height:100%;fill:currentColor}"}},[1,"ds-icon",{name:[1],basePath:[1,"base-path"],svgContent:[32]},void 0,{name:[{onNameChange:0}]}]);function c(){"undefined"!=typeof customElements&&["ds-icon"].forEach((e=>{"ds-icon"===e&&(customElements.get(t(e))||customElements.define(t(e),a))}))}c();export{a as D,c as d}
|
|
@@ -4,12 +4,27 @@
|
|
|
4
4
|
|
|
5
5
|
## Properties
|
|
6
6
|
|
|
7
|
-
| Property
|
|
8
|
-
|
|
|
9
|
-
| `disabled`
|
|
10
|
-
| `
|
|
7
|
+
| Property | Attribute | Description | Type | Default |
|
|
8
|
+
| -------------- | --------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
|
|
9
|
+
| `disabled` | `disabled` | Disables the button. | `boolean` | `false` |
|
|
10
|
+
| `icon` | `icon` | Icon name to display (optional). | `string \| undefined` | `undefined` |
|
|
11
|
+
| `iconPosition` | `icon-position` | Icon position: 'start' or 'end'. | `"end" \| "start"` | `'start'` |
|
|
12
|
+
| `variant` | `variant` | Button variant determining visual style. | `"ghost" \| "primary-brand" \| "primary-neutral" \| "primary-success" \| "secondary" \| "tertiary-neutral" \| "tertiary-success"` | `'primary-brand'` |
|
|
11
13
|
|
|
12
14
|
|
|
15
|
+
## Dependencies
|
|
16
|
+
|
|
17
|
+
### Depends on
|
|
18
|
+
|
|
19
|
+
- [ds-icon](../ds-icon)
|
|
20
|
+
|
|
21
|
+
### Graph
|
|
22
|
+
```mermaid
|
|
23
|
+
graph TD;
|
|
24
|
+
ds-button --> ds-icon
|
|
25
|
+
style ds-button fill:#f9f,stroke:#333,stroke-width:4px
|
|
26
|
+
```
|
|
27
|
+
|
|
13
28
|
----------------------------------------------
|
|
14
29
|
|
|
15
30
|
*Built with [StencilJS](https://stenciljs.com/)*
|
|
@@ -4,16 +4,25 @@
|
|
|
4
4
|
|
|
5
5
|
## Properties
|
|
6
6
|
|
|
7
|
-
| Property | Attribute | Description
|
|
8
|
-
| ------------------- | ----------- |
|
|
9
|
-
| `basePath` | `base-path` | Base path for
|
|
10
|
-
| `
|
|
11
|
-
| `label` | `label` | Accessible label for screen readers. If provided, icon is treated as semantic (not decorative). | `string \| undefined` | `undefined` |
|
|
12
|
-
| `lazy` | `lazy` | Enable lazy loading with IntersectionObserver. Icon will only load when visible in viewport. | `boolean` | `false` |
|
|
13
|
-
| `name` _(required)_ | `name` | Name of the icon to display (without .svg extension). Must match a file in the icons directory. | `string` | `undefined` |
|
|
14
|
-
| `size` | `size` | Size of the icon in pixels. | `number` | `24` |
|
|
7
|
+
| Property | Attribute | Description | Type | Default |
|
|
8
|
+
| ------------------- | ----------- | ------------------------------------------ | -------- | ----------- |
|
|
9
|
+
| `basePath` | `base-path` | Base path for icon SVG files. | `string` | `'/icons'` |
|
|
10
|
+
| `name` _(required)_ | `name` | Name of the icon (without .svg extension). | `string` | `undefined` |
|
|
15
11
|
|
|
16
12
|
|
|
13
|
+
## Dependencies
|
|
14
|
+
|
|
15
|
+
### Used by
|
|
16
|
+
|
|
17
|
+
- [ds-button](../ds-button)
|
|
18
|
+
|
|
19
|
+
### Graph
|
|
20
|
+
```mermaid
|
|
21
|
+
graph TD;
|
|
22
|
+
ds-button --> ds-icon
|
|
23
|
+
style ds-icon fill:#f9f,stroke:#333,stroke-width:4px
|
|
24
|
+
```
|
|
25
|
+
|
|
17
26
|
----------------------------------------------
|
|
18
27
|
|
|
19
28
|
*Built with [StencilJS](https://stenciljs.com/)*
|
package/dist/esm/bds.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { p as promiseResolve, g as globalScripts, b as bootstrapLazy } from './index-
|
|
2
|
-
export { s as setNonce } from './index-
|
|
1
|
+
import { p as promiseResolve, g as globalScripts, b as bootstrapLazy } from './index-B4AUg0uO.js';
|
|
2
|
+
export { s as setNonce } from './index-B4AUg0uO.js';
|
|
3
3
|
|
|
4
4
|
/*
|
|
5
5
|
Stencil Client Patch Browser v4.41.0 | MIT Licensed | https://stenciljs.com
|
|
@@ -16,5 +16,5 @@ var patchBrowser = () => {
|
|
|
16
16
|
|
|
17
17
|
patchBrowser().then(async (options) => {
|
|
18
18
|
await globalScripts();
|
|
19
|
-
return bootstrapLazy([["ds-button_3",[[257,"ds-button",{"variant":[1],"disabled":[4]}],[257,"ds-card",{"surface":[1],"cardTitle":[1,"card-title"]}],[1,"ds-icon",{"name":[1],"
|
|
19
|
+
return bootstrapLazy([["ds-button_3",[[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);
|
|
20
20
|
});
|
|
@@ -1,27 +1,30 @@
|
|
|
1
|
-
import { r as registerInstance, h
|
|
1
|
+
import { r as registerInstance, h } from './index-B4AUg0uO.js';
|
|
2
2
|
|
|
3
|
-
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}
|
|
3
|
+
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{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}`;
|
|
4
4
|
|
|
5
5
|
const DsButton = class {
|
|
6
6
|
constructor(hostRef) {
|
|
7
7
|
registerInstance(this, hostRef);
|
|
8
8
|
/**
|
|
9
9
|
* Button variant determining visual style.
|
|
10
|
-
* @default 'primary-brand'
|
|
11
10
|
*/
|
|
12
11
|
this.variant = 'primary-brand';
|
|
13
12
|
/**
|
|
14
|
-
* Disables the button
|
|
15
|
-
* @default false
|
|
13
|
+
* Disables the button.
|
|
16
14
|
*/
|
|
17
15
|
this.disabled = false;
|
|
16
|
+
/**
|
|
17
|
+
* Icon position: 'start' or 'end'.
|
|
18
|
+
*/
|
|
19
|
+
this.iconPosition = 'start';
|
|
18
20
|
}
|
|
19
21
|
render() {
|
|
20
|
-
|
|
22
|
+
const iconEl = this.icon ? h("ds-icon", { name: this.icon }) : null;
|
|
23
|
+
return (h("button", { key: '000508b5713956932132412d59f9ba1b9baa96c7', class: {
|
|
21
24
|
'ds-button': true,
|
|
22
25
|
[`ds-button--${this.variant}`]: true,
|
|
23
26
|
'ds-button--disabled': this.disabled,
|
|
24
|
-
}, disabled: this.disabled },
|
|
27
|
+
}, disabled: this.disabled }, this.iconPosition === 'start' && iconEl, h("span", { key: '1cf189f05c1f2cdb82f54f6f2283eaa9c6e38381', class: "ds-button__label" }, h("slot", { key: '89eadaa81aaa4e458e46b29e02291ad45c027101' })), this.iconPosition === 'end' && iconEl));
|
|
25
28
|
}
|
|
26
29
|
};
|
|
27
30
|
DsButton.style = dsButtonCss();
|
|
@@ -37,173 +40,58 @@ const DsCard = class {
|
|
|
37
40
|
this.surface = 'primary';
|
|
38
41
|
}
|
|
39
42
|
render() {
|
|
40
|
-
return (h("div", { key: '
|
|
43
|
+
return (h("div", { key: '545dfb7389201a046b465e96723fdc8ad5cd1160', class: {
|
|
41
44
|
'ds-card': true,
|
|
42
45
|
[`ds-card--${this.surface}`]: true,
|
|
43
|
-
} }, this.cardTitle && (h("div", { key: '
|
|
46
|
+
} }, 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' }))));
|
|
44
47
|
}
|
|
45
48
|
};
|
|
46
49
|
DsCard.style = dsCardCss();
|
|
47
50
|
|
|
48
|
-
const dsIconCss = () => `:host{display:inline-flex;align-items:center;justify-content:center
|
|
51
|
+
const dsIconCss = () => `:host{display:inline-flex;align-items:center;justify-content:center;width:var(--icon-size, 24px);height:var(--icon-size, 24px);color:inherit}.ds-icon{display:flex;width:100%;height:100%}.ds-icon svg{width:100%;height:100%;fill:currentColor}`;
|
|
49
52
|
|
|
50
|
-
/**
|
|
51
|
-
* Icon cache shared between all ds-icon instances.
|
|
52
|
-
* Prevents duplicate fetch requests for the same icon.
|
|
53
|
-
*/
|
|
54
53
|
const iconCache = new Map();
|
|
55
|
-
const pendingRequests = new Map();
|
|
56
54
|
const DsIcon = class {
|
|
57
55
|
constructor(hostRef) {
|
|
58
56
|
registerInstance(this, hostRef);
|
|
59
57
|
/**
|
|
60
|
-
*
|
|
61
|
-
* @default 24
|
|
62
|
-
*/
|
|
63
|
-
this.size = 24;
|
|
64
|
-
/**
|
|
65
|
-
* Color of the icon. Accepts any valid CSS color value.
|
|
66
|
-
* Icons use currentColor by default, inheriting from parent.
|
|
67
|
-
* @default 'currentColor'
|
|
68
|
-
*/
|
|
69
|
-
this.color = 'currentColor';
|
|
70
|
-
/**
|
|
71
|
-
* Base path for loading icon SVG files.
|
|
72
|
-
* @default '/icons'
|
|
58
|
+
* Base path for icon SVG files.
|
|
73
59
|
*/
|
|
74
60
|
this.basePath = '/icons';
|
|
75
|
-
/**
|
|
76
|
-
* Enable lazy loading with IntersectionObserver.
|
|
77
|
-
* Icon will only load when visible in viewport.
|
|
78
|
-
* @default false
|
|
79
|
-
*/
|
|
80
|
-
this.lazy = false;
|
|
81
|
-
/**
|
|
82
|
-
* Internal state for the loaded SVG content.
|
|
83
|
-
*/
|
|
84
61
|
this.svgContent = '';
|
|
85
|
-
/**
|
|
86
|
-
* Internal state for loading status.
|
|
87
|
-
*/
|
|
88
|
-
this.isLoading = false;
|
|
89
|
-
/**
|
|
90
|
-
* Internal state for error status.
|
|
91
|
-
*/
|
|
92
|
-
this.hasError = false;
|
|
93
|
-
this.isVisible = false;
|
|
94
62
|
}
|
|
95
63
|
connectedCallback() {
|
|
96
|
-
|
|
97
|
-
this.setupIntersectionObserver();
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
this.loadIcon();
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
disconnectedCallback() {
|
|
104
|
-
this.observer?.disconnect();
|
|
64
|
+
this.loadIcon();
|
|
105
65
|
}
|
|
106
66
|
onNameChange() {
|
|
107
|
-
|
|
108
|
-
this.loadIcon();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
onBasePathChange() {
|
|
112
|
-
if (!this.lazy || this.isVisible) {
|
|
113
|
-
this.loadIcon();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
setupIntersectionObserver() {
|
|
117
|
-
if (typeof IntersectionObserver === 'undefined') {
|
|
118
|
-
// Fallback for browsers without IntersectionObserver
|
|
119
|
-
this.loadIcon();
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
this.observer = new IntersectionObserver((entries) => {
|
|
123
|
-
entries.forEach((entry) => {
|
|
124
|
-
if (entry.isIntersecting) {
|
|
125
|
-
this.isVisible = true;
|
|
126
|
-
this.loadIcon();
|
|
127
|
-
this.observer?.disconnect();
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
}, {
|
|
131
|
-
rootMargin: '50px', // Load slightly before entering viewport
|
|
132
|
-
});
|
|
133
|
-
this.observer.observe(this.el);
|
|
67
|
+
this.loadIcon();
|
|
134
68
|
}
|
|
135
69
|
async loadIcon() {
|
|
136
|
-
if (!this.name)
|
|
137
|
-
this.hasError = true;
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
const iconUrl = `${this.basePath}/${this.name}.svg`;
|
|
141
|
-
// Check cache first
|
|
142
|
-
if (iconCache.has(iconUrl)) {
|
|
143
|
-
this.svgContent = iconCache.get(iconUrl);
|
|
144
|
-
this.hasError = false;
|
|
70
|
+
if (!this.name)
|
|
145
71
|
return;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
try {
|
|
150
|
-
this.svgContent = await pendingRequests.get(iconUrl);
|
|
151
|
-
this.hasError = false;
|
|
152
|
-
}
|
|
153
|
-
catch {
|
|
154
|
-
this.hasError = true;
|
|
155
|
-
}
|
|
72
|
+
const url = `${this.basePath}/${this.name}.svg`;
|
|
73
|
+
if (iconCache.has(url)) {
|
|
74
|
+
this.svgContent = iconCache.get(url);
|
|
156
75
|
return;
|
|
157
76
|
}
|
|
158
|
-
this.isLoading = true;
|
|
159
|
-
this.hasError = false;
|
|
160
|
-
// Create fetch promise and store it
|
|
161
|
-
const fetchPromise = this.fetchIcon(iconUrl);
|
|
162
|
-
pendingRequests.set(iconUrl, fetchPromise);
|
|
163
77
|
try {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
78
|
+
const response = await fetch(url);
|
|
79
|
+
if (response.ok) {
|
|
80
|
+
const svg = await response.text();
|
|
81
|
+
iconCache.set(url, svg);
|
|
82
|
+
this.svgContent = svg;
|
|
83
|
+
}
|
|
167
84
|
}
|
|
168
85
|
catch {
|
|
169
|
-
|
|
170
|
-
this.svgContent = '';
|
|
171
|
-
}
|
|
172
|
-
finally {
|
|
173
|
-
this.isLoading = false;
|
|
174
|
-
pendingRequests.delete(iconUrl);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
async fetchIcon(url) {
|
|
178
|
-
const response = await fetch(url);
|
|
179
|
-
if (!response.ok) {
|
|
180
|
-
throw new Error(`Failed to load icon: ${url}`);
|
|
181
|
-
}
|
|
182
|
-
const svgText = await response.text();
|
|
183
|
-
// Basic security check - ensure it's valid SVG
|
|
184
|
-
if (!svgText.includes('<svg')) {
|
|
185
|
-
throw new Error(`Invalid SVG content: ${url}`);
|
|
86
|
+
// Silent fail
|
|
186
87
|
}
|
|
187
|
-
return svgText;
|
|
188
88
|
}
|
|
189
89
|
render() {
|
|
190
|
-
|
|
191
|
-
return (h("span", { key: 'f3c397e6532cf9022416cf53458dd6d0b128a3ed', class: {
|
|
192
|
-
'ds-icon': true,
|
|
193
|
-
'ds-icon--loading': this.isLoading,
|
|
194
|
-
'ds-icon--error': this.hasError,
|
|
195
|
-
}, style: {
|
|
196
|
-
'--icon-size': `${this.size}px`,
|
|
197
|
-
'--icon-color': this.color,
|
|
198
|
-
}, role: isDecorative ? 'presentation' : 'img', "aria-hidden": isDecorative ? 'true' : undefined, "aria-label": this.label }, this.svgContent ? (h("span", { class: "ds-icon__svg", innerHTML: this.svgContent })) : this.hasError ? (h("span", { class: "ds-icon__error", title: `Icon "${this.name}" not found` }, h("svg", { viewBox: "0 0 24 24", fill: "currentColor" }, 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));
|
|
90
|
+
return (h("span", { key: 'f3549bfd71c52f0bf0b23c346fa5a665119c4033', class: "ds-icon", innerHTML: this.svgContent }));
|
|
199
91
|
}
|
|
200
|
-
get el() { return getElement(this); }
|
|
201
92
|
static get watchers() { return {
|
|
202
93
|
"name": [{
|
|
203
94
|
"onNameChange": 0
|
|
204
|
-
}],
|
|
205
|
-
"basePath": [{
|
|
206
|
-
"onBasePathChange": 0
|
|
207
95
|
}]
|
|
208
96
|
}; }
|
|
209
97
|
};
|
|
@@ -253,10 +253,6 @@ var require_brace_expansion = __commonJS({
|
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
255
|
});
|
|
256
|
-
|
|
257
|
-
// src/utils/constants.ts
|
|
258
|
-
var SVG_NS = "http://www.w3.org/2000/svg";
|
|
259
|
-
var HTML_NS = "http://www.w3.org/1999/xhtml";
|
|
260
256
|
var reWireGetterSetter = (instance, hostRef) => {
|
|
261
257
|
var _a;
|
|
262
258
|
const cmpMeta = hostRef.$cmpMeta$;
|
|
@@ -2124,9 +2120,6 @@ var parsePropertyValue = (propValue, propType, isFormAssociated) => {
|
|
|
2124
2120
|
return propValue === "false" ? false : propValue === "" || !!propValue;
|
|
2125
2121
|
}
|
|
2126
2122
|
}
|
|
2127
|
-
if (propType & 2 /* Number */) {
|
|
2128
|
-
return typeof propValue === "string" ? parseFloat(propValue) : typeof propValue === "number" ? propValue : NaN;
|
|
2129
|
-
}
|
|
2130
2123
|
if (propType & 1 /* String */) {
|
|
2131
2124
|
return String(propValue);
|
|
2132
2125
|
}
|
|
@@ -2134,10 +2127,6 @@ var parsePropertyValue = (propValue, propType, isFormAssociated) => {
|
|
|
2134
2127
|
}
|
|
2135
2128
|
return propValue;
|
|
2136
2129
|
};
|
|
2137
|
-
var getElement = (ref) => {
|
|
2138
|
-
var _a;
|
|
2139
|
-
return (_a = getHostRef(ref)) == null ? void 0 : _a.$hostElement$ ;
|
|
2140
|
-
};
|
|
2141
2130
|
var emitEvent = (elm, name, opts) => {
|
|
2142
2131
|
const ev = plt.ce(name, opts);
|
|
2143
2132
|
elm.dispatchEvent(ev);
|
|
@@ -2157,30 +2146,9 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
|
|
|
2157
2146
|
classList.remove(...oldClasses.filter((c) => c && !newClasses.includes(c)));
|
|
2158
2147
|
classList.add(...newClasses.filter((c) => c && !oldClasses.includes(c)));
|
|
2159
2148
|
}
|
|
2160
|
-
} else if (memberName === "style") {
|
|
2161
|
-
{
|
|
2162
|
-
for (const prop in oldValue) {
|
|
2163
|
-
if (!newValue || newValue[prop] == null) {
|
|
2164
|
-
if (prop.includes("-")) {
|
|
2165
|
-
elm.style.removeProperty(prop);
|
|
2166
|
-
} else {
|
|
2167
|
-
elm.style[prop] = "";
|
|
2168
|
-
}
|
|
2169
|
-
}
|
|
2170
|
-
}
|
|
2171
|
-
}
|
|
2172
|
-
for (const prop in newValue) {
|
|
2173
|
-
if (!oldValue || newValue[prop] !== oldValue[prop]) {
|
|
2174
|
-
if (prop.includes("-")) {
|
|
2175
|
-
elm.style.setProperty(prop, newValue[prop]);
|
|
2176
|
-
} else {
|
|
2177
|
-
elm.style[prop] = newValue[prop];
|
|
2178
|
-
}
|
|
2179
|
-
}
|
|
2180
|
-
}
|
|
2181
2149
|
} else if (memberName === "key") ; else {
|
|
2182
2150
|
const isComplex = isComplexType(newValue);
|
|
2183
|
-
if ((isProp || isComplex && newValue !== null) &&
|
|
2151
|
+
if ((isProp || isComplex && newValue !== null) && true) {
|
|
2184
2152
|
try {
|
|
2185
2153
|
if (!elm.tagName.includes("-")) {
|
|
2186
2154
|
const n = newValue == null ? "" : newValue;
|
|
@@ -2272,21 +2240,14 @@ var createElm = (oldParentVNode, newParentVNode, childIndex) => {
|
|
|
2272
2240
|
if (newVNode2.$text$ !== null) {
|
|
2273
2241
|
elm = newVNode2.$elm$ = win.document.createTextNode(newVNode2.$text$);
|
|
2274
2242
|
} else {
|
|
2275
|
-
if (!isSvgMode) {
|
|
2276
|
-
isSvgMode = newVNode2.$tag$ === "svg";
|
|
2277
|
-
}
|
|
2278
2243
|
if (!win.document) {
|
|
2279
2244
|
throw new Error(
|
|
2280
2245
|
"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."
|
|
2281
2246
|
);
|
|
2282
2247
|
}
|
|
2283
|
-
elm = newVNode2.$elm$ = win.document.
|
|
2284
|
-
isSvgMode ? SVG_NS : HTML_NS,
|
|
2248
|
+
elm = newVNode2.$elm$ = win.document.createElement(
|
|
2285
2249
|
newVNode2.$tag$
|
|
2286
|
-
)
|
|
2287
|
-
if (isSvgMode && newVNode2.$tag$ === "foreignObject") {
|
|
2288
|
-
isSvgMode = false;
|
|
2289
|
-
}
|
|
2250
|
+
);
|
|
2290
2251
|
{
|
|
2291
2252
|
updateElement(null, newVNode2, isSvgMode);
|
|
2292
2253
|
}
|
|
@@ -2299,13 +2260,6 @@ var createElm = (oldParentVNode, newParentVNode, childIndex) => {
|
|
|
2299
2260
|
}
|
|
2300
2261
|
}
|
|
2301
2262
|
}
|
|
2302
|
-
{
|
|
2303
|
-
if (newVNode2.$tag$ === "svg") {
|
|
2304
|
-
isSvgMode = false;
|
|
2305
|
-
} else if (elm.tagName === "foreignObject") {
|
|
2306
|
-
isSvgMode = true;
|
|
2307
|
-
}
|
|
2308
|
-
}
|
|
2309
2263
|
}
|
|
2310
2264
|
elm["s-hn"] = hostTagName;
|
|
2311
2265
|
return elm;
|
|
@@ -2463,9 +2417,6 @@ var patch = (oldVNode, newVNode2, isInitialRender = false) => {
|
|
|
2463
2417
|
const tag = newVNode2.$tag$;
|
|
2464
2418
|
const text = newVNode2.$text$;
|
|
2465
2419
|
if (text === null) {
|
|
2466
|
-
{
|
|
2467
|
-
isSvgMode = tag === "svg" ? true : tag === "foreignObject" ? false : isSvgMode;
|
|
2468
|
-
}
|
|
2469
2420
|
{
|
|
2470
2421
|
if (tag === "slot" && !useNativeShadowDom) {
|
|
2471
2422
|
if (oldVNode.$name$ !== newVNode2.$name$) {
|
|
@@ -2488,9 +2439,6 @@ var patch = (oldVNode, newVNode2, isInitialRender = false) => {
|
|
|
2488
2439
|
) {
|
|
2489
2440
|
removeVnodes(oldChildren, 0, oldChildren.length - 1);
|
|
2490
2441
|
} else ;
|
|
2491
|
-
if (isSvgMode && tag === "svg") {
|
|
2492
|
-
isSvgMode = false;
|
|
2493
|
-
}
|
|
2494
2442
|
} else if (oldVNode.$text$ !== text) {
|
|
2495
2443
|
elm.data = text;
|
|
2496
2444
|
}
|
|
@@ -3184,4 +3132,4 @@ function transformTag(tag) {
|
|
|
3184
3132
|
return tag;
|
|
3185
3133
|
}
|
|
3186
3134
|
|
|
3187
|
-
export {
|
|
3135
|
+
export { bootstrapLazy as b, globalScripts as g, h, promiseResolve as p, registerInstance as r, setNonce as s };
|
package/dist/esm/loader.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { g as globalScripts, b as bootstrapLazy } from './index-
|
|
2
|
-
export { s as setNonce } from './index-
|
|
1
|
+
import { g as globalScripts, b as bootstrapLazy } from './index-B4AUg0uO.js';
|
|
2
|
+
export { s as setNonce } from './index-B4AUg0uO.js';
|
|
3
3
|
|
|
4
4
|
const defineCustomElements = async (win, options) => {
|
|
5
5
|
if (typeof window === 'undefined') return undefined;
|
|
6
6
|
await globalScripts();
|
|
7
|
-
return bootstrapLazy([["ds-button_3",[[257,"ds-button",{"variant":[1],"disabled":[4]}],[257,"ds-card",{"surface":[1],"cardTitle":[1,"card-title"]}],[1,"ds-icon",{"name":[1],"
|
|
7
|
+
return bootstrapLazy([["ds-button_3",[[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);
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
export { defineCustomElements };
|
|
@@ -10,10 +10,19 @@ export { ButtonVariant } from "./ds-button/ds-button";
|
|
|
10
10
|
export namespace Components {
|
|
11
11
|
interface DsButton {
|
|
12
12
|
/**
|
|
13
|
-
* Disables the button
|
|
13
|
+
* Disables the button.
|
|
14
14
|
* @default false
|
|
15
15
|
*/
|
|
16
16
|
"disabled": boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Icon name to display (optional).
|
|
19
|
+
*/
|
|
20
|
+
"icon"?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Icon position: 'start' or 'end'.
|
|
23
|
+
* @default 'start'
|
|
24
|
+
*/
|
|
25
|
+
"iconPosition": 'start' | 'end';
|
|
17
26
|
/**
|
|
18
27
|
* Button variant determining visual style.
|
|
19
28
|
* @default 'primary-brand'
|
|
@@ -33,34 +42,14 @@ export namespace Components {
|
|
|
33
42
|
}
|
|
34
43
|
interface DsIcon {
|
|
35
44
|
/**
|
|
36
|
-
* Base path for
|
|
45
|
+
* Base path for icon SVG files.
|
|
37
46
|
* @default '/icons'
|
|
38
47
|
*/
|
|
39
48
|
"basePath": string;
|
|
40
49
|
/**
|
|
41
|
-
*
|
|
42
|
-
* @default 'currentColor'
|
|
43
|
-
*/
|
|
44
|
-
"color": string;
|
|
45
|
-
/**
|
|
46
|
-
* Accessible label for screen readers. If provided, icon is treated as semantic (not decorative).
|
|
47
|
-
*/
|
|
48
|
-
"label"?: string;
|
|
49
|
-
/**
|
|
50
|
-
* Enable lazy loading with IntersectionObserver. Icon will only load when visible in viewport.
|
|
51
|
-
* @default false
|
|
52
|
-
*/
|
|
53
|
-
"lazy": boolean;
|
|
54
|
-
/**
|
|
55
|
-
* Name of the icon to display (without .svg extension). Must match a file in the icons directory.
|
|
56
|
-
* @example "add", "arrow-left", "close"
|
|
50
|
+
* Name of the icon (without .svg extension).
|
|
57
51
|
*/
|
|
58
52
|
"name": string;
|
|
59
|
-
/**
|
|
60
|
-
* Size of the icon in pixels.
|
|
61
|
-
* @default 24
|
|
62
|
-
*/
|
|
63
|
-
"size": number;
|
|
64
53
|
}
|
|
65
54
|
}
|
|
66
55
|
declare global {
|
|
@@ -91,10 +80,19 @@ declare global {
|
|
|
91
80
|
declare namespace LocalJSX {
|
|
92
81
|
interface DsButton {
|
|
93
82
|
/**
|
|
94
|
-
* Disables the button
|
|
83
|
+
* Disables the button.
|
|
95
84
|
* @default false
|
|
96
85
|
*/
|
|
97
86
|
"disabled"?: boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Icon name to display (optional).
|
|
89
|
+
*/
|
|
90
|
+
"icon"?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Icon position: 'start' or 'end'.
|
|
93
|
+
* @default 'start'
|
|
94
|
+
*/
|
|
95
|
+
"iconPosition"?: 'start' | 'end';
|
|
98
96
|
/**
|
|
99
97
|
* Button variant determining visual style.
|
|
100
98
|
* @default 'primary-brand'
|
|
@@ -114,34 +112,14 @@ declare namespace LocalJSX {
|
|
|
114
112
|
}
|
|
115
113
|
interface DsIcon {
|
|
116
114
|
/**
|
|
117
|
-
* Base path for
|
|
115
|
+
* Base path for icon SVG files.
|
|
118
116
|
* @default '/icons'
|
|
119
117
|
*/
|
|
120
118
|
"basePath"?: string;
|
|
121
119
|
/**
|
|
122
|
-
*
|
|
123
|
-
* @default 'currentColor'
|
|
124
|
-
*/
|
|
125
|
-
"color"?: string;
|
|
126
|
-
/**
|
|
127
|
-
* Accessible label for screen readers. If provided, icon is treated as semantic (not decorative).
|
|
128
|
-
*/
|
|
129
|
-
"label"?: string;
|
|
130
|
-
/**
|
|
131
|
-
* Enable lazy loading with IntersectionObserver. Icon will only load when visible in viewport.
|
|
132
|
-
* @default false
|
|
133
|
-
*/
|
|
134
|
-
"lazy"?: boolean;
|
|
135
|
-
/**
|
|
136
|
-
* Name of the icon to display (without .svg extension). Must match a file in the icons directory.
|
|
137
|
-
* @example "add", "arrow-left", "close"
|
|
120
|
+
* Name of the icon (without .svg extension).
|
|
138
121
|
*/
|
|
139
122
|
"name": string;
|
|
140
|
-
/**
|
|
141
|
-
* Size of the icon in pixels.
|
|
142
|
-
* @default 24
|
|
143
|
-
*/
|
|
144
|
-
"size"?: number;
|
|
145
123
|
}
|
|
146
124
|
interface IntrinsicElements {
|
|
147
125
|
"ds-button": DsButton;
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Button variants matching the design system specification.
|
|
3
|
-
* - Primary variants: Filled background (brand, neutral, success)
|
|
4
|
-
* - Secondary: Neutral filled background
|
|
5
|
-
* - Tertiary variants: Outlined style (neutral, success)
|
|
6
|
-
* - Ghost: Text only, no background/border
|
|
7
|
-
*/
|
|
8
1
|
export type ButtonVariant = 'primary-brand' | 'primary-neutral' | 'primary-success' | 'secondary' | 'tertiary-neutral' | 'tertiary-success' | 'ghost';
|
|
9
2
|
export declare class DsButton {
|
|
10
3
|
/**
|
|
11
4
|
* Button variant determining visual style.
|
|
12
|
-
* @default 'primary-brand'
|
|
13
5
|
*/
|
|
14
6
|
variant: ButtonVariant;
|
|
15
7
|
/**
|
|
16
|
-
* Disables the button
|
|
17
|
-
* @default false
|
|
8
|
+
* Disables the button.
|
|
18
9
|
*/
|
|
19
10
|
disabled: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Icon name to display (optional).
|
|
13
|
+
*/
|
|
14
|
+
icon?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Icon position: 'start' or 'end'.
|
|
17
|
+
*/
|
|
18
|
+
iconPosition: 'start' | 'end';
|
|
20
19
|
render(): any;
|
|
21
20
|
}
|