@opensite/ui 1.8.6 → 1.8.8

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.
@@ -32,66 +32,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
32
  function cn(...inputs) {
33
33
  return tailwindMerge.twMerge(clsx.clsx(inputs));
34
34
  }
35
- function getNestedCardBg(parentBg, variant = "muted", options) {
36
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
37
- if (isDark) {
38
- switch (variant) {
39
- case "muted":
40
- return "bg-background";
41
- case "card":
42
- return "bg-card";
43
- case "accent":
44
- return "bg-accent";
45
- case "subtle":
46
- return "bg-background/50";
47
- }
48
- } else {
49
- switch (variant) {
50
- case "muted":
51
- return "bg-muted";
52
- case "card":
53
- return "bg-card";
54
- case "accent":
55
- return "bg-accent";
56
- case "subtle":
57
- return "bg-muted/50";
58
- }
59
- }
60
- }
61
- function getNestedCardTextColor(parentBg, options) {
62
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
63
- return isDark ? "text-foreground" : "";
64
- }
65
- function getTextColor(parentBg, variant = "default", options) {
66
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
67
- if (isDark) {
68
- switch (variant) {
69
- case "default":
70
- return "text-foreground";
71
- case "muted":
72
- return "text-foreground/80";
73
- case "subtle":
74
- return "text-foreground/60";
75
- case "accent":
76
- return "text-accent-foreground";
77
- }
78
- } else {
79
- switch (variant) {
80
- case "default":
81
- return "text-foreground";
82
- case "muted":
83
- return "text-muted-foreground";
84
- case "subtle":
85
- return "text-muted-foreground/70";
86
- case "accent":
87
- return "text-primary";
88
- }
89
- }
90
- }
91
- function getAccentColor(parentBg, options) {
92
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
93
- return isDark ? "text-accent-foreground" : "text-primary";
94
- }
95
35
  function normalizePhoneNumber(input) {
96
36
  const trimmed = input.trim();
97
37
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -885,6 +825,74 @@ var Section = React__namespace.default.forwardRef(
885
825
  }
886
826
  );
887
827
  Section.displayName = "Section";
