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.
Files changed (303) hide show
  1. package/.eslintrc.cjs +21 -0
  2. package/.tool-versions +1 -0
  3. package/i18n/.github/workflows/validate.yml +13 -0
  4. package/i18n/README.md +7 -0
  5. package/i18n/translations/template.json +448 -0
  6. package/i18n/update-template.js +19 -0
  7. package/i18n/validate.js +10 -0
  8. package/lib/esm/i18n/translations/template.json +448 -0
  9. package/lib/esm/src/components/buttons/Button.js +37 -0
  10. package/lib/esm/src/components/buttons/Popout.js +56 -0
  11. package/lib/esm/src/components/buttons/TxButton.js +42 -0
  12. package/lib/esm/src/components/buttons/__Popout.js +34 -0
  13. package/lib/esm/src/components/cards/Card.js +8 -0
  14. package/lib/esm/src/components/cards/GradientCard.js +8 -0
  15. package/lib/esm/src/components/footer/Footer.js +11 -0
  16. package/lib/esm/src/components/header/Accounts.js +211 -0
  17. package/lib/esm/src/components/header/Header.js +69 -0
  18. package/lib/esm/src/components/header/QuickLauncher.js +10 -0
  19. package/lib/esm/src/components/header/ResolveLink.js +13 -0
  20. package/lib/esm/src/components/icons/IconDenom.js +358 -0
  21. package/lib/esm/src/components/icons/Icons.js +228 -0
  22. package/lib/esm/src/components/icons/Networks.js +32 -0
  23. package/lib/esm/src/components/icons/Wallets.js +62 -0
  24. package/lib/esm/src/components/inputs/Checkbox.js +12 -0
  25. package/lib/esm/src/components/inputs/DecimalInput.js +35 -0
  26. package/lib/esm/src/components/inputs/DenomInput.js +22 -0
  27. package/lib/esm/src/components/inputs/DenomSelect.js +66 -0
  28. package/lib/esm/src/components/inputs/Input.js +25 -0
  29. package/lib/esm/src/components/inputs/Numeric.js +18 -0
  30. package/lib/esm/src/components/inputs/Radio.js +12 -0
  31. package/lib/esm/src/components/inputs/Select.js +29 -0
  32. package/lib/esm/src/components/inputs/Textarea.js +25 -0
  33. package/lib/esm/src/components/inputs/Toggle.js +13 -0
  34. package/lib/esm/src/components/loader/Loader.js +3 -0
  35. package/lib/esm/src/components/logos/RujiraLogo.js +2 -0
  36. package/lib/esm/src/components/notices/Warning.js +10 -0
  37. package/lib/esm/src/components/numbers/Decimal.js +14 -0
  38. package/lib/esm/src/components/numbers/Fiat.js +19 -0
  39. package/lib/esm/src/components/progress/Progress.js +9 -0
  40. package/lib/esm/src/components/slider/Slider.js +5 -0
  41. package/lib/esm/src/context/Affiliate.js +34 -0
  42. package/lib/esm/src/context/GlobalModal.js +35 -0
  43. package/lib/esm/src/d.js +1 -0
  44. package/lib/esm/src/helpers/index.js +65 -0
  45. package/lib/esm/src/helpers/number.js +8 -0
  46. package/lib/esm/src/hooks/useClickOutside.js +19 -0
  47. package/lib/esm/src/hooks/useLocalStorage.js +12 -0
  48. package/lib/esm/src/hooks/useQueryParam.js +31 -0
  49. package/lib/esm/src/hooks/useWindowSize.js +19 -0
  50. package/lib/esm/src/i18n/i18n.js +90 -0
  51. package/lib/esm/src/i18n/index.js +1 -0
  52. package/lib/esm/src/index.js +38 -0
  53. package/lib/esm/src/services/account.js +42 -0
  54. package/lib/esm/tsconfig.tsbuildinfo +1 -0
  55. package/package.json +47 -0
  56. package/src/assets/ghost-tokens/akt.png +0 -0
  57. package/src/assets/ghost-tokens/ampkuji.png +0 -0
  58. package/src/assets/ghost-tokens/arb.png +0 -0
  59. package/src/assets/ghost-tokens/atom.png +0 -0
  60. package/src/assets/ghost-tokens/axlusdc.png +0 -0
  61. package/src/assets/ghost-tokens/cro.png +0 -0
  62. package/src/assets/ghost-tokens/dot.png +0 -0
  63. package/src/assets/ghost-tokens/fet.png +0 -0
  64. package/src/assets/ghost-tokens/fuzn.png +0 -0
  65. package/src/assets/ghost-tokens/glmr.png +0 -0
  66. package/src/assets/ghost-tokens/gpaxg.png +0 -0
  67. package/src/assets/ghost-tokens/inj.png +0 -0
  68. package/src/assets/ghost-tokens/juno.png +0 -0
  69. package/src/assets/ghost-tokens/kuji.png +0 -0
  70. package/src/assets/ghost-tokens/luna.png +0 -0
  71. package/src/assets/ghost-tokens/lunc.png +0 -0
  72. package/src/assets/ghost-tokens/mnta.png +0 -0
  73. package/src/assets/ghost-tokens/ntrn.png +0 -0
  74. package/src/assets/ghost-tokens/osmo.png +0 -0
  75. package/src/assets/ghost-tokens/scrt.png +0 -0
  76. package/src/assets/ghost-tokens/shd.png +0 -0
  77. package/src/assets/ghost-tokens/sol.png +0 -0
  78. package/src/assets/ghost-tokens/stars.png +0 -0
  79. package/src/assets/ghost-tokens/statom.png +0 -0
  80. package/src/assets/ghost-tokens/stosmo.png +0 -0
  81. package/src/assets/ghost-tokens/usdc.png +0 -0
  82. package/src/assets/ghost-tokens/usk.png +0 -0
  83. package/src/assets/ghost-tokens/wavax.png +0 -0
  84. package/src/assets/ghost-tokens/wbnb.png +0 -0
  85. package/src/assets/ghost-tokens/wbtc.png +0 -0
  86. package/src/assets/ghost-tokens/weth.png +0 -0
  87. package/src/assets/ghost-tokens/wftm.png +0 -0
  88. package/src/assets/ghost-tokens/wglmr.png +0 -0
  89. package/src/assets/ghost-tokens/wmatic.png +0 -0
  90. package/src/assets/mono.woff +0 -0
  91. package/src/assets/tokens/acre.png +0 -0
  92. package/src/assets/tokens/akt.png +0 -0
  93. package/src/assets/tokens/amber.png +0 -0
  94. package/src/assets/tokens/ampkuji.png +0 -0
  95. package/src/assets/tokens/ampluna.png +0 -0
  96. package/src/assets/tokens/ampmnta.png +0 -0
  97. package/src/assets/tokens/ampwhale.png +0 -0
  98. package/src/assets/tokens/andr.png +0 -0
  99. package/src/assets/tokens/aqla.png +0 -0
  100. package/src/assets/tokens/aqua.png +0 -0
  101. package/src/assets/tokens/arb.png +0 -0
  102. package/src/assets/tokens/arch.png +0 -0
  103. package/src/assets/tokens/astro.png +0 -0
  104. package/src/assets/tokens/atom.png +0 -0
  105. package/src/assets/tokens/auto.png +0 -0
  106. package/src/assets/tokens/avax.png +0 -0
  107. package/src/assets/tokens/axl.png +0 -0
  108. package/src/assets/tokens/axlusdc.png +0 -0
  109. package/src/assets/tokens/axlusdt.png +0 -0
  110. package/src/assets/tokens/bad.png +0 -0
  111. package/src/assets/tokens/bch.png +0 -0
  112. package/src/assets/tokens/bfit.png +0 -0
  113. package/src/assets/tokens/bnb.png +0 -0
  114. package/src/assets/tokens/btc.png +0 -0
  115. package/src/assets/tokens/cheq.png +0 -0
  116. package/src/assets/tokens/cmdx.png +0 -0
  117. package/src/assets/tokens/cmst.png +0 -0
  118. package/src/assets/tokens/cnto.png +0 -0
  119. package/src/assets/tokens/core.png +0 -0
  120. package/src/assets/tokens/crbrus.png +0 -0
  121. package/src/assets/tokens/cre.png +0 -0
  122. package/src/assets/tokens/cro.png +0 -0
  123. package/src/assets/tokens/cub.png +0 -0
  124. package/src/assets/tokens/dai.png +0 -0
  125. package/src/assets/tokens/default.png +0 -0
  126. package/src/assets/tokens/doge.png +0 -0
  127. package/src/assets/tokens/dot.png +0 -0
  128. package/src/assets/tokens/dvpn.png +0 -0
  129. package/src/assets/tokens/dydx.png +0 -0
  130. package/src/assets/tokens/dym.png +0 -0
  131. package/src/assets/tokens/eth.png +0 -0
  132. package/src/assets/tokens/evmos.png +0 -0
  133. package/src/assets/tokens/flix.png +0 -0
  134. package/src/assets/tokens/frnz.png +0 -0
  135. package/src/assets/tokens/fury.legacy.png +0 -0
  136. package/src/assets/tokens/fury.png +0 -0
  137. package/src/assets/tokens/fuzn.png +0 -0
  138. package/src/assets/tokens/glmr.png +0 -0
  139. package/src/assets/tokens/glto.png +0 -0
  140. package/src/assets/tokens/gpaxg.png +0 -0
  141. package/src/assets/tokens/grav.png +0 -0
  142. package/src/assets/tokens/inj.png +0 -0
  143. package/src/assets/tokens/jkl.png +0 -0
  144. package/src/assets/tokens/juno.png +0 -0
  145. package/src/assets/tokens/kart.png +0 -0
  146. package/src/assets/tokens/kuji.png +0 -0
  147. package/src/assets/tokens/kune.png +0 -0
  148. package/src/assets/tokens/link.png +0 -0
  149. package/src/assets/tokens/loop.png +0 -0
  150. package/src/assets/tokens/ltc.png +0 -0
  151. package/src/assets/tokens/luna.png +0 -0
  152. package/src/assets/tokens/lunc.png +0 -0
  153. package/src/assets/tokens/lvn.png +0 -0
  154. package/src/assets/tokens/mars.png +0 -0
  155. package/src/assets/tokens/mnta.png +0 -0
  156. package/src/assets/tokens/mntl.png +0 -0
  157. package/src/assets/tokens/nami.png +0 -0
  158. package/src/assets/tokens/nausd.png +0 -0
  159. package/src/assets/tokens/nbtc.png +0 -0
  160. package/src/assets/tokens/neok.png +0 -0
  161. package/src/assets/tokens/newt.png +0 -0
  162. package/src/assets/tokens/nstk.png +0 -0
  163. package/src/assets/tokens/ntrn.png +0 -0
  164. package/src/assets/tokens/odin.png +0 -0
  165. package/src/assets/tokens/osmo.png +0 -0
  166. package/src/assets/tokens/pepe.png +0 -0
  167. package/src/assets/tokens/plnk.png +0 -0
  168. package/src/assets/tokens/plq.png +0 -0
  169. package/src/assets/tokens/qcaqla.png +0 -0
  170. package/src/assets/tokens/qcatom.png +0 -0
  171. package/src/assets/tokens/qcfuzn.png +0 -0
  172. package/src/assets/tokens/qckuji.png +0 -0
  173. package/src/assets/tokens/qcmnta.png +0 -0
  174. package/src/assets/tokens/rac.legacy.png +0 -0
  175. package/src/assets/tokens/rac.png +0 -0
  176. package/src/assets/tokens/ratom.png +0 -0
  177. package/src/assets/tokens/regen.png +0 -0
  178. package/src/assets/tokens/rfuzn.png +0 -0
  179. package/src/assets/tokens/rio.png +0 -0
  180. package/src/assets/tokens/rkuji.png +0 -0
  181. package/src/assets/tokens/roar.png +0 -0
  182. package/src/assets/tokens/ruji.png +0 -0
  183. package/src/assets/tokens/rune.png +0 -0
  184. package/src/assets/tokens/sayve.png +0 -0
  185. package/src/assets/tokens/scrt.png +0 -0
  186. package/src/assets/tokens/shd.legacy.png +0 -0
  187. package/src/assets/tokens/shd.png +0 -0
  188. package/src/assets/tokens/silk.png +0 -0
  189. package/src/assets/tokens/sol.png +0 -0
  190. package/src/assets/tokens/somm.png +0 -0
  191. package/src/assets/tokens/stars.png +0 -0
  192. package/src/assets/tokens/statom.png +0 -0
  193. package/src/assets/tokens/stinj.png +0 -0
  194. package/src/assets/tokens/stluna.png +0 -0
  195. package/src/assets/tokens/stosmo.png +0 -0
  196. package/src/assets/tokens/strd.png +0 -0
  197. package/src/assets/tokens/swth.png +0 -0
  198. package/src/assets/tokens/tia.png +0 -0
  199. package/src/assets/tokens/tori.png +0 -0
  200. package/src/assets/tokens/umee.png +0 -0
  201. package/src/assets/tokens/uni.png +0 -0
  202. package/src/assets/tokens/usdc.png +0 -0
  203. package/src/assets/tokens/usk.png +0 -0
  204. package/src/assets/tokens/usk_black.png +0 -0
  205. package/src/assets/tokens/ustc.png +0 -0
  206. package/src/assets/tokens/wavax.png +0 -0
  207. package/src/assets/tokens/wbtc.png +0 -0
  208. package/src/assets/tokens/wftm.png +0 -0
  209. package/src/assets/tokens/whale.png +0 -0
  210. package/src/assets/tokens/whlocal.png +0 -0
  211. package/src/assets/tokens/wink.png +0 -0
  212. package/src/assets/tokens/wmatic.png +0 -0
  213. package/src/assets/tokens/wsteth.png +0 -0
  214. package/src/assets/tokens/wtao.png +0 -0
  215. package/src/assets/tokens/xastro.png +0 -0
  216. package/src/assets/tokens/yieldeth.png +0 -0
  217. package/src/assets/tokens/yum.png +0 -0
  218. package/src/components/buttons/Button.tsx +80 -0
  219. package/src/components/buttons/Popout.tsx +74 -0
  220. package/src/components/buttons/TxButton.tsx +103 -0
  221. package/src/components/buttons/__Popout.tsx +56 -0
  222. package/src/components/cards/Card.tsx +17 -0
  223. package/src/components/cards/GradientCard.tsx +17 -0
  224. package/src/components/footer/Footer.tsx +117 -0
  225. package/src/components/header/Accounts.tsx +1021 -0
  226. package/src/components/header/Header.tsx +745 -0
  227. package/src/components/header/QuickLauncher.tsx +67 -0
  228. package/src/components/header/ResolveLink.tsx +81 -0
  229. package/src/components/icons/IconDenom.tsx +400 -0
  230. package/src/components/icons/Icons.tsx +686 -0
  231. package/src/components/icons/Networks.tsx +687 -0
  232. package/src/components/icons/Wallets.tsx +947 -0
  233. package/src/components/inputs/Checkbox.tsx +35 -0
  234. package/src/components/inputs/DecimalInput.tsx +72 -0
  235. package/src/components/inputs/DenomInput.tsx +65 -0
  236. package/src/components/inputs/DenomSelect.tsx +178 -0
  237. package/src/components/inputs/Input.tsx +66 -0
  238. package/src/components/inputs/Numeric.tsx +49 -0
  239. package/src/components/inputs/Radio.tsx +33 -0
  240. package/src/components/inputs/Select.tsx +69 -0
  241. package/src/components/inputs/Textarea.tsx +65 -0
  242. package/src/components/inputs/Toggle.tsx +38 -0
  243. package/src/components/loader/Loader.tsx +103 -0
  244. package/src/components/logos/RujiraLogo.tsx +83 -0
  245. package/src/components/notices/Warning.tsx +42 -0
  246. package/src/components/numbers/Decimal.tsx +43 -0
  247. package/src/components/numbers/Fiat.tsx +56 -0
  248. package/src/components/progress/Progress.tsx +40 -0
  249. package/src/components/slider/Slider.tsx +12 -0
  250. package/src/context/Affiliate.tsx +65 -0
  251. package/src/context/GlobalModal.tsx +115 -0
  252. package/src/d.ts +4 -0
  253. package/src/helpers/index.ts +73 -0
  254. package/src/helpers/number.ts +12 -0
  255. package/src/hooks/useClickOutside.ts +27 -0
  256. package/src/hooks/useLocalStorage.ts +20 -0
  257. package/src/hooks/useQueryParam.ts +46 -0
  258. package/src/hooks/useWindowSize.ts +26 -0
  259. package/src/i18n/i18n.tsx +102 -0
  260. package/src/i18n/index.ts +1 -0
  261. package/src/index.ts +54 -0
  262. package/src/scss/base/_colors.scss +23 -0
  263. package/src/scss/base/_display.scss +85 -0
  264. package/src/scss/base/_filters.scss +20 -0
  265. package/src/scss/base/_flex.scss +612 -0
  266. package/src/scss/base/_important.scss +3 -0
  267. package/src/scss/base/_normalize.scss +351 -0
  268. package/src/scss/base/_spacing.scss +290 -0
  269. package/src/scss/base/_tooltip.scss +9 -0
  270. package/src/scss/base/_typography.scss +279 -0
  271. package/src/scss/base/_variables.scss +72 -0
  272. package/src/scss/components/_button-group.scss +61 -0
  273. package/src/scss/components/_button.scss +459 -0
  274. package/src/scss/components/_decimal.scss +40 -0
  275. package/src/scss/components/_denom-select.scss +270 -0
  276. package/src/scss/components/_fiat.scss +34 -0
  277. package/src/scss/components/_footer.scss +27 -0
  278. package/src/scss/components/_header.scss +665 -0
  279. package/src/scss/components/_input.scss +82 -0
  280. package/src/scss/components/_loader.scss +20 -0
  281. package/src/scss/components/_modal.scss +138 -0
  282. package/src/scss/components/_numeric-input.scss +98 -0
  283. package/src/scss/components/_popout.scss +63 -0
  284. package/src/scss/components/_progress.scss +62 -0
  285. package/src/scss/components/_radio-checkbox.scss +79 -0
  286. package/src/scss/components/_select.scss +106 -0
  287. package/src/scss/components/_slider.scss +34 -0
  288. package/src/scss/components/_toggle.scss +120 -0
  289. package/src/scss/components/_warning.scss +65 -0
  290. package/src/scss/index.scss +37 -0
  291. package/src/scss/styledcomponents/_card.scss +130 -0
  292. package/src/scss/styledcomponents/_drawer.scss +36 -0
  293. package/src/scss/styledcomponents/_general.scss +20 -0
  294. package/src/scss/styledcomponents/_table.scss +302 -0
  295. package/src/scss/styledcomponents/_tabs.scss +97 -0
  296. package/src/scss/styledcomponents/_tag.scss +155 -0
  297. package/src/scss/unsorted/_general.scss +259 -0
  298. package/src/services/account.ts +53 -0
  299. package/tsconfig.json +25 -0
  300. package/tsconfig.node.json +11 -0
  301. package/vite.config.ts +7 -0
  302. package/vitest-setup.js +1 -0
  303. package/vitest.config.js +13 -0
