nextworks 0.2.0-alpha.13 → 0.2.0-alpha.14

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 (42) hide show
  1. package/README.md +3 -1
  2. package/dist/kits/blocks/.nextworks/docs/BLOCKS_QUICKSTART.md +2 -0
  3. package/dist/kits/blocks/.nextworks/docs/BLOCKS_README.md +2 -0
  4. package/dist/kits/blocks/app/templates/aiworkflow/PresetThemeVars.tsx +1 -58
  5. package/dist/kits/blocks/app/templates/aiworkflow/README.md +2 -0
  6. package/dist/kits/blocks/app/templates/aiworkflow/components/CTA.tsx +9 -9
  7. package/dist/kits/blocks/app/templates/aiworkflow/components/Contact.tsx +12 -13
  8. package/dist/kits/blocks/app/templates/aiworkflow/components/FAQ.tsx +22 -19
  9. package/dist/kits/blocks/app/templates/aiworkflow/components/FeatureMockups.tsx +562 -0
  10. package/dist/kits/blocks/app/templates/aiworkflow/components/Features.tsx +18 -16
  11. package/dist/kits/blocks/app/templates/aiworkflow/components/Footer.tsx +13 -9
  12. package/dist/kits/blocks/app/templates/aiworkflow/components/Hero.tsx +883 -636
  13. package/dist/kits/blocks/app/templates/aiworkflow/components/Navbar.tsx +14 -15
  14. package/dist/kits/blocks/app/templates/aiworkflow/components/Pricing.tsx +27 -22
  15. package/dist/kits/blocks/app/templates/aiworkflow/components/ProcessTimeline.tsx +20 -21
  16. package/dist/kits/blocks/app/templates/aiworkflow/components/Testimonials.tsx +17 -13
  17. package/dist/kits/blocks/app/templates/aiworkflow/components/TrustBadges.tsx +15 -12
  18. package/dist/kits/blocks/app/templates/aiworkflow/themes/animation.tsx +151 -0
  19. package/dist/kits/blocks/app/templates/aiworkflow/themes/default.tsx +158 -0
  20. package/dist/kits/blocks/app/templates/aiworkflow/themes/test.tsx +163 -0
  21. package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +46 -0
  22. package/dist/kits/blocks/app/templates/gallery/page.tsx +550 -161
  23. package/dist/kits/blocks/components/sections/HeroProductDemo.tsx +74 -64
  24. package/dist/kits/blocks/components/sections/Navbar.tsx +2 -0
  25. package/dist/kits/blocks/components/sections/product-demo/ApprovalInboxPanel.tsx +16 -13
  26. package/dist/kits/blocks/components/sections/product-demo/DemoStage.tsx +283 -162
  27. package/dist/kits/blocks/components/sections/product-demo/DemoWindow.tsx +65 -53
  28. package/dist/kits/blocks/components/sections/product-demo/KnowledgePanel.tsx +20 -17
  29. package/dist/kits/blocks/components/sections/product-demo/RunConsolePanel.tsx +208 -127
  30. package/dist/kits/blocks/components/sections/product-demo/TaskListPanel.tsx +95 -0
  31. package/dist/kits/blocks/components/sections/product-demo/WorkflowStudioPanel.tsx +714 -161
  32. package/dist/kits/blocks/components/sections/product-demo/types.ts +69 -0
  33. package/dist/kits/blocks/components/ui/theme-selector.tsx +1 -1
  34. package/dist/kits/blocks/package-deps.json +3 -3
  35. package/dist/kits/blocks/public/placeholders/aiworkflow/live.svg +92 -0
  36. package/dist/kits/blocks/public/placeholders/aiworkflow/review.svg +80 -0
  37. package/dist/kits/blocks/public/placeholders/aiworkflow/task.svg +71 -0
  38. package/dist/kits/blocks/tsconfig.json +13 -0
  39. package/dist/utils/file-operations.d.ts.map +1 -1
  40. package/dist/utils/file-operations.js +6 -1
  41. package/dist/utils/file-operations.js.map +1 -1
  42. package/package.json +1 -1
@@ -9,10 +9,16 @@ type PresetOverrides = Partial<SharedNavbarProps>;
9
9
  const defaultProps: SharedNavbarProps = {
10
10
  brand: "FlowPilot AI",
11
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
12
+ <div className="flex h-8 w-8 items-center justify-center rounded-lg border border-[var(--navbar-border)] bg-[var(--navbar-accent)] text-[var(--navbar-toggle-bg)] shadow-sm ring-1 ring-white/20 dark:ring-white/10">
13
+ <span className="grid grid-cols-2 gap-[2px]">
14
+ <span className="h-[4px] w-[4px] rounded-[1px] bg-current/95" />
15
+ <span className="h-[4px] w-[4px] rounded-[1px] bg-current/55" />
16
+ <span className="h-[4px] w-[4px] rounded-[1px] bg-current/55" />
17
+ <span className="h-[4px] w-[4px] rounded-[1px] bg-current/95" />
18
+ </span>
14
19
  </div>
15
20
  ),
21
+
16
22
  menuItems: [
17
23
  { label: "Home", href: "#home" },
18
24
  { label: "Features", href: "#features" },
@@ -28,21 +34,14 @@ const defaultProps: SharedNavbarProps = {
28
34
  className: "",
29
35
  nav: {
30
36
  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)]",
37
+ "border-b border-[var(--navbar-border)] bg-[var(--navbar-bg)] text-[var(--navbar-fg)] backdrop-blur supports-[backdrop-filter]:bg-[var(--navbar-bg)] supports-[backdrop-filter]:dark:bg-[var(--navbar-bg)]",
38
38
  },
