@xbg.solutions/create-frontend 1.1.1 → 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,33 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SectionFooter03.svelte
|
|
3
|
+
Save/Edit/View action buttons left. Description text center-right.
|
|
4
|
+
-->
|
|
5
|
+
<script lang="ts">
|
|
6
|
+
import { cn } from '$lib/utils/cn';
|
|
7
|
+
import { Button } from '$lib/components/ui';
|
|
8
|
+
|
|
9
|
+
let {
|
|
10
|
+
class: className = '',
|
|
11
|
+
description = 'This feature is available in the Pro Plan for additional $10 per month.',
|
|
12
|
+
onview = () => {},
|
|
13
|
+
onedit = () => {},
|
|
14
|
+
onsave = () => {}
|
|
15
|
+
}: {
|
|
16
|
+
class?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
onview?: () => void;
|
|
19
|
+
onedit?: () => void;
|
|
20
|
+
onsave?: () => void;
|
|
21
|
+
} = $props();
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<div class={cn('flex flex-col gap-3 py-4 sm:flex-row sm:items-center sm:justify-between', className)}>
|
|
25
|
+
<div class="flex shrink-0 items-center gap-2">
|
|
26
|
+
<Button size="sm" onclick={onsave}>Save</Button>
|
|
27
|
+
<Button variant="outline" size="sm" onclick={onedit}>Edit</Button>
|
|
28
|
+
<Button variant="outline" size="sm" onclick={onview}>View</Button>
|
|
29
|
+
</div>
|
|
30
|
+
{#if description}
|
|
31
|
+
<p class="text-sm text-muted-foreground sm:text-right">{description}</p>
|
|
32
|
+
{/if}
|
|
33
|
+
</div>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SectionFooter04.svelte
|
|
3
|
+
Primary CTA button left. "Need more?" text + secondary link/button right.
|
|
4
|
+
-->
|
|
5
|
+
<script lang="ts">
|
|
6
|
+
import { cn } from '$lib/utils/cn';
|
|
7
|
+
import { Button } from '$lib/components/ui';
|
|
8
|
+
|
|
9
|
+
let {
|
|
10
|
+
class: className = '',
|
|
11
|
+
ctaLabel = 'Purchase credits',
|
|
12
|
+
needMoreText = 'Need more?',
|
|
13
|
+
contactLabel = 'Contact sales',
|
|
14
|
+
oncta = () => {},
|
|
15
|
+
oncontact = () => {}
|
|
16
|
+
}: {
|
|
17
|
+
class?: string;
|
|
18
|
+
ctaLabel?: string;
|
|
19
|
+
needMoreText?: string;
|
|
20
|
+
contactLabel?: string;
|
|
21
|
+
oncta?: () => void;
|
|
22
|
+
oncontact?: () => void;
|
|
23
|
+
} = $props();
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<div class={cn('flex flex-col gap-3 py-4 sm:flex-row sm:items-center sm:justify-between', className)}>
|
|
27
|
+
<Button size="sm" onclick={oncta}>{ctaLabel}</Button>
|
|
28
|
+
<div class="flex items-center gap-2 text-sm">
|
|
29
|
+
{#if needMoreText}
|
|
30
|
+
<span class="text-muted-foreground">{needMoreText}</span>
|
|
31
|
+
{/if}
|
|
32
|
+
<Button variant="outline" size="sm" onclick={oncontact}>{contactLabel}</Button>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SectionFooter05.svelte
|
|
3
|
+
Pagination row: ← Previous | 1–7 of 120 | Next →
|
|
4
|
+
Mobile: icon-only prev/next buttons flanking the count.
|
|
5
|
+
-->
|
|
6
|
+
<script lang="ts">
|
|
7
|
+
import { cn } from '$lib/utils/cn';
|
|
8
|
+
import { Button } from '$lib/components/ui';
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
class: className = '',
|
|
12
|
+
page = 1,
|
|
13
|
+
pageSize = 7,
|
|
14
|
+
total = 120,
|
|
15
|
+
onprev = () => {},
|
|
16
|
+
onnext = () => {}
|
|
17
|
+
}: {
|
|
18
|
+
class?: string;
|
|
19
|
+
page?: number;
|
|
20
|
+
pageSize?: number;
|
|
21
|
+
total?: number;
|
|
22
|
+
onprev?: () => void;
|
|
23
|
+
onnext?: () => void;
|
|
24
|
+
} = $props();
|
|
25
|
+
|
|
26
|
+
const start = $derived((page - 1) * pageSize + 1);
|
|
27
|
+
const end = $derived(Math.min(page * pageSize, total));
|
|
28
|
+
const hasPrev = $derived(page > 1);
|
|
29
|
+
const hasNext = $derived(end < total);
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<div class={cn('flex items-center justify-between gap-4 py-4', className)}>
|
|
33
|
+
<!-- Desktop Previous -->
|
|
34
|
+
<Button
|
|
35
|
+
variant="outline"
|
|
36
|
+
size="sm"
|
|
37
|
+
onclick={onprev}
|
|
38
|
+
disabled={!hasPrev}
|
|
39
|
+
class="hidden gap-1 sm:inline-flex"
|
|
40
|
+
>
|
|
41
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg>
|
|
42
|
+
Previous
|
|
43
|
+
</Button>
|
|
44
|
+
|
|
45
|
+
<!-- Mobile Previous (icon only) -->
|
|
46
|
+
<Button variant="outline" size="icon" class="h-8 w-8 sm:hidden" onclick={onprev} disabled={!hasPrev}>
|
|
47
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg>
|
|
48
|
+
</Button>
|
|
49
|
+
|
|
50
|
+
<!-- Count -->
|
|
51
|
+
<span class="text-sm text-muted-foreground">{start}–{end} of {total}</span>
|
|
52
|
+
|
|
53
|
+
<!-- Desktop Next -->
|
|
54
|
+
<Button
|
|
55
|
+
variant="outline"
|
|
56
|
+
size="sm"
|
|
57
|
+
onclick={onnext}
|
|
58
|
+
disabled={!hasNext}
|
|
59
|
+
class="hidden gap-1 sm:inline-flex"
|
|
60
|
+
>
|
|
61
|
+
Next
|
|
62
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
|
|
63
|
+
</Button>
|
|
64
|
+
|
|
65
|
+
<!-- Mobile Next (icon only) -->
|
|
66
|
+
<Button variant="outline" size="icon" class="h-8 w-8 sm:hidden" onclick={onnext} disabled={!hasNext}>
|
|
67
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
|
|
68
|
+
</Button>
|
|
69
|
+
</div>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as SectionFooter01 } from './SectionFooter01.svelte';
|
|
2
|
+
export { default as SectionFooter02 } from './SectionFooter02.svelte';
|
|
3
|
+
export { default as SectionFooter03 } from './SectionFooter03.svelte';
|
|
4
|
+
export { default as SectionFooter04 } from './SectionFooter04.svelte';
|
|
5
|
+
export { default as SectionFooter05 } from './SectionFooter05.svelte';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SectionHeader01.svelte
|
|
3
|
+
Minimal two-slot horizontal layout: wide left slot + narrow right slot.
|
|
4
|
+
-->
|
|
5
|
+
<script lang="ts">
|
|
6
|
+
import { cn } from '$lib/utils/cn';
|
|
7
|
+
import type { Snippet } from 'svelte';
|
|
8
|
+
|
|
9
|
+
let {
|
|
10
|
+
class: className = '',
|
|
11
|
+
left,
|
|
12
|
+
right
|
|
13
|
+
}: {
|
|
14
|
+
class?: string;
|
|
15
|
+
left?: Snippet;
|
|
16
|
+
right?: Snippet;
|
|
17
|
+
} = $props();
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<div class={cn('flex items-center gap-4 py-4', className)}>
|
|
21
|
+
<div class="flex-1">
|
|
22
|
+
{#if left}
|
|
23
|
+
{@render left()}
|
|
24
|
+
{:else}
|
|
25
|
+
<div class="flex min-h-10 items-center justify-center rounded-lg border border-dashed bg-background text-sm text-muted-foreground">
|
|
26
|
+
Slot (swap it with your content)
|
|
27
|
+
</div>
|
|
28
|
+
{/if}
|
|
29
|
+
</div>
|
|
30
|
+
<div class="w-44 shrink-0">
|
|
31
|
+
{#if right}
|
|
32
|
+
{@render right()}
|
|
33
|
+
{:else}
|
|
34
|
+
<div class="flex min-h-10 items-center justify-center rounded-lg border border-dashed bg-background text-sm text-muted-foreground">
|
|
35
|
+
Slot (swap it with your content)
|
|
36
|
+
</div>
|
|
37
|
+
{/if}
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SectionHeader02.svelte
|
|
3
|
+
Title + Status badge + description left. Search + View/Edit/Create New right.
|
|
4
|
+
-->
|
|
5
|
+
<script lang="ts">
|
|
6
|
+
import { cn } from '$lib/utils/cn';
|
|
7
|
+
import { Button } from '$lib/components/ui';
|
|
8
|
+
|
|
9
|
+
let {
|
|
10
|
+
class: className = '',
|
|
11
|
+
title = 'Storage',
|
|
12
|
+
badge = 'Status',
|
|
13
|
+
description = 'Read and write directly to databases and stores from your projects.',
|
|
14
|
+
searchPlaceholder = 'Search',
|
|
15
|
+
onview = () => {},
|
|
16
|
+
onedit = () => {},
|
|
17
|
+
oncreate = () => {}
|
|
18
|
+
}: {
|
|
19
|
+
class?: string;
|
|
20
|
+
title?: string;
|
|
21
|
+
badge?: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
searchPlaceholder?: string;
|
|
24
|
+
onview?: () => void;
|
|
25
|
+
onedit?: () => void;
|
|
26
|
+
oncreate?: () => void;
|
|
27
|
+
} = $props();
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<div class={cn('py-4', className)}>
|
|
31
|
+
<div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
|
|
32
|
+
<!-- Left: title + badge + description -->
|
|
33
|
+
<div>
|
|
34
|
+
<div class="flex items-center gap-2">
|
|
35
|
+
<h2 class="text-lg font-semibold">{title}</h2>
|
|
36
|
+
{#if badge}
|
|
37
|
+
<span class="inline-flex items-center rounded-full border px-2 py-0.5 text-xs font-medium">{badge}</span>
|
|
38
|
+
{/if}
|
|
39
|
+
</div>
|
|
40
|
+
{#if description}
|
|
41
|
+
<p class="mt-0.5 text-sm text-muted-foreground">{description}</p>
|
|
42
|
+
{/if}
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<!-- Right: search + actions -->
|
|
46
|
+
<div class="flex shrink-0 flex-col items-end gap-2 sm:flex-row sm:items-center">
|
|
47
|
+
<div class="flex items-center gap-2 rounded-md border bg-background px-3 py-1.5">
|
|
48
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-muted-foreground"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
|
|
49
|
+
<input type="text" placeholder={searchPlaceholder} class="w-36 bg-transparent text-sm outline-none placeholder:text-muted-foreground" />
|
|
50
|
+
</div>
|
|
51
|
+
<div class="flex items-center gap-2">
|
|
52
|
+
<Button variant="outline" size="sm" onclick={onview}>View</Button>
|
|
53
|
+
<Button variant="outline" size="sm" onclick={onedit}>Edit</Button>
|
|
54
|
+
<Button size="sm" onclick={oncreate}>Create new</Button>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SectionHeader03.svelte
|
|
3
|
+
Title + Status badge + description left. View/Edit/Create New right. Segmented tabs below.
|
|
4
|
+
Mobile: dropdown select for tabs.
|
|
5
|
+
-->
|
|
6
|
+
<script lang="ts">
|
|
7
|
+
import { cn } from '$lib/utils/cn';
|
|
8
|
+
import { Button } from '$lib/components/ui';
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
class: className = '',
|
|
12
|
+
title = 'Storage',
|
|
13
|
+
badge = 'Status',
|
|
14
|
+
description = 'Read and write directly to databases and stores from your projects.',
|
|
15
|
+
tabs = ['Tab 1', 'Tab 2', 'Tab 3', 'Tab 4'],
|
|
16
|
+
activeTab = 'Tab 1',
|
|
17
|
+
onview = () => {},
|
|
18
|
+
onedit = () => {},
|
|
19
|
+
oncreate = () => {}
|
|
20
|
+
}: {
|
|
21
|
+
class?: string;
|
|
22
|
+
title?: string;
|
|
23
|
+
badge?: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
tabs?: string[];
|
|
26
|
+
activeTab?: string;
|
|
27
|
+
onview?: () => void;
|
|
28
|
+
onedit?: () => void;
|
|
29
|
+
oncreate?: () => void;
|
|
30
|
+
} = $props();
|
|
31
|
+
|
|
32
|
+
let currentTab = $state(activeTab);
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<div class={cn('py-4', className)}>
|
|
36
|
+
<!-- Top row: title/desc left, actions right -->
|
|
37
|
+
<div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
|
|
38
|
+
<div>
|
|
39
|
+
<div class="flex items-center gap-2">
|
|
40
|
+
<h2 class="text-lg font-semibold">{title}</h2>
|
|
41
|
+
{#if badge}
|
|
42
|
+
<span class="inline-flex items-center rounded-full border px-2 py-0.5 text-xs font-medium">{badge}</span>
|
|
43
|
+
{/if}
|
|
44
|
+
</div>
|
|
45
|
+
{#if description}
|
|
46
|
+
<p class="mt-0.5 text-sm text-muted-foreground">{description}</p>
|
|
47
|
+
{/if}
|
|
48
|
+
</div>
|
|
49
|
+
<div class="flex shrink-0 items-center gap-2">
|
|
50
|
+
<Button variant="outline" size="sm" onclick={onview}>View</Button>
|
|
51
|
+
<Button variant="outline" size="sm" onclick={onedit}>Edit</Button>
|
|
52
|
+
<Button size="sm" onclick={oncreate}>Create new</Button>
|
|
53
|
+
<Button variant="ghost" size="icon" class="h-8 w-8">
|
|
54
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/></svg>
|
|
55
|
+
</Button>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<!-- Tabs: pill/segmented on desktop, select on mobile -->
|
|
60
|
+
<div class="mt-4">
|
|
61
|
+
<!-- Desktop segmented tabs -->
|
|
62
|
+
<div class="hidden grid-flow-col grid-cols-[repeat(auto-fit,minmax(0,1fr))] overflow-hidden rounded-md border bg-muted p-1 sm:grid">
|
|
63
|
+
{#each tabs as tab}
|
|
64
|
+
<button
|
|
65
|
+
type="button"
|
|
66
|
+
onclick={() => (currentTab = tab)}
|
|
67
|
+
class={cn(
|
|
68
|
+
'rounded-sm px-4 py-1.5 text-sm font-medium transition-colors',
|
|
69
|
+
currentTab === tab
|
|
70
|
+
? 'bg-background text-foreground shadow-sm'
|
|
71
|
+
: 'text-muted-foreground hover:text-foreground'
|
|
72
|
+
)}
|
|
73
|
+
>{tab}</button>
|
|
74
|
+
{/each}
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
<!-- Mobile select -->
|
|
78
|
+
<select
|
|
79
|
+
class="sm:hidden w-full rounded-md border bg-background px-3 py-1.5 text-sm"
|
|
80
|
+
value={currentTab}
|
|
81
|
+
onchange={(e) => (currentTab = (e.target as HTMLSelectElement).value)}
|
|
82
|
+
>
|
|
83
|
+
{#each tabs as tab}
|
|
84
|
+
<option value={tab}>{tab}</option>
|
|
85
|
+
{/each}
|
|
86
|
+
</select>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SectionHeader04.svelte
|
|
3
|
+
Title + description left. Search + more (…) button right.
|
|
4
|
+
-->
|
|
5
|
+
<script lang="ts">
|
|
6
|
+
import { cn } from '$lib/utils/cn';
|
|
7
|
+
import { Button } from '$lib/components/ui';
|
|
8
|
+
|
|
9
|
+
let {
|
|
10
|
+
class: className = '',
|
|
11
|
+
title = 'Storage',
|
|
12
|
+
description = 'Read and write directly to databases and stores from your projects.',
|
|
13
|
+
searchPlaceholder = 'Search',
|
|
14
|
+
onmore = () => {}
|
|
15
|
+
}: {
|
|
16
|
+
class?: string;
|
|
17
|
+
title?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
searchPlaceholder?: string;
|
|
20
|
+
onmore?: () => void;
|
|
21
|
+
} = $props();
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<div class={cn('py-4', className)}>
|
|
25
|
+
<div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
|
|
26
|
+
<!-- Left -->
|
|
27
|
+
<div>
|
|
28
|
+
<h2 class="text-lg font-semibold">{title}</h2>
|
|
29
|
+
{#if description}
|
|
30
|
+
<p class="mt-0.5 text-sm text-muted-foreground">{description}</p>
|
|
31
|
+
{/if}
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<!-- Right: search + more -->
|
|
35
|
+
<div class="flex shrink-0 items-center gap-2">
|
|
36
|
+
<div class="flex items-center gap-2 rounded-md border bg-background px-3 py-1.5">
|
|
37
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-muted-foreground"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
|
|
38
|
+
<input type="text" placeholder={searchPlaceholder} class="w-36 bg-transparent text-sm outline-none placeholder:text-muted-foreground" />
|
|
39
|
+
</div>
|
|
40
|
+
<Button variant="ghost" size="icon" class="h-8 w-8" onclick={onmore}>
|
|
41
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/></svg>
|
|
42
|
+
</Button>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SectionHeader05.svelte
|
|
3
|
+
Title + description left. Labeled toggle switch right.
|
|
4
|
+
-->
|
|
5
|
+
<script lang="ts">
|
|
6
|
+
import { cn } from '$lib/utils/cn';
|
|
7
|
+
|
|
8
|
+
let {
|
|
9
|
+
class: className = '',
|
|
10
|
+
title = 'Storage',
|
|
11
|
+
description = 'Read and write directly to databases and stores from your projects.',
|
|
12
|
+
toggleLabel = 'Enabled',
|
|
13
|
+
enabled = false,
|
|
14
|
+
ontoggle = (_: boolean) => {}
|
|
15
|
+
}: {
|
|
16
|
+
class?: string;
|
|
17
|
+
title?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
toggleLabel?: string;
|
|
20
|
+
enabled?: boolean;
|
|
21
|
+
ontoggle?: (value: boolean) => void;
|
|
22
|
+
} = $props();
|
|
23
|
+
|
|
24
|
+
let isEnabled = $state(enabled);
|
|
25
|
+
|
|
26
|
+
function handleToggle() {
|
|
27
|
+
isEnabled = !isEnabled;
|
|
28
|
+
ontoggle(isEnabled);
|
|
29
|
+
}
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<div class={cn('py-4', className)}>
|
|
33
|
+
<div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
|
|
34
|
+
<!-- Left -->
|
|
35
|
+
<div>
|
|
36
|
+
<h2 class="text-lg font-semibold">{title}</h2>
|
|
37
|
+
{#if description}
|
|
38
|
+
<p class="mt-0.5 text-sm text-muted-foreground">{description}</p>
|
|
39
|
+
{/if}
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<!-- Right: toggle -->
|
|
43
|
+
<div class="flex shrink-0 items-center gap-2">
|
|
44
|
+
<span class="text-sm text-muted-foreground">{toggleLabel}</span>
|
|
45
|
+
<button
|
|
46
|
+
type="button"
|
|
47
|
+
role="switch"
|
|
48
|
+
aria-checked={isEnabled}
|
|
49
|
+
onclick={handleToggle}
|
|
50
|
+
class={cn(
|
|
51
|
+
'relative inline-flex h-5 w-9 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
|
|
52
|
+
isEnabled ? 'bg-foreground' : 'bg-input'
|
|
53
|
+
)}
|
|
54
|
+
>
|
|
55
|
+
<span
|
|
56
|
+
class={cn(
|
|
57
|
+
'pointer-events-none inline-block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform',
|
|
58
|
+
isEnabled ? 'translate-x-4' : 'translate-x-0'
|
|
59
|
+
)}
|
|
60
|
+
/>
|
|
61
|
+
</button>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as SectionHeader01 } from './SectionHeader01.svelte';
|
|
2
|
+
export { default as SectionHeader02 } from './SectionHeader02.svelte';
|
|
3
|
+
export { default as SectionHeader03 } from './SectionHeader03.svelte';
|
|
4
|
+
export { default as SectionHeader04 } from './SectionHeader04.svelte';
|
|
5
|
+
export { default as SectionHeader05 } from './SectionHeader05.svelte';
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '$lib/utils/cn';
|
|
3
|
+
import { Button } from '$lib/components/ui';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
class?: string;
|
|
7
|
+
onSaveCard?: () => void;
|
|
8
|
+
onSaveClient?: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const { class: className, onSaveCard, onSaveClient }: Props = $props();
|
|
12
|
+
|
|
13
|
+
// Card details state
|
|
14
|
+
let nameOnCard = $state('Kathy Pacheco');
|
|
15
|
+
let cardExpiry = $state('05/2025');
|
|
16
|
+
let cardNumber = $state('•••• •••• •••• 4242');
|
|
17
|
+
let cardCvv = $state('•••');
|
|
18
|
+
|
|
19
|
+
// Client details state
|
|
20
|
+
let clientName = $state('Kathy Pacheco');
|
|
21
|
+
let clientEmail = $state('kathy@example.com');
|
|
22
|
+
let clientCountry = $state('United States');
|
|
23
|
+
let streetAddress = $state('2825 Winding Way');
|
|
24
|
+
let city = $state('Providence');
|
|
25
|
+
let state = $state('Rhode Island');
|
|
26
|
+
|
|
27
|
+
function handleSaveCard() {
|
|
28
|
+
onSaveCard?.();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function handleSaveClient() {
|
|
32
|
+
onSaveClient?.();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// SVG Icons
|
|
36
|
+
function GlobeIcon() {
|
|
37
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 1 10 4M12 22a14.5 14.5 0 0 1-10-4M2 12h20M12 2a14.5 14.5 0 0 0 0 20M12 22a14.5 14.5 0 0 0 0-20"/></svg>`;
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<div class={cn('space-y-6', className)}>
|
|
42
|
+
<!-- Plan Banner -->
|
|
43
|
+
<div class="rounded-lg bg-black px-6 py-4 text-white sm:px-8 sm:py-6">
|
|
44
|
+
<div class="flex items-center justify-between">
|
|
45
|
+
<div>
|
|
46
|
+
<h2 class="text-lg font-semibold">You're using free plan</h2>
|
|
47
|
+
<p class="mt-1 text-sm text-gray-300">Upgrade your account to unlock more features and higher limits.</p>
|
|
48
|
+
</div>
|
|
49
|
+
<Button class="ml-4 flex-shrink-0">
|
|
50
|
+
View plans →
|
|
51
|
+
</Button>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<!-- Card Details Section -->
|
|
56
|
+
<div class="rounded-lg border bg-background p-4 sm:p-6">
|
|
57
|
+
<div class="mb-6">
|
|
58
|
+
<h3 class="text-lg font-semibold">Card details</h3>
|
|
59
|
+
<p class="mt-1 text-sm text-muted-foreground">Manage your payment method and billing information.</p>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<div class="grid gap-4 sm:grid-cols-2">
|
|
63
|
+
<div>
|
|
64
|
+
<label class="block text-sm font-medium mb-2">Name on card</label>
|
|
65
|
+
<input
|
|
66
|
+
type="text"
|
|
67
|
+
bind:value={nameOnCard}
|
|
68
|
+
placeholder="Full name"
|
|
69
|
+
class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
|
|
70
|
+
/>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<div>
|
|
74
|
+
<label class="block text-sm font-medium mb-2">Expiry</label>
|
|
75
|
+
<input
|
|
76
|
+
type="text"
|
|
77
|
+
bind:value={cardExpiry}
|
|
78
|
+
placeholder="MM/YYYY"
|
|
79
|
+
class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
|
|
80
|
+
/>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<div>
|
|
84
|
+
<label class="block text-sm font-medium mb-2">Card number</label>
|
|
85
|
+
<input
|
|
86
|
+
type="text"
|
|
87
|
+
bind:value={cardNumber}
|
|
88
|
+
placeholder="•••• •••• •••• ••••"
|
|
89
|
+
class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
|
|
90
|
+
/>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
<div>
|
|
94
|
+
<label class="block text-sm font-medium mb-2">CVV</label>
|
|
95
|
+
<input
|
|
96
|
+
type="text"
|
|
97
|
+
bind:value={cardCvv}
|
|
98
|
+
placeholder="•••"
|
|
99
|
+
class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
|
|
100
|
+
/>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<div class="mt-6 flex justify-end">
|
|
105
|
+
<Button onclick={handleSaveCard}>
|
|
106
|
+
Save changes
|
|
107
|
+
</Button>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<!-- Client Details Section -->
|
|
112
|
+
<div class="rounded-lg border bg-background p-4 sm:p-6">
|
|
113
|
+
<div class="mb-6">
|
|
114
|
+
<h3 class="text-lg font-semibold">Client details</h3>
|
|
115
|
+
<p class="mt-1 text-sm text-muted-foreground">Update your personal and billing address information.</p>
|
|
116
|
+
</div>
|
|
117
|
+
|
|
118
|
+
<div class="grid gap-4 sm:grid-cols-2">
|
|
119
|
+
<div>
|
|
120
|
+
<label class="block text-sm font-medium mb-2">Client name</label>
|
|
121
|
+
<input
|
|
122
|
+
type="text"
|
|
123
|
+
bind:value={clientName}
|
|
124
|
+
placeholder="Full name"
|
|
125
|
+
class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
|
|
126
|
+
/>
|
|
127
|
+
</div>
|
|
128
|
+
|
|
129
|
+
<div>
|
|
130
|
+
<label class="block text-sm font-medium mb-2">Email address</label>
|
|
131
|
+
<input
|
|
132
|
+
type="email"
|
|
133
|
+
bind:value={clientEmail}
|
|
134
|
+
placeholder="email@example.com"
|
|
135
|
+
class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
|
|
136
|
+
/>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<div>
|
|
140
|
+
<label class="block text-sm font-medium mb-2">Country</label>
|
|
141
|
+
<div class="relative">
|
|
142
|
+
<select
|
|
143
|
+
bind:value={clientCountry}
|
|
144
|
+
class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring appearance-none pr-8"
|
|
145
|
+
>
|
|
146
|
+
<option>United States</option>
|
|
147
|
+
<option>Canada</option>
|
|
148
|
+
<option>United Kingdom</option>
|
|
149
|
+
<option>Australia</option>
|
|
150
|
+
</select>
|
|
151
|
+
<div class="pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground">
|
|
152
|
+
{@html GlobeIcon()}
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
|
|
157
|
+
<div>
|
|
158
|
+
<label class="block text-sm font-medium mb-2">Street address</label>
|
|
159
|
+
<input
|
|
160
|
+
type="text"
|
|
161
|
+
bind:value={streetAddress}
|
|
162
|
+
placeholder="Street address"
|
|
163
|
+
class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
|
|
164
|
+
/>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<div>
|
|
168
|
+
<label class="block text-sm font-medium mb-2">City</label>
|
|
169
|
+
<input
|
|
170
|
+
type="text"
|
|
171
|
+
bind:value={city}
|
|
172
|
+
placeholder="City"
|
|
173
|
+
class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
|
|
174
|
+
/>
|
|
175
|
+
</div>
|
|
176
|
+
|
|
177
|
+
<div>
|
|
178
|
+
<label class="block text-sm font-medium mb-2">State</label>
|
|
179
|
+
<div class="relative">
|
|
180
|
+
<select
|
|
181
|
+
bind:value={state}
|
|
182
|
+
class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring appearance-none pr-8"
|
|
183
|
+
>
|
|
184
|
+
<option>Alabama</option>
|
|
185
|
+
<option>Rhode Island</option>
|
|
186
|
+
<option>California</option>
|
|
187
|
+
<option>Texas</option>
|
|
188
|
+
</select>
|
|
189
|
+
<div class="pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground">
|
|
190
|
+
{@html GlobeIcon()}
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
<div class="mt-6 flex justify-end">
|
|
197
|
+
<Button onclick={handleSaveClient}>
|
|
198
|
+
Save changes
|
|
199
|
+
</Button>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|