@luxonis/component-lib 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/dist/index.d.mts +36 -17
- package/dist/index.d.ts +36 -17
- package/dist/index.js +237 -182
- package/dist/index.mjs +216 -164
- 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
|
});
|
|
@@ -726,8 +729,9 @@ var DescriptionRecepie = (0, import_class_variance_authority7.cva)("flex flex-co
|
|
|
726
729
|
center: "items-start sm:items-center",
|
|
727
730
|
allwayscenter: "items-center",
|
|
728
731
|
left: "items-start",
|
|
732
|
+
right: "items-end",
|
|
729
733
|
leftCenterMobile: "items-start sm:items-center",
|
|
730
|
-
desktopCenterMobileLeft: "w-full items-start !text-left sm
|
|
734
|
+
desktopCenterMobileLeft: "w-full items-start !text-left sm:!items-center sm:!text-center",
|
|
731
735
|
desktopLeftMobileCenter: "w-full items-center !text-center lg:items-start lg:!text-left"
|
|
732
736
|
},
|
|
733
737
|
gap: {
|
|
@@ -767,7 +771,7 @@ var Description = (props) => {
|
|
|
767
771
|
descriptionStyle,
|
|
768
772
|
wrapperClassName
|
|
769
773
|
} = props;
|
|
770
|
-
const alingText = align === "left" || align === "desktopLeftMobileCenter" ? "left" : "center";
|
|
774
|
+
const alingText = align === "left" || align === "desktopLeftMobileCenter" ? "left" : align === "right" ? "right" : "center";
|
|
771
775
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: (0, import_class_variance_authority7.cx)(DescriptionRecepie({ align, gap }), className), children: [
|
|
772
776
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: (0, import_class_variance_authority7.cx)(`flex flex-col gap-4 sm:gap-6 w-full`, wrapperClassName ?? "", InnerGap({ innerGap })), children: [
|
|
773
777
|
subTitle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
@@ -818,6 +822,9 @@ var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
|
818
822
|
var Hero = (props) => {
|
|
819
823
|
const { title, description, button, bgImageLink, desctipionSize = "default" } = props;
|
|
820
824
|
const descriptionSize = () => {
|
|
825
|
+
if (!description) {
|
|
826
|
+
return "";
|
|
827
|
+
}
|
|
821
828
|
if (desctipionSize === "lg") {
|
|
822
829
|
return (0, import_class_variance_authority9.cx)("lg:max-w-[525px] max-w-96");
|
|
823
830
|
}
|
|
@@ -836,7 +843,7 @@ var Hero = (props) => {
|
|
|
836
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: [
|
|
837
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" }) }),
|
|
838
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: [
|
|
839
|
-
/* @__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" }),
|
|
840
847
|
button
|
|
841
848
|
] })
|
|
842
849
|
] }) }),
|
|
@@ -1195,62 +1202,101 @@ var Textarea = React12.forwardRef(
|
|
|
1195
1202
|
Textarea.displayName = "Textarea";
|
|
1196
1203
|
|
|
1197
1204
|
// src/Video.tsx
|
|
1205
|
+
var import_react_full_screen = require("react-full-screen");
|
|
1198
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");
|
|
1199
1210
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1200
|
-
|
|
1211
|
+
function Video(props) {
|
|
1212
|
+
const {
|
|
1213
|
+
src,
|
|
1214
|
+
buttonPlay,
|
|
1215
|
+
buttonRepeat,
|
|
1216
|
+
className,
|
|
1217
|
+
wrapperClassName,
|
|
1218
|
+
autoPlayInView,
|
|
1219
|
+
buttonFullscreen,
|
|
1220
|
+
...rest
|
|
1221
|
+
} = props;
|
|
1201
1222
|
const videoRef = (0, import_react10.useRef)(null);
|
|
1202
|
-
const
|
|
1203
|
-
(0, import_react10.
|
|
1204
|
-
togglePlay: () => {
|
|
1205
|
-
if (videoRef.current) {
|
|
1206
|
-
if (videoRef.current.paused) {
|
|
1207
|
-
videoRef.current.play();
|
|
1208
|
-
setIsPlaying(true);
|
|
1209
|
-
} else {
|
|
1210
|
-
videoRef.current.pause();
|
|
1211
|
-
setIsPlaying(false);
|
|
1212
|
-
}
|
|
1213
|
-
}
|
|
1214
|
-
}
|
|
1215
|
-
}));
|
|
1223
|
+
const { ref, inView } = (0, import_react_intersection_observer.useInView)({});
|
|
1224
|
+
const [isPlaying, setIsPlaying] = (0, import_react10.useState)(true);
|
|
1216
1225
|
const setPlaying = () => {
|
|
1217
|
-
if (
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
} else {
|
|
1222
|
-
videoRef.current.pause();
|
|
1223
|
-
setIsPlaying(false);
|
|
1224
|
-
}
|
|
1226
|
+
if (isPlaying) {
|
|
1227
|
+
videoRef.current?.pause();
|
|
1228
|
+
setIsPlaying(false);
|
|
1229
|
+
return;
|
|
1225
1230
|
}
|
|
1231
|
+
setIsPlaying(true);
|
|
1232
|
+
videoRef.current?.play();
|
|
1226
1233
|
};
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
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",
|
|
1231
1250
|
{
|
|
1232
|
-
|
|
1233
|
-
icon: "mdi:play",
|
|
1234
|
-
role: "icon",
|
|
1251
|
+
...rest,
|
|
1235
1252
|
onClick: () => setPlaying(),
|
|
1236
|
-
|
|
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."
|
|
1237
1257
|
}
|
|
1238
|
-
)
|
|
1239
|
-
|
|
1240
|
-
|
|
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
|
+
}
|
|
1241
1287
|
Video.displayName = "Video";
|
|
1242
1288
|
|
|
1243
1289
|
// src/Checkbox.tsx
|
|
1244
1290
|
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"));
|
|
1245
|
-
var
|
|
1246
|
-
var
|
|
1291
|
+
var import_class_variance_authority19 = require("class-variance-authority");
|
|
1292
|
+
var import_react12 = require("@iconify/react");
|
|
1247
1293
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1248
1294
|
function Checkbox({ className, ...props }) {
|
|
1249
1295
|
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1250
1296
|
CheckboxPrimitive.Root,
|
|
1251
1297
|
{
|
|
1252
1298
|
"data-slot": "checkbox",
|
|
1253
|
-
className: (0,
|
|
1299
|
+
className: (0, import_class_variance_authority19.cx)(
|
|
1254
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",
|
|
1255
1301
|
className
|
|
1256
1302
|
),
|
|
@@ -1260,7 +1306,7 @@ function Checkbox({ className, ...props }) {
|
|
|
1260
1306
|
{
|
|
1261
1307
|
"data-slot": "checkbox-indicator",
|
|
1262
1308
|
className: "flex items-center justify-center text-current transition-none",
|
|
1263
|
-
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" })
|
|
1264
1310
|
}
|
|
1265
1311
|
)
|
|
1266
1312
|
}
|
|
@@ -1268,25 +1314,25 @@ function Checkbox({ className, ...props }) {
|
|
|
1268
1314
|
}
|
|
1269
1315
|
|
|
1270
1316
|
// src/DualRangeSlider.tsx
|
|
1271
|
-
var
|
|
1317
|
+
var React13 = __toESM(require("react"));
|
|
1272
1318
|
var SliderPrimitive = __toESM(require("@radix-ui/react-slider"));
|
|
1273
|
-
var
|
|
1319
|
+
var import_class_variance_authority20 = require("class-variance-authority");
|
|
1274
1320
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1275
|
-
var DualRangeSlider =
|
|
1321
|
+
var DualRangeSlider = React13.forwardRef(
|
|
1276
1322
|
({ className, label, labelPosition = "top", ...props }, ref) => {
|
|
1277
1323
|
const initialValue = Array.isArray(props.value) ? props.value : [props.min, props.max];
|
|
1278
1324
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
1279
1325
|
SliderPrimitive.Root,
|
|
1280
1326
|
{
|
|
1281
1327
|
ref,
|
|
1282
|
-
className: (0,
|
|
1328
|
+
className: (0, import_class_variance_authority20.cx)("relative flex w-full touch-none select-none items-center", className),
|
|
1283
1329
|
...props,
|
|
1284
1330
|
children: [
|
|
1285
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" }) }),
|
|
1286
|
-
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)(
|
|
1287
1333
|
"span",
|
|
1288
1334
|
{
|
|
1289
|
-
className: (0,
|
|
1335
|
+
className: (0, import_class_variance_authority20.cx)(
|
|
1290
1336
|
"absolute flex w-full justify-center",
|
|
1291
1337
|
labelPosition === "top" && "-top-7",
|
|
1292
1338
|
labelPosition === "bottom" && "top-4"
|
|
@@ -1302,13 +1348,13 @@ var DualRangeSlider = React14.forwardRef(
|
|
|
1302
1348
|
DualRangeSlider.displayName = "DualRangeSlider";
|
|
1303
1349
|
|
|
1304
1350
|
// src/LuxonisChat.tsx
|
|
1305
|
-
var
|
|
1351
|
+
var import_react13 = require("react");
|
|
1306
1352
|
var import_markdown_it = __toESM(require("markdown-it"));
|
|
1307
|
-
var
|
|
1353
|
+
var import_react14 = require("@iconify/react");
|
|
1308
1354
|
|
|
1309
1355
|
// src/Tooltip.tsx
|
|
1310
1356
|
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
|
|
1311
|
-
var
|
|
1357
|
+
var import_class_variance_authority21 = require("class-variance-authority");
|
|
1312
1358
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1313
1359
|
function TooltipProvider({ delayDuration = 0, ...props }) {
|
|
1314
1360
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delayDuration, ...props });
|
|
@@ -1330,7 +1376,7 @@ function TooltipContent({
|
|
|
1330
1376
|
{
|
|
1331
1377
|
"data-slot": "tooltip-content",
|
|
1332
1378
|
sideOffset,
|
|
1333
|
-
className: (0,
|
|
1379
|
+
className: (0, import_class_variance_authority21.cx)(
|
|
1334
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",
|
|
1335
1381
|
className
|
|
1336
1382
|
),
|
|
@@ -1347,11 +1393,11 @@ function TooltipContent({
|
|
|
1347
1393
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1348
1394
|
function ChatButton(props) {
|
|
1349
1395
|
const { chatOpened, setChatOpened, messageFromSearch, setMessageFromSearch } = props;
|
|
1350
|
-
const [hold, setHold] = (0,
|
|
1351
|
-
const [iconKey, setIconKey] = (0,
|
|
1352
|
-
const [loading, setLoading] = (0,
|
|
1353
|
-
const [userInput, setUserInput] = (0,
|
|
1354
|
-
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)([
|
|
1355
1401
|
{
|
|
1356
1402
|
id: -1,
|
|
1357
1403
|
user: "bot",
|
|
@@ -1359,10 +1405,10 @@ function ChatButton(props) {
|
|
|
1359
1405
|
loading: false
|
|
1360
1406
|
}
|
|
1361
1407
|
]);
|
|
1362
|
-
const [slackThreadTs, setSlackThreadTs] = (0,
|
|
1363
|
-
const inputRef = (0,
|
|
1364
|
-
const messageListRef = (0,
|
|
1365
|
-
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);
|
|
1366
1412
|
const loadingMessages = [
|
|
1367
1413
|
"Please wait...",
|
|
1368
1414
|
"Hold on...",
|
|
@@ -1375,7 +1421,7 @@ function ChatButton(props) {
|
|
|
1375
1421
|
"Almost there...",
|
|
1376
1422
|
"Please hold on..."
|
|
1377
1423
|
];
|
|
1378
|
-
const fetchData = (0,
|
|
1424
|
+
const fetchData = (0, import_react13.useCallback)(
|
|
1379
1425
|
async (message) => {
|
|
1380
1426
|
try {
|
|
1381
1427
|
const response = await fetch("https://chat.luxonis.com/api/chat", {
|
|
@@ -1410,7 +1456,7 @@ function ChatButton(props) {
|
|
|
1410
1456
|
},
|
|
1411
1457
|
[messages, slackThreadTs]
|
|
1412
1458
|
);
|
|
1413
|
-
const onSubmit = (0,
|
|
1459
|
+
const onSubmit = (0, import_react13.useCallback)(
|
|
1414
1460
|
async (e) => {
|
|
1415
1461
|
e?.preventDefault();
|
|
1416
1462
|
if (userInput.trim() !== "") {
|
|
@@ -1445,7 +1491,7 @@ function ChatButton(props) {
|
|
|
1445
1491
|
},
|
|
1446
1492
|
[userInput, messages, fetchData, setMessageFromSearch, setLoading]
|
|
1447
1493
|
);
|
|
1448
|
-
const handleEnter = (0,
|
|
1494
|
+
const handleEnter = (0, import_react13.useCallback)(
|
|
1449
1495
|
(e) => {
|
|
1450
1496
|
if (e.key === "Enter" && userInput.trim() !== "") {
|
|
1451
1497
|
if (!e.shiftKey && userInput.trim() !== "") {
|
|
@@ -1458,13 +1504,13 @@ function ChatButton(props) {
|
|
|
1458
1504
|
},
|
|
1459
1505
|
[userInput, onSubmit]
|
|
1460
1506
|
);
|
|
1461
|
-
(0,
|
|
1507
|
+
(0, import_react13.useEffect)(() => {
|
|
1462
1508
|
if (messageListRef.current) {
|
|
1463
1509
|
const messageList = messageListRef.current;
|
|
1464
1510
|
messageList.scrollTop = messageList.scrollHeight;
|
|
1465
1511
|
}
|
|
1466
1512
|
}, [messages]);
|
|
1467
|
-
(0,
|
|
1513
|
+
(0, import_react13.useEffect)(() => {
|
|
1468
1514
|
async function fetchSearchQuery() {
|
|
1469
1515
|
setUserInput(`Can you tell me about ${messageFromSearch}`);
|
|
1470
1516
|
await onSubmit(void 0);
|
|
@@ -1505,7 +1551,7 @@ function ChatButton(props) {
|
|
|
1505
1551
|
animationTimingFunction: "ease-in"
|
|
1506
1552
|
},
|
|
1507
1553
|
className: "flex size-full items-center justify-center",
|
|
1508
|
-
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" })
|
|
1509
1555
|
},
|
|
1510
1556
|
iconKey
|
|
1511
1557
|
)
|
|
@@ -1515,7 +1561,7 @@ function ChatButton(props) {
|
|
|
1515
1561
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex h-8 flex-row justify-between gap-2", children: [
|
|
1516
1562
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("h2", { className: "relative text-2xl", children: [
|
|
1517
1563
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { target: "_blank", rel: "noopener noreferrer", href: "https://chat.luxonis.com", children: "Chat with Luxonis AI" }),
|
|
1518
|
-
/* @__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" })
|
|
1519
1565
|
] }),
|
|
1520
1566
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex flex-row items-center justify-end ", children: [
|
|
1521
1567
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Tooltip, { children: [
|
|
@@ -1537,7 +1583,7 @@ function ChatButton(props) {
|
|
|
1537
1583
|
setSlackThreadTs(null);
|
|
1538
1584
|
},
|
|
1539
1585
|
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1540
|
-
|
|
1586
|
+
import_react14.Icon,
|
|
1541
1587
|
{
|
|
1542
1588
|
icon: "fluent:chat-add-16-regular",
|
|
1543
1589
|
className: loading ? "text-black/40" : "text-primary",
|
|
@@ -1556,7 +1602,7 @@ function ChatButton(props) {
|
|
|
1556
1602
|
setChatOpened(false);
|
|
1557
1603
|
setMessageFromSearch("");
|
|
1558
1604
|
},
|
|
1559
|
-
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 })
|
|
1560
1606
|
}
|
|
1561
1607
|
)
|
|
1562
1608
|
] })
|
|
@@ -1612,7 +1658,7 @@ function ChatButton(props) {
|
|
|
1612
1658
|
name: "sendButton",
|
|
1613
1659
|
variant: "primary",
|
|
1614
1660
|
className: "!size-10 !p-2 " + (loading || inputRef.current?.value.length === 0 ? "bg-gray-100 transition-colors cursor-not-allowed" : "bg-primary cursor-pointer"),
|
|
1615
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1661
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react14.Icon, { icon: "mdi:send", className: "!text-white" })
|
|
1616
1662
|
}
|
|
1617
1663
|
) })
|
|
1618
1664
|
]
|
|
@@ -1631,7 +1677,7 @@ var ChatMessage = (props) => {
|
|
|
1631
1677
|
{
|
|
1632
1678
|
className: `flex h-fit w-full gap-2 ${props.user === "bot" ? props.loading ? "bg-gray-100 transition-colors" : "bg-gray-100" : "bg-white"}`,
|
|
1633
1679
|
children: [
|
|
1634
|
-
/* @__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" }) }) }),
|
|
1635
1681
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1636
1682
|
"div",
|
|
1637
1683
|
{
|
|
@@ -1653,14 +1699,14 @@ var ChatMessage = (props) => {
|
|
|
1653
1699
|
// src/Tabs.tsx
|
|
1654
1700
|
var React15 = __toESM(require("react"));
|
|
1655
1701
|
var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"));
|
|
1656
|
-
var
|
|
1702
|
+
var import_class_variance_authority22 = require("class-variance-authority");
|
|
1657
1703
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1658
1704
|
var Tabs = TabsPrimitive.Root;
|
|
1659
1705
|
var TabsList = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1660
1706
|
TabsPrimitive.List,
|
|
1661
1707
|
{
|
|
1662
1708
|
ref,
|
|
1663
|
-
className: (0,
|
|
1709
|
+
className: (0, import_class_variance_authority22.cx)(
|
|
1664
1710
|
"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
|
|
1665
1711
|
className
|
|
1666
1712
|
),
|
|
@@ -1672,7 +1718,7 @@ var TabsTrigger = React15.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1672
1718
|
TabsPrimitive.Trigger,
|
|
1673
1719
|
{
|
|
1674
1720
|
ref,
|
|
1675
|
-
className: (0,
|
|
1721
|
+
className: (0, import_class_variance_authority22.cx)(
|
|
1676
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",
|
|
1677
1723
|
className
|
|
1678
1724
|
),
|
|
@@ -1684,7 +1730,7 @@ var TabsContent = React15.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1684
1730
|
TabsPrimitive.Content,
|
|
1685
1731
|
{
|
|
1686
1732
|
ref,
|
|
1687
|
-
className: (0,
|
|
1733
|
+
className: (0, import_class_variance_authority22.cx)(
|
|
1688
1734
|
"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
1689
1735
|
className
|
|
1690
1736
|
),
|
|
@@ -1696,13 +1742,13 @@ TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
|
1696
1742
|
// src/ProgressBar.tsx
|
|
1697
1743
|
var React16 = __toESM(require("react"));
|
|
1698
1744
|
var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"));
|
|
1699
|
-
var
|
|
1745
|
+
var import_class_variance_authority23 = require("class-variance-authority");
|
|
1700
1746
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1701
1747
|
var Progress = React16.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1702
1748
|
ProgressPrimitive.Root,
|
|
1703
1749
|
{
|
|
1704
1750
|
ref,
|
|
1705
|
-
className: (0,
|
|
1751
|
+
className: (0, import_class_variance_authority23.cx)("relative h-2 w-full overflow-hidden rounded-full bg-primary/20", className),
|
|
1706
1752
|
...props,
|
|
1707
1753
|
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1708
1754
|
ProgressPrimitive.Indicator,
|
|
@@ -1716,8 +1762,8 @@ var Progress = React16.forwardRef(({ className, value, ...props }, ref) => /* @_
|
|
|
1716
1762
|
Progress.displayName = ProgressPrimitive.Root.displayName;
|
|
1717
1763
|
|
|
1718
1764
|
// src/EdgeSlideshow.tsx
|
|
1719
|
-
var
|
|
1720
|
-
var
|
|
1765
|
+
var import_react15 = require("react");
|
|
1766
|
+
var import_react_intersection_observer2 = require("react-intersection-observer");
|
|
1721
1767
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1722
1768
|
var slides = [
|
|
1723
1769
|
"ai-performance",
|
|
@@ -1904,8 +1950,8 @@ function EdgeSlideshowHeader() {
|
|
|
1904
1950
|
}
|
|
1905
1951
|
function EdgeSlideshowNav(props) {
|
|
1906
1952
|
const { activeSlide, setActiveSlide, autoscrolling, inView } = props;
|
|
1907
|
-
const [progress, setProgress] = (0,
|
|
1908
|
-
(0,
|
|
1953
|
+
const [progress, setProgress] = (0, import_react15.useState)(0);
|
|
1954
|
+
(0, import_react15.useEffect)(() => {
|
|
1909
1955
|
let intervalId;
|
|
1910
1956
|
const startTime = Date.now();
|
|
1911
1957
|
if (autoscrolling && inView) {
|
|
@@ -1973,10 +2019,10 @@ function EdgeSlideshowText(props) {
|
|
|
1973
2019
|
] });
|
|
1974
2020
|
}
|
|
1975
2021
|
function EdgeSlideshow() {
|
|
1976
|
-
const [activeSlide, setActiveSlide] = (0,
|
|
1977
|
-
const [autoscrolling, setAutoscrolling] = (0,
|
|
1978
|
-
const { ref, inView } = (0,
|
|
1979
|
-
(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)(() => {
|
|
1980
2026
|
let intervalId;
|
|
1981
2027
|
if (inView) {
|
|
1982
2028
|
intervalId = window.setInterval(() => {
|
|
@@ -2015,7 +2061,7 @@ function EdgeSlideshow() {
|
|
|
2015
2061
|
}
|
|
2016
2062
|
|
|
2017
2063
|
// src/StereoDepthCalibration.tsx
|
|
2018
|
-
var
|
|
2064
|
+
var import_react16 = require("@iconify/react");
|
|
2019
2065
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2020
2066
|
var cards = [
|
|
2021
2067
|
{
|
|
@@ -2045,7 +2091,7 @@ function StereoDepthCalibrationWrapper() {
|
|
|
2045
2091
|
"img",
|
|
2046
2092
|
{
|
|
2047
2093
|
alt: "Stereo Depth Calibration Background Overlay",
|
|
2048
|
-
src: "/assets/stereo-depth/stereo-depth-calibration-bg.webp",
|
|
2094
|
+
src: "https://www.luxonis.com/assets/stereo-depth/stereo-depth-calibration-bg.webp",
|
|
2049
2095
|
className: "absolute size-full bg-cover bg-center bg-no-repeat object-cover md:h-5/6"
|
|
2050
2096
|
}
|
|
2051
2097
|
),
|
|
@@ -2082,7 +2128,7 @@ function StereoDepthCalibrationFooter() {
|
|
|
2082
2128
|
}
|
|
2083
2129
|
function StereoDepthCalibrationFooterCard(props) {
|
|
2084
2130
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(FrostedCard, { className: "flex h-full flex-col items-start justify-start gap-2", children: [
|
|
2085
|
-
/* @__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" }),
|
|
2086
2132
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Text, { text: props.title, size: "lg", color: "white", weight: "semibold" }),
|
|
2087
2133
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Text, { text: props.text, size: "sm", color: "white" })
|
|
2088
2134
|
] });
|
|
@@ -2101,7 +2147,7 @@ function StereoDepthCalibration() {
|
|
|
2101
2147
|
}
|
|
2102
2148
|
|
|
2103
2149
|
// src/Support.tsx
|
|
2104
|
-
var
|
|
2150
|
+
var import_class_variance_authority24 = require("class-variance-authority");
|
|
2105
2151
|
|
|
2106
2152
|
// src/links.ts
|
|
2107
2153
|
var github = "https://github.com/luxonis/";
|
|
@@ -2131,6 +2177,7 @@ var applyMailClean = "careers@luxonis.com";
|
|
|
2131
2177
|
var showcaseMail = "mailto:support@luxonis.com";
|
|
2132
2178
|
var showcaseMailClean = "support@luxonis.com";
|
|
2133
2179
|
var blog = "https://discuss.luxonis.com/blog";
|
|
2180
|
+
var stereoTuningAssistance = "/stereo-tuning-assistance";
|
|
2134
2181
|
var privacy = "/privacy";
|
|
2135
2182
|
var termsOfService = "/terms-of-service";
|
|
2136
2183
|
var aboutUs = "/about-us";
|
|
@@ -2159,15 +2206,45 @@ function TalkToSalesButton() {
|
|
|
2159
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" }) });
|
|
2160
2207
|
}
|
|
2161
2208
|
|
|
2162
|
-
// src/
|
|
2163
|
-
var
|
|
2164
|
-
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
|
+
};
|
|
2165
2242
|
|
|
2166
2243
|
// src/useRudderAnalytics.ts
|
|
2167
|
-
var
|
|
2244
|
+
var import_react17 = require("react");
|
|
2168
2245
|
var useRudderStackAnalytics = () => {
|
|
2169
|
-
const [analytics, setAnalytics] = (0,
|
|
2170
|
-
(0,
|
|
2246
|
+
const [analytics, setAnalytics] = (0, import_react17.useState)();
|
|
2247
|
+
(0, import_react17.useEffect)(() => {
|
|
2171
2248
|
if (!analytics) {
|
|
2172
2249
|
const initialize = async () => {
|
|
2173
2250
|
const { RudderAnalytics } = await import("@rudderstack/analytics-js");
|
|
@@ -2194,7 +2271,9 @@ var useRudderStackAnalytics = () => {
|
|
|
2194
2271
|
};
|
|
2195
2272
|
|
|
2196
2273
|
// src/ContactUsForm.tsx
|
|
2197
|
-
var
|
|
2274
|
+
var import_zod = require("zod");
|
|
2275
|
+
var import_react18 = __toESM(require("react"));
|
|
2276
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2198
2277
|
var formSchema = import_zod.z.object({
|
|
2199
2278
|
name: import_zod.z.string().min(1),
|
|
2200
2279
|
company: import_zod.z.string().min(1),
|
|
@@ -2203,9 +2282,9 @@ var formSchema = import_zod.z.object({
|
|
|
2203
2282
|
inquiry: import_zod.z.string().min(1)
|
|
2204
2283
|
});
|
|
2205
2284
|
function ContactUsForm() {
|
|
2206
|
-
const [formSubmitted, setFormSubmitted] =
|
|
2207
|
-
const [formHasError, setFormHasError] =
|
|
2208
|
-
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);
|
|
2209
2288
|
const analytics = useRudderStackAnalytics();
|
|
2210
2289
|
const handleSubmit = (event) => {
|
|
2211
2290
|
event.preventDefault();
|
|
@@ -2262,7 +2341,7 @@ function ContactUsForm() {
|
|
|
2262
2341
|
setFormSubmitted(true);
|
|
2263
2342
|
};
|
|
2264
2343
|
if (formSubmitted) {
|
|
2265
|
-
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)(
|
|
2266
2345
|
Text,
|
|
2267
2346
|
{
|
|
2268
2347
|
size: "h4",
|
|
@@ -2272,107 +2351,80 @@ function ContactUsForm() {
|
|
|
2272
2351
|
}
|
|
2273
2352
|
) });
|
|
2274
2353
|
}
|
|
2275
|
-
return /* @__PURE__ */ (0,
|
|
2276
|
-
/* @__PURE__ */ (0,
|
|
2277
|
-
/* @__PURE__ */ (0,
|
|
2278
|
-
/* @__PURE__ */ (0,
|
|
2279
|
-
/* @__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" })
|
|
2280
2359
|
] }),
|
|
2281
|
-
/* @__PURE__ */ (0,
|
|
2282
|
-
/* @__PURE__ */ (0,
|
|
2283
|
-
/* @__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" })
|
|
2284
2363
|
] })
|
|
2285
2364
|
] }),
|
|
2286
|
-
/* @__PURE__ */ (0,
|
|
2287
|
-
/* @__PURE__ */ (0,
|
|
2288
|
-
/* @__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" })
|
|
2289
2368
|
] }),
|
|
2290
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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" })
|
|
2300
2379
|
] })
|
|
2301
2380
|
] })
|
|
2302
2381
|
] }),
|
|
2303
|
-
/* @__PURE__ */ (0,
|
|
2304
|
-
/* @__PURE__ */ (0,
|
|
2305
|
-
/* @__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..." })
|
|
2306
2385
|
] }),
|
|
2307
|
-
/* @__PURE__ */ (0,
|
|
2308
|
-
/* @__PURE__ */ (0,
|
|
2309
|
-
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" })
|
|
2310
2389
|
] })
|
|
2311
2390
|
] });
|
|
2312
2391
|
}
|
|
2313
2392
|
|
|
2314
|
-
// src/Support.tsx
|
|
2315
|
-
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2316
|
-
var Support = (props) => {
|
|
2317
|
-
const { variant = "fullpage" } = props;
|
|
2318
|
-
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "page-card page-padding", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
2319
|
-
Card,
|
|
2320
|
-
{
|
|
2321
|
-
variant,
|
|
2322
|
-
outerStyles: "h-full",
|
|
2323
|
-
className: (0, import_class_variance_authority23.cx)(
|
|
2324
|
-
"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"
|
|
2325
|
-
),
|
|
2326
|
-
children: [
|
|
2327
|
-
/* @__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: [
|
|
2328
|
-
/* @__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: [
|
|
2329
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Text, { size: "h2", text: "Need More Help?", className: "max-w-[650px] text-center xl:text-left" }),
|
|
2330
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2331
|
-
Text,
|
|
2332
|
-
{
|
|
2333
|
-
size: "lg",
|
|
2334
|
-
text: "Our dedicated team is available for technical support, business solutions, and more. Let us provide the help you need.",
|
|
2335
|
-
className: "w-full max-w-105 text-center xl:text-left"
|
|
2336
|
-
}
|
|
2337
|
-
)
|
|
2338
|
-
] }),
|
|
2339
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex w-fit flex-col gap-4 md:flex-row", children: [
|
|
2340
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TalkToSalesButton, {}),
|
|
2341
|
-
/* @__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" }) })
|
|
2342
|
-
] })
|
|
2343
|
-
] }),
|
|
2344
|
-
/* @__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, {}) }) })
|
|
2345
|
-
]
|
|
2346
|
-
}
|
|
2347
|
-
) });
|
|
2348
|
-
};
|
|
2349
|
-
|
|
2350
2393
|
// src/ContactUs.tsx
|
|
2351
2394
|
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2352
2395
|
var ContactUsSection = (props) => {
|
|
2353
2396
|
const {
|
|
2354
|
-
title = "Let\u2019s Build
|
|
2397
|
+
title = "Let\u2019s Build the Future of Vision Together",
|
|
2355
2398
|
description = "Our dedicated team is available for technical support, business solutions, and more. Let us provide the help you need."
|
|
2356
2399
|
} = props;
|
|
2357
|
-
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("section", { id: "contact-us", className: "page-card page-padding", children: /* @__PURE__ */ (0, import_jsx_runtime32.
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(FrostedCard, { className: "!p-6", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ContactUsForm, {}) })
|
|
2374
|
-
] }) });
|
|
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
|
+
) }) });
|
|
2375
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
|
+
}
|
|
2376
2428
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2377
2429
|
0 && (module.exports = {
|
|
2378
2430
|
Accordion,
|
|
@@ -2479,6 +2531,7 @@ var ContactUsSection = (props) => {
|
|
|
2479
2531
|
showcaseMail,
|
|
2480
2532
|
showcaseMailClean,
|
|
2481
2533
|
status,
|
|
2534
|
+
stereoTuningAssistance,
|
|
2482
2535
|
store,
|
|
2483
2536
|
supportForm,
|
|
2484
2537
|
supportMail,
|
|
@@ -2486,6 +2539,8 @@ var ContactUsSection = (props) => {
|
|
|
2486
2539
|
techcrunch,
|
|
2487
2540
|
termsOfService,
|
|
2488
2541
|
twitter,
|
|
2542
|
+
useChat,
|
|
2543
|
+
useChatContext,
|
|
2489
2544
|
useRudderStackAnalytics,
|
|
2490
2545
|
youtube
|
|
2491
2546
|
});
|