diff --git a/lingui.config.js b/lingui.config.js new file mode 100644 index 00000000..2110aa36 --- /dev/null +++ b/lingui.config.js @@ -0,0 +1,15 @@ +import { defineConfig } from '@lingui/cli'; +import { formatter } from '@lingui/format-po'; + +export default defineConfig({ + sourceLocale: 'en-US', + locales: ['en-US', 'de-DE', 'zh-CN'], + format: formatter({ printPlaceholdersInComments: false }), + + catalogs: [ + { + path: './src/locales/{locale}/messages', + include: ['src'], + }, + ], +}); diff --git a/package.json b/package.json index 8f1de0e2..54bec178 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,18 @@ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", "prettier": "prettier --write .", - "prettier:check": "prettier --check ." + "prettier:check": "prettier --check .", + "extract": "lingui extract", + "compile": "lingui compile", + "extract:watch": "lingui extract --watch" }, "dependencies": { "@emotion/react": "^11.13.0", "@emotion/styled": "^11.13.0", "@fontsource/roboto": "^5.0.14", "@hookform/resolvers": "^3.9.0", + "@lingui/core": "^5.1.2", + "@lingui/react": "^5.1.2", "@radix-ui/react-checkbox": "^1.1.2", "@radix-ui/react-dialog": "^1.1.1", "@radix-ui/react-dropdown-menu": "^2.1.1", @@ -35,7 +40,6 @@ "@tauri-apps/plugin-clipboard-manager": "2.0.0-rc.1", "@tauri-apps/plugin-os": "^2.0.0", "@tauri-apps/plugin-shell": "2.0.0", - "tauri-plugin-safe-area-insets": "file:./plugins/tauri-plugin-safe-area-insets", "@use-gesture/react": "^10.3.1", "@walletconnect/sign-client": "^2.17.2", "@walletconnect/types": "^2.17.2", @@ -51,11 +55,16 @@ "react-router-dom": "^6.26.0", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7", + "tauri-plugin-safe-area-insets": "file:./plugins/tauri-plugin-safe-area-insets", "usehooks-ts": "^3.1.0", "zod": "^3.23.8", "zustand": "^4.5.5" }, "devDependencies": { + "@lingui/cli": "^5.1.2", + "@lingui/format-po": "^5.1.2", + "@lingui/swc-plugin": "^5.0.1", + "@lingui/vite-plugin": "^5.1.2", "@tauri-apps/cli": "2.0.0-rc.10", "@types/node": "^22.1.0", "@types/react": "^18.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dcb5bbc9..e6b521f4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,12 @@ importers: '@hookform/resolvers': specifier: ^3.9.0 version: 3.9.0(react-hook-form@7.53.0(react@18.3.1)) + '@lingui/core': + specifier: ^5.1.2 + version: 5.1.2(@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4))(babel-plugin-macros@3.1.0) + '@lingui/react': + specifier: ^5.1.2 + version: 5.1.2(@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4))(babel-plugin-macros@3.1.0)(react@18.3.1) '@radix-ui/react-checkbox': specifier: ^1.1.2 version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -132,6 +138,18 @@ importers: specifier: ^4.5.5 version: 4.5.5(@types/react@18.3.3)(react@18.3.1) devDependencies: + '@lingui/cli': + specifier: ^5.1.2 + version: 5.1.2(typescript@5.5.4) + '@lingui/format-po': + specifier: ^5.1.2 + version: 5.1.2(typescript@5.5.4) + '@lingui/swc-plugin': + specifier: ^5.0.1 + version: 5.0.1(@lingui/core@5.1.2(@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4))(babel-plugin-macros@3.1.0)) + '@lingui/vite-plugin': + specifier: ^5.1.2 + version: 5.1.2(typescript@5.5.4)(vite@5.3.5(@types/node@22.1.0)) '@tauri-apps/cli': specifier: 2.0.0-rc.10 version: 2.0.0-rc.10 @@ -187,26 +205,76 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.3': + resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.25.0': resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.26.3': + resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -216,6 +284,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.26.3': + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/runtime-corejs3@7.26.0': resolution: {integrity: sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==} engines: {node: '>=6.9.0'} @@ -228,14 +301,26 @@ packages: resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.3': resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.26.4': + resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} + engines: {node: '>=6.9.0'} + '@babel/types@7.25.2': resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.26.3': + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + engines: {node: '>=6.9.0'} + '@emotion/babel-plugin@11.12.0': resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} @@ -537,6 +622,14 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -555,6 +648,82 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@lingui/babel-plugin-extract-messages@5.1.2': + resolution: {integrity: sha512-w4lX0aR3mvQqwCGZDFbtTDg8BUN2Pf8FQ0NMYWSRG/mQV6AskZn3xY9R6wht9poVr/RfKaPF+9P4jQzAxXUWWw==} + engines: {node: '>=20.0.0'} + + '@lingui/babel-plugin-lingui-macro@5.1.2': + resolution: {integrity: sha512-6hq75WZRvuOeWOM0LplZmKTRYIHn9o8PdAYuymVO+QvRp+mMKKMwf8vWyqdVW+4T/zaknN8WtXRRGw6wcCBHew==} + engines: {node: '>=20.0.0'} + peerDependencies: + babel-plugin-macros: 2 || 3 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + '@lingui/cli@5.1.2': + resolution: {integrity: sha512-PqiDhHmLbeXBmH9Nig6fk0LJXQA0/cr/G2REp60GJ2YBxCvpooE8N2Loi1+dyPX+CGmL4XaQg5Rq5Du9LBP0Gg==} + engines: {node: '>=20.0.0'} + hasBin: true + + '@lingui/conf@5.1.2': + resolution: {integrity: sha512-m0kKiiasvoFLo3cpix+zl1wT4/Wn09+9FHdh7tzuxwcRFWyXgJl1/Ire1Cfumoyve0p4DvtnGygg7meAGm6jJw==} + engines: {node: '>=20.0.0'} + + '@lingui/core@5.1.2': + resolution: {integrity: sha512-biqmMCWuBBj7ERSpgGSV91hTShnSrR/RIFUcNKjWuZYgDd3HpBdEmXKCo9NTanQYbkBUpmyw/bgwsSBex6vkDA==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@lingui/babel-plugin-lingui-macro': 5.1.2 + babel-plugin-macros: 2 || 3 + peerDependenciesMeta: + '@lingui/babel-plugin-lingui-macro': + optional: true + babel-plugin-macros: + optional: true + + '@lingui/format-po@5.1.2': + resolution: {integrity: sha512-fkhAeBnOqceY5CJrtyRN5oBq3/6X2IpIKS+6yzwyWUzmJ5XmW2cwF2xtrcBwEekvtKzyuUZz7Dqc9gM02epSqA==} + engines: {node: '>=20.0.0'} + + '@lingui/message-utils@5.1.2': + resolution: {integrity: sha512-P/N0yBy2MuC726EaGPGiOafc/0RafHiwkvZJdFKjm1/XOMWrFZDPFXTuxguVQ3HQsRi5eUIPaboU4uRX4GepPg==} + engines: {node: '>=20.0.0'} + + '@lingui/react@5.1.2': + resolution: {integrity: sha512-YPAvbPUd+kJrmA9H1LSJ9f6+0hkOlm0w8g+7a8FtE7olamjXd7SyIgJMbeJmvKSdztrrdcLBs9YEftUKTfjiyg==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@lingui/babel-plugin-lingui-macro': 5.1.2 + babel-plugin-macros: 2 || 3 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@lingui/babel-plugin-lingui-macro': + optional: true + babel-plugin-macros: + optional: true + + '@lingui/swc-plugin@5.0.1': + resolution: {integrity: sha512-rb9x/UWk0dibp3VsIwKGjuGPX6CBkcqCsDi/3eIJ0bljAI+YKpKXo2QrMuiPsF2RSXsJy+0ry8GibLBOvTJwxA==} + peerDependencies: + '@lingui/core': '5' + '@swc/core': '*' + next: '*' + peerDependenciesMeta: + '@swc/core': + optional: true + next: + optional: true + + '@lingui/vite-plugin@5.1.2': + resolution: {integrity: sha512-1KDoj03+ie9Td/YYOTjncucwAMVU16RfFpnm1uHvrGGEoRgWfwox4pwTwUbIeksSuecGv757vLeyugThwdyfpA==} + engines: {node: '>=20.0.0'} + peerDependencies: + vite: ^3 || ^4 || ^5.0.9 || ^6 + + '@messageformat/parser@5.1.0': + resolution: {integrity: sha512-jKlkls3Gewgw6qMjKZ9SFfHUpdzEVdovKFtW1qRhJ3WI4FW5R/NnGDqr8SDGz+krWDO3ki94boMmQvGke1HwUQ==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1231,6 +1400,9 @@ packages: cpu: [x64] os: [win32] + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@stablelib/aead@1.0.1': resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} @@ -1454,6 +1626,15 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/node@22.1.0': resolution: {integrity: sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==} @@ -1469,6 +1650,12 @@ packages: '@types/react@18.3.3': resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@typescript-eslint/eslint-plugin@7.18.0': resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -1619,6 +1806,10 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1635,6 +1826,10 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -1678,6 +1873,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + bech32@2.0.0: resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} @@ -1688,6 +1886,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} @@ -1712,6 +1913,14 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.3: + resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1720,9 +1929,16 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + caniuse-lite@1.0.30001662: resolution: {integrity: sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==} + caniuse-lite@1.0.30001690: + resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -1731,6 +1947,13 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.5.1: + resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} + engines: {node: '>= 8.10.0'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -1741,10 +1964,30 @@ packages: class-variance-authority@0.7.0: resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table@0.3.11: + resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} + engines: {node: '>= 0.2.0'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + clipboardy@4.0.0: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} engines: {node: '>=18'} + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + clsx@2.0.0: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} engines: {node: '>=6'} @@ -1766,6 +2009,14 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colors@1.0.3: + resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} + engines: {node: '>=0.1.90'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -1783,6 +2034,9 @@ packages: convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} @@ -1793,6 +2047,15 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1808,6 +2071,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + debug@4.3.6: resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} @@ -1824,6 +2090,9 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} @@ -1864,6 +2133,9 @@ packages: electron-to-chromium@1.5.27: resolution: {integrity: sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw==} + electron-to-chromium@1.5.75: + resolution: {integrity: sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==} + elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -1951,6 +2223,10 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1971,6 +2247,10 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1986,6 +2266,10 @@ packages: find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -2015,6 +2299,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -2038,6 +2326,11 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -2089,9 +2382,16 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + idb-keyval@6.2.1: resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -2115,6 +2415,10 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -2154,6 +2458,10 @@ packages: engines: {node: '>=14.16'} hasBin: true + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2166,6 +2474,10 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} @@ -2180,6 +2492,18 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.0.2: + resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} + engines: {node: 20 || >=22} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jiti@1.21.6: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true @@ -2188,6 +2512,9 @@ packages: resolution: {integrity: sha512-H5UpaUI+aHOqZXlYOaFP/8AzKsg+guWu+Pr3Y8i7+Y3zr1aXAvCvTAQ1RxSc6oVD8R8c7brgNtTVP91E7upH/g==} hasBin: true + js-sha256@0.10.1: + resolution: {integrity: sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==} + js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -2203,6 +2530,11 @@ packages: engines: {node: '>=4'} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -2215,12 +2547,21 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2240,6 +2581,10 @@ packages: resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==} hasBin: true + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -2247,12 +2592,25 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -2260,6 +2618,13 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.0.2: + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lucide-react@0.445.0: resolution: {integrity: sha512-YrLf3aAHvmd4dZ8ot+mMdNFrFpJD7YRwQ2pUcBhgqbmxtrMP4xDzIorcj+8y+6kpuXBF4JB0NOCTUWIYetJjgA==} peerDependencies: @@ -2281,6 +2646,10 @@ packages: engines: {node: '>=10.0.0'} hasBin: true + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -2291,6 +2660,10 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2305,12 +2678,18 @@ packages: mlly@1.7.2: resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} + moo@0.5.2: + resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -2335,6 +2714,9 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -2367,6 +2749,10 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -2375,14 +2761,34 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} @@ -2394,6 +2800,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -2417,6 +2827,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -2455,6 +2869,13 @@ packages: pkg-types@1.2.1: resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + + pofile@1.1.4: + resolution: {integrity: sha512-r6Q21sKsY1AjTVVjOuU02VYKVNQGJNQHjTIvs4dEbeuuYfxgYk/DGD2mqqq4RDaVkwdSq0VEtmQUOPe/wH8X3g==} + postcss-import@15.1.0: resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -2505,12 +2926,21 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + pseudolocale@2.1.0: + resolution: {integrity: sha512-af5fsrRvVwD+MBasBJvuDChT0KDqT0nEwD9NTgbtHJ16FKomWac9ua0z6YVNB4G9x9IOaiGWym62aby6n4tFMA==} + engines: {node: '>=16.0.0'} + hasBin: true + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2528,6 +2958,9 @@ packages: radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + ramda@0.27.2: + resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==} + react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: @@ -2548,6 +2981,9 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-remove-scroll-bar@2.3.6: resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} engines: {node: '>=10'} @@ -2612,6 +3048,10 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readdirp@3.5.0: + resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} + engines: {node: '>=8.10.0'} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -2631,6 +3071,10 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -2645,9 +3089,17 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -2655,9 +3107,16 @@ packages: resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -2671,6 +3130,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -2690,6 +3152,10 @@ packages: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -2788,6 +3254,13 @@ packages: thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -2796,6 +3269,9 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -2819,6 +3295,10 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + typescript@5.5.4: resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} engines: {node: '>=14.17'} @@ -2839,6 +3319,9 @@ packages: unenv@1.10.0: resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + unraw@3.0.0: + resolution: {integrity: sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==} + unstorage@1.13.1: resolution: {integrity: sha512-ELexQHUrG05QVIM/iUeQNdl9FXDZhqLJ4yP59fnmn2jGUh0TEulwOgov1ubOb3Gt2ZGK/VMchJwPDNVEGWQpRg==} peerDependencies: @@ -2893,6 +3376,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} @@ -2961,6 +3450,15 @@ packages: terser: optional: true + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -2993,6 +3491,9 @@ packages: utf-8-validate: optional: true + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -3028,11 +3529,44 @@ snapshots: '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 picocolors: 1.0.1 + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.0 + + '@babel/compat-data@7.26.3': {} + + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.25.0': dependencies: '@babel/types': 7.25.2 @@ -3040,6 +3574,22 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + '@babel/generator@7.26.3': + dependencies: + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.3 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.25.3 @@ -3047,10 +3597,37 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -3062,6 +3639,10 @@ snapshots: dependencies: '@babel/types': 7.25.2 + '@babel/parser@7.26.3': + dependencies: + '@babel/types': 7.26.3 + '@babel/runtime-corejs3@7.26.0': dependencies: core-js-pure: 3.39.0 @@ -3077,6 +3658,12 @@ snapshots: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + '@babel/traverse@7.25.3': dependencies: '@babel/code-frame': 7.24.7 @@ -3089,12 +3676,29 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.26.4': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.25.2': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@babel/types@7.26.3': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@emotion/babel-plugin@11.12.0': dependencies: '@babel/helper-module-imports': 7.24.7 @@ -3425,6 +4029,19 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.1.0 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -3442,6 +4059,118 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@lingui/babel-plugin-extract-messages@5.1.2': {} + + '@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4)': + dependencies: + '@babel/core': 7.26.0 + '@babel/runtime': 7.25.0 + '@babel/types': 7.26.3 + '@lingui/conf': 5.1.2(typescript@5.5.4) + '@lingui/core': 5.1.2(@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4))(babel-plugin-macros@3.1.0) + '@lingui/message-utils': 5.1.2 + optionalDependencies: + babel-plugin-macros: 3.1.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@lingui/cli@5.1.2(typescript@5.5.4)': + dependencies: + '@babel/core': 7.26.0 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/runtime': 7.25.0 + '@babel/types': 7.26.3 + '@lingui/babel-plugin-extract-messages': 5.1.2 + '@lingui/babel-plugin-lingui-macro': 5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4) + '@lingui/conf': 5.1.2(typescript@5.5.4) + '@lingui/core': 5.1.2(@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4))(babel-plugin-macros@3.1.0) + '@lingui/format-po': 5.1.2(typescript@5.5.4) + '@lingui/message-utils': 5.1.2 + babel-plugin-macros: 3.1.0 + chalk: 4.1.2 + chokidar: 3.5.1 + cli-table: 0.3.11 + commander: 10.0.1 + convert-source-map: 2.0.0 + date-fns: 3.6.0 + esbuild: 0.21.5 + glob: 11.0.0 + inquirer: 7.3.3 + micromatch: 4.0.7 + normalize-path: 3.0.0 + ora: 5.4.1 + pathe: 1.1.2 + pkg-up: 3.1.0 + pofile: 1.1.4 + pseudolocale: 2.1.0 + ramda: 0.27.2 + source-map: 0.8.0-beta.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@lingui/conf@5.1.2(typescript@5.5.4)': + dependencies: + '@babel/runtime': 7.25.0 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@5.5.4) + jest-validate: 29.7.0 + jiti: 1.21.6 + lodash.get: 4.4.2 + transitivePeerDependencies: + - typescript + + '@lingui/core@5.1.2(@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4))(babel-plugin-macros@3.1.0)': + dependencies: + '@babel/runtime': 7.25.0 + '@lingui/message-utils': 5.1.2 + unraw: 3.0.0 + optionalDependencies: + '@lingui/babel-plugin-lingui-macro': 5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4) + babel-plugin-macros: 3.1.0 + + '@lingui/format-po@5.1.2(typescript@5.5.4)': + dependencies: + '@lingui/conf': 5.1.2(typescript@5.5.4) + '@lingui/message-utils': 5.1.2 + date-fns: 3.6.0 + pofile: 1.1.4 + transitivePeerDependencies: + - typescript + + '@lingui/message-utils@5.1.2': + dependencies: + '@messageformat/parser': 5.1.0 + js-sha256: 0.10.1 + + '@lingui/react@5.1.2(@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4))(babel-plugin-macros@3.1.0)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.0 + '@lingui/core': 5.1.2(@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4))(babel-plugin-macros@3.1.0) + react: 18.3.1 + optionalDependencies: + '@lingui/babel-plugin-lingui-macro': 5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4) + babel-plugin-macros: 3.1.0 + + '@lingui/swc-plugin@5.0.1(@lingui/core@5.1.2(@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4))(babel-plugin-macros@3.1.0))': + dependencies: + '@lingui/core': 5.1.2(@lingui/babel-plugin-lingui-macro@5.1.2(babel-plugin-macros@3.1.0)(typescript@5.5.4))(babel-plugin-macros@3.1.0) + + '@lingui/vite-plugin@5.1.2(typescript@5.5.4)(vite@5.3.5(@types/node@22.1.0))': + dependencies: + '@lingui/cli': 5.1.2(typescript@5.5.4) + '@lingui/conf': 5.1.2(typescript@5.5.4) + vite: 5.3.5(@types/node@22.1.0) + transitivePeerDependencies: + - supports-color + - typescript + + '@messageformat/parser@5.1.0': + dependencies: + moo: 0.5.2 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4058,6 +4787,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.20.0': optional: true + '@sinclair/typebox@0.27.8': {} + '@stablelib/aead@1.0.1': {} '@stablelib/binary@1.0.1': @@ -4259,6 +4990,16 @@ snapshots: '@types/estree@1.0.5': {} + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + '@types/node@22.1.0': dependencies: undici-types: 6.13.0 @@ -4276,6 +5017,12 @@ snapshots: '@types/prop-types': 15.7.12 csstype: 3.1.3 + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 @@ -4606,6 +5353,10 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -4618,6 +5369,8 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} any-promise@1.3.0: {} @@ -4657,12 +5410,20 @@ snapshots: balanced-match@1.0.2: {} + base64-js@1.5.1: {} + bech32@2.0.0: {} bignumber.js@9.1.2: {} binary-extensions@2.3.0: {} + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + bn.js@4.12.0: {} bn.js@5.2.1: {} @@ -4689,12 +5450,28 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) + browserslist@4.24.3: + dependencies: + caniuse-lite: 1.0.30001690 + electron-to-chromium: 1.5.75 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.3) + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + callsites@3.1.0: {} camelcase-css@2.0.1: {} + camelcase@6.3.0: {} + caniuse-lite@1.0.30001662: {} + caniuse-lite@1.0.30001690: {} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -4706,6 +5483,20 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chardet@0.7.0: {} + + chokidar@3.5.1: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.5.0 + optionalDependencies: + fsevents: 2.3.3 + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -4726,12 +5517,26 @@ snapshots: dependencies: clsx: 2.0.0 + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + + cli-table@0.3.11: + dependencies: + colors: 1.0.3 + + cli-width@3.0.0: {} + clipboardy@4.0.0: dependencies: execa: 8.0.1 is-wsl: 3.1.0 is64bit: 2.0.0 + clone@1.0.4: {} + clsx@2.0.0: {} clsx@2.1.1: {} @@ -4748,6 +5553,10 @@ snapshots: color-name@1.1.4: {} + colors@1.0.3: {} + + commander@10.0.1: {} + commander@4.1.1: {} concat-map@0.0.1: {} @@ -4758,6 +5567,8 @@ snapshots: convert-source-map@1.9.0: {} + convert-source-map@2.0.0: {} + cookie-es@1.2.2: {} core-js-pure@3.39.0: {} @@ -4770,6 +5581,15 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + cosmiconfig@8.3.6(typescript@5.5.4): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.5.4 + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -4784,6 +5604,8 @@ snapshots: csstype@3.1.3: {} + date-fns@3.6.0: {} + debug@4.3.6: dependencies: ms: 2.1.2 @@ -4792,6 +5614,10 @@ snapshots: deep-is@0.1.4: {} + defaults@1.0.4: + dependencies: + clone: 1.0.4 + defu@6.1.4: {} destr@2.0.3: {} @@ -4825,6 +5651,8 @@ snapshots: electron-to-chromium@1.5.27: {} + electron-to-chromium@1.5.75: {} + elliptic@6.5.4: dependencies: bn.js: 4.12.0 @@ -4979,6 +5807,12 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + fast-deep-equal@3.1.3: {} fast-glob@3.3.2: @@ -4999,6 +5833,10 @@ snapshots: dependencies: reusify: 1.0.4 + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 @@ -5011,6 +5849,10 @@ snapshots: find-root@1.1.0: {} + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -5038,6 +5880,8 @@ snapshots: function-bind@1.1.2: {} + gensync@1.0.0-beta.2: {} + get-nonce@1.0.1: {} get-port-please@3.1.2: {} @@ -5061,6 +5905,15 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 + glob@11.0.0: + dependencies: + foreground-child: 3.3.0 + jackspeak: 4.0.2 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -5127,8 +5980,14 @@ snapshots: human-signals@5.0.0: {} + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + idb-keyval@6.2.1: {} + ieee754@1.2.1: {} + ignore@5.3.1: {} imask@7.6.1: @@ -5149,6 +6008,22 @@ snapshots: inherits@2.0.4: {} + inquirer@7.3.3: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -5179,12 +6054,16 @@ snapshots: dependencies: is-docker: 3.0.0 + is-interactive@1.0.0: {} + is-number@7.0.0: {} is-path-inside@3.0.3: {} is-stream@3.0.0: {} + is-unicode-supported@0.1.0: {} + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 @@ -5201,10 +6080,27 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.0.2: + dependencies: + '@isaacs/cliui': 8.0.2 + + jest-get-type@29.6.3: {} + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + jiti@1.21.6: {} jiti@2.4.0: {} + js-sha256@0.10.1: {} + js-sha3@0.8.0: {} js-tokens@4.0.0: {} @@ -5215,6 +6111,8 @@ snapshots: jsesc@2.5.2: {} + jsesc@3.1.0: {} + json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} @@ -5223,12 +6121,16 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json5@2.2.3: {} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 keyvaluestorage-interface@1.0.0: {} + leven@3.1.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -5261,22 +6163,44 @@ snapshots: untun: 0.1.3 uqr: 0.1.2 + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 lodash.debounce@4.0.8: {} + lodash.get@4.4.2: {} + lodash.isequal@4.5.0: {} lodash.merge@4.6.2: {} + lodash.sortby@4.7.0: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 lru-cache@10.4.3: {} + lru-cache@11.0.2: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + lucide-react@0.445.0(react@18.3.1): dependencies: react: 18.3.1 @@ -5292,12 +6216,18 @@ snapshots: mime@3.0.0: {} + mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} minimalistic-assert@1.0.1: {} minimalistic-crypto-utils@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -5315,10 +6245,14 @@ snapshots: pkg-types: 1.2.1 ufo: 1.5.4 + moo@0.5.2: {} + ms@2.1.2: {} multiformats@9.9.0: {} + mute-stream@0.0.8: {} + mz@2.7.0: dependencies: any-promise: 1.3.0 @@ -5337,6 +6271,8 @@ snapshots: node-releases@2.0.18: {} + node-releases@2.0.19: {} + normalize-path@3.0.0: {} normalize-range@0.1.2: {} @@ -5363,6 +6299,10 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -5376,14 +6316,38 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-tmpdir@1.0.2: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 + p-try@2.2.0: {} + package-json-from-dist@1.0.0: {} parent-module@1.0.1: @@ -5397,6 +6361,8 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + path-exists@3.0.0: {} + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -5412,6 +6378,11 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + path-type@4.0.0: {} pathe@1.1.2: {} @@ -5453,6 +6424,12 @@ snapshots: mlly: 1.7.2 pathe: 1.1.2 + pkg-up@3.1.0: + dependencies: + find-up: 3.0.0 + + pofile@1.1.4: {} + postcss-import@15.1.0(postcss@8.4.47): dependencies: postcss: 8.4.47 @@ -5494,6 +6471,12 @@ snapshots: prettier@3.3.3: {} + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + process-warning@1.0.0: {} prop-types@15.8.1: @@ -5502,6 +6485,10 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + pseudolocale@2.1.0: + dependencies: + commander: 10.0.1 + punycode@2.3.1: {} query-string@7.1.3: @@ -5517,6 +6504,8 @@ snapshots: radix3@1.1.2: {} + ramda@0.27.2: {} + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 @@ -5535,6 +6524,8 @@ snapshots: react-is@16.13.1: {} + react-is@18.3.1: {} + react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): dependencies: react: 18.3.1 @@ -5600,6 +6591,10 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readdirp@3.5.0: + dependencies: + picomatch: 2.3.1 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -5616,6 +6611,11 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + reusify@1.0.4: {} rimraf@3.0.2: @@ -5644,18 +6644,28 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.20.0 fsevents: 2.3.3 + run-async@2.4.1: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 + rxjs@6.6.7: + dependencies: + tslib: 1.14.1 + safe-buffer@5.2.1: {} safe-stable-stringify@2.5.0: {} + safer-buffer@2.1.2: {} + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 + semver@6.3.1: {} + semver@7.6.3: {} shebang-command@2.0.0: @@ -5664,6 +6674,8 @@ snapshots: shebang-regex@3.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} slash@3.0.0: {} @@ -5676,6 +6688,10 @@ snapshots: source-map@0.5.7: {} + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + split-on-first@1.1.0: {} split2@4.2.0: {} @@ -5789,12 +6805,22 @@ snapshots: dependencies: real-require: 0.1.0 + through@2.3.8: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + to-fast-properties@2.0.0: {} to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + ts-api-utils@1.3.0(typescript@5.5.4): dependencies: typescript: 5.5.4 @@ -5811,6 +6837,8 @@ snapshots: type-fest@0.20.2: {} + type-fest@0.21.3: {} + typescript@5.5.4: {} ufo@1.5.4: {} @@ -5831,6 +6859,8 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 + unraw@3.0.0: {} + unstorage@1.13.1(idb-keyval@6.2.1): dependencies: anymatch: 3.1.3 @@ -5858,6 +6888,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.0.1 + update-browserslist-db@1.1.1(browserslist@4.24.3): + dependencies: + browserslist: 4.24.3 + escalade: 3.2.0 + picocolors: 1.1.0 + uqr@0.1.2: {} uri-js@4.4.1: @@ -5899,6 +6935,18 @@ snapshots: '@types/node': 22.1.0 fsevents: 2.3.3 + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webidl-conversions@4.0.2: {} + + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -5921,6 +6969,8 @@ snapshots: ws@7.5.10: {} + yallist@3.1.1: {} + yaml@1.10.2: {} yaml@2.5.1: {} diff --git a/src/App.tsx b/src/App.tsx index c4c7416f..1c7f5c86 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -37,6 +37,8 @@ import Wallet from './pages/Wallet'; import { fetchState } from './state'; import { getInsets } from 'tauri-plugin-safe-area-insets'; import { SafeAreaProvider } from './contexts/SafeAreaContext'; +import { i18n } from '@lingui/core'; +import { I18nProvider } from '@lingui/react'; export interface DarkModeContext { toggle: () => void; @@ -109,13 +111,15 @@ export default function App() { }, [dark]); return ( - - - - - - - + + + + + + + + + ); } diff --git a/src/components/AddressList.tsx b/src/components/AddressList.tsx index 1cb44319..18a25f31 100644 --- a/src/components/AddressList.tsx +++ b/src/components/AddressList.tsx @@ -15,6 +15,8 @@ import { } from '@tanstack/react-table'; import { ChevronLeft, ChevronRight } from 'lucide-react'; import { useMemo } from 'react'; +import { Trans } from '@lingui/react/macro'; +import { t } from '@lingui/core/macro'; import { Button } from './ui/button'; import { CopyButton } from './CopyButton'; import { FormattedAddress } from './FormattedAddress'; @@ -40,7 +42,11 @@ export default function AddressList(props: AddressListProps) { { id: 'id', accessorFn: (row) => row.id, - header: () =>
Index
, + header: () => ( +
+ Index +
+ ), cell: (info) => (
{info.row.original.id}
), @@ -48,7 +54,7 @@ export default function AddressList(props: AddressListProps) { { id: 'address', accessorFn: (row) => row.address, - header: 'Address', + header: () => Address, cell: (info) => (
@@ -57,7 +63,11 @@ export default function AddressList(props: AddressListProps) { }, { id: 'actions', - header: () =>
Actions
, + header: () => ( +
+ Actions +
+ ), cell: (info) => (
- No results. + No results. )} @@ -168,16 +178,18 @@ export default function AddressList(props: AddressListProps) { size='sm' onClick={() => table.previousPage()} disabled={!table.getCanPreviousPage()} + aria-label={t`Previous page`} > - +
diff --git a/src/components/AssignNftDialog.tsx b/src/components/AssignNftDialog.tsx index 1e3cd404..9e5c31e1 100644 --- a/src/components/AssignNftDialog.tsx +++ b/src/components/AssignNftDialog.tsx @@ -6,6 +6,8 @@ import BigNumber from 'bignumber.js'; import { PropsWithChildren } from 'react'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; +import { Trans } from '@lingui/react/macro'; +import { t } from '@lingui/core/macro'; import { Button } from './ui/button'; import { Dialog, @@ -48,14 +50,13 @@ export function AssignNftDialog({ children, }: PropsWithChildren) { const walletState = useWalletState(); - const { dids } = useDids(); const schema = z.object({ - profile: z.string().min(1, 'Profile is required'), + profile: z.string().min(1, t`Profile is required`), fee: amount(walletState.sync.unit.decimals).refine( (amount) => BigNumber(walletState.sync.balance).gte(amount || 0), - 'Not enough funds to cover the fee', + t`Not enough funds to cover the fee`, ), }); @@ -88,11 +89,16 @@ export function AssignNftDialog({ name='profile' render={({ field }) => ( - Profile + + Profile + + @@ -397,20 +419,28 @@ export function NftCard({ nft, updateNfts, selectionState }: NftProps) { name='kind' render={({ field }) => ( - Kind + + Kind + @@ -424,7 +454,9 @@ export function NftCard({ nft, updateNfts, selectionState }: NftProps) { name='fee' render={({ field }) => ( - Network Fee + + Network Fee + @@ -439,9 +471,11 @@ export function NftCard({ nft, updateNfts, selectionState }: NftProps) { variant='outline' onClick={() => setAddUrlOpen(false)} > - Cancel + Cancel + + - @@ -449,12 +483,15 @@ export function NftCard({ nft, updateNfts, selectionState }: NftProps) { - This will permanently delete the NFT by sending it to the burn address. + + This will permanently delete the NFT by sending it to the burn + address. + setParams({ page: Math.max(page - 1, 1) })} disabled={page === 1} + aria-label={t`Previous page`} > @@ -56,6 +59,7 @@ export function NftOptions({ size='icon' onClick={() => setParams({ page: Math.min(page + 1, totalPages) })} disabled={page === totalPages} + aria-label={t`Next page`} > @@ -67,6 +71,7 @@ export function NftOptions({ variant='outline' size='icon' onClick={() => setMultiSelect(!multiSelect)} + aria-label={t`Toggle multi-select`} > setParams({ showHidden: !showHidden })} + aria-label={t`Toggle hidden NFTs`} > {showHidden ? ( @@ -88,7 +94,7 @@ export function NftOptions({ - + - diff --git a/src/i18n.ts b/src/i18n.ts new file mode 100644 index 00000000..78d0c4f0 --- /dev/null +++ b/src/i18n.ts @@ -0,0 +1,11 @@ +import { i18n } from '@lingui/core'; + +/** + * Load messages for requested locale and activate it. + * This function isn't part of the LinguiJS library because there are + * many ways how to load messages — from REST API, from file, from cache, etc. + */ +export async function loadCatalog(locale: string) { + const { messages } = await import(`./locales/${locale}/messages.po`); + i18n.loadAndActivate({ locale, messages }); +} diff --git a/src/locales/de-DE/messages.po b/src/locales/de-DE/messages.po new file mode 100644 index 00000000..f453c49c --- /dev/null +++ b/src/locales/de-DE/messages.po @@ -0,0 +1,1402 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2024-12-22 00:52-0300\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: de-DE\n" + +#: src/components/Layout.tsx:75 +#: src/components/Header.tsx:121 +msgid "{0, plural, one {# peer} other {# peers}}" +msgstr "" + +#: src/pages/PeerList.tsx:522 +msgid "{0, plural, one {Ban peer temporarily} other {Ban peers temporarily}}" +msgstr "" + +#: src/pages/PeerList.tsx:569 +msgid "{0, plural, one {Remove Peer} other {Remove Peers}}" +msgstr "" + +#: src/pages/PeerList.tsx:513 +msgid "{0, plural, one {This will remove the peer from your connection. If you are currently syncing against this peer, a new one will be used to replace it.} other {This will remove # peers from your connection. If you are currently syncing against these peers, new ones will be used to replace them.}}" +msgstr "" + +#: src/pages/PeerList.tsx:533 +msgid "{0, plural, one {Will temporarily prevent the peer from being connected to.} other {Will temporarily prevent the peers from being connected to.}}" +msgstr "" + +#: src/components/MultiSelectActions.tsx:85 +msgid "{0} selected" +msgstr "" + +#: src/pages/PeerList.tsx:230 +#: src/components/MultiSelectActions.tsx:90 +#: src/components/AddressList.tsx:68 +msgid "Actions" +msgstr "" + +#: src/pages/PeerList.tsx:358 +msgid "Add new peer" +msgstr "" + +#: src/components/NftCard.tsx:386 +msgid "Add NFT URL" +msgstr "" + +#: src/pages/PeerList.tsx:352 +msgid "Add Peer" +msgstr "" + +#: src/pages/MakeOffer.tsx:105 +msgid "Add the assets you are offering." +msgstr "" + +#: src/pages/MakeOffer.tsx:127 +msgid "Add the assets you are requesting." +msgstr "" + +#: src/components/NftCard.tsx:300 +#: src/components/NftCard.tsx:477 +msgid "Add URL" +msgstr "" + +#: src/pages/Send.tsx:148 +#: src/pages/Nft.tsx:231 +#: src/components/TransferDialog.tsx:81 +#: src/components/AddressList.tsx:57 +msgid "Address" +msgstr "" + +#: src/pages/Settings.tsx:354 +msgid "Address Batch Size" +msgstr "" + +#: src/components/TransferDialog.tsx:47 +msgid "Address is required" +msgstr "" + +#: src/components/Nav.tsx:33 +msgid "Addresses" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:129 +msgid "Advanced" +msgstr "" + +#: src/pages/Addresses.tsx:71 +msgid "All Addresses" +msgstr "" + +#: src/pages/Send.tsx:171 +#: src/pages/MakeOffer.tsx:447 +#: src/pages/IssueToken.tsx:108 +#: src/components/CoinList.tsx:109 +msgid "Amount" +msgstr "" + +#: src/components/OfferCard.tsx:158 +msgid "Amount includes" +msgstr "" + +#: src/components/OfferCard.tsx:113 +msgid "Amount includes " +msgstr "" + +#: src/pages/Login.tsx:356 +msgid "Are you sure you want to delete this wallet? This cannot be undone, and all funds will be lost unless you have saved your mnemonic phrase." +msgstr "" + +#: src/pages/PeerList.tsx:507 +msgid "Are you sure you want to remove {0} peers?" +msgstr "" + +#: src/pages/PeerList.tsx:505 +msgid "Are you sure you want to remove the peer?" +msgstr "" + +#: src/pages/Login.tsx:318 +msgid "Are you sure you want to resync this wallet's data? This will re-download data from the network which can take a while depending on the size of the wallet." +msgstr "" + +#: src/pages/Token.tsx:259 +msgid "Asset" +msgstr "" + +#: src/pages/TokenList.tsx:114 +msgid "Assets" +msgstr "" + +#: src/components/NftCard.tsx:266 +#: src/components/NftCard.tsx:365 +#: src/components/MultiSelectActions.tsx:118 +msgid "Assign Profile" +msgstr "" + +#: src/components/Layout.tsx:81 +#: src/components/Header.tsx:127 +msgid "at peak {peerMaxHeight}" +msgstr "" + +#: src/pages/Nft.tsx:116 +msgid "Attributes" +msgstr "" + +#: src/components/Header.tsx:61 +#: src/components/Header.tsx:65 +#: src/components/Header.tsx:164 +msgid "Back" +msgstr "" + +#: src/components/MultiSelectActions.tsx:165 +msgid "Bulk Assign Profile" +msgstr "" + +#: src/components/MultiSelectActions.tsx:183 +msgid "Bulk Burn NFTs" +msgstr "" + +#: src/components/MultiSelectActions.tsx:153 +msgid "Bulk Transfer NFTs" +msgstr "" + +#: src/components/MultiSelectActions.tsx:174 +msgid "Bulk Unassign Profile" +msgstr "" + +#: src/pages/DidList.tsx:210 +#: src/components/NftCard.tsx:314 +#: src/components/MultiSelectActions.tsx:144 +msgid "Burn" +msgstr "" + +#: src/components/NftCard.tsx:486 +msgid "Burn NFT" +msgstr "" + +#: src/pages/DidList.tsx:309 +msgid "Burn Profile" +msgstr "" + +#: src/pages/CreateWallet.tsx:174 +msgid "By disabling this you are creating a cold wallet, with no ability to sign transactions. The mnemonic will need to be saved elsewhere." +msgstr "" + +#: src/pages/Token.tsx:347 +#: src/pages/Token.tsx:554 +#: src/pages/Token.tsx:622 +#: src/pages/PeerList.tsx:330 +#: src/pages/PeerList.tsx:402 +#: src/pages/PeerList.tsx:551 +#: src/pages/Offers.tsx:272 +#: src/pages/Login.tsx:337 +#: src/pages/Login.tsx:365 +#: src/pages/Login.tsx:415 +#: src/pages/DidList.tsx:290 +#: src/pages/CreateWallet.tsx:252 +#: src/components/TransferDialog.tsx:114 +#: src/components/NftCard.tsx:474 +#: src/components/FeeOnlyDialog.tsx:98 +#: src/components/ConfirmationDialog.tsx:242 +#: src/components/AssignNftDialog.tsx:149 +msgid "Cancel" +msgstr "" + +#: src/pages/MakeOffer.tsx:265 +msgid "Cancel Offer" +msgstr "" + +#: src/pages/Offers.tsx:199 +msgid "Cancelled" +msgstr "" + +#: src/components/OfferCard.tsx:127 +msgid "CAT" +msgstr "" + +#: src/components/OfferCard.tsx:143 +msgid "CAT icon" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:159 +msgid "Change" +msgstr "" + +#: src/components/CoinList.tsx:84 +msgid "Coin" +msgstr "" + +#: src/pages/Nft.tsx:238 +msgid "Coin Id" +msgstr "" + +#: src/pages/Token.tsx:481 +msgid "Coins" +msgstr "" + +#: src/pages/Login.tsx:300 +msgid "Cold Wallet" +msgstr "" + +#: src/pages/Nft.tsx:105 +msgid "Collection Name" +msgstr "" + +#: src/pages/Token.tsx:508 +#: src/pages/Token.tsx:557 +msgid "Combine" +msgstr "" + +#: src/pages/Token.tsx:520 +msgid "Combine {0}" +msgstr "" + +#: src/pages/CreateWallet.tsx:260 +msgid "Confirm" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:119 +msgid "Confirm transaction?" +msgstr "" + +#: src/components/CoinList.tsx:157 +msgid "Confirmed" +msgstr "" + +#: src/pages/Settings.tsx:145 +#: src/pages/PeerList.tsx:416 +msgid "Connect" +msgstr "" + +#: src/pages/PeerList.tsx:318 +msgid "Connected to {0} peers" +msgstr "" + +#: src/components/Layout.tsx:82 +#: src/components/Header.tsx:128 +msgid "connecting..." +msgstr "" + +#: src/pages/Offers.tsx:234 +msgid "Copy" +msgstr "" + +#: src/components/NftCard.tsx:346 +msgid "Copy ID" +msgstr "" + +#: src/pages/MakeOffer.tsx:279 +msgid "Copy the offer file below and send it to the intended recipient or make it public to be accepted by anyone." +msgstr "" + +#: src/pages/Login.tsx:81 +msgid "Create" +msgstr "" + +#: src/pages/Offers.tsx:118 +msgid "Create a new offer to get started with peer-to-peer trading." +msgstr "" + +#: src/pages/DidList.tsx:85 +msgid "Create a profile?" +msgstr "" + +#: src/pages/Offers.tsx:137 +#: src/pages/MakeOffer.tsx:268 +msgid "Create Offer" +msgstr "" + +#: src/pages/DidList.tsx:65 +#: src/pages/CreateProfile.tsx:58 +#: src/pages/CreateProfile.tsx:105 +msgid "Create Profile" +msgstr "" + +#: src/pages/Login.tsx:498 +#: src/pages/CreateWallet.tsx:58 +msgid "Create Wallet" +msgstr "" + +#: src/pages/IssueToken.tsx:93 +msgid "Currency Symbol" +msgstr "" + +#: src/pages/Settings.tsx:72 +msgid "Dark Mode" +msgstr "" + +#: src/components/NftCard.tsx:436 +msgid "Data" +msgstr "" + +#: src/pages/Nft.tsx:185 +msgid "Data Hash" +msgstr "" + +#: src/pages/Nft.tsx:134 +msgid "Data URIs" +msgstr "" + +#: src/pages/MintNft.tsx:143 +msgid "Data URLs" +msgstr "" + +#: src/pages/MakeOffer.tsx:203 +msgid "Days" +msgstr "" + +#: src/pages/Offers.tsx:247 +#: src/pages/Offers.tsx:283 +#: src/pages/Login.tsx:279 +#: src/pages/Login.tsx:368 +msgid "Delete" +msgstr "" + +#: src/pages/PeerList.tsx:345 +msgid "Delete ({0})" +msgstr "" + +#: src/pages/Offers.tsx:260 +msgid "Delete offer record?" +msgstr "" + +#: src/pages/Login.tsx:325 +msgid "Delete saved offer files" +msgstr "" + +#: src/pages/Nft.tsx:96 +msgid "Description" +msgstr "" + +#: src/pages/Login.tsx:243 +msgid "Details" +msgstr "" + +#: src/pages/CreateWallet.tsx:240 +msgid "Did you save your mnemonic?" +msgstr "" + +#: src/pages/Settings.tsx:126 +msgid "Disconnect" +msgstr "" + +#: src/pages/Settings.tsx:202 +msgid "Discover peers automatically" +msgstr "" + +#: src/pages/IssueToken.tsx:77 +#: src/pages/CreateProfile.tsx:72 +msgid "Display name" +msgstr "" + +#: src/pages/Login.tsx:468 +msgid "Done" +msgstr "" + +#: src/pages/Token.tsx:251 +msgid "Edit" +msgstr "" + +#: src/pages/Token.tsx:293 +msgid "Edit Token Details" +msgstr "" + +#: src/pages/Send.tsx:155 +#: src/pages/MintNft.tsx:211 +#: src/components/TransferDialog.tsx:84 +msgid "Enter address" +msgstr "" + +#: src/pages/MakeOffer.tsx:363 +msgid "Enter amount" +msgstr "" + +#: src/pages/MakeOffer.tsx:437 +msgid "Enter asset id" +msgstr "" + +#: src/pages/MintNft.tsx:148 +#: src/pages/MintNft.tsx:169 +#: src/pages/MintNft.tsx:190 +msgid "Enter comma separated URLs" +msgstr "" + +#: src/components/TransferDialog.tsx:101 +msgid "Enter fee amount" +msgstr "" + +#: src/pages/MakeOffer.tsx:396 +msgid "Enter launcher id" +msgstr "" + +#: src/components/FeeOnlyDialog.tsx:84 +msgid "Enter network fee" +msgstr "" + +#: src/pages/Offers.tsx:154 +msgid "Enter Offer String" +msgstr "" + +#: src/pages/MintNft.tsx:234 +msgid "Enter percent" +msgstr "" + +#: src/pages/PeerList.tsx:361 +msgid "Enter the IP address of the peer you want to connect to." +msgstr "" + +#: src/pages/Token.tsx:296 +msgid "Enter the new display details for this token" +msgstr "" + +#: src/pages/DidList.tsx:260 +msgid "Enter the new display name for this profile." +msgstr "" + +#: src/pages/Login.tsx:384 +msgid "Enter the new display name for this wallet." +msgstr "" + +#: src/components/NftCard.tsx:410 +msgid "Enter URL" +msgstr "" + +#: src/pages/ImportWallet.tsx:94 +msgid "Enter your mnemonic, private key, or public key below. If it's a public key, it will be imported as a read-only cold wallet." +msgstr "" + +#: src/pages/Offers.tsx:201 +msgid "Expired" +msgstr "" + +#: src/pages/MakeOffer.tsx:167 +msgid "Expiring offer" +msgstr "" + +#: src/pages/Nft.tsx:254 +msgid "External Links" +msgstr "" + +#: src/pages/Send.tsx:197 +#: src/pages/IssueToken.tsx:129 +#: src/components/ConfirmationDialog.tsx:154 +#: src/components/ConfirmationDialog.tsx:379 +msgid "Fee" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:143 +msgid "Fee exceeds recommended maximum of 0.001 {0}" +msgstr "" + +#: src/pages/Addresses.tsx:55 +msgid "Fresh Address" +msgstr "" + +#: src/pages/Settings.tsx:349 +msgid "Generate addresses automatically" +msgstr "" + +#: src/pages/Settings.tsx:60 +msgid "Global" +msgstr "" + +#: src/components/Header.tsx:96 +msgid "Go to wallet" +msgstr "" + +#: src/components/NftOptions.tsx:155 +msgid "Group Collections" +msgstr "" + +#: src/pages/PeerList.tsx:143 +msgid "Height:" +msgstr "" + +#: src/pages/Token.tsx:259 +#: src/pages/NftList.tsx:273 +#: src/pages/DidList.tsx:239 +#: src/components/NftCard.tsx:333 +msgid "Hide" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:140 +msgid "High Transaction Fee" +msgstr "" + +#: src/pages/Login.tsx:293 +msgid "Hot Wallet" +msgstr "" + +#: src/pages/MakeOffer.tsx:225 +msgid "Hours" +msgstr "" + +#: src/pages/Login.tsx:78 +msgid "Import" +msgstr "" + +#: src/pages/Login.tsx:495 +#: src/pages/ImportWallet.tsx:40 +#: src/pages/ImportWallet.tsx:104 +msgid "Import Wallet" +msgstr "" + +#: src/pages/Transactions.tsx:106 +msgid "Increase Fee" +msgstr "" + +#: src/components/AddressList.tsx:47 +msgid "Index" +msgstr "" + +#: src/pages/Send.tsx:101 +msgid "Invalid address" +msgstr "" + +#: src/pages/PeerList.tsx:199 +#: src/pages/PeerList.tsx:370 +msgid "IP Address" +msgstr "" + +#: src/pages/TokenList.tsx:125 +#: src/pages/IssueToken.tsx:62 +#: src/pages/IssueToken.tsx:148 +msgid "Issue Token" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:132 +msgid "JSON" +msgstr "" + +#: src/components/NftCard.tsx:423 +msgid "Kind" +msgstr "" + +#: src/components/NftCard.tsx:153 +msgid "Kind is required" +msgstr "" + +#: src/pages/Nft.tsx:88 +msgid "Launcher Id" +msgstr "" + +#: src/components/NftCard.tsx:442 +msgid "License" +msgstr "" + +#: src/pages/Nft.tsx:203 +msgid "License Hash" +msgstr "" + +#: src/pages/Nft.tsx:168 +msgid "License URIs" +msgstr "" + +#: src/pages/MintNft.tsx:185 +msgid "License URLs" +msgstr "" + +#: src/pages/Login.tsx:231 +msgid "Login" +msgstr "" + +#: src/components/Layout.tsx:103 +#: src/components/Header.tsx:149 +msgid "Logout" +msgstr "" + +#: src/pages/CreateWallet.tsx:243 +msgid "Make sure you have saved your mnemonic. You will not be able to access it later, since it will not be saved in the wallet. You will also not be able to make transactions with this wallet." +msgstr "" + +#: src/pages/Offers.tsx:112 +msgid "Manage offers" +msgstr "" + +#: src/components/NftCard.tsx:439 +msgid "Metadata" +msgstr "" + +#: src/pages/Nft.tsx:194 +msgid "Metadata Hash" +msgstr "" + +#: src/pages/Nft.tsx:151 +msgid "Metadata URIs" +msgstr "" + +#: src/pages/MintNft.tsx:164 +msgid "Metadata URLs" +msgstr "" + +#: src/pages/MintNft.tsx:283 +msgid "Mint" +msgstr "" + +#: src/pages/NftList.tsx:126 +msgid "Mint an NFT?" +msgstr "" + +#: src/pages/NftList.tsx:119 +#: src/pages/MintNft.tsx:96 +msgid "Mint NFT" +msgstr "" + +#: src/pages/Nft.tsx:213 +msgid "Minter DID" +msgstr "" + +#: src/pages/MintNft.tsx:283 +msgid "Minting" +msgstr "" + +#: src/pages/MakeOffer.tsx:247 +msgid "Minutes" +msgstr "" + +#: src/pages/Login.tsx:456 +#: src/pages/CreateWallet.tsx:195 +msgid "Mnemonic" +msgstr "" + +#: src/pages/Token.tsx:302 +#: src/pages/IssueToken.tsx:74 +#: src/pages/DidList.tsx:266 +#: src/pages/CreateProfile.tsx:69 +msgid "Name" +msgstr "" + +#: src/pages/IssueToken.tsx:35 +#: src/pages/CreateProfile.tsx:35 +msgid "Name is required" +msgstr "" + +#: src/pages/Login.tsx:394 +msgid "Name of your wallet" +msgstr "" + +#: src/pages/Settings.tsx:185 +msgid "Network" +msgstr "" + +#: src/pages/ViewOffer.tsx:69 +#: src/pages/Token.tsx:539 +#: src/pages/Token.tsx:607 +#: src/pages/MintNft.tsx:256 +#: src/pages/MakeOffer.tsx:143 +#: src/pages/CreateProfile.tsx:86 +#: src/components/TransferDialog.tsx:96 +#: src/components/NftCard.tsx:458 +#: src/components/FeeOnlyDialog.tsx:79 +#: src/components/AssignNftDialog.tsx:131 +msgid "Network Fee" +msgstr "" + +#: src/components/FeeOnlyDialog.tsx:85 +#: src/components/AssignNftDialog.tsx:136 +msgid "Network fee amount" +msgstr "" + +#: src/pages/Settings.tsx:233 +msgid "Network ID" +msgstr "" + +#: src/components/Layout.tsx:63 +#: src/components/Header.tsx:109 +msgid "Network status" +msgstr "" + +#: src/pages/MakeOffer.tsx:92 +msgid "New Offer" +msgstr "" + +#: src/components/NftOptions.tsx:62 +#: src/components/CoinList.tsx:350 +#: src/components/AddressList.tsx:190 +msgid "Next page" +msgstr "" + +#: src/pages/MakeOffer.tsx:340 +#: src/pages/MakeOffer.tsx:389 +#: src/components/OfferCard.tsx:172 +msgid "NFT" +msgstr "" + +#: src/components/NftCard.tsx:235 +msgid "NFT options" +msgstr "" + +#: src/components/OfferCard.tsx:186 +msgid "NFT preview" +msgstr "" + +#: src/pages/NftList.tsx:113 +#: src/components/Nav.tsx:21 +msgid "NFTs" +msgstr "" + +#: src/pages/Settings.tsx:132 +msgid "No active sessions" +msgstr "" + +#: src/components/NftCard.tsx:229 +msgid "No collection" +msgstr "" + +#: src/pages/Offers.tsx:114 +msgid "No offers yet" +msgstr "" + +#: src/pages/PeerList.tsx:489 +#: src/components/CoinList.tsx:325 +#: src/components/AddressList.tsx:167 +msgid "No results." +msgstr "" + +#: src/pages/Nft.tsx:216 +#: src/pages/Nft.tsx:225 +msgid "None" +msgstr "" + +#: src/components/TransferDialog.tsx:50 +#: src/components/NftCard.tsx:156 +#: src/components/FeeOnlyDialog.tsx:49 +#: src/components/AssignNftDialog.tsx:59 +msgid "Not enough funds to cover the fee" +msgstr "" + +#: src/pages/Transactions.tsx:61 +msgid "Note" +msgstr "" + +#: src/pages/MakeOffer.tsx:276 +msgid "Offer Details" +msgstr "" + +#: src/pages/MakeOffer.tsx:283 +msgid "Offer File" +msgstr "" + +#: src/pages/Offers.tsx:209 +#: src/pages/MakeOffer.tsx:100 +msgid "Offered" +msgstr "" + +#: src/pages/Offers.tsx:103 +#: src/components/Nav.tsx:29 +msgid "Offers" +msgstr "" + +#: src/pages/Token.tsx:586 +msgid "Output Count" +msgstr "" + +#: src/pages/Nft.tsx:222 +msgid "Owner DID" +msgstr "" + +#: src/pages/Settings.tsx:141 +msgid "Paste WalletConnect URI" +msgstr "" + +#: src/pages/Offers.tsx:159 +msgid "Paste your offer string here..." +msgstr "" + +#: src/pages/PeerList.tsx:207 +msgid "Peak Height" +msgstr "" + +#: src/pages/PeerList.tsx:307 +msgid "Peer List" +msgstr "" + +#: src/pages/Offers.tsx:195 +msgid "Pending" +msgstr "" + +#: src/components/CoinList.tsx:171 +#: src/components/CoinList.tsx:236 +msgid "Pending..." +msgstr "" + +#: src/components/ConfirmationDialog.tsx:435 +#: src/components/ConfirmationDialog.tsx:463 +#: src/components/ConfirmationDialog.tsx:497 +#: src/components/ConfirmationDialog.tsx:532 +msgid "Permanently Burned" +msgstr "" + +#: src/pages/Login.tsx:353 +msgid "Permanently Delete" +msgstr "" + +#: src/pages/PeerList.tsx:203 +msgid "Port" +msgstr "" + +#: src/pages/PeerList.tsx:149 +msgid "Port:" +msgstr "" + +#: src/pages/PeerList.tsx:392 +msgid "Prevents the peer from being banned." +msgstr "" + +#: src/components/NftOptions.tsx:50 +#: src/components/CoinList.tsx:341 +#: src/components/AddressList.tsx:181 +msgid "Previous page" +msgstr "" + +#: src/pages/MintNft.tsx:107 +#: src/components/ConfirmationDialog.tsx:480 +#: src/components/ConfirmationDialog.tsx:494 +#: src/components/AssignNftDialog.tsx:93 +msgid "Profile" +msgstr "" + +#: src/pages/MintNft.tsx:45 +#: src/components/AssignNftDialog.tsx:56 +msgid "Profile is required" +msgstr "" + +#: src/pages/DidList.tsx:270 +msgid "Profile name" +msgstr "" + +#: src/pages/DidList.tsx:59 +#: src/components/Nav.tsx:25 +msgid "Profiles" +msgstr "" + +#: src/pages/Login.tsx:437 +msgid "Public Key" +msgstr "" + +#: src/components/NftCard.tsx:268 +msgid "Reassign Profile" +msgstr "" + +#: src/pages/Token.tsx:239 +msgid "Receive" +msgstr "" + +#: src/pages/Addresses.tsx:49 +msgid "Receive {0}" +msgstr "" + +#: src/components/ReceiveAddress.tsx:64 +msgid "Receive Address" +msgstr "" + +#: src/components/OfferCard.tsx:50 +msgid "Receiving" +msgstr "" + +#: src/pages/Token.tsx:254 +msgid "Refresh Info" +msgstr "" + +#: src/pages/Token.tsx:350 +#: src/pages/Login.tsx:255 +#: src/pages/Login.tsx:418 +#: src/pages/DidList.tsx:223 +#: src/pages/DidList.tsx:293 +msgid "Rename" +msgstr "" + +#: src/pages/DidList.tsx:257 +msgid "Rename Profile" +msgstr "" + +#: src/pages/Login.tsx:381 +msgid "Rename Wallet" +msgstr "" + +#: src/pages/Offers.tsx:210 +#: src/pages/MakeOffer.tsx:122 +msgid "Requested" +msgstr "" + +#: src/pages/Transactions.tsx:95 +msgid "Resubmit" +msgstr "" + +#: src/pages/Login.tsx:340 +msgid "Resync" +msgstr "" + +#: src/pages/Login.tsx:267 +msgid "Resync ({network})" +msgstr "" + +#: src/pages/Login.tsx:315 +msgid "Resync on {network}" +msgstr "" + +#: src/pages/Nft.tsx:245 +msgid "Royalties ({0}%)" +msgstr "" + +#: src/components/OfferCard.tsx:115 +#: src/components/OfferCard.tsx:159 +msgid "royalty" +msgstr "" + +#: src/pages/MintNft.tsx:206 +msgid "Royalty Address" +msgstr "" + +#: src/pages/MintNft.tsx:228 +msgid "Royalty Percent" +msgstr "" + +#: src/components/OfferCard.tsx:201 +msgid "royalty to" +msgstr "" + +#: src/pages/MakeOffer.tsx:299 +msgid "Save" +msgstr "" + +#: src/pages/CreateWallet.tsx:171 +msgid "Save mnemonic" +msgstr "" + +#: src/pages/ViewOffer.tsx:97 +msgid "Save Offer" +msgstr "" + +#: src/pages/Login.tsx:447 +msgid "Secret Key" +msgstr "" + +#: src/components/CoinList.tsx:61 +msgid "Select all coins" +msgstr "" + +#: src/components/CoinList.tsx:69 +msgid "Select coin row" +msgstr "" + +#: src/components/NftCard.tsx:431 +#: src/components/NftCard.tsx:432 +msgid "Select kind" +msgstr "" + +#: src/pages/Settings.tsx:254 +msgid "Select network" +msgstr "" + +#: src/pages/MintNft.tsx:113 +#: src/pages/MintNft.tsx:115 +#: src/components/AssignNftDialog.tsx:99 +#: src/components/AssignNftDialog.tsx:101 +msgid "Select profile" +msgstr "" + +#: src/pages/PeerList.tsx:314 +msgid "Selected {0} of {1} peers" +msgstr "" + +#: src/pages/Token.tsx:233 +msgid "Send" +msgstr "" + +#: src/pages/Send.tsx:135 +#: src/pages/Send.tsx:219 +msgid "Send {0}" +msgstr "" + +#: src/components/OfferCard.tsx:29 +msgid "Sending" +msgstr "" + +#: src/pages/Settings.tsx:40 +#: src/components/Layout.tsx:96 +#: src/components/Header.tsx:142 +msgid "Settings" +msgstr "" + +#: src/pages/Token.tsx:259 +#: src/pages/NftList.tsx:273 +#: src/pages/DidList.tsx:239 +#: src/components/NftCard.tsx:333 +msgid "Show" +msgstr "" + +#: src/components/CoinList.tsx:214 +msgid "Show all coins" +msgstr "" + +#: src/components/CoinList.tsx:214 +msgid "Show unspent coins only" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:215 +msgid "Sign Transaction" +msgstr "" + +#: src/pages/TokenList.tsx:254 +#: src/components/NftOptions.tsx:122 +msgid "Sort Alphabetically" +msgstr "" + +#: src/pages/TokenList.tsx:267 +msgid "Sort by Balance" +msgstr "" + +#: src/components/NftOptions.tsx:97 +msgid "Sort options" +msgstr "" + +#: src/components/NftOptions.tsx:138 +msgid "Sort Recent" +msgstr "" + +#: src/components/CoinList.tsx:196 +msgid "Spent" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:358 +msgid "Spent Coins" +msgstr "" + +#: src/pages/Token.tsx:498 +#: src/pages/Token.tsx:625 +msgid "Split" +msgstr "" + +#: src/pages/Token.tsx:569 +msgid "Split {0}" +msgstr "" + +#: src/pages/CreateWallet.tsx:233 +#: src/components/ConfirmationDialog.tsx:291 +msgid "Submit" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:291 +msgid "Submitting" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:126 +#: src/components/ConfirmationDialog.tsx:150 +msgid "Summary" +msgstr "" + +#: src/components/Layout.tsx:85 +#: src/components/Header.tsx:131 +msgid "Syncing {0} / {1}" +msgstr "" + +#: src/pages/TokenList.tsx:132 +msgid "Syncing in progress..." +msgstr "" + +#: src/pages/ViewOffer.tsx:101 +msgid "Take Offer" +msgstr "" + +#: src/pages/Offers.tsx:197 +msgid "Taken" +msgstr "" + +#: src/pages/Settings.tsx:207 +msgid "Target Peers" +msgstr "" + +#: src/components/OfferCard.tsx:55 +msgid "The assets being given to you in the offer." +msgstr "" + +#: src/components/OfferCard.tsx:34 +msgid "The assets you have to pay to fulfill the offer." +msgstr "" + +#: src/pages/Addresses.tsx:58 +msgid "The wallet generates a new address after each transaction. Old ones stay valid." +msgstr "" + +#: src/pages/TokenList.tsx:135 +msgid "The wallet is still syncing. Balances may not be accurate until it completes." +msgstr "" + +#: src/pages/Login.tsx:487 +msgid "There aren't any wallets to log into yet. To get started, create a new wallet or import an existing one." +msgstr "" + +#: src/pages/ViewOffer.tsx:88 +msgid "This does not include a fee of {0} which was already added by the maker." +msgstr "" + +#: src/components/ConfirmationDialog.tsx:185 +msgid "This is the raw JSON spend bundle for this transaction. If you sign it, the transaction can be submitted to the mempool externally." +msgstr "" + +#: src/pages/Transactions.tsx:64 +msgid "This only shows transactions initiated by this app that are currently pending in the mempool." +msgstr "" + +#: src/components/NftCard.tsx:389 +msgid "This will add an additional URL to the NFT. It is not possible to remove URLs later, so be careful with this and try to use permanent URLs if possible." +msgstr "" + +#: src/components/NftCard.tsx:370 +msgid "This will assign the NFT to the selected profile." +msgstr "" + +#: src/components/MultiSelectActions.tsx:170 +msgid "This will bulk assign the NFTs to the selected profile." +msgstr "" + +#: src/components/MultiSelectActions.tsx:188 +msgid "This will bulk burn {0} NFTs. This cannot be undone. Are you sure you want to proceed?" +msgstr "" + +#: src/components/MultiSelectActions.tsx:158 +msgid "This will bulk transfer {0} NFTs to another wallet. Are you sure you want to proceed?" +msgstr "" + +#: src/components/MultiSelectActions.tsx:179 +msgid "This will bulk unassign the NFTs from their profiles." +msgstr "" + +#: src/pages/Token.tsx:523 +msgid "This will combine all of the selected coins into one." +msgstr "" + +#: src/pages/Offers.tsx:263 +msgid "This will delete the offer from the wallet, but if it's shared externally it can still be accepted. The only way to truly cancel a public offer is by spending one or more of its coins." +msgstr "" + +#: src/components/NftCard.tsx:491 +msgid "This will permanently delete the NFT by sending it to the burn address." +msgstr "" + +#: src/pages/DidList.tsx:314 +msgid "This will permanently delete the profile by sending it to the burn address." +msgstr "" + +#: src/components/NftCard.tsx:361 +msgid "This will send the NFT to the provided address." +msgstr "" + +#: src/pages/DidList.tsx:305 +msgid "This will send the profile to the provided address." +msgstr "" + +#: src/pages/Token.tsx:572 +msgid "This will split all of the selected coins." +msgstr "" + +#: src/components/NftCard.tsx:379 +msgid "This will unassign the NFT from its profile." +msgstr "" + +#: src/pages/Token.tsx:321 +#: src/pages/IssueToken.tsx:90 +msgid "Ticker" +msgstr "" + +#: src/pages/IssueToken.tsx:36 +msgid "Ticker is required" +msgstr "" + +#: src/components/NftOptions.tsx:86 +msgid "Toggle hidden NFTs" +msgstr "" + +#: src/components/NftOptions.tsx:74 +msgid "Toggle multi-select" +msgstr "" + +#: src/components/Header.tsx:74 +#: src/components/Header.tsx:78 +msgid "Toggle navigation menu" +msgstr "" + +#: src/pages/MakeOffer.tsx:352 +#: src/pages/MakeOffer.tsx:430 +msgid "Token" +msgstr "" + +#: src/pages/Transactions.tsx:75 +msgid "Transaction {0}" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:373 +msgid "Transaction Output" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:213 +msgid "Transaction Signed" +msgstr "" + +#: src/pages/Transactions.tsx:54 +msgid "Transactions" +msgstr "" + +#: src/pages/DidList.tsx:197 +#: src/components/TransferDialog.tsx:117 +#: src/components/NftCard.tsx:251 +#: src/components/MultiSelectActions.tsx:105 +#: src/components/FeeOnlyDialog.tsx:101 +#: src/components/AssignNftDialog.tsx:152 +msgid "Transfer" +msgstr "" + +#: src/components/NftCard.tsx:356 +msgid "Transfer NFT" +msgstr "" + +#: src/pages/DidList.tsx:300 +msgid "Transfer Profile" +msgstr "" + +#: src/pages/PeerList.tsx:213 +msgid "Trusted" +msgstr "" + +#: src/pages/PeerList.tsx:385 +msgid "Trusted peer" +msgstr "" + +#: src/components/NftCard.tsx:284 +#: src/components/NftCard.tsx:374 +#: src/components/MultiSelectActions.tsx:131 +msgid "Unassign Profile" +msgstr "" + +#: src/pages/Collection.tsx:92 +#: src/components/ConfirmationDialog.tsx:516 +#: src/components/ConfirmationDialog.tsx:530 +msgid "Unknown" +msgstr "" + +#: src/pages/Settings.tsx:114 +#: src/pages/Settings.tsx:118 +msgid "Unknown App" +msgstr "" + +#: src/pages/Send.tsx:135 +msgid "unknown asset" +msgstr "" + +#: src/pages/Token.tsx:196 +msgid "Unknown asset" +msgstr "" + +#: src/pages/Nft.tsx:80 +msgid "Unknown NFT" +msgstr "" + +#: src/pages/NftList.tsx:233 +#: src/pages/NftList.tsx:244 +#: src/components/OfferCard.tsx:177 +#: src/components/NftCard.tsx:208 +#: src/components/NftCard.tsx:226 +#: src/components/ConfirmationDialog.tsx:481 +#: src/components/ConfirmationDialog.tsx:495 +msgid "Unnamed" +msgstr "" + +#: src/components/CoinList.tsx:211 +#: src/components/CoinList.tsx:228 +#: src/components/CoinList.tsx:263 +msgid "Unspent" +msgstr "" + +#: src/pages/DidList.tsx:178 +msgid "Untitled Profile" +msgstr "" + +#: src/components/NftCard.tsx:407 +msgid "URL" +msgstr "" + +#: src/components/NftCard.tsx:152 +msgid "URL is required" +msgstr "" + +#: src/pages/CreateWallet.tsx:143 +msgid "Use 24 words" +msgstr "" + +#: src/pages/TokenList.tsx:146 +#: src/pages/DidList.tsx:71 +msgid "View hidden" +msgstr "" + +#: src/pages/Offers.tsx:132 +#: src/pages/Offers.tsx:165 +msgid "View Offer" +msgstr "" + +#: src/pages/Settings.tsx:301 +#: src/pages/Login.tsx:483 +#: src/components/Nav.tsx:17 +msgid "Wallet" +msgstr "" + +#: src/pages/Login.tsx:431 +msgid "Wallet Details" +msgstr "" + +#: src/components/Layout.tsx:50 +#: src/components/Header.tsx:98 +msgid "Wallet icon" +msgstr "" + +#: src/pages/ImportWallet.tsx:88 +msgid "Wallet Key" +msgstr "" + +#: src/pages/Settings.tsx:308 +#: src/pages/Login.tsx:390 +#: src/pages/ImportWallet.tsx:72 +#: src/pages/CreateWallet.tsx:125 +msgid "Wallet Name" +msgstr "" + +#: src/pages/Settings.tsx:99 +msgid "WalletConnect" +msgstr "" + +#: src/pages/Login.tsx:74 +msgid "Wallets" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:182 +msgid "Warning" +msgstr "" + +#: src/pages/CreateWallet.tsx:146 +msgid "While 12 word mnemonics are sufficiently hard to crack, you can choose to use 24 instead to increase security." +msgstr "" + +#: src/pages/Transactions.tsx:115 +msgid "With a fee of" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:437 +#: src/components/ConfirmationDialog.tsx:465 +#: src/components/ConfirmationDialog.tsx:499 +#: src/components/ConfirmationDialog.tsx:534 +msgid "You" +msgstr "" + +#: src/pages/Offers.tsx:123 +msgid "You can also paste an offer using <0>{0}." +msgstr "" + +#: src/pages/DidList.tsx:88 +msgid "You do not currently have any {0} DID profiles. Would you like to create one?" +msgstr "" + +#: src/pages/NftList.tsx:129 +msgid "You do not currently have any NFTs. Would you like to mint one?" +msgstr "" diff --git a/src/locales/en-US/messages.po b/src/locales/en-US/messages.po new file mode 100644 index 00000000..e2325dc8 --- /dev/null +++ b/src/locales/en-US/messages.po @@ -0,0 +1,1402 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2024-12-22 00:52-0300\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: en-US\n" + +#: src/components/Layout.tsx:75 +#: src/components/Header.tsx:121 +msgid "{0, plural, one {# peer} other {# peers}}" +msgstr "{0, plural, one {# peer} other {# peers}}" + +#: src/pages/PeerList.tsx:522 +msgid "{0, plural, one {Ban peer temporarily} other {Ban peers temporarily}}" +msgstr "{0, plural, one {Ban peer temporarily} other {Ban peers temporarily}}" + +#: src/pages/PeerList.tsx:569 +msgid "{0, plural, one {Remove Peer} other {Remove Peers}}" +msgstr "{0, plural, one {Remove Peer} other {Remove Peers}}" + +#: src/pages/PeerList.tsx:513 +msgid "{0, plural, one {This will remove the peer from your connection. If you are currently syncing against this peer, a new one will be used to replace it.} other {This will remove # peers from your connection. If you are currently syncing against these peers, new ones will be used to replace them.}}" +msgstr "{0, plural, one {This will remove the peer from your connection. If you are currently syncing against this peer, a new one will be used to replace it.} other {This will remove # peers from your connection. If you are currently syncing against these peers, new ones will be used to replace them.}}" + +#: src/pages/PeerList.tsx:533 +msgid "{0, plural, one {Will temporarily prevent the peer from being connected to.} other {Will temporarily prevent the peers from being connected to.}}" +msgstr "{0, plural, one {Will temporarily prevent the peer from being connected to.} other {Will temporarily prevent the peers from being connected to.}}" + +#: src/components/MultiSelectActions.tsx:85 +msgid "{0} selected" +msgstr "{0} selected" + +#: src/pages/PeerList.tsx:230 +#: src/components/MultiSelectActions.tsx:90 +#: src/components/AddressList.tsx:68 +msgid "Actions" +msgstr "Actions" + +#: src/pages/PeerList.tsx:358 +msgid "Add new peer" +msgstr "Add new peer" + +#: src/components/NftCard.tsx:386 +msgid "Add NFT URL" +msgstr "Add NFT URL" + +#: src/pages/PeerList.tsx:352 +msgid "Add Peer" +msgstr "Add Peer" + +#: src/pages/MakeOffer.tsx:105 +msgid "Add the assets you are offering." +msgstr "Add the assets you are offering." + +#: src/pages/MakeOffer.tsx:127 +msgid "Add the assets you are requesting." +msgstr "Add the assets you are requesting." + +#: src/components/NftCard.tsx:300 +#: src/components/NftCard.tsx:477 +msgid "Add URL" +msgstr "Add URL" + +#: src/pages/Send.tsx:148 +#: src/pages/Nft.tsx:231 +#: src/components/TransferDialog.tsx:81 +#: src/components/AddressList.tsx:57 +msgid "Address" +msgstr "Address" + +#: src/pages/Settings.tsx:354 +msgid "Address Batch Size" +msgstr "Address Batch Size" + +#: src/components/TransferDialog.tsx:47 +msgid "Address is required" +msgstr "Address is required" + +#: src/components/Nav.tsx:33 +msgid "Addresses" +msgstr "Addresses" + +#: src/components/ConfirmationDialog.tsx:129 +msgid "Advanced" +msgstr "Advanced" + +#: src/pages/Addresses.tsx:71 +msgid "All Addresses" +msgstr "All Addresses" + +#: src/pages/Send.tsx:171 +#: src/pages/MakeOffer.tsx:447 +#: src/pages/IssueToken.tsx:108 +#: src/components/CoinList.tsx:109 +msgid "Amount" +msgstr "Amount" + +#: src/components/OfferCard.tsx:158 +msgid "Amount includes" +msgstr "Amount includes" + +#: src/components/OfferCard.tsx:113 +msgid "Amount includes " +msgstr "Amount includes " + +#: src/pages/Login.tsx:356 +msgid "Are you sure you want to delete this wallet? This cannot be undone, and all funds will be lost unless you have saved your mnemonic phrase." +msgstr "Are you sure you want to delete this wallet? This cannot be undone, and all funds will be lost unless you have saved your mnemonic phrase." + +#: src/pages/PeerList.tsx:507 +msgid "Are you sure you want to remove {0} peers?" +msgstr "Are you sure you want to remove {0} peers?" + +#: src/pages/PeerList.tsx:505 +msgid "Are you sure you want to remove the peer?" +msgstr "Are you sure you want to remove the peer?" + +#: src/pages/Login.tsx:318 +msgid "Are you sure you want to resync this wallet's data? This will re-download data from the network which can take a while depending on the size of the wallet." +msgstr "Are you sure you want to resync this wallet's data? This will re-download data from the network which can take a while depending on the size of the wallet." + +#: src/pages/Token.tsx:259 +msgid "Asset" +msgstr "Asset" + +#: src/pages/TokenList.tsx:114 +msgid "Assets" +msgstr "Assets" + +#: src/components/NftCard.tsx:266 +#: src/components/NftCard.tsx:365 +#: src/components/MultiSelectActions.tsx:118 +msgid "Assign Profile" +msgstr "Assign Profile" + +#: src/components/Layout.tsx:81 +#: src/components/Header.tsx:127 +msgid "at peak {peerMaxHeight}" +msgstr "at peak {peerMaxHeight}" + +#: src/pages/Nft.tsx:116 +msgid "Attributes" +msgstr "Attributes" + +#: src/components/Header.tsx:61 +#: src/components/Header.tsx:65 +#: src/components/Header.tsx:164 +msgid "Back" +msgstr "Back" + +#: src/components/MultiSelectActions.tsx:165 +msgid "Bulk Assign Profile" +msgstr "Bulk Assign Profile" + +#: src/components/MultiSelectActions.tsx:183 +msgid "Bulk Burn NFTs" +msgstr "Bulk Burn NFTs" + +#: src/components/MultiSelectActions.tsx:153 +msgid "Bulk Transfer NFTs" +msgstr "Bulk Transfer NFTs" + +#: src/components/MultiSelectActions.tsx:174 +msgid "Bulk Unassign Profile" +msgstr "Bulk Unassign Profile" + +#: src/pages/DidList.tsx:210 +#: src/components/NftCard.tsx:314 +#: src/components/MultiSelectActions.tsx:144 +msgid "Burn" +msgstr "Burn" + +#: src/components/NftCard.tsx:486 +msgid "Burn NFT" +msgstr "Burn NFT" + +#: src/pages/DidList.tsx:309 +msgid "Burn Profile" +msgstr "Burn Profile" + +#: src/pages/CreateWallet.tsx:174 +msgid "By disabling this you are creating a cold wallet, with no ability to sign transactions. The mnemonic will need to be saved elsewhere." +msgstr "By disabling this you are creating a cold wallet, with no ability to sign transactions. The mnemonic will need to be saved elsewhere." + +#: src/pages/Token.tsx:347 +#: src/pages/Token.tsx:554 +#: src/pages/Token.tsx:622 +#: src/pages/PeerList.tsx:330 +#: src/pages/PeerList.tsx:402 +#: src/pages/PeerList.tsx:551 +#: src/pages/Offers.tsx:272 +#: src/pages/Login.tsx:337 +#: src/pages/Login.tsx:365 +#: src/pages/Login.tsx:415 +#: src/pages/DidList.tsx:290 +#: src/pages/CreateWallet.tsx:252 +#: src/components/TransferDialog.tsx:114 +#: src/components/NftCard.tsx:474 +#: src/components/FeeOnlyDialog.tsx:98 +#: src/components/ConfirmationDialog.tsx:242 +#: src/components/AssignNftDialog.tsx:149 +msgid "Cancel" +msgstr "Cancel" + +#: src/pages/MakeOffer.tsx:265 +msgid "Cancel Offer" +msgstr "Cancel Offer" + +#: src/pages/Offers.tsx:199 +msgid "Cancelled" +msgstr "Cancelled" + +#: src/components/OfferCard.tsx:127 +msgid "CAT" +msgstr "CAT" + +#: src/components/OfferCard.tsx:143 +msgid "CAT icon" +msgstr "CAT icon" + +#: src/components/ConfirmationDialog.tsx:159 +msgid "Change" +msgstr "Change" + +#: src/components/CoinList.tsx:84 +msgid "Coin" +msgstr "Coin" + +#: src/pages/Nft.tsx:238 +msgid "Coin Id" +msgstr "Coin Id" + +#: src/pages/Token.tsx:481 +msgid "Coins" +msgstr "Coins" + +#: src/pages/Login.tsx:300 +msgid "Cold Wallet" +msgstr "Cold Wallet" + +#: src/pages/Nft.tsx:105 +msgid "Collection Name" +msgstr "Collection Name" + +#: src/pages/Token.tsx:508 +#: src/pages/Token.tsx:557 +msgid "Combine" +msgstr "Combine" + +#: src/pages/Token.tsx:520 +msgid "Combine {0}" +msgstr "Combine {0}" + +#: src/pages/CreateWallet.tsx:260 +msgid "Confirm" +msgstr "Confirm" + +#: src/components/ConfirmationDialog.tsx:119 +msgid "Confirm transaction?" +msgstr "Confirm transaction?" + +#: src/components/CoinList.tsx:157 +msgid "Confirmed" +msgstr "Confirmed" + +#: src/pages/Settings.tsx:145 +#: src/pages/PeerList.tsx:416 +msgid "Connect" +msgstr "Connect" + +#: src/pages/PeerList.tsx:318 +msgid "Connected to {0} peers" +msgstr "Connected to {0} peers" + +#: src/components/Layout.tsx:82 +#: src/components/Header.tsx:128 +msgid "connecting..." +msgstr "connecting..." + +#: src/pages/Offers.tsx:234 +msgid "Copy" +msgstr "Copy" + +#: src/components/NftCard.tsx:346 +msgid "Copy ID" +msgstr "Copy ID" + +#: src/pages/MakeOffer.tsx:279 +msgid "Copy the offer file below and send it to the intended recipient or make it public to be accepted by anyone." +msgstr "Copy the offer file below and send it to the intended recipient or make it public to be accepted by anyone." + +#: src/pages/Login.tsx:81 +msgid "Create" +msgstr "Create" + +#: src/pages/Offers.tsx:118 +msgid "Create a new offer to get started with peer-to-peer trading." +msgstr "Create a new offer to get started with peer-to-peer trading." + +#: src/pages/DidList.tsx:85 +msgid "Create a profile?" +msgstr "Create a profile?" + +#: src/pages/Offers.tsx:137 +#: src/pages/MakeOffer.tsx:268 +msgid "Create Offer" +msgstr "Create Offer" + +#: src/pages/DidList.tsx:65 +#: src/pages/CreateProfile.tsx:58 +#: src/pages/CreateProfile.tsx:105 +msgid "Create Profile" +msgstr "Create Profile" + +#: src/pages/Login.tsx:498 +#: src/pages/CreateWallet.tsx:58 +msgid "Create Wallet" +msgstr "Create Wallet" + +#: src/pages/IssueToken.tsx:93 +msgid "Currency Symbol" +msgstr "Currency Symbol" + +#: src/pages/Settings.tsx:72 +msgid "Dark Mode" +msgstr "Dark Mode" + +#: src/components/NftCard.tsx:436 +msgid "Data" +msgstr "Data" + +#: src/pages/Nft.tsx:185 +msgid "Data Hash" +msgstr "Data Hash" + +#: src/pages/Nft.tsx:134 +msgid "Data URIs" +msgstr "Data URIs" + +#: src/pages/MintNft.tsx:143 +msgid "Data URLs" +msgstr "Data URLs" + +#: src/pages/MakeOffer.tsx:203 +msgid "Days" +msgstr "Days" + +#: src/pages/Offers.tsx:247 +#: src/pages/Offers.tsx:283 +#: src/pages/Login.tsx:279 +#: src/pages/Login.tsx:368 +msgid "Delete" +msgstr "Delete" + +#: src/pages/PeerList.tsx:345 +msgid "Delete ({0})" +msgstr "Delete ({0})" + +#: src/pages/Offers.tsx:260 +msgid "Delete offer record?" +msgstr "Delete offer record?" + +#: src/pages/Login.tsx:325 +msgid "Delete saved offer files" +msgstr "Delete saved offer files" + +#: src/pages/Nft.tsx:96 +msgid "Description" +msgstr "Description" + +#: src/pages/Login.tsx:243 +msgid "Details" +msgstr "Details" + +#: src/pages/CreateWallet.tsx:240 +msgid "Did you save your mnemonic?" +msgstr "Did you save your mnemonic?" + +#: src/pages/Settings.tsx:126 +msgid "Disconnect" +msgstr "Disconnect" + +#: src/pages/Settings.tsx:202 +msgid "Discover peers automatically" +msgstr "Discover peers automatically" + +#: src/pages/IssueToken.tsx:77 +#: src/pages/CreateProfile.tsx:72 +msgid "Display name" +msgstr "Display name" + +#: src/pages/Login.tsx:468 +msgid "Done" +msgstr "Done" + +#: src/pages/Token.tsx:251 +msgid "Edit" +msgstr "Edit" + +#: src/pages/Token.tsx:293 +msgid "Edit Token Details" +msgstr "Edit Token Details" + +#: src/pages/Send.tsx:155 +#: src/pages/MintNft.tsx:211 +#: src/components/TransferDialog.tsx:84 +msgid "Enter address" +msgstr "Enter address" + +#: src/pages/MakeOffer.tsx:363 +msgid "Enter amount" +msgstr "Enter amount" + +#: src/pages/MakeOffer.tsx:437 +msgid "Enter asset id" +msgstr "Enter asset id" + +#: src/pages/MintNft.tsx:148 +#: src/pages/MintNft.tsx:169 +#: src/pages/MintNft.tsx:190 +msgid "Enter comma separated URLs" +msgstr "Enter comma separated URLs" + +#: src/components/TransferDialog.tsx:101 +msgid "Enter fee amount" +msgstr "Enter fee amount" + +#: src/pages/MakeOffer.tsx:396 +msgid "Enter launcher id" +msgstr "Enter launcher id" + +#: src/components/FeeOnlyDialog.tsx:84 +msgid "Enter network fee" +msgstr "Enter network fee" + +#: src/pages/Offers.tsx:154 +msgid "Enter Offer String" +msgstr "Enter Offer String" + +#: src/pages/MintNft.tsx:234 +msgid "Enter percent" +msgstr "Enter percent" + +#: src/pages/PeerList.tsx:361 +msgid "Enter the IP address of the peer you want to connect to." +msgstr "Enter the IP address of the peer you want to connect to." + +#: src/pages/Token.tsx:296 +msgid "Enter the new display details for this token" +msgstr "Enter the new display details for this token" + +#: src/pages/DidList.tsx:260 +msgid "Enter the new display name for this profile." +msgstr "Enter the new display name for this profile." + +#: src/pages/Login.tsx:384 +msgid "Enter the new display name for this wallet." +msgstr "Enter the new display name for this wallet." + +#: src/components/NftCard.tsx:410 +msgid "Enter URL" +msgstr "Enter URL" + +#: src/pages/ImportWallet.tsx:94 +msgid "Enter your mnemonic, private key, or public key below. If it's a public key, it will be imported as a read-only cold wallet." +msgstr "Enter your mnemonic, private key, or public key below. If it's a public key, it will be imported as a read-only cold wallet." + +#: src/pages/Offers.tsx:201 +msgid "Expired" +msgstr "Expired" + +#: src/pages/MakeOffer.tsx:167 +msgid "Expiring offer" +msgstr "Expiring offer" + +#: src/pages/Nft.tsx:254 +msgid "External Links" +msgstr "External Links" + +#: src/pages/Send.tsx:197 +#: src/pages/IssueToken.tsx:129 +#: src/components/ConfirmationDialog.tsx:154 +#: src/components/ConfirmationDialog.tsx:379 +msgid "Fee" +msgstr "Fee" + +#: src/components/ConfirmationDialog.tsx:143 +msgid "Fee exceeds recommended maximum of 0.001 {0}" +msgstr "Fee exceeds recommended maximum of 0.001 {0}" + +#: src/pages/Addresses.tsx:55 +msgid "Fresh Address" +msgstr "Fresh Address" + +#: src/pages/Settings.tsx:349 +msgid "Generate addresses automatically" +msgstr "Generate addresses automatically" + +#: src/pages/Settings.tsx:60 +msgid "Global" +msgstr "Global" + +#: src/components/Header.tsx:96 +msgid "Go to wallet" +msgstr "Go to wallet" + +#: src/components/NftOptions.tsx:155 +msgid "Group Collections" +msgstr "Group Collections" + +#: src/pages/PeerList.tsx:143 +msgid "Height:" +msgstr "Height:" + +#: src/pages/Token.tsx:259 +#: src/pages/NftList.tsx:273 +#: src/pages/DidList.tsx:239 +#: src/components/NftCard.tsx:333 +msgid "Hide" +msgstr "Hide" + +#: src/components/ConfirmationDialog.tsx:140 +msgid "High Transaction Fee" +msgstr "High Transaction Fee" + +#: src/pages/Login.tsx:293 +msgid "Hot Wallet" +msgstr "Hot Wallet" + +#: src/pages/MakeOffer.tsx:225 +msgid "Hours" +msgstr "Hours" + +#: src/pages/Login.tsx:78 +msgid "Import" +msgstr "Import" + +#: src/pages/Login.tsx:495 +#: src/pages/ImportWallet.tsx:40 +#: src/pages/ImportWallet.tsx:104 +msgid "Import Wallet" +msgstr "Import Wallet" + +#: src/pages/Transactions.tsx:106 +msgid "Increase Fee" +msgstr "Increase Fee" + +#: src/components/AddressList.tsx:47 +msgid "Index" +msgstr "Index" + +#: src/pages/Send.tsx:101 +msgid "Invalid address" +msgstr "Invalid address" + +#: src/pages/PeerList.tsx:199 +#: src/pages/PeerList.tsx:370 +msgid "IP Address" +msgstr "IP Address" + +#: src/pages/TokenList.tsx:125 +#: src/pages/IssueToken.tsx:62 +#: src/pages/IssueToken.tsx:148 +msgid "Issue Token" +msgstr "Issue Token" + +#: src/components/ConfirmationDialog.tsx:132 +msgid "JSON" +msgstr "JSON" + +#: src/components/NftCard.tsx:423 +msgid "Kind" +msgstr "Kind" + +#: src/components/NftCard.tsx:153 +msgid "Kind is required" +msgstr "Kind is required" + +#: src/pages/Nft.tsx:88 +msgid "Launcher Id" +msgstr "Launcher Id" + +#: src/components/NftCard.tsx:442 +msgid "License" +msgstr "License" + +#: src/pages/Nft.tsx:203 +msgid "License Hash" +msgstr "License Hash" + +#: src/pages/Nft.tsx:168 +msgid "License URIs" +msgstr "License URIs" + +#: src/pages/MintNft.tsx:185 +msgid "License URLs" +msgstr "License URLs" + +#: src/pages/Login.tsx:231 +msgid "Login" +msgstr "Login" + +#: src/components/Layout.tsx:103 +#: src/components/Header.tsx:149 +msgid "Logout" +msgstr "Logout" + +#: src/pages/CreateWallet.tsx:243 +msgid "Make sure you have saved your mnemonic. You will not be able to access it later, since it will not be saved in the wallet. You will also not be able to make transactions with this wallet." +msgstr "Make sure you have saved your mnemonic. You will not be able to access it later, since it will not be saved in the wallet. You will also not be able to make transactions with this wallet." + +#: src/pages/Offers.tsx:112 +msgid "Manage offers" +msgstr "Manage offers" + +#: src/components/NftCard.tsx:439 +msgid "Metadata" +msgstr "Metadata" + +#: src/pages/Nft.tsx:194 +msgid "Metadata Hash" +msgstr "Metadata Hash" + +#: src/pages/Nft.tsx:151 +msgid "Metadata URIs" +msgstr "Metadata URIs" + +#: src/pages/MintNft.tsx:164 +msgid "Metadata URLs" +msgstr "Metadata URLs" + +#: src/pages/MintNft.tsx:283 +msgid "Mint" +msgstr "Mint" + +#: src/pages/NftList.tsx:126 +msgid "Mint an NFT?" +msgstr "Mint an NFT?" + +#: src/pages/NftList.tsx:119 +#: src/pages/MintNft.tsx:96 +msgid "Mint NFT" +msgstr "Mint NFT" + +#: src/pages/Nft.tsx:213 +msgid "Minter DID" +msgstr "Minter DID" + +#: src/pages/MintNft.tsx:283 +msgid "Minting" +msgstr "Minting" + +#: src/pages/MakeOffer.tsx:247 +msgid "Minutes" +msgstr "Minutes" + +#: src/pages/Login.tsx:456 +#: src/pages/CreateWallet.tsx:195 +msgid "Mnemonic" +msgstr "Mnemonic" + +#: src/pages/Token.tsx:302 +#: src/pages/IssueToken.tsx:74 +#: src/pages/DidList.tsx:266 +#: src/pages/CreateProfile.tsx:69 +msgid "Name" +msgstr "Name" + +#: src/pages/IssueToken.tsx:35 +#: src/pages/CreateProfile.tsx:35 +msgid "Name is required" +msgstr "Name is required" + +#: src/pages/Login.tsx:394 +msgid "Name of your wallet" +msgstr "Name of your wallet" + +#: src/pages/Settings.tsx:185 +msgid "Network" +msgstr "Network" + +#: src/pages/ViewOffer.tsx:69 +#: src/pages/Token.tsx:539 +#: src/pages/Token.tsx:607 +#: src/pages/MintNft.tsx:256 +#: src/pages/MakeOffer.tsx:143 +#: src/pages/CreateProfile.tsx:86 +#: src/components/TransferDialog.tsx:96 +#: src/components/NftCard.tsx:458 +#: src/components/FeeOnlyDialog.tsx:79 +#: src/components/AssignNftDialog.tsx:131 +msgid "Network Fee" +msgstr "Network Fee" + +#: src/components/FeeOnlyDialog.tsx:85 +#: src/components/AssignNftDialog.tsx:136 +msgid "Network fee amount" +msgstr "Network fee amount" + +#: src/pages/Settings.tsx:233 +msgid "Network ID" +msgstr "Network ID" + +#: src/components/Layout.tsx:63 +#: src/components/Header.tsx:109 +msgid "Network status" +msgstr "Network status" + +#: src/pages/MakeOffer.tsx:92 +msgid "New Offer" +msgstr "New Offer" + +#: src/components/NftOptions.tsx:62 +#: src/components/CoinList.tsx:350 +#: src/components/AddressList.tsx:190 +msgid "Next page" +msgstr "Next page" + +#: src/pages/MakeOffer.tsx:340 +#: src/pages/MakeOffer.tsx:389 +#: src/components/OfferCard.tsx:172 +msgid "NFT" +msgstr "NFT" + +#: src/components/NftCard.tsx:235 +msgid "NFT options" +msgstr "NFT options" + +#: src/components/OfferCard.tsx:186 +msgid "NFT preview" +msgstr "NFT preview" + +#: src/pages/NftList.tsx:113 +#: src/components/Nav.tsx:21 +msgid "NFTs" +msgstr "NFTs" + +#: src/pages/Settings.tsx:132 +msgid "No active sessions" +msgstr "No active sessions" + +#: src/components/NftCard.tsx:229 +msgid "No collection" +msgstr "No collection" + +#: src/pages/Offers.tsx:114 +msgid "No offers yet" +msgstr "No offers yet" + +#: src/pages/PeerList.tsx:489 +#: src/components/CoinList.tsx:325 +#: src/components/AddressList.tsx:167 +msgid "No results." +msgstr "No results." + +#: src/pages/Nft.tsx:216 +#: src/pages/Nft.tsx:225 +msgid "None" +msgstr "None" + +#: src/components/TransferDialog.tsx:50 +#: src/components/NftCard.tsx:156 +#: src/components/FeeOnlyDialog.tsx:49 +#: src/components/AssignNftDialog.tsx:59 +msgid "Not enough funds to cover the fee" +msgstr "Not enough funds to cover the fee" + +#: src/pages/Transactions.tsx:61 +msgid "Note" +msgstr "Note" + +#: src/pages/MakeOffer.tsx:276 +msgid "Offer Details" +msgstr "Offer Details" + +#: src/pages/MakeOffer.tsx:283 +msgid "Offer File" +msgstr "Offer File" + +#: src/pages/Offers.tsx:209 +#: src/pages/MakeOffer.tsx:100 +msgid "Offered" +msgstr "Offered" + +#: src/pages/Offers.tsx:103 +#: src/components/Nav.tsx:29 +msgid "Offers" +msgstr "Offers" + +#: src/pages/Token.tsx:586 +msgid "Output Count" +msgstr "Output Count" + +#: src/pages/Nft.tsx:222 +msgid "Owner DID" +msgstr "Owner DID" + +#: src/pages/Settings.tsx:141 +msgid "Paste WalletConnect URI" +msgstr "Paste WalletConnect URI" + +#: src/pages/Offers.tsx:159 +msgid "Paste your offer string here..." +msgstr "Paste your offer string here..." + +#: src/pages/PeerList.tsx:207 +msgid "Peak Height" +msgstr "Peak Height" + +#: src/pages/PeerList.tsx:307 +msgid "Peer List" +msgstr "Peer List" + +#: src/pages/Offers.tsx:195 +msgid "Pending" +msgstr "Pending" + +#: src/components/CoinList.tsx:171 +#: src/components/CoinList.tsx:236 +msgid "Pending..." +msgstr "Pending..." + +#: src/components/ConfirmationDialog.tsx:435 +#: src/components/ConfirmationDialog.tsx:463 +#: src/components/ConfirmationDialog.tsx:497 +#: src/components/ConfirmationDialog.tsx:532 +msgid "Permanently Burned" +msgstr "Permanently Burned" + +#: src/pages/Login.tsx:353 +msgid "Permanently Delete" +msgstr "Permanently Delete" + +#: src/pages/PeerList.tsx:203 +msgid "Port" +msgstr "Port" + +#: src/pages/PeerList.tsx:149 +msgid "Port:" +msgstr "Port:" + +#: src/pages/PeerList.tsx:392 +msgid "Prevents the peer from being banned." +msgstr "Prevents the peer from being banned." + +#: src/components/NftOptions.tsx:50 +#: src/components/CoinList.tsx:341 +#: src/components/AddressList.tsx:181 +msgid "Previous page" +msgstr "Previous page" + +#: src/pages/MintNft.tsx:107 +#: src/components/ConfirmationDialog.tsx:480 +#: src/components/ConfirmationDialog.tsx:494 +#: src/components/AssignNftDialog.tsx:93 +msgid "Profile" +msgstr "Profile" + +#: src/pages/MintNft.tsx:45 +#: src/components/AssignNftDialog.tsx:56 +msgid "Profile is required" +msgstr "Profile is required" + +#: src/pages/DidList.tsx:270 +msgid "Profile name" +msgstr "Profile name" + +#: src/pages/DidList.tsx:59 +#: src/components/Nav.tsx:25 +msgid "Profiles" +msgstr "Profiles" + +#: src/pages/Login.tsx:437 +msgid "Public Key" +msgstr "Public Key" + +#: src/components/NftCard.tsx:268 +msgid "Reassign Profile" +msgstr "Reassign Profile" + +#: src/pages/Token.tsx:239 +msgid "Receive" +msgstr "Receive" + +#: src/pages/Addresses.tsx:49 +msgid "Receive {0}" +msgstr "Receive {0}" + +#: src/components/ReceiveAddress.tsx:64 +msgid "Receive Address" +msgstr "Receive Address" + +#: src/components/OfferCard.tsx:50 +msgid "Receiving" +msgstr "Receiving" + +#: src/pages/Token.tsx:254 +msgid "Refresh Info" +msgstr "Refresh Info" + +#: src/pages/Token.tsx:350 +#: src/pages/Login.tsx:255 +#: src/pages/Login.tsx:418 +#: src/pages/DidList.tsx:223 +#: src/pages/DidList.tsx:293 +msgid "Rename" +msgstr "Rename" + +#: src/pages/DidList.tsx:257 +msgid "Rename Profile" +msgstr "Rename Profile" + +#: src/pages/Login.tsx:381 +msgid "Rename Wallet" +msgstr "Rename Wallet" + +#: src/pages/Offers.tsx:210 +#: src/pages/MakeOffer.tsx:122 +msgid "Requested" +msgstr "Requested" + +#: src/pages/Transactions.tsx:95 +msgid "Resubmit" +msgstr "Resubmit" + +#: src/pages/Login.tsx:340 +msgid "Resync" +msgstr "Resync" + +#: src/pages/Login.tsx:267 +msgid "Resync ({network})" +msgstr "Resync ({network})" + +#: src/pages/Login.tsx:315 +msgid "Resync on {network}" +msgstr "Resync on {network}" + +#: src/pages/Nft.tsx:245 +msgid "Royalties ({0}%)" +msgstr "Royalties ({0}%)" + +#: src/components/OfferCard.tsx:115 +#: src/components/OfferCard.tsx:159 +msgid "royalty" +msgstr "royalty" + +#: src/pages/MintNft.tsx:206 +msgid "Royalty Address" +msgstr "Royalty Address" + +#: src/pages/MintNft.tsx:228 +msgid "Royalty Percent" +msgstr "Royalty Percent" + +#: src/components/OfferCard.tsx:201 +msgid "royalty to" +msgstr "royalty to" + +#: src/pages/MakeOffer.tsx:299 +msgid "Save" +msgstr "Save" + +#: src/pages/CreateWallet.tsx:171 +msgid "Save mnemonic" +msgstr "Save mnemonic" + +#: src/pages/ViewOffer.tsx:97 +msgid "Save Offer" +msgstr "Save Offer" + +#: src/pages/Login.tsx:447 +msgid "Secret Key" +msgstr "Secret Key" + +#: src/components/CoinList.tsx:61 +msgid "Select all coins" +msgstr "Select all coins" + +#: src/components/CoinList.tsx:69 +msgid "Select coin row" +msgstr "Select coin row" + +#: src/components/NftCard.tsx:431 +#: src/components/NftCard.tsx:432 +msgid "Select kind" +msgstr "Select kind" + +#: src/pages/Settings.tsx:254 +msgid "Select network" +msgstr "Select network" + +#: src/pages/MintNft.tsx:113 +#: src/pages/MintNft.tsx:115 +#: src/components/AssignNftDialog.tsx:99 +#: src/components/AssignNftDialog.tsx:101 +msgid "Select profile" +msgstr "Select profile" + +#: src/pages/PeerList.tsx:314 +msgid "Selected {0} of {1} peers" +msgstr "Selected {0} of {1} peers" + +#: src/pages/Token.tsx:233 +msgid "Send" +msgstr "Send" + +#: src/pages/Send.tsx:135 +#: src/pages/Send.tsx:219 +msgid "Send {0}" +msgstr "Send {0}" + +#: src/components/OfferCard.tsx:29 +msgid "Sending" +msgstr "Sending" + +#: src/pages/Settings.tsx:40 +#: src/components/Layout.tsx:96 +#: src/components/Header.tsx:142 +msgid "Settings" +msgstr "Settings" + +#: src/pages/Token.tsx:259 +#: src/pages/NftList.tsx:273 +#: src/pages/DidList.tsx:239 +#: src/components/NftCard.tsx:333 +msgid "Show" +msgstr "Show" + +#: src/components/CoinList.tsx:214 +msgid "Show all coins" +msgstr "Show all coins" + +#: src/components/CoinList.tsx:214 +msgid "Show unspent coins only" +msgstr "Show unspent coins only" + +#: src/components/ConfirmationDialog.tsx:215 +msgid "Sign Transaction" +msgstr "Sign Transaction" + +#: src/pages/TokenList.tsx:254 +#: src/components/NftOptions.tsx:122 +msgid "Sort Alphabetically" +msgstr "Sort Alphabetically" + +#: src/pages/TokenList.tsx:267 +msgid "Sort by Balance" +msgstr "Sort by Balance" + +#: src/components/NftOptions.tsx:97 +msgid "Sort options" +msgstr "Sort options" + +#: src/components/NftOptions.tsx:138 +msgid "Sort Recent" +msgstr "Sort Recent" + +#: src/components/CoinList.tsx:196 +msgid "Spent" +msgstr "Spent" + +#: src/components/ConfirmationDialog.tsx:358 +msgid "Spent Coins" +msgstr "Spent Coins" + +#: src/pages/Token.tsx:498 +#: src/pages/Token.tsx:625 +msgid "Split" +msgstr "Split" + +#: src/pages/Token.tsx:569 +msgid "Split {0}" +msgstr "Split {0}" + +#: src/pages/CreateWallet.tsx:233 +#: src/components/ConfirmationDialog.tsx:291 +msgid "Submit" +msgstr "Submit" + +#: src/components/ConfirmationDialog.tsx:291 +msgid "Submitting" +msgstr "Submitting" + +#: src/components/ConfirmationDialog.tsx:126 +#: src/components/ConfirmationDialog.tsx:150 +msgid "Summary" +msgstr "Summary" + +#: src/components/Layout.tsx:85 +#: src/components/Header.tsx:131 +msgid "Syncing {0} / {1}" +msgstr "Syncing {0} / {1}" + +#: src/pages/TokenList.tsx:132 +msgid "Syncing in progress..." +msgstr "Syncing in progress..." + +#: src/pages/ViewOffer.tsx:101 +msgid "Take Offer" +msgstr "Take Offer" + +#: src/pages/Offers.tsx:197 +msgid "Taken" +msgstr "Taken" + +#: src/pages/Settings.tsx:207 +msgid "Target Peers" +msgstr "Target Peers" + +#: src/components/OfferCard.tsx:55 +msgid "The assets being given to you in the offer." +msgstr "The assets being given to you in the offer." + +#: src/components/OfferCard.tsx:34 +msgid "The assets you have to pay to fulfill the offer." +msgstr "The assets you have to pay to fulfill the offer." + +#: src/pages/Addresses.tsx:58 +msgid "The wallet generates a new address after each transaction. Old ones stay valid." +msgstr "The wallet generates a new address after each transaction. Old ones stay valid." + +#: src/pages/TokenList.tsx:135 +msgid "The wallet is still syncing. Balances may not be accurate until it completes." +msgstr "The wallet is still syncing. Balances may not be accurate until it completes." + +#: src/pages/Login.tsx:487 +msgid "There aren't any wallets to log into yet. To get started, create a new wallet or import an existing one." +msgstr "There aren't any wallets to log into yet. To get started, create a new wallet or import an existing one." + +#: src/pages/ViewOffer.tsx:88 +msgid "This does not include a fee of {0} which was already added by the maker." +msgstr "This does not include a fee of {0} which was already added by the maker." + +#: src/components/ConfirmationDialog.tsx:185 +msgid "This is the raw JSON spend bundle for this transaction. If you sign it, the transaction can be submitted to the mempool externally." +msgstr "This is the raw JSON spend bundle for this transaction. If you sign it, the transaction can be submitted to the mempool externally." + +#: src/pages/Transactions.tsx:64 +msgid "This only shows transactions initiated by this app that are currently pending in the mempool." +msgstr "This only shows transactions initiated by this app that are currently pending in the mempool." + +#: src/components/NftCard.tsx:389 +msgid "This will add an additional URL to the NFT. It is not possible to remove URLs later, so be careful with this and try to use permanent URLs if possible." +msgstr "This will add an additional URL to the NFT. It is not possible to remove URLs later, so be careful with this and try to use permanent URLs if possible." + +#: src/components/NftCard.tsx:370 +msgid "This will assign the NFT to the selected profile." +msgstr "This will assign the NFT to the selected profile." + +#: src/components/MultiSelectActions.tsx:170 +msgid "This will bulk assign the NFTs to the selected profile." +msgstr "This will bulk assign the NFTs to the selected profile." + +#: src/components/MultiSelectActions.tsx:188 +msgid "This will bulk burn {0} NFTs. This cannot be undone. Are you sure you want to proceed?" +msgstr "This will bulk burn {0} NFTs. This cannot be undone. Are you sure you want to proceed?" + +#: src/components/MultiSelectActions.tsx:158 +msgid "This will bulk transfer {0} NFTs to another wallet. Are you sure you want to proceed?" +msgstr "This will bulk transfer {0} NFTs to another wallet. Are you sure you want to proceed?" + +#: src/components/MultiSelectActions.tsx:179 +msgid "This will bulk unassign the NFTs from their profiles." +msgstr "This will bulk unassign the NFTs from their profiles." + +#: src/pages/Token.tsx:523 +msgid "This will combine all of the selected coins into one." +msgstr "This will combine all of the selected coins into one." + +#: src/pages/Offers.tsx:263 +msgid "This will delete the offer from the wallet, but if it's shared externally it can still be accepted. The only way to truly cancel a public offer is by spending one or more of its coins." +msgstr "This will delete the offer from the wallet, but if it's shared externally it can still be accepted. The only way to truly cancel a public offer is by spending one or more of its coins." + +#: src/components/NftCard.tsx:491 +msgid "This will permanently delete the NFT by sending it to the burn address." +msgstr "This will permanently delete the NFT by sending it to the burn address." + +#: src/pages/DidList.tsx:314 +msgid "This will permanently delete the profile by sending it to the burn address." +msgstr "This will permanently delete the profile by sending it to the burn address." + +#: src/components/NftCard.tsx:361 +msgid "This will send the NFT to the provided address." +msgstr "This will send the NFT to the provided address." + +#: src/pages/DidList.tsx:305 +msgid "This will send the profile to the provided address." +msgstr "This will send the profile to the provided address." + +#: src/pages/Token.tsx:572 +msgid "This will split all of the selected coins." +msgstr "This will split all of the selected coins." + +#: src/components/NftCard.tsx:379 +msgid "This will unassign the NFT from its profile." +msgstr "This will unassign the NFT from its profile." + +#: src/pages/Token.tsx:321 +#: src/pages/IssueToken.tsx:90 +msgid "Ticker" +msgstr "Ticker" + +#: src/pages/IssueToken.tsx:36 +msgid "Ticker is required" +msgstr "Ticker is required" + +#: src/components/NftOptions.tsx:86 +msgid "Toggle hidden NFTs" +msgstr "Toggle hidden NFTs" + +#: src/components/NftOptions.tsx:74 +msgid "Toggle multi-select" +msgstr "Toggle multi-select" + +#: src/components/Header.tsx:74 +#: src/components/Header.tsx:78 +msgid "Toggle navigation menu" +msgstr "Toggle navigation menu" + +#: src/pages/MakeOffer.tsx:352 +#: src/pages/MakeOffer.tsx:430 +msgid "Token" +msgstr "Token" + +#: src/pages/Transactions.tsx:75 +msgid "Transaction {0}" +msgstr "Transaction {0}" + +#: src/components/ConfirmationDialog.tsx:373 +msgid "Transaction Output" +msgstr "Transaction Output" + +#: src/components/ConfirmationDialog.tsx:213 +msgid "Transaction Signed" +msgstr "Transaction Signed" + +#: src/pages/Transactions.tsx:54 +msgid "Transactions" +msgstr "Transactions" + +#: src/pages/DidList.tsx:197 +#: src/components/TransferDialog.tsx:117 +#: src/components/NftCard.tsx:251 +#: src/components/MultiSelectActions.tsx:105 +#: src/components/FeeOnlyDialog.tsx:101 +#: src/components/AssignNftDialog.tsx:152 +msgid "Transfer" +msgstr "Transfer" + +#: src/components/NftCard.tsx:356 +msgid "Transfer NFT" +msgstr "Transfer NFT" + +#: src/pages/DidList.tsx:300 +msgid "Transfer Profile" +msgstr "Transfer Profile" + +#: src/pages/PeerList.tsx:213 +msgid "Trusted" +msgstr "Trusted" + +#: src/pages/PeerList.tsx:385 +msgid "Trusted peer" +msgstr "Trusted peer" + +#: src/components/NftCard.tsx:284 +#: src/components/NftCard.tsx:374 +#: src/components/MultiSelectActions.tsx:131 +msgid "Unassign Profile" +msgstr "Unassign Profile" + +#: src/pages/Collection.tsx:92 +#: src/components/ConfirmationDialog.tsx:516 +#: src/components/ConfirmationDialog.tsx:530 +msgid "Unknown" +msgstr "Unknown" + +#: src/pages/Settings.tsx:114 +#: src/pages/Settings.tsx:118 +msgid "Unknown App" +msgstr "Unknown App" + +#: src/pages/Send.tsx:135 +msgid "unknown asset" +msgstr "unknown asset" + +#: src/pages/Token.tsx:196 +msgid "Unknown asset" +msgstr "Unknown asset" + +#: src/pages/Nft.tsx:80 +msgid "Unknown NFT" +msgstr "Unknown NFT" + +#: src/pages/NftList.tsx:233 +#: src/pages/NftList.tsx:244 +#: src/components/OfferCard.tsx:177 +#: src/components/NftCard.tsx:208 +#: src/components/NftCard.tsx:226 +#: src/components/ConfirmationDialog.tsx:481 +#: src/components/ConfirmationDialog.tsx:495 +msgid "Unnamed" +msgstr "Unnamed" + +#: src/components/CoinList.tsx:211 +#: src/components/CoinList.tsx:228 +#: src/components/CoinList.tsx:263 +msgid "Unspent" +msgstr "Unspent" + +#: src/pages/DidList.tsx:178 +msgid "Untitled Profile" +msgstr "Untitled Profile" + +#: src/components/NftCard.tsx:407 +msgid "URL" +msgstr "URL" + +#: src/components/NftCard.tsx:152 +msgid "URL is required" +msgstr "URL is required" + +#: src/pages/CreateWallet.tsx:143 +msgid "Use 24 words" +msgstr "Use 24 words" + +#: src/pages/TokenList.tsx:146 +#: src/pages/DidList.tsx:71 +msgid "View hidden" +msgstr "View hidden" + +#: src/pages/Offers.tsx:132 +#: src/pages/Offers.tsx:165 +msgid "View Offer" +msgstr "View Offer" + +#: src/pages/Settings.tsx:301 +#: src/pages/Login.tsx:483 +#: src/components/Nav.tsx:17 +msgid "Wallet" +msgstr "Wallet" + +#: src/pages/Login.tsx:431 +msgid "Wallet Details" +msgstr "Wallet Details" + +#: src/components/Layout.tsx:50 +#: src/components/Header.tsx:98 +msgid "Wallet icon" +msgstr "Wallet icon" + +#: src/pages/ImportWallet.tsx:88 +msgid "Wallet Key" +msgstr "Wallet Key" + +#: src/pages/Settings.tsx:308 +#: src/pages/Login.tsx:390 +#: src/pages/ImportWallet.tsx:72 +#: src/pages/CreateWallet.tsx:125 +msgid "Wallet Name" +msgstr "Wallet Name" + +#: src/pages/Settings.tsx:99 +msgid "WalletConnect" +msgstr "WalletConnect" + +#: src/pages/Login.tsx:74 +msgid "Wallets" +msgstr "Wallets" + +#: src/components/ConfirmationDialog.tsx:182 +msgid "Warning" +msgstr "Warning" + +#: src/pages/CreateWallet.tsx:146 +msgid "While 12 word mnemonics are sufficiently hard to crack, you can choose to use 24 instead to increase security." +msgstr "While 12 word mnemonics are sufficiently hard to crack, you can choose to use 24 instead to increase security." + +#: src/pages/Transactions.tsx:115 +msgid "With a fee of" +msgstr "With a fee of" + +#: src/components/ConfirmationDialog.tsx:437 +#: src/components/ConfirmationDialog.tsx:465 +#: src/components/ConfirmationDialog.tsx:499 +#: src/components/ConfirmationDialog.tsx:534 +msgid "You" +msgstr "You" + +#: src/pages/Offers.tsx:123 +msgid "You can also paste an offer using <0>{0}." +msgstr "You can also paste an offer using <0>{0}." + +#: src/pages/DidList.tsx:88 +msgid "You do not currently have any {0} DID profiles. Would you like to create one?" +msgstr "You do not currently have any {0} DID profiles. Would you like to create one?" + +#: src/pages/NftList.tsx:129 +msgid "You do not currently have any NFTs. Would you like to mint one?" +msgstr "You do not currently have any NFTs. Would you like to mint one?" diff --git a/src/locales/zh-CN/messages.po b/src/locales/zh-CN/messages.po new file mode 100644 index 00000000..e2288b1a --- /dev/null +++ b/src/locales/zh-CN/messages.po @@ -0,0 +1,1402 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2024-12-22 00:52-0300\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: zh-CN\n" + +#: src/components/Layout.tsx:75 +#: src/components/Header.tsx:121 +msgid "{0, plural, one {# peer} other {# peers}}" +msgstr "" + +#: src/pages/PeerList.tsx:522 +msgid "{0, plural, one {Ban peer temporarily} other {Ban peers temporarily}}" +msgstr "" + +#: src/pages/PeerList.tsx:569 +msgid "{0, plural, one {Remove Peer} other {Remove Peers}}" +msgstr "" + +#: src/pages/PeerList.tsx:513 +msgid "{0, plural, one {This will remove the peer from your connection. If you are currently syncing against this peer, a new one will be used to replace it.} other {This will remove # peers from your connection. If you are currently syncing against these peers, new ones will be used to replace them.}}" +msgstr "" + +#: src/pages/PeerList.tsx:533 +msgid "{0, plural, one {Will temporarily prevent the peer from being connected to.} other {Will temporarily prevent the peers from being connected to.}}" +msgstr "" + +#: src/components/MultiSelectActions.tsx:85 +msgid "{0} selected" +msgstr "" + +#: src/pages/PeerList.tsx:230 +#: src/components/MultiSelectActions.tsx:90 +#: src/components/AddressList.tsx:68 +msgid "Actions" +msgstr "" + +#: src/pages/PeerList.tsx:358 +msgid "Add new peer" +msgstr "" + +#: src/components/NftCard.tsx:386 +msgid "Add NFT URL" +msgstr "" + +#: src/pages/PeerList.tsx:352 +msgid "Add Peer" +msgstr "" + +#: src/pages/MakeOffer.tsx:105 +msgid "Add the assets you are offering." +msgstr "" + +#: src/pages/MakeOffer.tsx:127 +msgid "Add the assets you are requesting." +msgstr "" + +#: src/components/NftCard.tsx:300 +#: src/components/NftCard.tsx:477 +msgid "Add URL" +msgstr "" + +#: src/pages/Send.tsx:148 +#: src/pages/Nft.tsx:231 +#: src/components/TransferDialog.tsx:81 +#: src/components/AddressList.tsx:57 +msgid "Address" +msgstr "" + +#: src/pages/Settings.tsx:354 +msgid "Address Batch Size" +msgstr "" + +#: src/components/TransferDialog.tsx:47 +msgid "Address is required" +msgstr "" + +#: src/components/Nav.tsx:33 +msgid "Addresses" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:129 +msgid "Advanced" +msgstr "" + +#: src/pages/Addresses.tsx:71 +msgid "All Addresses" +msgstr "" + +#: src/pages/Send.tsx:171 +#: src/pages/MakeOffer.tsx:447 +#: src/pages/IssueToken.tsx:108 +#: src/components/CoinList.tsx:109 +msgid "Amount" +msgstr "" + +#: src/components/OfferCard.tsx:158 +msgid "Amount includes" +msgstr "" + +#: src/components/OfferCard.tsx:113 +msgid "Amount includes " +msgstr "" + +#: src/pages/Login.tsx:356 +msgid "Are you sure you want to delete this wallet? This cannot be undone, and all funds will be lost unless you have saved your mnemonic phrase." +msgstr "" + +#: src/pages/PeerList.tsx:507 +msgid "Are you sure you want to remove {0} peers?" +msgstr "" + +#: src/pages/PeerList.tsx:505 +msgid "Are you sure you want to remove the peer?" +msgstr "" + +#: src/pages/Login.tsx:318 +msgid "Are you sure you want to resync this wallet's data? This will re-download data from the network which can take a while depending on the size of the wallet." +msgstr "" + +#: src/pages/Token.tsx:259 +msgid "Asset" +msgstr "" + +#: src/pages/TokenList.tsx:114 +msgid "Assets" +msgstr "" + +#: src/components/NftCard.tsx:266 +#: src/components/NftCard.tsx:365 +#: src/components/MultiSelectActions.tsx:118 +msgid "Assign Profile" +msgstr "" + +#: src/components/Layout.tsx:81 +#: src/components/Header.tsx:127 +msgid "at peak {peerMaxHeight}" +msgstr "" + +#: src/pages/Nft.tsx:116 +msgid "Attributes" +msgstr "" + +#: src/components/Header.tsx:61 +#: src/components/Header.tsx:65 +#: src/components/Header.tsx:164 +msgid "Back" +msgstr "" + +#: src/components/MultiSelectActions.tsx:165 +msgid "Bulk Assign Profile" +msgstr "" + +#: src/components/MultiSelectActions.tsx:183 +msgid "Bulk Burn NFTs" +msgstr "" + +#: src/components/MultiSelectActions.tsx:153 +msgid "Bulk Transfer NFTs" +msgstr "" + +#: src/components/MultiSelectActions.tsx:174 +msgid "Bulk Unassign Profile" +msgstr "" + +#: src/pages/DidList.tsx:210 +#: src/components/NftCard.tsx:314 +#: src/components/MultiSelectActions.tsx:144 +msgid "Burn" +msgstr "" + +#: src/components/NftCard.tsx:486 +msgid "Burn NFT" +msgstr "" + +#: src/pages/DidList.tsx:309 +msgid "Burn Profile" +msgstr "" + +#: src/pages/CreateWallet.tsx:174 +msgid "By disabling this you are creating a cold wallet, with no ability to sign transactions. The mnemonic will need to be saved elsewhere." +msgstr "" + +#: src/pages/Token.tsx:347 +#: src/pages/Token.tsx:554 +#: src/pages/Token.tsx:622 +#: src/pages/PeerList.tsx:330 +#: src/pages/PeerList.tsx:402 +#: src/pages/PeerList.tsx:551 +#: src/pages/Offers.tsx:272 +#: src/pages/Login.tsx:337 +#: src/pages/Login.tsx:365 +#: src/pages/Login.tsx:415 +#: src/pages/DidList.tsx:290 +#: src/pages/CreateWallet.tsx:252 +#: src/components/TransferDialog.tsx:114 +#: src/components/NftCard.tsx:474 +#: src/components/FeeOnlyDialog.tsx:98 +#: src/components/ConfirmationDialog.tsx:242 +#: src/components/AssignNftDialog.tsx:149 +msgid "Cancel" +msgstr "" + +#: src/pages/MakeOffer.tsx:265 +msgid "Cancel Offer" +msgstr "" + +#: src/pages/Offers.tsx:199 +msgid "Cancelled" +msgstr "" + +#: src/components/OfferCard.tsx:127 +msgid "CAT" +msgstr "" + +#: src/components/OfferCard.tsx:143 +msgid "CAT icon" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:159 +msgid "Change" +msgstr "" + +#: src/components/CoinList.tsx:84 +msgid "Coin" +msgstr "" + +#: src/pages/Nft.tsx:238 +msgid "Coin Id" +msgstr "" + +#: src/pages/Token.tsx:481 +msgid "Coins" +msgstr "" + +#: src/pages/Login.tsx:300 +msgid "Cold Wallet" +msgstr "" + +#: src/pages/Nft.tsx:105 +msgid "Collection Name" +msgstr "" + +#: src/pages/Token.tsx:508 +#: src/pages/Token.tsx:557 +msgid "Combine" +msgstr "" + +#: src/pages/Token.tsx:520 +msgid "Combine {0}" +msgstr "" + +#: src/pages/CreateWallet.tsx:260 +msgid "Confirm" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:119 +msgid "Confirm transaction?" +msgstr "" + +#: src/components/CoinList.tsx:157 +msgid "Confirmed" +msgstr "" + +#: src/pages/Settings.tsx:145 +#: src/pages/PeerList.tsx:416 +msgid "Connect" +msgstr "" + +#: src/pages/PeerList.tsx:318 +msgid "Connected to {0} peers" +msgstr "" + +#: src/components/Layout.tsx:82 +#: src/components/Header.tsx:128 +msgid "connecting..." +msgstr "" + +#: src/pages/Offers.tsx:234 +msgid "Copy" +msgstr "" + +#: src/components/NftCard.tsx:346 +msgid "Copy ID" +msgstr "" + +#: src/pages/MakeOffer.tsx:279 +msgid "Copy the offer file below and send it to the intended recipient or make it public to be accepted by anyone." +msgstr "" + +#: src/pages/Login.tsx:81 +msgid "Create" +msgstr "" + +#: src/pages/Offers.tsx:118 +msgid "Create a new offer to get started with peer-to-peer trading." +msgstr "" + +#: src/pages/DidList.tsx:85 +msgid "Create a profile?" +msgstr "" + +#: src/pages/Offers.tsx:137 +#: src/pages/MakeOffer.tsx:268 +msgid "Create Offer" +msgstr "" + +#: src/pages/DidList.tsx:65 +#: src/pages/CreateProfile.tsx:58 +#: src/pages/CreateProfile.tsx:105 +msgid "Create Profile" +msgstr "" + +#: src/pages/Login.tsx:498 +#: src/pages/CreateWallet.tsx:58 +msgid "Create Wallet" +msgstr "" + +#: src/pages/IssueToken.tsx:93 +msgid "Currency Symbol" +msgstr "" + +#: src/pages/Settings.tsx:72 +msgid "Dark Mode" +msgstr "" + +#: src/components/NftCard.tsx:436 +msgid "Data" +msgstr "" + +#: src/pages/Nft.tsx:185 +msgid "Data Hash" +msgstr "" + +#: src/pages/Nft.tsx:134 +msgid "Data URIs" +msgstr "" + +#: src/pages/MintNft.tsx:143 +msgid "Data URLs" +msgstr "" + +#: src/pages/MakeOffer.tsx:203 +msgid "Days" +msgstr "" + +#: src/pages/Offers.tsx:247 +#: src/pages/Offers.tsx:283 +#: src/pages/Login.tsx:279 +#: src/pages/Login.tsx:368 +msgid "Delete" +msgstr "" + +#: src/pages/PeerList.tsx:345 +msgid "Delete ({0})" +msgstr "" + +#: src/pages/Offers.tsx:260 +msgid "Delete offer record?" +msgstr "" + +#: src/pages/Login.tsx:325 +msgid "Delete saved offer files" +msgstr "" + +#: src/pages/Nft.tsx:96 +msgid "Description" +msgstr "" + +#: src/pages/Login.tsx:243 +msgid "Details" +msgstr "" + +#: src/pages/CreateWallet.tsx:240 +msgid "Did you save your mnemonic?" +msgstr "" + +#: src/pages/Settings.tsx:126 +msgid "Disconnect" +msgstr "" + +#: src/pages/Settings.tsx:202 +msgid "Discover peers automatically" +msgstr "" + +#: src/pages/IssueToken.tsx:77 +#: src/pages/CreateProfile.tsx:72 +msgid "Display name" +msgstr "" + +#: src/pages/Login.tsx:468 +msgid "Done" +msgstr "" + +#: src/pages/Token.tsx:251 +msgid "Edit" +msgstr "" + +#: src/pages/Token.tsx:293 +msgid "Edit Token Details" +msgstr "" + +#: src/pages/Send.tsx:155 +#: src/pages/MintNft.tsx:211 +#: src/components/TransferDialog.tsx:84 +msgid "Enter address" +msgstr "" + +#: src/pages/MakeOffer.tsx:363 +msgid "Enter amount" +msgstr "" + +#: src/pages/MakeOffer.tsx:437 +msgid "Enter asset id" +msgstr "" + +#: src/pages/MintNft.tsx:148 +#: src/pages/MintNft.tsx:169 +#: src/pages/MintNft.tsx:190 +msgid "Enter comma separated URLs" +msgstr "" + +#: src/components/TransferDialog.tsx:101 +msgid "Enter fee amount" +msgstr "" + +#: src/pages/MakeOffer.tsx:396 +msgid "Enter launcher id" +msgstr "" + +#: src/components/FeeOnlyDialog.tsx:84 +msgid "Enter network fee" +msgstr "" + +#: src/pages/Offers.tsx:154 +msgid "Enter Offer String" +msgstr "" + +#: src/pages/MintNft.tsx:234 +msgid "Enter percent" +msgstr "" + +#: src/pages/PeerList.tsx:361 +msgid "Enter the IP address of the peer you want to connect to." +msgstr "" + +#: src/pages/Token.tsx:296 +msgid "Enter the new display details for this token" +msgstr "" + +#: src/pages/DidList.tsx:260 +msgid "Enter the new display name for this profile." +msgstr "" + +#: src/pages/Login.tsx:384 +msgid "Enter the new display name for this wallet." +msgstr "" + +#: src/components/NftCard.tsx:410 +msgid "Enter URL" +msgstr "" + +#: src/pages/ImportWallet.tsx:94 +msgid "Enter your mnemonic, private key, or public key below. If it's a public key, it will be imported as a read-only cold wallet." +msgstr "" + +#: src/pages/Offers.tsx:201 +msgid "Expired" +msgstr "" + +#: src/pages/MakeOffer.tsx:167 +msgid "Expiring offer" +msgstr "" + +#: src/pages/Nft.tsx:254 +msgid "External Links" +msgstr "" + +#: src/pages/Send.tsx:197 +#: src/pages/IssueToken.tsx:129 +#: src/components/ConfirmationDialog.tsx:154 +#: src/components/ConfirmationDialog.tsx:379 +msgid "Fee" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:143 +msgid "Fee exceeds recommended maximum of 0.001 {0}" +msgstr "" + +#: src/pages/Addresses.tsx:55 +msgid "Fresh Address" +msgstr "" + +#: src/pages/Settings.tsx:349 +msgid "Generate addresses automatically" +msgstr "" + +#: src/pages/Settings.tsx:60 +msgid "Global" +msgstr "" + +#: src/components/Header.tsx:96 +msgid "Go to wallet" +msgstr "" + +#: src/components/NftOptions.tsx:155 +msgid "Group Collections" +msgstr "" + +#: src/pages/PeerList.tsx:143 +msgid "Height:" +msgstr "" + +#: src/pages/Token.tsx:259 +#: src/pages/NftList.tsx:273 +#: src/pages/DidList.tsx:239 +#: src/components/NftCard.tsx:333 +msgid "Hide" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:140 +msgid "High Transaction Fee" +msgstr "" + +#: src/pages/Login.tsx:293 +msgid "Hot Wallet" +msgstr "" + +#: src/pages/MakeOffer.tsx:225 +msgid "Hours" +msgstr "" + +#: src/pages/Login.tsx:78 +msgid "Import" +msgstr "" + +#: src/pages/Login.tsx:495 +#: src/pages/ImportWallet.tsx:40 +#: src/pages/ImportWallet.tsx:104 +msgid "Import Wallet" +msgstr "" + +#: src/pages/Transactions.tsx:106 +msgid "Increase Fee" +msgstr "" + +#: src/components/AddressList.tsx:47 +msgid "Index" +msgstr "" + +#: src/pages/Send.tsx:101 +msgid "Invalid address" +msgstr "" + +#: src/pages/PeerList.tsx:199 +#: src/pages/PeerList.tsx:370 +msgid "IP Address" +msgstr "" + +#: src/pages/TokenList.tsx:125 +#: src/pages/IssueToken.tsx:62 +#: src/pages/IssueToken.tsx:148 +msgid "Issue Token" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:132 +msgid "JSON" +msgstr "" + +#: src/components/NftCard.tsx:423 +msgid "Kind" +msgstr "" + +#: src/components/NftCard.tsx:153 +msgid "Kind is required" +msgstr "" + +#: src/pages/Nft.tsx:88 +msgid "Launcher Id" +msgstr "" + +#: src/components/NftCard.tsx:442 +msgid "License" +msgstr "" + +#: src/pages/Nft.tsx:203 +msgid "License Hash" +msgstr "" + +#: src/pages/Nft.tsx:168 +msgid "License URIs" +msgstr "" + +#: src/pages/MintNft.tsx:185 +msgid "License URLs" +msgstr "" + +#: src/pages/Login.tsx:231 +msgid "Login" +msgstr "" + +#: src/components/Layout.tsx:103 +#: src/components/Header.tsx:149 +msgid "Logout" +msgstr "" + +#: src/pages/CreateWallet.tsx:243 +msgid "Make sure you have saved your mnemonic. You will not be able to access it later, since it will not be saved in the wallet. You will also not be able to make transactions with this wallet." +msgstr "" + +#: src/pages/Offers.tsx:112 +msgid "Manage offers" +msgstr "" + +#: src/components/NftCard.tsx:439 +msgid "Metadata" +msgstr "" + +#: src/pages/Nft.tsx:194 +msgid "Metadata Hash" +msgstr "" + +#: src/pages/Nft.tsx:151 +msgid "Metadata URIs" +msgstr "" + +#: src/pages/MintNft.tsx:164 +msgid "Metadata URLs" +msgstr "" + +#: src/pages/MintNft.tsx:283 +msgid "Mint" +msgstr "" + +#: src/pages/NftList.tsx:126 +msgid "Mint an NFT?" +msgstr "" + +#: src/pages/NftList.tsx:119 +#: src/pages/MintNft.tsx:96 +msgid "Mint NFT" +msgstr "" + +#: src/pages/Nft.tsx:213 +msgid "Minter DID" +msgstr "" + +#: src/pages/MintNft.tsx:283 +msgid "Minting" +msgstr "" + +#: src/pages/MakeOffer.tsx:247 +msgid "Minutes" +msgstr "" + +#: src/pages/Login.tsx:456 +#: src/pages/CreateWallet.tsx:195 +msgid "Mnemonic" +msgstr "" + +#: src/pages/Token.tsx:302 +#: src/pages/IssueToken.tsx:74 +#: src/pages/DidList.tsx:266 +#: src/pages/CreateProfile.tsx:69 +msgid "Name" +msgstr "" + +#: src/pages/IssueToken.tsx:35 +#: src/pages/CreateProfile.tsx:35 +msgid "Name is required" +msgstr "" + +#: src/pages/Login.tsx:394 +msgid "Name of your wallet" +msgstr "" + +#: src/pages/Settings.tsx:185 +msgid "Network" +msgstr "" + +#: src/pages/ViewOffer.tsx:69 +#: src/pages/Token.tsx:539 +#: src/pages/Token.tsx:607 +#: src/pages/MintNft.tsx:256 +#: src/pages/MakeOffer.tsx:143 +#: src/pages/CreateProfile.tsx:86 +#: src/components/TransferDialog.tsx:96 +#: src/components/NftCard.tsx:458 +#: src/components/FeeOnlyDialog.tsx:79 +#: src/components/AssignNftDialog.tsx:131 +msgid "Network Fee" +msgstr "" + +#: src/components/FeeOnlyDialog.tsx:85 +#: src/components/AssignNftDialog.tsx:136 +msgid "Network fee amount" +msgstr "" + +#: src/pages/Settings.tsx:233 +msgid "Network ID" +msgstr "" + +#: src/components/Layout.tsx:63 +#: src/components/Header.tsx:109 +msgid "Network status" +msgstr "" + +#: src/pages/MakeOffer.tsx:92 +msgid "New Offer" +msgstr "" + +#: src/components/NftOptions.tsx:62 +#: src/components/CoinList.tsx:350 +#: src/components/AddressList.tsx:190 +msgid "Next page" +msgstr "" + +#: src/pages/MakeOffer.tsx:340 +#: src/pages/MakeOffer.tsx:389 +#: src/components/OfferCard.tsx:172 +msgid "NFT" +msgstr "" + +#: src/components/NftCard.tsx:235 +msgid "NFT options" +msgstr "" + +#: src/components/OfferCard.tsx:186 +msgid "NFT preview" +msgstr "" + +#: src/pages/NftList.tsx:113 +#: src/components/Nav.tsx:21 +msgid "NFTs" +msgstr "" + +#: src/pages/Settings.tsx:132 +msgid "No active sessions" +msgstr "" + +#: src/components/NftCard.tsx:229 +msgid "No collection" +msgstr "" + +#: src/pages/Offers.tsx:114 +msgid "No offers yet" +msgstr "" + +#: src/pages/PeerList.tsx:489 +#: src/components/CoinList.tsx:325 +#: src/components/AddressList.tsx:167 +msgid "No results." +msgstr "" + +#: src/pages/Nft.tsx:216 +#: src/pages/Nft.tsx:225 +msgid "None" +msgstr "" + +#: src/components/TransferDialog.tsx:50 +#: src/components/NftCard.tsx:156 +#: src/components/FeeOnlyDialog.tsx:49 +#: src/components/AssignNftDialog.tsx:59 +msgid "Not enough funds to cover the fee" +msgstr "" + +#: src/pages/Transactions.tsx:61 +msgid "Note" +msgstr "" + +#: src/pages/MakeOffer.tsx:276 +msgid "Offer Details" +msgstr "" + +#: src/pages/MakeOffer.tsx:283 +msgid "Offer File" +msgstr "" + +#: src/pages/Offers.tsx:209 +#: src/pages/MakeOffer.tsx:100 +msgid "Offered" +msgstr "" + +#: src/pages/Offers.tsx:103 +#: src/components/Nav.tsx:29 +msgid "Offers" +msgstr "" + +#: src/pages/Token.tsx:586 +msgid "Output Count" +msgstr "" + +#: src/pages/Nft.tsx:222 +msgid "Owner DID" +msgstr "" + +#: src/pages/Settings.tsx:141 +msgid "Paste WalletConnect URI" +msgstr "" + +#: src/pages/Offers.tsx:159 +msgid "Paste your offer string here..." +msgstr "" + +#: src/pages/PeerList.tsx:207 +msgid "Peak Height" +msgstr "" + +#: src/pages/PeerList.tsx:307 +msgid "Peer List" +msgstr "" + +#: src/pages/Offers.tsx:195 +msgid "Pending" +msgstr "" + +#: src/components/CoinList.tsx:171 +#: src/components/CoinList.tsx:236 +msgid "Pending..." +msgstr "" + +#: src/components/ConfirmationDialog.tsx:435 +#: src/components/ConfirmationDialog.tsx:463 +#: src/components/ConfirmationDialog.tsx:497 +#: src/components/ConfirmationDialog.tsx:532 +msgid "Permanently Burned" +msgstr "" + +#: src/pages/Login.tsx:353 +msgid "Permanently Delete" +msgstr "" + +#: src/pages/PeerList.tsx:203 +msgid "Port" +msgstr "" + +#: src/pages/PeerList.tsx:149 +msgid "Port:" +msgstr "" + +#: src/pages/PeerList.tsx:392 +msgid "Prevents the peer from being banned." +msgstr "" + +#: src/components/NftOptions.tsx:50 +#: src/components/CoinList.tsx:341 +#: src/components/AddressList.tsx:181 +msgid "Previous page" +msgstr "" + +#: src/pages/MintNft.tsx:107 +#: src/components/ConfirmationDialog.tsx:480 +#: src/components/ConfirmationDialog.tsx:494 +#: src/components/AssignNftDialog.tsx:93 +msgid "Profile" +msgstr "" + +#: src/pages/MintNft.tsx:45 +#: src/components/AssignNftDialog.tsx:56 +msgid "Profile is required" +msgstr "" + +#: src/pages/DidList.tsx:270 +msgid "Profile name" +msgstr "" + +#: src/pages/DidList.tsx:59 +#: src/components/Nav.tsx:25 +msgid "Profiles" +msgstr "" + +#: src/pages/Login.tsx:437 +msgid "Public Key" +msgstr "" + +#: src/components/NftCard.tsx:268 +msgid "Reassign Profile" +msgstr "" + +#: src/pages/Token.tsx:239 +msgid "Receive" +msgstr "" + +#: src/pages/Addresses.tsx:49 +msgid "Receive {0}" +msgstr "" + +#: src/components/ReceiveAddress.tsx:64 +msgid "Receive Address" +msgstr "" + +#: src/components/OfferCard.tsx:50 +msgid "Receiving" +msgstr "" + +#: src/pages/Token.tsx:254 +msgid "Refresh Info" +msgstr "" + +#: src/pages/Token.tsx:350 +#: src/pages/Login.tsx:255 +#: src/pages/Login.tsx:418 +#: src/pages/DidList.tsx:223 +#: src/pages/DidList.tsx:293 +msgid "Rename" +msgstr "" + +#: src/pages/DidList.tsx:257 +msgid "Rename Profile" +msgstr "" + +#: src/pages/Login.tsx:381 +msgid "Rename Wallet" +msgstr "" + +#: src/pages/Offers.tsx:210 +#: src/pages/MakeOffer.tsx:122 +msgid "Requested" +msgstr "" + +#: src/pages/Transactions.tsx:95 +msgid "Resubmit" +msgstr "" + +#: src/pages/Login.tsx:340 +msgid "Resync" +msgstr "" + +#: src/pages/Login.tsx:267 +msgid "Resync ({network})" +msgstr "" + +#: src/pages/Login.tsx:315 +msgid "Resync on {network}" +msgstr "" + +#: src/pages/Nft.tsx:245 +msgid "Royalties ({0}%)" +msgstr "" + +#: src/components/OfferCard.tsx:115 +#: src/components/OfferCard.tsx:159 +msgid "royalty" +msgstr "" + +#: src/pages/MintNft.tsx:206 +msgid "Royalty Address" +msgstr "" + +#: src/pages/MintNft.tsx:228 +msgid "Royalty Percent" +msgstr "" + +#: src/components/OfferCard.tsx:201 +msgid "royalty to" +msgstr "" + +#: src/pages/MakeOffer.tsx:299 +msgid "Save" +msgstr "" + +#: src/pages/CreateWallet.tsx:171 +msgid "Save mnemonic" +msgstr "" + +#: src/pages/ViewOffer.tsx:97 +msgid "Save Offer" +msgstr "" + +#: src/pages/Login.tsx:447 +msgid "Secret Key" +msgstr "" + +#: src/components/CoinList.tsx:61 +msgid "Select all coins" +msgstr "" + +#: src/components/CoinList.tsx:69 +msgid "Select coin row" +msgstr "" + +#: src/components/NftCard.tsx:431 +#: src/components/NftCard.tsx:432 +msgid "Select kind" +msgstr "" + +#: src/pages/Settings.tsx:254 +msgid "Select network" +msgstr "" + +#: src/pages/MintNft.tsx:113 +#: src/pages/MintNft.tsx:115 +#: src/components/AssignNftDialog.tsx:99 +#: src/components/AssignNftDialog.tsx:101 +msgid "Select profile" +msgstr "" + +#: src/pages/PeerList.tsx:314 +msgid "Selected {0} of {1} peers" +msgstr "" + +#: src/pages/Token.tsx:233 +msgid "Send" +msgstr "" + +#: src/pages/Send.tsx:135 +#: src/pages/Send.tsx:219 +msgid "Send {0}" +msgstr "" + +#: src/components/OfferCard.tsx:29 +msgid "Sending" +msgstr "" + +#: src/pages/Settings.tsx:40 +#: src/components/Layout.tsx:96 +#: src/components/Header.tsx:142 +msgid "Settings" +msgstr "" + +#: src/pages/Token.tsx:259 +#: src/pages/NftList.tsx:273 +#: src/pages/DidList.tsx:239 +#: src/components/NftCard.tsx:333 +msgid "Show" +msgstr "" + +#: src/components/CoinList.tsx:214 +msgid "Show all coins" +msgstr "" + +#: src/components/CoinList.tsx:214 +msgid "Show unspent coins only" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:215 +msgid "Sign Transaction" +msgstr "" + +#: src/pages/TokenList.tsx:254 +#: src/components/NftOptions.tsx:122 +msgid "Sort Alphabetically" +msgstr "" + +#: src/pages/TokenList.tsx:267 +msgid "Sort by Balance" +msgstr "" + +#: src/components/NftOptions.tsx:97 +msgid "Sort options" +msgstr "" + +#: src/components/NftOptions.tsx:138 +msgid "Sort Recent" +msgstr "" + +#: src/components/CoinList.tsx:196 +msgid "Spent" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:358 +msgid "Spent Coins" +msgstr "" + +#: src/pages/Token.tsx:498 +#: src/pages/Token.tsx:625 +msgid "Split" +msgstr "" + +#: src/pages/Token.tsx:569 +msgid "Split {0}" +msgstr "" + +#: src/pages/CreateWallet.tsx:233 +#: src/components/ConfirmationDialog.tsx:291 +msgid "Submit" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:291 +msgid "Submitting" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:126 +#: src/components/ConfirmationDialog.tsx:150 +msgid "Summary" +msgstr "" + +#: src/components/Layout.tsx:85 +#: src/components/Header.tsx:131 +msgid "Syncing {0} / {1}" +msgstr "" + +#: src/pages/TokenList.tsx:132 +msgid "Syncing in progress..." +msgstr "" + +#: src/pages/ViewOffer.tsx:101 +msgid "Take Offer" +msgstr "" + +#: src/pages/Offers.tsx:197 +msgid "Taken" +msgstr "" + +#: src/pages/Settings.tsx:207 +msgid "Target Peers" +msgstr "" + +#: src/components/OfferCard.tsx:55 +msgid "The assets being given to you in the offer." +msgstr "" + +#: src/components/OfferCard.tsx:34 +msgid "The assets you have to pay to fulfill the offer." +msgstr "" + +#: src/pages/Addresses.tsx:58 +msgid "The wallet generates a new address after each transaction. Old ones stay valid." +msgstr "" + +#: src/pages/TokenList.tsx:135 +msgid "The wallet is still syncing. Balances may not be accurate until it completes." +msgstr "" + +#: src/pages/Login.tsx:487 +msgid "There aren't any wallets to log into yet. To get started, create a new wallet or import an existing one." +msgstr "" + +#: src/pages/ViewOffer.tsx:88 +msgid "This does not include a fee of {0} which was already added by the maker." +msgstr "" + +#: src/components/ConfirmationDialog.tsx:185 +msgid "This is the raw JSON spend bundle for this transaction. If you sign it, the transaction can be submitted to the mempool externally." +msgstr "" + +#: src/pages/Transactions.tsx:64 +msgid "This only shows transactions initiated by this app that are currently pending in the mempool." +msgstr "" + +#: src/components/NftCard.tsx:389 +msgid "This will add an additional URL to the NFT. It is not possible to remove URLs later, so be careful with this and try to use permanent URLs if possible." +msgstr "" + +#: src/components/NftCard.tsx:370 +msgid "This will assign the NFT to the selected profile." +msgstr "" + +#: src/components/MultiSelectActions.tsx:170 +msgid "This will bulk assign the NFTs to the selected profile." +msgstr "" + +#: src/components/MultiSelectActions.tsx:188 +msgid "This will bulk burn {0} NFTs. This cannot be undone. Are you sure you want to proceed?" +msgstr "" + +#: src/components/MultiSelectActions.tsx:158 +msgid "This will bulk transfer {0} NFTs to another wallet. Are you sure you want to proceed?" +msgstr "" + +#: src/components/MultiSelectActions.tsx:179 +msgid "This will bulk unassign the NFTs from their profiles." +msgstr "" + +#: src/pages/Token.tsx:523 +msgid "This will combine all of the selected coins into one." +msgstr "" + +#: src/pages/Offers.tsx:263 +msgid "This will delete the offer from the wallet, but if it's shared externally it can still be accepted. The only way to truly cancel a public offer is by spending one or more of its coins." +msgstr "" + +#: src/components/NftCard.tsx:491 +msgid "This will permanently delete the NFT by sending it to the burn address." +msgstr "" + +#: src/pages/DidList.tsx:314 +msgid "This will permanently delete the profile by sending it to the burn address." +msgstr "" + +#: src/components/NftCard.tsx:361 +msgid "This will send the NFT to the provided address." +msgstr "" + +#: src/pages/DidList.tsx:305 +msgid "This will send the profile to the provided address." +msgstr "" + +#: src/pages/Token.tsx:572 +msgid "This will split all of the selected coins." +msgstr "" + +#: src/components/NftCard.tsx:379 +msgid "This will unassign the NFT from its profile." +msgstr "" + +#: src/pages/Token.tsx:321 +#: src/pages/IssueToken.tsx:90 +msgid "Ticker" +msgstr "" + +#: src/pages/IssueToken.tsx:36 +msgid "Ticker is required" +msgstr "" + +#: src/components/NftOptions.tsx:86 +msgid "Toggle hidden NFTs" +msgstr "" + +#: src/components/NftOptions.tsx:74 +msgid "Toggle multi-select" +msgstr "" + +#: src/components/Header.tsx:74 +#: src/components/Header.tsx:78 +msgid "Toggle navigation menu" +msgstr "" + +#: src/pages/MakeOffer.tsx:352 +#: src/pages/MakeOffer.tsx:430 +msgid "Token" +msgstr "" + +#: src/pages/Transactions.tsx:75 +msgid "Transaction {0}" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:373 +msgid "Transaction Output" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:213 +msgid "Transaction Signed" +msgstr "" + +#: src/pages/Transactions.tsx:54 +msgid "Transactions" +msgstr "" + +#: src/pages/DidList.tsx:197 +#: src/components/TransferDialog.tsx:117 +#: src/components/NftCard.tsx:251 +#: src/components/MultiSelectActions.tsx:105 +#: src/components/FeeOnlyDialog.tsx:101 +#: src/components/AssignNftDialog.tsx:152 +msgid "Transfer" +msgstr "" + +#: src/components/NftCard.tsx:356 +msgid "Transfer NFT" +msgstr "" + +#: src/pages/DidList.tsx:300 +msgid "Transfer Profile" +msgstr "" + +#: src/pages/PeerList.tsx:213 +msgid "Trusted" +msgstr "" + +#: src/pages/PeerList.tsx:385 +msgid "Trusted peer" +msgstr "" + +#: src/components/NftCard.tsx:284 +#: src/components/NftCard.tsx:374 +#: src/components/MultiSelectActions.tsx:131 +msgid "Unassign Profile" +msgstr "" + +#: src/pages/Collection.tsx:92 +#: src/components/ConfirmationDialog.tsx:516 +#: src/components/ConfirmationDialog.tsx:530 +msgid "Unknown" +msgstr "" + +#: src/pages/Settings.tsx:114 +#: src/pages/Settings.tsx:118 +msgid "Unknown App" +msgstr "" + +#: src/pages/Send.tsx:135 +msgid "unknown asset" +msgstr "" + +#: src/pages/Token.tsx:196 +msgid "Unknown asset" +msgstr "" + +#: src/pages/Nft.tsx:80 +msgid "Unknown NFT" +msgstr "" + +#: src/pages/NftList.tsx:233 +#: src/pages/NftList.tsx:244 +#: src/components/OfferCard.tsx:177 +#: src/components/NftCard.tsx:208 +#: src/components/NftCard.tsx:226 +#: src/components/ConfirmationDialog.tsx:481 +#: src/components/ConfirmationDialog.tsx:495 +msgid "Unnamed" +msgstr "" + +#: src/components/CoinList.tsx:211 +#: src/components/CoinList.tsx:228 +#: src/components/CoinList.tsx:263 +msgid "Unspent" +msgstr "" + +#: src/pages/DidList.tsx:178 +msgid "Untitled Profile" +msgstr "" + +#: src/components/NftCard.tsx:407 +msgid "URL" +msgstr "" + +#: src/components/NftCard.tsx:152 +msgid "URL is required" +msgstr "" + +#: src/pages/CreateWallet.tsx:143 +msgid "Use 24 words" +msgstr "" + +#: src/pages/TokenList.tsx:146 +#: src/pages/DidList.tsx:71 +msgid "View hidden" +msgstr "" + +#: src/pages/Offers.tsx:132 +#: src/pages/Offers.tsx:165 +msgid "View Offer" +msgstr "" + +#: src/pages/Settings.tsx:301 +#: src/pages/Login.tsx:483 +#: src/components/Nav.tsx:17 +msgid "Wallet" +msgstr "" + +#: src/pages/Login.tsx:431 +msgid "Wallet Details" +msgstr "" + +#: src/components/Layout.tsx:50 +#: src/components/Header.tsx:98 +msgid "Wallet icon" +msgstr "" + +#: src/pages/ImportWallet.tsx:88 +msgid "Wallet Key" +msgstr "" + +#: src/pages/Settings.tsx:308 +#: src/pages/Login.tsx:390 +#: src/pages/ImportWallet.tsx:72 +#: src/pages/CreateWallet.tsx:125 +msgid "Wallet Name" +msgstr "" + +#: src/pages/Settings.tsx:99 +msgid "WalletConnect" +msgstr "" + +#: src/pages/Login.tsx:74 +msgid "Wallets" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:182 +msgid "Warning" +msgstr "" + +#: src/pages/CreateWallet.tsx:146 +msgid "While 12 word mnemonics are sufficiently hard to crack, you can choose to use 24 instead to increase security." +msgstr "" + +#: src/pages/Transactions.tsx:115 +msgid "With a fee of" +msgstr "" + +#: src/components/ConfirmationDialog.tsx:437 +#: src/components/ConfirmationDialog.tsx:465 +#: src/components/ConfirmationDialog.tsx:499 +#: src/components/ConfirmationDialog.tsx:534 +msgid "You" +msgstr "" + +#: src/pages/Offers.tsx:123 +msgid "You can also paste an offer using <0>{0}." +msgstr "" + +#: src/pages/DidList.tsx:88 +msgid "You do not currently have any {0} DID profiles. Would you like to create one?" +msgstr "" + +#: src/pages/NftList.tsx:129 +msgid "You do not currently have any NFTs. Would you like to mint one?" +msgstr "" diff --git a/src/main.tsx b/src/main.tsx index 92821373..4b6c7dce 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -7,6 +7,9 @@ import '@fontsource/roboto/700.css'; import './setup.ts'; import App from './App.tsx'; +import { loadCatalog } from './i18n'; + +await loadCatalog('en-US'); const element = document.getElementById('root')!; diff --git a/src/pages/Addresses.tsx b/src/pages/Addresses.tsx index 89980149..b39b9235 100644 --- a/src/pages/Addresses.tsx +++ b/src/pages/Addresses.tsx @@ -13,12 +13,12 @@ import { useCallback, useEffect, useState } from 'react'; import { commands, events } from '../bindings'; import AddressList from '../components/AddressList'; import { useWalletState } from '../state'; +import { Trans } from '@lingui/react/macro'; +import { t } from '@lingui/core/macro'; export default function Addresses() { const { addError } = useErrors(); - const walletState = useWalletState(); - const [addresses, setAddresses] = useState([]); const updateAddresses = useCallback(() => { @@ -46,15 +46,19 @@ export default function Addresses() { return ( <> -
+
- Fresh Address + + Fresh Address + - The wallet generates a new address after each transaction. Old - ones stay valid. + + The wallet generates a new address after each transaction. Old + ones stay valid. + @@ -63,7 +67,9 @@ export default function Addresses() { - All Addresses + + All Addresses + diff --git a/src/pages/Collection.tsx b/src/pages/Collection.tsx index bebcd4e5..532b02f1 100644 --- a/src/pages/Collection.tsx +++ b/src/pages/Collection.tsx @@ -9,6 +9,8 @@ import { useErrors } from '@/hooks/useErrors'; import { NftView, useNftParams } from '@/hooks/useNftParams'; import { useCallback, useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; +import { Trans } from '@lingui/react/macro'; +import { t } from '@lingui/core/macro'; export default function Collection() { const { addError } = useErrors(); @@ -87,7 +89,7 @@ export default function Collection() { return ( <> -
+
diff --git a/src/pages/CreateProfile.tsx b/src/pages/CreateProfile.tsx index c69fdcb2..b8b96272 100644 --- a/src/pages/CreateProfile.tsx +++ b/src/pages/CreateProfile.tsx @@ -22,17 +22,17 @@ import { commands, TransactionResponse } from '../bindings'; import Container from '../components/Container'; import { useWalletState } from '../state'; import { TokenAmountInput } from '@/components/ui/masked-input'; +import { Trans } from '@lingui/react/macro'; +import { t } from '@lingui/core/macro'; export default function CreateProfile() { const { addError } = useErrors(); - const navigate = useNavigate(); const walletState = useWalletState(); - const [response, setResponse] = useState(null); const formSchema = z.object({ - name: z.string().min(1, 'Name is required'), + name: z.string().min(1, t`Name is required`), fee: amount(walletState.sync.unit.decimals).optional(), }); @@ -55,7 +55,7 @@ export default function CreateProfile() { return ( <> -
+
@@ -65,9 +65,11 @@ export default function CreateProfile() { name='name' render={({ field }) => ( - Name + + Name + - + @@ -80,7 +82,9 @@ export default function CreateProfile() { name='fee' render={({ field }) => ( - Network Fee + + Network Fee +
@@ -97,7 +101,9 @@ export default function CreateProfile() { />
- +
diff --git a/src/pages/CreateWallet.tsx b/src/pages/CreateWallet.tsx index 166b4eb1..a6b5edb6 100644 --- a/src/pages/CreateWallet.tsx +++ b/src/pages/CreateWallet.tsx @@ -34,10 +34,11 @@ import Container from '../components/Container'; import { fetchState } from '../state'; import SafeAreaView from '@/components/SafeAreaView'; import { useInsets } from '@/contexts/SafeAreaContext'; +import { Trans } from '@lingui/react/macro'; +import { t } from '@lingui/core/macro'; export default function CreateWallet() { const { addError } = useErrors(); - const navigate = useNavigate(); const submit = (values: z.infer) => { @@ -54,7 +55,7 @@ export default function CreateWallet() { return ( -
navigate('/')} /> +
navigate('/')} /> @@ -120,7 +121,9 @@ function CreateForm(props: { name='walletName' render={({ field }) => ( - Wallet Name + + Wallet Name + @@ -136,10 +139,14 @@ function CreateForm(props: { render={({ field }) => ( @@ -160,11 +167,15 @@ function CreateForm(props: { render={({ field }) => ( @@ -180,7 +191,9 @@ function CreateForm(props: {
- +
- + - Did you save your mnemonic? + + Did you save your mnemonic? + - Make sure you have saved your mnemonic. You will not be able to - access it later, since it will not be saved in the wallet. You - will also not be able to make transactions with this wallet. + + Make sure you have saved your mnemonic. You will not be able to + access it later, since it will not be saved in the wallet. You + will also not be able to make transactions with this wallet. + diff --git a/src/pages/DidList.tsx b/src/pages/DidList.tsx index 86c57660..7628bdca 100644 --- a/src/pages/DidList.tsx +++ b/src/pages/DidList.tsx @@ -43,12 +43,12 @@ import { import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { commands, DidRecord, TransactionResponse } from '../bindings'; +import { Trans } from '@lingui/react/macro'; +import { t } from '@lingui/core/macro'; export function DidList() { const navigate = useNavigate(); - const { dids, updateDids } = useDids(); - const [showHidden, setShowHidden] = useState(false); const visibleDids = showHidden ? dids : dids.filter((did) => did.visible); @@ -56,17 +56,20 @@ export function DidList() { return ( <> -
+
{hasHiddenDids && (
- + - Create a profile? + + Create a profile? + - You do not currently have any {dids.length > 0 ? 'visible ' : ''} - DID profiles. Would you like to create one? + + You do not currently have any{' '} + {dids.length > 0 ? 'visible ' : ''} DID profiles. Would you like + to create one? + )}
- {visibleDids.map((did) => { - return ( - - ); - })} + {visibleDids.map((did) => ( + + ))}
@@ -109,9 +111,7 @@ interface ProfileProps { function Profile({ did, updateDids }: ProfileProps) { const walletState = useWalletState(); - const { addError } = useErrors(); - const [name, setName] = useState(''); const [renameOpen, setRenameOpen] = useState(false); const [transferOpen, setTransferOpen] = useState(false); @@ -175,7 +175,7 @@ function Profile({ did, updateDids }: ProfileProps) { - {did.name ?? 'Untitled Profile'} + {did.name ?? t`Untitled Profile`} @@ -193,7 +193,9 @@ function Profile({ did, updateDids }: ProfileProps) { }} > - Transfer + + Transfer + - Burn + + Burn + - Rename + + Rename + )} - {did.visible ? 'Hide' : 'Show'} + {did.visible ? t`Hide` : t`Show`} @@ -247,17 +253,21 @@ function Profile({ did, updateDids }: ProfileProps) { > - Rename Profile + + Rename Profile + - Enter the new display name for this profile. + Enter the new display name for this profile.
- + setName(event.target.value)} onKeyDown={(event) => { @@ -277,32 +287,34 @@ function Profile({ did, updateDids }: ProfileProps) { setName(''); }} > - Cancel + Cancel
- This will send the profile to the provided address. + This will send the profile to the provided address. - This will permanently delete the profile by sending it to the burn - address. + + This will permanently delete the profile by sending it to the burn + address. + ) => { @@ -36,8 +37,7 @@ export default function ImportWallet() { return ( -
navigate('/')} /> - +
navigate('/')} /> @@ -53,7 +53,6 @@ const formSchema = z.object({ function ImportForm(props: { onSubmit: (values: z.infer) => void; }) { - // Insert constants here const form = useForm>({ resolver: zodResolver(formSchema), }); @@ -69,11 +68,12 @@ function ImportForm(props: { name='walletName' render={({ field }) => ( - Wallet Name + + Wallet Name + - )} @@ -84,19 +84,25 @@ function ImportForm(props: { name='walletKey' render={({ field }) => ( - Wallet Key + + Wallet Key +