828
+ var MOBILE_CLASSES = {
829
+ "fit-left": "items-start md:items-center",
830
+ "fit-center": "items-center",
831
+ "fit-right": "items-end md:items-center",
832
+ "full-left": "items-stretch md:items-center",
833
+ "full-center": "items-stretch md:items-center",
834
+ "full-right": "items-stretch md:items-center"
835
+ };
836
+ function BlockActions({
837
+ mobileConfig,
838
+ actionsClassName,
839
+ verticalSpacing = "mt-4 md:mt-8",
840
+ actions,
841
+ actionsSlot
842
+ }) {
843
+ const renderAction = React__namespace.useCallback(
844
+ (action, idx) => {
845
+ const {
846
+ label,
847
+ icon,
848
+ iconAfter,
849
+ children,
850
+ href,
851
+ onClick,
852
+ className: actionClassName,
853
+ ...pressableProps
854
+ } = action;
855
+ return /* @__PURE__ */ jsxRuntime.jsx(
856
+ Pressable,
857
+ {
858
+ href,
859
+ onClick,
860
+ asButton: action.asButton || true,
861
+ className: actionClassName,
862
+ ...pressableProps,
863
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
864
+ icon,
865
+ label,
866
+ iconAfter
867
+ ] })
868
+ },
869
+ idx
870
+ );
871
+ },
872
+ []
873
+ );
874
+ const width = mobileConfig?.width ?? "fit";
875
+ const position = mobileConfig?.position ?? "left";
876
+ const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
877
+ if (actionsSlot) {
878
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { children: actionsSlot });
879
+ } else if (actions && actions?.length > 0) {
880
+ return /* @__PURE__ */ jsxRuntime.jsx(
881
+ "div",
882
+ {
883
+ className: cn(
884
+ "flex flex-col md:flex-row flex-wrap gap-4",
885
+ mobileLayoutClass,
886
+ actionsClassName,
887
+ verticalSpacing
888
+ ),
889
+ children: actions.map((action, index) => renderAction(action, index))
890
+ }
891
+ );
892
+ } else {
893
+ return null;
894
+ }
895
+ }
888
896
  function AboutDeveloperProfile({
889
897
  name,
890
898
  role,
@@ -898,7 +906,6 @@ function AboutDeveloperProfile({
898
906
  actions,
899
907
  actionsSlot,
900
908
  className,
901
- containerClassName,
902
909
  contentClassName,
903
910
  nameClassName,
904
911
  roleClassName,
@@ -910,7 +917,8 @@ function AboutDeveloperProfile({
910
917
  actionsClassName,
911
918
  optixFlowConfig,
912
919
  background,
913
- spacing,
920
+ spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
921
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
914
922
  pattern,
915
923
  patternOpacity
916
924
  }) {
@@ -922,11 +930,7 @@ function AboutDeveloperProfile({
922
930
  {
923
931
  href: link.href,
924
932
  "aria-label": link["aria-label"],
925
- className: cn(
926
- getTextColor(background, "muted"),
927
- `hover:${getAccentColor(background)}`,
928
- link.className
929
- ),
933
+ className: cn(link.className),
930
934
  children: link.icon
931
935
  },
932
936
  idx
@@ -940,8 +944,6 @@ function AboutDeveloperProfile({
940
944
  {
941
945
  className: cn(
942
946
  "rounded-full px-4 py-2 text-sm font-medium",
943
- getNestedCardBg(background),
944
- getNestedCardTextColor(background),
945
947
  skillTagClassName
946
948
  ),
947
949
  children: skill
@@ -949,34 +951,6 @@ function AboutDeveloperProfile({
949
951
  idx
950
952
  ));
951
953
  }, [skillsSlot, skills, skillTagClassName, background]);
952
- const actionsContent = React.useMemo(() => {
953
- if (actionsSlot) return actionsSlot;
954
- if (!actions || actions.length === 0) return null;
955
- return actions.map((action, index) => {
956
- const {
957
- label,
958
- icon,
959
- iconAfter,
960
- children,
961
- className: actionClassName,
962
- ...pressableProps
963
- } = action;
964
- return /* @__PURE__ */ jsxRuntime.jsx(
965
- Pressable,
966
- {
967
- asButton: true,
968
- className: actionClassName,
969
- ...pressableProps,
970
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
971
- icon,
972
- label,
973
- iconAfter
974
- ] })
975
- },
976
- index
977
- );
978
- });
979
- }, [actionsSlot, actions]);
980
954
  return /* @__PURE__ */ jsxRuntime.jsx(
981
955
  Section,
982
956
  {
@@ -984,7 +958,7 @@ function AboutDeveloperProfile({
984
958
  spacing,
985
959
  pattern,
986
960
  patternOpacity,
987
- className: cn(className),
961
+ className,
988
962
  containerClassName,
989
963
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-4xl", contentClassName), children: [
990
964
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-8 md:flex-row md:items-start", children: [
@@ -1002,7 +976,7 @@ function AboutDeveloperProfile({
1002
976
  ),
1003
977
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center md:text-left", children: [
1004
978
  name && (typeof name === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold", nameClassName), children: name }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: nameClassName, children: name })),
1005
- role && (typeof role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-2 text-xl", getAccentColor(background), roleClassName), children: role }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-2", roleClassName), children: role })),
979
+ role && (typeof role === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-2 text-xl", roleClassName), children: role }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-2", roleClassName), children: role })),
1006
980
  (socialLinksSlot || socialLinks && socialLinks.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
1007
981
  "div",
1008
982
  {
@@ -1015,29 +989,17 @@ function AboutDeveloperProfile({
1015
989
  )
1016
990
  ] })
1017
991
  ] }),
1018
- bio && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-12", children: typeof bio === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1019
- "p",
1020
- {
1021
- className: cn(
1022
- "text-lg whitespace-pre-line",
1023
- getTextColor(background, "muted"),
1024
- bioClassName
1025
- ),
1026
- children: bio
1027
- }
1028
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: bioClassName, children: bio }) }),
992
+ bio && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-12", children: typeof bio === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg whitespace-pre-line", bioClassName), children: bio }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: bioClassName, children: bio }) }),
1029
993
  (skillsSlot || skills && skills.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-12", skillsClassName), children: [
1030
994
  skillsTitle && (typeof skillsTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-semibold", children: skillsTitle }) : skillsTitle),
1031
995
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex flex-wrap gap-2", children: skillsContent })
1032
996
  ] }),