39
39
  brandText: {
40
- className:
41
- "text-xl font-semibold font-outfit text-slate-950 dark:text-white",
40
+ className: "text-xl font-semibold font-outfit text-[var(--navbar-accent)]",
42
41
  },
43
42
  links: {
44
43
  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",
44
+ "text-sm font-medium font-inter text-[var(--navbar-link-fg)] hover:text-[var(--navbar-link-hover-fg)] focus:ring-[var(--navbar-ring)]",
46
45
  },
47
46
  ctaButtonStyle: {
48
47
  variant: "default",
@@ -51,20 +50,20 @@ const defaultProps: SharedNavbarProps = {
51
50
  "shadow-md transition-all duration-200 hover:-translate-y-0.5 hover:shadow-lg",
52
51
  },
53
52
  mobileMenu: {
54
- className: "border-t border-slate-200 dark:border-slate-800",
53
+ className: "border-t border-[var(--navbar-border)]",
55
54
  },
56
55
  container: {
57
56
  className: "max-w-7xl mx-auto",
58
57
  },
59
58
  brandWrapper: {
60
- className: "",
59
+ className: "-ml-2",
61
60
  },
62
61
  desktopMenu: {
63
62
  className: "hidden items-center space-x-1 md:flex lg:space-x-6",
64
63
  },
65
64
  toggleButton: {
66
65
  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",
66
+ "md:hidden flex items-center justify-center rounded-md border border-[var(--navbar-border)] bg-[var(--navbar-toggle-bg)] p-2 transition-colors hover:bg-[var(--navbar-hover-bg)] focus:outline-none focus:ring-2 focus:ring-[var(--navbar-ring)]",
68
67
  },
69
68
  colorModeWrapper: {
70
69
  className: "ml-2",
@@ -6,16 +6,16 @@ export function Pricing() {
6
6
  return (
7
7
  <SharedPricing
8
8
  id="pricing"
9
- pricingHeadingText="Pricing for teams automating real operational work"
9
+ pricingHeadingText="Pricing for teams shipping with coding agents"
10
10
  pricingPlans={[
11
11
  {
12
12
  pricingPlanHeaderText: "Starter",
13
13
  pricingPlanPrice: "$49/mo",
14
14
  pricingPlanFeatures: [
15
- "3 active workflows",
16
- "Slack and email intake",
17
- "Shared approval inbox",
18
- "Core analytics",
15
+ "3 active repos",
16
+ "GitHub and docs intake",
17
+ "Shared review queue",
18
+ "Patch analytics",
19
19
  ],
20
20
  pricingPlanCTALabel: "Start free",
21
21
  pricingPlanCTAHref: "#contact",
@@ -24,11 +24,11 @@ export function Pricing() {
24
24
  pricingPlanHeaderText: "Growth",
25
25
  pricingPlanPrice: "$149/mo",
26
26
  pricingPlanFeatures: [
27
- "Unlimited workflows",
28
- "CRM and project tool sync",
29
- "Advanced approval routing",
30
- "Live execution dashboards",
31
- "Role-based governance",
27
+ "Unlimited agent runs",
28
+ "Repo, issue tracker, and CI sync",
29
+ "Review gates and approvals",
30
+ "Live diff dashboards",
31
+ "Role-based code governance",
32
32
  ],
33
33
  pricingPlanCTALabel: "Book a demo",
34
34
  pricingPlanCTAHref: "#contact",
@@ -38,23 +38,27 @@ export function Pricing() {
38
38
  pricingPlanHeaderText: "Enterprise",
39
39
  pricingPlanPrice: "Custom",
40
40
  pricingPlanFeatures: [
41
- "Private deployment options",
42
- "Custom policy and knowledge connectors",
43
- "SSO and audit exports",
44
- "Dedicated onboarding",
45
- "Priority support",
41
+ "Private agent deployment options",
42
+ "Custom repo and context connectors",
43
+ "SSO and change exports",
44
+ "Dedicated rollout support",
45
+ "Priority agent support",
46
46
  ],
47
- pricingPlanCTALabel: "Talk to sales",
47
+ pricingPlanCTALabel: "Talk to the team",
48
48
  pricingPlanCTAHref: "#contact",
49
49
  },
50
50
  ]}
51
- section={{ className: "bg-background pt-18 pb-16" }}
51
+ section={{
52
+ className: "bg-[var(--section-bg)] pt-18 pb-16",
53
+ }}
52
54
  container={{ className: "max-w-7xl mx-auto px-6" }}
53
55
  heading={{
54
56
  className:
55
57
  "mb-4 text-center font-outfit text-3xl font-semibold text-[var(--heading-fg)] md:text-4xl lg:text-5xl",
56
58
  }}
57
- grid={{ className: "mt-12 grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3" }}
59
+ grid={{
60
+ className: "mt-12 grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3",
61
+ }}
58
62
  card={{
59
63
  className:
60
64
  "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",
@@ -68,19 +72,20 @@ export function Pricing() {
68
72
  "font-outfit text-3xl font-semibold text-[var(--card-title-fg)]",
69
73
  }}
70
74
  featureItem={{
71
- className: "font-inter text-sm text-[var(--card-muted-fg)] md:text-base",
75
+ className:
76
+ "font-inter text-sm text-[var(--card-muted-fg)] md:text-base",
72
77
  }}
73
78
  cta={{
74
79
  variant: "default",
75
80
  size: "lg",
76
81
  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)]",
82
+ "w-full font-inter font-semibold [--btn-bg:var(--hero-cta-primary-bg)] [--btn-fg:var(--hero-cta-primary-fg)] [--btn-border:var(--hero-cta-primary-border)] hover:[--btn-hover-bg:var(--hero-cta-primary-hover-bg)] hover:[--btn-hover-fg:var(--hero-cta-primary-hover-fg)]",
78
83
  }}
79
84
  popularBadge={{
80
85
  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)]",
86
+ "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)] shadow-sm shadow-black/5",
82
87
  }}
83
- ariaLabel="AI workflow pricing"
88
+ ariaLabel="AI coding agent pricing"
84
89
  />
85
90
  );
86
91
  }
@@ -8,38 +8,38 @@ export function ProcessTimeline() {
8
8
  steps={[
9
9
  {
10
10
  stepNumber: 1,
11
- title: "Capture the request",
11
+ title: "Capture the issue",
12
12
  description:
13
- "AI turns messages, tickets, and forms into structured workflow inputs with clear intent and metadata.",
13
+ "A plain-language report becomes a structured task with intent, files, and context.",
14
14
  icon: "✉️",
15
15
  },
16
16
  {
17
17
  stepNumber: 2,
18
- title: "Ground the decision",
18
+ title: "Read the codebase",
19
19
  description:
20
- "Policies, playbooks, and account context are pulled in before the workflow takes action.",
20
+ "The agent inspects the relevant files, notes patterns, and checks surrounding context before editing.",
21
21
  icon: "🧠",
22
22
  },
23
23
  {
24
24
  stepNumber: 3,
25
- title: "Route approvals and actions",
25
+ title: "Patch and preview",
26
26
  description:
27
- "Human review appears only when thresholds or policy require it, while approved actions continue automatically.",
27
+ "Edits land in the diff, and the preview updates once the patch is applied.",
28
28
  icon: "✅",
29
29
  },
30
30
  {
31
31
  stepNumber: 4,
32
- title: "Sync every tool",
32
+ title: "Validate and ship",
33
33
  description:
34
- "CRM records, project tasks, team updates, and audit logs stay aligned from one execution graph.",
34
+ "Checks, reviews, and logs stay aligned before the change is ready to merge.",
35
35
  icon: "🔄",
36
36
  },
37
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."
38
+ heading="From issue to merged fix in four clear stages"
39
+ subheading="Keep the coding agent visible, governed, and steady across the tools your team already uses."
40
40
  section={{
41
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%)]",
42
+ "bg-[linear-gradient(180deg,#eef3f8_0%,#f6f8fb_48%,#eef3f8_100%)] py-18 md:py-22 dark:bg-[linear-gradient(180deg,#171717_0%,#121212_18%,#1d1d1d_46%,#131313_76%,#1b1b1b_100%)]",
43
43
  }}
44
44
  container={{ className: "max-w-6xl mx-auto px-6 md:px-10" }}
45
45
  header={{ className: "mb-16 text-center" }}
@@ -57,14 +57,15 @@ export function ProcessTimeline() {
57
57
  }}
58
58
  connectingLine={{
59
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",
60
+ "absolute left-16 right-16 top-8 h-px bg-gradient-to-r from-slate-200 via-slate-300 to-slate-200 dark:from-slate-800 dark:via-slate-700 dark:to-slate-800",
61
61
  }}
62
62
  stepContainer={{
63
- className: "relative z-10 flex max-w-56 flex-1 flex-col items-center gap-5",
63
+ className:
64
+ "relative z-10 flex max-w-56 flex-1 flex-col items-center gap-5",
64
65
  }}
65
66
  stepCircle={{
66
67
  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
+ "flex h-16 w-16 items-center justify-center rounded-full bg-[var(--process-step-bg)] text-[var(--process-step-fg)] shadow-lg shadow-black/10",
68
69
  }}
69
70
  stepNumber={{ className: "font-outfit text-2xl font-bold" }}
70
71
  stepIcon={{ className: "text-3xl" }}
@@ -74,18 +75,17 @@ export function ProcessTimeline() {
74
75
  "font-inter text-lg font-semibold text-[var(--card-title-fg)]",
75
76
  }}
