@opensite/ui 0.8.4 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/article-breadcrumb-social.cjs +57 -73
  2. package/dist/article-breadcrumb-social.d.cts +2 -24
  3. package/dist/article-breadcrumb-social.d.ts +2 -24
  4. package/dist/article-breadcrumb-social.js +57 -73
  5. package/dist/article-compact-toc.cjs +1 -1
  6. package/dist/article-compact-toc.js +1 -1
  7. package/dist/article-sidebar-sticky.cjs +73 -26
  8. package/dist/article-sidebar-sticky.js +73 -26
  9. package/dist/blog-horizontal-timeline.cjs +7 -4
  10. package/dist/blog-horizontal-timeline.js +7 -4
  11. package/dist/faq-split-hero.cjs +704 -0
  12. package/dist/faq-split-hero.d.cts +118 -0
  13. package/dist/faq-split-hero.d.ts +118 -0
  14. package/dist/faq-split-hero.js +682 -0
  15. package/dist/feature-badge-grid-six.cjs +1 -1
  16. package/dist/feature-badge-grid-six.js +1 -1
  17. package/dist/feature-card-grid-linked.cjs +92 -22
  18. package/dist/feature-card-grid-linked.js +92 -22
  19. package/dist/feature-carousel-progress.cjs +1 -1
  20. package/dist/feature-carousel-progress.js +1 -1
  21. package/dist/feature-checklist-image.cjs +88 -15
  22. package/dist/feature-checklist-image.js +88 -15
  23. package/dist/feature-checklist-three-column.cjs +1 -1
  24. package/dist/feature-checklist-three-column.js +1 -1
  25. package/dist/feature-icon-grid-accent.cjs +50 -8
  26. package/dist/feature-icon-grid-accent.js +50 -8
  27. package/dist/feature-icon-grid-bordered.cjs +84 -14
  28. package/dist/feature-icon-grid-bordered.js +84 -14
  29. package/dist/feature-icon-tabs-content.cjs +217 -84
  30. package/dist/feature-icon-tabs-content.js +217 -84
  31. package/dist/feature-image-overlay-badge.cjs +106 -33
  32. package/dist/feature-image-overlay-badge.js +106 -33
  33. package/dist/feature-numbered-cards.cjs +154 -35
  34. package/dist/feature-numbered-cards.js +154 -35
  35. package/dist/feature-showcase.cjs +67 -71
  36. package/dist/feature-showcase.d.cts +1 -5
  37. package/dist/feature-showcase.d.ts +1 -5
  38. package/dist/feature-showcase.js +68 -72
  39. package/dist/feature-split-image-reverse.cjs +90 -15
  40. package/dist/feature-split-image-reverse.js +90 -15
  41. package/dist/feature-split-image.cjs +87 -15
  42. package/dist/feature-split-image.js +87 -15
  43. package/dist/feature-stats-highlight.cjs +2 -2
  44. package/dist/feature-stats-highlight.js +2 -2
  45. package/dist/feature-tabbed-content-image.cjs +207 -72
  46. package/dist/feature-tabbed-content-image.js +207 -72
  47. package/dist/feature-three-column-values.cjs +107 -14
  48. package/dist/feature-three-column-values.js +107 -14
  49. package/dist/registry.cjs +1460 -461
  50. package/dist/registry.js +1460 -461
  51. package/package.json +1 -1
