@opensite/ui 2.0.8 → 2.1.0

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.
Files changed (43) hide show
  1. package/dist/hero-agency-animated-images.cjs +4 -4
  2. package/dist/hero-agency-animated-images.js +4 -4
  3. package/dist/hero-business-carousel-dots.cjs +46 -36
  4. package/dist/hero-business-carousel-dots.js +46 -36
  5. package/dist/hero-coming-soon-countdown.cjs +93 -54
  6. package/dist/hero-coming-soon-countdown.d.cts +31 -6
  7. package/dist/hero-coming-soon-countdown.d.ts +31 -6
  8. package/dist/hero-coming-soon-countdown.js +93 -54
  9. package/dist/hero-creative-studio-stacked.cjs +9 -6
  10. package/dist/hero-creative-studio-stacked.d.cts +5 -1
  11. package/dist/hero-creative-studio-stacked.d.ts +5 -1
  12. package/dist/hero-creative-studio-stacked.js +9 -6
  13. package/dist/hero-customer-support-layered.cjs +1 -1
  14. package/dist/hero-customer-support-layered.js +1 -1
  15. package/dist/hero-developer-tools-code.cjs +2 -2
  16. package/dist/hero-developer-tools-code.js +2 -2
  17. package/dist/hero-digital-agency-fullscreen.cjs +14 -12
  18. package/dist/hero-digital-agency-fullscreen.d.cts +1 -1
  19. package/dist/hero-digital-agency-fullscreen.d.ts +1 -1
  20. package/dist/hero-digital-agency-fullscreen.js +14 -12
  21. package/dist/hero-ecommerce-product-showcase.cjs +76 -57
  22. package/dist/hero-ecommerce-product-showcase.js +76 -57
  23. package/dist/hero-enterprise-security.cjs +81 -60
  24. package/dist/hero-enterprise-security.js +81 -60
  25. package/dist/hero-event-registration.cjs +43 -10
  26. package/dist/hero-event-registration.js +43 -10
  27. package/dist/hero-hiring-animated-text.cjs +661 -639
  28. package/dist/hero-hiring-animated-text.d.cts +1 -9
  29. package/dist/hero-hiring-animated-text.d.ts +1 -9
  30. package/dist/hero-hiring-animated-text.js +657 -635
  31. package/dist/hero-saas-dashboard-preview.cjs +88 -46
  32. package/dist/hero-saas-dashboard-preview.d.cts +34 -19
  33. package/dist/hero-saas-dashboard-preview.d.ts +34 -19
  34. package/dist/hero-saas-dashboard-preview.js +89 -47
  35. package/dist/hero-split-image-newsletter.cjs +91 -49
  36. package/dist/hero-split-image-newsletter.d.cts +33 -18
  37. package/dist/hero-split-image-newsletter.d.ts +33 -18
  38. package/dist/hero-split-image-newsletter.js +92 -50
  39. package/dist/hero-startup-launch-cta.cjs +2 -2
  40. package/dist/hero-startup-launch-cta.js +2 -2
  41. package/dist/registry.cjs +556 -345
  42. package/dist/registry.js +556 -345
  43. package/package.json +1 -1
@@ -9,6 +9,8 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
  import { Icon } from '@page-speed/icon';
10
10
  import { Slot } from '@radix-ui/react-slot';
11
11
  import { usePlatformFromUrl } from '@opensite/hooks/usePlatformFromUrl';
12
+ import { Form } from '@page-speed/forms';
13
+ import { useFileUpload, useContactForm, DynamicFormField } from '@page-speed/forms/integration';
12
14
 
13
15
  // components/blocks/hero/hero-coming-soon-countdown.tsx
