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.
- package/README.md +280 -228
- package/dist/cli_manifests/blocks_manifest.json +193 -194
- package/dist/commands/blocks.d.ts +3 -0
- package/dist/commands/blocks.d.ts.map +1 -1
- package/dist/commands/blocks.js +128 -19
- package/dist/commands/blocks.js.map +1 -1
- package/dist/commands/doctor.d.ts +136 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +696 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/remove-blocks.d.ts +4 -1
- package/dist/commands/remove-blocks.d.ts.map +1 -1
- package/dist/commands/remove-blocks.js +24 -6
- package/dist/commands/remove-blocks.js.map +1 -1
- package/dist/index.js +125 -4
- package/dist/index.js.map +1 -1
- package/dist/kits/blocks/.nextworks/docs/BLOCKS_QUICKSTART.md +104 -194
- package/dist/kits/blocks/.nextworks/docs/BLOCKS_README.md +115 -75
- package/dist/kits/blocks/.nextworks/docs/THEME_GUIDE.md +269 -251
- package/dist/kits/blocks/app/templates/digitalagency/PresetThemeVars.tsx +80 -80
- package/dist/kits/blocks/app/templates/digitalagency/README.md +42 -36
- package/dist/kits/blocks/app/templates/digitalagency/components/About.tsx +71 -99
- package/dist/kits/blocks/app/templates/digitalagency/components/CTA.tsx +40 -74
- package/dist/kits/blocks/app/templates/digitalagency/components/Contact.tsx +123 -227
- package/dist/kits/blocks/app/templates/digitalagency/components/Footer.tsx +89 -89
- package/dist/kits/blocks/app/templates/digitalagency/components/Hero.tsx +83 -90
- package/dist/kits/blocks/app/templates/digitalagency/components/Navbar.tsx +121 -168
- package/dist/kits/blocks/app/templates/digitalagency/components/NetworkPattern.tsx +288 -297
- package/dist/kits/blocks/app/templates/digitalagency/components/Portfolio.tsx +157 -157
- package/dist/kits/blocks/app/templates/digitalagency/components/Pricing.tsx +114 -114
- package/dist/kits/blocks/app/templates/digitalagency/components/Process.tsx +59 -59
- package/dist/kits/blocks/app/templates/digitalagency/components/Services.tsx +55 -55
- package/dist/kits/blocks/app/templates/digitalagency/components/Team.tsx +28 -28
- package/dist/kits/blocks/app/templates/digitalagency/components/Testimonials.tsx +65 -65
- package/dist/kits/blocks/app/templates/digitalagency/page.tsx +38 -38
- package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +130 -85
- package/dist/kits/blocks/app/templates/gallery/page.tsx +357 -303
- package/dist/kits/blocks/app/templates/productlaunch/PresetThemeVars.tsx +75 -74
- package/dist/kits/blocks/app/templates/productlaunch/README.md +62 -55
- package/dist/kits/blocks/app/templates/productlaunch/components/About.tsx +84 -178
- package/dist/kits/blocks/app/templates/productlaunch/components/CTA.tsx +50 -93
- package/dist/kits/blocks/app/templates/productlaunch/components/Contact.tsx +231 -231
- package/dist/kits/blocks/app/templates/productlaunch/components/FAQ.tsx +86 -93
- package/dist/kits/blocks/app/templates/productlaunch/components/Features.tsx +83 -84
- package/dist/kits/blocks/app/templates/productlaunch/components/Footer.tsx +132 -132
- package/dist/kits/blocks/app/templates/productlaunch/components/Hero.tsx +88 -89
- package/dist/kits/blocks/app/templates/productlaunch/components/Navbar.tsx +116 -162
- package/dist/kits/blocks/app/templates/productlaunch/components/Pricing.tsx +106 -106
- package/dist/kits/blocks/app/templates/productlaunch/components/ProcessTimeline.tsx +110 -110
- package/dist/kits/blocks/app/templates/productlaunch/components/ServicesGrid.tsx +68 -68
- package/dist/kits/blocks/app/templates/productlaunch/components/Team.tsx +104 -104
- package/dist/kits/blocks/app/templates/productlaunch/components/Testimonials.tsx +90 -89
- package/dist/kits/blocks/app/templates/productlaunch/components/TrustBadges.tsx +76 -76
- package/dist/kits/blocks/app/templates/productlaunch/page.tsx +43 -43
- package/dist/kits/blocks/app/templates/saasdashboard/PresetThemeVars.tsx +80 -80
- package/dist/kits/blocks/app/templates/saasdashboard/README.md +44 -38
- package/dist/kits/blocks/app/templates/saasdashboard/components/Contact.tsx +129 -176
- package/dist/kits/blocks/app/templates/saasdashboard/components/Dashboard.tsx +293 -293
- package/dist/kits/blocks/app/templates/saasdashboard/components/FAQ.tsx +55 -55
- package/dist/kits/blocks/app/templates/saasdashboard/components/Features.tsx +90 -91
- package/dist/kits/blocks/app/templates/saasdashboard/components/Footer.tsx +77 -77
- package/dist/kits/blocks/app/templates/saasdashboard/components/Hero.tsx +104 -105
- package/dist/kits/blocks/app/templates/saasdashboard/components/Hero_mask.tsx +126 -127
- package/dist/kits/blocks/app/templates/saasdashboard/components/Navbar.tsx +117 -159
- package/dist/kits/blocks/app/templates/saasdashboard/components/Pricing.tsx +90 -90
- package/dist/kits/blocks/app/templates/saasdashboard/components/SmoothScroll.tsx +96 -97
- package/dist/kits/blocks/app/templates/saasdashboard/components/Testimonials.tsx +72 -72
- package/dist/kits/blocks/app/templates/saasdashboard/components/TrustBadges.tsx +53 -53
- package/dist/kits/blocks/app/templates/saasdashboard/page.tsx +39 -39
- package/dist/kits/blocks/components/enhanced-theme-provider.tsx +195 -183
- package/dist/kits/blocks/components/providers/BlocksAppProviders.tsx +27 -27
- package/dist/kits/blocks/components/sections/About.tsx +291 -291
- package/dist/kits/blocks/components/sections/CTA.tsx +257 -258
- package/dist/kits/blocks/components/sections/CommandShowcase.tsx +517 -0
- package/dist/kits/blocks/components/sections/Contact.tsx +267 -267
- package/dist/kits/blocks/components/sections/FAQ.tsx +214 -225
- package/dist/kits/blocks/components/sections/FeaturedProjectShowcase.tsx +687 -0
- package/dist/kits/blocks/components/sections/Features.tsx +268 -270
- package/dist/kits/blocks/components/sections/Footer.tsx +302 -302
- package/dist/kits/blocks/components/sections/HeroMotion.tsx +308 -308
- package/dist/kits/blocks/components/sections/HeroOverlay.tsx +358 -358
- package/dist/kits/blocks/components/sections/HeroProductDemo.tsx +246 -0
- package/dist/kits/blocks/components/sections/HeroSplit.tsx +352 -352
- package/dist/kits/blocks/components/sections/HeroWithVideo.tsx +495 -0
- package/dist/kits/blocks/components/sections/Navbar.tsx +352 -353
- package/dist/kits/blocks/components/sections/PortfolioSimple.tsx +549 -550
- package/dist/kits/blocks/components/sections/Pricing.tsx +264 -264
- package/dist/kits/blocks/components/sections/ProcessTimeline.tsx +325 -325
- package/dist/kits/blocks/components/sections/ProjectDeepDive.tsx +805 -0
- package/dist/kits/blocks/components/sections/SelectedWorkRail.tsx +485 -0
- package/dist/kits/blocks/components/sections/ServicesGrid.tsx +210 -210
- package/dist/kits/blocks/components/sections/Team.tsx +309 -309
- package/dist/kits/blocks/components/sections/Testimonials.tsx +158 -158
- package/dist/kits/blocks/components/sections/TrustBadges.tsx +162 -162
- package/dist/kits/blocks/components/sections/product-demo/ApprovalInboxPanel.tsx +128 -0
- package/dist/kits/blocks/components/sections/product-demo/DemoStage.tsx +519 -0
- package/dist/kits/blocks/components/sections/product-demo/DemoWindow.tsx +140 -0
- package/dist/kits/blocks/components/sections/product-demo/KnowledgePanel.tsx +130 -0
- package/dist/kits/blocks/components/sections/product-demo/RunConsolePanel.tsx +430 -0
- package/dist/kits/blocks/components/sections/product-demo/TaskListPanel.tsx +302 -0
- package/dist/kits/blocks/components/sections/product-demo/WorkflowStudioPanel.tsx +744 -0
- package/dist/kits/blocks/components/sections/product-demo/types.ts +262 -0
- package/dist/kits/blocks/components/theme-provider.tsx +1 -34
- package/dist/kits/blocks/components/ui/alert-dialog.tsx +134 -134
- package/dist/kits/blocks/components/ui/brand-node.tsx +121 -121
- package/dist/kits/blocks/components/ui/button.tsx +122 -122
- package/dist/kits/blocks/components/ui/card.tsx +95 -95
- package/dist/kits/blocks/components/ui/checkbox.tsx +30 -30
- package/dist/kits/blocks/components/ui/cta-button.tsx +125 -125
- package/dist/kits/blocks/components/ui/dropdown-menu.tsx +201 -201
- package/dist/kits/blocks/components/ui/feature-card.tsx +91 -91
- package/dist/kits/blocks/components/ui/input.tsx +27 -27
- package/dist/kits/blocks/components/ui/label.tsx +29 -29
- package/dist/kits/blocks/components/ui/pricing-card.tsx +120 -120
- package/dist/kits/blocks/components/ui/select.tsx +25 -25
- package/dist/kits/blocks/components/ui/skeleton.tsx +13 -13
- package/dist/kits/blocks/components/ui/table.tsx +98 -98
- package/dist/kits/blocks/components/ui/testimonial-card.tsx +108 -108
- package/dist/kits/blocks/components/ui/textarea.tsx +26 -26
- package/dist/kits/blocks/components/ui/theme-selector.tsx +243 -247
- package/dist/kits/blocks/components/ui/theme-toggle.tsx +74 -74
- package/dist/kits/blocks/components/ui/toaster.tsx +7 -7
- package/dist/kits/blocks/lib/themes.ts +400 -400
- package/dist/kits/blocks/lib/utils.ts +6 -9
- package/dist/kits/blocks/package-deps.json +40 -28
- package/dist/kits/blocks/tsconfig.json +11 -0
- package/dist/kits/blocks/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/file-operations.d.ts +3 -1
- package/dist/utils/file-operations.d.ts.map +1 -1
- package/dist/utils/file-operations.js +84 -12
- package/dist/utils/file-operations.js.map +1 -1
- package/dist/utils/installation-tracker.d.ts +2 -2
- package/dist/utils/installation-tracker.d.ts.map +1 -1
- package/dist/utils/installation-tracker.js +11 -11
- package/dist/utils/installation-tracker.js.map +1 -1
- package/dist/utils/package-manager.d.ts +6 -0
- package/dist/utils/package-manager.d.ts.map +1 -0
- package/dist/utils/package-manager.js +58 -0
- package/dist/utils/package-manager.js.map +1 -0
- package/dist/utils/yarn-pnp.d.ts +6 -0
- package/dist/utils/yarn-pnp.d.ts.map +1 -0
- package/dist/utils/yarn-pnp.js +39 -0
- package/dist/utils/yarn-pnp.js.map +1 -0
- package/package.json +5 -2
- 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
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
"[--btn-bg:theme(colors.purple.
|
|
34
|
-
"
|
|
35
|
-
"[--btn-fg:theme(colors.white)]",
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"[--btn-
|
|
51
|
-
"[--btn-
|
|
52
|
-
"hover:[--btn-hover-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"dark:[--btn-
|
|
56
|
-
"dark:[--btn-
|
|
57
|
-
"dark:[--btn-
|
|
58
|
-
"dark:hover:[--btn-hover-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"
|
|
81
|
-
"[--btn-ring:theme(colors.purple.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* -
|
|
12
|
-
* -
|
|
13
|
-
* -
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
{ label: "
|
|
33
|
-
{ label: "
|
|
34
|
-
{ label: "
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
"[--navbar-
|
|
51
|
-
"[--navbar-
|
|
52
|
-
"[--navbar-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
"
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
//
|
|
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
|
-
}
|
|
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
|
+
}
|