@luxonis/component-lib 1.1.1 → 1.1.3
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/index.css +1 -1
- package/dist/index.d.mts +34 -16
- package/dist/index.d.ts +34 -16
- package/dist/index.js +234 -180
- package/dist/index.mjs +213 -162
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -134,6 +134,7 @@ __export(index_exports, {
|
|
|
134
134
|
showcaseMail: () => showcaseMail,
|
|
135
135
|
showcaseMailClean: () => showcaseMailClean,
|
|
136
136
|
status: () => status,
|
|
137
|
+
stereoTuningAssistance: () => stereoTuningAssistance,
|
|
137
138
|
store: () => store,
|
|
138
139
|
supportForm: () => supportForm,
|
|
139
140
|
supportMail: () => supportMail,
|
|
@@ -141,6 +142,8 @@ __export(index_exports, {
|
|
|
141
142
|
techcrunch: () => techcrunch,
|
|
142
143
|
termsOfService: () => termsOfService,
|
|
143
144
|
twitter: () => twitter,
|
|
145
|
+
useChat: () => useChat,
|
|
146
|
+
useChatContext: () => useChatContext,
|
|
144
147
|
useRudderStackAnalytics: () => useRudderStackAnalytics,
|
|
145
148
|
youtube: () => youtube
|
|
146
149
|
});
|
|
@@ -728,7 +731,7 @@ var DescriptionRecepie = (0, import_class_variance_authority7.cva)("flex flex-co
|
|
|
728
731
|
left: "items-start",
|
|
729
732
|
right: "items-end",
|
|
730
733
|
leftCenterMobile: "items-start sm:items-center",
|
|
731
|
-
desktopCenterMobileLeft: "w-full items-start !text-left sm
|
|
734
|
+
desktopCenterMobileLeft: "w-full items-start !text-left sm:!items-center sm:!text-center",
|
|
732
735
|
desktopLeftMobileCenter: "w-full items-center !text-center lg:items-start lg:!text-left"
|
|
733
736
|
},
|
|
734
737
|
gap: {
|
|
@@ -819,6 +822,9 @@ var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
|
819
822
|
var Hero = (props) => {
|
|
820
823
|
const { title, description, button, bgImageLink, desctipionSize = "default" } = props;
|
|
821
824
|
const descriptionSize = () => {
|
|
825
|
+
if (!description) {
|
|
826
|
+
return "";
|
|
827
|
+
}
|
|
822
828
|
if (desctipionSize === "lg") {
|
|
823
829
|
return (0, import_class_variance_authority9.cx)("lg:max-w-[525px] max-w-96");
|
|
824
830
|
}
|
|
@@ -837,7 +843,7 @@ var Hero = (props) => {
|
|
|
837
843
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "page-card-content relative size-full h-[810px] w-full sm:h-[914px]", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: " absolute inset-x-0 bottom-10 mx-auto flex w-full flex-col items-center justify-between gap-4 md:flex-row md:items-end ", children: [
|
|
838
844
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex w-full flex-row justify-center text-white md:justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { text: title, size: "h1", className: "z-[2] w-96 text-h4 sm:text-h4 xl:w-auto xl:text-h1" }) }),
|
|
839
845
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: (0, import_class_variance_authority9.cx)("flex flex-col gap-8 md:gap-6 z-[2]", descriptionSize()), children: [
|
|
840
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { text: description, color: "white", size: "lg" }),
|
|
846
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { text: description, color: "white", size: "lg" }),
|
|
841
847
|
button
|
|
842
848
|
] })
|
|
843
849
|
] }) }),
|
|
@@ -1196,62 +1202,101 @@ var Textarea = React12.forwardRef(
|
|
|
1196
1202
|
Textarea.displayName = "Textarea";
|
|
1197
1203
|
|
|
1198
1204
|
// src/Video.tsx
|
|
1205
|
+
var import_react_full_screen = require("react-full-screen");
|
|
1199
1206
|
var import_react10 = require("react");
|
|
1207
|
+
var import_class_variance_authority18 = require("class-variance-authority");
|
|
1208
|
+
var import_react11 = require("@iconify/react");
|
|
1209
|
+
var import_react_intersection_observer = require("react-intersection-observer");
|
|
1200
1210
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1201
|
-
|
|
1211
|
+
function Video(props) {
|
|
1212
|
+
const {
|
|
1213
|
+
src,
|
|
1214
|
+
buttonPlay,
|
|
1215
|
+
buttonRepeat,
|
|
1216
|
+
className,
|
|
1217
|
+
wrapperClassName,
|
|
1218
|
+
autoPlayInView,
|
|
1219
|
+
buttonFullscreen,
|
|
1220
|
+
...rest
|
|
1221
|
+
} = props;
|
|
1202
1222
|
const videoRef = (0, import_react10.useRef)(null);
|
|
1203
|
-
const
|
|
1204
|
-
(0, import_react10.
|
|
1205
|
-
togglePlay: () => {
|
|
1206
|
-
if (videoRef.current) {
|
|
1207
|
-
if (videoRef.current.paused) {
|
|
1208
|
-
videoRef.current.play();
|
|
1209
|
-
setIsPlaying(true);
|
|
1210
|
-
} else {
|
|
1211
|
-
videoRef.current.pause();
|
|
1212
|
-
setIsPlaying(false);
|
|
1213
|
-
}
|
|
1214
|
-
}
|
|
1215
|
-
}
|
|
1216
|
-
}));
|
|
1223
|
+
const { ref, inView } = (0, import_react_intersection_observer.useInView)({});
|
|
1224
|
+
const [isPlaying, setIsPlaying] = (0, import_react10.useState)(true);
|
|
1217
1225
|
const setPlaying = () => {
|
|
1218
|
-
if (
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
} else {
|
|
1223
|
-
videoRef.current.pause();
|
|
1224
|
-
setIsPlaying(false);
|
|
1225
|
-
}
|
|
1226
|
+
if (isPlaying) {
|
|
1227
|
+
videoRef.current?.pause();
|
|
1228
|
+
setIsPlaying(false);
|
|
1229
|
+
return;
|
|
1226
1230
|
}
|
|
1231
|
+
setIsPlaying(true);
|
|
1232
|
+
videoRef.current?.play();
|
|
1227
1233
|
};
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1234
|
+
(0, import_react10.useEffect)(() => {
|
|
1235
|
+
if (autoPlayInView && inView) {
|
|
1236
|
+
videoRef.current?.play();
|
|
1237
|
+
}
|
|
1238
|
+
}, [autoPlayInView, inView]);
|
|
1239
|
+
const setStart = () => {
|
|
1240
|
+
const v = videoRef.current;
|
|
1241
|
+
if (!v) return;
|
|
1242
|
+
v.pause();
|
|
1243
|
+
v.currentTime = 0;
|
|
1244
|
+
void v.play();
|
|
1245
|
+
};
|
|
1246
|
+
const handle = (0, import_react_full_screen.useFullScreenHandle)();
|
|
1247
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_full_screen.FullScreen, { handle, className: `flex items-center justify-center `, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: (0, import_class_variance_authority18.cx)("relative size-full", handle.active ? "!max-h-none" : "", wrapperClassName), ref, children: [
|
|
1248
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1249
|
+
"video",
|
|
1232
1250
|
{
|
|
1233
|
-
|
|
1234
|
-
icon: "mdi:play",
|
|
1235
|
-
role: "icon",
|
|
1251
|
+
...rest,
|
|
1236
1252
|
onClick: () => setPlaying(),
|
|
1237
|
-
|
|
1253
|
+
ref: videoRef,
|
|
1254
|
+
className: (0, import_class_variance_authority18.cx)("size-full object-cover", className, handle.active ? "!max-h-none" : ""),
|
|
1255
|
+
src,
|
|
1256
|
+
children: "Your browser does not support the video tag."
|
|
1238
1257
|
}
|
|
1239
|
-
)
|
|
1240
|
-
|
|
1241
|
-
|
|
1258
|
+
),
|
|
1259
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "absolute bottom-2 right-2 z-10 flex items-center justify-center gap-2", children: [
|
|
1260
|
+
buttonRepeat && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1261
|
+
"button",
|
|
1262
|
+
{
|
|
1263
|
+
className: " flex size-10 items-center justify-center rounded-full bg-black/50 text-white",
|
|
1264
|
+
onClick: () => setStart(),
|
|
1265
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react11.Icon, { icon: "fa:repeat", className: "" })
|
|
1266
|
+
}
|
|
1267
|
+
),
|
|
1268
|
+
buttonPlay && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1269
|
+
"button",
|
|
1270
|
+
{
|
|
1271
|
+
className: " flex size-10 items-center justify-center rounded-full bg-black/50 p-1.5 text-white",
|
|
1272
|
+
onClick: () => setPlaying(),
|
|
1273
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react11.Icon, { icon: isPlaying ? "mdi:pause" : "mdi:play", className: "" })
|
|
1274
|
+
}
|
|
1275
|
+
),
|
|
1276
|
+
buttonFullscreen && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1277
|
+
"button",
|
|
1278
|
+
{
|
|
1279
|
+
className: " flex size-10 items-center justify-center rounded-full bg-black/50 p-1.5 text-white",
|
|
1280
|
+
onClick: () => handle.active ? handle.exit() : handle.enter(),
|
|
1281
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react11.Icon, { icon: handle.active ? "mdi:fullscreen-exit" : "mdi:fullscreen", className: "" })
|
|
1282
|
+
}
|
|
1283
|
+
)
|
|
1284
|
+
] })
|
|
1285
|
+
] }) });
|
|
1286
|
+
}
|
|
1242
1287
|
Video.displayName = "Video";
|
|
1243
1288
|
|
|
1244
1289
|
// src/Checkbox.tsx
|
|
1245
1290
|
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"));
|
|
1246
|
-
var
|
|
1247
|
-
var
|
|
1291
|
+
var import_class_variance_authority19 = require("class-variance-authority");
|
|
1292
|
+
var import_react12 = require("@iconify/react");
|
|
1248
1293
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1249
1294
|
function Checkbox({ className, ...props }) {
|
|
1250
1295
|
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1251
1296
|
CheckboxPrimitive.Root,
|
|
1252
1297
|
{
|
|
1253
1298
|
"data-slot": "checkbox",
|
|
1254
|
-
className: (0,
|
|
1299
|
+
className: (0, import_class_variance_authority19.cx)(
|
|
1255
1300
|
"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
|
|
1256
1301
|
className
|
|
1257
1302
|
),
|
|
@@ -1261,7 +1306,7 @@ function Checkbox({ className, ...props }) {
|
|
|
1261
1306
|
{
|
|
1262
1307
|
"data-slot": "checkbox-indicator",
|
|
1263
1308
|
className: "flex items-center justify-center text-current transition-none",
|
|
1264
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1309
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react12.Icon, { className: "size-3.5 text-white", icon: "lucide:check" })
|
|
1265
1310
|
}
|
|
1266
1311
|
)
|
|
1267
1312
|
}
|
|
@@ -1269,25 +1314,25 @@ function Checkbox({ className, ...props }) {
|
|
|
1269
1314
|
}
|
|
1270
1315
|
|
|
1271
1316
|
// src/DualRangeSlider.tsx
|
|
1272
|
-
var
|
|
1317
|
+
var React13 = __toESM(require("react"));
|
|
1273
1318
|
var SliderPrimitive = __toESM(require("@radix-ui/react-slider"));
|
|
1274
|
-
var
|
|
1319
|
+
var import_class_variance_authority20 = require("class-variance-authority");
|
|
1275
1320
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1276
|
-
var DualRangeSlider =
|
|
1321
|
+
var DualRangeSlider = React13.forwardRef(
|
|
1277
1322
|
({ className, label, labelPosition = "top", ...props }, ref) => {
|
|
1278
1323
|
const initialValue = Array.isArray(props.value) ? props.value : [props.min, props.max];
|
|
1279
1324
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
1280
1325
|
SliderPrimitive.Root,
|
|
1281
1326
|
{
|
|
1282
1327
|
ref,
|
|
1283
|
-
className: (0,
|
|
1328
|
+
className: (0, import_class_variance_authority20.cx)("relative flex w-full touch-none select-none items-center", className),
|
|
1284
1329
|
...props,
|
|
1285
1330
|
children: [
|
|
1286
1331
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SliderPrimitive.Track, { className: "relative h-2 w-full grow overflow-hidden rounded-full bg-secondary", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
|
|
1287
|
-
initialValue.map((value, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1332
|
+
initialValue.map((value, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(React13.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SliderPrimitive.Thumb, { className: "ring-offset-background focus-visible:ring-ring relative block size-4 rounded-full border-2 border-primary bg-primary transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", children: label && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1288
1333
|
"span",
|
|
1289
1334
|
{
|
|
1290
|
-
className: (0,
|
|
1335
|
+
className: (0, import_class_variance_authority20.cx)(
|
|
1291
1336
|
"absolute flex w-full justify-center",
|
|
1292
1337
|
labelPosition === "top" && "-top-7",
|
|
1293
1338
|
labelPosition === "bottom" && "top-4"
|
|
@@ -1303,13 +1348,13 @@ var DualRangeSlider = React14.forwardRef(
|
|
|
1303
1348
|
DualRangeSlider.displayName = "DualRangeSlider";
|
|
1304
1349
|
|
|
1305
1350
|
// src/LuxonisChat.tsx
|
|
1306
|
-
var
|
|
1351
|
+
var import_react13 = require("react");
|
|
1307
1352
|
var import_markdown_it = __toESM(require("markdown-it"));
|
|
1308
|
-
var
|
|
1353
|
+
var import_react14 = require("@iconify/react");
|
|
1309
1354
|
|
|
1310
1355
|
// src/Tooltip.tsx
|
|
1311
1356
|
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
|
|
1312
|
-
var
|
|
1357
|
+
var import_class_variance_authority21 = require("class-variance-authority");
|
|
1313
1358
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1314
1359
|
function TooltipProvider({ delayDuration = 0, ...props }) {
|
|
1315
1360
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delayDuration, ...props });
|
|
@@ -1331,7 +1376,7 @@ function TooltipContent({
|
|
|
1331
1376
|
{
|
|
1332
1377
|
"data-slot": "tooltip-content",
|
|
1333
1378
|
sideOffset,
|
|
1334
|
-
className: (0,
|
|
1379
|
+
className: (0, import_class_variance_authority21.cx)(
|
|
1335
1380
|
"bg-white text-black shadow-md shadow-secondaryBorder animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
|
|
1336
1381
|
className
|
|
1337
1382
|
),
|
|
@@ -1348,11 +1393,11 @@ function TooltipContent({
|
|
|
1348
1393
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1349
1394
|
function ChatButton(props) {
|
|
1350
1395
|
const { chatOpened, setChatOpened, messageFromSearch, setMessageFromSearch } = props;
|
|
1351
|
-
const [hold, setHold] = (0,
|
|
1352
|
-
const [iconKey, setIconKey] = (0,
|
|
1353
|
-
const [loading, setLoading] = (0,
|
|
1354
|
-
const [userInput, setUserInput] = (0,
|
|
1355
|
-
const [messages, setMessages] = (0,
|
|
1396
|
+
const [hold, setHold] = (0, import_react13.useState)(false);
|
|
1397
|
+
const [iconKey, setIconKey] = (0, import_react13.useState)(0);
|
|
1398
|
+
const [loading, setLoading] = (0, import_react13.useState)(false);
|
|
1399
|
+
const [userInput, setUserInput] = (0, import_react13.useState)("");
|
|
1400
|
+
const [messages, setMessages] = (0, import_react13.useState)([
|
|
1356
1401
|
{
|
|
1357
1402
|
id: -1,
|
|
1358
1403
|
user: "bot",
|
|
@@ -1360,10 +1405,10 @@ function ChatButton(props) {
|
|
|
1360
1405
|
loading: false
|
|
1361
1406
|
}
|
|
1362
1407
|
]);
|
|
1363
|
-
const [slackThreadTs, setSlackThreadTs] = (0,
|
|
1364
|
-
const inputRef = (0,
|
|
1365
|
-
const messageListRef = (0,
|
|
1366
|
-
const formRef = (0,
|
|
1408
|
+
const [slackThreadTs, setSlackThreadTs] = (0, import_react13.useState)(null);
|
|
1409
|
+
const inputRef = (0, import_react13.useRef)(null);
|
|
1410
|
+
const messageListRef = (0, import_react13.useRef)(null);
|
|
1411
|
+
const formRef = (0, import_react13.useRef)(null);
|
|
1367
1412
|
const loadingMessages = [
|
|
1368
1413
|
"Please wait...",
|
|
1369
1414
|
"Hold on...",
|
|
@@ -1376,7 +1421,7 @@ function ChatButton(props) {
|
|
|
1376
1421
|
"Almost there...",
|
|
1377
1422
|
"Please hold on..."
|
|
1378
1423
|
];
|
|
1379
|
-
const fetchData = (0,
|
|
1424
|
+
const fetchData = (0, import_react13.useCallback)(
|
|
1380
1425
|
async (message) => {
|
|
1381
1426
|
try {
|
|
1382
1427
|
const response = await fetch("https://chat.luxonis.com/api/chat", {
|
|
@@ -1411,7 +1456,7 @@ function ChatButton(props) {
|
|
|
1411
1456
|
},
|
|
1412
1457
|
[messages, slackThreadTs]
|
|
1413
1458
|
);
|
|
1414
|
-
const onSubmit = (0,
|
|
1459
|
+
const onSubmit = (0, import_react13.useCallback)(
|
|
1415
1460
|
async (e) => {
|
|
1416
1461
|
e?.preventDefault();
|
|
1417
1462
|
if (userInput.trim() !== "") {
|
|
@@ -1446,7 +1491,7 @@ function ChatButton(props) {
|
|
|
1446
1491
|
},
|
|
1447
1492
|
[userInput, messages, fetchData, setMessageFromSearch, setLoading]
|
|
1448
1493
|
);
|
|
1449
|
-
const handleEnter = (0,
|
|
1494
|
+
const handleEnter = (0, import_react13.useCallback)(
|
|
1450
1495
|
(e) => {
|
|
1451
1496
|
if (e.key === "Enter" && userInput.trim() !== "") {
|
|
1452
1497
|
if (!e.shiftKey && userInput.trim() !== "") {
|
|
@@ -1459,13 +1504,13 @@ function ChatButton(props) {
|
|
|
1459
1504
|
},
|
|
1460
1505
|
[userInput, onSubmit]
|
|
1461
1506
|
);
|
|
1462
|
-
(0,
|
|
1507
|
+
(0, import_react13.useEffect)(() => {
|
|
1463
1508
|
if (messageListRef.current) {
|
|
1464
1509
|
const messageList = messageListRef.current;
|
|
1465
1510
|
messageList.scrollTop = messageList.scrollHeight;
|
|
1466
1511
|
}
|
|
1467
1512
|
}, [messages]);
|
|
1468
|
-
(0,
|
|
1513
|
+
(0, import_react13.useEffect)(() => {
|
|
1469
1514
|
async function fetchSearchQuery() {
|
|
1470
1515
|
setUserInput(`Can you tell me about ${messageFromSearch}`);
|
|
1471
1516
|
await onSubmit(void 0);
|
|
@@ -1506,7 +1551,7 @@ function ChatButton(props) {
|
|
|
1506
1551
|
animationTimingFunction: "ease-in"
|
|
1507
1552
|
},
|
|
1508
1553
|
className: "flex size-full items-center justify-center",
|
|
1509
|
-
children: chatOpened ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1554
|
+
children: chatOpened ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react14.Icon, { icon: "mdi:close", className: "size-[32px] text-white" }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("img", { src: "https://docs.luxonis.com/static/images/icons/chat-icon.svg", width: "32", height: "32", alt: "Chat" })
|
|
1510
1555
|
},
|
|
1511
1556
|
iconKey
|
|
1512
1557
|
)
|
|
@@ -1516,7 +1561,7 @@ function ChatButton(props) {
|
|
|
1516
1561
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex h-8 flex-row justify-between gap-2", children: [
|
|
1517
1562
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("h2", { className: "relative text-2xl", children: [
|
|
1518
1563
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { target: "_blank", rel: "noopener noreferrer", href: "https://chat.luxonis.com", children: "Chat with Luxonis AI" }),
|
|
1519
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1564
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react14.Icon, { icon: "mingcute:ai-fill", className: "absolute -right-4 -top-2 size-5 text-primary" })
|
|
1520
1565
|
] }),
|
|
1521
1566
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex flex-row items-center justify-end ", children: [
|
|
1522
1567
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Tooltip, { children: [
|
|
@@ -1538,7 +1583,7 @@ function ChatButton(props) {
|
|
|
1538
1583
|
setSlackThreadTs(null);
|
|
1539
1584
|
},
|
|
1540
1585
|
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1541
|
-
|
|
1586
|
+
import_react14.Icon,
|
|
1542
1587
|
{
|
|
1543
1588
|
icon: "fluent:chat-add-16-regular",
|
|
1544
1589
|
className: loading ? "text-black/40" : "text-primary",
|
|
@@ -1557,7 +1602,7 @@ function ChatButton(props) {
|
|
|
1557
1602
|
setChatOpened(false);
|
|
1558
1603
|
setMessageFromSearch("");
|
|
1559
1604
|
},
|
|
1560
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1605
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react14.Icon, { icon: "mdi:close", className: "text-black", width: 32, height: 32 })
|
|
1561
1606
|
}
|
|
1562
1607
|
)
|
|
1563
1608
|
] })
|
|
@@ -1613,7 +1658,7 @@ function ChatButton(props) {
|
|
|
1613
1658
|
name: "sendButton",
|
|
1614
1659
|
variant: "primary",
|
|
1615
1660
|
className: "!size-10 !p-2 " + (loading || inputRef.current?.value.length === 0 ? "bg-gray-100 transition-colors cursor-not-allowed" : "bg-primary cursor-pointer"),
|
|
1616
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1661
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react14.Icon, { icon: "mdi:send", className: "!text-white" })
|
|
1617
1662
|
}
|
|
1618
1663
|
) })
|
|
1619
1664
|
]
|
|
@@ -1632,7 +1677,7 @@ var ChatMessage = (props) => {
|
|
|
1632
1677
|
{
|
|
1633
1678
|
className: `flex h-fit w-full gap-2 ${props.user === "bot" ? props.loading ? "bg-gray-100 transition-colors" : "bg-gray-100" : "bg-white"}`,
|
|
1634
1679
|
children: [
|
|
1635
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex min-h-10 min-w-10 items-start overflow-x-auto pl-2 pt-1.5 ", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex items-center justify-center pb-1.5", children: props.user === "user" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1680
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex min-h-10 min-w-10 items-start overflow-x-auto pl-2 pt-1.5 ", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex items-center justify-center pb-1.5", children: props.user === "user" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react14.Icon, { icon: "mdi:account", className: "h-[38px] w-[32px]" }) : props.loading ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("img", { src: "https://static.luxonis.com/images/chatbot.webp", width: "32", height: "32", alt: "Chatbot Icon" }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("img", { src: "https://static.luxonis.com/images/chatbot.webp", width: "32", height: "32", alt: "Chatbot Icon" }) }) }),
|
|
1636
1681
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1637
1682
|
"div",
|
|
1638
1683
|
{
|
|
@@ -1654,14 +1699,14 @@ var ChatMessage = (props) => {
|
|
|
1654
1699
|
// src/Tabs.tsx
|
|
1655
1700
|
var React15 = __toESM(require("react"));
|
|
1656
1701
|
var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"));
|
|
1657
|
-
var
|
|
1702
|
+
var import_class_variance_authority22 = require("class-variance-authority");
|
|
1658
1703
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1659
1704
|
var Tabs = TabsPrimitive.Root;
|
|
1660
1705
|
var TabsList = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1661
1706
|
TabsPrimitive.List,
|
|
1662
1707
|
{
|
|
1663
1708
|
ref,
|
|
1664
|
-
className: (0,
|
|
1709
|
+
className: (0, import_class_variance_authority22.cx)(
|
|
1665
1710
|
"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
|
|
1666
1711
|
className
|
|
1667
1712
|
),
|
|
@@ -1673,7 +1718,7 @@ var TabsTrigger = React15.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1673
1718
|
TabsPrimitive.Trigger,
|
|
1674
1719
|
{
|
|
1675
1720
|
ref,
|
|
1676
|
-
className: (0,
|
|
1721
|
+
className: (0, import_class_variance_authority22.cx)(
|
|
1677
1722
|
"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
|
|
1678
1723
|
className
|
|
1679
1724
|
),
|
|
@@ -1685,7 +1730,7 @@ var TabsContent = React15.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1685
1730
|
TabsPrimitive.Content,
|
|
1686
1731
|
{
|
|
1687
1732
|
ref,
|
|
1688
|
-
className: (0,
|
|
1733
|
+
className: (0, import_class_variance_authority22.cx)(
|
|
1689
1734
|
"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
1690
1735
|
className
|
|
1691
1736
|
),
|
|
@@ -1697,13 +1742,13 @@ TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
|
1697
1742
|
// src/ProgressBar.tsx
|
|
1698
1743
|
var React16 = __toESM(require("react"));
|
|
1699
1744
|
var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"));
|
|
1700
|
-
var
|
|
1745
|
+
var import_class_variance_authority23 = require("class-variance-authority");
|
|
1701
1746
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1702
1747
|
var Progress = React16.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1703
1748
|
ProgressPrimitive.Root,
|
|
1704
1749
|
{
|
|
1705
1750
|
ref,
|
|
1706
|
-
className: (0,
|
|
1751
|
+
className: (0, import_class_variance_authority23.cx)("relative h-2 w-full overflow-hidden rounded-full bg-primary/20", className),
|
|
1707
1752
|
...props,
|
|
1708
1753
|
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1709
1754
|
ProgressPrimitive.Indicator,
|
|
@@ -1717,8 +1762,8 @@ var Progress = React16.forwardRef(({ className, value, ...props }, ref) => /* @_
|
|
|
1717
1762
|
Progress.displayName = ProgressPrimitive.Root.displayName;
|
|
1718
1763
|
|
|
1719
1764
|
// src/EdgeSlideshow.tsx
|
|
1720
|
-
var
|
|
1721
|
-
var
|
|
1765
|
+
var import_react15 = require("react");
|
|
1766
|
+
var import_react_intersection_observer2 = require("react-intersection-observer");
|
|
1722
1767
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1723
1768
|
var slides = [
|
|
1724
1769
|
"ai-performance",
|
|
@@ -1905,8 +1950,8 @@ function EdgeSlideshowHeader() {
|
|
|
1905
1950
|
}
|
|
1906
1951
|
function EdgeSlideshowNav(props) {
|
|
1907
1952
|
const { activeSlide, setActiveSlide, autoscrolling, inView } = props;
|
|
1908
|
-
const [progress, setProgress] = (0,
|
|
1909
|
-
(0,
|
|
1953
|
+
const [progress, setProgress] = (0, import_react15.useState)(0);
|
|
1954
|
+
(0, import_react15.useEffect)(() => {
|
|
1910
1955
|
let intervalId;
|
|
1911
1956
|
const startTime = Date.now();
|
|
1912
1957
|
if (autoscrolling && inView) {
|
|
@@ -1974,10 +2019,10 @@ function EdgeSlideshowText(props) {
|
|
|
1974
2019
|
] });
|
|
1975
2020
|
}
|
|
1976
2021
|
function EdgeSlideshow() {
|
|
1977
|
-
const [activeSlide, setActiveSlide] = (0,
|
|
1978
|
-
const [autoscrolling, setAutoscrolling] = (0,
|
|
1979
|
-
const { ref, inView } = (0,
|
|
1980
|
-
(0,
|
|
2022
|
+
const [activeSlide, setActiveSlide] = (0, import_react15.useState)("ai-performance");
|
|
2023
|
+
const [autoscrolling, setAutoscrolling] = (0, import_react15.useState)(true);
|
|
2024
|
+
const { ref, inView } = (0, import_react_intersection_observer2.useInView)({});
|
|
2025
|
+
(0, import_react15.useEffect)(() => {
|
|
1981
2026
|
let intervalId;
|
|
1982
2027
|
if (inView) {
|
|
1983
2028
|
intervalId = window.setInterval(() => {
|
|
@@ -2016,7 +2061,7 @@ function EdgeSlideshow() {
|
|
|
2016
2061
|
}
|
|
2017
2062
|
|
|
2018
2063
|
// src/StereoDepthCalibration.tsx
|
|
2019
|
-
var
|
|
2064
|
+
var import_react16 = require("@iconify/react");
|
|
2020
2065
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2021
2066
|
var cards = [
|
|
2022
2067
|
{
|
|
@@ -2083,7 +2128,7 @@ function StereoDepthCalibrationFooter() {
|
|
|
2083
2128
|
}
|
|
2084
2129
|
function StereoDepthCalibrationFooterCard(props) {
|
|
2085
2130
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(FrostedCard, { className: "flex h-full flex-col items-start justify-start gap-2", children: [
|
|
2086
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2131
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_react16.Icon, { icon: props.icon, width: 32, height: 32, className: "card-icon" }),
|
|
2087
2132
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Text, { text: props.title, size: "lg", color: "white", weight: "semibold" }),
|
|
2088
2133
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Text, { text: props.text, size: "sm", color: "white" })
|
|
2089
2134
|
] });
|
|
@@ -2102,7 +2147,7 @@ function StereoDepthCalibration() {
|
|
|
2102
2147
|
}
|
|
2103
2148
|
|
|
2104
2149
|
// src/Support.tsx
|
|
2105
|
-
var
|
|
2150
|
+
var import_class_variance_authority24 = require("class-variance-authority");
|
|
2106
2151
|
|
|
2107
2152
|
// src/links.ts
|
|
2108
2153
|
var github = "https://github.com/luxonis/";
|
|
@@ -2132,6 +2177,7 @@ var applyMailClean = "careers@luxonis.com";
|
|
|
2132
2177
|
var showcaseMail = "mailto:support@luxonis.com";
|
|
2133
2178
|
var showcaseMailClean = "support@luxonis.com";
|
|
2134
2179
|
var blog = "https://discuss.luxonis.com/blog";
|
|
2180
|
+
var stereoTuningAssistance = "/stereo-tuning-assistance";
|
|
2135
2181
|
var privacy = "/privacy";
|
|
2136
2182
|
var termsOfService = "/terms-of-service";
|
|
2137
2183
|
var aboutUs = "/about-us";
|
|
@@ -2160,15 +2206,45 @@ function TalkToSalesButton() {
|
|
|
2160
2206
|
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("a", { href: contactLink, target: "_blank", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Button, { variant: "secondary", color: "white", role: "continue", children: "Talk to Sales" }) });
|
|
2161
2207
|
}
|
|
2162
2208
|
|
|
2163
|
-
// src/
|
|
2164
|
-
var
|
|
2165
|
-
var
|
|
2209
|
+
// src/Support.tsx
|
|
2210
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
2211
|
+
var Support = (props) => {
|
|
2212
|
+
const { variant = "fullpage", text } = props;
|
|
2213
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "page-card page-padding", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2214
|
+
Card,
|
|
2215
|
+
{
|
|
2216
|
+
variant,
|
|
2217
|
+
outerStyles: "h-full",
|
|
2218
|
+
className: (0, import_class_variance_authority24.cx)(
|
|
2219
|
+
"page-card-content mx-auto flex w-full h-full flex-col gap-x-20 gap-y-4 justify-between overflow-hidden bg-gradient-stereo-depth xl:p-8 xl:flex-row py-8 px-4"
|
|
2220
|
+
),
|
|
2221
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex w-full flex-col items-center gap-8 text-white xl:w-fit xl:items-start xl:gap-10 xl:px-0", children: [
|
|
2222
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex w-full flex-col items-center gap-4 text-white xl:items-start xl:gap-6", children: [
|
|
2223
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text, { size: "h2", text: text ?? "Need More Help?", className: "text-center xl:text-left" }),
|
|
2224
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2225
|
+
Text,
|
|
2226
|
+
{
|
|
2227
|
+
size: "lg",
|
|
2228
|
+
text: "Our dedicated team is available for technical support, business solutions, and more. Let us provide the help you need.",
|
|
2229
|
+
className: "w-full text-center xl:text-left"
|
|
2230
|
+
}
|
|
2231
|
+
)
|
|
2232
|
+
] }),
|
|
2233
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex w-fit flex-col items-center gap-4 md:flex-row", children: [
|
|
2234
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TalkToSalesButton, {}),
|
|
2235
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("a", { href: "https://chat.luxonis.com", target: "_blank", rel: "noreferrer", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { size: "lg", variant: "secondary", role: "continue", children: "Get Instant Support" }) }),
|
|
2236
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("a", { href: supportMail, target: "_blank", rel: "noreferrer", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { size: "lg", variant: "secondary", role: "continue", children: "Support via Email" }) })
|
|
2237
|
+
] })
|
|
2238
|
+
] })
|
|
2239
|
+
}
|
|
2240
|
+
) });
|
|
2241
|
+
};
|
|
2166
2242
|
|
|
2167
2243
|
// src/useRudderAnalytics.ts
|
|
2168
|
-
var
|
|
2244
|
+
var import_react17 = require("react");
|
|
2169
2245
|
var useRudderStackAnalytics = () => {
|
|
2170
|
-
const [analytics, setAnalytics] = (0,
|
|
2171
|
-
(0,
|
|
2246
|
+
const [analytics, setAnalytics] = (0, import_react17.useState)();
|
|
2247
|
+
(0, import_react17.useEffect)(() => {
|
|
2172
2248
|
if (!analytics) {
|
|
2173
2249
|
const initialize = async () => {
|
|
2174
2250
|
const { RudderAnalytics } = await import("@rudderstack/analytics-js");
|
|
@@ -2195,7 +2271,9 @@ var useRudderStackAnalytics = () => {
|
|
|
2195
2271
|
};
|
|
2196
2272
|
|
|
2197
2273
|
// src/ContactUsForm.tsx
|
|
2198
|
-
var
|
|
2274
|
+
var import_zod = require("zod");
|
|
2275
|
+
var import_react18 = __toESM(require("react"));
|
|
2276
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2199
2277
|
var formSchema = import_zod.z.object({
|
|
2200
2278
|
name: import_zod.z.string().min(1),
|
|
2201
2279
|
company: import_zod.z.string().min(1),
|
|
@@ -2204,9 +2282,9 @@ var formSchema = import_zod.z.object({
|
|
|
2204
2282
|
inquiry: import_zod.z.string().min(1)
|
|
2205
2283
|
});
|
|
2206
2284
|
function ContactUsForm() {
|
|
2207
|
-
const [formSubmitted, setFormSubmitted] =
|
|
2208
|
-
const [formHasError, setFormHasError] =
|
|
2209
|
-
const [formIsLoading, setFormIsLoading] =
|
|
2285
|
+
const [formSubmitted, setFormSubmitted] = import_react18.default.useState(false);
|
|
2286
|
+
const [formHasError, setFormHasError] = import_react18.default.useState(false);
|
|
2287
|
+
const [formIsLoading, setFormIsLoading] = import_react18.default.useState(false);
|
|
2210
2288
|
const analytics = useRudderStackAnalytics();
|
|
2211
2289
|
const handleSubmit = (event) => {
|
|
2212
2290
|
event.preventDefault();
|
|
@@ -2263,7 +2341,7 @@ function ContactUsForm() {
|
|
|
2263
2341
|
setFormSubmitted(true);
|
|
2264
2342
|
};
|
|
2265
2343
|
if (formSubmitted) {
|
|
2266
|
-
return /* @__PURE__ */ (0,
|
|
2344
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "m-auto flex size-full h-[456px] flex-col items-center justify-center px-4", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2267
2345
|
Text,
|
|
2268
2346
|
{
|
|
2269
2347
|
size: "h4",
|
|
@@ -2273,107 +2351,80 @@ function ContactUsForm() {
|
|
|
2273
2351
|
}
|
|
2274
2352
|
) });
|
|
2275
2353
|
}
|
|
2276
|
-
return /* @__PURE__ */ (0,
|
|
2277
|
-
/* @__PURE__ */ (0,
|
|
2278
|
-
/* @__PURE__ */ (0,
|
|
2279
|
-
/* @__PURE__ */ (0,
|
|
2280
|
-
/* @__PURE__ */ (0,
|
|
2354
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("form", { id: "contact-form-anchor", className: "flex w-full flex-col gap-6 text-white", onSubmit: handleSubmit, children: [
|
|
2355
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex w-full flex-col gap-6 lg:flex-row", children: [
|
|
2356
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex w-full flex-col gap-2", children: [
|
|
2357
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Label, { className: "font-normal", htmlFor: "name", children: "Name *" }),
|
|
2358
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Input, { type: "text", id: "name", placeholder: "E.g. Hanna Johns" })
|
|
2281
2359
|
] }),
|
|
2282
|
-
/* @__PURE__ */ (0,
|
|
2283
|
-
/* @__PURE__ */ (0,
|
|
2284
|
-
/* @__PURE__ */ (0,
|
|
2360
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex w-full flex-col gap-2", children: [
|
|
2361
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Label, { className: "font-normal", htmlFor: "Company", children: "Company *" }),
|
|
2362
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Input, { type: "text", id: "company", placeholder: "E.g. Hanna" })
|
|
2285
2363
|
] })
|
|
2286
2364
|
] }),
|
|
2287
|
-
/* @__PURE__ */ (0,
|
|
2288
|
-
/* @__PURE__ */ (0,
|
|
2289
|
-
/* @__PURE__ */ (0,
|
|
2365
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
2366
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Label, { className: "font-normal", htmlFor: "email", children: "E-mail *" }),
|
|
2367
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Input, { type: "email", id: "email", placeholder: "E.g. info@email.com" })
|
|
2290
2368
|
] }),
|
|
2291
|
-
/* @__PURE__ */ (0,
|
|
2292
|
-
/* @__PURE__ */ (0,
|
|
2293
|
-
/* @__PURE__ */ (0,
|
|
2294
|
-
/* @__PURE__ */ (0,
|
|
2295
|
-
/* @__PURE__ */ (0,
|
|
2296
|
-
/* @__PURE__ */ (0,
|
|
2297
|
-
/* @__PURE__ */ (0,
|
|
2298
|
-
/* @__PURE__ */ (0,
|
|
2299
|
-
/* @__PURE__ */ (0,
|
|
2300
|
-
/* @__PURE__ */ (0,
|
|
2369
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
2370
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Label, { className: "font-normal", htmlFor: "inquiry", children: "Type of Inquiry *" }),
|
|
2371
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Select, { children: [
|
|
2372
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectTrigger, { className: "h-[48px] bg-white text-black ", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectValue, { id: "inquiry", placeholder: "Select..." }) }),
|
|
2373
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(SelectContent, { className: "bg-white", children: [
|
|
2374
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "Hub assistance", children: "Hub assistance" }),
|
|
2375
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "hardware-issue", children: "Hardware issue" }),
|
|
2376
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "support", children: "Support" }),
|
|
2377
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "training", children: "Training" }),
|
|
2378
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "other", children: "Other" })
|
|
2301
2379
|
] })
|
|
2302
2380
|
] })
|
|
2303
2381
|
] }),
|
|
2304
|
-
/* @__PURE__ */ (0,
|
|
2305
|
-
/* @__PURE__ */ (0,
|
|
2306
|
-
/* @__PURE__ */ (0,
|
|
2382
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
2383
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Label, { className: "font-normal", htmlFor: "message", children: "Message *" }),
|
|
2384
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Input, { type: "text", id: "message", placeholder: "Type..." })
|
|
2307
2385
|
] }),
|
|
2308
|
-
/* @__PURE__ */ (0,
|
|
2309
|
-
/* @__PURE__ */ (0,
|
|
2310
|
-
formHasError && /* @__PURE__ */ (0,
|
|
2386
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex flex-row items-center justify-start gap-8", children: [
|
|
2387
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button, { type: "submit", variant: "secondary", size: "lg", role: "continue", className: "w-fit", children: formIsLoading ? "Submitting..." : "Submit" }),
|
|
2388
|
+
formHasError && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Text, { text: "Please fill out all fields", color: "error", size: "xl" })
|
|
2311
2389
|
] })
|
|
2312
2390
|
] });
|
|
2313
2391
|
}
|
|
2314
2392
|
|
|
2315
|
-
// src/Support.tsx
|
|
2316
|
-
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2317
|
-
var Support = (props) => {
|
|
2318
|
-
const { variant = "fullpage", text } = props;
|
|
2319
|
-
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "page-card page-padding", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
2320
|
-
Card,
|
|
2321
|
-
{
|
|
2322
|
-
variant,
|
|
2323
|
-
outerStyles: "h-full",
|
|
2324
|
-
className: (0, import_class_variance_authority23.cx)(
|
|
2325
|
-
"page-card-content mx-auto flex w-full h-full flex-col gap-x-20 gap-y-4 justify-between overflow-hidden bg-gradient-stereo-depth pt-12 xl:p-8 xl:flex-row"
|
|
2326
|
-
),
|
|
2327
|
-
children: [
|
|
2328
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex w-full flex-col items-center gap-8 px-4 text-white xl:w-fit xl:items-start xl:gap-10 xl:px-0", children: [
|
|
2329
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex w-full flex-col items-center gap-4 text-white xl:items-start xl:gap-6", children: [
|
|
2330
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Text, { size: "h2", text: text ?? "Need More Help?", className: "max-w-[650px] text-center xl:text-left" }),
|
|
2331
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2332
|
-
Text,
|
|
2333
|
-
{
|
|
2334
|
-
size: "lg",
|
|
2335
|
-
text: "Our dedicated team is available for technical support, business solutions, and more. Let us provide the help you need.",
|
|
2336
|
-
className: "w-full max-w-105 text-center xl:text-left"
|
|
2337
|
-
}
|
|
2338
|
-
)
|
|
2339
|
-
] }),
|
|
2340
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex w-fit flex-col gap-4 md:flex-row", children: [
|
|
2341
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TalkToSalesButton, {}),
|
|
2342
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("a", { href: "https://chat.luxonis.com", target: "_blank", rel: "noreferrer", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button, { size: "lg", variant: "secondary", role: "continue", children: "Get Instant Support" }) })
|
|
2343
|
-
] })
|
|
2344
|
-
] }),
|
|
2345
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "w-full p-4 xl:p-0", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(FrostedCard, { className: "h-full", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ContactUsForm, {}) }) })
|
|
2346
|
-
]
|
|
2347
|
-
}
|
|
2348
|
-
) });
|
|
2349
|
-
};
|
|
2350
|
-
|
|
2351
2393
|
// src/ContactUs.tsx
|
|
2352
2394
|
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2353
2395
|
var ContactUsSection = (props) => {
|
|
2354
2396
|
const {
|
|
2355
|
-
title = "Let\u2019s Build
|
|
2397
|
+
title = "Let\u2019s Build the Future of Vision Together",
|
|
2356
2398
|
description = "Our dedicated team is available for technical support, business solutions, and more. Let us provide the help you need."
|
|
2357
2399
|
} = props;
|
|
2358
|
-
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("section", { id: "contact-us", className: "page-card page-padding", children: /* @__PURE__ */ (0, import_jsx_runtime32.
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(FrostedCard, { className: "!p-6", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ContactUsForm, {}) })
|
|
2375
|
-
] }) });
|
|
2400
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("section", { id: "contact-us", className: "page-card page-padding", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("section", { className: "page-card-content flex flex-col gap-8 rounded-lg px-4 py-8 [background:radial-gradient(416.66%_106.71%_at_76.3%_37.11%,#5724E8_0%,#000_100%),#000] md:p-12 lg:flex-row lg:justify-between xl:p-8", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2401
|
+
Description,
|
|
2402
|
+
{
|
|
2403
|
+
title,
|
|
2404
|
+
align: "left",
|
|
2405
|
+
textStyle: "max-w-none w-fit lg:max-w-none lg:justify-start justify-center lg:text-left text-center",
|
|
2406
|
+
wrapperClassName: "lg:items-start items-center lg:text-left text-center flex",
|
|
2407
|
+
description,
|
|
2408
|
+
className: "text-white ",
|
|
2409
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex w-full flex-col flex-wrap items-center gap-4 lg:flex-row lg:justify-start", children: [
|
|
2410
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("a", { href: "https://hub.luxonis.com", target: "_blank", className: "w-fit", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Button, { variant: "secondary", size: "lg", role: "continue", className: "w-full", children: "Start for Free" }) }),
|
|
2411
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TalkToSalesButton, {}),
|
|
2412
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("a", { href: supportMail, target: "_blank", rel: "noreferrer", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Button, { size: "lg", variant: "secondary", role: "continue", children: "Support via Email" }) })
|
|
2413
|
+
] })
|
|
2414
|
+
}
|
|
2415
|
+
) }) });
|
|
2376
2416
|
};
|
|
2417
|
+
|
|
2418
|
+
// src/useChat.tsx
|
|
2419
|
+
var import_react19 = __toESM(require("react"));
|
|
2420
|
+
var useChatContext = import_react19.default.createContext(null);
|
|
2421
|
+
function useChat() {
|
|
2422
|
+
const context = import_react19.default.useContext(useChatContext);
|
|
2423
|
+
if (!context) {
|
|
2424
|
+
throw new Error("useChat must be used within a <ChatProvider />");
|
|
2425
|
+
}
|
|
2426
|
+
return context;
|
|
2427
|
+
}
|
|
2377
2428
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2378
2429
|
0 && (module.exports = {
|
|
2379
2430
|
Accordion,
|
|
@@ -2480,6 +2531,7 @@ var ContactUsSection = (props) => {
|
|
|
2480
2531
|
showcaseMail,
|
|
2481
2532
|
showcaseMailClean,
|
|
2482
2533
|
status,
|
|
2534
|
+
stereoTuningAssistance,
|
|
2483
2535
|
store,
|
|
2484
2536
|
supportForm,
|
|
2485
2537
|
supportMail,
|
|
@@ -2487,6 +2539,8 @@ var ContactUsSection = (props) => {
|
|
|
2487
2539
|
techcrunch,
|
|
2488
2540
|
termsOfService,
|
|
2489
2541
|
twitter,
|
|
2542
|
+
useChat,
|
|
2543
|
+
useChatContext,
|
|
2490
2544
|
useRudderStackAnalytics,
|
|
2491
2545
|
youtube
|
|
2492
2546
|
});
|