@opensite/ui 0.2.6 → 0.2.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.
|
@@ -1073,7 +1073,11 @@ var defaultProps = {
|
|
|
1073
1073
|
carouselImages: defaultCarouselImages,
|
|
1074
1074
|
sections: defaultSections,
|
|
1075
1075
|
gridImages: defaultGridImages,
|
|
1076
|
-
backAction: {
|
|
1076
|
+
backAction: {
|
|
1077
|
+
label: "Back to Projects",
|
|
1078
|
+
href: "/projects",
|
|
1079
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-left", size: 16 })
|
|
1080
|
+
},
|
|
1077
1081
|
videoUrl: "https://cdn.ing/assets/files/record/286359/architecture-presentation.mp4",
|
|
1078
1082
|
videoPoster: imagePlaceholders[49],
|
|
1079
1083
|
pdfUrl: "https://cdn.ing/assets/files/record/286359/5fv7u23rr648t363fy2ibs61sflg",
|
|
@@ -1122,7 +1126,9 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1122
1126
|
enableLightbox = defaultProps.enableLightbox
|
|
1123
1127
|
} = props;
|
|
1124
1128
|
const [currentSlide, setCurrentSlide] = React3.useState(0);
|
|
1125
|
-
const [selectedTab, setSelectedTab] = React3.useState(
|
|
1129
|
+
const [selectedTab, setSelectedTab] = React3.useState(
|
|
1130
|
+
"slides"
|
|
1131
|
+
);
|
|
1126
1132
|
const [lightboxOpen, setLightboxOpen] = React3.useState(false);
|
|
1127
1133
|
const [lightboxIndex, setLightboxIndex] = React3.useState(0);
|
|
1128
1134
|
const lightboxItems = React3.useMemo(() => {
|
|
@@ -1136,12 +1142,15 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1136
1142
|
share: true
|
|
1137
1143
|
}));
|
|
1138
1144
|
}, [carouselImages]);
|
|
1139
|
-
const handleImageClick = React3.useCallback(
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
+
const handleImageClick = React3.useCallback(
|
|
1146
|
+
(index) => {
|
|
1147
|
+
if (enableLightbox) {
|
|
1148
|
+
setLightboxIndex(index);
|
|
1149
|
+
setLightboxOpen(true);
|
|
1150
|
+
}
|
|
1151
|
+
},
|
|
1152
|
+
[enableLightbox]
|
|
1153
|
+
);
|
|
1145
1154
|
const handleLightboxClose = React3.useCallback(() => {
|
|
1146
1155
|
setLightboxOpen(false);
|
|
1147
1156
|
}, []);
|
|
@@ -1160,11 +1169,21 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1160
1169
|
const renderBackAction = () => {
|
|
1161
1170
|
if (backActionSlot) return backActionSlot;
|
|
1162
1171
|
if (!backAction) return null;
|
|
1163
|
-
const {
|
|
1172
|
+
const {
|
|
1173
|
+
label,
|
|
1174
|
+
icon,
|
|
1175
|
+
iconAfter,
|
|
1176
|
+
children,
|
|
1177
|
+
className: actionClassName,
|
|
1178
|
+
...pressableProps
|
|
1179
|
+
} = backAction;
|
|
1164
1180
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1165
1181
|
Pressable,
|
|
1166
1182
|
{
|
|
1167
|
-
className: cn(
|
|
1183
|
+
className: cn(
|
|
1184
|
+
"inline-flex items-center gap-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground",
|
|
1185
|
+
actionClassName
|
|
1186
|
+
),
|
|
1168
1187
|
...pressableProps,
|
|
1169
1188
|
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1170
1189
|
icon,
|
|
@@ -1192,18 +1211,36 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1192
1211
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "|" }),
|
|
1193
1212
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: location })
|
|
1194
1213
|
] }),
|
|
1195
|
-
typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1214
|
+
typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1215
|
+
"h1",
|
|
1216
|
+
{
|
|
1217
|
+
className: cn(
|
|
1218
|
+
"text-4xl font-bold tracking-tight text-foreground md:text-5xl lg:text-6xl",
|
|
1219
|
+
titleClassName
|
|
1220
|
+
),
|
|
1221
|
+
children: title
|
|
1222
|
+
}
|
|
1223
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title }),
|
|
1196
1224
|
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-xl text-muted-foreground", children: subtitle }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: subtitle }))
|
|
1197
1225
|
] }),
|
|
1198
|
-
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { ...fadeInUp, className: "mb-16", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1199
|
-
|
|
1226
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { ...fadeInUp, className: "mb-16", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1227
|
+
"div",
|
|
1200
1228
|
{
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1229
|
+
className: cn(
|
|
1230
|
+
"relative aspect-video overflow-hidden rounded-2xl bg-muted",
|
|
1231
|
+
heroImageClassName
|
|
1232
|
+
),
|
|
1233
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1234
|
+
img.Img,
|
|
1235
|
+
{
|
|
1236
|
+
src: heroImage?.src || imagePlaceholders[56],
|
|
1237
|
+
alt: heroImage?.alt || "Project hero image",
|
|
1238
|
+
className: "h-full w-full object-cover",
|
|
1239
|
+
optixFlowConfig
|
|
1240
|
+
}
|
|
1241
|
+
)
|
|
1205
1242
|
}
|
|
1206
|
-
) })
|
|
1243
|
+
) }),
|
|
1207
1244
|
description && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1208
1245
|
framerMotion.motion.div,
|
|
1209
1246
|
{
|
|
@@ -1230,7 +1267,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1230
1267
|
selectedTab === "slides" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
1231
1268
|
),
|
|
1232
1269
|
children: [
|
|
1233
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1270
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1271
|
+
DynamicIcon,
|
|
1272
|
+
{
|
|
1273
|
+
name: "lucide/images",
|
|
1274
|
+
size: 16,
|
|
1275
|
+
className: "mr-2 inline-block"
|
|
1276
|
+
}
|
|
1277
|
+
),
|
|
1234
1278
|
"Slides (",
|
|
1235
1279
|
carouselImages?.length || 0,
|
|
1236
1280
|
")"
|
|
@@ -1247,7 +1291,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1247
1291
|
selectedTab === "video" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
1248
1292
|
),
|
|
1249
1293
|
children: [
|
|
1250
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1294
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1295
|
+
DynamicIcon,
|
|
1296
|
+
{
|
|
1297
|
+
name: "lucide/play-circle",
|
|
1298
|
+
size: 16,
|
|
1299
|
+
className: "mr-2 inline-block"
|
|
1300
|
+
}
|
|
1301
|
+
),
|
|
1251
1302
|
"Video"
|
|
1252
1303
|
]
|
|
1253
1304
|
}
|
|
@@ -1262,7 +1313,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1262
1313
|
selectedTab === "pdf" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
1263
1314
|
),
|
|
1264
1315
|
children: [
|
|
1265
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1316
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1317
|
+
DynamicIcon,
|
|
1318
|
+
{
|
|
1319
|
+
name: "lucide/file-text",
|
|
1320
|
+
size: 16,
|
|
1321
|
+
className: "mr-2 inline-block"
|
|
1322
|
+
}
|
|
1323
|
+
),
|
|
1266
1324
|
"PDF Document"
|
|
1267
1325
|
]
|
|
1268
1326
|
}
|
|
@@ -1414,7 +1472,10 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1414
1472
|
{
|
|
1415
1473
|
...fadeInUp,
|
|
1416
1474
|
transition: { duration: 0.6, delay: 0.3 },
|
|
1417
|
-
className: cn(
|
|
1475
|
+
className: cn(
|
|
1476
|
+
"mb-16 grid gap-12 md:grid-cols-2",
|
|
1477
|
+
sectionsClassName
|
|
1478
|
+
),
|
|
1418
1479
|
children: sections.map((section, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1419
1480
|
typeof section.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mb-4 text-2xl font-semibold text-foreground", children: section.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: section.title }),
|
|
1420
1481
|
typeof section.content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg leading-relaxed text-muted-foreground", children: section.content }) : section.content
|
|
@@ -1052,7 +1052,11 @@ var defaultProps = {
|
|
|
1052
1052
|
carouselImages: defaultCarouselImages,
|
|
1053
1053
|
sections: defaultSections,
|
|
1054
1054
|
gridImages: defaultGridImages,
|
|
1055
|
-
backAction: {
|
|
1055
|
+
backAction: {
|
|
1056
|
+
label: "Back to Projects",
|
|
1057
|
+
href: "/projects",
|
|
1058
|
+
icon: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-left", size: 16 })
|
|
1059
|
+
},
|
|
1056
1060
|
videoUrl: "https://cdn.ing/assets/files/record/286359/architecture-presentation.mp4",
|
|
1057
1061
|
videoPoster: imagePlaceholders[49],
|
|
1058
1062
|
pdfUrl: "https://cdn.ing/assets/files/record/286359/5fv7u23rr648t363fy2ibs61sflg",
|
|
@@ -1101,7 +1105,9 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1101
1105
|
enableLightbox = defaultProps.enableLightbox
|
|
1102
1106
|
} = props;
|
|
1103
1107
|
const [currentSlide, setCurrentSlide] = useState(0);
|
|
1104
|
-
const [selectedTab, setSelectedTab] = useState(
|
|
1108
|
+
const [selectedTab, setSelectedTab] = useState(
|
|
1109
|
+
"slides"
|
|
1110
|
+
);
|
|
1105
1111
|
const [lightboxOpen, setLightboxOpen] = useState(false);
|
|
1106
1112
|
const [lightboxIndex, setLightboxIndex] = useState(0);
|
|
1107
1113
|
const lightboxItems = useMemo(() => {
|
|
@@ -1115,12 +1121,15 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1115
1121
|
share: true
|
|
1116
1122
|
}));
|
|
1117
1123
|
}, [carouselImages]);
|
|
1118
|
-
const handleImageClick = useCallback(
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
+
const handleImageClick = useCallback(
|
|
1125
|
+
(index) => {
|
|
1126
|
+
if (enableLightbox) {
|
|
1127
|
+
setLightboxIndex(index);
|
|
1128
|
+
setLightboxOpen(true);
|
|
1129
|
+
}
|
|
1130
|
+
},
|
|
1131
|
+
[enableLightbox]
|
|
1132
|
+
);
|
|
1124
1133
|
const handleLightboxClose = useCallback(() => {
|
|
1125
1134
|
setLightboxOpen(false);
|
|
1126
1135
|
}, []);
|
|
@@ -1139,11 +1148,21 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1139
1148
|
const renderBackAction = () => {
|
|
1140
1149
|
if (backActionSlot) return backActionSlot;
|
|
1141
1150
|
if (!backAction) return null;
|
|
1142
|
-
const {
|
|
1151
|
+
const {
|
|
1152
|
+
label,
|
|
1153
|
+
icon,
|
|
1154
|
+
iconAfter,
|
|
1155
|
+
children,
|
|
1156
|
+
className: actionClassName,
|
|
1157
|
+
...pressableProps
|
|
1158
|
+
} = backAction;
|
|
1143
1159
|
return /* @__PURE__ */ jsx(
|
|
1144
1160
|
Pressable,
|
|
1145
1161
|
{
|
|
1146
|
-
className: cn(
|
|
1162
|
+
className: cn(
|
|
1163
|
+
"inline-flex items-center gap-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground",
|
|
1164
|
+
actionClassName
|
|
1165
|
+
),
|
|
1147
1166
|
...pressableProps,
|
|
1148
1167
|
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1149
1168
|
icon,
|
|
@@ -1171,18 +1190,36 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1171
1190
|
/* @__PURE__ */ jsx("span", { children: "|" }),
|
|
1172
1191
|
/* @__PURE__ */ jsx("span", { children: location })
|
|
1173
1192
|
] }),
|
|
1174
|
-
typeof title === "string" ? /* @__PURE__ */ jsx(
|
|
1193
|
+
typeof title === "string" ? /* @__PURE__ */ jsx(
|
|
1194
|
+
"h1",
|
|
1195
|
+
{
|
|
1196
|
+
className: cn(
|
|
1197
|
+
"text-4xl font-bold tracking-tight text-foreground md:text-5xl lg:text-6xl",
|
|
1198
|
+
titleClassName
|
|
1199
|
+
),
|
|
1200
|
+
children: title
|
|
1201
|
+
}
|
|
1202
|
+
) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title }),
|
|
1175
1203
|
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-xl text-muted-foreground", children: subtitle }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: subtitle }))
|
|
1176
1204
|
] }),
|
|
1177
|
-
/* @__PURE__ */ jsx(motion.div, { ...fadeInUp, className: "mb-16", children: /* @__PURE__ */ jsx(
|
|
1178
|
-
|
|
1205
|
+
/* @__PURE__ */ jsx(motion.div, { ...fadeInUp, className: "mb-16", children: /* @__PURE__ */ jsx(
|
|
1206
|
+
"div",
|
|
1179
1207
|
{
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1208
|
+
className: cn(
|
|
1209
|
+
"relative aspect-video overflow-hidden rounded-2xl bg-muted",
|
|
1210
|
+
heroImageClassName
|
|
1211
|
+
),
|
|
1212
|
+
children: /* @__PURE__ */ jsx(
|
|
1213
|
+
Img,
|
|
1214
|
+
{
|
|
1215
|
+
src: heroImage?.src || imagePlaceholders[56],
|
|
1216
|
+
alt: heroImage?.alt || "Project hero image",
|
|
1217
|
+
className: "h-full w-full object-cover",
|
|
1218
|
+
optixFlowConfig
|
|
1219
|
+
}
|
|
1220
|
+
)
|
|
1184
1221
|
}
|
|
1185
|
-
) })
|
|
1222
|
+
) }),
|
|
1186
1223
|
description && /* @__PURE__ */ jsx(
|
|
1187
1224
|
motion.div,
|
|
1188
1225
|
{
|
|
@@ -1209,7 +1246,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1209
1246
|
selectedTab === "slides" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
1210
1247
|
),
|
|
1211
1248
|
children: [
|
|
1212
|
-
/* @__PURE__ */ jsx(
|
|
1249
|
+
/* @__PURE__ */ jsx(
|
|
1250
|
+
DynamicIcon,
|
|
1251
|
+
{
|
|
1252
|
+
name: "lucide/images",
|
|
1253
|
+
size: 16,
|
|
1254
|
+
className: "mr-2 inline-block"
|
|
1255
|
+
}
|
|
1256
|
+
),
|
|
1213
1257
|
"Slides (",
|
|
1214
1258
|
carouselImages?.length || 0,
|
|
1215
1259
|
")"
|
|
@@ -1226,7 +1270,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1226
1270
|
selectedTab === "video" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
1227
1271
|
),
|
|
1228
1272
|
children: [
|
|
1229
|
-
/* @__PURE__ */ jsx(
|
|
1273
|
+
/* @__PURE__ */ jsx(
|
|
1274
|
+
DynamicIcon,
|
|
1275
|
+
{
|
|
1276
|
+
name: "lucide/play-circle",
|
|
1277
|
+
size: 16,
|
|
1278
|
+
className: "mr-2 inline-block"
|
|
1279
|
+
}
|
|
1280
|
+
),
|
|
1230
1281
|
"Video"
|
|
1231
1282
|
]
|
|
1232
1283
|
}
|
|
@@ -1241,7 +1292,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1241
1292
|
selectedTab === "pdf" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
1242
1293
|
),
|
|
1243
1294
|
children: [
|
|
1244
|
-
/* @__PURE__ */ jsx(
|
|
1295
|
+
/* @__PURE__ */ jsx(
|
|
1296
|
+
DynamicIcon,
|
|
1297
|
+
{
|
|
1298
|
+
name: "lucide/file-text",
|
|
1299
|
+
size: 16,
|
|
1300
|
+
className: "mr-2 inline-block"
|
|
1301
|
+
}
|
|
1302
|
+
),
|
|
1245
1303
|
"PDF Document"
|
|
1246
1304
|
]
|
|
1247
1305
|
}
|
|
@@ -1393,7 +1451,10 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
1393
1451
|
{
|
|
1394
1452
|
...fadeInUp,
|
|
1395
1453
|
transition: { duration: 0.6, delay: 0.3 },
|
|
1396
|
-
className: cn(
|
|
1454
|
+
className: cn(
|
|
1455
|
+
"mb-16 grid gap-12 md:grid-cols-2",
|
|
1456
|
+
sectionsClassName
|
|
1457
|
+
),
|
|
1397
1458
|
children: sections.map((section, index) => /* @__PURE__ */ jsxs("div", { children: [
|
|
1398
1459
|
typeof section.title === "string" ? /* @__PURE__ */ jsx("h2", { className: "mb-4 text-2xl font-semibold text-foreground", children: section.title }) : /* @__PURE__ */ jsx("div", { className: "mb-4", children: section.title }),
|
|
1399
1460
|
typeof section.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-lg leading-relaxed text-muted-foreground", children: section.content }) : section.content
|
package/dist/registry.cjs
CHANGED
|
@@ -77786,7 +77786,11 @@ var defaultProps15 = {
|
|
|
77786
77786
|
carouselImages: defaultCarouselImages3,
|
|
77787
77787
|
sections: defaultSections17,
|
|
77788
77788
|
gridImages: defaultGridImages3,
|
|
77789
|
-
backAction: {
|
|
77789
|
+
backAction: {
|
|
77790
|
+
label: "Back to Projects",
|
|
77791
|
+
href: "/projects",
|
|
77792
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-left", size: 16 })
|
|
77793
|
+
},
|
|
77790
77794
|
videoUrl: "https://cdn.ing/assets/files/record/286359/architecture-presentation.mp4",
|
|
77791
77795
|
videoPoster: imagePlaceholders[49],
|
|
77792
77796
|
pdfUrl: "https://cdn.ing/assets/files/record/286359/5fv7u23rr648t363fy2ibs61sflg",
|
|
@@ -77835,7 +77839,9 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77835
77839
|
enableLightbox = defaultProps15.enableLightbox
|
|
77836
77840
|
} = props;
|
|
77837
77841
|
const [currentSlide, setCurrentSlide] = React11.useState(0);
|
|
77838
|
-
const [selectedTab, setSelectedTab] = React11.useState(
|
|
77842
|
+
const [selectedTab, setSelectedTab] = React11.useState(
|
|
77843
|
+
"slides"
|
|
77844
|
+
);
|
|
77839
77845
|
const [lightboxOpen, setLightboxOpen] = React11.useState(false);
|
|
77840
77846
|
const [lightboxIndex, setLightboxIndex] = React11.useState(0);
|
|
77841
77847
|
const lightboxItems = React11.useMemo(() => {
|
|
@@ -77849,12 +77855,15 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77849
77855
|
share: true
|
|
77850
77856
|
}));
|
|
77851
77857
|
}, [carouselImages]);
|
|
77852
|
-
const handleImageClick = React11.useCallback(
|
|
77853
|
-
|
|
77854
|
-
|
|
77855
|
-
|
|
77856
|
-
|
|
77857
|
-
|
|
77858
|
+
const handleImageClick = React11.useCallback(
|
|
77859
|
+
(index) => {
|
|
77860
|
+
if (enableLightbox) {
|
|
77861
|
+
setLightboxIndex(index);
|
|
77862
|
+
setLightboxOpen(true);
|
|
77863
|
+
}
|
|
77864
|
+
},
|
|
77865
|
+
[enableLightbox]
|
|
77866
|
+
);
|
|
77858
77867
|
const handleLightboxClose = React11.useCallback(() => {
|
|
77859
77868
|
setLightboxOpen(false);
|
|
77860
77869
|
}, []);
|
|
@@ -77873,11 +77882,21 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77873
77882
|
const renderBackAction = () => {
|
|
77874
77883
|
if (backActionSlot) return backActionSlot;
|
|
77875
77884
|
if (!backAction) return null;
|
|
77876
|
-
const {
|
|
77885
|
+
const {
|
|
77886
|
+
label,
|
|
77887
|
+
icon,
|
|
77888
|
+
iconAfter,
|
|
77889
|
+
children,
|
|
77890
|
+
className: actionClassName,
|
|
77891
|
+
...pressableProps
|
|
77892
|
+
} = backAction;
|
|
77877
77893
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
77878
77894
|
Pressable,
|
|
77879
77895
|
{
|
|
77880
|
-
className: cn(
|
|
77896
|
+
className: cn(
|
|
77897
|
+
"inline-flex items-center gap-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground",
|
|
77898
|
+
actionClassName
|
|
77899
|
+
),
|
|
77881
77900
|
...pressableProps,
|
|
77882
77901
|
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
77883
77902
|
icon,
|
|
@@ -77905,18 +77924,36 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77905
77924
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "|" }),
|
|
77906
77925
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: location })
|
|
77907
77926
|
] }),
|
|
77908
|
-
typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
77927
|
+
typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
77928
|
+
"h1",
|
|
77929
|
+
{
|
|
77930
|
+
className: cn(
|
|
77931
|
+
"text-4xl font-bold tracking-tight text-foreground md:text-5xl lg:text-6xl",
|
|
77932
|
+
titleClassName
|
|
77933
|
+
),
|
|
77934
|
+
children: title
|
|
77935
|
+
}
|
|
77936
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title }),
|
|
77909
77937
|
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-xl text-muted-foreground", children: subtitle }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: subtitle }))
|
|
77910
77938
|
] }),
|
|
77911
|
-
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { ...fadeInUp12, className: "mb-16", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
77912
|
-
|
|
77939
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.div, { ...fadeInUp12, className: "mb-16", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
77940
|
+
"div",
|
|
77913
77941
|
{
|
|
77914
|
-
|
|
77915
|
-
|
|
77916
|
-
|
|
77917
|
-
|
|
77942
|
+
className: cn(
|
|
77943
|
+
"relative aspect-video overflow-hidden rounded-2xl bg-muted",
|
|
77944
|
+
heroImageClassName
|
|
77945
|
+
),
|
|
77946
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
77947
|
+
img.Img,
|
|
77948
|
+
{
|
|
77949
|
+
src: heroImage?.src || imagePlaceholders[56],
|
|
77950
|
+
alt: heroImage?.alt || "Project hero image",
|
|
77951
|
+
className: "h-full w-full object-cover",
|
|
77952
|
+
optixFlowConfig
|
|
77953
|
+
}
|
|
77954
|
+
)
|
|
77918
77955
|
}
|
|
77919
|
-
) })
|
|
77956
|
+
) }),
|
|
77920
77957
|
description && /* @__PURE__ */ jsxRuntime.jsx(
|
|
77921
77958
|
framerMotion.motion.div,
|
|
77922
77959
|
{
|
|
@@ -77943,7 +77980,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77943
77980
|
selectedTab === "slides" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
77944
77981
|
),
|
|
77945
77982
|
children: [
|
|
77946
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
77983
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
77984
|
+
DynamicIcon,
|
|
77985
|
+
{
|
|
77986
|
+
name: "lucide/images",
|
|
77987
|
+
size: 16,
|
|
77988
|
+
className: "mr-2 inline-block"
|
|
77989
|
+
}
|
|
77990
|
+
),
|
|
77947
77991
|
"Slides (",
|
|
77948
77992
|
carouselImages?.length || 0,
|
|
77949
77993
|
")"
|
|
@@ -77960,7 +78004,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77960
78004
|
selectedTab === "video" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
77961
78005
|
),
|
|
77962
78006
|
children: [
|
|
77963
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
78007
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
78008
|
+
DynamicIcon,
|
|
78009
|
+
{
|
|
78010
|
+
name: "lucide/play-circle",
|
|
78011
|
+
size: 16,
|
|
78012
|
+
className: "mr-2 inline-block"
|
|
78013
|
+
}
|
|
78014
|
+
),
|
|
77964
78015
|
"Video"
|
|
77965
78016
|
]
|
|
77966
78017
|
}
|
|
@@ -77975,7 +78026,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77975
78026
|
selectedTab === "pdf" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
77976
78027
|
),
|
|
77977
78028
|
children: [
|
|
77978
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
78029
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
78030
|
+
DynamicIcon,
|
|
78031
|
+
{
|
|
78032
|
+
name: "lucide/file-text",
|
|
78033
|
+
size: 16,
|
|
78034
|
+
className: "mr-2 inline-block"
|
|
78035
|
+
}
|
|
78036
|
+
),
|
|
77979
78037
|
"PDF Document"
|
|
77980
78038
|
]
|
|
77981
78039
|
}
|
|
@@ -78127,7 +78185,10 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
78127
78185
|
{
|
|
78128
78186
|
...fadeInUp12,
|
|
78129
78187
|
transition: { duration: 0.6, delay: 0.3 },
|
|
78130
|
-
className: cn(
|
|
78188
|
+
className: cn(
|
|
78189
|
+
"mb-16 grid gap-12 md:grid-cols-2",
|
|
78190
|
+
sectionsClassName
|
|
78191
|
+
),
|
|
78131
78192
|
children: sections.map((section, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
78132
78193
|
typeof section.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mb-4 text-2xl font-semibold text-foreground", children: section.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: section.title }),
|
|
78133
78194
|
typeof section.content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg leading-relaxed text-muted-foreground", children: section.content }) : section.content
|
package/dist/registry.js
CHANGED
|
@@ -77746,7 +77746,11 @@ var defaultProps15 = {
|
|
|
77746
77746
|
carouselImages: defaultCarouselImages3,
|
|
77747
77747
|
sections: defaultSections17,
|
|
77748
77748
|
gridImages: defaultGridImages3,
|
|
77749
|
-
backAction: {
|
|
77749
|
+
backAction: {
|
|
77750
|
+
label: "Back to Projects",
|
|
77751
|
+
href: "/projects",
|
|
77752
|
+
icon: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-left", size: 16 })
|
|
77753
|
+
},
|
|
77750
77754
|
videoUrl: "https://cdn.ing/assets/files/record/286359/architecture-presentation.mp4",
|
|
77751
77755
|
videoPoster: imagePlaceholders[49],
|
|
77752
77756
|
pdfUrl: "https://cdn.ing/assets/files/record/286359/5fv7u23rr648t363fy2ibs61sflg",
|
|
@@ -77795,7 +77799,9 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77795
77799
|
enableLightbox = defaultProps15.enableLightbox
|
|
77796
77800
|
} = props;
|
|
77797
77801
|
const [currentSlide, setCurrentSlide] = useState(0);
|
|
77798
|
-
const [selectedTab, setSelectedTab] = useState(
|
|
77802
|
+
const [selectedTab, setSelectedTab] = useState(
|
|
77803
|
+
"slides"
|
|
77804
|
+
);
|
|
77799
77805
|
const [lightboxOpen, setLightboxOpen] = useState(false);
|
|
77800
77806
|
const [lightboxIndex, setLightboxIndex] = useState(0);
|
|
77801
77807
|
const lightboxItems = useMemo(() => {
|
|
@@ -77809,12 +77815,15 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77809
77815
|
share: true
|
|
77810
77816
|
}));
|
|
77811
77817
|
}, [carouselImages]);
|
|
77812
|
-
const handleImageClick = useCallback(
|
|
77813
|
-
|
|
77814
|
-
|
|
77815
|
-
|
|
77816
|
-
|
|
77817
|
-
|
|
77818
|
+
const handleImageClick = useCallback(
|
|
77819
|
+
(index) => {
|
|
77820
|
+
if (enableLightbox) {
|
|
77821
|
+
setLightboxIndex(index);
|
|
77822
|
+
setLightboxOpen(true);
|
|
77823
|
+
}
|
|
77824
|
+
},
|
|
77825
|
+
[enableLightbox]
|
|
77826
|
+
);
|
|
77818
77827
|
const handleLightboxClose = useCallback(() => {
|
|
77819
77828
|
setLightboxOpen(false);
|
|
77820
77829
|
}, []);
|
|
@@ -77833,11 +77842,21 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77833
77842
|
const renderBackAction = () => {
|
|
77834
77843
|
if (backActionSlot) return backActionSlot;
|
|
77835
77844
|
if (!backAction) return null;
|
|
77836
|
-
const {
|
|
77845
|
+
const {
|
|
77846
|
+
label,
|
|
77847
|
+
icon,
|
|
77848
|
+
iconAfter,
|
|
77849
|
+
children,
|
|
77850
|
+
className: actionClassName,
|
|
77851
|
+
...pressableProps
|
|
77852
|
+
} = backAction;
|
|
77837
77853
|
return /* @__PURE__ */ jsx(
|
|
77838
77854
|
Pressable,
|
|
77839
77855
|
{
|
|
77840
|
-
className: cn(
|
|
77856
|
+
className: cn(
|
|
77857
|
+
"inline-flex items-center gap-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground",
|
|
77858
|
+
actionClassName
|
|
77859
|
+
),
|
|
77841
77860
|
...pressableProps,
|
|
77842
77861
|
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
77843
77862
|
icon,
|
|
@@ -77865,18 +77884,36 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77865
77884
|
/* @__PURE__ */ jsx("span", { children: "|" }),
|
|
77866
77885
|
/* @__PURE__ */ jsx("span", { children: location })
|
|
77867
77886
|
] }),
|
|
77868
|
-
typeof title === "string" ? /* @__PURE__ */ jsx(
|
|
77887
|
+
typeof title === "string" ? /* @__PURE__ */ jsx(
|
|
77888
|
+
"h1",
|
|
77889
|
+
{
|
|
77890
|
+
className: cn(
|
|
77891
|
+
"text-4xl font-bold tracking-tight text-foreground md:text-5xl lg:text-6xl",
|
|
77892
|
+
titleClassName
|
|
77893
|
+
),
|
|
77894
|
+
children: title
|
|
77895
|
+
}
|
|
77896
|
+
) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title }),
|
|
77869
77897
|
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-xl text-muted-foreground", children: subtitle }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: subtitle }))
|
|
77870
77898
|
] }),
|
|
77871
|
-
/* @__PURE__ */ jsx(motion.div, { ...fadeInUp12, className: "mb-16", children: /* @__PURE__ */ jsx(
|
|
77872
|
-
|
|
77899
|
+
/* @__PURE__ */ jsx(motion.div, { ...fadeInUp12, className: "mb-16", children: /* @__PURE__ */ jsx(
|
|
77900
|
+
"div",
|
|
77873
77901
|
{
|
|
77874
|
-
|
|
77875
|
-
|
|
77876
|
-
|
|
77877
|
-
|
|
77902
|
+
className: cn(
|
|
77903
|
+
"relative aspect-video overflow-hidden rounded-2xl bg-muted",
|
|
77904
|
+
heroImageClassName
|
|
77905
|
+
),
|
|
77906
|
+
children: /* @__PURE__ */ jsx(
|
|
77907
|
+
Img,
|
|
77908
|
+
{
|
|
77909
|
+
src: heroImage?.src || imagePlaceholders[56],
|
|
77910
|
+
alt: heroImage?.alt || "Project hero image",
|
|
77911
|
+
className: "h-full w-full object-cover",
|
|
77912
|
+
optixFlowConfig
|
|
77913
|
+
}
|
|
77914
|
+
)
|
|
77878
77915
|
}
|
|
77879
|
-
) })
|
|
77916
|
+
) }),
|
|
77880
77917
|
description && /* @__PURE__ */ jsx(
|
|
77881
77918
|
motion.div,
|
|
77882
77919
|
{
|
|
@@ -77903,7 +77940,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77903
77940
|
selectedTab === "slides" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
77904
77941
|
),
|
|
77905
77942
|
children: [
|
|
77906
|
-
/* @__PURE__ */ jsx(
|
|
77943
|
+
/* @__PURE__ */ jsx(
|
|
77944
|
+
DynamicIcon,
|
|
77945
|
+
{
|
|
77946
|
+
name: "lucide/images",
|
|
77947
|
+
size: 16,
|
|
77948
|
+
className: "mr-2 inline-block"
|
|
77949
|
+
}
|
|
77950
|
+
),
|
|
77907
77951
|
"Slides (",
|
|
77908
77952
|
carouselImages?.length || 0,
|
|
77909
77953
|
")"
|
|
@@ -77920,7 +77964,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77920
77964
|
selectedTab === "video" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
77921
77965
|
),
|
|
77922
77966
|
children: [
|
|
77923
|
-
/* @__PURE__ */ jsx(
|
|
77967
|
+
/* @__PURE__ */ jsx(
|
|
77968
|
+
DynamicIcon,
|
|
77969
|
+
{
|
|
77970
|
+
name: "lucide/play-circle",
|
|
77971
|
+
size: 16,
|
|
77972
|
+
className: "mr-2 inline-block"
|
|
77973
|
+
}
|
|
77974
|
+
),
|
|
77924
77975
|
"Video"
|
|
77925
77976
|
]
|
|
77926
77977
|
}
|
|
@@ -77935,7 +77986,14 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
77935
77986
|
selectedTab === "pdf" ? "border-b-2 border-primary text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
77936
77987
|
),
|
|
77937
77988
|
children: [
|
|
77938
|
-
/* @__PURE__ */ jsx(
|
|
77989
|
+
/* @__PURE__ */ jsx(
|
|
77990
|
+
DynamicIcon,
|
|
77991
|
+
{
|
|
77992
|
+
name: "lucide/file-text",
|
|
77993
|
+
size: 16,
|
|
77994
|
+
className: "mr-2 inline-block"
|
|
77995
|
+
}
|
|
77996
|
+
),
|
|
77939
77997
|
"PDF Document"
|
|
77940
77998
|
]
|
|
77941
77999
|
}
|
|
@@ -78087,7 +78145,10 @@ function ProjectDetailArchitectureCarousel(props) {
|
|
|
78087
78145
|
{
|
|
78088
78146
|
...fadeInUp12,
|
|
78089
78147
|
transition: { duration: 0.6, delay: 0.3 },
|
|
78090
|
-
className: cn(
|
|
78148
|
+
className: cn(
|
|
78149
|
+
"mb-16 grid gap-12 md:grid-cols-2",
|
|
78150
|
+
sectionsClassName
|
|
78151
|
+
),
|
|
78091
78152
|
children: sections.map((section, index) => /* @__PURE__ */ jsxs("div", { children: [
|
|
78092
78153
|
typeof section.title === "string" ? /* @__PURE__ */ jsx("h2", { className: "mb-4 text-2xl font-semibold text-foreground", children: section.title }) : /* @__PURE__ */ jsx("div", { className: "mb-4", children: section.title }),
|
|
78093
78154
|
typeof section.content === "string" ? /* @__PURE__ */ jsx("p", { className: "text-lg leading-relaxed text-muted-foreground", children: section.content }) : section.content
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensite/ui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"description": "Foundational UI component library for OpenSite Semantic Site Builder with tree-shakable exports and abstract styling",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -3304,8 +3304,8 @@
|
|
|
3304
3304
|
"@opensite/hooks": "^0.1.1",
|
|
3305
3305
|
"@page-speed/forms": "0.3.4",
|
|
3306
3306
|
"@page-speed/img": "0.4.3",
|
|
3307
|
-
"@page-speed/lightbox": "0.1.
|
|
3308
|
-
"@page-speed/pdf-viewer": "0.1.
|
|
3307
|
+
"@page-speed/lightbox": "0.1.7",
|
|
3308
|
+
"@page-speed/pdf-viewer": "0.1.5",
|
|
3309
3309
|
"@radix-ui/react-accordion": "^1.2.12",
|
|
3310
3310
|
"@radix-ui/react-aspect-ratio": "^1.1.8",
|
|
3311
3311
|
"@radix-ui/react-avatar": "^1.1.11",
|