@luxfi/ui 8.1.0 → 8.2.0

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 (656) hide show
  1. package/dist/3d-button.d.ts +5 -5
  2. package/dist/3d-button.d.ts.map +1 -1
  3. package/dist/3d-grid.d.ts +1 -1
  4. package/dist/3d-grid.d.ts.map +1 -1
  5. package/dist/3d-marquee.d.ts +5 -5
  6. package/dist/3d-marquee.d.ts.map +1 -1
  7. package/dist/3d-model-viewer.d.ts.map +1 -1
  8. package/dist/3d-scene.d.ts +2 -2
  9. package/dist/3d-scene.d.ts.map +1 -1
  10. package/dist/3d-text.d.ts +5 -5
  11. package/dist/3d-text.d.ts.map +1 -1
  12. package/dist/accordion.d.ts.map +1 -1
  13. package/dist/advanced-chart.d.ts +1 -1
  14. package/dist/advanced-chart.d.ts.map +1 -1
  15. package/dist/ai-agents.d.ts.map +1 -1
  16. package/dist/ai-playground.d.ts +2 -1
  17. package/dist/ai-playground.d.ts.map +1 -1
  18. package/dist/ai-voice.d.ts +8 -29
  19. package/dist/ai-voice.d.ts.map +1 -1
  20. package/dist/android.d.ts.map +1 -1
  21. package/dist/animated-background.d.ts +7 -7
  22. package/dist/animated-background.d.ts.map +1 -1
  23. package/dist/animated-cursor.d.ts +2 -1
  24. package/dist/animated-cursor.d.ts.map +1 -1
  25. package/dist/animated-icon.d.ts +7 -7
  26. package/dist/animated-icon.d.ts.map +1 -1
  27. package/dist/animated-list.d.ts +7 -7
  28. package/dist/animated-list.d.ts.map +1 -1
  29. package/dist/animated-number.d.ts +2 -2
  30. package/dist/animated-number.d.ts.map +1 -1
  31. package/dist/animated-text.d.ts +1 -1
  32. package/dist/animated-text.d.ts.map +1 -1
  33. package/dist/apple-cards-carousel.d.ts +1 -1
  34. package/dist/apple-cards-carousel.d.ts.map +1 -1
  35. package/dist/auth.d.ts.map +1 -1
  36. package/dist/bank.d.ts +31 -31
  37. package/dist/bank.d.ts.map +1 -1
  38. package/dist/banner.d.ts.map +1 -1
  39. package/dist/calendar.d.ts +1 -1
  40. package/dist/calendar.d.ts.map +1 -1
  41. package/dist/chart.d.ts +4 -4
  42. package/dist/chart.d.ts.map +1 -1
  43. package/dist/chrome.d.ts.map +1 -1
  44. package/dist/code-block.d.ts.map +1 -1
  45. package/dist/code-compare.d.ts.map +1 -1
  46. package/dist/code-diff.d.ts.map +1 -1
  47. package/dist/code-explorer.d.ts.map +1 -1
  48. package/dist/code-preview.d.ts.map +1 -1
  49. package/dist/code-snippet.d.ts.map +1 -1
  50. package/dist/code-terminal.d.ts.map +1 -1
  51. package/dist/collapsible.d.ts +2 -2
  52. package/dist/collapsible.d.ts.map +1 -1
  53. package/dist/color-mode.d.ts +1 -1
  54. package/dist/color-mode.d.ts.map +1 -1
  55. package/dist/combobox.d.ts +2 -1
  56. package/dist/combobox.d.ts.map +1 -1
  57. package/dist/company-profile.d.ts +1 -1
  58. package/dist/company-profile.d.ts.map +1 -1
  59. package/dist/crypto-screener.d.ts +1 -1
  60. package/dist/crypto-screener.d.ts.map +1 -1
  61. package/dist/dialog.d.ts +2 -2
  62. package/dist/direction.d.ts +1 -1
  63. package/dist/direction.d.ts.map +1 -1
  64. package/dist/drawer.d.ts +6 -6
  65. package/dist/drawer.d.ts.map +1 -1
  66. package/dist/empty.d.ts +6 -6
  67. package/dist/empty.d.ts.map +1 -1
  68. package/dist/financials.d.ts +1 -1
  69. package/dist/financials.d.ts.map +1 -1
  70. package/dist/forex-screener.d.ts +1 -1
  71. package/dist/forex-screener.d.ts.map +1 -1
  72. package/dist/grid-pattern.d.ts.map +1 -1
  73. package/dist/hooks/use-mobile.cjs +22 -0
  74. package/dist/hooks/use-mobile.d.ts.map +1 -1
  75. package/dist/hooks/use-mobile.js +17 -0
  76. package/dist/iam.d.ts.map +1 -1
  77. package/dist/identity.d.ts.map +1 -1
  78. package/dist/ink.d.ts.map +1 -1
  79. package/dist/input-otp.d.ts +6 -6
  80. package/dist/input-otp.d.ts.map +1 -1
  81. package/dist/input.d.ts +7 -7
  82. package/dist/input.d.ts.map +1 -1
  83. package/dist/item.d.ts +10 -10
  84. package/dist/item.d.ts.map +1 -1
  85. package/dist/kanban.d.ts +2 -1
  86. package/dist/kanban.d.ts.map +1 -1
  87. package/dist/kbd.d.ts +2 -2
  88. package/dist/kbd.d.ts.map +1 -1
  89. package/dist/link.d.ts +1 -1
  90. package/dist/link.d.ts.map +1 -1
  91. package/dist/lux.config.d.ts +88 -88
  92. package/dist/lux.config.d.ts.map +1 -1
  93. package/dist/market-overview.d.ts +1 -1
  94. package/dist/market-overview.d.ts.map +1 -1
  95. package/dist/menu.d.ts.map +1 -1
  96. package/dist/menubar.d.ts +3 -3
  97. package/dist/menubar.d.ts.map +1 -1
  98. package/dist/music-player.d.ts +2 -1
  99. package/dist/music-player.d.ts.map +1 -1
  100. package/dist/news-timeline.d.ts +1 -1
  101. package/dist/news-timeline.d.ts.map +1 -1
  102. package/dist/order-entry.d.ts +1 -1
  103. package/dist/order-entry.d.ts.map +1 -1
  104. package/dist/orders-history.d.ts +1 -1
  105. package/dist/orders-history.d.ts.map +1 -1
  106. package/dist/pagination.d.ts +20 -20
  107. package/dist/pagination.d.ts.map +1 -1
  108. package/dist/particles-background.d.ts +2 -1
  109. package/dist/particles-background.d.ts.map +1 -1
  110. package/dist/pill.d.ts.map +1 -1
  111. package/dist/popover.d.ts.map +1 -1
  112. package/dist/positions-list.d.ts +1 -1
  113. package/dist/positions-list.d.ts.map +1 -1
  114. package/dist/progress-circle.d.ts.map +1 -1
  115. package/dist/progress.d.ts.map +1 -1
  116. package/dist/provider.d.ts.map +1 -1
  117. package/dist/pulse-animation.d.ts +10 -10
  118. package/dist/pulse-animation.d.ts.map +1 -1
  119. package/dist/radio.d.ts.map +1 -1
  120. package/dist/resizable.d.ts +3 -3
  121. package/dist/resizable.d.ts.map +1 -1
  122. package/dist/reveal-animation.d.ts +9 -9
  123. package/dist/reveal-animation.d.ts.map +1 -1
  124. package/dist/sidebar.d.ts +23 -23
  125. package/dist/sidebar.d.ts.map +1 -1
  126. package/dist/site/commerce/ui/conf.cjs +15 -0
  127. package/dist/site/commerce/ui/conf.d.ts +12 -0
  128. package/dist/site/commerce/ui/conf.d.ts.map +1 -0
  129. package/dist/site/commerce/ui/conf.js +13 -0
  130. package/dist/site/commerce/ui/context.cjs +280 -0
  131. package/dist/site/commerce/ui/context.d.ts +7 -0
  132. package/dist/site/commerce/ui/context.d.ts.map +1 -0
  133. package/dist/site/commerce/ui/context.js +276 -0
  134. package/dist/site/commerce/ui/store.cjs +205 -0
  135. package/dist/site/commerce/ui/store.d.ts +81 -0
  136. package/dist/site/commerce/ui/store.d.ts.map +1 -0
  137. package/dist/site/commerce/ui/store.js +203 -0
  138. package/dist/site/components/access-code-input.cjs +52 -0
  139. package/dist/site/components/access-code-input.d.ts +8 -0
  140. package/dist/site/components/access-code-input.d.ts.map +1 -0
  141. package/dist/site/components/access-code-input.js +50 -0
  142. package/dist/site/components/analytics.cjs +52 -0
  143. package/dist/site/components/analytics.d.ts +3 -0
  144. package/dist/site/components/analytics.d.ts.map +1 -0
  145. package/dist/site/components/analytics.js +46 -0
  146. package/dist/site/components/auth/callback.cjs +31 -0
  147. package/dist/site/components/auth/callback.d.ts +9 -0
  148. package/dist/site/components/auth/callback.d.ts.map +1 -0
  149. package/dist/site/components/auth/callback.js +29 -0
  150. package/dist/site/components/auth/login-panel.cjs +131 -0
  151. package/dist/site/components/auth/login-panel.css +4 -0
  152. package/dist/site/components/auth/login-panel.d.ts +12 -0
  153. package/dist/site/components/auth/login-panel.d.ts.map +1 -0
  154. package/dist/site/components/auth/login-panel.js +124 -0
  155. package/dist/site/components/auth/login.cjs +35 -0
  156. package/dist/site/components/auth/login.d.ts +13 -0
  157. package/dist/site/components/auth/login.d.ts.map +1 -0
  158. package/dist/site/components/auth/login.js +33 -0
  159. package/dist/site/components/auth/provider.cjs +20 -0
  160. package/dist/site/components/auth/provider.d.ts +6 -0
  161. package/dist/site/components/auth/provider.d.ts.map +1 -0
  162. package/dist/site/components/auth/provider.js +18 -0
  163. package/dist/site/components/auth/resume.cjs +15 -0
  164. package/dist/site/components/auth/resume.d.ts +4 -0
  165. package/dist/site/components/auth/resume.d.ts.map +1 -0
  166. package/dist/site/components/auth/resume.js +12 -0
  167. package/dist/site/components/auth/widget.cjs +63 -0
  168. package/dist/site/components/auth/widget.d.ts +13 -0
  169. package/dist/site/components/auth/widget.d.ts.map +1 -0
  170. package/dist/site/components/auth/widget.js +61 -0
  171. package/dist/site/components/back-button.cjs +36 -0
  172. package/dist/site/components/back-button.d.ts +17 -0
  173. package/dist/site/components/back-button.d.ts.map +1 -0
  174. package/dist/site/components/back-button.js +34 -0
  175. package/dist/site/components/chat-widget.cjs +67 -0
  176. package/dist/site/components/chat-widget.d.ts +12 -0
  177. package/dist/site/components/chat-widget.d.ts.map +1 -0
  178. package/dist/site/components/chat-widget.js +61 -0
  179. package/dist/site/components/commerce/bag-button.cjs +79 -0
  180. package/dist/site/components/commerce/bag-button.css +4 -0
  181. package/dist/site/components/commerce/bag-button.d.ts +16 -0
  182. package/dist/site/components/commerce/bag-button.d.ts.map +1 -0
  183. package/dist/site/components/commerce/bag-button.js +77 -0
  184. package/dist/site/components/commerce/buy-button.cjs +31 -0
  185. package/dist/site/components/commerce/buy-button.d.ts +11 -0
  186. package/dist/site/components/commerce/buy-button.d.ts.map +1 -0
  187. package/dist/site/components/commerce/buy-button.js +29 -0
  188. package/dist/site/components/commerce/checkout-button.cjs +116 -0
  189. package/dist/site/components/commerce/checkout-button.css +4 -0
  190. package/dist/site/components/commerce/checkout-button.d.ts +13 -0
  191. package/dist/site/components/commerce/checkout-button.d.ts.map +1 -0
  192. package/dist/site/components/commerce/checkout-button.js +114 -0
  193. package/dist/site/components/commerce/checkout-panel/cart-accordian.cjs +50 -0
  194. package/dist/site/components/commerce/checkout-panel/cart-accordian.d.ts +11 -0
  195. package/dist/site/components/commerce/checkout-panel/cart-accordian.d.ts.map +1 -0
  196. package/dist/site/components/commerce/checkout-panel/cart-accordian.js +48 -0
  197. package/dist/site/components/commerce/checkout-panel/checkout-panel-props.cjs +2 -0
  198. package/dist/site/components/commerce/checkout-panel/checkout-panel-props.d.ts +8 -0
  199. package/dist/site/components/commerce/checkout-panel/checkout-panel-props.d.ts.map +1 -0
  200. package/dist/site/components/commerce/checkout-panel/checkout-panel-props.js +1 -0
  201. package/dist/site/components/commerce/checkout-panel/desktop-bag-carousel.cjs +30 -0
  202. package/dist/site/components/commerce/checkout-panel/desktop-bag-carousel.d.ts +10 -0
  203. package/dist/site/components/commerce/checkout-panel/desktop-bag-carousel.d.ts.map +1 -0
  204. package/dist/site/components/commerce/checkout-panel/desktop-bag-carousel.js +28 -0
  205. package/dist/site/components/commerce/checkout-panel/desktop-cp.cjs +235 -0
  206. package/dist/site/components/commerce/checkout-panel/desktop-cp.css +132 -0
  207. package/dist/site/components/commerce/checkout-panel/desktop-cp.d.ts +5 -0
  208. package/dist/site/components/commerce/checkout-panel/desktop-cp.d.ts.map +1 -0
  209. package/dist/site/components/commerce/checkout-panel/desktop-cp.js +229 -0
  210. package/dist/site/components/commerce/checkout-panel/index.cjs +502 -0
  211. package/dist/site/components/commerce/checkout-panel/index.css +132 -0
  212. package/dist/site/components/commerce/checkout-panel/index.d.ts +6 -0
  213. package/dist/site/components/commerce/checkout-panel/index.d.ts.map +1 -0
  214. package/dist/site/components/commerce/checkout-panel/index.js +496 -0
  215. package/dist/site/components/commerce/checkout-panel/mobile-cp.cjs +295 -0
  216. package/dist/site/components/commerce/checkout-panel/mobile-cp.css +132 -0
  217. package/dist/site/components/commerce/checkout-panel/mobile-cp.d.ts +5 -0
  218. package/dist/site/components/commerce/checkout-panel/mobile-cp.d.ts.map +1 -0
  219. package/dist/site/components/commerce/checkout-panel/mobile-cp.js +289 -0
  220. package/dist/site/components/commerce/checkout-panel/policy-links.cjs +25 -0
  221. package/dist/site/components/commerce/checkout-panel/policy-links.d.ts +6 -0
  222. package/dist/site/components/commerce/checkout-panel/policy-links.d.ts.map +1 -0
  223. package/dist/site/components/commerce/checkout-panel/policy-links.js +19 -0
  224. package/dist/site/components/commerce/checkout-panel/steps-indicator.cjs +27 -0
  225. package/dist/site/components/commerce/checkout-panel/steps-indicator.d.ts +7 -0
  226. package/dist/site/components/commerce/checkout-panel/steps-indicator.d.ts.map +1 -0
  227. package/dist/site/components/commerce/checkout-panel/steps-indicator.js +25 -0
  228. package/dist/site/components/commerce/checkout-panel/thank-you.cjs +25 -0
  229. package/dist/site/components/commerce/checkout-panel/thank-you.d.ts +5 -0
  230. package/dist/site/components/commerce/checkout-panel/thank-you.d.ts.map +1 -0
  231. package/dist/site/components/commerce/checkout-panel/thank-you.js +19 -0
  232. package/dist/site/components/commerce/desktop-bag-popup.cjs +72 -0
  233. package/dist/site/components/commerce/desktop-bag-popup.css +4 -0
  234. package/dist/site/components/commerce/desktop-bag-popup.d.ts +8 -0
  235. package/dist/site/components/commerce/desktop-bag-popup.d.ts.map +1 -0
  236. package/dist/site/components/commerce/desktop-bag-popup.js +70 -0
  237. package/dist/site/components/commerce/drawer/index.cjs +361 -0
  238. package/dist/site/components/commerce/drawer/index.css +132 -0
  239. package/dist/site/components/commerce/drawer/index.d.ts +4 -0
  240. package/dist/site/components/commerce/drawer/index.d.ts.map +1 -0
  241. package/dist/site/components/commerce/drawer/index.js +359 -0
  242. package/dist/site/components/commerce/drawer/micro.cjs +230 -0
  243. package/dist/site/components/commerce/drawer/micro.css +4 -0
  244. package/dist/site/components/commerce/drawer/micro.d.ts +8 -0
  245. package/dist/site/components/commerce/drawer/micro.d.ts.map +1 -0
  246. package/dist/site/components/commerce/drawer/micro.js +228 -0
  247. package/dist/site/components/commerce/drawer/shell.cjs +78 -0
  248. package/dist/site/components/commerce/drawer/shell.css +127 -0
  249. package/dist/site/components/commerce/drawer/shell.d.ts +9 -0
  250. package/dist/site/components/commerce/drawer/shell.d.ts.map +1 -0
  251. package/dist/site/components/commerce/drawer/shell.js +76 -0
  252. package/dist/site/components/contact-dialog/contact-form.cjs +70 -0
  253. package/dist/site/components/contact-dialog/contact-form.d.ts +13 -0
  254. package/dist/site/components/contact-dialog/contact-form.d.ts.map +1 -0
  255. package/dist/site/components/contact-dialog/contact-form.js +64 -0
  256. package/dist/site/components/contact-dialog/disclaimer.cjs +15 -0
  257. package/dist/site/components/contact-dialog/disclaimer.d.ts +4 -0
  258. package/dist/site/components/contact-dialog/disclaimer.d.ts.map +1 -0
  259. package/dist/site/components/contact-dialog/disclaimer.js +13 -0
  260. package/dist/site/components/contact-dialog/index.cjs +113 -0
  261. package/dist/site/components/contact-dialog/index.d.ts +5 -0
  262. package/dist/site/components/contact-dialog/index.d.ts.map +1 -0
  263. package/dist/site/components/contact-dialog/index.js +107 -0
  264. package/dist/site/components/copyright.cjs +24 -0
  265. package/dist/site/components/copyright.d.ts +6 -0
  266. package/dist/site/components/copyright.d.ts.map +1 -0
  267. package/dist/site/components/copyright.js +22 -0
  268. package/dist/site/components/drawer-margin.cjs +35 -0
  269. package/dist/site/components/drawer-margin.d.ts +6 -0
  270. package/dist/site/components/drawer-margin.d.ts.map +1 -0
  271. package/dist/site/components/drawer-margin.js +33 -0
  272. package/dist/site/components/footer-nav.cjs +22 -0
  273. package/dist/site/components/footer-nav.d.ts +9 -0
  274. package/dist/site/components/footer-nav.d.ts.map +1 -0
  275. package/dist/site/components/footer-nav.js +20 -0
  276. package/dist/site/components/footer.cjs +132 -0
  277. package/dist/site/components/footer.d.ts +9 -0
  278. package/dist/site/components/footer.d.ts.map +1 -0
  279. package/dist/site/components/footer.js +126 -0
  280. package/dist/site/components/header/desktop-nav-menu.cjs +170 -0
  281. package/dist/site/components/header/desktop-nav-menu.d.ts +9 -0
  282. package/dist/site/components/header/desktop-nav-menu.d.ts.map +1 -0
  283. package/dist/site/components/header/desktop-nav-menu.js +145 -0
  284. package/dist/site/components/header/desktop.cjs +405 -0
  285. package/dist/site/components/header/desktop.css +4 -0
  286. package/dist/site/components/header/desktop.d.ts +13 -0
  287. package/dist/site/components/header/desktop.d.ts.map +1 -0
  288. package/dist/site/components/header/desktop.js +381 -0
  289. package/dist/site/components/header/index.cjs +717 -0
  290. package/dist/site/components/header/index.css +132 -0
  291. package/dist/site/components/header/index.d.ts +11 -0
  292. package/dist/site/components/header/index.d.ts.map +1 -0
  293. package/dist/site/components/header/index.js +693 -0
  294. package/dist/site/components/header/mobile-bag-drawer.cjs +114 -0
  295. package/dist/site/components/header/mobile-bag-drawer.css +4 -0
  296. package/dist/site/components/header/mobile-bag-drawer.d.ts +9 -0
  297. package/dist/site/components/header/mobile-bag-drawer.d.ts.map +1 -0
  298. package/dist/site/components/header/mobile-bag-drawer.js +112 -0
  299. package/dist/site/components/header/mobile-menu-toggle-button.cjs +30 -0
  300. package/dist/site/components/header/mobile-menu-toggle-button.d.ts +8 -0
  301. package/dist/site/components/header/mobile-menu-toggle-button.d.ts.map +1 -0
  302. package/dist/site/components/header/mobile-menu-toggle-button.js +28 -0
  303. package/dist/site/components/header/mobile-nav-menu-ai.cjs +66 -0
  304. package/dist/site/components/header/mobile-nav-menu-ai.css +132 -0
  305. package/dist/site/components/header/mobile-nav-menu-ai.d.ts +7 -0
  306. package/dist/site/components/header/mobile-nav-menu-ai.d.ts.map +1 -0
  307. package/dist/site/components/header/mobile-nav-menu-ai.js +60 -0
  308. package/dist/site/components/header/mobile-nav-menu-item.cjs +98 -0
  309. package/dist/site/components/header/mobile-nav-menu-item.css +132 -0
  310. package/dist/site/components/header/mobile-nav-menu-item.d.ts +8 -0
  311. package/dist/site/components/header/mobile-nav-menu-item.d.ts.map +1 -0
  312. package/dist/site/components/header/mobile-nav-menu-item.js +92 -0
  313. package/dist/site/components/header/mobile-nav-menu.cjs +175 -0
  314. package/dist/site/components/header/mobile-nav-menu.css +132 -0
  315. package/dist/site/components/header/mobile-nav-menu.d.ts +14 -0
  316. package/dist/site/components/header/mobile-nav-menu.d.ts.map +1 -0
  317. package/dist/site/components/header/mobile-nav-menu.js +169 -0
  318. package/dist/site/components/header/mobile.cjs +447 -0
  319. package/dist/site/components/header/mobile.css +132 -0
  320. package/dist/site/components/header/mobile.d.ts +12 -0
  321. package/dist/site/components/header/mobile.d.ts.map +1 -0
  322. package/dist/site/components/header/mobile.js +441 -0
  323. package/dist/site/components/header/theme-toggle.cjs +28 -0
  324. package/dist/site/components/header/theme-toggle.d.ts +4 -0
  325. package/dist/site/components/header/theme-toggle.d.ts.map +1 -0
  326. package/dist/site/components/header/theme-toggle.js +26 -0
  327. package/dist/site/components/icons/avatar.cjs +12 -0
  328. package/dist/site/components/icons/avatar.d.ts +5 -0
  329. package/dist/site/components/icons/avatar.d.ts.map +1 -0
  330. package/dist/site/components/icons/avatar.js +10 -0
  331. package/dist/site/components/icons/bag-icon.cjs +9 -0
  332. package/dist/site/components/icons/bag-icon.d.ts +5 -0
  333. package/dist/site/components/icons/bag-icon.d.ts.map +1 -0
  334. package/dist/site/components/icons/bag-icon.js +7 -0
  335. package/dist/site/components/icons/index.cjs +39 -0
  336. package/dist/site/components/icons/index.css +4 -0
  337. package/dist/site/components/icons/index.d.ts +6 -0
  338. package/dist/site/components/icons/index.d.ts.map +1 -0
  339. package/dist/site/components/icons/index.js +33 -0
  340. package/dist/site/components/icons/left-arrow.cjs +9 -0
  341. package/dist/site/components/icons/left-arrow.d.ts +5 -0
  342. package/dist/site/components/icons/left-arrow.d.ts.map +1 -0
  343. package/dist/site/components/icons/left-arrow.js +7 -0
  344. package/dist/site/components/icons/right-arrow.cjs +9 -0
  345. package/dist/site/components/icons/right-arrow.d.ts +5 -0
  346. package/dist/site/components/icons/right-arrow.d.ts.map +1 -0
  347. package/dist/site/components/icons/right-arrow.js +7 -0
  348. package/dist/site/components/icons/social-icon.cjs +24 -0
  349. package/dist/site/components/icons/social-icon.css +4 -0
  350. package/dist/site/components/icons/social-icon.d.ts +10 -0
  351. package/dist/site/components/icons/social-icon.d.ts.map +1 -0
  352. package/dist/site/components/icons/social-icon.js +22 -0
  353. package/dist/site/components/index.cjs +2004 -0
  354. package/dist/site/components/index.css +132 -0
  355. package/dist/site/components/index.d.ts +24 -0
  356. package/dist/site/components/index.d.ts.map +1 -0
  357. package/dist/site/components/index.js +1952 -0
  358. package/dist/site/components/logo.cjs +37 -0
  359. package/dist/site/components/logo.d.ts +23 -0
  360. package/dist/site/components/logo.d.ts.map +1 -0
  361. package/dist/site/components/logo.js +31 -0
  362. package/dist/site/components/main.cjs +22 -0
  363. package/dist/site/components/main.d.ts +9 -0
  364. package/dist/site/components/main.d.ts.map +1 -0
  365. package/dist/site/components/main.js +20 -0
  366. package/dist/site/components/mini-chart/index.cjs +94 -0
  367. package/dist/site/components/mini-chart/index.d.ts +3 -0
  368. package/dist/site/components/mini-chart/index.d.ts.map +1 -0
  369. package/dist/site/components/mini-chart/index.js +92 -0
  370. package/dist/site/components/mini-chart/mini-chart-props.cjs +2 -0
  371. package/dist/site/components/mini-chart/mini-chart-props.d.ts +33 -0
  372. package/dist/site/components/mini-chart/mini-chart-props.d.ts.map +1 -0
  373. package/dist/site/components/mini-chart/mini-chart-props.js +1 -0
  374. package/dist/site/components/mini-chart/mini-chart.cjs +80 -0
  375. package/dist/site/components/mini-chart/mini-chart.d.ts +5 -0
  376. package/dist/site/components/mini-chart/mini-chart.d.ts.map +1 -0
  377. package/dist/site/components/mini-chart/mini-chart.js +78 -0
  378. package/dist/site/components/mini-chart/wrapper.cjs +94 -0
  379. package/dist/site/components/mini-chart/wrapper.d.ts +7 -0
  380. package/dist/site/components/mini-chart/wrapper.d.ts.map +1 -0
  381. package/dist/site/components/mini-chart/wrapper.js +92 -0
  382. package/dist/site/components/not-found/index.cjs +844 -0
  383. package/dist/site/components/not-found/index.css +132 -0
  384. package/dist/site/components/not-found/index.d.ts +8 -0
  385. package/dist/site/components/not-found/index.d.ts.map +1 -0
  386. package/dist/site/components/not-found/index.js +820 -0
  387. package/dist/site/components/security/index.cjs +857 -0
  388. package/dist/site/components/security/index.css +132 -0
  389. package/dist/site/components/security/index.d.ts +9 -0
  390. package/dist/site/components/security/index.d.ts.map +1 -0
  391. package/dist/site/components/security/index.js +833 -0
  392. package/dist/site/components/tooltip.cjs +28 -0
  393. package/dist/site/components/tooltip.d.ts +11 -0
  394. package/dist/site/components/tooltip.d.ts.map +1 -0
  395. package/dist/site/components/tooltip.js +26 -0
  396. package/dist/site/next/analytics/fpixel.cjs +14 -0
  397. package/dist/site/next/analytics/fpixel.d.ts +9 -0
  398. package/dist/site/next/analytics/fpixel.d.ts.map +1 -0
  399. package/dist/site/next/analytics/fpixel.js +10 -0
  400. package/dist/site/next/analytics/google-analytics.cjs +8 -0
  401. package/dist/site/next/analytics/google-analytics.d.ts +8 -0
  402. package/dist/site/next/analytics/google-analytics.d.ts.map +1 -0
  403. package/dist/site/next/analytics/google-analytics.js +6 -0
  404. package/dist/site/next/analytics/index.cjs +57 -0
  405. package/dist/site/next/analytics/index.d.ts +4 -0
  406. package/dist/site/next/analytics/index.d.ts.map +1 -0
  407. package/dist/site/next/analytics/index.js +49 -0
  408. package/dist/site/next/analytics/pixel-analytics.cjs +59 -0
  409. package/dist/site/next/analytics/pixel-analytics.d.ts +5 -0
  410. package/dist/site/next/analytics/pixel-analytics.d.ts.map +1 -0
  411. package/dist/site/next/analytics/pixel-analytics.js +52 -0
  412. package/dist/site/next/font/font-desc.cjs +2 -0
  413. package/dist/site/next/font/font-desc.d.ts +19 -0
  414. package/dist/site/next/font/font-desc.d.ts.map +1 -0
  415. package/dist/site/next/font/font-desc.js +1 -0
  416. package/dist/site/next/font/fonts.cjs +42 -0
  417. package/dist/site/next/font/fonts.d.ts +4 -0
  418. package/dist/site/next/font/fonts.d.ts.map +1 -0
  419. package/dist/site/next/font/fonts.js +40 -0
  420. package/dist/site/next/font/get-app-router-font-classes.cjs +96 -0
  421. package/dist/site/next/font/get-app-router-font-classes.d.ts +15 -0
  422. package/dist/site/next/font/get-app-router-font-classes.d.ts.map +1 -0
  423. package/dist/site/next/font/get-app-router-font-classes.js +90 -0
  424. package/dist/site/next/font/load-and-return-lux-next-fonts-on-import.cjs +90 -0
  425. package/dist/site/next/font/load-and-return-lux-next-fonts-on-import.d.ts +8 -0
  426. package/dist/site/next/font/load-and-return-lux-next-fonts-on-import.d.ts.map +1 -0
  427. package/dist/site/next/font/load-and-return-lux-next-fonts-on-import.js +84 -0
  428. package/dist/site/next/font/next-font-desc.cjs +2 -0
  429. package/dist/site/next/font/next-font-desc.d.ts +20 -0
  430. package/dist/site/next/font/next-font-desc.d.ts.map +1 -0
  431. package/dist/site/next/font/next-font-desc.js +1 -0
  432. package/dist/site/next/font/pages-router-font-vars.cjs +100 -0
  433. package/dist/site/next/font/pages-router-font-vars.d.ts +3 -0
  434. package/dist/site/next/font/pages-router-font-vars.d.ts.map +1 -0
  435. package/dist/site/next/font/pages-router-font-vars.js +94 -0
  436. package/dist/site/next/head-metadata/index.cjs +139 -0
  437. package/dist/site/next/head-metadata/index.d.ts +12 -0
  438. package/dist/site/next/head-metadata/index.d.ts.map +1 -0
  439. package/dist/site/next/head-metadata/index.js +129 -0
  440. package/dist/site/next/head-metadata/next-metadata.cjs +2 -0
  441. package/dist/site/next/head-metadata/next-metadata.d.ts +48 -0
  442. package/dist/site/next/head-metadata/next-metadata.d.ts.map +1 -0
  443. package/dist/site/next/head-metadata/next-metadata.js +1 -0
  444. package/dist/site/next/index.cjs +147 -0
  445. package/dist/site/next/index.d.ts +3 -0
  446. package/dist/site/next/index.d.ts.map +1 -0
  447. package/dist/site/next/index.js +140 -0
  448. package/dist/site/next/middleware/determine-device-mw.cjs +17 -0
  449. package/dist/site/next/middleware/determine-device-mw.d.ts +4 -0
  450. package/dist/site/next/middleware/determine-device-mw.d.ts.map +1 -0
  451. package/dist/site/next/middleware/determine-device-mw.js +15 -0
  452. package/dist/site/root-layout/index.cjs +1574 -0
  453. package/dist/site/root-layout/index.css +374 -0
  454. package/dist/site/root-layout/index.d.ts +20 -0
  455. package/dist/site/root-layout/index.d.ts.map +1 -0
  456. package/dist/site/root-layout/index.js +1547 -0
  457. package/dist/site/site-def/footer/community.cjs +77 -0
  458. package/dist/site/site-def/footer/community.css +4 -0
  459. package/dist/site/site-def/footer/community.d.ts +13 -0
  460. package/dist/site/site-def/footer/community.d.ts.map +1 -0
  461. package/dist/site/site-def/footer/community.js +75 -0
  462. package/dist/site/site-def/footer/company.cjs +40 -0
  463. package/dist/site/site-def/footer/company.d.ts +23 -0
  464. package/dist/site/site-def/footer/company.d.ts.map +1 -0
  465. package/dist/site/site-def/footer/company.js +38 -0
  466. package/dist/site/site-def/footer/ecosystem.cjs +40 -0
  467. package/dist/site/site-def/footer/ecosystem.d.ts +11 -0
  468. package/dist/site/site-def/footer/ecosystem.d.ts.map +1 -0
  469. package/dist/site/site-def/footer/ecosystem.js +38 -0
  470. package/dist/site/site-def/footer/index.cjs +228 -0
  471. package/dist/site/site-def/footer/index.css +4 -0
  472. package/dist/site/site-def/footer/index.d.ts +16 -0
  473. package/dist/site/site-def/footer/index.d.ts.map +1 -0
  474. package/dist/site/site-def/footer/index.js +220 -0
  475. package/dist/site/site-def/footer/legal.cjs +24 -0
  476. package/dist/site/site-def/footer/legal.d.ts +5 -0
  477. package/dist/site/site-def/footer/legal.d.ts.map +1 -0
  478. package/dist/site/site-def/footer/legal.js +21 -0
  479. package/dist/site/site-def/footer/network.cjs +48 -0
  480. package/dist/site/site-def/footer/network.d.ts +11 -0
  481. package/dist/site/site-def/footer/network.d.ts.map +1 -0
  482. package/dist/site/site-def/footer/network.js +46 -0
  483. package/dist/site/site-def/index.cjs +627 -0
  484. package/dist/site/site-def/index.css +4 -0
  485. package/dist/site/site-def/index.d.ts +5 -0
  486. package/dist/site/site-def/index.d.ts.map +1 -0
  487. package/dist/site/site-def/index.js +624 -0
  488. package/dist/site/site-def/main-nav.cjs +393 -0
  489. package/dist/site/site-def/main-nav.d.ts +46 -0
  490. package/dist/site/site-def/main-nav.d.ts.map +1 -0
  491. package/dist/site/site-def/main-nav.js +391 -0
  492. package/dist/site/types/chatbot-config.cjs +2 -0
  493. package/dist/site/types/chatbot-config.d.ts +6 -0
  494. package/dist/site/types/chatbot-config.d.ts.map +1 -0
  495. package/dist/site/types/chatbot-config.js +1 -0
  496. package/dist/site/types/chatbot-suggested-question.cjs +2 -0
  497. package/dist/site/types/chatbot-suggested-question.d.ts +7 -0
  498. package/dist/site/types/chatbot-suggested-question.d.ts.map +1 -0
  499. package/dist/site/types/chatbot-suggested-question.js +1 -0
  500. package/dist/site/types/contact-info.cjs +2 -0
  501. package/dist/site/types/contact-info.d.ts +7 -0
  502. package/dist/site/types/contact-info.d.ts.map +1 -0
  503. package/dist/site/types/contact-info.js +1 -0
  504. package/dist/site/types/index.cjs +2 -0
  505. package/dist/site/types/index.d.ts +5 -0
  506. package/dist/site/types/index.d.ts.map +1 -0
  507. package/dist/site/types/index.js +1 -0
  508. package/dist/site/types/site-def.cjs +2 -0
  509. package/dist/site/types/site-def.d.ts +41 -0
  510. package/dist/site/types/site-def.d.ts.map +1 -0
  511. package/dist/site/types/site-def.js +1 -0
  512. package/dist/site/util/index.cjs +11 -0
  513. package/dist/site/util/index.d.ts +2 -0
  514. package/dist/site/util/index.d.ts.map +1 -0
  515. package/dist/site/util/index.js +9 -0
  516. package/dist/skeleton.d.ts +1 -1
  517. package/dist/skeleton.d.ts.map +1 -1
  518. package/dist/status.d.ts.map +1 -1
  519. package/dist/stock-screener.d.ts +1 -1
  520. package/dist/stock-screener.d.ts.map +1 -1
  521. package/dist/symbol-info.d.ts +1 -1
  522. package/dist/symbol-info.d.ts.map +1 -1
  523. package/dist/table.d.ts +2 -2
  524. package/dist/table.d.ts.map +1 -1
  525. package/dist/tabs.d.ts.map +1 -1
  526. package/dist/technical-analysis.d.ts +1 -1
  527. package/dist/technical-analysis.d.ts.map +1 -1
  528. package/dist/terminal.d.ts +1 -1
  529. package/dist/terminal.d.ts.map +1 -1
  530. package/dist/ticker-tape.d.ts +1 -1
  531. package/dist/ticker-tape.d.ts.map +1 -1
  532. package/dist/toaster.d.ts +6 -3
  533. package/dist/toaster.d.ts.map +1 -1
  534. package/dist/toggle.d.ts +1 -1
  535. package/dist/toggle.d.ts.map +1 -1
  536. package/dist/trading-panel.d.ts +1 -1
  537. package/dist/trading-panel.d.ts.map +1 -1
  538. package/dist/utils/cn.cjs +10 -0
  539. package/dist/utils/cn.js +1 -0
  540. package/dist/white-label.d.ts +5 -5
  541. package/dist/white-label.d.ts.map +1 -1
  542. package/dist/youtube-pip-player.d.ts.map +1 -1
  543. package/package.json +78 -25
  544. package/src/ai-voice.tsx +10 -34
  545. package/src/site/commerce/ui/conf.ts +13 -0
  546. package/src/site/commerce/ui/context.tsx +120 -0
  547. package/src/site/commerce/ui/store.ts +295 -0
  548. package/src/site/components/access-code-input.tsx +70 -0
  549. package/src/site/components/analytics.tsx +14 -0
  550. package/src/site/components/auth/callback.tsx +40 -0
  551. package/src/site/components/auth/login-panel.tsx +83 -0
  552. package/src/site/components/auth/login.tsx +47 -0
  553. package/src/site/components/auth/provider.tsx +34 -0
  554. package/src/site/components/auth/resume.ts +16 -0
  555. package/src/site/components/auth/widget.tsx +80 -0
  556. package/src/site/components/back-button.tsx +46 -0
  557. package/src/site/components/chat-widget.tsx +83 -0
  558. package/src/site/components/commerce/bag-button.tsx +99 -0
  559. package/src/site/components/commerce/buy-button.tsx +33 -0
  560. package/src/site/components/commerce/checkout-button.tsx +131 -0
  561. package/src/site/components/commerce/checkout-panel/cart-accordian.tsx +65 -0
  562. package/src/site/components/commerce/checkout-panel/checkout-panel-props.ts +10 -0
  563. package/src/site/components/commerce/checkout-panel/desktop-bag-carousel.tsx +36 -0
  564. package/src/site/components/commerce/checkout-panel/desktop-cp.tsx +82 -0
  565. package/src/site/components/commerce/checkout-panel/index.tsx +126 -0
  566. package/src/site/components/commerce/checkout-panel/mobile-cp.tsx +67 -0
  567. package/src/site/components/commerce/checkout-panel/policy-links.tsx +24 -0
  568. package/src/site/components/commerce/checkout-panel/steps-indicator.tsx +39 -0
  569. package/src/site/components/commerce/checkout-panel/thank-you.tsx +18 -0
  570. package/src/site/components/commerce/desktop-bag-popup.tsx +78 -0
  571. package/src/site/components/commerce/drawer/index.tsx +88 -0
  572. package/src/site/components/commerce/drawer/micro.tsx +145 -0
  573. package/src/site/components/commerce/drawer/shell.tsx +83 -0
  574. package/src/site/components/contact-dialog/contact-form.tsx +109 -0
  575. package/src/site/components/contact-dialog/disclaimer.tsx +13 -0
  576. package/src/site/components/contact-dialog/index.tsx +64 -0
  577. package/src/site/components/copyright.tsx +22 -0
  578. package/src/site/components/drawer-margin.tsx +28 -0
  579. package/src/site/components/footer-nav.tsx +31 -0
  580. package/src/site/components/footer.tsx +72 -0
  581. package/src/site/components/header/desktop-nav-menu.tsx +202 -0
  582. package/src/site/components/header/desktop.tsx +65 -0
  583. package/src/site/components/header/index.tsx +50 -0
  584. package/src/site/components/header/mobile-bag-drawer.tsx +51 -0
  585. package/src/site/components/header/mobile-menu-toggle-button.tsx +34 -0
  586. package/src/site/components/header/mobile-nav-menu-ai.tsx +52 -0
  587. package/src/site/components/header/mobile-nav-menu-item.tsx +48 -0
  588. package/src/site/components/header/mobile-nav-menu.tsx +103 -0
  589. package/src/site/components/header/mobile.tsx +169 -0
  590. package/src/site/components/header/theme-toggle.tsx +26 -0
  591. package/src/site/components/icons/avatar.tsx +11 -0
  592. package/src/site/components/icons/bag-icon.tsx +10 -0
  593. package/src/site/components/icons/index.ts +5 -0
  594. package/src/site/components/icons/left-arrow.tsx +11 -0
  595. package/src/site/components/icons/right-arrow.tsx +10 -0
  596. package/src/site/components/icons/social-icon.tsx +35 -0
  597. package/src/site/components/icons/social-svg.css +3 -0
  598. package/src/site/components/index.ts +26 -0
  599. package/src/site/components/logo.tsx +65 -0
  600. package/src/site/components/main.tsx +26 -0
  601. package/src/site/components/mini-chart/index.tsx +8 -0
  602. package/src/site/components/mini-chart/mini-chart-props.ts +44 -0
  603. package/src/site/components/mini-chart/mini-chart.tsx +86 -0
  604. package/src/site/components/mini-chart/wrapper.tsx +23 -0
  605. package/src/site/components/not-found/index.tsx +28 -0
  606. package/src/site/components/security/index.tsx +55 -0
  607. package/src/site/components/tooltip.tsx +31 -0
  608. package/src/site/next/analytics/fpixel.ts +16 -0
  609. package/src/site/next/analytics/google-analytics.ts +14 -0
  610. package/src/site/next/analytics/index.ts +3 -0
  611. package/src/site/next/analytics/pixel-analytics.tsx +55 -0
  612. package/src/site/next/font/font-desc.ts +18 -0
  613. package/src/site/next/font/fonts.ts +40 -0
  614. package/src/site/next/font/get-app-router-font-classes.ts +19 -0
  615. package/src/site/next/font/load-and-return-lux-next-fonts-on-import.ts +60 -0
  616. package/src/site/next/font/local/InterVariable-Italic.ttf +0 -0
  617. package/src/site/next/font/local/InterVariable-Italic.woff2 +0 -0
  618. package/src/site/next/font/local/InterVariable.ttf +0 -0
  619. package/src/site/next/font/local/InterVariable.woff2 +0 -0
  620. package/src/site/next/font/local/Zen-Variable.woff2 +0 -0
  621. package/src/site/next/font/next-font-desc.ts +29 -0
  622. package/src/site/next/font/pages-router-font-vars.tsx +18 -0
  623. package/src/site/next/head-metadata/index.tsx +209 -0
  624. package/src/site/next/head-metadata/next-metadata.ts +49 -0
  625. package/src/site/next/index.ts +2 -0
  626. package/src/site/next/middleware/determine-device-mw.ts +16 -0
  627. package/src/site/root-layout/WHY_THIS_IS_SEPARATE.txt +2 -0
  628. package/src/site/root-layout/index.tsx +125 -0
  629. package/src/site/site-def/footer/community.tsx +58 -0
  630. package/src/site/site-def/footer/company.ts +37 -0
  631. package/src/site/site-def/footer/ecosystem.ts +37 -0
  632. package/src/site/site-def/footer/index.tsx +26 -0
  633. package/src/site/site-def/footer/legal.ts +28 -0
  634. package/src/site/site-def/footer/network.ts +45 -0
  635. package/src/site/site-def/footer/svg/warpcast-logo.svg +12 -0
  636. package/src/site/site-def/index.ts +4 -0
  637. package/src/site/site-def/main-nav.tsx +460 -0
  638. package/src/site/style/cart-animation.css +29 -0
  639. package/src/site/style/checkout-animation.css +23 -0
  640. package/src/site/style/drawer-handle-overrides.css +160 -0
  641. package/src/site/style/fonts/COPY_TO_PUBLIC_FOR_NON_NEXT.txt +0 -0
  642. package/src/site/style/fonts/InterVariable-Italic.ttf +0 -0
  643. package/src/site/style/fonts/InterVariable-Italic.woff2 +0 -0
  644. package/src/site/style/fonts/InterVariable.ttf +0 -0
  645. package/src/site/style/fonts/InterVariable.woff2 +0 -0
  646. package/src/site/style/fonts/Zen-Variable.woff2 +0 -0
  647. package/src/site/style/lux-colors.css +84 -0
  648. package/src/site/style/lux-fonts.css +24 -0
  649. package/src/site/style/lux-global-non-next.css +52 -0
  650. package/src/site/style/lux-global.css +135 -0
  651. package/src/site/types/chatbot-config.ts +7 -0
  652. package/src/site/types/chatbot-suggested-question.ts +7 -0
  653. package/src/site/types/contact-info.ts +11 -0
  654. package/src/site/types/index.ts +4 -0
  655. package/src/site/types/site-def.ts +53 -0
  656. package/src/site/util/index.ts +11 -0
