@luxfi/core 4.3.11 → 4.3.13
Sign up to get free protection for your applications and to get access to all the features.
- package/components/auth/login-panel.tsx +6 -3
- package/components/commerce/checkout-panel/dt-checkout-panel.tsx +26 -41
- package/components/commerce/checkout-panel/index.tsx +1 -10
- package/components/commerce/checkout-panel/mb-checkout-panel.tsx +10 -14
- package/package.json +4 -4
- package/site-def/footer/legal.ts +2 -2
@@ -7,6 +7,7 @@ import { LoginPanel as Login } from '@hanzo/auth/components'
|
|
7
7
|
|
8
8
|
import { Logo } from '..'
|
9
9
|
import LuxLogo from '../icons/lux-logo'
|
10
|
+
import { legal } from '../../site-def/footer'
|
10
11
|
|
11
12
|
const LoginPanel: React.FC<{
|
12
13
|
close: () => void
|
@@ -21,6 +22,9 @@ const LoginPanel: React.FC<{
|
|
21
22
|
className='',
|
22
23
|
reviews
|
23
24
|
}) => {
|
25
|
+
const termsOfServiceUrl = legal.find(({title}) => title === 'Terms and Conditions')?.href || ''
|
26
|
+
const privacyPolicyUrl = legal.find(({title}) => title === 'Privacy Policy')?.href || ''
|
27
|
+
|
24
28
|
return (
|
25
29
|
<div className={cn('grid grid-cols-1 md:grid-cols-2', className)}>
|
26
30
|
<div className='hidden md:flex w-full h-full bg-level-1 flex-row items-end justify-end overflow-y-auto min-h-screen'>
|
@@ -62,13 +66,12 @@ const LoginPanel: React.FC<{
|
|
62
66
|
>
|
63
67
|
<LuxLogo className='w-5 h-5'/>
|
64
68
|
</Button>
|
65
|
-
{/* TODO: add Terms of Service and Privacy Policy links */}
|
66
69
|
<Login
|
67
70
|
getStartedUrl={getStartedUrl}
|
68
71
|
redirectUrl={redirectUrl}
|
69
72
|
className='w-full max-w-sm'
|
70
|
-
termsOfServiceUrl=
|
71
|
-
privacyPolicyUrl=
|
73
|
+
termsOfServiceUrl={termsOfServiceUrl}
|
74
|
+
privacyPolicyUrl={privacyPolicyUrl}
|
72
75
|
/>
|
73
76
|
</div>
|
74
77
|
</div>
|
@@ -1,66 +1,51 @@
|
|
1
1
|
'use client'
|
2
|
+
|
2
3
|
import React, { type PropsWithChildren } from 'react'
|
3
4
|
|
4
|
-
import {
|
5
|
+
import { StepIndicator } from '@hanzo/ui/primitives'
|
5
6
|
import { cn } from '@hanzo/ui/util'
|
6
|
-
import { AuthWidget } from '@hanzo/auth/components'
|
7
7
|
import { CartPanel } from '@hanzo/commerce'
|
8
8
|
|
9
9
|
import * as Icons from '../../icons'
|
10
10
|
import DesktopBagCarousel from './dt-bag-carousel'
|
11
|
-
import CloseButton from './close-button'
|
12
|
-
import LinksRow from './links-row'
|
13
|
-
import StepsIndicator from './steps-indicator'
|
14
11
|
|
15
12
|
const DesktopCheckoutPanel: React.FC<PropsWithChildren & {
|
16
13
|
index: number
|
17
14
|
stepNames: string[]
|
18
|
-
close:() => void
|
19
15
|
className?: string
|
20
16
|
}> = ({
|
21
17
|
index,
|
22
18
|
stepNames,
|
23
|
-
close,
|
24
19
|
className='',
|
25
20
|
children
|
26
21
|
}) => (
|
27
22
|
|
28
23
|
<div /* id='CHECKOUT_PANEL' */ className={cn('grid grid-cols-2', className)}>
|
29
|
-
<
|
30
|
-
<div className='
|
31
|
-
<
|
32
|
-
|
33
|
-
<div className='flex flex-col gap-3 h-30 justify-center'>
|
34
|
-
<CloseButton close={close} />
|
35
|
-
<StepsIndicator currentStep={index} stepNames={stepNames}/>
|
36
|
-
</div>
|
37
|
-
{children}
|
38
|
-
<LinksRow className='mt-auto mb-3' />
|
39
|
-
</div>
|
40
|
-
</div>
|
41
|
-
</div>
|
42
|
-
</ScrollArea>
|
43
|
-
<div className='w-full h-full bg-background flex flex-row items-start justify-start'>
|
44
|
-
<div className='w-full max-w-[750px] relative flex flex-col items-center justify-start px-8 pt-0'>
|
45
|
-
<AuthWidget noLogin className='hidden md:flex absolute top-4 right-4 '/>
|
46
|
-
<div className='flex items-center justify-center h-30'>
|
47
|
-
<Icons.bag className='fill-foreground mr-2 relative -top-1 w-6 h-7'/>
|
48
|
-
<p className='font-heading text-default'>Order Summary</p>
|
49
|
-
</div>
|
50
|
-
<div className='w-full max-w-[550px] mx-auto'>
|
51
|
-
<DesktopBagCarousel className='h-[260px] w-[360px] lg:w-[420px] mx-auto -mt-8' constrainTo={{w: 250, h: 250}}/>
|
52
|
-
<CartPanel
|
53
|
-
className='w-full border-none p-0 pr-3'
|
54
|
-
itemClx='mb-3'
|
55
|
-
totalClx='sticky bottom-0 p-1 bg-background'
|
56
|
-
scrollAfter={5}
|
57
|
-
scrollHeightClx='h-[50vh]'
|
58
|
-
selectItems
|
59
|
-
showPromoCode
|
60
|
-
showShipping
|
61
|
-
/>
|
62
|
-
</div>
|
24
|
+
<div className='w-full h-full flex flex-col items-center py-8 px-10'>
|
25
|
+
<div className='flex items-center justify-center pt-2'>
|
26
|
+
<Icons.bag className='fill-foreground mr-2 relative -top-1 w-6 h-7'/>
|
27
|
+
<p className='font-heading text-default'>Order Summary</p>
|
63
28
|
</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
|
+
</div>
|
41
|
+
<div className='w-full h-full flex flex-col gap-3 min-h-screen items-center py-8 px-10 bg-level-1'>
|
42
|
+
<StepIndicator
|
43
|
+
dotSizeRem={1.2}
|
44
|
+
steps={stepNames}
|
45
|
+
currentStep={index}
|
46
|
+
className='gap-2 text-sm w-pr-70'
|
47
|
+
/>
|
48
|
+
{children}
|
64
49
|
</div>
|
65
50
|
</div>
|
66
51
|
)
|
@@ -30,10 +30,8 @@ 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
|
34
33
|
className?: string
|
35
34
|
}> = ({
|
36
|
-
close,
|
37
35
|
className=''
|
38
36
|
}) => {
|
39
37
|
|
@@ -74,11 +72,6 @@ const CheckoutPanel: React.FC<{
|
|
74
72
|
}
|
75
73
|
}
|
76
74
|
|
77
|
-
const _close = () => {
|
78
|
-
setStep('first')
|
79
|
-
close()
|
80
|
-
}
|
81
|
-
|
82
75
|
// Determine if mobile or desktop based on visibility of desktopElement
|
83
76
|
// https://stackoverflow.com/a/21696585/11378853
|
84
77
|
const desktopElement = useRef<HTMLDivElement | null>(null)
|
@@ -101,8 +94,7 @@ const CheckoutPanel: React.FC<{
|
|
101
94
|
|
102
95
|
return (<>
|
103
96
|
<DesktopCP
|
104
|
-
className={cn('h-full', className, 'hidden md:
|
105
|
-
close={_close}
|
97
|
+
className={cn('h-full', className, 'hidden md:grid')}
|
106
98
|
index={stepIndex}
|
107
99
|
stepNames={STEP_NAMES}
|
108
100
|
>
|
@@ -112,7 +104,6 @@ const CheckoutPanel: React.FC<{
|
|
112
104
|
</DesktopCP>
|
113
105
|
<MobileCP
|
114
106
|
className={cn('h-full overflow-y-auto', className, 'md:hidden' )}
|
115
|
-
close={_close}
|
116
107
|
index={stepIndex}
|
117
108
|
stepNames={STEP_NAMES}
|
118
109
|
>
|
@@ -1,35 +1,32 @@
|
|
1
1
|
'use client'
|
2
|
+
|
2
3
|
import React, { type PropsWithChildren } from 'react'
|
3
4
|
|
4
5
|
import { cn } from '@hanzo/ui/util'
|
5
|
-
import { AuthWidget } from '@hanzo/auth/components'
|
6
6
|
import { CartAccordian } from '@hanzo/commerce'
|
7
7
|
|
8
|
-
import CloseButton from './close-button'
|
9
8
|
import BagButton from '../bag-button'
|
10
|
-
import
|
11
|
-
import StepsIndicator from './steps-indicator'
|
9
|
+
import { StepIndicator } from '@hanzo/ui/primitives'
|
12
10
|
|
13
11
|
const MobileCheckoutPanel: React.FC<PropsWithChildren & {
|
14
12
|
index: number
|
15
13
|
stepNames: string[]
|
16
|
-
close:() => void
|
17
14
|
className?: string
|
18
15
|
}> = ({
|
19
16
|
index,
|
20
17
|
stepNames,
|
21
|
-
close,
|
22
18
|
className='',
|
23
19
|
children
|
24
20
|
}) => (
|
25
21
|
|
26
|
-
<div /* id='MOBILE_GRID' */ className={cn('
|
27
|
-
<
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
22
|
+
<div /* id='MOBILE_GRID' */ className={cn('flex flex-col items-center justify-start px-4 pt-11', className)}>
|
23
|
+
<StepIndicator
|
24
|
+
dotSizeRem={0.8}
|
25
|
+
steps={stepNames}
|
26
|
+
currentStep={index}
|
27
|
+
className='text-xs w-full'
|
28
|
+
muted
|
29
|
+
/>
|
33
30
|
<CartAccordian
|
34
31
|
icon={
|
35
32
|
<BagButton
|
@@ -44,7 +41,6 @@ const MobileCheckoutPanel: React.FC<PropsWithChildren & {
|
|
44
41
|
className='flex items-center justify-center py-2 w-full'
|
45
42
|
/>
|
46
43
|
{children}
|
47
|
-
<LinksRow className='mt-auto mb-3 pt-2' />
|
48
44
|
</div>
|
49
45
|
)
|
50
46
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@luxfi/core",
|
3
|
-
"version": "4.3.
|
3
|
+
"version": "4.3.13",
|
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/",
|
@@ -19,7 +19,7 @@
|
|
19
19
|
"luxdefi"
|
20
20
|
],
|
21
21
|
"scripts": {
|
22
|
-
"lat": "npm show @luxfi/
|
22
|
+
"lat": "npm show @luxfi/core version",
|
23
23
|
"pub": "npm publish",
|
24
24
|
"build": "tsc",
|
25
25
|
"tc": "tsc",
|
@@ -39,8 +39,8 @@
|
|
39
39
|
"./conf": "./conf/index.ts"
|
40
40
|
},
|
41
41
|
"dependencies": {
|
42
|
-
"@hanzo/auth": "2.3.
|
43
|
-
"@hanzo/commerce": "6.3.
|
42
|
+
"@hanzo/auth": "2.3.6",
|
43
|
+
"@hanzo/commerce": "6.3.3",
|
44
44
|
"@hanzo/ui": "3.6.3",
|
45
45
|
"@next/third-parties": "^14.1.0",
|
46
46
|
"embla-carousel-autoplay": "^8.0.1",
|
package/site-def/footer/legal.ts
CHANGED
@@ -3,12 +3,12 @@ import type { LinkDef } from '@hanzo/ui/types'
|
|
3
3
|
const legal: LinkDef[] = [
|
4
4
|
{
|
5
5
|
title: 'Terms and Conditions',
|
6
|
-
href: '/
|
6
|
+
href: 'https://docs.google.com/document/d/1mvkjr1w8Rv8ttirs1mu-_2fw_PXclOyS/preview',
|
7
7
|
newTab: true,
|
8
8
|
},
|
9
9
|
{
|
10
10
|
title: 'Privacy Policy',
|
11
|
-
href: '/
|
11
|
+
href: 'https://docs.google.com/document/d/1vZjOKaNdOoThDIaVLERWxflQLtOsuvLn/preview',
|
12
12
|
newTab: true,
|
13
13
|
},
|
14
14
|
]
|