@@ -1020,7 +1020,7 @@ function FeatureIconTabsContent({
1020
1020
  tabContentClassName,
1021
1021
  optixFlowConfig,
1022
1022
  background,
1023
- spacing,
1023
+ spacing = "py-6 md:py-32",
1024
1024
  pattern,
1025
1025
  patternOpacity,
1026
1026
  patternClassName
@@ -1030,12 +1030,28 @@ function FeatureIconTabsContent({
1030
1030
  if (tab.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: tab.iconName, size: 16 });
1031
1031
  return null;
1032
1032
  }, []);
1033
- const renderTabContentActions = useCallback((content) => {
1034
- if (content.actionsSlot) return content.actionsSlot;
1035
- if (!content.actions || content.actions.length === 0) return null;
1036
- return content.actions.map((action, index) => {
1037
- if (action.children) {
1038
- return /* @__PURE__ */ jsx(
1033
+ const renderTabContentActions = useCallback(
1034
+ (content) => {
1035
+ if (content.actionsSlot) return content.actionsSlot;
1036
+ if (!content.actions || content.actions.length === 0) return null;
1037
+ return content.actions.map((action, index) => {
1038
+ if (action.children) {
1039
+ return /* @__PURE__ */ jsx(
1040
+ Pressable,
1041
+ {
1042
+ href: action.href,
1043
+ onClick: action.onClick,
1044
+ variant: action.variant,
1045
+ size: action.size,
1046
+ className: cn("mt-2.5 w-fit gap-2", action.className),
1047
+ "aria-label": action["aria-label"],
1048
+ asButton: true,
1049
+ children: action.children
1050
+ },
1051
+ index
1052
+ );
1053
+ }
1054
+ return /* @__PURE__ */ jsxs(
1039
1055
  Pressable,
1040
1056
  {
1041
1057
  href: action.href,
@@ -1045,90 +1061,174 @@ function FeatureIconTabsContent({
1045
1061
  className: cn("mt-2.5 w-fit gap-2", action.className),
1046
1062
  "aria-label": action["aria-label"],
1047
1063
  asButton: true,
1048
- children: action.children
1064
+ children: [
1065
+ action.icon,
1066
+ action.label,
1067
+ action.iconAfter
1068
+ ]
1049
1069
  },
1050
1070
  index
1051
1071
  );
1072
+ });
1073
+ },
1074
+ []
1075
+ );
1076
+ const renderTabContentImage = useCallback(
1077
+ (content) => {
1078
+ if (content.imageSlot) return content.imageSlot;
1079
+ if (content.imageSrc) {
1080
+ return /* @__PURE__ */ jsx(
1081
+ Img,
1082
+ {
1083
+ src: content.imageSrc,
1084
+ alt: content.imageAlt || "Tab content image",
1085
+ className: cn(
1086
+ "h-full w-full rounded-xl object-cover",
1087
+ content.imageClassName
1088
+ ),
1089
+ loading: "lazy",
1090
+ optixFlowConfig
1091
+ }
1092
+ );
1052
1093
  }
1053
- return /* @__PURE__ */ jsxs(
1054
- Pressable,
1055
- {
1056
- href: action.href,
1057
- onClick: action.onClick,
1058
- variant: action.variant,
1059
- size: action.size,
1060
- className: cn("mt-2.5 w-fit gap-2", action.className),
1061
- "aria-label": action["aria-label"],
1062
- asButton: true,
1063
- children: [
1064
- action.icon,
1065
- action.label,
1066
- action.iconAfter
1067
- ]
1068
- },
1069
- index
1070
- );
1071
- });
1072
- }, []);
1073
- const renderTabContentImage = useCallback((content) => {
1074
- if (content.imageSlot) return content.imageSlot;
1075
- if (content.imageSrc) {
1076
- return /* @__PURE__ */ jsx(
1077
- Img,
1078
- {
1079
- src: content.imageSrc,
1080
- alt: content.imageAlt || "Tab content image",
1081
- className: cn("h-full w-full rounded-xl object-cover", content.imageClassName),
1082
- loading: "lazy",
1083
- optixFlowConfig
1084
- }
1085
- );
1086
- }
1087
- return null;
1088
- }, [optixFlowConfig]);
1094
+ return null;
1095
+ },
1096
+ [optixFlowConfig]
1097
+ );
1089
1098
  const tabsContent = useMemo(() => {
1090
1099
  if (tabsSlot) return tabsSlot;
1091
1100
  if (!tabs || tabs.length === 0) return null;
1092
1101
  const activeDefaultTab = defaultTab || tabs[0]?.value;
1093
1102
  return /* @__PURE__ */ jsxs(Tabs, { defaultValue: activeDefaultTab, className: "mt-8", children: [
1094
- /* @__PURE__ */ jsx(TabsList, { className: cn("container flex flex-col items-center justify-center gap-4 bg-transparent sm:flex-row md:gap-10", tabsListClassName), children: tabs.map((tab) => /* @__PURE__ */ jsxs(
1095
- TabsTrigger,
1103
+ /* @__PURE__ */ jsx("div", { className: "container overflow-x-auto px-4 pb-2 md:px-6", children: /* @__PURE__ */ jsx(
1104
+ TabsList,
1096
1105
  {
1097
- value: tab.value,
1098
- className: cn("flex items-center gap-2 rounded-xl px-4 py-3 text-sm font-semibold text-muted-foreground data-[state=active]:bg-muted data-[state=active]:text-primary", tabTriggerClassName, tab.className),
1099
- children: [
1100
- (tab.icon || tab.iconName) && renderTabIcon(tab),
1101
- tab.label
1102
- ]
1103
- },
1104
- tab.value
1105
- )) }),
1106
- /* @__PURE__ */ jsx("div", { className: cn("mx-auto mt-8 max-w-7xl rounded-2xl bg-muted/70 p-6 lg:p-16", contentWrapperClassName), children: /* @__PURE__ */ jsx("div", { className: "relative", children: tabs.map((tab) => {
1107
- if (tab.contentSlot) {
1108
- return /* @__PURE__ */ jsx(TabsContent, { value: tab.value, className: tabContentClassName, children: tab.contentSlot }, tab.value);
1106
+ className: cn(
1107
+ "inline-flex w-auto min-w-full items-center justify-start gap-2 bg-transparent md:justify-center md:gap-4",
1108
+ tabsListClassName
1109
+ ),
1110
+ children: tabs.map((tab) => /* @__PURE__ */ jsxs(
1111
+ TabsTrigger,
1112
+ {
1113
+ value: tab.value,
1114
+ className: cn(
1115
+ "flex shrink-0 items-center gap-2 rounded-lg border border-border bg-background px-4 py-2.5 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground data-[state=active]:border-primary data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",
1116
+ tabTriggerClassName,
1117
+ tab.className
1118
+ ),
1119
+ children: [
1120
+ (tab.icon || tab.iconName) && renderTabIcon(tab),
1121
+ tab.label
1122
+ ]
1123
+ },
1124
+ tab.value
1125
+ ))
1109
1126
  }
1110
- const content = tab.content;
1111
- if (!content) return null;
1112
- return /* @__PURE__ */ jsxs(
1113
- TabsContent,
1114
- {
1115
- value: tab.value,
1116
- className: cn("grid place-items-start gap-20 lg:grid-cols-2 lg:gap-10", tabContentClassName, content.className),
1117
- children: [
1118
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5", children: [
1119
- content.badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: cn("w-fit bg-background", content.badgeClassName), children: content.badge }),
1120
- content.title && (typeof content.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("text-3xl font-semibold lg:text-5xl", content.titleClassName), children: content.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-semibold lg:text-5xl", content.titleClassName), children: content.title })),
1121
- content.description && (typeof content.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground lg:text-lg", content.descriptionClassName), children: content.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground lg:text-lg", content.descriptionClassName), children: content.description })),
1122
- (content.actionsSlot || content.actions && content.actions.length > 0) && renderTabContentActions(content)
1123
- ] }),
1124
- (content.imageSlot || content.imageSrc) && /* @__PURE__ */ jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
1125
- ]
1126
- },
1127
- tab.value
1128
- );
1129
- }) }) })
1127
+ ) }),
1128
+ /* @__PURE__ */ jsx(
1129
+ "div",
1130
+ {
1131
+ className: cn(
1132
+ "mx-auto mt-8 max-w-7xl rounded-2xl bg-muted/70 p-6 lg:p-16",
1133
+ contentWrapperClassName
1134
+ ),
1135
+ children: /* @__PURE__ */ jsx("div", { className: "relative", children: tabs.map((tab) => {
1136
+ if (tab.contentSlot) {
1137
+ return /* @__PURE__ */ jsx(
1138
+ TabsContent,
1139
+ {
1140
+ value: tab.value,
1141
+ className: tabContentClassName,
1142
+ children: tab.contentSlot
1143
+ },
1144
+ tab.value
1145
+ );
1146
+ }
1147
+ const content = tab.content;
1148
+ if (!content) return null;
1149
+ return /* @__PURE__ */ jsxs(
1150
+ TabsContent,
1151
+ {
1152
+ value: tab.value,
1153
+ className: cn(
1154
+ "grid place-items-start gap-20 lg:grid-cols-2 lg:gap-10",
1155
+ tabContentClassName,
1156
+ content.className
1157
+ ),
1158
+ children: [
1159
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5", children: [
1160
+ content.badge && /* @__PURE__ */ jsx(
1161
+ Badge,
1162
+ {
1163
+ variant: "outline",
1164
+ className: cn(
1165
+ "w-fit bg-background",
1166
+ content.badgeClassName
1167
+ ),
1168
+ children: content.badge
1169
+ }
1170
+ ),
1171
+ content.title && (typeof content.title === "string" ? /* @__PURE__ */ jsx(
1172
+ "h3",
1173
+ {
1174
+ className: cn(
1175
+ "text-3xl font-semibold lg:text-5xl",
1176
+ content.titleClassName
1177
+ ),
1178
+ children: content.title
1179
+ }
1180
+ ) : /* @__PURE__ */ jsx(
1181
+ "div",
1182
+ {
1183
+ className: cn(
1184
+ "text-3xl font-semibold lg:text-5xl",
1185
+ content.titleClassName
1186
+ ),
1187
+ children: content.title
1188
+ }
1189
+ )),
1190
+ content.description && (typeof content.description === "string" ? /* @__PURE__ */ jsx(
1191
+ "p",
1192
+ {
1193
+ className: cn(
1194
+ "text-muted-foreground lg:text-lg",
1195
+ content.descriptionClassName
1196
+ ),
1197
+ children: content.description
1198
+ }
1199
+ ) : /* @__PURE__ */ jsx(
1200
+ "div",
1201
+ {
1202
+ className: cn(
1203
+ "text-muted-foreground lg:text-lg",
1204
+ content.descriptionClassName
1205
+ ),
1206
+ children: content.description
1207
+ }
1208
+ )),
1209
+ (content.actionsSlot || content.actions && content.actions.length > 0) && renderTabContentActions(content)
1210
+ ] }),
1211
+ (content.imageSlot || content.imageSrc) && /* @__PURE__ */ jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
1212
+ ]
1213
+ },
1214
+ tab.value
1215
+ );
1216
+ }) })
1217
+ }
1218
+ )
1130
1219
  ] });