@@ -0,0 +1,1952 @@
1
+ import * as React7 from 'react';
2
+ import React7__default, { useRef, useEffect, createContext, useContext, useState, useLayoutEffect, useTransition } from 'react';
3
+ import { buttonVariants, NavigationMenuLink, Drawer, DrawerContent, DrawerHandle, Button, ScrollArea, StepIndicator, Accordion, AccordionItem, AccordionTrigger, AccordionContent, Separator, ApplyTypography, Popover, PopoverTrigger, PopoverContent, InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator, Card, Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, NavItems, Carousel, CarouselContent, CarouselItem, Input, NavigationMenu, NavigationMenuList, NavigationMenuItem, navigationMenuTriggerStyle, NavigationMenuTrigger, NavigationMenuContent, PopoverClose } from '@hanzo/ui/primitives';
4
+ import { Box, cn, MediaStack, css, capitalize, ApplyTypography as ApplyTypography$1, Form, FormField, FormItem, FormControl, FormMessage } from '@hanzo/ui';
5
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
+ import { Logo as Logo$1, Wordmark, LuxLogo } from '@luxfi/logo';
7
+ import { useForm } from 'react-hook-form';
8
+ import { z } from 'zod';
9
+ import { zodResolver } from '@hookform/resolvers/zod';
10
+ import validator from 'validator';
11
+ import { ChevronRight, ChevronLeft, Loader2, X, Plus, ChevronDown, ArrowRight } from 'lucide-react';
12
+ import Link2 from 'next/link';
13
+ import { IamContext, useIam, useIamIdentity, Login as Login$1, IamProvider } from '@hanzo/iam/react';
14
+ import { useRouter, usePathname } from 'next/navigation';
15
+ import { useCommerce, CarouselBuyCard, CarouselItemSelector, CartPanel, formatCurrencyValue, PaymentStepForm, ShippingStepForm } from '@hanzo/commerce';
16
+ import { SocialIcon as SocialIcon$1 } from 'react-social-icons';
17
+ import { observable, reaction, runInAction } from 'mobx';
18
+ import { observer, enableStaticRendering } from 'mobx-react-lite';
19
+ import { BRAND_SERVER_URLS } from '@hanzo/iam/paths';
20
+ import 'usehooks-ts';
21
+ import { GoogleAnalytics } from '@next/third-parties/google';
22
+ import Script from 'next/script';
23
+ import { Tooltip as Tooltip$1 } from 'react-tooltip';
24
+ export { default as EmblaAutoplay } from 'embla-carousel-autoplay';
25
+
26
+ var __defProp = Object.defineProperty;
27
+ var __export = (target, all) => {
28
+ for (var name in all)
29
+ __defProp(target, name, { get: all[name], enumerable: true });
30
+ };
31
+ var AccessCodeInput = ({
32
+ onSuccess,
33
+ onFail,
34
+ validCodes,
35
+ className
36
+ }) => {
37
+ const [status, setStatus] = useState();
38
+ const checkAccessCode = (code) => {
39
+ setStatus(void 0);
40
+ if (code.length === 6) {
41
+ setStatus("checking");
42
+ setTimeout(() => {
43
+ if (validCodes?.includes(code) && onSuccess) {
44
+ setStatus("valid");
45
+ onSuccess();
46
+ } else {
47
+ setStatus("invalid");
48
+ onFail && onFail();
49
+ }
50
+ }, 1e3);
51
+ }
52
+ };
53
+ return /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col gap-2 mx-auto w-full text-center items-center", className), children: [
54
+ /* @__PURE__ */ jsx(
55
+ InputOTP,
56
+ {
57
+ className: "mx-auto",
58
+ maxLength: 6,
59
+ onInput: (event) => checkAccessCode(event.target.value),
60
+ render: ({ slots }) => /* @__PURE__ */ jsxs(Fragment, { children: [
61
+ /* @__PURE__ */ jsxs(InputOTPGroup, { children: [
62
+ slots.slice(0, 3).map((slot, index) => /* @__PURE__ */ jsx(InputOTPSlot, { ...slot }, index)),
63
+ " "
64
+ ] }),
65
+ /* @__PURE__ */ jsx(InputOTPSeparator, {}),
66
+ /* @__PURE__ */ jsx(InputOTPGroup, { children: slots.slice(3).map((slot, index) => /* @__PURE__ */ jsx(InputOTPSlot, { ...slot }, index + 3)) })
67
+ ] })
68
+ }
69
+ ),
70
+ /* @__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 })
71
+ ] });
72
+ };
73
+ var access_code_input_default = AccessCodeInput;
74
+ var ChatWidget = ({
75
+ title: title2,
76
+ chatbotUrl,
77
+ subtitle,
78
+ question,
79
+ suggestedQuestions,
80
+ buttonClx = ""
81
+ }) => {
82
+ const [showChatbot, setShowChatbot] = React7__default.useState(false);
83
+ const onClick = () => {
84
+ setShowChatbot(!showChatbot);
85
+ };
86
+ const searchParams = new URLSearchParams();
87
+ if (question) {
88
+ searchParams.append("question", question);
89
+ }
90
+ if (suggestedQuestions) {
91
+ searchParams.append("sQuestions", suggestedQuestions.map(({ message }) => message).join(","));
92
+ searchParams.append("sHeadings", suggestedQuestions.map(({ heading }) => heading).join(","));
93
+ searchParams.append("sIcons", suggestedQuestions.map(({ icon }) => icon).join(","));
94
+ }
95
+ const iframeSrc = `${chatbotUrl}?${searchParams.toString()}`;
96
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
97
+ /* @__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, { className: "flex flex-col h-full w-full", children: [
98
+ /* @__PURE__ */ jsxs("div", { className: "flex px-4 py-2 h-12 bg-level-0 items-center justify-between", children: [
99
+ /* @__PURE__ */ jsxs("h1", { className: "font-semibold font-heading", children: [
100
+ title2,
101
+ " ",
102
+ /* @__PURE__ */ jsx("span", { className: "opacity-60", children: subtitle })
103
+ ] }),
104
+ /* @__PURE__ */ jsx(Button, { onClick, variant: "link", size: "icon", className: "w-fit sm:hidden", children: /* @__PURE__ */ jsx(LuxLogo, { variant: "white", size: 24 }) })
105
+ ] }),
106
+ /* @__PURE__ */ jsx("iframe", { src: iframeSrc, className: "h-full" })
107
+ ] }) }),
108
+ /* @__PURE__ */ jsx(
109
+ Box,
110
+ {
111
+ tag: "span",
112
+ onClick,
113
+ className: cn(
114
+ // z-index should be below anything in commerce-iu (buy drawer and checkout widget)
115
+ "fixed bottom-5 right-[24px] md:z-floating z-16 cursor-pointer",
116
+ "hover:drop-shadow-[0_2px_6px_rgba(255,255,255,1)]",
117
+ "transition-transform",
118
+ showChatbot ? "rotate-180" : "",
119
+ buttonClx
120
+ ),
121
+ children: /* @__PURE__ */ jsx(LuxLogo, { variant: "white", size: 28 })
122
+ }
123
+ )
124
+ ] });
125
+ };
126
+ var chat_widget_default = ChatWidget;
127
+ var ContactFormSchema = z.object({
128
+ email: z.string().min(1, { message: "Email must be provided." }).email("Invalid email."),
129
+ phone: z.string().min(1, { message: "Telephone must be provided." }).refine(validator.isMobilePhone, { message: "Invalid format." })
130
+ });
131
+ var ContactForm = ({
132
+ onSubmit: _onSubmit,
133
+ enclosure
134
+ }) => {
135
+ const form = useForm({
136
+ resolver: zodResolver(ContactFormSchema),
137
+ defaultValues: {
138
+ email: "",
139
+ phone: ""
140
+ }
141
+ });
142
+ const [isPending, startTransition] = useTransition();
143
+ const onSubmit = (data) => {
144
+ startTransition(async () => {
145
+ await _onSubmit(data, enclosure);
146
+ });
147
+ };
148
+ const MyFormItem = ({
149
+ field,
150
+ placeholder
151
+ }) => /* @__PURE__ */ jsxs(FormItem, { className: "space-y-0", children: [
152
+ /* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx(Input, { placeholder, ...field, className: "mt-0 text-foreground" }) }),
153
+ /* @__PURE__ */ jsx(Box, { className: "flex flex-row justify-start items-stretch gap-2", children: /* @__PURE__ */ jsx(FormMessage, {}) })
154
+ ] });
155
+ 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: [
156
+ /* @__PURE__ */ jsx(
157
+ FormField,
158
+ {
159
+ control: form.control,
160
+ name: "email",
161
+ render: ({ field }) => /* @__PURE__ */ jsx(MyFormItem, { field, placeholder: "email" })
162
+ }
163
+ ),
164
+ /* @__PURE__ */ jsx(
165
+ FormField,
166
+ {
167
+ control: form.control,
168
+ name: "phone",
169
+ render: ({ field }) => /* @__PURE__ */ jsx(MyFormItem, { field, placeholder: "phone" })
170
+ }
171
+ ),
172
+ /* @__PURE__ */ jsx(Button, { disabled: isPending, type: "submit", className: "bg-primary text-primary-fg hover:bg-primary-hover", children: isPending ? /* @__PURE__ */ jsxs(Fragment, { children: [
173
+ /* @__PURE__ */ jsx(Loader2, { style: css("mr-2 h-4 w-4 animate-spin") }),
174
+ "Please wait"
175
+ ] }) : /* @__PURE__ */ jsx(Fragment, { children: "Submit" }) })
176
+ ] }) }) });
177
+ };
178
+ var contact_form_default = ContactForm;
179
+ var Disclaimer = () => /* @__PURE__ */ jsxs("div", { children: [
180
+ "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 ",
181
+ /* @__PURE__ */ jsx("a", { href: "/privacy", children: "Privacy Policy" }),
182
+ " and ",
183
+ /* @__PURE__ */ jsx("a", { href: "/terms", children: "Terms & conditions" }),
184
+ "."
185
+ ] });
186
+ var disclaimer_default = Disclaimer;
187
+ var ContactDialog = ({
188
+ open: open2,
189
+ onOpenChange,
190
+ buttonText,
191
+ buttonProps,
192
+ title: title2,
193
+ byline,
194
+ action,
195
+ actionEnclosure
196
+ }) => {
197
+ const [success, setSuccess] = useState(false);
198
+ const onSubmit = async (formData, enclosure) => {
199
+ const result = await action(formData, enclosure);
200
+ if (result.success) {
201
+ setSuccess(true);
202
+ }
203
+ };
204
+ return /* @__PURE__ */ jsxs(Dialog, { open: open2, onOpenChange, children: [
205
+ /* @__PURE__ */ jsx(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx(Button, { ...buttonProps, children: buttonText }) }),
206
+ /* @__PURE__ */ jsxs(DialogContent, { className: "sm:max-w-[500px] p-0 gap-0 bg-background border", children: [
207
+ /* @__PURE__ */ jsxs(DialogHeader, { className: "py-6 text-foreground", children: [
208
+ /* @__PURE__ */ jsx(DialogTitle, { className: "text-4xl text-center text-inherit", children: title2 }),
209
+ byline && /* @__PURE__ */ jsxs(DialogDescription, { className: "text-inherit text-lg text-center", children: [
210
+ byline,
211
+ " "
212
+ ] })
213
+ ] }),
214
+ /* @__PURE__ */ jsxs("div", { className: "px-8 pb-8 rounded-e-lg flex flex-col justify-start items-center", children: [
215
+ success ? /* @__PURE__ */ jsx("p", { children: actionEnclosure?.reply }) : /* @__PURE__ */ jsx(contact_form_default, { onSubmit, enclosure: actionEnclosure }),
216
+ /* @__PURE__ */ jsx("div", { className: "text-muted-1 text-xs mt-4", children: /* @__PURE__ */ jsx(disclaimer_default, {}) })
217
+ ] })
218
+ ] })
219
+ ] });
220
+ };
221
+ var contact_dialog_default = ContactDialog;
222
+ var FIRST = 2020;
223
+ var Copyright = ({
224
+ className = ""
225
+ }) => {
226
+ const year = (/* @__PURE__ */ new Date()).getFullYear();
227
+ const yearString = year > FIRST ? `${FIRST} - ${year}` : FIRST.toString();
228
+ return /* @__PURE__ */ jsxs(Box, { className, children: [
229
+ `Copyright \xA9 ${yearString}`,
230
+ "\xA0",
231
+ /* @__PURE__ */ jsx("br", { className: "sm:hidden" }),
232
+ "Lux Industries Inc.\xA0",
233
+ /* @__PURE__ */ jsx("br", { className: "md:hidden" }),
234
+ "\xA0All rights reserved."
235
+ ] });
236
+ };
237
+ var copyright_default = Copyright;
238
+
239
+ // src/site/site-def/footer/legal.ts
240
+ var legal = [
241
+ {
242
+ title: "Terms and Conditions",
243
+ href: "https://docs.google.com/document/d/1mvkjr1w8Rv8ttirs1mu-_2fw_PXclOyS/preview",
244
+ newTab: true
245
+ },
246
+ {
247
+ title: "Privacy Policy",
248
+ href: "https://docs.google.com/document/d/1vZjOKaNdOoThDIaVLERWxflQLtOsuvLn/preview",
249
+ newTab: true
250
+ }
251
+ ];
252
+ var title = {
253
+ title: "Legal",
254
+ href: "",
255
+ variant: "linkFG"
256
+ };
257
+ [title, ...legal];
258
+ var FooterNav = ({
259
+ items,
260
+ currentAs,
261
+ className = ""
262
+ }) => /* @__PURE__ */ jsx(
263
+ NavItems,
264
+ {
265
+ items,
266
+ currentAs,
267
+ as: "nav",
268
+ className,
269
+ 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"
270
+ }
271
+ );
272
+ var footer_nav_default = FooterNav;
273
+ var SIZE = {
274
+ xl: { mark: 40, word: 22, gap: "gap-4" },
275
+ lg: { mark: 40, word: 22, gap: "gap-4" },
276
+ md: { mark: 32, word: 18, gap: "gap-3" },
277
+ sm: { mark: 24, word: 13, gap: "gap-2" },
278
+ xs: { mark: 16, word: 9, gap: "gap-1.5" }
279
+ };
280
+ var Logo = ({
281
+ size = "md",
282
+ href,
283
+ // no default please!
284
+ outerClx = "",
285
+ variant = "full",
286
+ onClick
287
+ }) => {
288
+ const s = SIZE[size] ?? SIZE.md;
289
+ const clx = "flex flex-row items-center " + s.gap + " " + (href ? "hover:opacity-80 cursor-pointer " : "cursor-default ") + outerClx;
290
+ const art = /* @__PURE__ */ jsxs(Fragment, { children: [
291
+ variant !== "wordmark" && /* @__PURE__ */ jsx(Logo$1, { variant: "white", size: s.mark }),
292
+ variant !== "mark" && /* @__PURE__ */ jsx(Wordmark, { height: s.word })
293
+ ] });
294
+ return href ? /* @__PURE__ */ jsx(Link2, { href, style: css(clx), onClick, children: art }) : /* @__PURE__ */ jsx(Box, { tag: "span", className: clx, onClick, children: art });
295
+ };
296
+ var Footer = ({
297
+ siteDef,
298
+ className = "",
299
+ noHorizPadding = false
300
+ }) => {
301
+ const { footer, aboveCopyright } = siteDef;
302
+ const smGridCols = Math.floor(footer.length / 2);
303
+ const smGridColsClx = `sm:grid-cols-${smGridCols} `;
304
+ const _aboveCopyright = typeof aboveCopyright === "undefined" ? legal : aboveCopyright;
305
+ return /* @__PURE__ */ jsxs(Box, { tag: "footer", className: cn("grow flex flex-col justify-between gap-6 pb-[2vh]", className), children: [
306
+ /* @__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: [
307
+ /* @__PURE__ */ jsx("div", { className: "hidden lg:flex flex-col", children: /* @__PURE__ */ jsx(Logo, { size: "md", variant: "wordmark" }) }, 0),
308
+ footer.map((defs, index) => {
309
+ const xsColSpanClx = index === footer.length - 1 && footer.length % 2 === 1 ? "xs:col-span-2 xs:mx-auto md:col-span-1 md:mx-0 " : "";
310
+ return /* @__PURE__ */ jsx(
311
+ footer_nav_default,
312
+ {
313
+ items: defs,
314
+ currentAs: siteDef.currentAs,
315
+ className: cn(
316
+ "sm:min-w-[150px] md:min-w-0 flex flex-col justify-start items-start gap-[11px] sm:gap-[12px] md:gap-[15px] ",
317
+ xsColSpanClx
318
+ )
319
+ },
320
+ index + 1
321
+ );
322
+ })
323
+ ] }),
324
+ /* @__PURE__ */ jsxs("div", { className: "md:mt-[2vh]", children: [
325
+ _aboveCopyright.length > 0 && /* @__PURE__ */ jsx(
326
+ NavItems,
327
+ {
328
+ items: _aboveCopyright,
329
+ as: "div",
330
+ className: "flex flex-row justify-center gap-4 mb-2",
331
+ itemClx: "text-sm text-center text-muted-2 underline hover:text-foreground"
332
+ }
333
+ ),
334
+ /* @__PURE__ */ jsx(copyright_default, { className: "text-sm text-center text-muted-3" })
335
+ ] })
336
+ ] });
337
+ };
338
+ var footer_default = Footer;
339
+
340
+ // src/site/components/auth/resume.ts
341
+ var KEY = "lux-auth-resume";
342
+ var remember = () => {
343
+ sessionStorage.setItem(KEY, window.location.pathname + window.location.search);
344
+ };
345
+ var Widget = ({
346
+ noLogin = false,
347
+ handleLogin,
348
+ className
349
+ }) => {
350
+ const { isAuthenticated, isLoading, login, logout } = useIam();
351
+ const identity = useIamIdentity();
352
+ if (isLoading) {
353
+ return null;
354
+ }
355
+ if (!isAuthenticated) {
356
+ return noLogin ? null : /* @__PURE__ */ jsx(
357
+ Button,
358
+ {
359
+ variant: "primary",
360
+ className: cn("h-8 w-fit !min-w-0", className),
361
+ onClick: handleLogin ?? (() => {
362
+ remember();
363
+ void login();
364
+ }),
365
+ children: "Login"
366
+ }
367
+ );
368
+ }
369
+ return /* @__PURE__ */ jsxs(Popover, { children: [
370
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
371
+ Button,
372
+ {
373
+ variant: "outline",
374
+ size: "icon",
375
+ className: cn("rounded-full text-muted border-2 border-muted bg-level-1 hover:bg-level-2 hover:border-foreground hover:text-foreground uppercase w-8 h-8", className),
376
+ children: identity?.initials
377
+ }
378
+ ) }),
379
+ /* @__PURE__ */ jsx(PopoverContent, { className: "bg-level-0", children: /* @__PURE__ */ jsxs("div", { className: "grid gap-4", children: [
380
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2 truncate", children: [
381
+ /* @__PURE__ */ jsx("h4", { className: "font-medium leading-none truncate", children: identity?.name }),
382
+ identity?.email && identity.email !== identity.name && /* @__PURE__ */ jsx("p", { className: "text-sm opacity-50 truncate", children: identity.email })
383
+ ] }),
384
+ /* @__PURE__ */ jsx(Separator, {}),
385
+ /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => {
386
+ logout();
387
+ }, children: "Logout" })
388
+ ] }) })
389
+ ] });
390
+ };
391
+ var AuthWidget = (props) => useContext(IamContext) ? /* @__PURE__ */ jsx(Widget, { ...props }) : null;
392
+ var widget_default = AuthWidget;
393
+
394
+ // src/site/components/icons/index.ts
395
+ var icons_exports = {};
396
+ __export(icons_exports, {
397
+ Avatar: () => avatar_default,
398
+ Bag: () => bag_icon_default,
399
+ LeftArrow: () => left_arrow_default,
400
+ RightArrow: () => right_arrow_default,
401
+ SocialIcon: () => SocialIcon
402
+ });
403
+ var Avatar = (props) => /* @__PURE__ */ jsxs("svg", { width: "17", height: "21", viewBox: "0 0 17 21", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
404
+ /* @__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" }),
405
+ /* @__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" })
406
+ ] });
407
+ var avatar_default = Avatar;
408
+ var BagIcon = (props) => /* @__PURE__ */ jsx("svg", { fill: "none", viewBox: "0 0 1019 1281", ...props, 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" }) });
409
+ var bag_icon_default = BagIcon;
410
+ var LeftArrow = (props) => /* @__PURE__ */ jsx("svg", { width: "10", height: "16", viewBox: "0 0 10 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: /* @__PURE__ */ jsx("path", { d: "M1.06975 7.44328C0.679224 7.83381 0.679224 8.46697 1.06975 8.8575L7.43371 15.2215C7.82423 15.612 8.4574 15.612 8.84792 15.2215C9.23845 14.8309 9.23845 14.1978 8.84792 13.8072L3.19107 8.15039L8.84792 2.49354C9.23845 2.10301 9.23845 1.46985 8.84792 1.07932C8.4574 0.688798 7.82423 0.688798 7.43371 1.07932L1.06975 7.44328ZM1.77686 9.15039H2.49037V7.15039H1.77686V9.15039Z", fill: "white" }) });
411
+ var left_arrow_default = LeftArrow;
412
+ var RightArrow = (props) => /* @__PURE__ */ jsx("svg", { width: "9", height: "16", viewBox: "0 0 9 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: /* @__PURE__ */ jsx("path", { d: "M8.33797 7.58293C8.72849 7.97346 8.72849 8.60662 8.33797 8.99715L1.97401 15.3611C1.58348 15.7516 0.950316 15.7516 0.559792 15.3611C0.169267 14.9706 0.169267 14.3374 0.559792 13.9469L6.21665 8.29004L0.559792 2.63318C0.169267 2.24266 0.169267 1.6095 0.559792 1.21897C0.950316 0.828447 1.58348 0.828447 1.97401 1.21897L8.33797 7.58293ZM7.63086 9.29004H6.91734V7.29004H7.63086V9.29004Z", fill: "white" }) });
413
+ var right_arrow_default = RightArrow;
414
+ var SocialIcon = ({
415
+ network,
416
+ size,
417
+ className = ""
418
+ }) => /* @__PURE__ */ jsx(
419
+ SocialIcon$1,
420
+ {
421
+ network,
422
+ as: "div",
423
+ className: cn("color-inherit", className),
424
+ bgColor: "transparent",
425
+ fgColor: "currentColor",
426
+ style: { height: size, width: size, flex: "none" }
427
+ }
428
+ );
429
+
430
+ // src/site/next/analytics/google-analytics.ts
431
+ var sendGAEvent = (name, options = {}) => {
432
+ window.gtag("event", name, options);
433
+ };
434
+ var DesktopBagPopup = ({
435
+ triggerClx = "",
436
+ popupClx = "",
437
+ trigger
438
+ }) => {
439
+ const cmmc = useCommerce();
440
+ const [bagOpen, setBagOpen] = useState(false);
441
+ const router = useRouter();
442
+ useEffect(() => {
443
+ if (bagOpen) {
444
+ sendGAEvent("view_cart", {
445
+ items: cmmc.cartItems.map((item) => ({
446
+ item_id: item.sku,
447
+ item_name: item.title,
448
+ item_category: item.familyId,
449
+ price: item.price,
450
+ quantity: item.quantity
451
+ })),
452
+ value: cmmc.cartTotal,
453
+ currency: "USD"
454
+ });
455
+ }
456
+ }, [bagOpen]);
457
+ return /* @__PURE__ */ jsxs(Popover, { open: bagOpen, onOpenChange: setBagOpen, children: [
458
+ /* @__PURE__ */ jsx(PopoverTrigger, { className: triggerClx, children: trigger }),
459
+ /* @__PURE__ */ jsxs(PopoverContent, { sideOffset: 28, className: cn("relative flex flex-col p-0 px-4 pb-4 pt-2", popupClx), children: [
460
+ /* @__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" }) }),
461
+ /* @__PURE__ */ jsxs(
462
+ CartPanel,
463
+ {
464
+ handleCheckout: () => {
465
+ router.push("/checkout");
466
+ },
467
+ className: "mt-4 mb-4 border-none py-0 px-4",
468
+ listClx: "rounded-sm pr-3",
469
+ scrollAfter: 5,
470
+ scrollHeightClx: "h-[70vh]",
471
+ itemClx: "mt-3",
472
+ totalClx: "sticky px-1 pr-2 -bottom-[1px] bg-level-1",
473
+ buttonClx: "max-w-[220px] flex-none",
474
+ children: [
475
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
476
+ /* @__PURE__ */ jsx(bag_icon_default, { className: "mr-2 relative w-6 h-7 fill-foreground " }),
477
+ /* @__PURE__ */ jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
478
+ ] }),
479
+ /* @__PURE__ */ jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
480
+ ]
481
+ }
482
+ )
483
+ ] })
484
+ ] });
485
+ };
486
+ var desktop_bag_popup_default = DesktopBagPopup;
487
+ var BagButton = observer(({
488
+ showIfEmpty = false,
489
+ animateOnHover = true,
490
+ animateOnQuantityChange = true,
491
+ size = "default",
492
+ className = "",
493
+ iconClx = "",
494
+ onClick
495
+ }) => {
496
+ const c = useCommerce();
497
+ const wiggleRef = useRef(observable.box("none"));
498
+ useEffect(() => (
499
+ // return IReactionDisposer
500
+ animateOnQuantityChange && c ? reaction(
501
+ () => c.cartQuantity,
502
+ (curr, prev) => {
503
+ if (curr > prev) {
504
+ runInAction(() => {
505
+ wiggleRef.current.set("more");
506
+ });
507
+ } else {
508
+ runInAction(() => {
509
+ wiggleRef.current.set("less");
510
+ });
511
+ }
512
+ setTimeout(() => {
513
+ runInAction(() => {
514
+ wiggleRef.current.set("none");
515
+ });
516
+ }, 800);
517
+ }
518
+ ) : void 0
519
+ ), []);
520
+ if (!c || !showIfEmpty && c.cartEmpty) {
521
+ return /* @__PURE__ */ jsx("div", {});
522
+ }
523
+ return /* @__PURE__ */ jsxs(
524
+ Box,
525
+ {
526
+ "aria-label": "Bag",
527
+ role: "button",
528
+ onClick,
529
+ className: cn(
530
+ buttonVariants({ variant: "ghost", size }),
531
+ "rounded-md",
532
+ // Overides the bg change on hover --not a "hover effect"
533
+ "relative group p-0 aspect-square hover:bg-background",
534
+ wiggleRef.current.get() === "more" ? "item-added-to-cart-animation" : wiggleRef.current.get() === "less" ? "item-removed-from-cart-animation" : "",
535
+ className
536
+ ),
537
+ children: [
538
+ !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: [
539
+ /* @__PURE__ */ jsx("div", { className: "h-[3px] w-full" }),
540
+ /* @__PURE__ */ jsx("div", { children: c.cartQuantity })
541
+ ] }),
542
+ /* @__PURE__ */ jsx(bag_icon_default, { width: "24", height: "28", className: cn(
543
+ "relative -top-[3px] fill-primary",
544
+ iconClx,
545
+ animateOnHover ? "group-hover:fill-primary-hover group-hover:scale-105 transition-scale transition-duration-300" : ""
546
+ ), "aria-hidden": "true" })
547
+ ]
548
+ }
549
+ );
550
+ });
551
+ var bag_button_default = BagButton;
552
+ var DesktopNav = ({ links, isMenuOpened, setIsMenuOpen }) => {
553
+ React7.useEffect(() => {
554
+ const preventScroll = (e) => {
555
+ e.preventDefault();
556
+ };
557
+ if (isMenuOpened) {
558
+ window.addEventListener("wheel", preventScroll, { passive: false });
559
+ window.addEventListener("touchmove", preventScroll, { passive: false });
560
+ window.addEventListener("keydown", preventScrollKeys, { passive: false });
561
+ } else {
562
+ window.removeEventListener("wheel", preventScroll);
563
+ window.removeEventListener("touchmove", preventScroll);
564
+ window.removeEventListener("keydown", preventScrollKeys);
565
+ }
566
+ return () => {
567
+ window.removeEventListener("wheel", preventScroll);
568
+ window.removeEventListener("touchmove", preventScroll);
569
+ window.removeEventListener("keydown", preventScrollKeys);
570
+ };
571
+ }, [isMenuOpened]);
572
+ const preventScrollKeys = (e) => {
573
+ if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", " "].includes(e.key)) {
574
+ e.preventDefault();
575
+ }
576
+ };
577
+ const handleMouseEnter = React7.useCallback(() => {
578
+ setIsMenuOpen(true);
579
+ }, [setIsMenuOpen]);
580
+ const handleMouseLeave = React7.useCallback(() => {
581
+ setIsMenuOpen(false);
582
+ }, [setIsMenuOpen]);
583
+ const handleContentMouseMove = () => {
584
+ setIsMenuOpen(false);
585
+ };
586
+ const menuHiddenClass = !isMenuOpened ? "invisible" : "";
587
+ return links.length > 0 ? /* @__PURE__ */ jsx(NavigationMenu, { children: /* @__PURE__ */ jsx(NavigationMenuList, { children: links.map((el, index) => /* @__PURE__ */ jsx(NavigationMenuItem, { className: "!m-0", children: el.isAIMenu ? /* @__PURE__ */ jsx(Link2, { href: el.href, style: css(cn(navigationMenuTriggerStyle(), " text-muted-1 bg-transparent")), children: el.title }) : el.title === "Cards" ? /* @__PURE__ */ jsxs(Fragment, { children: [
588
+ /* @__PURE__ */ jsx(
589
+ NavigationMenuTrigger,
590
+ {
591
+ className: "text-muted-1 bg-transparent",
592
+ onMouseEnter: handleMouseEnter,
593
+ onFocus: handleMouseEnter,
594
+ onMouseLeave: handleMouseLeave,
595
+ onBlur: handleMouseLeave,
596
+ children: /* @__PURE__ */ jsx(Link2, { href: el.href, children: el.title })
597
+ }
598
+ ),
599
+ /* @__PURE__ */ jsx(
600
+ NavigationMenuContent,
601
+ {
602
+ className: cn("fixed left-0 top-14 pt-6 w-screen h-full border-0 !backdrop-blur-3xl bg-transparent mt-0", menuHiddenClass),
603
+ onMouseEnter: handleMouseEnter,
604
+ onMouseLeave: handleMouseLeave,
605
+ children: /* @__PURE__ */ jsx("div", { className: "flex justify-center items-start", children: /* @__PURE__ */ jsx(
606
+ "div",
607
+ {
608
+ className: "grid xl:grid-cols-3 w-full justify-center max-w-[750px]",
609
+ onMouseLeave: handleContentMouseMove,
610
+ children: GroupChildMenu({ childs: el.childMenu, isCards: true })
611
+ }
612
+ ) })
613
+ }
614
+ )
615
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
616
+ /* @__PURE__ */ jsx(
617
+ NavigationMenuTrigger,
618
+ {
619
+ className: "text-muted-1 bg-transparent",
620
+ onMouseEnter: handleMouseEnter,
621
+ onFocus: handleMouseEnter,
622
+ onMouseLeave: handleMouseLeave,
623
+ onBlur: handleMouseLeave,
624
+ children: el.href && el.href !== "" ? /* @__PURE__ */ jsx(Link2, { href: el.href, children: el.title }) : /* @__PURE__ */ jsx(Fragment, { children: el.title })
625
+ }
626
+ ),
627
+ /* @__PURE__ */ jsx(
628
+ NavigationMenuContent,
629
+ {
630
+ className: cn("fixed left-0 top-14 pt-6 w-screen h-full border-0 !backdrop-blur-3xl bg-transparent mt-0", menuHiddenClass),
631
+ onMouseEnter: handleMouseEnter,
632
+ onMouseLeave: handleMouseLeave,
633
+ children: /* @__PURE__ */ jsx(
634
+ "div",
635
+ {
636
+ className: "flex flex-row w-full justify-center",
637
+ onMouseLeave: handleContentMouseMove,
638
+ children: GroupChildMenu({ childs: el.childMenu })
639
+ }
640
+ )
641
+ }
642
+ )
643
+ ] }) }, index)) }) }) : null;
644
+ };
645
+ var desktop_nav_menu_default = DesktopNav;
646
+ var ListItem = React7.forwardRef(({ className, title: title2, children, ...props }, ref) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(NavigationMenuLink, { asChild: true, children: /* @__PURE__ */ jsxs(
647
+ Box,
648
+ {
649
+ tag: "a",
650
+ ref,
651
+ className: cn(
652
+ "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",
653
+ className
654
+ ),
655
+ ...props,
656
+ children: [
657
+ /* @__PURE__ */ jsx("div", { className: "text-sm font-medium leading-none", children: title2 }),
658
+ /* @__PURE__ */ jsx("p", { className: "line-clamp-3 text-sm leading-snug text-muted-1", children })
659
+ ]
660
+ }
661
+ ) }) }, title2));
662
+ ListItem.displayName = "ListItem";
663
+ var GroupChildMenu = (params) => {
664
+ const { childs, isCards = false } = params;
665
+ if (!childs) {
666
+ return null;
667
+ }
668
+ const groupedChildMenus = childs.reduce((grouped, childLink) => {
669
+ if (childLink.groupName) {
670
+ grouped[childLink.groupName] = grouped[childLink.groupName] || [];
671
+ grouped[childLink.groupName].push(childLink);
672
+ }
673
+ return grouped;
674
+ }, {});
675
+ const getChildExtraClass = (index) => {
676
+ if (isCards && (index === 3 || index === 4)) {
677
+ return "xl:-mt-32";
678
+ }
679
+ return "";
680
+ };
681
+ return Object.entries(groupedChildMenus).map(([groupName, childLinks], index) => /* @__PURE__ */ jsxs(Box, { className: cn("py-4 px-4 ", getChildExtraClass(index)), children: [
682
+ /* @__PURE__ */ jsx("h2", { className: "text-muted-1", children: groupName }),
683
+ /* @__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: [
684
+ link.icon,
685
+ /* @__PURE__ */ jsx(ListItem, { title: link.title, href: link.href, className: "ml-[14px]", children: link.contents }, link.title)
686
+ ] }, link.title)) })
687
+ ] }, groupName));
688
+ };
689
+ var DesktopHeader = ({
690
+ links,
691
+ className = "",
692
+ noAuth = false,
693
+ noCommerce = false,
694
+ children,
695
+ logoVariant = "full"
696
+ }) => {
697
+ const [isMenuOpened, setIsMenuOpen] = React7__default.useState(false);
698
+ return /* @__PURE__ */ jsx(Box, { tag: "header", id: "DESKTOP_HEADER", className: cn(
699
+ "bg-[rgba(0, 0, 0, 0.5)] !backdrop-blur-3xl fixed z-header top-0 left-0 right-0",
700
+ className,
701
+ isMenuOpened ? " h-full" : ""
702
+ ), children: /* @__PURE__ */ jsxs(Box, { className: "flex flex-row h-[80px] items-center justify-between mx-[24px] w-full max-w-screen", children: [
703
+ /* @__PURE__ */ jsx(Logo, { size: logoVariant === "mark" ? "lg" : "md", href: "/", outerClx: "hidden lg:flex", variant: logoVariant }, "two"),
704
+ /* @__PURE__ */ jsx(Logo, { size: "sm", href: "/", outerClx: "hidden md:flex lg:hidden", variant: logoVariant }, "one"),
705
+ /* @__PURE__ */ jsx("div", { className: "flex w-full gap-4 items-center justify-center", children: /* @__PURE__ */ jsx(desktop_nav_menu_default, { links, isMenuOpened, setIsMenuOpen }) }),
706
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
707
+ !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" }) }),
708
+ !noAuth && /* @__PURE__ */ jsx(widget_default, {}),
709
+ children
710
+ ] })
711
+ ] }) });
712
+ };
713
+ var desktop_default = DesktopHeader;
714
+ var Login = ({
715
+ className,
716
+ onSuccess
717
+ }) => {
718
+ const { config } = useIam();
719
+ const [state] = useState(() => crypto.randomUUID());
720
+ useEffect(remember, []);
721
+ return /* @__PURE__ */ jsx(
722
+ Login$1,
723
+ {
724
+ serverUrl: config.serverUrl,
725
+ clientId: config.clientId,
726
+ redirectUri: config.redirectUri,
727
+ organization: config.organization,
728
+ state,
729
+ className: cn("hanzo-iam-card", className),
730
+ onSuccess
731
+ }
732
+ );
733
+ };
734
+ var login_default = Login;
735
+ var MobileMenuToggleButton = ({
736
+ open: open2,
737
+ setOpen,
738
+ className = ""
739
+ }) => {
740
+ return /* @__PURE__ */ jsx(
741
+ Button,
742
+ {
743
+ variant: "ghost",
744
+ size: "default",
745
+ className: cn("rounded-full", cn("p-0 aspect-square hover:bg-background sm:hover:bg-level-1 active:scale-75", className)),
746
+ onClick: () => {
747
+ setOpen(!open2);
748
+ },
749
+ children: /* @__PURE__ */ jsx(Plus, { width: 28, height: 28, style: css(
750
+ "block h-full will-change-transform transition-transform transition-scale transition-duration-[1500] " + (open2 ? "rotate-[135deg] scale-110" : "rotate-none")
751
+ ) })
752
+ }
753
+ );
754
+ };
755
+ var mobile_menu_toggle_button_default = MobileMenuToggleButton;
756
+ var MobileBagDrawer = ({
757
+ open: open2,
758
+ setOpen,
759
+ handleCheckout,
760
+ className = ""
761
+ }) => {
762
+ return /* @__PURE__ */ jsx(Drawer, { open: open2, onOpenChange: setOpen, children: /* @__PURE__ */ jsx(DrawerContent, { className: cn("rounded-t-xl mt-6 pb-12 h-auto", className), children: /* @__PURE__ */ jsxs(
763
+ CartPanel,
764
+ {
765
+ handleCheckout,
766
+ className: "mt-4 mb-4 border-none py-0 px-4 w-full ",
767
+ listClx: "rounded-sm pr-3",
768
+ scrollAfter: 5,
769
+ itemClx: "mt-2",
770
+ totalClx: "sticky px-1 pr-2 border rounded-sm -bottom-[1px] bg-background",
771
+ buttonClx: "max-w-[220px] flex-none",
772
+ children: [
773
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
774
+ /* @__PURE__ */ jsx(
775
+ bag_button_default,
776
+ {
777
+ animateOnHover: false,
778
+ showIfEmpty: true,
779
+ className: "mr-2 relative w-6 h-7",
780
+ iconClx: "fill-foreground "
781
+ }
782
+ ),
783
+ /* @__PURE__ */ jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
784
+ ] }),
785
+ /* @__PURE__ */ jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
786
+ ]
787
+ }
788
+ ) }) });
789
+ };
790
+ var mobile_bag_drawer_default = MobileBagDrawer;
791
+ var MobileNavMenuAI = ({ setMenuOpen }) => {
792
+ const [isOpen, setIsOpen] = useState(false);
793
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
794
+ /* @__PURE__ */ jsxs(Box, { className: "w-full text-2xl cursor-pointer", children: [
795
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
796
+ /* @__PURE__ */ jsx(Logo, { variant: "wordmark", size: "md", outerClx: "p-6 h-full" }),
797
+ /* @__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) }) })
798
+ ] }),
799
+ /* @__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: [
800
+ /* @__PURE__ */ jsx("span", { className: "text-base pl-2 font-light", children: "Ask AI a question" }),
801
+ /* @__PURE__ */ jsx(ArrowRight, {})
802
+ ] }) })
803
+ ] }),
804
+ /* @__PURE__ */ jsx(Box, { className: "fixed bottom-0 sm:bottom-16 right-0 w-full h-full sm:max-w-[400px] sm:max-h-[550px] sm:px-4 z-floating " + (isOpen ? "flex" : "hidden"), children: /* @__PURE__ */ jsxs(Card, { className: "flex flex-col h-full w-full", children: [
805
+ /* @__PURE__ */ jsxs("div", { className: "flex px-4 py-2 h-16 bg-level-0 items-center justify-between", children: [
806
+ /* @__PURE__ */ jsxs("h3", { className: "font-semibold font-heading", children: [
807
+ "LUX",
808
+ /* @__PURE__ */ jsx("span", { className: "opacity-60", children: "AI" })
809
+ ] }),
810
+ /* @__PURE__ */ jsx(Button, { onClick: () => setIsOpen(false), variant: "link", size: "icon", className: "w-fit sm:hidden", children: /* @__PURE__ */ jsx(Plus, { className: "w-6 h-6 flex-none mr-1 rotate-45 transition-transform" }) })
811
+ ] }),
812
+ /* @__PURE__ */ jsx("iframe", { src: "https://lux.chat/iframe", className: "h-full" })
813
+ ] }) })
814
+ ] });
815
+ };
816
+ var mobile_nav_menu_ai_default = MobileNavMenuAI;
817
+ var MobileNav = ({
818
+ currentAs,
819
+ links,
820
+ setMenuState,
821
+ className = "",
822
+ commonItemClx,
823
+ setChatbotOpen,
824
+ setMenuOpen
825
+ }) => links.length > 0 ? /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col h-full", className), children: [
826
+ /* @__PURE__ */ jsx(mobile_nav_menu_ai_default, { setMenuOpen }),
827
+ /* @__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) => {
828
+ const itemClx = commonItemClx ? typeof commonItemClx === "string" ? commonItemClx : commonItemClx(el) : "";
829
+ const variant = el.variant ?? "link";
830
+ let internalClx = variant === "link" ? " text-muted hover:text-foreground active:text-accent rounded-none" : " min-w-0";
831
+ if (currentAs && currentAs === el.href) {
832
+ internalClx += " pointer-events-none";
833
+ if (variant === "link") {
834
+ internalClx += " text-accent";
835
+ }
836
+ }
837
+ if (!el.isAIMenu) {
838
+ return /* @__PURE__ */ jsxs(AccordionItem, { value: el.title ? el.title : "", className: "!no-underline !border-0 px-6", children: [
839
+ /* @__PURE__ */ jsxs(AccordionTrigger, { className: cn(internalClx, itemClx, ""), children: [
840
+ /* @__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 }),
841
+ /* @__PURE__ */ jsx(ChevronDown, { style: css("w-4 h-4 mr-3") })
842
+ ] }),
843
+ /* @__PURE__ */ jsx(AccordionContent, { children: el.childMenu && /* @__PURE__ */ jsx(Box, { className: "px-4", children: Object.entries(el.childMenu.reduce((acc, child) => {
844
+ const group = acc[child.groupName ? child.groupName : ""] || [];
845
+ group.push(child);
846
+ acc[child.groupName ? child.groupName : ""] = group;
847
+ return acc;
848
+ }, {})).map(([groupName, children]) => /* @__PURE__ */ jsxs("div", { children: [
849
+ /* @__PURE__ */ jsx(Box, { className: "mt-4 mb-4 font-light text-muted-1", children: groupName }),
850
+ children.map((child, childIndex) => /* @__PURE__ */ jsx(Box, { className: "m-2", children: /* @__PURE__ */ jsxs(Box, { className: "flex items-center py-1", children: [
851
+ /* @__PURE__ */ jsx("span", { children: child.icon && child.icon }),
852
+ /* @__PURE__ */ jsx(
853
+ Link2,
854
+ {
855
+ href: child.href,
856
+ target: child.newTab ? "_blank" : "_self",
857
+ rel: "noopener noreferrer",
858
+ children: /* @__PURE__ */ jsx(Box, { tag: "span", className: "text-muted-2 hover:underline ml-5 hover:text-primary", children: child.title })
859
+ }
860
+ )
861
+ ] }) }, childIndex))
862
+ ] }, groupName)) }) })
863
+ ] }, index);
864
+ }
865
+ }) }) }),
866
+ /* @__PURE__ */ jsx(widget_default, { className: "text-2xl z-10", handleLogin: () => {
867
+ setMenuState("login");
868
+ } })
869
+ ] }) : null;
870
+ var mobile_nav_menu_default = MobileNav;
871
+ 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 ";
872
+ var MobileHeader = ({
873
+ currentAs,
874
+ links,
875
+ className = "",
876
+ setChatbotOpen,
877
+ noAuth = false,
878
+ // :aa TODO
879
+ noCommerce = false
880
+ // :aa TODO
881
+ }) => {
882
+ const cmmc = useCommerce();
883
+ const [menuState, setMenuState] = useState("closed");
884
+ const [bagDrawerOpen, setBagDrawerOpen] = useState(false);
885
+ const router = useRouter();
886
+ useEffect(() => {
887
+ if (menuState === "bag" || bagDrawerOpen) {
888
+ sendGAEvent("view_cart", {
889
+ items: cmmc.cartItems.map((item) => ({
890
+ item_id: item.sku,
891
+ item_name: item.title,
892
+ item_category: item.familyId,
893
+ price: item.price,
894
+ quantity: item.quantity
895
+ })),
896
+ value: cmmc.cartTotal,
897
+ currency: "USD"
898
+ });
899
+ }
900
+ }, [menuState, bagDrawerOpen]);
901
+ const menuOpen = () => menuState !== "closed";
902
+ const onLoginChanged = (token) => {
903
+ if (!!token) {
904
+ setMenuState("nav");
905
+ }
906
+ };
907
+ const setMenuOpen = (open2) => {
908
+ if (!open2) {
909
+ setMenuState("closed");
910
+ } else {
911
+ setMenuState("nav");
912
+ }
913
+ };
914
+ const handleCheckout = () => {
915
+ setMenuState("closed");
916
+ setBagDrawerOpen(false);
917
+ router.push("/checkout");
918
+ };
919
+ const openBag = () => {
920
+ if (menuOpen()) {
921
+ setMenuState("bag");
922
+ } else {
923
+ setBagDrawerOpen(true);
924
+ }
925
+ };
926
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
927
+ /* @__PURE__ */ jsx(Box, { tag: "header", id: "MOBILE_HEADER", className: cn(
928
+ `bg-background fixed z-header top-0 left-0 w-full ${menuOpen() ? "hidden" : "block"}`,
929
+ className
930
+ ), children: /* @__PURE__ */ jsxs("div", { className: "w-full h-full flex flex-row justify-between items-center font-bold pr-5", children: [
931
+ /* @__PURE__ */ jsx(Logo, { href: "/", size: "md", outerClx: "p-6 h-full", variant: "wordmark" }),
932
+ 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 " }) }),
933
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-0 flex-row", children: [
934
+ /* @__PURE__ */ jsx(bag_button_default, { className: "text-primary -mr-[3px]", onClick: openBag }),
935
+ /* @__PURE__ */ jsx(mobile_menu_toggle_button_default, { className: "text-foreground", open: menuOpen(), setOpen: setMenuOpen })
936
+ ] })
937
+ ] }) }),
938
+ !noCommerce && /* @__PURE__ */ jsx(
939
+ mobile_bag_drawer_default,
940
+ {
941
+ className: "",
942
+ open: bagDrawerOpen,
943
+ setOpen: setBagDrawerOpen,
944
+ handleCheckout
945
+ }
946
+ ),
947
+ 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(
948
+ CartPanel,
949
+ {
950
+ handleCheckout: () => {
951
+ router.push("/checkout");
952
+ },
953
+ className: bagClx,
954
+ listClx: "rounded-sm",
955
+ scrollAfter: 6,
956
+ scrollHeightClx: "h-[80vh]",
957
+ itemClx: "mt-2",
958
+ totalClx: "sticky px-1 pr-2 border rounded-sm -bottom-[1px] bg-level-1",
959
+ buttonClx: "max-w-[220px] flex-none",
960
+ children: [
961
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
962
+ /* @__PURE__ */ jsx(bag_icon_default, { className: "mr-2 relative w-4 h-5 fill-foreground " }),
963
+ /* @__PURE__ */ jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
964
+ ] }),
965
+ /* @__PURE__ */ jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
966
+ ]
967
+ }
968
+ ) : (
969
+ /* menuState === 'nav' */
970
+ /* @__PURE__ */ jsx(
971
+ mobile_nav_menu_default,
972
+ {
973
+ currentAs,
974
+ links,
975
+ className: "sm:animate-in sm:zoom-in-90 w-full",
976
+ commonItemClx: "px-0 text-xl h-16 justify-start ",
977
+ setMenuState,
978
+ setChatbotOpen,
979
+ setMenuOpen
980
+ }
981
+ )
982
+ ) })
983
+ ] });
984
+ };
985
+ var mobile_default = MobileHeader;
986
+ var Header = ({
987
+ siteDef,
988
+ className = "",
989
+ children,
990
+ logoVariant = "full"
991
+ }) => {
992
+ const [open2, setOpen] = React7__default.useState(false);
993
+ const { nav: { common, featured }, currentAs, noAuth, commerce } = siteDef;
994
+ const links = featured ? [...common, ...featured] : common;
995
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
996
+ /* @__PURE__ */ jsx(
997
+ desktop_default,
998
+ {
999
+ className: cn(className, "hidden md:flex"),
1000
+ links,
1001
+ currentAs,
1002
+ noAuth,
1003
+ noCommerce: !!!commerce,
1004
+ logoVariant,
1005
+ children
1006
+ }
1007
+ ),
1008
+ /* @__PURE__ */ jsx(
1009
+ mobile_default,
1010
+ {
1011
+ className: cn(className, "md:hidden"),
1012
+ links,
1013
+ currentAs,
1014
+ setChatbotOpen: setOpen,
1015
+ noAuth,
1016
+ noCommerce: !!!commerce
1017
+ }
1018
+ )
1019
+ ] });
1020
+ };
1021
+ var header_default = Header;
1022
+ var Main = ({
1023
+ children,
1024
+ className = "",
1025
+ headerSpace = true,
1026
+ standardWidth = true,
1027
+ id
1028
+ }) => /* @__PURE__ */ jsx(Box, { tag: "main", id: id ?? "LUX_UI_MAIN", className: cn(
1029
+ "flex flex-col justify-start items-center",
1030
+ "px-4 md:px-6 lg:px-8",
1031
+ standardWidth ? "max-w-screen-2xl w-full lg:mx-auto" : "",
1032
+ headerSpace ? "pt-[44px] md:pt-[80px]" : "py-4",
1033
+ className
1034
+ ), children });
1035
+ var main_default = Main;
1036
+ var MiniChart = ({
1037
+ widgetProps,
1038
+ containerStyles = {}
1039
+ }) => {
1040
+ const {
1041
+ symbol,
1042
+ exchange,
1043
+ lineColor,
1044
+ topGradientColor,
1045
+ bottomGradientColor,
1046
+ width,
1047
+ height,
1048
+ autosize,
1049
+ locale,
1050
+ ...rest
1051
+ } = widgetProps;
1052
+ const symbolString = exchange ? `${exchange}:${symbol}` : symbol;
1053
+ const containerRef = useRef(null);
1054
+ useEffect(() => {
1055
+ if (!containerRef.current) {
1056
+ return;
1057
+ }
1058
+ const script = document.createElement("script");
1059
+ script.type = "text/javascript";
1060
+ script.src = "https://s3.tradingview.com/external-embedding/embed-widget-mini-symbol-overview.js";
1061
+ script.async = true;
1062
+ script.onload = async () => {
1063
+ const iframe = containerRef.current?.querySelector("iframe");
1064
+ if (iframe && iframe instanceof Element) {
1065
+ iframe.style.colorScheme = "normal";
1066
+ setTimeout(() => {
1067
+ document.querySelector("#mini-symbol-overview-ticker");
1068
+ }, 1200);
1069
+ }
1070
+ const copyDiv = document.querySelector(".tradingview-widget-copyright");
1071
+ if (copyDiv) {
1072
+ setTimeout(() => {
1073
+ copyDiv.classList.remove("invisible");
1074
+ }, 1200);
1075
+ }
1076
+ };
1077
+ const config = JSON.stringify({
1078
+ symbol: symbolString,
1079
+ width: autosize ? "100%" : width || 350,
1080
+ height: autosize ? "100%" : height || 220,
1081
+ locale: locale ?? "en",
1082
+ isTransparent: "true",
1083
+ trendLineColor: lineColor || "rgba(41, 98, 255, 1)",
1084
+ underLineColor: topGradientColor || "rgba(41, 98, 255, 0.3)",
1085
+ underLineBottomColor: bottomGradientColor || "rgba(41, 98, 255, 0)",
1086
+ ...rest
1087
+ });
1088
+ script.innerHTML = config;
1089
+ containerRef.current.appendChild(script);
1090
+ return () => {
1091
+ while (containerRef.current?.firstChild) {
1092
+ containerRef.current.removeChild(containerRef.current.firstChild);
1093
+ }
1094
+ };
1095
+ }, [JSON.stringify(widgetProps)]);
1096
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1097
+ /* @__PURE__ */ jsx("div", { style: containerStyles, className: "tradingview-widget-container h-[150px]", ref: containerRef }),
1098
+ /* @__PURE__ */ jsxs("div", { className: "tradingview-widget-copyright border-t w-full invisible", children: [
1099
+ /* @__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: [
1100
+ symbol,
1101
+ " quotes"
1102
+ ] }) }),
1103
+ "\xA0by TradingView"
1104
+ ] })
1105
+ ] });
1106
+ };
1107
+ var mini_chart_default = MiniChart;
1108
+ var Wrapper = ({
1109
+ symbol,
1110
+ exchange
1111
+ }) => /* @__PURE__ */ jsx(mini_chart_default, { widgetProps: {
1112
+ symbol,
1113
+ exchange,
1114
+ autosize: true,
1115
+ colorTheme: "dark",
1116
+ lineColor: "rgb(114, 27, 228)",
1117
+ bottomGradientColor: "rgba(255, 255, 255, 0.1)",
1118
+ dateRange: "60M"
1119
+ } });
1120
+ var wrapper_default = Wrapper;
1121
+ var NotFound = ({
1122
+ header = false,
1123
+ siteDef
1124
+ }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1125
+ header && /* @__PURE__ */ jsx(header_default, { siteDef }),
1126
+ /* @__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: [
1127
+ /* @__PURE__ */ jsx("h3", { children: "...Huh?" }),
1128
+ /* @__PURE__ */ jsx("h4", { children: "Sorry, we're fresh out of those." }),
1129
+ /* @__PURE__ */ jsxs("h4", { children: [
1130
+ "...try something from the ",
1131
+ /* @__PURE__ */ jsx("a", { href: "/", children: "Home Page" }),
1132
+ "?"
1133
+ ] })
1134
+ ] }) }),
1135
+ /* @__PURE__ */ jsx(footer_default, { siteDef })
1136
+ ] });
1137
+ var not_found_default = NotFound;
1138
+ var ORG = "lux";
1139
+ var CALLBACK = "/auth/callback";
1140
+ var configure = (app) => ({
1141
+ serverUrl: BRAND_SERVER_URLS[ORG],
1142
+ organization: ORG,
1143
+ clientId: `${ORG}-${app}`,
1144
+ /* Read per render rather than at module load: one bundle serves the real
1145
+ host and any preview of it, and each must redeem its code back to itself. */
1146
+ redirectUri: (typeof window === "undefined" ? "" : window.location.origin) + CALLBACK
1147
+ });
1148
+ var Auth = ({ app, children }) => /* @__PURE__ */ jsx(IamProvider, { config: configure(app), children });
1149
+ var provider_default = Auth;
1150
+ var BackButton = ({
1151
+ variant = "ghost",
1152
+ size = "default",
1153
+ clx = "",
1154
+ iconClx = "",
1155
+ onBack
1156
+ }) => {
1157
+ const router = useRouter();
1158
+ const back = () => {
1159
+ if (onBack) {
1160
+ onBack();
1161
+ }
1162
+ router.back();
1163
+ };
1164
+ return /* @__PURE__ */ jsx(
1165
+ Button,
1166
+ {
1167
+ variant,
1168
+ size,
1169
+ onClick: back,
1170
+ className: clx,
1171
+ children: /* @__PURE__ */ jsx(ChevronLeft, { style: css(iconClx) })
1172
+ }
1173
+ );
1174
+ };
1175
+ var back_button_default = BackButton;
1176
+ enableStaticRendering(typeof window === "undefined");
1177
+ var CommerceUIContext = createContext(void 0);
1178
+ var useCommerceDrawer = () => {
1179
+ return useContext(CommerceUIContext);
1180
+ };
1181
+ var useSelectAndBuy = () => {
1182
+ return useContext(CommerceUIContext);
1183
+ };
1184
+ var CommerceDrawer = observer(({
1185
+ children,
1186
+ handleHandleClicked,
1187
+ drawerClx = "",
1188
+ ...rest
1189
+ }) => {
1190
+ const drawer = useCommerceDrawer();
1191
+ return /* @__PURE__ */ jsx(
1192
+ Drawer,
1193
+ {
1194
+ open: drawer.open,
1195
+ onOpenChange: () => {
1196
+ },
1197
+ modal: drawer.modal,
1198
+ snapPoints: drawer.points,
1199
+ activeSnapPoint: drawer.activePoint,
1200
+ setActiveSnapPoint: drawer.onActivePointChanged.bind(drawer),
1201
+ fastDragSkipsToEnd: false,
1202
+ dragHandleOnly: true,
1203
+ handleHandleClicked,
1204
+ extendHandleDragRegion: false,
1205
+ ...rest,
1206
+ children: /* @__PURE__ */ jsxs(
1207
+ DrawerContent,
1208
+ {
1209
+ defaultHandle: false,
1210
+ className: cn(
1211
+ "border-0",
1212
+ drawer.isMobile ? "pt-5" : "pt-6",
1213
+ "w-full h-full"
1214
+ ),
1215
+ onOpenAutoFocus: (e) => {
1216
+ e.preventDefault();
1217
+ },
1218
+ children: [
1219
+ /* @__PURE__ */ jsx(
1220
+ DrawerHandle,
1221
+ {
1222
+ className: cn(
1223
+ "absolute top-0 left-0 right-0 mx-auto z-10",
1224
+ "flex justify-center items-start",
1225
+ "border-t rounded-t-lg border-muted-3",
1226
+ drawer.isMobile ? "h-5 touch-pan-y" : "h-6"
1227
+ ),
1228
+ children: /* @__PURE__ */ jsx(Box, { className: cn(
1229
+ // pseudo-handle
1230
+ "rounded-[3px] bg-level-3",
1231
+ drawer.isMobile ? "w-[155px] mt-[5px] h-1.5" : "w-[180px] mt-[3px] h-2.5 hover:bg-level-4",
1232
+ !drawer.isMobile ? "cursor-grab active:cursor-grabbing" : ""
1233
+ ) })
1234
+ }
1235
+ ),
1236
+ children
1237
+ ]
1238
+ }
1239
+ )
1240
+ }
1241
+ );
1242
+ });
1243
+ var shell_default = CommerceDrawer;
1244
+ var IconAndQuantity = observer(({
1245
+ animateOnQuantityChange = false,
1246
+ showArrow = true,
1247
+ showQuantity = true,
1248
+ clx = "",
1249
+ iconClx = "",
1250
+ digitClx = ""
1251
+ }) => {
1252
+ const cmmc = useCommerce();
1253
+ const wiggleRef = useRef(observable.box("none"));
1254
+ useEffect(() => (
1255
+ // return IReactionDisposer
1256
+ animateOnQuantityChange ? reaction(
1257
+ () => cmmc.cartQuantity,
1258
+ (curr, prev) => {
1259
+ if (curr > prev) {
1260
+ runInAction(() => {
1261
+ wiggleRef.current.set("more");
1262
+ });
1263
+ } else {
1264
+ runInAction(() => {
1265
+ wiggleRef.current.set("less");
1266
+ });
1267
+ }
1268
+ setTimeout(() => {
1269
+ runInAction(() => {
1270
+ wiggleRef.current.set("none");
1271
+ });
1272
+ }, 800);
1273
+ }
1274
+ ) : void 0
1275
+ ), []);
1276
+ return /* @__PURE__ */ jsxs(Box, { className: cn("flex items-center justify-center", clx), children: [
1277
+ showQuantity && /* @__PURE__ */ jsxs(Box, { className: cn(
1278
+ "relative flex items-center justify-center mr-1",
1279
+ wiggleRef.current.get() === "more" ? "item-added-to-cart-animation" : wiggleRef.current.get() === "less" ? "item-removed-from-cart-animation" : ""
1280
+ ), children: [
1281
+ cmmc.cartQuantity > 0 && /* @__PURE__ */ jsx(Box, { className: cn(
1282
+ "z-above-content flex flex-col justify-center items-center",
1283
+ "absolute left-0 right-0 top-0 bottom-0",
1284
+ digitClx
1285
+ ), children: /* @__PURE__ */ jsx("div", { style: {
1286
+ /* color: 'white' tailwind bug? ,*/
1287
+ fontSize: "11px",
1288
+ position: "relative",
1289
+ top: "1px"
1290
+ }, children: cmmc.cartQuantity }) }),
1291
+ /* @__PURE__ */ jsx(bag_icon_default, { width: "19", height: "24", className: cn("relative -top-[3px] opacity-70", iconClx), "aria-hidden": "true" })
1292
+ ] }),
1293
+ showArrow && /* @__PURE__ */ jsx("span", { style: { fontSize: "17px" }, children: "\u203A" })
1294
+ ] });
1295
+ });
1296
+ var CheckoutButton = ({
1297
+ handleCheckout,
1298
+ variant = "primary",
1299
+ rounded = "lg",
1300
+ className,
1301
+ showQuantity = true,
1302
+ showArrow = true,
1303
+ animateOnQuantityChange = true,
1304
+ centerText = true,
1305
+ children,
1306
+ ...rest
1307
+ }) => {
1308
+ return /* @__PURE__ */ jsxs(
1309
+ Button,
1310
+ {
1311
+ ...rest,
1312
+ onClick: handleCheckout,
1313
+ variant,
1314
+ className: cn(`rounded-${rounded}`, cn(
1315
+ "flex justify-between items-stretch group",
1316
+ showQuantity ? centerText ? "px-1.5" : "pl-2.5 pr-1.5" : "",
1317
+ className
1318
+ )),
1319
+ children: [
1320
+ centerText && // must scale this one too, as it effects layout
1321
+ /* @__PURE__ */ jsx(
1322
+ IconAndQuantity,
1323
+ {
1324
+ showArrow,
1325
+ showQuantity,
1326
+ clx: "invisible group-hover:scale-105 transition-scale transition-duration-300"
1327
+ }
1328
+ ),
1329
+ children ?? /* @__PURE__ */ jsx("div", { className: "flex justify-center items-center", children: "Checkout" }),
1330
+ /* @__PURE__ */ jsx(
1331
+ IconAndQuantity,
1332
+ {
1333
+ clx: "group-hover:scale-105 transition-scale transition-duration-300",
1334
+ animateOnQuantityChange,
1335
+ showArrow,
1336
+ showQuantity,
1337
+ iconClx: "fill-background",
1338
+ digitClx: "text-foreground group-hover:opacity-80 leading-none font-bold font-sans"
1339
+ }
1340
+ )
1341
+ ]
1342
+ }
1343
+ );
1344
+ };
1345
+ var checkout_button_default = CheckoutButton;
1346
+ var CN = {
1347
+ // h: mind padding!
1348
+ mobile: { w: 36, h: 32 },
1349
+ sm: { w: 60, h: 34 },
1350
+ desktop: { w: 60, h: 32 }
1351
+ };
1352
+ var Info = ({
1353
+ item,
1354
+ clx = ""
1355
+ }) => {
1356
+ const cmmc = useCommerce();
1357
+ const family = cmmc.getFamilyById(item.familyId);
1358
+ let topLine = family.title;
1359
+ if (item.sku.startsWith("LXM-AG") || item.sku.startsWith("LXM-AU")) {
1360
+ topLine = family.parentTitle + ", " + family.title;
1361
+ }
1362
+ const optionLabel = item.optionLabelShort ?? item.optionLabel;
1363
+ const priceStr = formatCurrencyValue(item.price);
1364
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1365
+ /* @__PURE__ */ jsxs(Box, { className: cn("sm:hidden flex flex-col !text-muted items-stretch whitespace-nowrap text-ellipsis ", clx), children: [
1366
+ /* @__PURE__ */ jsx("p", { className: "text-left text-xs", children: topLine }),
1367
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-between text-xxs", children: [
1368
+ /* @__PURE__ */ jsx("div", { children: optionLabel }),
1369
+ /* @__PURE__ */ jsx("div", { className: "pl-2.5", children: priceStr })
1370
+ ] })
1371
+ ] }),
1372
+ /* @__PURE__ */ jsxs(Box, { className: cn("hidden sm:flex !text-muted flex-col items-stretch whitespace-nowrap text-ellipsis text-xs", clx), children: [
1373
+ /* @__PURE__ */ jsx("p", { className: "text-left", children: topLine }),
1374
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
1375
+ /* @__PURE__ */ jsx("div", { children: optionLabel }),
1376
+ /* @__PURE__ */ jsx("div", { className: "pl-2.5", children: priceStr })
1377
+ ] })
1378
+ ] })
1379
+ ] });
1380
+ };
1381
+ var PROMPT_COMMON_CLX = "block absolute top-0 left-0 bg-transparent duration-400 transition-opacity";
1382
+ var Micro = observer(({
1383
+ clx = "",
1384
+ handleCheckout,
1385
+ handleItemClicked
1386
+ }) => {
1387
+ const drawer = useCommerceDrawer();
1388
+ const cmmc = useCommerce();
1389
+ return /* @__PURE__ */ jsxs(Box, { className: cn(
1390
+ drawer.showRecent ? "grid grid-cols-2" : "flex justify-center items-center ",
1391
+ drawer.showRecent ? drawer.isMobile ? "-mt-3" : "-mt-3" : "",
1392
+ "gap-2 md:gap-3 relative",
1393
+ clx
1394
+ ), children: [
1395
+ drawer.showRecent && /* @__PURE__ */ jsxs(Box, { className: "flex flex-col items-stretch " + (drawer.isMobile ? "justify-start" : "group"), children: [
1396
+ /* @__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: [
1397
+ /* @__PURE__ */ jsx("span", { className: "invisible", children: "scrictly for layout" }),
1398
+ drawer.isMobile ? /* @__PURE__ */ jsx(Box, { tag: "span", className: PROMPT_COMMON_CLX, children: "tap for options:" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1399
+ /* @__PURE__ */ jsx(Box, { tag: "span", className: PROMPT_COMMON_CLX + " group-hover:opacity-0", children: "recent item:" }),
1400
+ /* @__PURE__ */ jsx(Box, { tag: "span", className: PROMPT_COMMON_CLX + " opacity-0 group-hover:opacity-100", children: "view options:" })
1401
+ ] })
1402
+ ] }),
1403
+ /* @__PURE__ */ jsxs(
1404
+ Button,
1405
+ {
1406
+ variant: "ghost",
1407
+ className: cn(`rounded-${drawer.isMobile ? "md" : "lg"}`, cn(
1408
+ "box-content",
1409
+ "flex flex-row justify-between items-center gap-1",
1410
+ "-ml-1.5",
1411
+ "overflow-hidden ",
1412
+ "px-1 md:px-2 py-[2px]",
1413
+ "border border-transparent group-hover:border-muted-3",
1414
+ "group-hover:!bg-transparent",
1415
+ "!min-w-0"
1416
+ )),
1417
+ size: drawer.isMobile ? "sm" : "default",
1418
+ onClick: handleItemClicked,
1419
+ children: [
1420
+ cmmc.recentItem?.item.img && /* @__PURE__ */ jsxs(Fragment, { children: [
1421
+ /* @__PURE__ */ jsx(MediaStack, { media: { img: cmmc.recentItem.item.img }, constrainTo: CN.mobile, className: "sm:hidden grow-0 shrink-0" }),
1422
+ /* @__PURE__ */ jsx(MediaStack, { media: { img: cmmc.recentItem.item.img }, constrainTo: CN.sm, className: "hidden sm:block md:hidden grow-0 shrink-0" }),
1423
+ /* @__PURE__ */ jsx(MediaStack, { media: { img: cmmc.recentItem.item.img }, constrainTo: CN.desktop, className: "hidden md:block grow-0 shrink-0" })
1424
+ ] }),
1425
+ cmmc.recentItem && /* @__PURE__ */ jsx("div", { className: "grow w-full", children: /* @__PURE__ */ jsx(Info, { item: cmmc.recentItem.item, clx: "w-full" }) })
1426
+ ]
1427
+ }
1428
+ )
1429
+ ] }),
1430
+ drawer.showCheckout && /* @__PURE__ */ jsxs(Box, { className: cn(
1431
+ "flex flex-col w-full",
1432
+ drawer.showRecent ? "items-stretch" : "items-center",
1433
+ drawer.isMobile ? "justify-start" : "justify-center"
1434
+ ), children: [
1435
+ drawer.showRecent && /* @__PURE__ */ jsx("p", { className: "invisible text-muted text-xxs md:text-xs leading-none pl-1 self-start", children: "for layout" }),
1436
+ /* @__PURE__ */ jsx(
1437
+ checkout_button_default,
1438
+ {
1439
+ handleCheckout,
1440
+ variant: "primary",
1441
+ size: drawer.isMobile ? "sm" : "lg",
1442
+ className: cn(`rounded-${drawer.isMobile ? "md" : "lg"}`, cn(
1443
+ drawer.isMobile ? drawer.showRecent ? "pl-3.5 pr-2.5" : "min-w-[320px]" : drawer.showRecent ? "" : "w-[320px]",
1444
+ "text-sm font-semibold"
1445
+ )),
1446
+ centerText: drawer.isMobile ? !drawer.showRecent : true
1447
+ }
1448
+ )
1449
+ ] })
1450
+ ] });
1451
+ });
1452
+ var micro_default = Micro;
1453
+ var CommerceUIComponent = observer(() => {
1454
+ const buy = useSelectAndBuy();
1455
+ const drawer = useCommerceDrawer();
1456
+ const router = useRouter();
1457
+ const handleCheckout = () => {
1458
+ router.push("/checkout");
1459
+ };
1460
+ const handleHandleClicked = () => {
1461
+ if (drawer.state === "full") {
1462
+ buy.hideVariants();
1463
+ } else if (drawer.state === "micro") {
1464
+ buy.showRecentVariants();
1465
+ }
1466
+ };
1467
+ const handleItemClicked = () => {
1468
+ buy.showRecentVariants();
1469
+ };
1470
+ const handleCloseGesture = () => {
1471
+ if (drawer.state === "full") {
1472
+ buy.hideVariants();
1473
+ return true;
1474
+ }
1475
+ return false;
1476
+ };
1477
+ return /* @__PURE__ */ jsxs(
1478
+ shell_default,
1479
+ {
1480
+ handleHandleClicked,
1481
+ handleCloseGesture,
1482
+ drawerClx: "flex flex-col",
1483
+ children: [
1484
+ drawer.state === "full" && /* The actual drawer is larger than the visible area (due to awkward
1485
+ vaul impl. So we have to ask the drawer for its currect snappoint
1486
+ and constrain layout to that.
1487
+ */
1488
+ /* @__PURE__ */ jsx("div", { style: {
1489
+ height: drawer.snapPointPx - 24
1490
+ /* fudge factor for handle area */
1491
+ }, children: /* @__PURE__ */ jsx(
1492
+ CarouselBuyCard,
1493
+ {
1494
+ skuPath: buy.currentSkuPath,
1495
+ checkoutButton: /* @__PURE__ */ jsx(
1496
+ checkout_button_default,
1497
+ {
1498
+ handleCheckout,
1499
+ className: "w-full min-w-[160px] sm:max-w-[320px]"
1500
+ }
1501
+ ),
1502
+ clx: "justify-between h-full pb-3 gap-8",
1503
+ addBtnClx: "w-full min-w-[160px] sm:max-w-[320px]",
1504
+ buttonsAreaClx: "grow-0 shrink-0 mt-0",
1505
+ selectorClx: "max-w-[475px] justify-between grow"
1506
+ }
1507
+ ) }),
1508
+ drawer.state === "micro" && /* @__PURE__ */ jsx(
1509
+ micro_default,
1510
+ {
1511
+ handleCheckout,
1512
+ handleItemClicked,
1513
+ clx: "w-full px-2 sm:w-[460px] sm:mx-auto md:w-[550px]"
1514
+ }
1515
+ )
1516
+ ]
1517
+ }
1518
+ );
1519
+ });
1520
+ var drawer_default = CommerceUIComponent;
1521
+ var DrawerMargin = observer(({
1522
+ clx = ""
1523
+ }) => {
1524
+ const drawer = useCommerceDrawer();
1525
+ if (!drawer) {
1526
+ throw new Error("DrawerMargin must be used with a CommerceUIContext!");
1527
+ }
1528
+ return /* @__PURE__ */ jsx(
1529
+ Box,
1530
+ {
1531
+ className: cn("transition-height", clx),
1532
+ style: {
1533
+ height: drawer.state === "micro" ? drawer.microHeight : 0
1534
+ }
1535
+ }
1536
+ );
1537
+ });
1538
+ var drawer_margin_default = DrawerMargin;
1539
+ var BuyButton = ({
1540
+ skuPath,
1541
+ children,
1542
+ className = "",
1543
+ ...rest
1544
+ }) => {
1545
+ const buyOptions = useSelectAndBuy();
1546
+ const handleClick = () => {
1547
+ buyOptions.showVariants(skuPath);
1548
+ };
1549
+ return /* @__PURE__ */ jsx(Button, { onClick: handleClick, ...rest, className: cn(className, ""), children });
1550
+ };
1551
+ var buy_button_default = BuyButton;
1552
+ var ThankYou = ({}) => /* @__PURE__ */ jsxs(ApplyTypography, { className: "flex flex-col gap-4 text-center mt-10", children: [
1553
+ /* @__PURE__ */ jsx("h3", { children: "Thank you for your order!" }),
1554
+ /* @__PURE__ */ jsx("h6", { children: "Once your payment has been confirmed, you'll recieve an email with additional information." }),
1555
+ /* @__PURE__ */ jsxs("p", { children: [
1556
+ "While you wait, we cordially invite you to join the ",
1557
+ /* @__PURE__ */ jsx(Link2, { href: "https://warpcast.com/~/channel/lux", children: "Lux Channel" }),
1558
+ " on ",
1559
+ /* @__PURE__ */ jsx(Link2, { href: "https://warpcast.com/~/invite-page/227706?id=fbc9ca91", children: "Warpcast" }),
1560
+ "."
1561
+ ] })
1562
+ ] });
1563
+ var thank_you_default = ThankYou;
1564
+ var DesktopBagCarousel = observer(({
1565
+ constrainTo,
1566
+ className = ""
1567
+ }) => {
1568
+ const cmmc = useCommerce();
1569
+ return /* @__PURE__ */ jsx(
1570
+ CarouselItemSelector,
1571
+ {
1572
+ items: cmmc.cartItems,
1573
+ selectedItemRef: cmmc,
1574
+ scrollable: false,
1575
+ selectSku: cmmc.setCurrentItem.bind(cmmc),
1576
+ clx: className,
1577
+ ext: {
1578
+ options: { loop: true },
1579
+ constrainTo,
1580
+ imageOnly: true
1581
+ }
1582
+ }
1583
+ );
1584
+ });
1585
+ var desktop_bag_carousel_default = DesktopBagCarousel;
1586
+ var linkClx = cn(buttonVariants({ variant: "linkMuted" }), "rounded-none");
1587
+ var PolicyLinks = ({
1588
+ clx = ""
1589
+ }) => /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col items-center", clx), children: [
1590
+ /* @__PURE__ */ jsx(Separator, {}),
1591
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-4 py-2 text-sm", children: [
1592
+ /* @__PURE__ */ jsx(Link2, { style: css(linkClx), href: "", children: "refund policy" }),
1593
+ /* @__PURE__ */ jsx(Link2, { style: css(linkClx), href: "", children: "privacy policy" })
1594
+ ] })
1595
+ ] });
1596
+ var policy_links_default = PolicyLinks;
1597
+ var DesktopCheckoutPanel = observer(({
1598
+ step,
1599
+ stepNames,
1600
+ onLeave,
1601
+ clx = "",
1602
+ children
1603
+ }) => {
1604
+ const cmmc = useCommerce();
1605
+ return /* @__PURE__ */ jsxs(Box, { className: cn("grid grid-cols-2", clx), children: [
1606
+ /* @__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: [
1607
+ /* @__PURE__ */ jsxs("div", { className: "h-[80px] grow-0 flex flex-row items-center z-10", children: [
1608
+ /* @__PURE__ */ jsx(Logo, { size: "md", href: "/", onClick: onLeave, variant: "wordmark", outerClx: "logo-outer-tooltip-class" }),
1609
+ /* @__PURE__ */ jsx(tooltip_default, { select: ".logo-outer-tooltip-class", text: "home", position: "right", offset: 6 })
1610
+ ] }, 1),
1611
+ /* @__PURE__ */ jsx(
1612
+ back_button_default,
1613
+ {
1614
+ size: "sm",
1615
+ clx: "z-10 absolute top-14 left-6 !px-0 aspect-square rounded-full hover:!bg-level-3 back-button-tooltip-class ",
1616
+ onBack: onLeave
1617
+ }
1618
+ ),
1619
+ /* @__PURE__ */ jsx(tooltip_default, { select: ".back-button-tooltip-class", text: "back", position: "right", offset: 5 }),
1620
+ /* @__PURE__ */ jsxs(Box, { className: cn(
1621
+ "w-full grow min-h-0 max-w-[550px] mx-auto flex flex-col gap-3",
1622
+ cmmc.cartItems.length > 4 ? "justify-between" : "justify-start gap-10 pt-10"
1623
+ ), children: [
1624
+ /* @__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 } }),
1625
+ /* @__PURE__ */ jsx(
1626
+ CartPanel,
1627
+ {
1628
+ className: "w-full border-none p-0",
1629
+ itemClx: "mb-2",
1630
+ totalClx: "sticky bottom-0 bg-background",
1631
+ listClx: "pr-3",
1632
+ scrollAfter: 4,
1633
+ scrollHeightClx: "min-h-[50vh] grow",
1634
+ showPromoCode: true,
1635
+ showShipping: true,
1636
+ selectItems: true
1637
+ }
1638
+ )
1639
+ ] }, 2)
1640
+ ] }) }, 1),
1641
+ /* @__PURE__ */ jsxs("div", { className: "w-full h-full flex flex-col bg-level-1 min-h-screen justify-between", children: [
1642
+ /* @__PURE__ */ jsx(ScrollArea, { 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: [
1643
+ /* @__PURE__ */ jsxs("div", { className: "bg-level-1 sticky h-[80px] bg-[#aaaaff] w-full top-0 flex justify-center items-end", children: [
1644
+ /* @__PURE__ */ jsx(widget_default, { noLogin: true, className: "hidden md:flex absolute top-4 right-4 " }),
1645
+ /* @__PURE__ */ jsx(StepIndicator, { dotSizeRem: 1.35, steps: stepNames, currentStep: step, className: "gap-2 text-base w-pr-70" })
1646
+ ] }, 1),
1647
+ /* @__PURE__ */ jsx("div", { className: "w-full max-w-[550px] mx-auto py-8", children }, 2)
1648
+ ] }) }),
1649
+ /* @__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" }) }) })
1650
+ ] }, 2)
1651
+ ] });
1652
+ });
1653
+ var desktop_cp_default = DesktopCheckoutPanel;
1654
+ var CartAccordian = observer(({
1655
+ icon,
1656
+ clx = "",
1657
+ panelClx = "",
1658
+ triggerClx = "",
1659
+ scrollAfter,
1660
+ scrollHeightClx
1661
+ }) => {
1662
+ const cmmc = useCommerce();
1663
+ return /* @__PURE__ */ jsx(Accordion, { type: "single", collapsible: true, className: clx, children: /* @__PURE__ */ jsxs(AccordionItem, { value: "cart", className: "w-full border-b-0", children: [
1664
+ /* @__PURE__ */ jsxs(AccordionTrigger, { className: "!no-underline group flex justify-between ", children: [
1665
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-0 items-center", children: [
1666
+ icon,
1667
+ /* @__PURE__ */ jsxs("h5", { className: "text-sm sm:text-xl grow", children: [
1668
+ /* @__PURE__ */ jsx("span", { className: "group-data-[state=open]:hidden", children: "Order Total:" }),
1669
+ /* @__PURE__ */ jsx("span", { className: "group-data-[state=closed]:hidden", children: "Your Order" })
1670
+ ] })
1671
+ ] }),
1672
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-1 items-center", children: [
1673
+ /* @__PURE__ */ jsx("h5", { className: "text-sm sm:text-xl grow truncate", children: formatCurrencyValue(cmmc.promoAppliedCartTotal) }),
1674
+ /* @__PURE__ */ jsx(ChevronRight, { style: css("h-5 w-5 -mr-2 shrink-0 transition-transform duration-200 group-data-[state=open]:rotate-90") })
1675
+ ] })
1676
+ ] }),
1677
+ /* @__PURE__ */ jsx(AccordionContent, { className: "data-[state=open]:mb-4", children: /* @__PURE__ */ jsx(
1678
+ CartPanel,
1679
+ {
1680
+ className: cn("w-full", panelClx),
1681
+ scrollAfter,
1682
+ scrollHeightClx,
1683
+ listClx: "mt-0",
1684
+ itemClx: "mt-0.5 mb-0",
1685
+ totalClx: "sticky px-1 pr-2 border-t -bottom-[1px] bg-background",
1686
+ showShipping: true,
1687
+ showPromoCode: true
1688
+ }
1689
+ ) })
1690
+ ] }) });
1691
+ });
1692
+ var cart_accordian_default = CartAccordian;
1693
+ var MobileCheckoutPanel = ({
1694
+ step,
1695
+ stepNames,
1696
+ onLeave,
1697
+ clx = "",
1698
+ children
1699
+ }) => /* @__PURE__ */ jsxs(Box, { className: cn("bg-background flex flex-col justify-start px-4 pt-[101px]", clx), children: [
1700
+ /* @__PURE__ */ jsxs("div", { className: "fixed z-11 top-0 h-[45px] w-full flex justify-between items-stretch bg-background", children: [
1701
+ /* @__PURE__ */ jsxs("div", { className: "flex items-stretch gap-1 grow-0", children: [
1702
+ /* @__PURE__ */ jsx(
1703
+ back_button_default,
1704
+ {
1705
+ size: "sm",
1706
+ clx: "-ml-5 !px-0 aspect-square h-full rounded-full active:!bg-level-3 ",
1707
+ onBack: onLeave
1708
+ }
1709
+ ),
1710
+ /* @__PURE__ */ jsx(Logo, { size: "sm", variant: "wordmark", href: "/", onClick: onLeave, outerClx: "-ml-2" })
1711
+ ] }),
1712
+ /* @__PURE__ */ jsx(
1713
+ StepIndicator,
1714
+ {
1715
+ dotSizeRem: 1,
1716
+ steps: stepNames,
1717
+ currentStep: step,
1718
+ className: "relative grow mx-2 top-[14px] text-xs font-semibold w-full"
1719
+ }
1720
+ ),
1721
+ /* @__PURE__ */ jsx("div", { className: "w-[72px] grow-0 shrink-0 flex items-center justify-center", children: /* @__PURE__ */ jsx(widget_default, { noLogin: true, className: "" }) })
1722
+ ] }),
1723
+ /* @__PURE__ */ jsx(
1724
+ cart_accordian_default,
1725
+ {
1726
+ icon: /* @__PURE__ */ jsx(
1727
+ bag_button_default,
1728
+ {
1729
+ animateOnHover: false,
1730
+ showIfEmpty: true,
1731
+ size: "sm",
1732
+ className: "mr-1 relative w-5 h-6 sm:w-6 sm:h-7",
1733
+ iconClx: "fill-foreground"
1734
+ }
1735
+ ),
1736
+ clx: "flex items-center justify-center w-full",
1737
+ triggerClx: "bg-background fixed z-11 top-[45px] left-0 right-0 !m-0 px-4",
1738
+ panelClx: "!py-0",
1739
+ scrollAfter: 3,
1740
+ scrollHeightClx: "h-[385px]"
1741
+ }
1742
+ ),
1743
+ children,
1744
+ /* @__PURE__ */ jsx(policy_links_default, { clx: "mt-auto mb-3 pt-2" })
1745
+ ] });
1746
+ var mobile_cp_default = MobileCheckoutPanel;
1747
+ var STEPS = [
1748
+ {
1749
+ name: "payment",
1750
+ Comp: PaymentStepForm
1751
+ },
1752
+ {
1753
+ name: "delivery",
1754
+ Comp: ShippingStepForm
1755
+ },
1756
+ {
1757
+ name: "done",
1758
+ label: "Done!",
1759
+ Comp: thank_you_default
1760
+ }
1761
+ ];
1762
+ var STEP_NAMES = STEPS.map((s) => s.label ? s.label : capitalize(s.name));
1763
+ var CheckoutPanel = ({
1764
+ clx = ""
1765
+ }) => {
1766
+ const cmmc = useCommerce();
1767
+ if (!cmmc) {
1768
+ console.log("CHECKOUT PANEL: cmmc svc undefined!");
1769
+ return /* @__PURE__ */ jsx(Fragment, {});
1770
+ }
1771
+ const [stepIndex, setStepIndex] = useState(0);
1772
+ const [orderId, setOrderId] = useState(void 0);
1773
+ const setStep = (name) => {
1774
+ if (name === "first") {
1775
+ setStepIndex(0);
1776
+ } else if (name === "last") {
1777
+ setStepIndex(STEPS.length - 1);
1778
+ } else if (name === "next") {
1779
+ if (stepIndex <= STEPS.length - 2) {
1780
+ setStepIndex(stepIndex + 1);
1781
+ } else {
1782
+ throw new Error("CheckoutPanel.setStep(): Attempting to advance past last step!");
1783
+ }
1784
+ } else {
1785
+ const indexFound = STEPS.findIndex((el) => el.name === name);
1786
+ if (indexFound !== -1) {
1787
+ setStepIndex(indexFound);
1788
+ } else {
1789
+ throw new Error("CheckoutPanel.setStep(): Step named " + name + " not found!");
1790
+ }
1791
+ }
1792
+ };
1793
+ const _close = () => {
1794
+ setStep("first");
1795
+ };
1796
+ const desktopElement = useRef(null);
1797
+ const [layout, setLayout] = useState(void 0);
1798
+ useLayoutEffect(() => {
1799
+ const checkLayout = () => {
1800
+ setLayout(!!desktopElement.current?.offsetParent ? "desktop" : "mobile");
1801
+ };
1802
+ checkLayout();
1803
+ window.addEventListener("resize", checkLayout);
1804
+ return () => {
1805
+ window.removeEventListener("resize", checkLayout);
1806
+ };
1807
+ }, []);
1808
+ const StepToRender = STEPS[stepIndex].Comp;
1809
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1810
+ /* @__PURE__ */ jsxs(
1811
+ desktop_cp_default,
1812
+ {
1813
+ clx: cn("h-full", clx, "hidden md:flex"),
1814
+ onLeave: _close,
1815
+ step: stepIndex,
1816
+ stepNames: STEP_NAMES,
1817
+ children: [
1818
+ /* @__PURE__ */ jsx("div", { ref: desktopElement }),
1819
+ layout === "desktop" && /* @__PURE__ */ jsx(StepToRender, { onDone: () => {
1820
+ setStep("next");
1821
+ }, orderId, setOrderId })
1822
+ ]
1823
+ }
1824
+ ),
1825
+ /* @__PURE__ */ jsx(
1826
+ mobile_cp_default,
1827
+ {
1828
+ clx: cn("w-full h-full overflow-y-auto", clx, "md:hidden"),
1829
+ onLeave: _close,
1830
+ step: stepIndex,
1831
+ stepNames: STEP_NAMES,
1832
+ children: layout === "mobile" && /* @__PURE__ */ jsx(StepToRender, { onDone: () => {
1833
+ setStep("next");
1834
+ }, orderId, setOrderId })
1835
+ }
1836
+ )
1837
+ ] });
1838
+ };
1839
+ var checkout_panel_default = CheckoutPanel;
1840
+ var LoginPanel = ({
1841
+ close,
1842
+ className = "",
1843
+ reviews
1844
+ }) => {
1845
+ return /* @__PURE__ */ jsxs(Box, { className: cn("grid grid-cols-1 md:grid-cols-2", className), children: [
1846
+ /* @__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: [
1847
+ /* @__PURE__ */ jsx(
1848
+ Button,
1849
+ {
1850
+ variant: "ghost",
1851
+ onClick: close,
1852
+ className: "w-fit !min-w-0 p-2",
1853
+ children: /* @__PURE__ */ jsx(Logo, { size: "md", variant: "wordmark" })
1854
+ }
1855
+ ),
1856
+ /* @__PURE__ */ jsx(
1857
+ Carousel,
1858
+ {
1859
+ options: { align: "center", loop: true, autoplay: 5e3 },
1860
+ className: "w-full",
1861
+ children: /* @__PURE__ */ jsx(CarouselContent, { children: reviews.map(({ text, author, href }, index) => /* @__PURE__ */ jsx(CarouselItem, { children: /* @__PURE__ */ jsxs(Link2, { href, className: "flex flex-col gap-3 cursor-pointer", children: [
1862
+ /* @__PURE__ */ jsxs("p", { children: [
1863
+ "\u201C",
1864
+ text,
1865
+ "\u201C"
1866
+ ] }),
1867
+ /* @__PURE__ */ jsx("p", { className: "text-sm", children: author })
1868
+ ] }) }, index)) })
1869
+ }
1870
+ )
1871
+ ] }) }) }),
1872
+ /* @__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: [
1873
+ /* @__PURE__ */ jsx(
1874
+ Button,
1875
+ {
1876
+ variant: "ghost",
1877
+ onClick: close,
1878
+ className: "block md:hidden absolute rounded-full p-2 left-0 h-auto hover:bg-background",
1879
+ children: /* @__PURE__ */ jsx(LuxLogo, { variant: "white", size: 20 })
1880
+ }
1881
+ ),
1882
+ /* @__PURE__ */ jsx(login_default, { className: "w-full max-w-sm" }),
1883
+ /* @__PURE__ */ jsx("p", { className: "text-sm opacity-50", children: legal.map(({ title: title2, href }, index) => /* @__PURE__ */ jsxs(React7__default.Fragment, { children: [
1884
+ index > 0 && " \xB7 ",
1885
+ /* @__PURE__ */ jsx(Link2, { href, className: "underline", children: title2 })
1886
+ ] }, href)) })
1887
+ ] }) }) })
1888
+ ] });
1889
+ };
1890
+ var login_panel_default = LoginPanel;
1891
+
1892
+ // src/site/next/analytics/fpixel.ts
1893
+ var FB_PIXEL_ID = process.env.NEXT_PUBLIC_FACEBOOK_PIXEL_ID || "";
1894
+ var pageview = () => {
1895
+ window.fbq("track", "PageView");
1896
+ };
1897
+ var FacebookPixel = () => {
1898
+ const [loaded, setLoaded] = useState(false);
1899
+ const pathname = usePathname();
1900
+ useEffect(() => {
1901
+ if (!loaded) return;
1902
+ pageview();
1903
+ }, [pathname, loaded]);
1904
+ return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
1905
+ Script,
1906
+ {
1907
+ id: "fb-pixel",
1908
+ strategy: "afterInteractive",
1909
+ onLoad: () => setLoaded(true),
1910
+ dangerouslySetInnerHTML: {
1911
+ __html: `
1912
+ !function(f,b,e,v,n,t,s)
1913
+ {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
1914
+ n.callMethod.apply(n,arguments):n.queue.push(arguments)};
1915
+ if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
1916
+ n.queue=[];t=b.createElement(e);t.async=!0;
1917
+ t.src=v;s=b.getElementsByTagName(e)[0];
1918
+ s.parentNode.insertBefore(t,s)}(window, document,'script',
1919
+ 'https://connect.facebook.net/en_US/fbevents.js');
1920
+ fbq('init', ${FB_PIXEL_ID});
1921
+ `
1922
+ }
1923
+ }
1924
+ ) });
1925
+ };
1926
+ var Analytics = () => /* @__PURE__ */ jsxs(Fragment, { children: [
1927
+ /* @__PURE__ */ jsx(FacebookPixel, {}),
1928
+ /* @__PURE__ */ jsx(GoogleAnalytics, { gaId: process.env.NEXT_PUBLIC_GA_MEASUREMENT_ID ?? "" })
1929
+ ] });
1930
+ var Tooltip = ({
1931
+ select,
1932
+ text,
1933
+ clx = "",
1934
+ position = "bottom",
1935
+ offset = 2
1936
+ }) => /* @__PURE__ */ jsx(
1937
+ Tooltip$1,
1938
+ {
1939
+ anchorSelect: select,
1940
+ noArrow: true,
1941
+ opacity: 1,
1942
+ content: text,
1943
+ place: position,
1944
+ offset,
1945
+ delayShow: 100,
1946
+ delayHide: 100,
1947
+ className: "!opacity-100 !bg-level-2 border rounded-[3px] !px-1.5 !py-1 z-floating" + clx
1948
+ }
1949
+ );
1950
+ var tooltip_default = Tooltip;
1951
+
1952
+ export { access_code_input_default as AccessCodeInput, Analytics, provider_default as Auth, back_button_default as BackButton, buy_button_default as BuyButton, drawer_default as BuyDrawer, chat_widget_default as ChatWidget, checkout_button_default as CheckoutButton, checkout_panel_default as CheckoutPanel, contact_dialog_default as ContactDialog, copyright_default as Copyright, drawer_margin_default as DrawerMargin, footer_default as Footer, header_default as Header, icons_exports as Icons, login_default as Login, login_panel_default as LoginPanel, Logo, main_default as Main, wrapper_default as MiniChart, not_found_default as NotFound, tooltip_default as Tooltip };