nextworks 0.2.0-alpha.2 → 0.2.0-alpha.21

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 (145) hide show
  1. package/README.md +280 -228
  2. package/dist/cli_manifests/blocks_manifest.json +193 -194
  3. package/dist/commands/blocks.d.ts +3 -0
  4. package/dist/commands/blocks.d.ts.map +1 -1
  5. package/dist/commands/blocks.js +128 -19
  6. package/dist/commands/blocks.js.map +1 -1
  7. package/dist/commands/doctor.d.ts +136 -0
  8. package/dist/commands/doctor.d.ts.map +1 -0
  9. package/dist/commands/doctor.js +696 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/remove-blocks.d.ts +4 -1
  12. package/dist/commands/remove-blocks.d.ts.map +1 -1
  13. package/dist/commands/remove-blocks.js +24 -6
  14. package/dist/commands/remove-blocks.js.map +1 -1
  15. package/dist/index.js +125 -4
  16. package/dist/index.js.map +1 -1
  17. package/dist/kits/blocks/.nextworks/docs/BLOCKS_QUICKSTART.md +104 -194
  18. package/dist/kits/blocks/.nextworks/docs/BLOCKS_README.md +115 -75
  19. package/dist/kits/blocks/.nextworks/docs/THEME_GUIDE.md +269 -251
  20. package/dist/kits/blocks/app/templates/digitalagency/PresetThemeVars.tsx +80 -80
  21. package/dist/kits/blocks/app/templates/digitalagency/README.md +42 -36
  22. package/dist/kits/blocks/app/templates/digitalagency/components/About.tsx +71 -99
  23. package/dist/kits/blocks/app/templates/digitalagency/components/CTA.tsx +40 -74
  24. package/dist/kits/blocks/app/templates/digitalagency/components/Contact.tsx +123 -227
  25. package/dist/kits/blocks/app/templates/digitalagency/components/Footer.tsx +89 -89
  26. package/dist/kits/blocks/app/templates/digitalagency/components/Hero.tsx +83 -90
  27. package/dist/kits/blocks/app/templates/digitalagency/components/Navbar.tsx +121 -168
  28. package/dist/kits/blocks/app/templates/digitalagency/components/NetworkPattern.tsx +288 -297
  29. package/dist/kits/blocks/app/templates/digitalagency/components/Portfolio.tsx +157 -157
  30. package/dist/kits/blocks/app/templates/digitalagency/components/Pricing.tsx +114 -114
  31. package/dist/kits/blocks/app/templates/digitalagency/components/Process.tsx +59 -59
  32. package/dist/kits/blocks/app/templates/digitalagency/components/Services.tsx +55 -55
  33. package/dist/kits/blocks/app/templates/digitalagency/components/Team.tsx +28 -28
  34. package/dist/kits/blocks/app/templates/digitalagency/components/Testimonials.tsx +65 -65
  35. package/dist/kits/blocks/app/templates/digitalagency/page.tsx +38 -38
  36. package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +130 -85
  37. package/dist/kits/blocks/app/templates/gallery/page.tsx +357 -303
  38. package/dist/kits/blocks/app/templates/productlaunch/PresetThemeVars.tsx +75 -74
  39. package/dist/kits/blocks/app/templates/productlaunch/README.md +62 -55
  40. package/dist/kits/blocks/app/templates/productlaunch/components/About.tsx +84 -178
  41. package/dist/kits/blocks/app/templates/productlaunch/components/CTA.tsx +50 -93
  42. package/dist/kits/blocks/app/templates/productlaunch/components/Contact.tsx +231 -231
  43. package/dist/kits/blocks/app/templates/productlaunch/components/FAQ.tsx +86 -93
  44. package/dist/kits/blocks/app/templates/productlaunch/components/Features.tsx +83 -84
  45. package/dist/kits/blocks/app/templates/productlaunch/components/Footer.tsx +132 -132
  46. package/dist/kits/blocks/app/templates/productlaunch/components/Hero.tsx +88 -89
  47. package/dist/kits/blocks/app/templates/productlaunch/components/Navbar.tsx +116 -162
  48. package/dist/kits/blocks/app/templates/productlaunch/components/Pricing.tsx +106 -106
  49. package/dist/kits/blocks/app/templates/productlaunch/components/ProcessTimeline.tsx +110 -110
  50. package/dist/kits/blocks/app/templates/productlaunch/components/ServicesGrid.tsx +68 -68
  51. package/dist/kits/blocks/app/templates/productlaunch/components/Team.tsx +104 -104
  52. package/dist/kits/blocks/app/templates/productlaunch/components/Testimonials.tsx +90 -89
  53. package/dist/kits/blocks/app/templates/productlaunch/components/TrustBadges.tsx +76 -76
  54. package/dist/kits/blocks/app/templates/productlaunch/page.tsx +43 -43
  55. package/dist/kits/blocks/app/templates/saasdashboard/PresetThemeVars.tsx +80 -80
  56. package/dist/kits/blocks/app/templates/saasdashboard/README.md +44 -38
  57. package/dist/kits/blocks/app/templates/saasdashboard/components/Contact.tsx +129 -176
  58. package/dist/kits/blocks/app/templates/saasdashboard/components/Dashboard.tsx +293 -293
  59. package/dist/kits/blocks/app/templates/saasdashboard/components/FAQ.tsx +55 -55
  60. package/dist/kits/blocks/app/templates/saasdashboard/components/Features.tsx +90 -91
  61. package/dist/kits/blocks/app/templates/saasdashboard/components/Footer.tsx +77 -77
  62. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero.tsx +104 -105
  63. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero_mask.tsx +126 -127
  64. package/dist/kits/blocks/app/templates/saasdashboard/components/Navbar.tsx +117 -159
  65. package/dist/kits/blocks/app/templates/saasdashboard/components/Pricing.tsx +90 -90
  66. package/dist/kits/blocks/app/templates/saasdashboard/components/SmoothScroll.tsx +96 -97
  67. package/dist/kits/blocks/app/templates/saasdashboard/components/Testimonials.tsx +72 -72
  68. package/dist/kits/blocks/app/templates/saasdashboard/components/TrustBadges.tsx +53 -53
  69. package/dist/kits/blocks/app/templates/saasdashboard/page.tsx +39 -39
  70. package/dist/kits/blocks/components/enhanced-theme-provider.tsx +195 -183
  71. package/dist/kits/blocks/components/providers/BlocksAppProviders.tsx +27 -27
  72. package/dist/kits/blocks/components/sections/About.tsx +291 -291
  73. package/dist/kits/blocks/components/sections/CTA.tsx +257 -258
  74. package/dist/kits/blocks/components/sections/CommandShowcase.tsx +517 -0
  75. package/dist/kits/blocks/components/sections/Contact.tsx +267 -267
  76. package/dist/kits/blocks/components/sections/FAQ.tsx +214 -225
  77. package/dist/kits/blocks/components/sections/FeaturedProjectShowcase.tsx +687 -0
  78. package/dist/kits/blocks/components/sections/Features.tsx +268 -270
  79. package/dist/kits/blocks/components/sections/Footer.tsx +302 -302
  80. package/dist/kits/blocks/components/sections/HeroMotion.tsx +308 -308
  81. package/dist/kits/blocks/components/sections/HeroOverlay.tsx +358 -358
  82. package/dist/kits/blocks/components/sections/HeroProductDemo.tsx +246 -0
  83. package/dist/kits/blocks/components/sections/HeroSplit.tsx +352 -352
  84. package/dist/kits/blocks/components/sections/HeroWithVideo.tsx +495 -0
  85. package/dist/kits/blocks/components/sections/Navbar.tsx +352 -353
  86. package/dist/kits/blocks/components/sections/PortfolioSimple.tsx +549 -550
  87. package/dist/kits/blocks/components/sections/Pricing.tsx +264 -264
  88. package/dist/kits/blocks/components/sections/ProcessTimeline.tsx +325 -325
  89. package/dist/kits/blocks/components/sections/ProjectDeepDive.tsx +805 -0
  90. package/dist/kits/blocks/components/sections/SelectedWorkRail.tsx +485 -0
  91. package/dist/kits/blocks/components/sections/ServicesGrid.tsx +210 -210
  92. package/dist/kits/blocks/components/sections/Team.tsx +309 -309
  93. package/dist/kits/blocks/components/sections/Testimonials.tsx +158 -158
  94. package/dist/kits/blocks/components/sections/TrustBadges.tsx +162 -162
  95. package/dist/kits/blocks/components/sections/product-demo/ApprovalInboxPanel.tsx +128 -0
  96. package/dist/kits/blocks/components/sections/product-demo/DemoStage.tsx +519 -0
  97. package/dist/kits/blocks/components/sections/product-demo/DemoWindow.tsx +140 -0
  98. package/dist/kits/blocks/components/sections/product-demo/KnowledgePanel.tsx +130 -0
  99. package/dist/kits/blocks/components/sections/product-demo/RunConsolePanel.tsx +430 -0
  100. package/dist/kits/blocks/components/sections/product-demo/TaskListPanel.tsx +302 -0
  101. package/dist/kits/blocks/components/sections/product-demo/WorkflowStudioPanel.tsx +744 -0
  102. package/dist/kits/blocks/components/sections/product-demo/types.ts +262 -0
  103. package/dist/kits/blocks/components/theme-provider.tsx +1 -34
  104. package/dist/kits/blocks/components/ui/alert-dialog.tsx +134 -134
  105. package/dist/kits/blocks/components/ui/brand-node.tsx +121 -121
  106. package/dist/kits/blocks/components/ui/button.tsx +122 -122
  107. package/dist/kits/blocks/components/ui/card.tsx +95 -95
  108. package/dist/kits/blocks/components/ui/checkbox.tsx +30 -30
  109. package/dist/kits/blocks/components/ui/cta-button.tsx +125 -125
  110. package/dist/kits/blocks/components/ui/dropdown-menu.tsx +201 -201
  111. package/dist/kits/blocks/components/ui/feature-card.tsx +91 -91
  112. package/dist/kits/blocks/components/ui/input.tsx +27 -27
  113. package/dist/kits/blocks/components/ui/label.tsx +29 -29
  114. package/dist/kits/blocks/components/ui/pricing-card.tsx +120 -120
  115. package/dist/kits/blocks/components/ui/select.tsx +25 -25
  116. package/dist/kits/blocks/components/ui/skeleton.tsx +13 -13
  117. package/dist/kits/blocks/components/ui/table.tsx +98 -98
  118. package/dist/kits/blocks/components/ui/testimonial-card.tsx +108 -108
  119. package/dist/kits/blocks/components/ui/textarea.tsx +26 -26
  120. package/dist/kits/blocks/components/ui/theme-selector.tsx +243 -247
  121. package/dist/kits/blocks/components/ui/theme-toggle.tsx +74 -74
  122. package/dist/kits/blocks/components/ui/toaster.tsx +7 -7
  123. package/dist/kits/blocks/lib/themes.ts +400 -400
  124. package/dist/kits/blocks/lib/utils.ts +6 -9
  125. package/dist/kits/blocks/package-deps.json +40 -28
  126. package/dist/kits/blocks/tsconfig.json +11 -0
  127. package/dist/kits/blocks/tsconfig.tsbuildinfo +1 -0
  128. package/dist/utils/file-operations.d.ts +3 -1
  129. package/dist/utils/file-operations.d.ts.map +1 -1
  130. package/dist/utils/file-operations.js +84 -12
  131. package/dist/utils/file-operations.js.map +1 -1
  132. package/dist/utils/installation-tracker.d.ts +2 -2
  133. package/dist/utils/installation-tracker.d.ts.map +1 -1
  134. package/dist/utils/installation-tracker.js +11 -11
  135. package/dist/utils/installation-tracker.js.map +1 -1
  136. package/dist/utils/package-manager.d.ts +6 -0
  137. package/dist/utils/package-manager.d.ts.map +1 -0
  138. package/dist/utils/package-manager.js +58 -0
  139. package/dist/utils/package-manager.js.map +1 -0
  140. package/dist/utils/yarn-pnp.d.ts +6 -0
  141. package/dist/utils/yarn-pnp.d.ts.map +1 -0
  142. package/dist/utils/yarn-pnp.js +39 -0
  143. package/dist/utils/yarn-pnp.js.map +1 -0
  144. package/package.json +5 -2
  145. package/dist/kits/blocks/notes/THEME_GUIDE.md +0 -29
