@nextworks/blocks-sections 0.1.0-alpha.8 → 0.2.0-alpha.2
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 +16 -11
- package/dist/components/Features.d.ts +4 -2
- package/dist/components/Features.d.ts.map +1 -1
- package/dist/components/Features.jsx +2 -2
- package/dist/components/HeroMotion.d.ts +4 -2
- package/dist/components/HeroMotion.d.ts.map +1 -1
- package/dist-types/components/About.d.ts +93 -0
- package/dist-types/components/About.d.ts.map +1 -0
- package/dist-types/components/CTA.d.ts +118 -0
- package/dist-types/components/CTA.d.ts.map +1 -0
- package/dist-types/components/Contact.d.ts +111 -0
- package/dist-types/components/Contact.d.ts.map +1 -0
- package/dist-types/components/FAQ.d.ts +89 -0
- package/dist-types/components/FAQ.d.ts.map +1 -0
- package/dist-types/components/Features.d.ts +113 -0
- package/dist-types/components/Features.d.ts.map +1 -0
- package/dist-types/components/Footer.d.ts +120 -0
- package/dist-types/components/Footer.d.ts.map +1 -0
- package/dist-types/components/HeroMotion.d.ts +109 -0
- package/dist-types/components/HeroMotion.d.ts.map +1 -0
- package/dist-types/components/HeroOverlay.d.ts +116 -0
- package/dist-types/components/HeroOverlay.d.ts.map +1 -0
- package/dist-types/components/HeroSplit.d.ts +98 -0
- package/dist-types/components/HeroSplit.d.ts.map +1 -0
- package/dist-types/components/Navbar.d.ts +112 -0
- package/dist-types/components/Navbar.d.ts.map +1 -0
- package/dist-types/components/Newsletter.d.ts +59 -0
- package/dist-types/components/Newsletter.d.ts.map +1 -0
- package/dist-types/components/PortfolioSimple.d.ts +137 -0
- package/dist-types/components/PortfolioSimple.d.ts.map +1 -0
- package/dist-types/components/Pricing.d.ts +96 -0
- package/dist-types/components/Pricing.d.ts.map +1 -0
- package/dist-types/components/ProcessTimeline.d.ts +121 -0
- package/dist-types/components/ProcessTimeline.d.ts.map +1 -0
- package/dist-types/components/ServicesGrid.d.ts +64 -0
- package/dist-types/components/ServicesGrid.d.ts.map +1 -0
- package/dist-types/components/Team.d.ts +115 -0
- package/dist-types/components/Team.d.ts.map +1 -0
- package/dist-types/components/Testimonials.d.ts +81 -0
- package/dist-types/components/Testimonials.d.ts.map +1 -0
- package/dist-types/components/TrustBadges.d.ts +80 -0
- package/dist-types/components/TrustBadges.d.ts.map +1 -0
- package/dist-types/components/index.d.ts +21 -0
- package/dist-types/components/index.d.ts.map +1 -0
- package/dist-types/index.d.ts +2 -0
- package/dist-types/index.d.ts.map +1 -0
- package/package.json +8 -6
- package/dist/components/About.js +0 -129
- package/dist/components/CTA.js +0 -58
- package/dist/components/Contact.js +0 -82
- package/dist/components/FAQ.js +0 -78
- package/dist/components/Features.js +0 -109
- package/dist/components/Footer.js +0 -101
- package/dist/components/HeroMotion.js +0 -55
- package/dist/components/HeroOverlay.js +0 -111
- package/dist/components/HeroSplit.js +0 -100
- package/dist/components/Navbar.js +0 -80
- package/dist/components/Newsletter.js +0 -34
- package/dist/components/PortfolioSimple.js +0 -180
- package/dist/components/Pricing.js +0 -91
- package/dist/components/ProcessTimeline.js +0 -88
- package/dist/components/ServicesGrid.js +0 -72
- package/dist/components/Team.js +0 -107
- package/dist/components/Testimonials.js +0 -46
- package/dist/components/TrustBadges.js +0 -46
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { motion } from "motion/react";
|
|
3
|
+
/**
|
|
4
|
+
* Data used to render a FeatureCard within the Features grid.
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export interface FeatureCardData {
|
|
8
|
+
imageSrc: string;
|
|
9
|
+
imageAlt: string;
|
|
10
|
+
headingText: string;
|
|
11
|
+
subheadingText: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Props for the Features section component.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* - Styling: slot-style className overrides are merged after defaults via cn().
|
|
18
|
+
* - Motion: entrance animations respect enableMotion; prefers-reduced-motion
|
|
19
|
+
* disables transforms and transitions where possible.
|
|
20
|
+
*
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
type MotionTransition = React.ComponentProps<typeof motion.div>["transition"];
|
|
24
|
+
export interface FeaturesProps {
|
|
25
|
+
/**
|
|
26
|
+
* Optional id to attach to the root section element.
|
|
27
|
+
* @defaultValue "features"
|
|
28
|
+
*/
|
|
29
|
+
id?: string;
|
|
30
|
+
/** Main section heading text */
|
|
31
|
+
sectionHeading?: string;
|
|
32
|
+
/** Subheading text displayed below the main heading */
|
|
33
|
+
sectionSubheading?: string;
|
|
34
|
+
/** Array of feature card data objects */
|
|
35
|
+
featuresData?: FeatureCardData[];
|
|
36
|
+
/** Optional top-level class to override the section root */
|
|
37
|
+
className?: string;
|
|
38
|
+
/** Styling configuration objects (slots) */
|
|
39
|
+
section?: {
|
|
40
|
+
className?: string;
|
|
41
|
+
};
|
|
42
|
+
container?: {
|
|
43
|
+
className?: string;
|
|
44
|
+
};
|
|
45
|
+
header?: {
|
|
46
|
+
className?: string;
|
|
47
|
+
};
|
|
48
|
+
heading?: {
|
|
49
|
+
className?: string;
|
|
50
|
+
};
|
|
51
|
+
subheading?: {
|
|
52
|
+
className?: string;
|
|
53
|
+
};
|
|
54
|
+
grid?: {
|
|
55
|
+
className?: string;
|
|
56
|
+
};
|
|
57
|
+
/** Wrapper around each FeatureCard (the animated container) */
|
|
58
|
+
cardWrapper?: {
|
|
59
|
+
className?: string;
|
|
60
|
+
};
|
|
61
|
+
/** Styles passed down to FeatureCard slots */
|
|
62
|
+
card?: {
|
|
63
|
+
className?: string;
|
|
64
|
+
};
|
|
65
|
+
image?: {
|
|
66
|
+
className?: string;
|
|
67
|
+
};
|
|
68
|
+
cardHeading?: {
|
|
69
|
+
className?: string;
|
|
70
|
+
};
|
|
71
|
+
cardSubheading?: {
|
|
72
|
+
className?: string;
|
|
73
|
+
};
|
|
74
|
+
/** When false, disables entrance animations and hover transitions. */
|
|
75
|
+
enableMotion?: boolean;
|
|
76
|
+
/** Motion configuration for the feature items */
|
|
77
|
+
motionConfig?: {
|
|
78
|
+
initial?: {
|
|
79
|
+
opacity?: number;
|
|
80
|
+
y?: number;
|
|
81
|
+
};
|
|
82
|
+
whileInView?: {
|
|
83
|
+
opacity?: number;
|
|
84
|
+
y?: number;
|
|
85
|
+
};
|
|
86
|
+
viewport?: {
|
|
87
|
+
once?: boolean;
|
|
88
|
+
amount?: number;
|
|
89
|
+
};
|
|
90
|
+
transition?: MotionTransition;
|
|
91
|
+
};
|
|
92
|
+
/** ARIA label for the features section */
|
|
93
|
+
ariaLabel?: string;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Responsive Features section that renders a heading, optional subheading,
|
|
97
|
+
* and a grid of FeatureCard items with configurable entrance animations.
|
|
98
|
+
*
|
|
99
|
+
* @remarks
|
|
100
|
+
* - Styling: slot-style className overrides are merged after defaults via cn().
|
|
101
|
+
* - Motion: Controlled by enableMotion and motionConfig; animations are reduced
|
|
102
|
+
* or disabled when users prefer reduced motion.
|
|
103
|
+
* - Accessibility: Uses a semantic <section> with an aria-label.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* <Features
|
|
107
|
+
* sectionHeading="Key Features"
|
|
108
|
+
* featuresData={[{ imageSrc: "/a.png", imageAlt: "", headingText: "Fast", subheadingText: "Blazing" }]}
|
|
109
|
+
* />
|
|
110
|
+
*/
|
|
111
|
+
export declare function Features({ id, sectionHeading, sectionSubheading, featuresData, className, section, container, header, heading, subheading, grid, cardWrapper, card, image, cardHeading, cardSubheading, enableMotion, motionConfig, ariaLabel, }: FeaturesProps): React.JSX.Element;
|
|
112
|
+
export {};
|
|
113
|
+
//# sourceMappingURL=Features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Features.d.ts","sourceRoot":"","sources":["../../src/components/Features.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,KAAK,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,yCAAyC;IACzC,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IAEjC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,4CAA4C;IAC5C,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,+DAA+D;IAC/D,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,8CAA8C;IAC9C,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,cAAc,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAExC,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,iDAAiD;IACjD,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3C,WAAW,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,QAAQ,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,OAAO,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,UAAU,CAAC,EAAE,gBAAgB,CAAC;KAC/B,CAAC;IAEF,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,EACvB,EAAe,EACf,cAA+B,EAC/B,iBAA0E,EAC1E,YAAkC,EAElC,SAAS,EAET,OAAgE,EAChE,SAAmE,EACnE,MAAoD,EACpD,OAGC,EACD,UAGC,EACD,IAGC,EACD,WAEC,EACD,IAGC,EACD,KAGC,EACD,WAGC,EACD,cAEC,EAED,YAAmB,EACnB,YAWC,EACD,SAA8B,GAC/B,EAAE,aAAa,qBAwFf"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Navigation link item interface representing a single link in the footer.
|
|
4
|
+
*/
|
|
5
|
+
export interface NavLinkItem {
|
|
6
|
+
/** Display name of the link */
|
|
7
|
+
name: string;
|
|
8
|
+
/** URL or anchor for the navigation link */
|
|
9
|
+
href: string;
|
|
10
|
+
/** Whether the link should open in a new tab */
|
|
11
|
+
external?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Grouping for navigation link items under a section heading.
|
|
15
|
+
*/
|
|
16
|
+
export interface NavLinkGroup {
|
|
17
|
+
/** Section heading/title */
|
|
18
|
+
heading: string;
|
|
19
|
+
/** Collection of links under this section */
|
|
20
|
+
links: NavLinkItem[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Social media link interface for footer social icons.
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
export interface SocialLink {
|
|
27
|
+
/** Name of the social media platform */
|
|
28
|
+
name: string;
|
|
29
|
+
/** SVG icon component (e.g., Lucide). Should respect currentColor. */
|
|
30
|
+
icon: React.ComponentType<React.SVGProps<SVGSVGElement>>;
|
|
31
|
+
/** URL to the social profile */
|
|
32
|
+
url: string;
|
|
33
|
+
/** Optional aria-label for accessibility */
|
|
34
|
+
label?: string;
|
|
35
|
+
/** Whether the link should open in a new tab */
|
|
36
|
+
external?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Props for the Footer component.
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* Exposes slot-style className overrides for layout and typography. External
|
|
43
|
+
* links automatically receive target and rel attributes for security.
|
|
44
|
+
*
|
|
45
|
+
* @public
|
|
46
|
+
*/
|
|
47
|
+
export interface FooterProps {
|
|
48
|
+
/** Optional id to attach to the root footer element */
|
|
49
|
+
id?: string;
|
|
50
|
+
/** Brand name or logo text displayed in the footer */
|
|
51
|
+
footerBrandName?: string;
|
|
52
|
+
/** Optional custom brand node (e.g., logo). Rendered left of brand text */
|
|
53
|
+
brandNode?: React.ReactNode;
|
|
54
|
+
/** Optional link for the brand (wraps brand text) */
|
|
55
|
+
brandHref?: string;
|
|
56
|
+
/** Navigation link groups shown in the footer */
|
|
57
|
+
footerNavLinks?: NavLinkGroup[];
|
|
58
|
+
/** Social media links and icons shown in the footer */
|
|
59
|
+
footerSocialLinks?: SocialLink[];
|
|
60
|
+
/** Optional top-level class to override the footer root */
|
|
61
|
+
className?: string;
|
|
62
|
+
/** Styling configuration objects (slot-based API) */
|
|
63
|
+
section?: {
|
|
64
|
+
className?: string;
|
|
65
|
+
};
|
|
66
|
+
container?: {
|
|
67
|
+
className?: string;
|
|
68
|
+
};
|
|
69
|
+
brand?: {
|
|
70
|
+
className?: string;
|
|
71
|
+
};
|
|
72
|
+
brandWrapper?: {
|
|
73
|
+
className?: string;
|
|
74
|
+
};
|
|
75
|
+
navSection?: {
|
|
76
|
+
className?: string;
|
|
77
|
+
};
|
|
78
|
+
navGroup?: {
|
|
79
|
+
className?: string;
|
|
80
|
+
};
|
|
81
|
+
navHeading?: {
|
|
82
|
+
className?: string;
|
|
83
|
+
};
|
|
84
|
+
navLink?: {
|
|
85
|
+
className?: string;
|
|
86
|
+
};
|
|
87
|
+
linksList?: {
|
|
88
|
+
className?: string;
|
|
89
|
+
};
|
|
90
|
+
socialSection?: {
|
|
91
|
+
className?: string;
|
|
92
|
+
};
|
|
93
|
+
socialLink?: {
|
|
94
|
+
className?: string;
|
|
95
|
+
};
|
|
96
|
+
socialIcon?: {
|
|
97
|
+
className?: string;
|
|
98
|
+
};
|
|
99
|
+
copyright?: {
|
|
100
|
+
className?: string;
|
|
101
|
+
};
|
|
102
|
+
/** Optional overrides for copyright */
|
|
103
|
+
copyrightYear?: number;
|
|
104
|
+
copyrightOverride?: React.ReactNode;
|
|
105
|
+
/** ARIA label for the footer section */
|
|
106
|
+
ariaLabel?: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Site footer with brand, grouped navigation links, social icons, and copyright.
|
|
110
|
+
*
|
|
111
|
+
* @remarks
|
|
112
|
+
* - Styling: slot-style className overrides are merged after defaults via cn().
|
|
113
|
+
* - Accessibility: renders a semantic <footer> with aria-label and clear link
|
|
114
|
+
* names; external links open in a new tab with rel security attributes.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* <Footer footerBrandName="Acme" />
|
|
118
|
+
*/
|
|
119
|
+
export declare function Footer({ id, footerBrandName, brandNode, brandHref, footerNavLinks, footerSocialLinks, className, section, container, brand, brandWrapper, navSection, navGroup, navHeading, navLink, linksList, socialSection, socialLink, socialIcon, copyright, copyrightYear, copyrightOverride, ariaLabel, }: FooterProps): React.JSX.Element;
|
|
120
|
+
//# sourceMappingURL=Footer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../src/components/Footer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { motion } from "motion/react";
|
|
3
|
+
/**
|
|
4
|
+
* Props for the HeroMotion component.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* - Styling: exposes slot-style className overrides merged via cn().
|
|
8
|
+
* - Motion: controlled by enableMotion and motionOptions; respects
|
|
9
|
+
* prefers-reduced-motion by allowing disabling transforms.
|
|
10
|
+
* - Accessibility: rendered as a semantic <section> with aria-label.
|
|
11
|
+
* - CTA: primary/secondary CTA can be links (href provided) or buttons.
|
|
12
|
+
*/
|
|
13
|
+
type MotionTransition = React.ComponentProps<typeof motion.div>["transition"];
|
|
14
|
+
export interface HeroMotionProps {
|
|
15
|
+
/** Optional id to attach to the section root */
|
|
16
|
+
id?: string;
|
|
17
|
+
/** ARIA label for the section. @defaultValue "Hero section" */
|
|
18
|
+
ariaLabel?: string;
|
|
19
|
+
/** Optional top-level class to override the root */
|
|
20
|
+
className?: string;
|
|
21
|
+
/** Primary heading text. Ignored when headingNode is provided. */
|
|
22
|
+
heading?: string;
|
|
23
|
+
/** Custom heading node; use for advanced layouts or styling. */
|
|
24
|
+
headingNode?: React.ReactNode;
|
|
25
|
+
/** Inline highlight node rendered next to heading text. */
|
|
26
|
+
highlight?: React.ReactNode;
|
|
27
|
+
/** Optional description paragraph/node */
|
|
28
|
+
description?: React.ReactNode;
|
|
29
|
+
/** Primary call to action config or null to hide */
|
|
30
|
+
primaryCta?: {
|
|
31
|
+
label: string;
|
|
32
|
+
href?: string;
|
|
33
|
+
} | null;
|
|
34
|
+
/** Secondary call to action config or null to hide */
|
|
35
|
+
secondaryCta?: {
|
|
36
|
+
label: string;
|
|
37
|
+
href?: string;
|
|
38
|
+
} | null;
|
|
39
|
+
/** Slot-style overrides */
|
|
40
|
+
section?: {
|
|
41
|
+
className?: string;
|
|
42
|
+
};
|
|
43
|
+
container?: {
|
|
44
|
+
className?: string;
|
|
45
|
+
};
|
|
46
|
+
content?: {
|
|
47
|
+
className?: string;
|
|
48
|
+
};
|
|
49
|
+
headingText?: {
|
|
50
|
+
className?: string;
|
|
51
|
+
};
|
|
52
|
+
highlightText?: {
|
|
53
|
+
className?: string;
|
|
54
|
+
};
|
|
55
|
+
descriptionText?: {
|
|
56
|
+
className?: string;
|
|
57
|
+
};
|
|
58
|
+
actions?: {
|
|
59
|
+
className?: string;
|
|
60
|
+
};
|
|
61
|
+
primaryButtonStyle?: {
|
|
62
|
+
unstyled?: boolean;
|
|
63
|
+
style?: React.CSSProperties;
|
|
64
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
65
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
66
|
+
className?: string;
|
|
67
|
+
};
|
|
68
|
+
secondaryButtonStyle?: {
|
|
69
|
+
unstyled?: boolean;
|
|
70
|
+
style?: React.CSSProperties;
|
|
71
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
72
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
73
|
+
className?: string;
|
|
74
|
+
};
|
|
75
|
+
/** Optional background node (e.g., SVGs, gradients, images) */
|
|
76
|
+
backgroundNode?: React.ReactNode;
|
|
77
|
+
/** When false, disables entrance animations */
|
|
78
|
+
enableMotion?: boolean;
|
|
79
|
+
/** Motion configuration for entrance sequences */
|
|
80
|
+
motionOptions?: {
|
|
81
|
+
viewport?: {
|
|
82
|
+
once?: boolean;
|
|
83
|
+
amount?: number;
|
|
84
|
+
};
|
|
85
|
+
headingDelay?: number;
|
|
86
|
+
descriptionDelay?: number;
|
|
87
|
+
actionsDelay?: number;
|
|
88
|
+
transition: MotionTransition;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Motion-first hero with heading/highlight, optional description and CTAs.
|
|
93
|
+
*
|
|
94
|
+
* @remarks
|
|
95
|
+
* - Styling: slot-style className overrides are merged after defaults via cn().
|
|
96
|
+
* - Motion: enableMotion toggles entrance transitions; motionOptions controls
|
|
97
|
+
* delays and viewport.
|
|
98
|
+
* - Accessibility: semantic <section> with aria-label.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* <HeroMotion
|
|
102
|
+
* heading="Supercharge growth with"
|
|
103
|
+
* highlight="AI-powered insights"
|
|
104
|
+
* primaryCta={{ label: 'Get Started', href: '#contact' }}
|
|
105
|
+
* />
|
|
106
|
+
*/
|
|
107
|
+
export declare function HeroMotion({ id, ariaLabel, className, heading, headingNode, highlight, description, primaryCta, secondaryCta, section, container, content, headingText, highlightText, descriptionText, actions, primaryButtonStyle, secondaryButtonStyle, enableMotion, motionOptions, backgroundNode, }: HeroMotionProps): React.JSX.Element;
|
|
108
|
+
export {};
|
|
109
|
+
//# sourceMappingURL=HeroMotion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeroMotion.d.ts","sourceRoot":"","sources":["../../src/components/HeroMotion.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Props for the HeroOverlay component.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* - Prefer the structured image prop (image) over deprecated flat props.
|
|
7
|
+
* - Slot-style className overrides are merged after defaults via cn().
|
|
8
|
+
* - Motion controls affect CTA hover transitions.
|
|
9
|
+
*
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export interface HeroOverlayProps {
|
|
13
|
+
id?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
image?: {
|
|
16
|
+
src?: string;
|
|
17
|
+
alt?: string;
|
|
18
|
+
className?: string;
|
|
19
|
+
objectFit?: React.CSSProperties["objectFit"];
|
|
20
|
+
objectPosition?: React.CSSProperties["objectPosition"];
|
|
21
|
+
};
|
|
22
|
+
/** @deprecated Use image.src instead */
|
|
23
|
+
imageSrc?: string;
|
|
24
|
+
/** @deprecated Use image.alt instead */
|
|
25
|
+
imageAlt?: string;
|
|
26
|
+
/** @deprecated Use image.objectFit instead */
|
|
27
|
+
imageObjectFit?: React.CSSProperties["objectFit"];
|
|
28
|
+
/** @deprecated Use image.objectPosition instead */
|
|
29
|
+
imageObjectPosition?: React.CSSProperties["objectPosition"];
|
|
30
|
+
heading?: string | {
|
|
31
|
+
text?: string;
|
|
32
|
+
className?: string;
|
|
33
|
+
};
|
|
34
|
+
subheading?: string | {
|
|
35
|
+
text?: string;
|
|
36
|
+
className?: string;
|
|
37
|
+
};
|
|
38
|
+
overlayRGBA?: string;
|
|
39
|
+
overlayDarkRGBA?: string;
|
|
40
|
+
section?: {
|
|
41
|
+
className?: string;
|
|
42
|
+
};
|
|
43
|
+
container?: {
|
|
44
|
+
className?: string;
|
|
45
|
+
};
|
|
46
|
+
imageContainer?: {
|
|
47
|
+
className?: string;
|
|
48
|
+
};
|
|
49
|
+
overlay?: {
|
|
50
|
+
className?: string;
|
|
51
|
+
};
|
|
52
|
+
content?: {
|
|
53
|
+
className?: string;
|
|
54
|
+
};
|
|
55
|
+
textContainer?: {
|
|
56
|
+
className?: string;
|
|
57
|
+
};
|
|
58
|
+
/** @deprecated Use heading.className */
|
|
59
|
+
headingStyle?: {
|
|
60
|
+
className?: string;
|
|
61
|
+
};
|
|
62
|
+
/** @deprecated Use subheading.className */
|
|
63
|
+
subheadingStyle?: {
|
|
64
|
+
className?: string;
|
|
65
|
+
};
|
|
66
|
+
ctaContainer?: {
|
|
67
|
+
className?: string;
|
|
68
|
+
};
|
|
69
|
+
cta1?: {
|
|
70
|
+
label?: string;
|
|
71
|
+
href?: string;
|
|
72
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
73
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
74
|
+
className?: string;
|
|
75
|
+
unstyled?: boolean;
|
|
76
|
+
style?: React.CSSProperties;
|
|
77
|
+
};
|
|
78
|
+
cta2?: {
|
|
79
|
+
label?: string;
|
|
80
|
+
href?: string;
|
|
81
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
82
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
83
|
+
className?: string;
|
|
84
|
+
unstyled?: boolean;
|
|
85
|
+
style?: React.CSSProperties;
|
|
86
|
+
};
|
|
87
|
+
/** @deprecated Use cta1.label instead */
|
|
88
|
+
ctaBtn1Label?: string;
|
|
89
|
+
/** @deprecated Use cta1.href instead */
|
|
90
|
+
ctaBtn1Href?: string;
|
|
91
|
+
/** @deprecated Use cta2.label instead */
|
|
92
|
+
ctaBtn2Label?: string;
|
|
93
|
+
/** @deprecated Use cta2.href instead */
|
|
94
|
+
ctaBtn2Href?: string;
|
|
95
|
+
ariaLabel?: string;
|
|
96
|
+
enableMotion?: boolean;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Full-bleed image hero with color overlay, heading/subheading, and up to two CTAs.
|
|
100
|
+
*
|
|
101
|
+
* @remarks
|
|
102
|
+
* - Styling: slot-style overrides for container, imageContainer, overlay, content, textContainer.
|
|
103
|
+
* - Motion: enableMotion applies hover-lift transitions to CTA buttons only.
|
|
104
|
+
* - Accessibility: uses semantic <section> with aria-label; background image is
|
|
105
|
+
* decorative with overlay and text content provided separately.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* <HeroOverlay
|
|
109
|
+
* image={{ src: "/hero.png", alt: "" }}
|
|
110
|
+
* heading="Welcome"
|
|
111
|
+
* subheading="Build faster with our blocks"
|
|
112
|
+
* cta1={{ label: "Get Started", href: "#getstarted" }}
|
|
113
|
+
* />
|
|
114
|
+
*/
|
|
115
|
+
export declare function HeroOverlay({ id, className, imageSrc, imageAlt, imageObjectFit, imageObjectPosition, image, heading, subheading, overlayRGBA, overlayDarkRGBA, ctaBtn1Label, ctaBtn1Href, ctaBtn2Label, ctaBtn2Href, container, section, imageContainer, overlay, content, textContainer, headingStyle, subheadingStyle, ctaContainer, cta1, cta2, ariaLabel, enableMotion, }: HeroOverlayProps): React.JSX.Element;
|
|
116
|
+
//# sourceMappingURL=HeroOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeroOverlay.d.ts","sourceRoot":"","sources":["../../src/components/HeroOverlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Props for the HeroSplit component.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* - Layout: split hero with text and image. imageLayout controls whether the
|
|
7
|
+
* image is full-bleed or padded.
|
|
8
|
+
* - Styling: slot-style className overrides are merged via cn(). Heading and
|
|
9
|
+
* subheading accept either a string or a { text, className } object.
|
|
10
|
+
* - Motion: enableMotion toggles button hover lift transitions.
|
|
11
|
+
* - Accessibility: uses a semantic <section> with aria-label.
|
|
12
|
+
*/
|
|
13
|
+
interface HeroSplitProps {
|
|
14
|
+
/** Optional id to attach to the root section element */
|
|
15
|
+
id?: string;
|
|
16
|
+
/** Optional top-level class to override the root */
|
|
17
|
+
className?: string;
|
|
18
|
+
/** Section slot override */
|
|
19
|
+
section?: {
|
|
20
|
+
className?: string;
|
|
21
|
+
};
|
|
22
|
+
/** Heading string or object with text and className */
|
|
23
|
+
heading?: string | {
|
|
24
|
+
text?: string;
|
|
25
|
+
className?: string;
|
|
26
|
+
};
|
|
27
|
+
/** Subheading string or object with text and className */
|
|
28
|
+
subheading?: string | {
|
|
29
|
+
text?: string;
|
|
30
|
+
className?: string;
|
|
31
|
+
};
|
|
32
|
+
/** Primary CTA configuration */
|
|
33
|
+
cta1?: {
|
|
34
|
+
label?: string;
|
|
35
|
+
href?: string;
|
|
36
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
37
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
38
|
+
className?: string;
|
|
39
|
+
/** When true, renders the Button in unstyled mode to avoid token bleed from variants */
|
|
40
|
+
unstyled?: boolean;
|
|
41
|
+
/** Optional inline style forwarded to Button */
|
|
42
|
+
style?: React.CSSProperties;
|
|
43
|
+
};
|
|
44
|
+
/** Secondary CTA configuration */
|
|
45
|
+
cta2?: {
|
|
46
|
+
label?: string;
|
|
47
|
+
href?: string;
|
|
48
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
49
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
50
|
+
className?: string;
|
|
51
|
+
/** When true, renders the Button in unstyled mode to avoid token bleed from variants */
|
|
52
|
+
unstyled?: boolean;
|
|
53
|
+
/** Optional inline style forwarded to Button */
|
|
54
|
+
style?: React.CSSProperties;
|
|
55
|
+
};
|
|
56
|
+
/** Image configuration */
|
|
57
|
+
image?: {
|
|
58
|
+
src?: string;
|
|
59
|
+
alt?: string;
|
|
60
|
+
className?: string;
|
|
61
|
+
};
|
|
62
|
+
/** Image container slot */
|
|
63
|
+
imageContainer?: {
|
|
64
|
+
className?: string;
|
|
65
|
+
};
|
|
66
|
+
/** Text container slot */
|
|
67
|
+
textContainer?: {
|
|
68
|
+
className?: string;
|
|
69
|
+
};
|
|
70
|
+
/** Buttons container slot */
|
|
71
|
+
buttonsContainer?: {
|
|
72
|
+
className?: string;
|
|
73
|
+
};
|
|
74
|
+
/** Text alignment at large breakpoints. @defaultValue "center" */
|
|
75
|
+
textAlign?: "left" | "center" | "right";
|
|
76
|
+
/** Fallback node shown when no image.src is provided */
|
|
77
|
+
fallback?: React.ReactNode;
|
|
78
|
+
/** ARIA label for the section. @defaultValue "Hero section" */
|
|
79
|
+
ariaLabel?: string;
|
|
80
|
+
/** When false, removes button hover lifts, keeps layout static */
|
|
81
|
+
enableMotion?: boolean;
|
|
82
|
+
/** "padded" keeps default gutters. "full-bleed" allows the image to touch page edges. @defaultValue "full-bleed" */
|
|
83
|
+
imageLayout?: "padded" | "full-bleed";
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Split hero with text on one side and an image on the other.
|
|
87
|
+
*
|
|
88
|
+
* @remarks
|
|
89
|
+
* - Text props accept string or object forms to easily override classes.
|
|
90
|
+
* - Full-bleed layout absolutely positions the image on larger screens.
|
|
91
|
+
* - Motion only affects the subtle hover lift on CTA buttons.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* <HeroSplit heading="Build faster" subheading="Launch confidently" />
|
|
95
|
+
*/
|
|
96
|
+
export declare function HeroSplit({ id, className, heading, subheading, section, cta1, cta2, image, imageContainer, textContainer, buttonsContainer, textAlign, fallback, ariaLabel, enableMotion, imageLayout, }: HeroSplitProps): React.JSX.Element;
|
|
97
|
+
export {};
|
|
98
|
+
//# sourceMappingURL=HeroSplit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeroSplit.d.ts","sourceRoot":"","sources":["../../src/components/HeroSplit.tsx"],"names":[],"mappings":"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"}
|