@gardenfi/garden-book 0.2.3-beta.12 → 0.2.3-beta.14

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 (259) hide show
  1. package/dist/BlogCard/BlogCard.js +60 -0
  2. package/dist/BottomSheet/BottomSheet.js +17 -0
  3. package/dist/Button/Button.js +108 -0
  4. package/dist/Button/ClientOnlyLottie.js +27 -0
  5. package/dist/{Button.js → Button/spinner.json.js} +30 -170
  6. package/dist/Checkbox/Checkbox.js +7 -0
  7. package/dist/Chip/Chip.js +20 -0
  8. package/dist/ClientOnly/ClientOnly.js +6 -0
  9. package/dist/Container/Container.js +6 -0
  10. package/dist/Footer/Footer.js +371 -0
  11. package/dist/Footer/FooterBackgroundAnimation.js +100 -0
  12. package/dist/Footer/FooterLink.js +86 -0
  13. package/dist/GradientScroll/GradientScroll.js +73 -0
  14. package/dist/Icons/APIIcon/APIIcon.js +37 -0
  15. package/dist/Icons/AddIcon/AddIcon.js +16 -0
  16. package/dist/Icons/ArrowDownwardIcon/ArrowDownwardIcon.js +16 -0
  17. package/dist/Icons/ArrowEastIcon/ArrowEastIcon.js +22 -0
  18. package/dist/Icons/ArrowInwardIcon/ArrowInwardIcon.js +37 -0
  19. package/dist/Icons/ArrowLeftIcon/ArrowLeftIcon.js +16 -0
  20. package/dist/Icons/ArrowNorthEastIcon/ArrowNorthEastIcon.js +16 -0
  21. package/dist/Icons/ArrowNorthWestIcon/ArrowNorthWestIcon.js +16 -0
  22. package/dist/Icons/ArrowRightIcon/ArrowRightIcon.js +16 -0
  23. package/dist/Icons/ArrowSouthEastIcon/ArrowSouthEastIcon.js +16 -0
  24. package/dist/Icons/ArrowSouthWestIcon/ArrowSouthWestIcon.js +16 -0
  25. package/dist/Icons/ArrowSyncIcon/ArrowSyncIcon.js +16 -0
  26. package/dist/Icons/ArrowUpwardIcon/ArrowUpwardIcon.js +16 -0
  27. package/dist/Icons/BlogIcon/BlogIcon.js +37 -0
  28. package/dist/Icons/BrandKitIcon/BrandKitIcon.js +37 -0
  29. package/dist/Icons/CancelIcon/CancelIcon.js +22 -0
  30. package/dist/Icons/ChainflipIcon/ChainflipIcon.js +103 -0
  31. package/dist/Icons/CheckCircleIcon/CheckCircleIcon.js +22 -0
  32. package/dist/Icons/CheckIcon/CheckIcon.js +16 -0
  33. package/dist/Icons/Checked/Checked.js +37 -0
  34. package/dist/Icons/ClockIcon/ClockIcon.js +16 -0
  35. package/dist/Icons/CloseIcon/CloseIcon.js +16 -0
  36. package/dist/Icons/CodeBlockIcon/CodeBlockIcon.js +22 -0
  37. package/dist/Icons/CompareArrowsIcon/CompareArrowsIcon.js +22 -0
  38. package/dist/Icons/ConsoleIcon/ConsoleIcon.js +22 -0
  39. package/dist/Icons/CopyIcon/CopyIcon.js +16 -0
  40. package/dist/Icons/CopyrightsIcon/CopyrightsIcon.js +22 -0
  41. package/dist/Icons/DeleteIcon/DeleteIcon.js +16 -0
  42. package/dist/Icons/DiscordIcon/DiscordIcon.js +22 -0
  43. package/dist/Icons/DollarChipIcon/DollarChipIcon.js +37 -0
  44. package/dist/Icons/DraftIcon/DraftIcon.js +37 -0
  45. package/dist/Icons/EditIcon/EditIcon.js +16 -0
  46. package/dist/Icons/EncryptedIcon/EncryptedIcon.js +37 -0
  47. package/dist/Icons/ExchangeIcon/ExchangeIcon.js +19 -0
  48. package/dist/Icons/FaqIcon/FaqIcon.js +37 -0
  49. package/dist/Icons/FeesIcon/FeesIcon.js +22 -0
  50. package/dist/Icons/FingerprintIcon/FingerprintIcon.js +22 -0
  51. package/dist/Icons/FolderIcon/FolderIcon.js +37 -0
  52. package/dist/Icons/GasStationIcon/GasStationIcon.js +22 -0
  53. package/dist/Icons/GiftBoxIcon/GiftBoxIcon.js +37 -0
  54. package/dist/Icons/{LanguageIcon → GlobeIcon}/GlobeIcon.d.ts +1 -1
  55. package/dist/Icons/GlobeIcon/GlobeIcon.js +16 -0
  56. package/dist/Icons/GlobeIcon/index.d.ts +1 -0
  57. package/dist/Icons/HorizontalSwap/HorizontalSwap.js +37 -0
  58. package/dist/Icons/HubIcon/HubIcon.js +16 -0
  59. package/dist/Icons/InfinityIcon/InfinityIcon.js +22 -0
  60. package/dist/Icons/InfoIcon/InfoIcon.js +16 -0
  61. package/dist/Icons/KeyboardDownIcon/KeyboardDownIcon.js +16 -0
  62. package/dist/Icons/KeyboardLeftIcon/KeyboardLeftIcon.js +16 -0
  63. package/dist/Icons/KeyboardRightIcon/KeyboardRightIcon.js +16 -0
  64. package/dist/Icons/KeyboardUpIcon/KeyboardUpIcon.js +16 -0
  65. package/dist/Icons/LinkIcon/LinkIcon.js +16 -0
  66. package/dist/Icons/LockIcon/LockIcon.js +16 -0
  67. package/dist/Icons/LogoutIcon/LogoutIcon.js +16 -0
  68. package/dist/Icons/MenuIcon/MenuIcon.js +16 -0
  69. package/dist/Icons/MinusIcon/MinusIcon.js +19 -0
  70. package/dist/Icons/OpenInFullIcon/OpenInFullIcon.js +16 -0
  71. package/dist/Icons/OpenInNewIcon/OpenInNewIcon.js +22 -0
  72. package/dist/Icons/OtterSecIcon/OtterSecIcon.js +31 -0
  73. package/dist/Icons/PageInfoIcon/PageInfoIcon.js +16 -0
  74. package/dist/Icons/PasskeyIcon/PasskeyIcon.js +22 -0
  75. package/dist/Icons/PasskeyIcon/index.d.ts +1 -1
  76. package/dist/Icons/PlusIcon/PlusIcon.js +19 -0
  77. package/dist/Icons/RadioCheckedIcon/RadioCheckedIcon.js +16 -0
  78. package/dist/Icons/RadioUncheckedIcon/RadioUncheckedIcon.js +16 -0
  79. package/dist/Icons/RaiseHandIcon/RaiseHandIcon.js +37 -0
  80. package/dist/Icons/ReferralIcon/ReferralIcon.js +16 -0
  81. package/dist/Icons/RelayLinkIcon/RelayLinkIcon.js +88 -0
  82. package/dist/Icons/RemoveIcon/RemoveIcon.js +16 -0
  83. package/dist/Icons/Rotate360Icon/Rotate360Icon.js +37 -0
  84. package/dist/Icons/RoutingIcon/RoutingIcon.js +37 -0
  85. package/dist/Icons/RowInfoIcon/RowInfoIcon.js +37 -0
  86. package/dist/Icons/SDKIcon/SDKIcon.js +37 -0
  87. package/dist/Icons/SearchIcon/SearchIcon.js +16 -0
  88. package/dist/Icons/SearchIconThin/SearchIconThin.js +37 -0
  89. package/dist/Icons/Share/Share.js +22 -0
  90. package/dist/Icons/StakeIcon/StakeIcon.js +37 -0
  91. package/dist/Icons/StarIcon/StarIcon.js +16 -0
  92. package/dist/Icons/SwapHorizontalIcon/SwapHorizontalIcon.js +21 -0
  93. package/dist/Icons/ThorswapIcon/ThorswapIcon.js +55 -0
  94. package/dist/Icons/TimerIcon/TimerIcon.js +16 -0
  95. package/dist/Icons/Unchecked/Unchecked.js +37 -0
  96. package/dist/Icons/WalletIcon/WalletIcon.js +16 -0
  97. package/dist/Icons/WalletIconRose/WalletIconRose.js +22 -0
  98. package/dist/Icons/WarningIcon/WarningIcon.js +37 -0
  99. package/dist/Icons/XIcon/XIcon.js +22 -0
  100. package/dist/Icons/XSolidIcon/XSolidIcon.js +22 -0
  101. package/dist/Icons/ZellicIcon/ZellicIcon.js +101 -0
  102. package/dist/Icons/index.d.ts +1 -1
  103. package/dist/InfoBadge/InfoBadge.js +16 -0
  104. package/dist/Logo/ArbitrumLogo/ArbitrumLogo.js +66 -0
  105. package/dist/Logo/BTCLogo/BTCLogo.js +32 -0
  106. package/dist/Logo/Camelot/Camelot.js +73 -0
  107. package/dist/Logo/CatalogLogo/CatalogLogo.js +44 -0
  108. package/dist/Logo/Coinbase/Coinbase.js +24 -0
  109. package/dist/Logo/DLCBTC/DLCBTC.js +68 -0
  110. package/dist/Logo/Debridge/Debridge.js +103 -0
  111. package/dist/Logo/Dodo/DODO.js +77 -0
  112. package/dist/Logo/EthereumLogo/EthereumLogo.js +60 -0
  113. package/dist/Logo/GMX/GMX.js +49 -0
  114. package/dist/Logo/GMXLogo/GMXLogo.js +40 -0
  115. package/dist/Logo/GardenDocs/GardenDocs.js +31 -0
  116. package/dist/Logo/GardenExplorer/GardenExplorer.js +34 -0
  117. package/dist/Logo/GardenExplorerAlt/GardenExplorerAlt.js +31 -0
  118. package/dist/Logo/GardenFullLogo/GardenFullLogo.js +66 -0
  119. package/dist/{GardenIcon-E0OJI-b-.js → Logo/GardenIcon/GardenIcon.js} +11 -13
  120. package/dist/Logo/GardenIconOutline/GardenIconOutline.js +43 -0
  121. package/dist/Logo/GardenLogo/GardenLogo.js +33 -0
  122. package/dist/Logo/GardenLogoDark/GardenLogoDark.js +83 -0
  123. package/dist/Logo/GardenLogoLight/GardenLogoLight.js +83 -0
  124. package/dist/Logo/GardenLogoMarkDark/GardenLogoMarkDark.js +41 -0
  125. package/dist/Logo/GardenLogoMarkLight/GardenLogoMarkLight.js +41 -0
  126. package/dist/Logo/GardenLogoText/GardenLogoText.js +59 -0
  127. package/dist/Logo/GardenStrokeIcon/GardenStrokeIcon.js +43 -0
  128. package/dist/Logo/NFTIcon/NFTIcon.js +37 -0
  129. package/dist/Logo/PancakeSwap/PancakeSwap.js +134 -0
  130. package/dist/Logo/PhantomIcon/PhantomIcon.js +23 -0
  131. package/dist/Logo/PolygonLogo/PolygonLogo.js +31 -0
  132. package/dist/Logo/Radiant/Radiant.js +31 -0
  133. package/dist/Logo/RadiantLogo/RadiantLogo.js +40 -0
  134. package/dist/Logo/Solv/Solv.js +73 -0
  135. package/dist/Logo/SwellBTC/SwellBTC.js +31 -0
  136. package/dist/Logo/TraderJoe/TraderJoe.js +98 -0
  137. package/dist/Logo/TrailOfBits/TrailOfBits.js +190 -0
  138. package/dist/Logo/TrustWallet/TrustWallet.js +50 -0
  139. package/dist/Logo/Vertex/Vertex.js +90 -0
  140. package/dist/Logo/WalletConnect/WalletConnect.js +22 -0
  141. package/dist/Modal/Modal.js +66 -0
  142. package/dist/Opacity/Opacity.d.ts +1 -1
  143. package/dist/Opacity/Opacity.js +25 -0
  144. package/dist/QuestCard/QuestCard.js +57 -0
  145. package/dist/Sidebar/Sidebar.js +41 -0
  146. package/dist/TokenInfo/TokenInfo.js +44 -0
  147. package/dist/TokenNetworkLogos/TokenNetworkLogos.js +39 -0
  148. package/dist/{Typography-DX9XpQWB.js → Typography/Typography.js} +23 -25
  149. package/dist/animations/RollingText/RollingText.d.ts +12 -0
  150. package/dist/animations/RollingText/RollingText.js +70 -0
  151. package/dist/animations/ScaleY/ScaleY.d.ts +12 -0
  152. package/dist/animations/ScaleY/ScaleY.js +32 -0
  153. package/dist/animations/Shine/Shine.d.ts +11 -0
  154. package/dist/animations/Shine/Shine.js +6 -0
  155. package/dist/animations/index.d.ts +5 -0
  156. package/dist/assets/blogPlaceholder.svg.js +4 -0
  157. package/dist/assets/maskRect.svg.js +4 -0
  158. package/dist/hooks/useClientOnly.d.ts +5 -0
  159. package/dist/hooks/useClientOnly.js +10 -0
  160. package/dist/index.d.ts +21 -0
  161. package/dist/index.js +287 -0
  162. package/dist/node_modules/@radix-ui/primitive/dist/index.js +9 -0
  163. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +29 -0
  164. package/dist/node_modules/@radix-ui/react-context/dist/index.js +70 -0
  165. package/dist/node_modules/@radix-ui/react-dialog/dist/index.js +257 -0
  166. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +127 -0
  167. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js +17 -0
  168. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js +137 -0
  169. package/dist/node_modules/@radix-ui/react-id/dist/index.js +13 -0
  170. package/dist/node_modules/@radix-ui/react-portal/dist/index.js +16 -0
  171. package/dist/node_modules/@radix-ui/react-presence/dist/index.js +71 -0
  172. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js +36 -0
  173. package/dist/node_modules/@radix-ui/react-slot/dist/index.js +50 -0
  174. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +13 -0
  175. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +54 -0
  176. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +14 -0
  177. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +6 -0
  178. package/dist/node_modules/aria-hidden/dist/es2015/index.js +52 -0
  179. package/dist/node_modules/vaul/dist/index.js +1038 -0
  180. package/dist/style.css +1 -17
  181. package/dist/utils/utils.d.ts +3 -0
  182. package/dist/utils/utils.js +6 -0
  183. package/package.json +4 -8
  184. package/dist/BlogCard.js +0 -820
  185. package/dist/BlogCard.js.map +0 -1
  186. package/dist/BottomSheet.js +0 -2801
  187. package/dist/BottomSheet.js.map +0 -1
  188. package/dist/Button/spinner.json.d.ts +0 -3
  189. package/dist/Button.js.map +0 -1
  190. package/dist/Checkbox.js +0 -9
  191. package/dist/Checkbox.js.map +0 -1
  192. package/dist/Chip-DOSAEkS5.js +0 -24
  193. package/dist/Chip-DOSAEkS5.js.map +0 -1
  194. package/dist/Chip.js +0 -5
  195. package/dist/Chip.js.map +0 -1
  196. package/dist/ClientOnly-CMQEf-Yl.js +0 -13
  197. package/dist/ClientOnly-CMQEf-Yl.js.map +0 -1
  198. package/dist/ClientOnly.js +0 -5
  199. package/dist/ClientOnly.js.map +0 -1
  200. package/dist/Combination-BN2ESQ8D.js +0 -666
  201. package/dist/Combination-BN2ESQ8D.js.map +0 -1
  202. package/dist/Container.js +0 -9
  203. package/dist/Container.js.map +0 -1
  204. package/dist/Footer.js +0 -661
  205. package/dist/Footer.js.map +0 -1
  206. package/dist/GardenIcon-E0OJI-b-.js.map +0 -1
  207. package/dist/GradientScroll.js +0 -86
  208. package/dist/GradientScroll.js.map +0 -1
  209. package/dist/Icons/LanguageIcon/index.d.ts +0 -1
  210. package/dist/Icons.js +0 -1936
  211. package/dist/Icons.js.map +0 -1
  212. package/dist/InfoBadge.js +0 -19
  213. package/dist/InfoBadge.js.map +0 -1
  214. package/dist/KeyboardDownIcon-hh63DdT7.js +0 -19
  215. package/dist/KeyboardDownIcon-hh63DdT7.js.map +0 -1
  216. package/dist/Logo.js +0 -2044
  217. package/dist/Logo.js.map +0 -1
  218. package/dist/Modal.js +0 -77
  219. package/dist/Modal.js.map +0 -1
  220. package/dist/Opacity-DRe3jTZ4.js +0 -29
  221. package/dist/Opacity-DRe3jTZ4.js.map +0 -1
  222. package/dist/Opacity.js +0 -5
  223. package/dist/Opacity.js.map +0 -1
  224. package/dist/OpenInFullIcon-D2mt0Gjr.js +0 -34
  225. package/dist/OpenInFullIcon-D2mt0Gjr.js.map +0 -1
  226. package/dist/QuestCard.js +0 -60
  227. package/dist/QuestCard.js.map +0 -1
  228. package/dist/RadioUncheckedIcon-KnzZG6cp.js +0 -34
  229. package/dist/RadioUncheckedIcon-KnzZG6cp.js.map +0 -1
  230. package/dist/Sidebar.js +0 -45
  231. package/dist/Sidebar.js.map +0 -1
  232. package/dist/TokenInfo.js +0 -47
  233. package/dist/TokenInfo.js.map +0 -1
  234. package/dist/TokenNetworkLogos-DZZrRsmI.js +0 -41
  235. package/dist/TokenNetworkLogos-DZZrRsmI.js.map +0 -1
  236. package/dist/TokenNetworkLogos.js +0 -5
  237. package/dist/TokenNetworkLogos.js.map +0 -1
  238. package/dist/Typography-DX9XpQWB.js.map +0 -1
  239. package/dist/Typography.js +0 -5
  240. package/dist/Typography.js.map +0 -1
  241. package/dist/Unchecked-B7UGXlAZ.js +0 -76
  242. package/dist/Unchecked-B7UGXlAZ.js.map +0 -1
  243. package/dist/XIcon-DC822TMq.js +0 -67
  244. package/dist/XIcon-DC822TMq.js.map +0 -1
  245. package/dist/fonts/HafferBlack.woff2 +0 -0
  246. package/dist/fonts/HafferBold.woff2 +0 -0
  247. package/dist/fonts/HafferHeavy.woff2 +0 -0
  248. package/dist/fonts/HafferLight.woff2 +0 -0
  249. package/dist/fonts/HafferMedium.woff2 +0 -0
  250. package/dist/fonts/HafferRegular.woff2 +0 -0
  251. package/dist/fonts/HafferSemiBold.woff2 +0 -0
  252. package/dist/fonts/HafferThin.woff2 +0 -0
  253. package/dist/index-Ir5YwUO1.js +0 -45
  254. package/dist/index-Ir5YwUO1.js.map +0 -1
  255. package/dist/useClientOnly-Bzx92NOa.js +0 -12
  256. package/dist/useClientOnly-Bzx92NOa.js.map +0 -1
  257. package/dist/utils-BnsJHiW8.js +0 -2478
  258. package/dist/utils-BnsJHiW8.js.map +0 -1
  259. /package/dist/Icons/PasskeyIcon/{Passkey.d.ts → PasskeyIcon.d.ts} +0 -0
