@luxfi/core 5.2.10 → 5.2.11

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 (155) hide show
  1. package/commerce/ui/conf.ts +13 -13
  2. package/commerce/ui/context.tsx +126 -126
  3. package/commerce/ui/store.ts +306 -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 +49 -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/cart-accordian.tsx +66 -0
  17. package/components/commerce/checkout-panel/checkout-panel-props.ts +10 -0
  18. package/components/commerce/checkout-panel/{dt-bag-carousel.tsx → desktop-bag-carousel.tsx} +36 -36
  19. package/components/commerce/checkout-panel/desktop-cp.tsx +83 -0
  20. package/components/commerce/checkout-panel/index.tsx +126 -129
  21. package/components/commerce/checkout-panel/mobile-cp.tsx +67 -0
  22. package/components/commerce/checkout-panel/policy-links.tsx +29 -0
  23. package/components/commerce/checkout-panel/steps-indicator.tsx +39 -39
  24. package/components/commerce/checkout-panel/thank-you.tsx +18 -18
  25. package/components/commerce/checkout-widget/const.ts +13 -13
  26. package/components/commerce/checkout-widget/index.tsx +192 -192
  27. package/components/commerce/checkout-widget/obs-string-set.ts +48 -48
  28. package/components/commerce/checkout-widget/use-anim-clx-set.ts +58 -58
  29. package/components/commerce/desktop-bag-popup.tsx +78 -78
  30. package/components/commerce/desktop-nav-menu.tsx +130 -130
  31. package/components/commerce/drawer/index.tsx +99 -99
  32. package/components/commerce/drawer/micro.tsx +144 -144
  33. package/components/commerce/drawer/shell.tsx +85 -85
  34. package/components/commerce/mobile-bag-drawer.tsx +51 -51
  35. package/components/commerce/mobile-login-button.tsx +101 -101
  36. package/components/commerce/mobile-menu-toggle-button.tsx +35 -35
  37. package/components/commerce/mobile-nav-menu-ai.tsx +47 -48
  38. package/components/commerce/mobile-nav-menu-item.tsx +49 -49
  39. package/components/commerce/mobile-nav-menu.tsx +101 -101
  40. package/components/contact-dialog/contact-form.tsx +113 -113
  41. package/components/contact-dialog/disclaimer.tsx +13 -13
  42. package/components/contact-dialog/index.tsx +64 -64
  43. package/components/copyright.tsx +21 -21
  44. package/components/drawer-margin.tsx +25 -25
  45. package/components/footer.tsx +77 -77
  46. package/components/header/desktop.tsx +50 -50
  47. package/components/header/index.tsx +52 -52
  48. package/components/header/mobile.tsx +163 -163
  49. package/components/header/theme-toggle.tsx +26 -26
  50. package/components/icons/24k-gold-card.tsx +43 -43
  51. package/components/icons/ai-chat.tsx +29 -29
  52. package/components/icons/anodized-titanium.tsx +45 -45
  53. package/components/icons/avatar.tsx +11 -11
  54. package/components/icons/bag-icon.tsx +10 -10
  55. package/components/icons/blog.tsx +20 -20
  56. package/components/icons/bridge.tsx +68 -68
  57. package/components/icons/changelog.tsx +21 -21
  58. package/components/icons/chrome.tsx +45 -45
  59. package/components/icons/coins.tsx +20 -20
  60. package/components/icons/compare-cards.tsx +21 -21
  61. package/components/icons/credit.tsx +20 -20
  62. package/components/icons/customer-support.tsx +21 -21
  63. package/components/icons/customers.tsx +33 -33
  64. package/components/icons/developer-docs.tsx +20 -20
  65. package/components/icons/exchange.tsx +21 -21
  66. package/components/icons/explorer.tsx +22 -22
  67. package/components/icons/faqs.tsx +21 -21
  68. package/components/icons/github.tsx +14 -14
  69. package/components/icons/guides.tsx +21 -21
  70. package/components/icons/gun-metal.tsx +44 -44
  71. package/components/icons/index.tsx +43 -43
  72. package/components/icons/integrations.tsx +25 -25
  73. package/components/icons/irradescent.tsx +41 -41
  74. package/components/icons/launch-subnet.tsx +21 -21
  75. package/components/icons/left-arrow.tsx +11 -11
  76. package/components/icons/lux-finance.tsx +23 -23
  77. package/components/icons/lux-logo.tsx +10 -10
  78. package/components/icons/lux-pass.tsx +25 -25
  79. package/components/icons/lux-quests.tsx +21 -21
  80. package/components/icons/market.tsx +24 -24
  81. package/components/icons/mirrored-titanium.tsx +46 -46
  82. package/components/icons/more-benefits.tsx +21 -21
  83. package/components/icons/open-source.tsx +26 -26
  84. package/components/icons/right-arrow.tsx +10 -10
  85. package/components/icons/safe.tsx +37 -37
  86. package/components/icons/search.tsx +12 -12
  87. package/components/icons/secure-delivery.tsx +13 -13
  88. package/components/icons/shop.tsx +20 -20
  89. package/components/icons/social-icon.tsx +35 -35
  90. package/components/icons/social-svg.css +3 -3
  91. package/components/icons/sterling-silver-card.tsx +44 -44
  92. package/components/icons/templates.tsx +21 -21
  93. package/components/icons/validators.tsx +41 -41
  94. package/components/icons/view-all-card.tsx +20 -20
  95. package/components/icons/wallet.tsx +20 -20
  96. package/components/icons/warpcast.tsx +58 -58
  97. package/components/icons/youtube-logo.tsx +59 -59
  98. package/components/index.ts +27 -27
  99. package/components/logo.tsx +89 -89
  100. package/components/main.tsx +27 -27
  101. package/components/mini-chart/index.tsx +7 -7
  102. package/components/mini-chart/mini-chart-props.ts +43 -43
  103. package/components/mini-chart/mini-chart.tsx +85 -85
  104. package/components/mini-chart/wrapper.tsx +23 -23
  105. package/components/not-found/index.tsx +28 -28
  106. package/components/not-found/not-found-content.mdx +5 -5
  107. package/components/scripts.tsx +24 -24
  108. package/components/tooltip.tsx +31 -31
  109. package/environment.d.ts +5 -5
  110. package/next/analytics/fpixel.ts +15 -15
  111. package/next/analytics/google-analytics.ts +13 -13
  112. package/next/analytics/index.ts +3 -3
  113. package/next/analytics/pixel-analytics.tsx +54 -54
  114. package/next/font/get-app-router-font-classes.ts +12 -12
  115. package/next/font/load-and-return-lux-next-fonts-on-import.ts +68 -68
  116. package/next/font/next-font-desc.ts +27 -27
  117. package/next/font/pages-router-font-vars.tsx +18 -18
  118. package/next/head-metadata/from-next/metadata-types.ts +158 -158
  119. package/next/head-metadata/from-next/opengraph-types.ts +267 -267
  120. package/next/head-metadata/from-next/twitter-types.ts +92 -92
  121. package/next/head-metadata/index.tsx +208 -208
  122. package/next/middleware/determine-device-mw.ts +16 -16
  123. package/package.json +79 -79
  124. package/root-layout/WHY_THIS_IS_SEPARATE.txt +1 -1
  125. package/root-layout/index.tsx +112 -112
  126. package/server-actions/firebase-app.ts +14 -14
  127. package/server-actions/index.ts +5 -5
  128. package/server-actions/store-contact.ts +51 -51
  129. package/site-def/footer/community.tsx +67 -67
  130. package/site-def/footer/company.ts +37 -37
  131. package/site-def/footer/ecosystem.ts +37 -37
  132. package/site-def/footer/index.tsx +26 -26
  133. package/site-def/footer/legal.ts +28 -28
  134. package/site-def/footer/network.ts +45 -45
  135. package/site-def/footer/svg/warpcast-logo.svg +11 -11
  136. package/site-def/index.ts +2 -2
  137. package/site-def/main-nav.tsx +392 -392
  138. package/style/cart-animation.css +29 -29
  139. package/style/checkout-animation.css +23 -23
  140. package/style/drawer-handle-overrides.css +160 -160
  141. package/style/lux-colors.css +85 -85
  142. package/style/lux-global.css +30 -30
  143. package/tailwind/fontFamily.tailwind.lux.ts +18 -18
  144. package/tailwind/index.ts +2 -2
  145. package/tailwind/lux-tw-fonts.ts +39 -39
  146. package/tailwind/tailwind.config.lux-preset.ts +10 -10
  147. package/tsconfig.json +15 -15
  148. package/types/chatbot-config.ts +6 -6
  149. package/types/chatbot-suggested-question.ts +7 -7
  150. package/types/contact-info.ts +10 -10
  151. package/types/index.ts +4 -4
  152. package/types/site-def.ts +43 -43
  153. package/components/commerce/checkout-panel/dt-checkout-panel.tsx +0 -85
  154. package/components/commerce/checkout-panel/links-row.tsx +0 -21
  155. package/components/commerce/checkout-panel/mb-checkout-panel.tsx +0 -55
