@luxfi/core 4.3.14 → 4.3.17
Sign up to get free protection for your applications and to get access to all the features.
- package/components/commerce/bag-button.tsx +1 -1
- package/components/commerce/checkout-panel/close-button.tsx +4 -1
- package/components/commerce/checkout-panel/dt-checkout-panel.tsx +41 -27
- package/components/commerce/checkout-panel/index.tsx +12 -3
- package/components/commerce/checkout-panel/links-row.tsx +2 -2
- package/components/commerce/checkout-panel/mb-checkout-panel.tsx +21 -12
- package/components/commerce/desktop-bag-popup.tsx +1 -1
- package/components/commerce/mobile-bag-drawer.tsx +1 -1
- package/components/icons/bag-icon.tsx +2 -2
- package/next/font/load-and-return-lux-next-fonts-on-import.ts +1 -7
- package/package.json +1 -1
- package/next/font/local/GeistMonoVF.ttf +0 -0
- package/next/font/local/GeistMonoVF.woff +0 -0
- package/next/font/local/GeistMonoVF.woff2 +0 -0
- package/next/font/local/GeistVF.ttf +0 -0
- package/next/font/local/GeistVF.woff +0 -0
- package/next/font/local/GeistVF.woff2 +0 -0
@@ -47,7 +47,7 @@ const BagButton: React.FC<{
|
|
47
47
|
<div className={
|
48
48
|
'z-above-content flex flex-col justify-center items-center ' +
|
49
49
|
'absolute left-0 right-0 top-0 bottom-0 ' +
|
50
|
-
'leading-none font-sans font-bold text-
|
50
|
+
'leading-none font-sans font-bold text-foreground text-xs '
|
51
51
|
}>
|
52
52
|
<div className='h-[3px] w-full' />
|
53
53
|
<div>{c.cartQuantity}</div>
|
@@ -4,19 +4,22 @@ import React from 'react'
|
|
4
4
|
import { cn } from '@hanzo/ui/util'
|
5
5
|
|
6
6
|
import Logo from '../../logo'
|
7
|
+
import type { TShirtSize } from '@hanzo/ui/types'
|
7
8
|
|
8
9
|
const CloseButton: React.FC<{
|
9
10
|
close: () => void
|
11
|
+
size?: TShirtSize
|
10
12
|
className?: string
|
11
13
|
}> = ({
|
12
14
|
close,
|
15
|
+
size,
|
13
16
|
className=''
|
14
17
|
}) => (
|
15
18
|
<div
|
16
19
|
onClick={close}
|
17
20
|
className={cn('md:self-start', className)}
|
18
21
|
>
|
19
|
-
<Logo layout='text-only' href='/'/>
|
22
|
+
<Logo layout='text-only' href='/' size={size}/>
|
20
23
|
</div>
|
21
24
|
)
|
22
25
|
|
@@ -1,53 +1,67 @@
|
|
1
1
|
'use client'
|
2
|
-
|
3
2
|
import React, { type PropsWithChildren } from 'react'
|
4
3
|
|
5
|
-
import { StepIndicator } from '@hanzo/ui/primitives'
|
6
|
-
import {
|
4
|
+
import { ScrollArea, StepIndicator } from '@hanzo/ui/primitives'
|
5
|
+
import { AuthWidget } from '@hanzo/auth/components'
|
7
6
|
import { CartPanel } from '@hanzo/commerce'
|
8
7
|
|
9
8
|
import * as Icons from '../../icons'
|
10
9
|
import DesktopBagCarousel from './dt-bag-carousel'
|
10
|
+
import CloseButton from './close-button'
|
11
|
+
import { cn } from '@hanzo/ui/util'
|
12
|
+
import LinksRow from './links-row'
|
11
13
|
|
12
14
|
const DesktopCheckoutPanel: React.FC<PropsWithChildren & {
|
13
15
|
index: number
|
14
16
|
stepNames: string[]
|
17
|
+
close:() => void
|
15
18
|
className?: string
|
16
19
|
}> = ({
|
17
20
|
index,
|
18
21
|
stepNames,
|
22
|
+
close,
|
19
23
|
className='',
|
20
24
|
children
|
21
25
|
}) => (
|
22
26
|
|
23
27
|
<div /* id='CHECKOUT_PANEL' */ className={cn('grid grid-cols-2', className)}>
|
24
|
-
<div className='w-full h-full flex flex-
|
25
|
-
<div className='flex items-center justify-
|
26
|
-
<
|
27
|
-
<
|
28
|
+
<div className='w-full h-full bg-background flex flex-row items-start justify-end'>
|
29
|
+
<div className='w-full max-w-[750px] relative flex flex-col items-center justify-start p-8'>
|
30
|
+
<CloseButton close={close} size='md'/>
|
31
|
+
<div className='w-full max-w-[550px] mx-auto flex flex-col gap-3'>
|
32
|
+
<DesktopBagCarousel className='h-[260px] w-[360px] lg:w-[420px] mx-auto -mt-8' constrainTo={{w: 250, h: 250}}/>
|
33
|
+
<CartPanel
|
34
|
+
className='w-full border-none p-0'
|
35
|
+
itemClx='mb-3'
|
36
|
+
totalClx='sticky -bottom-1 p-1 bg-background'
|
37
|
+
listClx='pr-3'
|
38
|
+
scrollAfter={5}
|
39
|
+
scrollHeightClx='h-[50vh]'
|
40
|
+
showPromoCode
|
41
|
+
showShipping
|
42
|
+
/>
|
43
|
+
</div>
|
28
44
|
</div>
|
29
|
-
<DesktopBagCarousel className='mx-auto' constrainTo={{w: 250, h: 250}}/>
|
30
|
-
<CartPanel
|
31
|
-
className='w-full border-none p-0 pr-3'
|
32
|
-
itemClx='mb-3'
|
33
|
-
totalClx='sticky -bottom-1 p-1 bg-background'
|
34
|
-
scrollAfter={5}
|
35
|
-
scrollHeightClx='h-[45vh]'
|
36
|
-
selectItems
|
37
|
-
showPromoCode
|
38
|
-
showShipping
|
39
|
-
/>
|
40
45
|
</div>
|
41
|
-
<div className='w-full h-full flex flex-col
|
42
|
-
<
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
<div className='w-full h-full flex flex-col bg-level-1 min-h-screen justify-between'>
|
47
|
+
<ScrollArea className='w-full flex flex-row items-start justify-start overflow-y-auto'>
|
48
|
+
<div className='h-full w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0'>
|
49
|
+
<div className='bg-level-1 sticky h-30 pb-8 w-full top-0 flex justify-center items-end'>
|
50
|
+
<AuthWidget noLogin className='hidden md:flex absolute top-4 right-4 '/>
|
51
|
+
<StepIndicator dotSizeRem={1.5} steps={stepNames} currentStep={index} className='gap-2 text-base w-pr-70' />
|
52
|
+
</div>
|
53
|
+
<div className='w-full max-w-[550px] mx-auto pb-10'>
|
54
|
+
{children}
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
</ScrollArea>
|
58
|
+
<div className='w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0'>
|
59
|
+
<div className='w-full max-w-[550px] mx-auto flex flex-col items-center'>
|
60
|
+
<LinksRow className='w-full' />
|
61
|
+
</div>
|
62
|
+
</div>
|
49
63
|
</div>
|
50
64
|
</div>
|
51
65
|
)
|
52
66
|
|
53
|
-
export default DesktopCheckoutPanel
|
67
|
+
export default DesktopCheckoutPanel
|
@@ -30,8 +30,10 @@ import DesktopCP from './dt-checkout-panel'
|
|
30
30
|
import MobileCP from './mb-checkout-panel'
|
31
31
|
|
32
32
|
const CheckoutPanel: React.FC<{
|
33
|
+
close: () => void
|
33
34
|
className?: string
|
34
35
|
}> = ({
|
36
|
+
close,
|
35
37
|
className=''
|
36
38
|
}) => {
|
37
39
|
|
@@ -72,6 +74,11 @@ const CheckoutPanel: React.FC<{
|
|
72
74
|
}
|
73
75
|
}
|
74
76
|
|
77
|
+
const _close = () => {
|
78
|
+
setStep('first')
|
79
|
+
close()
|
80
|
+
}
|
81
|
+
|
75
82
|
// Determine if mobile or desktop based on visibility of desktopElement
|
76
83
|
// https://stackoverflow.com/a/21696585/11378853
|
77
84
|
const desktopElement = useRef<HTMLDivElement | null>(null)
|
@@ -90,11 +97,12 @@ const CheckoutPanel: React.FC<{
|
|
90
97
|
}
|
91
98
|
}, [])
|
92
99
|
|
93
|
-
const StepToRender = STEPS[stepIndex].Comp
|
100
|
+
const StepToRender = STEPS[stepIndex].Comp
|
94
101
|
|
95
102
|
return (<>
|
96
103
|
<DesktopCP
|
97
|
-
className={cn('h-full', className, 'hidden md:
|
104
|
+
className={cn('h-full', className, 'hidden md:flex')}
|
105
|
+
close={_close}
|
98
106
|
index={stepIndex}
|
99
107
|
stepNames={STEP_NAMES}
|
100
108
|
>
|
@@ -104,6 +112,7 @@ const CheckoutPanel: React.FC<{
|
|
104
112
|
</DesktopCP>
|
105
113
|
<MobileCP
|
106
114
|
className={cn('h-full overflow-y-auto', className, 'md:hidden' )}
|
115
|
+
close={_close}
|
107
116
|
index={stepIndex}
|
108
117
|
stepNames={STEP_NAMES}
|
109
118
|
>
|
@@ -112,4 +121,4 @@ const CheckoutPanel: React.FC<{
|
|
112
121
|
</>)
|
113
122
|
}
|
114
123
|
|
115
|
-
export default CheckoutPanel
|
124
|
+
export default CheckoutPanel
|
@@ -9,8 +9,8 @@ const LinksRow: React.FC<{
|
|
9
9
|
className=''
|
10
10
|
}) => (
|
11
11
|
<div className={cn('flex flex-col', className)}>
|
12
|
-
<Separator
|
13
|
-
<div className='flex gap-4 text-sm'>
|
12
|
+
<Separator/>
|
13
|
+
<div className='flex gap-4 text-sm py-2'>
|
14
14
|
{/* TODO: add Refund policy and Privacy policy links */}
|
15
15
|
<Link href=''>Refund policy</Link>
|
16
16
|
<Link href=''>Privacy policy</Link>
|
@@ -1,32 +1,34 @@
|
|
1
1
|
'use client'
|
2
|
-
|
3
2
|
import React, { type PropsWithChildren } from 'react'
|
4
3
|
|
4
|
+
import { StepIndicator } from '@hanzo/ui/primitives'
|
5
5
|
import { cn } from '@hanzo/ui/util'
|
6
|
+
import { AuthWidget } from '@hanzo/auth/components'
|
6
7
|
import { CartAccordian } from '@hanzo/commerce'
|
7
8
|
|
9
|
+
import CloseButton from './close-button'
|
8
10
|
import BagButton from '../bag-button'
|
9
|
-
import
|
11
|
+
import LinksRow from './links-row'
|
10
12
|
|
11
13
|
const MobileCheckoutPanel: React.FC<PropsWithChildren & {
|
12
14
|
index: number
|
13
15
|
stepNames: string[]
|
16
|
+
close:() => void
|
14
17
|
className?: string
|
15
18
|
}> = ({
|
16
19
|
index,
|
17
20
|
stepNames,
|
21
|
+
close,
|
18
22
|
className='',
|
19
23
|
children
|
20
24
|
}) => (
|
21
25
|
|
22
|
-
<div /* id='MOBILE_GRID' */ className={cn('flex flex-col
|
23
|
-
<
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
muted
|
29
|
-
/>
|
26
|
+
<div /* id='MOBILE_GRID' */ className={cn('bg-background flex flex-col justify-start px-4', className)}>
|
27
|
+
<div className='sticky top-0 w-full flex flex-row justify-between items-center bg-background'>
|
28
|
+
<CloseButton close={close} size='xs' />
|
29
|
+
{/* Need wrapper div since 'noLogin' returns null if no logged in user */}
|
30
|
+
<div className='w-10 h-10 flex items-center justify-center'><AuthWidget noLogin className=''/></div>
|
31
|
+
</div>
|
30
32
|
<CartAccordian
|
31
33
|
icon={
|
32
34
|
<BagButton
|
@@ -38,10 +40,17 @@ const MobileCheckoutPanel: React.FC<PropsWithChildren & {
|
|
38
40
|
iconClx='fill-foreground '
|
39
41
|
/>
|
40
42
|
}
|
41
|
-
className='flex items-center justify-center
|
43
|
+
className='flex items-center justify-center w-full'
|
44
|
+
/>
|
45
|
+
<StepIndicator
|
46
|
+
dotSizeRem={1}
|
47
|
+
steps={stepNames}
|
48
|
+
currentStep={index}
|
49
|
+
className='text-xs font-semibold w-full pb-3'
|
42
50
|
/>
|
43
51
|
{children}
|
52
|
+
<LinksRow className='mt-auto mb-3 pt-2' />
|
44
53
|
</div>
|
45
54
|
)
|
46
55
|
|
47
|
-
export default MobileCheckoutPanel
|
56
|
+
export default MobileCheckoutPanel
|
@@ -57,7 +57,7 @@ const DesktopBagPopup: React.FC<{
|
|
57
57
|
<CartPanel
|
58
58
|
handleCheckout={() => {router.push('/checkout')}}
|
59
59
|
className='mt-4 mb-4 border-none py-0 px-4'
|
60
|
-
listClx='rounded-sm'
|
60
|
+
listClx='rounded-sm pr-3'
|
61
61
|
scrollAfter={5}
|
62
62
|
scrollHeightClx='h-[70vh]'
|
63
63
|
itemClx='mt-3'
|
@@ -25,7 +25,7 @@ const MobileBagDrawer: React.FC<{
|
|
25
25
|
<CartPanel
|
26
26
|
handleCheckout={handleCheckout}
|
27
27
|
className='mt-4 mb-4 border-none py-0 px-4 w-full '
|
28
|
-
listClx='rounded-sm'
|
28
|
+
listClx='rounded-sm pr-3'
|
29
29
|
scrollAfter={5}
|
30
30
|
itemClx='mt-2'
|
31
31
|
totalClx='sticky px-1 pr-2 border rounded-sm -bottom-[1px] bg-background'
|
@@ -2,8 +2,8 @@ import React from 'react'
|
|
2
2
|
import { type LucideProps } from 'lucide-react'
|
3
3
|
|
4
4
|
const BagIcon: React.FC<LucideProps> = (props: LucideProps) => (
|
5
|
-
<svg fill="
|
6
|
-
<path
|
5
|
+
<svg fill="none" viewBox="0 0 15 18" {...props}>
|
6
|
+
<path d="m13.6501 5.19282h-2.3255v-.82146c0-2.01258-1.74959-3.634971-3.87568-3.634971s-3.87572 1.622401-3.87572 3.634971v.82146h-2.32543c-.31008 0-.553678.22588-.553678.51341v10.26827c0 .7393.642278 1.3349 1.439548 1.3349h10.63056c.7973 0 1.4395-.5956 1.4395-1.3349v-10.26827c0-.28753-.2436-.51341-.5536-.51341zm-8.96955-.84198c0-1.43756 1.24021-2.60814 2.76837-2.60814 1.52815 0 2.76838 1.17055 2.76838 2.60814v.82146h-5.53675zm8.08365 11.93176h-10.63056c-.1772 0-.3322-.1438-.3322-.3081v-9.75484h1.77176v2.83405c0 .28753.2436.51341.55367.51341.31008 0 .55368-.22588.55368-.51341v-2.83405h5.53675v2.83405c0 .28753.2436.51341.5537.51341.31 0 .5536-.22588.5536-.51341v-2.83405h1.7718v9.75484c0 .1643-.155.3081-.3322.3081z" fill="currentColor"/>
|
7
7
|
</svg>
|
8
8
|
)
|
9
9
|
|
@@ -33,17 +33,11 @@ const drukWide = localFont({
|
|
33
33
|
})
|
34
34
|
|
35
35
|
const inter = localFont({
|
36
|
-
src: './local/
|
36
|
+
src: './local/InterVariable.ttf',
|
37
37
|
display: 'swap',
|
38
38
|
variable: '--font-inter',
|
39
39
|
})
|
40
40
|
|
41
|
-
//const inter = localFont({
|
42
|
-
// src: './local/InterVariable.ttf',
|
43
|
-
// display: 'swap',
|
44
|
-
// variable: '--font-inter',
|
45
|
-
//})
|
46
|
-
|
47
41
|
export default [
|
48
42
|
{
|
49
43
|
font: inter,
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@luxfi/core",
|
3
|
-
"version": "4.3.
|
3
|
+
"version": "4.3.17",
|
4
4
|
"description": "Library that contains shared UI primitives, support for a common design system, and other boilerplate support.",
|
5
5
|
"publishConfig": {
|
6
6
|
"registry": "https://registry.npmjs.org/",
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|