shadcn-glass-ui 2.3.0 → 2.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.
- package/CHANGELOG.md +26 -0
- package/dist/cli/index.cjs +1 -1
- package/dist/components.cjs +4 -4
- package/dist/components.mjs +1 -1
- package/dist/hooks.cjs +2 -2
- package/dist/index.cjs +12 -5
- package/dist/index.mjs +8 -1
- package/dist/r/avatar-glass.json +1 -1
- package/dist/r/checkbox-glass.json +4 -5
- package/dist/r/circular-progress-glass.json +1 -1
- package/dist/r/dropdown-glass.json +1 -1
- package/dist/r/dropdown-menu-glass.json +1 -1
- package/dist/r/flag-alert-glass.json +1 -1
- package/dist/r/glass-card.json +3 -2
- package/dist/r/notification-glass.json +1 -1
- package/dist/r/popover-glass.json +1 -1
- package/dist/r/progress-glass.json +1 -1
- package/dist/r/registry.json +2 -2
- package/dist/r/skeleton-glass.json +1 -1
- package/dist/r/slider-glass.json +1 -1
- package/dist/r/stepper-glass.json +1 -1
- package/dist/r/tabs-glass.json +5 -4
- package/dist/r/toggle-glass.json +1 -1
- package/dist/shadcn-glass-ui.css +1 -1
- package/dist/{theme-context-DmTETrFi.cjs → theme-context-7NcW0KZL.cjs} +2 -2
- package/dist/themes.cjs +1 -1
- package/dist/{trust-score-card-glass-EfMB5l5J.mjs → trust-score-card-glass-BGqBcdyJ.mjs} +120 -177
- package/dist/{trust-score-card-glass-3VBi9soW.cjs → trust-score-card-glass-DtgFygh5.cjs} +124 -179
- package/dist/{use-focus-CswOSq71.cjs → use-focus-BFBcpBh1.cjs} +2 -2
- package/dist/{use-wallpaper-tint-WtRWtupA.cjs → use-wallpaper-tint-DTTStm5f.cjs} +2 -2
- package/dist/{utils-DX6rdBol.cjs → utils-CiuCe_Aq.cjs} +2 -2
- package/dist/utils.cjs +1 -1
- package/package.json +25 -3
- package/dist/components/blocks/avatar-gallery/index.d.ts +0 -2
- package/dist/components/blocks/avatar-gallery/index.d.ts.map +0 -1
- package/dist/components/blocks/avatar-gallery/page.d.ts +0 -7
- package/dist/components/blocks/avatar-gallery/page.d.ts.map +0 -1
- package/dist/components/blocks/badges/index.d.ts +0 -2
- package/dist/components/blocks/badges/index.d.ts.map +0 -1
- package/dist/components/blocks/badges/page.d.ts +0 -7
- package/dist/components/blocks/badges/page.d.ts.map +0 -1
- package/dist/components/blocks/buttons/index.d.ts +0 -2
- package/dist/components/blocks/buttons/index.d.ts.map +0 -1
- package/dist/components/blocks/buttons/page.d.ts +0 -7
- package/dist/components/blocks/buttons/page.d.ts.map +0 -1
- package/dist/components/blocks/form-elements/index.d.ts +0 -2
- package/dist/components/blocks/form-elements/index.d.ts.map +0 -1
- package/dist/components/blocks/form-elements/page.d.ts +0 -7
- package/dist/components/blocks/form-elements/page.d.ts.map +0 -1
- package/dist/components/blocks/index.d.ts +0 -14
- package/dist/components/blocks/index.d.ts.map +0 -1
- package/dist/components/blocks/notifications/index.d.ts +0 -2
- package/dist/components/blocks/notifications/index.d.ts.map +0 -1
- package/dist/components/blocks/notifications/page.d.ts +0 -7
- package/dist/components/blocks/notifications/page.d.ts.map +0 -1
- package/dist/components/blocks/progress/index.d.ts +0 -2
- package/dist/components/blocks/progress/index.d.ts.map +0 -1
- package/dist/components/blocks/progress/page.d.ts +0 -7
- package/dist/components/blocks/progress/page.d.ts.map +0 -1
- package/dist/components/blocks/registry.d.ts +0 -16
- package/dist/components/blocks/registry.d.ts.map +0 -1
- package/dist/components/demos/AnimatedBackground.d.ts +0 -5
- package/dist/components/demos/AnimatedBackground.d.ts.map +0 -1
- package/dist/components/demos/ComponentShowcase.d.ts +0 -6
- package/dist/components/demos/ComponentShowcase.d.ts.map +0 -1
- package/dist/components/demos/DesktopShowcase.d.ts +0 -3
- package/dist/components/demos/DesktopShowcase.d.ts.map +0 -1
- package/dist/components/demos/GlassFixesDemo.d.ts +0 -6
- package/dist/components/demos/GlassFixesDemo.d.ts.map +0 -1
- package/dist/components/demos/MobileShowcase.d.ts +0 -3
- package/dist/components/demos/MobileShowcase.d.ts.map +0 -1
- package/dist/components/glass/atomic/expandable-header-glass.d.ts +0 -16
- package/dist/components/glass/atomic/expandable-header-glass.d.ts.map +0 -1
- package/dist/components/glass/atomic/icon-button-glass.d.ts +0 -18
- package/dist/components/glass/atomic/icon-button-glass.d.ts.map +0 -1
- package/dist/components/glass/atomic/index.d.ts +0 -14
- package/dist/components/glass/atomic/index.d.ts.map +0 -1
- package/dist/components/glass/atomic/insight-card-glass.d.ts +0 -22
- package/dist/components/glass/atomic/insight-card-glass.d.ts.map +0 -1
- package/dist/components/glass/atomic/search-box-glass.d.ts +0 -17
- package/dist/components/glass/atomic/search-box-glass.d.ts.map +0 -1
- package/dist/components/glass/atomic/sort-dropdown-glass.d.ts +0 -38
- package/dist/components/glass/atomic/sort-dropdown-glass.d.ts.map +0 -1
- package/dist/components/glass/atomic/stat-item-glass.d.ts +0 -22
- package/dist/components/glass/atomic/stat-item-glass.d.ts.map +0 -1
- package/dist/components/glass/atomic/theme-toggle-glass.d.ts +0 -11
- package/dist/components/glass/atomic/theme-toggle-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/ai-card-glass.d.ts +0 -7
- package/dist/components/glass/composite/ai-card-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/career-stats-header-glass.d.ts +0 -15
- package/dist/components/glass/composite/career-stats-header-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/circular-metric-glass.d.ts +0 -24
- package/dist/components/glass/composite/circular-metric-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/contribution-metrics-glass.d.ts +0 -15
- package/dist/components/glass/composite/contribution-metrics-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/index.d.ts +0 -22
- package/dist/components/glass/composite/index.d.ts.map +0 -1
- package/dist/components/glass/composite/metric-card-glass.d.ts +0 -96
- package/dist/components/glass/composite/metric-card-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/metrics-grid-glass.d.ts +0 -17
- package/dist/components/glass/composite/metrics-grid-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/repository-card-glass.d.ts +0 -16
- package/dist/components/glass/composite/repository-card-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/repository-header-glass.d.ts +0 -16
- package/dist/components/glass/composite/repository-header-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/repository-metadata-glass.d.ts +0 -13
- package/dist/components/glass/composite/repository-metadata-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/split-layout-glass/index.d.ts +0 -16
- package/dist/components/glass/composite/split-layout-glass/index.d.ts.map +0 -1
- package/dist/components/glass/composite/split-layout-glass/split-layout-accordion.d.ts +0 -66
- package/dist/components/glass/composite/split-layout-glass/split-layout-accordion.d.ts.map +0 -1
- package/dist/components/glass/composite/split-layout-glass/split-layout-context.d.ts +0 -122
- package/dist/components/glass/composite/split-layout-glass/split-layout-context.d.ts.map +0 -1
- package/dist/components/glass/composite/split-layout-glass/split-layout-glass.d.ts +0 -177
- package/dist/components/glass/composite/split-layout-glass/split-layout-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/trust-score-display-glass.d.ts +0 -15
- package/dist/components/glass/composite/trust-score-display-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/user-info-glass.d.ts +0 -15
- package/dist/components/glass/composite/user-info-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/user-stats-line-glass.d.ts +0 -15
- package/dist/components/glass/composite/user-stats-line-glass.d.ts.map +0 -1
- package/dist/components/glass/composite/year-card-glass.d.ts +0 -53
- package/dist/components/glass/composite/year-card-glass.d.ts.map +0 -1
- package/dist/components/glass/index.d.ts +0 -16
- package/dist/components/glass/index.d.ts.map +0 -1
- package/dist/components/glass/primitives/form-field-wrapper.d.ts +0 -69
- package/dist/components/glass/primitives/form-field-wrapper.d.ts.map +0 -1
- package/dist/components/glass/primitives/index.d.ts +0 -12
- package/dist/components/glass/primitives/index.d.ts.map +0 -1
- package/dist/components/glass/primitives/interactive-card.d.ts +0 -91
- package/dist/components/glass/primitives/interactive-card.d.ts.map +0 -1
- package/dist/components/glass/primitives/style-utils.d.ts +0 -147
- package/dist/components/glass/primitives/style-utils.d.ts.map +0 -1
- package/dist/components/glass/primitives/touch-target.d.ts +0 -46
- package/dist/components/glass/primitives/touch-target.d.ts.map +0 -1
- package/dist/components/glass/sections/career-stats-glass.d.ts +0 -17
- package/dist/components/glass/sections/career-stats-glass.d.ts.map +0 -1
- package/dist/components/glass/sections/flags-section-glass.d.ts +0 -13
- package/dist/components/glass/sections/flags-section-glass.d.ts.map +0 -1
- package/dist/components/glass/sections/header-branding-glass.d.ts +0 -16
- package/dist/components/glass/sections/header-branding-glass.d.ts.map +0 -1
- package/dist/components/glass/sections/header-nav-glass.d.ts +0 -7
- package/dist/components/glass/sections/header-nav-glass.d.ts.map +0 -1
- package/dist/components/glass/sections/index.d.ts +0 -13
- package/dist/components/glass/sections/index.d.ts.map +0 -1
- package/dist/components/glass/sections/profile-header-glass.d.ts +0 -16
- package/dist/components/glass/sections/profile-header-glass.d.ts.map +0 -1
- package/dist/components/glass/sections/projects-list-glass.d.ts +0 -42
- package/dist/components/glass/sections/projects-list-glass.d.ts.map +0 -1
- package/dist/components/glass/sections/trust-score-card-glass.d.ts +0 -12
- package/dist/components/glass/sections/trust-score-card-glass.d.ts.map +0 -1
- package/dist/components/glass/specialized/base-progress-glass.d.ts +0 -8
- package/dist/components/glass/specialized/base-progress-glass.d.ts.map +0 -1
- package/dist/components/glass/specialized/flag-alert-glass.d.ts +0 -8
- package/dist/components/glass/specialized/flag-alert-glass.d.ts.map +0 -1
- package/dist/components/glass/specialized/index.d.ts +0 -21
- package/dist/components/glass/specialized/index.d.ts.map +0 -1
- package/dist/components/glass/specialized/language-bar-glass.d.ts +0 -24
- package/dist/components/glass/specialized/language-bar-glass.d.ts.map +0 -1
- package/dist/components/glass/specialized/profile-avatar-glass.d.ts +0 -26
- package/dist/components/glass/specialized/profile-avatar-glass.d.ts.map +0 -1
- package/dist/components/glass/specialized/progress-glass.d.ts +0 -9
- package/dist/components/glass/specialized/progress-glass.d.ts.map +0 -1
- package/dist/components/glass/specialized/rainbow-progress-glass.d.ts +0 -8
- package/dist/components/glass/specialized/rainbow-progress-glass.d.ts.map +0 -1
- package/dist/components/glass/specialized/segmented-control-glass.d.ts +0 -11
- package/dist/components/glass/specialized/segmented-control-glass.d.ts.map +0 -1
- package/dist/components/glass/specialized/sparkline-glass.d.ts +0 -34
- package/dist/components/glass/specialized/sparkline-glass.d.ts.map +0 -1
- package/dist/components/glass/specialized/status-indicator-glass.d.ts +0 -8
- package/dist/components/glass/specialized/status-indicator-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/alert-glass.d.ts +0 -13
- package/dist/components/glass/ui/alert-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/avatar-glass.d.ts +0 -58
- package/dist/components/glass/ui/avatar-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/badge-glass.d.ts +0 -74
- package/dist/components/glass/ui/badge-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/button-glass.d.ts +0 -110
- package/dist/components/glass/ui/button-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/card-glass.d.ts +0 -115
- package/dist/components/glass/ui/card-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/checkbox-glass.d.ts +0 -113
- package/dist/components/glass/ui/checkbox-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/circular-progress-glass.d.ts +0 -36
- package/dist/components/glass/ui/circular-progress-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/combobox-glass.d.ts +0 -61
- package/dist/components/glass/ui/combobox-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/dropdown-glass.d.ts +0 -83
- package/dist/components/glass/ui/dropdown-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/dropdown-menu-glass.d.ts +0 -77
- package/dist/components/glass/ui/dropdown-menu-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/glass-card.d.ts +0 -78
- package/dist/components/glass/ui/glass-card.d.ts.map +0 -1
- package/dist/components/glass/ui/index.d.ts +0 -44
- package/dist/components/glass/ui/index.d.ts.map +0 -1
- package/dist/components/glass/ui/input-glass.d.ts +0 -98
- package/dist/components/glass/ui/input-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/modal-glass.d.ts +0 -180
- package/dist/components/glass/ui/modal-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/notification-glass.d.ts +0 -13
- package/dist/components/glass/ui/notification-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/popover-glass.d.ts +0 -71
- package/dist/components/glass/ui/popover-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/sidebar-glass/index.d.ts +0 -100
- package/dist/components/glass/ui/sidebar-glass/index.d.ts.map +0 -1
- package/dist/components/glass/ui/sidebar-glass/sidebar-context.d.ts +0 -96
- package/dist/components/glass/ui/sidebar-glass/sidebar-context.d.ts.map +0 -1
- package/dist/components/glass/ui/sidebar-glass/sidebar-glass.d.ts +0 -88
- package/dist/components/glass/ui/sidebar-glass/sidebar-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/sidebar-glass/sidebar-menu.d.ts +0 -121
- package/dist/components/glass/ui/sidebar-glass/sidebar-menu.d.ts.map +0 -1
- package/dist/components/glass/ui/skeleton-glass.d.ts +0 -8
- package/dist/components/glass/ui/skeleton-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/slider-glass.d.ts +0 -38
- package/dist/components/glass/ui/slider-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/stepper-glass.d.ts +0 -63
- package/dist/components/glass/ui/stepper-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/tabs-glass.d.ts +0 -199
- package/dist/components/glass/ui/tabs-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/toggle-glass.d.ts +0 -27
- package/dist/components/glass/ui/toggle-glass.d.ts.map +0 -1
- package/dist/components/glass/ui/tooltip-glass.d.ts +0 -65
- package/dist/components/glass/ui/tooltip-glass.d.ts.map +0 -1
- package/dist/components/ui/alert.d.ts +0 -8
- package/dist/components/ui/alert.d.ts.map +0 -1
- package/dist/components/ui/avatar.d.ts +0 -7
- package/dist/components/ui/avatar.d.ts.map +0 -1
- package/dist/components/ui/badge.d.ts +0 -8
- package/dist/components/ui/badge.d.ts.map +0 -1
- package/dist/components/ui/button.d.ts +0 -8
- package/dist/components/ui/button.d.ts.map +0 -1
- package/dist/components/ui/card.d.ts +0 -10
- package/dist/components/ui/card.d.ts.map +0 -1
- package/dist/components/ui/chart.d.ts +0 -69
- package/dist/components/ui/chart.d.ts.map +0 -1
- package/dist/components/ui/checkbox.d.ts +0 -5
- package/dist/components/ui/checkbox.d.ts.map +0 -1
- package/dist/components/ui/collapsible.d.ts +0 -6
- package/dist/components/ui/collapsible.d.ts.map +0 -1
- package/dist/components/ui/command.d.ts +0 -19
- package/dist/components/ui/command.d.ts.map +0 -1
- package/dist/components/ui/dialog.d.ts +0 -16
- package/dist/components/ui/dialog.d.ts.map +0 -1
- package/dist/components/ui/dropdown-menu.d.ts +0 -26
- package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/components/ui/input.d.ts +0 -4
- package/dist/components/ui/input.d.ts.map +0 -1
- package/dist/components/ui/popover.d.ts +0 -8
- package/dist/components/ui/popover.d.ts.map +0 -1
- package/dist/components/ui/progress.d.ts +0 -5
- package/dist/components/ui/progress.d.ts.map +0 -1
- package/dist/components/ui/scroll-area.d.ts +0 -6
- package/dist/components/ui/scroll-area.d.ts.map +0 -1
- package/dist/components/ui/separator.d.ts +0 -5
- package/dist/components/ui/separator.d.ts.map +0 -1
- package/dist/components/ui/skeleton.d.ts +0 -3
- package/dist/components/ui/skeleton.d.ts.map +0 -1
- package/dist/components/ui/slider.d.ts +0 -5
- package/dist/components/ui/slider.d.ts.map +0 -1
- package/dist/components/ui/sonner.d.ts +0 -4
- package/dist/components/ui/sonner.d.ts.map +0 -1
- package/dist/components/ui/switch.d.ts +0 -5
- package/dist/components/ui/switch.d.ts.map +0 -1
- package/dist/components/ui/tabs.d.ts +0 -8
- package/dist/components/ui/tabs.d.ts.map +0 -1
- package/dist/components/ui/tooltip.d.ts +0 -8
- package/dist/components/ui/tooltip.d.ts.map +0 -1
- package/dist/components.d.ts.map +0 -1
- package/dist/demo-screenshot-aurora.png +0 -0
- package/dist/demo-screenshot.png +0 -0
- package/dist/demo-screenshot.png.zip +0 -0
- package/dist/hooks.d.ts.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/lib/config.d.ts +0 -28
- package/dist/lib/config.d.ts.map +0 -1
- package/dist/lib/hooks/index.d.ts +0 -11
- package/dist/lib/hooks/index.d.ts.map +0 -1
- package/dist/lib/hooks/use-focus.d.ts +0 -61
- package/dist/lib/hooks/use-focus.d.ts.map +0 -1
- package/dist/lib/hooks/use-hover.d.ts +0 -54
- package/dist/lib/hooks/use-hover.d.ts.map +0 -1
- package/dist/lib/hooks/use-responsive.d.ts +0 -44
- package/dist/lib/hooks/use-responsive.d.ts.map +0 -1
- package/dist/lib/hooks/use-wallpaper-tint.d.ts +0 -57
- package/dist/lib/hooks/use-wallpaper-tint.d.ts.map +0 -1
- package/dist/lib/hooks.d.ts +0 -92
- package/dist/lib/hooks.d.ts.map +0 -1
- package/dist/lib/theme/tokens.d.ts +0 -441
- package/dist/lib/theme/tokens.d.ts.map +0 -1
- package/dist/lib/theme-context.d.ts +0 -115
- package/dist/lib/theme-context.d.ts.map +0 -1
- package/dist/lib/types.d.ts +0 -24
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/utils.d.ts +0 -8
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/variants/alert-glass-variants.d.ts +0 -10
- package/dist/lib/variants/alert-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/alert-variants.d.ts +0 -8
- package/dist/lib/variants/alert-variants.d.ts.map +0 -1
- package/dist/lib/variants/avatar-glass-variants.d.ts +0 -12
- package/dist/lib/variants/avatar-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/badge-glass-variants.d.ts +0 -10
- package/dist/lib/variants/badge-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/badge-variants.d.ts +0 -8
- package/dist/lib/variants/badge-variants.d.ts.map +0 -1
- package/dist/lib/variants/button-glass-variants.d.ts +0 -29
- package/dist/lib/variants/button-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/button-variants.d.ts +0 -9
- package/dist/lib/variants/button-variants.d.ts.map +0 -1
- package/dist/lib/variants/dropdown-content-styles.d.ts +0 -102
- package/dist/lib/variants/dropdown-content-styles.d.ts.map +0 -1
- package/dist/lib/variants/dropdown-glass-variants.d.ts +0 -9
- package/dist/lib/variants/dropdown-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/glass-card-variants.d.ts +0 -13
- package/dist/lib/variants/glass-card-variants.d.ts.map +0 -1
- package/dist/lib/variants/index.d.ts +0 -26
- package/dist/lib/variants/index.d.ts.map +0 -1
- package/dist/lib/variants/input-glass-variants.d.ts +0 -9
- package/dist/lib/variants/input-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/insight-card-glass-variants.d.ts +0 -11
- package/dist/lib/variants/insight-card-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/modal-glass-variants.d.ts +0 -9
- package/dist/lib/variants/modal-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/notification-glass-variants.d.ts +0 -9
- package/dist/lib/variants/notification-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/progress-glass-variants.d.ts +0 -10
- package/dist/lib/variants/progress-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/skeleton-glass-variants.d.ts +0 -9
- package/dist/lib/variants/skeleton-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/sparkline-glass-variants.d.ts +0 -10
- package/dist/lib/variants/sparkline-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/stepper-glass-variants.d.ts +0 -40
- package/dist/lib/variants/stepper-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/toggle-glass-variants.d.ts +0 -26
- package/dist/lib/variants/toggle-glass-variants.d.ts.map +0 -1
- package/dist/lib/variants/tooltip-glass-variants.d.ts +0 -9
- package/dist/lib/variants/tooltip-glass-variants.d.ts.map +0 -1
- package/dist/theme-context-DLS2uAgJ.mjs.map +0 -1
- package/dist/theme-context-DmTETrFi.cjs.map +0 -1
- package/dist/themes.d.ts.map +0 -1
- package/dist/trust-score-card-glass-3VBi9soW.cjs.map +0 -1
- package/dist/trust-score-card-glass-EfMB5l5J.mjs.map +0 -1
- package/dist/use-focus-C5kPAKr_.mjs.map +0 -1
- package/dist/use-focus-CswOSq71.cjs.map +0 -1
- package/dist/use-wallpaper-tint-C0kYXNiN.mjs.map +0 -1
- package/dist/use-wallpaper-tint-WtRWtupA.cjs.map +0 -1
- package/dist/utils-B792GPM_.mjs.map +0 -1
- package/dist/utils-DX6rdBol.cjs.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/docs/AI_IMPROVEMENTS_COMPLETE.md +0 -574
- package/docs/API_PATTERNS_COMPARISON.md +0 -419
- package/docs/COMPLIANCE_CHECKLIST.md +0 -307
- package/docs/COMPLIANCE_TESTING.md +0 -436
- package/docs/CSS_VARIABLES_AUDIT.md +0 -306
- package/docs/CSS_VARIABLES_REFACTORING_PLAN.md +0 -330
- package/docs/DROPDOWN_ARCHITECTURE.md +0 -290
- package/docs/METRIC_CARD_API_REDESIGN.md +0 -354
- package/docs/PRIMITIVE_MAPPING.md +0 -404
- package/docs/PUBLISHING.md +0 -593
- package/docs/REGISTRY_SUMMARY.md +0 -96
- package/docs/SECURITY.md +0 -117
- package/docs/api/README.md +0 -723
- package/docs/api/functions/ThemeProvider.md +0 -21
- package/docs/api/functions/cn.md +0 -27
- package/docs/api/functions/getNextTheme.md +0 -21
- package/docs/api/functions/getThemeConfig.md +0 -21
- package/docs/api/functions/useFocus.md +0 -53
- package/docs/api/functions/useHover.md +0 -47
- package/docs/api/functions/useResponsive.md +0 -31
- package/docs/api/functions/useTheme.md +0 -15
- package/docs/api/functions/useWallpaperTint.md +0 -36
- package/docs/api/globals.md +0 -139
- package/docs/api/interfaces/AlertGlassProps.md +0 -131
- package/docs/api/interfaces/AvatarGlassProps.md +0 -114
- package/docs/api/interfaces/BadgeGlassProps.md +0 -125
- package/docs/api/interfaces/ButtonGlassProps.md +0 -186
- package/docs/api/interfaces/CheckboxGlassProps.md +0 -125
- package/docs/api/interfaces/DropdownGlassProps.md +0 -123
- package/docs/api/interfaces/DropdownItem.md +0 -53
- package/docs/api/interfaces/GlassCardProps.md +0 -151
- package/docs/api/interfaces/InputGlassProps.md +0 -169
- package/docs/api/interfaces/NotificationGlassProps.md +0 -67
- package/docs/api/interfaces/ProgressGlassProps.md +0 -49
- package/docs/api/interfaces/SkeletonGlassProps.md +0 -41
- package/docs/api/interfaces/SliderGlassProps.md +0 -107
- package/docs/api/interfaces/TabItem.md +0 -25
- package/docs/api/interfaces/ThemeConfig.md +0 -25
- package/docs/api/interfaces/ThemeContextValue.md +0 -47
- package/docs/api/interfaces/ToggleGlassProps.md +0 -59
- package/docs/api/interfaces/TooltipGlassProps.md +0 -119
- package/docs/api/type-aliases/AlertType.md +0 -11
- package/docs/api/type-aliases/AlertVariant.md +0 -11
- package/docs/api/type-aliases/AvatarSize.md +0 -11
- package/docs/api/type-aliases/AvatarStatus.md +0 -13
- package/docs/api/type-aliases/BadgeSize.md +0 -11
- package/docs/api/type-aliases/BadgeVariant.md +0 -11
- package/docs/api/type-aliases/ButtonGlassSize.md +0 -11
- package/docs/api/type-aliases/ButtonGlassVariant.md +0 -11
- package/docs/api/type-aliases/DropdownAlign.md +0 -11
- package/docs/api/type-aliases/GlowType.md +0 -11
- package/docs/api/type-aliases/InputGlassSize.md +0 -11
- package/docs/api/type-aliases/IntensityType.md +0 -11
- package/docs/api/type-aliases/ModalSize.md +0 -11
- package/docs/api/type-aliases/NotificationType.md +0 -11
- package/docs/api/type-aliases/PaddingType.md +0 -11
- package/docs/api/type-aliases/ProgressGradient.md +0 -11
- package/docs/api/type-aliases/ProgressSize.md +0 -11
- package/docs/api/type-aliases/SkeletonVariant.md +0 -11
- package/docs/api/type-aliases/Theme.md +0 -11
- package/docs/api/type-aliases/ToggleGlassSize.md +0 -11
- package/docs/api/type-aliases/TooltipPosition.md +0 -11
- package/docs/api/variables/AICardGlass.md +0 -11
- package/docs/api/variables/AlertGlass.md +0 -11
- package/docs/api/variables/AvatarGlass.md +0 -11
- package/docs/api/variables/BadgeGlass.md +0 -11
- package/docs/api/variables/BaseProgressGlass.md +0 -11
- package/docs/api/variables/ButtonGlass.md +0 -11
- package/docs/api/variables/CareerStatsGlass.md +0 -11
- package/docs/api/variables/CareerStatsHeaderGlass.md +0 -11
- package/docs/api/variables/CheckboxGlass.md +0 -11
- package/docs/api/variables/CircularMetricGlass.md +0 -22
- package/docs/api/variables/CircularProgressGlass.md +0 -11
- package/docs/api/variables/ComboBoxGlass.md +0 -27
- package/docs/api/variables/ContributionMetricsGlass.md +0 -11
- package/docs/api/variables/DropdownGlass.md +0 -11
- package/docs/api/variables/ExpandableHeaderGlass.md +0 -11
- package/docs/api/variables/FlagAlertGlass.md +0 -11
- package/docs/api/variables/FlagsSectionGlass.md +0 -11
- package/docs/api/variables/FormFieldWrapper.md +0 -44
- package/docs/api/variables/GlassCard.md +0 -11
- package/docs/api/variables/HeaderBrandingGlass.md +0 -11
- package/docs/api/variables/HeaderNavGlass.md +0 -11
- package/docs/api/variables/IconButtonGlass.md +0 -11
- package/docs/api/variables/InputGlass.md +0 -11
- package/docs/api/variables/InteractiveCard.md +0 -45
- package/docs/api/variables/LanguageBarGlass.md +0 -11
- package/docs/api/variables/MetricCardGlass.md +0 -11
- package/docs/api/variables/MetricsGridGlass.md +0 -11
- package/docs/api/variables/ModalGlass.md +0 -73
- package/docs/api/variables/NotificationGlass.md +0 -11
- package/docs/api/variables/PopoverGlass.md +0 -11
- package/docs/api/variables/ProfileAvatarGlass.md +0 -11
- package/docs/api/variables/ProfileHeaderGlass.md +0 -11
- package/docs/api/variables/ProgressGlass.md +0 -11
- package/docs/api/variables/ProjectsListGlass.md +0 -11
- package/docs/api/variables/RainbowProgressGlass.md +0 -11
- package/docs/api/variables/RepositoryCardGlass.md +0 -11
- package/docs/api/variables/RepositoryHeaderGlass.md +0 -11
- package/docs/api/variables/RepositoryMetadataGlass.md +0 -11
- package/docs/api/variables/SearchBoxGlass.md +0 -11
- package/docs/api/variables/SegmentedControlGlass.md +0 -11
- package/docs/api/variables/SkeletonGlass.md +0 -11
- package/docs/api/variables/SliderGlass.md +0 -11
- package/docs/api/variables/SortDropdownGlass.md +0 -11
- package/docs/api/variables/StatItemGlass.md +0 -11
- package/docs/api/variables/StatusIndicatorGlass.md +0 -11
- package/docs/api/variables/THEMES.md +0 -11
- package/docs/api/variables/THEME_CONFIG.md +0 -11
- package/docs/api/variables/TabsGlass.md +0 -52
- package/docs/api/variables/ThemeToggleGlass.md +0 -11
- package/docs/api/variables/ToggleGlass.md +0 -11
- package/docs/api/variables/TooltipGlass.md +0 -11
- package/docs/api/variables/TouchTarget.md +0 -35
- package/docs/api/variables/TrustScoreCardGlass.md +0 -11
- package/docs/api/variables/TrustScoreDisplayGlass.md +0 -11
- package/docs/api/variables/UserInfoGlass.md +0 -11
- package/docs/api/variables/UserStatsLineGlass.md +0 -11
- package/docs/api/variables/YearCardGlass.md +0 -11
- package/docs/api/variables/alertVariants.md +0 -21
- package/docs/api/variables/avatarSizes.md +0 -21
- package/docs/api/variables/badgeVariants.md +0 -21
- package/docs/api/variables/buttonGlassVariants.md +0 -21
- package/docs/api/variables/cardIntensity.md +0 -21
- package/docs/api/variables/dropdownAlign.md +0 -21
- package/docs/api/variables/inputVariants.md +0 -21
- package/docs/api/variables/modalSizes.md +0 -21
- package/docs/api/variables/notificationVariants.md +0 -21
- package/docs/api/variables/progressSizes.md +0 -21
- package/docs/api/variables/shadcnAlertVariants.md +0 -21
- package/docs/api/variables/shadcnBadgeVariants.md +0 -21
- package/docs/api/variables/shadcnButtonVariants.md +0 -21
- package/docs/api/variables/skeletonVariants.md +0 -21
- package/docs/api/variables/statusSizes.md +0 -21
- package/docs/api/variables/toggleSizes.md +0 -21
- package/docs/api/variables/tooltipPositions.md +0 -21
- package/docs/design-system/UI_DESIGN.md +0 -628
- package/docs/technical/DEPENDENCIES.md +0 -291
- package/docs/visual-testing-guide.md +0 -362
|
@@ -1,628 +0,0 @@
|
|
|
1
|
-
# Visual Design System Guidelines v1.0
|
|
2
|
-
|
|
3
|
-
## Glassmorphism Design System for shadcn/ui
|
|
4
|
-
|
|
5
|
-
This document establishes authoritative visual design principles for a premium glassmorphism design
|
|
6
|
-
system built on shadcn/ui, supporting three themes: **Glass Dark**, **Aurora**, and **Light**. Every
|
|
7
|
-
specification is actionable with concrete pixel values, grounded in research from Material Design 3,
|
|
8
|
-
Apple Human Interface Guidelines, IBM Carbon, and industry best practices.
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Foundational principles drive visual harmony
|
|
13
|
-
|
|
14
|
-
The glassmorphism aesthetic demands **more generous spacing**, **stronger contrast safeguards**, and
|
|
15
|
-
**restrained application** compared to conventional design systems. Glass effects work best when
|
|
16
|
-
used sparingly—reserve translucent surfaces for **2-3 focal elements per view** maximum. The core
|
|
17
|
-
visual language relies on **backdrop blur**, **translucent backgrounds**, **subtle borders**, and
|
|
18
|
-
**glow accents** to create depth without traditional shadows.
|
|
19
|
-
|
|
20
|
-
Three mathematical foundations underpin this system: an **8px base grid** for all spacing, a **1.25
|
|
21
|
-
modular scale** for typography, and **OKLCH color space** for perceptually uniform theming. These
|
|
22
|
-
choices ensure visual consistency while enabling the premium, modern aesthetic that defines
|
|
23
|
-
exceptional glassmorphism implementations like Apple's Control Center and Microsoft's Fluent
|
|
24
|
-
Acrylic.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Spacing and layout: the 8px foundation
|
|
29
|
-
|
|
30
|
-
The spacing system uses an **8px base unit** with 4px increments for fine-tuning, matching the
|
|
31
|
-
approach of Material Design 3, IBM Carbon, and Atlassian. This base provides generous breathing room
|
|
32
|
-
essential for glassmorphism—blur effects require surrounding space to appear correctly, and
|
|
33
|
-
translucent surfaces need visual separation to maintain figure/ground relationships.
|
|
34
|
-
|
|
35
|
-
Glassmorphism specifically demands **25-50% more internal padding** than conventional card designs.
|
|
36
|
-
Where a standard card might use 16px padding, glass cards should use 24-32px to achieve the premium
|
|
37
|
-
aesthetic and ensure text readability against variable backgrounds.
|
|
38
|
-
|
|
39
|
-
### Complete spacing token scale
|
|
40
|
-
|
|
41
|
-
| Token | Value | Use Case |
|
|
42
|
-
| --------------- | ----- | ------------------------------------- |
|
|
43
|
-
| `--spacing-0` | 0 | Reset |
|
|
44
|
-
| `--spacing-0-5` | 2px | Hairline borders, micro adjustments |
|
|
45
|
-
| `--spacing-1` | 4px | Icon gaps, minimal spacing |
|
|
46
|
-
| `--spacing-2` | 8px | Base unit, tight component spacing |
|
|
47
|
-
| `--spacing-3` | 12px | Compact component gaps, form elements |
|
|
48
|
-
| `--spacing-4` | 16px | Standard spacing, button padding |
|
|
49
|
-
| `--spacing-5` | 20px | Comfortable gaps |
|
|
50
|
-
| `--spacing-6` | 24px | Glass card padding (default) |
|
|
51
|
-
| `--spacing-7` | 28px | Premium glass spacing |
|
|
52
|
-
| `--spacing-8` | 32px | Section spacing, large gaps |
|
|
53
|
-
| `--spacing-10` | 40px | Major spacing |
|
|
54
|
-
| `--spacing-12` | 48px | Section breaks |
|
|
55
|
-
| `--spacing-16` | 64px | Page-level spacing |
|
|
56
|
-
| `--spacing-20` | 80px | Hero sections |
|
|
57
|
-
| `--spacing-24` | 96px | Maximum component spacing |
|
|
58
|
-
|
|
59
|
-
**Touch targets** must meet the **44×44px minimum** (Apple HIG) or **48×48dp** (Material Design).
|
|
60
|
-
For glassmorphism buttons, use `min-height: 44px` with `padding: 12px 24px` to ensure both
|
|
61
|
-
accessibility compliance and visual balance.
|
|
62
|
-
|
|
63
|
-
**Responsive spacing** uses CSS `clamp()` for fluid scaling:
|
|
64
|
-
|
|
65
|
-
```css
|
|
66
|
-
--spacing-fluid-md: clamp(20px, 1.25rem + 1vw, 32px);
|
|
67
|
-
--spacing-fluid-lg: clamp(32px, 2rem + 2vw, 56px);
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## Typography creates readable hierarchy on glass
|
|
73
|
-
|
|
74
|
-
The type system uses a **1.25 major third modular scale** starting from a 16px base—this ratio
|
|
75
|
-
provides sufficient hierarchy without the dramatic jumps of the golden ratio, making it ideal for UI
|
|
76
|
-
applications. Body text must be **minimum 16px** (iOS auto-zoom prevention, accessibility
|
|
77
|
-
compliance), with **font-weight 500** recommended on glass backgrounds for enhanced readability.
|
|
78
|
-
|
|
79
|
-
**Inter** is the recommended primary typeface for its tall x-height (69%), optical sizing support,
|
|
80
|
-
and screen optimization. For glassmorphism specifically, avoid thin font weights (300 or below)—the
|
|
81
|
-
translucent backgrounds swallow lightweight type.
|
|
82
|
-
|
|
83
|
-
### Typography token scale
|
|
84
|
-
|
|
85
|
-
| Token | Size | Line Height | Letter Spacing | Use Case |
|
|
86
|
-
| ------------------ | ----------------------------------------- | ----------- | -------------- | ---------------------- |
|
|
87
|
-
| `--font-size-xs` | clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem) | 1.33 | 0.025em | Captions, timestamps |
|
|
88
|
-
| `--font-size-sm` | clamp(0.875rem, 0.8rem + 0.375vw, 1rem) | 1.5 | 0 | Secondary text, labels |
|
|
89
|
-
| `--font-size-base` | clamp(1rem, 0.95rem + 0.25vw, 1.125rem) | 1.5 | 0 | Body text |
|
|
90
|
-
| `--font-size-lg` | clamp(1.125rem, 1rem + 0.5vw, 1.25rem) | 1.5 | 0 | Large body, lead text |
|
|
91
|
-
| `--font-size-xl` | clamp(1.25rem, 1.1rem + 0.75vw, 1.5rem) | 1.25 | -0.01em | H5, subheadings |
|
|
92
|
-
| `--font-size-2xl` | clamp(1.5rem, 1.25rem + 1.25vw, 2rem) | 1.25 | -0.015em | H4, card titles |
|
|
93
|
-
| `--font-size-3xl` | clamp(1.875rem, 1.5rem + 1.875vw, 2.5rem) | 1.2 | -0.02em | H3, section headers |
|
|
94
|
-
| `--font-size-4xl` | clamp(2.25rem, 1.75rem + 2.5vw, 3rem) | 1.1 | -0.025em | H2, page titles |
|
|
95
|
-
| `--font-size-5xl` | clamp(3rem, 2rem + 5vw, 4.5rem) | 1 | -0.03em | H1, hero headlines |
|
|
96
|
-
|
|
97
|
-
### Text on glass backgrounds requires enhancement
|
|
98
|
-
|
|
99
|
-
Text readability on translucent surfaces is the critical accessibility challenge for glassmorphism.
|
|
100
|
-
Apply these techniques:
|
|
101
|
-
|
|
102
|
-
**Text shadow for light text on glass:**
|
|
103
|
-
|
|
104
|
-
```css
|
|
105
|
-
--text-shadow-glass: 0 1px 2px rgba(0, 0, 0, 0.4), 0 2px 6px rgba(0, 0, 0, 0.2);
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
**Semi-opaque backing for critical content:**
|
|
109
|
-
|
|
110
|
-
```css
|
|
111
|
-
.glass-text-container {
|
|
112
|
-
background: rgba(0, 0, 0, 0.3);
|
|
113
|
-
padding: 1rem;
|
|
114
|
-
border-radius: 8px;
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
## Color system built on OKLCH
|
|
121
|
-
|
|
122
|
-
**OKLCH** (Oklab Lightness, Chroma, Hue) is the recommended color format for 2024-2025, offering
|
|
123
|
-
perceptual uniformity—equal numerical changes produce equal perceived changes across all hues. This
|
|
124
|
-
eliminates the HSL problem where "50% lightness" appears vastly different between blue and yellow.
|
|
125
|
-
|
|
126
|
-
The color architecture follows a **three-tier token hierarchy**:
|
|
127
|
-
|
|
128
|
-
1. **Primitive tokens**: Raw color values (e.g., `--color-blue-500`)
|
|
129
|
-
2. **Semantic tokens**: Purpose-based references (e.g., `--color-text-primary`)
|
|
130
|
-
3. **Component tokens**: Specific applications (e.g., `--button-primary-bg`)
|
|
131
|
-
|
|
132
|
-
### Glassmorphism-specific color values
|
|
133
|
-
|
|
134
|
-
| Token | Glass Dark | Aurora | Light |
|
|
135
|
-
| ------------- | ------------------------ | ----------------------- | ----------------------- |
|
|
136
|
-
| Background | `#0a0a0f` | `#050510` | `#f8f9fa` |
|
|
137
|
-
| Glass surface | `rgba(255,255,255,0.08)` | `rgba(100,80,200,0.08)` | `rgba(255,255,255,0.7)` |
|
|
138
|
-
| Glass border | `rgba(255,255,255,0.12)` | `rgba(150,100,255,0.2)` | `rgba(0,0,0,0.08)` |
|
|
139
|
-
| Text primary | `#e0e0e0` | `#f0f0ff` | `#1a1a1a` |
|
|
140
|
-
| Glow accent | `rgba(100,150,255,0.3)` | `rgba(150,100,255,0.4)` | `rgba(99,102,241,0.15)` |
|
|
141
|
-
|
|
142
|
-
### Opacity guidelines for glass surfaces
|
|
143
|
-
|
|
144
|
-
| Context | Opacity Range | Notes |
|
|
145
|
-
| ------------------- | ------------- | ----------------------------------- |
|
|
146
|
-
| Decorative glass | 5-10% | Subtle effect, requires strong blur |
|
|
147
|
-
| Standard cards | 15-25% | **Sweet spot** for balance |
|
|
148
|
-
| Text containers | 30-50% | Higher opacity for readability |
|
|
149
|
-
| Navigation/overlays | 40-75% | Maximum legibility required |
|
|
150
|
-
|
|
151
|
-
**Critical rule**: Always test contrast against the **worst-case background**—the darkest or
|
|
152
|
-
lightest area that might appear behind the glass element. Target **4.5:1** for body text, **3:1**
|
|
153
|
-
for large text and UI components.
|
|
154
|
-
|
|
155
|
-
**Dark mode**: Avoid pure black (`#000000`)—use `#121212` or `#0a0a0f` as base surfaces. Elevation
|
|
156
|
-
increases through lighter surface colors, not stronger shadows.
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## Border radius creates cohesive shapes
|
|
161
|
-
|
|
162
|
-
The radius system follows an **exponential progression** that creates natural visual hierarchy.
|
|
163
|
-
Glassmorphism requires **slightly larger radii** than conventional design (add 2-4px) because
|
|
164
|
-
backdrop blur softens perceived edges.
|
|
165
|
-
|
|
166
|
-
### Border radius token scale
|
|
167
|
-
|
|
168
|
-
| Token | Value | Use Case |
|
|
169
|
-
| --------------- | ------ | -------------------------------- |
|
|
170
|
-
| `--radius-none` | 0 | Sharp corners when intentional |
|
|
171
|
-
| `--radius-sm` | 4px | Badges, tags, small chips |
|
|
172
|
-
| `--radius-md` | 8px | Buttons, inputs, tooltips |
|
|
173
|
-
| `--radius-lg` | 12px | Cards, dropdown menus |
|
|
174
|
-
| `--radius-xl` | 16px | Modal dialogs, glass panels |
|
|
175
|
-
| `--radius-2xl` | 24px | Hero cards, feature sections |
|
|
176
|
-
| `--radius-full` | 9999px | Pills, avatars, circular buttons |
|
|
177
|
-
|
|
178
|
-
**Nested element formula**: `inner-radius = outer-radius - padding`
|
|
179
|
-
|
|
180
|
-
```css
|
|
181
|
-
.glass-card {
|
|
182
|
-
--card-padding: 16px;
|
|
183
|
-
--card-radius: 16px;
|
|
184
|
-
--card-inner-radius: calc(var(--card-radius) - var(--card-padding));
|
|
185
|
-
padding: var(--card-padding);
|
|
186
|
-
border-radius: var(--card-radius);
|
|
187
|
-
}
|
|
188
|
-
.glass-card-inner {
|
|
189
|
-
border-radius: var(--card-inner-radius);
|
|
190
|
-
}
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## Shadows and elevation through glow
|
|
196
|
-
|
|
197
|
-
Glassmorphism replaces traditional drop shadows with **glow effects, blur depth, and translucency**
|
|
198
|
-
as primary elevation indicators. Reserve conventional shadows for grounding elements; use glows for
|
|
199
|
-
accent and focus states.
|
|
200
|
-
|
|
201
|
-
### Shadow and glow token scale
|
|
202
|
-
|
|
203
|
-
```css
|
|
204
|
-
/* Standard shadows (layered for realism) */
|
|
205
|
-
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
206
|
-
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
|
|
207
|
-
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
|
|
208
|
-
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
|
|
209
|
-
|
|
210
|
-
/* Glass-specific shadows */
|
|
211
|
-
--shadow-glass: 0 8px 32px rgba(0, 0, 0, 0.12);
|
|
212
|
-
--shadow-glass-lg: 0 16px 48px rgba(0, 0, 0, 0.15), 0 4px 16px rgba(0, 0, 0, 0.1);
|
|
213
|
-
--shadow-glass-inner: inset 0 1px 1px rgba(255, 255, 255, 0.1);
|
|
214
|
-
--shadow-glass-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.15);
|
|
215
|
-
|
|
216
|
-
/* Accent glows */
|
|
217
|
-
--shadow-glow-primary: 0 0 40px rgba(99, 102, 241, 0.4), 0 0 80px rgba(99, 102, 241, 0.2);
|
|
218
|
-
--shadow-glow-secondary: 0 0 40px rgba(168, 85, 247, 0.35), 0 0 80px rgba(168, 85, 247, 0.15);
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
**Elevation levels simplified for glassmorphism:**
|
|
222
|
-
|
|
223
|
-
- **Level 0**: Base surface (no shadow, standard blur)
|
|
224
|
-
- **Level 1**: Floating cards (`--shadow-glass` + blur 12px)
|
|
225
|
-
- **Level 2**: Modals/dialogs (`--shadow-glass-lg` + blur 16-24px)
|
|
226
|
-
- **Level 3**: Priority overlays (strong shadow + maximum blur)
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
|
|
230
|
-
## Glassmorphism implementation specifications
|
|
231
|
-
|
|
232
|
-
### Core CSS properties
|
|
233
|
-
|
|
234
|
-
```css
|
|
235
|
-
.glass-surface {
|
|
236
|
-
background: rgba(255, 255, 255, 0.15);
|
|
237
|
-
backdrop-filter: blur(16px) saturate(180%);
|
|
238
|
-
-webkit-backdrop-filter: blur(16px) saturate(180%);
|
|
239
|
-
border: 1px solid rgba(255, 255, 255, 0.18);
|
|
240
|
-
border-top-color: rgba(255, 255, 255, 0.35); /* Top edge shine */
|
|
241
|
-
border-radius: 16px;
|
|
242
|
-
box-shadow:
|
|
243
|
-
0 8px 32px rgba(0, 0, 0, 0.12),
|
|
244
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.15);
|
|
245
|
-
}
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
### Blur value recommendations
|
|
249
|
-
|
|
250
|
-
Blur values follow 8px increments for consistent progression:
|
|
251
|
-
|
|
252
|
-
| Token | Value | Use Case | Performance |
|
|
253
|
-
| ------------ | ----- | -------------------------- | ------------- |
|
|
254
|
-
| `--blur-sm` | 8px | Subtle glass effect | Good |
|
|
255
|
-
| `--blur-md` | 16px | Standard cards/panels | Moderate |
|
|
256
|
-
| `--blur-lg` | 24px | Overlays/modals | Moderate |
|
|
257
|
-
| `--blur-xl` | 32px | Heavy background treatment | Use sparingly |
|
|
258
|
-
|
|
259
|
-
**Note:** These tokens are defined in `src/styles/tokens/primitives.css` using Tailwind CSS 4 `@theme` directive.
|
|
260
|
-
|
|
261
|
-
### Border specifications
|
|
262
|
-
|
|
263
|
-
| Token | Value |
|
|
264
|
-
| -------------------------- | ------------------------------- |
|
|
265
|
-
| `--glass-border-width` | 1px |
|
|
266
|
-
| `--glass-border-opacity` | 0.18 (18% white) |
|
|
267
|
-
| `--glass-border-highlight` | 0.35 (35% white, top edge only) |
|
|
268
|
-
|
|
269
|
-
**Gradient border implementation:**
|
|
270
|
-
|
|
271
|
-
```css
|
|
272
|
-
border-image: linear-gradient(135deg, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.1)) 1;
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
### When to use glow effects
|
|
276
|
-
|
|
277
|
-
Use glows **sparingly** for:
|
|
278
|
-
|
|
279
|
-
- Active/focused states on interactive elements
|
|
280
|
-
- Primary CTA emphasis
|
|
281
|
-
- Brand highlight moments
|
|
282
|
-
- Dark mode visibility enhancement
|
|
283
|
-
|
|
284
|
-
**Avoid** glow on: every element, decorative purposes, small components.
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
## Component design specifications
|
|
289
|
-
|
|
290
|
-
### Button
|
|
291
|
-
|
|
292
|
-
| Property | Small | Default | Large |
|
|
293
|
-
| ------------- | ----- | ------- | ----- |
|
|
294
|
-
| Height | 32px | 40px | 48px |
|
|
295
|
-
| Padding (H) | 12px | 16px | 24px |
|
|
296
|
-
| Padding (V) | 6px | 10px | 12px |
|
|
297
|
-
| Border Radius | 8px | 8px | 12px |
|
|
298
|
-
| Font Size | 14px | 14px | 16px |
|
|
299
|
-
| Font Weight | 500 | 500 | 500 |
|
|
300
|
-
| Min Width | 64px | 80px | 96px |
|
|
301
|
-
|
|
302
|
-
**Primary button**: Solid accent fill, no glass effect **Secondary button**: Glass surface with
|
|
303
|
-
`rgba(255,255,255,0.1)` background **Ghost button**: Transparent with 1px border, visible on solid
|
|
304
|
-
backgrounds only
|
|
305
|
-
|
|
306
|
-
### Input
|
|
307
|
-
|
|
308
|
-
| Property | Value |
|
|
309
|
-
| ------------- | ---------------------------------------------------------- |
|
|
310
|
-
| Height | 40px (44px on mobile) |
|
|
311
|
-
| Padding | 12px 16px |
|
|
312
|
-
| Border Radius | 8px |
|
|
313
|
-
| Border | 1px solid `--glass-border-color` |
|
|
314
|
-
| Font Size | 16px (prevents iOS zoom) |
|
|
315
|
-
| Background | `rgba(0,0,0,0.2)` (dark) / `rgba(255,255,255,0.8)` (light) |
|
|
316
|
-
|
|
317
|
-
**Critical**: Form inputs should use **higher opacity backgrounds** than decorative
|
|
318
|
-
glass—readability is paramount.
|
|
319
|
-
|
|
320
|
-
### Card
|
|
321
|
-
|
|
322
|
-
| Property | Compact | Default | Featured |
|
|
323
|
-
| ------------- | ---------------- | ---------------- | ---------------- |
|
|
324
|
-
| Padding | 16px | 24px | 32px |
|
|
325
|
-
| Border Radius | 12px | 16px | 20px |
|
|
326
|
-
| Background | 15% opacity | 20% opacity | 20% opacity |
|
|
327
|
-
| Blur | 12px | 16px | 16px |
|
|
328
|
-
| Border | 1px, 15% opacity | 1px, 18% opacity | 1px, 20% opacity |
|
|
329
|
-
|
|
330
|
-
### Modal/Dialog
|
|
331
|
-
|
|
332
|
-
| Property | Value |
|
|
333
|
-
| ------------- | -------------------------------------------- |
|
|
334
|
-
| Padding | 24px (body), 20px (header/footer) |
|
|
335
|
-
| Border Radius | 20px |
|
|
336
|
-
| Max Width | 480px (small), 640px (medium), 800px (large) |
|
|
337
|
-
| Background | `rgba(255,255,255,0.25)` |
|
|
338
|
-
| Blur | 24px |
|
|
339
|
-
| Scrim | `rgba(0,0,0,0.5)` |
|
|
340
|
-
|
|
341
|
-
### Dropdown
|
|
342
|
-
|
|
343
|
-
| Property | Value |
|
|
344
|
-
| ------------------- | ----------------------- |
|
|
345
|
-
| Padding (container) | 8px |
|
|
346
|
-
| Padding (item) | 10px 16px |
|
|
347
|
-
| Border Radius | 12px |
|
|
348
|
-
| Background | `rgba(255,255,255,0.2)` |
|
|
349
|
-
| Blur | 16px |
|
|
350
|
-
| Min Width | 180px |
|
|
351
|
-
|
|
352
|
-
### Badge
|
|
353
|
-
|
|
354
|
-
| Property | Value |
|
|
355
|
-
| ------------- | ---------------------------- |
|
|
356
|
-
| Height | 20px-24px |
|
|
357
|
-
| Padding | 2px 8px |
|
|
358
|
-
| Border Radius | 4px (default), 9999px (pill) |
|
|
359
|
-
| Font Size | 12px |
|
|
360
|
-
| Font Weight | 500 |
|
|
361
|
-
|
|
362
|
-
**Note**: Glass effects don't work on small elements—use solid or near-solid backgrounds for badges.
|
|
363
|
-
|
|
364
|
-
### Avatar
|
|
365
|
-
|
|
366
|
-
| Size | Dimensions | Border Radius |
|
|
367
|
-
| ---- | ---------- | ------------- |
|
|
368
|
-
| xs | 24px | 9999px |
|
|
369
|
-
| sm | 32px | 9999px |
|
|
370
|
-
| md | 40px | 9999px |
|
|
371
|
-
| lg | 56px | 9999px |
|
|
372
|
-
| xl | 80px | 9999px |
|
|
373
|
-
|
|
374
|
-
### Tooltip
|
|
375
|
-
|
|
376
|
-
| Property | Value |
|
|
377
|
-
| ------------- | ------------------------------------------ |
|
|
378
|
-
| Padding | 8px 12px |
|
|
379
|
-
| Border Radius | 6px |
|
|
380
|
-
| Font Size | 12px-14px |
|
|
381
|
-
| Background | Solid `#1a1a2e` (dark) / `#ffffff` (light) |
|
|
382
|
-
| Max Width | 240px |
|
|
383
|
-
|
|
384
|
-
**Critical**: Tooltips should use **solid backgrounds**, not glass—they need maximum readability.
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
## Accessibility requirements
|
|
389
|
-
|
|
390
|
-
### Contrast ratios
|
|
391
|
-
|
|
392
|
-
| Element | WCAG AA (Required) | WCAG AAA (Enhanced) |
|
|
393
|
-
| ------------------------------- | ------------------ | ------------------- |
|
|
394
|
-
| Normal text (<18pt) | **4.5:1** | 7:1 |
|
|
395
|
-
| Large text (≥18pt or 14pt bold) | **3:1** | 4.5:1 |
|
|
396
|
-
| UI components | **3:1** | N/A |
|
|
397
|
-
|
|
398
|
-
**Testing on glass**: Always test against worst-case background scenarios—check both lightest and
|
|
399
|
-
darkest possible backgrounds that might show through.
|
|
400
|
-
|
|
401
|
-
### Focus states
|
|
402
|
-
|
|
403
|
-
```css
|
|
404
|
-
.interactive:focus-visible {
|
|
405
|
-
outline: none;
|
|
406
|
-
box-shadow:
|
|
407
|
-
0 0 0 2px rgba(255, 255, 255, 0.9),
|
|
408
|
-
/* Inner ring */ 0 0 0 4px rgba(0, 0, 0, 0.8); /* Outer ring */
|
|
409
|
-
}
|
|
410
|
-
```
|
|
411
|
-
|
|
412
|
-
The double-outline technique ensures focus visibility on any background—critical for glass
|
|
413
|
-
components.
|
|
414
|
-
|
|
415
|
-
### Touch targets
|
|
416
|
-
|
|
417
|
-
Minimum **44×44px** (Apple) or **48×48dp** (Material Design). Visual element can be smaller if tap
|
|
418
|
-
area meets requirements.
|
|
419
|
-
|
|
420
|
-
### Motion and animation
|
|
421
|
-
|
|
422
|
-
```css
|
|
423
|
-
@media (prefers-reduced-motion: reduce) {
|
|
424
|
-
*,
|
|
425
|
-
*::before,
|
|
426
|
-
*::after {
|
|
427
|
-
animation-duration: 0.01ms !important;
|
|
428
|
-
animation-iteration-count: 1 !important;
|
|
429
|
-
transition-duration: 0.01ms !important;
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
```
|
|
433
|
-
|
|
434
|
-
**Safe animation properties**: Only animate `transform` and `opacity`—these are GPU-accelerated and
|
|
435
|
-
performant.
|
|
436
|
-
|
|
437
|
-
**Never exceed**: 3 flashes per second (seizure prevention).
|
|
438
|
-
|
|
439
|
-
---
|
|
440
|
-
|
|
441
|
-
## Performance optimization
|
|
442
|
-
|
|
443
|
-
### backdrop-filter impact
|
|
444
|
-
|
|
445
|
-
- GPU-intensive; limit to 2-3 elements per view
|
|
446
|
-
- Reduce blur on mobile: `blur(8px)` instead of `blur(16px)`
|
|
447
|
-
- Use `transform: translateZ(0)` for hardware acceleration
|
|
448
|
-
- Never animate blur values—causes severe jank
|
|
449
|
-
|
|
450
|
-
### Fallback for older browsers
|
|
451
|
-
|
|
452
|
-
```css
|
|
453
|
-
.glass-panel {
|
|
454
|
-
background: rgba(0, 0, 0, 0.85); /* Solid fallback */
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
@supports (backdrop-filter: blur(10px)) {
|
|
458
|
-
.glass-panel {
|
|
459
|
-
background: rgba(0, 0, 0, 0.2);
|
|
460
|
-
backdrop-filter: blur(16px);
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
```
|
|
464
|
-
|
|
465
|
-
### Shadow animation technique
|
|
466
|
-
|
|
467
|
-
Never animate `box-shadow` directly—it triggers paint on every frame. Instead:
|
|
468
|
-
|
|
469
|
-
```css
|
|
470
|
-
.card {
|
|
471
|
-
position: relative;
|
|
472
|
-
}
|
|
473
|
-
.card::after {
|
|
474
|
-
content: '';
|
|
475
|
-
position: absolute;
|
|
476
|
-
inset: 0;
|
|
477
|
-
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.2);
|
|
478
|
-
opacity: 0;
|
|
479
|
-
transition: opacity 0.3s;
|
|
480
|
-
border-radius: inherit;
|
|
481
|
-
z-index: -1;
|
|
482
|
-
}
|
|
483
|
-
.card:hover::after {
|
|
484
|
-
opacity: 1;
|
|
485
|
-
}
|
|
486
|
-
```
|
|
487
|
-
|
|
488
|
-
---
|
|
489
|
-
|
|
490
|
-
## Antipatterns checklist
|
|
491
|
-
|
|
492
|
-
### Layout mistakes
|
|
493
|
-
|
|
494
|
-
- ❌ Inconsistent spacing throughout UI—use spacing tokens
|
|
495
|
-
- ❌ Spacing too tight (cramped)—glass needs breathing room
|
|
496
|
-
- ❌ Breaking the grid—align all elements consistently
|
|
497
|
-
- ❌ Ignoring vertical rhythm—base all spacing on 8px unit
|
|
498
|
-
|
|
499
|
-
### Typography mistakes
|
|
500
|
-
|
|
501
|
-
- ❌ More than 6-8 font sizes—limit to modular scale
|
|
502
|
-
- ❌ Text contrast below 4.5:1—test against worst-case backgrounds
|
|
503
|
-
- ❌ Centered long-form text—left-align body content
|
|
504
|
-
- ❌ Line length over 75 characters—use max-width on containers
|
|
505
|
-
|
|
506
|
-
### Color mistakes
|
|
507
|
-
|
|
508
|
-
- ❌ Rainbow interfaces—limit to 2 primary + 2 accent colors
|
|
509
|
-
- ❌ Color alone conveying information—always pair with icons/text
|
|
510
|
-
- ❌ Pure black (#000) on pure white (#fff)—use off-black/off-white
|
|
511
|
-
- ❌ Insufficient contrast on glass—increase opacity or add overlays
|
|
512
|
-
|
|
513
|
-
### Glassmorphism-specific mistakes
|
|
514
|
-
|
|
515
|
-
- ❌ **Too many glass layers**—maximum 2-3 per view
|
|
516
|
-
- ❌ **Glass on glass on glass**—use solid backgrounds between layers
|
|
517
|
-
- ❌ **Glow effects everywhere**—reserve for focus/active states only
|
|
518
|
-
- ❌ **Glass on small elements**—badges/chips don't work with blur
|
|
519
|
-
- ❌ **No fallback for backdrop-filter**—always provide @supports fallback
|
|
520
|
-
- ❌ **Blur over 24px on mobile**—reduce for performance
|
|
521
|
-
- ❌ **Text without shadow on glass**—add text-shadow for readability
|
|
522
|
-
- ❌ **Inconsistent blur values**—use defined blur tokens
|
|
523
|
-
|
|
524
|
-
### Accessibility mistakes
|
|
525
|
-
|
|
526
|
-
- ❌ Touch targets under 44px—ensure minimum tap area
|
|
527
|
-
- ❌ Missing focus states—provide visible keyboard focus
|
|
528
|
-
- ❌ Auto-playing animations—respect prefers-reduced-motion
|
|
529
|
-
- ❌ No high-contrast fallback—support system accessibility modes
|
|
530
|
-
|
|
531
|
-
---
|
|
532
|
-
|
|
533
|
-
## Complete design token reference
|
|
534
|
-
|
|
535
|
-
```css
|
|
536
|
-
:root {
|
|
537
|
-
/* ========== SPACING ========== */
|
|
538
|
-
--spacing-0: 0;
|
|
539
|
-
--spacing-0-5: 2px;
|
|
540
|
-
--spacing-1: 4px;
|
|
541
|
-
--spacing-2: 8px;
|
|
542
|
-
--spacing-3: 12px;
|
|
543
|
-
--spacing-4: 16px;
|
|
544
|
-
--spacing-5: 20px;
|
|
545
|
-
--spacing-6: 24px;
|
|
546
|
-
--spacing-7: 28px;
|
|
547
|
-
--spacing-8: 32px;
|
|
548
|
-
--spacing-10: 40px;
|
|
549
|
-
--spacing-12: 48px;
|
|
550
|
-
--spacing-16: 64px;
|
|
551
|
-
--spacing-20: 80px;
|
|
552
|
-
--spacing-24: 96px;
|
|
553
|
-
|
|
554
|
-
/* ========== TYPOGRAPHY ========== */
|
|
555
|
-
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
556
|
-
--font-mono: 'JetBrains Mono', 'Fira Code', Consolas, monospace;
|
|
557
|
-
|
|
558
|
-
--font-size-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
|
|
559
|
-
--font-size-sm: clamp(0.875rem, 0.8rem + 0.375vw, 1rem);
|
|
560
|
-
--font-size-base: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
|
|
561
|
-
--font-size-lg: clamp(1.125rem, 1rem + 0.5vw, 1.25rem);
|
|
562
|
-
--font-size-xl: clamp(1.25rem, 1.1rem + 0.75vw, 1.5rem);
|
|
563
|
-
--font-size-2xl: clamp(1.5rem, 1.25rem + 1.25vw, 2rem);
|
|
564
|
-
--font-size-3xl: clamp(1.875rem, 1.5rem + 1.875vw, 2.5rem);
|
|
565
|
-
--font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
|
|
566
|
-
--font-size-5xl: clamp(3rem, 2rem + 5vw, 4.5rem);
|
|
567
|
-
|
|
568
|
-
--line-height-tight: 1.1;
|
|
569
|
-
--line-height-snug: 1.25;
|
|
570
|
-
--line-height-normal: 1.5;
|
|
571
|
-
--line-height-relaxed: 1.625;
|
|
572
|
-
|
|
573
|
-
--font-weight-normal: 400;
|
|
574
|
-
--font-weight-medium: 500;
|
|
575
|
-
--font-weight-semibold: 600;
|
|
576
|
-
--font-weight-bold: 700;
|
|
577
|
-
|
|
578
|
-
/* ========== BORDER RADIUS ========== */
|
|
579
|
-
--radius-none: 0;
|
|
580
|
-
--radius-sm: 4px;
|
|
581
|
-
--radius-md: 8px;
|
|
582
|
-
--radius-lg: 12px;
|
|
583
|
-
--radius-xl: 16px;
|
|
584
|
-
--radius-2xl: 24px;
|
|
585
|
-
--radius-full: 9999px;
|
|
586
|
-
|
|
587
|
-
/* ========== SHADOWS ========== */
|
|
588
|
-
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
589
|
-
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
|
|
590
|
-
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
|
|
591
|
-
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
|
|
592
|
-
--shadow-glass: 0 8px 32px rgba(0, 0, 0, 0.12);
|
|
593
|
-
--shadow-glass-lg: 0 16px 48px rgba(0, 0, 0, 0.15), 0 4px 16px rgba(0, 0, 0, 0.1);
|
|
594
|
-
--shadow-glow-primary: 0 0 40px rgba(99, 102, 241, 0.4), 0 0 80px rgba(99, 102, 241, 0.2);
|
|
595
|
-
--shadow-glow-secondary: 0 0 40px rgba(168, 85, 247, 0.35), 0 0 80px rgba(168, 85, 247, 0.15);
|
|
596
|
-
|
|
597
|
-
/* ========== GLASSMORPHISM ========== */
|
|
598
|
-
--blur-sm: 8px; /* Subtle glass effect */
|
|
599
|
-
--blur-md: 16px; /* Standard cards/panels */
|
|
600
|
-
--blur-lg: 24px; /* Overlays/modals */
|
|
601
|
-
--blur-xl: 32px; /* Heavy background treatment */
|
|
602
|
-
--glass-opacity-surface: 0.2;
|
|
603
|
-
--glass-opacity-overlay: 0.4;
|
|
604
|
-
--glass-border-width: 1px;
|
|
605
|
-
--glass-border-opacity: 0.18;
|
|
606
|
-
--glass-saturation: 1.8;
|
|
607
|
-
|
|
608
|
-
/* ========== TEXT SHADOWS ========== */
|
|
609
|
-
--text-shadow-glass: 0 1px 2px rgba(0, 0, 0, 0.4), 0 2px 6px rgba(0, 0, 0, 0.2);
|
|
610
|
-
}
|
|
611
|
-
```
|
|
612
|
-
|
|
613
|
-
---
|
|
614
|
-
|
|
615
|
-
## Conclusion
|
|
616
|
-
|
|
617
|
-
This design system prioritizes **restraint and contrast** over visual excess. Glassmorphism achieves
|
|
618
|
-
its premium aesthetic through selective application—translucent surfaces work as focal points, not
|
|
619
|
-
ubiquitous backgrounds. The 8px spacing grid, 1.25 type scale, and OKLCH color foundation provide
|
|
620
|
-
mathematical consistency, while the accessibility-first approach ensures the design works for all
|
|
621
|
-
users.
|
|
622
|
-
|
|
623
|
-
The key differentiator between amateur and professional glassmorphism lies in three principles:
|
|
624
|
-
**generous spacing** that gives blur effects room to breathe, **sufficient contrast** that maintains
|
|
625
|
-
readability regardless of background, and **performance consciousness** that limits blur to
|
|
626
|
-
essential elements. Apply glass effects to 2-3 key surfaces per view, ensure 4.5:1 text contrast,
|
|
627
|
-
and always provide fallbacks—these rules transform glassmorphism from a trendy gimmick into a
|
|
628
|
-
sustainable design language.
|