Web Components
shield-button
Dokumentation ueber einen zentralen Playground plus eigene Custom Stories fuer Varianten, Groessen, States, Accessibility und typische UI-Kontexte.
Default Story Playground
Eingebettete Default-Story mit Storybook-Controls direkt in der Doku.
Custom Stories
Diese Bloecke sind frei gebaut und nicht an Storybook gebunden. Ideal fuer Guidelines und zusammengesetzte Beispiele.
Button Varianten Grid (HTML)
Web Components direkt im Astro-Markup eingebunden.
Code
<shield-button variant="primary" size="md">Primary</shield-button>
<shield-button variant="secondary" size="md">Secondary</shield-button>
<shield-button variant="ghost" size="md">Ghost</shield-button> Button Varianten Grid (Angular Island)
Dasselbe Beispiel ueber eine Angular-Komponente in Astro (client:load).
Code
import { Component } from '@angular/core';
import { ShieldButton, ShieldButtonSize, ShieldButtonVariant } from '@shield/angular';
@Component({
standalone: true,
imports: [ShieldButton],
template: `
<shield-button [variant]="Variant.PRIMARY" [size]="Size.MD">Primary</shield-button>
<shield-button [variant]="Variant.SECONDARY" [size]="Size.MD">Secondary</shield-button>
<shield-button [variant]="Variant.GHOST" [size]="Size.MD">Ghost</shield-button>
`
})
export class AngularButtonVariantsDemoComponent {
readonly Variant = ShieldButtonVariant;
readonly Size = ShieldButtonSize;
} Groessenvergleich (HTML)
Kleine, mittlere und grosse Buttons nebeneinander.
Code
<shield-button variant="primary" size="sm">Small</shield-button>
<shield-button variant="primary" size="md">Medium</shield-button>
<shield-button variant="primary" size="lg">Large</shield-button> Groessenvergleich (Angular Island)
Dasselbe Beispiel ueber Angular in Astro.
Code
import { Component } from '@angular/core';
import {
ShieldButton,
ShieldButtonSize,
ShieldButtonVariant
} from '@shield/angular';
@Component({
standalone: true,
imports: [ShieldButton],
template: `
<shield-button [variant]="Variant.PRIMARY" [size]="Size.SM">Small</shield-button>
<shield-button [variant]="Variant.PRIMARY" [size]="Size.MD">Medium</shield-button>
<shield-button [variant]="Variant.PRIMARY" [size]="Size.LG">Large</shield-button>
`
})
export class AngularButtonSizesDemoComponent {
readonly Variant = ShieldButtonVariant;
readonly Size = ShieldButtonSize;
} States (HTML)
Default, Disabled und Loading-Text im Vergleich.
Code
<shield-button variant="primary" size="md">Default</shield-button>
<shield-button variant="secondary" size="md" disabled>Disabled</shield-button>
<shield-button variant="primary" size="md" disabled>Saving...</shield-button> States (Angular Island)
Dasselbe State-Setup in Angular.
Code
import { Component } from '@angular/core';
import {
ShieldButton,
ShieldButtonSize,
ShieldButtonVariant
} from '@shield/angular';
@Component({
standalone: true,
imports: [ShieldButton],
template: `
<shield-button [variant]="Variant.PRIMARY" [size]="Size.MD">Default</shield-button>
<shield-button [variant]="Variant.SECONDARY" [size]="Size.MD" [disabled]="true">Disabled</shield-button>
<shield-button [variant]="Variant.PRIMARY" [size]="Size.MD" [disabled]="true">Saving...</shield-button>
`
})
export class AngularButtonStatesDemoComponent {
readonly Variant = ShieldButtonVariant;
readonly Size = ShieldButtonSize;
} Icon-only A11y (HTML)
Icon-only braucht immer s-aria-label.
Code
<shield-button variant="secondary" size="sm" s-aria-label="Dialog schliessen">
<span aria-hidden="true">✕</span>
</shield-button>
<shield-button variant="secondary" size="sm" s-aria-label="Suche oeffnen">
<span aria-hidden="true">🔍</span>
</shield-button> Icon-only A11y (Angular Island)
Dasselbe a11y-Pattern in Angular.
Code
import { Component } from '@angular/core';
import {
ShieldButton,
ShieldButtonSize,
ShieldButtonVariant
} from '@shield/angular';
@Component({
standalone: true,
imports: [ShieldButton],
template: `
<shield-button [variant]="Variant.SECONDARY" [size]="Size.SM" sAriaLabel="Dialog schliessen">
<span aria-hidden="true">✕</span>
</shield-button>
<shield-button [variant]="Variant.SECONDARY" [size]="Size.SM" sAriaLabel="Suche oeffnen">
<span aria-hidden="true">🔍</span>
</shield-button>
`
})
export class AngularButtonIconA11yDemoComponent {
readonly Variant = ShieldButtonVariant;
readonly Size = ShieldButtonSize;
} Footer Actions (HTML)
Klassische Formular-Buttons mit Hierarchie.
Code
<shield-button variant="secondary" size="md">Zurueck</shield-button>
<shield-button variant="primary" size="md">Weiter</shield-button> Footer Actions (Angular Island)
Dasselbe Layout als Angular-Implementierung.
Code
import { Component } from '@angular/core';
import {
ShieldButton,
ShieldButtonSize,
ShieldButtonVariant
} from '@shield/angular';
@Component({
standalone: true,
imports: [ShieldButton],
template: `
<shield-button [variant]="Variant.SECONDARY" [size]="Size.MD">Zurueck</shield-button>
<shield-button [variant]="Variant.PRIMARY" [size]="Size.MD">Weiter</shield-button>
`
})
export class AngularButtonContextDemoComponent {
readonly Variant = ShieldButtonVariant;
readonly Size = ShieldButtonSize;
}