@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,100 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface BlogPost {
|
|
5
|
+
title: string;
|
|
6
|
+
excerpt?: string;
|
|
7
|
+
date?: string;
|
|
8
|
+
category?: string;
|
|
9
|
+
imageUrl?: string;
|
|
10
|
+
author?: { name: string; role?: string; avatarUrl?: string };
|
|
11
|
+
href?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface Props {
|
|
15
|
+
class?: string;
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
posts?: BlogPost[];
|
|
19
|
+
eyebrow?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const defaultPosts: BlogPost[] = [
|
|
23
|
+
{
|
|
24
|
+
title: 'Getting Started with shadcn/ui: A Complete Guide',
|
|
25
|
+
date: 'Mar 15, 2024',
|
|
26
|
+
category: 'Tutorial',
|
|
27
|
+
excerpt:
|
|
28
|
+
"Learn how to set up and maximize your development workflow with shadcn/ui's powerful component library."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
title: 'Building Dark Mode with Next.js and Tailwind CSS',
|
|
32
|
+
date: 'Mar 12, 2024',
|
|
33
|
+
category: 'Development',
|
|
34
|
+
excerpt:
|
|
35
|
+
'Implement a seamless dark mode toggle in your Next.js application using Tailwind CSS and shadcn/ui.'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
title: 'Mastering React Server Components Effectively',
|
|
39
|
+
date: 'Mar 8, 2024',
|
|
40
|
+
category: 'Advanced',
|
|
41
|
+
excerpt:
|
|
42
|
+
"Deep dive into React Server Components and learn how they can improve your application's performance."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
title: 'The Future of Web Development in 2024',
|
|
46
|
+
date: 'Mar 5, 2024',
|
|
47
|
+
category: 'Insights',
|
|
48
|
+
excerpt: 'Explore the latest trends and technologies shaping the future of web development this year.'
|
|
49
|
+
}
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
let { class: className, title = "Learn what's new", description = 'Add a concise value statement...', posts = defaultPosts, eyebrow = 'Blog Section' }: Props = $props();
|
|
53
|
+
</script>
|
|
54
|
+
|
|
55
|
+
<section class={cn('w-full bg-background py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
56
|
+
<div class="mx-auto max-w-6xl text-center">
|
|
57
|
+
<p class="text-xs uppercase tracking-widest text-muted-foreground">{eyebrow}</p>
|
|
58
|
+
<h2 class="mt-2 text-3xl sm:text-4xl font-bold tracking-tight">{title}</h2>
|
|
59
|
+
<p class="mt-3 text-muted-foreground">{description}</p>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<div class="mt-10 grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4">
|
|
63
|
+
{#each posts as post (post.title)}
|
|
64
|
+
<article class="flex flex-col">
|
|
65
|
+
<div class="aspect-video w-full rounded-lg bg-muted flex items-center justify-center">
|
|
66
|
+
<svg
|
|
67
|
+
width="24"
|
|
68
|
+
height="24"
|
|
69
|
+
viewBox="0 0 24 24"
|
|
70
|
+
fill="none"
|
|
71
|
+
stroke="currentColor"
|
|
72
|
+
stroke-width="1.5"
|
|
73
|
+
class="text-muted-foreground"
|
|
74
|
+
>
|
|
75
|
+
<rect x="3" y="3" width="18" height="18" rx="2" />
|
|
76
|
+
<circle cx="8.5" cy="8.5" r="1.5" />
|
|
77
|
+
<polyline points="21 15 16 10 5 21" />
|
|
78
|
+
</svg>
|
|
79
|
+
</div>
|
|
80
|
+
<div class="mt-3">
|
|
81
|
+
<div class="flex items-center text-xs text-muted-foreground">
|
|
82
|
+
{#if post.date}
|
|
83
|
+
<span>{post.date}</span>
|
|
84
|
+
{/if}
|
|
85
|
+
{#if post.date && post.category}
|
|
86
|
+
<span class="mx-1">·</span>
|
|
87
|
+
{/if}
|
|
88
|
+
{#if post.category}
|
|
89
|
+
<span>{post.category}</span>
|
|
90
|
+
{/if}
|
|
91
|
+
</div>
|
|
92
|
+
<h3 class="mt-2 font-semibold leading-snug">{post.title}</h3>
|
|
93
|
+
{#if post.excerpt}
|
|
94
|
+
<p class="mt-1 text-sm text-muted-foreground">{post.excerpt}</p>
|
|
95
|
+
{/if}
|
|
96
|
+
</div>
|
|
97
|
+
</article>
|
|
98
|
+
{/each}
|
|
99
|
+
</div>
|
|
100
|
+
</section>
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface BlogPost {
|
|
5
|
+
title: string;
|
|
6
|
+
excerpt?: string;
|
|
7
|
+
date?: string;
|
|
8
|
+
category?: string;
|
|
9
|
+
imageUrl?: string;
|
|
10
|
+
author?: { name: string; role?: string; avatarUrl?: string };
|
|
11
|
+
href?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface Props {
|
|
15
|
+
class?: string;
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
posts?: BlogPost[];
|
|
19
|
+
eyebrow?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const defaultPosts: BlogPost[] = [
|
|
23
|
+
{
|
|
24
|
+
title: 'Getting Started with shadcn/ui: A Complete Guide',
|
|
25
|
+
date: 'Mar 15, 2024',
|
|
26
|
+
category: 'Tutorial',
|
|
27
|
+
excerpt:
|
|
28
|
+
"Learn how to set up and maximize your development workflow with shadcn/ui's powerful component library.",
|
|
29
|
+
author: { name: 'John Doe', role: 'Developer' }
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
title: 'Building Dark Mode with Next.js and Tailwind CSS',
|
|
33
|
+
date: 'Mar 12, 2024',
|
|
34
|
+
category: 'Development',
|
|
35
|
+
excerpt:
|
|
36
|
+
'Implement a seamless dark mode toggle in your Next.js application using Tailwind CSS and shadcn/ui.',
|
|
37
|
+
author: { name: 'Jane Smith', role: 'Designer' }
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
title: 'Mastering React Server Components Effectively',
|
|
41
|
+
date: 'Mar 8, 2024',
|
|
42
|
+
category: 'Advanced',
|
|
43
|
+
excerpt:
|
|
44
|
+
"Deep dive into React Server Components and learn how they can improve your application's performance.",
|
|
45
|
+
author: { name: 'Alice Johnson', role: 'Developer' }
|
|
46
|
+
}
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
let { class: className, title = 'Latest Articles', description = 'Explore our recent posts and insights', posts = defaultPosts, eyebrow = 'Blog Section' }: Props = $props();
|
|
50
|
+
</script>
|
|
51
|
+
|
|
52
|
+
<section class={cn('w-full bg-background py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
53
|
+
<div class="mx-auto max-w-6xl">
|
|
54
|
+
<div>
|
|
55
|
+
<p class="text-xs uppercase tracking-widest text-muted-foreground">{eyebrow}</p>
|
|
56
|
+
<h2 class="mt-2 text-3xl sm:text-4xl font-bold tracking-tight">{title}</h2>
|
|
57
|
+
<p class="mt-3 text-muted-foreground">{description}</p>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div class="mt-8 grid grid-cols-1 gap-6 sm:grid-cols-3">
|
|
61
|
+
{#each posts as post (post.title)}
|
|
62
|
+
<article class="flex flex-col">
|
|
63
|
+
<div class="flex items-center text-xs text-muted-foreground">
|
|
64
|
+
{#if post.date}
|
|
65
|
+
<span>{post.date}</span>
|
|
66
|
+
{/if}
|
|
67
|
+
{#if post.date && post.category}
|
|
68
|
+
<span class="mx-1">·</span>
|
|
69
|
+
{/if}
|
|
70
|
+
{#if post.category}
|
|
71
|
+
<span>{post.category}</span>
|
|
72
|
+
{/if}
|
|
73
|
+
</div>
|
|
74
|
+
<h3 class="mt-2 text-lg font-semibold leading-snug">{post.title}</h3>
|
|
75
|
+
{#if post.excerpt}
|
|
76
|
+
<p class="mt-2 text-sm text-muted-foreground flex-1">{post.excerpt}</p>
|
|
77
|
+
{/if}
|
|
78
|
+
{#if post.author}
|
|
79
|
+
<div class="mt-4 flex items-center gap-3">
|
|
80
|
+
<div class="h-8 w-8 rounded-full bg-muted flex-shrink-0" />
|
|
81
|
+
<div class="min-w-0">
|
|
82
|
+
<p class="text-sm font-medium truncate">{post.author.name}</p>
|
|
83
|
+
{#if post.author.role}
|
|
84
|
+
<p class="text-xs text-muted-foreground truncate">{post.author.role}</p>
|
|
85
|
+
{/if}
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
{/if}
|
|
89
|
+
</article>
|
|
90
|
+
{/each}
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
</section>
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface BlogPost {
|
|
5
|
+
title: string;
|
|
6
|
+
excerpt?: string;
|
|
7
|
+
date?: string;
|
|
8
|
+
category?: string;
|
|
9
|
+
imageUrl?: string;
|
|
10
|
+
author?: { name: string; role?: string; avatarUrl?: string };
|
|
11
|
+
href?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface Props {
|
|
15
|
+
class?: string;
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
posts?: BlogPost[];
|
|
19
|
+
eyebrow?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const defaultPosts: BlogPost[] = [
|
|
23
|
+
{
|
|
24
|
+
title: 'Getting Started with shadcn/ui: A Complete Guide',
|
|
25
|
+
date: 'Mar 15, 2024',
|
|
26
|
+
category: 'Tutorial',
|
|
27
|
+
excerpt:
|
|
28
|
+
"Learn how to set up and maximize your development workflow with shadcn/ui's powerful component library."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
title: 'Building Dark Mode with Next.js and Tailwind CSS',
|
|
32
|
+
date: 'Mar 12, 2024',
|
|
33
|
+
category: 'Development',
|
|
34
|
+
excerpt:
|
|
35
|
+
'Implement a seamless dark mode toggle in your Next.js application using Tailwind CSS and shadcn/ui.'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
title: 'Mastering React Server Components Effectively',
|
|
39
|
+
date: 'Mar 8, 2024',
|
|
40
|
+
category: 'Advanced',
|
|
41
|
+
excerpt:
|
|
42
|
+
"Deep dive into React Server Components and learn how they can improve your application's performance."
|
|
43
|
+
}
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
let { class: className, title = 'Featured Articles', description = 'Discover in-depth guides and tutorials', posts = defaultPosts, eyebrow = 'Blog Section' }: Props = $props();
|
|
47
|
+
</script>
|
|
48
|
+
|
|
49
|
+
<section class={cn('w-full bg-background py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
50
|
+
<div class="mx-auto max-w-6xl text-center">
|
|
51
|
+
<p class="text-xs uppercase tracking-widest text-muted-foreground">{eyebrow}</p>
|
|
52
|
+
<h2 class="mt-2 text-3xl sm:text-4xl font-bold tracking-tight">{title}</h2>
|
|
53
|
+
<p class="mt-3 text-muted-foreground">{description}</p>
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<div class="mt-8 grid grid-cols-1 gap-6 sm:grid-cols-3">
|
|
57
|
+
{#each posts as post (post.title)}
|
|
58
|
+
<article class="flex flex-col">
|
|
59
|
+
<div class="flex items-center text-xs text-muted-foreground">
|
|
60
|
+
{#if post.date}
|
|
61
|
+
<span>{post.date}</span>
|
|
62
|
+
{/if}
|
|
63
|
+
{#if post.date && post.category}
|
|
64
|
+
<span class="mx-1">·</span>
|
|
65
|
+
{/if}
|
|
66
|
+
{#if post.category}
|
|
67
|
+
<span>{post.category}</span>
|
|
68
|
+
{/if}
|
|
69
|
+
</div>
|
|
70
|
+
<h3 class="mt-2 font-semibold leading-snug">{post.title}</h3>
|
|
71
|
+
{#if post.excerpt}
|
|
72
|
+
<p class="mt-1 text-sm text-muted-foreground">{post.excerpt}</p>
|
|
73
|
+
{/if}
|
|
74
|
+
<div class="mt-4 aspect-video w-full rounded-lg bg-muted flex items-center justify-center">
|
|
75
|
+
<svg
|
|
76
|
+
width="24"
|
|
77
|
+
height="24"
|
|
78
|
+
viewBox="0 0 24 24"
|
|
79
|
+
fill="none"
|
|
80
|
+
stroke="currentColor"
|
|
81
|
+
stroke-width="1.5"
|
|
82
|
+
class="text-muted-foreground"
|
|
83
|
+
>
|
|
84
|
+
<rect x="3" y="3" width="18" height="18" rx="2" />
|
|
85
|
+
<circle cx="8.5" cy="8.5" r="1.5" />
|
|
86
|
+
<polyline points="21 15 16 10 5 21" />
|
|
87
|
+
</svg>
|
|
88
|
+
</div>
|
|
89
|
+
</article>
|
|
90
|
+
{/each}
|
|
91
|
+
</div>
|
|
92
|
+
</section>
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface BlogPost {
|
|
5
|
+
title: string;
|
|
6
|
+
excerpt?: string;
|
|
7
|
+
date?: string;
|
|
8
|
+
category?: string;
|
|
9
|
+
imageUrl?: string;
|
|
10
|
+
author?: { name: string; role?: string; avatarUrl?: string };
|
|
11
|
+
href?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface Props {
|
|
15
|
+
class?: string;
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
posts?: BlogPost[];
|
|
19
|
+
eyebrow?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const defaultPosts: BlogPost[] = [
|
|
23
|
+
{
|
|
24
|
+
title: 'Getting Started with shadcn/ui: A Complete Guide',
|
|
25
|
+
date: 'Mar 15, 2024',
|
|
26
|
+
category: 'Tutorial'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
title: 'Building Dark Mode with Next.js and Tailwind CSS',
|
|
30
|
+
date: 'Mar 12, 2024',
|
|
31
|
+
category: 'Development'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
title: 'Mastering React Server Components Effectively',
|
|
35
|
+
date: 'Mar 8, 2024',
|
|
36
|
+
category: 'Advanced'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
title: 'The Future of Web Development in 2024',
|
|
40
|
+
date: 'Mar 5, 2024',
|
|
41
|
+
category: 'Insights'
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
let { class: className, title = 'Latest Blog Posts', description = 'Read our most recent articles', posts = defaultPosts.slice(0, 4), eyebrow = 'Blog Section' }: Props = $props();
|
|
46
|
+
</script>
|
|
47
|
+
|
|
48
|
+
<section class={cn('w-full bg-background py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
49
|
+
<div class="mx-auto max-w-6xl">
|
|
50
|
+
<div class="flex items-end justify-between">
|
|
51
|
+
<div>
|
|
52
|
+
<p class="text-xs uppercase tracking-widest text-muted-foreground">{eyebrow}</p>
|
|
53
|
+
<h2 class="mt-2 text-3xl sm:text-4xl font-bold tracking-tight">{title}</h2>
|
|
54
|
+
<p class="mt-3 text-muted-foreground">{description}</p>
|
|
55
|
+
</div>
|
|
56
|
+
<a href="#" class="hidden sm:inline-block text-sm text-muted-foreground hover:text-foreground underline"
|
|
57
|
+
>View all articles</a
|
|
58
|
+
>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div class="mt-8 grid grid-cols-1 gap-6 sm:grid-cols-2">
|
|
62
|
+
{#each posts as post (post.title)}
|
|
63
|
+
<article class="flex flex-col overflow-hidden rounded-lg border">
|
|
64
|
+
<div class="aspect-video w-full bg-muted flex items-center justify-center">
|
|
65
|
+
<svg
|
|
66
|
+
width="24"
|
|
67
|
+
height="24"
|
|
68
|
+
viewBox="0 0 24 24"
|
|
69
|
+
fill="none"
|
|
70
|
+
stroke="currentColor"
|
|
71
|
+
stroke-width="1.5"
|
|
72
|
+
class="text-muted-foreground"
|
|
73
|
+
>
|
|
74
|
+
<rect x="3" y="3" width="18" height="18" rx="2" />
|
|
75
|
+
<circle cx="8.5" cy="8.5" r="1.5" />
|
|
76
|
+
<polyline points="21 15 16 10 5 21" />
|
|
77
|
+
</svg>
|
|
78
|
+
</div>
|
|
79
|
+
<div class="p-4">
|
|
80
|
+
<h3 class="font-semibold leading-snug">{post.title}</h3>
|
|
81
|
+
<div class="mt-1 flex items-center text-xs text-muted-foreground">
|
|
82
|
+
{#if post.date}
|
|
83
|
+
<span>{post.date}</span>
|
|
84
|
+
{/if}
|
|
85
|
+
{#if post.date && post.category}
|
|
86
|
+
<span class="mx-1">·</span>
|
|
87
|
+
{/if}
|
|
88
|
+
{#if post.category}
|
|
89
|
+
<span>{post.category}</span>
|
|
90
|
+
{/if}
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
</article>
|
|
94
|
+
{/each}
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</section>
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface BlogPost {
|
|
5
|
+
title: string;
|
|
6
|
+
excerpt?: string;
|
|
7
|
+
date?: string;
|
|
8
|
+
category?: string;
|
|
9
|
+
imageUrl?: string;
|
|
10
|
+
author?: { name: string; role?: string; avatarUrl?: string };
|
|
11
|
+
href?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface Props {
|
|
15
|
+
class?: string;
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
posts?: BlogPost[];
|
|
19
|
+
eyebrow?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const defaultPosts: BlogPost[] = [
|
|
23
|
+
{
|
|
24
|
+
title: 'Getting Started with shadcn/ui: A Complete Guide',
|
|
25
|
+
date: 'Mar 15, 2024',
|
|
26
|
+
category: 'Tutorial',
|
|
27
|
+
excerpt:
|
|
28
|
+
"Learn how to set up and maximize your development workflow with shadcn/ui's powerful component library.",
|
|
29
|
+
author: { name: 'John Doe', role: 'Developer' }
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
title: 'Building Dark Mode with Next.js and Tailwind CSS',
|
|
33
|
+
date: 'Mar 12, 2024',
|
|
34
|
+
category: 'Development',
|
|
35
|
+
excerpt:
|
|
36
|
+
'Implement a seamless dark mode toggle in your Next.js application using Tailwind CSS and shadcn/ui.',
|
|
37
|
+
author: { name: 'Jane Smith', role: 'Designer' }
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
title: 'Mastering React Server Components Effectively',
|
|
41
|
+
date: 'Mar 8, 2024',
|
|
42
|
+
category: 'Advanced',
|
|
43
|
+
excerpt:
|
|
44
|
+
"Deep dive into React Server Components and learn how they can improve your application's performance.",
|
|
45
|
+
author: { name: 'Alice Johnson', role: 'Developer' }
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
title: 'The Future of Web Development in 2024',
|
|
49
|
+
date: 'Mar 5, 2024',
|
|
50
|
+
category: 'Insights',
|
|
51
|
+
excerpt: 'Explore the latest trends and technologies shaping the future of web development this year.',
|
|
52
|
+
author: { name: 'John Doe', role: 'Developer' }
|
|
53
|
+
}
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
let { class: className, title = 'From the Blog', description = 'Stay updated with our latest insights', posts = defaultPosts, eyebrow = 'Blog Section' }: Props = $props();
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<section class={cn('w-full bg-background py-16 px-4 sm:px-6 lg:px-8', className)}>
|
|
60
|
+
<div class="mx-auto max-w-6xl">
|
|
61
|
+
<div>
|
|
62
|
+
<p class="text-xs uppercase tracking-widest text-muted-foreground">{eyebrow}</p>
|
|
63
|
+
<h2 class="mt-2 text-3xl sm:text-4xl font-bold tracking-tight">{title}</h2>
|
|
64
|
+
<p class="mt-3 text-muted-foreground">{description}</p>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div class="mt-8 flex flex-col divide-y border-t">
|
|
68
|
+
{#each posts as post (post.title)}
|
|
69
|
+
<article class="flex flex-col sm:flex-row gap-4 sm:gap-6 py-6">
|
|
70
|
+
<div class="w-full sm:w-40 flex-shrink-0">
|
|
71
|
+
<div class="aspect-video sm:aspect-square w-full rounded-lg bg-muted flex items-center justify-center">
|
|
72
|
+
<svg
|
|
73
|
+
width="24"
|
|
74
|
+
height="24"
|
|
75
|
+
viewBox="0 0 24 24"
|
|
76
|
+
fill="none"
|
|
77
|
+
stroke="currentColor"
|
|
78
|
+
stroke-width="1.5"
|
|
79
|
+
class="text-muted-foreground"
|
|
80
|
+
>
|
|
81
|
+
<rect x="3" y="3" width="18" height="18" rx="2" />
|
|
82
|
+
<circle cx="8.5" cy="8.5" r="1.5" />
|
|
83
|
+
<polyline points="21 15 16 10 5 21" />
|
|
84
|
+
</svg>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<div class="flex flex-col flex-1 min-w-0">
|
|
89
|
+
<div class="flex items-center text-xs text-muted-foreground">
|
|
90
|
+
{#if post.date}
|
|
91
|
+
<span>{post.date}</span>
|
|
92
|
+
{/if}
|
|
93
|
+
{#if post.date && post.category}
|
|
94
|
+
<span class="mx-1">·</span>
|
|
95
|
+
{/if}
|
|
96
|
+
{#if post.category}
|
|
97
|
+
<span>{post.category}</span>
|
|
98
|
+
{/if}
|
|
99
|
+
</div>
|
|
100
|
+
<h3 class="mt-2 font-semibold leading-snug">{post.title}</h3>
|
|
101
|
+
{#if post.excerpt}
|
|
102
|
+
<p class="mt-2 text-sm text-muted-foreground flex-1">{post.excerpt}</p>
|
|
103
|
+
{/if}
|
|
104
|
+
{#if post.author}
|
|
105
|
+
<div class="mt-4 flex items-center gap-3">
|
|
106
|
+
<div class="h-8 w-8 rounded-full bg-muted flex-shrink-0" />
|
|
107
|
+
<div class="min-w-0">
|
|
108
|
+
<p class="text-sm font-medium truncate">{post.author.name}</p>
|
|
109
|
+
{#if post.author.role}
|
|
110
|
+
<p class="text-xs text-muted-foreground truncate">{post.author.role}</p>
|
|
111
|
+
{/if}
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
{/if}
|
|
115
|
+
</div>
|
|
116
|
+
</article>
|
|
117
|
+
{/each}
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
</section>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { default as BlogSection01 } from './BlogSection01.svelte';
|
|
2
|
+
export { default as BlogSection02 } from './BlogSection02.svelte';
|
|
3
|
+
export { default as BlogSection03 } from './BlogSection03.svelte';
|
|
4
|
+
export { default as BlogSection04 } from './BlogSection04.svelte';
|
|
5
|
+
export { default as BlogSection05 } from './BlogSection05.svelte';
|
|
6
|
+
|
|
7
|
+
export interface BlogPost {
|
|
8
|
+
title: string;
|
|
9
|
+
excerpt?: string;
|
|
10
|
+
date?: string;
|
|
11
|
+
category?: string;
|
|
12
|
+
imageUrl?: string;
|
|
13
|
+
author?: { name: string; role?: string; avatarUrl?: string };
|
|
14
|
+
href?: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
count?: number;
|
|
7
|
+
bookmarked?: boolean;
|
|
8
|
+
onbookmark?: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const { class: className = '', count = 24, bookmarked = false, onbookmark } = $props();
|
|
12
|
+
|
|
13
|
+
let bookmarkCount = $state(count);
|
|
14
|
+
let isBookmarked = $state(bookmarked);
|
|
15
|
+
|
|
16
|
+
const handleBookmark = () => {
|
|
17
|
+
isBookmarked = !isBookmarked;
|
|
18
|
+
bookmarkCount = isBookmarked ? bookmarkCount + 1 : bookmarkCount - 1;
|
|
19
|
+
onbookmark?.();
|
|
20
|
+
};
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<button
|
|
24
|
+
type="button"
|
|
25
|
+
onclick={handleBookmark}
|
|
26
|
+
class={cn(
|
|
27
|
+
'inline-flex items-center gap-2 rounded-md border bg-background px-3 py-1.5 text-sm hover:bg-muted transition-colors',
|
|
28
|
+
isBookmarked && 'bg-muted',
|
|
29
|
+
className
|
|
30
|
+
)}
|
|
31
|
+
>
|
|
32
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill={isBookmarked ? 'currentColor' : 'none'} stroke="currentColor" stroke-width="2">
|
|
33
|
+
<path d="m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z" />
|
|
34
|
+
</svg>
|
|
35
|
+
<span>Bookmark</span>
|
|
36
|
+
<span class="text-sm text-muted-foreground">{bookmarkCount}</span>
|
|
37
|
+
</button>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
count?: number;
|
|
7
|
+
liked?: boolean;
|
|
8
|
+
onlike?: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const { class: className = '', count = 24, liked = false, onlike } = $props();
|
|
12
|
+
|
|
13
|
+
let likeCount = $state(count);
|
|
14
|
+
let isLiked = $state(liked);
|
|
15
|
+
|
|
16
|
+
const handleLike = () => {
|
|
17
|
+
isLiked = !isLiked;
|
|
18
|
+
likeCount = isLiked ? likeCount + 1 : likeCount - 1;
|
|
19
|
+
onlike?.();
|
|
20
|
+
};
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<button
|
|
24
|
+
type="button"
|
|
25
|
+
onclick={handleLike}
|
|
26
|
+
class={cn(
|
|
27
|
+
'inline-flex items-center gap-2 rounded-md border bg-background px-3 py-1.5 text-sm hover:bg-muted transition-colors',
|
|
28
|
+
isLiked && 'bg-muted',
|
|
29
|
+
className
|
|
30
|
+
)}
|
|
31
|
+
>
|
|
32
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill={isLiked ? 'currentColor' : 'none'} stroke="currentColor" stroke-width="2">
|
|
33
|
+
<path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3" />
|
|
34
|
+
</svg>
|
|
35
|
+
<span>Like</span>
|
|
36
|
+
<span class="text-sm text-muted-foreground">{likeCount}</span>
|
|
37
|
+
</button>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
open?: boolean;
|
|
7
|
+
onToggle?: (open: boolean) => void;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { class: className = '', open = false, onToggle } = $props();
|
|
11
|
+
|
|
12
|
+
let isOpen = $state(open);
|
|
13
|
+
|
|
14
|
+
const handleToggle = () => {
|
|
15
|
+
isOpen = !isOpen;
|
|
16
|
+
onToggle?.(isOpen);
|
|
17
|
+
};
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<button
|
|
21
|
+
type="button"
|
|
22
|
+
onclick={handleToggle}
|
|
23
|
+
class={cn('flex h-9 w-9 items-center justify-center rounded-md border bg-background hover:bg-muted transition-colors', className)}
|
|
24
|
+
>
|
|
25
|
+
{#if isOpen}
|
|
26
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
27
|
+
<line x1="18" y1="6" x2="6" y2="18" />
|
|
28
|
+
<line x1="6" y1="6" x2="18" y2="18" />
|
|
29
|
+
</svg>
|
|
30
|
+
{:else}
|
|
31
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
32
|
+
<line x1="3" y1="6" x2="21" y2="6" />
|
|
33
|
+
<line x1="3" y1="12" x2="21" y2="12" />
|
|
34
|
+
<line x1="3" y1="18" x2="21" y2="18" />
|
|
35
|
+
</svg>
|
|
36
|
+
{/if}
|
|
37
|
+
</button>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
label?: string;
|
|
7
|
+
onclick?: () => void;
|
|
8
|
+
onDropdown?: () => void;
|
|
9
|
+
open?: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const { class: className = '', label = 'Publish', onclick, onDropdown, open = false } = $props();
|
|
13
|
+
|
|
14
|
+
let isOpen = $state(open);
|
|
15
|
+
|
|
16
|
+
const handleDropdown = () => {
|
|
17
|
+
isOpen = !isOpen;
|
|
18
|
+
onDropdown?.();
|
|
19
|
+
};
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<div class={cn('inline-flex rounded-md border overflow-hidden', className)}>
|
|
23
|
+
<button
|
|
24
|
+
type="button"
|
|
25
|
+
onclick={onclick}
|
|
26
|
+
class="flex items-center gap-2 px-3 py-1.5 text-sm bg-background hover:bg-muted transition-colors"
|
|
27
|
+
>
|
|
28
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
29
|
+
<path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z" />
|
|
30
|
+
<path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z" />
|
|
31
|
+
</svg>
|
|
32
|
+
<span>{label}</span>
|
|
33
|
+
</button>
|
|
34
|
+
|
|
35
|
+
<div class="border-l" />
|
|
36
|
+
|
|
37
|
+
<button
|
|
38
|
+
type="button"
|
|
39
|
+
onclick={handleDropdown}
|
|
40
|
+
class="flex items-center px-2 py-1.5 bg-background hover:bg-muted transition-colors"
|
|
41
|
+
>
|
|
42
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
43
|
+
<path d="m6 9 6 6 6-6" />
|
|
44
|
+
</svg>
|
|
45
|
+
</button>
|
|
46
|
+
</div>
|