@luxfi/ui 5.3.16 → 5.3.18

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 (181) hide show
  1. package/commerce/ui/conf.ts +13 -13
  2. package/commerce/ui/context.tsx +123 -123
  3. package/commerce/ui/store.ts +289 -289
  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 +17 -17
  9. package/components/auth/login-panel.tsx +111 -111
  10. package/components/auth/signup-panel.tsx +113 -113
  11. package/components/back-button.tsx +49 -49
  12. package/components/chat-widget.tsx +85 -85
  13. package/components/commerce/_to_deprecate_checkout-widget/const.ts +13 -13
  14. package/components/commerce/_to_deprecate_checkout-widget/index.tsx_ +188 -188
  15. package/components/commerce/_to_deprecate_checkout-widget/obs-string-set.ts +48 -48
  16. package/components/commerce/_to_deprecate_checkout-widget/use-anim-clx-set.ts +58 -58
  17. package/components/commerce/bag-button.tsx +98 -98
  18. package/components/commerce/buy-button.tsx +34 -34
  19. package/components/commerce/checkout-button.tsx +129 -129
  20. package/components/commerce/checkout-panel/cart-accordian.tsx +66 -66
  21. package/components/commerce/checkout-panel/checkout-panel-props.ts +9 -9
  22. package/components/commerce/checkout-panel/desktop-bag-carousel.tsx +36 -36
  23. package/components/commerce/checkout-panel/desktop-cp.tsx +82 -82
  24. package/components/commerce/checkout-panel/index.tsx +126 -126
  25. package/components/commerce/checkout-panel/mobile-cp.tsx +66 -66
  26. package/components/commerce/checkout-panel/policy-links.tsx +29 -29
  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/desktop-bag-popup.tsx +78 -78
  30. package/components/commerce/desktop-nav-menu.tsx +204 -204
  31. package/components/commerce/drawer/index.tsx +88 -88
  32. package/components/commerce/drawer/micro.tsx +145 -145
  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 +107 -107
  36. package/components/commerce/mobile-menu-toggle-button.tsx +35 -35
  37. package/components/commerce/mobile-nav-menu-ai.tsx +50 -50
  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 +28 -28
  45. package/components/footer.tsx +77 -77
  46. package/components/header/desktop.tsx +51 -51
  47. package/components/header/index.tsx +44 -44
  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-act.tsx +47 -47
  52. package/components/icons/ai-chat.tsx +29 -29
  53. package/components/icons/anodized-titanium.tsx +45 -45
  54. package/components/icons/avatar.tsx +11 -11
  55. package/components/icons/bag-icon.tsx +10 -10
  56. package/components/icons/blog-act.tsx +14 -14
  57. package/components/icons/blog.tsx +20 -20
  58. package/components/icons/bridge-act.tsx +18 -18
  59. package/components/icons/bridge.tsx +68 -68
  60. package/components/icons/changelog-act.tsx +15 -15
  61. package/components/icons/changelog.tsx +21 -21
  62. package/components/icons/chrome.tsx +45 -45
  63. package/components/icons/coins-act.tsx +29 -29
  64. package/components/icons/coins.tsx +20 -20
  65. package/components/icons/compare-cards-act.tsx +30 -30
  66. package/components/icons/compare-cards.tsx +21 -21
  67. package/components/icons/credit-act.tsx +29 -29
  68. package/components/icons/credit.tsx +20 -20
  69. package/components/icons/customer-support-act.tsx +27 -27
  70. package/components/icons/customer-support.tsx +21 -21
  71. package/components/icons/customers-act.tsx +65 -65
  72. package/components/icons/customers.tsx +33 -33
  73. package/components/icons/developer-docs-act.tsx +26 -26
  74. package/components/icons/developer-docs.tsx +20 -20
  75. package/components/icons/exchange-act.tsx +27 -27
  76. package/components/icons/exchange.tsx +21 -21
  77. package/components/icons/explorer-act.tsx +27 -27
  78. package/components/icons/explorer.tsx +22 -22
  79. package/components/icons/faqs-act.tsx +27 -27
  80. package/components/icons/faqs.tsx +21 -21
  81. package/components/icons/github.tsx +14 -14
  82. package/components/icons/guides-act.tsx +26 -26
  83. package/components/icons/guides.tsx +21 -21
  84. package/components/icons/gun-metal.tsx +44 -44
  85. package/components/icons/index.tsx +43 -43
  86. package/components/icons/integrations-act.tsx +41 -41
  87. package/components/icons/integrations.tsx +25 -25
  88. package/components/icons/irradescent.tsx +41 -41
  89. package/components/icons/launch-subnet.tsx +21 -21
  90. package/components/icons/launchsubnet-act.tsx +29 -29
  91. package/components/icons/left-arrow.tsx +11 -11
  92. package/components/icons/lux-finance-act.tsx +34 -34
  93. package/components/icons/lux-finance.tsx +23 -23
  94. package/components/icons/lux-logo.tsx +10 -10
  95. package/components/icons/lux-pass-act.tsx +41 -41
  96. package/components/icons/lux-pass.tsx +25 -25
  97. package/components/icons/lux-quests-act.tsx +15 -15
  98. package/components/icons/lux-quests.tsx +21 -21
  99. package/components/icons/market-act.tsx +39 -39
  100. package/components/icons/market.tsx +24 -24
  101. package/components/icons/mirrored-titanium.tsx +46 -46
  102. package/components/icons/more-benefits-act.tsx +29 -29
  103. package/components/icons/more-benefits.tsx +21 -21
  104. package/components/icons/open-source-act.tsx +41 -41
  105. package/components/icons/open-source.tsx +26 -26
  106. package/components/icons/right-arrow.tsx +10 -10
  107. package/components/icons/safe-act.tsx +77 -77
  108. package/components/icons/safe.tsx +37 -37
  109. package/components/icons/search.tsx +12 -12
  110. package/components/icons/secure-delivery.tsx +13 -13
  111. package/components/icons/shop-act.tsx +29 -29
  112. package/components/icons/shop.tsx +20 -20
  113. package/components/icons/social-icon.tsx +35 -35
  114. package/components/icons/social-svg.css +3 -3
  115. package/components/icons/sterling-silver-card.tsx +44 -44
  116. package/components/icons/templates-act.tsx +29 -29
  117. package/components/icons/templates.tsx +21 -21
  118. package/components/icons/validators-act.tsx +42 -42
  119. package/components/icons/validators.tsx +41 -41
  120. package/components/icons/view-all-card-act.tsx +28 -28
  121. package/components/icons/view-all-card.tsx +20 -20
  122. package/components/icons/wallet-act.tsx +29 -29
  123. package/components/icons/wallet.tsx +20 -20
  124. package/components/icons/warpcast.tsx +58 -58
  125. package/components/icons/youtube-logo.tsx +59 -59
  126. package/components/index.ts +26 -26
  127. package/components/logo.tsx +89 -89
  128. package/components/main.tsx +27 -27
  129. package/components/mini-chart/index.tsx +7 -7
  130. package/components/mini-chart/mini-chart-props.ts +43 -43
  131. package/components/mini-chart/mini-chart.tsx +85 -85
  132. package/components/mini-chart/wrapper.tsx +23 -23
  133. package/components/not-found/index.tsx +28 -28
  134. package/components/not-found/not-found-content.mdx +5 -5
  135. package/components/scripts.tsx +24 -24
  136. package/components/tooltip.tsx +31 -31
  137. package/environment.d.ts +5 -5
  138. package/next/analytics/fpixel.ts +15 -15
  139. package/next/analytics/google-analytics.ts +13 -13
  140. package/next/analytics/index.ts +3 -3
  141. package/next/analytics/pixel-analytics.tsx +54 -54
  142. package/next/font/get-app-router-font-classes.ts +12 -12
  143. package/next/font/load-and-return-lux-next-fonts-on-import.ts +68 -68
  144. package/next/font/next-font-desc.ts +27 -27
  145. package/next/font/pages-router-font-vars.tsx +18 -18
  146. package/next/head-metadata/from-next/metadata-types.ts +158 -158
  147. package/next/head-metadata/from-next/opengraph-types.ts +267 -267
  148. package/next/head-metadata/from-next/twitter-types.ts +92 -92
  149. package/next/head-metadata/index.tsx +208 -208
  150. package/next/index.ts +2 -1
  151. package/next/middleware/determine-device-mw.ts +29 -29
  152. package/package.json +13 -3
  153. package/root-layout/WHY_THIS_IS_SEPARATE.txt +1 -1
  154. package/root-layout/index.tsx +112 -112
  155. package/server-actions/firebase-app.ts +14 -14
  156. package/server-actions/index.ts +5 -5
  157. package/server-actions/store-contact.ts +51 -51
  158. package/site-def/footer/community.tsx +67 -67
  159. package/site-def/footer/company.ts +37 -37
  160. package/site-def/footer/ecosystem.ts +37 -37
  161. package/site-def/footer/index.tsx +26 -26
  162. package/site-def/footer/legal.ts +28 -28
  163. package/site-def/footer/network.ts +45 -45
  164. package/site-def/footer/svg/warpcast-logo.svg +11 -11
  165. package/site-def/index.ts +2 -2
  166. package/site-def/main-nav.tsx +458 -458
  167. package/style/cart-animation.css +29 -29
  168. package/style/checkout-animation.css +23 -23
  169. package/style/drawer-handle-overrides.css +160 -160
  170. package/style/lux-colors.css +85 -85
  171. package/style/lux-global.css +50 -50
  172. package/tailwind/fontFamily.tailwind.lux.ts +18 -18
  173. package/tailwind/index.ts +2 -2
  174. package/tailwind/lux-tw-fonts.ts +39 -39
  175. package/tailwind/tailwind.config.lux-preset.ts +10 -10
  176. package/tsconfig.json +15 -15
  177. package/types/chatbot-config.ts +6 -6
  178. package/types/chatbot-suggested-question.ts +7 -7
  179. package/types/contact-info.ts +10 -10
  180. package/types/index.ts +4 -4
  181. package/types/site-def.ts +43 -43
