@luxfi/ui 8.2.7 → 8.2.9
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/3d-model-viewer.cjs +25 -421
- package/dist/3d-model-viewer.js +20 -416
- package/dist/accordion.cjs +3 -10
- package/dist/accordion.js +2 -10
- package/dist/advanced-navigation-bar.cjs +5 -401
- package/dist/advanced-navigation-bar.js +5 -401
- package/dist/ai-agents.cjs +45 -890
- package/dist/ai-agents.js +8 -834
- package/dist/ai-assistant.cjs +13 -740
- package/dist/ai-assistant.js +10 -738
- package/dist/ai-chat.cjs +24 -770
- package/dist/ai-chat.js +18 -765
- package/dist/ai-code.cjs +67 -923
- package/dist/ai-code.js +49 -905
- package/dist/ai-playground.cjs +25 -801
- package/dist/ai-playground.js +18 -795
- package/dist/ai-tools.cjs +22 -767
- package/dist/ai-tools.js +15 -761
- package/dist/ai-vision.cjs +41 -993
- package/dist/ai-vision.js +30 -983
- package/dist/ai-voice-settings.cjs +35 -1006
- package/dist/ai-voice-settings.js +32 -1004
- package/dist/ai-voice.cjs +51 -1024
- package/dist/ai-voice.js +9 -963
- package/dist/alert.cjs +11 -129
- package/dist/alert.js +8 -127
- package/dist/announcement.cjs +6 -402
- package/dist/announcement.js +6 -402
- package/dist/app-switcher-navigation-bar.cjs +5 -401
- package/dist/app-switcher-navigation-bar.js +5 -401
- package/dist/apple-cards-carousel.cjs +84 -480
- package/dist/apple-cards-carousel.js +19 -415
- package/dist/auth.cjs +10 -387
- package/dist/auth.js +7 -385
- package/dist/avatar.cjs +2 -9
- package/dist/avatar.js +2 -10
- package/dist/badge.cjs +8 -228
- package/dist/badge.js +5 -210
- package/dist/button.cjs +14 -67
- package/dist/button.js +12 -65
- package/dist/chrome.cjs +29 -493
- package/dist/chrome.js +9 -474
- package/dist/code-block.cjs +16 -664
- package/dist/code-block.js +13 -662
- package/dist/code-compare.cjs +28 -1302
- package/dist/code-compare.js +18 -1293
- package/dist/code-diff.cjs +21 -669
- package/dist/code-diff.js +17 -666
- package/dist/code-editor.cjs +13 -409
- package/dist/code-editor.js +12 -408
- package/dist/code-explorer.cjs +14 -456
- package/dist/code-explorer.js +13 -456
- package/dist/code-preview.cjs +31 -983
- package/dist/code-preview.js +23 -976
- package/dist/code-snippet.cjs +19 -667
- package/dist/code-snippet.js +14 -663
- package/dist/code-terminal.cjs +24 -485
- package/dist/code-terminal.js +19 -481
- package/dist/collapsible.cjs +13 -347
- package/dist/collapsible.js +11 -330
- package/dist/color-picker.cjs +8 -450
- package/dist/color-picker.js +7 -450
- package/dist/combobox.cjs +6 -402
- package/dist/combobox.js +6 -402
- package/dist/communication-navigation-bar.cjs +7 -403
- package/dist/communication-navigation-bar.js +5 -401
- package/dist/dashboard-navigation-bar.cjs +6 -402
- package/dist/dashboard-navigation-bar.js +5 -401
- package/dist/dialog-stack.cjs +5 -401
- package/dist/dialog-stack.js +5 -401
- package/dist/dialog.cjs +13 -70
- package/dist/dialog.js +13 -70
- package/dist/drawer.cjs +23 -99
- package/dist/drawer.js +19 -96
- package/dist/e-commerce-navigation-bar.cjs +7 -403
- package/dist/e-commerce-navigation-bar.js +5 -401
- package/dist/editor.cjs +9 -405
- package/dist/editor.js +6 -402
- package/dist/iam.cjs +2 -123
- package/dist/iam.js +1 -122
- package/dist/icon-button.cjs +2 -56
- package/dist/icon-button.js +1 -55
- package/dist/identity.cjs +28 -242
- package/dist/identity.js +20 -235
- package/dist/image-crop.cjs +10 -406
- package/dist/image-crop.js +7 -403
- package/dist/image.cjs +14 -83
- package/dist/image.js +13 -67
- package/dist/index.cjs +1868 -38770
- package/dist/index.js +174 -38320
- package/dist/input-group.cjs +3 -10
- package/dist/input-group.js +2 -10
- package/dist/item.cjs +2 -27
- package/dist/item.js +1 -22
- package/dist/kanban.cjs +25 -751
- package/dist/kanban.js +15 -742
- package/dist/limelight-nav.cjs +10 -452
- package/dist/limelight-nav.js +9 -452
- package/dist/link.cjs +11 -80
- package/dist/link.js +6 -60
- package/dist/lux.config.cjs +14 -32
- package/dist/lux.config.js +3 -26
- package/dist/menu.cjs +5 -13
- package/dist/menu.js +1 -9
- package/dist/message-dock.cjs +5 -401
- package/dist/message-dock.js +5 -401
- package/dist/mini-calendar.cjs +7 -403
- package/dist/mini-calendar.js +6 -402
- package/dist/music-player.cjs +30 -528
- package/dist/music-player.js +22 -520
- package/dist/next.cjs +8 -89
- package/dist/next.js +3 -86
- package/dist/popover.cjs +17 -74
- package/dist/popover.js +16 -73
- package/dist/progress-circle.cjs +3 -10
- package/dist/progress-circle.js +2 -10
- package/dist/provider.cjs +7 -176
- package/dist/provider.js +4 -174
- package/dist/select.cjs +36 -89
- package/dist/select.js +35 -88
- package/dist/sidebar.cjs +22 -493
- package/dist/sidebar.js +17 -489
- package/dist/site/commerce/ui/context.cjs +9 -214
- package/dist/site/commerce/ui/context.js +6 -215
- package/dist/site/components/analytics.cjs +2 -42
- package/dist/site/components/analytics.js +1 -37
- package/dist/site/components/auth/callback.cjs +2 -8
- package/dist/site/components/auth/callback.js +1 -7
- package/dist/site/components/auth/login-panel.cjs +15 -74
- package/dist/site/components/auth/login-panel.js +12 -73
- package/dist/site/components/auth/login.cjs +2 -6
- package/dist/site/components/auth/login.js +1 -5
- package/dist/site/components/auth/widget.cjs +2 -6
- package/dist/site/components/auth/widget.js +1 -5
- package/dist/site/components/commerce/bag-button.cjs +2 -3
- package/dist/site/components/commerce/bag-button.js +2 -3
- package/dist/site/components/commerce/buy-button.cjs +2 -11
- package/dist/site/components/commerce/buy-button.js +1 -10
- package/dist/site/components/commerce/checkout-button.cjs +2 -3
- package/dist/site/components/commerce/checkout-button.js +2 -3
- package/dist/site/components/commerce/checkout-panel/desktop-cp.cjs +15 -173
- package/dist/site/components/commerce/checkout-panel/desktop-cp.js +14 -174
- package/dist/site/components/commerce/checkout-panel/index.cjs +9 -400
- package/dist/site/components/commerce/checkout-panel/index.js +10 -403
- package/dist/site/components/commerce/checkout-panel/mobile-cp.cjs +15 -236
- package/dist/site/components/commerce/checkout-panel/mobile-cp.js +13 -237
- package/dist/site/components/commerce/desktop-bag-popup.cjs +7 -8
- package/dist/site/components/commerce/desktop-bag-popup.js +3 -8
- package/dist/site/components/commerce/drawer/index.cjs +15 -289
- package/dist/site/components/commerce/drawer/index.js +10 -290
- package/dist/site/components/commerce/drawer/micro.cjs +8 -115
- package/dist/site/components/commerce/drawer/micro.js +4 -115
- package/dist/site/components/commerce/drawer/shell.cjs +2 -10
- package/dist/site/components/commerce/drawer/shell.js +2 -10
- package/dist/site/components/contact-dialog/index.cjs +6 -69
- package/dist/site/components/contact-dialog/index.js +7 -71
- package/dist/site/components/drawer-margin.cjs +2 -10
- package/dist/site/components/drawer-margin.js +2 -10
- package/dist/site/components/footer.cjs +11 -81
- package/dist/site/components/footer.js +8 -80
- package/dist/site/components/header/desktop.cjs +18 -374
- package/dist/site/components/header/desktop.js +12 -355
- package/dist/site/components/header/index.cjs +9 -674
- package/dist/site/components/header/index.js +8 -657
- package/dist/site/components/header/mobile-bag-drawer.cjs +6 -71
- package/dist/site/components/header/mobile-bag-drawer.js +5 -74
- package/dist/site/components/header/mobile-nav-menu-ai.cjs +2 -31
- package/dist/site/components/header/mobile-nav-menu-ai.js +1 -26
- package/dist/site/components/header/mobile-nav-menu-item.cjs +6 -60
- package/dist/site/components/header/mobile-nav-menu-item.js +6 -61
- package/dist/site/components/header/mobile-nav-menu.cjs +7 -110
- package/dist/site/components/header/mobile-nav-menu.js +7 -112
- package/dist/site/components/header/mobile.cjs +25 -330
- package/dist/site/components/header/mobile.js +20 -330
- package/dist/site/components/icons/index.cjs +34 -35
- package/dist/site/components/icons/index.js +5 -33
- package/dist/site/components/index.cjs +118 -1961
- package/dist/site/components/index.js +23 -1951
- package/dist/site/components/mini-chart/index.cjs +7 -90
- package/dist/site/components/mini-chart/index.js +1 -92
- package/dist/site/components/mini-chart/wrapper.cjs +7 -76
- package/dist/site/components/mini-chart/wrapper.js +4 -77
- package/dist/site/components/not-found/index.cjs +9 -819
- package/dist/site/components/not-found/index.js +8 -802
- package/dist/site/components/security/index.cjs +9 -819
- package/dist/site/components/security/index.js +8 -802
- package/dist/site/next/analytics/index.cjs +16 -49
- package/dist/site/next/analytics/index.js +3 -49
- package/dist/site/next/analytics/pixel-analytics.cjs +23 -8
- package/dist/site/next/analytics/pixel-analytics.js +4 -8
- package/dist/site/next/index.cjs +13 -140
- package/dist/site/next/index.js +2 -140
- package/dist/site/root-layout/index.cjs +12 -1435
- package/dist/site/root-layout/index.css +0 -133
- package/dist/site/root-layout/index.js +12 -1416
- package/dist/site/site-def/footer/community.cjs +11 -27
- package/dist/site/site-def/footer/community.js +2 -18
- package/dist/site/site-def/footer/company.d.ts +3 -3
- package/dist/site/site-def/footer/index.cjs +38 -218
- package/dist/site/site-def/footer/index.js +14 -215
- package/dist/site/site-def/index.cjs +28 -620
- package/dist/site/site-def/index.js +3 -624
- package/dist/table.cjs +20 -338
- package/dist/table.js +19 -338
- package/dist/tabs.cjs +3 -10
- package/dist/tabs.js +1 -9
- package/dist/tag.cjs +9 -270
- package/dist/tag.js +6 -268
- package/dist/tags.cjs +6 -314
- package/dist/tags.js +5 -314
- package/dist/textarea.cjs +4 -50
- package/dist/textarea.js +3 -49
- package/dist/tooltip.cjs +15 -34
- package/dist/tooltip.js +13 -33
- package/dist/vite.cjs +3 -82
- package/dist/vite.js +1 -80
- package/package.json +1 -1
- package/dist/index.css +0 -132
- package/dist/site/components/auth/login-panel.css +0 -4
- package/dist/site/components/commerce/bag-button.css +0 -4
- package/dist/site/components/commerce/checkout-button.css +0 -4
- package/dist/site/components/commerce/checkout-panel/desktop-cp.css +0 -132
- package/dist/site/components/commerce/checkout-panel/index.css +0 -132
- package/dist/site/components/commerce/checkout-panel/mobile-cp.css +0 -132
- package/dist/site/components/commerce/desktop-bag-popup.css +0 -4
- package/dist/site/components/commerce/drawer/index.css +0 -132
- package/dist/site/components/commerce/drawer/micro.css +0 -4
- package/dist/site/components/header/desktop.css +0 -4
- package/dist/site/components/header/index.css +0 -132
- package/dist/site/components/header/mobile-bag-drawer.css +0 -4
- package/dist/site/components/header/mobile-nav-menu-ai.css +0 -132
- package/dist/site/components/header/mobile-nav-menu-item.css +0 -132
- package/dist/site/components/header/mobile-nav-menu.css +0 -132
- package/dist/site/components/header/mobile.css +0 -132
- package/dist/site/components/icons/index.css +0 -4
- package/dist/site/components/index.css +0 -132
- package/dist/site/components/not-found/index.css +0 -132
- package/dist/site/components/security/index.css +0 -132
- package/dist/site/site-def/footer/community.css +0 -4
- package/dist/site/site-def/footer/index.css +0 -4
- package/dist/site/site-def/index.css +0 -4
|
@@ -1,117 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { Box, cn, css } from '@hanzo/ui';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent
|
|
3
|
+
import MobileNavMenuAI from './mobile-nav-menu-ai.js';
|
|
4
|
+
import AuthWidget from '../auth/widget.js';
|
|
5
|
+
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from '@hanzo/ui/primitives';
|
|
6
|
+
import { ChevronDown } from 'lucide-react';
|
|
6
7
|
import Link from 'next/link';
|
|
7
|
-
import {
|
|
8
|
-
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
9
|
-
import { IamContext, useIam, useIamIdentity } from '@hanzo/iam/react';
|
|
10
|
-
import 'embla-carousel-autoplay';
|
|
8
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
11
9
|
|
|
12
|
-
var SIZE = {
|
|
13
|
-
xl: { mark: 40, word: 22, gap: "gap-4" },
|
|
14
|
-
lg: { mark: 40, word: 22, gap: "gap-4" },
|
|
15
|
-
md: { mark: 32, word: 18, gap: "gap-3" },
|
|
16
|
-
sm: { mark: 24, word: 13, gap: "gap-2" },
|
|
17
|
-
xs: { mark: 16, word: 9, gap: "gap-1.5" }
|
|
18
|
-
};
|
|
19
|
-
var Logo = ({
|
|
20
|
-
size = "md",
|
|
21
|
-
href,
|
|
22
|
-
// no default please!
|
|
23
|
-
outerClx = "",
|
|
24
|
-
variant = "full",
|
|
25
|
-
onClick
|
|
26
|
-
}) => {
|
|
27
|
-
const s = SIZE[size] ?? SIZE.md;
|
|
28
|
-
const clx = "flex flex-row items-center " + s.gap + " " + (href ? "hover:opacity-80 cursor-pointer " : "cursor-default ") + outerClx;
|
|
29
|
-
const art = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
30
|
-
variant !== "wordmark" && /* @__PURE__ */ jsx(Logo$1, { variant: "white", size: s.mark }),
|
|
31
|
-
variant !== "mark" && /* @__PURE__ */ jsx(Wordmark, { height: s.word })
|
|
32
|
-
] });
|
|
33
|
-
return href ? /* @__PURE__ */ jsx(Link, { href, style: css(clx), onClick, children: art }) : /* @__PURE__ */ jsx(Box, { tag: "span", className: clx, onClick, children: art });
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
// src/site/components/auth/resume.ts
|
|
37
|
-
var KEY = "lux-auth-resume";
|
|
38
|
-
var remember = () => {
|
|
39
|
-
sessionStorage.setItem(KEY, window.location.pathname + window.location.search);
|
|
40
|
-
};
|
|
41
|
-
var Widget = ({
|
|
42
|
-
noLogin = false,
|
|
43
|
-
handleLogin,
|
|
44
|
-
className
|
|
45
|
-
}) => {
|
|
46
|
-
const { isAuthenticated, isLoading, login, logout } = useIam();
|
|
47
|
-
const identity = useIamIdentity();
|
|
48
|
-
if (isLoading) {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
if (!isAuthenticated) {
|
|
52
|
-
return noLogin ? null : /* @__PURE__ */ jsx(
|
|
53
|
-
Button,
|
|
54
|
-
{
|
|
55
|
-
variant: "primary",
|
|
56
|
-
className: cn("h-8 w-fit !min-w-0", className),
|
|
57
|
-
onClick: handleLogin ?? (() => {
|
|
58
|
-
remember();
|
|
59
|
-
void login();
|
|
60
|
-
}),
|
|
61
|
-
children: "Login"
|
|
62
|
-
}
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
return /* @__PURE__ */ jsxs(Popover, { children: [
|
|
66
|
-
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
67
|
-
Button,
|
|
68
|
-
{
|
|
69
|
-
variant: "outline",
|
|
70
|
-
size: "icon",
|
|
71
|
-
className: cn("rounded-full text-muted border-2 border-muted bg-level-1 hover:bg-level-2 hover:border-foreground hover:text-foreground uppercase w-8 h-8", className),
|
|
72
|
-
children: identity?.initials
|
|
73
|
-
}
|
|
74
|
-
) }),
|
|
75
|
-
/* @__PURE__ */ jsx(PopoverContent, { className: "bg-level-0", children: /* @__PURE__ */ jsxs("div", { className: "grid gap-4", children: [
|
|
76
|
-
/* @__PURE__ */ jsxs("div", { className: "space-y-2 truncate", children: [
|
|
77
|
-
/* @__PURE__ */ jsx("h4", { className: "font-medium leading-none truncate", children: identity?.name }),
|
|
78
|
-
identity?.email && identity.email !== identity.name && /* @__PURE__ */ jsx("p", { className: "text-sm opacity-50 truncate", children: identity.email })
|
|
79
|
-
] }),
|
|
80
|
-
/* @__PURE__ */ jsx(Separator, {}),
|
|
81
|
-
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => {
|
|
82
|
-
logout();
|
|
83
|
-
}, children: "Logout" })
|
|
84
|
-
] }) })
|
|
85
|
-
] });
|
|
86
|
-
};
|
|
87
|
-
var AuthWidget = (props) => useContext(IamContext) ? /* @__PURE__ */ jsx(Widget, { ...props }) : null;
|
|
88
|
-
var widget_default = AuthWidget;
|
|
89
|
-
var MobileNavMenuAI = ({ setMenuOpen }) => {
|
|
90
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
91
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
92
|
-
/* @__PURE__ */ jsxs(Box, { className: "w-full text-2xl cursor-pointer", children: [
|
|
93
|
-
/* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
|
|
94
|
-
/* @__PURE__ */ jsx(Logo, { variant: "wordmark", size: "md", outerClx: "p-6 h-full" }),
|
|
95
|
-
/* @__PURE__ */ jsx(Box, { tag: "span", className: cn("grid", "block h-full aspect-square hover:bg-background sm:hover:bg-level-1 active:scale-75 text-foreground will-change-transform transition-transform transition-scale transition-duration-[1500] mt-6 mr-6 " + (!open ? "rotate-none" : "rotate-[135deg] scale-110")), children: /* @__PURE__ */ jsx(Plus, { width: 28, height: 28, style: css("w-full h-full"), onClick: () => setMenuOpen(false) }) })
|
|
96
|
-
] }),
|
|
97
|
-
/* @__PURE__ */ jsx(Box, { className: "flex items-center gap-5 border-b border-[#3A3A3A] mt-4 rounded-full bg-muted-4 mx-6", children: /* @__PURE__ */ jsxs(Box, { className: "text-muted-1 font-bold flex-1 flex justify-between min-h-12 items-center px-2", onClick: () => setIsOpen(true), children: [
|
|
98
|
-
/* @__PURE__ */ jsx("span", { className: "text-base pl-2 font-light", children: "Ask AI a question" }),
|
|
99
|
-
/* @__PURE__ */ jsx(ArrowRight, {})
|
|
100
|
-
] }) })
|
|
101
|
-
] }),
|
|
102
|
-
/* @__PURE__ */ jsx(Box, { className: "fixed bottom-0 sm:bottom-16 right-0 w-full h-full sm:max-w-[400px] sm:max-h-[550px] sm:px-4 z-floating " + (isOpen ? "flex" : "hidden"), children: /* @__PURE__ */ jsxs(Card, { className: "flex flex-col h-full w-full", children: [
|
|
103
|
-
/* @__PURE__ */ jsxs("div", { className: "flex px-4 py-2 h-16 bg-level-0 items-center justify-between", children: [
|
|
104
|
-
/* @__PURE__ */ jsxs("h3", { className: "font-semibold font-heading", children: [
|
|
105
|
-
"LUX",
|
|
106
|
-
/* @__PURE__ */ jsx("span", { className: "opacity-60", children: "AI" })
|
|
107
|
-
] }),
|
|
108
|
-
/* @__PURE__ */ jsx(Button, { onClick: () => setIsOpen(false), variant: "link", size: "icon", className: "w-fit sm:hidden", children: /* @__PURE__ */ jsx(Plus, { className: "w-6 h-6 flex-none mr-1 rotate-45 transition-transform" }) })
|
|
109
|
-
] }),
|
|
110
|
-
/* @__PURE__ */ jsx("iframe", { src: "https://lux.chat/iframe", className: "h-full" })
|
|
111
|
-
] }) })
|
|
112
|
-
] });
|
|
113
|
-
};
|
|
114
|
-
var mobile_nav_menu_ai_default = MobileNavMenuAI;
|
|
115
10
|
var MobileNav = ({
|
|
116
11
|
currentAs,
|
|
117
12
|
links,
|
|
@@ -121,7 +16,7 @@ var MobileNav = ({
|
|
|
121
16
|
setChatbotOpen,
|
|
122
17
|
setMenuOpen
|
|
123
18
|
}) => links.length > 0 ? /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col h-full", className), children: [
|
|
124
|
-
/* @__PURE__ */ jsx(
|
|
19
|
+
/* @__PURE__ */ jsx(MobileNavMenuAI, { setMenuOpen }),
|
|
125
20
|
/* @__PURE__ */ jsx(Box, { className: "flex flex-col flex-1 overflow-auto", children: /* @__PURE__ */ jsx(Accordion, { type: "single", collapsible: true, className: "w-full h-full", children: links.map((el, index) => {
|
|
126
21
|
const itemClx = commonItemClx ? typeof commonItemClx === "string" ? commonItemClx : commonItemClx(el) : "";
|
|
127
22
|
const variant = el.variant ?? "link";
|
|
@@ -161,7 +56,7 @@ var MobileNav = ({
|
|
|
161
56
|
] }, index);
|
|
162
57
|
}
|
|
163
58
|
}) }) }),
|
|
164
|
-
/* @__PURE__ */ jsx(
|
|
59
|
+
/* @__PURE__ */ jsx(AuthWidget, { className: "text-2xl z-10", handleLogin: () => {
|
|
165
60
|
setMenuState("login");
|
|
166
61
|
} })
|
|
167
62
|
] }) : null;
|
|
@@ -5,330 +5,25 @@ var react = require('react');
|
|
|
5
5
|
var navigation = require('next/navigation');
|
|
6
6
|
var ui = require('@hanzo/ui');
|
|
7
7
|
var commerce = require('@hanzo/commerce');
|
|
8
|
-
var
|
|
8
|
+
var Login = require('../auth/login.cjs');
|
|
9
|
+
var sendGAEvent = require('../../next/analytics/google-analytics.cjs');
|
|
10
|
+
var index_cjs$1 = require('../icons/index.cjs');
|
|
11
|
+
var index_cjs = require('../index.cjs');
|
|
12
|
+
var MenuToggleButton = require('./mobile-menu-toggle-button.cjs');
|
|
13
|
+
var BagButton = require('../commerce/bag-button.cjs');
|
|
14
|
+
var MobileBagDrawer = require('./mobile-bag-drawer.cjs');
|
|
15
|
+
var NavMenu = require('./mobile-nav-menu.cjs');
|
|
9
16
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
|
-
var Link = require('next/link');
|
|
11
|
-
var logo = require('@luxfi/logo');
|
|
12
|
-
var primitives = require('@hanzo/ui/primitives');
|
|
13
|
-
var mobx = require('mobx');
|
|
14
|
-
var mobxReactLite = require('mobx-react-lite');
|
|
15
|
-
require('embla-carousel-autoplay');
|
|
16
|
-
var lucideReact = require('lucide-react');
|
|
17
17
|
|
|
18
18
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var Login__default = /*#__PURE__*/_interopDefault(Login);
|
|
21
|
+
var sendGAEvent__default = /*#__PURE__*/_interopDefault(sendGAEvent);
|
|
22
|
+
var MenuToggleButton__default = /*#__PURE__*/_interopDefault(MenuToggleButton);
|
|
23
|
+
var BagButton__default = /*#__PURE__*/_interopDefault(BagButton);
|
|
24
|
+
var MobileBagDrawer__default = /*#__PURE__*/_interopDefault(MobileBagDrawer);
|
|
25
|
+
var NavMenu__default = /*#__PURE__*/_interopDefault(NavMenu);
|
|
21
26
|
|
|
22
|
-
// src/site/components/auth/resume.ts
|
|
23
|
-
var KEY = "lux-auth-resume";
|
|
24
|
-
var remember = () => {
|
|
25
|
-
sessionStorage.setItem(KEY, window.location.pathname + window.location.search);
|
|
26
|
-
};
|
|
27
|
-
var Login = ({
|
|
28
|
-
className,
|
|
29
|
-
onSuccess
|
|
30
|
-
}) => {
|
|
31
|
-
const { config } = react$1.useIam();
|
|
32
|
-
const [state] = react.useState(() => crypto.randomUUID());
|
|
33
|
-
react.useEffect(remember, []);
|
|
34
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35
|
-
react$1.Login,
|
|
36
|
-
{
|
|
37
|
-
serverUrl: config.serverUrl,
|
|
38
|
-
clientId: config.clientId,
|
|
39
|
-
redirectUri: config.redirectUri,
|
|
40
|
-
organization: config.organization,
|
|
41
|
-
state,
|
|
42
|
-
className: ui.cn("hanzo-iam-card", className),
|
|
43
|
-
onSuccess
|
|
44
|
-
}
|
|
45
|
-
);
|
|
46
|
-
};
|
|
47
|
-
var login_default = Login;
|
|
48
|
-
|
|
49
|
-
// src/site/next/analytics/google-analytics.ts
|
|
50
|
-
var sendGAEvent = (name, options = {}) => {
|
|
51
|
-
window.gtag("event", name, options);
|
|
52
|
-
};
|
|
53
|
-
var Avatar = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "17", height: "21", viewBox: "0 0 17 21", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
|
|
54
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8.66112 10.3544C6.14668 10.3544 4.32664 6.91073 4.32664 4.59206C4.32664 2.12213 6.27238 0.115723 8.66112 0.115723C11.0499 0.115723 12.9956 2.12514 12.9956 4.59206C12.9956 6.91398 11.1756 10.3544 8.66112 10.3544ZM8.66112 1.1542C6.82539 1.1542 5.33242 2.69703 5.33242 4.59185C5.33242 6.65402 6.94715 9.31553 8.66112 9.31553C10.3761 9.31553 11.9898 6.65387 11.9898 4.5925C11.9898 2.69668 10.4969 1.15398 8.66112 1.15398V1.1542Z", fill: "white" }),
|
|
55
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M6.79776 11.3345H10.5242C13.7802 11.3345 16.4302 14.0712 16.4302 17.4338C16.4302 19.0831 15.1297 20.423 13.5356 20.423H3.78923C2.19216 20.423 0.894689 19.0831 0.894689 17.4338C0.893706 14.0712 3.54156 11.3345 6.79776 11.3345ZM3.78819 19.3844H13.5337C14.5749 19.3844 15.4225 18.509 15.4225 17.4338C15.4225 14.6453 13.2253 12.3731 10.5223 12.3731H6.79862C4.0956 12.3731 1.89839 14.6423 1.89839 17.4338C1.89937 18.509 2.74701 19.3844 3.78816 19.3844H3.78819Z", fill: "white" })
|
|
56
|
-
] });
|
|
57
|
-
var avatar_default = Avatar;
|
|
58
|
-
var BagIcon = (props) => /* @__PURE__ */ jsxRuntime.jsx("svg", { fill: "none", viewBox: "0 0 1019 1281", ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m977.243 365.553h-175.407v-90.629c0-151.923-131.968-274.924-292.334-274.924-160.367 0-292.337 123.002-292.337 274.924v90.629h-175.4023c-23.3886 0-41.7627 17.051-41.7627 38.756v775.121c0 55.8 48.4456 100.76 108.582 100.76h801.84c60.138 0 108.578-44.96 108.578-100.76v-775.121c0-21.705-18.37-38.756-41.757-38.756zm-676.553-90.629c0-108.517 93.546-196.9408 208.812-196.9408 115.265 0 208.813 88.4218 208.813 196.9408v89.08h-417.625z", fill: "currentColor" }) });
|
|
59
|
-
var bag_icon_default = BagIcon;
|
|
60
|
-
var SIZE = {
|
|
61
|
-
xl: { mark: 40, word: 22, gap: "gap-4" },
|
|
62
|
-
lg: { mark: 40, word: 22, gap: "gap-4" },
|
|
63
|
-
md: { mark: 32, word: 18, gap: "gap-3" },
|
|
64
|
-
sm: { mark: 24, word: 13, gap: "gap-2" },
|
|
65
|
-
xs: { mark: 16, word: 9, gap: "gap-1.5" }
|
|
66
|
-
};
|
|
67
|
-
var Logo = ({
|
|
68
|
-
size = "md",
|
|
69
|
-
href,
|
|
70
|
-
// no default please!
|
|
71
|
-
outerClx = "",
|
|
72
|
-
variant = "full",
|
|
73
|
-
onClick
|
|
74
|
-
}) => {
|
|
75
|
-
const s = SIZE[size] ?? SIZE.md;
|
|
76
|
-
const clx = "flex flex-row items-center " + s.gap + " " + (href ? "hover:opacity-80 cursor-pointer " : "cursor-default ") + outerClx;
|
|
77
|
-
const art = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
78
|
-
variant !== "wordmark" && /* @__PURE__ */ jsxRuntime.jsx(logo.Logo, { variant: "white", size: s.mark }),
|
|
79
|
-
variant !== "mark" && /* @__PURE__ */ jsxRuntime.jsx(logo.Wordmark, { height: s.word })
|
|
80
|
-
] });
|
|
81
|
-
return href ? /* @__PURE__ */ jsxRuntime.jsx(Link__default.default, { href, style: ui.css(clx), onClick, children: art }) : /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { tag: "span", className: clx, onClick, children: art });
|
|
82
|
-
};
|
|
83
|
-
var Widget = ({
|
|
84
|
-
noLogin = false,
|
|
85
|
-
handleLogin,
|
|
86
|
-
className
|
|
87
|
-
}) => {
|
|
88
|
-
const { isAuthenticated, isLoading, login, logout } = react$1.useIam();
|
|
89
|
-
const identity = react$1.useIamIdentity();
|
|
90
|
-
if (isLoading) {
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
if (!isAuthenticated) {
|
|
94
|
-
return noLogin ? null : /* @__PURE__ */ jsxRuntime.jsx(
|
|
95
|
-
primitives.Button,
|
|
96
|
-
{
|
|
97
|
-
variant: "primary",
|
|
98
|
-
className: ui.cn("h-8 w-fit !min-w-0", className),
|
|
99
|
-
onClick: handleLogin ?? (() => {
|
|
100
|
-
remember();
|
|
101
|
-
void login();
|
|
102
|
-
}),
|
|
103
|
-
children: "Login"
|
|
104
|
-
}
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(primitives.Popover, { children: [
|
|
108
|
-
/* @__PURE__ */ jsxRuntime.jsx(primitives.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
109
|
-
primitives.Button,
|
|
110
|
-
{
|
|
111
|
-
variant: "outline",
|
|
112
|
-
size: "icon",
|
|
113
|
-
className: ui.cn("rounded-full text-muted border-2 border-muted bg-level-1 hover:bg-level-2 hover:border-foreground hover:text-foreground uppercase w-8 h-8", className),
|
|
114
|
-
children: identity?.initials
|
|
115
|
-
}
|
|
116
|
-
) }),
|
|
117
|
-
/* @__PURE__ */ jsxRuntime.jsx(primitives.PopoverContent, { className: "bg-level-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-4", children: [
|
|
118
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 truncate", children: [
|
|
119
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-medium leading-none truncate", children: identity?.name }),
|
|
120
|
-
identity?.email && identity.email !== identity.name && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm opacity-50 truncate", children: identity.email })
|
|
121
|
-
] }),
|
|
122
|
-
/* @__PURE__ */ jsxRuntime.jsx(primitives.Separator, {}),
|
|
123
|
-
/* @__PURE__ */ jsxRuntime.jsx(primitives.Button, { variant: "outline", onClick: () => {
|
|
124
|
-
logout();
|
|
125
|
-
}, children: "Logout" })
|
|
126
|
-
] }) })
|
|
127
|
-
] });
|
|
128
|
-
};
|
|
129
|
-
var AuthWidget = (props) => react.useContext(react$1.IamContext) ? /* @__PURE__ */ jsxRuntime.jsx(Widget, { ...props }) : null;
|
|
130
|
-
var widget_default = AuthWidget;
|
|
131
|
-
var BagButton = mobxReactLite.observer(({
|
|
132
|
-
showIfEmpty = false,
|
|
133
|
-
animateOnHover = true,
|
|
134
|
-
animateOnQuantityChange = true,
|
|
135
|
-
size = "default",
|
|
136
|
-
className = "",
|
|
137
|
-
iconClx = "",
|
|
138
|
-
onClick
|
|
139
|
-
}) => {
|
|
140
|
-
const c = commerce.useCommerce();
|
|
141
|
-
const wiggleRef = react.useRef(mobx.observable.box("none"));
|
|
142
|
-
react.useEffect(() => (
|
|
143
|
-
// return IReactionDisposer
|
|
144
|
-
animateOnQuantityChange && c ? mobx.reaction(
|
|
145
|
-
() => c.cartQuantity,
|
|
146
|
-
(curr, prev) => {
|
|
147
|
-
if (curr > prev) {
|
|
148
|
-
mobx.runInAction(() => {
|
|
149
|
-
wiggleRef.current.set("more");
|
|
150
|
-
});
|
|
151
|
-
} else {
|
|
152
|
-
mobx.runInAction(() => {
|
|
153
|
-
wiggleRef.current.set("less");
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
setTimeout(() => {
|
|
157
|
-
mobx.runInAction(() => {
|
|
158
|
-
wiggleRef.current.set("none");
|
|
159
|
-
});
|
|
160
|
-
}, 800);
|
|
161
|
-
}
|
|
162
|
-
) : void 0
|
|
163
|
-
), []);
|
|
164
|
-
if (!c || !showIfEmpty && c.cartEmpty) {
|
|
165
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", {});
|
|
166
|
-
}
|
|
167
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
168
|
-
ui.Box,
|
|
169
|
-
{
|
|
170
|
-
"aria-label": "Bag",
|
|
171
|
-
role: "button",
|
|
172
|
-
onClick,
|
|
173
|
-
className: ui.cn(
|
|
174
|
-
primitives.buttonVariants({ variant: "ghost", size }),
|
|
175
|
-
"rounded-md",
|
|
176
|
-
// Overides the bg change on hover --not a "hover effect"
|
|
177
|
-
"relative group p-0 aspect-square hover:bg-background",
|
|
178
|
-
wiggleRef.current.get() === "more" ? "item-added-to-cart-animation" : wiggleRef.current.get() === "less" ? "item-removed-from-cart-animation" : "",
|
|
179
|
-
className
|
|
180
|
-
),
|
|
181
|
-
children: [
|
|
182
|
-
!c.cartEmpty && /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "z-above-content flex flex-col justify-center items-center absolute left-0 right-0 top-0 bottom-0 leading-none font-sans font-bold text-primary-fg text-xs ", children: [
|
|
183
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[3px] w-full" }),
|
|
184
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { children: c.cartQuantity })
|
|
185
|
-
] }),
|
|
186
|
-
/* @__PURE__ */ jsxRuntime.jsx(bag_icon_default, { width: "24", height: "28", className: ui.cn(
|
|
187
|
-
"relative -top-[3px] fill-primary",
|
|
188
|
-
iconClx,
|
|
189
|
-
animateOnHover ? "group-hover:fill-primary-hover group-hover:scale-105 transition-scale transition-duration-300" : ""
|
|
190
|
-
), "aria-hidden": "true" })
|
|
191
|
-
]
|
|
192
|
-
}
|
|
193
|
-
);
|
|
194
|
-
});
|
|
195
|
-
var bag_button_default = BagButton;
|
|
196
|
-
var MobileMenuToggleButton = ({
|
|
197
|
-
open: open2,
|
|
198
|
-
setOpen,
|
|
199
|
-
className = ""
|
|
200
|
-
}) => {
|
|
201
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
202
|
-
primitives.Button,
|
|
203
|
-
{
|
|
204
|
-
variant: "ghost",
|
|
205
|
-
size: "default",
|
|
206
|
-
className: ui.cn("rounded-full", ui.cn("p-0 aspect-square hover:bg-background sm:hover:bg-level-1 active:scale-75", className)),
|
|
207
|
-
onClick: () => {
|
|
208
|
-
setOpen(!open2);
|
|
209
|
-
},
|
|
210
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { width: 28, height: 28, style: ui.css(
|
|
211
|
-
"block h-full will-change-transform transition-transform transition-scale transition-duration-[1500] " + (open2 ? "rotate-[135deg] scale-110" : "rotate-none")
|
|
212
|
-
) })
|
|
213
|
-
}
|
|
214
|
-
);
|
|
215
|
-
};
|
|
216
|
-
var mobile_menu_toggle_button_default = MobileMenuToggleButton;
|
|
217
|
-
var MobileBagDrawer = ({
|
|
218
|
-
open: open2,
|
|
219
|
-
setOpen,
|
|
220
|
-
handleCheckout,
|
|
221
|
-
className = ""
|
|
222
|
-
}) => {
|
|
223
|
-
return /* @__PURE__ */ jsxRuntime.jsx(primitives.Drawer, { open: open2, onOpenChange: setOpen, children: /* @__PURE__ */ jsxRuntime.jsx(primitives.DrawerContent, { className: ui.cn("rounded-t-xl mt-6 pb-12 h-auto", className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
224
|
-
commerce.CartPanel,
|
|
225
|
-
{
|
|
226
|
-
handleCheckout,
|
|
227
|
-
className: "mt-4 mb-4 border-none py-0 px-4 w-full ",
|
|
228
|
-
listClx: "rounded-sm pr-3",
|
|
229
|
-
scrollAfter: 5,
|
|
230
|
-
itemClx: "mt-2",
|
|
231
|
-
totalClx: "sticky px-1 pr-2 border rounded-sm -bottom-[1px] bg-background",
|
|
232
|
-
buttonClx: "max-w-[220px] flex-none",
|
|
233
|
-
children: [
|
|
234
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
|
|
235
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
236
|
-
bag_button_default,
|
|
237
|
-
{
|
|
238
|
-
animateOnHover: false,
|
|
239
|
-
showIfEmpty: true,
|
|
240
|
-
className: "mr-2 relative w-6 h-7",
|
|
241
|
-
iconClx: "fill-foreground "
|
|
242
|
-
}
|
|
243
|
-
),
|
|
244
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
|
|
245
|
-
] }),
|
|
246
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
|
|
247
|
-
]
|
|
248
|
-
}
|
|
249
|
-
) }) });
|
|
250
|
-
};
|
|
251
|
-
var mobile_bag_drawer_default = MobileBagDrawer;
|
|
252
|
-
var MobileNavMenuAI = ({ setMenuOpen }) => {
|
|
253
|
-
const [isOpen, setIsOpen] = react.useState(false);
|
|
254
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
255
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "w-full text-2xl cursor-pointer", children: [
|
|
256
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
|
|
257
|
-
/* @__PURE__ */ jsxRuntime.jsx(Logo, { variant: "wordmark", size: "md", outerClx: "p-6 h-full" }),
|
|
258
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Box, { tag: "span", className: ui.cn("grid", "block h-full aspect-square hover:bg-background sm:hover:bg-level-1 active:scale-75 text-foreground will-change-transform transition-transform transition-scale transition-duration-[1500] mt-6 mr-6 " + (!open ? "rotate-none" : "rotate-[135deg] scale-110")), children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { width: 28, height: 28, style: ui.css("w-full h-full"), onClick: () => setMenuOpen(false) }) })
|
|
259
|
-
] }),
|
|
260
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "flex items-center gap-5 border-b border-[#3A3A3A] mt-4 rounded-full bg-muted-4 mx-6", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "text-muted-1 font-bold flex-1 flex justify-between min-h-12 items-center px-2", onClick: () => setIsOpen(true), children: [
|
|
261
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base pl-2 font-light", children: "Ask AI a question" }),
|
|
262
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, {})
|
|
263
|
-
] }) })
|
|
264
|
-
] }),
|
|
265
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "fixed bottom-0 sm:bottom-16 right-0 w-full h-full sm:max-w-[400px] sm:max-h-[550px] sm:px-4 z-floating " + (isOpen ? "flex" : "hidden"), children: /* @__PURE__ */ jsxRuntime.jsxs(primitives.Card, { className: "flex flex-col h-full w-full", children: [
|
|
266
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex px-4 py-2 h-16 bg-level-0 items-center justify-between", children: [
|
|
267
|
-
/* @__PURE__ */ jsxRuntime.jsxs("h3", { className: "font-semibold font-heading", children: [
|
|
268
|
-
"LUX",
|
|
269
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "opacity-60", children: "AI" })
|
|
270
|
-
] }),
|
|
271
|
-
/* @__PURE__ */ jsxRuntime.jsx(primitives.Button, { onClick: () => setIsOpen(false), variant: "link", size: "icon", className: "w-fit sm:hidden", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "w-6 h-6 flex-none mr-1 rotate-45 transition-transform" }) })
|
|
272
|
-
] }),
|
|
273
|
-
/* @__PURE__ */ jsxRuntime.jsx("iframe", { src: "https://lux.chat/iframe", className: "h-full" })
|
|
274
|
-
] }) })
|
|
275
|
-
] });
|
|
276
|
-
};
|
|
277
|
-
var mobile_nav_menu_ai_default = MobileNavMenuAI;
|
|
278
|
-
var MobileNav = ({
|
|
279
|
-
currentAs,
|
|
280
|
-
links,
|
|
281
|
-
setMenuState,
|
|
282
|
-
className = "",
|
|
283
|
-
commonItemClx,
|
|
284
|
-
setChatbotOpen,
|
|
285
|
-
setMenuOpen
|
|
286
|
-
}) => links.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: ui.cn("flex flex-col h-full", className), children: [
|
|
287
|
-
/* @__PURE__ */ jsxRuntime.jsx(mobile_nav_menu_ai_default, { setMenuOpen }),
|
|
288
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "flex flex-col flex-1 overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(primitives.Accordion, { type: "single", collapsible: true, className: "w-full h-full", children: links.map((el, index) => {
|
|
289
|
-
const itemClx = commonItemClx ? typeof commonItemClx === "string" ? commonItemClx : commonItemClx(el) : "";
|
|
290
|
-
const variant = el.variant ?? "link";
|
|
291
|
-
let internalClx = variant === "link" ? " text-muted hover:text-foreground active:text-accent rounded-none" : " min-w-0";
|
|
292
|
-
if (currentAs && currentAs === el.href) {
|
|
293
|
-
internalClx += " pointer-events-none";
|
|
294
|
-
if (variant === "link") {
|
|
295
|
-
internalClx += " text-accent";
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
if (!el.isAIMenu) {
|
|
299
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(primitives.AccordionItem, { value: el.title ? el.title : "", className: "!no-underline !border-0 px-6", children: [
|
|
300
|
-
/* @__PURE__ */ jsxRuntime.jsxs(primitives.AccordionTrigger, { className: ui.cn(internalClx, itemClx, ""), children: [
|
|
301
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: ui.cn(internalClx, itemClx, "flex items-center justify-between w-full pl-3 text-base font-normal leading-6"), children: el.title }),
|
|
302
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { style: ui.css("w-4 h-4 mr-3") })
|
|
303
|
-
] }),
|
|
304
|
-
/* @__PURE__ */ jsxRuntime.jsx(primitives.AccordionContent, { children: el.childMenu && /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "px-4", children: Object.entries(el.childMenu.reduce((acc, child) => {
|
|
305
|
-
const group = acc[child.groupName ? child.groupName : ""] || [];
|
|
306
|
-
group.push(child);
|
|
307
|
-
acc[child.groupName ? child.groupName : ""] = group;
|
|
308
|
-
return acc;
|
|
309
|
-
}, {})).map(([groupName, children]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
310
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "mt-4 mb-4 font-light text-muted-1", children: groupName }),
|
|
311
|
-
children.map((child, childIndex) => /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "m-2", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Box, { className: "flex items-center py-1", children: [
|
|
312
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: child.icon && child.icon }),
|
|
313
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
314
|
-
Link__default.default,
|
|
315
|
-
{
|
|
316
|
-
href: child.href,
|
|
317
|
-
target: child.newTab ? "_blank" : "_self",
|
|
318
|
-
rel: "noopener noreferrer",
|
|
319
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { tag: "span", className: "text-muted-2 hover:underline ml-5 hover:text-primary", children: child.title })
|
|
320
|
-
}
|
|
321
|
-
)
|
|
322
|
-
] }) }, childIndex))
|
|
323
|
-
] }, groupName)) }) })
|
|
324
|
-
] }, index);
|
|
325
|
-
}
|
|
326
|
-
}) }) }),
|
|
327
|
-
/* @__PURE__ */ jsxRuntime.jsx(widget_default, { className: "text-2xl z-10", handleLogin: () => {
|
|
328
|
-
setMenuState("login");
|
|
329
|
-
} })
|
|
330
|
-
] }) : null;
|
|
331
|
-
var mobile_nav_menu_default = MobileNav;
|
|
332
27
|
var bagClx = "mt-4 mb-8 border-none py-0 px-4 w-full sm:min-w-[350px] sm:max-w-[500px] sm:mx-auto min-h-[60vh] max-h-[70vh] sm:animate-in sm:zoom-in-90 ";
|
|
333
28
|
var MobileHeader = ({
|
|
334
29
|
currentAs,
|
|
@@ -346,7 +41,7 @@ var MobileHeader = ({
|
|
|
346
41
|
const router = navigation.useRouter();
|
|
347
42
|
react.useEffect(() => {
|
|
348
43
|
if (menuState === "bag" || bagDrawerOpen) {
|
|
349
|
-
|
|
44
|
+
sendGAEvent__default.default("view_cart", {
|
|
350
45
|
items: cmmc.cartItems.map((item) => ({
|
|
351
46
|
item_id: item.sku,
|
|
352
47
|
item_name: item.title,
|
|
@@ -365,8 +60,8 @@ var MobileHeader = ({
|
|
|
365
60
|
setMenuState("nav");
|
|
366
61
|
}
|
|
367
62
|
};
|
|
368
|
-
const setMenuOpen = (
|
|
369
|
-
if (!
|
|
63
|
+
const setMenuOpen = (open) => {
|
|
64
|
+
if (!open) {
|
|
370
65
|
setMenuState("closed");
|
|
371
66
|
} else {
|
|
372
67
|
setMenuState("nav");
|
|
@@ -389,15 +84,15 @@ var MobileHeader = ({
|
|
|
389
84
|
`bg-background fixed z-header top-0 left-0 w-full ${menuOpen() ? "hidden" : "block"}`,
|
|
390
85
|
className
|
|
391
86
|
), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full flex flex-row justify-between items-center font-bold pr-5", children: [
|
|
392
|
-
/* @__PURE__ */ jsxRuntime.jsx(Logo, { href: "/", size: "md", outerClx: "p-6 h-full", variant: "wordmark" }),
|
|
393
|
-
menuOpen() && /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "absolute left-0 top-0 bottom-0 right-0 pl-8 flex flex-row bg-background animate-mobile-menu-open", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
87
|
+
/* @__PURE__ */ jsxRuntime.jsx(index_cjs.Logo, { href: "/", size: "md", outerClx: "p-6 h-full", variant: "wordmark" }),
|
|
88
|
+
menuOpen() && /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "absolute left-0 top-0 bottom-0 right-0 pl-8 flex flex-row bg-background animate-mobile-menu-open", children: /* @__PURE__ */ jsxRuntime.jsx(index_cjs$1.Avatar, { className: "self-center " }) }),
|
|
394
89
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-0 flex-row", children: [
|
|
395
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
396
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
90
|
+
/* @__PURE__ */ jsxRuntime.jsx(BagButton__default.default, { className: "text-primary -mr-[3px]", onClick: openBag }),
|
|
91
|
+
/* @__PURE__ */ jsxRuntime.jsx(MenuToggleButton__default.default, { className: "text-foreground", open: menuOpen(), setOpen: setMenuOpen })
|
|
397
92
|
] })
|
|
398
93
|
] }) }),
|
|
399
94
|
!noCommerce && /* @__PURE__ */ jsxRuntime.jsx(
|
|
400
|
-
|
|
95
|
+
MobileBagDrawer__default.default,
|
|
401
96
|
{
|
|
402
97
|
className: "",
|
|
403
98
|
open: bagDrawerOpen,
|
|
@@ -405,7 +100,7 @@ var MobileHeader = ({
|
|
|
405
100
|
handleCheckout
|
|
406
101
|
}
|
|
407
102
|
),
|
|
408
|
-
menuOpen() && /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "fixed top-0 left-0 w-full h-full flex flex-column bg-background z-below-header animate-mobile-menu-open", children: !!!noAuth && menuState === "login" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
103
|
+
menuOpen() && /* @__PURE__ */ jsxRuntime.jsx(ui.Box, { className: "fixed top-0 left-0 w-full h-full flex flex-column bg-background z-below-header animate-mobile-menu-open", children: !!!noAuth && menuState === "login" ? /* @__PURE__ */ jsxRuntime.jsx(Login__default.default, { onSuccess: onLoginChanged, className: "sm:animate-in sm:zoom-in-90 m-auto w-full max-w-sm px-8" }) : !!!noCommerce && menuState === "bag" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
409
104
|
commerce.CartPanel,
|
|
410
105
|
{
|
|
411
106
|
handleCheckout: () => {
|
|
@@ -420,7 +115,7 @@ var MobileHeader = ({
|
|
|
420
115
|
buttonClx: "max-w-[220px] flex-none",
|
|
421
116
|
children: [
|
|
422
117
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
|
|
423
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsx(index_cjs$1.Bag, { className: "mr-2 relative w-4 h-5 fill-foreground " }),
|
|
424
119
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
|
|
425
120
|
] }),
|
|
426
121
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
|
|
@@ -429,7 +124,7 @@ var MobileHeader = ({
|
|
|
429
124
|
) : (
|
|
430
125
|
/* menuState === 'nav' */
|
|
431
126
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
432
|
-
|
|
127
|
+
NavMenu__default.default,
|
|
433
128
|
{
|
|
434
129
|
currentAs,
|
|
435
130
|
links,
|