@opensite/ui 1.2.0 → 1.2.2
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/auto-scroll-carousel.cjs +7 -9
- package/dist/auto-scroll-carousel.js +7 -9
- package/dist/blur-vignette-grid.cjs +19 -27
- package/dist/blur-vignette-grid.js +19 -27
- package/dist/carousel-badge-cards.cjs +1 -1
- package/dist/carousel-badge-cards.js +1 -1
- package/dist/carousel-gradient-overlay.cjs +1 -1
- package/dist/carousel-gradient-overlay.js +1 -1
- package/dist/carousel-gradient-text.cjs +6 -17
- package/dist/carousel-gradient-text.d.cts +4 -0
- package/dist/carousel-gradient-text.d.ts +4 -0
- package/dist/carousel-gradient-text.js +6 -17
- package/dist/carousel-icon-sidebar.cjs +49 -6
- package/dist/carousel-icon-sidebar.d.cts +19 -3
- package/dist/carousel-icon-sidebar.d.ts +19 -3
- package/dist/carousel-icon-sidebar.js +49 -6
- package/dist/carousel-icon-tabs.cjs +20 -6
- package/dist/carousel-icon-tabs.js +20 -6
- package/dist/carousel-scale-focus.cjs +4 -10
- package/dist/carousel-scale-focus.js +4 -10
- package/dist/carousel-tabs-content.cjs +6 -18
- package/dist/carousel-tabs-content.js +6 -18
- package/dist/expandable-case-study-cards.cjs +39 -80
- package/dist/expandable-case-study-cards.js +39 -80
- package/dist/interior-carousel.cjs +9 -12
- package/dist/interior-carousel.js +9 -12
- package/dist/masonry-motion-grid.cjs +5 -16
- package/dist/masonry-motion-grid.js +5 -16
- package/dist/registry.cjs +7660 -7687
- package/dist/registry.js +7658 -7685
- package/dist/testimonial-carousel-cards.cjs +10 -63
- package/dist/testimonial-carousel-cards.js +10 -63
- package/package.json +1 -1
|
@@ -1129,10 +1129,14 @@ var Section = React4__default.forwardRef(
|
|
|
1129
1129
|
);
|
|
1130
1130
|
Section.displayName = "Section";
|
|
1131
1131
|
function CarouselIconSidebar({
|
|
1132
|
+
title,
|
|
1133
|
+
description,
|
|
1132
1134
|
items,
|
|
1133
1135
|
itemsSlot,
|
|
1134
1136
|
sidebarSlot,
|
|
1135
1137
|
className,
|
|
1138
|
+
sectionTitleClassName,
|
|
1139
|
+
sectionDescriptionClassName,
|
|
1136
1140
|
sidebarClassName,
|
|
1137
1141
|
iconClassName,
|
|
1138
1142
|
titleClassName,
|
|
@@ -1192,7 +1196,7 @@ function CarouselIconSidebar({
|
|
|
1192
1196
|
"div",
|
|
1193
1197
|
{
|
|
1194
1198
|
className: cn(
|
|
1195
|
-
"flex h-full flex-col gap-8 rounded-lg
|
|
1199
|
+
"flex h-full flex-col gap-8 rounded-lg p-8",
|
|
1196
1200
|
getNestedCardBg(background),
|
|
1197
1201
|
getNestedCardTextColor(background),
|
|
1198
1202
|
sidebarClassName
|
|
@@ -1250,13 +1254,13 @@ function CarouselIconSidebar({
|
|
|
1250
1254
|
const itemsContent = useMemo(() => {
|
|
1251
1255
|
if (itemsSlot) return itemsSlot;
|
|
1252
1256
|
if (!items || items.length === 0) return null;
|
|
1253
|
-
return items.map((image, index) => /* @__PURE__ */ jsx(CarouselItem, { className: cn("h-full", itemClassName), children: /* @__PURE__ */ jsx("div", { className: cn("
|
|
1257
|
+
return items.map((image, index) => /* @__PURE__ */ jsx(CarouselItem, { className: cn("h-full", itemClassName), children: /* @__PURE__ */ jsx("div", { className: cn("h-full w-full", image.className), children: /* @__PURE__ */ jsx(
|
|
1254
1258
|
Img,
|
|
1255
1259
|
{
|
|
1256
1260
|
src: image.src,
|
|
1257
1261
|
alt: typeof image.title === "string" ? image.title : image.alt || "Carousel image",
|
|
1258
1262
|
className: cn(
|
|
1259
|
-
"h-full w-full rounded-lg object-cover cursor-pointer
|
|
1263
|
+
"h-full w-full rounded-lg object-cover cursor-pointer",
|
|
1260
1264
|
imageClassName
|
|
1261
1265
|
),
|
|
1262
1266
|
loading: "lazy",
|
|
@@ -1272,7 +1276,14 @@ function CarouselIconSidebar({
|
|
|
1272
1276
|
}
|
|
1273
1277
|
}
|
|
1274
1278
|
) }) }, index));
|
|
1275
|
-
}, [
|
|
1279
|
+
}, [
|
|
1280
|
+
itemsSlot,
|
|
1281
|
+
items,
|
|
1282
|
+
itemClassName,
|
|
1283
|
+
imageClassName,
|
|
1284
|
+
optixFlowConfig,
|
|
1285
|
+
handleImageClick
|
|
1286
|
+
]);
|
|
1276
1287
|
return /* @__PURE__ */ jsxs(
|
|
1277
1288
|
Section,
|
|
1278
1289
|
{
|
|
@@ -1283,9 +1294,41 @@ function CarouselIconSidebar({
|
|
|
1283
1294
|
patternClassName,
|
|
1284
1295
|
className,
|
|
1285
1296
|
children: [
|
|
1297
|
+
title || description ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 mb-6 md:mb-16", children: [
|
|
1298
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsx(
|
|
1299
|
+
"h2",
|
|
1300
|
+
{
|
|
1301
|
+
className: cn(
|
|
1302
|
+
"text-xl font-medium tracking-tight md:text-2xl lg:text-3xl text-balance",
|
|
1303
|
+
sectionTitleClassName
|
|
1304
|
+
),
|
|
1305
|
+
children: title
|
|
1306
|
+
}
|
|
1307
|
+
) : /* @__PURE__ */ jsx("div", { className: sectionTitleClassName, children: title })),
|
|
1308
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
1309
|
+
"p",
|
|
1310
|
+
{
|
|
1311
|
+
className: cn(
|
|
1312
|
+
"max-w-lg text-balance",
|
|
1313
|
+
sectionDescriptionClassName
|
|
1314
|
+
),
|
|
1315
|
+
children: description
|
|
1316
|
+
}
|
|
1317
|
+
) : /* @__PURE__ */ jsx(
|
|
1318
|
+
"div",
|
|
1319
|
+
{
|
|
1320
|
+
className: cn(
|
|
1321
|
+
"max-w-lg text-balance",
|
|
1322
|
+
sectionDescriptionClassName
|
|
1323
|
+
),
|
|
1324
|
+
children: description
|
|
1325
|
+
}
|
|
1326
|
+
))
|
|
1327
|
+
] }) : null,
|
|
1286
1328
|
/* @__PURE__ */ jsx(Carousel, { setApi, className: cn("w-full", carouselClassName), children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-5", children: [
|
|
1287
|
-
/* @__PURE__ */ jsx("div", { className: "md:col-span-2", children: sidebarContent }),
|
|
1288
|
-
/* @__PURE__ */ jsx("div", { className: "h-full md:col-span-3", children: /* @__PURE__ */ jsx(CarouselContent, { className: carouselContentClassName, children: itemsContent }) })
|
|
1329
|
+
/* @__PURE__ */ jsx("div", { className: "hidden md:visible md:col-span-2", children: sidebarContent }),
|
|
1330
|
+
/* @__PURE__ */ jsx("div", { className: "h-full md:col-span-3", children: /* @__PURE__ */ jsx(CarouselContent, { className: carouselContentClassName, children: itemsContent }) }),
|
|
1331
|
+
/* @__PURE__ */ jsx("div", { className: "visible md:hidden md:col-span-2", children: sidebarContent })
|
|
1289
1332
|
] }) }),
|
|
1290
1333
|
lightboxOpen && /* @__PURE__ */ jsx(
|
|
1291
1334
|
Lightbox,
|
|
@@ -1222,11 +1222,11 @@ function CarouselIconTabs({
|
|
|
1222
1222
|
"div",
|
|
1223
1223
|
{
|
|
1224
1224
|
className: cn(
|
|
1225
|
-
"mb-20 flex flex-col items-center justify-center gap-8",
|
|
1225
|
+
"mb-8 md:mb-20 flex flex-col items-center justify-center gap-8",
|
|
1226
1226
|
headerClassName
|
|
1227
1227
|
),
|
|
1228
1228
|
children: [
|
|
1229
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("
|
|
1229
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-4xl", headingClassName), children: heading })),
|
|
1230
1230
|
badge && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1231
1231
|
Badge,
|
|
1232
1232
|
{
|
|
@@ -1238,7 +1238,14 @@ function CarouselIconTabs({
|
|
|
1238
1238
|
]
|
|
1239
1239
|
}
|
|
1240
1240
|
);
|
|
1241
|
-
}, [
|
|
1241
|
+
}, [
|
|
1242
|
+
headerSlot,
|
|
1243
|
+
headerClassName,
|
|
1244
|
+
heading,
|
|
1245
|
+
headingClassName,
|
|
1246
|
+
badge,
|
|
1247
|
+
badgeClassName
|
|
1248
|
+
]);
|
|
1242
1249
|
const sectionsContent = React4.useMemo(() => {
|
|
1243
1250
|
if (sectionsSlot) return sectionsSlot;
|
|
1244
1251
|
if (!sections || sections.length === 0) return null;
|
|
@@ -1253,7 +1260,7 @@ function CarouselIconTabs({
|
|
|
1253
1260
|
src: item.img,
|
|
1254
1261
|
alt: typeof item.title === "string" ? item.title : item.alt || "Tab image",
|
|
1255
1262
|
className: cn(
|
|
1256
|
-
"aspect-square h-full w-full object-cover md:aspect-2/1 cursor-pointer
|
|
1263
|
+
"aspect-square h-full w-full object-cover md:aspect-2/1 cursor-pointer rounded-xl shadow-xl",
|
|
1257
1264
|
imageClassName
|
|
1258
1265
|
),
|
|
1259
1266
|
loading: "lazy",
|
|
@@ -1278,7 +1285,14 @@ function CarouselIconTabs({
|
|
|
1278
1285
|
},
|
|
1279
1286
|
index
|
|
1280
1287
|
));
|
|
1281
|
-
}, [
|
|
1288
|
+
}, [
|
|
1289
|
+
sectionsSlot,
|
|
1290
|
+
sections,
|
|
1291
|
+
itemClassName,
|
|
1292
|
+
imageClassName,
|
|
1293
|
+
optixFlowConfig,
|
|
1294
|
+
handleImageClick
|
|
1295
|
+
]);
|
|
1282
1296
|
const tabsContent = React4.useMemo(() => {
|
|
1283
1297
|
if (!sections || sections.length === 0) return null;
|
|
1284
1298
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1328,7 +1342,7 @@ function CarouselIconTabs({
|
|
|
1328
1342
|
Carousel,
|
|
1329
1343
|
{
|
|
1330
1344
|
setApi,
|
|
1331
|
-
className: cn("flex flex-col gap-10", carouselClassName),
|
|
1345
|
+
className: cn("flex flex-col gap-4 md:gap-10", carouselClassName),
|
|
1332
1346
|
children: [
|
|
1333
1347
|
/* @__PURE__ */ jsxRuntime.jsx(CarouselContent, { className: carouselContentClassName, children: sectionsContent }),
|
|
1334
1348
|
tabsContent,
|
|
@@ -1198,11 +1198,11 @@ function CarouselIconTabs({
|
|
|
1198
1198
|
"div",
|
|
1199
1199
|
{
|
|
1200
1200
|
className: cn(
|
|
1201
|
-
"mb-20 flex flex-col items-center justify-center gap-8",
|
|
1201
|
+
"mb-8 md:mb-20 flex flex-col items-center justify-center gap-8",
|
|
1202
1202
|
headerClassName
|
|
1203
1203
|
),
|
|
1204
1204
|
children: [
|
|
1205
|
-
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("
|
|
1205
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: cn("text-4xl", headingClassName), children: heading })),
|
|
1206
1206
|
badge && /* @__PURE__ */ jsx(
|
|
1207
1207
|
Badge,
|
|
1208
1208
|
{
|
|
@@ -1214,7 +1214,14 @@ function CarouselIconTabs({
|
|
|
1214
1214
|
]
|
|
1215
1215
|
}
|
|
1216
1216
|
);
|
|
1217
|
-
}, [
|
|
1217
|
+
}, [
|
|
1218
|
+
headerSlot,
|
|
1219
|
+
headerClassName,
|
|
1220
|
+
heading,
|
|
1221
|
+
headingClassName,
|
|
1222
|
+
badge,
|
|
1223
|
+
badgeClassName
|
|
1224
|
+
]);
|
|
1218
1225
|
const sectionsContent = useMemo(() => {
|
|
1219
1226
|
if (sectionsSlot) return sectionsSlot;
|
|
1220
1227
|
if (!sections || sections.length === 0) return null;
|
|
@@ -1229,7 +1236,7 @@ function CarouselIconTabs({
|
|
|
1229
1236
|
src: item.img,
|
|
1230
1237
|
alt: typeof item.title === "string" ? item.title : item.alt || "Tab image",
|
|
1231
1238
|
className: cn(
|
|
1232
|
-
"aspect-square h-full w-full object-cover md:aspect-2/1 cursor-pointer
|
|
1239
|
+
"aspect-square h-full w-full object-cover md:aspect-2/1 cursor-pointer rounded-xl shadow-xl",
|
|
1233
1240
|
imageClassName
|
|
1234
1241
|
),
|
|
1235
1242
|
loading: "lazy",
|
|
@@ -1254,7 +1261,14 @@ function CarouselIconTabs({
|
|
|
1254
1261
|
},
|
|
1255
1262
|
index
|
|
1256
1263
|
));
|
|
1257
|
-
}, [
|
|
1264
|
+
}, [
|
|
1265
|
+
sectionsSlot,
|
|
1266
|
+
sections,
|
|
1267
|
+
itemClassName,
|
|
1268
|
+
imageClassName,
|
|
1269
|
+
optixFlowConfig,
|
|
1270
|
+
handleImageClick
|
|
1271
|
+
]);
|
|
1258
1272
|
const tabsContent = useMemo(() => {
|
|
1259
1273
|
if (!sections || sections.length === 0) return null;
|
|
1260
1274
|
return /* @__PURE__ */ jsx(
|
|
@@ -1304,7 +1318,7 @@ function CarouselIconTabs({
|
|
|
1304
1318
|
Carousel,
|
|
1305
1319
|
{
|
|
1306
1320
|
setApi,
|
|
1307
|
-
className: cn("flex flex-col gap-10", carouselClassName),
|
|
1321
|
+
className: cn("flex flex-col gap-4 md:gap-10", carouselClassName),
|
|
1308
1322
|
children: [
|
|
1309
1323
|
/* @__PURE__ */ jsx(CarouselContent, { className: carouselContentClassName, children: sectionsContent }),
|
|
1310
1324
|
tabsContent,
|
|
@@ -1237,12 +1237,12 @@ function CarouselScaleFocus({
|
|
|
1237
1237
|
className: cn("overflow-hidden", className),
|
|
1238
1238
|
children: [
|
|
1239
1239
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "md:px-45", children: [
|
|
1240
|
-
title || description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
|
|
1240
|
+
title || description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 mb-6 md:mb-16 text-center", children: [
|
|
1241
1241
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1242
1242
|
"h2",
|
|
1243
1243
|
{
|
|
1244
1244
|
className: cn(
|
|
1245
|
-
"text-xl font-medium tracking-tight md:text-2xl lg:text-3xl",
|
|
1245
|
+
"text-xl font-medium tracking-tight md:text-2xl lg:text-3xl text-balance",
|
|
1246
1246
|
titleClassName
|
|
1247
1247
|
),
|
|
1248
1248
|
children: title
|
|
@@ -1251,19 +1251,13 @@ function CarouselScaleFocus({
|
|
|
1251
1251
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1252
1252
|
"p",
|
|
1253
1253
|
{
|
|
1254
|
-
className: cn(
|
|
1255
|
-
"max-w-lg text-muted-foreground",
|
|
1256
|
-
descriptionClassName
|
|
1257
|
-
),
|
|
1254
|
+
className: cn("max-w-lg text-balance", descriptionClassName),
|
|
1258
1255
|
children: description
|
|
1259
1256
|
}
|
|
1260
1257
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1261
1258
|
"div",
|
|
1262
1259
|
{
|
|
1263
|
-
className: cn(
|
|
1264
|
-
"max-w-lg text-muted-foreground",
|
|
1265
|
-
descriptionClassName
|
|
1266
|
-
),
|
|
1260
|
+
className: cn("max-w-lg text-balance", descriptionClassName),
|
|
1267
1261
|
children: description
|
|
1268
1262
|
}
|
|
1269
1263
|
))
|
|
@@ -1213,12 +1213,12 @@ function CarouselScaleFocus({
|
|
|
1213
1213
|
className: cn("overflow-hidden", className),
|
|
1214
1214
|
children: [
|
|
1215
1215
|
/* @__PURE__ */ jsxs("div", { className: "md:px-45", children: [
|
|
1216
|
-
title || description ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
|
|
1216
|
+
title || description ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 mb-6 md:mb-16 text-center", children: [
|
|
1217
1217
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx(
|
|
1218
1218
|
"h2",
|
|
1219
1219
|
{
|
|
1220
1220
|
className: cn(
|
|
1221
|
-
"text-xl font-medium tracking-tight md:text-2xl lg:text-3xl",
|
|
1221
|
+
"text-xl font-medium tracking-tight md:text-2xl lg:text-3xl text-balance",
|
|
1222
1222
|
titleClassName
|
|
1223
1223
|
),
|
|
1224
1224
|
children: title
|
|
@@ -1227,19 +1227,13 @@ function CarouselScaleFocus({
|
|
|
1227
1227
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
1228
1228
|
"p",
|
|
1229
1229
|
{
|
|
1230
|
-
className: cn(
|
|
1231
|
-
"max-w-lg text-muted-foreground",
|
|
1232
|
-
descriptionClassName
|
|
1233
|
-
),
|
|
1230
|
+
className: cn("max-w-lg text-balance", descriptionClassName),
|
|
1234
1231
|
children: description
|
|
1235
1232
|
}
|
|
1236
1233
|
) : /* @__PURE__ */ jsx(
|
|
1237
1234
|
"div",
|
|
1238
1235
|
{
|
|
1239
|
-
className: cn(
|
|
1240
|
-
"max-w-lg text-muted-foreground",
|
|
1241
|
-
descriptionClassName
|
|
1242
|
-
),
|
|
1236
|
+
className: cn("max-w-lg text-balance", descriptionClassName),
|
|
1243
1237
|
children: description
|
|
1244
1238
|
}
|
|
1245
1239
|
))
|
|
@@ -1202,7 +1202,7 @@ function CarouselTabsContent({
|
|
|
1202
1202
|
}, []);
|
|
1203
1203
|
const tabsContent = React4.useMemo(() => {
|
|
1204
1204
|
if (tabsSlot) return tabsSlot;
|
|
1205
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative
|
|
1205
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative flex min-w-0 flex-1 overflow-x-auto scrollbar-hide", tabsClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex h-auto flex-nowrap gap-2 md:gap-4", children: [
|
|
1206
1206
|
items?.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1207
1207
|
"button",
|
|
1208
1208
|
{
|
|
@@ -1211,7 +1211,7 @@ function CarouselTabsContent({
|
|
|
1211
1211
|
},
|
|
1212
1212
|
onClick: () => setCurrent(item.category),
|
|
1213
1213
|
className: cn(
|
|
1214
|
-
"text-base transition-all duration-700 ease-out px-3 py-1.5 rounded-sm",
|
|
1214
|
+
"text-base transition-all duration-700 ease-out px-3 py-1.5 rounded-sm whitespace-nowrap flex-shrink-0",
|
|
1215
1215
|
current === item.category ? "text-foreground" : "text-muted-foreground hover:text-foreground",
|
|
1216
1216
|
tabClassName
|
|
1217
1217
|
),
|
|
@@ -1317,33 +1317,21 @@ function CarouselTabsContent({
|
|
|
1317
1317
|
patternClassName,
|
|
1318
1318
|
className: cn("overflow-hidden", className),
|
|
1319
1319
|
children: [
|
|
1320
|
-
title || description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
|
|
1320
|
+
title || description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 mb-6 md:mb-16", children: [
|
|
1321
1321
|
title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1322
1322
|
"h2",
|
|
1323
1323
|
{
|
|
1324
1324
|
className: cn(
|
|
1325
|
-
"text-xl font-medium tracking-tight md:text-2xl lg:text-3xl",
|
|
1325
|
+
"text-xl font-medium tracking-tight md:text-2xl lg:text-3xl text-balance",
|
|
1326
1326
|
titleClassName
|
|
1327
1327
|
),
|
|
1328
1328
|
children: title
|
|
1329
1329
|
}
|
|
1330
1330
|
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
|
|
1331
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1332
|
-
"p",
|
|
1333
|
-
{
|
|
1334
|
-
className: cn(
|
|
1335
|
-
"max-w-lg text-muted-foreground",
|
|
1336
|
-
descriptionClassName
|
|
1337
|
-
),
|
|
1338
|
-
children: description
|
|
1339
|
-
}
|
|
1340
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1331
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1341
1332
|
"div",
|
|
1342
1333
|
{
|
|
1343
|
-
className: cn(
|
|
1344
|
-
"max-w-lg text-muted-foreground",
|
|
1345
|
-
descriptionClassName
|
|
1346
|
-
),
|
|
1334
|
+
className: cn("max-w-lg text-balance", descriptionClassName),
|
|
1347
1335
|
children: description
|
|
1348
1336
|
}
|
|
1349
1337
|
))
|
|
@@ -1178,7 +1178,7 @@ function CarouselTabsContent({
|
|
|
1178
1178
|
}, []);
|
|
1179
1179
|
const tabsContent = useMemo(() => {
|
|
1180
1180
|
if (tabsSlot) return tabsSlot;
|
|
1181
|
-
return /* @__PURE__ */ jsx("div", { className: cn("relative
|
|
1181
|
+
return /* @__PURE__ */ jsx("div", { className: cn("relative flex min-w-0 flex-1 overflow-x-auto scrollbar-hide", tabsClassName), children: /* @__PURE__ */ jsxs("div", { className: "relative flex h-auto flex-nowrap gap-2 md:gap-4", children: [
|
|
1182
1182
|
items?.map((item, idx) => /* @__PURE__ */ jsx(
|
|
1183
1183
|
"button",
|
|
1184
1184
|
{
|
|
@@ -1187,7 +1187,7 @@ function CarouselTabsContent({
|
|
|
1187
1187
|
},
|
|
1188
1188
|
onClick: () => setCurrent(item.category),
|
|
1189
1189
|
className: cn(
|
|
1190
|
-
"text-base transition-all duration-700 ease-out px-3 py-1.5 rounded-sm",
|
|
1190
|
+
"text-base transition-all duration-700 ease-out px-3 py-1.5 rounded-sm whitespace-nowrap flex-shrink-0",
|
|
1191
1191
|
current === item.category ? "text-foreground" : "text-muted-foreground hover:text-foreground",
|
|
1192
1192
|
tabClassName
|
|
1193
1193
|
),
|
|
@@ -1293,33 +1293,21 @@ function CarouselTabsContent({
|
|
|
1293
1293
|
patternClassName,
|
|
1294
1294
|
className: cn("overflow-hidden", className),
|
|
1295
1295
|
children: [
|
|
1296
|
-
title || description ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
|
|
1296
|
+
title || description ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 mb-6 md:mb-16", children: [
|
|
1297
1297
|
title && (typeof title === "string" ? /* @__PURE__ */ jsx(
|
|
1298
1298
|
"h2",
|
|
1299
1299
|
{
|
|
1300
1300
|
className: cn(
|
|
1301
|
-
"text-xl font-medium tracking-tight md:text-2xl lg:text-3xl",
|
|
1301
|
+
"text-xl font-medium tracking-tight md:text-2xl lg:text-3xl text-balance",
|
|
1302
1302
|
titleClassName
|
|
1303
1303
|
),
|
|
1304
1304
|
children: title
|
|
1305
1305
|
}
|
|
1306
1306
|
) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
|
|
1307
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
1308
|
-
"p",
|
|
1309
|
-
{
|
|
1310
|
-
className: cn(
|
|
1311
|
-
"max-w-lg text-muted-foreground",
|
|
1312
|
-
descriptionClassName
|
|
1313
|
-
),
|
|
1314
|
-
children: description
|
|
1315
|
-
}
|
|
1316
|
-
) : /* @__PURE__ */ jsx(
|
|
1307
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsx(
|
|
1317
1308
|
"div",
|
|
1318
1309
|
{
|
|
1319
|
-
className: cn(
|
|
1320
|
-
"max-w-lg text-muted-foreground",
|
|
1321
|
-
descriptionClassName
|
|
1322
|
-
),
|
|
1310
|
+
className: cn("max-w-lg text-balance", descriptionClassName),
|
|
1323
1311
|
children: description
|
|
1324
1312
|
}
|
|
1325
1313
|
))
|
|
@@ -33,36 +33,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
33
33
|
function cn(...inputs) {
|
|
34
34
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
35
35
|
}
|
|
36
|
-
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
37
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
38
|
-
if (isDark) {
|
|
39
|
-
switch (variant) {
|
|
40
|
-
case "muted":
|
|
41
|
-
return "bg-background";
|
|
42
|
-
case "card":
|
|
43
|
-
return "bg-card";
|
|
44
|
-
case "accent":
|
|
45
|
-
return "bg-accent";
|
|
46
|
-
case "subtle":
|
|
47
|
-
return "bg-background/50";
|
|
48
|
-
}
|
|
49
|
-
} else {
|
|
50
|
-
switch (variant) {
|
|
51
|
-
case "muted":
|
|
52
|
-
return "bg-muted";
|
|
53
|
-
case "card":
|
|
54
|
-
return "bg-card";
|
|
55
|
-
case "accent":
|
|
56
|
-
return "bg-accent";
|
|
57
|
-
case "subtle":
|
|
58
|
-
return "bg-muted/50";
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
function getNestedCardTextColor(parentBg, options) {
|
|
63
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
64
|
-
return isDark ? "text-foreground" : "";
|
|
65
|
-
}
|
|
66
36
|
var badgeVariants = classVarianceAuthority.cva(
|
|
67
37
|
"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",
|
|
68
38
|
{
|
|
@@ -603,7 +573,7 @@ function ExpandableCaseStudyCards({
|
|
|
603
573
|
{
|
|
604
574
|
"data-state": selection === item.id ? "open" : "closed",
|
|
605
575
|
className: cn(
|
|
606
|
-
|
|
576
|
+
"group h-[280px] w-full lg:h-auto lg:w-auto lg:transform-gpu lg:transition-all lg:data-[state=closed]:w-[20%] lg:data-[state=closed]:duration-500 lg:data-[state=open]:w-[60%] lg:data-[state=open]:duration-400",
|
|
607
577
|
item.className,
|
|
608
578
|
cardClassName
|
|
609
579
|
),
|
|
@@ -614,72 +584,61 @@ function ExpandableCaseStudyCards({
|
|
|
614
584
|
"a",
|
|
615
585
|
{
|
|
616
586
|
href: item.href,
|
|
617
|
-
className: "relative block h-full w-full overflow-hidden rounded-xl
|
|
587
|
+
className: "relative block h-full w-full overflow-hidden rounded-xl",
|
|
618
588
|
children: [
|
|
619
|
-
/* @__PURE__ */ jsxRuntime.
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
589
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 lg:group-data-[state=closed]:blur-xs lg:transition-[filter] lg:duration-500", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
590
|
+
img.Img,
|
|
591
|
+
{
|
|
592
|
+
src: item.image,
|
|
593
|
+
alt: typeof item.title === "string" ? item.title : item.imageAlt || "Case study image",
|
|
594
|
+
className: cn(
|
|
595
|
+
"h-full w-full object-cover object-center",
|
|
596
|
+
imageClassName
|
|
597
|
+
),
|
|
598
|
+
loading: "lazy",
|
|
599
|
+
optixFlowConfig
|
|
600
|
+
}
|
|
601
|
+
) }),
|
|
602
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-x-0 bottom-0 h-[70%] bg-linear-to-t from-black/90 from-30% to-transparent" }),
|
|
603
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 flex flex-col justify-end p-4 pb-5 lg:transition-opacity lg:delay-200 lg:duration-500 lg:group-data-[state=closed]:opacity-0", children: [
|
|
604
|
+
item.badges && item.badges.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
634
605
|
"div",
|
|
635
606
|
{
|
|
636
607
|
className: cn(
|
|
637
|
-
"
|
|
638
|
-
|
|
639
|
-
getNestedCardTextColor(background)
|
|
608
|
+
"mb-3 flex flex-wrap items-center gap-2",
|
|
609
|
+
badgesClassName
|
|
640
610
|
),
|
|
641
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
611
|
+
children: item.badges.map((badge, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
612
|
+
Badge,
|
|
613
|
+
{
|
|
614
|
+
variant: "secondary",
|
|
615
|
+
className: badgeClassName,
|
|
616
|
+
children: badge
|
|
617
|
+
},
|
|
618
|
+
idx
|
|
619
|
+
))
|
|
642
620
|
}
|
|
643
621
|
),
|
|
644
|
-
/* @__PURE__ */ jsxRuntime.
|
|
645
|
-
|
|
646
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex flex-col justify-between gap-4 md:absolute md:inset-0 md:max-lg:inset-x-[50%] md:max-lg:w-[50%]", children: [
|
|
647
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: 'flex flex-col gap-3 p-4 pt-6 transition-all delay-200 duration-500 lg:group-data-[state="closed"]:opacity-0', children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-2", children: [
|
|
648
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
622
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end justify-between gap-3", children: [
|
|
623
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
649
624
|
item.logo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
650
625
|
img.Img,
|
|
651
626
|
{
|
|
652
627
|
src: item.logo,
|
|
653
628
|
alt: item.logoAlt || item.company || "Logo",
|
|
654
|
-
className: cn(
|
|
629
|
+
className: cn(
|
|
630
|
+
"h-6 max-w-[120px] object-contain object-left invert lg:h-8 lg:max-w-[150px]",
|
|
631
|
+
logoClassName
|
|
632
|
+
),
|
|
655
633
|
loading: "lazy",
|
|
656
634
|
optixFlowConfig
|
|
657
635
|
}
|
|
658
636
|
) }),
|
|
659
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base font-medium lg:text-lg", children: item.title }),
|
|
660
|
-
item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-
|
|
637
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base font-medium text-white lg:text-lg", children: item.title }),
|
|
638
|
+
item.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-white/80", children: item.description })
|
|
661
639
|
] }),
|
|
662
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
663
|
-
|
|
664
|
-
{
|
|
665
|
-
className: cn(
|
|
666
|
-
"flex size-8 shrink-0 items-center justify-center rounded-full text-foreground transition-transform group-hover:translate-x-1 group-hover:-translate-y-1 lg:size-10",
|
|
667
|
-
getNestedCardBg(background, "card")
|
|
668
|
-
),
|
|
669
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 20 })
|
|
670
|
-
}
|
|
671
|
-
)
|
|
672
|
-
] }) }),
|
|
673
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
674
|
-
"div",
|
|
675
|
-
{
|
|
676
|
-
className: cn(
|
|
677
|
-
'flex h-20 items-center gap-2 px-4 pb-4 transition-opacity delay-200 duration-500 lg:group-data-[state="closed"]:opacity-0',
|
|
678
|
-
badgesClassName
|
|
679
|
-
),
|
|
680
|
-
children: item.badges?.map((badge, idx) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "secondary", className: badgeClassName, children: badge }, idx))
|
|
681
|
-
}
|
|
682
|
-
)
|
|
640
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-8 shrink-0 items-center justify-center rounded-full bg-white/20 text-white backdrop-blur-sm transition-transform group-hover:translate-x-1 group-hover:-translate-y-1 lg:size-10", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 20 }) })
|
|
641
|
+
] })
|
|
683
642
|
] })
|
|
684
643
|
]
|
|
685
644
|
}
|