@nextworks/blocks-templates 0.2.0-alpha.6 → 0.2.0-alpha.8

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.
Files changed (70) hide show
  1. package/dist/templates/digitalagency/PresetThemeVars.jsx +31 -0
  2. package/dist/templates/digitalagency/components/About.jsx +43 -0
  3. package/dist/templates/digitalagency/components/CTA.jsx +31 -0
  4. package/dist/templates/digitalagency/components/Contact.d.ts.map +1 -1
  5. package/dist/templates/digitalagency/components/Contact.jsx +89 -0
  6. package/dist/templates/digitalagency/components/Footer.d.ts +8 -0
  7. package/dist/templates/digitalagency/components/Footer.jsx +58 -0
  8. package/dist/templates/digitalagency/components/Hero.d.ts +7 -0
  9. package/dist/templates/digitalagency/components/Hero.jsx +71 -0
  10. package/dist/templates/digitalagency/components/Navbar.d.ts +20 -0
  11. package/dist/templates/digitalagency/components/Navbar.d.ts.map +1 -1
  12. package/dist/templates/digitalagency/components/Navbar.jsx +85 -0
  13. package/dist/templates/digitalagency/components/NetworkPattern.d.ts +7 -0
  14. package/dist/templates/digitalagency/components/NetworkPattern.d.ts.map +1 -0
  15. package/dist/templates/digitalagency/components/NetworkPattern.jsx +125 -0
  16. package/dist/templates/digitalagency/components/Portfolio.jsx +104 -0
  17. package/dist/templates/gallery/PresetThemeVars.d.ts +15 -0
  18. package/dist/templates/gallery/PresetThemeVars.jsx +33 -0
  19. package/dist/templates/gallery/page.d.ts.map +1 -1
  20. package/dist/templates/gallery/page.jsx +215 -0
  21. package/dist/templates/productlaunch/PresetThemeVars.jsx +30 -0
  22. package/dist/templates/productlaunch/components/About.d.ts.map +1 -1
  23. package/dist/templates/productlaunch/components/About.jsx +55 -0
  24. package/dist/templates/productlaunch/components/CTA.jsx +37 -0
  25. package/dist/templates/productlaunch/components/Contact.d.ts.map +1 -1
  26. package/dist/templates/productlaunch/components/Contact.jsx +91 -0
  27. package/dist/templates/productlaunch/components/FAQ.d.ts +5 -0
  28. package/dist/templates/productlaunch/components/FAQ.d.ts.map +1 -1
  29. package/dist/templates/productlaunch/components/FAQ.jsx +55 -0
  30. package/dist/templates/productlaunch/components/Features.d.ts +5 -0
  31. package/dist/templates/productlaunch/components/Features.d.ts.map +1 -1
  32. package/dist/templates/productlaunch/components/Features.jsx +50 -0
  33. package/dist/templates/productlaunch/components/Footer.d.ts +5 -0
  34. package/dist/templates/productlaunch/components/Footer.jsx +102 -0
  35. package/dist/templates/productlaunch/components/Hero.d.ts +5 -0
  36. package/dist/templates/productlaunch/components/Hero.d.ts.map +1 -1
  37. package/dist/templates/productlaunch/components/Hero.jsx +68 -0
  38. package/dist/templates/productlaunch/components/Navbar.d.ts +25 -0
  39. package/dist/templates/productlaunch/components/Navbar.jsx +81 -0
  40. package/dist/templates/productlaunch/components/Pricing.d.ts +5 -0
  41. package/dist/templates/productlaunch/components/Pricing.jsx +76 -0
  42. package/dist/templates/productlaunch/components/ProcessTimeline.d.ts +5 -0
  43. package/dist/templates/productlaunch/components/ProcessTimeline.jsx +62 -0
  44. package/dist/templates/productlaunch/components/ServicesGrid.d.ts +5 -0
  45. package/dist/templates/productlaunch/components/ServicesGrid.jsx +40 -0
  46. package/dist/templates/productlaunch/components/Team.d.ts +5 -0
  47. package/dist/templates/productlaunch/components/Team.jsx +71 -0
  48. package/dist/templates/productlaunch/components/Testimonials.d.ts +5 -0
  49. package/dist/templates/productlaunch/components/Testimonials.jsx +54 -0
  50. package/dist/templates/productlaunch/components/TrustBadges.d.ts +5 -0
  51. package/dist/templates/productlaunch/components/TrustBadges.jsx +49 -0
  52. package/dist/templates/saasdashboard/PresetThemeVars.jsx +29 -0
  53. package/dist/templates/saasdashboard/components/Contact.jsx +89 -0
  54. package/dist/templates/saasdashboard/components/Dashboard.d.ts.map +1 -0
  55. package/dist/templates/saasdashboard/components/Dashboard.jsx +168 -0
  56. package/dist/templates/saasdashboard/components/Features.jsx +54 -0
  57. package/dist/templates/saasdashboard/components/Footer.jsx +51 -0
  58. package/dist/templates/saasdashboard/components/Hero.d.ts.map +1 -1
  59. package/dist/templates/saasdashboard/components/Hero.jsx +69 -0
  60. package/dist/templates/saasdashboard/components/Hero_mask.d.ts.map +1 -1
  61. package/dist/templates/saasdashboard/components/Hero_mask.jsx +84 -0
  62. package/dist/templates/saasdashboard/components/Navbar.d.ts +25 -0
  63. package/dist/templates/saasdashboard/components/Navbar.d.ts.map +1 -1
  64. package/dist/templates/saasdashboard/components/Navbar.jsx +83 -0
  65. package/dist/templates/saasdashboard/components/Pricing.jsx +64 -0
  66. package/dist/templates/saasdashboard/components/SmoothScroll.d.ts.map +1 -0
  67. package/dist/templates/saasdashboard/components/SmoothScroll.jsx +86 -0
  68. package/dist/templates/saasdashboard/components/Testimonials.jsx +39 -0
  69. package/dist/templates/saasdashboard/components/TrustBadges.jsx +36 -0
  70. package/package.json +34 -34