76
77
  stepDescription={{
77
- className:
78
- "font-inter text-sm leading-6 text-[var(--card-muted-fg)]",
78
+ className: "font-inter text-sm leading-6 text-[var(--card-muted-fg)]",
79
79
  }}
80
80
  mobileTimeline={{ className: "flex w-full flex-col gap-8 lg:hidden" }}
81
81
  mobileStep={{ className: "relative flex items-start" }}
82
82
  mobileVerticalLine={{
83
83
  className:
84
- "absolute bottom-[-2rem] left-8 top-16 w-px bg-cyan-300 dark:bg-cyan-700",
84
+ "absolute bottom-[-2rem] left-8 top-16 w-px bg-[var(--process-connector)]",
85
85
  }}
86
86
  mobileStepCircle={{
87
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",
88
+ "mr-6 flex h-16 w-16 shrink-0 items-center justify-center rounded-full bg-[var(--process-step-bg)] text-[var(--process-step-fg)] shadow-lg shadow-black/10",
89
89
  }}
90
90
  mobileStepContent={{ className: "flex-1 space-y-3 pt-2" }}
91
91
  mobileStepIcon={{ className: "text-3xl" }}
@@ -94,10 +94,9 @@ export function ProcessTimeline() {
94
94
  "font-inter text-lg font-semibold text-[var(--card-title-fg)]",
95
95
  }}
96
96
  mobileStepDescription={{
97
- className:
98
- "font-inter text-sm leading-6 text-[var(--card-muted-fg)]",
97
+ className: "font-inter text-sm leading-6 text-[var(--card-muted-fg)]",
99
98
  }}
100
- ariaLabel="AI workflow process timeline"
99
+ ariaLabel="AI coding agent process timeline"
101
100
  />
102
101
  );
103
102
  }
