@xbg.solutions/create-frontend 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/xbg-frontend.cjs +32 -0
- package/package.json +17 -3
- package/src/commands/add.cjs +470 -0
- package/src/commands/generate.cjs +24 -0
- package/src/manifest.json +1578 -0
- package/src/registry/advanced/ChartWrapper.svelte +587 -0
- package/src/registry/advanced/DataTable.svelte +645 -0
- package/src/registry/advanced/FormWizard.svelte +546 -0
- package/src/registry/advanced/ImageUpload.svelte +663 -0
- package/src/registry/advanced/index.ts +33 -0
- package/src/registry/atoms/calendar/Calendar.svelte +181 -0
- package/src/registry/atoms/calendar/index.ts +1 -0
- package/src/registry/atoms/dialog/Dialog.svelte +179 -0
- package/src/registry/atoms/dialog/DialogDescription.svelte +16 -0
- package/src/registry/atoms/dialog/DialogFooter.svelte +16 -0
- package/src/registry/atoms/dialog/DialogHeader.svelte +16 -0
- package/src/registry/atoms/dialog/DialogTitle.svelte +16 -0
- package/src/registry/atoms/dialog/index.ts +10 -0
- package/src/registry/atoms/icon/BrandIcon.svelte +47 -0
- package/src/registry/atoms/icon/DynamicIcon.svelte +49 -0
- package/src/registry/atoms/icon/index.ts +2 -0
- package/src/registry/atoms/legend/Legend.svelte +32 -0
- package/src/registry/atoms/legend/index.ts +1 -0
- package/src/registry/atoms/menu/MenuItem.svelte +85 -0
- package/src/registry/atoms/menu/index.ts +1 -0
- package/src/registry/atoms/message/Message.svelte +62 -0
- package/src/registry/atoms/message/index.ts +1 -0
- package/src/registry/atoms/nav/NavItem.svelte +67 -0
- package/src/registry/atoms/nav/index.ts +1 -0
- package/src/registry/atoms/notification-badge/NotificationBadge.svelte +30 -0
- package/src/registry/atoms/notification-badge/index.ts +1 -0
- package/src/registry/atoms/otp-input/OtpInput.svelte +108 -0
- package/src/registry/atoms/otp-input/index.ts +1 -0
- package/src/registry/atoms/select/Select.svelte +216 -0
- package/src/registry/atoms/select/index.ts +6 -0
- package/src/registry/atoms/settings-card/SettingsCard.svelte +48 -0
- package/src/registry/atoms/settings-card/index.ts +1 -0
- package/src/registry/atoms/sidebar-item/SidebarItem.svelte +90 -0
- package/src/registry/atoms/sidebar-item/index.ts +1 -0
- package/src/registry/atoms/statistic-card/StatisticCard.svelte +53 -0
- package/src/registry/atoms/statistic-card/index.ts +1 -0
- package/src/registry/atoms/text-editor/TextEditor.svelte +77 -0
- package/src/registry/atoms/text-editor/index.ts +1 -0
- package/src/registry/atoms/uploader/Uploader.svelte +102 -0
- package/src/registry/atoms/uploader/index.ts +1 -0
- package/src/registry/atoms/user-item/UserItem.svelte +39 -0
- package/src/registry/atoms/user-item/index.ts +1 -0
- package/src/registry/blocks/account-section/AccountSection01.svelte +112 -0
- package/src/registry/blocks/account-section/AccountSection02.svelte +190 -0
- package/src/registry/blocks/account-section/AccountSection03.svelte +161 -0
- package/src/registry/blocks/account-section/AccountSection04.svelte +164 -0
- package/src/registry/blocks/account-section/AccountSection05.svelte +76 -0
- package/src/registry/blocks/account-section/index.ts +5 -0
- package/src/registry/blocks/app-shell/AppShell01.svelte +74 -0
- package/src/registry/blocks/app-shell/AppShell02.svelte +87 -0
- package/src/registry/blocks/app-shell/AppShell03.svelte +79 -0
- package/src/registry/blocks/app-shell/AppShell04.svelte +177 -0
- package/src/registry/blocks/app-shell/index.ts +4 -0
- package/src/registry/blocks/auth/AuthSplitScreen.svelte +132 -0
- package/src/registry/blocks/auth/LoginBlock01.svelte +94 -0
- package/src/registry/blocks/auth/LoginBlock02.svelte +103 -0
- package/src/registry/blocks/auth/LoginBlock03.svelte +53 -0
- package/src/registry/blocks/auth/LoginBlock04.svelte +99 -0
- package/src/registry/blocks/auth/LoginBlock05.svelte +101 -0
- package/src/registry/blocks/auth/OtpBlock01.svelte +115 -0
- package/src/registry/blocks/auth/OtpBlock02.svelte +113 -0
- package/src/registry/blocks/auth/OtpBlock03.svelte +143 -0
- package/src/registry/blocks/auth/OtpBlock04.svelte +122 -0
- package/src/registry/blocks/auth/OtpBlock05.svelte +81 -0
- package/src/registry/blocks/auth/SignupBlock01.svelte +103 -0
- package/src/registry/blocks/auth/SignupBlock02.svelte +94 -0
- package/src/registry/blocks/auth/SignupBlock03.svelte +120 -0
- package/src/registry/blocks/auth/SignupBlock04.svelte +112 -0
- package/src/registry/blocks/auth/SignupBlock05.svelte +77 -0
- package/src/registry/blocks/auth/index.ts +31 -0
- package/src/registry/blocks/banner/Banner01.svelte +67 -0
- package/src/registry/blocks/banner/Banner02.svelte +61 -0
- package/src/registry/blocks/banner/Banner03.svelte +54 -0
- package/src/registry/blocks/banner/Banner04.svelte +49 -0
- package/src/registry/blocks/banner/Banner05.svelte +47 -0
- package/src/registry/blocks/banner/index.ts +5 -0
- package/src/registry/blocks/bento-grid/BentoGrid01.svelte +92 -0
- package/src/registry/blocks/bento-grid/BentoGrid02.svelte +79 -0
- package/src/registry/blocks/bento-grid/BentoGrid03.svelte +79 -0
- package/src/registry/blocks/bento-grid/BentoGrid04.svelte +58 -0
- package/src/registry/blocks/bento-grid/BentoGrid05.svelte +92 -0
- package/src/registry/blocks/bento-grid/BentoGrid06.svelte +42 -0
- package/src/registry/blocks/bento-grid/index.ts +14 -0
- package/src/registry/blocks/blog-section/BlogSection01.svelte +100 -0
- package/src/registry/blocks/blog-section/BlogSection02.svelte +93 -0
- package/src/registry/blocks/blog-section/BlogSection03.svelte +92 -0
- package/src/registry/blocks/blog-section/BlogSection04.svelte +97 -0
- package/src/registry/blocks/blog-section/BlogSection05.svelte +120 -0
- package/src/registry/blocks/blog-section/index.ts +15 -0
- package/src/registry/blocks/buttons/ButtonBookmark.svelte +37 -0
- package/src/registry/blocks/buttons/ButtonLike.svelte +37 -0
- package/src/registry/blocks/buttons/ButtonMenu.svelte +37 -0
- package/src/registry/blocks/buttons/ButtonSplitDropdown.svelte +46 -0
- package/src/registry/blocks/buttons/ButtonStepper.svelte +55 -0
- package/src/registry/blocks/buttons/ButtonSteps.svelte +73 -0
- package/src/registry/blocks/buttons/ButtonToggleGroup.svelte +35 -0
- package/src/registry/blocks/buttons/ButtonsGroup.svelte +63 -0
- package/src/registry/blocks/buttons/SocialButtonsHorizontal.svelte +41 -0
- package/src/registry/blocks/buttons/SocialButtonsVertical.svelte +53 -0
- package/src/registry/blocks/buttons/index.ts +10 -0
- package/src/registry/blocks/calendar/CalendarBlock01.svelte +169 -0
- package/src/registry/blocks/calendar/CalendarBlock02.svelte +133 -0
- package/src/registry/blocks/calendar/CalendarBlock03.svelte +194 -0
- package/src/registry/blocks/calendar/CalendarBlock04.svelte +96 -0
- package/src/registry/blocks/calendar/CalendarBlock05.svelte +97 -0
- package/src/registry/blocks/calendar/CalendarBlock06.svelte +98 -0
- package/src/registry/blocks/calendar/CalendarBlock07.svelte +109 -0
- package/src/registry/blocks/calendar/CalendarBlock08.svelte +71 -0
- package/src/registry/blocks/calendar/CalendarBlock09.svelte +99 -0
- package/src/registry/blocks/calendar/CalendarBlock10.svelte +88 -0
- package/src/registry/blocks/calendar/CalendarBlock11.svelte +99 -0
- package/src/registry/blocks/calendar/CalendarBlock12.svelte +121 -0
- package/src/registry/blocks/calendar/CalendarBlock13.svelte +92 -0
- package/src/registry/blocks/calendar/CalendarBlock14.svelte +71 -0
- package/src/registry/blocks/calendar/CalendarBlock15.svelte +96 -0
- package/src/registry/blocks/calendar/CalendarBlock16.svelte +98 -0
- package/src/registry/blocks/calendar/CalendarBlock17.svelte +88 -0
- package/src/registry/blocks/calendar/CalendarBlock18.svelte +84 -0
- package/src/registry/blocks/calendar/CalendarBlock19.svelte +105 -0
- package/src/registry/blocks/calendar/CalendarBlock20.svelte +78 -0
- package/src/registry/blocks/calendar/CalendarBlock21.svelte +115 -0
- package/src/registry/blocks/calendar/CalendarBlock22.svelte +136 -0
- package/src/registry/blocks/calendar/CalendarBlock23.svelte +112 -0
- package/src/registry/blocks/calendar/CalendarBlock24.svelte +116 -0
- package/src/registry/blocks/calendar/CalendarBlock25.svelte +144 -0
- package/src/registry/blocks/calendar/CalendarBlock26.svelte +163 -0
- package/src/registry/blocks/calendar/CalendarBlock27.svelte +112 -0
- package/src/registry/blocks/calendar/CalendarBlock28.svelte +109 -0
- package/src/registry/blocks/calendar/CalendarBlock29.svelte +126 -0
- package/src/registry/blocks/calendar/CalendarBlock30.svelte +122 -0
- package/src/registry/blocks/calendar/CalendarBlock31.svelte +161 -0
- package/src/registry/blocks/calendar/CalendarBlock32.svelte +154 -0
- package/src/registry/blocks/calendar/index.ts +32 -0
- package/src/registry/blocks/card/Card01.svelte +69 -0
- package/src/registry/blocks/card/Card02.svelte +50 -0
- package/src/registry/blocks/card/Card03.svelte +60 -0
- package/src/registry/blocks/card/Card04.svelte +89 -0
- package/src/registry/blocks/card/Card05.svelte +51 -0
- package/src/registry/blocks/card/Card06.svelte +77 -0
- package/src/registry/blocks/card/Card07.svelte +35 -0
- package/src/registry/blocks/card/Card08.svelte +36 -0
- package/src/registry/blocks/card/index.ts +8 -0
- package/src/registry/blocks/cart/Cart01.svelte +183 -0
- package/src/registry/blocks/cart/Cart02.svelte +103 -0
- package/src/registry/blocks/cart/Cart03.svelte +38 -0
- package/src/registry/blocks/cart/Cart04.svelte +174 -0
- package/src/registry/blocks/cart/index.ts +4 -0
- package/src/registry/blocks/checkout/Checkout01.svelte +237 -0
- package/src/registry/blocks/checkout/Checkout02.svelte +205 -0
- package/src/registry/blocks/checkout/Checkout03.svelte +189 -0
- package/src/registry/blocks/checkout/Checkout04.svelte +109 -0
- package/src/registry/blocks/checkout/index.ts +4 -0
- package/src/registry/blocks/comparison-section/ComparisonSection01.svelte +116 -0
- package/src/registry/blocks/comparison-section/ComparisonSection02.svelte +98 -0
- package/src/registry/blocks/comparison-section/ComparisonSection03.svelte +93 -0
- package/src/registry/blocks/comparison-section/ComparisonSection04.svelte +98 -0
- package/src/registry/blocks/comparison-section/ComparisonSection05.svelte +119 -0
- package/src/registry/blocks/comparison-section/ComparisonSection06.svelte +154 -0
- package/src/registry/blocks/comparison-section/index.ts +6 -0
- package/src/registry/blocks/contact-section/ContactSection01.svelte +64 -0
- package/src/registry/blocks/contact-section/ContactSection02.svelte +108 -0
- package/src/registry/blocks/contact-section/ContactSection03.svelte +64 -0
- package/src/registry/blocks/contact-section/ContactSection04.svelte +30 -0
- package/src/registry/blocks/contact-section/ContactSection05.svelte +71 -0
- package/src/registry/blocks/contact-section/ContactSection06.svelte +88 -0
- package/src/registry/blocks/contact-section/index.ts +6 -0
- package/src/registry/blocks/cta/CTA01.svelte +44 -0
- package/src/registry/blocks/cta/CTA02.svelte +48 -0
- package/src/registry/blocks/cta/CTA03.svelte +53 -0
- package/src/registry/blocks/cta/CTA04.svelte +60 -0
- package/src/registry/blocks/cta/CTA05.svelte +53 -0
- package/src/registry/blocks/cta/CTA06.svelte +44 -0
- package/src/registry/blocks/cta/CTA07.svelte +39 -0
- package/src/registry/blocks/cta/index.ts +7 -0
- package/src/registry/blocks/dashboard/ChartsBlock01.svelte +275 -0
- package/src/registry/blocks/dashboard/DashboardBlock01.svelte +207 -0
- package/src/registry/blocks/dashboard/DashboardBlock02.svelte +259 -0
- package/src/registry/blocks/dashboard/DashboardBlock03.svelte +315 -0
- package/src/registry/blocks/dashboard/DashboardBlock04.svelte +220 -0
- package/src/registry/blocks/dashboard/DashboardBlock05.svelte +158 -0
- package/src/registry/blocks/dashboard/DashboardBlock06.svelte +173 -0
- package/src/registry/blocks/dashboard/DashboardBlock07.svelte +103 -0
- package/src/registry/blocks/dashboard/index.ts +16 -0
- package/src/registry/blocks/description-list/DescriptionList01.svelte +75 -0
- package/src/registry/blocks/description-list/DescriptionList02.svelte +50 -0
- package/src/registry/blocks/description-list/DescriptionList03.svelte +74 -0
- package/src/registry/blocks/description-list/DescriptionList04.svelte +88 -0
- package/src/registry/blocks/description-list/index.ts +4 -0
- package/src/registry/blocks/empty-lp/EmptyLP01.svelte +46 -0
- package/src/registry/blocks/empty-lp/EmptyLP02.svelte +49 -0
- package/src/registry/blocks/empty-lp/EmptyLP03.svelte +61 -0
- package/src/registry/blocks/empty-lp/EmptyLP04.svelte +37 -0
- package/src/registry/blocks/empty-lp/index.ts +4 -0
- package/src/registry/blocks/empty-section/EmptySection01.svelte +47 -0
- package/src/registry/blocks/empty-section/EmptySection02.svelte +93 -0
- package/src/registry/blocks/empty-section/EmptySection03.svelte +101 -0
- package/src/registry/blocks/empty-section/EmptySection04.svelte +76 -0
- package/src/registry/blocks/empty-section/index.ts +4 -0
- package/src/registry/blocks/faq-section/FaqSection01.svelte +114 -0
- package/src/registry/blocks/faq-section/FaqSection02.svelte +137 -0
- package/src/registry/blocks/faq-section/FaqSection03.svelte +107 -0
- package/src/registry/blocks/faq-section/FaqSection04.svelte +74 -0
- package/src/registry/blocks/faq-section/FaqSection05.svelte +69 -0
- package/src/registry/blocks/faq-section/index.ts +11 -0
- package/src/registry/blocks/feature-section/FeatureSection01.svelte +94 -0
- package/src/registry/blocks/feature-section/FeatureSection02.svelte +61 -0
- package/src/registry/blocks/feature-section/FeatureSection03.svelte +85 -0
- package/src/registry/blocks/feature-section/FeatureSection04.svelte +67 -0
- package/src/registry/blocks/feature-section/FeatureSection05.svelte +61 -0
- package/src/registry/blocks/feature-section/FeatureSection06.svelte +58 -0
- package/src/registry/blocks/feature-section/FeatureSection07.svelte +79 -0
- package/src/registry/blocks/feature-section/FeatureSection08.svelte +92 -0
- package/src/registry/blocks/feature-section/FeatureSection09.svelte +58 -0
- package/src/registry/blocks/feature-section/FeatureSection10.svelte +87 -0
- package/src/registry/blocks/feature-section/FeatureSection11.svelte +118 -0
- package/src/registry/blocks/feature-section/FeatureSection12.svelte +76 -0
- package/src/registry/blocks/feature-section/FeatureSection13.svelte +88 -0
- package/src/registry/blocks/feature-section/FeatureSection14.svelte +119 -0
- package/src/registry/blocks/feature-section/FeatureSection15.svelte +122 -0
- package/src/registry/blocks/feature-section/FeatureSection16.svelte +113 -0
- package/src/registry/blocks/feature-section/FeatureSection17.svelte +93 -0
- package/src/registry/blocks/feature-section/FeatureSection18.svelte +97 -0
- package/src/registry/blocks/feature-section/FeatureSection19.svelte +74 -0
- package/src/registry/blocks/feature-section/FeatureSection20.svelte +69 -0
- package/src/registry/blocks/feature-section/index.ts +20 -0
- package/src/registry/blocks/footer/Footer01.svelte +62 -0
- package/src/registry/blocks/footer/Footer02.svelte +67 -0
- package/src/registry/blocks/footer/Footer03.svelte +87 -0
- package/src/registry/blocks/footer/Footer04.svelte +67 -0
- package/src/registry/blocks/footer/Footer05.svelte +20 -0
- package/src/registry/blocks/footer/Footer06.svelte +107 -0
- package/src/registry/blocks/footer/Footer07.svelte +88 -0
- package/src/registry/blocks/footer/Footer08.svelte +84 -0
- package/src/registry/blocks/footer/Footer09.svelte +65 -0
- package/src/registry/blocks/footer/index.ts +19 -0
- package/src/registry/blocks/forms/SettingsBlock.svelte +329 -0
- package/src/registry/blocks/forms/index.ts +1 -0
- package/src/registry/blocks/gallery-section/GallerySection01.svelte +43 -0
- package/src/registry/blocks/gallery-section/GallerySection02.svelte +45 -0
- package/src/registry/blocks/gallery-section/GallerySection03.svelte +43 -0
- package/src/registry/blocks/gallery-section/GallerySection04.svelte +49 -0
- package/src/registry/blocks/gallery-section/GallerySection05.svelte +45 -0
- package/src/registry/blocks/gallery-section/GallerySection06.svelte +49 -0
- package/src/registry/blocks/gallery-section/GallerySection07.svelte +48 -0
- package/src/registry/blocks/gallery-section/GallerySection08.svelte +43 -0
- package/src/registry/blocks/gallery-section/GallerySection09.svelte +55 -0
- package/src/registry/blocks/gallery-section/GallerySection10.svelte +43 -0
- package/src/registry/blocks/gallery-section/GallerySection11.svelte +75 -0
- package/src/registry/blocks/gallery-section/GallerySection12.svelte +76 -0
- package/src/registry/blocks/gallery-section/index.ts +12 -0
- package/src/registry/blocks/header-section/HeaderSection01.svelte +53 -0
- package/src/registry/blocks/header-section/HeaderSection02.svelte +53 -0
- package/src/registry/blocks/header-section/HeaderSection03.svelte +61 -0
- package/src/registry/blocks/header-section/HeaderSection04.svelte +63 -0
- package/src/registry/blocks/header-section/HeaderSection05.svelte +53 -0
- package/src/registry/blocks/header-section/HeaderSection06.svelte +70 -0
- package/src/registry/blocks/header-section/HeaderSection07.svelte +97 -0
- package/src/registry/blocks/header-section/HeaderSection08.svelte +61 -0
- package/src/registry/blocks/header-section/HeaderSection09.svelte +53 -0
- package/src/registry/blocks/header-section/HeaderSection10.svelte +63 -0
- package/src/registry/blocks/header-section/HeaderSection11.svelte +68 -0
- package/src/registry/blocks/header-section/HeaderSection12.svelte +60 -0
- package/src/registry/blocks/header-section/HeaderSection13.svelte +92 -0
- package/src/registry/blocks/header-section/HeaderSection14.svelte +77 -0
- package/src/registry/blocks/header-section/HeaderSection15.svelte +49 -0
- package/src/registry/blocks/header-section/HeaderSection16.svelte +74 -0
- package/src/registry/blocks/header-section/HeaderSection17.svelte +58 -0
- package/src/registry/blocks/header-section/HeaderSection18.svelte +66 -0
- package/src/registry/blocks/header-section/HeaderSection19.svelte +47 -0
- package/src/registry/blocks/header-section/HeaderSection20.svelte +53 -0
- package/src/registry/blocks/header-section/index.ts +20 -0
- package/src/registry/blocks/hero-section/HeroSection01.svelte +69 -0
- package/src/registry/blocks/hero-section/HeroSection02.svelte +47 -0
- package/src/registry/blocks/hero-section/HeroSection03.svelte +56 -0
- package/src/registry/blocks/hero-section/HeroSection04.svelte +69 -0
- package/src/registry/blocks/hero-section/HeroSection05.svelte +73 -0
- package/src/registry/blocks/hero-section/HeroSection06.svelte +78 -0
- package/src/registry/blocks/hero-section/HeroSection07.svelte +48 -0
- package/src/registry/blocks/hero-section/HeroSection08.svelte +73 -0
- package/src/registry/blocks/hero-section/HeroSection09.svelte +51 -0
- package/src/registry/blocks/hero-section/HeroSection10.svelte +47 -0
- package/src/registry/blocks/hero-section/HeroSection11.svelte +60 -0
- package/src/registry/blocks/hero-section/HeroSection12.svelte +74 -0
- package/src/registry/blocks/hero-section/HeroSection13.svelte +86 -0
- package/src/registry/blocks/hero-section/HeroSection14.svelte +116 -0
- package/src/registry/blocks/hero-section/HeroSection15.svelte +75 -0
- package/src/registry/blocks/hero-section/HeroSection16.svelte +92 -0
- package/src/registry/blocks/hero-section/HeroSection17.svelte +78 -0
- package/src/registry/blocks/hero-section/HeroSection18.svelte +82 -0
- package/src/registry/blocks/hero-section/HeroSection19.svelte +72 -0
- package/src/registry/blocks/hero-section/HeroSection20.svelte +79 -0
- package/src/registry/blocks/hero-section/HeroSection21.svelte +75 -0
- package/src/registry/blocks/hero-section/HeroSection22.svelte +103 -0
- package/src/registry/blocks/hero-section/index.ts +22 -0
- package/src/registry/blocks/logo-section/LogoSection01.svelte +54 -0
- package/src/registry/blocks/logo-section/LogoSection02.svelte +56 -0
- package/src/registry/blocks/logo-section/LogoSection03.svelte +58 -0
- package/src/registry/blocks/logo-section/LogoSection04.svelte +58 -0
- package/src/registry/blocks/logo-section/LogoSection05.svelte +43 -0
- package/src/registry/blocks/logo-section/LogoSection06.svelte +43 -0
- package/src/registry/blocks/logo-section/LogoSection07.svelte +56 -0
- package/src/registry/blocks/logo-section/index.ts +7 -0
- package/src/registry/blocks/lp-navbar/LPNavbar01.svelte +94 -0
- package/src/registry/blocks/lp-navbar/LPNavbar02.svelte +96 -0
- package/src/registry/blocks/lp-navbar/LPNavbar03.svelte +97 -0
- package/src/registry/blocks/lp-navbar/LPNavbar04.svelte +103 -0
- package/src/registry/blocks/lp-navbar/LPNavbar05.svelte +173 -0
- package/src/registry/blocks/lp-navbar/LPNavbar06.svelte +200 -0
- package/src/registry/blocks/lp-navbar/LPNavbar07.svelte +202 -0
- package/src/registry/blocks/lp-navbar/index.ts +7 -0
- package/src/registry/blocks/mail/MailBlock.svelte +321 -0
- package/src/registry/blocks/mail/index.ts +2 -0
- package/src/registry/blocks/music/MusicBlock.svelte +239 -0
- package/src/registry/blocks/music/index.ts +1 -0
- package/src/registry/blocks/navbar/Navbar01.svelte +234 -0
- package/src/registry/blocks/navbar/Navbar02.svelte +111 -0
- package/src/registry/blocks/navbar/Navbar03.svelte +88 -0
- package/src/registry/blocks/navbar/index.ts +3 -0
- package/src/registry/blocks/not-found/NotFound01.svelte +29 -0
- package/src/registry/blocks/not-found/NotFound02.svelte +28 -0
- package/src/registry/blocks/not-found/NotFound03.svelte +25 -0
- package/src/registry/blocks/not-found/index.ts +3 -0
- package/src/registry/blocks/order-history/OrderHistory01.svelte +208 -0
- package/src/registry/blocks/order-history/OrderHistory02.svelte +131 -0
- package/src/registry/blocks/order-history/OrderHistory03.svelte +133 -0
- package/src/registry/blocks/order-history/index.ts +3 -0
- package/src/registry/blocks/page-header/PageHeader01.svelte +39 -0
- package/src/registry/blocks/page-header/PageHeader02.svelte +58 -0
- package/src/registry/blocks/page-header/PageHeader03.svelte +64 -0
- package/src/registry/blocks/page-header/PageHeader04.svelte +49 -0
- package/src/registry/blocks/page-header/PageHeader05.svelte +49 -0
- package/src/registry/blocks/page-header/PageHeader06.svelte +58 -0
- package/src/registry/blocks/page-header/PageHeader07.svelte +64 -0
- package/src/registry/blocks/page-header/PageHeader08.svelte +68 -0
- package/src/registry/blocks/page-header/index.ts +8 -0
- package/src/registry/blocks/playground/PlaygroundBlock01.svelte +162 -0
- package/src/registry/blocks/playground/PlaygroundBlock02.svelte +156 -0
- package/src/registry/blocks/playground/index.ts +2 -0
- package/src/registry/blocks/pricing-section/PricingSection01.svelte +109 -0
- package/src/registry/blocks/pricing-section/PricingSection02.svelte +145 -0
- package/src/registry/blocks/pricing-section/PricingSection03.svelte +94 -0
- package/src/registry/blocks/pricing-section/PricingSection04.svelte +103 -0
- package/src/registry/blocks/pricing-section/PricingSection05.svelte +128 -0
- package/src/registry/blocks/pricing-section/index.ts +20 -0
- package/src/registry/blocks/product-card/ProductCard01.svelte +74 -0
- package/src/registry/blocks/product-card/ProductCard02.svelte +108 -0
- package/src/registry/blocks/product-card/ProductCard03.svelte +80 -0
- package/src/registry/blocks/product-card/ProductCard04.svelte +50 -0
- package/src/registry/blocks/product-card/ProductCard05.svelte +107 -0
- package/src/registry/blocks/product-card/index.ts +5 -0
- package/src/registry/blocks/product-detail/ProductDetail01.svelte +174 -0
- package/src/registry/blocks/product-detail/ProductDetail02.svelte +170 -0
- package/src/registry/blocks/product-detail/ProductDetail03.svelte +159 -0
- package/src/registry/blocks/product-detail/ProductDetail04.svelte +106 -0
- package/src/registry/blocks/product-detail/ProductDetail05.svelte +181 -0
- package/src/registry/blocks/product-detail/index.ts +5 -0
- package/src/registry/blocks/product-listing/ProductListing01.svelte +194 -0
- package/src/registry/blocks/product-listing/ProductListing02.svelte +163 -0
- package/src/registry/blocks/product-listing/ProductListing03.svelte +173 -0
- package/src/registry/blocks/product-listing/ProductListing04.svelte +179 -0
- package/src/registry/blocks/product-listing/ProductListing05.svelte +126 -0
- package/src/registry/blocks/product-listing/index.ts +5 -0
- package/src/registry/blocks/product-reviews/ProductReviews01.svelte +156 -0
- package/src/registry/blocks/product-reviews/ProductReviews02.svelte +139 -0
- package/src/registry/blocks/product-reviews/ProductReviews03.svelte +137 -0
- package/src/registry/blocks/product-reviews/ProductReviews04.svelte +129 -0
- package/src/registry/blocks/product-reviews/index.ts +4 -0
- package/src/registry/blocks/promo-section/PromoSection01.svelte +72 -0
- package/src/registry/blocks/promo-section/PromoSection02.svelte +61 -0
- package/src/registry/blocks/promo-section/PromoSection03.svelte +110 -0
- package/src/registry/blocks/promo-section/PromoSection04.svelte +103 -0
- package/src/registry/blocks/promo-section/index.ts +4 -0
- package/src/registry/blocks/rich-text/RichText01.svelte +30 -0
- package/src/registry/blocks/rich-text/RichText02.svelte +72 -0
- package/src/registry/blocks/rich-text/RichText03.svelte +52 -0
- package/src/registry/blocks/rich-text/RichText04.svelte +44 -0
- package/src/registry/blocks/rich-text/RichText05.svelte +56 -0
- package/src/registry/blocks/rich-text/index.ts +5 -0
- package/src/registry/blocks/section/Section01.svelte +38 -0
- package/src/registry/blocks/section/Section02.svelte +90 -0
- package/src/registry/blocks/section/Section03.svelte +95 -0
- package/src/registry/blocks/section/Section04.svelte +117 -0
- package/src/registry/blocks/section/index.ts +4 -0
- package/src/registry/blocks/section-footer/SectionFooter01.svelte +39 -0
- package/src/registry/blocks/section-footer/SectionFooter02.svelte +33 -0
- package/src/registry/blocks/section-footer/SectionFooter03.svelte +33 -0
- package/src/registry/blocks/section-footer/SectionFooter04.svelte +34 -0
- package/src/registry/blocks/section-footer/SectionFooter05.svelte +69 -0
- package/src/registry/blocks/section-footer/index.ts +5 -0
- package/src/registry/blocks/section-header/SectionHeader01.svelte +39 -0
- package/src/registry/blocks/section-header/SectionHeader02.svelte +58 -0
- package/src/registry/blocks/section-header/SectionHeader03.svelte +88 -0
- package/src/registry/blocks/section-header/SectionHeader04.svelte +45 -0
- package/src/registry/blocks/section-header/SectionHeader05.svelte +64 -0
- package/src/registry/blocks/section-header/index.ts +5 -0
- package/src/registry/blocks/settings/Settings01.svelte +202 -0
- package/src/registry/blocks/settings/Settings02.svelte +201 -0
- package/src/registry/blocks/settings/Settings03.svelte +156 -0
- package/src/registry/blocks/settings/Settings04.svelte +175 -0
- package/src/registry/blocks/settings/Settings05.svelte +248 -0
- package/src/registry/blocks/settings/Settings06.svelte +120 -0
- package/src/registry/blocks/settings/Settings07.svelte +136 -0
- package/src/registry/blocks/settings/index.ts +7 -0
- package/src/registry/blocks/sidebar/SidebarLayout01.svelte +108 -0
- package/src/registry/blocks/sidebar/SidebarLayout02.svelte +75 -0
- package/src/registry/blocks/sidebar/SidebarLayout03.svelte +108 -0
- package/src/registry/blocks/sidebar/SidebarLayout04.svelte +111 -0
- package/src/registry/blocks/sidebar/SidebarLayout05.svelte +103 -0
- package/src/registry/blocks/sidebar/SidebarLayout06.svelte +122 -0
- package/src/registry/blocks/sidebar/SidebarLayout07.svelte +183 -0
- package/src/registry/blocks/sidebar/SidebarLayout08.svelte +162 -0
- package/src/registry/blocks/sidebar/SidebarLayout09.svelte +167 -0
- package/src/registry/blocks/sidebar/SidebarLayout10.svelte +159 -0
- package/src/registry/blocks/sidebar/SidebarLayout11.svelte +135 -0
- package/src/registry/blocks/sidebar/SidebarLayout12.svelte +159 -0
- package/src/registry/blocks/sidebar/SidebarLayout13.svelte +103 -0
- package/src/registry/blocks/sidebar/SidebarLayout14.svelte +87 -0
- package/src/registry/blocks/sidebar/SidebarLayout15.svelte +228 -0
- package/src/registry/blocks/sidebar/index.ts +15 -0
- package/src/registry/blocks/sign-in/SignIn01.svelte +140 -0
- package/src/registry/blocks/sign-in/SignIn02.svelte +155 -0
- package/src/registry/blocks/sign-in/SignIn03.svelte +214 -0
- package/src/registry/blocks/sign-in/SignIn04.svelte +163 -0
- package/src/registry/blocks/sign-in/SignIn05.svelte +209 -0
- package/src/registry/blocks/sign-in/SignIn06.svelte +233 -0
- package/src/registry/blocks/sign-in/SignIn07.svelte +268 -0
- package/src/registry/blocks/sign-in/SignIn08.svelte +125 -0
- package/src/registry/blocks/sign-in/SignIn09.svelte +93 -0
- package/src/registry/blocks/sign-in/SignIn10.svelte +74 -0
- package/src/registry/blocks/sign-in/index.ts +10 -0
- package/src/registry/blocks/sign-up/SignUp01.svelte +124 -0
- package/src/registry/blocks/sign-up/SignUp02.svelte +110 -0
- package/src/registry/blocks/sign-up/SignUp03.svelte +182 -0
- package/src/registry/blocks/sign-up/SignUp04.svelte +126 -0
- package/src/registry/blocks/sign-up/SignUp05.svelte +182 -0
- package/src/registry/blocks/sign-up/SignUp06.svelte +221 -0
- package/src/registry/blocks/sign-up/SignUp07.svelte +98 -0
- package/src/registry/blocks/sign-up/index.ts +7 -0
- package/src/registry/blocks/stats-section/StatsSection01.svelte +66 -0
- package/src/registry/blocks/stats-section/StatsSection02.svelte +60 -0
- package/src/registry/blocks/stats-section/StatsSection03.svelte +66 -0
- package/src/registry/blocks/stats-section/StatsSection04.svelte +66 -0
- package/src/registry/blocks/stats-section/StatsSection05.svelte +60 -0
- package/src/registry/blocks/stats-section/StatsSection06.svelte +48 -0
- package/src/registry/blocks/stats-section/StatsSection07.svelte +66 -0
- package/src/registry/blocks/stats-section/index.ts +7 -0
- package/src/registry/blocks/store-navbar/StoreNavbar01.svelte +101 -0
- package/src/registry/blocks/store-navbar/StoreNavbar02.svelte +65 -0
- package/src/registry/blocks/store-navbar/StoreNavbar03.svelte +83 -0
- package/src/registry/blocks/store-navbar/StoreNavbar04.svelte +110 -0
- package/src/registry/blocks/store-navbar/StoreNavbar05.svelte +80 -0
- package/src/registry/blocks/store-navbar/index.ts +5 -0
- package/src/registry/blocks/table-header/TableHeader01.svelte +96 -0
- package/src/registry/blocks/table-header/TableHeader02.svelte +86 -0
- package/src/registry/blocks/table-header/TableHeader03.svelte +99 -0
- package/src/registry/blocks/table-header/TableHeader04.svelte +107 -0
- package/src/registry/blocks/table-header/index.ts +4 -0
- package/src/registry/blocks/tasks/TasksBlock.svelte +286 -0
- package/src/registry/blocks/tasks/index.ts +1 -0
- package/src/registry/blocks/team-section/TeamSection01.svelte +80 -0
- package/src/registry/blocks/team-section/TeamSection02.svelte +102 -0
- package/src/registry/blocks/team-section/TeamSection03.svelte +76 -0
- package/src/registry/blocks/team-section/TeamSection04.svelte +106 -0
- package/src/registry/blocks/team-section/index.ts +13 -0
- package/src/registry/blocks/testimonials/Testimonial01.svelte +74 -0
- package/src/registry/blocks/testimonials/Testimonial02.svelte +74 -0
- package/src/registry/blocks/testimonials/Testimonial03.svelte +79 -0
- package/src/registry/blocks/testimonials/Testimonial04.svelte +113 -0
- package/src/registry/blocks/testimonials/Testimonial05.svelte +74 -0
- package/src/registry/blocks/testimonials/Testimonial06.svelte +114 -0
- package/src/registry/blocks/testimonials/Testimonial07.svelte +131 -0
- package/src/registry/blocks/testimonials/Testimonials01.svelte +60 -0
- package/src/registry/blocks/testimonials/Testimonials02.svelte +61 -0
- package/src/registry/blocks/testimonials/Testimonials03.svelte +79 -0
- package/src/registry/blocks/testimonials/Testimonials04.svelte +74 -0
- package/src/registry/blocks/testimonials/Testimonials05.svelte +68 -0
- package/src/registry/blocks/testimonials/Testimonials06.svelte +82 -0
- package/src/registry/blocks/testimonials/Testimonials07.svelte +98 -0
- package/src/registry/blocks/testimonials/index.ts +16 -0
- package/src/registry/templates/cn.ts +42 -0
- package/src/index.ts +0 -2
- package/tsconfig.json +0 -20
- /package/src/{generate-component.cjs → commands/generate-component.cjs} +0 -0
- /package/src/{generate-route.cjs → commands/generate-route.cjs} +0 -0
- /package/src/{generate-service.cjs → commands/generate-service.cjs} +0 -0
- /package/src/{manage-auth-users.cjs → commands/manage-auth-users.cjs} +0 -0
- /package/src/{setup.cjs → commands/setup.cjs} +0 -0
- /package/src/{validate-setup.cjs → commands/validate.cjs} +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
import { Button } from '$lib/components/ui';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
class?: string;
|
|
7
|
+
onAccept?: () => void;
|
|
8
|
+
onReject?: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let { class: className, onAccept, onReject }: Props = $props();
|
|
12
|
+
|
|
13
|
+
let visible = $state(true);
|
|
14
|
+
|
|
15
|
+
const handleAccept = () => {
|
|
16
|
+
if (onAccept) {
|
|
17
|
+
onAccept();
|
|
18
|
+
}
|
|
19
|
+
visible = false;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const handleReject = () => {
|
|
23
|
+
if (onReject) {
|
|
24
|
+
onReject();
|
|
25
|
+
}
|
|
26
|
+
visible = false;
|
|
27
|
+
};
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
{#if visible}
|
|
31
|
+
<!-- Desktop -->
|
|
32
|
+
<div class="hidden sm:flex w-full border-t bg-background px-6 py-4 items-center justify-between gap-4">
|
|
33
|
+
<p class="text-sm text-muted-foreground">
|
|
34
|
+
We use cookies to enhance your experience. By clicking "Accept," you consent to the use of all cookies. Learn more in our
|
|
35
|
+
<a href="#" class="underline hover:no-underline">cookie policy</a>.
|
|
36
|
+
</p>
|
|
37
|
+
<div class="flex gap-2 flex-shrink-0">
|
|
38
|
+
<Button variant="outline" size="sm" onclick={handleReject}>Reject all</Button>
|
|
39
|
+
<Button size="sm" onclick={handleAccept}>Accept all</Button>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<!-- Mobile -->
|
|
44
|
+
<div class="sm:hidden flex flex-col gap-3 border-t bg-background px-4 py-4">
|
|
45
|
+
<p class="text-sm text-muted-foreground">
|
|
46
|
+
We use cookies to enhance your experience. By clicking "Accept," you consent to the use of all cookies. Learn more in our
|
|
47
|
+
<a href="#" class="underline hover:no-underline">cookie policy</a>.
|
|
48
|
+
</p>
|
|
49
|
+
<div class="flex flex-col gap-2 w-full">
|
|
50
|
+
<Button variant="outline" size="sm" onclick={handleReject} class="w-full">Reject all</Button>
|
|
51
|
+
<Button size="sm" onclick={handleAccept} class="w-full">Accept all</Button>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
{/if}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
count?: string;
|
|
7
|
+
label?: string;
|
|
8
|
+
variant?: 'light' | 'dark';
|
|
9
|
+
href?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
class: className,
|
|
14
|
+
count = '5K+',
|
|
15
|
+
label = 'Loved by',
|
|
16
|
+
variant = 'light',
|
|
17
|
+
href
|
|
18
|
+
}: Props = $props();
|
|
19
|
+
|
|
20
|
+
const isLight = variant === 'light';
|
|
21
|
+
const containerClass = isLight
|
|
22
|
+
? 'inline-flex items-center gap-3 rounded-full border bg-background px-4 py-2'
|
|
23
|
+
: 'inline-flex items-center gap-3 rounded-full border border-background/20 bg-foreground text-background px-4 py-2';
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<a
|
|
27
|
+
{href}
|
|
28
|
+
class={cn(containerClass, className)}
|
|
29
|
+
role={href ? 'link' : 'status'}
|
|
30
|
+
>
|
|
31
|
+
<div class="flex -space-x-2">
|
|
32
|
+
{#each [0, 1, 2] as index}
|
|
33
|
+
<div
|
|
34
|
+
class={cn(
|
|
35
|
+
'h-8 w-8 rounded-full',
|
|
36
|
+
isLight ? 'bg-muted' : 'bg-background/30'
|
|
37
|
+
)}
|
|
38
|
+
></div>
|
|
39
|
+
{/each}
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<span class="text-sm font-medium">
|
|
43
|
+
{label} <strong>{count}</strong> customers
|
|
44
|
+
</span>
|
|
45
|
+
|
|
46
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="flex-shrink-0">
|
|
47
|
+
<polyline points="9 18 15 12 9 6"></polyline>
|
|
48
|
+
</svg>
|
|
49
|
+
</a>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
message?: string;
|
|
7
|
+
ctaLabel?: string;
|
|
8
|
+
onCta?: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let {
|
|
12
|
+
class: className,
|
|
13
|
+
message = 'New update · Pro blocks are now available in shadcn/ui kit for Figma!',
|
|
14
|
+
ctaLabel,
|
|
15
|
+
onCta
|
|
16
|
+
}: Props = $props();
|
|
17
|
+
|
|
18
|
+
let visible = $state(true);
|
|
19
|
+
|
|
20
|
+
const handleClose = () => {
|
|
21
|
+
visible = false;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const handleCta = () => {
|
|
25
|
+
if (onCta) {
|
|
26
|
+
onCta();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
{#if visible}
|
|
32
|
+
<div class={cn('inline-flex items-center gap-2 rounded-lg bg-foreground text-background text-sm px-4 py-3 w-full sm:w-auto relative', className)}>
|
|
33
|
+
<p>
|
|
34
|
+
<strong>{message.split('·')[0].trim()}</strong> · {message.split('·')[1]?.trim() || message} <span class="font-medium">»</span>
|
|
35
|
+
</p>
|
|
36
|
+
<button
|
|
37
|
+
onclick={handleClose}
|
|
38
|
+
class="absolute right-3 top-1/2 -translate-y-1/2 text-background/70 hover:text-background transition-colors"
|
|
39
|
+
aria-label="Close banner"
|
|
40
|
+
>
|
|
41
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
42
|
+
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
43
|
+
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
44
|
+
</svg>
|
|
45
|
+
</button>
|
|
46
|
+
</div>
|
|
47
|
+
{/if}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as Banner01 } from './Banner01.svelte';
|
|
2
|
+
export { default as Banner02 } from './Banner02.svelte';
|
|
3
|
+
export { default as Banner03 } from './Banner03.svelte';
|
|
4
|
+
export { default as Banner04 } from './Banner04.svelte';
|
|
5
|
+
export { default as Banner05 } from './Banner05.svelte';
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { class: customClass = '', title = 'Build something amazing', description = '' }: Props = $props();
|
|
11
|
+
|
|
12
|
+
const checkIcon = `<polyline points="20 6 9 17 4 12"/>`;
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<section class={cn('w-full py-16 px-4 sm:px-6', customClass)}>
|
|
16
|
+
<div class="mx-auto max-w-7xl">
|
|
17
|
+
<div class="text-center mb-12">
|
|
18
|
+
<p class="text-sm font-semibold text-foreground/60 mb-2">Bento Grid</p>
|
|
19
|
+
<h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
|
|
20
|
+
{#if description}
|
|
21
|
+
<p class="text-lg text-muted-foreground max-w-2xl mx-auto">{description}</p>
|
|
22
|
+
{/if}
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<div class="mt-10 grid grid-cols-1 gap-4 sm:grid-cols-3">
|
|
26
|
+
<!-- Large Feature (2-col span) -->
|
|
27
|
+
<div class="rounded-xl border bg-background p-6 sm:col-span-2">
|
|
28
|
+
<div class="aspect-video w-full rounded-lg bg-muted/60 flex items-center justify-center">
|
|
29
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="text-muted-foreground/40">
|
|
30
|
+
<rect x="3" y="3" width="18" height="18" rx="2"/>
|
|
31
|
+
<circle cx="8.5" cy="8.5" r="1.5"/>
|
|
32
|
+
<polyline points="21 15 16 10 5 21"/>
|
|
33
|
+
</svg>
|
|
34
|
+
</div>
|
|
35
|
+
<h3 class="text-xl font-semibold mt-4">Ship faster</h3>
|
|
36
|
+
<p class="text-muted-foreground mt-2">Deploy your ideas in minutes with our intuitive platform.</p>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<!-- Tall Feature (row-span-2) -->
|
|
40
|
+
<div class="rounded-xl border bg-background p-6 sm:row-span-2">
|
|
41
|
+
<div class="flex items-center justify-center h-12 w-12 rounded-lg bg-foreground/10 mb-4">
|
|
42
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground">
|
|
43
|
+
{checkIcon}
|
|
44
|
+
</svg>
|
|
45
|
+
</div>
|
|
46
|
+
<h3 class="text-lg font-semibold mb-4">Beautiful UI</h3>
|
|
47
|
+
<ul class="space-y-3">
|
|
48
|
+
<li class="flex items-start gap-3">
|
|
49
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground flex-shrink-0 mt-0.5">
|
|
50
|
+
{checkIcon}
|
|
51
|
+
</svg>
|
|
52
|
+
<span class="text-sm">Dark mode support</span>
|
|
53
|
+
</li>
|
|
54
|
+
<li class="flex items-start gap-3">
|
|
55
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground flex-shrink-0 mt-0.5">
|
|
56
|
+
{checkIcon}
|
|
57
|
+
</svg>
|
|
58
|
+
<span class="text-sm">Fully typed</span>
|
|
59
|
+
</li>
|
|
60
|
+
<li class="flex items-start gap-3">
|
|
61
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground flex-shrink-0 mt-0.5">
|
|
62
|
+
{checkIcon}
|
|
63
|
+
</svg>
|
|
64
|
+
<span class="text-sm">Responsive design</span>
|
|
65
|
+
</li>
|
|
66
|
+
</ul>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<!-- Small Cell 1 -->
|
|
70
|
+
<div class="rounded-xl border bg-background p-6">
|
|
71
|
+
<div class="flex items-center justify-center h-10 w-10 rounded-lg bg-foreground/10 mb-3">
|
|
72
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground">
|
|
73
|
+
{checkIcon}
|
|
74
|
+
</svg>
|
|
75
|
+
</div>
|
|
76
|
+
<h3 class="font-semibold">Dark mode</h3>
|
|
77
|
+
<p class="text-sm text-muted-foreground mt-1">Built-in dark theme support.</p>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<!-- Small Cell 2 -->
|
|
81
|
+
<div class="rounded-xl border bg-background p-6">
|
|
82
|
+
<div class="flex items-center justify-center h-10 w-10 rounded-lg bg-foreground/10 mb-3">
|
|
83
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground">
|
|
84
|
+
{checkIcon}
|
|
85
|
+
</svg>
|
|
86
|
+
</div>
|
|
87
|
+
<h3 class="font-semibold">Fully typed</h3>
|
|
88
|
+
<p class="text-sm text-muted-foreground mt-1">100% TypeScript support.</p>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
</section>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { class: customClass = '', title = 'Build something amazing', description = '' }: Props = $props();
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<section class={cn('w-full py-16 px-4 sm:px-6', customClass)}>
|
|
14
|
+
<div class="mx-auto max-w-7xl">
|
|
15
|
+
<div class="text-center mb-12">
|
|
16
|
+
<p class="text-sm font-semibold text-foreground/60 mb-2">Bento Grid</p>
|
|
17
|
+
<h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
|
|
18
|
+
{#if description}
|
|
19
|
+
<p class="text-lg text-muted-foreground max-w-2xl mx-auto">{description}</p>
|
|
20
|
+
{/if}
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="mt-10 grid grid-cols-1 gap-4 sm:grid-cols-3">
|
|
24
|
+
<!-- Row 1: span-2 cell + 1 cell -->
|
|
25
|
+
<div class="rounded-xl border bg-background p-6 sm:col-span-2">
|
|
26
|
+
<div class="flex items-center justify-center h-12 w-12 rounded-lg bg-blue-500/20 mb-4">
|
|
27
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-blue-600">
|
|
28
|
+
<circle cx="12" cy="12" r="1"/>
|
|
29
|
+
<path d="M12 1v6m0 6v6"/>
|
|
30
|
+
<path d="M4.22 4.22l4.24 4.24m2.12 5.08l4.24 4.24"/>
|
|
31
|
+
<path d="M1 12h6m6 0h6"/>
|
|
32
|
+
<path d="M4.22 19.78l4.24-4.24m5.08-2.12l4.24-4.24"/>
|
|
33
|
+
<path d="M12 23v-6m0-6V5"/>
|
|
34
|
+
<path d="M19.78 19.78l-4.24-4.24m-2.12-5.08l-4.24-4.24"/>
|
|
35
|
+
<path d="M23 12h-6m-6 0H5"/>
|
|
36
|
+
<path d="M19.78 4.22l-4.24 4.24m-5.08 2.12l-4.24 4.24"/>
|
|
37
|
+
</svg>
|
|
38
|
+
</div>
|
|
39
|
+
<h3 class="text-lg font-semibold">Real-time Sync</h3>
|
|
40
|
+
<p class="text-muted-foreground mt-2">Synchronize data instantly across all your devices.</p>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<!-- 1 cell -->
|
|
44
|
+
<div class="rounded-xl border bg-background p-6">
|
|
45
|
+
<div class="flex items-center justify-center h-12 w-12 rounded-lg bg-purple-500/20 mb-4">
|
|
46
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-purple-600">
|
|
47
|
+
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z"/>
|
|
48
|
+
<path d="M9 10h6M9 14h6"/>
|
|
49
|
+
</svg>
|
|
50
|
+
</div>
|
|
51
|
+
<h3 class="font-semibold">Cloud Storage</h3>
|
|
52
|
+
<p class="text-sm text-muted-foreground mt-1">Unlimited storage in the cloud.</p>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<!-- Row 2: 1 cell + span-2 cell -->
|
|
56
|
+
<div class="rounded-xl border bg-background p-6">
|
|
57
|
+
<div class="flex items-center justify-center h-12 w-12 rounded-lg bg-green-500/20 mb-4">
|
|
58
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-green-600">
|
|
59
|
+
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z"/>
|
|
60
|
+
<path d="M10 17l-4-4m0 0l4-4m-4 4l8-8"/>
|
|
61
|
+
</svg>
|
|
62
|
+
</div>
|
|
63
|
+
<h3 class="font-semibold">AI Integration</h3>
|
|
64
|
+
<p class="text-sm text-muted-foreground mt-1">Smart features powered by AI.</p>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div class="rounded-xl border bg-background p-6 sm:col-span-2">
|
|
68
|
+
<div class="flex items-center justify-center h-12 w-12 rounded-lg bg-orange-500/20 mb-4">
|
|
69
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-orange-600">
|
|
70
|
+
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z"/>
|
|
71
|
+
<path d="M7 12l5 5 8-10"/>
|
|
72
|
+
</svg>
|
|
73
|
+
</div>
|
|
74
|
+
<h3 class="text-lg font-semibold">Advanced Security</h3>
|
|
75
|
+
<p class="text-muted-foreground mt-2">Enterprise-grade encryption and security features.</p>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</section>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { class: customClass = '', title = 'Build something amazing', description = '' }: Props = $props();
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<section class={cn('w-full py-16 px-4 sm:px-6', customClass)}>
|
|
14
|
+
<div class="mx-auto max-w-7xl">
|
|
15
|
+
<div class="text-center mb-12">
|
|
16
|
+
<p class="text-sm font-semibold text-foreground/60 mb-2">Bento Grid</p>
|
|
17
|
+
<h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
|
|
18
|
+
{#if description}
|
|
19
|
+
<p class="text-lg text-muted-foreground max-w-2xl mx-auto">{description}</p>
|
|
20
|
+
{/if}
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="mt-10 grid grid-cols-2 gap-4 sm:grid-cols-4">
|
|
24
|
+
<!-- Large feature card (2x2) -->
|
|
25
|
+
<div class="rounded-xl border bg-background p-6 sm:col-span-2 sm:row-span-2">
|
|
26
|
+
<div class="aspect-video w-full rounded-lg bg-muted/60 flex items-center justify-center mb-4">
|
|
27
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="text-muted-foreground/40">
|
|
28
|
+
<rect x="3" y="3" width="18" height="18" rx="2"/>
|
|
29
|
+
<circle cx="8.5" cy="8.5" r="1.5"/>
|
|
30
|
+
<polyline points="21 15 16 10 5 21"/>
|
|
31
|
+
</svg>
|
|
32
|
+
</div>
|
|
33
|
+
<h3 class="text-lg font-semibold">Featured Solution</h3>
|
|
34
|
+
<p class="text-muted-foreground mt-2">Our flagship product designed for maximum impact.</p>
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<!-- 4 smaller cells -->
|
|
38
|
+
<div class="rounded-xl border bg-background p-6">
|
|
39
|
+
<div class="flex items-center justify-center h-10 w-10 rounded-lg bg-foreground/10 mb-3">
|
|
40
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground">
|
|
41
|
+
<path d="M12 2v20m-8-8h16"/>
|
|
42
|
+
</svg>
|
|
43
|
+
</div>
|
|
44
|
+
<h3 class="font-semibold text-sm">Feature One</h3>
|
|
45
|
+
<p class="text-xs text-muted-foreground mt-1">Quick description here.</p>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div class="rounded-xl border bg-background p-6">
|
|
49
|
+
<div class="flex items-center justify-center h-10 w-10 rounded-lg bg-foreground/10 mb-3">
|
|
50
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground">
|
|
51
|
+
<path d="M12 2v20m-8-8h16"/>
|
|
52
|
+
</svg>
|
|
53
|
+
</div>
|
|
54
|
+
<h3 class="font-semibold text-sm">Feature Two</h3>
|
|
55
|
+
<p class="text-xs text-muted-foreground mt-1">Quick description here.</p>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<div class="rounded-xl border bg-background p-6">
|
|
59
|
+
<div class="flex items-center justify-center h-10 w-10 rounded-lg bg-foreground/10 mb-3">
|
|
60
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground">
|
|
61
|
+
<path d="M12 2v20m-8-8h16"/>
|
|
62
|
+
</svg>
|
|
63
|
+
</div>
|
|
64
|
+
<h3 class="font-semibold text-sm">Feature Three</h3>
|
|
65
|
+
<p class="text-xs text-muted-foreground mt-1">Quick description here.</p>
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<div class="rounded-xl border bg-background p-6">
|
|
69
|
+
<div class="flex items-center justify-center h-10 w-10 rounded-lg bg-foreground/10 mb-3">
|
|
70
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground">
|
|
71
|
+
<path d="M12 2v20m-8-8h16"/>
|
|
72
|
+
</svg>
|
|
73
|
+
</div>
|
|
74
|
+
<h3 class="font-semibold text-sm">Feature Four</h3>
|
|
75
|
+
<p class="text-xs text-muted-foreground mt-1">Quick description here.</p>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</section>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { class: customClass = '', title = 'Build something amazing', description = '' }: Props = $props();
|
|
11
|
+
|
|
12
|
+
const features = [
|
|
13
|
+
{ name: 'Analytics', icon: '📊' },
|
|
14
|
+
{ name: 'Security', icon: '🔒' },
|
|
15
|
+
{ name: 'Performance', icon: '⚡' },
|
|
16
|
+
{ name: 'Integrations', icon: '🔗' },
|
|
17
|
+
{ name: 'Support', icon: '💬' },
|
|
18
|
+
{ name: 'API', icon: '🔌' }
|
|
19
|
+
];
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<section class={cn('w-full py-16 px-4 sm:px-6', customClass)}>
|
|
23
|
+
<div class="mx-auto max-w-7xl">
|
|
24
|
+
<div class="text-center mb-12">
|
|
25
|
+
<p class="text-sm font-semibold text-foreground/60 mb-2">Bento Grid</p>
|
|
26
|
+
<h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
|
|
27
|
+
{#if description}
|
|
28
|
+
<p class="text-lg text-muted-foreground max-w-2xl mx-auto">{description}</p>
|
|
29
|
+
{/if}
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div class="mt-10 grid grid-cols-1 gap-4 sm:grid-cols-3">
|
|
33
|
+
{#each features as feature}
|
|
34
|
+
<div class="rounded-xl border bg-background p-6">
|
|
35
|
+
<div class="flex items-center justify-center h-12 w-12 rounded-lg bg-foreground/10 mb-4 text-xl">
|
|
36
|
+
{feature.icon}
|
|
37
|
+
</div>
|
|
38
|
+
<h3 class="font-semibold">{feature.name}</h3>
|
|
39
|
+
<p class="text-sm text-muted-foreground mt-2">
|
|
40
|
+
{#if feature.name === 'Analytics'}
|
|
41
|
+
Track metrics and gain insights into user behavior.
|
|
42
|
+
{:else if feature.name === 'Security'}
|
|
43
|
+
Enterprise-grade security with encryption.
|
|
44
|
+
{:else if feature.name === 'Performance'}
|
|
45
|
+
Lightning-fast speed and optimized performance.
|
|
46
|
+
{:else if feature.name === 'Integrations'}
|
|
47
|
+
Connect with your favorite tools seamlessly.
|
|
48
|
+
{:else if feature.name === 'Support'}
|
|
49
|
+
24/7 customer support for all your needs.
|
|
50
|
+
{:else if feature.name === 'API'}
|
|
51
|
+
Complete API documentation and examples.
|
|
52
|
+
{/if}
|
|
53
|
+
</p>
|
|
54
|
+
</div>
|
|
55
|
+
{/each}
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</section>
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { class: customClass = '', title = 'Build something amazing', description = '' }: Props = $props();
|
|
11
|
+
|
|
12
|
+
const checkIcon = `<polyline points="20 6 9 17 4 12"/>`;
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<section class={cn('w-full bg-foreground text-background py-16 px-4 sm:px-6', customClass)}>
|
|
16
|
+
<div class="mx-auto max-w-7xl">
|
|
17
|
+
<div class="text-center mb-12">
|
|
18
|
+
<p class="text-sm font-semibold text-background/60 mb-2">Bento Grid</p>
|
|
19
|
+
<h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
|
|
20
|
+
{#if description}
|
|
21
|
+
<p class="text-lg text-background/80 max-w-2xl mx-auto">{description}</p>
|
|
22
|
+
{/if}
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<div class="mt-10 grid grid-cols-1 gap-4 sm:grid-cols-3">
|
|
26
|
+
<!-- Large Feature (2-col span) -->
|
|
27
|
+
<div class="rounded-xl bg-background/10 border-background/10 border p-6 sm:col-span-2">
|
|
28
|
+
<div class="aspect-video w-full rounded-lg bg-background/20 flex items-center justify-center">
|
|
29
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="text-background/40">
|
|
30
|
+
<rect x="3" y="3" width="18" height="18" rx="2"/>
|
|
31
|
+
<circle cx="8.5" cy="8.5" r="1.5"/>
|
|
32
|
+
<polyline points="21 15 16 10 5 21"/>
|
|
33
|
+
</svg>
|
|
34
|
+
</div>
|
|
35
|
+
<h3 class="text-xl font-semibold mt-4">Ship faster</h3>
|
|
36
|
+
<p class="text-background/80 mt-2">Deploy your ideas in minutes with our intuitive platform.</p>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<!-- Tall Feature (row-span-2) -->
|
|
40
|
+
<div class="rounded-xl bg-background/10 border-background/10 border p-6 sm:row-span-2">
|
|
41
|
+
<div class="flex items-center justify-center h-12 w-12 rounded-lg bg-background/20 mb-4">
|
|
42
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-background">
|
|
43
|
+
{checkIcon}
|
|
44
|
+
</svg>
|
|
45
|
+
</div>
|
|
46
|
+
<h3 class="text-lg font-semibold mb-4">Beautiful UI</h3>
|
|
47
|
+
<ul class="space-y-3">
|
|
48
|
+
<li class="flex items-start gap-3">
|
|
49
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-background flex-shrink-0 mt-0.5">
|
|
50
|
+
{checkIcon}
|
|
51
|
+
</svg>
|
|
52
|
+
<span class="text-sm">Dark mode support</span>
|
|
53
|
+
</li>
|
|
54
|
+
<li class="flex items-start gap-3">
|
|
55
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-background flex-shrink-0 mt-0.5">
|
|
56
|
+
{checkIcon}
|
|
57
|
+
</svg>
|
|
58
|
+
<span class="text-sm">Fully typed</span>
|
|
59
|
+
</li>
|
|
60
|
+
<li class="flex items-start gap-3">
|
|
61
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-background flex-shrink-0 mt-0.5">
|
|
62
|
+
{checkIcon}
|
|
63
|
+
</svg>
|
|
64
|
+
<span class="text-sm">Responsive design</span>
|
|
65
|
+
</li>
|
|
66
|
+
</ul>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<!-- Small Cell 1 -->
|
|
70
|
+
<div class="rounded-xl bg-background/10 border-background/10 border p-6">
|
|
71
|
+
<div class="flex items-center justify-center h-10 w-10 rounded-lg bg-background/20 mb-3">
|
|
72
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-background">
|
|
73
|
+
{checkIcon}
|
|
74
|
+
</svg>
|
|
75
|
+
</div>
|
|
76
|
+
<h3 class="font-semibold">Dark mode</h3>
|
|
77
|
+
<p class="text-sm text-background/80 mt-1">Built-in dark theme support.</p>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<!-- Small Cell 2 -->
|
|
81
|
+
<div class="rounded-xl bg-background/10 border-background/10 border p-6">
|
|
82
|
+
<div class="flex items-center justify-center h-10 w-10 rounded-lg bg-background/20 mb-3">
|
|
83
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-background">
|
|
84
|
+
{checkIcon}
|
|
85
|
+
</svg>
|
|
86
|
+
</div>
|
|
87
|
+
<h3 class="font-semibold">Fully typed</h3>
|
|
88
|
+
<p class="text-sm text-background/80 mt-1">100% TypeScript support.</p>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
</section>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { class: customClass = '', title = 'Build something amazing', description = '' }: Props = $props();
|
|
11
|
+
|
|
12
|
+
const stats = [
|
|
13
|
+
{ value: '99.9%', label: 'Uptime', description: 'Industry-leading reliability' },
|
|
14
|
+
{ value: '10ms', label: 'Latency', description: 'Lightning-fast response times' },
|
|
15
|
+
{ value: '∞', label: 'Scale', description: 'Unlimited scalability' },
|
|
16
|
+
{ value: 'Advanced', label: 'Security', description: 'Enterprise protection' },
|
|
17
|
+
{ value: 'Yes', label: 'API', description: 'Full REST API included' },
|
|
18
|
+
{ value: '24/7', label: 'Support', description: 'Round-the-clock assistance' }
|
|
19
|
+
];
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<section class={cn('w-full py-16 px-4 sm:px-6', customClass)}>
|
|
23
|
+
<div class="mx-auto max-w-7xl">
|
|
24
|
+
<div class="text-center mb-12">
|
|
25
|
+
<p class="text-sm font-semibold text-foreground/60 mb-2">Bento Grid</p>
|
|
26
|
+
<h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
|
|
27
|
+
{#if description}
|
|
28
|
+
<p class="text-lg text-muted-foreground max-w-2xl mx-auto">{description}</p>
|
|
29
|
+
{/if}
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div class="mt-10 grid grid-cols-1 gap-4 sm:grid-cols-3">
|
|
33
|
+
{#each stats as stat}
|
|
34
|
+
<div class="rounded-xl border bg-background p-6">
|
|
35
|
+
<div class="text-4xl font-bold text-foreground mb-2">{stat.value}</div>
|
|
36
|
+
<h3 class="font-semibold text-lg">{stat.label}</h3>
|
|
37
|
+
<p class="text-sm text-muted-foreground mt-2">{stat.description}</p>
|
|
38
|
+
</div>
|
|
39
|
+
{/each}
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</section>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { default as BentoGrid01 } from './BentoGrid01.svelte';
|
|
2
|
+
export { default as BentoGrid02 } from './BentoGrid02.svelte';
|
|
3
|
+
export { default as BentoGrid03 } from './BentoGrid03.svelte';
|
|
4
|
+
export { default as BentoGrid04 } from './BentoGrid04.svelte';
|
|
5
|
+
export { default as BentoGrid05 } from './BentoGrid05.svelte';
|
|
6
|
+
export { default as BentoGrid06 } from './BentoGrid06.svelte';
|
|
7
|
+
|
|
8
|
+
export interface Feature {
|
|
9
|
+
title: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
iconUrl?: string;
|
|
12
|
+
imageUrl?: string;
|
|
13
|
+
tag?: string;
|
|
14
|
+
}
|