1131
- }, [tabsSlot, tabs, defaultTab, tabsListClassName, tabTriggerClassName, contentWrapperClassName, tabContentClassName, renderTabIcon, renderTabContentActions, renderTabContentImage]);
1220
+ }, [
1221
+ tabsSlot,
1222
+ tabs,
1223
+ defaultTab,
1224
+ tabsListClassName,
1225
+ tabTriggerClassName,
1226
+ contentWrapperClassName,
1227
+ tabContentClassName,
1228
+ renderTabIcon,
1229
+ renderTabContentActions,
1230
+ renderTabContentImage
1231
+ ]);
1132
1232
  return /* @__PURE__ */ jsxs(
1133
1233
  Section,
1134
1234
  {
@@ -1140,11 +1240,44 @@ function FeatureIconTabsContent({
1140
1240
  className,
1141
1241
  containerClassName: cn("mx-auto", containerClassName),
1142
1242
  children: [
1143
- (badge || heading || description) && /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
1144
- badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
1145
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading })),
1146
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground", descriptionClassName), children: description }))
1147
- ] }),
1243
+ (badge || heading || description) && /* @__PURE__ */ jsxs(
1244
+ "div",
1245
+ {
1246
+ className: cn(
1247
+ "flex flex-col items-center gap-4 text-center",
1248
+ headerClassName
1249
+ ),
1250
+ children: [
1251
+ badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
1252
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
1253
+ "h1",
1254
+ {
1255
+ className: cn(
1256
+ "max-w-2xl text-3xl font-semibold md:text-4xl",
1257
+ headingClassName
1258
+ ),
1259
+ children: heading
1260
+ }
1261
+ ) : /* @__PURE__ */ jsx(
1262
+ "div",
1263
+ {
1264
+ className: cn(
1265
+ "max-w-2xl text-3xl font-semibold md:text-4xl",
1266
+ headingClassName
1267
+ ),
1268
+ children: heading
1269
+ }
1270
+ )),
1271
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx(
1272
+ "div",
1273
+ {
1274
+ className: cn("text-muted-foreground", descriptionClassName),
1275
+ children: description
1276
+ }
1277
+ ))
1278
+ ]
1279
+ }
1280
+ ),
1148
1281
  tabsContent
