@luxfi/core 5.3.1 → 5.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. package/commerce/ui/conf.ts +13 -13
  2. package/commerce/ui/context.tsx +123 -126
  3. package/commerce/ui/store.ts +289 -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/{checkout-widget → _to_deprecate_checkout-widget}/const.ts +13 -13
  13. package/components/commerce/{checkout-widget/index.tsx → _to_deprecate_checkout-widget/index.tsx_} +188 -192
  14. package/components/commerce/{checkout-widget → _to_deprecate_checkout-widget}/obs-string-set.ts +48 -48
  15. package/components/commerce/{checkout-widget → _to_deprecate_checkout-widget}/use-anim-clx-set.ts +58 -58
  16. package/components/commerce/bag-button.tsx +98 -98
  17. package/components/commerce/buy-button.tsx +34 -34
  18. package/components/commerce/checkout-button.tsx +129 -129
  19. package/components/commerce/checkout-panel/cart-accordian.tsx +66 -0
  20. package/components/commerce/checkout-panel/checkout-panel-props.ts +10 -0
  21. package/components/commerce/checkout-panel/{dt-bag-carousel.tsx → desktop-bag-carousel.tsx} +36 -36
  22. package/components/commerce/checkout-panel/desktop-cp.tsx +83 -0
  23. package/components/commerce/checkout-panel/index.tsx +126 -129
  24. package/components/commerce/checkout-panel/mobile-cp.tsx +67 -0
  25. package/components/commerce/checkout-panel/policy-links.tsx +29 -0
  26. package/components/commerce/checkout-panel/steps-indicator.tsx +39 -39
  27. package/components/commerce/checkout-panel/thank-you.tsx +18 -18
  28. package/components/commerce/desktop-bag-popup.tsx +78 -78
  29. package/components/commerce/desktop-nav-menu.tsx +130 -130
  30. package/components/commerce/drawer/index.tsx +88 -99
  31. package/components/commerce/drawer/micro.tsx +145 -144
  32. package/components/commerce/drawer/shell.tsx +85 -85
  33. package/components/commerce/mobile-bag-drawer.tsx +51 -51
  34. package/components/commerce/mobile-login-button.tsx +107 -107
  35. package/components/commerce/mobile-menu-toggle-button.tsx +35 -35
  36. package/components/commerce/mobile-nav-menu-ai.tsx +50 -51
  37. package/components/commerce/mobile-nav-menu-item.tsx +49 -49
  38. package/components/commerce/mobile-nav-menu.tsx +101 -101
  39. package/components/contact-dialog/contact-form.tsx +113 -113
  40. package/components/contact-dialog/disclaimer.tsx +13 -13
  41. package/components/contact-dialog/index.tsx +64 -64
  42. package/components/copyright.tsx +21 -21
  43. package/components/drawer-margin.tsx +25 -25
  44. package/components/footer.tsx +77 -77
  45. package/components/header/desktop.tsx +51 -51
  46. package/components/header/index.tsx +50 -50
  47. package/components/header/mobile.tsx +163 -163
  48. package/components/header/theme-toggle.tsx +26 -26
  49. package/components/icons/24k-gold-card.tsx +43 -43
  50. package/components/icons/ai-chat-act.tsx +47 -47
  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-act.tsx +14 -14
  56. package/components/icons/blog.tsx +20 -20
  57. package/components/icons/bridge-act.tsx +18 -18
  58. package/components/icons/bridge.tsx +68 -68
  59. package/components/icons/changelog-act.tsx +15 -15
  60. package/components/icons/changelog.tsx +21 -21
  61. package/components/icons/chrome.tsx +45 -45
  62. package/components/icons/coins-act.tsx +29 -29
  63. package/components/icons/coins.tsx +20 -20
  64. package/components/icons/compare-cards-act.tsx +30 -30
  65. package/components/icons/compare-cards.tsx +21 -21
  66. package/components/icons/credit-act.tsx +29 -29
  67. package/components/icons/credit.tsx +20 -20
  68. package/components/icons/customer-support-act.tsx +27 -27
  69. package/components/icons/customer-support.tsx +21 -21
  70. package/components/icons/customers-act.tsx +65 -65
  71. package/components/icons/customers.tsx +33 -33
  72. package/components/icons/developer-docs-act.tsx +26 -26
  73. package/components/icons/developer-docs.tsx +20 -20
  74. package/components/icons/exchange-act.tsx +27 -27
  75. package/components/icons/exchange.tsx +21 -21
  76. package/components/icons/explorer-act.tsx +27 -27
  77. package/components/icons/explorer.tsx +22 -22
  78. package/components/icons/faqs-act.tsx +27 -27
  79. package/components/icons/faqs.tsx +21 -21
  80. package/components/icons/github.tsx +14 -14
  81. package/components/icons/guides-act.tsx +26 -26
  82. package/components/icons/guides.tsx +21 -21
  83. package/components/icons/gun-metal.tsx +44 -44
  84. package/components/icons/index.tsx +43 -43
  85. package/components/icons/integrations-act.tsx +41 -41
  86. package/components/icons/integrations.tsx +25 -25
  87. package/components/icons/irradescent.tsx +41 -41
  88. package/components/icons/launch-subnet.tsx +21 -21
  89. package/components/icons/launchsubnet-act.tsx +29 -29
  90. package/components/icons/left-arrow.tsx +11 -11
  91. package/components/icons/lux-finance-act.tsx +34 -34
  92. package/components/icons/lux-finance.tsx +23 -23
  93. package/components/icons/lux-logo.tsx +10 -10
  94. package/components/icons/lux-pass-act.tsx +41 -41
  95. package/components/icons/lux-pass.tsx +25 -25
  96. package/components/icons/lux-quests-act.tsx +15 -15
  97. package/components/icons/lux-quests.tsx +21 -21
  98. package/components/icons/market-act.tsx +39 -39
  99. package/components/icons/market.tsx +24 -24
  100. package/components/icons/mirrored-titanium.tsx +46 -46
  101. package/components/icons/more-benefits-act.tsx +29 -29
  102. package/components/icons/more-benefits.tsx +21 -21
  103. package/components/icons/open-source-act.tsx +41 -41
  104. package/components/icons/open-source.tsx +26 -26
  105. package/components/icons/right-arrow.tsx +10 -10
  106. package/components/icons/safe-act.tsx +77 -77
  107. package/components/icons/safe.tsx +37 -37
  108. package/components/icons/search.tsx +12 -12
  109. package/components/icons/secure-delivery.tsx +13 -13
  110. package/components/icons/shop-act.tsx +29 -29
  111. package/components/icons/shop.tsx +20 -20
  112. package/components/icons/social-icon.tsx +35 -35
  113. package/components/icons/social-svg.css +3 -3
  114. package/components/icons/sterling-silver-card.tsx +44 -44
  115. package/components/icons/templates-act.tsx +29 -29
  116. package/components/icons/templates.tsx +21 -21
  117. package/components/icons/validators-act.tsx +42 -42
  118. package/components/icons/validators.tsx +41 -41
  119. package/components/icons/view-all-card-act.tsx +28 -28
  120. package/components/icons/view-all-card.tsx +20 -20
  121. package/components/icons/wallet-act.tsx +29 -29
  122. package/components/icons/wallet.tsx +20 -20
  123. package/components/icons/warpcast.tsx +58 -58
  124. package/components/icons/youtube-logo.tsx +59 -59
  125. package/components/index.ts +25 -27
  126. package/components/logo.tsx +89 -89
  127. package/components/main.tsx +27 -27
  128. package/components/mini-chart/index.tsx +7 -7
  129. package/components/mini-chart/mini-chart-props.ts +43 -43
  130. package/components/mini-chart/mini-chart.tsx +85 -85
  131. package/components/mini-chart/wrapper.tsx +23 -23
  132. package/components/not-found/index.tsx +28 -28
  133. package/components/not-found/not-found-content.mdx +5 -5
  134. package/components/scripts.tsx +24 -24
  135. package/components/tooltip.tsx +31 -31
  136. package/environment.d.ts +5 -5
  137. package/next/analytics/fpixel.ts +15 -15
  138. package/next/analytics/google-analytics.ts +13 -13
  139. package/next/analytics/index.ts +3 -3
  140. package/next/analytics/pixel-analytics.tsx +54 -54
  141. package/next/font/get-app-router-font-classes.ts +12 -12
  142. package/next/font/load-and-return-lux-next-fonts-on-import.ts +68 -68
  143. package/next/font/next-font-desc.ts +27 -27
  144. package/next/font/pages-router-font-vars.tsx +18 -18
  145. package/next/head-metadata/from-next/metadata-types.ts +158 -158
  146. package/next/head-metadata/from-next/opengraph-types.ts +267 -267
  147. package/next/head-metadata/from-next/twitter-types.ts +92 -92
  148. package/next/head-metadata/index.tsx +208 -208
  149. package/next/middleware/determine-device-mw.ts +16 -16
  150. package/package.json +79 -79
  151. package/root-layout/WHY_THIS_IS_SEPARATE.txt +1 -1
  152. package/root-layout/index.tsx +112 -112
  153. package/server-actions/firebase-app.ts +14 -14
  154. package/server-actions/index.ts +5 -5
  155. package/server-actions/store-contact.ts +51 -51
  156. package/site-def/footer/community.tsx +67 -67
  157. package/site-def/footer/company.ts +37 -37
  158. package/site-def/footer/ecosystem.ts +37 -37
  159. package/site-def/footer/index.tsx +26 -26
  160. package/site-def/footer/legal.ts +28 -28
  161. package/site-def/footer/network.ts +45 -45
  162. package/site-def/footer/svg/warpcast-logo.svg +11 -11
  163. package/site-def/index.ts +2 -2
  164. package/site-def/main-nav.tsx +458 -458
  165. package/style/cart-animation.css +29 -29
  166. package/style/checkout-animation.css +23 -23
  167. package/style/drawer-handle-overrides.css +160 -160
  168. package/style/lux-colors.css +85 -85
  169. package/style/lux-global.css +50 -50
  170. package/tailwind/fontFamily.tailwind.lux.ts +18 -18
  171. package/tailwind/index.ts +2 -2
  172. package/tailwind/lux-tw-fonts.ts +39 -39
  173. package/tailwind/tailwind.config.lux-preset.ts +10 -10
  174. package/tsconfig.json +15 -15
  175. package/types/chatbot-config.ts +6 -6
  176. package/types/chatbot-suggested-question.ts +7 -7
  177. package/types/contact-info.ts +10 -10
  178. package/types/index.ts +4 -4
  179. package/types/site-def.ts +43 -43
  180. package/components/commerce/add-widget.tsx +0 -20
  181. package/components/commerce/checkout-panel/dt-checkout-panel.tsx +0 -85
  182. package/components/commerce/checkout-panel/links-row.tsx +0 -21
  183. package/components/commerce/checkout-panel/mb-checkout-panel.tsx +0 -55
