astro-component-kit 0.0.1
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/LICENSE +21 -0
- package/README.md +262 -0
- package/dist/AnimatedInput.astro +82 -0
- package/dist/Badge.astro +52 -0
- package/dist/GlassButton.astro +87 -0
- package/dist/GlassCard.astro +72 -0
- package/dist/GlassNavbar.astro +65 -0
- package/dist/GlowButton.astro +60 -0
- package/dist/buttons/3dPushButton.astro +136 -0
- package/dist/buttons/AnimatedIconButton.astro +146 -0
- package/dist/buttons/BorderDrawButton.astro +112 -0
- package/dist/buttons/CyberpunkButton.astro +148 -0
- package/dist/buttons/DoubleBorderButton.astro +131 -0
- package/dist/buttons/GhostOutlineButton.astro +109 -0
- package/dist/buttons/GlassButton.astro +165 -0
- package/dist/buttons/GlowButton.astro +119 -0
- package/dist/buttons/LiquidButton.astro +167 -0
- package/dist/buttons/LoadingButton.astro +148 -0
- package/dist/buttons/MagneticButton.astro +134 -0
- package/dist/buttons/MinimalPillButton.astro +102 -0
- package/dist/buttons/NeumorphicButton.astro +158 -0
- package/dist/buttons/PulseButton.astro +111 -0
- package/dist/buttons/RetroArcadeButton.astro +105 -0
- package/dist/buttons/RetroShadowButton.astro +82 -0
- package/dist/buttons/ShimmerButton.astro +113 -0
- package/dist/buttons/ShinyButton.astro +121 -0
- package/dist/buttons/TiltGlowButton.astro +145 -0
- package/dist/buttons/index.mjs +19 -0
- package/dist/buttons/index.ts +19 -0
- package/dist/cards/BlogHorizontalCard.astro +18 -0
- package/dist/cards/CyberFeatureCard.astro +12 -0
- package/dist/cards/EcommerceProductCard.astro +24 -0
- package/dist/cards/GlassCard.astro +17 -0
- package/dist/cards/GlassEventCard.astro +19 -0
- package/dist/cards/GlowPortfolioCard.astro +16 -0
- package/dist/cards/InteractiveTiltCard.astro +25 -0
- package/dist/cards/KanbanItemCard.astro +15 -0
- package/dist/cards/MinimalLinkCard.astro +12 -0
- package/dist/cards/MusicPlayerMini.astro +21 -0
- package/dist/cards/NeumorphicCard.astro +6 -0
- package/dist/cards/NotificationCard.astro +15 -0
- package/dist/cards/PricingCard.astro +17 -0
- package/dist/cards/ProfileCard.astro +17 -0
- package/dist/cards/RetroGameCard.astro +15 -0
- package/dist/cards/StatCard.astro +15 -0
- package/dist/cards/TaskKanbanCard.astro +18 -0
- package/dist/cards/TestimonialCardClean.astro +20 -0
- package/dist/cards/WeatherWidgetCard.astro +17 -0
- package/dist/cards/index.mjs +19 -0
- package/dist/cards/index.ts +19 -0
- package/dist/data/AccordionGroupGlass.astro +21 -0
- package/dist/data/AvatarGroupStack.astro +15 -0
- package/dist/data/CalendarGridView.astro +18 -0
- package/dist/data/DataChipsGroup.astro +16 -0
- package/dist/data/DescriptionListHoriz.astro +14 -0
- package/dist/data/FileTreeView.astro +22 -0
- package/dist/data/GanttChartMinimal.astro +12 -0
- package/dist/data/GlassTable.astro +23 -0
- package/dist/data/KeyValuePillGroup.astro +12 -0
- package/dist/data/PriceCompareTable.astro +22 -0
- package/dist/data/ProgressListSmall.astro +17 -0
- package/dist/data/RatingBreakdownBar.astro +13 -0
- package/dist/data/SparklineStatCard.astro +16 -0
- package/dist/data/StatsGridDashboard.astro +16 -0
- package/dist/data/StepperDataVertical.astro +15 -0
- package/dist/data/TagCloudData.astro +14 -0
- package/dist/data/TimelineHorizSteps.astro +18 -0
- package/dist/data/TreeItemInteractive.astro +18 -0
- package/dist/data/UserDirectoryItem.astro +15 -0
- package/dist/data/VerticalTimeline.astro +21 -0
- package/dist/data/index.mjs +20 -0
- package/dist/data/index.ts +20 -0
- package/dist/feedback/AnimatedCheckmark.astro +13 -0
- package/dist/feedback/Badge.astro +19 -0
- package/dist/feedback/CircleProgress.astro +22 -0
- package/dist/feedback/ConfettiFeedback.astro +18 -0
- package/dist/feedback/CyberGlitchAlert.astro +11 -0
- package/dist/feedback/EmptyStateCard.astro +13 -0
- package/dist/feedback/GlassAlert.astro +20 -0
- package/dist/feedback/GlassModal.astro +19 -0
- package/dist/feedback/GlassProgress.astro +10 -0
- package/dist/feedback/IndicatorBadgeMinimal.astro +10 -0
- package/dist/feedback/NeonSpinner.astro +7 -0
- package/dist/feedback/PulseDot.astro +12 -0
- package/dist/feedback/RatingPill.astro +13 -0
- package/dist/feedback/ShakeErrorGroup.astro +7 -0
- package/dist/feedback/SimpleTooltip.astro +10 -0
- package/dist/feedback/SkeletonList.astro +20 -0
- package/dist/feedback/Spotlight.astro +9 -0
- package/dist/feedback/StepProgress.astro +14 -0
- package/dist/feedback/ToastNotif.astro +11 -0
- package/dist/feedback/TypingIndicator.astro +12 -0
- package/dist/feedback/index.mjs +20 -0
- package/dist/feedback/index.ts +20 -0
- package/dist/forms/AnimatedInput.astro +16 -0
- package/dist/forms/ChipInput.astro +13 -0
- package/dist/forms/ColorPickerInput.astro +13 -0
- package/dist/forms/CurrencyInput.astro +11 -0
- package/dist/forms/CustomRadioGroup.astro +13 -0
- package/dist/forms/CyberpunkCheckbox.astro +15 -0
- package/dist/forms/DragDropUpload.astro +12 -0
- package/dist/forms/ErrorInput.astro +11 -0
- package/dist/forms/FloatingPassword.astro +20 -0
- package/dist/forms/FormGroupVertical.astro +14 -0
- package/dist/forms/GlassSlider.astro +7 -0
- package/dist/forms/GlassTextarea.astro +14 -0
- package/dist/forms/ModernSelect.astro +16 -0
- package/dist/forms/NeumorphicSwitch.astro +55 -0
- package/dist/forms/OTPInput.astro +22 -0
- package/dist/forms/RatingStars.astro +15 -0
- package/dist/forms/SearchReveal.astro +13 -0
- package/dist/forms/SegmentedControl.astro +13 -0
- package/dist/forms/SimpleFileInput.astro +11 -0
- package/dist/forms/StepperInput.astro +14 -0
- package/dist/forms/index.mjs +20 -0
- package/dist/forms/index.ts +20 -0
- package/dist/index.js +1 -0
- package/dist/index.mjs +1 -0
- package/dist/layout/BentoGrid3.astro +14 -0
- package/dist/layout/CenterFixedBox.astro +6 -0
- package/dist/layout/CenteredContainer.astro +8 -0
- package/dist/layout/ClusterHorizontal.astro +6 -0
- package/dist/layout/FeatureHero.astro +17 -0
- package/dist/layout/FooterCenteredMinimal.astro +11 -0
- package/dist/layout/FullBleedSection.astro +6 -0
- package/dist/layout/GalleryGrid4.astro +7 -0
- package/dist/layout/GlassCardGrid.astro +6 -0
- package/dist/layout/GlassSectionHeader.astro +15 -0
- package/dist/layout/LandingSectionSplit.astro +13 -0
- package/dist/layout/MasonryGrid.astro +7 -0
- package/dist/layout/MinimalFooterGrid.astro +20 -0
- package/dist/layout/ScrollSnapSection.astro +7 -0
- package/dist/layout/SectionDividerText.astro +7 -0
- package/dist/layout/SidebarLayoutWrapper.astro +11 -0
- package/dist/layout/SplitScreenLayout.astro +11 -0
- package/dist/layout/StepLayoutVertical.astro +21 -0
- package/dist/layout/StickySidebarWrapper.astro +10 -0
- package/dist/layout/VerticalStack.astro +8 -0
- package/dist/layout/index.mjs +20 -0
- package/dist/layout/index.ts +20 -0
- package/dist/navigation/AnchorSideNav.astro +13 -0
- package/dist/navigation/BottomNavMobile.astro +13 -0
- package/dist/navigation/BreadcrumbsMinimal.astro +16 -0
- package/dist/navigation/BurgerMorphIcon.astro +12 -0
- package/dist/navigation/CommandPaletteUI.astro +17 -0
- package/dist/navigation/DotNavigationSlider.astro +13 -0
- package/dist/navigation/FloatingTabBar.astro +12 -0
- package/dist/navigation/GlassNavbar.astro +19 -0
- package/dist/navigation/LangSwitcherPill.astro +17 -0
- package/dist/navigation/MegaMenuGlass.astro +25 -0
- package/dist/navigation/MinimalSidebar.astro +18 -0
- package/dist/navigation/PaginationGlass.astro +20 -0
- package/dist/navigation/PaginationInfiniteUI.astro +11 -0
- package/dist/navigation/RadialIconMenu.astro +15 -0
- package/dist/navigation/RetroArcadeMenu.astro +12 -0
- package/dist/navigation/ScrollProgressTop.astro +15 -0
- package/dist/navigation/SimpleFooterGlass.astro +21 -0
- package/dist/navigation/TabUnderline.astro +14 -0
- package/dist/navigation/UserProfileNav.astro +21 -0
- package/dist/navigation/VerticalTabs.astro +14 -0
- package/dist/navigation/index.mjs +20 -0
- package/dist/navigation/index.ts +20 -0
- package/dist/overlays/AgeVerificationOverlay.astro +20 -0
- package/dist/overlays/BackdropBlurMask.astro +6 -0
- package/dist/overlays/BottomSheetMobile.astro +16 -0
- package/dist/overlays/CommandDialog.astro +19 -0
- package/dist/overlays/ContextMenuOverlay.astro +17 -0
- package/dist/overlays/CookieBannerGlass.astro +14 -0
- package/dist/overlays/ExitIntentOverlay.astro +19 -0
- package/dist/overlays/FloatingTrayActions.astro +13 -0
- package/dist/overlays/HelpBubbleOverlay.astro +11 -0
- package/dist/overlays/LightboxOverlay.astro +13 -0
- package/dist/overlays/LoadingOverlayFull.astro +10 -0
- package/dist/overlays/MobileNavOverlay.astro +18 -0
- package/dist/overlays/OverlayModal.astro +24 -0
- package/dist/overlays/PopoverMenuGlass.astro +17 -0
- package/dist/overlays/SearchOverlayFullscreen.astro +15 -0
- package/dist/overlays/SideDrawerRight.astro +16 -0
- package/dist/overlays/SplashIntroOverlay.astro +11 -0
- package/dist/overlays/SpotlightIndicator.astro +6 -0
- package/dist/overlays/ToastStackOverlay.astro +12 -0
- package/dist/overlays/TooltipActionTray.astro +14 -0
- package/dist/overlays/index.mjs +20 -0
- package/dist/overlays/index.ts +20 -0
- package/dist/styles/global.css +142 -0
- package/dist/typography/AnimatedUnderlineLink.astro +10 -0
- package/dist/typography/BackgroundClipMask.astro +7 -0
- package/dist/typography/CodeInlineGlass.astro +6 -0
- package/dist/typography/CyberpunkGlitchText.astro +20 -0
- package/dist/typography/DropCapParagraph.astro +7 -0
- package/dist/typography/FadedVerticalText.astro +6 -0
- package/dist/typography/FloatingTextLabel.astro +10 -0
- package/dist/typography/GlassBlockQuote.astro +13 -0
- package/dist/typography/GlassTextReveal.astro +7 -0
- package/dist/typography/GradientHeading.astro +9 -0
- package/dist/typography/GradientUnderlineLink.astro +7 -0
- package/dist/typography/KbdIndicator.astro +6 -0
- package/dist/typography/LetterSpacingWide.astro +6 -0
- package/dist/typography/MinimalListMarkers.astro +10 -0
- package/dist/typography/MonospaceStatLine.astro +6 -0
- package/dist/typography/NeonTextHighlight.astro +6 -0
- package/dist/typography/ShadowRevealText.astro +7 -0
- package/dist/typography/StrokeHeadingOutline.astro +8 -0
- package/dist/typography/Text3DLayer.astro +7 -0
- package/dist/typography/TypewriterText.astro +15 -0
- package/dist/typography/index.mjs +20 -0
- package/dist/typography/index.ts +20 -0
- package/dist/utilities/AspectRatioBox.astro +11 -0
- package/dist/utilities/BackgroundDotPattern.astro +6 -0
- package/dist/utilities/CircularMask.astro +7 -0
- package/dist/utilities/ClickRippleWrapper.astro +7 -0
- package/dist/utilities/FadeInWrapper.astro +11 -0
- package/dist/utilities/FixedRatioImage.astro +7 -0
- package/dist/utilities/GlassBlurLayer.astro +6 -0
- package/dist/utilities/GradientBorderMask.astro +7 -0
- package/dist/utilities/HoverLift.astro +7 -0
- package/dist/utilities/ResponsiveSpacer.astro +15 -0
- package/dist/utilities/ResponsiveVisToggle.astro +11 -0
- package/dist/utilities/ScrollLockParent.astro +11 -0
- package/dist/utilities/ScrollMarginTarget.astro +10 -0
- package/dist/utilities/SlideUpReveal.astro +7 -0
- package/dist/utilities/SmoothAnchorLink.astro +22 -0
- package/dist/utilities/StackLayering.astro +12 -0
- package/dist/utilities/StickyObserver.astro +8 -0
- package/dist/utilities/TextTruncate.astro +10 -0
- package/dist/utilities/TruncateSingleLine.astro +6 -0
- package/dist/utilities/VisuallyHidden.astro +6 -0
- package/dist/utilities/index.mjs +20 -0
- package/dist/utilities/index.ts +20 -0
- package/package.json +108 -0
- package/src/components/lib/AnimatedInput.astro +82 -0
- package/src/components/lib/Badge.astro +52 -0
- package/src/components/lib/GlassButton.astro +87 -0
- package/src/components/lib/GlassCard.astro +72 -0
- package/src/components/lib/GlassNavbar.astro +65 -0
- package/src/components/lib/GlowButton.astro +60 -0
- package/src/components/lib/buttons/3dPushButton.astro +136 -0
- package/src/components/lib/buttons/AnimatedIconButton.astro +146 -0
- package/src/components/lib/buttons/BorderDrawButton.astro +112 -0
- package/src/components/lib/buttons/CyberpunkButton.astro +148 -0
- package/src/components/lib/buttons/DoubleBorderButton.astro +131 -0
- package/src/components/lib/buttons/GhostOutlineButton.astro +109 -0
- package/src/components/lib/buttons/GlassButton.astro +165 -0
- package/src/components/lib/buttons/GlowButton.astro +119 -0
- package/src/components/lib/buttons/LiquidButton.astro +167 -0
- package/src/components/lib/buttons/LoadingButton.astro +148 -0
- package/src/components/lib/buttons/MagneticButton.astro +134 -0
- package/src/components/lib/buttons/MinimalPillButton.astro +102 -0
- package/src/components/lib/buttons/NeumorphicButton.astro +158 -0
- package/src/components/lib/buttons/PulseButton.astro +111 -0
- package/src/components/lib/buttons/RetroArcadeButton.astro +105 -0
- package/src/components/lib/buttons/RetroShadowButton.astro +82 -0
- package/src/components/lib/buttons/ShimmerButton.astro +113 -0
- package/src/components/lib/buttons/ShinyButton.astro +121 -0
- package/src/components/lib/buttons/TiltGlowButton.astro +145 -0
- package/src/components/lib/buttons/index.ts +19 -0
- package/src/components/lib/cards/BlogHorizontalCard.astro +18 -0
- package/src/components/lib/cards/CyberFeatureCard.astro +12 -0
- package/src/components/lib/cards/EcommerceProductCard.astro +24 -0
- package/src/components/lib/cards/GlassCard.astro +17 -0
- package/src/components/lib/cards/GlassEventCard.astro +19 -0
- package/src/components/lib/cards/GlowPortfolioCard.astro +16 -0
- package/src/components/lib/cards/InteractiveTiltCard.astro +25 -0
- package/src/components/lib/cards/KanbanItemCard.astro +15 -0
- package/src/components/lib/cards/MinimalLinkCard.astro +12 -0
- package/src/components/lib/cards/MusicPlayerMini.astro +21 -0
- package/src/components/lib/cards/NeumorphicCard.astro +6 -0
- package/src/components/lib/cards/NotificationCard.astro +15 -0
- package/src/components/lib/cards/PricingCard.astro +17 -0
- package/src/components/lib/cards/ProfileCard.astro +17 -0
- package/src/components/lib/cards/RetroGameCard.astro +15 -0
- package/src/components/lib/cards/StatCard.astro +15 -0
- package/src/components/lib/cards/TaskKanbanCard.astro +18 -0
- package/src/components/lib/cards/TestimonialCardClean.astro +20 -0
- package/src/components/lib/cards/WeatherWidgetCard.astro +17 -0
- package/src/components/lib/cards/index.ts +19 -0
- package/src/components/lib/data/AccordionGroupGlass.astro +21 -0
- package/src/components/lib/data/AvatarGroupStack.astro +15 -0
- package/src/components/lib/data/CalendarGridView.astro +18 -0
- package/src/components/lib/data/DataChipsGroup.astro +16 -0
- package/src/components/lib/data/DescriptionListHoriz.astro +14 -0
- package/src/components/lib/data/FileTreeView.astro +22 -0
- package/src/components/lib/data/GanttChartMinimal.astro +12 -0
- package/src/components/lib/data/GlassTable.astro +23 -0
- package/src/components/lib/data/KeyValuePillGroup.astro +12 -0
- package/src/components/lib/data/PriceCompareTable.astro +22 -0
- package/src/components/lib/data/ProgressListSmall.astro +17 -0
- package/src/components/lib/data/RatingBreakdownBar.astro +13 -0
- package/src/components/lib/data/SparklineStatCard.astro +16 -0
- package/src/components/lib/data/StatsGridDashboard.astro +16 -0
- package/src/components/lib/data/StepperDataVertical.astro +15 -0
- package/src/components/lib/data/TagCloudData.astro +14 -0
- package/src/components/lib/data/TimelineHorizSteps.astro +18 -0
- package/src/components/lib/data/TreeItemInteractive.astro +18 -0
- package/src/components/lib/data/UserDirectoryItem.astro +15 -0
- package/src/components/lib/data/VerticalTimeline.astro +21 -0
- package/src/components/lib/data/index.ts +20 -0
- package/src/components/lib/feedback/AnimatedCheckmark.astro +13 -0
- package/src/components/lib/feedback/Badge.astro +19 -0
- package/src/components/lib/feedback/CircleProgress.astro +22 -0
- package/src/components/lib/feedback/ConfettiFeedback.astro +18 -0
- package/src/components/lib/feedback/CyberGlitchAlert.astro +11 -0
- package/src/components/lib/feedback/EmptyStateCard.astro +13 -0
- package/src/components/lib/feedback/GlassAlert.astro +20 -0
- package/src/components/lib/feedback/GlassModal.astro +19 -0
- package/src/components/lib/feedback/GlassProgress.astro +10 -0
- package/src/components/lib/feedback/IndicatorBadgeMinimal.astro +10 -0
- package/src/components/lib/feedback/NeonSpinner.astro +7 -0
- package/src/components/lib/feedback/PulseDot.astro +12 -0
- package/src/components/lib/feedback/RatingPill.astro +13 -0
- package/src/components/lib/feedback/ShakeErrorGroup.astro +7 -0
- package/src/components/lib/feedback/SimpleTooltip.astro +10 -0
- package/src/components/lib/feedback/SkeletonList.astro +20 -0
- package/src/components/lib/feedback/Spotlight.astro +9 -0
- package/src/components/lib/feedback/StepProgress.astro +14 -0
- package/src/components/lib/feedback/ToastNotif.astro +11 -0
- package/src/components/lib/feedback/TypingIndicator.astro +12 -0
- package/src/components/lib/feedback/index.ts +20 -0
- package/src/components/lib/forms/AnimatedInput.astro +16 -0
- package/src/components/lib/forms/ChipInput.astro +13 -0
- package/src/components/lib/forms/ColorPickerInput.astro +13 -0
- package/src/components/lib/forms/CurrencyInput.astro +11 -0
- package/src/components/lib/forms/CustomRadioGroup.astro +13 -0
- package/src/components/lib/forms/CyberpunkCheckbox.astro +15 -0
- package/src/components/lib/forms/DragDropUpload.astro +12 -0
- package/src/components/lib/forms/ErrorInput.astro +11 -0
- package/src/components/lib/forms/FloatingPassword.astro +20 -0
- package/src/components/lib/forms/FormGroupVertical.astro +14 -0
- package/src/components/lib/forms/GlassSlider.astro +7 -0
- package/src/components/lib/forms/GlassTextarea.astro +14 -0
- package/src/components/lib/forms/ModernSelect.astro +16 -0
- package/src/components/lib/forms/NeumorphicSwitch.astro +55 -0
- package/src/components/lib/forms/OTPInput.astro +22 -0
- package/src/components/lib/forms/RatingStars.astro +15 -0
- package/src/components/lib/forms/SearchReveal.astro +13 -0
- package/src/components/lib/forms/SegmentedControl.astro +13 -0
- package/src/components/lib/forms/SimpleFileInput.astro +11 -0
- package/src/components/lib/forms/StepperInput.astro +14 -0
- package/src/components/lib/forms/index.ts +20 -0
- package/src/components/lib/index.ts +6 -0
- package/src/components/lib/layout/BentoGrid3.astro +14 -0
- package/src/components/lib/layout/CenterFixedBox.astro +6 -0
- package/src/components/lib/layout/CenteredContainer.astro +8 -0
- package/src/components/lib/layout/ClusterHorizontal.astro +6 -0
- package/src/components/lib/layout/FeatureHero.astro +17 -0
- package/src/components/lib/layout/FooterCenteredMinimal.astro +11 -0
- package/src/components/lib/layout/FullBleedSection.astro +6 -0
- package/src/components/lib/layout/GalleryGrid4.astro +7 -0
- package/src/components/lib/layout/GlassCardGrid.astro +6 -0
- package/src/components/lib/layout/GlassSectionHeader.astro +15 -0
- package/src/components/lib/layout/LandingSectionSplit.astro +13 -0
- package/src/components/lib/layout/MasonryGrid.astro +7 -0
- package/src/components/lib/layout/MinimalFooterGrid.astro +20 -0
- package/src/components/lib/layout/ScrollSnapSection.astro +7 -0
- package/src/components/lib/layout/SectionDividerText.astro +7 -0
- package/src/components/lib/layout/SidebarLayoutWrapper.astro +11 -0
- package/src/components/lib/layout/SplitScreenLayout.astro +11 -0
- package/src/components/lib/layout/StepLayoutVertical.astro +21 -0
- package/src/components/lib/layout/StickySidebarWrapper.astro +10 -0
- package/src/components/lib/layout/VerticalStack.astro +8 -0
- package/src/components/lib/layout/index.ts +20 -0
- package/src/components/lib/navigation/AnchorSideNav.astro +13 -0
- package/src/components/lib/navigation/BottomNavMobile.astro +13 -0
- package/src/components/lib/navigation/BreadcrumbsMinimal.astro +16 -0
- package/src/components/lib/navigation/BurgerMorphIcon.astro +12 -0
- package/src/components/lib/navigation/CommandPaletteUI.astro +17 -0
- package/src/components/lib/navigation/DotNavigationSlider.astro +13 -0
- package/src/components/lib/navigation/FloatingTabBar.astro +12 -0
- package/src/components/lib/navigation/GlassNavbar.astro +19 -0
- package/src/components/lib/navigation/LangSwitcherPill.astro +17 -0
- package/src/components/lib/navigation/MegaMenuGlass.astro +25 -0
- package/src/components/lib/navigation/MinimalSidebar.astro +18 -0
- package/src/components/lib/navigation/PaginationGlass.astro +20 -0
- package/src/components/lib/navigation/PaginationInfiniteUI.astro +11 -0
- package/src/components/lib/navigation/RadialIconMenu.astro +15 -0
- package/src/components/lib/navigation/RetroArcadeMenu.astro +12 -0
- package/src/components/lib/navigation/ScrollProgressTop.astro +15 -0
- package/src/components/lib/navigation/SimpleFooterGlass.astro +21 -0
- package/src/components/lib/navigation/TabUnderline.astro +14 -0
- package/src/components/lib/navigation/UserProfileNav.astro +21 -0
- package/src/components/lib/navigation/VerticalTabs.astro +14 -0
- package/src/components/lib/navigation/index.ts +20 -0
- package/src/components/lib/overlays/AgeVerificationOverlay.astro +20 -0
- package/src/components/lib/overlays/BackdropBlurMask.astro +6 -0
- package/src/components/lib/overlays/BottomSheetMobile.astro +16 -0
- package/src/components/lib/overlays/CommandDialog.astro +19 -0
- package/src/components/lib/overlays/ContextMenuOverlay.astro +17 -0
- package/src/components/lib/overlays/CookieBannerGlass.astro +14 -0
- package/src/components/lib/overlays/ExitIntentOverlay.astro +19 -0
- package/src/components/lib/overlays/FloatingTrayActions.astro +13 -0
- package/src/components/lib/overlays/HelpBubbleOverlay.astro +11 -0
- package/src/components/lib/overlays/LightboxOverlay.astro +13 -0
- package/src/components/lib/overlays/LoadingOverlayFull.astro +10 -0
- package/src/components/lib/overlays/MobileNavOverlay.astro +18 -0
- package/src/components/lib/overlays/OverlayModal.astro +24 -0
- package/src/components/lib/overlays/PopoverMenuGlass.astro +17 -0
- package/src/components/lib/overlays/SearchOverlayFullscreen.astro +15 -0
- package/src/components/lib/overlays/SideDrawerRight.astro +16 -0
- package/src/components/lib/overlays/SplashIntroOverlay.astro +11 -0
- package/src/components/lib/overlays/SpotlightIndicator.astro +6 -0
- package/src/components/lib/overlays/ToastStackOverlay.astro +12 -0
- package/src/components/lib/overlays/TooltipActionTray.astro +14 -0
- package/src/components/lib/overlays/index.ts +20 -0
- package/src/components/lib/typography/AnimatedUnderlineLink.astro +10 -0
- package/src/components/lib/typography/BackgroundClipMask.astro +7 -0
- package/src/components/lib/typography/CodeInlineGlass.astro +6 -0
- package/src/components/lib/typography/CyberpunkGlitchText.astro +20 -0
- package/src/components/lib/typography/DropCapParagraph.astro +7 -0
- package/src/components/lib/typography/FadedVerticalText.astro +6 -0
- package/src/components/lib/typography/FloatingTextLabel.astro +10 -0
- package/src/components/lib/typography/GlassBlockQuote.astro +13 -0
- package/src/components/lib/typography/GlassTextReveal.astro +7 -0
- package/src/components/lib/typography/GradientHeading.astro +9 -0
- package/src/components/lib/typography/GradientUnderlineLink.astro +7 -0
- package/src/components/lib/typography/KbdIndicator.astro +6 -0
- package/src/components/lib/typography/LetterSpacingWide.astro +6 -0
- package/src/components/lib/typography/MinimalListMarkers.astro +10 -0
- package/src/components/lib/typography/MonospaceStatLine.astro +6 -0
- package/src/components/lib/typography/NeonTextHighlight.astro +6 -0
- package/src/components/lib/typography/ShadowRevealText.astro +7 -0
- package/src/components/lib/typography/StrokeHeadingOutline.astro +8 -0
- package/src/components/lib/typography/Text3DLayer.astro +7 -0
- package/src/components/lib/typography/TypewriterText.astro +15 -0
- package/src/components/lib/typography/index.ts +20 -0
- package/src/components/lib/utilities/AspectRatioBox.astro +11 -0
- package/src/components/lib/utilities/BackgroundDotPattern.astro +6 -0
- package/src/components/lib/utilities/CircularMask.astro +7 -0
- package/src/components/lib/utilities/ClickRippleWrapper.astro +7 -0
- package/src/components/lib/utilities/FadeInWrapper.astro +11 -0
- package/src/components/lib/utilities/FixedRatioImage.astro +7 -0
- package/src/components/lib/utilities/GlassBlurLayer.astro +6 -0
- package/src/components/lib/utilities/GradientBorderMask.astro +7 -0
- package/src/components/lib/utilities/HoverLift.astro +7 -0
- package/src/components/lib/utilities/ResponsiveSpacer.astro +15 -0
- package/src/components/lib/utilities/ResponsiveVisToggle.astro +11 -0
- package/src/components/lib/utilities/ScrollLockParent.astro +11 -0
- package/src/components/lib/utilities/ScrollMarginTarget.astro +10 -0
- package/src/components/lib/utilities/SlideUpReveal.astro +7 -0
- package/src/components/lib/utilities/SmoothAnchorLink.astro +22 -0
- package/src/components/lib/utilities/StackLayering.astro +12 -0
- package/src/components/lib/utilities/StickyObserver.astro +8 -0
- package/src/components/lib/utilities/TextTruncate.astro +10 -0
- package/src/components/lib/utilities/TruncateSingleLine.astro +6 -0
- package/src/components/lib/utilities/VisuallyHidden.astro +6 -0
- package/src/components/lib/utilities/index.ts +20 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="confetti-btn-trigger">
|
|
4
|
+
<span>Success!</span>
|
|
5
|
+
<div class="confetti-container">
|
|
6
|
+
<div class="piece" style="--l: 10%; --d: 0.5s"></div>
|
|
7
|
+
<div class="piece" style="--l: 50%; --d: 1s"></div>
|
|
8
|
+
<div class="piece" style="--l: 80%; --d: 0.2s"></div>
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
11
|
+
<style>
|
|
12
|
+
.confetti-container { position: absolute; inset: 0; pointer-events: none; }
|
|
13
|
+
.piece { position: absolute; left: var(--l); top: 0; width: 8px; height: 8px; background: #6366f1; border-radius: 2px; opacity: 0; animation: fall 2s infinite var(--d); }
|
|
14
|
+
@keyframes fall {
|
|
15
|
+
0% { transform: translateY(0) rotate(0); opacity: 1; }
|
|
16
|
+
100% { transform: translateY(100px) rotate(360deg); opacity: 0; }
|
|
17
|
+
}
|
|
18
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="glitch-alert">
|
|
4
|
+
<span class="glitch-text" data-text="CRITICAL ERROR">CRITICAL ERROR</span>
|
|
5
|
+
</div>
|
|
6
|
+
<style>
|
|
7
|
+
.glitch-alert { background: #ff003c; padding: 1.5rem; border: 2px solid #fff; position: relative; overflow: hidden; }
|
|
8
|
+
.glitch-text { font-family: monospace; font-weight: 900; color: #fff; font-size: 1.2rem; }
|
|
9
|
+
.glitch-text::before { content: attr(data-text); position: absolute; left: -2px; text-shadow: 2px 0 #00e0ff; animation: glitch-anim 1s infinite linear alternate-reverse; }
|
|
10
|
+
@keyframes glitch-anim { 0% { clip: rect(44px, 450px, 56px, 0); } 100% { clip: rect(12px, 450px, 80px, 0); } }
|
|
11
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="empty-state">
|
|
4
|
+
<div class="ico">📁</div>
|
|
5
|
+
<h4>No results found</h4>
|
|
6
|
+
<p>Try adjusting your search filters or add a new item.</p>
|
|
7
|
+
</div>
|
|
8
|
+
<style>
|
|
9
|
+
.empty-state { text-align: center; padding: 4rem 2rem; border: 2px dashed rgba(255,255,255,0.1); border-radius: 20px; color: #94a3b8; background: rgba(255,255,255,0.02); }
|
|
10
|
+
.ico { font-size: 3rem; margin-bottom: 1rem; opacity: 0.5; }
|
|
11
|
+
h4 { color: #fff; margin: 0; }
|
|
12
|
+
p { font-size: 0.9rem; margin-top: 0.5rem; }
|
|
13
|
+
</style>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props { type?: 'info' | 'success' | 'warning' | 'error'; title: string; }
|
|
3
|
+
const { type = 'info', title } = Astro.props;
|
|
4
|
+
---
|
|
5
|
+
<div class:list={['alert', `alert--${type}` ]}>
|
|
6
|
+
<div class="alert-icon">!</div>
|
|
7
|
+
<div class="alert-content">
|
|
8
|
+
<div class="alert-title">{title}</div>
|
|
9
|
+
<div class="alert-body"><slot /></div>
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
12
|
+
<style>
|
|
13
|
+
.alert { display: flex; gap: 1rem; padding: 1.25rem; border-radius: 16px; border: 1px solid rgba(255,255,255,0.1); backdrop-filter: blur(12px); background: rgba(255,255,255,0.03); }
|
|
14
|
+
.alert--success { border-color: rgba(52,211,153,0.3); background: rgba(52,211,153,0.05); }
|
|
15
|
+
.alert--warning { border-color: rgba(245,158,11,0.3); background: rgba(245,158,11,0.05); }
|
|
16
|
+
.alert--error { border-color: rgba(239,68,68,0.3); background: rgba(239,68,68,0.05); }
|
|
17
|
+
.alert-icon { font-weight: 900; background: rgba(255,255,255,0.1); width: 24px; height: 24px; display: grid; place-items: center; border-radius: 50%; font-size: 0.8rem; }
|
|
18
|
+
.alert-title { font-weight: 700; color: #fff; margin-bottom: 2px; }
|
|
19
|
+
.alert-body { font-size: 0.85rem; color: #94a3b8; }
|
|
20
|
+
</style>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="modal-overlay">
|
|
4
|
+
<div class="modal-box anim-scale-up">
|
|
5
|
+
<div class="modal-header"><h3>Confirm Action</h3></div>
|
|
6
|
+
<div class="modal-body"><p>Are you sure you want to delete this resource? This cannot be undone.</p></div>
|
|
7
|
+
<div class="modal-footer"><button class="btn-sec">Cancel</button><button class="btn-pri">Confirm</button></div>
|
|
8
|
+
</div>
|
|
9
|
+
</div>
|
|
10
|
+
<style>
|
|
11
|
+
.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.3); backdrop-filter: blur(8px); display: grid; place-items: center; z-index: 2000; }
|
|
12
|
+
.modal-box { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); border-radius: 24px; padding: 2rem; width: 100%; max-width: 400px; box-shadow: 0 30px 100px rgba(0,0,0,0.5); }
|
|
13
|
+
.modal-header h3 { margin: 0; color: #fff; }
|
|
14
|
+
.modal-body p { color: #94a3b8; font-size: 0.9rem; line-height: 1.6; }
|
|
15
|
+
.modal-footer { display: flex; justify-content: flex-end; gap: 1rem; margin-top: 2rem; }
|
|
16
|
+
button { padding: 0.6rem 1.2rem; border-radius: 10px; border: none; font-weight: 700; cursor: pointer; }
|
|
17
|
+
.btn-sec { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,0.1); }
|
|
18
|
+
.btn-pri { background: #6366f1; color: #fff; }
|
|
19
|
+
</style>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props { value: number; }
|
|
3
|
+
---
|
|
4
|
+
<div class="progress-container">
|
|
5
|
+
<div class="progress-fill" style={`width: ${Astro.props.value}%`}></div>
|
|
6
|
+
</div>
|
|
7
|
+
<style>
|
|
8
|
+
.progress-container { height: 10px; background: rgba(255,255,255,0.05); border-radius: 10px; overflow: hidden; border: 1px solid rgba(255,255,255,0.1); }
|
|
9
|
+
.progress-fill { height: 100%; background: linear-gradient(90deg, #6366f1, #c084fc); border-radius: inherit; transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 0 10px rgba(99,102,241,0.4); }
|
|
10
|
+
</style>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="indicator-wrap">
|
|
4
|
+
<slot />
|
|
5
|
+
<span class="dot-indicator"></span>
|
|
6
|
+
</div>
|
|
7
|
+
<style>
|
|
8
|
+
.indicator-wrap { position: relative; width: fit-content; }
|
|
9
|
+
.dot-indicator { position: absolute; top: 0; right: 0; width: 10px; height: 10px; background: #6366f1; border: 2px solid #080b14; border-radius: 50%; }
|
|
10
|
+
</style>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="neon-ring"></div>
|
|
4
|
+
<style>
|
|
5
|
+
.neon-ring { width: 40px; height: 40px; border: 4px solid #111; border-top-color: #6366f1; border-radius: 50%; animation: spin 0.8s linear infinite; box-shadow: 0 0 10px rgba(99,102,241,0.5); }
|
|
6
|
+
@keyframes spin { to { transform: rotate(360deg); } }
|
|
7
|
+
</style>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="status-wrap">
|
|
4
|
+
<div class="pulse-dot"></div>
|
|
5
|
+
<span>System Active</span>
|
|
6
|
+
</div>
|
|
7
|
+
<style>
|
|
8
|
+
.status-wrap { display: flex; align-items: center; gap: 0.6rem; color: #34d399; font-weight: 700; font-size: 0.75rem; text-transform: uppercase; }
|
|
9
|
+
.pulse-dot { width: 8px; height: 8px; background: #34d399; border-radius: 50%; position: relative; }
|
|
10
|
+
.pulse-dot::after { content: ""; position: absolute; inset: 0; border-radius: 50%; border: 2px solid #34d399; animation: pulse 1.5s infinite; }
|
|
11
|
+
@keyframes pulse { 100% { opacity: 0; transform: scale(3.5); } }
|
|
12
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props { score: number; }
|
|
3
|
+
const { score } = Astro.props;
|
|
4
|
+
---
|
|
5
|
+
<div class:list={["rate-pill", { "high": score >= 4, "mid": score >= 3 && score < 4, "low": score < 3 }]}>
|
|
6
|
+
{score.toFixed(1)} ★
|
|
7
|
+
</div>
|
|
8
|
+
<style>
|
|
9
|
+
.rate-pill { padding: 4px 12px; border-radius: 100px; font-weight: 800; font-size: 0.75rem; color: #fff; width: fit-content; }
|
|
10
|
+
.high { background: #10b981; }
|
|
11
|
+
.mid { background: #f59e0b; }
|
|
12
|
+
.low { background: #ef4444; }
|
|
13
|
+
</style>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="shake-box error"><span>Invalid Credentials</span></div>
|
|
4
|
+
<style>
|
|
5
|
+
.shake-box.error { animation: shake 0.4s cubic-bezier(.36,.07,.19,.97) both; background: rgba(239, 68, 68, 0.1); border: 1px solid #ef4444; color: #f87171; padding: 1rem; border-radius: 10px; text-align: center; font-weight: 600; }
|
|
6
|
+
@keyframes shake { 10%, 90% { transform: translateX(-1px); } 20%, 80% { transform: translateX(2px); } 30%, 50%, 70% { transform: translateX(-4px); } 40%, 60% { transform: translateX(4px); } }
|
|
7
|
+
</style>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="tooltip-wrap" data-tip="Click to copy ID">
|
|
4
|
+
<slot />
|
|
5
|
+
</div>
|
|
6
|
+
<style>
|
|
7
|
+
.tooltip-wrap { position: relative; display: inline-block; cursor: help; }
|
|
8
|
+
.tooltip-wrap::after { content: attr(data-tip); position: absolute; bottom: 125%; left: 50%; transform: translateX(-50%); padding: 5px 10px; background: #111; color: #fff; font-size: 0.75rem; border-radius: 6px; white-space: nowrap; opacity: 0; pointer-events: none; transition: 0.2s; border: 1px solid rgba(255,255,255,0.1); box-shadow: 0 5px 15px rgba(0,0,0,0.4); }
|
|
9
|
+
.tooltip-wrap:hover::after { opacity: 1; bottom: 110%; }
|
|
10
|
+
</style>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="skeleton-list">
|
|
4
|
+
{[1,2,3].map(() => (
|
|
5
|
+
<div class="skel-item">
|
|
6
|
+
<div class="skel-avatar"></div>
|
|
7
|
+
<div class="skel-lines"><div></div><div></div></div>
|
|
8
|
+
</div>
|
|
9
|
+
))}
|
|
10
|
+
</div>
|
|
11
|
+
<style>
|
|
12
|
+
.skel-item { display: flex; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid rgba(255,255,255,0.05); }
|
|
13
|
+
.skel-avatar { width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,0.05); }
|
|
14
|
+
.skel-lines { flex: 1; display: flex; flex-direction: column; gap: 8px; }
|
|
15
|
+
.skel-lines div { height: 10px; background: rgba(255,255,255,0.05); border-radius: 5px; }
|
|
16
|
+
.skel-lines div:last-child { width: 60%; }
|
|
17
|
+
.skel-item div { position: relative; overflow: hidden; }
|
|
18
|
+
.skel-item div::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.03), transparent); animation: shimmer 1.5s infinite; }
|
|
19
|
+
@keyframes shimmer { 100% { transform: translateX(100%); } }
|
|
20
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="spotlight">
|
|
4
|
+
<div class="focused-content"><slot /></div>
|
|
5
|
+
</div>
|
|
6
|
+
<style>
|
|
7
|
+
.spotlight { position: relative; z-index: 100; border-radius: 12px; box-shadow: 0 0 0 9999px rgba(0,0,0,0.7); }
|
|
8
|
+
.focused-content { background: #fff; border-radius: inherit; overflow: hidden; }
|
|
9
|
+
</style>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="steps">
|
|
4
|
+
<div class="step active">1<span>Details</span></div>
|
|
5
|
+
<div class="step">2<span>Payment</span></div>
|
|
6
|
+
<div class="step">3<span>Finish</span></div>
|
|
7
|
+
</div>
|
|
8
|
+
<style>
|
|
9
|
+
.steps { display: flex; justify-content: space-between; position: relative; margin-bottom: 2rem; }
|
|
10
|
+
.steps::before { content: ""; position: absolute; top: 15px; left: 0; width: 100%; height: 2px; background: rgba(255,255,255,0.05); z-index: -1; }
|
|
11
|
+
.step { width: 32px; height: 32px; border-radius: 50%; background: #1e293b; color: #64748b; border: 2px solid rgba(255,255,255,0.1); display: grid; place-items: center; font-size: 0.8rem; font-weight: 800; position: relative; }
|
|
12
|
+
.step.active { background: #6366f1; border-color: #6366f1; color: #fff; box-shadow: 0 0 15px rgba(99,102,241,0.4); }
|
|
13
|
+
.step span { position: absolute; top: 100%; margin-top: 8px; font-size: 0.65rem; white-space: nowrap; color: inherit; }
|
|
14
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="toast show">
|
|
4
|
+
<span class="icon">✅</span>
|
|
5
|
+
<span>Settings saved successfully!</span>
|
|
6
|
+
</div>
|
|
7
|
+
<style>
|
|
8
|
+
.toast { position: fixed; bottom: 2rem; right: 2rem; background: #111; color: #fff; padding: 1rem 1.5rem; border-radius: 12px; border: 1px solid rgba(255,255,255,0.1); display: flex; align-items: center; gap: 0.8rem; box-shadow: 0 10px 40px rgba(0,0,0,0.5); transform: translateY(100px); transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); z-index: 1000; }
|
|
9
|
+
.toast.show { transform: translateY(0); }
|
|
10
|
+
.icon { background: rgba(52,211,153,0.1); padding: 4px; border-radius: 6px; }
|
|
11
|
+
</style>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="typing">
|
|
4
|
+
<span></span><span></span><span></span>
|
|
5
|
+
</div>
|
|
6
|
+
<style>
|
|
7
|
+
.typing { display: flex; gap: 4px; padding: 10px 15px; background: rgba(255,255,255,0.05); border-radius: 15px; width: fit-content; }
|
|
8
|
+
.typing span { width: 6px; height: 6px; background: #64748b; border-radius: 50%; animation: type 1s infinite alternate; }
|
|
9
|
+
.typing span:nth-child(2) { animation-delay: 0.2s; }
|
|
10
|
+
.typing span:nth-child(3) { animation-delay: 0.4s; }
|
|
11
|
+
@keyframes type { to { transform: translateY(-5px); background: #6366f1; } }
|
|
12
|
+
</style>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { default as AnimatedCheckmark } from './AnimatedCheckmark.astro';
|
|
2
|
+
export { default as Badge } from './Badge.astro';
|
|
3
|
+
export { default as CircleProgress } from './CircleProgress.astro';
|
|
4
|
+
export { default as ConfettiFeedback } from './ConfettiFeedback.astro';
|
|
5
|
+
export { default as CyberGlitchAlert } from './CyberGlitchAlert.astro';
|
|
6
|
+
export { default as EmptyStateCard } from './EmptyStateCard.astro';
|
|
7
|
+
export { default as GlassAlert } from './GlassAlert.astro';
|
|
8
|
+
export { default as GlassModal } from './GlassModal.astro';
|
|
9
|
+
export { default as GlassProgress } from './GlassProgress.astro';
|
|
10
|
+
export { default as IndicatorBadgeMinimal } from './IndicatorBadgeMinimal.astro';
|
|
11
|
+
export { default as NeonSpinner } from './NeonSpinner.astro';
|
|
12
|
+
export { default as PulseDot } from './PulseDot.astro';
|
|
13
|
+
export { default as RatingPill } from './RatingPill.astro';
|
|
14
|
+
export { default as ShakeErrorGroup } from './ShakeErrorGroup.astro';
|
|
15
|
+
export { default as SimpleTooltip } from './SimpleTooltip.astro';
|
|
16
|
+
export { default as SkeletonList } from './SkeletonList.astro';
|
|
17
|
+
export { default as Spotlight } from './Spotlight.astro';
|
|
18
|
+
export { default as StepProgress } from './StepProgress.astro';
|
|
19
|
+
export { default as ToastNotif } from './ToastNotif.astro';
|
|
20
|
+
export { default as TypingIndicator } from './TypingIndicator.astro';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { default as AnimatedCheckmark } from './AnimatedCheckmark.astro';
|
|
2
|
+
export { default as Badge } from './Badge.astro';
|
|
3
|
+
export { default as CircleProgress } from './CircleProgress.astro';
|
|
4
|
+
export { default as ConfettiFeedback } from './ConfettiFeedback.astro';
|
|
5
|
+
export { default as CyberGlitchAlert } from './CyberGlitchAlert.astro';
|
|
6
|
+
export { default as EmptyStateCard } from './EmptyStateCard.astro';
|
|
7
|
+
export { default as GlassAlert } from './GlassAlert.astro';
|
|
8
|
+
export { default as GlassModal } from './GlassModal.astro';
|
|
9
|
+
export { default as GlassProgress } from './GlassProgress.astro';
|
|
10
|
+
export { default as IndicatorBadgeMinimal } from './IndicatorBadgeMinimal.astro';
|
|
11
|
+
export { default as NeonSpinner } from './NeonSpinner.astro';
|
|
12
|
+
export { default as PulseDot } from './PulseDot.astro';
|
|
13
|
+
export { default as RatingPill } from './RatingPill.astro';
|
|
14
|
+
export { default as ShakeErrorGroup } from './ShakeErrorGroup.astro';
|
|
15
|
+
export { default as SimpleTooltip } from './SimpleTooltip.astro';
|
|
16
|
+
export { default as SkeletonList } from './SkeletonList.astro';
|
|
17
|
+
export { default as Spotlight } from './Spotlight.astro';
|
|
18
|
+
export { default as StepProgress } from './StepProgress.astro';
|
|
19
|
+
export { default as ToastNotif } from './ToastNotif.astro';
|
|
20
|
+
export { default as TypingIndicator } from './TypingIndicator.astro';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props { label: string; id: string; type?: string; placeholder?: string; required?: boolean; name?: string; }
|
|
3
|
+
const { label, id, type = 'text', placeholder = ' ', required = false, name } = Astro.props;
|
|
4
|
+
---
|
|
5
|
+
<div class="anim-input-wrap">
|
|
6
|
+
<input {id} {name} {type} {placeholder} {required} class="anim-input" autocomplete="off" />
|
|
7
|
+
<label for={id} class="anim-input-label">{label}</label>
|
|
8
|
+
</div>
|
|
9
|
+
<style>
|
|
10
|
+
.anim-input-wrap { position: relative; width: 100%; }
|
|
11
|
+
.anim-input { width: 100%; padding: 1.1rem 1rem 0.5rem; font-family: inherit; font-size: 0.95rem; color: #e2e8f0; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 12px; outline: none; box-sizing: border-box; transition: border-color 0.25s ease, background 0.25s ease; }
|
|
12
|
+
.anim-input::placeholder { color: transparent; }
|
|
13
|
+
.anim-input:focus { background: rgba(99, 102, 241, 0.06); border-color: rgba(99, 102, 241, 0.5); box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12); }
|
|
14
|
+
.anim-input-label { position: absolute; top: 0.9rem; left: 1rem; font-size: 0.9rem; color: #64748b; pointer-events: none; transition: top 0.2s ease, font-size 0.2s ease, color 0.2s ease; }
|
|
15
|
+
.anim-input:focus ~ .anim-input-label, .anim-input:not(:placeholder-shown) ~ .anim-input-label { top: 0.28rem; font-size: 0.68rem; color: #818cf8; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
|
|
16
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="chip-input">
|
|
4
|
+
<span class="chip">Astro <button>×</button></span>
|
|
5
|
+
<span class="chip">UI <button>×</button></span>
|
|
6
|
+
<input type="text" placeholder="Add tag..." />
|
|
7
|
+
</div>
|
|
8
|
+
<style>
|
|
9
|
+
.chip-input { display: flex; flex-wrap: wrap; gap: 0.5rem; padding: 0.5rem; background: rgba(0,0,0,0.1); border: 1px solid var(--c-border); border-radius: 10px; }
|
|
10
|
+
.chip { background: #6366f1; color: #fff; padding: 0.2rem 0.6rem; border-radius: 6px; font-size: 0.8rem; display: flex; align-items: center; gap: 0.4rem; }
|
|
11
|
+
.chip button { background: none; border: none; color: #fff; cursor: pointer; font-size: 1rem; }
|
|
12
|
+
.chip-input input { background: none; border: none; outline: none; color: #fff; flex: 1; padding: 0.2rem; }
|
|
13
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="color-picker-wrap">
|
|
4
|
+
<input type="color" class="color-input" id="picker" value="#6366f1" />
|
|
5
|
+
<label for="picker">Primary Accent</label>
|
|
6
|
+
</div>
|
|
7
|
+
<style>
|
|
8
|
+
.color-picker-wrap { display: flex; align-items: center; gap: 1rem; }
|
|
9
|
+
.color-input { -webkit-appearance: none; border: none; width: 34px; height: 34px; border-radius: 50%; cursor: pointer; background: transparent; }
|
|
10
|
+
.color-input::-webkit-color-swatch-wrapper { padding: 0; }
|
|
11
|
+
.color-input::-webkit-color-swatch { border: 2px solid rgba(255,255,255,0.2); border-radius: 50%; }
|
|
12
|
+
label { font-size: 0.9rem; color: #e2e8f0; font-weight: 500; }
|
|
13
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="curr-wrap">
|
|
4
|
+
<span class="symbol">$</span>
|
|
5
|
+
<input type="number" step="0.01" value="0.00" />
|
|
6
|
+
</div>
|
|
7
|
+
<style>
|
|
8
|
+
.curr-wrap { display: flex; align-items: center; background: rgba(255,255,255,0.05); border-radius: 10px; border: 1px solid var(--c-border); overflow: hidden; }
|
|
9
|
+
.symbol { padding: 0.8rem; background: rgba(255,255,255,0.05); color: #94a3b8; font-weight: 700; }
|
|
10
|
+
.curr-wrap input { background: none; border: none; padding: 0.8rem; color: #fff; font-size: 1.1rem; width: 100%; outline: none; }
|
|
11
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="radio-group">
|
|
4
|
+
<label class="radio-item"><input type="radio" name="opt" checked /><span>Option A</span></label>
|
|
5
|
+
<label class="radio-item"><input type="radio" name="opt" /><span>Option B</span></label>
|
|
6
|
+
</div>
|
|
7
|
+
<style>
|
|
8
|
+
.radio-group { display: flex; flex-direction: column; gap: 0.8rem; }
|
|
9
|
+
.radio-item { display: flex; align-items: center; gap: 0.75rem; cursor: pointer; color: #94a3b8; }
|
|
10
|
+
.radio-item input { appearance: none; width: 20px; height: 20px; border: 2px solid #6366f1; border-radius: 50%; position: relative; cursor: pointer; }
|
|
11
|
+
.radio-item input:checked::after { content: ''; position: absolute; inset: 4px; background: #6366f1; border-radius: 50%; }
|
|
12
|
+
.radio-item input:checked + span { color: #fff; font-weight: 600; }
|
|
13
|
+
</style>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<label class="cyber-check">
|
|
4
|
+
<input type="checkbox" />
|
|
5
|
+
<span class="checkmark"></span>
|
|
6
|
+
<slot />
|
|
7
|
+
</label>
|
|
8
|
+
<style>
|
|
9
|
+
.cyber-check { display: flex; align-items: center; gap: 0.8rem; cursor: pointer; color: #00e0ff; font-family: monospace; font-weight: 700; text-transform: uppercase; }
|
|
10
|
+
.cyber-check input { display: none; }
|
|
11
|
+
.checkmark { width: 18px; height: 18px; border: 2px solid #ff003c; position: relative; transition: 0.2s; }
|
|
12
|
+
.cyber-check input:checked + .checkmark { background: #ff003c; box-shadow: 0 0 10px #ff003c; }
|
|
13
|
+
.checkmark::after { content: ''; position: absolute; display: none; left: 5px; top: 1px; width: 4px; height: 8px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
|
|
14
|
+
.cyber-check input:checked + .checkmark::after { display: block; }
|
|
15
|
+
</style>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="upload-zone">
|
|
4
|
+
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>
|
|
5
|
+
<p>Drag files here or <span>browse</span></p>
|
|
6
|
+
<input type="file" hidden />
|
|
7
|
+
</div>
|
|
8
|
+
<style>
|
|
9
|
+
.upload-zone { border: 2px dashed rgba(255,255,255,0.1); border-radius: 20px; padding: 3rem; text-align: center; background: rgba(255,255,255,0.02); cursor: pointer; transition: 0.3s; color: #94a3b8; }
|
|
10
|
+
.upload-zone:hover { border-color: #6366f1; background: rgba(99, 102, 241, 0.05); color: #fff; }
|
|
11
|
+
.upload-zone span { color: #6366f1; font-weight: 600; text-decoration: underline; }
|
|
12
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="error-wrap">
|
|
4
|
+
<input type="text" class="input-error" value="invalid-email" />
|
|
5
|
+
<span class="error-msg">Please enter a valid email address</span>
|
|
6
|
+
</div>
|
|
7
|
+
<style>
|
|
8
|
+
.error-wrap { display: flex; flex-direction: column; gap: 0.4rem; }
|
|
9
|
+
.input-error { border: 1px solid #ef4444 !important; background: rgba(239, 68, 68, 0.05) !important; padding: 0.8rem; color: #fff; border-radius: 10px; outline: none; }
|
|
10
|
+
.error-msg { font-size: 0.75rem; color: #f87171; font-weight: 500; }
|
|
11
|
+
</style>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="pass-wrap">
|
|
4
|
+
<input type="password" id="pass" placeholder="Password" />
|
|
5
|
+
<button type="button" id="toggle-pass">👁️</button>
|
|
6
|
+
</div>
|
|
7
|
+
<style>
|
|
8
|
+
.pass-wrap { position: relative; width: 100%; }
|
|
9
|
+
.pass-wrap input { width: 100%; padding: 0.8rem 3rem 0.8rem 1rem; background: rgba(0,0,0,0.2); border: 1px solid var(--c-border); border-radius: 10px; color: #fff; outline: none; }
|
|
10
|
+
#toggle-pass { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); background: none; border: none; cursor: pointer; opacity: 0.5; }
|
|
11
|
+
</style>
|
|
12
|
+
<script>
|
|
13
|
+
const btn = document.getElementById('toggle-pass');
|
|
14
|
+
const pass = document.getElementById('pass') as HTMLInputElement;
|
|
15
|
+
btn?.addEventListener('click', () => {
|
|
16
|
+
const isPass = pass.type === 'password';
|
|
17
|
+
pass.type = isPass ? 'text' : 'password';
|
|
18
|
+
btn.textContent = isPass ? '🙈' : '👁️';
|
|
19
|
+
});
|
|
20
|
+
</script>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="form-group">
|
|
4
|
+
<label>Company Name</label>
|
|
5
|
+
<input type="text" placeholder="e.g. Acme Corp" />
|
|
6
|
+
<p class="help-text">Visible on your public profile.</p>
|
|
7
|
+
</div>
|
|
8
|
+
<style>
|
|
9
|
+
.form-group { display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 1.5rem; }
|
|
10
|
+
label { font-size: 0.82rem; font-weight: 700; color: #e2e8f0; text-transform: uppercase; letter-spacing: 0.05em; }
|
|
11
|
+
input { background: #0f172a; border: 1px solid rgba(255,255,255,0.1); color: #fff; padding: 0.8rem; border-radius: 8px; outline: none; }
|
|
12
|
+
input:focus { border-color: #6366f1; }
|
|
13
|
+
.help-text { font-size: 0.75rem; color: #64748b; }
|
|
14
|
+
</style>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<input type="range" class="glass-slider" min="0" max="100" />
|
|
4
|
+
<style>
|
|
5
|
+
.glass-slider { -webkit-appearance: none; width: 100%; height: 6px; background: rgba(255,255,255,0.1); border-radius: 5px; outline: none; backdrop-filter: blur(5px); }
|
|
6
|
+
.glass-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%; background: #6366f1; cursor: pointer; border: 2px solid rgba(255,255,255,0.5); box-shadow: 0 0 10px rgba(99,102,241,0.5); }
|
|
7
|
+
</style>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props { label: string; id: string; rows?: number; }
|
|
3
|
+
const { label, id, rows = 4 } = Astro.props;
|
|
4
|
+
---
|
|
5
|
+
<div class="glass-textarea-wrap">
|
|
6
|
+
<label for={id} class="glass-label">{label}</label>
|
|
7
|
+
<textarea {id} {rows} class="glass-textarea" placeholder="Start typing..."></textarea>
|
|
8
|
+
</div>
|
|
9
|
+
<style>
|
|
10
|
+
.glass-textarea-wrap { display: flex; flex-direction: column; gap: 0.5rem; width: 100%; }
|
|
11
|
+
.glass-label { font-size: 0.85rem; font-weight: 600; color: #94a3b8; margin-left: 0.5rem; }
|
|
12
|
+
.glass-textarea { width: 100%; padding: 1rem; background: rgba(255, 255, 255, 0.03); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 16px; color: #fff; font-family: inherit; font-size: 0.9rem; outline: none; transition: 0.3s; resize: vertical; }
|
|
13
|
+
.glass-textarea:focus { border-color: rgba(99, 102, 241, 0.4); background: rgba(255, 255, 255, 0.06); }
|
|
14
|
+
</style>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="select-wrap">
|
|
4
|
+
<select class="custom-select">
|
|
5
|
+
<option>Select Option</option>
|
|
6
|
+
<option>Product Design</option>
|
|
7
|
+
<option>Web Development</option>
|
|
8
|
+
<option>Mobile Apps</option>
|
|
9
|
+
</select>
|
|
10
|
+
<div class="select-arrow"></div>
|
|
11
|
+
</div>
|
|
12
|
+
<style>
|
|
13
|
+
.select-wrap { position: relative; width: 100%; }
|
|
14
|
+
.custom-select { width: 100%; padding: 0.8rem 1rem; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.1); border-radius: 12px; color: #fff; appearance: none; cursor: pointer; outline: none; }
|
|
15
|
+
.select-arrow { position: absolute; top: 18px; right: 15px; width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #64748b; pointer-events: none; }
|
|
16
|
+
</style>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<label class="neu-switch">
|
|
4
|
+
<input type="checkbox" />
|
|
5
|
+
<span class="slider"></span>
|
|
6
|
+
</label>
|
|
7
|
+
<style>
|
|
8
|
+
.neu-switch {
|
|
9
|
+
position: relative;
|
|
10
|
+
display: inline-block;
|
|
11
|
+
width: 56px;
|
|
12
|
+
height: 30px;
|
|
13
|
+
}
|
|
14
|
+
.neu-switch input {
|
|
15
|
+
opacity: 0;
|
|
16
|
+
width: 0;
|
|
17
|
+
height: 0;
|
|
18
|
+
}
|
|
19
|
+
.slider {
|
|
20
|
+
position: absolute;
|
|
21
|
+
cursor: pointer;
|
|
22
|
+
inset: 0;
|
|
23
|
+
background: #1a1f2e;
|
|
24
|
+
transition: 0.4s;
|
|
25
|
+
border-radius: 34px;
|
|
26
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
27
|
+
box-shadow:
|
|
28
|
+
inset 2px 2px 4px rgba(0, 0, 0, 0.4),
|
|
29
|
+
inset -2px -2px 4px rgba(255, 255, 255, 0.03);
|
|
30
|
+
}
|
|
31
|
+
.slider:before {
|
|
32
|
+
position: absolute;
|
|
33
|
+
content: "";
|
|
34
|
+
height: 22px;
|
|
35
|
+
width: 22px;
|
|
36
|
+
left: 3px;
|
|
37
|
+
top: 3px;
|
|
38
|
+
background: #4b5563;
|
|
39
|
+
transition: 0.4s;
|
|
40
|
+
border-radius: 50%;
|
|
41
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
|
|
42
|
+
}
|
|
43
|
+
input:checked + .slider {
|
|
44
|
+
background: #1e2433;
|
|
45
|
+
box-shadow:
|
|
46
|
+
inset 2px 2px 4px rgba(0, 0, 0, 0.5),
|
|
47
|
+
inset -2px -2px 4px rgba(255, 255, 255, 0.02);
|
|
48
|
+
}
|
|
49
|
+
input:checked + .slider:before {
|
|
50
|
+
transform: translateX(26px);
|
|
51
|
+
background: #818cf8;
|
|
52
|
+
box-shadow: 0 0 10px rgba(129, 140, 248, 0.4);
|
|
53
|
+
}
|
|
54
|
+
</style>
|
|
55
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="otp-wrap">
|
|
4
|
+
<input type="text" maxlength="1" />
|
|
5
|
+
<input type="text" maxlength="1" />
|
|
6
|
+
<input type="text" maxlength="1" />
|
|
7
|
+
<input type="text" maxlength="1" />
|
|
8
|
+
</div>
|
|
9
|
+
<style>
|
|
10
|
+
.otp-wrap { display: flex; gap: 0.75rem; justify-content: center; }
|
|
11
|
+
.otp-wrap input { width: 45px; height: 55px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); border-radius: 10px; text-align: center; color: #fff; font-size: 1.5rem; font-weight: 700; outline: none; transition: 0.2s; }
|
|
12
|
+
.otp-wrap input:focus { border-color: #6366f1; background: rgba(99, 102, 241, 0.1); box-shadow: 0 0 15px rgba(99, 102, 241, 0.3); }
|
|
13
|
+
</style>
|
|
14
|
+
<script>
|
|
15
|
+
document.querySelectorAll('.otp-wrap input').forEach((input, idx, inputs) => {
|
|
16
|
+
input.addEventListener('input', () => {
|
|
17
|
+
if ((input as HTMLInputElement).value && idx < inputs.length - 1) {
|
|
18
|
+
(inputs[idx+1] as HTMLInputElement).focus();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
</script>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="rating">
|
|
4
|
+
<input type="radio" name="star" id="star5" /><label for="star5"></label>
|
|
5
|
+
<input type="radio" name="star" id="star4" /><label for="star4"></label>
|
|
6
|
+
<input type="radio" name="star" id="star3" /><label for="star3"></label>
|
|
7
|
+
<input type="radio" name="star" id="star2" /><label for="star2"></label>
|
|
8
|
+
<input type="radio" name="star" id="star1" /><label for="star1"></label>
|
|
9
|
+
</div>
|
|
10
|
+
<style>
|
|
11
|
+
.rating { display: flex; flex-direction: row-reverse; gap: 5px; }
|
|
12
|
+
.rating input { display: none; }
|
|
13
|
+
.rating label { width: 24px; height: 24px; background: #334155; clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%); cursor: pointer; transition: 0.2s; }
|
|
14
|
+
.rating label:hover, .rating label:hover ~ label, .rating input:checked ~ label { background: #fbbf24; box-shadow: 0 0 10px #fbbf24; }
|
|
15
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="search-box">
|
|
4
|
+
<input type="text" placeholder="Search..." />
|
|
5
|
+
<button>🔍</button>
|
|
6
|
+
</div>
|
|
7
|
+
<style>
|
|
8
|
+
.search-box { position: relative; width: 40px; height: 40px; transition: 0.4s; }
|
|
9
|
+
.search-box:hover, .search-box:focus-within { width: 250px; }
|
|
10
|
+
.search-box input { width: 100%; height: 100%; background: #1e293b; border: 1px solid rgba(255,255,255,0.1); border-radius: 100px; padding: 0 45px 0 20px; color: #fff; outline: none; opacity: 0; transition: 0.3s; }
|
|
11
|
+
.search-box:hover input, .search-box:focus-within input { opacity: 1; }
|
|
12
|
+
.search-box button { position: absolute; right: 0; width: 40px; height: 40px; background: #6366f1; border: none; border-radius: 50%; color: #fff; cursor: pointer; }
|
|
13
|
+
</style>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<div class="segmented">
|
|
4
|
+
<input type="radio" name="seg" id="seg1" checked /><label for="seg1">Daily</label>
|
|
5
|
+
<input type="radio" name="seg" id="seg2" /><label for="seg2">Weekly</label>
|
|
6
|
+
<input type="radio" name="seg" id="seg3" /><label for="seg3">Monthly</label>
|
|
7
|
+
</div>
|
|
8
|
+
<style>
|
|
9
|
+
.segmented { display: flex; position: relative; background: rgba(255,255,255,0.05); padding: 4px; border-radius: 10px; width: fit-content; }
|
|
10
|
+
.segmented label { padding: 0.4rem 1.2rem; cursor: pointer; z-index: 1; font-size: 0.85rem; transition: 0.3s; color: #94a3b8; }
|
|
11
|
+
.segmented input { display: none; }
|
|
12
|
+
.segmented input:checked + label { color: #fff; font-weight: 600; background: rgba(99, 102, 241, 0.2); border-radius: 6px; }
|
|
13
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
<label class="file-btn">
|
|
4
|
+
<input type="file" />
|
|
5
|
+
<span>Upload Logo</span>
|
|
6
|
+
</label>
|
|
7
|
+
<style>
|
|
8
|
+
.file-btn { position: relative; overflow: hidden; display: inline-block; cursor: pointer; }
|
|
9
|
+
.file-btn input { position: absolute; font-size: 100px; right: 0; top: 0; opacity: 0; cursor: pointer; }
|
|
10
|
+
.file-btn span { background: #6366f1; color: #fff; padding: 0.7rem 1.5rem; border-radius: 8px; font-weight: 600; display: inline-block; }
|
|
11
|
+
</style>
|