diff --git a/src/web/frontend/deno.lock b/src/web/frontend/deno.lock index e6cedd5..d01e83a 100644 --- a/src/web/frontend/deno.lock +++ b/src/web/frontend/deno.lock @@ -1,6 +1,7 @@ { "version": "5", "specifiers": { + "npm:@inlang/paraglide-js@^2.12.0": "2.12.0", "npm:@lucide/svelte@0.575": "0.575.0_svelte@5.53.0__acorn@8.16.0", "npm:@sveltejs/adapter-static@^3.0.10": "3.0.10_@sveltejs+kit@2.53.0__@sveltejs+vite-plugin-svelte@6.2.4___svelte@5.53.0____acorn@8.16.0___vite@7.3.1____picomatch@4.0.3__svelte@5.53.0___acorn@8.16.0__typescript@5.9.3__vite@7.3.1___picomatch@4.0.3__acorn@8.16.0_@sveltejs+vite-plugin-svelte@6.2.4__svelte@5.53.0___acorn@8.16.0__vite@7.3.1___picomatch@4.0.3_svelte@5.53.0__acorn@8.16.0_typescript@5.9.3_vite@7.3.1__picomatch@4.0.3", "npm:@sveltejs/kit@^2.50.2": "2.53.0_@sveltejs+vite-plugin-svelte@6.2.4__svelte@5.53.0___acorn@8.16.0__vite@7.3.1___picomatch@4.0.3_svelte@5.53.0__acorn@8.16.0_typescript@5.9.3_vite@7.3.1__picomatch@4.0.3_acorn@8.16.0", @@ -141,6 +142,35 @@ "os": ["win32"], "cpu": ["x64"] }, + "@inlang/paraglide-js@2.12.0": { + "integrity": "sha512-wnqTeSLcMMS2usL8zjS8bDGs9r16X00aeoGk2wVAnPfAgCChYalKdG20pS2XtJVMM1H6nBBBLKt3ZQMnKrusKQ==", + "dependencies": [ + "@inlang/recommend-sherlock", + "@inlang/sdk", + "commander", + "consola", + "json5", + "unplugin", + "urlpattern-polyfill" + ], + "bin": true + }, + "@inlang/recommend-sherlock@0.2.1": { + "integrity": "sha512-ckv8HvHy/iTqaVAEKrr+gnl+p3XFNwe5D2+6w6wJk2ORV2XkcRkKOJ/XsTUJbPSiyi4PI+p+T3bqbmNx/rDUlg==", + "dependencies": [ + "comment-json" + ] + }, + "@inlang/sdk@2.7.0_kysely@0.27.6": { + "integrity": "sha512-yJNBD0o8i29TTJqWX5uDRHxnalDGcsUDctxepzFXsUfkzqGWfiFBxODdxvReqvM2CuKAAOo/kib/F1UcgdYFNQ==", + "dependencies": [ + "@lix-js/sdk", + "@sinclair/typebox", + "kysely", + "sqlite-wasm-kysely", + "uuid@13.0.0" + ] + }, "@jridgewell/gen-mapping@0.3.13": { "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dependencies": [ @@ -168,6 +198,21 @@ "@jridgewell/sourcemap-codec" ] }, + "@lix-js/sdk@0.4.7_kysely@0.27.6": { + "integrity": "sha512-pRbW+joG12L0ULfMiWYosIW0plmW4AsUdiPCp+Z8rAsElJ+wJ6in58zhD3UwUcd4BNcpldEGjg6PdA7e0RgsDQ==", + "dependencies": [ + "@lix-js/server-protocol-schema", + "dedent", + "human-id", + "js-sha256", + "kysely", + "sqlite-wasm-kysely", + "uuid@10.0.0" + ] + }, + "@lix-js/server-protocol-schema@0.1.1": { + "integrity": "sha512-jBeALB6prAbtr5q4vTuxnRZZv1M2rKe8iNqRQhFJ4Tv7150unEa0vKyz0hs8Gl3fUGsWaNJBh3J8++fpbrpRBQ==" + }, "@lucide/svelte@0.575.0_svelte@5.53.0__acorn@8.16.0": { "integrity": "sha512-FEFp/0McZwsjBqh1Dn8H+UBm1yHFQYk+utuVMFDw57155+wz2XMoc1pw027ylCPzs+bi14UEXYKbekFhuJKtnw==", "dependencies": [ @@ -302,6 +347,13 @@ "os": ["win32"], "cpu": ["x64"] }, + "@sinclair/typebox@0.31.28": { + "integrity": "sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==" + }, + "@sqlite.org/sqlite-wasm@3.48.0-build4": { + "integrity": "sha512-hI6twvUkzOmyGZhQMza1gpfqErZxXRw6JEsiVjUbo7tFanVD+8Oil0Ih3l2nGzHdxPI41zFmfUQG7GHqhciKZQ==", + "bin": true + }, "@standard-schema/spec@1.1.0": { "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==" }, @@ -379,6 +431,9 @@ "aria-query@5.3.2": { "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==" }, + "array-timsort@1.0.3": { + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==" + }, "axobject-query@4.1.0": { "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==" }, @@ -391,9 +446,29 @@ "clsx@2.1.1": { "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" }, + "commander@11.1.0": { + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==" + }, + "comment-json@4.5.1": { + "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", + "dependencies": [ + "array-timsort", + "core-util-is", + "esprima" + ] + }, + "consola@3.4.0": { + "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==" + }, "cookie@0.6.0": { "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" }, + "core-util-is@1.0.3": { + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "dedent@1.5.1": { + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==" + }, "deepmerge@4.3.1": { "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" }, @@ -436,6 +511,10 @@ "esm-env@1.2.2": { "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" }, + "esprima@4.0.1": { + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": true + }, "esrap@2.2.3": { "integrity": "sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==", "dependencies": [ @@ -456,15 +535,29 @@ "os": ["darwin"], "scripts": true }, + "human-id@4.1.3": { + "integrity": "sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==", + "bin": true + }, "is-reference@3.0.3": { "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", "dependencies": [ "@types/estree" ] }, + "js-sha256@0.11.1": { + "integrity": "sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==" + }, + "json5@2.2.3": { + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": true + }, "kleur@4.1.5": { "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" }, + "kysely@0.27.6": { + "integrity": "sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==" + }, "locate-character@3.0.0": { "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" }, @@ -559,6 +652,13 @@ "source-map-js@1.2.1": { "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" }, + "sqlite-wasm-kysely@0.3.0_kysely@0.27.6": { + "integrity": "sha512-TzjBNv7KwRw6E3pdKdlRyZiTmUIE0UttT/Sl56MVwVARl/u5gp978KepazCJZewFUnlWHz9i3NQd4kOtP/Afdg==", + "dependencies": [ + "@sqlite.org/sqlite-wasm", + "kysely" + ] + }, "svelte-check@4.4.3_svelte@5.53.0__acorn@8.16.0_typescript@5.9.3": { "integrity": "sha512-4HtdEv2hOoLCEsSXI+RDELk9okP/4sImWa7X02OjMFFOWeSdFF3NFy3vqpw0z+eH9C88J9vxZfUXz/Uv2A1ANw==", "dependencies": [ @@ -607,6 +707,26 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "bin": true }, + "unplugin@2.3.11": { + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "dependencies": [ + "@jridgewell/remapping", + "acorn", + "picomatch", + "webpack-virtual-modules" + ] + }, + "urlpattern-polyfill@10.1.0": { + "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==" + }, + "uuid@10.0.0": { + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "bin": true + }, + "uuid@13.0.0": { + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", + "bin": true + }, "vite@7.3.1_picomatch@4.0.3": { "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dependencies": [ @@ -631,6 +751,9 @@ "vite" ] }, + "webpack-virtual-modules@0.6.2": { + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==" + }, "zimmerframe@1.1.4": { "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==" } @@ -638,6 +761,7 @@ "workspace": { "packageJson": { "dependencies": [ + "npm:@inlang/paraglide-js@^2.12.0", "npm:@lucide/svelte@0.575", "npm:@sveltejs/adapter-static@^3.0.10", "npm:@sveltejs/kit@^2.50.2", diff --git a/src/web/frontend/messages/en.json b/src/web/frontend/messages/en.json new file mode 100644 index 0000000..6243fbb --- /dev/null +++ b/src/web/frontend/messages/en.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "app_name": "Jupiter Mail", + + "section_dashboard": "Dashboard", + + "section_accounts": "Accounts", + "section_accounts_instructions": "Click an account below to configure:", + "section_accounts_add": "Add Account", + + "section_settings": "Settings", + "section_settings_mda": "Mail Delivery Settings", + "section_settings_mta": "Mail Transfer Settings", + "section_settings_version": "Running:", + + "dashboard_n_accounts_active": "Active: {count}" +} diff --git a/src/web/frontend/package.json b/src/web/frontend/package.json index 58ee061..aecbc76 100644 --- a/src/web/frontend/package.json +++ b/src/web/frontend/package.json @@ -19,6 +19,7 @@ "svelte": "^5.51.0", "svelte-check": "^4.3.6", "typescript": "^5.9.3", - "vite": "^7.3.1" + "vite": "^7.3.1", + "@inlang/paraglide-js": "^2.12.0" } } diff --git a/src/web/frontend/project.inlang/settings.json b/src/web/frontend/project.inlang/settings.json new file mode 100644 index 0000000..135d692 --- /dev/null +++ b/src/web/frontend/project.inlang/settings.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://inlang.com/schema/project-settings", + "baseLocale": "en", + "locales": [ + "en" + ], + "modules": [ + "https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@4/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@2/dist/index.js" + ], + "plugin.inlang.messageFormat": { + "pathPattern": "./messages/{locale}.json" + } +} diff --git a/src/web/frontend/src/app.html b/src/web/frontend/src/app.html index f273cc5..ef0f393 100644 --- a/src/web/frontend/src/app.html +++ b/src/web/frontend/src/app.html @@ -1,5 +1,5 @@ - +
diff --git a/src/web/frontend/src/components/ui/AccountAddButton.svelte b/src/web/frontend/src/components/ui/AccountAddButton.svelte index 0884570..61ba53a 100644 --- a/src/web/frontend/src/components/ui/AccountAddButton.svelte +++ b/src/web/frontend/src/components/ui/AccountAddButton.svelte @@ -1,5 +1,6 @@ @@ -7,7 +8,7 @@