Glassmorphism UI Library
A complete CSS component library with glassmorphism aesthetics – built by Jungherz GmbH. Pure CSS, no dependencies, Dark & Light mode.
Installation
Include one CSS file – done. Optionally add a theme override for custom brand colors.
Design Tokens
All visual values are controlled via CSS Custom Properties.
Color Palette
| Token | Dark Value | Usage |
|---|---|---|
--gl-color-primary | #f5a623 | Primary color, buttons, active elements |
--gl-color-primary-dark | #d4692a | Gradient end value |
--gl-color-text | #ffffff | Default text color |
--gl-color-text-muted | rgba(255,255,255,0.60) | Secondary text |
--gl-color-success | #34c759 | Success status |
--gl-color-error | #ff3b30 | Error status |
Glass Surfaces
| Token | Value | Usage |
|---|---|---|
--gl-surface-1 | rgba(…, 0.08) | Subtlest surface (status) |
--gl-surface-2 | rgba(…, 0.10) | Default (inputs, cards) |
--gl-surface-3 | rgba(…, 0.14) | Nav pills, badges |
--gl-surface-4 | rgba(…, 0.16) | Hover states |
--gl-surface-5 | rgba(…, 0.22) | Strong hover |
--gl-surface-milk-strong | rgba(…, 0.75) | Secondary button |
Spacing & Radii
| Token | Value | Token | Value |
|---|---|---|---|
--gl-space-2xs | 4px | --gl-radius-xs | 8px |
--gl-space-xs | 8px | --gl-radius-sm | 12px |
--gl-space-sm | 12px | --gl-radius-input | 14px |
--gl-space-md | 16px | --gl-radius-btn | 16px |
--gl-space-lg | 20px | --gl-radius-card | 24px |
--gl-space-xl | 24px | --gl-radius-full | 9999px |
--gl-space-2xl | 32px | --gl-radius-pill | 50% |
Theming (Light / Dark)
The theme is controlled via data-theme on the <html> element.
Background
The glass effect requires a colored background.
| Class | Description |
|---|---|
.glass-bg | Full background with aurora light effects |
.glass-bg--has-tab-bar | Modifier: bottom padding for tab bar |
.glass-bg--has-tab-bar-floating | Modifier: bottom padding for floating tab bar + accessory |
Pill-Buttons
Round icon buttons for navigation and actions.
| Class | Description |
|---|---|
.glass-pill | Standard glass circle (46×46px) |
.glass-theme-toggle | Pill with moon/sun icon switch |
Tab-Bar
Fixed bottom navigation with glass background and optional badge.
Tab-Bar – Floating
Pill-shaped, centered, floating variant inspired by iOS 26 Liquid Glass. Pair with an optional .glass-tab-bar__accessory capsule (e.g. search, compose) — sits next to the bar with its own glass material. The active tab gets a soft radial Spotlight halo instead of the underline dot.
Accessory accent variants
Add --accent, --success, or --error to highlight the accessory with a colored capsule (filled background, white icon).
| Class | Description |
|---|---|
.glass-tab-bar-dock | Wrapper: fixed bottom-center, holds bar + accessory |
.glass-tab-bar-dock--accessory-left | Modifier: place accessory on the left |
.glass-tab-bar--floating | Modifier on .glass-tab-bar: pill shape, max-content width |
.glass-tab-bar__accessory | Standalone glass capsule next to the bar |
.glass-tab-bar__accessory--accent | Filled with primary color |
.glass-tab-bar__accessory--success | Filled with success color |
.glass-tab-bar__accessory--error | Filled with error color |
.glass-bg--has-tab-bar-floating | Background padding helper for the floating variant |
Title
Capture Contracts
& Upload
Card
Photograph your document, verify edges, and upload in batch.
| Class | Description |
|---|---|
.glass-card | Base glass surface |
.glass-card--glow | Light → milky gradient + light streak |
.glass-card__icon | Centered icon wrapper |
.glass-card__text | Description text |
Buttons
| Class | Description |
|---|---|
.glass-btn | Base (56px, full width) |
--primary | Colored gradient |
--secondary | Milky white |
--tertiary | Subtle glass |
--sm | 44px height |
--lg | 64px height |
--auto | Auto width |
Badge
Avatar
Divider
Status Notice
No documents captured yet.
List
Grouped settings-style container for stacked rows. Items support a leading icon, title + optional subtitle, and a trailing element (chevron, value, button). Dividers between items are drawn automatically — no extra markup needed.
Settings style (icon + title + subtitle + trailing)
-
iOS 26.4 Update2.1 GB · Available now
-
Apple OneFamily — renews Apr 28$22.95
-
Notifications
- View all subscriptions
Compact menu (centered text, no icons)
- Share document
- Duplicate
- Delete
Grouped sections with large icons
-
Review downloaded mediaSave up to 1.38 GB. Review all videos and audio files downloaded on your device and remove them as needed.
-
AusweisApp BundVersion 2.5.124 MB
-
Ghost in the MachinePartially watched237.1 MB
- View all downloads
Class reference
| Class | Description |
|---|---|
.glass-list | Grouped surface container |
.glass-list--flush | Edge-to-edge variant (no side margin / radius). Assumes parent has --gl-space-lg horizontal padding. |
.glass-list--bare | Strips background, border & shadow — for embedding inside .glass-popover or .glass-card. |
.glass-list__item | List row (use <li>, <a>, or <button>) |
.glass-list__section-header | Section label above a .glass-list — uppercase, small, muted |
.glass-list__item--interactive | Adds hover / focus / active states |
.glass-list__item--center | Centered single-text variant with ellipsis truncation |
.glass-list__item--danger | Red text for destructive actions |
.glass-list__item--accent | Primary-colored text for accent actions |
.glass-list__leading | Leading slot (28×28, holds an icon SVG) |
.glass-list__leading--lg | Large leading slot (40×40, rounded square, supports <img>) |
.glass-list__content | Flexible middle slot — takes remaining width, enables truncation |
.glass-list__title | Primary text (medium weight, ellipsis) |
.glass-list__subtitle | Secondary text (small, muted, ellipsis) |
.glass-list__subtitle--wrap | Multi-line subtitle (up to 3 lines, clamped with ellipsis) |
.glass-list__trailing | Trailing slot — chevron, value, button, badge |
.glass-list__value | Muted text inside .glass-list__trailing (e.g. file size) |
Dividers between rows are rendered automatically via ::after. Items with a leading icon get an icon-aligned inset; items without get a standard left/right padding inset. The last item never has a divider. SVG icon convention: 24px for leading, 18px for trailing, stroke: currentColor, stroke-width: 2.
Modal
Centered dialog with blur overlay. Visibility is controlled via the .is-active class on the overlay element — toggling it requires a tiny bit of JavaScript.
Delete document?
This action cannot be undone.
Class reference
| Class | Description |
|---|---|
.glass-modal-overlay | Fullscreen blur overlay |
.glass-modal-overlay.is-active | Visible + animated |
.glass-modal | Dialog container (max-width 340px) |
__header / __title | Title area |
__body | Content area |
__footer / __action | Action bar |
__action--primary | Primary action |
__action--danger | Dangerous action |
Note: the .is-active class belongs on the .glass-modal-overlay, not on .glass-modal itself. The overlay handles the fullscreen backdrop, and its :is-active state triggers both the backdrop fade-in and the inner dialog's scale-up animation.
Toast
Visible via .is-visible. Variants: --success, --error, --warning.
Popover
Anchored dropdown / menu container. Wrap a trigger and a .glass-popover in a .glass-popover-anchor. Visibility is controlled via the .is-open class — toggling it requires a tiny bit of JavaScript.
Class reference
| Class | Description |
|---|---|
.glass-popover-anchor | Positioning context for the popover (wraps trigger + popover) |
.glass-popover | Floating glass surface, hidden until .is-open |
.glass-popover.is-open | Visible state — fade + scale animation |
.glass-popover--top | Opens upward (above the trigger) |
.glass-popover--start | Aligns left edge with trigger |
.glass-popover--end | Aligns right edge with trigger |
Note: name your toggle function anything except togglePopover — that name collides with the native HTMLElement.togglePopover() method from the HTML Popover API and inline onclick handlers will throw a NotSupportedError.
Input
Textarea
Select
Search
Toggle Switch
Checkbox
Radio Button
Range Slider
Progress Bar
| Class | Description |
|---|---|
.glass-progress | Base container |
--sm / --lg | Track height: 4px / 12px |
--success / --error | Color variants |
Accordion
Utilities
Stack (vertikal)
.gl-stack
.gl-stack--xs (8px)
.gl-stack--sm (12px)
.gl-stack--md (16px)
.gl-stack--lg (20px)
.gl-stack--xl (24px)
Row (horizontal)
.gl-row
.gl-row--xs (8px)
.gl-row--sm (12px)
.gl-row--md (16px)
Margin Top
.gl-mt-sm (12px)
.gl-mt-md (16px)
.gl-mt-lg (20px)
.gl-mt-xl (24px)
Margin Bottom
.gl-mb-sm (12px)
.gl-mb-md (16px)
.gl-mb-lg (20px)
.gl-mb-xl (24px)
Text
.gl-text-center
.gl-text-muted
.gl-text-sm
Layout
.gl-px (padding horizontal)
.gl-w-full (width: 100%)
.gl-flex-1 (flex: 1)
📋 All Classes at a Glance
| Component | Classes | Modifier / States |
|---|---|---|
| Background | .glass-bg | --has-tab-bar |
| Navigation | .glass-nav | – |
| Pill-Button | .glass-pill | – |
| Theme-Toggle | .glass-theme-toggle | – |
| Title | .glass-title | – |
| Card | .glass-card | --glow |
| Button | .glass-btn | --primary, --secondary, --tertiary, --sm, --lg, --auto |
| Badge | .glass-badge | --primary, --success, --error |
| Avatar | .glass-avatar | --sm, --lg |
| Divider | .glass-divider | – |
| Status | .glass-status | – |
| List | .glass-list | --flush, --bare, __item--interactive, __item--center, __item--danger, __item--accent, __leading--lg, __subtitle--wrap, __value, __section-header |
| Popover | .glass-popover | --top, --start, --end, .is-open |
| Input | .glass-input | --error, :disabled |
| Textarea | .glass-textarea | – |
| Select | .glass-select | – |
| Search | .glass-search | – |
| Toggle | .glass-toggle | :checked |
| Checkbox | .glass-checkbox | :checked |
| Radio | .glass-radio | :checked |
| Range | .glass-range | – |
| Progress | .glass-progress | --sm, --lg, --success, --error |
| Modal | .glass-modal-overlay | .is-active |
| Toast | .glass-toast | --success, --error, --warning, .is-visible |
| Tab-Bar | .glass-tab-bar | .is-active auf Items |
| Tab-Bar Floating | .glass-tab-bar-dock + .glass-tab-bar--floating | __accessory, __accessory--accent/--success/--error, --accessory-left |
| Accordion | .glass-accordion | .is-open auf Items |
🤖 AI / LLM Reference
GlassKit ships with SKILL.md – a structured, machine-readable component reference designed for AI assistants, LLMs, and code-generation tools.
| Feature | Description |
|---|---|
| Copy-paste HTML | All 24 components with exact nesting and BEM hierarchy |
| Design token tables | Colors, surfaces, blur, radii, spacing, shadows, typography |
| State class mapping | is-active, is-open, is-visible, :checked – where each belongs |
| Composition patterns | 6 full page layouts: Login, Dashboard, Form, Modal, Settings, Progress |
| Common mistakes | Frequent errors and their corrections |
Attach or reference SKILL.md when asking an AI to generate GlassKit HTML for production-ready output.