@luxfi/ui 8.2.3 → 8.2.5

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.
Files changed (54) hide show
  1. package/dist/index.cjs +2008 -85
  2. package/dist/index.css +132 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +2007 -111
  6. package/dist/site/root-layout/index.cjs +2 -89
  7. package/dist/site/root-layout/index.d.ts +1 -0
  8. package/dist/site/root-layout/index.d.ts.map +1 -1
  9. package/dist/site/root-layout/index.js +2 -88
  10. package/dist/site/site-def/footer/company.d.ts +3 -3
  11. package/package.json +1 -1
  12. package/src/index.ts +5 -0
  13. package/src/site/root-layout/index.tsx +2 -3
  14. package/src/site/style/lux-fonts.css +1 -2
  15. package/dist/site/next/font/font-desc.cjs +0 -2
  16. package/dist/site/next/font/font-desc.d.ts +0 -19
  17. package/dist/site/next/font/font-desc.d.ts.map +0 -1
  18. package/dist/site/next/font/font-desc.js +0 -1
  19. package/dist/site/next/font/fonts.cjs +0 -42
  20. package/dist/site/next/font/fonts.d.ts +0 -4
  21. package/dist/site/next/font/fonts.d.ts.map +0 -1
  22. package/dist/site/next/font/fonts.js +0 -40
  23. package/dist/site/next/font/get-app-router-font-classes.cjs +0 -96
  24. package/dist/site/next/font/get-app-router-font-classes.d.ts +0 -15
  25. package/dist/site/next/font/get-app-router-font-classes.d.ts.map +0 -1
  26. package/dist/site/next/font/get-app-router-font-classes.js +0 -90
  27. package/dist/site/next/font/load-and-return-lux-next-fonts-on-import.cjs +0 -90
  28. package/dist/site/next/font/load-and-return-lux-next-fonts-on-import.d.ts +0 -8
  29. package/dist/site/next/font/load-and-return-lux-next-fonts-on-import.d.ts.map +0 -1
  30. package/dist/site/next/font/load-and-return-lux-next-fonts-on-import.js +0 -84
  31. package/dist/site/next/font/local/InterVariable-Italic.ttf +0 -0
  32. package/dist/site/next/font/local/InterVariable-Italic.woff2 +0 -0
  33. package/dist/site/next/font/local/InterVariable.ttf +0 -0
  34. package/dist/site/next/font/local/InterVariable.woff2 +0 -0
  35. package/dist/site/next/font/local/Zen-Variable.woff2 +0 -0
  36. package/dist/site/next/font/next-font-desc.cjs +0 -2
  37. package/dist/site/next/font/next-font-desc.d.ts +0 -20
  38. package/dist/site/next/font/next-font-desc.d.ts.map +0 -1
  39. package/dist/site/next/font/next-font-desc.js +0 -1
  40. package/dist/site/next/font/pages-router-font-vars.cjs +0 -100
  41. package/dist/site/next/font/pages-router-font-vars.d.ts +0 -3
  42. package/dist/site/next/font/pages-router-font-vars.d.ts.map +0 -1
  43. package/dist/site/next/font/pages-router-font-vars.js +0 -94
  44. package/src/site/next/font/font-desc.ts +0 -18
  45. package/src/site/next/font/fonts.ts +0 -40
  46. package/src/site/next/font/get-app-router-font-classes.ts +0 -19
  47. package/src/site/next/font/load-and-return-lux-next-fonts-on-import.ts +0 -60
  48. package/src/site/next/font/local/InterVariable-Italic.ttf +0 -0
  49. package/src/site/next/font/local/InterVariable-Italic.woff2 +0 -0
  50. package/src/site/next/font/local/InterVariable.ttf +0 -0
  51. package/src/site/next/font/local/InterVariable.woff2 +0 -0
  52. package/src/site/next/font/local/Zen-Variable.woff2 +0 -0
  53. package/src/site/next/font/next-font-desc.ts +0 -29
  54. package/src/site/next/font/pages-router-font-vars.tsx +0 -18
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  "use client";
2
- import { createGui, styled, View, Sheet, Dialog, XStack, YStack, Text, Avatar as Avatar$1, TooltipGroup, Tooltip as Tooltip$1, Label, Checkbox, VisuallyHidden, H3, H2, H1, Input as Input$1, Popover, Progress as Progress$1, RadioGroup, Select as Select$1, Separator as Separator$1, Slider as Slider$1, Switch, TextArea, GuiProvider, Menu as Menu$1, Accordion, Collapsible, Tabs as Tabs$1, useTabsContext, ToastProvider, ToastViewport, Toast } from '@hanzo/gui';
2
+ import { createGui, styled, View, Sheet, Dialog, XStack, YStack, Text, Avatar as Avatar$1, TooltipGroup, Tooltip as Tooltip$1, Label, Checkbox, VisuallyHidden, H3, H2, H1, Input as Input$1, Popover, Progress as Progress$1, RadioGroup, Select as Select$1, Separator as Separator$1, Slider as Slider$1, Switch, TextArea, GuiProvider, Menu as Menu$1, Accordion as Accordion$1, Collapsible, Tabs as Tabs$1, useTabsContext, ToastProvider, ToastViewport, Toast } from '@hanzo/gui';
3
3
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
4
4
  import * as React64 from 'react';
5
- import React64__default, { createContext, Children, createElement, useMemo, useRef, useState, useLayoutEffect, useEffect, useContext, forwardRef, useId, useCallback, isValidElement, useInsertionEffect, Fragment as Fragment$1, Component } from 'react';
5
+ import React64__default, { createContext, useRef, useEffect, Children, createElement, useMemo, useState, useLayoutEffect, useContext, forwardRef, useId, useCallback, isValidElement, useInsertionEffect, Fragment as Fragment$1, useTransition, Component } from 'react';
6
6
  import { config as config$1 } from '@hanzo/ui/gui-config';
7
7
  import { defaultConfig } from '@hanzogui/config/v5';
8
8
  import { animations } from '@hanzogui/config/v5-css';
9
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
- import { Box, sx, cn, css, variants, NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink, Card, ScrollArea, Avatar as Avatar$2, AvatarFallback as AvatarFallback$1, AvatarImage, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, ScrollBar, TooltipProvider, Tooltip as Tooltip$2, TooltipTrigger, TooltipContent, DropdownMenuCheckboxItem, DropdownMenuSeparator, Tabs, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TabsContent as TabsContent$1, Select as Select$2, SelectTrigger, SelectValue, SelectContent as SelectContent$1, SelectItem as SelectItem$1, Label as Label$1, SelectSeparator, CardHeader, CardTitle, CardDescription, CardContent, ToggleGroup, ToggleGroupItem, Popover as Popover$1, PopoverTrigger as PopoverTrigger$1, PopoverContent as PopoverContent$1, CardFooter, buttonVariants, Command as Command$1, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, Slot, Collapsible as Collapsible$1, CollapsibleTrigger, CollapsibleContent, Sheet as Sheet$1, SheetContent, SheetHeader, SheetTitle, SheetDescription, Dialog as Dialog$1, DialogTrigger as DialogTrigger$1, DialogContent as DialogContent$1, DialogHeader as DialogHeader$1, DialogTitle as DialogTitle$1, DialogDescription as DialogDescription$1, DialogFooter as DialogFooter$1 } from '@hanzo/ui';
10
+ import { Box, sx, cn, css, variants, NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink, Card, ScrollArea, Avatar as Avatar$2, AvatarFallback as AvatarFallback$1, AvatarImage, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, ScrollBar, TooltipProvider, Tooltip as Tooltip$2, TooltipTrigger, TooltipContent, DropdownMenuCheckboxItem, DropdownMenuSeparator, Tabs, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TabsContent as TabsContent$1, Select as Select$2, SelectTrigger, SelectValue, SelectContent as SelectContent$1, SelectItem as SelectItem$1, Label as Label$1, SelectSeparator, CardHeader, CardTitle, CardDescription, CardContent, ToggleGroup, ToggleGroupItem, Popover as Popover$1, PopoverTrigger as PopoverTrigger$1, PopoverContent as PopoverContent$1, MediaStack, capitalize, CardFooter, buttonVariants as buttonVariants$1, Command as Command$1, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, Slot, Collapsible as Collapsible$1, CollapsibleTrigger, CollapsibleContent, Sheet as Sheet$1, SheetContent, SheetHeader, SheetTitle, SheetDescription, ApplyTypography as ApplyTypography$1, Dialog as Dialog$2, DialogTrigger as DialogTrigger$2, DialogContent as DialogContent$2, DialogHeader as DialogHeader$2, DialogTitle as DialogTitle$2, DialogDescription as DialogDescription$2, DialogFooter as DialogFooter$1, Form, FormField, FormItem, FormControl, FormMessage } from '@hanzo/ui';
11
11
  export { DropdownMenuCheckboxItem as MenubarCheckboxItem, DropdownMenuContent as MenubarContent, DropdownMenuGroup as MenubarGroup, DropdownMenuItem as MenubarItem, DropdownMenuLabel as MenubarLabel, DropdownMenuPortal as MenubarPortal, DropdownMenuRadioGroup as MenubarRadioGroup, DropdownMenuRadioItem as MenubarRadioItem, DropdownMenuSeparator as MenubarSeparator, DropdownMenuShortcut as MenubarShortcut, DropdownMenuSub as MenubarSub, DropdownMenuSubContent as MenubarSubContent, DropdownMenuSubTrigger as MenubarSubTrigger, cn } from '@hanzo/ui';
12
- import { ChevronLeft, ChevronRight, RotateCcw, ZoomIn, ZoomOut, Move3d, Camera, Eye, Sparkles, Settings, MessageSquare, User, Bot, MoreHorizontal, Copy, Paperclip, Send, Shield, Zap, GitCompare, FileText, TestTube, Bug, Code, Wand2, Loader2, FileCode, Check, EyeOff, ChevronDown, Download, Upload, Search, Calculator, Globe, Wrench, Link as Link$1, Target, Type, Smile, Info, X, Plus, Minus, Square, SplitSquareHorizontal, FolderOpen, Folder, Terminal, RefreshCw, Play, AlertTriangle, Minimize2, Maximize2, Users, Phone, Video, CreditCard as CreditCard$1, Bell, File, ShoppingCart, Bold, Italic, List, ListOrdered, RotateCw, Crop, Dot, Command, Share2, Menu, Circle, VolumeX, Volume2, Maximize, GripVertical, Tag as Tag$1, Palette, BarChart3, FileImage, Clock, ChevronsUpDown, LogOut, Building2, CircleStop, Brain, Activity, Network, Trash2, Settings2, AlertCircle, MicOff, Mic, ListMusic, Shuffle, SkipBack, Pause, SkipForward, Repeat, ChevronUp, TrendingUp, TrendingDown, PanelLeftIcon, Edit, Calendar as Calendar$1, Edit3, CheckCircle } from 'lucide-react';
12
+ import { ChevronLeft, ChevronRight, RotateCcw, ZoomIn, ZoomOut, Move3d, Camera, Eye, Sparkles, Settings, MessageSquare, User, Bot, MoreHorizontal, Copy, Paperclip, Send, Shield, Zap, GitCompare, FileText, TestTube, Bug, Code, Wand2, Loader2, FileCode, Check, EyeOff, ChevronDown, Download, Upload, Search, Calculator, Globe, Wrench, Link as Link$1, Target, Type, Smile, Info, X, Plus, Minus, Square, SplitSquareHorizontal, FolderOpen, Folder, Terminal, RefreshCw, Play, AlertTriangle, Minimize2, Maximize2, Users, Phone, Video, CreditCard as CreditCard$1, Bell, File, ShoppingCart, Bold, Italic, List, ListOrdered, RotateCw, Crop, Dot, Command, Share2, Menu, Circle, VolumeX, Volume2, Maximize, GripVertical, Tag as Tag$1, Palette, BarChart3, FileImage, Clock, ChevronsUpDown, LogOut, Building2, CircleStop, Brain, Activity, Network, Trash2, Settings2, AlertCircle, MicOff, Mic, ListMusic, Shuffle, SkipBack, Pause, SkipForward, Repeat, ChevronUp, TrendingUp, TrendingDown, PanelLeftIcon, Edit, Calendar as Calendar$1, Edit3, CheckCircle, ArrowRight } from 'lucide-react';
13
13
  import { useClickAway, useDebounce } from '@uidotdev/usehooks';
14
14
  import { debounce, throttle } from 'es-toolkit';
15
15
  import { format } from 'date-fns';
@@ -27,6 +27,23 @@ import { OTPInput, OTPInputContext } from 'input-otp';
27
27
  import { useSensors, useSensor, PointerSensor, DndContext, closestCorners, DragOverlay } from '@dnd-kit/core';