@@ -1,89 +1,88 @@
1
- "use client";
2
-
3
- import { HeroSplit as SharedHeroSplit } from "@/components/sections/HeroSplit";
4
-
5
- /**
6
- * Product Launch preset for Hero, wired to the upgraded shared HeroSplit component
7
- * using the slots + cn API.
8
- */
9
- export function Hero() {
10
- return (
11
- <SharedHeroSplit
12
- heading={{
13
- text: "Revolutionize Your Workflow with AI",
14
- className:
15
- "text-3xl md:text-4xl lg:text-5xl xl:text-6xl font-bold leading-tight text-black dark:text-white font-outfit mx-auto",
16
- }}
17
- subheading={{
18
- text: "Transform your business operations with our cutting-edge AI solutions. Streamline processes, boost productivity, and unlock new possibilities for growth.",
19
- className:
20
- "text-base md:text-lg lg:text-xl text-gray-700 dark:text-gray-100 mt-6 mb-8 max-w-2xl font-inter leading-relaxed mx-auto",
21
- }}
22
- section={{
23
- className:
24
- "bg-gradient-to-br from-white via-purple-50 to-white dark:from-gray-900 dark:via-purple-950/20 dark:to-gray-900 pt-16 px-8 pb-8",
25
- }}
26
- cta1={{
27
- label: "Get Started",
28
- href: "#contact",
29
- variant: "default",
30
- size: "lg",
31
- className: [
32
- "text-base font-semibold shadow-lg hover:shadow-xl hover:-translate-y-0.5 transition-all duration-200 px-8 py-3",
33
- "[--btn-bg:theme(colors.purple.600)]",
34
- "hover:[--btn-hover-bg:theme(colors.purple.700)]",
35
- "[--btn-fg:theme(colors.white)]",
36
- "hover:[--btn-hover-fg:theme(colors.white)]",
37
- ].join(" "),
38
- }}
39
- cta2={{
40
- label: "Learn More",
41
- href: "#features",
42
- variant: "outline",
43
- size: "lg",
44
- className: [
45
- // layout/typography/shadow/transitions
46
- "text-base font-semibold shadow-lg hover:shadow-xl hover:-translate-y-0.5 transition-all duration-200 px-8 py-3",
47
- // base colors (ensure outline has transparent bg instead of token background)
48
- "[--btn-bg:transparent]",
49
- // CSS variable overrides to control colors while keeping the outline variant structure
50
- "[--btn-fg:theme(colors.purple.600)]",
51
- "[--btn-border:theme(colors.purple.600)]",
52
- "hover:[--btn-hover-bg:theme(colors.purple.50)]",
53
- "hover:[--btn-hover-fg:theme(colors.purple.600)]",
54
- // dark mode
55
- "dark:[--btn-bg:transparent]",
56
- "dark:[--btn-fg:theme(colors.purple.500)]",
57
- "dark:[--btn-border:theme(colors.purple.500)]",
58
- "dark:hover:[--btn-hover-bg:theme(colors.purple.950)]",
59
- "dark:hover:[--btn-hover-fg:theme(colors.purple.500)]",
60
- // ensure hover text stays the intended color in light mode
61
- "hover:[--btn-hover-fg:theme(colors.purple.600)]",
62
- // ensure a border width is present for the outline variant override cases
63
- "border",
64
- ].join(" "),
65
- }}
66
- image={{
67
- src: "/placeholders/product_launch/hero.png",
68
- alt: "AI-powered workflow illustration",
69
- className: "object-contain",
70
- }}
71
- imageLayout="padded"
72
- imageContainer={{
73
- className: "md:h-80 lg:h-96 md:w-1/2",
74
- }}
75
- textContainer={{
76
- className: " flex-1 p-5 lg:p-8 text-center lg:text-left",
77
- }}
78
- buttonsContainer={{
79
- className: [
80
- "flex flex-col sm:flex-row gap-4 mt-8 justify-center lg:justify-start",
81
- "[--btn-ring:theme(colors.purple.500)]",
82
- "dark:[--btn-ring:theme(colors.purple.400)]",
83
- ].join(" "),
84
- }}
85
- textAlign="center"
86
- ariaLabel="Revolutionize your workflow with AI hero section"
87
- />
88
- );
89
- }
1
+ "use client";
2
+
3
+ import { HeroSplit as SharedHeroSplit } from "@/components/sections/HeroSplit";
4
+
5
+ /**
6
+ * Product Launch preset for Hero
7
+ */
8
+ export function Hero() {
9
+ return (
10
+ <SharedHeroSplit
11
+ heading={{
12
+ text: "Goodie Revolutionize Your Workflow with AI",
13
+ className:
14
+ "text-3xl md:text-4xl lg:text-5xl xl:text-6xl font-bold leading-tight text-black dark:text-white font-outfit mx-auto",
15
+ }}
16
+ subheading={{
17
+ text: "Transform your business operations with our cutting-edge AI solutions. Streamline processes, boost productivity, and unlock new possibilities for growth.",
18
+ className:
19
+ "text-base md:text-lg lg:text-xl text-gray-700 dark:text-gray-100 mt-6 mb-8 max-w-2xl font-inter leading-relaxed mx-auto",
20
+ }}
21
+ section={{
22
+ className:
23
+ "bg-gradient-to-br from-white via-purple-50 to-white dark:from-gray-900 dark:via-purple-950/20 dark:to-gray-900 pt-16 px-8 pb-8",
24
+ }}
25
+ cta1={{
26
+ label: "Get Started",
27
+ href: "#contact",
28
+ variant: "default",
29
+ size: "lg",
30
+ className: [
31
+ "text-base font-semibold shadow-lg hover:shadow-xl hover:-translate-y-0.5 transition-all duration-200 px-8 py-3",
32
+ "[--btn-bg:theme(colors.purple.600)]",
33
+ "hover:[--btn-hover-bg:theme(colors.purple.700)]",
34
+ "[--btn-fg:theme(colors.white)]",
35
+ "hover:[--btn-hover-fg:theme(colors.white)]",
36
+ ].join(" "),
37
+ }}
38
+ cta2={{
39
+ label: "Learn More",
40
+ href: "#features",
41
+ variant: "outline",
42
+ size: "lg",
43
+ className: [
44
+ // Layout/typography/shadow/transitions
45
+ "text-base font-semibold shadow-lg hover:shadow-xl hover:-translate-y-0.5 transition-all duration-200 px-8 py-3",
46
+ // Base colors (ensuring outline has transparent bg instead of token background)
47
+ "[--btn-bg:transparent]",
48
+ // CSS variable overrides to control colors while keeping the outline variant structure
49
+ "[--btn-fg:theme(colors.purple.600)]",
50
+ "[--btn-border:theme(colors.purple.600)]",
51
+ "hover:[--btn-hover-bg:theme(colors.purple.50)]",
52
+ "hover:[--btn-hover-fg:theme(colors.purple.600)]",
53
+ // Dark mode
54
+ "dark:[--btn-bg:transparent]",
55
+ "dark:[--btn-fg:theme(colors.purple.500)]",
56
+ "dark:[--btn-border:theme(colors.purple.500)]",
57
+ "dark:hover:[--btn-hover-bg:theme(colors.purple.950)]",
58
+ "dark:hover:[--btn-hover-fg:theme(colors.purple.500)]",
59
+ // Ensure hover text stays the intended color in light mode
60
+ "hover:[--btn-hover-fg:theme(colors.purple.600)]",
61
+ // Ensure a border width is present for the outline variant override cases
62
+ "border",
63
+ ].join(" "),
64
+ }}
65
+ image={{
66
+ src: "/placeholders/product_launch/hero.png",
67
+ alt: "AI-powered workflow illustration",
68
+ className: "object-contain",
69
+ }}
70
+ imageLayout="padded"
71
+ imageContainer={{
72
+ className: "md:h-80 lg:h-96 md:w-1/2",
73
+ }}
74
+ textContainer={{
75
+ className: " flex-1 p-5 lg:p-8 text-center lg:text-left",
76
+ }}
77
+ buttonsContainer={{
78
+ className: [
79
+ "flex flex-col sm:flex-row gap-4 mt-8 justify-center lg:justify-start",
80
+ "[--btn-ring:theme(colors.purple.500)]",
81
+ "dark:[--btn-ring:theme(colors.purple.400)]",
82
+ ].join(" "),
83
+ }}
84
+ textAlign="center"
85
+ ariaLabel="Revolutionize your workflow with AI hero section"
86
+ />
87
+ );
88
+ }
@@ -1,162 +1,116 @@
1
- // app/templates/productlaunch/components/Navbar.tsx
2
-
3
- "use client";
4
-
5
- import type { ComponentProps } from "react";
6
- import { Navbar as SharedNavbar } from "@/components/sections/Navbar";
7
-
8
- /**
9
- * Product Launch preset Navbar
10
- *
11
- * - IntelliOpAI branding with purple color scheme
12
- * - Custom font families (Outfit for brand, Inter for links)
13
- * - No CTA button (ctaButton = null)
14
- * - Purple hover states for links and theme toggle
15
- * - Clean white background with dark mode support
16
- *
17
- * This preset exposes the Shared Navbar API so devs can override any prop/slot:
18
- *
19
- * Example:
20
- * <Navbar
21
- * brand="My Brand"
22
- * links={{ className: "hover:text-emerald-600" }}
23
- * container={{ className: "max-w-6xl mx-auto" }}
24
- * />
25
- */
26
- type SharedNavbarProps = ComponentProps<typeof SharedNavbar>;
27
- type PresetOverrides = Partial<SharedNavbarProps>;
28
-
29
- const defaultProps: SharedNavbarProps = {
30
- brand: "IntelliOpAI",
31
- menuItems: [
32
- { label: "Home", href: "#home" },
33
- { label: "Features", href: "#features" },
34
- { label: "Pricing", href: "#pricing" },
35
- { label: "FAQ", href: "#faq" },
36
- { label: "Contact", href: "#contact" },
37
- ],
38
- ctaButton: null,
39
- showColorModeToggle: true,
40
- navHeight: "h-16",
41
- sticky: true,
42
- ariaLabel: "IntelliOpAI main navigation",
43
- // Top-level className is left empty so page-level overrides can add layout constraints if needed.
44
- className: "",
45
- // Style slots tuned for the purple theme
46
- nav: {
47
- className:
48
- "bg-white dark:bg-gray-900 text-gray-800 dark:text-white border-b border-gray-200 dark:border-gray-800 " +
49
- // Accent variables for this preset (read by toggle, links, mobile links)
50
- "[--navbar-accent:theme(colors.purple.600)] dark:[--navbar-accent:theme(colors.purple.400)] " +
51
- "[--navbar-toggle-bg:theme(colors.white)] dark:[--navbar-toggle-bg:theme(colors.gray.900)] " +
52
- "[--navbar-hover-bg:theme(colors.purple.50)] dark:[--navbar-hover-bg:color-mix(in oklab,oklch(0.17 0.05 324) 20%, transparent)] " +
53
- "[--navbar-ring:theme(colors.purple.500)] dark:[--navbar-ring:theme(colors.purple.400)] " +
54
- "[--navbar-border:theme(colors.gray.200)] dark:[--navbar-border:theme(colors.gray.800)]",
55
- },
56
- brandText: {
57
- className:
58
- "text-xl md:text-2xl font-bold font-outfit text-purple-700 dark:text-purple-500",
59
- },
60
- links: {
61
- className:
62
- "text-sm font-medium font-inter text-gray-800 dark:text-white hover:text-purple-700 dark:hover:text-purple-500 " +
63
- "focus:ring-[var(--navbar-ring)]",
64
- },
65
- // Preset keeps CTA hidden; if you enable it, these defaults give a subtle lift effect
66
- ctaButtonStyle: {
67
- variant: "default",
68
- size: "default",
69
- className:
70
- "shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
71
- },
72
- mobileMenu: {
73
- className: "border-t border-gray-200 dark:border-gray-800",
74
- },
75
- container: {
76
- className: "max-w-7xl mx-auto",
77
- },
78
- brandWrapper: {
79
- className: "", // base layout is provided by SharedNavbar; override here if needed
80
- },
81
- desktopMenu: {
82
- className: "hidden items-center space-x-1 md:flex lg:space-x-6",
83
- },
84
- toggleButton: {
85
- className:
86
- "md:hidden flex items-center justify-center rounded-md p-2 transition-colors " +
87
- "hover:bg-purple-50 dark:hover:bg-purple-900/20 " +
88
- "focus:outline-none focus:ring-2 focus:ring-purple-500 dark:focus:ring-purple-400",
89
- },
90
- colorModeWrapper: {
91
- className: "ml-2",
92
- },
93
- // With variables above, ThemeToggle can rely on them; explicit override optional
94
- // themeToggle: { ... }
95
- ctaButtonWrapper: {
96
- className: "ml-2",
97
- },
98
- mobileMenuInner: {
99
- className: "space-y-2 px-4 pt-2 pb-4",
100
- },
101
- // Mobile links will read --navbar-hover-bg; explicit class optional
102
- mobileLinks: {
103
- className: "hover:bg-[var(--navbar-hover-bg)]",
104
- },
105
- };
106
-
107
- export function Navbar(overrides: PresetOverrides = {}) {
108
- // Shallow-merge: passing a style-slot object (e.g., links, nav, etc.)
109
- // replaces the default for that slot. This keeps the API simple and predictable.
110
- const props: SharedNavbarProps = {
111
- ...defaultProps,
112
- ...overrides,
113
- };
114
-
115
- return <SharedNavbar {...props} />;
116
- }
117
-
118
- // "use client";
119
-
120
- // import { Navbar as SharedNavbar } from "@/components/sections/Navbar";
121
-
122
- // /**
123
- // * A preset Navbar component customized for the product launch page,
124
- // * using the shared Navbar.tsx with predefined styles and content.
125
- // *
126
- // * Features:
127
- // * - IntelliOpAI branding with purple color scheme
128
- // * - Custom font families (Outfit for brand, Inter for links)
129
- // * - No CTA button as specified in original preset
130
- // * - Purple hover states for links and theme toggle
131
- // * - Clean white background with dark mode support
132
- // */
133
- // export function Navbar() {
134
- // return (
135
- // <SharedNavbar
136
- // brand="IntelliOpAI"
137
- // menuItems={[
138
- // { label: "Home", href: "#home" },
139
- // { label: "Features", href: "#features" },
140
- // { label: "Pricing", href: "#pricing" },
141
- // { label: "FAQ", href: "#faq" },
142
- // { label: "Contact", href: "#contact" },
143
- // ]}
144
- // ctaButton={null}
145
- // showColorModeToggle={true}
146
- // navHeight="h-16"
147
- // sticky={true}
148
- // ariaLabel="IntelliOpAI main navigation"
149
- // nav={{
150
- // className: "bg-white dark:bg-gray-900 text-gray-800 dark:text-white",
151
- // }}
152
- // brandText={{
153
- // className:
154
- // "text-xl md:text-2xl font-bold font-outfit text-purple-700 dark:text-purple-500",
155
- // }}
156
- // links={{
157
- // className:
158
- // "text-sm font-medium font-inter text-gray-800 dark:text-white hover:text-purple-700 dark:hover:text-purple-500",
159
- // }}
160
- // />
161
- // );
162
- // }
1
+ "use client";
2
+
3
+ import type { ComponentProps } from "react";
4
+ import { Navbar as SharedNavbar } from "@/components/sections/Navbar";
5
+
6
+ /**
7
+ * Product Launch preset Navbar
8
+ *
9
+ * - IntelliOpAI branding with purple color scheme
10
+ * - Custom font families (Outfit for brand, Inter for links)
11
+ * - No CTA button (ctaButton = null)
12
+ * - Purple hover states for links and theme toggle
13
+ * - Clean white background with dark mode support
14
+ *
15
+ * This preset exposes the Shared Navbar API, allowing full customization of any prop or slot.
16
+ *
17
+ * Example:
18
+ * <Navbar
19
+ * brand="My Brand"
20
+ * links={{ className: "hover:text-emerald-600" }}
21
+ * container={{ className: "max-w-6xl mx-auto" }}
22
+ * />
23
+ */
24
+ type SharedNavbarProps = ComponentProps<typeof SharedNavbar>;
25
+ type PresetOverrides = Partial<SharedNavbarProps>;
26
+
27
+ const defaultProps: SharedNavbarProps = {
28
+ brand: "IntelliOpAI",
29
+ menuItems: [
30
+ { label: "Home", href: "#home" },
31
+ { label: "Features", href: "#features" },
32
+ { label: "Pricing", href: "#pricing" },
33
+ { label: "FAQ", href: "#faq" },
34
+ { label: "Contact", href: "#contact" },
35
+ ],
36
+ ctaButton: null,
37
+ showColorModeToggle: true,
38
+ navHeight: "h-16",
39
+ sticky: true,
40
+ ariaLabel: "IntelliOpAI main navigation",
41
+ // Top-level className is left empty so page-level overrides can add layout constraints if needed.
42
+ className: "",
43
+ // Style slots tuned for the purple theme
44
+ nav: {
45
+ className:
46
+ "bg-white dark:bg-gray-900 text-gray-800 dark:text-white border-b border-gray-200 dark:border-gray-800 " +
47
+ // Accent variables for this preset (read by toggle, links, mobile links)
48
+ "[--navbar-accent:theme(colors.purple.600)] dark:[--navbar-accent:theme(colors.purple.400)] " +
49
+ "[--navbar-toggle-bg:theme(colors.white)] dark:[--navbar-toggle-bg:theme(colors.gray.900)] " +
50
+ "[--navbar-hover-bg:theme(colors.purple.50)] dark:[--navbar-hover-bg:color-mix(in oklab,oklch(0.17 0.05 324) 20%, transparent)] " +
51
+ "[--navbar-ring:theme(colors.purple.500)] dark:[--navbar-ring:theme(colors.purple.400)] " +
52
+ "[--navbar-border:theme(colors.gray.200)] dark:[--navbar-border:theme(colors.gray.800)]",
53
+ },
54
+ brandText: {
55
+ className:
56
+ "text-xl md:text-2xl font-bold font-outfit text-purple-700 dark:text-purple-500",
57
+ },
58
+ links: {
59
+ className:
60
+ "text-sm font-medium font-inter text-gray-800 dark:text-white hover:text-purple-700 dark:hover:text-purple-500 " +
61
+ "focus:ring-[var(--navbar-ring)]",
62
+ },
63
+ // Preset keeps CTA hidden; if enabled, these defaults give a subtle lift effect
64
+ ctaButtonStyle: {
65
+ variant: "default",
66
+ size: "default",
67
+ className:
68
+ "shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
69
+ },
70
+ mobileMenu: {
71
+ className: "border-t border-gray-200 dark:border-gray-800",
72
+ },
73
+ container: {
74
+ className: "max-w-7xl mx-auto",
75
+ },
76
+ brandWrapper: {
77
+ className: "", // Base layout is provided by SharedNavbar; override here if needed
78
+ },
79
+ desktopMenu: {
80
+ className: "hidden items-center space-x-1 md:flex lg:space-x-6",
81
+ },
82
+ toggleButton: {
83
+ className:
84
+ "md:hidden flex items-center justify-center rounded-md p-2 transition-colors " +
85
+ "hover:bg-purple-50 dark:hover:bg-purple-900/20 " +
86
+ "focus:outline-none focus:ring-2 focus:ring-purple-500 dark:focus:ring-purple-400",
87
+ },
88
+ colorModeWrapper: {
89
+ className: "ml-2",
90
+ },
91
+ // ThemeToggle reads the CSS vars defined in `nav.className`; override via `themeToggle` if needed.
92
+ // themeToggle: { ... }
93
+ ctaButtonWrapper: {
94
+ className: "ml-2",
95
+ },
96
+ mobileMenuInner: {
97
+ className: "space-y-2 px-4 pt-2 pb-4",
98
+ },
99
+ // Mobile menu links get their hover background from the `--navbar-hover-bg` CSS variable
100
+ // (set on the `nav` slot above). This class simply applies that variable on `:hover`, and can be
101
+ // removed/overridden if a different mobile-link hover treatment is preferable.
102
+ mobileLinks: {
103
+ className: "hover:bg-[var(--navbar-hover-bg)]",
104
+ },
105
+ };
106
+
107
+ export function Navbar(overrides: PresetOverrides = {}) {
108
+ // Shallow-merge: passing a style-slot object (e.g., links, nav, etc.)
109
+ // replaces the default for that slot.
110
+ const props: SharedNavbarProps = {
111
+ ...defaultProps,
112
+ ...overrides,
113
+ };
114
+
115
+ return <SharedNavbar {...props} />;
116
+ }