@opensite/ui 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/carousel-horizontal-cards.cjs +8 -6
- package/dist/carousel-horizontal-cards.js +8 -6
- package/dist/carousel-image-hero.cjs +119 -177
- package/dist/carousel-image-hero.d.cts +1 -5
- package/dist/carousel-image-hero.d.ts +1 -5
- package/dist/carousel-image-hero.js +119 -177
- package/dist/carousel-portfolio-hero.cjs +138 -59
- package/dist/carousel-portfolio-hero.js +138 -59
- package/dist/carousel-product-feature-showcase.cjs +148 -95
- package/dist/carousel-product-feature-showcase.js +148 -95
- package/dist/carousel-progress-slider.cjs +13 -9
- package/dist/carousel-progress-slider.js +13 -9
- package/dist/carousel-scrolling-feature-showcase.cjs +105 -54
- package/dist/carousel-scrolling-feature-showcase.js +105 -54
- package/dist/feature-accordion-image.cjs +9 -8
- package/dist/feature-accordion-image.js +9 -8
- package/dist/feature-animated-carousel.cjs +65 -49
- package/dist/feature-animated-carousel.js +65 -49
- package/dist/feature-badge-grid-six.cjs +20 -17
- package/dist/feature-badge-grid-six.js +21 -18
- package/dist/feature-bento-image-grid.cjs +12 -8
- package/dist/feature-bento-image-grid.js +12 -8
- package/dist/feature-bento-utilities.cjs +9 -5
- package/dist/feature-bento-utilities.js +9 -5
- package/dist/feature-capabilities-grid.cjs +41 -38
- package/dist/feature-capabilities-grid.js +41 -38
- package/dist/feature-card-grid-linked.cjs +18 -18
- package/dist/feature-card-grid-linked.js +19 -19
- package/dist/feature-carousel-progress.cjs +3 -3
- package/dist/feature-carousel-progress.js +4 -4
- package/dist/feature-category-image-cards.cjs +3 -3
- package/dist/feature-category-image-cards.js +4 -4
- package/dist/feature-checklist-image.cjs +2 -2
- package/dist/feature-checklist-image.js +2 -2
- package/dist/feature-checklist-three-column.cjs +6 -6
- package/dist/feature-checklist-three-column.js +7 -7
- package/dist/feature-icon-grid-accent.cjs +2 -2
- package/dist/feature-icon-grid-accent.js +2 -2
- package/dist/feature-icon-grid-bordered.cjs +29 -31
- package/dist/feature-icon-grid-bordered.d.cts +9 -9
- package/dist/feature-icon-grid-bordered.d.ts +9 -9
- package/dist/feature-icon-grid-bordered.js +30 -32
- package/dist/feature-icon-grid-muted.cjs +6 -6
- package/dist/feature-icon-grid-muted.d.cts +9 -9
- package/dist/feature-icon-grid-muted.d.ts +9 -9
- package/dist/feature-icon-grid-muted.js +7 -7
- package/dist/feature-icon-tabs-content.cjs +8 -8
- package/dist/feature-icon-tabs-content.d.cts +13 -13
- package/dist/feature-icon-tabs-content.d.ts +13 -13
- package/dist/feature-icon-tabs-content.js +9 -9
- package/dist/feature-image-cards-three-column.cjs +26 -27
- package/dist/feature-image-cards-three-column.js +27 -28
- package/dist/feature-image-overlay-badge.cjs +23 -21
- package/dist/feature-image-overlay-badge.js +24 -22
- package/dist/feature-integration-cards.cjs +19 -18
- package/dist/feature-integration-cards.js +20 -19
- package/dist/feature-numbered-cards.cjs +2 -2
- package/dist/feature-numbered-cards.js +3 -3
- package/dist/feature-pattern-grid-links.cjs +26 -29
- package/dist/feature-pattern-grid-links.d.cts +1 -5
- package/dist/feature-pattern-grid-links.d.ts +1 -5
- package/dist/feature-pattern-grid-links.js +27 -30
- package/dist/feature-showcase.cjs +441 -40
- package/dist/feature-showcase.d.cts +62 -5
- package/dist/feature-showcase.d.ts +62 -5
- package/dist/feature-showcase.js +438 -37
- package/dist/feature-split-image-reverse.cjs +15 -36
- package/dist/feature-split-image-reverse.js +16 -37
- package/dist/feature-split-image.cjs +15 -36
- package/dist/feature-split-image.js +16 -37
- package/dist/feature-stats-highlight.cjs +20 -32
- package/dist/feature-stats-highlight.js +21 -33
- package/dist/feature-tabbed-content-image.cjs +11 -6
- package/dist/feature-tabbed-content-image.js +11 -6
- package/dist/feature-three-column-values.cjs +6 -6
- package/dist/feature-three-column-values.js +6 -6
- package/dist/feature-utility-cards-grid.cjs +17 -15
- package/dist/feature-utility-cards-grid.js +18 -16
- package/dist/navbar-tabbed-sections.cjs +23 -16
- package/dist/navbar-tabbed-sections.js +23 -16
- package/dist/registry.cjs +964 -714
- package/dist/registry.js +966 -716
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import React__default, { useMemo } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
import { cva } from 'class-variance-authority';
|
|
8
8
|
import { Slot } from '@radix-ui/react-slot';
|
|
9
9
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
@@ -1080,28 +1080,30 @@ function FeatureImageOverlayBadge({
|
|
|
1080
1080
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
|
|
1081
1081
|
/* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
|
|
1082
1082
|
] }),
|
|
1083
|
-
/* @__PURE__ */ jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
|
|
1083
|
+
imageContent && /* @__PURE__ */ jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
|
|
1084
1084
|
imageContent,
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
/* @__PURE__ */ jsxs("
|
|
1088
|
-
/* @__PURE__ */
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1085
|
+
(avatarSrc || avatarBadgeText || overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1086
|
+
/* @__PURE__ */ jsx("div", { className: cn("absolute top-0 right-0 bottom-0 left-0 rounded-xl bg-linear-to-t from-primary via-transparent to-transparent", overlayClassName) }),
|
|
1087
|
+
/* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
|
|
1088
|
+
(avatarSrc || avatarBadgeText) && /* @__PURE__ */ jsxs("span", { className: cn("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", avatarBadgeClassName), children: [
|
|
1089
|
+
avatarSrc && /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
|
|
1090
|
+
avatarBadgeText
|
|
1091
|
+
] }),
|
|
1092
|
+
(overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
|
|
1093
|
+
overlayTitle && (typeof overlayTitle === "string" ? /* @__PURE__ */ jsx("h4", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle }) : /* @__PURE__ */ jsx("div", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle })),
|
|
1094
|
+
overlayLinkText && /* @__PURE__ */ jsxs(
|
|
1095
|
+
Pressable,
|
|
1096
|
+
{
|
|
1097
|
+
href: overlayLinkUrl,
|
|
1098
|
+
onClick: overlayLinkOnClick,
|
|
1099
|
+
className: "flex items-center gap-1 font-medium",
|
|
1100
|
+
children: [
|
|
1101
|
+
overlayLinkText,
|
|
1102
|
+
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
|
|
1103
|
+
]
|
|
1104
|
+
}
|
|
1105
|
+
)
|
|
1106
|
+
] })
|
|
1105
1107
|
] })
|
|
1106
1108
|
] })
|
|
1107
1109
|
] })
|
|
@@ -949,26 +949,25 @@ function FeatureIntegrationCards({
|
|
|
949
949
|
patternOpacity,
|
|
950
950
|
patternClassName
|
|
951
951
|
}) {
|
|
952
|
-
const renderIntegrationIcon = React.
|
|
952
|
+
const renderIntegrationIcon = React.useCallback((integration) => {
|
|
953
953
|
if (integration.iconSlot) return integration.iconSlot;
|
|
954
|
-
if (integration.icon)
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
}
|
|
966
|
-
return null;
|
|
954
|
+
if (!integration.icon) return null;
|
|
955
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
956
|
+
img.Img,
|
|
957
|
+
{
|
|
958
|
+
src: integration.icon,
|
|
959
|
+
alt: integration.iconAlt || (typeof integration.title === "string" ? integration.title : "Integration icon"),
|
|
960
|
+
className: cn("h-auto w-7", integration.iconClassName),
|
|
961
|
+
loading: "lazy",
|
|
962
|
+
optixFlowConfig
|
|
963
|
+
}
|
|
964
|
+
);
|
|
967
965
|
}, [optixFlowConfig]);
|
|
968
|
-
const renderLinkLabel = React.
|
|
966
|
+
const renderLinkLabel = React.useCallback((integration) => {
|
|
969
967
|
if (integration.linkLabelSlot) return integration.linkLabelSlot;
|
|
968
|
+
if (!integration.linkLabel) return null;
|
|
970
969
|
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("flex items-center gap-1 rounded-full border px-3 py-2.5 text-sm", integration.linkLabelClassName), children: [
|
|
971
|
-
integration.linkLabel
|
|
970
|
+
integration.linkLabel,
|
|
972
971
|
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
|
|
973
972
|
] });
|
|
974
973
|
}, []);
|
|
@@ -976,10 +975,12 @@ function FeatureIntegrationCards({
|
|
|
976
975
|
if (integrationsSlot) return integrationsSlot;
|
|
977
976
|
if (!integrations || integrations.length === 0) return null;
|
|
978
977
|
return integrations.map((integration, index) => {
|
|
978
|
+
const iconContent = renderIntegrationIcon(integration);
|
|
979
|
+
const linkLabelContent = renderLinkLabel(integration);
|
|
979
980
|
const cardContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
980
981
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
981
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children:
|
|
982
|
-
|
|
982
|
+
iconContent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children: iconContent }),
|
|
983
|
+
linkLabelContent
|
|
983
984
|
] }),
|
|
984
985
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
985
986
|
integration.title && (typeof integration.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-medium md:text-lg", integration.titleClassName), children: integration.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("font-medium md:text-lg", integration.titleClassName), children: integration.title })),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import React__default, { useMemo } from 'react';
|
|
3
|
+
import React__default, { useCallback, useMemo } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -928,26 +928,25 @@ function FeatureIntegrationCards({
|
|
|
928
928
|
patternOpacity,
|
|
929
929
|
patternClassName
|
|
930
930
|
}) {
|
|
931
|
-
const renderIntegrationIcon =
|
|
931
|
+
const renderIntegrationIcon = useCallback((integration) => {
|
|
932
932
|
if (integration.iconSlot) return integration.iconSlot;
|
|
933
|
-
if (integration.icon)
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
}
|
|
945
|
-
return null;
|
|
933
|
+
if (!integration.icon) return null;
|
|
934
|
+
return /* @__PURE__ */ jsx(
|
|
935
|
+
Img,
|
|
936
|
+
{
|
|
937
|
+
src: integration.icon,
|
|
938
|
+
alt: integration.iconAlt || (typeof integration.title === "string" ? integration.title : "Integration icon"),
|
|
939
|
+
className: cn("h-auto w-7", integration.iconClassName),
|
|
940
|
+
loading: "lazy",
|
|
941
|
+
optixFlowConfig
|
|
942
|
+
}
|
|
943
|
+
);
|
|
946
944
|
}, [optixFlowConfig]);
|
|
947
|
-
const renderLinkLabel =
|
|
945
|
+
const renderLinkLabel = useCallback((integration) => {
|
|
948
946
|
if (integration.linkLabelSlot) return integration.linkLabelSlot;
|
|
947
|
+
if (!integration.linkLabel) return null;
|
|
949
948
|
return /* @__PURE__ */ jsxs("span", { className: cn("flex items-center gap-1 rounded-full border px-3 py-2.5 text-sm", integration.linkLabelClassName), children: [
|
|
950
|
-
integration.linkLabel
|
|
949
|
+
integration.linkLabel,
|
|
951
950
|
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
|
|
952
951
|
] });
|
|
953
952
|
}, []);
|
|
@@ -955,10 +954,12 @@ function FeatureIntegrationCards({
|
|
|
955
954
|
if (integrationsSlot) return integrationsSlot;
|
|
956
955
|
if (!integrations || integrations.length === 0) return null;
|
|
957
956
|
return integrations.map((integration, index) => {
|
|
957
|
+
const iconContent = renderIntegrationIcon(integration);
|
|
958
|
+
const linkLabelContent = renderLinkLabel(integration);
|
|
958
959
|
const cardContent = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
959
960
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
960
|
-
/* @__PURE__ */ jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children:
|
|
961
|
-
|
|
961
|
+
iconContent && /* @__PURE__ */ jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children: iconContent }),
|
|
962
|
+
linkLabelContent
|
|
962
963
|
] }),
|
|
963
964
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
964
965
|
integration.title && (typeof integration.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-medium md:text-lg", integration.titleClassName), children: integration.title }) : /* @__PURE__ */ jsx("div", { className: cn("font-medium md:text-lg", integration.titleClassName), children: integration.title })),
|
|
@@ -529,7 +529,7 @@ function FeatureNumberedCards({
|
|
|
529
529
|
patternOpacity,
|
|
530
530
|
patternClassName
|
|
531
531
|
}) {
|
|
532
|
-
const renderChecklistItems = (feature) => {
|
|
532
|
+
const renderChecklistItems = React.useCallback((feature) => {
|
|
533
533
|
if (feature.checklistSlot) return feature.checklistSlot;
|
|
534
534
|
if (!feature.checklistItems || feature.checklistItems.length === 0) return null;
|
|
535
535
|
return feature.checklistItems.map((item, itemIndex) => {
|
|
@@ -549,7 +549,7 @@ function FeatureNumberedCards({
|
|
|
549
549
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm md:text-base", children: content })
|
|
550
550
|
] }, itemIndex);
|
|
551
551
|
});
|
|
552
|
-
};
|
|
552
|
+
}, []);
|
|
553
553
|
const featuresContent = React.useMemo(() => {
|
|
554
554
|
if (featuresSlot) return featuresSlot;
|
|
555
555
|
if (!features || features.length === 0) return null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import React__default, { useMemo } from 'react';
|
|
3
|
+
import React__default, { useCallback, useMemo } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -508,7 +508,7 @@ function FeatureNumberedCards({
|
|
|
508
508
|
patternOpacity,
|
|
509
509
|
patternClassName
|
|
510
510
|
}) {
|
|
511
|
-
const renderChecklistItems = (feature) => {
|
|
511
|
+
const renderChecklistItems = useCallback((feature) => {
|
|
512
512
|
if (feature.checklistSlot) return feature.checklistSlot;
|
|
513
513
|
if (!feature.checklistItems || feature.checklistItems.length === 0) return null;
|
|
514
514
|
return feature.checklistItems.map((item, itemIndex) => {
|
|
@@ -528,7 +528,7 @@ function FeatureNumberedCards({
|
|
|
528
528
|
/* @__PURE__ */ jsx("p", { className: "text-sm md:text-base", children: content })
|
|
529
529
|
] }, itemIndex);
|
|
530
530
|
});
|
|
531
|
-
};
|
|
531
|
+
}, []);
|
|
532
532
|
const featuresContent = useMemo(() => {
|
|
533
533
|
if (featuresSlot) return featuresSlot;
|
|
534
534
|
if (!features || features.length === 0) return null;
|
|
@@ -554,22 +554,6 @@ var Pressable = React__namespace.forwardRef(
|
|
|
554
554
|
}
|
|
555
555
|
);
|
|
556
556
|
Pressable.displayName = "Pressable";
|
|
557
|
-
|
|
558
|
-
// lib/patternSvgs.ts
|
|
559
|
-
var patternSvgs = {
|
|
560
|
-
squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
|
|
561
|
-
grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
|
|
562
|
-
noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
|
|
563
|
-
dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
|
|
564
|
-
dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
|
|
565
|
-
dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
|
|
566
|
-
circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
|
|
567
|
-
waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
|
|
568
|
-
crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
|
|
569
|
-
architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
|
|
570
|
-
tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
|
|
571
|
-
p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
|
|
572
|
-
};
|
|
573
557
|
var maxWidthStyles = {
|
|
574
558
|
sm: "max-w-screen-sm",
|
|
575
559
|
md: "max-w-screen-md",
|
|
@@ -598,6 +582,22 @@ var Container = React__namespace.default.forwardRef(
|
|
|
598
582
|
}
|
|
599
583
|
);
|
|
600
584
|
Container.displayName = "Container";
|
|
585
|
+
|
|
586
|
+
// lib/patternSvgs.ts
|
|
587
|
+
var patternSvgs = {
|
|
588
|
+
squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
|
|
589
|
+
grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
|
|
590
|
+
noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
|
|
591
|
+
dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
|
|
592
|
+
dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
|
|
593
|
+
dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
|
|
594
|
+
circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
|
|
595
|
+
waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
|
|
596
|
+
crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
|
|
597
|
+
architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
|
|
598
|
+
tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
|
|
599
|
+
p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
|
|
600
|
+
};
|
|
601
601
|
var maskTop = "radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%)";
|
|
602
602
|
var maskBottom = "radial-gradient(ellipse 100% 80% at 50% 100%, #000 50%, transparent 90%)";
|
|
603
603
|
var maskCenter = "radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 70%)";
|
|
@@ -932,7 +932,6 @@ Section.displayName = "Section";
|
|
|
932
932
|
function FeaturePatternGridLinks({
|
|
933
933
|
features,
|
|
934
934
|
featuresSlot,
|
|
935
|
-
patternUrl = patternSvgs.dotPattern,
|
|
936
935
|
className,
|
|
937
936
|
containerClassName,
|
|
938
937
|
gridClassName,
|
|
@@ -943,26 +942,28 @@ function FeaturePatternGridLinks({
|
|
|
943
942
|
patternOpacity,
|
|
944
943
|
patternClassName
|
|
945
944
|
}) {
|
|
946
|
-
const renderFeatureIcon = (feature) => {
|
|
945
|
+
const renderFeatureIcon = React.useCallback((feature) => {
|
|
947
946
|
if (feature.icon) return feature.icon;
|
|
948
947
|
if (feature.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
|
|
949
948
|
return null;
|
|
950
|
-
};
|
|
951
|
-
const renderFeatureLink = (feature) => {
|
|
949
|
+
}, []);
|
|
950
|
+
const renderFeatureLink = React.useCallback((feature) => {
|
|
952
951
|
if (feature.linkSlot) return feature.linkSlot;
|
|
953
|
-
if (!feature.link) return null;
|
|
952
|
+
if (!feature.link && !feature.linkLabel) return null;
|
|
953
|
+
const label = feature.linkLabel || (feature.link ? "Learn more" : null);
|
|
954
|
+
if (!label) return null;
|
|
954
955
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
955
956
|
Pressable,
|
|
956
957
|
{
|
|
957
958
|
href: feature.link,
|
|
958
959
|
className: cn("flex items-center gap-2 text-sm font-medium", feature.linkClassName),
|
|
959
960
|
children: [
|
|
960
|
-
|
|
961
|
+
label,
|
|
961
962
|
/* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
|
|
962
963
|
]
|
|
963
964
|
}
|
|
964
965
|
);
|
|
965
|
-
};
|
|
966
|
+
}, []);
|
|
966
967
|
const featuresContent = React.useMemo(() => {
|
|
967
968
|
if (featuresSlot) return featuresSlot;
|
|
968
969
|
if (!features || features.length === 0) return null;
|
|
@@ -981,7 +982,7 @@ function FeaturePatternGridLinks({
|
|
|
981
982
|
},
|
|
982
983
|
index
|
|
983
984
|
));
|
|
984
|
-
}, [featuresSlot, features, cardClassName]);
|
|
985
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon, renderFeatureLink]);
|
|
985
986
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
986
987
|
Section,
|
|
987
988
|
{
|
|
@@ -990,12 +991,8 @@ function FeaturePatternGridLinks({
|
|
|
990
991
|
pattern,
|
|
991
992
|
patternOpacity,
|
|
992
993
|
patternClassName,
|
|
993
|
-
className
|
|
994
|
+
className,
|
|
994
995
|
containerClassName,
|
|
995
|
-
style: {
|
|
996
|
-
backgroundImage: `url(${patternUrl})`,
|
|
997
|
-
backgroundRepeat: "repeat"
|
|
998
|
-
},
|
|
999
996
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid gap-6 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: featuresContent })
|
|
1000
997
|
}
|
|
1001
998
|
);
|
|
@@ -66,10 +66,6 @@ interface FeaturePatternGridLinksProps {
|
|
|
66
66
|
* Custom slot for rendering features (overrides features array)
|
|
67
67
|
*/
|
|
68
68
|
featuresSlot?: React.ReactNode;
|
|
69
|
-
/**
|
|
70
|
-
* Background pattern URL
|
|
71
|
-
*/
|
|
72
|
-
patternUrl?: string;
|
|
73
69
|
/**
|
|
74
70
|
* Additional CSS classes for the section
|
|
75
71
|
*/
|
|
@@ -124,6 +120,6 @@ interface FeaturePatternGridLinksProps {
|
|
|
124
120
|
* />
|
|
125
121
|
* ```
|
|
126
122
|
*/
|
|
127
|
-
declare function FeaturePatternGridLinks({ features, featuresSlot,
|
|
123
|
+
declare function FeaturePatternGridLinks({ features, featuresSlot, className, containerClassName, gridClassName, cardClassName, background, spacing, pattern, patternOpacity, patternClassName, }: FeaturePatternGridLinksProps): React.JSX.Element;
|
|
128
124
|
|
|
129
125
|
export { FeaturePatternGridLinks, type FeaturePatternGridLinksProps };
|
|
@@ -66,10 +66,6 @@ interface FeaturePatternGridLinksProps {
|
|
|
66
66
|
* Custom slot for rendering features (overrides features array)
|
|
67
67
|
*/
|
|
68
68
|
featuresSlot?: React.ReactNode;
|
|
69
|
-
/**
|
|
70
|
-
* Background pattern URL
|
|
71
|
-
*/
|
|
72
|
-
patternUrl?: string;
|
|
73
69
|
/**
|
|
74
70
|
* Additional CSS classes for the section
|
|
75
71
|
*/
|
|
@@ -124,6 +120,6 @@ interface FeaturePatternGridLinksProps {
|
|
|
124
120
|
* />
|
|
125
121
|
* ```
|
|
126
122
|
*/
|
|
127
|
-
declare function FeaturePatternGridLinks({ features, featuresSlot,
|
|
123
|
+
declare function FeaturePatternGridLinks({ features, featuresSlot, className, containerClassName, gridClassName, cardClassName, background, spacing, pattern, patternOpacity, patternClassName, }: FeaturePatternGridLinksProps): React.JSX.Element;
|
|
128
124
|
|
|
129
125
|
export { FeaturePatternGridLinks, type FeaturePatternGridLinksProps };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import React__default, { useMemo } from 'react';
|
|
3
|
+
import React__default, { useCallback, useMemo } from 'react';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -533,22 +533,6 @@ var Pressable = React.forwardRef(
|
|
|
533
533
|
}
|
|
534
534
|
);
|
|
535
535
|
Pressable.displayName = "Pressable";
|
|
536
|
-
|
|
537
|
-
// lib/patternSvgs.ts
|
|
538
|
-
var patternSvgs = {
|
|
539
|
-
squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
|
|
540
|
-
grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
|
|
541
|
-
noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
|
|
542
|
-
dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
|
|
543
|
-
dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
|
|
544
|
-
dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
|
|
545
|
-
circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
|
|
546
|
-
waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
|
|
547
|
-
crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
|
|
548
|
-
architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
|
|
549
|
-
tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
|
|
550
|
-
p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
|
|
551
|
-
};
|
|
552
536
|
var maxWidthStyles = {
|
|
553
537
|
sm: "max-w-screen-sm",
|
|
554
538
|
md: "max-w-screen-md",
|
|
@@ -577,6 +561,22 @@ var Container = React__default.forwardRef(
|
|
|
577
561
|
}
|
|
578
562
|
);
|
|
579
563
|
Container.displayName = "Container";
|
|
564
|
+
|
|
565
|
+
// lib/patternSvgs.ts
|
|
566
|
+
var patternSvgs = {
|
|
567
|
+
squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
|
|
568
|
+
grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
|
|
569
|
+
noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
|
|
570
|
+
dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
|
|
571
|
+
dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
|
|
572
|
+
dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
|
|
573
|
+
circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
|
|
574
|
+
waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
|
|
575
|
+
crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
|
|
576
|
+
architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
|
|
577
|
+
tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
|
|
578
|
+
p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
|
|
579
|
+
};
|
|
580
580
|
var maskTop = "radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%)";
|
|
581
581
|
var maskBottom = "radial-gradient(ellipse 100% 80% at 50% 100%, #000 50%, transparent 90%)";
|
|
582
582
|
var maskCenter = "radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 70%)";
|
|
@@ -911,7 +911,6 @@ Section.displayName = "Section";
|
|
|
911
911
|
function FeaturePatternGridLinks({
|
|
912
912
|
features,
|
|
913
913
|
featuresSlot,
|
|
914
|
-
patternUrl = patternSvgs.dotPattern,
|
|
915
914
|
className,
|
|
916
915
|
containerClassName,
|
|
917
916
|
gridClassName,
|
|
@@ -922,26 +921,28 @@ function FeaturePatternGridLinks({
|
|
|
922
921
|
patternOpacity,
|
|
923
922
|
patternClassName
|
|
924
923
|
}) {
|
|
925
|
-
const renderFeatureIcon = (feature) => {
|
|
924
|
+
const renderFeatureIcon = useCallback((feature) => {
|
|
926
925
|
if (feature.icon) return feature.icon;
|
|
927
926
|
if (feature.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
|
|
928
927
|
return null;
|
|
929
|
-
};
|
|
930
|
-
const renderFeatureLink = (feature) => {
|
|
928
|
+
}, []);
|
|
929
|
+
const renderFeatureLink = useCallback((feature) => {
|
|
931
930
|
if (feature.linkSlot) return feature.linkSlot;
|
|
932
|
-
if (!feature.link) return null;
|
|
931
|
+
if (!feature.link && !feature.linkLabel) return null;
|
|
932
|
+
const label = feature.linkLabel || (feature.link ? "Learn more" : null);
|
|
933
|
+
if (!label) return null;
|
|
933
934
|
return /* @__PURE__ */ jsxs(
|
|
934
935
|
Pressable,
|
|
935
936
|
{
|
|
936
937
|
href: feature.link,
|
|
937
938
|
className: cn("flex items-center gap-2 text-sm font-medium", feature.linkClassName),
|
|
938
939
|
children: [
|
|
939
|
-
|
|
940
|
+
label,
|
|
940
941
|
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
|
|
941
942
|
]
|
|
942
943
|
}
|
|
943
944
|
);
|
|
944
|
-
};
|
|
945
|
+
}, []);
|
|
945
946
|
const featuresContent = useMemo(() => {
|
|
946
947
|
if (featuresSlot) return featuresSlot;
|
|
947
948
|
if (!features || features.length === 0) return null;
|
|
@@ -960,7 +961,7 @@ function FeaturePatternGridLinks({
|
|
|
960
961
|
},
|
|
961
962
|
index
|
|
962
963
|
));
|
|
963
|
-
}, [featuresSlot, features, cardClassName]);
|
|
964
|
+
}, [featuresSlot, features, cardClassName, renderFeatureIcon, renderFeatureLink]);
|
|
964
965
|
return /* @__PURE__ */ jsx(
|
|
965
966
|
Section,
|
|
966
967
|
{
|
|
@@ -969,12 +970,8 @@ function FeaturePatternGridLinks({
|
|
|
969
970
|
pattern,
|
|
970
971
|
patternOpacity,
|
|
971
972
|
patternClassName,
|
|
972
|
-
className
|
|
973
|
+
className,
|
|
973
974
|
containerClassName,
|
|
974
|
-
style: {
|
|
975
|
-
backgroundImage: `url(${patternUrl})`,
|
|
976
|
-
backgroundRepeat: "repeat"
|
|
977
|
-
},
|
|
978
975
|
children: /* @__PURE__ */ jsx("div", { className: cn("grid gap-6 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: featuresContent })
|
|
979
976
|
}
|
|
980
977
|
);
|