@luxfi/core 5.1.4 → 5.1.6

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.
Files changed (125) hide show
  1. package/commerce/{AUTO-GEN-bullion-by-family.json → data/AUTO-GEN-bullion-by-family.json} +33 -33
  2. package/commerce/{EDIT-ME-bullion-market-prices.ts → data/EDIT-ME-bullion-market-prices.ts} +11 -11
  3. package/commerce/{assign-prices.ts → data/assign-prices.ts} +49 -49
  4. package/commerce/{assign-videos-by-family-group.ts → data/assign-videos-by-family-group.ts} +14 -14
  5. package/commerce/{bullion-price-1oz.ts → data/bullion-price-1oz.ts} +5 -5
  6. package/commerce/{index.ts → data/index.ts} +18 -18
  7. package/commerce/ui/conf.ts +13 -0
  8. package/commerce/ui/context.tsx +102 -0
  9. package/commerce/ui/store.ts +277 -0
  10. package/components/access-code-input.tsx +71 -71
  11. package/components/auth/auth-listener.tsx +29 -29
  12. package/components/auth/auth-token/clear-auth-token.tsx +12 -12
  13. package/components/auth/auth-token/set-auth-token.tsx +16 -16
  14. package/components/auth/common-auth-domains.ts +16 -16
  15. package/components/auth/login-panel.tsx +107 -104
  16. package/components/chat-widget.tsx +85 -80
  17. package/components/commerce/add-widget.tsx +20 -0
  18. package/components/commerce/bag-button.tsx +98 -98
  19. package/components/commerce/buy-button.tsx +34 -0
  20. package/components/commerce/checkout-button.tsx +129 -116
  21. package/components/commerce/checkout-panel/close-button.tsx +26 -26
  22. package/components/commerce/checkout-panel/dt-bag-carousel.tsx +36 -36
  23. package/components/commerce/checkout-panel/dt-checkout-panel.tsx +66 -66
  24. package/components/commerce/checkout-panel/index.tsx +129 -124
  25. package/components/commerce/checkout-panel/links-row.tsx +21 -21
  26. package/components/commerce/checkout-panel/mb-checkout-panel.tsx +54 -54
  27. package/components/commerce/checkout-panel/steps-indicator.tsx +39 -39
  28. package/components/commerce/checkout-panel/thank-you.tsx +18 -18
  29. package/components/commerce/checkout-widget/const.ts +13 -13
  30. package/components/commerce/checkout-widget/index.tsx +192 -86
  31. package/components/commerce/checkout-widget/obs-string-set.ts +48 -48
  32. package/components/commerce/checkout-widget/use-anim-clx-set.ts +58 -56
  33. package/components/commerce/desktop-bag-popup.tsx +78 -78
  34. package/components/commerce/drawer/index.tsx +117 -0
  35. package/components/commerce/drawer/micro.tsx +136 -0
  36. package/components/commerce/drawer/shell.tsx +79 -0
  37. package/components/commerce/mobile-bag-drawer.tsx +51 -51
  38. package/components/commerce/mobile-login-button.tsx +100 -100
  39. package/components/commerce/mobile-menu-toggle-button.tsx +35 -35
  40. package/components/commerce/mobile-nav-menu-ai.tsx +97 -97
  41. package/components/commerce/mobile-nav-menu-item.tsx +45 -45
  42. package/components/commerce/mobile-nav-menu.tsx +80 -79
  43. package/components/contact-dialog/contact-form.tsx +113 -112
  44. package/components/contact-dialog/disclaimer.tsx +13 -13
  45. package/components/contact-dialog/index.tsx +64 -64
  46. package/components/copyright.tsx +21 -21
  47. package/components/drawer-margin.tsx +25 -0
  48. package/components/footer.tsx +77 -77
  49. package/components/header/desktop.tsx +54 -54
  50. package/components/header/index.tsx +40 -47
  51. package/components/header/mobile.tsx +165 -165
  52. package/components/header/theme-toggle.tsx +26 -26
  53. package/components/icons/avatar.tsx +11 -11
  54. package/components/icons/bag-icon.tsx +10 -10
  55. package/components/icons/github.tsx +14 -14
  56. package/components/icons/index.tsx +43 -43
  57. package/components/icons/left-arrow.tsx +11 -11
  58. package/components/icons/lux-logo.tsx +10 -10
  59. package/components/icons/right-arrow.tsx +10 -10
  60. package/components/icons/search.tsx +12 -12
  61. package/components/icons/secure-delivery.tsx +13 -13
  62. package/components/icons/social-icon.tsx +35 -35
  63. package/components/icons/social-svg.css +3 -3
  64. package/components/icons/youtube-logo.tsx +59 -59
  65. package/components/index.ts +25 -27
  66. package/components/logo.tsx +81 -81
  67. package/components/main.tsx +27 -0
  68. package/components/mini-chart/index.tsx +7 -7
  69. package/components/mini-chart/mini-chart-props.ts +43 -43
  70. package/components/mini-chart/mini-chart.tsx +85 -85
  71. package/components/mini-chart/wrapper.tsx +23 -23
  72. package/components/not-found/index.tsx +28 -27
  73. package/components/not-found/not-found-content.mdx +5 -5
  74. package/components/scripts.tsx +24 -24
  75. package/conf/index.ts +52 -50
  76. package/{commerce/lux-service-options.ts → conf/lux-commerce-options.ts} +6 -6
  77. package/environment.d.ts +5 -5
  78. package/next/analytics/fpixel.ts +15 -15
  79. package/next/analytics/google-analytics.ts +13 -13
  80. package/next/analytics/index.ts +3 -3
  81. package/next/analytics/pixel-analytics.tsx +54 -54
  82. package/next/font/get-app-router-font-classes.ts +12 -12
  83. package/next/font/load-and-return-lux-next-fonts-on-import.ts +68 -68
  84. package/next/font/next-font-desc.ts +27 -27
  85. package/next/font/pages-router-font-vars.tsx +18 -18
  86. package/next/head-metadata/from-next/metadata-types.ts +158 -158
  87. package/next/head-metadata/from-next/opengraph-types.ts +267 -267
  88. package/next/head-metadata/from-next/twitter-types.ts +92 -92
  89. package/next/head-metadata/index.tsx +208 -208
  90. package/next/middleware/determine-device-mw.ts +16 -16
  91. package/package.json +80 -73
  92. package/root-layout/WHY_THIS_IS_SEPARATE.txt +1 -1
  93. package/root-layout/index.tsx +118 -121
  94. package/server-actions/firebase-app.ts +14 -14
  95. package/server-actions/index.ts +5 -5
  96. package/server-actions/store-contact.ts +51 -51
  97. package/site-def/footer/community.tsx +67 -67
  98. package/site-def/footer/company.ts +37 -37
  99. package/site-def/footer/ecosystem.ts +37 -37
  100. package/site-def/footer/index.tsx +26 -26
  101. package/site-def/footer/legal.ts +28 -28
  102. package/site-def/footer/network.ts +45 -45
  103. package/site-def/footer/svg/warpcast-logo.svg +11 -11
  104. package/site-def/index.ts +2 -2
  105. package/site-def/main-nav.tsx +292 -292
  106. package/style/cart-animation.css +29 -29
  107. package/style/checkout-animation.css +23 -23
  108. package/style/drawer-handle-overrides.css +160 -0
  109. package/style/lux-colors.css +85 -85
  110. package/style/lux-global.css +30 -30
  111. package/tailwind/fontFamily.tailwind.lux.ts +18 -18
  112. package/tailwind/index.ts +2 -2
  113. package/tailwind/lux-tw-fonts.ts +39 -39
  114. package/tailwind/tailwind.config.lux-preset.ts +10 -10
  115. package/tsconfig.json +15 -10
  116. package/types/chatbot-config.ts +6 -6
  117. package/types/chatbot-suggested-question.ts +7 -7
  118. package/types/commerce-config.ts +10 -10
  119. package/types/contact-info.ts +10 -10
  120. package/types/index.ts +5 -5
  121. package/types/site-def.ts +45 -45
  122. package/components/commerce/buy-drawer/drawer.tsx +0 -44
  123. package/components/commerce/buy-drawer/index.tsx +0 -46
  124. package/components/commerce/checkout-widget/use-lagging-item-ref.ts +0 -30
  125. package/components/header/guts.tsx +0 -27
