@luxfi/core 5.2.12 → 5.2.13

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 (178) hide show
  1. package/commerce/ui/conf.ts +13 -13
  2. package/commerce/ui/context.tsx +126 -126
  3. package/commerce/ui/store.ts +304 -304
  4. package/components/access-code-input.tsx +71 -71
  5. package/components/auth/auth-listener.tsx +29 -29
  6. package/components/auth/auth-token/clear-auth-token.tsx +12 -12
  7. package/components/auth/auth-token/set-auth-token.tsx +16 -16
  8. package/components/auth/common-auth-domains.ts +16 -16
  9. package/components/auth/login-panel.tsx +107 -107
  10. package/components/back-button.tsx +42 -42
  11. package/components/chat-widget.tsx +85 -85
  12. package/components/commerce/add-widget.tsx +20 -20
  13. package/components/commerce/bag-button.tsx +98 -98
  14. package/components/commerce/buy-button.tsx +34 -34
  15. package/components/commerce/checkout-button.tsx +129 -129
  16. package/components/commerce/checkout-panel/dt-bag-carousel.tsx +36 -36
  17. package/components/commerce/checkout-panel/dt-checkout-panel.tsx +84 -84
  18. package/components/commerce/checkout-panel/index.tsx +129 -129
  19. package/components/commerce/checkout-panel/links-row.tsx +21 -21
  20. package/components/commerce/checkout-panel/mb-checkout-panel.tsx +54 -54
  21. package/components/commerce/checkout-panel/steps-indicator.tsx +39 -39
  22. package/components/commerce/checkout-panel/thank-you.tsx +18 -18
  23. package/components/commerce/checkout-widget/const.ts +13 -13
  24. package/components/commerce/checkout-widget/index.tsx +192 -192
  25. package/components/commerce/checkout-widget/obs-string-set.ts +48 -48
  26. package/components/commerce/checkout-widget/use-anim-clx-set.ts +58 -58
  27. package/components/commerce/desktop-bag-popup.tsx +78 -78
  28. package/components/commerce/desktop-nav-menu.tsx +130 -130
  29. package/components/commerce/drawer/index.tsx +99 -99
  30. package/components/commerce/drawer/micro.tsx +144 -144
  31. package/components/commerce/drawer/shell.tsx +85 -85
  32. package/components/commerce/mobile-bag-drawer.tsx +51 -51
  33. package/components/commerce/mobile-login-button.tsx +101 -101
  34. package/components/commerce/mobile-menu-toggle-button.tsx +35 -35
  35. package/components/commerce/mobile-nav-menu-ai.tsx +48 -48
  36. package/components/commerce/mobile-nav-menu-item.tsx +49 -49
  37. package/components/commerce/mobile-nav-menu.tsx +101 -101
  38. package/components/contact-dialog/contact-form.tsx +113 -113
  39. package/components/contact-dialog/disclaimer.tsx +13 -13
  40. package/components/contact-dialog/index.tsx +64 -64
  41. package/components/copyright.tsx +21 -21
  42. package/components/drawer-margin.tsx +25 -25
  43. package/components/footer.tsx +77 -77
  44. package/components/header/desktop.tsx +50 -50
  45. package/components/header/index.tsx +52 -52
  46. package/components/header/mobile.tsx +163 -163
  47. package/components/header/theme-toggle.tsx +26 -26
  48. package/components/icons/24k-gold-card.tsx +43 -43
  49. package/components/icons/ai-chat-act.tsx +47 -47
  50. package/components/icons/ai-chat.tsx +29 -29
  51. package/components/icons/anodized-titanium.tsx +45 -45
  52. package/components/icons/avatar.tsx +11 -11
  53. package/components/icons/bag-icon.tsx +10 -10
  54. package/components/icons/blog-act.tsx +14 -14
  55. package/components/icons/blog.tsx +20 -20
  56. package/components/icons/bridge-act.tsx +18 -18
  57. package/components/icons/bridge.tsx +68 -68
  58. package/components/icons/changelog-act.tsx +15 -15
  59. package/components/icons/changelog.tsx +21 -21
  60. package/components/icons/chrome.tsx +45 -45
  61. package/components/icons/coins-act.tsx +29 -29
  62. package/components/icons/coins.tsx +20 -20
  63. package/components/icons/compare-cards-act.tsx +30 -30
  64. package/components/icons/compare-cards.tsx +21 -21
  65. package/components/icons/credit-act.tsx +29 -29
  66. package/components/icons/credit.tsx +20 -20
  67. package/components/icons/customer-support-act.tsx +27 -27
  68. package/components/icons/customer-support.tsx +21 -21
  69. package/components/icons/customers-act.tsx +65 -65
  70. package/components/icons/customers.tsx +33 -33
  71. package/components/icons/developer-docs-act.tsx +26 -26
  72. package/components/icons/developer-docs.tsx +20 -20
  73. package/components/icons/exchange-act.tsx +27 -27
  74. package/components/icons/exchange.tsx +21 -21
  75. package/components/icons/explorer-act.tsx +27 -27
  76. package/components/icons/explorer.tsx +22 -22
  77. package/components/icons/faqs-act.tsx +27 -27
  78. package/components/icons/faqs.tsx +21 -21
  79. package/components/icons/github.tsx +14 -14
  80. package/components/icons/guides-act.tsx +26 -26
  81. package/components/icons/guides.tsx +21 -21
  82. package/components/icons/gun-metal.tsx +44 -44
  83. package/components/icons/index.tsx +43 -43
  84. package/components/icons/integrations-act.tsx +41 -41
  85. package/components/icons/integrations.tsx +25 -25
  86. package/components/icons/irradescent.tsx +41 -41
  87. package/components/icons/launch-subnet.tsx +21 -21
  88. package/components/icons/launchsubnet-act.tsx +29 -29
  89. package/components/icons/left-arrow.tsx +11 -11
  90. package/components/icons/lux-finance-act.tsx +34 -34
  91. package/components/icons/lux-finance.tsx +23 -23
  92. package/components/icons/lux-logo.tsx +10 -10
  93. package/components/icons/lux-pass-act.tsx +41 -41
  94. package/components/icons/lux-pass.tsx +25 -25
  95. package/components/icons/lux-quests-act.tsx +15 -15
  96. package/components/icons/lux-quests.tsx +21 -21
  97. package/components/icons/market-act.tsx +39 -39
  98. package/components/icons/market.tsx +24 -24
  99. package/components/icons/mirrored-titanium.tsx +46 -46
  100. package/components/icons/more-benefits-act.tsx +29 -29
  101. package/components/icons/more-benefits.tsx +21 -21
  102. package/components/icons/open-source-act.tsx +41 -41
  103. package/components/icons/open-source.tsx +26 -26
  104. package/components/icons/right-arrow.tsx +10 -10
  105. package/components/icons/safe-act.tsx +77 -77
  106. package/components/icons/safe.tsx +37 -37
  107. package/components/icons/search.tsx +12 -12
  108. package/components/icons/secure-delivery.tsx +13 -13
  109. package/components/icons/shop-act.tsx +29 -29
  110. package/components/icons/shop.tsx +20 -20
  111. package/components/icons/social-icon.tsx +35 -35
  112. package/components/icons/social-svg.css +3 -3
  113. package/components/icons/sterling-silver-card.tsx +44 -44
  114. package/components/icons/templates-act.tsx +29 -29
  115. package/components/icons/templates.tsx +21 -21
  116. package/components/icons/validators-act.tsx +42 -42
  117. package/components/icons/validators.tsx +41 -41
  118. package/components/icons/view-all-card-act.tsx +28 -28
  119. package/components/icons/view-all-card.tsx +20 -20
  120. package/components/icons/wallet-act.tsx +29 -29
  121. package/components/icons/wallet.tsx +20 -20
  122. package/components/icons/warpcast.tsx +58 -58
  123. package/components/icons/youtube-logo.tsx +59 -59
  124. package/components/index.ts +27 -27
  125. package/components/logo.tsx +89 -89
  126. package/components/main.tsx +27 -27
  127. package/components/mini-chart/index.tsx +7 -7
  128. package/components/mini-chart/mini-chart-props.ts +43 -43
  129. package/components/mini-chart/mini-chart.tsx +85 -85
  130. package/components/mini-chart/wrapper.tsx +23 -23
  131. package/components/not-found/index.tsx +28 -28
  132. package/components/not-found/not-found-content.mdx +5 -5
  133. package/components/scripts.tsx +24 -24
  134. package/components/tooltip.tsx +31 -31
  135. package/environment.d.ts +5 -5
  136. package/next/analytics/fpixel.ts +15 -15
  137. package/next/analytics/google-analytics.ts +13 -13
  138. package/next/analytics/index.ts +3 -3
  139. package/next/analytics/pixel-analytics.tsx +54 -54
  140. package/next/font/get-app-router-font-classes.ts +12 -12
  141. package/next/font/load-and-return-lux-next-fonts-on-import.ts +68 -68
  142. package/next/font/next-font-desc.ts +27 -27
  143. package/next/font/pages-router-font-vars.tsx +18 -18
  144. package/next/head-metadata/from-next/metadata-types.ts +158 -158
  145. package/next/head-metadata/from-next/opengraph-types.ts +267 -267
  146. package/next/head-metadata/from-next/twitter-types.ts +92 -92
  147. package/next/head-metadata/index.tsx +208 -208
  148. package/next/middleware/determine-device-mw.ts +16 -16
  149. package/package.json +79 -79
  150. package/root-layout/WHY_THIS_IS_SEPARATE.txt +1 -1
  151. package/root-layout/index.tsx +112 -112
  152. package/server-actions/firebase-app.ts +14 -14
  153. package/server-actions/index.ts +5 -5
  154. package/server-actions/store-contact.ts +51 -51
  155. package/site-def/footer/community.tsx +67 -67
  156. package/site-def/footer/company.ts +37 -37
  157. package/site-def/footer/ecosystem.ts +37 -37
  158. package/site-def/footer/index.tsx +26 -26
  159. package/site-def/footer/legal.ts +28 -28
  160. package/site-def/footer/network.ts +45 -45
  161. package/site-def/footer/svg/warpcast-logo.svg +11 -11
  162. package/site-def/index.ts +2 -2
  163. package/site-def/main-nav.tsx +458 -458
  164. package/style/cart-animation.css +29 -29
  165. package/style/checkout-animation.css +23 -23
  166. package/style/drawer-handle-overrides.css +160 -160
  167. package/style/lux-colors.css +85 -85
  168. package/style/lux-global.css +47 -47
  169. package/tailwind/fontFamily.tailwind.lux.ts +18 -18
  170. package/tailwind/index.ts +2 -2
  171. package/tailwind/lux-tw-fonts.ts +39 -39
  172. package/tailwind/tailwind.config.lux-preset.ts +10 -10
  173. package/tsconfig.json +15 -15
  174. package/types/chatbot-config.ts +6 -6
  175. package/types/chatbot-suggested-question.ts +7 -7
  176. package/types/contact-info.ts +10 -10
  177. package/types/index.ts +4 -4
  178. package/types/site-def.ts +43 -43
