@luxfi/ui 8.2.6 → 8.2.8

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 (568) hide show
  1. package/dist/3d-button.cjs +1 -1
  2. package/dist/3d-button.js +1 -1
  3. package/dist/3d-card.cjs +1 -1
  4. package/dist/3d-card.js +1 -1
  5. package/dist/3d-carousel.cjs +1 -1
  6. package/dist/3d-carousel.js +1 -1
  7. package/dist/3d-grid.cjs +1 -1
  8. package/dist/3d-grid.js +1 -1
  9. package/dist/3d-marquee.cjs +1 -1
  10. package/dist/3d-marquee.js +1 -1
  11. package/dist/3d-model-viewer.cjs +26 -422
  12. package/dist/3d-model-viewer.js +21 -417
  13. package/dist/3d-pin.cjs +1 -1
  14. package/dist/3d-pin.js +1 -1
  15. package/dist/3d-scene.cjs +1 -1
  16. package/dist/3d-scene.js +1 -1
  17. package/dist/3d-text.cjs +1 -1
  18. package/dist/3d-text.js +1 -1
  19. package/dist/accordion.cjs +4 -12
  20. package/dist/accordion.d.ts.map +1 -1
  21. package/dist/accordion.js +3 -12
  22. package/dist/advanced-chart.cjs +1 -1
  23. package/dist/advanced-chart.js +1 -1
  24. package/dist/advanced-navigation-bar.cjs +6 -402
  25. package/dist/advanced-navigation-bar.js +6 -402
  26. package/dist/ai-actions.cjs +1 -1
  27. package/dist/ai-actions.js +1 -1
  28. package/dist/ai-agents.cjs +46 -891
  29. package/dist/ai-agents.js +9 -835
  30. package/dist/ai-assistant.cjs +14 -741
  31. package/dist/ai-assistant.js +11 -739
  32. package/dist/ai-chat.cjs +25 -771
  33. package/dist/ai-chat.js +19 -766
  34. package/dist/ai-code.cjs +68 -924
  35. package/dist/ai-code.js +50 -906
  36. package/dist/ai-model-selector-navigation-bar.cjs +1 -1
  37. package/dist/ai-model-selector-navigation-bar.js +1 -1
  38. package/dist/ai-models.cjs +1 -1
  39. package/dist/ai-models.js +1 -1
  40. package/dist/ai-playground.cjs +26 -802
  41. package/dist/ai-playground.js +19 -796
  42. package/dist/ai-tools.cjs +23 -768
  43. package/dist/ai-tools.js +16 -762
  44. package/dist/ai-vision.cjs +42 -994
  45. package/dist/ai-vision.js +31 -984
  46. package/dist/ai-voice-settings.cjs +36 -1007
  47. package/dist/ai-voice-settings.js +33 -1005
  48. package/dist/ai-voice.cjs +52 -1025
  49. package/dist/ai-voice.js +10 -964
  50. package/dist/alert.cjs +12 -131
  51. package/dist/alert.d.ts.map +1 -1
  52. package/dist/alert.js +9 -129
  53. package/dist/android.cjs +0 -1
  54. package/dist/android.js +0 -1
  55. package/dist/animated-background.cjs +1 -1
  56. package/dist/animated-background.js +1 -1
  57. package/dist/animated-beam.cjs +1 -1
  58. package/dist/animated-beam.js +1 -1
  59. package/dist/animated-cursor.cjs +1 -1
  60. package/dist/animated-cursor.js +1 -1
  61. package/dist/animated-icon.cjs +1 -1
  62. package/dist/animated-icon.js +1 -1
  63. package/dist/animated-list.cjs +1 -1
  64. package/dist/animated-list.js +1 -1
  65. package/dist/animated-number.cjs +1 -1
  66. package/dist/animated-number.js +1 -1
  67. package/dist/animated-testimonials.cjs +1 -1
  68. package/dist/animated-testimonials.js +1 -1
  69. package/dist/animated-text.cjs +1 -1
  70. package/dist/animated-text.js +1 -1
  71. package/dist/animated-tooltip.cjs +1 -1
  72. package/dist/animated-tooltip.js +1 -1
  73. package/dist/announcement.cjs +7 -403
  74. package/dist/announcement.js +7 -403
  75. package/dist/app-switcher-navigation-bar.cjs +6 -402
  76. package/dist/app-switcher-navigation-bar.js +6 -402
  77. package/dist/apple-cards-carousel.cjs +85 -481
  78. package/dist/apple-cards-carousel.js +20 -416
  79. package/dist/apple-hello-effect.cjs +1 -1
  80. package/dist/apple-hello-effect.js +1 -1
  81. package/dist/auth.cjs +11 -388
  82. package/dist/auth.js +8 -386
  83. package/dist/avatar.cjs +3 -10
  84. package/dist/avatar.js +3 -11
  85. package/dist/badge.cjs +8 -229
  86. package/dist/badge.js +5 -211
  87. package/dist/bank.cjs +1 -1
  88. package/dist/bank.js +1 -1
  89. package/dist/banner.cjs +1 -1
  90. package/dist/banner.js +1 -1
  91. package/dist/breadcrumb-and-filters-navigation-bar.cjs +1 -1
  92. package/dist/breadcrumb-and-filters-navigation-bar.js +1 -1
  93. package/dist/breadcrumb-navigation-bar.cjs +1 -1
  94. package/dist/breadcrumb-navigation-bar.js +1 -1
  95. package/dist/button.cjs +15 -69
  96. package/dist/button.d.ts.map +1 -1
  97. package/dist/button.js +13 -67
  98. package/dist/calendar.cjs +1 -1
  99. package/dist/calendar.js +1 -1
  100. package/dist/centered-logo-navigation-bar.cjs +1 -1
  101. package/dist/centered-logo-navigation-bar.js +1 -1
  102. package/dist/chart.cjs +1 -1
  103. package/dist/chart.js +1 -1
  104. package/dist/checkbox.cjs +1 -2
  105. package/dist/checkbox.d.ts.map +1 -1
  106. package/dist/checkbox.js +1 -2
  107. package/dist/choicebox.cjs +1 -1
  108. package/dist/choicebox.js +1 -1
  109. package/dist/chrome.cjs +30 -494
  110. package/dist/chrome.js +10 -475
  111. package/dist/close-button.cjs +0 -1
  112. package/dist/close-button.js +0 -1
  113. package/dist/code-block.cjs +17 -665
  114. package/dist/code-block.js +14 -663
  115. package/dist/code-compare.cjs +29 -1303
  116. package/dist/code-compare.js +19 -1294
  117. package/dist/code-diff.cjs +22 -670
  118. package/dist/code-diff.js +18 -667
  119. package/dist/code-editor.cjs +14 -410
  120. package/dist/code-editor.js +13 -409
  121. package/dist/code-explorer.cjs +15 -457
  122. package/dist/code-explorer.js +14 -457
  123. package/dist/code-preview.cjs +32 -984
  124. package/dist/code-preview.js +24 -977
  125. package/dist/code-snippet.cjs +20 -668
  126. package/dist/code-snippet.js +15 -664
  127. package/dist/code-tabs.cjs +1 -1
  128. package/dist/code-tabs.js +1 -1
  129. package/dist/code-terminal.cjs +25 -486
  130. package/dist/code-terminal.js +20 -482
  131. package/dist/collaboration-navigation-bar.cjs +1 -1
  132. package/dist/collaboration-navigation-bar.js +1 -1
  133. package/dist/collapsible.cjs +14 -349
  134. package/dist/collapsible.d.ts.map +1 -1
  135. package/dist/collapsible.js +12 -332
  136. package/dist/color-mode.cjs +1 -1
  137. package/dist/color-mode.js +1 -1
  138. package/dist/color-picker.cjs +9 -451
  139. package/dist/color-picker.js +8 -451
  140. package/dist/combobox.cjs +7 -403
  141. package/dist/combobox.js +7 -403
  142. package/dist/communication-navigation-bar.cjs +8 -404
  143. package/dist/communication-navigation-bar.js +6 -402
  144. package/dist/company-profile.cjs +1 -1
  145. package/dist/company-profile.js +1 -1
  146. package/dist/comparison.cjs +1 -1
  147. package/dist/comparison.js +1 -1
  148. package/dist/context-switcher-navigation-bar.cjs +1 -1
  149. package/dist/context-switcher-navigation-bar.js +1 -1
  150. package/dist/credit-card.cjs +1 -1
  151. package/dist/credit-card.js +1 -1
  152. package/dist/crypto-screener.cjs +1 -1
  153. package/dist/crypto-screener.js +1 -1
  154. package/dist/cursor.cjs +1 -1
  155. package/dist/cursor.js +1 -1
  156. package/dist/dashboard-navigation-bar.cjs +7 -403
  157. package/dist/dashboard-navigation-bar.js +6 -402
  158. package/dist/dialog-stack.cjs +6 -402
  159. package/dist/dialog-stack.js +6 -402
  160. package/dist/dialog.cjs +14 -72
  161. package/dist/dialog.d.ts.map +1 -1
  162. package/dist/dialog.js +14 -72
  163. package/dist/direction.cjs +1 -1
  164. package/dist/direction.js +1 -1
  165. package/dist/dock.cjs +1 -1
  166. package/dist/dock.js +1 -1
  167. package/dist/drawer.cjs +24 -101
  168. package/dist/drawer.d.ts.map +1 -1
  169. package/dist/drawer.js +20 -98
  170. package/dist/dropzone.cjs +1 -1
  171. package/dist/dropzone.js +1 -1
  172. package/dist/e-commerce-navigation-bar.cjs +8 -404
  173. package/dist/e-commerce-navigation-bar.js +6 -402
  174. package/dist/editor.cjs +10 -406
  175. package/dist/editor.js +7 -403
  176. package/dist/empty-state.cjs +0 -1
  177. package/dist/empty-state.js +0 -1
  178. package/dist/empty.cjs +0 -1
  179. package/dist/empty.js +0 -1
  180. package/dist/engine.cjs +0 -1
  181. package/dist/engine.js +0 -1
  182. package/dist/expiration-selector.cjs +1 -1
  183. package/dist/expiration-selector.js +1 -1
  184. package/dist/field.cjs +0 -1
  185. package/dist/field.js +0 -1
  186. package/dist/financials.cjs +1 -1
  187. package/dist/financials.js +1 -1
  188. package/dist/forex-screener.cjs +1 -1
  189. package/dist/forex-screener.js +1 -1
  190. package/dist/gantt.cjs +1 -1
  191. package/dist/gantt.js +1 -1
  192. package/dist/greeks-display.cjs +1 -1
  193. package/dist/greeks-display.js +1 -1
  194. package/dist/grid-pattern.cjs +1 -1
  195. package/dist/grid-pattern.js +1 -1
  196. package/dist/gui.cjs +0 -1
  197. package/dist/gui.js +0 -1
  198. package/dist/heading.cjs +0 -1
  199. package/dist/heading.js +0 -1
  200. package/dist/hooks/use-mobile.cjs +1 -0
  201. package/dist/hooks/use-mobile.js +1 -0
  202. package/dist/iam.cjs +2 -123
  203. package/dist/iam.js +1 -122
  204. package/dist/icon-button.cjs +2 -57
  205. package/dist/icon-button.js +1 -56
  206. package/dist/icon-navigation-bar.cjs +1 -1
  207. package/dist/icon-navigation-bar.js +1 -1
  208. package/dist/identity.cjs +29 -243
  209. package/dist/identity.js +21 -236
  210. package/dist/image-crop.cjs +11 -407
  211. package/dist/image-crop.js +8 -404
  212. package/dist/image-zoom.cjs +1 -1
  213. package/dist/image-zoom.js +1 -1
  214. package/dist/image.cjs +15 -85
  215. package/dist/image.d.ts.map +1 -1
  216. package/dist/image.js +14 -69
  217. package/dist/index.cjs +1868 -38771
  218. package/dist/index.js +174 -38321
  219. package/dist/ink.cjs +0 -1
  220. package/dist/ink.js +0 -1
  221. package/dist/input-group.cjs +4 -12
  222. package/dist/input-group.d.ts.map +1 -1
  223. package/dist/input-group.js +3 -12
  224. package/dist/input-otp.cjs +1 -1
  225. package/dist/input-otp.js +1 -1
  226. package/dist/input.cjs +1 -2
  227. package/dist/input.d.ts.map +1 -1
  228. package/dist/input.js +1 -2
  229. package/dist/iphone-15-pro.cjs +1 -1
  230. package/dist/iphone-15-pro.js +1 -1
  231. package/dist/item.cjs +2 -28
  232. package/dist/item.js +1 -23
  233. package/dist/kanban.cjs +26 -752
  234. package/dist/kanban.js +16 -743
  235. package/dist/kbd.cjs +0 -1
  236. package/dist/kbd.js +0 -1
  237. package/dist/limelight-nav-navigation-bar.cjs +1 -1
  238. package/dist/limelight-nav-navigation-bar.js +1 -1
  239. package/dist/limelight-nav.cjs +11 -453
  240. package/dist/limelight-nav.js +10 -453
  241. package/dist/link.cjs +11 -81
  242. package/dist/link.js +6 -61
  243. package/dist/list.cjs +0 -1
  244. package/dist/list.js +0 -1
  245. package/dist/lux.config.cjs +15 -33
  246. package/dist/lux.config.js +4 -27
  247. package/dist/magnetic.cjs +1 -1
  248. package/dist/magnetic.js +1 -1
  249. package/dist/market-overview.cjs +1 -1
  250. package/dist/market-overview.js +1 -1
  251. package/dist/marquee.cjs +1 -1
  252. package/dist/marquee.js +1 -1
  253. package/dist/menu-dock.cjs +1 -1
  254. package/dist/menu-dock.js +1 -1
  255. package/dist/menu.cjs +6 -14
  256. package/dist/menu.js +2 -10
  257. package/dist/menubar.cjs +1 -1
  258. package/dist/menubar.js +1 -1
  259. package/dist/message-dock.cjs +6 -402
  260. package/dist/message-dock.js +6 -402
  261. package/dist/mini-calendar.cjs +8 -404
  262. package/dist/mini-calendar.js +7 -403
  263. package/dist/minimal-tiptap.cjs +1 -1
  264. package/dist/minimal-tiptap.js +1 -1
  265. package/dist/motion-highlight.cjs +1 -1
  266. package/dist/motion-highlight.js +1 -1
  267. package/dist/music-player.cjs +31 -529
  268. package/dist/music-player.js +23 -521
  269. package/dist/native-select.cjs +0 -1
  270. package/dist/native-select.js +0 -1
  271. package/dist/news-timeline.cjs +1 -1
  272. package/dist/news-timeline.js +1 -1
  273. package/dist/next.cjs +9 -91
  274. package/dist/next.d.ts.map +1 -1
  275. package/dist/next.js +4 -88
  276. package/dist/option-chain.cjs +1 -1
  277. package/dist/option-chain.js +1 -1
  278. package/dist/option-position.cjs +1 -1
  279. package/dist/option-position.js +1 -1
  280. package/dist/order-entry.cjs +1 -1
  281. package/dist/order-entry.js +1 -1
  282. package/dist/orders-history.cjs +1 -1
  283. package/dist/orders-history.js +1 -1
  284. package/dist/pagination.cjs +0 -1
  285. package/dist/pagination.js +0 -1
  286. package/dist/particles-background.cjs +1 -1
  287. package/dist/particles-background.js +1 -1
  288. package/dist/pill.cjs +0 -1
  289. package/dist/pill.js +0 -1
  290. package/dist/pin-input.cjs +1 -2
  291. package/dist/pin-input.d.ts.map +1 -1
  292. package/dist/pin-input.js +1 -2
  293. package/dist/pixel-image.cjs +1 -1
  294. package/dist/pixel-image.js +1 -1
  295. package/dist/pnl-diagram.cjs +1 -1
  296. package/dist/pnl-diagram.js +1 -1
  297. package/dist/popover.cjs +18 -76
  298. package/dist/popover.d.ts.map +1 -1
  299. package/dist/popover.js +17 -75
  300. package/dist/positions-list.cjs +1 -1
  301. package/dist/positions-list.js +1 -1
  302. package/dist/progress-circle.cjs +4 -12
  303. package/dist/progress-circle.d.ts.map +1 -1
  304. package/dist/progress-circle.js +3 -12
  305. package/dist/progress.cjs +0 -1
  306. package/dist/progress.js +0 -1
  307. package/dist/provider.cjs +8 -177
  308. package/dist/provider.js +5 -175
  309. package/dist/pulse-animation.cjs +1 -1
  310. package/dist/pulse-animation.js +1 -1
  311. package/dist/qr-code.cjs +1 -1
  312. package/dist/qr-code.js +1 -1
  313. package/dist/radio.cjs +1 -2
  314. package/dist/radio.d.ts.map +1 -1
  315. package/dist/radio.js +1 -2
  316. package/dist/rating.cjs +1 -2
  317. package/dist/rating.d.ts.map +1 -1
  318. package/dist/rating.js +1 -2
  319. package/dist/relative-time.cjs +1 -1
  320. package/dist/relative-time.js +1 -1
  321. package/dist/resizable.cjs +1 -1
  322. package/dist/resizable.js +1 -1
  323. package/dist/reveal-animation.cjs +1 -1
  324. package/dist/reveal-animation.js +1 -1
  325. package/dist/safari.cjs +1 -1
  326. package/dist/safari.js +1 -1
  327. package/dist/sandbox.cjs +1 -1
  328. package/dist/sandbox.js +1 -1
  329. package/dist/search-and-toggle-navigation-bar.cjs +1 -1
  330. package/dist/search-and-toggle-navigation-bar.js +1 -1
  331. package/dist/select.cjs +37 -90
  332. package/dist/select.js +36 -89
  333. package/dist/separator.cjs +0 -1
  334. package/dist/separator.js +0 -1
  335. package/dist/sidebar.cjs +23 -494
  336. package/dist/sidebar.js +18 -490
  337. package/dist/simple-navigation-bar.cjs +1 -1
  338. package/dist/simple-navigation-bar.js +1 -1
  339. package/dist/site/commerce/ui/context.cjs +10 -214
  340. package/dist/site/commerce/ui/context.js +7 -215
  341. package/dist/site/commerce/ui/store.cjs +1 -1
  342. package/dist/site/commerce/ui/store.d.ts.map +1 -1
  343. package/dist/site/commerce/ui/store.js +1 -1
  344. package/dist/site/components/access-code-input.cjs +1 -0
  345. package/dist/site/components/access-code-input.js +1 -0
  346. package/dist/site/components/analytics.cjs +3 -42
  347. package/dist/site/components/analytics.js +2 -37
  348. package/dist/site/components/auth/callback.cjs +3 -8
  349. package/dist/site/components/auth/callback.js +2 -7
  350. package/dist/site/components/auth/login-panel.cjs +16 -74
  351. package/dist/site/components/auth/login-panel.js +13 -73
  352. package/dist/site/components/auth/login.cjs +3 -6
  353. package/dist/site/components/auth/login.js +2 -5
  354. package/dist/site/components/auth/provider.cjs +1 -0
  355. package/dist/site/components/auth/provider.js +1 -0
  356. package/dist/site/components/auth/widget.cjs +3 -6
  357. package/dist/site/components/auth/widget.js +2 -5
  358. package/dist/site/components/back-button.cjs +1 -0
  359. package/dist/site/components/back-button.js +1 -0
  360. package/dist/site/components/chat-widget.cjs +1 -0
  361. package/dist/site/components/chat-widget.js +1 -0
  362. package/dist/site/components/commerce/bag-button.cjs +3 -3
  363. package/dist/site/components/commerce/bag-button.js +3 -3
  364. package/dist/site/components/commerce/buy-button.cjs +3 -11
  365. package/dist/site/components/commerce/buy-button.js +2 -10
  366. package/dist/site/components/commerce/checkout-button.cjs +3 -3
  367. package/dist/site/components/commerce/checkout-button.js +3 -3
  368. package/dist/site/components/commerce/checkout-panel/cart-accordian.cjs +1 -0
  369. package/dist/site/components/commerce/checkout-panel/cart-accordian.js +1 -0
  370. package/dist/site/components/commerce/checkout-panel/desktop-bag-carousel.cjs +1 -0
  371. package/dist/site/components/commerce/checkout-panel/desktop-bag-carousel.js +1 -0
  372. package/dist/site/components/commerce/checkout-panel/desktop-cp.cjs +16 -173
  373. package/dist/site/components/commerce/checkout-panel/desktop-cp.js +15 -174
  374. package/dist/site/components/commerce/checkout-panel/index.cjs +10 -400
  375. package/dist/site/components/commerce/checkout-panel/index.js +11 -403
  376. package/dist/site/components/commerce/checkout-panel/mobile-cp.cjs +16 -236
  377. package/dist/site/components/commerce/checkout-panel/mobile-cp.js +14 -237
  378. package/dist/site/components/commerce/desktop-bag-popup.cjs +8 -8
  379. package/dist/site/components/commerce/desktop-bag-popup.js +4 -8
  380. package/dist/site/components/commerce/drawer/index.cjs +16 -289
  381. package/dist/site/components/commerce/drawer/index.js +11 -290
  382. package/dist/site/components/commerce/drawer/micro.cjs +9 -115
  383. package/dist/site/components/commerce/drawer/micro.js +5 -115
  384. package/dist/site/components/commerce/drawer/shell.cjs +3 -10
  385. package/dist/site/components/commerce/drawer/shell.js +3 -10
  386. package/dist/site/components/contact-dialog/contact-form.cjs +1 -0
  387. package/dist/site/components/contact-dialog/contact-form.js +1 -0
  388. package/dist/site/components/contact-dialog/index.cjs +7 -69
  389. package/dist/site/components/contact-dialog/index.js +8 -71
  390. package/dist/site/components/drawer-margin.cjs +3 -10
  391. package/dist/site/components/drawer-margin.js +3 -10
  392. package/dist/site/components/footer-nav.cjs +1 -0
  393. package/dist/site/components/footer-nav.js +1 -0
  394. package/dist/site/components/footer.cjs +11 -81
  395. package/dist/site/components/footer.js +8 -80
  396. package/dist/site/components/header/desktop-nav-menu.cjs +1 -0
  397. package/dist/site/components/header/desktop-nav-menu.js +1 -0
  398. package/dist/site/components/header/desktop.cjs +19 -376
  399. package/dist/site/components/header/desktop.d.ts.map +1 -1
  400. package/dist/site/components/header/desktop.js +13 -357
  401. package/dist/site/components/header/index.cjs +10 -674
  402. package/dist/site/components/header/index.js +9 -657
  403. package/dist/site/components/header/mobile-bag-drawer.cjs +7 -71
  404. package/dist/site/components/header/mobile-bag-drawer.js +6 -74
  405. package/dist/site/components/header/mobile-menu-toggle-button.cjs +1 -0
  406. package/dist/site/components/header/mobile-menu-toggle-button.js +1 -0
  407. package/dist/site/components/header/mobile-nav-menu-ai.cjs +26 -28
  408. package/dist/site/components/header/mobile-nav-menu-ai.js +25 -27
  409. package/dist/site/components/header/mobile-nav-menu-item.cjs +7 -61
  410. package/dist/site/components/header/mobile-nav-menu-item.d.ts.map +1 -1
  411. package/dist/site/components/header/mobile-nav-menu-item.js +7 -62
  412. package/dist/site/components/header/mobile-nav-menu.cjs +8 -110
  413. package/dist/site/components/header/mobile-nav-menu.js +8 -112
  414. package/dist/site/components/header/mobile.cjs +49 -330
  415. package/dist/site/components/header/mobile.js +43 -330
  416. package/dist/site/components/header/theme-toggle.cjs +1 -0
  417. package/dist/site/components/header/theme-toggle.js +1 -0
  418. package/dist/site/components/icons/index.cjs +34 -35
  419. package/dist/site/components/icons/index.js +5 -33
  420. package/dist/site/components/index.cjs +118 -1961
  421. package/dist/site/components/index.js +23 -1951
  422. package/dist/site/components/mini-chart/index.cjs +7 -90
  423. package/dist/site/components/mini-chart/index.js +1 -92
  424. package/dist/site/components/mini-chart/mini-chart.cjs +1 -0
  425. package/dist/site/components/mini-chart/mini-chart.js +1 -0
  426. package/dist/site/components/mini-chart/wrapper.cjs +7 -76
  427. package/dist/site/components/mini-chart/wrapper.js +4 -77
  428. package/dist/site/components/not-found/index.cjs +10 -820
  429. package/dist/site/components/not-found/index.d.ts.map +1 -1
  430. package/dist/site/components/not-found/index.js +9 -803
  431. package/dist/site/components/security/index.cjs +10 -820
  432. package/dist/site/components/security/index.d.ts.map +1 -1
  433. package/dist/site/components/security/index.js +9 -803
  434. package/dist/site/components/tooltip.cjs +1 -0
  435. package/dist/site/components/tooltip.js +1 -0
  436. package/dist/site/next/analytics/index.cjs +16 -49
  437. package/dist/site/next/analytics/index.js +3 -49
  438. package/dist/site/next/analytics/pixel-analytics.cjs +24 -8
  439. package/dist/site/next/analytics/pixel-analytics.js +5 -8
  440. package/dist/site/next/index.cjs +13 -140
  441. package/dist/site/next/index.js +2 -140
  442. package/dist/site/root-layout/index.cjs +13 -1437
  443. package/dist/site/root-layout/index.css +0 -133
  444. package/dist/site/root-layout/index.d.ts.map +1 -1
  445. package/dist/site/root-layout/index.js +13 -1418
  446. package/dist/site/site-def/footer/community.cjs +11 -27
  447. package/dist/site/site-def/footer/community.js +2 -18
  448. package/dist/site/site-def/footer/index.cjs +38 -218
  449. package/dist/site/site-def/footer/index.js +14 -215
  450. package/dist/site/site-def/index.cjs +28 -620
  451. package/dist/site/site-def/index.js +3 -624
  452. package/dist/skeleton.cjs +0 -1
  453. package/dist/skeleton.js +0 -1
  454. package/dist/slider.cjs +1 -2
  455. package/dist/slider.d.ts.map +1 -1
  456. package/dist/slider.js +1 -2
  457. package/dist/status-dashboard-navigation-bar.cjs +1 -1
  458. package/dist/status-dashboard-navigation-bar.js +1 -1
  459. package/dist/status.cjs +0 -1
  460. package/dist/status.js +0 -1
  461. package/dist/stock-screener.cjs +1 -1
  462. package/dist/stock-screener.js +1 -1
  463. package/dist/strategy-builder.cjs +1 -1
  464. package/dist/strategy-builder.js +1 -1
  465. package/dist/switch.cjs +1 -2
  466. package/dist/switch.d.ts.map +1 -1
  467. package/dist/switch.js +1 -2
  468. package/dist/symbol-info.cjs +1 -1
  469. package/dist/symbol-info.js +1 -1
  470. package/dist/table.cjs +21 -340
  471. package/dist/table.d.ts.map +1 -1
  472. package/dist/table.js +20 -340
  473. package/dist/tabs.cjs +4 -12
  474. package/dist/tabs.d.ts.map +1 -1
  475. package/dist/tabs.js +2 -11
  476. package/dist/tag.cjs +9 -271
  477. package/dist/tag.js +6 -269
  478. package/dist/tags.cjs +7 -315
  479. package/dist/tags.js +6 -315
  480. package/dist/team-switcher-navigation-bar.cjs +1 -1
  481. package/dist/team-switcher-navigation-bar.js +1 -1
  482. package/dist/technical-analysis.cjs +1 -1
  483. package/dist/technical-analysis.js +1 -1
  484. package/dist/terminal.cjs +1 -1
  485. package/dist/terminal.js +1 -1
  486. package/dist/textarea.cjs +5 -52
  487. package/dist/textarea.d.ts.map +1 -1
  488. package/dist/textarea.js +4 -51
  489. package/dist/ticker-tape.cjs +1 -1
  490. package/dist/ticker-tape.js +1 -1
  491. package/dist/ticker.cjs +1 -1
  492. package/dist/ticker.js +1 -1
  493. package/dist/timeline.cjs +1 -1
  494. package/dist/timeline.js +1 -1
  495. package/dist/toaster.cjs +1 -1
  496. package/dist/toaster.js +1 -1
  497. package/dist/toggle.cjs +1 -1
  498. package/dist/toggle.js +1 -1
  499. package/dist/tooltip.cjs +16 -36
  500. package/dist/tooltip.d.ts.map +1 -1
  501. package/dist/tooltip.js +14 -35
  502. package/dist/trading-panel.cjs +1 -1
  503. package/dist/trading-panel.js +1 -1
  504. package/dist/two-tier-navigation-bar.cjs +1 -1
  505. package/dist/two-tier-navigation-bar.js +1 -1
  506. package/dist/underline-navigation-bar.cjs +1 -1
  507. package/dist/underline-navigation-bar.js +1 -1
  508. package/dist/use-narrow.cjs +1 -1
  509. package/dist/use-narrow.js +1 -1
  510. package/dist/vite.cjs +4 -82
  511. package/dist/vite.d.ts.map +1 -1
  512. package/dist/vite.js +2 -80
  513. package/dist/youtube-pip-player.cjs +1 -1
  514. package/dist/youtube-pip-player.js +1 -1
  515. package/package.json +2 -2
  516. package/src/accordion.tsx +1 -0
  517. package/src/alert.tsx +1 -0
  518. package/src/button.tsx +1 -0
  519. package/src/checkbox.tsx +1 -0
  520. package/src/collapsible.tsx +1 -0
  521. package/src/dialog.tsx +1 -0
  522. package/src/drawer.tsx +1 -0
  523. package/src/image.tsx +1 -0
  524. package/src/input-group.tsx +1 -0
  525. package/src/input.tsx +1 -0
  526. package/src/next.ts +1 -0
  527. package/src/pin-input.tsx +1 -0
  528. package/src/popover.tsx +1 -0
  529. package/src/progress-circle.tsx +1 -0
  530. package/src/radio.tsx +1 -0
  531. package/src/rating.tsx +1 -0
  532. package/src/site/commerce/ui/store.ts +1 -0
  533. package/src/site/components/header/desktop.tsx +1 -0
  534. package/src/site/components/header/mobile-nav-menu-item.tsx +1 -0
  535. package/src/site/components/not-found/index.tsx +1 -0
  536. package/src/site/components/security/index.tsx +1 -0
  537. package/src/site/root-layout/index.tsx +1 -0
  538. package/src/slider.tsx +1 -0
  539. package/src/switch.tsx +1 -0
  540. package/src/table.tsx +1 -0
  541. package/src/tabs.tsx +1 -0
  542. package/src/textarea.tsx +1 -0
  543. package/src/tooltip.tsx +1 -0
  544. package/src/vite.ts +1 -0
  545. package/dist/index.css +0 -132
  546. package/dist/site/components/auth/login-panel.css +0 -4
  547. package/dist/site/components/commerce/bag-button.css +0 -4
  548. package/dist/site/components/commerce/checkout-button.css +0 -4
  549. package/dist/site/components/commerce/checkout-panel/desktop-cp.css +0 -132
  550. package/dist/site/components/commerce/checkout-panel/index.css +0 -132
  551. package/dist/site/components/commerce/checkout-panel/mobile-cp.css +0 -132
  552. package/dist/site/components/commerce/desktop-bag-popup.css +0 -4
  553. package/dist/site/components/commerce/drawer/index.css +0 -132
  554. package/dist/site/components/commerce/drawer/micro.css +0 -4
  555. package/dist/site/components/header/desktop.css +0 -4
  556. package/dist/site/components/header/index.css +0 -132
  557. package/dist/site/components/header/mobile-bag-drawer.css +0 -4
  558. package/dist/site/components/header/mobile-nav-menu-ai.css +0 -132
  559. package/dist/site/components/header/mobile-nav-menu-item.css +0 -132
  560. package/dist/site/components/header/mobile-nav-menu.css +0 -132
  561. package/dist/site/components/header/mobile.css +0 -132
  562. package/dist/site/components/icons/index.css +0 -4
  563. package/dist/site/components/index.css +0 -132
  564. package/dist/site/components/not-found/index.css +0 -132
  565. package/dist/site/components/security/index.css +0 -132
  566. package/dist/site/site-def/footer/community.css +0 -4
  567. package/dist/site/site-def/footer/index.css +0 -4
  568. package/dist/site/site-def/index.css +0 -4