14
16
  function cn(...inputs) {
@@ -436,22 +438,6 @@ var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
436
438
  function DynamicIcon({ apiKey, ...props }) {
437
439
  return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
438
440
  }
439
- function Input({ className, type, ...props }) {
440
- return /* @__PURE__ */ jsx(
441
- "input",
442
- {
443
- type,
444
- "data-slot": "input",
445
- className: cn(
446
- "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
447
- "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
448
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
449
- className
450
- ),
451
- ...props
452
- }
453
- );
454
- }
455
441
  var maxWidthStyles = {
456
442
  sm: "max-w-screen-sm",
457
443
  md: "max-w-screen-md",
@@ -940,6 +926,16 @@ var SocialLinkIcon = React.forwardRef(
940
926
  }
941
927
  );
942
928
  SocialLinkIcon.displayName = "SocialLinkIcon";
929
+ var DEFAULT_FORM_FIELDS = [
930
+ {
931
+ name: "email",
932
+ type: "email",
933
+ label: "Email Address",
934
+ placeholder: "Enter your email",
935
+ required: true,
936
+ columnSpan: 12
937
+ }
938
+ ];
943
939
  var digitVariants = {
944
940
  initial: { y: -20, opacity: 0 },
945
941
  animate: {
@@ -955,7 +951,7 @@ var digitVariants = {
955
951
  };
956
952
  function CountdownDigit({ value, label }) {
957
953
  const display = value.toString().padStart(2, "0");
958
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
954
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center bg-card pt-2 pb-6 px-2 text-card-foreground rounded-xl md:rounded-2xl shadow-xl", children: [
959
955
  /* @__PURE__ */ jsx(
960
956
  "div",
961
957
  {
@@ -975,7 +971,7 @@ function CountdownDigit({ value, label }) {
975
971
  ) })
976
972
  }
977
973
  ),
978
- /* @__PURE__ */ jsx("span", { className: cn("mt-2 text-sm"), children: label })
974
+ /* @__PURE__ */ jsx("span", { className: cn("mt-2 text-xs md:text-sm"), children: label })
979
975
  ] });
980
976
  }