@@ -5,52 +5,56 @@ import { Testimonials as SharedTestimonials } from "@/components/sections/Testim
5
5
  export function Testimonials() {
6
6
  return (
7
7
  <SharedTestimonials
8
- testimonialSectionHeader="Operators, RevOps, and IT teams keep the loop closed"
8
+ testimonialSectionHeader="Engineers keep the loop closed"
9
9
  testimonials={[
10
10
  {
11
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",
12
+ "We replaced ticket triage, hand-written follow-up, and repetitive patching with one agent flow that now lands fixes in minutes.",
13
+ testimonialAuthor: "- Maya Chen, Platform Lead at Northstar",
14
14
  testimonialAuthorInitials: "MC",
15
15
  },
16
16
  {
17
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",
18
+ "Reviews used to stall merges for hours. Now the team only sees the exceptions and everyone else gets live status automatically.",
19
+ testimonialAuthor: "- Daniel Ruiz, Engineering Manager",
20
20
  testimonialAuthorInitials: "DR",
21
21
  },
22
22
  {
23
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",
24
+ "The audit trail made adoption easy. Teams trust the agent because every read, edit, and review is grounded, visible, and recoverable.",
25
+ testimonialAuthor: "- Priya Patel, Head of Developer Experience",
26
26
  testimonialAuthorInitials: "PP",
27
27
  },
28
28
  ]}
29
- section={{ className: "bg-background py-18 px-6 md:py-22" }}
29
+ section={{
30
+ className: "bg-[var(--section-bg)] py-18 px-6 md:py-22",
31
+ }}
30
32
  container={{ className: "max-w-7xl mx-auto" }}
31
33
  header={{ className: "mb-12 text-center" }}
32
34
  heading={{
33
35
  className:
34
36
  "font-outfit text-3xl font-semibold text-[var(--heading-fg)] md:text-4xl",
35
37
  }}
36
- grid={{ className: "grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3" }}
38
+ grid={{
39
+ className: "grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3",
40
+ }}
37
41
  card={{
38
42
  className:
39
43
  "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
44
  }}
41
45
  text={{
42
- className: "font-inter text-base italic leading-7 text-[var(--card-fg)]",
46
+ className:
47
+ "font-inter text-base italic leading-7 text-[var(--card-fg)]",
43
48
  }}
44
49
  author={{
45
- className:
46
- "font-inter text-sm font-medium text-[var(--card-muted-fg)]",
50
+ className: "font-inter text-sm font-medium text-[var(--card-muted-fg)]",
47
51
  }}
48
52
  avatar={{
49
53
  className:
50
54
  "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
55
  }}
52
56
  avatarText={{ className: "font-inter text-sm font-bold" }}
53
- ariaLabel="AI workflow customer testimonials"
57
+ ariaLabel="AI coding agent customer testimonials"
54
58
  />
55
59
  );
56
60
  }