1033
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
1034
- "div",
997
+ /* @__PURE__ */ jsxRuntime.jsx(
998
+ BlockActions,
1035
999
  {
1036
- className: cn(
1037
- "mt-12 text-center md:text-left flex gap-2 items-center flex-wrap",
1038
- actionsClassName
1039
- ),
1040
- children: actionsContent
1000
+ actions,
1001
+ actionsSlot,
1002
+ actionsClassName
1041
1003
  }
1042
1004
  )
1043
1005
  ] })
@@ -119,6 +119,6 @@ interface AboutDeveloperProfileProps {
119
119
  */
120
120
  patternOpacity?: number;
121
121
  }
122
- declare function AboutDeveloperProfile({ name, role, bio, avatar, skills, skillsSlot, skillsTitle, socialLinks, socialLinksSlot, actions, actionsSlot, className, containerClassName, contentClassName, nameClassName, roleClassName, bioClassName, avatarClassName, skillsClassName, skillTagClassName, socialLinksClassName, actionsClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, }: AboutDeveloperProfileProps): React.JSX.Element;
122
+ declare function AboutDeveloperProfile({ name, role, bio, avatar, skills, skillsSlot, skillsTitle, socialLinks, socialLinksSlot, actions, actionsSlot, className, contentClassName, nameClassName, roleClassName, bioClassName, avatarClassName, skillsClassName, skillTagClassName, socialLinksClassName, actionsClassName, optixFlowConfig, background, spacing, containerClassName, pattern, patternOpacity, }: AboutDeveloperProfileProps): React.JSX.Element;
123
123
 
124
124
  export { AboutDeveloperProfile, type AboutDeveloperProfileProps };
@@ -119,6 +119,6 @@ interface AboutDeveloperProfileProps {
119
119
  */
120
120
  patternOpacity?: number;
121
121
  }
122
- declare function AboutDeveloperProfile({ name, role, bio, avatar, skills, skillsSlot, skillsTitle, socialLinks, socialLinksSlot, actions, actionsSlot, className, containerClassName, contentClassName, nameClassName, roleClassName, bioClassName, avatarClassName, skillsClassName, skillTagClassName, socialLinksClassName, actionsClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, }: AboutDeveloperProfileProps): React.JSX.Element;
122
+ declare function AboutDeveloperProfile({ name, role, bio, avatar, skills, skillsSlot, skillsTitle, socialLinks, socialLinksSlot, actions, actionsSlot, className, contentClassName, nameClassName, roleClassName, bioClassName, avatarClassName, skillsClassName, skillTagClassName, socialLinksClassName, actionsClassName, optixFlowConfig, background, spacing, containerClassName, pattern, patternOpacity, }: AboutDeveloperProfileProps): React.JSX.Element;
123
123
 
124
124
  export { AboutDeveloperProfile, type AboutDeveloperProfileProps };
@@ -11,66 +11,6 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
11
  function cn(...inputs) {
12
12
  return twMerge(clsx(inputs));
13
13
  }
14
- function getNestedCardBg(parentBg, variant = "muted", options) {
15
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
16
- if (isDark) {
17
- switch (variant) {
18
- case "muted":
19
- return "bg-background";
20
- case "card":
21
- return "bg-card";
22
- case "accent":
23
- return "bg-accent";
24
- case "subtle":
25
- return "bg-background/50";
26
- }
27
- } else {
28
- switch (variant) {
29
- case "muted":
30
- return "bg-muted";
31
- case "card":
32
- return "bg-card";
33
- case "accent":
34
- return "bg-accent";
35
- case "subtle":
36
- return "bg-muted/50";
37
- }
38
- }
39
- }
40
- function getNestedCardTextColor(parentBg, options) {
41
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
42
- return isDark ? "text-foreground" : "";
43
- }
44
- function getTextColor(parentBg, variant = "default", options) {
45
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
46
- if (isDark) {
47
- switch (variant) {
48
- case "default":
49
- return "text-foreground";
50
- case "muted":
51
- return "text-foreground/80";
52
- case "subtle":
53
- return "text-foreground/60";
54
- case "accent":
55
- return "text-accent-foreground";
56
- }
57
- } else {
58
- switch (variant) {
59
- case "default":
60
- return "text-foreground";
61
- case "muted":
62
- return "text-muted-foreground";
63
- case "subtle":
64
- return "text-muted-foreground/70";
65
- case "accent":
66
- return "text-primary";
67
- }
68
- }
69
- }
70
- function getAccentColor(parentBg, options) {
71
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
72
- return isDark ? "text-accent-foreground" : "text-primary";
73
- }
74
14
  function normalizePhoneNumber(input) {
75
15
  const trimmed = input.trim();
76
16
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -864,6 +804,74 @@ var Section = React__default.forwardRef(
864
804
  }
865
805
  );