@@ -1,129 +1,129 @@
1
- 'use client'
2
- import React, { useEffect, useRef } from 'react'
3
- import { observable, type IObservableValue, reaction, runInAction } from 'mobx'
4
- import { observer } from 'mobx-react-lite'
5
-
6
- import { Button, type ButtonProps } from '@hanzo/ui/primitives'
7
- import { cn } from '@hanzo/ui/util'
8
- import { useCommerce } from '@hanzo/commerce'
9
-
10
- import * as Icons from '../icons'
11
-
12
- const IconAndQuantity: React.FC<{
13
- animateOnQuantityChange?: boolean
14
- showArrow?: boolean
15
- showQuantity?: boolean
16
- clx?: string
17
- iconClx?: string
18
- digitClx?: string
19
- }> = observer(({
20
- animateOnQuantityChange=false,
21
- showArrow=true,
22
- showQuantity=true,
23
- clx='',
24
- iconClx='',
25
- digitClx=''
26
- }) => {
27
-
28
- const cmmc = useCommerce()
29
- const wiggleRef = useRef<IObservableValue<'more' | 'less' | 'none'>>(observable.box('none'))
30
-
31
- useEffect(() => (
32
- // return IReactionDisposer
33
- animateOnQuantityChange ? reaction(
34
- () => (cmmc.cartQuantity),
35
- (curr, prev) => {
36
- if (curr > prev) {
37
- runInAction(() => {wiggleRef.current.set('more') })
38
- }
39
- else {
40
- runInAction(() => {wiggleRef.current.set('less') })
41
- }
42
- setTimeout(() => {
43
- // Note that this doesn't actually stop the animation
44
- // just resets the styles
45
- runInAction(() => {wiggleRef.current.set('none') })
46
- }, 800)
47
- }
48
- ) : undefined
49
- ), [])
50
-
51
- return (
52
- <div className={cn('flex items-center justify-center', clx)}>
53
- {showQuantity && (
54
- <div className={cn(
55
- 'relative flex items-center justify-center mr-1',
56
- ((wiggleRef.current.get() === 'more') ?
57
- 'item-added-to-cart-animation'
58
- :
59
- (wiggleRef.current.get() === 'less') ? 'item-removed-from-cart-animation' : ''),
60
- )} >
61
- {cmmc.cartQuantity > 0 && (
62
- <div className={cn(
63
- 'z-above-content flex flex-col justify-center items-center',
64
- 'absolute left-0 right-0 top-0 bottom-0',
65
- digitClx
66
- )}>
67
- <div style={{/* color: 'white' tailwind bug? ,*/ fontSize: '11px', position: 'relative', top: '1px' }}>{cmmc.cartQuantity}</div>
68
- </div>
69
- )}
70
- <Icons.bag width='19' height='24' className={cn('relative -top-[3px] opacity-70' , iconClx)} aria-hidden="true" />
71
- </div>
72
- )}
73
- {showArrow && (<span style={{fontSize: '17px',}}>&rsaquo;</span>)}
74
- </div>
75
- )
76
- })
77
-
78
- const CheckoutButton: React.FC<ButtonProps & {
79
- handleCheckout: () => void
80
- showQuantity?: boolean
81
- showArrow?: boolean
82
- animateOnQuantityChange?: boolean
83
- centerText?: boolean
84
- }> = ({
85
- handleCheckout,
86
- variant='primary',
87
- rounded='lg',
88
- className,
89
- showQuantity=true,
90
- showArrow=true,
91
- animateOnQuantityChange=true,
92
- centerText=true,
93
- children,
94
- ...rest
95
- }) => {
96
-
97
- return (
98
- <Button
99
- {...rest}
100
- onClick={handleCheckout}
101
- variant={variant}
102
- rounded={rounded}
103
- className={cn(
104
- 'flex justify-between items-stretch group',
105
- showQuantity ? (centerText ? 'px-1.5' : 'pl-2.5 pr-1.5') : '',
106
- className,
107
- )}
108
- >
109
- {centerText && ( // must scale this one too, as it effects layout
110
- <IconAndQuantity
111
- showArrow={showArrow}
112
- showQuantity={showQuantity}
113
- clx='invisible group-hover:scale-105 transition-scale transition-duration-300'
114
- />
115
- )}
116
- {children ?? (<div className='flex justify-center items-center'>Checkout</div>)}
117
- <IconAndQuantity
118
- clx='group-hover:scale-105 transition-scale transition-duration-300'
119
- animateOnQuantityChange={animateOnQuantityChange}
120
- showArrow={showArrow}
121
- showQuantity={showQuantity}
122
- iconClx='fill-background'
123
- digitClx='text-foreground group-hover:opacity-80 leading-none font-bold font-sans'
124
- />
125
- </Button>
126
- )
127
- }
128
-
129
- export default CheckoutButton
1
+ 'use client'
2
+ import React, { useEffect, useRef } from 'react'
3
+ import { observable, type IObservableValue, reaction, runInAction } from 'mobx'
4
+ import { observer } from 'mobx-react-lite'
5
+
6
+ import { Button, type ButtonProps } from '@hanzo/ui/primitives'
7
+ import { cn } from '@hanzo/ui/util'
8
+ import { useCommerce } from '@hanzo/commerce'
9
+
10
+ import * as Icons from '../icons'
11
+
12
+ const IconAndQuantity: React.FC<{
13
+ animateOnQuantityChange?: boolean
14
+ showArrow?: boolean
15
+ showQuantity?: boolean
16
+ clx?: string
17
+ iconClx?: string
18
+ digitClx?: string
19
+ }> = observer(({
20
+ animateOnQuantityChange=false,
21
+ showArrow=true,
22
+ showQuantity=true,
23
+ clx='',
24
+ iconClx='',
25
+ digitClx=''
26
+ }) => {
27
+
28
+ const cmmc = useCommerce()
29
+ const wiggleRef = useRef<IObservableValue<'more' | 'less' | 'none'>>(observable.box('none'))
30
+
31
+ useEffect(() => (
32
+ // return IReactionDisposer
33
+ animateOnQuantityChange ? reaction(
34
+ () => (cmmc.cartQuantity),
35
+ (curr, prev) => {
36
+ if (curr > prev) {
37
+ runInAction(() => {wiggleRef.current.set('more') })
38
+ }
39
+ else {
40
+ runInAction(() => {wiggleRef.current.set('less') })
41
+ }
42
+ setTimeout(() => {
43
+ // Note that this doesn't actually stop the animation
44
+ // just resets the styles
45
+ runInAction(() => {wiggleRef.current.set('none') })
46
+ }, 800)
47
+ }
48
+ ) : undefined
49
+ ), [])
50
+
51
+ return (
52
+ <div className={cn('flex items-center justify-center', clx)}>
53
+ {showQuantity && (
54
+ <div className={cn(
55
+ 'relative flex items-center justify-center mr-1',
56
+ ((wiggleRef.current.get() === 'more') ?
57
+ 'item-added-to-cart-animation'
58
+ :
59
+ (wiggleRef.current.get() === 'less') ? 'item-removed-from-cart-animation' : ''),
60
+ )} >
61
+ {cmmc.cartQuantity > 0 && (
62
+ <div className={cn(
63
+ 'z-above-content flex flex-col justify-center items-center',
64
+ 'absolute left-0 right-0 top-0 bottom-0',
65
+ digitClx
66
+ )}>
67
+ <div style={{/* color: 'white' tailwind bug? ,*/ fontSize: '11px', position: 'relative', top: '1px' }}>{cmmc.cartQuantity}</div>
68
+ </div>
69
+ )}
70
+ <Icons.bag width='19' height='24' className={cn('relative -top-[3px] opacity-70' , iconClx)} aria-hidden="true" />
71
+ </div>
72
+ )}
73
+ {showArrow && (<span style={{fontSize: '17px',}}>&rsaquo;</span>)}
74
+ </div>
75
+ )
76
+ })
77
+
78
+ const CheckoutButton: React.FC<ButtonProps & {
79
+ handleCheckout: () => void
80
+ showQuantity?: boolean
81
+ showArrow?: boolean
82
+ animateOnQuantityChange?: boolean
83
+ centerText?: boolean
84
+ }> = ({
85
+ handleCheckout,
86
+ variant='primary',
87
+ rounded='lg',
88
+ className,
89
+ showQuantity=true,
90
+ showArrow=true,
91
+ animateOnQuantityChange=true,
92
+ centerText=true,
93
+ children,
94
+ ...rest
95
+ }) => {
96
+
97
+ return (
98
+ <Button
99
+ {...rest}
100
+ onClick={handleCheckout}
101
+ variant={variant}
102
+ rounded={rounded}
103
+ className={cn(
104
+ 'flex justify-between items-stretch group',
105
+ showQuantity ? (centerText ? 'px-1.5' : 'pl-2.5 pr-1.5') : '',
106
+ className,
107
+ )}
108
+ >
109
+ {centerText && ( // must scale this one too, as it effects layout
110
+ <IconAndQuantity
111
+ showArrow={showArrow}
112
+ showQuantity={showQuantity}
113
+ clx='invisible group-hover:scale-105 transition-scale transition-duration-300'
114
+ />
115
+ )}
116
+ {children ?? (<div className='flex justify-center items-center'>Checkout</div>)}
117
+ <IconAndQuantity
118
+ clx='group-hover:scale-105 transition-scale transition-duration-300'
119
+ animateOnQuantityChange={animateOnQuantityChange}
120
+ showArrow={showArrow}
121
+ showQuantity={showQuantity}
122
+ iconClx='fill-background'
123
+ digitClx='text-foreground group-hover:opacity-80 leading-none font-bold font-sans'
124
+ />
125
+ </Button>
126
+ )
127
+ }
128
+
129
+ export default CheckoutButton
@@ -1,36 +1,36 @@
1
- 'use client'
2
- import React from 'react'
3
- import { observer } from 'mobx-react-lite'
4
-
5
- import {
6
- useCommerce,
7
- CarouselItemSelector,
8
- type CarouselItemSelectorPropsExt
9
- } from '@hanzo/commerce'
10
-
11
- const DesktopBagCarousel: React.FC<{
12
- constrainTo: {w: number, h: number}
13
- className?: string
14
- }> = observer(({
15
- constrainTo,
16
- className=''
17
-
18
- }) => {
19
- const cmmc = useCommerce()
20
- return (
21
- <CarouselItemSelector
22
- items={cmmc.cartItems}
23
- selectedItemRef={cmmc}
24
- scrollable={false} // ignored
25
- selectSku={cmmc.setCurrentItem.bind(cmmc)}
26
- clx={className}
27
- ext={{
28
- options: {loop: true},
29
- constrainTo,
30
- imageOnly: true
31
- } satisfies CarouselItemSelectorPropsExt}
32
- />
33
- )
34
- })
35
-
36
- export default DesktopBagCarousel
1
+ 'use client'
2
+ import React from 'react'
3
+ import { observer } from 'mobx-react-lite'
4
+
5
+ import {
6
+ useCommerce,
7
+ CarouselItemSelector,
8
+ type CarouselItemSelectorPropsExt
9
+ } from '@hanzo/commerce'
10
+
11
+ const DesktopBagCarousel: React.FC<{
12
+ constrainTo: {w: number, h: number}
13
+ className?: string
14
+ }> = observer(({
15
+ constrainTo,
16
+ className=''
17
+
18
+ }) => {
19
+ const cmmc = useCommerce()
20
+ return (
21
+ <CarouselItemSelector
22
+ items={cmmc.cartItems}
23
+ selectedItemRef={cmmc}
24
+ scrollable={false} // ignored
25
+ selectSku={cmmc.setCurrentItem.bind(cmmc)}
26
+ clx={className}
27
+ ext={{
28
+ options: {loop: true},
29
+ constrainTo,
30
+ imageOnly: true
31
+ } satisfies CarouselItemSelectorPropsExt}
32
+ />
33
+ )
34
+ })
35
+
36
+ export default DesktopBagCarousel
@@ -1,85 +1,85 @@
1
- 'use client'
2
- import React, { type PropsWithChildren } from 'react'
3
- import { observer } from 'mobx-react-lite'
4
-
5
- import { ScrollArea, StepIndicator } from '@hanzo/ui/primitives'
6
- import { AuthWidget } from '@hanzo/auth/components'
7
- import { CartPanel, useCommerce } from '@hanzo/commerce'
8
- import { cn } from '@hanzo/ui/util'
9
-
10
- import { BackButton, Logo, Tooltip } from '../..'
11
- import DesktopBagCarousel from './dt-bag-carousel'
12
- import LinksRow from './links-row'
13
-
14
- const DesktopCheckoutPanel: React.FC<PropsWithChildren & {
15
- index: number
16
- stepNames: string[]
17
- close: () => void
18
- className?: string
19
- }> = observer(({
20
- index,
21
- stepNames,
22
- close,
23
- className='',
24
- children
25
- }) => {
26
-
27
- const cmmc = useCommerce()
28
-
29
- return (
30
- <div /* id='CHECKOUT_PANEL' */ className={cn('grid grid-cols-2', className)}>
31
- <div key={1} className='w-full h-full bg-background flex flex-row items-start justify-end'>
32
- <div className='w-full h-full max-w-[750px] relative flex flex-col items-stretch justify-start px-8 pb-8'>
33
- <div key={1} className='h-[80px] grow-0 flex flex-row items-center z-10' >
34
- <Logo onClick={close} size='md' href='/' variant='text-only' outerClx='logo-outer-tooltip-class' />
35
- <Tooltip select='.logo-outer-tooltip-class' text='home' position='right' offset={6}/>
36
- </div>
37
- <BackButton size='sm' clx={
38
- 'z-10 absolute top-14 left-6 !px-0 aspect-square ' +
39
- 'rounded-full hover:!bg-level-3 ' +
40
- //'border border-transparent hover:border-muted-2 ' +
41
- 'back-button-tooltip-class '
42
- }/>
43
- <Tooltip select='.back-button-tooltip-class' text='back' position='right' offset={5}/>
44
- <div key={2} className={cn(
45
- 'w-full grow min-h-0 max-w-[550px] mx-auto flex flex-col gap-3',
46
- (cmmc.cartItems.length > 4 ? 'justify-between' : 'justify-start gap-10 pt-10')
47
- )}>
48
- <DesktopBagCarousel className='grow-0 h-[260px] w-[360px] lg:w-[420px] mx-auto -mt-8' constrainTo={{w: 250, h: 250}}/>
49
- <CartPanel
50
- className='w-full border-none p-0'
51
- itemClx='mb-2'
52
- totalClx='sticky bottom-0 bg-background'
53
- listClx='pr-3'
54
- scrollAfter={5}
55
- scrollHeightClx='min-h-[50vh] grow'
56
- showPromoCode
57
- showShipping
58
- selectItems
59
- />
60
- </div>
61
- </div>
62
- </div>
63
- <div key={2} className='w-full h-full flex flex-col bg-level-1 min-h-screen justify-between'>
64
- <ScrollArea className='w-full flex flex-row items-start justify-start overflow-y-auto'>
65
- <div className='h-full w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0'>
66
- <div key={1} className='bg-level-1 sticky h-30 pb-8 w-full top-0 flex justify-center items-end'>
67
- <AuthWidget noLogin className='hidden md:flex absolute top-4 right-4 '/>
68
- <StepIndicator dotSizeRem={1.5} steps={stepNames} currentStep={index} className='gap-2 text-base w-pr-70' />
69
- </div>
70
- <div key={2} className='w-full max-w-[550px] mx-auto pb-10'>
71
- {children}
72
- </div>
73
- </div>
74
- </ScrollArea>
75
- <div className='w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0'>
76
- <div className='w-full max-w-[550px] mx-auto flex flex-col items-center'>
77
- <LinksRow className='w-full' />
78
- </div>
79
- </div>
80
- </div>
81
- </div>
82
- )
83
- })
84
-
1
+ 'use client'
2
+ import React, { type PropsWithChildren } from 'react'
3
+ import { observer } from 'mobx-react-lite'
4
+
5
+ import { ScrollArea, StepIndicator } from '@hanzo/ui/primitives'
6
+ import { AuthWidget } from '@hanzo/auth/components'
7
+ import { CartPanel, useCommerce } from '@hanzo/commerce'
8
+ import { cn } from '@hanzo/ui/util'
9
+
10
+ import { BackButton, Logo, Tooltip } from '../..'
11
+ import DesktopBagCarousel from './dt-bag-carousel'
12
+ import LinksRow from './links-row'
13
+
14
+ const DesktopCheckoutPanel: React.FC<PropsWithChildren & {
15
+ index: number
16
+ stepNames: string[]
17
+ close: () => void
18
+ className?: string
19
+ }> = observer(({
20
+ index,
21
+ stepNames,
22
+ close,
23
+ className='',
24
+ children
25
+ }) => {
26
+
27
+ const cmmc = useCommerce()
28
+
29
+ return (
30
+ <div /* id='CHECKOUT_PANEL' */ className={cn('grid grid-cols-2', className)}>
31
+ <div key={1} className='w-full h-full bg-background flex flex-row items-start justify-end'>
32
+ <div className='w-full h-full max-w-[750px] relative flex flex-col items-stretch justify-start px-8 pb-8'>
33
+ <div key={1} className='h-[80px] grow-0 flex flex-row items-center z-10' >
34
+ <Logo onClick={close} size='md' href='/' variant='text-only' outerClx='logo-outer-tooltip-class' />
35
+ <Tooltip select='.logo-outer-tooltip-class' text='home' position='right' offset={6}/>
36
+ </div>
37
+ <BackButton size='sm' clx={
38
+ 'z-10 absolute top-14 left-6 !px-0 aspect-square ' +
39
+ 'rounded-full hover:!bg-level-3 ' +
40
+ //'border border-transparent hover:border-muted-2 ' +
41
+ 'back-button-tooltip-class '
42
+ }/>
43
+ <Tooltip select='.back-button-tooltip-class' text='back' position='right' offset={5}/>
44
+ <div key={2} className={cn(
45
+ 'w-full grow min-h-0 max-w-[550px] mx-auto flex flex-col gap-3',
46
+ (cmmc.cartItems.length > 4 ? 'justify-between' : 'justify-start gap-10 pt-10')
47
+ )}>
48
+ <DesktopBagCarousel className='grow-0 h-[260px] w-[360px] lg:w-[420px] mx-auto -mt-8' constrainTo={{w: 250, h: 250}}/>
49
+ <CartPanel
50
+ className='w-full border-none p-0'
51
+ itemClx='mb-2'
52
+ totalClx='sticky bottom-0 bg-background'
53
+ listClx='pr-3'
54
+ scrollAfter={5}
55
+ scrollHeightClx='min-h-[50vh] grow'
56
+ showPromoCode
57
+ showShipping
58
+ selectItems
59
+ />
60
+ </div>
61
+ </div>
62
+ </div>
63
+ <div key={2} className='w-full h-full flex flex-col bg-level-1 min-h-screen justify-between'>
64
+ <ScrollArea className='w-full flex flex-row items-start justify-start overflow-y-auto'>
65
+ <div className='h-full w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0'>
66
+ <div key={1} className='bg-level-1 sticky h-30 pb-8 w-full top-0 flex justify-center items-end'>
67
+ <AuthWidget noLogin className='hidden md:flex absolute top-4 right-4 '/>
68
+ <StepIndicator dotSizeRem={1.5} steps={stepNames} currentStep={index} className='gap-2 text-base w-pr-70' />
69
+ </div>
70
+ <div key={2} className='w-full max-w-[550px] mx-auto pb-10'>
71
+ {children}
72
+ </div>
73
+ </div>
74
+ </ScrollArea>
75
+ <div className='w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0'>
76
+ <div className='w-full max-w-[550px] mx-auto flex flex-col items-center'>
77
+ <LinksRow className='w-full' />
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ )
83
+ })
84
+
85
85
  export default DesktopCheckoutPanel