@@ -6,32 +6,32 @@ export function TrustBadges() {
6
6
  return (
7
7
  <SharedTrustBadges
8
8
  id="trust-badges"
9
- trustBadgesSectionHeader="Teams replacing manual ops with AI workflows"
9
+ trustBadgesSectionHeader="Teams shipping code with agents in the loop"
10
10
  badges={[
11
11
  {
12
- badgeText: "72% faster routing",
13
- badgeDescription: "Workflow handoffs",
12
+ badgeText: "Faster fixes, fewer handoffs",
13
+ badgeDescription: "Code handoffs",
14
14
  badgeIcon: "⚡",
15
15
  },
16
16
  {
17
- badgeText: "40+ integrations",
18
- badgeDescription: "Connected systems",
17
+ badgeText: "GitHub-native",
18
+ badgeDescription: "Repo + CI aware",
19
19
  badgeIcon: "🔌",
20
20
  },
21
21
  {
22
- badgeText: "SOC 2 ready",
23
- badgeDescription: "Security posture",
22
+ badgeText: "Review gates ready",
23
+ badgeDescription: "Approval posture",
24
24
  badgeIcon: "🔒",
25
25
  },
26
26
  {
27
- badgeText: "Full audit trail",
28
- badgeDescription: "Approvals + logs",
27
+ badgeText: "Full change trail",
28
+ badgeDescription: "Reads + edits + reviews",
29
29
  badgeIcon: "🧾",
30
30
  },
31
31
  ]}
32
32
  section={{
33
33
  className:
34
- "border-y border-slate-200/80 bg-white/70 py-10 dark:border-slate-800 dark:bg-slate-950/60",
34
+ "border-y border-[var(--section-border)] bg-[var(--section-bg)] py-10",
35
35
  }}
36
36
  container={{ className: "max-w-7xl mx-auto px-6 md:px-8 lg:px-12" }}
37
37
  header={{ className: "mb-10 text-center" }}
@@ -42,7 +42,10 @@ export function TrustBadges() {
42
42
  badgesContainer={{
43
43
  className: "flex flex-wrap items-center justify-center gap-8 md:gap-12",
44
44
  }}
45
- badge={{ className: "min-w-[170px] text-center" }}
45
+ badge={{
46
+ className:
47
+ "min-w-[170px] rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] px-4 py-5 text-center shadow-[var(--card-shadow)]",
48
+ }}
46
49
  badgeContent={{ className: "flex flex-col items-center gap-3" }}
47
50
  icon={{ className: "text-3xl" }}
48
51
  description={{
@@ -53,7 +56,7 @@ export function TrustBadges() {
53
56
  "font-inter text-base font-semibold text-[var(--card-title-fg)]",
54
57
  }}
55
58
  layout="horizontal"
56
- ariaLabel="AI workflow trust badges"
59
+ ariaLabel="AI coding agent trust badges"
57
60
  />
58
61
  );
59
62
  }
@@ -0,0 +1,151 @@
1
+ import React from "react";
2
+
3
+ import { cn } from "@/lib/utils";
4
+
5
+ type Props = React.PropsWithChildren<{ className?: string }>;
6
+
7
+ export function PresetThemeVars({ className, children }: Props) {
8
+ return (
9
+ <div
10
+ className={cn(
11
+ "[--btn-ring:theme(colors.amber.300)] dark:[--btn-ring:theme(colors.amber.200)]",
12
+
13
+ "[--navbar-bg:rgba(255,255,255,0.92)] dark:[--navbar-bg:linear-gradient(135deg,rgba(2,6,23,0.99)_0%,rgba(15,23,42,0.98)_32%,rgba(29,78,216,0.9)_66%,rgba(146,64,14,0.92)_100%)]",
14
+ "[--navbar-fg:theme(colors.slate.900)] dark:[--navbar-fg:theme(colors.white)]",
15
+ "[--navbar-accent:theme(colors.amber.300)] dark:[--navbar-accent:theme(colors.cyan.200)]",
16
+ "[--navbar-link-fg:rgba(71,85,105,0.95)] dark:[--navbar-link-fg:rgba(226,232,240,0.88)]",
17
+ "[--navbar-link-hover-fg:theme(colors.slate.950)] dark:[--navbar-link-hover-fg:theme(colors.white)]",
18
+ "[--navbar-toggle-bg:rgba(15,23,42,0.06)] dark:[--navbar-toggle-bg:rgba(255,255,255,0.06)]",
19
+ "[--navbar-hover-bg:rgba(59,130,246,0.08)] dark:[--navbar-hover-bg:rgba(34,211,238,0.12)]",
20
+ "[--navbar-ring:theme(colors.blue.400)] dark:[--navbar-ring:theme(colors.amber.300)]",
21
+ "[--navbar-border:rgba(148,163,184,0.18)] dark:[--navbar-border:rgba(255,255,255,0.1)]",
22
+
23
+ "[--input-bg:rgba(255,255,255,0.94)] dark:[--input-bg:linear-gradient(180deg,rgba(2,6,23,0.98)_0%,rgba(15,23,42,0.96)_52%,rgba(30,41,59,0.94)_100%)]",
24
+ "[--input-fg:theme(colors.slate.900)] dark:[--input-fg:theme(colors.white)]",
25
+ "[--input-placeholder:rgba(100,116,139,0.82)] dark:[--input-placeholder:rgba(148,163,184,0.68)]",
26
+ "[--input-border:rgba(148,163,184,0.3)] dark:[--input-border:rgba(148,163,184,0.18)]",
27
+ "[--input-focus-ring:theme(colors.amber.300)] dark:[--input-focus-ring:theme(colors.cyan.300)]",
28
+ "[--input-ring-offset:theme(colors.slate.950)] dark:[--input-ring-offset:theme(colors.slate.950)]",
29
+
30
+ "[--card-bg:rgba(255,255,255,0.96)] dark:[--card-bg:linear-gradient(180deg,rgba(2,6,23,0.98)_0%,rgba(15,23,42,0.96)_52%,rgba(30,41,59,0.94)_100%)]",
31
+ "[--card-fg:theme(colors.slate.900)] dark:[--card-fg:theme(colors.white)]",
32
+ "[--card-title-fg:theme(colors.slate.900)] dark:[--card-title-fg:theme(colors.white)]",
33
+ "[--card-muted-fg:rgba(71,85,105,0.9)] dark:[--card-muted-fg:rgba(203,213,225,0.82)]",
34
+ "[--card-border:rgba(148,163,184,0.24)] dark:[--card-border:rgba(148,163,184,0.14)]",
35
+ "[--card-shadow:0_28px_90px_rgba(2,6,23,0.48)] dark:[--card-shadow:0_34px_120px_rgba(0,0,0,0.72)]",
36
+
37
+ "[--badge-bg:rgba(255,255,255,0.9)] dark:[--badge-bg:linear-gradient(180deg,rgba(15,23,42,0.86)_0%,rgba(30,41,59,0.8)_100%)]",
38
+ "[--badge-fg:theme(colors.slate.900)] dark:[--badge-fg:rgba(255,255,255,0.95)]",
39
+ "[--badge-border:rgba(148,163,184,0.24)] dark:[--badge-border:rgba(148,163,184,0.16)]",
40
+ "[--badge-active-bg:linear-gradient(135deg,theme(colors.blue.500)_0%,theme(colors.amber.300)_52%,theme(colors.cyan.400)_100%)] dark:[--badge-active-bg:linear-gradient(135deg,theme(colors.blue.400)_0%,theme(colors.amber.200)_52%,theme(colors.cyan.300)_100%)]",
41
+ "[--badge-active-fg:theme(colors.slate.950)] dark:[--badge-active-fg:theme(colors.slate.950)]",
42
+ "[--badge-active-border:rgba(255,255,255,0.14)] dark:[--badge-active-border:rgba(255,255,255,0.12)]",
43
+
44
+ "[--heading-fg:theme(colors.slate.950)] dark:[--heading-fg:theme(colors.white)]",
45
+ "[--subheading-fg:rgba(37,99,235,0.92)] dark:[--subheading-fg:rgba(125,211,252,0.94)]",
46
+ "[--description-fg:rgba(71,85,105,0.92)] dark:[--description-fg:rgba(226,232,240,0.86)]",
47
+
48
+ "[--hero-cta-primary-bg:linear-gradient(135deg,theme(colors.blue.600)_0%,theme(colors.amber.400)_52%,theme(colors.slate.900)_100%)] dark:[--hero-cta-primary-bg:linear-gradient(135deg,theme(colors.blue.500)_0%,theme(colors.amber.300)_52%,theme(colors.slate.900)_100%)]",
49
+ "[--hero-cta-primary-hover-bg:linear-gradient(135deg,theme(colors.amber.400)_0%,theme(colors.blue.600)_36%,theme(colors.cyan.400)_70%,theme(colors.slate.900)_100%)] dark:[--hero-cta-primary-hover-bg:linear-gradient(135deg,theme(colors.amber.300)_0%,theme(colors.blue.500)_36%,theme(colors.cyan.300)_70%,theme(colors.slate.900)_100%)]",
50
+ "[--hero-cta-primary-fg:theme(colors.slate.950)] dark:[--hero-cta-primary-fg:theme(colors.slate.950)]",
51
+ "[--hero-cta-primary-hover-fg:theme(colors.slate.950)] dark:[--hero-cta-primary-hover-fg:theme(colors.slate.950)]",
52
+ "[--hero-cta-secondary-bg:rgba(255,255,255,0.86)] dark:[--hero-cta-secondary-bg:rgba(15,23,42,0.8)]",
53
+ "[--hero-cta-secondary-fg:theme(colors.slate.900)] dark:[--hero-cta-secondary-fg:theme(colors.white)]",
54
+ "[--hero-cta-secondary-border:rgba(148,163,184,0.28)] dark:[--hero-cta-secondary-border:rgba(148,163,184,0.18)]",
55
+ "[--hero-cta-secondary-hover-bg:rgba(255,255,255,0.98)] dark:[--hero-cta-secondary-hover-bg:rgba(30,41,59,0.9)]",
56
+ "[--hero-cta-secondary-hover-fg:theme(colors.white)] dark:[--hero-cta-secondary-hover-fg:theme(colors.white)]",
57
+
58
+ "[--demo-shell-bg:linear-gradient(180deg,#020617_0%,#0f172a_26%,#1e3a8a_64%,#78350f_100%)] dark:[--demo-shell-bg:linear-gradient(180deg,#020617_0%,#0f172a_30%,#1e3a8a_64%,#78350f_100%)]",
59
+ "[--demo-shell-muted-bg:#020617] dark:[--demo-shell-muted-bg:#020617]",
60
+ "[--demo-shell-strong-bg:rgba(255,255,255,0.08)] dark:[--demo-shell-strong-bg:rgba(255,255,255,0.06)]",
61
+ "[--demo-panel-bg:linear-gradient(180deg,rgba(2,6,23,0.98)_0%,rgba(15,23,42,0.96)_100%)] dark:[--demo-panel-bg:linear-gradient(180deg,rgba(2,6,23,0.98)_0%,rgba(15,23,42,0.96)_100%)]",
62
+ "[--demo-panel-muted-bg:linear-gradient(180deg,rgba(30,64,175,0.34)_0%,rgba(180,83,9,0.36)_100%)] dark:[--demo-panel-muted-bg:linear-gradient(180deg,rgba(15,23,42,0.92)_0%,rgba(30,41,59,0.9)_100%)]",
63
+ "[--demo-panel-subtle-bg:linear-gradient(180deg,rgba(30,41,59,0.94)_0%,rgba(15,23,42,0.96)_100%)] dark:[--demo-panel-subtle-bg:linear-gradient(180deg,rgba(51,65,85,0.9)_0%,rgba(30,64,175,0.84)_100%)]",
64
+ "[--demo-panel-strong-bg:rgba(255,255,255,0.08)] dark:[--demo-panel-strong-bg:rgba(255,255,255,0.06)]",
65
+ "[--demo-code-bg:linear-gradient(180deg,rgba(2,6,23,0.98)_0%,rgba(15,23,42,0.96)_100%)] dark:[--demo-code-bg:linear-gradient(180deg,rgba(2,6,23,0.99)_0%,rgba(15,23,42,0.98)_100%)]",
66
+ "[--demo-code-gutter-bg:linear-gradient(180deg,rgba(15,23,42,0.98)_0%,rgba(30,64,175,0.9)_100%)] dark:[--demo-code-gutter-bg:linear-gradient(180deg,rgba(2,6,23,0.98)_0%,rgba(30,41,59,0.96)_100%)]",
67
+ "[--demo-border:rgba(148,163,184,0.22)] dark:[--demo-border:rgba(148,163,184,0.12)]",
68
+ "[--demo-border-strong:rgba(251,191,36,0.18)] dark:[--demo-border-strong:rgba(96,165,250,0.2)]",
69
+ "[--demo-fg:rgba(255,255,255,0.98)] dark:[--demo-fg:rgba(255,255,255,0.98)]",
70
+ "[--demo-muted-fg:rgba(226,232,240,0.9)] dark:[--demo-muted-fg:rgba(226,232,240,0.86)]",
71
+ "[--demo-subtle-fg:rgba(191,219,254,0.94)] dark:[--demo-subtle-fg:rgba(147,197,253,0.9)]",
72
+ "[--demo-accent:theme(colors.amber.300)] dark:[--demo-accent:theme(colors.cyan.200)]",
73
+ "[--demo-accent-soft-bg:rgba(251,191,36,0.1)] dark:[--demo-accent-soft-bg:rgba(34,211,238,0.12)]",
74
+ "[--demo-info:theme(colors.blue.300)] dark:[--demo-info:theme(colors.cyan.200)]",
75
+ "[--demo-info-border:rgba(96,165,250,0.28)] dark:[--demo-info-border:rgba(103,232,249,0.22)]",
76
+ "[--demo-info-soft-bg:rgba(59,130,246,0.1)] dark:[--demo-info-soft-bg:rgba(34,211,238,0.08)]",
77
+ "[--demo-success:theme(colors.green.300)] dark:[--demo-success:theme(colors.green.300)]",
78
+ "[--demo-success-border:rgba(74,222,128,0.24)] dark:[--demo-success-border:rgba(110,231,183,0.18)]",
79
+ "[--demo-success-soft-bg:rgba(34,197,94,0.1)] dark:[--demo-success-soft-bg:rgba(16,185,129,0.08)]",
80
+ "[--demo-warning:theme(colors.amber.300)] dark:[--demo-warning:theme(colors.amber.300)]",
81
+ "[--demo-warning-border:rgba(251,191,36,0.28)] dark:[--demo-warning-border:rgba(251,191,36,0.2)]",
82
+ "[--demo-warning-soft-bg:rgba(245,158,11,0.1)] dark:[--demo-warning-soft-bg:rgba(245,158,11,0.08)]",
83
+ "[--demo-danger:theme(colors.red.300)] dark:[--demo-danger:theme(colors.red.300)]",
84
+ "[--demo-danger-border:rgba(248,113,113,0.28)] dark:[--demo-danger-border:rgba(251,113,133,0.2)]",
85
+ "[--demo-danger-soft-bg:rgba(239,68,68,0.1)] dark:[--demo-danger-soft-bg:rgba(244,63,94,0.08)]",
86
+ "[--demo-scroll-track:rgba(148,163,184,0.14)] dark:[--demo-scroll-track:rgba(148,163,184,0.08)]",
87
+ "[--demo-scroll-thumb:linear-gradient(180deg,rgba(59,130,246,0.82),rgba(251,191,36,0.82),rgba(34,211,238,0.82))] dark:[--demo-scroll-thumb:linear-gradient(180deg,rgba(59,130,246,0.64),rgba(251,191,36,0.64),rgba(34,211,238,0.64))]",
88
+ "[--demo-shell-shadow:0_34px_120px_-48px_rgba(2,6,23,0.75)] dark:[--demo-shell-shadow:0_40px_140px_-56px_rgba(0,0,0,0.92)]",
89
+ "[--demo-shell-ring:rgba(251,191,36,0.18)] dark:[--demo-shell-ring:rgba(96,165,250,0.14)]",
90
+
91
+ "[--section-bg:radial-gradient(circle_at_top,rgba(59,130,246,0.08)_0%,rgba(14,165,233,0.06)_18%,rgba(251,191,36,0.06)_34%,rgba(248,250,252,1)_62%,rgba(241,245,249,1)_100%)] dark:[--section-bg:radial-gradient(circle_at_top,rgba(59,130,246,0.14)_0%,rgba(14,165,233,0.08)_18%,rgba(251,191,36,0.1)_34%,rgba(2,6,23,0.72)_62%,rgba(2,6,23,1)_100%)]",
92
+
93
+ "[--section-border:rgba(148,163,184,0.18)] dark:[--section-border:rgba(148,163,184,0.1)]",
94
+
95
+ "[--contact-section-bg:radial-gradient(circle_at_top,rgba(59,130,246,0.06)_0%,rgba(251,191,36,0.06)_24%,rgba(239,68,68,0.05)_46%,rgba(248,250,252,1)_74%,rgba(241,245,249,1)_100%)] dark:[--contact-section-bg:radial-gradient(circle_at_top,rgba(59,130,246,0.1)_0%,rgba(251,191,36,0.08)_24%,rgba(239,68,68,0.08)_46%,rgba(2,6,23,0.94)_74%,rgba(2,6,23,1)_100%)]",
96
+
97
+ "[--contact-submit-bg:linear-gradient(135deg,theme(colors.blue.600)_0%,theme(colors.amber.400)_28%,theme(colors.cyan.400)_58%,theme(colors.slate.900)_100%)] dark:[--contact-submit-bg:linear-gradient(135deg,theme(colors.blue.500)_0%,theme(colors.amber.300)_28%,theme(colors.cyan.300)_58%,theme(colors.slate.900)_100%)]",
98
+ "[--contact-submit-fg:theme(colors.slate.950)] dark:[--contact-submit-fg:theme(colors.slate.950)]",
99
+ "[--contact-submit-hover-bg:linear-gradient(135deg,theme(colors.amber.400)_0%,theme(colors.blue.600)_28%,theme(colors.cyan.400)_58%,theme(colors.slate.900)_100%)] dark:[--contact-submit-hover-bg:linear-gradient(135deg,theme(colors.amber.300)_0%,theme(colors.blue.500)_28%,theme(colors.cyan.300)_58%,theme(colors.slate.900)_100%)]",
100
+ "[--contact-submit-hover-fg:theme(colors.slate.950)] dark:[--contact-submit-hover-fg:theme(colors.slate.950)]",
101
+ "[--contact-submit-border:transparent]",
102
+
103
+ "[--cta-section-bg:radial-gradient(circle_at_top,rgba(59,130,246,0.06)_0%,rgba(251,191,36,0.06)_18%,rgba(14,165,233,0.05)_36%,rgba(99,102,241,0.06)_56%,rgba(248,250,252,1)_78%,rgba(241,245,249,1)_100%)] dark:[--cta-section-bg:radial-gradient(circle_at_top,rgba(59,130,246,0.1)_0%,rgba(251,191,36,0.08)_18%,rgba(14,165,233,0.08)_36%,rgba(99,102,241,0.1)_56%,rgba(2,6,23,0.98)_78%,rgba(2,6,23,1)_100%)]",
104
+ "[--cta-heading-fg:theme(colors.slate.950)] dark:[--cta-heading-fg:theme(colors.white)]",
105
+ "[--cta-subheading-fg:rgba(37,99,235,0.9)] dark:[--cta-subheading-fg:rgba(125,211,252,0.88)]",
106
+ "[--cta-description-fg:rgba(71,85,105,0.92)] dark:[--cta-description-fg:rgba(226,232,240,0.86)]",
107
+ "[--cta-primary-bg:linear-gradient(135deg,theme(colors.blue.600)_0%,theme(colors.amber.400)_50%,theme(colors.slate.900)_100%)] dark:[--cta-primary-bg:linear-gradient(135deg,theme(colors.blue.500)_0%,theme(colors.amber.300)_50%,theme(colors.slate.900)_100%)]",
108
+ "[--cta-primary-fg:theme(colors.slate.950)] dark:[--cta-primary-fg:theme(colors.slate.950)]",
109
+ "[--cta-primary-hover-bg:linear-gradient(135deg,theme(colors.amber.400)_0%,theme(colors.blue.600)_34%,theme(colors.cyan.400)_68%,theme(colors.slate.900)_100%)] dark:[--cta-primary-hover-bg:linear-gradient(135deg,theme(colors.amber.300)_0%,theme(colors.blue.500)_34%,theme(colors.cyan.300)_68%,theme(colors.slate.900)_100%)]",
110
+ "[--cta-primary-hover-fg:theme(colors.slate.950)] dark:[--cta-primary-hover-fg:theme(colors.slate.950)]",
111
+ "[--cta-primary-border:transparent]",
112
+ "[--cta-secondary-bg:rgba(255,255,255,0.86)]",
113
+ "[--cta-secondary-fg:theme(colors.slate.900)] dark:[--cta-secondary-fg:theme(colors.white)]",
114
+ "[--cta-secondary-border:rgba(148,163,184,0.26)] dark:[--cta-secondary-border:rgba(148,163,184,0.16)]",
115
+ "[--cta-secondary-hover-bg:rgba(255,255,255,0.98)] dark:[--cta-secondary-hover-bg:rgba(30,41,59,0.86)]",
116
+ "[--cta-secondary-hover-fg:theme(colors.slate.900)] dark:[--cta-secondary-hover-fg:theme(colors.white)]",
117
+
118
+ "[--process-step-bg:linear-gradient(135deg,theme(colors.blue.600)_0%,theme(colors.amber.400)_48%,theme(colors.cyan.400)_100%)] dark:[--process-step-bg:linear-gradient(135deg,theme(colors.blue.500)_0%,theme(colors.amber.300)_48%,theme(colors.cyan.300)_100%)]",
119
+ "[--process-step-fg:theme(colors.slate.950)] dark:[--process-step-fg:theme(colors.slate.950)]",
120
+ "[--process-connector:rgba(148,163,184,0.24)] dark:[--process-connector:rgba(148,163,184,0.22)]",
121
+
122
+ "[--footer-bg:linear-gradient(180deg,rgba(248,250,252,1)_0%,rgba(241,245,249,1)_34%,rgba(226,232,240,1)_68%,rgba(248,250,252,1)_100%)] dark:[--footer-bg:linear-gradient(180deg,rgba(2,6,23,0.9)_0%,rgba(15,23,42,0.92)_34%,rgba(30,41,59,0.88)_68%,rgba(2,6,23,0.98)_100%)]",
123
+
124
+ "[--footer-fg:rgba(71,85,105,0.92)] dark:[--footer-fg:rgba(226,232,240,0.88)]",
125
+ "[--footer-heading-fg:theme(colors.slate.900)] dark:[--footer-heading-fg:theme(colors.white)]",
126
+ "[--footer-link-fg:rgba(51,65,85,0.9)] dark:[--footer-link-fg:rgba(203,213,225,0.86)]",
127
+ "[--footer-link-hover-fg:theme(colors.slate.950)] dark:[--footer-link-hover-fg:theme(colors.white)]",
128
+ "[--footer-link-hover-bg:rgba(59,130,246,0.06)] dark:[--footer-link-hover-bg:rgba(255,255,255,0.06)]",
129
+ "[--footer-muted-fg:rgba(37,99,235,0.76)] dark:[--footer-muted-fg:rgba(148,163,184,0.76)]",
130
+ "[--footer-border:rgba(148,163,184,0.18)] dark:[--footer-border:rgba(148,163,184,0.08)]",
131
+
132
+ "[--table-fg:theme(colors.slate.900)]",
133
+ "[--table-muted-fg:rgba(71,85,105,0.88)] dark:[--table-muted-fg:rgba(148,163,184,0.8)]",
134
+ "[--table-head-fg:theme(colors.slate.900)] dark:[--table-head-fg:rgba(191,219,254,0.96)]",
135
+ "[--table-border:rgba(148,163,184,0.18)] dark:[--table-border:rgba(148,163,184,0.1)]",
136
+ "[--table-row-hover-bg:rgba(59,130,246,0.1)] dark:[--table-row-hover-bg:rgba(34,211,238,0.06)]",
137
+
138
+ "[--faq-btn-bg:rgba(255,255,255,0.88)] dark:[--faq-btn-bg:rgba(15,23,42,0.72)]",
139
+ "[--faq-btn-fg:theme(colors.slate.900)] dark:[--faq-btn-fg:theme(colors.white)]",
140
+ "[--faq-btn-hover-bg:rgba(255,255,255,0.98)] dark:[--faq-btn-hover-bg:rgba(30,41,59,0.86)]",
141
+ "[--faq-btn-hover-fg:theme(colors.slate.900)] dark:[--faq-btn-hover-fg:theme(colors.white)]",
142
+ "[--faq-answer-bg:rgba(255,255,255,0.96)] dark:[--faq-answer-bg:linear-gradient(180deg,rgba(2,6,23,0.98)_0%,rgba(15,23,42,0.96)_100%)]",
143
+ "[--faq-answer-fg:theme(colors.slate.900)] dark:[--faq-answer-fg:rgba(241,245,249,0.92)]",
144
+
145
+ className,
146
+ )}
147
+ >
148
+ {children}
149
+ </div>
150
+ );
151
+ }