@@ -1,51 +1,51 @@
1
- /* Note, preflight is applied first:
2
- https://unpkg.com/tailwindcss@3.3.5/src/css/preflight.css
3
- */
4
- @import "tailwindcss/base";
5
-
6
- /* see https://stackoverflow.com/questions/69746121/using-nextjs-how-can-you-import-in-css-using-tailwind-css */
7
- @import "@hanzo/ui/style/hanzo-common";
8
- @import "lux-colors";
9
-
10
- @import "tailwindcss/components";
11
- @import "tailwindcss/utilities";
12
-
13
- div.nextjs-toast-errors-parent[data-nextjs-toast="true"] {
14
- display: none;
15
- }
16
-
17
- .font-heading {
18
- @apply uppercase;
19
- }
20
-
21
- /* Specific style fixes for react-square-web-payments-sdk -
22
- * reduce gap between card input and pay button
23
- */
24
- #rswps-card-container {
25
- min-height: unset !important;
26
- }
27
-
28
- .sq-card-wrapper .sq-card-message {
29
- margin-top: 0 !important;
30
- margin-bottom: 0 !important;
31
- }
32
-
33
-
34
- .element-container:hover .icon-container-nor {
35
- display: none;
36
- }
37
-
38
- .icon-container-hov {
39
- display: none;
40
- }
41
-
42
- .element-container:hover .icon-container-hov {
43
- display: block !important;
44
- }
45
-
46
- .element-container:hover .text-container {
47
- background: transparent;
48
- }
49
- .overflow-scroll::-webkit-scrollbar{
50
- display:none;
1
+ /* Note, preflight is applied first:
2
+ https://unpkg.com/tailwindcss@3.3.5/src/css/preflight.css
3
+ */
4
+ @import "tailwindcss/base";
5
+
6
+ /* see https://stackoverflow.com/questions/69746121/using-nextjs-how-can-you-import-in-css-using-tailwind-css */
7
+ @import "@hanzo/ui/style/hanzo-common";
8
+ @import "lux-colors";
9
+
10
+ @import "tailwindcss/components";
11
+ @import "tailwindcss/utilities";
12
+
13
+ div.nextjs-toast-errors-parent[data-nextjs-toast="true"] {
14
+ display: none;
15
+ }
16
+
17
+ .font-heading {
18
+ @apply uppercase;
19
+ }
20
+
21
+ /* Specific style fixes for react-square-web-payments-sdk -
22
+ * reduce gap between card input and pay button
23
+ */
24
+ #rswps-card-container {
25
+ min-height: unset !important;
26
+ }
27
+
28
+ .sq-card-wrapper .sq-card-message {
29
+ margin-top: 0 !important;
30
+ margin-bottom: 0 !important;
31
+ }
32
+
33
+
34
+ .element-container:hover .icon-container-nor {
35
+ display: none;
36
+ }
37
+
38
+ .icon-container-hov {
39
+ display: none;
40
+ }
41
+
42
+ .element-container:hover .icon-container-hov {
43
+ display: block !important;
44
+ }
45
+
46
+ .element-container:hover .text-container {
47
+ background: transparent;
48
+ }
49
+ .overflow-scroll::-webkit-scrollbar{
50
+ display:none;
51
51
  }