@@ -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,5 +1,5 @@
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'
5
- export type { default as CommerceConfig } from './commerce-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'
5
+ export type { default as CommerceConfig } from './commerce-config'
package/types/site-def.ts CHANGED
@@ -1,45 +1,45 @@
1
- import React from 'react'
2
-
3
- import type { LinkDef } from '@hanzo/ui/types'
4
-
5
- import type CommerceConfig from './commerce-config'
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
- auth?: boolean
19
- cart?: React.ReactNode
20
- }
21
-
22
- /**
23
- * Array of columns, each of which itself is an array of links
24
- * (or "title defs" where href='' and variant='linkFG')
25
- * Common use case: To render a site-specific first column:
26
- * {
27
- * footer[myColumn, ...commonColumnsFromUi]
28
- * }
29
- * see: @hanzo/ui/siteDef/footer (default export)
30
- * or @hanzo/ui/siteDef/footer/common
31
- */
32
- footer: LinkDef[][]
33
-
34
- /**
35
- * optional override of default 'above copyright' horizantal links
36
- default (undefined / absent): links in side-def/footer/legal are rendered
37
- [] renders nothing above the copyright
38
- */
39
- aboveCopyright?: LinkDef[]
40
-
41
- commerce?: CommerceConfig
42
- chatbot?: ChatbotConfig
43
- }
44
-
45
- export { type SiteDef as default }
1
+ import React from 'react'
2
+
3
+ import type { LinkDef } from '@hanzo/ui/types'
4
+
5
+ import type CommerceConfig from './commerce-config'
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
+ auth?: boolean
19
+ cart?: React.ReactNode
20
+ }
21
+
22
+ /**
23
+ * Array of columns, each of which itself is an array of links
24
+ * (or "title defs" where href='' and variant='linkFG')
25
+ * Common use case: To render a site-specific first column:
26
+ * {
27
+ * footer[myColumn, ...commonColumnsFromUi]
28
+ * }
29
+ * see: @hanzo/ui/siteDef/footer (default export)
30
+ * or @hanzo/ui/siteDef/footer/common
31
+ */
32
+ footer: LinkDef[][]
33
+
34
+ /**
35
+ * optional override of default 'above copyright' horizantal links
36
+ default (undefined / absent): links in side-def/footer/legal are rendered
37
+ [] renders nothing above the copyright
38
+ */
39
+ aboveCopyright?: LinkDef[]
40
+
41
+ commerce?: CommerceConfig
42
+ chatbot?: ChatbotConfig
43
+ }
44
+
45
+ export { type SiteDef as default }
@@ -1,44 +0,0 @@
1
- 'use client'
2
- import React, {type PropsWithChildren } from 'react'
3
-
4
- import { X as LucideX} from 'lucide-react'
5
-
6
- import { Button, Drawer, DrawerContent, type DrawerProps } from '@hanzo/ui/primitives'
7
- import { cn } from '@hanzo/ui/util'
8
-
9
- const CommerceDrawer: React.FC<PropsWithChildren &
10
- Omit<DrawerProps, 'onOpenChange'> &
11
- {
12
- setOpen: (b: boolean) => void
13
- drawerClx?: string
14
- }
15
- > = ({
16
- children,
17
- open,
18
- setOpen,
19
- modal,
20
- drawerClx='',
21
- ...rest
22
- }) => (
23
- // @ts-ignore
24
- <Drawer open={open} onOpenChange={setOpen} modal={modal} {...rest}>
25
- <DrawerContent modal={modal} className={cn(
26
- 'rounded-t-xl mt-6 pt-6',
27
- drawerClx
28
- )}>
29
- {children}
30
- <Button
31
- variant='ghost'
32
- size='icon'
33
- onClick={() => {setOpen(false)}}
34
- className={'absolute top-4 right-4 w-8 h-8 group rounded-full p-1 hidden md:flex items-center'}
35
- >
36
- <LucideX className='w-6 h-6 text-muted group-hover:text-foreground'/>
37
- </Button>
38
- </DrawerContent>
39
- </Drawer>
40
- )
41
-
42
-
43
- export default CommerceDrawer
44
-
@@ -1,46 +0,0 @@
1
- 'use client'
2
- import React from 'react'
3
- import { useRouter } from 'next/navigation'
4
- import { observer } from 'mobx-react-lite'
5
-
6
- import { useCommerceUI, CarouselBuyCard } from '@hanzo/commerce'
7
-
8
- import CommerceDrawer from './drawer'
9
- import CheckoutButton from '../checkout-button'
10
-
11
- const CommerceUIComponent: React.FC = observer(() => {
12
-
13
- const ui = useCommerceUI()
14
- const router = useRouter()
15
-
16
- const handleCheckout = () => {
17
- router.push('/checkout')
18
- }
19
-
20
- // Should only ever be called internally to close
21
- const reallyOnlyCloseDrawer = (b: boolean) => {
22
- if (!b ) {
23
- ui.hideBuyOptions()
24
- }
25
- }
26
-
27
- return (
28
- <CommerceDrawer
29
- open={!!ui.buyOptionsSkuPath}
30
- setOpen={reallyOnlyCloseDrawer}
31
- drawerClx={'w-full md:max-w-[550px] md:mx-auto lg:max-w-[50vw]'}
32
- >
33
- <CarouselBuyCard
34
- skuPath={ui.buyOptionsSkuPath!}
35
- checkoutButton={
36
- <CheckoutButton handleCheckout={handleCheckout} className='w-full min-w-[160px] sm:max-w-[320px]'/>
37
- }
38
- clx='w-full'
39
- addBtnClx='w-full min-w-[160px] sm:max-w-[320px]'
40
- selectorClx='max-w-[475px]'
41
- />
42
- </CommerceDrawer>
43
- )
44
- })
45
-
46
- export default CommerceUIComponent
@@ -1,30 +0,0 @@
1
- import { useEffect, useRef } from 'react'
2
- import { reaction } from 'mobx'
3
-
4
- import type { LineItem, ObsLineItemRef } from "@hanzo/commerce/types"
5
- import { LineItemRef } from '@hanzo/commerce'
6
-
7
- export default (orig: ObsLineItemRef, lagMs: number): ObsLineItemRef => {
8
-
9
- // a ref that is synced to 'orig', but persists for lagMs longer
10
- // so ui does not jump while animating out.
11
- // (Fascilitates for start and end states in animation)
12
- const laggingRef = useRef<LineItemRef>(new LineItemRef())
13
-
14
- useEffect(() => (
15
- reaction(
16
- () => (orig.item),
17
- (item: LineItem | undefined) => {
18
- if (item) {
19
- laggingRef.current.set(item)
20
- }
21
- else {
22
- setTimeout(() => { laggingRef.current.set(undefined) }, lagMs)
23
- }
24
- },
25
- {equals: (val, prev) => (val?.sku === prev?.sku)}
26
- )
27
- ), [])
28
-
29
- return laggingRef.current
30
- }
@@ -1,27 +0,0 @@
1
- 'use client'
2
- import React, { useState, useEffect } from 'react'
3
- import type SiteDef from '../../types/site-def'
4
- import { ChatWidget, Header } from '../../components'
5
-
6
- const Guts: React.FC<{
7
- children: React.ReactNode,
8
- siteDef: SiteDef,
9
- showHeader?: boolean,
10
- chatbot?: boolean
11
- }> = ({
12
- children,
13
- siteDef,
14
- showHeader,
15
- chatbot
16
- }) => {
17
- return (
18
- <>
19
- {showHeader && <Header
20
- siteDef={siteDef}
21
- />}
22
- {children}
23
- </>
24
- )
25
- }
26
-
27
- export default Guts