@hanzo/ui 1.0.15 → 2.0.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/blocks/components/card-block.tsx +1 -1
- package/package.json +1 -1
- package/primitives/icons/index.ts +18 -0
- package/primitives/index.ts +1 -0
- package/primitives/toggle-group.tsx +1 -1
- package/primitives/youtube-embed.tsx +1 -1
- package/style/hanzo-default-colors.css +2 -2
- package/{context-providers → style}/theme-provider.tsx +2 -2
- package/tailwind/fontFamily.tailwind.ts +7 -0
- package/tailwind/{fonts.tailwind.ts → fontSize.tailwind.ts} +1 -19
- package/tailwind/index.ts +8 -5
- package/tailwind/{tailwind.config.base.js → tailwind.config.hanzo-preset.js} +3 -2
- package/tailwind/typo-plugin/get-plugin-styles.js +42 -42
- package/tailwind/typography-test.mdx +1 -1
- package/types/index.ts +5 -15
- package/assets/lux-site-icons/android-chrome-192x192.png +0 -0
- package/assets/lux-site-icons/android-chrome-512x512.png +0 -0
- package/assets/lux-site-icons/apple-touch-icon.png +0 -0
- package/assets/lux-site-icons/favicon-16x16.png +0 -0
- package/assets/lux-site-icons/favicon-32x32.png +0 -0
- package/assets/lux-site-icons/favicon.ico +0 -0
- package/assets/standard-docs/LUX-NFT-Terms-and-Conditions.pdf +0 -0
- package/assets/standard-docs/LUX-Privacy-Policy.pdf +0 -0
- package/common/chat-widget.tsx +0 -75
- package/common/contact-dialog/contact-form.tsx +0 -111
- package/common/contact-dialog/disclaimer.tsx +0 -13
- package/common/contact-dialog/index.tsx +0 -48
- package/common/copyright.tsx +0 -21
- package/common/drawer-menu.tsx +0 -54
- package/common/footer.tsx +0 -77
- package/common/head-metadata/from-next/metadata-types.ts +0 -158
- package/common/head-metadata/from-next/opengraph-types.ts +0 -267
- package/common/head-metadata/from-next/twitter-types.ts +0 -92
- package/common/head-metadata/index.tsx +0 -208
- package/common/header/index.tsx +0 -66
- package/common/header/mobile-nav.tsx +0 -72
- package/common/header/theme-toggle.tsx +0 -26
- package/common/icons/index.tsx +0 -34
- package/common/icons/lux-logo.tsx +0 -10
- package/common/icons/secure-delivery.tsx +0 -13
- package/common/icons/social-icon.tsx +0 -35
- package/common/index.ts +0 -14
- package/common/logo.tsx +0 -71
- package/common/mini-chart/index.tsx +0 -8
- package/common/mini-chart/mini-chart-props.ts +0 -44
- package/common/mini-chart/mini-chart.tsx +0 -76
- package/common/mini-chart/wrapper.tsx +0 -23
- package/context-providers/index.ts +0 -1
- package/next/README.md +0 -11
- package/next/analytics/fpixel.ts +0 -18
- package/next/analytics/pixel-analytics.tsx +0 -55
- package/next/determine-device-middleware.ts +0 -16
- package/next/fonts/DrukTextWide-Bold-Trial.otf +0 -0
- package/next/fonts/DrukTextWide-Heavy-Trial.otf +0 -0
- package/next/fonts/DrukTextWide-Medium-Trial.otf +0 -0
- package/next/fonts/DrukWide-Bold-Trial.otf +0 -0
- package/next/fonts/DrukWide-Heavy-Trial.otf +0 -0
- package/next/fonts/DrukWide-Medium-Trial.otf +0 -0
- package/next/get-app-router-font-classes.ts +0 -12
- package/next/load-and-return-lux-next-fonts-on-import.ts +0 -94
- package/next/next-font-desc.ts +0 -28
- package/next/not-found-content.mdx +0 -5
- package/next/not-found.tsx +0 -23
- package/next/pages-router-font-vars.tsx +0 -18
- package/next/root-layout.tsx +0 -62
- package/siteDef/footer/community.tsx +0 -67
- package/siteDef/footer/company.ts +0 -37
- package/siteDef/footer/ecosystem.ts +0 -37
- package/siteDef/footer/index.tsx +0 -26
- package/siteDef/footer/legal.ts +0 -28
- package/siteDef/footer/network.ts +0 -37
- package/siteDef/footer/svg/warpcast-logo.svg +0 -12
- package/siteDef/main-nav.ts +0 -35
- package/style/social-svg.css +0 -3
- package/tailwind/lux-tw-fonts.ts +0 -37
- package/types/site-def.ts +0 -36
- /package/{common → primitives}/icons/github.tsx +0 -0
- /package/{common → primitives}/icons/youtube-logo.tsx +0 -0
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import React from 'react'
|
|
3
|
-
|
|
4
|
-
import type { ButtonModalProps} from '../../types'
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
Button,
|
|
8
|
-
Dialog,
|
|
9
|
-
DialogContent,
|
|
10
|
-
DialogDescription,
|
|
11
|
-
DialogHeader,
|
|
12
|
-
DialogTitle,
|
|
13
|
-
DialogTrigger,
|
|
14
|
-
} from '../../primitives'
|
|
15
|
-
|
|
16
|
-
import ContactForm from './contact-form'
|
|
17
|
-
import Disclaimer from './disclaimer'
|
|
18
|
-
|
|
19
|
-
const ContactDialog: React.FC<ButtonModalProps> = ({
|
|
20
|
-
open,
|
|
21
|
-
onOpenChange,
|
|
22
|
-
buttonText,
|
|
23
|
-
buttonProps,
|
|
24
|
-
title,
|
|
25
|
-
byline,
|
|
26
|
-
action,
|
|
27
|
-
actionEnclosure
|
|
28
|
-
}) => (
|
|
29
|
-
<Dialog open={open} onOpenChange={onOpenChange} >
|
|
30
|
-
<DialogTrigger asChild>
|
|
31
|
-
<Button {...buttonProps} >{buttonText}</Button>
|
|
32
|
-
</DialogTrigger>
|
|
33
|
-
<DialogContent className="sm:max-w-[500px] p-0 gap-0 bg-background border">
|
|
34
|
-
<DialogHeader className='py-6 text-foreground'>
|
|
35
|
-
<DialogTitle className='text-4xl font-heading text-center text-inherit'>{title}</DialogTitle>
|
|
36
|
-
{byline && (<DialogDescription className='text-inherit text-xl text-center'>{byline} </DialogDescription>)}
|
|
37
|
-
</DialogHeader>
|
|
38
|
-
<div className='p-8 rounded-e-lg flex flex-col justify-start items-center'>
|
|
39
|
-
<ContactForm onSubmit={action} enclosure={actionEnclosure}/>
|
|
40
|
-
<div className='text-muted-1 text-xs mt-4' >
|
|
41
|
-
<Disclaimer />
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
</DialogContent>
|
|
45
|
-
</Dialog>
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
export default ContactDialog
|
package/common/copyright.tsx
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
|
|
3
|
-
const FIRST = 2020
|
|
4
|
-
|
|
5
|
-
const Copyright: React.FC<{
|
|
6
|
-
className?: string
|
|
7
|
-
}> = ({
|
|
8
|
-
className=''
|
|
9
|
-
}) => {
|
|
10
|
-
|
|
11
|
-
const year = new Date().getFullYear()
|
|
12
|
-
const yearString = (year > FIRST) ? `${FIRST} - ${year}` : FIRST.toString()
|
|
13
|
-
|
|
14
|
-
return (
|
|
15
|
-
<div className={className}>
|
|
16
|
-
{`Copyright © ${yearString}`} <br className='sm:hidden'/>Lux Partners Ltd. <br className='md:hidden'/> All rights reserved.
|
|
17
|
-
</div>
|
|
18
|
-
)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export default Copyright
|
package/common/drawer-menu.tsx
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import React, { type PropsWithChildren, type ReactNode } from 'react'
|
|
3
|
-
|
|
4
|
-
import { X as LucideX} from 'lucide-react'
|
|
5
|
-
|
|
6
|
-
import Logo from './logo'
|
|
7
|
-
import { Sheet, SheetContent, SheetTrigger } from '../primitives/sheet'
|
|
8
|
-
|
|
9
|
-
const DrawerMenu: React.FC<PropsWithChildren & {
|
|
10
|
-
trigger: ReactNode
|
|
11
|
-
className?: string
|
|
12
|
-
showLogo?: boolean,
|
|
13
|
-
propogate?: boolean
|
|
14
|
-
asChild?: boolean
|
|
15
|
-
}> = ({
|
|
16
|
-
trigger,
|
|
17
|
-
children,
|
|
18
|
-
className='',
|
|
19
|
-
showLogo=true,
|
|
20
|
-
propogate=true,
|
|
21
|
-
asChild=false
|
|
22
|
-
}) => {
|
|
23
|
-
|
|
24
|
-
const [open, setOpen] = React.useState(false)
|
|
25
|
-
|
|
26
|
-
const onAction = () => { setOpen(false) }
|
|
27
|
-
|
|
28
|
-
// https://stackoverflow.com/a/49052730/11645689
|
|
29
|
-
const updatedChildren = React.Children.map(
|
|
30
|
-
children,
|
|
31
|
-
(child) => (React.cloneElement(
|
|
32
|
-
child as any, { onAction }
|
|
33
|
-
))
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
return (
|
|
37
|
-
<Sheet open={open} onOpenChange={setOpen} >
|
|
38
|
-
<SheetTrigger className={className} asChild={asChild}>
|
|
39
|
-
{trigger}
|
|
40
|
-
</SheetTrigger>
|
|
41
|
-
<SheetContent
|
|
42
|
-
side="right"
|
|
43
|
-
closeButtonClass='text-inherit opacity-90'
|
|
44
|
-
onClick={propogate ? onAction : () => {}}
|
|
45
|
-
closeElement={<LucideX className='h-6 w-6 text-inherit'/>}
|
|
46
|
-
centerElement={showLogo ? <Logo size='xs' className='' /> : null}
|
|
47
|
-
>
|
|
48
|
-
{updatedChildren}
|
|
49
|
-
</SheetContent>
|
|
50
|
-
</Sheet>
|
|
51
|
-
)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default DrawerMenu
|
package/common/footer.tsx
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
|
|
3
|
-
import type { LinkDef, SiteDef } from '../types'
|
|
4
|
-
import { Copyright } from '.'
|
|
5
|
-
import { NavItems } from '../primitives'
|
|
6
|
-
import { legal } from '../siteDef/footer/legal'
|
|
7
|
-
|
|
8
|
-
import Logo from './logo'
|
|
9
|
-
import { cn } from '../util'
|
|
10
|
-
|
|
11
|
-
const Footer: React.FC<{
|
|
12
|
-
siteDef: SiteDef,
|
|
13
|
-
className?: string,
|
|
14
|
-
noHorizPadding?: boolean
|
|
15
|
-
}> = ({
|
|
16
|
-
siteDef,
|
|
17
|
-
className='',
|
|
18
|
-
noHorizPadding=false
|
|
19
|
-
}) => {
|
|
20
|
-
|
|
21
|
-
const { footer, aboveCopyright } = siteDef
|
|
22
|
-
const smGridCols = Math.floor(footer.length/2)
|
|
23
|
-
const smGridColsClx = `sm:grid-cols-${smGridCols} `
|
|
24
|
-
const _aboveCopyright = (typeof aboveCopyright === 'undefined') ? legal : aboveCopyright
|
|
25
|
-
|
|
26
|
-
return (
|
|
27
|
-
<footer className={cn('grow flex flex-col justify-end gap-6 pb-[2vh]', className)}>
|
|
28
|
-
<div className={
|
|
29
|
-
(noHorizPadding ? '' : 'px-5 md:px-8 ') +
|
|
30
|
-
'grid grid-cols-2 gap-4 gap-y-6 md:gap-x-6 lg:gap-8 ' + smGridColsClx +
|
|
31
|
-
'md:w-full sm:justify-items-center md:mx-0 lg:w-full max-w-screen-2xl ' +
|
|
32
|
-
'md:flex md:flex-row md:justify-between '
|
|
33
|
-
}>
|
|
34
|
-
<div className='hidden lg:flex flex-col' key={0}>
|
|
35
|
-
<Logo size='md' />
|
|
36
|
-
</div>
|
|
37
|
-
{footer.map((defs: LinkDef[], index) => {
|
|
38
|
-
|
|
39
|
-
const xsColSpanClx = ((index === footer.length - 1) && (footer.length % 2 === 1)) ?
|
|
40
|
-
'xs:col-span-2 xs:mx-auto md:col-span-1 md:mx-0 ' : ''
|
|
41
|
-
|
|
42
|
-
return (
|
|
43
|
-
<NavItems
|
|
44
|
-
items={defs}
|
|
45
|
-
currentAs={siteDef.currentAs}
|
|
46
|
-
as='nav'
|
|
47
|
-
className={cn('sm:min-w-[150px] md:min-w-0 flex flex-col justify-start items-start ' +
|
|
48
|
-
'gap-[11px] sm:gap-[12px] md:gap-[15px] ',
|
|
49
|
-
xsColSpanClx
|
|
50
|
-
)}
|
|
51
|
-
key={index + 1}
|
|
52
|
-
itemClx={(def: LinkDef) => ((def.variant === 'linkFG') ?
|
|
53
|
-
'font-nav text-[15px]/[1.3] font-medium text-foreground tracking-normal'
|
|
54
|
-
:
|
|
55
|
-
'text-[15px]/[1.1] font-normal tracking-[0.2px] text-muted-1'
|
|
56
|
-
)}
|
|
57
|
-
/>
|
|
58
|
-
)
|
|
59
|
-
})}
|
|
60
|
-
</div>
|
|
61
|
-
<div className='md:mt-[2vh]'>
|
|
62
|
-
{_aboveCopyright.length > 0 && (
|
|
63
|
-
<NavItems
|
|
64
|
-
items={_aboveCopyright}
|
|
65
|
-
as='div'
|
|
66
|
-
className={'flex flex-row justify-center gap-4 mb-2'}
|
|
67
|
-
itemClx={'text-sm text-center text-muted-2 underline hover:text-foreground'}
|
|
68
|
-
/>
|
|
69
|
-
)}
|
|
70
|
-
<Copyright className='text-sm text-center text-muted-3'/>
|
|
71
|
-
</div>
|
|
72
|
-
</footer>
|
|
73
|
-
)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export default Footer
|
|
77
|
-
// flex flex-col justify-between gap-6
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* Metadata types
|
|
4
|
-
*
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export interface DeprecatedMetadataFields {
|
|
8
|
-
/**
|
|
9
|
-
* Deprecated options that have a preferred method
|
|
10
|
-
* @deprecated Use appWebApp to configure apple-mobile-web-app-capable which provides
|
|
11
|
-
* @see https://www.appsloveworld.com/coding/iphone/11/difference-between-apple-mobile-web-app-capable-and-apple-touch-fullscreen-ipho
|
|
12
|
-
*/
|
|
13
|
-
'apple-touch-fullscreen'?: never
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Obsolete since iOS 7.
|
|
17
|
-
* @see https://web.dev/apple-touch-icon/
|
|
18
|
-
* @deprecated use icons.apple or instead
|
|
19
|
-
*/
|
|
20
|
-
'apple-touch-icon-precomposed'?: never
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export type TemplateString =
|
|
24
|
-
| DefaultTemplateString
|
|
25
|
-
| AbsoluteTemplateString
|
|
26
|
-
| AbsoluteString
|
|
27
|
-
export type DefaultTemplateString = {
|
|
28
|
-
default: string
|
|
29
|
-
template: string
|
|
30
|
-
}
|
|
31
|
-
export type AbsoluteTemplateString = {
|
|
32
|
-
absolute: string
|
|
33
|
-
template: string | null
|
|
34
|
-
}
|
|
35
|
-
export type AbsoluteString = {
|
|
36
|
-
absolute: string
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export type Author = {
|
|
40
|
-
// renders as <link rel="author"...
|
|
41
|
-
url?: string | URL
|
|
42
|
-
// renders as <meta name="author"...
|
|
43
|
-
name?: string
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// does not include "unsafe-URL". to use this users should
|
|
47
|
-
// use '"unsafe-URL" as ReferrerEnum'
|
|
48
|
-
export type ReferrerEnum =
|
|
49
|
-
| 'no-referrer'
|
|
50
|
-
| 'origin'
|
|
51
|
-
| 'no-referrer-when-downgrade'
|
|
52
|
-
| 'origin-when-cross-origin'
|
|
53
|
-
| 'same-origin'
|
|
54
|
-
| 'strict-origin'
|
|
55
|
-
| 'strict-origin-when-cross-origin'
|
|
56
|
-
|
|
57
|
-
export type ColorSchemeEnum =
|
|
58
|
-
| 'normal'
|
|
59
|
-
| 'light'
|
|
60
|
-
| 'dark'
|
|
61
|
-
| 'light dark'
|
|
62
|
-
| 'dark light'
|
|
63
|
-
| 'only light'
|
|
64
|
-
|
|
65
|
-
type RobotsInfo = {
|
|
66
|
-
// all and none will be inferred from index/follow boolean options
|
|
67
|
-
index?: boolean
|
|
68
|
-
follow?: boolean
|
|
69
|
-
|
|
70
|
-
/** @deprecated set index to false instead */
|
|
71
|
-
noindex?: never
|
|
72
|
-
/** @deprecated set follow to false instead */
|
|
73
|
-
nofollow?: never
|
|
74
|
-
|
|
75
|
-
noarchive?: boolean
|
|
76
|
-
nosnippet?: boolean
|
|
77
|
-
noimageindex?: boolean
|
|
78
|
-
nocache?: boolean
|
|
79
|
-
notranslate?: boolean
|
|
80
|
-
indexifembedded?: boolean
|
|
81
|
-
nositelinkssearchbox?: boolean
|
|
82
|
-
unavailable_after?: string
|
|
83
|
-
'max-video-preview'?: number | string
|
|
84
|
-
'max-image-preview'?: 'none' | 'standard' | 'large'
|
|
85
|
-
'max-snippet'?: number
|
|
86
|
-
}
|
|
87
|
-
export type Robots = RobotsInfo & {
|
|
88
|
-
// if you want to specify an alternate robots just for google
|
|
89
|
-
googleBot?: string | RobotsInfo
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export type ResolvedRobots = {
|
|
93
|
-
basic: string | null
|
|
94
|
-
googleBot: string | null
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export type IconURL = string | URL
|
|
98
|
-
export type Icon = IconURL | IconDescriptor
|
|
99
|
-
export type IconDescriptor = {
|
|
100
|
-
url: string | URL
|
|
101
|
-
type?: string
|
|
102
|
-
sizes?: string
|
|
103
|
-
color?: string
|
|
104
|
-
/** defaults to rel="icon" unless superseded by Icons map */
|
|
105
|
-
rel?: string
|
|
106
|
-
media?: string
|
|
107
|
-
/**
|
|
108
|
-
* @see https://developer.mozilla.org/docs/Web/API/HTMLImageElement/fetchPriority
|
|
109
|
-
*/
|
|
110
|
-
fetchPriority?: 'high' | 'low' | 'auto'
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
export type Icons = {
|
|
114
|
-
/** rel="icon" */
|
|
115
|
-
icon?: Icon | Icon[]
|
|
116
|
-
/** rel="shortcut icon" */
|
|
117
|
-
shortcut?: Icon | Icon[]
|
|
118
|
-
/**
|
|
119
|
-
* @see https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html
|
|
120
|
-
* rel="apple-touch-icon"
|
|
121
|
-
*/
|
|
122
|
-
apple?: Icon | Icon[]
|
|
123
|
-
/** rel inferred from descriptor, defaults to "icon" */
|
|
124
|
-
other?: IconDescriptor | IconDescriptor[]
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export type Verification = {
|
|
128
|
-
google?: null | string | number | (string | number)[]
|
|
129
|
-
yahoo?: null | string | number | (string | number)[]
|
|
130
|
-
yandex?: null | string | number | (string | number)[]
|
|
131
|
-
me?: null | string | number | (string | number)[]
|
|
132
|
-
// if you ad-hoc additional verification
|
|
133
|
-
other?: {
|
|
134
|
-
[name: string]: string | number | (string | number)[]
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export type ResolvedVerification = {
|
|
139
|
-
google?: null | (string | number)[]
|
|
140
|
-
yahoo?: null | (string | number)[]
|
|
141
|
-
yandex?: null | (string | number)[]
|
|
142
|
-
me?: null | (string | number)[]
|
|
143
|
-
other?: {
|
|
144
|
-
[name: string]: (string | number)[]
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
export type ResolvedIcons = {
|
|
149
|
-
icon: IconDescriptor[]
|
|
150
|
-
apple: IconDescriptor[]
|
|
151
|
-
shortcut?: IconDescriptor[]
|
|
152
|
-
other?: IconDescriptor[]
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
export type ThemeColorDescriptor = {
|
|
156
|
-
color: string
|
|
157
|
-
media?: string
|
|
158
|
-
}
|
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
import type { AbsoluteTemplateString, TemplateString } from './metadata-types'
|
|
2
|
-
|
|
3
|
-
export type OpenGraphType =
|
|
4
|
-
| 'article'
|
|
5
|
-
| 'book'
|
|
6
|
-
| 'music.song'
|
|
7
|
-
| 'music.album'
|
|
8
|
-
| 'music.playlist'
|
|
9
|
-
| 'music.radio_station'
|
|
10
|
-
| 'profile'
|
|
11
|
-
| 'website'
|
|
12
|
-
| 'video.tv_show'
|
|
13
|
-
| 'video.other'
|
|
14
|
-
| 'video.movie'
|
|
15
|
-
| 'video.episode'
|
|
16
|
-
|
|
17
|
-
export type OpenGraph =
|
|
18
|
-
| OpenGraphWebsite
|
|
19
|
-
| OpenGraphArticle
|
|
20
|
-
| OpenGraphBook
|
|
21
|
-
| OpenGraphProfile
|
|
22
|
-
| OpenGraphMusicSong
|
|
23
|
-
| OpenGraphMusicAlbum
|
|
24
|
-
| OpenGraphMusicPlaylist
|
|
25
|
-
| OpenGraphRadioStation
|
|
26
|
-
| OpenGraphVideoMovie
|
|
27
|
-
| OpenGraphVideoEpisode
|
|
28
|
-
| OpenGraphVideoTVShow
|
|
29
|
-
| OpenGraphVideoOther
|
|
30
|
-
| OpenGraphMetadata
|
|
31
|
-
|
|
32
|
-
// update this type to reflect actual locales
|
|
33
|
-
type Locale = string
|
|
34
|
-
|
|
35
|
-
type OpenGraphMetadata = {
|
|
36
|
-
determiner?: 'a' | 'an' | 'the' | 'auto' | ''
|
|
37
|
-
title?: string | TemplateString
|
|
38
|
-
description?: string
|
|
39
|
-
emails?: string | Array<string>
|
|
40
|
-
phoneNumbers?: string | Array<string>
|
|
41
|
-
faxNumbers?: string | Array<string>
|
|
42
|
-
siteName?: string
|
|
43
|
-
locale?: Locale
|
|
44
|
-
alternateLocale?: Locale | Array<Locale>
|
|
45
|
-
images?: OGImage | Array<OGImage>
|
|
46
|
-
audio?: OGAudio | Array<OGAudio>
|
|
47
|
-
videos?: OGVideo | Array<OGVideo>
|
|
48
|
-
url?: string | URL
|
|
49
|
-
countryName?: string
|
|
50
|
-
ttl?: number
|
|
51
|
-
}
|
|
52
|
-
export type OpenGraphWebsite = OpenGraphMetadata & {
|
|
53
|
-
type: 'website'
|
|
54
|
-
}
|
|
55
|
-
type OpenGraphArticle = OpenGraphMetadata & {
|
|
56
|
-
type: 'article'
|
|
57
|
-
publishedTime?: string // datetime
|
|
58
|
-
modifiedTime?: string // datetime
|
|
59
|
-
expirationTime?: string // datetime
|
|
60
|
-
authors?: null | string | URL | Array<string | URL>
|
|
61
|
-
section?: null | string
|
|
62
|
-
tags?: null | string | Array<string>
|
|
63
|
-
}
|
|
64
|
-
type OpenGraphBook = OpenGraphMetadata & {
|
|
65
|
-
type: 'book'
|
|
66
|
-
isbn?: null | string
|
|
67
|
-
releaseDate?: null | string // datetime
|
|
68
|
-
authors?: null | string | URL | Array<string | URL>
|
|
69
|
-
tags?: null | string | Array<string>
|
|
70
|
-
}
|
|
71
|
-
type OpenGraphProfile = OpenGraphMetadata & {
|
|
72
|
-
type: 'profile'
|
|
73
|
-
firstName?: null | string
|
|
74
|
-
lastName?: null | string
|
|
75
|
-
username?: null | string
|
|
76
|
-
gender?: null | string
|
|
77
|
-
}
|
|
78
|
-
type OpenGraphMusicSong = OpenGraphMetadata & {
|
|
79
|
-
type: 'music.song'
|
|
80
|
-
duration?: null | number
|
|
81
|
-
albums?: null | string | URL | OGAlbum | Array<string | URL | OGAlbum>
|
|
82
|
-
musicians?: null | string | URL | Array<string | URL>
|
|
83
|
-
}
|
|
84
|
-
type OpenGraphMusicAlbum = OpenGraphMetadata & {
|
|
85
|
-
type: 'music.album'
|
|
86
|
-
songs?: null | string | URL | OGSong | Array<string | URL | OGSong>
|
|
87
|
-
musicians?: null | string | URL | Array<string | URL>
|
|
88
|
-
releaseDate?: null | string // datetime
|
|
89
|
-
}
|
|
90
|
-
type OpenGraphMusicPlaylist = OpenGraphMetadata & {
|
|
91
|
-
type: 'music.playlist'
|
|
92
|
-
songs?: null | string | URL | OGSong | Array<string | URL | OGSong>
|
|
93
|
-
creators?: null | string | URL | Array<string | URL>
|
|
94
|
-
}
|
|
95
|
-
type OpenGraphRadioStation = OpenGraphMetadata & {
|
|
96
|
-
type: 'music.radio_station'
|
|
97
|
-
creators?: null | string | URL | Array<string | URL>
|
|
98
|
-
}
|
|
99
|
-
type OpenGraphVideoMovie = OpenGraphMetadata & {
|
|
100
|
-
type: 'video.movie'
|
|
101
|
-
actors?: null | string | URL | OGActor | Array<string | URL | OGActor>
|
|
102
|
-
directors?: null | string | URL | Array<string | URL>
|
|
103
|
-
writers?: null | string | URL | Array<string | URL>
|
|
104
|
-
duration?: null | number
|
|
105
|
-
releaseDate?: null | string // datetime
|
|
106
|
-
tags?: null | string | Array<string>
|
|
107
|
-
}
|
|
108
|
-
type OpenGraphVideoEpisode = OpenGraphMetadata & {
|
|
109
|
-
type: 'video.episode'
|
|
110
|
-
actors?: null | string | URL | OGActor | Array<string | URL | OGActor>
|
|
111
|
-
directors?: null | string | URL | Array<string | URL>
|
|
112
|
-
writers?: null | string | URL | Array<string | URL>
|
|
113
|
-
duration?: null | number
|
|
114
|
-
releaseDate?: null | string // datetime
|
|
115
|
-
tags?: null | string | Array<string>
|
|
116
|
-
series?: null | string | URL
|
|
117
|
-
}
|
|
118
|
-
type OpenGraphVideoTVShow = OpenGraphMetadata & {
|
|
119
|
-
type: 'video.tv_show'
|
|
120
|
-
}
|
|
121
|
-
type OpenGraphVideoOther = OpenGraphMetadata & {
|
|
122
|
-
type: 'video.other'
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export type OGImage = string | OGImageDescriptor | URL
|
|
126
|
-
type OGImageDescriptor = {
|
|
127
|
-
url: string | URL
|
|
128
|
-
secureUrl?: string | URL
|
|
129
|
-
alt?: string
|
|
130
|
-
type?: string
|
|
131
|
-
width?: string | number
|
|
132
|
-
height?: string | number
|
|
133
|
-
}
|
|
134
|
-
type OGAudio = string | OGAudioDescriptor | URL
|
|
135
|
-
type OGAudioDescriptor = {
|
|
136
|
-
url: string | URL
|
|
137
|
-
secureUrl?: string | URL
|
|
138
|
-
type?: string
|
|
139
|
-
}
|
|
140
|
-
type OGVideo = string | OGVideoDescriptor | URL
|
|
141
|
-
type OGVideoDescriptor = {
|
|
142
|
-
url: string | URL
|
|
143
|
-
secureUrl?: string | URL
|
|
144
|
-
type?: string
|
|
145
|
-
width?: string | number
|
|
146
|
-
height?: string | number
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export type ResolvedOpenGraph =
|
|
150
|
-
| ResolvedOpenGraphWebsite
|
|
151
|
-
| ResolvedOpenGraphArticle
|
|
152
|
-
| ResolvedOpenGraphBook
|
|
153
|
-
| ResolvedOpenGraphProfile
|
|
154
|
-
| ResolvedOpenGraphMusicSong
|
|
155
|
-
| ResolvedOpenGraphMusicAlbum
|
|
156
|
-
| ResolvedOpenGraphMusicPlaylist
|
|
157
|
-
| ResolvedOpenGraphRadioStation
|
|
158
|
-
| ResolvedOpenGraphVideoMovie
|
|
159
|
-
| ResolvedOpenGraphVideoEpisode
|
|
160
|
-
| ResolvedOpenGraphVideoTVShow
|
|
161
|
-
| ResolvedOpenGraphVideoOther
|
|
162
|
-
| ResolvedOpenGraphMetadata
|
|
163
|
-
|
|
164
|
-
type ResolvedOpenGraphMetadata = {
|
|
165
|
-
determiner?: 'a' | 'an' | 'the' | 'auto' | ''
|
|
166
|
-
title: AbsoluteTemplateString
|
|
167
|
-
description?: string
|
|
168
|
-
emails?: Array<string>
|
|
169
|
-
phoneNumbers?: Array<string>
|
|
170
|
-
faxNumbers?: Array<string>
|
|
171
|
-
siteName?: string
|
|
172
|
-
locale?: Locale
|
|
173
|
-
alternateLocale?: Array<Locale>
|
|
174
|
-
images?: Array<OGImage>
|
|
175
|
-
audio?: Array<OGAudio>
|
|
176
|
-
videos?: Array<OGVideo>
|
|
177
|
-
url: null | URL | string
|
|
178
|
-
countryName?: string
|
|
179
|
-
ttl?: number
|
|
180
|
-
}
|
|
181
|
-
type ResolvedOpenGraphWebsite = ResolvedOpenGraphMetadata & {
|
|
182
|
-
type: 'website'
|
|
183
|
-
}
|
|
184
|
-
type ResolvedOpenGraphArticle = ResolvedOpenGraphMetadata & {
|
|
185
|
-
type: 'article'
|
|
186
|
-
publishedTime?: string // datetime
|
|
187
|
-
modifiedTime?: string // datetime
|
|
188
|
-
expirationTime?: string // datetime
|
|
189
|
-
authors?: Array<string>
|
|
190
|
-
section?: string
|
|
191
|
-
tags?: Array<string>
|
|
192
|
-
}
|
|
193
|
-
type ResolvedOpenGraphBook = ResolvedOpenGraphMetadata & {
|
|
194
|
-
type: 'book'
|
|
195
|
-
isbn?: string
|
|
196
|
-
releaseDate?: string // datetime
|
|
197
|
-
authors?: Array<string>
|
|
198
|
-
tags?: Array<string>
|
|
199
|
-
}
|
|
200
|
-
type ResolvedOpenGraphProfile = ResolvedOpenGraphMetadata & {
|
|
201
|
-
type: 'profile'
|
|
202
|
-
firstName?: string
|
|
203
|
-
lastName?: string
|
|
204
|
-
username?: string
|
|
205
|
-
gender?: string
|
|
206
|
-
}
|
|
207
|
-
type ResolvedOpenGraphMusicSong = ResolvedOpenGraphMetadata & {
|
|
208
|
-
type: 'music.song'
|
|
209
|
-
duration?: number
|
|
210
|
-
albums?: Array<OGAlbum>
|
|
211
|
-
musicians?: Array<string | URL>
|
|
212
|
-
}
|
|
213
|
-
type ResolvedOpenGraphMusicAlbum = ResolvedOpenGraphMetadata & {
|
|
214
|
-
type: 'music.album'
|
|
215
|
-
songs?: Array<string | URL | OGSong>
|
|
216
|
-
musicians?: Array<string | URL>
|
|
217
|
-
releaseDate?: string // datetime
|
|
218
|
-
}
|
|
219
|
-
type ResolvedOpenGraphMusicPlaylist = ResolvedOpenGraphMetadata & {
|
|
220
|
-
type: 'music.playlist'
|
|
221
|
-
songs?: Array<string | URL | OGSong>
|
|
222
|
-
creators?: Array<string | URL>
|
|
223
|
-
}
|
|
224
|
-
type ResolvedOpenGraphRadioStation = ResolvedOpenGraphMetadata & {
|
|
225
|
-
type: 'music.radio_station'
|
|
226
|
-
creators?: Array<string | URL>
|
|
227
|
-
}
|
|
228
|
-
type ResolvedOpenGraphVideoMovie = ResolvedOpenGraphMetadata & {
|
|
229
|
-
type: 'video.movie'
|
|
230
|
-
actors?: Array<string | URL | OGActor>
|
|
231
|
-
directors?: Array<string | URL>
|
|
232
|
-
writers?: Array<string | URL>
|
|
233
|
-
duration?: number
|
|
234
|
-
releaseDate?: string // datetime
|
|
235
|
-
tags?: Array<string>
|
|
236
|
-
}
|
|
237
|
-
type ResolvedOpenGraphVideoEpisode = ResolvedOpenGraphMetadata & {
|
|
238
|
-
type: 'video.episode'
|
|
239
|
-
actors?: Array<string | URL | OGActor>
|
|
240
|
-
directors?: Array<string | URL>
|
|
241
|
-
writers?: Array<string | URL>
|
|
242
|
-
duration?: number
|
|
243
|
-
releaseDate?: string // datetime
|
|
244
|
-
tags?: Array<string>
|
|
245
|
-
series?: string | URL
|
|
246
|
-
}
|
|
247
|
-
type ResolvedOpenGraphVideoTVShow = ResolvedOpenGraphMetadata & {
|
|
248
|
-
type: 'video.tv_show'
|
|
249
|
-
}
|
|
250
|
-
type ResolvedOpenGraphVideoOther = ResolvedOpenGraphMetadata & {
|
|
251
|
-
type: 'video.other'
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
type OGSong = {
|
|
255
|
-
url: string | URL
|
|
256
|
-
disc?: number
|
|
257
|
-
track?: number
|
|
258
|
-
}
|
|
259
|
-
type OGAlbum = {
|
|
260
|
-
url: string | URL
|
|
261
|
-
disc?: number
|
|
262
|
-
track?: number
|
|
263
|
-
}
|
|
264
|
-
type OGActor = {
|
|
265
|
-
url: string | URL
|
|
266
|
-
role?: string
|
|
267
|
-
}
|