1149
1282
  ]
1150
1283
  }
@@ -1024,7 +1024,7 @@ function FeatureImageOverlayBadge({
1024
1024
  overlayTitleClassName,
1025
1025
  optixFlowConfig,
1026
1026
  background,
1027
- spacing,
1027
+ spacing = "py-6 md:py-32",
1028
1028
  pattern,
1029
1029
  patternOpacity,
1030
1030
  patternClassName
@@ -1077,7 +1077,10 @@ function FeatureImageOverlayBadge({
1077
1077
  {
1078
1078
  src: imageSrc,
1079
1079
  alt: imageAlt || "Feature illustration",
1080
- className: cn("rounded-xl object-cover md:aspect-video lg:aspect-auto", imageClassName),
1080
+ className: cn(
1081
+ "rounded-2xl object-cover md:aspect-video lg:aspect-auto w-full h-auto",
1082
+ imageClassName
1083
+ ),
1081
1084
  loading: "lazy",
1082
1085
  optixFlowConfig
1083
1086
  }
@@ -1095,41 +1098,111 @@ function FeatureImageOverlayBadge({
1095
1098
  patternClassName,
1096
1099
  className,
1097
1100
  containerClassName,
1098
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid place-items-center gap-10 lg:grid-cols-2", gridClassName), children: [
1099
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-5", contentClassName), children: [
1100
- badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("w-fit bg-background", badgeClassName), children: badge }),
1101
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("text-3xl font-semibold lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-semibold lg:text-5xl", titleClassName), children: title })),
1102
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
1103
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
1104
- ] }),
1105
- imageContent && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
1106
- imageContent,
1107
- (avatarSrc || avatarBadgeText || overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1108
- /* @__PURE__ */ jsxRuntime.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) }),
1109
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
1110
- (avatarSrc || avatarBadgeText) && /* @__PURE__ */ jsxRuntime.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: [
1111
- avatarSrc && /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
1112
- avatarBadgeText
1113
- ] }),
1114
- (overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
1115
- overlayTitle && (typeof overlayTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h4", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle })),
1116
- overlayLinkText && /* @__PURE__ */ jsxRuntime.jsxs(
1117
- Pressable,
1101
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1102
+ "div",
1103
+ {
1104
+ className: cn(
1105
+ "grid place-items-center gap-10 lg:grid-cols-2",
1106
+ gridClassName
1107
+ ),
1108
+ children: [
1109
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-5", contentClassName), children: [
1110
+ badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("", badgeClassName), children: badge }),
1111
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1112
+ "h3",
1113
+ {
1114
+ className: cn(
1115
+ "text-3xl font-semibold lg:text-4xl leading-snug text-balance",
1116
+ titleClassName
1117
+ ),
1118
+ children: title
1119
+ }
1120
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1121
+ "div",
1122
+ {
1123
+ className: cn(
1124
+ "text-3xl font-semibold lg:text-5xl",
1125
+ titleClassName
1126
+ ),
1127
+ children: title
1128
+ }
1129
+ )),
1130
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("lg:text-lg", descriptionClassName), children: description })),
1131
+ /* @__PURE__ */ jsxRuntime.jsx(
1132
+ "div",
1133
+ {
1134
+ className: cn(
1135
+ "flex items-center gap-4 flex-wrap",
1136
+ actionsClassName
1137
+ ),
1138
+ children: actionsContent
1139
+ }
1140
+ )
1141
+ ] }),
1142
+ imageContent && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative rounded-2xl", imageWrapperClassName), children: [
1143
+ imageContent,
1144
+ (avatarSrc || avatarBadgeText || overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1145
+ /* @__PURE__ */ jsxRuntime.jsx(
1146
+ "div",
1118
1147
  {
1119
- href: overlayLinkUrl,
1120
- onClick: overlayLinkOnClick,
1121
- className: "flex items-center gap-1 font-medium",
1122
- children: [
1123
- overlayLinkText,
1124
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
1125
- ]
1148
+ className: cn(
1149
+ "absolute top-0 right-0 bottom-0 left-0 rounded-2xl bg-linear-to-t from-black via-black/20 to-transparent",
1150
+ overlayClassName
1151
+ )
1126
1152
  }
1127
- )
1153
+ ),
1154
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between pt-4 pr-4 pl-4 pb-8 md:pt-7 md:bpr-7 md:pl-7 md:pb-7 rounded-2xl", children: [
1155
+ (avatarSrc || avatarBadgeText) && /* @__PURE__ */ jsxRuntime.jsxs(
1156
+ "span",
1157
+ {
1158
+ className: cn(
1159
+ "ml-auto flex w-fit items-center gap-2 rounded-full bg-background/30 px-4 py-2.5 text-sm font-semibold backdrop-blur-sm shadow-xl",
1160
+ avatarBadgeClassName
1161
+ ),
1162
+ children: [
1163
+ avatarSrc && /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
1164
+ avatarBadgeText
1165
+ ]
1166
+ }
1167
+ ),
1168
+ (overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5", children: [
1169
+ overlayTitle && (typeof overlayTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1170
+ "h4",
1171
+ {
1172
+ className: cn(
1173
+ "text-lg font-semibold lg:text-3xl",
1174
+ overlayTitleClassName
1175
+ ),
1176
+ children: overlayTitle
1177
+ }
1178
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1179
+ "div",
1180
+ {
1181
+ className: cn(
1182
+ "text-lg font-semibold lg:text-3xl",
1183
+ overlayTitleClassName
1184
+ ),
1185
+ children: overlayTitle
1186
+ }
1187
+ )),
1188
+ overlayLinkText && /* @__PURE__ */ jsxRuntime.jsxs(
1189
+ Pressable,
1190
+ {
1191
+ href: overlayLinkUrl,
1192
+ onClick: overlayLinkOnClick,
1193
+ children: [
1194
+ overlayLinkText,
1195
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 18 })
1196
+ ]
1197
+ }
1198
+ )
1199
+ ] })
1200
+ ] })
1128
1201
  ] })
1129
1202
  ] })
1130
- ] })
1131
- ] })
1132
- ] })
1203
+ ]
1204
+ }
1205
+ )
1133
1206
  }
1134
1207
  );
1135
1208
  }