@opensite/ui 0.8.4 → 0.8.5
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/article-breadcrumb-social.cjs +57 -73
- package/dist/article-breadcrumb-social.d.cts +2 -24
- package/dist/article-breadcrumb-social.d.ts +2 -24
- package/dist/article-breadcrumb-social.js +57 -73
- package/dist/article-compact-toc.cjs +1 -1
- package/dist/article-compact-toc.js +1 -1
- package/dist/article-sidebar-sticky.cjs +73 -26
- package/dist/article-sidebar-sticky.js +73 -26
- package/dist/blog-horizontal-timeline.cjs +7 -4
- package/dist/blog-horizontal-timeline.js +7 -4
- package/dist/faq-split-hero.cjs +704 -0
- package/dist/faq-split-hero.d.cts +118 -0
- package/dist/faq-split-hero.d.ts +118 -0
- package/dist/faq-split-hero.js +682 -0
- package/dist/feature-badge-grid-six.cjs +1 -1
- package/dist/feature-badge-grid-six.js +1 -1
- package/dist/feature-card-grid-linked.cjs +92 -22
- package/dist/feature-card-grid-linked.js +92 -22
- package/dist/feature-carousel-progress.cjs +1 -1
- package/dist/feature-carousel-progress.js +1 -1
- package/dist/feature-checklist-image.cjs +88 -15
- package/dist/feature-checklist-image.js +88 -15
- package/dist/feature-checklist-three-column.cjs +1 -1
- package/dist/feature-checklist-three-column.js +1 -1
- package/dist/feature-icon-grid-accent.cjs +50 -8
- package/dist/feature-icon-grid-accent.js +50 -8
- package/dist/feature-icon-grid-bordered.cjs +84 -14
- package/dist/feature-icon-grid-bordered.js +84 -14
- package/dist/feature-icon-tabs-content.cjs +217 -84
- package/dist/feature-icon-tabs-content.js +217 -84
- package/dist/feature-image-overlay-badge.cjs +106 -33
- package/dist/feature-image-overlay-badge.js +106 -33
- package/dist/feature-numbered-cards.cjs +154 -35
- package/dist/feature-numbered-cards.js +154 -35
- package/dist/feature-showcase.cjs +67 -71
- package/dist/feature-showcase.d.cts +1 -5
- package/dist/feature-showcase.d.ts +1 -5
- package/dist/feature-showcase.js +68 -72
- package/dist/feature-split-image-reverse.cjs +90 -15
- package/dist/feature-split-image-reverse.js +90 -15
- package/dist/feature-split-image.cjs +87 -15
- package/dist/feature-split-image.js +87 -15
- package/dist/feature-stats-highlight.cjs +2 -2
- package/dist/feature-stats-highlight.js +2 -2
- package/dist/feature-tabbed-content-image.cjs +207 -72
- package/dist/feature-tabbed-content-image.js +207 -72
- package/dist/feature-three-column-values.cjs +107 -14
- package/dist/feature-three-column-values.js +107 -14
- package/dist/registry.cjs +1460 -461
- package/dist/registry.js +1460 -461
- package/package.json +1 -1
package/dist/registry.cjs
CHANGED
|
@@ -20331,7 +20331,6 @@ function FeatureShowcase({
|
|
|
20331
20331
|
slideClassName,
|
|
20332
20332
|
contentClassName,
|
|
20333
20333
|
mediaClassName,
|
|
20334
|
-
arrowClassName,
|
|
20335
20334
|
equalizeOnMobile,
|
|
20336
20335
|
stretchMediaOnMobile,
|
|
20337
20336
|
background,
|
|
@@ -20340,10 +20339,21 @@ function FeatureShowcase({
|
|
|
20340
20339
|
patternOpacity,
|
|
20341
20340
|
patternClassName
|
|
20342
20341
|
}) {
|
|
20343
|
-
const
|
|
20344
|
-
|
|
20345
|
-
|
|
20346
|
-
)
|
|
20342
|
+
const [api, setApi] = React52__namespace.useState();
|
|
20343
|
+
const [canScrollPrevious, setCanScrollPrevious] = React52__namespace.useState(false);
|
|
20344
|
+
const [canScrollNext, setCanScrollNext] = React52__namespace.useState(false);
|
|
20345
|
+
React52__namespace.useEffect(() => {
|
|
20346
|
+
if (!api) return;
|
|
20347
|
+
const updateScrollState = () => {
|
|
20348
|
+
setCanScrollPrevious(api.canScrollPrev());
|
|
20349
|
+
setCanScrollNext(api.canScrollNext());
|
|
20350
|
+
};
|
|
20351
|
+
updateScrollState();
|
|
20352
|
+
api.on("select", updateScrollState);
|
|
20353
|
+
return () => {
|
|
20354
|
+
api.off("select", updateScrollState);
|
|
20355
|
+
};
|
|
20356
|
+
}, [api]);
|
|
20347
20357
|
const [mobileSlideHeight, setMobileSlideHeight] = React52.useState(
|
|
20348
20358
|
null
|
|
20349
20359
|
);
|
|
@@ -20386,7 +20396,7 @@ function FeatureShowcase({
|
|
|
20386
20396
|
}, [equalizeOnMobile, items]);
|
|
20387
20397
|
const carouselContent = React52.useMemo(() => {
|
|
20388
20398
|
if (!items || items.length === 0) return null;
|
|
20389
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(Carousel, { className: carouselClassName, children: [
|
|
20399
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Carousel, { className: carouselClassName, setApi, children: [
|
|
20390
20400
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-18 md:pb-24", children: /* @__PURE__ */ jsxRuntime.jsx(CarouselContent, { className: "ease-in", children: items.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsx(CarouselItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20391
20401
|
"div",
|
|
20392
20402
|
{
|
|
@@ -20415,15 +20425,14 @@ function FeatureShowcase({
|
|
|
20415
20425
|
}
|
|
20416
20426
|
) }, `slide-${itemIndex}`)) }) }),
|
|
20417
20427
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20418
|
-
|
|
20428
|
+
CarouselPagination,
|
|
20419
20429
|
{
|
|
20420
|
-
|
|
20421
|
-
|
|
20422
|
-
|
|
20423
|
-
|
|
20424
|
-
|
|
20425
|
-
|
|
20426
|
-
className: cn(baseArrowClassName, "right-0", arrowClassName)
|
|
20430
|
+
onPrevious: () => api?.scrollPrev(),
|
|
20431
|
+
onNext: () => api?.scrollNext(),
|
|
20432
|
+
canScrollPrevious,
|
|
20433
|
+
canScrollNext,
|
|
20434
|
+
className: "absolute bottom-4 right-0 md:bottom-6",
|
|
20435
|
+
buttonClassName: "size-12 rounded-full border border-current bg-transparent text-current shadow-sm hover:bg-current/10"
|
|
20427
20436
|
}
|
|
20428
20437
|
)
|
|
20429
20438
|
] });
|
|
@@ -20436,8 +20445,9 @@ function FeatureShowcase({
|
|
|
20436
20445
|
contentClassName,
|
|
20437
20446
|
mediaWrapperClassName,
|
|
20438
20447
|
mediaClassName,
|
|
20439
|
-
|
|
20440
|
-
|
|
20448
|
+
api,
|
|
20449
|
+
canScrollPrevious,
|
|
20450
|
+
canScrollNext
|
|
20441
20451
|
]);
|
|
20442
20452
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20443
20453
|
Section,
|
|
@@ -20473,7 +20483,7 @@ function FeatureSplitImage({
|
|
|
20473
20483
|
imageClassName,
|
|
20474
20484
|
optixFlowConfig,
|
|
20475
20485
|
background,
|
|
20476
|
-
spacing,
|
|
20486
|
+
spacing = "py-6 md:py-32",
|
|
20477
20487
|
pattern,
|
|
20478
20488
|
patternOpacity,
|
|
20479
20489
|
patternClassName
|
|
@@ -20490,11 +20500,20 @@ function FeatureSplitImage({
|
|
|
20490
20500
|
className: actionClassName,
|
|
20491
20501
|
...pressableProps
|
|
20492
20502
|
} = action;
|
|
20493
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20494
|
-
|
|
20495
|
-
|
|
20496
|
-
|
|
20497
|
-
|
|
20503
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20504
|
+
Pressable,
|
|
20505
|
+
{
|
|
20506
|
+
className: actionClassName,
|
|
20507
|
+
asButton: true,
|
|
20508
|
+
...pressableProps,
|
|
20509
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20510
|
+
icon,
|
|
20511
|
+
label,
|
|
20512
|
+
iconAfter
|
|
20513
|
+
] })
|
|
20514
|
+
},
|
|
20515
|
+
index
|
|
20516
|
+
);
|
|
20498
20517
|
});
|
|
20499
20518
|
}, [actionsSlot, actions]);
|
|
20500
20519
|
const imageContent = React52.useMemo(() => {
|
|
@@ -20505,7 +20524,10 @@ function FeatureSplitImage({
|
|
|
20505
20524
|
{
|
|
20506
20525
|
src: imageSrc,
|
|
20507
20526
|
alt: imageAlt || "",
|
|
20508
|
-
className: cn(
|
|
20527
|
+
className: cn(
|
|
20528
|
+
"max-h-96 w-full rounded-md object-cover",
|
|
20529
|
+
imageClassName
|
|
20530
|
+
),
|
|
20509
20531
|
loading: "lazy",
|
|
20510
20532
|
optixFlowConfig
|
|
20511
20533
|
}
|
|
@@ -20521,14 +20543,74 @@ function FeatureSplitImage({
|
|
|
20521
20543
|
patternClassName,
|
|
20522
20544
|
className,
|
|
20523
20545
|
containerClassName,
|
|
20524
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20525
|
-
|
|
20526
|
-
|
|
20527
|
-
|
|
20528
|
-
|
|
20529
|
-
|
|
20530
|
-
|
|
20531
|
-
|
|
20546
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20547
|
+
"div",
|
|
20548
|
+
{
|
|
20549
|
+
className: cn("grid items-center gap-8 lg:grid-cols-2", gridClassName),
|
|
20550
|
+
children: [
|
|
20551
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
20552
|
+
"div",
|
|
20553
|
+
{
|
|
20554
|
+
className: cn(
|
|
20555
|
+
"flex flex-col items-center text-center lg:items-start lg:text-left",
|
|
20556
|
+
contentClassName
|
|
20557
|
+
),
|
|
20558
|
+
children: [
|
|
20559
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20560
|
+
"h2",
|
|
20561
|
+
{
|
|
20562
|
+
className: cn(
|
|
20563
|
+
"my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl",
|
|
20564
|
+
titleClassName
|
|
20565
|
+
),
|
|
20566
|
+
children: title
|
|
20567
|
+
}
|
|
20568
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
20569
|
+
"div",
|
|
20570
|
+
{
|
|
20571
|
+
className: cn(
|
|
20572
|
+
"my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl",
|
|
20573
|
+
titleClassName
|
|
20574
|
+
),
|
|
20575
|
+
children: title
|
|
20576
|
+
}
|
|
20577
|
+
)),
|
|
20578
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20579
|
+
"p",
|
|
20580
|
+
{
|
|
20581
|
+
className: cn(
|
|
20582
|
+
"mb-8 max-w-xl text-muted-foreground lg:text-lg",
|
|
20583
|
+
descriptionClassName
|
|
20584
|
+
),
|
|
20585
|
+
children: description
|
|
20586
|
+
}
|
|
20587
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
20588
|
+
"div",
|
|
20589
|
+
{
|
|
20590
|
+
className: cn(
|
|
20591
|
+
"mb-8 max-w-xl text-muted-foreground lg:text-lg",
|
|
20592
|
+
descriptionClassName
|
|
20593
|
+
),
|
|
20594
|
+
children: description
|
|
20595
|
+
}
|
|
20596
|
+
)),
|
|
20597
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20598
|
+
"div",
|
|
20599
|
+
{
|
|
20600
|
+
className: cn(
|
|
20601
|
+
"flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start",
|
|
20602
|
+
actionsClassName
|
|
20603
|
+
),
|
|
20604
|
+
children: actionsContent
|
|
20605
|
+
}
|
|
20606
|
+
)
|
|
20607
|
+
]
|
|
20608
|
+
}
|
|
20609
|
+
),
|
|
20610
|
+
imageContent
|
|
20611
|
+
]
|
|
20612
|
+
}
|
|
20613
|
+
)
|
|
20532
20614
|
}
|
|
20533
20615
|
);
|
|
20534
20616
|
}
|
|
@@ -20550,7 +20632,7 @@ function FeatureSplitImageReverse({
|
|
|
20550
20632
|
actionsClassName,
|
|
20551
20633
|
optixFlowConfig,
|
|
20552
20634
|
background,
|
|
20553
|
-
spacing,
|
|
20635
|
+
spacing = "py-6 md:py-32",
|
|
20554
20636
|
pattern,
|
|
20555
20637
|
patternOpacity,
|
|
20556
20638
|
patternClassName
|
|
@@ -20567,11 +20649,20 @@ function FeatureSplitImageReverse({
|
|
|
20567
20649
|
className: actionClassName,
|
|
20568
20650
|
...pressableProps
|
|
20569
20651
|
} = action;
|
|
20570
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20571
|
-
|
|
20572
|
-
|
|
20573
|
-
|
|
20574
|
-
|
|
20652
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20653
|
+
Pressable,
|
|
20654
|
+
{
|
|
20655
|
+
className: actionClassName,
|
|
20656
|
+
asButton: true,
|
|
20657
|
+
...pressableProps,
|
|
20658
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20659
|
+
icon,
|
|
20660
|
+
label,
|
|
20661
|
+
iconAfter
|
|
20662
|
+
] })
|
|
20663
|
+
},
|
|
20664
|
+
index
|
|
20665
|
+
);
|
|
20575
20666
|
});
|
|
20576
20667
|
}, [actionsSlot, actions]);
|
|
20577
20668
|
const imageContent = React52.useMemo(() => {
|
|
@@ -20582,7 +20673,10 @@ function FeatureSplitImageReverse({
|
|
|
20582
20673
|
{
|
|
20583
20674
|
src: imageSrc,
|
|
20584
20675
|
alt: imageAlt || "",
|
|
20585
|
-
className: cn(
|
|
20676
|
+
className: cn(
|
|
20677
|
+
"max-h-96 w-full rounded-md object-cover",
|
|
20678
|
+
imageClassName
|
|
20679
|
+
),
|
|
20586
20680
|
loading: "lazy",
|
|
20587
20681
|
optixFlowConfig
|
|
20588
20682
|
}
|
|
@@ -20598,14 +20692,77 @@ function FeatureSplitImageReverse({
|
|
|
20598
20692
|
patternClassName,
|
|
20599
20693
|
className,
|
|
20600
20694
|
containerClassName,
|
|
20601
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20602
|
-
|
|
20603
|
-
|
|
20604
|
-
|
|
20605
|
-
|
|
20606
|
-
|
|
20607
|
-
|
|
20608
|
-
|
|
20695
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20696
|
+
"div",
|
|
20697
|
+
{
|
|
20698
|
+
className: cn(
|
|
20699
|
+
"grid items-center gap-8 md:gap-16 lg:grid-cols-2",
|
|
20700
|
+
gridClassName
|
|
20701
|
+
),
|
|
20702
|
+
children: [
|
|
20703
|
+
imageContent,
|
|
20704
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
20705
|
+
"div",
|
|
20706
|
+
{
|
|
20707
|
+
className: cn(
|
|
20708
|
+
"flex flex-col items-center text-center lg:items-start lg:text-left",
|
|
20709
|
+
contentClassName
|
|
20710
|
+
),
|
|
20711
|
+
children: [
|
|
20712
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20713
|
+
"h2",
|
|
20714
|
+
{
|
|
20715
|
+
className: cn(
|
|
20716
|
+
"my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl",
|
|
20717
|
+
titleClassName
|
|
20718
|
+
),
|
|
20719
|
+
children: title
|
|
20720
|
+
}
|
|
20721
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
20722
|
+
"div",
|
|
20723
|
+
{
|
|
20724
|
+
className: cn(
|
|
20725
|
+
"my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl",
|
|
20726
|
+
titleClassName
|
|
20727
|
+
),
|
|
20728
|
+
children: title
|
|
20729
|
+
}
|
|
20730
|
+
)),
|
|
20731
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20732
|
+
"p",
|
|
20733
|
+
{
|
|
20734
|
+
className: cn(
|
|
20735
|
+
"mb-8 max-w-xl text-muted-foreground lg:text-lg",
|
|
20736
|
+
descriptionClassName
|
|
20737
|
+
),
|
|
20738
|
+
children: description
|
|
20739
|
+
}
|
|
20740
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
20741
|
+
"div",
|
|
20742
|
+
{
|
|
20743
|
+
className: cn(
|
|
20744
|
+
"mb-8 max-w-xl text-muted-foreground lg:text-lg",
|
|
20745
|
+
descriptionClassName
|
|
20746
|
+
),
|
|
20747
|
+
children: description
|
|
20748
|
+
}
|
|
20749
|
+
)),
|
|
20750
|
+
(actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20751
|
+
"div",
|
|
20752
|
+
{
|
|
20753
|
+
className: cn(
|
|
20754
|
+
"flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start",
|
|
20755
|
+
actionsClassName
|
|
20756
|
+
),
|
|
20757
|
+
children: actionsContent
|
|
20758
|
+
}
|
|
20759
|
+
)
|
|
20760
|
+
]
|
|
20761
|
+
}
|
|
20762
|
+
)
|
|
20763
|
+
]
|
|
20764
|
+
}
|
|
20765
|
+
)
|
|
20609
20766
|
}
|
|
20610
20767
|
);
|
|
20611
20768
|
}
|
|
@@ -20621,7 +20778,7 @@ function FeatureIconGridBordered({
|
|
|
20621
20778
|
gridClassName,
|
|
20622
20779
|
cardClassName,
|
|
20623
20780
|
background,
|
|
20624
|
-
spacing,
|
|
20781
|
+
spacing = "py-6 md:py-32",
|
|
20625
20782
|
pattern,
|
|
20626
20783
|
patternOpacity,
|
|
20627
20784
|
patternClassName
|
|
@@ -20639,18 +20796,67 @@ function FeatureIconGridBordered({
|
|
|
20639
20796
|
return features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20640
20797
|
"div",
|
|
20641
20798
|
{
|
|
20642
|
-
className: cn(
|
|
20799
|
+
className: cn(
|
|
20800
|
+
"relative flex gap-3 rounded-lg border-dashed md:block md:border-l md:p-5",
|
|
20801
|
+
cardClassName,
|
|
20802
|
+
feature.className
|
|
20803
|
+
),
|
|
20643
20804
|
children: [
|
|
20644
|
-
(feature.icon || feature.iconName) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20805
|
+
(feature.icon || feature.iconName) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20806
|
+
"span",
|
|
20807
|
+
{
|
|
20808
|
+
className: cn(
|
|
20809
|
+
"mb-8 flex size-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground md:size-12",
|
|
20810
|
+
feature.iconClassName
|
|
20811
|
+
),
|
|
20812
|
+
children: renderIcon(feature)
|
|
20813
|
+
}
|
|
20814
|
+
),
|
|
20645
20815
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
20646
|
-
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20647
|
-
|
|
20648
|
-
|
|
20649
|
-
|
|
20650
|
-
|
|
20651
|
-
|
|
20652
|
-
|
|
20653
|
-
|
|
20816
|
+
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20817
|
+
"h3",
|
|
20818
|
+
{
|
|
20819
|
+
className: cn(
|
|
20820
|
+
"font-medium md:mb-2 md:text-xl",
|
|
20821
|
+
feature.titleClassName
|
|
20822
|
+
),
|
|
20823
|
+
children: [
|
|
20824
|
+
feature.title,
|
|
20825
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
|
|
20826
|
+
]
|
|
20827
|
+
}
|
|
20828
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20829
|
+
"div",
|
|
20830
|
+
{
|
|
20831
|
+
className: cn(
|
|
20832
|
+
"font-medium md:mb-2 md:text-xl",
|
|
20833
|
+
feature.titleClassName
|
|
20834
|
+
),
|
|
20835
|
+
children: [
|
|
20836
|
+
feature.title,
|
|
20837
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
|
|
20838
|
+
]
|
|
20839
|
+
}
|
|
20840
|
+
)),
|
|
20841
|
+
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20842
|
+
"p",
|
|
20843
|
+
{
|
|
20844
|
+
className: cn(
|
|
20845
|
+
"text-sm md:text-base",
|
|
20846
|
+
feature.descriptionClassName
|
|
20847
|
+
),
|
|
20848
|
+
children: feature.description
|
|
20849
|
+
}
|
|
20850
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
20851
|
+
"div",
|
|
20852
|
+
{
|
|
20853
|
+
className: cn(
|
|
20854
|
+
"text-sm md:text-base",
|
|
20855
|
+
feature.descriptionClassName
|
|
20856
|
+
),
|
|
20857
|
+
children: feature.description
|
|
20858
|
+
}
|
|
20859
|
+
))
|
|
20654
20860
|
] })
|
|
20655
20861
|
]
|
|
20656
20862
|
},
|
|
@@ -20668,9 +20874,30 @@ function FeatureIconGridBordered({
|
|
|
20668
20874
|
className,
|
|
20669
20875
|
containerClassName,
|
|
20670
20876
|
children: [
|
|
20671
|
-
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-4 text-xs
|
|
20672
|
-
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20673
|
-
|
|
20877
|
+
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-4 text-xs ", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 text-xs ", labelClassName), children: label })),
|
|
20878
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20879
|
+
"h2",
|
|
20880
|
+
{
|
|
20881
|
+
className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
|
|
20882
|
+
children: title
|
|
20883
|
+
}
|
|
20884
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
20885
|
+
"div",
|
|
20886
|
+
{
|
|
20887
|
+
className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
|
|
20888
|
+
children: title
|
|
20889
|
+
}
|
|
20890
|
+
)),
|
|
20891
|
+
(featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20892
|
+
"div",
|
|
20893
|
+
{
|
|
20894
|
+
className: cn(
|
|
20895
|
+
"mt-14 grid gap-6 md:grid-cols-2 lg:mt-20 lg:grid-cols-4",
|
|
20896
|
+
gridClassName
|
|
20897
|
+
),
|
|
20898
|
+
children: featuresContent
|
|
20899
|
+
}
|
|
20900
|
+
)
|
|
20674
20901
|
]
|
|
20675
20902
|
}
|
|
20676
20903
|
);
|
|
@@ -20696,7 +20923,7 @@ function FeatureChecklistImage({
|
|
|
20696
20923
|
checklistClassName,
|
|
20697
20924
|
optixFlowConfig,
|
|
20698
20925
|
background,
|
|
20699
|
-
spacing,
|
|
20926
|
+
spacing = "py-6 md:py-32",
|
|
20700
20927
|
pattern,
|
|
20701
20928
|
patternOpacity,
|
|
20702
20929
|
patternClassName
|
|
@@ -20749,7 +20976,10 @@ function FeatureChecklistImage({
|
|
|
20749
20976
|
{
|
|
20750
20977
|
src: imageSrc,
|
|
20751
20978
|
alt: imageAlt || "Feature illustration",
|
|
20752
|
-
className: cn(
|
|
20979
|
+
className: cn(
|
|
20980
|
+
"max-h-96 w-full rounded-lg object-cover md:max-h-[500px] md:w-1/2",
|
|
20981
|
+
imageClassName
|
|
20982
|
+
),
|
|
20753
20983
|
loading: "lazy",
|
|
20754
20984
|
optixFlowConfig
|
|
20755
20985
|
}
|
|
@@ -20763,10 +20993,17 @@ function FeatureChecklistImage({
|
|
|
20763
20993
|
const content = isString ? item : item.content;
|
|
20764
20994
|
const iconElement = isString ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 16 }) : item.icon ?? (item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 16 }));
|
|
20765
20995
|
const itemClassName = isString ? void 0 : item.className;
|
|
20766
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20767
|
-
|
|
20768
|
-
|
|
20769
|
-
|
|
20996
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20997
|
+
"li",
|
|
20998
|
+
{
|
|
20999
|
+
className: cn("flex items-center gap-3", itemClassName),
|
|
21000
|
+
children: [
|
|
21001
|
+
iconElement,
|
|
21002
|
+
content
|
|
21003
|
+
]
|
|
21004
|
+
},
|
|
21005
|
+
index
|
|
21006
|
+
);
|
|
20770
21007
|
});
|
|
20771
21008
|
}, [checklistSlot, checklistItems]);
|
|
20772
21009
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20779,15 +21016,78 @@ function FeatureChecklistImage({
|
|
|
20779
21016
|
patternClassName,
|
|
20780
21017
|
className,
|
|
20781
21018
|
containerClassName: cn("max-w-6xl", containerClassName),
|
|
20782
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20783
|
-
|
|
20784
|
-
|
|
20785
|
-
|
|
20786
|
-
|
|
20787
|
-
|
|
20788
|
-
|
|
20789
|
-
|
|
20790
|
-
|
|
21019
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21020
|
+
"div",
|
|
21021
|
+
{
|
|
21022
|
+
className: cn(
|
|
21023
|
+
"flex flex-col gap-12 md:flex-row",
|
|
21024
|
+
contentWrapperClassName
|
|
21025
|
+
),
|
|
21026
|
+
children: [
|
|
21027
|
+
imageContent,
|
|
21028
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("lg:p-10", contentClassName), children: [
|
|
21029
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21030
|
+
"h2",
|
|
21031
|
+
{
|
|
21032
|
+
className: cn(
|
|
21033
|
+
"text-3xl font-medium text-balance md:text-5xl",
|
|
21034
|
+
titleClassName
|
|
21035
|
+
),
|
|
21036
|
+
children: title
|
|
21037
|
+
}
|
|
21038
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21039
|
+
"div",
|
|
21040
|
+
{
|
|
21041
|
+
className: cn(
|
|
21042
|
+
"text-3xl font-medium text-balance md:text-5xl",
|
|
21043
|
+
titleClassName
|
|
21044
|
+
),
|
|
21045
|
+
children: title
|
|
21046
|
+
}
|
|
21047
|
+
)),
|
|
21048
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21049
|
+
"p",
|
|
21050
|
+
{
|
|
21051
|
+
className: cn(
|
|
21052
|
+
"mt-1 text-muted-foreground md:mt-6",
|
|
21053
|
+
descriptionClassName
|
|
21054
|
+
),
|
|
21055
|
+
children: description
|
|
21056
|
+
}
|
|
21057
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21058
|
+
"div",
|
|
21059
|
+
{
|
|
21060
|
+
className: cn(
|
|
21061
|
+
"mt-1 text-muted-foreground md:mt-6",
|
|
21062
|
+
descriptionClassName
|
|
21063
|
+
),
|
|
21064
|
+
children: description
|
|
21065
|
+
}
|
|
21066
|
+
)),
|
|
21067
|
+
actionsContent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21068
|
+
"div",
|
|
21069
|
+
{
|
|
21070
|
+
className: cn(
|
|
21071
|
+
"flex flex-wrap items-center gap-2",
|
|
21072
|
+
actionsClassName
|
|
21073
|
+
),
|
|
21074
|
+
children: actionsContent
|
|
21075
|
+
}
|
|
21076
|
+
),
|
|
21077
|
+
checklistContent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21078
|
+
"ul",
|
|
21079
|
+
{
|
|
21080
|
+
className: cn(
|
|
21081
|
+
"mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0",
|
|
21082
|
+
checklistClassName
|
|
21083
|
+
),
|
|
21084
|
+
children: checklistContent
|
|
21085
|
+
}
|
|
21086
|
+
)
|
|
21087
|
+
] })
|
|
21088
|
+
]
|
|
21089
|
+
}
|
|
21090
|
+
)
|
|
20791
21091
|
}
|
|
20792
21092
|
);
|
|
20793
21093
|
}
|
|
@@ -20863,7 +21163,7 @@ function FeatureCarouselProgress({
|
|
|
20863
21163
|
{
|
|
20864
21164
|
className: "basis-full md:basis-1/2 lg:basis-1/3",
|
|
20865
21165
|
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: [
|
|
20866
|
-
(slide.icon || slide.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-
|
|
21166
|
+
(slide.icon || slide.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-primary text-primary-foreground lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
|
|
20867
21167
|
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 })),
|
|
20868
21168
|
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 }))
|
|
20869
21169
|
] }) }) }) })
|
|
@@ -20920,27 +21220,30 @@ function FeatureCardGridLinked({
|
|
|
20920
21220
|
cardClassName,
|
|
20921
21221
|
optixFlowConfig,
|
|
20922
21222
|
background,
|
|
20923
|
-
spacing,
|
|
21223
|
+
spacing = "py-6 md:py-32",
|
|
20924
21224
|
pattern,
|
|
20925
21225
|
patternOpacity,
|
|
20926
21226
|
patternClassName
|
|
20927
21227
|
}) {
|
|
20928
|
-
const renderImage = React52.useCallback(
|
|
20929
|
-
|
|
20930
|
-
|
|
20931
|
-
|
|
20932
|
-
|
|
20933
|
-
|
|
20934
|
-
|
|
20935
|
-
|
|
20936
|
-
|
|
20937
|
-
|
|
20938
|
-
|
|
20939
|
-
|
|
20940
|
-
|
|
20941
|
-
|
|
20942
|
-
|
|
20943
|
-
|
|
21228
|
+
const renderImage = React52.useCallback(
|
|
21229
|
+
(feature, imageAlt) => {
|
|
21230
|
+
if (feature.imageSlot) return feature.imageSlot;
|
|
21231
|
+
if (feature.image) {
|
|
21232
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21233
|
+
img.Img,
|
|
21234
|
+
{
|
|
21235
|
+
src: feature.image,
|
|
21236
|
+
alt: imageAlt,
|
|
21237
|
+
className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
|
|
21238
|
+
loading: "lazy",
|
|
21239
|
+
optixFlowConfig
|
|
21240
|
+
}
|
|
21241
|
+
);
|
|
21242
|
+
}
|
|
21243
|
+
return null;
|
|
21244
|
+
},
|
|
21245
|
+
[optixFlowConfig]
|
|
21246
|
+
);
|
|
20944
21247
|
const featuresContent = React52.useMemo(() => {
|
|
20945
21248
|
if (featuresSlot) return featuresSlot;
|
|
20946
21249
|
if (!features || features.length === 0) return null;
|
|
@@ -20950,16 +21253,56 @@ function FeatureCardGridLinked({
|
|
|
20950
21253
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20951
21254
|
"div",
|
|
20952
21255
|
{
|
|
20953
|
-
className: cn(
|
|
21256
|
+
className: cn(
|
|
21257
|
+
"flex flex-col justify-between rounded-lg bg-muted border",
|
|
21258
|
+
cardClassName,
|
|
21259
|
+
feature.className
|
|
21260
|
+
),
|
|
20954
21261
|
children: [
|
|
20955
21262
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between gap-10 border-b", children: [
|
|
20956
21263
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between gap-8 py-6 pl-4 md:gap-14 md:py-10 md:pl-8 lg:justify-normal", children: [
|
|
20957
|
-
feature.label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20958
|
-
|
|
21264
|
+
feature.label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21265
|
+
"span",
|
|
21266
|
+
{
|
|
21267
|
+
className: cn(
|
|
21268
|
+
"font-bold text-xs uppercase opacity-75",
|
|
21269
|
+
feature.labelClassName
|
|
21270
|
+
),
|
|
21271
|
+
children: feature.label
|
|
21272
|
+
}
|
|
21273
|
+
),
|
|
21274
|
+
feature.heading && /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: feature.url, children: typeof feature.heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21275
|
+
"h3",
|
|
21276
|
+
{
|
|
21277
|
+
className: cn(
|
|
21278
|
+
"text-xl transition-all hover:opacity-80 md:text-2xl font-semibold leading-snug tracking-tighter",
|
|
21279
|
+
feature.headingClassName
|
|
21280
|
+
),
|
|
21281
|
+
children: feature.heading
|
|
21282
|
+
}
|
|
21283
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21284
|
+
"div",
|
|
21285
|
+
{
|
|
21286
|
+
className: cn(
|
|
21287
|
+
"text-xl transition-all hover:opacity-80 md:text-2xl font-semibold leading-snug tracking-tighter",
|
|
21288
|
+
feature.headingClassName
|
|
21289
|
+
),
|
|
21290
|
+
children: feature.heading
|
|
21291
|
+
}
|
|
21292
|
+
) })
|
|
20959
21293
|
] }),
|
|
20960
21294
|
/* @__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) }) })
|
|
20961
21295
|
] }),
|
|
20962
|
-
feature.description && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21296
|
+
feature.description && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21297
|
+
"p",
|
|
21298
|
+
{
|
|
21299
|
+
className: cn(
|
|
21300
|
+
"p-4 text-muted-foreground md:p-8",
|
|
21301
|
+
feature.descriptionClassName
|
|
21302
|
+
),
|
|
21303
|
+
children: feature.description
|
|
21304
|
+
}
|
|
21305
|
+
)
|
|
20963
21306
|
]
|
|
20964
21307
|
},
|
|
20965
21308
|
featureKey
|
|
@@ -20977,7 +21320,34 @@ function FeatureCardGridLinked({
|
|
|
20977
21320
|
className,
|
|
20978
21321
|
containerClassName,
|
|
20979
21322
|
children: [
|
|
20980
|
-
title && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21323
|
+
title && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21324
|
+
"div",
|
|
21325
|
+
{
|
|
21326
|
+
className: cn(
|
|
21327
|
+
"mx-auto mb-16 max-w-3xl text-center",
|
|
21328
|
+
titleWrapperClassName
|
|
21329
|
+
),
|
|
21330
|
+
children: typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21331
|
+
"h2",
|
|
21332
|
+
{
|
|
21333
|
+
className: cn(
|
|
21334
|
+
"text-4xl font-medium text-pretty lg:text-5xl",
|
|
21335
|
+
titleClassName
|
|
21336
|
+
),
|
|
21337
|
+
children: title
|
|
21338
|
+
}
|
|
21339
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21340
|
+
"div",
|
|
21341
|
+
{
|
|
21342
|
+
className: cn(
|
|
21343
|
+
"text-4xl font-medium text-pretty lg:text-5xl",
|
|
21344
|
+
titleClassName
|
|
21345
|
+
),
|
|
21346
|
+
children: title
|
|
21347
|
+
}
|
|
21348
|
+
)
|
|
21349
|
+
}
|
|
21350
|
+
),
|
|
20981
21351
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid gap-8 lg:grid-cols-2", gridClassName), children: featuresContent })
|
|
20982
21352
|
]
|
|
20983
21353
|
}
|
|
@@ -21001,27 +21371,45 @@ function FeatureNumberedCards({
|
|
|
21001
21371
|
patternOpacity,
|
|
21002
21372
|
patternClassName
|
|
21003
21373
|
}) {
|
|
21004
|
-
const renderChecklistItems = React52.useCallback(
|
|
21005
|
-
|
|
21006
|
-
|
|
21007
|
-
|
|
21008
|
-
|
|
21009
|
-
|
|
21010
|
-
|
|
21011
|
-
|
|
21012
|
-
|
|
21013
|
-
|
|
21014
|
-
|
|
21015
|
-
|
|
21016
|
-
|
|
21017
|
-
|
|
21018
|
-
|
|
21019
|
-
|
|
21020
|
-
|
|
21021
|
-
|
|
21022
|
-
|
|
21023
|
-
|
|
21024
|
-
|
|
21374
|
+
const renderChecklistItems = React52.useCallback(
|
|
21375
|
+
(feature) => {
|
|
21376
|
+
if (feature.checklistSlot) return feature.checklistSlot;
|
|
21377
|
+
if (!feature.checklistItems || feature.checklistItems.length === 0)
|
|
21378
|
+
return null;
|
|
21379
|
+
return feature.checklistItems.map((item, itemIndex) => {
|
|
21380
|
+
const isString = typeof item === "string";
|
|
21381
|
+
const content = isString ? item : item.content;
|
|
21382
|
+
const iconElement = isString ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21383
|
+
DynamicIcon,
|
|
21384
|
+
{
|
|
21385
|
+
name: "lucide/check-circle",
|
|
21386
|
+
size: 16,
|
|
21387
|
+
className: "mt-0.5 shrink-0 sm:mt-1"
|
|
21388
|
+
}
|
|
21389
|
+
) : item.icon ?? (item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21390
|
+
DynamicIcon,
|
|
21391
|
+
{
|
|
21392
|
+
name: item.iconName,
|
|
21393
|
+
size: 16,
|
|
21394
|
+
className: "mt-0.5 shrink-0 sm:mt-1"
|
|
21395
|
+
}
|
|
21396
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21397
|
+
DynamicIcon,
|
|
21398
|
+
{
|
|
21399
|
+
name: "lucide/check-circle",
|
|
21400
|
+
size: 16,
|
|
21401
|
+
className: "mt-0.5 shrink-0 sm:mt-1"
|
|
21402
|
+
}
|
|
21403
|
+
));
|
|
21404
|
+
const itemClassName = isString ? void 0 : item.className;
|
|
21405
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: cn("flex gap-x-3", itemClassName), children: [
|
|
21406
|
+
iconElement,
|
|
21407
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm md:text-base", children: content })
|
|
21408
|
+
] }, itemIndex);
|
|
21409
|
+
});
|
|
21410
|
+
},
|
|
21411
|
+
[]
|
|
21412
|
+
);
|
|
21025
21413
|
const featuresContent = React52.useMemo(() => {
|
|
21026
21414
|
if (featuresSlot) return featuresSlot;
|
|
21027
21415
|
if (!features || features.length === 0) return null;
|
|
@@ -21035,7 +21423,7 @@ function FeatureNumberedCards({
|
|
|
21035
21423
|
{
|
|
21036
21424
|
src: feature.image,
|
|
21037
21425
|
alt: imageAlt,
|
|
21038
|
-
className: "h-full w-full object-cover",
|
|
21426
|
+
className: "h-full w-full object-cover rounded-tr-lg rounded-tl-lg md:rounded-tl-0 rounded-br-0 md:rounded-br-lg",
|
|
21039
21427
|
loading: "lazy",
|
|
21040
21428
|
optixFlowConfig
|
|
21041
21429
|
}
|
|
@@ -21043,19 +21431,111 @@ function FeatureNumberedCards({
|
|
|
21043
21431
|
}
|
|
21044
21432
|
return null;
|
|
21045
21433
|
};
|
|
21046
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21047
|
-
|
|
21048
|
-
|
|
21049
|
-
|
|
21050
|
-
|
|
21051
|
-
|
|
21052
|
-
|
|
21053
|
-
|
|
21054
|
-
|
|
21055
|
-
|
|
21056
|
-
|
|
21434
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21435
|
+
"div",
|
|
21436
|
+
{
|
|
21437
|
+
className: cn(
|
|
21438
|
+
"grid rounded-lg border md:grid-cols-2",
|
|
21439
|
+
cardClassName,
|
|
21440
|
+
feature.className
|
|
21441
|
+
),
|
|
21442
|
+
children: [
|
|
21443
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
21444
|
+
"div",
|
|
21445
|
+
{
|
|
21446
|
+
className: cn(
|
|
21447
|
+
"flex flex-col px-6 py-8 lg:px-8 lg:py-12 xl:px-12 xl:py-20",
|
|
21448
|
+
feature.contentClassName
|
|
21449
|
+
),
|
|
21450
|
+
children: [
|
|
21451
|
+
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21452
|
+
"h3",
|
|
21453
|
+
{
|
|
21454
|
+
className: cn(
|
|
21455
|
+
"mb-3 text-2xl font-medium sm:mb-5 md:text-3xl lg:text-4xl",
|
|
21456
|
+
titleClassName
|
|
21457
|
+
),
|
|
21458
|
+
children: feature.title
|
|
21459
|
+
}
|
|
21460
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21461
|
+
"div",
|
|
21462
|
+
{
|
|
21463
|
+
className: cn(
|
|
21464
|
+
"mb-3 text-2xl font-medium sm:mb-5 md:text-3xl lg:text-4xl",
|
|
21465
|
+
titleClassName
|
|
21466
|
+
),
|
|
21467
|
+
children: feature.title
|
|
21468
|
+
}
|
|
21469
|
+
)),
|
|
21470
|
+
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21471
|
+
"div",
|
|
21472
|
+
{
|
|
21473
|
+
className: cn(
|
|
21474
|
+
"mb-8 text-sm sm:mb-10 md:text-base",
|
|
21475
|
+
descriptionClassName
|
|
21476
|
+
),
|
|
21477
|
+
children: feature.description
|
|
21478
|
+
}
|
|
21479
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21480
|
+
"div",
|
|
21481
|
+
{
|
|
21482
|
+
className: cn(
|
|
21483
|
+
"mb-8 text-sm sm:mb-10 md:text-base",
|
|
21484
|
+
descriptionClassName
|
|
21485
|
+
),
|
|
21486
|
+
children: feature.description
|
|
21487
|
+
}
|
|
21488
|
+
)),
|
|
21489
|
+
feature.checklistItems && feature.checklistItems.length > 0 || feature.checklistSlot ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21490
|
+
"ul",
|
|
21491
|
+
{
|
|
21492
|
+
className: cn(
|
|
21493
|
+
"mt-auto space-y-2 sm:space-y-3",
|
|
21494
|
+
checklistClassName
|
|
21495
|
+
),
|
|
21496
|
+
children: renderChecklistItems(feature)
|
|
21497
|
+
}
|
|
21498
|
+
) : null
|
|
21499
|
+
]
|
|
21500
|
+
}
|
|
21501
|
+
),
|
|
21502
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
21503
|
+
"div",
|
|
21504
|
+
{
|
|
21505
|
+
className: cn(
|
|
21506
|
+
"relative order-first max-h-80 md:order-last md:max-h-[500px]",
|
|
21507
|
+
feature.imageWrapperClassName
|
|
21508
|
+
),
|
|
21509
|
+
children: [
|
|
21510
|
+
renderImage(),
|
|
21511
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21512
|
+
"span",
|
|
21513
|
+
{
|
|
21514
|
+
className: cn(
|
|
21515
|
+
"absolute top-5 left-5 flex size-6 items-center justify-center rounded-sm bg-primary font-mono text-xs text-primary-foreground md:top-10 md:left-10",
|
|
21516
|
+
badgeClassName
|
|
21517
|
+
),
|
|
21518
|
+
children: String(index + 1).padStart(2, "0")
|
|
21519
|
+
}
|
|
21520
|
+
)
|
|
21521
|
+
]
|
|
21522
|
+
}
|
|
21523
|
+
)
|
|
21524
|
+
]
|
|
21525
|
+
},
|
|
21526
|
+
index
|
|
21527
|
+
);
|
|
21057
21528
|
});
|
|
21058
|
-
}, [
|
|
21529
|
+
}, [
|
|
21530
|
+
featuresSlot,
|
|
21531
|
+
features,
|
|
21532
|
+
cardClassName,
|
|
21533
|
+
titleClassName,
|
|
21534
|
+
descriptionClassName,
|
|
21535
|
+
checklistClassName,
|
|
21536
|
+
badgeClassName,
|
|
21537
|
+
optixFlowConfig
|
|
21538
|
+
]);
|
|
21059
21539
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21060
21540
|
Section,
|
|
21061
21541
|
{
|
|
@@ -21066,7 +21546,16 @@ function FeatureNumberedCards({
|
|
|
21066
21546
|
patternClassName,
|
|
21067
21547
|
className,
|
|
21068
21548
|
containerClassName,
|
|
21069
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21549
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21550
|
+
"div",
|
|
21551
|
+
{
|
|
21552
|
+
className: cn(
|
|
21553
|
+
"space-y-4 md:space-y-10 rounded-lg border-none md:border md:bg-background p-0 md:p-10",
|
|
21554
|
+
cardsWrapperClassName
|
|
21555
|
+
),
|
|
21556
|
+
children: featuresContent
|
|
21557
|
+
}
|
|
21558
|
+
)
|
|
21070
21559
|
}
|
|
21071
21560
|
);
|
|
21072
21561
|
}
|
|
@@ -21099,12 +21588,21 @@ function FeatureIconGridAccent({
|
|
|
21099
21588
|
"div",
|
|
21100
21589
|
{
|
|
21101
21590
|
className: cn(
|
|
21102
|
-
"flex flex-col justify-between rounded-lg
|
|
21591
|
+
"flex flex-col justify-between rounded-lg p-6 md:min-h-[300px] md:p-8",
|
|
21103
21592
|
cardClassName,
|
|
21104
21593
|
feature.className
|
|
21105
21594
|
),
|
|
21106
21595
|
children: [
|
|
21107
|
-
iconElement && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21596
|
+
iconElement && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21597
|
+
"span",
|
|
21598
|
+
{
|
|
21599
|
+
className: cn(
|
|
21600
|
+
"mb-6 flex size-11 items-center justify-center rounded-full",
|
|
21601
|
+
feature.iconClassName
|
|
21602
|
+
),
|
|
21603
|
+
children: iconElement
|
|
21604
|
+
}
|
|
21605
|
+
),
|
|
21108
21606
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
21109
21607
|
feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-medium md:text-2xl", children: feature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-lg font-medium md:text-2xl", children: feature.title })),
|
|
21110
21608
|
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-muted-foreground", children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-muted-foreground", children: feature.description }))
|
|
@@ -21126,12 +21624,45 @@ function FeatureIconGridAccent({
|
|
|
21126
21624
|
className,
|
|
21127
21625
|
containerClassName,
|
|
21128
21626
|
children: [
|
|
21129
|
-
(label || title || description) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21130
|
-
|
|
21131
|
-
|
|
21132
|
-
|
|
21133
|
-
|
|
21134
|
-
|
|
21627
|
+
(label || title || description) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21628
|
+
"div",
|
|
21629
|
+
{
|
|
21630
|
+
className: cn("flex w-full flex-col items-center", headerClassName),
|
|
21631
|
+
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: [
|
|
21632
|
+
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: labelClassName, children: label })),
|
|
21633
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21634
|
+
"h2",
|
|
21635
|
+
{
|
|
21636
|
+
className: cn(
|
|
21637
|
+
"text-3xl font-medium md:text-5xl text-balance",
|
|
21638
|
+
titleClassName
|
|
21639
|
+
),
|
|
21640
|
+
children: title
|
|
21641
|
+
}
|
|
21642
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
|
|
21643
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21644
|
+
"p",
|
|
21645
|
+
{
|
|
21646
|
+
className: cn(
|
|
21647
|
+
"md:max-w-2xl text-balance",
|
|
21648
|
+
descriptionClassName
|
|
21649
|
+
),
|
|
21650
|
+
children: description
|
|
21651
|
+
}
|
|
21652
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
|
|
21653
|
+
] })
|
|
21654
|
+
}
|
|
21655
|
+
),
|
|
21656
|
+
featuresContent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21657
|
+
"div",
|
|
21658
|
+
{
|
|
21659
|
+
className: cn(
|
|
21660
|
+
"mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2",
|
|
21661
|
+
gridClassName
|
|
21662
|
+
),
|
|
21663
|
+
children: featuresContent
|
|
21664
|
+
}
|
|
21665
|
+
)
|
|
21135
21666
|
]
|
|
21136
21667
|
}
|
|
21137
21668
|
);
|
|
@@ -21148,24 +21679,78 @@ function FeatureThreeColumnValues({
|
|
|
21148
21679
|
gridClassName,
|
|
21149
21680
|
cardClassName,
|
|
21150
21681
|
background,
|
|
21151
|
-
spacing,
|
|
21682
|
+
spacing = "py-6 md:py-32",
|
|
21152
21683
|
pattern,
|
|
21153
21684
|
patternOpacity,
|
|
21154
21685
|
patternClassName
|
|
21155
21686
|
}) {
|
|
21156
|
-
const renderValueIcon = React52__namespace.useCallback(
|
|
21157
|
-
|
|
21158
|
-
|
|
21159
|
-
|
|
21160
|
-
|
|
21687
|
+
const renderValueIcon = React52__namespace.useCallback(
|
|
21688
|
+
(value) => {
|
|
21689
|
+
if (value.icon) return value.icon;
|
|
21690
|
+
if (value.iconName)
|
|
21691
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: value.iconName, size: 24 });
|
|
21692
|
+
return null;
|
|
21693
|
+
},
|
|
21694
|
+
[]
|
|
21695
|
+
);
|
|
21161
21696
|
const valuesContent = React52.useMemo(() => {
|
|
21162
21697
|
if (valuesSlot) return valuesSlot;
|
|
21163
21698
|
if (!values || values.length === 0) return null;
|
|
21164
|
-
return values.map((value, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21165
|
-
|
|
21166
|
-
|
|
21167
|
-
|
|
21168
|
-
|
|
21699
|
+
return values.map((value, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21700
|
+
"div",
|
|
21701
|
+
{
|
|
21702
|
+
className: cn(
|
|
21703
|
+
"rounded-lg bg-accent p-5",
|
|
21704
|
+
cardClassName,
|
|
21705
|
+
value.className
|
|
21706
|
+
),
|
|
21707
|
+
children: [
|
|
21708
|
+
(value.icon || value.iconName) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21709
|
+
"span",
|
|
21710
|
+
{
|
|
21711
|
+
className: cn(
|
|
21712
|
+
"mb-8 flex size-12 items-center justify-center rounded-full bg-background",
|
|
21713
|
+
value.iconClassName
|
|
21714
|
+
),
|
|
21715
|
+
children: renderValueIcon(value)
|
|
21716
|
+
}
|
|
21717
|
+
),
|
|
21718
|
+
value.title && (typeof value.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21719
|
+
"h3",
|
|
21720
|
+
{
|
|
21721
|
+
className: cn("mb-2 text-xl font-medium", value.titleClassName),
|
|
21722
|
+
children: value.title
|
|
21723
|
+
}
|
|
21724
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21725
|
+
"div",
|
|
21726
|
+
{
|
|
21727
|
+
className: cn("mb-2 text-xl font-medium", value.titleClassName),
|
|
21728
|
+
children: value.title
|
|
21729
|
+
}
|
|
21730
|
+
)),
|
|
21731
|
+
value.description && (typeof value.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21732
|
+
"p",
|
|
21733
|
+
{
|
|
21734
|
+
className: cn(
|
|
21735
|
+
"leading-7 text-muted-foreground",
|
|
21736
|
+
value.descriptionClassName
|
|
21737
|
+
),
|
|
21738
|
+
children: value.description
|
|
21739
|
+
}
|
|
21740
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21741
|
+
"div",
|
|
21742
|
+
{
|
|
21743
|
+
className: cn(
|
|
21744
|
+
"leading-7 text-muted-foreground",
|
|
21745
|
+
value.descriptionClassName
|
|
21746
|
+
),
|
|
21747
|
+
children: value.description
|
|
21748
|
+
}
|
|
21749
|
+
))
|
|
21750
|
+
]
|
|
21751
|
+
},
|
|
21752
|
+
index
|
|
21753
|
+
));
|
|
21169
21754
|
}, [valuesSlot, values, cardClassName, renderValueIcon]);
|
|
21170
21755
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21171
21756
|
Section,
|
|
@@ -21178,9 +21763,48 @@ function FeatureThreeColumnValues({
|
|
|
21178
21763
|
className,
|
|
21179
21764
|
containerClassName,
|
|
21180
21765
|
children: [
|
|
21181
|
-
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21182
|
-
|
|
21183
|
-
|
|
21766
|
+
label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21767
|
+
"p",
|
|
21768
|
+
{
|
|
21769
|
+
className: cn(
|
|
21770
|
+
"mb-4 text-sm text-muted-foreground lg:text-base",
|
|
21771
|
+
labelClassName
|
|
21772
|
+
),
|
|
21773
|
+
children: label
|
|
21774
|
+
}
|
|
21775
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21776
|
+
"div",
|
|
21777
|
+
{
|
|
21778
|
+
className: cn(
|
|
21779
|
+
"mb-4 text-sm text-muted-foreground lg:text-base",
|
|
21780
|
+
labelClassName
|
|
21781
|
+
),
|
|
21782
|
+
children: label
|
|
21783
|
+
}
|
|
21784
|
+
)),
|
|
21785
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21786
|
+
"h2",
|
|
21787
|
+
{
|
|
21788
|
+
className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
|
|
21789
|
+
children: title
|
|
21790
|
+
}
|
|
21791
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
21792
|
+
"div",
|
|
21793
|
+
{
|
|
21794
|
+
className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
|
|
21795
|
+
children: title
|
|
21796
|
+
}
|
|
21797
|
+
)),
|
|
21798
|
+
(valuesSlot || values && values.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
21799
|
+
"div",
|
|
21800
|
+
{
|
|
21801
|
+
className: cn(
|
|
21802
|
+
"mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3",
|
|
21803
|
+
gridClassName
|
|
21804
|
+
),
|
|
21805
|
+
children: valuesContent
|
|
21806
|
+
}
|
|
21807
|
+
)
|
|
21184
21808
|
]
|
|
21185
21809
|
}
|
|
21186
21810
|
);
|
|
@@ -21236,7 +21860,7 @@ function FeatureBadgeGridSix({
|
|
|
21236
21860
|
{
|
|
21237
21861
|
className: cn("flex gap-6 space-y-4 rounded-lg md:block", cardClassName, feature.className),
|
|
21238
21862
|
children: [
|
|
21239
|
-
iconContent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-
|
|
21863
|
+
iconContent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground md:size-12", children: iconContent }),
|
|
21240
21864
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
21241
21865
|
feature.heading && (typeof feature.heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading })),
|
|
21242
21866
|
feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
|
|
@@ -21449,31 +22073,57 @@ function FeatureTabbedContentImage({
|
|
|
21449
22073
|
contentGridClassName,
|
|
21450
22074
|
optixFlowConfig,
|
|
21451
22075
|
background,
|
|
21452
|
-
spacing,
|
|
22076
|
+
spacing = "py-6 md:py-32",
|
|
21453
22077
|
pattern,
|
|
21454
22078
|
patternOpacity,
|
|
21455
22079
|
patternClassName
|
|
21456
22080
|
}) {
|
|
21457
|
-
const renderFeatures = React52__namespace.useCallback(
|
|
21458
|
-
|
|
21459
|
-
|
|
21460
|
-
|
|
21461
|
-
|
|
21462
|
-
|
|
21463
|
-
|
|
21464
|
-
|
|
21465
|
-
|
|
21466
|
-
|
|
21467
|
-
|
|
21468
|
-
|
|
21469
|
-
|
|
21470
|
-
|
|
21471
|
-
|
|
21472
|
-
|
|
21473
|
-
|
|
21474
|
-
|
|
21475
|
-
|
|
21476
|
-
|
|
22081
|
+
const renderFeatures = React52__namespace.useCallback(
|
|
22082
|
+
(slide) => {
|
|
22083
|
+
if (slide.featuresSlot) return slide.featuresSlot;
|
|
22084
|
+
if (!slide.features || slide.features.length === 0) return null;
|
|
22085
|
+
return slide.features.map((feature, index) => {
|
|
22086
|
+
const isString = typeof feature === "string";
|
|
22087
|
+
const content = isString ? feature : feature.content;
|
|
22088
|
+
const iconElement = isString ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/check-circle-2", size: 16 }) : feature.icon ?? (feature.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/check-circle-2", size: 16 }));
|
|
22089
|
+
const itemClassName = isString ? void 0 : feature.className;
|
|
22090
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22091
|
+
"li",
|
|
22092
|
+
{
|
|
22093
|
+
className: cn("flex items-center gap-2", itemClassName),
|
|
22094
|
+
children: [
|
|
22095
|
+
iconElement,
|
|
22096
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: content })
|
|
22097
|
+
]
|
|
22098
|
+
},
|
|
22099
|
+
index
|
|
22100
|
+
);
|
|
22101
|
+
});
|
|
22102
|
+
},
|
|
22103
|
+
[]
|
|
22104
|
+
);
|
|
22105
|
+
const renderActions = React52__namespace.useCallback(
|
|
22106
|
+
(slide) => {
|
|
22107
|
+
if (slide.actionsSlot) return slide.actionsSlot;
|
|
22108
|
+
if (!slide.actions || slide.actions.length === 0) return null;
|
|
22109
|
+
return slide.actions.map((action, index) => {
|
|
22110
|
+
if (action.children) {
|
|
22111
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22112
|
+
Pressable,
|
|
22113
|
+
{
|
|
22114
|
+
href: action.href,
|
|
22115
|
+
onClick: action.onClick,
|
|
22116
|
+
variant: action.variant,
|
|
22117
|
+
size: action.size,
|
|
22118
|
+
className: cn("mt-8", action.className),
|
|
22119
|
+
"aria-label": action["aria-label"],
|
|
22120
|
+
asButton: true,
|
|
22121
|
+
children: action.children
|
|
22122
|
+
},
|
|
22123
|
+
index
|
|
22124
|
+
);
|
|
22125
|
+
}
|
|
22126
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21477
22127
|
Pressable,
|
|
21478
22128
|
{
|
|
21479
22129
|
href: action.href,
|
|
@@ -21483,46 +22133,39 @@ function FeatureTabbedContentImage({
|
|
|
21483
22133
|
className: cn("mt-8", action.className),
|
|
21484
22134
|
"aria-label": action["aria-label"],
|
|
21485
22135
|
asButton: true,
|
|
21486
|
-
children:
|
|
22136
|
+
children: [
|
|
22137
|
+
action.icon,
|
|
22138
|
+
action.label,
|
|
22139
|
+
action.iconAfter
|
|
22140
|
+
]
|
|
21487
22141
|
},
|
|
21488
22142
|
index
|
|
21489
22143
|
);
|
|
21490
|
-
}
|
|
21491
|
-
|
|
21492
|
-
|
|
22144
|
+
});
|
|
22145
|
+
},
|
|
22146
|
+
[]
|
|
22147
|
+
);
|
|
22148
|
+
const renderImage = React52__namespace.useCallback(
|
|
22149
|
+
(slide) => {
|
|
22150
|
+
if (slide.imageSlot) return slide.imageSlot;
|
|
22151
|
+
if (!slide.image) return null;
|
|
22152
|
+
const imageAlt = slide.imageAlt || (typeof slide.title === "string" ? slide.title : "Tab content image");
|
|
22153
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22154
|
+
img.Img,
|
|
21493
22155
|
{
|
|
21494
|
-
|
|
21495
|
-
|
|
21496
|
-
|
|
21497
|
-
|
|
21498
|
-
|
|
21499
|
-
|
|
21500
|
-
|
|
21501
|
-
|
|
21502
|
-
|
|
21503
|
-
action.label,
|
|
21504
|
-
action.iconAfter
|
|
21505
|
-
]
|
|
21506
|
-
},
|
|
21507
|
-
index
|
|
22156
|
+
src: slide.image,
|
|
22157
|
+
alt: imageAlt,
|
|
22158
|
+
className: cn(
|
|
22159
|
+
"order-first max-h-[400px] w-full rounded-lg object-cover md:order-last",
|
|
22160
|
+
slide.imageClassName
|
|
22161
|
+
),
|
|
22162
|
+
loading: "lazy",
|
|
22163
|
+
optixFlowConfig
|
|
22164
|
+
}
|
|
21508
22165
|
);
|
|
21509
|
-
}
|
|
21510
|
-
|
|
21511
|
-
|
|
21512
|
-
if (slide.imageSlot) return slide.imageSlot;
|
|
21513
|
-
if (!slide.image) return null;
|
|
21514
|
-
const imageAlt = slide.imageAlt || (typeof slide.title === "string" ? slide.title : "Tab content image");
|
|
21515
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21516
|
-
img.Img,
|
|
21517
|
-
{
|
|
21518
|
-
src: slide.image,
|
|
21519
|
-
alt: imageAlt,
|
|
21520
|
-
className: cn("order-first max-h-[400px] w-full rounded-lg object-cover md:order-last", slide.imageClassName),
|
|
21521
|
-
loading: "lazy",
|
|
21522
|
-
optixFlowConfig
|
|
21523
|
-
}
|
|
21524
|
-
);
|
|
21525
|
-
}, [optixFlowConfig]);
|
|
22166
|
+
},
|
|
22167
|
+
[optixFlowConfig]
|
|
22168
|
+
);
|
|
21526
22169
|
const slidesContent = React52.useMemo(() => {
|
|
21527
22170
|
if (slidesSlot) return slidesSlot;
|
|
21528
22171
|
if (!slides || slides.length === 0) return null;
|
|
@@ -21531,7 +22174,10 @@ function FeatureTabbedContentImage({
|
|
|
21531
22174
|
TabsTrigger,
|
|
21532
22175
|
{
|
|
21533
22176
|
value: slide.id.toString(),
|
|
21534
|
-
className: cn(
|
|
22177
|
+
className: cn(
|
|
22178
|
+
"text-sm hover:bg-background md:text-base",
|
|
22179
|
+
tabTriggerClassName
|
|
22180
|
+
),
|
|
21535
22181
|
children: slide.tabName
|
|
21536
22182
|
},
|
|
21537
22183
|
slide.id
|
|
@@ -21541,20 +22187,85 @@ function FeatureTabbedContentImage({
|
|
|
21541
22187
|
{
|
|
21542
22188
|
value: slide.id.toString(),
|
|
21543
22189
|
className: cn("max-w-5xl", tabContentClassName),
|
|
21544
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21545
|
-
|
|
21546
|
-
|
|
21547
|
-
|
|
21548
|
-
|
|
21549
|
-
|
|
21550
|
-
|
|
21551
|
-
|
|
21552
|
-
|
|
22190
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22191
|
+
"div",
|
|
22192
|
+
{
|
|
22193
|
+
className: cn(
|
|
22194
|
+
"grid grid-cols-1 items-center gap-10 md:grid-cols-2",
|
|
22195
|
+
contentGridClassName,
|
|
22196
|
+
slide.className
|
|
22197
|
+
),
|
|
22198
|
+
children: [
|
|
22199
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
22200
|
+
slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22201
|
+
"h2",
|
|
22202
|
+
{
|
|
22203
|
+
className: cn(
|
|
22204
|
+
"mb-4 text-2xl font-semibold lg:text-4xl",
|
|
22205
|
+
slide.titleClassName
|
|
22206
|
+
),
|
|
22207
|
+
children: slide.title
|
|
22208
|
+
}
|
|
22209
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
22210
|
+
"div",
|
|
22211
|
+
{
|
|
22212
|
+
className: cn(
|
|
22213
|
+
"mb-4 text-2xl font-semibold lg:text-4xl",
|
|
22214
|
+
slide.titleClassName
|
|
22215
|
+
),
|
|
22216
|
+
children: slide.title
|
|
22217
|
+
}
|
|
22218
|
+
)),
|
|
22219
|
+
slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22220
|
+
"p",
|
|
22221
|
+
{
|
|
22222
|
+
className: cn(
|
|
22223
|
+
"text-muted-foreground lg:text-xl",
|
|
22224
|
+
slide.descriptionClassName
|
|
22225
|
+
),
|
|
22226
|
+
children: slide.description
|
|
22227
|
+
}
|
|
22228
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
22229
|
+
"div",
|
|
22230
|
+
{
|
|
22231
|
+
className: cn(
|
|
22232
|
+
"text-muted-foreground lg:text-xl",
|
|
22233
|
+
slide.descriptionClassName
|
|
22234
|
+
),
|
|
22235
|
+
children: slide.description
|
|
22236
|
+
}
|
|
22237
|
+
)),
|
|
22238
|
+
slide.features && slide.features.length > 0 || slide.featuresSlot ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22239
|
+
"ul",
|
|
22240
|
+
{
|
|
22241
|
+
className: cn(
|
|
22242
|
+
"mt-8 grid grid-cols-1 gap-2 lg:grid-cols-2",
|
|
22243
|
+
slide.featuresClassName
|
|
22244
|
+
),
|
|
22245
|
+
children: renderFeatures(slide)
|
|
22246
|
+
}
|
|
22247
|
+
) : null,
|
|
22248
|
+
renderActions(slide)
|
|
22249
|
+
] }),
|
|
22250
|
+
renderImage(slide)
|
|
22251
|
+
]
|
|
22252
|
+
}
|
|
22253
|
+
)
|
|
21553
22254
|
},
|
|
21554
22255
|
slide.id
|
|
21555
22256
|
))
|
|
21556
22257
|
] });
|
|
21557
|
-
}, [
|
|
22258
|
+
}, [
|
|
22259
|
+
slidesSlot,
|
|
22260
|
+
slides,
|
|
22261
|
+
tabsListClassName,
|
|
22262
|
+
tabTriggerClassName,
|
|
22263
|
+
tabContentClassName,
|
|
22264
|
+
contentGridClassName,
|
|
22265
|
+
renderFeatures,
|
|
22266
|
+
renderActions,
|
|
22267
|
+
renderImage
|
|
22268
|
+
]);
|
|
21558
22269
|
const effectiveDefaultTab = React52.useMemo(() => {
|
|
21559
22270
|
if (defaultTab) return defaultTab;
|
|
21560
22271
|
if (slides && slides.length > 0) return slides[0].id.toString();
|
|
@@ -21571,15 +22282,63 @@ function FeatureTabbedContentImage({
|
|
|
21571
22282
|
className,
|
|
21572
22283
|
containerClassName,
|
|
21573
22284
|
children: [
|
|
21574
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
21575
|
-
|
|
21576
|
-
|
|
21577
|
-
|
|
22285
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
22286
|
+
"div",
|
|
22287
|
+
{
|
|
22288
|
+
className: cn(
|
|
22289
|
+
"mx-auto flex max-w-3xl flex-col items-center gap-6",
|
|
22290
|
+
headerClassName
|
|
22291
|
+
),
|
|
22292
|
+
children: [
|
|
22293
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22294
|
+
"h2",
|
|
22295
|
+
{
|
|
22296
|
+
className: cn(
|
|
22297
|
+
"text-center text-3xl font-semibold lg:text-5xl",
|
|
22298
|
+
titleClassName
|
|
22299
|
+
),
|
|
22300
|
+
children: title
|
|
22301
|
+
}
|
|
22302
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
22303
|
+
"div",
|
|
22304
|
+
{
|
|
22305
|
+
className: cn(
|
|
22306
|
+
"text-center text-3xl font-semibold lg:text-5xl",
|
|
22307
|
+
titleClassName
|
|
22308
|
+
),
|
|
22309
|
+
children: title
|
|
22310
|
+
}
|
|
22311
|
+
)),
|
|
22312
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22313
|
+
"p",
|
|
22314
|
+
{
|
|
22315
|
+
className: cn(
|
|
22316
|
+
"text-center text-balance text-muted-foreground lg:text-xl",
|
|
22317
|
+
descriptionClassName
|
|
22318
|
+
),
|
|
22319
|
+
children: description
|
|
22320
|
+
}
|
|
22321
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
22322
|
+
"div",
|
|
22323
|
+
{
|
|
22324
|
+
className: cn(
|
|
22325
|
+
"text-center text-balance text-muted-foreground lg:text-xl",
|
|
22326
|
+
descriptionClassName
|
|
22327
|
+
),
|
|
22328
|
+
children: description
|
|
22329
|
+
}
|
|
22330
|
+
))
|
|
22331
|
+
]
|
|
22332
|
+
}
|
|
22333
|
+
),
|
|
21578
22334
|
(slidesSlot || slides && slides.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-12", tabsWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21579
22335
|
Tabs,
|
|
21580
22336
|
{
|
|
21581
22337
|
defaultValue: effectiveDefaultTab,
|
|
21582
|
-
className: cn(
|
|
22338
|
+
className: cn(
|
|
22339
|
+
"mx-auto flex w-fit flex-col items-center gap-8 md:gap-12",
|
|
22340
|
+
tabsClassName
|
|
22341
|
+
),
|
|
21583
22342
|
children: slidesContent
|
|
21584
22343
|
}
|
|
21585
22344
|
) })
|
|
@@ -21892,7 +22651,7 @@ function FeatureChecklistThreeColumn({
|
|
|
21892
22651
|
Badge,
|
|
21893
22652
|
{
|
|
21894
22653
|
variant: "outline",
|
|
21895
|
-
className: cn("absolute top-5 left-5 bg-
|
|
22654
|
+
className: cn("absolute top-5 left-5 bg-background", card.badgeClassName),
|
|
21896
22655
|
children: card.badge
|
|
21897
22656
|
}
|
|
21898
22657
|
)
|
|
@@ -22060,7 +22819,7 @@ function FeatureIconTabsContent({
|
|
|
22060
22819
|
tabContentClassName,
|
|
22061
22820
|
optixFlowConfig,
|
|
22062
22821
|
background,
|
|
22063
|
-
spacing,
|
|
22822
|
+
spacing = "py-6 md:py-32",
|
|
22064
22823
|
pattern,
|
|
22065
22824
|
patternOpacity,
|
|
22066
22825
|
patternClassName
|
|
@@ -22070,12 +22829,28 @@ function FeatureIconTabsContent({
|
|
|
22070
22829
|
if (tab.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: tab.iconName, size: 16 });
|
|
22071
22830
|
return null;
|
|
22072
22831
|
}, []);
|
|
22073
|
-
const renderTabContentActions = React52.useCallback(
|
|
22074
|
-
|
|
22075
|
-
|
|
22076
|
-
|
|
22077
|
-
|
|
22078
|
-
|
|
22832
|
+
const renderTabContentActions = React52.useCallback(
|
|
22833
|
+
(content) => {
|
|
22834
|
+
if (content.actionsSlot) return content.actionsSlot;
|
|
22835
|
+
if (!content.actions || content.actions.length === 0) return null;
|
|
22836
|
+
return content.actions.map((action, index) => {
|
|
22837
|
+
if (action.children) {
|
|
22838
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22839
|
+
Pressable,
|
|
22840
|
+
{
|
|
22841
|
+
href: action.href,
|
|
22842
|
+
onClick: action.onClick,
|
|
22843
|
+
variant: action.variant,
|
|
22844
|
+
size: action.size,
|
|
22845
|
+
className: cn("mt-2.5 w-fit gap-2", action.className),
|
|
22846
|
+
"aria-label": action["aria-label"],
|
|
22847
|
+
asButton: true,
|
|
22848
|
+
children: action.children
|
|
22849
|
+
},
|
|
22850
|
+
index
|
|
22851
|
+
);
|
|
22852
|
+
}
|
|
22853
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22079
22854
|
Pressable,
|
|
22080
22855
|
{
|
|
22081
22856
|
href: action.href,
|
|
@@ -22085,106 +22860,223 @@ function FeatureIconTabsContent({
|
|
|
22085
22860
|
className: cn("mt-2.5 w-fit gap-2", action.className),
|
|
22086
22861
|
"aria-label": action["aria-label"],
|
|
22087
22862
|
asButton: true,
|
|
22088
|
-
children:
|
|
22863
|
+
children: [
|
|
22864
|
+
action.icon,
|
|
22865
|
+
action.label,
|
|
22866
|
+
action.iconAfter
|
|
22867
|
+
]
|
|
22089
22868
|
},
|
|
22090
22869
|
index
|
|
22091
22870
|
);
|
|
22871
|
+
});
|
|
22872
|
+
},
|
|
22873
|
+
[]
|
|
22874
|
+
);
|
|
22875
|
+
const renderTabContentImage = React52.useCallback(
|
|
22876
|
+
(content) => {
|
|
22877
|
+
if (content.imageSlot) return content.imageSlot;
|
|
22878
|
+
if (content.imageSrc) {
|
|
22879
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22880
|
+
img.Img,
|
|
22881
|
+
{
|
|
22882
|
+
src: content.imageSrc,
|
|
22883
|
+
alt: content.imageAlt || "Tab content image",
|
|
22884
|
+
className: cn(
|
|
22885
|
+
"h-full w-full rounded-xl object-cover",
|
|
22886
|
+
content.imageClassName
|
|
22887
|
+
),
|
|
22888
|
+
loading: "lazy",
|
|
22889
|
+
optixFlowConfig
|
|
22890
|
+
}
|
|
22891
|
+
);
|
|
22092
22892
|
}
|
|
22093
|
-
return
|
|
22094
|
-
|
|
22095
|
-
|
|
22096
|
-
|
|
22097
|
-
onClick: action.onClick,
|
|
22098
|
-
variant: action.variant,
|
|
22099
|
-
size: action.size,
|
|
22100
|
-
className: cn("mt-2.5 w-fit gap-2", action.className),
|
|
22101
|
-
"aria-label": action["aria-label"],
|
|
22102
|
-
asButton: true,
|
|
22103
|
-
children: [
|
|
22104
|
-
action.icon,
|
|
22105
|
-
action.label,
|
|
22106
|
-
action.iconAfter
|
|
22107
|
-
]
|
|
22108
|
-
},
|
|
22109
|
-
index
|
|
22110
|
-
);
|
|
22111
|
-
});
|
|
22112
|
-
}, []);
|
|
22113
|
-
const renderTabContentImage = React52.useCallback((content) => {
|
|
22114
|
-
if (content.imageSlot) return content.imageSlot;
|
|
22115
|
-
if (content.imageSrc) {
|
|
22116
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22117
|
-
img.Img,
|
|
22118
|
-
{
|
|
22119
|
-
src: content.imageSrc,
|
|
22120
|
-
alt: content.imageAlt || "Tab content image",
|
|
22121
|
-
className: cn("h-full w-full rounded-xl object-cover", content.imageClassName),
|
|
22122
|
-
loading: "lazy",
|
|
22123
|
-
optixFlowConfig
|
|
22124
|
-
}
|
|
22125
|
-
);
|
|
22126
|
-
}
|
|
22127
|
-
return null;
|
|
22128
|
-
}, [optixFlowConfig]);
|
|
22893
|
+
return null;
|
|
22894
|
+
},
|
|
22895
|
+
[optixFlowConfig]
|
|
22896
|
+
);
|
|
22129
22897
|
const tabsContent = React52.useMemo(() => {
|
|
22130
22898
|
if (tabsSlot) return tabsSlot;
|
|
22131
22899
|
if (!tabs || tabs.length === 0) return null;
|
|
22132
22900
|
const activeDefaultTab = defaultTab || tabs[0]?.value;
|
|
22133
22901
|
return /* @__PURE__ */ jsxRuntime.jsxs(Tabs, { defaultValue: activeDefaultTab, className: "mt-8", children: [
|
|
22134
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22135
|
-
|
|
22902
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "container overflow-x-auto px-4 pb-2 md:px-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
22903
|
+
TabsList,
|
|
22136
22904
|
{
|
|
22137
|
-
|
|
22138
|
-
|
|
22139
|
-
|
|
22140
|
-
|
|
22141
|
-
|
|
22142
|
-
|
|
22143
|
-
|
|
22144
|
-
|
|
22145
|
-
|
|
22146
|
-
|
|
22147
|
-
|
|
22148
|
-
|
|
22905
|
+
className: cn(
|
|
22906
|
+
"inline-flex w-auto min-w-full items-center justify-start gap-2 bg-transparent md:justify-center md:gap-4",
|
|
22907
|
+
tabsListClassName
|
|
22908
|
+
),
|
|
22909
|
+
children: tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22910
|
+
TabsTrigger,
|
|
22911
|
+
{
|
|
22912
|
+
value: tab.value,
|
|
22913
|
+
className: cn(
|
|
22914
|
+
"flex shrink-0 items-center gap-2 rounded-lg border border-border bg-background px-4 py-2.5 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground data-[state=active]:border-primary data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",
|
|
22915
|
+
tabTriggerClassName,
|
|
22916
|
+
tab.className
|
|
22917
|
+
),
|
|
22918
|
+
children: [
|
|
22919
|
+
(tab.icon || tab.iconName) && renderTabIcon(tab),
|
|
22920
|
+
tab.label
|
|
22921
|
+
]
|
|
22922
|
+
},
|
|
22923
|
+
tab.value
|
|
22924
|
+
))
|
|
22149
22925
|
}
|
|
22150
|
-
|
|
22151
|
-
|
|
22152
|
-
|
|
22153
|
-
|
|
22926
|
+
) }),
|
|
22927
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22928
|
+
"div",
|
|
22929
|
+
{
|
|
22930
|
+
className: cn(
|
|
22931
|
+
"mx-auto mt-8 max-w-7xl rounded-2xl bg-muted/70 p-6 lg:p-16",
|
|
22932
|
+
contentWrapperClassName
|
|
22933
|
+
),
|
|
22934
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: tabs.map((tab) => {
|
|
22935
|
+
if (tab.contentSlot) {
|
|
22936
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22937
|
+
TabsContent,
|
|
22938
|
+
{
|
|
22939
|
+
value: tab.value,
|
|
22940
|
+
className: tabContentClassName,
|
|
22941
|
+
children: tab.contentSlot
|
|
22942
|
+
},
|
|
22943
|
+
tab.value
|
|
22944
|
+
);
|
|
22945
|
+
}
|
|
22946
|
+
const content = tab.content;
|
|
22947
|
+
if (!content) return null;
|
|
22948
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22949
|
+
TabsContent,
|
|
22950
|
+
{
|
|
22951
|
+
value: tab.value,
|
|
22952
|
+
className: cn(
|
|
22953
|
+
"grid place-items-start gap-20 lg:grid-cols-2 lg:gap-10",
|
|
22954
|
+
tabContentClassName,
|
|
22955
|
+
content.className
|
|
22956
|
+
),
|
|
22957
|
+
children: [
|
|
22958
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5", children: [
|
|
22959
|
+
content.badge && /* @__PURE__ */ jsxRuntime.jsx(
|
|
22960
|
+
Badge,
|
|
22961
|
+
{
|
|
22962
|
+
variant: "outline",
|
|
22963
|
+
className: cn(
|
|
22964
|
+
"w-fit bg-background",
|
|
22965
|
+
content.badgeClassName
|
|
22966
|
+
),
|
|
22967
|
+
children: content.badge
|
|
22968
|
+
}
|
|
22969
|
+
),
|
|
22970
|
+
content.title && (typeof content.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22971
|
+
"h3",
|
|
22972
|
+
{
|
|
22973
|
+
className: cn(
|
|
22974
|
+
"text-3xl font-semibold lg:text-5xl",
|
|
22975
|
+
content.titleClassName
|
|
22976
|
+
),
|
|
22977
|
+
children: content.title
|
|
22978
|
+
}
|
|
22979
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
22980
|
+
"div",
|
|
22981
|
+
{
|
|
22982
|
+
className: cn(
|
|
22983
|
+
"text-3xl font-semibold lg:text-5xl",
|
|
22984
|
+
content.titleClassName
|
|
22985
|
+
),
|
|
22986
|
+
children: content.title
|
|
22987
|
+
}
|
|
22988
|
+
)),
|
|
22989
|
+
content.description && (typeof content.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22990
|
+
"p",
|
|
22991
|
+
{
|
|
22992
|
+
className: cn(
|
|
22993
|
+
"text-muted-foreground lg:text-lg",
|
|
22994
|
+
content.descriptionClassName
|
|
22995
|
+
),
|
|
22996
|
+
children: content.description
|
|
22997
|
+
}
|
|
22998
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
22999
|
+
"div",
|
|
23000
|
+
{
|
|
23001
|
+
className: cn(
|
|
23002
|
+
"text-muted-foreground lg:text-lg",
|
|
23003
|
+
content.descriptionClassName
|
|
23004
|
+
),
|
|
23005
|
+
children: content.description
|
|
23006
|
+
}
|
|
23007
|
+
)),
|
|
23008
|
+
(content.actionsSlot || content.actions && content.actions.length > 0) && renderTabContentActions(content)
|
|
23009
|
+
] }),
|
|
23010
|
+
(content.imageSlot || content.imageSrc) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
|
|
23011
|
+
]
|
|
23012
|
+
},
|
|
23013
|
+
tab.value
|
|
23014
|
+
);
|
|
23015
|
+
}) })
|
|
23016
|
+
}
|
|
23017
|
+
)
|
|
23018
|
+
] });
|
|
23019
|
+
}, [
|
|
23020
|
+
tabsSlot,
|
|
23021
|
+
tabs,
|
|
23022
|
+
defaultTab,
|
|
23023
|
+
tabsListClassName,
|
|
23024
|
+
tabTriggerClassName,
|
|
23025
|
+
contentWrapperClassName,
|
|
23026
|
+
tabContentClassName,
|
|
23027
|
+
renderTabIcon,
|
|
23028
|
+
renderTabContentActions,
|
|
23029
|
+
renderTabContentImage
|
|
23030
|
+
]);
|
|
23031
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23032
|
+
Section,
|
|
23033
|
+
{
|
|
23034
|
+
background,
|
|
23035
|
+
spacing,
|
|
23036
|
+
pattern,
|
|
23037
|
+
patternOpacity,
|
|
23038
|
+
patternClassName,
|
|
23039
|
+
className,
|
|
23040
|
+
containerClassName: cn("mx-auto", containerClassName),
|
|
23041
|
+
children: [
|
|
23042
|
+
(badge || heading || description) && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23043
|
+
"div",
|
|
22154
23044
|
{
|
|
22155
|
-
|
|
22156
|
-
|
|
23045
|
+
className: cn(
|
|
23046
|
+
"flex flex-col items-center gap-4 text-center",
|
|
23047
|
+
headerClassName
|
|
23048
|
+
),
|
|
22157
23049
|
children: [
|
|
22158
|
-
/* @__PURE__ */ jsxRuntime.
|
|
22159
|
-
|
|
22160
|
-
|
|
22161
|
-
|
|
22162
|
-
|
|
22163
|
-
|
|
22164
|
-
|
|
23050
|
+
badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
|
|
23051
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
23052
|
+
"h1",
|
|
23053
|
+
{
|
|
23054
|
+
className: cn(
|
|
23055
|
+
"max-w-2xl text-3xl font-semibold md:text-4xl",
|
|
23056
|
+
headingClassName
|
|
23057
|
+
),
|
|
23058
|
+
children: heading
|
|
23059
|
+
}
|
|
23060
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
23061
|
+
"div",
|
|
23062
|
+
{
|
|
23063
|
+
className: cn(
|
|
23064
|
+
"max-w-2xl text-3xl font-semibold md:text-4xl",
|
|
23065
|
+
headingClassName
|
|
23066
|
+
),
|
|
23067
|
+
children: heading
|
|
23068
|
+
}
|
|
23069
|
+
)),
|
|
23070
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
23071
|
+
"div",
|
|
23072
|
+
{
|
|
23073
|
+
className: cn("text-muted-foreground", descriptionClassName),
|
|
23074
|
+
children: description
|
|
23075
|
+
}
|
|
23076
|
+
))
|
|
22165
23077
|
]
|
|
22166
|
-
}
|
|
22167
|
-
|
|
22168
|
-
);
|
|
22169
|
-
}) }) })
|
|
22170
|
-
] });
|
|
22171
|
-
}, [tabsSlot, tabs, defaultTab, tabsListClassName, tabTriggerClassName, contentWrapperClassName, tabContentClassName, renderTabIcon, renderTabContentActions, renderTabContentImage]);
|
|
22172
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22173
|
-
Section,
|
|
22174
|
-
{
|
|
22175
|
-
background,
|
|
22176
|
-
spacing,
|
|
22177
|
-
pattern,
|
|
22178
|
-
patternOpacity,
|
|
22179
|
-
patternClassName,
|
|
22180
|
-
className,
|
|
22181
|
-
containerClassName: cn("mx-auto", containerClassName),
|
|
22182
|
-
children: [
|
|
22183
|
-
(badge || heading || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
|
|
22184
|
-
badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
|
|
22185
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading })),
|
|
22186
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground", descriptionClassName), children: description }))
|
|
22187
|
-
] }),
|
|
23078
|
+
}
|
|
23079
|
+
),
|
|
22188
23080
|
tabsContent
|
|
22189
23081
|
]
|
|
22190
23082
|
}
|
|
@@ -22265,7 +23157,7 @@ function FeatureImageOverlayBadge({
|
|
|
22265
23157
|
overlayTitleClassName,
|
|
22266
23158
|
optixFlowConfig,
|
|
22267
23159
|
background,
|
|
22268
|
-
spacing,
|
|
23160
|
+
spacing = "py-6 md:py-32",
|
|
22269
23161
|
pattern,
|
|
22270
23162
|
patternOpacity,
|
|
22271
23163
|
patternClassName
|
|
@@ -22318,7 +23210,10 @@ function FeatureImageOverlayBadge({
|
|
|
22318
23210
|
{
|
|
22319
23211
|
src: imageSrc,
|
|
22320
23212
|
alt: imageAlt || "Feature illustration",
|
|
22321
|
-
className: cn(
|
|
23213
|
+
className: cn(
|
|
23214
|
+
"rounded-2xl object-cover md:aspect-video lg:aspect-auto w-full h-auto",
|
|
23215
|
+
imageClassName
|
|
23216
|
+
),
|
|
22322
23217
|
loading: "lazy",
|
|
22323
23218
|
optixFlowConfig
|
|
22324
23219
|
}
|
|
@@ -22336,41 +23231,111 @@ function FeatureImageOverlayBadge({
|
|
|
22336
23231
|
patternClassName,
|
|
22337
23232
|
className,
|
|
22338
23233
|
containerClassName,
|
|
22339
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22340
|
-
|
|
22341
|
-
|
|
22342
|
-
|
|
22343
|
-
|
|
22344
|
-
|
|
22345
|
-
|
|
22346
|
-
|
|
22347
|
-
|
|
22348
|
-
|
|
22349
|
-
|
|
22350
|
-
|
|
22351
|
-
|
|
22352
|
-
|
|
22353
|
-
|
|
22354
|
-
|
|
22355
|
-
|
|
22356
|
-
|
|
22357
|
-
|
|
22358
|
-
|
|
23234
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23235
|
+
"div",
|
|
23236
|
+
{
|
|
23237
|
+
className: cn(
|
|
23238
|
+
"grid place-items-center gap-10 lg:grid-cols-2",
|
|
23239
|
+
gridClassName
|
|
23240
|
+
),
|
|
23241
|
+
children: [
|
|
23242
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-5", contentClassName), children: [
|
|
23243
|
+
badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("", badgeClassName), children: badge }),
|
|
23244
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
23245
|
+
"h3",
|
|
23246
|
+
{
|
|
23247
|
+
className: cn(
|
|
23248
|
+
"text-3xl font-semibold lg:text-4xl leading-snug text-balance",
|
|
23249
|
+
titleClassName
|
|
23250
|
+
),
|
|
23251
|
+
children: title
|
|
23252
|
+
}
|
|
23253
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
23254
|
+
"div",
|
|
23255
|
+
{
|
|
23256
|
+
className: cn(
|
|
23257
|
+
"text-3xl font-semibold lg:text-5xl",
|
|
23258
|
+
titleClassName
|
|
23259
|
+
),
|
|
23260
|
+
children: title
|
|
23261
|
+
}
|
|
23262
|
+
)),
|
|
23263
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("lg:text-lg", descriptionClassName), children: description })),
|
|
23264
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23265
|
+
"div",
|
|
23266
|
+
{
|
|
23267
|
+
className: cn(
|
|
23268
|
+
"flex items-center gap-4 flex-wrap",
|
|
23269
|
+
actionsClassName
|
|
23270
|
+
),
|
|
23271
|
+
children: actionsContent
|
|
23272
|
+
}
|
|
23273
|
+
)
|
|
23274
|
+
] }),
|
|
23275
|
+
imageContent && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative rounded-2xl", imageWrapperClassName), children: [
|
|
23276
|
+
imageContent,
|
|
23277
|
+
(avatarSrc || avatarBadgeText || overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
23278
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23279
|
+
"div",
|
|
22359
23280
|
{
|
|
22360
|
-
|
|
22361
|
-
|
|
22362
|
-
|
|
22363
|
-
|
|
22364
|
-
overlayLinkText,
|
|
22365
|
-
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
|
|
22366
|
-
]
|
|
23281
|
+
className: cn(
|
|
23282
|
+
"absolute top-0 right-0 bottom-0 left-0 rounded-2xl bg-linear-to-t from-black via-black/20 to-transparent",
|
|
23283
|
+
overlayClassName
|
|
23284
|
+
)
|
|
22367
23285
|
}
|
|
22368
|
-
)
|
|
23286
|
+
),
|
|
23287
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between pt-4 pr-4 pl-4 pb-8 md:pt-7 md:bpr-7 md:pl-7 md:pb-7 rounded-2xl", children: [
|
|
23288
|
+
(avatarSrc || avatarBadgeText) && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23289
|
+
"span",
|
|
23290
|
+
{
|
|
23291
|
+
className: cn(
|
|
23292
|
+
"ml-auto flex w-fit items-center gap-2 rounded-full bg-background/30 px-4 py-2.5 text-sm font-semibold backdrop-blur-sm shadow-xl",
|
|
23293
|
+
avatarBadgeClassName
|
|
23294
|
+
),
|
|
23295
|
+
children: [
|
|
23296
|
+
avatarSrc && /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
|
|
23297
|
+
avatarBadgeText
|
|
23298
|
+
]
|
|
23299
|
+
}
|
|
23300
|
+
),
|
|
23301
|
+
(overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5", children: [
|
|
23302
|
+
overlayTitle && (typeof overlayTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
23303
|
+
"h4",
|
|
23304
|
+
{
|
|
23305
|
+
className: cn(
|
|
23306
|
+
"text-lg font-semibold lg:text-3xl",
|
|
23307
|
+
overlayTitleClassName
|
|
23308
|
+
),
|
|
23309
|
+
children: overlayTitle
|
|
23310
|
+
}
|
|
23311
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
23312
|
+
"div",
|
|
23313
|
+
{
|
|
23314
|
+
className: cn(
|
|
23315
|
+
"text-lg font-semibold lg:text-3xl",
|
|
23316
|
+
overlayTitleClassName
|
|
23317
|
+
),
|
|
23318
|
+
children: overlayTitle
|
|
23319
|
+
}
|
|
23320
|
+
)),
|
|
23321
|
+
overlayLinkText && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23322
|
+
Pressable,
|
|
23323
|
+
{
|
|
23324
|
+
href: overlayLinkUrl,
|
|
23325
|
+
onClick: overlayLinkOnClick,
|
|
23326
|
+
children: [
|
|
23327
|
+
overlayLinkText,
|
|
23328
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 18 })
|
|
23329
|
+
]
|
|
23330
|
+
}
|
|
23331
|
+
)
|
|
23332
|
+
] })
|
|
23333
|
+
] })
|
|
22369
23334
|
] })
|
|
22370
23335
|
] })
|
|
22371
|
-
]
|
|
22372
|
-
|
|
22373
|
-
|
|
23336
|
+
]
|
|
23337
|
+
}
|
|
23338
|
+
)
|
|
22374
23339
|
}
|
|
22375
23340
|
);
|
|
22376
23341
|
}
|
|
@@ -22814,9 +23779,9 @@ function FeatureStatsHighlight({
|
|
|
22814
23779
|
return stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22815
23780
|
"div",
|
|
22816
23781
|
{
|
|
22817
|
-
className: cn("flex flex-col gap-2 rounded-xl border bg-
|
|
23782
|
+
className: cn("flex flex-col gap-2 rounded-xl border bg-card p-6", statCardClassName, stat.className),
|
|
22818
23783
|
children: [
|
|
22819
|
-
stat.value && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-4xl font-bold
|
|
23784
|
+
stat.value && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-4xl font-bold lg:text-5xl", stat.valueClassName), children: stat.value }),
|
|
22820
23785
|
stat.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-muted-foreground", stat.labelClassName), children: stat.label })
|
|
22821
23786
|
]
|
|
22822
23787
|
},
|
|
@@ -34789,7 +35754,10 @@ function BlogHorizontalTimelineComponent({
|
|
|
34789
35754
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
34790
35755
|
Card,
|
|
34791
35756
|
{
|
|
34792
|
-
className: cn(
|
|
35757
|
+
className: cn(
|
|
35758
|
+
"w-full border-none shadow-none pt-0 pb-6 md:pt-6 md:pb-6",
|
|
35759
|
+
postCardClassName
|
|
35760
|
+
),
|
|
34793
35761
|
children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "p-0", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
34794
35762
|
"div",
|
|
34795
35763
|
{
|
|
@@ -34804,9 +35772,9 @@ function BlogHorizontalTimelineComponent({
|
|
|
34804
35772
|
] }),
|
|
34805
35773
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col items-start gap-4 md:h-full md:justify-between md:gap-6", children: [
|
|
34806
35774
|
postDescription && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base leading-relaxed font-normal tracking-tight text-muted-foreground md:text-xl line-clamp-3", children: postDescription }),
|
|
34807
|
-
readText && /* @__PURE__ */ jsxRuntime.jsxs(Pressable, { href: postHref, asButton: true, variant: "
|
|
35775
|
+
readText && /* @__PURE__ */ jsxRuntime.jsxs(Pressable, { href: postHref, asButton: true, variant: "ghost", children: [
|
|
34808
35776
|
readText,
|
|
34809
|
-
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 20 })
|
|
35777
|
+
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 20 })
|
|
34810
35778
|
] })
|
|
34811
35779
|
] })
|
|
34812
35780
|
]
|
|
@@ -34847,7 +35815,7 @@ function BlogHorizontalTimelineComponent({
|
|
|
34847
35815
|
children: heading
|
|
34848
35816
|
}
|
|
34849
35817
|
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-12", headingClassName), children: heading })),
|
|
34850
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col", postsClassName), children: renderPosts })
|
|
35818
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-0 md:gap-20", postsClassName), children: renderPosts })
|
|
34851
35819
|
] })
|
|
34852
35820
|
}
|
|
34853
35821
|
);
|
|
@@ -35463,7 +36431,7 @@ function ArticleSidebarStickyComponent({
|
|
|
35463
36431
|
children,
|
|
35464
36432
|
optixFlowConfig,
|
|
35465
36433
|
background,
|
|
35466
|
-
spacing,
|
|
36434
|
+
spacing = "py-6 md:py-32",
|
|
35467
36435
|
pattern,
|
|
35468
36436
|
patternOpacity
|
|
35469
36437
|
}) {
|
|
@@ -35474,7 +36442,10 @@ function ArticleSidebarStickyComponent({
|
|
|
35474
36442
|
Pressable,
|
|
35475
36443
|
{
|
|
35476
36444
|
href: backHref,
|
|
35477
|
-
className: cn(
|
|
36445
|
+
className: cn(
|
|
36446
|
+
"inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground",
|
|
36447
|
+
backLinkClassName
|
|
36448
|
+
),
|
|
35478
36449
|
children: [
|
|
35479
36450
|
backIcon ?? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 16 }),
|
|
35480
36451
|
backText
|
|
@@ -35482,21 +36453,38 @@ function ArticleSidebarStickyComponent({
|
|
|
35482
36453
|
}
|
|
35483
36454
|
);
|
|
35484
36455
|
}, [backLinkSlot, backHref, backText, backIcon, backLinkClassName]);
|
|
35485
|
-
const renderAuthor = React52__namespace.useCallback(
|
|
35486
|
-
|
|
35487
|
-
|
|
35488
|
-
|
|
35489
|
-
|
|
35490
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
35491
|
-
/* @__PURE__ */ jsxRuntime.
|
|
35492
|
-
|
|
35493
|
-
|
|
35494
|
-
|
|
35495
|
-
|
|
35496
|
-
|
|
35497
|
-
|
|
35498
|
-
|
|
35499
|
-
|
|
36456
|
+
const renderAuthor = React52__namespace.useCallback(
|
|
36457
|
+
(isMobile = false) => {
|
|
36458
|
+
if (authorSlot) return authorSlot;
|
|
36459
|
+
if (!authorName) return null;
|
|
36460
|
+
const avatarSize = isMobile ? "h-8 w-8" : "h-10 w-10";
|
|
36461
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
|
|
36462
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: avatarSize, children: [
|
|
36463
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: authorImage }),
|
|
36464
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: authorName.charAt(0) })
|
|
36465
|
+
] }),
|
|
36466
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
36467
|
+
authorHref ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
36468
|
+
Pressable,
|
|
36469
|
+
{
|
|
36470
|
+
href: authorHref,
|
|
36471
|
+
className: "text-sm font-medium hover:underline",
|
|
36472
|
+
children: authorName
|
|
36473
|
+
}
|
|
36474
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: authorName }),
|
|
36475
|
+
publishDate && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: publishDate })
|
|
36476
|
+
] })
|
|
36477
|
+
] });
|
|
36478
|
+
},
|
|
36479
|
+
[
|
|
36480
|
+
authorSlot,
|
|
36481
|
+
authorName,
|
|
36482
|
+
authorImage,
|
|
36483
|
+
authorHref,
|
|
36484
|
+
publishDate,
|
|
36485
|
+
authorClassName
|
|
36486
|
+
]
|
|
36487
|
+
);
|
|
35500
36488
|
const heroMediaContent = React52__namespace.useMemo(() => {
|
|
35501
36489
|
if (heroMediaSlot) return heroMediaSlot;
|
|
35502
36490
|
if (!heroImageSrc) return null;
|
|
@@ -35505,11 +36493,20 @@ function ArticleSidebarStickyComponent({
|
|
|
35505
36493
|
{
|
|
35506
36494
|
src: heroImageSrc,
|
|
35507
36495
|
alt: heroImageAlt,
|
|
35508
|
-
className: cn(
|
|
36496
|
+
className: cn(
|
|
36497
|
+
"my-8 aspect-video w-full rounded-lg object-cover",
|
|
36498
|
+
heroImageClassName
|
|
36499
|
+
),
|
|
35509
36500
|
optixFlowConfig
|
|
35510
36501
|
}
|
|
35511
36502
|
);
|
|
35512
|
-
}, [
|
|
36503
|
+
}, [
|
|
36504
|
+
heroMediaSlot,
|
|
36505
|
+
heroImageSrc,
|
|
36506
|
+
heroImageAlt,
|
|
36507
|
+
heroImageClassName,
|
|
36508
|
+
optixFlowConfig
|
|
36509
|
+
]);
|
|
35513
36510
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35514
36511
|
Section,
|
|
35515
36512
|
{
|
|
@@ -35523,13 +36520,31 @@ function ArticleSidebarStickyComponent({
|
|
|
35523
36520
|
backLinkContent,
|
|
35524
36521
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: renderAuthor(false) })
|
|
35525
36522
|
] }) }),
|
|
35526
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
35527
|
-
|
|
35528
|
-
|
|
35529
|
-
|
|
35530
|
-
|
|
35531
|
-
|
|
35532
|
-
|
|
36523
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
36524
|
+
"article",
|
|
36525
|
+
{
|
|
36526
|
+
className: cn(
|
|
36527
|
+
"prose max-w-none dark:prose-invert",
|
|
36528
|
+
articleClassName
|
|
36529
|
+
),
|
|
36530
|
+
children: [
|
|
36531
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-8 lg:hidden", children: backLinkContent }),
|
|
36532
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
36533
|
+
"h1",
|
|
36534
|
+
{
|
|
36535
|
+
className: cn(
|
|
36536
|
+
"text-4xl font-bold tracking-tight md:text-5xl",
|
|
36537
|
+
titleClassName
|
|
36538
|
+
),
|
|
36539
|
+
children: title
|
|
36540
|
+
}
|
|
36541
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
|
|
36542
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "not-prose mt-4 lg:hidden", children: renderAuthor(true) }),
|
|
36543
|
+
heroMediaContent,
|
|
36544
|
+
children
|
|
36545
|
+
]
|
|
36546
|
+
}
|
|
36547
|
+
)
|
|
35533
36548
|
] }) })
|
|
35534
36549
|
}
|
|
35535
36550
|
);
|
|
@@ -35723,7 +36738,6 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
35723
36738
|
authorClassName,
|
|
35724
36739
|
heroImageClassName,
|
|
35725
36740
|
tocClassName,
|
|
35726
|
-
shareClassName,
|
|
35727
36741
|
breadcrumbs,
|
|
35728
36742
|
breadcrumbsSlot,
|
|
35729
36743
|
currentPage,
|
|
@@ -35738,9 +36752,6 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
35738
36752
|
sections,
|
|
35739
36753
|
tocSlot,
|
|
35740
36754
|
renderSectionLink,
|
|
35741
|
-
socialLinks: socialLinksProp,
|
|
35742
|
-
shareUrls,
|
|
35743
|
-
shareSlot,
|
|
35744
36755
|
heroImageSrc,
|
|
35745
36756
|
heroImageAlt,
|
|
35746
36757
|
heroMediaSlot,
|
|
@@ -35749,35 +36760,11 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
35749
36760
|
enableBackToTop,
|
|
35750
36761
|
optixFlowConfig,
|
|
35751
36762
|
background,
|
|
35752
|
-
spacing,
|
|
36763
|
+
spacing = "py-6 md:py-32",
|
|
35753
36764
|
pattern,
|
|
35754
36765
|
patternOpacity
|
|
35755
36766
|
}) {
|
|
35756
36767
|
const author = authorProp ?? (authorName ? { name: authorName, image: authorImage, role: authorRole } : void 0);
|
|
35757
|
-
const platformLabels = {
|
|
35758
|
-
twitter: "Twitter",
|
|
35759
|
-
x: "X",
|
|
35760
|
-
facebook: "Facebook",
|
|
35761
|
-
linkedin: "LinkedIn",
|
|
35762
|
-
instagram: "Instagram",
|
|
35763
|
-
github: "GitHub"
|
|
35764
|
-
};
|
|
35765
|
-
const socialIconMap2 = {
|
|
35766
|
-
twitter: "simple-icons/x",
|
|
35767
|
-
// Twitter is now X
|
|
35768
|
-
x: "simple-icons/x",
|
|
35769
|
-
facebook: "simple-icons/facebook",
|
|
35770
|
-
linkedin: "simple-icons/linkedin",
|
|
35771
|
-
instagram: "simple-icons/instagram",
|
|
35772
|
-
github: "simple-icons/github"
|
|
35773
|
-
};
|
|
35774
|
-
const socialLinks = socialLinksProp ?? (shareUrls ? Object.entries(shareUrls).filter(([, href]) => href).map(([platform, href]) => ({
|
|
35775
|
-
platform,
|
|
35776
|
-
href,
|
|
35777
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: socialIconMap2[platform] || `simple-icons/${platform}`, size: 16 }),
|
|
35778
|
-
"aria-label": `Share on ${platformLabels[platform] || platform.charAt(0).toUpperCase() + platform.slice(1)}`,
|
|
35779
|
-
className: void 0
|
|
35780
|
-
})) : []);
|
|
35781
36768
|
const [activeSection, setActiveSection] = React52__namespace.useState(
|
|
35782
36769
|
sections?.[0]?.id || ""
|
|
35783
36770
|
);
|
|
@@ -35829,16 +36816,25 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
35829
36816
|
const authorContent = React52__namespace.useMemo(() => {
|
|
35830
36817
|
if (authorSlot) return authorSlot;
|
|
35831
36818
|
if (!author) return null;
|
|
35832
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35833
|
-
|
|
35834
|
-
|
|
35835
|
-
|
|
35836
|
-
|
|
35837
|
-
|
|
35838
|
-
|
|
35839
|
-
|
|
35840
|
-
|
|
35841
|
-
|
|
36819
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
36820
|
+
"div",
|
|
36821
|
+
{
|
|
36822
|
+
className: cn(
|
|
36823
|
+
"mt-6 flex items-center gap-4 not-prose",
|
|
36824
|
+
authorClassName
|
|
36825
|
+
),
|
|
36826
|
+
children: [
|
|
36827
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "h-12 w-12", children: [
|
|
36828
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: author.image }),
|
|
36829
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: author.name?.charAt(0) || "A" })
|
|
36830
|
+
] }),
|
|
36831
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
36832
|
+
author.name && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: author.name }),
|
|
36833
|
+
(author.role || publishDate || readTime) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: [author.role, publishDate, readTime].filter(Boolean).join(" \xB7 ") })
|
|
36834
|
+
] })
|
|
36835
|
+
]
|
|
36836
|
+
}
|
|
36837
|
+
);
|
|
35842
36838
|
}, [authorSlot, author, publishDate, readTime, authorClassName]);
|
|
35843
36839
|
const heroMediaContent = React52__namespace.useMemo(() => {
|
|
35844
36840
|
if (heroMediaSlot) return heroMediaSlot;
|
|
@@ -35848,11 +36844,20 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
35848
36844
|
{
|
|
35849
36845
|
src: heroImageSrc,
|
|
35850
36846
|
alt: heroImageAlt,
|
|
35851
|
-
className: cn(
|
|
36847
|
+
className: cn(
|
|
36848
|
+
"my-8 aspect-video w-full rounded-lg object-cover",
|
|
36849
|
+
heroImageClassName
|
|
36850
|
+
),
|
|
35852
36851
|
optixFlowConfig
|
|
35853
36852
|
}
|
|
35854
36853
|
);
|
|
35855
|
-
}, [
|
|
36854
|
+
}, [
|
|
36855
|
+
heroMediaSlot,
|
|
36856
|
+
heroImageSrc,
|
|
36857
|
+
heroImageAlt,
|
|
36858
|
+
heroImageClassName,
|
|
36859
|
+
optixFlowConfig
|
|
36860
|
+
]);
|
|
35856
36861
|
const tocContent = React52__namespace.useMemo(() => {
|
|
35857
36862
|
if (tocSlot) return tocSlot;
|
|
35858
36863
|
if (!sections || sections.length === 0) return null;
|
|
@@ -35878,26 +36883,6 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
35878
36883
|
}) })
|
|
35879
36884
|
] });
|
|
35880
36885
|
}, [tocSlot, sections, activeSection, renderSectionLink, tocClassName]);
|
|
35881
|
-
const shareButtonsContent = React52__namespace.useMemo(() => {
|
|
35882
|
-
if (shareSlot) return shareSlot;
|
|
35883
|
-
if (!socialLinks || socialLinks.length === 0) return null;
|
|
35884
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-lg border p-4", shareClassName), children: [
|
|
35885
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 text-sm font-semibold", children: "Share this article" }),
|
|
35886
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-2", children: socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
35887
|
-
Pressable,
|
|
35888
|
-
{
|
|
35889
|
-
href: link.href,
|
|
35890
|
-
className: cn(
|
|
35891
|
-
"flex h-9 w-9 items-center justify-center rounded-md border hover:bg-muted",
|
|
35892
|
-
link.className
|
|
35893
|
-
),
|
|
35894
|
-
"aria-label": link["aria-label"],
|
|
35895
|
-
children: link.icon
|
|
35896
|
-
},
|
|
35897
|
-
index
|
|
35898
|
-
)) })
|
|
35899
|
-
] });
|
|
35900
|
-
}, [shareSlot, socialLinks, shareClassName]);
|
|
35901
36886
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35902
36887
|
Section,
|
|
35903
36888
|
{
|
|
@@ -35910,18 +36895,32 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
35910
36895
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container", containerClassName), children: [
|
|
35911
36896
|
breadcrumbsContent,
|
|
35912
36897
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,1fr)_280px]", children: [
|
|
35913
|
-
children && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35914
|
-
|
|
35915
|
-
|
|
35916
|
-
|
|
35917
|
-
|
|
35918
|
-
|
|
35919
|
-
|
|
35920
|
-
|
|
35921
|
-
|
|
35922
|
-
|
|
35923
|
-
|
|
35924
|
-
|
|
36898
|
+
children && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
36899
|
+
"article",
|
|
36900
|
+
{
|
|
36901
|
+
className: cn(
|
|
36902
|
+
"prose max-w-none dark:prose-invert",
|
|
36903
|
+
articleClassName
|
|
36904
|
+
),
|
|
36905
|
+
children: [
|
|
36906
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
36907
|
+
"h1",
|
|
36908
|
+
{
|
|
36909
|
+
className: cn(
|
|
36910
|
+
"text-4xl font-bold tracking-tight md:text-5xl",
|
|
36911
|
+
titleClassName
|
|
36912
|
+
),
|
|
36913
|
+
children: title
|
|
36914
|
+
}
|
|
36915
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
|
|
36916
|
+
authorContent,
|
|
36917
|
+
/* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-8" }),
|
|
36918
|
+
heroMediaContent,
|
|
36919
|
+
children
|
|
36920
|
+
]
|
|
36921
|
+
}
|
|
36922
|
+
),
|
|
36923
|
+
/* @__PURE__ */ jsxRuntime.jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-8 space-y-6", children: tocContent }) })
|
|
35925
36924
|
] })
|
|
35926
36925
|
] }),
|
|
35927
36926
|
enableBackToTop && showBackToTop && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -35998,7 +36997,7 @@ function ArticleCompactTocComponent({
|
|
|
35998
36997
|
enableTocTracking = true,
|
|
35999
36998
|
optixFlowConfig,
|
|
36000
36999
|
background,
|
|
36001
|
-
spacing,
|
|
37000
|
+
spacing = "py-6 md:py-32",
|
|
36002
37001
|
pattern,
|
|
36003
37002
|
patternOpacity
|
|
36004
37003
|
}) {
|