@luxfi/core 5.3.0 → 5.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commerce/ui/conf.ts +13 -13
- package/commerce/ui/context.tsx +123 -123
- package/commerce/ui/store.ts +289 -289
- package/components/access-code-input.tsx +71 -71
- package/components/auth/auth-listener.tsx +29 -29
- package/components/auth/auth-token/clear-auth-token.tsx +12 -12
- package/components/auth/auth-token/set-auth-token.tsx +16 -16
- package/components/auth/common-auth-domains.ts +16 -16
- package/components/auth/login-panel.tsx +107 -107
- package/components/back-button.tsx +49 -49
- package/components/chat-widget.tsx +85 -85
- package/components/commerce/_to_deprecate_checkout-widget/const.ts +13 -13
- package/components/commerce/_to_deprecate_checkout-widget/index.tsx_ +188 -188
- package/components/commerce/_to_deprecate_checkout-widget/obs-string-set.ts +48 -48
- package/components/commerce/_to_deprecate_checkout-widget/use-anim-clx-set.ts +58 -58
- package/components/commerce/bag-button.tsx +98 -98
- package/components/commerce/buy-button.tsx +34 -34
- package/components/commerce/checkout-button.tsx +129 -129
- package/components/commerce/checkout-panel/cart-accordian.tsx +66 -66
- package/components/commerce/checkout-panel/checkout-panel-props.ts +9 -9
- package/components/commerce/checkout-panel/desktop-bag-carousel.tsx +36 -36
- package/components/commerce/checkout-panel/desktop-cp.tsx +82 -82
- package/components/commerce/checkout-panel/index.tsx +126 -126
- package/components/commerce/checkout-panel/mobile-cp.tsx +66 -66
- package/components/commerce/checkout-panel/policy-links.tsx +29 -29
- package/components/commerce/checkout-panel/steps-indicator.tsx +39 -39
- package/components/commerce/checkout-panel/thank-you.tsx +18 -18
- package/components/commerce/desktop-bag-popup.tsx +78 -78
- package/components/commerce/desktop-nav-menu.tsx +130 -130
- package/components/commerce/drawer/index.tsx +88 -88
- package/components/commerce/drawer/micro.tsx +144 -144
- package/components/commerce/drawer/shell.tsx +85 -85
- package/components/commerce/mobile-bag-drawer.tsx +51 -51
- package/components/commerce/mobile-login-button.tsx +107 -101
- package/components/commerce/mobile-menu-toggle-button.tsx +35 -35
- package/components/commerce/mobile-nav-menu-ai.tsx +50 -47
- package/components/commerce/mobile-nav-menu-item.tsx +49 -49
- package/components/commerce/mobile-nav-menu.tsx +101 -101
- package/components/contact-dialog/contact-form.tsx +113 -113
- package/components/contact-dialog/disclaimer.tsx +13 -13
- package/components/contact-dialog/index.tsx +64 -64
- package/components/copyright.tsx +21 -21
- package/components/drawer-margin.tsx +25 -25
- package/components/footer.tsx +77 -77
- package/components/header/desktop.tsx +51 -50
- package/components/header/index.tsx +50 -52
- package/components/header/mobile.tsx +163 -163
- package/components/header/theme-toggle.tsx +26 -26
- package/components/icons/24k-gold-card.tsx +43 -43
- package/components/icons/ai-chat-act.tsx +47 -47
- package/components/icons/ai-chat.tsx +29 -29
- package/components/icons/anodized-titanium.tsx +45 -45
- package/components/icons/avatar.tsx +11 -11
- package/components/icons/bag-icon.tsx +10 -10
- package/components/icons/blog-act.tsx +14 -14
- package/components/icons/blog.tsx +20 -20
- package/components/icons/bridge-act.tsx +18 -18
- package/components/icons/bridge.tsx +68 -68
- package/components/icons/changelog-act.tsx +15 -15
- package/components/icons/changelog.tsx +21 -21
- package/components/icons/chrome.tsx +45 -45
- package/components/icons/coins-act.tsx +29 -29
- package/components/icons/coins.tsx +20 -20
- package/components/icons/compare-cards-act.tsx +30 -30
- package/components/icons/compare-cards.tsx +21 -21
- package/components/icons/credit-act.tsx +29 -29
- package/components/icons/credit.tsx +20 -20
- package/components/icons/customer-support-act.tsx +27 -27
- package/components/icons/customer-support.tsx +21 -21
- package/components/icons/customers-act.tsx +65 -65
- package/components/icons/customers.tsx +33 -33
- package/components/icons/developer-docs-act.tsx +26 -26
- package/components/icons/developer-docs.tsx +20 -20
- package/components/icons/exchange-act.tsx +27 -27
- package/components/icons/exchange.tsx +21 -21
- package/components/icons/explorer-act.tsx +27 -27
- package/components/icons/explorer.tsx +22 -22
- package/components/icons/faqs-act.tsx +27 -27
- package/components/icons/faqs.tsx +21 -21
- package/components/icons/github.tsx +14 -14
- package/components/icons/guides-act.tsx +26 -26
- package/components/icons/guides.tsx +21 -21
- package/components/icons/gun-metal.tsx +44 -44
- package/components/icons/index.tsx +43 -43
- package/components/icons/integrations-act.tsx +41 -41
- package/components/icons/integrations.tsx +25 -25
- package/components/icons/irradescent.tsx +41 -41
- package/components/icons/launch-subnet.tsx +21 -21
- package/components/icons/launchsubnet-act.tsx +29 -29
- package/components/icons/left-arrow.tsx +11 -11
- package/components/icons/lux-finance-act.tsx +34 -34
- package/components/icons/lux-finance.tsx +23 -23
- package/components/icons/lux-logo.tsx +10 -10
- package/components/icons/lux-pass-act.tsx +41 -41
- package/components/icons/lux-pass.tsx +25 -25
- package/components/icons/lux-quests-act.tsx +15 -15
- package/components/icons/lux-quests.tsx +21 -21
- package/components/icons/market-act.tsx +39 -39
- package/components/icons/market.tsx +24 -24
- package/components/icons/mirrored-titanium.tsx +46 -46
- package/components/icons/more-benefits-act.tsx +29 -29
- package/components/icons/more-benefits.tsx +21 -21
- package/components/icons/open-source-act.tsx +41 -41
- package/components/icons/open-source.tsx +26 -26
- package/components/icons/right-arrow.tsx +10 -10
- package/components/icons/safe-act.tsx +77 -77
- package/components/icons/safe.tsx +37 -37
- package/components/icons/search.tsx +12 -12
- package/components/icons/secure-delivery.tsx +13 -13
- package/components/icons/shop-act.tsx +29 -29
- package/components/icons/shop.tsx +20 -20
- package/components/icons/social-icon.tsx +35 -35
- package/components/icons/social-svg.css +3 -3
- package/components/icons/sterling-silver-card.tsx +44 -44
- package/components/icons/templates-act.tsx +29 -29
- package/components/icons/templates.tsx +21 -21
- package/components/icons/validators-act.tsx +42 -42
- package/components/icons/validators.tsx +41 -41
- package/components/icons/view-all-card-act.tsx +28 -28
- package/components/icons/view-all-card.tsx +20 -20
- package/components/icons/wallet-act.tsx +29 -29
- package/components/icons/wallet.tsx +20 -20
- package/components/icons/warpcast.tsx +58 -58
- package/components/icons/youtube-logo.tsx +59 -59
- package/components/index.ts +25 -25
- package/components/logo.tsx +89 -89
- package/components/main.tsx +27 -27
- package/components/mini-chart/index.tsx +7 -7
- package/components/mini-chart/mini-chart-props.ts +43 -43
- package/components/mini-chart/mini-chart.tsx +85 -85
- package/components/mini-chart/wrapper.tsx +23 -23
- package/components/not-found/index.tsx +28 -28
- package/components/not-found/not-found-content.mdx +5 -5
- package/components/scripts.tsx +24 -24
- package/components/tooltip.tsx +31 -31
- package/environment.d.ts +5 -5
- package/next/analytics/fpixel.ts +15 -15
- package/next/analytics/google-analytics.ts +13 -13
- package/next/analytics/index.ts +3 -3
- package/next/analytics/pixel-analytics.tsx +54 -54
- package/next/font/get-app-router-font-classes.ts +12 -12
- package/next/font/load-and-return-lux-next-fonts-on-import.ts +68 -68
- package/next/font/next-font-desc.ts +27 -27
- package/next/font/pages-router-font-vars.tsx +18 -18
- package/next/head-metadata/from-next/metadata-types.ts +158 -158
- package/next/head-metadata/from-next/opengraph-types.ts +267 -267
- package/next/head-metadata/from-next/twitter-types.ts +92 -92
- package/next/head-metadata/index.tsx +208 -208
- package/next/middleware/determine-device-mw.ts +16 -16
- package/package.json +79 -79
- package/root-layout/WHY_THIS_IS_SEPARATE.txt +1 -1
- package/root-layout/index.tsx +112 -112
- package/server-actions/firebase-app.ts +14 -14
- package/server-actions/index.ts +5 -5
- package/server-actions/store-contact.ts +51 -51
- package/site-def/footer/community.tsx +67 -67
- package/site-def/footer/company.ts +37 -37
- package/site-def/footer/ecosystem.ts +37 -37
- package/site-def/footer/index.tsx +26 -26
- package/site-def/footer/legal.ts +28 -28
- package/site-def/footer/network.ts +45 -45
- package/site-def/footer/svg/warpcast-logo.svg +11 -11
- package/site-def/index.ts +2 -2
- package/site-def/main-nav.tsx +458 -458
- package/style/cart-animation.css +29 -29
- package/style/checkout-animation.css +23 -23
- package/style/drawer-handle-overrides.css +160 -160
- package/style/lux-colors.css +85 -85
- package/style/lux-global.css +50 -47
- package/tailwind/fontFamily.tailwind.lux.ts +18 -18
- package/tailwind/index.ts +2 -2
- package/tailwind/lux-tw-fonts.ts +39 -39
- package/tailwind/tailwind.config.lux-preset.ts +10 -10
- package/tsconfig.json +15 -15
- package/types/chatbot-config.ts +6 -6
- package/types/chatbot-suggested-question.ts +7 -7
- package/types/contact-info.ts +10 -10
- package/types/index.ts +4 -4
- package/types/site-def.ts +43 -43
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import React, { type PropsWithChildren } from 'react'
|
|
3
|
-
|
|
4
|
-
import { StepIndicator } from '@hanzo/ui/primitives'
|
|
5
|
-
import { cn } from '@hanzo/ui/util'
|
|
6
|
-
import { AuthWidget } from '@hanzo/auth/components'
|
|
7
|
-
|
|
8
|
-
import { BackButton, Logo } from '../..'
|
|
9
|
-
import BagButton from '../bag-button'
|
|
10
|
-
import PolicyLinks from './policy-links'
|
|
11
|
-
import CartAccordian from './cart-accordian'
|
|
12
|
-
import type CheckoutPanelProps from './checkout-panel-props'
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const MobileCheckoutPanel: React.FC<PropsWithChildren & CheckoutPanelProps> = ({
|
|
16
|
-
step,
|
|
17
|
-
stepNames,
|
|
18
|
-
onLeave,
|
|
19
|
-
clx='',
|
|
20
|
-
children
|
|
21
|
-
}) => (
|
|
22
|
-
|
|
23
|
-
<div /* id='MOBILE_GRID' */ className={cn('bg-background flex flex-col justify-start px-4 pt-[101px]', clx)}>
|
|
24
|
-
<div className='fixed z-11 top-0 h-[45px] w-full flex justify-between items-stretch bg-background'>
|
|
25
|
-
<div className='flex items-stretch gap-1 grow-0'>
|
|
26
|
-
<BackButton
|
|
27
|
-
size='sm'
|
|
28
|
-
clx={
|
|
29
|
-
'-ml-5 !px-0 aspect-square h-full ' +
|
|
30
|
-
'rounded-full active:!bg-level-3 '
|
|
31
|
-
}
|
|
32
|
-
onBack={onLeave}
|
|
33
|
-
/>
|
|
34
|
-
<Logo size='xs' variant='text-only' href='/' onClick={onLeave} outerClx='-ml-2'/>
|
|
35
|
-
</div>
|
|
36
|
-
<StepIndicator
|
|
37
|
-
dotSizeRem={1}
|
|
38
|
-
steps={stepNames}
|
|
39
|
-
currentStep={step}
|
|
40
|
-
className='relative grow mx-2 top-[14px] text-xs font-semibold w-full'
|
|
41
|
-
/>
|
|
42
|
-
|
|
43
|
-
{/* 72px by observation (for centering). Need wrapper div since 'noLogin' returns null if no logged in user */}
|
|
44
|
-
<div className='w-[72px] grow-0 shrink-0 flex items-center justify-center'><AuthWidget noLogin className=''/></div>
|
|
45
|
-
</div>
|
|
46
|
-
<CartAccordian
|
|
47
|
-
icon={
|
|
48
|
-
<BagButton
|
|
49
|
-
animateOnHover={false}
|
|
50
|
-
showIfEmpty
|
|
51
|
-
size='sm'
|
|
52
|
-
className='mr-1 relative w-5 h-6 sm:w-6 sm:h-7'
|
|
53
|
-
iconClx='fill-foreground'
|
|
54
|
-
/>
|
|
55
|
-
}
|
|
56
|
-
clx='flex items-center justify-center w-full'
|
|
57
|
-
triggerClx='bg-background fixed z-11 top-[45px] left-0 right-0 !m-0 px-4'
|
|
58
|
-
panelClx='!py-0'
|
|
59
|
-
scrollAfter={3}
|
|
60
|
-
scrollHeightClx='h-[385px]'
|
|
61
|
-
/>
|
|
62
|
-
{children}
|
|
63
|
-
<PolicyLinks clx='mt-auto mb-3 pt-2' />
|
|
64
|
-
</div>
|
|
65
|
-
)
|
|
66
|
-
|
|
1
|
+
'use client'
|
|
2
|
+
import React, { type PropsWithChildren } from 'react'
|
|
3
|
+
|
|
4
|
+
import { StepIndicator } from '@hanzo/ui/primitives'
|
|
5
|
+
import { cn } from '@hanzo/ui/util'
|
|
6
|
+
import { AuthWidget } from '@hanzo/auth/components'
|
|
7
|
+
|
|
8
|
+
import { BackButton, Logo } from '../..'
|
|
9
|
+
import BagButton from '../bag-button'
|
|
10
|
+
import PolicyLinks from './policy-links'
|
|
11
|
+
import CartAccordian from './cart-accordian'
|
|
12
|
+
import type CheckoutPanelProps from './checkout-panel-props'
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
const MobileCheckoutPanel: React.FC<PropsWithChildren & CheckoutPanelProps> = ({
|
|
16
|
+
step,
|
|
17
|
+
stepNames,
|
|
18
|
+
onLeave,
|
|
19
|
+
clx='',
|
|
20
|
+
children
|
|
21
|
+
}) => (
|
|
22
|
+
|
|
23
|
+
<div /* id='MOBILE_GRID' */ className={cn('bg-background flex flex-col justify-start px-4 pt-[101px]', clx)}>
|
|
24
|
+
<div className='fixed z-11 top-0 h-[45px] w-full flex justify-between items-stretch bg-background'>
|
|
25
|
+
<div className='flex items-stretch gap-1 grow-0'>
|
|
26
|
+
<BackButton
|
|
27
|
+
size='sm'
|
|
28
|
+
clx={
|
|
29
|
+
'-ml-5 !px-0 aspect-square h-full ' +
|
|
30
|
+
'rounded-full active:!bg-level-3 '
|
|
31
|
+
}
|
|
32
|
+
onBack={onLeave}
|
|
33
|
+
/>
|
|
34
|
+
<Logo size='xs' variant='text-only' href='/' onClick={onLeave} outerClx='-ml-2'/>
|
|
35
|
+
</div>
|
|
36
|
+
<StepIndicator
|
|
37
|
+
dotSizeRem={1}
|
|
38
|
+
steps={stepNames}
|
|
39
|
+
currentStep={step}
|
|
40
|
+
className='relative grow mx-2 top-[14px] text-xs font-semibold w-full'
|
|
41
|
+
/>
|
|
42
|
+
|
|
43
|
+
{/* 72px by observation (for centering). Need wrapper div since 'noLogin' returns null if no logged in user */}
|
|
44
|
+
<div className='w-[72px] grow-0 shrink-0 flex items-center justify-center'><AuthWidget noLogin className=''/></div>
|
|
45
|
+
</div>
|
|
46
|
+
<CartAccordian
|
|
47
|
+
icon={
|
|
48
|
+
<BagButton
|
|
49
|
+
animateOnHover={false}
|
|
50
|
+
showIfEmpty
|
|
51
|
+
size='sm'
|
|
52
|
+
className='mr-1 relative w-5 h-6 sm:w-6 sm:h-7'
|
|
53
|
+
iconClx='fill-foreground'
|
|
54
|
+
/>
|
|
55
|
+
}
|
|
56
|
+
clx='flex items-center justify-center w-full'
|
|
57
|
+
triggerClx='bg-background fixed z-11 top-[45px] left-0 right-0 !m-0 px-4'
|
|
58
|
+
panelClx='!py-0'
|
|
59
|
+
scrollAfter={3}
|
|
60
|
+
scrollHeightClx='h-[385px]'
|
|
61
|
+
/>
|
|
62
|
+
{children}
|
|
63
|
+
<PolicyLinks clx='mt-auto mb-3 pt-2' />
|
|
64
|
+
</div>
|
|
65
|
+
)
|
|
66
|
+
|
|
67
67
|
export default MobileCheckoutPanel
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import Link from 'next/link'
|
|
3
|
-
|
|
4
|
-
import { Separator, buttonVariants } from '@hanzo/ui/primitives'
|
|
5
|
-
import { cn } from '@hanzo/ui/util'
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const linkClx = buttonVariants({
|
|
9
|
-
variant: 'linkMuted',
|
|
10
|
-
size: 'link',
|
|
11
|
-
rounded: 'none',
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
const PolicyLinks: React.FC<{
|
|
15
|
-
clx?: string
|
|
16
|
-
}> = ({
|
|
17
|
-
clx=''
|
|
18
|
-
}) => (
|
|
19
|
-
<div className={cn('flex flex-col items-center', clx)}>
|
|
20
|
-
<Separator/>
|
|
21
|
-
<div className='flex gap-4 py-2 text-sm'>
|
|
22
|
-
{/* TODO: add Refund policy and Privacy policy links */}
|
|
23
|
-
<Link className={linkClx} href=''>refund policy</Link>
|
|
24
|
-
<Link className={linkClx} href=''>privacy policy</Link>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
export default PolicyLinks
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import Link from 'next/link'
|
|
3
|
+
|
|
4
|
+
import { Separator, buttonVariants } from '@hanzo/ui/primitives'
|
|
5
|
+
import { cn } from '@hanzo/ui/util'
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
const linkClx = buttonVariants({
|
|
9
|
+
variant: 'linkMuted',
|
|
10
|
+
size: 'link',
|
|
11
|
+
rounded: 'none',
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const PolicyLinks: React.FC<{
|
|
15
|
+
clx?: string
|
|
16
|
+
}> = ({
|
|
17
|
+
clx=''
|
|
18
|
+
}) => (
|
|
19
|
+
<div className={cn('flex flex-col items-center', clx)}>
|
|
20
|
+
<Separator/>
|
|
21
|
+
<div className='flex gap-4 py-2 text-sm'>
|
|
22
|
+
{/* TODO: add Refund policy and Privacy policy links */}
|
|
23
|
+
<Link className={linkClx} href=''>refund policy</Link>
|
|
24
|
+
<Link className={linkClx} href=''>privacy policy</Link>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
export default PolicyLinks
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Breadcrumb,
|
|
3
|
-
BreadcrumbItem,
|
|
4
|
-
BreadcrumbLink,
|
|
5
|
-
BreadcrumbList,
|
|
6
|
-
BreadcrumbSeparator
|
|
7
|
-
} from '@hanzo/ui/primitives'
|
|
8
|
-
import { cn } from '@hanzo/ui/util'
|
|
9
|
-
|
|
10
|
-
const StepsIndicator: React.FC<{
|
|
11
|
-
currentStep: number
|
|
12
|
-
stepNames: string[]
|
|
13
|
-
className?: string
|
|
14
|
-
}> = ({
|
|
15
|
-
currentStep,
|
|
16
|
-
stepNames,
|
|
17
|
-
className=''
|
|
18
|
-
}) => (
|
|
19
|
-
<Breadcrumb className={className}>
|
|
20
|
-
<BreadcrumbList>
|
|
21
|
-
{stepNames.map((name, i) => (
|
|
22
|
-
<>
|
|
23
|
-
<BreadcrumbItem key={`item-${i}`}>
|
|
24
|
-
<BreadcrumbLink className={cn(
|
|
25
|
-
currentStep >= i ? '!text-foreground hover:text-foreground' : 'hover:text-muted-2',
|
|
26
|
-
'text-xxs sm:text-sm'
|
|
27
|
-
)}
|
|
28
|
-
>
|
|
29
|
-
{name}
|
|
30
|
-
</BreadcrumbLink>
|
|
31
|
-
</BreadcrumbItem>
|
|
32
|
-
{i !== stepNames.length - 1 && <BreadcrumbSeparator key={`sep-${i}`}/>}
|
|
33
|
-
</>
|
|
34
|
-
))}
|
|
35
|
-
</BreadcrumbList>
|
|
36
|
-
</Breadcrumb>
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
export default StepsIndicator
|
|
1
|
+
import {
|
|
2
|
+
Breadcrumb,
|
|
3
|
+
BreadcrumbItem,
|
|
4
|
+
BreadcrumbLink,
|
|
5
|
+
BreadcrumbList,
|
|
6
|
+
BreadcrumbSeparator
|
|
7
|
+
} from '@hanzo/ui/primitives'
|
|
8
|
+
import { cn } from '@hanzo/ui/util'
|
|
9
|
+
|
|
10
|
+
const StepsIndicator: React.FC<{
|
|
11
|
+
currentStep: number
|
|
12
|
+
stepNames: string[]
|
|
13
|
+
className?: string
|
|
14
|
+
}> = ({
|
|
15
|
+
currentStep,
|
|
16
|
+
stepNames,
|
|
17
|
+
className=''
|
|
18
|
+
}) => (
|
|
19
|
+
<Breadcrumb className={className}>
|
|
20
|
+
<BreadcrumbList>
|
|
21
|
+
{stepNames.map((name, i) => (
|
|
22
|
+
<>
|
|
23
|
+
<BreadcrumbItem key={`item-${i}`}>
|
|
24
|
+
<BreadcrumbLink className={cn(
|
|
25
|
+
currentStep >= i ? '!text-foreground hover:text-foreground' : 'hover:text-muted-2',
|
|
26
|
+
'text-xxs sm:text-sm'
|
|
27
|
+
)}
|
|
28
|
+
>
|
|
29
|
+
{name}
|
|
30
|
+
</BreadcrumbLink>
|
|
31
|
+
</BreadcrumbItem>
|
|
32
|
+
{i !== stepNames.length - 1 && <BreadcrumbSeparator key={`sep-${i}`}/>}
|
|
33
|
+
</>
|
|
34
|
+
))}
|
|
35
|
+
</BreadcrumbList>
|
|
36
|
+
</Breadcrumb>
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
export default StepsIndicator
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import Link from 'next/link'
|
|
3
|
-
|
|
4
|
-
import { ApplyTypography } from '@hanzo/ui/primitives'
|
|
5
|
-
|
|
6
|
-
import type { CheckoutStepComponentProps } from '@hanzo/commerce/types'
|
|
7
|
-
|
|
8
|
-
const ThankYou: React.FC<CheckoutStepComponentProps> = ({}) => (
|
|
9
|
-
<ApplyTypography className='flex flex-col gap-4 text-center mt-10'>
|
|
10
|
-
<h3>Thank you for your order!</h3>
|
|
11
|
-
<h6>Once your payment has been confirmed, you'll recieve an email with additional information.</h6>
|
|
12
|
-
<p>
|
|
13
|
-
While you wait, we cordially invite you to join the <Link href='https://warpcast.com/~/channel/lux'>Lux Channel</Link> on <Link href='https://warpcast.com/~/invite-page/227706?id=fbc9ca91'>Warpcast</Link>.
|
|
14
|
-
</p>
|
|
15
|
-
</ApplyTypography>
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
export default ThankYou
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import Link from 'next/link'
|
|
3
|
+
|
|
4
|
+
import { ApplyTypography } from '@hanzo/ui/primitives'
|
|
5
|
+
|
|
6
|
+
import type { CheckoutStepComponentProps } from '@hanzo/commerce/types'
|
|
7
|
+
|
|
8
|
+
const ThankYou: React.FC<CheckoutStepComponentProps> = ({}) => (
|
|
9
|
+
<ApplyTypography className='flex flex-col gap-4 text-center mt-10'>
|
|
10
|
+
<h3>Thank you for your order!</h3>
|
|
11
|
+
<h6>Once your payment has been confirmed, you'll recieve an email with additional information.</h6>
|
|
12
|
+
<p>
|
|
13
|
+
While you wait, we cordially invite you to join the <Link href='https://warpcast.com/~/channel/lux'>Lux Channel</Link> on <Link href='https://warpcast.com/~/invite-page/227706?id=fbc9ca91'>Warpcast</Link>.
|
|
14
|
+
</p>
|
|
15
|
+
</ApplyTypography>
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
export default ThankYou
|
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import React, { useState, useEffect } from 'react'
|
|
3
|
-
import { useRouter } from 'next/navigation'
|
|
4
|
-
|
|
5
|
-
import { X } from 'lucide-react'
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
Popover,
|
|
9
|
-
PopoverContent,
|
|
10
|
-
PopoverTrigger,
|
|
11
|
-
PopoverClose,
|
|
12
|
-
} from "@hanzo/ui/primitives"
|
|
13
|
-
|
|
14
|
-
import { cn } from '@hanzo/ui/util'
|
|
15
|
-
import { CartPanel, useCommerce } from '@hanzo/commerce'
|
|
16
|
-
|
|
17
|
-
import * as Icons from '../icons'
|
|
18
|
-
import sendGAEvent from '../../next/analytics/google-analytics'
|
|
19
|
-
|
|
20
|
-
const DesktopBagPopup: React.FC<{
|
|
21
|
-
triggerClx?: string
|
|
22
|
-
popupClx?: string
|
|
23
|
-
trigger: React.ReactNode
|
|
24
|
-
}> = ({
|
|
25
|
-
triggerClx='',
|
|
26
|
-
popupClx='',
|
|
27
|
-
trigger
|
|
28
|
-
}) => {
|
|
29
|
-
const cmmc = useCommerce()
|
|
30
|
-
|
|
31
|
-
const [bagOpen, setBagOpen] = useState<boolean>(false)
|
|
32
|
-
const router = useRouter()
|
|
33
|
-
|
|
34
|
-
useEffect(() => {
|
|
35
|
-
if (bagOpen) {
|
|
36
|
-
sendGAEvent('view_cart', {
|
|
37
|
-
items: cmmc.cartItems.map((item) => ({
|
|
38
|
-
item_id: item.sku,
|
|
39
|
-
item_name: item.title,
|
|
40
|
-
item_category: item.familyId,
|
|
41
|
-
price: item.price,
|
|
42
|
-
quantity: item.quantity
|
|
43
|
-
})),
|
|
44
|
-
value: cmmc.cartTotal,
|
|
45
|
-
currency: 'USD',
|
|
46
|
-
})
|
|
47
|
-
}
|
|
48
|
-
}, [bagOpen])
|
|
49
|
-
|
|
50
|
-
return (
|
|
51
|
-
<Popover open={bagOpen} onOpenChange={setBagOpen}>
|
|
52
|
-
<PopoverTrigger className={triggerClx}>
|
|
53
|
-
{trigger}
|
|
54
|
-
</PopoverTrigger>
|
|
55
|
-
<PopoverContent sideOffset={28} className={cn('relative flex flex-col p-0 px-4 pb-4 pt-2', popupClx)}>
|
|
56
|
-
<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'><X className='w-5 h-5'/></PopoverClose>
|
|
57
|
-
<CartPanel
|
|
58
|
-
handleCheckout={() => {router.push('/checkout')}}
|
|
59
|
-
className='mt-4 mb-4 border-none py-0 px-4'
|
|
60
|
-
listClx='rounded-sm pr-3'
|
|
61
|
-
scrollAfter={5}
|
|
62
|
-
scrollHeightClx='h-[70vh]'
|
|
63
|
-
itemClx='mt-3'
|
|
64
|
-
totalClx='sticky px-1 pr-2 -bottom-[1px] bg-level-1'
|
|
65
|
-
buttonClx='max-w-[220px] flex-none'
|
|
66
|
-
>
|
|
67
|
-
<div className='flex flex-row items-center flex-none justify-center '>
|
|
68
|
-
<Icons.bag className='mr-2 relative w-6 h-7 fill-foreground ' />
|
|
69
|
-
<p className='font-heading text-foreground text-default'>Your Bag</p>
|
|
70
|
-
</div>
|
|
71
|
-
<div className='h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none'/>
|
|
72
|
-
</CartPanel>
|
|
73
|
-
</PopoverContent>
|
|
74
|
-
</Popover>
|
|
75
|
-
)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export default DesktopBagPopup
|
|
1
|
+
'use client'
|
|
2
|
+
import React, { useState, useEffect } from 'react'
|
|
3
|
+
import { useRouter } from 'next/navigation'
|
|
4
|
+
|
|
5
|
+
import { X } from 'lucide-react'
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
Popover,
|
|
9
|
+
PopoverContent,
|
|
10
|
+
PopoverTrigger,
|
|
11
|
+
PopoverClose,
|
|
12
|
+
} from "@hanzo/ui/primitives"
|
|
13
|
+
|
|
14
|
+
import { cn } from '@hanzo/ui/util'
|
|
15
|
+
import { CartPanel, useCommerce } from '@hanzo/commerce'
|
|
16
|
+
|
|
17
|
+
import * as Icons from '../icons'
|
|
18
|
+
import sendGAEvent from '../../next/analytics/google-analytics'
|
|
19
|
+
|
|
20
|
+
const DesktopBagPopup: React.FC<{
|
|
21
|
+
triggerClx?: string
|
|
22
|
+
popupClx?: string
|
|
23
|
+
trigger: React.ReactNode
|
|
24
|
+
}> = ({
|
|
25
|
+
triggerClx='',
|
|
26
|
+
popupClx='',
|
|
27
|
+
trigger
|
|
28
|
+
}) => {
|
|
29
|
+
const cmmc = useCommerce()
|
|
30
|
+
|
|
31
|
+
const [bagOpen, setBagOpen] = useState<boolean>(false)
|
|
32
|
+
const router = useRouter()
|
|
33
|
+
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (bagOpen) {
|
|
36
|
+
sendGAEvent('view_cart', {
|
|
37
|
+
items: cmmc.cartItems.map((item) => ({
|
|
38
|
+
item_id: item.sku,
|
|
39
|
+
item_name: item.title,
|
|
40
|
+
item_category: item.familyId,
|
|
41
|
+
price: item.price,
|
|
42
|
+
quantity: item.quantity
|
|
43
|
+
})),
|
|
44
|
+
value: cmmc.cartTotal,
|
|
45
|
+
currency: 'USD',
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
}, [bagOpen])
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<Popover open={bagOpen} onOpenChange={setBagOpen}>
|
|
52
|
+
<PopoverTrigger className={triggerClx}>
|
|
53
|
+
{trigger}
|
|
54
|
+
</PopoverTrigger>
|
|
55
|
+
<PopoverContent sideOffset={28} className={cn('relative flex flex-col p-0 px-4 pb-4 pt-2', popupClx)}>
|
|
56
|
+
<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'><X className='w-5 h-5'/></PopoverClose>
|
|
57
|
+
<CartPanel
|
|
58
|
+
handleCheckout={() => {router.push('/checkout')}}
|
|
59
|
+
className='mt-4 mb-4 border-none py-0 px-4'
|
|
60
|
+
listClx='rounded-sm pr-3'
|
|
61
|
+
scrollAfter={5}
|
|
62
|
+
scrollHeightClx='h-[70vh]'
|
|
63
|
+
itemClx='mt-3'
|
|
64
|
+
totalClx='sticky px-1 pr-2 -bottom-[1px] bg-level-1'
|
|
65
|
+
buttonClx='max-w-[220px] flex-none'
|
|
66
|
+
>
|
|
67
|
+
<div className='flex flex-row items-center flex-none justify-center '>
|
|
68
|
+
<Icons.bag className='mr-2 relative w-6 h-7 fill-foreground ' />
|
|
69
|
+
<p className='font-heading text-foreground text-default'>Your Bag</p>
|
|
70
|
+
</div>
|
|
71
|
+
<div className='h-[1px] w-pr-80 bg-muted-3 mx-auto mt-1.5 flex-none'/>
|
|
72
|
+
</CartPanel>
|
|
73
|
+
</PopoverContent>
|
|
74
|
+
</Popover>
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export default DesktopBagPopup
|