@@ -1,108 +1,108 @@
1
- 'use client'
2
- import React from "react"
3
- import { observer } from "mobx-react-lite"
4
-
5
- import {
6
- Button,
7
- LinkElement,
8
- Popover,
9
- PopoverContent,
10
- PopoverTrigger,
11
- Separator
12
- } from '@hanzo/ui/primitives'
13
-
14
- import type { LinkDef } from '@hanzo/ui/types'
15
- import { cn } from '@hanzo/ui/util'
16
-
17
- import { useAuth } from "@hanzo/auth/service"
18
-
19
- import { Ethereum } from "@hanzo/auth/icons"
20
- import { Icons } from ".."
21
-
22
- const MobileAuthWidget: React.FC<{
23
- noLogin?: boolean
24
- className?: string
25
- handleLogin?: () => void
26
- }> = observer(({
27
- noLogin = false,
28
- className
29
- }) => {
30
- const auth = useAuth()
31
- const handleLogin = () => {
32
- window.location.href = "https://lux.id";
33
- };
34
-
35
- if (!auth) {
36
- return null
37
- }
38
- if (!auth.loggedIn && typeof window !== 'undefined') {
39
- return (noLogin ? null : (
40
- (handleLogin) ? (
41
- <div className="flex items-center py-1 px-1 gap-1">
42
- <Button
43
- variant='primary'
44
- className='text-base font-semibold !min-w-0 self-center flex-1'
45
- onClick={handleLogin}
46
- >
47
- Sign Up
48
- </Button>
49
- <Button
50
- variant='outline'
51
- className=' text-base font-semibold !min-w-0 self-center flex-1'
52
- onClick={handleLogin}
53
- >
54
- Log In
55
- </Button>
56
- </div>
57
- ) : (
58
- <LinkElement
59
- def={{
60
- href: `${process.env.NEXT_PUBLIC_LOGIN_SITE_URL}?redirectUrl=${window.location.href}`,
61
- title: 'Login',
62
- variant: 'primary',
63
- newTab: false
64
- } satisfies LinkDef}
65
- className='h-8 w-fit !min-w-0'
66
- />
67
- )
68
- ))
69
- }
70
-
71
- return (
72
- <Popover>
73
- <PopoverTrigger asChild>
74
- <Button
75
- variant="outline"
76
- size='icon'
77
- className={cn('rounded-full text-muted border-2 border-muted bg-level-1 hover:bg-level-2 hover:border-foreground hover:text-foreground uppercase w-8 h-8', className)}
78
- >{auth.user?.email[0]}</Button>
79
- </PopoverTrigger>
80
- <PopoverContent className='bg-level-0'>
81
- <div className="grid gap-4">
82
- <div className="space-y-2 truncate">
83
- {auth.user?.displayName ? (
84
- <>
85
- <h4 className="font-medium leading-none truncate">{auth.user.displayName}</h4>
86
- <p className="text-sm opacity-50 truncate">{auth.user.email}</p>
87
- </>
88
- ) : (
89
- <h4 className="font-medium leading-none truncate">{auth.user?.email}</h4>
90
- )}
91
- {auth.user?.walletAddress ? (
92
- <p className="text-sm opacity-50 truncate">{auth.user.walletAddress}</p>
93
- ) : (
94
- <Button variant="outline" className='w-full flex items-center gap-2' onClick={auth.associateWallet.bind(auth)}>
95
- <Ethereum height={20} />Connect your wallet
96
- </Button>
97
- )}
98
- </div>
99
- <Separator />
100
- <Button variant="outline" onClick={auth.logout.bind(auth)}>Logout</Button>
101
- </div>
102
- </PopoverContent>
103
- </Popover>
104
- )
105
-
106
- })
107
-
1
+ 'use client'
2
+ import React from "react"
3
+ import { observer } from "mobx-react-lite"
4
+
5
+ import {
6
+ Button,
7
+ LinkElement,
8
+ Popover,
9
+ PopoverContent,
10
+ PopoverTrigger,
11
+ Separator
12
+ } from '@hanzo/ui/primitives'
13
+
14
+ import type { LinkDef } from '@hanzo/ui/types'
15
+ import { cn } from '@hanzo/ui/util'
16
+
17
+ import { useAuth } from "@hanzo/auth/service"
18
+
19
+ import { Ethereum } from "@hanzo/auth/icons"
20
+ import { Icons } from ".."
21
+
22
+ const MobileAuthWidget: React.FC<{
23
+ noLogin?: boolean
24
+ className?: string
25
+ handleLogin?: () => void
26
+ }> = observer(({
27
+ noLogin = false,
28
+ className
29
+ }) => {
30
+ const auth = useAuth()
31
+ const handleLogin = () => {
32
+ window.location.href = "https://lux.id";
33
+ };
34
+
35
+ if (!auth) {
36
+ return null
37
+ }
38
+ if (!auth.loggedIn && typeof window !== 'undefined') {
39
+ return (noLogin ? null : (
40
+ (handleLogin) ? (
41
+ <div className="flex items-center py-1 px-1 gap-1">
42
+ <Button
43
+ variant='primary'
44
+ className='text-base font-semibold !min-w-0 self-center flex-1'
45
+ onClick={handleLogin}
46
+ >
47
+ Sign Up
48
+ </Button>
49
+ <Button
50
+ variant='outline'
51
+ className=' text-base font-semibold !min-w-0 self-center flex-1'
52
+ onClick={handleLogin}
53
+ >
54
+ Log In
55
+ </Button>
56
+ </div>
57
+ ) : (
58
+ <LinkElement
59
+ def={{
60
+ href: `${process.env.NEXT_PUBLIC_LOGIN_SITE_URL}?redirectUrl=${window.location.href}`,
61
+ title: 'Login',
62
+ variant: 'primary',
63
+ newTab: false
64
+ } satisfies LinkDef}
65
+ className='h-8 w-fit !min-w-0'
66
+ />
67
+ )
68
+ ))
69
+ }
70
+
71
+ return (
72
+ <Popover>
73
+ <PopoverTrigger asChild>
74
+ <Button
75
+ variant="outline"
76
+ size='icon'
77
+ className={cn('rounded-full text-muted border-2 border-muted bg-level-1 hover:bg-level-2 hover:border-foreground hover:text-foreground uppercase w-8 h-8', className)}
78
+ >{auth.user?.email[0]}</Button>
79
+ </PopoverTrigger>
80
+ <PopoverContent className='bg-level-0'>
81
+ <div className="grid gap-4">
82
+ <div className="space-y-2 truncate">
83
+ {auth.user?.displayName ? (
84
+ <>
85
+ <h4 className="font-medium leading-none truncate">{auth.user.displayName}</h4>
86
+ <p className="text-sm opacity-50 truncate">{auth.user.email}</p>
87
+ </>
88
+ ) : (
89
+ <h4 className="font-medium leading-none truncate">{auth.user?.email}</h4>
90
+ )}
91
+ {auth.user?.walletAddress ? (
92
+ <p className="text-sm opacity-50 truncate">{auth.user.walletAddress}</p>
93
+ ) : (
94
+ <Button variant="outline" className='w-full flex items-center gap-2' onClick={auth.associateWallet.bind(auth)}>
95
+ <Ethereum height={20} />Connect your wallet
96
+ </Button>
97
+ )}
98
+ </div>
99
+ <Separator />
100
+ <Button variant="outline" onClick={auth.logout.bind(auth)}>Logout</Button>
101
+ </div>
102
+ </PopoverContent>
103
+ </Popover>
104
+ )
105
+
106
+ })
107
+
108
108
  export default MobileAuthWidget
