rujira.ui 0.1.0
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.
- package/.eslintrc.cjs +21 -0
- package/.tool-versions +1 -0
- package/i18n/.github/workflows/validate.yml +13 -0
- package/i18n/README.md +7 -0
- package/i18n/translations/template.json +448 -0
- package/i18n/update-template.js +19 -0
- package/i18n/validate.js +10 -0
- package/lib/esm/i18n/translations/template.json +448 -0
- package/lib/esm/src/components/buttons/Button.js +37 -0
- package/lib/esm/src/components/buttons/Popout.js +56 -0
- package/lib/esm/src/components/buttons/TxButton.js +42 -0
- package/lib/esm/src/components/buttons/__Popout.js +34 -0
- package/lib/esm/src/components/cards/Card.js +8 -0
- package/lib/esm/src/components/cards/GradientCard.js +8 -0
- package/lib/esm/src/components/footer/Footer.js +11 -0
- package/lib/esm/src/components/header/Accounts.js +211 -0
- package/lib/esm/src/components/header/Header.js +69 -0
- package/lib/esm/src/components/header/QuickLauncher.js +10 -0
- package/lib/esm/src/components/header/ResolveLink.js +13 -0
- package/lib/esm/src/components/icons/IconDenom.js +358 -0
- package/lib/esm/src/components/icons/Icons.js +228 -0
- package/lib/esm/src/components/icons/Networks.js +32 -0
- package/lib/esm/src/components/icons/Wallets.js +62 -0
- package/lib/esm/src/components/inputs/Checkbox.js +12 -0
- package/lib/esm/src/components/inputs/DecimalInput.js +35 -0
- package/lib/esm/src/components/inputs/DenomInput.js +22 -0
- package/lib/esm/src/components/inputs/DenomSelect.js +66 -0
- package/lib/esm/src/components/inputs/Input.js +25 -0
- package/lib/esm/src/components/inputs/Numeric.js +18 -0
- package/lib/esm/src/components/inputs/Radio.js +12 -0
- package/lib/esm/src/components/inputs/Select.js +29 -0
- package/lib/esm/src/components/inputs/Textarea.js +25 -0
- package/lib/esm/src/components/inputs/Toggle.js +13 -0
- package/lib/esm/src/components/loader/Loader.js +3 -0
- package/lib/esm/src/components/logos/RujiraLogo.js +2 -0
- package/lib/esm/src/components/notices/Warning.js +10 -0
- package/lib/esm/src/components/numbers/Decimal.js +14 -0
- package/lib/esm/src/components/numbers/Fiat.js +19 -0
- package/lib/esm/src/components/progress/Progress.js +9 -0
- package/lib/esm/src/components/slider/Slider.js +5 -0
- package/lib/esm/src/context/Affiliate.js +34 -0
- package/lib/esm/src/context/GlobalModal.js +35 -0
- package/lib/esm/src/d.js +1 -0
- package/lib/esm/src/helpers/index.js +65 -0
- package/lib/esm/src/helpers/number.js +8 -0
- package/lib/esm/src/hooks/useClickOutside.js +19 -0
- package/lib/esm/src/hooks/useLocalStorage.js +12 -0
- package/lib/esm/src/hooks/useQueryParam.js +31 -0
- package/lib/esm/src/hooks/useWindowSize.js +19 -0
- package/lib/esm/src/i18n/i18n.js +90 -0
- package/lib/esm/src/i18n/index.js +1 -0
- package/lib/esm/src/index.js +38 -0
- package/lib/esm/src/services/account.js +42 -0
- package/lib/esm/tsconfig.tsbuildinfo +1 -0
- package/package.json +47 -0
- package/src/assets/ghost-tokens/akt.png +0 -0
- package/src/assets/ghost-tokens/ampkuji.png +0 -0
- package/src/assets/ghost-tokens/arb.png +0 -0
- package/src/assets/ghost-tokens/atom.png +0 -0
- package/src/assets/ghost-tokens/axlusdc.png +0 -0
- package/src/assets/ghost-tokens/cro.png +0 -0
- package/src/assets/ghost-tokens/dot.png +0 -0
- package/src/assets/ghost-tokens/fet.png +0 -0
- package/src/assets/ghost-tokens/fuzn.png +0 -0
- package/src/assets/ghost-tokens/glmr.png +0 -0
- package/src/assets/ghost-tokens/gpaxg.png +0 -0
- package/src/assets/ghost-tokens/inj.png +0 -0
- package/src/assets/ghost-tokens/juno.png +0 -0
- package/src/assets/ghost-tokens/kuji.png +0 -0
- package/src/assets/ghost-tokens/luna.png +0 -0
- package/src/assets/ghost-tokens/lunc.png +0 -0
- package/src/assets/ghost-tokens/mnta.png +0 -0
- package/src/assets/ghost-tokens/ntrn.png +0 -0
- package/src/assets/ghost-tokens/osmo.png +0 -0
- package/src/assets/ghost-tokens/scrt.png +0 -0
- package/src/assets/ghost-tokens/shd.png +0 -0
- package/src/assets/ghost-tokens/sol.png +0 -0
- package/src/assets/ghost-tokens/stars.png +0 -0
- package/src/assets/ghost-tokens/statom.png +0 -0
- package/src/assets/ghost-tokens/stosmo.png +0 -0
- package/src/assets/ghost-tokens/usdc.png +0 -0
- package/src/assets/ghost-tokens/usk.png +0 -0
- package/src/assets/ghost-tokens/wavax.png +0 -0
- package/src/assets/ghost-tokens/wbnb.png +0 -0
- package/src/assets/ghost-tokens/wbtc.png +0 -0
- package/src/assets/ghost-tokens/weth.png +0 -0
- package/src/assets/ghost-tokens/wftm.png +0 -0
- package/src/assets/ghost-tokens/wglmr.png +0 -0
- package/src/assets/ghost-tokens/wmatic.png +0 -0
- package/src/assets/mono.woff +0 -0
- package/src/assets/tokens/acre.png +0 -0
- package/src/assets/tokens/akt.png +0 -0
- package/src/assets/tokens/amber.png +0 -0
- package/src/assets/tokens/ampkuji.png +0 -0
- package/src/assets/tokens/ampluna.png +0 -0
- package/src/assets/tokens/ampmnta.png +0 -0
- package/src/assets/tokens/ampwhale.png +0 -0
- package/src/assets/tokens/andr.png +0 -0
- package/src/assets/tokens/aqla.png +0 -0
- package/src/assets/tokens/aqua.png +0 -0
- package/src/assets/tokens/arb.png +0 -0
- package/src/assets/tokens/arch.png +0 -0
- package/src/assets/tokens/astro.png +0 -0
- package/src/assets/tokens/atom.png +0 -0
- package/src/assets/tokens/auto.png +0 -0
- package/src/assets/tokens/avax.png +0 -0
- package/src/assets/tokens/axl.png +0 -0
- package/src/assets/tokens/axlusdc.png +0 -0
- package/src/assets/tokens/axlusdt.png +0 -0
- package/src/assets/tokens/bad.png +0 -0
- package/src/assets/tokens/bch.png +0 -0
- package/src/assets/tokens/bfit.png +0 -0
- package/src/assets/tokens/bnb.png +0 -0
- package/src/assets/tokens/btc.png +0 -0
- package/src/assets/tokens/cheq.png +0 -0
- package/src/assets/tokens/cmdx.png +0 -0
- package/src/assets/tokens/cmst.png +0 -0
- package/src/assets/tokens/cnto.png +0 -0
- package/src/assets/tokens/core.png +0 -0
- package/src/assets/tokens/crbrus.png +0 -0
- package/src/assets/tokens/cre.png +0 -0
- package/src/assets/tokens/cro.png +0 -0
- package/src/assets/tokens/cub.png +0 -0
- package/src/assets/tokens/dai.png +0 -0
- package/src/assets/tokens/default.png +0 -0
- package/src/assets/tokens/doge.png +0 -0
- package/src/assets/tokens/dot.png +0 -0
- package/src/assets/tokens/dvpn.png +0 -0
- package/src/assets/tokens/dydx.png +0 -0
- package/src/assets/tokens/dym.png +0 -0
- package/src/assets/tokens/eth.png +0 -0
- package/src/assets/tokens/evmos.png +0 -0
- package/src/assets/tokens/flix.png +0 -0
- package/src/assets/tokens/frnz.png +0 -0
- package/src/assets/tokens/fury.legacy.png +0 -0
- package/src/assets/tokens/fury.png +0 -0
- package/src/assets/tokens/fuzn.png +0 -0
- package/src/assets/tokens/glmr.png +0 -0
- package/src/assets/tokens/glto.png +0 -0
- package/src/assets/tokens/gpaxg.png +0 -0
- package/src/assets/tokens/grav.png +0 -0
- package/src/assets/tokens/inj.png +0 -0
- package/src/assets/tokens/jkl.png +0 -0
- package/src/assets/tokens/juno.png +0 -0
- package/src/assets/tokens/kart.png +0 -0
- package/src/assets/tokens/kuji.png +0 -0
- package/src/assets/tokens/kune.png +0 -0
- package/src/assets/tokens/link.png +0 -0
- package/src/assets/tokens/loop.png +0 -0
- package/src/assets/tokens/ltc.png +0 -0
- package/src/assets/tokens/luna.png +0 -0
- package/src/assets/tokens/lunc.png +0 -0
- package/src/assets/tokens/lvn.png +0 -0
- package/src/assets/tokens/mars.png +0 -0
- package/src/assets/tokens/mnta.png +0 -0
- package/src/assets/tokens/mntl.png +0 -0
- package/src/assets/tokens/nami.png +0 -0
- package/src/assets/tokens/nausd.png +0 -0
- package/src/assets/tokens/nbtc.png +0 -0
- package/src/assets/tokens/neok.png +0 -0
- package/src/assets/tokens/newt.png +0 -0
- package/src/assets/tokens/nstk.png +0 -0
- package/src/assets/tokens/ntrn.png +0 -0
- package/src/assets/tokens/odin.png +0 -0
- package/src/assets/tokens/osmo.png +0 -0
- package/src/assets/tokens/pepe.png +0 -0
- package/src/assets/tokens/plnk.png +0 -0
- package/src/assets/tokens/plq.png +0 -0
- package/src/assets/tokens/qcaqla.png +0 -0
- package/src/assets/tokens/qcatom.png +0 -0
- package/src/assets/tokens/qcfuzn.png +0 -0
- package/src/assets/tokens/qckuji.png +0 -0
- package/src/assets/tokens/qcmnta.png +0 -0
- package/src/assets/tokens/rac.legacy.png +0 -0
- package/src/assets/tokens/rac.png +0 -0
- package/src/assets/tokens/ratom.png +0 -0
- package/src/assets/tokens/regen.png +0 -0
- package/src/assets/tokens/rfuzn.png +0 -0
- package/src/assets/tokens/rio.png +0 -0
- package/src/assets/tokens/rkuji.png +0 -0
- package/src/assets/tokens/roar.png +0 -0
- package/src/assets/tokens/ruji.png +0 -0
- package/src/assets/tokens/rune.png +0 -0
- package/src/assets/tokens/sayve.png +0 -0
- package/src/assets/tokens/scrt.png +0 -0
- package/src/assets/tokens/shd.legacy.png +0 -0
- package/src/assets/tokens/shd.png +0 -0
- package/src/assets/tokens/silk.png +0 -0
- package/src/assets/tokens/sol.png +0 -0
- package/src/assets/tokens/somm.png +0 -0
- package/src/assets/tokens/stars.png +0 -0
- package/src/assets/tokens/statom.png +0 -0
- package/src/assets/tokens/stinj.png +0 -0
- package/src/assets/tokens/stluna.png +0 -0
- package/src/assets/tokens/stosmo.png +0 -0
- package/src/assets/tokens/strd.png +0 -0
- package/src/assets/tokens/swth.png +0 -0
- package/src/assets/tokens/tia.png +0 -0
- package/src/assets/tokens/tori.png +0 -0
- package/src/assets/tokens/umee.png +0 -0
- package/src/assets/tokens/uni.png +0 -0
- package/src/assets/tokens/usdc.png +0 -0
- package/src/assets/tokens/usk.png +0 -0
- package/src/assets/tokens/usk_black.png +0 -0
- package/src/assets/tokens/ustc.png +0 -0
- package/src/assets/tokens/wavax.png +0 -0
- package/src/assets/tokens/wbtc.png +0 -0
- package/src/assets/tokens/wftm.png +0 -0
- package/src/assets/tokens/whale.png +0 -0
- package/src/assets/tokens/whlocal.png +0 -0
- package/src/assets/tokens/wink.png +0 -0
- package/src/assets/tokens/wmatic.png +0 -0
- package/src/assets/tokens/wsteth.png +0 -0
- package/src/assets/tokens/wtao.png +0 -0
- package/src/assets/tokens/xastro.png +0 -0
- package/src/assets/tokens/yieldeth.png +0 -0
- package/src/assets/tokens/yum.png +0 -0
- package/src/components/buttons/Button.tsx +80 -0
- package/src/components/buttons/Popout.tsx +74 -0
- package/src/components/buttons/TxButton.tsx +103 -0
- package/src/components/buttons/__Popout.tsx +56 -0
- package/src/components/cards/Card.tsx +17 -0
- package/src/components/cards/GradientCard.tsx +17 -0
- package/src/components/footer/Footer.tsx +117 -0
- package/src/components/header/Accounts.tsx +1021 -0
- package/src/components/header/Header.tsx +745 -0
- package/src/components/header/QuickLauncher.tsx +67 -0
- package/src/components/header/ResolveLink.tsx +81 -0
- package/src/components/icons/IconDenom.tsx +400 -0
- package/src/components/icons/Icons.tsx +686 -0
- package/src/components/icons/Networks.tsx +687 -0
- package/src/components/icons/Wallets.tsx +947 -0
- package/src/components/inputs/Checkbox.tsx +35 -0
- package/src/components/inputs/DecimalInput.tsx +72 -0
- package/src/components/inputs/DenomInput.tsx +65 -0
- package/src/components/inputs/DenomSelect.tsx +178 -0
- package/src/components/inputs/Input.tsx +66 -0
- package/src/components/inputs/Numeric.tsx +49 -0
- package/src/components/inputs/Radio.tsx +33 -0
- package/src/components/inputs/Select.tsx +69 -0
- package/src/components/inputs/Textarea.tsx +65 -0
- package/src/components/inputs/Toggle.tsx +38 -0
- package/src/components/loader/Loader.tsx +103 -0
- package/src/components/logos/RujiraLogo.tsx +83 -0
- package/src/components/notices/Warning.tsx +42 -0
- package/src/components/numbers/Decimal.tsx +43 -0
- package/src/components/numbers/Fiat.tsx +56 -0
- package/src/components/progress/Progress.tsx +40 -0
- package/src/components/slider/Slider.tsx +12 -0
- package/src/context/Affiliate.tsx +65 -0
- package/src/context/GlobalModal.tsx +115 -0
- package/src/d.ts +4 -0
- package/src/helpers/index.ts +73 -0
- package/src/helpers/number.ts +12 -0
- package/src/hooks/useClickOutside.ts +27 -0
- package/src/hooks/useLocalStorage.ts +20 -0
- package/src/hooks/useQueryParam.ts +46 -0
- package/src/hooks/useWindowSize.ts +26 -0
- package/src/i18n/i18n.tsx +102 -0
- package/src/i18n/index.ts +1 -0
- package/src/index.ts +54 -0
- package/src/scss/base/_colors.scss +23 -0
- package/src/scss/base/_display.scss +85 -0
- package/src/scss/base/_filters.scss +20 -0
- package/src/scss/base/_flex.scss +612 -0
- package/src/scss/base/_important.scss +3 -0
- package/src/scss/base/_normalize.scss +351 -0
- package/src/scss/base/_spacing.scss +290 -0
- package/src/scss/base/_tooltip.scss +9 -0
- package/src/scss/base/_typography.scss +279 -0
- package/src/scss/base/_variables.scss +72 -0
- package/src/scss/components/_button-group.scss +61 -0
- package/src/scss/components/_button.scss +459 -0
- package/src/scss/components/_decimal.scss +40 -0
- package/src/scss/components/_denom-select.scss +270 -0
- package/src/scss/components/_fiat.scss +34 -0
- package/src/scss/components/_footer.scss +27 -0
- package/src/scss/components/_header.scss +665 -0
- package/src/scss/components/_input.scss +82 -0
- package/src/scss/components/_loader.scss +20 -0
- package/src/scss/components/_modal.scss +138 -0
- package/src/scss/components/_numeric-input.scss +98 -0
- package/src/scss/components/_popout.scss +63 -0
- package/src/scss/components/_progress.scss +62 -0
- package/src/scss/components/_radio-checkbox.scss +79 -0
- package/src/scss/components/_select.scss +106 -0
- package/src/scss/components/_slider.scss +34 -0
- package/src/scss/components/_toggle.scss +120 -0
- package/src/scss/components/_warning.scss +65 -0
- package/src/scss/index.scss +37 -0
- package/src/scss/styledcomponents/_card.scss +130 -0
- package/src/scss/styledcomponents/_drawer.scss +36 -0
- package/src/scss/styledcomponents/_general.scss +20 -0
- package/src/scss/styledcomponents/_table.scss +302 -0
- package/src/scss/styledcomponents/_tabs.scss +97 -0
- package/src/scss/styledcomponents/_tag.scss +155 -0
- package/src/scss/unsorted/_general.scss +259 -0
- package/src/services/account.ts +53 -0
- package/tsconfig.json +25 -0
- package/tsconfig.node.json +11 -0
- package/vite.config.ts +7 -0
- package/vitest-setup.js +1 -0
- package/vitest.config.js +13 -0
|
@@ -0,0 +1,745 @@
|
|
|
1
|
+
import clsx from "clsx";
|
|
2
|
+
import { AnimatePresence, motion } from "motion/react";
|
|
3
|
+
import { FC, PropsWithChildren, useEffect, useState } from "react";
|
|
4
|
+
import { AccountProvider } from "rujira.js";
|
|
5
|
+
import { useWindowSize } from "../../hooks/useWindowSize";
|
|
6
|
+
import { i18n } from "../../i18n";
|
|
7
|
+
import {
|
|
8
|
+
AngleDown,
|
|
9
|
+
Book,
|
|
10
|
+
Building,
|
|
11
|
+
Chart,
|
|
12
|
+
ChartUp,
|
|
13
|
+
ChartUpDown,
|
|
14
|
+
Earth,
|
|
15
|
+
External,
|
|
16
|
+
Gavel,
|
|
17
|
+
MoneyTransfer,
|
|
18
|
+
NFT,
|
|
19
|
+
PieChart,
|
|
20
|
+
Seedling,
|
|
21
|
+
Stake,
|
|
22
|
+
Swap,
|
|
23
|
+
Terminal,
|
|
24
|
+
} from "../icons/Icons";
|
|
25
|
+
import { RujiraLogo } from "../logos/RujiraLogo";
|
|
26
|
+
import { Accounts } from "./Accounts";
|
|
27
|
+
import { QuickLauncher } from "./QuickLauncher";
|
|
28
|
+
import { ResolveLink } from "./ResolveLink";
|
|
29
|
+
|
|
30
|
+
export * from "./Accounts";
|
|
31
|
+
export * from "./QuickLauncher";
|
|
32
|
+
|
|
33
|
+
type HeaderProps = {
|
|
34
|
+
accountProvider: AccountProvider;
|
|
35
|
+
showAccount?: boolean;
|
|
36
|
+
className?: string;
|
|
37
|
+
domain?: string;
|
|
38
|
+
routingElement: any;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export const Header: React.FC<HeaderProps> = ({
|
|
42
|
+
accountProvider,
|
|
43
|
+
className,
|
|
44
|
+
domain = "",
|
|
45
|
+
routingElement,
|
|
46
|
+
}) => {
|
|
47
|
+
return (
|
|
48
|
+
<Container className={className}>
|
|
49
|
+
<ResolveLink as={routingElement} to="/">
|
|
50
|
+
<Logo />
|
|
51
|
+
</ResolveLink>
|
|
52
|
+
<MobileNav domain={domain} routingElement={routingElement} />
|
|
53
|
+
<MainNav
|
|
54
|
+
domain={domain}
|
|
55
|
+
accountProvider={accountProvider}
|
|
56
|
+
routingElement={routingElement}
|
|
57
|
+
/>
|
|
58
|
+
<div className="ml-a mr-0 flex ai-c">
|
|
59
|
+
<QuickLauncher domain={domain || ""} routingElement={routingElement} />
|
|
60
|
+
<Accounts provider={accountProvider} routingElement={routingElement} />
|
|
61
|
+
</div>
|
|
62
|
+
</Container>
|
|
63
|
+
);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export const Container: React.FC<PropsWithChildren<{ className?: string }>> = ({
|
|
67
|
+
children,
|
|
68
|
+
className,
|
|
69
|
+
}) => {
|
|
70
|
+
return (
|
|
71
|
+
<div
|
|
72
|
+
className={clsx({
|
|
73
|
+
"rujira-header": true,
|
|
74
|
+
[`${className}`]: className,
|
|
75
|
+
})}>
|
|
76
|
+
{children}
|
|
77
|
+
</div>
|
|
78
|
+
);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const Logo = () => {
|
|
82
|
+
const size = useWindowSize();
|
|
83
|
+
return (
|
|
84
|
+
<RujiraLogo
|
|
85
|
+
textColor="#fff"
|
|
86
|
+
className="rujira-header__logo"
|
|
87
|
+
showText={size.width >= 1024}
|
|
88
|
+
animate={true}
|
|
89
|
+
/>
|
|
90
|
+
);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export const MainNav: FC<{
|
|
94
|
+
domain: string;
|
|
95
|
+
accountProvider: AccountProvider;
|
|
96
|
+
routingElement: any;
|
|
97
|
+
}> = ({ domain, accountProvider, routingElement }) => {
|
|
98
|
+
const { accounts } = accountProvider;
|
|
99
|
+
const [showTrade, setShowTrade] = useState(false);
|
|
100
|
+
const [showEarn, setShowEarn] = useState(false);
|
|
101
|
+
const [showMore, setShowMore] = useState(false);
|
|
102
|
+
const [showDiscover, setShowDiscover] = useState(false);
|
|
103
|
+
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
if (showTrade || showMore || showDiscover || showEarn) {
|
|
106
|
+
const popup = document.querySelector<HTMLElement>(
|
|
107
|
+
".rujira-header__popup"
|
|
108
|
+
);
|
|
109
|
+
if (popup) {
|
|
110
|
+
const box = popup.getBoundingClientRect();
|
|
111
|
+
const body = document.body;
|
|
112
|
+
const docEl = document.documentElement;
|
|
113
|
+
const scrollLeft =
|
|
114
|
+
window.scrollX || docEl.scrollLeft || body.scrollLeft;
|
|
115
|
+
const clientLeft = docEl.clientLeft || body.clientLeft || 0;
|
|
116
|
+
const left = box.left + scrollLeft - clientLeft;
|
|
117
|
+
if (left + box.width > window.innerWidth - 20) {
|
|
118
|
+
const diff = Math.round(left + box.width - window.innerWidth + 20);
|
|
119
|
+
popup.style.transform = "translateX(-" + diff + "px)";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}, [showTrade, showMore, showDiscover, showEarn]);
|
|
124
|
+
|
|
125
|
+
return (
|
|
126
|
+
<nav className="rujira-header__nav">
|
|
127
|
+
{accounts.length > 0 && (
|
|
128
|
+
<ResolveLink as={routingElement} domain={domain} to="/portfolio">
|
|
129
|
+
{i18n.t("Portfolio")}
|
|
130
|
+
</ResolveLink>
|
|
131
|
+
)}
|
|
132
|
+
<span
|
|
133
|
+
onMouseOver={() => setShowTrade(true)}
|
|
134
|
+
onMouseOut={() => setShowTrade(false)}>
|
|
135
|
+
{i18n.t("Trade")}
|
|
136
|
+
<AngleDown />
|
|
137
|
+
<AnimatePresence>
|
|
138
|
+
{showTrade && (
|
|
139
|
+
<SubTrade domain={domain} routingElement={routingElement} />
|
|
140
|
+
)}
|
|
141
|
+
</AnimatePresence>
|
|
142
|
+
</span>
|
|
143
|
+
<span
|
|
144
|
+
onMouseOver={() => setShowEarn(true)}
|
|
145
|
+
onMouseOut={() => setShowEarn(false)}>
|
|
146
|
+
{i18n.t("Earn")}
|
|
147
|
+
<AngleDown />
|
|
148
|
+
<AnimatePresence>
|
|
149
|
+
{showEarn && (
|
|
150
|
+
<SubEarn domain={domain} routingElement={routingElement} />
|
|
151
|
+
)}
|
|
152
|
+
</AnimatePresence>
|
|
153
|
+
</span>
|
|
154
|
+
<span
|
|
155
|
+
onMouseOver={() => setShowMore(true)}
|
|
156
|
+
onMouseOut={() => setShowMore(false)}>
|
|
157
|
+
{i18n.t("Market")}
|
|
158
|
+
<AngleDown />
|
|
159
|
+
<AnimatePresence>
|
|
160
|
+
{showMore && (
|
|
161
|
+
<SubMore domain={domain} routingElement={routingElement} />
|
|
162
|
+
)}
|
|
163
|
+
</AnimatePresence>
|
|
164
|
+
</span>
|
|
165
|
+
<span
|
|
166
|
+
onMouseOver={() => setShowDiscover(true)}
|
|
167
|
+
onMouseOut={() => setShowDiscover(false)}>
|
|
168
|
+
{i18n.t("Discover")}
|
|
169
|
+
<AngleDown />
|
|
170
|
+
<AnimatePresence>
|
|
171
|
+
{showDiscover && (
|
|
172
|
+
<SubDiscover domain={domain} routingElement={routingElement} />
|
|
173
|
+
)}
|
|
174
|
+
</AnimatePresence>
|
|
175
|
+
</span>
|
|
176
|
+
</nav>
|
|
177
|
+
);
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
export const MobileNav = ({
|
|
181
|
+
domain,
|
|
182
|
+
routingElement,
|
|
183
|
+
}: {
|
|
184
|
+
domain: string;
|
|
185
|
+
routingElement: any;
|
|
186
|
+
}) => {
|
|
187
|
+
const [showMobile, setShowMobile] = useState(false);
|
|
188
|
+
|
|
189
|
+
useEffect(() => {
|
|
190
|
+
if (showMobile) {
|
|
191
|
+
document.body.style.overflow = "hidden";
|
|
192
|
+
} else {
|
|
193
|
+
document.body.style.overflow = "auto";
|
|
194
|
+
}
|
|
195
|
+
}, [showMobile]);
|
|
196
|
+
|
|
197
|
+
return (
|
|
198
|
+
<>
|
|
199
|
+
<button
|
|
200
|
+
className="rujira-header__hamburger"
|
|
201
|
+
onClick={() => setShowMobile(true)}>
|
|
202
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
|
|
203
|
+
<path
|
|
204
|
+
d="M0 64H448v48H0V64zM0 224H448v48H0V224zM448 384v48H0V384H448z"
|
|
205
|
+
fill="currentColor"
|
|
206
|
+
/>
|
|
207
|
+
</svg>
|
|
208
|
+
</button>
|
|
209
|
+
<AnimatePresence>
|
|
210
|
+
{showMobile && (
|
|
211
|
+
<motion.nav
|
|
212
|
+
className="rujira-header__mobile-nav"
|
|
213
|
+
initial={{ opacity: 0 }}
|
|
214
|
+
animate={{ opacity: 1 }}
|
|
215
|
+
exit={{ opacity: 0 }}>
|
|
216
|
+
<button
|
|
217
|
+
className="rujira-header__mobile-close"
|
|
218
|
+
onClick={() => setShowMobile(false)}>
|
|
219
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512">
|
|
220
|
+
<path
|
|
221
|
+
fill="currentColor"
|
|
222
|
+
d="M345 137l17-17L328 86.1l-17 17-119 119L73 103l-17-17L22.1 120l17 17 119 119L39 375l-17 17L56 425.9l17-17 119-119L311 409l17 17L361.9 392l-17-17-119-119L345 137z"
|
|
223
|
+
/>
|
|
224
|
+
</svg>
|
|
225
|
+
</button>
|
|
226
|
+
<MobileMenu
|
|
227
|
+
domain={domain}
|
|
228
|
+
routingElement={routingElement}
|
|
229
|
+
setShowMobile={setShowMobile}
|
|
230
|
+
/>
|
|
231
|
+
</motion.nav>
|
|
232
|
+
)}
|
|
233
|
+
</AnimatePresence>
|
|
234
|
+
</>
|
|
235
|
+
);
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
const Popup = ({ children }: { children: React.ReactNode }) => (
|
|
239
|
+
<motion.div
|
|
240
|
+
className="rujira-header__popup sub-nav fw-400 p-2"
|
|
241
|
+
initial={{ opacity: 0, marginTop: -4 }}
|
|
242
|
+
animate={{ opacity: 1, marginTop: 0 }}
|
|
243
|
+
exit={{ opacity: 0, marginTop: -4 }}>
|
|
244
|
+
{children}
|
|
245
|
+
</motion.div>
|
|
246
|
+
);
|
|
247
|
+
|
|
248
|
+
type SubProps = {
|
|
249
|
+
domain?: string;
|
|
250
|
+
routingElement: any;
|
|
251
|
+
setShowMobile?: (e: any) => void;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
const SubTrade = ({ domain, routingElement }: SubProps) => (
|
|
255
|
+
<Popup>
|
|
256
|
+
<div className="row wrap pad w-60 mt-1">
|
|
257
|
+
{/* <ResolveLink
|
|
258
|
+
as={routingElement}
|
|
259
|
+
domain={domain}
|
|
260
|
+
to="/buy"
|
|
261
|
+
className="col-6 flex">
|
|
262
|
+
<ChartUp className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
263
|
+
<div>
|
|
264
|
+
<i18n.h4 className="fs-14 fw-600">Buy Crypto</i18n.h4>
|
|
265
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
266
|
+
Instantly buy crypto at the best available rate
|
|
267
|
+
</i18n.p>
|
|
268
|
+
</div>
|
|
269
|
+
</ResolveLink> */}
|
|
270
|
+
<ResolveLink
|
|
271
|
+
as={routingElement}
|
|
272
|
+
domain={domain}
|
|
273
|
+
to="/swap"
|
|
274
|
+
className="col-6 flex">
|
|
275
|
+
<Swap className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
276
|
+
<div>
|
|
277
|
+
<i18n.h4 className="fs-14 fw-600">Token Swap</i18n.h4>
|
|
278
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
279
|
+
Swap tokens at the best available rate
|
|
280
|
+
</i18n.p>
|
|
281
|
+
</div>
|
|
282
|
+
</ResolveLink>
|
|
283
|
+
<ResolveLink
|
|
284
|
+
as={routingElement}
|
|
285
|
+
domain={domain}
|
|
286
|
+
to="/trade"
|
|
287
|
+
className="col-6 flex">
|
|
288
|
+
<Chart className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
289
|
+
<div>
|
|
290
|
+
<i18n.h4 className="fs-14 fw-600">Spot Trading</i18n.h4>
|
|
291
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
292
|
+
Buy and sell on the spot market without slippage
|
|
293
|
+
</i18n.p>
|
|
294
|
+
</div>
|
|
295
|
+
</ResolveLink>
|
|
296
|
+
|
|
297
|
+
<ResolveLink
|
|
298
|
+
as={routingElement}
|
|
299
|
+
domain={domain}
|
|
300
|
+
to="/options"
|
|
301
|
+
className="col-6 flex mt-3">
|
|
302
|
+
<ChartUp className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
303
|
+
<div>
|
|
304
|
+
<i18n.h4 className="fs-14 fw-600">Options</i18n.h4>
|
|
305
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
306
|
+
Designed to simplify options trading
|
|
307
|
+
</i18n.p>
|
|
308
|
+
</div>
|
|
309
|
+
</ResolveLink>
|
|
310
|
+
|
|
311
|
+
<ResolveLink
|
|
312
|
+
as="a"
|
|
313
|
+
href="http://perps.rujira.network/perps"
|
|
314
|
+
target="_blank"
|
|
315
|
+
className="col-6 flex mt-3">
|
|
316
|
+
<ChartUpDown className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
317
|
+
<div>
|
|
318
|
+
<i18n.h4 className="fs-14 fw-600">Perps</i18n.h4>
|
|
319
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
320
|
+
Buy and sell perpetual futures contracts
|
|
321
|
+
</i18n.p>
|
|
322
|
+
</div>
|
|
323
|
+
</ResolveLink>
|
|
324
|
+
{/* <a
|
|
325
|
+
className="col-6 mt-3 flex ai-s"
|
|
326
|
+
href="https://github.com/funttastic"
|
|
327
|
+
target="_blank">
|
|
328
|
+
<Robot className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
329
|
+
<div>
|
|
330
|
+
<i18n.h4 className="fs-14 fw-600 flex ai-c">
|
|
331
|
+
Bots <IconExternal className="h-1 w-a ml-1" />
|
|
332
|
+
</i18n.h4>
|
|
333
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
334
|
+
Integrate with Hummingbot for advanced personal strategies
|
|
335
|
+
</i18n.p>
|
|
336
|
+
</div>
|
|
337
|
+
</a> */}
|
|
338
|
+
</div>
|
|
339
|
+
</Popup>
|
|
340
|
+
);
|
|
341
|
+
|
|
342
|
+
const SubEarn = ({ domain, routingElement }: SubProps) => (
|
|
343
|
+
<Popup>
|
|
344
|
+
<div className="row wrap pad w-60 mt-1">
|
|
345
|
+
<ResolveLink
|
|
346
|
+
as={routingElement}
|
|
347
|
+
domain={domain}
|
|
348
|
+
to="/stake"
|
|
349
|
+
className="col-6 flex ai-s">
|
|
350
|
+
<Stake className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
351
|
+
<div>
|
|
352
|
+
<i18n.h4 className="fs-14 fw-600">Stake</i18n.h4>
|
|
353
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
354
|
+
Earn a percentage of fees and secure the network
|
|
355
|
+
</i18n.p>
|
|
356
|
+
</div>
|
|
357
|
+
</ResolveLink>
|
|
358
|
+
<ResolveLink
|
|
359
|
+
as={routingElement}
|
|
360
|
+
domain={domain}
|
|
361
|
+
to="/provide"
|
|
362
|
+
className="col-6 flex ai-s">
|
|
363
|
+
<Building className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
364
|
+
<div>
|
|
365
|
+
<i18n.h4 className="fs-14 fw-600">Liquidity Pools</i18n.h4>
|
|
366
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
367
|
+
Multi-strategy automated market maker pools
|
|
368
|
+
</i18n.p>
|
|
369
|
+
</div>
|
|
370
|
+
</ResolveLink>
|
|
371
|
+
<ResolveLink
|
|
372
|
+
as={routingElement}
|
|
373
|
+
domain={domain}
|
|
374
|
+
to="/money-market"
|
|
375
|
+
className="col-6 flex mt-3 ai-s">
|
|
376
|
+
<MoneyTransfer className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
377
|
+
<div>
|
|
378
|
+
<i18n.h4 className="fs-14 fw-600">Lend & Borrow</i18n.h4>
|
|
379
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
380
|
+
Earn yield by lending your tokens to others
|
|
381
|
+
</i18n.p>
|
|
382
|
+
</div>
|
|
383
|
+
</ResolveLink>
|
|
384
|
+
<ResolveLink
|
|
385
|
+
as={routingElement}
|
|
386
|
+
domain={domain}
|
|
387
|
+
to="/liquidate"
|
|
388
|
+
className="col-6 flex mt-3">
|
|
389
|
+
<Gavel className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
390
|
+
<div>
|
|
391
|
+
<i18n.h4 className="fs-14 fw-600">Liquidate</i18n.h4>
|
|
392
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
393
|
+
Beat the bots and bid on liquidated collateral
|
|
394
|
+
</i18n.p>
|
|
395
|
+
</div>
|
|
396
|
+
</ResolveLink>
|
|
397
|
+
</div>
|
|
398
|
+
</Popup>
|
|
399
|
+
);
|
|
400
|
+
|
|
401
|
+
const SubMore = ({ domain, routingElement }: SubProps) => (
|
|
402
|
+
<Popup>
|
|
403
|
+
<div className="row wrap pad w-60 mt-1">
|
|
404
|
+
<ResolveLink
|
|
405
|
+
as={routingElement}
|
|
406
|
+
domain={domain}
|
|
407
|
+
to="/ventures"
|
|
408
|
+
className="col-6 flex ai-s">
|
|
409
|
+
<Seedling className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
410
|
+
<div>
|
|
411
|
+
<i18n.h4 className="fs-14 fw-600 flex ai-c">Ventures</i18n.h4>
|
|
412
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
413
|
+
Early access to promising protocols & opportunities
|
|
414
|
+
</i18n.p>
|
|
415
|
+
</div>
|
|
416
|
+
</ResolveLink>
|
|
417
|
+
{/* <ResolveLink
|
|
418
|
+
as={routingElement}
|
|
419
|
+
domain={domain}
|
|
420
|
+
to="/borrow"
|
|
421
|
+
className="col-6 flex ai-s">
|
|
422
|
+
<MoneyTransfer className="color-grey h-a w-3 block mr-2 no-shrink mt-0" />
|
|
423
|
+
<div>
|
|
424
|
+
<i18n.h4 className="fs-14 fw-600">Borrow</i18n.h4>
|
|
425
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
426
|
+
Borrow assets using your tokens as collateral
|
|
427
|
+
</i18n.p>
|
|
428
|
+
</div>
|
|
429
|
+
</ResolveLink> */}
|
|
430
|
+
<ResolveLink
|
|
431
|
+
as={routingElement}
|
|
432
|
+
domain={domain}
|
|
433
|
+
to="/nfts"
|
|
434
|
+
className="col-6 flex ai-s">
|
|
435
|
+
<NFT className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
436
|
+
<div>
|
|
437
|
+
<i18n.h4 className="fs-14 fw-600 flex ai-c">
|
|
438
|
+
Collections (Gojira)
|
|
439
|
+
</i18n.h4>
|
|
440
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
441
|
+
A sustainable NFT marketplace
|
|
442
|
+
</i18n.p>
|
|
443
|
+
</div>
|
|
444
|
+
</ResolveLink>
|
|
445
|
+
</div>
|
|
446
|
+
</Popup>
|
|
447
|
+
);
|
|
448
|
+
|
|
449
|
+
const SubDiscover = ({ domain, routingElement }: SubProps) => (
|
|
450
|
+
<Popup>
|
|
451
|
+
<div className="row wrap pad w-60 mt-1">
|
|
452
|
+
<ResolveLink
|
|
453
|
+
as={routingElement}
|
|
454
|
+
domain={domain}
|
|
455
|
+
to="/ecosystem"
|
|
456
|
+
className="col-6 flex ai-s">
|
|
457
|
+
<Earth className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
458
|
+
<div>
|
|
459
|
+
<i18n.h4 className="fs-14 fw-600">Ecosystem</i18n.h4>
|
|
460
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
461
|
+
Protocols, products and services calling Rujira their home
|
|
462
|
+
</i18n.p>
|
|
463
|
+
</div>
|
|
464
|
+
</ResolveLink>
|
|
465
|
+
<ResolveLink
|
|
466
|
+
as={routingElement}
|
|
467
|
+
domain={domain}
|
|
468
|
+
to="/dashboard"
|
|
469
|
+
className="col-6 flex ai-s">
|
|
470
|
+
<PieChart className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
471
|
+
<div>
|
|
472
|
+
<i18n.h4 className="fs-14 fw-600">Token Analytics</i18n.h4>
|
|
473
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
474
|
+
Discover RUJI tokenomics and analytics
|
|
475
|
+
</i18n.p>
|
|
476
|
+
</div>
|
|
477
|
+
</ResolveLink>
|
|
478
|
+
<ResolveLink
|
|
479
|
+
as={routingElement}
|
|
480
|
+
domain={domain}
|
|
481
|
+
to="/developers"
|
|
482
|
+
className="col-6 flex mt-3">
|
|
483
|
+
<Terminal className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
484
|
+
<div>
|
|
485
|
+
<i18n.h4 className="fs-14 fw-600">Developers</i18n.h4>
|
|
486
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
487
|
+
Rujira is built for builders, get started here.
|
|
488
|
+
</i18n.p>
|
|
489
|
+
</div>
|
|
490
|
+
</ResolveLink>
|
|
491
|
+
<a
|
|
492
|
+
href="https://docs.rujira.network/"
|
|
493
|
+
target="_blank"
|
|
494
|
+
className="col-6 flex mt-3 ai-s">
|
|
495
|
+
<Book className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
496
|
+
<div>
|
|
497
|
+
<i18n.h4 className="fs-14 fw-600 flex ai-c">
|
|
498
|
+
Documentation <External className="h-1.5 w-a ml-1" />
|
|
499
|
+
</i18n.h4>
|
|
500
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
501
|
+
Dive deep into the Rujira network
|
|
502
|
+
</i18n.p>
|
|
503
|
+
</div>
|
|
504
|
+
</a>
|
|
505
|
+
</div>
|
|
506
|
+
</Popup>
|
|
507
|
+
);
|
|
508
|
+
|
|
509
|
+
const MobileMenu = ({ domain, routingElement, setShowMobile }: SubProps) => (
|
|
510
|
+
<>
|
|
511
|
+
{/* <ResolveLink
|
|
512
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
513
|
+
as={routingElement}
|
|
514
|
+
domain={domain}
|
|
515
|
+
to="/buy"
|
|
516
|
+
className="mt-3 flex">
|
|
517
|
+
<ChartUp className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
518
|
+
<div>
|
|
519
|
+
<i18n.h4 className="fs-14 fw-600">Buy Crypto</i18n.h4>
|
|
520
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
521
|
+
Instantly buy crypto at the best available rate
|
|
522
|
+
</i18n.p>
|
|
523
|
+
</div>
|
|
524
|
+
</ResolveLink> */}
|
|
525
|
+
<ResolveLink
|
|
526
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
527
|
+
as={routingElement}
|
|
528
|
+
domain={domain}
|
|
529
|
+
to="/swap"
|
|
530
|
+
className="mt-3 flex">
|
|
531
|
+
<Swap className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
532
|
+
<div>
|
|
533
|
+
<i18n.h4 className="fs-14 fw-600">Token Swap</i18n.h4>
|
|
534
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
535
|
+
Swap tokens at the best available rate
|
|
536
|
+
</i18n.p>
|
|
537
|
+
</div>
|
|
538
|
+
</ResolveLink>
|
|
539
|
+
<ResolveLink
|
|
540
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
541
|
+
as={routingElement}
|
|
542
|
+
domain={domain}
|
|
543
|
+
to="/trade"
|
|
544
|
+
className="mt-3 flex">
|
|
545
|
+
<Chart className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
546
|
+
<div>
|
|
547
|
+
<i18n.h4 className="fs-14 fw-600">Spot Trading</i18n.h4>
|
|
548
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
549
|
+
Buy and sell on the spot market without slippage
|
|
550
|
+
</i18n.p>
|
|
551
|
+
</div>
|
|
552
|
+
</ResolveLink>
|
|
553
|
+
<ResolveLink
|
|
554
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
555
|
+
as={routingElement}
|
|
556
|
+
domain={domain}
|
|
557
|
+
to="/options"
|
|
558
|
+
className="flex mt-3">
|
|
559
|
+
<ChartUp className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
560
|
+
<div>
|
|
561
|
+
<i18n.h4 className="fs-14 fw-600">Options</i18n.h4>
|
|
562
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
563
|
+
Designed to simplify options trading
|
|
564
|
+
</i18n.p>
|
|
565
|
+
</div>
|
|
566
|
+
</ResolveLink>
|
|
567
|
+
<ResolveLink
|
|
568
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
569
|
+
as="a"
|
|
570
|
+
href="http://perps.rujira.network/perps"
|
|
571
|
+
target="_blank"
|
|
572
|
+
className="mt-3 flex">
|
|
573
|
+
<ChartUpDown className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
574
|
+
<div>
|
|
575
|
+
<i18n.h4 className="fs-14 fw-600">Futures</i18n.h4>
|
|
576
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
577
|
+
Buy and sell perpetual futures contracts
|
|
578
|
+
</i18n.p>
|
|
579
|
+
</div>
|
|
580
|
+
</ResolveLink>
|
|
581
|
+
|
|
582
|
+
<ResolveLink
|
|
583
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
584
|
+
as={routingElement}
|
|
585
|
+
domain={domain}
|
|
586
|
+
to="/stake"
|
|
587
|
+
className="mt-3 flex ai-s">
|
|
588
|
+
<Stake className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
589
|
+
<div>
|
|
590
|
+
<i18n.h4 className="fs-14 fw-600">Stake</i18n.h4>
|
|
591
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
592
|
+
Earn a percentage of fees and secure the network
|
|
593
|
+
</i18n.p>
|
|
594
|
+
</div>
|
|
595
|
+
</ResolveLink>
|
|
596
|
+
<ResolveLink
|
|
597
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
598
|
+
as={routingElement}
|
|
599
|
+
domain={domain}
|
|
600
|
+
to="/provide"
|
|
601
|
+
className="flex mt-3 ai-s">
|
|
602
|
+
<Building className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
603
|
+
<div>
|
|
604
|
+
<i18n.h4 className="fs-14 fw-600">Liquidity Pools</i18n.h4>
|
|
605
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
606
|
+
Multi-strategy automated market maker pools
|
|
607
|
+
</i18n.p>
|
|
608
|
+
</div>
|
|
609
|
+
</ResolveLink>
|
|
610
|
+
|
|
611
|
+
<ResolveLink
|
|
612
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
613
|
+
as={routingElement}
|
|
614
|
+
domain={domain}
|
|
615
|
+
to="/money-market"
|
|
616
|
+
className="flex mt-3 ai-s">
|
|
617
|
+
<MoneyTransfer className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
618
|
+
<div>
|
|
619
|
+
<i18n.h4 className="fs-14 fw-600">Lend & Borrow</i18n.h4>
|
|
620
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
621
|
+
Earn yield by lending your tokens to others
|
|
622
|
+
</i18n.p>
|
|
623
|
+
</div>
|
|
624
|
+
</ResolveLink>
|
|
625
|
+
{/* <ResolveLink onClick={() => setShowMobile && setShowMobile(false)} as={routingElement} domain={domain} to="/mint" className="mt-3 flex ai-s">
|
|
626
|
+
<USK className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
627
|
+
<div>
|
|
628
|
+
<i18n.h4 className="fs-14 fw-600">Mint USK</i18n.h4>
|
|
629
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
630
|
+
Use your tokens as collateral to mint USK
|
|
631
|
+
</i18n.p>
|
|
632
|
+
</div>
|
|
633
|
+
</ResolveLink> */}
|
|
634
|
+
{/* <ResolveLink
|
|
635
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
636
|
+
as={routingElement}
|
|
637
|
+
domain={domain}
|
|
638
|
+
to="/borrow"
|
|
639
|
+
className="mt-3 flex ai-s">
|
|
640
|
+
<MoneyTransfer className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
641
|
+
<div>
|
|
642
|
+
<i18n.h4 className="fs-14 fw-600">Borrow</i18n.h4>
|
|
643
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
644
|
+
Borrow assets using your tokens as collateral
|
|
645
|
+
</i18n.p>
|
|
646
|
+
</div>
|
|
647
|
+
</ResolveLink> */}
|
|
648
|
+
<ResolveLink
|
|
649
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
650
|
+
as={routingElement}
|
|
651
|
+
domain={domain}
|
|
652
|
+
to="/liquidate"
|
|
653
|
+
className="flex mt-3">
|
|
654
|
+
<Gavel className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
655
|
+
<div>
|
|
656
|
+
<i18n.h4 className="fs-14 fw-600">Liquidate</i18n.h4>
|
|
657
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
658
|
+
Beat the bots and bid on liquidated collateral
|
|
659
|
+
</i18n.p>
|
|
660
|
+
</div>
|
|
661
|
+
</ResolveLink>
|
|
662
|
+
<ResolveLink
|
|
663
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
664
|
+
as={routingElement}
|
|
665
|
+
domain={domain}
|
|
666
|
+
to="/ventures"
|
|
667
|
+
className="flex mt-3 ai-s">
|
|
668
|
+
<Seedling className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
669
|
+
<div>
|
|
670
|
+
<i18n.h4 className="fs-14 fw-600 flex ai-c">Ventures</i18n.h4>
|
|
671
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
672
|
+
Early access to promising protocols and opportunities
|
|
673
|
+
</i18n.p>
|
|
674
|
+
</div>
|
|
675
|
+
</ResolveLink>
|
|
676
|
+
<ResolveLink
|
|
677
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
678
|
+
as={routingElement}
|
|
679
|
+
domain={domain}
|
|
680
|
+
to="/nfts"
|
|
681
|
+
className="flex mt-3 ai-s">
|
|
682
|
+
<NFT className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
683
|
+
<div>
|
|
684
|
+
<i18n.h4 className="fs-14 fw-600 flex ai-c">
|
|
685
|
+
Collections (Gojira)
|
|
686
|
+
</i18n.h4>
|
|
687
|
+
<i18n.p className="fs-12 mt-0.5">A sustainable NFT marketplace</i18n.p>
|
|
688
|
+
</div>
|
|
689
|
+
</ResolveLink>
|
|
690
|
+
<ResolveLink
|
|
691
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
692
|
+
as={routingElement}
|
|
693
|
+
domain={domain}
|
|
694
|
+
to="/ecosystem"
|
|
695
|
+
className="mt-3 flex ai-s">
|
|
696
|
+
<Earth className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
697
|
+
<div>
|
|
698
|
+
<i18n.h4 className="fs-14 fw-600">Ecosystem</i18n.h4>
|
|
699
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
700
|
+
Protocols, products and services calling Rujira their home
|
|
701
|
+
</i18n.p>
|
|
702
|
+
</div>
|
|
703
|
+
</ResolveLink>
|
|
704
|
+
<ResolveLink
|
|
705
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
706
|
+
as={routingElement}
|
|
707
|
+
domain={domain}
|
|
708
|
+
to="/dashboard"
|
|
709
|
+
className="mt-3 flex ai-s">
|
|
710
|
+
<PieChart className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
711
|
+
<div>
|
|
712
|
+
<i18n.h4 className="fs-14 fw-600">Token Analytics</i18n.h4>
|
|
713
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
714
|
+
Discover RUJI tokenomics and analytics
|
|
715
|
+
</i18n.p>
|
|
716
|
+
</div>
|
|
717
|
+
</ResolveLink>
|
|
718
|
+
<ResolveLink
|
|
719
|
+
onClick={() => setShowMobile && setShowMobile(false)}
|
|
720
|
+
as={routingElement}
|
|
721
|
+
domain={domain}
|
|
722
|
+
to="/developers"
|
|
723
|
+
className="flex mt-3">
|
|
724
|
+
<Terminal className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
725
|
+
<div>
|
|
726
|
+
<i18n.h4 className="fs-14 fw-600">Developers</i18n.h4>
|
|
727
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
728
|
+
Rujira is built for builders, get started here.
|
|
729
|
+
</i18n.p>
|
|
730
|
+
</div>
|
|
731
|
+
</ResolveLink>
|
|
732
|
+
<a
|
|
733
|
+
href="https://docs.rujira.network/"
|
|
734
|
+
target="_blank"
|
|
735
|
+
className="flex mt-3 ai-s">
|
|
736
|
+
<Book className="color-grey h-3.5 w-a block mr-2 no-shrink mt-0" />
|
|
737
|
+
<div>
|
|
738
|
+
<i18n.h4 className="fs-14 fw-600">Documentation</i18n.h4>
|
|
739
|
+
<i18n.p className="fs-12 mt-0.5">
|
|
740
|
+
Dive deep into the Rujira network
|
|
741
|
+
</i18n.p>
|
|
742
|
+
</div>
|
|
743
|
+
</a>
|
|
744
|
+
</>
|
|
745
|
+
);
|