@stacksjs/defaults 0.70.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +2 -0
- package/package.json +20 -0
- package/resources/assets/fonts/013717e9.woff +0 -0
- package/resources/assets/fonts/03355817.woff2 +0 -0
- package/resources/assets/fonts/0380de7e.woff2 +0 -0
- package/resources/assets/fonts/0ba5d32a.woff +0 -0
- package/resources/assets/fonts/0bd57ddf.woff2 +0 -0
- package/resources/assets/fonts/19de0a60.woff2 +0 -0
- package/resources/assets/fonts/20b87e84.woff +0 -0
- package/resources/assets/fonts/4bbc67e1.woff +0 -0
- package/resources/assets/fonts/576fb0d7.woff +0 -0
- package/resources/assets/fonts/5ea10ee5.woff2 +0 -0
- package/resources/assets/fonts/6413fc0a.woff +0 -0
- package/resources/assets/fonts/72c114cf.woff +0 -0
- package/resources/assets/fonts/73c57e73.woff2 +0 -0
- package/resources/assets/fonts/813dca6c.woff +0 -0
- package/resources/assets/fonts/8a9b0995.woff2 +0 -0
- package/resources/assets/fonts/90b4832f.woff +0 -0
- package/resources/assets/fonts/9394ab85.woff2 +0 -0
- package/resources/assets/fonts/9b3c7d7f.woff2 +0 -0
- package/resources/assets/fonts/Monaco.ttf +0 -0
- package/resources/assets/fonts/b1b36d74.woff +0 -0
- package/resources/assets/fonts/b5d74798.woff2 +0 -0
- package/resources/assets/fonts/b9f81a4d.woff +0 -0
- package/resources/assets/fonts/c9784008.woff2 +0 -0
- package/resources/assets/fonts/cf692227.woff +0 -0
- package/resources/assets/fonts/d1c6ab51.woff2 +0 -0
- package/resources/assets/fonts/e2eb62fc.woff +0 -0
- package/resources/assets/fonts/fe21f8d8.woff2 +0 -0
- package/resources/assets/fonts/nps/CampmateScript-Regular.woff2 +0 -0
- package/resources/assets/fonts/nps/NPS_2026-variable.woff2 +0 -0
- package/resources/assets/fonts/nps/RedwoodSerif-Regular.woff2 +0 -0
- package/resources/assets/fonts/nps/SequoiaSans-Regular.woff2 +0 -0
- package/resources/assets/fonts/nps/Switchback-Regular.woff2 +0 -0
- package/resources/assets/images/app-icon.png +0 -0
- package/resources/assets/images/bg-img.png +0 -0
- package/resources/assets/images/park-ridge.svg +15 -0
- package/resources/assets/images/topography.svg +1 -0
- package/resources/assets/scripts/main.ts +2153 -0
- package/resources/assets/styles/README.md +19 -0
- package/resources/assets/styles/docs/main.css +1 -0
- package/resources/assets/styles/docs/overrides.css +1 -0
- package/resources/assets/styles/docs/vars.css +8 -0
- package/resources/assets/styles/main.css +1419 -0
- package/resources/components/Button.stx +70 -0
- package/resources/components/Buttons/BaseButton.stx +39 -0
- package/resources/components/Buttons/Counter.stx +28 -0
- package/resources/components/Buttons/ToggleDark.stx +11 -0
- package/resources/components/Container.stx +10 -0
- package/resources/components/Dashboard/.gitkeep +0 -0
- package/resources/components/Dashboard/Auth/ForgotPassword.stx +127 -0
- package/resources/components/Dashboard/Auth/Login.stx +212 -0
- package/resources/components/Dashboard/Auth/Register.stx +306 -0
- package/resources/components/Dashboard/Avatar.stx +123 -0
- package/resources/components/Dashboard/Billing/ActivePlan.stx +57 -0
- package/resources/components/Dashboard/Billing/CardBrands.stx +32 -0
- package/resources/components/Dashboard/Billing/CardForm.stx +34 -0
- package/resources/components/Dashboard/Billing/OneTimePayment.stx +28 -0
- package/resources/components/Dashboard/Billing/PaymentForm.stx +33 -0
- package/resources/components/Dashboard/Billing/PaymentMethod.stx +66 -0
- package/resources/components/Dashboard/Billing/PaymentMethodList.stx +52 -0
- package/resources/components/Dashboard/Billing/Plans.stx +136 -0
- package/resources/components/Dashboard/Buttons/AppButton.stx +48 -0
- package/resources/components/Dashboard/Buttons/IconButton.stx +20 -0
- package/resources/components/Dashboard/Card.stx +78 -0
- package/resources/components/Dashboard/Chart.stx +75 -0
- package/resources/components/Dashboard/CodeEditor.stx +41 -0
- package/resources/components/Dashboard/Commerce/BulkActionBar.stx +70 -0
- package/resources/components/Dashboard/Commerce/CategoriesTable.stx +133 -0
- package/resources/components/Dashboard/Commerce/CouponsTable.stx +161 -0
- package/resources/components/Dashboard/Commerce/CustomersTable.stx +142 -0
- package/resources/components/Dashboard/Commerce/Delivery/DeliveryRoutesTable.stx +80 -0
- package/resources/components/Dashboard/Commerce/Delivery/DigitalDeliveryTable.stx +85 -0
- package/resources/components/Dashboard/Commerce/Delivery/DriversTable.stx +99 -0
- package/resources/components/Dashboard/Commerce/Delivery/LicenseKeysTable.stx +92 -0
- package/resources/components/Dashboard/Commerce/Delivery/LicenseTemplatesTable.stx +88 -0
- package/resources/components/Dashboard/Commerce/Delivery/Pagination.stx +122 -0
- package/resources/components/Dashboard/Commerce/Delivery/SearchFilter.stx +23 -0
- package/resources/components/Dashboard/Commerce/Delivery/ShippingMethodsTable.stx +80 -0
- package/resources/components/Dashboard/Commerce/Delivery/ShippingRatesTable.stx +59 -0
- package/resources/components/Dashboard/Commerce/Delivery/ShippingZonesTable.stx +71 -0
- package/resources/components/Dashboard/Commerce/Delivery/TabNavigation.stx +36 -0
- package/resources/components/Dashboard/Commerce/Forms/CouponsForm.stx +191 -0
- package/resources/components/Dashboard/Commerce/OrdersTable.stx +131 -0
- package/resources/components/Dashboard/Commerce/ProductsTable.stx +170 -0
- package/resources/components/Dashboard/CreateRecordModal.stx +363 -0
- package/resources/components/Dashboard/DashboardLayout.stx +155 -0
- package/resources/components/Dashboard/Deployments/ActivityFeed.stx +54 -0
- package/resources/components/Dashboard/Deployments/DeployScript.stx +23 -0
- package/resources/components/Dashboard/Deployments/DeploymentHistory.stx +97 -0
- package/resources/components/Dashboard/Deployments/DeploymentList.stx +94 -0
- package/resources/components/Dashboard/Deployments/LiveTerminalOutput.stx +18 -0
- package/resources/components/Dashboard/Elements/Dropdown.stx +57 -0
- package/resources/components/Dashboard/Email/EmailActivityChart.stx +111 -0
- package/resources/components/Dashboard/Email/EmailCompose.stx +72 -0
- package/resources/components/Dashboard/Email/EmailDetail.stx +105 -0
- package/resources/components/Dashboard/Email/EmailList.stx +117 -0
- package/resources/components/Dashboard/Email/EmailSearch.stx +40 -0
- package/resources/components/Dashboard/Email/EmailSidebar.stx +133 -0
- package/resources/components/Dashboard/GlobalSearch.stx +124 -0
- package/resources/components/Dashboard/MobileSidebar.stx +47 -0
- package/resources/components/Dashboard/Modals/BaseModal.stx +50 -0
- package/resources/components/Dashboard/Modals/Popups/Alert.stx +112 -0
- package/resources/components/Dashboard/Modals/Popups/Toast.stx +70 -0
- package/resources/components/Dashboard/Modals/ToastWrapper.stx +35 -0
- package/resources/components/Dashboard/Monitoring/ErrorDetailModal.stx +228 -0
- package/resources/components/Dashboard/Monitoring/ErrorsTable.stx +184 -0
- package/resources/components/Dashboard/Navbar.stx +194 -0
- package/resources/components/Dashboard/NavbarModern.stx +188 -0
- package/resources/components/Dashboard/NotificationErrorModal.stx +105 -0
- package/resources/components/Dashboard/NotificationStatusBadge.stx +20 -0
- package/resources/components/Dashboard/Pagination.stx +90 -0
- package/resources/components/Dashboard/Queue/QueueTable.stx +127 -0
- package/resources/components/Dashboard/Settings/Forms/AIForm.stx +126 -0
- package/resources/components/Dashboard/Settings/Forms/AnalyticsForm.stx +52 -0
- package/resources/components/Dashboard/Settings/Forms/AppForm.stx +157 -0
- package/resources/components/Dashboard/Settings/Forms/CLIForm.stx +66 -0
- package/resources/components/Dashboard/Settings/Forms/CacheForm.stx +253 -0
- package/resources/components/Dashboard/Settings/Forms/CloudForm.stx +441 -0
- package/resources/components/Dashboard/Settings/Forms/DNSForm.stx +307 -0
- package/resources/components/Dashboard/Settings/Forms/DatabaseForm.stx +168 -0
- package/resources/components/Dashboard/Settings/Forms/EmailForm.stx +100 -0
- package/resources/components/Dashboard/Settings/Forms/FileSystemForm.stx +259 -0
- package/resources/components/Dashboard/Settings/Forms/HashingForm.stx +119 -0
- package/resources/components/Dashboard/Settings/Forms/LibraryForm.stx +389 -0
- package/resources/components/Dashboard/Settings/Forms/QueueForm.stx +219 -0
- package/resources/components/Dashboard/Settings/Forms/SearchEngineForm.stx +48 -0
- package/resources/components/Dashboard/Settings/Forms/SecurityForm.stx +143 -0
- package/resources/components/Dashboard/Settings/Forms/ServicesForm.stx +194 -0
- package/resources/components/Dashboard/Settings/Forms/StorageForm.stx +191 -0
- package/resources/components/Dashboard/Settings/Forms/TeamsForm.stx +33 -0
- package/resources/components/Dashboard/Settings/SettingsFormManager.stx +181 -0
- package/resources/components/Dashboard/SettingsHeader.stx +88 -0
- package/resources/components/Dashboard/SettingsSidebar.stx +234 -0
- package/resources/components/Dashboard/Sidebar.stx +23 -0
- package/resources/components/Dashboard/SidebarModern.stx +249 -0
- package/resources/components/Dashboard/Skeleton/LoadingCard.stx +15 -0
- package/resources/components/Dashboard/Skeleton/LoadingDetails.stx +26 -0
- package/resources/components/Dashboard/Table.stx +82 -0
- package/resources/components/Dashboard/TerminalContainer.stx +97 -0
- package/resources/components/Dashboard/Tooltip.stx +166 -0
- package/resources/components/Dashboard/Transaction/index.stx +88 -0
- package/resources/components/Dashboard/UI/ActivityTable.stx +54 -0
- package/resources/components/Dashboard/UI/Avatar.stx +102 -0
- package/resources/components/Dashboard/UI/Badge.stx +66 -0
- package/resources/components/Dashboard/UI/Button.stx +73 -0
- package/resources/components/Dashboard/UI/Card.stx +51 -0
- package/resources/components/Dashboard/UI/ChartCard.stx +36 -0
- package/resources/components/Dashboard/UI/Checkbox.stx +74 -0
- package/resources/components/Dashboard/UI/ConfirmDialog.stx +74 -0
- package/resources/components/Dashboard/UI/DataTable.stx +45 -0
- package/resources/components/Dashboard/UI/Dropdown.stx +72 -0
- package/resources/components/Dashboard/UI/DropdownItem.stx +80 -0
- package/resources/components/Dashboard/UI/EmptyState.stx +50 -0
- package/resources/components/Dashboard/UI/FilterBar.stx +48 -0
- package/resources/components/Dashboard/UI/Input.stx +77 -0
- package/resources/components/Dashboard/UI/Modal.stx +75 -0
- package/resources/components/Dashboard/UI/PageHeader.stx +69 -0
- package/resources/components/Dashboard/UI/PageLayout.stx +84 -0
- package/resources/components/Dashboard/UI/Pagination.stx +126 -0
- package/resources/components/Dashboard/UI/QuickLinks.stx +31 -0
- package/resources/components/Dashboard/UI/RouterLink.stx +31 -0
- package/resources/components/Dashboard/UI/Select.stx +84 -0
- package/resources/components/Dashboard/UI/ServiceHealth.stx +38 -0
- package/resources/components/Dashboard/UI/StatsCard.stx +79 -0
- package/resources/components/Dashboard/UI/Table.stx +143 -0
- package/resources/components/Dashboard/UI/Tabs.stx +45 -0
- package/resources/components/Dashboard/UI/Textarea.stx +93 -0
- package/resources/components/Dashboard/UI/Toggle.stx +84 -0
- package/resources/components/Dashboard/UI/WindowControls.stx +135 -0
- package/resources/components/Dashboard/Widget.stx +89 -0
- package/resources/components/Dashboard/WindowControls.stx +119 -0
- package/resources/components/Dashboard/index.ts +106 -0
- package/resources/components/Docs/Demo/ComboboxCode.md +114 -0
- package/resources/components/Docs/Demo/ComboboxDemo.stx +91 -0
- package/resources/components/Docs/Demo/DialogCode.md +42 -0
- package/resources/components/Docs/Demo/DialogDemo.stx +76 -0
- package/resources/components/Docs/Demo/DocsPlayground.stx +39 -0
- package/resources/components/Docs/Demo/DropdownCode.md +109 -0
- package/resources/components/Docs/Demo/DropdownDemo.stx +82 -0
- package/resources/components/Docs/Demo/Hero.stx +100 -0
- package/resources/components/Docs/Demo/ListboxCode.md +87 -0
- package/resources/components/Docs/Demo/ListboxDemo.stx +59 -0
- package/resources/components/Docs/Demo/NotificationCode.md +173 -0
- package/resources/components/Docs/Demo/NotificationDemo.stx +99 -0
- package/resources/components/Docs/Demo/PopoverCode.md +161 -0
- package/resources/components/Docs/Demo/PopoverDemo.stx +96 -0
- package/resources/components/Docs/Demo/RadioGroupCode.md +98 -0
- package/resources/components/Docs/Demo/RadioGroupDemo.stx +53 -0
- package/resources/components/Docs/Demo/StepperCode.md +216 -0
- package/resources/components/Docs/Demo/StepperDemo.stx +137 -0
- package/resources/components/Docs/Demo/SwitchCode.md +24 -0
- package/resources/components/Docs/Demo/SwitchDemo.stx +28 -0
- package/resources/components/Docs/Home.stx +7 -0
- package/resources/components/Docs/HomeContributors.stx +23 -0
- package/resources/components/Docs/HomeSponsors.stx +17 -0
- package/resources/components/Docs/HomeTeam.stx +18 -0
- package/resources/components/Docs/TeamMember.stx +79 -0
- package/resources/components/Email/EmailButton.stx +32 -0
- package/resources/components/Email/EmailDivider.stx +20 -0
- package/resources/components/Email/EmailImage.stx +24 -0
- package/resources/components/Email/EmailLayout.stx +55 -0
- package/resources/components/Email/EmailLink.stx +22 -0
- package/resources/components/Email/EmailSection.stx +20 -0
- package/resources/components/Email/EmailText.stx +30 -0
- package/resources/components/Forum/ForumBreadcrumb.stx +38 -0
- package/resources/components/Forum/ForumCategory.stx +16 -0
- package/resources/components/Forum/ForumCategoryItem.stx +46 -0
- package/resources/components/Forum/ForumLayout.stx +36 -0
- package/resources/components/Forum/ForumPagination.stx +39 -0
- package/resources/components/Forum/ForumPost.stx +71 -0
- package/resources/components/Forum/ForumReplyForm.stx +76 -0
- package/resources/components/Forum/ForumSidebar.stx +86 -0
- package/resources/components/Forum/ForumTopicItem.stx +77 -0
- package/resources/components/Forum/ForumTopicList.stx +23 -0
- package/resources/components/HelloWorld.stx +253 -0
- package/resources/components/Logo.stx +10 -0
- package/resources/components/Marketing/CallToAction.stx +30 -0
- package/resources/components/Marketing/ComingSoon.stx +155 -0
- package/resources/components/Marketing/Faqs.stx +99 -0
- package/resources/components/Marketing/Feature.stx +32 -0
- package/resources/components/Marketing/Fields.stx +28 -0
- package/resources/components/Marketing/Footer.stx +33 -0
- package/resources/components/Marketing/Header.stx +51 -0
- package/resources/components/Marketing/Hero.stx +46 -0
- package/resources/components/Marketing/Layout.stx +26 -0
- package/resources/components/Marketing/NavLink.stx +13 -0
- package/resources/components/Marketing/Plan.stx +43 -0
- package/resources/components/Marketing/Pricing.stx +120 -0
- package/resources/components/Marketing/PrimaryFeatures.stx +80 -0
- package/resources/components/Marketing/PrimaryFeatures2.stx +98 -0
- package/resources/components/Marketing/SecondaryFeatures.stx +80 -0
- package/resources/components/Marketing/Testimonials.stx +120 -0
- package/resources/components/Pagination.stx +149 -0
- package/resources/components/Playground.stx +9 -0
- package/resources/components/README.md +87 -0
- package/resources/components/Storefront/AnnouncementBar.stx +17 -0
- package/resources/components/Storefront/CartDrawer.stx +227 -0
- package/resources/components/Storefront/CheckoutSteps.stx +50 -0
- package/resources/components/Storefront/Footer.stx +81 -0
- package/resources/components/Storefront/Header.stx +66 -0
- package/resources/components/Storefront/OrderSummary.stx +79 -0
- package/resources/components/Storefront/ProductCard.stx +63 -0
- package/resources/components/Storefront/ProductGallery.stx +88 -0
- package/resources/components/Storefront/QuantitySelector.stx +97 -0
- package/resources/components/index.ts +13 -0
- package/resources/emails/email-verification.stx +46 -0
- package/resources/emails/layouts/base.html +113 -0
- package/resources/emails/password-changed.stx +55 -0
- package/resources/emails/password-reset.stx +43 -0
- package/resources/emails/subscription-confirmation.stx +99 -0
- package/resources/emails/welcome.stx +48 -0
- package/resources/functions/README.md +28 -0
- package/resources/functions/counter.ts +13 -0
- package/resources/functions/dark.ts +4 -0
- package/resources/functions/dashboard/analytics.ts +238 -0
- package/resources/functions/dashboard/config-io.ts +316 -0
- package/resources/functions/dashboard/data.ts +375 -0
- package/resources/functions/dashboard/library.ts +250 -0
- package/resources/functions/dashboard/sidebar.ts +537 -0
- package/resources/functions/dashboard/system.ts +150 -0
- package/resources/layouts/403.stx +188 -0
- package/resources/layouts/404.stx +34 -0
- package/resources/layouts/README.md +14 -0
- package/resources/layouts/dashboard/default.stx +20 -0
- package/resources/layouts/dashboard/guest.stx +10 -0
- package/resources/layouts/default.stx +3 -0
- package/resources/layouts/maintenance.stx +11 -0
- package/resources/layouts/storefront.stx +73 -0
- package/resources/layouts/system-tray/default.stx +3 -0
- package/resources/modules/.gitkeep +0 -0
- package/resources/plugins/.gitkeep +0 -0
- package/resources/plugins/preloader.ts +308 -0
- package/resources/types/README.md +3 -0
- package/resources/views/cart.stx +149 -0
- package/resources/views/checkout/contact.stx +101 -0
- package/resources/views/checkout/payment.stx +114 -0
- package/resources/views/checkout/shipping.stx +120 -0
- package/resources/views/coming-soon.stx +9 -0
- package/resources/views/dashboard/custom-page.stx +45 -0
- package/resources/views/dashboard/index.stx +24 -0
- package/resources/views/emails/welcome.stx +0 -0
- package/resources/views/errors/tester.stx +26 -0
- package/resources/views/index.stx +2865 -0
- package/resources/views/orders/[id].stx +130 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
// Header component
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<header class="py-10">
|
|
6
|
+
<Container>
|
|
7
|
+
<nav class="flex relative z-50 justify-between">
|
|
8
|
+
<div class="flex items-center md:gap-x-12">
|
|
9
|
+
<a href="#" aria-label="Home">
|
|
10
|
+
<Logo class="pb-1 h-10 w-auto" />
|
|
11
|
+
</a>
|
|
12
|
+
|
|
13
|
+
<div class="hidden md:flex md:gap-x-6">
|
|
14
|
+
<a href="#features" class="inline-block px-2 py-1 text-slate-700 text-sm hover:text-slate-900 hover:bg-slate-100 rounded-lg">
|
|
15
|
+
Features
|
|
16
|
+
</a>
|
|
17
|
+
|
|
18
|
+
<a href="#testimonials" class="inline-block px-2 py-1 text-slate-700 text-sm hover:text-slate-900 hover:bg-slate-100 rounded-lg">
|
|
19
|
+
Testimonials
|
|
20
|
+
</a>
|
|
21
|
+
|
|
22
|
+
<a href="#pricing" class="inline-block px-2 py-1 text-slate-700 text-sm hover:text-slate-900 hover:bg-slate-100 rounded-lg">
|
|
23
|
+
Dashboard
|
|
24
|
+
</a>
|
|
25
|
+
|
|
26
|
+
<a href="/blog" class="inline-block px-2 py-1 text-slate-700 text-sm hover:text-slate-900 hover:bg-slate-100 rounded-lg">
|
|
27
|
+
Blog
|
|
28
|
+
</a>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div class="flex gap-x-5 items-center md:gap-x-8">
|
|
33
|
+
<div class="hidden md:block">
|
|
34
|
+
<a href="https://github.com/stacksjs/stacks/releases" class="inline-block px-2 py-1 text-slate-700 text-sm hover:text-slate-900 hover:bg-slate-100 rounded-lg">
|
|
35
|
+
Changelog
|
|
36
|
+
</a>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<a href="/docs" class="inline-flex items-center justify-center px-4 py-2 font-semibold text-sm text-white active:text-blue-100 hover:text-slate-100 bg-blue-600 active:bg-blue-800 hover:bg-blue-500 rounded-full focus-visible:outline-2 focus-visible:outline-blue-600 focus-visible:outline-offset-2 focus:outline-none">
|
|
40
|
+
<span>
|
|
41
|
+
Learn More
|
|
42
|
+
</span>
|
|
43
|
+
</a>
|
|
44
|
+
|
|
45
|
+
<div class="md:hidden -mr-1">
|
|
46
|
+
<!-- Mobile Navigation Component -->
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</nav>
|
|
50
|
+
</Container>
|
|
51
|
+
</header>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
// Hero section data
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<Container class="pb-16 pt-20 lg:pt-32 text-center">
|
|
6
|
+
<h1 class="mx-auto max-w-4xl font-display font-medium text-5xl text-slate-900 tracking-tight sm:text-7xl">
|
|
7
|
+
Develop modern
|
|
8
|
+
<span class="relative text-blue-600 whitespace-nowrap">
|
|
9
|
+
<svg
|
|
10
|
+
aria-hidden="true"
|
|
11
|
+
viewBox="0 0 418 42"
|
|
12
|
+
class="absolute left-0 top-2/3 pb-2 h-[0.54em] w-full fill-blue-300/70"
|
|
13
|
+
preserveAspectRatio="none"
|
|
14
|
+
>
|
|
15
|
+
<path d="M203.371.916c-26.013-2.078-76.686 1.963-124.73 9.946L67.3 12.749C35.421 18.062 18.2 21.766 6.004 25.934 1.244 27.561.828 27.778.874 28.61c.07 1.214.828 1.121 9.595-1.176 9.072-2.377 17.15-3.92 39.246-7.496C123.565 7.986 157.869 4.492 195.942 5.046c7.461.108 19.25 1.696 19.17 2.582-.107 1.183-7.874 4.31-25.75 10.366-21.992 7.45-35.43 12.534-36.701 13.884-2.173 2.308-.202 4.407 4.442 4.734 2.654.187 3.263.157 15.593-.78 35.401-2.686 57.944-3.488 88.365-3.143 46.327.526 75.721 2.23 130.788 7.584 19.787 1.924 20.814 1.98 24.557 1.332l.066-.011c1.201-.203 1.53-1.825.399-2.335-2.911-1.31-4.893-1.604-22.048-3.261-57.509-5.556-87.871-7.36-132.059-7.842-23.239-.254-33.617-.116-50.627.674-11.629.54-42.371 2.494-46.696 2.967-2.359.259 8.133-3.625 26.504-9.81 23.239-7.825 27.934-10.149 28.304-14.005.417-4.348-3.529-6-16.878-7.066Z" />
|
|
16
|
+
</svg>
|
|
17
|
+
<span class="relative">apps, clouds & libraries.</span><br>
|
|
18
|
+
</span>
|
|
19
|
+
Faster.
|
|
20
|
+
</h1>
|
|
21
|
+
<p class="mt-6 mx-auto max-w-2xl text-lg text-slate-700 tracking-tight">
|
|
22
|
+
Stacks is a type-safe full-stack framework for Web Artisans.
|
|
23
|
+
<br>Rapid development, for the best full-stack teams, and individuals.
|
|
24
|
+
</p>
|
|
25
|
+
<div class="flex gap-x-6 justify-center mt-10">
|
|
26
|
+
<a
|
|
27
|
+
href="/register"
|
|
28
|
+
class="inline-flex items-center justify-center px-4 py-2 font-semibold text-sm text-white active:text-blue-100 hover:text-slate-100 bg-blue-600 active:bg-blue-800 hover:bg-blue-500 rounded-full focus-visible:outline-2 focus-visible:outline-blue-600 focus-visible:outline-offset-2 focus:outline-none"
|
|
29
|
+
>
|
|
30
|
+
View Documentation
|
|
31
|
+
</a>
|
|
32
|
+
|
|
33
|
+
<a
|
|
34
|
+
href="https://www.youtube.com/watch?v=dQw4w9WgXcQ"
|
|
35
|
+
class="inline-flex items-center justify-center px-4 py-2 font-semibold text-slate-700 text-sm active:text-slate-600 hover:text-slate-900 active:bg-slate-100 ring-1 ring-slate-200 rounded-full focus-visible:outline-blue-600 focus-visible:ring-slate-300 focus:outline-none hover:ring-slate-300"
|
|
36
|
+
>
|
|
37
|
+
<svg
|
|
38
|
+
aria-hidden="true"
|
|
39
|
+
class="flex-none h-3 w-3 fill-blue-600 group-active:fill-current"
|
|
40
|
+
>
|
|
41
|
+
<path d="m9.997 6.91-7.583 3.447A1 1 0 0 1 1 9.447V2.553a1 1 0 0 1 1.414-.91L9.997 5.09c.782.355.782 1.465 0 1.82Z" />
|
|
42
|
+
</svg>
|
|
43
|
+
<span class="ml-3">Get Started</span>
|
|
44
|
+
</a>
|
|
45
|
+
</div>
|
|
46
|
+
</Container>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
interface LayoutProps {
|
|
3
|
+
inter?: string
|
|
4
|
+
lexend?: string
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const { inter = {, lexend = { } = defineProps<LayoutProps>()
|
|
8
|
+
|
|
9
|
+
subsets: ['latin'],
|
|
10
|
+
display: 'swap',
|
|
11
|
+
variable: '--font-inter',
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
subsets: ['latin'],
|
|
15
|
+
display: 'swap',
|
|
16
|
+
variable: '--font-lexend',
|
|
17
|
+
}
|
|
18
|
+
</script>
|
|
19
|
+
<html
|
|
20
|
+
lang="en"
|
|
21
|
+
class="h-full antialiased bg-white scroll-smooth {{ {{ }} }} inter.variable lexend.variable"
|
|
22
|
+
>
|
|
23
|
+
<body class="flex flex-col h-full">
|
|
24
|
+
<slot />
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
interface NavLinkProps {
|
|
3
|
+
href?: string
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const { href = '' } = defineProps<NavLinkProps>()
|
|
7
|
+
</script>
|
|
8
|
+
<a
|
|
9
|
+
href="{{ href }}"
|
|
10
|
+
class="inline-block px-2 py-1 text-slate-700 text-sm hover:text-slate-900 hover:bg-slate-100 rounded-lg"
|
|
11
|
+
>
|
|
12
|
+
<slot />
|
|
13
|
+
</a>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
interface PlanProps {
|
|
3
|
+
name?: string
|
|
4
|
+
price?: string
|
|
5
|
+
description?: string
|
|
6
|
+
href?: string
|
|
7
|
+
features?: any[]
|
|
8
|
+
featured?: boolean
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const { name = '', price = '', description = '', href = '', features = [], featured = false } = defineProps<PlanProps>()
|
|
12
|
+
</script>
|
|
13
|
+
<section
|
|
14
|
+
class="flex lg:order-none' flex-col 'lg:py-8' px-6 py-8 sm:px-8 bg-blue-600 rounded-3xl : ? 'order-first {{ }} featured"
|
|
15
|
+
>
|
|
16
|
+
<h3 class="mt-5 font-display text-lg text-white">
|
|
17
|
+
{{ name }}
|
|
18
|
+
</h3>
|
|
19
|
+
<p class="mt-2 text-base : ? 'text-slate-400' 'text-white' {{ }} featured">
|
|
20
|
+
{{ description }}
|
|
21
|
+
</p>
|
|
22
|
+
<p class="order-first font-display font-light text-5xl text-white tracking-tight">
|
|
23
|
+
{{ price }}
|
|
24
|
+
</p>
|
|
25
|
+
<ul
|
|
26
|
+
role="list"
|
|
27
|
+
class="flex order-last flex-col gap-y-3 mt-10 text-sm : ? 'text-slate-200' 'text-white' {{ }} featured"
|
|
28
|
+
>
|
|
29
|
+
@foreach(features as feature)
|
|
30
|
+
<li class="flex">
|
|
31
|
+
<span class="h-5 w-5 : ? 'text-slate-400' 'text-white' {{ }} featured i-hugeicons-checkmark-circle-02"></span>
|
|
32
|
+
<span class="ml-4">{{ feature }}</span>
|
|
33
|
+
</li>
|
|
34
|
+
@endforeach
|
|
35
|
+
</ul>
|
|
36
|
+
<a
|
|
37
|
+
href="{{ href }}"
|
|
38
|
+
class="inline-flex items-center justify-center mt-8 px-4 py-2 font-semibold text-slate-900 text-sm text-white active:text-slate-400 active:text-slate-600 active:bg-blue-200 hover:bg-blue-50 ring-slate-700 rounded-full active:ring-slate-700 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white' focus-visible:outline-white' focus:outline-none hover:ring-slate-500 : ? 'bg-white 'ring-1 {{ }} featured"
|
|
39
|
+
aria-label="Get started with the {{ name }} plan for {{ price }}"
|
|
40
|
+
>
|
|
41
|
+
Get started
|
|
42
|
+
</a>
|
|
43
|
+
</section>
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
interface PricingProps {
|
|
3
|
+
plans?: string
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const { plans = [ } = defineProps<PricingProps>()
|
|
7
|
+
|
|
8
|
+
{
|
|
9
|
+
name: 'Hobby (Early Bird Pricing)',
|
|
10
|
+
price: '$19',
|
|
11
|
+
description: 'Get a lifetime access with all upgrades included in the future.',
|
|
12
|
+
href: '/register',
|
|
13
|
+
features: [
|
|
14
|
+
'Send 10 quotes and invoices',
|
|
15
|
+
'Connect up to 2 bank accounts',
|
|
16
|
+
'Track up to 15 expenses per month',
|
|
17
|
+
'Manual payroll support',
|
|
18
|
+
'Export up to 3 reports',
|
|
19
|
+
],
|
|
20
|
+
featured: false,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'Pro (Early Bird Pricing)',
|
|
24
|
+
price: '$39',
|
|
25
|
+
description: 'Perfect for small / medium sized businesses.',
|
|
26
|
+
href: '/register',
|
|
27
|
+
features: [
|
|
28
|
+
'Send 25 quotes and invoices',
|
|
29
|
+
'Connect up to 5 bank accounts',
|
|
30
|
+
'Track up to 50 expenses per month',
|
|
31
|
+
'Automated payroll support',
|
|
32
|
+
'Export up to 12 reports',
|
|
33
|
+
'Bulk reconcile transactions',
|
|
34
|
+
'Track in multiple currencies',
|
|
35
|
+
],
|
|
36
|
+
featured: true,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Enterprise',
|
|
40
|
+
price: 'Custom',
|
|
41
|
+
description: 'Contact us / subscribe via github sponsors',
|
|
42
|
+
href: '/register',
|
|
43
|
+
features: [
|
|
44
|
+
'Send unlimited quotes and invoices',
|
|
45
|
+
'Connect up to 15 bank accounts',
|
|
46
|
+
'Track up to 200 expenses per month',
|
|
47
|
+
'Automated payroll support',
|
|
48
|
+
'Export up to 25 reports, including TPS',
|
|
49
|
+
],
|
|
50
|
+
featured: false,
|
|
51
|
+
},
|
|
52
|
+
]
|
|
53
|
+
</script>
|
|
54
|
+
<section
|
|
55
|
+
id="pricing"
|
|
56
|
+
aria-label="Pricing"
|
|
57
|
+
class="py-20 sm:py-32 bg-slate-900"
|
|
58
|
+
>
|
|
59
|
+
<Container>
|
|
60
|
+
<div class="md:text-center">
|
|
61
|
+
<h2 class="font-display text-3xl text-white tracking-tight sm:text-4xl">
|
|
62
|
+
<span class="relative whitespace-nowrap">
|
|
63
|
+
<svg
|
|
64
|
+
aria-hidden="true"
|
|
65
|
+
viewBox="0 0 281 40"
|
|
66
|
+
preserveAspectRatio="none"
|
|
67
|
+
class="absolute left-0 top-1/2 h-[1em] w-full fill-blue-400"
|
|
68
|
+
>
|
|
69
|
+
<path
|
|
70
|
+
fill-rule="evenodd"
|
|
71
|
+
clip-rule="evenodd"
|
|
72
|
+
d="M240.172 22.994c-8.007 1.246-15.477 2.23-31.26 4.114-18.506 2.21-26.323 2.977-34.487 3.386-2.971.149-3.727.324-6.566 1.523-15.124 6.388-43.775 9.404-69.425 7.31-26.207-2.14-50.986-7.103-78-15.624C10.912 20.7.988 16.143.734 14.657c-.066-.381.043-.344 1.324.456 10.423 6.506 49.649 16.322 77.8 19.468 23.708 2.65 38.249 2.95 55.821 1.156 9.407-.962 24.451-3.773 25.101-4.692.074-.104.053-.155-.058-.135-1.062.195-13.863-.271-18.848-.687-16.681-1.389-28.722-4.345-38.142-9.364-15.294-8.15-7.298-19.232 14.802-20.514 16.095-.934 32.793 1.517 47.423 6.96 13.524 5.033 17.942 12.326 11.463 18.922l-.859.874.697-.006c2.681-.026 15.304-1.302 29.208-2.953 25.845-3.07 35.659-4.519 54.027-7.978 9.863-1.858 11.021-2.048 13.055-2.145a61.901 61.901 0 0 0 4.506-.417c1.891-.259 2.151-.267 1.543-.047-.402.145-2.33.913-4.285 1.707-4.635 1.882-5.202 2.07-8.736 2.903-3.414.805-19.773 3.797-26.404 4.829Zm40.321-9.93c.1-.066.231-.085.29-.041.059.043-.024.096-.183.119-.177.024-.219-.007-.107-.079ZM172.299 26.22c9.364-6.058 5.161-12.039-12.304-17.51-11.656-3.653-23.145-5.47-35.243-5.576-22.552-.198-33.577 7.462-21.321 14.814 12.012 7.205 32.994 10.557 61.531 9.831 4.563-.116 5.372-.288 7.337-1.559Z"
|
|
73
|
+
/>
|
|
74
|
+
</svg>
|
|
75
|
+
<span class="relative">Simple pricing,</span>
|
|
76
|
+
</span>
|
|
77
|
+
for everyone.
|
|
78
|
+
</h2>
|
|
79
|
+
<p class="mt-4 text-lg text-slate-400">
|
|
80
|
+
It doesn't matter what size your business is, our software won't
|
|
81
|
+
work well for you.
|
|
82
|
+
</p>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="grid gap-y-10 grid-cols-1 lg:grid-cols-3 xl:gap-x-8 -mx-4 mt-16 sm:mx-auto lg:-mx-8 xl:mx-0 max-w-2xl lg:max-w-none">
|
|
85
|
+
@foreach(plans as plan)
|
|
86
|
+
<section
|
|
87
|
+
class="flex lg:order-none' flex-col 'lg:py-8' px-6 py-8 sm:px-8 bg-blue-600 rounded-3xl : ? 'order-first {{ }} plan.featured"
|
|
88
|
+
>
|
|
89
|
+
<h3 class="mt-5 font-display text-lg text-white">
|
|
90
|
+
{{ plan.name }}
|
|
91
|
+
</h3>
|
|
92
|
+
<p class="mt-2 text-base : ? 'text-slate-400' 'text-white' {{ }} plan.featured">
|
|
93
|
+
{{ plan.description }}
|
|
94
|
+
</p>
|
|
95
|
+
<p class="order-first font-display font-light text-5xl text-white tracking-tight">
|
|
96
|
+
{{ plan.price }}
|
|
97
|
+
</p>
|
|
98
|
+
<ul
|
|
99
|
+
role="list"
|
|
100
|
+
class="flex order-last flex-col gap-y-3 mt-10 text-sm : ? 'text-slate-200' 'text-white' {{ }} plan.featured"
|
|
101
|
+
>
|
|
102
|
+
@foreach(plan.features as feature)
|
|
103
|
+
<li class="flex">
|
|
104
|
+
<span class="h-5 w-5 : ? 'text-slate-400' 'text-white' {{ }} i-hugeicons-checkmark-circle-02 plan.featured"></span>
|
|
105
|
+
<span class="ml-4">{{ feature }}</span>
|
|
106
|
+
</li>
|
|
107
|
+
@endforeach
|
|
108
|
+
</ul>
|
|
109
|
+
<a
|
|
110
|
+
href="{{ plan.href }}"
|
|
111
|
+
class="inline-flex items-center justify-center mt-8 px-4 py-2 font-semibold text-slate-900 text-sm text-white hover:bg-blue-50' ring-slate-700 rounded-full focus-visible:outline-2 focus-visible:outline-offset-2 focus:outline-none hover:ring-slate-500' : ? 'bg-white 'ring-1 {{ }} plan.featured"
|
|
112
|
+
aria-label="Get started with the {{ plan.name }} plan for {{ plan.price }}"
|
|
113
|
+
>
|
|
114
|
+
Get started
|
|
115
|
+
</a>
|
|
116
|
+
</section>
|
|
117
|
+
@endforeach
|
|
118
|
+
</div>
|
|
119
|
+
</Container>
|
|
120
|
+
</section>
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
interface PrimaryFeaturesProps {
|
|
3
|
+
features?: string
|
|
4
|
+
selectedIndex?: number
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const { features = [, selectedIndex = 0 } = defineProps<PrimaryFeaturesProps>()
|
|
8
|
+
|
|
9
|
+
{
|
|
10
|
+
title: 'Frontend',
|
|
11
|
+
description: 'Powered by a progressive UI Engine, building application interfaces has never been easier.',
|
|
12
|
+
image: 'https://salient.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fpayroll.517af4e7.png&w=1920&q=75',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
title: 'Backend',
|
|
16
|
+
description: 'Building serverless APIs has never been simpler. Focus on your business logic, not your infrastructure.',
|
|
17
|
+
image: 'https://salient.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fpayroll.517af4e7.png&w=1920&q=75',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
title: 'Cloud',
|
|
21
|
+
description: 'Lorem ipsum dolor sit, amet consectetur adipisicing elit. Tempora in cum blanditiis? Qui omnis unde.',
|
|
22
|
+
image: 'https://salient.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fpayroll.517af4e7.png&w=1920&q=75',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
title: 'DX',
|
|
26
|
+
description: 'Lorem ipsum dolor sit, amet consectetur adipisicing elit. Tempora in cum blanditiis? Qui omnis unde.',
|
|
27
|
+
image: 'https://salient.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fpayroll.517af4e7.png&w=1920&q=75',
|
|
28
|
+
},
|
|
29
|
+
]
|
|
30
|
+
</script>
|
|
31
|
+
<section id="features" aria-label="Features for running your books" class="overflow-hidden relative pb-28 pt-20 sm:py-32 bg-blue-600">
|
|
32
|
+
<Container class="relative">
|
|
33
|
+
<div class="md:mx-auto max-w-2xl xl:max-w-none md:text-center">
|
|
34
|
+
<h2 class="font-display text-3xl text-white tracking-tight sm:text-4xl md:text-5xl">
|
|
35
|
+
Build. Ship. Grow.
|
|
36
|
+
</h2>
|
|
37
|
+
<p class="mt-6 text-blue-100 text-lg tracking-tight">
|
|
38
|
+
Stacks helps you build, ship, and grow your SaaS business with its powerful set of tools.
|
|
39
|
+
</p>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<div class="grid gap-y-2 grid-cols-1 items-center sm:gap-y-6 lg:grid-cols-12 mt-16 pt-10 md:mt-20 lg:pt-0">
|
|
43
|
+
<!-- Tab List -->
|
|
44
|
+
<div class="flex overflow-x-auto sm:overflow-visible lg:col-span-5 -mx-4 mt-16 pb-4 sm:mx-0 sm:pb-0">
|
|
45
|
+
<div class="flex lg:block relative z-10 gap-x-4 lg:gap-x-0 lg:gap-y-1 px-4 sm:mx-auto sm:px-0 lg:mx-0 whitespace-nowrap lg:whitespace-normal">
|
|
46
|
+
@foreach(features as feature)
|
|
47
|
+
<div class="relative px-4 py-1 lg:p-6 'hover:bg-white/10 lg:bg-white/10 lg:hover:bg-white/5' rounded-full lg:ring-1 lg:ring-inset lg:ring-white/10' lg:rounded-l-xl lg:rounded-r-none selectedIndex : ? 'bg-white {{ }} == group loop.index">
|
|
48
|
+
<h3>
|
|
49
|
+
<button class="font-display text-lg lg:text-white' lg:text-white' hover:text-white selectedIndex : ? 'text-blue-100 'text-blue-600 {{ }} == loop.index" data-action="select-tab" data-index="{{ loop.index }}">
|
|
50
|
+
<span class="absolute inset-0 rounded-full lg:rounded-l-xl lg:rounded-r-none"></span>
|
|
51
|
+
{{ feature.title }}
|
|
52
|
+
</button>
|
|
53
|
+
</h3>
|
|
54
|
+
<p class="hidden lg:block mt-2 text-sm group-hover:text-white' selectedIndex : ? 'text-blue-100 'text-white' {{ }} == loop.index">
|
|
55
|
+
{{ feature.description }}
|
|
56
|
+
</p>
|
|
57
|
+
</div>
|
|
58
|
+
@endforeach
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<!-- Tab Panels -->
|
|
63
|
+
<div class="lg:col-span-7">
|
|
64
|
+
@foreach(features as feature)
|
|
65
|
+
<div class="selectedIndex : != ? '' 'hidden' {{ }} loop.index">
|
|
66
|
+
<div class="lg:hidden relative sm:px-6">
|
|
67
|
+
<div class="absolute bottom-[-4.25rem] top-[-6.5rem] sm:inset-x-0 bg-white/10 ring-1 ring-inset ring-white/10 sm:rounded-t-xl -inset-x-4"></div>
|
|
68
|
+
<p class="relative mx-auto max-w-2xl text-base text-white sm:text-center">
|
|
69
|
+
{{ feature.description }}
|
|
70
|
+
</p>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="overflow-hidden mt-10 lg:mt-0 w-[45rem] sm:w-auto lg:w-[67.8125rem] bg-slate-50 rounded-xl shadow-blue-900/20 shadow-xl">
|
|
73
|
+
<img src="{{ feature.image }}" alt="" class="w-full">
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
@endforeach
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</Container>
|
|
80
|
+
</section>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
interface PrimaryFeatures2Props {
|
|
3
|
+
backgroundImage?: string
|
|
4
|
+
screenshotPayroll?: string
|
|
5
|
+
features?: string
|
|
6
|
+
selectedIndex?: number
|
|
7
|
+
tabOrientation?: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { backgroundImage = '/images/screenshots/background-features.jpg', screenshotPayroll = '/images/screenshots/payroll.webp', features = [, selectedIndex = 0, tabOrientation = 'vertical' } = defineProps<PrimaryFeatures2Props>()
|
|
11
|
+
|
|
12
|
+
{
|
|
13
|
+
title: 'Payroll',
|
|
14
|
+
description: "Keep track of everyone's salaries and whether or not they've been paid. Direct deposit not supported.",
|
|
15
|
+
image: screenshotPayroll,
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
title: 'Claim expenses',
|
|
19
|
+
description: "All of your receipts organized into one place, as long as you don't mind typing in the data by hand.",
|
|
20
|
+
image: '',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
title: 'VAT handling',
|
|
24
|
+
description: "We only sell our software to companies who don't deal with VAT at all, so technically we do all the VAT stuff they need.",
|
|
25
|
+
image: '',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
title: 'Reporting',
|
|
29
|
+
description: 'Easily export your data into an Excel spreadsheet where you can do whatever the hell you want with it.',
|
|
30
|
+
image: '',
|
|
31
|
+
},
|
|
32
|
+
]
|
|
33
|
+
</script>
|
|
34
|
+
<section
|
|
35
|
+
id="features"
|
|
36
|
+
aria-label="Features for running your books"
|
|
37
|
+
class="overflow-hidden relative pb-28 pt-20 sm:py-32 bg-blue-600"
|
|
38
|
+
>
|
|
39
|
+
<img
|
|
40
|
+
class="absolute left-1/2 top-1/2 max-w-none translate-x-[-44%] translate-y-[-42%]"
|
|
41
|
+
src="{{ backgroundImage }}"
|
|
42
|
+
alt=""
|
|
43
|
+
width="2245"
|
|
44
|
+
height="1636"
|
|
45
|
+
>
|
|
46
|
+
<Container class="relative">
|
|
47
|
+
<div class="md:mx-auto max-w-2xl xl:max-w-none md:text-center">
|
|
48
|
+
<h2 class="font-display text-3xl text-white tracking-tight sm:text-4xl md:text-5xl">
|
|
49
|
+
Everything you need to run your books.
|
|
50
|
+
</h2>
|
|
51
|
+
<p class="mt-6 text-blue-100 text-lg tracking-tight">
|
|
52
|
+
Well everything you need if you aren't that picky about minor
|
|
53
|
+
details like tax compliance.
|
|
54
|
+
</p>
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<div class="grid gap-y-2 grid-cols-1 items-center sm:gap-y-6 lg:grid-cols-12 mt-16 pt-10 md:mt-20 lg:pt-0">
|
|
58
|
+
<div class="flex overflow-x-auto sm:overflow-visible lg:col-span-5 -mx-4 pb-4 sm:mx-0 sm:pb-0">
|
|
59
|
+
<div class="flex lg:block relative z-10 gap-x-4 lg:gap-x-0 lg:gap-y-1 px-4 sm:mx-auto sm:px-0 lg:mx-0 whitespace-nowrap lg:whitespace-normal">
|
|
60
|
+
@foreach(features as feature)
|
|
61
|
+
<div class="relative px-4 py-1 lg:p-6 'hover:bg-white/10 lg:bg-white/10 lg:hover:bg-white/5' rounded-full lg:ring-1 lg:ring-inset lg:ring-white/10' lg:rounded-l-xl lg:rounded-r-none selectedIndex : ? 'bg-white {{ }} == group loop.index">
|
|
62
|
+
<h3>
|
|
63
|
+
<button class="font-display text-lg lg:text-white' lg:text-white' hover:text-white selectedIndex : ? 'text-blue-100 'text-blue-600 {{ }} == loop.index" data-action="select-tab" data-index="{{ loop.index }}">
|
|
64
|
+
<span class="absolute inset-0 rounded-full lg:rounded-l-xl lg:rounded-r-none"></span>
|
|
65
|
+
{{ feature.title }}
|
|
66
|
+
</button>
|
|
67
|
+
</h3>
|
|
68
|
+
@if(tabOrientation == 'vertical')
|
|
69
|
+
<p class="hidden lg:block mt-2 text-sm group-hover:text-white' selectedIndex : ? 'text-blue-100 'text-white' {{ }} == loop.index">
|
|
70
|
+
{{ feature.description }}
|
|
71
|
+
</p>
|
|
72
|
+
@endif
|
|
73
|
+
</div>
|
|
74
|
+
@endforeach
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
<div class="lg:col-span-7">
|
|
79
|
+
@foreach(features as feature)
|
|
80
|
+
<div class="selectedIndex : != ? '' 'hidden' {{ }} loop.index">
|
|
81
|
+
<div class="lg:hidden relative sm:px-6">
|
|
82
|
+
<div class="absolute bottom-[-4.25rem] top-[-6.5rem] sm:inset-x-0 bg-white/10 ring-1 ring-inset ring-white/10 sm:rounded-t-xl -inset-x-4"></div>
|
|
83
|
+
<p class="relative mx-auto max-w-2xl text-base text-white sm:text-center">
|
|
84
|
+
{{ feature.description }}
|
|
85
|
+
</p>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<div class="overflow-hidden mt-10 lg:mt-0 w-[45rem] sm:w-auto lg:w-[67.8125rem] bg-slate-50 rounded-xl shadow-blue-900/20 shadow-xl">
|
|
89
|
+
@if(feature.image)
|
|
90
|
+
<img class="w-full" src="{{ feature.image }}" alt="">
|
|
91
|
+
@endif
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
@endforeach
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</Container>
|
|
98
|
+
</section>
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
interface SecondaryFeaturesProps {
|
|
3
|
+
features?: string
|
|
4
|
+
selectedIndex?: number
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const { features = [, selectedIndex = 0 } = defineProps<SecondaryFeaturesProps>()
|
|
8
|
+
|
|
9
|
+
{
|
|
10
|
+
name: 'Dashboard',
|
|
11
|
+
summary: 'The UI to your application.',
|
|
12
|
+
description: 'Whether you are a developer or a client, The Dashboard visualizes your data. Easily extend your admin panel.',
|
|
13
|
+
image: 'https://salient.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fprofit-loss.2a2f85d5.png&w=1200&q=75',
|
|
14
|
+
icon: '',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'Buddy CLI',
|
|
18
|
+
summary: 'The Stacks runtime.',
|
|
19
|
+
description: "The Buddy toolkit makes it easy to interact with all your application needs. From development to releases and upgrades, this handy yet incredible tool is the last thing you'll ever need.",
|
|
20
|
+
image: 'https://salient.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fprofit-loss.2a2f85d5.png&w=1200&q=75',
|
|
21
|
+
icon: '',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'CI/CD',
|
|
25
|
+
summary: 'Streamline Your Deployment Process',
|
|
26
|
+
description: 'Embrace the ease of our CI/CD solutions, designed to simplify your deployment and release management. With Stacks, you can focus on the what and why of your project, leaving the how to us.',
|
|
27
|
+
image: 'https://salient.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fprofit-loss.2a2f85d5.png&w=1200&q=75',
|
|
28
|
+
icon: '',
|
|
29
|
+
},
|
|
30
|
+
]
|
|
31
|
+
</script>
|
|
32
|
+
<section id="secondary-features" aria-label="Features for simplifying everyday business tasks" class="pb-14 pt-20 sm:pb-20 sm:pt-32 lg:pb-32">
|
|
33
|
+
<Container>
|
|
34
|
+
<div class="mx-auto max-w-2xl md:text-center">
|
|
35
|
+
<h2 class="font-display text-3xl text-slate-900 tracking-tight sm:text-4xl">
|
|
36
|
+
A Developer Experience Like No Other
|
|
37
|
+
</h2>
|
|
38
|
+
<p class="mt-4 text-lg text-slate-700 tracking-tight">
|
|
39
|
+
Remove the boilerplate. Remove the repetition. Focus on what matters.
|
|
40
|
+
</p>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<!-- FeaturesDesktop -->
|
|
44
|
+
<div class="hidden lg:block lg:mt-20">
|
|
45
|
+
<div class="grid gap-x-8 grid-cols-3 pt-12">
|
|
46
|
+
@foreach(features as feature)
|
|
47
|
+
<div class="relative">
|
|
48
|
+
<div class="w-9 rounded-lg selectedIndex : ? 'bg-blue-600' 'bg-slate-500' {{ }} == loop.index">
|
|
49
|
+
<svg aria-hidden="true" class="h-9 w-9" fill="none">
|
|
50
|
+
{{ feature.icon }}
|
|
51
|
+
</svg>
|
|
52
|
+
</div>
|
|
53
|
+
<h3 class="mt-6 font-medium text-sm selectedIndex : ? 'text-blue-600' 'text-slate-600' {{ }} == loop.index">
|
|
54
|
+
<button data-action="select-feature" data-index="{{ loop.index }}">{{ feature.name }}</button>
|
|
55
|
+
</h3>
|
|
56
|
+
<p class="mt-2 font-display text-slate-900 text-xl">
|
|
57
|
+
{{ feature.summary }}
|
|
58
|
+
</p>
|
|
59
|
+
<p class="mt-4 text-slate-600 text-sm">
|
|
60
|
+
{{ feature.description }}
|
|
61
|
+
</p>
|
|
62
|
+
</div>
|
|
63
|
+
@endforeach
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<div class="overflow-hidden relative mt-20 px-14 py-16 xl:px-16 bg-slate-200 rounded-4xl">
|
|
67
|
+
<div class="flex -mx-5">
|
|
68
|
+
@foreach(features as feature)
|
|
69
|
+
<div class="px-5 duration-500 ease-in-out transition selectedIndex : != ? '' 'opacity-60' {{ }} loop.index" style="transform: translateX(-{{ selectedIndex * 100 }}%)">
|
|
70
|
+
<div class="overflow-hidden w-[52.75rem] bg-white ring-1 ring-slate-500/10 rounded-xl shadow-lg shadow-slate-900/5">
|
|
71
|
+
<img class="w-full" src="{{ feature.image }}" alt="" sizes="52.75rem">
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
@endforeach
|
|
75
|
+
</div>
|
|
76
|
+
<div class="absolute inset-0 ring-1 ring-inset ring-slate-900/10 rounded-4xl pointer-events-none"></div>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</Container>
|
|
80
|
+
</section>
|