nextworks 0.2.0-alpha.11 → 0.2.0-alpha.13

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 (111) hide show
  1. package/README.md +283 -282
  2. package/dist/cli_manifests/blocks_manifest.json +198 -175
  3. package/dist/kits/blocks/.nextworks/docs/BLOCKS_QUICKSTART.md +101 -100
  4. package/dist/kits/blocks/.nextworks/docs/BLOCKS_README.md +105 -104
  5. package/dist/kits/blocks/.nextworks/docs/THEME_GUIDE.md +1 -1
  6. package/dist/kits/blocks/app/templates/aiworkflow/PresetThemeVars.tsx +58 -0
  7. package/dist/kits/blocks/app/templates/aiworkflow/README.md +46 -0
  8. package/dist/kits/blocks/app/templates/aiworkflow/components/CTA.tsx +44 -0
  9. package/dist/kits/blocks/app/templates/aiworkflow/components/Contact.tsx +105 -0
  10. package/dist/kits/blocks/app/templates/aiworkflow/components/FAQ.tsx +63 -0
  11. package/dist/kits/blocks/app/templates/aiworkflow/components/Features.tsx +65 -0
  12. package/dist/kits/blocks/app/templates/aiworkflow/components/Footer.tsx +109 -0
  13. package/dist/kits/blocks/app/templates/aiworkflow/components/Hero.tsx +636 -0
  14. package/dist/kits/blocks/app/templates/aiworkflow/components/Navbar.tsx +90 -0
  15. package/dist/kits/blocks/app/templates/aiworkflow/components/Pricing.tsx +86 -0
  16. package/dist/kits/blocks/app/templates/aiworkflow/components/ProcessTimeline.tsx +103 -0
  17. package/dist/kits/blocks/app/templates/aiworkflow/components/Testimonials.tsx +56 -0
  18. package/dist/kits/blocks/app/templates/aiworkflow/components/TrustBadges.tsx +59 -0
  19. package/dist/kits/blocks/app/templates/aiworkflow/page.tsx +43 -0
  20. package/dist/kits/blocks/app/templates/digitalagency/PresetThemeVars.tsx +80 -80
  21. package/dist/kits/blocks/app/templates/digitalagency/README.md +42 -42
  22. package/dist/kits/blocks/app/templates/digitalagency/components/Pricing.tsx +114 -114
  23. package/dist/kits/blocks/app/templates/digitalagency/components/Process.tsx +59 -59
  24. package/dist/kits/blocks/app/templates/digitalagency/components/Services.tsx +55 -55
  25. package/dist/kits/blocks/app/templates/digitalagency/components/Team.tsx +28 -28
  26. package/dist/kits/blocks/app/templates/digitalagency/components/Testimonials.tsx +65 -65
  27. package/dist/kits/blocks/app/templates/digitalagency/page.tsx +38 -38
  28. package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +84 -84
  29. package/dist/kits/blocks/app/templates/productlaunch/PresetThemeVars.tsx +75 -75
  30. package/dist/kits/blocks/app/templates/productlaunch/README.md +62 -62
  31. package/dist/kits/blocks/app/templates/productlaunch/components/About.tsx +84 -84
  32. package/dist/kits/blocks/app/templates/productlaunch/components/CTA.tsx +50 -50
  33. package/dist/kits/blocks/app/templates/productlaunch/components/Contact.tsx +231 -231
  34. package/dist/kits/blocks/app/templates/productlaunch/components/FAQ.tsx +86 -86
  35. package/dist/kits/blocks/app/templates/productlaunch/components/Features.tsx +83 -83
  36. package/dist/kits/blocks/app/templates/productlaunch/components/Footer.tsx +132 -132
  37. package/dist/kits/blocks/app/templates/productlaunch/components/Hero.tsx +88 -88
  38. package/dist/kits/blocks/app/templates/productlaunch/components/Navbar.tsx +116 -116
  39. package/dist/kits/blocks/app/templates/productlaunch/components/Pricing.tsx +106 -106
  40. package/dist/kits/blocks/app/templates/productlaunch/components/ProcessTimeline.tsx +110 -110
  41. package/dist/kits/blocks/app/templates/productlaunch/components/ServicesGrid.tsx +68 -68
  42. package/dist/kits/blocks/app/templates/productlaunch/components/Team.tsx +104 -104
  43. package/dist/kits/blocks/app/templates/productlaunch/components/Testimonials.tsx +90 -90
  44. package/dist/kits/blocks/app/templates/productlaunch/components/TrustBadges.tsx +76 -76
  45. package/dist/kits/blocks/app/templates/productlaunch/page.tsx +43 -43
  46. package/dist/kits/blocks/app/templates/saasdashboard/PresetThemeVars.tsx +80 -80
  47. package/dist/kits/blocks/app/templates/saasdashboard/README.md +44 -44
  48. package/dist/kits/blocks/app/templates/saasdashboard/components/Contact.tsx +129 -129
  49. package/dist/kits/blocks/app/templates/saasdashboard/components/Dashboard.tsx +293 -293
  50. package/dist/kits/blocks/app/templates/saasdashboard/components/FAQ.tsx +55 -55
  51. package/dist/kits/blocks/app/templates/saasdashboard/components/Features.tsx +90 -90
  52. package/dist/kits/blocks/app/templates/saasdashboard/components/Footer.tsx +77 -77
  53. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero.tsx +104 -104
  54. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero_mask.tsx +126 -126
  55. package/dist/kits/blocks/app/templates/saasdashboard/components/Navbar.tsx +117 -117
  56. package/dist/kits/blocks/app/templates/saasdashboard/components/Pricing.tsx +90 -90
  57. package/dist/kits/blocks/app/templates/saasdashboard/components/SmoothScroll.tsx +96 -96
  58. package/dist/kits/blocks/app/templates/saasdashboard/components/Testimonials.tsx +72 -72
  59. package/dist/kits/blocks/app/templates/saasdashboard/components/TrustBadges.tsx +53 -53
  60. package/dist/kits/blocks/app/templates/saasdashboard/page.tsx +39 -39
  61. package/dist/kits/blocks/components/enhanced-theme-provider.tsx +195 -195
  62. package/dist/kits/blocks/components/providers/BlocksAppProviders.tsx +27 -27
  63. package/dist/kits/blocks/components/sections/About.tsx +291 -291
  64. package/dist/kits/blocks/components/sections/CTA.tsx +257 -257
  65. package/dist/kits/blocks/components/sections/Contact.tsx +267 -267
  66. package/dist/kits/blocks/components/sections/FAQ.tsx +214 -214
  67. package/dist/kits/blocks/components/sections/Features.tsx +268 -268
  68. package/dist/kits/blocks/components/sections/Footer.tsx +302 -302
  69. package/dist/kits/blocks/components/sections/HeroMotion.tsx +308 -308
  70. package/dist/kits/blocks/components/sections/HeroOverlay.tsx +358 -358
  71. package/dist/kits/blocks/components/sections/HeroProductDemo.tsx +236 -0
  72. package/dist/kits/blocks/components/sections/HeroSplit.tsx +352 -352
  73. package/dist/kits/blocks/components/sections/Navbar.tsx +350 -350
  74. package/dist/kits/blocks/components/sections/PortfolioSimple.tsx +549 -549
  75. package/dist/kits/blocks/components/sections/Pricing.tsx +264 -264
  76. package/dist/kits/blocks/components/sections/ProcessTimeline.tsx +325 -325
  77. package/dist/kits/blocks/components/sections/ServicesGrid.tsx +210 -210
  78. package/dist/kits/blocks/components/sections/Team.tsx +309 -309
  79. package/dist/kits/blocks/components/sections/Testimonials.tsx +158 -158
  80. package/dist/kits/blocks/components/sections/TrustBadges.tsx +162 -162
  81. package/dist/kits/blocks/components/sections/product-demo/ApprovalInboxPanel.tsx +125 -0
  82. package/dist/kits/blocks/components/sections/product-demo/DemoStage.tsx +397 -0
  83. package/dist/kits/blocks/components/sections/product-demo/DemoWindow.tsx +128 -0
  84. package/dist/kits/blocks/components/sections/product-demo/KnowledgePanel.tsx +127 -0
  85. package/dist/kits/blocks/components/sections/product-demo/RunConsolePanel.tsx +150 -0
  86. package/dist/kits/blocks/components/sections/product-demo/WorkflowStudioPanel.tsx +191 -0
  87. package/dist/kits/blocks/components/sections/product-demo/types.ts +193 -0
  88. package/dist/kits/blocks/components/theme-provider.tsx +1 -1
  89. package/dist/kits/blocks/components/ui/alert-dialog.tsx +134 -134
  90. package/dist/kits/blocks/components/ui/brand-node.tsx +121 -121
  91. package/dist/kits/blocks/components/ui/button.tsx +122 -122
  92. package/dist/kits/blocks/components/ui/card.tsx +95 -95
  93. package/dist/kits/blocks/components/ui/checkbox.tsx +30 -30
  94. package/dist/kits/blocks/components/ui/cta-button.tsx +125 -125
  95. package/dist/kits/blocks/components/ui/dropdown-menu.tsx +201 -201
  96. package/dist/kits/blocks/components/ui/feature-card.tsx +91 -91
  97. package/dist/kits/blocks/components/ui/input.tsx +27 -27
  98. package/dist/kits/blocks/components/ui/label.tsx +29 -29
  99. package/dist/kits/blocks/components/ui/pricing-card.tsx +120 -120
  100. package/dist/kits/blocks/components/ui/select.tsx +25 -25
  101. package/dist/kits/blocks/components/ui/skeleton.tsx +13 -13
  102. package/dist/kits/blocks/components/ui/table.tsx +98 -98
  103. package/dist/kits/blocks/components/ui/testimonial-card.tsx +108 -108
  104. package/dist/kits/blocks/components/ui/textarea.tsx +26 -26
  105. package/dist/kits/blocks/components/ui/theme-selector.tsx +243 -243
  106. package/dist/kits/blocks/components/ui/theme-toggle.tsx +74 -74
  107. package/dist/kits/blocks/components/ui/toaster.tsx +7 -7
  108. package/dist/kits/blocks/lib/themes.ts +400 -400
  109. package/dist/kits/blocks/lib/utils.ts +6 -6
  110. package/dist/kits/blocks/package-deps.json +3 -3
  111. package/package.json +1 -1
