@shipsite.dev/components 0.2.21 → 0.2.22
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 +31 -10
- package/dist/blog/BlogArticle.d.ts +2 -1
- package/dist/blog/BlogArticle.d.ts.map +1 -1
- package/dist/blog/BlogArticle.js +2 -2
- package/dist/blog/BlogArticle.js.map +1 -1
- package/dist/blog/BlogArticleClient.d.ts +4 -2
- package/dist/blog/BlogArticleClient.d.ts.map +1 -1
- package/dist/blog/BlogArticleClient.js +4 -3
- package/dist/blog/BlogArticleClient.js.map +1 -1
- package/dist/blog/BlogIndex.d.ts +2 -1
- package/dist/blog/BlogIndex.d.ts.map +1 -1
- package/dist/blog/BlogIndex.js +2 -2
- package/dist/blog/BlogIndex.js.map +1 -1
- package/dist/content/ContentPage.d.ts +2 -1
- package/dist/content/ContentPage.d.ts.map +1 -1
- package/dist/content/ContentPage.js +2 -2
- package/dist/content/ContentPage.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/marketing/AlternatingFeatures.d.ts +5 -4
- package/dist/marketing/AlternatingFeatures.d.ts.map +1 -1
- package/dist/marketing/AlternatingFeatures.js +6 -5
- package/dist/marketing/AlternatingFeatures.js.map +1 -1
- package/dist/marketing/BannerCTA.d.ts +2 -1
- package/dist/marketing/BannerCTA.d.ts.map +1 -1
- package/dist/marketing/BannerCTA.js +2 -2
- package/dist/marketing/BannerCTA.js.map +1 -1
- package/dist/marketing/BentoGrid.d.ts +4 -2
- package/dist/marketing/BentoGrid.d.ts.map +1 -1
- package/dist/marketing/BentoGrid.js +4 -3
- package/dist/marketing/BentoGrid.js.map +1 -1
- package/dist/marketing/CalloutCard.d.ts +2 -1
- package/dist/marketing/CalloutCard.d.ts.map +1 -1
- package/dist/marketing/CalloutCard.js +2 -2
- package/dist/marketing/CalloutCard.js.map +1 -1
- package/dist/marketing/CardGrid.d.ts +2 -1
- package/dist/marketing/CardGrid.d.ts.map +1 -1
- package/dist/marketing/CardGrid.js +2 -2
- package/dist/marketing/CardGrid.js.map +1 -1
- package/dist/marketing/Carousel.d.ts +4 -2
- package/dist/marketing/Carousel.d.ts.map +1 -1
- package/dist/marketing/Carousel.js +4 -3
- package/dist/marketing/Carousel.js.map +1 -1
- package/dist/marketing/Companies.d.ts +4 -2
- package/dist/marketing/Companies.d.ts.map +1 -1
- package/dist/marketing/Companies.js +4 -3
- package/dist/marketing/Companies.js.map +1 -1
- package/dist/marketing/FAQ.d.ts +2 -1
- package/dist/marketing/FAQ.d.ts.map +1 -1
- package/dist/marketing/FAQ.js +2 -2
- package/dist/marketing/FAQ.js.map +1 -1
- package/dist/marketing/Features.d.ts +2 -1
- package/dist/marketing/Features.d.ts.map +1 -1
- package/dist/marketing/Features.js +2 -2
- package/dist/marketing/Features.js.map +1 -1
- package/dist/marketing/Gallery.d.ts +4 -2
- package/dist/marketing/Gallery.d.ts.map +1 -1
- package/dist/marketing/Gallery.js +4 -3
- package/dist/marketing/Gallery.js.map +1 -1
- package/dist/marketing/Hero.d.ts +4 -2
- package/dist/marketing/Hero.d.ts.map +1 -1
- package/dist/marketing/Hero.js +3 -2
- package/dist/marketing/Hero.js.map +1 -1
- package/dist/marketing/PageHero.d.ts +2 -1
- package/dist/marketing/PageHero.d.ts.map +1 -1
- package/dist/marketing/PageHero.js +2 -2
- package/dist/marketing/PageHero.js.map +1 -1
- package/dist/marketing/PricingSection.d.ts +2 -1
- package/dist/marketing/PricingSection.d.ts.map +1 -1
- package/dist/marketing/PricingSection.js +2 -2
- package/dist/marketing/PricingSection.js.map +1 -1
- package/dist/marketing/SocialProof.d.ts +2 -1
- package/dist/marketing/SocialProof.d.ts.map +1 -1
- package/dist/marketing/SocialProof.js +2 -2
- package/dist/marketing/SocialProof.js.map +1 -1
- package/dist/marketing/Stats.d.ts +2 -1
- package/dist/marketing/Stats.d.ts.map +1 -1
- package/dist/marketing/Stats.js +2 -2
- package/dist/marketing/Stats.js.map +1 -1
- package/dist/marketing/Steps.d.ts +2 -1
- package/dist/marketing/Steps.d.ts.map +1 -1
- package/dist/marketing/Steps.js +2 -2
- package/dist/marketing/Steps.js.map +1 -1
- package/dist/marketing/TabsSection.d.ts +4 -2
- package/dist/marketing/TabsSection.d.ts.map +1 -1
- package/dist/marketing/TabsSection.js +4 -3
- package/dist/marketing/TabsSection.js.map +1 -1
- package/dist/marketing/Testimonial.d.ts +4 -2
- package/dist/marketing/Testimonial.d.ts.map +1 -1
- package/dist/marketing/Testimonial.js +3 -2
- package/dist/marketing/Testimonial.js.map +1 -1
- package/dist/marketing/Testimonials.d.ts +4 -2
- package/dist/marketing/Testimonials.d.ts.map +1 -1
- package/dist/marketing/Testimonials.js +4 -3
- package/dist/marketing/Testimonials.js.map +1 -1
- package/dist/ui/theme-image.d.ts +11 -0
- package/dist/ui/theme-image.d.ts.map +1 -0
- package/dist/ui/theme-image.js +9 -0
- package/dist/ui/theme-image.js.map +1 -0
- package/package.json +1 -1
- package/src/blog/BlogArticle.tsx +3 -2
- package/src/blog/BlogArticleClient.tsx +6 -3
- package/src/blog/BlogIndex.tsx +3 -2
- package/src/content/ContentPage.tsx +3 -2
- package/src/index.ts +4 -0
- package/src/marketing/AlternatingFeatures.tsx +7 -13
- package/src/marketing/BannerCTA.tsx +3 -2
- package/src/marketing/BentoGrid.tsx +6 -4
- package/src/marketing/CalloutCard.tsx +3 -2
- package/src/marketing/CardGrid.tsx +3 -2
- package/src/marketing/Carousel.tsx +6 -4
- package/src/marketing/Companies.tsx +10 -8
- package/src/marketing/FAQ.tsx +3 -2
- package/src/marketing/Features.tsx +3 -2
- package/src/marketing/Gallery.tsx +6 -4
- package/src/marketing/Hero.tsx +6 -4
- package/src/marketing/PageHero.tsx +3 -2
- package/src/marketing/PricingSection.tsx +3 -2
- package/src/marketing/SocialProof.tsx +3 -2
- package/src/marketing/Stats.tsx +3 -2
- package/src/marketing/Steps.tsx +3 -2
- package/src/marketing/TabsSection.tsx +6 -4
- package/src/marketing/Testimonial.tsx +6 -4
- package/src/marketing/Testimonials.tsx +6 -4
- package/src/ui/theme-image.tsx +20 -0
|
@@ -22,6 +22,7 @@ interface ComparisonCategoryProps {
|
|
|
22
22
|
}
|
|
23
23
|
export declare function ComparisonCategory(_props: ComparisonCategoryProps): null;
|
|
24
24
|
interface PricingSectionProps {
|
|
25
|
+
id?: string;
|
|
25
26
|
title?: string;
|
|
26
27
|
description?: string;
|
|
27
28
|
monthlyLabel?: string;
|
|
@@ -29,6 +30,6 @@ interface PricingSectionProps {
|
|
|
29
30
|
mostPopularLabel?: string;
|
|
30
31
|
children: React.ReactNode;
|
|
31
32
|
}
|
|
32
|
-
export declare function PricingSection({ title, description, monthlyLabel, yearlyLabel, mostPopularLabel, children }: PricingSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export declare function PricingSection({ id, title, description, monthlyLabel, yearlyLabel, mostPopularLabel, children }: PricingSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
33
34
|
export {};
|
|
34
35
|
//# sourceMappingURL=PricingSection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PricingSection.d.ts","sourceRoot":"","sources":["../../src/marketing/PricingSection.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAMlE,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,QAEnD;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,QAEvD;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,QAEjE;AAED,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,YAAwB,EAAE,WAAsB,EAAE,gBAAiC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"PricingSection.d.ts","sourceRoot":"","sources":["../../src/marketing/PricingSection.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAMlE,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,QAEnD;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,QAEvD;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,QAEjE;AAED,UAAU,mBAAmB;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,YAAwB,EAAE,WAAsB,EAAE,gBAAiC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAiG5K"}
|
|
@@ -14,7 +14,7 @@ export function ComparisonRow(_props) {
|
|
|
14
14
|
export function ComparisonCategory(_props) {
|
|
15
15
|
return null;
|
|
16
16
|
}
|
|
17
|
-
export function PricingSection({ title, description, monthlyLabel = 'Monthly', yearlyLabel = 'Yearly', mostPopularLabel = 'Most Popular', children }) {
|
|
17
|
+
export function PricingSection({ id, title, description, monthlyLabel = 'Monthly', yearlyLabel = 'Yearly', mostPopularLabel = 'Most Popular', children }) {
|
|
18
18
|
const [isYearly, setIsYearly] = useState(false);
|
|
19
19
|
const plans = [];
|
|
20
20
|
const rows = [];
|
|
@@ -28,7 +28,7 @@ export function PricingSection({ title, description, monthlyLabel = 'Monthly', y
|
|
|
28
28
|
else if (child.type === ComparisonCategory)
|
|
29
29
|
rows.push({ type: 'category', props: child.props });
|
|
30
30
|
});
|
|
31
|
-
return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), plans.some((p) => p.yearlyPrice) && (_jsxs("div", { className: "flex items-center justify-center gap-3 mb-12", children: [_jsx("span", { className: cn('text-sm font-medium', !isYearly ? 'text-foreground' : 'text-muted-foreground'), children: monthlyLabel }), _jsx("button", { onClick: () => setIsYearly(!isYearly), className: cn('relative w-12 h-6 rounded-full transition-colors', isYearly ? 'bg-primary' : 'bg-muted'), children: _jsx("span", { className: cn('absolute top-0.5 w-5 h-5 bg-background rounded-full shadow transition-transform', isYearly ? 'translate-x-6' : 'translate-x-0.5') }) }), _jsx("span", { className: cn('text-sm font-medium', isYearly ? 'text-foreground' : 'text-muted-foreground'), children: yearlyLabel })] })), _jsx("div", { className: cn('grid grid-cols-1 gap-6 mb-16', plans.length === 2 && 'md:grid-cols-2', plans.length >= 3 && 'md:grid-cols-3'), children: plans.map((plan) => (_jsxs("div", { className: cn('relative rounded-2xl p-8', plan.popular
|
|
31
|
+
return (_jsx(Section, { id: id, children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), plans.some((p) => p.yearlyPrice) && (_jsxs("div", { className: "flex items-center justify-center gap-3 mb-12", children: [_jsx("span", { className: cn('text-sm font-medium', !isYearly ? 'text-foreground' : 'text-muted-foreground'), children: monthlyLabel }), _jsx("button", { onClick: () => setIsYearly(!isYearly), className: cn('relative w-12 h-6 rounded-full transition-colors', isYearly ? 'bg-primary' : 'bg-muted'), children: _jsx("span", { className: cn('absolute top-0.5 w-5 h-5 bg-background rounded-full shadow transition-transform', isYearly ? 'translate-x-6' : 'translate-x-0.5') }) }), _jsx("span", { className: cn('text-sm font-medium', isYearly ? 'text-foreground' : 'text-muted-foreground'), children: yearlyLabel })] })), _jsx("div", { className: cn('grid grid-cols-1 gap-6 mb-16', plans.length === 2 && 'md:grid-cols-2', plans.length >= 3 && 'md:grid-cols-3'), children: plans.map((plan) => (_jsxs("div", { className: cn('relative rounded-2xl p-8', plan.popular
|
|
32
32
|
? 'glass-4 ring-2 ring-primary shadow-xl'
|
|
33
33
|
: 'glass-1'), children: [plan.popular && (_jsx("div", { className: "absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 bg-primary text-primary-foreground text-xs font-medium rounded-full", children: mostPopularLabel })), _jsx("h3", { className: "text-xl font-bold mb-2 text-foreground", children: plan.name }), plan.description && _jsx("p", { className: "text-sm mb-4 text-muted-foreground", children: plan.description }), _jsx("div", { className: "mb-6", children: _jsx("span", { className: "text-4xl font-bold text-foreground", children: isYearly && plan.yearlyPrice ? plan.yearlyPrice : plan.price }) }), _jsx(Button, { asChild: true, className: "w-full", variant: plan.popular ? 'default' : 'glow', children: _jsx("a", { href: plan.cta.href, children: plan.cta.label }) }), _jsx("ul", { className: "mt-6 space-y-3", children: plan.features.map((feature) => (_jsxs("li", { className: "flex items-start gap-2 text-sm text-muted-foreground", children: [_jsx(Check, { className: "w-4 h-4 mt-0.5 shrink-0 text-primary" }), feature] }, feature))) })] }, plan.name))) }), rows.length > 0 && (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border", children: [_jsx("th", { className: "text-left py-4 pr-4 font-medium text-foreground", children: "Feature" }), plans.map((plan) => _jsx("th", { className: "text-center py-4 px-4 font-medium text-foreground", children: plan.name }, plan.name))] }) }), _jsx("tbody", { children: rows.map((row, i) => {
|
|
34
34
|
if (row.type === 'category') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PricingSection.js","sourceRoot":"","sources":["../../src/marketing/PricingSection.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAYtC,MAAM,UAAU,WAAW,CAAC,MAAwB;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,MAAM,UAAU,aAAa,CAAC,MAA0B;IACtD,OAAO,IAAI,CAAC;AACd,CAAC;AAMD,MAAM,UAAU,kBAAkB,CAAC,MAA+B;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;
|
|
1
|
+
{"version":3,"file":"PricingSection.js","sourceRoot":"","sources":["../../src/marketing/PricingSection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
interface SocialProofProps {
|
|
2
|
+
id?: string;
|
|
2
3
|
avatars?: string[];
|
|
3
4
|
text: string;
|
|
4
5
|
subtext?: string;
|
|
5
6
|
}
|
|
6
|
-
export declare function SocialProof({ avatars, text, subtext }: SocialProofProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function SocialProof({ id, avatars, text, subtext }: SocialProofProps): import("react/jsx-runtime").JSX.Element;
|
|
7
8
|
export {};
|
|
8
9
|
//# sourceMappingURL=SocialProof.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocialProof.d.ts","sourceRoot":"","sources":["../../src/marketing/SocialProof.tsx"],"names":[],"mappings":"AAGA,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"SocialProof.d.ts","sourceRoot":"","sources":["../../src/marketing/SocialProof.tsx"],"names":[],"mappings":"AAGA,UAAU,gBAAgB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,gBAAgB,2CA4B3E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Section } from '../ui/section';
|
|
3
|
-
export function SocialProof({ avatars, text, subtext }) {
|
|
4
|
-
return (_jsx(Section, { className: "py-12", children: _jsx("div", { className: "container-main", children: _jsxs("div", { className: "flex flex-col items-center gap-4 text-center", children: [avatars && avatars.length > 0 && (_jsxs("div", { className: "flex -space-x-3", children: [avatars.map((src, i) => (_jsx("img", { src: src, alt: "", className: "w-10 h-10 rounded-full border-2 border-background object-cover" }, i))), _jsx("div", { className: "w-10 h-10 rounded-full border-2 border-background bg-primary flex items-center justify-center", children: _jsx("span", { className: "text-xs font-semibold text-primary-foreground", children: "+" }) })] })), _jsxs("div", { children: [_jsx("p", { className: "text-lg font-semibold text-foreground", children: text }), subtext && _jsx("p", { className: "text-sm text-muted-foreground", children: subtext })] })] }) }) }));
|
|
3
|
+
export function SocialProof({ id, avatars, text, subtext }) {
|
|
4
|
+
return (_jsx(Section, { id: id, className: "py-12", children: _jsx("div", { className: "container-main", children: _jsxs("div", { className: "flex flex-col items-center gap-4 text-center", children: [avatars && avatars.length > 0 && (_jsxs("div", { className: "flex -space-x-3", children: [avatars.map((src, i) => (_jsx("img", { src: src, alt: "", className: "w-10 h-10 rounded-full border-2 border-background object-cover" }, i))), _jsx("div", { className: "w-10 h-10 rounded-full border-2 border-background bg-primary flex items-center justify-center", children: _jsx("span", { className: "text-xs font-semibold text-primary-foreground", children: "+" }) })] })), _jsxs("div", { children: [_jsx("p", { className: "text-lg font-semibold text-foreground", children: text }), subtext && _jsx("p", { className: "text-sm text-muted-foreground", children: subtext })] })] }) }) }));
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=SocialProof.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocialProof.js","sourceRoot":"","sources":["../../src/marketing/SocialProof.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"SocialProof.js","sourceRoot":"","sources":["../../src/marketing/SocialProof.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AASxC,MAAM,UAAU,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAoB;IAC1E,OAAO,CACL,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAC,OAAO,YAChC,cAAK,SAAS,EAAC,gBAAgB,YAC7B,eAAK,SAAS,EAAC,8CAA8C,aAC1D,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAChC,eAAK,SAAS,EAAC,iBAAiB,aAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACvB,cAEE,GAAG,EAAE,GAAG,EACR,GAAG,EAAC,EAAE,EACN,SAAS,EAAC,gEAAgE,IAHrE,CAAC,CAIN,CACH,CAAC,EACF,cAAK,SAAS,EAAC,+FAA+F,YAC5G,eAAM,SAAS,EAAC,+CAA+C,kBAAS,GACpE,IACF,CACP,EACD,0BACE,YAAG,SAAS,EAAC,uCAAuC,YAAE,IAAI,GAAK,EAC9D,OAAO,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,OAAO,GAAK,IAClE,IACF,GACF,GACE,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -7,9 +7,10 @@ interface StatProps {
|
|
|
7
7
|
}
|
|
8
8
|
export declare function Stat(_props: StatProps): null;
|
|
9
9
|
interface StatsProps {
|
|
10
|
+
id?: string;
|
|
10
11
|
title?: string;
|
|
11
12
|
children: React.ReactNode;
|
|
12
13
|
}
|
|
13
|
-
export declare function Stats({ title, children }: StatsProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare function Stats({ id, title, children }: StatsProps): import("react/jsx-runtime").JSX.Element;
|
|
14
15
|
export {};
|
|
15
16
|
//# sourceMappingURL=Stats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stats.d.ts","sourceRoot":"","sources":["../../src/marketing/Stats.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,QAErC;AAED,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"Stats.d.ts","sourceRoot":"","sources":["../../src/marketing/Stats.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,QAErC;AAED,UAAU,UAAU;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAqCxD"}
|
package/dist/marketing/Stats.js
CHANGED
|
@@ -4,13 +4,13 @@ import { Section } from '../ui/section';
|
|
|
4
4
|
export function Stat(_props) {
|
|
5
5
|
return null;
|
|
6
6
|
}
|
|
7
|
-
export function Stats({ title, children }) {
|
|
7
|
+
export function Stats({ id, title, children }) {
|
|
8
8
|
const items = [];
|
|
9
9
|
React.Children.forEach(children, (child) => {
|
|
10
10
|
if (React.isValidElement(child) && child.type === Stat) {
|
|
11
11
|
items.push(child.props);
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
|
-
return (_jsx(Section, { children: _jsxs("div", { className: "container-main max-w-[960px]", children: [title && (_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-12 text-center", children: title })), _jsx("div", { className: "grid grid-cols-2 gap-12 sm:grid-cols-4", children: items.map((item, i) => (_jsxs("div", { className: "flex flex-col items-start gap-3 text-left", children: [item.label && (_jsx("div", { className: "text-muted-foreground text-sm font-semibold", children: item.label })), _jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("div", { className: "from-foreground to-foreground dark:to-brand bg-linear-to-r bg-clip-text text-4xl font-medium text-transparent drop-shadow-[2px_1px_24px_var(--brand-foreground)] transition-all duration-300 sm:text-5xl md:text-6xl", children: item.value }), item.suffix && (_jsx("div", { className: "text-brand text-2xl font-semibold", children: item.suffix }))] }), item.description && (_jsx("div", { className: "text-muted-foreground text-sm font-semibold text-pretty", children: item.description }))] }, i))) })] }) }));
|
|
14
|
+
return (_jsx(Section, { id: id, children: _jsxs("div", { className: "container-main max-w-[960px]", children: [title && (_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-12 text-center", children: title })), _jsx("div", { className: "grid grid-cols-2 gap-12 sm:grid-cols-4", children: items.map((item, i) => (_jsxs("div", { className: "flex flex-col items-start gap-3 text-left", children: [item.label && (_jsx("div", { className: "text-muted-foreground text-sm font-semibold", children: item.label })), _jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("div", { className: "from-foreground to-foreground dark:to-brand bg-linear-to-r bg-clip-text text-4xl font-medium text-transparent drop-shadow-[2px_1px_24px_var(--brand-foreground)] transition-all duration-300 sm:text-5xl md:text-6xl", children: item.value }), item.suffix && (_jsx("div", { className: "text-brand text-2xl font-semibold", children: item.suffix }))] }), item.description && (_jsx("div", { className: "text-muted-foreground text-sm font-semibold text-pretty", children: item.description }))] }, i))) })] }) }));
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=Stats.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stats.js","sourceRoot":"","sources":["../../src/marketing/Stats.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AASxC,MAAM,UAAU,IAAI,CAAC,MAAiB;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;
|
|
1
|
+
{"version":3,"file":"Stats.js","sourceRoot":"","sources":["../../src/marketing/Stats.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AASxC,MAAM,UAAU,IAAI,CAAC,MAAiB;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,MAAM,UAAU,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAc;IACvD,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACzC,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAkB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,YACb,eAAK,SAAS,EAAC,8BAA8B,aAC1C,KAAK,IAAI,CACR,aAAI,SAAS,EAAC,kEAAkE,YAAE,KAAK,GAAM,CAC9F,EACD,cAAK,SAAS,EAAC,wCAAwC,YACpD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,eAAa,SAAS,EAAC,2CAA2C,aAC/D,IAAI,CAAC,KAAK,IAAI,CACb,cAAK,SAAS,EAAC,6CAA6C,YAAE,IAAI,CAAC,KAAK,GAAO,CAChF,EACD,eAAK,SAAS,EAAC,2BAA2B,aACxC,cAAK,SAAS,EAAC,sNAAsN,YAClO,IAAI,CAAC,KAAK,GACP,EACL,IAAI,CAAC,MAAM,IAAI,CACd,cAAK,SAAS,EAAC,mCAAmC,YAAE,IAAI,CAAC,MAAM,GAAO,CACvE,IACG,EACL,IAAI,CAAC,WAAW,IAAI,CACnB,cAAK,SAAS,EAAC,yDAAyD,YAAE,IAAI,CAAC,WAAW,GAAO,CAClG,KAdO,CAAC,CAeL,CACP,CAAC,GACE,IACF,GACE,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -5,10 +5,11 @@ interface StepProps {
|
|
|
5
5
|
}
|
|
6
6
|
export declare function Step(_props: StepProps): null;
|
|
7
7
|
interface StepsProps {
|
|
8
|
+
id?: string;
|
|
8
9
|
title?: string;
|
|
9
10
|
description?: string;
|
|
10
11
|
children: React.ReactNode;
|
|
11
12
|
}
|
|
12
|
-
export declare function Steps({ title, description, children }: StepsProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function Steps({ id, title, description, children }: StepsProps): import("react/jsx-runtime").JSX.Element;
|
|
13
14
|
export {};
|
|
14
15
|
//# sourceMappingURL=Steps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Steps.d.ts","sourceRoot":"","sources":["../../src/marketing/Steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,QAErC;AAED,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"Steps.d.ts","sourceRoot":"","sources":["../../src/marketing/Steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,QAErC;AAED,UAAU,UAAU;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAkCrE"}
|
package/dist/marketing/Steps.js
CHANGED
|
@@ -4,13 +4,13 @@ import { Section } from '../ui/section';
|
|
|
4
4
|
export function Step(_props) {
|
|
5
5
|
return null;
|
|
6
6
|
}
|
|
7
|
-
export function Steps({ title, description, children }) {
|
|
7
|
+
export function Steps({ id, title, description, children }) {
|
|
8
8
|
const steps = [];
|
|
9
9
|
React.Children.forEach(children, (child) => {
|
|
10
10
|
if (React.isValidElement(child) && child.type === Step) {
|
|
11
11
|
steps.push(child.props);
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
|
-
return (_jsx(Section, { children: _jsxs("div", { className: "container-main max-w-3xl", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground", children: description })] })), _jsx("div", { className: "space-y-8", children: steps.map((step, i) => (_jsxs("div", { className: "flex gap-6", children: [_jsxs("div", { className: "flex flex-col items-center", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-primary text-primary-foreground flex items-center justify-center font-bold text-sm shrink-0", children: i + 1 }), i < steps.length - 1 && _jsx("div", { className: "w-px flex-1 bg-border mt-2" })] }), _jsxs("div", { className: "pb-8", children: [_jsx("h3", { className: "text-lg font-semibold text-foreground mb-2", children: step.title }), _jsx("p", { className: "text-muted-foreground", children: step.description })] })] }, i))) })] }) }));
|
|
14
|
+
return (_jsx(Section, { id: id, children: _jsxs("div", { className: "container-main max-w-3xl", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground", children: description })] })), _jsx("div", { className: "space-y-8", children: steps.map((step, i) => (_jsxs("div", { className: "flex gap-6", children: [_jsxs("div", { className: "flex flex-col items-center", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-primary text-primary-foreground flex items-center justify-center font-bold text-sm shrink-0", children: i + 1 }), i < steps.length - 1 && _jsx("div", { className: "w-px flex-1 bg-border mt-2" })] }), _jsxs("div", { className: "pb-8", children: [_jsx("h3", { className: "text-lg font-semibold text-foreground mb-2", children: step.title }), _jsx("p", { className: "text-muted-foreground", children: step.description })] })] }, i))) })] }) }));
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=Steps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Steps.js","sourceRoot":"","sources":["../../src/marketing/Steps.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAOxC,MAAM,UAAU,IAAI,CAAC,MAAiB;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;
|
|
1
|
+
{"version":3,"file":"Steps.js","sourceRoot":"","sources":["../../src/marketing/Steps.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAOxC,MAAM,UAAU,IAAI,CAAC,MAAiB;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;AASD,MAAM,UAAU,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAc;IACpE,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACzC,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAkB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,YACb,eAAK,SAAS,EAAC,0BAA0B,aACtC,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,eAAK,SAAS,EAAC,mBAAmB,aAC/B,KAAK,IAAI,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EACzF,WAAW,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,IAC1E,CACP,EACD,cAAK,SAAS,EAAC,WAAW,YACvB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,eAAa,SAAS,EAAC,YAAY,aACjC,eAAK,SAAS,EAAC,4BAA4B,aACzC,cAAK,SAAS,EAAC,uHAAuH,YAAE,CAAC,GAAG,CAAC,GAAO,EACnJ,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,cAAK,SAAS,EAAC,4BAA4B,GAAG,IACnE,EACN,eAAK,SAAS,EAAC,MAAM,aACnB,aAAI,SAAS,EAAC,4CAA4C,YAAE,IAAI,CAAC,KAAK,GAAM,EAC5E,YAAG,SAAS,EAAC,uBAAuB,YAAE,IAAI,CAAC,WAAW,GAAK,IACvD,KARE,CAAC,CASL,CACP,CAAC,GACE,IACF,GACE,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { type ImageSource } from '../ui/theme-image';
|
|
2
3
|
interface TabItemProps {
|
|
3
4
|
label: string;
|
|
4
5
|
title?: string;
|
|
5
6
|
description?: string;
|
|
6
|
-
image?:
|
|
7
|
+
image?: ImageSource;
|
|
7
8
|
children?: React.ReactNode;
|
|
8
9
|
}
|
|
9
10
|
export declare function TabItem(_props: TabItemProps): null;
|
|
10
11
|
interface TabsSectionProps {
|
|
12
|
+
id?: string;
|
|
11
13
|
title?: string;
|
|
12
14
|
description?: string;
|
|
13
15
|
children: React.ReactNode;
|
|
14
16
|
}
|
|
15
|
-
export declare function TabsSection({ title, description, children }: TabsSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function TabsSection({ id, title, description, children }: TabsSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
16
18
|
export {};
|
|
17
19
|
//# sourceMappingURL=TabsSection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabsSection.d.ts","sourceRoot":"","sources":["../../src/marketing/TabsSection.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TabsSection.d.ts","sourceRoot":"","sources":["../../src/marketing/TabsSection.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,QAE3C;AAED,UAAU,gBAAgB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CA2DjF"}
|
|
@@ -3,10 +3,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import React, { useState } from 'react';
|
|
4
4
|
import { Section } from '../ui/section';
|
|
5
5
|
import { cn } from '../lib/utils';
|
|
6
|
+
import { ThemeImage } from '../ui/theme-image';
|
|
6
7
|
export function TabItem(_props) {
|
|
7
8
|
return null;
|
|
8
9
|
}
|
|
9
|
-
export function TabsSection({ title, description, children }) {
|
|
10
|
+
export function TabsSection({ id, title, description, children }) {
|
|
10
11
|
const [activeIndex, setActiveIndex] = useState(0);
|
|
11
12
|
const tabs = [];
|
|
12
13
|
React.Children.forEach(children, (child) => {
|
|
@@ -15,8 +16,8 @@ export function TabsSection({ title, description, children }) {
|
|
|
15
16
|
}
|
|
16
17
|
});
|
|
17
18
|
const activeTab = tabs[activeIndex];
|
|
18
|
-
return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), _jsx("div", { className: "flex justify-center mb-8", children: _jsx("div", { className: "inline-flex rounded-full glass-1 p-1 gap-1", children: tabs.map((tab, i) => (_jsx("button", { onClick: () => setActiveIndex(i), className: cn('px-4 py-2 rounded-full text-sm font-medium transition-all', i === activeIndex
|
|
19
|
+
return (_jsx(Section, { id: id, children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), _jsx("div", { className: "flex justify-center mb-8", children: _jsx("div", { className: "inline-flex rounded-full glass-1 p-1 gap-1", children: tabs.map((tab, i) => (_jsx("button", { onClick: () => setActiveIndex(i), className: cn('px-4 py-2 rounded-full text-sm font-medium transition-all', i === activeIndex
|
|
19
20
|
? 'bg-primary text-primary-foreground'
|
|
20
|
-
: 'text-muted-foreground hover:text-foreground'), children: tab.label }, i))) }) }), activeTab && (_jsx("div", { className: "glass-1 rounded-2xl p-8 md:p-12", children: _jsxs("div", { className: cn('grid gap-8', activeTab.image && 'md:grid-cols-2 items-center'), children: [_jsxs("div", { children: [activeTab.title && (_jsx("h3", { className: "text-2xl font-bold text-foreground mb-4", children: activeTab.title })), activeTab.description && (_jsx("p", { className: "text-muted-foreground leading-relaxed", children: activeTab.description }))] }), activeTab.image && (_jsx(
|
|
21
|
+
: 'text-muted-foreground hover:text-foreground'), children: tab.label }, i))) }) }), activeTab && (_jsx("div", { className: "glass-1 rounded-2xl p-8 md:p-12", children: _jsxs("div", { className: cn('grid gap-8', activeTab.image && 'md:grid-cols-2 items-center'), children: [_jsxs("div", { children: [activeTab.title && (_jsx("h3", { className: "text-2xl font-bold text-foreground mb-4", children: activeTab.title })), activeTab.description && (_jsx("p", { className: "text-muted-foreground leading-relaxed", children: activeTab.description }))] }), activeTab.image && (_jsx(ThemeImage, { src: activeTab.image, alt: activeTab.title || activeTab.label, className: "w-full rounded-xl" }))] }) }))] }) }));
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=TabsSection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabsSection.js","sourceRoot":"","sources":["../../src/marketing/TabsSection.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TabsSection.js","sourceRoot":"","sources":["../../src/marketing/TabsSection.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAUjE,MAAM,UAAU,OAAO,CAAC,MAAoB;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AASD,MAAM,UAAU,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAoB;IAChF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAElD,MAAM,IAAI,GAAmB,EAAE,CAAC;IAChC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACzC,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAqB,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAEpC,OAAO,CACL,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,YACb,eAAK,SAAS,EAAC,gBAAgB,aAC5B,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,eAAK,SAAS,EAAC,mBAAmB,aAC/B,KAAK,IAAI,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EACzF,WAAW,IAAI,YAAG,SAAS,EAAC,iDAAiD,YAAE,WAAW,GAAK,IAC5F,CACP,EACD,cAAK,SAAS,EAAC,0BAA0B,YACvC,cAAK,SAAS,EAAC,4CAA4C,YACxD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACpB,iBAEE,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAChC,SAAS,EAAE,EAAE,CACX,2DAA2D,EAC3D,CAAC,KAAK,WAAW;gCACf,CAAC,CAAC,oCAAoC;gCACtC,CAAC,CAAC,6CAA6C,CAClD,YAEA,GAAG,CAAC,KAAK,IATL,CAAC,CAUC,CACV,CAAC,GACE,GACF,EACL,SAAS,IAAI,CACZ,cAAK,SAAS,EAAC,iCAAiC,YAC9C,eAAK,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,IAAI,6BAA6B,CAAC,aAChF,0BACG,SAAS,CAAC,KAAK,IAAI,CAClB,aAAI,SAAS,EAAC,yCAAyC,YAAE,SAAS,CAAC,KAAK,GAAM,CAC/E,EACA,SAAS,CAAC,WAAW,IAAI,CACxB,YAAG,SAAS,EAAC,uCAAuC,YAAE,SAAS,CAAC,WAAW,GAAK,CACjF,IACG,EACL,SAAS,CAAC,KAAK,IAAI,CAClB,KAAC,UAAU,IAAC,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,EAAC,mBAAmB,GAAG,CAC5G,IACG,GACF,CACP,IACG,GACE,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { type ImageSource } from '../ui/theme-image';
|
|
1
2
|
interface TestimonialProps {
|
|
3
|
+
id?: string;
|
|
2
4
|
quote: string;
|
|
3
5
|
author: string;
|
|
4
6
|
role?: string;
|
|
5
|
-
image?:
|
|
7
|
+
image?: ImageSource;
|
|
6
8
|
company?: string;
|
|
7
9
|
}
|
|
8
|
-
export declare function Testimonial({ quote, author, role, image, company }: TestimonialProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare function Testimonial({ id, quote, author, role, image, company }: TestimonialProps): import("react/jsx-runtime").JSX.Element;
|
|
9
11
|
export {};
|
|
10
12
|
//# sourceMappingURL=Testimonial.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Testimonial.d.ts","sourceRoot":"","sources":["../../src/marketing/Testimonial.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Testimonial.d.ts","sourceRoot":"","sources":["../../src/marketing/Testimonial.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,UAAU,gBAAgB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,gBAAgB,2CAiBxF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Section } from '../ui/section';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { ThemeImage } from '../ui/theme-image';
|
|
4
|
+
export function Testimonial({ id, quote, author, role, image, company }) {
|
|
5
|
+
return (_jsx(Section, { id: id, children: _jsx("div", { className: "container-main max-w-3xl", children: _jsxs("div", { className: "glass-2 rounded-2xl p-8 md:p-12", children: [_jsxs("blockquote", { className: "text-lg md:text-xl text-foreground/80 italic mb-6", children: ["\u201C", quote, "\u201D"] }), _jsxs("div", { className: "flex items-center gap-3", children: [image && _jsx(ThemeImage, { src: image, alt: author, className: "w-10 h-10 rounded-full object-cover" }), _jsxs("div", { children: [_jsx("p", { className: "font-semibold text-foreground", children: author }), (role || company) && _jsxs("p", { className: "text-sm text-muted-foreground", children: [role, role && company && ' \u00B7 ', company] })] })] })] }) }) }));
|
|
5
6
|
}
|
|
6
7
|
//# sourceMappingURL=Testimonial.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Testimonial.js","sourceRoot":"","sources":["../../src/marketing/Testimonial.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"Testimonial.js","sourceRoot":"","sources":["../../src/marketing/Testimonial.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAWjE,MAAM,UAAU,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAoB;IACvF,OAAO,CACL,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,YACb,cAAK,SAAS,EAAC,0BAA0B,YACvC,eAAK,SAAS,EAAC,iCAAiC,aAC9C,sBAAY,SAAS,EAAC,mDAAmD,uBAAS,KAAK,cAAqB,EAC5G,eAAK,SAAS,EAAC,yBAAyB,aACrC,KAAK,IAAI,KAAC,UAAU,IAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAC,qCAAqC,GAAG,EACjG,0BACE,YAAG,SAAS,EAAC,+BAA+B,YAAE,MAAM,GAAK,EACxD,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,aAAG,SAAS,EAAC,+BAA+B,aAAE,IAAI,EAAE,IAAI,IAAI,OAAO,IAAI,UAAU,EAAE,OAAO,IAAK,IACjH,IACF,IACF,GACF,GACE,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { type ImageSource } from '../ui/theme-image';
|
|
2
3
|
interface TestimonialCardProps {
|
|
3
4
|
quote: string;
|
|
4
5
|
author: string;
|
|
5
6
|
role?: string;
|
|
6
7
|
company?: string;
|
|
7
|
-
image?:
|
|
8
|
+
image?: ImageSource;
|
|
8
9
|
rating?: number;
|
|
9
10
|
}
|
|
10
11
|
export declare function TestimonialCard({ quote, author, role, company, image, rating }: TestimonialCardProps): import("react/jsx-runtime").JSX.Element;
|
|
11
12
|
interface TestimonialsProps {
|
|
13
|
+
id?: string;
|
|
12
14
|
title?: string;
|
|
13
15
|
description?: string;
|
|
14
16
|
columns?: 2 | 3;
|
|
15
17
|
children: React.ReactNode;
|
|
16
18
|
}
|
|
17
|
-
export declare function Testimonials({ title, description, columns, children }: TestimonialsProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare function Testimonials({ id, title, description, columns, children }: TestimonialsProps): import("react/jsx-runtime").JSX.Element;
|
|
18
20
|
export {};
|
|
19
21
|
//# sourceMappingURL=Testimonials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Testimonials.d.ts","sourceRoot":"","sources":["../../src/marketing/Testimonials.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Testimonials.d.ts","sourceRoot":"","sources":["../../src/marketing/Testimonials.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAsBpG;AAED,UAAU,iBAAiB;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAW,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAgBhG"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Section } from '../ui/section';
|
|
3
|
+
import { ThemeImage } from '../ui/theme-image';
|
|
3
4
|
export function TestimonialCard({ quote, author, role, company, image, rating }) {
|
|
4
|
-
return (_jsxs("div", { className: "glass-1 hover:glass-2 rounded-2xl p-6 transition-all flex flex-col justify-between gap-4", children: [rating && (_jsx("div", { className: "flex gap-0.5", children: Array.from({ length: rating }).map((_, i) => (_jsx("svg", { className: "size-4 fill-brand", viewBox: "0 0 20 20", children: _jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" }) }, i))) })), _jsxs("blockquote", { className: "text-sm text-foreground/80 leading-relaxed", children: ["\u201C", quote, "\u201D"] }), _jsxs("div", { className: "flex items-center gap-3 mt-auto pt-2", children: [image && _jsx(
|
|
5
|
+
return (_jsxs("div", { className: "glass-1 hover:glass-2 rounded-2xl p-6 transition-all flex flex-col justify-between gap-4", children: [rating && (_jsx("div", { className: "flex gap-0.5", children: Array.from({ length: rating }).map((_, i) => (_jsx("svg", { className: "size-4 fill-brand", viewBox: "0 0 20 20", children: _jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" }) }, i))) })), _jsxs("blockquote", { className: "text-sm text-foreground/80 leading-relaxed", children: ["\u201C", quote, "\u201D"] }), _jsxs("div", { className: "flex items-center gap-3 mt-auto pt-2", children: [image && _jsx(ThemeImage, { src: image, alt: author, className: "w-8 h-8 rounded-full object-cover" }), _jsxs("div", { children: [_jsx("p", { className: "text-sm font-semibold text-foreground", children: author }), (role || company) && (_jsxs("p", { className: "text-xs text-muted-foreground", children: [role, role && company && ' · ', company] }))] })] })] }));
|
|
5
6
|
}
|
|
6
|
-
export function Testimonials({ title, description, columns = 3, children }) {
|
|
7
|
+
export function Testimonials({ id, title, description, columns = 3, children }) {
|
|
7
8
|
const gridCols = columns === 2 ? 'md:grid-cols-2' : 'md:grid-cols-2 lg:grid-cols-3';
|
|
8
|
-
return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), _jsx("div", { className: `grid grid-cols-1 ${gridCols} gap-6`, children: children })] }) }));
|
|
9
|
+
return (_jsx(Section, { id: id, children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), _jsx("div", { className: `grid grid-cols-1 ${gridCols} gap-6`, children: children })] }) }));
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=Testimonials.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Testimonials.js","sourceRoot":"","sources":["../../src/marketing/Testimonials.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"Testimonials.js","sourceRoot":"","sources":["../../src/marketing/Testimonials.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAWjE,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAwB;IACnG,OAAO,CACL,eAAK,SAAS,EAAC,0FAA0F,aACtG,MAAM,IAAI,CACT,cAAK,SAAS,EAAC,cAAc,YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5C,cAAa,SAAS,EAAC,mBAAmB,EAAC,OAAO,EAAC,WAAW,YAAC,eAAM,CAAC,EAAC,0VAA0V,GAAG,IAA1Z,CAAC,CAA+Z,CAC3a,CAAC,GACE,CACP,EACD,sBAAY,SAAS,EAAC,4CAA4C,uBAAS,KAAK,cAAqB,EACrG,eAAK,SAAS,EAAC,sCAAsC,aAClD,KAAK,IAAI,KAAC,UAAU,IAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAC,mCAAmC,GAAG,EAC/F,0BACE,YAAG,SAAS,EAAC,uCAAuC,YAAE,MAAM,GAAK,EAChE,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CACpB,aAAG,SAAS,EAAC,+BAA+B,aAAE,IAAI,EAAE,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,OAAO,IAAK,CAC3F,IACG,IACF,IACF,CACP,CAAC;AACJ,CAAC;AAUD,MAAM,UAAU,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAqB;IAC/F,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,+BAA+B,CAAC;IAEpF,OAAO,CACL,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,YACb,eAAK,SAAS,EAAC,gBAAgB,aAC5B,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,eAAK,SAAS,EAAC,mBAAmB,aAC/B,KAAK,IAAI,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EACzF,WAAW,IAAI,YAAG,SAAS,EAAC,iDAAiD,YAAE,WAAW,GAAK,IAC5F,CACP,EACD,cAAK,SAAS,EAAE,oBAAoB,QAAQ,QAAQ,YAAG,QAAQ,GAAO,IAClE,GACE,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type ImageSource = string | {
|
|
3
|
+
light: string;
|
|
4
|
+
dark: string;
|
|
5
|
+
};
|
|
6
|
+
interface ThemeImageProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'src'> {
|
|
7
|
+
src: ImageSource;
|
|
8
|
+
}
|
|
9
|
+
export declare function ThemeImage({ src, className, ...props }: ThemeImageProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=theme-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-image.d.ts","sourceRoot":"","sources":["../../src/ui/theme-image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,UAAU,eAAgB,SAAQ,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC;IACtF,GAAG,EAAE,WAAW,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,2CAUvE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../lib/utils';
|
|
3
|
+
export function ThemeImage({ src, className, ...props }) {
|
|
4
|
+
if (typeof src === 'string') {
|
|
5
|
+
return _jsx("img", { src: src, className: className, ...props });
|
|
6
|
+
}
|
|
7
|
+
return (_jsxs(_Fragment, { children: [_jsx("img", { src: src.light, className: cn(className, 'dark:hidden'), ...props }), _jsx("img", { src: src.dark, className: cn(className, 'hidden dark:block'), ...props })] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=theme-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-image.js","sourceRoot":"","sources":["../../src/ui/theme-image.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,UAAU,UAAU,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,EAAmB;IACtE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,KAAM,KAAK,GAAI,CAAC;IAC5D,CAAC;IACD,OAAO,CACL,8BACE,cAAK,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,KAAM,KAAK,GAAI,EAC3E,cAAK,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC,KAAM,KAAK,GAAI,IAC/E,CACJ,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
package/src/blog/BlogArticle.tsx
CHANGED
|
@@ -8,6 +8,7 @@ interface BlogArticleAuthor {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
interface BlogArticleProps {
|
|
11
|
+
id?: string;
|
|
11
12
|
children: React.ReactNode;
|
|
12
13
|
contentFolder?: string;
|
|
13
14
|
date?: string;
|
|
@@ -15,9 +16,9 @@ interface BlogArticleProps {
|
|
|
15
16
|
author?: BlogArticleAuthor;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
export function BlogArticle({ children, author, date, readingTime }: BlogArticleProps) {
|
|
19
|
+
export function BlogArticle({ id, children, author, date, readingTime }: BlogArticleProps) {
|
|
19
20
|
return (
|
|
20
|
-
<BlogArticleClient author={author} date={date} readingTime={readingTime}>
|
|
21
|
+
<BlogArticleClient id={id} author={author} date={date} readingTime={readingTime}>
|
|
21
22
|
{children}
|
|
22
23
|
</BlogArticleClient>
|
|
23
24
|
);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
4
|
import { cn } from '../lib/utils';
|
|
5
|
+
import { ThemeImage, type ImageSource } from '../ui/theme-image';
|
|
5
6
|
|
|
6
7
|
interface TocItem {
|
|
7
8
|
id: string;
|
|
@@ -12,10 +13,11 @@ interface TocItem {
|
|
|
12
13
|
interface BlogArticleAuthor {
|
|
13
14
|
name: string;
|
|
14
15
|
role: string;
|
|
15
|
-
image:
|
|
16
|
+
image: ImageSource;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
interface BlogArticleClientProps {
|
|
20
|
+
id?: string;
|
|
19
21
|
children: React.ReactNode;
|
|
20
22
|
author?: BlogArticleAuthor;
|
|
21
23
|
date?: string;
|
|
@@ -23,6 +25,7 @@ interface BlogArticleClientProps {
|
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
export function BlogArticleClient({
|
|
28
|
+
id,
|
|
26
29
|
children,
|
|
27
30
|
author,
|
|
28
31
|
date,
|
|
@@ -113,7 +116,7 @@ export function BlogArticleClient({
|
|
|
113
116
|
: '';
|
|
114
117
|
|
|
115
118
|
return (
|
|
116
|
-
<article className="py-12 md:py-20">
|
|
119
|
+
<article id={id} className="py-12 md:py-20">
|
|
117
120
|
<div className="mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)]">
|
|
118
121
|
<div className="flex gap-10 lg:gap-16">
|
|
119
122
|
{/* Main content */}
|
|
@@ -175,7 +178,7 @@ export function BlogArticleClient({
|
|
|
175
178
|
{tocItems.length > 0 && <hr className="border-border" />}
|
|
176
179
|
<div className="flex flex-col gap-3">
|
|
177
180
|
{author.image && (
|
|
178
|
-
<
|
|
181
|
+
<ThemeImage
|
|
179
182
|
src={author.image}
|
|
180
183
|
alt={author.name}
|
|
181
184
|
className="w-12 h-12 rounded-full object-cover"
|
package/src/blog/BlogIndex.tsx
CHANGED
|
@@ -2,14 +2,15 @@ import React from 'react';
|
|
|
2
2
|
import { Section } from '../ui/section';
|
|
3
3
|
|
|
4
4
|
interface BlogIndexProps {
|
|
5
|
+
id?: string;
|
|
5
6
|
title?: string;
|
|
6
7
|
description?: string;
|
|
7
8
|
children?: React.ReactNode;
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
export function BlogIndex({ title, description, children }: BlogIndexProps) {
|
|
11
|
+
export function BlogIndex({ id, title, description, children }: BlogIndexProps) {
|
|
11
12
|
return (
|
|
12
|
-
<Section>
|
|
13
|
+
<Section id={id}>
|
|
13
14
|
<div className="container-main">
|
|
14
15
|
{(title || description) && (
|
|
15
16
|
<div className="text-center mb-12">
|
|
@@ -17,14 +17,15 @@ export function ContentSection({ title, children }: ContentSectionProps) {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
interface ContentPageProps {
|
|
20
|
+
id?: string;
|
|
20
21
|
title: string;
|
|
21
22
|
lastUpdated?: string;
|
|
22
23
|
children: React.ReactNode;
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
export function ContentPage({ title, lastUpdated, children }: ContentPageProps) {
|
|
26
|
+
export function ContentPage({ id, title, lastUpdated, children }: ContentPageProps) {
|
|
26
27
|
return (
|
|
27
|
-
<section className="py-12 md:py-20">
|
|
28
|
+
<section id={id} className="py-12 md:py-20">
|
|
28
29
|
<div className="container-main max-w-3xl">
|
|
29
30
|
<h1 className="text-3xl md:text-4xl font-bold text-foreground mb-2">{title}</h1>
|
|
30
31
|
{lastUpdated && <p className="text-sm text-muted-foreground mb-8">Last updated: {lastUpdated}</p>}
|
package/src/index.ts
CHANGED
|
@@ -53,6 +53,10 @@ export { TabsSection, TabItem } from './marketing/TabsSection';
|
|
|
53
53
|
export { BlogArticle } from './blog/BlogArticle';
|
|
54
54
|
export { BlogIndex } from './blog/BlogIndex';
|
|
55
55
|
|
|
56
|
+
// Image utilities
|
|
57
|
+
export { ThemeImage } from './ui/theme-image';
|
|
58
|
+
export type { ImageSource } from './ui/theme-image';
|
|
59
|
+
|
|
56
60
|
// UI primitives
|
|
57
61
|
export {
|
|
58
62
|
Table,
|