@luxfi/ui 5.5.3 → 5.6.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/dist/accordion.cjs +213 -0
- package/dist/accordion.js +186 -0
- package/dist/alert.cjs +553 -0
- package/dist/alert.js +531 -0
- package/dist/avatar.cjs +149 -0
- package/dist/avatar.js +125 -0
- package/dist/badge.cjs +611 -0
- package/dist/badge.js +589 -0
- package/dist/button.cjs +689 -0
- package/dist/button.js +664 -0
- package/dist/checkbox.cjs +265 -0
- package/dist/checkbox.js +241 -0
- package/dist/close-button.cjs +73 -0
- package/dist/close-button.js +51 -0
- package/dist/collapsible.cjs +702 -0
- package/dist/collapsible.js +679 -0
- package/dist/color-mode.cjs +96 -0
- package/dist/color-mode.js +72 -0
- package/dist/dialog.cjs +279 -0
- package/dist/dialog.js +246 -0
- package/dist/drawer.cjs +207 -0
- package/dist/drawer.js +175 -0
- package/dist/empty-state.cjs +93 -0
- package/dist/empty-state.js +71 -0
- package/dist/field.cjs +183 -0
- package/dist/field.js +160 -0
- package/dist/heading.cjs +46 -0
- package/dist/heading.js +40 -0
- package/dist/icon-button.cjs +491 -0
- package/dist/icon-button.js +470 -0
- package/dist/image.cjs +572 -0
- package/dist/image.js +551 -0
- package/dist/index.cjs +5779 -0
- package/dist/index.js +5619 -0
- package/dist/input-group.cjs +155 -0
- package/dist/input-group.js +133 -0
- package/dist/input.cjs +65 -0
- package/dist/input.js +59 -0
- package/dist/link.cjs +630 -0
- package/dist/link.js +606 -0
- package/dist/menu.cjs +305 -0
- package/dist/menu.js +269 -0
- package/dist/pin-input.cjs +182 -0
- package/dist/pin-input.js +160 -0
- package/dist/popover.cjs +327 -0
- package/dist/popover.js +294 -0
- package/dist/progress-circle.cjs +152 -0
- package/dist/progress-circle.js +128 -0
- package/dist/progress.cjs +117 -0
- package/dist/progress.js +94 -0
- package/dist/provider.cjs +62 -0
- package/dist/provider.js +40 -0
- package/dist/radio.cjs +177 -0
- package/dist/radio.js +153 -0
- package/dist/rating.cjs +80 -0
- package/dist/rating.js +58 -0
- package/dist/select.cjs +791 -0
- package/dist/select.js +757 -0
- package/dist/separator.cjs +57 -0
- package/dist/separator.js +51 -0
- package/dist/skeleton.cjs +370 -0
- package/dist/skeleton.js +346 -0
- package/dist/slider.cjs +138 -0
- package/dist/slider.js +115 -0
- package/dist/switch.cjs +163 -0
- package/dist/switch.js +140 -0
- package/dist/table.cjs +1044 -0
- package/dist/table.js +1013 -0
- package/dist/tabs.cjs +240 -0
- package/dist/tabs.js +213 -0
- package/dist/tag.cjs +651 -0
- package/dist/tag.js +628 -0
- package/dist/textarea.cjs +65 -0
- package/dist/textarea.js +59 -0
- package/dist/toaster.cjs +99 -0
- package/dist/toaster.js +96 -0
- package/dist/tooltip.cjs +171 -0
- package/dist/tooltip.js +148 -0
- package/dist/utils.cjs +11 -0
- package/dist/utils.js +9 -0
- package/package.json +270 -65
- package/src/accordion.tsx +285 -0
- package/src/alert.tsx +221 -0
- package/src/avatar.tsx +174 -0
- package/src/badge.tsx +158 -0
- package/src/button.tsx +411 -0
- package/src/checkbox.tsx +307 -0
- package/src/close-button.tsx +51 -0
- package/src/collapsible.tsx +126 -0
- package/src/color-mode.tsx +125 -0
- package/src/dialog.tsx +356 -0
- package/src/drawer.tsx +186 -0
- package/src/empty-state.tsx +97 -0
- package/src/field.tsx +202 -0
- package/src/heading.tsx +55 -0
- package/src/icon-button.tsx +192 -0
- package/src/image.tsx +280 -0
- package/src/index.ts +192 -0
- package/src/input-group.tsx +159 -0
- package/src/input.tsx +60 -0
- package/src/link.tsx +326 -0
- package/src/menu.tsx +471 -0
- package/src/pin-input.tsx +187 -0
- package/src/popover.tsx +400 -0
- package/src/progress-circle.tsx +180 -0
- package/src/progress.tsx +109 -0
- package/src/provider.tsx +12 -0
- package/src/radio.tsx +175 -0
- package/src/rating.tsx +79 -0
- package/src/select.tsx +696 -0
- package/src/separator.tsx +59 -0
- package/src/skeleton.tsx +302 -0
- package/src/slider.tsx +152 -0
- package/src/switch.tsx +158 -0
- package/src/table.tsx +621 -0
- package/src/tabs.tsx +354 -0
- package/src/tag.tsx +159 -0
- package/src/textarea.tsx +60 -0
- package/src/toaster.tsx +117 -0
- package/src/tokens.css +438 -0
- package/src/tooltip.tsx +184 -0
- package/src/utils/cn.ts +7 -0
- package/src/utils.ts +6 -0
- package/tokens.css +438 -0
- package/commerce/ui/conf.ts +0 -13
- package/commerce/ui/context.tsx +0 -123
- package/commerce/ui/store.ts +0 -295
- package/components/access-code-input.tsx +0 -71
- package/components/analytics.tsx +0 -23
- package/components/auth/auth-listener.tsx +0 -29
- package/components/auth/auth-token/clear-auth-token.tsx +0 -12
- package/components/auth/auth-token/set-auth-token.tsx +0 -16
- package/components/auth/common-auth-domains.ts +0 -17
- package/components/auth/login-panel.tsx +0 -111
- package/components/auth/mobile-login-button.tsx +0 -107
- package/components/auth/signup-panel.tsx +0 -113
- package/components/back-button.tsx +0 -49
- package/components/chat-widget.tsx +0 -85
- package/components/commerce/bag-button.tsx +0 -98
- package/components/commerce/buy-button.tsx +0 -34
- package/components/commerce/checkout-button.tsx +0 -129
- package/components/commerce/checkout-panel/cart-accordian.tsx +0 -66
- package/components/commerce/checkout-panel/checkout-panel-props.ts +0 -10
- package/components/commerce/checkout-panel/desktop-bag-carousel.tsx +0 -36
- package/components/commerce/checkout-panel/desktop-cp.tsx +0 -83
- package/components/commerce/checkout-panel/index.tsx +0 -126
- package/components/commerce/checkout-panel/mobile-cp.tsx +0 -67
- package/components/commerce/checkout-panel/policy-links.tsx +0 -29
- package/components/commerce/checkout-panel/steps-indicator.tsx +0 -39
- package/components/commerce/checkout-panel/thank-you.tsx +0 -18
- package/components/commerce/desktop-bag-popup.tsx +0 -78
- package/components/commerce/drawer/index.tsx +0 -88
- package/components/commerce/drawer/micro.tsx +0 -145
- package/components/commerce/drawer/shell.tsx +0 -85
- package/components/contact-dialog/contact-form.tsx +0 -116
- package/components/contact-dialog/disclaimer.tsx +0 -13
- package/components/contact-dialog/index.tsx +0 -64
- package/components/copyright.tsx +0 -21
- package/components/drawer-margin.tsx +0 -28
- package/components/footer.tsx +0 -78
- package/components/header/desktop-nav-menu.tsx +0 -204
- package/components/header/desktop.tsx +0 -65
- package/components/header/index.tsx +0 -50
- package/components/header/mobile-bag-drawer.tsx +0 -51
- package/components/header/mobile-menu-toggle-button.tsx +0 -35
- package/components/header/mobile-nav-menu-ai.tsx +0 -51
- package/components/header/mobile-nav-menu-item.tsx +0 -47
- package/components/header/mobile-nav-menu.tsx +0 -102
- package/components/header/mobile.tsx +0 -170
- package/components/header/theme-toggle.tsx +0 -26
- package/components/icons/avatar.tsx +0 -11
- package/components/icons/bag-icon.tsx +0 -10
- package/components/icons/index.ts +0 -6
- package/components/icons/left-arrow.tsx +0 -11
- package/components/icons/lux-logo.tsx +0 -10
- package/components/icons/right-arrow.tsx +0 -10
- package/components/icons/social-icon.tsx +0 -35
- package/components/icons/social-svg.css +0 -3
- package/components/index.ts +0 -26
- package/components/logo.tsx +0 -92
- package/components/main.tsx +0 -27
- package/components/mini-chart/index.tsx +0 -8
- package/components/mini-chart/mini-chart-props.ts +0 -44
- package/components/mini-chart/mini-chart.tsx +0 -85
- package/components/mini-chart/wrapper.tsx +0 -23
- package/components/not-found/index.tsx +0 -28
- package/components/not-found/not-found-content.mdx +0 -5
- package/components/tooltip.tsx +0 -31
- package/environment.d.ts +0 -6
- package/next/analytics/fpixel.ts +0 -16
- package/next/analytics/google-analytics.ts +0 -14
- package/next/analytics/index.ts +0 -3
- package/next/analytics/pixel-analytics.tsx +0 -55
- package/next/font/get-app-router-font-classes.ts +0 -17
- package/next/font/load-and-return-lux-next-fonts-on-import.ts +0 -68
- package/next/font/local/Druk-Wide-Bold.ttf +0 -0
- package/next/font/local/Druk-Wide-Medium.ttf +0 -0
- package/next/font/local/InterVariable-Italic.ttf +0 -0
- package/next/font/local/InterVariable-Italic.woff2 +0 -0
- package/next/font/local/InterVariable.ttf +0 -0
- package/next/font/local/InterVariable.woff2 +0 -0
- package/next/font/next-font-desc.ts +0 -28
- package/next/font/pages-router-font-vars.tsx +0 -18
- package/next/head-metadata/from-next/metadata-types.ts +0 -158
- package/next/head-metadata/from-next/opengraph-types.ts +0 -267
- package/next/head-metadata/from-next/twitter-types.ts +0 -92
- package/next/head-metadata/index.tsx +0 -208
- package/next/index.ts +0 -2
- package/next/middleware/determine-device-mw.ts +0 -29
- package/root-layout/WHY_THIS_IS_SEPARATE.txt +0 -2
- package/root-layout/index.tsx +0 -112
- package/site-def/footer/community.tsx +0 -61
- package/site-def/footer/company.ts +0 -37
- package/site-def/footer/ecosystem.ts +0 -37
- package/site-def/footer/index.tsx +0 -26
- package/site-def/footer/legal.ts +0 -28
- package/site-def/footer/network.ts +0 -45
- package/site-def/footer/svg/warpcast-logo.svg +0 -12
- package/site-def/index.ts +0 -4
- package/site-def/main-nav.tsx +0 -460
- package/style/cart-animation.css +0 -29
- package/style/checkout-animation.css +0 -23
- package/style/drawer-handle-overrides.css +0 -160
- package/style/fonts/COPY_TO_PUBLIC_FOR_NON_NEXT.txt +0 -0
- package/style/fonts/Druk-Wide-Bold.ttf +0 -0
- package/style/fonts/Druk-Wide-Medium.ttf +0 -0
- package/style/fonts/InterVariable-Italic.ttf +0 -0
- package/style/fonts/InterVariable-Italic.woff2 +0 -0
- package/style/fonts/InterVariable.ttf +0 -0
- package/style/fonts/InterVariable.woff2 +0 -0
- package/style/lux-colors.css +0 -85
- package/style/lux-fonts.css +0 -30
- package/style/lux-global-non-next.css +0 -52
- package/style/lux-global.css +0 -51
- package/tailwind/fontFamily.tailwind.lux.ts +0 -18
- package/tailwind/index.ts +0 -2
- package/tailwind/lux-tw-fonts.ts +0 -40
- package/tailwind/tailwind.config.lux-preset.ts +0 -10
- package/tsconfig.json +0 -15
- package/types/chatbot-config.ts +0 -7
- package/types/chatbot-suggested-question.ts +0 -7
- package/types/contact-info.ts +0 -11
- package/types/index.ts +0 -4
- package/types/site-def.ts +0 -46
package/components/index.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export { default as AccessCodeInput } from './access-code-input'
|
|
2
|
-
export { default as ChatWidget } from './chat-widget'
|
|
3
|
-
export { default as ContactDialog } from './contact-dialog'
|
|
4
|
-
export { default as Copyright} from './copyright'
|
|
5
|
-
export { default as Footer } from './footer'
|
|
6
|
-
export { default as Header } from './header'
|
|
7
|
-
export * as Icons from './icons'
|
|
8
|
-
export { default as Logo, type LogoVariant } from './logo'
|
|
9
|
-
export { default as Main } from './main'
|
|
10
|
-
export { default as MiniChart } from './mini-chart'
|
|
11
|
-
export { default as NotFound } from './not-found'
|
|
12
|
-
|
|
13
|
-
export { default as AuthListener } from './auth/auth-listener'
|
|
14
|
-
export { default as BackButton } from './back-button'
|
|
15
|
-
export { default as BuyDrawer } from './commerce/drawer'
|
|
16
|
-
export { default as DrawerMargin } from './drawer-margin'
|
|
17
|
-
export { default as BuyButton } from './commerce/buy-button'
|
|
18
|
-
export { default as CheckoutButton } from './commerce/checkout-button'
|
|
19
|
-
export { default as CheckoutPanel } from './commerce/checkout-panel'
|
|
20
|
-
export { default as LoginPanel } from './auth/login-panel'
|
|
21
|
-
export { default as SignupPanel } from './auth/signup-panel'
|
|
22
|
-
export { default as Analytics } from './analytics'
|
|
23
|
-
export { default as Tooltip } from './tooltip'
|
|
24
|
-
|
|
25
|
-
export { default as EmblaAutoplay } from 'embla-carousel-autoplay'
|
|
26
|
-
|
package/components/logo.tsx
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import Link from 'next/link'
|
|
3
|
-
|
|
4
|
-
import { type TShirtSize } from '@hanzo/ui/types'
|
|
5
|
-
|
|
6
|
-
import { LuxLogo } from './icons'
|
|
7
|
-
|
|
8
|
-
const TEXT = 'LUX'
|
|
9
|
-
type LogoVariant = 'text-only' | 'logo-only' | 'full'
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const Logo: React.FC<{
|
|
13
|
-
size?: TShirtSize
|
|
14
|
-
variant?: LogoVariant
|
|
15
|
-
onClick?: () => void
|
|
16
|
-
href?: string
|
|
17
|
-
outerClx?: string
|
|
18
|
-
textClx?: string
|
|
19
|
-
}> = ({
|
|
20
|
-
size,
|
|
21
|
-
href, // no default please!
|
|
22
|
-
outerClx='',
|
|
23
|
-
textClx='',
|
|
24
|
-
variant='full',
|
|
25
|
-
onClick,
|
|
26
|
-
}) => {
|
|
27
|
-
let classes: any = {}
|
|
28
|
-
const toAdd = (variant === 'logo-only') ?
|
|
29
|
-
{
|
|
30
|
-
span: 'hidden',
|
|
31
|
-
icon: ''
|
|
32
|
-
}
|
|
33
|
-
:
|
|
34
|
-
(variant === 'text-only') ?
|
|
35
|
-
{
|
|
36
|
-
span: '',
|
|
37
|
-
icon: 'hidden'
|
|
38
|
-
}
|
|
39
|
-
:
|
|
40
|
-
{
|
|
41
|
-
span: '',
|
|
42
|
-
icon: ''
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (size === 'lg' || size === 'xl' ) { // for safety
|
|
46
|
-
classes.icon = 'h-10 w-10 mr-4 color-inherit '
|
|
47
|
-
classes.span = 'text-3xl '
|
|
48
|
-
}
|
|
49
|
-
// match lux.network
|
|
50
|
-
else if (size === 'md') {
|
|
51
|
-
classes.icon = 'h-[32px] w-[32px] mr-[12px] color-inherit '
|
|
52
|
-
classes.span = 'text-[1.8rem]/[1.8rem] tracking-tighter '
|
|
53
|
-
}
|
|
54
|
-
else if (size === 'sm' ) {
|
|
55
|
-
classes.icon = 'h-6 w-6 mr-2 color-inherit '
|
|
56
|
-
classes.span = 'text-lg '
|
|
57
|
-
}
|
|
58
|
-
// xs
|
|
59
|
-
else {
|
|
60
|
-
classes.icon = 'h-4 w-4 mr-1 color-inherit '
|
|
61
|
-
classes.span = 'text-base '
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
classes.icon += toAdd.icon
|
|
65
|
-
classes.span += toAdd.span
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const outerClasses = 'flex flex-row items-center ' + outerClx
|
|
69
|
-
const spanClasses = 'inline-block font-bold font-heading '
|
|
70
|
-
+ textClx
|
|
71
|
-
+ (href ? ' hover:text-accent cursor-pointer ' : ' cursor-default ')
|
|
72
|
-
+ classes.span
|
|
73
|
-
|
|
74
|
-
return (
|
|
75
|
-
href ? (
|
|
76
|
-
<Link href={href} className={outerClasses} onClick={onClick} >
|
|
77
|
-
<LuxLogo className={classes.icon} />
|
|
78
|
-
<span className={spanClasses}>{TEXT}</span>
|
|
79
|
-
</Link>
|
|
80
|
-
) : (
|
|
81
|
-
<span className={outerClasses} onClick={onClick}>
|
|
82
|
-
<LuxLogo className={classes.icon} />
|
|
83
|
-
<span className={spanClasses}>{TEXT}</span>
|
|
84
|
-
</span>
|
|
85
|
-
)
|
|
86
|
-
)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export {
|
|
90
|
-
Logo as default,
|
|
91
|
-
type LogoVariant
|
|
92
|
-
}
|
package/components/main.tsx
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import React, { type PropsWithChildren } from 'react'
|
|
2
|
-
import { cn } from '@hanzo/ui/util'
|
|
3
|
-
|
|
4
|
-
const Main: React.FC<PropsWithChildren & {
|
|
5
|
-
id?: string
|
|
6
|
-
className?: string
|
|
7
|
-
headerSpace?: boolean
|
|
8
|
-
standardWidth?: boolean
|
|
9
|
-
}> = ({
|
|
10
|
-
children,
|
|
11
|
-
className='',
|
|
12
|
-
headerSpace=true,
|
|
13
|
-
standardWidth=true,
|
|
14
|
-
id
|
|
15
|
-
}) => (
|
|
16
|
-
<main id={id ?? 'LUX_UI_MAIN'} className={cn(
|
|
17
|
-
'flex flex-col justify-start items-center',
|
|
18
|
-
'px-4 md:px-6 lg:px-8',
|
|
19
|
-
standardWidth ? 'max-w-screen-2xl w-full lg:mx-auto' : '',
|
|
20
|
-
headerSpace ? 'pt-[44px] md:pt-[80px]' : 'py-4',
|
|
21
|
-
className
|
|
22
|
-
)}>
|
|
23
|
-
{children}
|
|
24
|
-
</main>
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
export default Main
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { CSSProperties } from 'react'
|
|
2
|
-
|
|
3
|
-
// https://www.typescriptlang.org/docs/handbook/enums.html#enums-at-runtime
|
|
4
|
-
const enum MiniChartDateRangesValues {
|
|
5
|
-
'1D',
|
|
6
|
-
'1M',
|
|
7
|
-
'3M',
|
|
8
|
-
'12M',
|
|
9
|
-
'60M',
|
|
10
|
-
'ALL',
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
type MiniChartDateRanges = keyof typeof MiniChartDateRangesValues
|
|
14
|
-
|
|
15
|
-
interface MiniChartBaseProps {
|
|
16
|
-
symbol: string
|
|
17
|
-
exchange?: string
|
|
18
|
-
dateRange: MiniChartDateRanges
|
|
19
|
-
noTimeScale?: boolean
|
|
20
|
-
width?: number | string
|
|
21
|
-
height?: number | string
|
|
22
|
-
locale?: string
|
|
23
|
-
colorTheme?: "light" | "dark"
|
|
24
|
-
// @ts-ignore // TODO
|
|
25
|
-
lineColor?: CSSProperties["color"]
|
|
26
|
-
// @ts-ignore // TODO
|
|
27
|
-
topGradientColor?: CSSProperties["color"]
|
|
28
|
-
// @ts-ignore // TODO
|
|
29
|
-
bottomGradientColor?: CSSProperties["color"]
|
|
30
|
-
isTransparent?: boolean
|
|
31
|
-
autosize?: boolean
|
|
32
|
-
chartOnly?: boolean
|
|
33
|
-
largeChartUrl?: string
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
type MiniChartProps = {
|
|
37
|
-
widgetProps: MiniChartBaseProps
|
|
38
|
-
containerStyles?: CSSProperties
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export {
|
|
42
|
-
type MiniChartProps,
|
|
43
|
-
type MiniChartDateRanges
|
|
44
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
|
|
3
|
-
import React, { useEffect, useRef } from 'react'
|
|
4
|
-
import { type MiniChartProps } from './mini-chart-props'
|
|
5
|
-
|
|
6
|
-
const MiniChart: React.FC<MiniChartProps> = ({
|
|
7
|
-
widgetProps,
|
|
8
|
-
containerStyles = {}
|
|
9
|
-
}) => {
|
|
10
|
-
|
|
11
|
-
const {
|
|
12
|
-
symbol,
|
|
13
|
-
exchange,
|
|
14
|
-
lineColor,
|
|
15
|
-
topGradientColor,
|
|
16
|
-
bottomGradientColor,
|
|
17
|
-
width,
|
|
18
|
-
height,
|
|
19
|
-
autosize,
|
|
20
|
-
locale,
|
|
21
|
-
...rest
|
|
22
|
-
} = widgetProps
|
|
23
|
-
|
|
24
|
-
const symbolString = (exchange) ? `${exchange}:${symbol}` : symbol
|
|
25
|
-
|
|
26
|
-
const containerRef = useRef<HTMLDivElement | null>(null)
|
|
27
|
-
|
|
28
|
-
useEffect(() => {
|
|
29
|
-
if (!containerRef.current) {
|
|
30
|
-
return
|
|
31
|
-
}
|
|
32
|
-
const script = document.createElement('script')
|
|
33
|
-
script.type = 'text/javascript'
|
|
34
|
-
script.src = 'https://s3.tradingview.com/external-embedding/embed-widget-mini-symbol-overview.js'
|
|
35
|
-
script.async = true
|
|
36
|
-
script.onload = async () => {
|
|
37
|
-
const iframe = containerRef.current?.querySelector('iframe')
|
|
38
|
-
if (iframe && iframe instanceof Element) {
|
|
39
|
-
iframe.style.colorScheme = 'normal'
|
|
40
|
-
setTimeout(() => {
|
|
41
|
-
const value = document.querySelector('#mini-symbol-overview-ticker')
|
|
42
|
-
//console.log("TICKER: " + value)
|
|
43
|
-
}, 1200) // from experimentation
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const copyDiv = document.querySelector('.tradingview-widget-copyright')
|
|
49
|
-
if (copyDiv) {
|
|
50
|
-
//console.log("COPY: " + copyDiv)
|
|
51
|
-
setTimeout(() => {
|
|
52
|
-
copyDiv.classList.remove('invisible')
|
|
53
|
-
}, 1200) // from experimentation
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
const config = JSON.stringify({
|
|
57
|
-
symbol: symbolString,
|
|
58
|
-
width: autosize ? '100%' : (width || 350),
|
|
59
|
-
height: autosize ? '100%' : (height || 220),
|
|
60
|
-
locale: locale ?? 'en',
|
|
61
|
-
isTransparent: 'true',
|
|
62
|
-
trendLineColor: lineColor || 'rgba(41, 98, 255, 1)',
|
|
63
|
-
underLineColor: topGradientColor || 'rgba(41, 98, 255, 0.3)',
|
|
64
|
-
underLineBottomColor: bottomGradientColor || 'rgba(41, 98, 255, 0)',
|
|
65
|
-
...rest,
|
|
66
|
-
})
|
|
67
|
-
script.innerHTML = config
|
|
68
|
-
containerRef.current.appendChild(script)
|
|
69
|
-
return () => {
|
|
70
|
-
while (containerRef.current?.firstChild) {
|
|
71
|
-
containerRef.current.removeChild(containerRef.current.firstChild)
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}, [ JSON.stringify(widgetProps) ])
|
|
75
|
-
|
|
76
|
-
return (<>
|
|
77
|
-
<div style={containerStyles} className='tradingview-widget-container h-[150px]' ref={containerRef} />
|
|
78
|
-
<div className='tradingview-widget-copyright border-t w-full invisible'>
|
|
79
|
-
<a href={`https://www.tradingview.com/symbols/${symbol}${exchange ? `/?exchange=${exchange}` : '' }`} rel="noopener" target="_blank">
|
|
80
|
-
<span className="text-[--hz-ui-primary]">{symbol} quotes</span></a> by TradingView
|
|
81
|
-
</div>
|
|
82
|
-
</>)
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export default MiniChart
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
|
|
3
|
-
import BaseChart from './mini-chart'
|
|
4
|
-
|
|
5
|
-
const Wrapper: React.FC<{
|
|
6
|
-
symbol: string,
|
|
7
|
-
exchange?: string
|
|
8
|
-
}> = ({
|
|
9
|
-
symbol,
|
|
10
|
-
exchange
|
|
11
|
-
}) => (
|
|
12
|
-
<BaseChart widgetProps ={{
|
|
13
|
-
symbol,
|
|
14
|
-
exchange,
|
|
15
|
-
autosize: true,
|
|
16
|
-
colorTheme: 'dark',
|
|
17
|
-
lineColor: "rgb(114, 27, 228)",
|
|
18
|
-
bottomGradientColor: "rgba(255, 255, 255, 0.1)",
|
|
19
|
-
dateRange: '60M',
|
|
20
|
-
}}/>
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
export default Wrapper
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
|
|
3
|
-
import { ApplyTypography } from '@hanzo/ui/primitives'
|
|
4
|
-
|
|
5
|
-
import type { SiteDef } from '../../site-def'
|
|
6
|
-
import Footer from '../footer'
|
|
7
|
-
import Header from '../header'
|
|
8
|
-
import Main from '../main'
|
|
9
|
-
|
|
10
|
-
import NotFoundMDX from './not-found-content.mdx'
|
|
11
|
-
|
|
12
|
-
const NotFound: React.FC<{
|
|
13
|
-
header?: boolean
|
|
14
|
-
siteDef: SiteDef
|
|
15
|
-
}> = ({
|
|
16
|
-
header=false,
|
|
17
|
-
siteDef
|
|
18
|
-
}) => (<>
|
|
19
|
-
{header && <Header siteDef={siteDef}/>}
|
|
20
|
-
<Main className='h-[100svh] sm:h-[700px] px-8 sm:px-10 ' headerSpace={header}>
|
|
21
|
-
<ApplyTypography className='mt-[200px] flex flex-col md:gap-8 '>
|
|
22
|
-
<NotFoundMDX />
|
|
23
|
-
</ApplyTypography>
|
|
24
|
-
</Main>
|
|
25
|
-
<Footer siteDef={siteDef}/>
|
|
26
|
-
</>)
|
|
27
|
-
|
|
28
|
-
export default NotFound
|
package/components/tooltip.tsx
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import { Tooltip as RTTooltip, type PlacesType } from 'react-tooltip'
|
|
4
|
-
|
|
5
|
-
const Tooltip: React.FC<{
|
|
6
|
-
select: string
|
|
7
|
-
text: string
|
|
8
|
-
position?: PlacesType // https://react-tooltip.com/docs/options
|
|
9
|
-
clx?: string
|
|
10
|
-
offset?: number
|
|
11
|
-
}> = ({
|
|
12
|
-
select,
|
|
13
|
-
text,
|
|
14
|
-
clx='',
|
|
15
|
-
position='bottom',
|
|
16
|
-
offset=2
|
|
17
|
-
}) => (
|
|
18
|
-
<RTTooltip
|
|
19
|
-
anchorSelect={select}
|
|
20
|
-
noArrow
|
|
21
|
-
opacity={1}
|
|
22
|
-
content={text}
|
|
23
|
-
place={position}
|
|
24
|
-
offset={offset}
|
|
25
|
-
delayShow={100}
|
|
26
|
-
delayHide={100}
|
|
27
|
-
className={'!opacity-100 !bg-level-2 border rounded-[3px] !px-1.5 !py-1 z-floating' + clx}
|
|
28
|
-
/>
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
export default Tooltip
|
package/environment.d.ts
DELETED
package/next/analytics/fpixel.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
declare global {
|
|
2
|
-
interface Window {
|
|
3
|
-
fbq: Function;
|
|
4
|
-
}
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export const FB_PIXEL_ID = process.env.NEXT_PUBLIC_FACEBOOK_PIXEL_ID
|
|
8
|
-
|
|
9
|
-
export const pageview = () => {
|
|
10
|
-
window.fbq('track', 'PageView')
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// https://developers.facebook.com/docs/meta-pixel/reference
|
|
14
|
-
export const sendFBEvent = (name: string, options = {}) => {
|
|
15
|
-
window.fbq('track', name, options)
|
|
16
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
declare global {
|
|
2
|
-
interface Window {
|
|
3
|
-
gtag: Function;
|
|
4
|
-
}
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag
|
|
8
|
-
const sendGAEvent = (name: string, options = {}) => {
|
|
9
|
-
window.gtag('event', name, options)
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
sendGAEvent as default
|
|
14
|
-
}
|
package/next/analytics/index.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import React, { useEffect, useState } from 'react'
|
|
3
|
-
import { usePathname } from 'next/navigation'
|
|
4
|
-
import Script from 'next/script'
|
|
5
|
-
|
|
6
|
-
import * as fbq from './fpixel'
|
|
7
|
-
|
|
8
|
-
const FacebookPixelHead = () => {
|
|
9
|
-
return (
|
|
10
|
-
<noscript>
|
|
11
|
-
<img
|
|
12
|
-
height='1'
|
|
13
|
-
width='1'
|
|
14
|
-
style={{ display: 'none' }}
|
|
15
|
-
src={`https://www.facebook.com/tr?id=${fbq.FB_PIXEL_ID}&ev=PageView&noscript=1`}
|
|
16
|
-
/>
|
|
17
|
-
</noscript>
|
|
18
|
-
)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const FacebookPixel = () => {
|
|
22
|
-
const [loaded, setLoaded] = useState(false)
|
|
23
|
-
const pathname = usePathname()
|
|
24
|
-
|
|
25
|
-
useEffect(() => {
|
|
26
|
-
if (!loaded) return
|
|
27
|
-
|
|
28
|
-
fbq.pageview()
|
|
29
|
-
}, [pathname, loaded])
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<div>
|
|
33
|
-
<Script
|
|
34
|
-
id='fb-pixel'
|
|
35
|
-
strategy='afterInteractive'
|
|
36
|
-
onLoad={() => setLoaded(true)}
|
|
37
|
-
dangerouslySetInnerHTML={{
|
|
38
|
-
__html: `
|
|
39
|
-
!function(f,b,e,v,n,t,s)
|
|
40
|
-
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
|
|
41
|
-
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
|
|
42
|
-
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
|
|
43
|
-
n.queue=[];t=b.createElement(e);t.async=!0;
|
|
44
|
-
t.src=v;s=b.getElementsByTagName(e)[0];
|
|
45
|
-
s.parentNode.insertBefore(t,s)}(window, document,'script',
|
|
46
|
-
'https://connect.facebook.net/en_US/fbevents.js');
|
|
47
|
-
fbq('init', ${fbq.FB_PIXEL_ID});
|
|
48
|
-
`,
|
|
49
|
-
}}
|
|
50
|
-
/>
|
|
51
|
-
</div>
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export {FacebookPixelHead, FacebookPixel}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import nextFonts from './load-and-return-lux-next-fonts-on-import'
|
|
2
|
-
import type NextFontDesc from './next-font-desc'
|
|
3
|
-
|
|
4
|
-
// These will be injected for <body> in app router app that uses our RootLayout
|
|
5
|
-
|
|
6
|
-
// First is assumed to be mapped to the default font and is injected into <body>
|
|
7
|
-
// as a normal tw font family class.
|
|
8
|
-
export default () => {
|
|
9
|
-
let nf = nextFonts.map((desc: NextFontDesc) => (desc.nextFont!.variable))
|
|
10
|
-
// dedupe
|
|
11
|
-
nf = nf.filter(
|
|
12
|
-
(str, i, arr) => (
|
|
13
|
-
arr.indexOf(str) === i
|
|
14
|
-
)
|
|
15
|
-
)
|
|
16
|
-
return nf.join(' ') + ` font-${nextFonts[0].twName}`
|
|
17
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
// import { Inter } from 'next/font/google'
|
|
2
|
-
import localFont from 'next/font/local'
|
|
3
|
-
|
|
4
|
-
import type { TwFontDesc } from '@hanzo/ui/tailwind' // TODO
|
|
5
|
-
import type NextFontDesc from './next-font-desc'
|
|
6
|
-
|
|
7
|
-
import twFonts from '../../tailwind/lux-tw-fonts'
|
|
8
|
-
|
|
9
|
-
/*
|
|
10
|
-
Creating NextFontDesc's and TwFontDesc's has to be seperated because they are needed
|
|
11
|
-
at different times during the next compile / build. Otherwise a nasty
|
|
12
|
-
race condition happens!
|
|
13
|
-
|
|
14
|
-
Also, requires that "Font loaders must be called and assigned to a const in the module scope"
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
const drukWide = localFont({
|
|
19
|
-
src: [
|
|
20
|
-
{
|
|
21
|
-
path: './local/Druk-Wide-Bold.ttf',
|
|
22
|
-
weight: '700',
|
|
23
|
-
style: 'normal'
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
path: './local/Druk-Wide-Medium.ttf',
|
|
27
|
-
weight: '500',
|
|
28
|
-
style: 'normal',
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
display: 'swap',
|
|
32
|
-
variable: '--font-druk-wide',
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
const inter = localFont({
|
|
36
|
-
src: './local/InterVariable.ttf',
|
|
37
|
-
display: 'swap',
|
|
38
|
-
variable: '--font-inter',
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
export default [
|
|
42
|
-
{
|
|
43
|
-
font: inter,
|
|
44
|
-
twName: 'sans'
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
font: inter,
|
|
48
|
-
twName: 'nav'
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
font: drukWide,
|
|
52
|
-
twName: 'heading'
|
|
53
|
-
}
|
|
54
|
-
].map (
|
|
55
|
-
(el) => {
|
|
56
|
-
const twFont: TwFontDesc | undefined = twFonts.find((twf: TwFontDesc) => (el.twName === twf.twName))
|
|
57
|
-
if (!twFont) {
|
|
58
|
-
throw new Error('lux-next-fonts: Next font is not paired to a TW font!')
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return ({
|
|
62
|
-
...twFont,
|
|
63
|
-
nextFont: el.font,
|
|
64
|
-
})
|
|
65
|
-
}
|
|
66
|
-
) satisfies NextFontDesc[]
|
|
67
|
-
|
|
68
|
-
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { TwFontDesc } from '@hanzo/ui/tailwind'
|
|
2
|
-
|
|
3
|
-
// from next repo
|
|
4
|
-
type NextFont = {
|
|
5
|
-
className: string
|
|
6
|
-
style: { fontFamily: string; fontWeight?: number; fontStyle?: string }
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// from next repo
|
|
10
|
-
type NextFontWithVariable = NextFont & {
|
|
11
|
-
variable: string
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
/*
|
|
16
|
-
NextFontDesc and TwFontDesc have to be seperate because they are needed
|
|
17
|
-
at different times during the next compile / build. Otherwise a nasty
|
|
18
|
-
race condition happens! That's why they are in different files.
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
interface NextFontDesc extends TwFontDesc {
|
|
22
|
-
nextFont: NextFontWithVariable
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export {
|
|
26
|
-
type NextFontDesc as default,
|
|
27
|
-
type NextFontWithVariable,
|
|
28
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import nextFonts from './load-and-return-lux-next-fonts-on-import'
|
|
3
|
-
import type NextFontDesc from './next-font-desc'
|
|
4
|
-
|
|
5
|
-
const PagesRouterFontVars: React.FC = () => {
|
|
6
|
-
|
|
7
|
-
const fontVars = nextFonts.map((fd: NextFontDesc) => (
|
|
8
|
-
`${fd.cssVar}: ${fd.nextFont.style.fontFamily};`
|
|
9
|
-
)).join('\n')
|
|
10
|
-
|
|
11
|
-
return <style jsx global>{`
|
|
12
|
-
html {
|
|
13
|
-
${fontVars}
|
|
14
|
-
}
|
|
15
|
-
`}</style>
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export default PagesRouterFontVars
|