981
977
  function HeroComingSoonCountdown({
@@ -985,8 +981,14 @@ function HeroComingSoonCountdown({
985
981
  description,
986
982
  countdownDate,
987
983
  countdownSlot,
988
- emailPlaceholder = "Enter your email",
989
- submitAction,
984
+ formFields = DEFAULT_FORM_FIELDS,
985
+ formConfig,
986
+ onSubmit,
987
+ onSuccess,
988
+ onError,
989
+ successMessage,
990
+ buttonAction,
991
+ helperText,
990
992
  formSlot,
991
993
  socialLinks,
992
994
  socialLinksSlot,
@@ -1005,6 +1007,18 @@ function HeroComingSoonCountdown({
1005
1007
  socialLinksClassName
1006
1008
  }) {
1007
1009
  const [timeLeft, setTimeLeft] = useState(null);
1010
+ const { uploadTokens, uploadProgress, isUploading, uploadFiles, removeFile, resetUpload } = useFileUpload({ onError });
1011
+ const { form, submissionError, formMethod, resetSubmissionState } = useContactForm({
1012
+ formFields,
1013
+ formConfig,
1014
+ onSubmit,
1015
+ onSuccess: (data) => {
1016
+ resetUpload();
1017
+ onSuccess?.(data);
1018
+ },
1019
+ onError,
1020
+ uploadTokens
1021
+ });
1008
1022
  const calculateTimeLeft = useCallback(() => {
1009
1023
  if (!countdownDate) return null;
1010
1024
  const now = Date.now();
@@ -1031,31 +1045,59 @@ function HeroComingSoonCountdown({
1031
1045
  const showCountdown = countdownSlot || timeLeft;
1032
1046
  const renderForm = useMemo(() => {
1033
1047
  if (formSlot) return formSlot;
1034
- if (!submitAction) return null;
1035
- const {
1036
- label,
1037
- icon,
1038
- iconAfter,
1039
- children,
1040
- className: actionClassName,
1041
- ...pressableProps
1042
- } = submitAction;
1043
- return /* @__PURE__ */ jsxs(Fragment, { children: [
1044
- /* @__PURE__ */ jsx(
1045
- Input,
1046
- {
1047
- type: "email",
1048
- placeholder: emailPlaceholder,
1049
- className: cn("h-12 flex-1 border-border/50")
1050
- }
1051
- ),
1052
- /* @__PURE__ */ jsx(Pressable, { asButton: true, className: actionClassName, ...pressableProps, children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
1053
- icon,
1054
- label,
1055
- iconAfter
1056
- ] }) })
1057
- ] });
1058
- }, [formSlot, submitAction, emailPlaceholder]);
1048
+ const defaultButtonAction = {
1049
+ label: "Notify Me",
1050
+ variant: "default",
1051
+ className: "h-12"
1052
+ };
1053
+ const action = buttonAction || defaultButtonAction;
1054
+ return /* @__PURE__ */ jsxs(
1055
+ Form,
1056
+ {
1057
+ form,
1058
+ notificationConfig: {
1059
+ submissionError,
1060
+ successMessage
1061
+ },
1062
+ formConfig: {
1063
+ endpoint: formConfig?.endpoint,
1064
+ method: formMethod,
1065
+ submissionConfig: formConfig?.submissionConfig
1066
+ },
1067
+ onNewSubmission: () => {
1068
+ resetUpload();
1069
+ resetSubmissionState();
1070
+ },
1071
+ children: [
1072
+ formFields.map((field) => /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsx(
1073
+ DynamicFormField,
1074
+ {
1075
+ field,
1076
+ uploadProgress,
1077
+ onFileUpload: uploadFiles,
1078
+ onFileRemove: removeFile,
1079
+ isUploading
1080
+ }
1081
+ ) }, field.name)),
1082
+ /* @__PURE__ */ jsxs(
1083
+ Pressable,
1084
+ {
1085
+ onClick: form.handleSubmit,
1086
+ asButton: true,
1087
+ variant: action.variant,
1088
+ className: cn("h-12", action.className),
1089
+ disabled: form.isSubmitting,
1090
+ children: [
1091
+ action.label,
1092
+ action.iconAfter
1093
+ ]
1094
+ }
1095
+ ),
1096
+ helperText && (typeof helperText === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm mt-2 text-center"), children: helperText }) : helperText)
1097
+ ]
1098
+ }
1099
+ );
1100
+ }, [formSlot, formFields, form, formConfig, formMethod, buttonAction, uploadProgress, uploadFiles, removeFile, isUploading, submissionError, successMessage, helperText, resetUpload, resetSubmissionState]);
1059
1101
  const renderSocialLinks = useMemo(() => {
1060
1102
  if (socialLinksSlot) return socialLinksSlot;
1061
1103
  if (!socialLinks || socialLinks.length === 0) return null;
@@ -1081,7 +1123,7 @@ function HeroComingSoonCountdown({
1081
1123
  patternClassName,
1082
1124
  className,
1083
1125
  containerClassName,
1084
- children: /* @__PURE__ */ jsxs("div", { className: "pt-8 md:pt-0", children: [
1126
+ children: /* @__PURE__ */ jsxs("div", { className: "px-6 py-8 md:px-12 md:py-12 lg:py-16 lg:px-16 rounded-2xl flex flex-col items-center text-center bg-muted gap-4 md:gap-8", children: [
1085
1127
  (badgeText || badgeIcon) && /* @__PURE__ */ jsxs(Badge, { className: cn("gap-2 px-4 py-2", badgeClassName), children: [
1086
1128
  badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon, size: 16 }),
1087
1129
  /* @__PURE__ */ jsx("span", { children: badgeText })
@@ -1090,7 +1132,7 @@ function HeroComingSoonCountdown({
1090
1132
  "h1",
1091
1133
  {
1092
1134
  className: cn(
1093
- "mt-8 max-w-3xl text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
1135
+ "max-w-full md:max-w-lg text-5xl font-bold tracking-tight md:text-6xl lg:text-7xl text-balance",
1094
1136
  headingClassName
1095
1137
  ),
1096
1138
  children: heading
@@ -1100,7 +1142,7 @@ function HeroComingSoonCountdown({
1100
1142
  "p",
1101
1143
  {
1102
1144
  className: cn(
1103
- "mt-6 max-w-xl text-lg md:text-xl text-balance",
1145
+ "max-w-full md:max-w-md text-lg md:text-xl text-balance",
1104
1146
  descriptionClassName
1105
1147
  ),
1106
1148
  children: description
@@ -1110,7 +1152,7 @@ function HeroComingSoonCountdown({
1110
1152
  "div",
1111
1153
  {
1112
1154
  className: cn(
1113
- "mt-12 grid grid-cols-4 gap-4 md:gap-8",
1155
+ "py-8 grid grid-cols-4 gap-2 md:gap-4 lg:gap-8",
1114
1156
  countdownClassName
1115
1157
  ),
1116
1158
  children: countdownSlot ?? /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -1125,7 +1167,7 @@ function HeroComingSoonCountdown({
1125
1167
  "div",
1126
1168
  {
1127
1169
  className: cn(
1128
- "mt-12 flex w-full max-w-md flex-col gap-4 sm:flex-row",
1170
+ "flex w-full max-w-md flex-col gap-4 sm:flex-row",
1129
1171
  formClassName
1130
1172
  ),
1131
1173
  children: renderForm
@@ -1134,10 +1176,7 @@ function HeroComingSoonCountdown({
1134
1176
  (socialLinksSlot || socialLinks && socialLinks.length > 0) && /* @__PURE__ */ jsx(
1135
1177
  "div",
1136
1178
  {
1137
- className: cn(
1138
- "mt-16 flex items-center gap-6",
1139
- socialLinksClassName
1140
- ),
1179
+ className: cn("mt-8 flex items-center gap-6", socialLinksClassName),
1141
1180
  children: renderSocialLinks
1142
1181
  }
1143
1182
  )
@@ -956,17 +956,18 @@ function HeroCreativeStudioStacked({
956
956
  heading,
957
957
  description,
958
958
  videoAction,
959
+ patternClassName,
959
960
  actions,
960
961
  onVideoClick,
961
962
  videoDialog,
962
963
  images,
963
964
  imagesSlot,
964
965
  background,
965
- spacing,
966
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
967
+ spacing = "xl",
966
968
  pattern,
967
969
  patternOpacity,
968
970
  className,
969
- containerClassName,
970
971
  contentClassName,
971
972
  taglineClassName,
972
973
  headingClassName,
@@ -1064,8 +1065,10 @@ function HeroCreativeStudioStacked({
1064
1065
  spacing,
1065
1066
  pattern,
1066
1067
  patternOpacity,
1067
- className: cn(className),
1068
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-10 lg:grid-cols-2", children: [
1068
+ patternClassName,
1069
+ className,
1070
+ containerClassName,
1071
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-10 lg:grid-cols-2", children: [
1069
1072
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-6", contentClassName), children: [
1070
1073
  tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1071
1074
  "p",
@@ -1082,7 +1085,7 @@ function HeroCreativeStudioStacked({
1082
1085
  "h1",
1083
1086
  {
1084
1087
  className: cn(
1085
- "max-w-[920px] text-center text-4xl leading-tight font-semibold md:text-6xl lg:text-7xl text-balance",
1088
+ "max-w-[920px] text-left text-4xl leading-tight font-semibold md:text-6xl lg:text-7xl text-balance",
1086
1089
  headingClassName
1087
1090
  ),
1088
1091
  children: heading
@@ -1092,7 +1095,7 @@ function HeroCreativeStudioStacked({
1092
1095
  "p",
1093
1096
  {
1094
1097
  className: cn(
1095
- "max-w-[750px] text-center text-base leading-relaxed font-normal md:text-xl text-balance",
1098
+ "max-w-[750px] text-left text-base leading-relaxed font-normal md:text-xl text-balance",
1096
1099
  descriptionClassName
1097
1100
  ),
1098
1101
  children: description
@@ -100,7 +100,11 @@ interface HeroCreativeStudioStackedProps {
100
100
  * OptixFlow image optimization configuration
101
101
  */
102
102
  optixFlowConfig?: OptixFlowConfig;
103
+ /**
104
+ * Additional CSS classes for the pattern overlay
105
+ */
106
+ patternClassName?: string;
103
107
  }
104
- declare function HeroCreativeStudioStacked({ videoAspectRatio, tagline, heading, description, videoAction, actions, onVideoClick, videoDialog, images, imagesSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, taglineClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, }: HeroCreativeStudioStackedProps): React.JSX.Element;
108
+ declare function HeroCreativeStudioStacked({ videoAspectRatio, tagline, heading, description, videoAction, patternClassName, actions, onVideoClick, videoDialog, images, imagesSlot, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, taglineClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, }: HeroCreativeStudioStackedProps): React.JSX.Element;
105
109
 
106
110
  export { HeroCreativeStudioStacked, type HeroCreativeStudioStackedProps };
@@ -100,7 +100,11 @@ interface HeroCreativeStudioStackedProps {
100
100
  * OptixFlow image optimization configuration
101
101
  */
102
102
  optixFlowConfig?: OptixFlowConfig;
103
+ /**
104
+ * Additional CSS classes for the pattern overlay
105
+ */
106
+ patternClassName?: string;
103
107
  }
104
- declare function HeroCreativeStudioStacked({ videoAspectRatio, tagline, heading, description, videoAction, actions, onVideoClick, videoDialog, images, imagesSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, taglineClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, }: HeroCreativeStudioStackedProps): React.JSX.Element;
108
+ declare function HeroCreativeStudioStacked({ videoAspectRatio, tagline, heading, description, videoAction, patternClassName, actions, onVideoClick, videoDialog, images, imagesSlot, background, containerClassName, spacing, pattern, patternOpacity, className, contentClassName, taglineClassName, headingClassName, descriptionClassName, actionsClassName, imagesClassName, optixFlowConfig, }: HeroCreativeStudioStackedProps): React.JSX.Element;
105
109
 
106
110
  export { HeroCreativeStudioStacked, type HeroCreativeStudioStackedProps };
@@ -933,17 +933,18 @@ function HeroCreativeStudioStacked({
933
933
  heading,
934
934
  description,
935
935
  videoAction,
936
+ patternClassName,
936
937
  actions,
937
938
  onVideoClick,
938
939
  videoDialog,
939
940
  images,
940
941
  imagesSlot,
941
942
  background,
942
- spacing,
943
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
944
+ spacing = "xl",
943
945
  pattern,
944
946
  patternOpacity,
945
947
  className,
946
- containerClassName,
947
948
  contentClassName,
948
949
  taglineClassName,
949
950
  headingClassName,
@@ -1041,8 +1042,10 @@ function HeroCreativeStudioStacked({
1041
1042
  spacing,
1042
1043
  pattern,
1043
1044
  patternOpacity,
1044
- className: cn(className),
1045
- children: /* @__PURE__ */ jsx("div", { className: cn("container", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center gap-10 lg:grid-cols-2", children: [
1045
+ patternClassName,
1046
+ className,
1047
+ containerClassName,
1048
+ children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center gap-10 lg:grid-cols-2", children: [
1046
1049
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-6", contentClassName), children: [
1047
1050
  tagline && (typeof tagline === "string" ? /* @__PURE__ */ jsx(
1048
1051
  "p",
@@ -1059,7 +1062,7 @@ function HeroCreativeStudioStacked({
1059
1062
  "h1",
1060
1063
  {
1061
1064
  className: cn(
1062
- "max-w-[920px] text-center text-4xl leading-tight font-semibold md:text-6xl lg:text-7xl text-balance",
1065
+ "max-w-[920px] text-left text-4xl leading-tight font-semibold md:text-6xl lg:text-7xl text-balance",
1063
1066
  headingClassName
1064
1067
  ),
1065
1068
  children: heading
@@ -1069,7 +1072,7 @@ function HeroCreativeStudioStacked({
1069
1072
  "p",
1070
1073
  {
1071
1074
  className: cn(
1072
- "max-w-[750px] text-center text-base leading-relaxed font-normal md:text-xl text-balance",
1075
+ "max-w-[750px] text-left text-base leading-relaxed font-normal md:text-xl text-balance",
1073
1076
  descriptionClassName
1074
1077
  ),
1075
1078
  children: description
@@ -964,7 +964,7 @@ function HeroCustomerSupportLayered({
964
964
  patternClassName,
965
965
  className,
966
966
  containerClassName,
967
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-8 md:gap-20 md:grid-cols-2", children: [
967
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 items-center gap-12 md:gap-20 md:grid-cols-2", children: [
968
968
  /* @__PURE__ */ jsxRuntime.jsxs(
969
969
  "div",
970
970
  {
@@ -943,7 +943,7 @@ function HeroCustomerSupportLayered({
943
943
  patternClassName,
944
944
  className,
945
945
  containerClassName,
946
- children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center gap-8 md:gap-20 md:grid-cols-2", children: [
946
+ children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center gap-12 md:gap-20 md:grid-cols-2", children: [
947
947
  /* @__PURE__ */ jsxs(
948
948
  "div",
949
949
  {
@@ -953,7 +953,7 @@ function HeroDeveloperToolsCode({
953
953
  const renderBadge = React3.useMemo(() => {
954
954
  if (badgeSlot) return badgeSlot;
955
955
  if (!badgeText && !badgeIcon) return null;
956
- return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: "w-fit gap-2 mx-4", children: [
956
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: "gap-2 px-4 py-1", children: [
957
957
  badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon, size: 14 }),
958
958
  badgeText
959
959
  ] });
@@ -1010,7 +1010,7 @@ function HeroDeveloperToolsCode({
1010
1010
  className,
1011
1011
  containerClassName,
1012
1012
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
1013
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
1013
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4 md:gap-8", contentClassName), children: [
1014
1014
  renderBadge,
1015
1015
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1016
1016
  "h1",
@@ -932,7 +932,7 @@ function HeroDeveloperToolsCode({
932
932
  const renderBadge = useMemo(() => {
933
933
  if (badgeSlot) return badgeSlot;
934
934
  if (!badgeText && !badgeIcon) return null;
935
- return /* @__PURE__ */ jsxs(Badge, { className: "w-fit gap-2 mx-4", children: [
935
+ return /* @__PURE__ */ jsxs(Badge, { className: "gap-2 px-4 py-1", children: [
936
936
  badgeIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: badgeIcon, size: 14 }),
937
937
  badgeText
938
938
  ] });
@@ -989,7 +989,7 @@ function HeroDeveloperToolsCode({
989
989
  className,
990
990
  containerClassName,
991
991
  children: /* @__PURE__ */ jsx("div", { className: "pt-8 md:pt-0", children: /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
992
- /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-8", contentClassName), children: [
992
+ /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4 md:gap-8", contentClassName), children: [
993
993
  renderBadge,
994
994
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
995
995
  "h1",
@@ -896,11 +896,11 @@ function HeroDigitalAgencyFullscreen({
896
896
  actionsSlot,
897
897
  backgroundImage,
898
898
  background,
899
- spacing = "none",
900
899
  pattern,
901
900
  patternOpacity,
902
901
  className,
903
- containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
902
+ spacing = "py-0 md:py-0",
903
+ containerClassName = "w-screen max-w-full relative z-10 px-0 min-h-screen h-full",
904
904
  contentClassName,
905
905
  headingClassName,
906
906
  descriptionClassName,
@@ -946,7 +946,7 @@ function HeroDigitalAgencyFullscreen({
946
946
  img.Img,
947
947
  {
948
948
  src: backgroundImage,
949
- alt: "",
949
+ alt: "Hero Background Image",
950
950
  className: "h-full w-full brightness-50 object-cover object-center",
951
951
  eager: true,
952
952
  optixFlowConfig
@@ -954,20 +954,21 @@ function HeroDigitalAgencyFullscreen({
954
954
  )
955
955
  }
956
956
  ),
957
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-full flex-col justify-between gap-10", children: /* @__PURE__ */ jsxRuntime.jsxs(
957
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsx(
958
958
  "div",
959
959
  {
960
960
  className: cn(
961
- "mx-auto flex max-w-125 flex-1 flex-col items-center justify-center gap-7 sm:max-w-150 md:max-w-200",
961
+ "flex min-h-screen h-full w-full flex-col items-center justify-end",
962
962
  contentClassName
963
963
  ),
964
- children: [
964
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container flex flex-col gap-6 mb-6 md:mb-24 px-6 md:px-0", children: [
965
965
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
966
966
  "h1",
967
967
  {
968
968
  className: cn(
969
- "mb-8 text-4xl font-normal text-balance md:text-7xl",
970
- headingClassName
969
+ "text-4xl font-bold text-balance md:text-7xl",
970
+ headingClassName,
971
+ backgroundImage ? "text-white text-shadow-2xl" : ""
971
972
  ),
972
973
  children: heading
973
974
  }
@@ -976,8 +977,9 @@ function HeroDigitalAgencyFullscreen({
976
977
  "p",
977
978
  {
978
979
  className: cn(
979
- "mb-12 max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
980
- descriptionClassName
980
+ "max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
981
+ descriptionClassName,
982
+ backgroundImage ? "text-white text-shadow-2xl" : ""
981
983
  ),
982
984
  children: description
983
985
  }
@@ -990,9 +992,9 @@ function HeroDigitalAgencyFullscreen({
990
992
  actionsClassName
991
993
  }
992
994
  )
993
- ]
995
+ ] })
994
996
  }
995
- ) }) })
997
+ ) })
996
998
  ]
997
999
  }
998
1000
  );
@@ -72,6 +72,6 @@ interface HeroDigitalAgencyFullscreenProps {
72
72
  */
73
73
  optixFlowConfig?: OptixFlowConfig;
74
74
  }
75
- declare function HeroDigitalAgencyFullscreen({ heading, description, actions, actionsSlot, backgroundImage, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, optixFlowConfig, }: HeroDigitalAgencyFullscreenProps): React.JSX.Element;
75
+ declare function HeroDigitalAgencyFullscreen({ heading, description, actions, actionsSlot, backgroundImage, background, pattern, patternOpacity, className, spacing, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, optixFlowConfig, }: HeroDigitalAgencyFullscreenProps): React.JSX.Element;
76
76
 
77
77
  export { HeroDigitalAgencyFullscreen, type HeroDigitalAgencyFullscreenProps };
@@ -72,6 +72,6 @@ interface HeroDigitalAgencyFullscreenProps {
72
72
  */
73
73
  optixFlowConfig?: OptixFlowConfig;
74
74
  }
75
- declare function HeroDigitalAgencyFullscreen({ heading, description, actions, actionsSlot, backgroundImage, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, optixFlowConfig, }: HeroDigitalAgencyFullscreenProps): React.JSX.Element;
75
+ declare function HeroDigitalAgencyFullscreen({ heading, description, actions, actionsSlot, backgroundImage, background, pattern, patternOpacity, className, spacing, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, optixFlowConfig, }: HeroDigitalAgencyFullscreenProps): React.JSX.Element;
76
76
 
77
77
  export { HeroDigitalAgencyFullscreen, type HeroDigitalAgencyFullscreenProps };
@@ -875,11 +875,11 @@ function HeroDigitalAgencyFullscreen({
875
875
  actionsSlot,
876
876
  backgroundImage,
877
877
  background,
878
- spacing = "none",
879
878
  pattern,
880
879
  patternOpacity,
881
880
  className,
882
- containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
881
+ spacing = "py-0 md:py-0",
882
+ containerClassName = "w-screen max-w-full relative z-10 px-0 min-h-screen h-full",
883
883
  contentClassName,
884
884
  headingClassName,
885
885
  descriptionClassName,
@@ -925,7 +925,7 @@ function HeroDigitalAgencyFullscreen({
925
925
  Img,
926
926
  {
927
927
  src: backgroundImage,
928
- alt: "",
928
+ alt: "Hero Background Image",
929
929
  className: "h-full w-full brightness-50 object-cover object-center",
930
930
  eager: true,
931
931
  optixFlowConfig
@@ -933,20 +933,21 @@ function HeroDigitalAgencyFullscreen({
933
933
  )
934
934
  }
935
935
  ),
936
- /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col justify-between gap-10", children: /* @__PURE__ */ jsxs(
936
+ /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx(
937
937
  "div",
938
938
  {
939
939
  className: cn(
940
- "mx-auto flex max-w-125 flex-1 flex-col items-center justify-center gap-7 sm:max-w-150 md:max-w-200",
940
+ "flex min-h-screen h-full w-full flex-col items-center justify-end",
941
941
  contentClassName
942
942
  ),
943
- children: [
943
+ children: /* @__PURE__ */ jsxs("div", { className: "container flex flex-col gap-6 mb-6 md:mb-24 px-6 md:px-0", children: [
944
944
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
945
945
  "h1",
946
946
  {
947
947
  className: cn(
948
- "mb-8 text-4xl font-normal text-balance md:text-7xl",
949
- headingClassName
948
+ "text-4xl font-bold text-balance md:text-7xl",
949
+ headingClassName,
950
+ backgroundImage ? "text-white text-shadow-2xl" : ""
950
951
  ),
951
952
  children: heading
952
953
  }
@@ -955,8 +956,9 @@ function HeroDigitalAgencyFullscreen({
955
956
  "p",
956
957
  {
957
958
  className: cn(
958
- "mb-12 max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
959
- descriptionClassName
959
+ "max-w-full md:max-w-[70%] text-lg md:text-xl font-normal text-balance",
960
+ descriptionClassName,
961
+ backgroundImage ? "text-white text-shadow-2xl" : ""
960
962
  ),
961
963
  children: description
962
964
  }
@@ -969,9 +971,9 @@ function HeroDigitalAgencyFullscreen({
969
971
  actionsClassName
970
972
  }
971
973
  )
972
- ]
974
+ ] })
973
975
  }
974
- ) }) })
976
+ ) })
975
977
  ]
976
978
  }
977
979
  );