@luxfi/core 4.4.18 → 4.5.0
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/components/auth/login-panel.tsx +5 -4
- package/components/index.ts +2 -4
- package/components/scripts.tsx +1 -0
- package/package.json +7 -9
- package/root-layout/WHY_THIS_IS_SEPARATE.txt +2 -0
- package/root-layout/index.tsx +113 -0
- package/server-actions/TO-DO.txt +1 -0
- package/style/lux-global.css +1 -1
- package/components/root-layout.tsx +0 -71
@@ -1,6 +1,8 @@
|
|
1
1
|
'use client'
|
2
2
|
|
3
3
|
import Link from 'next/link'
|
4
|
+
import { useRouter } from 'next/navigation'
|
5
|
+
|
4
6
|
import Autoplay from 'embla-carousel-autoplay'
|
5
7
|
import { setCookie } from 'cookies-next'
|
6
8
|
|
@@ -8,10 +10,9 @@ import { cn } from '@hanzo/ui/util'
|
|
8
10
|
import { Button, Carousel, CarouselContent, CarouselItem } from '@hanzo/ui/primitives'
|
9
11
|
import { LoginPanel as Login } from '@hanzo/auth/components'
|
10
12
|
|
11
|
-
import
|
13
|
+
import Logo from '../logo'
|
12
14
|
import LuxLogo from '../icons/lux-logo'
|
13
15
|
import { legal } from '../../site-def/footer'
|
14
|
-
import { useRouter } from 'next/navigation'
|
15
16
|
|
16
17
|
const LoginPanel: React.FC<{
|
17
18
|
close: () => void
|
@@ -44,7 +45,7 @@ const LoginPanel: React.FC<{
|
|
44
45
|
redirectUrl && router.push(redirectUrl)
|
45
46
|
}
|
46
47
|
|
47
|
-
return (
|
48
|
+
return (
|
48
49
|
<div className={cn('grid grid-cols-1 md:grid-cols-2', className)}>
|
49
50
|
<div className='hidden md:flex w-full h-full bg-level-1 flex-row items-end justify-end overflow-y-auto min-h-screen'>
|
50
51
|
<div className='h-full w-full max-w-[750px] px-8 pt-0'>
|
@@ -97,7 +98,7 @@ const LoginPanel: React.FC<{
|
|
97
98
|
</div>
|
98
99
|
</div>
|
99
100
|
</div>
|
100
|
-
|
101
|
+
)
|
101
102
|
}
|
102
103
|
|
103
104
|
export default LoginPanel
|
package/components/index.ts
CHANGED
@@ -8,14 +8,12 @@ export * as Icons from './icons'
|
|
8
8
|
export { default as Logo } from './logo'
|
9
9
|
export { default as MiniChart } from './mini-chart'
|
10
10
|
export { default as NotFound } from './not-found'
|
11
|
-
|
12
|
-
default as RootLayout,
|
13
|
-
viewport as rootLayoutViewport
|
14
|
-
} from './root-layout'
|
11
|
+
|
15
12
|
|
16
13
|
export { default as CheckoutPanel } from './commerce/checkout-panel'
|
17
14
|
export { default as LoginPanel } from './auth/login-panel'
|
18
15
|
export { default as AuthListener } from './auth/auth-listener'
|
16
|
+
export { default as Scripts } from './scripts'
|
19
17
|
|
20
18
|
|
21
19
|
/* PLEASE KEEP
|
package/components/scripts.tsx
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@luxfi/core",
|
3
|
-
"version": "4.
|
3
|
+
"version": "4.5.0",
|
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/",
|
@@ -10,7 +10,7 @@
|
|
10
10
|
"repository": {
|
11
11
|
"type": "git",
|
12
12
|
"url": "git+https://github.com/luxfi/web.git",
|
13
|
-
"directory": "packages/
|
13
|
+
"directory": "packages/core"
|
14
14
|
},
|
15
15
|
"keywords": [
|
16
16
|
"components",
|
@@ -23,14 +23,11 @@
|
|
23
23
|
"pub": "npm publish",
|
24
24
|
"build": "tsc",
|
25
25
|
"tc": "tsc",
|
26
|
-
"ln:ui": "pnpm link -g @hanzo/ui",
|
27
|
-
"ln:auth": "pnpm link -g @hanzo/auth",
|
28
|
-
"ln:cmmc": "pnpm link -g @hanzo/commerce",
|
29
|
-
"ul:all": "rm node_modules/@hanzo/*",
|
30
26
|
"clean": "rm -rf node_modules"
|
31
27
|
},
|
32
28
|
"exports": {
|
33
29
|
".": "./components/index.ts",
|
30
|
+
"./root-layout": "./root-layout/index.tsx",
|
34
31
|
"./server-actions": "./server-actions/index.ts",
|
35
32
|
"./next": "./next/index.ts",
|
36
33
|
"./style/": "./style/",
|
@@ -39,11 +36,12 @@
|
|
39
36
|
"./conf": "./conf/index.ts"
|
40
37
|
},
|
41
38
|
"dependencies": {
|
42
|
-
"@hanzo/auth": "2.4.
|
43
|
-
"@hanzo/commerce": "6.4.
|
44
|
-
"@hanzo/ui": "3.6.
|
39
|
+
"@hanzo/auth": "2.4.5",
|
40
|
+
"@hanzo/commerce": "6.4.6",
|
41
|
+
"@hanzo/ui": "3.6.4",
|
45
42
|
"@next/third-parties": "^14.1.0",
|
46
43
|
"cookies-next": "^4.1.1",
|
44
|
+
"date-fns": "^3.6.0",
|
47
45
|
"embla-carousel-autoplay": "^8.0.1",
|
48
46
|
"react-device-detect": "^2.2.3",
|
49
47
|
"react-social-icons": "^6.4.0"
|
@@ -0,0 +1,113 @@
|
|
1
|
+
import React, { type PropsWithChildren } from 'react'
|
2
|
+
import type { Viewport } from 'next'
|
3
|
+
|
4
|
+
import { Toaster } from '@hanzo/ui/primitives'
|
5
|
+
import { AuthServiceProvider } from '@hanzo/auth/service'
|
6
|
+
import { getUserServerSide } from '@hanzo/auth/server'
|
7
|
+
import type { AuthServiceConf } from '@hanzo/auth/types'
|
8
|
+
import { CommerceProvider } from '@hanzo/commerce'
|
9
|
+
|
10
|
+
import getAppRouterBodyFontClasses from '../next/font/get-app-router-font-classes'
|
11
|
+
import { FacebookPixelHead } from '../next/analytics/pixel-analytics'
|
12
|
+
|
13
|
+
import { AuthListener, ChatWidget, Header, Scripts } from '../components'
|
14
|
+
|
15
|
+
import { selectionUISpecifiers } from '../conf'
|
16
|
+
import type SiteDef from '../site-def/site-def'
|
17
|
+
|
18
|
+
|
19
|
+
// Next 14: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#use-viewport-export
|
20
|
+
const viewport = {
|
21
|
+
themeColor: [
|
22
|
+
{ media: '(prefers-color-scheme: light)', color: 'white' },
|
23
|
+
{ media: '(prefers-color-scheme: dark)', color: 'black' },
|
24
|
+
],
|
25
|
+
} satisfies Viewport
|
26
|
+
|
27
|
+
/*
|
28
|
+
These '.variable' fields are actually autogenerate css classnames that *define* the actual
|
29
|
+
css variables ('--<ugly-name>') that one asks for in the tailwind classes.
|
30
|
+
They are what make them available in the global scope. So this MUST
|
31
|
+
be done like this for the tailwind font classes to work.
|
32
|
+
|
33
|
+
(...not to be confused with the css var itself. This field should be named something else!)
|
34
|
+
*/
|
35
|
+
|
36
|
+
/*
|
37
|
+
re body: overflow-y-hidden overflow-x-hidden, h-full
|
38
|
+
We cannot have these on body tag for scroll-snap to work on iOS!
|
39
|
+
*/
|
40
|
+
const bodyClasses =
|
41
|
+
'bg-background text-foreground flex flex-col min-h-full' +
|
42
|
+
getAppRouterBodyFontClasses()
|
43
|
+
|
44
|
+
const RootLayout: React.FC<PropsWithChildren & {
|
45
|
+
siteDef: SiteDef
|
46
|
+
showHeader?: boolean
|
47
|
+
chatbot?: boolean
|
48
|
+
}> = async ({
|
49
|
+
showHeader = false,
|
50
|
+
chatbot = true,
|
51
|
+
siteDef,
|
52
|
+
children,
|
53
|
+
}) => {
|
54
|
+
|
55
|
+
const currentUser = await getUserServerSide()
|
56
|
+
const usingCommerce = siteDef.ext.commerce && siteDef.ext.commerce.rootNode && siteDef.ext.commerce.families
|
57
|
+
|
58
|
+
const Guts: React.FC = () => (<>
|
59
|
+
{showHeader && <Header siteDef={siteDef}/>}
|
60
|
+
{children}
|
61
|
+
{chatbot && (
|
62
|
+
<ChatWidget
|
63
|
+
title='LUX'
|
64
|
+
subtitle='AI'
|
65
|
+
chatbotUrl='https://lux.chat/iframe'
|
66
|
+
suggestedQuestions={siteDef.ext?.chatBot?.suggestedQuestions ?? []}
|
67
|
+
/>
|
68
|
+
)}
|
69
|
+
</>)
|
70
|
+
|
71
|
+
return (
|
72
|
+
<html lang='en' suppressHydrationWarning className='hanzo-ui-dark-theme' style={{backgroundColor: '#000'}}>
|
73
|
+
<head >
|
74
|
+
{/* https://stackoverflow.com/a/75716588/11645689 */ }
|
75
|
+
<base target='_blank' />
|
76
|
+
<FacebookPixelHead/>
|
77
|
+
</head>
|
78
|
+
|
79
|
+
<body className={bodyClasses} style={{
|
80
|
+
// Not sure why these got added (by my commit)
|
81
|
+
|
82
|
+
// As also noted above, 'overflow: hidden' on the <body> tag breaks scroll snap!
|
83
|
+
//paddingRight: '0 !important',
|
84
|
+
//maxWidth: '100vw',
|
85
|
+
display: 'none', // see scripts.tsx
|
86
|
+
|
87
|
+
}}>
|
88
|
+
<Scripts/>
|
89
|
+
<AuthServiceProvider user={currentUser} conf={{} as AuthServiceConf}>
|
90
|
+
{usingCommerce ? (
|
91
|
+
<CommerceProvider
|
92
|
+
rootNode={siteDef.ext.commerce.rootNode}
|
93
|
+
families={siteDef.ext.commerce.families}
|
94
|
+
options={siteDef.ext.commerce.options}
|
95
|
+
uiSpecs={selectionUISpecifiers}
|
96
|
+
>
|
97
|
+
<Guts />
|
98
|
+
</CommerceProvider>
|
99
|
+
) : (
|
100
|
+
<Guts />
|
101
|
+
)}
|
102
|
+
<AuthListener/>
|
103
|
+
</AuthServiceProvider>
|
104
|
+
<Toaster position='top-center' duration={3000}/>
|
105
|
+
</body>
|
106
|
+
</html>
|
107
|
+
)
|
108
|
+
}
|
109
|
+
|
110
|
+
export {
|
111
|
+
RootLayout,
|
112
|
+
viewport
|
113
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
move login and logout api routes here!
|
package/style/lux-global.css
CHANGED
@@ -1,71 +0,0 @@
|
|
1
|
-
import React, { type PropsWithChildren } from 'react'
|
2
|
-
|
3
|
-
import type { Viewport } from 'next'
|
4
|
-
|
5
|
-
import { Toaster } from '@hanzo/ui/primitives'
|
6
|
-
|
7
|
-
import Header from './header'
|
8
|
-
import type SiteDef from '../site-def/site-def'
|
9
|
-
import getAppRouterBodyFontClasses from '../next/font/get-app-router-font-classes'
|
10
|
-
import { FacebookPixelHead } from '../next/analytics/pixel-analytics'
|
11
|
-
import Scripts from './scripts'
|
12
|
-
|
13
|
-
// Next 14: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#use-viewport-export
|
14
|
-
const viewport = {
|
15
|
-
themeColor: [
|
16
|
-
{ media: '(prefers-color-scheme: light)', color: 'white' },
|
17
|
-
{ media: '(prefers-color-scheme: dark)', color: 'black' },
|
18
|
-
],
|
19
|
-
} satisfies Viewport
|
20
|
-
|
21
|
-
/*
|
22
|
-
These '.variable' fields are actually autogenerate css classnames that *define* the actual
|
23
|
-
css variables ('--<ugly-name>') that one asks for in the tailwind classes.
|
24
|
-
They are what make them available in the global scope. So this MUST
|
25
|
-
be done like this for the tailwind font classes to work.
|
26
|
-
|
27
|
-
(...not to be confused with the css var itself. This field should be named something else!)
|
28
|
-
*/
|
29
|
-
|
30
|
-
/*
|
31
|
-
re body: overflow-y-hidden overflow-x-hidden, h-full
|
32
|
-
We cannot have these on body tag for scroll-snap to work on iOS!
|
33
|
-
*/
|
34
|
-
const bodyClasses =
|
35
|
-
'bg-background text-foreground flex flex-col min-h-full' +
|
36
|
-
getAppRouterBodyFontClasses()
|
37
|
-
|
38
|
-
const RootLayout: React.FC<PropsWithChildren & {
|
39
|
-
siteDef: SiteDef
|
40
|
-
header?: boolean
|
41
|
-
}> = ({
|
42
|
-
header = true,
|
43
|
-
siteDef,
|
44
|
-
children,
|
45
|
-
}) => (
|
46
|
-
<html lang='en' suppressHydrationWarning className='hanzo-ui-dark-theme' style={{backgroundColor: '#000'}}>
|
47
|
-
<head >
|
48
|
-
{/* https://stackoverflow.com/a/75716588/11645689 */ }
|
49
|
-
<base target='_blank' />
|
50
|
-
<FacebookPixelHead/>
|
51
|
-
</head>
|
52
|
-
<body className={bodyClasses} style={{
|
53
|
-
// Not sure why these got added (by my check in)
|
54
|
-
// overflow: hidden here breaks scroll snap, see comment above
|
55
|
-
//paddingRight: '0 !important',
|
56
|
-
//maxWidth: '100vw',
|
57
|
-
display: 'none', // see scripts.tsx
|
58
|
-
|
59
|
-
}}>
|
60
|
-
<Scripts/>
|
61
|
-
{header && <Header siteDef={siteDef}/>}
|
62
|
-
{children}
|
63
|
-
<Toaster position='top-center' duration={3000}/>
|
64
|
-
</body>
|
65
|
-
</html>
|
66
|
-
)
|
67
|
-
|
68
|
-
export {
|
69
|
-
RootLayout as default,
|
70
|
-
viewport
|
71
|
-
}
|