@luxfi/core 5.2.10 → 5.2.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. package/commerce/ui/conf.ts +13 -13
  2. package/commerce/ui/context.tsx +126 -126
  3. package/commerce/ui/store.ts +306 -304
  4. package/components/access-code-input.tsx +71 -71
  5. package/components/auth/auth-listener.tsx +29 -29
  6. package/components/auth/auth-token/clear-auth-token.tsx +12 -12
  7. package/components/auth/auth-token/set-auth-token.tsx +16 -16
  8. package/components/auth/common-auth-domains.ts +16 -16
  9. package/components/auth/login-panel.tsx +107 -107
  10. package/components/back-button.tsx +49 -42
  11. package/components/chat-widget.tsx +85 -85
  12. package/components/commerce/add-widget.tsx +20 -20
  13. package/components/commerce/bag-button.tsx +98 -98
  14. package/components/commerce/buy-button.tsx +34 -34
  15. package/components/commerce/checkout-button.tsx +129 -129
  16. package/components/commerce/checkout-panel/cart-accordian.tsx +66 -0
  17. package/components/commerce/checkout-panel/checkout-panel-props.ts +10 -0
  18. package/components/commerce/checkout-panel/{dt-bag-carousel.tsx → desktop-bag-carousel.tsx} +36 -36
  19. package/components/commerce/checkout-panel/desktop-cp.tsx +83 -0
  20. package/components/commerce/checkout-panel/index.tsx +126 -129
  21. package/components/commerce/checkout-panel/mobile-cp.tsx +67 -0
  22. package/components/commerce/checkout-panel/policy-links.tsx +29 -0
  23. package/components/commerce/checkout-panel/steps-indicator.tsx +39 -39
  24. package/components/commerce/checkout-panel/thank-you.tsx +18 -18
  25. package/components/commerce/checkout-widget/const.ts +13 -13
  26. package/components/commerce/checkout-widget/index.tsx +192 -192
  27. package/components/commerce/checkout-widget/obs-string-set.ts +48 -48
  28. package/components/commerce/checkout-widget/use-anim-clx-set.ts +58 -58
  29. package/components/commerce/desktop-bag-popup.tsx +78 -78
  30. package/components/commerce/desktop-nav-menu.tsx +130 -130
  31. package/components/commerce/drawer/index.tsx +99 -99
  32. package/components/commerce/drawer/micro.tsx +144 -144
  33. package/components/commerce/drawer/shell.tsx +85 -85
  34. package/components/commerce/mobile-bag-drawer.tsx +51 -51
  35. package/components/commerce/mobile-login-button.tsx +101 -101
  36. package/components/commerce/mobile-menu-toggle-button.tsx +35 -35
  37. package/components/commerce/mobile-nav-menu-ai.tsx +47 -48
  38. package/components/commerce/mobile-nav-menu-item.tsx +49 -49
  39. package/components/commerce/mobile-nav-menu.tsx +101 -101
  40. package/components/contact-dialog/contact-form.tsx +113 -113
  41. package/components/contact-dialog/disclaimer.tsx +13 -13
  42. package/components/contact-dialog/index.tsx +64 -64
  43. package/components/copyright.tsx +21 -21
  44. package/components/drawer-margin.tsx +25 -25
  45. package/components/footer.tsx +77 -77
  46. package/components/header/desktop.tsx +50 -50
  47. package/components/header/index.tsx +52 -52
  48. package/components/header/mobile.tsx +163 -163
  49. package/components/header/theme-toggle.tsx +26 -26
  50. package/components/icons/24k-gold-card.tsx +43 -43
  51. package/components/icons/ai-chat.tsx +29 -29
  52. package/components/icons/anodized-titanium.tsx +45 -45
  53. package/components/icons/avatar.tsx +11 -11
  54. package/components/icons/bag-icon.tsx +10 -10
  55. package/components/icons/blog.tsx +20 -20
  56. package/components/icons/bridge.tsx +68 -68
  57. package/components/icons/changelog.tsx +21 -21
  58. package/components/icons/chrome.tsx +45 -45
  59. package/components/icons/coins.tsx +20 -20
  60. package/components/icons/compare-cards.tsx +21 -21
  61. package/components/icons/credit.tsx +20 -20
  62. package/components/icons/customer-support.tsx +21 -21
  63. package/components/icons/customers.tsx +33 -33
  64. package/components/icons/developer-docs.tsx +20 -20
  65. package/components/icons/exchange.tsx +21 -21
  66. package/components/icons/explorer.tsx +22 -22
  67. package/components/icons/faqs.tsx +21 -21
  68. package/components/icons/github.tsx +14 -14
  69. package/components/icons/guides.tsx +21 -21
  70. package/components/icons/gun-metal.tsx +44 -44
  71. package/components/icons/index.tsx +43 -43
  72. package/components/icons/integrations.tsx +25 -25
  73. package/components/icons/irradescent.tsx +41 -41
  74. package/components/icons/launch-subnet.tsx +21 -21
  75. package/components/icons/left-arrow.tsx +11 -11
  76. package/components/icons/lux-finance.tsx +23 -23
  77. package/components/icons/lux-logo.tsx +10 -10
  78. package/components/icons/lux-pass.tsx +25 -25
  79. package/components/icons/lux-quests.tsx +21 -21
  80. package/components/icons/market.tsx +24 -24
  81. package/components/icons/mirrored-titanium.tsx +46 -46
  82. package/components/icons/more-benefits.tsx +21 -21
  83. package/components/icons/open-source.tsx +26 -26
  84. package/components/icons/right-arrow.tsx +10 -10
  85. package/components/icons/safe.tsx +37 -37
  86. package/components/icons/search.tsx +12 -12
  87. package/components/icons/secure-delivery.tsx +13 -13
  88. package/components/icons/shop.tsx +20 -20
  89. package/components/icons/social-icon.tsx +35 -35
  90. package/components/icons/social-svg.css +3 -3
  91. package/components/icons/sterling-silver-card.tsx +44 -44
  92. package/components/icons/templates.tsx +21 -21
  93. package/components/icons/validators.tsx +41 -41
  94. package/components/icons/view-all-card.tsx +20 -20
  95. package/components/icons/wallet.tsx +20 -20
  96. package/components/icons/warpcast.tsx +58 -58
  97. package/components/icons/youtube-logo.tsx +59 -59
  98. package/components/index.ts +27 -27
  99. package/components/logo.tsx +89 -89
  100. package/components/main.tsx +27 -27
  101. package/components/mini-chart/index.tsx +7 -7
  102. package/components/mini-chart/mini-chart-props.ts +43 -43
  103. package/components/mini-chart/mini-chart.tsx +85 -85
  104. package/components/mini-chart/wrapper.tsx +23 -23
  105. package/components/not-found/index.tsx +28 -28
  106. package/components/not-found/not-found-content.mdx +5 -5
  107. package/components/scripts.tsx +24 -24
  108. package/components/tooltip.tsx +31 -31
  109. package/environment.d.ts +5 -5
  110. package/next/analytics/fpixel.ts +15 -15
  111. package/next/analytics/google-analytics.ts +13 -13
  112. package/next/analytics/index.ts +3 -3
  113. package/next/analytics/pixel-analytics.tsx +54 -54
  114. package/next/font/get-app-router-font-classes.ts +12 -12
  115. package/next/font/load-and-return-lux-next-fonts-on-import.ts +68 -68
  116. package/next/font/next-font-desc.ts +27 -27
  117. package/next/font/pages-router-font-vars.tsx +18 -18
  118. package/next/head-metadata/from-next/metadata-types.ts +158 -158
  119. package/next/head-metadata/from-next/opengraph-types.ts +267 -267
  120. package/next/head-metadata/from-next/twitter-types.ts +92 -92
  121. package/next/head-metadata/index.tsx +208 -208
  122. package/next/middleware/determine-device-mw.ts +16 -16
  123. package/package.json +79 -79
  124. package/root-layout/WHY_THIS_IS_SEPARATE.txt +1 -1
  125. package/root-layout/index.tsx +112 -112
  126. package/server-actions/firebase-app.ts +14 -14
  127. package/server-actions/index.ts +5 -5
  128. package/server-actions/store-contact.ts +51 -51
  129. package/site-def/footer/community.tsx +67 -67
  130. package/site-def/footer/company.ts +37 -37
  131. package/site-def/footer/ecosystem.ts +37 -37
  132. package/site-def/footer/index.tsx +26 -26
  133. package/site-def/footer/legal.ts +28 -28
  134. package/site-def/footer/network.ts +45 -45
  135. package/site-def/footer/svg/warpcast-logo.svg +11 -11
  136. package/site-def/index.ts +2 -2
  137. package/site-def/main-nav.tsx +392 -392
  138. package/style/cart-animation.css +29 -29
  139. package/style/checkout-animation.css +23 -23
  140. package/style/drawer-handle-overrides.css +160 -160
  141. package/style/lux-colors.css +85 -85
  142. package/style/lux-global.css +30 -30
  143. package/tailwind/fontFamily.tailwind.lux.ts +18 -18
  144. package/tailwind/index.ts +2 -2
  145. package/tailwind/lux-tw-fonts.ts +39 -39
  146. package/tailwind/tailwind.config.lux-preset.ts +10 -10
  147. package/tsconfig.json +15 -15
  148. package/types/chatbot-config.ts +6 -6
  149. package/types/chatbot-suggested-question.ts +7 -7
  150. package/types/contact-info.ts +10 -10
  151. package/types/index.ts +4 -4
  152. package/types/site-def.ts +43 -43
  153. package/components/commerce/checkout-panel/dt-checkout-panel.tsx +0 -85
  154. package/components/commerce/checkout-panel/links-row.tsx +0 -21
  155. package/components/commerce/checkout-panel/mb-checkout-panel.tsx +0 -55
@@ -1,68 +1,68 @@
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
-
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
+
@@ -1,28 +1,28 @@
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,
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
28
  }
@@ -1,18 +1,18 @@
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
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
@@ -1,158 +1,158 @@
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
+ /**
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
+ }