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,290 +0,0 @@
|
|
|
1
|
-
# Dropdown Components Architecture
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
All dropdown-style components in the Glass UI library follow the **shadcn/ui compound component
|
|
6
|
-
pattern**, built on **Radix UI primitives** and **shared styling utilities**.
|
|
7
|
-
|
|
8
|
-
## Architecture
|
|
9
|
-
|
|
10
|
-
```
|
|
11
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
12
|
-
│ Radix UI Primitives │
|
|
13
|
-
│ @radix-ui/react-dropdown-menu │
|
|
14
|
-
└──────────────────────────────┬──────────────────────────────────┘
|
|
15
|
-
│
|
|
16
|
-
▼
|
|
17
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
18
|
-
│ Shared Styling Utilities │
|
|
19
|
-
│ src/lib/variants/dropdown-content-styles.ts │
|
|
20
|
-
└──────────────────────────────┬──────────────────────────────────┘
|
|
21
|
-
│
|
|
22
|
-
▼
|
|
23
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
24
|
-
│ DropdownMenuGlass (Compound Components) │
|
|
25
|
-
│ src/components/glass/ui/dropdown-menu-glass.tsx │
|
|
26
|
-
│ │
|
|
27
|
-
│ Exports: │
|
|
28
|
-
│ • DropdownMenuGlass (Root) │
|
|
29
|
-
│ • DropdownMenuGlassTrigger │
|
|
30
|
-
│ • DropdownMenuGlassContent │
|
|
31
|
-
│ • DropdownMenuGlassItem │
|
|
32
|
-
│ • DropdownMenuGlassSeparator │
|
|
33
|
-
│ • DropdownMenuGlassLabel │
|
|
34
|
-
│ • DropdownMenuGlassCheckboxItem │
|
|
35
|
-
│ • DropdownMenuGlassRadioGroup / RadioItem │
|
|
36
|
-
│ • DropdownMenuGlassSub / SubTrigger / SubContent │
|
|
37
|
-
│ • DropdownMenuGlassShortcut │
|
|
38
|
-
└──────────────────────────────┬──────────────────────────────────┘
|
|
39
|
-
│
|
|
40
|
-
┌───────────────┼───────────────┐
|
|
41
|
-
▼ ▼ ▼
|
|
42
|
-
┌──────────┐ ┌──────────┐ ┌───────────────┐
|
|
43
|
-
│ Dropdown │ │ Sort │ │ ComboBox │
|
|
44
|
-
│ Glass │ │ Dropdown │ │ Glass │
|
|
45
|
-
│ (Simple) │ │ Glass │ │ (Searchable) │
|
|
46
|
-
└──────────┘ └──────────┘ └───────────────┘
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Component APIs
|
|
50
|
-
|
|
51
|
-
### 1. DropdownMenuGlass (Compound Components) - shadcn/ui Pattern
|
|
52
|
-
|
|
53
|
-
**Location:** `src/components/glass/ui/dropdown-menu-glass.tsx`
|
|
54
|
-
|
|
55
|
-
**Purpose:** Base compound components for building any dropdown menu
|
|
56
|
-
|
|
57
|
-
```tsx
|
|
58
|
-
import {
|
|
59
|
-
DropdownMenuGlass,
|
|
60
|
-
DropdownMenuGlassTrigger,
|
|
61
|
-
DropdownMenuGlassContent,
|
|
62
|
-
DropdownMenuGlassItem,
|
|
63
|
-
DropdownMenuGlassSeparator,
|
|
64
|
-
DropdownMenuGlassLabel,
|
|
65
|
-
} from '@/components/glass/ui/dropdown-menu-glass';
|
|
66
|
-
|
|
67
|
-
// Basic usage
|
|
68
|
-
<DropdownMenuGlass>
|
|
69
|
-
<DropdownMenuGlassTrigger asChild>
|
|
70
|
-
<Button>Open Menu</Button>
|
|
71
|
-
</DropdownMenuGlassTrigger>
|
|
72
|
-
<DropdownMenuGlassContent>
|
|
73
|
-
<DropdownMenuGlassLabel>Actions</DropdownMenuGlassLabel>
|
|
74
|
-
<DropdownMenuGlassItem onSelect={() => console.log('Edit')}>
|
|
75
|
-
<Edit className="mr-2 h-4 w-4" />
|
|
76
|
-
Edit
|
|
77
|
-
</DropdownMenuGlassItem>
|
|
78
|
-
<DropdownMenuGlassSeparator />
|
|
79
|
-
<DropdownMenuGlassItem variant="destructive">
|
|
80
|
-
<Trash className="mr-2 h-4 w-4" />
|
|
81
|
-
Delete
|
|
82
|
-
</DropdownMenuGlassItem>
|
|
83
|
-
</DropdownMenuGlassContent>
|
|
84
|
-
</DropdownMenuGlass>;
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**Available Components:**
|
|
88
|
-
|
|
89
|
-
| Component | Description |
|
|
90
|
-
| ------------------------------- | ------------------------------- |
|
|
91
|
-
| `DropdownMenuGlass` | Root component (manages state) |
|
|
92
|
-
| `DropdownMenuGlassTrigger` | Trigger element (use `asChild`) |
|
|
93
|
-
| `DropdownMenuGlassContent` | Dropdown content container |
|
|
94
|
-
| `DropdownMenuGlassItem` | Menu item with `variant` prop |
|
|
95
|
-
| `DropdownMenuGlassSeparator` | Visual divider |
|
|
96
|
-
| `DropdownMenuGlassLabel` | Section label |
|
|
97
|
-
| `DropdownMenuGlassCheckboxItem` | Checkbox menu item |
|
|
98
|
-
| `DropdownMenuGlassRadioGroup` | Radio group container |
|
|
99
|
-
| `DropdownMenuGlassRadioItem` | Radio menu item |
|
|
100
|
-
| `DropdownMenuGlassSub` | Sub-menu root |
|
|
101
|
-
| `DropdownMenuGlassSubTrigger` | Sub-menu trigger |
|
|
102
|
-
| `DropdownMenuGlassSubContent` | Sub-menu content |
|
|
103
|
-
| `DropdownMenuGlassShortcut` | Keyboard shortcut hint |
|
|
104
|
-
|
|
105
|
-
### 2. DropdownGlass (Simple API)
|
|
106
|
-
|
|
107
|
-
**Location:** `src/components/glass/ui/dropdown-glass.tsx`
|
|
108
|
-
|
|
109
|
-
**Purpose:** Quick setup for basic dropdown menus (wrapper over compound components)
|
|
110
|
-
|
|
111
|
-
```tsx
|
|
112
|
-
import { DropdownGlass } from '@/components/glass/ui/dropdown-glass';
|
|
113
|
-
|
|
114
|
-
<DropdownGlass
|
|
115
|
-
trigger={
|
|
116
|
-
<button>
|
|
117
|
-
<MoreVertical />
|
|
118
|
-
</button>
|
|
119
|
-
}
|
|
120
|
-
items={[
|
|
121
|
-
{ label: 'Edit', icon: Edit, onClick: handleEdit },
|
|
122
|
-
{ divider: true },
|
|
123
|
-
{ label: 'Delete', icon: Trash, onClick: handleDelete, danger: true },
|
|
124
|
-
]}
|
|
125
|
-
align="left"
|
|
126
|
-
/>;
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
**When to use:**
|
|
130
|
-
|
|
131
|
-
- Simple menus with items, dividers, and icons
|
|
132
|
-
- No need for checkboxes, radio groups, or sub-menus
|
|
133
|
-
|
|
134
|
-
### 3. SortDropdownGlass (Specialized)
|
|
135
|
-
|
|
136
|
-
**Location:** `src/components/glass/atomic/sort-dropdown-glass.tsx`
|
|
137
|
-
|
|
138
|
-
**Purpose:** Sort field selection with order toggle
|
|
139
|
-
|
|
140
|
-
```tsx
|
|
141
|
-
import { SortDropdownGlass } from '@/components/glass/atomic/sort-dropdown-glass';
|
|
142
|
-
|
|
143
|
-
<SortDropdownGlass
|
|
144
|
-
sortBy="commits"
|
|
145
|
-
sortOrder="desc"
|
|
146
|
-
onSortChange={(field, order) => console.log(field, order)}
|
|
147
|
-
options={['commits', 'stars', 'name']}
|
|
148
|
-
compact={false}
|
|
149
|
-
/>;
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
**Built on:** DropdownMenuGlass compound components
|
|
153
|
-
|
|
154
|
-
### 4. ComboBoxGlass (Searchable)
|
|
155
|
-
|
|
156
|
-
**Location:** `src/components/glass/ui/combobox-glass.tsx`
|
|
157
|
-
|
|
158
|
-
**Purpose:** Searchable select dropdown with filtering
|
|
159
|
-
|
|
160
|
-
```tsx
|
|
161
|
-
import { ComboBoxGlass } from '@/components/glass/ui/combobox-glass';
|
|
162
|
-
|
|
163
|
-
<ComboBoxGlass
|
|
164
|
-
options={[
|
|
165
|
-
{ value: '1', label: 'Option 1' },
|
|
166
|
-
{ value: '2', label: 'Option 2' },
|
|
167
|
-
]}
|
|
168
|
-
value={selectedValue}
|
|
169
|
-
onChange={setSelectedValue}
|
|
170
|
-
searchable
|
|
171
|
-
/>;
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
**Built on:** Radix UI Popover + shadcn Command (separate pattern for search)
|
|
175
|
-
|
|
176
|
-
## Shared Styling
|
|
177
|
-
|
|
178
|
-
### CSS Variables
|
|
179
|
-
|
|
180
|
-
```css
|
|
181
|
-
--dropdown-bg /* Background color */
|
|
182
|
-
--dropdown-border /* Border color */
|
|
183
|
-
--dropdown-glow /* Shadow/glow effect */
|
|
184
|
-
--dropdown-item-text /* Item text color */
|
|
185
|
-
--dropdown-item-hover /* Hover background */
|
|
186
|
-
--dropdown-icon /* Icon color */
|
|
187
|
-
--dropdown-icon-hover /* Icon hover color */
|
|
188
|
-
--dropdown-divider /* Separator color */
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### Styling Utilities
|
|
192
|
-
|
|
193
|
-
**Location:** `src/lib/variants/dropdown-content-styles.ts`
|
|
194
|
-
|
|
195
|
-
```typescript
|
|
196
|
-
// Glass surface styling
|
|
197
|
-
getDropdownContentStyles(): CSSProperties
|
|
198
|
-
|
|
199
|
-
// Container classes
|
|
200
|
-
dropdownContentClasses: string
|
|
201
|
-
|
|
202
|
-
// Item classes with state support
|
|
203
|
-
getDropdownItemClasses({ danger?, selected?, highlighted? }): string
|
|
204
|
-
|
|
205
|
-
// Icon classes
|
|
206
|
-
getDropdownIconClasses({ danger? }): string
|
|
207
|
-
|
|
208
|
-
// Other classes
|
|
209
|
-
dropdownSeparatorClasses: string
|
|
210
|
-
dropdownLabelClasses: string
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## Creating New Dropdown Components
|
|
214
|
-
|
|
215
|
-
### Step 1: Import DropdownMenuGlass primitives
|
|
216
|
-
|
|
217
|
-
```tsx
|
|
218
|
-
import {
|
|
219
|
-
DropdownMenuGlass,
|
|
220
|
-
DropdownMenuGlassTrigger,
|
|
221
|
-
DropdownMenuGlassContent,
|
|
222
|
-
DropdownMenuGlassItem,
|
|
223
|
-
} from '@/components/glass/ui/dropdown-menu-glass';
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### Step 2: Build your component
|
|
227
|
-
|
|
228
|
-
```tsx
|
|
229
|
-
export function MyDropdown({ value, onChange, options }) {
|
|
230
|
-
return (
|
|
231
|
-
<DropdownMenuGlass>
|
|
232
|
-
<DropdownMenuGlassTrigger asChild>
|
|
233
|
-
<button>{value}</button>
|
|
234
|
-
</DropdownMenuGlassTrigger>
|
|
235
|
-
<DropdownMenuGlassContent>
|
|
236
|
-
{options.map((opt) => (
|
|
237
|
-
<DropdownMenuGlassItem key={opt.value} onSelect={() => onChange(opt.value)}>
|
|
238
|
-
{opt.label}
|
|
239
|
-
</DropdownMenuGlassItem>
|
|
240
|
-
))}
|
|
241
|
-
</DropdownMenuGlassContent>
|
|
242
|
-
</DropdownMenuGlass>
|
|
243
|
-
);
|
|
244
|
-
}
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
### Step 3: Add custom styling if needed
|
|
248
|
-
|
|
249
|
-
```tsx
|
|
250
|
-
<DropdownMenuGlassItem
|
|
251
|
-
className={cn(
|
|
252
|
-
'justify-between',
|
|
253
|
-
isSelected && 'bg-(--select-item-selected-bg)'
|
|
254
|
-
)}
|
|
255
|
-
>
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
## Benefits
|
|
259
|
-
|
|
260
|
-
1. **shadcn/ui Compatible**: Same compound component pattern
|
|
261
|
-
2. **Composable**: Mix and match components as needed
|
|
262
|
-
3. **Accessible**: Full Radix UI accessibility support
|
|
263
|
-
4. **Themeable**: Uses CSS variables for easy customization
|
|
264
|
-
5. **Tree-shakeable**: Import only what you need
|
|
265
|
-
|
|
266
|
-
## Migration from v1.x
|
|
267
|
-
|
|
268
|
-
### SortDropdownGlass Changes
|
|
269
|
-
|
|
270
|
-
**Before (v1.x):**
|
|
271
|
-
|
|
272
|
-
- Manual state management with useState
|
|
273
|
-
- Custom click outside/Escape handlers
|
|
274
|
-
- Z-index hacks
|
|
275
|
-
|
|
276
|
-
**After (v2.x):**
|
|
277
|
-
|
|
278
|
-
- Built on DropdownMenuGlass primitives
|
|
279
|
-
- Radix UI handles all interactions
|
|
280
|
-
- No z-index issues
|
|
281
|
-
|
|
282
|
-
The API remains the same - no breaking changes for consumers.
|
|
283
|
-
|
|
284
|
-
## Related Files
|
|
285
|
-
|
|
286
|
-
- `src/components/glass/ui/dropdown-menu-glass.tsx` - Compound components
|
|
287
|
-
- `src/components/glass/ui/dropdown-glass.tsx` - Simple API wrapper
|
|
288
|
-
- `src/components/glass/atomic/sort-dropdown-glass.tsx` - Sort dropdown
|
|
289
|
-
- `src/components/glass/ui/combobox-glass.tsx` - Searchable dropdown
|
|
290
|
-
- `src/lib/variants/dropdown-content-styles.ts` - Shared styling
|
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
# MetricCardGlass API Redesign
|
|
2
|
-
|
|
3
|
-
## Goal
|
|
4
|
-
|
|
5
|
-
Make `MetricCardGlass` fully compatible with **shadcn/ui patterns** and **consistent** with other
|
|
6
|
-
Glass UI library components.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 📋 Analysis of Existing Glass UI Patterns
|
|
11
|
-
|
|
12
|
-
### 1. Variant System Pattern
|
|
13
|
-
|
|
14
|
-
All components follow a unified variant system:
|
|
15
|
-
|
|
16
|
-
#### AlertGlass
|
|
17
|
-
|
|
18
|
-
```tsx
|
|
19
|
-
variant?: 'default' | 'destructive' | 'success' | 'warning'
|
|
20
|
-
// ^^^^^^^^ ^^^^^^^^^^^^ shadcn/ui compatible
|
|
21
|
-
// ^^^^^^^^ ^^^^^^^^ Glass UI extensions
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
#### BadgeGlass
|
|
25
|
-
|
|
26
|
-
```tsx
|
|
27
|
-
variant?: 'default' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'info'
|
|
28
|
-
// ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ shadcn/ui
|
|
29
|
-
// ^^^^^^^^ ^^^^^^^^ ^^^^^ Glass UI
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
#### ButtonGlass
|
|
33
|
-
|
|
34
|
-
```tsx
|
|
35
|
-
variant?: 'primary' | 'secondary' | 'ghost' | 'destructive' | 'success' | 'text'
|
|
36
|
-
// ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^ shadcn/ui-like
|
|
37
|
-
// ^^^^^^^^^ Glass UI
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
**Conclusion:** Uses `variant` prop with base shadcn/ui variants + extensions.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
### 2. CSS Variables Pattern
|
|
45
|
-
|
|
46
|
-
All components use CSS variables for styling:
|
|
47
|
-
|
|
48
|
-
```tsx
|
|
49
|
-
// AlertGlass
|
|
50
|
-
const variantStyles: Record<AlertVariant, AlertStyleVars> = {
|
|
51
|
-
default: {
|
|
52
|
-
bg: 'var(--alert-default-bg)',
|
|
53
|
-
border: 'var(--alert-default-border)',
|
|
54
|
-
text: 'var(--alert-default-text)',
|
|
55
|
-
},
|
|
56
|
-
destructive: { ... },
|
|
57
|
-
success: { ... },
|
|
58
|
-
};
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**Conclusion:** Each variant has corresponding CSS variables in the format
|
|
62
|
-
`--component-variant-property`.
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
### 3. Props Interface Pattern
|
|
67
|
-
|
|
68
|
-
Standard structure:
|
|
69
|
-
|
|
70
|
-
```tsx
|
|
71
|
-
export interface ComponentProps
|
|
72
|
-
extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof componentVariants> {
|
|
73
|
-
// Required props
|
|
74
|
-
readonly label: string;
|
|
75
|
-
readonly value: string | number;
|
|
76
|
-
|
|
77
|
-
// Optional extensions
|
|
78
|
-
readonly icon?: ReactNode;
|
|
79
|
-
readonly variant?: Variant;
|
|
80
|
-
readonly size?: Size;
|
|
81
|
-
}
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
**Conclusion:** Uses `readonly`, extends `HTMLAttributes`, integrates with CVA
|
|
85
|
-
(class-variance-authority).
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## 🔍 Analysis of Current MetricCardGlass API
|
|
90
|
-
|
|
91
|
-
### Problems:
|
|
92
|
-
|
|
93
|
-
1. **❌ No `variant` system**
|
|
94
|
-
- Uses custom `color` instead of standard `variant`
|
|
95
|
-
- Colors: `'emerald' | 'amber' | 'blue' | 'red'` don't match shadcn/ui
|
|
96
|
-
|
|
97
|
-
2. **❌ Complex data model**
|
|
98
|
-
- `value` as percentage 0-100 + `valueFormatter` - unintuitive
|
|
99
|
-
- Requires math for displaying real values
|
|
100
|
-
|
|
101
|
-
3. **❌ Incompatible with shadcn/ui**
|
|
102
|
-
- Uses `label` instead of standard `title` from shadcn/ui Card
|
|
103
|
-
- No `description` support
|
|
104
|
-
|
|
105
|
-
4. **❌ `trend` object too complex**
|
|
106
|
-
- Requires `{ value: number, direction: 'up' | 'down', label?: string }`
|
|
107
|
-
- shadcn/ui typically uses a simple `change` string
|
|
108
|
-
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
## ✅ Proposed Solution
|
|
112
|
-
|
|
113
|
-
### New API (v2.0)
|
|
114
|
-
|
|
115
|
-
```tsx
|
|
116
|
-
// ========================================
|
|
117
|
-
// TYPES
|
|
118
|
-
// ========================================
|
|
119
|
-
|
|
120
|
-
export type MetricVariant =
|
|
121
|
-
| 'default' // shadcn/ui base
|
|
122
|
-
| 'secondary' // shadcn/ui base
|
|
123
|
-
| 'success' // Glass UI extension
|
|
124
|
-
| 'warning' // Glass UI extension
|
|
125
|
-
| 'destructive'; // shadcn/ui base
|
|
126
|
-
|
|
127
|
-
export type TrendDirection = 'up' | 'down' | 'neutral';
|
|
128
|
-
|
|
129
|
-
export interface MetricChange {
|
|
130
|
-
/** Change value (e.g., 12.5 for +12.5%) */
|
|
131
|
-
readonly value: number;
|
|
132
|
-
/** Trend direction */
|
|
133
|
-
readonly direction?: TrendDirection;
|
|
134
|
-
/** Optional period label (e.g., "vs last month") */
|
|
135
|
-
readonly period?: string;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export interface MetricCardGlassProps
|
|
139
|
-
extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof metricCardVariants> {
|
|
140
|
-
// ========================================
|
|
141
|
-
// CORE PROPS (shadcn/ui compatible)
|
|
142
|
-
// ========================================
|
|
143
|
-
|
|
144
|
-
/** Metric title (shadcn/ui Card: title) */
|
|
145
|
-
readonly title: string;
|
|
146
|
-
|
|
147
|
-
/** Display value (shadcn/ui Card: value) */
|
|
148
|
-
readonly value: string | number;
|
|
149
|
-
|
|
150
|
-
/** Optional description (shadcn/ui Card: description) */
|
|
151
|
-
readonly description?: string;
|
|
152
|
-
|
|
153
|
-
/** Change indicator (shadcn/ui: change) */
|
|
154
|
-
readonly change?: string | number | MetricChange;
|
|
155
|
-
|
|
156
|
-
/** Semantic variant (shadcn/ui: variant) */
|
|
157
|
-
readonly variant?: MetricVariant;
|
|
158
|
-
|
|
159
|
-
// ========================================
|
|
160
|
-
// GLASS UI EXTENSIONS
|
|
161
|
-
// ========================================
|
|
162
|
-
|
|
163
|
-
/** Icon to display */
|
|
164
|
-
readonly icon?: ReactNode;
|
|
165
|
-
|
|
166
|
-
/** Data for sparkline visualization */
|
|
167
|
-
readonly sparklineData?: readonly number[];
|
|
168
|
-
|
|
169
|
-
/** Show sparkline chart */
|
|
170
|
-
readonly showSparkline?: boolean;
|
|
171
|
-
|
|
172
|
-
/** Show progress bar (value must be 0-100) */
|
|
173
|
-
readonly showProgress?: boolean;
|
|
174
|
-
|
|
175
|
-
/** Progress percentage (0-100, separate from display value) */
|
|
176
|
-
readonly progress?: number;
|
|
177
|
-
}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## 📝 Usage Examples
|
|
183
|
-
|
|
184
|
-
### Simple variant (shadcn/ui style)
|
|
185
|
-
|
|
186
|
-
```tsx
|
|
187
|
-
<MetricCardGlass
|
|
188
|
-
title="Total Revenue"
|
|
189
|
-
value="$45,231"
|
|
190
|
-
change="+12.5%"
|
|
191
|
-
variant="success"
|
|
192
|
-
icon={<DollarSign />}
|
|
193
|
-
/>
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### With detailed change object
|
|
197
|
-
|
|
198
|
-
```tsx
|
|
199
|
-
<MetricCardGlass
|
|
200
|
-
title="Total Revenue"
|
|
201
|
-
value="$45,231"
|
|
202
|
-
change={{
|
|
203
|
-
value: 12.5,
|
|
204
|
-
direction: 'up',
|
|
205
|
-
period: 'vs last month',
|
|
206
|
-
}}
|
|
207
|
-
variant="success"
|
|
208
|
-
icon={<DollarSign />}
|
|
209
|
-
/>
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
### With progress and sparkline (Glass UI extensions)
|
|
213
|
-
|
|
214
|
-
```tsx
|
|
215
|
-
<MetricCardGlass
|
|
216
|
-
title="Completion Rate"
|
|
217
|
-
value="85%"
|
|
218
|
-
description="Project progress"
|
|
219
|
-
change="+5.2%"
|
|
220
|
-
variant="success"
|
|
221
|
-
progress={85}
|
|
222
|
-
sparklineData={[70, 75, 78, 80, 82, 84, 85]}
|
|
223
|
-
showProgress
|
|
224
|
-
showSparkline
|
|
225
|
-
/>
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
### Backward Compatibility (optional)
|
|
229
|
-
|
|
230
|
-
To support the old API, aliases can be added:
|
|
231
|
-
|
|
232
|
-
```tsx
|
|
233
|
-
<MetricCardGlass
|
|
234
|
-
label="Total Revenue" // ⚠️ deprecated, use title
|
|
235
|
-
value={75}
|
|
236
|
-
valueFormatter={(v) => `$${v}`} // ⚠️ deprecated, use value directly
|
|
237
|
-
color="emerald" // ⚠️ deprecated, use variant="success"
|
|
238
|
-
/>
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## 🎨 Mapping: old API → new API
|
|
244
|
-
|
|
245
|
-
| Old API | New API | Note |
|
|
246
|
-
| ----------------------------- | -------------------------- | ------------------------------------- |
|
|
247
|
-
| `label` | `title` | shadcn/ui standard |
|
|
248
|
-
| `value: number (0-100)` | `value: string \| number` | Simplification |
|
|
249
|
-
| `valueFormatter` | — | Removed, format before passing |
|
|
250
|
-
| `valueSuffix` | `description` | shadcn/ui standard |
|
|
251
|
-
| `color: 'emerald'` | `variant: 'success'` | Unification |
|
|
252
|
-
| `color: 'amber'` | `variant: 'warning'` | Unification |
|
|
253
|
-
| `color: 'blue'` | `variant: 'default'` | Unification |
|
|
254
|
-
| `color: 'red'` | `variant: 'destructive'` | Unification |
|
|
255
|
-
| `trend: { value, direction }` | `change: string \| object` | Simplification |
|
|
256
|
-
| — | `progress: number` | New: separation of value and progress |
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
## 🛠 CSS Variables Structure
|
|
261
|
-
|
|
262
|
-
Following the library pattern:
|
|
263
|
-
|
|
264
|
-
```css
|
|
265
|
-
/* glass-theme.css */
|
|
266
|
-
|
|
267
|
-
/* Default variant */
|
|
268
|
-
--metric-default-bg: rgba(255, 255, 255, 0.08);
|
|
269
|
-
--metric-default-border: rgba(255, 255, 255, 0.15);
|
|
270
|
-
--metric-default-text: var(--text-primary);
|
|
271
|
-
--metric-default-glow: 0 0 20px rgba(59, 130, 246, 0.3);
|
|
272
|
-
|
|
273
|
-
/* Success variant (emerald) */
|
|
274
|
-
--metric-success-bg: rgba(16, 185, 129, 0.08);
|
|
275
|
-
--metric-success-border: rgba(16, 185, 129, 0.25);
|
|
276
|
-
--metric-success-text: rgb(52, 211, 153);
|
|
277
|
-
--metric-success-glow: 0 0 20px rgba(16, 185, 129, 0.3);
|
|
278
|
-
|
|
279
|
-
/* Warning variant (amber) */
|
|
280
|
-
--metric-warning-bg: rgba(245, 158, 11, 0.08);
|
|
281
|
-
--metric-warning-border: rgba(245, 158, 11, 0.25);
|
|
282
|
-
--metric-warning-text: rgb(251, 191, 36);
|
|
283
|
-
--metric-warning-glow: 0 0 20px rgba(245, 158, 11, 0.3);
|
|
284
|
-
|
|
285
|
-
/* Destructive variant (red/rose) */
|
|
286
|
-
--metric-destructive-bg: rgba(244, 63, 94, 0.08);
|
|
287
|
-
--metric-destructive-border: rgba(244, 63, 94, 0.25);
|
|
288
|
-
--metric-destructive-text: rgb(251, 113, 133);
|
|
289
|
-
--metric-destructive-glow: 0 0 20px rgba(244, 63, 94, 0.3);
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
---
|
|
293
|
-
|
|
294
|
-
## 🎯 Advantages of New API
|
|
295
|
-
|
|
296
|
-
### 1. **shadcn/ui compatibility** ✅
|
|
297
|
-
|
|
298
|
-
- Uses standard props: `title`, `value`, `description`, `variant`
|
|
299
|
-
- Can easily be replaced with shadcn/ui Card without API changes
|
|
300
|
-
|
|
301
|
-
### 2. **Consistency with the library** ✅
|
|
302
|
-
|
|
303
|
-
- Follows `AlertGlass`, `BadgeGlass`, `ButtonGlass` patterns
|
|
304
|
-
- Uses unified `variant` system
|
|
305
|
-
- CSS variables in unified format
|
|
306
|
-
|
|
307
|
-
### 3. **Ease of use** ✅
|
|
308
|
-
|
|
309
|
-
- No need for `valueFormatter` and math
|
|
310
|
-
- Simple string `change="+12.5%"` instead of object
|
|
311
|
-
- Clear separation of `value` (display) and `progress` (0-100)
|
|
312
|
-
|
|
313
|
-
### 4. **Flexibility** ✅
|
|
314
|
-
|
|
315
|
-
- Supports both simple strings and objects for `change`
|
|
316
|
-
- Optional Glass UI extensions (sparkline, progress)
|
|
317
|
-
- Backward compatibility through aliases (optional)
|
|
318
|
-
|
|
319
|
-
---
|
|
320
|
-
|
|
321
|
-
## 🚀 Migration Plan
|
|
322
|
-
|
|
323
|
-
### Step 1: Create new component
|
|
324
|
-
|
|
325
|
-
- [ ] Create `metric-card-glass-v2.tsx` with new API
|
|
326
|
-
- [ ] Add CVA variants to `metric-card-glass-variants.ts`
|
|
327
|
-
- [ ] Add CSS variables to `glass-theme.css`
|
|
328
|
-
|
|
329
|
-
### Step 2: Testing
|
|
330
|
-
|
|
331
|
-
- [ ] Create stories for new API
|
|
332
|
-
- [ ] Add unit tests
|
|
333
|
-
- [ ] Add visual regression tests
|
|
334
|
-
|
|
335
|
-
### Step 3: Migration
|
|
336
|
-
|
|
337
|
-
- [ ] Update `dashboard.stories.tsx`
|
|
338
|
-
- [ ] Update other usages
|
|
339
|
-
- [ ] Add deprecation warnings for old API
|
|
340
|
-
|
|
341
|
-
### Step 4: Documentation
|
|
342
|
-
|
|
343
|
-
- [ ] Update Storybook docs
|
|
344
|
-
- [ ] Add migration guide
|
|
345
|
-
- [ ] Update README
|
|
346
|
-
|
|
347
|
-
---
|
|
348
|
-
|
|
349
|
-
## 📚 References
|
|
350
|
-
|
|
351
|
-
- [Card - shadcn/ui](https://ui.shadcn.com/docs/components/card)
|
|
352
|
-
- [The Anatomy of shadcn/ui Components | Vercel Academy](https://vercel.com/academy/shadcn-ui/extending-shadcn-ui-with-custom-components)
|
|
353
|
-
- [Shadcn UI Dashboard Widgets](https://shadcnstore.com/blocks/application/widgets)
|
|
354
|
-
- [Stat Cards - Shadcn UI Kit](https://shadcnuikit.com/components/cards/stat)
|