GlassKit Elements
Vollständige Referenz für alle 24 Web Components – entwickelt von Jungherz GmbH. Vanilla JS, Shadow DOM, native Formular-Teilnahme.
Installation
CDN (schnellste Variante)
npm
Selektiver Import
Importieren Sie nur, was Sie benötigen, für kleinere Bundles:
Theming
Setzen Sie data-theme auf dem <html>-Element. Alle Komponenten synchronisieren sich automatisch über einen gemeinsamen MutationObserver.
Formular-Integration
Alle Formular-Komponenten nehmen über ElementInternals an nativen Formularen teil.
Inhalts-Komponenten
<glk-title>
Gestaltete Überschrift mit Textschatten.
<glk-badge>
Inline-Status-Badge mit Farbvarianten.
| Attribute | Type | Values |
|---|---|---|
variant | String | primary | success | error |
<glk-avatar>
Kreisförmiger Avatar mit Initialen oder Bild.
| Attribute | Type | Values |
|---|---|---|
size | String | sm | (default) | lg |
src | String | Image URL |
<glk-card>
Inhaltskarte mit Glaseffekt.
| Attribute | Type | Description |
|---|---|---|
glow | Boolean | Adds gradient glow effect |
<glk-divider>
<glk-status>
Statushinweis mit Nachricht.
Buttons
<glk-button>
Glas-gestalteter Button mit drei Varianten und Größenoptionen.
| Attribute | Type | Values |
|---|---|---|
variant | String | primary | secondary | tertiary |
size | String | sm | md | lg | auto |
disabled | Boolean | Disables the button |
type | String | button | submit | reset |
Events: glk-click
<glk-pill>
Kleiner kreisförmiger Icon-Button (46x46px).
| Attribute | Type | Description |
|---|---|---|
label | String | Accessible aria-label |
disabled | Boolean | Disables the button |
Formular-Komponenten
Alle Formular-Komponenten unterstützen name, value, disabled und nehmen an der nativen <form>-Übermittlung teil.
<glk-input>
Textfeld mit Label, Hinweis und Fehlerzustand.
| Attribute | Type | Description |
|---|---|---|
label | String | Input label |
type | String | text, email, password, ... |
placeholder | String | Placeholder text |
hint | String | Helper text |
error | Boolean | Error styling |
required | Boolean | Required field |
Events: glk-input, glk-change
<glk-textarea>
<glk-select>
<glk-search>
<glk-toggle>
Schalter-Toggle mit Formular-Teilnahme.
| Attribute | Type | Description |
|---|---|---|
label | String | Toggle label |
checked | Boolean | Checked state |
disabled | Boolean | Disabled state |
Events: glk-change → { checked: boolean }
<glk-checkbox>
<glk-radio>
<glk-range>
| Attribute | Type | Description |
|---|---|---|
min | Number | Minimum (default: 0) |
max | Number | Maximum (default: 100) |
value | Number | Current value |
step | Number | Step increment |
Feedback
<glk-progress>
| Attribute | Type | Values |
|---|---|---|
value | Number | 0 – 100 |
variant | String | success | error |
size | String | sm | (default) | lg |
<glk-modal>
Modaler Dialog mit Titel, Inhalt und Aktions-Buttons.
Sind Sie sicher, dass Sie fortfahren moechten?
| Attribute | Type | Description |
|---|---|---|
open | Boolean | Show/hide |
title | String | Header title |
Methods: .show(), .close() Events: glk-close
<glk-toast>
Automatisch ausblendende Benachrichtigung.
| Attribute | Type | Values |
|---|---|---|
variant | String | success | error | warning |
duration | Number | ms (default: 3000) |
Methods: .show(message, variant, duration), .dismiss()
<glk-popover>
Anchored Dropdown- / Menü-Container. Wrappt ein Trigger-Element (via slot="trigger") und dessen Floating-Inhalt. Das Element verwaltet .is-open-Toggle, Outside-Click-Dismiss und Escape-Key-Close intern — kein manuelles Klassen-Umschalten nötig.
| Attribute | Typ | Default | Beschreibung |
|---|---|---|---|
open | Boolean | false | Sichtbarkeitsstatus (wird als .is-open auf die innere Fläche gespiegelt) |
placement | String | bottom | top | bottom | start | end |
| Slot | Zweck |
|---|---|
trigger | Element, das den Popover beim Klick toggelt |
| (default) | Floating-Inhalt, der im offenen Zustand angezeigt wird |
Events: glk-open, glk-close
Methoden: .show(), .close(), .toggle()
Achtung: die Methode heißt bewusst .toggle() — nicht .togglePopover(), da dies mit der nativen HTMLElement.togglePopover()-API kollidiert.
Container
<glk-accordion> + <glk-accordion-item>
Einklappbare Akkordeon-Abschnitte.
| Attribute | Component | Description |
|---|---|---|
title | glk-accordion-item | Trigger text |
open | glk-accordion-item | Expanded state |
Events: glk-toggle → { open: boolean }
<glk-list> + <glk-list-item>
iOS-Style gruppierte Einstellungsliste. Items tragen ein führendes Icon, Titel + optionalen Untertitel und ein nachgelagertes Element. Divider zwischen den Items werden automatisch gezeichnet — niemals <hr>-Markup zwischen Items einfügen. Unterstützt Sektions-Header, große Icons, mehrzeilige Untertitel, Trailing-Werte und semantische Varianten.
| Attribute | Komponente | Beschreibung |
|---|---|---|
header | glk-list | Sektions-Header — Großbuchstaben-Label über der Liste |
flush | glk-list | Edge-to-Edge-Variante — entfernt seitlichen Rand und Radius |
bare | glk-list | Entfernt Hintergrund, Border, Shadow — für Einbettung in <glk-popover> oder <glk-card> |
title | glk-list-item | Haupttext |
subtitle | glk-list-item | Sekundärtext (muted, optional) |
interactive | glk-list-item | Hover- / Focus- / Active-States + feuert glk-click |
center | glk-list-item | Zentrierte Single-Text-Variante (z.B. für Aktionszeilen) |
leading-lg | glk-list-item | Großes 40×40 Leading-Icon mit abgerundeten Ecken (für App-Icons) |
wrap | glk-list-item | Mehrzeiliger Untertitel (bis 3 Zeilen mit Ellipsis) |
detail | glk-list-item | Muted Trailing-Wert (z.B. Dateigröße, Version) |
variant | glk-list-item | danger (rote Destruktiv-Aktion) oder accent (Primärfarbe) |
| Slot | Komponente | Zweck |
|---|---|---|
leading | glk-list-item | Icon-Slot (24×24 SVG, oder 32×32 mit leading-lg) |
trailing | glk-list-item | Chevron, Badge oder Button (gerendert nach detail-Wert) |
Events: glk-click auf <glk-list-item>, sobald interactive gesetzt ist.
Framework-sicher: beide Elemente nutzen pures Shadow DOM mit Slot-Projection — kein Clonen von Kinder-Knoten — und komponieren sauber in lit-html-Templates, HybridsJS, React, Vue und Svelte.