@@ -0,0 +1,104 @@
1
+ "use client";
2
+ import React from "react";
3
+ import { PortfolioSimple } from "@nextworks/blocks-sections";
4
+ // Default portfolio data without images - Digital Marketing Agency focused
5
+ const defaultProjects = [
6
+ {
7
+ id: 1,
8
+ title: "TechStartup Growth Campaign",
9
+ category: "Digital Marketing",
10
+ industry: "Technology",
11
+ result: "+300% Leads",
12
+ description: "Comprehensive digital marketing campaign that increased qualified leads by 300% through targeted SEO, social media marketing, and conversion optimization strategies.",
13
+ tags: ["SEO", "Social Media", "PPC", "Analytics"],
14
+ color: "blue",
15
+ url: "#",
16
+ },
17
+ {
18
+ id: 2,
19
+ title: "E-Commerce Brand Launch",
20
+ category: "Brand Marketing",
21
+ industry: "Retail",
22
+ result: "+250% Revenue",
23
+ description: "Complete brand launch and digital marketing strategy for a new e-commerce platform, resulting in 250% revenue growth within the first 6 months.",
24
+ tags: ["Brand Strategy", "Content Marketing", "Influencer", "Email"],
25
+ color: "green",
26
+ url: "#",
27
+ },
28
+ {
29
+ id: 3,
30
+ title: "Healthcare Practice Expansion",
31
+ category: "Local Marketing",
32
+ industry: "Healthcare",
33
+ result: "+180% Patients",
34
+ description: "Local SEO and digital marketing campaign that helped a healthcare practice expand to three new locations and increase patient acquisition by 180%.",
35
+ tags: ["Local SEO", "Google Ads", "Reputation", "Content"],
36
+ color: "purple",
37
+ url: "#",
38
+ },
39
+ {
40
+ id: 4,
41
+ title: "SaaS Product Launch",
42
+ category: "B2B Marketing",
43
+ industry: "Software",
44
+ result: "+400% Signups",
45
+ description: "Strategic B2B marketing campaign for a SaaS product launch, achieving 400% increase in trial signups through targeted content marketing and account-based marketing.",
46
+ tags: ["B2B Strategy", "Content", "LinkedIn Ads", "Webinars"],
47
+ color: "indigo",
48
+ url: "#",
49
+ },
50
+ {
51
+ id: 5,
52
+ title: "Restaurant Chain Rebrand",
53
+ category: "Brand Marketing",
54
+ industry: "Food & Beverage",
55
+ result: "+220% Foot Traffic",
56
+ description: "Complete rebrand and digital marketing transformation for a restaurant chain, resulting in 220% increase in foot traffic and 150% growth in online orders.",
57
+ tags: ["Rebranding", "Social Media", "Local SEO", "Delivery"],
58
+ color: "red",
59
+ url: "#",
60
+ },
61
+ {
62
+ id: 6,
63
+ title: "Fitness App User Acquisition",
64
+ category: "Mobile Marketing",
65
+ industry: "Health & Fitness",
66
+ result: "+500% Downloads",
67
+ description: "Mobile-first marketing campaign that achieved 500% increase in app downloads through app store optimization, influencer partnerships, and targeted social media advertising.",
68
+ tags: ["ASO", "Influencer", "Social Ads", "Retention"],
69
+ color: "yellow",
70
+ url: "#",
71
+ },
72
+ ];
73
+ const defaultFilters = [
74
+ "All Projects",
75
+ "Digital Marketing",
76
+ "Brand Marketing",
77
+ "B2B Marketing",
78
+ "Local Marketing",
79
+ "Mobile Marketing",
80
+ ];
81
+ // Portfolio Preset Component
82
+ export function Portfolio() {
83
+ return (<section id="portfolio">
84
+ <PortfolioSimple enableMotion={true} projects={defaultProjects} filters={defaultFilters} sectionTitle="Our Portfolio" sectionSubtitle="Discover our successful projects that have transformed businesses across various industries with innovative digital solutions." ctaTitle="Ready to Start Your Project?" ctaDescription="Let's work together to create something amazing that drives real results for your business." section={{
85
+ className: "py-16 md:py-24 bg-background",
86
+ }} title={{
87
+ className: "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins text-[var(--heading-fg)]",
88
+ }} subtitle={{
89
+ className: "text-xl md:text-2xl font-inter text-[var(--subheading-fg)] max-w-2xl mx-auto leading-relaxed",
90
+ }} ctaTitleStyle={{
91
+ className: "text-2xl md:text-3xl font-bold text-[var(--heading-fg)]",
92
+ }} ctaDescriptionStyle={{
93
+ className: "text-lg md:text-xl text-[var(--subheading-fg)] max-w-md mx-auto",
94
+ }} tagStyle={{
95
+ className: "px-2 py-1 text-xs rounded-full border-[var(--badge-border)] text-[var(--badge-fg)] bg-[var(--badge-bg)]",
96
+ }} ctaSection={{
97
+ className: "space-y-6 text-center mt-16 pt-12 border-t border-[var(--footer-border)]",
98
+ }} cta1Label="Start Your Project" cta1Href="#contact" cta2Label="View All Projects" cta2Href="#portfolio" cta1Button={{
99
+ className: "h-10 px-6 flex items-center justify-center font-medium shadow-md hover:shadow-lg transition-all duration-200 hover:-translate-y-0.5 [--btn-bg:theme(colors.fuchsia.600)] hover:[--btn-hover-bg:theme(colors.fuchsia.700)] [--btn-fg:theme(colors.white)] hover:[--btn-hover-fg:theme(colors.white)]",
100
+ }} cta2Button={{
101
+ className: "h-10 px-6 flex items-center justify-center font-medium shadow-md hover:shadow-lg transition-all duration-200 hover:-translate-y-0.5 border-2 [--btn-bg:transparent] [--btn-fg:theme(colors.fuchsia.700)] [--btn-border:theme(colors.fuchsia.600)] hover:[--btn-hover-bg:theme(colors.fuchsia.600)] hover:[--btn-hover-fg:theme(colors.white)] dark:[--btn-fg:theme(colors.fuchsia.400)] dark:[--btn-border:theme(colors.fuchsia.500)] dark:hover:[--btn-hover-bg:theme(colors.fuchsia.500)] dark:hover:[--btn-hover-fg:theme(colors.white)]",
102
+ }} ariaLabel="Portfolio showcase section"/>
103
+ </section>);
104
+ }
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ type Props = React.PropsWithChildren<{
3
+ className?: string;
4
+ }>;
5
+ /**
6
+ * Gallery template token-bridge wrapper.
7
+ *
8
+ * Maps component-level CSS variables (btn, input, card, etc.) to the
9
+ * EnhancedThemeProvider token variables applied on :root (e.g., --primary,
10
+ * --foreground, --card, --ring).
11
+ * Colors are driven by the selected Color Theme, not a fixed preset palette.
12
+ */
13
+ export declare function PresetThemeVars({ className, children }: Props): React.JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=PresetThemeVars.d.ts.map
@@ -0,0 +1,33 @@
1
+ import React from "react";
2
+ import { cn } from "@nextworks/blocks-core";
3
+ /**
4
+ * Gallery template token-bridge wrapper.
5
+ *
6
+ * Maps component-level CSS variables (btn, input, card, etc.) to the
7
+ * EnhancedThemeProvider token variables applied on :root (e.g., --primary,
8
+ * --foreground, --card, --ring).
9
+ * Colors are driven by the selected Color Theme, not a fixed preset palette.
10
+ */
11
+ export function PresetThemeVars({ className, children }) {
12
+ return (<div className={cn(
13
+ // Buttons (leave bg/fg unset by default so tokenized variants can apply; set ring here)
14
+ "[--btn-ring:var(--ring)]",
15
+ // Inputs
16
+ "[--input-bg:var(--background)]", "[--input-fg:var(--foreground)]", "[--input-placeholder:var(--muted-foreground)]", "[--input-border:var(--input)]", "[--input-focus-ring:var(--ring)]", "[--input-ring-offset:var(--background)]",
17
+ // Cards
18
+ "[--card-bg:var(--card)]", "[--card-fg:var(--card-foreground)]", "[--card-title-fg:var(--foreground)]", "[--card-muted-fg:var(--muted-foreground)]", "[--card-border:var(--border)]", "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
19
+ // Badges/Chips (align to accent; active uses primary)
20
+ "[--badge-bg:var(--accent)]", "[--badge-fg:var(--accent-foreground)]", "[--badge-border:var(--border)]", "[--badge-active-bg:var(--primary)]", "[--badge-active-fg:var(--primary-foreground)]", "[--badge-active-border:var(--primary)]",
21
+ // Typography helpers
22
+ "[--heading-fg:var(--foreground)]", "[--subheading-fg:var(--muted-foreground)]", "[--description-fg:var(--foreground)]",
23
+ // Process timeline
24
+ "[--process-step-bg:var(--primary)]", "[--process-step-fg:var(--primary-foreground)]", "[--process-connector:var(--border)]",
25
+ // Footer
26
+ "[--footer-bg:transparent]", "[--footer-fg:var(--foreground)]", "[--footer-heading-fg:var(--foreground)]", "[--footer-link-fg:var(--muted-foreground)]", "[--footer-link-hover-fg:var(--primary)]", "[--footer-link-hover-bg:color-mix(in oklab, var(--primary) 12%, transparent)]", "[--footer-muted-fg:var(--muted-foreground)]", "[--footer-border:var(--border)]",
27
+ // Table (optional)
28
+ "[--table-fg:inherit]", "[--table-muted-fg:var(--muted-foreground)]", "[--table-head-fg:var(--foreground)]", "[--table-border:var(--border)]", "[--table-row-hover-bg:var(--muted)]",
29
+ // Navbar
30
+ "[--navbar-toggle-bg:var(--background)]", "[--navbar-hover-bg:color-mix(in oklab, var(--primary) 12%, transparent)]", "[--navbar-ring:var(--ring)]", "[--navbar-border:var(--border)]", "[--navbar-accent:var(--foreground)]", className)}>
31
+ {children}
32
+ </div>);
33
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/templates/gallery/page.tsx"],"names":[],"mappings":"AA6BA,MAAM,CAAC,OAAO,UAAU,OAAO,gCAqR9B"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/templates/gallery/page.tsx"],"names":[],"mappings":"AA2BA,MAAM,CAAC,OAAO,UAAU,OAAO,gCAqR9B"}
@@ -0,0 +1,215 @@
1
+ "use client";
2
+ import { About, Contact, CTA, FAQ, Features, Footer, HeroMotion, HeroOverlay, HeroSplit, Navbar, Newsletter, PortfolioSimple, Pricing, ProcessTimeline, ServicesGrid, Team, Testimonials, TrustBadges, } from "@nextworks/blocks-sections";
3
+ import { ThemeSelector } from "@nextworks/blocks-core";
4
+ import { PresetThemeVars } from "./PresetThemeVars";
5
+ export default function Gallery() {
6
+ const defaultFeaturesData = [
7
+ {
8
+ imageSrc: "/placeholders/gallery/pexels-googledeepmind-25626431.jpg",
9
+ imageAlt: "Advanced Analytics Dashboard",
10
+ headingText: "Advanced Analytics",
11
+ subheadingText: "Get deep insights into your business performance with our comprehensive analytics dashboard that tracks key metrics and provides actionable recommendations.",
12
+ },
13
+ {
14
+ imageSrc: "/placeholders/gallery/pexels-googledeepmind-25626432.jpg",
15
+ imageAlt: "Real-time Collaboration Tools",
16
+ headingText: "Real-time Collaboration",
17
+ subheadingText: "Work seamlessly with your team using our real-time collaboration tools that keep everyone in sync and boost productivity across all projects.",
18
+ },
19
+ {
20
+ imageSrc: "/placeholders/gallery/pexels-googledeepmind-25626434.jpg",
21
+ imageAlt: "Secure Data Management",
22
+ headingText: "Secure Data Management",
23
+ subheadingText: "Protect your sensitive information with enterprise-grade security features including encryption, access controls, and compliance monitoring.",
24
+ },
25
+ {
26
+ imageSrc: "/placeholders/gallery/pexels-googledeepmind-25626436.jpg",
27
+ imageAlt: "Mobile-First Design",
28
+ headingText: "Mobile-First Design",
29
+ subheadingText: "Access your data and manage your workflow from anywhere with our responsive, mobile-optimized interface that works perfectly on all devices.",
30
+ },
31
+ ];
32
+ const BrandNode = (<>
33
+ <ThemeSelector ariaLabel="Demo: Color theme" label="" className="mr-2"/>
34
+
35
+ {/* <ThemeSelector /> */}
36
+ <div className="flex h-7 w-7 items-center justify-center rounded-md bg-gradient-to-br from-zinc-900 via-zinc-700 to-zinc-500 text-xs font-bold text-white shadow-sm dark:from-zinc-100 dark:via-zinc-300 dark:to-zinc-500 dark:text-zinc-900">
37
+ NW
38
+ </div>
39
+ </>);
40
+ return (<PresetThemeVars>
41
+ <div className="component-gallery">
42
+ {/* Navigation */}
43
+ <Navbar container={{ className: "max-w-7xl mx-auto" }} mobileMenu={{
44
+ className: "border-t border-border md:block lg:hidden",
45
+ }} desktopMenu={{
46
+ className: "hidden md:hidden lg:flex items-center space-x-1 lg:space-x-0",
47
+ }} id="site-navigation" brand="Nextworks" brandNode={BrandNode} menuItems={[
48
+ { label: "Hero", href: "#hero-sections" },
49
+ { label: "Trust", href: "#trust" },
50
+ { label: "Features", href: "#features" },
51
+ { label: "About", href: "#about-process" },
52
+ { label: "Work", href: "#portfolio-team" },
53
+ { label: "Testimonials", href: "#testimonials" },
54
+ { label: "Pricing", href: "#pricing" },
55
+ { label: "FAQ", href: "#faq" },
56
+ { label: "CTA", href: "#cta" },
57
+ { label: "Contact", href: "#contact" },
58
+ ]} links={{
59
+ className: "text-base font-normal text-foreground hover:text-gray-500 dark:hover:text-gray-400 transition-colors",
60
+ }} ctaButton={null}/>
61
+ {/* Hero Sections */}
62
+ <div id="hero-sections">
63
+ <HeroMotion actions={{
64
+ className: "mt-8 flex items-center justify-center gap-3 [--btn-ring:var(--ring)]",
65
+ }} primaryButtonStyle={{
66
+ size: "lg",
67
+ variant: "default",
68
+ className: "[--btn-bg:var(--primary)] [--btn-fg:var(--primary-foreground)] " +
69
+ "hover:[--btn-hover-bg:color-mix(in_oklab,var(--primary)_88%,black)] " +
70
+ "hover:[--btn-hover-fg:var(--primary-foreground)]",
71
+ }} secondaryButtonStyle={{
72
+ size: "lg",
73
+ variant: "outline",
74
+ className: "border [&:where(button)]:border " +
75
+ "[--btn-bg:transparent] dark:[--btn-bg:transparent] " +
76
+ "[--btn-fg:var(--primary)] dark:[--btn-fg:var(--primary)] " +
77
+ "[--btn-border:var(--primary)] dark:[--btn-border:var(--primary)] " +
78
+ "hover:[--btn-hover-bg:color-mix(in_oklab,var(--primary)_15%,transparent)] " +
79
+ "dark:hover:[--btn-hover-bg:color-mix(in_oklab,var(--primary)_18%,transparent)] " +
80
+ "hover:[--btn-hover-fg:var(--primary)] dark:hover:[--btn-hover-fg:var(--primary)]",
81
+ }} primaryCta={{ label: "Get Started", href: "#hero-sections" }} secondaryCta={{ label: "See Demo", href: "#hero-sections" }}/>
82
+ <HeroOverlay heading="Forecast The Next Move" subheading="Predict demand, personalize journeys, and scale impact with AI-guided insights your team can use today." cta1={{
83
+ label: "Try It Free",
84
+ href: "#hero-sections",
85
+ className: "[--btn-bg:var(--primary)] [--btn-fg:var(--primary-foreground)] " +
86
+ "hover:[--btn-hover-bg:color-mix(in_oklab,var(--primary)_88%,black)] " +
87
+ "hover:[--btn-hover-fg:var(--primary-foreground)]",
88
+ }} cta2={{
89
+ label: "See Demo",
90
+ href: "#hero-sections",
91
+ // Outline CTA should be transparent bg, primary fg/border, with subtle hover bg
92
+ className: "border [&:where(button)]:border " +
93
+ "[--btn-bg:transparent] dark:[--btn-bg:transparent] " +
94
+ "[--btn-fg:var(--primary)] dark:[--btn-fg:var(--primary)] " +
95
+ "[--btn-border:var(--primary)] dark:[--btn-border:var(--primary)] " +
96
+ "hover:[--btn-hover-bg:color-mix(in_oklab,var(--primary)_15%,transparent)] " +
97
+ "dark:hover:[--btn-hover-bg:color-mix(in_oklab,var(--primary)_18%,transparent)] " +
98
+ "hover:[--btn-hover-fg:var(--primary)] dark:hover:[--btn-hover-fg:var(--primary)]",
99
+ }}
100
+ // Set ring color on the CTA container so both buttons share it
101
+ ctaContainer={{
102
+ className: "flex flex-col sm:flex-row gap-4 mt-6 justify-center items-center [--btn-ring:var(--ring)]",
103
+ }} image={{
104
+ src: "/placeholders/gallery/hero-pexels-broken-9945014.avif",
105
+ }}/>
106
+ <HeroSplit heading="Confident Decisions, On Demand" subheading="Reliable data when you need it." cta1={{
107
+ label: "Start Free Trial",
108
+ href: "#hero-sections",
109
+ className: "[--btn-bg:var(--primary)] [--btn-fg:var(--primary-foreground)] " +
110
+ "hover:[--btn-hover-bg:color-mix(in_oklab,var(--primary)_88%,black)] " +
111
+ "hover:[--btn-hover-fg:var(--primary-foreground)]",
112
+ }} cta2={{
113
+ label: "View Sample Report",
114
+ href: "#hero-sections",
115
+ className: "border [&:where(button)]:border " +
116
+ "[--btn-bg:transparent] dark:[--btn-bg:transparent] " +
117
+ "[--btn-fg:var(--primary)] dark:[--btn-fg:var(--primary)] " +
118
+ "[--btn-border:var(--primary)] dark:[--btn-border:var(--primary)] " +
119
+ "hover:[--btn-hover-bg:color-mix(in_oklab,var(--primary)_15%,transparent)] " +
120
+ "dark:hover:[--btn-hover-bg:color-mix(in_oklab,var(--primary)_18%,transparent)] " +
121
+ "hover:[--btn-hover-fg:var(--primary)] dark:hover:[--btn-hover-fg:var(--primary)]",
122
+ }} buttonsContainer={{
123
+ className: "flex flex-col md:flex-row gap-4 mt-6 [--btn-ring:var(--ring)]",
124
+ }} image={{
125
+ src: "/placeholders/gallery/hero-pexels-broken-9945014.avif",
126
+ }} imageLayout="full-bleed"/>
127
+ {/* */}
128
+ </div>
129
+ {/* Trust & Social Proof */}
130
+ <div id="trust" className="scroll-mt-16">
131
+ <TrustBadges />
132
+ </div>
133
+ {/* Features & Services */}
134
+ <div id="features" className="scroll-mt-16">
135
+ <Features featuresData={defaultFeaturesData}></Features>
136
+ <ServicesGrid />
137
+ </div>
138
+ {/* About & Process */}
139
+ <div id="about-process" className="scroll-mt-16">
140
+ <About animateStats={false}/>
141
+ <ProcessTimeline />
142
+ </div>
143
+ {/* Portfolio & Team */}
144
+ <div id="portfolio-team" className="scroll-mt-16">
145
+ <PortfolioSimple />
146
+ <Team />
147
+ </div>
148
+ {/* Testimonials */}
149
+ <div id="testimonials" className="scroll-mt-16">
150
+ <Testimonials />
151
+ </div>
152
+ {/* Pricing */}
153
+ <div id="pricing" className="scroll-mt-16">
154
+ <Pricing />
155
+ </div>
156
+ {/* FAQ */}
157
+ <div id="faq" className="scroll-mt-16">
158
+ <FAQ questionButton={{
159
+ className:
160
+ // Distinct, theme-driven gradient tile + brand ring/border
161
+ "bg-gradient-to-r " +
162
+ "from-[var(--primary)] to-[color-mix(in_oklab,var(--primary)_88%,black)] " +
163
+ "hover:from-[color-mix(in_oklab,var(--primary)_92%,black)] " +
164
+ "hover:to-[color-mix(in_oklab,var(--primary)_95%,black)] " +
165
+ "text-[var(--primary-foreground)] p-5 cursor-pointer rounded-lg " +
166
+ "transition-all duration-200 flex items-center justify-between " +
167
+ "shadow-lg hover:shadow-xl hover:-translate-y-0.5 " +
168
+ // Define ring/border vars and ensure a visible border if tokens apply
169
+ "[--btn-ring:var(--ring)] [--btn-border:var(--primary)] border [&:where(button)]:border",
170
+ }} answer={{
171
+ className: "bg-gradient-to-r " +
172
+ "from-[var(--secondary)] to-[color-mix(in_oklab,var(--secondary)_90%,white)] ",
173
+ }}/>
174
+ </div>
175
+ {/* Call to Action */}
176
+ <div id="cta" className="scroll-mt-16">
177
+ <CTA ctaButton={{ label: "Sign Up Now", href: "#contact" }} actionsWrapper={{
178
+ className: "mt-6 flex flex-col items-center gap-3 sm:flex-row [--btn-ring:var(--ring)]",
179
+ }} ctaButtonStyle={{
180
+ variant: "default",
181
+ size: "default",
182
+ className: "shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 " +
183
+ "[--btn-bg:var(--primary)] [--btn-fg:var(--primary-foreground)] " +
184
+ "hover:[--btn-hover-bg:color-mix(in_oklab,var(--primary)_88%,black)] " +
185
+ "hover:[--btn-hover-fg:var(--primary-foreground)]",
186
+ }}/>
187
+ </div>
188
+ {/* Contact */}
189
+ <div id="contact" className="scroll-mt-16">
190
+ <Contact submitButtonStyle={{
191
+ variant: "default",
192
+ size: "lg",
193
+ className: "w-full shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 " +
194
+ // Match FAQ question button gradient + brand ring/border
195
+ "bg-gradient-to-r " +
196
+ "from-[var(--primary)] to-[color-mix(in_oklab,var(--primary)_88%,black)] " +
197
+ "hover:from-[color-mix(in_oklab,var(--primary)_92%,black)] " +
198
+ "hover:to-[color-mix(in_oklab,var(--primary)_95%,black)] " +
199
+ "text-[var(--primary-foreground)] " +
200
+ "[--btn-ring:var(--ring)] [--btn-border:var(--primary)] border [&:where(button)]:border",
201
+ }}/>
202
+ </div>
203
+ {/* Newsletter */}
204
+ <div id="newsletter" className="scroll-mt-16">
205
+ <Newsletter button={{
206
+ className: "!bg-[var(--primary)] hover:!bg-[color-mix(in_oklab,var(--primary)_90%,transparent)] !text-[var(--primary-foreground)] hover:!text-[var(--primary-background)]",
207
+ }}/>
208
+ </div>
209
+ {/* Footer */}
210
+ <div id="footer">
211
+ <Footer />
212
+ </div>
213
+ </div>
214
+ </PresetThemeVars>);
215
+ }
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+ import { cn } from "@nextworks/blocks-core";
3
+ /**
4
+ * ProductLaunch template theme variables wrapper.
5
+ *
6
+ * Sets a small CSS variable contract consumed by shared components
7
+ * (Buttons, Inputs, Cards, Badges, Footer, Table, etc.).
8
+ *
9
+ * You can override any variable per-section by re-declaring it on
10
+ * that section/container.
11
+ */
12
+ export function PresetThemeVars({ className, children }) {
13
+ return (<div className={cn(
14
+ // Button ring shared across template
15
+ "[--btn-ring:theme(colors.purple.500)] dark:[--btn-ring:theme(colors.purple.400)]",
16
+ // Inputs (Contact)
17
+ "[--input-bg:theme(colors.white)] dark:[--input-bg:theme(colors.gray.900)]", "[--input-fg:theme(colors.gray.900)] dark:[--input-fg:theme(colors.gray.100)]", "[--input-placeholder:theme(colors.gray.400)] dark:[--input-placeholder:theme(colors.gray.500)]", "[--input-border:theme(colors.purple.200)] dark:[--input-border:theme(colors.purple.700)]", "[--input-focus-ring:theme(colors.purple.500)] dark:[--input-focus-ring:theme(colors.purple.400)]", "[--input-ring-offset:theme(colors.white)] dark:[--input-ring-offset:theme(colors.gray.900)]",
18
+ // Cards (Features, ServicesGrid, Pricing, Testimonials, etc.)
19
+ "[--card-bg:theme(colors.white)] dark:[--card-bg:theme(colors.gray.900)]", "[--card-fg:theme(colors.gray.900)] dark:[--card-fg:theme(colors.gray.100)]", "[--card-title-fg:theme(colors.gray.900)] dark:[--card-title-fg:theme(colors.gray.100)]", "[--card-muted-fg:theme(colors.gray.500)] dark:[--card-muted-fg:theme(colors.gray.400)]", "[--card-border:theme(colors.gray.200)] dark:[--card-border:theme(colors.gray.800)]", "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
20
+ // Badges/Chips (Portfolio filters/tags, Pricing badge, Testimonials avatar)
21
+ "[--badge-bg:theme(colors.purple.50)] dark:[--badge-bg:theme(colors.purple.950)]", "[--badge-fg:theme(colors.purple.700)] dark:[--badge-fg:theme(colors.purple.300)]", "[--badge-border:theme(colors.purple.200)] dark:[--badge-border:theme(colors.purple.800)]", "[--badge-active-bg:theme(colors.purple.600)] dark:[--badge-active-bg:theme(colors.purple.500)]", "[--badge-active-fg:theme(colors.white)] dark:[--badge-active-fg:theme(colors.white)]", "[--badge-active-border:theme(colors.purple.700)] dark:[--badge-active-border:theme(colors.purple.400)]",
22
+ // Headings/Subheadings
23
+ "[--heading-fg:theme(colors.gray.900)] dark:[--heading-fg:theme(colors.gray.100)]", "[--subheading-fg:theme(colors.gray.600)] dark:[--subheading-fg:theme(colors.gray.300)]", "[--description-fg:theme(colors.gray.700)] dark:[--description-fg:theme(colors.gray.200)]",
24
+ // Footer
25
+ "[--footer-bg:transparent] dark:[--footer-bg:transparent]", "[--footer-fg:theme(colors.gray.800)] dark:[--footer-fg:theme(colors.gray.100)]", "[--footer-heading-fg:theme(colors.gray.900)] dark:[--footer-heading-fg:theme(colors.gray.100)]", "[--footer-link-fg:theme(colors.gray.700)] dark:[--footer-link-fg:theme(colors.gray.300)]", "[--footer-link-hover-fg:theme(colors.purple.700)] dark:[--footer-link-hover-fg:theme(colors.purple.400)]", "[--footer-link-hover-bg:theme(colors.purple.50)] dark:[--footer-link-hover-bg:color-mix(in_oklab,oklch(0.17_0.05_324)_20%,transparent)]", "[--footer-muted-fg:theme(colors.gray.500)] dark:[--footer-muted-fg:theme(colors.gray.400)]", "[--footer-border:theme(colors.gray.200)] dark:[--footer-border:theme(colors.gray.800)]",
26
+ // Table (optional)
27
+ "[--table-fg:inherit]", "[--table-muted-fg:theme(colors.gray.500)] dark:[--table-muted-fg:theme(colors.gray.400)]", "[--table-head-fg:theme(colors.gray.700)] dark:[--table-head-fg:theme(colors.gray.300)]", "[--table-border:theme(colors.gray.200)] dark:[--table-border:theme(colors.gray.800)]", "[--table-row-hover-bg:theme(colors.gray.50)] dark:[--table-row-hover-bg:theme(colors.gray.900)]", className)}>
28
+ {children}
29
+ </div>);
30
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"About.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/About.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;;;;;;GAWG;AAEH,wBAAgB,KAAK,sBAoEpB"}
1
+ {"version":3,"file":"About.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/About.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;;;;;;GAWG;AAEH,wBAAgB,KAAK,sBAkEpB"}
@@ -0,0 +1,55 @@
1
+ "use client";
2
+ import React from "react";
3
+ import { About as SharedAbout } from "@nextworks/blocks-sections";
4
+ /**
5
+ * A preset About component customized for the product launch page,
6
+ * using the shared About.tsx with predefined styles and content.
7
+ *
8
+ * Features:
9
+ * - "About IntelliOpAI" heading with custom typography
10
+ * - Purple-themed styling matching the brand
11
+ * - Custom stats optimized for AI product launch
12
+ * - Responsive design with proper spacing
13
+ * - Dark mode support with consistent theming
14
+ * - Clean, modern design with hover effects
15
+ */
16
+ export function About() {
17
+ return (<SharedAbout
18
+ // Content
19
+ aboutSubheadingText="The Future of AI is Here" aboutHeadingText="About IntelliOpAI" aboutContentText="IntelliOpAI is pioneering the next generation of artificial intelligence solutions for modern businesses. Founded by AI researchers and industry disruptors, we're building intelligent systems that learn, adapt, and deliver results in real-time. Our breakthrough technology combines deep learning, natural language processing, and predictive analytics to create AI that actually works for your business." aboutTextAlign="center"
20
+ // Stats
21
+ showStats={true} animateStats={true} aboutStats={[
22
+ { value: "10M", suffix: "+", label: "Data Points Processed" },
23
+ { value: "99.7", suffix: "%", label: "AI Accuracy Rate" },
24
+ { value: "500", suffix: "+", label: "Early Adopters" },
25
+ { value: "24", suffix: "/7", label: "AI Innovation" },
26
+ ]}
27
+ // Slots / styling
28
+ section={{
29
+ className: "py-20 bg-white dark:bg-black text-gray-800 dark:text-white",
30
+ }} container={{
31
+ className: "max-w-7xl mx-auto px-6",
32
+ }} inner={{
33
+ className: "flex flex-col gap-12",
34
+ }} contentContainer={{
35
+ className: "max-w-4xl mx-auto",
36
+ }} contentStack={{
37
+ className: "flex flex-col gap-6",
38
+ }} subheading={{
39
+ className: "text-sm font-semibold text-purple-600 dark:text-purple-400 uppercase tracking-wider font-inter",
40
+ }} heading={{
41
+ className: "text-3xl md:text-4xl lg:text-5xl font-bold text-gray-800 dark:text-white leading-tight font-outfit",
42
+ }} content={{
43
+ className: "text-base md:text-lg text-gray-700 dark:text-gray-200 leading-relaxed opacity-90 max-w-3xl font-inter",
44
+ }} statsSection={{
45
+ className: "bg-gradient-to-r from-purple-50 via-white to-purple-50 dark:from-purple-900/20 dark:via-gray-800 dark:to-purple-900/20 p-8 md:p-12 rounded-2xl shadow-xl mx-auto max-w-5xl w-full border border-purple-200 dark:border-purple-800",
46
+ }} statsGrid={{
47
+ className: "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12 justify-items-center",
48
+ }} statItem={{
49
+ className: "flex flex-col items-center gap-3",
50
+ }} statNumber={{
51
+ className: "text-2xl md:text-3xl lg:text-4xl font-bold text-purple-600 dark:text-purple-400 leading-none font-outfit",
52
+ }} statLabel={{
53
+ className: "text-sm md:text-base font-medium text-gray-700 dark:text-gray-300 text-center opacity-90 font-inter",
54
+ }}/>);
55
+ }
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import React from "react";
3
+ import { CTA as SharedCTA } from "@nextworks/blocks-sections";
4
+ export function CTA() {
5
+ return (<SharedCTA
6
+ // Background and theme colors live on the section slot
7
+ section={{
8
+ className: "bg-gradient-to-br from-purple-600 via-purple-700 to-purple-800 dark:from-purple-500 dark:via-purple-600 dark:to-purple-700 [--heading-fg:white] [--subheading-fg:rgba(255,255,255,0.85)] [--description-fg:rgba(255,255,255,0.8)]",
9
+ }}
10
+ // Layout, height, and centering are controlled by the container slot
11
+ container={{
12
+ className: "flex h-[45.5vh] w-full flex-col items-center overflow-hidden",
13
+ }}
14
+ // Heading mapped to the new headingText slot
15
+ headingText={{
16
+ text: "Join The Launch Today!",
17
+ className: "text-xl md:text-2xl lg:text-3xl font-bold leading-tight text-white dark:text-white font-outfit",
18
+ }}
19
+ // Use actionsWrapper for spacing instead of margin on the button
20
+ actionsWrapper={{
21
+ className: "mt-4 [--btn-ring:rgba(124,58,237,0.35)] dark:[--btn-ring:rgba(124,58,237,0.45)]",
22
+ }}
23
+ // Primary CTA mapped to ctaButton + ctaButtonStyle
24
+ ctaButton={{ label: "Sign Up Now", href: "#contact" }} ctaButtonStyle={{
25
+ variant: "secondary",
26
+ size: "lg",
27
+ className: "text-base md:text-lg font-semibold shadow-lg hover:shadow-xl hover:-translate-y-0.5 transition-all duration-200 border-0 [--btn-bg:white] dark:[--btn-bg:white] [--btn-hover-bg:#f3f4f6] dark:[--btn-hover-bg:#e5e7eb] [--btn-fg:#7c3aed] dark:[--btn-fg:#7c3aed] hover:[--btn-hover-fg:#6d28d9] dark:hover:[--btn-hover-fg:#6d28d9] [--btn-border:transparent]",
28
+ }}
29
+ // Secondary CTA using outline style
30
+ secondaryButton={{ label: "Learn More", href: "#features" }} secondaryButtonStyle={{
31
+ variant: "outline",
32
+ size: "lg",
33
+ className: "text-base md:text-lg font-semibold shadow-lg hover:shadow-xl hover:-translate-y-0.5 transition-all duration-200 border [--btn-bg:transparent] dark:[--btn-bg:transparent] [--btn-fg:white] [--btn-border:rgba(255,255,255,0.9)] dark:[--btn-border:rgba(255,255,255,0.85)] hover:[--btn-hover-bg:white] hover:[--btn-hover-fg:#7c3aed]",
34
+ }}
35
+ // Preserve the previous top margin on the heading
36
+ spacing={{ topMargin: "mt-[17vh]" }} ariaLabel="Join the product launch call to action"/>);
37
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Contact.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/Contact.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAwD1B,wBAAgB,OAAO,sBAiEtB"}
1
+ {"version":3,"file":"Contact.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/Contact.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAwD1B,wBAAgB,OAAO,sBAiEtB"}
@@ -0,0 +1,91 @@
1
+ "use client";
2
+ import React from "react";
3
+ import { Contact as SharedContact, } from "@nextworks/blocks-sections";
4
+ /**
5
+ * A preset Contact component customized for the product launch page,
6
+ * using the shared Contact.tsx with predefined styles and content.
7
+ *
8
+ * Features:
9
+ * - "Get Started with IntelliOpAI" heading with custom typography
10
+ * - Purple-themed styling matching the brand
11
+ * - Custom form fields optimized for product launch
12
+ * - Responsive design with proper spacing
13
+ * - Dark mode support with consistent theming
14
+ * - Clean, modern design with hover effects
15
+ */
16
+ const productLaunchContactFormData = [
17
+ {
18
+ id: "name",
19
+ label: "Your Full Name",
20
+ placeholder: "John Doe",
21
+ required: true,
22
+ type: "text",
23
+ },
24
+ {
25
+ id: "email",
26
+ label: "Email Address",
27
+ placeholder: "you@example.com",
28
+ required: true,
29
+ type: "email",
30
+ },
31
+ {
32
+ id: "company",
33
+ label: "Company Name",
34
+ placeholder: "Your Company",
35
+ required: false,
36
+ type: "text",
37
+ },
38
+ {
39
+ id: "phone",
40
+ label: "Phone Number",
41
+ placeholder: "+1 (555) 123-4567",
42
+ required: false,
43
+ type: "tel",
44
+ },
45
+ {
46
+ id: "message",
47
+ label: "Tell us about your project",
48
+ placeholder: "Describe your business needs and how we can help...",
49
+ required: true,
50
+ type: "textarea",
51
+ },
52
+ ];
53
+ export function Contact() {
54
+ const handleFormSubmit = (e) => {
55
+ e.preventDefault();
56
+ const data = Object.fromEntries(new FormData(e.currentTarget).entries());
57
+ };
58
+ return (<SharedContact id="contact" fields={productLaunchContactFormData} contactHeaderText="Get Started with IntelliOpAI" contactSubHeaderText="Ready to revolutionize your workflow? Get in touch with our team to learn how our AI solutions can transform your business operations and drive growth."
59
+ // Root and layout
60
+ className="w-full" section={{
61
+ className: "py-16 px-4 bg-gradient-to-br from-purple-600 via-purple-700 to-purple-800 dark:from-purple-500 dark:via-purple-600 dark:to-purple-700",
62
+ }} container={{
63
+ className: "mx-auto max-w-4xl",
64
+ }}
65
+ // Header slots
66
+ headerWrapper={{ className: "mb-4 text-center" }} headerText={{
67
+ className: "text-2xl md:text-3xl lg:text-4xl font-bold font-outfit text-white dark:text-white",
68
+ }} subheaderText={{
69
+ className: "text-base md:text-lg text-white dark:text-gray-200 text-center mb-8 px-4 md:px-14 font-inter leading-relaxed",
70
+ }}
71
+ // Form container
72
+ form={{
73
+ className: "bg-white dark:bg-gray-800 p-6 md:p-8 rounded-lg shadow-lg border border-purple-200 dark:border-purple-300",
74
+ }}
75
+ // Fields wrapper and field item
76
+ fieldsWrapper={{ className: "space-y-6" }} field={{ className: "space-y-2" }}
77
+ // Label + inputs
78
+ label={{
79
+ className: "text-gray-700 dark:text-white text-sm font-semibold block font-inter",
80
+ }} input={{
81
+ className: "w-full p-3 border border-gray-200 dark:border-gray-600 rounded-md bg-gray-50 dark:bg-gray-700 text-black dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus-visible:ring-2 focus-visible:ring-purple-500 focus-visible:ring-offset-0 focus:border-transparent transition-all duration-200",
82
+ }} textarea={{
83
+ className: "w-full p-3 border border-gray-200 dark:border-gray-600 rounded-md bg-gray-50 dark:bg-gray-700 text-black dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus-visible:ring-2 focus-visible:ring-purple-500 focus-visible:ring-offset-0 focus:border-transparent resize-vertical min-h-[120px] transition-all duration-200",
84
+ }}
85
+ // Submit button (split: wrapper/style/text)
86
+ submitButtonWrapper={{ className: "pt-2" }} submitButtonStyle={{
87
+ variant: "default",
88
+ size: "lg",
89
+ className: "w-full font-semibold text-base shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 border-0 [--btn-bg:theme(colors.purple.600)] hover:[--btn-hover-bg:theme(colors.purple.700)] [--btn-fg:white] hover:[--btn-hover-fg:white] [--btn-border:transparent]",
90
+ }} submitButtonText="Start Your AI Journey" onSubmit={handleFormSubmit} ariaLabel="Get started with IntelliOpAI contact form"/>);
91
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Preset FAQ component for the product launch page.
3
+ */
4
+ export declare function FAQ(): import("react").JSX.Element;
5
+ //# sourceMappingURL=FAQ.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FAQ.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/FAQ.tsx"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,GAAG,gCAgFlB"}
1
+ {"version":3,"file":"FAQ.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/FAQ.tsx"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,GAAG,gCA2ElB"}