@opensite/ui 1.7.5 → 1.7.6
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/contact-dark.cjs +503 -124
- package/dist/contact-dark.d.cts +28 -9
- package/dist/contact-dark.d.ts +28 -9
- package/dist/contact-dark.js +505 -126
- package/dist/contact-faq.cjs +482 -104
- package/dist/contact-faq.d.cts +27 -17
- package/dist/contact-faq.d.ts +27 -17
- package/dist/contact-faq.js +484 -106
- package/dist/contact-photography.cjs +485 -116
- package/dist/contact-photography.d.cts +22 -9
- package/dist/contact-photography.d.ts +22 -9
- package/dist/contact-photography.js +487 -118
- package/dist/form-field-types-BYdJNOsW.d.cts +92 -0
- package/dist/form-field-types-BYdJNOsW.d.ts +92 -0
- package/dist/registry.cjs +2397 -2037
- package/dist/registry.js +1141 -781
- package/package.json +6 -1
package/dist/registry.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import
|
|
1
|
+
import * as React50 from 'react';
|
|
2
|
+
import React50__default, { Fragment, createContext, useMemo, forwardRef, useState, useCallback, useRef, useEffect, startTransition, useContext } from 'react';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
@@ -8,12 +8,12 @@ import { cva } from 'class-variance-authority';
|
|
|
8
8
|
import { AnimatePresence, motion, useMotionValue, useMotionTemplate, useSpring, useTransform, useInView, useScroll, useMotionValueEvent } from 'framer-motion';
|
|
9
9
|
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
10
10
|
import { useForm, Form, Field } from '@page-speed/forms';
|
|
11
|
-
import { TextInput as TextInput$1, Select, TextArea as TextArea$1, Radio } from '@page-speed/forms/inputs';
|
|
11
|
+
import { TextInput as TextInput$1, Select, TextArea as TextArea$1, Radio, Checkbox as Checkbox$1, CheckboxGroup, DatePicker, DateRangePicker, TimePicker, FileInput, RichTextEditor } from '@page-speed/forms/inputs';
|
|
12
12
|
import { serializeForRails, deserializeErrors } from '@page-speed/forms/integration';
|
|
13
13
|
import { Slot } from '@radix-ui/react-slot';
|
|
14
14
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
15
15
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
16
|
-
import { useFileUpload } from '@page-speed/forms/upload';
|
|
16
|
+
import { useFileUpload as useFileUpload$1 } from '@page-speed/forms/upload';
|
|
17
17
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
18
18
|
import useEmblaCarousel from 'embla-carousel-react';
|
|
19
19
|
import Autoplay from 'embla-carousel-autoplay';
|
|
@@ -140,7 +140,7 @@ var maxWidthStyles = {
|
|
|
140
140
|
"4xl": "max-w-[1536px]",
|
|
141
141
|
full: "max-w-full"
|
|
142
142
|
};
|
|
143
|
-
var Container =
|
|
143
|
+
var Container = React50__default.forwardRef(
|
|
144
144
|
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
145
145
|
const Component = as;
|
|
146
146
|
return /* @__PURE__ */ jsx(
|
|
@@ -445,7 +445,7 @@ var spacingStyles = {
|
|
|
445
445
|
};
|
|
446
446
|
var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
|
|
447
447
|
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
448
|
-
var Section =
|
|
448
|
+
var Section = React50__default.forwardRef(
|
|
449
449
|
({
|
|
450
450
|
id,
|
|
451
451
|
title,
|
|
@@ -1035,7 +1035,7 @@ function useNavigation({
|
|
|
1035
1035
|
href,
|
|
1036
1036
|
onClick
|
|
1037
1037
|
} = {}) {
|
|
1038
|
-
const linkType =
|
|
1038
|
+
const linkType = React50.useMemo(() => {
|
|
1039
1039
|
if (!href || href.trim() === "") {
|
|
1040
1040
|
return onClick ? "none" : "none";
|
|
1041
1041
|
}
|
|
@@ -1056,7 +1056,7 @@ function useNavigation({
|
|
|
1056
1056
|
return "internal";
|
|
1057
1057
|
}
|
|
1058
1058
|
}, [href, onClick]);
|
|
1059
|
-
const normalizedHref =
|
|
1059
|
+
const normalizedHref = React50.useMemo(() => {
|
|
1060
1060
|
if (!href || href.trim() === "") {
|
|
1061
1061
|
return void 0;
|
|
1062
1062
|
}
|
|
@@ -1074,7 +1074,7 @@ function useNavigation({
|
|
|
1074
1074
|
return trimmed;
|
|
1075
1075
|
}
|
|
1076
1076
|
}, [href, linkType]);
|
|
1077
|
-
const target =
|
|
1077
|
+
const target = React50.useMemo(() => {
|
|
1078
1078
|
switch (linkType) {
|
|
1079
1079
|
case "external":
|
|
1080
1080
|
return "_blank";
|
|
@@ -1087,7 +1087,7 @@ function useNavigation({
|
|
|
1087
1087
|
return void 0;
|
|
1088
1088
|
}
|
|
1089
1089
|
}, [linkType]);
|
|
1090
|
-
const rel =
|
|
1090
|
+
const rel = React50.useMemo(() => {
|
|
1091
1091
|
if (linkType === "external") {
|
|
1092
1092
|
return "noopener noreferrer";
|
|
1093
1093
|
}
|
|
@@ -1096,7 +1096,7 @@ function useNavigation({
|
|
|
1096
1096
|
const isExternal = linkType === "external";
|
|
1097
1097
|
const isInternal = linkType === "internal";
|
|
1098
1098
|
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
1099
|
-
const handleClick =
|
|
1099
|
+
const handleClick = React50.useCallback(
|
|
1100
1100
|
(event) => {
|
|
1101
1101
|
if (onClick) {
|
|
1102
1102
|
try {
|
|
@@ -1280,7 +1280,7 @@ var buttonVariants = cva(baseStyles, {
|
|
|
1280
1280
|
size: "default"
|
|
1281
1281
|
}
|
|
1282
1282
|
});
|
|
1283
|
-
var Pressable =
|
|
1283
|
+
var Pressable = React50.forwardRef(
|
|
1284
1284
|
({
|
|
1285
1285
|
children,
|
|
1286
1286
|
className,
|
|
@@ -1811,10 +1811,10 @@ function DynamicIcon({
|
|
|
1811
1811
|
className,
|
|
1812
1812
|
alt
|
|
1813
1813
|
}) {
|
|
1814
|
-
const [svgContent, setSvgContent] =
|
|
1815
|
-
const [isLoading, setIsLoading] =
|
|
1816
|
-
const [error, setError] =
|
|
1817
|
-
const { url, iconName } =
|
|
1814
|
+
const [svgContent, setSvgContent] = React50.useState(null);
|
|
1815
|
+
const [isLoading, setIsLoading] = React50.useState(true);
|
|
1816
|
+
const [error, setError] = React50.useState(null);
|
|
1817
|
+
const { url, iconName } = React50.useMemo(() => {
|
|
1818
1818
|
const separator = name.includes("/") ? "/" : ":";
|
|
1819
1819
|
const [prefix, iconName2] = name.split(separator);
|
|
1820
1820
|
const baseUrl = `https://icons.opensite.ai/api/icon/${prefix}/${iconName2}?format=svg&width=${size}&height=${size}&key=au382bi7fsh96w9h9xlrnat2jglx`;
|
|
@@ -1823,7 +1823,7 @@ function DynamicIcon({
|
|
|
1823
1823
|
iconName: iconName2
|
|
1824
1824
|
};
|
|
1825
1825
|
}, [name, size]);
|
|
1826
|
-
|
|
1826
|
+
React50.useEffect(() => {
|
|
1827
1827
|
let isMounted = true;
|
|
1828
1828
|
const fetchSvg = async () => {
|
|
1829
1829
|
const cached = svgCache.get(url);
|
|
@@ -3035,7 +3035,7 @@ function AboutInteractiveTabs({
|
|
|
3035
3035
|
pattern,
|
|
3036
3036
|
patternOpacity
|
|
3037
3037
|
}) {
|
|
3038
|
-
const [activeTab, setActiveTab] =
|
|
3038
|
+
const [activeTab, setActiveTab] = React50.useState(tabs?.[0]?.id ?? "");
|
|
3039
3039
|
const activeContent = useMemo(() => {
|
|
3040
3040
|
return tabs?.find((tab) => tab.id === activeTab)?.content;
|
|
3041
3041
|
}, [tabs, activeTab]);
|
|
@@ -6100,6 +6100,197 @@ function CtaImageOverlayArrow({
|
|
|
6100
6100
|
}
|
|
6101
6101
|
var TextInput = TextInput$1;
|
|
6102
6102
|
var TextArea = TextArea$1;
|
|
6103
|
+
function useFileUpload(options) {
|
|
6104
|
+
const [uploadTokens, setUploadTokens] = useState([]);
|
|
6105
|
+
const [uploadProgress, setUploadProgress] = useState({});
|
|
6106
|
+
const [isUploading, setIsUploading] = useState(false);
|
|
6107
|
+
const endpoint = options?.endpoint || "https://api.dashtrack.com/contacts/_/contact_form_uploads";
|
|
6108
|
+
const uploadFiles = useCallback(
|
|
6109
|
+
async (files) => {
|
|
6110
|
+
if (files.length === 0) return;
|
|
6111
|
+
setIsUploading(true);
|
|
6112
|
+
try {
|
|
6113
|
+
const tokens = [];
|
|
6114
|
+
for (const file of files) {
|
|
6115
|
+
const formData = new FormData();
|
|
6116
|
+
formData.append("contact_form_upload[file_upload]", file);
|
|
6117
|
+
formData.append("contact_form_upload[title]", file.name);
|
|
6118
|
+
formData.append("contact_form_upload[file_name]", file.name);
|
|
6119
|
+
formData.append("contact_form_upload[file_size]", String(file.size));
|
|
6120
|
+
const response = await fetch(endpoint, {
|
|
6121
|
+
method: "POST",
|
|
6122
|
+
body: formData
|
|
6123
|
+
});
|
|
6124
|
+
if (!response.ok) {
|
|
6125
|
+
throw new Error(`Upload failed: ${response.statusText}`);
|
|
6126
|
+
}
|
|
6127
|
+
const data = await response.json();
|
|
6128
|
+
if (data.contact_form_upload?.token) {
|
|
6129
|
+
tokens.push(`upload_${data.contact_form_upload.token}`);
|
|
6130
|
+
}
|
|
6131
|
+
setUploadProgress((prev) => ({
|
|
6132
|
+
...prev,
|
|
6133
|
+
[file.name]: 100
|
|
6134
|
+
}));
|
|
6135
|
+
}
|
|
6136
|
+
setUploadTokens(tokens);
|
|
6137
|
+
} catch (error) {
|
|
6138
|
+
console.error("File upload error:", error);
|
|
6139
|
+
options?.onError?.(error);
|
|
6140
|
+
} finally {
|
|
6141
|
+
setIsUploading(false);
|
|
6142
|
+
}
|
|
6143
|
+
},
|
|
6144
|
+
[endpoint, options]
|
|
6145
|
+
);
|
|
6146
|
+
const removeFile = useCallback((file, index) => {
|
|
6147
|
+
setUploadTokens((prev) => prev.filter((_, i) => i !== index));
|
|
6148
|
+
setUploadProgress((prev) => {
|
|
6149
|
+
const newProgress = { ...prev };
|
|
6150
|
+
delete newProgress[file.name];
|
|
6151
|
+
return newProgress;
|
|
6152
|
+
});
|
|
6153
|
+
}, []);
|
|
6154
|
+
const resetUpload = useCallback(() => {
|
|
6155
|
+
setUploadTokens([]);
|
|
6156
|
+
setUploadProgress({});
|
|
6157
|
+
}, []);
|
|
6158
|
+
return {
|
|
6159
|
+
uploadTokens,
|
|
6160
|
+
uploadProgress,
|
|
6161
|
+
isUploading,
|
|
6162
|
+
uploadFiles,
|
|
6163
|
+
removeFile,
|
|
6164
|
+
resetUpload
|
|
6165
|
+
};
|
|
6166
|
+
}
|
|
6167
|
+
|
|
6168
|
+
// lib/form-field-types.ts
|
|
6169
|
+
function generateInitialValues(fields) {
|
|
6170
|
+
return fields.reduce(
|
|
6171
|
+
(acc, field) => {
|
|
6172
|
+
if (field.type === "checkbox") {
|
|
6173
|
+
acc[field.name] = false;
|
|
6174
|
+
} else if (field.type === "checkbox-group" || field.type === "multi-select") {
|
|
6175
|
+
acc[field.name] = [];
|
|
6176
|
+
} else if (field.type === "file") {
|
|
6177
|
+
acc[field.name] = [];
|
|
6178
|
+
} else if (field.type === "date-range") {
|
|
6179
|
+
acc[field.name] = { start: null, end: null };
|
|
6180
|
+
} else {
|
|
6181
|
+
acc[field.name] = "";
|
|
6182
|
+
}
|
|
6183
|
+
return acc;
|
|
6184
|
+
},
|
|
6185
|
+
{}
|
|
6186
|
+
);
|
|
6187
|
+
}
|
|
6188
|
+
function generateValidationSchema(fields) {
|
|
6189
|
+
return fields.reduce(
|
|
6190
|
+
(acc, field) => {
|
|
6191
|
+
acc[field.name] = (value, allValues) => {
|
|
6192
|
+
if (field.required) {
|
|
6193
|
+
if (!value || typeof value === "string" && !value.trim()) {
|
|
6194
|
+
return `${field.label} is required`;
|
|
6195
|
+
}
|
|
6196
|
+
}
|
|
6197
|
+
if (field.type === "email" && value) {
|
|
6198
|
+
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
|
|
6199
|
+
return "Please enter a valid email address";
|
|
6200
|
+
}
|
|
6201
|
+
}
|
|
6202
|
+
if (field.type === "url" && value) {
|
|
6203
|
+
try {
|
|
6204
|
+
new URL(value);
|
|
6205
|
+
} catch {
|
|
6206
|
+
return "Please enter a valid URL";
|
|
6207
|
+
}
|
|
6208
|
+
}
|
|
6209
|
+
if (field.validator) {
|
|
6210
|
+
return field.validator(value, allValues);
|
|
6211
|
+
}
|
|
6212
|
+
return void 0;
|
|
6213
|
+
};
|
|
6214
|
+
return acc;
|
|
6215
|
+
},
|
|
6216
|
+
{}
|
|
6217
|
+
);
|
|
6218
|
+
}
|
|
6219
|
+
function getColumnSpanClass(span) {
|
|
6220
|
+
if (!span || span === 12) return "col-span-12";
|
|
6221
|
+
return `col-span-12 sm:col-span-${Math.min(span, 12)}`;
|
|
6222
|
+
}
|
|
6223
|
+
|
|
6224
|
+
// lib/forms/use-contact-form.ts
|
|
6225
|
+
function useContactForm(options) {
|
|
6226
|
+
const {
|
|
6227
|
+
formFields,
|
|
6228
|
+
formConfig,
|
|
6229
|
+
onSubmit,
|
|
6230
|
+
onSuccess,
|
|
6231
|
+
onError,
|
|
6232
|
+
resetOnSuccess = true,
|
|
6233
|
+
uploadTokens = []
|
|
6234
|
+
} = options;
|
|
6235
|
+
const [isSubmitted, setIsSubmitted] = useState(false);
|
|
6236
|
+
const [submissionError, setSubmissionError] = useState(null);
|
|
6237
|
+
const form = useForm({
|
|
6238
|
+
initialValues: useMemo(
|
|
6239
|
+
() => generateInitialValues(formFields),
|
|
6240
|
+
[formFields]
|
|
6241
|
+
),
|
|
6242
|
+
validationSchema: useMemo(
|
|
6243
|
+
() => generateValidationSchema(formFields),
|
|
6244
|
+
[formFields]
|
|
6245
|
+
),
|
|
6246
|
+
onSubmit: async (values, helpers) => {
|
|
6247
|
+
setSubmissionError(null);
|
|
6248
|
+
const shouldAutoSubmit = Boolean(formConfig?.endpoint);
|
|
6249
|
+
if (!shouldAutoSubmit && !onSubmit) {
|
|
6250
|
+
return;
|
|
6251
|
+
}
|
|
6252
|
+
try {
|
|
6253
|
+
let result;
|
|
6254
|
+
const submissionValues = {
|
|
6255
|
+
...values,
|
|
6256
|
+
...uploadTokens.length > 0 && {
|
|
6257
|
+
contact_form_upload_tokens: uploadTokens
|
|
6258
|
+
}
|
|
6259
|
+
};
|
|
6260
|
+
if (shouldAutoSubmit) {
|
|
6261
|
+
result = await submitPageSpeedForm(submissionValues, formConfig);
|
|
6262
|
+
}
|
|
6263
|
+
if (onSubmit) {
|
|
6264
|
+
await onSubmit(submissionValues);
|
|
6265
|
+
}
|
|
6266
|
+
if (shouldAutoSubmit || onSubmit) {
|
|
6267
|
+
setIsSubmitted(true);
|
|
6268
|
+
if (resetOnSuccess) {
|
|
6269
|
+
helpers.resetForm();
|
|
6270
|
+
}
|
|
6271
|
+
onSuccess?.(result);
|
|
6272
|
+
setTimeout(() => setIsSubmitted(false), 5e3);
|
|
6273
|
+
}
|
|
6274
|
+
} catch (error) {
|
|
6275
|
+
if (error instanceof PageSpeedFormSubmissionError && error.formErrors) {
|
|
6276
|
+
helpers.setErrors(error.formErrors);
|
|
6277
|
+
}
|
|
6278
|
+
const errorMessage = error instanceof Error ? error.message : "Form submission failed";
|
|
6279
|
+
setSubmissionError(errorMessage);
|
|
6280
|
+
onError?.(error);
|
|
6281
|
+
}
|
|
6282
|
+
}
|
|
6283
|
+
});
|
|
6284
|
+
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
6285
|
+
return {
|
|
6286
|
+
form,
|
|
6287
|
+
isSubmitted,
|
|
6288
|
+
submissionError,
|
|
6289
|
+
formMethod
|
|
6290
|
+
};
|
|
6291
|
+
}
|
|
6292
|
+
|
|
6293
|
+
// lib/forms.ts
|
|
6103
6294
|
var PageSpeedFormSubmissionError = class extends Error {
|
|
6104
6295
|
constructor(message, options = {}) {
|
|
6105
6296
|
super(message);
|
|
@@ -7363,7 +7554,7 @@ function CtaVideoBackgroundHero({
|
|
|
7363
7554
|
pattern,
|
|
7364
7555
|
patternOpacity
|
|
7365
7556
|
}) {
|
|
7366
|
-
const [isModalOpen, setIsModalOpen] =
|
|
7557
|
+
const [isModalOpen, setIsModalOpen] = React50.useState(false);
|
|
7367
7558
|
const handleOpenModal = () => {
|
|
7368
7559
|
setIsModalOpen(true);
|
|
7369
7560
|
onModalOpen?.();
|
|
@@ -7551,7 +7742,7 @@ function CtaWorkflowTabs({
|
|
|
7551
7742
|
patternOpacity,
|
|
7552
7743
|
optixFlowConfig
|
|
7553
7744
|
}) {
|
|
7554
|
-
const [activeTab, setActiveTab] =
|
|
7745
|
+
const [activeTab, setActiveTab] = React50.useState(tabs?.[0]?.id || "");
|
|
7555
7746
|
const activeTabData = tabs?.find((tab) => tab.id === activeTab) || tabs?.[0];
|
|
7556
7747
|
const actionsContent = useMemo(() => {
|
|
7557
7748
|
if (actionsSlot) return actionsSlot;
|
|
@@ -8160,7 +8351,7 @@ function ContactFloatingBanner({
|
|
|
8160
8351
|
badgeClassName,
|
|
8161
8352
|
background = "default"
|
|
8162
8353
|
}) {
|
|
8163
|
-
const actionsContent =
|
|
8354
|
+
const actionsContent = React50.useMemo(() => {
|
|
8164
8355
|
if (actionsSlot) return actionsSlot;
|
|
8165
8356
|
if (actions && actions.length > 0) {
|
|
8166
8357
|
return actions.map((action, index) => {
|
|
@@ -8335,7 +8526,7 @@ function ContactCallback({
|
|
|
8335
8526
|
}
|
|
8336
8527
|
});
|
|
8337
8528
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
8338
|
-
const actionsContent =
|
|
8529
|
+
const actionsContent = React50.useMemo(() => {
|
|
8339
8530
|
if (actionsSlot) return actionsSlot;
|
|
8340
8531
|
if (actions && actions.length > 0) {
|
|
8341
8532
|
return actions.map((action, index) => {
|
|
@@ -8358,7 +8549,7 @@ function ContactCallback({
|
|
|
8358
8549
|
}
|
|
8359
8550
|
return null;
|
|
8360
8551
|
}, [actionsSlot, actions]);
|
|
8361
|
-
const footerContent =
|
|
8552
|
+
const footerContent = React50.useMemo(() => {
|
|
8362
8553
|
if (footerSlot) return footerSlot;
|
|
8363
8554
|
if (footer) {
|
|
8364
8555
|
return typeof footer === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 text-center text-sm text-muted-foreground", footerClassName), children: footer }) : /* @__PURE__ */ jsx("div", { className: cn("mt-6 text-center text-sm text-muted-foreground", footerClassName), children: footer });
|
|
@@ -8679,7 +8870,7 @@ function ContactCard({
|
|
|
8679
8870
|
}
|
|
8680
8871
|
});
|
|
8681
8872
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
8682
|
-
const actionsContent =
|
|
8873
|
+
const actionsContent = React50.useMemo(() => {
|
|
8683
8874
|
if (actionsSlot) return actionsSlot;
|
|
8684
8875
|
if (actions && actions.length > 0) {
|
|
8685
8876
|
return actions.map((action, index) => {
|
|
@@ -8702,7 +8893,7 @@ function ContactCard({
|
|
|
8702
8893
|
}
|
|
8703
8894
|
return null;
|
|
8704
8895
|
}, [actionsSlot, actions]);
|
|
8705
|
-
const contactOptionsContent =
|
|
8896
|
+
const contactOptionsContent = React50.useMemo(() => {
|
|
8706
8897
|
if (contactOptionsSlot) return contactOptionsSlot;
|
|
8707
8898
|
if (contactOptions && contactOptions.length > 0) {
|
|
8708
8899
|
return contactOptions.map((option, key) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
@@ -8960,7 +9151,7 @@ function ContactCareers({
|
|
|
8960
9151
|
}
|
|
8961
9152
|
}
|
|
8962
9153
|
});
|
|
8963
|
-
const { upload, state: uploadState } = useFileUpload({
|
|
9154
|
+
const { upload, state: uploadState } = useFileUpload$1({
|
|
8964
9155
|
endpoint: formConfig?.endpoint ? `${new URL(formConfig.endpoint, typeof window !== "undefined" ? window.location.origin : "http://localhost").origin}/contacts/_/contact_form_uploads` : "https://api.toastability.com/contacts/_/contact_form_uploads",
|
|
8965
9156
|
format: "legacy",
|
|
8966
9157
|
onComplete: (token) => {
|
|
@@ -8989,7 +9180,7 @@ function ContactCareers({
|
|
|
8989
9180
|
form.setFieldValue("contact_form_upload_tokens", []);
|
|
8990
9181
|
};
|
|
8991
9182
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
8992
|
-
const actionsContent =
|
|
9183
|
+
const actionsContent = React50.useMemo(() => {
|
|
8993
9184
|
if (actionsSlot) return actionsSlot;
|
|
8994
9185
|
if (actions && actions.length > 0) {
|
|
8995
9186
|
return actions.map((action, index) => {
|
|
@@ -9428,7 +9619,7 @@ function ContactCatering({
|
|
|
9428
9619
|
const updated = current.includes(value) ? current.filter((v) => v !== value) : [...current, value];
|
|
9429
9620
|
form.setFieldValue("dietaryAccommodations", updated);
|
|
9430
9621
|
};
|
|
9431
|
-
const actionsContent =
|
|
9622
|
+
const actionsContent = React50.useMemo(() => {
|
|
9432
9623
|
if (actionsSlot) return actionsSlot;
|
|
9433
9624
|
if (actions && actions.length > 0) {
|
|
9434
9625
|
return actions.map((action, index) => {
|
|
@@ -9848,7 +10039,7 @@ function ContactConsultation({
|
|
|
9848
10039
|
}
|
|
9849
10040
|
});
|
|
9850
10041
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
9851
|
-
const actionsContent =
|
|
10042
|
+
const actionsContent = React50.useMemo(() => {
|
|
9852
10043
|
if (actionsSlot) return actionsSlot;
|
|
9853
10044
|
if (actions && actions.length > 0) {
|
|
9854
10045
|
return actions.map((action, index) => {
|
|
@@ -10066,12 +10257,241 @@ function ContactConsultation({
|
|
|
10066
10257
|
}
|
|
10067
10258
|
);
|
|
10068
10259
|
}
|
|
10260
|
+
function DynamicFormField({
|
|
10261
|
+
field,
|
|
10262
|
+
className,
|
|
10263
|
+
uploadProgress = {},
|
|
10264
|
+
onFileUpload,
|
|
10265
|
+
onFileRemove,
|
|
10266
|
+
isUploading = false
|
|
10267
|
+
}) {
|
|
10268
|
+
const fieldId = `field-${field.name}`;
|
|
10269
|
+
return /* @__PURE__ */ jsx(Field, { name: field.name, children: ({ field: formField, meta }) => /* @__PURE__ */ jsxs("div", { className: cn("space-y-2", className), children: [
|
|
10270
|
+
field.type !== "checkbox" && /* @__PURE__ */ jsxs(Label, { htmlFor: fieldId, children: [
|
|
10271
|
+
field.label,
|
|
10272
|
+
field.required && /* @__PURE__ */ jsx("span", { className: "text-destructive ml-1", children: "*" })
|
|
10273
|
+
] }),
|
|
10274
|
+
(field.type === "text" || field.type === "email" || field.type === "tel" || field.type === "search" || field.type === "password" || field.type === "url") && /* @__PURE__ */ jsx(
|
|
10275
|
+
TextInput$1,
|
|
10276
|
+
{
|
|
10277
|
+
...formField,
|
|
10278
|
+
id: fieldId,
|
|
10279
|
+
type: field.type,
|
|
10280
|
+
placeholder: field.placeholder,
|
|
10281
|
+
error: meta.touched && !!meta.error,
|
|
10282
|
+
disabled: field.disabled,
|
|
10283
|
+
"aria-label": field.label
|
|
10284
|
+
}
|
|
10285
|
+
),
|
|
10286
|
+
field.type === "number" && /* @__PURE__ */ jsx(
|
|
10287
|
+
TextInput$1,
|
|
10288
|
+
{
|
|
10289
|
+
...formField,
|
|
10290
|
+
id: fieldId,
|
|
10291
|
+
type: "text",
|
|
10292
|
+
placeholder: field.placeholder,
|
|
10293
|
+
error: meta.touched && !!meta.error,
|
|
10294
|
+
disabled: field.disabled,
|
|
10295
|
+
"aria-label": field.label
|
|
10296
|
+
}
|
|
10297
|
+
),
|
|
10298
|
+
field.type === "textarea" && /* @__PURE__ */ jsx(
|
|
10299
|
+
TextArea$1,
|
|
10300
|
+
{
|
|
10301
|
+
...formField,
|
|
10302
|
+
id: fieldId,
|
|
10303
|
+
placeholder: field.placeholder,
|
|
10304
|
+
rows: field.rows || 4,
|
|
10305
|
+
error: meta.touched && !!meta.error,
|
|
10306
|
+
disabled: field.disabled,
|
|
10307
|
+
"aria-label": field.label
|
|
10308
|
+
}
|
|
10309
|
+
),
|
|
10310
|
+
field.type === "select" && field.options && /* @__PURE__ */ jsx(
|
|
10311
|
+
Select,
|
|
10312
|
+
{
|
|
10313
|
+
...formField,
|
|
10314
|
+
id: fieldId,
|
|
10315
|
+
options: field.options,
|
|
10316
|
+
placeholder: field.placeholder || `Select ${field.label.toLowerCase()}`,
|
|
10317
|
+
error: meta.touched && !!meta.error,
|
|
10318
|
+
disabled: field.disabled,
|
|
10319
|
+
"aria-label": field.label
|
|
10320
|
+
}
|
|
10321
|
+
),
|
|
10322
|
+
field.type === "multi-select" && field.options && /* @__PURE__ */ jsx(
|
|
10323
|
+
Select,
|
|
10324
|
+
{
|
|
10325
|
+
...formField,
|
|
10326
|
+
id: fieldId,
|
|
10327
|
+
options: field.options,
|
|
10328
|
+
placeholder: field.placeholder || `Select ${field.label.toLowerCase()}`,
|
|
10329
|
+
error: meta.touched && !!meta.error,
|
|
10330
|
+
disabled: field.disabled,
|
|
10331
|
+
"aria-label": field.label,
|
|
10332
|
+
multiple: true
|
|
10333
|
+
}
|
|
10334
|
+
),
|
|
10335
|
+
field.type === "radio" && field.options && /* @__PURE__ */ jsx(
|
|
10336
|
+
Radio,
|
|
10337
|
+
{
|
|
10338
|
+
...formField,
|
|
10339
|
+
id: fieldId,
|
|
10340
|
+
options: field.options,
|
|
10341
|
+
disabled: field.disabled,
|
|
10342
|
+
layout: field.layout || "stacked",
|
|
10343
|
+
error: meta.touched && !!meta.error,
|
|
10344
|
+
"aria-label": field.label
|
|
10345
|
+
}
|
|
10346
|
+
),
|
|
10347
|
+
field.type === "checkbox" && /* @__PURE__ */ jsxs("div", { className: "flex items-start space-x-2", children: [
|
|
10348
|
+
/* @__PURE__ */ jsx(
|
|
10349
|
+
Checkbox$1,
|
|
10350
|
+
{
|
|
10351
|
+
...formField,
|
|
10352
|
+
id: fieldId,
|
|
10353
|
+
value: formField.value === true || formField.value === "true",
|
|
10354
|
+
onChange: (checked) => formField.onChange(checked),
|
|
10355
|
+
disabled: field.disabled,
|
|
10356
|
+
error: meta.touched && !!meta.error,
|
|
10357
|
+
"aria-label": field.label
|
|
10358
|
+
}
|
|
10359
|
+
),
|
|
10360
|
+
/* @__PURE__ */ jsxs(
|
|
10361
|
+
Label,
|
|
10362
|
+
{
|
|
10363
|
+
htmlFor: fieldId,
|
|
10364
|
+
className: "font-normal cursor-pointer leading-relaxed",
|
|
10365
|
+
children: [
|
|
10366
|
+
field.label,
|
|
10367
|
+
field.required && /* @__PURE__ */ jsx("span", { className: "text-destructive ml-1", children: "*" })
|
|
10368
|
+
]
|
|
10369
|
+
}
|
|
10370
|
+
)
|
|
10371
|
+
] }),
|
|
10372
|
+
field.type === "checkbox-group" && field.options && /* @__PURE__ */ jsx(
|
|
10373
|
+
CheckboxGroup,
|
|
10374
|
+
{
|
|
10375
|
+
...formField,
|
|
10376
|
+
id: fieldId,
|
|
10377
|
+
options: field.options,
|
|
10378
|
+
disabled: field.disabled,
|
|
10379
|
+
layout: field.layout || "stacked",
|
|
10380
|
+
error: meta.touched && !!meta.error,
|
|
10381
|
+
"aria-label": field.label
|
|
10382
|
+
}
|
|
10383
|
+
),
|
|
10384
|
+
(field.type === "date-picker" || field.type === "date") && /* @__PURE__ */ jsx(
|
|
10385
|
+
DatePicker,
|
|
10386
|
+
{
|
|
10387
|
+
...formField,
|
|
10388
|
+
id: fieldId,
|
|
10389
|
+
placeholder: field.placeholder,
|
|
10390
|
+
error: meta.touched && !!meta.error,
|
|
10391
|
+
disabled: field.disabled,
|
|
10392
|
+
"aria-label": field.label
|
|
10393
|
+
}
|
|
10394
|
+
),
|
|
10395
|
+
field.type === "date-range" && /* @__PURE__ */ jsx(
|
|
10396
|
+
DateRangePicker,
|
|
10397
|
+
{
|
|
10398
|
+
...formField,
|
|
10399
|
+
id: fieldId,
|
|
10400
|
+
error: meta.touched && !!meta.error,
|
|
10401
|
+
disabled: field.disabled,
|
|
10402
|
+
"aria-label": field.label
|
|
10403
|
+
}
|
|
10404
|
+
),
|
|
10405
|
+
field.type === "time" && /* @__PURE__ */ jsx(
|
|
10406
|
+
TimePicker,
|
|
10407
|
+
{
|
|
10408
|
+
...formField,
|
|
10409
|
+
id: fieldId,
|
|
10410
|
+
placeholder: field.placeholder,
|
|
10411
|
+
error: meta.touched && !!meta.error,
|
|
10412
|
+
disabled: field.disabled,
|
|
10413
|
+
"aria-label": field.label
|
|
10414
|
+
}
|
|
10415
|
+
),
|
|
10416
|
+
field.type === "file" && /* @__PURE__ */ jsx(
|
|
10417
|
+
FileInput,
|
|
10418
|
+
{
|
|
10419
|
+
...formField,
|
|
10420
|
+
id: fieldId,
|
|
10421
|
+
accept: field.accept,
|
|
10422
|
+
maxSize: field.maxSize || 5 * 1024 * 1024,
|
|
10423
|
+
maxFiles: field.maxFiles || 1,
|
|
10424
|
+
multiple: field.multiple || false,
|
|
10425
|
+
placeholder: field.placeholder || "Choose file(s)...",
|
|
10426
|
+
error: meta.touched && !!meta.error,
|
|
10427
|
+
disabled: field.disabled || isUploading,
|
|
10428
|
+
showProgress: true,
|
|
10429
|
+
uploadProgress,
|
|
10430
|
+
onChange: (files) => {
|
|
10431
|
+
formField.onChange(files);
|
|
10432
|
+
if (files.length > 0 && onFileUpload) {
|
|
10433
|
+
onFileUpload(files);
|
|
10434
|
+
}
|
|
10435
|
+
},
|
|
10436
|
+
onFileRemove,
|
|
10437
|
+
"aria-label": field.label
|
|
10438
|
+
}
|
|
10439
|
+
),
|
|
10440
|
+
field.type === "rich-text" && /* @__PURE__ */ jsx(
|
|
10441
|
+
RichTextEditor,
|
|
10442
|
+
{
|
|
10443
|
+
...formField,
|
|
10444
|
+
id: fieldId,
|
|
10445
|
+
placeholder: field.placeholder,
|
|
10446
|
+
error: meta.touched && !!meta.error,
|
|
10447
|
+
disabled: field.disabled,
|
|
10448
|
+
"aria-label": field.label
|
|
10449
|
+
}
|
|
10450
|
+
),
|
|
10451
|
+
meta.touched && meta.error && /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive", children: meta.error })
|
|
10452
|
+
] }) });
|
|
10453
|
+
}
|
|
10454
|
+
var DEFAULT_FORM_FIELDS = [
|
|
10455
|
+
{
|
|
10456
|
+
name: "firstName",
|
|
10457
|
+
type: "text",
|
|
10458
|
+
label: "First Name",
|
|
10459
|
+
placeholder: "First name",
|
|
10460
|
+
required: true,
|
|
10461
|
+
columnSpan: 6
|
|
10462
|
+
},
|
|
10463
|
+
{
|
|
10464
|
+
name: "lastName",
|
|
10465
|
+
type: "text",
|
|
10466
|
+
label: "Last Name",
|
|
10467
|
+
placeholder: "Last name",
|
|
10468
|
+
required: true,
|
|
10469
|
+
columnSpan: 6
|
|
10470
|
+
},
|
|
10471
|
+
{
|
|
10472
|
+
name: "email",
|
|
10473
|
+
type: "email",
|
|
10474
|
+
label: "Email Address",
|
|
10475
|
+
placeholder: "your@email.com",
|
|
10476
|
+
required: true,
|
|
10477
|
+
columnSpan: 12
|
|
10478
|
+
},
|
|
10479
|
+
{
|
|
10480
|
+
name: "message",
|
|
10481
|
+
type: "textarea",
|
|
10482
|
+
label: "Message",
|
|
10483
|
+
placeholder: "Your message...",
|
|
10484
|
+
required: true,
|
|
10485
|
+
rows: 4,
|
|
10486
|
+
columnSpan: 12
|
|
10487
|
+
}
|
|
10488
|
+
];
|
|
10069
10489
|
function ContactDark({
|
|
10070
10490
|
heading,
|
|
10071
10491
|
description,
|
|
10072
10492
|
contactHeading = "Contact Information",
|
|
10073
10493
|
contactDescription = "Fill up the form and our team will get back to you within 24 hours.",
|
|
10074
|
-
buttonText,
|
|
10494
|
+
buttonText = "Submit",
|
|
10075
10495
|
buttonIcon,
|
|
10076
10496
|
actions,
|
|
10077
10497
|
actionsSlot,
|
|
@@ -10079,6 +10499,9 @@ function ContactDark({
|
|
|
10079
10499
|
contactOptionsSlot,
|
|
10080
10500
|
socialLinks,
|
|
10081
10501
|
socialLinksSlot,
|
|
10502
|
+
formFields = DEFAULT_FORM_FIELDS,
|
|
10503
|
+
successMessage = "Thank you! Your message has been sent successfully.",
|
|
10504
|
+
errorMessage = "There was an error sending your message. Please try again.",
|
|
10082
10505
|
className,
|
|
10083
10506
|
headerClassName,
|
|
10084
10507
|
headingClassName,
|
|
@@ -10090,6 +10513,8 @@ function ContactDark({
|
|
|
10090
10513
|
infoPanelClassName,
|
|
10091
10514
|
contactOptionsClassName,
|
|
10092
10515
|
socialLinksClassName,
|
|
10516
|
+
successMessageClassName,
|
|
10517
|
+
errorMessageClassName,
|
|
10093
10518
|
background,
|
|
10094
10519
|
spacing = "py-8 md:py-32",
|
|
10095
10520
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
@@ -10100,54 +10525,27 @@ function ContactDark({
|
|
|
10100
10525
|
onSuccess,
|
|
10101
10526
|
onError
|
|
10102
10527
|
}) {
|
|
10103
|
-
const
|
|
10104
|
-
|
|
10105
|
-
|
|
10106
|
-
|
|
10107
|
-
|
|
10108
|
-
|
|
10109
|
-
|
|
10110
|
-
|
|
10111
|
-
|
|
10112
|
-
|
|
10113
|
-
|
|
10114
|
-
|
|
10115
|
-
|
|
10116
|
-
|
|
10117
|
-
|
|
10118
|
-
},
|
|
10119
|
-
message: (value) => !value ? "Message is required" : void 0
|
|
10528
|
+
const {
|
|
10529
|
+
uploadTokens,
|
|
10530
|
+
uploadProgress,
|
|
10531
|
+
isUploading,
|
|
10532
|
+
uploadFiles,
|
|
10533
|
+
removeFile,
|
|
10534
|
+
resetUpload
|
|
10535
|
+
} = useFileUpload({ onError });
|
|
10536
|
+
const { form, isSubmitted, submissionError, formMethod } = useContactForm({
|
|
10537
|
+
formFields,
|
|
10538
|
+
formConfig,
|
|
10539
|
+
onSubmit,
|
|
10540
|
+
onSuccess: (data) => {
|
|
10541
|
+
resetUpload();
|
|
10542
|
+
onSuccess?.(data);
|
|
10120
10543
|
},
|
|
10121
|
-
|
|
10122
|
-
|
|
10123
|
-
|
|
10124
|
-
return;
|
|
10125
|
-
}
|
|
10126
|
-
try {
|
|
10127
|
-
let result;
|
|
10128
|
-
if (shouldAutoSubmit) {
|
|
10129
|
-
result = await submitPageSpeedForm(values, formConfig);
|
|
10130
|
-
}
|
|
10131
|
-
if (onSubmit) {
|
|
10132
|
-
await onSubmit(values);
|
|
10133
|
-
}
|
|
10134
|
-
if (shouldAutoSubmit || onSubmit) {
|
|
10135
|
-
if (formConfig?.resetOnSuccess !== false) {
|
|
10136
|
-
helpers.resetForm();
|
|
10137
|
-
}
|
|
10138
|
-
onSuccess?.(result);
|
|
10139
|
-
}
|
|
10140
|
-
} catch (error) {
|
|
10141
|
-
if (error instanceof PageSpeedFormSubmissionError && error.formErrors) {
|
|
10142
|
-
helpers.setErrors(error.formErrors);
|
|
10143
|
-
}
|
|
10144
|
-
onError?.(error);
|
|
10145
|
-
throw error;
|
|
10146
|
-
}
|
|
10147
|
-
}
|
|
10544
|
+
onError,
|
|
10545
|
+
resetOnSuccess: formConfig?.resetOnSuccess !== false,
|
|
10546
|
+
uploadTokens
|
|
10148
10547
|
});
|
|
10149
|
-
const
|
|
10150
|
-
const actionsContent = React51.useMemo(() => {
|
|
10548
|
+
const actionsContent = React50.useMemo(() => {
|
|
10151
10549
|
if (actionsSlot) return actionsSlot;
|
|
10152
10550
|
if (actions && actions.length > 0) {
|
|
10153
10551
|
return actions.map((action, index) => {
|
|
@@ -10177,7 +10575,7 @@ function ContactDark({
|
|
|
10177
10575
|
}
|
|
10178
10576
|
return null;
|
|
10179
10577
|
}, [actionsSlot, actions]);
|
|
10180
|
-
const contactOptionsContent =
|
|
10578
|
+
const contactOptionsContent = React50.useMemo(() => {
|
|
10181
10579
|
if (contactOptionsSlot) return contactOptionsSlot;
|
|
10182
10580
|
if (contactOptions && contactOptions.length > 0) {
|
|
10183
10581
|
return contactOptions.map((option, key) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -10201,7 +10599,7 @@ function ContactDark({
|
|
|
10201
10599
|
}
|
|
10202
10600
|
return null;
|
|
10203
10601
|
}, [contactOptionsSlot, contactOptions]);
|
|
10204
|
-
const socialLinksContent =
|
|
10602
|
+
const socialLinksContent = React50.useMemo(() => {
|
|
10205
10603
|
if (socialLinksSlot) return socialLinksSlot;
|
|
10206
10604
|
if (socialLinks && socialLinks.length > 0) {
|
|
10207
10605
|
return socialLinks.map((social, key) => /* @__PURE__ */ jsx(
|
|
@@ -10257,87 +10655,70 @@ function ContactDark({
|
|
|
10257
10655
|
cardClassName
|
|
10258
10656
|
),
|
|
10259
10657
|
children: [
|
|
10260
|
-
/* @__PURE__ */
|
|
10261
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10264
|
-
|
|
10265
|
-
|
|
10266
|
-
|
|
10267
|
-
|
|
10268
|
-
/* @__PURE__ */
|
|
10269
|
-
|
|
10270
|
-
|
|
10271
|
-
|
|
10272
|
-
|
|
10273
|
-
|
|
10274
|
-
|
|
10275
|
-
|
|
10276
|
-
|
|
10277
|
-
|
|
10278
|
-
|
|
10279
|
-
|
|
10280
|
-
|
|
10281
|
-
|
|
10282
|
-
|
|
10283
|
-
|
|
10284
|
-
|
|
10285
|
-
|
|
10286
|
-
|
|
10287
|
-
|
|
10288
|
-
|
|
10289
|
-
|
|
10290
|
-
|
|
10291
|
-
"aria-label": "Last Name"
|
|
10292
|
-
}
|
|
10293
|
-
)
|
|
10294
|
-
] }) })
|
|
10295
|
-
] }),
|
|
10296
|
-
/* @__PURE__ */ jsx(Field, { name: "email", children: ({ field, meta }) => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
10297
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email Address" }),
|
|
10298
|
-
/* @__PURE__ */ jsx(
|
|
10299
|
-
TextInput$1,
|
|
10658
|
+
/* @__PURE__ */ jsxs("div", { className: cn("p-6 lg:p-12", formPanelClassName), children: [
|
|
10659
|
+
isSubmitted && /* @__PURE__ */ jsx(
|
|
10660
|
+
"div",
|
|
10661
|
+
{
|
|
10662
|
+
className: cn(
|
|
10663
|
+
"mb-6 p-4 bg-primary/10 border border-primary rounded-md",
|
|
10664
|
+
successMessageClassName
|
|
10665
|
+
),
|
|
10666
|
+
children: typeof successMessage === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm text-primary-foreground/90 text-center", children: successMessage }) : successMessage
|
|
10667
|
+
}
|
|
10668
|
+
),
|
|
10669
|
+
submissionError && /* @__PURE__ */ jsx(
|
|
10670
|
+
"div",
|
|
10671
|
+
{
|
|
10672
|
+
className: cn(
|
|
10673
|
+
"mb-6 p-4 bg-destructive/10 border border-destructive rounded-md",
|
|
10674
|
+
errorMessageClassName
|
|
10675
|
+
),
|
|
10676
|
+
children: /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive text-center", children: submissionError })
|
|
10677
|
+
}
|
|
10678
|
+
),
|
|
10679
|
+
/* @__PURE__ */ jsxs(
|
|
10680
|
+
Form,
|
|
10681
|
+
{
|
|
10682
|
+
form,
|
|
10683
|
+
action: formConfig?.endpoint,
|
|
10684
|
+
method: formMethod,
|
|
10685
|
+
className: cn("space-y-6", formClassName),
|
|
10686
|
+
children: [
|
|
10687
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-12 gap-4", children: formFields.map((field) => /* @__PURE__ */ jsx(
|
|
10688
|
+
"div",
|
|
10300
10689
|
{
|
|
10301
|
-
|
|
10302
|
-
|
|
10303
|
-
|
|
10304
|
-
|
|
10305
|
-
|
|
10306
|
-
|
|
10307
|
-
|
|
10308
|
-
|
|
10309
|
-
|
|
10310
|
-
|
|
10311
|
-
|
|
10312
|
-
|
|
10313
|
-
|
|
10690
|
+
className: getColumnSpanClass(field.columnSpan),
|
|
10691
|
+
children: /* @__PURE__ */ jsx(
|
|
10692
|
+
DynamicFormField,
|
|
10693
|
+
{
|
|
10694
|
+
field,
|
|
10695
|
+
uploadProgress,
|
|
10696
|
+
onFileUpload: uploadFiles,
|
|
10697
|
+
onFileRemove: removeFile,
|
|
10698
|
+
isUploading
|
|
10699
|
+
}
|
|
10700
|
+
)
|
|
10701
|
+
},
|
|
10702
|
+
field.name
|
|
10703
|
+
)) }),
|
|
10704
|
+
actionsSlot || actions && actions.length > 0 ? actionsContent : /* @__PURE__ */ jsxs(
|
|
10705
|
+
Pressable,
|
|
10314
10706
|
{
|
|
10315
|
-
|
|
10316
|
-
|
|
10317
|
-
|
|
10318
|
-
|
|
10319
|
-
|
|
10320
|
-
|
|
10707
|
+
componentType: "button",
|
|
10708
|
+
type: "submit",
|
|
10709
|
+
className: cn("w-full", submitClassName),
|
|
10710
|
+
asButton: true,
|
|
10711
|
+
disabled: form.isSubmitting,
|
|
10712
|
+
children: [
|
|
10713
|
+
buttonIcon,
|
|
10714
|
+
buttonText
|
|
10715
|
+
]
|
|
10321
10716
|
}
|
|
10322
10717
|
)
|
|
10323
|
-
]
|
|
10324
|
-
|
|
10325
|
-
|
|
10326
|
-
|
|
10327
|
-
componentType: "button",
|
|
10328
|
-
type: "submit",
|
|
10329
|
-
className: cn("w-full", submitClassName),
|
|
10330
|
-
asButton: true,
|
|
10331
|
-
disabled: form.isSubmitting,
|
|
10332
|
-
children: [
|
|
10333
|
-
buttonIcon,
|
|
10334
|
-
buttonText
|
|
10335
|
-
]
|
|
10336
|
-
}
|
|
10337
|
-
)
|
|
10338
|
-
]
|
|
10339
|
-
}
|
|
10340
|
-
) }),
|
|
10718
|
+
]
|
|
10719
|
+
}
|
|
10720
|
+
)
|
|
10721
|
+
] }),
|
|
10341
10722
|
/* @__PURE__ */ jsxs(
|
|
10342
10723
|
"div",
|
|
10343
10724
|
{
|
|
@@ -10469,7 +10850,7 @@ function ContactDemo({
|
|
|
10469
10850
|
}
|
|
10470
10851
|
});
|
|
10471
10852
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
10472
|
-
const actionsContent =
|
|
10853
|
+
const actionsContent = React50.useMemo(() => {
|
|
10473
10854
|
if (actionsSlot) return actionsSlot;
|
|
10474
10855
|
if (actions && actions.length > 0) {
|
|
10475
10856
|
return actions.map((action, index) => {
|
|
@@ -10776,7 +11157,7 @@ function ContactEmergency({
|
|
|
10776
11157
|
const selectedPriority = PRIORITIES.find(
|
|
10777
11158
|
(p) => p.value === form.values.priority
|
|
10778
11159
|
);
|
|
10779
|
-
const actionsContent =
|
|
11160
|
+
const actionsContent = React50.useMemo(() => {
|
|
10780
11161
|
if (actionsSlot) return actionsSlot;
|
|
10781
11162
|
if (actions && actions.length > 0) {
|
|
10782
11163
|
return actions.map((action, index) => {
|
|
@@ -11079,7 +11460,7 @@ function ContactEvent({
|
|
|
11079
11460
|
}
|
|
11080
11461
|
});
|
|
11081
11462
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
11082
|
-
const actionsContent =
|
|
11463
|
+
const actionsContent = React50.useMemo(() => {
|
|
11083
11464
|
if (actionsSlot) return actionsSlot;
|
|
11084
11465
|
if (actions && actions.length > 0) {
|
|
11085
11466
|
return actions.map((action, index) => {
|
|
@@ -11275,18 +11656,57 @@ function AccordionContent({
|
|
|
11275
11656
|
}
|
|
11276
11657
|
);
|
|
11277
11658
|
}
|
|
11659
|
+
var DEFAULT_FORM_FIELDS2 = [
|
|
11660
|
+
{
|
|
11661
|
+
name: "name",
|
|
11662
|
+
type: "text",
|
|
11663
|
+
label: "Name",
|
|
11664
|
+
placeholder: "Full Name",
|
|
11665
|
+
required: true,
|
|
11666
|
+
columnSpan: 6
|
|
11667
|
+
},
|
|
11668
|
+
{
|
|
11669
|
+
name: "email",
|
|
11670
|
+
type: "email",
|
|
11671
|
+
label: "Email",
|
|
11672
|
+
placeholder: "your@email.com",
|
|
11673
|
+
required: true,
|
|
11674
|
+
columnSpan: 6
|
|
11675
|
+
},
|
|
11676
|
+
{
|
|
11677
|
+
name: "subject",
|
|
11678
|
+
type: "text",
|
|
11679
|
+
label: "Subject",
|
|
11680
|
+
placeholder: "What is this regarding?",
|
|
11681
|
+
required: true,
|
|
11682
|
+
columnSpan: 12
|
|
11683
|
+
},
|
|
11684
|
+
{
|
|
11685
|
+
name: "message",
|
|
11686
|
+
type: "textarea",
|
|
11687
|
+
label: "Message",
|
|
11688
|
+
placeholder: "Your message...",
|
|
11689
|
+
required: true,
|
|
11690
|
+
rows: 4,
|
|
11691
|
+
columnSpan: 12
|
|
11692
|
+
}
|
|
11693
|
+
];
|
|
11278
11694
|
function ContactFaq({
|
|
11279
11695
|
heading,
|
|
11280
11696
|
description,
|
|
11281
11697
|
formHeading,
|
|
11282
|
-
buttonText,
|
|
11698
|
+
buttonText = "Submit",
|
|
11283
11699
|
buttonIcon,
|
|
11284
11700
|
actions,
|
|
11285
11701
|
actionsSlot,
|
|
11286
11702
|
items,
|
|
11287
11703
|
itemsSlot,
|
|
11288
11704
|
faqHeading,
|
|
11705
|
+
formFields = DEFAULT_FORM_FIELDS2,
|
|
11706
|
+
successMessage = "Thank you! Your message has been sent successfully.",
|
|
11707
|
+
errorMessage = "There was an error sending your message. Please try again.",
|
|
11289
11708
|
className,
|
|
11709
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
11290
11710
|
headerClassName,
|
|
11291
11711
|
headingClassName,
|
|
11292
11712
|
descriptionClassName,
|
|
@@ -11302,9 +11722,10 @@ function ContactFaq({
|
|
|
11302
11722
|
accordionTriggerClassName,
|
|
11303
11723
|
accordionContentClassName,
|
|
11304
11724
|
gridClassName,
|
|
11725
|
+
successMessageClassName,
|
|
11726
|
+
errorMessageClassName,
|
|
11305
11727
|
background,
|
|
11306
11728
|
spacing = "py-8 md:py-32",
|
|
11307
|
-
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
11308
11729
|
pattern,
|
|
11309
11730
|
patternOpacity,
|
|
11310
11731
|
formConfig,
|
|
@@ -11312,54 +11733,27 @@ function ContactFaq({
|
|
|
11312
11733
|
onSuccess,
|
|
11313
11734
|
onError
|
|
11314
11735
|
}) {
|
|
11315
|
-
const
|
|
11316
|
-
|
|
11317
|
-
|
|
11318
|
-
|
|
11319
|
-
|
|
11320
|
-
|
|
11321
|
-
|
|
11322
|
-
|
|
11323
|
-
|
|
11324
|
-
|
|
11325
|
-
|
|
11326
|
-
|
|
11327
|
-
|
|
11328
|
-
|
|
11329
|
-
|
|
11330
|
-
subject: (value) => !value ? "Subject is required" : void 0,
|
|
11331
|
-
message: (value) => !value ? "Message is required" : void 0
|
|
11736
|
+
const {
|
|
11737
|
+
uploadTokens,
|
|
11738
|
+
uploadProgress,
|
|
11739
|
+
isUploading,
|
|
11740
|
+
uploadFiles,
|
|
11741
|
+
removeFile,
|
|
11742
|
+
resetUpload
|
|
11743
|
+
} = useFileUpload({ onError });
|
|
11744
|
+
const { form, isSubmitted, submissionError, formMethod } = useContactForm({
|
|
11745
|
+
formFields,
|
|
11746
|
+
formConfig,
|
|
11747
|
+
onSubmit,
|
|
11748
|
+
onSuccess: (data) => {
|
|
11749
|
+
resetUpload();
|
|
11750
|
+
onSuccess?.(data);
|
|
11332
11751
|
},
|
|
11333
|
-
|
|
11334
|
-
|
|
11335
|
-
|
|
11336
|
-
return;
|
|
11337
|
-
}
|
|
11338
|
-
try {
|
|
11339
|
-
let result;
|
|
11340
|
-
if (shouldAutoSubmit) {
|
|
11341
|
-
result = await submitPageSpeedForm(values, formConfig);
|
|
11342
|
-
}
|
|
11343
|
-
if (onSubmit) {
|
|
11344
|
-
await onSubmit(values);
|
|
11345
|
-
}
|
|
11346
|
-
if (shouldAutoSubmit || onSubmit) {
|
|
11347
|
-
if (formConfig?.resetOnSuccess !== false) {
|
|
11348
|
-
helpers.resetForm();
|
|
11349
|
-
}
|
|
11350
|
-
onSuccess?.(result);
|
|
11351
|
-
}
|
|
11352
|
-
} catch (error) {
|
|
11353
|
-
if (error instanceof PageSpeedFormSubmissionError && error.formErrors) {
|
|
11354
|
-
helpers.setErrors(error.formErrors);
|
|
11355
|
-
}
|
|
11356
|
-
onError?.(error);
|
|
11357
|
-
throw error;
|
|
11358
|
-
}
|
|
11359
|
-
}
|
|
11752
|
+
onError,
|
|
11753
|
+
resetOnSuccess: formConfig?.resetOnSuccess !== false,
|
|
11754
|
+
uploadTokens
|
|
11360
11755
|
});
|
|
11361
|
-
const
|
|
11362
|
-
const actionsContent = React51.useMemo(() => {
|
|
11756
|
+
const actionsContent = useMemo(() => {
|
|
11363
11757
|
if (actionsSlot) return actionsSlot;
|
|
11364
11758
|
if (actions && actions.length > 0) {
|
|
11365
11759
|
return actions.map((action, index) => {
|
|
@@ -11420,8 +11814,7 @@ function ContactFaq({
|
|
|
11420
11814
|
accordionClassName,
|
|
11421
11815
|
accordionItemClassName,
|
|
11422
11816
|
accordionTriggerClassName,
|
|
11423
|
-
accordionContentClassName
|
|
11424
|
-
background
|
|
11817
|
+
accordionContentClassName
|
|
11425
11818
|
]);
|
|
11426
11819
|
return /* @__PURE__ */ jsx(
|
|
11427
11820
|
Section,
|
|
@@ -11484,6 +11877,26 @@ function ContactFaq({
|
|
|
11484
11877
|
children: formHeading
|
|
11485
11878
|
}
|
|
11486
11879
|
) : /* @__PURE__ */ jsx("div", { className: formHeadingClassName, children: formHeading })),
|
|
11880
|
+
isSubmitted && /* @__PURE__ */ jsx(
|
|
11881
|
+
"div",
|
|
11882
|
+
{
|
|
11883
|
+
className: cn(
|
|
11884
|
+
"mb-6 p-4 bg-primary/10 border border-primary rounded-md",
|
|
11885
|
+
successMessageClassName
|
|
11886
|
+
),
|
|
11887
|
+
children: typeof successMessage === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm text-primary-foreground/90 text-center", children: successMessage }) : successMessage
|
|
11888
|
+
}
|
|
11889
|
+
),
|
|
11890
|
+
submissionError && /* @__PURE__ */ jsx(
|
|
11891
|
+
"div",
|
|
11892
|
+
{
|
|
11893
|
+
className: cn(
|
|
11894
|
+
"mb-6 p-4 bg-destructive/10 border border-destructive rounded-md",
|
|
11895
|
+
errorMessageClassName
|
|
11896
|
+
),
|
|
11897
|
+
children: typeof errorMessage === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive text-center", children: submissionError }) : errorMessage
|
|
11898
|
+
}
|
|
11899
|
+
),
|
|
11487
11900
|
/* @__PURE__ */ jsxs(
|
|
11488
11901
|
Form,
|
|
11489
11902
|
{
|
|
@@ -11492,62 +11905,23 @@ function ContactFaq({
|
|
|
11492
11905
|
method: formMethod,
|
|
11493
11906
|
className: cn("space-y-4", formClassName),
|
|
11494
11907
|
children: [
|
|
11495
|
-
/* @__PURE__ */
|
|
11496
|
-
|
|
11497
|
-
|
|
11498
|
-
|
|
11499
|
-
|
|
11500
|
-
|
|
11501
|
-
...field,
|
|
11502
|
-
id: "name",
|
|
11503
|
-
placeholder: "John Doe",
|
|
11504
|
-
error: meta.touched && !!meta.error,
|
|
11505
|
-
"aria-label": "Name"
|
|
11506
|
-
}
|
|
11507
|
-
)
|
|
11508
|
-
] }) }),
|
|
11509
|
-
/* @__PURE__ */ jsx(Field, { name: "email", children: ({ field, meta }) => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
11510
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email" }),
|
|
11511
|
-
/* @__PURE__ */ jsx(
|
|
11512
|
-
TextInput$1,
|
|
11908
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-12 gap-4", children: formFields.map((field) => /* @__PURE__ */ jsx(
|
|
11909
|
+
"div",
|
|
11910
|
+
{
|
|
11911
|
+
className: getColumnSpanClass(field.columnSpan),
|
|
11912
|
+
children: /* @__PURE__ */ jsx(
|
|
11913
|
+
DynamicFormField,
|
|
11513
11914
|
{
|
|
11514
|
-
|
|
11515
|
-
|
|
11516
|
-
|
|
11517
|
-
|
|
11518
|
-
|
|
11519
|
-
"aria-label": "Email"
|
|
11915
|
+
field,
|
|
11916
|
+
uploadProgress,
|
|
11917
|
+
onFileUpload: uploadFiles,
|
|
11918
|
+
onFileRemove: removeFile,
|
|
11919
|
+
isUploading
|
|
11520
11920
|
}
|
|
11521
11921
|
)
|
|
11522
|
-
|
|
11523
|
-
|
|
11524
|
-
|
|
11525
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "subject", children: "Subject" }),
|
|
11526
|
-
/* @__PURE__ */ jsx(
|
|
11527
|
-
TextInput$1,
|
|
11528
|
-
{
|
|
11529
|
-
...field,
|
|
11530
|
-
id: "subject",
|
|
11531
|
-
placeholder: "What is this regarding?",
|
|
11532
|
-
error: meta.touched && !!meta.error,
|
|
11533
|
-
"aria-label": "Subject"
|
|
11534
|
-
}
|
|
11535
|
-
)
|
|
11536
|
-
] }) }),
|
|
11537
|
-
/* @__PURE__ */ jsx(Field, { name: "message", children: ({ field, meta }) => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
11538
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "message", children: "Message" }),
|
|
11539
|
-
/* @__PURE__ */ jsx(
|
|
11540
|
-
TextArea$1,
|
|
11541
|
-
{
|
|
11542
|
-
...field,
|
|
11543
|
-
id: "message",
|
|
11544
|
-
placeholder: "Your question...",
|
|
11545
|
-
rows: 4,
|
|
11546
|
-
error: meta.touched && !!meta.error,
|
|
11547
|
-
"aria-label": "Message"
|
|
11548
|
-
}
|
|
11549
|
-
)
|
|
11550
|
-
] }) }),
|
|
11922
|
+
},
|
|
11923
|
+
field.name
|
|
11924
|
+
)) }),
|
|
11551
11925
|
actionsSlot || actions && actions.length > 0 ? actionsContent : /* @__PURE__ */ jsxs(
|
|
11552
11926
|
Pressable,
|
|
11553
11927
|
{
|
|
@@ -11655,7 +12029,7 @@ function ContactFeedback({
|
|
|
11655
12029
|
}
|
|
11656
12030
|
});
|
|
11657
12031
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
11658
|
-
const actionsContent =
|
|
12032
|
+
const actionsContent = React50.useMemo(() => {
|
|
11659
12033
|
if (actionsSlot) return actionsSlot;
|
|
11660
12034
|
if (actions && actions.length > 0) {
|
|
11661
12035
|
return actions.map((action, index) => {
|
|
@@ -11823,7 +12197,7 @@ function ContactFitness({
|
|
|
11823
12197
|
}
|
|
11824
12198
|
});
|
|
11825
12199
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
11826
|
-
const actionsContent =
|
|
12200
|
+
const actionsContent = React50.useMemo(() => {
|
|
11827
12201
|
if (actionsSlot) return actionsSlot;
|
|
11828
12202
|
if (actions && actions.length > 0) {
|
|
11829
12203
|
return actions.map((action, index) => {
|
|
@@ -12033,7 +12407,7 @@ function ContactGuest({
|
|
|
12033
12407
|
}
|
|
12034
12408
|
});
|
|
12035
12409
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
12036
|
-
const actionsContent =
|
|
12410
|
+
const actionsContent = React50.useMemo(() => {
|
|
12037
12411
|
if (actionsSlot) return actionsSlot;
|
|
12038
12412
|
if (actions && actions.length > 0) {
|
|
12039
12413
|
return actions.map((action, index) => {
|
|
@@ -12243,7 +12617,7 @@ function ContactImage({
|
|
|
12243
12617
|
}
|
|
12244
12618
|
});
|
|
12245
12619
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
12246
|
-
const actionsContent =
|
|
12620
|
+
const actionsContent = React50.useMemo(() => {
|
|
12247
12621
|
if (actionsSlot) return actionsSlot;
|
|
12248
12622
|
if (actions && actions.length > 0) {
|
|
12249
12623
|
return actions.map((action, index) => {
|
|
@@ -12453,7 +12827,7 @@ function ContactInsurance({
|
|
|
12453
12827
|
}
|
|
12454
12828
|
});
|
|
12455
12829
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
12456
|
-
const actionsContent =
|
|
12830
|
+
const actionsContent = React50.useMemo(() => {
|
|
12457
12831
|
if (actionsSlot) return actionsSlot;
|
|
12458
12832
|
if (actions && actions.length > 0) {
|
|
12459
12833
|
return actions.map((action, index) => {
|
|
@@ -12663,7 +13037,7 @@ function ContactInterview({
|
|
|
12663
13037
|
}
|
|
12664
13038
|
});
|
|
12665
13039
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
12666
|
-
const actionsContent =
|
|
13040
|
+
const actionsContent = React50.useMemo(() => {
|
|
12667
13041
|
if (actionsSlot) return actionsSlot;
|
|
12668
13042
|
if (actions && actions.length > 0) {
|
|
12669
13043
|
return actions.map((action, index) => {
|
|
@@ -12864,7 +13238,7 @@ function ContactLocations({
|
|
|
12864
13238
|
}
|
|
12865
13239
|
});
|
|
12866
13240
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
12867
|
-
const actionsContent =
|
|
13241
|
+
const actionsContent = React50.useMemo(() => {
|
|
12868
13242
|
if (actionsSlot) return actionsSlot;
|
|
12869
13243
|
if (actions && actions.length > 0) {
|
|
12870
13244
|
return actions.map((action, index) => {
|
|
@@ -13065,7 +13439,7 @@ function ContactMaintenance({
|
|
|
13065
13439
|
}
|
|
13066
13440
|
});
|
|
13067
13441
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
13068
|
-
const actionsContent =
|
|
13442
|
+
const actionsContent = React50.useMemo(() => {
|
|
13069
13443
|
if (actionsSlot) return actionsSlot;
|
|
13070
13444
|
if (actions && actions.length > 0) {
|
|
13071
13445
|
return actions.map((action, index) => {
|
|
@@ -13266,7 +13640,7 @@ function ContactMap({
|
|
|
13266
13640
|
}
|
|
13267
13641
|
});
|
|
13268
13642
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
13269
|
-
const actionsContent =
|
|
13643
|
+
const actionsContent = React50.useMemo(() => {
|
|
13270
13644
|
if (actionsSlot) return actionsSlot;
|
|
13271
13645
|
if (actions && actions.length > 0) {
|
|
13272
13646
|
return actions.map((action, index) => {
|
|
@@ -13464,7 +13838,7 @@ function ContactMinimal({
|
|
|
13464
13838
|
}
|
|
13465
13839
|
});
|
|
13466
13840
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
13467
|
-
const actionsContent =
|
|
13841
|
+
const actionsContent = React50.useMemo(() => {
|
|
13468
13842
|
if (actionsSlot) return actionsSlot;
|
|
13469
13843
|
if (actions && actions.length > 0) {
|
|
13470
13844
|
return actions.map((action, index) => {
|
|
@@ -13487,7 +13861,7 @@ function ContactMinimal({
|
|
|
13487
13861
|
}
|
|
13488
13862
|
return null;
|
|
13489
13863
|
}, [actionsSlot, actions]);
|
|
13490
|
-
const footerContent =
|
|
13864
|
+
const footerContent = React50.useMemo(() => {
|
|
13491
13865
|
if (footerSlot) return footerSlot;
|
|
13492
13866
|
if (footer) {
|
|
13493
13867
|
return typeof footer === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-6 text-center text-sm text-muted-foreground", footerClassName), children: footer }) : /* @__PURE__ */ jsx("div", { className: cn("mt-6 text-center text-sm text-muted-foreground", footerClassName), children: footer });
|
|
@@ -13653,7 +14027,7 @@ function ContactMoving({
|
|
|
13653
14027
|
}
|
|
13654
14028
|
});
|
|
13655
14029
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
13656
|
-
const actionsContent =
|
|
14030
|
+
const actionsContent = React50.useMemo(() => {
|
|
13657
14031
|
if (actionsSlot) return actionsSlot;
|
|
13658
14032
|
if (actions && actions.length > 0) {
|
|
13659
14033
|
return actions.map((action, index) => {
|
|
@@ -13854,7 +14228,7 @@ function ContactMultistep({
|
|
|
13854
14228
|
}
|
|
13855
14229
|
});
|
|
13856
14230
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
13857
|
-
const actionsContent =
|
|
14231
|
+
const actionsContent = React50.useMemo(() => {
|
|
13858
14232
|
if (actionsSlot) return actionsSlot;
|
|
13859
14233
|
if (actions && actions.length > 0) {
|
|
13860
14234
|
return actions.map((action, index) => {
|
|
@@ -14055,7 +14429,7 @@ function ContactPartnership({
|
|
|
14055
14429
|
}
|
|
14056
14430
|
});
|
|
14057
14431
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
14058
|
-
const actionsContent =
|
|
14432
|
+
const actionsContent = React50.useMemo(() => {
|
|
14059
14433
|
if (actionsSlot) return actionsSlot;
|
|
14060
14434
|
if (actions && actions.length > 0) {
|
|
14061
14435
|
return actions.map((action, index) => {
|
|
@@ -14182,19 +14556,67 @@ function ContactPartnership({
|
|
|
14182
14556
|
}
|
|
14183
14557
|
);
|
|
14184
14558
|
}
|
|
14559
|
+
var DEFAULT_FORM_FIELDS3 = [
|
|
14560
|
+
{
|
|
14561
|
+
name: "first_name",
|
|
14562
|
+
type: "text",
|
|
14563
|
+
label: "First Name",
|
|
14564
|
+
placeholder: "First name",
|
|
14565
|
+
required: true,
|
|
14566
|
+
columnSpan: 6
|
|
14567
|
+
},
|
|
14568
|
+
{
|
|
14569
|
+
name: "last_name",
|
|
14570
|
+
type: "text",
|
|
14571
|
+
label: "Last Name",
|
|
14572
|
+
placeholder: "Last name",
|
|
14573
|
+
required: true,
|
|
14574
|
+
columnSpan: 6
|
|
14575
|
+
},
|
|
14576
|
+
{
|
|
14577
|
+
name: "email",
|
|
14578
|
+
type: "email",
|
|
14579
|
+
label: "Email",
|
|
14580
|
+
placeholder: "your@email.com",
|
|
14581
|
+
required: true,
|
|
14582
|
+
columnSpan: 12
|
|
14583
|
+
},
|
|
14584
|
+
{
|
|
14585
|
+
name: "phone",
|
|
14586
|
+
type: "tel",
|
|
14587
|
+
label: "Phone",
|
|
14588
|
+
placeholder: "+1 (555) 000-0000",
|
|
14589
|
+
required: true,
|
|
14590
|
+
columnSpan: 12
|
|
14591
|
+
},
|
|
14592
|
+
{
|
|
14593
|
+
name: "message",
|
|
14594
|
+
type: "textarea",
|
|
14595
|
+
label: "Message",
|
|
14596
|
+
placeholder: "Your message...",
|
|
14597
|
+
required: true,
|
|
14598
|
+
rows: 4,
|
|
14599
|
+
columnSpan: 12
|
|
14600
|
+
}
|
|
14601
|
+
];
|
|
14185
14602
|
function ContactPhotography({
|
|
14186
14603
|
heading,
|
|
14187
14604
|
description,
|
|
14188
|
-
buttonText,
|
|
14605
|
+
buttonText = "Submit",
|
|
14189
14606
|
buttonIcon,
|
|
14190
14607
|
actions,
|
|
14191
14608
|
actionsSlot,
|
|
14609
|
+
formFields = DEFAULT_FORM_FIELDS3,
|
|
14610
|
+
successMessage = "Thank you! Your message has been sent successfully.",
|
|
14611
|
+
errorMessage = "There was an error sending your message. Please try again.",
|
|
14192
14612
|
className,
|
|
14193
14613
|
headingClassName,
|
|
14194
14614
|
descriptionClassName,
|
|
14195
14615
|
contentClassName,
|
|
14196
14616
|
formClassName,
|
|
14197
14617
|
submitClassName,
|
|
14618
|
+
successMessageClassName,
|
|
14619
|
+
errorMessageClassName,
|
|
14198
14620
|
background,
|
|
14199
14621
|
pattern,
|
|
14200
14622
|
patternOpacity,
|
|
@@ -14208,55 +14630,26 @@ function ContactPhotography({
|
|
|
14208
14630
|
onSuccess,
|
|
14209
14631
|
onError
|
|
14210
14632
|
}) {
|
|
14211
|
-
const
|
|
14212
|
-
|
|
14213
|
-
|
|
14214
|
-
|
|
14215
|
-
|
|
14216
|
-
|
|
14217
|
-
|
|
14218
|
-
|
|
14219
|
-
|
|
14220
|
-
|
|
14221
|
-
|
|
14222
|
-
|
|
14223
|
-
|
|
14224
|
-
|
|
14225
|
-
|
|
14226
|
-
return void 0;
|
|
14227
|
-
},
|
|
14228
|
-
phone: (value) => !value ? "Phone is required" : void 0,
|
|
14229
|
-
message: (value) => !value ? "Message is required" : void 0
|
|
14633
|
+
const {
|
|
14634
|
+
uploadTokens,
|
|
14635
|
+
uploadProgress,
|
|
14636
|
+
isUploading,
|
|
14637
|
+
uploadFiles,
|
|
14638
|
+
removeFile,
|
|
14639
|
+
resetUpload
|
|
14640
|
+
} = useFileUpload({ onError });
|
|
14641
|
+
const { form, isSubmitted, submissionError, formMethod } = useContactForm({
|
|
14642
|
+
formFields,
|
|
14643
|
+
formConfig,
|
|
14644
|
+
onSubmit,
|
|
14645
|
+
onSuccess: (data) => {
|
|
14646
|
+
resetUpload();
|
|
14647
|
+
onSuccess?.(data);
|
|
14230
14648
|
},
|
|
14231
|
-
|
|
14232
|
-
|
|
14233
|
-
|
|
14234
|
-
return;
|
|
14235
|
-
}
|
|
14236
|
-
try {
|
|
14237
|
-
let result;
|
|
14238
|
-
if (shouldAutoSubmit) {
|
|
14239
|
-
result = await submitPageSpeedForm(values, formConfig);
|
|
14240
|
-
}
|
|
14241
|
-
if (onSubmit) {
|
|
14242
|
-
await onSubmit(values);
|
|
14243
|
-
}
|
|
14244
|
-
if (shouldAutoSubmit || onSubmit) {
|
|
14245
|
-
if (formConfig?.resetOnSuccess !== false) {
|
|
14246
|
-
helpers.resetForm();
|
|
14247
|
-
}
|
|
14248
|
-
onSuccess?.(result);
|
|
14249
|
-
}
|
|
14250
|
-
} catch (error) {
|
|
14251
|
-
if (error instanceof PageSpeedFormSubmissionError && error.formErrors) {
|
|
14252
|
-
helpers.setErrors(error.formErrors);
|
|
14253
|
-
}
|
|
14254
|
-
onError?.(error);
|
|
14255
|
-
throw error;
|
|
14256
|
-
}
|
|
14257
|
-
}
|
|
14649
|
+
onError,
|
|
14650
|
+
resetOnSuccess: formConfig?.resetOnSuccess !== false,
|
|
14651
|
+
uploadTokens
|
|
14258
14652
|
});
|
|
14259
|
-
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
14260
14653
|
const actionsContent = useMemo(() => {
|
|
14261
14654
|
if (actionsSlot) return actionsSlot;
|
|
14262
14655
|
if (actions && actions.length > 0) {
|
|
@@ -14335,6 +14728,26 @@ function ContactPhotography({
|
|
|
14335
14728
|
children: description
|
|
14336
14729
|
}
|
|
14337
14730
|
) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
14731
|
+
isSubmitted && /* @__PURE__ */ jsx(
|
|
14732
|
+
"div",
|
|
14733
|
+
{
|
|
14734
|
+
className: cn(
|
|
14735
|
+
"p-4 bg-primary/10 border border-primary rounded-md",
|
|
14736
|
+
successMessageClassName
|
|
14737
|
+
),
|
|
14738
|
+
children: typeof successMessage === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm text-primary-foreground/90 text-center", children: successMessage }) : successMessage
|
|
14739
|
+
}
|
|
14740
|
+
),
|
|
14741
|
+
submissionError && /* @__PURE__ */ jsx(
|
|
14742
|
+
"div",
|
|
14743
|
+
{
|
|
14744
|
+
className: cn(
|
|
14745
|
+
"p-4 bg-destructive/10 border border-destructive rounded-md",
|
|
14746
|
+
errorMessageClassName
|
|
14747
|
+
),
|
|
14748
|
+
children: /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive text-center", children: submissionError })
|
|
14749
|
+
}
|
|
14750
|
+
),
|
|
14338
14751
|
/* @__PURE__ */ jsxs(
|
|
14339
14752
|
Form,
|
|
14340
14753
|
{
|
|
@@ -14343,76 +14756,23 @@ function ContactPhotography({
|
|
|
14343
14756
|
method: formMethod,
|
|
14344
14757
|
className: cn("space-y-4", formClassName),
|
|
14345
14758
|
children: [
|
|
14346
|
-
/* @__PURE__ */
|
|
14347
|
-
|
|
14348
|
-
|
|
14349
|
-
|
|
14350
|
-
|
|
14351
|
-
|
|
14352
|
-
...field,
|
|
14353
|
-
id: "first-name",
|
|
14354
|
-
placeholder: "John",
|
|
14355
|
-
error: meta.touched && !!meta.error,
|
|
14356
|
-
"aria-label": "First Name"
|
|
14357
|
-
}
|
|
14358
|
-
)
|
|
14359
|
-
] }) }),
|
|
14360
|
-
/* @__PURE__ */ jsx(Field, { name: "last_name", children: ({ field, meta }) => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
14361
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "last-name", children: "Last Name" }),
|
|
14362
|
-
/* @__PURE__ */ jsx(
|
|
14363
|
-
TextInput$1,
|
|
14759
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-12 gap-4", children: formFields.map((field) => /* @__PURE__ */ jsx(
|
|
14760
|
+
"div",
|
|
14761
|
+
{
|
|
14762
|
+
className: getColumnSpanClass(field.columnSpan),
|
|
14763
|
+
children: /* @__PURE__ */ jsx(
|
|
14764
|
+
DynamicFormField,
|
|
14364
14765
|
{
|
|
14365
|
-
|
|
14366
|
-
|
|
14367
|
-
|
|
14368
|
-
|
|
14369
|
-
|
|
14766
|
+
field,
|
|
14767
|
+
uploadProgress,
|
|
14768
|
+
onFileUpload: uploadFiles,
|
|
14769
|
+
onFileRemove: removeFile,
|
|
14770
|
+
isUploading
|
|
14370
14771
|
}
|
|
14371
14772
|
)
|
|
14372
|
-
|
|
14373
|
-
|
|
14374
|
-
|
|
14375
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email" }),
|
|
14376
|
-
/* @__PURE__ */ jsx(
|
|
14377
|
-
TextInput$1,
|
|
14378
|
-
{
|
|
14379
|
-
...field,
|
|
14380
|
-
id: "email",
|
|
14381
|
-
type: "email",
|
|
14382
|
-
placeholder: "john@example.com",
|
|
14383
|
-
error: meta.touched && !!meta.error,
|
|
14384
|
-
"aria-label": "Email"
|
|
14385
|
-
}
|
|
14386
|
-
)
|
|
14387
|
-
] }) }),
|
|
14388
|
-
/* @__PURE__ */ jsx(Field, { name: "phone", children: ({ field, meta }) => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
14389
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "phone", children: "Phone" }),
|
|
14390
|
-
/* @__PURE__ */ jsx(
|
|
14391
|
-
TextInput$1,
|
|
14392
|
-
{
|
|
14393
|
-
...field,
|
|
14394
|
-
id: "phone",
|
|
14395
|
-
type: "tel",
|
|
14396
|
-
placeholder: "+1 (555) 000-0000",
|
|
14397
|
-
error: meta.touched && !!meta.error,
|
|
14398
|
-
"aria-label": "Phone"
|
|
14399
|
-
}
|
|
14400
|
-
)
|
|
14401
|
-
] }) }),
|
|
14402
|
-
/* @__PURE__ */ jsx(Field, { name: "message", children: ({ field, meta }) => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
14403
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "message", children: "Message" }),
|
|
14404
|
-
/* @__PURE__ */ jsx(
|
|
14405
|
-
TextArea$1,
|
|
14406
|
-
{
|
|
14407
|
-
...field,
|
|
14408
|
-
id: "message",
|
|
14409
|
-
placeholder: "Your message...",
|
|
14410
|
-
rows: 4,
|
|
14411
|
-
error: meta.touched && !!meta.error,
|
|
14412
|
-
"aria-label": "Message"
|
|
14413
|
-
}
|
|
14414
|
-
)
|
|
14415
|
-
] }) }),
|
|
14773
|
+
},
|
|
14774
|
+
field.name
|
|
14775
|
+
)) }),
|
|
14416
14776
|
actionsSlot || actions && actions.length > 0 ? actionsContent : /* @__PURE__ */ jsxs(
|
|
14417
14777
|
Pressable,
|
|
14418
14778
|
{
|
|
@@ -14523,7 +14883,7 @@ function ContactPress({
|
|
|
14523
14883
|
}
|
|
14524
14884
|
});
|
|
14525
14885
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
14526
|
-
const actionsContent =
|
|
14886
|
+
const actionsContent = React50.useMemo(() => {
|
|
14527
14887
|
if (actionsSlot) return actionsSlot;
|
|
14528
14888
|
if (actions && actions.length > 0) {
|
|
14529
14889
|
return actions.map((action, index) => {
|
|
@@ -14724,7 +15084,7 @@ function ContactQuote({
|
|
|
14724
15084
|
}
|
|
14725
15085
|
});
|
|
14726
15086
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
14727
|
-
const actionsContent =
|
|
15087
|
+
const actionsContent = React50.useMemo(() => {
|
|
14728
15088
|
if (actionsSlot) return actionsSlot;
|
|
14729
15089
|
if (actions && actions.length > 0) {
|
|
14730
15090
|
return actions.map((action, index) => {
|
|
@@ -14925,7 +15285,7 @@ function ContactReferral({
|
|
|
14925
15285
|
}
|
|
14926
15286
|
});
|
|
14927
15287
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
14928
|
-
const actionsContent =
|
|
15288
|
+
const actionsContent = React50.useMemo(() => {
|
|
14929
15289
|
if (actionsSlot) return actionsSlot;
|
|
14930
15290
|
if (actions && actions.length > 0) {
|
|
14931
15291
|
return actions.map((action, index) => {
|
|
@@ -15126,7 +15486,7 @@ function ContactReport({
|
|
|
15126
15486
|
}
|
|
15127
15487
|
});
|
|
15128
15488
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
15129
|
-
const actionsContent =
|
|
15489
|
+
const actionsContent = React50.useMemo(() => {
|
|
15130
15490
|
if (actionsSlot) return actionsSlot;
|
|
15131
15491
|
if (actions && actions.length > 0) {
|
|
15132
15492
|
return actions.map((action, index) => {
|
|
@@ -15327,7 +15687,7 @@ function ContactReservation({
|
|
|
15327
15687
|
}
|
|
15328
15688
|
});
|
|
15329
15689
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
15330
|
-
const actionsContent =
|
|
15690
|
+
const actionsContent = React50.useMemo(() => {
|
|
15331
15691
|
if (actionsSlot) return actionsSlot;
|
|
15332
15692
|
if (actions && actions.length > 0) {
|
|
15333
15693
|
return actions.map((action, index) => {
|
|
@@ -15528,7 +15888,7 @@ function ContactRetreat({
|
|
|
15528
15888
|
}
|
|
15529
15889
|
});
|
|
15530
15890
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
15531
|
-
const actionsContent =
|
|
15891
|
+
const actionsContent = React50.useMemo(() => {
|
|
15532
15892
|
if (actionsSlot) return actionsSlot;
|
|
15533
15893
|
if (actions && actions.length > 0) {
|
|
15534
15894
|
return actions.map((action, index) => {
|
|
@@ -15729,7 +16089,7 @@ function ContactRsvp({
|
|
|
15729
16089
|
}
|
|
15730
16090
|
});
|
|
15731
16091
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
15732
|
-
const actionsContent =
|
|
16092
|
+
const actionsContent = React50.useMemo(() => {
|
|
15733
16093
|
if (actionsSlot) return actionsSlot;
|
|
15734
16094
|
if (actions && actions.length > 0) {
|
|
15735
16095
|
return actions.map((action, index) => {
|
|
@@ -15930,7 +16290,7 @@ function ContactSales({
|
|
|
15930
16290
|
}
|
|
15931
16291
|
});
|
|
15932
16292
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
15933
|
-
const actionsContent =
|
|
16293
|
+
const actionsContent = React50.useMemo(() => {
|
|
15934
16294
|
if (actionsSlot) return actionsSlot;
|
|
15935
16295
|
if (actions && actions.length > 0) {
|
|
15936
16296
|
return actions.map((action, index) => {
|
|
@@ -16140,7 +16500,7 @@ function ContactSchedule({
|
|
|
16140
16500
|
}
|
|
16141
16501
|
});
|
|
16142
16502
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
16143
|
-
const actionsContent =
|
|
16503
|
+
const actionsContent = React50.useMemo(() => {
|
|
16144
16504
|
if (actionsSlot) return actionsSlot;
|
|
16145
16505
|
if (actions && actions.length > 0) {
|
|
16146
16506
|
return actions.map((action, index) => {
|
|
@@ -16341,7 +16701,7 @@ function ContactSponsorship({
|
|
|
16341
16701
|
}
|
|
16342
16702
|
});
|
|
16343
16703
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
16344
|
-
const actionsContent =
|
|
16704
|
+
const actionsContent = React50.useMemo(() => {
|
|
16345
16705
|
if (actionsSlot) return actionsSlot;
|
|
16346
16706
|
if (actions && actions.length > 0) {
|
|
16347
16707
|
return actions.map((action, index) => {
|
|
@@ -16538,7 +16898,7 @@ function ContactSupport({
|
|
|
16538
16898
|
}
|
|
16539
16899
|
});
|
|
16540
16900
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
16541
|
-
const actionsContent =
|
|
16901
|
+
const actionsContent = React50.useMemo(() => {
|
|
16542
16902
|
if (actionsSlot) return actionsSlot;
|
|
16543
16903
|
if (actions && actions.length > 0) {
|
|
16544
16904
|
return actions.map((action, index) => {
|
|
@@ -16710,7 +17070,7 @@ function ContactTenant({
|
|
|
16710
17070
|
}
|
|
16711
17071
|
});
|
|
16712
17072
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
16713
|
-
const actionsContent =
|
|
17073
|
+
const actionsContent = React50.useMemo(() => {
|
|
16714
17074
|
if (actionsSlot) return actionsSlot;
|
|
16715
17075
|
if (actions && actions.length > 0) {
|
|
16716
17076
|
return actions.map((action, index) => {
|
|
@@ -16911,7 +17271,7 @@ function ContactVendor({
|
|
|
16911
17271
|
}
|
|
16912
17272
|
});
|
|
16913
17273
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
16914
|
-
const actionsContent =
|
|
17274
|
+
const actionsContent = React50.useMemo(() => {
|
|
16915
17275
|
if (actionsSlot) return actionsSlot;
|
|
16916
17276
|
if (actions && actions.length > 0) {
|
|
16917
17277
|
return actions.map((action, index) => {
|
|
@@ -17112,7 +17472,7 @@ function ContactVolunteer({
|
|
|
17112
17472
|
}
|
|
17113
17473
|
});
|
|
17114
17474
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
17115
|
-
const actionsContent =
|
|
17475
|
+
const actionsContent = React50.useMemo(() => {
|
|
17116
17476
|
if (actionsSlot) return actionsSlot;
|
|
17117
17477
|
if (actions && actions.length > 0) {
|
|
17118
17478
|
return actions.map((action, index) => {
|
|
@@ -17313,7 +17673,7 @@ function ContactWarranty({
|
|
|
17313
17673
|
}
|
|
17314
17674
|
});
|
|
17315
17675
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
17316
|
-
const actionsContent =
|
|
17676
|
+
const actionsContent = React50.useMemo(() => {
|
|
17317
17677
|
if (actionsSlot) return actionsSlot;
|
|
17318
17678
|
if (actions && actions.length > 0) {
|
|
17319
17679
|
return actions.map((action, index) => {
|
|
@@ -17514,7 +17874,7 @@ function ContactWedding({
|
|
|
17514
17874
|
}
|
|
17515
17875
|
});
|
|
17516
17876
|
const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
|
|
17517
|
-
const actionsContent =
|
|
17877
|
+
const actionsContent = React50.useMemo(() => {
|
|
17518
17878
|
if (actionsSlot) return actionsSlot;
|
|
17519
17879
|
if (actions && actions.length > 0) {
|
|
17520
17880
|
return actions.map((action, index) => {
|
|
@@ -17781,16 +18141,16 @@ function CarouselAnimatedSections({
|
|
|
17781
18141
|
pattern = "diagonalCrossBasic",
|
|
17782
18142
|
patternOpacity = 0.033
|
|
17783
18143
|
}) {
|
|
17784
|
-
const [currentIndex, setCurrentIndex] =
|
|
17785
|
-
const [direction, setDirection] =
|
|
17786
|
-
const [isAnimating, setIsAnimating] =
|
|
17787
|
-
const goToNext =
|
|
18144
|
+
const [currentIndex, setCurrentIndex] = React50.useState(0);
|
|
18145
|
+
const [direction, setDirection] = React50.useState(0);
|
|
18146
|
+
const [isAnimating, setIsAnimating] = React50.useState(false);
|
|
18147
|
+
const goToNext = React50.useCallback(() => {
|
|
17788
18148
|
if (isAnimating || currentIndex >= (sections?.length ?? 0) - 1) return;
|
|
17789
18149
|
setIsAnimating(true);
|
|
17790
18150
|
setDirection(1);
|
|
17791
18151
|
setCurrentIndex((prev) => prev + 1);
|
|
17792
18152
|
}, [currentIndex, isAnimating, sections?.length]);
|
|
17793
|
-
const goToPrev =
|
|
18153
|
+
const goToPrev = React50.useCallback(() => {
|
|
17794
18154
|
if (isAnimating || currentIndex <= 0) return;
|
|
17795
18155
|
setIsAnimating(true);
|
|
17796
18156
|
setDirection(-1);
|
|
@@ -17802,7 +18162,7 @@ function CarouselAnimatedSections({
|
|
|
17802
18162
|
setDirection(index > currentIndex ? 1 : -1);
|
|
17803
18163
|
setCurrentIndex(index);
|
|
17804
18164
|
};
|
|
17805
|
-
|
|
18165
|
+
React50.useEffect(() => {
|
|
17806
18166
|
const handleKeyDown = (e) => {
|
|
17807
18167
|
if (e.key === "ArrowDown" || e.key === "ArrowRight") {
|
|
17808
18168
|
goToNext();
|
|
@@ -17828,7 +18188,7 @@ function CarouselAnimatedSections({
|
|
|
17828
18188
|
})
|
|
17829
18189
|
};
|
|
17830
18190
|
const currentSection = sections?.[currentIndex];
|
|
17831
|
-
const actionElements =
|
|
18191
|
+
const actionElements = React50.useMemo(() => {
|
|
17832
18192
|
if (actionsSlot) return actionsSlot;
|
|
17833
18193
|
if (actions && actions.length > 0) {
|
|
17834
18194
|
return actions.map((action, index) => /* @__PURE__ */ jsxs(
|
|
@@ -18076,11 +18436,11 @@ function CarouselAutoProgressSlides({
|
|
|
18076
18436
|
pattern,
|
|
18077
18437
|
patternOpacity
|
|
18078
18438
|
}) {
|
|
18079
|
-
const [currentIndex, setCurrentIndex] =
|
|
18439
|
+
const [currentIndex, setCurrentIndex] = React50.useState(0);
|
|
18080
18440
|
const progress = useMotionValue(100);
|
|
18081
|
-
const [direction, setDirection] =
|
|
18441
|
+
const [direction, setDirection] = React50.useState(1);
|
|
18082
18442
|
const clipPath = useMotionTemplate`inset(0 ${progress}% 0 0 round 10px)`;
|
|
18083
|
-
|
|
18443
|
+
React50.useEffect(() => {
|
|
18084
18444
|
const interval = setInterval(() => {
|
|
18085
18445
|
const currentProgress = progress.get();
|
|
18086
18446
|
if (currentProgress > 0) {
|
|
@@ -18259,22 +18619,22 @@ function CarouselAutoProgressSlides({
|
|
|
18259
18619
|
);
|
|
18260
18620
|
}
|
|
18261
18621
|
function useDotButton(emblaApi) {
|
|
18262
|
-
const [selectedIndex, setSelectedIndex] =
|
|
18263
|
-
const [scrollSnaps, setScrollSnaps] =
|
|
18264
|
-
const onDotButtonClick =
|
|
18622
|
+
const [selectedIndex, setSelectedIndex] = React50.useState(0);
|
|
18623
|
+
const [scrollSnaps, setScrollSnaps] = React50.useState([]);
|
|
18624
|
+
const onDotButtonClick = React50.useCallback(
|
|
18265
18625
|
(index) => {
|
|
18266
18626
|
if (!emblaApi) return;
|
|
18267
18627
|
emblaApi.scrollTo(index);
|
|
18268
18628
|
},
|
|
18269
18629
|
[emblaApi]
|
|
18270
18630
|
);
|
|
18271
|
-
const onInit =
|
|
18631
|
+
const onInit = React50.useCallback((api) => {
|
|
18272
18632
|
setScrollSnaps(api.scrollSnapList());
|
|
18273
18633
|
}, []);
|
|
18274
|
-
const onSelect =
|
|
18634
|
+
const onSelect = React50.useCallback((api) => {
|
|
18275
18635
|
setSelectedIndex(api.selectedScrollSnap());
|
|
18276
18636
|
}, []);
|
|
18277
|
-
|
|
18637
|
+
React50.useEffect(() => {
|
|
18278
18638
|
if (!emblaApi) return;
|
|
18279
18639
|
onInit(emblaApi);
|
|
18280
18640
|
onSelect(emblaApi);
|
|
@@ -18283,8 +18643,8 @@ function useDotButton(emblaApi) {
|
|
|
18283
18643
|
return { selectedIndex, scrollSnaps, onDotButtonClick };
|
|
18284
18644
|
}
|
|
18285
18645
|
function useAutoplay(emblaApi) {
|
|
18286
|
-
const [autoplayIsPlaying, setAutoplayIsPlaying] =
|
|
18287
|
-
const onAutoplayButtonClick =
|
|
18646
|
+
const [autoplayIsPlaying, setAutoplayIsPlaying] = React50.useState(false);
|
|
18647
|
+
const onAutoplayButtonClick = React50.useCallback(
|
|
18288
18648
|
(callback) => {
|
|
18289
18649
|
const autoplay = emblaApi?.plugins()?.autoplay;
|
|
18290
18650
|
if (!autoplay) return;
|
|
@@ -18294,13 +18654,13 @@ function useAutoplay(emblaApi) {
|
|
|
18294
18654
|
},
|
|
18295
18655
|
[emblaApi]
|
|
18296
18656
|
);
|
|
18297
|
-
const toggleAutoplay =
|
|
18657
|
+
const toggleAutoplay = React50.useCallback(() => {
|
|
18298
18658
|
const autoplay = emblaApi?.plugins()?.autoplay;
|
|
18299
18659
|
if (!autoplay) return;
|
|
18300
18660
|
const playOrStop = autoplay.isPlaying() ? autoplay.stop : autoplay.play;
|
|
18301
18661
|
playOrStop();
|
|
18302
18662
|
}, [emblaApi]);
|
|
18303
|
-
|
|
18663
|
+
React50.useEffect(() => {
|
|
18304
18664
|
const autoplay = emblaApi?.plugins()?.autoplay;
|
|
18305
18665
|
if (!autoplay) return;
|
|
18306
18666
|
setAutoplayIsPlaying(autoplay.isPlaying());
|
|
@@ -18309,11 +18669,11 @@ function useAutoplay(emblaApi) {
|
|
|
18309
18669
|
return { autoplayIsPlaying, toggleAutoplay, onAutoplayButtonClick };
|
|
18310
18670
|
}
|
|
18311
18671
|
function useAutoplayProgress(emblaApi, progressNode) {
|
|
18312
|
-
const [showAutoplayProgress, setShowAutoplayProgress] =
|
|
18313
|
-
const animationName =
|
|
18314
|
-
const timeoutId =
|
|
18315
|
-
const rafId =
|
|
18316
|
-
const startProgress =
|
|
18672
|
+
const [showAutoplayProgress, setShowAutoplayProgress] = React50.useState(false);
|
|
18673
|
+
const animationName = React50.useRef("");
|
|
18674
|
+
const timeoutId = React50.useRef(0);
|
|
18675
|
+
const rafId = React50.useRef(0);
|
|
18676
|
+
const startProgress = React50.useCallback(
|
|
18317
18677
|
(timeUntilNext) => {
|
|
18318
18678
|
const node = progressNode.current;
|
|
18319
18679
|
if (!node || timeUntilNext === null) return;
|
|
@@ -18333,12 +18693,12 @@ function useAutoplayProgress(emblaApi, progressNode) {
|
|
|
18333
18693
|
},
|
|
18334
18694
|
[progressNode]
|
|
18335
18695
|
);
|
|
18336
|
-
|
|
18696
|
+
React50.useEffect(() => {
|
|
18337
18697
|
const autoplay = emblaApi?.plugins()?.autoplay;
|
|
18338
18698
|
if (!autoplay) return;
|
|
18339
18699
|
emblaApi.on("autoplay:timerset", () => startProgress(autoplay.timeUntilNext())).on("autoplay:timerstopped", () => setShowAutoplayProgress(false));
|
|
18340
18700
|
}, [emblaApi, startProgress]);
|
|
18341
|
-
|
|
18701
|
+
React50.useEffect(() => {
|
|
18342
18702
|
return () => {
|
|
18343
18703
|
cancelAnimationFrame(rafId.current);
|
|
18344
18704
|
clearTimeout(timeoutId.current);
|
|
@@ -18365,7 +18725,7 @@ function CarouselAutoplayProgress({
|
|
|
18365
18725
|
pattern,
|
|
18366
18726
|
patternOpacity
|
|
18367
18727
|
}) {
|
|
18368
|
-
const progressNode =
|
|
18728
|
+
const progressNode = React50.useRef(null);
|
|
18369
18729
|
const [emblaRef, emblaApi] = useEmblaCarousel(options, [
|
|
18370
18730
|
Autoplay({ playOnInit: true, delay: autoplayDelay })
|
|
18371
18731
|
]);
|
|
@@ -18546,20 +18906,20 @@ function CarouselFeatureBadge({
|
|
|
18546
18906
|
containerMaxWidth = "2xl"
|
|
18547
18907
|
}) {
|
|
18548
18908
|
const [emblaRef, emblaApi] = useEmblaCarousel();
|
|
18549
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
18550
|
-
const [canScrollNext, setCanScrollNext] =
|
|
18551
|
-
const scrollPrev =
|
|
18909
|
+
const [canScrollPrev, setCanScrollPrev] = React50.useState(false);
|
|
18910
|
+
const [canScrollNext, setCanScrollNext] = React50.useState(false);
|
|
18911
|
+
const scrollPrev = React50.useCallback(() => {
|
|
18552
18912
|
emblaApi?.scrollPrev();
|
|
18553
18913
|
}, [emblaApi]);
|
|
18554
|
-
const scrollNext =
|
|
18914
|
+
const scrollNext = React50.useCallback(() => {
|
|
18555
18915
|
emblaApi?.scrollNext();
|
|
18556
18916
|
}, [emblaApi]);
|
|
18557
|
-
const onSelect =
|
|
18917
|
+
const onSelect = React50.useCallback(() => {
|
|
18558
18918
|
if (!emblaApi) return;
|
|
18559
18919
|
setCanScrollPrev(emblaApi.canScrollPrev());
|
|
18560
18920
|
setCanScrollNext(emblaApi.canScrollNext());
|
|
18561
18921
|
}, [emblaApi]);
|
|
18562
|
-
|
|
18922
|
+
React50.useEffect(() => {
|
|
18563
18923
|
if (!emblaApi) return;
|
|
18564
18924
|
onSelect();
|
|
18565
18925
|
emblaApi.on("reInit", onSelect);
|
|
@@ -18679,10 +19039,10 @@ function CarouselFullscreenScrollFx({
|
|
|
18679
19039
|
pattern = "diagonalCrossBasic",
|
|
18680
19040
|
patternOpacity = 0.033
|
|
18681
19041
|
}) {
|
|
18682
|
-
const containerRef =
|
|
18683
|
-
const scrollContainerRef =
|
|
18684
|
-
const [activeIndex, setActiveIndex] =
|
|
18685
|
-
|
|
19042
|
+
const containerRef = React50.useRef(null);
|
|
19043
|
+
const scrollContainerRef = React50.useRef(null);
|
|
19044
|
+
const [activeIndex, setActiveIndex] = React50.useState(0);
|
|
19045
|
+
React50.useEffect(() => {
|
|
18686
19046
|
const scrollContainer = scrollContainerRef.current;
|
|
18687
19047
|
if (!scrollContainer || !slides?.length) return;
|
|
18688
19048
|
const handleScroll = () => {
|
|
@@ -18694,7 +19054,7 @@ function CarouselFullscreenScrollFx({
|
|
|
18694
19054
|
scrollContainer.addEventListener("scroll", handleScroll);
|
|
18695
19055
|
return () => scrollContainer.removeEventListener("scroll", handleScroll);
|
|
18696
19056
|
}, [slides]);
|
|
18697
|
-
const scrollToSlide =
|
|
19057
|
+
const scrollToSlide = React50.useCallback((index) => {
|
|
18698
19058
|
const scrollContainer = scrollContainerRef.current;
|
|
18699
19059
|
if (!scrollContainer) return;
|
|
18700
19060
|
const slideHeight = scrollContainer.clientHeight;
|
|
@@ -18777,7 +19137,7 @@ function CarouselFullscreenScrollFx({
|
|
|
18777
19137
|
className: "flex h-screen flex-col snap-y snap-mandatory overflow-x-hidden overflow-y-auto scroll-smooth",
|
|
18778
19138
|
style: { scrollbarWidth: "none", msOverflowStyle: "none" },
|
|
18779
19139
|
children: slidesSlot ? slidesSlot : slides?.map((slide, index) => {
|
|
18780
|
-
const renderActions =
|
|
19140
|
+
const renderActions = React50.useMemo(() => {
|
|
18781
19141
|
if (!slide.actions || slide.actions.length === 0) return null;
|
|
18782
19142
|
return slide.actions.map((action, actionIndex) => {
|
|
18783
19143
|
const {
|
|
@@ -18910,25 +19270,25 @@ function CarouselGalleryThumbnails({
|
|
|
18910
19270
|
patternOpacity,
|
|
18911
19271
|
slideMediaBrightness = "100"
|
|
18912
19272
|
}) {
|
|
18913
|
-
const [currentIndex, setCurrentIndex] =
|
|
18914
|
-
const prevSlide =
|
|
19273
|
+
const [currentIndex, setCurrentIndex] = React50.useState(0);
|
|
19274
|
+
const prevSlide = React50.useCallback(() => {
|
|
18915
19275
|
setCurrentIndex(
|
|
18916
19276
|
(prev) => prev === 0 ? (images?.length ?? 0) - 1 : prev - 1
|
|
18917
19277
|
);
|
|
18918
19278
|
}, [images?.length]);
|
|
18919
|
-
const nextSlide =
|
|
19279
|
+
const nextSlide = React50.useCallback(() => {
|
|
18920
19280
|
setCurrentIndex(
|
|
18921
19281
|
(prev) => prev === (images?.length ?? 0) - 1 ? 0 : prev + 1
|
|
18922
19282
|
);
|
|
18923
19283
|
}, [images?.length]);
|
|
18924
|
-
|
|
19284
|
+
React50.useEffect(() => {
|
|
18925
19285
|
if (!autoPlay) return;
|
|
18926
19286
|
const interval = setInterval(() => {
|
|
18927
19287
|
nextSlide();
|
|
18928
19288
|
}, autoPlayInterval);
|
|
18929
19289
|
return () => clearInterval(interval);
|
|
18930
19290
|
}, [currentIndex, autoPlay, autoPlayInterval, nextSlide]);
|
|
18931
|
-
|
|
19291
|
+
React50.useEffect(() => {
|
|
18932
19292
|
const handleKeyDown = (e) => {
|
|
18933
19293
|
if (e.key === "ArrowRight") {
|
|
18934
19294
|
nextSlide();
|
|
@@ -19073,9 +19433,9 @@ function CarouselHorizontalCards({
|
|
|
19073
19433
|
pattern,
|
|
19074
19434
|
patternOpacity
|
|
19075
19435
|
}) {
|
|
19076
|
-
const carouselRef =
|
|
19077
|
-
const [isAtStart, setIsAtStart] =
|
|
19078
|
-
const [isAtEnd, setIsAtEnd] =
|
|
19436
|
+
const carouselRef = React50.useRef(null);
|
|
19437
|
+
const [isAtStart, setIsAtStart] = React50.useState(true);
|
|
19438
|
+
const [isAtEnd, setIsAtEnd] = React50.useState(false);
|
|
19079
19439
|
const scrollLeft = () => {
|
|
19080
19440
|
if (carouselRef.current) {
|
|
19081
19441
|
carouselRef.current.scrollBy({ left: -300, behavior: "smooth" });
|
|
@@ -19086,7 +19446,7 @@ function CarouselHorizontalCards({
|
|
|
19086
19446
|
carouselRef.current.scrollBy({ left: 300, behavior: "smooth" });
|
|
19087
19447
|
}
|
|
19088
19448
|
};
|
|
19089
|
-
|
|
19449
|
+
React50.useEffect(() => {
|
|
19090
19450
|
const checkScrollPosition = () => {
|
|
19091
19451
|
if (carouselRef.current) {
|
|
19092
19452
|
const { scrollLeft: scrollLeft2, scrollWidth, clientWidth } = carouselRef.current;
|
|
@@ -19286,22 +19646,22 @@ function CarouselImageHero({
|
|
|
19286
19646
|
pattern,
|
|
19287
19647
|
patternOpacity
|
|
19288
19648
|
}) {
|
|
19289
|
-
const [currentImageIndex, setCurrentImageIndex] =
|
|
19290
|
-
const intervalRef =
|
|
19291
|
-
const goToNext =
|
|
19649
|
+
const [currentImageIndex, setCurrentImageIndex] = React50.useState(0);
|
|
19650
|
+
const intervalRef = React50.useRef(null);
|
|
19651
|
+
const goToNext = React50.useCallback(() => {
|
|
19292
19652
|
setCurrentImageIndex((prevIndex) => (prevIndex + 1) % (images?.length ?? 1));
|
|
19293
19653
|
}, [images?.length]);
|
|
19294
|
-
const resetInterval =
|
|
19654
|
+
const resetInterval = React50.useCallback(() => {
|
|
19295
19655
|
if (intervalRef.current) {
|
|
19296
19656
|
clearInterval(intervalRef.current);
|
|
19297
19657
|
}
|
|
19298
19658
|
intervalRef.current = setInterval(goToNext, autoPlayInterval);
|
|
19299
19659
|
}, [goToNext, autoPlayInterval]);
|
|
19300
|
-
const goToSlide =
|
|
19660
|
+
const goToSlide = React50.useCallback((index) => {
|
|
19301
19661
|
setCurrentImageIndex(index);
|
|
19302
19662
|
resetInterval();
|
|
19303
19663
|
}, [resetInterval]);
|
|
19304
|
-
|
|
19664
|
+
React50.useEffect(() => {
|
|
19305
19665
|
resetInterval();
|
|
19306
19666
|
return () => {
|
|
19307
19667
|
if (intervalRef.current) {
|
|
@@ -19474,8 +19834,8 @@ function CarouselMultiStepShowcase({
|
|
|
19474
19834
|
pattern,
|
|
19475
19835
|
patternOpacity
|
|
19476
19836
|
}) {
|
|
19477
|
-
const [activeStep, setActiveStep] =
|
|
19478
|
-
const [direction, setDirection] =
|
|
19837
|
+
const [activeStep, setActiveStep] = React50.useState(0);
|
|
19838
|
+
const [direction, setDirection] = React50.useState(0);
|
|
19479
19839
|
const goToStep = (index) => {
|
|
19480
19840
|
setDirection(index > activeStep ? 1 : -1);
|
|
19481
19841
|
setActiveStep(index);
|
|
@@ -19767,9 +20127,9 @@ function CarouselPortfolioHero({
|
|
|
19767
20127
|
patternOpacity,
|
|
19768
20128
|
slideMediaBrightness = "50"
|
|
19769
20129
|
}) {
|
|
19770
|
-
const [currentIndex, setCurrentIndex] =
|
|
19771
|
-
const intervalRef =
|
|
19772
|
-
const resetInterval =
|
|
20130
|
+
const [currentIndex, setCurrentIndex] = React50.useState(0);
|
|
20131
|
+
const intervalRef = React50.useRef(null);
|
|
20132
|
+
const resetInterval = React50.useCallback(() => {
|
|
19773
20133
|
if (intervalRef.current) {
|
|
19774
20134
|
clearInterval(intervalRef.current);
|
|
19775
20135
|
}
|
|
@@ -19777,17 +20137,17 @@ function CarouselPortfolioHero({
|
|
|
19777
20137
|
setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
|
|
19778
20138
|
}, autoPlayInterval);
|
|
19779
20139
|
}, [autoPlayInterval, slides?.length]);
|
|
19780
|
-
const goToNext =
|
|
20140
|
+
const goToNext = React50.useCallback(() => {
|
|
19781
20141
|
setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
|
|
19782
20142
|
resetInterval();
|
|
19783
20143
|
}, [slides?.length, resetInterval]);
|
|
19784
|
-
const goToPrev =
|
|
20144
|
+
const goToPrev = React50.useCallback(() => {
|
|
19785
20145
|
setCurrentIndex(
|
|
19786
20146
|
(prevIndex) => (prevIndex - 1 + (slides?.length ?? 1)) % (slides?.length ?? 1)
|
|
19787
20147
|
);
|
|
19788
20148
|
resetInterval();
|
|
19789
20149
|
}, [slides?.length, resetInterval]);
|
|
19790
|
-
|
|
20150
|
+
React50.useEffect(() => {
|
|
19791
20151
|
resetInterval();
|
|
19792
20152
|
return () => {
|
|
19793
20153
|
if (intervalRef.current) {
|
|
@@ -19979,9 +20339,9 @@ function CarouselProductFeatureShowcase({
|
|
|
19979
20339
|
pattern,
|
|
19980
20340
|
patternOpacity
|
|
19981
20341
|
}) {
|
|
19982
|
-
const [activeIndex, setActiveIndex] =
|
|
19983
|
-
const [activeColorIndex, setActiveColorIndex] =
|
|
19984
|
-
const [direction, setDirection] =
|
|
20342
|
+
const [activeIndex, setActiveIndex] = React50.useState(0);
|
|
20343
|
+
const [activeColorIndex, setActiveColorIndex] = React50.useState(0);
|
|
20344
|
+
const [direction, setDirection] = React50.useState(0);
|
|
19985
20345
|
const activeFeature = features?.[activeIndex];
|
|
19986
20346
|
const goToNext = () => {
|
|
19987
20347
|
setDirection(1);
|
|
@@ -20201,9 +20561,9 @@ function CarouselProductFeatureShowcase({
|
|
|
20201
20561
|
}
|
|
20202
20562
|
);
|
|
20203
20563
|
}
|
|
20204
|
-
var ProgressSliderContext =
|
|
20564
|
+
var ProgressSliderContext = React50.createContext(void 0);
|
|
20205
20565
|
function useProgressSliderContext() {
|
|
20206
|
-
const context =
|
|
20566
|
+
const context = React50.useContext(ProgressSliderContext);
|
|
20207
20567
|
if (!context) {
|
|
20208
20568
|
throw new Error(
|
|
20209
20569
|
"useProgressSliderContext must be used within a ProgressSlider"
|
|
@@ -20289,19 +20649,19 @@ function CarouselProgressSlider({
|
|
|
20289
20649
|
pattern,
|
|
20290
20650
|
patternOpacity
|
|
20291
20651
|
}) {
|
|
20292
|
-
const [active, setActive] =
|
|
20293
|
-
const [progress, setProgress] =
|
|
20294
|
-
const [isFastForward, setIsFastForward] =
|
|
20295
|
-
const [isPaused, setIsPaused] =
|
|
20296
|
-
const frame =
|
|
20297
|
-
const firstFrameTime =
|
|
20298
|
-
const targetValue =
|
|
20299
|
-
const pausedProgress =
|
|
20300
|
-
const sliderValues =
|
|
20652
|
+
const [active, setActive] = React50.useState(slides?.[0]?.id ?? "");
|
|
20653
|
+
const [progress, setProgress] = React50.useState(0);
|
|
20654
|
+
const [isFastForward, setIsFastForward] = React50.useState(false);
|
|
20655
|
+
const [isPaused, setIsPaused] = React50.useState(false);
|
|
20656
|
+
const frame = React50.useRef(0);
|
|
20657
|
+
const firstFrameTime = React50.useRef(performance.now());
|
|
20658
|
+
const targetValue = React50.useRef(null);
|
|
20659
|
+
const pausedProgress = React50.useRef(0);
|
|
20660
|
+
const sliderValues = React50.useMemo(
|
|
20301
20661
|
() => slides?.map((slide) => slide.id),
|
|
20302
20662
|
[slides]
|
|
20303
20663
|
);
|
|
20304
|
-
|
|
20664
|
+
React50.useEffect(() => {
|
|
20305
20665
|
if ((sliderValues?.length ?? 0) > 0 && !isPaused) {
|
|
20306
20666
|
firstFrameTime.current = performance.now();
|
|
20307
20667
|
if (pausedProgress.current > 0) {
|
|
@@ -20466,11 +20826,11 @@ function CarouselScrollingFeatureShowcase({
|
|
|
20466
20826
|
pattern,
|
|
20467
20827
|
patternOpacity
|
|
20468
20828
|
}) {
|
|
20469
|
-
const [activeFeature, setActiveFeature] =
|
|
20829
|
+
const [activeFeature, setActiveFeature] = React50.useState(
|
|
20470
20830
|
features?.[0]?.id ?? ""
|
|
20471
20831
|
);
|
|
20472
|
-
const featureRefs =
|
|
20473
|
-
|
|
20832
|
+
const featureRefs = React50.useRef(/* @__PURE__ */ new Map());
|
|
20833
|
+
React50.useEffect(() => {
|
|
20474
20834
|
if (!features || features.length === 0) return;
|
|
20475
20835
|
const observerOptions = {
|
|
20476
20836
|
root: null,
|
|
@@ -21136,10 +21496,10 @@ var ImageSlider = ({
|
|
|
21136
21496
|
optixFlowConfig
|
|
21137
21497
|
}) => {
|
|
21138
21498
|
const hasImages = images.length > 0;
|
|
21139
|
-
const [currentIndex, setCurrentIndex] =
|
|
21499
|
+
const [currentIndex, setCurrentIndex] = React50.useState(
|
|
21140
21500
|
() => normalizeIndex(startIndex, images.length)
|
|
21141
21501
|
);
|
|
21142
|
-
const handleNext =
|
|
21502
|
+
const handleNext = React50.useCallback(() => {
|
|
21143
21503
|
if (!hasImages) return;
|
|
21144
21504
|
setCurrentIndex((prevIndex) => {
|
|
21145
21505
|
const nextIndex = prevIndex + 1 >= images.length ? 0 : prevIndex + 1;
|
|
@@ -21147,7 +21507,7 @@ var ImageSlider = ({
|
|
|
21147
21507
|
return nextIndex;
|
|
21148
21508
|
});
|
|
21149
21509
|
}, [hasImages, images.length, onSlideChange]);
|
|
21150
|
-
const handlePrevious =
|
|
21510
|
+
const handlePrevious = React50.useCallback(() => {
|
|
21151
21511
|
if (!hasImages) return;
|
|
21152
21512
|
setCurrentIndex((prevIndex) => {
|
|
21153
21513
|
const nextIndex = prevIndex - 1 < 0 ? images.length - 1 : prevIndex - 1;
|
|
@@ -21155,11 +21515,11 @@ var ImageSlider = ({
|
|
|
21155
21515
|
return nextIndex;
|
|
21156
21516
|
});
|
|
21157
21517
|
}, [hasImages, images.length, onSlideChange]);
|
|
21158
|
-
|
|
21518
|
+
React50.useEffect(() => {
|
|
21159
21519
|
if (!hasImages) return;
|
|
21160
21520
|
setCurrentIndex(normalizeIndex(startIndex, images.length));
|
|
21161
21521
|
}, [startIndex, images.length, hasImages]);
|
|
21162
|
-
|
|
21522
|
+
React50.useEffect(() => {
|
|
21163
21523
|
if (!enableKeyboard || !hasImages) return;
|
|
21164
21524
|
const handleKeyDown = (event) => {
|
|
21165
21525
|
if (event.key === "ArrowRight") {
|
|
@@ -21173,7 +21533,7 @@ var ImageSlider = ({
|
|
|
21173
21533
|
window.removeEventListener("keydown", handleKeyDown);
|
|
21174
21534
|
};
|
|
21175
21535
|
}, [enableKeyboard, handleNext, handlePrevious, hasImages]);
|
|
21176
|
-
|
|
21536
|
+
React50.useEffect(() => {
|
|
21177
21537
|
if (!autoplay || images.length < 2) return;
|
|
21178
21538
|
const interval = window.setInterval(handleNext, autoplayIntervalMs);
|
|
21179
21539
|
return () => window.clearInterval(interval);
|
|
@@ -21302,7 +21662,7 @@ var platformIconMap = {
|
|
|
21302
21662
|
dribbble: "cib/dribbble",
|
|
21303
21663
|
unknown: "icon-park-solid/circular-connection"
|
|
21304
21664
|
};
|
|
21305
|
-
var SocialLinkIcon =
|
|
21665
|
+
var SocialLinkIcon = React50.forwardRef(
|
|
21306
21666
|
({
|
|
21307
21667
|
platformName,
|
|
21308
21668
|
label,
|
|
@@ -21315,13 +21675,13 @@ var SocialLinkIcon = React51.forwardRef(
|
|
|
21315
21675
|
...pressableProps
|
|
21316
21676
|
}, ref) => {
|
|
21317
21677
|
const platform = usePlatformFromUrl(href);
|
|
21318
|
-
const smartPlatformName =
|
|
21678
|
+
const smartPlatformName = React50.useMemo(() => {
|
|
21319
21679
|
return platform || platformName;
|
|
21320
21680
|
}, [platform, platformName]);
|
|
21321
|
-
const iconName =
|
|
21681
|
+
const iconName = React50.useMemo(() => {
|
|
21322
21682
|
return iconNameOverride || platformIconMap[smartPlatformName];
|
|
21323
21683
|
}, [iconNameOverride, smartPlatformName]);
|
|
21324
|
-
const accessibleLabel =
|
|
21684
|
+
const accessibleLabel = React50.useMemo(() => {
|
|
21325
21685
|
return label || platformName;
|
|
21326
21686
|
}, [label, platformName]);
|
|
21327
21687
|
return /* @__PURE__ */ jsx(
|
|
@@ -21746,7 +22106,7 @@ function AboutExpandableValues({
|
|
|
21746
22106
|
pattern,
|
|
21747
22107
|
patternOpacity
|
|
21748
22108
|
}) {
|
|
21749
|
-
const [expandedValue, setExpandedValue] =
|
|
22109
|
+
const [expandedValue, setExpandedValue] = React50.useState(null);
|
|
21750
22110
|
const toggleExpand = useCallback((id) => {
|
|
21751
22111
|
setExpandedValue((prev) => prev === id ? null : id);
|
|
21752
22112
|
}, []);
|
|
@@ -22000,7 +22360,7 @@ function CommunityInitiatives({
|
|
|
22000
22360
|
pattern,
|
|
22001
22361
|
patternOpacity
|
|
22002
22362
|
}) {
|
|
22003
|
-
const [activeCategory, setActiveCategory] =
|
|
22363
|
+
const [activeCategory, setActiveCategory] = React50.useState(
|
|
22004
22364
|
categories?.[0]?.id || ""
|
|
22005
22365
|
);
|
|
22006
22366
|
const currentCategory = categories?.find((category) => category.id === activeCategory) || categories?.[0];
|
|
@@ -22273,7 +22633,7 @@ function AboutCultureTabs({
|
|
|
22273
22633
|
patternOpacity
|
|
22274
22634
|
}) {
|
|
22275
22635
|
const resolvedAspects = aspects ?? [];
|
|
22276
|
-
const [activeTab, setActiveTab] =
|
|
22636
|
+
const [activeTab, setActiveTab] = React50.useState(resolvedAspects[0]?.id || "");
|
|
22277
22637
|
const actionsContent = useMemo(() => {
|
|
22278
22638
|
if (actionsSlot) return actionsSlot;
|
|
22279
22639
|
if (!actions || actions.length === 0) return null;
|
|
@@ -23001,8 +23361,8 @@ var BrandAttribution = ({
|
|
|
23001
23361
|
}
|
|
23002
23362
|
const { prefix = "", anchorText, href, suffix = "" } = options[optionIndex];
|
|
23003
23363
|
const ContainerEl = variant;
|
|
23004
|
-
const [trackedHref, setTrackedHref] =
|
|
23005
|
-
|
|
23364
|
+
const [trackedHref, setTrackedHref] = React50.useState(href);
|
|
23365
|
+
React50.useEffect(() => {
|
|
23006
23366
|
setTrackedHref(buildTrackedHref(href));
|
|
23007
23367
|
}, [href]);
|
|
23008
23368
|
return /* @__PURE__ */ jsxs(ContainerEl, { className: containerClassName, children: [
|
|
@@ -23422,7 +23782,7 @@ function FooterSimpleCentered({
|
|
|
23422
23782
|
]);
|
|
23423
23783
|
const bottomLinksContent = useMemo(() => {
|
|
23424
23784
|
if (!bottomLinks || bottomLinks.length === 0) return null;
|
|
23425
|
-
return bottomLinks.map((link, idx) => /* @__PURE__ */ jsx(
|
|
23785
|
+
return bottomLinks.map((link, idx) => /* @__PURE__ */ jsx(React50.Fragment, { children: /* @__PURE__ */ jsx(
|
|
23426
23786
|
Pressable,
|
|
23427
23787
|
{
|
|
23428
23788
|
href: link.href,
|
|
@@ -25662,9 +26022,9 @@ function FeatureChecklistImage({
|
|
|
25662
26022
|
}
|
|
25663
26023
|
);
|
|
25664
26024
|
}
|
|
25665
|
-
var CarouselContext =
|
|
26025
|
+
var CarouselContext = React50.createContext(null);
|
|
25666
26026
|
function useCarousel() {
|
|
25667
|
-
const context =
|
|
26027
|
+
const context = React50.useContext(CarouselContext);
|
|
25668
26028
|
if (!context) {
|
|
25669
26029
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
25670
26030
|
}
|
|
@@ -25686,20 +26046,20 @@ function Carousel({
|
|
|
25686
26046
|
},
|
|
25687
26047
|
plugins
|
|
25688
26048
|
);
|
|
25689
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
25690
|
-
const [canScrollNext, setCanScrollNext] =
|
|
25691
|
-
const onSelect =
|
|
26049
|
+
const [canScrollPrev, setCanScrollPrev] = React50.useState(false);
|
|
26050
|
+
const [canScrollNext, setCanScrollNext] = React50.useState(false);
|
|
26051
|
+
const onSelect = React50.useCallback((api2) => {
|
|
25692
26052
|
if (!api2) return;
|
|
25693
26053
|
setCanScrollPrev(api2.canScrollPrev());
|
|
25694
26054
|
setCanScrollNext(api2.canScrollNext());
|
|
25695
26055
|
}, []);
|
|
25696
|
-
const scrollPrev =
|
|
26056
|
+
const scrollPrev = React50.useCallback(() => {
|
|
25697
26057
|
api?.scrollPrev();
|
|
25698
26058
|
}, [api]);
|
|
25699
|
-
const scrollNext =
|
|
26059
|
+
const scrollNext = React50.useCallback(() => {
|
|
25700
26060
|
api?.scrollNext();
|
|
25701
26061
|
}, [api]);
|
|
25702
|
-
const handleKeyDown =
|
|
26062
|
+
const handleKeyDown = React50.useCallback(
|
|
25703
26063
|
(event) => {
|
|
25704
26064
|
if (event.key === "ArrowLeft") {
|
|
25705
26065
|
event.preventDefault();
|
|
@@ -25711,11 +26071,11 @@ function Carousel({
|
|
|
25711
26071
|
},
|
|
25712
26072
|
[scrollPrev, scrollNext]
|
|
25713
26073
|
);
|
|
25714
|
-
|
|
26074
|
+
React50.useEffect(() => {
|
|
25715
26075
|
if (!api || !setApi) return;
|
|
25716
26076
|
setApi(api);
|
|
25717
26077
|
}, [api, setApi]);
|
|
25718
|
-
|
|
26078
|
+
React50.useEffect(() => {
|
|
25719
26079
|
if (!api) return;
|
|
25720
26080
|
onSelect(api);
|
|
25721
26081
|
api.on("reInit", onSelect);
|
|
@@ -26639,7 +26999,7 @@ function FeatureThreeColumnValues({
|
|
|
26639
26999
|
patternOpacity,
|
|
26640
27000
|
patternClassName
|
|
26641
27001
|
}) {
|
|
26642
|
-
const renderValueIcon =
|
|
27002
|
+
const renderValueIcon = React50.useCallback(
|
|
26643
27003
|
(value) => {
|
|
26644
27004
|
if (value.icon) return value.icon;
|
|
26645
27005
|
if (value.iconName)
|
|
@@ -27141,7 +27501,7 @@ function FeatureTabbedContentImage({
|
|
|
27141
27501
|
patternOpacity,
|
|
27142
27502
|
patternClassName
|
|
27143
27503
|
}) {
|
|
27144
|
-
const renderFeatures =
|
|
27504
|
+
const renderFeatures = React50.useCallback(
|
|
27145
27505
|
(slide) => {
|
|
27146
27506
|
if (slide.featuresSlot) return slide.featuresSlot;
|
|
27147
27507
|
if (!slide.features || slide.features.length === 0) return null;
|
|
@@ -27165,7 +27525,7 @@ function FeatureTabbedContentImage({
|
|
|
27165
27525
|
},
|
|
27166
27526
|
[]
|
|
27167
27527
|
);
|
|
27168
|
-
const renderActions =
|
|
27528
|
+
const renderActions = React50.useCallback(
|
|
27169
27529
|
(slide) => {
|
|
27170
27530
|
if (slide.actionsSlot) return slide.actionsSlot;
|
|
27171
27531
|
if (!slide.actions || slide.actions.length === 0) return null;
|
|
@@ -27208,7 +27568,7 @@ function FeatureTabbedContentImage({
|
|
|
27208
27568
|
},
|
|
27209
27569
|
[]
|
|
27210
27570
|
);
|
|
27211
|
-
const renderImage =
|
|
27571
|
+
const renderImage = React50.useCallback(
|
|
27212
27572
|
(slide) => {
|
|
27213
27573
|
if (slide.imageSlot) return slide.imageSlot;
|
|
27214
27574
|
if (!slide.image) return null;
|
|
@@ -27444,7 +27804,7 @@ function FeatureUtilityCardsGrid({
|
|
|
27444
27804
|
}
|
|
27445
27805
|
);
|
|
27446
27806
|
}, [learnMoreSlot, learnMoreAction, background]);
|
|
27447
|
-
const renderUtilityImage =
|
|
27807
|
+
const renderUtilityImage = React50.useCallback(
|
|
27448
27808
|
(utility) => {
|
|
27449
27809
|
if (utility.imageSlot) return utility.imageSlot;
|
|
27450
27810
|
if (utility.image) {
|
|
@@ -27622,7 +27982,7 @@ function FeatureBentoUtilities({
|
|
|
27622
27982
|
patternOpacity,
|
|
27623
27983
|
patternClassName
|
|
27624
27984
|
}) {
|
|
27625
|
-
const renderCard =
|
|
27985
|
+
const renderCard = React50.useCallback(
|
|
27626
27986
|
(card, index) => {
|
|
27627
27987
|
const hasImage = card.imageSrc || card.imageSlot;
|
|
27628
27988
|
const cardClasses = cn(
|
|
@@ -27678,7 +28038,7 @@ function FeatureBentoUtilities({
|
|
|
27678
28038
|
},
|
|
27679
28039
|
[optixFlowConfig]
|
|
27680
28040
|
);
|
|
27681
|
-
const renderColumn =
|
|
28041
|
+
const renderColumn = React50.useCallback(
|
|
27682
28042
|
(cards, slot) => {
|
|
27683
28043
|
if (slot) return slot;
|
|
27684
28044
|
if (!cards || cards.length === 0) return null;
|
|
@@ -28924,7 +29284,7 @@ function FeatureBentoImageGrid({
|
|
|
28924
29284
|
patternOpacity,
|
|
28925
29285
|
patternClassName
|
|
28926
29286
|
}) {
|
|
28927
|
-
const renderItemIcon =
|
|
29287
|
+
const renderItemIcon = React50.useCallback(
|
|
28928
29288
|
(item) => {
|
|
28929
29289
|
if (item.icon) return item.icon;
|
|
28930
29290
|
if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 24 });
|
|
@@ -28932,7 +29292,7 @@ function FeatureBentoImageGrid({
|
|
|
28932
29292
|
},
|
|
28933
29293
|
[]
|
|
28934
29294
|
);
|
|
28935
|
-
const renderItemImage =
|
|
29295
|
+
const renderItemImage = React50.useCallback(
|
|
28936
29296
|
(item, imageClassName) => {
|
|
28937
29297
|
if (item.imageSlot) return item.imageSlot;
|
|
28938
29298
|
if (item.imageSrc) {
|
|
@@ -28951,7 +29311,7 @@ function FeatureBentoImageGrid({
|
|
|
28951
29311
|
},
|
|
28952
29312
|
[optixFlowConfig]
|
|
28953
29313
|
);
|
|
28954
|
-
const renderLargeCard =
|
|
29314
|
+
const renderLargeCard = React50.useCallback(
|
|
28955
29315
|
(item) => {
|
|
28956
29316
|
const iconContent = renderItemIcon(item);
|
|
28957
29317
|
const hasIconBadgeContent = iconContent || item.iconBadge;
|
|
@@ -29039,7 +29399,7 @@ function FeatureBentoImageGrid({
|
|
|
29039
29399
|
},
|
|
29040
29400
|
[largeCardClassName, renderItemImage, renderItemIcon]
|
|
29041
29401
|
);
|
|
29042
|
-
const renderSmallCard =
|
|
29402
|
+
const renderSmallCard = React50.useCallback(
|
|
29043
29403
|
(item, index) => {
|
|
29044
29404
|
const iconContent = renderItemIcon(item);
|
|
29045
29405
|
const hasIconBadgeContent = iconContent || item.iconBadge;
|
|
@@ -29654,7 +30014,7 @@ function FeatureAccordionImage({
|
|
|
29654
30014
|
patternOpacity,
|
|
29655
30015
|
patternClassName
|
|
29656
30016
|
}) {
|
|
29657
|
-
const [activeItem, setActiveItem] =
|
|
30017
|
+
const [activeItem, setActiveItem] = React50.useState(defaultValue || "item-0");
|
|
29658
30018
|
const activeIndex = parseInt(activeItem.replace("item-", ""), 10) || 0;
|
|
29659
30019
|
const currentImage = items?.[activeIndex] || items?.[0];
|
|
29660
30020
|
const accordionItemsContent = useMemo(() => {
|
|
@@ -29803,7 +30163,7 @@ function FeatureCapabilitiesGrid({
|
|
|
29803
30163
|
patternOpacity,
|
|
29804
30164
|
patternClassName
|
|
29805
30165
|
}) {
|
|
29806
|
-
const renderItemIcon =
|
|
30166
|
+
const renderItemIcon = React50.useCallback(
|
|
29807
30167
|
(item) => {
|
|
29808
30168
|
if (item.icon) return item.icon;
|
|
29809
30169
|
if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 20 });
|
|
@@ -29955,7 +30315,7 @@ function FeatureCapabilitiesGrid({
|
|
|
29955
30315
|
}
|
|
29956
30316
|
);
|
|
29957
30317
|
}
|
|
29958
|
-
var TeamMemberBackgroundImageCard =
|
|
30318
|
+
var TeamMemberBackgroundImageCard = React50.forwardRef(
|
|
29959
30319
|
({ className, imageUrl, imageAlt, children, optixFlowConfig, background, ...props }, ref) => {
|
|
29960
30320
|
return /* @__PURE__ */ jsxs(
|
|
29961
30321
|
"div",
|
|
@@ -30003,7 +30363,7 @@ function TeamMediaShowcase({
|
|
|
30003
30363
|
actionClassName,
|
|
30004
30364
|
optixFlowConfig
|
|
30005
30365
|
}) {
|
|
30006
|
-
const renderItems =
|
|
30366
|
+
const renderItems = React50.useMemo(() => {
|
|
30007
30367
|
if (itemsSlot) return itemsSlot;
|
|
30008
30368
|
return items.map((member, idx) => {
|
|
30009
30369
|
const imageAlt = member.imageAlt || (member.name && typeof member.name === "string" && member.name.trim() !== "" ? member.name : `member-${idx}`);
|
|
@@ -30101,7 +30461,7 @@ function TeamSimpleGrid({
|
|
|
30101
30461
|
memberNameClassName,
|
|
30102
30462
|
memberRoleClassName
|
|
30103
30463
|
}) {
|
|
30104
|
-
const renderMembers =
|
|
30464
|
+
const renderMembers = React50.useMemo(() => {
|
|
30105
30465
|
if (membersSlot) return membersSlot;
|
|
30106
30466
|
if (!members || members.length === 0) return null;
|
|
30107
30467
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -30263,7 +30623,7 @@ function FooterBrandLinksContact({
|
|
|
30263
30623
|
linkListClassName,
|
|
30264
30624
|
linkItemClassName
|
|
30265
30625
|
]);
|
|
30266
|
-
const contactItemsContent =
|
|
30626
|
+
const contactItemsContent = React50.useMemo(() => {
|
|
30267
30627
|
if (!contactItems || contactItems.length === 0) return null;
|
|
30268
30628
|
return contactItems.map((item, idx) => /* @__PURE__ */ jsxs(
|
|
30269
30629
|
"div",
|
|
@@ -30621,7 +30981,7 @@ function TeamSocialGrid({
|
|
|
30621
30981
|
memberRoleClassName,
|
|
30622
30982
|
socialLinksClassName
|
|
30623
30983
|
}) {
|
|
30624
|
-
const renderMembers =
|
|
30984
|
+
const renderMembers = React50.useMemo(() => {
|
|
30625
30985
|
if (membersSlot) return membersSlot;
|
|
30626
30986
|
if (!members || members.length === 0) return null;
|
|
30627
30987
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -30773,7 +31133,7 @@ function TeamGradientCards({
|
|
|
30773
31133
|
memberRoleClassName,
|
|
30774
31134
|
socialLinksClassName
|
|
30775
31135
|
}) {
|
|
30776
|
-
const renderMembers =
|
|
31136
|
+
const renderMembers = React50.useMemo(() => {
|
|
30777
31137
|
if (membersSlot) return membersSlot;
|
|
30778
31138
|
if (!members || members.length === 0) return null;
|
|
30779
31139
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -30929,7 +31289,7 @@ function TeamBioBadges({
|
|
|
30929
31289
|
memberBioClassName,
|
|
30930
31290
|
socialLinksClassName
|
|
30931
31291
|
}) {
|
|
30932
|
-
const renderMembers =
|
|
31292
|
+
const renderMembers = React50.useMemo(() => {
|
|
30933
31293
|
if (membersSlot) return membersSlot;
|
|
30934
31294
|
if (!members || members.length === 0) return null;
|
|
30935
31295
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -31106,7 +31466,7 @@ function TeamExpertiseCards({
|
|
|
31106
31466
|
ctaDescriptionClassName,
|
|
31107
31467
|
ctaButtonClassName
|
|
31108
31468
|
}) {
|
|
31109
|
-
const renderMembers =
|
|
31469
|
+
const renderMembers = React50.useMemo(() => {
|
|
31110
31470
|
if (membersSlot) return membersSlot;
|
|
31111
31471
|
if (!members || members.length === 0) return null;
|
|
31112
31472
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -31183,7 +31543,7 @@ function TeamExpertiseCards({
|
|
|
31183
31543
|
member.id
|
|
31184
31544
|
));
|
|
31185
31545
|
}, [membersSlot, members, background, memberCardClassName, avatarClassName, memberNameClassName, memberRoleClassName, departmentBadgeClassName, memberDescriptionClassName, expertiseClassName]);
|
|
31186
|
-
const renderCta =
|
|
31546
|
+
const renderCta = React50.useMemo(() => {
|
|
31187
31547
|
if (ctaSlot) return ctaSlot;
|
|
31188
31548
|
return /* @__PURE__ */ jsxs(
|
|
31189
31549
|
"div",
|
|
@@ -31299,7 +31659,7 @@ function TeamCompactGrid({
|
|
|
31299
31659
|
ctaDescriptionClassName,
|
|
31300
31660
|
ctaButtonClassName
|
|
31301
31661
|
}) {
|
|
31302
|
-
const renderMembers =
|
|
31662
|
+
const renderMembers = React50.useMemo(() => {
|
|
31303
31663
|
if (membersSlot) return membersSlot;
|
|
31304
31664
|
if (!members || members.length === 0) return null;
|
|
31305
31665
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -31354,7 +31714,7 @@ function TeamCompactGrid({
|
|
|
31354
31714
|
member.id
|
|
31355
31715
|
));
|
|
31356
31716
|
}, [membersSlot, members, background, memberCardClassName, avatarClassName, memberNameClassName, memberRoleClassName, departmentBadgeClassName]);
|
|
31357
|
-
const renderCta =
|
|
31717
|
+
const renderCta = React50.useMemo(() => {
|
|
31358
31718
|
if (ctaSlot) return ctaSlot;
|
|
31359
31719
|
return /* @__PURE__ */ jsxs(
|
|
31360
31720
|
"div",
|
|
@@ -31458,7 +31818,7 @@ function TeamInvestorShowcase({
|
|
|
31458
31818
|
investorCompanyClassName,
|
|
31459
31819
|
optixFlowConfig
|
|
31460
31820
|
}) {
|
|
31461
|
-
const renderInvestors =
|
|
31821
|
+
const renderInvestors = React50.useMemo(() => {
|
|
31462
31822
|
if (investorsSlot) return investorsSlot;
|
|
31463
31823
|
if (!investors || investors.length === 0) return null;
|
|
31464
31824
|
return investors.map((investor) => /* @__PURE__ */ jsxs("div", { className: investorCardClassName, children: [
|
|
@@ -31532,7 +31892,7 @@ function TeamCarouselExperience({
|
|
|
31532
31892
|
memberRoleClassName,
|
|
31533
31893
|
optixFlowConfig
|
|
31534
31894
|
}) {
|
|
31535
|
-
const renderMembers =
|
|
31895
|
+
const renderMembers = React50.useMemo(() => {
|
|
31536
31896
|
if (membersSlot) return membersSlot;
|
|
31537
31897
|
if (!members || members.length === 0) return null;
|
|
31538
31898
|
return members.map((member, idx) => /* @__PURE__ */ jsx(CarouselItem, { className: "max-w-72", children: /* @__PURE__ */ jsxs(
|
|
@@ -31666,20 +32026,20 @@ function TeamFilterableSearch({
|
|
|
31666
32026
|
emptyStateClassName,
|
|
31667
32027
|
emptyStateMessage
|
|
31668
32028
|
}) {
|
|
31669
|
-
const [searchQuery, setSearchQuery] =
|
|
31670
|
-
const [selectedDepartment, setSelectedDepartment] =
|
|
31671
|
-
const departments =
|
|
32029
|
+
const [searchQuery, setSearchQuery] = React50.useState("");
|
|
32030
|
+
const [selectedDepartment, setSelectedDepartment] = React50.useState("All");
|
|
32031
|
+
const departments = React50.useMemo(() => {
|
|
31672
32032
|
const depts = new Set(members.map((m) => m.department));
|
|
31673
32033
|
return ["All", ...Array.from(depts)];
|
|
31674
32034
|
}, [members]);
|
|
31675
|
-
const filteredMembers =
|
|
32035
|
+
const filteredMembers = React50.useMemo(() => {
|
|
31676
32036
|
return members.filter((member) => {
|
|
31677
32037
|
const matchesSearch = searchQuery === "" || member.name.toLowerCase().includes(searchQuery.toLowerCase()) || member.role.toLowerCase().includes(searchQuery.toLowerCase()) || member.description.toLowerCase().includes(searchQuery.toLowerCase());
|
|
31678
32038
|
const matchesDepartment = selectedDepartment === "All" || member.department === selectedDepartment;
|
|
31679
32039
|
return matchesSearch && matchesDepartment;
|
|
31680
32040
|
});
|
|
31681
32041
|
}, [members, searchQuery, selectedDepartment]);
|
|
31682
|
-
const renderFilters =
|
|
32042
|
+
const renderFilters = React50.useMemo(() => {
|
|
31683
32043
|
if (filtersSlot) return filtersSlot;
|
|
31684
32044
|
return /* @__PURE__ */ jsxs(
|
|
31685
32045
|
"div",
|
|
@@ -31734,7 +32094,7 @@ function TeamFilterableSearch({
|
|
|
31734
32094
|
selectedDepartment,
|
|
31735
32095
|
filterButtonClassName
|
|
31736
32096
|
]);
|
|
31737
|
-
const renderMembers =
|
|
32097
|
+
const renderMembers = React50.useMemo(() => {
|
|
31738
32098
|
if (membersSlot) return membersSlot;
|
|
31739
32099
|
return filteredMembers.map((member) => /* @__PURE__ */ jsx(
|
|
31740
32100
|
"div",
|
|
@@ -31921,7 +32281,7 @@ function TeamCompactCta({
|
|
|
31921
32281
|
memberRoleClassName,
|
|
31922
32282
|
ctaClassName
|
|
31923
32283
|
}) {
|
|
31924
|
-
const renderMembers =
|
|
32284
|
+
const renderMembers = React50.useMemo(() => {
|
|
31925
32285
|
if (membersSlot) return membersSlot;
|
|
31926
32286
|
if (!members || members.length === 0) return null;
|
|
31927
32287
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -31949,7 +32309,7 @@ function TeamCompactCta({
|
|
|
31949
32309
|
member.id
|
|
31950
32310
|
));
|
|
31951
32311
|
}, [membersSlot, members, memberCardClassName, avatarClassName, memberNameClassName, memberRoleClassName, background]);
|
|
31952
|
-
const renderCta =
|
|
32312
|
+
const renderCta = React50.useMemo(() => {
|
|
31953
32313
|
if (ctaSlot) return ctaSlot;
|
|
31954
32314
|
return /* @__PURE__ */ jsx(
|
|
31955
32315
|
Pressable,
|
|
@@ -32040,7 +32400,7 @@ function TeamHoverHighlight({
|
|
|
32040
32400
|
socialLinksClassName,
|
|
32041
32401
|
optixFlowConfig
|
|
32042
32402
|
}) {
|
|
32043
|
-
const renderMembers =
|
|
32403
|
+
const renderMembers = React50.useMemo(() => {
|
|
32044
32404
|
if (membersSlot) return membersSlot;
|
|
32045
32405
|
if (!members || members.length === 0) return null;
|
|
32046
32406
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -32189,7 +32549,7 @@ function TeamSocialCards({
|
|
|
32189
32549
|
socialLinksClassName,
|
|
32190
32550
|
optixFlowConfig
|
|
32191
32551
|
}) {
|
|
32192
|
-
const renderMembers =
|
|
32552
|
+
const renderMembers = React50.useMemo(() => {
|
|
32193
32553
|
if (membersSlot) return membersSlot;
|
|
32194
32554
|
if (!members || members.length === 0) return null;
|
|
32195
32555
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -32359,7 +32719,7 @@ function TeamGridAnimated({
|
|
|
32359
32719
|
"hsl(var(--muted))",
|
|
32360
32720
|
"hsl(var(--warning)/0.2)"
|
|
32361
32721
|
];
|
|
32362
|
-
const renderMembers =
|
|
32722
|
+
const renderMembers = React50.useMemo(() => {
|
|
32363
32723
|
if (membersSlot) return membersSlot;
|
|
32364
32724
|
if (!members || members.length === 0) return null;
|
|
32365
32725
|
return members.map((member, index) => /* @__PURE__ */ jsxs(
|
|
@@ -32459,7 +32819,7 @@ function TeamGridAnimated({
|
|
|
32459
32819
|
memberDesignationClassName,
|
|
32460
32820
|
socialLinksClassName
|
|
32461
32821
|
]);
|
|
32462
|
-
const renderSocialLinksMain =
|
|
32822
|
+
const renderSocialLinksMain = React50.useMemo(() => {
|
|
32463
32823
|
if (socialLinksMainSlot) return socialLinksMainSlot;
|
|
32464
32824
|
if (!socialLinksMain || socialLinksMain.length === 0) return null;
|
|
32465
32825
|
return /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-center gap-4 py-4 md:justify-center", children: [
|
|
@@ -32576,7 +32936,7 @@ function TeamDepartmentSections({
|
|
|
32576
32936
|
memberRoleClassName,
|
|
32577
32937
|
optixFlowConfig
|
|
32578
32938
|
}) {
|
|
32579
|
-
const renderDepartments =
|
|
32939
|
+
const renderDepartments = React50.useMemo(() => {
|
|
32580
32940
|
if (departmentsSlot) return departmentsSlot;
|
|
32581
32941
|
if (!departments || departments.length === 0) return null;
|
|
32582
32942
|
return departments.map((department, deptIndex) => /* @__PURE__ */ jsxs(
|
|
@@ -32680,7 +33040,7 @@ function TeamAlternatingBios({
|
|
|
32680
33040
|
socialLinksClassName,
|
|
32681
33041
|
optixFlowConfig
|
|
32682
33042
|
}) {
|
|
32683
|
-
const renderMembers =
|
|
33043
|
+
const renderMembers = React50.useMemo(() => {
|
|
32684
33044
|
if (membersSlot) return membersSlot;
|
|
32685
33045
|
if (!members || members.length === 0) return null;
|
|
32686
33046
|
return members.map((member, index) => /* @__PURE__ */ jsxs(
|
|
@@ -32862,7 +33222,7 @@ function TeamAvatarSocial({
|
|
|
32862
33222
|
memberRoleClassName,
|
|
32863
33223
|
socialLinksClassName
|
|
32864
33224
|
}) {
|
|
32865
|
-
const renderMembers =
|
|
33225
|
+
const renderMembers = React50.useMemo(() => {
|
|
32866
33226
|
if (membersSlot) return membersSlot;
|
|
32867
33227
|
if (!members || members.length === 0) return null;
|
|
32868
33228
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -33005,7 +33365,7 @@ function TeamHoverOverlay({
|
|
|
33005
33365
|
socialLinksClassName,
|
|
33006
33366
|
optixFlowConfig
|
|
33007
33367
|
}) {
|
|
33008
|
-
const renderMembers =
|
|
33368
|
+
const renderMembers = React50.useMemo(() => {
|
|
33009
33369
|
if (membersSlot) return membersSlot;
|
|
33010
33370
|
if (!members || members.length === 0) return null;
|
|
33011
33371
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -33181,14 +33541,14 @@ function TeamRoleFilter({
|
|
|
33181
33541
|
socialLinksClassName,
|
|
33182
33542
|
optixFlowConfig
|
|
33183
33543
|
}) {
|
|
33184
|
-
const [selectedRole, setSelectedRole] =
|
|
33185
|
-
const filteredMembers =
|
|
33544
|
+
const [selectedRole, setSelectedRole] = React50.useState("All");
|
|
33545
|
+
const filteredMembers = React50.useMemo(() => {
|
|
33186
33546
|
if (!members) return [];
|
|
33187
33547
|
return members.filter(
|
|
33188
33548
|
(member) => selectedRole === "All" ? true : member.role === selectedRole
|
|
33189
33549
|
);
|
|
33190
33550
|
}, [members, selectedRole]);
|
|
33191
|
-
const renderRoles =
|
|
33551
|
+
const renderRoles = React50.useMemo(() => {
|
|
33192
33552
|
if (rolesSlot) return rolesSlot;
|
|
33193
33553
|
if (!roles) return null;
|
|
33194
33554
|
return /* @__PURE__ */ jsx(
|
|
@@ -33212,7 +33572,7 @@ function TeamRoleFilter({
|
|
|
33212
33572
|
}
|
|
33213
33573
|
);
|
|
33214
33574
|
}, [rolesSlot, filtersClassName, roles, selectedRole, filterButtonClassName]);
|
|
33215
|
-
const renderMembers =
|
|
33575
|
+
const renderMembers = React50.useMemo(() => {
|
|
33216
33576
|
if (membersSlot) return membersSlot;
|
|
33217
33577
|
return filteredMembers.map((member) => /* @__PURE__ */ jsx(
|
|
33218
33578
|
Card,
|
|
@@ -33372,7 +33732,7 @@ function TeamContactCards({
|
|
|
33372
33732
|
socialLinksClassName,
|
|
33373
33733
|
optixFlowConfig
|
|
33374
33734
|
}) {
|
|
33375
|
-
const getStatusColor =
|
|
33735
|
+
const getStatusColor = React50.useCallback((status) => {
|
|
33376
33736
|
switch (status) {
|
|
33377
33737
|
case "active":
|
|
33378
33738
|
return "bg-success";
|
|
@@ -33382,7 +33742,7 @@ function TeamContactCards({
|
|
|
33382
33742
|
return getTextColor(background, "muted");
|
|
33383
33743
|
}
|
|
33384
33744
|
}, [background]);
|
|
33385
|
-
const renderMembers =
|
|
33745
|
+
const renderMembers = React50.useMemo(() => {
|
|
33386
33746
|
if (membersSlot) return membersSlot;
|
|
33387
33747
|
if (!members || members.length === 0) return null;
|
|
33388
33748
|
return members.map((member) => /* @__PURE__ */ jsx(Card, { className: cn("p-0", memberCardClassName), children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6!", children: [
|
|
@@ -33589,7 +33949,7 @@ function TeamLargeImages({
|
|
|
33589
33949
|
socialLinksClassName,
|
|
33590
33950
|
optixFlowConfig
|
|
33591
33951
|
}) {
|
|
33592
|
-
const renderMembers =
|
|
33952
|
+
const renderMembers = React50.useMemo(() => {
|
|
33593
33953
|
if (membersSlot) return membersSlot;
|
|
33594
33954
|
if (!members || members.length === 0) return null;
|
|
33595
33955
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -33764,7 +34124,7 @@ function TeamSkillBadges({
|
|
|
33764
34124
|
socialLinksClassName,
|
|
33765
34125
|
optixFlowConfig
|
|
33766
34126
|
}) {
|
|
33767
|
-
const renderMembers =
|
|
34127
|
+
const renderMembers = React50.useMemo(() => {
|
|
33768
34128
|
if (membersSlot) return membersSlot;
|
|
33769
34129
|
if (!members || members.length === 0) return null;
|
|
33770
34130
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -33954,7 +34314,7 @@ function TeamTestimonialStats({
|
|
|
33954
34314
|
socialLinksClassName,
|
|
33955
34315
|
optixFlowConfig
|
|
33956
34316
|
}) {
|
|
33957
|
-
const renderMembers =
|
|
34317
|
+
const renderMembers = React50.useMemo(() => {
|
|
33958
34318
|
if (membersSlot) return membersSlot;
|
|
33959
34319
|
if (!members || members.length === 0) return null;
|
|
33960
34320
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -38098,7 +38458,7 @@ function BlogGridAuthorCardsComponent({
|
|
|
38098
38458
|
pattern,
|
|
38099
38459
|
patternOpacity
|
|
38100
38460
|
}) {
|
|
38101
|
-
const viewAllActionContent =
|
|
38461
|
+
const viewAllActionContent = React50.useMemo(() => {
|
|
38102
38462
|
if (viewAllSlot) return viewAllSlot;
|
|
38103
38463
|
if (!viewAllAction) return null;
|
|
38104
38464
|
const {
|
|
@@ -38123,7 +38483,7 @@ function BlogGridAuthorCardsComponent({
|
|
|
38123
38483
|
}
|
|
38124
38484
|
);
|
|
38125
38485
|
}, [viewAllSlot, viewAllAction]);
|
|
38126
|
-
const postsContent =
|
|
38486
|
+
const postsContent = React50.useMemo(() => {
|
|
38127
38487
|
if (postsSlot) return postsSlot;
|
|
38128
38488
|
if (!posts || posts.length === 0) return null;
|
|
38129
38489
|
return posts.map((post) => {
|
|
@@ -38235,7 +38595,7 @@ function BlogCardsTaglineCta({
|
|
|
38235
38595
|
pattern,
|
|
38236
38596
|
patternOpacity
|
|
38237
38597
|
}) {
|
|
38238
|
-
const ctaActionContent =
|
|
38598
|
+
const ctaActionContent = React50.useMemo(() => {
|
|
38239
38599
|
if (ctaSlot) return ctaSlot;
|
|
38240
38600
|
if (!ctaAction) return null;
|
|
38241
38601
|
const {
|
|
@@ -38263,7 +38623,7 @@ function BlogCardsTaglineCta({
|
|
|
38263
38623
|
}
|
|
38264
38624
|
);
|
|
38265
38625
|
}, [ctaSlot, ctaAction, ctaClassName]);
|
|
38266
|
-
const postsContent =
|
|
38626
|
+
const postsContent = React50.useMemo(() => {
|
|
38267
38627
|
if (postsSlot) return postsSlot;
|
|
38268
38628
|
if (!posts || posts.length === 0) return null;
|
|
38269
38629
|
return posts.map((post) => {
|
|
@@ -38409,7 +38769,7 @@ function BlogCardsReadTime({
|
|
|
38409
38769
|
pattern,
|
|
38410
38770
|
patternOpacity
|
|
38411
38771
|
}) {
|
|
38412
|
-
const renderedViewAllAction =
|
|
38772
|
+
const renderedViewAllAction = React50.useMemo(() => {
|
|
38413
38773
|
if (viewAllSlot) return viewAllSlot;
|
|
38414
38774
|
if (!viewAllAction) return null;
|
|
38415
38775
|
const {
|
|
@@ -38426,7 +38786,7 @@ function BlogCardsReadTime({
|
|
|
38426
38786
|
iconAfter
|
|
38427
38787
|
] }) });
|
|
38428
38788
|
}, [viewAllSlot, viewAllAction]);
|
|
38429
|
-
const renderedPosts =
|
|
38789
|
+
const renderedPosts = React50.useMemo(() => {
|
|
38430
38790
|
if (postsSlot) return postsSlot;
|
|
38431
38791
|
if (!posts || posts.length === 0) return null;
|
|
38432
38792
|
return posts.map((post) => {
|
|
@@ -38563,7 +38923,7 @@ function BlogCategoryOverlay({
|
|
|
38563
38923
|
pattern,
|
|
38564
38924
|
patternOpacity
|
|
38565
38925
|
}) {
|
|
38566
|
-
const viewAllActionContent =
|
|
38926
|
+
const viewAllActionContent = React50.useMemo(() => {
|
|
38567
38927
|
if (viewAllSlot) return viewAllSlot;
|
|
38568
38928
|
if (!viewAllAction) return null;
|
|
38569
38929
|
const {
|
|
@@ -38591,7 +38951,7 @@ function BlogCategoryOverlay({
|
|
|
38591
38951
|
}
|
|
38592
38952
|
);
|
|
38593
38953
|
}, [viewAllSlot, viewAllAction, viewAllClassName]);
|
|
38594
|
-
const postsContent =
|
|
38954
|
+
const postsContent = React50.useMemo(() => {
|
|
38595
38955
|
if (postsSlot) return postsSlot;
|
|
38596
38956
|
if (!posts || posts.length === 0) return null;
|
|
38597
38957
|
return posts.map((post) => {
|
|
@@ -38739,7 +39099,7 @@ function BlogFeaturedPopular({
|
|
|
38739
39099
|
}) {
|
|
38740
39100
|
const featuredPost = posts?.[0];
|
|
38741
39101
|
const popularPosts = posts?.slice(1);
|
|
38742
|
-
const renderedFeaturedPost =
|
|
39102
|
+
const renderedFeaturedPost = React50.useMemo(() => {
|
|
38743
39103
|
if (featuredSlot) return featuredSlot;
|
|
38744
39104
|
if (!featuredPost) return null;
|
|
38745
39105
|
const postHref = featuredPost.href || featuredPost.url || featuredPost.link;
|
|
@@ -38791,7 +39151,7 @@ function BlogFeaturedPopular({
|
|
|
38791
39151
|
featuredContentClassName,
|
|
38792
39152
|
optixFlowConfig
|
|
38793
39153
|
]);
|
|
38794
|
-
const renderedPopularPosts =
|
|
39154
|
+
const renderedPopularPosts = React50.useMemo(() => {
|
|
38795
39155
|
if (postsSlot) return postsSlot;
|
|
38796
39156
|
if (!popularPosts || popularPosts.length === 0) return null;
|
|
38797
39157
|
return popularPosts.map((post) => {
|
|
@@ -38908,7 +39268,7 @@ function BlogRelatedArticles({
|
|
|
38908
39268
|
pattern,
|
|
38909
39269
|
patternOpacity
|
|
38910
39270
|
}) {
|
|
38911
|
-
const renderedSeeAllAction =
|
|
39271
|
+
const renderedSeeAllAction = React50.useMemo(() => {
|
|
38912
39272
|
if (seeAllSlot) return seeAllSlot;
|
|
38913
39273
|
if (!seeAllAction) return null;
|
|
38914
39274
|
const {
|
|
@@ -38937,7 +39297,7 @@ function BlogRelatedArticles({
|
|
|
38937
39297
|
}
|
|
38938
39298
|
);
|
|
38939
39299
|
}, [seeAllSlot, seeAllAction, seeAllClassName]);
|
|
38940
|
-
const renderedArticles =
|
|
39300
|
+
const renderedArticles = React50.useMemo(() => {
|
|
38941
39301
|
if (articlesSlot) return articlesSlot;
|
|
38942
39302
|
if (!articles || articles.length === 0) return null;
|
|
38943
39303
|
return articles.map((item) => {
|
|
@@ -39245,7 +39605,7 @@ function BlogHorizontalCards({
|
|
|
39245
39605
|
pattern,
|
|
39246
39606
|
patternOpacity
|
|
39247
39607
|
}) {
|
|
39248
|
-
const ctaContent =
|
|
39608
|
+
const ctaContent = React50.useMemo(() => {
|
|
39249
39609
|
if (ctaSlot) return ctaSlot;
|
|
39250
39610
|
if (!ctaAction) return null;
|
|
39251
39611
|
const {
|
|
@@ -39270,7 +39630,7 @@ function BlogHorizontalCards({
|
|
|
39270
39630
|
}
|
|
39271
39631
|
);
|
|
39272
39632
|
}, [ctaSlot, ctaAction]);
|
|
39273
|
-
const postsContent =
|
|
39633
|
+
const postsContent = React50.useMemo(() => {
|
|
39274
39634
|
if (postsSlot) return postsSlot;
|
|
39275
39635
|
if (!posts || posts.length === 0) return null;
|
|
39276
39636
|
return posts.map((post) => {
|
|
@@ -39452,7 +39812,7 @@ function BreadcrumbSeparator({
|
|
|
39452
39812
|
);
|
|
39453
39813
|
}
|
|
39454
39814
|
var POSTS_PER_PAGE = 6;
|
|
39455
|
-
var BlogCard =
|
|
39815
|
+
var BlogCard = React50.memo(function BlogCard2({
|
|
39456
39816
|
post,
|
|
39457
39817
|
optixFlowConfig,
|
|
39458
39818
|
className
|
|
@@ -39491,7 +39851,7 @@ var BlogCard = React51.memo(function BlogCard2({
|
|
|
39491
39851
|
] })
|
|
39492
39852
|
] }) });
|
|
39493
39853
|
});
|
|
39494
|
-
var FilterForm =
|
|
39854
|
+
var FilterForm = React50.memo(function FilterForm2({
|
|
39495
39855
|
categories,
|
|
39496
39856
|
selectedCategories,
|
|
39497
39857
|
onCategoryChange,
|
|
@@ -39524,7 +39884,7 @@ var FilterForm = React51.memo(function FilterForm2({
|
|
|
39524
39884
|
}
|
|
39525
39885
|
);
|
|
39526
39886
|
});
|
|
39527
|
-
var BreadcrumbBlog =
|
|
39887
|
+
var BreadcrumbBlog = React50.memo(function BreadcrumbBlog2({
|
|
39528
39888
|
breadcrumb
|
|
39529
39889
|
}) {
|
|
39530
39890
|
return /* @__PURE__ */ jsx(Breadcrumb, { children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumb.map((item, i) => {
|
|
@@ -39606,12 +39966,12 @@ function BlogFilteredResultsComponent({
|
|
|
39606
39966
|
}, [posts, selectedCategories]);
|
|
39607
39967
|
const postsToDisplay = filteredPosts.length > 0 ? filteredPosts : posts || [];
|
|
39608
39968
|
const hasMore = visibleCount < postsToDisplay.length;
|
|
39609
|
-
const breadcrumbContent =
|
|
39969
|
+
const breadcrumbContent = React50.useMemo(() => {
|
|
39610
39970
|
if (breadcrumbSlot) return breadcrumbSlot;
|
|
39611
39971
|
if (!breadcrumb || breadcrumb.length === 0) return null;
|
|
39612
39972
|
return /* @__PURE__ */ jsx(BreadcrumbBlog, { breadcrumb });
|
|
39613
39973
|
}, [breadcrumbSlot, breadcrumb]);
|
|
39614
|
-
const primaryPostContent =
|
|
39974
|
+
const primaryPostContent = React50.useMemo(() => {
|
|
39615
39975
|
if (primaryPostSlot) return primaryPostSlot;
|
|
39616
39976
|
if (!primaryPost) return null;
|
|
39617
39977
|
return /* @__PURE__ */ jsx(
|
|
@@ -39623,7 +39983,7 @@ function BlogFilteredResultsComponent({
|
|
|
39623
39983
|
}
|
|
39624
39984
|
);
|
|
39625
39985
|
}, [primaryPostSlot, primaryPost, optixFlowConfig, postCardClassName]);
|
|
39626
|
-
const categoriesContent =
|
|
39986
|
+
const categoriesContent = React50.useMemo(() => {
|
|
39627
39987
|
if (categoriesSlot) return categoriesSlot;
|
|
39628
39988
|
if (!categories || categories.length === 0) return null;
|
|
39629
39989
|
return /* @__PURE__ */ jsx(
|
|
@@ -39642,7 +40002,7 @@ function BlogFilteredResultsComponent({
|
|
|
39642
40002
|
handleCategoryChange,
|
|
39643
40003
|
categoriesClassName
|
|
39644
40004
|
]);
|
|
39645
|
-
const postsContent =
|
|
40005
|
+
const postsContent = React50.useMemo(() => {
|
|
39646
40006
|
if (postsSlot) return postsSlot;
|
|
39647
40007
|
return postsToDisplay.slice(0, visibleCount).map((post) => {
|
|
39648
40008
|
const postKey = post.id || String(post.title) || Math.random().toString();
|
|
@@ -39663,7 +40023,7 @@ function BlogFilteredResultsComponent({
|
|
|
39663
40023
|
optixFlowConfig,
|
|
39664
40024
|
postCardClassName
|
|
39665
40025
|
]);
|
|
39666
|
-
const loadMoreContent =
|
|
40026
|
+
const loadMoreContent = React50.useMemo(() => {
|
|
39667
40027
|
if (loadMoreSlot) return loadMoreSlot;
|
|
39668
40028
|
if (!loadMoreAction || !hasMore) return null;
|
|
39669
40029
|
const {
|
|
@@ -39789,7 +40149,7 @@ function BlogMasonryFeaturedComponent({
|
|
|
39789
40149
|
}) {
|
|
39790
40150
|
const featuredPost = posts?.[0];
|
|
39791
40151
|
const otherPosts = posts?.slice(1);
|
|
39792
|
-
const featuredPostContent =
|
|
40152
|
+
const featuredPostContent = React50.useMemo(() => {
|
|
39793
40153
|
if (featuredSlot) return featuredSlot;
|
|
39794
40154
|
if (!featuredPost) return null;
|
|
39795
40155
|
const postHref = featuredPost.href || featuredPost.url || featuredPost.link || "#";
|
|
@@ -39839,7 +40199,7 @@ function BlogMasonryFeaturedComponent({
|
|
|
39839
40199
|
featuredImageClassName,
|
|
39840
40200
|
optixFlowConfig
|
|
39841
40201
|
]);
|
|
39842
|
-
const otherPostsContent =
|
|
40202
|
+
const otherPostsContent = React50.useMemo(() => {
|
|
39843
40203
|
if (postsSlot) return postsSlot;
|
|
39844
40204
|
if (!otherPosts || otherPosts.length === 0) return null;
|
|
39845
40205
|
return otherPosts.map((post) => {
|
|
@@ -39928,7 +40288,7 @@ function BlogHorizontalTimelineComponent({
|
|
|
39928
40288
|
pattern,
|
|
39929
40289
|
patternOpacity
|
|
39930
40290
|
}) {
|
|
39931
|
-
const renderPosts =
|
|
40291
|
+
const renderPosts = React50.useMemo(() => {
|
|
39932
40292
|
if (postsSlot) return postsSlot;
|
|
39933
40293
|
if (!posts || posts.length === 0) return null;
|
|
39934
40294
|
return posts.map((post, index) => {
|
|
@@ -40053,7 +40413,7 @@ function BlogGridNinePosts({
|
|
|
40053
40413
|
pattern,
|
|
40054
40414
|
patternOpacity
|
|
40055
40415
|
}) {
|
|
40056
|
-
const renderedCtaAction =
|
|
40416
|
+
const renderedCtaAction = React50.useMemo(() => {
|
|
40057
40417
|
if (ctaSlot) return ctaSlot;
|
|
40058
40418
|
if (!ctaAction) return null;
|
|
40059
40419
|
const {
|
|
@@ -40078,7 +40438,7 @@ function BlogGridNinePosts({
|
|
|
40078
40438
|
}
|
|
40079
40439
|
);
|
|
40080
40440
|
}, [ctaSlot, ctaAction]);
|
|
40081
|
-
const renderedPosts =
|
|
40441
|
+
const renderedPosts = React50.useMemo(() => {
|
|
40082
40442
|
if (postsSlot) return postsSlot;
|
|
40083
40443
|
if (!posts || posts.length === 0) return null;
|
|
40084
40444
|
return posts.map((post) => {
|
|
@@ -40176,9 +40536,9 @@ var AppleCarousel = ({
|
|
|
40176
40536
|
className,
|
|
40177
40537
|
containerClassName
|
|
40178
40538
|
}) => {
|
|
40179
|
-
const carouselRef =
|
|
40180
|
-
const [canScrollLeft, setCanScrollLeft] =
|
|
40181
|
-
const [canScrollRight, setCanScrollRight] =
|
|
40539
|
+
const carouselRef = React50__default.useRef(null);
|
|
40540
|
+
const [canScrollLeft, setCanScrollLeft] = React50__default.useState(false);
|
|
40541
|
+
const [canScrollRight, setCanScrollRight] = React50__default.useState(true);
|
|
40182
40542
|
const [currentIndex, setCurrentIndex] = useState(0);
|
|
40183
40543
|
useEffect(() => {
|
|
40184
40544
|
if (carouselRef.current) {
|
|
@@ -40415,7 +40775,7 @@ function BlogCarouselAppleComponent({
|
|
|
40415
40775
|
containerClassName,
|
|
40416
40776
|
cardClassName
|
|
40417
40777
|
}) {
|
|
40418
|
-
const carouselCards =
|
|
40778
|
+
const carouselCards = React50.useMemo(() => {
|
|
40419
40779
|
if (!posts || posts.length === 0) return [];
|
|
40420
40780
|
return posts.map(
|
|
40421
40781
|
(post, idx) => ({
|
|
@@ -40427,7 +40787,7 @@ function BlogCarouselAppleComponent({
|
|
|
40427
40787
|
})
|
|
40428
40788
|
);
|
|
40429
40789
|
}, [posts]);
|
|
40430
|
-
const cardElements =
|
|
40790
|
+
const cardElements = React50.useMemo(() => {
|
|
40431
40791
|
if (!posts || posts.length === 0) return [];
|
|
40432
40792
|
return carouselCards.map((card, index) => {
|
|
40433
40793
|
const post = posts[index];
|
|
@@ -40512,7 +40872,7 @@ function ArticleHeroProseComponent({
|
|
|
40512
40872
|
description,
|
|
40513
40873
|
authorImage
|
|
40514
40874
|
} = post ?? {};
|
|
40515
|
-
const authorContent =
|
|
40875
|
+
const authorContent = React50.useMemo(() => {
|
|
40516
40876
|
if (authorSlot) return authorSlot;
|
|
40517
40877
|
if (!authorName) return null;
|
|
40518
40878
|
return /* @__PURE__ */ jsxs(
|
|
@@ -40546,7 +40906,7 @@ function ArticleHeroProseComponent({
|
|
|
40546
40906
|
dateFormat,
|
|
40547
40907
|
authorClassName
|
|
40548
40908
|
]);
|
|
40549
|
-
const heroMediaContent =
|
|
40909
|
+
const heroMediaContent = React50.useMemo(() => {
|
|
40550
40910
|
if (heroMediaSlot) return heroMediaSlot;
|
|
40551
40911
|
if (!image) return null;
|
|
40552
40912
|
return /* @__PURE__ */ jsx(
|
|
@@ -40647,7 +41007,7 @@ function ArticleSidebarStickyComponent({
|
|
|
40647
41007
|
pattern,
|
|
40648
41008
|
patternOpacity
|
|
40649
41009
|
}) {
|
|
40650
|
-
const backLinkContent =
|
|
41010
|
+
const backLinkContent = React50.useMemo(() => {
|
|
40651
41011
|
if (backLinkSlot) return backLinkSlot;
|
|
40652
41012
|
if (!backHref && !backText) return null;
|
|
40653
41013
|
return /* @__PURE__ */ jsxs(
|
|
@@ -40665,7 +41025,7 @@ function ArticleSidebarStickyComponent({
|
|
|
40665
41025
|
}
|
|
40666
41026
|
);
|
|
40667
41027
|
}, [backLinkSlot, backHref, backText, backIcon, backLinkClassName]);
|
|
40668
|
-
const renderAuthor =
|
|
41028
|
+
const renderAuthor = React50.useCallback(
|
|
40669
41029
|
(isMobile = false) => {
|
|
40670
41030
|
if (authorSlot) return authorSlot;
|
|
40671
41031
|
if (!authorName) return null;
|
|
@@ -40697,7 +41057,7 @@ function ArticleSidebarStickyComponent({
|
|
|
40697
41057
|
authorClassName
|
|
40698
41058
|
]
|
|
40699
41059
|
);
|
|
40700
|
-
const heroMediaContent =
|
|
41060
|
+
const heroMediaContent = React50.useMemo(() => {
|
|
40701
41061
|
if (heroMediaSlot) return heroMediaSlot;
|
|
40702
41062
|
if (!heroImageSrc) return null;
|
|
40703
41063
|
return /* @__PURE__ */ jsx(
|
|
@@ -40804,10 +41164,10 @@ function ArticleTocSidebarComponent({
|
|
|
40804
41164
|
patternOpacity
|
|
40805
41165
|
}) {
|
|
40806
41166
|
const ctaActions = ctaActionsProp ?? (ctaButtonText ? [{ label: ctaButtonText, href: ctaButtonHref || "#", variant: "default", className: "w-full" }] : []);
|
|
40807
|
-
const [activeSection, setActiveSection] =
|
|
41167
|
+
const [activeSection, setActiveSection] = React50.useState(
|
|
40808
41168
|
sections?.[0]?.id || ""
|
|
40809
41169
|
);
|
|
40810
|
-
|
|
41170
|
+
React50.useEffect(() => {
|
|
40811
41171
|
if (!enableTocTracking || !sections || sections.length === 0) return;
|
|
40812
41172
|
const observer = new IntersectionObserver(
|
|
40813
41173
|
(entries) => {
|
|
@@ -40825,12 +41185,12 @@ function ArticleTocSidebarComponent({
|
|
|
40825
41185
|
});
|
|
40826
41186
|
return () => observer.disconnect();
|
|
40827
41187
|
}, [sections, enableTocTracking]);
|
|
40828
|
-
const categoryContent =
|
|
41188
|
+
const categoryContent = React50.useMemo(() => {
|
|
40829
41189
|
if (categorySlot) return categorySlot;
|
|
40830
41190
|
if (!category) return null;
|
|
40831
41191
|
return /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: category });
|
|
40832
41192
|
}, [categorySlot, category]);
|
|
40833
|
-
const authorContent =
|
|
41193
|
+
const authorContent = React50.useMemo(() => {
|
|
40834
41194
|
if (authorSlot) return authorSlot;
|
|
40835
41195
|
if (!authorName) return null;
|
|
40836
41196
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-6 flex items-center gap-4", authorClassName), children: [
|
|
@@ -40850,7 +41210,7 @@ function ArticleTocSidebarComponent({
|
|
|
40850
41210
|
] })
|
|
40851
41211
|
] });
|
|
40852
41212
|
}, [authorSlot, authorName, authorImage, authorHref, publishDate, readTime, authorClassName]);
|
|
40853
|
-
const heroMediaContent =
|
|
41213
|
+
const heroMediaContent = React50.useMemo(() => {
|
|
40854
41214
|
if (heroMediaSlot) return heroMediaSlot;
|
|
40855
41215
|
if (!heroImageSrc) return null;
|
|
40856
41216
|
return /* @__PURE__ */ jsx(
|
|
@@ -40863,7 +41223,7 @@ function ArticleTocSidebarComponent({
|
|
|
40863
41223
|
}
|
|
40864
41224
|
);
|
|
40865
41225
|
}, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
|
|
40866
|
-
const tocContent =
|
|
41226
|
+
const tocContent = React50.useMemo(() => {
|
|
40867
41227
|
if (tocSlot) return tocSlot;
|
|
40868
41228
|
if (!sections || sections.length === 0) return null;
|
|
40869
41229
|
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", tocClassName), children: [
|
|
@@ -40871,7 +41231,7 @@ function ArticleTocSidebarComponent({
|
|
|
40871
41231
|
/* @__PURE__ */ jsx("nav", { className: "space-y-2", children: sections.map((section) => {
|
|
40872
41232
|
const isActive = activeSection === section.id;
|
|
40873
41233
|
if (renderSectionLink) {
|
|
40874
|
-
return /* @__PURE__ */ jsx(
|
|
41234
|
+
return /* @__PURE__ */ jsx(React50.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
|
|
40875
41235
|
}
|
|
40876
41236
|
return /* @__PURE__ */ jsx(
|
|
40877
41237
|
Pressable,
|
|
@@ -40888,7 +41248,7 @@ function ArticleTocSidebarComponent({
|
|
|
40888
41248
|
}) })
|
|
40889
41249
|
] });
|
|
40890
41250
|
}, [tocSlot, sections, activeSection, renderSectionLink, tocClassName]);
|
|
40891
|
-
const ctaContent =
|
|
41251
|
+
const ctaContent = React50.useMemo(() => {
|
|
40892
41252
|
if (ctaSlot) return ctaSlot;
|
|
40893
41253
|
if (!ctaTitle && !ctaDescription && (!ctaActions || ctaActions.length === 0)) return null;
|
|
40894
41254
|
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", getNestedCardBg(background, "subtle"), getNestedCardTextColor(background), ctaClassName), children: [
|
|
@@ -40977,11 +41337,11 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
40977
41337
|
patternOpacity
|
|
40978
41338
|
}) {
|
|
40979
41339
|
const author = authorProp ?? (authorName ? { name: authorName, image: authorImage, role: authorRole } : void 0);
|
|
40980
|
-
const [activeSection, setActiveSection] =
|
|
41340
|
+
const [activeSection, setActiveSection] = React50.useState(
|
|
40981
41341
|
sections?.[0]?.id || ""
|
|
40982
41342
|
);
|
|
40983
|
-
const [showBackToTop, setShowBackToTop] =
|
|
40984
|
-
|
|
41343
|
+
const [showBackToTop, setShowBackToTop] = React50.useState(false);
|
|
41344
|
+
React50.useEffect(() => {
|
|
40985
41345
|
if (!enableTocTracking || !sections || sections.length === 0) return;
|
|
40986
41346
|
const observer = new IntersectionObserver(
|
|
40987
41347
|
(entries) => {
|
|
@@ -40999,7 +41359,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
40999
41359
|
});
|
|
41000
41360
|
return () => observer.disconnect();
|
|
41001
41361
|
}, [sections, enableTocTracking]);
|
|
41002
|
-
|
|
41362
|
+
React50.useEffect(() => {
|
|
41003
41363
|
if (!enableBackToTop) return;
|
|
41004
41364
|
const handleScroll = () => {
|
|
41005
41365
|
setShowBackToTop(window.scrollY > 400);
|
|
@@ -41007,15 +41367,15 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
41007
41367
|
window.addEventListener("scroll", handleScroll);
|
|
41008
41368
|
return () => window.removeEventListener("scroll", handleScroll);
|
|
41009
41369
|
}, [enableBackToTop]);
|
|
41010
|
-
const scrollToTop =
|
|
41370
|
+
const scrollToTop = React50.useCallback(() => {
|
|
41011
41371
|
window.scrollTo({ top: 0, behavior: "smooth" });
|
|
41012
41372
|
}, []);
|
|
41013
|
-
const breadcrumbsContent =
|
|
41373
|
+
const breadcrumbsContent = React50.useMemo(() => {
|
|
41014
41374
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
41015
41375
|
if (!breadcrumbs || breadcrumbs.length === 0) return null;
|
|
41016
41376
|
return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-8", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
|
|
41017
41377
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
|
|
41018
|
-
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(
|
|
41378
|
+
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
41019
41379
|
/* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
|
|
41020
41380
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
41021
41381
|
] }, index)),
|
|
@@ -41025,7 +41385,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
41025
41385
|
] })
|
|
41026
41386
|
] }) });
|
|
41027
41387
|
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
41028
|
-
const authorContent =
|
|
41388
|
+
const authorContent = React50.useMemo(() => {
|
|
41029
41389
|
if (authorSlot) return authorSlot;
|
|
41030
41390
|
if (!author) return null;
|
|
41031
41391
|
return /* @__PURE__ */ jsxs(
|
|
@@ -41048,7 +41408,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
41048
41408
|
}
|
|
41049
41409
|
);
|
|
41050
41410
|
}, [authorSlot, author, publishDate, readTime, authorClassName]);
|
|
41051
|
-
const heroMediaContent =
|
|
41411
|
+
const heroMediaContent = React50.useMemo(() => {
|
|
41052
41412
|
if (heroMediaSlot) return heroMediaSlot;
|
|
41053
41413
|
if (!heroImageSrc) return null;
|
|
41054
41414
|
return /* @__PURE__ */ jsx(
|
|
@@ -41070,7 +41430,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
41070
41430
|
heroImageClassName,
|
|
41071
41431
|
optixFlowConfig
|
|
41072
41432
|
]);
|
|
41073
|
-
const tocContent =
|
|
41433
|
+
const tocContent = React50.useMemo(() => {
|
|
41074
41434
|
if (tocSlot) return tocSlot;
|
|
41075
41435
|
if (!sections || sections.length === 0) return null;
|
|
41076
41436
|
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", tocClassName), children: [
|
|
@@ -41078,7 +41438,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
41078
41438
|
/* @__PURE__ */ jsx("nav", { className: "space-y-2", children: sections.map((section) => {
|
|
41079
41439
|
const isActive = activeSection === section.id;
|
|
41080
41440
|
if (renderSectionLink) {
|
|
41081
|
-
return /* @__PURE__ */ jsx(
|
|
41441
|
+
return /* @__PURE__ */ jsx(React50.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
|
|
41082
41442
|
}
|
|
41083
41443
|
return /* @__PURE__ */ jsx(
|
|
41084
41444
|
Pressable,
|
|
@@ -41183,11 +41543,11 @@ function ArticleCompactTocComponent({
|
|
|
41183
41543
|
pattern,
|
|
41184
41544
|
patternOpacity
|
|
41185
41545
|
}) {
|
|
41186
|
-
const [activeSection, setActiveSection] =
|
|
41546
|
+
const [activeSection, setActiveSection] = React50.useState(
|
|
41187
41547
|
sections?.[0]?.id || ""
|
|
41188
41548
|
);
|
|
41189
|
-
const [isTocOpen, setIsTocOpen] =
|
|
41190
|
-
|
|
41549
|
+
const [isTocOpen, setIsTocOpen] = React50.useState(false);
|
|
41550
|
+
React50.useEffect(() => {
|
|
41191
41551
|
if (!enableTocTracking) return;
|
|
41192
41552
|
const observer = new IntersectionObserver(
|
|
41193
41553
|
(entries) => {
|
|
@@ -41205,12 +41565,12 @@ function ArticleCompactTocComponent({
|
|
|
41205
41565
|
});
|
|
41206
41566
|
return () => observer.disconnect();
|
|
41207
41567
|
}, [sections, enableTocTracking]);
|
|
41208
|
-
const breadcrumbsContent =
|
|
41568
|
+
const breadcrumbsContent = React50.useMemo(() => {
|
|
41209
41569
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
41210
41570
|
if (!breadcrumbs && !currentPage) return null;
|
|
41211
41571
|
return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-6 md:mb-20", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
|
|
41212
41572
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
|
|
41213
|
-
breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(
|
|
41573
|
+
breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
41214
41574
|
/* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
|
|
41215
41575
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
41216
41576
|
] }, index)),
|
|
@@ -41218,7 +41578,7 @@ function ArticleCompactTocComponent({
|
|
|
41218
41578
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: currentPage }) })
|
|
41219
41579
|
] }) });
|
|
41220
41580
|
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
41221
|
-
const shareContent =
|
|
41581
|
+
const shareContent = React50.useMemo(() => {
|
|
41222
41582
|
if (shareSlot) return shareSlot;
|
|
41223
41583
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
41224
41584
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-6 flex items-center gap-2", shareClassName), children: [
|
|
@@ -41235,13 +41595,13 @@ function ArticleCompactTocComponent({
|
|
|
41235
41595
|
))
|
|
41236
41596
|
] });
|
|
41237
41597
|
}, [shareSlot, socialLinks, shareClassName]);
|
|
41238
|
-
const renderTocLinks =
|
|
41598
|
+
const renderTocLinks = React50.useCallback(
|
|
41239
41599
|
(onLinkClick) => {
|
|
41240
41600
|
if (!sections) return null;
|
|
41241
41601
|
return sections.map((section) => {
|
|
41242
41602
|
const isActive = activeSection === section.id;
|
|
41243
41603
|
if (renderSectionLink) {
|
|
41244
|
-
return /* @__PURE__ */ jsx(
|
|
41604
|
+
return /* @__PURE__ */ jsx(React50.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
|
|
41245
41605
|
}
|
|
41246
41606
|
return /* @__PURE__ */ jsx(
|
|
41247
41607
|
Pressable,
|
|
@@ -41260,7 +41620,7 @@ function ArticleCompactTocComponent({
|
|
|
41260
41620
|
},
|
|
41261
41621
|
[sections, activeSection, renderSectionLink]
|
|
41262
41622
|
);
|
|
41263
|
-
const tocContent =
|
|
41623
|
+
const tocContent = React50.useMemo(() => {
|
|
41264
41624
|
if (tocSlot) return tocSlot;
|
|
41265
41625
|
if (!sections || sections.length === 0) return null;
|
|
41266
41626
|
return /* @__PURE__ */ jsx("div", { className: "mb-8 lg:hidden", children: /* @__PURE__ */ jsxs(Popover, { open: isTocOpen, onOpenChange: setIsTocOpen, children: [
|
|
@@ -41293,7 +41653,7 @@ function ArticleCompactTocComponent({
|
|
|
41293
41653
|
)
|
|
41294
41654
|
] }) });
|
|
41295
41655
|
}, [tocSlot, sections, isTocOpen, tocClassName, renderTocLinks]);
|
|
41296
|
-
const desktopTocContent =
|
|
41656
|
+
const desktopTocContent = React50.useMemo(() => {
|
|
41297
41657
|
if (tocSlot) return null;
|
|
41298
41658
|
if (!sections || sections.length === 0) return null;
|
|
41299
41659
|
return /* @__PURE__ */ jsx(
|
|
@@ -41310,7 +41670,7 @@ function ArticleCompactTocComponent({
|
|
|
41310
41670
|
}
|
|
41311
41671
|
);
|
|
41312
41672
|
}, [tocSlot, sections, tocClassName, renderTocLinks]);
|
|
41313
|
-
const heroMediaContent =
|
|
41673
|
+
const heroMediaContent = React50.useMemo(() => {
|
|
41314
41674
|
if (heroMediaSlot) return heroMediaSlot;
|
|
41315
41675
|
if (!heroImageSrc) return null;
|
|
41316
41676
|
return /* @__PURE__ */ jsx(
|
|
@@ -41440,10 +41800,10 @@ function ArticleChaptersAuthorComponent({
|
|
|
41440
41800
|
variant: "default"
|
|
41441
41801
|
}
|
|
41442
41802
|
] : []);
|
|
41443
|
-
const [activeChapter, setActiveChapter] =
|
|
41803
|
+
const [activeChapter, setActiveChapter] = React50.useState(
|
|
41444
41804
|
chapters?.[0]?.id || ""
|
|
41445
41805
|
);
|
|
41446
|
-
|
|
41806
|
+
React50.useEffect(() => {
|
|
41447
41807
|
if (!enableChapterTracking || !chapters || chapters.length === 0) return;
|
|
41448
41808
|
const observer = new IntersectionObserver(
|
|
41449
41809
|
(entries) => {
|
|
@@ -41461,12 +41821,12 @@ function ArticleChaptersAuthorComponent({
|
|
|
41461
41821
|
});
|
|
41462
41822
|
return () => observer.disconnect();
|
|
41463
41823
|
}, [chapters, enableChapterTracking]);
|
|
41464
|
-
const breadcrumbsContent =
|
|
41824
|
+
const breadcrumbsContent = React50.useMemo(() => {
|
|
41465
41825
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
41466
41826
|
if (!breadcrumbs || breadcrumbs.length === 0) return null;
|
|
41467
41827
|
return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-8 md:mb-20", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
|
|
41468
41828
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
|
|
41469
|
-
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(
|
|
41829
|
+
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
41470
41830
|
/* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
|
|
41471
41831
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
41472
41832
|
] }, index)),
|
|
@@ -41474,7 +41834,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
41474
41834
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: typeof currentPage === "string" ? currentPage : currentPage }) })
|
|
41475
41835
|
] }) });
|
|
41476
41836
|
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
41477
|
-
const chaptersNavContent =
|
|
41837
|
+
const chaptersNavContent = React50.useMemo(() => {
|
|
41478
41838
|
if (chaptersSlot) return chaptersSlot;
|
|
41479
41839
|
if (!chapters || chapters.length === 0) return null;
|
|
41480
41840
|
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", chaptersClassName), children: [
|
|
@@ -41482,7 +41842,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
41482
41842
|
/* @__PURE__ */ jsx("nav", { className: "space-y-2", children: chapters.map((chapter) => {
|
|
41483
41843
|
const isActive = activeChapter === chapter.id;
|
|
41484
41844
|
if (renderChapterLink) {
|
|
41485
|
-
return /* @__PURE__ */ jsx(
|
|
41845
|
+
return /* @__PURE__ */ jsx(React50.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
|
|
41486
41846
|
}
|
|
41487
41847
|
return /* @__PURE__ */ jsxs(
|
|
41488
41848
|
Pressable,
|
|
@@ -41508,7 +41868,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
41508
41868
|
renderChapterLink,
|
|
41509
41869
|
chaptersClassName
|
|
41510
41870
|
]);
|
|
41511
|
-
const authorCardContent =
|
|
41871
|
+
const authorCardContent = React50.useMemo(() => {
|
|
41512
41872
|
if (authorSlot) return authorSlot;
|
|
41513
41873
|
if (!author) return null;
|
|
41514
41874
|
let socialLinksContent = null;
|
|
@@ -41569,7 +41929,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
41569
41929
|
socialLinksContent
|
|
41570
41930
|
] });
|
|
41571
41931
|
}, [authorSlot, author, authorClassName]);
|
|
41572
|
-
const heroMediaContent =
|
|
41932
|
+
const heroMediaContent = React50.useMemo(() => {
|
|
41573
41933
|
if (heroMediaSlot) return heroMediaSlot;
|
|
41574
41934
|
if (!heroImageSrc) return null;
|
|
41575
41935
|
return /* @__PURE__ */ jsx(
|
|
@@ -41591,7 +41951,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
41591
41951
|
heroImageClassName,
|
|
41592
41952
|
optixFlowConfig
|
|
41593
41953
|
]);
|
|
41594
|
-
const conclusionContent =
|
|
41954
|
+
const conclusionContent = React50.useMemo(() => {
|
|
41595
41955
|
if (conclusionSlot) return conclusionSlot;
|
|
41596
41956
|
if (!conclusionTitle && !conclusionDescription && (!conclusionActions || conclusionActions.length === 0))
|
|
41597
41957
|
return null;
|
|
@@ -41736,7 +42096,7 @@ function ArticleSplitAnimatedComponent({
|
|
|
41736
42096
|
}) {
|
|
41737
42097
|
const ctaActions = ctaActionsProp ?? (ctaText ? [{ label: ctaText, href: ctaHref || "#", variant: "default", size: "lg" }] : []);
|
|
41738
42098
|
const MotionWrapper = enableAnimations ? motion.div : "div";
|
|
41739
|
-
const categoryContent =
|
|
42099
|
+
const categoryContent = React50.useMemo(() => {
|
|
41740
42100
|
if (categorySlot) return categorySlot;
|
|
41741
42101
|
if (!category) return null;
|
|
41742
42102
|
return /* @__PURE__ */ jsx(
|
|
@@ -41751,7 +42111,7 @@ function ArticleSplitAnimatedComponent({
|
|
|
41751
42111
|
}
|
|
41752
42112
|
);
|
|
41753
42113
|
}, [categorySlot, category, categoryHref, categoryClassName]);
|
|
41754
|
-
const heroMediaContent =
|
|
42114
|
+
const heroMediaContent = React50.useMemo(() => {
|
|
41755
42115
|
if (heroMediaSlot) return heroMediaSlot;
|
|
41756
42116
|
if (!image) return null;
|
|
41757
42117
|
return /* @__PURE__ */ jsx(
|
|
@@ -41764,7 +42124,7 @@ function ArticleSplitAnimatedComponent({
|
|
|
41764
42124
|
}
|
|
41765
42125
|
);
|
|
41766
42126
|
}, [heroMediaSlot, image, imageAlt, title, optixFlowConfig]);
|
|
41767
|
-
const authorContent =
|
|
42127
|
+
const authorContent = React50.useMemo(() => {
|
|
41768
42128
|
if (authorSlot) return authorSlot;
|
|
41769
42129
|
if (!authorName) return null;
|
|
41770
42130
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-8 flex items-center gap-4", authorClassName), children: [
|
|
@@ -41778,7 +42138,7 @@ function ArticleSplitAnimatedComponent({
|
|
|
41778
42138
|
] })
|
|
41779
42139
|
] });
|
|
41780
42140
|
}, [authorSlot, authorName, authorImage, authorHref, authorRole, authorClassName]);
|
|
41781
|
-
const ctaContent =
|
|
42141
|
+
const ctaContent = React50.useMemo(() => {
|
|
41782
42142
|
if (ctaSlot) return ctaSlot;
|
|
41783
42143
|
if (!ctaActions || ctaActions.length === 0) return null;
|
|
41784
42144
|
return /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex flex-wrap gap-3", ctaClassName), children: ctaActions.map((action, index) => {
|
|
@@ -43201,7 +43561,7 @@ function FaqSidebarNavigation({
|
|
|
43201
43561
|
accordionTriggerClassName,
|
|
43202
43562
|
accordionContentClassName
|
|
43203
43563
|
}) {
|
|
43204
|
-
const [activeCategory, setActiveCategory] =
|
|
43564
|
+
const [activeCategory, setActiveCategory] = React50.useState(
|
|
43205
43565
|
categories && categories.length > 1 ? "all" : categories?.[0]?.id || ""
|
|
43206
43566
|
);
|
|
43207
43567
|
const filteredCategories = useMemo(() => {
|
|
@@ -44090,7 +44450,7 @@ function FaqSplitHero({
|
|
|
44090
44450
|
imageArea
|
|
44091
44451
|
] }) });
|
|
44092
44452
|
}
|
|
44093
|
-
var Controls =
|
|
44453
|
+
var Controls = React50.memo(
|
|
44094
44454
|
({
|
|
44095
44455
|
handleNext,
|
|
44096
44456
|
handlePrevious,
|
|
@@ -44121,7 +44481,7 @@ var Controls = React51.memo(
|
|
|
44121
44481
|
] });
|
|
44122
44482
|
}
|
|
44123
44483
|
);
|
|
44124
|
-
var FeatureCard =
|
|
44484
|
+
var FeatureCard = React50.memo(
|
|
44125
44485
|
({ feature, isActive, onClick }) => {
|
|
44126
44486
|
const variants2 = useMemo(
|
|
44127
44487
|
() => ({
|
|
@@ -44229,7 +44589,7 @@ var FeatureCard = React51.memo(
|
|
|
44229
44589
|
) });
|
|
44230
44590
|
}
|
|
44231
44591
|
);
|
|
44232
|
-
var FeaturesDesktop =
|
|
44592
|
+
var FeaturesDesktop = React50.memo(
|
|
44233
44593
|
({
|
|
44234
44594
|
features,
|
|
44235
44595
|
handleNext,
|
|
@@ -44263,7 +44623,7 @@ var FeaturesDesktop = React51.memo(
|
|
|
44263
44623
|
] });
|
|
44264
44624
|
}
|
|
44265
44625
|
);
|
|
44266
|
-
var FeaturesMobile =
|
|
44626
|
+
var FeaturesMobile = React50.memo(
|
|
44267
44627
|
({
|
|
44268
44628
|
features,
|
|
44269
44629
|
handleNext,
|
|
@@ -44354,8 +44714,8 @@ function FeatureAnimatedCarousel({
|
|
|
44354
44714
|
spacing = "py-12 md:py-32",
|
|
44355
44715
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
|
|
44356
44716
|
}) {
|
|
44357
|
-
const [activeIndex, setActiveIndex] =
|
|
44358
|
-
const [direction, setDirection] =
|
|
44717
|
+
const [activeIndex, setActiveIndex] = React50.useState(0);
|
|
44718
|
+
const [direction, setDirection] = React50.useState(1);
|
|
44359
44719
|
const handleNext = useCallback(() => {
|
|
44360
44720
|
if (features && activeIndex < features.length - 1) {
|
|
44361
44721
|
setDirection(1);
|
|
@@ -45217,7 +45577,7 @@ function FooterInfoCardsAccordion({
|
|
|
45217
45577
|
patternOpacity,
|
|
45218
45578
|
optixFlowConfig
|
|
45219
45579
|
}) {
|
|
45220
|
-
const [email, setEmail] =
|
|
45580
|
+
const [email, setEmail] = React50.useState("");
|
|
45221
45581
|
(/* @__PURE__ */ new Date()).getFullYear();
|
|
45222
45582
|
const handleSubmit = (e) => {
|
|
45223
45583
|
e.preventDefault();
|
|
@@ -45522,13 +45882,13 @@ function CaseStudiesImageGrid({
|
|
|
45522
45882
|
patternOpacity,
|
|
45523
45883
|
optixFlowConfig
|
|
45524
45884
|
}) {
|
|
45525
|
-
const getGridClass =
|
|
45885
|
+
const getGridClass = React50.useCallback((index) => {
|
|
45526
45886
|
if (index === 0 || index === 4) {
|
|
45527
45887
|
return "row-span-2 aspect-square lg:aspect-auto";
|
|
45528
45888
|
}
|
|
45529
45889
|
return "aspect-3/2 md:aspect-2/1";
|
|
45530
45890
|
}, []);
|
|
45531
|
-
const renderedItems =
|
|
45891
|
+
const renderedItems = React50.useMemo(() => {
|
|
45532
45892
|
if (itemsSlot) return itemsSlot;
|
|
45533
45893
|
if (!items || items.length === 0) return null;
|
|
45534
45894
|
return items.map((item, index) => /* @__PURE__ */ jsxs(
|
|
@@ -45614,7 +45974,7 @@ function CaseStudiesTestimonialStats({
|
|
|
45614
45974
|
patternOpacity,
|
|
45615
45975
|
optixFlowConfig
|
|
45616
45976
|
}) {
|
|
45617
|
-
const renderedTestimonials =
|
|
45977
|
+
const renderedTestimonials = React50.useMemo(() => {
|
|
45618
45978
|
if (testimonialsSlot) return testimonialsSlot;
|
|
45619
45979
|
if (!testimonials || testimonials.length === 0) return null;
|
|
45620
45980
|
return testimonials.map((testimonial, index) => /* @__PURE__ */ jsxs("div", { className: testimonialItemClassName, children: [
|
|
@@ -49087,7 +49447,7 @@ function CaseStudiesFeaturedBorder({
|
|
|
49087
49447
|
patternOpacity,
|
|
49088
49448
|
optixFlowConfig
|
|
49089
49449
|
}) {
|
|
49090
|
-
const renderedFeatured =
|
|
49450
|
+
const renderedFeatured = React50.useMemo(() => {
|
|
49091
49451
|
if (featuredSlot) return featuredSlot;
|
|
49092
49452
|
if (!featuredCaseStudy) return null;
|
|
49093
49453
|
return /* @__PURE__ */ jsxs(
|
|
@@ -49161,7 +49521,7 @@ function CaseStudiesFeaturedBorder({
|
|
|
49161
49521
|
featuredImageClassName,
|
|
49162
49522
|
optixFlowConfig
|
|
49163
49523
|
]);
|
|
49164
|
-
const renderedCaseStudies =
|
|
49524
|
+
const renderedCaseStudies = React50.useMemo(() => {
|
|
49165
49525
|
if (caseStudiesSlot) return caseStudiesSlot;
|
|
49166
49526
|
if (!caseStudies || caseStudies.length === 0) return null;
|
|
49167
49527
|
return caseStudies.map((item, idx) => /* @__PURE__ */ jsxs(
|
|
@@ -49270,7 +49630,7 @@ function CaseStudiesStatsCard({
|
|
|
49270
49630
|
patternOpacity,
|
|
49271
49631
|
optixFlowConfig
|
|
49272
49632
|
}) {
|
|
49273
|
-
const renderedStats =
|
|
49633
|
+
const renderedStats = React50.useMemo(() => {
|
|
49274
49634
|
if (statsSlot) return statsSlot;
|
|
49275
49635
|
if (!stats || stats.length === 0) return null;
|
|
49276
49636
|
return /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col gap-8 sm:flex-row", statsClassName), children: stats.map((item, i) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
@@ -49278,7 +49638,7 @@ function CaseStudiesStatsCard({
|
|
|
49278
49638
|
/* @__PURE__ */ jsx("div", { className: "text-sm font-medium text-muted-foreground", children: item.text })
|
|
49279
49639
|
] }, `stats-${i}`)) });
|
|
49280
49640
|
}, [statsSlot, stats, statsClassName]);
|
|
49281
|
-
const renderedAuthor =
|
|
49641
|
+
const renderedAuthor = React50.useMemo(() => {
|
|
49282
49642
|
if (authorSlot) return authorSlot;
|
|
49283
49643
|
if (!author) return null;
|
|
49284
49644
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2.5", authorClassName), children: [
|
|
@@ -49292,7 +49652,7 @@ function CaseStudiesStatsCard({
|
|
|
49292
49652
|
] })
|
|
49293
49653
|
] });
|
|
49294
49654
|
}, [authorSlot, author, authorClassName]);
|
|
49295
|
-
const renderedActions =
|
|
49655
|
+
const renderedActions = React50.useMemo(() => {
|
|
49296
49656
|
if (actionsSlot) return actionsSlot;
|
|
49297
49657
|
if (!actions || actions.length === 0) return null;
|
|
49298
49658
|
return /* @__PURE__ */ jsx("div", { className: cn("shrink-0", actionsClassName), children: actions.map((action, index) => {
|
|
@@ -50780,7 +51140,7 @@ function HeroCenteredImageGrid({
|
|
|
50780
51140
|
return logos.map((logo, index) => {
|
|
50781
51141
|
const src = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
50782
51142
|
typeof logo.src === "string" ? logo.src : logo.src.dark;
|
|
50783
|
-
return /* @__PURE__ */ jsx(
|
|
51143
|
+
return /* @__PURE__ */ jsx(React50.Fragment, { children: /* @__PURE__ */ jsx(
|
|
50784
51144
|
Img,
|
|
50785
51145
|
{
|
|
50786
51146
|
src,
|
|
@@ -59014,7 +59374,7 @@ function HeroEcommerceProductShowcase({
|
|
|
59014
59374
|
const renderStats = useMemo(() => {
|
|
59015
59375
|
if (statsSlot) return statsSlot;
|
|
59016
59376
|
if (!stats || stats.length === 0) return null;
|
|
59017
|
-
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center gap-6 pt-4", statsClassName), children: stats.map((stat, index) => /* @__PURE__ */ jsxs(
|
|
59377
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center gap-6 pt-4", statsClassName), children: stats.map((stat, index) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
59018
59378
|
index > 0 && /* @__PURE__ */ jsx("div", { className: "h-12 w-px bg-border" }),
|
|
59019
59379
|
/* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
59020
59380
|
/* @__PURE__ */ jsx("div", { className: "text-2xl font-bold ", children: stat.value }),
|
|
@@ -59910,7 +60270,7 @@ function ComparisonTableTwoColumn({
|
|
|
59910
60270
|
patternOpacity,
|
|
59911
60271
|
optixFlowConfig
|
|
59912
60272
|
}) {
|
|
59913
|
-
const tableContent =
|
|
60273
|
+
const tableContent = React50.useMemo(() => {
|
|
59914
60274
|
if (tableSlot) return tableSlot;
|
|
59915
60275
|
if (!rows || rows.length === 0) return null;
|
|
59916
60276
|
return /* @__PURE__ */ jsx("div", { className: cn("-mr-4 overflow-x-auto", tableWrapperClassName), children: /* @__PURE__ */ jsx("div", { className: "min-w-2xl overflow-hidden", children: /* @__PURE__ */ jsxs(
|
|
@@ -59940,7 +60300,7 @@ function ComparisonTableTwoColumn({
|
|
|
59940
60300
|
optixFlowConfig
|
|
59941
60301
|
}
|
|
59942
60302
|
) : optionBLabel && (typeof optionBLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-lg font-semibold", children: optionBLabel }) : optionBLabel) }),
|
|
59943
|
-
rows.map((row, idx) => /* @__PURE__ */ jsxs(
|
|
60303
|
+
rows.map((row, idx) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
59944
60304
|
/* @__PURE__ */ jsx("div", { className: "flex items-center border-b p-3 text-base font-medium md:p-4 md:text-lg", children: row.label }),
|
|
59945
60305
|
/* @__PURE__ */ jsx("div", { className: cn("border-b bg-success/5 p-3 md:p-6", optionACellClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
59946
60306
|
row.hasIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 20, className: "text-success" }),
|
|
@@ -59969,14 +60329,14 @@ function ComparisonTableTwoColumn({
|
|
|
59969
60329
|
optionBLabel,
|
|
59970
60330
|
optixFlowConfig
|
|
59971
60331
|
]);
|
|
59972
|
-
const headingContent =
|
|
60332
|
+
const headingContent = React50.useMemo(() => {
|
|
59973
60333
|
if (!heading) return null;
|
|
59974
60334
|
if (typeof heading === "string") {
|
|
59975
60335
|
return /* @__PURE__ */ jsx("h1", { className: cn("mb-8 text-3xl font-bold md:mb-12 md:text-5xl", headingClassName), children: heading });
|
|
59976
60336
|
}
|
|
59977
60337
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
59978
60338
|
}, [heading, headingClassName]);
|
|
59979
|
-
const descriptionContent =
|
|
60339
|
+
const descriptionContent = React50.useMemo(() => {
|
|
59980
60340
|
if (!description) return null;
|
|
59981
60341
|
if (typeof description === "string") {
|
|
59982
60342
|
return /* @__PURE__ */ jsx("p", { className: cn("mb-8 text-muted-foreground md:text-lg", descriptionClassName), children: description });
|
|
@@ -60023,7 +60383,7 @@ function ComparisonFeatureCards({
|
|
|
60023
60383
|
patternOpacity,
|
|
60024
60384
|
optixFlowConfig
|
|
60025
60385
|
}) {
|
|
60026
|
-
const renderCard =
|
|
60386
|
+
const renderCard = React50.useCallback(
|
|
60027
60387
|
(product, isHighlighted) => /* @__PURE__ */ jsxs(
|
|
60028
60388
|
"div",
|
|
60029
60389
|
{
|
|
@@ -60079,7 +60439,7 @@ function ComparisonFeatureCards({
|
|
|
60079
60439
|
),
|
|
60080
60440
|
[cardClassName, optixFlowConfig]
|
|
60081
60441
|
);
|
|
60082
|
-
const cardsContent =
|
|
60442
|
+
const cardsContent = React50.useMemo(() => {
|
|
60083
60443
|
if (cardsSlot) return cardsSlot;
|
|
60084
60444
|
if (!productA || !productB) return null;
|
|
60085
60445
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
@@ -60087,28 +60447,28 @@ function ComparisonFeatureCards({
|
|
|
60087
60447
|
renderCard(productB, productB.highlighted ?? false)
|
|
60088
60448
|
] });
|
|
60089
60449
|
}, [cardsSlot, productA, productB, renderCard]);
|
|
60090
|
-
const headingContent =
|
|
60450
|
+
const headingContent = React50.useMemo(() => {
|
|
60091
60451
|
if (!heading) return null;
|
|
60092
60452
|
if (typeof heading === "string") {
|
|
60093
60453
|
return /* @__PURE__ */ jsx("h1", { className: cn("mb-6 text-4xl font-semibold md:text-7xl", headingClassName), children: heading });
|
|
60094
60454
|
}
|
|
60095
60455
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
60096
60456
|
}, [heading, headingClassName]);
|
|
60097
|
-
const descriptionContent =
|
|
60457
|
+
const descriptionContent = React50.useMemo(() => {
|
|
60098
60458
|
if (!description) return null;
|
|
60099
60459
|
if (typeof description === "string") {
|
|
60100
60460
|
return /* @__PURE__ */ jsx("p", { className: cn("mx-auto max-w-4xl text-muted-foreground md:text-xl", descriptionClassName), children: description });
|
|
60101
60461
|
}
|
|
60102
60462
|
return /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description });
|
|
60103
60463
|
}, [description, descriptionClassName]);
|
|
60104
|
-
const suitabilityContent =
|
|
60464
|
+
const suitabilityContent = React50.useMemo(() => {
|
|
60105
60465
|
if (!suitabilityTitle && !suitabilityDescription) return null;
|
|
60106
60466
|
return /* @__PURE__ */ jsxs("div", { className: suitabilityClassName, children: [
|
|
60107
60467
|
suitabilityTitle && (typeof suitabilityTitle === "string" ? /* @__PURE__ */ jsx("h2", { className: "mb-4 text-3xl font-semibold", children: suitabilityTitle }) : suitabilityTitle),
|
|
60108
60468
|
suitabilityDescription && (typeof suitabilityDescription === "string" ? /* @__PURE__ */ jsx("p", { className: "leading-6 text-muted-foreground md:text-lg", children: suitabilityDescription }) : suitabilityDescription)
|
|
60109
60469
|
] });
|
|
60110
60470
|
}, [suitabilityTitle, suitabilityDescription, suitabilityClassName]);
|
|
60111
|
-
const differencesContent =
|
|
60471
|
+
const differencesContent = React50.useMemo(() => {
|
|
60112
60472
|
if (!differencesTitle && !differencesDescription) return null;
|
|
60113
60473
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-16", differencesClassName), children: [
|
|
60114
60474
|
differencesTitle && (typeof differencesTitle === "string" ? /* @__PURE__ */ jsx("h2", { className: "mb-4 text-3xl font-semibold", children: differencesTitle }) : differencesTitle),
|
|
@@ -60156,7 +60516,7 @@ function ComparisonGridBadges({
|
|
|
60156
60516
|
pattern,
|
|
60157
60517
|
patternOpacity
|
|
60158
60518
|
}) {
|
|
60159
|
-
const featuresContent =
|
|
60519
|
+
const featuresContent = React50.useMemo(() => {
|
|
60160
60520
|
if (featuresSlot) return featuresSlot;
|
|
60161
60521
|
if (!features || features.length === 0) return null;
|
|
60162
60522
|
return features.map((feature, idx) => /* @__PURE__ */ jsxs(
|
|
@@ -60203,14 +60563,14 @@ function ComparisonGridBadges({
|
|
|
60203
60563
|
idx
|
|
60204
60564
|
));
|
|
60205
60565
|
}, [featuresSlot, features, featureCardClassName, badgeClassName, optionALabel, optionBLabel]);
|
|
60206
|
-
const headingContent =
|
|
60566
|
+
const headingContent = React50.useMemo(() => {
|
|
60207
60567
|
if (!heading) return null;
|
|
60208
60568
|
if (typeof heading === "string") {
|
|
60209
60569
|
return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-3xl font-bold md:text-5xl", headingClassName), children: heading });
|
|
60210
60570
|
}
|
|
60211
60571
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
60212
60572
|
}, [heading, headingClassName]);
|
|
60213
|
-
const descriptionContent =
|
|
60573
|
+
const descriptionContent = React50.useMemo(() => {
|
|
60214
60574
|
if (!description) return null;
|
|
60215
60575
|
if (typeof description === "string") {
|
|
60216
60576
|
return /* @__PURE__ */ jsx("p", { className: cn("mx-auto max-w-2xl text-muted-foreground md:text-lg", descriptionClassName), children: description });
|
|
@@ -60258,7 +60618,7 @@ function ComparisonMetricsRows({
|
|
|
60258
60618
|
pattern,
|
|
60259
60619
|
patternOpacity
|
|
60260
60620
|
}) {
|
|
60261
|
-
const metricsContent =
|
|
60621
|
+
const metricsContent = React50.useMemo(() => {
|
|
60262
60622
|
if (metricsSlot) return metricsSlot;
|
|
60263
60623
|
if (!metrics || metrics.length === 0) return null;
|
|
60264
60624
|
return /* @__PURE__ */ jsx(
|
|
@@ -60298,7 +60658,7 @@ function ComparisonMetricsRows({
|
|
|
60298
60658
|
}
|
|
60299
60659
|
);
|
|
60300
60660
|
}, [metricsSlot, metrics, metricsClassName, metricRowClassName]);
|
|
60301
|
-
const actionsContent =
|
|
60661
|
+
const actionsContent = React50.useMemo(() => {
|
|
60302
60662
|
if (actionsSlot) return actionsSlot;
|
|
60303
60663
|
if (!actions || actions.length === 0) return null;
|
|
60304
60664
|
return /* @__PURE__ */ jsx("div", { className: cn("flex justify-end", actionsClassName), children: actions.map((action, idx) => /* @__PURE__ */ jsxs(
|
|
@@ -60319,7 +60679,7 @@ function ComparisonMetricsRows({
|
|
|
60319
60679
|
idx
|
|
60320
60680
|
)) });
|
|
60321
60681
|
}, [actionsSlot, actions, actionsClassName]);
|
|
60322
|
-
const headingContent =
|
|
60682
|
+
const headingContent = React50.useMemo(() => {
|
|
60323
60683
|
if (!heading) return null;
|
|
60324
60684
|
if (typeof heading === "string") {
|
|
60325
60685
|
return /* @__PURE__ */ jsx(
|
|
@@ -60335,7 +60695,7 @@ function ComparisonMetricsRows({
|
|
|
60335
60695
|
}
|
|
60336
60696
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
60337
60697
|
}, [heading, headingClassName]);
|
|
60338
|
-
const descriptionContent =
|
|
60698
|
+
const descriptionContent = React50.useMemo(() => {
|
|
60339
60699
|
if (!description) return null;
|
|
60340
60700
|
if (typeof description === "string") {
|
|
60341
60701
|
return /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground md:text-lg", descriptionClassName), children: description });
|
|
@@ -60398,7 +60758,7 @@ function ComparisonImageCards({
|
|
|
60398
60758
|
patternOpacity,
|
|
60399
60759
|
optixFlowConfig
|
|
60400
60760
|
}) {
|
|
60401
|
-
const renderCard =
|
|
60761
|
+
const renderCard = React50.useCallback(
|
|
60402
60762
|
(option) => /* @__PURE__ */ jsx("div", { className: cn("relative h-full", cardClassName), children: /* @__PURE__ */ jsxs("div", { className: cn(
|
|
60403
60763
|
"relative aspect-4/5 min-h-[400px] overflow-hidden rounded-2xl sm:aspect-[0.9] sm:min-h-[480px] sm:rounded-3xl md:min-h-[520px]",
|
|
60404
60764
|
getNestedCardBg(background, "accent"),
|
|
@@ -60422,7 +60782,7 @@ function ComparisonImageCards({
|
|
|
60422
60782
|
] }) }),
|
|
60423
60783
|
[cardClassName, optixFlowConfig]
|
|
60424
60784
|
);
|
|
60425
|
-
const cardsContent =
|
|
60785
|
+
const cardsContent = React50.useMemo(() => {
|
|
60426
60786
|
if (cardsSlot) return cardsSlot;
|
|
60427
60787
|
if (!optionA || !optionB) return null;
|
|
60428
60788
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
@@ -60440,14 +60800,14 @@ function ComparisonImageCards({
|
|
|
60440
60800
|
)
|
|
60441
60801
|
] });
|
|
60442
60802
|
}, [cardsSlot, optionA, optionB, dividerText, dividerClassName, renderCard]);
|
|
60443
|
-
const headingContent =
|
|
60803
|
+
const headingContent = React50.useMemo(() => {
|
|
60444
60804
|
if (!heading) return null;
|
|
60445
60805
|
if (typeof heading === "string") {
|
|
60446
60806
|
return /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium sm:text-4xl md:text-5xl lg:text-6xl", headingClassName), children: heading });
|
|
60447
60807
|
}
|
|
60448
60808
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
60449
60809
|
}, [heading, headingClassName]);
|
|
60450
|
-
const descriptionContent =
|
|
60810
|
+
const descriptionContent = React50.useMemo(() => {
|
|
60451
60811
|
if (!description) return null;
|
|
60452
60812
|
if (typeof description === "string") {
|
|
60453
60813
|
return /* @__PURE__ */ jsx("p", { className: cn("mx-auto mt-4 max-w-3xl text-lg text-muted-foreground sm:mt-6 sm:text-xl", descriptionClassName), children: description });
|
|
@@ -60577,7 +60937,7 @@ function ComparisonTableTabs({
|
|
|
60577
60937
|
patternOpacity
|
|
60578
60938
|
}) {
|
|
60579
60939
|
const [selectedTab, setSelectedTab] = useState(models?.[0]?.name || "");
|
|
60580
|
-
const renderStatusIcon =
|
|
60940
|
+
const renderStatusIcon = React50.useCallback((status) => {
|
|
60581
60941
|
if (status === "positive") {
|
|
60582
60942
|
return /* @__PURE__ */ jsx("span", { className: "flex size-8 items-center justify-center rounded-full border bg-success/10", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check", size: 16, className: "text-success" }) });
|
|
60583
60943
|
}
|
|
@@ -60586,7 +60946,7 @@ function ComparisonTableTabs({
|
|
|
60586
60946
|
}
|
|
60587
60947
|
return /* @__PURE__ */ jsx("span", { className: "flex size-8 items-center justify-center rounded-full border bg-accent/10", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-minus", size: 16, className: "text-accent" }) });
|
|
60588
60948
|
}, []);
|
|
60589
|
-
const tableContent =
|
|
60949
|
+
const tableContent = React50.useMemo(() => {
|
|
60590
60950
|
if (tableSlot) return tableSlot;
|
|
60591
60951
|
if (!models || models.length === 0 || !features || features.length === 0) return null;
|
|
60592
60952
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
@@ -60645,14 +61005,14 @@ function ComparisonTableTabs({
|
|
|
60645
61005
|
] }) })
|
|
60646
61006
|
] });
|
|
60647
61007
|
}, [tableSlot, models, features, tabsClassName, tableClassName, tableHeaderClassName, tableCellClassName, selectedTab, renderStatusIcon]);
|
|
60648
|
-
const headingContent =
|
|
61008
|
+
const headingContent = React50.useMemo(() => {
|
|
60649
61009
|
if (!heading) return null;
|
|
60650
61010
|
if (typeof heading === "string") {
|
|
60651
61011
|
return /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold md:text-4xl lg:text-5xl", headingClassName), children: heading });
|
|
60652
61012
|
}
|
|
60653
61013
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
60654
61014
|
}, [heading, headingClassName]);
|
|
60655
|
-
const descriptionContent =
|
|
61015
|
+
const descriptionContent = React50.useMemo(() => {
|
|
60656
61016
|
if (!description) return null;
|
|
60657
61017
|
if (typeof description === "string") {
|
|
60658
61018
|
return /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-muted-foreground md:text-lg", descriptionClassName), children: description });
|
|
@@ -60743,7 +61103,7 @@ function ComparisonTableTooltips({
|
|
|
60743
61103
|
pattern,
|
|
60744
61104
|
patternOpacity
|
|
60745
61105
|
}) {
|
|
60746
|
-
const renderCellContent =
|
|
61106
|
+
const renderCellContent = React50.useCallback(
|
|
60747
61107
|
(cell, isHighlighted) => {
|
|
60748
61108
|
if (typeof cell === "string") {
|
|
60749
61109
|
return cell;
|
|
@@ -60770,7 +61130,7 @@ function ComparisonTableTooltips({
|
|
|
60770
61130
|
},
|
|
60771
61131
|
[]
|
|
60772
61132
|
);
|
|
60773
|
-
const tableContent =
|
|
61133
|
+
const tableContent = React50.useMemo(() => {
|
|
60774
61134
|
if (tableSlot) return tableSlot;
|
|
60775
61135
|
if (!rows || rows.length === 0) return null;
|
|
60776
61136
|
return /* @__PURE__ */ jsxs(Table, { className: cn("rounded border text-left shadow-lg", tableClassName), children: [
|
|
@@ -60796,14 +61156,14 @@ function ComparisonTableTooltips({
|
|
|
60796
61156
|
] }, idx)) })
|
|
60797
61157
|
] });
|
|
60798
61158
|
}, [tableSlot, rows, tableClassName, tableHeaderClassName, tableCellClassName, optionALabel, optionBLabel, renderCellContent]);
|
|
60799
|
-
const headingContent =
|
|
61159
|
+
const headingContent = React50.useMemo(() => {
|
|
60800
61160
|
if (!heading) return null;
|
|
60801
61161
|
if (typeof heading === "string") {
|
|
60802
61162
|
return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-center text-4xl font-semibold", headingClassName), children: heading });
|
|
60803
61163
|
}
|
|
60804
61164
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
60805
61165
|
}, [heading, headingClassName]);
|
|
60806
|
-
const descriptionContent =
|
|
61166
|
+
const descriptionContent = React50.useMemo(() => {
|
|
60807
61167
|
if (!description) return null;
|
|
60808
61168
|
if (typeof description === "string") {
|
|
60809
61169
|
return /* @__PURE__ */ jsx("p", { className: cn("mb-8 text-center text-muted-foreground", descriptionClassName), children: description });
|
|
@@ -60845,7 +61205,7 @@ function ComparisonFeatureGrid({
|
|
|
60845
61205
|
pattern,
|
|
60846
61206
|
patternOpacity
|
|
60847
61207
|
}) {
|
|
60848
|
-
const renderStatusIcon =
|
|
61208
|
+
const renderStatusIcon = React50.useCallback((status) => {
|
|
60849
61209
|
if (status === true) {
|
|
60850
61210
|
return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/check", size: 20, className: "text-success" });
|
|
60851
61211
|
}
|
|
@@ -60854,7 +61214,7 @@ function ComparisonFeatureGrid({
|
|
|
60854
61214
|
}
|
|
60855
61215
|
return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20, className: "text-destructive" });
|
|
60856
61216
|
}, []);
|
|
60857
|
-
const gridContent =
|
|
61217
|
+
const gridContent = React50.useMemo(() => {
|
|
60858
61218
|
if (gridSlot) return gridSlot;
|
|
60859
61219
|
if (!features || features.length === 0) return null;
|
|
60860
61220
|
return /* @__PURE__ */ jsxs(
|
|
@@ -60920,14 +61280,14 @@ function ComparisonFeatureGrid({
|
|
|
60920
61280
|
optionBLabel,
|
|
60921
61281
|
renderStatusIcon
|
|
60922
61282
|
]);
|
|
60923
|
-
const headingContent =
|
|
61283
|
+
const headingContent = React50.useMemo(() => {
|
|
60924
61284
|
if (!heading) return null;
|
|
60925
61285
|
if (typeof heading === "string") {
|
|
60926
61286
|
return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-center text-4xl font-semibold", headingClassName), children: heading });
|
|
60927
61287
|
}
|
|
60928
61288
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
60929
61289
|
}, [heading, headingClassName]);
|
|
60930
|
-
const descriptionContent =
|
|
61290
|
+
const descriptionContent = React50.useMemo(() => {
|
|
60931
61291
|
if (!description) return null;
|
|
60932
61292
|
if (typeof description === "string") {
|
|
60933
61293
|
return /* @__PURE__ */ jsx("p", { className: cn("mb-8 text-center text-muted-foreground", descriptionClassName), children: description });
|
|
@@ -60971,7 +61331,7 @@ function ComparisonAiModels({
|
|
|
60971
61331
|
optixFlowConfig
|
|
60972
61332
|
}) {
|
|
60973
61333
|
const [hoveredModel, setHoveredModel] = useState(null);
|
|
60974
|
-
const renderStatusIcon =
|
|
61334
|
+
const renderStatusIcon = React50.useCallback((status) => {
|
|
60975
61335
|
if (status === "best") {
|
|
60976
61336
|
return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check", size: 16, className: "text-success" });
|
|
60977
61337
|
}
|
|
@@ -60980,7 +61340,7 @@ function ComparisonAiModels({
|
|
|
60980
61340
|
}
|
|
60981
61341
|
return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/minus", size: 16, className: "text-muted-foreground" });
|
|
60982
61342
|
}, []);
|
|
60983
|
-
const getCellClassName =
|
|
61343
|
+
const getCellClassName = React50.useCallback(
|
|
60984
61344
|
(status, modelKey) => {
|
|
60985
61345
|
const baseClass = "cursor-pointer py-4 text-center font-medium transition-all duration-300";
|
|
60986
61346
|
let statusClass = "";
|
|
@@ -61001,7 +61361,7 @@ function ComparisonAiModels({
|
|
|
61001
61361
|
},
|
|
61002
61362
|
[hoveredModel]
|
|
61003
61363
|
);
|
|
61004
|
-
const getSummaryCardClassName =
|
|
61364
|
+
const getSummaryCardClassName = React50.useCallback(
|
|
61005
61365
|
(modelKey) => {
|
|
61006
61366
|
const baseClass = "rounded border border-border/30 bg-background/50 p-3 transition-all duration-300";
|
|
61007
61367
|
if (hoveredModel === modelKey) {
|
|
@@ -61016,7 +61376,7 @@ function ComparisonAiModels({
|
|
|
61016
61376
|
},
|
|
61017
61377
|
[hoveredModel]
|
|
61018
61378
|
);
|
|
61019
|
-
const tableContent =
|
|
61379
|
+
const tableContent = React50.useMemo(() => {
|
|
61020
61380
|
if (tableSlot) return tableSlot;
|
|
61021
61381
|
if (!models || !comparisonData || comparisonData.length === 0) return null;
|
|
61022
61382
|
return /* @__PURE__ */ jsx(
|
|
@@ -61094,7 +61454,7 @@ function ComparisonAiModels({
|
|
|
61094
61454
|
getCellClassName,
|
|
61095
61455
|
renderStatusIcon
|
|
61096
61456
|
]);
|
|
61097
|
-
const analysisContent =
|
|
61457
|
+
const analysisContent = React50.useMemo(() => {
|
|
61098
61458
|
if (analysisSlot) return analysisSlot;
|
|
61099
61459
|
if (!models) return null;
|
|
61100
61460
|
return /* @__PURE__ */ jsx("div", { className: cn(
|
|
@@ -61135,14 +61495,14 @@ function ComparisonAiModels({
|
|
|
61135
61495
|
] })
|
|
61136
61496
|
] }) });
|
|
61137
61497
|
}, [analysisSlot, models, analysisClassName, getSummaryCardClassName]);
|
|
61138
|
-
const headingContent =
|
|
61498
|
+
const headingContent = React50.useMemo(() => {
|
|
61139
61499
|
if (!heading) return null;
|
|
61140
61500
|
if (typeof heading === "string") {
|
|
61141
61501
|
return /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold md:text-4xl lg:text-5xl", headingClassName), children: heading });
|
|
61142
61502
|
}
|
|
61143
61503
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
61144
61504
|
}, [heading, headingClassName]);
|
|
61145
|
-
const descriptionContent =
|
|
61505
|
+
const descriptionContent = React50.useMemo(() => {
|
|
61146
61506
|
if (!description) return null;
|
|
61147
61507
|
if (typeof description === "string") {
|
|
61148
61508
|
return /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-muted-foreground md:text-lg", descriptionClassName), children: description });
|
|
@@ -61192,7 +61552,7 @@ function ComparisonLegacyModern({
|
|
|
61192
61552
|
pattern,
|
|
61193
61553
|
patternOpacity
|
|
61194
61554
|
}) {
|
|
61195
|
-
const columnsContent =
|
|
61555
|
+
const columnsContent = React50.useMemo(() => {
|
|
61196
61556
|
if (columnsSlot) return columnsSlot;
|
|
61197
61557
|
if (!legacyFeatures || legacyFeatures.length === 0 || !modernFeatures || modernFeatures.length === 0)
|
|
61198
61558
|
return null;
|
|
@@ -61204,7 +61564,7 @@ function ComparisonLegacyModern({
|
|
|
61204
61564
|
legacyColumnClassName
|
|
61205
61565
|
), children: [
|
|
61206
61566
|
legacyTitle && (typeof legacyTitle === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-medium", children: legacyTitle }) : legacyTitle),
|
|
61207
|
-
/* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: legacyFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(
|
|
61567
|
+
/* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: legacyFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
61208
61568
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
61209
61569
|
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16, className: "my-1.5 shrink-0 text-muted-foreground" }),
|
|
61210
61570
|
/* @__PURE__ */ jsx("li", { className: "text-sm", children: feature.text })
|
|
@@ -61221,7 +61581,7 @@ function ComparisonLegacyModern({
|
|
|
61221
61581
|
),
|
|
61222
61582
|
children: [
|
|
61223
61583
|
modernTitle && (typeof modernTitle === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-medium", children: modernTitle }) : modernTitle),
|
|
61224
|
-
/* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: modernFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(
|
|
61584
|
+
/* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: modernFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
61225
61585
|
/* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
61226
61586
|
/* @__PURE__ */ jsx("span", { className: "text-lg", children: feature.emoji }),
|
|
61227
61587
|
feature.text
|
|
@@ -61233,7 +61593,7 @@ function ComparisonLegacyModern({
|
|
|
61233
61593
|
)
|
|
61234
61594
|
] });
|
|
61235
61595
|
}, [columnsSlot, legacyFeatures, modernFeatures, legacyTitle, modernTitle, legacyColumnClassName, modernColumnClassName]);
|
|
61236
|
-
const headingContent =
|
|
61596
|
+
const headingContent = React50.useMemo(() => {
|
|
61237
61597
|
if (!heading && !headingHighlight) return null;
|
|
61238
61598
|
return /* @__PURE__ */ jsxs("h2", { className: cn("text-4xl font-medium md:text-5xl lg:text-7xl", headingClassName), children: [
|
|
61239
61599
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
|
|
@@ -61246,7 +61606,7 @@ function ComparisonLegacyModern({
|
|
|
61246
61606
|
] }) : headingHighlight)
|
|
61247
61607
|
] });
|
|
61248
61608
|
}, [heading, headingHighlight, headingClassName, headingHighlightClassName]);
|
|
61249
|
-
const descriptionContent =
|
|
61609
|
+
const descriptionContent = React50.useMemo(() => {
|
|
61250
61610
|
if (!description) return null;
|
|
61251
61611
|
if (typeof description === "string") {
|
|
61252
61612
|
return /* @__PURE__ */ jsx("p", { className: cn("text-lg", descriptionClassName), children: description });
|
|
@@ -61419,7 +61779,7 @@ var NavbarMobileMenu = ({
|
|
|
61419
61779
|
closeIconClassName,
|
|
61420
61780
|
title = "Mobile Navigation"
|
|
61421
61781
|
}) => {
|
|
61422
|
-
|
|
61782
|
+
React50.useEffect(() => {
|
|
61423
61783
|
if (open) {
|
|
61424
61784
|
const originalOverflow = document.body.style.overflow;
|
|
61425
61785
|
document.body.style.overflow = "hidden";
|
|
@@ -61648,7 +62008,7 @@ var NavbarDropdownMenu = ({
|
|
|
61648
62008
|
patternOpacity,
|
|
61649
62009
|
optixFlowConfig
|
|
61650
62010
|
}) => {
|
|
61651
|
-
const [open, setOpen] =
|
|
62011
|
+
const [open, setOpen] = React50.useState(false);
|
|
61652
62012
|
const renderAuthActions = useMemo(() => {
|
|
61653
62013
|
if (authActionsSlot) return authActionsSlot;
|
|
61654
62014
|
if (!authActions || authActions.length === 0) return null;
|
|
@@ -61874,7 +62234,7 @@ var NavbarCenteredMenu = ({
|
|
|
61874
62234
|
patternOpacity,
|
|
61875
62235
|
optixFlowConfig
|
|
61876
62236
|
}) => {
|
|
61877
|
-
const [open, setOpen] =
|
|
62237
|
+
const [open, setOpen] = React50.useState(false);
|
|
61878
62238
|
const renderAuthActions = useMemo(() => {
|
|
61879
62239
|
if (authActionsSlot) return authActionsSlot;
|
|
61880
62240
|
if (!authActions || authActions.length === 0) return null;
|
|
@@ -62014,7 +62374,7 @@ var DesktopMenuItem = ({
|
|
|
62014
62374
|
index,
|
|
62015
62375
|
optixFlowConfig
|
|
62016
62376
|
}) => {
|
|
62017
|
-
const imagesRef =
|
|
62377
|
+
const imagesRef = React50.useRef([]);
|
|
62018
62378
|
const layout = link.layout || "simple-grid";
|
|
62019
62379
|
const handleMouseEnter = (event) => {
|
|
62020
62380
|
const index2 = Number(event.currentTarget.getAttribute("data-index"));
|
|
@@ -63249,7 +63609,7 @@ var NavbarFeatureGrid = ({
|
|
|
63249
63609
|
patternOpacity,
|
|
63250
63610
|
optixFlowConfig
|
|
63251
63611
|
}) => {
|
|
63252
|
-
const [open, setOpen] =
|
|
63612
|
+
const [open, setOpen] = React50.useState(false);
|
|
63253
63613
|
const renderAuthActions = useMemo(() => {
|
|
63254
63614
|
if (authActionsSlot) return authActionsSlot;
|
|
63255
63615
|
if (!authActions || authActions.length === 0) return null;
|
|
@@ -66459,7 +66819,7 @@ var DesktopMenuItem7 = ({
|
|
|
66459
66819
|
if (item.groups && item.groups.length > 0) {
|
|
66460
66820
|
return /* @__PURE__ */ jsxs(NavigationMenuItem, { value: `${index}`, children: [
|
|
66461
66821
|
/* @__PURE__ */ jsx(NavigationMenuTrigger, { children: item.label }),
|
|
66462
|
-
/* @__PURE__ */ jsx(NavigationMenuContent, { className: "p-0", children: /* @__PURE__ */ jsx("div", { className: "flex", children: item.groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(
|
|
66822
|
+
/* @__PURE__ */ jsx(NavigationMenuContent, { className: "p-0", children: /* @__PURE__ */ jsx("div", { className: "flex", children: item.groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
66463
66823
|
groupIndex > 0 && /* @__PURE__ */ jsx(
|
|
66464
66824
|
Separator,
|
|
66465
66825
|
{
|
|
@@ -67211,7 +67571,7 @@ var NavbarSimpleLinks = ({
|
|
|
67211
67571
|
const renderNavItems = useMemo(() => {
|
|
67212
67572
|
if (navItemsSlot) return navItemsSlot;
|
|
67213
67573
|
if (!navItems || navItems.length === 0) return null;
|
|
67214
|
-
return navItems.map((item) => /* @__PURE__ */ jsx(
|
|
67574
|
+
return navItems.map((item) => /* @__PURE__ */ jsx(React50.Fragment, { children: /* @__PURE__ */ jsx(NavigationMenuItem, { children: /* @__PURE__ */ jsx(
|
|
67215
67575
|
NavigationMenuLink,
|
|
67216
67576
|
{
|
|
67217
67577
|
"data-nav-item": item.name,
|
|
@@ -72240,7 +72600,7 @@ function PricingFullComparison({
|
|
|
72240
72600
|
resolvedPlanIds[index]
|
|
72241
72601
|
))
|
|
72242
72602
|
] }) }),
|
|
72243
|
-
/* @__PURE__ */ jsx("tbody", { children: categories.map((category) => /* @__PURE__ */ jsxs(
|
|
72603
|
+
/* @__PURE__ */ jsx("tbody", { children: categories.map((category) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
72244
72604
|
/* @__PURE__ */ jsx("tr", { className: cn(getNestedCardBg(background), getNestedCardTextColor(background), categoryRowClassName), children: /* @__PURE__ */ jsx(
|
|
72245
72605
|
"td",
|
|
72246
72606
|
{
|
|
@@ -76841,9 +77201,9 @@ function ProcessStickySteps({
|
|
|
76841
77201
|
);
|
|
76842
77202
|
}
|
|
76843
77203
|
var usePrevious = (value) => {
|
|
76844
|
-
const [prev, setPrev] =
|
|
76845
|
-
const ref =
|
|
76846
|
-
|
|
77204
|
+
const [prev, setPrev] = React50.useState(void 0);
|
|
77205
|
+
const ref = React50.useRef(value);
|
|
77206
|
+
React50.useEffect(() => {
|
|
76847
77207
|
setPrev(ref.current);
|
|
76848
77208
|
ref.current = value;
|
|
76849
77209
|
}, [value]);
|
|
@@ -76856,12 +77216,12 @@ var ProcessCard = ({
|
|
|
76856
77216
|
itemClassName,
|
|
76857
77217
|
background
|
|
76858
77218
|
}) => {
|
|
76859
|
-
const ref =
|
|
77219
|
+
const ref = React50.useRef(null);
|
|
76860
77220
|
const itemInView = useInView(ref, {
|
|
76861
77221
|
amount: 0,
|
|
76862
77222
|
margin: "0px 0px -60% 0px"
|
|
76863
77223
|
});
|
|
76864
|
-
|
|
77224
|
+
React50.useEffect(() => {
|
|
76865
77225
|
if (itemInView) {
|
|
76866
77226
|
setActive(index);
|
|
76867
77227
|
}
|
|
@@ -76911,7 +77271,7 @@ function ProcessScrollImage({
|
|
|
76911
77271
|
ctaText,
|
|
76912
77272
|
ctaUrl
|
|
76913
77273
|
}) {
|
|
76914
|
-
const [active, setActive] =
|
|
77274
|
+
const [active, setActive] = React50.useState(0);
|
|
76915
77275
|
const previousActive = usePrevious(active);
|
|
76916
77276
|
const resolvedHeading = title ?? heading;
|
|
76917
77277
|
const resolvedActions = actions ?? (ctaText && ctaUrl ? [
|
|
@@ -77095,7 +77455,7 @@ var ProcessCard2 = ({
|
|
|
77095
77455
|
hoverImageClassName,
|
|
77096
77456
|
background
|
|
77097
77457
|
}) => {
|
|
77098
|
-
const [isHovered, setIsHovered] =
|
|
77458
|
+
const [isHovered, setIsHovered] = React50.useState(false);
|
|
77099
77459
|
const titleText = typeof step.title === "string" ? step.title : `Step ${index + 1}`;
|
|
77100
77460
|
return /* @__PURE__ */ jsxs(
|
|
77101
77461
|
"li",
|
|
@@ -77419,7 +77779,7 @@ function ProcessExpandableTimeline({
|
|
|
77419
77779
|
// Backwards compatibility
|
|
77420
77780
|
title
|
|
77421
77781
|
}) {
|
|
77422
|
-
const [expandedIndex, setExpandedIndex] =
|
|
77782
|
+
const [expandedIndex, setExpandedIndex] = React50.useState(null);
|
|
77423
77783
|
const resolvedHeading = title ?? heading;
|
|
77424
77784
|
const toggleExpand = (index) => {
|
|
77425
77785
|
setExpandedIndex(expandedIndex === index ? null : index);
|
|
@@ -82190,7 +82550,7 @@ function ListAchievementsShowcase({
|
|
|
82190
82550
|
if (!items || items.length === 0) return null;
|
|
82191
82551
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col", itemsClassName), children: [
|
|
82192
82552
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
82193
|
-
items.map((item, index) => /* @__PURE__ */ jsxs(
|
|
82553
|
+
items.map((item, index) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
82194
82554
|
/* @__PURE__ */ jsxs(
|
|
82195
82555
|
"div",
|
|
82196
82556
|
{
|
|
@@ -82310,7 +82670,7 @@ function ListCareerTimeline({
|
|
|
82310
82670
|
const renderExperiences = useMemo(() => {
|
|
82311
82671
|
if (experiencesSlot) return experiencesSlot;
|
|
82312
82672
|
if (!experiences || experiences.length === 0) return null;
|
|
82313
|
-
return /* @__PURE__ */ jsx("div", { className: experiencesClassName, children: experiences.map((experience, idx) => /* @__PURE__ */ jsxs(
|
|
82673
|
+
return /* @__PURE__ */ jsx("div", { className: experiencesClassName, children: experiences.map((experience, idx) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
82314
82674
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
82315
82675
|
/* @__PURE__ */ jsxs(
|
|
82316
82676
|
"div",
|
|
@@ -82331,7 +82691,7 @@ function ListCareerTimeline({
|
|
|
82331
82691
|
const renderAwards = useMemo(() => {
|
|
82332
82692
|
if (awardsSlot) return awardsSlot;
|
|
82333
82693
|
if (!awards || awards.length === 0) return null;
|
|
82334
|
-
return /* @__PURE__ */ jsx("div", { className: awardsClassName, children: awards.map((award, idx) => /* @__PURE__ */ jsxs(
|
|
82694
|
+
return /* @__PURE__ */ jsx("div", { className: awardsClassName, children: awards.map((award, idx) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
82335
82695
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
82336
82696
|
/* @__PURE__ */ jsxs(
|
|
82337
82697
|
"div",
|
|
@@ -82466,7 +82826,7 @@ function ListMetricsDashboard({
|
|
|
82466
82826
|
activeCategory: controlledActiveCategory,
|
|
82467
82827
|
onActiveCategoryChange
|
|
82468
82828
|
}) {
|
|
82469
|
-
const [internalActiveTab, setInternalActiveTab] =
|
|
82829
|
+
const [internalActiveTab, setInternalActiveTab] = React50.useState("all");
|
|
82470
82830
|
const activeTab = controlledActiveCategory ?? internalActiveTab;
|
|
82471
82831
|
const handleTabChange = (value) => {
|
|
82472
82832
|
if (onActiveCategoryChange) {
|
|
@@ -82950,7 +83310,7 @@ function ListSearchableGrid({
|
|
|
82950
83310
|
searchTerm: controlledSearchTerm,
|
|
82951
83311
|
onSearchTermChange
|
|
82952
83312
|
}) {
|
|
82953
|
-
const [internalSearchTerm, setInternalSearchTerm] =
|
|
83313
|
+
const [internalSearchTerm, setInternalSearchTerm] = React50.useState("");
|
|
82954
83314
|
const searchTerm = controlledSearchTerm ?? internalSearchTerm;
|
|
82955
83315
|
const handleSearchChange = (value) => {
|
|
82956
83316
|
if (onSearchTermChange) {
|
|
@@ -82959,7 +83319,7 @@ function ListSearchableGrid({
|
|
|
82959
83319
|
setInternalSearchTerm(value);
|
|
82960
83320
|
}
|
|
82961
83321
|
};
|
|
82962
|
-
const filteredItems =
|
|
83322
|
+
const filteredItems = React50.useMemo(() => {
|
|
82963
83323
|
if (!searchTerm) {
|
|
82964
83324
|
return items ?? [];
|
|
82965
83325
|
}
|
|
@@ -83122,7 +83482,7 @@ function ListSearchableGrid({
|
|
|
83122
83482
|
}
|
|
83123
83483
|
);
|
|
83124
83484
|
}
|
|
83125
|
-
var { useMemo: useMemo439 } =
|
|
83485
|
+
var { useMemo: useMemo439 } = React50;
|
|
83126
83486
|
function OfferModalNewsletterDiscount({
|
|
83127
83487
|
title,
|
|
83128
83488
|
emailPlaceholder,
|
|
@@ -83271,7 +83631,7 @@ function OfferModalNewsletterDiscount({
|
|
|
83271
83631
|
}
|
|
83272
83632
|
) });
|
|
83273
83633
|
}
|
|
83274
|
-
var { useMemo: useMemo440 } =
|
|
83634
|
+
var { useMemo: useMemo440 } = React50;
|
|
83275
83635
|
function OfferModalMembershipImage({
|
|
83276
83636
|
overline,
|
|
83277
83637
|
title,
|
|
@@ -83560,7 +83920,7 @@ function SheetDescription({
|
|
|
83560
83920
|
}
|
|
83561
83921
|
);
|
|
83562
83922
|
}
|
|
83563
|
-
var { useMemo: useMemo441 } =
|
|
83923
|
+
var { useMemo: useMemo441 } = React50;
|
|
83564
83924
|
function OfferModalSheetNewsletter({
|
|
83565
83925
|
logo,
|
|
83566
83926
|
logoSlot,
|
|
@@ -84309,10 +84669,10 @@ function ProjectDetailSidebarNavigation(props) {
|
|
|
84309
84669
|
heroImageClassName,
|
|
84310
84670
|
metadataClassName
|
|
84311
84671
|
} = props;
|
|
84312
|
-
const [activeSection, setActiveSection] =
|
|
84672
|
+
const [activeSection, setActiveSection] = React50.useState(
|
|
84313
84673
|
sections?.[0]?.id || ""
|
|
84314
84674
|
);
|
|
84315
|
-
|
|
84675
|
+
React50.useEffect(() => {
|
|
84316
84676
|
const handleScroll = () => {
|
|
84317
84677
|
const sectionElements = sections?.map(
|
|
84318
84678
|
(section) => document.getElementById(section.id)
|
|
@@ -87172,7 +87532,7 @@ function ProjectDetailTabbedCaseStudy(props) {
|
|
|
87172
87532
|
testimonialClassName,
|
|
87173
87533
|
toolsClassName
|
|
87174
87534
|
} = props;
|
|
87175
|
-
const [activeTab, setActiveTab] =
|
|
87535
|
+
const [activeTab, setActiveTab] = React50.useState(tabs?.[0]?.id || "");
|
|
87176
87536
|
const renderedBackAction = useMemo(() => {
|
|
87177
87537
|
if (backActionSlot) return backActionSlot;
|
|
87178
87538
|
if (!backAction) return null;
|
|
@@ -87560,7 +87920,7 @@ function RevealImage({
|
|
|
87560
87920
|
index,
|
|
87561
87921
|
optixFlowConfig
|
|
87562
87922
|
}) {
|
|
87563
|
-
const ref =
|
|
87923
|
+
const ref = React50.useRef(null);
|
|
87564
87924
|
const { scrollYProgress } = useScroll({
|
|
87565
87925
|
target: ref,
|
|
87566
87926
|
offset: ["start end", "end start"]
|
|
@@ -87755,7 +88115,7 @@ function ParallaxSection({
|
|
|
87755
88115
|
index,
|
|
87756
88116
|
optixFlowConfig
|
|
87757
88117
|
}) {
|
|
87758
|
-
const ref =
|
|
88118
|
+
const ref = React50.useRef(null);
|
|
87759
88119
|
const { scrollYProgress } = useScroll({
|
|
87760
88120
|
target: ref,
|
|
87761
88121
|
offset: ["start end", "end start"]
|
|
@@ -87828,7 +88188,7 @@ function ProjectDetailParallaxScroll(props) {
|
|
|
87828
88188
|
heroImageClassName,
|
|
87829
88189
|
sectionsClassName
|
|
87830
88190
|
} = props;
|
|
87831
|
-
const heroRef =
|
|
88191
|
+
const heroRef = React50.useRef(null);
|
|
87832
88192
|
const { scrollYProgress } = useScroll({
|
|
87833
88193
|
target: heroRef,
|
|
87834
88194
|
offset: ["start start", "end start"]
|
|
@@ -88158,7 +88518,7 @@ function BannerDeliveryCountdown({
|
|
|
88158
88518
|
}, [prefixText, timerContent, middleText, deliveryDateContent]);
|
|
88159
88519
|
return /* @__PURE__ */ jsx(Section, { background, spacing: "none", className: cn("bg-accent text-accent-foreground", className), children: /* @__PURE__ */ jsx("div", { className: cn("container py-2.5", containerClassName), children: /* @__PURE__ */ jsx("div", { className: cn("flex flex-wrap items-center justify-center gap-3 text-sm", contentClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", messageClassName), children: [
|
|
88160
88520
|
iconContent,
|
|
88161
|
-
messageParts.length > 0 && /* @__PURE__ */ jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxs(
|
|
88521
|
+
messageParts.length > 0 && /* @__PURE__ */ jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
88162
88522
|
index > 0 ? " " : null,
|
|
88163
88523
|
part
|
|
88164
88524
|
] }, index)) })
|
|
@@ -89294,7 +89654,7 @@ function IndustriesExpandableShowcase({
|
|
|
89294
89654
|
patternClassName,
|
|
89295
89655
|
optixFlowConfig
|
|
89296
89656
|
}) {
|
|
89297
|
-
const [activeContractor, setActiveContractor] =
|
|
89657
|
+
const [activeContractor, setActiveContractor] = React50.useState(
|
|
89298
89658
|
contractors?.[0]?.id || ""
|
|
89299
89659
|
);
|
|
89300
89660
|
const handleContractorHover = (contractorId) => {
|
|
@@ -89947,7 +90307,7 @@ function ResourceDetailDocumentSidebar({
|
|
|
89947
90307
|
}) {
|
|
89948
90308
|
const renderedBreadcrumbs = useMemo(() => {
|
|
89949
90309
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
89950
|
-
return /* @__PURE__ */ jsx(Breadcrumb, { className: breadcrumbsClassName, children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(
|
|
90310
|
+
return /* @__PURE__ */ jsx(Breadcrumb, { className: breadcrumbsClassName, children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
89951
90311
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: !crumb.href ? /* @__PURE__ */ jsx(BreadcrumbPage, { children: typeof crumb.label === "string" ? crumb.label : crumb.label }) : /* @__PURE__ */ jsx(BreadcrumbLink, { href: crumb.href, children: index === 0 ? /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) : typeof crumb.label === "string" ? crumb.label : crumb.label }) }),
|
|
89952
90312
|
index < (breadcrumbs?.length || 0) - 1 && /* @__PURE__ */ jsx(BreadcrumbSeparator, {})
|
|
89953
90313
|
] }, index)) }) });
|
|
@@ -93348,8 +93708,8 @@ function ServicesListTableHover({
|
|
|
93348
93708
|
patternOpacity,
|
|
93349
93709
|
optixFlowConfig
|
|
93350
93710
|
}) {
|
|
93351
|
-
const [hoveredIndex, setHoveredIndex] =
|
|
93352
|
-
const [mousePosition, setMousePosition] =
|
|
93711
|
+
const [hoveredIndex, setHoveredIndex] = React50.useState(null);
|
|
93712
|
+
const [mousePosition, setMousePosition] = React50.useState({ x: 0, y: 0 });
|
|
93353
93713
|
const handleMouseMove = (e) => {
|
|
93354
93714
|
setMousePosition({ x: e.clientX, y: e.clientY });
|
|
93355
93715
|
};
|
|
@@ -93599,7 +93959,7 @@ function ServicesListStickyImage({
|
|
|
93599
93959
|
patternOpacity,
|
|
93600
93960
|
optixFlowConfig
|
|
93601
93961
|
}) {
|
|
93602
|
-
const [activeIndex, setActiveIndex] =
|
|
93962
|
+
const [activeIndex, setActiveIndex] = React50.useState(0);
|
|
93603
93963
|
const renderServices = () => {
|
|
93604
93964
|
if (servicesSlot) return servicesSlot;
|
|
93605
93965
|
if (!services || services.length === 0) return null;
|
|
@@ -93851,8 +94211,8 @@ function ServicesListVideoShowcase({
|
|
|
93851
94211
|
patternOpacity,
|
|
93852
94212
|
optixFlowConfig
|
|
93853
94213
|
}) {
|
|
93854
|
-
const [playingIndex, setPlayingIndex] =
|
|
93855
|
-
const videoRefs =
|
|
94214
|
+
const [playingIndex, setPlayingIndex] = React50.useState(null);
|
|
94215
|
+
const videoRefs = React50.useRef([]);
|
|
93856
94216
|
const handleMouseEnter = (index) => {
|
|
93857
94217
|
setPlayingIndex(index);
|
|
93858
94218
|
videoRefs.current[index]?.play();
|
|
@@ -97145,7 +97505,7 @@ function StatsCircularProgress({
|
|
|
97145
97505
|
statInfoClassName
|
|
97146
97506
|
}) {
|
|
97147
97507
|
const effectiveDefaultCategory = defaultCategory || (categories && categories.length > 0 ? categories[0].id : "");
|
|
97148
|
-
const [category, setCategory] =
|
|
97508
|
+
const [category, setCategory] = React50.useState(effectiveDefaultCategory);
|
|
97149
97509
|
const badgeContent = useMemo(() => {
|
|
97150
97510
|
if (badgeSlot) return badgeSlot;
|
|
97151
97511
|
if (!badge) return null;
|
|
@@ -97438,8 +97798,8 @@ function StatsCardGroup({
|
|
|
97438
97798
|
);
|
|
97439
97799
|
}
|
|
97440
97800
|
function useAnimatedCounter(endValue, duration = 2e3, isVisible) {
|
|
97441
|
-
const [count, setCount] =
|
|
97442
|
-
|
|
97801
|
+
const [count, setCount] = React50.useState(0);
|
|
97802
|
+
React50.useEffect(() => {
|
|
97443
97803
|
if (!isVisible) return;
|
|
97444
97804
|
let startTime = null;
|
|
97445
97805
|
let animationFrame;
|
|
@@ -97527,9 +97887,9 @@ function StatsAnimatedCounter({
|
|
|
97527
97887
|
statLabelClassName,
|
|
97528
97888
|
statIconClassName
|
|
97529
97889
|
}) {
|
|
97530
|
-
const [isVisible, setIsVisible] =
|
|
97531
|
-
const sectionRef =
|
|
97532
|
-
|
|
97890
|
+
const [isVisible, setIsVisible] = React50.useState(false);
|
|
97891
|
+
const sectionRef = React50.useRef(null);
|
|
97892
|
+
React50.useEffect(() => {
|
|
97533
97893
|
const observer = new IntersectionObserver(
|
|
97534
97894
|
([entry]) => {
|
|
97535
97895
|
if (entry.isIntersecting) {
|
|
@@ -97617,8 +97977,8 @@ function StatsAnimatedCounter({
|
|
|
97617
97977
|
);
|
|
97618
97978
|
}
|
|
97619
97979
|
function useNumberTicker(endValue, duration = 2500, isVisible, decimals = 0) {
|
|
97620
|
-
const [displayValue, setDisplayValue] =
|
|
97621
|
-
|
|
97980
|
+
const [displayValue, setDisplayValue] = React50.useState("0");
|
|
97981
|
+
React50.useEffect(() => {
|
|
97622
97982
|
if (!isVisible) return;
|
|
97623
97983
|
let startTime = null;
|
|
97624
97984
|
let animationFrame;
|
|
@@ -97733,9 +98093,9 @@ function StatsNumberTicker({
|
|
|
97733
98093
|
statLabelClassName,
|
|
97734
98094
|
statDescriptionClassName
|
|
97735
98095
|
}) {
|
|
97736
|
-
const [isVisible, setIsVisible] =
|
|
97737
|
-
const sectionRef =
|
|
97738
|
-
|
|
98096
|
+
const [isVisible, setIsVisible] = React50.useState(false);
|
|
98097
|
+
const sectionRef = React50.useRef(null);
|
|
98098
|
+
React50.useEffect(() => {
|
|
97739
98099
|
const observer = new IntersectionObserver(
|
|
97740
98100
|
([entry]) => {
|
|
97741
98101
|
if (entry.isIntersecting) {
|
|
@@ -97994,9 +98354,9 @@ function StatsBarComparison({
|
|
|
97994
98354
|
barValueClassName,
|
|
97995
98355
|
barTrackClassName
|
|
97996
98356
|
}) {
|
|
97997
|
-
const [isVisible, setIsVisible] =
|
|
97998
|
-
const sectionRef =
|
|
97999
|
-
|
|
98357
|
+
const [isVisible, setIsVisible] = React50.useState(!animate);
|
|
98358
|
+
const sectionRef = React50.useRef(null);
|
|
98359
|
+
React50.useEffect(() => {
|
|
98000
98360
|
if (!animate) return;
|
|
98001
98361
|
const observer = new IntersectionObserver(
|
|
98002
98362
|
([entry]) => {
|
|
@@ -98174,7 +98534,7 @@ function TimelineVerticalIconDashed({
|
|
|
98174
98534
|
"mx-auto flex flex-col items-center justify-center text-center sm:max-w-xl",
|
|
98175
98535
|
stepsClassName
|
|
98176
98536
|
),
|
|
98177
|
-
children: steps.map((step, index) => /* @__PURE__ */ jsxs(
|
|
98537
|
+
children: steps.map((step, index) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
98178
98538
|
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center", stepClassName), children: [
|
|
98179
98539
|
/* @__PURE__ */ jsx(
|
|
98180
98540
|
"span",
|
|
@@ -98441,7 +98801,7 @@ function TimelineTwoColumnFeatured({
|
|
|
98441
98801
|
style,
|
|
98442
98802
|
optixFlowConfig
|
|
98443
98803
|
}) {
|
|
98444
|
-
const renderActions =
|
|
98804
|
+
const renderActions = React50.useMemo(() => {
|
|
98445
98805
|
if (actionsSlot) {
|
|
98446
98806
|
return actionsSlot;
|
|
98447
98807
|
}
|
|
@@ -98569,7 +98929,7 @@ function TimelineTwoColumnFeatured({
|
|
|
98569
98929
|
}
|
|
98570
98930
|
);
|
|
98571
98931
|
}
|
|
98572
|
-
var DiagonalPattern =
|
|
98932
|
+
var DiagonalPattern = React50.memo(({
|
|
98573
98933
|
className,
|
|
98574
98934
|
patternOpacity = 0.15
|
|
98575
98935
|
}) => {
|
|
@@ -98608,7 +98968,7 @@ function TimelineAlternatingDiagonal({
|
|
|
98608
98968
|
style,
|
|
98609
98969
|
optixFlowConfig
|
|
98610
98970
|
}) {
|
|
98611
|
-
const renderedBadge =
|
|
98971
|
+
const renderedBadge = React50.useMemo(() => {
|
|
98612
98972
|
if (badgeSlot) {
|
|
98613
98973
|
return badgeSlot;
|
|
98614
98974
|
}
|
|
@@ -98986,7 +99346,7 @@ function TimelineProductivityList({
|
|
|
98986
99346
|
}
|
|
98987
99347
|
);
|
|
98988
99348
|
}
|
|
98989
|
-
var ProcessBar =
|
|
99349
|
+
var ProcessBar = React50.memo(({ currentStep, steps }) => /* @__PURE__ */ jsx("div", { className: "relative w-full scale-75", children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between", children: steps.map((step, index) => /* @__PURE__ */ jsxs(React50.Fragment, { children: [
|
|
98990
99350
|
/* @__PURE__ */ jsx("div", { className: "flex flex-col items-center", children: /* @__PURE__ */ jsx(
|
|
98991
99351
|
motion.div,
|
|
98992
99352
|
{
|
|
@@ -99013,7 +99373,7 @@ var ProcessBar = React51.memo(({ currentStep, steps }) => /* @__PURE__ */ jsx("d
|
|
|
99013
99373
|
)
|
|
99014
99374
|
] })
|
|
99015
99375
|
] }, index)) }) }));
|
|
99016
|
-
var StepperContent =
|
|
99376
|
+
var StepperContent = React50.memo(({ step, optixFlowConfig, imageClassName, descriptionClassName, background }) => {
|
|
99017
99377
|
return /* @__PURE__ */ jsxs("div", { className: cn("my-4 flex min-h-[400px] w-full flex-col items-center justify-center overflow-hidden rounded-2xl p-6 text-center", getNestedCardBg(background), getNestedCardTextColor(background)), children: [
|
|
99018
99378
|
/* @__PURE__ */ jsx(
|
|
99019
99379
|
motion.div,
|
|
@@ -99046,7 +99406,7 @@ var StepperContent = React51.memo(({ step, optixFlowConfig, imageClassName, desc
|
|
|
99046
99406
|
)
|
|
99047
99407
|
] });
|
|
99048
99408
|
});
|
|
99049
|
-
var NavButtons =
|
|
99409
|
+
var NavButtons = React50.memo(({ handlePrev, handleNext }) => /* @__PURE__ */ jsxs("div", { className: "flex w-full justify-end gap-3 tracking-tight", children: [
|
|
99050
99410
|
/* @__PURE__ */ jsxs(
|
|
99051
99411
|
Pressable,
|
|
99052
99412
|
{
|
|
@@ -99097,10 +99457,10 @@ function TimelineStepperAnimated({
|
|
|
99097
99457
|
}) {
|
|
99098
99458
|
const safeInitialStep = (steps?.length ?? 0) > 0 ? Math.max(0, Math.min(initialStep ?? 0, (steps?.length ?? 1) - 1)) : 0;
|
|
99099
99459
|
const [currentStep, setCurrentStep] = useState(safeInitialStep);
|
|
99100
|
-
const handleNext =
|
|
99460
|
+
const handleNext = React50.useCallback(() => {
|
|
99101
99461
|
setCurrentStep((prev) => Math.min(prev + 1, (steps?.length ?? 1) - 1));
|
|
99102
99462
|
}, [steps?.length]);
|
|
99103
|
-
const handlePrev =
|
|
99463
|
+
const handlePrev = React50.useCallback(() => {
|
|
99104
99464
|
setCurrentStep((prev) => Math.max(prev - 1, 0));
|
|
99105
99465
|
}, []);
|
|
99106
99466
|
const safeCurrentStep = (steps?.length ?? 0) > 0 ? Math.max(0, Math.min(currentStep, (steps?.length ?? 1) - 1)) : 0;
|
|
@@ -99809,7 +100169,7 @@ function TimelineTabbedPhases({
|
|
|
99809
100169
|
style,
|
|
99810
100170
|
optixFlowConfig
|
|
99811
100171
|
}) {
|
|
99812
|
-
const renderDownloadButton =
|
|
100172
|
+
const renderDownloadButton = React50.useMemo(() => {
|
|
99813
100173
|
if (downloadSlot) {
|
|
99814
100174
|
return downloadSlot;
|
|
99815
100175
|
}
|
|
@@ -100029,7 +100389,7 @@ function TimelineProductLaunch({
|
|
|
100029
100389
|
id,
|
|
100030
100390
|
style
|
|
100031
100391
|
}) {
|
|
100032
|
-
const renderCta =
|
|
100392
|
+
const renderCta = React50.useMemo(() => {
|
|
100033
100393
|
if (ctaSlot) {
|
|
100034
100394
|
return ctaSlot;
|
|
100035
100395
|
}
|
|
@@ -100494,9 +100854,9 @@ function LinkTreeBlock({
|
|
|
100494
100854
|
}) {
|
|
100495
100855
|
const resolvedBackground = background;
|
|
100496
100856
|
const resolvedPattern = pattern ?? backgroundPattern;
|
|
100497
|
-
const [lightboxOpen, setLightboxOpen] =
|
|
100498
|
-
const [lightboxIndex, setLightboxIndex] =
|
|
100499
|
-
const lightboxItems =
|
|
100857
|
+
const [lightboxOpen, setLightboxOpen] = React50.useState(false);
|
|
100858
|
+
const [lightboxIndex, setLightboxIndex] = React50.useState(0);
|
|
100859
|
+
const lightboxItems = React50.useMemo(() => {
|
|
100500
100860
|
if (!mediaGallery || mediaGallery.length === 0) return [];
|
|
100501
100861
|
return mediaGallery.slice(0, mediaGalleryLimit).map((item, index) => ({
|
|
100502
100862
|
id: item.id ?? `media-${index}`,
|
|
@@ -100508,11 +100868,11 @@ function LinkTreeBlock({
|
|
|
100508
100868
|
share: true
|
|
100509
100869
|
}));
|
|
100510
100870
|
}, [mediaGallery, mediaGalleryLimit]);
|
|
100511
|
-
const handleMediaClick =
|
|
100871
|
+
const handleMediaClick = React50.useCallback((index) => {
|
|
100512
100872
|
setLightboxIndex(index);
|
|
100513
100873
|
setLightboxOpen(true);
|
|
100514
100874
|
}, []);
|
|
100515
|
-
const handleLightboxClose =
|
|
100875
|
+
const handleLightboxClose = React50.useCallback(() => {
|
|
100516
100876
|
setLightboxOpen(false);
|
|
100517
100877
|
}, []);
|
|
100518
100878
|
const resolveImage = (value, fallbackAlt) => {
|
|
@@ -100524,7 +100884,7 @@ function LinkTreeBlock({
|
|
|
100524
100884
|
};
|
|
100525
100885
|
const nameForAlt = typeof brandName === "string" ? brandName : "Brand avatar";
|
|
100526
100886
|
const resolvedAvatar = resolveImage(brandAvatar || brandLogo, nameForAlt) || resolveImage(blockBrandedIconsAndPlaceholders.avatar1, nameForAlt);
|
|
100527
|
-
const renderBrandHeader =
|
|
100887
|
+
const renderBrandHeader = React50.useMemo(() => {
|
|
100528
100888
|
if (brandSlot) return brandSlot;
|
|
100529
100889
|
return /* @__PURE__ */ jsxs(
|
|
100530
100890
|
"div",
|
|
@@ -100611,7 +100971,7 @@ function LinkTreeBlock({
|
|
|
100611
100971
|
brandTagline,
|
|
100612
100972
|
taglineClassName
|
|
100613
100973
|
]);
|
|
100614
|
-
const renderLinks =
|
|
100974
|
+
const renderLinks = React50.useMemo(() => {
|
|
100615
100975
|
if (linksSlot) return linksSlot;
|
|
100616
100976
|
if (!links || links.length === 0) return null;
|
|
100617
100977
|
return /* @__PURE__ */ jsx("div", { className: cn("space-y-3", linksClassName), children: links.map((link, index) => {
|
|
@@ -100728,7 +101088,7 @@ function LinkTreeBlock({
|
|
|
100728
101088
|
linkBadgeClassName,
|
|
100729
101089
|
linkChevronClassName
|
|
100730
101090
|
]);
|
|
100731
|
-
const renderMediaGallery =
|
|
101091
|
+
const renderMediaGallery = React50.useMemo(() => {
|
|
100732
101092
|
if (mediaGallerySlot) return mediaGallerySlot;
|
|
100733
101093
|
if (!mediaGallery || mediaGallery.length === 0) return null;
|
|
100734
101094
|
const items = mediaGallery.slice(0, mediaGalleryLimit);
|
|
@@ -100842,7 +101202,7 @@ function LinkTreeBlock({
|
|
|
100842
101202
|
mediaGalleryOverlayClassName,
|
|
100843
101203
|
mediaGalleryPlayIconClassName
|
|
100844
101204
|
]);
|
|
100845
|
-
const renderSocialLinks =
|
|
101205
|
+
const renderSocialLinks = React50.useMemo(() => {
|
|
100846
101206
|
if (socialLinksSlot) return socialLinksSlot;
|
|
100847
101207
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
100848
101208
|
return /* @__PURE__ */ jsx(
|
|
@@ -100888,7 +101248,7 @@ function LinkTreeBlock({
|
|
|
100888
101248
|
socialIconClassName,
|
|
100889
101249
|
socialLinkClassName
|
|
100890
101250
|
]);
|
|
100891
|
-
const renderFooter =
|
|
101251
|
+
const renderFooter = React50.useMemo(() => {
|
|
100892
101252
|
if (footerSlot) return footerSlot;
|
|
100893
101253
|
if (!footerAction) return null;
|
|
100894
101254
|
const resolvedFooterAction = footerAction;
|