@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,92 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Feature {
|
|
5
|
+
icon?: string;
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
class?: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
features?: Feature[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const defaultFeatures: Feature[] = [
|
|
18
|
+
{ title: 'Lightning Fast', description: 'Built for performance with optimized components that load instantly.' },
|
|
19
|
+
{ title: 'Fully Customizable', description: 'Every component can be tailored to match your brand perfectly.' },
|
|
20
|
+
{ title: 'Dark Mode Ready', description: 'Beautiful light and dark modes out of the box.' },
|
|
21
|
+
{ title: 'TypeScript Native', description: 'Full TypeScript support with complete type definitions.' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
let {
|
|
25
|
+
class: className,
|
|
26
|
+
title = 'Everything you need to ship faster',
|
|
27
|
+
description = 'A comprehensive set of tools and components to accelerate your development workflow.',
|
|
28
|
+
features = defaultFeatures,
|
|
29
|
+
}: Props = $props();
|
|
30
|
+
|
|
31
|
+
let activeTab = $state(0);
|
|
32
|
+
const tabFeatures = features.slice(0, 4);
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<section class={cn('w-full bg-background py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
36
|
+
<div class="mx-auto max-w-6xl">
|
|
37
|
+
<div class="text-center mb-12">
|
|
38
|
+
<p class="text-xs uppercase tracking-widest text-muted-foreground">Feature Section</p>
|
|
39
|
+
<h2 class="mt-2 text-3xl sm:text-4xl font-bold tracking-tight">
|
|
40
|
+
{title}
|
|
41
|
+
</h2>
|
|
42
|
+
<p class="mt-3 text-lg text-muted-foreground max-w-2xl mx-auto">
|
|
43
|
+
{description}
|
|
44
|
+
</p>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<div class="mt-10">
|
|
48
|
+
<div class="flex gap-2 flex-wrap border-b">
|
|
49
|
+
{#each tabFeatures as feature, i}
|
|
50
|
+
<button
|
|
51
|
+
onclick={() => (activeTab = i)}
|
|
52
|
+
class={cn(
|
|
53
|
+
'px-4 py-2 text-sm font-medium transition-colors border-b-2 -mb-[2px]',
|
|
54
|
+
activeTab === i
|
|
55
|
+
? 'border-foreground text-foreground'
|
|
56
|
+
: 'border-transparent text-muted-foreground hover:text-foreground'
|
|
57
|
+
)}
|
|
58
|
+
>
|
|
59
|
+
{feature.title}
|
|
60
|
+
</button>
|
|
61
|
+
{/each}
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<div class="mt-8 grid grid-cols-1 gap-12 sm:grid-cols-2 sm:items-center">
|
|
65
|
+
<div>
|
|
66
|
+
<h3 class="text-2xl sm:text-3xl font-bold text-foreground">{tabFeatures[activeTab].title}</h3>
|
|
67
|
+
<p class="mt-4 text-muted-foreground">{tabFeatures[activeTab].description}</p>
|
|
68
|
+
</div>
|
|
69
|
+
|
|
70
|
+
<div>
|
|
71
|
+
<div
|
|
72
|
+
class="aspect-video w-full rounded-xl bg-muted flex items-center justify-center"
|
|
73
|
+
>
|
|
74
|
+
<svg
|
|
75
|
+
width="32"
|
|
76
|
+
height="32"
|
|
77
|
+
viewBox="0 0 24 24"
|
|
78
|
+
fill="none"
|
|
79
|
+
stroke="currentColor"
|
|
80
|
+
stroke-width="1"
|
|
81
|
+
class="text-muted-foreground/40"
|
|
82
|
+
>
|
|
83
|
+
<rect x="3" y="3" width="18" height="18" rx="2" />
|
|
84
|
+
<circle cx="8.5" cy="8.5" r="1.5" />
|
|
85
|
+
<polyline points="21 15 16 10 5 21" />
|
|
86
|
+
</svg>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
</section>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Feature {
|
|
5
|
+
icon?: string;
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
class?: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
features?: Feature[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const defaultFeatures: Feature[] = [
|
|
18
|
+
{ title: 'Lightning Fast', description: 'Built for performance with optimized components that load instantly.' },
|
|
19
|
+
{ title: 'Fully Customizable', description: 'Every component can be tailored to match your brand perfectly.' },
|
|
20
|
+
{ title: 'Dark Mode Ready', description: 'Beautiful light and dark modes out of the box.' },
|
|
21
|
+
{ title: 'TypeScript Native', description: 'Full TypeScript support with complete type definitions.' },
|
|
22
|
+
{ title: 'Accessible', description: 'WCAG 2.1 compliant with keyboard navigation and screen reader support.' },
|
|
23
|
+
{ title: 'Open Source', description: 'MIT licensed and free to use in any project, personal or commercial.' },
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
let {
|
|
27
|
+
class: className,
|
|
28
|
+
title = 'Everything you need to ship faster',
|
|
29
|
+
description = 'A comprehensive set of tools and components to accelerate your development workflow.',
|
|
30
|
+
features = defaultFeatures,
|
|
31
|
+
}: Props = $props();
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<section class={cn('w-full bg-background py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
35
|
+
<div class="mx-auto max-w-6xl">
|
|
36
|
+
<div class="text-center mb-12">
|
|
37
|
+
<p class="text-xs uppercase tracking-widest text-muted-foreground">Feature Section</p>
|
|
38
|
+
<h2 class="mt-2 text-3xl sm:text-4xl font-bold tracking-tight">
|
|
39
|
+
{title}
|
|
40
|
+
</h2>
|
|
41
|
+
<p class="mt-3 text-lg text-muted-foreground max-w-2xl mx-auto">
|
|
42
|
+
{description}
|
|
43
|
+
</p>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div class="mt-10 grid grid-cols-1 gap-8 sm:grid-cols-3">
|
|
47
|
+
{#each features as feature, i}
|
|
48
|
+
<div>
|
|
49
|
+
<div class="text-4xl font-black text-muted-foreground/20 mb-4">
|
|
50
|
+
{String(i + 1).padStart(2, '0')}
|
|
51
|
+
</div>
|
|
52
|
+
<h3 class="text-lg font-semibold text-foreground">{feature.title}</h3>
|
|
53
|
+
<p class="mt-2 text-muted-foreground text-sm">{feature.description}</p>
|
|
54
|
+
</div>
|
|
55
|
+
{/each}
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</section>
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Feature {
|
|
5
|
+
icon?: string;
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
class?: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
features?: Feature[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const defaultFeatures: Feature[] = [
|
|
18
|
+
{ title: 'Lightning Fast', description: 'Built for performance with optimized components that load instantly.' },
|
|
19
|
+
{ title: 'Fully Customizable', description: 'Every component can be tailored to match your brand perfectly.' },
|
|
20
|
+
{ title: 'Dark Mode Ready', description: 'Beautiful light and dark modes out of the box.' },
|
|
21
|
+
{ title: 'TypeScript Native', description: 'Full TypeScript support with complete type definitions.' },
|
|
22
|
+
{ title: 'Accessible', description: 'WCAG 2.1 compliant with keyboard navigation and screen reader support.' },
|
|
23
|
+
{ title: 'Open Source', description: 'MIT licensed and free to use in any project, personal or commercial.' },
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
let {
|
|
27
|
+
class: className,
|
|
28
|
+
title = 'Everything you need to ship faster',
|
|
29
|
+
description = 'A comprehensive set of tools and components to accelerate your development workflow.',
|
|
30
|
+
features = defaultFeatures,
|
|
31
|
+
}: Props = $props();
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<section class={cn('w-full bg-background py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
35
|
+
<div class="mx-auto max-w-6xl">
|
|
36
|
+
<div class="text-center mb-12">
|
|
37
|
+
<p class="text-xs uppercase tracking-widest text-muted-foreground">Feature Section</p>
|
|
38
|
+
<h2 class="mt-2 text-3xl sm:text-4xl font-bold tracking-tight">
|
|
39
|
+
{title}
|
|
40
|
+
</h2>
|
|
41
|
+
<p class="mt-3 text-lg text-muted-foreground max-w-2xl mx-auto">
|
|
42
|
+
{description}
|
|
43
|
+
</p>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div class="mt-10 grid grid-cols-1 gap-12 sm:grid-cols-2">
|
|
47
|
+
<div class="space-y-8">
|
|
48
|
+
{#each features as feature}
|
|
49
|
+
<div class="flex gap-4">
|
|
50
|
+
<div class="flex-shrink-0">
|
|
51
|
+
<div class="flex h-10 w-10 items-center justify-center rounded-lg bg-muted">
|
|
52
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground">
|
|
53
|
+
<circle cx="12" cy="12" r="3" />
|
|
54
|
+
<path d="M19.07 4.93a10 10 0 0 0-14.14 0M4.93 19.07a10 10 0 0 0 14.14 0" />
|
|
55
|
+
</svg>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
<div class="flex-1">
|
|
59
|
+
<h3 class="font-semibold text-foreground">{feature.title}</h3>
|
|
60
|
+
<p class="mt-1 text-sm text-muted-foreground">{feature.description}</p>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
{/each}
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<div class="sm:sticky sm:top-24">
|
|
67
|
+
<div
|
|
68
|
+
class="aspect-video w-full rounded-xl bg-muted flex items-center justify-center"
|
|
69
|
+
>
|
|
70
|
+
<svg
|
|
71
|
+
width="32"
|
|
72
|
+
height="32"
|
|
73
|
+
viewBox="0 0 24 24"
|
|
74
|
+
fill="none"
|
|
75
|
+
stroke="currentColor"
|
|
76
|
+
stroke-width="1"
|
|
77
|
+
class="text-muted-foreground/40"
|
|
78
|
+
>
|
|
79
|
+
<rect x="3" y="3" width="18" height="18" rx="2" />
|
|
80
|
+
<circle cx="8.5" cy="8.5" r="1.5" />
|
|
81
|
+
<polyline points="21 15 16 10 5 21" />
|
|
82
|
+
</svg>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
</section>
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface TableRow {
|
|
5
|
+
feature: string;
|
|
6
|
+
free: boolean;
|
|
7
|
+
pro: boolean;
|
|
8
|
+
enterprise: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface Props {
|
|
12
|
+
class?: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
rows?: TableRow[];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const defaultRows: TableRow[] = [
|
|
19
|
+
{ feature: 'Basic Features', free: true, pro: true, enterprise: true },
|
|
20
|
+
{ feature: 'Advanced Analytics', free: false, pro: true, enterprise: true },
|
|
21
|
+
{ feature: 'Priority Support', free: false, pro: true, enterprise: true },
|
|
22
|
+
{ feature: 'Custom Integrations', free: false, pro: false, enterprise: true },
|
|
23
|
+
{ feature: 'Dedicated Account Manager', free: false, pro: false, enterprise: true },
|
|
24
|
+
{ feature: 'API Access', free: false, pro: true, enterprise: true },
|
|
25
|
+
{ feature: 'SSO & Security', free: false, pro: false, enterprise: true },
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
let {
|
|
29
|
+
class: className,
|
|
30
|
+
title = 'Simple, Transparent Pricing',
|
|
31
|
+
description = 'Choose the perfect plan for your needs. Upgrade or downgrade at any time.',
|
|
32
|
+
rows = defaultRows,
|
|
33
|
+
}: Props = $props();
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<section class={cn('w-full bg-gray-950 py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
37
|
+
<div class="mx-auto max-w-6xl">
|
|
38
|
+
<div class="text-center mb-12">
|
|
39
|
+
<h2 class="text-3xl sm:text-4xl font-bold tracking-tight text-white">
|
|
40
|
+
{title}
|
|
41
|
+
</h2>
|
|
42
|
+
<p class="mt-3 text-lg text-gray-400 max-w-2xl mx-auto">
|
|
43
|
+
{description}
|
|
44
|
+
</p>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<div class="overflow-x-auto">
|
|
48
|
+
<table class="w-full">
|
|
49
|
+
<thead>
|
|
50
|
+
<tr class="border-b border-gray-800">
|
|
51
|
+
<th class="py-4 px-6 text-left text-sm font-semibold text-gray-300">Feature</th>
|
|
52
|
+
<th class="py-4 px-6 text-center text-sm font-semibold text-white">
|
|
53
|
+
<div class="flex flex-col items-center">
|
|
54
|
+
<span>Free</span>
|
|
55
|
+
</div>
|
|
56
|
+
</th>
|
|
57
|
+
<th class="py-4 px-6 text-center text-sm font-semibold text-white relative">
|
|
58
|
+
<div class="flex flex-col items-center">
|
|
59
|
+
<span class="inline-block bg-blue-600 text-white text-xs font-bold px-3 py-1 rounded-full mb-2"
|
|
60
|
+
>Popular</span
|
|
61
|
+
>
|
|
62
|
+
<span>Pro</span>
|
|
63
|
+
</div>
|
|
64
|
+
</th>
|
|
65
|
+
<th class="py-4 px-6 text-center text-sm font-semibold text-white">
|
|
66
|
+
<div class="flex flex-col items-center">
|
|
67
|
+
<span>Enterprise</span>
|
|
68
|
+
</div>
|
|
69
|
+
</th>
|
|
70
|
+
</tr>
|
|
71
|
+
</thead>
|
|
72
|
+
<tbody>
|
|
73
|
+
{#each rows as row}
|
|
74
|
+
<tr class="border-b border-gray-800 hover:bg-gray-900/50 transition">
|
|
75
|
+
<td class="py-4 px-6 text-sm text-gray-300">{row.feature}</td>
|
|
76
|
+
<td class="py-4 px-6 text-center">
|
|
77
|
+
{#if row.free}
|
|
78
|
+
<svg class="w-5 h-5 mx-auto text-green-500" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
79
|
+
<polyline points="20 6 9 17 4 12"></polyline>
|
|
80
|
+
</svg>
|
|
81
|
+
{:else}
|
|
82
|
+
<svg class="w-5 h-5 mx-auto text-gray-600" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
83
|
+
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
84
|
+
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
85
|
+
</svg>
|
|
86
|
+
{/if}
|
|
87
|
+
</td>
|
|
88
|
+
<td class="py-4 px-6 text-center">
|
|
89
|
+
{#if row.pro}
|
|
90
|
+
<svg class="w-5 h-5 mx-auto text-green-500" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
91
|
+
<polyline points="20 6 9 17 4 12"></polyline>
|
|
92
|
+
</svg>
|
|
93
|
+
{:else}
|
|
94
|
+
<svg class="w-5 h-5 mx-auto text-gray-600" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
95
|
+
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
96
|
+
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
97
|
+
</svg>
|
|
98
|
+
{/if}
|
|
99
|
+
</td>
|
|
100
|
+
<td class="py-4 px-6 text-center">
|
|
101
|
+
{#if row.enterprise}
|
|
102
|
+
<svg class="w-5 h-5 mx-auto text-green-500" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
103
|
+
<polyline points="20 6 9 17 4 12"></polyline>
|
|
104
|
+
</svg>
|
|
105
|
+
{:else}
|
|
106
|
+
<svg class="w-5 h-5 mx-auto text-gray-600" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
107
|
+
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
108
|
+
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
109
|
+
</svg>
|
|
110
|
+
{/if}
|
|
111
|
+
</td>
|
|
112
|
+
</tr>
|
|
113
|
+
{/each}
|
|
114
|
+
</tbody>
|
|
115
|
+
</table>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
</section>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Feature {
|
|
5
|
+
icon: string;
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
class?: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
subtitle?: string;
|
|
14
|
+
features?: Feature[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const defaultFeatures: Feature[] = [
|
|
18
|
+
{ icon: 'zap', title: 'Lightning Speed', description: 'Instant load times and responsive interactions.' },
|
|
19
|
+
{ icon: 'shield', title: 'Secure by Default', description: 'Enterprise-grade security built in.' },
|
|
20
|
+
{ icon: 'palette', title: 'Beautiful Design', description: 'Modern, polished interface included.' },
|
|
21
|
+
{ icon: 'code', title: 'Developer Friendly', description: 'Clean API and excellent documentation.' },
|
|
22
|
+
{ icon: 'users', title: 'Team Collaboration', description: 'Built for teams of any size.' },
|
|
23
|
+
{ icon: 'trending-up', title: 'Scale Easily', description: 'Grows with your business needs.' },
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
let {
|
|
27
|
+
class: className,
|
|
28
|
+
title = 'Powerful Features',
|
|
29
|
+
subtitle = 'Everything you need to succeed',
|
|
30
|
+
features = defaultFeatures,
|
|
31
|
+
}: Props = $props();
|
|
32
|
+
|
|
33
|
+
const iconPaths: Record<string, { viewBox: string; path: string }> = {
|
|
34
|
+
zap: { viewBox: '0 0 24 24', path: 'm13 2-2 6.5h5l-7 13.5 2-6.5H6l7-13.5z' },
|
|
35
|
+
shield: { viewBox: '0 0 24 24', path: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z' },
|
|
36
|
+
palette: { viewBox: '0 0 24 24', path: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z' },
|
|
37
|
+
code: { viewBox: '0 0 24 24', path: 'M16 18 22 12 16 6M8 6 2 12 8 18' },
|
|
38
|
+
users: { viewBox: '0 0 24 24', path: 'M17 21h-5v-2h5v2zM16 5.76A2.5 2.5 0 0 0 13.5 3 2.5 2.5 0 0 0 11 5.5 2.5 2.5 0 0 0 13.5 8 2.5 2.5 0 0 0 16 5.76zM8 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z' },
|
|
39
|
+
'trending-up': { viewBox: '0 0 24 24', path: 'M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18 9 12.41l4 4 6.3-6.29L22 12v-6z' },
|
|
40
|
+
};
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
<section class={cn('w-full bg-white py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
44
|
+
<div class="mx-auto max-w-6xl">
|
|
45
|
+
<div class="text-center mb-12">
|
|
46
|
+
<h2 class="text-3xl sm:text-4xl font-bold tracking-tight text-gray-900">
|
|
47
|
+
{title}
|
|
48
|
+
</h2>
|
|
49
|
+
<p class="mt-3 text-lg text-gray-600 max-w-2xl mx-auto">
|
|
50
|
+
{subtitle}
|
|
51
|
+
</p>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div class="grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3">
|
|
55
|
+
{#each features as feature}
|
|
56
|
+
<div
|
|
57
|
+
class="p-6 rounded-lg border border-gray-200 hover:shadow-lg hover:-translate-y-1 transition-all duration-300 bg-gray-50"
|
|
58
|
+
>
|
|
59
|
+
<div class="flex h-12 w-12 items-center justify-center rounded-lg bg-blue-100 mb-4">
|
|
60
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-blue-600">
|
|
61
|
+
{#if iconPaths[feature.icon]}
|
|
62
|
+
<g>
|
|
63
|
+
{@html `<path d="${iconPaths[feature.icon].path}" />`}
|
|
64
|
+
</g>
|
|
65
|
+
{:else}
|
|
66
|
+
<circle cx="12" cy="12" r="3" />
|
|
67
|
+
{/if}
|
|
68
|
+
</svg>
|
|
69
|
+
</div>
|
|
70
|
+
<h3 class="text-lg font-semibold text-gray-900">{feature.title}</h3>
|
|
71
|
+
<p class="mt-2 text-gray-600 text-sm">{feature.description}</p>
|
|
72
|
+
</div>
|
|
73
|
+
{/each}
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</section>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Feature {
|
|
5
|
+
number: number;
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
class?: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
subtitle?: string;
|
|
14
|
+
features?: Feature[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const defaultFeatures: Feature[] = [
|
|
18
|
+
{
|
|
19
|
+
number: 1,
|
|
20
|
+
title: 'Lightning Fast Setup',
|
|
21
|
+
description: 'Get started in minutes with our intuitive onboarding process.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
number: 2,
|
|
25
|
+
title: 'Powerful Analytics',
|
|
26
|
+
description: 'Track performance metrics and gain actionable insights.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
number: 3,
|
|
30
|
+
title: 'Seamless Integration',
|
|
31
|
+
description: 'Connect with your favorite tools and platforms.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
number: 4,
|
|
35
|
+
title: 'Expert Support',
|
|
36
|
+
description: 'Get help from our experienced support team anytime.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
number: 5,
|
|
40
|
+
title: 'Enterprise Security',
|
|
41
|
+
description: 'Bank-level encryption and compliance standards.',
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
let {
|
|
46
|
+
class: className,
|
|
47
|
+
title = 'How It Works',
|
|
48
|
+
subtitle = 'A simple workflow designed for success',
|
|
49
|
+
features = defaultFeatures,
|
|
50
|
+
}: Props = $props();
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<section class={cn('w-full bg-white py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
54
|
+
<div class="mx-auto max-w-6xl">
|
|
55
|
+
<div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
|
|
56
|
+
<!-- Left Column: Screenshot Placeholder -->
|
|
57
|
+
<div class="flex items-center justify-center">
|
|
58
|
+
<div class="w-full aspect-video bg-gray-200 rounded-lg shadow-lg"></div>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<!-- Right Column: Feature List -->
|
|
62
|
+
<div>
|
|
63
|
+
<h2 class="text-3xl sm:text-4xl font-bold tracking-tight text-gray-900 mb-4">
|
|
64
|
+
{title}
|
|
65
|
+
</h2>
|
|
66
|
+
<p class="text-lg text-gray-600 mb-8">
|
|
67
|
+
{subtitle}
|
|
68
|
+
</p>
|
|
69
|
+
|
|
70
|
+
<div class="space-y-6">
|
|
71
|
+
{#each features as feature}
|
|
72
|
+
<div class="flex gap-4">
|
|
73
|
+
<div class="flex-shrink-0">
|
|
74
|
+
<div class="flex h-10 w-10 items-center justify-center rounded-full bg-blue-100 text-blue-600 font-bold">
|
|
75
|
+
{feature.number}
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
<div>
|
|
79
|
+
<h3 class="text-lg font-semibold text-gray-900">{feature.title}</h3>
|
|
80
|
+
<p class="mt-1 text-gray-600 text-sm">{feature.description}</p>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
{/each}
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</section>
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Feature {
|
|
5
|
+
icon: string;
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
class?: string;
|
|
12
|
+
eyebrow?: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
subtitle?: string;
|
|
15
|
+
features?: Feature[];
|
|
16
|
+
codeSnippet?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const defaultFeatures: Feature[] = [
|
|
20
|
+
{
|
|
21
|
+
icon: 'lightning',
|
|
22
|
+
title: 'Blazing Fast',
|
|
23
|
+
description: 'Optimized for maximum performance and minimal latency.',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
icon: 'lock',
|
|
27
|
+
title: 'Secure Code',
|
|
28
|
+
description: 'Built with security best practices and standards.',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
icon: 'code',
|
|
32
|
+
title: 'Clean Syntax',
|
|
33
|
+
description: 'Easy to read and maintain codebase.',
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
const defaultCode = `const response = await api.fetch('/data');
|
|
38
|
+
const data = response.json();
|
|
39
|
+
console.log(data);`;
|
|
40
|
+
|
|
41
|
+
let {
|
|
42
|
+
class: className,
|
|
43
|
+
eyebrow = 'Developer Experience',
|
|
44
|
+
title = 'Built for Developers',
|
|
45
|
+
subtitle = 'Modern API with clean, intuitive design',
|
|
46
|
+
features = defaultFeatures,
|
|
47
|
+
codeSnippet = defaultCode,
|
|
48
|
+
}: Props = $props();
|
|
49
|
+
|
|
50
|
+
const iconPaths: Record<string, string> = {
|
|
51
|
+
lightning: 'm13 2-2 6.5h5l-7 13.5 2-6.5H6l7-13.5z',
|
|
52
|
+
lock: 'M3 11h18v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V11zM7 11V7a5 5 0 0 1 10 0v4',
|
|
53
|
+
code: 'M16 18 22 12 16 6M8 6 2 12 8 18',
|
|
54
|
+
};
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<section class={cn('w-full bg-gray-950 py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
58
|
+
<div class="mx-auto max-w-6xl">
|
|
59
|
+
<div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
|
|
60
|
+
<!-- Left Column: Features -->
|
|
61
|
+
<div>
|
|
62
|
+
<p class="text-sm uppercase tracking-widest text-blue-400 font-semibold">{eyebrow}</p>
|
|
63
|
+
<h2 class="mt-2 text-3xl sm:text-4xl font-bold tracking-tight text-white">
|
|
64
|
+
{title}
|
|
65
|
+
</h2>
|
|
66
|
+
<p class="mt-3 text-lg text-gray-400 mb-8">
|
|
67
|
+
{subtitle}
|
|
68
|
+
</p>
|
|
69
|
+
|
|
70
|
+
<div class="space-y-6">
|
|
71
|
+
{#each features as feature}
|
|
72
|
+
<div class="flex gap-4">
|
|
73
|
+
<div class="flex-shrink-0">
|
|
74
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-blue-400">
|
|
75
|
+
{#if iconPaths[feature.icon]}
|
|
76
|
+
<path d={iconPaths[feature.icon]} />
|
|
77
|
+
{:else}
|
|
78
|
+
<circle cx="12" cy="12" r="3" />
|
|
79
|
+
{/if}
|
|
80
|
+
</svg>
|
|
81
|
+
</div>
|
|
82
|
+
<div>
|
|
83
|
+
<h3 class="text-lg font-semibold text-white">{feature.title}</h3>
|
|
84
|
+
<p class="mt-1 text-gray-400 text-sm">{feature.description}</p>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
{/each}
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<!-- Right Column: Code Block -->
|
|
92
|
+
<div>
|
|
93
|
+
<div class="bg-gray-900 border border-gray-800 rounded-lg p-6 font-mono text-sm">
|
|
94
|
+
<div class="flex items-center justify-between mb-4 pb-4 border-b border-gray-800">
|
|
95
|
+
<span class="text-gray-400 text-xs uppercase tracking-widest">JavaScript</span>
|
|
96
|
+
<div class="flex gap-2">
|
|
97
|
+
<div class="w-3 h-3 rounded-full bg-gray-700"></div>
|
|
98
|
+
<div class="w-3 h-3 rounded-full bg-gray-700"></div>
|
|
99
|
+
<div class="w-3 h-3 rounded-full bg-gray-700"></div>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
<pre class="text-gray-300 whitespace-pre-wrap">{@html codeSnippet.split('\n').map((line) => {
|
|
103
|
+
let htmlLine = line
|
|
104
|
+
.replace(/\bconst\b/g, '<span class="text-purple-400">const</span>')
|
|
105
|
+
.replace(/\bawait\b/g, '<span class="text-purple-400">await</span>')
|
|
106
|
+
.replace(/\bapi\b/g, '<span class="text-blue-400">api</span>')
|
|
107
|
+
.replace(/\bresponse\b/g, '<span class="text-blue-400">response</span>')
|
|
108
|
+
.replace(/\bjson\b/g, '<span class="text-yellow-400">json</span>')
|
|
109
|
+
.replace(/\bconsole\b/g, '<span class="text-blue-400">console</span>')
|
|
110
|
+
.replace(/\blog\b/g, '<span class="text-yellow-400">log</span>')
|
|
111
|
+
.replace(/\bdata\b/g, '<span class="text-blue-400">data</span>')
|
|
112
|
+
.replace(/'/g, '<span class="text-green-400">\'$&\'</span>')
|
|
113
|
+
return htmlLine
|
|
114
|
+
}).join('\n')}</pre>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
</section>
|