@@ -1,1421 +1,16 @@
1
- import { buttonVariants, NavigationMenuLink, Drawer, DrawerContent, DrawerHandle, Button, Toaster, Card, NavigationMenu, NavigationMenuList, NavigationMenuItem, navigationMenuTriggerStyle, NavigationMenuTrigger, NavigationMenuContent, Popover, PopoverTrigger, PopoverContent, PopoverClose, Accordion, AccordionItem, AccordionTrigger, AccordionContent, Separator } from '@hanzo/ui/primitives';
2
- import { Box, cn, MediaStack, Hanzo, css } from '@hanzo/ui';
3
- import { useCommerce, CarouselBuyCard, formatCurrencyValue, CommerceProvider, CartPanel } from '@hanzo/commerce';
4
- import * as React7 from 'react';
5
- import React7__default, { createContext, useRef, useEffect, useContext, useLayoutEffect, useState } from 'react';
6
- import { useRouter, usePathname } from 'next/navigation';
7
- import Script from 'next/script';
8
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
- import { enableStaticRendering, observer } from 'mobx-react-lite';
10
- import { useDebounceCallback } from 'usehooks-ts';
11
- import { observable, reaction, runInAction, makeObservable, computed, action, observableRef } from 'mobx';
12
- import { LuxLogo, Logo as Logo$1, Wordmark } from '@luxfi/logo';
13
- import Link2 from 'next/link';
14
- import { IamProvider, IamContext, useIam, Login as Login$1, useIamIdentity } from '@hanzo/iam/react';
15
- import { X, Plus, ChevronDown, ArrowRight } from 'lucide-react';
16
- import { BRAND_SERVER_URLS } from '@hanzo/iam/paths';
17
- import { GoogleAnalytics } from '@next/third-parties/google';
18
- import 'embla-carousel-autoplay';
1
+ 'use client';
2
+ import { Toaster } from '@hanzo/ui/primitives';
3
+ import { Hanzo } from '@hanzo/ui';
4
+ import { CommerceProvider } from '@hanzo/commerce';
5
+ import { FacebookPixelHead } from '../next/analytics/pixel-analytics.js';
6
+ import { CommerceUIProvider } from '../commerce/ui/context.js';
7
+ import { Analytics, Auth, Header, ChatWidget } from '../components/index.js';
8
+ import CommerceDrawer from '../components/commerce/drawer/index.js';
19
9
  import '@hanzo/design/tokens/fonts.css';