@@ -1,18 +1,18 @@
1
- import type { TwFontDesc } from '@hanzo/ui/tailwind'
2
-
3
- import luxTwFonts from './lux-tw-fonts'
4
-
5
- export const fontFamily = (ignoreTheme: any): {
6
- [key: string]: string[]
7
- } => {
8
-
9
- let result: any = {}
10
- luxTwFonts.forEach((font: TwFontDesc) => {
11
- result[font.twName] = font.fontFamily
12
- // eg: heading: ['var(--font-druk-text-wide)']
13
- })
14
-
15
- return result as {
16
- [key: string]: string[]
17
- }
18
- }
1
+ import type { TwFontDesc } from '@hanzo/ui/tailwind'
2
+
3
+ import luxTwFonts from './lux-tw-fonts'
4
+
5
+ export const fontFamily = (ignoreTheme: any): {
6
+ [key: string]: string[]
7
+ } => {
8
+
9
+ let result: any = {}
10
+ luxTwFonts.forEach((font: TwFontDesc) => {
11
+ result[font.twName] = font.fontFamily
12
+ // eg: heading: ['var(--font-druk-text-wide)']
13
+ })
14
+
15
+ return result as {
16
+ [key: string]: string[]
17
+ }
18
+ }
package/tailwind/index.ts CHANGED
@@ -1,2 +1,2 @@
1
-
2
- export {default as preset} from './tailwind.config.lux-preset'
1
+
2
+ export {default as preset} from './tailwind.config.lux-preset'
@@ -1,40 +1,40 @@
1
- import type { TwFontDesc } from '@hanzo/ui/tailwind'
2
-
3
-
4
- /* NOTE: /next/load-and-return....ts depends on this file! */
5
-
6
- export default [
7
- {
8
- fontFamily: ['var(--font-inter)'], // do not provide fall-backs due to next bug
9
- cssVar: '--font-inter',
10
- twName: 'sans'
11
- },
12
- {
13
- fontFamily: ['var(--font-druk-text-wide)'], // do not provide fall-backs due to next bug
14
- cssVar: '--font-druk-text-wide',
15
- twName: 'nav'
16
- },
17
- {
18
- fontFamily: ['var(--font-druk-wide)'], // do not provide fall-backs due to next bug
19
- cssVar: '--font-druk-wide',
20
- twName: 'heading'
21
- },
22
- {
23
- twName: 'serif',
24
- fontFamily: ['ui-serif', 'Georgia', 'Cambria', '"Times New Roman"', 'Times']
25
- },
26
- {
27
- twName: 'mono',
28
- fontFamily: [
29
- 'ui-monospace',
30
- 'SFMono-Regular',
31
- 'Menlo',
32
- 'Monaco',
33
- 'Consolas',
34
- '"Liberation Mono"',
35
- '"Courier New"',
36
- 'monospace',
37
- ]
38
- }
39
-
1
+ import type { TwFontDesc } from '@hanzo/ui/tailwind'
2
+
3
+
4
+ /* NOTE: /next/load-and-return....ts depends on this file! */
5
+
6
+ export default [
7
+ {
8
+ fontFamily: ['var(--font-inter)'], // do not provide fall-backs due to next bug
9
+ cssVar: '--font-inter',
10
+ twName: 'sans'
11
+ },
12
+ {
13
+ fontFamily: ['var(--font-druk-text-wide)'], // do not provide fall-backs due to next bug
14
+ cssVar: '--font-druk-text-wide',
15
+ twName: 'nav'
16
+ },
17
+ {
18
+ fontFamily: ['var(--font-druk-wide)'], // do not provide fall-backs due to next bug
19
+ cssVar: '--font-druk-wide',
20
+ twName: 'heading'
21
+ },
22
+ {
23
+ twName: 'serif',
24
+ fontFamily: ['ui-serif', 'Georgia', 'Cambria', '"Times New Roman"', 'Times']
25
+ },
26
+ {
27
+ twName: 'mono',
28
+ fontFamily: [
29
+ 'ui-monospace',
30
+ 'SFMono-Regular',
31
+ 'Menlo',
32
+ 'Monaco',
33
+ 'Consolas',
34
+ '"Liberation Mono"',
35
+ '"Courier New"',
36
+ 'monospace',
37
+ ]
38
+ }
39
+
40
40
  ] as TwFontDesc[]
@@ -1,10 +1,10 @@
1
- import type { Config } from 'tailwindcss'
2
- import { preset } from '@hanzo/ui/tailwind'
3
- import { fontFamily } from './fontFamily.tailwind.lux'
4
-
5
- export default {
6
- presets: [preset],
7
- content: [],
8
- theme: { fontFamily }
9
- } satisfies Config
10
-
1
+ import type { Config } from 'tailwindcss'
2
+ import { preset } from '@hanzo/ui/tailwind'
3
+ import { fontFamily } from './fontFamily.tailwind.lux'
4
+
5
+ export default {
6
+ presets: [preset],
7
+ content: [],
8
+ theme: { fontFamily }
9
+ } satisfies Config
10
+
package/tsconfig.json CHANGED
@@ -1,15 +1,15 @@
1
- {
2
- "extends": "../tsconfig.modules.base.json",
3
- "include": [
4
- "**/*.ts",
5
- "**/*.tsx",
6
- ],
7
- "exclude": [
8
- "node_modules",
9
- ],
10
- "compilerOptions": {
11
- "paths": {
12
- "react": [ "./node_modules/@types/react" ],
13
- }
14
- }
15
- }
1
+ {
2
+ "extends": "../tsconfig.modules.base.json",
3
+ "include": [
4
+ "**/*.ts",
5
+ "**/*.tsx", "components/commerce/_to_deprecate_checkout-widget/index.tsx_",
6
+ ],
7
+ "exclude": [
8
+ "node_modules",
9
+ ],
10
+ "compilerOptions": {
11
+ "paths": {
12
+ "react": [ "./node_modules/@types/react" ],
13
+ }
14
+ }
15
+ }
@@ -1,7 +1,7 @@
1
- import type ChatbotSuggestQuestion from './chatbot-suggested-question'
2
-
3
- interface ChatbotConfig {
4
- suggestedQuestions?: ChatbotSuggestQuestion[]
5
- }
6
-
1
+ import type ChatbotSuggestQuestion from './chatbot-suggested-question'
2
+
3
+ interface ChatbotConfig {
4
+ suggestedQuestions?: ChatbotSuggestQuestion[]
5
+ }
6
+
7
7
  export { type ChatbotConfig as default }
@@ -1,7 +1,7 @@
1
- interface ChatbotSuggestedQuestion {
2
- heading: string
3
- message: string
4
- icon?: string
5
- }
6
-
7
- export { type ChatbotSuggestedQuestion as default }
1
+ interface ChatbotSuggestedQuestion {
2
+ heading: string
3
+ message: string
4
+ icon?: string
5
+ }
6
+
7
+ export { type ChatbotSuggestedQuestion as default }
@@ -1,11 +1,11 @@
1
- interface ContactInfo {
2
- email: string
3
- phone?: string
4
- }
5
-
6
- type ContactInfoFields = keyof ContactInfo
7
-
8
- export {
9
- type ContactInfo,
10
- type ContactInfoFields
1
+ interface ContactInfo {
2
+ email: string
3
+ phone?: string
4
+ }
5
+
6
+ type ContactInfoFields = keyof ContactInfo
7
+
8
+ export {
9
+ type ContactInfo,
10
+ type ContactInfoFields
11
11
  }
package/types/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type { ContactInfo, ContactInfoFields } from './contact-info'
2
- export type { default as SiteDef } from './site-def'
3
- export type { default as ChatbotSuggestedQuestion } from './chatbot-suggested-question'
4
- export type { default as ChatbotConfig } from './chatbot-config'
1
+ export type { ContactInfo, ContactInfoFields } from './contact-info'
2
+ export type { default as SiteDef } from './site-def'
3
+ export type { default as ChatbotSuggestedQuestion } from './chatbot-suggested-question'
4
+ export type { default as ChatbotConfig } from './chatbot-config'
package/types/site-def.ts CHANGED
@@ -1,43 +1,43 @@
1
- import React from 'react'
2
-
3
- import type { LinkDef } from '@hanzo/ui/types'
4
- import type { CommerceConfig } from '@hanzo/commerce/types'
5
-
6
- import type ChatbotConfig from './chatbot-config'
7
-
8
- interface SiteDef {
9
-
10
- /** url of this site. All nav links in the system will show it in 'current' state */
11
- currentAs?: string
12
-
13
- nav: {
14
- /** common elements (will auto-select currentAs if it's provide) */
15
- /** optional feature element. right-most after 'elements' (any min-w is ignored) */
16
- common: LinkDef[]
17
- featured?: LinkDef[]
18
- }
19
-
20
- /**
21
- * Array of columns, each of which itself is an array of links
22
- * (or "title defs" where href='' and variant='linkFG')
23
- * Common use case: To render a site-specific first column:
24
- * {
25
- * footer[myColumn, ...commonColumnsFromUi]
26
- * }
27
- * see: @hanzo/ui/siteDef/footer (default export)
28
- * or @hanzo/ui/siteDef/footer/common
29
- */
30
- footer: LinkDef[][]
31
-
32
- /**
33
- * optional override of default 'above copyright' horizantal links
34
- default (undefined / absent): links in side-def/footer/legal are rendered
35
- [] renders nothing above the copyright
36
- */
37
- aboveCopyright?: LinkDef[]
38
-
39
- commerce?: CommerceConfig
40
- chatbot?: ChatbotConfig
41
- }
42
-
43
- export { type SiteDef as default }
1
+ import React from 'react'
2
+
3
+ import type { LinkDef } from '@hanzo/ui/types'
4
+ import type { CommerceConfig } from '@hanzo/commerce/types'
5
+
6
+ import type ChatbotConfig from './chatbot-config'
7
+
8
+ interface SiteDef {
9
+
10
+ /** url of this site. All nav links in the system will show it in 'current' state */
11
+ currentAs?: string
12
+
13
+ nav: {
14
+ /** common elements (will auto-select currentAs if it's provide) */
15
+ /** optional feature element. right-most after 'elements' (any min-w is ignored) */
16
+ common: LinkDef[]
17
+ featured?: LinkDef[]
18
+ }
19
+
20
+ /**
21
+ * Array of columns, each of which itself is an array of links
22
+ * (or "title defs" where href='' and variant='linkFG')
23
+ * Common use case: To render a site-specific first column:
24
+ * {
25
+ * footer[myColumn, ...commonColumnsFromUi]
26
+ * }
27
+ * see: @hanzo/ui/siteDef/footer (default export)
28
+ * or @hanzo/ui/siteDef/footer/common
29
+ */
30
+ footer: LinkDef[][]
31
+
32
+ /**
33
+ * optional override of default 'above copyright' horizantal links
34
+ default (undefined / absent): links in side-def/footer/legal are rendered
35
+ [] renders nothing above the copyright
36
+ */
37
+ aboveCopyright?: LinkDef[]
38
+
39
+ commerce?: CommerceConfig
40
+ chatbot?: ChatbotConfig
41
+ }
42
+
43
+ export { type SiteDef as default }
@@ -1,20 +0,0 @@
1
- 'use client'
2
- import React from 'react'
3
-
4
- import type { LineItem } from '@hanzo/commerce/types'
5
- import { AddToCartWidget } from '@hanzo/commerce'
6
-
7
- import { useRecentActivity } from '../../commerce/ui/context'
8
-
9
- const AddWidget: React.FC<{
10
- item: LineItem
11
- disabled?: boolean
12
- className?: string
13
- buttonClx?: string
14
- variant?: 'minimal' | 'primary' | 'outline'
15
- }> = (props) => {
16
- const l = useRecentActivity()
17
- return <AddToCartWidget {...props} onQuantityChanged={l.quantityChanged.bind(l)}/>
18
- }
19
-
20
- export default AddWidget
@@ -1,85 +0,0 @@
1
- 'use client'
2
- import React, { type PropsWithChildren } from 'react'
3
- import { observer } from 'mobx-react-lite'
4
-
5
- import { ScrollArea, StepIndicator } from '@hanzo/ui/primitives'
6
- import { AuthWidget } from '@hanzo/auth/components'
7
- import { CartPanel, useCommerce } from '@hanzo/commerce'
8
- import { cn } from '@hanzo/ui/util'
9
-
10
- import { BackButton, Logo, Tooltip } from '../..'
11
- import DesktopBagCarousel from './dt-bag-carousel'
12
- import LinksRow from './links-row'
13
-
14
- const DesktopCheckoutPanel: React.FC<PropsWithChildren & {
15
- index: number
16
- stepNames: string[]
17
- close: () => void
18
- className?: string
19
- }> = observer(({
20
- index,
21
- stepNames,
22
- close,
23
- className='',
24
- children
25
- }) => {
26
-
27
- const cmmc = useCommerce()
28
-
29
- return (
30
- <div /* id='CHECKOUT_PANEL' */ className={cn('grid grid-cols-2', className)}>
31
- <div key={1} className='w-full h-full bg-background flex flex-row items-start justify-end'>
32
- <div className='w-full h-full max-w-[750px] relative flex flex-col items-stretch justify-start px-8 pb-8'>
33
- <div key={1} className='h-[80px] grow-0 flex flex-row items-center z-10' >
34
- <Logo onClick={close} size='md' href='/' variant='text-only' outerClx='logo-outer-tooltip-class' />
35
- <Tooltip select='.logo-outer-tooltip-class' text='home' position='right' offset={6}/>
36
- </div>
37
- <BackButton size='sm' clx={
38
- 'z-10 absolute top-14 left-6 !px-0 aspect-square ' +
39
- 'rounded-full hover:!bg-level-3 ' +
40
- //'border border-transparent hover:border-muted-2 ' +
41
- 'back-button-tooltip-class '
42
- }/>
43
- <Tooltip select='.back-button-tooltip-class' text='back' position='right' offset={5}/>
44
- <div key={2} className={cn(
45
- 'w-full grow min-h-0 max-w-[550px] mx-auto flex flex-col gap-3',
46
- (cmmc.cartItems.length > 4 ? 'justify-between' : 'justify-start gap-10 pt-10')
47
- )}>
48
- <DesktopBagCarousel className='grow-0 h-[260px] w-[360px] lg:w-[420px] mx-auto -mt-8' constrainTo={{w: 250, h: 250}}/>
49
- <CartPanel
50
- className='w-full border-none p-0'
51
- itemClx='mb-2'
52
- totalClx='sticky bottom-0 bg-background'
53
- listClx='pr-3'
54
- scrollAfter={5}
55
- scrollHeightClx='min-h-[50vh] grow'
56
- showPromoCode
57
- showShipping
58
- selectItems
59
- />
60
- </div>
61
- </div>
62
- </div>
63
- <div key={2} className='w-full h-full flex flex-col bg-level-1 min-h-screen justify-between'>
64
- <ScrollArea className='w-full flex flex-row items-start justify-start overflow-y-auto'>
65
- <div className='h-full w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0'>
66
- <div key={1} className='bg-level-1 sticky h-30 pb-8 w-full top-0 flex justify-center items-end'>
67
- <AuthWidget noLogin className='hidden md:flex absolute top-4 right-4 '/>
68
- <StepIndicator dotSizeRem={1.5} steps={stepNames} currentStep={index} className='gap-2 text-base w-pr-70' />
69
- </div>
70
- <div key={2} className='w-full max-w-[550px] mx-auto pb-10'>
71
- {children}
72
- </div>
73
- </div>
74
- </ScrollArea>
75
- <div className='w-full max-w-[750px] relative flex flex-col items-center px-8 pt-0'>
76
- <div className='w-full max-w-[550px] mx-auto flex flex-col items-center'>
77
- <LinksRow className='w-full' />
78
- </div>
79
- </div>
80
- </div>
81
- </div>
82
- )
83
- })
84
-
85
- export default DesktopCheckoutPanel
@@ -1,21 +0,0 @@
1
- import Link from 'next/link'
2
-
3
- import { Separator } from '@hanzo/ui/primitives'
4
- import { cn } from '@hanzo/ui/util'
5
-
6
- const LinksRow: React.FC<{
7
- className?: string
8
- }> = ({
9
- className=''
10
- }) => (
11
- <div className={cn('flex flex-col', className)}>
12
- <Separator/>
13
- <div className='flex gap-4 text-sm py-2'>
14
- {/* TODO: add Refund policy and Privacy policy links */}
15
- <Link href=''>Refund policy</Link>
16
- <Link href=''>Privacy policy</Link>
17
- </div>
18
- </div>
19
- )
20
-
21
- export default LinksRow
@@ -1,55 +0,0 @@
1
- 'use client'
2
- import React, { type PropsWithChildren } from 'react'
3
-
4
- import { StepIndicator } from '@hanzo/ui/primitives'
5
- import { cn } from '@hanzo/ui/util'
6
- import { AuthWidget } from '@hanzo/auth/components'
7
- import { CartAccordian } from '@hanzo/commerce'
8
-
9
- import { Logo } from '../..'
10
- import BagButton from '../bag-button'
11
- import LinksRow from './links-row'
12
-
13
- const MobileCheckoutPanel: React.FC<PropsWithChildren & {
14
- index: number
15
- stepNames: string[]
16
- close:() => void
17
- className?: string
18
- }> = ({
19
- index,
20
- stepNames,
21
- close,
22
- className='',
23
- children
24
- }) => (
25
-
26
- <div /* id='MOBILE_GRID' */ className={cn('bg-background flex flex-col justify-start px-4', className)}>
27
- <div className='sticky top-0 w-full flex flex-row justify-between items-center bg-background'>
28
- <Logo onClick={close} size='xs' href='/' />
29
- {/* Need wrapper div since 'noLogin' returns null if no logged in user */}
30
- <div className='w-10 h-10 flex items-center justify-center'><AuthWidget noLogin className=''/></div>
31
- </div>
32
- <CartAccordian
33
- icon={
34
- <BagButton
35
- animateOnHover={false}
36
- showIfEmpty
37
- size='sm'
38
- className='mr-1 relative w-5 h-6 sm:w-6 sm:h-7'
39
- iconClx='fill-foreground'
40
- />
41
- }
42
- className='flex items-center justify-center w-full'
43
- />
44
- <StepIndicator
45
- dotSizeRem={1}
46
- steps={stepNames}
47
- currentStep={index}
48
- className='text-xs font-semibold w-full pb-3'
49
- />
50
- {children}
51
- <LinksRow className='mt-auto mb-3 pt-2' />
52
- </div>
53
- )
54
-
55
- export default MobileCheckoutPanel