28
28
  import { arrayMove, useSortable, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';
29
29
  import { QRCodeSVG } from 'qrcode.react';
30
+ import { buttonVariants, NavigationMenuLink as NavigationMenuLink$1, Drawer, DrawerContent as DrawerContent$1, DrawerHandle, Button as Button$1, ScrollArea as ScrollArea$1, StepIndicator, Accordion, AccordionItem as AccordionItem$1, AccordionTrigger, AccordionContent, Separator as Separator$2, ApplyTypography, Popover as Popover$2, PopoverTrigger as PopoverTrigger$2, PopoverContent as PopoverContent$2, InputOTP as InputOTP$1, InputOTPGroup as InputOTPGroup$1, InputOTPSlot as InputOTPSlot$1, InputOTPSeparator as InputOTPSeparator$1, Card as Card$1, Dialog as Dialog$1, DialogTrigger as DialogTrigger$1, DialogContent as DialogContent$1, DialogHeader as DialogHeader$1, DialogTitle as DialogTitle$1, DialogDescription as DialogDescription$1, NavItems, Carousel, CarouselContent, CarouselItem, Input as Input$2, NavigationMenu as NavigationMenu$1, NavigationMenuList as NavigationMenuList$1, NavigationMenuItem as NavigationMenuItem$1, navigationMenuTriggerStyle, NavigationMenuTrigger as NavigationMenuTrigger$1, NavigationMenuContent as NavigationMenuContent$1, PopoverClose } from '@hanzo/ui/primitives';
31
+ import { Logo as Logo$1, Wordmark, LuxLogo } from '@luxfi/logo';
32
+ import { useForm } from 'react-hook-form';
33
+ import { z } from 'zod';
34
+ import { zodResolver } from '@hookform/resolvers/zod';
35
+ import validator from 'validator';
36
+ import Link5 from 'next/link';
37
+ import { IamContext, useIam, useIamIdentity, Login as Login$1 } from '@hanzo/iam/react';
38
+ import { useRouter, usePathname } from 'next/navigation';
39
+ import { useCommerce, CarouselBuyCard, CarouselItemSelector, CartPanel, formatCurrencyValue, PaymentStepForm, ShippingStepForm } from '@hanzo/commerce';
40
+ import { observable, reaction, runInAction } from 'mobx';
41
+ import { observer as observer$1, enableStaticRendering } from 'mobx-react-lite';
42
+ import 'usehooks-ts';
43
+ import { GoogleAnalytics } from '@next/third-parties/google';
44
+ import Script from 'next/script';
45
+ import { Tooltip as Tooltip$3 } from 'react-tooltip';
46
+ export { default as EmblaAutoplay } from 'embla-carousel-autoplay';
30
47
 
31
48
  var __defProp = Object.defineProperty;
32
49
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
@@ -614,7 +631,7 @@ var DrawerStateContext = React64.createContext({
614
631
  var DrawerRoot = (props2) => {
615
632
  const {
616
633
  children,
617
- open,
634
+ open: open2,
618
635
  defaultOpen,
619
636
  onOpenChange,
620
637
  placement = "right",
@@ -622,8 +639,8 @@ var DrawerRoot = (props2) => {
622
639
  size = "md"
623
640
  } = props2;
624
641
  const [uncontrolled, setUncontrolled] = React64.useState(defaultOpen ?? false);
625
- const isControlled = open !== void 0;
626
- const isOpen = isControlled ? open : uncontrolled;
642
+ const isControlled = open2 !== void 0;
643
+ const isOpen = isControlled ? open2 : uncontrolled;
627
644
  const narrow = useIsNarrow();
628
645
  const setOpen = React64.useCallback((nextOpen) => {
629
646
  if (!isControlled) setUncontrolled(nextOpen);
@@ -656,12 +673,12 @@ var DrawerContent = React64.forwardRef(
656
673
  const { children, portalled = true, portalRef: _portalRef, offset: _offset, backdrop = true, ...rest } = props2;
657
674
  const placement = React64.useContext(DrawerPlacementContext);
658
675
  const size = React64.useContext(DrawerSizeContext);
659
- const { open, setOpen, modal, narrow } = React64.useContext(DrawerStateContext);
676
+ const { open: open2, setOpen, modal, narrow } = React64.useContext(DrawerStateContext);
660
677
  if (narrow) {
661
678
  return /* @__PURE__ */ jsxs(
662
679
  Sheet,
663
680
  {
664
- open,
681
+ open: open2,
665
682
  onOpenChange: setOpen,
666
683
  modal,
667
684
  dismissOnSnapToBottom: true,
@@ -770,7 +787,7 @@ var ROW = {
770
787
  };
771
788
  var MenuRoot = ({
772
789
  children,
773
- open,
790
+ open: open2,
774
791
  defaultOpen,
775
792
  onOpenChange,
776
793
  positioning,
@@ -778,7 +795,7 @@ var MenuRoot = ({
778
795
  }) => /* @__PURE__ */ jsx(
779
796
  Menu$1,
780
797
  {
781
- open,
798
+ open: open2,
782
799
  defaultOpen,
783
800
  onOpenChange: onOpenChange ? (isOpen) => onOpenChange({ open: isOpen }) : void 0,
784
801
  modal,
@@ -847,8 +864,8 @@ var MenuSeparator = (props2) => /* @__PURE__ */ jsx(
847
864
  ...props2
848
865
  }
849
866
  );
850
- var MenuItemGroup = ({ title, children, ...rest }) => /* @__PURE__ */ jsxs(Menu$1.Group, { unstyled: true, ...rest, children: [
851
- title && /* @__PURE__ */ jsx(
867
+ var MenuItemGroup = ({ title: title2, children, ...rest }) => /* @__PURE__ */ jsxs(Menu$1.Group, { unstyled: true, ...rest, children: [
868
+ title2 && /* @__PURE__ */ jsx(
852
869
  Menu$1.Label,
853
870
  {
854
871
  unstyled: true,
@@ -859,7 +876,7 @@ var MenuItemGroup = ({ title, children, ...rest }) => /* @__PURE__ */ jsxs(Menu$
859
876
  userSelect: "none",
860
877
  opacity: 0.6,
861
878
  color: TEXT,
862
- children: title
879
+ children: title2
863
880
  }
864
881
  ),
865
882
  children
@@ -952,7 +969,7 @@ var Row = ({ item, onDone, menu }) => {
952
969
  return menu ? /* @__PURE__ */ jsx(MenuItem, { value: item.id, asChild: true, children: control }) : control;
953
970
  };
954
971
  var Switcher = ({
955
- title,
972
+ title: title2,
956
973
  label,
957
974
  icon,
958
975
  items,
@@ -965,13 +982,13 @@ var Switcher = ({
965
982
  align = "start",
966
983
  testId
967
984
  }) => {
968
- const [open, setOpen] = React64.useState(false);
985
+ const [open2, setOpen] = React64.useState(false);
969
986
  const narrow = useIsNarrow();
970
987
  const close = React64.useCallback(() => setOpen(false), []);
971
988
  const message = status === "loading" ? "Loading\u2026" : status === "error" ? error ?? "Could not reach IAM." : status === "anonymous" ? null : items.length === 0 ? empty : null;
972
989
  const rows = status === "anonymous" && onSignIn ? [{ id: "sign-in", label: signInLabel, icon: /* @__PURE__ */ jsx(User, { "aria-hidden": "true", style: css("h-4 w-4") }), onSelect: onSignIn }] : status === "ready" ? items : [];
973
990
  const panel = (menu) => /* @__PURE__ */ jsxs(Fragment, { children: [
974
- /* @__PURE__ */ jsx(Box, { className: "px-2 pb-1 pt-1 text-[11px] font-semibold uppercase tracking-wide opacity-55", children: title }),
991
+ /* @__PURE__ */ jsx(Box, { className: "px-2 pb-1 pt-1 text-[11px] font-semibold uppercase tracking-wide opacity-55", children: title2 }),
975
992
  message ? /* @__PURE__ */ jsx(Box, { "data-testid": "chrome-message", className: "px-2 py-2 text-sm opacity-70", children: message }) : null,
976
993
  rows.map((item) => /* @__PURE__ */ jsx(Row, { item, onDone: close, menu }, item.id)),
977
994
  footer.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -985,9 +1002,9 @@ var Switcher = ({
985
1002
  tag: "button",
986
1003
  type: "button",
987
1004
  "data-testid": testId,
988
- "aria-label": title,
1005
+ "aria-label": title2,
989
1006
  "aria-haspopup": "menu",
990
- "aria-expanded": open,
1007
+ "aria-expanded": open2,
991
1008
  className: cn(
992
1009
  "flex max-w-[14rem] items-center gap-2 rounded-md px-2 py-1.5 text-sm font-medium",
993
1010
  "hover:bg-[rgba(127,127,127,0.14)]"
@@ -1000,10 +1017,10 @@ var Switcher = ({
1000
1017
  }
1001
1018
  );
1002
1019
  if (narrow) {
1003
- return /* @__PURE__ */ jsxs(DrawerRoot, { open, onOpenChange: (d) => setOpen(d.open), placement: "bottom", size: "md", children: [
1020
+ return /* @__PURE__ */ jsxs(DrawerRoot, { open: open2, onOpenChange: (d) => setOpen(d.open), placement: "bottom", size: "md", children: [
1004
1021
  React64.cloneElement(trigger, { onClick: () => setOpen(true) }),
1005
1022
  /* @__PURE__ */ jsxs(DrawerContent, { "data-testid": testId ? `${testId}-panel` : void 0, children: [
1006
- /* @__PURE__ */ jsx(DrawerHeader, { children: /* @__PURE__ */ jsx(DrawerTitle, { children: title }) }),
1023
+ /* @__PURE__ */ jsx(DrawerHeader, { children: /* @__PURE__ */ jsx(DrawerTitle, { children: title2 }) }),
1007
1024
  /* @__PURE__ */ jsx(DrawerBody, { children: panel(false) })
1008
1025
  ] })
1009
1026
  ] });
@@ -1011,7 +1028,7 @@ var Switcher = ({
1011
1028
  return /* @__PURE__ */ jsxs(
1012
1029
  MenuRoot,
1013
1030
  {
1014
- open,
1031
+ open: open2,
1015
1032
  onOpenChange: (d) => setOpen(d.open),
1016
1033
  positioning: { placement: align === "end" ? "bottom-end" : "bottom-start" },
1017
1034
  children: [
@@ -1185,7 +1202,7 @@ var AppNav = ({
1185
1202
  };
1186
1203
  var IndicatorIcon = () => /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M7.5 15L12.5 10L7.5 5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) });
1187
1204
  var BAR = "var(--color-text-primary)";
1188
- var Indicator2 = ({ open, variant }) => variant === "faq" ? /* @__PURE__ */ jsxs(XStack, { width: 12, height: 12, flexShrink: 0, alignItems: "center", justifyContent: "center", position: "relative", children: [
1205
+ var Indicator2 = ({ open: open2, variant }) => variant === "faq" ? /* @__PURE__ */ jsxs(XStack, { width: 12, height: 12, flexShrink: 0, alignItems: "center", justifyContent: "center", position: "relative", children: [
1189
1206
  /* @__PURE__ */ jsx(View, { position: "absolute", width: "100%", height: 2, borderRadius: 2, backgroundColor: BAR }),
1190
1207
  /* @__PURE__ */ jsx(
1191
1208
  View,
@@ -1195,10 +1212,10 @@ var Indicator2 = ({ open, variant }) => variant === "faq" ? /* @__PURE__ */ jsxs
1195
1212
  height: "100%",
1196
1213
  borderRadius: 2,
1197
1214
  backgroundColor: BAR,
1198
- rotate: open ? "90deg" : "0deg"
1215
+ rotate: open2 ? "90deg" : "0deg"
1199
1216
  }
1200
1217
  )
1201
- ] }) : /* @__PURE__ */ jsx(XStack, { flexShrink: 0, alignItems: "center", rotate: open ? "270deg" : "180deg", children: /* @__PURE__ */ jsx(IndicatorIcon, {}) });
1218
+ ] }) : /* @__PURE__ */ jsx(XStack, { flexShrink: 0, alignItems: "center", rotate: open2 ? "270deg" : "180deg", children: /* @__PURE__ */ jsx(IndicatorIcon, {}) });
1202
1219
  var Variant = React64.createContext(void 0);
1203
1220
  var AccordionRoot = ({
1204
1221
  value: value2,
@@ -1209,7 +1226,7 @@ var AccordionRoot = ({
1209
1226
  children,
1210
1227
  ...rest
1211
1228
  }) => /* @__PURE__ */ jsx(Variant.Provider, { value: variant, children: /* @__PURE__ */ jsx(
1212
- Accordion,
1229
+ Accordion$1,
1213
1230
  {
1214
1231
  unstyled: true,
1215
1232
  type: "multiple",
@@ -1224,7 +1241,7 @@ var AccordionRoot = ({
1224
1241
  }
1225
1242
  ) });
1226
1243
  var AccordionItem = (props2) => /* @__PURE__ */ jsx(
1227
- Accordion.Item,
1244
+ Accordion$1.Item,
1228
1245
  {
1229
1246
  unstyled: true,
1230
1247
  borderBottomWidth: 1,
@@ -1242,8 +1259,8 @@ var AccordionItemTrigger = ({
1242
1259
  }) => {
1243
1260
  const variant = variantProp ?? React64.useContext(Variant);
1244
1261
  const placement = variant === "faq" ? "start" : placementProp ?? "end";
1245
- return /* @__PURE__ */ jsx(Accordion.Header, { unstyled: true, render: `h${headingLevel}`, "aria-level": headingLevel, display: "flex", width: "100%", children: /* @__PURE__ */ jsx(
1246
- Accordion.Trigger,
1262
+ return /* @__PURE__ */ jsx(Accordion$1.Header, { unstyled: true, render: `h${headingLevel}`, "aria-level": headingLevel, display: "flex", width: "100%", children: /* @__PURE__ */ jsx(
1263
+ Accordion$1.Trigger,
1247
1264
  {
1248
1265
  unstyled: true,
1249
1266
  type: "button",
@@ -1258,16 +1275,16 @@ var AccordionItemTrigger = ({
1258
1275
  cursor: "pointer",
1259
1276
  className: "lux-accordion-trigger",
1260
1277
  ...rest,
1261
- children: (({ open }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1262
- placement === "start" && !noIndicator && /* @__PURE__ */ jsx(Indicator2, { open, variant }),
1278
+ children: (({ open: open2 }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1279
+ placement === "start" && !noIndicator && /* @__PURE__ */ jsx(Indicator2, { open: open2, variant }),
1263
1280
  ink(children, void 0, { color: "inherit", textAlign: "left" }),
1264
- placement === "end" && !noIndicator && /* @__PURE__ */ jsx(Indicator2, { open, variant })
1281
+ placement === "end" && !noIndicator && /* @__PURE__ */ jsx(Indicator2, { open: open2, variant })
1265
1282
  ] }))
1266
1283
  }
1267
1284
  ) });
1268
1285
  };
1269
1286
  var AccordionItemContent = ({ children, ...rest }) => /* @__PURE__ */ jsx(
1270
- Accordion.Content,
1287
+ Accordion$1.Content,
1271
1288
  {
1272
1289
  unstyled: true,
1273
1290
  overflow: "hidden",
@@ -1381,7 +1398,7 @@ var INDICATOR_SIZE = {
1381
1398
  var Alert = React64.forwardRef(
1382
1399
  function Alert2(props2, ref2) {
1383
1400
  const {
1384
- title,
1401
+ title: title2,
1385
1402
  children,
1386
1403
  icon,
1387
1404
  closable,
@@ -1470,7 +1487,7 @@ var Alert = React64.forwardRef(
1470
1487
  children: [
1471
1488
  iconElement,
1472
1489
  children ? /* @__PURE__ */ jsxs(ContentFrame, { flex: 1, alignItems: inline ? "center" : void 0, children: [
1473
- title && /* @__PURE__ */ jsx(Text, { fontWeight: "600", fontSize, color: ALERT_FG, children: title }),
1490
+ title2 && /* @__PURE__ */ jsx(Text, { fontWeight: "600", fontSize, color: ALERT_FG, children: title2 }),
1474
1491
  /* @__PURE__ */ jsx(
1475
1492
  XStack,
1476
1493
  {
@@ -1481,7 +1498,7 @@ var Alert = React64.forwardRef(
1481
1498
  children: ink(children, void 0, { fontSize, color: ALERT_FG })
1482
1499
  }
1483
1500
  )
1484
- ] }) : /* @__PURE__ */ jsx(Text, { flex: 1, fontWeight: "600", fontSize, color: ALERT_FG, children: title }),
1501
+ ] }) : /* @__PURE__ */ jsx(Text, { flex: 1, fontWeight: "600", fontSize, color: ALERT_FG, children: title2 }),
1485
1502
  endElement,
1486
1503
  closable && /* @__PURE__ */ jsx(View, { position: "relative", alignSelf: "flex-start", children: /* @__PURE__ */ jsx(CloseButton, { onClick: handleClose }) })
1487
1504
  ]
@@ -1626,7 +1643,7 @@ var Tooltip = React64.forwardRef(
1626
1643
  interactive,
1627
1644
  positioning
1628
1645
  } = props2;
1629
- const [open, setOpen] = React64.useState(defaultOpen);
1646
+ const [open2, setOpen] = React64.useState(defaultOpen);
1630
1647
  const timeoutRef = React64.useRef(null);
1631
1648
  const isMobile = useIsTouch();
1632
1649
  const handleOpenChange = React64.useCallback((nextOpen) => {
@@ -1641,12 +1658,12 @@ var Tooltip = React64.forwardRef(
1641
1658
  }, nextOpen ? openDelay : closeDelay);
1642
1659
  }, [closeDelay, openDelay, onOpenChange]);
1643
1660
  const handleClickAway = React64.useCallback(() => {
1644
- if (open) handleOpenChangeManual(false);
1645
- }, [open, handleOpenChangeManual]);
1661
+ if (open2) handleOpenChangeManual(false);
1662
+ }, [open2, handleOpenChangeManual]);
1646
1663
  const triggerRef = useClickAway(handleClickAway);
1647
1664
  const handleTriggerClick = React64.useCallback(() => {
1648
- handleOpenChangeManual(!open);
1649
- }, [handleOpenChangeManual, open]);
1665
+ handleOpenChangeManual(!open2);
1666
+ }, [handleOpenChangeManual, open2]);
1650
1667
  const handleContentClick = React64.useCallback((event) => {
1651
1668
  event.stopPropagation();
1652
1669
  if (interactive) {
@@ -1672,7 +1689,7 @@ var Tooltip = React64.forwardRef(
1672
1689
  return /* @__PURE__ */ jsx(TooltipGroup, { delay: openDelay, children: /* @__PURE__ */ jsxs(
1673
1690
  Tooltip$1,
1674
1691
  {
1675
- open,
1692
+ open: open2,
1676
1693
  onOpenChange: handleOpenChange,
1677
1694
  delay: { open: openDelay, close: closeDelay },
1678
1695
  placement,
@@ -2833,7 +2850,7 @@ function sizeClasses(size) {
2833
2850
  }
2834
2851
  var DialogRoot = ({
2835
2852
  children,
2836
- open,
2853
+ open: open2,
2837
2854
  defaultOpen,
2838
2855
  onOpenChange,
2839
2856
  size = "md",
@@ -2850,7 +2867,7 @@ var DialogRoot = ({
2850
2867
  return /* @__PURE__ */ jsx(DialogSizeContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
2851
2868
  Dialog,
2852
2869
  {
2853
- open,
2870
+ open: open2,
2854
2871
  defaultOpen,
2855
2872
  onOpenChange: handleOpenChange,
2856
2873
  modal,
@@ -2989,10 +3006,10 @@ var ICONS = {};
2989
3006
  var MUTED = "var(--color-text-secondary)";
2990
3007
  var EmptyState = React64.forwardRef(
2991
3008
  function EmptyState2(props2, ref2) {
2992
- const { title, description, term, type = "query", icon, children, className: className2, ...rest } = props2;
3009
+ const { title: title2, description, term, type = "query", icon, children, className: className2, ...rest } = props2;
2993
3010
  const titleContent = (() => {
2994
- if (title) {
2995
- return title;
3011
+ if (title2) {
3012
+ return title2;
2996
3013
  }
2997
3014
  if (type === "stats") {
2998
3015
  return "Collecting data";
@@ -3888,7 +3905,7 @@ var PositioningContext = React64.createContext({
3888
3905
  var PopoverRoot = (props2) => {
3889
3906
  const {
3890
3907
  children,
3891
- open,
3908
+ open: open2,
3892
3909
  defaultOpen,
3893
3910
  onOpenChange,
3894
3911
  positioning,
@@ -3935,7 +3952,7 @@ var PopoverRoot = (props2) => {
3935
3952
  return /* @__PURE__ */ jsx(PositioningContext.Provider, { value: positioningValue, children: /* @__PURE__ */ jsx(
3936
3953
  Popover,
3937
3954
  {
3938
- open,
3955
+ open: open2,
3939
3956
  defaultOpen,
3940
3957
  onOpenChange: handleOpenChange,
3941
3958
  placement,
@@ -4538,8 +4555,8 @@ var SelectRoot = React64.forwardRef(
4538
4555
  const selectedItems = React64.useMemo(() => {
4539
4556
  return currentValue.map((v) => collection.items.find((item) => item.value === v)).filter(Boolean);
4540
4557
  }, [currentValue, collection.items]);
4541
- const [open, setOpen] = React64.useState(defaultOpen ?? false);
4542
- const isOpen = openProp ?? open;
4558
+ const [open2, setOpen] = React64.useState(defaultOpen ?? false);
4559
+ const isOpen = openProp ?? open2;
4543
4560
  const handleOpenChange = React64.useCallback((nextOpen) => {
4544
4561
  setOpen(nextOpen);
4545
4562
  onOpenChange?.(nextOpen);
@@ -5856,8 +5873,8 @@ var One = ({ entry }) => /* @__PURE__ */ jsxs(
5856
5873
  Toast,
5857
5874
  {
5858
5875
  duration: entry.duration ?? DURATION,
5859
- onOpenChange: (open) => {
5860
- if (!open) remove(entry.id);
5876
+ onOpenChange: (open2) => {
5877
+ if (!open2) remove(entry.id);
5861
5878
  },
5862
5879
  unstyled: true,
5863
5880
  flexDirection: "column",
@@ -6669,7 +6686,7 @@ var PnlDiagram = React64.forwardRef(
6669
6686
  React64.useEffect(() => {
6670
6687
  const el = containerRef.current;
6671
6688
  if (!el) return;
6672
- const observer2 = new ResizeObserver((entries2) => {
6689
+ const observer11 = new ResizeObserver((entries2) => {
6673
6690
  const entry = entries2[0];
6674
6691
  if (entry) {
6675
6692
  setDims({
@@ -6678,8 +6695,8 @@ var PnlDiagram = React64.forwardRef(
6678
6695
  });
6679
6696
  }
6680
6697
  });
6681
- observer2.observe(el);
6682
- return () => observer2.disconnect();
6698
+ observer11.observe(el);
6699
+ return () => observer11.disconnect();
6683
6700
  }, []);
6684
6701
  const allStrikes = legs.map((l) => l.strike);
6685
6702
  const minStrike = Math.min(...allStrikes, spotPrice);
@@ -8517,7 +8534,7 @@ Grid3D.displayName = "Grid3D";
8517
8534
  var Grid3DCard = React64.forwardRef(
8518
8535
  ({
8519
8536
  className: className2,
8520
- title,
8537
+ title: title2,
8521
8538
  description,
8522
8539
  image,
8523
8540
  badge,
@@ -8545,14 +8562,14 @@ var Grid3DCard = React64.forwardRef(
8545
8562
  {
8546
8563
  tag: "img",
8547
8564
  src: image,
8548
- alt: title || "",
8565
+ alt: title2 || "",
8549
8566
  className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-110"
8550
8567
  }
8551
8568
  ),
8552
8569
  badge && /* @__PURE__ */ jsx(Box, { className: "absolute top-2 right-2 px-2 py-1 text-xs rounded-full bg-primary text-primary-foreground", children: badge })
8553
8570
  ] }),
8554
8571
  /* @__PURE__ */ jsxs(Box, { className: "flex-1 p-4 flex flex-col justify-between", children: [
8555
- title && /* @__PURE__ */ jsx(Box, { tag: "h3", className: "font-semibold text-lg mb-2 line-clamp-2 group-hover:text-primary transition-colors", children: title }),
8572
+ title2 && /* @__PURE__ */ jsx(Box, { tag: "h3", className: "font-semibold text-lg mb-2 line-clamp-2 group-hover:text-primary transition-colors", children: title2 }),
8556
8573
  description && /* @__PURE__ */ jsx(Box, { tag: "p", className: "text-sm text-muted-foreground line-clamp-3 mb-4", children: description }),
8557
8574
  children && /* @__PURE__ */ jsx(Box, { className: "mt-auto", children })
8558
8575
  ] }),
@@ -17532,7 +17549,7 @@ function inView(elementOrSelector, onStart, { root, margin: rootMargin, amount =
17532
17549
  if (typeof newOnEnd === "function") {
17533
17550
  activeIntersections.set(entry.target, newOnEnd);
17534
17551
  } else {
17535
- observer2.unobserve(entry.target);
17552
+ observer11.unobserve(entry.target);
17536
17553
  }
17537
17554
  } else if (typeof onEnd === "function") {
17538
17555
  onEnd(entry);
@@ -17540,13 +17557,13 @@ function inView(elementOrSelector, onStart, { root, margin: rootMargin, amount =
17540
17557
  }
17541
17558
  });
17542
17559
  };
17543
- const observer2 = new IntersectionObserver(onIntersectionChange, {
17560
+ const observer11 = new IntersectionObserver(onIntersectionChange, {
17544
17561
  root,
17545
17562
  rootMargin,
17546
17563
  threshold: typeof amount === "number" ? amount : thresholds[amount]
17547
17564
  });
17548
- elements.forEach((element) => observer2.observe(element));
17549
- return () => observer2.disconnect();
17565
+ elements.forEach((element) => observer11.observe(element));
17566
+ return () => observer11.disconnect();
17550
17567
  }
17551
17568
 
17552
17569
  // ../../node_modules/.pnpm/framer-motion@12.38.0_@emotion+is-prop-valid@1.4.0_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/framer-motion/dist/es/utils/use-in-view.mjs
@@ -18583,7 +18600,7 @@ ModelViewer3DPreset.Basic.displayName = "ModelViewer3DPreset.Basic";
18583
18600
  ModelViewer3DPreset.Advanced.displayName = "ModelViewer3DPreset.Advanced";
18584
18601
  ModelViewer3DPreset.Presentation.displayName = "ModelViewer3DPreset.Presentation";
18585
18602
  var Pin3D = React64.forwardRef(
18586
- ({ className: className2, title, href, children, ...props2 }, ref2) => {
18603
+ ({ className: className2, title: title2, href, children, ...props2 }, ref2) => {
18587
18604
  return /* @__PURE__ */ jsxs(
18588
18605
  Box,
18589
18606
  {
@@ -19652,7 +19669,7 @@ var AgentCard = ({
19652
19669
  );
19653
19670
  };
19654
19671
  var CreateAgentDialog = ({ onAgentCreate }) => {
19655
- const [open, setOpen] = useState(false);
19672
+ const [open2, setOpen] = useState(false);
19656
19673
  const [formData, setFormData] = useState({
19657
19674
  name: "",
19658
19675
  type: "research",
@@ -19677,15 +19694,15 @@ var CreateAgentDialog = ({ onAgentCreate }) => {
19677
19694
  });
19678
19695
  setOpen(false);
19679
19696
  };
19680
- return /* @__PURE__ */ jsxs(Dialog$1, { open, onOpenChange: setOpen, children: [
19681
- /* @__PURE__ */ jsx(DialogTrigger$1, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { children: [
19697
+ return /* @__PURE__ */ jsxs(Dialog$2, { open: open2, onOpenChange: setOpen, children: [
19698
+ /* @__PURE__ */ jsx(DialogTrigger$2, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { children: [
19682
19699
  /* @__PURE__ */ jsx(Plus, { style: css("h-4 w-4 mr-2") }),
19683
19700
  "Create Agent"
19684
19701
  ] }) }),
19685
- /* @__PURE__ */ jsxs(DialogContent$1, { children: [
19686
- /* @__PURE__ */ jsxs(DialogHeader$1, { children: [
19687
- /* @__PURE__ */ jsx(DialogTitle$1, { children: "Create New Agent" }),
19688
- /* @__PURE__ */ jsx(DialogDescription$1, { children: "Configure a new AI agent for your workflow" })
19702
+ /* @__PURE__ */ jsxs(DialogContent$2, { children: [
19703
+ /* @__PURE__ */ jsxs(DialogHeader$2, { children: [
19704
+ /* @__PURE__ */ jsx(DialogTitle$2, { children: "Create New Agent" }),
19705
+ /* @__PURE__ */ jsx(DialogDescription$2, { children: "Configure a new AI agent for your workflow" })
19689
19706
  ] }),
19690
19707
  /* @__PURE__ */ jsxs(Box, { className: "space-y-4", children: [
19691
19708
  /* @__PURE__ */ jsxs("div", { children: [
@@ -19744,7 +19761,7 @@ var CreateAgentDialog = ({ onAgentCreate }) => {
19744
19761
  ] });
19745
19762
  };
19746
19763
  var TaskAssignmentDialog = ({ agents, onTaskAssign }) => {
19747
- const [open, setOpen] = useState(false);
19764
+ const [open2, setOpen] = useState(false);
19748
19765
  const [taskData, setTaskData] = useState({
19749
19766
  title: "",
19750
19767
  description: "",
@@ -19774,15 +19791,15 @@ var TaskAssignmentDialog = ({ agents, onTaskAssign }) => {
19774
19791
  });
19775
19792
  setOpen(false);
19776
19793
  };
19777
- return /* @__PURE__ */ jsxs(Dialog$1, { open, onOpenChange: setOpen, children: [
19778
- /* @__PURE__ */ jsx(DialogTrigger$1, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { variant: "outline", children: [
19794
+ return /* @__PURE__ */ jsxs(Dialog$2, { open: open2, onOpenChange: setOpen, children: [
19795
+ /* @__PURE__ */ jsx(DialogTrigger$2, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { variant: "outline", children: [
19779
19796
  /* @__PURE__ */ jsx(MessageSquare, { style: css("h-4 w-4 mr-2") }),
19780
19797
  "Assign Task"
19781
19798
  ] }) }),
19782
- /* @__PURE__ */ jsxs(DialogContent$1, { children: [
19783
- /* @__PURE__ */ jsxs(DialogHeader$1, { children: [
19784
- /* @__PURE__ */ jsx(DialogTitle$1, { children: "Assign New Task" }),
19785
- /* @__PURE__ */ jsx(DialogDescription$1, { children: "Create and assign a task to an agent" })
19799
+ /* @__PURE__ */ jsxs(DialogContent$2, { children: [
19800
+ /* @__PURE__ */ jsxs(DialogHeader$2, { children: [
19801
+ /* @__PURE__ */ jsx(DialogTitle$2, { children: "Assign New Task" }),
19802
+ /* @__PURE__ */ jsx(DialogDescription$2, { children: "Create and assign a task to an agent" })
19786
19803
  ] }),
19787
19804
  /* @__PURE__ */ jsxs(Box, { className: "space-y-4", children: [
19788
19805
  /* @__PURE__ */ jsxs("div", { children: [
@@ -26992,7 +27009,7 @@ function Calendar({
26992
27009
  caption_label: "text-sm font-medium",
26993
27010
  nav: "space-x-1 flex items-center",
26994
27011
  nav_button: cn(
26995
- buttonVariants({ variant: "outline" }),
27012
+ buttonVariants$1({ variant: "outline" }),
26996
27013
  "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
26997
27014
  ),
26998
27015
  nav_button_previous: "absolute left-1",
@@ -27003,7 +27020,7 @@ function Calendar({
27003
27020
  row: "flex w-full mt-2",
27004
27021
  cell: "h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20",
27005
27022
  day: cn(
27006
- buttonVariants({ variant: "ghost" }),
27023
+ buttonVariants$1({ variant: "ghost" }),
27007
27024
  "h-9 w-9 p-0 font-normal aria-selected:opacity-100"
27008
27025
  ),
27009
27026
  day_range_end: "day-range-end",
@@ -29570,7 +29587,7 @@ var CodeTerminal = React64.forwardRef(
29570
29587
  className: className2,
29571
29588
  theme,
29572
29589
  size,
29573
- title = "Terminal",
29590
+ title: title2 = "Terminal",
29574
29591
  prompt = "$",
29575
29592
  maxLines = 1e3,
29576
29593
  showLineNumbers = false,
@@ -29749,7 +29766,7 @@ var CodeTerminal = React64.forwardRef(
29749
29766
  /* @__PURE__ */ jsx(Box, { className: "w-3 h-3 rounded-full bg-[var(--lux-state-success)]" })
29750
29767
  ] }),
29751
29768
  /* @__PURE__ */ jsx(Terminal, { style: css("h-4 w-4") }),
29752
- /* @__PURE__ */ jsx(Box, { tag: "span", className: "text-sm font-medium", children: title }),
29769
+ /* @__PURE__ */ jsx(Box, { tag: "span", className: "text-sm font-medium", children: title2 }),
29753
29770
  lines.length > 0 && /* @__PURE__ */ jsxs(Box, { tag: "span", className: "text-xs text-muted-foreground", children: [
29754
29771
  lines.length,
29755
29772
  " lines"
@@ -29842,9 +29859,9 @@ var CodeTerminal = React64.forwardRef(
29842
29859
  }
29843
29860
  );
29844
29861
  CodeTerminal.displayName = "CodeTerminal";
29845
- var CollaborationNavigationBar = React64.forwardRef(({ className: className2, title, collaborators = [], ...props2 }, ref2) => {
29862
+ var CollaborationNavigationBar = React64.forwardRef(({ className: className2, title: title2, collaborators = [], ...props2 }, ref2) => {
29846
29863
  return /* @__PURE__ */ jsx(Box, { tag: "nav", ref: ref2, className: cn("border-b", className2), ...props2, children: /* @__PURE__ */ jsxs(Box, { className: "container flex h-16 items-center justify-between", children: [
29847
- /* @__PURE__ */ jsx(Box, { tag: "h2", className: "text-lg font-semibold", children: title }),
29864
+ /* @__PURE__ */ jsx(Box, { tag: "h2", className: "text-lg font-semibold", children: title2 }),
29848
29865
  /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-3", children: [
29849
29866
  /* @__PURE__ */ jsx(Users, { style: css("h-5 w-5 text-muted-foreground") }),
29850
29867
  /* @__PURE__ */ jsxs(Box, { className: "flex -space-x-2", children: [
@@ -29910,15 +29927,15 @@ function Combobox({
29910
29927
  placeholder = "Select option...",
29911
29928
  emptyText = "No option found."
29912
29929
  }) {
29913
- const [open, setOpen] = React64.useState(false);
29930
+ const [open2, setOpen] = React64.useState(false);
29914
29931
  const [searchValue, setSearchValue] = React64.useState("");
29915
- return /* @__PURE__ */ jsxs(Popover$1, { open, onOpenChange: setOpen, children: [
29932
+ return /* @__PURE__ */ jsxs(Popover$1, { open: open2, onOpenChange: setOpen, children: [
29916
29933
  /* @__PURE__ */ jsx(PopoverTrigger$1, { asChild: true, children: /* @__PURE__ */ jsxs(
29917
29934
  Button,
29918
29935
  {
29919
29936
  variant: "outline",
29920
29937
  role: "combobox",
29921
- "aria-expanded": open,
29938
+ "aria-expanded": open2,
29922
29939
  ...sx("w-full justify-between"),
29923
29940
  children: [
29924
29941
  value2 ? options.find((option) => option.value === value2)?.label : placeholder,
@@ -30116,9 +30133,9 @@ var Cursor = React64.forwardRef(
30116
30133
  }
30117
30134
  );
30118
30135
  Cursor.displayName = "Cursor";
30119
- var DashboardNavigationBar = React64.forwardRef(({ className: className2, title, user, ...props2 }, ref2) => {
30136
+ var DashboardNavigationBar = React64.forwardRef(({ className: className2, title: title2, user, ...props2 }, ref2) => {
30120
30137
  return /* @__PURE__ */ jsx(Box, { tag: "nav", ref: ref2, className: cn("border-b", className2), ...props2, children: /* @__PURE__ */ jsxs(Box, { className: "container flex h-16 items-center justify-between", children: [
30121
- /* @__PURE__ */ jsx(Box, { tag: "h1", className: "text-xl font-semibold", children: title }),
30138
+ /* @__PURE__ */ jsx(Box, { tag: "h1", className: "text-xl font-semibold", children: title2 }),
30122
30139
  /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-4", children: [
30123
30140
  /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon", children: /* @__PURE__ */ jsx(Search, { style: css("h-5 w-5") }) }),
30124
30141
  /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon", children: /* @__PURE__ */ jsx(Bell, { style: css("h-5 w-5") }) }),
@@ -31495,7 +31512,7 @@ function KanbanColumnComponent({
31495
31512
  );
31496
31513
  }
31497
31514
  function CardFormDialog({
31498
- open,
31515
+ open: open2,
31499
31516
  onOpenChange,
31500
31517
  card,
31501
31518
  onSave,
@@ -31541,10 +31558,10 @@ function CardFormDialog({
31541
31558
  });
31542
31559
  }
31543
31560
  }, [card]);
31544
- return /* @__PURE__ */ jsx(Dialog$1, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent$1, { ...sx("max-w-md"), children: [
31545
- /* @__PURE__ */ jsxs(DialogHeader$1, { children: [
31546
- /* @__PURE__ */ jsx(DialogTitle$1, { children: card ? "Edit Card" : "Create Card" }),
31547
- /* @__PURE__ */ jsx(DialogDescription$1, { children: card ? "Update the card details below." : "Create a new card for your kanban board." })
31561
+ return /* @__PURE__ */ jsx(Dialog$2, { open: open2, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent$2, { ...sx("max-w-md"), children: [
31562
+ /* @__PURE__ */ jsxs(DialogHeader$2, { children: [
31563
+ /* @__PURE__ */ jsx(DialogTitle$2, { children: card ? "Edit Card" : "Create Card" }),
31564
+ /* @__PURE__ */ jsx(DialogDescription$2, { children: card ? "Update the card details below." : "Create a new card for your kanban board." })
31548
31565
  ] }),
31549
31566
  /* @__PURE__ */ jsxs(Box, { tag: "form", onSubmit: handleSubmit, className: "space-y-4", children: [
31550
31567
  /* @__PURE__ */ jsxs("div", { children: [
@@ -31922,7 +31939,7 @@ var LimelightNav = React64.forwardRef(
31922
31939
  const down = (e) => {
31923
31940
  if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
31924
31941
  e.preventDefault();
31925
- setIsOpen((open) => !open);
31942
+ setIsOpen((open2) => !open2);
31926
31943
  }
31927
31944
  };
31928
31945
  document.addEventListener("keydown", down);
@@ -32123,8 +32140,8 @@ var MenuDock = React64.forwardRef(
32123
32140
  MenuDock.displayName = "MenuDock";
32124
32141
  var BarContext = createContext(null);
32125
32142
  function Menubar({ children, ...rest }) {
32126
- const [open, setOpen] = useState(null);
32127
- return /* @__PURE__ */ jsx(BarContext.Provider, { value: { open, setOpen }, children: /* @__PURE__ */ jsx(
32143
+ const [open2, setOpen] = useState(null);
32144
+ return /* @__PURE__ */ jsx(BarContext.Provider, { value: { open: open2, setOpen }, children: /* @__PURE__ */ jsx(
32128
32145
  XStack,
32129
32146
  {
32130
32147
  role: "menubar",
@@ -32145,9 +32162,9 @@ function MenubarMenu({ children }) {
32145
32162
  const bar = useContext(BarContext);
32146
32163
  const [id3] = useState(() => `menubar-${seq += 1}`);
32147
32164
  const [own, setOwn] = useState(false);
32148
- const open = bar ? bar.open === id3 : own;
32165
+ const open2 = bar ? bar.open === id3 : own;
32149
32166
  const setOpen = (next) => bar ? bar.setOpen(next ? id3 : null) : setOwn(next);
32150
- return /* @__PURE__ */ jsx(DropdownMenu, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsx(MenuIdContext.Provider, { value: { id: id3, open, setOpen }, children }) });
32167
+ return /* @__PURE__ */ jsx(DropdownMenu, { open: open2, onOpenChange: setOpen, children: /* @__PURE__ */ jsx(MenuIdContext.Provider, { value: { id: id3, open: open2, setOpen }, children }) });
32151
32168
  }
32152
32169
  var MenuIdContext = createContext(null);
32153
32170
  function MenubarTrigger({ children, ...rest }) {
@@ -32927,7 +32944,7 @@ var PaginationLink = ({
32927
32944
  tag: "a",
32928
32945
  "aria-current": isActive ? "page" : void 0,
32929
32946
  className: cn(
32930
- buttonVariants({
32947
+ buttonVariants$1({
32931
32948
  variant: isActive ? "outline" : "ghost",
32932
32949
  size
32933
32950
  }),
@@ -34317,10 +34334,10 @@ function SidebarProvider({
34317
34334
  const isMobile = useIsMobile();
34318
34335
  const [openMobile, setOpenMobile] = React64.useState(false);
34319
34336
  const [_open, _setOpen] = React64.useState(defaultOpen);
34320
- const open = openProp ?? _open;
34337
+ const open2 = openProp ?? _open;
34321
34338
  const setOpen = React64.useCallback(
34322
34339
  (value2) => {
34323
- const openState = typeof value2 === "function" ? value2(open) : value2;
34340
+ const openState = typeof value2 === "function" ? value2(open2) : value2;
34324
34341
  if (setOpenProp) {
34325
34342
  setOpenProp(openState);
34326
34343
  } else {
@@ -34328,10 +34345,10 @@ function SidebarProvider({
34328
34345
  }
34329
34346
  document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
34330
34347
  },
34331
- [setOpenProp, open]
34348
+ [setOpenProp, open2]
34332
34349
  );
34333
34350
  const toggleSidebar = React64.useCallback(() => {
34334
- return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
34351
+ return isMobile ? setOpenMobile((open3) => !open3) : setOpen((open3) => !open3);
34335
34352
  }, [isMobile, setOpen, setOpenMobile]);
34336
34353
  React64.useEffect(() => {
34337
34354
  const handleKeyDown = (event) => {
@@ -34343,18 +34360,18 @@ function SidebarProvider({
34343
34360
  window.addEventListener("keydown", handleKeyDown);
34344
34361
  return () => window.removeEventListener("keydown", handleKeyDown);
34345
34362
  }, [toggleSidebar]);
34346
- const state = open ? "expanded" : "collapsed";
34363
+ const state = open2 ? "expanded" : "collapsed";
34347
34364
  const contextValue = React64.useMemo(
34348
34365
  () => ({
34349
34366
  state,
34350
- open,
34367
+ open: open2,
34351
34368
  setOpen,
34352
34369
  isMobile,
34353
34370
  openMobile,
34354
34371
  setOpenMobile,
34355
34372
  toggleSidebar
34356
34373
  }),
34357
- [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
34374
+ [state, open2, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
34358
34375
  );
34359
34376
  return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(TooltipProvider, { delay: 0, children: /* @__PURE__ */ jsx(
34360
34377
  Box,
@@ -35451,7 +35468,7 @@ var Timeline = React64.forwardRef(
35451
35468
  setVisibleItems(new Set(items.map((item) => item.id)));
35452
35469
  return;
35453
35470
  }
35454
- const observer2 = new IntersectionObserver(
35471
+ const observer11 = new IntersectionObserver(
35455
35472
  (entries2) => {
35456
35473
  entries2.forEach((entry) => {
35457
35474
  if (entry.isIntersecting) {
@@ -35468,8 +35485,8 @@ var Timeline = React64.forwardRef(
35468
35485
  }
35469
35486
  );
35470
35487
  const elements = document.querySelectorAll("[data-timeline-id]");
35471
- elements.forEach((el) => observer2.observe(el));
35472
- return () => observer2.disconnect();
35488
+ elements.forEach((el) => observer11.observe(el));
35489
+ return () => observer11.disconnect();
35473
35490
  }, [items, animated]);
35474
35491
  const getStatusIcon = (status) => {
35475
35492
  switch (status) {
@@ -36421,5 +36438,1884 @@ var YouTubePipPlayer = React64.forwardRef(
36421
36438
  }
36422
36439
  );
36423
36440
  YouTubePipPlayer.displayName = "YouTubePipPlayer";
36441
+ var AccessCodeInput = ({
36442
+ onSuccess,
36443
+ onFail,
36444
+ validCodes,
36445
+ className: className2
36446
+ }) => {
36447
+ const [status, setStatus] = useState();
36448
+ const checkAccessCode = (code2) => {
36449
+ setStatus(void 0);
36450
+ if (code2.length === 6) {
36451
+ setStatus("checking");
36452
+ setTimeout(() => {
36453
+ if (validCodes?.includes(code2) && onSuccess) {
36454
+ setStatus("valid");
36455
+ onSuccess();
36456
+ } else {
36457
+ setStatus("invalid");
36458
+ onFail && onFail();
36459
+ }
36460
+ }, 1e3);
36461
+ }
36462
+ };
36463
+ return /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col gap-2 mx-auto w-full text-center items-center", className2), children: [
36464
+ /* @__PURE__ */ jsx(
36465
+ InputOTP$1,
36466
+ {
36467
+ className: "mx-auto",
36468
+ maxLength: 6,
36469
+ onInput: (event) => checkAccessCode(event.target.value),
36470
+ render: ({ slots }) => /* @__PURE__ */ jsxs(Fragment, { children: [
36471
+ /* @__PURE__ */ jsxs(InputOTPGroup$1, { children: [
36472
+ slots.slice(0, 3).map((slot, index) => /* @__PURE__ */ jsx(InputOTPSlot$1, { ...slot }, index)),
36473
+ " "
36474
+ ] }),
36475
+ /* @__PURE__ */ jsx(InputOTPSeparator$1, {}),
36476
+ /* @__PURE__ */ jsx(InputOTPGroup$1, { children: slots.slice(3).map((slot, index) => /* @__PURE__ */ jsx(InputOTPSlot$1, { ...slot }, index + 3)) })
36477
+ ] })
36478
+ }
36479
+ ),
36480
+ /* @__PURE__ */ jsx("p", { className: "h-[3rem]", children: status === "checking" ? "Checking access code..." : status === "invalid" ? /* @__PURE__ */ jsx("span", { className: "text-destructive", children: "Invalid access code!" }) : status === "valid" ? /* @__PURE__ */ jsx("span", { children: "Access code is valid! Redirecting..." }) : null })
36481
+ ] });
36482
+ };
36483
+ var access_code_input_default = AccessCodeInput;
36484
+ var ChatWidget = ({
36485
+ title: title2,
36486
+ chatbotUrl,
36487
+ subtitle,
36488
+ question,
36489
+ suggestedQuestions,
36490
+ buttonClx = ""
36491
+ }) => {
36492
+ const [showChatbot, setShowChatbot] = React64__default.useState(false);
36493
+ const onClick = () => {
36494
+ setShowChatbot(!showChatbot);
36495
+ };
36496
+ const searchParams = new URLSearchParams();
36497
+ if (question) {
36498
+ searchParams.append("question", question);
36499
+ }
36500
+ if (suggestedQuestions) {
36501
+ searchParams.append("sQuestions", suggestedQuestions.map(({ message }) => message).join(","));
36502
+ searchParams.append("sHeadings", suggestedQuestions.map(({ heading }) => heading).join(","));
36503
+ searchParams.append("sIcons", suggestedQuestions.map(({ icon }) => icon).join(","));
36504
+ }
36505
+ const iframeSrc = `${chatbotUrl}?${searchParams.toString()}`;
36506
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
36507
+ /* @__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 " + (showChatbot ? "flex" : "hidden"), children: /* @__PURE__ */ jsxs(Card$1, { className: "flex flex-col h-full w-full", children: [
36508
+ /* @__PURE__ */ jsxs("div", { className: "flex px-4 py-2 h-12 bg-level-0 items-center justify-between", children: [
36509
+ /* @__PURE__ */ jsxs("h1", { className: "font-semibold font-heading", children: [
36510
+ title2,
36511
+ " ",
36512
+ /* @__PURE__ */ jsx("span", { className: "opacity-60", children: subtitle })
36513
+ ] }),
36514
+ /* @__PURE__ */ jsx(Button$1, { onClick, variant: "link", size: "icon", className: "w-fit sm:hidden", children: /* @__PURE__ */ jsx(LuxLogo, { variant: "white", size: 24 }) })
36515
+ ] }),
36516
+ /* @__PURE__ */ jsx("iframe", { src: iframeSrc, className: "h-full" })
36517
+ ] }) }),
36518
+ /* @__PURE__ */ jsx(
36519
+ Box,
36520
+ {
36521
+ tag: "span",
36522
+ onClick,
36523
+ className: cn(
36524
+ // z-index should be below anything in commerce-iu (buy drawer and checkout widget)
36525
+ "fixed bottom-5 right-[24px] md:z-floating z-16 cursor-pointer",
36526
+ "hover:drop-shadow-[0_2px_6px_rgba(255,255,255,1)]",
36527
+ "transition-transform",
36528
+ showChatbot ? "rotate-180" : "",
36529
+ buttonClx
36530
+ ),
36531
+ children: /* @__PURE__ */ jsx(LuxLogo, { variant: "white", size: 28 })
36532
+ }
36533
+ )
36534
+ ] });
36535
+ };
36536
+ var chat_widget_default = ChatWidget;
36537
+ var ContactFormSchema = z.object({
36538
+ email: z.string().min(1, { message: "Email must be provided." }).email("Invalid email."),
36539
+ phone: z.string().min(1, { message: "Telephone must be provided." }).refine(validator.isMobilePhone, { message: "Invalid format." })
36540
+ });
36541
+ var ContactForm = ({
36542
+ onSubmit: _onSubmit,
36543
+ enclosure
36544
+ }) => {
36545
+ const form = useForm({
36546
+ resolver: zodResolver(ContactFormSchema),
36547
+ defaultValues: {
36548
+ email: "",
36549
+ phone: ""
36550
+ }
36551
+ });
36552
+ const [isPending, startTransition] = useTransition();
36553
+ const onSubmit = (data) => {
36554
+ startTransition(async () => {
36555
+ await _onSubmit(data, enclosure);
36556
+ });
36557
+ };
36558
+ const MyFormItem = ({
36559
+ field,
36560
+ placeholder
36561
+ }) => /* @__PURE__ */ jsxs(FormItem, { className: "space-y-0", children: [
36562
+ /* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx(Input$2, { placeholder, ...field, className: "mt-0 text-foreground" }) }),
36563
+ /* @__PURE__ */ jsx(Box, { className: "flex flex-row justify-start items-stretch gap-2", children: /* @__PURE__ */ jsx(FormMessage, {}) })
36564
+ ] });
36565
+ return /* @__PURE__ */ jsx(Form, { ...form, children: /* @__PURE__ */ jsx(Box, { tag: "form", onSubmit: form.handleSubmit(onSubmit), className: "w-3/4", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-start items-stretch mt-4", children: [
36566
+ /* @__PURE__ */ jsx(
36567
+ FormField,
36568
+ {
36569
+ control: form.control,
36570
+ name: "email",
36571
+ render: ({ field }) => /* @__PURE__ */ jsx(MyFormItem, { field, placeholder: "email" })
36572
+ }
36573
+ ),
36574
+ /* @__PURE__ */ jsx(
36575
+ FormField,
36576
+ {
36577
+ control: form.control,
36578
+ name: "phone",
36579
+ render: ({ field }) => /* @__PURE__ */ jsx(MyFormItem, { field, placeholder: "phone" })
36580
+ }
36581
+ ),
36582
+ /* @__PURE__ */ jsx(Button$1, { disabled: isPending, type: "submit", className: "bg-primary text-primary-fg hover:bg-primary-hover", children: isPending ? /* @__PURE__ */ jsxs(Fragment, { children: [
36583
+ /* @__PURE__ */ jsx(Loader2, { style: css("mr-2 h-4 w-4 animate-spin") }),
36584
+ "Please wait"
36585
+ ] }) : /* @__PURE__ */ jsx(Fragment, { children: "Submit" }) })
36586
+ ] }) }) });
36587
+ };
36588
+ var contact_form_default = ContactForm;
36589
+ var Disclaimer = () => /* @__PURE__ */ jsxs("div", { children: [
36590
+ "By entering your mobile number and submitting, you consent to receive text messages from Lux at the number provided. Message and data rates may apply. Message frequency varies. You can unsubscribe at any time by replying STOP. View our ",
36591
+ /* @__PURE__ */ jsx("a", { href: "/privacy", children: "Privacy Policy" }),
36592
+ " and ",
36593
+ /* @__PURE__ */ jsx("a", { href: "/terms", children: "Terms & conditions" }),
36594
+ "."
36595
+ ] });
36596
+ var disclaimer_default = Disclaimer;
36597
+ var ContactDialog = ({
36598
+ open: open2,
36599
+ onOpenChange,
36600
+ buttonText,
36601
+ buttonProps,
36602
+ title: title2,
36603
+ byline,
36604
+ action,
36605
+ actionEnclosure
36606
+ }) => {
36607
+ const [success, setSuccess] = useState(false);
36608
+ const onSubmit = async (formData, enclosure) => {
36609
+ const result2 = await action(formData, enclosure);
36610
+ if (result2.success) {
36611
+ setSuccess(true);
36612
+ }
36613
+ };
36614
+ return /* @__PURE__ */ jsxs(Dialog$1, { open: open2, onOpenChange, children: [
36615
+ /* @__PURE__ */ jsx(DialogTrigger$1, { asChild: true, children: /* @__PURE__ */ jsx(Button$1, { ...buttonProps, children: buttonText }) }),
36616
+ /* @__PURE__ */ jsxs(DialogContent$1, { className: "sm:max-w-[500px] p-0 gap-0 bg-background border", children: [
36617
+ /* @__PURE__ */ jsxs(DialogHeader$1, { className: "py-6 text-foreground", children: [
36618
+ /* @__PURE__ */ jsx(DialogTitle$1, { className: "text-4xl text-center text-inherit", children: title2 }),
36619
+ byline && /* @__PURE__ */ jsxs(DialogDescription$1, { className: "text-inherit text-lg text-center", children: [
36620
+ byline,
36621
+ " "
36622
+ ] })
36623
+ ] }),
36624
+ /* @__PURE__ */ jsxs("div", { className: "px-8 pb-8 rounded-e-lg flex flex-col justify-start items-center", children: [
36625
+ success ? /* @__PURE__ */ jsx("p", { children: actionEnclosure?.reply }) : /* @__PURE__ */ jsx(contact_form_default, { onSubmit, enclosure: actionEnclosure }),
36626
+ /* @__PURE__ */ jsx("div", { className: "text-muted-1 text-xs mt-4", children: /* @__PURE__ */ jsx(disclaimer_default, {}) })
36627
+ ] })
36628
+ ] })
36629
+ ] });
36630
+ };
36631
+ var contact_dialog_default = ContactDialog;
36632
+ var FIRST = 2020;
36633
+ var Copyright = ({
36634
+ className: className2 = ""
36635
+ }) => {
36636
+ const year = (/* @__PURE__ */ new Date()).getFullYear();
36637
+ const yearString = year > FIRST ? `${FIRST} - ${year}` : FIRST.toString();
36638
+ return /* @__PURE__ */ jsxs(Box, { className: className2, children: [
36639
+ `Copyright \xA9 ${yearString}`,
36640
+ "\xA0",
36641
+ /* @__PURE__ */ jsx("br", { className: "sm:hidden" }),
36642
+ "Lux Industries Inc.\xA0",
36643
+ /* @__PURE__ */ jsx("br", { className: "md:hidden" }),
36644
+ "\xA0All rights reserved."
36645
+ ] });
36646
+ };
36647
+ var copyright_default = Copyright;
36648
+
36649
+ // src/site/site-def/footer/legal.ts
36650
+ var legal = [
36651
+ {
36652
+ title: "Terms and Conditions",
36653
+ href: "https://docs.google.com/document/d/1mvkjr1w8Rv8ttirs1mu-_2fw_PXclOyS/preview",
36654
+ newTab: true
36655
+ },
36656
+ {
36657
+ title: "Privacy Policy",
36658
+ href: "https://docs.google.com/document/d/1vZjOKaNdOoThDIaVLERWxflQLtOsuvLn/preview",
36659
+ newTab: true
36660
+ }
36661
+ ];
36662
+ var title = {
36663
+ title: "Legal",
36664
+ href: "",
36665
+ variant: "linkFG"
36666
+ };
36667
+ [title, ...legal];
36668
+ var FooterNav = ({
36669
+ items,
36670
+ currentAs,
36671
+ className: className2 = ""
36672
+ }) => /* @__PURE__ */ jsx(
36673
+ NavItems,
36674
+ {
36675
+ items,
36676
+ currentAs,
36677
+ as: "nav",
36678
+ className: className2,
36679
+ itemClx: (def) => def.variant === "linkFG" ? "font-nav text-[15px]/[1.3] font-medium tracking-normal text-muted-1 sm:hover:text-foreground transition-color duration-500" : "text-[15px]/[1.1] font-normal tracking-[0.2px] text-muted-1 sm:hover:text-foreground transition-color duration-500"
36680
+ }
36681
+ );
36682
+ var footer_nav_default = FooterNav;
36683
+ var SIZE12 = {
36684
+ xl: { mark: 40, word: 22, gap: "gap-4" },
36685
+ lg: { mark: 40, word: 22, gap: "gap-4" },
36686
+ md: { mark: 32, word: 18, gap: "gap-3" },
36687
+ sm: { mark: 24, word: 13, gap: "gap-2" },
36688
+ xs: { mark: 16, word: 9, gap: "gap-1.5" }
36689
+ };
36690
+ var Logo = ({
36691
+ size = "md",
36692
+ href,
36693
+ // no default please!
36694
+ outerClx = "",
36695
+ variant = "full",
36696
+ onClick
36697
+ }) => {
36698
+ const s = SIZE12[size] ?? SIZE12.md;
36699
+ const clx = "flex flex-row items-center " + s.gap + " " + (href ? "hover:opacity-80 cursor-pointer " : "cursor-default ") + outerClx;
36700
+ const art = /* @__PURE__ */ jsxs(Fragment, { children: [
36701
+ variant !== "wordmark" && /* @__PURE__ */ jsx(Logo$1, { variant: "white", size: s.mark }),
36702
+ variant !== "mark" && /* @__PURE__ */ jsx(Wordmark, { height: s.word })
36703
+ ] });
36704
+ return href ? /* @__PURE__ */ jsx(Link5, { href, style: css(clx), onClick, children: art }) : /* @__PURE__ */ jsx(Box, { tag: "span", className: clx, onClick, children: art });
36705
+ };
36706
+ var Footer = ({
36707
+ siteDef,
36708
+ className: className2 = "",
36709
+ noHorizPadding = false
36710
+ }) => {
36711
+ const { footer, aboveCopyright } = siteDef;
36712
+ const smGridCols = Math.floor(footer.length / 2);
36713
+ const smGridColsClx = `sm:grid-cols-${smGridCols} `;
36714
+ const _aboveCopyright = typeof aboveCopyright === "undefined" ? legal : aboveCopyright;
36715
+ return /* @__PURE__ */ jsxs(Box, { tag: "footer", className: cn("grow flex flex-col justify-between gap-6 pb-[2vh]", className2), children: [
36716
+ /* @__PURE__ */ jsxs(Box, { className: (noHorizPadding ? "" : "px-5 md:px-8 ") + "grid grid-cols-2 gap-4 gap-y-6 md:gap-x-6 lg:gap-8 " + smGridColsClx + "md:w-full sm:justify-items-center md:mx-0 lg:w-full md:flex md:flex-row md:justify-between px-[24px]", children: [
36717
+ /* @__PURE__ */ jsx("div", { className: "hidden lg:flex flex-col", children: /* @__PURE__ */ jsx(Logo, { size: "md", variant: "wordmark" }) }, 0),
36718
+ footer.map((defs, index) => {
36719
+ const xsColSpanClx = index === footer.length - 1 && footer.length % 2 === 1 ? "xs:col-span-2 xs:mx-auto md:col-span-1 md:mx-0 " : "";
36720
+ return /* @__PURE__ */ jsx(
36721
+ footer_nav_default,
36722
+ {
36723
+ items: defs,
36724
+ currentAs: siteDef.currentAs,
36725
+ className: cn(
36726
+ "sm:min-w-[150px] md:min-w-0 flex flex-col justify-start items-start gap-[11px] sm:gap-[12px] md:gap-[15px] ",
36727
+ xsColSpanClx
36728
+ )
36729
+ },
36730
+ index + 1
36731
+ );
36732
+ })
36733
+ ] }),
36734
+ /* @__PURE__ */ jsxs("div", { className: "md:mt-[2vh]", children: [
36735
+ _aboveCopyright.length > 0 && /* @__PURE__ */ jsx(
36736
+ NavItems,
36737
+ {
36738
+ items: _aboveCopyright,
36739
+ as: "div",
36740
+ className: "flex flex-row justify-center gap-4 mb-2",
36741
+ itemClx: "text-sm text-center text-muted-2 underline hover:text-foreground"
36742
+ }
36743
+ ),
36744
+ /* @__PURE__ */ jsx(copyright_default, { className: "text-sm text-center text-muted-3" })
36745
+ ] })
36746
+ ] });
36747
+ };
36748
+ var footer_default = Footer;
36749
+
36750
+ // src/site/components/auth/resume.ts
36751
+ var KEY = "lux-auth-resume";
36752
+ var remember = () => {
36753
+ sessionStorage.setItem(KEY, window.location.pathname + window.location.search);
36754
+ };
36755
+ var Widget = ({
36756
+ noLogin = false,
36757
+ handleLogin,
36758
+ className: className2
36759
+ }) => {
36760
+ const { isAuthenticated, isLoading, login, logout: logout2 } = useIam();
36761
+ const identity = useIamIdentity();
36762
+ if (isLoading) {
36763
+ return null;
36764
+ }
36765
+ if (!isAuthenticated) {
36766
+ return noLogin ? null : /* @__PURE__ */ jsx(
36767
+ Button$1,
36768
+ {
36769
+ variant: "primary",
36770
+ className: cn("h-8 w-fit !min-w-0", className2),
36771
+ onClick: handleLogin ?? (() => {
36772
+ remember();
36773
+ void login();
36774
+ }),
36775
+ children: "Login"
36776
+ }
36777
+ );
36778
+ }
36779
+ return /* @__PURE__ */ jsxs(Popover$2, { children: [
36780
+ /* @__PURE__ */ jsx(PopoverTrigger$2, { asChild: true, children: /* @__PURE__ */ jsx(
36781
+ Button$1,
36782
+ {
36783
+ variant: "outline",
36784
+ size: "icon",
36785
+ 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", className2),
36786
+ children: identity?.initials
36787
+ }
36788
+ ) }),
36789
+ /* @__PURE__ */ jsx(PopoverContent$2, { className: "bg-level-0", children: /* @__PURE__ */ jsxs("div", { className: "grid gap-4", children: [
36790
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2 truncate", children: [
36791
+ /* @__PURE__ */ jsx("h4", { className: "font-medium leading-none truncate", children: identity?.name }),
36792
+ identity?.email && identity.email !== identity.name && /* @__PURE__ */ jsx("p", { className: "text-sm opacity-50 truncate", children: identity.email })
36793
+ ] }),
36794
+ /* @__PURE__ */ jsx(Separator$2, {}),
36795
+ /* @__PURE__ */ jsx(Button$1, { variant: "outline", onClick: () => {
36796
+ logout2();
36797
+ }, children: "Logout" })
36798
+ ] }) })
36799
+ ] });
36800
+ };
36801
+ var AuthWidget = (props2) => useContext(IamContext) ? /* @__PURE__ */ jsx(Widget, { ...props2 }) : null;
36802
+ var widget_default = AuthWidget;
36803
+ var Avatar9 = (props2) => /* @__PURE__ */ jsxs("svg", { width: "17", height: "21", viewBox: "0 0 17 21", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props2, children: [
36804
+ /* @__PURE__ */ 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" }),
36805
+ /* @__PURE__ */ 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" })
36806
+ ] });
36807
+ var avatar_default = Avatar9;
36808
+ var BagIcon = (props2) => /* @__PURE__ */ jsx("svg", { fill: "none", viewBox: "0 0 1019 1281", ...props2, children: /* @__PURE__ */ 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" }) });
36809
+ var bag_icon_default = BagIcon;
36810
+
36811
+ // src/site/next/analytics/google-analytics.ts
36812
+ var sendGAEvent = (name, options = {}) => {
36813
+ window.gtag("event", name, options);
36814
+ };
36815
+ var DesktopBagPopup = ({
36816
+ triggerClx = "",
36817
+ popupClx = "",
36818
+ trigger
36819
+ }) => {
36820
+ const cmmc = useCommerce();
36821
+ const [bagOpen, setBagOpen] = useState(false);
36822
+ const router = useRouter();
36823
+ useEffect(() => {
36824
+ if (bagOpen) {
36825
+ sendGAEvent("view_cart", {
36826
+ items: cmmc.cartItems.map((item) => ({
36827
+ item_id: item.sku,
36828
+ item_name: item.title,
36829
+ item_category: item.familyId,
36830
+ price: item.price,
36831
+ quantity: item.quantity
36832
+ })),
36833
+ value: cmmc.cartTotal,
36834
+ currency: "USD"
36835
+ });
36836
+ }
36837
+ }, [bagOpen]);
36838
+ return /* @__PURE__ */ jsxs(Popover$2, { open: bagOpen, onOpenChange: setBagOpen, children: [
36839
+ /* @__PURE__ */ jsx(PopoverTrigger$2, { className: triggerClx, children: trigger }),
36840
+ /* @__PURE__ */ jsxs(PopoverContent$2, { sideOffset: 28, className: cn("relative flex flex-col p-0 px-4 pb-4 pt-2", popupClx), children: [
36841
+ /* @__PURE__ */ jsx(PopoverClose, { className: "absolute z-above-content right-2 top-2 self-end hover:bg-level-3 text-muted hover:text-accent p-1 rounded-full", children: /* @__PURE__ */ jsx(X, { className: "w-5 h-5" }) }),
36842
+ /* @__PURE__ */ jsxs(
36843
+ CartPanel,
36844
+ {
36845
+ handleCheckout: () => {
36846
+ router.push("/checkout");
36847
+ },
36848
+ className: "mt-4 mb-4 border-none py-0 px-4",
36849
+ listClx: "rounded-sm pr-3",
36850
+ scrollAfter: 5,
36851
+ scrollHeightClx: "h-[70vh]",
36852
+ itemClx: "mt-3",
36853
+ totalClx: "sticky px-1 pr-2 -bottom-[1px] bg-level-1",
36854
+ buttonClx: "max-w-[220px] flex-none",
36855
+ children: [
36856
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
36857
+ /* @__PURE__ */ jsx(bag_icon_default, { className: "mr-2 relative w-6 h-7 fill-foreground " }),
36858
+ /* @__PURE__ */ jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
36859
+ ] }),
36860
+ /* @__PURE__ */ jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
36861
+ ]
36862
+ }
36863
+ )
36864
+ ] })
36865
+ ] });
36866
+ };
36867
+ var desktop_bag_popup_default = DesktopBagPopup;
36868
+ var BagButton = observer$1(({
36869
+ showIfEmpty = false,
36870
+ animateOnHover = true,
36871
+ animateOnQuantityChange = true,
36872
+ size = "default",
36873
+ className: className2 = "",
36874
+ iconClx = "",
36875
+ onClick
36876
+ }) => {
36877
+ const c = useCommerce();
36878
+ const wiggleRef = useRef(observable.box("none"));
36879
+ useEffect(() => (
36880
+ // return IReactionDisposer
36881
+ animateOnQuantityChange && c ? reaction(
36882
+ () => c.cartQuantity,
36883
+ (curr, prev) => {
36884
+ if (curr > prev) {
36885
+ runInAction(() => {
36886
+ wiggleRef.current.set("more");
36887
+ });
36888
+ } else {
36889
+ runInAction(() => {
36890
+ wiggleRef.current.set("less");
36891
+ });
36892
+ }
36893
+ setTimeout(() => {
36894
+ runInAction(() => {
36895
+ wiggleRef.current.set("none");
36896
+ });
36897
+ }, 800);
36898
+ }
36899
+ ) : void 0
36900
+ ), []);
36901
+ if (!c || !showIfEmpty && c.cartEmpty) {
36902
+ return /* @__PURE__ */ jsx("div", {});
36903
+ }
36904
+ return /* @__PURE__ */ jsxs(
36905
+ Box,
36906
+ {
36907
+ "aria-label": "Bag",
36908
+ role: "button",
36909
+ onClick,
36910
+ className: cn(
36911
+ buttonVariants({ variant: "ghost", size }),
36912
+ "rounded-md",
36913
+ // Overides the bg change on hover --not a "hover effect"
36914
+ "relative group p-0 aspect-square hover:bg-background",
36915
+ wiggleRef.current.get() === "more" ? "item-added-to-cart-animation" : wiggleRef.current.get() === "less" ? "item-removed-from-cart-animation" : "",
36916
+ className2
36917
+ ),
36918
+ children: [
36919
+ !c.cartEmpty && /* @__PURE__ */ jsxs(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: [
36920
+ /* @__PURE__ */ jsx("div", { className: "h-[3px] w-full" }),
36921
+ /* @__PURE__ */ jsx("div", { children: c.cartQuantity })
36922
+ ] }),
36923
+ /* @__PURE__ */ jsx(bag_icon_default, { width: "24", height: "28", className: cn(
36924
+ "relative -top-[3px] fill-primary",
36925
+ iconClx,
36926
+ animateOnHover ? "group-hover:fill-primary-hover group-hover:scale-105 transition-scale transition-duration-300" : ""
36927
+ ), "aria-hidden": "true" })
36928
+ ]
36929
+ }
36930
+ );
36931
+ });
36932
+ var bag_button_default = BagButton;
36933
+ var DesktopNav = ({ links, isMenuOpened, setIsMenuOpen }) => {
36934
+ React64.useEffect(() => {
36935
+ const preventScroll = (e) => {
36936
+ e.preventDefault();
36937
+ };
36938
+ if (isMenuOpened) {
36939
+ window.addEventListener("wheel", preventScroll, { passive: false });
36940
+ window.addEventListener("touchmove", preventScroll, { passive: false });
36941
+ window.addEventListener("keydown", preventScrollKeys, { passive: false });
36942
+ } else {
36943
+ window.removeEventListener("wheel", preventScroll);
36944
+ window.removeEventListener("touchmove", preventScroll);
36945
+ window.removeEventListener("keydown", preventScrollKeys);
36946
+ }
36947
+ return () => {
36948
+ window.removeEventListener("wheel", preventScroll);
36949
+ window.removeEventListener("touchmove", preventScroll);
36950
+ window.removeEventListener("keydown", preventScrollKeys);
36951
+ };
36952
+ }, [isMenuOpened]);
36953
+ const preventScrollKeys = (e) => {
36954
+ if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", " "].includes(e.key)) {
36955
+ e.preventDefault();
36956
+ }
36957
+ };
36958
+ const handleMouseEnter = React64.useCallback(() => {
36959
+ setIsMenuOpen(true);
36960
+ }, [setIsMenuOpen]);
36961
+ const handleMouseLeave = React64.useCallback(() => {
36962
+ setIsMenuOpen(false);
36963
+ }, [setIsMenuOpen]);
36964
+ const handleContentMouseMove = () => {
36965
+ setIsMenuOpen(false);
36966
+ };
36967
+ const menuHiddenClass = !isMenuOpened ? "invisible" : "";
36968
+ return links.length > 0 ? /* @__PURE__ */ jsx(NavigationMenu$1, { children: /* @__PURE__ */ jsx(NavigationMenuList$1, { children: links.map((el, index) => /* @__PURE__ */ jsx(NavigationMenuItem$1, { className: "!m-0", children: el.isAIMenu ? /* @__PURE__ */ jsx(Link5, { href: el.href, style: css(cn(navigationMenuTriggerStyle(), " text-muted-1 bg-transparent")), children: el.title }) : el.title === "Cards" ? /* @__PURE__ */ jsxs(Fragment, { children: [
36969
+ /* @__PURE__ */ jsx(
36970
+ NavigationMenuTrigger$1,
36971
+ {
36972
+ className: "text-muted-1 bg-transparent",
36973
+ onMouseEnter: handleMouseEnter,
36974
+ onFocus: handleMouseEnter,
36975
+ onMouseLeave: handleMouseLeave,
36976
+ onBlur: handleMouseLeave,
36977
+ children: /* @__PURE__ */ jsx(Link5, { href: el.href, children: el.title })
36978
+ }
36979
+ ),
36980
+ /* @__PURE__ */ jsx(
36981
+ NavigationMenuContent$1,
36982
+ {
36983
+ className: cn("fixed left-0 top-14 pt-6 w-screen h-full border-0 !backdrop-blur-3xl bg-transparent mt-0", menuHiddenClass),
36984
+ onMouseEnter: handleMouseEnter,
36985
+ onMouseLeave: handleMouseLeave,
36986
+ children: /* @__PURE__ */ jsx("div", { className: "flex justify-center items-start", children: /* @__PURE__ */ jsx(
36987
+ "div",
36988
+ {
36989
+ className: "grid xl:grid-cols-3 w-full justify-center max-w-[750px]",
36990
+ onMouseLeave: handleContentMouseMove,
36991
+ children: GroupChildMenu({ childs: el.childMenu, isCards: true })
36992
+ }
36993
+ ) })
36994
+ }
36995
+ )
36996
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
36997
+ /* @__PURE__ */ jsx(
36998
+ NavigationMenuTrigger$1,
36999
+ {
37000
+ className: "text-muted-1 bg-transparent",
37001
+ onMouseEnter: handleMouseEnter,
37002
+ onFocus: handleMouseEnter,
37003
+ onMouseLeave: handleMouseLeave,
37004
+ onBlur: handleMouseLeave,
37005
+ children: el.href && el.href !== "" ? /* @__PURE__ */ jsx(Link5, { href: el.href, children: el.title }) : /* @__PURE__ */ jsx(Fragment, { children: el.title })
37006
+ }
37007
+ ),
37008
+ /* @__PURE__ */ jsx(
37009
+ NavigationMenuContent$1,
37010
+ {
37011
+ className: cn("fixed left-0 top-14 pt-6 w-screen h-full border-0 !backdrop-blur-3xl bg-transparent mt-0", menuHiddenClass),
37012
+ onMouseEnter: handleMouseEnter,
37013
+ onMouseLeave: handleMouseLeave,
37014
+ children: /* @__PURE__ */ jsx(
37015
+ "div",
37016
+ {
37017
+ className: "flex flex-row w-full justify-center",
37018
+ onMouseLeave: handleContentMouseMove,
37019
+ children: GroupChildMenu({ childs: el.childMenu })
37020
+ }
37021
+ )
37022
+ }
37023
+ )
37024
+ ] }) }, index)) }) }) : null;
37025
+ };
37026
+ var desktop_nav_menu_default = DesktopNav;
37027
+ var ListItem2 = React64.forwardRef(({ className: className2, title: title2, children, ...props2 }, ref2) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(NavigationMenuLink$1, { asChild: true, children: /* @__PURE__ */ jsxs(
37028
+ Box,
37029
+ {
37030
+ tag: "a",
37031
+ ref: ref2,
37032
+ className: cn(
37033
+ "block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:text-accent-foreground focus:bg-level-1 focus:text-accent-foreground text-muted-1 hover:text-primary hover:bg-transparent duration-1000 ease-in-out",
37034
+ className2
37035
+ ),
37036
+ ...props2,
37037
+ children: [
37038
+ /* @__PURE__ */ jsx("div", { className: "text-sm font-medium leading-none", children: title2 }),
37039
+ /* @__PURE__ */ jsx("p", { className: "line-clamp-3 text-sm leading-snug text-muted-1", children })
37040
+ ]
37041
+ }
37042
+ ) }) }, title2));
37043
+ ListItem2.displayName = "ListItem";
37044
+ var GroupChildMenu = (params) => {
37045
+ const { childs, isCards = false } = params;
37046
+ if (!childs) {
37047
+ return null;
37048
+ }
37049
+ const groupedChildMenus = childs.reduce((grouped, childLink) => {
37050
+ if (childLink.groupName) {
37051
+ grouped[childLink.groupName] = grouped[childLink.groupName] || [];
37052
+ grouped[childLink.groupName].push(childLink);
37053
+ }
37054
+ return grouped;
37055
+ }, {});
37056
+ const getChildExtraClass = (index) => {
37057
+ if (isCards && (index === 3 || index === 4)) {
37058
+ return "xl:-mt-32";
37059
+ }
37060
+ return "";
37061
+ };
37062
+ return Object.entries(groupedChildMenus).map(([groupName, childLinks], index) => /* @__PURE__ */ jsxs(Box, { className: cn("py-4 px-4 ", getChildExtraClass(index)), children: [
37063
+ /* @__PURE__ */ jsx("h2", { className: "text-muted-1", children: groupName }),
37064
+ /* @__PURE__ */ jsx("ul", { className: "w-[200px] gap-3 md:w-[250px] lg:w-[250px]", children: childLinks.map((link) => /* @__PURE__ */ jsxs("div", { className: "flex justify-start items-center", children: [
37065
+ link.icon,
37066
+ /* @__PURE__ */ jsx(ListItem2, { title: link.title, href: link.href, className: "ml-[14px]", children: link.contents }, link.title)
37067
+ ] }, link.title)) })
37068
+ ] }, groupName));
37069
+ };
37070
+ var DesktopHeader = ({
37071
+ links,
37072
+ className: className2 = "",
37073
+ noAuth = false,
37074
+ noCommerce = false,
37075
+ children,
37076
+ logoVariant = "full"
37077
+ }) => {
37078
+ const [isMenuOpened, setIsMenuOpen] = React64__default.useState(false);
37079
+ return /* @__PURE__ */ jsx(Box, { tag: "header", id: "DESKTOP_HEADER", className: cn(
37080
+ "bg-[rgba(0, 0, 0, 0.5)] !backdrop-blur-3xl fixed z-header top-0 left-0 right-0",
37081
+ className2,
37082
+ isMenuOpened ? " h-full" : ""
37083
+ ), children: /* @__PURE__ */ jsxs(Box, { className: "flex flex-row h-[80px] items-center justify-between mx-[24px] w-full max-w-screen", children: [
37084
+ /* @__PURE__ */ jsx(Logo, { size: logoVariant === "mark" ? "lg" : "md", href: "/", outerClx: "hidden lg:flex", variant: logoVariant }, "two"),
37085
+ /* @__PURE__ */ jsx(Logo, { size: "sm", href: "/", outerClx: "hidden md:flex lg:hidden", variant: logoVariant }, "one"),
37086
+ /* @__PURE__ */ jsx("div", { className: "flex w-full gap-4 items-center justify-center", children: /* @__PURE__ */ jsx(desktop_nav_menu_default, { links, isMenuOpened, setIsMenuOpen }) }),
37087
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
37088
+ !noCommerce && /* @__PURE__ */ jsx(desktop_bag_popup_default, { popupClx: "w-[340px]", trigger: /* @__PURE__ */ jsx(bag_button_default, { className: "text-primary -mr-[3px] lg:min-w-0" }) }),
37089
+ !noAuth && /* @__PURE__ */ jsx(widget_default, {}),
37090
+ children
37091
+ ] })
37092
+ ] }) });
37093
+ };
37094
+ var desktop_default = DesktopHeader;
37095
+ var Login = ({
37096
+ className: className2,
37097
+ onSuccess
37098
+ }) => {
37099
+ const { config: config2 } = useIam();
37100
+ const [state] = useState(() => crypto.randomUUID());
37101
+ useEffect(remember, []);
37102
+ return /* @__PURE__ */ jsx(
37103
+ Login$1,
37104
+ {
37105
+ serverUrl: config2.serverUrl,
37106
+ clientId: config2.clientId,
37107
+ redirectUri: config2.redirectUri,
37108
+ organization: config2.organization,
37109
+ state,
37110
+ className: cn("hanzo-iam-card", className2),
37111
+ onSuccess
37112
+ }
37113
+ );
37114
+ };
37115
+ var login_default = Login;
37116
+ var MobileMenuToggleButton = ({
37117
+ open: open2,
37118
+ setOpen,
37119
+ className: className2 = ""
37120
+ }) => {
37121
+ return /* @__PURE__ */ jsx(
37122
+ Button$1,
37123
+ {
37124
+ variant: "ghost",
37125
+ size: "default",
37126
+ className: cn("rounded-full", cn("p-0 aspect-square hover:bg-background sm:hover:bg-level-1 active:scale-75", className2)),
37127
+ onClick: () => {
37128
+ setOpen(!open2);
37129
+ },
37130
+ children: /* @__PURE__ */ jsx(Plus, { width: 28, height: 28, style: css(
37131
+ "block h-full will-change-transform transition-transform transition-scale transition-duration-[1500] " + (open2 ? "rotate-[135deg] scale-110" : "rotate-none")
37132
+ ) })
37133
+ }
37134
+ );
37135
+ };
37136
+ var mobile_menu_toggle_button_default = MobileMenuToggleButton;
37137
+ var MobileBagDrawer = ({
37138
+ open: open2,
37139
+ setOpen,
37140
+ handleCheckout,
37141
+ className: className2 = ""
37142
+ }) => {
37143
+ return /* @__PURE__ */ jsx(Drawer, { open: open2, onOpenChange: setOpen, children: /* @__PURE__ */ jsx(DrawerContent$1, { className: cn("rounded-t-xl mt-6 pb-12 h-auto", className2), children: /* @__PURE__ */ jsxs(
37144
+ CartPanel,
37145
+ {
37146
+ handleCheckout,
37147
+ className: "mt-4 mb-4 border-none py-0 px-4 w-full ",
37148
+ listClx: "rounded-sm pr-3",
37149
+ scrollAfter: 5,
37150
+ itemClx: "mt-2",
37151
+ totalClx: "sticky px-1 pr-2 border rounded-sm -bottom-[1px] bg-background",
37152
+ buttonClx: "max-w-[220px] flex-none",
37153
+ children: [
37154
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
37155
+ /* @__PURE__ */ jsx(
37156
+ bag_button_default,
37157
+ {
37158
+ animateOnHover: false,
37159
+ showIfEmpty: true,
37160
+ className: "mr-2 relative w-6 h-7",
37161
+ iconClx: "fill-foreground "
37162
+ }
37163
+ ),
37164
+ /* @__PURE__ */ jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
37165
+ ] }),
37166
+ /* @__PURE__ */ jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
37167
+ ]
37168
+ }
37169
+ ) }) });
37170
+ };
37171
+ var mobile_bag_drawer_default = MobileBagDrawer;
37172
+ var MobileNavMenuAI = ({ setMenuOpen }) => {
37173
+ const [isOpen, setIsOpen] = useState(false);
37174
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
37175
+ /* @__PURE__ */ jsxs(Box, { className: "w-full text-2xl cursor-pointer", children: [
37176
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
37177
+ /* @__PURE__ */ jsx(Logo, { variant: "wordmark", size: "md", outerClx: "p-6 h-full" }),
37178
+ /* @__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) }) })
37179
+ ] }),
37180
+ /* @__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: [
37181
+ /* @__PURE__ */ jsx("span", { className: "text-base pl-2 font-light", children: "Ask AI a question" }),
37182
+ /* @__PURE__ */ jsx(ArrowRight, {})
37183
+ ] }) })
37184
+ ] }),
37185
+ /* @__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$1, { className: "flex flex-col h-full w-full", children: [
37186
+ /* @__PURE__ */ jsxs("div", { className: "flex px-4 py-2 h-16 bg-level-0 items-center justify-between", children: [
37187
+ /* @__PURE__ */ jsxs("h3", { className: "font-semibold font-heading", children: [
37188
+ "LUX",
37189
+ /* @__PURE__ */ jsx("span", { className: "opacity-60", children: "AI" })
37190
+ ] }),
37191
+ /* @__PURE__ */ jsx(Button$1, { 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" }) })
37192
+ ] }),
37193
+ /* @__PURE__ */ jsx("iframe", { src: "https://lux.chat/iframe", className: "h-full" })
37194
+ ] }) })
37195
+ ] });
37196
+ };
37197
+ var mobile_nav_menu_ai_default = MobileNavMenuAI;
37198
+ var MobileNav = ({
37199
+ currentAs,
37200
+ links,
37201
+ setMenuState,
37202
+ className: className2 = "",
37203
+ commonItemClx,
37204
+ setChatbotOpen,
37205
+ setMenuOpen
37206
+ }) => links.length > 0 ? /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col h-full", className2), children: [
37207
+ /* @__PURE__ */ jsx(mobile_nav_menu_ai_default, { setMenuOpen }),
37208
+ /* @__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) => {
37209
+ const itemClx = commonItemClx ? typeof commonItemClx === "string" ? commonItemClx : commonItemClx(el) : "";
37210
+ const variant = el.variant ?? "link";
37211
+ let internalClx = variant === "link" ? " text-muted hover:text-foreground active:text-accent rounded-none" : " min-w-0";
37212
+ if (currentAs && currentAs === el.href) {
37213
+ internalClx += " pointer-events-none";
37214
+ if (variant === "link") {
37215
+ internalClx += " text-accent";
37216
+ }
37217
+ }
37218
+ if (!el.isAIMenu) {
37219
+ return /* @__PURE__ */ jsxs(AccordionItem$1, { value: el.title ? el.title : "", className: "!no-underline !border-0 px-6", children: [
37220
+ /* @__PURE__ */ jsxs(AccordionTrigger, { className: cn(internalClx, itemClx, ""), children: [
37221
+ /* @__PURE__ */ jsx(Box, { className: cn(internalClx, itemClx, "flex items-center justify-between w-full pl-3 text-base font-normal leading-6"), children: el.title }),
37222
+ /* @__PURE__ */ jsx(ChevronDown, { style: css("w-4 h-4 mr-3") })
37223
+ ] }),
37224
+ /* @__PURE__ */ jsx(AccordionContent, { children: el.childMenu && /* @__PURE__ */ jsx(Box, { className: "px-4", children: Object.entries(el.childMenu.reduce((acc, child) => {
37225
+ const group = acc[child.groupName ? child.groupName : ""] || [];
37226
+ group.push(child);
37227
+ acc[child.groupName ? child.groupName : ""] = group;
37228
+ return acc;
37229
+ }, {})).map(([groupName, children]) => /* @__PURE__ */ jsxs("div", { children: [
37230
+ /* @__PURE__ */ jsx(Box, { className: "mt-4 mb-4 font-light text-muted-1", children: groupName }),
37231
+ children.map((child, childIndex) => /* @__PURE__ */ jsx(Box, { className: "m-2", children: /* @__PURE__ */ jsxs(Box, { className: "flex items-center py-1", children: [
37232
+ /* @__PURE__ */ jsx("span", { children: child.icon && child.icon }),
37233
+ /* @__PURE__ */ jsx(
37234
+ Link5,
37235
+ {
37236
+ href: child.href,
37237
+ target: child.newTab ? "_blank" : "_self",
37238
+ rel: "noopener noreferrer",
37239
+ children: /* @__PURE__ */ jsx(Box, { tag: "span", className: "text-muted-2 hover:underline ml-5 hover:text-primary", children: child.title })
37240
+ }
37241
+ )
37242
+ ] }) }, childIndex))
37243
+ ] }, groupName)) }) })
37244
+ ] }, index);
37245
+ }
37246
+ }) }) }),
37247
+ /* @__PURE__ */ jsx(widget_default, { className: "text-2xl z-10", handleLogin: () => {
37248
+ setMenuState("login");
37249
+ } })
37250
+ ] }) : null;
37251
+ var mobile_nav_menu_default = MobileNav;
37252
+ 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 ";
37253
+ var MobileHeader = ({
37254
+ currentAs,
37255
+ links,
37256
+ className: className2 = "",
37257
+ setChatbotOpen,
37258
+ noAuth = false,
37259
+ // :aa TODO
37260
+ noCommerce = false
37261
+ // :aa TODO
37262
+ }) => {
37263
+ const cmmc = useCommerce();
37264
+ const [menuState, setMenuState] = useState("closed");
37265
+ const [bagDrawerOpen, setBagDrawerOpen] = useState(false);
37266
+ const router = useRouter();
37267
+ useEffect(() => {
37268
+ if (menuState === "bag" || bagDrawerOpen) {
37269
+ sendGAEvent("view_cart", {
37270
+ items: cmmc.cartItems.map((item) => ({
37271
+ item_id: item.sku,
37272
+ item_name: item.title,
37273
+ item_category: item.familyId,
37274
+ price: item.price,
37275
+ quantity: item.quantity
37276
+ })),
37277
+ value: cmmc.cartTotal,
37278
+ currency: "USD"
37279
+ });
37280
+ }
37281
+ }, [menuState, bagDrawerOpen]);
37282
+ const menuOpen = () => menuState !== "closed";
37283
+ const onLoginChanged = (token) => {
37284
+ if (!!token) {
37285
+ setMenuState("nav");
37286
+ }
37287
+ };
37288
+ const setMenuOpen = (open2) => {
37289
+ if (!open2) {
37290
+ setMenuState("closed");
37291
+ } else {
37292
+ setMenuState("nav");
37293
+ }
37294
+ };
37295
+ const handleCheckout = () => {
37296
+ setMenuState("closed");
37297
+ setBagDrawerOpen(false);
37298
+ router.push("/checkout");
37299
+ };
37300
+ const openBag = () => {
37301
+ if (menuOpen()) {
37302
+ setMenuState("bag");
37303
+ } else {
37304
+ setBagDrawerOpen(true);
37305
+ }
37306
+ };
37307
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
37308
+ /* @__PURE__ */ jsx(Box, { tag: "header", id: "MOBILE_HEADER", className: cn(
37309
+ `bg-background fixed z-header top-0 left-0 w-full ${menuOpen() ? "hidden" : "block"}`,
37310
+ className2
37311
+ ), children: /* @__PURE__ */ jsxs("div", { className: "w-full h-full flex flex-row justify-between items-center font-bold pr-5", children: [
37312
+ /* @__PURE__ */ jsx(Logo, { href: "/", size: "md", outerClx: "p-6 h-full", variant: "wordmark" }),
37313
+ menuOpen() && /* @__PURE__ */ jsx(Box, { className: "absolute left-0 top-0 bottom-0 right-0 pl-8 flex flex-row bg-background animate-mobile-menu-open", children: /* @__PURE__ */ jsx(avatar_default, { className: "self-center " }) }),
37314
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-0 flex-row", children: [
37315
+ /* @__PURE__ */ jsx(bag_button_default, { className: "text-primary -mr-[3px]", onClick: openBag }),
37316
+ /* @__PURE__ */ jsx(mobile_menu_toggle_button_default, { className: "text-foreground", open: menuOpen(), setOpen: setMenuOpen })
37317
+ ] })
37318
+ ] }) }),
37319
+ !noCommerce && /* @__PURE__ */ jsx(
37320
+ mobile_bag_drawer_default,
37321
+ {
37322
+ className: "",
37323
+ open: bagDrawerOpen,
37324
+ setOpen: setBagDrawerOpen,
37325
+ handleCheckout
37326
+ }
37327
+ ),
37328
+ menuOpen() && /* @__PURE__ */ jsx(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__ */ jsx(login_default, { onSuccess: onLoginChanged, className: "sm:animate-in sm:zoom-in-90 m-auto w-full max-w-sm px-8" }) : !!!noCommerce && menuState === "bag" ? /* @__PURE__ */ jsxs(
37329
+ CartPanel,
37330
+ {
37331
+ handleCheckout: () => {
37332
+ router.push("/checkout");
37333
+ },
37334
+ className: bagClx,
37335
+ listClx: "rounded-sm",
37336
+ scrollAfter: 6,
37337
+ scrollHeightClx: "h-[80vh]",
37338
+ itemClx: "mt-2",
37339
+ totalClx: "sticky px-1 pr-2 border rounded-sm -bottom-[1px] bg-level-1",
37340
+ buttonClx: "max-w-[220px] flex-none",
37341
+ children: [
37342
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
37343
+ /* @__PURE__ */ jsx(bag_icon_default, { className: "mr-2 relative w-4 h-5 fill-foreground " }),
37344
+ /* @__PURE__ */ jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
37345
+ ] }),
37346
+ /* @__PURE__ */ jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
37347
+ ]
37348
+ }
37349
+ ) : (
37350
+ /* menuState === 'nav' */
37351
+ /* @__PURE__ */ jsx(
37352
+ mobile_nav_menu_default,
37353
+ {
37354
+ currentAs,
37355
+ links,
37356
+ className: "sm:animate-in sm:zoom-in-90 w-full",
37357
+ commonItemClx: "px-0 text-xl h-16 justify-start ",
37358
+ setMenuState,
37359
+ setChatbotOpen,
37360
+ setMenuOpen
37361
+ }
37362
+ )
37363
+ ) })
37364
+ ] });
37365
+ };
37366
+ var mobile_default = MobileHeader;
37367
+ var Header = ({
37368
+ siteDef,
37369
+ className: className2 = "",
37370
+ children,
37371
+ logoVariant = "full"
37372
+ }) => {
37373
+ const [open2, setOpen] = React64__default.useState(false);
37374
+ const { nav: { common, featured }, currentAs, noAuth, commerce } = siteDef;
37375
+ const links = featured ? [...common, ...featured] : common;
37376
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
37377
+ /* @__PURE__ */ jsx(
37378
+ desktop_default,
37379
+ {
37380
+ className: cn(className2, "hidden md:flex"),
37381
+ links,
37382
+ currentAs,
37383
+ noAuth,
37384
+ noCommerce: !!!commerce,
37385
+ logoVariant,
37386
+ children
37387
+ }
37388
+ ),
37389
+ /* @__PURE__ */ jsx(
37390
+ mobile_default,
37391
+ {
37392
+ className: cn(className2, "md:hidden"),
37393
+ links,
37394
+ currentAs,
37395
+ setChatbotOpen: setOpen,
37396
+ noAuth,
37397
+ noCommerce: !!!commerce
37398
+ }
37399
+ )
37400
+ ] });
37401
+ };
37402
+ var header_default = Header;
37403
+ var Main = ({
37404
+ children,
37405
+ className: className2 = "",
37406
+ headerSpace = true,
37407
+ standardWidth = true,
37408
+ id: id3
37409
+ }) => /* @__PURE__ */ jsx(Box, { tag: "main", id: id3 ?? "LUX_UI_MAIN", className: cn(
37410
+ "flex flex-col justify-start items-center",
37411
+ "px-4 md:px-6 lg:px-8",
37412
+ standardWidth ? "max-w-screen-2xl w-full lg:mx-auto" : "",
37413
+ headerSpace ? "pt-[44px] md:pt-[80px]" : "py-4",
37414
+ className2
37415
+ ), children });
37416
+ var main_default = Main;
37417
+ var MiniChart = ({
37418
+ widgetProps,
37419
+ containerStyles = {}
37420
+ }) => {
37421
+ const {
37422
+ symbol,
37423
+ exchange,
37424
+ lineColor,
37425
+ topGradientColor,
37426
+ bottomGradientColor,
37427
+ width,
37428
+ height,
37429
+ autosize,
37430
+ locale,
37431
+ ...rest
37432
+ } = widgetProps;
37433
+ const symbolString = exchange ? `${exchange}:${symbol}` : symbol;
37434
+ const containerRef = useRef(null);
37435
+ useEffect(() => {
37436
+ if (!containerRef.current) {
37437
+ return;
37438
+ }
37439
+ const script = document.createElement("script");
37440
+ script.type = "text/javascript";
37441
+ script.src = "https://s3.tradingview.com/external-embedding/embed-widget-mini-symbol-overview.js";
37442
+ script.async = true;
37443
+ script.onload = async () => {
37444
+ const iframe = containerRef.current?.querySelector("iframe");
37445
+ if (iframe && iframe instanceof Element) {
37446
+ iframe.style.colorScheme = "normal";
37447
+ setTimeout(() => {
37448
+ document.querySelector("#mini-symbol-overview-ticker");
37449
+ }, 1200);
37450
+ }
37451
+ const copyDiv = document.querySelector(".tradingview-widget-copyright");
37452
+ if (copyDiv) {
37453
+ setTimeout(() => {
37454
+ copyDiv.classList.remove("invisible");
37455
+ }, 1200);
37456
+ }
37457
+ };
37458
+ const config2 = JSON.stringify({
37459
+ symbol: symbolString,
37460
+ width: autosize ? "100%" : width || 350,
37461
+ height: autosize ? "100%" : height || 220,
37462
+ locale: locale ?? "en",
37463
+ isTransparent: "true",
37464
+ trendLineColor: lineColor || "rgba(41, 98, 255, 1)",
37465
+ underLineColor: topGradientColor || "rgba(41, 98, 255, 0.3)",
37466
+ underLineBottomColor: bottomGradientColor || "rgba(41, 98, 255, 0)",
37467
+ ...rest
37468
+ });
37469
+ script.innerHTML = config2;
37470
+ containerRef.current.appendChild(script);
37471
+ return () => {
37472
+ while (containerRef.current?.firstChild) {
37473
+ containerRef.current.removeChild(containerRef.current.firstChild);
37474
+ }
37475
+ };
37476
+ }, [JSON.stringify(widgetProps)]);
37477
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
37478
+ /* @__PURE__ */ jsx("div", { style: containerStyles, className: "tradingview-widget-container h-[150px]", ref: containerRef }),
37479
+ /* @__PURE__ */ jsxs("div", { className: "tradingview-widget-copyright border-t w-full invisible", children: [
37480
+ /* @__PURE__ */ jsx("a", { href: `https://www.tradingview.com/symbols/${symbol}${exchange ? `/?exchange=${exchange}` : ""}`, rel: "noopener", target: "_blank", children: /* @__PURE__ */ jsxs(Box, { tag: "span", className: "text-[--hz-ui-primary]", children: [
37481
+ symbol,
37482
+ " quotes"
37483
+ ] }) }),
37484
+ "\xA0by TradingView"
37485
+ ] })
37486
+ ] });
37487
+ };
37488
+ var mini_chart_default = MiniChart;
37489
+ var Wrapper = ({
37490
+ symbol,
37491
+ exchange
37492
+ }) => /* @__PURE__ */ jsx(mini_chart_default, { widgetProps: {
37493
+ symbol,
37494
+ exchange,
37495
+ autosize: true,
37496
+ colorTheme: "dark",
37497
+ lineColor: "rgb(114, 27, 228)",
37498
+ bottomGradientColor: "rgba(255, 255, 255, 0.1)",
37499
+ dateRange: "60M"
37500
+ } });
37501
+ var wrapper_default = Wrapper;
37502
+ var NotFound = ({
37503
+ header = false,
37504
+ siteDef
37505
+ }) => /* @__PURE__ */ jsxs(Fragment, { children: [
37506
+ header && /* @__PURE__ */ jsx(header_default, { siteDef }),
37507
+ /* @__PURE__ */ jsx(main_default, { className: "h-[100svh] sm:h-[700px] px-8 sm:px-10", headerSpace: header, children: /* @__PURE__ */ jsxs(ApplyTypography$1, { className: "mt-[200px] flex flex-col md:gap-8", children: [
37508
+ /* @__PURE__ */ jsx("h3", { children: "...Huh?" }),
37509
+ /* @__PURE__ */ jsx("h4", { children: "Sorry, we're fresh out of those." }),
37510
+ /* @__PURE__ */ jsxs("h4", { children: [
37511
+ "...try something from the ",
37512
+ /* @__PURE__ */ jsx("a", { href: "/", children: "Home Page" }),
37513
+ "?"
37514
+ ] })
37515
+ ] }) }),
37516
+ /* @__PURE__ */ jsx(footer_default, { siteDef })
37517
+ ] });
37518
+ var not_found_default = NotFound;
37519
+ var BackButton = ({
37520
+ variant = "ghost",
37521
+ size = "default",
37522
+ clx = "",
37523
+ iconClx = "",
37524
+ onBack
37525
+ }) => {
37526
+ const router = useRouter();
37527
+ const back = () => {
37528
+ if (onBack) {
37529
+ onBack();
37530
+ }
37531
+ router.back();
37532
+ };
37533
+ return /* @__PURE__ */ jsx(
37534
+ Button$1,
37535
+ {
37536
+ variant,
37537
+ size,
37538
+ onClick: back,
37539
+ className: clx,
37540
+ children: /* @__PURE__ */ jsx(ChevronLeft, { style: css(iconClx) })
37541
+ }
37542
+ );
37543
+ };
37544
+ var back_button_default = BackButton;
37545
+ enableStaticRendering(typeof window === "undefined");
37546
+ var CommerceUIContext = createContext(void 0);
37547
+ var useCommerceDrawer = () => {
37548
+ return useContext(CommerceUIContext);
37549
+ };
37550
+ var useSelectAndBuy = () => {
37551
+ return useContext(CommerceUIContext);
37552
+ };
37553
+ var CommerceDrawer = observer$1(({
37554
+ children,
37555
+ handleHandleClicked,
37556
+ drawerClx = "",
37557
+ ...rest
37558
+ }) => {
37559
+ const drawer = useCommerceDrawer();
37560
+ return /* @__PURE__ */ jsx(
37561
+ Drawer,
37562
+ {
37563
+ open: drawer.open,
37564
+ onOpenChange: () => {
37565
+ },
37566
+ modal: drawer.modal,
37567
+ snapPoints: drawer.points,
37568
+ activeSnapPoint: drawer.activePoint,
37569
+ setActiveSnapPoint: drawer.onActivePointChanged.bind(drawer),
37570
+ fastDragSkipsToEnd: false,
37571
+ dragHandleOnly: true,
37572
+ handleHandleClicked,
37573
+ extendHandleDragRegion: false,
37574
+ ...rest,
37575
+ children: /* @__PURE__ */ jsxs(
37576
+ DrawerContent$1,
37577
+ {
37578
+ defaultHandle: false,
37579
+ className: cn(
37580
+ "border-0",
37581
+ drawer.isMobile ? "pt-5" : "pt-6",
37582
+ "w-full h-full"
37583
+ ),
37584
+ onOpenAutoFocus: (e) => {
37585
+ e.preventDefault();
37586
+ },
37587
+ children: [
37588
+ /* @__PURE__ */ jsx(
37589
+ DrawerHandle,
37590
+ {
37591
+ className: cn(
37592
+ "absolute top-0 left-0 right-0 mx-auto z-10",
37593
+ "flex justify-center items-start",
37594
+ "border-t rounded-t-lg border-muted-3",
37595
+ drawer.isMobile ? "h-5 touch-pan-y" : "h-6"
37596
+ ),
37597
+ children: /* @__PURE__ */ jsx(Box, { className: cn(
37598
+ // pseudo-handle
37599
+ "rounded-[3px] bg-level-3",
37600
+ drawer.isMobile ? "w-[155px] mt-[5px] h-1.5" : "w-[180px] mt-[3px] h-2.5 hover:bg-level-4",
37601
+ !drawer.isMobile ? "cursor-grab active:cursor-grabbing" : ""
37602
+ ) })
37603
+ }
37604
+ ),
37605
+ children
37606
+ ]
37607
+ }
37608
+ )
37609
+ }
37610
+ );
37611
+ });
37612
+ var shell_default = CommerceDrawer;
37613
+ var IconAndQuantity = observer$1(({
37614
+ animateOnQuantityChange = false,
37615
+ showArrow = true,
37616
+ showQuantity = true,
37617
+ clx = "",
37618
+ iconClx = "",
37619
+ digitClx = ""
37620
+ }) => {
37621
+ const cmmc = useCommerce();
37622
+ const wiggleRef = useRef(observable.box("none"));
37623
+ useEffect(() => (
37624
+ // return IReactionDisposer
37625
+ animateOnQuantityChange ? reaction(
37626
+ () => cmmc.cartQuantity,
37627
+ (curr, prev) => {
37628
+ if (curr > prev) {
37629
+ runInAction(() => {
37630
+ wiggleRef.current.set("more");
37631
+ });
37632
+ } else {
37633
+ runInAction(() => {
37634
+ wiggleRef.current.set("less");
37635
+ });
37636
+ }
37637
+ setTimeout(() => {
37638
+ runInAction(() => {
37639
+ wiggleRef.current.set("none");
37640
+ });
37641
+ }, 800);
37642
+ }
37643
+ ) : void 0
37644
+ ), []);
37645
+ return /* @__PURE__ */ jsxs(Box, { className: cn("flex items-center justify-center", clx), children: [
37646
+ showQuantity && /* @__PURE__ */ jsxs(Box, { className: cn(
37647
+ "relative flex items-center justify-center mr-1",
37648
+ wiggleRef.current.get() === "more" ? "item-added-to-cart-animation" : wiggleRef.current.get() === "less" ? "item-removed-from-cart-animation" : ""
37649
+ ), children: [
37650
+ cmmc.cartQuantity > 0 && /* @__PURE__ */ jsx(Box, { className: cn(
37651
+ "z-above-content flex flex-col justify-center items-center",
37652
+ "absolute left-0 right-0 top-0 bottom-0",
37653
+ digitClx
37654
+ ), children: /* @__PURE__ */ jsx("div", { style: {
37655
+ /* color: 'white' tailwind bug? ,*/
37656
+ fontSize: "11px",
37657
+ position: "relative",
37658
+ top: "1px"
37659
+ }, children: cmmc.cartQuantity }) }),
37660
+ /* @__PURE__ */ jsx(bag_icon_default, { width: "19", height: "24", className: cn("relative -top-[3px] opacity-70", iconClx), "aria-hidden": "true" })
37661
+ ] }),
37662
+ showArrow && /* @__PURE__ */ jsx("span", { style: { fontSize: "17px" }, children: "\u203A" })
37663
+ ] });
37664
+ });
37665
+ var CheckoutButton = ({
37666
+ handleCheckout,
37667
+ variant = "primary",
37668
+ rounded = "lg",
37669
+ className: className2,
37670
+ showQuantity = true,
37671
+ showArrow = true,
37672
+ animateOnQuantityChange = true,
37673
+ centerText = true,
37674
+ children,
37675
+ ...rest
37676
+ }) => {
37677
+ return /* @__PURE__ */ jsxs(
37678
+ Button$1,
37679
+ {
37680
+ ...rest,
37681
+ onClick: handleCheckout,
37682
+ variant,
37683
+ className: cn(`rounded-${rounded}`, cn(
37684
+ "flex justify-between items-stretch group",
37685
+ showQuantity ? centerText ? "px-1.5" : "pl-2.5 pr-1.5" : "",
37686
+ className2
37687
+ )),
37688
+ children: [
37689
+ centerText && // must scale this one too, as it effects layout
37690
+ /* @__PURE__ */ jsx(
37691
+ IconAndQuantity,
37692
+ {
37693
+ showArrow,
37694
+ showQuantity,
37695
+ clx: "invisible group-hover:scale-105 transition-scale transition-duration-300"
37696
+ }
37697
+ ),
37698
+ children ?? /* @__PURE__ */ jsx("div", { className: "flex justify-center items-center", children: "Checkout" }),
37699
+ /* @__PURE__ */ jsx(
37700
+ IconAndQuantity,
37701
+ {
37702
+ clx: "group-hover:scale-105 transition-scale transition-duration-300",
37703
+ animateOnQuantityChange,
37704
+ showArrow,
37705
+ showQuantity,
37706
+ iconClx: "fill-background",
37707
+ digitClx: "text-foreground group-hover:opacity-80 leading-none font-bold font-sans"
37708
+ }
37709
+ )
37710
+ ]
37711
+ }
37712
+ );
37713
+ };
37714
+ var checkout_button_default = CheckoutButton;
37715
+ var CN = {
37716
+ // h: mind padding!
37717
+ mobile: { w: 36, h: 32 },
37718
+ sm: { w: 60, h: 34 },
37719
+ desktop: { w: 60, h: 32 }
37720
+ };
37721
+ var Info2 = ({
37722
+ item,
37723
+ clx = ""
37724
+ }) => {
37725
+ const cmmc = useCommerce();
37726
+ const family = cmmc.getFamilyById(item.familyId);
37727
+ let topLine = family.title;
37728
+ if (item.sku.startsWith("LXM-AG") || item.sku.startsWith("LXM-AU")) {
37729
+ topLine = family.parentTitle + ", " + family.title;
37730
+ }
37731
+ const optionLabel = item.optionLabelShort ?? item.optionLabel;
37732
+ const priceStr = formatCurrencyValue(item.price);
37733
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
37734
+ /* @__PURE__ */ jsxs(Box, { className: cn("sm:hidden flex flex-col !text-muted items-stretch whitespace-nowrap text-ellipsis ", clx), children: [
37735
+ /* @__PURE__ */ jsx("p", { className: "text-left text-xs", children: topLine }),
37736
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-between text-xxs", children: [
37737
+ /* @__PURE__ */ jsx("div", { children: optionLabel }),
37738
+ /* @__PURE__ */ jsx("div", { className: "pl-2.5", children: priceStr })
37739
+ ] })
37740
+ ] }),
37741
+ /* @__PURE__ */ jsxs(Box, { className: cn("hidden sm:flex !text-muted flex-col items-stretch whitespace-nowrap text-ellipsis text-xs", clx), children: [
37742
+ /* @__PURE__ */ jsx("p", { className: "text-left", children: topLine }),
37743
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
37744
+ /* @__PURE__ */ jsx("div", { children: optionLabel }),
37745
+ /* @__PURE__ */ jsx("div", { className: "pl-2.5", children: priceStr })
37746
+ ] })
37747
+ ] })
37748
+ ] });
37749
+ };
37750
+ var PROMPT_COMMON_CLX = "block absolute top-0 left-0 bg-transparent duration-400 transition-opacity";
37751
+ var Micro = observer$1(({
37752
+ clx = "",
37753
+ handleCheckout,
37754
+ handleItemClicked
37755
+ }) => {
37756
+ const drawer = useCommerceDrawer();
37757
+ const cmmc = useCommerce();
37758
+ return /* @__PURE__ */ jsxs(Box, { className: cn(
37759
+ drawer.showRecent ? "grid grid-cols-2" : "flex justify-center items-center ",
37760
+ drawer.showRecent ? drawer.isMobile ? "-mt-3" : "-mt-3" : "",
37761
+ "gap-2 md:gap-3 relative",
37762
+ clx
37763
+ ), children: [
37764
+ drawer.showRecent && /* @__PURE__ */ jsxs(Box, { className: "flex flex-col items-stretch " + (drawer.isMobile ? "justify-start" : "group"), children: [
37765
+ /* @__PURE__ */ jsxs(Box, { tag: "p", className: "relative text-muted text-xxs md:text-xs leading-none pl-1 self-start " + (drawer.isMobile ? "top-[3px]" : "top-[1px]"), children: [
37766
+ /* @__PURE__ */ jsx("span", { className: "invisible", children: "scrictly for layout" }),
37767
+ drawer.isMobile ? /* @__PURE__ */ jsx(Box, { tag: "span", className: PROMPT_COMMON_CLX, children: "tap for options:" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
37768
+ /* @__PURE__ */ jsx(Box, { tag: "span", className: PROMPT_COMMON_CLX + " group-hover:opacity-0", children: "recent item:" }),
37769
+ /* @__PURE__ */ jsx(Box, { tag: "span", className: PROMPT_COMMON_CLX + " opacity-0 group-hover:opacity-100", children: "view options:" })
37770
+ ] })
37771
+ ] }),
37772
+ /* @__PURE__ */ jsxs(
37773
+ Button$1,
37774
+ {
37775
+ variant: "ghost",
37776
+ className: cn(`rounded-${drawer.isMobile ? "md" : "lg"}`, cn(
37777
+ "box-content",
37778
+ "flex flex-row justify-between items-center gap-1",
37779
+ "-ml-1.5",
37780
+ "overflow-hidden ",
37781
+ "px-1 md:px-2 py-[2px]",
37782
+ "border border-transparent group-hover:border-muted-3",
37783
+ "group-hover:!bg-transparent",
37784
+ "!min-w-0"
37785
+ )),
37786
+ size: drawer.isMobile ? "sm" : "default",
37787
+ onClick: handleItemClicked,
37788
+ children: [
37789
+ cmmc.recentItem?.item.img && /* @__PURE__ */ jsxs(Fragment, { children: [
37790
+ /* @__PURE__ */ jsx(MediaStack, { media: { img: cmmc.recentItem.item.img }, constrainTo: CN.mobile, className: "sm:hidden grow-0 shrink-0" }),
37791
+ /* @__PURE__ */ jsx(MediaStack, { media: { img: cmmc.recentItem.item.img }, constrainTo: CN.sm, className: "hidden sm:block md:hidden grow-0 shrink-0" }),
37792
+ /* @__PURE__ */ jsx(MediaStack, { media: { img: cmmc.recentItem.item.img }, constrainTo: CN.desktop, className: "hidden md:block grow-0 shrink-0" })
37793
+ ] }),
37794
+ cmmc.recentItem && /* @__PURE__ */ jsx("div", { className: "grow w-full", children: /* @__PURE__ */ jsx(Info2, { item: cmmc.recentItem.item, clx: "w-full" }) })
37795
+ ]
37796
+ }
37797
+ )
37798
+ ] }),
37799
+ drawer.showCheckout && /* @__PURE__ */ jsxs(Box, { className: cn(
37800
+ "flex flex-col w-full",
37801
+ drawer.showRecent ? "items-stretch" : "items-center",
37802
+ drawer.isMobile ? "justify-start" : "justify-center"
37803
+ ), children: [
37804
+ drawer.showRecent && /* @__PURE__ */ jsx("p", { className: "invisible text-muted text-xxs md:text-xs leading-none pl-1 self-start", children: "for layout" }),
37805
+ /* @__PURE__ */ jsx(
37806
+ checkout_button_default,
37807
+ {
37808
+ handleCheckout,
37809
+ variant: "primary",
37810
+ size: drawer.isMobile ? "sm" : "lg",
37811
+ className: cn(`rounded-${drawer.isMobile ? "md" : "lg"}`, cn(
37812
+ drawer.isMobile ? drawer.showRecent ? "pl-3.5 pr-2.5" : "min-w-[320px]" : drawer.showRecent ? "" : "w-[320px]",
37813
+ "text-sm font-semibold"
37814
+ )),
37815
+ centerText: drawer.isMobile ? !drawer.showRecent : true
37816
+ }
37817
+ )
37818
+ ] })
37819
+ ] });
37820
+ });
37821
+ var micro_default = Micro;
37822
+ var CommerceUIComponent = observer$1(() => {
37823
+ const buy = useSelectAndBuy();
37824
+ const drawer = useCommerceDrawer();
37825
+ const router = useRouter();
37826
+ const handleCheckout = () => {
37827
+ router.push("/checkout");
37828
+ };
37829
+ const handleHandleClicked = () => {
37830
+ if (drawer.state === "full") {
37831
+ buy.hideVariants();
37832
+ } else if (drawer.state === "micro") {
37833
+ buy.showRecentVariants();
37834
+ }
37835
+ };
37836
+ const handleItemClicked = () => {
37837
+ buy.showRecentVariants();
37838
+ };
37839
+ const handleCloseGesture = () => {
37840
+ if (drawer.state === "full") {
37841
+ buy.hideVariants();
37842
+ return true;
37843
+ }
37844
+ return false;
37845
+ };
37846
+ return /* @__PURE__ */ jsxs(
37847
+ shell_default,
37848
+ {
37849
+ handleHandleClicked,
37850
+ handleCloseGesture,
37851
+ drawerClx: "flex flex-col",
37852
+ children: [
37853
+ drawer.state === "full" && /* The actual drawer is larger than the visible area (due to awkward
37854
+ vaul impl. So we have to ask the drawer for its currect snappoint
37855
+ and constrain layout to that.
37856
+ */
37857
+ /* @__PURE__ */ jsx("div", { style: {
37858
+ height: drawer.snapPointPx - 24
37859
+ /* fudge factor for handle area */
37860
+ }, children: /* @__PURE__ */ jsx(
37861
+ CarouselBuyCard,
37862
+ {
37863
+ skuPath: buy.currentSkuPath,
37864
+ checkoutButton: /* @__PURE__ */ jsx(
37865
+ checkout_button_default,
37866
+ {
37867
+ handleCheckout,
37868
+ className: "w-full min-w-[160px] sm:max-w-[320px]"
37869
+ }
37870
+ ),
37871
+ clx: "justify-between h-full pb-3 gap-8",
37872
+ addBtnClx: "w-full min-w-[160px] sm:max-w-[320px]",
37873
+ buttonsAreaClx: "grow-0 shrink-0 mt-0",
37874
+ selectorClx: "max-w-[475px] justify-between grow"
37875
+ }
37876
+ ) }),
37877
+ drawer.state === "micro" && /* @__PURE__ */ jsx(
37878
+ micro_default,
37879
+ {
37880
+ handleCheckout,
37881
+ handleItemClicked,
37882
+ clx: "w-full px-2 sm:w-[460px] sm:mx-auto md:w-[550px]"
37883
+ }
37884
+ )
37885
+ ]
37886
+ }
37887
+ );
37888
+ });
37889
+ var drawer_default = CommerceUIComponent;
37890
+ var DrawerMargin = observer$1(({
37891
+ clx = ""
37892
+ }) => {
37893
+ const drawer = useCommerceDrawer();
37894
+ if (!drawer) {
37895
+ throw new Error("DrawerMargin must be used with a CommerceUIContext!");
37896
+ }
37897
+ return /* @__PURE__ */ jsx(
37898
+ Box,
37899
+ {
37900
+ className: cn("transition-height", clx),
37901
+ style: {
37902
+ height: drawer.state === "micro" ? drawer.microHeight : 0
37903
+ }
37904
+ }
37905
+ );
37906
+ });
37907
+ var drawer_margin_default = DrawerMargin;
37908
+ var BuyButton = ({
37909
+ skuPath,
37910
+ children,
37911
+ className: className2 = "",
37912
+ ...rest
37913
+ }) => {
37914
+ const buyOptions = useSelectAndBuy();
37915
+ const handleClick = () => {
37916
+ buyOptions.showVariants(skuPath);
37917
+ };
37918
+ return /* @__PURE__ */ jsx(Button$1, { onClick: handleClick, ...rest, className: cn(className2, ""), children });
37919
+ };
37920
+ var buy_button_default = BuyButton;
37921
+ var ThankYou = ({}) => /* @__PURE__ */ jsxs(ApplyTypography, { className: "flex flex-col gap-4 text-center mt-10", children: [
37922
+ /* @__PURE__ */ jsx("h3", { children: "Thank you for your order!" }),
37923
+ /* @__PURE__ */ jsx("h6", { children: "Once your payment has been confirmed, you'll recieve an email with additional information." }),
37924
+ /* @__PURE__ */ jsxs("p", { children: [
37925
+ "While you wait, we cordially invite you to join the ",
37926
+ /* @__PURE__ */ jsx(Link5, { href: "https://warpcast.com/~/channel/lux", children: "Lux Channel" }),
37927
+ " on ",
37928
+ /* @__PURE__ */ jsx(Link5, { href: "https://warpcast.com/~/invite-page/227706?id=fbc9ca91", children: "Warpcast" }),
37929
+ "."
37930
+ ] })
37931
+ ] });
37932
+ var thank_you_default = ThankYou;
37933
+ var DesktopBagCarousel = observer$1(({
37934
+ constrainTo,
37935
+ className: className2 = ""
37936
+ }) => {
37937
+ const cmmc = useCommerce();
37938
+ return /* @__PURE__ */ jsx(
37939
+ CarouselItemSelector,
37940
+ {
37941
+ items: cmmc.cartItems,
37942
+ selectedItemRef: cmmc,
37943
+ scrollable: false,
37944
+ selectSku: cmmc.setCurrentItem.bind(cmmc),
37945
+ clx: className2,
37946
+ ext: {
37947
+ options: { loop: true },
37948
+ constrainTo,
37949
+ imageOnly: true
37950
+ }
37951
+ }
37952
+ );
37953
+ });
37954
+ var desktop_bag_carousel_default = DesktopBagCarousel;
37955
+ var linkClx = cn(buttonVariants({ variant: "linkMuted" }), "rounded-none");
37956
+ var PolicyLinks = ({
37957
+ clx = ""
37958
+ }) => /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col items-center", clx), children: [
37959
+ /* @__PURE__ */ jsx(Separator$2, {}),
37960
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-4 py-2 text-sm", children: [
37961
+ /* @__PURE__ */ jsx(Link5, { style: css(linkClx), href: "", children: "refund policy" }),
37962
+ /* @__PURE__ */ jsx(Link5, { style: css(linkClx), href: "", children: "privacy policy" })
37963
+ ] })
37964
+ ] });
37965
+ var policy_links_default = PolicyLinks;
37966
+ var DesktopCheckoutPanel = observer$1(({
37967
+ step,
37968
+ stepNames,
37969
+ onLeave,
37970
+ clx = "",
37971
+ children
37972
+ }) => {
37973
+ const cmmc = useCommerce();
37974
+ return /* @__PURE__ */ jsxs(Box, { className: cn("grid grid-cols-2", clx), children: [
37975
+ /* @__PURE__ */ jsx("div", { className: "w-full h-full bg-background flex flex-row items-start justify-end", children: /* @__PURE__ */ jsxs("div", { className: "w-full h-full max-w-[750px] relative flex flex-col items-stretch justify-start px-8 pb-8", children: [
37976
+ /* @__PURE__ */ jsxs("div", { className: "h-[80px] grow-0 flex flex-row items-center z-10", children: [
37977
+ /* @__PURE__ */ jsx(Logo, { size: "md", href: "/", onClick: onLeave, variant: "wordmark", outerClx: "logo-outer-tooltip-class" }),
37978
+ /* @__PURE__ */ jsx(tooltip_default, { select: ".logo-outer-tooltip-class", text: "home", position: "right", offset: 6 })
37979
+ ] }, 1),
37980
+ /* @__PURE__ */ jsx(
37981
+ back_button_default,
37982
+ {
37983
+ size: "sm",
37984
+ clx: "z-10 absolute top-14 left-6 !px-0 aspect-square rounded-full hover:!bg-level-3 back-button-tooltip-class ",
37985
+ onBack: onLeave
37986
+ }
37987
+ ),
37988
+ /* @__PURE__ */ jsx(tooltip_default, { select: ".back-button-tooltip-class", text: "back", position: "right", offset: 5 }),
37989
+ /* @__PURE__ */ jsxs(Box, { className: cn(
37990
+ "w-full grow min-h-0 max-w-[550px] mx-auto flex flex-col gap-3",
37991
+ cmmc.cartItems.length > 4 ? "justify-between" : "justify-start gap-10 pt-10"
37992
+ ), children: [
37993
+ /* @__PURE__ */ jsx(desktop_bag_carousel_default, { className: "grow-0 h-[260px] w-[360px] lg:w-[420px] mx-auto -mt-8", constrainTo: { w: 250, h: 250 } }),
37994
+ /* @__PURE__ */ jsx(
37995
+ CartPanel,
37996
+ {
37997
+ className: "w-full border-none p-0",
37998
+ itemClx: "mb-2",
37999
+ totalClx: "sticky bottom-0 bg-background",
38000
+ listClx: "pr-3",
38001
+ scrollAfter: 4,
38002
+ scrollHeightClx: "min-h-[50vh] grow",
38003
+ showPromoCode: true,
38004
+ showShipping: true,
38005
+ selectItems: true
38006
+ }
38007
+ )
38008
+ ] }, 2)
38009
+ ] }) }, 1),
38010
+ /* @__PURE__ */ jsxs("div", { className: "w-full h-full flex flex-col bg-level-1 min-h-screen justify-between", children: [
38011
+ /* @__PURE__ */ jsx(ScrollArea$1, { className: "w-full flex flex-row items-start justify-start overflow-y-auto", children: /* @__PURE__ */ jsxs("div", { className: "h-full w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0", children: [
38012
+ /* @__PURE__ */ jsxs("div", { className: "bg-level-1 sticky h-[80px] bg-[#aaaaff] w-full top-0 flex justify-center items-end", children: [
38013
+ /* @__PURE__ */ jsx(widget_default, { noLogin: true, className: "hidden md:flex absolute top-4 right-4 " }),
38014
+ /* @__PURE__ */ jsx(StepIndicator, { dotSizeRem: 1.35, steps: stepNames, currentStep: step, className: "gap-2 text-base w-pr-70" })
38015
+ ] }, 1),
38016
+ /* @__PURE__ */ jsx("div", { className: "w-full max-w-[550px] mx-auto py-8", children }, 2)
38017
+ ] }) }),
38018
+ /* @__PURE__ */ jsx("div", { className: "w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0", children: /* @__PURE__ */ jsx("div", { className: "w-full max-w-[550px] mx-auto flex flex-col items-center", children: /* @__PURE__ */ jsx(policy_links_default, { clx: "w-full" }) }) })
38019
+ ] }, 2)
38020
+ ] });
38021
+ });
38022
+ var desktop_cp_default = DesktopCheckoutPanel;
38023
+ var CartAccordian = observer$1(({
38024
+ icon,
38025
+ clx = "",
38026
+ panelClx = "",
38027
+ triggerClx = "",
38028
+ scrollAfter,
38029
+ scrollHeightClx
38030
+ }) => {
38031
+ const cmmc = useCommerce();
38032
+ return /* @__PURE__ */ jsx(Accordion, { type: "single", collapsible: true, className: clx, children: /* @__PURE__ */ jsxs(AccordionItem$1, { value: "cart", className: "w-full border-b-0", children: [
38033
+ /* @__PURE__ */ jsxs(AccordionTrigger, { className: "!no-underline group flex justify-between ", children: [
38034
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-0 items-center", children: [
38035
+ icon,
38036
+ /* @__PURE__ */ jsxs("h5", { className: "text-sm sm:text-xl grow", children: [
38037
+ /* @__PURE__ */ jsx("span", { className: "group-data-[state=open]:hidden", children: "Order Total:" }),
38038
+ /* @__PURE__ */ jsx("span", { className: "group-data-[state=closed]:hidden", children: "Your Order" })
38039
+ ] })
38040
+ ] }),
38041
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-1 items-center", children: [
38042
+ /* @__PURE__ */ jsx("h5", { className: "text-sm sm:text-xl grow truncate", children: formatCurrencyValue(cmmc.promoAppliedCartTotal) }),
38043
+ /* @__PURE__ */ jsx(ChevronRight, { style: css("h-5 w-5 -mr-2 shrink-0 transition-transform duration-200 group-data-[state=open]:rotate-90") })
38044
+ ] })
38045
+ ] }),
38046
+ /* @__PURE__ */ jsx(AccordionContent, { className: "data-[state=open]:mb-4", children: /* @__PURE__ */ jsx(
38047
+ CartPanel,
38048
+ {
38049
+ className: cn("w-full", panelClx),
38050
+ scrollAfter,
38051
+ scrollHeightClx,
38052
+ listClx: "mt-0",
38053
+ itemClx: "mt-0.5 mb-0",
38054
+ totalClx: "sticky px-1 pr-2 border-t -bottom-[1px] bg-background",
38055
+ showShipping: true,
38056
+ showPromoCode: true
38057
+ }
38058
+ ) })
38059
+ ] }) });
38060
+ });
38061
+ var cart_accordian_default = CartAccordian;
38062
+ var MobileCheckoutPanel = ({
38063
+ step,
38064
+ stepNames,
38065
+ onLeave,
38066
+ clx = "",
38067
+ children
38068
+ }) => /* @__PURE__ */ jsxs(Box, { className: cn("bg-background flex flex-col justify-start px-4 pt-[101px]", clx), children: [
38069
+ /* @__PURE__ */ jsxs("div", { className: "fixed z-11 top-0 h-[45px] w-full flex justify-between items-stretch bg-background", children: [
38070
+ /* @__PURE__ */ jsxs("div", { className: "flex items-stretch gap-1 grow-0", children: [
38071
+ /* @__PURE__ */ jsx(
38072
+ back_button_default,
38073
+ {
38074
+ size: "sm",
38075
+ clx: "-ml-5 !px-0 aspect-square h-full rounded-full active:!bg-level-3 ",
38076
+ onBack: onLeave
38077
+ }
38078
+ ),
38079
+ /* @__PURE__ */ jsx(Logo, { size: "sm", variant: "wordmark", href: "/", onClick: onLeave, outerClx: "-ml-2" })
38080
+ ] }),
38081
+ /* @__PURE__ */ jsx(
38082
+ StepIndicator,
38083
+ {
38084
+ dotSizeRem: 1,
38085
+ steps: stepNames,
38086
+ currentStep: step,
38087
+ className: "relative grow mx-2 top-[14px] text-xs font-semibold w-full"
38088
+ }
38089
+ ),
38090
+ /* @__PURE__ */ jsx("div", { className: "w-[72px] grow-0 shrink-0 flex items-center justify-center", children: /* @__PURE__ */ jsx(widget_default, { noLogin: true, className: "" }) })
38091
+ ] }),
38092
+ /* @__PURE__ */ jsx(
38093
+ cart_accordian_default,
38094
+ {
38095
+ icon: /* @__PURE__ */ jsx(
38096
+ bag_button_default,
38097
+ {
38098
+ animateOnHover: false,
38099
+ showIfEmpty: true,
38100
+ size: "sm",
38101
+ className: "mr-1 relative w-5 h-6 sm:w-6 sm:h-7",
38102
+ iconClx: "fill-foreground"
38103
+ }
38104
+ ),
38105
+ clx: "flex items-center justify-center w-full",
38106
+ triggerClx: "bg-background fixed z-11 top-[45px] left-0 right-0 !m-0 px-4",
38107
+ panelClx: "!py-0",
38108
+ scrollAfter: 3,
38109
+ scrollHeightClx: "h-[385px]"
38110
+ }
38111
+ ),
38112
+ children,
38113
+ /* @__PURE__ */ jsx(policy_links_default, { clx: "mt-auto mb-3 pt-2" })
38114
+ ] });
38115
+ var mobile_cp_default = MobileCheckoutPanel;
38116
+ var STEPS = [
38117
+ {
38118
+ name: "payment",
38119
+ Comp: PaymentStepForm
38120
+ },
38121
+ {
38122
+ name: "delivery",
38123
+ Comp: ShippingStepForm
38124
+ },
38125
+ {
38126
+ name: "done",
38127
+ label: "Done!",
38128
+ Comp: thank_you_default
38129
+ }
38130
+ ];
38131
+ var STEP_NAMES = STEPS.map((s) => s.label ? s.label : capitalize(s.name));
38132
+ var CheckoutPanel = ({
38133
+ clx = ""
38134
+ }) => {
38135
+ const cmmc = useCommerce();
38136
+ if (!cmmc) {
38137
+ console.log("CHECKOUT PANEL: cmmc svc undefined!");
38138
+ return /* @__PURE__ */ jsx(Fragment, {});
38139
+ }
38140
+ const [stepIndex, setStepIndex] = useState(0);
38141
+ const [orderId, setOrderId] = useState(void 0);
38142
+ const setStep = (name) => {
38143
+ if (name === "first") {
38144
+ setStepIndex(0);
38145
+ } else if (name === "last") {
38146
+ setStepIndex(STEPS.length - 1);
38147
+ } else if (name === "next") {
38148
+ if (stepIndex <= STEPS.length - 2) {
38149
+ setStepIndex(stepIndex + 1);
38150
+ } else {
38151
+ throw new Error("CheckoutPanel.setStep(): Attempting to advance past last step!");
38152
+ }
38153
+ } else {
38154
+ const indexFound = STEPS.findIndex((el) => el.name === name);
38155
+ if (indexFound !== -1) {
38156
+ setStepIndex(indexFound);
38157
+ } else {
38158
+ throw new Error("CheckoutPanel.setStep(): Step named " + name + " not found!");
38159
+ }
38160
+ }
38161
+ };
38162
+ const _close = () => {
38163
+ setStep("first");
38164
+ };
38165
+ const desktopElement = useRef(null);
38166
+ const [layout2, setLayout] = useState(void 0);
38167
+ useLayoutEffect(() => {
38168
+ const checkLayout = () => {
38169
+ setLayout(!!desktopElement.current?.offsetParent ? "desktop" : "mobile");
38170
+ };
38171
+ checkLayout();
38172
+ window.addEventListener("resize", checkLayout);
38173
+ return () => {
38174
+ window.removeEventListener("resize", checkLayout);
38175
+ };
38176
+ }, []);
38177
+ const StepToRender = STEPS[stepIndex].Comp;
38178
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
38179
+ /* @__PURE__ */ jsxs(
38180
+ desktop_cp_default,
38181
+ {
38182
+ clx: cn("h-full", clx, "hidden md:flex"),
38183
+ onLeave: _close,
38184
+ step: stepIndex,
38185
+ stepNames: STEP_NAMES,
38186
+ children: [
38187
+ /* @__PURE__ */ jsx("div", { ref: desktopElement }),
38188
+ layout2 === "desktop" && /* @__PURE__ */ jsx(StepToRender, { onDone: () => {
38189
+ setStep("next");
38190
+ }, orderId, setOrderId })
38191
+ ]
38192
+ }
38193
+ ),
38194
+ /* @__PURE__ */ jsx(
38195
+ mobile_cp_default,
38196
+ {
38197
+ clx: cn("w-full h-full overflow-y-auto", clx, "md:hidden"),
38198
+ onLeave: _close,
38199
+ step: stepIndex,
38200
+ stepNames: STEP_NAMES,
38201
+ children: layout2 === "mobile" && /* @__PURE__ */ jsx(StepToRender, { onDone: () => {
38202
+ setStep("next");
38203
+ }, orderId, setOrderId })
38204
+ }
38205
+ )
38206
+ ] });
38207
+ };
38208
+ var checkout_panel_default = CheckoutPanel;
38209
+ var LoginPanel = ({
38210
+ close,
38211
+ className: className2 = "",
38212
+ reviews
38213
+ }) => {
38214
+ return /* @__PURE__ */ jsxs(Box, { className: cn("grid grid-cols-1 md:grid-cols-2", className2), children: [
38215
+ /* @__PURE__ */ jsx("div", { className: "hidden md:flex w-full h-full bg-[radial-gradient(circle_at_24.1%_68.8%_,_rgba(15,14,14,0)_,_rgba(9,9,9,99.4))] flex-row items-end justify-end overflow-y-auto min-h-screen", children: /* @__PURE__ */ jsx("div", { className: "h-full w-full max-w-[750px] px-8 pt-0", children: /* @__PURE__ */ jsxs("div", { className: "h-full w-full max-w-[550px] mx-auto flex flex-col justify-between min-h-screen py-10", children: [
38216
+ /* @__PURE__ */ jsx(
38217
+ Button$1,
38218
+ {
38219
+ variant: "ghost",
38220
+ onClick: close,
38221
+ className: "w-fit !min-w-0 p-2",
38222
+ children: /* @__PURE__ */ jsx(Logo, { size: "md", variant: "wordmark" })
38223
+ }
38224
+ ),
38225
+ /* @__PURE__ */ jsx(
38226
+ Carousel,
38227
+ {
38228
+ options: { align: "center", loop: true, autoplay: 5e3 },
38229
+ className: "w-full",
38230
+ children: /* @__PURE__ */ jsx(CarouselContent, { children: reviews.map(({ text, author, href }, index) => /* @__PURE__ */ jsx(CarouselItem, { children: /* @__PURE__ */ jsxs(Link5, { href, className: "flex flex-col gap-3 cursor-pointer", children: [
38231
+ /* @__PURE__ */ jsxs("p", { children: [
38232
+ "\u201C",
38233
+ text,
38234
+ "\u201C"
38235
+ ] }),
38236
+ /* @__PURE__ */ jsx("p", { className: "text-sm", children: author })
38237
+ ] }) }, index)) })
38238
+ }
38239
+ )
38240
+ ] }) }) }),
38241
+ /* @__PURE__ */ jsx("div", { className: "w-full h-full bg-background flex flex-row items-center", children: /* @__PURE__ */ jsx("div", { className: "w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0 text-center", children: /* @__PURE__ */ jsxs("div", { className: "relative h-full w-full max-w-[400px] mx-auto flex flex-col gap-4 items-center py-10", children: [
38242
+ /* @__PURE__ */ jsx(
38243
+ Button$1,
38244
+ {
38245
+ variant: "ghost",
38246
+ onClick: close,
38247
+ className: "block md:hidden absolute rounded-full p-2 left-0 h-auto hover:bg-background",
38248
+ children: /* @__PURE__ */ jsx(LuxLogo, { variant: "white", size: 20 })
38249
+ }
38250
+ ),
38251
+ /* @__PURE__ */ jsx(login_default, { className: "w-full max-w-sm" }),
38252
+ /* @__PURE__ */ jsx("p", { className: "text-sm opacity-50", children: legal.map(({ title: title2, href }, index) => /* @__PURE__ */ jsxs(React64__default.Fragment, { children: [
38253
+ index > 0 && " \xB7 ",
38254
+ /* @__PURE__ */ jsx(Link5, { href, className: "underline", children: title2 })
38255
+ ] }, href)) })
38256
+ ] }) }) })
38257
+ ] });
38258
+ };
38259
+ var login_panel_default = LoginPanel;
38260
+
38261
+ // src/site/next/analytics/fpixel.ts
38262
+ var FB_PIXEL_ID = process.env.NEXT_PUBLIC_FACEBOOK_PIXEL_ID || "";
38263
+ var pageview = () => {
38264
+ window.fbq("track", "PageView");
38265
+ };
38266
+ var FacebookPixel = () => {
38267
+ const [loaded, setLoaded] = useState(false);
38268
+ const pathname = usePathname();
38269
+ useEffect(() => {
38270
+ if (!loaded) return;
38271
+ pageview();
38272
+ }, [pathname, loaded]);
38273
+ return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
38274
+ Script,
38275
+ {
38276
+ id: "fb-pixel",
38277
+ strategy: "afterInteractive",
38278
+ onLoad: () => setLoaded(true),
38279
+ dangerouslySetInnerHTML: {
38280
+ __html: `
38281
+ !function(f,b,e,v,n,t,s)
38282
+ {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
38283
+ n.callMethod.apply(n,arguments):n.queue.push(arguments)};
38284
+ if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
38285
+ n.queue=[];t=b.createElement(e);t.async=!0;
38286
+ t.src=v;s=b.getElementsByTagName(e)[0];
38287
+ s.parentNode.insertBefore(t,s)}(window, document,'script',
38288
+ 'https://connect.facebook.net/en_US/fbevents.js');
38289
+ fbq('init', ${FB_PIXEL_ID});
38290
+ `
38291
+ }
38292
+ }
38293
+ ) });
38294
+ };
38295
+ var Analytics = () => /* @__PURE__ */ jsxs(Fragment, { children: [
38296
+ /* @__PURE__ */ jsx(FacebookPixel, {}),
38297
+ /* @__PURE__ */ jsx(GoogleAnalytics, { gaId: process.env.NEXT_PUBLIC_GA_MEASUREMENT_ID ?? "" })
38298
+ ] });
38299
+ var Tooltip6 = ({
38300
+ select,
38301
+ text,
38302
+ clx = "",
38303
+ position = "bottom",
38304
+ offset = 2
38305
+ }) => /* @__PURE__ */ jsx(
38306
+ Tooltip$3,
38307
+ {
38308
+ anchorSelect: select,
38309
+ noArrow: true,
38310
+ opacity: 1,
38311
+ content: text,
38312
+ place: position,
38313
+ offset,
38314
+ delayShow: 100,
38315
+ delayHide: 100,
38316
+ className: "!opacity-100 !bg-level-2 border rounded-[3px] !px-1.5 !py-1 z-floating" + clx
38317
+ }
38318
+ );
38319
+ var tooltip_default = Tooltip6;
36424
38320
 
36425
- export { AIActions, AIAgents, AIAssistant, AIChat, AICode, AIModelSelectorNavigationBar, AIModels, AIPlayground, AITools, AIVision, AIVoice, AIVoiceSettings, AI_MODELS, AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot, AdvancedNavigationBar, Alert, Android, AnimatedBackground, AnimatedBackgroundPresets, AnimatedBeam, AnimatedCounter, AnimatedCursor, AnimatedIcon, AnimatedIconPresets, AnimatedList, AnimatedListPresets, AnimatedNumber, AnimatedTestimonials, AnimatedText, AnimatedTooltip, Announcement, AppNav, AppProvider, AppSwitcherNavigationBar, AppleCardsCarousel, AppleHelloEffect, AttachmentPreview, AuthCallback, AuthProvider, AutoListenToggle, Avatar, AvatarGroup, Badge, BankAlert, BankAlertText, BankButton, BankButtonText, BankCard, BankDivider, BankField, BankHeading, BankInput, BankPage, BankPinBox, BankText, Banner, BreadcrumbAndFiltersNavigationBar, BreadcrumbNavigationBar, BreathingPulse, Button, Button3D, Button3DLoading, Button3DPreset, ButtonGroup, ButtonGroupRadio, CALLBACK_PATH, Calendar, Card3D, Card3DContent, Card3DDescription, Card3DFooter, Card3DHeader, Card3DTitle, Carousel3D, Carousel3DCard, Carousel3DCardContent, Carousel3DCardDescription, Carousel3DCardImage, Carousel3DCardTitle, CenteredLogoNavigationBar, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatMessageComponent as ChatMessage, Checkbox2 as Checkbox, CheckboxGroup2 as CheckboxGroup, Choicebox, CloseButton, CodeBlock, CodeCompare, CodeDiff, CodeEditor, CodeExplorer, CodePreview, CodeSnippet, CodeTabs, CodeTerminal, CollaborationNavigationBar, CollapsibleDetails, CollapsibleList, ColorModeProvider, ColorPicker, Combobox, CommunicationNavigationBar, Comparison, ContextSwitcherNavigationBar, CreditCard, Cursor, CustomInstructions, DEFAULT_ORG, DashboardNavigationBar, DialogActionTrigger, DialogBackdrop, DialogBody, DialogCloseTrigger, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogStack, DialogTitle, DialogTrigger, DirectionProvider, Dock, DockItem, DrawerActionTrigger, DrawerBody, DrawerCloseTrigger, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerRoot, DrawerTitle, DrawerTrigger, Dropzone, ECommerceNavigationBar, Editor3 as Editor, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, EmptyTitle, ExpirationSelector, Field, Gantt, GreeksDisplay, Grid3D, Grid3DAuto, Grid3DCard, Grid3DPreset, GridPattern, GridPatternPresets, Heading, HeartbeatPulse, IAM_PAGE_SIZE, IPhone15Pro, IamError, IconButton, IconNavigationBar, IdentityProvider, Image2 as Image, ImageCrop, ImageZoom, InlineCode, Input, InputGroup, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, KanbanBoard, Kbd, KbdGroup, LUX_BRAND, LanguageSelector, LimelightNav, LimelightNavNavigationBar, Link, LinkBox, LinkExternalIcon, LinkOverlay, List2 as List, ListItem, LoadingBar, Magnetic, Marquee, Marquee3D, Marquee3DFloating, Marquee3DPreset, MenuArrow, MenuCheckboxItem, MenuContent, MenuDock, MenuItem, MenuItemGroup, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuSeparator, MenuTrigger, MenuTriggerItem, Menubar, MenubarMenu, MenubarTrigger, MessageDock, MiniCalendar, MinimalTiptap, ModelViewer3D, ModelViewer3DPreset, MotionHighlight, MusicPlayer, NARROW_PX, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NoiseCancellationToggle, OptionChain, OptionPositionCard, OrderEntry, OrdersHistory, OrgSwitcher, PARS_GOLD, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, ParticlesBackground2 as ParticlesBackground, PersonalitySelector, Pill, Pin3D, PinInput, PitchControl, PixelImage, PnlDiagram, PopoverArrow, PopoverBody, PopoverCloseTrigger, PopoverCloseTriggerWrapper, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverRoot, PopoverTitle, PopoverTrigger, PositionsList, Progress, ProgressCircleRing, ProgressCircleRoot, ProgressCircleValueText, ProjectSwitcher, PulseAnimation, PulseDot, PulsePresets, QRCode, Radio2 as Radio, RadioGroup2 as RadioGroup, Rating, RelativeTime, ResizableHandle, ResizablePanel, ResizablePanelGroup, RevealAnimation, RevealGroup, RevealPresets, Safari, Sandbox, Scene3D, Scene3DPreset, ScrollReveal, SearchAndToggleNavigationBar, Select, SelectAsync, SelectClearTrigger, SelectContent, SelectControl, SelectItem, SelectItemGroup, SelectItemText, SelectLabel, SelectRoot, SelectValueText, Separator, SettingsMenu, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SimpleNavigationBar, Skeleton, SkeletonCircle, SkeletonText, Slider, SpeedControl, Status, StatusDashboardNavigationBar, StrategyBuilder, Switch2 as Switch, Switcher, TOUCH_PX, TableBody, TableCaption, TableCell, TableColumnHeader, TableColumnHeaderSortable, TableFooter, TableHeader, TableHeaderSticky, TableRoot, TableRow, TableScrollWrapper, TabsContent, TabsCounter, TabsList, TabsRoot, TabsTrigger, Tag, Tags, TeamSwitcherNavigationBar, Terminal3 as Terminal, Text3D, Text3DAnimated, Text3DFloating, Text3DPreset, Textarea, Ticker, Timeline, Toaster, Toggle, Tooltip, TradingPanel, TwoTierNavigationBar, TypingIndicator, UnderlineNavigationBar, UserMenu, VoiceSelector, WakeWordInput, YouTubePipPlayer, bankColors, config, createListCollection, currentHost, lux_config_default as guiConfig, iam, iamBase, initials, luxThemes, orgIdentity, ORGS as orgs, resolveWhiteLabel, toaster, useAccordion, useBelow, useColorMode, useColorModeValue, useIdentity, useIsNarrow, useIsTouch, useWhiteLabel };
38321
+ export { AIActions, AIAgents, AIAssistant, AIChat, AICode, AIModelSelectorNavigationBar, AIModels, AIPlayground, AITools, AIVision, AIVoice, AIVoiceSettings, AI_MODELS, access_code_input_default as AccessCodeInput, AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot, AdvancedNavigationBar, Alert, Analytics, Android, AnimatedBackground, AnimatedBackgroundPresets, AnimatedBeam, AnimatedCounter, AnimatedCursor, AnimatedIcon, AnimatedIconPresets, AnimatedList, AnimatedListPresets, AnimatedNumber, AnimatedTestimonials, AnimatedText, AnimatedTooltip, Announcement, AppNav, AppProvider, AppSwitcherNavigationBar, AppleCardsCarousel, AppleHelloEffect, AttachmentPreview, AuthCallback, AuthProvider, AutoListenToggle, Avatar, AvatarGroup, back_button_default as BackButton, Badge, BankAlert, BankAlertText, BankButton, BankButtonText, BankCard, BankDivider, BankField, BankHeading, BankInput, BankPage, BankPinBox, BankText, Banner, BreadcrumbAndFiltersNavigationBar, BreadcrumbNavigationBar, BreathingPulse, Button, Button3D, Button3DLoading, Button3DPreset, ButtonGroup, ButtonGroupRadio, buy_button_default as BuyButton, drawer_default as BuyDrawer, CALLBACK_PATH, Calendar, Card3D, Card3DContent, Card3DDescription, Card3DFooter, Card3DHeader, Card3DTitle, Carousel3D, Carousel3DCard, Carousel3DCardContent, Carousel3DCardDescription, Carousel3DCardImage, Carousel3DCardTitle, CenteredLogoNavigationBar, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatMessageComponent as ChatMessage, chat_widget_default as ChatWidget, Checkbox2 as Checkbox, CheckboxGroup2 as CheckboxGroup, checkout_button_default as CheckoutButton, checkout_panel_default as CheckoutPanel, Choicebox, CloseButton, CodeBlock, CodeCompare, CodeDiff, CodeEditor, CodeExplorer, CodePreview, CodeSnippet, CodeTabs, CodeTerminal, CollaborationNavigationBar, CollapsibleDetails, CollapsibleList, ColorModeProvider, ColorPicker, Combobox, CommunicationNavigationBar, Comparison, contact_dialog_default as ContactDialog, ContextSwitcherNavigationBar, copyright_default as Copyright, CreditCard, Cursor, CustomInstructions, DEFAULT_ORG, DashboardNavigationBar, DialogActionTrigger, DialogBackdrop, DialogBody, DialogCloseTrigger, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogStack, DialogTitle, DialogTrigger, DirectionProvider, Dock, DockItem, DrawerActionTrigger, DrawerBody, DrawerCloseTrigger, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, drawer_margin_default as DrawerMargin, DrawerRoot, DrawerTitle, DrawerTrigger, Dropzone, ECommerceNavigationBar, Editor3 as Editor, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, EmptyTitle, ExpirationSelector, Field, footer_default as Footer, Gantt, GreeksDisplay, Grid3D, Grid3DAuto, Grid3DCard, Grid3DPreset, GridPattern, GridPatternPresets, header_default as Header, Heading, HeartbeatPulse, IAM_PAGE_SIZE, IPhone15Pro, IamError, IconButton, IconNavigationBar, IdentityProvider, Image2 as Image, ImageCrop, ImageZoom, InlineCode, Input, InputGroup, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, KanbanBoard, Kbd, KbdGroup, LUX_BRAND, LanguageSelector, LimelightNav, LimelightNavNavigationBar, Link, LinkBox, LinkExternalIcon, LinkOverlay, List2 as List, ListItem, LoadingBar, login_default as Login, login_panel_default as LoginPanel, Logo, Magnetic, main_default as Main, Marquee, Marquee3D, Marquee3DFloating, Marquee3DPreset, MenuArrow, MenuCheckboxItem, MenuContent, MenuDock, MenuItem, MenuItemGroup, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuSeparator, MenuTrigger, MenuTriggerItem, Menubar, MenubarMenu, MenubarTrigger, MessageDock, MiniCalendar, wrapper_default as MiniChart, MinimalTiptap, ModelViewer3D, ModelViewer3DPreset, MotionHighlight, MusicPlayer, NARROW_PX, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NoiseCancellationToggle, not_found_default as NotFound, OptionChain, OptionPositionCard, OrderEntry, OrdersHistory, OrgSwitcher, PARS_GOLD, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, ParticlesBackground2 as ParticlesBackground, PersonalitySelector, Pill, Pin3D, PinInput, PitchControl, PixelImage, PnlDiagram, PopoverArrow, PopoverBody, PopoverCloseTrigger, PopoverCloseTriggerWrapper, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverRoot, PopoverTitle, PopoverTrigger, PositionsList, Progress, ProgressCircleRing, ProgressCircleRoot, ProgressCircleValueText, ProjectSwitcher, PulseAnimation, PulseDot, PulsePresets, QRCode, Radio2 as Radio, RadioGroup2 as RadioGroup, Rating, RelativeTime, ResizableHandle, ResizablePanel, ResizablePanelGroup, RevealAnimation, RevealGroup, RevealPresets, Safari, Sandbox, Scene3D, Scene3DPreset, ScrollReveal, SearchAndToggleNavigationBar, Select, SelectAsync, SelectClearTrigger, SelectContent, SelectControl, SelectItem, SelectItemGroup, SelectItemText, SelectLabel, SelectRoot, SelectValueText, Separator, SettingsMenu, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SimpleNavigationBar, Skeleton, SkeletonCircle, SkeletonText, Slider, SpeedControl, Status, StatusDashboardNavigationBar, StrategyBuilder, Switch2 as Switch, Switcher, TOUCH_PX, TableBody, TableCaption, TableCell, TableColumnHeader, TableColumnHeaderSortable, TableFooter, TableHeader, TableHeaderSticky, TableRoot, TableRow, TableScrollWrapper, TabsContent, TabsCounter, TabsList, TabsRoot, TabsTrigger, Tag, Tags, TeamSwitcherNavigationBar, Terminal3 as Terminal, Text3D, Text3DAnimated, Text3DFloating, Text3DPreset, Textarea, Ticker, Timeline, Toaster, Toggle, Tooltip, TradingPanel, TwoTierNavigationBar, TypingIndicator, UnderlineNavigationBar, UserMenu, VoiceSelector, WakeWordInput, YouTubePipPlayer, bankColors, config, createListCollection, currentHost, lux_config_default as guiConfig, iam, iamBase, initials, luxThemes, orgIdentity, ORGS as orgs, resolveWhiteLabel, toaster, useAccordion, useBelow, useColorMode, useColorModeValue, useIdentity, useIsNarrow, useIsTouch, useWhiteLabel };