866
806
  Section.displayName = "Section";
807
+ var MOBILE_CLASSES = {
808
+ "fit-left": "items-start md:items-center",
809
+ "fit-center": "items-center",
810
+ "fit-right": "items-end md:items-center",
811
+ "full-left": "items-stretch md:items-center",
812
+ "full-center": "items-stretch md:items-center",
813
+ "full-right": "items-stretch md:items-center"
814
+ };
815
+ function BlockActions({
816
+ mobileConfig,
817
+ actionsClassName,
818
+ verticalSpacing = "mt-4 md:mt-8",
819
+ actions,
820
+ actionsSlot
821
+ }) {
822
+ const renderAction = React.useCallback(
823
+ (action, idx) => {
824
+ const {
825
+ label,
826
+ icon,
827
+ iconAfter,
828
+ children,
829
+ href,
830
+ onClick,
831
+ className: actionClassName,
832
+ ...pressableProps
833
+ } = action;
834
+ return /* @__PURE__ */ jsx(
835
+ Pressable,
836
+ {
837
+ href,
838
+ onClick,
839
+ asButton: action.asButton || true,
840
+ className: actionClassName,
841
+ ...pressableProps,
842
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
843
+ icon,
844
+ label,
845
+ iconAfter
846
+ ] })
847
+ },
848
+ idx
849
+ );
850
+ },
851
+ []
852
+ );
853
+ const width = mobileConfig?.width ?? "fit";
854
+ const position = mobileConfig?.position ?? "left";
855
+ const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
856
+ if (actionsSlot) {
857
+ return /* @__PURE__ */ jsx("div", { children: actionsSlot });
858
+ } else if (actions && actions?.length > 0) {
859
+ return /* @__PURE__ */ jsx(
860
+ "div",
861
+ {
862
+ className: cn(
863
+ "flex flex-col md:flex-row flex-wrap gap-4",
864
+ mobileLayoutClass,
865
+ actionsClassName,
866
+ verticalSpacing
867
+ ),
868
+ children: actions.map((action, index) => renderAction(action, index))
869
+ }
870
+ );
871
+ } else {
872
+ return null;
873
+ }
874
+ }
867
875
  function AboutDeveloperProfile({
868
876
  name,
869
877
  role,
@@ -877,7 +885,6 @@ function AboutDeveloperProfile({
877
885
  actions,
878
886
  actionsSlot,
879
887
  className,
880
- containerClassName,
881
888
  contentClassName,
882
889
  nameClassName,
883
890
  roleClassName,
@@ -889,7 +896,8 @@ function AboutDeveloperProfile({
889
896
  actionsClassName,
890
897
  optixFlowConfig,
891
898
  background,
892
- spacing,
899
+ spacing = "pt-28 pb-8 md:pt-32 md:pb-32",
900
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
893
901
  pattern,
894
902
  patternOpacity
895
903
  }) {
@@ -901,11 +909,7 @@ function AboutDeveloperProfile({
901
909
  {
902
910
  href: link.href,
903
911
  "aria-label": link["aria-label"],
904
- className: cn(
905
- getTextColor(background, "muted"),
906
- `hover:${getAccentColor(background)}`,
907
- link.className
908
- ),
912
+ className: cn(link.className),
909
913
  children: link.icon
910
914
  },
911
915
  idx
@@ -919,8 +923,6 @@ function AboutDeveloperProfile({
919
923
  {
920
924
  className: cn(
921
925
  "rounded-full px-4 py-2 text-sm font-medium",
922
- getNestedCardBg(background),
923
- getNestedCardTextColor(background),
924
926
  skillTagClassName
925
927
  ),
926
928
  children: skill
@@ -928,34 +930,6 @@ function AboutDeveloperProfile({
928
930
  idx
929
931
  ));
930
932
  }, [skillsSlot, skills, skillTagClassName, background]);
931
- const actionsContent = useMemo(() => {
932
- if (actionsSlot) return actionsSlot;
933
- if (!actions || actions.length === 0) return null;
934
- return actions.map((action, index) => {
935
- const {
936
- label,
937
- icon,
938
- iconAfter,
939
- children,
940
- className: actionClassName,
941
- ...pressableProps
942
- } = action;
943
- return /* @__PURE__ */ jsx(
944
- Pressable,
945
- {
946
- asButton: true,
947
- className: actionClassName,
948
- ...pressableProps,
949
- children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
950
- icon,
951
- label,
952
- iconAfter
953
- ] })
954
- },
955
- index
956
- );
957
- });
958
- }, [actionsSlot, actions]);
959
933
  return /* @__PURE__ */ jsx(
960
934
  Section,
961
935
  {
@@ -963,7 +937,7 @@ function AboutDeveloperProfile({
963
937
  spacing,
964
938
  pattern,
965
939
  patternOpacity,
966
- className: cn(className),
940
+ className,
967
941
  containerClassName,
968
942
  children: /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-4xl", contentClassName), children: [
969
943
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-8 md:flex-row md:items-start", children: [
@@ -981,7 +955,7 @@ function AboutDeveloperProfile({
981
955
  ),
982
956
  /* @__PURE__ */ jsxs("div", { className: "text-center md:text-left", children: [
983
957
  name && (typeof name === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold", nameClassName), children: name }) : /* @__PURE__ */ jsx("div", { className: nameClassName, children: name })),
984
- role && (typeof role === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-2 text-xl", getAccentColor(background), roleClassName), children: role }) : /* @__PURE__ */ jsx("div", { className: cn("mt-2", roleClassName), children: role })),
958
+ role && (typeof role === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-2 text-xl", roleClassName), children: role }) : /* @__PURE__ */ jsx("div", { className: cn("mt-2", roleClassName), children: role })),
985
959
  (socialLinksSlot || socialLinks && socialLinks.length > 0) && /* @__PURE__ */ jsx(
986
960
  "div",
987
961
  {
@@ -994,29 +968,17 @@ function AboutDeveloperProfile({
994
968
  )
995
969
  ] })
996
970
  ] }),
997
- bio && /* @__PURE__ */ jsx("div", { className: "mt-12", children: typeof bio === "string" ? /* @__PURE__ */ jsx(
998
- "p",
999
- {
1000
- className: cn(
1001
- "text-lg whitespace-pre-line",
1002
- getTextColor(background, "muted"),
1003
- bioClassName
1004
- ),
1005
- children: bio
1006
- }
1007
- ) : /* @__PURE__ */ jsx("div", { className: bioClassName, children: bio }) }),
971
+ bio && /* @__PURE__ */ jsx("div", { className: "mt-12", children: typeof bio === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg whitespace-pre-line", bioClassName), children: bio }) : /* @__PURE__ */ jsx("div", { className: bioClassName, children: bio }) }),
1008
972
  (skillsSlot || skills && skills.length > 0) && /* @__PURE__ */ jsxs("div", { className: cn("mt-12", skillsClassName), children: [
1009
973
  skillsTitle && (typeof skillsTitle === "string" ? /* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold", children: skillsTitle }) : skillsTitle),
1010
974
  /* @__PURE__ */ jsx("div", { className: "mt-4 flex flex-wrap gap-2", children: skillsContent })
1011
975
  ] }),
1012
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx(
1013
- "div",
976
+ /* @__PURE__ */ jsx(
977
+ BlockActions,
1014
978
  {
1015
- className: cn(
1016
- "mt-12 text-center md:text-left flex gap-2 items-center flex-wrap",
1017
- actionsClassName
1018
- ),
1019
- children: actionsContent
979
+ actions,
980
+ actionsSlot,
981
+ actionsClassName
1020
982
  }
1021
983
  )
1022
984
  ] })
@@ -1146,7 +1146,7 @@ function AboutDeveloperStory({
1146
1146
  src: storyImage.src,
1147
1147
  alt: storyImage.alt,
1148
1148
  className: cn(
1149
- "rounded-2xl object-cover rounded-2xl object-cover w-full h-auto",
1149
+ "rounded-2xl object-cover w-full h-auto",
1150
1150
  storyImageClassName
1151
1151
  ),
1152
1152
  optixFlowConfig
@@ -1125,7 +1125,7 @@ function AboutDeveloperStory({
1125
1125
  src: storyImage.src,
1126
1126
  alt: storyImage.alt,
1127
1127
  className: cn(
1128
- "rounded-2xl object-cover rounded-2xl object-cover w-full h-auto",
1128
+ "rounded-2xl object-cover w-full h-auto",
1129
1129
  storyImageClassName
1130
1130
  ),
1131
1131
  optixFlowConfig