package/dist/Footer.js DELETED
@@ -1,661 +0,0 @@
1
- import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
- import { useState, useRef, useEffect, forwardRef, useImperativeHandle } from "react";
3
- import { T as Typography } from "./Typography-DX9XpQWB.js";
4
- import { c as cn } from "./utils-BnsJHiW8.js";
5
- import { useMotionValue, useTransform, AnimatePresence, motion, useAnimate, stagger } from "framer-motion";
6
- import { u as useClientOnly } from "./useClientOnly-Bzx92NOa.js";
7
- import { G as GardenIcon } from "./GardenIcon-E0OJI-b-.js";
8
- import { X as XIcon, D as DiscordIcon, C as CopyrightsIcon } from "./XIcon-DC822TMq.js";
9
- const FooterBackgroundAnimation = ({
10
- isMobile,
11
- isLogoHovered,
12
- maskUrl
13
- }) => {
14
- const [videoSrc] = useState(
15
- "https://garden-bucket-cdn.s3.eu-central-1.amazonaws.com/flowers_bg.mp4"
16
- );
17
- const [animationState, setAnimationState] = useState("initial");
18
- const videoRef = useRef(null);
19
- const animatedVideoRef = useRef(null);
20
- const maskX = useMotionValue(45);
21
- const maskPos = useTransform(maskX, (x) => `${x}% center`);
22
- useEffect(() => {
23
- if (isLogoHovered) {
24
- setAnimationState("visible");
25
- } else {
26
- setAnimationState("exit");
27
- const timer = setTimeout(() => {
28
- setAnimationState("initial");
29
- }, 800);
30
- return () => clearTimeout(timer);
31
- }
32
- }, [isLogoHovered]);
33
- return /* @__PURE__ */ jsxs(Fragment, { children: [
34
- /* @__PURE__ */ jsx(
35
- "video",
36
- {
37
- ref: videoRef,
38
- src: videoSrc,
39
- autoPlay: true,
40
- loop: true,
41
- muted: true,
42
- controls: false,
43
- preload: "metadata",
44
- playsInline: true,
45
- className: "gf-pointer-events-none gf-absolute gf-left-0 gf-top-0 gf-z-0 gf-h-full gf-w-screen gf-object-cover gf-opacity-0"
46
- },
47
- "video-flowers"
48
- ),
49
- /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsx(
50
- motion.div,
51
- {
52
- animate: animationState,
53
- variants: {
54
- initial: { maskPosition: "45%", opacity: 0 },
55
- visible: { maskPosition: "10%", opacity: 1 },
56
- exit: {
57
- maskPosition: "-60%",
58
- opacity: 0,
59
- transition: {
60
- duration: 1.2,
61
- ease: [0, 0.77, 0.3, 1],
62
- opacity: {
63
- delay: 0.4
64
- }
65
- }
66
- }
67
- },
68
- transition: {
69
- duration: 1,
70
- ease: [0.22, 0.68, 0.88, 0.96],
71
- delay: 0.15,
72
- opacity: {
73
- times: [0, 1, 1, 1]
74
- }
75
- },
76
- style: {
77
- maskImage: `linear-gradient(black, black), url('${maskUrl}')`,
78
- maskComposite: "exclude",
79
- maskSize: isMobile ? "1200% 200%" : "820% 600%",
80
- maskPosition: maskPos
81
- },
82
- className: "gf-pointer-events-none gf-absolute gf-left-0 gf-top-0 gf-z-0 gf-h-full gf-w-full gf-overflow-hidden gf-opacity-0",
83
- children: /* @__PURE__ */ jsx(
84
- "video",
85
- {
86
- ref: animatedVideoRef,
87
- src: videoSrc,
88
- autoPlay: true,
89
- loop: true,
90
- muted: true,
91
- controls: false,
92
- preload: "metadata",
93
- playsInline: true,
94
- className: "gf-pointer-events-none gf-h-full gf-w-screen gf-object-cover",
95
- onCanPlayThrough: () => {
96
- if (animatedVideoRef.current) {
97
- animatedVideoRef.current.play().catch(console.error);
98
- }
99
- },
100
- onLoadStart: () => {
101
- if (animatedVideoRef.current) {
102
- animatedVideoRef.current.play().catch(console.error);
103
- }
104
- }
105
- },
106
- "video-flowers-animated"
107
- )
108
- },
109
- "hovered"
110
- ) })
111
- ] });
112
- };
113
- const RollingText = forwardRef(
114
- ({ value, isHovered, className, delay }, ref) => {
115
- const alphabets = value.split("");
116
- const [scope, animate] = useAnimate();
117
- const startAnimation = () => {
118
- animate([
119
- [
120
- ".gf-letter",
121
- { y: "-100%" },
122
- {
123
- duration: 0.5,
124
- delay: delay ? stagger(0.014, { startDelay: delay }) : stagger(0.014),
125
- ease: [0.76, 0, 0.24, 1]
126
- }
127
- ]
128
- ]);
129
- };
130
- const stopAnimation = () => {
131
- animate([
132
- [
133
- ".gf-letter",
134
- { y: "0%" },
135
- {
136
- duration: 0.5,
137
- delay: delay ? stagger(0.014, { startDelay: delay }) : stagger(0.014),
138
- ease: [0.76, 0, 0.24, 1]
139
- }
140
- ]
141
- ]);
142
- };
143
- useImperativeHandle(ref, () => ({
144
- startAnimation,
145
- stopAnimation
146
- }));
147
- useEffect(() => {
148
- if (isHovered) {
149
- startAnimation();
150
- } else {
151
- stopAnimation();
152
- }
153
- }, [isHovered]);
154
- useEffect(() => {
155
- const handleMouseEnter = () => {
156
- if (!isHovered) {
157
- startAnimation();
158
- }
159
- };
160
- const handleMouseLeave = () => {
161
- if (!isHovered) {
162
- stopAnimation();
163
- }
164
- };
165
- const buttonElement = scope.current;
166
- if (buttonElement) {
167
- buttonElement.addEventListener("mouseenter", handleMouseEnter);
168
- buttonElement.addEventListener("mouseleave", handleMouseLeave);
169
- return () => {
170
- buttonElement.removeEventListener("mouseenter", handleMouseEnter);
171
- buttonElement.removeEventListener("mouseleave", handleMouseLeave);
172
- };
173
- }
174
- }, [scope, isHovered]);
175
- return /* @__PURE__ */ jsx("div", { ref: scope, children: /* @__PURE__ */ jsx(
176
- "span",
177
- {
178
- className: cn(
179
- `gf-flex gf-h-5 gf-items-center gf-justify-start gf-overflow-hidden gf-pr-0.5`,
180
- className
181
- ),
182
- children: alphabets.map((char, i) => /* @__PURE__ */ jsx(
183
- "span",
184
- {
185
- "data-letter": char,
186
- className: "gf-letter gf-relative gf-h-5 gf-whitespace-pre gf-leading-5 after:gf-absolute after:gf-left-0 after:gf-top-full after:gf-h-5 after:gf-leading-5 after:gf-content-[attr(data-letter)]",
187
- children: char
188
- },
189
- `${char}-${i}`
190
- ))
191
- }
192
- ) });
193
- }
194
- );
195
- RollingText.displayName = "RollingText";
196
- const FooterLinks = ({
197
- title,
198
- links,
199
- hoveredIndex,
200
- onHover,
201
- className = "gf-flex gf-w-full gf-flex-col gf-gap-3 md:gf-w-fit",
202
- listClassName = "gf-flex gf-flex-col gf-gap-1",
203
- isRoutes = false
204
- }) => {
205
- return /* @__PURE__ */ jsxs("div", { className, children: [
206
- /* @__PURE__ */ jsx(
207
- Typography,
208
- {
209
- size: "h4",
210
- weight: "medium",
211
- className: "gf-flex gf-items-center gf-gap-2 gf-transition-all gf-duration-500 gf-ease-in-out gf-text-inherit",
212
- children: /* @__PURE__ */ jsx("span", { children: title })
213
- }
214
- ),
215
- /* @__PURE__ */ jsx("ul", { className: listClassName, children: Object.values(links).map(
216
- (link, index) => link.link && /* @__PURE__ */ jsx(
217
- "li",
218
- {
219
- className: isRoutes ? "gf-w-fit" : "",
220
- onMouseEnter: () => {
221
- onHover == null ? void 0 : onHover(index);
222
- },
223
- onMouseLeave: () => {
224
- onHover == null ? void 0 : onHover(null);
225
- },
226
- children: /* @__PURE__ */ jsxs(
227
- Typography,
228
- {
229
- as: "a",
230
- href: link.link,
231
- target: "_blank",
232
- size: "h4",
233
- weight: "regular",
234
- className: `gf-cursor-pointer gf-transition-all gf-duration-500 gf-ease-in-out gf-text-inherit ${isRoutes ? "gf-flex gf-w-fit gf-gap-0.5 gf-items-end gf-transition-colors gf-duration-500 gf-ease-in-out" : ""}`,
235
- children: [
236
- link.inputAsset && /* @__PURE__ */ jsx(
237
- RollingText,
238
- {
239
- value: link.inputAsset || "",
240
- isHovered: hoveredIndex === index
241
- }
242
- ),
243
- isRoutes && link.inputChain && /* @__PURE__ */ jsx(
244
- RollingText,
245
- {
246
- delay: 0.1,
247
- className: "gf-text-xs gf-italic gf-translate-y-[0.6px]",
248
- value: link.inputChain,
249
- isHovered: hoveredIndex === index
250
- }
251
- ),
252
- /* @__PURE__ */ jsx(
253
- RollingText,
254
- {
255
- delay: 0.15,
256
- value: link.title,
257
- isHovered: hoveredIndex === index
258
- }
259
- ),
260
- isRoutes && link.chain && /* @__PURE__ */ jsx(
261
- RollingText,
262
- {
263
- delay: 0.3,
264
- className: "gf-text-xs gf-italic gf-translate-y-[0.6px] -gf-translate-x-[2px]",
265
- value: link.chain,
266
- isHovered: hoveredIndex === index
267
- }
268
- )
269
- ]
270
- }
271
- )
272
- },
273
- index
274
- )
275
- ) })
276
- ] });
277
- };
278
- const MaskURL = "data:image/svg+xml,%3csvg%20width='3956'%20height='906'%20viewBox='0%200%203956%20906'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='3956'%20height='906'%20fill='url(%23paint0_linear_579_2)'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_579_2'%20x1='1465.5'%20y1='731.406'%20x2='2604.91'%20y2='227.235'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-opacity='0'/%3e%3cstop%20offset='0.115385'/%3e%3cstop%20offset='0.88'/%3e%3cstop%20offset='1'%20stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e";
279
- const Footer = ({
280
- className,
281
- network = "mainnet",
282
- maskUrl = MaskURL,
283
- ...props
284
- }) => {
285
- const [isLogoHovered, setIsLogoHovered] = useState(false);
286
- const [hoveredRouteIndex, setHoveredRouteIndex] = useState(
287
- null
288
- );
289
- const isClient = useClientOnly();
290
- const hoverTimeoutRef = useRef(null);
291
- useEffect(() => {
292
- return () => {
293
- if (hoverTimeoutRef.current) {
294
- clearTimeout(hoverTimeoutRef.current);
295
- }
296
- };
297
- }, []);
298
- const appLink = network && network === "testnet" ? "https://testnet.garden.finance" : "https://app.garden.finance";
299
- const homepage = "https://garden.finance";
300
- const INTERNAL_ROUTES = {
301
- Products: {
302
- swap: {
303
- title: "Swap",
304
- link: network && network === "testnet" ? `${appLink}/?input-chain=bitcoin_testnet&input-asset=BTC` : `${appLink}/?input-chain=bitcoin&input-asset=BTC`,
305
- isExternal: true
306
- },
307
- stake: {
308
- title: "Stake",
309
- link: network && network === "testnet" ? void 0 : `${appLink}/stake`,
310
- isExternal: true
311
- },
312
- explorer: {
313
- title: "Explorer",
314
- link: network && network === "testnet" ? "https://testnet-explorer.garden.finance/" : "https://explorer.garden.finance/",
315
- isExternal: true
316
- }
317
- },
318
- Resources: {
319
- blog: {
320
- title: "Blog",
321
- link: `${homepage}/blog`,
322
- isExternal: true
323
- },
324
- faq: {
325
- title: "FAQs",
326
- link: `${homepage}/faq`,
327
- isExternal: true
328
- },
329
- brandKit: {
330
- title: "Brand kit",
331
- link: `${homepage}/brand-kit`,
332
- isExternal: true
333
- },
334
- analytics: {
335
- title: "Analytics",
336
- link: "https://dune.com/garden_finance/gardenfinance",
337
- isExternal: true
338
- },
339
- Audits: {
340
- title: "Audits",
341
- link: "https://github.com/gardenfi/audits",
342
- isExternal: true
343
- }
344
- },
345
- Developers: {
346
- docs: {
347
- title: "Docs",
348
- link: "https://docs.garden.finance/",
349
- isExternal: true
350
- },
351
- api: {
352
- title: "API",
353
- link: "https://docs.garden.finance/developers/api/overview",
354
- isExternal: true
355
- },
356
- sdk: {
357
- title: "SDK",
358
- link: "https://docs.garden.finance/developers/sdk/overview",
359
- isExternal: true
360
- }
361
- }
362
- };
363
- const Routes = {
364
- btcToSol: {
365
- title: "BTC to SOL",
366
- link: homepage + "/routes/bridge-btc-to-sol",
367
- chain: "Solana",
368
- isExternal: true
369
- },
370
- btcToEth: {
371
- title: "BTC to ETH",
372
- link: homepage + "/routes/bridge-btc-to-eth",
373
- chain: "Ethereum",
374
- isExternal: true
375
- },
376
- btcToUsdc: {
377
- title: "BTC to USDC",
378
- link: homepage + "/routes/bridge-btc-to-usdc-arbitrum",
379
- chain: "Arbitrum",
380
- isExternal: true
381
- },
382
- btctoUsdcEth: {
383
- title: "BTC to USDC",
384
- link: homepage + "/routes/bridge-btc-to-usdc-ethereum",
385
- chain: "Ethereum",
386
- isExternal: true
387
- },
388
- btcToWbtc: {
389
- title: "BTC to WBTC",
390
- link: homepage + "/routes/bridge-btc-to-wbtc-ethereum",
391
- chain: "Ethereum",
392
- isExternal: true
393
- },
394
- btcTocbBtc: {
395
- title: "BTC to cbBtc",
396
- link: homepage + "/routes/bridge-btc-to-cbbtc-base",
397
- chain: "Base",
398
- isExternal: true
399
- },
400
- btcToSui: {
401
- title: "BTC to SUI",
402
- link: homepage + "/routes/bridge-btc-to-sui",
403
- chain: "Sui",
404
- isExternal: true
405
- },
406
- btcToWbtcUni: {
407
- title: "BTC to WBTC",
408
- link: homepage + "/routes/bridge-btc-to-wbtc-unichain",
409
- chain: "Unichain",
410
- isExternal: true
411
- },
412
- btcToBnb: {
413
- title: "BTC to BNB",
414
- link: homepage + "/routes/bridge-btc-to-bnb",
415
- chain: "BNB Chain",
416
- isExternal: true
417
- },
418
- btcToMon: {
419
- title: "BTC to MON",
420
- link: homepage + "/routes/bridge-btc-to-mon",
421
- chain: "Monad",
422
- isExternal: true
423
- },
424
- cbBtcBaseTocbBtcSolana: {
425
- title: " to cbBtc",
426
- link: homepage + "/routes/bridge-cbbtc-base-to-cbbtc-solana",
427
- inputAsset: "cbBtc",
428
- inputChain: "Base",
429
- chain: "Solana",
430
- isExternal: true
431
- },
432
- usdcBnbToBtc: {
433
- title: " to BTC",
434
- link: homepage + "/routes/bridge-usdc-bnb-to-btc",
435
- inputAsset: "USDC",
436
- inputChain: "BNB Chain",
437
- isExternal: true
438
- },
439
- btcToUsdtEthereum: {
440
- title: " to USDT",
441
- link: homepage + "/routes/bridge-btc-to-usdt-ethereum",
442
- inputAsset: "BTC",
443
- chain: "Ethereum",
444
- isExternal: true
445
- },
446
- btcToUsdcSolana: {
447
- title: " to USDC",
448
- link: homepage + "/routes/bridge-btc-to-usdc-solana",
449
- inputAsset: "BTC",
450
- chain: "Solana",
451
- isExternal: true
452
- },
453
- usdcEthereumToBtc: {
454
- title: " to BTC",
455
- link: homepage + "/routes/bridge-usdc-ethereum-to-btc",
456
- inputAsset: "USDC",
457
- inputChain: "Ethereum",
458
- isExternal: true
459
- },
460
- solToBtc: {
461
- title: " to BTC",
462
- link: homepage + "/routes/bridge-sol-to-btc",
463
- inputAsset: "SOL",
464
- inputChain: "Solana",
465
- isExternal: true
466
- },
467
- usdcEthereumToUsdcBase: {
468
- title: " to USDC",
469
- link: homepage + "/routes/bridge-usdc-ethereum-to-usdc-base",
470
- inputAsset: "USDC",
471
- inputChain: "Ethereum",
472
- chain: "Base",
473
- isExternal: true
474
- }
475
- };
476
- const SOCIAL_LINKS = {
477
- discord: "https://discord.gg/7feudTFMXB",
478
- x: "https://x.com/gardenfi"
479
- };
480
- const { Products, Resources, Developers } = INTERNAL_ROUTES;
481
- return /* @__PURE__ */ jsxs(
482
- "footer",
483
- {
484
- className: cn(
485
- "gf-z-10 gf-relative gf-mx-auto gf-flex gf-w-full gf-flex-col gf-items-center gf-justify-center gf-bg-white gf-px-6 gf-pb-10 gf-pt-20 md:gf-px-10",
486
- className,
487
- isLogoHovered ? "gf-text-white" : "gf-text-dark-grey"
488
- ),
489
- ...props,
490
- children: [
491
- /* @__PURE__ */ jsxs("div", { className: "gf-z-30 gf-w-full gf-max-w-screen-2xl", children: [
492
- /* @__PURE__ */ jsxs("div", { className: "gf-mx-auto gf-flex gf-w-full gf-flex-col gf-items-start gf-justify-between gf-gap-8", children: [
493
- /* @__PURE__ */ jsxs("div", { className: "gf-flex gf-w-full gf-items-center gf-justify-between gf-gap-6", children: [
494
- /* @__PURE__ */ jsx(
495
- GardenIcon,
496
- {
497
- onMouseEnter: () => {
498
- if (hoverTimeoutRef.current) {
499
- clearTimeout(hoverTimeoutRef.current);
500
- }
501
- hoverTimeoutRef.current = setTimeout(() => {
502
- setIsLogoHovered(true);
503
- }, 300);
504
- },
505
- onMouseLeave: () => {
506
- if (hoverTimeoutRef.current) {
507
- clearTimeout(hoverTimeoutRef.current);
508
- hoverTimeoutRef.current = null;
509
- }
510
- setIsLogoHovered(false);
511
- },
512
- className: "gf-h-8 gf-w-8 gf-cursor-pointer gf-duration-500 gf-ease-in-out",
513
- onClick: (e) => e.preventDefault()
514
- }
515
- ),
516
- /* @__PURE__ */ jsxs("div", { className: "gf-flex gf-items-center gf-gap-4", children: [
517
- /* @__PURE__ */ jsx(
518
- XIcon,
519
- {
520
- onClick: () => {
521
- if (isClient) {
522
- window.open(SOCIAL_LINKS.x, "_blank");
523
- }
524
- },
525
- className: "gf-cursor-pointer gf-duration-500 gf-ease-in-out"
526
- }
527
- ),
528
- /* @__PURE__ */ jsx(
529
- DiscordIcon,
530
- {
531
- onClick: () => {
532
- if (isClient) {
533
- window.open(SOCIAL_LINKS.discord, "_blank");
534
- }
535
- },
536
- className: "gf-cursor-pointer gf-duration-500 gf-ease-in-out"
537
- }
538
- )
539
- ] })
540
- ] }),
541
- /* @__PURE__ */ jsxs("div", { className: "gf-flex gf-w-full gf-max-w-screen-2xl gf-flex-col-reverse gf-items-start gf-justify-between gf-gap-6 md:gf-flex-row", children: [
542
- /* @__PURE__ */ jsxs("div", { className: "gf-flex gf-w-full gf-flex-col sm:gf-flex-row gf-gap-6 gf-items-start gf-justify-between sm:gf-gap-3 md:gf-w-fit", children: [
543
- /* @__PURE__ */ jsx("div", { className: "gf-w-full md:gf-hidden", children: /* @__PURE__ */ jsx(
544
- FooterLinks,
545
- {
546
- title: "Resources",
547
- links: Resources,
548
- className: "gf-flex gf-w-full gf-flex-col gf-gap-3",
549
- listClassName: "gf-flex gf-flex-col gf-gap-2"
550
- }
551
- ) }),
552
- /* @__PURE__ */ jsx("div", { className: "gf-flex gf-w-full gf-max-w-[400px] gf-flex-col gf-gap-3 md:gf-w-fit", children: /* @__PURE__ */ jsx(
553
- FooterLinks,
554
- {
555
- title: "Routes",
556
- links: Routes,
557
- hoveredIndex: hoveredRouteIndex,
558
- onHover: setHoveredRouteIndex,
559
- className: "gf-flex gf-w-full gf-max-w-[400px] gf-flex-col gf-gap-3 md:gf-w-fit",
560
- listClassName: "gf-grid gf-w-full gf-grid-cols-1 gf-gap-1 gf-gap-x-8 md:gf-grid-cols-2 md:gf-grid-rows-2",
561
- isRoutes: true
562
- }
563
- ) })
564
- ] }),
565
- /* @__PURE__ */ jsxs("div", { className: "gf-flex gf-w-full gf-items-start gf-justify-between gf-gap-3 md:gf-w-fit md:gf-gap-16", children: [
566
- /* @__PURE__ */ jsx(
567
- FooterLinks,
568
- {
569
- title: "Products",
570
- links: Products,
571
- className: "gf-flex gf-w-full gf-flex-col gf-gap-3 md:gf-w-fit",
572
- listClassName: "gf-flex gf-w-fit gf-flex-col gf-gap-1 gf-gap-x-6"
573
- }
574
- ),
575
- /* @__PURE__ */ jsx(
576
- FooterLinks,
577
- {
578
- title: "Developers",
579
- links: Developers,
580
- className: "gf-flex gf-w-full gf-flex-col gf-gap-3 md:gf-w-fit",
581
- listClassName: "gf-flex gf-flex-col gf-gap-1"
582
- }
583
- ),
584
- /* @__PURE__ */ jsx("div", { className: "gf-hidden md:gf-flex", children: /* @__PURE__ */ jsx(
585
- FooterLinks,
586
- {
587
- title: "Resources",
588
- links: Resources,
589
- className: "gf-flex gf-w-full gf-flex-col gf-gap-3",
590
- listClassName: "gf-flex gf-flex-col gf-gap-1"
591
- }
592
- ) })
593
- ] })
594
- ] })
595
- ] }),
596
- /* @__PURE__ */ jsxs("div", { className: "gf-relative gf-mt-6 gf-flex gf-w-full gf-max-w-screen-2xl gf-items-center gf-justify-center", children: [
597
- /* @__PURE__ */ jsx(
598
- "div",
599
- {
600
- className: `gf-absolute gf-left-0 gf-top-0 gf-h-[1px] gf-w-full gf-transition-all gf-duration-500 gf-ease-in-out ${isLogoHovered ? "gf-bg-white" : "gf-bg-dark-grey"}`
601
- }
602
- ),
603
- /* @__PURE__ */ jsxs("div", { className: "gf-z-10 gf-my-6 gf-flex gf-w-full gf-items-center gf-justify-between gf-gap-4", children: [
604
- /* @__PURE__ */ jsx("div", { className: "gf-flex gf-w-fit gf-items-center gf-justify-start gf-gap-6", children: /* @__PURE__ */ jsxs(
605
- Typography,
606
- {
607
- size: "h5",
608
- className: "gf-flex gf-items-center gf-gap-1 gf-transition-all gf-duration-500 gf-ease-in-out gf-text-inherit",
609
- weight: "regular",
610
- children: [
611
- /* @__PURE__ */ jsx(CopyrightsIcon, {}),
612
- /* @__PURE__ */ jsx("span", { children: "Garden" }),
613
- /* @__PURE__ */ jsx("span", { children: "2025" })
614
- ]
615
- }
616
- ) }),
617
- /* @__PURE__ */ jsxs("div", { className: "gf-flex gf-w-fit gf-items-center gf-justify-end gf-gap-6", children: [
618
- /* @__PURE__ */ jsx(
619
- Typography,
620
- {
621
- size: "h5",
622
- as: "a",
623
- className: "gf-cursor-pointer gf-underline-offset-2 gf-transition-all gf-duration-500 gf-ease-in-out gf-hover:underline gf-text-inherit",
624
- weight: "regular",
625
- href: "/privacy.pdf",
626
- target: "_blank",
627
- children: "Privacy Policy"
628
- }
629
- ),
630
- /* @__PURE__ */ jsx(
631
- Typography,
632
- {
633
- as: "a",
634
- size: "h5",
635
- className: "gf-cursor-pointer gf-underline-offset-2 gf-transition-all gf-duration-500 gf-ease-in-out gf-hover:underline gf-text-inherit",
636
- weight: "regular",
637
- href: "/terms.pdf",
638
- target: "_blank",
639
- children: "Terms of Service"
640
- }
641
- )
642
- ] })
643
- ] })
644
- ] })
645
- ] }),
646
- /* @__PURE__ */ jsx(
647
- FooterBackgroundAnimation,
648
- {
649
- isMobile: false,
650
- isLogoHovered,
651
- maskUrl
652
- }
653
- )
654
- ]
655
- }
656
- );
657
- };
658
- export {
659
- Footer
660
- };
661
- //# sourceMappingURL=Footer.js.map