@@ -0,0 +1,90 @@
1
+ "use client";
2
+
3
+ import type { ComponentProps } from "react";
4
+ import { Navbar as SharedNavbar } from "@/components/sections/Navbar";
5
+
6
+ type SharedNavbarProps = ComponentProps<typeof SharedNavbar>;
7
+ type PresetOverrides = Partial<SharedNavbarProps>;
8
+
9
+ const defaultProps: SharedNavbarProps = {
10
+ brand: "FlowPilot AI",
11
+ brandNode: (
12
+ <div className="flex h-8 w-8 items-center justify-center rounded-xl bg-gradient-to-br from-cyan-400 via-sky-500 to-violet-500 font-bold text-slate-950 shadow-sm ring-1 ring-white/40">
13
+ FP
14
+ </div>
15
+ ),
16
+ menuItems: [
17
+ { label: "Home", href: "#home" },
18
+ { label: "Features", href: "#features" },
19
+ { label: "Pricing", href: "#pricing" },
20
+ { label: "FAQ", href: "#faq" },
21
+ { label: "Contact", href: "#contact" },
22
+ ],
23
+ ctaButton: null,
24
+ showColorModeToggle: true,
25
+ navHeight: "h-16",
26
+ sticky: true,
27
+ ariaLabel: "FlowPilot AI main navigation",
28
+ className: "",
29
+ nav: {
30
+ className:
31
+ "border-b border-slate-200/80 bg-white/80 text-slate-900 backdrop-blur supports-[backdrop-filter]:bg-white/80 " +
32
+ "dark:border-slate-800 dark:bg-slate-950/75 dark:text-white supports-[backdrop-filter]:dark:bg-slate-950/75 " +
33
+ "[--navbar-accent:theme(colors.cyan.600)] dark:[--navbar-accent:theme(colors.cyan.400)] " +
34
+ "[--navbar-toggle-bg:theme(colors.white)] dark:[--navbar-toggle-bg:theme(colors.slate.950)] " +
35
+ "[--navbar-hover-bg:theme(colors.cyan.50)] dark:[--navbar-hover-bg:color-mix(in_oklab,oklch(0.24_0.06_230)_24%,transparent)] " +
36
+ "[--navbar-ring:theme(colors.cyan.500)] dark:[--navbar-ring:theme(colors.cyan.400)] " +
37
+ "[--navbar-border:theme(colors.slate.200)] dark:[--navbar-border:theme(colors.slate.800)]",
38
+ },
39
+ brandText: {
40
+ className:
41
+ "text-xl font-semibold font-outfit text-slate-950 dark:text-white",
42
+ },
43
+ links: {
44
+ className:
45
+ "text-sm font-medium font-inter text-slate-700 hover:text-cyan-700 focus:ring-[var(--navbar-ring)] dark:text-slate-200 dark:hover:text-cyan-300",
46
+ },
47
+ ctaButtonStyle: {
48
+ variant: "default",
49
+ size: "default",
50
+ className:
51
+ "shadow-md transition-all duration-200 hover:-translate-y-0.5 hover:shadow-lg",
52
+ },
53
+ mobileMenu: {
54
+ className: "border-t border-slate-200 dark:border-slate-800",
55
+ },
56
+ container: {
57
+ className: "max-w-7xl mx-auto",
58
+ },
59
+ brandWrapper: {
60
+ className: "",
61
+ },
62
+ desktopMenu: {
63
+ className: "hidden items-center space-x-1 md:flex lg:space-x-6",
64
+ },
65
+ toggleButton: {
66
+ className:
67
+ "md:hidden flex items-center justify-center rounded-md p-2 transition-colors hover:bg-cyan-50 dark:hover:bg-cyan-950/30 focus:outline-none focus:ring-2 focus:ring-cyan-500 dark:focus:ring-cyan-400",
68
+ },
69
+ colorModeWrapper: {
70
+ className: "ml-2",
71
+ },
72
+ ctaButtonWrapper: {
73
+ className: "ml-2",
74
+ },
75
+ mobileMenuInner: {
76
+ className: "space-y-2 px-4 pt-2 pb-4",
77
+ },
78
+ mobileLinks: {
79
+ className: "hover:bg-[var(--navbar-hover-bg)]",
80
+ },
81
+ };
82
+
83
+ export function Navbar(overrides: PresetOverrides = {}) {
84
+ const props: SharedNavbarProps = {
85
+ ...defaultProps,
86
+ ...overrides,
87
+ };
88
+
89
+ return <SharedNavbar {...props} />;
90
+ }
@@ -0,0 +1,86 @@
1
+ "use client";
2
+
3
+ import { Pricing as SharedPricing } from "@/components/sections/Pricing";
4
+
5
+ export function Pricing() {
6
+ return (
7
+ <SharedPricing
8
+ id="pricing"
9
+ pricingHeadingText="Pricing for teams automating real operational work"
10
+ pricingPlans={[
11
+ {
12
+ pricingPlanHeaderText: "Starter",
13
+ pricingPlanPrice: "$49/mo",
14
+ pricingPlanFeatures: [
15
+ "3 active workflows",
16
+ "Slack and email intake",
17
+ "Shared approval inbox",
18
+ "Core analytics",
19
+ ],
20
+ pricingPlanCTALabel: "Start free",
21
+ pricingPlanCTAHref: "#contact",
22
+ },
23
+ {
24
+ pricingPlanHeaderText: "Growth",
25
+ pricingPlanPrice: "$149/mo",
26
+ pricingPlanFeatures: [
27
+ "Unlimited workflows",
28
+ "CRM and project tool sync",
29
+ "Advanced approval routing",
30
+ "Live execution dashboards",
31
+ "Role-based governance",
32
+ ],
33
+ pricingPlanCTALabel: "Book a demo",
34
+ pricingPlanCTAHref: "#contact",
35
+ isPopular: true,
36
+ },
37
+ {
38
+ pricingPlanHeaderText: "Enterprise",
39
+ pricingPlanPrice: "Custom",
40
+ pricingPlanFeatures: [
41
+ "Private deployment options",
42
+ "Custom policy and knowledge connectors",
43
+ "SSO and audit exports",
44
+ "Dedicated onboarding",
45
+ "Priority support",
46
+ ],
47
+ pricingPlanCTALabel: "Talk to sales",
48
+ pricingPlanCTAHref: "#contact",
49
+ },
50
+ ]}
51
+ section={{ className: "bg-background pt-18 pb-16" }}
52
+ container={{ className: "max-w-7xl mx-auto px-6" }}
53
+ heading={{
54
+ className:
55
+ "mb-4 text-center font-outfit text-3xl font-semibold text-[var(--heading-fg)] md:text-4xl lg:text-5xl",
56
+ }}
57
+ grid={{ className: "mt-12 grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3" }}
58
+ card={{
59
+ className:
60
+ "relative rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] text-[var(--card-fg)] shadow-[var(--card-shadow)] transition-all duration-300 hover:-translate-y-1 hover:shadow-xl",
61
+ }}
62
+ title={{
63
+ className:
64
+ "font-inter text-xl font-semibold text-[var(--card-title-fg)]",
65
+ }}
66
+ price={{
67
+ className:
68
+ "font-outfit text-3xl font-semibold text-[var(--card-title-fg)]",
69
+ }}
70
+ featureItem={{
71
+ className: "font-inter text-sm text-[var(--card-muted-fg)] md:text-base",
72
+ }}
73
+ cta={{
74
+ variant: "default",
75
+ size: "lg",
76
+ className:
77
+ "w-full font-inter font-semibold [--btn-bg:theme(colors.cyan.500)] [--btn-fg:theme(colors.slate.950)] [--btn-border:transparent] hover:[--btn-hover-bg:theme(colors.cyan.400)] hover:[--btn-hover-fg:theme(colors.slate.950)]",
78
+ }}
79
+ popularBadge={{
80
+ className:
81
+ "absolute -top-3 left-1/2 -translate-x-1/2 rounded-full border border-[var(--badge-active-border)] bg-[var(--badge-active-bg)] px-4 py-1 text-xs font-semibold text-[var(--badge-active-fg)]",
82
+ }}
83
+ ariaLabel="AI workflow pricing"
84
+ />
85
+ );
86
+ }
@@ -0,0 +1,103 @@
1
+ "use client";
2
+
3
+ import { ProcessTimeline as SharedProcessTimeline } from "@/components/sections/ProcessTimeline";
4
+
5
+ export function ProcessTimeline() {
6
+ return (
7
+ <SharedProcessTimeline
8
+ steps={[
9
+ {
10
+ stepNumber: 1,
11
+ title: "Capture the request",
12
+ description:
13
+ "AI turns messages, tickets, and forms into structured workflow inputs with clear intent and metadata.",
14
+ icon: "✉️",
15
+ },
16
+ {
17
+ stepNumber: 2,
18
+ title: "Ground the decision",
19
+ description:
20
+ "Policies, playbooks, and account context are pulled in before the workflow takes action.",
21
+ icon: "🧠",
22
+ },
23
+ {
24
+ stepNumber: 3,
25
+ title: "Route approvals and actions",
26
+ description:
27
+ "Human review appears only when thresholds or policy require it, while approved actions continue automatically.",
28
+ icon: "✅",
29
+ },
30
+ {
31
+ stepNumber: 4,
32
+ title: "Sync every tool",
33
+ description:
34
+ "CRM records, project tasks, team updates, and audit logs stay aligned from one execution graph.",
35
+ icon: "🔄",
36
+ },
37
+ ]}
38
+ heading="From request to completed workflow in four clear stages"
39
+ subheading="Keep AI automation visible, governed, and operational across the systems your team already uses."
40
+ section={{
41
+ className:
42
+ "bg-[linear-gradient(180deg,rgba(248,250,252,1)_0%,rgba(240,249,255,0.7)_100%)] py-18 md:py-22 dark:bg-[linear-gradient(180deg,rgba(2,6,23,1)_0%,rgba(8,47,73,0.4)_100%)]",
43
+ }}
44
+ container={{ className: "max-w-6xl mx-auto px-6 md:px-10" }}
45
+ header={{ className: "mb-16 text-center" }}
46
+ headingStyle={{
47
+ className:
48
+ "font-outfit text-3xl font-semibold text-[var(--heading-fg)] md:text-4xl lg:text-5xl",
49
+ }}
50
+ subheadingStyle={{
51
+ className:
52
+ "mx-auto max-w-3xl font-inter text-base leading-7 text-[var(--subheading-fg)] md:text-lg",
53
+ }}
54
+ timelineContainer={{ className: "mx-auto w-full max-w-5xl" }}
55
+ desktopTimeline={{
56
+ className: "relative hidden w-full justify-between lg:flex",
57
+ }}
58
+ connectingLine={{
59
+ className:
60
+ "absolute left-16 right-16 top-8 h-px bg-gradient-to-r from-cyan-200 via-sky-400 to-violet-400 dark:from-cyan-900 dark:via-cyan-500 dark:to-violet-500",
61
+ }}
62
+ stepContainer={{
63
+ className: "relative z-10 flex max-w-56 flex-1 flex-col items-center gap-5",
64
+ }}
65
+ stepCircle={{
66
+ className:
67
+ "flex h-16 w-16 items-center justify-center rounded-full bg-slate-950 text-white shadow-lg shadow-cyan-500/10 dark:bg-cyan-400 dark:text-slate-950",
68
+ }}
69
+ stepNumber={{ className: "font-outfit text-2xl font-bold" }}
70
+ stepIcon={{ className: "text-3xl" }}
71
+ stepContent={{ className: "space-y-3 text-center" }}
72
+ stepTitle={{
73
+ className:
74
+ "font-inter text-lg font-semibold text-[var(--card-title-fg)]",
75
+ }}
76
+ stepDescription={{
77
+ className:
78
+ "font-inter text-sm leading-6 text-[var(--card-muted-fg)]",
79
+ }}
80
+ mobileTimeline={{ className: "flex w-full flex-col gap-8 lg:hidden" }}
81
+ mobileStep={{ className: "relative flex items-start" }}
82
+ mobileVerticalLine={{
83
+ className:
84
+ "absolute bottom-[-2rem] left-8 top-16 w-px bg-cyan-300 dark:bg-cyan-700",
85
+ }}
86
+ mobileStepCircle={{
87
+ className:
88
+ "mr-6 flex h-16 w-16 shrink-0 items-center justify-center rounded-full bg-slate-950 text-white shadow-lg dark:bg-cyan-400 dark:text-slate-950",
89
+ }}
90
+ mobileStepContent={{ className: "flex-1 space-y-3 pt-2" }}
91
+ mobileStepIcon={{ className: "text-3xl" }}
92
+ mobileStepTitle={{
93
+ className:
94
+ "font-inter text-lg font-semibold text-[var(--card-title-fg)]",
95
+ }}
96
+ mobileStepDescription={{
97
+ className:
98
+ "font-inter text-sm leading-6 text-[var(--card-muted-fg)]",
99
+ }}
100
+ ariaLabel="AI workflow process timeline"
101
+ />
102
+ );
103
+ }
@@ -0,0 +1,56 @@
1
+ "use client";
2
+
3
+ import { Testimonials as SharedTestimonials } from "@/components/sections/Testimonials";
4
+
5
+ export function Testimonials() {
6
+ return (
7
+ <SharedTestimonials
8
+ testimonialSectionHeader="Operators, RevOps, and IT teams keep the loop closed"
9
+ testimonials={[
10
+ {
11
+ testimonialText:
12
+ "We replaced manual intake, Slack follow-up, and CRM updates with one workflow that now runs end-to-end in minutes.",
13
+ testimonialAuthor: "- Maya Chen, RevOps Lead at Northstar",
14
+ testimonialAuthorInitials: "MC",
15
+ },
16
+ {
17
+ testimonialText:
18
+ "Approvals used to stall launches for hours. Now legal only sees the exceptions and everyone else gets live status automatically.",
19
+ testimonialAuthor: "- Daniel Ruiz, GTM Systems Manager",
20
+ testimonialAuthorInitials: "DR",
21
+ },
22
+ {
23
+ testimonialText:
24
+ "The audit trail made adoption easy. Teams trust the automations because every action is grounded, visible, and recoverable.",
25
+ testimonialAuthor: "- Priya Patel, Director of Operations",
26
+ testimonialAuthorInitials: "PP",
27
+ },
28
+ ]}
29
+ section={{ className: "bg-background py-18 px-6 md:py-22" }}
30
+ container={{ className: "max-w-7xl mx-auto" }}
31
+ header={{ className: "mb-12 text-center" }}
32
+ heading={{
33
+ className:
34
+ "font-outfit text-3xl font-semibold text-[var(--heading-fg)] md:text-4xl",
35
+ }}
36
+ grid={{ className: "grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3" }}
37
+ card={{
38
+ className:
39
+ "rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-6 text-[var(--card-fg)] shadow-[var(--card-shadow)] transition-transform duration-200 hover:-translate-y-1",
40
+ }}
41
+ text={{
42
+ className: "font-inter text-base italic leading-7 text-[var(--card-fg)]",
43
+ }}
44
+ author={{
45
+ className:
46
+ "font-inter text-sm font-medium text-[var(--card-muted-fg)]",
47
+ }}
48
+ avatar={{
49
+ className:
50
+ "flex h-12 w-12 items-center justify-center rounded-full border border-[var(--badge-border)] bg-[var(--badge-bg)] text-[var(--badge-fg)]",
51
+ }}
52
+ avatarText={{ className: "font-inter text-sm font-bold" }}
53
+ ariaLabel="AI workflow customer testimonials"
54
+ />
55
+ );
56
+ }
@@ -0,0 +1,59 @@
1
+ "use client";
2
+
3
+ import { TrustBadges as SharedTrustBadges } from "@/components/sections/TrustBadges";
4
+
5
+ export function TrustBadges() {
6
+ return (
7
+ <SharedTrustBadges
8
+ id="trust-badges"
9
+ trustBadgesSectionHeader="Teams replacing manual ops with AI workflows"
10
+ badges={[
11
+ {
12
+ badgeText: "72% faster routing",
13
+ badgeDescription: "Workflow handoffs",
14
+ badgeIcon: "⚡",
15
+ },
16
+ {
17
+ badgeText: "40+ integrations",
18
+ badgeDescription: "Connected systems",
19
+ badgeIcon: "🔌",
20
+ },
21
+ {
22
+ badgeText: "SOC 2 ready",
23
+ badgeDescription: "Security posture",
24
+ badgeIcon: "🔒",
25
+ },
26
+ {
27
+ badgeText: "Full audit trail",
28
+ badgeDescription: "Approvals + logs",
29
+ badgeIcon: "🧾",
30
+ },
31
+ ]}
32
+ section={{
33
+ className:
34
+ "border-y border-slate-200/80 bg-white/70 py-10 dark:border-slate-800 dark:bg-slate-950/60",
35
+ }}
36
+ container={{ className: "max-w-7xl mx-auto px-6 md:px-8 lg:px-12" }}
37
+ header={{ className: "mb-10 text-center" }}
38
+ heading={{
39
+ className:
40
+ "font-outfit text-2xl font-semibold text-[var(--heading-fg)] md:text-3xl",
41
+ }}
42
+ badgesContainer={{
43
+ className: "flex flex-wrap items-center justify-center gap-8 md:gap-12",
44
+ }}
45
+ badge={{ className: "min-w-[170px] text-center" }}
46
+ badgeContent={{ className: "flex flex-col items-center gap-3" }}
47
+ icon={{ className: "text-3xl" }}
48
+ description={{
49
+ className: "text-sm font-inter text-[var(--card-muted-fg)]",
50
+ }}
51
+ text={{
52
+ className:
53
+ "font-inter text-base font-semibold text-[var(--card-title-fg)]",
54
+ }}
55
+ layout="horizontal"
56
+ ariaLabel="AI workflow trust badges"
57
+ />
58
+ );
59
+ }
@@ -0,0 +1,43 @@
1
+ import { Navbar } from "./components/Navbar";
2
+ import { Hero } from "./components/Hero";
3
+ import { TrustBadges } from "./components/TrustBadges";
4
+ import { Features } from "./components/Features";
5
+ import { ProcessTimeline } from "./components/ProcessTimeline";
6
+ import { Testimonials } from "./components/Testimonials";
7
+ import { Pricing } from "./components/Pricing";
8
+ import { FAQ } from "./components/FAQ";
9
+ import { CTA } from "./components/CTA";
10
+ import { Contact } from "./components/Contact";
11
+ import { Footer } from "./components/Footer";
12
+
13
+ import { PresetThemeVars } from "./PresetThemeVars";
14
+
15
+ export default function AIWorkflowTemplatePage() {
16
+ return (
17
+ <PresetThemeVars>
18
+ <div>
19
+ <Navbar />
20
+ <section id="home">
21
+ <Hero />
22
+ </section>
23
+ <TrustBadges />
24
+ <section id="features">
25
+ <Features />
26
+ <ProcessTimeline />
27
+ </section>
28
+ <Testimonials />
29
+ <section id="pricing">
30
+ <Pricing />
31
+ </section>
32
+ <section id="faq">
33
+ <FAQ />
34
+ </section>
35
+ <CTA />
36
+ <section id="contact">
37
+ <Contact />
38
+ </section>
39
+ <Footer />
40
+ </div>
41
+ </PresetThemeVars>
42
+ );
43
+ }
@@ -1,80 +1,80 @@
1
- import React from "react";
2
- import { cn } from "@/lib/utils";
3
-
4
- type Props = React.PropsWithChildren<{ className?: string }>;
5
-
6
- /**
7
- * DigitalAgency template theme variables wrapper.
8
- * Emerald-leaning palette; adjust to match your preset exactly.
9
- */
10
- export function PresetThemeVars({ className, children }: Props) {
11
- return (
12
- <div
13
- className={cn(
14
- // Shared button ring
15
- "[--btn-ring:theme(colors.emerald.500)] dark:[--btn-ring:theme(colors.emerald.400)]",
16
-
17
- // Inputs
18
- "[--input-bg:theme(colors.white)] dark:[--input-bg:theme(colors.gray.900)]",
19
- "[--input-fg:theme(colors.gray.900)] dark:[--input-fg:theme(colors.gray.100)]",
20
- "[--input-placeholder:theme(colors.gray.400)] dark:[--input-placeholder:theme(colors.gray.500)]",
21
- "[--input-border:theme(colors.emerald.200)] dark:[--input-border:theme(colors.emerald.700)]",
22
- "[--input-focus-ring:theme(colors.emerald.500)] dark:[--input-focus-ring:theme(colors.emerald.400)]",
23
- "[--input-ring-offset:theme(colors.white)] dark:[--input-ring-offset:theme(colors.gray.900)]",
24
-
25
- // Cards
26
- "[--card-bg:theme(colors.white)] dark:[--card-bg:theme(colors.gray.900)]",
27
- "[--card-fg:theme(colors.gray.900)] dark:[--card-fg:theme(colors.gray.100)]",
28
- "[--card-title-fg:theme(colors.gray.900)] dark:[--card-title-fg:theme(colors.gray.100)]",
29
- "[--card-muted-fg:theme(colors.gray.500)] dark:[--card-muted-fg:theme(colors.gray.400)]",
30
- "[--card-border:theme(colors.gray.200)] dark:[--card-border:theme(colors.gray.800)]",
31
- "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
32
-
33
- // Badges/Chips
34
- "[--badge-bg:theme(colors.emerald.50)] dark:[--badge-bg:theme(colors.emerald.950)]",
35
- "[--badge-fg:theme(colors.emerald.700)] dark:[--badge-fg:theme(colors.emerald.300)]",
36
- "[--badge-border:theme(colors.emerald.200)] dark:[--badge-border:theme(colors.emerald.800)]",
37
- "[--badge-active-bg:theme(colors.emerald.600)] dark:[--badge-active-bg:theme(colors.emerald.500)]",
38
- "[--badge-active-fg:theme(colors.white)] dark:[--badge-active-fg:theme(colors.white)]",
39
- "[--badge-active-border:theme(colors.emerald.700)] dark:[--badge-active-border:theme(colors.emerald.400)]",
40
-
41
- // Headings/Subheadings
42
- "[--heading-fg:theme(colors.gray.900)] dark:[--heading-fg:theme(colors.gray.100)]",
43
- "[--subheading-fg:theme(colors.gray.600)] dark:[--subheading-fg:theme(colors.gray.300)]",
44
- "[--description-fg:theme(colors.gray.700)] dark:[--description-fg:theme(colors.gray.200)]",
45
-
46
- // Process timeline
47
- "[--process-step-bg:theme(colors.fuchsia.600)] dark:[--process-step-bg:theme(colors.fuchsia.500)]",
48
- "[--process-step-fg:theme(colors.white)] dark:[--process-step-fg:theme(colors.white)]",
49
- "[--process-connector:theme(colors.gray.300)] dark:[--process-connector:theme(colors.gray.600)]",
50
-
51
- // Portfolio metrics color
52
- "[--metric-fg:theme(colors.fuchsia.600)] dark:[--metric-fg:theme(colors.fuchsia.400)]",
53
-
54
- // Footer
55
- "[--footer-bg:transparent] dark:[--footer-bg:transparent]",
56
- "[--footer-fg:theme(colors.gray.800)] dark:[--footer-fg:theme(colors.gray.100)]",
57
- "[--footer-heading-fg:theme(colors.gray.900)] dark:[--footer-heading-fg:theme(colors.gray.100)]",
58
- "[--footer-link-fg:theme(colors.gray.700)] dark:[--footer-link-fg:theme(colors.gray.300)]",
59
- "[--footer-link-hover-fg:theme(colors.emerald.700)] dark:[--footer-link-hover-fg:theme(colors.emerald.400)]",
60
- "[--footer-link-hover-bg:theme(colors.emerald.50)] dark:[--footer-link-hover-bg:color-mix(in_oklab,oklch(0.17_0.05_152)_20%,transparent)]",
61
- "[--footer-muted-fg:theme(colors.gray.500)] dark:[--footer-muted-fg:theme(colors.gray.400)]",
62
- "[--footer-border:theme(colors.gray.200)] dark:[--footer-border:theme(colors.gray.800)]",
63
-
64
- // Table (optional)
65
- "[--table-fg:inherit]",
66
- "[--table-muted-fg:theme(colors.gray.500)] dark:[--table-muted-fg:theme(colors.gray.400)]",
67
- "[--table-head-fg:theme(colors.gray.700)] dark:[--table-head-fg:theme(colors.gray.300)]",
68
- "[--table-border:theme(colors.gray.200)] dark:[--table-border:theme(colors.gray.800)]",
69
- "[--table-row-hover-bg:theme(colors.gray.50)] dark:[--table-row-hover-bg:theme(colors.gray.900)]",
70
-
71
- // About section accent
72
- "[--about-accent:theme(colors.fuchsia.600)] dark:[--about-accent:theme(colors.fuchsia.400)]",
73
-
74
- className,
75
- )}
76
- >
77
- {children}
78
- </div>
79
- );
80
- }
1
+ import React from "react";
2
+ import { cn } from "@/lib/utils";
3
+
4
+ type Props = React.PropsWithChildren<{ className?: string }>;
5
+
6
+ /**
7
+ * DigitalAgency template theme variables wrapper.
8
+ * Emerald-leaning palette; adjust to match your preset exactly.
9
+ */
10
+ export function PresetThemeVars({ className, children }: Props) {
11
+ return (
12
+ <div
13
+ className={cn(
14
+ // Shared button ring
15
+ "[--btn-ring:theme(colors.emerald.500)] dark:[--btn-ring:theme(colors.emerald.400)]",
16
+
17
+ // Inputs
18
+ "[--input-bg:theme(colors.white)] dark:[--input-bg:theme(colors.gray.900)]",
19
+ "[--input-fg:theme(colors.gray.900)] dark:[--input-fg:theme(colors.gray.100)]",
20
+ "[--input-placeholder:theme(colors.gray.400)] dark:[--input-placeholder:theme(colors.gray.500)]",
21
+ "[--input-border:theme(colors.emerald.200)] dark:[--input-border:theme(colors.emerald.700)]",
22
+ "[--input-focus-ring:theme(colors.emerald.500)] dark:[--input-focus-ring:theme(colors.emerald.400)]",
23
+ "[--input-ring-offset:theme(colors.white)] dark:[--input-ring-offset:theme(colors.gray.900)]",
24
+
25
+ // Cards
26
+ "[--card-bg:theme(colors.white)] dark:[--card-bg:theme(colors.gray.900)]",
27
+ "[--card-fg:theme(colors.gray.900)] dark:[--card-fg:theme(colors.gray.100)]",
28
+ "[--card-title-fg:theme(colors.gray.900)] dark:[--card-title-fg:theme(colors.gray.100)]",
29
+ "[--card-muted-fg:theme(colors.gray.500)] dark:[--card-muted-fg:theme(colors.gray.400)]",
30
+ "[--card-border:theme(colors.gray.200)] dark:[--card-border:theme(colors.gray.800)]",
31
+ "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
32
+
33
+ // Badges/Chips
34
+ "[--badge-bg:theme(colors.emerald.50)] dark:[--badge-bg:theme(colors.emerald.950)]",
35
+ "[--badge-fg:theme(colors.emerald.700)] dark:[--badge-fg:theme(colors.emerald.300)]",
36
+ "[--badge-border:theme(colors.emerald.200)] dark:[--badge-border:theme(colors.emerald.800)]",
37
+ "[--badge-active-bg:theme(colors.emerald.600)] dark:[--badge-active-bg:theme(colors.emerald.500)]",
38
+ "[--badge-active-fg:theme(colors.white)] dark:[--badge-active-fg:theme(colors.white)]",
39
+ "[--badge-active-border:theme(colors.emerald.700)] dark:[--badge-active-border:theme(colors.emerald.400)]",
40
+
41
+ // Headings/Subheadings
42
+ "[--heading-fg:theme(colors.gray.900)] dark:[--heading-fg:theme(colors.gray.100)]",
43
+ "[--subheading-fg:theme(colors.gray.600)] dark:[--subheading-fg:theme(colors.gray.300)]",
44
+ "[--description-fg:theme(colors.gray.700)] dark:[--description-fg:theme(colors.gray.200)]",
45
+
46
+ // Process timeline
47
+ "[--process-step-bg:theme(colors.fuchsia.600)] dark:[--process-step-bg:theme(colors.fuchsia.500)]",
48
+ "[--process-step-fg:theme(colors.white)] dark:[--process-step-fg:theme(colors.white)]",
49
+ "[--process-connector:theme(colors.gray.300)] dark:[--process-connector:theme(colors.gray.600)]",
50
+
51
+ // Portfolio metrics color
52
+ "[--metric-fg:theme(colors.fuchsia.600)] dark:[--metric-fg:theme(colors.fuchsia.400)]",
53
+
54
+ // Footer
55
+ "[--footer-bg:transparent] dark:[--footer-bg:transparent]",
56
+ "[--footer-fg:theme(colors.gray.800)] dark:[--footer-fg:theme(colors.gray.100)]",
57
+ "[--footer-heading-fg:theme(colors.gray.900)] dark:[--footer-heading-fg:theme(colors.gray.100)]",
58
+ "[--footer-link-fg:theme(colors.gray.700)] dark:[--footer-link-fg:theme(colors.gray.300)]",
59
+ "[--footer-link-hover-fg:theme(colors.emerald.700)] dark:[--footer-link-hover-fg:theme(colors.emerald.400)]",
60
+ "[--footer-link-hover-bg:theme(colors.emerald.50)] dark:[--footer-link-hover-bg:color-mix(in_oklab,oklch(0.17_0.05_152)_20%,transparent)]",
61
+ "[--footer-muted-fg:theme(colors.gray.500)] dark:[--footer-muted-fg:theme(colors.gray.400)]",
62
+ "[--footer-border:theme(colors.gray.200)] dark:[--footer-border:theme(colors.gray.800)]",
63
+
64
+ // Table (optional)
65
+ "[--table-fg:inherit]",
66
+ "[--table-muted-fg:theme(colors.gray.500)] dark:[--table-muted-fg:theme(colors.gray.400)]",
67
+ "[--table-head-fg:theme(colors.gray.700)] dark:[--table-head-fg:theme(colors.gray.300)]",
68
+ "[--table-border:theme(colors.gray.200)] dark:[--table-border:theme(colors.gray.800)]",
69
+ "[--table-row-hover-bg:theme(colors.gray.50)] dark:[--table-row-hover-bg:theme(colors.gray.900)]",
70
+
71
+ // About section accent
72
+ "[--about-accent:theme(colors.fuchsia.600)] dark:[--about-accent:theme(colors.fuchsia.400)]",
73
+
74
+ className,
75
+ )}
76
+ >
77
+ {children}
78
+ </div>
79
+ );
80
+ }