@nextworks/blocks-sections 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.
- package/dist/components/About.d.ts.map +1 -1
- package/dist/components/About.jsx +27 -25
- package/dist/components/CTA.d.ts.map +1 -1
- package/dist/components/CTA.jsx +33 -31
- package/dist/components/Contact.d.ts.map +1 -1
- package/dist/components/Contact.jsx +31 -26
- package/dist/components/FAQ.d.ts.map +1 -1
- package/dist/components/FAQ.jsx +24 -22
- package/dist/components/Features.d.ts.map +1 -1
- package/dist/components/Features.jsx +15 -13
- package/dist/components/Footer.d.ts +3 -0
- package/dist/components/Footer.d.ts.map +1 -1
- package/dist/components/Footer.jsx +39 -37
- package/dist/components/HeroMotion.d.ts.map +1 -1
- package/dist/components/HeroMotion.jsx +43 -41
- package/dist/components/HeroOverlay.d.ts.map +1 -1
- package/dist/components/HeroOverlay.jsx +33 -31
- package/dist/components/HeroProductDemo.d.ts +54 -0
- package/dist/components/HeroProductDemo.d.ts.map +1 -0
- package/dist/components/HeroProductDemo.jsx +81 -0
- package/dist/components/HeroSplit.d.ts.map +1 -1
- package/dist/components/HeroSplit.jsx +37 -35
- package/dist/components/Navbar.d.ts.map +1 -1
- package/dist/components/Navbar.jsx +51 -51
- package/dist/components/Newsletter.d.ts +3 -2
- package/dist/components/Newsletter.d.ts.map +1 -1
- package/dist/components/Newsletter.jsx +25 -22
- package/dist/components/PortfolioSimple.d.ts.map +1 -1
- package/dist/components/PortfolioSimple.jsx +82 -80
- package/dist/components/Pricing.d.ts.map +1 -1
- package/dist/components/Pricing.jsx +14 -12
- package/dist/components/ProcessTimeline.d.ts.map +1 -1
- package/dist/components/ProcessTimeline.jsx +65 -63
- package/dist/components/ServicesGrid.d.ts.map +1 -1
- package/dist/components/ServicesGrid.jsx +27 -25
- package/dist/components/Team.d.ts.map +1 -1
- package/dist/components/Team.jsx +30 -28
- package/dist/components/Testimonials.d.ts.map +1 -1
- package/dist/components/Testimonials.jsx +14 -12
- package/dist/components/TrustBadges.d.ts.map +1 -1
- package/dist/components/TrustBadges.jsx +20 -18
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/product-demo/ApprovalInboxPanel.d.ts +7 -0
- package/dist/components/product-demo/ApprovalInboxPanel.d.ts.map +1 -0
- package/dist/components/product-demo/ApprovalInboxPanel.jsx +70 -0
- package/dist/components/product-demo/DemoStage.d.ts +14 -0
- package/dist/components/product-demo/DemoStage.d.ts.map +1 -0
- package/dist/components/product-demo/DemoStage.jsx +226 -0
- package/dist/components/product-demo/DemoWindow.d.ts +17 -0
- package/dist/components/product-demo/DemoWindow.d.ts.map +1 -0
- package/dist/components/product-demo/DemoWindow.jsx +57 -0
- package/dist/components/product-demo/KnowledgePanel.d.ts +7 -0
- package/dist/components/product-demo/KnowledgePanel.d.ts.map +1 -0
- package/dist/components/product-demo/KnowledgePanel.jsx +75 -0
- package/dist/components/product-demo/RunConsolePanel.d.ts +7 -0
- package/dist/components/product-demo/RunConsolePanel.d.ts.map +1 -0
- package/dist/components/product-demo/RunConsolePanel.jsx +89 -0
- package/dist/components/product-demo/WorkflowStudioPanel.d.ts +7 -0
- package/dist/components/product-demo/WorkflowStudioPanel.d.ts.map +1 -0
- package/dist/components/product-demo/WorkflowStudioPanel.jsx +109 -0
- package/dist/components/product-demo/types.d.ts +162 -0
- package/dist/components/product-demo/types.d.ts.map +1 -0
- package/dist/components/product-demo/types.js +3 -0
- package/dist-types/components/About.d.ts.map +1 -1
- package/dist-types/components/CTA.d.ts.map +1 -1
- package/dist-types/components/Contact.d.ts.map +1 -1
- package/dist-types/components/FAQ.d.ts.map +1 -1
- package/dist-types/components/Features.d.ts.map +1 -1
- package/dist-types/components/Footer.d.ts +3 -0
- package/dist-types/components/Footer.d.ts.map +1 -1
- package/dist-types/components/HeroMotion.d.ts.map +1 -1
- package/dist-types/components/HeroOverlay.d.ts.map +1 -1
- package/dist-types/components/HeroProductDemo.d.ts +54 -0
- package/dist-types/components/HeroProductDemo.d.ts.map +1 -0
- package/dist-types/components/HeroSplit.d.ts.map +1 -1
- package/dist-types/components/Navbar.d.ts.map +1 -1
- package/dist-types/components/Newsletter.d.ts +3 -2
- package/dist-types/components/Newsletter.d.ts.map +1 -1
- package/dist-types/components/PortfolioSimple.d.ts.map +1 -1
- package/dist-types/components/Pricing.d.ts.map +1 -1
- package/dist-types/components/ProcessTimeline.d.ts.map +1 -1
- package/dist-types/components/ServicesGrid.d.ts.map +1 -1
- package/dist-types/components/Team.d.ts.map +1 -1
- package/dist-types/components/Testimonials.d.ts.map +1 -1
- package/dist-types/components/TrustBadges.d.ts.map +1 -1
- package/dist-types/components/index.d.ts +1 -0
- package/dist-types/components/index.d.ts.map +1 -1
- package/dist-types/components/product-demo/ApprovalInboxPanel.d.ts +7 -0
- package/dist-types/components/product-demo/ApprovalInboxPanel.d.ts.map +1 -0
- package/dist-types/components/product-demo/DemoStage.d.ts +14 -0
- package/dist-types/components/product-demo/DemoStage.d.ts.map +1 -0
- package/dist-types/components/product-demo/DemoWindow.d.ts +17 -0
- package/dist-types/components/product-demo/DemoWindow.d.ts.map +1 -0
- package/dist-types/components/product-demo/KnowledgePanel.d.ts +7 -0
- package/dist-types/components/product-demo/KnowledgePanel.d.ts.map +1 -0
- package/dist-types/components/product-demo/RunConsolePanel.d.ts +7 -0
- package/dist-types/components/product-demo/RunConsolePanel.d.ts.map +1 -0
- package/dist-types/components/product-demo/WorkflowStudioPanel.d.ts +7 -0
- package/dist-types/components/product-demo/WorkflowStudioPanel.d.ts.map +1 -0
- package/dist-types/components/product-demo/types.d.ts +162 -0
- package/dist-types/components/product-demo/types.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
1
3
|
"use client";
|
|
2
4
|
import React from "react";
|
|
3
5
|
import Link from "next/link";
|
|
@@ -7,7 +9,7 @@ import { cn } from "@nextworks/blocks-core";
|
|
|
7
9
|
const defaultChildTransition = {
|
|
8
10
|
type: "tween",
|
|
9
11
|
duration: 0.5,
|
|
10
|
-
ease: [0.22, 1, 0.36, 1],
|
|
12
|
+
ease: [0.22, 1, 0.36, 1],
|
|
11
13
|
};
|
|
12
14
|
/**
|
|
13
15
|
* Motion-first hero with heading/highlight, optional description and CTAs.
|
|
@@ -25,9 +27,9 @@ const defaultChildTransition = {
|
|
|
25
27
|
* primaryCta={{ label: 'Get Started', href: '#contact' }}
|
|
26
28
|
* />
|
|
27
29
|
*/
|
|
28
|
-
export function HeroMotion({ id, ariaLabel = "Hero section", className, heading = "Supercharge growth with", headingNode, highlight = "AI-powered insights", description = (<>
|
|
29
|
-
Real-time trends, accurate user signals, and smarter, data-driven
|
|
30
|
-
decisions.
|
|
30
|
+
export function HeroMotion({ id, ariaLabel = "Hero section", className, heading = "Supercharge growth with", headingNode, highlight = "AI-powered insights", description = (<>
|
|
31
|
+
Real-time trends, accurate user signals, and smarter, data-driven
|
|
32
|
+
decisions.
|
|
31
33
|
</>), primaryCta = { label: "Get Started" }, secondaryCta = { label: "See Demo" }, section = { className: "bg-background relative overflow-hidden" }, container = { className: "mx-auto max-w-7xl px-6 py-24 sm:py-28 lg:py-32" }, content = { className: "mx-auto max-w-3xl text-center" }, headingText = {
|
|
32
34
|
className: "transform-gpu will-change-transform text-foreground text-4xl font-semibold tracking-tight text-balance sm:text-5xl md:text-6xl",
|
|
33
35
|
}, highlightText = {
|
|
@@ -49,47 +51,47 @@ export function HeroMotion({ id, ariaLabel = "Hero section", className, heading
|
|
|
49
51
|
}
|
|
50
52
|
: { once: true, amount: 0 };
|
|
51
53
|
const transition = Object.assign(Object.assign({}, defaultChildTransition), ((_e = motionOptions === null || motionOptions === void 0 ? void 0 : motionOptions.transition) !== null && _e !== void 0 ? _e : {}));
|
|
52
|
-
return (<section id={id} aria-label={ariaLabel} className={cn(section.className, className)}>
|
|
53
|
-
{backgroundNode}
|
|
54
|
-
<div className={cn(container.className)}>
|
|
55
|
-
<motion.div className={cn(content.className)}>
|
|
54
|
+
return (<section id={id} aria-label={ariaLabel} className={cn(section.className, className)}>
|
|
55
|
+
{backgroundNode}
|
|
56
|
+
<div className={cn(container.className)}>
|
|
57
|
+
<motion.div className={cn(content.className)}>
|
|
56
58
|
<motion.h1 initial={enableMotion ? { opacity: 0, y: 12 } : { opacity: 1, y: 0 }} whileInView={{ opacity: 1, y: 0 }} viewport={viewport} transition={enableMotion
|
|
57
|
-
? Object.assign(Object.assign({}, transition), { delay: (_f = motionOptions === null || motionOptions === void 0 ? void 0 : motionOptions.headingDelay) !== null && _f !== void 0 ? _f : 0.5 }) : { type: "tween", duration: 0 }} className={cn(headingText.className)}>
|
|
58
|
-
{headingNode ? (headingNode) : (<>
|
|
59
|
-
{heading}
|
|
60
|
-
{highlight ? (<span className={cn(highlightText.className)}>
|
|
61
|
-
{" "}
|
|
62
|
-
{highlight}
|
|
63
|
-
</span>) : null}
|
|
64
|
-
</>)}
|
|
65
|
-
</motion.h1>
|
|
66
|
-
|
|
59
|
+
? Object.assign(Object.assign({}, transition), { delay: (_f = motionOptions === null || motionOptions === void 0 ? void 0 : motionOptions.headingDelay) !== null && _f !== void 0 ? _f : 0.5 }) : { type: "tween", duration: 0 }} className={cn(headingText.className)}>
|
|
60
|
+
{headingNode ? (headingNode) : (<>
|
|
61
|
+
{heading}
|
|
62
|
+
{highlight ? (<span className={cn(highlightText.className)}>
|
|
63
|
+
{" "}
|
|
64
|
+
{highlight}
|
|
65
|
+
</span>) : null}
|
|
66
|
+
</>)}
|
|
67
|
+
</motion.h1>
|
|
68
|
+
|
|
67
69
|
{description ? (<motion.p initial={enableMotion ? { opacity: 0, y: 10 } : { opacity: 1, y: 0 }} whileInView={{ opacity: 1, y: 0 }} viewport={viewport} transition={enableMotion
|
|
68
|
-
? Object.assign(Object.assign({}, transition), { delay: (_g = motionOptions === null || motionOptions === void 0 ? void 0 : motionOptions.descriptionDelay) !== null && _g !== void 0 ? _g : 0.58 }) : { type: "tween", duration: 0 }} className={cn(descriptionText.className)}>
|
|
69
|
-
{description}
|
|
70
|
-
</motion.p>) : null}
|
|
71
|
-
|
|
70
|
+
? Object.assign(Object.assign({}, transition), { delay: (_g = motionOptions === null || motionOptions === void 0 ? void 0 : motionOptions.descriptionDelay) !== null && _g !== void 0 ? _g : 0.58 }) : { type: "tween", duration: 0 }} className={cn(descriptionText.className)}>
|
|
71
|
+
{description}
|
|
72
|
+
</motion.p>) : null}
|
|
73
|
+
|
|
72
74
|
{(primaryCta || secondaryCta) && (<motion.div initial={enableMotion ? { opacity: 0, y: 10 } : { opacity: 1, y: 0 }} whileInView={{ opacity: 1, y: 0 }} viewport={viewport} transition={enableMotion
|
|
73
|
-
? Object.assign(Object.assign({}, transition), { delay: (_h = motionOptions === null || motionOptions === void 0 ? void 0 : motionOptions.actionsDelay) !== null && _h !== void 0 ? _h : 0.66 }) : { type: "tween", duration: 0 }} className={cn(actions.className)}>
|
|
75
|
+
? Object.assign(Object.assign({}, transition), { delay: (_h = motionOptions === null || motionOptions === void 0 ? void 0 : motionOptions.actionsDelay) !== null && _h !== void 0 ? _h : 0.66 }) : { type: "tween", duration: 0 }} className={cn(actions.className)}>
|
|
74
76
|
{primaryCta &&
|
|
75
|
-
(primaryCta.href ? (<Button asChild unstyled={primaryButtonStyle.unstyled} variant={primaryButtonStyle.variant} size={primaryButtonStyle.size} className={cn(primaryButtonStyle.className)} style={primaryButtonStyle.style}>
|
|
76
|
-
<Link href={primaryCta.href} aria-label={primaryCta.label}>
|
|
77
|
-
{primaryCta.label}
|
|
78
|
-
</Link>
|
|
79
|
-
</Button>) : (<Button variant={primaryButtonStyle.variant} size={primaryButtonStyle.size} className={cn(primaryButtonStyle.className)} unstyled={primaryButtonStyle.unstyled} style={primaryButtonStyle.style} aria-label={primaryCta.label}>
|
|
80
|
-
{primaryCta.label}
|
|
81
|
-
</Button>))}
|
|
82
|
-
|
|
77
|
+
(primaryCta.href ? (<Button asChild unstyled={primaryButtonStyle.unstyled} variant={primaryButtonStyle.variant} size={primaryButtonStyle.size} className={cn(primaryButtonStyle.className)} style={primaryButtonStyle.style}>
|
|
78
|
+
<Link href={primaryCta.href} aria-label={primaryCta.label}>
|
|
79
|
+
{primaryCta.label}
|
|
80
|
+
</Link>
|
|
81
|
+
</Button>) : (<Button variant={primaryButtonStyle.variant} size={primaryButtonStyle.size} className={cn(primaryButtonStyle.className)} unstyled={primaryButtonStyle.unstyled} style={primaryButtonStyle.style} aria-label={primaryCta.label}>
|
|
82
|
+
{primaryCta.label}
|
|
83
|
+
</Button>))}
|
|
84
|
+
|
|
83
85
|
{secondaryCta &&
|
|
84
|
-
(secondaryCta.href ? (<Button asChild unstyled={secondaryButtonStyle.unstyled} variant={secondaryButtonStyle.variant} size={secondaryButtonStyle.size} className={cn(secondaryButtonStyle.className)} style={secondaryButtonStyle.style}>
|
|
85
|
-
<Link href={secondaryCta.href} aria-label={secondaryCta.label}>
|
|
86
|
-
{secondaryCta.label}
|
|
87
|
-
</Link>
|
|
88
|
-
</Button>) : (<Button variant={secondaryButtonStyle.variant} size={secondaryButtonStyle.size} className={cn(secondaryButtonStyle.className)} unstyled={secondaryButtonStyle.unstyled} style={secondaryButtonStyle.style} aria-label={secondaryCta.label}>
|
|
89
|
-
{secondaryCta.label}
|
|
90
|
-
</Button>))}
|
|
91
|
-
</motion.div>)}
|
|
92
|
-
</motion.div>
|
|
93
|
-
</div>
|
|
86
|
+
(secondaryCta.href ? (<Button asChild unstyled={secondaryButtonStyle.unstyled} variant={secondaryButtonStyle.variant} size={secondaryButtonStyle.size} className={cn(secondaryButtonStyle.className)} style={secondaryButtonStyle.style}>
|
|
87
|
+
<Link href={secondaryCta.href} aria-label={secondaryCta.label}>
|
|
88
|
+
{secondaryCta.label}
|
|
89
|
+
</Link>
|
|
90
|
+
</Button>) : (<Button variant={secondaryButtonStyle.variant} size={secondaryButtonStyle.size} className={cn(secondaryButtonStyle.className)} unstyled={secondaryButtonStyle.unstyled} style={secondaryButtonStyle.style} aria-label={secondaryCta.label}>
|
|
91
|
+
{secondaryCta.label}
|
|
92
|
+
</Button>))}
|
|
93
|
+
</motion.div>)}
|
|
94
|
+
</motion.div>
|
|
95
|
+
</div>
|
|
94
96
|
</section>);
|
|
95
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeroOverlay.d.ts","sourceRoot":"","sources":["../../src/components/HeroOverlay.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HeroOverlay.d.ts","sourceRoot":"","sources":["../../src/components/HeroOverlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
1
3
|
"use client";
|
|
2
4
|
import React from "react";
|
|
3
5
|
import Image from "next/image";
|
|
@@ -100,42 +102,42 @@ ctaContainer = {
|
|
|
100
102
|
const mergedCta1 = Object.assign(Object.assign(Object.assign({}, defaultCta1), (cta1 !== null && cta1 !== void 0 ? cta1 : {})), { className: cn(defaultCta1.className, cta1 === null || cta1 === void 0 ? void 0 : cta1.className, buttonLift) });
|
|
101
103
|
const mergedCta2 = cta2 || ctaBtn2Label || ctaBtn2Href
|
|
102
104
|
? Object.assign(Object.assign(Object.assign({}, defaultCta2), (cta2 !== null && cta2 !== void 0 ? cta2 : {})), { className: cn(defaultCta2.className, cta2 === null || cta2 === void 0 ? void 0 : cta2.className, buttonLift) }) : undefined;
|
|
103
|
-
//
|
|
105
|
+
// buttonLift defined above
|
|
104
106
|
// Merge alias section.className with container.className
|
|
105
107
|
const finalContainerClass = cn(container.className, section === null || section === void 0 ? void 0 : section.className);
|
|
106
108
|
const showCta2 = !!(mergedCta2 === null || mergedCta2 === void 0 ? void 0 : mergedCta2.label);
|
|
107
|
-
return (<section id={id} className={cn(finalContainerClass, className)} aria-label={ariaLabel}>
|
|
108
|
-
<div className={imageContainer.className}>
|
|
109
|
+
return (<section id={id} className={cn(finalContainerClass, className)} aria-label={ariaLabel}>
|
|
110
|
+
<div className={imageContainer.className}>
|
|
109
111
|
<Image src={effImage.src} alt={effImage.alt} fill sizes="100vw" quality={75} priority className={effImage.className} style={{
|
|
110
112
|
objectFit: effImage.objectFit,
|
|
111
113
|
objectPosition: effImage.objectPosition,
|
|
112
|
-
}}/>
|
|
113
|
-
</div>
|
|
114
|
-
|
|
115
|
-
<div className={overlay.className} style={{ backgroundColor: overlayRGBA }} aria-hidden/>
|
|
116
|
-
<div className={cn(overlay.className, "hidden dark:block")} style={{ backgroundColor: overlayDarkRGBA }} aria-hidden/>
|
|
117
|
-
|
|
118
|
-
<div className={content.className}>
|
|
119
|
-
<div className={textContainer.className}>
|
|
120
|
-
<h1 className={normalizedHeading.className}>
|
|
121
|
-
{normalizedHeading.text}
|
|
122
|
-
</h1>
|
|
123
|
-
<p className={normalizedSubheading.className}>
|
|
124
|
-
{normalizedSubheading.text}
|
|
125
|
-
</p>
|
|
126
|
-
<div className={ctaContainer.className}>
|
|
127
|
-
{mergedCta1.label && (<Button asChild variant={mergedCta1.variant} size={mergedCta1.size} className={mergedCta1.className} unstyled={mergedCta1.unstyled} style={mergedCta1.style}>
|
|
128
|
-
<Link href={mergedCta1.href || "#"} aria-label={mergedCta1.label}>
|
|
129
|
-
{mergedCta1.label}
|
|
130
|
-
</Link>
|
|
131
|
-
</Button>)}
|
|
132
|
-
{showCta2 && (<Button asChild variant={mergedCta2.variant} size={mergedCta2.size} className={mergedCta2.className} unstyled={mergedCta2.unstyled} style={mergedCta2.style}>
|
|
133
|
-
<Link href={mergedCta2.href || "#"} aria-label={mergedCta2.label}>
|
|
134
|
-
{mergedCta2.label}
|
|
135
|
-
</Link>
|
|
136
|
-
</Button>)}
|
|
137
|
-
</div>
|
|
138
|
-
</div>
|
|
139
|
-
</div>
|
|
114
|
+
}}/>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<div className={overlay.className} style={{ backgroundColor: overlayRGBA }} aria-hidden/>
|
|
118
|
+
<div className={cn(overlay.className, "hidden dark:block")} style={{ backgroundColor: overlayDarkRGBA }} aria-hidden/>
|
|
119
|
+
|
|
120
|
+
<div className={content.className}>
|
|
121
|
+
<div className={textContainer.className}>
|
|
122
|
+
<h1 className={normalizedHeading.className}>
|
|
123
|
+
{normalizedHeading.text}
|
|
124
|
+
</h1>
|
|
125
|
+
<p className={normalizedSubheading.className}>
|
|
126
|
+
{normalizedSubheading.text}
|
|
127
|
+
</p>
|
|
128
|
+
<div className={ctaContainer.className}>
|
|
129
|
+
{mergedCta1.label && (<Button asChild variant={mergedCta1.variant} size={mergedCta1.size} className={mergedCta1.className} unstyled={mergedCta1.unstyled} style={mergedCta1.style}>
|
|
130
|
+
<Link href={mergedCta1.href || "#"} aria-label={mergedCta1.label}>
|
|
131
|
+
{mergedCta1.label}
|
|
132
|
+
</Link>
|
|
133
|
+
</Button>)}
|
|
134
|
+
{showCta2 && (<Button asChild variant={mergedCta2.variant} size={mergedCta2.size} className={mergedCta2.className} unstyled={mergedCta2.unstyled} style={mergedCta2.style}>
|
|
135
|
+
<Link href={mergedCta2.href || "#"} aria-label={mergedCta2.label}>
|
|
136
|
+
{mergedCta2.label}
|
|
137
|
+
</Link>
|
|
138
|
+
</Button>)}
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
140
142
|
</section>);
|
|
141
143
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { ProductDemoScenario } from "./product-demo/types";
|
|
3
|
+
export interface HeroProductDemoTextContent {
|
|
4
|
+
text?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface HeroProductDemoCta {
|
|
8
|
+
label?: string;
|
|
9
|
+
href?: string;
|
|
10
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
11
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
12
|
+
className?: string;
|
|
13
|
+
unstyled?: boolean;
|
|
14
|
+
style?: React.CSSProperties;
|
|
15
|
+
}
|
|
16
|
+
export interface HeroProductDemoStageConfig {
|
|
17
|
+
scenarios?: ProductDemoScenario[];
|
|
18
|
+
initialScenarioIndex?: number;
|
|
19
|
+
activeScenarioKey?: string;
|
|
20
|
+
autoCycle?: boolean;
|
|
21
|
+
cycleIntervalMs?: number;
|
|
22
|
+
className?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface HeroProductDemoSlots {
|
|
25
|
+
section?: {
|
|
26
|
+
className?: string;
|
|
27
|
+
};
|
|
28
|
+
container?: {
|
|
29
|
+
className?: string;
|
|
30
|
+
};
|
|
31
|
+
textContainer?: {
|
|
32
|
+
className?: string;
|
|
33
|
+
};
|
|
34
|
+
demoContainer?: {
|
|
35
|
+
className?: string;
|
|
36
|
+
};
|
|
37
|
+
buttonsContainer?: {
|
|
38
|
+
className?: string;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export interface HeroProductDemoProps extends HeroProductDemoSlots {
|
|
42
|
+
id?: string;
|
|
43
|
+
className?: string;
|
|
44
|
+
heading?: string | HeroProductDemoTextContent;
|
|
45
|
+
subheading?: string | HeroProductDemoTextContent;
|
|
46
|
+
cta1?: HeroProductDemoCta;
|
|
47
|
+
cta2?: HeroProductDemoCta;
|
|
48
|
+
stage?: HeroProductDemoStageConfig;
|
|
49
|
+
demo?: React.ReactNode;
|
|
50
|
+
ariaLabel?: string;
|
|
51
|
+
enableMotion?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export declare function HeroProductDemo({ id, className, heading, subheading, cta1, cta2, stage, demo, section, container, textContainer, demoContainer, buttonsContainer, ariaLabel, enableMotion, }: HeroProductDemoProps): React.JSX.Element;
|
|
54
|
+
//# sourceMappingURL=HeroProductDemo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeroProductDemo.d.ts","sourceRoot":"","sources":["../../src/components/HeroProductDemo.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EACJ,SAAS,GACT,aAAa,GACb,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,aAAa,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,aAAa,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,gBAAgB,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,0BAA0B,CAAC;IAC9C,UAAU,CAAC,EAAE,MAAM,GAAG,0BAA0B,CAAC;IACjD,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAgBD,wBAAgB,eAAe,CAAC,EAC9B,EAAE,EACF,SAAS,EACT,OAAO,EACP,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,SAAuC,EACvC,YAAmB,GACpB,EAAE,oBAAoB,qBAiJtB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
3
|
+
"use client";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import Link from "next/link";
|
|
6
|
+
import { Button } from "@nextworks/blocks-core";
|
|
7
|
+
import { cn } from "@nextworks/blocks-core";
|
|
8
|
+
import { DemoStage } from "./product-demo/DemoStage";
|
|
9
|
+
function normalizeTextContent(value, defaults) {
|
|
10
|
+
var _a;
|
|
11
|
+
if (typeof value === "string") {
|
|
12
|
+
return { text: value, className: defaults.className };
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
text: (_a = value === null || value === void 0 ? void 0 : value.text) !== null && _a !== void 0 ? _a : defaults.text,
|
|
16
|
+
className: cn(defaults.className, value === null || value === void 0 ? void 0 : value.className),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function HeroProductDemo({ id, className, heading, subheading, cta1, cta2, stage, demo, section, container, textContainer, demoContainer, buttonsContainer, ariaLabel = "Product demo hero section", enableMotion = true, }) {
|
|
20
|
+
const defaultHeading = {
|
|
21
|
+
text: "Show your product in motion",
|
|
22
|
+
className: "text-4xl font-bold leading-tight tracking-tight text-foreground sm:text-5xl lg:text-6xl",
|
|
23
|
+
};
|
|
24
|
+
const defaultSubheading = {
|
|
25
|
+
text: "Pair clear positioning with a layered product demo that makes the workflow feel real before anyone clicks.",
|
|
26
|
+
className: "mt-6 max-w-2xl text-base text-muted-foreground sm:text-lg lg:text-xl",
|
|
27
|
+
};
|
|
28
|
+
const normalizedHeading = normalizeTextContent(heading, defaultHeading);
|
|
29
|
+
const normalizedSubheading = normalizeTextContent(subheading, defaultSubheading);
|
|
30
|
+
const buttonLift = enableMotion
|
|
31
|
+
? "transition-all duration-200 hover:-translate-y-0.5"
|
|
32
|
+
: "transition-none hover:!translate-y-0";
|
|
33
|
+
const defaultCta1 = {
|
|
34
|
+
label: "Get Started",
|
|
35
|
+
href: "#contact",
|
|
36
|
+
variant: "default",
|
|
37
|
+
size: "lg",
|
|
38
|
+
className: "shadow-lg hover:shadow-xl",
|
|
39
|
+
};
|
|
40
|
+
const mergedCta1 = Object.assign(Object.assign(Object.assign({}, defaultCta1), (cta1 !== null && cta1 !== void 0 ? cta1 : {})), { className: cn(defaultCta1.className, cta1 === null || cta1 === void 0 ? void 0 : cta1.className, buttonLift) });
|
|
41
|
+
const defaultCta2 = {
|
|
42
|
+
label: "Learn More",
|
|
43
|
+
href: "#",
|
|
44
|
+
variant: "outline",
|
|
45
|
+
size: "lg",
|
|
46
|
+
className: "",
|
|
47
|
+
};
|
|
48
|
+
const mergedCta2 = cta2
|
|
49
|
+
? Object.assign(Object.assign(Object.assign({}, defaultCta2), cta2), { className: cn(defaultCta2.className, cta2.className, buttonLift) }) : undefined;
|
|
50
|
+
return (<section id={id} className={cn("relative overflow-hidden px-6 py-16 sm:px-8 lg:px-10 lg:py-24", section === null || section === void 0 ? void 0 : section.className, className)} aria-label={ariaLabel}>
|
|
51
|
+
<div className={cn("mx-auto grid max-w-7xl items-center gap-12 lg:grid-cols-[minmax(0,0.84fr)_minmax(0,1.16fr)] lg:gap-12 xl:grid-cols-[minmax(0,0.8fr)_minmax(0,1.2fr)]", container === null || container === void 0 ? void 0 : container.className)}>
|
|
52
|
+
<div className={cn("relative z-10 flex flex-col items-start", textContainer === null || textContainer === void 0 ? void 0 : textContainer.className)}>
|
|
53
|
+
<h1 className={cn(normalizedHeading.className)}>
|
|
54
|
+
{normalizedHeading.text}
|
|
55
|
+
</h1>
|
|
56
|
+
|
|
57
|
+
<p className={cn(normalizedSubheading.className)}>
|
|
58
|
+
{normalizedSubheading.text}
|
|
59
|
+
</p>
|
|
60
|
+
|
|
61
|
+
<div className={cn("mt-8 flex flex-col items-start gap-4 sm:flex-row sm:items-center", buttonsContainer === null || buttonsContainer === void 0 ? void 0 : buttonsContainer.className)}>
|
|
62
|
+
{mergedCta1.label && (<Button asChild variant={mergedCta1.variant} size={mergedCta1.size} className={mergedCta1.className} unstyled={mergedCta1.unstyled} style={mergedCta1.style}>
|
|
63
|
+
<Link href={mergedCta1.href || "#"} aria-label={mergedCta1.label}>
|
|
64
|
+
{mergedCta1.label}
|
|
65
|
+
</Link>
|
|
66
|
+
</Button>)}
|
|
67
|
+
|
|
68
|
+
{(mergedCta2 === null || mergedCta2 === void 0 ? void 0 : mergedCta2.label) && (<Button asChild variant={mergedCta2.variant} size={mergedCta2.size} className={mergedCta2.className} unstyled={mergedCta2.unstyled} style={mergedCta2.style}>
|
|
69
|
+
<Link href={mergedCta2.href || "#"} aria-label={mergedCta2.label}>
|
|
70
|
+
{mergedCta2.label}
|
|
71
|
+
</Link>
|
|
72
|
+
</Button>)}
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<div className={cn("relative", demoContainer === null || demoContainer === void 0 ? void 0 : demoContainer.className)}>
|
|
77
|
+
{demo !== null && demo !== void 0 ? demo : (<DemoStage scenarios={stage === null || stage === void 0 ? void 0 : stage.scenarios} initialScenarioIndex={stage === null || stage === void 0 ? void 0 : stage.initialScenarioIndex} activeScenarioKey={stage === null || stage === void 0 ? void 0 : stage.activeScenarioKey} autoCycle={stage === null || stage === void 0 ? void 0 : stage.autoCycle} cycleIntervalMs={stage === null || stage === void 0 ? void 0 : stage.cycleIntervalMs} className={stage === null || stage === void 0 ? void 0 : stage.className} enableMotion={enableMotion} ariaLabel="Layered product demo"/>)}
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
</section>);
|
|
81
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeroSplit.d.ts","sourceRoot":"","sources":["../../src/components/HeroSplit.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HeroSplit.d.ts","sourceRoot":"","sources":["../../src/components/HeroSplit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
1
3
|
"use client";
|
|
2
4
|
import React from "react";
|
|
3
5
|
import Image from "next/image";
|
|
@@ -89,46 +91,46 @@ export function HeroSplit({ id, className, heading, subheading, section, cta1, c
|
|
|
89
91
|
? defaultImageContainerFull
|
|
90
92
|
: defaultImageContainerPadded;
|
|
91
93
|
const finalImageContainerClass = cn(baseImageContainerClass, imageContainer === null || imageContainer === void 0 ? void 0 : imageContainer.className);
|
|
92
|
-
// Note:
|
|
94
|
+
// Note: Don’t override `image.className` here—leave object-fit (e.g. `object-cover` / `object-contain`) up to the importing component.
|
|
93
95
|
const finalImageClass = cn(image === null || image === void 0 ? void 0 : image.className, imageLayout === "full-bleed"
|
|
94
96
|
? "object-cover object-center md:object-right"
|
|
95
97
|
: "object-contain object-center");
|
|
96
|
-
return (<section id={id} className={cn(finalSectionClass, className)} aria-label={ariaLabel}>
|
|
98
|
+
return (<section id={id} className={cn(finalSectionClass, className)} aria-label={ariaLabel}>
|
|
97
99
|
<div className={cn("flex flex-col items-stretch", imageLayout === "full-bleed"
|
|
98
100
|
? "md:block"
|
|
99
|
-
: "md:flex-row md:items-start")}>
|
|
100
|
-
{/* Text container - takes up left side on large screens */}
|
|
101
|
+
: "md:flex-row md:items-start")}>
|
|
102
|
+
{/* Text container - takes up left side on large screens */}
|
|
101
103
|
<div className={cn("w-full", imageLayout === "full-bleed" &&
|
|
102
|
-
"relative z-10 md:w-1/2 md:px-8 md:py-12", textContainer.className)}>
|
|
103
|
-
<div className={cn("flex flex-col items-center", lgItemsAlignClasses[textAlign])}>
|
|
104
|
-
<h1 className={cn("text-center", lgTextAlignClasses[textAlign], normalizedHeading.className)}>
|
|
105
|
-
{normalizedHeading.text}
|
|
106
|
-
</h1>
|
|
107
|
-
|
|
108
|
-
<p className={cn("text-center", lgTextAlignClasses[textAlign], normalizedSubheading.className)}>
|
|
109
|
-
{normalizedSubheading.text}
|
|
110
|
-
</p>
|
|
111
|
-
|
|
112
|
-
<div className={cn("flex flex-col items-center justify-center gap-4 sm:flex-row", lgJustifyAlignClasses[textAlign], lgItemsAlignClasses[textAlign], buttonsContainer.className)}>
|
|
113
|
-
{mergedCta1.label && (<Button asChild variant={mergedCta1.variant} size={mergedCta1.size} className={mergedCta1.className} unstyled={mergedCta1.unstyled} style={mergedCta1.style}>
|
|
114
|
-
<Link href={mergedCta1.href || "#"} aria-label={mergedCta1.label}>
|
|
115
|
-
{mergedCta1.label}
|
|
116
|
-
</Link>
|
|
117
|
-
</Button>)}
|
|
118
|
-
|
|
119
|
-
{(mergedCta2 === null || mergedCta2 === void 0 ? void 0 : mergedCta2.label) && (<Button asChild variant={mergedCta2.variant} size={mergedCta2.size} className={mergedCta2.className} unstyled={mergedCta2.unstyled} style={mergedCta2.style}>
|
|
120
|
-
<Link href={mergedCta2.href || "#"} aria-label={mergedCta2.label}>
|
|
121
|
-
{mergedCta2.label}
|
|
122
|
-
</Link>
|
|
123
|
-
</Button>)}
|
|
124
|
-
</div>
|
|
125
|
-
</div>
|
|
126
|
-
</div>
|
|
127
|
-
|
|
128
|
-
{/* Image container - absolutely positioned on right side for full-bleed */}
|
|
129
|
-
<div className={cn(finalImageContainerClass)}>
|
|
130
|
-
{(image === null || image === void 0 ? void 0 : image.src) ? (<Image priority fetchPriority="high" src={image.src} alt={image.alt || "Hero image"} className={finalImageClass} fill sizes="(min-width: 768px) 50vw, 100vw" quality={75}/>) : (<div className="absolute inset-0">{fallback || null}</div>)}
|
|
131
|
-
</div>
|
|
132
|
-
</div>
|
|
104
|
+
"relative z-10 md:w-1/2 md:px-8 md:py-12", textContainer.className)}>
|
|
105
|
+
<div className={cn("flex flex-col items-center", lgItemsAlignClasses[textAlign])}>
|
|
106
|
+
<h1 className={cn("text-center", lgTextAlignClasses[textAlign], normalizedHeading.className)}>
|
|
107
|
+
{normalizedHeading.text}
|
|
108
|
+
</h1>
|
|
109
|
+
|
|
110
|
+
<p className={cn("text-center", lgTextAlignClasses[textAlign], normalizedSubheading.className)}>
|
|
111
|
+
{normalizedSubheading.text}
|
|
112
|
+
</p>
|
|
113
|
+
|
|
114
|
+
<div className={cn("flex flex-col items-center justify-center gap-4 sm:flex-row", lgJustifyAlignClasses[textAlign], lgItemsAlignClasses[textAlign], buttonsContainer.className)}>
|
|
115
|
+
{mergedCta1.label && (<Button asChild variant={mergedCta1.variant} size={mergedCta1.size} className={mergedCta1.className} unstyled={mergedCta1.unstyled} style={mergedCta1.style}>
|
|
116
|
+
<Link href={mergedCta1.href || "#"} aria-label={mergedCta1.label}>
|
|
117
|
+
{mergedCta1.label}
|
|
118
|
+
</Link>
|
|
119
|
+
</Button>)}
|
|
120
|
+
|
|
121
|
+
{(mergedCta2 === null || mergedCta2 === void 0 ? void 0 : mergedCta2.label) && (<Button asChild variant={mergedCta2.variant} size={mergedCta2.size} className={mergedCta2.className} unstyled={mergedCta2.unstyled} style={mergedCta2.style}>
|
|
122
|
+
<Link href={mergedCta2.href || "#"} aria-label={mergedCta2.label}>
|
|
123
|
+
{mergedCta2.label}
|
|
124
|
+
</Link>
|
|
125
|
+
</Button>)}
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
{/* Image container - absolutely positioned on right side for full-bleed */}
|
|
131
|
+
<div className={cn(finalImageContainerClass)}>
|
|
132
|
+
{(image === null || image === void 0 ? void 0 : image.src) ? (<Image priority fetchPriority="high" src={image.src} alt={image.alt || "Hero image"} className={finalImageClass} fill sizes="(min-width: 768px) 50vw, 100vw" quality={75}/>) : (<div className="absolute inset-0">{fallback || null}</div>)}
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
133
135
|
</section>);
|
|
134
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Navbar.d.ts","sourceRoot":"","sources":["../../src/components/Navbar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Navbar.d.ts","sourceRoot":"","sources":["../../src/components/Navbar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
1
3
|
// components/sections/Navbar.tsx
|
|
2
4
|
"use client";
|
|
3
5
|
import React, { useEffect, useRef, useState } from "react";
|
|
4
6
|
import Link from "next/link";
|
|
5
7
|
import { Button } from "@nextworks/blocks-core";
|
|
6
|
-
import { ThemeToggle } from "@nextworks/blocks-core";
|
|
8
|
+
import { ThemeToggle, } from "@nextworks/blocks-core";
|
|
7
9
|
import { cn } from "@nextworks/blocks-core";
|
|
8
10
|
import { Menu, X } from "lucide-react";
|
|
9
11
|
const defaultMenuItems = [
|
|
@@ -38,7 +40,7 @@ export function Navbar({ id, navHeight = "h-16", brand = "Brand Name", brandNode
|
|
|
38
40
|
}, mobileMenu = {
|
|
39
41
|
className: "border-t border-border",
|
|
40
42
|
},
|
|
41
|
-
/*
|
|
43
|
+
/* Slot defaults */
|
|
42
44
|
container = { className: "" }, brandWrapper = { className: "" }, desktopMenu = {
|
|
43
45
|
className: "hidden items-center space-x-1 lg:flex lg:space-x-6",
|
|
44
46
|
}, toggleButton = {
|
|
@@ -68,57 +70,55 @@ container = { className: "" }, brandWrapper = { className: "" }, desktopMenu = {
|
|
|
68
70
|
document.body.style.overflow = originalOverflow || "";
|
|
69
71
|
};
|
|
70
72
|
}, [isMobileMenuOpen]);
|
|
71
|
-
return (<nav id={id} className={cn("w-full", sticky && "sticky top-0 z-50", nav.className, className)} aria-label={ariaLabel}>
|
|
72
|
-
<div ref={headerRef} className={cn("flex items-center justify-between px-4 py-2", navHeight, container.className)}>
|
|
73
|
-
<div className={cn("mr-2 flex items-center gap-2 pl-2", brandWrapper.className)}>
|
|
74
|
-
{brandNode}
|
|
75
|
-
{brand && <h1 className={cn(brandText.className)}>{brand}</h1>}
|
|
76
|
-
</div>
|
|
77
|
-
|
|
78
|
-
<button aria-label="Toggle mobile menu" aria-expanded={isMobileMenuOpen} aria-controls={mobileMenuId} className={cn("lg:hidden", toggleButton.className)}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
</div>
|
|
100
|
-
|
|
73
|
+
return (<nav id={id} className={cn("w-full", sticky && "sticky top-0 z-50", nav.className, className)} aria-label={ariaLabel}>
|
|
74
|
+
<div ref={headerRef} className={cn("flex items-center justify-between px-4 py-2", navHeight, container.className)}>
|
|
75
|
+
<div className={cn("mr-2 flex items-center gap-2 pl-2", brandWrapper.className)}>
|
|
76
|
+
{brandNode}
|
|
77
|
+
{brand && <h1 className={cn(brandText.className)}>{brand}</h1>}
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<button aria-label="Toggle mobile menu" aria-expanded={isMobileMenuOpen} aria-controls={mobileMenuId} className={cn("lg:hidden", toggleButton.className)} onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}>
|
|
81
|
+
{isMobileMenuOpen ? (<X className="h-6 w-6"/>) : (<Menu className="h-6 w-6"/>)}
|
|
82
|
+
</button>
|
|
83
|
+
|
|
84
|
+
<div className={cn("hidden md:flex", desktopMenu.className)}>
|
|
85
|
+
{menuItems.map((item) => (<Link key={item.label} href={item.href} className={cn("rounded-md px-2 py-2 transition-colors duration-200 lg:px-4", "focus:ring-ring focus:ring-2 focus:ring-offset-2 focus:outline-none", "focus-visible:ring-[var(--navbar-ring)]", links.className)}>
|
|
86
|
+
{item.label}
|
|
87
|
+
</Link>))}
|
|
88
|
+
|
|
89
|
+
{showColorModeToggle && (<div className={cn(colorModeWrapper.className)}>
|
|
90
|
+
<ThemeToggle {...themeToggle}/>
|
|
91
|
+
</div>)}
|
|
92
|
+
|
|
93
|
+
{ctaButton && (<Button asChild unstyled={ctaButtonStyle.unstyled} variant={ctaButtonStyle.variant} size={ctaButtonStyle.size} className={cn(ctaButtonWrapper.className, ctaButtonStyle.className)} style={ctaButtonStyle.style}>
|
|
94
|
+
<Link href={ctaButton.href} aria-label={ctaButton.label}>
|
|
95
|
+
{ctaButton.label}
|
|
96
|
+
</Link>
|
|
97
|
+
</Button>)}
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
101
|
{isMobileMenuOpen && (<div id={mobileMenuId} className={cn("md:hidden", "overflow-y-auto overscroll-y-contain", nav.className, mobileMenu.className)} style={{
|
|
102
102
|
maxHeight: `calc(100dvh - ${headerHeightPx}px)`,
|
|
103
103
|
WebkitOverflowScrolling: "touch",
|
|
104
|
-
}}>
|
|
105
|
-
<div className={cn(mobileMenuInner.className)}>
|
|
106
|
-
{menuItems.map((item) => (<Link key={item.label} href={item.href} className={cn("block w-full rounded-md px-2 py-4 text-center transition-colors duration-200", mobileLinks.className, "focus:ring-ring focus:ring-2 focus:ring-offset-2 focus:outline-none", "focus-visible:ring-[var(--navbar-ring)]", links.className)} onClick={() => setIsMobileMenuOpen(false)}>
|
|
107
|
-
{item.label}
|
|
108
|
-
</Link>))}
|
|
109
|
-
|
|
110
|
-
{showColorModeToggle && (<div className="flex w-full justify-center pt-4">
|
|
111
|
-
<ThemeToggle {...themeToggle}/>
|
|
112
|
-
</div>)}
|
|
113
|
-
|
|
114
|
-
{ctaButton && (<div className="flex w-full justify-center pt-6">
|
|
115
|
-
<Button asChild unstyled={ctaButtonStyle.unstyled} variant={ctaButtonStyle.variant} size={ctaButtonStyle.size} className={cn("w-full max-w-xs", ctaButtonStyle.className)} style={ctaButtonStyle.style}>
|
|
116
|
-
<Link href={ctaButton.href} aria-label={ctaButton.label}>
|
|
117
|
-
{ctaButton.label}
|
|
118
|
-
</Link>
|
|
119
|
-
</Button>
|
|
120
|
-
</div>)}
|
|
121
|
-
</div>
|
|
122
|
-
</div>)}
|
|
104
|
+
}}>
|
|
105
|
+
<div className={cn(mobileMenuInner.className)}>
|
|
106
|
+
{menuItems.map((item) => (<Link key={item.label} href={item.href} className={cn("block w-full rounded-md px-2 py-4 text-center transition-colors duration-200", mobileLinks.className, "focus:ring-ring focus:ring-2 focus:ring-offset-2 focus:outline-none", "focus-visible:ring-[var(--navbar-ring)]", links.className)} onClick={() => setIsMobileMenuOpen(false)}>
|
|
107
|
+
{item.label}
|
|
108
|
+
</Link>))}
|
|
109
|
+
|
|
110
|
+
{showColorModeToggle && (<div className="flex w-full justify-center pt-4">
|
|
111
|
+
<ThemeToggle {...themeToggle}/>
|
|
112
|
+
</div>)}
|
|
113
|
+
|
|
114
|
+
{ctaButton && (<div className="flex w-full justify-center pt-6">
|
|
115
|
+
<Button asChild unstyled={ctaButtonStyle.unstyled} variant={ctaButtonStyle.variant} size={ctaButtonStyle.size} className={cn("w-full max-w-xs", ctaButtonStyle.className)} style={ctaButtonStyle.style}>
|
|
116
|
+
<Link href={ctaButton.href} aria-label={ctaButton.label}>
|
|
117
|
+
{ctaButton.label}
|
|
118
|
+
</Link>
|
|
119
|
+
</Button>
|
|
120
|
+
</div>)}
|
|
121
|
+
</div>
|
|
122
|
+
</div>)}
|
|
123
123
|
</nav>);
|
|
124
124
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { Button } from "@nextworks/blocks-core";
|
|
2
3
|
/**
|
|
3
4
|
* Props for a compact newsletter/signup block.
|
|
4
5
|
*
|
|
@@ -40,8 +41,8 @@ export interface NewsletterProps {
|
|
|
40
41
|
};
|
|
41
42
|
button?: {
|
|
42
43
|
className?: string;
|
|
43
|
-
variant?:
|
|
44
|
-
size?:
|
|
44
|
+
variant?: React.ComponentProps<typeof Button>["variant"];
|
|
45
|
+
size?: React.ComponentProps<typeof Button>["size"];
|
|
45
46
|
unstyled?: boolean;
|
|
46
47
|
};
|
|
47
48
|
enableMotion?: boolean;
|