@@ -1,129 +1,126 @@
1
- 'use client'
2
- import React, { useLayoutEffect, useRef, useState } from 'react'
3
-
4
- import { capitalize, cn } from '@hanzo/ui/util'
5
-
6
- import { useCommerce, ShippingStepForm, PaymentStepForm } from '@hanzo/commerce'
7
- import type { CheckoutStep } from '@hanzo/commerce/types'
8
-
9
- import ThankYou from './thank-you'
10
-
11
- const STEPS = [
12
- {
13
- name: 'payment',
14
- Comp: PaymentStepForm
15
- },
16
- {
17
- name: 'delivery',
18
- Comp: ShippingStepForm
19
- },
20
- {
21
- name: 'done',
22
- label: 'Done!',
23
- Comp: ThankYou
24
- }
25
- ] satisfies CheckoutStep[]
26
-
27
- const STEP_NAMES = STEPS.map((s) => (s.label ? s.label : capitalize(s.name)))
28
-
29
- import DesktopCP from './dt-checkout-panel'
30
- import MobileCP from './mb-checkout-panel'
31
-
32
- const CheckoutPanel: React.FC<{
33
- close: () => void
34
- className?: string
35
- }> = ({
36
- close,
37
- className=''
38
- }) => {
39
-
40
- const cmmc = useCommerce()
41
-
42
- // For sites that don't initialize cmmc
43
- if (!cmmc) {
44
- console.log("CHECKOUT PANEL: cmmc svc undefined!")
45
- return <></>
46
- }
47
-
48
- const [stepIndex, setStepIndex] = useState<number>(0)
49
- const [orderId, setOrderId] = useState<string | undefined>(undefined)
50
-
51
- // Step.name or 'first' or 'next' or 'last'
52
- const setStep = (name: string): void => {
53
-
54
- if (name === 'first') {
55
- setStepIndex(0)
56
- }
57
- else if (name === 'last') {
58
- setStepIndex(STEPS.length - 1)
59
- }
60
- else if (name === 'next') {
61
- if (stepIndex <= STEPS.length - 2) {
62
- setStepIndex(stepIndex + 1)
63
- }
64
- else {
65
- throw new Error('CheckoutPanel.setStep(): Attempting to advance past last step!')
66
- }
67
- }
68
- else {
69
- const indexFound = STEPS.findIndex((el) => (el.name === name))
70
- if (indexFound !== -1) {
71
- setStepIndex(indexFound)
72
- }
73
- else {
74
- throw new Error('CheckoutPanel.setStep(): Step named ' + name + ' not found!')
75
- }
76
- }
77
- }
78
-
79
- const _close = () => {
80
- setStep('first')
81
- close()
82
- }
83
-
84
- // Determine if mobile or desktop based on visibility of desktopElement
85
- // https://stackoverflow.com/a/21696585/11378853
86
- const desktopElement = useRef<HTMLDivElement | null>(null)
87
- const [layout, setLayout] = useState<'mobile' | 'desktop' | undefined>()
88
-
89
- // TODO :aa I assume it's becase we don't want two instance of the Square plugin....
90
- // ... wondering if there is a simpler way.
91
- useLayoutEffect(() => {
92
- const checkLayout = () => {
93
- setLayout(!!desktopElement.current?.offsetParent ? 'desktop' : 'mobile')
94
- }
95
-
96
- // initial layout check
97
- checkLayout()
98
-
99
- window.addEventListener('resize', checkLayout)
100
- return () => {
101
- window.removeEventListener('resize', checkLayout)
102
- }
103
- }, [])
104
-
105
- const StepToRender = STEPS[stepIndex].Comp
106
-
107
- return (<>
108
- <DesktopCP
109
- className={cn('h-full', className, 'hidden md:flex')}
110
- close={_close}
111
- index={stepIndex}
112
- stepNames={STEP_NAMES}
113
- >
114
- {/* Element required to determine if DesktopCP is visible */}
115
- <div ref={desktopElement}/>
116
- {layout === 'desktop' && <StepToRender onDone={() => {setStep('next')}} orderId={orderId} setOrderId={setOrderId}/>}
117
- </DesktopCP>
118
- <MobileCP
119
- className={cn('h-full overflow-y-auto', className, 'md:hidden' )}
120
- close={_close}
121
- index={stepIndex}
122
- stepNames={STEP_NAMES}
123
- >
124
- {layout === 'mobile' && <StepToRender onDone={() => {setStep('next')}} orderId={orderId} setOrderId={setOrderId}/>}
125
- </MobileCP>
126
- </>)
127
- }
128
-
129
- export default CheckoutPanel
1
+ 'use client'
2
+ import React, { useLayoutEffect, useRef, useState } from 'react'
3
+
4
+ import { capitalize, cn } from '@hanzo/ui/util'
5
+
6
+ import { useCommerce, ShippingStepForm, PaymentStepForm } from '@hanzo/commerce'
7
+ import type { CheckoutStep } from '@hanzo/commerce/types'
8
+
9
+ import ThankYou from './thank-you'
10
+
11
+ const STEPS = [
12
+ {
13
+ name: 'payment',
14
+ Comp: PaymentStepForm
15
+ },
16
+ {
17
+ name: 'delivery',
18
+ Comp: ShippingStepForm
19
+ },
20
+ {
21
+ name: 'done',
22
+ label: 'Done!',
23
+ Comp: ThankYou
24
+ }
25
+ ] satisfies CheckoutStep[]
26
+
27
+ const STEP_NAMES = STEPS.map((s) => (s.label ? s.label : capitalize(s.name)))
28
+
29
+ import DesktopCP from './desktop-cp'
30
+ import MobileCP from './mobile-cp'
31
+
32
+ const CheckoutPanel: React.FC<{
33
+ clx?: string
34
+ }> = ({
35
+ clx=''
36
+ }) => {
37
+
38
+ const cmmc = useCommerce()
39
+
40
+ // For sites that don't initialize cmmc
41
+ if (!cmmc) {
42
+ console.log("CHECKOUT PANEL: cmmc svc undefined!")
43
+ return <></>
44
+ }
45
+
46
+ const [stepIndex, setStepIndex] = useState<number>(0)
47
+ const [orderId, setOrderId] = useState<string | undefined>(undefined)
48
+
49
+ // Step.name or 'first' or 'next' or 'last'
50
+ const setStep = (name: string): void => {
51
+
52
+ if (name === 'first') {
53
+ setStepIndex(0)
54
+ }
55
+ else if (name === 'last') {
56
+ setStepIndex(STEPS.length - 1)
57
+ }
58
+ else if (name === 'next') {
59
+ if (stepIndex <= STEPS.length - 2) {
60
+ setStepIndex(stepIndex + 1)
61
+ }
62
+ else {
63
+ throw new Error('CheckoutPanel.setStep(): Attempting to advance past last step!')
64
+ }
65
+ }
66
+ else {
67
+ const indexFound = STEPS.findIndex((el) => (el.name === name))
68
+ if (indexFound !== -1) {
69
+ setStepIndex(indexFound)
70
+ }
71
+ else {
72
+ throw new Error('CheckoutPanel.setStep(): Step named ' + name + ' not found!')
73
+ }
74
+ }
75
+ }
76
+
77
+ const _close = () => {
78
+ setStep('first')
79
+ }
80
+
81
+ // Determine if mobile or desktop layout based on visibility of desktopElement
82
+ // This prevents issues with multiple instances of 3rd party e-commerce widgets
83
+ // from ever being in the DOM.
84
+ // https://stackoverflow.com/a/21696585/11378853
85
+ const desktopElement = useRef<HTMLDivElement | null>(null)
86
+ const [layout, setLayout] = useState<'mobile' | 'desktop' | undefined>(undefined)
87
+
88
+ useLayoutEffect(() => {
89
+ const checkLayout = () => {
90
+ setLayout(!!desktopElement.current?.offsetParent ? 'desktop' : 'mobile')
91
+ }
92
+
93
+ // initial layout check
94
+ checkLayout()
95
+
96
+ window.addEventListener('resize', checkLayout)
97
+ return () => {
98
+ window.removeEventListener('resize', checkLayout)
99
+ }
100
+ }, [])
101
+
102
+ const StepToRender = STEPS[stepIndex].Comp
103
+
104
+ return (<>
105
+ <DesktopCP
106
+ clx={cn('h-full', clx, 'hidden md:flex')}
107
+ onLeave={_close}
108
+ step={stepIndex}
109
+ stepNames={STEP_NAMES}
110
+ >
111
+ {/* Element required to determine if DesktopCP is visible. See above. */}
112
+ <div ref={desktopElement}/>
113
+ {layout === 'desktop' && <StepToRender onDone={() => {setStep('next')}} orderId={orderId} setOrderId={setOrderId}/>}
114
+ </DesktopCP>
115
+ <MobileCP
116
+ clx={cn('w-full h-full overflow-y-auto', clx, 'md:hidden' )}
117
+ onLeave={_close}
118
+ step={stepIndex}
119
+ stepNames={STEP_NAMES}
120
+ >
121
+ {layout === 'mobile' && <StepToRender onDone={() => {setStep('next')}} orderId={orderId} setOrderId={setOrderId}/>}
122
+ </MobileCP>
123
+ </>)
124
+ }
125
+
126
+ export default CheckoutPanel
@@ -0,0 +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
+
67
+ export default MobileCheckoutPanel
@@ -0,0 +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,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,13 +1,13 @@
1
- export default {
2
- itemImgConstraint: { w: 40, h: 24 },
3
- animDurationMs: 400,
4
- animTimingFn: 'cubic-bezier(0.4, 0, 0.2, 1)',
5
- compWidthClx: {
6
- checkout: 'w-pr-40',
7
- itemInfo: 'w-pr-60'
8
- },
9
- shadowStyle: {
10
- border: '1px solid rgb(100 100 100)',
11
- boxShadow: '2px 4px 4px -3px rgb(125 125 125 / 0.7), 4px -4px 8px -4px rgb(125 125 125 / 0.7)'
12
- }
13
- }
1
+ export default {
2
+ itemImgConstraint: { w: 40, h: 24 },
3
+ animDurationMs: 400,
4
+ animTimingFn: 'cubic-bezier(0.4, 0, 0.2, 1)',
5
+ compWidthClx: {
6
+ checkout: 'w-pr-40',
7
+ itemInfo: 'w-pr-60'
8
+ },
9
+ shadowStyle: {
10
+ border: '1px solid rgb(100 100 100)',
11
+ boxShadow: '2px 4px 4px -3px rgb(125 125 125 / 0.7), 4px -4px 8px -4px rgb(125 125 125 / 0.7)'
12
+ }
13
+ }