20
10
  import '@hanzo/ui/theme.css';
21
11
  import '@hanzo/ui/styles.css';
12
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
22
13
 
23
- // src/site/root-layout/index.tsx
24
-
25
- // src/site/next/analytics/fpixel.ts
26
- var FB_PIXEL_ID = process.env.NEXT_PUBLIC_FACEBOOK_PIXEL_ID || "";
27
- var pageview = () => {
28
- window.fbq("track", "PageView");
29
- };
30
- var FacebookPixelHead = () => {
31
- return /* @__PURE__ */ jsx("noscript", { children: /* @__PURE__ */ jsx(
32
- "img",
33
- {
34
- height: "1",
35
- width: "1",
36
- style: { display: "none" },
37
- src: `https://www.facebook.com/tr?id=${FB_PIXEL_ID}&ev=PageView&noscript=1`
38
- }
39
- ) });
40
- };
41
- var FacebookPixel = () => {
42
- const [loaded, setLoaded] = useState(false);
43
- const pathname = usePathname();
44
- useEffect(() => {
45
- if (!loaded) return;
46
- pageview();
47
- }, [pathname, loaded]);
48
- return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
49
- Script,
50
- {
51
- id: "fb-pixel",
52
- strategy: "afterInteractive",
53
- onLoad: () => setLoaded(true),
54
- dangerouslySetInnerHTML: {
55
- __html: `
56
- !function(f,b,e,v,n,t,s)
57
- {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
58
- n.callMethod.apply(n,arguments):n.queue.push(arguments)};
59
- if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
60
- n.queue=[];t=b.createElement(e);t.async=!0;
61
- t.src=v;s=b.getElementsByTagName(e)[0];
62
- s.parentNode.insertBefore(t,s)}(window, document,'script',
63
- 'https://connect.facebook.net/en_US/fbevents.js');
64
- fbq('init', ${FB_PIXEL_ID});
65
- `
66
- }
67
- }
68
- ) });
69
- };
70
- var log = (s) => {
71
- {
72
- console.log("COMMERCE_UI " + s);
73
- }
74
- };
75
- var CommerceUIStore = class {
76
- // points to either this._pointsConfig.md or this._pointsConfig.dt
77
- constructor(s, conf) {
78
- this._vHeight = 0;
79
- this._routeChangedTime = 0;
80
- this._currentSkuPath = void 0;
81
- this._closedByUser = false;
82
- this._checkingOut = void 0;
83
- this._ignoreStateChange = false;
84
- this._activePoint = null;
85
- this._reactionDisposers = [];
86
- this.initialize = () => {
87
- this._reactionDisposers.push(reaction(
88
- () => this.state,
89
- (s) => {
90
- if (this.ignoreStateChange) {
91
- log(`STATE CHANGE to "${s}" (IGNORED)`);
92
- this.setIgnoreStateChange(false);
93
- return;
94
- } else {
95
- log(`STATE CHANGE to "${s}" (UI REACTED)`);
96
- this._syncUIToState(s);
97
- }
98
- }
99
- ));
100
- };
101
- this.newRoute = () => {
102
- this.setRouteChangedTime((/* @__PURE__ */ new Date()).getTime());
103
- this.hideVariants();
104
- this.setClosedByUser(false);
105
- };
106
- this.onActivePointChanged = (newPoint) => {
107
- log("ON onActivePointChanged: " + newPoint);
108
- if (newPoint === this._points.micro && this.activePoint === this._points.full) {
109
- log("ON onActivePointChanged: to MICRO");
110
- this.setIgnoreStateChange(true);
111
- this.hideVariants();
112
- } else if (newPoint === this._points.full && this.activePoint === this._points.micro) {
113
- log("ON onActivePointChanged: to FULL");
114
- this.setIgnoreStateChange(true);
115
- this.showRecentVariants();
116
- }
117
- this.setActivePoint(newPoint);
118
- };
119
- this.showVariants = (skuPath) => {
120
- this._service.setCurrentItem(void 0);
121
- this._currentSkuPath = skuPath;
122
- this._closedByUser = false;
123
- };
124
- this.showRecentVariants = () => {
125
- const recentItemInfo = this._service.recentItem;
126
- if (recentItemInfo) {
127
- this._service.setCurrentItem(void 0);
128
- this._currentSkuPath = recentItemInfo.item.sku;
129
- this._closedByUser = false;
130
- }
131
- };
132
- this.hideVariants = () => {
133
- this._currentSkuPath = void 0;
134
- };
135
- this.setClosedByUser = (b) => {
136
- this._closedByUser = b;
137
- };
138
- this.setIgnoreStateChange = (b) => {
139
- this._ignoreStateChange = b;
140
- };
141
- this.setCheckingOut = (b) => {
142
- this._checkingOut = b;
143
- };
144
- this.setActivePoint = (pt) => {
145
- this._activePoint = pt;
146
- };
147
- this.setRouteChangedTime = (t) => {
148
- this._routeChangedTime = t;
149
- };
150
- this._syncUIToState = (s) => {
151
- log("_syncUIToState: " + s);
152
- if (s === "micro") {
153
- this.setActivePoint(this.points[0]);
154
- } else if (s === "full") {
155
- this.setActivePoint(this.points[this.points.length - 1]);
156
- } else {
157
- this.setActivePoint(null);
158
- }
159
- };
160
- this.setMobile = (b) => {
161
- log("setMobile: " + b);
162
- this._points = b ? this._pointsConfig.mb : this._pointsConfig.dt;
163
- };
164
- this.setViewportHeight = (v) => {
165
- this._vHeight = v;
166
- };
167
- this.dispose = () => {
168
- this._reactionDisposers.forEach((d) => {
169
- d();
170
- });
171
- };
172
- this._service = s;
173
- this._pointsConfig = conf;
174
- this._points = this._pointsConfig.dt;
175
- makeObservable(this, {
176
- _currentSkuPath: observable,
177
- _closedByUser: observable,
178
- _checkingOut: observable,
179
- _activePoint: observable,
180
- _points: observableRef,
181
- _vHeight: observable,
182
- _routeChangedTime: observable,
183
- showVariants: action,
184
- showRecentVariants: action,
185
- hideVariants: action,
186
- setClosedByUser: action,
187
- setCheckingOut: action,
188
- setActivePoint: action,
189
- setMobile: action,
190
- setViewportHeight: action,
191
- setRouteChangedTime: action,
192
- activePoint: computed,
193
- checkingOut: computed,
194
- closedByUser: computed,
195
- currentSkuPath: computed,
196
- microHeight: computed,
197
- modal: computed,
198
- points: computed,
199
- showRecent: computed,
200
- showBuy: computed,
201
- showCheckout: computed,
202
- snapPointPx: computed,
203
- state: computed,
204
- open: computed
205
- });
206
- }
207
- get currentSkuPath() {
208
- return this._currentSkuPath;
209
- }
210
- get closedByUser() {
211
- return this._closedByUser;
212
- }
213
- get ignoreStateChange() {
214
- return this._ignoreStateChange;
215
- }
216
- get checkingOut() {
217
- return this._checkingOut;
218
- }
219
- get activePoint() {
220
- return this._activePoint;
221
- }
222
- get points() {
223
- return [this._points.micro, this._points.full];
224
- }
225
- get open() {
226
- log(
227
- "open(): showCheckout: " + this.showCheckout + " showRecent: " + this.showRecent + " showBuy: " + this.showBuy
228
- );
229
- return this._checkingOut !== void 0 && !this._checkingOut && !this.closedByUser && (this.showCheckout || this.showRecent || this.showBuy);
230
- }
231
- get state() {
232
- if (!this.closedByUser && !this._checkingOut) {
233
- if (this.showBuy) {
234
- return "full";
235
- } else if (this.showRecent || this.showCheckout) {
236
- return "micro";
237
- }
238
- }
239
- return "closed";
240
- }
241
- get showRecent() {
242
- const recentInfo = this._service.recentItem;
243
- return !!recentInfo && recentInfo.modified > this._routeChangedTime;
244
- }
245
- get showBuy() {
246
- return !!this.currentSkuPath;
247
- }
248
- get showCheckout() {
249
- return !this._service.cartEmpty;
250
- }
251
- get modal() {
252
- return this.state !== "micro";
253
- }
254
- get microHeight() {
255
- return this._points.micro;
256
- }
257
- get isMobile() {
258
- return this._pointsConfig.mb === this._points;
259
- }
260
- get snapPointPx() {
261
- if (!this._activePoint || this._vHeight === 0) return 0;
262
- if (typeof this._activePoint === "string") {
263
- return parseInt(this._activePoint);
264
- }
265
- return this._vHeight * this._activePoint;
266
- }
267
- };
268
-
269
- // src/site/commerce/ui/conf.ts
270
- var conf_default = {
271
- mb: {
272
- micro: "72px",
273
- full: "600px"
274
- },
275
- dt: {
276
- micro: "90px",
277
- full: "620px"
278
- }
279
- };
280
- var DESKTOP_MIN = 768;
281
- var log2 = (s) => {
282
- };
283
- enableStaticRendering(typeof window === "undefined");
284
- var CommerceUIContext = createContext(void 0);
285
- var useCommerceDrawer = () => {
286
- return useContext(CommerceUIContext);
287
- };
288
- var useSelectAndBuy = () => {
289
- return useContext(CommerceUIContext);
290
- };
291
- var CommerceUIProvider = ({
292
- children
293
- }) => {
294
- const cmmc = useCommerce();
295
- const pathname = usePathname();
296
- const storeRef = useRef(new CommerceUIStore(cmmc, conf_default));
297
- const prevPathRef = useRef("initial");
298
- const onResize = () => {
299
- const width = window.innerWidth;
300
- if (width < DESKTOP_MIN) {
301
- if (!storeRef.current.isMobile) {
302
- storeRef.current.setMobile(true);
303
- }
304
- } else if (storeRef.current.isMobile) {
305
- storeRef.current.setMobile(false);
306
- }
307
- storeRef.current.setViewportHeight(window.innerHeight);
308
- };
309
- const onResize_debounced = useDebounceCallback(onResize, 500);
310
- useLayoutEffect(() => {
311
- storeRef.current.initialize();
312
- onResize();
313
- window.addEventListener("resize", onResize_debounced);
314
- return () => {
315
- window.removeEventListener("resize", onResize_debounced);
316
- storeRef.current.dispose();
317
- };
318
- }, []);
319
- useEffect(() => {
320
- const checkingOut = pathname === "/checkout";
321
- log2("useEffect: prev pathname: " + prevPathRef.current);
322
- if (storeRef.current.checkingOut === void 0 || storeRef.current._checkingOut !== checkingOut) {
323
- storeRef.current.setCheckingOut(checkingOut);
324
- }
325
- if (prevPathRef.current === "initial") {
326
- prevPathRef.current = pathname;
327
- storeRef.current.newRoute();
328
- } else if (!checkingOut && prevPathRef.current !== pathname) {
329
- storeRef.current.newRoute();
330
- prevPathRef.current = pathname;
331
- log2("ROUTE CHANGE: " + pathname + ": " + storeRef.current._routeChangedTime);
332
- }
333
- }, [pathname]);
334
- return /* @__PURE__ */ jsx(CommerceUIContext.Provider, { value: storeRef.current, children });
335
- };
336
- var ChatWidget = ({
337
- title,
338
- chatbotUrl,
339
- subtitle,
340
- question,
341
- suggestedQuestions,
342
- buttonClx = ""
343
- }) => {
344
- const [showChatbot, setShowChatbot] = React7__default.useState(false);
345
- const onClick = () => {
346
- setShowChatbot(!showChatbot);
347
- };
348
- const searchParams = new URLSearchParams();
349
- if (question) {
350
- searchParams.append("question", question);
351
- }
352
- if (suggestedQuestions) {
353
- searchParams.append("sQuestions", suggestedQuestions.map(({ message }) => message).join(","));
354
- searchParams.append("sHeadings", suggestedQuestions.map(({ heading }) => heading).join(","));
355
- searchParams.append("sIcons", suggestedQuestions.map(({ icon }) => icon).join(","));
356
- }
357
- const iframeSrc = `${chatbotUrl}?${searchParams.toString()}`;
358
- return /* @__PURE__ */ jsxs(Fragment, { children: [
359
- /* @__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: [
360
- /* @__PURE__ */ jsxs("div", { className: "flex px-4 py-2 h-12 bg-level-0 items-center justify-between", children: [
361
- /* @__PURE__ */ jsxs("h1", { className: "font-semibold font-heading", children: [
362
- title,
363
- " ",
364
- /* @__PURE__ */ jsx("span", { className: "opacity-60", children: subtitle })
365
- ] }),
366
- /* @__PURE__ */ jsx(Button, { onClick, variant: "link", size: "icon", className: "w-fit sm:hidden", children: /* @__PURE__ */ jsx(LuxLogo, { variant: "white", size: 24 }) })
367
- ] }),
368
- /* @__PURE__ */ jsx("iframe", { src: iframeSrc, className: "h-full" })
369
- ] }) }),
370
- /* @__PURE__ */ jsx(
371
- Box,
372
- {
373
- tag: "span",
374
- onClick,
375
- className: cn(
376
- // z-index should be below anything in commerce-iu (buy drawer and checkout widget)
377
- "fixed bottom-5 right-[24px] md:z-floating z-16 cursor-pointer",
378
- "hover:drop-shadow-[0_2px_6px_rgba(255,255,255,1)]",
379
- "transition-transform",
380
- showChatbot ? "rotate-180" : "",
381
- buttonClx
382
- ),
383
- children: /* @__PURE__ */ jsx(LuxLogo, { variant: "white", size: 28 })
384
- }
385
- )
386
- ] });
387
- };
388
- var chat_widget_default = ChatWidget;
389
- var SIZE = {
390
- xl: { mark: 40, word: 22, gap: "gap-4" },
391
- lg: { mark: 40, word: 22, gap: "gap-4" },
392
- md: { mark: 32, word: 18, gap: "gap-3" },
393
- sm: { mark: 24, word: 13, gap: "gap-2" },
394
- xs: { mark: 16, word: 9, gap: "gap-1.5" }
395
- };
396
- var Logo = ({
397
- size = "md",
398
- href,
399
- // no default please!
400
- outerClx = "",
401
- variant = "full",
402
- onClick
403
- }) => {
404
- const s = SIZE[size] ?? SIZE.md;
405
- const clx = "flex flex-row items-center " + s.gap + " " + (href ? "hover:opacity-80 cursor-pointer " : "cursor-default ") + outerClx;
406
- const art = /* @__PURE__ */ jsxs(Fragment, { children: [
407
- variant !== "wordmark" && /* @__PURE__ */ jsx(Logo$1, { variant: "white", size: s.mark }),
408
- variant !== "mark" && /* @__PURE__ */ jsx(Wordmark, { height: s.word })
409
- ] });
410
- return href ? /* @__PURE__ */ jsx(Link2, { href, style: css(clx), onClick, children: art }) : /* @__PURE__ */ jsx(Box, { tag: "span", className: clx, onClick, children: art });
411
- };
412
-
413
- // src/site/components/auth/resume.ts
414
- var KEY = "lux-auth-resume";
415
- var remember = () => {
416
- sessionStorage.setItem(KEY, window.location.pathname + window.location.search);
417
- };
418
- var Widget = ({
419
- noLogin = false,
420
- handleLogin,
421
- className
422
- }) => {
423
- const { isAuthenticated, isLoading, login, logout } = useIam();
424
- const identity = useIamIdentity();
425
- if (isLoading) {
426
- return null;
427
- }
428
- if (!isAuthenticated) {
429
- return noLogin ? null : /* @__PURE__ */ jsx(
430
- Button,
431
- {
432
- variant: "primary",
433
- className: cn("h-8 w-fit !min-w-0", className),
434
- onClick: handleLogin ?? (() => {
435
- remember();
436
- void login();
437
- }),
438
- children: "Login"
439
- }
440
- );
441
- }
442
- return /* @__PURE__ */ jsxs(Popover, { children: [
443
- /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
444
- Button,
445
- {
446
- variant: "outline",
447
- size: "icon",
448
- 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),
449
- children: identity?.initials
450
- }
451
- ) }),
452
- /* @__PURE__ */ jsx(PopoverContent, { className: "bg-level-0", children: /* @__PURE__ */ jsxs("div", { className: "grid gap-4", children: [
453
- /* @__PURE__ */ jsxs("div", { className: "space-y-2 truncate", children: [
454
- /* @__PURE__ */ jsx("h4", { className: "font-medium leading-none truncate", children: identity?.name }),
455
- identity?.email && identity.email !== identity.name && /* @__PURE__ */ jsx("p", { className: "text-sm opacity-50 truncate", children: identity.email })
456
- ] }),
457
- /* @__PURE__ */ jsx(Separator, {}),
458
- /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => {
459
- logout();
460
- }, children: "Logout" })
461
- ] }) })
462
- ] });
463
- };
464
- var AuthWidget = (props) => useContext(IamContext) ? /* @__PURE__ */ jsx(Widget, { ...props }) : null;
465
- var widget_default = AuthWidget;
466
- 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: [
467
- /* @__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" }),
468
- /* @__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" })
469
- ] });
470
- var avatar_default = Avatar;
471
- 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" }) });
472
- var bag_icon_default = BagIcon;
473
-
474
- // src/site/next/analytics/google-analytics.ts
475
- var sendGAEvent = (name, options = {}) => {
476
- window.gtag("event", name, options);
477
- };
478
- var DesktopBagPopup = ({
479
- triggerClx = "",
480
- popupClx = "",
481
- trigger
482
- }) => {
483
- const cmmc = useCommerce();
484
- const [bagOpen, setBagOpen] = useState(false);
485
- const router = useRouter();
486
- useEffect(() => {
487
- if (bagOpen) {
488
- sendGAEvent("view_cart", {
489
- items: cmmc.cartItems.map((item) => ({
490
- item_id: item.sku,
491
- item_name: item.title,
492
- item_category: item.familyId,
493
- price: item.price,
494
- quantity: item.quantity
495
- })),
496
- value: cmmc.cartTotal,
497
- currency: "USD"
498
- });
499
- }
500
- }, [bagOpen]);
501
- return /* @__PURE__ */ jsxs(Popover, { open: bagOpen, onOpenChange: setBagOpen, children: [
502
- /* @__PURE__ */ jsx(PopoverTrigger, { className: triggerClx, children: trigger }),
503
- /* @__PURE__ */ jsxs(PopoverContent, { sideOffset: 28, className: cn("relative flex flex-col p-0 px-4 pb-4 pt-2", popupClx), children: [
504
- /* @__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" }) }),
505
- /* @__PURE__ */ jsxs(
506
- CartPanel,
507
- {
508
- handleCheckout: () => {
509
- router.push("/checkout");
510
- },
511
- className: "mt-4 mb-4 border-none py-0 px-4",
512
- listClx: "rounded-sm pr-3",
513
- scrollAfter: 5,
514
- scrollHeightClx: "h-[70vh]",
515
- itemClx: "mt-3",
516
- totalClx: "sticky px-1 pr-2 -bottom-[1px] bg-level-1",
517
- buttonClx: "max-w-[220px] flex-none",
518
- children: [
519
- /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
520
- /* @__PURE__ */ jsx(bag_icon_default, { className: "mr-2 relative w-6 h-7 fill-foreground " }),
521
- /* @__PURE__ */ jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
522
- ] }),
523
- /* @__PURE__ */ jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
524
- ]
525
- }
526
- )
527
- ] })
528
- ] });
529
- };
530
- var desktop_bag_popup_default = DesktopBagPopup;
531
- var BagButton = observer(({
532
- showIfEmpty = false,
533
- animateOnHover = true,
534
- animateOnQuantityChange = true,
535
- size = "default",
536
- className = "",
537
- iconClx = "",
538
- onClick
539
- }) => {
540
- const c = useCommerce();
541
- const wiggleRef = useRef(observable.box("none"));
542
- useEffect(() => (
543
- // return IReactionDisposer
544
- animateOnQuantityChange && c ? reaction(
545
- () => c.cartQuantity,
546
- (curr, prev) => {
547
- if (curr > prev) {
548
- runInAction(() => {
549
- wiggleRef.current.set("more");
550
- });
551
- } else {
552
- runInAction(() => {
553
- wiggleRef.current.set("less");
554
- });
555
- }
556
- setTimeout(() => {
557
- runInAction(() => {
558
- wiggleRef.current.set("none");
559
- });
560
- }, 800);
561
- }
562
- ) : void 0
563
- ), []);
564
- if (!c || !showIfEmpty && c.cartEmpty) {
565
- return /* @__PURE__ */ jsx("div", {});
566
- }
567
- return /* @__PURE__ */ jsxs(
568
- Box,
569
- {
570
- "aria-label": "Bag",
571
- role: "button",
572
- onClick,
573
- className: cn(
574
- buttonVariants({ variant: "ghost", size }),
575
- "rounded-md",
576
- // Overides the bg change on hover --not a "hover effect"
577
- "relative group p-0 aspect-square hover:bg-background",
578
- wiggleRef.current.get() === "more" ? "item-added-to-cart-animation" : wiggleRef.current.get() === "less" ? "item-removed-from-cart-animation" : "",
579
- className
580
- ),
581
- children: [
582
- !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: [
583
- /* @__PURE__ */ jsx("div", { className: "h-[3px] w-full" }),
584
- /* @__PURE__ */ jsx("div", { children: c.cartQuantity })
585
- ] }),
586
- /* @__PURE__ */ jsx(bag_icon_default, { width: "24", height: "28", className: cn(
587
- "relative -top-[3px] fill-primary",
588
- iconClx,
589
- animateOnHover ? "group-hover:fill-primary-hover group-hover:scale-105 transition-scale transition-duration-300" : ""
590
- ), "aria-hidden": "true" })
591
- ]
592
- }
593
- );
594
- });
595
- var bag_button_default = BagButton;
596
- var DesktopNav = ({ links, isMenuOpened, setIsMenuOpen }) => {
597
- React7.useEffect(() => {
598
- const preventScroll = (e) => {
599
- e.preventDefault();
600
- };
601
- if (isMenuOpened) {
602
- window.addEventListener("wheel", preventScroll, { passive: false });
603
- window.addEventListener("touchmove", preventScroll, { passive: false });
604
- window.addEventListener("keydown", preventScrollKeys, { passive: false });
605
- } else {
606
- window.removeEventListener("wheel", preventScroll);
607
- window.removeEventListener("touchmove", preventScroll);
608
- window.removeEventListener("keydown", preventScrollKeys);
609
- }
610
- return () => {
611
- window.removeEventListener("wheel", preventScroll);
612
- window.removeEventListener("touchmove", preventScroll);
613
- window.removeEventListener("keydown", preventScrollKeys);
614
- };
615
- }, [isMenuOpened]);
616
- const preventScrollKeys = (e) => {
617
- if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", " "].includes(e.key)) {
618
- e.preventDefault();
619
- }
620
- };
621
- const handleMouseEnter = React7.useCallback(() => {
622
- setIsMenuOpen(true);
623
- }, [setIsMenuOpen]);
624
- const handleMouseLeave = React7.useCallback(() => {
625
- setIsMenuOpen(false);
626
- }, [setIsMenuOpen]);
627
- const handleContentMouseMove = () => {
628
- setIsMenuOpen(false);
629
- };
630
- const menuHiddenClass = !isMenuOpened ? "invisible" : "";
631
- 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: [
632
- /* @__PURE__ */ jsx(
633
- NavigationMenuTrigger,
634
- {
635
- className: "text-muted-1 bg-transparent",
636
- onMouseEnter: handleMouseEnter,
637
- onFocus: handleMouseEnter,
638
- onMouseLeave: handleMouseLeave,
639
- onBlur: handleMouseLeave,
640
- children: /* @__PURE__ */ jsx(Link2, { href: el.href, children: el.title })
641
- }
642
- ),
643
- /* @__PURE__ */ jsx(
644
- NavigationMenuContent,
645
- {
646
- className: cn("fixed left-0 top-14 pt-6 w-screen h-full border-0 !backdrop-blur-3xl bg-transparent mt-0", menuHiddenClass),
647
- onMouseEnter: handleMouseEnter,
648
- onMouseLeave: handleMouseLeave,
649
- children: /* @__PURE__ */ jsx("div", { className: "flex justify-center items-start", children: /* @__PURE__ */ jsx(
650
- "div",
651
- {
652
- className: "grid xl:grid-cols-3 w-full justify-center max-w-[750px]",
653
- onMouseLeave: handleContentMouseMove,
654
- children: GroupChildMenu({ childs: el.childMenu, isCards: true })
655
- }
656
- ) })
657
- }
658
- )
659
- ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
660
- /* @__PURE__ */ jsx(
661
- NavigationMenuTrigger,
662
- {
663
- className: "text-muted-1 bg-transparent",
664
- onMouseEnter: handleMouseEnter,
665
- onFocus: handleMouseEnter,
666
- onMouseLeave: handleMouseLeave,
667
- onBlur: handleMouseLeave,
668
- children: el.href && el.href !== "" ? /* @__PURE__ */ jsx(Link2, { href: el.href, children: el.title }) : /* @__PURE__ */ jsx(Fragment, { children: el.title })
669
- }
670
- ),
671
- /* @__PURE__ */ jsx(
672
- NavigationMenuContent,
673
- {
674
- className: cn("fixed left-0 top-14 pt-6 w-screen h-full border-0 !backdrop-blur-3xl bg-transparent mt-0", menuHiddenClass),
675
- onMouseEnter: handleMouseEnter,
676
- onMouseLeave: handleMouseLeave,
677
- children: /* @__PURE__ */ jsx(
678
- "div",
679
- {
680
- className: "flex flex-row w-full justify-center",
681
- onMouseLeave: handleContentMouseMove,
682
- children: GroupChildMenu({ childs: el.childMenu })
683
- }
684
- )
685
- }
686
- )
687
- ] }) }, index)) }) }) : null;
688
- };
689
- var desktop_nav_menu_default = DesktopNav;
690
- var ListItem = React7.forwardRef(({ className, title, children, ...props }, ref) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(NavigationMenuLink, { asChild: true, children: /* @__PURE__ */ jsxs(
691
- Box,
692
- {
693
- tag: "a",
694
- ref,
695
- className: cn(
696
- "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",
697
- className
698
- ),
699
- ...props,
700
- children: [
701
- /* @__PURE__ */ jsx("div", { className: "text-sm font-medium leading-none", children: title }),
702
- /* @__PURE__ */ jsx("p", { className: "line-clamp-3 text-sm leading-snug text-muted-1", children })
703
- ]
704
- }
705
- ) }) }, title));
706
- ListItem.displayName = "ListItem";
707
- var GroupChildMenu = (params) => {
708
- const { childs, isCards = false } = params;
709
- if (!childs) {
710
- return null;
711
- }
712
- const groupedChildMenus = childs.reduce((grouped, childLink) => {
713
- if (childLink.groupName) {
714
- grouped[childLink.groupName] = grouped[childLink.groupName] || [];
715
- grouped[childLink.groupName].push(childLink);
716
- }
717
- return grouped;
718
- }, {});
719
- const getChildExtraClass = (index) => {
720
- if (isCards && (index === 3 || index === 4)) {
721
- return "xl:-mt-32";
722
- }
723
- return "";
724
- };
725
- return Object.entries(groupedChildMenus).map(([groupName, childLinks], index) => /* @__PURE__ */ jsxs(Box, { className: cn("py-4 px-4 ", getChildExtraClass(index)), children: [
726
- /* @__PURE__ */ jsx("h2", { className: "text-muted-1", children: groupName }),
727
- /* @__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: [
728
- link.icon,
729
- /* @__PURE__ */ jsx(ListItem, { title: link.title, href: link.href, className: "ml-[14px]", children: link.contents }, link.title)
730
- ] }, link.title)) })
731
- ] }, groupName));
732
- };
733
- var DesktopHeader = ({
734
- links,
735
- className = "",
736
- noAuth = false,
737
- noCommerce = false,
738
- children,
739
- logoVariant = "full"
740
- }) => {
741
- const [isMenuOpened, setIsMenuOpen] = React7__default.useState(false);
742
- return /* @__PURE__ */ jsx(Box, { tag: "header", id: "DESKTOP_HEADER", className: cn(
743
- "bg-[rgba(0, 0, 0, 0.5)] !backdrop-blur-3xl fixed z-header top-0 left-0 right-0",
744
- className,
745
- isMenuOpened ? " h-full" : ""
746
- ), children: /* @__PURE__ */ jsxs(Box, { className: "flex flex-row h-[80px] items-center justify-between mx-[24px] w-full max-w-screen", children: [
747
- /* @__PURE__ */ jsx(Logo, { size: logoVariant === "mark" ? "lg" : "md", href: "/", outerClx: "hidden lg:flex", variant: logoVariant }, "two"),
748
- /* @__PURE__ */ jsx(Logo, { size: "sm", href: "/", outerClx: "hidden md:flex lg:hidden", variant: logoVariant }, "one"),
749
- /* @__PURE__ */ jsx("div", { className: "flex w-full gap-4 items-center justify-center", children: /* @__PURE__ */ jsx(desktop_nav_menu_default, { links, isMenuOpened, setIsMenuOpen }) }),
750
- /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
751
- !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" }) }),
752
- !noAuth && /* @__PURE__ */ jsx(widget_default, {}),
753
- children
754
- ] })
755
- ] }) });
756
- };
757
- var desktop_default = DesktopHeader;
758
- var Login = ({
759
- className,
760
- onSuccess
761
- }) => {
762
- const { config } = useIam();
763
- const [state] = useState(() => crypto.randomUUID());
764
- useEffect(remember, []);
765
- return /* @__PURE__ */ jsx(
766
- Login$1,
767
- {
768
- serverUrl: config.serverUrl,
769
- clientId: config.clientId,
770
- redirectUri: config.redirectUri,
771
- organization: config.organization,
772
- state,
773
- className: cn("hanzo-iam-card", className),
774
- onSuccess
775
- }
776
- );
777
- };
778
- var login_default = Login;
779
- var MobileMenuToggleButton = ({
780
- open: open2,
781
- setOpen,
782
- className = ""
783
- }) => {
784
- return /* @__PURE__ */ jsx(
785
- Button,
786
- {
787
- variant: "ghost",
788
- size: "default",
789
- className: cn("rounded-full", cn("p-0 aspect-square hover:bg-background sm:hover:bg-level-1 active:scale-75", className)),
790
- onClick: () => {
791
- setOpen(!open2);
792
- },
793
- children: /* @__PURE__ */ jsx(Plus, { width: 28, height: 28, style: css(
794
- "block h-full will-change-transform transition-transform transition-scale transition-duration-[1500] " + (open2 ? "rotate-[135deg] scale-110" : "rotate-none")
795
- ) })
796
- }
797
- );
798
- };
799
- var mobile_menu_toggle_button_default = MobileMenuToggleButton;
800
- var MobileBagDrawer = ({
801
- open: open2,
802
- setOpen,
803
- handleCheckout,
804
- className = ""
805
- }) => {
806
- 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(
807
- CartPanel,
808
- {
809
- handleCheckout,
810
- className: "mt-4 mb-4 border-none py-0 px-4 w-full ",
811
- listClx: "rounded-sm pr-3",
812
- scrollAfter: 5,
813
- itemClx: "mt-2",
814
- totalClx: "sticky px-1 pr-2 border rounded-sm -bottom-[1px] bg-background",
815
- buttonClx: "max-w-[220px] flex-none",
816
- children: [
817
- /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
818
- /* @__PURE__ */ jsx(
819
- bag_button_default,
820
- {
821
- animateOnHover: false,
822
- showIfEmpty: true,
823
- className: "mr-2 relative w-6 h-7",
824
- iconClx: "fill-foreground "
825
- }
826
- ),
827
- /* @__PURE__ */ jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
828
- ] }),
829
- /* @__PURE__ */ jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
830
- ]
831
- }
832
- ) }) });
833
- };
834
- var mobile_bag_drawer_default = MobileBagDrawer;
835
- var MobileNavMenuAI = ({ setMenuOpen }) => {
836
- const [isOpen, setIsOpen] = useState(false);
837
- return /* @__PURE__ */ jsxs(Fragment, { children: [
838
- /* @__PURE__ */ jsxs(Box, { className: "w-full text-2xl cursor-pointer", children: [
839
- /* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
840
- /* @__PURE__ */ jsx(Logo, { variant: "wordmark", size: "md", outerClx: "p-6 h-full" }),
841
- /* @__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) }) })
842
- ] }),
843
- /* @__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: [
844
- /* @__PURE__ */ jsx("span", { className: "text-base pl-2 font-light", children: "Ask AI a question" }),
845
- /* @__PURE__ */ jsx(ArrowRight, {})
846
- ] }) })
847
- ] }),
848
- /* @__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: [
849
- /* @__PURE__ */ jsxs("div", { className: "flex px-4 py-2 h-16 bg-level-0 items-center justify-between", children: [
850
- /* @__PURE__ */ jsxs("h3", { className: "font-semibold font-heading", children: [
851
- "LUX",
852
- /* @__PURE__ */ jsx("span", { className: "opacity-60", children: "AI" })
853
- ] }),
854
- /* @__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" }) })
855
- ] }),
856
- /* @__PURE__ */ jsx("iframe", { src: "https://lux.chat/iframe", className: "h-full" })
857
- ] }) })
858
- ] });
859
- };
860
- var mobile_nav_menu_ai_default = MobileNavMenuAI;
861
- var MobileNav = ({
862
- currentAs,
863
- links,
864
- setMenuState,
865
- className = "",
866
- commonItemClx,
867
- setChatbotOpen,
868
- setMenuOpen
869
- }) => links.length > 0 ? /* @__PURE__ */ jsxs(Box, { className: cn("flex flex-col h-full", className), children: [
870
- /* @__PURE__ */ jsx(mobile_nav_menu_ai_default, { setMenuOpen }),
871
- /* @__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) => {
872
- const itemClx = commonItemClx ? typeof commonItemClx === "string" ? commonItemClx : commonItemClx(el) : "";
873
- const variant = el.variant ?? "link";
874
- let internalClx = variant === "link" ? " text-muted hover:text-foreground active:text-accent rounded-none" : " min-w-0";
875
- if (currentAs && currentAs === el.href) {
876
- internalClx += " pointer-events-none";
877
- if (variant === "link") {
878
- internalClx += " text-accent";
879
- }
880
- }
881
- if (!el.isAIMenu) {
882
- return /* @__PURE__ */ jsxs(AccordionItem, { value: el.title ? el.title : "", className: "!no-underline !border-0 px-6", children: [
883
- /* @__PURE__ */ jsxs(AccordionTrigger, { className: cn(internalClx, itemClx, ""), children: [
884
- /* @__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 }),
885
- /* @__PURE__ */ jsx(ChevronDown, { style: css("w-4 h-4 mr-3") })
886
- ] }),
887
- /* @__PURE__ */ jsx(AccordionContent, { children: el.childMenu && /* @__PURE__ */ jsx(Box, { className: "px-4", children: Object.entries(el.childMenu.reduce((acc, child) => {
888
- const group = acc[child.groupName ? child.groupName : ""] || [];
889
- group.push(child);
890
- acc[child.groupName ? child.groupName : ""] = group;
891
- return acc;
892
- }, {})).map(([groupName, children]) => /* @__PURE__ */ jsxs("div", { children: [
893
- /* @__PURE__ */ jsx(Box, { className: "mt-4 mb-4 font-light text-muted-1", children: groupName }),
894
- children.map((child, childIndex) => /* @__PURE__ */ jsx(Box, { className: "m-2", children: /* @__PURE__ */ jsxs(Box, { className: "flex items-center py-1", children: [
895
- /* @__PURE__ */ jsx("span", { children: child.icon && child.icon }),
896
- /* @__PURE__ */ jsx(
897
- Link2,
898
- {
899
- href: child.href,
900
- target: child.newTab ? "_blank" : "_self",
901
- rel: "noopener noreferrer",
902
- children: /* @__PURE__ */ jsx(Box, { tag: "span", className: "text-muted-2 hover:underline ml-5 hover:text-primary", children: child.title })
903
- }
904
- )
905
- ] }) }, childIndex))
906
- ] }, groupName)) }) })
907
- ] }, index);
908
- }
909
- }) }) }),
910
- /* @__PURE__ */ jsx(widget_default, { className: "text-2xl z-10", handleLogin: () => {
911
- setMenuState("login");
912
- } })
913
- ] }) : null;
914
- var mobile_nav_menu_default = MobileNav;
915
- 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 ";
916
- var MobileHeader = ({
917
- currentAs,
918
- links,
919
- className = "",
920
- setChatbotOpen,
921
- noAuth = false,
922
- // :aa TODO
923
- noCommerce = false
924
- // :aa TODO
925
- }) => {
926
- const cmmc = useCommerce();
927
- const [menuState, setMenuState] = useState("closed");
928
- const [bagDrawerOpen, setBagDrawerOpen] = useState(false);
929
- const router = useRouter();
930
- useEffect(() => {
931
- if (menuState === "bag" || bagDrawerOpen) {
932
- sendGAEvent("view_cart", {
933
- items: cmmc.cartItems.map((item) => ({
934
- item_id: item.sku,
935
- item_name: item.title,
936
- item_category: item.familyId,
937
- price: item.price,
938
- quantity: item.quantity
939
- })),
940
- value: cmmc.cartTotal,
941
- currency: "USD"
942
- });
943
- }
944
- }, [menuState, bagDrawerOpen]);
945
- const menuOpen = () => menuState !== "closed";
946
- const onLoginChanged = (token) => {
947
- if (!!token) {
948
- setMenuState("nav");
949
- }
950
- };
951
- const setMenuOpen = (open2) => {
952
- if (!open2) {
953
- setMenuState("closed");
954
- } else {
955
- setMenuState("nav");
956
- }
957
- };
958
- const handleCheckout = () => {
959
- setMenuState("closed");
960
- setBagDrawerOpen(false);
961
- router.push("/checkout");
962
- };
963
- const openBag = () => {
964
- if (menuOpen()) {
965
- setMenuState("bag");
966
- } else {
967
- setBagDrawerOpen(true);
968
- }
969
- };
970
- return /* @__PURE__ */ jsxs(Fragment, { children: [
971
- /* @__PURE__ */ jsx(Box, { tag: "header", id: "MOBILE_HEADER", className: cn(
972
- `bg-background fixed z-header top-0 left-0 w-full ${menuOpen() ? "hidden" : "block"}`,
973
- className
974
- ), children: /* @__PURE__ */ jsxs("div", { className: "w-full h-full flex flex-row justify-between items-center font-bold pr-5", children: [
975
- /* @__PURE__ */ jsx(Logo, { href: "/", size: "md", outerClx: "p-6 h-full", variant: "wordmark" }),
976
- 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 " }) }),
977
- /* @__PURE__ */ jsxs("div", { className: "flex gap-0 flex-row", children: [
978
- /* @__PURE__ */ jsx(bag_button_default, { className: "text-primary -mr-[3px]", onClick: openBag }),
979
- /* @__PURE__ */ jsx(mobile_menu_toggle_button_default, { className: "text-foreground", open: menuOpen(), setOpen: setMenuOpen })
980
- ] })
981
- ] }) }),
982
- !noCommerce && /* @__PURE__ */ jsx(
983
- mobile_bag_drawer_default,
984
- {
985
- className: "",
986
- open: bagDrawerOpen,
987
- setOpen: setBagDrawerOpen,
988
- handleCheckout
989
- }
990
- ),
991
- 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(
992
- CartPanel,
993
- {
994
- handleCheckout: () => {
995
- router.push("/checkout");
996
- },
997
- className: bagClx,
998
- listClx: "rounded-sm",
999
- scrollAfter: 6,
1000
- scrollHeightClx: "h-[80vh]",
1001
- itemClx: "mt-2",
1002
- totalClx: "sticky px-1 pr-2 border rounded-sm -bottom-[1px] bg-level-1",
1003
- buttonClx: "max-w-[220px] flex-none",
1004
- children: [
1005
- /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center flex-none justify-center ", children: [
1006
- /* @__PURE__ */ jsx(bag_icon_default, { className: "mr-2 relative w-4 h-5 fill-foreground " }),
1007
- /* @__PURE__ */ jsx("p", { className: "font-heading text-foreground text-default", children: "Your Bag" })
1008
- ] }),
1009
- /* @__PURE__ */ jsx("div", { className: "h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none" })
1010
- ]
1011
- }
1012
- ) : (
1013
- /* menuState === 'nav' */
1014
- /* @__PURE__ */ jsx(
1015
- mobile_nav_menu_default,
1016
- {
1017
- currentAs,
1018
- links,
1019
- className: "sm:animate-in sm:zoom-in-90 w-full",
1020
- commonItemClx: "px-0 text-xl h-16 justify-start ",
1021
- setMenuState,
1022
- setChatbotOpen,
1023
- setMenuOpen
1024
- }
1025
- )
1026
- ) })
1027
- ] });
1028
- };
1029
- var mobile_default = MobileHeader;
1030
- var Header = ({
1031
- siteDef,
1032
- className = "",
1033
- children,
1034
- logoVariant = "full"
1035
- }) => {
1036
- const [open2, setOpen] = React7__default.useState(false);
1037
- const { nav: { common, featured }, currentAs, noAuth, commerce } = siteDef;
1038
- const links = featured ? [...common, ...featured] : common;
1039
- return /* @__PURE__ */ jsxs(Fragment, { children: [
1040
- /* @__PURE__ */ jsx(
1041
- desktop_default,
1042
- {
1043
- className: cn(className, "hidden md:flex"),
1044
- links,
1045
- currentAs,
1046
- noAuth,
1047
- noCommerce: !!!commerce,
1048
- logoVariant,
1049
- children
1050
- }
1051
- ),
1052
- /* @__PURE__ */ jsx(
1053
- mobile_default,
1054
- {
1055
- className: cn(className, "md:hidden"),
1056
- links,
1057
- currentAs,
1058
- setChatbotOpen: setOpen,
1059
- noAuth,
1060
- noCommerce: !!!commerce
1061
- }
1062
- )
1063
- ] });
1064
- };
1065
- var header_default = Header;
1066
- var ORG = "lux";
1067
- var CALLBACK = "/auth/callback";
1068
- var configure = (app) => ({
1069
- serverUrl: BRAND_SERVER_URLS[ORG],
1070
- organization: ORG,
1071
- clientId: `${ORG}-${app}`,
1072
- /* Read per render rather than at module load: one bundle serves the real
1073
- host and any preview of it, and each must redeem its code back to itself. */
1074
- redirectUri: (typeof window === "undefined" ? "" : window.location.origin) + CALLBACK
1075
- });
1076
- var Auth = ({ app, children }) => /* @__PURE__ */ jsx(IamProvider, { config: configure(app), children });
1077
- var provider_default = Auth;
1078
- var CommerceDrawer = observer(({
1079
- children,
1080
- handleHandleClicked,
1081
- drawerClx = "",
1082
- ...rest
1083
- }) => {
1084
- const drawer = useCommerceDrawer();
1085
- return /* @__PURE__ */ jsx(
1086
- Drawer,
1087
- {
1088
- open: drawer.open,
1089
- onOpenChange: () => {
1090
- },
1091
- modal: drawer.modal,
1092
- snapPoints: drawer.points,
1093
- activeSnapPoint: drawer.activePoint,
1094
- setActiveSnapPoint: drawer.onActivePointChanged.bind(drawer),
1095
- fastDragSkipsToEnd: false,
1096
- dragHandleOnly: true,
1097
- handleHandleClicked,
1098
- extendHandleDragRegion: false,
1099
- ...rest,
1100
- children: /* @__PURE__ */ jsxs(
1101
- DrawerContent,
1102
- {
1103
- defaultHandle: false,
1104
- className: cn(
1105
- "border-0",
1106
- drawer.isMobile ? "pt-5" : "pt-6",
1107
- "w-full h-full"
1108
- ),
1109
- onOpenAutoFocus: (e) => {
1110
- e.preventDefault();
1111
- },
1112
- children: [
1113
- /* @__PURE__ */ jsx(
1114
- DrawerHandle,
1115
- {
1116
- className: cn(
1117
- "absolute top-0 left-0 right-0 mx-auto z-10",
1118
- "flex justify-center items-start",
1119
- "border-t rounded-t-lg border-muted-3",
1120
- drawer.isMobile ? "h-5 touch-pan-y" : "h-6"
1121
- ),
1122
- children: /* @__PURE__ */ jsx(Box, { className: cn(
1123
- // pseudo-handle
1124
- "rounded-[3px] bg-level-3",
1125
- drawer.isMobile ? "w-[155px] mt-[5px] h-1.5" : "w-[180px] mt-[3px] h-2.5 hover:bg-level-4",
1126
- !drawer.isMobile ? "cursor-grab active:cursor-grabbing" : ""
1127
- ) })
1128
- }
1129
- ),
1130
- children
1131
- ]
1132
- }
1133
- )
1134
- }
1135
- );
1136
- });
1137
- var shell_default = CommerceDrawer;
1138
- var IconAndQuantity = observer(({
1139
- animateOnQuantityChange = false,
1140
- showArrow = true,
1141
- showQuantity = true,
1142
- clx = "",
1143
- iconClx = "",
1144
- digitClx = ""
1145
- }) => {
1146
- const cmmc = useCommerce();
1147
- const wiggleRef = useRef(observable.box("none"));
1148
- useEffect(() => (
1149
- // return IReactionDisposer
1150
- animateOnQuantityChange ? reaction(
1151
- () => cmmc.cartQuantity,
1152
- (curr, prev) => {
1153
- if (curr > prev) {
1154
- runInAction(() => {
1155
- wiggleRef.current.set("more");
1156
- });
1157
- } else {
1158
- runInAction(() => {
1159
- wiggleRef.current.set("less");
1160
- });
1161
- }
1162
- setTimeout(() => {
1163
- runInAction(() => {
1164
- wiggleRef.current.set("none");
1165
- });
1166
- }, 800);
1167
- }
1168
- ) : void 0
1169
- ), []);
1170
- return /* @__PURE__ */ jsxs(Box, { className: cn("flex items-center justify-center", clx), children: [
1171
- showQuantity && /* @__PURE__ */ jsxs(Box, { className: cn(
1172
- "relative flex items-center justify-center mr-1",
1173
- wiggleRef.current.get() === "more" ? "item-added-to-cart-animation" : wiggleRef.current.get() === "less" ? "item-removed-from-cart-animation" : ""
1174
- ), children: [
1175
- cmmc.cartQuantity > 0 && /* @__PURE__ */ jsx(Box, { className: cn(
1176
- "z-above-content flex flex-col justify-center items-center",
1177
- "absolute left-0 right-0 top-0 bottom-0",
1178
- digitClx
1179
- ), children: /* @__PURE__ */ jsx("div", { style: {
1180
- /* color: 'white' tailwind bug? ,*/
1181
- fontSize: "11px",
1182
- position: "relative",
1183
- top: "1px"
1184
- }, children: cmmc.cartQuantity }) }),
1185
- /* @__PURE__ */ jsx(bag_icon_default, { width: "19", height: "24", className: cn("relative -top-[3px] opacity-70", iconClx), "aria-hidden": "true" })
1186
- ] }),
1187
- showArrow && /* @__PURE__ */ jsx("span", { style: { fontSize: "17px" }, children: "\u203A" })
1188
- ] });
1189
- });
1190
- var CheckoutButton = ({
1191
- handleCheckout,
1192
- variant = "primary",
1193
- rounded = "lg",
1194
- className,
1195
- showQuantity = true,
1196
- showArrow = true,
1197
- animateOnQuantityChange = true,
1198
- centerText = true,
1199
- children,
1200
- ...rest
1201
- }) => {
1202
- return /* @__PURE__ */ jsxs(
1203
- Button,
1204
- {
1205
- ...rest,
1206
- onClick: handleCheckout,
1207
- variant,
1208
- className: cn(`rounded-${rounded}`, cn(
1209
- "flex justify-between items-stretch group",
1210
- showQuantity ? centerText ? "px-1.5" : "pl-2.5 pr-1.5" : "",
1211
- className
1212
- )),
1213
- children: [
1214
- centerText && // must scale this one too, as it effects layout
1215
- /* @__PURE__ */ jsx(
1216
- IconAndQuantity,
1217
- {
1218
- showArrow,
1219
- showQuantity,
1220
- clx: "invisible group-hover:scale-105 transition-scale transition-duration-300"
1221
- }
1222
- ),
1223
- children ?? /* @__PURE__ */ jsx("div", { className: "flex justify-center items-center", children: "Checkout" }),
1224
- /* @__PURE__ */ jsx(
1225
- IconAndQuantity,
1226
- {
1227
- clx: "group-hover:scale-105 transition-scale transition-duration-300",
1228
- animateOnQuantityChange,
1229
- showArrow,
1230
- showQuantity,
1231
- iconClx: "fill-background",
1232
- digitClx: "text-foreground group-hover:opacity-80 leading-none font-bold font-sans"
1233
- }
1234
- )
1235
- ]
1236
- }
1237
- );
1238
- };
1239
- var checkout_button_default = CheckoutButton;
1240
- var CN = {
1241
- // h: mind padding!
1242
- mobile: { w: 36, h: 32 },
1243
- sm: { w: 60, h: 34 },
1244
- desktop: { w: 60, h: 32 }
1245
- };
1246
- var Info = ({
1247
- item,
1248
- clx = ""
1249
- }) => {
1250
- const cmmc = useCommerce();
1251
- const family = cmmc.getFamilyById(item.familyId);
1252
- let topLine = family.title;
1253
- if (item.sku.startsWith("LXM-AG") || item.sku.startsWith("LXM-AU")) {
1254
- topLine = family.parentTitle + ", " + family.title;
1255
- }
1256
- const optionLabel = item.optionLabelShort ?? item.optionLabel;
1257
- const priceStr = formatCurrencyValue(item.price);
1258
- return /* @__PURE__ */ jsxs(Fragment, { children: [
1259
- /* @__PURE__ */ jsxs(Box, { className: cn("sm:hidden flex flex-col !text-muted items-stretch whitespace-nowrap text-ellipsis ", clx), children: [
1260
- /* @__PURE__ */ jsx("p", { className: "text-left text-xs", children: topLine }),
1261
- /* @__PURE__ */ jsxs("div", { className: "flex justify-between text-xxs", children: [
1262
- /* @__PURE__ */ jsx("div", { children: optionLabel }),
1263
- /* @__PURE__ */ jsx("div", { className: "pl-2.5", children: priceStr })
1264
- ] })
1265
- ] }),
1266
- /* @__PURE__ */ jsxs(Box, { className: cn("hidden sm:flex !text-muted flex-col items-stretch whitespace-nowrap text-ellipsis text-xs", clx), children: [
1267
- /* @__PURE__ */ jsx("p", { className: "text-left", children: topLine }),
1268
- /* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
1269
- /* @__PURE__ */ jsx("div", { children: optionLabel }),
1270
- /* @__PURE__ */ jsx("div", { className: "pl-2.5", children: priceStr })
1271
- ] })
1272
- ] })
1273
- ] });
1274
- };
1275
- var PROMPT_COMMON_CLX = "block absolute top-0 left-0 bg-transparent duration-400 transition-opacity";
1276
- var Micro = observer(({
1277
- clx = "",
1278
- handleCheckout,
1279
- handleItemClicked
1280
- }) => {
1281
- const drawer = useCommerceDrawer();
1282
- const cmmc = useCommerce();
1283
- return /* @__PURE__ */ jsxs(Box, { className: cn(
1284
- drawer.showRecent ? "grid grid-cols-2" : "flex justify-center items-center ",
1285
- drawer.showRecent ? drawer.isMobile ? "-mt-3" : "-mt-3" : "",
1286
- "gap-2 md:gap-3 relative",
1287
- clx
1288
- ), children: [
1289
- drawer.showRecent && /* @__PURE__ */ jsxs(Box, { className: "flex flex-col items-stretch " + (drawer.isMobile ? "justify-start" : "group"), children: [
1290
- /* @__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: [
1291
- /* @__PURE__ */ jsx("span", { className: "invisible", children: "scrictly for layout" }),
1292
- drawer.isMobile ? /* @__PURE__ */ jsx(Box, { tag: "span", className: PROMPT_COMMON_CLX, children: "tap for options:" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1293
- /* @__PURE__ */ jsx(Box, { tag: "span", className: PROMPT_COMMON_CLX + " group-hover:opacity-0", children: "recent item:" }),
1294
- /* @__PURE__ */ jsx(Box, { tag: "span", className: PROMPT_COMMON_CLX + " opacity-0 group-hover:opacity-100", children: "view options:" })
1295
- ] })
1296
- ] }),
1297
- /* @__PURE__ */ jsxs(
1298
- Button,
1299
- {
1300
- variant: "ghost",
1301
- className: cn(`rounded-${drawer.isMobile ? "md" : "lg"}`, cn(
1302
- "box-content",
1303
- "flex flex-row justify-between items-center gap-1",
1304
- "-ml-1.5",
1305
- "overflow-hidden ",
1306
- "px-1 md:px-2 py-[2px]",
1307
- "border border-transparent group-hover:border-muted-3",
1308
- "group-hover:!bg-transparent",
1309
- "!min-w-0"
1310
- )),
1311
- size: drawer.isMobile ? "sm" : "default",
1312
- onClick: handleItemClicked,
1313
- children: [
1314
- cmmc.recentItem?.item.img && /* @__PURE__ */ jsxs(Fragment, { children: [
1315
- /* @__PURE__ */ jsx(MediaStack, { media: { img: cmmc.recentItem.item.img }, constrainTo: CN.mobile, className: "sm:hidden grow-0 shrink-0" }),
1316
- /* @__PURE__ */ jsx(MediaStack, { media: { img: cmmc.recentItem.item.img }, constrainTo: CN.sm, className: "hidden sm:block md:hidden grow-0 shrink-0" }),
1317
- /* @__PURE__ */ jsx(MediaStack, { media: { img: cmmc.recentItem.item.img }, constrainTo: CN.desktop, className: "hidden md:block grow-0 shrink-0" })
1318
- ] }),
1319
- cmmc.recentItem && /* @__PURE__ */ jsx("div", { className: "grow w-full", children: /* @__PURE__ */ jsx(Info, { item: cmmc.recentItem.item, clx: "w-full" }) })
1320
- ]
1321
- }
1322
- )
1323
- ] }),
1324
- drawer.showCheckout && /* @__PURE__ */ jsxs(Box, { className: cn(
1325
- "flex flex-col w-full",
1326
- drawer.showRecent ? "items-stretch" : "items-center",
1327
- drawer.isMobile ? "justify-start" : "justify-center"
1328
- ), children: [
1329
- drawer.showRecent && /* @__PURE__ */ jsx("p", { className: "invisible text-muted text-xxs md:text-xs leading-none pl-1 self-start", children: "for layout" }),
1330
- /* @__PURE__ */ jsx(
1331
- checkout_button_default,
1332
- {
1333
- handleCheckout,
1334
- variant: "primary",
1335
- size: drawer.isMobile ? "sm" : "lg",
1336
- className: cn(`rounded-${drawer.isMobile ? "md" : "lg"}`, cn(
1337
- drawer.isMobile ? drawer.showRecent ? "pl-3.5 pr-2.5" : "min-w-[320px]" : drawer.showRecent ? "" : "w-[320px]",
1338
- "text-sm font-semibold"
1339
- )),
1340
- centerText: drawer.isMobile ? !drawer.showRecent : true
1341
- }
1342
- )
1343
- ] })
1344
- ] });
1345
- });
1346
- var micro_default = Micro;
1347
- var CommerceUIComponent = observer(() => {
1348
- const buy = useSelectAndBuy();
1349
- const drawer = useCommerceDrawer();
1350
- const router = useRouter();
1351
- const handleCheckout = () => {
1352
- router.push("/checkout");
1353
- };
1354
- const handleHandleClicked = () => {
1355
- if (drawer.state === "full") {
1356
- buy.hideVariants();
1357
- } else if (drawer.state === "micro") {
1358
- buy.showRecentVariants();
1359
- }
1360
- };
1361
- const handleItemClicked = () => {
1362
- buy.showRecentVariants();
1363
- };
1364
- const handleCloseGesture = () => {
1365
- if (drawer.state === "full") {
1366
- buy.hideVariants();
1367
- return true;
1368
- }
1369
- return false;
1370
- };
1371
- return /* @__PURE__ */ jsxs(
1372
- shell_default,
1373
- {
1374
- handleHandleClicked,
1375
- handleCloseGesture,
1376
- drawerClx: "flex flex-col",
1377
- children: [
1378
- drawer.state === "full" && /* The actual drawer is larger than the visible area (due to awkward
1379
- vaul impl. So we have to ask the drawer for its currect snappoint
1380
- and constrain layout to that.
1381
- */
1382
- /* @__PURE__ */ jsx("div", { style: {
1383
- height: drawer.snapPointPx - 24
1384
- /* fudge factor for handle area */
1385
- }, children: /* @__PURE__ */ jsx(
1386
- CarouselBuyCard,
1387
- {
1388
- skuPath: buy.currentSkuPath,
1389
- checkoutButton: /* @__PURE__ */ jsx(
1390
- checkout_button_default,
1391
- {
1392
- handleCheckout,
1393
- className: "w-full min-w-[160px] sm:max-w-[320px]"
1394
- }
1395
- ),
1396
- clx: "justify-between h-full pb-3 gap-8",
1397
- addBtnClx: "w-full min-w-[160px] sm:max-w-[320px]",
1398
- buttonsAreaClx: "grow-0 shrink-0 mt-0",
1399
- selectorClx: "max-w-[475px] justify-between grow"
1400
- }
1401
- ) }),
1402
- drawer.state === "micro" && /* @__PURE__ */ jsx(
1403
- micro_default,
1404
- {
1405
- handleCheckout,
1406
- handleItemClicked,
1407
- clx: "w-full px-2 sm:w-[460px] sm:mx-auto md:w-[550px]"
1408
- }
1409
- )
1410
- ]
1411
- }
1412
- );
1413
- });
1414
- var drawer_default = CommerceUIComponent;
1415
- var Analytics = () => /* @__PURE__ */ jsxs(Fragment, { children: [
1416
- /* @__PURE__ */ jsx(FacebookPixel, {}),
1417
- /* @__PURE__ */ jsx(GoogleAnalytics, { gaId: process.env.NEXT_PUBLIC_GA_MEASUREMENT_ID ?? "" })
1418
- ] });
1419
14
  var viewport = {
1420
15
  themeColor: [
1421
16
  { media: "(prefers-color-scheme: light)", color: "white" },
@@ -1429,10 +24,10 @@ function RootLayout({
1429
24
  children
1430
25
  }) {
1431
26
  const Guts = () => /* @__PURE__ */ jsxs(Fragment, { children: [
1432
- showHeader && /* @__PURE__ */ jsx(header_default, { siteDef }),
27
+ showHeader && /* @__PURE__ */ jsx(Header, { siteDef }),
1433
28
  children,
1434
29
  chatbot && /* @__PURE__ */ jsx(
1435
- chat_widget_default,
30
+ ChatWidget,
1436
31
  {
1437
32
  title: "LUX",
1438
33
  subtitle: "AI",
@@ -1449,9 +44,9 @@ function RootLayout({
1449
44
  ] }),
1450
45
  /* @__PURE__ */ jsx("body", { suppressHydrationWarning: true, children: /* @__PURE__ */ jsxs(Hanzo, { theme: "dark", children: [
1451
46
  /* @__PURE__ */ jsx(Analytics, {}),
1452
- /* @__PURE__ */ jsx(provider_default, { app: siteDef.app, children: siteDef?.commerce ? /* @__PURE__ */ jsx(CommerceProvider, { config: siteDef.commerce, children: /* @__PURE__ */ jsxs(CommerceUIProvider, { children: [
47
+ /* @__PURE__ */ jsx(Auth, { app: siteDef.app, children: siteDef?.commerce ? /* @__PURE__ */ jsx(CommerceProvider, { config: siteDef.commerce, children: /* @__PURE__ */ jsxs(CommerceUIProvider, { children: [
1453
48
  /* @__PURE__ */ jsx(Guts, {}),
1454
- /* @__PURE__ */ jsx(drawer_default, {})
49
+ /* @__PURE__ */ jsx(CommerceDrawer, {})
1455
50
  ] }) }) : /* @__PURE__ */ jsx(Guts, {}) }),
1456
51
  /* @__PURE__ */ jsx(Toaster, { position: "top-center", duration: 3e3 })
1457
52
  ] }) })