@opensite/ui 0.8.1 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/carousel-horizontal-cards.cjs +8 -6
- package/dist/carousel-horizontal-cards.js +8 -6
- package/dist/carousel-image-hero.cjs +85 -160
- package/dist/carousel-image-hero.d.cts +1 -5
- package/dist/carousel-image-hero.d.ts +1 -5
- package/dist/carousel-image-hero.js +85 -160
- package/dist/carousel-portfolio-hero.cjs +138 -59
- package/dist/carousel-portfolio-hero.js +138 -59
- package/dist/carousel-product-feature-showcase.cjs +148 -95
- package/dist/carousel-product-feature-showcase.js +148 -95
- package/dist/carousel-progress-slider.cjs +13 -9
- package/dist/carousel-progress-slider.js +13 -9
- package/dist/carousel-scrolling-feature-showcase.cjs +105 -54
- package/dist/carousel-scrolling-feature-showcase.js +105 -54
- package/dist/feature-accordion-image.cjs +9 -8
- package/dist/feature-accordion-image.js +9 -8
- package/dist/feature-animated-carousel.cjs +65 -49
- package/dist/feature-animated-carousel.js +65 -49
- package/dist/feature-badge-grid-six.cjs +20 -17
- package/dist/feature-badge-grid-six.js +21 -18
- package/dist/feature-bento-image-grid.cjs +12 -8
- package/dist/feature-bento-image-grid.js +12 -8
- package/dist/feature-bento-utilities.cjs +9 -5
- package/dist/feature-bento-utilities.js +9 -5
- package/dist/feature-capabilities-grid.cjs +41 -38
- package/dist/feature-capabilities-grid.js +41 -38
- package/dist/feature-card-grid-linked.cjs +18 -18
- package/dist/feature-card-grid-linked.js +19 -19
- package/dist/feature-carousel-progress.cjs +3 -3
- package/dist/feature-carousel-progress.js +4 -4
- package/dist/feature-category-image-cards.cjs +3 -3
- package/dist/feature-category-image-cards.js +4 -4
- package/dist/feature-checklist-image.cjs +2 -2
- package/dist/feature-checklist-image.js +2 -2
- package/dist/feature-checklist-three-column.cjs +6 -6
- package/dist/feature-checklist-three-column.js +7 -7
- package/dist/feature-icon-grid-accent.cjs +2 -2
- package/dist/feature-icon-grid-accent.js +2 -2
- package/dist/feature-icon-grid-bordered.cjs +29 -31
- package/dist/feature-icon-grid-bordered.d.cts +9 -9
- package/dist/feature-icon-grid-bordered.d.ts +9 -9
- package/dist/feature-icon-grid-bordered.js +30 -32
- package/dist/feature-icon-grid-muted.cjs +6 -6
- package/dist/feature-icon-grid-muted.d.cts +9 -9
- package/dist/feature-icon-grid-muted.d.ts +9 -9
- package/dist/feature-icon-grid-muted.js +7 -7
- package/dist/feature-icon-tabs-content.cjs +8 -8
- package/dist/feature-icon-tabs-content.d.cts +13 -13
- package/dist/feature-icon-tabs-content.d.ts +13 -13
- package/dist/feature-icon-tabs-content.js +9 -9
- package/dist/feature-image-cards-three-column.cjs +26 -27
- package/dist/feature-image-cards-three-column.js +27 -28
- package/dist/feature-image-overlay-badge.cjs +23 -21
- package/dist/feature-image-overlay-badge.js +24 -22
- package/dist/feature-integration-cards.cjs +19 -18
- package/dist/feature-integration-cards.js +20 -19
- package/dist/feature-numbered-cards.cjs +2 -2
- package/dist/feature-numbered-cards.js +3 -3
- package/dist/feature-pattern-grid-links.cjs +26 -29
- package/dist/feature-pattern-grid-links.d.cts +1 -5
- package/dist/feature-pattern-grid-links.d.ts +1 -5
- package/dist/feature-pattern-grid-links.js +27 -30
- package/dist/feature-showcase.cjs +441 -40
- package/dist/feature-showcase.d.cts +62 -5
- package/dist/feature-showcase.d.ts +62 -5
- package/dist/feature-showcase.js +438 -37
- package/dist/feature-split-image-reverse.cjs +15 -36
- package/dist/feature-split-image-reverse.js +16 -37
- package/dist/feature-split-image.cjs +15 -36
- package/dist/feature-split-image.js +16 -37
- package/dist/feature-stats-highlight.cjs +20 -32
- package/dist/feature-stats-highlight.js +21 -33
- package/dist/feature-tabbed-content-image.cjs +11 -6
- package/dist/feature-tabbed-content-image.js +11 -6
- package/dist/feature-three-column-values.cjs +6 -6
- package/dist/feature-three-column-values.js +6 -6
- package/dist/feature-utility-cards-grid.cjs +17 -15
- package/dist/feature-utility-cards-grid.js +18 -16
- package/dist/navbar-tabbed-sections.cjs +23 -16
- package/dist/navbar-tabbed-sections.js +23 -16
- package/dist/registry.cjs +941 -708
- package/dist/registry.js +943 -710
- package/package.json +1 -1
|
@@ -574,49 +574,52 @@ function FeatureCapabilitiesGrid({
|
|
|
574
574
|
patternOpacity,
|
|
575
575
|
patternClassName
|
|
576
576
|
}) {
|
|
577
|
-
const renderItemIcon = (item) => {
|
|
577
|
+
const renderItemIcon = React__namespace.useCallback((item) => {
|
|
578
578
|
if (item.icon) return item.icon;
|
|
579
579
|
if (item.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 20 });
|
|
580
|
-
return
|
|
581
|
-
};
|
|
580
|
+
return null;
|
|
581
|
+
}, []);
|
|
582
582
|
const itemsContent = React.useMemo(() => {
|
|
583
583
|
if (itemsSlot) return itemsSlot;
|
|
584
584
|
if (!items || items.length === 0) return null;
|
|
585
|
-
return items.map((item, index) =>
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -
|
|
594
|
-
/* @__PURE__ */ jsxRuntime.
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
/* @__PURE__ */ jsxRuntime.
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
585
|
+
return items.map((item, index) => {
|
|
586
|
+
const iconContent = renderItemIcon(item);
|
|
587
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
588
|
+
Card,
|
|
589
|
+
{
|
|
590
|
+
className: cn("group relative overflow-visible border-white/10 bg-white/5 p-0 transition-colors duration-300 hover:border-white/20", cardClassName, item.className),
|
|
591
|
+
children: [
|
|
592
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-300 group-hover:opacity-100", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -inset-px rounded-xl bg-linear-to-br from-white/10 via-white/5 to-transparent" }) }),
|
|
593
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 rounded-xl bg-linear-to-tr from-white/0 to-white/0 transition-colors group-hover:from-white/3 group-hover:to-white/6" }),
|
|
594
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pointer-events-none absolute inset-0 hidden group-hover:block", children: [
|
|
595
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -left-2 -top-2 h-3 w-3 bg-white" }),
|
|
596
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -right-2 -top-2 h-3 w-3 bg-white" }),
|
|
597
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -left-2 -bottom-2 h-3 w-3 bg-white" }),
|
|
598
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -right-2 -bottom-2 h-3 w-3 bg-white" })
|
|
599
|
+
] }),
|
|
600
|
+
/* @__PURE__ */ jsxRuntime.jsxs(CardHeader, { className: "relative z-10 flex flex-row items-start gap-3 p-6", children: [
|
|
601
|
+
iconContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex h-10 w-10 items-center justify-center rounded-xl border border-white/15 bg-white/5 text-white", item.iconClassName), children: iconContent }),
|
|
602
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
603
|
+
item.title && (typeof item.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title })),
|
|
604
|
+
item.badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full border border-white/20 px-2 py-0.5 text-[10px] leading-none text-white/70", item.badgeClassName), children: item.badge })
|
|
605
|
+
] }) })
|
|
606
|
+
] }),
|
|
607
|
+
item.description && /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: cn("relative z-10 px-6 pb-6 text-sm text-white/70", item.descriptionClassName), children: item.description }),
|
|
608
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
609
|
+
framerMotion.motion.div,
|
|
610
|
+
{
|
|
611
|
+
className: "pointer-events-none absolute inset-0 rounded-xl ring-0 ring-white/0",
|
|
612
|
+
initial: { opacity: 0 },
|
|
613
|
+
whileHover: { opacity: 1 },
|
|
614
|
+
transition: { duration: 0.25 }
|
|
615
|
+
}
|
|
616
|
+
)
|
|
617
|
+
]
|
|
618
|
+
},
|
|
619
|
+
`${typeof item.title === "string" ? item.title : "item"}-${index}`
|
|
620
|
+
);
|
|
621
|
+
});
|
|
622
|
+
}, [itemsSlot, items, cardClassName, renderItemIcon]);
|
|
620
623
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
621
624
|
Section,
|
|
622
625
|
{
|
|
@@ -553,49 +553,52 @@ function FeatureCapabilitiesGrid({
|
|
|
553
553
|
patternOpacity,
|
|
554
554
|
patternClassName
|
|
555
555
|
}) {
|
|
556
|
-
const renderItemIcon = (item) => {
|
|
556
|
+
const renderItemIcon = React.useCallback((item) => {
|
|
557
557
|
if (item.icon) return item.icon;
|
|
558
558
|
if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 20 });
|
|
559
|
-
return
|
|
560
|
-
};
|
|
559
|
+
return null;
|
|
560
|
+
}, []);
|
|
561
561
|
const itemsContent = useMemo(() => {
|
|
562
562
|
if (itemsSlot) return itemsSlot;
|
|
563
563
|
if (!items || items.length === 0) return null;
|
|
564
|
-
return items.map((item, index) =>
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
/* @__PURE__ */ jsx("div", { className: "absolute -
|
|
573
|
-
/* @__PURE__ */
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
/* @__PURE__ */
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
564
|
+
return items.map((item, index) => {
|
|
565
|
+
const iconContent = renderItemIcon(item);
|
|
566
|
+
return /* @__PURE__ */ jsxs(
|
|
567
|
+
Card,
|
|
568
|
+
{
|
|
569
|
+
className: cn("group relative overflow-visible border-white/10 bg-white/5 p-0 transition-colors duration-300 hover:border-white/20", cardClassName, item.className),
|
|
570
|
+
children: [
|
|
571
|
+
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-300 group-hover:opacity-100", children: /* @__PURE__ */ jsx("div", { className: "absolute -inset-px rounded-xl bg-linear-to-br from-white/10 via-white/5 to-transparent" }) }),
|
|
572
|
+
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 rounded-xl bg-linear-to-tr from-white/0 to-white/0 transition-colors group-hover:from-white/3 group-hover:to-white/6" }),
|
|
573
|
+
/* @__PURE__ */ jsxs("div", { className: "pointer-events-none absolute inset-0 hidden group-hover:block", children: [
|
|
574
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -left-2 -top-2 h-3 w-3 bg-white" }),
|
|
575
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -right-2 -top-2 h-3 w-3 bg-white" }),
|
|
576
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -left-2 -bottom-2 h-3 w-3 bg-white" }),
|
|
577
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -right-2 -bottom-2 h-3 w-3 bg-white" })
|
|
578
|
+
] }),
|
|
579
|
+
/* @__PURE__ */ jsxs(CardHeader, { className: "relative z-10 flex flex-row items-start gap-3 p-6", children: [
|
|
580
|
+
iconContent && /* @__PURE__ */ jsx("div", { className: cn("flex h-10 w-10 items-center justify-center rounded-xl border border-white/15 bg-white/5 text-white", item.iconClassName), children: iconContent }),
|
|
581
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
582
|
+
item.title && (typeof item.title === "string" ? /* @__PURE__ */ jsx(CardTitle, { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title })),
|
|
583
|
+
item.badge && /* @__PURE__ */ jsx("span", { className: cn("rounded-full border border-white/20 px-2 py-0.5 text-[10px] leading-none text-white/70", item.badgeClassName), children: item.badge })
|
|
584
|
+
] }) })
|
|
585
|
+
] }),
|
|
586
|
+
item.description && /* @__PURE__ */ jsx(CardContent, { className: cn("relative z-10 px-6 pb-6 text-sm text-white/70", item.descriptionClassName), children: item.description }),
|
|
587
|
+
/* @__PURE__ */ jsx(
|
|
588
|
+
motion.div,
|
|
589
|
+
{
|
|
590
|
+
className: "pointer-events-none absolute inset-0 rounded-xl ring-0 ring-white/0",
|
|
591
|
+
initial: { opacity: 0 },
|
|
592
|
+
whileHover: { opacity: 1 },
|
|
593
|
+
transition: { duration: 0.25 }
|
|
594
|
+
}
|
|
595
|
+
)
|
|
596
|
+
]
|
|
597
|
+
},
|
|
598
|
+
`${typeof item.title === "string" ? item.title : "item"}-${index}`
|
|
599
|
+
);
|
|
600
|
+
});
|
|
601
|
+
}, [itemsSlot, items, cardClassName, renderItemIcon]);
|
|
599
602
|
return /* @__PURE__ */ jsxs(
|
|
600
603
|
Section,
|
|
601
604
|
{
|
|
@@ -842,28 +842,28 @@ function FeatureCardGridLinked({
|
|
|
842
842
|
patternOpacity,
|
|
843
843
|
patternClassName
|
|
844
844
|
}) {
|
|
845
|
+
const renderImage = React.useCallback((feature, imageAlt) => {
|
|
846
|
+
if (feature.imageSlot) return feature.imageSlot;
|
|
847
|
+
if (feature.image) {
|
|
848
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
849
|
+
img.Img,
|
|
850
|
+
{
|
|
851
|
+
src: feature.image,
|
|
852
|
+
alt: imageAlt,
|
|
853
|
+
className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
|
|
854
|
+
loading: "lazy",
|
|
855
|
+
optixFlowConfig
|
|
856
|
+
}
|
|
857
|
+
);
|
|
858
|
+
}
|
|
859
|
+
return null;
|
|
860
|
+
}, [optixFlowConfig]);
|
|
845
861
|
const featuresContent = React.useMemo(() => {
|
|
846
862
|
if (featuresSlot) return featuresSlot;
|
|
847
863
|
if (!features || features.length === 0) return null;
|
|
848
864
|
return features.map((feature, index) => {
|
|
849
865
|
const featureKey = feature.id || `feature-${index}`;
|
|
850
866
|
const imageAlt = feature.imageAlt || (typeof feature.heading === "string" ? feature.heading : "Feature image");
|
|
851
|
-
const renderImage = () => {
|
|
852
|
-
if (feature.imageSlot) return feature.imageSlot;
|
|
853
|
-
if (feature.image) {
|
|
854
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
855
|
-
img.Img,
|
|
856
|
-
{
|
|
857
|
-
src: feature.image,
|
|
858
|
-
alt: imageAlt,
|
|
859
|
-
className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
|
|
860
|
-
loading: "lazy",
|
|
861
|
-
optixFlowConfig
|
|
862
|
-
}
|
|
863
|
-
);
|
|
864
|
-
}
|
|
865
|
-
return null;
|
|
866
|
-
};
|
|
867
867
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
868
868
|
"div",
|
|
869
869
|
{
|
|
@@ -874,7 +874,7 @@ function FeatureCardGridLinked({
|
|
|
874
874
|
feature.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-mono text-xs text-muted-foreground", feature.labelClassName), children: feature.label }),
|
|
875
875
|
feature.heading && /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: feature.url, children: typeof feature.heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("text-2xl transition-all hover:text-primary hover:opacity-80 sm:text-3xl lg:text-4xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-2xl transition-all hover:text-primary hover:opacity-80 sm:text-3xl lg:text-4xl", feature.headingClassName), children: feature.heading }) })
|
|
876
876
|
] }),
|
|
877
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: feature.url, children: renderImage() }) })
|
|
877
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: feature.url, children: renderImage(feature, imageAlt) }) })
|
|
878
878
|
] }),
|
|
879
879
|
feature.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("p-4 text-muted-foreground md:p-8", feature.descriptionClassName), children: feature.description })
|
|
880
880
|
]
|
|
@@ -882,7 +882,7 @@ function FeatureCardGridLinked({
|
|
|
882
882
|
featureKey
|
|
883
883
|
);
|
|
884
884
|
});
|
|
885
|
-
}, [featuresSlot, features, cardClassName,
|
|
885
|
+
}, [featuresSlot, features, cardClassName, renderImage]);
|
|
886
886
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
887
887
|
Section,
|
|
888
888
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import React__default, { useMemo } from 'react';
|
|
3
|
+
import React__default, { useCallback, useMemo } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { cva } from 'class-variance-authority';
|
|
@@ -821,28 +821,28 @@ function FeatureCardGridLinked({
|
|
|
821
821
|
patternOpacity,
|
|
822
822
|
patternClassName
|
|
823
823
|
}) {
|
|
824
|
+
const renderImage = useCallback((feature, imageAlt) => {
|
|
825
|
+
if (feature.imageSlot) return feature.imageSlot;
|
|
826
|
+
if (feature.image) {
|
|
827
|
+
return /* @__PURE__ */ jsx(
|
|
828
|
+
Img,
|
|
829
|
+
{
|
|
830
|
+
src: feature.image,
|
|
831
|
+
alt: imageAlt,
|
|
832
|
+
className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
|
|
833
|
+
loading: "lazy",
|
|
834
|
+
optixFlowConfig
|
|
835
|
+
}
|
|
836
|
+
);
|
|
837
|
+
}
|
|
838
|
+
return null;
|
|
839
|
+
}, [optixFlowConfig]);
|
|
824
840
|
const featuresContent = useMemo(() => {
|
|
825
841
|
if (featuresSlot) return featuresSlot;
|
|
826
842
|
if (!features || features.length === 0) return null;
|
|
827
843
|
return features.map((feature, index) => {
|
|
828
844
|
const featureKey = feature.id || `feature-${index}`;
|
|
829
845
|
const imageAlt = feature.imageAlt || (typeof feature.heading === "string" ? feature.heading : "Feature image");
|
|
830
|
-
const renderImage = () => {
|
|
831
|
-
if (feature.imageSlot) return feature.imageSlot;
|
|
832
|
-
if (feature.image) {
|
|
833
|
-
return /* @__PURE__ */ jsx(
|
|
834
|
-
Img,
|
|
835
|
-
{
|
|
836
|
-
src: feature.image,
|
|
837
|
-
alt: imageAlt,
|
|
838
|
-
className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
|
|
839
|
-
loading: "lazy",
|
|
840
|
-
optixFlowConfig
|
|
841
|
-
}
|
|
842
|
-
);
|
|
843
|
-
}
|
|
844
|
-
return null;
|
|
845
|
-
};
|
|
846
846
|
return /* @__PURE__ */ jsxs(
|
|
847
847
|
"div",
|
|
848
848
|
{
|
|
@@ -853,7 +853,7 @@ function FeatureCardGridLinked({
|
|
|
853
853
|
feature.label && /* @__PURE__ */ jsx("span", { className: cn("font-mono text-xs text-muted-foreground", feature.labelClassName), children: feature.label }),
|
|
854
854
|
feature.heading && /* @__PURE__ */ jsx(Pressable, { href: feature.url, children: typeof feature.heading === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("text-2xl transition-all hover:text-primary hover:opacity-80 sm:text-3xl lg:text-4xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsx("div", { className: cn("text-2xl transition-all hover:text-primary hover:opacity-80 sm:text-3xl lg:text-4xl", feature.headingClassName), children: feature.heading }) })
|
|
855
855
|
] }),
|
|
856
|
-
/* @__PURE__ */ jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsx(Pressable, { href: feature.url, children: renderImage() }) })
|
|
856
|
+
/* @__PURE__ */ jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsx(Pressable, { href: feature.url, children: renderImage(feature, imageAlt) }) })
|
|
857
857
|
] }),
|
|
858
858
|
feature.description && /* @__PURE__ */ jsx("p", { className: cn("p-4 text-muted-foreground md:p-8", feature.descriptionClassName), children: feature.description })
|
|
859
859
|
]
|
|
@@ -861,7 +861,7 @@ function FeatureCardGridLinked({
|
|
|
861
861
|
featureKey
|
|
862
862
|
);
|
|
863
863
|
});
|
|
864
|
-
}, [featuresSlot, features, cardClassName,
|
|
864
|
+
}, [featuresSlot, features, cardClassName, renderImage]);
|
|
865
865
|
return /* @__PURE__ */ jsxs(
|
|
866
866
|
Section,
|
|
867
867
|
{
|
|
@@ -1237,10 +1237,10 @@ function FeatureCarouselProgress({
|
|
|
1237
1237
|
);
|
|
1238
1238
|
});
|
|
1239
1239
|
}, [api, slidesLength]);
|
|
1240
|
-
const renderSlideIcon = React4.
|
|
1240
|
+
const renderSlideIcon = React4.useCallback((slide) => {
|
|
1241
1241
|
if (slide.icon) return slide.icon;
|
|
1242
1242
|
if (slide.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: slide.iconName, size: 16 });
|
|
1243
|
-
return
|
|
1243
|
+
return null;
|
|
1244
1244
|
}, []);
|
|
1245
1245
|
const slidesContent = React4.useMemo(() => {
|
|
1246
1246
|
if (slidesSlot) return slidesSlot;
|
|
@@ -1250,7 +1250,7 @@ function FeatureCarouselProgress({
|
|
|
1250
1250
|
{
|
|
1251
1251
|
className: "basis-full md:basis-1/2 lg:basis-1/3",
|
|
1252
1252
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-1", children: /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn(cardClassName, slide.className), children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "flex flex-col justify-center p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1253
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-accent lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
|
|
1253
|
+
(slide.icon || slide.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-accent lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
|
|
1254
1254
|
slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title })),
|
|
1255
1255
|
slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }))
|
|
1256
1256
|
] }) }) }) })
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React4 from 'react';
|
|
3
|
-
import React4__default, { useState, useEffect, useMemo } from 'react';
|
|
3
|
+
import React4__default, { useState, useEffect, useCallback, useMemo } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -1212,10 +1212,10 @@ function FeatureCarouselProgress({
|
|
|
1212
1212
|
);
|
|
1213
1213
|
});
|
|
1214
1214
|
}, [api, slidesLength]);
|
|
1215
|
-
const renderSlideIcon =
|
|
1215
|
+
const renderSlideIcon = useCallback((slide) => {
|
|
1216
1216
|
if (slide.icon) return slide.icon;
|
|
1217
1217
|
if (slide.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: slide.iconName, size: 16 });
|
|
1218
|
-
return
|
|
1218
|
+
return null;
|
|
1219
1219
|
}, []);
|
|
1220
1220
|
const slidesContent = useMemo(() => {
|
|
1221
1221
|
if (slidesSlot) return slidesSlot;
|
|
@@ -1225,7 +1225,7 @@ function FeatureCarouselProgress({
|
|
|
1225
1225
|
{
|
|
1226
1226
|
className: "basis-full md:basis-1/2 lg:basis-1/3",
|
|
1227
1227
|
children: /* @__PURE__ */ jsx("div", { className: "p-1", children: /* @__PURE__ */ jsx(Card, { className: cn(cardClassName, slide.className), children: /* @__PURE__ */ jsx(CardContent, { className: "flex flex-col justify-center p-6", children: /* @__PURE__ */ jsxs("div", { children: [
|
|
1228
|
-
/* @__PURE__ */ jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-accent lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
|
|
1228
|
+
(slide.icon || slide.iconName) && /* @__PURE__ */ jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-accent lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
|
|
1229
1229
|
slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title })),
|
|
1230
1230
|
slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsx("div", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }))
|
|
1231
1231
|
] }) }) }) })
|
|
@@ -501,7 +501,7 @@ function FeatureCategoryImageCards({
|
|
|
501
501
|
patternOpacity,
|
|
502
502
|
patternClassName
|
|
503
503
|
}) {
|
|
504
|
-
const renderFeatureImage = (feature) => {
|
|
504
|
+
const renderFeatureImage = React.useCallback((feature) => {
|
|
505
505
|
if (feature.imageSlot) return feature.imageSlot;
|
|
506
506
|
if (feature.imageSrc) {
|
|
507
507
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -516,7 +516,7 @@ function FeatureCategoryImageCards({
|
|
|
516
516
|
);
|
|
517
517
|
}
|
|
518
518
|
return null;
|
|
519
|
-
};
|
|
519
|
+
}, [optixFlowConfig]);
|
|
520
520
|
const featuresContent = React.useMemo(() => {
|
|
521
521
|
if (featuresSlot) return featuresSlot;
|
|
522
522
|
if (!features || features.length === 0) return null;
|
|
@@ -527,7 +527,7 @@ function FeatureCategoryImageCards({
|
|
|
527
527
|
] }),
|
|
528
528
|
/* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "px-7 pb-7", children: renderFeatureImage(feature) })
|
|
529
529
|
] }, index));
|
|
530
|
-
}, [featuresSlot, features, cardClassName,
|
|
530
|
+
}, [featuresSlot, features, cardClassName, renderFeatureImage]);
|
|
531
531
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
532
532
|
Section,
|
|
533
533
|
{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import React, { useMemo } from 'react';
|
|
2
|
+
import React, { useCallback, useMemo } from 'react';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import { Slot } from '@radix-ui/react-slot';
|
|
@@ -495,7 +495,7 @@ function FeatureCategoryImageCards({
|
|
|
495
495
|
patternOpacity,
|
|
496
496
|
patternClassName
|
|
497
497
|
}) {
|
|
498
|
-
const renderFeatureImage = (feature) => {
|
|
498
|
+
const renderFeatureImage = useCallback((feature) => {
|
|
499
499
|
if (feature.imageSlot) return feature.imageSlot;
|
|
500
500
|
if (feature.imageSrc) {
|
|
501
501
|
return /* @__PURE__ */ jsx(
|
|
@@ -510,7 +510,7 @@ function FeatureCategoryImageCards({
|
|
|
510
510
|
);
|
|
511
511
|
}
|
|
512
512
|
return null;
|
|
513
|
-
};
|
|
513
|
+
}, [optixFlowConfig]);
|
|
514
514
|
const featuresContent = useMemo(() => {
|
|
515
515
|
if (featuresSlot) return featuresSlot;
|
|
516
516
|
if (!features || features.length === 0) return null;
|
|
@@ -521,7 +521,7 @@ function FeatureCategoryImageCards({
|
|
|
521
521
|
] }),
|
|
522
522
|
/* @__PURE__ */ jsx(CardContent, { className: "px-7 pb-7", children: renderFeatureImage(feature) })
|
|
523
523
|
] }, index));
|
|
524
|
-
}, [featuresSlot, features, cardClassName,
|
|
524
|
+
}, [featuresSlot, features, cardClassName, renderFeatureImage]);
|
|
525
525
|
return /* @__PURE__ */ jsxs(
|
|
526
526
|
Section,
|
|
527
527
|
{
|
|
@@ -1039,8 +1039,8 @@ function FeatureChecklistImage({
|
|
|
1039
1039
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("lg:p-10", contentClassName), children: [
|
|
1040
1040
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title })),
|
|
1041
1041
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description })),
|
|
1042
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent }),
|
|
1043
|
-
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
|
|
1042
|
+
actionsContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent }),
|
|
1043
|
+
checklistContent && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
|
|
1044
1044
|
] })
|
|
1045
1045
|
] })
|
|
1046
1046
|
}
|
|
@@ -1018,8 +1018,8 @@ function FeatureChecklistImage({
|
|
|
1018
1018
|
/* @__PURE__ */ jsxs("div", { className: cn("lg:p-10", contentClassName), children: [
|
|
1019
1019
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title })),
|
|
1020
1020
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description })),
|
|
1021
|
-
/* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent }),
|
|
1022
|
-
/* @__PURE__ */ jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
|
|
1021
|
+
actionsContent && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent }),
|
|
1022
|
+
checklistContent && /* @__PURE__ */ jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
|
|
1023
1023
|
] })
|
|
1024
1024
|
] })
|
|
1025
1025
|
}
|
|
@@ -985,15 +985,15 @@ function FeatureChecklistThreeColumn({
|
|
|
985
985
|
patternOpacity,
|
|
986
986
|
patternClassName
|
|
987
987
|
}) {
|
|
988
|
-
const getCheckItemContent = React.
|
|
988
|
+
const getCheckItemContent = React.useCallback((item) => {
|
|
989
989
|
if (typeof item === "string") return item;
|
|
990
990
|
return item.content;
|
|
991
991
|
}, []);
|
|
992
|
-
const getCheckItemClassName = React.
|
|
992
|
+
const getCheckItemClassName = React.useCallback((item) => {
|
|
993
993
|
if (typeof item === "string") return void 0;
|
|
994
994
|
return item.className;
|
|
995
995
|
}, []);
|
|
996
|
-
const renderChecklistColumn = React.
|
|
996
|
+
const renderChecklistColumn = React.useCallback((items, slot, gapClass) => {
|
|
997
997
|
if (slot) return slot;
|
|
998
998
|
if (!items || items.length === 0) return null;
|
|
999
999
|
return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("flex flex-col text-muted-foreground", gapClass, checklistClassName), children: items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: cn("flex items-center gap-2", getCheckItemClassName(item)), children: [
|
|
@@ -1001,7 +1001,7 @@ function FeatureChecklistThreeColumn({
|
|
|
1001
1001
|
getCheckItemContent(item)
|
|
1002
1002
|
] }, index)) });
|
|
1003
1003
|
}, [checklistClassName, getCheckItemContent, getCheckItemClassName]);
|
|
1004
|
-
const renderCardImage = React.
|
|
1004
|
+
const renderCardImage = React.useCallback((card) => {
|
|
1005
1005
|
if (card.imageSlot) return card.imageSlot;
|
|
1006
1006
|
if (card.image) {
|
|
1007
1007
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1017,7 +1017,7 @@ function FeatureChecklistThreeColumn({
|
|
|
1017
1017
|
}
|
|
1018
1018
|
return null;
|
|
1019
1019
|
}, [optixFlowConfig]);
|
|
1020
|
-
const renderCardLink = React.
|
|
1020
|
+
const renderCardLink = React.useCallback((card) => {
|
|
1021
1021
|
if (card.linkSlot) return card.linkSlot;
|
|
1022
1022
|
if (!card.link) return null;
|
|
1023
1023
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1080,7 +1080,7 @@ function FeatureChecklistThreeColumn({
|
|
|
1080
1080
|
pattern,
|
|
1081
1081
|
patternOpacity,
|
|
1082
1082
|
patternClassName,
|
|
1083
|
-
className
|
|
1083
|
+
className,
|
|
1084
1084
|
containerClassName,
|
|
1085
1085
|
children: [
|
|
1086
1086
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-4 sm:grid-cols-2 sm:gap-8 md:gap-12 lg:grid-cols-3 lg:gap-16", headerGridClassName), children: [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import React__default, { useMemo } from 'react';
|
|
3
|
+
import React__default, { useCallback, useMemo } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -964,15 +964,15 @@ function FeatureChecklistThreeColumn({
|
|
|
964
964
|
patternOpacity,
|
|
965
965
|
patternClassName
|
|
966
966
|
}) {
|
|
967
|
-
const getCheckItemContent =
|
|
967
|
+
const getCheckItemContent = useCallback((item) => {
|
|
968
968
|
if (typeof item === "string") return item;
|
|
969
969
|
return item.content;
|
|
970
970
|
}, []);
|
|
971
|
-
const getCheckItemClassName =
|
|
971
|
+
const getCheckItemClassName = useCallback((item) => {
|
|
972
972
|
if (typeof item === "string") return void 0;
|
|
973
973
|
return item.className;
|
|
974
974
|
}, []);
|
|
975
|
-
const renderChecklistColumn =
|
|
975
|
+
const renderChecklistColumn = useCallback((items, slot, gapClass) => {
|
|
976
976
|
if (slot) return slot;
|
|
977
977
|
if (!items || items.length === 0) return null;
|
|
978
978
|
return /* @__PURE__ */ jsx("ul", { className: cn("flex flex-col text-muted-foreground", gapClass, checklistClassName), children: items.map((item, index) => /* @__PURE__ */ jsxs("li", { className: cn("flex items-center gap-2", getCheckItemClassName(item)), children: [
|
|
@@ -980,7 +980,7 @@ function FeatureChecklistThreeColumn({
|
|
|
980
980
|
getCheckItemContent(item)
|
|
981
981
|
] }, index)) });
|
|
982
982
|
}, [checklistClassName, getCheckItemContent, getCheckItemClassName]);
|
|
983
|
-
const renderCardImage =
|
|
983
|
+
const renderCardImage = useCallback((card) => {
|
|
984
984
|
if (card.imageSlot) return card.imageSlot;
|
|
985
985
|
if (card.image) {
|
|
986
986
|
return /* @__PURE__ */ jsx(
|
|
@@ -996,7 +996,7 @@ function FeatureChecklistThreeColumn({
|
|
|
996
996
|
}
|
|
997
997
|
return null;
|
|
998
998
|
}, [optixFlowConfig]);
|
|
999
|
-
const renderCardLink =
|
|
999
|
+
const renderCardLink = useCallback((card) => {
|
|
1000
1000
|
if (card.linkSlot) return card.linkSlot;
|
|
1001
1001
|
if (!card.link) return null;
|
|
1002
1002
|
return /* @__PURE__ */ jsxs(
|
|
@@ -1059,7 +1059,7 @@ function FeatureChecklistThreeColumn({
|
|
|
1059
1059
|
pattern,
|
|
1060
1060
|
patternOpacity,
|
|
1061
1061
|
patternClassName,
|
|
1062
|
-
className
|
|
1062
|
+
className,
|
|
1063
1063
|
containerClassName,
|
|
1064
1064
|
children: [
|
|
1065
1065
|
/* @__PURE__ */ jsxs("div", { className: cn("grid gap-4 sm:grid-cols-2 sm:gap-8 md:gap-12 lg:grid-cols-3 lg:gap-16", headerGridClassName), children: [
|
|
@@ -566,12 +566,12 @@ function FeatureIconGridAccent({
|
|
|
566
566
|
className,
|
|
567
567
|
containerClassName,
|
|
568
568
|
children: [
|
|
569
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center space-y-4 text-center sm:space-y-6 md:max-w-3xl md:text-center", children: [
|
|
569
|
+
(label || title || description) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center space-y-4 text-center sm:space-y-6 md:max-w-3xl md:text-center", children: [
|
|
570
570
|
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: labelClassName, children: label })),
|
|
571
571
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
|
|
572
572
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground md:max-w-2xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
573
573
|
] }) }),
|
|
574
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
|
|
574
|
+
featuresContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
|
|
575
575
|
]
|
|
576
576
|
}
|
|
577
577
|
);
|
|
@@ -545,12 +545,12 @@ function FeatureIconGridAccent({
|
|
|
545
545
|
className,
|
|
546
546
|
containerClassName,
|
|
547
547
|
children: [
|
|
548
|
-
/* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center space-y-4 text-center sm:space-y-6 md:max-w-3xl md:text-center", children: [
|
|
548
|
+
(label || title || description) && /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center space-y-4 text-center sm:space-y-6 md:max-w-3xl md:text-center", children: [
|
|
549
549
|
label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground", labelClassName), children: label }) : /* @__PURE__ */ jsx("div", { className: labelClassName, children: label })),
|
|
550
550
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
|
|
551
551
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground md:max-w-2xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
|
|
552
552
|
] }) }),
|
|
553
|
-
/* @__PURE__ */ jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
|
|
553
|
+
featuresContent && /* @__PURE__ */ jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
|
|
554
554
|
]
|
|
555
555
|
}
|
|
556
556
|
);
|