@shipsite.dev/components 0.2.64 → 0.2.69
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/components.json +5 -3
- package/dist/layout/Header.js +1 -1
- package/dist/layout/Header.js.map +1 -1
- package/dist/lib/use-form-submit.d.ts.map +1 -1
- package/dist/lib/use-form-submit.js +7 -0
- package/dist/lib/use-form-submit.js.map +1 -1
- package/dist/marketing/Companies.d.ts +2 -1
- package/dist/marketing/Companies.d.ts.map +1 -1
- package/dist/marketing/Companies.js +2 -2
- package/dist/marketing/Companies.js.map +1 -1
- package/dist/marketing/Hero.d.ts +2 -1
- package/dist/marketing/Hero.d.ts.map +1 -1
- package/dist/marketing/Hero.js +4 -2
- package/dist/marketing/Hero.js.map +1 -1
- package/dist/ui/navigation-menu.js +1 -1
- package/dist/ui/navigation-menu.js.map +1 -1
- package/package.json +1 -1
- package/src/layout/Header.tsx +1 -1
- package/src/lib/use-form-submit.ts +8 -0
- package/src/marketing/Companies.tsx +4 -3
- package/src/marketing/Hero.tsx +15 -6
- package/src/styles/utils.css +7 -0
- package/src/ui/navigation-menu.tsx +1 -1
package/components.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
{
|
|
5
5
|
"name": "Hero",
|
|
6
6
|
"category": "marketing",
|
|
7
|
-
"description": "Full-width hero section with animated title, description, optional badge, primary/secondary CTAs, and a responsive device mockup image. Uses a top glow effect for visual emphasis.",
|
|
7
|
+
"description": "Full-width hero section with animated title, description, optional badge, primary/secondary CTAs, and a responsive device mockup image. Uses a top glow effect for visual emphasis. Supports a compact size for landing pages with reduced padding and smaller typography.",
|
|
8
8
|
"props": [
|
|
9
9
|
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"pricing\" enables #pricing navigation)." },
|
|
10
10
|
{ "name": "title", "type": "string", "required": true, "description": "Main headline text displayed as an h1." },
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
{ "name": "secondaryCta", "type": "{ label: string; href: string }", "required": false, "description": "Secondary call-to-action button rendered with the glow variant." },
|
|
14
14
|
{ "name": "badge", "type": "string", "required": false, "description": "Small badge text displayed above the title." },
|
|
15
15
|
{ "name": "image", "type": "ImageSource", "required": false, "description": "Hero image displayed inside a responsive device mockup. Pass a string URL or { light, dark } for theme-aware images." },
|
|
16
|
+
{ "name": "size", "type": "'default' | 'compact'", "required": false, "description": "Hero size variant. 'compact' reduces padding, font sizes, and spacing — ideal for landing pages that need less whitespace." },
|
|
16
17
|
{ "name": "children", "type": "React.ReactNode", "required": false, "description": "Optional additional content rendered below the CTA buttons." }
|
|
17
18
|
],
|
|
18
19
|
"example": "<Hero\n title=\"Build your SaaS faster\"\n description=\"Ship production-ready landing pages in minutes.\"\n badge=\"New Release\"\n primaryCta={{ label: \"Get Started\", href: \"/signup\" }}\n secondaryCta={{ label: \"Learn More\", href: \"/docs\" }}\n image=\"/images/hero-screenshot.png\"\n/>"
|
|
@@ -129,12 +130,13 @@
|
|
|
129
130
|
{
|
|
130
131
|
"name": "Companies",
|
|
131
132
|
"category": "marketing",
|
|
132
|
-
"description": "Logo showcase section with two variants: a continuous marquee scroll animation or a static inline flex layout. Supports logo names, versions, and badges in inline mode.",
|
|
133
|
+
"description": "Logo showcase section with two variants: a continuous marquee scroll animation or a static inline flex layout. Supports logo names, versions, and badges in inline mode. Grayscale can be disabled for full-color logos.",
|
|
133
134
|
"props": [
|
|
134
135
|
{ "name": "id", "type": "string", "required": false, "description": "HTML id for anchor links (e.g. id=\"companies\" enables #companies navigation)." },
|
|
135
136
|
{ "name": "title", "type": "string", "required": false, "description": "Title text above the logos." },
|
|
136
137
|
{ "name": "logos", "type": "Array<{ src: ImageSource; alt: string; width?: number; name?: string; version?: string; badge?: string }>", "required": true, "description": "Array of logo items. Each has an image src (string or { light, dark }), alt text, and optional width, name, version, and badge." },
|
|
137
|
-
{ "name": "variant", "type": "'marquee' | 'inline'", "required": false, "description": "Display variant. 'marquee' (default) shows a scrolling animation; 'inline' shows a static flexbox layout with names and badges." }
|
|
138
|
+
{ "name": "variant", "type": "'marquee' | 'inline'", "required": false, "description": "Display variant. 'marquee' (default) shows a scrolling animation; 'inline' shows a static flexbox layout with names and badges." },
|
|
139
|
+
{ "name": "grayscale", "type": "boolean", "required": false, "description": "Whether to apply grayscale filter to logos in marquee mode. Defaults to true. Set to false for full-color logos (e.g. member logos, partner badges)." }
|
|
138
140
|
],
|
|
139
141
|
"example": "<Companies\n title=\"Trusted by leading companies\"\n logos={[\n { src: \"/logos/acme.svg\", alt: \"Acme\" },\n { src: \"/logos/globex.svg\", alt: \"Globex\" }\n ]}\n/>"
|
|
140
142
|
},
|
package/dist/layout/Header.js
CHANGED
|
@@ -17,7 +17,7 @@ export function Header() {
|
|
|
17
17
|
const { siteName, logo, navigation, locale, defaultLocale, darkMode } = useShipSite();
|
|
18
18
|
const resolveHref = useResolveHref();
|
|
19
19
|
const logoSrc = typeof logo === 'string' ? logo : logo?.light;
|
|
20
|
-
return (_jsx("header", { className: "sticky top-0 z-50 bg-background/80 backdrop-blur-lg border-b border-border", children: _jsx("div", { className: "container-main", children: _jsxs(Navbar, { children: [_jsx(NavbarLeft, { children: _jsxs("a", { href: locale === defaultLocale ? '/' : `/${locale}`, className: "flex items-center gap-2", children: [logoSrc && (_jsx("img", { src: logoSrc, alt: siteName, className: "h-8 w-auto" })), _jsx("span", { className: "font-semibold text-lg text-foreground", children: siteName })] }) }), _jsxs(NavbarRight, { className: "hidden md:flex", children: [_jsx(NavigationMenu, { children: _jsx(NavigationMenuList, { children: navigation.items.map((item, idx) => {
|
|
20
|
+
return (_jsx("header", { className: "sticky top-0 z-50 bg-background/80 backdrop-blur-lg border-b border-border", children: _jsx("div", { className: "container-main", children: _jsxs(Navbar, { children: [_jsx(NavbarLeft, { children: _jsxs("a", { href: locale === defaultLocale ? '/' : `/${locale}`, className: "flex items-center gap-2", children: [logoSrc && (_jsx("img", { src: logoSrc, alt: siteName, className: "h-8 w-auto" })), _jsx("span", { className: "font-semibold text-lg text-foreground", children: siteName })] }) }), _jsxs(NavbarRight, { className: "hidden md:flex", children: [_jsx(NavigationMenu, { viewport: false, children: _jsx(NavigationMenuList, { children: navigation.items.map((item, idx) => {
|
|
21
21
|
if (isSubmenu(item)) {
|
|
22
22
|
return (_jsxs(NavigationMenuItem, { children: [_jsx(NavigationMenuTrigger, { children: item.label }), _jsx(NavigationMenuContent, { children: item.featured ? (_jsxs("div", { className: "grid w-[400px] gap-3 md:w-[500px] md:grid-cols-[.75fr_1fr] lg:w-[600px]", children: [_jsx(NavigationMenuLink, { asChild: true, children: _jsxs("a", { href: resolveHref(item.featured.href), className: "flex flex-col justify-end rounded-md bg-gradient-to-b from-muted/50 to-muted p-4 no-underline outline-none select-none focus:shadow-md", children: [_jsx("img", { src: item.featured.image, alt: item.featured.title, className: "mb-2 h-24 w-full rounded object-cover" }), _jsx("div", { className: "mb-1 text-sm font-medium leading-none", children: item.featured.title }), item.featured.description && (_jsx("p", { className: "text-xs leading-snug text-muted-foreground", children: item.featured.description }))] }) }), _jsx("ul", { className: "flex flex-col gap-1 p-1", children: item.children.map((child) => (_jsx("li", { children: _jsx(NavigationMenuLink, { asChild: true, children: _jsxs("a", { href: resolveHref(child.href), className: "block rounded-md p-2 hover:bg-foreground/5", children: [_jsx("div", { className: "text-sm font-medium leading-none", children: child.label }), child.description && (_jsx("p", { className: "mt-1 line-clamp-2 text-xs leading-snug text-muted-foreground", children: child.description }))] }) }) }, child.href))) })] })) : (_jsx("ul", { className: "grid w-[300px] gap-1 p-1 md:w-[400px] md:grid-cols-2", children: item.children.map((child) => (_jsx("li", { children: _jsx(NavigationMenuLink, { asChild: true, children: _jsxs("a", { href: resolveHref(child.href), className: "block rounded-md p-2 hover:bg-foreground/5", children: [_jsx("div", { className: "text-sm font-medium leading-none", children: child.label }), child.description && (_jsx("p", { className: "mt-1 line-clamp-2 text-xs leading-snug text-muted-foreground", children: child.description }))] }) }) }, child.href))) })) })] }, idx));
|
|
23
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/layout/Header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQ/C,SAAS,SAAS,CAAC,IAAa;IAC9B,OAAO,UAAU,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;IACtF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;IAE9D,OAAO,CACL,iBAAQ,SAAS,EAAC,4EAA4E,YAC5F,cAAK,SAAS,EAAC,gBAAgB,YAC7B,MAAC,MAAM,eACL,KAAC,UAAU,cACT,aACE,IAAI,EAAE,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,EACnD,SAAS,EAAC,yBAAyB,aAElC,OAAO,IAAI,CACV,cAAK,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAC,YAAY,GAAG,CAC5D,EACD,eAAM,SAAS,EAAC,uCAAuC,YACpD,QAAQ,GACJ,IACL,GACO,EAEb,MAAC,WAAW,IAAC,SAAS,EAAC,gBAAgB,aACrC,KAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/layout/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-form-submit.d.ts","sourceRoot":"","sources":["../../src/lib/use-form-submit.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAElE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM;;;mBAK3B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"use-form-submit.d.ts","sourceRoot":"","sources":["../../src/lib/use-form-submit.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAElE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM;;;mBAK3B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;EAiDtC"}
|
|
@@ -36,6 +36,13 @@ export function useFormSubmit(action) {
|
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
38
38
|
setStatus("success");
|
|
39
|
+
// Push conversion event to GTM dataLayer (if GTM is loaded)
|
|
40
|
+
if (typeof window !== "undefined" && Array.isArray(window.dataLayer)) {
|
|
41
|
+
window.dataLayer.push({
|
|
42
|
+
event: "form_submission",
|
|
43
|
+
form_action: action,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
39
46
|
}
|
|
40
47
|
catch {
|
|
41
48
|
setErrorMsg("Network error. Please check your connection and try again.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-form-submit.js","sourceRoot":"","sources":["../../src/lib/use-form-submit.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAI9C,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAa,MAAM,CAAC,CAAC;IACzD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,IAA4B,EAAE,EAAE;QACrC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,WAAW,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;gBAC9B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,MAAM,EAAE,kBAAkB;iBAC3B;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,IAAI,GAAG,GAAG,yCAAyC,CAAC;gBACpD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC9B,8CAA8C;oBAC9C,mCAAmC;oBACnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO;wBAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;yBACvD,IAAI,IAAI,CAAC,KAAK;wBAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;yBACjC,IAAI,IAAI,CAAC,OAAO;wBAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC5C,CAAC;gBAAC,MAAM,CAAC;oBACP,2BAA2B;gBAC7B,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,CAAC;gBACjB,SAAS,CAAC,OAAO,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,SAAS,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"use-form-submit.js","sourceRoot":"","sources":["../../src/lib/use-form-submit.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAI9C,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAa,MAAM,CAAC,CAAC;IACzD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,IAA4B,EAAE,EAAE;QACrC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,WAAW,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;gBAC9B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,MAAM,EAAE,kBAAkB;iBAC3B;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,IAAI,GAAG,GAAG,yCAAyC,CAAC;gBACpD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC9B,8CAA8C;oBAC9C,mCAAmC;oBACnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO;wBAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;yBACvD,IAAI,IAAI,CAAC,KAAK;wBAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;yBACjC,IAAI,IAAI,CAAC,OAAO;wBAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC5C,CAAC;gBAAC,MAAM,CAAC;oBACP,2BAA2B;gBAC7B,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,CAAC;gBACjB,SAAS,CAAC,OAAO,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,SAAS,CAAC,SAAS,CAAC,CAAC;YAErB,4DAA4D;YAC5D,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAE,MAA6C,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5G,MAA+C,CAAC,SAAS,CAAC,IAAI,CAAC;oBAC9D,KAAK,EAAE,iBAAiB;oBACxB,WAAW,EAAE,MAAM;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,CAAC,4DAA4D,CAAC,CAAC;YAC1E,SAAS,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -12,7 +12,8 @@ interface CompaniesProps {
|
|
|
12
12
|
title?: string;
|
|
13
13
|
logos: LogoItem[];
|
|
14
14
|
variant?: 'marquee' | 'inline';
|
|
15
|
+
grayscale?: boolean;
|
|
15
16
|
}
|
|
16
|
-
export declare function Companies({ id, title, logos, variant }: CompaniesProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function Companies({ id, title, logos, variant, grayscale }: CompaniesProps): import("react/jsx-runtime").JSX.Element;
|
|
17
18
|
export {};
|
|
18
19
|
//# sourceMappingURL=Companies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Companies.d.ts","sourceRoot":"","sources":["../../src/marketing/Companies.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,UAAU,QAAQ;IAChB,GAAG,EAAE,WAAW,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Companies.d.ts","sourceRoot":"","sources":["../../src/marketing/Companies.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,UAAU,QAAQ;IAChB,GAAG,EAAE,WAAW,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAmB,EAAE,SAAgB,EAAE,EAAE,cAAc,2CAkDpG"}
|
|
@@ -3,10 +3,10 @@ import { Section } from '../ui/section';
|
|
|
3
3
|
import { Badge } from '../ui/badge';
|
|
4
4
|
import { cn } from '../lib/utils';
|
|
5
5
|
import { ThemeImage } from '../ui/theme-image';
|
|
6
|
-
export function Companies({ id, title, logos, variant = 'marquee' }) {
|
|
6
|
+
export function Companies({ id, title, logos, variant = 'marquee', grayscale = true }) {
|
|
7
7
|
if (variant === 'inline') {
|
|
8
8
|
return (_jsx(Section, { id: id, className: "py-12", children: _jsxs("div", { className: "container-main flex flex-col items-center gap-8 text-center", children: [title && _jsx("h2", { className: "text-base font-semibold sm:text-2xl text-foreground", children: title }), _jsx("div", { className: "flex flex-wrap items-center justify-center gap-8", children: logos.map((logo, i) => (_jsxs("div", { className: "flex items-center gap-2 text-sm font-medium", children: [_jsx(ThemeImage, { src: logo.src, alt: logo.alt, width: logo.width || 32, height: logo.width || 32, className: cn("h-6 w-6 object-contain opacity-70", typeof logo.src === 'string' && "dark:invert") }), logo.name && _jsx("span", { className: cn(!logo.name && 'sr-only'), children: logo.name }), logo.version && _jsx("span", { className: "text-muted-foreground", children: logo.version }), logo.badge && (_jsx(Badge, { variant: "brand", className: "text-xs px-1.5 py-0.5", children: logo.badge }))] }, i))) })] }) }));
|
|
9
9
|
}
|
|
10
|
-
return (_jsx(Section, { id: id, className: "py-12", children: _jsxs("div", { className: "container-main", children: [title && _jsx("p", { className: "text-center text-sm text-muted-foreground mb-8", children: title }), _jsx("div", { className: "relative fade-x overflow-hidden", children: _jsxs("div", { className: "flex gap-12 items-center", style: { '--marquee-gap': '3rem' }, children: [_jsx("div", { className: "flex gap-12 items-center animate-marquee", children: logos.map((logo, i) => (_jsx(ThemeImage, { src: logo.src, alt: logo.alt, width: logo.width || 120, className: "h-8 w-auto object-contain grayscale opacity-60 hover:grayscale-0 hover:opacity-100
|
|
10
|
+
return (_jsx(Section, { id: id, className: "py-12", children: _jsxs("div", { className: "container-main", children: [title && _jsx("p", { className: "text-center text-sm text-muted-foreground mb-8", children: title }), _jsx("div", { className: "relative fade-x overflow-hidden", children: _jsxs("div", { className: "flex gap-12 items-center", style: { '--marquee-gap': '3rem' }, children: [_jsx("div", { className: "flex gap-12 items-center animate-marquee", children: logos.map((logo, i) => (_jsx(ThemeImage, { src: logo.src, alt: logo.alt, width: logo.width || 120, className: cn("h-8 w-auto object-contain transition-all", grayscale ? "grayscale opacity-60 hover:grayscale-0 hover:opacity-100" : "opacity-80 hover:opacity-100") }, i))) }), _jsx("div", { className: "flex gap-12 items-center animate-marquee", "aria-hidden": true, children: logos.map((logo, i) => (_jsx(ThemeImage, { src: logo.src, alt: "", width: logo.width || 120, className: cn("h-8 w-auto object-contain", grayscale ? "grayscale opacity-60" : "opacity-80") }, i))) })] }) })] }) }));
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=Companies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Companies.js","sourceRoot":"","sources":["../../src/marketing/Companies.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Companies.js","sourceRoot":"","sources":["../../src/marketing/Companies.tsx"],"names":[],"mappings":"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"}
|
package/dist/marketing/Hero.d.ts
CHANGED
|
@@ -14,8 +14,9 @@ interface HeroProps {
|
|
|
14
14
|
};
|
|
15
15
|
badge?: string;
|
|
16
16
|
image?: ImageSource;
|
|
17
|
+
size?: 'default' | 'compact';
|
|
17
18
|
children?: React.ReactNode;
|
|
18
19
|
}
|
|
19
|
-
export declare function Hero({ id, title, description, primaryCta, secondaryCta, badge, image, children }: HeroProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare function Hero({ id, title, description, primaryCta, secondaryCta, badge, image, size, children }: HeroProps): import("react/jsx-runtime").JSX.Element;
|
|
20
21
|
export {};
|
|
21
22
|
//# sourceMappingURL=Hero.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hero.d.ts","sourceRoot":"","sources":["../../src/marketing/Hero.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,UAAU,SAAS;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"Hero.d.ts","sourceRoot":"","sources":["../../src/marketing/Hero.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,UAAU,SAAS;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAgB,EAAE,QAAQ,EAAE,EAAE,SAAS,2CAiD7H"}
|
package/dist/marketing/Hero.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../lib/utils';
|
|
2
3
|
import { Section } from '../ui/section';
|
|
3
4
|
import { Badge } from '../ui/badge';
|
|
4
5
|
import { Button } from '../ui/button';
|
|
5
6
|
import { Mockup } from '../ui/mockup';
|
|
6
7
|
import Glow from '../ui/glow';
|
|
7
8
|
import { ThemeImage } from '../ui/theme-image';
|
|
8
|
-
export function Hero({ id, title, description, primaryCta, secondaryCta, badge, image, children }) {
|
|
9
|
-
|
|
9
|
+
export function Hero({ id, title, description, primaryCta, secondaryCta, badge, image, size = 'default', children }) {
|
|
10
|
+
const compact = size === 'compact';
|
|
11
|
+
return (_jsxs(Section, { id: id, className: cn("relative overflow-hidden", compact && "py-8 sm:py-16 md:py-20"), children: [_jsx(Glow, { variant: "top" }), _jsxs("div", { className: "container-main relative z-10", children: [_jsxs("div", { className: "max-w-3xl mx-auto text-center", children: [badge && (_jsx(Badge, { variant: "outline", className: cn("animate-appear", compact ? "mb-4" : "mb-6"), children: badge })), _jsx("h1", { className: cn("font-bold tracking-tight text-foreground animate-appear [animation-delay:100ms]", compact ? "text-3xl md:text-5xl mb-4" : "text-4xl md:text-6xl mb-6"), children: title }), _jsx("p", { className: cn("text-muted-foreground max-w-2xl mx-auto animate-appear [animation-delay:200ms]", compact ? "text-base md:text-lg mb-6" : "text-lg md:text-xl mb-8"), children: description }), _jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-center gap-4 animate-appear [animation-delay:300ms]", children: [primaryCta && (_jsx(Button, { asChild: true, size: "lg", children: _jsx("a", { href: primaryCta.href, children: primaryCta.label }) })), secondaryCta && (_jsx(Button, { asChild: true, variant: "glow", size: "lg", children: _jsx("a", { href: secondaryCta.href, children: secondaryCta.label }) }))] }), children] }), image && (_jsx("div", { className: cn("animate-appear-zoom [animation-delay:400ms]", compact ? "mt-10" : "mt-16"), children: _jsx(Mockup, { type: "responsive", className: "shadow-mockup w-full", children: _jsx(ThemeImage, { src: image, alt: "", className: "w-full" }) }) }))] })] }));
|
|
10
12
|
}
|
|
11
13
|
//# sourceMappingURL=Hero.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hero.js","sourceRoot":"","sources":["../../src/marketing/Hero.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Hero.js","sourceRoot":"","sources":["../../src/marketing/Hero.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAcjE,MAAM,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAa;IAC5H,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC;IAEnC,OAAO,CACL,MAAC,OAAO,IAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,OAAO,IAAI,wBAAwB,CAAC,aAC7F,KAAC,IAAI,IAAC,OAAO,EAAC,KAAK,GAAG,EACtB,eAAK,SAAS,EAAC,8BAA8B,aAC3C,eAAK,SAAS,EAAC,+BAA+B,aAC3C,KAAK,IAAI,CACR,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAChF,KAAK,GACA,CACT,EACD,aAAI,SAAS,EAAE,EAAE,CACf,iFAAiF,EACjF,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,2BAA2B,CACpE,YACE,KAAK,GACH,EACL,YAAG,SAAS,EAAE,EAAE,CACd,gFAAgF,EAChF,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAClE,YACE,WAAW,GACV,EACJ,eAAK,SAAS,EAAC,oGAAoG,aAChH,UAAU,IAAI,CACb,KAAC,MAAM,IAAC,OAAO,QAAC,IAAI,EAAC,IAAI,YACvB,YAAG,IAAI,EAAE,UAAU,CAAC,IAAI,YAAG,UAAU,CAAC,KAAK,GAAK,GACzC,CACV,EACA,YAAY,IAAI,CACf,KAAC,MAAM,IAAC,OAAO,QAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,YACtC,YAAG,IAAI,EAAE,YAAY,CAAC,IAAI,YAAG,YAAY,CAAC,KAAK,GAAK,GAC7C,CACV,IACG,EACL,QAAQ,IACL,EACL,KAAK,IAAI,CACR,cAAK,SAAS,EAAE,EAAE,CAAC,6CAA6C,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,YAC5F,KAAC,MAAM,IAAC,IAAI,EAAC,YAAY,EAAC,SAAS,EAAC,sBAAsB,YACxD,KAAC,UAAU,IAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,QAAQ,GAAG,GAC7C,GACL,CACP,IACG,IACE,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -17,7 +17,7 @@ function NavigationMenuTrigger({ className, children, ...props }) {
|
|
|
17
17
|
return (_jsxs(NavigationMenuPrimitive.Trigger, { "data-slot": "navigation-menu-trigger", className: cn(navigationMenuTriggerStyle(), "group", className), ...props, children: [children, " ", _jsx(ChevronDownIcon, { className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180", "aria-hidden": "true" })] }));
|
|
18
18
|
}
|
|
19
19
|
function NavigationMenuContent({ className, ...props }) {
|
|
20
|
-
return (_jsx(NavigationMenuPrimitive.Content, { "data-slot": "navigation-menu-content", className: cn("data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto", "group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none", className), ...props }));
|
|
20
|
+
return (_jsx(NavigationMenuPrimitive.Content, { "data-slot": "navigation-menu-content", className: cn("data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto", "group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:left-1/2 group-data-[viewport=false]/navigation-menu:-translate-x-1/2 group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none", className), ...props }));
|
|
21
21
|
}
|
|
22
22
|
function NavigationMenuLink({ className, ...props }) {
|
|
23
23
|
return (_jsx(NavigationMenuPrimitive.Link, { "data-slot": "navigation-menu-link", className: cn("data-[active=true]:focus:bg-foreground/10 data-[active=true]:hover:bg-foreground/10 data-[active=true]:bg-foreground/10 data-[active=true]:text-accent-foreground hover:bg-foreground/10 hover:text-accent-foreground focus:bg-foreground/10 focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4", className), ...props }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-menu.js","sourceRoot":"","sources":["../../src/ui/navigation-menu.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,uBAAuB,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,GAAG,KAAK,EAGT;IACC,OAAO,CACL,MAAC,uBAAuB,CAAC,IAAI,iBACjB,iBAAiB,mBACZ,QAAQ,EACvB,SAAS,EAAE,EAAE,CACX,uFAAuF,EACvF,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACR,QAAQ,IAAI,KAAC,sBAAsB,KAAG,IACV,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACkD;IAC1D,OAAO,CACL,KAAC,uBAAuB,CAAC,IAAI,iBACjB,sBAAsB,EAChC,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACkD;IAC1D,OAAO,CACL,KAAC,uBAAuB,CAAC,IAAI,iBACjB,sBAAsB,EAChC,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,KAChC,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,MAAM,0BAA0B,GAAG,GAAG,CACpC,8gBAA8gB,CAC/gB,CAAC;AAEF,SAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACqD;IAC7D,OAAO,CACL,MAAC,uBAAuB,CAAC,OAAO,iBACpB,yBAAyB,EACnC,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,KAC3D,KAAK,aAER,QAAQ,EAAE,GAAG,EACd,KAAC,eAAe,IACd,SAAS,EAAC,2FAA2F,iBACzF,MAAM,GAClB,IAC8B,CACnC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,GAAG,KAAK,EACqD;IAC7D,OAAO,CACL,KAAC,uBAAuB,CAAC,OAAO,iBACpB,yBAAyB,EACnC,SAAS,EAAE,EAAE,CACX,kWAAkW,EAClW,
|
|
1
|
+
{"version":3,"file":"navigation-menu.js","sourceRoot":"","sources":["../../src/ui/navigation-menu.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/layout/Header.tsx
CHANGED
|
@@ -41,6 +41,14 @@ export function useFormSubmit(action: string) {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
setStatus("success");
|
|
44
|
+
|
|
45
|
+
// Push conversion event to GTM dataLayer (if GTM is loaded)
|
|
46
|
+
if (typeof window !== "undefined" && Array.isArray((window as unknown as Record<string, unknown>).dataLayer)) {
|
|
47
|
+
(window as unknown as Record<string, unknown[]>).dataLayer.push({
|
|
48
|
+
event: "form_submission",
|
|
49
|
+
form_action: action,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
44
52
|
} catch {
|
|
45
53
|
setErrorMsg("Network error. Please check your connection and try again.");
|
|
46
54
|
setStatus("error");
|
|
@@ -18,9 +18,10 @@ interface CompaniesProps {
|
|
|
18
18
|
title?: string;
|
|
19
19
|
logos: LogoItem[];
|
|
20
20
|
variant?: 'marquee' | 'inline';
|
|
21
|
+
grayscale?: boolean;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
export function Companies({ id, title, logos, variant = 'marquee' }: CompaniesProps) {
|
|
24
|
+
export function Companies({ id, title, logos, variant = 'marquee', grayscale = true }: CompaniesProps) {
|
|
24
25
|
if (variant === 'inline') {
|
|
25
26
|
return (
|
|
26
27
|
<Section id={id} className="py-12">
|
|
@@ -57,12 +58,12 @@ export function Companies({ id, title, logos, variant = 'marquee' }: CompaniesPr
|
|
|
57
58
|
<div className="flex gap-12 items-center" style={{ '--marquee-gap': '3rem' } as React.CSSProperties}>
|
|
58
59
|
<div className="flex gap-12 items-center animate-marquee">
|
|
59
60
|
{logos.map((logo, i) => (
|
|
60
|
-
<ThemeImage key={i} src={logo.src} alt={logo.alt} width={logo.width || 120} className="h-8 w-auto object-contain grayscale opacity-60 hover:grayscale-0 hover:opacity-100
|
|
61
|
+
<ThemeImage key={i} src={logo.src} alt={logo.alt} width={logo.width || 120} className={cn("h-8 w-auto object-contain transition-all", grayscale ? "grayscale opacity-60 hover:grayscale-0 hover:opacity-100" : "opacity-80 hover:opacity-100")} />
|
|
61
62
|
))}
|
|
62
63
|
</div>
|
|
63
64
|
<div className="flex gap-12 items-center animate-marquee" aria-hidden>
|
|
64
65
|
{logos.map((logo, i) => (
|
|
65
|
-
<ThemeImage key={i} src={logo.src} alt="" width={logo.width || 120} className="h-8 w-auto object-contain grayscale opacity-60" />
|
|
66
|
+
<ThemeImage key={i} src={logo.src} alt="" width={logo.width || 120} className={cn("h-8 w-auto object-contain", grayscale ? "grayscale opacity-60" : "opacity-80")} />
|
|
66
67
|
))}
|
|
67
68
|
</div>
|
|
68
69
|
</div>
|
package/src/marketing/Hero.tsx
CHANGED
|
@@ -15,24 +15,33 @@ interface HeroProps {
|
|
|
15
15
|
secondaryCta?: { label: string; href: string };
|
|
16
16
|
badge?: string;
|
|
17
17
|
image?: ImageSource;
|
|
18
|
+
size?: 'default' | 'compact';
|
|
18
19
|
children?: React.ReactNode;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
export function Hero({ id, title, description, primaryCta, secondaryCta, badge, image, children }: HeroProps) {
|
|
22
|
+
export function Hero({ id, title, description, primaryCta, secondaryCta, badge, image, size = 'default', children }: HeroProps) {
|
|
23
|
+
const compact = size === 'compact';
|
|
24
|
+
|
|
22
25
|
return (
|
|
23
|
-
<Section id={id} className="relative overflow-hidden">
|
|
26
|
+
<Section id={id} className={cn("relative overflow-hidden", compact && "py-8 sm:py-16 md:py-20")}>
|
|
24
27
|
<Glow variant="top" />
|
|
25
28
|
<div className="container-main relative z-10">
|
|
26
29
|
<div className="max-w-3xl mx-auto text-center">
|
|
27
30
|
{badge && (
|
|
28
|
-
<Badge variant="outline" className="animate-appear mb-6">
|
|
31
|
+
<Badge variant="outline" className={cn("animate-appear", compact ? "mb-4" : "mb-6")}>
|
|
29
32
|
{badge}
|
|
30
33
|
</Badge>
|
|
31
34
|
)}
|
|
32
|
-
<h1 className=
|
|
35
|
+
<h1 className={cn(
|
|
36
|
+
"font-bold tracking-tight text-foreground animate-appear [animation-delay:100ms]",
|
|
37
|
+
compact ? "text-3xl md:text-5xl mb-4" : "text-4xl md:text-6xl mb-6",
|
|
38
|
+
)}>
|
|
33
39
|
{title}
|
|
34
40
|
</h1>
|
|
35
|
-
<p className=
|
|
41
|
+
<p className={cn(
|
|
42
|
+
"text-muted-foreground max-w-2xl mx-auto animate-appear [animation-delay:200ms]",
|
|
43
|
+
compact ? "text-base md:text-lg mb-6" : "text-lg md:text-xl mb-8",
|
|
44
|
+
)}>
|
|
36
45
|
{description}
|
|
37
46
|
</p>
|
|
38
47
|
<div className="flex flex-col sm:flex-row items-center justify-center gap-4 animate-appear [animation-delay:300ms]">
|
|
@@ -50,7 +59,7 @@ export function Hero({ id, title, description, primaryCta, secondaryCta, badge,
|
|
|
50
59
|
{children}
|
|
51
60
|
</div>
|
|
52
61
|
{image && (
|
|
53
|
-
<div className="
|
|
62
|
+
<div className={cn("animate-appear-zoom [animation-delay:400ms]", compact ? "mt-10" : "mt-16")}>
|
|
54
63
|
<Mockup type="responsive" className="shadow-mockup w-full">
|
|
55
64
|
<ThemeImage src={image} alt="" className="w-full" />
|
|
56
65
|
</Mockup>
|
package/src/styles/utils.css
CHANGED
|
@@ -74,6 +74,13 @@
|
|
|
74
74
|
border-width: 0 0 var(--line-width, 0);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
/* Collapse double padding between adjacent sections */
|
|
78
|
+
@layer base {
|
|
79
|
+
[data-slot="section"] + [data-slot="section"] {
|
|
80
|
+
@apply pt-0 sm:pt-0 md:pt-0;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
77
84
|
@utility line-t {
|
|
78
85
|
@apply border-border dark:border-border/10;
|
|
79
86
|
border-width: var(--line-width, 0) 0;
|
|
@@ -91,7 +91,7 @@ function NavigationMenuContent({
|
|
|
91
91
|
data-slot="navigation-menu-content"
|
|
92
92
|
className={cn(
|
|
93
93
|
"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto",
|
|
94
|
-
"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
|
|
94
|
+
"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:left-1/2 group-data-[viewport=false]/navigation-menu:-translate-x-1/2 group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
|
|
95
95
|
className,
|
|
96
96
|
)}
|
|
97
97
|
{...props}
|