@@ -0,0 +1,27 @@
1
+ import { RefObject, useEffect, useRef } from "react";
2
+
3
+ export const useClickOutside = (
4
+ callback: () => void,
5
+ isActive: boolean
6
+ ): RefObject<HTMLElement> => {
7
+ const ref = useRef<HTMLElement>(null);
8
+
9
+ useEffect(() => {
10
+ const handleClickOutside = (e: MouseEvent) => {
11
+ const target = e.target as Node;
12
+ if (ref.current && !ref.current.contains(target)) {
13
+ callback();
14
+ }
15
+ };
16
+
17
+ if (isActive) {
18
+ document.addEventListener("mousedown", handleClickOutside);
19
+ }
20
+
21
+ return () => {
22
+ document.removeEventListener("mousedown", handleClickOutside);
23
+ };
24
+ }, [isActive, callback]);
25
+
26
+ return ref;
27
+ };
@@ -0,0 +1,20 @@
1
+ import { useMemo, useState } from "react";
2
+
3
+ type T = string | object;
4
+
5
+ export const useLocalStorage = (key: string, def: T) => {
6
+ const initial = useMemo(() => localStorage.getItem(key), [key]);
7
+
8
+ const [val, setLocalVal] = useState(
9
+ initial ? JSON.parse(initial) : def
10
+ );
11
+
12
+ const setVal = (v: any) => {
13
+ setLocalVal(v);
14
+ v
15
+ ? localStorage.setItem(key, JSON.stringify(v))
16
+ : localStorage.removeItem(key);
17
+ };
18
+
19
+ return [val, setVal];
20
+ };
@@ -0,0 +1,46 @@
1
+ import { useMemo } from "react";
2
+ import { useNavigate, useLocation } from "react-router-dom";
3
+
4
+ const useQuery = () => {
5
+ const { search } = useLocation();
6
+ return useMemo(() => new URLSearchParams(search), [search]);
7
+ };
8
+
9
+ export const useQueryParam = <T extends string = string>(
10
+ key: string,
11
+ initial: T
12
+ ): [T, (v: T) => void] => {
13
+ const location = useLocation();
14
+ const navigate = useNavigate();
15
+ const q = useQuery();
16
+
17
+ const val = (q.get(key) as T) || (initial as T);
18
+ const setVal = (s: string) => {
19
+ s ? q.set(key, s) : q.delete(key);
20
+ navigate(`${location.pathname}?${q.toString()}`);
21
+ };
22
+
23
+ return [val, setVal];
24
+ };
25
+
26
+ export const useQueryParams = <T extends string = string>(
27
+ vals: Record<string, T>
28
+ ): [Record<string, T>, (v: Record<string, T>) => void] => {
29
+ const location = useLocation();
30
+ const navigate = useNavigate();
31
+ const q = useQuery();
32
+
33
+ const val = Object.entries(vals).reduce(
34
+ (a, [k, v]) => ({ ...a, [k]: (q.get(k) as T) || (v as T) }),
35
+ {}
36
+ );
37
+ const setVal = (s: Record<string, T>) => {
38
+ const r = Object.entries(s).reduce((a, [k, v]) => {
39
+ v ? a.set(k, v) : a.delete(k);
40
+ return a;
41
+ }, q);
42
+ navigate(`${location.pathname}?${r.toString()}`);
43
+ };
44
+
45
+ return [val, setVal];
46
+ };
@@ -0,0 +1,26 @@
1
+ import { useState, useEffect } from "react";
2
+
3
+ interface Size {
4
+ width: number;
5
+ height: number;
6
+ }
7
+
8
+ export function useWindowSize(): Size {
9
+ const [windowSize, setWindowSize] = useState<Size>({
10
+ width: window.outerWidth,
11
+ height: window.outerHeight,
12
+ });
13
+
14
+ useEffect(() => {
15
+ function handleResize() {
16
+ setWindowSize({
17
+ width: window.innerWidth,
18
+ height: window.innerHeight,
19
+ });
20
+ }
21
+ window.addEventListener("resize", handleResize);
22
+ handleResize();
23
+ return () => window.removeEventListener("resize", handleResize);
24
+ }, []);
25
+ return windowSize;
26
+ }
@@ -0,0 +1,102 @@
1
+ import { createElement, PropsWithChildren } from "react";
2
+ import template from "../../i18n/translations/template.json";
3
+
4
+ const replace = (string: string, replacements: string[]): string => {
5
+ const r = replacements.pop();
6
+ if (r) {
7
+ return replace(string.replace("{}", r), replacements);
8
+ } else {
9
+ return string;
10
+ }
11
+ };
12
+
13
+ export const t = (string: string, replacements = []) => {
14
+ const lang = navigator.language;
15
+ const txs = translations(lang);
16
+ if (txs) {
17
+ const tx = replace(txs[string], replacements.reverse());
18
+ if (!tx) txs[string] = "";
19
+ return tx || string;
20
+ }
21
+ return string;
22
+ };
23
+
24
+ const translations = (language: string): Record<string, string> => {
25
+ switch (language) {
26
+ /* case "de":
27
+ case "de-DE":
28
+ return de;
29
+ case "tr":
30
+ case "tr-TR":
31
+ return tr;
32
+ case "es":
33
+ case "es-ES":
34
+ return es;
35
+ case "it":
36
+ case "it-IT":
37
+ return it;
38
+ case "ru":
39
+ case "ru-RU":
40
+ return ru;
41
+ case "ar":
42
+ case "ar-AE":
43
+ case "ar-BH":
44
+ case "ar-DZ":
45
+ case "ar-EG":
46
+ case "ar-IQ":
47
+ case "ar-JO":
48
+ case "ar-KW":
49
+ case "ar-LB":
50
+ case "ar-LY":
51
+ case "ar-MA":
52
+ case "ar-OM":
53
+ case "ar-QA":
54
+ case "ar-SA":
55
+ case "ar-SY":
56
+ case "ar-TN":
57
+ case "ar-YE":
58
+ return ar; */
59
+ default:
60
+ return template;
61
+ }
62
+ };
63
+
64
+ const comp =
65
+ (tag: string): React.FC<PropsWithChildren<{}>> =>
66
+ (props) =>
67
+ createElement(
68
+ tag,
69
+ props,
70
+ typeof props.children === "string" ? t(props.children) : props.children
71
+ );
72
+
73
+ export const a: React.FC<JSX.IntrinsicElements["a"]> = comp("a");
74
+ export const strong: React.FC<JSX.IntrinsicElements["strong"]> = comp("strong");
75
+ export const label: React.FC<JSX.IntrinsicElements["label"]> = comp("label");
76
+ export const li: React.FC<JSX.IntrinsicElements["li"]> = comp("li");
77
+ export const h1: React.FC<JSX.IntrinsicElements["h1"]> = comp("h1");
78
+ export const h2: React.FC<JSX.IntrinsicElements["h2"]> = comp("h2");
79
+ export const h3: React.FC<JSX.IntrinsicElements["h3"]> = comp("h3");
80
+ export const h4: React.FC<JSX.IntrinsicElements["h4"]> = comp("h4");
81
+ export const th: React.FC<JSX.IntrinsicElements["th"]> = comp("th");
82
+ export const td: React.FC<JSX.IntrinsicElements["td"]> = comp("td");
83
+ export const div: React.FC<JSX.IntrinsicElements["div"]> = comp("div");
84
+ export const span: React.FC<JSX.IntrinsicElements["span"]> = comp("span");
85
+ export const small: React.FC<JSX.IntrinsicElements["small"]> = comp("small");
86
+ export const p: React.FC<JSX.IntrinsicElements["p"]> = comp("p");
87
+ export const button: React.FC<JSX.IntrinsicElements["button"]> = comp("button");
88
+
89
+ document.onkeyup = function (e) {
90
+ if (e.ctrlKey && e.shiftKey && e.key == "E") {
91
+ const lang = navigator.language;
92
+ const txs = translations(lang);
93
+
94
+ var a = document.createElement("a");
95
+ var file = new Blob([JSON.stringify(txs, null, 2)], {
96
+ type: "application/json",
97
+ });
98
+ a.href = URL.createObjectURL(file);
99
+ a.download = `${lang}.json`;
100
+ a.click();
101
+ }
102
+ };
@@ -0,0 +1 @@
1
+ export * as i18n from './i18n';
package/src/index.ts ADDED
@@ -0,0 +1,54 @@
1
+ /* global BigInt */
2
+ import "./helpers/number";
3
+
4
+ export * from "./components/buttons/Button";
5
+ export * from "./components/buttons/Popout";
6
+ export * from "./components/buttons/TxButton";
7
+
8
+ export * from "./components/cards/Card";
9
+ export * from "./components/cards/GradientCard";
10
+
11
+ export * from "./components/footer/Footer";
12
+
13
+ export { Header } from "./components/header/Header";
14
+ export * from "./components/header/ResolveLink";
15
+
16
+ export * from "./components/icons/IconDenom";
17
+ export * as Icons from "./components/icons/Icons";
18
+ export * as NetworkIcons from "./components/icons/Networks";
19
+ export * as WalletIcons from "./components/icons/Wallets";
20
+
21
+ export * from "./components/inputs/Checkbox";
22
+ export * from "./components/inputs/DenomInput";
23
+ export * from "./components/inputs/DenomSelect";
24
+ export * from "./components/inputs/Input";
25
+ export * from "./components/inputs/Numeric";
26
+ export * from "./components/inputs/Radio";
27
+ export * from "./components/inputs/Select";
28
+ export * from "./components/inputs/Textarea";
29
+ export * from "./components/inputs/Toggle";
30
+
31
+ export * from "./components/loader/Loader";
32
+
33
+ export * from "./components/logos/RujiraLogo";
34
+
35
+ export * from "./components/notices/Warning";
36
+
37
+ export * from "./components/numbers/Decimal";
38
+ export * from "./components/numbers/Fiat";
39
+
40
+ export * from "./components/progress/Progress";
41
+
42
+ export * from "./components/slider/Slider";
43
+
44
+ export * from "./hooks/useClickOutside";
45
+ export * from "./hooks/useLocalStorage";
46
+ export * from "./hooks/useQueryParam";
47
+ export * from "./hooks/useWindowSize";
48
+
49
+ export * from "./context/Affiliate";
50
+ export * from "./context/GlobalModal";
51
+
52
+ export * from "./i18n";
53
+
54
+ export * from "./services/account";
@@ -0,0 +1,23 @@
1
+ @each $l, $c in $colors {
2
+ .color-#{$l} {
3
+ color: $c;
4
+ }
5
+ .hover-#{$l} {
6
+ transition: color 0.1s;
7
+ &:hover {
8
+ color: $c;
9
+ }
10
+ }
11
+ .bg-#{$l} {
12
+ background-color: $c;
13
+ }
14
+ .bg-hover-#{$l} {
15
+ transition: background-color 0.1s;
16
+ &:hover {
17
+ background-color: $c;
18
+ }
19
+ }
20
+ .b-#{$l} {
21
+ border: 1px solid $c;
22
+ }
23
+ }
@@ -0,0 +1,85 @@
1
+ html {
2
+ box-sizing: border-box;
3
+ scroll-behavior: smooth;
4
+ }
5
+
6
+ *,
7
+ *:before,
8
+ *:after {
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ .relative {
13
+ position: relative;
14
+ }
15
+
16
+ .block {
17
+ display: block;
18
+ }
19
+
20
+ .inline-block {
21
+ display: inline-block;
22
+ }
23
+
24
+ .block-img {
25
+ display: block;
26
+ max-width: 100%;
27
+ height: auto;
28
+ }
29
+
30
+ .overflow-x-auto {
31
+ overflow-x: auto;
32
+ }
33
+
34
+ .overflow-y-auto {
35
+ overflow-y: auto;
36
+ }
37
+
38
+ .overflow-hidden {
39
+ overflow: hidden;
40
+ }
41
+
42
+ .reset-overflow {
43
+ overflow: visible;
44
+ }
45
+
46
+ .pointer {
47
+ cursor: pointer;
48
+ }
49
+
50
+ .arrow {
51
+ cursor: default;
52
+ }
53
+
54
+ .visually-hidden {
55
+ position: absolute !important;
56
+ width: 1px !important;
57
+ height: 1px !important;
58
+ padding: 0 !important;
59
+ margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686
60
+ overflow: hidden !important;
61
+ clip: rect(0, 0, 0, 0) !important;
62
+ white-space: nowrap !important;
63
+ border: 0 !important;
64
+ }
65
+
66
+ .no-pointer-events {
67
+ pointer-events: none;
68
+ }
69
+
70
+ .no-select {
71
+ user-select: none;
72
+ cursor: default;
73
+ }
74
+
75
+ .clearfix {
76
+ &::after {
77
+ display: block;
78
+ clear: both;
79
+ content: "";
80
+ }
81
+ }
82
+
83
+ .transition {
84
+ transition: all 0.15s;
85
+ }
@@ -0,0 +1,20 @@
1
+ @for $i from 0 through 20 {
2
+ $o: $i * 0.05;
3
+ .opacity-#{$i} {
4
+ opacity: $o;
5
+ }
6
+ }
7
+ .invert {
8
+ filter: invert(1);
9
+ }
10
+ .desaturate {
11
+ filter: none;
12
+ -webkit-filter: grayscale(100%);
13
+ -moz-filter: grayscale(100%);
14
+ -ms-filter: grayscale(100%);
15
+ -o-filter: grayscale(100%);
16
+ }
17
+ .blur-bg {
18
+ -webkit-backdrop-filter: blur(5px);
19
+ backdrop-filter: blur(5px);
20
+ }