chore(dev): foundational ui elements
- Sidebar nav - Buttons - Connection Progress - Available Balance - providers - theme and layout - Storybook stories - unit tests - react dev tools Authored-by: schowdhuri Reviewed-by: localredhead
@ -15,6 +15,7 @@
|
||||
// =============================================================================
|
||||
|
||||
const { mergeConfig } = require("vite");
|
||||
const svgrPlugin = require("vite-plugin-svgr");
|
||||
const viteConfig = require("../packages/renderer/vite.config");
|
||||
|
||||
module.exports = {
|
||||
@ -35,8 +36,15 @@ module.exports = {
|
||||
viteFinal: async (config) => {
|
||||
// return the customized config
|
||||
return mergeConfig(config, {
|
||||
root: viteConfig.root,
|
||||
root: process.cwd(),
|
||||
resolve: viteConfig.resolve,
|
||||
plugins: [
|
||||
svgrPlugin({
|
||||
svgrOptions: {
|
||||
icon: true,
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
},
|
||||
};
|
||||
|
@ -17,16 +17,7 @@
|
||||
import { RecoilRoot } from "recoil";
|
||||
import { HashRouter } from "react-router-dom";
|
||||
import { QueryClient, QueryClientProvider } from "react-query";
|
||||
import { IntlProvider } from "@atoms/IntlProvider";
|
||||
|
||||
const queryClient = new QueryClient({
|
||||
defaultOptions: {
|
||||
queries: {
|
||||
refetchOnWindowFocus: false,
|
||||
staleTime: 60 * 1000, // 60 sec
|
||||
},
|
||||
},
|
||||
});
|
||||
import { AppProviders } from "@atoms/AppProviders";
|
||||
|
||||
export const parameters = {
|
||||
actions: { argTypesRegex: "^on[A-Z].*" },
|
||||
@ -41,13 +32,7 @@ export const parameters = {
|
||||
export const decorators = [
|
||||
(Story) => (
|
||||
<HashRouter>
|
||||
<RecoilRoot>
|
||||
<IntlProvider>
|
||||
<QueryClientProvider client={queryClient}>
|
||||
{Story()}
|
||||
</QueryClientProvider>
|
||||
</IntlProvider>
|
||||
</RecoilRoot>
|
||||
<AppProviders>{Story()}</AppProviders>
|
||||
</HashRouter>
|
||||
),
|
||||
];
|
||||
|
@ -22,6 +22,7 @@
|
||||
"test:main": "vitest run -r packages/main --passWithNoTests",
|
||||
"test:preload": "vitest run -r packages/preload --passWithNoTests",
|
||||
"test:renderer": "vitest run -r packages/renderer --passWithNoTests",
|
||||
"test:renderer:watch": "vitest -r packages/renderer",
|
||||
"watch": "node scripts/watch.js",
|
||||
"format": "prettier --write .",
|
||||
"lint": "eslint .",
|
||||
@ -44,6 +45,7 @@
|
||||
"@storybook/builder-vite": "^0.1.29",
|
||||
"@storybook/react": "^6.4.22",
|
||||
"@storybook/testing-library": "^0.0.10",
|
||||
"@testing-library/react": "^12",
|
||||
"@types/react": "<18.0.0",
|
||||
"@types/react-dom": "<18.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.12.1",
|
||||
@ -63,6 +65,7 @@
|
||||
"nano-staged": "^0.7.0",
|
||||
"playwright": "1.19.1",
|
||||
"prettier": "^2.6.2",
|
||||
"react-devtools": "^4.24.4",
|
||||
"typescript": "4.5.5",
|
||||
"vite": "2.8.4",
|
||||
"vite-plugin-svgr": "^1.1.0",
|
||||
|
3
packages/renderer/assets/account.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8.96198 9.67401C6.30559 9.67401 4.12498 7.49339 4.12498 4.837C4.12498 2.14097 6.26595 0 8.96198 0C11.658 0 13.799 2.18062 13.799 4.837C13.7593 7.49339 11.6184 9.67401 8.96198 9.67401ZM8.96198 1.5859C7.17784 1.5859 5.71088 3.05286 5.71088 4.837C5.71088 6.62115 7.17784 8.08811 8.96198 8.08811C10.7461 8.08811 12.2131 6.62115 12.2131 4.837C12.2131 3.05286 10.7461 1.5859 8.96198 1.5859ZM17.0897 15.1454C17.0897 13.0837 15.3452 10.9031 13.9179 9.43612L12.7682 10.5463C14.5126 12.2907 15.5038 13.9559 15.5038 15.1454V16.4141H2.42013V15.1454C2.42013 13.9559 3.37167 12.2907 5.07652 10.5463L3.92674 9.43612C2.53907 10.9031 0.834229 13.0837 0.834229 15.1454V18H17.0897V15.1454Z" fill="#111111"/>
|
||||
</svg>
|
After Width: | Height: | Size: 790 B |
3
packages/renderer/assets/arrow-down.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.91916 3.69319C3.23963 4.04927 3.76166 4.04657 4.07971 3.69319L6.82329 0.644746C7.14377 0.288661 7.01636 0 6.53811 0H0.460749C-0.0172283 0 -0.14248 0.291357 0.17557 0.644746L2.91916 3.69319Z" fill="#111111"/>
|
||||
</svg>
|
After Width: | Height: | Size: 359 B |
3
packages/renderer/assets/arrow-up.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.08084 0.265799C3.76037 -0.0902851 3.23834 -0.0875891 2.92029 0.265799L0.176707 3.31424C-0.143769 3.67032 -0.0163555 3.95898 0.461886 3.95898L6.53925 3.95898C7.01723 3.95898 7.14248 3.66763 6.82443 3.31424L4.08084 0.265799Z" fill="#111111"/>
|
||||
</svg>
|
After Width: | Height: | Size: 392 B |
BIN
packages/renderer/assets/fonts/Inter-Variable.ttf
Normal file
4
packages/renderer/assets/logo-icon.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="23" height="34" viewBox="0 0 23 34" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7.22164 18.082H16.4458V8.59668H22.8342V33.1724H16.4458V23.1004H7.22164V33.1724H0.834229V8.59766H7.22164V18.082Z" fill="#111111"/>
|
||||
<path d="M11.8585 6.45391C13.6407 6.45391 15.0855 5.00915 15.0855 3.22695C15.0855 1.44476 13.6407 0 11.8585 0C10.0763 0 8.63159 1.44476 8.63159 3.22695C8.63159 5.00915 10.0763 6.45391 11.8585 6.45391Z" fill="#111111"/>
|
||||
</svg>
|
After Width: | Height: | Size: 462 B |
@ -1,15 +1,9 @@
|
||||
<svg width="410" height="404" viewBox="0 0 410 404" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M399.641 59.5246L215.643 388.545C211.844 395.338 202.084 395.378 198.228 388.618L10.5817 59.5563C6.38087 52.1896 12.6802 43.2665 21.0281 44.7586L205.223 77.6824C206.398 77.8924 207.601 77.8904 208.776 77.6763L389.119 44.8058C397.439 43.2894 403.768 52.1434 399.641 59.5246Z" fill="url(#paint0_linear)"/>
|
||||
<path d="M292.965 1.5744L156.801 28.2552C154.563 28.6937 152.906 30.5903 152.771 32.8664L144.395 174.33C144.198 177.662 147.258 180.248 150.51 179.498L188.42 170.749C191.967 169.931 195.172 173.055 194.443 176.622L183.18 231.775C182.422 235.487 185.907 238.661 189.532 237.56L212.947 230.446C216.577 229.344 220.065 232.527 219.297 236.242L201.398 322.875C200.278 328.294 207.486 331.249 210.492 326.603L212.5 323.5L323.454 102.072C325.312 98.3645 322.108 94.137 318.036 94.9228L279.014 102.454C275.347 103.161 272.227 99.746 273.262 96.1583L298.731 7.86689C299.767 4.27314 296.636 0.855181 292.965 1.5744Z" fill="url(#paint1_linear)"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear" x1="6.00017" y1="32.9999" x2="235" y2="344" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#41D1FF"/>
|
||||
<stop offset="1" stop-color="#BD34FE"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear" x1="194.651" y1="8.81818" x2="236.076" y2="292.989" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFEA83"/>
|
||||
<stop offset="0.0833333" stop-color="#FFDD35"/>
|
||||
<stop offset="1" stop-color="#FFA800"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
<svg width="292" height="71" viewBox="0 0 292 71" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.7908 38.2311H31.2576V19.2402H44.0484V68.4439H31.2576V48.2952H12.7908V68.4611H0V19.2402H12.7908V38.2311Z" fill="#111111"/>
|
||||
<path d="M22.233 14.13C26.1349 14.13 29.298 10.9669 29.298 7.065C29.298 3.16311 26.1349 0 22.233 0C18.3311 0 15.168 3.16311 15.168 7.065C15.168 10.9669 18.3311 14.13 22.233 14.13Z" fill="#1443C3"/>
|
||||
<path d="M82.5542 59.8939H64.9301L61.5354 68.4576H47.9568L66.8792 19.2539H80.8415L99.3734 68.4576H85.7468L82.5542 59.8939ZM79.0945 50.1073L73.874 34.4459H73.7439L68.4583 50.1073H79.0945Z" fill="#111111"/>
|
||||
<path d="M104.93 19.2402L116.809 49.1276L128.754 19.2402H142.651L121.636 68.444H111.702L91.0323 19.2402H104.93Z" fill="#111111"/>
|
||||
<path d="M173.84 30.0716H158.634V38.2928H173.056V49.1242H158.634V57.6126H173.84V68.444H145.844V19.2402H173.84V30.0716Z" fill="#111111"/>
|
||||
<path d="M181.735 68.444V19.2402H194.523L217.95 49.3229H218.08V19.2402H230.878V68.444H218.087L194.66 38.2997H194.53V68.444H181.735Z" fill="#111111"/>
|
||||
<path d="M250.643 20.7743C254.771 18.6934 259.331 17.6094 263.954 17.6094C268.578 17.6094 273.137 18.6934 277.266 20.7743C281.354 22.8405 284.822 25.9539 287.316 29.7971C289.878 33.6929 291.218 38.2646 291.166 42.927C291.166 50.8878 288.611 57.4031 283.5 62.4728C278.389 67.5425 271.874 70.0762 263.954 70.0739C256.039 70.0739 249.531 67.5402 244.429 62.4728C239.327 57.4054 236.771 50.8901 236.759 42.927C236.702 38.2664 238.037 33.6948 240.592 29.7971C243.087 25.9546 246.554 22.8415 250.643 20.7743V20.7743ZM273.744 33.9077C271.105 31.3939 267.6 29.9918 263.956 29.9918C260.311 29.9918 256.806 31.3939 254.168 33.9077C251.427 36.5179 250.057 39.5414 250.057 42.9783C250.057 47.1574 251.405 50.6492 254.102 53.4535C255.376 54.7841 256.905 55.8431 258.598 56.5666C260.292 57.29 262.114 57.663 263.956 57.663C265.797 57.663 267.62 57.29 269.313 56.5666C271.007 55.8431 272.536 54.7841 273.809 53.4535C276.506 50.6492 277.855 47.1574 277.855 42.9783C277.855 39.5529 276.485 36.5293 273.744 33.9077Z" fill="#111111"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.0 KiB |
3
packages/renderer/assets/markets.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8.02888 9.38354C8.08123 9.85966 7.74098 10.2829 7.29603 10.3358L2.19219 10.9971C1.4855 11.0764 0.883514 10.468 0.988208 9.72741L1.72107 4.75459C1.79959 4.27847 2.21836 3.96106 2.68949 4.04041H2.71566C3.18678 4.11976 3.50087 4.54298 3.42235 5.0191L3.02974 7.71712L10.4107 0.257899C10.7509 -0.0859662 11.3006 -0.0859662 11.6408 0.257899C11.9811 0.601763 11.9811 1.15724 11.6408 1.5011L4.20755 9.01323L7.06046 8.64291C7.53159 8.56356 7.97654 8.90742 8.02888 9.38354ZM12.0596 8.77517V8.82807C12.1381 9.30419 12.5569 9.6216 13.028 9.54225L15.5407 9.17193L8.29062 16.4989C7.95036 16.8428 7.95036 17.3982 8.29062 17.7421C8.63088 18.086 9.18052 18.086 9.52077 17.7421L17.0326 10.1242L16.64 13.1661C16.5876 13.6422 16.9017 14.0654 17.399 14.1447C17.8701 14.1976 18.2889 13.8538 18.3412 13.4041L18.9694 8.27259C19.0479 7.55841 18.4459 6.95004 17.7131 7.05584L12.7663 7.79647C12.2952 7.84938 11.9811 8.29905 12.0596 8.77517Z" fill="#111111"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.0 KiB |
3
packages/renderer/assets/notifications.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8.17672 15C8.25963 15.75 8.89547 16.3333 9.66756 16.3333C10.4397 16.3333 11.0755 15.75 11.1584 15H8.17672ZM12.8299 15C12.7433 16.6714 11.3606 18 9.66756 18C7.97457 18 6.59188 16.6714 6.50521 15H2.33469C1.506 15 0.834229 14.3291 0.834229 13.5006V13.1661C0.834229 11.9577 1.69325 10.9498 2.83423 10.7172V6.83308C2.83423 3.05831 5.89317 0 9.66756 0C13.442 0 16.5009 3.05903 16.5009 6.83308V10.717C17.6432 10.9492 18.5009 11.9566 18.5009 13.1661V13.5006C18.5009 14.3312 17.8292 15 17.0004 15H12.8299ZM16.8342 13.1661C16.8342 12.7054 16.4618 12.3333 15.9978 12.3333C15.3547 12.3333 14.8342 11.809 14.8342 11.1691V6.83308C14.8342 3.97949 12.5215 1.66667 9.66756 1.66667C6.81357 1.66667 4.5009 3.97886 4.5009 6.83308V11.1691C4.5009 11.8118 3.97775 12.3333 3.3373 12.3333C2.87514 12.3333 2.5009 12.7068 2.5009 13.1661V13.3333H16.8342V13.1661Z" fill="#111111"/>
|
||||
</svg>
|
After Width: | Height: | Size: 966 B |
4
packages/renderer/assets/offers.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M18.457 10.2735L18.457 10.2735C18.8261 10.6429 19.0334 11.1436 19.0334 11.6658C19.0334 12.1879 18.8261 12.6887 18.457 13.058L18.457 13.058L12.8927 18.6223L18.457 10.2735ZM18.457 10.2735L9.5618 1.37834C9.56163 1.37816 9.56146 1.37799 9.56129 1.37781C9.3794 1.19329 9.16239 1.0471 8.92305 0.947862C8.68371 0.848621 8.4269 0.798359 8.16781 0.800041H2.60375C2.08141 0.800041 1.58047 1.00754 1.21112 1.37689C0.841768 1.74624 0.634269 2.24718 0.634269 2.76952V8.33358C0.632587 8.59267 0.68285 8.84948 0.782091 9.08882C0.881327 9.32816 1.02752 9.54518 1.21204 9.72706C1.21221 9.72723 1.21239 9.7274 1.21256 9.72758L10.1067 18.6217C10.1068 18.6219 10.107 18.6221 10.1072 18.6223C10.2891 18.8067 10.5061 18.9529 10.7454 19.0521C10.9847 19.1514 11.2414 19.2016 11.5004 19.2M18.457 10.2735L11.5004 19.2M11.5004 19.2C11.759 19.2005 12.0151 19.1497 12.254 19.0507C12.4929 18.9516 12.7099 18.8062 12.8922 18.6227L11.5004 19.2ZM11.5004 19.2C11.5001 19.2 11.4998 19.2 11.4995 19.2L11.5 19L11.5004 19.2ZM1.94952 8.33509V8.33425V2.76952C1.94952 2.59601 2.01845 2.4296 2.14114 2.30691C2.26383 2.18422 2.43024 2.11529 2.60375 2.11529H8.16237V2.1153L8.16441 2.11528C8.25096 2.1144 8.33681 2.13086 8.41689 2.16369C8.49698 2.19653 8.56967 2.24507 8.63069 2.30646L8.63131 2.30707L17.5397 11.1911L17.5397 11.1911L17.5421 11.1934C17.6047 11.2538 17.6545 11.3263 17.6885 11.4064C17.7225 11.4865 17.74 11.5726 17.74 11.6597C17.74 11.7467 17.7225 11.8328 17.6885 11.9129C17.6545 11.993 17.6047 12.0655 17.5421 12.1259L17.542 12.1259L17.5396 12.1284L11.9748 17.6931L11.9748 17.6931L11.9724 17.6956C11.9119 17.7582 11.8395 17.808 11.7594 17.842C11.6793 17.8761 11.5931 17.8936 11.5061 17.8936C11.4191 17.8936 11.3329 17.8761 11.2528 17.842C11.1727 17.808 11.1003 17.7582 11.0398 17.6956L11.0373 17.6931L2.14153 8.80341C2.14146 8.80335 2.1414 8.80328 2.14133 8.80321C2.08019 8.74166 2.03178 8.66865 1.99887 8.58838C1.96592 8.50802 1.94915 8.42194 1.94952 8.33509Z" fill="#111" />
|
||||
<path d="M5.00167 6.08293C5.50715 6.08293 5.91692 5.67316 5.91692 5.16769C5.91692 4.66221 5.50715 4.25244 5.00167 4.25244C4.4962 4.25244 4.08643 4.66221 4.08643 5.16769C4.08643 5.67316 4.4962 6.08293 5.00167 6.08293Z" fill="#111"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
5
packages/renderer/assets/trades.svg
Normal file
@ -0,0 +1,5 @@
|
||||
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.7537 1.60001H1.63423C1.19243 1.60001 0.834229 1.2418 0.834229 0.800003C0.834229 0.358201 1.19243 0 1.63423 0H17.7537C18.1955 0 18.5537 0.358201 18.5537 0.800003C18.5537 1.2418 18.1955 1.60001 17.7537 1.60001Z" fill="#111111"/>
|
||||
<path d="M17.7537 9.60001H1.63423C1.19243 9.60001 0.834229 9.2418 0.834229 8.8C0.834229 8.3582 1.19243 8 1.63423 8H17.7537C18.1955 8 18.5537 8.3582 18.5537 8.8C18.5537 9.2418 18.1955 9.60001 17.7537 9.60001Z" fill="#111111"/>
|
||||
<path d="M17.7537 17.6H1.63423C1.19243 17.6 0.834229 17.2418 0.834229 16.8C0.834229 16.3582 1.19243 16 1.63423 16H17.7537C18.1955 16 18.5537 16.3582 18.5537 16.8C18.5537 17.2418 18.1955 17.6 17.7537 17.6Z" fill="#111111"/>
|
||||
</svg>
|
After Width: | Height: | Size: 792 B |
11
packages/renderer/assets/xmr-logo-1.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_3508_17165)">
|
||||
<path d="M10.0026 0C4.4815 0 -0.00311409 4.48323 0.0039145 9.9987C0.00529892 11.1022 0.18128 12.1636 0.51157 13.1565H3.5034V4.74512L10.0026 11.2436L16.5015 4.74512V13.1567H19.494C19.8247 12.1639 19.9998 11.1024 20.0018 9.99885C20.0112 4.47764 15.5243 0.00133103 10.0026 0.00133103V0Z" fill="#111111"/>
|
||||
<path d="M8.50535 12.7375L5.66905 9.90137V15.1943H3.50057L1.45435 15.1946C3.20952 18.0739 6.38154 20 9.99999 20C13.6184 20 16.7906 18.0735 18.5461 15.1942H14.3303V9.90137L11.4938 12.7375L9.99967 14.2315L8.50545 12.7375H8.50535Z" fill="#111111"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_3508_17165">
|
||||
<rect width="20" height="20" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 799 B |
@ -7,7 +7,7 @@
|
||||
content="script-src 'self' blob:"
|
||||
/>
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
|
||||
<title>Vite App</title>
|
||||
<title>Haveno</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
@ -15,19 +15,23 @@
|
||||
// =============================================================================
|
||||
|
||||
import { Routes, Route } from "react-router-dom";
|
||||
import { Home } from "@pages/Home";
|
||||
import { Page2 } from "@pages/Page2";
|
||||
import { Home, Welcome } from "@pages/Onboarding";
|
||||
import { Wallet } from "@pages/Wallet";
|
||||
|
||||
export const ROUTES = {
|
||||
Home: "/",
|
||||
Page2: "page2",
|
||||
Welcome: "/onboarding/welcome",
|
||||
RestoreBackup: "/onboarding/restore-backup",
|
||||
SetupAccount: "/onboarding/setup",
|
||||
Wallet: "/wallet",
|
||||
};
|
||||
|
||||
export function AppRoutes() {
|
||||
return (
|
||||
<Routes>
|
||||
<Route path={ROUTES.Home} element={<Home />} />
|
||||
<Route path={ROUTES.Page2} element={<Page2 />} />
|
||||
<Route path={ROUTES.Welcome} element={<Welcome />} />
|
||||
<Route path={ROUTES.Wallet} element={<Wallet />} />
|
||||
</Routes>
|
||||
);
|
||||
}
|
||||
|
@ -17,12 +17,8 @@
|
||||
import type { FC } from "react";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { IntlProvider as ReacIntlProvider } from "react-intl";
|
||||
import type { LangKeys } from "@src/constants/lang/LangKeys";
|
||||
|
||||
const SupportedLocales = {
|
||||
EN: "en",
|
||||
ES: "es",
|
||||
};
|
||||
import type { LangKeys } from "@src/constants/lang";
|
||||
import { LangPack, SupportedLocales } from "@src/constants/lang";
|
||||
|
||||
const DEFAULT_LOCALE = SupportedLocales.EN;
|
||||
|
||||
@ -37,12 +33,7 @@ export const IntlProvider: FC = ({ children }) => {
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
console.log(navigator.language);
|
||||
import(/* @vite-ignore */ `../../../constants/lang/${locale}.ts`).then(
|
||||
(val) => {
|
||||
setMessages(val.default);
|
||||
}
|
||||
);
|
||||
setMessages(LangPack[locale] ?? LangPack[DEFAULT_LOCALE]);
|
||||
}, [locale]);
|
||||
|
||||
return (
|
@ -0,0 +1,31 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import type { FC } from "react";
|
||||
import { QueryClient, QueryClientProvider as QCProvider } from "react-query";
|
||||
|
||||
const queryClient = new QueryClient({
|
||||
defaultOptions: {
|
||||
queries: {
|
||||
refetchOnWindowFocus: false,
|
||||
staleTime: 60 * 1000, // 60 sec
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export const QueryClientProvider: FC = ({ children }) => (
|
||||
<QCProvider client={queryClient}>{children}</QCProvider>
|
||||
);
|
@ -14,19 +14,15 @@
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Link } from "react-router-dom";
|
||||
import { ROUTES } from "@src/Routes";
|
||||
import { FormattedMessage } from "react-intl";
|
||||
import { LangKeys } from "@constants/lang/LangKeys";
|
||||
import type { FC } from "react";
|
||||
import { MantineProvider, Global } from "@mantine/core";
|
||||
import { themeOverride, globalStyles } from "@src/theme";
|
||||
|
||||
export function Home() {
|
||||
export const ThemeProvider: FC = ({ children }) => {
|
||||
return (
|
||||
<div>
|
||||
<h1>Home</h1>
|
||||
<h2>
|
||||
<FormattedMessage id={LangKeys.AppTitle} defaultMessage="welcome" />
|
||||
</h2>
|
||||
<Link to={ROUTES.Page2}>Page 2</Link>
|
||||
</div>
|
||||
<MantineProvider theme={themeOverride}>
|
||||
<Global styles={globalStyles} />
|
||||
{children}
|
||||
</MantineProvider>
|
||||
);
|
||||
}
|
||||
};
|
@ -0,0 +1,31 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import type { FC } from "react";
|
||||
import { RecoilRoot } from "recoil";
|
||||
import { QueryClientProvider } from "./QueryClientProvider";
|
||||
import { IntlProvider } from "./IntlProvider";
|
||||
import { ThemeProvider } from "./ThemeProvider";
|
||||
|
||||
export const AppProviders: FC = ({ children }) => (
|
||||
<RecoilRoot>
|
||||
<IntlProvider>
|
||||
<QueryClientProvider>
|
||||
<ThemeProvider>{children}</ThemeProvider>
|
||||
</QueryClientProvider>
|
||||
</IntlProvider>
|
||||
</RecoilRoot>
|
||||
);
|
@ -0,0 +1,38 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Stack } from "@mantine/core";
|
||||
import type { ComponentStory, ComponentMeta } from "@storybook/react";
|
||||
import { Button } from ".";
|
||||
|
||||
export default {
|
||||
title: "atoms/Buttons",
|
||||
component: Button,
|
||||
} as ComponentMeta<typeof Button>;
|
||||
|
||||
const Template: ComponentStory<typeof Button> = () => {
|
||||
return (
|
||||
<Stack>
|
||||
<Button flavor="primary">Primary</Button>
|
||||
<Button flavor="neutral">Neutral</Button>
|
||||
<Button flavor="success">Success</Button>
|
||||
<Button flavor="danger">Error</Button>
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
||||
export const Default = Template.bind({});
|
||||
Default.args = {};
|
@ -0,0 +1,41 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { render } from "@testing-library/react";
|
||||
import { Button } from ".";
|
||||
|
||||
describe("atoms::Buttons", () => {
|
||||
it("renders primary button by default", () => {
|
||||
const { asFragment } = render(<Button>Primary</Button>);
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it("renders neutral button", () => {
|
||||
const { asFragment } = render(<Button flavor="neutral">Neutral</Button>);
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it("renders success button", () => {
|
||||
const { asFragment } = render(<Button flavor="success">Success</Button>);
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it("renders error button", () => {
|
||||
const { asFragment } = render(<Button flavor="danger">Error</Button>);
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
});
|
69
packages/renderer/src/components/atoms/Buttons/Buttons.tsx
Normal file
@ -0,0 +1,69 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import type { ButtonProps as MButtonProps } from "@mantine/core";
|
||||
import { Button as MButton, createStyles } from "@mantine/core";
|
||||
|
||||
type ButtonProps<TComponent> = MButtonProps<TComponent> & {
|
||||
flavor?: "primary" | "neutral" | "success" | "danger";
|
||||
};
|
||||
|
||||
export function Button<TComponent = "button">(props: ButtonProps<TComponent>) {
|
||||
const { children, flavor = "primary", ...rest } = props;
|
||||
const { classes, cx } = useStyles();
|
||||
|
||||
return (
|
||||
<MButton
|
||||
className={cx(
|
||||
classes.common,
|
||||
{ [classes.neutral]: flavor === "neutral" },
|
||||
{ [classes.success]: flavor === "success" },
|
||||
{ [classes.danger]: flavor === "danger" }
|
||||
)}
|
||||
{...rest}
|
||||
>
|
||||
{children}
|
||||
</MButton>
|
||||
);
|
||||
}
|
||||
|
||||
const useStyles = createStyles((theme) => ({
|
||||
common: {
|
||||
borderRadius: 10,
|
||||
fontWeight: 600,
|
||||
height: 48,
|
||||
padding: "1rem",
|
||||
},
|
||||
neutral: {
|
||||
backgroundColor: theme.colors.gray[2],
|
||||
color: theme.colors.gray[9],
|
||||
"&:hover": {
|
||||
backgroundColor: theme.colors.gray[3],
|
||||
},
|
||||
},
|
||||
success: {
|
||||
backgroundColor: theme.colors.green[7],
|
||||
"&:hover": {
|
||||
backgroundColor: theme.colors.green[8],
|
||||
},
|
||||
},
|
||||
danger: {
|
||||
backgroundColor: theme.colors.red[6],
|
||||
"&:hover": {
|
||||
backgroundColor: theme.colors.red[7],
|
||||
},
|
||||
},
|
||||
}));
|
@ -0,0 +1,77 @@
|
||||
// Vitest Snapshot v1
|
||||
|
||||
exports[`atoms::Buttons > renders error button 1`] = `
|
||||
<DocumentFragment>
|
||||
<button
|
||||
class="mantine-Button-filled mantine-Button-root mantine-r1112v"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-3xbgk5 mantine-Button-inner"
|
||||
>
|
||||
<span
|
||||
class="mantine-qo1k2 mantine-Button-label"
|
||||
>
|
||||
Error
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</DocumentFragment>
|
||||
`;
|
||||
|
||||
exports[`atoms::Buttons > renders neutral button 1`] = `
|
||||
<DocumentFragment>
|
||||
<button
|
||||
class="mantine-Button-filled mantine-Button-root mantine-birnp8"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-3xbgk5 mantine-Button-inner"
|
||||
>
|
||||
<span
|
||||
class="mantine-qo1k2 mantine-Button-label"
|
||||
>
|
||||
Neutral
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</DocumentFragment>
|
||||
`;
|
||||
|
||||
exports[`atoms::Buttons > renders primary button by default 1`] = `
|
||||
<DocumentFragment>
|
||||
<button
|
||||
class="mantine-Button-filled mantine-Button-root mantine-idg0bf"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-3xbgk5 mantine-Button-inner"
|
||||
>
|
||||
<span
|
||||
class="mantine-qo1k2 mantine-Button-label"
|
||||
>
|
||||
Primary
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</DocumentFragment>
|
||||
`;
|
||||
|
||||
exports[`atoms::Buttons > renders success button 1`] = `
|
||||
<DocumentFragment>
|
||||
<button
|
||||
class="mantine-Button-filled mantine-Button-root mantine-18w1h4r"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-3xbgk5 mantine-Button-inner"
|
||||
>
|
||||
<span
|
||||
class="mantine-qo1k2 mantine-Button-label"
|
||||
>
|
||||
Success
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</DocumentFragment>
|
||||
`;
|
17
packages/renderer/src/components/atoms/Buttons/index.ts
Normal file
@ -0,0 +1,17 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
export * from "./Buttons";
|
@ -0,0 +1,35 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Stack } from "@mantine/core";
|
||||
import type { ComponentStory, ComponentMeta } from "@storybook/react";
|
||||
import { ConnectionProgress } from ".";
|
||||
|
||||
export default {
|
||||
title: "atoms/ConnectionProgress",
|
||||
component: ConnectionProgress,
|
||||
} as ComponentMeta<typeof ConnectionProgress>;
|
||||
|
||||
const Template: ComponentStory<typeof ConnectionProgress> = () => {
|
||||
return (
|
||||
<Stack>
|
||||
<ConnectionProgress />
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
||||
export const Default = Template.bind({});
|
||||
Default.args = {};
|
@ -0,0 +1,31 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { render } from "@testing-library/react";
|
||||
import { AppProviders } from "@atoms/AppProviders";
|
||||
import { ConnectionProgress } from ".";
|
||||
|
||||
describe("atoms::ConnectionProgress", () => {
|
||||
it("renders without exploding", () => {
|
||||
const { asFragment } = render(
|
||||
<AppProviders>
|
||||
<ConnectionProgress />
|
||||
</AppProviders>
|
||||
);
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
});
|
@ -0,0 +1,59 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Box, createStyles, keyframes, Stack, Text } from "@mantine/core";
|
||||
import { FormattedMessage } from "react-intl";
|
||||
import { LangKeys } from "@constants/lang/LangKeys";
|
||||
|
||||
export function ConnectionProgress() {
|
||||
const { classes } = useStyles();
|
||||
return (
|
||||
<Stack align="center" justify="center">
|
||||
<Text size="sm">
|
||||
<FormattedMessage
|
||||
id={LangKeys.ConnectingToNetwork}
|
||||
defaultMessage="Connecting to Monero Network"
|
||||
/>
|
||||
</Text>
|
||||
<Box className={classes.container}>
|
||||
<Box className={classes.bar} />
|
||||
</Box>
|
||||
</Stack>
|
||||
);
|
||||
}
|
||||
|
||||
const bounce = keyframes({
|
||||
"from, to": { transform: "translate3d(0, 0, 0)" },
|
||||
"50%": { transform: "translate3d(19rem, 0, 0)" },
|
||||
});
|
||||
|
||||
const useStyles = createStyles((theme) => ({
|
||||
container: {
|
||||
background: "rgba(17, 17, 17, 0.15)",
|
||||
borderRadius: 3,
|
||||
height: 6,
|
||||
position: "relative",
|
||||
width: "23rem",
|
||||
},
|
||||
bar: {
|
||||
animation: `${bounce} 3s ease-in-out infinite`,
|
||||
background: theme.colors.brand[5],
|
||||
borderRadius: 3,
|
||||
height: 6,
|
||||
position: "absolute",
|
||||
width: "4rem",
|
||||
},
|
||||
}));
|
@ -0,0 +1,22 @@
|
||||
// Vitest Snapshot v1
|
||||
|
||||
exports[`atoms::ConnectionProgress > renders without exploding 1`] = `
|
||||
<DocumentFragment>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-njf2rt"
|
||||
>
|
||||
<div
|
||||
class="mantine-Text-root mantine-pt30zh"
|
||||
>
|
||||
Connecting to Monero Network
|
||||
</div>
|
||||
<div
|
||||
class="mantine-1p25k2r"
|
||||
>
|
||||
<div
|
||||
class="mantine-5qf5qx"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</DocumentFragment>
|
||||
`;
|
@ -0,0 +1,17 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
export * from "./ConnectionProgress";
|
@ -14,16 +14,21 @@
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Stack } from "@mantine/core";
|
||||
import type { ComponentStory, ComponentMeta } from "@storybook/react";
|
||||
import { Header } from "../Header";
|
||||
import { HeaderWithLogo } from ".";
|
||||
|
||||
export default {
|
||||
title: "atoms/Header",
|
||||
component: Header,
|
||||
} as ComponentMeta<typeof Header>;
|
||||
component: HeaderWithLogo,
|
||||
} as ComponentMeta<typeof HeaderWithLogo>;
|
||||
|
||||
const Template: ComponentStory<typeof Header> = () => {
|
||||
return <Header />;
|
||||
const Template: ComponentStory<typeof HeaderWithLogo> = () => {
|
||||
return (
|
||||
<Stack>
|
||||
<HeaderWithLogo />
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
||||
export const Default = Template.bind({});
|
@ -0,0 +1,31 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { render } from "@testing-library/react";
|
||||
import { AppProviders } from "@atoms/AppProviders";
|
||||
import { HeaderWithLogo } from ".";
|
||||
|
||||
describe("atoms::HeaderWithLogo", () => {
|
||||
it("renders without exploding", () => {
|
||||
const { asFragment } = render(
|
||||
<AppProviders>
|
||||
<HeaderWithLogo />
|
||||
</AppProviders>
|
||||
);
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
});
|
@ -15,13 +15,16 @@
|
||||
// =============================================================================
|
||||
|
||||
import { Box } from "@mantine/core";
|
||||
import { FormattedMessage } from "react-intl";
|
||||
import { LangKeys } from "@constants/lang/LangKeys";
|
||||
import Logo from "@assets/logo.svg";
|
||||
|
||||
export function Header() {
|
||||
export function HeaderWithLogo() {
|
||||
return (
|
||||
<Box component="header">
|
||||
<FormattedMessage id={LangKeys.AppTitle} defaultMessage="Header" />
|
||||
<Box
|
||||
component="header"
|
||||
p="sm"
|
||||
sx={{ alignItems: "center", display: "flex", justifyContent: "center" }}
|
||||
>
|
||||
<img src={Logo} alt="Haveno" height={24} />
|
||||
</Box>
|
||||
);
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
// Vitest Snapshot v1
|
||||
|
||||
exports[`atoms::HeaderWithLogo > renders without exploding 1`] = `
|
||||
<DocumentFragment>
|
||||
<header
|
||||
class="mantine-caub1y"
|
||||
>
|
||||
<img
|
||||
alt="Haveno"
|
||||
height="24"
|
||||
src="/assets/logo.svg"
|
||||
/>
|
||||
</header>
|
||||
</DocumentFragment>
|
||||
`;
|
17
packages/renderer/src/components/atoms/Header/index.ts
Normal file
@ -0,0 +1,17 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
export * from "./HeaderWithLogo";
|
@ -0,0 +1,35 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Stack } from "@mantine/core";
|
||||
import type { ComponentStory, ComponentMeta } from "@storybook/react";
|
||||
import { Sidebar } from ".";
|
||||
|
||||
export default {
|
||||
title: "molecules/Sidebar",
|
||||
component: Sidebar,
|
||||
} as ComponentMeta<typeof Sidebar>;
|
||||
|
||||
const Template: ComponentStory<typeof Sidebar> = () => {
|
||||
return (
|
||||
<Stack>
|
||||
<Sidebar />
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
||||
export const Default = Template.bind({});
|
||||
Default.args = {};
|
@ -0,0 +1,31 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { render } from "@testing-library/react";
|
||||
import { AppProviders } from "@atoms/AppProviders";
|
||||
import { Sidebar } from ".";
|
||||
|
||||
describe("molecules::Sidebar", () => {
|
||||
it("renders without exploding", () => {
|
||||
const { asFragment } = render(
|
||||
<AppProviders>
|
||||
<Sidebar />
|
||||
</AppProviders>
|
||||
);
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
});
|
@ -0,0 +1,54 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Box, createStyles, Navbar, Stack } from "@mantine/core";
|
||||
import { WalletBalance } from "@molecules/WalletBalance";
|
||||
import { ReactComponent as Logo } from "@assets/logo-icon.svg";
|
||||
import { NavLink } from "./_NavLink";
|
||||
import { NAV_LINKS, WIDTH } from "./_constants";
|
||||
|
||||
export function Sidebar() {
|
||||
const { classes } = useStyles();
|
||||
return (
|
||||
<Stack className={classes.container}>
|
||||
<Navbar height="100%" p={0} width={{ base: WIDTH }}>
|
||||
<Navbar.Section>
|
||||
<Box component={Logo} className={classes.logo} />
|
||||
</Navbar.Section>
|
||||
{NAV_LINKS.map((link) => (
|
||||
<Navbar.Section key={link.label}>
|
||||
<NavLink {...link} />
|
||||
</Navbar.Section>
|
||||
))}
|
||||
<Navbar.Section>
|
||||
<Box p="lg">
|
||||
<WalletBalance />
|
||||
</Box>
|
||||
</Navbar.Section>
|
||||
</Navbar>
|
||||
</Stack>
|
||||
);
|
||||
}
|
||||
|
||||
const useStyles = createStyles((theme) => ({
|
||||
logo: {
|
||||
height: 32,
|
||||
padding: `${theme.spacing.lg} ${theme.spacing.xl}`,
|
||||
},
|
||||
container: {
|
||||
width: WIDTH,
|
||||
},
|
||||
}));
|
@ -0,0 +1,88 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import type { ReactNode } from "react";
|
||||
import { UnstyledButton, Group, Text, createStyles } from "@mantine/core";
|
||||
|
||||
interface NavLinkProps {
|
||||
icon: ReactNode;
|
||||
isActive?: boolean;
|
||||
label: string;
|
||||
}
|
||||
|
||||
export function NavLink({ icon, isActive = false, label }: NavLinkProps) {
|
||||
const { classes } = useStyles({ isActive });
|
||||
return (
|
||||
<UnstyledButton className={classes.navLink}>
|
||||
<Group>
|
||||
{icon}
|
||||
<Text
|
||||
className={classes.text}
|
||||
color="gray"
|
||||
size="xs"
|
||||
transform="uppercase"
|
||||
weight={700}
|
||||
>
|
||||
{label}
|
||||
</Text>
|
||||
</Group>
|
||||
</UnstyledButton>
|
||||
);
|
||||
}
|
||||
|
||||
const useStyles = createStyles<string, { isActive: boolean }>(
|
||||
(theme, { isActive }, getRef) => ({
|
||||
navLink: {
|
||||
display: "block",
|
||||
padding: "1.5rem 2.5rem",
|
||||
transition: "opacity 0.2s",
|
||||
width: "100%",
|
||||
|
||||
[`svg, .${getRef("text")}`]: {
|
||||
opacity: isActive ? 1 : 0.5,
|
||||
transition: "opacity 0.2s",
|
||||
},
|
||||
|
||||
svg: isActive
|
||||
? {
|
||||
path: {
|
||||
fill: theme.colors.brand[6],
|
||||
},
|
||||
}
|
||||
: null,
|
||||
|
||||
"&:hover": {
|
||||
backgroundColor:
|
||||
theme.colorScheme === "dark"
|
||||
? theme.colors.dark[6]
|
||||
: theme.colors.gray[0],
|
||||
|
||||
[`svg, .${getRef("text")}`]: {
|
||||
opacity: 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
text: {
|
||||
ref: getRef("text"),
|
||||
color:
|
||||
theme.colorScheme === "dark"
|
||||
? theme.colors.dark[6]
|
||||
: theme.colors.dark[8],
|
||||
|
||||
transition: "opacity 0.2s",
|
||||
},
|
||||
})
|
||||
);
|
@ -0,0 +1,352 @@
|
||||
// Vitest Snapshot v1
|
||||
|
||||
exports[`molecules::Sidebar > renders without exploding 1`] = `
|
||||
<DocumentFragment>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-dczm8e"
|
||||
>
|
||||
<nav
|
||||
class="mantine-Navbar-root mantine-11l21uw"
|
||||
>
|
||||
<div
|
||||
class="mantine-khtkeg"
|
||||
>
|
||||
<svg
|
||||
class="mantine-98j7ht"
|
||||
fill="none"
|
||||
height="1em"
|
||||
viewBox="0 0 23 34"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M7.22164 18.082H16.4458V8.59668H22.8342V33.1724H16.4458V23.1004H7.22164V33.1724H0.834229V8.59766H7.22164V18.082Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
<path
|
||||
d="M11.8585 6.45391C13.6407 6.45391 15.0855 5.00915 15.0855 3.22695C15.0855 1.44476 13.6407 0 11.8585 0C10.0763 0 8.63159 1.44476 8.63159 3.22695C8.63159 5.00915 10.0763 6.45391 11.8585 6.45391Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-khtkeg"
|
||||
>
|
||||
<button
|
||||
class="mantine-UnstyledButton-root mantine-3p8mxz"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-Group-root mantine-6y1794"
|
||||
>
|
||||
<svg
|
||||
class="mantine-gnzaph mantine-Group-child"
|
||||
fill="none"
|
||||
height="1em"
|
||||
viewBox="0 0 19 18"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M8.02888 9.38354C8.08123 9.85966 7.74098 10.2829 7.29603 10.3358L2.19219 10.9971C1.4855 11.0764 0.883514 10.468 0.988208 9.72741L1.72107 4.75459C1.79959 4.27847 2.21836 3.96106 2.68949 4.04041H2.71566C3.18678 4.11976 3.50087 4.54298 3.42235 5.0191L3.02974 7.71712L10.4107 0.257899C10.7509 -0.0859662 11.3006 -0.0859662 11.6408 0.257899C11.9811 0.601763 11.9811 1.15724 11.6408 1.5011L4.20755 9.01323L7.06046 8.64291C7.53159 8.56356 7.97654 8.90742 8.02888 9.38354ZM12.0596 8.77517V8.82807C12.1381 9.30419 12.5569 9.6216 13.028 9.54225L15.5407 9.17193L8.29062 16.4989C7.95036 16.8428 7.95036 17.3982 8.29062 17.7421C8.63088 18.086 9.18052 18.086 9.52077 17.7421L17.0326 10.1242L16.64 13.1661C16.5876 13.6422 16.9017 14.0654 17.399 14.1447C17.8701 14.1976 18.2889 13.8538 18.3412 13.4041L18.9694 8.27259C19.0479 7.55841 18.4459 6.95004 17.7131 7.05584L12.7663 7.79647C12.2952 7.84938 11.9811 8.29905 12.0596 8.77517Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
</svg>
|
||||
<div
|
||||
class="mantine-Text-root mantine-Group-child __mantine-ref-text mantine-2juzrl"
|
||||
>
|
||||
Markets
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-khtkeg"
|
||||
>
|
||||
<button
|
||||
class="mantine-UnstyledButton-root mantine-3p8mxz"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-Group-root mantine-6y1794"
|
||||
>
|
||||
<svg
|
||||
class="mantine-gnzaph mantine-Group-child"
|
||||
fill="none"
|
||||
height="1em"
|
||||
viewBox="0 0 20 20"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M18.457 10.2735L18.457 10.2735C18.8261 10.6429 19.0334 11.1436 19.0334 11.6658C19.0334 12.1879 18.8261 12.6887 18.457 13.058L18.457 13.058L12.8927 18.6223L18.457 10.2735ZM18.457 10.2735L9.5618 1.37834C9.56163 1.37816 9.56146 1.37799 9.56129 1.37781C9.3794 1.19329 9.16239 1.0471 8.92305 0.947862C8.68371 0.848621 8.4269 0.798359 8.16781 0.800041H2.60375C2.08141 0.800041 1.58047 1.00754 1.21112 1.37689C0.841768 1.74624 0.634269 2.24718 0.634269 2.76952V8.33358C0.632587 8.59267 0.68285 8.84948 0.782091 9.08882C0.881327 9.32816 1.02752 9.54518 1.21204 9.72706C1.21221 9.72723 1.21239 9.7274 1.21256 9.72758L10.1067 18.6217C10.1068 18.6219 10.107 18.6221 10.1072 18.6223C10.2891 18.8067 10.5061 18.9529 10.7454 19.0521C10.9847 19.1514 11.2414 19.2016 11.5004 19.2M18.457 10.2735L11.5004 19.2M11.5004 19.2C11.759 19.2005 12.0151 19.1497 12.254 19.0507C12.4929 18.9516 12.7099 18.8062 12.8922 18.6227L11.5004 19.2ZM11.5004 19.2C11.5001 19.2 11.4998 19.2 11.4995 19.2L11.5 19L11.5004 19.2ZM1.94952 8.33509V8.33425V2.76952C1.94952 2.59601 2.01845 2.4296 2.14114 2.30691C2.26383 2.18422 2.43024 2.11529 2.60375 2.11529H8.16237V2.1153L8.16441 2.11528C8.25096 2.1144 8.33681 2.13086 8.41689 2.16369C8.49698 2.19653 8.56967 2.24507 8.63069 2.30646L8.63131 2.30707L17.5397 11.1911L17.5397 11.1911L17.5421 11.1934C17.6047 11.2538 17.6545 11.3263 17.6885 11.4064C17.7225 11.4865 17.74 11.5726 17.74 11.6597C17.74 11.7467 17.7225 11.8328 17.6885 11.9129C17.6545 11.993 17.6047 12.0655 17.5421 12.1259L17.542 12.1259L17.5396 12.1284L11.9748 17.6931L11.9748 17.6931L11.9724 17.6956C11.9119 17.7582 11.8395 17.808 11.7594 17.842C11.6793 17.8761 11.5931 17.8936 11.5061 17.8936C11.4191 17.8936 11.3329 17.8761 11.2528 17.842C11.1727 17.808 11.1003 17.7582 11.0398 17.6956L11.0373 17.6931L2.14153 8.80341C2.14146 8.80335 2.1414 8.80328 2.14133 8.80321C2.08019 8.74166 2.03178 8.66865 1.99887 8.58838C1.96592 8.50802 1.94915 8.42194 1.94952 8.33509Z"
|
||||
fill="#111"
|
||||
/>
|
||||
<path
|
||||
d="M5.00167 6.08293C5.50715 6.08293 5.91692 5.67316 5.91692 5.16769C5.91692 4.66221 5.50715 4.25244 5.00167 4.25244C4.4962 4.25244 4.08643 4.66221 4.08643 5.16769C4.08643 5.67316 4.4962 6.08293 5.00167 6.08293Z"
|
||||
fill="#111"
|
||||
/>
|
||||
</svg>
|
||||
<div
|
||||
class="mantine-Text-root mantine-Group-child __mantine-ref-text mantine-2juzrl"
|
||||
>
|
||||
My Offers
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-khtkeg"
|
||||
>
|
||||
<button
|
||||
class="mantine-UnstyledButton-root mantine-3p8mxz"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-Group-root mantine-6y1794"
|
||||
>
|
||||
<svg
|
||||
class="mantine-gnzaph mantine-Group-child"
|
||||
fill="none"
|
||||
height="1em"
|
||||
viewBox="0 0 19 18"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M17.7537 1.60001H1.63423C1.19243 1.60001 0.834229 1.2418 0.834229 0.800003C0.834229 0.358201 1.19243 0 1.63423 0H17.7537C18.1955 0 18.5537 0.358201 18.5537 0.800003C18.5537 1.2418 18.1955 1.60001 17.7537 1.60001Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
<path
|
||||
d="M17.7537 9.60001H1.63423C1.19243 9.60001 0.834229 9.2418 0.834229 8.8C0.834229 8.3582 1.19243 8 1.63423 8H17.7537C18.1955 8 18.5537 8.3582 18.5537 8.8C18.5537 9.2418 18.1955 9.60001 17.7537 9.60001Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
<path
|
||||
d="M17.7537 17.6H1.63423C1.19243 17.6 0.834229 17.2418 0.834229 16.8C0.834229 16.3582 1.19243 16 1.63423 16H17.7537C18.1955 16 18.5537 16.3582 18.5537 16.8C18.5537 17.2418 18.1955 17.6 17.7537 17.6Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
</svg>
|
||||
<div
|
||||
class="mantine-Text-root mantine-Group-child __mantine-ref-text mantine-2juzrl"
|
||||
>
|
||||
My Trades
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-khtkeg"
|
||||
>
|
||||
<button
|
||||
class="mantine-UnstyledButton-root mantine-3p8mxz"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-Group-root mantine-6y1794"
|
||||
>
|
||||
<svg
|
||||
class="mantine-gnzaph mantine-Group-child"
|
||||
fill="none"
|
||||
height="1em"
|
||||
viewBox="0 0 19 18"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M8.17672 15C8.25963 15.75 8.89547 16.3333 9.66756 16.3333C10.4397 16.3333 11.0755 15.75 11.1584 15H8.17672ZM12.8299 15C12.7433 16.6714 11.3606 18 9.66756 18C7.97457 18 6.59188 16.6714 6.50521 15H2.33469C1.506 15 0.834229 14.3291 0.834229 13.5006V13.1661C0.834229 11.9577 1.69325 10.9498 2.83423 10.7172V6.83308C2.83423 3.05831 5.89317 0 9.66756 0C13.442 0 16.5009 3.05903 16.5009 6.83308V10.717C17.6432 10.9492 18.5009 11.9566 18.5009 13.1661V13.5006C18.5009 14.3312 17.8292 15 17.0004 15H12.8299ZM16.8342 13.1661C16.8342 12.7054 16.4618 12.3333 15.9978 12.3333C15.3547 12.3333 14.8342 11.809 14.8342 11.1691V6.83308C14.8342 3.97949 12.5215 1.66667 9.66756 1.66667C6.81357 1.66667 4.5009 3.97886 4.5009 6.83308V11.1691C4.5009 11.8118 3.97775 12.3333 3.3373 12.3333C2.87514 12.3333 2.5009 12.7068 2.5009 13.1661V13.3333H16.8342V13.1661Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
</svg>
|
||||
<div
|
||||
class="mantine-Text-root mantine-Group-child __mantine-ref-text mantine-2juzrl"
|
||||
>
|
||||
Notifications
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-khtkeg"
|
||||
>
|
||||
<button
|
||||
class="mantine-UnstyledButton-root mantine-3p8mxz"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-Group-root mantine-6y1794"
|
||||
>
|
||||
<svg
|
||||
class="mantine-gnzaph mantine-Group-child"
|
||||
height="1em"
|
||||
viewBox="0 0 18 18"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M8.96198 9.67401C6.30559 9.67401 4.12498 7.49339 4.12498 4.837C4.12498 2.14097 6.26595 0 8.96198 0C11.658 0 13.799 2.18062 13.799 4.837C13.7593 7.49339 11.6184 9.67401 8.96198 9.67401ZM8.96198 1.5859C7.17784 1.5859 5.71088 3.05286 5.71088 4.837C5.71088 6.62115 7.17784 8.08811 8.96198 8.08811C10.7461 8.08811 12.2131 6.62115 12.2131 4.837C12.2131 3.05286 10.7461 1.5859 8.96198 1.5859ZM17.0897 15.1454C17.0897 13.0837 15.3452 10.9031 13.9179 9.43612L12.7682 10.5463C14.5126 12.2907 15.5038 13.9559 15.5038 15.1454V16.4141H2.42013V15.1454C2.42013 13.9559 3.37167 12.2907 5.07652 10.5463L3.92674 9.43612C2.53907 10.9031 0.834229 13.0837 0.834229 15.1454V18H17.0897V15.1454Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
</svg>
|
||||
<div
|
||||
class="mantine-Text-root mantine-Group-child __mantine-ref-text mantine-2juzrl"
|
||||
>
|
||||
Account
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-khtkeg"
|
||||
>
|
||||
<div
|
||||
class="mantine-a3o11y"
|
||||
>
|
||||
<div
|
||||
class="mantine-11cjvdx"
|
||||
>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-lfk3cq"
|
||||
>
|
||||
<div
|
||||
class="mantine-Group-root mantine-1lumg83"
|
||||
>
|
||||
<svg
|
||||
class="mantine-gnzaph mantine-Group-child"
|
||||
fill="none"
|
||||
height="1em"
|
||||
viewBox="0 0 20 20"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<g
|
||||
clip-path="url(#clip0_3508_17165)"
|
||||
>
|
||||
<path
|
||||
d="M10.0026 0C4.4815 0 -0.00311409 4.48323 0.0039145 9.9987C0.00529892 11.1022 0.18128 12.1636 0.51157 13.1565H3.5034V4.74512L10.0026 11.2436L16.5015 4.74512V13.1567H19.494C19.8247 12.1639 19.9998 11.1024 20.0018 9.99885C20.0112 4.47764 15.5243 0.00133103 10.0026 0.00133103V0Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
<path
|
||||
d="M8.50535 12.7375L5.66905 9.90137V15.1943H3.50057L1.45435 15.1946C3.20952 18.0739 6.38154 20 9.99999 20C13.6184 20 16.7906 18.0735 18.5461 15.1942H14.3303V9.90137L11.4938 12.7375L9.99967 14.2315L8.50545 12.7375H8.50535Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clippath
|
||||
id="clip0_3508_17165"
|
||||
>
|
||||
<rect
|
||||
fill="white"
|
||||
height="20"
|
||||
width="20"
|
||||
/>
|
||||
</clippath>
|
||||
</defs>
|
||||
</svg>
|
||||
<div
|
||||
class="mantine-Text-root mantine-Group-child mantine-1ohno7u"
|
||||
>
|
||||
Available Balance
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-1kb6t4k"
|
||||
>
|
||||
<button
|
||||
class="mantine-UnstyledButton-root mantine-1o6jmux"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-Group-root mantine-6y1794"
|
||||
>
|
||||
<div
|
||||
class="mantine-Text-root mantine-Group-child mantine-14ayao3"
|
||||
>
|
||||
10.647382650365
|
||||
</div>
|
||||
<svg
|
||||
class="mantine-gnzaph mantine-Group-child"
|
||||
fill="none"
|
||||
height="1em"
|
||||
viewBox="0 0 7 4"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
clip-rule="evenodd"
|
||||
d="M2.91916 3.69319C3.23963 4.04927 3.76166 4.04657 4.07971 3.69319L6.82329 0.644746C7.14377 0.288661 7.01636 0 6.53811 0H0.460749C-0.0172283 0 -0.14248 0.291357 0.17557 0.644746L2.91916 3.69319Z"
|
||||
fill="#111111"
|
||||
fill-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
<div
|
||||
class="mantine-Text-root mantine-zvjvuq"
|
||||
>
|
||||
(EUR 2441,02)
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
aria-hidden="true"
|
||||
class="mantine-1avyp1d"
|
||||
style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;"
|
||||
>
|
||||
<div
|
||||
style="opacity: 0; transition: opacity 200ms ease;"
|
||||
>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-lfk3cq"
|
||||
>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-1kb6t4k"
|
||||
>
|
||||
<div
|
||||
class="mantine-Text-root mantine-ywyx71"
|
||||
>
|
||||
Total
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Text-root mantine-1lh77dt"
|
||||
>
|
||||
14.048212174412
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-1kb6t4k"
|
||||
>
|
||||
<div
|
||||
class="mantine-Text-root mantine-ywyx71"
|
||||
>
|
||||
Reserved
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Text-root mantine-1lh77dt"
|
||||
>
|
||||
2.874598526325
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-1kb6t4k"
|
||||
>
|
||||
<div
|
||||
class="mantine-Text-root mantine-ywyx71"
|
||||
>
|
||||
Locked
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Text-root mantine-1lh77dt"
|
||||
>
|
||||
0.854975624859
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</DocumentFragment>
|
||||
`;
|
@ -0,0 +1,46 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { ReactComponent as MarketsIcon } from "@assets/markets.svg";
|
||||
import { ReactComponent as OffersIcon } from "@assets/offers.svg";
|
||||
import { ReactComponent as TradesIcon } from "@assets/trades.svg";
|
||||
import { ReactComponent as NotificationsIcon } from "@assets/notifications.svg";
|
||||
import { ReactComponent as AccountIcon } from "@assets/account.svg";
|
||||
|
||||
export const WIDTH = 210;
|
||||
|
||||
export const NAV_LINKS = [
|
||||
{
|
||||
icon: <MarketsIcon />,
|
||||
label: "Markets",
|
||||
},
|
||||
{
|
||||
icon: <OffersIcon />,
|
||||
label: "My Offers",
|
||||
},
|
||||
{
|
||||
icon: <TradesIcon />,
|
||||
label: "My Trades",
|
||||
},
|
||||
{
|
||||
icon: <NotificationsIcon />,
|
||||
label: "Notifications",
|
||||
},
|
||||
{
|
||||
icon: <AccountIcon />,
|
||||
label: "Account",
|
||||
},
|
||||
];
|
17
packages/renderer/src/components/molecules/Sidebar/index.ts
Normal file
@ -0,0 +1,17 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
export * from "./Sidebar";
|
@ -0,0 +1,35 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Stack } from "@mantine/core";
|
||||
import type { ComponentStory, ComponentMeta } from "@storybook/react";
|
||||
import { WalletBalance } from ".";
|
||||
|
||||
export default {
|
||||
title: "molecules/WalletBalance",
|
||||
component: WalletBalance,
|
||||
} as ComponentMeta<typeof WalletBalance>;
|
||||
|
||||
const Template: ComponentStory<typeof WalletBalance> = () => {
|
||||
return (
|
||||
<Stack>
|
||||
<WalletBalance />
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
||||
export const Default = Template.bind({});
|
||||
Default.args = {};
|
@ -0,0 +1,31 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { render } from "@testing-library/react";
|
||||
import { AppProviders } from "@atoms/AppProviders";
|
||||
import { WalletBalance } from ".";
|
||||
|
||||
describe("molecules::WalletBalance", () => {
|
||||
it("renders without exploding", () => {
|
||||
const { asFragment } = render(
|
||||
<AppProviders>
|
||||
<WalletBalance />
|
||||
</AppProviders>
|
||||
);
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
});
|
||||
});
|
@ -0,0 +1,115 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { useState } from "react";
|
||||
import {
|
||||
Box,
|
||||
Collapse,
|
||||
createStyles,
|
||||
Group,
|
||||
Stack,
|
||||
Text,
|
||||
UnstyledButton,
|
||||
} from "@mantine/core";
|
||||
import { ReactComponent as XMRLogo } from "@assets/xmr-logo-1.svg";
|
||||
import { ReactComponent as ArrowDown } from "@assets/arrow-down.svg";
|
||||
|
||||
export function WalletBalance() {
|
||||
const [isOpen, setOpen] = useState(false);
|
||||
const { classes } = useStyles({ isOpen });
|
||||
return (
|
||||
<Box className={classes.container}>
|
||||
<Stack>
|
||||
<Group spacing="sm">
|
||||
<XMRLogo />
|
||||
<Text className={classes.heading} weight={700}>
|
||||
Available Balance
|
||||
</Text>
|
||||
</Group>
|
||||
<Stack spacing={4}>
|
||||
<UnstyledButton
|
||||
className={classes.btnToggle}
|
||||
onClick={() => setOpen(!isOpen)}
|
||||
>
|
||||
<Group>
|
||||
<Text className={classes.xmr}>10.647382650365</Text>
|
||||
<ArrowDown />
|
||||
</Group>
|
||||
</UnstyledButton>
|
||||
<Text className={classes.fiat}>(EUR 2441,02)</Text>
|
||||
</Stack>
|
||||
<Collapse in={isOpen}>
|
||||
<Stack>
|
||||
<Stack spacing={4}>
|
||||
<Text className={classes.balanceLabel}>Total</Text>
|
||||
<Text className={classes.balanceValue}>14.048212174412</Text>
|
||||
</Stack>
|
||||
<Stack spacing={4}>
|
||||
<Text className={classes.balanceLabel}>Reserved</Text>
|
||||
<Text className={classes.balanceValue}>2.874598526325</Text>
|
||||
</Stack>
|
||||
<Stack spacing={4}>
|
||||
<Text className={classes.balanceLabel}>Locked</Text>
|
||||
<Text className={classes.balanceValue}>0.854975624859</Text>
|
||||
</Stack>
|
||||
</Stack>
|
||||
</Collapse>
|
||||
</Stack>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
const useStyles = createStyles<string, { isOpen: boolean }>(
|
||||
(theme, params) => ({
|
||||
container: {
|
||||
border: `solid 1px ${theme.colors.gray[4]}`,
|
||||
borderRadius: theme.radius.md,
|
||||
padding: theme.spacing.md,
|
||||
},
|
||||
heading: {
|
||||
fontSize: "0.5rem",
|
||||
fontWeight: 700,
|
||||
textTransform: "uppercase",
|
||||
},
|
||||
btnToggle: {
|
||||
svg: {
|
||||
transform: `rotate(${params.isOpen ? 180 : 0}deg)`,
|
||||
transition: "transform 0.2s",
|
||||
width: 8,
|
||||
},
|
||||
},
|
||||
xmr: {
|
||||
fontSize: "0.75rem",
|
||||
fontWeight: 600,
|
||||
},
|
||||
fiat: {
|
||||
color: theme.colors.gray[6],
|
||||
fontSize: "0.625rem",
|
||||
fontWeight: 500,
|
||||
},
|
||||
balanceLabel: {
|
||||
color: theme.colors.gray[6],
|
||||
fontSize: "0.625rem",
|
||||
fontWeight: 700,
|
||||
textTransform: "uppercase",
|
||||
},
|
||||
balanceValue: {
|
||||
color: theme.colors.gray[8],
|
||||
fontSize: "0.625rem",
|
||||
fontWeight: 600,
|
||||
},
|
||||
})
|
||||
);
|
@ -0,0 +1,149 @@
|
||||
// Vitest Snapshot v1
|
||||
|
||||
exports[`molecules::WalletBalance > renders without exploding 1`] = `
|
||||
<DocumentFragment>
|
||||
<div
|
||||
class="mantine-11cjvdx"
|
||||
>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-lfk3cq"
|
||||
>
|
||||
<div
|
||||
class="mantine-Group-root mantine-1lumg83"
|
||||
>
|
||||
<svg
|
||||
class="mantine-gnzaph mantine-Group-child"
|
||||
fill="none"
|
||||
height="1em"
|
||||
viewBox="0 0 20 20"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<g
|
||||
clip-path="url(#clip0_3508_17165)"
|
||||
>
|
||||
<path
|
||||
d="M10.0026 0C4.4815 0 -0.00311409 4.48323 0.0039145 9.9987C0.00529892 11.1022 0.18128 12.1636 0.51157 13.1565H3.5034V4.74512L10.0026 11.2436L16.5015 4.74512V13.1567H19.494C19.8247 12.1639 19.9998 11.1024 20.0018 9.99885C20.0112 4.47764 15.5243 0.00133103 10.0026 0.00133103V0Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
<path
|
||||
d="M8.50535 12.7375L5.66905 9.90137V15.1943H3.50057L1.45435 15.1946C3.20952 18.0739 6.38154 20 9.99999 20C13.6184 20 16.7906 18.0735 18.5461 15.1942H14.3303V9.90137L11.4938 12.7375L9.99967 14.2315L8.50545 12.7375H8.50535Z"
|
||||
fill="#111111"
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clippath
|
||||
id="clip0_3508_17165"
|
||||
>
|
||||
<rect
|
||||
fill="white"
|
||||
height="20"
|
||||
width="20"
|
||||
/>
|
||||
</clippath>
|
||||
</defs>
|
||||
</svg>
|
||||
<div
|
||||
class="mantine-Text-root mantine-Group-child mantine-1ohno7u"
|
||||
>
|
||||
Available Balance
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-1kb6t4k"
|
||||
>
|
||||
<button
|
||||
class="mantine-UnstyledButton-root mantine-1o6jmux"
|
||||
type="button"
|
||||
>
|
||||
<div
|
||||
class="mantine-Group-root mantine-6y1794"
|
||||
>
|
||||
<div
|
||||
class="mantine-Text-root mantine-Group-child mantine-14ayao3"
|
||||
>
|
||||
10.647382650365
|
||||
</div>
|
||||
<svg
|
||||
class="mantine-gnzaph mantine-Group-child"
|
||||
fill="none"
|
||||
height="1em"
|
||||
viewBox="0 0 7 4"
|
||||
width="1em"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
clip-rule="evenodd"
|
||||
d="M2.91916 3.69319C3.23963 4.04927 3.76166 4.04657 4.07971 3.69319L6.82329 0.644746C7.14377 0.288661 7.01636 0 6.53811 0H0.460749C-0.0172283 0 -0.14248 0.291357 0.17557 0.644746L2.91916 3.69319Z"
|
||||
fill="#111111"
|
||||
fill-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
<div
|
||||
class="mantine-Text-root mantine-zvjvuq"
|
||||
>
|
||||
(EUR 2441,02)
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
aria-hidden="true"
|
||||
class="mantine-1avyp1d"
|
||||
style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;"
|
||||
>
|
||||
<div
|
||||
style="opacity: 0; transition: opacity 200ms ease;"
|
||||
>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-lfk3cq"
|
||||
>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-1kb6t4k"
|
||||
>
|
||||
<div
|
||||
class="mantine-Text-root mantine-ywyx71"
|
||||
>
|
||||
Total
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Text-root mantine-1lh77dt"
|
||||
>
|
||||
14.048212174412
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-1kb6t4k"
|
||||
>
|
||||
<div
|
||||
class="mantine-Text-root mantine-ywyx71"
|
||||
>
|
||||
Reserved
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Text-root mantine-1lh77dt"
|
||||
>
|
||||
2.874598526325
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Stack-root mantine-1kb6t4k"
|
||||
>
|
||||
<div
|
||||
class="mantine-Text-root mantine-ywyx71"
|
||||
>
|
||||
Locked
|
||||
</div>
|
||||
<div
|
||||
class="mantine-Text-root mantine-1lh77dt"
|
||||
>
|
||||
0.854975624859
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</DocumentFragment>
|
||||
`;
|
@ -0,0 +1,17 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
export * from "./WalletBalance";
|
@ -0,0 +1,35 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import type { FC } from "react";
|
||||
import { Container, Stack } from "@mantine/core";
|
||||
import { HeaderWithLogo } from "@atoms/Header";
|
||||
|
||||
interface CenteredLayoutProps {
|
||||
showHeader?: boolean;
|
||||
}
|
||||
|
||||
export const CenteredLayout: FC<CenteredLayoutProps> = (props) => {
|
||||
const { children, showHeader = false } = props;
|
||||
return (
|
||||
<Stack sx={{ width: "100%" }}>
|
||||
{showHeader && <HeaderWithLogo />}
|
||||
<Container p="sm" sx={{ display: "flex", flex: 1 }}>
|
||||
{children}
|
||||
</Container>
|
||||
</Stack>
|
||||
);
|
||||
};
|
@ -0,0 +1,44 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import type { FC } from "react";
|
||||
import { Box, createStyles, Group } from "@mantine/core";
|
||||
import { Sidebar } from "@molecules/Sidebar";
|
||||
|
||||
export const NavbarLayout: FC = (props) => {
|
||||
const { children } = props;
|
||||
const { classes } = useStyles();
|
||||
return (
|
||||
<Group className={classes.container} spacing={0}>
|
||||
<Sidebar />
|
||||
<Box className={classes.contentArea}>{children}</Box>
|
||||
</Group>
|
||||
);
|
||||
};
|
||||
// fcfcfc
|
||||
|
||||
const useStyles = createStyles((theme) => ({
|
||||
container: {
|
||||
flex: 1,
|
||||
alignItems: "stretch",
|
||||
},
|
||||
contentArea: {
|
||||
background: theme.colors.gray[0],
|
||||
display: "flex",
|
||||
flex: 1,
|
||||
padding: theme.spacing.sm,
|
||||
},
|
||||
}));
|
@ -16,5 +16,8 @@
|
||||
|
||||
export enum LangKeys {
|
||||
AppTitle = "app.title",
|
||||
AppHeading2 = "app.heading2",
|
||||
Header = "app.header",
|
||||
ConnectingToNetwork = "app.connectingToNetwork",
|
||||
WelcomeToHaveno = "app.welcomeToHaveno",
|
||||
}
|
||||
|
@ -18,7 +18,11 @@ import { LangKeys } from "./LangKeys";
|
||||
|
||||
const LangPackEN: { [key in LangKeys]: string } = {
|
||||
[LangKeys.AppTitle]: "Welcome",
|
||||
[LangKeys.Header]: "Electron Starter",
|
||||
[LangKeys.AppHeading2]: "Monero based decentralized exchange",
|
||||
[LangKeys.ConnectingToNetwork]: "Connecting to Monero Network",
|
||||
[LangKeys.Header]: "Haveno",
|
||||
[LangKeys.WelcomeToHaveno]:
|
||||
"Welcome to Haveno. The world’s first Monero based decentralised exchange.",
|
||||
};
|
||||
|
||||
export default LangPackEN;
|
||||
|
@ -18,7 +18,11 @@ import { LangKeys } from "./LangKeys";
|
||||
|
||||
const LangPackES: { [key in LangKeys]: string } = {
|
||||
[LangKeys.AppTitle]: "Bienvenido",
|
||||
[LangKeys.Header]: "Electron Starter",
|
||||
[LangKeys.AppHeading2]: "Intercambio descentralizado basado en Monero",
|
||||
[LangKeys.ConnectingToNetwork]: "Conexión a la red Monero",
|
||||
[LangKeys.Header]: "Haveno",
|
||||
[LangKeys.WelcomeToHaveno]:
|
||||
"Bienvenido a Haveno. El primer intercambio descentralizado basado en Monero del mundo.",
|
||||
};
|
||||
|
||||
export default LangPackES;
|
||||
|
29
packages/renderer/src/constants/lang/index.ts
Normal file
@ -0,0 +1,29 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
export * from "./LangKeys";
|
||||
import en from "./en";
|
||||
import es from "./es";
|
||||
|
||||
export const SupportedLocales = {
|
||||
EN: "en",
|
||||
ES: "es",
|
||||
};
|
||||
|
||||
export const LangPack = {
|
||||
[SupportedLocales.EN]: en,
|
||||
[SupportedLocales.EN]: es,
|
||||
};
|
@ -16,31 +16,16 @@
|
||||
|
||||
import { StrictMode } from "react";
|
||||
import ReactDOM from "react-dom";
|
||||
import { QueryClient, QueryClientProvider } from "react-query";
|
||||
import { HashRouter } from "react-router-dom";
|
||||
import { RecoilRoot } from "recoil";
|
||||
import { IntlProvider } from "@atoms/IntlProvider";
|
||||
import { AppRoutes } from "./Routes";
|
||||
|
||||
const queryClient = new QueryClient({
|
||||
defaultOptions: {
|
||||
queries: {
|
||||
refetchOnWindowFocus: false,
|
||||
staleTime: 60 * 1000, // 60 sec
|
||||
},
|
||||
},
|
||||
});
|
||||
import { AppProviders } from "@atoms/AppProviders";
|
||||
|
||||
ReactDOM.render(
|
||||
<HashRouter>
|
||||
<StrictMode>
|
||||
<RecoilRoot>
|
||||
<IntlProvider>
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<AppRoutes />
|
||||
</QueryClientProvider>
|
||||
</IntlProvider>
|
||||
</RecoilRoot>
|
||||
<AppProviders>
|
||||
<AppRoutes />
|
||||
</AppProviders>
|
||||
</StrictMode>
|
||||
</HashRouter>,
|
||||
document.getElementById("app")
|
||||
|
35
packages/renderer/src/pages/Onboarding/Home.stories.tsx
Normal file
@ -0,0 +1,35 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Stack } from "@mantine/core";
|
||||
import type { ComponentStory, ComponentMeta } from "@storybook/react";
|
||||
import { Home } from ".";
|
||||
|
||||
export default {
|
||||
title: "pages/Onboarding/Home",
|
||||
component: Home,
|
||||
} as ComponentMeta<typeof Home>;
|
||||
|
||||
const Template: ComponentStory<typeof Home> = () => {
|
||||
return (
|
||||
<Stack>
|
||||
<Home />
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
||||
export const Default = Template.bind({});
|
||||
Default.args = {};
|
42
packages/renderer/src/pages/Onboarding/Home.tsx
Normal file
@ -0,0 +1,42 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { FormattedMessage } from "react-intl";
|
||||
import { Space, Stack, Text } from "@mantine/core";
|
||||
import { LangKeys } from "@constants/lang/LangKeys";
|
||||
import { CenteredLayout } from "@templates/CenteredLayout";
|
||||
import Logo from "@assets/logo.svg";
|
||||
import { ConnectionProgress } from "@atoms/ConnectionProgress";
|
||||
|
||||
export function Home() {
|
||||
return (
|
||||
<CenteredLayout>
|
||||
<Stack align="center" justify="center" sx={{ flex: 1 }}>
|
||||
<Stack>
|
||||
<img src={Logo} alt="Haveno" />
|
||||
<Text size="lg">
|
||||
<FormattedMessage
|
||||
id={LangKeys.AppHeading2}
|
||||
defaultMessage="Monero based decentralized exchange"
|
||||
/>
|
||||
</Text>
|
||||
</Stack>
|
||||
<Space h="lg" />
|
||||
<ConnectionProgress />
|
||||
</Stack>
|
||||
</CenteredLayout>
|
||||
);
|
||||
}
|
35
packages/renderer/src/pages/Onboarding/Welcome.stories.tsx
Normal file
@ -0,0 +1,35 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Stack } from "@mantine/core";
|
||||
import type { ComponentStory, ComponentMeta } from "@storybook/react";
|
||||
import { Welcome } from ".";
|
||||
|
||||
export default {
|
||||
title: "pages/Onboarding/Welcome",
|
||||
component: Welcome,
|
||||
} as ComponentMeta<typeof Welcome>;
|
||||
|
||||
const Template: ComponentStory<typeof Welcome> = () => {
|
||||
return (
|
||||
<Stack>
|
||||
<Welcome />
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
||||
export const Default = Template.bind({});
|
||||
Default.args = {};
|
51
packages/renderer/src/pages/Onboarding/Welcome.tsx
Normal file
@ -0,0 +1,51 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Stack, Space, Text, Title, Container, Group } from "@mantine/core";
|
||||
import { FormattedMessage } from "react-intl";
|
||||
import { LangKeys } from "@constants/lang/LangKeys";
|
||||
import { CenteredLayout } from "@src/components/templates/CenteredLayout";
|
||||
import { Button } from "@atoms/Buttons";
|
||||
import { CONTENT_MAX_WIDTH } from "./_constants";
|
||||
|
||||
export function Welcome() {
|
||||
return (
|
||||
<CenteredLayout showHeader>
|
||||
<Stack align="center" justify="center" sx={{ flex: 1 }}>
|
||||
<Stack>
|
||||
<Container size={CONTENT_MAX_WIDTH}>
|
||||
<Title order={1}>
|
||||
<FormattedMessage
|
||||
id={LangKeys.WelcomeToHaveno}
|
||||
defaultMessage="Welcome to Haveno. The world’s first Monero based decentralised exchange."
|
||||
/>
|
||||
</Title>
|
||||
</Container>
|
||||
<Container size={CONTENT_MAX_WIDTH}>
|
||||
<Text size="md">
|
||||
Before you can use Haveno, we’re going to set up your account.{" "}
|
||||
</Text>
|
||||
</Container>
|
||||
</Stack>
|
||||
<Space h="lg" />
|
||||
<Group position="left" sx={{ width: CONTENT_MAX_WIDTH }}>
|
||||
<Button>Setup Account</Button>
|
||||
<Button flavor="neutral">Upload Backup</Button>
|
||||
</Group>
|
||||
</Stack>
|
||||
</CenteredLayout>
|
||||
);
|
||||
}
|
17
packages/renderer/src/pages/Onboarding/_constants.ts
Normal file
@ -0,0 +1,17 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
export const CONTENT_MAX_WIDTH = 470;
|
18
packages/renderer/src/pages/Onboarding/index.ts
Normal file
@ -0,0 +1,18 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
export * from "./Home";
|
||||
export * from "./Welcome";
|
35
packages/renderer/src/pages/Wallet/Walet.stories.tsx
Normal file
@ -0,0 +1,35 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { Stack } from "@mantine/core";
|
||||
import type { ComponentStory, ComponentMeta } from "@storybook/react";
|
||||
import { Wallet } from ".";
|
||||
|
||||
export default {
|
||||
title: "pages/Wallet",
|
||||
component: Wallet,
|
||||
} as ComponentMeta<typeof Wallet>;
|
||||
|
||||
const Template: ComponentStory<typeof Wallet> = () => {
|
||||
return (
|
||||
<Stack>
|
||||
<Wallet />
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
||||
export const Default = Template.bind({});
|
||||
Default.args = {};
|
21
packages/renderer/src/pages/Wallet/Wallet.tsx
Normal file
@ -0,0 +1,21 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import { NavbarLayout } from "@templates/NavbarLayout";
|
||||
|
||||
export function Wallet() {
|
||||
return <NavbarLayout></NavbarLayout>;
|
||||
}
|
17
packages/renderer/src/pages/Wallet/index.ts
Normal file
@ -0,0 +1,17 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
export * from "./Wallet";
|
34
packages/renderer/src/theme/global-styles.ts
Normal file
@ -0,0 +1,34 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import InterFont from "@assets/fonts/Inter-Variable.ttf";
|
||||
|
||||
export const globalStyles = {
|
||||
"@font-face": {
|
||||
fontFamily: "Inter",
|
||||
src: `url('${InterFont}')`,
|
||||
fontWeight: "100 800",
|
||||
fontStyle: "normal italic",
|
||||
},
|
||||
body: {
|
||||
margin: 0,
|
||||
padding: 0,
|
||||
},
|
||||
"#app": {
|
||||
display: "flex",
|
||||
minHeight: "100vh",
|
||||
},
|
||||
};
|
18
packages/renderer/src/theme/index.ts
Normal file
@ -0,0 +1,18 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
export * from "./global-styles";
|
||||
export * from "./override";
|
63
packages/renderer/src/theme/override.ts
Normal file
@ -0,0 +1,63 @@
|
||||
// =============================================================================
|
||||
// Copyright 2022 Haveno
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// =============================================================================
|
||||
|
||||
import type { MantineThemeOverride } from "@mantine/core";
|
||||
|
||||
export const themeOverride: MantineThemeOverride = {
|
||||
fontFamily: "Inter",
|
||||
headings: {
|
||||
fontFamily: "Inter",
|
||||
},
|
||||
colors: {
|
||||
brand: [
|
||||
"#dff2ff",
|
||||
"#b2caff",
|
||||
"#b2d4ff",
|
||||
"#83b8fc",
|
||||
"#539bf7",
|
||||
"#257ff4",
|
||||
"#0b65da",
|
||||
"#034fab",
|
||||
"#00387b",
|
||||
"#00224d",
|
||||
],
|
||||
gray: [
|
||||
"#f8f9fa",
|
||||
"#f1f3f5",
|
||||
"#ececec",
|
||||
"#dee2e6",
|
||||
"#ced4da",
|
||||
"#adb5bd",
|
||||
"#868e96",
|
||||
"#495057",
|
||||
"#343a40",
|
||||
"#111111",
|
||||
],
|
||||
success: [
|
||||
"#e8f9eb",
|
||||
"#cbe5cd",
|
||||
"#abd3af",
|
||||
"#8bc08f",
|
||||
"#6bad6d",
|
||||
"#529458",
|
||||
"#3e7347",
|
||||
"#2b5234",
|
||||
"#173220",
|
||||
"#011207",
|
||||
],
|
||||
},
|
||||
primaryColor: "brand",
|
||||
};
|
@ -13,6 +13,7 @@
|
||||
"esModuleInterop": true,
|
||||
"baseUrl": "./src",
|
||||
"paths": {
|
||||
"@assets/*": ["../assets/*"],
|
||||
"@atoms/*": ["components/atoms/*"],
|
||||
"@constants/*": ["constants/*"],
|
||||
"@molecules/*": ["components/molecules/*"],
|
||||
|
@ -33,6 +33,7 @@ const config = {
|
||||
root: PACKAGE_ROOT,
|
||||
resolve: {
|
||||
alias: {
|
||||
"@assets/": join(PACKAGE_ROOT, "assets") + "/",
|
||||
"@atoms/": join(PACKAGE_ROOT, "src", "components", "atoms") + "/",
|
||||
"@constants/": join(PACKAGE_ROOT, "src", "constants") + "/",
|
||||
"@molecules/": join(PACKAGE_ROOT, "src", "components", "molecules") + "/",
|
||||
|
395
yarn.lock
@ -1314,7 +1314,7 @@
|
||||
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
|
||||
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
|
||||
|
||||
"@electron/get@^1.13.0":
|
||||
"@electron/get@^1.0.1", "@electron/get@^1.13.0":
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40"
|
||||
integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==
|
||||
@ -2970,7 +2970,7 @@
|
||||
dependencies:
|
||||
defer-to-connect "^1.0.1"
|
||||
|
||||
"@testing-library/dom@^8.13.0":
|
||||
"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.13.0":
|
||||
version "8.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.13.0.tgz#bc00bdd64c7d8b40841e27a70211399ad3af46f5"
|
||||
integrity sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ==
|
||||
@ -2984,6 +2984,15 @@
|
||||
lz-string "^1.4.4"
|
||||
pretty-format "^27.0.2"
|
||||
|
||||
"@testing-library/react@^12":
|
||||
version "12.1.5"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.5.tgz#bb248f72f02a5ac9d949dea07279095fa577963b"
|
||||
integrity sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
"@testing-library/dom" "^8.0.0"
|
||||
"@types/react-dom" "<18.0.0"
|
||||
|
||||
"@testing-library/user-event@^14.1.1":
|
||||
version "14.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.1.1.tgz#e1ff6118896e4b22af31e5ea2f9da956adde23d8"
|
||||
@ -3180,6 +3189,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
|
||||
integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==
|
||||
|
||||
"@types/node@^12.0.12":
|
||||
version "12.20.49"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.49.tgz#97897a33dd145490f514bbcbccefc178534e360f"
|
||||
integrity sha512-5e6QNb9bkeh4Hni4ktLqUZuUqnGTX/kou2aZkXyxtuYaHXgBm+In1SHR9V+7kDzWzjB08KC2uqt2doDi7cuAAA==
|
||||
|
||||
"@types/node@^14.0.10":
|
||||
version "14.18.13"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.13.tgz#6ad4d9db59e6b3faf98dcfe4ca9d2aec84443277"
|
||||
@ -3794,6 +3808,13 @@ ajv@^8.0.0, ajv@^8.6.3:
|
||||
require-from-string "^2.0.2"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
ansi-align@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
|
||||
integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=
|
||||
dependencies:
|
||||
string-width "^2.0.0"
|
||||
|
||||
ansi-align@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
|
||||
@ -3816,6 +3837,11 @@ ansi-regex@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
|
||||
|
||||
ansi-regex@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
|
||||
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
|
||||
|
||||
ansi-regex@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
||||
@ -4401,6 +4427,19 @@ boolean@^3.0.1:
|
||||
resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
|
||||
integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==
|
||||
|
||||
boxen@^1.2.1:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
|
||||
integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==
|
||||
dependencies:
|
||||
ansi-align "^2.0.0"
|
||||
camelcase "^4.0.0"
|
||||
chalk "^2.0.1"
|
||||
cli-boxes "^1.0.0"
|
||||
string-width "^2.0.0"
|
||||
term-size "^1.2.0"
|
||||
widest-line "^2.0.0"
|
||||
|
||||
boxen@^5.0.0, boxen@^5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50"
|
||||
@ -4776,6 +4815,11 @@ camelcase-keys@^6.2.2:
|
||||
map-obj "^4.0.0"
|
||||
quick-lru "^4.0.1"
|
||||
|
||||
camelcase@^4.0.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
|
||||
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
|
||||
|
||||
camelcase@^5.3.1:
|
||||
version "5.3.1"
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
|
||||
@ -4803,6 +4847,11 @@ capture-exit@^2.0.0:
|
||||
dependencies:
|
||||
rsvp "^4.8.4"
|
||||
|
||||
capture-stack-trace@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d"
|
||||
integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==
|
||||
|
||||
case-sensitive-paths-webpack-plugin@^2.3.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4"
|
||||
@ -4831,7 +4880,7 @@ chai@^4.3.6:
|
||||
pathval "^1.1.1"
|
||||
type-detect "^4.0.5"
|
||||
|
||||
chalk@^2.0.0, chalk@^2.4.1:
|
||||
chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
||||
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
||||
@ -4927,6 +4976,11 @@ chromium-pickle-js@^0.2.0:
|
||||
resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
|
||||
integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=
|
||||
|
||||
ci-info@^1.5.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
|
||||
integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
|
||||
|
||||
ci-info@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
|
||||
@ -4967,6 +5021,11 @@ clean-stack@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
|
||||
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
|
||||
|
||||
cli-boxes@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
|
||||
integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM=
|
||||
|
||||
cli-boxes@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
|
||||
@ -5202,6 +5261,18 @@ config-chain@^1.1.11:
|
||||
ini "^1.3.4"
|
||||
proto-list "~1.2.1"
|
||||
|
||||
configstore@^3.0.0:
|
||||
version "3.1.5"
|
||||
resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.5.tgz#e9af331fadc14dabd544d3e7e76dc446a09a530f"
|
||||
integrity sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==
|
||||
dependencies:
|
||||
dot-prop "^4.2.1"
|
||||
graceful-fs "^4.1.2"
|
||||
make-dir "^1.0.0"
|
||||
unique-string "^1.0.0"
|
||||
write-file-atomic "^2.0.0"
|
||||
xdg-basedir "^3.0.0"
|
||||
|
||||
configstore@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
|
||||
@ -5409,6 +5480,13 @@ create-ecdh@^4.0.0:
|
||||
bn.js "^4.1.0"
|
||||
elliptic "^6.5.3"
|
||||
|
||||
create-error-class@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
|
||||
integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=
|
||||
dependencies:
|
||||
capture-stack-trace "^1.0.0"
|
||||
|
||||
create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
|
||||
@ -5444,6 +5522,15 @@ cross-env@7.0.3:
|
||||
dependencies:
|
||||
cross-spawn "^7.0.1"
|
||||
|
||||
cross-spawn@^5.0.1:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
|
||||
integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
|
||||
dependencies:
|
||||
lru-cache "^4.0.1"
|
||||
shebang-command "^1.2.0"
|
||||
which "^1.2.9"
|
||||
|
||||
cross-spawn@^6.0.0:
|
||||
version "6.0.5"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
||||
@ -5481,6 +5568,11 @@ crypto-browserify@^3.11.0:
|
||||
randombytes "^2.0.0"
|
||||
randomfill "^1.0.3"
|
||||
|
||||
crypto-random-string@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
|
||||
integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
|
||||
|
||||
crypto-random-string@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
|
||||
@ -5886,6 +5978,13 @@ dot-case@^3.0.4:
|
||||
no-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
dot-prop@^4.2.1:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4"
|
||||
integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==
|
||||
dependencies:
|
||||
is-obj "^1.0.0"
|
||||
|
||||
dot-prop@^5.1.0, dot-prop@^5.2.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
|
||||
@ -6042,6 +6141,15 @@ electron@17.1.0:
|
||||
"@types/node" "^14.6.2"
|
||||
extract-zip "^1.0.3"
|
||||
|
||||
electron@^11.1.0:
|
||||
version "11.5.0"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-11.5.0.tgz#f1650543b9d8f2047d3807755bdb120153ed210f"
|
||||
integrity sha512-WjNDd6lGpxyiNjE3LhnFCAk/D9GIj1rU3GSDealVShhkkkPR3Vh4q8ErXGDl1OAO/faomVa10KoFPUN/pLbNxg==
|
||||
dependencies:
|
||||
"@electron/get" "^1.0.1"
|
||||
"@types/node" "^12.0.12"
|
||||
extract-zip "^1.0.3"
|
||||
|
||||
element-resize-detector@^1.2.2:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz#3e6c5982dd77508b5fa7e6d5c02170e26325c9b1"
|
||||
@ -6698,6 +6806,19 @@ exec-sh@^0.3.2:
|
||||
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc"
|
||||
integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==
|
||||
|
||||
execa@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
|
||||
integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
|
||||
dependencies:
|
||||
cross-spawn "^5.0.1"
|
||||
get-stream "^3.0.0"
|
||||
is-stream "^1.1.0"
|
||||
npm-run-path "^2.0.0"
|
||||
p-finally "^1.0.0"
|
||||
signal-exit "^3.0.0"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
execa@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
|
||||
@ -7309,6 +7430,11 @@ get-port@^3.1.0:
|
||||
resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc"
|
||||
integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=
|
||||
|
||||
get-stream@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
||||
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
|
||||
|
||||
get-stream@^4.0.0, get-stream@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
|
||||
@ -7427,7 +7553,7 @@ global-agent@^3.0.0:
|
||||
semver "^7.3.2"
|
||||
serialize-error "^7.0.1"
|
||||
|
||||
global-dirs@^0.1.1:
|
||||
global-dirs@^0.1.0, global-dirs@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
|
||||
integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=
|
||||
@ -7504,6 +7630,23 @@ globby@^9.2.0:
|
||||
pify "^4.0.1"
|
||||
slash "^2.0.0"
|
||||
|
||||
got@^6.7.1:
|
||||
version "6.7.1"
|
||||
resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
|
||||
integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=
|
||||
dependencies:
|
||||
create-error-class "^3.0.0"
|
||||
duplexer3 "^0.1.4"
|
||||
get-stream "^3.0.0"
|
||||
is-redirect "^1.0.0"
|
||||
is-retry-allowed "^1.0.0"
|
||||
is-stream "^1.0.0"
|
||||
lowercase-keys "^1.0.0"
|
||||
safe-buffer "^5.0.1"
|
||||
timed-out "^4.0.0"
|
||||
unzip-response "^2.0.1"
|
||||
url-parse-lax "^1.0.0"
|
||||
|
||||
got@^9.6.0:
|
||||
version "9.6.0"
|
||||
resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
|
||||
@ -8066,7 +8209,7 @@ invariant@^2.2.4:
|
||||
dependencies:
|
||||
loose-envify "^1.0.0"
|
||||
|
||||
ip@^1.1.5:
|
||||
ip@^1.1.4, ip@^1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
|
||||
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
|
||||
@ -8165,6 +8308,13 @@ is-callable@^1.1.4, is-callable@^1.2.4:
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
|
||||
integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
|
||||
|
||||
is-ci@^1.0.10:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
|
||||
integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
|
||||
dependencies:
|
||||
ci-info "^1.5.0"
|
||||
|
||||
is-ci@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
|
||||
@ -8267,6 +8417,11 @@ is-extglob@^2.1.0, is-extglob@^2.1.1:
|
||||
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
||||
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
|
||||
|
||||
is-fullwidth-code-point@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
|
||||
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
|
||||
|
||||
is-fullwidth-code-point@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
|
||||
@ -8296,6 +8451,14 @@ is-hexadecimal@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
|
||||
integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
|
||||
|
||||
is-installed-globally@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
|
||||
integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=
|
||||
dependencies:
|
||||
global-dirs "^0.1.0"
|
||||
is-path-inside "^1.0.0"
|
||||
|
||||
is-installed-globally@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
|
||||
@ -8314,6 +8477,11 @@ is-negative-zero@^2.0.2:
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
|
||||
integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
|
||||
|
||||
is-npm@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
|
||||
integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ=
|
||||
|
||||
is-npm@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8"
|
||||
@ -8338,6 +8506,11 @@ is-number@^7.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||
|
||||
is-obj@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
|
||||
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
|
||||
|
||||
is-obj@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
|
||||
@ -8348,6 +8521,13 @@ is-object@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf"
|
||||
integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==
|
||||
|
||||
is-path-inside@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
|
||||
integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
|
||||
dependencies:
|
||||
path-is-inside "^1.0.1"
|
||||
|
||||
is-path-inside@^3.0.2:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
|
||||
@ -8375,6 +8555,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
||||
dependencies:
|
||||
isobject "^3.0.1"
|
||||
|
||||
is-redirect@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
|
||||
integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=
|
||||
|
||||
is-regex@^1.1.2, is-regex@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
|
||||
@ -8383,6 +8568,11 @@ is-regex@^1.1.2, is-regex@^1.1.4:
|
||||
call-bind "^1.0.2"
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-retry-allowed@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
|
||||
integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
|
||||
|
||||
is-set@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
|
||||
@ -8395,7 +8585,7 @@ is-shared-array-buffer@^1.0.2:
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
|
||||
is-stream@^1.1.0:
|
||||
is-stream@^1.0.0, is-stream@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
|
||||
@ -8834,6 +9024,13 @@ klona@^2.0.4:
|
||||
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
|
||||
integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
|
||||
|
||||
latest-version@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
|
||||
integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=
|
||||
dependencies:
|
||||
package-json "^4.0.0"
|
||||
|
||||
latest-version@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
|
||||
@ -9013,6 +9210,14 @@ lowlight@^1.14.0:
|
||||
fault "^1.0.0"
|
||||
highlight.js "~10.7.0"
|
||||
|
||||
lru-cache@^4.0.1:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
|
||||
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
|
||||
dependencies:
|
||||
pseudomap "^1.0.2"
|
||||
yallist "^2.1.2"
|
||||
|
||||
lru-cache@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
||||
@ -9044,6 +9249,13 @@ magic-string@^0.26.1:
|
||||
dependencies:
|
||||
sourcemap-codec "^1.4.8"
|
||||
|
||||
make-dir@^1.0.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
||||
integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
|
||||
dependencies:
|
||||
pify "^3.0.0"
|
||||
|
||||
make-dir@^2.0.0, make-dir@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
|
||||
@ -9374,7 +9586,7 @@ minimist-options@4.1.0:
|
||||
is-plain-obj "^1.1.0"
|
||||
kind-of "^6.0.3"
|
||||
|
||||
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
|
||||
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6:
|
||||
version "1.2.6"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
|
||||
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
|
||||
@ -9973,6 +10185,16 @@ p-try@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
|
||||
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
||||
|
||||
package-json@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
|
||||
integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=
|
||||
dependencies:
|
||||
got "^6.7.1"
|
||||
registry-auth-token "^3.0.1"
|
||||
registry-url "^3.0.3"
|
||||
semver "^5.1.0"
|
||||
|
||||
package-json@^6.3.0:
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
|
||||
@ -10098,6 +10320,11 @@ path-is-absolute@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
||||
|
||||
path-is-inside@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
|
||||
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
|
||||
|
||||
path-key@^2.0.0, path-key@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
||||
@ -10361,6 +10588,11 @@ prelude-ls@~1.1.2:
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
|
||||
|
||||
prepend-http@^1.0.1:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
|
||||
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
|
||||
|
||||
prepend-http@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
|
||||
@ -10519,6 +10751,11 @@ prr@~1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
|
||||
integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
|
||||
|
||||
pseudomap@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
||||
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
|
||||
|
||||
public-encrypt@^4.0.0:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
|
||||
@ -10663,7 +10900,7 @@ raw-loader@^4.0.2:
|
||||
loader-utils "^2.0.0"
|
||||
schema-utils "^3.0.0"
|
||||
|
||||
rc@^1.2.8:
|
||||
rc@^1.0.1, rc@^1.1.6, rc@^1.2.8:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||
@ -10678,6 +10915,26 @@ react-colorful@^5.1.2:
|
||||
resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.5.1.tgz#29d9c4e496f2ca784dd2bb5053a3a4340cfaf784"
|
||||
integrity sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==
|
||||
|
||||
react-devtools-core@4.24.4:
|
||||
version "4.24.4"
|
||||
resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.4.tgz#adaa54569f87ce7c08384d12e0b35122a755cbae"
|
||||
integrity sha512-jbX8Yqyq4YvFEobHyXVlGaH0Cs/+EOdb3PL911bxaR5BnzbB5TE4RFHC1iOgT4vRH3VxIIrVQ7lR9vsiFFCYCA==
|
||||
dependencies:
|
||||
shell-quote "^1.6.1"
|
||||
ws "^7"
|
||||
|
||||
react-devtools@^4.24.4:
|
||||
version "4.24.4"
|
||||
resolved "https://registry.yarnpkg.com/react-devtools/-/react-devtools-4.24.4.tgz#cbc299ca0100755721d002ca4eb0b72743a0baef"
|
||||
integrity sha512-r2/HZo1LAYrSm1EpJL2NAJZFxWuSgIXTciAICuBhgXlDW5WvZrJpsFa2gaPnVNACFnjRUzDebpSR1gYy2oGdeQ==
|
||||
dependencies:
|
||||
cross-spawn "^5.0.1"
|
||||
electron "^11.1.0"
|
||||
ip "^1.1.4"
|
||||
minimist "^1.2.3"
|
||||
react-devtools-core "4.24.4"
|
||||
update-notifier "^2.1.0"
|
||||
|
||||
react-docgen-typescript@^2.0.0, react-docgen-typescript@^2.1.1:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c"
|
||||
@ -11041,6 +11298,14 @@ regexpu-core@^5.0.1:
|
||||
unicode-match-property-ecmascript "^2.0.0"
|
||||
unicode-match-property-value-ecmascript "^2.0.0"
|
||||
|
||||
registry-auth-token@^3.0.1:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e"
|
||||
integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==
|
||||
dependencies:
|
||||
rc "^1.1.6"
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
registry-auth-token@^4.0.0:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
|
||||
@ -11048,6 +11313,13 @@ registry-auth-token@^4.0.0:
|
||||
dependencies:
|
||||
rc "^1.2.8"
|
||||
|
||||
registry-url@^3.0.3:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
|
||||
integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI=
|
||||
dependencies:
|
||||
rc "^1.0.1"
|
||||
|
||||
registry-url@^5.0.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
|
||||
@ -11405,6 +11677,13 @@ semver-compare@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
|
||||
integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
|
||||
|
||||
semver-diff@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
|
||||
integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=
|
||||
dependencies:
|
||||
semver "^5.0.3"
|
||||
|
||||
semver-diff@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
|
||||
@ -11412,7 +11691,7 @@ semver-diff@^3.1.1:
|
||||
dependencies:
|
||||
semver "^6.3.0"
|
||||
|
||||
"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0:
|
||||
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||
@ -11576,6 +11855,11 @@ shebang-regex@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
|
||||
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
|
||||
|
||||
shell-quote@^1.6.1:
|
||||
version "1.7.3"
|
||||
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
|
||||
integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
|
||||
|
||||
side-channel@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
|
||||
@ -11875,6 +12159,14 @@ stream-shift@^1.0.0:
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.1"
|
||||
|
||||
string-width@^2.0.0, string-width@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
||||
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
|
||||
dependencies:
|
||||
is-fullwidth-code-point "^2.0.0"
|
||||
strip-ansi "^4.0.0"
|
||||
|
||||
"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.6:
|
||||
version "4.0.7"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d"
|
||||
@ -11944,6 +12236,13 @@ strip-ansi@^3.0.1:
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
strip-ansi@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
|
||||
integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
|
||||
dependencies:
|
||||
ansi-regex "^3.0.0"
|
||||
|
||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
@ -12099,6 +12398,13 @@ temp-file@^3.4.0:
|
||||
async-exit-hook "^2.0.1"
|
||||
fs-extra "^10.0.0"
|
||||
|
||||
term-size@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
|
||||
integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=
|
||||
dependencies:
|
||||
execa "^0.7.0"
|
||||
|
||||
terser-webpack-plugin@^1.4.3:
|
||||
version "1.4.5"
|
||||
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b"
|
||||
@ -12209,6 +12515,11 @@ through2@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
||||
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
|
||||
|
||||
timed-out@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
|
||||
integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
|
||||
|
||||
timers-browserify@^2.0.4:
|
||||
version "2.0.12"
|
||||
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
|
||||
@ -12568,6 +12879,13 @@ unique-slug@^2.0.0:
|
||||
dependencies:
|
||||
imurmurhash "^0.1.4"
|
||||
|
||||
unique-string@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
|
||||
integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=
|
||||
dependencies:
|
||||
crypto-random-string "^1.0.0"
|
||||
|
||||
unique-string@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
|
||||
@ -12673,11 +12991,32 @@ unzip-crx-3@^0.2.0:
|
||||
mkdirp "^0.5.1"
|
||||
yaku "^0.16.6"
|
||||
|
||||
unzip-response@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
|
||||
integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
|
||||
|
||||
upath@^1.1.1:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
|
||||
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
|
||||
|
||||
update-notifier@^2.1.0:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6"
|
||||
integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==
|
||||
dependencies:
|
||||
boxen "^1.2.1"
|
||||
chalk "^2.0.1"
|
||||
configstore "^3.0.0"
|
||||
import-lazy "^2.1.0"
|
||||
is-ci "^1.0.10"
|
||||
is-installed-globally "^0.1.0"
|
||||
is-npm "^1.0.0"
|
||||
latest-version "^3.0.0"
|
||||
semver-diff "^2.0.0"
|
||||
xdg-basedir "^3.0.0"
|
||||
|
||||
update-notifier@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9"
|
||||
@ -12719,6 +13058,13 @@ url-loader@^4.1.1:
|
||||
mime-types "^2.1.27"
|
||||
schema-utils "^3.0.0"
|
||||
|
||||
url-parse-lax@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
|
||||
integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=
|
||||
dependencies:
|
||||
prepend-http "^1.0.1"
|
||||
|
||||
url-parse-lax@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
|
||||
@ -13116,6 +13462,13 @@ wide-align@^1.1.2:
|
||||
dependencies:
|
||||
string-width "^1.0.2 || 2 || 3 || 4"
|
||||
|
||||
widest-line@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
|
||||
integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==
|
||||
dependencies:
|
||||
string-width "^2.1.1"
|
||||
|
||||
widest-line@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
|
||||
@ -13161,6 +13514,15 @@ wrappy@1:
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
||||
|
||||
write-file-atomic@^2.0.0:
|
||||
version "2.4.3"
|
||||
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
|
||||
integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==
|
||||
dependencies:
|
||||
graceful-fs "^4.1.11"
|
||||
imurmurhash "^0.1.4"
|
||||
signal-exit "^3.0.2"
|
||||
|
||||
write-file-atomic@^3.0.0:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
|
||||
@ -13176,11 +13538,21 @@ ws@8.4.2:
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b"
|
||||
integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==
|
||||
|
||||
ws@^7:
|
||||
version "7.5.7"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
|
||||
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
|
||||
|
||||
ws@^8.2.3:
|
||||
version "8.5.0"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
|
||||
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
|
||||
|
||||
xdg-basedir@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
|
||||
integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=
|
||||
|
||||
xdg-basedir@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
|
||||
@ -13216,6 +13588,11 @@ yaku@^0.16.6:
|
||||
resolved "https://registry.yarnpkg.com/yaku/-/yaku-0.16.7.tgz#1d195c78aa9b5bf8479c895b9504fd4f0847984e"
|
||||
integrity sha1-HRlceKqbW/hHnIlblQT9TwhHmE4=
|
||||
|
||||
yallist@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
||||
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
|
||||
|
||||
yallist@^3.0.2:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||
|