shadcn-glass-ui 1.0.10 → 2.0.0
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 +259 -16
- package/README.md +248 -28
- package/context7.json +58 -0
- package/dist/cli/index.cjs +470 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.ts +18 -0
- package/dist/cli/index.js +469 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/components.cjs +4 -4
- package/dist/components.d.ts +153 -22
- package/dist/components.js +2 -2
- package/dist/hooks.cjs +2 -2
- package/dist/index.cjs +872 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -2390
- package/dist/index.js +844 -3
- package/dist/index.js.map +1 -1
- package/dist/r/ai-card-glass.json +5 -12
- package/dist/r/avatar-glass.json +5 -15
- package/dist/r/circular-metric-glass.json +5 -11
- package/dist/r/circular-progress-glass.json +5 -12
- package/dist/r/combobox-glass.json +5 -13
- package/dist/r/flag-alert-glass.json +5 -11
- package/dist/r/flags-section-glass.json +5 -12
- package/dist/r/insight-card-glass.json +17 -0
- package/dist/r/interactive-card.json +5 -12
- package/dist/r/language-bar-glass.json +5 -11
- package/dist/r/metric-card-glass.json +6 -13
- package/dist/r/metrics-grid-glass.json +5 -11
- package/dist/r/modal-glass.json +5 -15
- package/dist/r/popover-glass.json +1 -1
- package/dist/r/progress-glass.json +5 -13
- package/dist/r/registry.json +20 -2
- package/dist/r/segmented-control-glass.json +5 -11
- package/dist/r/sparkline-glass.json +17 -0
- package/dist/r/stepper-glass.json +33 -0
- package/dist/r/tabs-glass.json +4 -9
- package/dist/r/trust-score-card-glass.json +5 -12
- package/dist/r/year-card-glass.json +5 -13
- package/dist/shadcn-glass-ui.css +1 -1
- package/dist/{theme-context-XtasSxRT.cjs → theme-context-CVW50BKW.cjs} +2 -2
- package/dist/{theme-context-XtasSxRT.cjs.map → theme-context-CVW50BKW.cjs.map} +1 -1
- package/dist/themes.cjs +1 -1
- package/dist/trust-score-card-glass-BcZbul0P.js +26895 -0
- package/dist/trust-score-card-glass-BcZbul0P.js.map +1 -0
- package/dist/trust-score-card-glass-r3qM09Jp.cjs +27689 -0
- package/dist/trust-score-card-glass-r3qM09Jp.cjs.map +1 -0
- package/dist/{use-focus-BbpE2qGq.cjs → use-focus-ZE8ozmZE.cjs} +2 -2
- package/dist/{use-focus-BbpE2qGq.cjs.map → use-focus-ZE8ozmZE.cjs.map} +1 -1
- package/dist/{use-wallpaper-tint-CIqtoETa.cjs → use-wallpaper-tint-BuS80tbN.cjs} +2 -2
- package/dist/{use-wallpaper-tint-CIqtoETa.cjs.map → use-wallpaper-tint-BuS80tbN.cjs.map} +1 -1
- package/dist/{utils-CGCOTvxT.js → utils-CcyeqpKQ.js} +1 -1
- package/dist/{utils-CGCOTvxT.js.map → utils-CcyeqpKQ.js.map} +1 -1
- package/dist/{utils-CriE74ig.cjs → utils-DLXayspX.cjs} +2 -2
- package/dist/{utils-CriE74ig.cjs.map → utils-DLXayspX.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +1 -1
- package/docs/AI_IMPROVEMENTS_COMPLETE.md +574 -0
- package/docs/AI_USAGE.md +1328 -0
- package/docs/API_PATTERNS_COMPARISON.md +418 -0
- package/docs/BEST_PRACTICES.md +800 -0
- package/docs/COMPLIANCE_CHECKLIST.md +307 -0
- package/docs/COMPLIANCE_TESTING.md +436 -0
- package/docs/COMPONENTS_CATALOG.md +1076 -0
- package/docs/CSS_VARIABLES_AUDIT.md +306 -0
- package/docs/CSS_VARIABLES_REFACTORING_PLAN.md +330 -0
- package/docs/EXPORTS_MAP.json +875 -0
- package/docs/EXPORTS_STRUCTURE.md +729 -0
- package/docs/GETTING_STARTED.md +655 -0
- package/docs/METRIC_CARD_API_REDESIGN.md +354 -0
- package/docs/PRIMITIVE_MAPPING.md +404 -0
- package/docs/PUBLISHING.md +593 -0
- package/docs/REGISTRY_SUMMARY.md +96 -0
- package/docs/REGISTRY_USAGE.md +339 -0
- package/docs/SECURITY.md +117 -0
- package/docs/THEME_CREATION_GUIDE.md +455 -0
- package/docs/TOKEN_ARCHITECTURE.md +365 -0
- package/docs/announcements/v1.0.5-devto.md +363 -0
- package/docs/announcements/v1.0.5-reddit.md +115 -0
- package/docs/announcements/v1.0.5-twitter.md +70 -0
- package/docs/api/README.md +725 -0
- package/docs/api/functions/ThemeProvider.md +21 -0
- package/docs/api/functions/cn.md +27 -0
- package/docs/api/functions/getNextTheme.md +21 -0
- package/docs/api/functions/getThemeConfig.md +21 -0
- package/docs/api/functions/useFocus.md +53 -0
- package/docs/api/functions/useHover.md +47 -0
- package/docs/api/functions/useResponsive.md +31 -0
- package/docs/api/functions/useTheme.md +15 -0
- package/docs/api/functions/useWallpaperTint.md +36 -0
- package/docs/api/globals.md +139 -0
- package/docs/api/interfaces/AlertGlassProps.md +131 -0
- package/docs/api/interfaces/AvatarGlassProps.md +114 -0
- package/docs/api/interfaces/BadgeGlassProps.md +118 -0
- package/docs/api/interfaces/ButtonGlassProps.md +179 -0
- package/docs/api/interfaces/CheckboxGlassProps.md +125 -0
- package/docs/api/interfaces/DropdownGlassProps.md +123 -0
- package/docs/api/interfaces/DropdownItem.md +53 -0
- package/docs/api/interfaces/GlassCardProps.md +151 -0
- package/docs/api/interfaces/InputGlassProps.md +169 -0
- package/docs/api/interfaces/NotificationGlassProps.md +67 -0
- package/docs/api/interfaces/ProgressGlassProps.md +49 -0
- package/docs/api/interfaces/SkeletonGlassProps.md +41 -0
- package/docs/api/interfaces/SliderGlassProps.md +107 -0
- package/docs/api/interfaces/TabItem.md +25 -0
- package/docs/api/interfaces/ThemeConfig.md +25 -0
- package/docs/api/interfaces/ThemeContextValue.md +47 -0
- package/docs/api/interfaces/ToggleGlassProps.md +59 -0
- package/docs/api/interfaces/TooltipGlassProps.md +119 -0
- package/docs/api/type-aliases/AlertType.md +11 -0
- package/docs/api/type-aliases/AlertVariant.md +11 -0
- package/docs/api/type-aliases/AvatarSize.md +11 -0
- package/docs/api/type-aliases/AvatarStatus.md +13 -0
- package/docs/api/type-aliases/BadgeSize.md +11 -0
- package/docs/api/type-aliases/BadgeVariant.md +11 -0
- package/docs/api/type-aliases/ButtonGlassSize.md +11 -0
- package/docs/api/type-aliases/ButtonGlassVariant.md +11 -0
- package/docs/api/type-aliases/DropdownAlign.md +11 -0
- package/docs/api/type-aliases/GlowType.md +11 -0
- package/docs/api/type-aliases/InputGlassSize.md +11 -0
- package/docs/api/type-aliases/IntensityType.md +11 -0
- package/docs/api/type-aliases/ModalSize.md +11 -0
- package/docs/api/type-aliases/NotificationType.md +11 -0
- package/docs/api/type-aliases/PaddingType.md +11 -0
- package/docs/api/type-aliases/ProgressGradient.md +11 -0
- package/docs/api/type-aliases/ProgressSize.md +11 -0
- package/docs/api/type-aliases/SkeletonVariant.md +11 -0
- package/docs/api/type-aliases/Theme.md +11 -0
- package/docs/api/type-aliases/ToggleGlassSize.md +11 -0
- package/docs/api/type-aliases/TooltipPosition.md +11 -0
- package/docs/api/variables/AICardGlass.md +11 -0
- package/docs/api/variables/AlertGlass.md +11 -0
- package/docs/api/variables/AvatarGlass.md +11 -0
- package/docs/api/variables/BadgeGlass.md +11 -0
- package/docs/api/variables/BaseProgressGlass.md +11 -0
- package/docs/api/variables/ButtonGlass.md +11 -0
- package/docs/api/variables/CareerStatsGlass.md +11 -0
- package/docs/api/variables/CareerStatsHeaderGlass.md +11 -0
- package/docs/api/variables/CheckboxGlass.md +11 -0
- package/docs/api/variables/CircularMetricGlass.md +22 -0
- package/docs/api/variables/CircularProgressGlass.md +11 -0
- package/docs/api/variables/ComboBoxGlass.md +27 -0
- package/docs/api/variables/ContributionMetricsGlass.md +11 -0
- package/docs/api/variables/DropdownGlass.md +11 -0
- package/docs/api/variables/ExpandableHeaderGlass.md +11 -0
- package/docs/api/variables/FlagAlertGlass.md +11 -0
- package/docs/api/variables/FlagsSectionGlass.md +11 -0
- package/docs/api/variables/FormFieldWrapper.md +44 -0
- package/docs/api/variables/GlassCard.md +11 -0
- package/docs/api/variables/HeaderBrandingGlass.md +11 -0
- package/docs/api/variables/HeaderNavGlass.md +11 -0
- package/docs/api/variables/IconButtonGlass.md +11 -0
- package/docs/api/variables/InputGlass.md +11 -0
- package/docs/api/variables/InteractiveCard.md +45 -0
- package/docs/api/variables/LanguageBarGlass.md +11 -0
- package/docs/api/variables/MetricCardGlass.md +11 -0
- package/docs/api/variables/MetricsGridGlass.md +11 -0
- package/docs/api/variables/ModalGlass.md +72 -0
- package/docs/api/variables/NotificationGlass.md +11 -0
- package/docs/api/variables/PopoverGlass.md +11 -0
- package/docs/api/variables/ProfileAvatarGlass.md +11 -0
- package/docs/api/variables/ProfileHeaderGlass.md +11 -0
- package/docs/api/variables/ProgressGlass.md +11 -0
- package/docs/api/variables/ProjectsListGlass.md +11 -0
- package/docs/api/variables/RainbowProgressGlass.md +11 -0
- package/docs/api/variables/RepositoryCardGlass.md +11 -0
- package/docs/api/variables/RepositoryHeaderGlass.md +11 -0
- package/docs/api/variables/RepositoryMetadataGlass.md +11 -0
- package/docs/api/variables/SearchBoxGlass.md +11 -0
- package/docs/api/variables/SegmentedControlGlass.md +11 -0
- package/docs/api/variables/SkeletonGlass.md +11 -0
- package/docs/api/variables/SliderGlass.md +11 -0
- package/docs/api/variables/SortDropdownGlass.md +11 -0
- package/docs/api/variables/StatItemGlass.md +11 -0
- package/docs/api/variables/StatusIndicatorGlass.md +11 -0
- package/docs/api/variables/THEMES.md +11 -0
- package/docs/api/variables/THEME_CONFIG.md +11 -0
- package/docs/api/variables/TabsGlass.md +52 -0
- package/docs/api/variables/ThemeToggleGlass.md +11 -0
- package/docs/api/variables/ToggleGlass.md +11 -0
- package/docs/api/variables/TooltipGlass.md +11 -0
- package/docs/api/variables/TouchTarget.md +35 -0
- package/docs/api/variables/TrustScoreCardGlass.md +11 -0
- package/docs/api/variables/TrustScoreDisplayGlass.md +11 -0
- package/docs/api/variables/UserInfoGlass.md +11 -0
- package/docs/api/variables/UserStatsLineGlass.md +11 -0
- package/docs/api/variables/YearCardGlass.md +11 -0
- package/docs/api/variables/alertVariants.md +21 -0
- package/docs/api/variables/avatarSizes.md +21 -0
- package/docs/api/variables/badgeVariants.md +21 -0
- package/docs/api/variables/buttonGlassVariants.md +21 -0
- package/docs/api/variables/cardIntensity.md +21 -0
- package/docs/api/variables/dropdownAlign.md +21 -0
- package/docs/api/variables/inputVariants.md +21 -0
- package/docs/api/variables/modalSizes.md +21 -0
- package/docs/api/variables/notificationVariants.md +21 -0
- package/docs/api/variables/progressSizes.md +21 -0
- package/docs/api/variables/shadcnAlertVariants.md +21 -0
- package/docs/api/variables/shadcnBadgeVariants.md +21 -0
- package/docs/api/variables/shadcnButtonVariants.md +21 -0
- package/docs/api/variables/skeletonVariants.md +21 -0
- package/docs/api/variables/statusSizes.md +21 -0
- package/docs/api/variables/toggleSizes.md +21 -0
- package/docs/api/variables/tooltipPositions.md +21 -0
- package/docs/design-system/UI_DESIGN.md +628 -0
- package/docs/migration/CSS_VARIABLES_MIGRATION_2.0.md +325 -0
- package/docs/migration/modal-glass-compound-api.md +458 -0
- package/docs/migration/select-to-combobox.md +386 -0
- package/docs/migration/tabs-glass-compound-api.md +579 -0
- package/docs/technical/DEPENDENCIES.md +291 -0
- package/docs/visual-testing-guide.md +324 -0
- package/package.json +16 -3
- package/dist/trust-score-card-glass-CNcQveNY.cjs +0 -8231
- package/dist/trust-score-card-glass-CNcQveNY.cjs.map +0 -1
- package/dist/trust-score-card-glass-CowcDyxH.js +0 -7795
- package/dist/trust-score-card-glass-CowcDyxH.js.map +0 -1
|
@@ -0,0 +1,1076 @@
|
|
|
1
|
+
# Component Catalog
|
|
2
|
+
|
|
3
|
+
Searchable index of all **58 components** in shadcn-glass-ui.
|
|
4
|
+
|
|
5
|
+
**v2.0.0 Update:** All components now use the 3-layer token system with semantic CSS variables. Zero
|
|
6
|
+
hardcoded OKLCH values across all components.
|
|
7
|
+
|
|
8
|
+
## Quick Reference Table
|
|
9
|
+
|
|
10
|
+
| Component | Level | File | Props | Key Features |
|
|
11
|
+
| ---------------------------- | ----------- | --------------------------------------------------------------- | ----- | ------------------------------------------ |
|
|
12
|
+
| **ButtonGlass** | Core UI | `src/components/glass/ui/button-glass.tsx` | 7 | asChild, loading, icon, ripple, 6 variants |
|
|
13
|
+
| **InputGlass** | Core UI | `src/components/glass/ui/input-glass.tsx` | 8 | label, error, success, icon, validation |
|
|
14
|
+
| **CheckboxGlass** | Core UI | `src/components/glass/ui/checkbox-glass.tsx` | 5 | label, checked, glow effect |
|
|
15
|
+
| **ToggleGlass** | Core UI | `src/components/glass/ui/toggle-glass.tsx` | 5 | label, switch variant, accessible |
|
|
16
|
+
| **SliderGlass** | Core UI | `src/components/glass/ui/slider-glass.tsx` | 6 | min/max/step, label, single/range |
|
|
17
|
+
| **ModalGlass** | Core UI | `src/components/glass/ui/modal-glass.tsx` | - | Compound API, overlay, 3 sizes |
|
|
18
|
+
| **TabsGlass** | Core UI | `src/components/glass/ui/tabs-glass.tsx` | - | Compound API, animated |
|
|
19
|
+
| **DropdownGlass** | Core UI | `src/components/glass/ui/dropdown-glass.tsx` | 8 | Radix UI based, submenu support |
|
|
20
|
+
| **TooltipGlass** | Core UI | `src/components/glass/ui/tooltip-glass.tsx` | 6 | Radix UI, 4 sides, delay config |
|
|
21
|
+
| **AlertGlass** | Core UI | `src/components/glass/ui/alert-glass.tsx` | 5 | 4 variants, icon, dismissable |
|
|
22
|
+
| **NotificationGlass** | Core UI | `src/components/glass/ui/notification-glass.tsx` | 6 | Toast style, 4 variants, auto-close |
|
|
23
|
+
| **BadgeGlass** | Core UI | `src/components/glass/ui/badge-glass.tsx` | 4 | 7 variants, dot variant |
|
|
24
|
+
| **AvatarGlass** | Core UI | `src/components/glass/ui/avatar-glass.tsx` | 5 | asChild, status, 4 sizes, fallback |
|
|
25
|
+
| **GlassCard** | Core UI | `src/components/glass/ui/glass-card.tsx` | 6 | asChild, 4 variants, 3 intensities |
|
|
26
|
+
| **ProgressGlass** | Core UI | `src/components/glass/ui/progress-glass.tsx` | 5 | value, max, label, variants |
|
|
27
|
+
| **CircularProgressGlass** | Core UI | `src/components/glass/ui/circular-progress-glass.tsx` | 6 | value, size, stroke, label |
|
|
28
|
+
| **SkeletonGlass** | Core UI | `src/components/glass/ui/skeleton-glass.tsx` | 5 | width, height, circle, variants |
|
|
29
|
+
| **ComboBoxGlass** | Core UI | `src/components/glass/ui/combobox-glass.tsx` | 8 | searchable, multi-select, async |
|
|
30
|
+
| **PopoverGlass** | Core UI | `src/components/glass/ui/popover-glass.tsx` | 6 | Radix UI, trigger, content |
|
|
31
|
+
| **IconButtonGlass** | Atomic | `src/components/glass/atomic/icon-button-glass.tsx` | 5 | Icon-only, aria-label, 4 sizes |
|
|
32
|
+
| **ThemeToggleGlass** | Atomic | `src/components/glass/atomic/theme-toggle-glass.tsx` | 3 | 3 themes, icon animated |
|
|
33
|
+
| **SearchBoxGlass** | Atomic | `src/components/glass/atomic/search-box-glass.tsx` | 6 | Search icon, clear button |
|
|
34
|
+
| **SortDropdownGlass** | Atomic | `src/components/glass/atomic/sort-dropdown-glass.tsx` | 5 | Sort options, ascending/descending |
|
|
35
|
+
| **StatItemGlass** | Atomic | `src/components/glass/atomic/stat-item-glass.tsx` | 5 | Label, value, change, trend |
|
|
36
|
+
| **ExpandableHeaderGlass** | Atomic | `src/components/glass/atomic/expandable-header-glass.tsx` | 5 | Collapsible, animated |
|
|
37
|
+
| **InsightCardGlass** | Atomic | `src/components/glass/atomic/insight-card-glass.tsx` | 7 | 7 variants, inline/card mode, clickable |
|
|
38
|
+
| **StatusIndicatorGlass** | Specialized | `src/components/glass/specialized/status-indicator-glass.tsx` | 4 | Status dot, 4 states, glow |
|
|
39
|
+
| **SegmentedControlGlass** | Specialized | `src/components/glass/specialized/segmented-control-glass.tsx` | 5 | Button group, exclusive selection |
|
|
40
|
+
| **RainbowProgressGlass** | Specialized | `src/components/glass/specialized/rainbow-progress-glass.tsx` | 4 | Gradient progress, animated |
|
|
41
|
+
| **LanguageBarGlass** | Specialized | `src/components/glass/specialized/language-bar-glass.tsx` | 5 | Proficiency bar, legend |
|
|
42
|
+
| **ProfileAvatarGlass** | Specialized | `src/components/glass/specialized/profile-avatar-glass.tsx` | 5 | Large avatar, glow animation |
|
|
43
|
+
| **FlagAlertGlass** | Specialized | `src/components/glass/specialized/flag-alert-glass.tsx` | 5 | Warning/danger, icon, dismissable |
|
|
44
|
+
| **ProgressGlass** | Specialized | `src/components/glass/specialized/progress-glass.tsx` | 5 | Enhanced progress bar |
|
|
45
|
+
| **BaseProgressGlass** | Specialized | `src/components/glass/specialized/base-progress-glass.tsx` | 4 | Base progress component |
|
|
46
|
+
| **SparklineGlass** | Specialized | `src/components/glass/specialized/sparkline-glass.tsx` | 6 | Time series chart, height/gap variants |
|
|
47
|
+
| **MetricCardGlass** | Composite | `src/components/glass/composite/metric-card-glass.tsx` | 6 | Metric display, progress, trend |
|
|
48
|
+
| **YearCardGlass** | Composite | `src/components/glass/composite/year-card-glass.tsx` | 5 | Timeline card, expandable |
|
|
49
|
+
| **AICardGlass** | Composite | `src/components/glass/composite/ai-card-glass.tsx` | 5 | AI summary, feature list |
|
|
50
|
+
| **RepositoryCardGlass** | Composite | `src/components/glass/composite/repository-card-glass.tsx` | 7 | Repo info, expandable, stats |
|
|
51
|
+
| **TrustScoreDisplayGlass** | Composite | `src/components/glass/composite/trust-score-display-glass.tsx` | 5 | Score, visual indicator |
|
|
52
|
+
| **CareerStatsHeaderGlass** | Composite | `src/components/glass/composite/career-stats-header-glass.tsx` | 5 | Career stats, timeline |
|
|
53
|
+
| **CircularMetricGlass** | Composite | `src/components/glass/composite/circular-metric-glass.tsx` | 5 | Circular progress, metric |
|
|
54
|
+
| **ContributionMetricsGlass** | Composite | `src/components/glass/composite/contribution-metrics-glass.tsx` | 5 | Contribution grid |
|
|
55
|
+
| **MetricsGridGlass** | Composite | `src/components/glass/composite/metrics-grid-glass.tsx` | 4 | Grid layout, responsive |
|
|
56
|
+
| **RepositoryHeaderGlass** | Composite | `src/components/glass/composite/repository-header-glass.tsx` | 6 | Repo header, metadata |
|
|
57
|
+
| **RepositoryMetadataGlass** | Composite | `src/components/glass/composite/repository-metadata-glass.tsx` | 6 | Repo metadata display |
|
|
58
|
+
| **UserInfoGlass** | Composite | `src/components/glass/composite/user-info-glass.tsx` | 5 | User card, avatar, stats |
|
|
59
|
+
| **UserStatsLineGlass** | Composite | `src/components/glass/composite/user-stats-line-glass.tsx` | 4 | Horizontal stats line |
|
|
60
|
+
| **HeaderNavGlass** | Section | `src/components/glass/sections/header-nav-glass.tsx` | 6 | Navigation, search, theme |
|
|
61
|
+
| **ProfileHeaderGlass** | Section | `src/components/glass/sections/profile-header-glass.tsx` | 7 | Profile, avatar, stats, langs |
|
|
62
|
+
| **CareerStatsGlass** | Section | `src/components/glass/sections/career-stats-glass.tsx` | 5 | Career stats, year cards |
|
|
63
|
+
| **FlagsSectionGlass** | Section | `src/components/glass/sections/flags-section-glass.tsx` | 5 | Expandable flags/warnings |
|
|
64
|
+
| **TrustScoreCardGlass** | Section | `src/components/glass/sections/trust-score-card-glass.tsx` | 6 | Trust score, metrics |
|
|
65
|
+
| **ProjectsListGlass** | Section | `src/components/glass/sections/projects-list-glass.tsx` | 6 | Projects, filtering, sorting |
|
|
66
|
+
| **HeaderBrandingGlass** | Section | `src/components/glass/sections/header-branding-glass.tsx` | 5 | Branded header, logo, nav |
|
|
67
|
+
| **FormFieldWrapper** | Primitive | `src/components/glass/primitives/form-field-wrapper.tsx` | 6 | Unified form field structure |
|
|
68
|
+
| **InteractiveCard** | Primitive | `src/components/glass/primitives/interactive-card.tsx` | 5 | Hover animations, glass effects |
|
|
69
|
+
| **TouchTarget** | Primitive | `src/components/glass/primitives/touch-target.tsx` | 4 | Touch-friendly wrapper, 44px min |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## By Level
|
|
74
|
+
|
|
75
|
+
### Level 0 - Primitives (3)
|
|
76
|
+
|
|
77
|
+
Foundation components for building other components.
|
|
78
|
+
|
|
79
|
+
#### FormFieldWrapper
|
|
80
|
+
|
|
81
|
+
**File:** `src/components/glass/primitives/form-field-wrapper.tsx` **Purpose:** Unified form field
|
|
82
|
+
structure with label, error, and success states **Props:** `label`, `error`, `success`, `required`,
|
|
83
|
+
`children`, `className` **Usage:**
|
|
84
|
+
|
|
85
|
+
```tsx
|
|
86
|
+
<FormFieldWrapper label="Email" error={emailError}>
|
|
87
|
+
<input type="email" />
|
|
88
|
+
</FormFieldWrapper>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
#### InteractiveCard
|
|
92
|
+
|
|
93
|
+
**File:** `src/components/glass/primitives/interactive-card.tsx` **Purpose:** Card with hover
|
|
94
|
+
animations and glass effects **Props:** `asChild`, `children`, `className`, `onClick`, `onHover`
|
|
95
|
+
**Usage:**
|
|
96
|
+
|
|
97
|
+
```tsx
|
|
98
|
+
<InteractiveCard onClick={() => console.log('clicked')}>
|
|
99
|
+
<h3>Interactive Card</h3>
|
|
100
|
+
</InteractiveCard>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
#### TouchTarget
|
|
104
|
+
|
|
105
|
+
**File:** `src/components/glass/primitives/touch-target.tsx` **Purpose:** Touch-friendly wrapper
|
|
106
|
+
ensuring 44×44px minimum (Apple HIG) **Props:** `asChild`, `children`, `className`, `minSize`
|
|
107
|
+
**Usage:**
|
|
108
|
+
|
|
109
|
+
```tsx
|
|
110
|
+
<TouchTarget minSize={44}>
|
|
111
|
+
<button>Tap me</button>
|
|
112
|
+
</TouchTarget>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### Level 1 - Core UI (18)
|
|
118
|
+
|
|
119
|
+
Essential building blocks for any application.
|
|
120
|
+
|
|
121
|
+
#### ButtonGlass
|
|
122
|
+
|
|
123
|
+
**File:** `src/components/glass/ui/button-glass.tsx` **Variants:** primary, secondary, ghost,
|
|
124
|
+
destructive, success, text **Sizes:** sm, md, lg, xl, icon **Features:** asChild, loading, icon,
|
|
125
|
+
ripple effect, glow
|
|
126
|
+
|
|
127
|
+
**Basic:**
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
<ButtonGlass variant="primary">Click me</ButtonGlass>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**With Loading State:**
|
|
134
|
+
|
|
135
|
+
```tsx
|
|
136
|
+
<ButtonGlass variant="primary" loading={isLoading} disabled={isLoading}>
|
|
137
|
+
{isLoading ? 'Saving...' : 'Save Changes'}
|
|
138
|
+
</ButtonGlass>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**With Icon:**
|
|
142
|
+
|
|
143
|
+
```tsx
|
|
144
|
+
<ButtonGlass variant="secondary" icon={Download} iconPosition="left">
|
|
145
|
+
Download File
|
|
146
|
+
</ButtonGlass>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**As Link (asChild pattern):**
|
|
150
|
+
|
|
151
|
+
```tsx
|
|
152
|
+
<ButtonGlass asChild variant="ghost">
|
|
153
|
+
<Link href="/dashboard">Go to Dashboard</Link>
|
|
154
|
+
</ButtonGlass>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Icon Only Button:**
|
|
158
|
+
|
|
159
|
+
```tsx
|
|
160
|
+
<ButtonGlass variant="ghost" size="icon" aria-label="Close dialog">
|
|
161
|
+
<X className="h-4 w-4" />
|
|
162
|
+
</ButtonGlass>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Props:** | Prop | Type | Default | Description | |------|------|---------|-------------| | variant
|
|
166
|
+
| string | primary | Visual style | | size | string | md | Button size | | loading | boolean | false
|
|
167
|
+
| Show spinner | | icon | LucideIcon | - | Icon component | | iconPosition | left \| right | left |
|
|
168
|
+
Icon placement | | asChild | boolean | false | Polymorphic rendering |
|
|
169
|
+
|
|
170
|
+
#### InputGlass
|
|
171
|
+
|
|
172
|
+
**File:** `src/components/glass/ui/input-glass.tsx` **Features:** label, error, success, icon, focus
|
|
173
|
+
glow
|
|
174
|
+
|
|
175
|
+
**Basic:**
|
|
176
|
+
|
|
177
|
+
```tsx
|
|
178
|
+
<InputGlass label="Username" placeholder="Enter username" />
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**With Validation:**
|
|
182
|
+
|
|
183
|
+
```tsx
|
|
184
|
+
<InputGlass
|
|
185
|
+
label="Email"
|
|
186
|
+
type="email"
|
|
187
|
+
value={email}
|
|
188
|
+
onChange={(e) => setEmail(e.target.value)}
|
|
189
|
+
error={!isValidEmail ? 'Invalid email format' : undefined}
|
|
190
|
+
success={isValidEmail ? 'Email is valid' : undefined}
|
|
191
|
+
/>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**With Icon:**
|
|
195
|
+
|
|
196
|
+
```tsx
|
|
197
|
+
<InputGlass label="Search" icon={Search} placeholder="Search..." aria-label="Search" />
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Props:** | Prop | Type | Default | Description | |------|------|---------|-------------| | label |
|
|
201
|
+
string | - | Input label | | error | string | - | Error message (red border) | | success | string
|
|
202
|
+
| - | Success message (green border) | | icon | LucideIcon | - | Left icon | | iconPosition | left
|
|
203
|
+
\| right | left | Icon placement |
|
|
204
|
+
|
|
205
|
+
#### CheckboxGlass
|
|
206
|
+
|
|
207
|
+
**File:** `src/components/glass/ui/checkbox-glass.tsx` **Features:** label, checked state, glow
|
|
208
|
+
effect, accessible **Usage:**
|
|
209
|
+
|
|
210
|
+
```tsx
|
|
211
|
+
<CheckboxGlass
|
|
212
|
+
id="terms"
|
|
213
|
+
checked={accepted}
|
|
214
|
+
onCheckedChange={setAccepted}
|
|
215
|
+
label="I accept the terms"
|
|
216
|
+
/>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
#### ToggleGlass
|
|
220
|
+
|
|
221
|
+
**File:** `src/components/glass/ui/toggle-glass.tsx` **Features:** label, switch variant,
|
|
222
|
+
accessible, animated **Usage:**
|
|
223
|
+
|
|
224
|
+
```tsx
|
|
225
|
+
<ToggleGlass checked={enabled} onCheckedChange={setEnabled} label="Enable notifications" />
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
#### SliderGlass
|
|
229
|
+
|
|
230
|
+
**File:** `src/components/glass/ui/slider-glass.tsx` **Features:** min/max/step, label, single/range
|
|
231
|
+
values **Usage:**
|
|
232
|
+
|
|
233
|
+
```tsx
|
|
234
|
+
<SliderGlass
|
|
235
|
+
label="Volume"
|
|
236
|
+
value={[volume]}
|
|
237
|
+
onValueChange={([v]) => setVolume(v)}
|
|
238
|
+
min={0}
|
|
239
|
+
max={100}
|
|
240
|
+
/>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
#### ModalGlass (Compound API)
|
|
244
|
+
|
|
245
|
+
**File:** `src/components/glass/ui/modal-glass.tsx` **Components:** Root, Overlay, Content, Header,
|
|
246
|
+
Title, Description, Body, Footer, Close **Sizes:** sm, md, lg **Features:** Compound API, focus
|
|
247
|
+
trap, scroll lock, click-outside-to-close
|
|
248
|
+
|
|
249
|
+
**Basic Confirmation:**
|
|
250
|
+
|
|
251
|
+
```tsx
|
|
252
|
+
<ModalGlass.Root open={open} onOpenChange={setOpen}>
|
|
253
|
+
<ModalGlass.Overlay />
|
|
254
|
+
<ModalGlass.Content>
|
|
255
|
+
<ModalGlass.Header>
|
|
256
|
+
<ModalGlass.Title>Confirm</ModalGlass.Title>
|
|
257
|
+
<ModalGlass.Close />
|
|
258
|
+
</ModalGlass.Header>
|
|
259
|
+
<ModalGlass.Body>Are you sure?</ModalGlass.Body>
|
|
260
|
+
<ModalGlass.Footer>
|
|
261
|
+
<ButtonGlass onClick={() => setOpen(false)}>Cancel</ButtonGlass>
|
|
262
|
+
</ModalGlass.Footer>
|
|
263
|
+
</ModalGlass.Content>
|
|
264
|
+
</ModalGlass.Root>
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**Delete Confirmation:**
|
|
268
|
+
|
|
269
|
+
```tsx
|
|
270
|
+
<ModalGlass.Root open={open} onOpenChange={setOpen}>
|
|
271
|
+
<ModalGlass.Overlay />
|
|
272
|
+
<ModalGlass.Content size="sm">
|
|
273
|
+
<ModalGlass.Header>
|
|
274
|
+
<ModalGlass.Title>Delete Item</ModalGlass.Title>
|
|
275
|
+
</ModalGlass.Header>
|
|
276
|
+
<ModalGlass.Body>
|
|
277
|
+
<p>This action cannot be undone. This will permanently delete the item.</p>
|
|
278
|
+
</ModalGlass.Body>
|
|
279
|
+
<ModalGlass.Footer>
|
|
280
|
+
<ButtonGlass variant="ghost" onClick={() => setOpen(false)}>
|
|
281
|
+
Cancel
|
|
282
|
+
</ButtonGlass>
|
|
283
|
+
<ButtonGlass variant="destructive" onClick={handleDelete}>
|
|
284
|
+
Delete
|
|
285
|
+
</ButtonGlass>
|
|
286
|
+
</ModalGlass.Footer>
|
|
287
|
+
</ModalGlass.Content>
|
|
288
|
+
</ModalGlass.Root>
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**Form Modal:**
|
|
292
|
+
|
|
293
|
+
```tsx
|
|
294
|
+
<ModalGlass.Root open={open} onOpenChange={setOpen}>
|
|
295
|
+
<ModalGlass.Overlay />
|
|
296
|
+
<ModalGlass.Content size="md">
|
|
297
|
+
<ModalGlass.Header>
|
|
298
|
+
<ModalGlass.Title>Create New Project</ModalGlass.Title>
|
|
299
|
+
<ModalGlass.Description>Fill in the details below</ModalGlass.Description>
|
|
300
|
+
</ModalGlass.Header>
|
|
301
|
+
<ModalGlass.Body>
|
|
302
|
+
<form onSubmit={handleSubmit}>
|
|
303
|
+
<InputGlass label="Project Name" required />
|
|
304
|
+
<InputGlass label="Description" />
|
|
305
|
+
</form>
|
|
306
|
+
</ModalGlass.Body>
|
|
307
|
+
<ModalGlass.Footer>
|
|
308
|
+
<ButtonGlass variant="ghost" onClick={() => setOpen(false)}>
|
|
309
|
+
Cancel
|
|
310
|
+
</ButtonGlass>
|
|
311
|
+
<ButtonGlass variant="primary" onClick={handleSubmit}>
|
|
312
|
+
Create
|
|
313
|
+
</ButtonGlass>
|
|
314
|
+
</ModalGlass.Footer>
|
|
315
|
+
</ModalGlass.Content>
|
|
316
|
+
</ModalGlass.Root>
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**Props (Root):** | Prop | Type | Default | Description | |------|------|---------|-------------| |
|
|
320
|
+
open | boolean | - | Controlled open state | | onOpenChange | (open: boolean) => void | - | Open
|
|
321
|
+
state change handler | | children | ReactNode | - | Modal content |
|
|
322
|
+
|
|
323
|
+
**Props (Content):** | Prop | Type | Default | Description | |------|------|---------|-------------|
|
|
324
|
+
| size | sm \| md \| lg | md | Modal width | | className | string | - | Additional styles |
|
|
325
|
+
|
|
326
|
+
#### TabsGlass (Compound API)
|
|
327
|
+
|
|
328
|
+
**File:** `src/components/glass/ui/tabs-glass.tsx` **Components:** Root, List, Trigger, Content
|
|
329
|
+
**Features:** Animated indicator, keyboard navigation, ARIA support
|
|
330
|
+
|
|
331
|
+
**Basic Tabs:**
|
|
332
|
+
|
|
333
|
+
```tsx
|
|
334
|
+
<TabsGlass.Root value={tab} onValueChange={setTab}>
|
|
335
|
+
<TabsGlass.List>
|
|
336
|
+
<TabsGlass.Trigger value="tab1">Tab 1</TabsGlass.Trigger>
|
|
337
|
+
<TabsGlass.Trigger value="tab2">Tab 2</TabsGlass.Trigger>
|
|
338
|
+
</TabsGlass.List>
|
|
339
|
+
<TabsGlass.Content value="tab1">Content 1</TabsGlass.Content>
|
|
340
|
+
<TabsGlass.Content value="tab2">Content 2</TabsGlass.Content>
|
|
341
|
+
</TabsGlass.Root>
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
**Settings Tabs with Icons:**
|
|
345
|
+
|
|
346
|
+
```tsx
|
|
347
|
+
<TabsGlass.Root defaultValue="general">
|
|
348
|
+
<TabsGlass.List>
|
|
349
|
+
<TabsGlass.Trigger value="general">
|
|
350
|
+
<Settings className="w-4 h-4 mr-2" />
|
|
351
|
+
General
|
|
352
|
+
</TabsGlass.Trigger>
|
|
353
|
+
<TabsGlass.Trigger value="security">
|
|
354
|
+
<Shield className="w-4 h-4 mr-2" />
|
|
355
|
+
Security
|
|
356
|
+
</TabsGlass.Trigger>
|
|
357
|
+
<TabsGlass.Trigger value="notifications">
|
|
358
|
+
<Bell className="w-4 h-4 mr-2" />
|
|
359
|
+
Notifications
|
|
360
|
+
</TabsGlass.Trigger>
|
|
361
|
+
</TabsGlass.List>
|
|
362
|
+
<TabsGlass.Content value="general">
|
|
363
|
+
<GlassCard>General settings content</GlassCard>
|
|
364
|
+
</TabsGlass.Content>
|
|
365
|
+
<TabsGlass.Content value="security">
|
|
366
|
+
<GlassCard>Security settings content</GlassCard>
|
|
367
|
+
</TabsGlass.Content>
|
|
368
|
+
<TabsGlass.Content value="notifications">
|
|
369
|
+
<GlassCard>Notification preferences</GlassCard>
|
|
370
|
+
</TabsGlass.Content>
|
|
371
|
+
</TabsGlass.Root>
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
**Props (Root):** | Prop | Type | Default | Description | |------|------|---------|-------------| |
|
|
375
|
+
value | string | - | Controlled active tab | | defaultValue | string | - | Initial tab | |
|
|
376
|
+
onValueChange | (value: string) => void | - | Change handler |
|
|
377
|
+
|
|
378
|
+
**Props (Trigger):** | Prop | Type | Default | Description | |------|------|---------|-------------|
|
|
379
|
+
| value | string | - | Tab identifier | | disabled | boolean | false | Disable tab |
|
|
380
|
+
|
|
381
|
+
#### DropdownGlass
|
|
382
|
+
|
|
383
|
+
**File:** `src/components/glass/ui/dropdown-glass.tsx` **Features:** Radix UI based, submenu
|
|
384
|
+
support, keyboard navigation **Usage:**
|
|
385
|
+
|
|
386
|
+
```tsx
|
|
387
|
+
<DropdownGlass
|
|
388
|
+
trigger={<ButtonGlass>Menu</ButtonGlass>}
|
|
389
|
+
items={[
|
|
390
|
+
{ label: 'Profile', onClick: () => {} },
|
|
391
|
+
{ label: 'Settings', onClick: () => {} },
|
|
392
|
+
{ separator: true },
|
|
393
|
+
{ label: 'Logout', onClick: () => {} },
|
|
394
|
+
]}
|
|
395
|
+
/>
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
#### AlertGlass
|
|
399
|
+
|
|
400
|
+
**File:** `src/components/glass/ui/alert-glass.tsx` **Variants:** default, destructive, success,
|
|
401
|
+
warning **Features:** Icon, title, description, dismissable, custom icons
|
|
402
|
+
|
|
403
|
+
**Default Alert:**
|
|
404
|
+
|
|
405
|
+
```tsx
|
|
406
|
+
<AlertGlass variant="default" title="Information">
|
|
407
|
+
This is an informational message.
|
|
408
|
+
</AlertGlass>
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
**Destructive Alert:**
|
|
412
|
+
|
|
413
|
+
```tsx
|
|
414
|
+
<AlertGlass variant="destructive" title="Error">
|
|
415
|
+
Something went wrong. Please try again.
|
|
416
|
+
</AlertGlass>
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
**Success Alert:**
|
|
420
|
+
|
|
421
|
+
```tsx
|
|
422
|
+
<AlertGlass variant="success" title="Success!">
|
|
423
|
+
Your changes have been saved successfully.
|
|
424
|
+
</AlertGlass>
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
**Warning Alert:**
|
|
428
|
+
|
|
429
|
+
```tsx
|
|
430
|
+
<AlertGlass variant="warning" title="Warning">
|
|
431
|
+
This action may have unintended consequences.
|
|
432
|
+
</AlertGlass>
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
**Dismissable Alert:**
|
|
436
|
+
|
|
437
|
+
```tsx
|
|
438
|
+
<AlertGlass
|
|
439
|
+
variant="warning"
|
|
440
|
+
title="Session Expiring"
|
|
441
|
+
dismissable
|
|
442
|
+
onDismiss={() => console.log('dismissed')}
|
|
443
|
+
>
|
|
444
|
+
Your session will expire in 5 minutes.
|
|
445
|
+
</AlertGlass>
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
**Props:** | Prop | Type | Default | Description | |------|------|---------|-------------| | variant
|
|
449
|
+
| default \| destructive \| success \| warning | default | Visual style | | title | string | - |
|
|
450
|
+
Alert title | | children | ReactNode | - | Alert description | | icon | LucideIcon | - | Custom icon
|
|
451
|
+
(auto-selected by variant) | | dismissable | boolean | false | Show dismiss button | | onDismiss |
|
|
452
|
+
() => void | - | Dismiss callback |
|
|
453
|
+
|
|
454
|
+
#### BadgeGlass
|
|
455
|
+
|
|
456
|
+
**File:** `src/components/glass/ui/badge-glass.tsx` **Variants:** default, secondary, outline,
|
|
457
|
+
destructive, success, warning, info **Features:** Multiple variants, clickable, with icons
|
|
458
|
+
|
|
459
|
+
**Status Badges:**
|
|
460
|
+
|
|
461
|
+
```tsx
|
|
462
|
+
<BadgeGlass variant="success">Active</BadgeGlass>
|
|
463
|
+
<BadgeGlass variant="warning">Pending</BadgeGlass>
|
|
464
|
+
<BadgeGlass variant="destructive">Expired</BadgeGlass>
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
**Badge with Icon:**
|
|
468
|
+
|
|
469
|
+
```tsx
|
|
470
|
+
<BadgeGlass variant="info">
|
|
471
|
+
<Star className="w-3 h-3 mr-1" />
|
|
472
|
+
Featured
|
|
473
|
+
</BadgeGlass>
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
**Badge Group:**
|
|
477
|
+
|
|
478
|
+
```tsx
|
|
479
|
+
<div className="flex gap-2">
|
|
480
|
+
<BadgeGlass variant="default">React</BadgeGlass>
|
|
481
|
+
<BadgeGlass variant="default">TypeScript</BadgeGlass>
|
|
482
|
+
<BadgeGlass variant="default">Tailwind</BadgeGlass>
|
|
483
|
+
</div>
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
**Outline Badges:**
|
|
487
|
+
|
|
488
|
+
```tsx
|
|
489
|
+
<BadgeGlass variant="outline">Draft</BadgeGlass>
|
|
490
|
+
<BadgeGlass variant="secondary">v1.0.0</BadgeGlass>
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
**Props:** | Prop | Type | Default | Description | |------|------|---------|-------------| | variant
|
|
494
|
+
| string | default | Visual style (7 options) | | children | ReactNode | - | Badge content | |
|
|
495
|
+
className | string | - | Additional styles |
|
|
496
|
+
|
|
497
|
+
#### AvatarGlass
|
|
498
|
+
|
|
499
|
+
**File:** `src/components/glass/ui/avatar-glass.tsx` **Sizes:** sm (32px), md (48px), lg (64px), xl
|
|
500
|
+
(96px) **Status:** online, offline, busy, away **Features:** asChild, fallback, image **Usage:**
|
|
501
|
+
|
|
502
|
+
```tsx
|
|
503
|
+
<AvatarGlass name="John Doe" src="/avatar.jpg" status="online" size="lg" />
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
#### GlassCard
|
|
507
|
+
|
|
508
|
+
**File:** `src/components/glass/ui/glass-card.tsx` **Variants:** glass, light, aurora, outline
|
|
509
|
+
**Intensities:** subtle (8px blur), medium (16px blur), strong (24px blur) **Features:** asChild,
|
|
510
|
+
padding variants, hover effects
|
|
511
|
+
|
|
512
|
+
**Basic Card:**
|
|
513
|
+
|
|
514
|
+
```tsx
|
|
515
|
+
<GlassCard variant="glass" intensity="medium" padding="default">
|
|
516
|
+
<h3>Card Title</h3>
|
|
517
|
+
<p>Card content</p>
|
|
518
|
+
</GlassCard>
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
**Subtle Glass (Low Blur):**
|
|
522
|
+
|
|
523
|
+
```tsx
|
|
524
|
+
<GlassCard intensity="subtle">
|
|
525
|
+
<p>Subtle glass effect for layered content</p>
|
|
526
|
+
</GlassCard>
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
**Strong Glass (High Blur):**
|
|
530
|
+
|
|
531
|
+
```tsx
|
|
532
|
+
<GlassCard intensity="strong" padding="lg">
|
|
533
|
+
<h2 className="text-xl font-bold">Featured Section</h2>
|
|
534
|
+
<p>High visibility glass card for important content</p>
|
|
535
|
+
</GlassCard>
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
**As Clickable Link (asChild):**
|
|
539
|
+
|
|
540
|
+
```tsx
|
|
541
|
+
<GlassCard asChild>
|
|
542
|
+
<a href="/dashboard">
|
|
543
|
+
<h3>Go to Dashboard</h3>
|
|
544
|
+
<p>Click to navigate</p>
|
|
545
|
+
</a>
|
|
546
|
+
</GlassCard>
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
**Props:** | Prop | Type | Default | Description | |------|------|---------|-------------| | variant
|
|
550
|
+
| glass \| light \| aurora \| outline | glass | Theme variant | | intensity | subtle \| medium \|
|
|
551
|
+
strong | medium | Blur intensity | | padding | none \| sm \| default \| lg | default | Padding size
|
|
552
|
+
| | asChild | boolean | false | Polymorphic rendering |
|
|
553
|
+
|
|
554
|
+
#### ProgressGlass
|
|
555
|
+
|
|
556
|
+
**File:** `src/components/glass/ui/progress-glass.tsx` **Features:** value, max, label, variants
|
|
557
|
+
**Usage:**
|
|
558
|
+
|
|
559
|
+
```tsx
|
|
560
|
+
<ProgressGlass value={60} max={100} label="60%" />
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
#### CircularProgressGlass
|
|
564
|
+
|
|
565
|
+
**File:** `src/components/glass/ui/circular-progress-glass.tsx` **Features:** value, size, stroke
|
|
566
|
+
width, label **Usage:**
|
|
567
|
+
|
|
568
|
+
```tsx
|
|
569
|
+
<CircularProgressGlass value={75} size={120} strokeWidth={8}>
|
|
570
|
+
75%
|
|
571
|
+
</CircularProgressGlass>
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
#### SkeletonGlass
|
|
575
|
+
|
|
576
|
+
**File:** `src/components/glass/ui/skeleton-glass.tsx` **Features:** width, height, circle variant,
|
|
577
|
+
animated **Usage:**
|
|
578
|
+
|
|
579
|
+
```tsx
|
|
580
|
+
<SkeletonGlass width={200} height={20} />
|
|
581
|
+
<SkeletonGlass circle size={48} />
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
#### ComboBoxGlass
|
|
585
|
+
|
|
586
|
+
**File:** `src/components/glass/ui/combobox-glass.tsx` **Features:** Searchable, multi-select, async
|
|
587
|
+
loading, keyboard navigation
|
|
588
|
+
|
|
589
|
+
**Basic ComboBox:**
|
|
590
|
+
|
|
591
|
+
```tsx
|
|
592
|
+
const options = [
|
|
593
|
+
{ value: 'react', label: 'React' },
|
|
594
|
+
{ value: 'vue', label: 'Vue' },
|
|
595
|
+
{ value: 'angular', label: 'Angular' },
|
|
596
|
+
];
|
|
597
|
+
|
|
598
|
+
<ComboBoxGlass
|
|
599
|
+
options={options}
|
|
600
|
+
value={selected}
|
|
601
|
+
onChange={setSelected}
|
|
602
|
+
placeholder="Select framework..."
|
|
603
|
+
/>;
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
**Searchable ComboBox:**
|
|
607
|
+
|
|
608
|
+
```tsx
|
|
609
|
+
<ComboBoxGlass
|
|
610
|
+
options={options}
|
|
611
|
+
value={selected}
|
|
612
|
+
onChange={setSelected}
|
|
613
|
+
placeholder="Search frameworks..."
|
|
614
|
+
searchable
|
|
615
|
+
/>
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
**Multi-Select:**
|
|
619
|
+
|
|
620
|
+
```tsx
|
|
621
|
+
<ComboBoxGlass
|
|
622
|
+
options={options}
|
|
623
|
+
value={selectedItems}
|
|
624
|
+
onChange={setSelectedItems}
|
|
625
|
+
placeholder="Select multiple..."
|
|
626
|
+
multiple
|
|
627
|
+
/>
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
**With Performance Optimization (useMemo):**
|
|
631
|
+
|
|
632
|
+
```tsx
|
|
633
|
+
// IMPORTANT: Memoize options to prevent re-renders
|
|
634
|
+
const options = useMemo(
|
|
635
|
+
() => [
|
|
636
|
+
{ value: 'react', label: 'React' },
|
|
637
|
+
{ value: 'vue', label: 'Vue' },
|
|
638
|
+
],
|
|
639
|
+
[]
|
|
640
|
+
);
|
|
641
|
+
|
|
642
|
+
<ComboBoxGlass options={options} value={value} onChange={setValue} />;
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
**Props:** | Prop | Type | Default | Description | |------|------|---------|-------------| | options
|
|
646
|
+
| Option[] | - | Available options | | value | string \| string[] | - | Selected value(s) | |
|
|
647
|
+
onChange | (value) => void | - | Change handler | | placeholder | string | - | Placeholder text | |
|
|
648
|
+
searchable | boolean | false | Enable search | | multiple | boolean | false | Allow multi-select | |
|
|
649
|
+
disabled | boolean | false | Disable input |
|
|
650
|
+
|
|
651
|
+
#### NotificationGlass
|
|
652
|
+
|
|
653
|
+
**File:** `src/components/glass/ui/notification-glass.tsx` **Variants:** default, destructive,
|
|
654
|
+
success, warning **Features:** Toast style, auto-close, dismissable, actions
|
|
655
|
+
|
|
656
|
+
**Success Notification:**
|
|
657
|
+
|
|
658
|
+
```tsx
|
|
659
|
+
<NotificationGlass
|
|
660
|
+
variant="success"
|
|
661
|
+
title="Success"
|
|
662
|
+
message="Changes saved successfully"
|
|
663
|
+
onClose={() => {}}
|
|
664
|
+
autoClose={3000}
|
|
665
|
+
/>
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
**Error Notification:**
|
|
669
|
+
|
|
670
|
+
```tsx
|
|
671
|
+
<NotificationGlass
|
|
672
|
+
variant="destructive"
|
|
673
|
+
title="Error"
|
|
674
|
+
message="Failed to save changes. Please try again."
|
|
675
|
+
onClose={() => {}}
|
|
676
|
+
/>
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
**Warning Notification:**
|
|
680
|
+
|
|
681
|
+
```tsx
|
|
682
|
+
<NotificationGlass
|
|
683
|
+
variant="warning"
|
|
684
|
+
title="Warning"
|
|
685
|
+
message="Your session will expire in 5 minutes."
|
|
686
|
+
onClose={() => {}}
|
|
687
|
+
autoClose={10000}
|
|
688
|
+
/>
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
**Notification with Action:**
|
|
692
|
+
|
|
693
|
+
```tsx
|
|
694
|
+
<NotificationGlass
|
|
695
|
+
variant="default"
|
|
696
|
+
title="New Update Available"
|
|
697
|
+
message="A new version is ready to install."
|
|
698
|
+
onClose={() => {}}
|
|
699
|
+
action={
|
|
700
|
+
<ButtonGlass size="sm" variant="secondary" onClick={handleUpdate}>
|
|
701
|
+
Update Now
|
|
702
|
+
</ButtonGlass>
|
|
703
|
+
}
|
|
704
|
+
/>
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
**Props:** | Prop | Type | Default | Description | |------|------|---------|-------------| | variant
|
|
708
|
+
| default \| destructive \| success \| warning | default | Visual style | | title | string | - |
|
|
709
|
+
Notification title | | message | string | - | Notification message | | onClose | () => void | - |
|
|
710
|
+
Close handler | | autoClose | number | - | Auto-close delay (ms) | | action | ReactNode | - | Action
|
|
711
|
+
button |
|
|
712
|
+
|
|
713
|
+
#### TooltipGlass
|
|
714
|
+
|
|
715
|
+
**File:** `src/components/glass/ui/tooltip-glass.tsx` **Sides:** top, bottom, left, right
|
|
716
|
+
**Features:** Delay config, Radix UI based, accessible
|
|
717
|
+
|
|
718
|
+
**Basic Tooltip:**
|
|
719
|
+
|
|
720
|
+
```tsx
|
|
721
|
+
<TooltipGlass content="This is a tooltip" side="top">
|
|
722
|
+
<ButtonGlass>Hover me</ButtonGlass>
|
|
723
|
+
</TooltipGlass>
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
**Tooltip on Icon Button (Accessibility):**
|
|
727
|
+
|
|
728
|
+
```tsx
|
|
729
|
+
<TooltipGlass content="Delete item" side="bottom">
|
|
730
|
+
<ButtonGlass variant="ghost" size="icon" aria-label="Delete item">
|
|
731
|
+
<Trash className="h-4 w-4" />
|
|
732
|
+
</ButtonGlass>
|
|
733
|
+
</TooltipGlass>
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
**Tooltip with Custom Delay:**
|
|
737
|
+
|
|
738
|
+
```tsx
|
|
739
|
+
<TooltipGlass content="Detailed information" side="right" delayDuration={500}>
|
|
740
|
+
<Info className="h-4 w-4 text-muted-foreground" />
|
|
741
|
+
</TooltipGlass>
|
|
742
|
+
```
|
|
743
|
+
|
|
744
|
+
**Props:** | Prop | Type | Default | Description | |------|------|---------|-------------| | content
|
|
745
|
+
| ReactNode | - | Tooltip content | | side | top \| bottom \| left \| right | top | Position | |
|
|
746
|
+
delayDuration | number | 200 | Show delay (ms) | | sideOffset | number | 4 | Distance from trigger |
|
|
747
|
+
| children | ReactNode | - | Trigger element |
|
|
748
|
+
|
|
749
|
+
#### PopoverGlass
|
|
750
|
+
|
|
751
|
+
**File:** `src/components/glass/ui/popover-glass.tsx` **Features:** Trigger, content, Radix UI based
|
|
752
|
+
**Usage:**
|
|
753
|
+
|
|
754
|
+
```tsx
|
|
755
|
+
<PopoverGlass>
|
|
756
|
+
<PopoverGlass.Trigger asChild>
|
|
757
|
+
<ButtonGlass>Open</ButtonGlass>
|
|
758
|
+
</PopoverGlass.Trigger>
|
|
759
|
+
<PopoverGlass.Content>
|
|
760
|
+
<p>Popover content</p>
|
|
761
|
+
</PopoverGlass.Content>
|
|
762
|
+
</PopoverGlass>
|
|
763
|
+
```
|
|
764
|
+
|
|
765
|
+
---
|
|
766
|
+
|
|
767
|
+
### Level 2 - Atomic (7)
|
|
768
|
+
|
|
769
|
+
Small, specialized components for specific use cases.
|
|
770
|
+
|
|
771
|
+
#### IconButtonGlass
|
|
772
|
+
|
|
773
|
+
**File:** `src/components/glass/atomic/icon-button-glass.tsx` **Sizes:** sm, md, lg, xl **Usage:**
|
|
774
|
+
|
|
775
|
+
```tsx
|
|
776
|
+
<IconButtonGlass size="md" aria-label="Close">
|
|
777
|
+
<X />
|
|
778
|
+
</IconButtonGlass>
|
|
779
|
+
```
|
|
780
|
+
|
|
781
|
+
#### ThemeToggleGlass
|
|
782
|
+
|
|
783
|
+
**File:** `src/components/glass/atomic/theme-toggle-glass.tsx` **Themes:** glass, light, aurora
|
|
784
|
+
**Usage:**
|
|
785
|
+
|
|
786
|
+
```tsx
|
|
787
|
+
<ThemeToggleGlass />
|
|
788
|
+
```
|
|
789
|
+
|
|
790
|
+
#### SearchBoxGlass
|
|
791
|
+
|
|
792
|
+
**File:** `src/components/glass/atomic/search-box-glass.tsx` **Features:** Search icon, clear
|
|
793
|
+
button, debounced **Usage:**
|
|
794
|
+
|
|
795
|
+
```tsx
|
|
796
|
+
<SearchBoxGlass placeholder="Search..." onSearch={(query) => handleSearch(query)} />
|
|
797
|
+
```
|
|
798
|
+
|
|
799
|
+
#### SortDropdownGlass
|
|
800
|
+
|
|
801
|
+
**File:** `src/components/glass/atomic/sort-dropdown-glass.tsx` **Features:** Sort options,
|
|
802
|
+
ascending/descending **Usage:**
|
|
803
|
+
|
|
804
|
+
```tsx
|
|
805
|
+
<SortDropdownGlass options={['Name', 'Date', 'Size']} value={sortBy} onChange={setSortBy} />
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
#### StatItemGlass
|
|
809
|
+
|
|
810
|
+
**File:** `src/components/glass/atomic/stat-item-glass.tsx` **Features:** Label, value, change
|
|
811
|
+
percentage, trend indicator **Usage:**
|
|
812
|
+
|
|
813
|
+
```tsx
|
|
814
|
+
<StatItemGlass label="Total Users" value="12,345" change={12.5} trend="up" />
|
|
815
|
+
```
|
|
816
|
+
|
|
817
|
+
#### ExpandableHeaderGlass
|
|
818
|
+
|
|
819
|
+
**File:** `src/components/glass/atomic/expandable-header-glass.tsx` **Features:** Collapsible,
|
|
820
|
+
animated, chevron icon **Usage:**
|
|
821
|
+
|
|
822
|
+
```tsx
|
|
823
|
+
<ExpandableHeaderGlass title="Section Title" defaultExpanded>
|
|
824
|
+
<p>Expandable content</p>
|
|
825
|
+
</ExpandableHeaderGlass>
|
|
826
|
+
```
|
|
827
|
+
|
|
828
|
+
---
|
|
829
|
+
|
|
830
|
+
### Level 3 - Specialized (9)
|
|
831
|
+
|
|
832
|
+
Advanced specialized components for specific use cases.
|
|
833
|
+
|
|
834
|
+
#### StatusIndicatorGlass
|
|
835
|
+
|
|
836
|
+
**File:** `src/components/glass/specialized/status-indicator-glass.tsx` **States:** online, offline,
|
|
837
|
+
busy, away **Features:** Glow effect, pulsing animation **Usage:**
|
|
838
|
+
|
|
839
|
+
```tsx
|
|
840
|
+
<StatusIndicatorGlass status="online" />
|
|
841
|
+
```
|
|
842
|
+
|
|
843
|
+
#### SegmentedControlGlass
|
|
844
|
+
|
|
845
|
+
**File:** `src/components/glass/specialized/segmented-control-glass.tsx` **Features:** Button group,
|
|
846
|
+
exclusive selection, animated indicator **Usage:**
|
|
847
|
+
|
|
848
|
+
```tsx
|
|
849
|
+
<SegmentedControlGlass options={['Day', 'Week', 'Month']} value={period} onChange={setPeriod} />
|
|
850
|
+
```
|
|
851
|
+
|
|
852
|
+
#### RainbowProgressGlass
|
|
853
|
+
|
|
854
|
+
**File:** `src/components/glass/specialized/rainbow-progress-glass.tsx` **Features:** Gradient
|
|
855
|
+
progress, animated, smooth transitions **Usage:**
|
|
856
|
+
|
|
857
|
+
```tsx
|
|
858
|
+
<RainbowProgressGlass value={60} max={100} />
|
|
859
|
+
```
|
|
860
|
+
|
|
861
|
+
#### LanguageBarGlass
|
|
862
|
+
|
|
863
|
+
**File:** `src/components/glass/specialized/language-bar-glass.tsx` **Features:** Proficiency bar,
|
|
864
|
+
language legend, color-coded **Usage:**
|
|
865
|
+
|
|
866
|
+
```tsx
|
|
867
|
+
<LanguageBarGlass
|
|
868
|
+
languages={[
|
|
869
|
+
{ name: 'TypeScript', percentage: 45, color: '#3178c6' },
|
|
870
|
+
{ name: 'JavaScript', percentage: 30, color: '#f7df1e' },
|
|
871
|
+
{ name: 'CSS', percentage: 25, color: '#1572b6' },
|
|
872
|
+
]}
|
|
873
|
+
/>
|
|
874
|
+
```
|
|
875
|
+
|
|
876
|
+
#### ProfileAvatarGlass
|
|
877
|
+
|
|
878
|
+
**File:** `src/components/glass/specialized/profile-avatar-glass.tsx` **Sizes:** xl (128px), xxl
|
|
879
|
+
(160px) **Features:** Large avatar, glow animation, status indicator **Usage:**
|
|
880
|
+
|
|
881
|
+
```tsx
|
|
882
|
+
<ProfileAvatarGlass name="John Doe" src="/avatar.jpg" status="online" size="xl" />
|
|
883
|
+
```
|
|
884
|
+
|
|
885
|
+
#### FlagAlertGlass
|
|
886
|
+
|
|
887
|
+
**File:** `src/components/glass/specialized/flag-alert-glass.tsx` **Types:** warning, danger
|
|
888
|
+
**Features:** Icon, dismissable, prominent styling **Usage:**
|
|
889
|
+
|
|
890
|
+
```tsx
|
|
891
|
+
<FlagAlertGlass type="warning" title="Warning">
|
|
892
|
+
This action requires admin privileges
|
|
893
|
+
</FlagAlertGlass>
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
---
|
|
897
|
+
|
|
898
|
+
### Level 4 - Composite (13)
|
|
899
|
+
|
|
900
|
+
Pre-built complex components combining multiple elements.
|
|
901
|
+
|
|
902
|
+
#### MetricCardGlass
|
|
903
|
+
|
|
904
|
+
**File:** `src/components/glass/composite/metric-card-glass.tsx` **Features:** Metric display,
|
|
905
|
+
progress indicator, trend **Usage:**
|
|
906
|
+
|
|
907
|
+
```tsx
|
|
908
|
+
<MetricCardGlass label="Revenue" value="$45,678" change={12.5} trend="up" progress={75} />
|
|
909
|
+
```
|
|
910
|
+
|
|
911
|
+
#### AICardGlass
|
|
912
|
+
|
|
913
|
+
**File:** `src/components/glass/composite/ai-card-glass.tsx` **Features:** AI summary card with
|
|
914
|
+
feature list **Usage:**
|
|
915
|
+
|
|
916
|
+
```tsx
|
|
917
|
+
<AICardGlass
|
|
918
|
+
title="AI Analysis"
|
|
919
|
+
summary="User shows high engagement"
|
|
920
|
+
features={['Active user', 'High trust score', 'Regular contributor']}
|
|
921
|
+
/>
|
|
922
|
+
```
|
|
923
|
+
|
|
924
|
+
---
|
|
925
|
+
|
|
926
|
+
### Level 5 - Sections (7)
|
|
927
|
+
|
|
928
|
+
Full-page sections ready to use in your application.
|
|
929
|
+
|
|
930
|
+
#### HeaderNavGlass
|
|
931
|
+
|
|
932
|
+
**File:** `src/components/glass/sections/header-nav-glass.tsx` **Features:** Navigation header,
|
|
933
|
+
search, theme toggle **Usage:**
|
|
934
|
+
|
|
935
|
+
```tsx
|
|
936
|
+
<HeaderNavGlass logo={<Logo />} navigation={navItems} onSearch={(query) => handleSearch(query)} />
|
|
937
|
+
```
|
|
938
|
+
|
|
939
|
+
#### ProfileHeaderGlass
|
|
940
|
+
|
|
941
|
+
**File:** `src/components/glass/sections/profile-header-glass.tsx` **Features:** User profile,
|
|
942
|
+
avatar, stats, languages **Usage:**
|
|
943
|
+
|
|
944
|
+
```tsx
|
|
945
|
+
<ProfileHeaderGlass user={userData} stats={userStats} languages={userLanguages} />
|
|
946
|
+
```
|
|
947
|
+
|
|
948
|
+
---
|
|
949
|
+
|
|
950
|
+
## By Use Case
|
|
951
|
+
|
|
952
|
+
### Forms
|
|
953
|
+
|
|
954
|
+
- **InputGlass** - Text, email, password inputs
|
|
955
|
+
- **CheckboxGlass** - Checkboxes with labels
|
|
956
|
+
- **ToggleGlass** - Toggle switches
|
|
957
|
+
- **SliderGlass** - Range sliders
|
|
958
|
+
- **ComboBoxGlass** - Searchable select
|
|
959
|
+
- **FormFieldWrapper** (primitive) - Form field structure
|
|
960
|
+
|
|
961
|
+
### Navigation
|
|
962
|
+
|
|
963
|
+
- **HeaderNavGlass** - Navigation header
|
|
964
|
+
- **TabsGlass** - Tab navigation
|
|
965
|
+
- **DropdownGlass** - Dropdown menus
|
|
966
|
+
- **ButtonGlass** (asChild) - Link buttons
|
|
967
|
+
- **SegmentedControlGlass** - Segmented buttons
|
|
968
|
+
|
|
969
|
+
### Feedback
|
|
970
|
+
|
|
971
|
+
- **AlertGlass** - Alert messages (4 variants)
|
|
972
|
+
- **NotificationGlass** - Toast notifications
|
|
973
|
+
- **TooltipGlass** - Tooltips
|
|
974
|
+
- **BadgeGlass** - Status badges (7 variants)
|
|
975
|
+
- **SkeletonGlass** - Loading skeletons
|
|
976
|
+
- **ProgressGlass** - Progress bars
|
|
977
|
+
|
|
978
|
+
### Data Display
|
|
979
|
+
|
|
980
|
+
- **GlassCard** - Card containers
|
|
981
|
+
- **MetricCardGlass** - Metric displays
|
|
982
|
+
- **CircularMetricGlass** - Circular metrics
|
|
983
|
+
- **TrustScoreCardGlass** - Score displays
|
|
984
|
+
- **StatItemGlass** - Stat items
|
|
985
|
+
|
|
986
|
+
### Modals & Overlays
|
|
987
|
+
|
|
988
|
+
- **ModalGlass** (compound) - Modal dialogs
|
|
989
|
+
- **PopoverGlass** - Popovers
|
|
990
|
+
- **DropdownGlass** - Dropdowns
|
|
991
|
+
|
|
992
|
+
---
|
|
993
|
+
|
|
994
|
+
## Search Index
|
|
995
|
+
|
|
996
|
+
For AI assistants: Use Ctrl+F to search by keyword.
|
|
997
|
+
|
|
998
|
+
**Keywords mapping:**
|
|
999
|
+
|
|
1000
|
+
- "button" → ButtonGlass, IconButtonGlass
|
|
1001
|
+
- "input, text field" → InputGlass, SearchBoxGlass
|
|
1002
|
+
- "form, validation" → InputGlass, CheckboxGlass, ToggleGlass, SliderGlass, FormFieldWrapper
|
|
1003
|
+
- "modal, dialog, popup" → ModalGlass
|
|
1004
|
+
- "dropdown, menu, select" → DropdownGlass, ComboBoxGlass, SortDropdownGlass
|
|
1005
|
+
- "notification, toast, alert, message" → NotificationGlass, AlertGlass, FlagAlertGlass
|
|
1006
|
+
- "progress, loading, spinner" → ProgressGlass, CircularProgressGlass, RainbowProgressGlass,
|
|
1007
|
+
SkeletonGlass
|
|
1008
|
+
- "card, container, box" → GlassCard, MetricCardGlass, AICardGlass, YearCardGlass,
|
|
1009
|
+
TrustScoreCardGlass
|
|
1010
|
+
- "avatar, profile, user" → AvatarGlass, ProfileAvatarGlass, ProfileHeaderGlass, UserInfoGlass
|
|
1011
|
+
- "badge, tag, label, status" → BadgeGlass, StatusIndicatorGlass
|
|
1012
|
+
- "tabs, navigation, switch" → TabsGlass, HeaderNavGlass, SegmentedControlGlass
|
|
1013
|
+
- "theme, dark mode" → ThemeProvider, ThemeToggleGlass, useTheme
|
|
1014
|
+
- "tooltip, hint, help" → TooltipGlass
|
|
1015
|
+
- "slider, range" → SliderGlass
|
|
1016
|
+
- "checkbox, check" → CheckboxGlass
|
|
1017
|
+
- "toggle, switch" → ToggleGlass
|
|
1018
|
+
- "search, filter" → SearchBoxGlass, ComboBoxGlass
|
|
1019
|
+
- "sort, order" → SortDropdownGlass
|
|
1020
|
+
- "stats, metrics, analytics" → StatItemGlass, MetricCardGlass, MetricsGridGlass
|
|
1021
|
+
- "repository, repo, project" → RepositoryCardGlass, ProjectsListGlass
|
|
1022
|
+
- "header, navigation, nav" → HeaderNavGlass, HeaderBrandingGlass
|
|
1023
|
+
- "expandable, collapsible, accordion" → ExpandableHeaderGlass
|
|
1024
|
+
- "touch, mobile, accessibility" → TouchTarget
|
|
1025
|
+
- "primitive, wrapper, container" → FormFieldWrapper, InteractiveCard, TouchTarget
|
|
1026
|
+
|
|
1027
|
+
---
|
|
1028
|
+
|
|
1029
|
+
## Quick Start Examples
|
|
1030
|
+
|
|
1031
|
+
### Simple Form
|
|
1032
|
+
|
|
1033
|
+
```tsx
|
|
1034
|
+
import { InputGlass, CheckboxGlass, ButtonGlass } from 'shadcn-glass-ui';
|
|
1035
|
+
|
|
1036
|
+
<form>
|
|
1037
|
+
<InputGlass label="Email" type="email" required />
|
|
1038
|
+
<InputGlass label="Password" type="password" required />
|
|
1039
|
+
<CheckboxGlass label="Remember me" />
|
|
1040
|
+
<ButtonGlass type="submit">Sign In</ButtonGlass>
|
|
1041
|
+
</form>;
|
|
1042
|
+
```
|
|
1043
|
+
|
|
1044
|
+
### Dashboard
|
|
1045
|
+
|
|
1046
|
+
```tsx
|
|
1047
|
+
import { MetricCardGlass, ProgressGlass, GlassCard } from 'shadcn-glass-ui';
|
|
1048
|
+
|
|
1049
|
+
<div className="grid grid-cols-3 gap-4">
|
|
1050
|
+
<MetricCardGlass label="Users" value="12,345" change={12.5} trend="up" />
|
|
1051
|
+
<MetricCardGlass label="Revenue" value="$45k" change={-3.2} trend="down" />
|
|
1052
|
+
<GlassCard>
|
|
1053
|
+
<ProgressGlass value={75} label="Completion" />
|
|
1054
|
+
</GlassCard>
|
|
1055
|
+
</div>;
|
|
1056
|
+
```
|
|
1057
|
+
|
|
1058
|
+
### Navigation
|
|
1059
|
+
|
|
1060
|
+
```tsx
|
|
1061
|
+
import { TabsGlass, ButtonGlass } from 'shadcn-glass-ui';
|
|
1062
|
+
|
|
1063
|
+
<TabsGlass.Root value={tab} onValueChange={setTab}>
|
|
1064
|
+
<TabsGlass.List>
|
|
1065
|
+
<TabsGlass.Trigger value="overview">Overview</TabsGlass.Trigger>
|
|
1066
|
+
<TabsGlass.Trigger value="analytics">Analytics</TabsGlass.Trigger>
|
|
1067
|
+
</TabsGlass.List>
|
|
1068
|
+
<TabsGlass.Content value="overview">...</TabsGlass.Content>
|
|
1069
|
+
<TabsGlass.Content value="analytics">...</TabsGlass.Content>
|
|
1070
|
+
</TabsGlass.Root>;
|
|
1071
|
+
```
|
|
1072
|
+
|
|
1073
|
+
---
|
|
1074
|
+
|
|
1075
|
+
**Total Components:** 55 **Total Variants:** 100+ **Accessibility:** WCAG 2.1 AA compliant
|
|
1076
|
+
**TypeScript:** Full type definitions **Themes:** 3 (glass, light, aurora)
|