@@ -1,35 +1,35 @@
1
- 'use client'
2
- import React, { useState } from 'react'
3
-
4
- import { Plus } from 'lucide-react'
5
-
6
- import { Button } from '@hanzo/ui/primitives'
7
- import { cn } from '@hanzo/ui/util'
8
-
9
- const MobileMenuToggleButton: React.FC<{
10
- open: boolean
11
- setOpen: (b: boolean) => void
12
- className?: string
13
- }> = ({
14
- open,
15
- setOpen,
16
- className=''
17
- }) => {
18
-
19
- return (
20
- <Button
21
- variant='ghost'
22
- size='default'
23
- rounded='full'
24
- onClick={() => {setOpen(!open)}}
25
- className={cn('p-0 aspect-square hover:bg-background sm:hover:bg-level-1 active:scale-75', className)}
26
- >
27
- <Plus width={28} height={28} className={
28
- 'block h-full will-change-transform transition-transform transition-scale transition-duration-[1500] ' +
29
- (open ? 'rotate-[135deg] scale-110' : 'rotate-none')
30
- } />
31
- </Button>
32
- )
33
- }
34
-
35
- export default MobileMenuToggleButton
1
+ 'use client'
2
+ import React, { useState } from 'react'
3
+
4
+ import { Plus } from 'lucide-react'
5
+
6
+ import { Button } from '@hanzo/ui/primitives'
7
+ import { cn } from '@hanzo/ui/util'
8
+
9
+ const MobileMenuToggleButton: React.FC<{
10
+ open: boolean
11
+ setOpen: (b: boolean) => void
12
+ className?: string
13
+ }> = ({
14
+ open,
15
+ setOpen,
16
+ className=''
17
+ }) => {
18
+
19
+ return (
20
+ <Button
21
+ variant='ghost'
22
+ size='default'
23
+ rounded='full'
24
+ onClick={() => {setOpen(!open)}}
25
+ className={cn('p-0 aspect-square hover:bg-background sm:hover:bg-level-1 active:scale-75', className)}
26
+ >
27
+ <Plus width={28} height={28} className={
28
+ 'block h-full will-change-transform transition-transform transition-scale transition-duration-[1500] ' +
29
+ (open ? 'rotate-[135deg] scale-110' : 'rotate-none')
30
+ } />
31
+ </Button>
32
+ )
33
+ }
34
+
35
+ export default MobileMenuToggleButton
@@ -1,51 +1,51 @@
1
- 'use client'
2
- import React, { useState } from 'react'
3
- import { ArrowRight, Plus } from 'lucide-react'
4
- import { Button, Card } from '@hanzo/ui/primitives'
5
- import { Logo } from '..'
6
-
7
- interface MobileNavMenuAIProps {
8
- setMenuOpen: (open: boolean) => void
9
- }
10
-
11
- const MobileNavMenuAI: React.FC<MobileNavMenuAIProps> = ({ setMenuOpen }) => {
12
- const [isOpen, setIsOpen] = useState<boolean>(false)
13
-
14
- return (
15
- <>
16
- <div className="w-full text-2xl cursor-pointer">
17
- <div className='flex justify-between'>
18
- <Logo variant='text-only' size='md' outerClx={'p-6 h-full'} />
19
- <Plus width={28} height={28} className={
20
- 'block h-full aspect-square hover:bg-background sm:hover:bg-level-1 active:scale-75 text-foreground will-change-transform transition-transform transition-scale transition-duration-[1500] mt-6 mr-6 ' +
21
- (!open ? 'rotate-none' : 'rotate-[135deg] scale-110')
22
- } onClick={() => setMenuOpen(false)} />
23
- </div>
24
- <div className="flex items-center gap-5 border-b border-[#3A3A3A] mt-4 rounded-full bg-muted-4 mx-6">
25
- <div className="text-muted-1 font-bold flex-1 flex justify-between min-h-12 items-center px-2" onClick={() => setIsOpen(true)}>
26
- <span className='text-base pl-2 font-light'>Ask AI a question</span>
27
- <ArrowRight />
28
- </div>
29
- </div>
30
- </div>
31
- <div className={
32
- 'fixed bottom-0 sm:bottom-16 right-0 w-full h-full ' +
33
- 'sm:max-w-[400px] sm:max-h-[550px] sm:px-4 z-floating ' +
34
- (isOpen ? 'flex' : 'hidden')
35
- }>
36
- <Card className='flex flex-col h-full w-full'>
37
- <div className='flex px-4 py-2 h-16 bg-level-0 items-center justify-between'>
38
- <h3 className='font-semibold font-heading'>LUX<span className='opacity-60'>AI</span></h3>
39
- <Button onClick={() => setIsOpen(false)} variant='link' size='icon' className='w-fit sm:hidden'>
40
- <Plus className='w-6 h-6 flex-none mr-1 rotate-45 transition-transform' />
41
- </Button>
42
- </div>
43
- <iframe src="https://lux.chat/iframe" className='h-full' />
44
- </Card>
45
- </div>
46
-
47
- </>
48
- )
49
- };
50
-
1
+ 'use client'
2
+ import React, { useState } from 'react'
3
+ import { ArrowRight, Plus } from 'lucide-react'
4
+ import { Button, Card } from '@hanzo/ui/primitives'
5
+ import { Logo } from '..'
6
+
7
+ interface MobileNavMenuAIProps {
8
+ setMenuOpen: (open: boolean) => void
9
+ }
10
+
11
+ const MobileNavMenuAI: React.FC<MobileNavMenuAIProps> = ({ setMenuOpen }) => {
12
+ const [isOpen, setIsOpen] = useState<boolean>(false)
13
+
14
+ return (
15
+ <>
16
+ <div className="w-full text-2xl cursor-pointer">
17
+ <div className='flex justify-between'>
18
+ <Logo variant='text-only' size='md' outerClx={'p-6 h-full'} />
19
+ <Plus width={28} height={28} className={
20
+ 'block h-full aspect-square hover:bg-background sm:hover:bg-level-1 active:scale-75 text-foreground will-change-transform transition-transform transition-scale transition-duration-[1500] mt-6 mr-6 ' +
21
+ (!open ? 'rotate-none' : 'rotate-[135deg] scale-110')
22
+ } onClick={() => setMenuOpen(false)} />
23
+ </div>
24
+ <div className="flex items-center gap-5 border-b border-[#3A3A3A] mt-4 rounded-full bg-muted-4 mx-6">
25
+ <div className="text-muted-1 font-bold flex-1 flex justify-between min-h-12 items-center px-2" onClick={() => setIsOpen(true)}>
26
+ <span className='text-base pl-2 font-light'>Ask AI a question</span>
27
+ <ArrowRight />
28
+ </div>
29
+ </div>
30
+ </div>
31
+ <div className={
32
+ 'fixed bottom-0 sm:bottom-16 right-0 w-full h-full ' +
33
+ 'sm:max-w-[400px] sm:max-h-[550px] sm:px-4 z-floating ' +
34
+ (isOpen ? 'flex' : 'hidden')
35
+ }>
36
+ <Card className='flex flex-col h-full w-full'>
37
+ <div className='flex px-4 py-2 h-16 bg-level-0 items-center justify-between'>
38
+ <h3 className='font-semibold font-heading'>LUX<span className='opacity-60'>AI</span></h3>
39
+ <Button onClick={() => setIsOpen(false)} variant='link' size='icon' className='w-fit sm:hidden'>
40
+ <Plus className='w-6 h-6 flex-none mr-1 rotate-45 transition-transform' />
41
+ </Button>
42
+ </div>
43
+ <iframe src="https://lux.chat/iframe" className='h-full' />
44
+ </Card>
45
+ </div>
46
+
47
+ </>
48
+ )
49
+ };
50
+
51
51
  export default MobileNavMenuAI;
