@opensite/ui 2.0.2 → 2.0.4
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/hero-ai-powered-carousel.cjs +152 -77
- package/dist/hero-ai-powered-carousel.d.cts +5 -13
- package/dist/hero-ai-powered-carousel.d.ts +5 -13
- package/dist/hero-ai-powered-carousel.js +152 -77
- package/dist/hero-announcement-badge.cjs +679 -665
- package/dist/hero-announcement-badge.d.cts +1 -1
- package/dist/hero-announcement-badge.d.ts +1 -1
- package/dist/hero-announcement-badge.js +689 -675
- package/dist/hero-badge-shadow-overlay.cjs +79 -32
- package/dist/hero-badge-shadow-overlay.js +80 -33
- package/dist/hero-centered-image-grid.cjs +106 -95
- package/dist/hero-centered-image-grid.d.cts +2 -14
- package/dist/hero-centered-image-grid.d.ts +2 -14
- package/dist/hero-centered-image-grid.js +106 -95
- package/dist/hero-community-survey-cta.cjs +149 -58
- package/dist/hero-community-survey-cta.d.cts +1 -1
- package/dist/hero-community-survey-cta.d.ts +1 -1
- package/dist/hero-community-survey-cta.js +149 -58
- package/dist/hero-design-carousel-portfolio.cjs +158 -66
- package/dist/hero-design-carousel-portfolio.d.cts +7 -11
- package/dist/hero-design-carousel-portfolio.d.ts +7 -11
- package/dist/hero-design-carousel-portfolio.js +158 -66
- package/dist/hero-event-registration.cjs +765 -718
- package/dist/hero-event-registration.js +761 -714
- package/dist/hero-fullscreen-background-image.cjs +746 -649
- package/dist/hero-fullscreen-background-image.d.cts +12 -4
- package/dist/hero-fullscreen-background-image.d.ts +12 -4
- package/dist/hero-fullscreen-background-image.js +746 -649
- package/dist/hero-fullscreen-logo-cta.cjs +89 -31
- package/dist/hero-fullscreen-logo-cta.js +89 -31
- package/dist/hero-gradient-avatars-rating.cjs +847 -816
- package/dist/hero-gradient-avatars-rating.d.cts +1 -13
- package/dist/hero-gradient-avatars-rating.d.ts +1 -13
- package/dist/hero-gradient-avatars-rating.js +844 -813
- package/dist/hero-gradient-client-focused.cjs +690 -629
- package/dist/hero-gradient-client-focused.d.cts +1 -1
- package/dist/hero-gradient-client-focused.d.ts +1 -1
- package/dist/hero-gradient-client-focused.js +689 -628
- package/dist/hero-grid-pattern-efficiency.cjs +59 -47
- package/dist/hero-grid-pattern-efficiency.d.cts +1 -8
- package/dist/hero-grid-pattern-efficiency.d.ts +1 -8
- package/dist/hero-grid-pattern-efficiency.js +59 -47
- package/dist/hero-logo-centered-screenshot.cjs +1 -1
- package/dist/hero-logo-centered-screenshot.js +1 -1
- package/dist/hero-marketplace-scattered-images.cjs +2 -6
- package/dist/hero-marketplace-scattered-images.d.cts +1 -4
- package/dist/hero-marketplace-scattered-images.d.ts +1 -4
- package/dist/hero-marketplace-scattered-images.js +2 -6
- package/dist/hero-pattern-logo-tech-stack.cjs +1 -1
- package/dist/hero-pattern-logo-tech-stack.js +1 -1
- package/dist/hero-platform-features-grid.cjs +5 -5
- package/dist/hero-platform-features-grid.js +5 -5
- package/dist/hero-simple-centered-image.cjs +140 -44
- package/dist/hero-simple-centered-image.d.cts +1 -1
- package/dist/hero-simple-centered-image.d.ts +1 -1
- package/dist/hero-simple-centered-image.js +140 -44
- package/dist/hero-spiral-pattern-cards.cjs +857 -809
- package/dist/hero-spiral-pattern-cards.d.cts +5 -1
- package/dist/hero-spiral-pattern-cards.d.ts +5 -1
- package/dist/hero-spiral-pattern-cards.js +856 -808
- package/dist/hero-split-geometric-shapes.cjs +754 -723
- package/dist/hero-split-geometric-shapes.d.cts +5 -1
- package/dist/hero-split-geometric-shapes.d.ts +5 -1
- package/dist/hero-split-geometric-shapes.js +748 -717
- package/dist/hero-task-timer-animated.cjs +698 -650
- package/dist/hero-task-timer-animated.d.cts +5 -1
- package/dist/hero-task-timer-animated.d.ts +5 -1
- package/dist/hero-task-timer-animated.js +697 -649
- package/dist/hero-ui-library-showcase.cjs +734 -719
- package/dist/hero-ui-library-showcase.d.cts +5 -1
- package/dist/hero-ui-library-showcase.d.ts +5 -1
- package/dist/hero-ui-library-showcase.js +732 -717
- package/dist/registry.cjs +1035 -788
- package/dist/registry.js +1035 -788
- package/package.json +1 -1
|
@@ -5,8 +5,8 @@ import { clsx } from 'clsx';
|
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { cva } from 'class-variance-authority';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
|
-
import { Icon } from '@page-speed/icon';
|
|
9
8
|
import { Img } from '@page-speed/img';
|
|
9
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
10
10
|
|
|
11
11
|
// components/blocks/hero/hero-community-survey-cta.tsx
|
|
12
12
|
function cn(...inputs) {
|
|
@@ -430,10 +430,6 @@ var Pressable = React.forwardRef(
|
|
|
430
430
|
}
|
|
431
431
|
);
|
|
432
432
|
Pressable.displayName = "Pressable";
|
|
433
|
-
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
434
|
-
function DynamicIcon({ apiKey, ...props }) {
|
|
435
|
-
return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
436
|
-
}
|
|
437
433
|
var maxWidthStyles = {
|
|
438
434
|
sm: "max-w-screen-sm",
|
|
439
435
|
md: "max-w-screen-md",
|
|
@@ -809,6 +805,38 @@ var Section = React__default.forwardRef(
|
|
|
809
805
|
}
|
|
810
806
|
);
|
|
811
807
|
Section.displayName = "Section";
|
|
808
|
+
var badgeVariants = cva(
|
|
809
|
+
"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
810
|
+
{
|
|
811
|
+
variants: {
|
|
812
|
+
variant: {
|
|
813
|
+
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
814
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
815
|
+
destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
816
|
+
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
817
|
+
}
|
|
818
|
+
},
|
|
819
|
+
defaultVariants: {
|
|
820
|
+
variant: "default"
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
);
|
|
824
|
+
function Badge({
|
|
825
|
+
className,
|
|
826
|
+
variant,
|
|
827
|
+
asChild = false,
|
|
828
|
+
...props
|
|
829
|
+
}) {
|
|
830
|
+
const Comp = asChild ? Slot : "span";
|
|
831
|
+
return /* @__PURE__ */ jsx(
|
|
832
|
+
Comp,
|
|
833
|
+
{
|
|
834
|
+
"data-slot": "badge",
|
|
835
|
+
className: cn(badgeVariants({ variant }), className),
|
|
836
|
+
...props
|
|
837
|
+
}
|
|
838
|
+
);
|
|
839
|
+
}
|
|
812
840
|
var MOBILE_CLASSES = {
|
|
813
841
|
"fit-left": "items-start md:items-center",
|
|
814
842
|
"fit-center": "items-center",
|
|
@@ -892,11 +920,11 @@ function HeroCommunitySurveyCta({
|
|
|
892
920
|
rightOverlayImage,
|
|
893
921
|
imagesSlot,
|
|
894
922
|
background,
|
|
895
|
-
|
|
923
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
924
|
+
spacing = "pt-32 pb-8 md:pt-32 md:pb-32",
|
|
896
925
|
pattern,
|
|
897
926
|
patternOpacity,
|
|
898
927
|
className,
|
|
899
|
-
containerClassName,
|
|
900
928
|
announcementClassName,
|
|
901
929
|
headingClassName,
|
|
902
930
|
descriptionClassName,
|
|
@@ -906,29 +934,22 @@ function HeroCommunitySurveyCta({
|
|
|
906
934
|
}) {
|
|
907
935
|
const renderAnnouncement = useMemo(() => {
|
|
908
936
|
if (announcementSlot) return announcementSlot;
|
|
909
|
-
return /* @__PURE__ */ jsxs(
|
|
910
|
-
|
|
937
|
+
return /* @__PURE__ */ jsx(Pressable, { href: announcementHref, children: /* @__PURE__ */ jsxs(
|
|
938
|
+
Badge,
|
|
911
939
|
{
|
|
912
|
-
href: announcementHref,
|
|
913
940
|
className: cn(
|
|
914
|
-
"group mx-auto
|
|
941
|
+
"group mx-auto w-fit gap-3 px-5 py-2 text-sm h-fit",
|
|
915
942
|
announcementClassName
|
|
916
943
|
),
|
|
917
944
|
children: [
|
|
918
|
-
/* @__PURE__ */
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
name: "lucide/minus",
|
|
924
|
-
size: 16,
|
|
925
|
-
className: "mx-1 inline-block"
|
|
926
|
-
}
|
|
927
|
-
),
|
|
928
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold group-hover:underline", children: announcementLinkText })
|
|
945
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
946
|
+
/* @__PURE__ */ jsx("div", { className: "font-medium", children: announcementPrimary }),
|
|
947
|
+
announcementSecondary
|
|
948
|
+
] }),
|
|
949
|
+
announcementLinkText ? /* @__PURE__ */ jsx("span", { className: "font-semibold pl-4 ml-4 border-l", children: announcementLinkText }) : null
|
|
929
950
|
]
|
|
930
951
|
}
|
|
931
|
-
);
|
|
952
|
+
) });
|
|
932
953
|
}, [
|
|
933
954
|
announcementSlot,
|
|
934
955
|
announcementHref,
|
|
@@ -937,46 +958,119 @@ function HeroCommunitySurveyCta({
|
|
|
937
958
|
announcementSecondary,
|
|
938
959
|
announcementLinkText
|
|
939
960
|
]);
|
|
961
|
+
const imageCount = useMemo(() => {
|
|
962
|
+
let count = 0;
|
|
963
|
+
if (mainImage) count++;
|
|
964
|
+
if (leftOverlayImage) count++;
|
|
965
|
+
if (rightOverlayImage) count++;
|
|
966
|
+
return count;
|
|
967
|
+
}, [mainImage, leftOverlayImage, rightOverlayImage]);
|
|
940
968
|
const renderImages = useMemo(() => {
|
|
941
969
|
if (imagesSlot) return imagesSlot;
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
alt: mainImage.alt,
|
|
948
|
-
className: mainImage.className,
|
|
949
|
-
optixFlowConfig
|
|
950
|
-
}
|
|
951
|
-
),
|
|
952
|
-
leftOverlayImage && /* @__PURE__ */ jsx(
|
|
953
|
-
Img,
|
|
970
|
+
if (imageCount === 0) return null;
|
|
971
|
+
if (imageCount === 1) {
|
|
972
|
+
const img = mainImage || leftOverlayImage || rightOverlayImage;
|
|
973
|
+
return /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(
|
|
974
|
+
"div",
|
|
954
975
|
{
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
976
|
+
className: cn(
|
|
977
|
+
"relative aspect-4/3 w-full max-w-lg overflow-hidden rounded-lg shadow-2xl",
|
|
978
|
+
imagesClassName
|
|
979
|
+
),
|
|
980
|
+
children: /* @__PURE__ */ jsx(
|
|
981
|
+
Img,
|
|
982
|
+
{
|
|
983
|
+
src: img.src,
|
|
984
|
+
alt: img.alt,
|
|
985
|
+
className: "h-full w-full object-cover",
|
|
986
|
+
optixFlowConfig
|
|
987
|
+
}
|
|
988
|
+
)
|
|
959
989
|
}
|
|
960
|
-
)
|
|
961
|
-
|
|
962
|
-
|
|
990
|
+
) });
|
|
991
|
+
}
|
|
992
|
+
if (imageCount === 2) {
|
|
993
|
+
const imgs = [mainImage, leftOverlayImage, rightOverlayImage].filter(
|
|
994
|
+
Boolean
|
|
995
|
+
);
|
|
996
|
+
return /* @__PURE__ */ jsxs(
|
|
997
|
+
"div",
|
|
963
998
|
{
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
999
|
+
className: cn(
|
|
1000
|
+
"relative min-h-[350px] md:min-h-[400px] lg:min-h-[450px]",
|
|
1001
|
+
imagesClassName
|
|
1002
|
+
),
|
|
1003
|
+
children: [
|
|
1004
|
+
/* @__PURE__ */ jsx("div", { className: "absolute left-0 top-0 z-10 aspect-4/3 w-[70%] overflow-hidden rounded-lg shadow-2xl md:w-[65%]", children: /* @__PURE__ */ jsx(
|
|
1005
|
+
Img,
|
|
1006
|
+
{
|
|
1007
|
+
src: imgs[0].src,
|
|
1008
|
+
alt: imgs[0].alt,
|
|
1009
|
+
className: "h-full w-full object-cover",
|
|
1010
|
+
optixFlowConfig
|
|
1011
|
+
}
|
|
1012
|
+
) }),
|
|
1013
|
+
/* @__PURE__ */ jsx("div", { className: "absolute bottom-0 right-0 z-20 aspect-3/4 w-[55%] overflow-hidden rounded-lg shadow-2xl md:w-[50%]", children: /* @__PURE__ */ jsx(
|
|
1014
|
+
Img,
|
|
1015
|
+
{
|
|
1016
|
+
src: imgs[1].src,
|
|
1017
|
+
alt: imgs[1].alt,
|
|
1018
|
+
className: "h-full w-full object-cover",
|
|
1019
|
+
optixFlowConfig
|
|
1020
|
+
}
|
|
1021
|
+
) })
|
|
1022
|
+
]
|
|
968
1023
|
}
|
|
969
|
-
)
|
|
970
|
-
|
|
1024
|
+
);
|
|
1025
|
+
}
|
|
1026
|
+
return /* @__PURE__ */ jsxs(
|
|
1027
|
+
"div",
|
|
1028
|
+
{
|
|
1029
|
+
className: cn(
|
|
1030
|
+
"relative min-h-[380px] md:min-h-[430px] lg:min-h-[480px]",
|
|
1031
|
+
imagesClassName
|
|
1032
|
+
),
|
|
1033
|
+
children: [
|
|
1034
|
+
/* @__PURE__ */ jsx("div", { className: "absolute left-0 top-0 z-10 aspect-4/3 w-[65%] overflow-hidden rounded-lg shadow-2xl", children: /* @__PURE__ */ jsx(
|
|
1035
|
+
Img,
|
|
1036
|
+
{
|
|
1037
|
+
src: mainImage.src,
|
|
1038
|
+
alt: mainImage.alt,
|
|
1039
|
+
className: "h-full w-full object-cover",
|
|
1040
|
+
optixFlowConfig
|
|
1041
|
+
}
|
|
1042
|
+
) }),
|
|
1043
|
+
/* @__PURE__ */ jsx("div", { className: "absolute bottom-0 right-0 z-20 aspect-3/4 w-[50%] overflow-hidden rounded-lg shadow-2xl", children: /* @__PURE__ */ jsx(
|
|
1044
|
+
Img,
|
|
1045
|
+
{
|
|
1046
|
+
src: rightOverlayImage.src,
|
|
1047
|
+
alt: rightOverlayImage.alt,
|
|
1048
|
+
className: "h-full w-full object-cover",
|
|
1049
|
+
optixFlowConfig
|
|
1050
|
+
}
|
|
1051
|
+
) }),
|
|
1052
|
+
/* @__PURE__ */ jsx("div", { className: "absolute bottom-4 left-[10%] z-30 aspect-square w-[35%] overflow-hidden rounded-lg shadow-2xl md:bottom-6 md:left-[15%]", children: /* @__PURE__ */ jsx(
|
|
1053
|
+
Img,
|
|
1054
|
+
{
|
|
1055
|
+
src: leftOverlayImage.src,
|
|
1056
|
+
alt: leftOverlayImage.alt,
|
|
1057
|
+
className: "h-full w-full object-cover",
|
|
1058
|
+
optixFlowConfig
|
|
1059
|
+
}
|
|
1060
|
+
) })
|
|
1061
|
+
]
|
|
1062
|
+
}
|
|
1063
|
+
);
|
|
971
1064
|
}, [
|
|
972
1065
|
imagesSlot,
|
|
973
1066
|
imagesClassName,
|
|
1067
|
+
imageCount,
|
|
974
1068
|
mainImage,
|
|
975
1069
|
leftOverlayImage,
|
|
976
1070
|
rightOverlayImage,
|
|
977
1071
|
optixFlowConfig
|
|
978
1072
|
]);
|
|
979
|
-
return /* @__PURE__ */
|
|
1073
|
+
return /* @__PURE__ */ jsx(
|
|
980
1074
|
Section,
|
|
981
1075
|
{
|
|
982
1076
|
background,
|
|
@@ -985,14 +1079,14 @@ function HeroCommunitySurveyCta({
|
|
|
985
1079
|
patternOpacity,
|
|
986
1080
|
className,
|
|
987
1081
|
containerClassName,
|
|
988
|
-
children: [
|
|
989
|
-
/* @__PURE__ */ jsxs("div", {
|
|
1082
|
+
children: /* @__PURE__ */ jsxs("div", { className: "relative grid grid-cols-1 items-center gap-8 lg:grid-cols-2 lg:gap-12", children: [
|
|
1083
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
990
1084
|
renderAnnouncement,
|
|
991
1085
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
992
1086
|
"h1",
|
|
993
1087
|
{
|
|
994
1088
|
className: cn(
|
|
995
|
-
"
|
|
1089
|
+
"max-w-4xl text-4xl font-semibold text-balance lg:text-6xl",
|
|
996
1090
|
headingClassName
|
|
997
1091
|
),
|
|
998
1092
|
children: heading
|
|
@@ -1002,7 +1096,7 @@ function HeroCommunitySurveyCta({
|
|
|
1002
1096
|
"p",
|
|
1003
1097
|
{
|
|
1004
1098
|
className: cn(
|
|
1005
|
-
"
|
|
1099
|
+
"max-w-4xl lg:text-xl text-balance",
|
|
1006
1100
|
descriptionClassName
|
|
1007
1101
|
),
|
|
1008
1102
|
children: description
|
|
@@ -1017,11 +1111,8 @@ function HeroCommunitySurveyCta({
|
|
|
1017
1111
|
}
|
|
1018
1112
|
)
|
|
1019
1113
|
] }),
|
|
1020
|
-
/* @__PURE__ */
|
|
1021
|
-
|
|
1022
|
-
renderImages
|
|
1023
|
-
] })
|
|
1024
|
-
]
|
|
1114
|
+
/* @__PURE__ */ jsx("div", { className: "relative", children: renderImages })
|
|
1115
|
+
] })
|
|
1025
1116
|
}
|
|
1026
1117
|
);
|
|
1027
1118
|
}
|
|
@@ -6,11 +6,11 @@ var AutoScroll = require('embla-carousel-auto-scroll');
|
|
|
6
6
|
var Autoplay = require('embla-carousel-autoplay');
|
|
7
7
|
var clsx = require('clsx');
|
|
8
8
|
var tailwindMerge = require('tailwind-merge');
|
|
9
|
-
var classVarianceAuthority = require('class-variance-authority');
|
|
10
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
11
9
|
var icon = require('@page-speed/icon');
|
|
10
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
12
11
|
var img = require('@page-speed/img');
|
|
13
12
|
var useEmblaCarousel = require('embla-carousel-react');
|
|
13
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
14
14
|
|
|
15
15
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
16
|
|
|
@@ -41,6 +41,10 @@ var useEmblaCarousel__default = /*#__PURE__*/_interopDefault(useEmblaCarousel);
|
|
|
41
41
|
function cn(...inputs) {
|
|
42
42
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
43
43
|
}
|
|
44
|
+
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
45
|
+
function DynamicIcon({ apiKey, ...props }) {
|
|
46
|
+
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
47
|
+
}
|
|
44
48
|
function normalizePhoneNumber(input) {
|
|
45
49
|
const trimmed = input.trim();
|
|
46
50
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -459,10 +463,6 @@ var Pressable = React3__namespace.forwardRef(
|
|
|
459
463
|
}
|
|
460
464
|
);
|
|
461
465
|
Pressable.displayName = "Pressable";
|
|
462
|
-
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
463
|
-
function DynamicIcon({ apiKey, ...props }) {
|
|
464
|
-
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
465
|
-
}
|
|
466
466
|
var CarouselContext = React3__namespace.createContext(null);
|
|
467
467
|
function useCarousel() {
|
|
468
468
|
const context = React3__namespace.useContext(CarouselContext);
|
|
@@ -967,6 +967,74 @@ var Section = React3__namespace.default.forwardRef(
|
|
|
967
967
|
}
|
|
968
968
|
);
|
|
969
969
|
Section.displayName = "Section";
|
|
970
|
+
var MOBILE_CLASSES = {
|
|
971
|
+
"fit-left": "items-start md:items-center",
|
|
972
|
+
"fit-center": "items-center",
|
|
973
|
+
"fit-right": "items-end md:items-center",
|
|
974
|
+
"full-left": "items-stretch md:items-center",
|
|
975
|
+
"full-center": "items-stretch md:items-center",
|
|
976
|
+
"full-right": "items-stretch md:items-center"
|
|
977
|
+
};
|
|
978
|
+
function BlockActions({
|
|
979
|
+
mobileConfig,
|
|
980
|
+
actionsClassName,
|
|
981
|
+
verticalSpacing = "mt-4 md:mt-8",
|
|
982
|
+
actions,
|
|
983
|
+
actionsSlot
|
|
984
|
+
}) {
|
|
985
|
+
const renderAction = React3__namespace.useCallback(
|
|
986
|
+
(action, idx) => {
|
|
987
|
+
const {
|
|
988
|
+
label,
|
|
989
|
+
icon,
|
|
990
|
+
iconAfter,
|
|
991
|
+
children,
|
|
992
|
+
href,
|
|
993
|
+
onClick,
|
|
994
|
+
className: actionClassName,
|
|
995
|
+
...pressableProps
|
|
996
|
+
} = action;
|
|
997
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
998
|
+
Pressable,
|
|
999
|
+
{
|
|
1000
|
+
href,
|
|
1001
|
+
onClick,
|
|
1002
|
+
asButton: action.asButton || true,
|
|
1003
|
+
className: actionClassName,
|
|
1004
|
+
...pressableProps,
|
|
1005
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1006
|
+
icon,
|
|
1007
|
+
label,
|
|
1008
|
+
iconAfter
|
|
1009
|
+
] })
|
|
1010
|
+
},
|
|
1011
|
+
idx
|
|
1012
|
+
);
|
|
1013
|
+
},
|
|
1014
|
+
[]
|
|
1015
|
+
);
|
|
1016
|
+
const width = mobileConfig?.width ?? "full";
|
|
1017
|
+
const position = mobileConfig?.position ?? "center";
|
|
1018
|
+
const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
|
|
1019
|
+
if (actionsSlot) {
|
|
1020
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { children: actionsSlot });
|
|
1021
|
+
} else if (actions && actions?.length > 0) {
|
|
1022
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1023
|
+
"div",
|
|
1024
|
+
{
|
|
1025
|
+
className: cn(
|
|
1026
|
+
"flex flex-col md:flex-row flex-wrap gap-4",
|
|
1027
|
+
mobileLayoutClass,
|
|
1028
|
+
actionsClassName,
|
|
1029
|
+
verticalSpacing
|
|
1030
|
+
),
|
|
1031
|
+
children: actions.map((action, index) => renderAction(action, index))
|
|
1032
|
+
}
|
|
1033
|
+
);
|
|
1034
|
+
} else {
|
|
1035
|
+
return null;
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
970
1038
|
function HeroDesignCarouselPortfolio({
|
|
971
1039
|
logo,
|
|
972
1040
|
logoSlot,
|
|
@@ -974,18 +1042,17 @@ function HeroDesignCarouselPortfolio({
|
|
|
974
1042
|
featuresSlot,
|
|
975
1043
|
heading,
|
|
976
1044
|
description,
|
|
977
|
-
|
|
978
|
-
primaryActionAvatar,
|
|
979
|
-
secondaryAction,
|
|
1045
|
+
actions,
|
|
980
1046
|
actionsSlot,
|
|
1047
|
+
actionsClassName,
|
|
981
1048
|
carouselImages,
|
|
982
1049
|
carouselSlot,
|
|
983
1050
|
background,
|
|
984
|
-
|
|
1051
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
1052
|
+
spacing = "xl",
|
|
985
1053
|
pattern,
|
|
986
1054
|
patternOpacity,
|
|
987
1055
|
className,
|
|
988
|
-
containerClassName,
|
|
989
1056
|
contentClassName,
|
|
990
1057
|
headingClassName,
|
|
991
1058
|
descriptionClassName,
|
|
@@ -1001,7 +1068,7 @@ function HeroDesignCarouselPortfolio({
|
|
|
1001
1068
|
img.Img,
|
|
1002
1069
|
{
|
|
1003
1070
|
src: logoSrc,
|
|
1004
|
-
className: cn("h-12 lg:h-16", logo.className),
|
|
1071
|
+
className: cn("object-contain w-auto h-12 lg:h-16", logo.className),
|
|
1005
1072
|
alt: logo.alt,
|
|
1006
1073
|
optixFlowConfig
|
|
1007
1074
|
}
|
|
@@ -1010,53 +1077,23 @@ function HeroDesignCarouselPortfolio({
|
|
|
1010
1077
|
const renderFeatures = React3.useMemo(() => {
|
|
1011
1078
|
if (featuresSlot) return featuresSlot;
|
|
1012
1079
|
if (!features || features.length === 0) return null;
|
|
1013
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1014
|
-
|
|
1015
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.title })
|
|
1016
|
-
] }, index)) });
|
|
1017
|
-
}, [featuresSlot, features, featuresClassName]);
|
|
1018
|
-
const renderPrimaryAction = React3.useMemo(() => {
|
|
1019
|
-
if (actionsSlot) return null;
|
|
1020
|
-
if (!primaryAction) return null;
|
|
1021
|
-
const { label, className: actionClassName, ...pressableProps } = primaryAction;
|
|
1022
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1023
|
-
Pressable,
|
|
1080
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1081
|
+
"div",
|
|
1024
1082
|
{
|
|
1025
|
-
|
|
1026
|
-
className:
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1030
|
-
img.Img,
|
|
1083
|
+
className: cn("hidden items-center gap-6 lg:flex", featuresClassName),
|
|
1084
|
+
children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 ", children: [
|
|
1085
|
+
feature.icon ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1086
|
+
DynamicIcon,
|
|
1031
1087
|
{
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
className: "size-9 rounded-full object-cover lg:size-11",
|
|
1035
|
-
optixFlowConfig
|
|
1088
|
+
name: feature.iconName || "lucide/check-circle",
|
|
1089
|
+
size: 24
|
|
1036
1090
|
}
|
|
1037
1091
|
),
|
|
1038
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children:
|
|
1039
|
-
]
|
|
1040
|
-
}
|
|
1041
|
-
);
|
|
1042
|
-
}, [actionsSlot, primaryAction, primaryActionAvatar, optixFlowConfig]);
|
|
1043
|
-
const renderSecondaryAction = React3.useMemo(() => {
|
|
1044
|
-
if (actionsSlot) return null;
|
|
1045
|
-
if (!secondaryAction) return null;
|
|
1046
|
-
const { label, iconAfter, className: actionClassName, ...pressableProps } = secondaryAction;
|
|
1047
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1048
|
-
Pressable,
|
|
1049
|
-
{
|
|
1050
|
-
asButton: true,
|
|
1051
|
-
className: actionClassName,
|
|
1052
|
-
...pressableProps,
|
|
1053
|
-
children: [
|
|
1054
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: label }),
|
|
1055
|
-
iconAfter
|
|
1056
|
-
]
|
|
1092
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.title })
|
|
1093
|
+
] }, index))
|
|
1057
1094
|
}
|
|
1058
1095
|
);
|
|
1059
|
-
}, [
|
|
1096
|
+
}, [featuresSlot, features, featuresClassName]);
|
|
1060
1097
|
const renderCarousel = React3.useMemo(() => {
|
|
1061
1098
|
if (carouselSlot) return carouselSlot;
|
|
1062
1099
|
if (!carouselImages || carouselImages.length === 0) return null;
|
|
@@ -1076,7 +1113,10 @@ function HeroDesignCarouselPortfolio({
|
|
|
1076
1113
|
delay: 1e3
|
|
1077
1114
|
})
|
|
1078
1115
|
],
|
|
1079
|
-
className: cn(
|
|
1116
|
+
className: cn(
|
|
1117
|
+
"relative mx-auto w-full max-w-full overflow-hidden from-white to-transparent before:absolute before:top-0 before:left-0 before:z-10 before:h-full before:w-[20%] before:bg-linear-to-r before:content-[''] after:absolute after:top-0 after:right-0 after:z-10 after:h-full after:w-[20%] after:bg-linear-to-l after:from-white after:to-transparent after:content-['']",
|
|
1118
|
+
carouselClassName
|
|
1119
|
+
),
|
|
1080
1120
|
children: /* @__PURE__ */ jsxRuntime.jsx(CarouselContent, { className: "ml-5 flex gap-5 pl-4", children: carouselImages.map((image, index) => /* @__PURE__ */ jsxRuntime.jsx(CarouselItem, { className: "basis-[496px] bg-background", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[380px] basis-[480px] overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1081
1121
|
img.Img,
|
|
1082
1122
|
{
|
|
@@ -1097,20 +1137,72 @@ function HeroDesignCarouselPortfolio({
|
|
|
1097
1137
|
pattern,
|
|
1098
1138
|
patternOpacity,
|
|
1099
1139
|
className: cn("relative", className),
|
|
1140
|
+
containerClassName,
|
|
1100
1141
|
children: [
|
|
1101
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
1102
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "
|
|
1103
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1142
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
1143
|
+
renderLogo ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-8", children: renderLogo }) : null,
|
|
1144
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1145
|
+
"div",
|
|
1146
|
+
{
|
|
1147
|
+
className: cn(
|
|
1148
|
+
"flex flex-col gap-10 pt-12 pb-8 lg:pt-24 lg:pb-12",
|
|
1149
|
+
contentClassName
|
|
1150
|
+
),
|
|
1151
|
+
children: [
|
|
1152
|
+
renderFeatures,
|
|
1153
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 flex-col gap-4", children: [
|
|
1154
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1155
|
+
"h1",
|
|
1156
|
+
{
|
|
1157
|
+
className: cn(
|
|
1158
|
+
"max-w-6xl text-4xl tracking-tighter lg:text-7xl xl:text-9xl font-semibold",
|
|
1159
|
+
headingClassName
|
|
1160
|
+
),
|
|
1161
|
+
children: heading
|
|
1162
|
+
}
|
|
1163
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1164
|
+
"h1",
|
|
1165
|
+
{
|
|
1166
|
+
className: cn(
|
|
1167
|
+
"max-w-6xl text-4xl tracking-tighter lg:text-7xl xl:text-9xl font-semibold",
|
|
1168
|
+
headingClassName
|
|
1169
|
+
),
|
|
1170
|
+
children: heading
|
|
1171
|
+
}
|
|
1172
|
+
)),
|
|
1173
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1174
|
+
"p",
|
|
1175
|
+
{
|
|
1176
|
+
className: cn(
|
|
1177
|
+
"text-lg lg:text-2xl text-balance",
|
|
1178
|
+
descriptionClassName
|
|
1179
|
+
),
|
|
1180
|
+
children: description
|
|
1181
|
+
}
|
|
1182
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1183
|
+
"p",
|
|
1184
|
+
{
|
|
1185
|
+
className: cn(
|
|
1186
|
+
"text-lg lg:text-2xl text-balance",
|
|
1187
|
+
descriptionClassName
|
|
1188
|
+
),
|
|
1189
|
+
children: description
|
|
1190
|
+
}
|
|
1191
|
+
))
|
|
1192
|
+
] }) }),
|
|
1193
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1194
|
+
BlockActions,
|
|
1195
|
+
{
|
|
1196
|
+
actions,
|
|
1197
|
+
actionsSlot,
|
|
1198
|
+
actionsClassName
|
|
1199
|
+
}
|
|
1200
|
+
)
|
|
1201
|
+
]
|
|
1202
|
+
}
|
|
1203
|
+
)
|
|
1111
1204
|
] }),
|
|
1112
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex flex-col", children: renderCarousel })
|
|
1113
|
-
actionsSlot || renderSecondaryAction
|
|
1205
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex flex-col", children: renderCarousel })
|
|
1114
1206
|
]
|
|
1115
1207
|
}
|
|
1116
1208
|
);
|
|
@@ -34,21 +34,17 @@ interface HeroDesignCarouselPortfolioProps {
|
|
|
34
34
|
*/
|
|
35
35
|
description?: React.ReactNode;
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* Array of action configurations for CTA buttons
|
|
38
38
|
*/
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Avatar image for primary action button
|
|
42
|
-
*/
|
|
43
|
-
primaryActionAvatar?: string;
|
|
44
|
-
/**
|
|
45
|
-
* Secondary action configuration (portfolio button)
|
|
46
|
-
*/
|
|
47
|
-
secondaryAction?: ActionConfig;
|
|
39
|
+
actions?: ActionConfig[];
|
|
48
40
|
/**
|
|
49
41
|
* Custom slot for actions (overrides action props)
|
|
50
42
|
*/
|
|
51
43
|
actionsSlot?: React.ReactNode;
|
|
44
|
+
/**
|
|
45
|
+
* Additional CSS classes for the actions container
|
|
46
|
+
*/
|
|
47
|
+
actionsClassName?: string;
|
|
52
48
|
/**
|
|
53
49
|
* Array of carousel images
|
|
54
50
|
*/
|
|
@@ -106,6 +102,6 @@ interface HeroDesignCarouselPortfolioProps {
|
|
|
106
102
|
*/
|
|
107
103
|
optixFlowConfig?: OptixFlowConfig;
|
|
108
104
|
}
|
|
109
|
-
declare function HeroDesignCarouselPortfolio({ logo, logoSlot, features, featuresSlot, heading, description,
|
|
105
|
+
declare function HeroDesignCarouselPortfolio({ logo, logoSlot, features, featuresSlot, heading, description, actions, actionsSlot, actionsClassName, carouselImages, carouselSlot, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, featuresClassName, carouselClassName, optixFlowConfig, }: HeroDesignCarouselPortfolioProps): React.JSX.Element;
|
|
110
106
|
|
|
111
107
|
export { HeroDesignCarouselPortfolio, type HeroDesignCarouselPortfolioProps };
|
|
@@ -34,21 +34,17 @@ interface HeroDesignCarouselPortfolioProps {
|
|
|
34
34
|
*/
|
|
35
35
|
description?: React.ReactNode;
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* Array of action configurations for CTA buttons
|
|
38
38
|
*/
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Avatar image for primary action button
|
|
42
|
-
*/
|
|
43
|
-
primaryActionAvatar?: string;
|
|
44
|
-
/**
|
|
45
|
-
* Secondary action configuration (portfolio button)
|
|
46
|
-
*/
|
|
47
|
-
secondaryAction?: ActionConfig;
|
|
39
|
+
actions?: ActionConfig[];
|
|
48
40
|
/**
|
|
49
41
|
* Custom slot for actions (overrides action props)
|
|
50
42
|
*/
|
|
51
43
|
actionsSlot?: React.ReactNode;
|
|
44
|
+
/**
|
|
45
|
+
* Additional CSS classes for the actions container
|
|
46
|
+
*/
|
|
47
|
+
actionsClassName?: string;
|
|
52
48
|
/**
|
|
53
49
|
* Array of carousel images
|
|
54
50
|
*/
|
|
@@ -106,6 +102,6 @@ interface HeroDesignCarouselPortfolioProps {
|
|
|
106
102
|
*/
|
|
107
103
|
optixFlowConfig?: OptixFlowConfig;
|
|
108
104
|
}
|
|
109
|
-
declare function HeroDesignCarouselPortfolio({ logo, logoSlot, features, featuresSlot, heading, description,
|
|
105
|
+
declare function HeroDesignCarouselPortfolio({ logo, logoSlot, features, featuresSlot, heading, description, actions, actionsSlot, actionsClassName, carouselImages, carouselSlot, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, headingClassName, descriptionClassName, featuresClassName, carouselClassName, optixFlowConfig, }: HeroDesignCarouselPortfolioProps): React.JSX.Element;
|
|
110
106
|
|
|
111
107
|
export { HeroDesignCarouselPortfolio, type HeroDesignCarouselPortfolioProps };
|