@@ -1,50 +1,50 @@
1
- import React, { useState } from 'react'
2
- import type { LinkDefExtended } from '../../site-def/main-nav'
3
- import { RightArrow } from '../icons'
4
- import LeftArrow from '../icons/left-arrow'
5
- import Link from 'next/link'
6
- import MobileNavMenuAI from './mobile-nav-menu-ai'
7
-
8
- interface MobileNavMenuItemProps {
9
- link: LinkDefExtended,
10
- setMenuOpen: (open: boolean) => void
11
-
12
- }
13
-
14
- const MobileNavMenuItem: React.FC<MobileNavMenuItemProps> = ({
15
- link,
16
- setMenuOpen
17
- }) => {
18
- const [isOpen, setIsOpen] = useState<boolean>(false);
19
-
20
- return (
21
- <>
22
- <div className="w-full flex items-center px-5 py-3 gap-[27px] text-2xl cursor-pointer" onClick={() => setIsOpen(true)}>
23
- <span className='block w-[18px] h-[22px] items-center'>{link.icon}</span>
24
- <span className='flex-1'>{link.title}</span>
25
- <RightArrow className='' />
26
- </div>
27
- <div className={`fixed left-0 top-0 w-screen h-screen ${isOpen ? 'block' : 'hidden'}`} style={{ backgroundColor: 'black' }}>
28
- <MobileNavMenuAI setMenuOpen={setMenuOpen} />
29
- <div className="w-full flex items-center px-5 py-3 gap-[27px] text-2xl font-bold" onClick={() => setIsOpen(false)}>
30
- <LeftArrow />
31
- <span className="text-white">{link.title}</span>
32
- </div>
33
- <div className="flex flex-col">
34
- {link.childMenu?.map((menu, index) => {
35
- return (
36
- <Link href={menu.href}>
37
- <div className="w-full flex items-center px-5 py-3 gap-[27px] text-2xl" key={index}>
38
- <span className='w-[18px] h-[22px] self-center flex items-center justify-center'>{menu.icon}</span>
39
- <span className='flex-1'>{menu.title}</span>
40
- </div>
41
- </Link>
42
- )
43
- })}
44
- </div>
45
- </div>
46
- </>
47
- )
48
- }
49
-
1
+ import React, { useState } from 'react'
2
+ import type { LinkDefExtended } from '../../site-def/main-nav'
3
+ import { RightArrow } from '../icons'
4
+ import LeftArrow from '../icons/left-arrow'
5
+ import Link from 'next/link'
6
+ import MobileNavMenuAI from './mobile-nav-menu-ai'
7
+
8
+ interface MobileNavMenuItemProps {
9
+ link: LinkDefExtended,
10
+ setMenuOpen: (open: boolean) => void
11
+
12
+ }
13
+
14
+ const MobileNavMenuItem: React.FC<MobileNavMenuItemProps> = ({
15
+ link,
16
+ setMenuOpen
17
+ }) => {
18
+ const [isOpen, setIsOpen] = useState<boolean>(false);
19
+
20
+ return (
21
+ <>
22
+ <div className="w-full flex items-center px-5 py-3 gap-[27px] text-2xl cursor-pointer" onClick={() => setIsOpen(true)}>
23
+ <span className='block w-[18px] h-[22px] items-center'>{link.icon}</span>
24
+ <span className='flex-1'>{link.title}</span>
25
+ <RightArrow className='' />
26
+ </div>
27
+ <div className={`fixed left-0 top-0 w-screen h-screen ${isOpen ? 'block' : 'hidden'}`} style={{ backgroundColor: 'black' }}>
28
+ <MobileNavMenuAI setMenuOpen={setMenuOpen} />
29
+ <div className="w-full flex items-center px-5 py-3 gap-[27px] text-2xl font-bold" onClick={() => setIsOpen(false)}>
30
+ <LeftArrow />
31
+ <span className="text-white">{link.title}</span>
32
+ </div>
33
+ <div className="flex flex-col">
34
+ {link.childMenu?.map((menu, index) => {
35
+ return (
36
+ <Link href={menu.href}>
37
+ <div className="w-full flex items-center px-5 py-3 gap-[27px] text-2xl" key={index}>
38
+ <span className='w-[18px] h-[22px] self-center flex items-center justify-center'>{menu.icon}</span>
39
+ <span className='flex-1'>{menu.title}</span>
40
+ </div>
41
+ </Link>
42
+ )
43
+ })}
44
+ </div>
45
+ </div>
46
+ </>
47
+ )
48
+ }
49
+
50
50
  export default MobileNavMenuItem