diff --git a/go.mod b/go.mod index 18f93c4..8737a21 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module fornaxian.tech/nova_web go 1.26 replace ( + fornaxian.tech/nova_server => ../nova_server fornaxian.tech/pixeldrain_api_client => ../pixeldrain_api_client fornaxian.tech/util => ../util ) @@ -10,7 +11,7 @@ replace ( require ( fornaxian.tech/config v0.0.0-20211108212237-6133aed90586 fornaxian.tech/log v0.0.0-20211102185326-552e9b1f8640 - fornaxian.tech/pixeldrain_api_client v0.0.0-20260124133150-a94861b84e11 + fornaxian.tech/pixeldrain_api_client v0.0.0-20260701091325-dc9629676a79 fornaxian.tech/util v0.0.0-20260123171803-02d15be63d16 github.com/julienschmidt/httprouter v1.3.0 github.com/russross/blackfriday/v2 v2.1.0 @@ -18,8 +19,13 @@ require ( require ( github.com/BurntSushi/toml v1.6.0 // indirect - github.com/apache/cassandra-gocql-driver/v2 v2.1.1 // indirect + github.com/apache/cassandra-gocql-driver/v2 v2.1.2 // indirect github.com/golang/snappy v1.0.0 // indirect - golang.org/x/crypto v0.51.0 // indirect + github.com/mattn/go-colorable v0.1.15 // indirect + github.com/mattn/go-isatty v0.0.24 // indirect + github.com/pierrec/lz4/v4 v4.1.27 // indirect + github.com/stretchr/testify v1.11.1 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/crypto v0.54.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect ) diff --git a/go.sum b/go.sum index ae382c4..66570d9 100644 --- a/go.sum +++ b/go.sum @@ -4,36 +4,36 @@ fornaxian.tech/log v0.0.0-20211102185326-552e9b1f8640 h1:UPDxJwLRCfh/cv80UMSanzm fornaxian.tech/log v0.0.0-20211102185326-552e9b1f8640/go.mod h1:sN82qMToeHhP2u3ehvrcE8y1IudRZJAZO9yG5OBYblo= github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/apache/cassandra-gocql-driver/v2 v2.1.1 h1:DjmtmSRoUuIFswczA8LPBppRb8T9vxqNP5Txc/lQxhE= -github.com/apache/cassandra-gocql-driver/v2 v2.1.1/go.mod h1:QH/asJjB3mHvY6Dot6ZKMMpTcOrWJ8i9GhsvG1g0PK4= +github.com/apache/cassandra-gocql-driver/v2 v2.1.2 h1:lu/p0Db2av18enHJvWJQoChLssI0P+AR06STq4VdvCc= +github.com/apache/cassandra-gocql-driver/v2 v2.1.2/go.mod h1:QH/asJjB3mHvY6Dot6ZKMMpTcOrWJ8i9GhsvG1g0PK4= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/pierrec/lz4/v4 v4.1.8 h1:ieHkV+i2BRzngO4Wd/3HGowuZStgq6QkPsD1eolNAO4= -github.com/pierrec/lz4/v4 v4.1.8/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/mattn/go-colorable v0.1.15 h1:+u9SLTRGnXv73cEsnsmoZBom+dMU88B2M0aDcWy0/jY= +github.com/mattn/go-colorable v0.1.15/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.24 h1:tGZZoVgT/KiqK1c8ocVLeDS8BSWMRd47J3Lbz7vsReI= +github.com/mattn/go-isatty v0.0.24/go.mod h1:nMCL3Zebbrt45jsMDgnfIwz6ydEQApk5oEI3HqDio6A= +github.com/pierrec/lz4/v4 v4.1.27 h1:+PhzhWDrjRj89TH2sw43nE3+4+W8lSxIuQadEHZyjUk= +github.com/pierrec/lz4/v4 v4.1.27/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= -go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= +golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/res/static/favicon.ico b/res/static/favicon.ico index 7c16b27..2bd922d 100644 Binary files a/res/static/favicon.ico and b/res/static/favicon.ico differ diff --git a/res/static/style/layout.css b/res/static/style/layout.css index 752cfa1..4065f1d 100644 --- a/res/static/style/layout.css +++ b/res/static/style/layout.css @@ -78,9 +78,7 @@ footer { } footer { - background-color: var(--shaded_background); backdrop-filter: blur(4px); - border-top: 1px solid var(--separator); } footer>.footer_content { @@ -137,6 +135,8 @@ pre>code { .page_content { background: var(--body_background); text-align: center; + margin: 4px; + border-radius: 8px; } @media (max-width: 1000px) { @@ -163,6 +163,14 @@ section { clear: both; } +.bubble { + background: var(--body_background); + margin: 4px; + border-radius: 8px; + border-top: 1px solid var(--separator); + border-left: 1px solid var(--separator); +} + /* Page contents */ .page_navigation a { @@ -678,11 +686,11 @@ option:checked { } ::-webkit-scrollbar-corner { - background-color: var(--body_color); + background-color: var(--background_color); } ::-webkit-scrollbar-button:single-button { - background-color: var(--body_color); + background-color: var(--background_color); display: block; border-style: solid; height: 10px; @@ -692,5 +700,5 @@ option:checked { /* Firefox Scrollbar */ * { - scrollbar-color: var(--scrollbar_foreground_color) var(--body_color); + scrollbar-color: var(--scrollbar_foreground_color) var(--background_color); } diff --git a/res/template/wrap.html b/res/template/wrap.html index 0e698f3..3b2d0ab 100644 --- a/res/template/wrap.html +++ b/res/template/wrap.html @@ -24,7 +24,6 @@ {{ template "opengraph" .OGData }} diff --git a/svelte/package-lock.json b/svelte/package-lock.json index 14a3e31..7b61680 100644 --- a/svelte/package-lock.json +++ b/svelte/package-lock.json @@ -2494,9 +2494,9 @@ ] }, "node_modules/@sveltejs/acorn-typescript": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.6.tgz", - "integrity": "sha512-4awhxtMh4cx9blePWl10HRHj8Iivtqj+2QdDCSMDzxG+XKa9+VCNupQuCuvzEhYPzZSrX+0gC+0lHA/0fFKKQQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.11.tgz", + "integrity": "sha512-LFuZUkjJ9iF7JZye/aG5XM0SFcQ5VyL0oVX4WJ9dc0Va3R3s0OauX1BESVCb+YN/ol8TAfqGDDAQsTG627Y5kw==", "license": "MIT", "peerDependencies": { "acorn": "^8.9.0" @@ -2569,6 +2569,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -2635,9 +2641,9 @@ } }, "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz", + "integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==", "license": "Apache-2.0", "engines": { "node": ">= 0.4" @@ -2966,6 +2972,12 @@ "node": ">=0.10.0" } }, + "node_modules/devalue": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.8.2.tgz", + "integrity": "sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==", + "license": "MIT" + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -3045,12 +3057,20 @@ "license": "MIT" }, "node_modules/esrap": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.1.0.tgz", - "integrity": "sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.3.0.tgz", + "integrity": "sha512-GQ/7RN8uOtEfNpzZzBMTzW9JBcX42oaSVtPzdF+6cEL8pqIL094iUpr9jzYGn4O4P/1S60dJ6izyT8F4LYARng==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "peerDependencies": { + "@typescript-eslint/types": "^8.2.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/types": { + "optional": true + } } }, "node_modules/estree-walker": { @@ -4037,21 +4057,23 @@ } }, "node_modules/svelte": { - "version": "5.39.11", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.39.11.tgz", - "integrity": "sha512-8MxWVm2+3YwrFbPaxOlT1bbMi6OTenrAgks6soZfiaS8Fptk4EVyRIFhJc3RpO264EeSNwgjWAdki0ufg4zkGw==", + "version": "5.56.8", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.56.8.tgz", + "integrity": "sha512-PY8LOw7xP6c8IOiVqdo0sbbZVYhXRSfklOQLAUyGBKqjTX0wx/z4l/9J+PmBpmlLnxzEb1NqltxQ5/wZme/Cmg==", "license": "MIT", "dependencies": { "@jridgewell/remapping": "^2.3.4", "@jridgewell/sourcemap-codec": "^1.5.0", - "@sveltejs/acorn-typescript": "^1.0.5", + "@sveltejs/acorn-typescript": "^1.0.10", "@types/estree": "^1.0.5", + "@types/trusted-types": "^2.0.7", "acorn": "^8.12.1", - "aria-query": "^5.3.1", + "aria-query": "5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", + "devalue": "^5.8.1", "esm-env": "^1.2.1", - "esrap": "^2.1.0", + "esrap": "^2.2.12", "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", diff --git a/svelte/src/admin_panel/HostMetricsGraph.svelte b/svelte/src/admin_panel/HostMetricsGraph.svelte index 4292db7..1a53e8e 100644 --- a/svelte/src/admin_panel/HostMetricsGraph.svelte +++ b/svelte/src/admin_panel/HostMetricsGraph.svelte @@ -33,7 +33,7 @@ const update_chart = async (timestamps: string[], metrics: {[key: string]: numbe chart.data().datasets[0] = { label: "sum", data: create_sum_dataset(metrics), - borderWidth: 1.5, + borderWidth: 1, pointRadius: 0, borderColor: "#ff0000", backgroundColor: "#ff0000", @@ -41,7 +41,7 @@ const update_chart = async (timestamps: string[], metrics: {[key: string]: numbe chart.data().datasets[1] = { label: "average", data: create_avg_dataset(metrics), - borderWidth: 1.5, + borderWidth: 1, pointRadius: 0, borderColor: "#00ff00", backgroundColor: "#00ff00", diff --git a/svelte/src/filesystem/Breadcrumbs.svelte b/svelte/src/filesystem/Breadcrumbs.svelte index 400923d..a8f1a4c 100644 --- a/svelte/src/filesystem/Breadcrumbs.svelte +++ b/svelte/src/filesystem/Breadcrumbs.svelte @@ -1,5 +1,5 @@ -
+
@@ -110,11 +110,10 @@ export const copy_link = () => { overflow-x: hidden; overflow-y: hidden; transition: max-height 0.3s; - border-top: 1px solid var(--separator); background: var(--shaded_background); position: sticky; - bottom: 0; + bottom: 4px; } .grid { display: grid; diff --git a/svelte/src/filesystem/edit_window/AccessControl.svelte b/svelte/src/filesystem/edit_window/AccessControl.svelte index 1f8896b..fdc8cda 100644 --- a/svelte/src/filesystem/edit_window/AccessControl.svelte +++ b/svelte/src/filesystem/edit_window/AccessControl.svelte @@ -1,6 +1,6 @@ + +
+
+

delete Trash

+
+ + {#if entries.length > 0} + + {/if} +
+
+ + {#if error} +

{error}

+ {:else if loaded && entries.length === 0} +

The trash is empty.

+ {:else if entries.length > 0} + + + + + + + + + + + + + {#each entries as entry (entry.node.id)} + + + + + + + + + {/each} + +
NameOriginal locationDeletedSize
+ icon + + + {entry.node.name} + + + {entry.original_path || "—"} + + {entry.deletion_date ? formatDate(entry.deletion_date) : "—"} + + {#if entry.node.type === "file"} + {formatDataVolume(entry.node.file_size, 3)} + {/if} + +
+ + +
+
+ {/if} +
+ + diff --git a/svelte/src/filesystem/upload_widget/UploadFunc.ts b/svelte/src/filesystem/upload_widget/UploadFunc.ts index 74dad3a..d9d4797 100644 --- a/svelte/src/filesystem/upload_widget/UploadFunc.ts +++ b/svelte/src/filesystem/upload_widget/UploadFunc.ts @@ -9,7 +9,7 @@ // // on_error is called when the upload has failed. The parameters are the error -import { fs_path_url, type GenericResponse } from "lib/FilesystemAPI.svelte" +import { fs_path_url, type GenericResponse } from "lib/FilesystemAPI" // code and an error message export const upload_file = ( diff --git a/svelte/src/filesystem/viewers/Audio.svelte b/svelte/src/filesystem/viewers/Audio.svelte index 87c5b97..e8a4081 100644 --- a/svelte/src/filesystem/viewers/Audio.svelte +++ b/svelte/src/filesystem/viewers/Audio.svelte @@ -1,6 +1,6 @@ diff --git a/svelte/src/filesystem/viewers/Text.svelte b/svelte/src/filesystem/viewers/Text.svelte index b066471..dd3bdbb 100644 --- a/svelte/src/filesystem/viewers/Text.svelte +++ b/svelte/src/filesystem/viewers/Text.svelte @@ -1,6 +1,6 @@
@@ -222,7 +223,7 @@ import OtherPlans from "./OtherPlans.svelte"; Free
- {#if window.user.subscription.id === "patreon_1"} + {#if $user !== null && $user.subscription.id === "patreon_1"} You have this plan
Thank you for supporting Nova! {:else} @@ -240,7 +241,7 @@ import OtherPlans from "./OtherPlans.svelte"; {/if}
- {#if window.user.username === ""} + {#if $user === null} Account required
@@ -257,16 +258,16 @@ import OtherPlans from "./OtherPlans.svelte"; No recurring payments {:else} - {#if window.user.subscription.type === ""} + {#if $user.subscription.type === ""} Deposit credit to activate Prepaid - {:else if window.user.subscription.type === "patreon"} + {:else if $user.subscription.type === "patreon"} Patreon subscription active. Prepaid cannot be activated - {:else if window.user.subscription.type === "prepaid"} + {:else if $user.subscription.type === "prepaid"} Prepaid subscription is active
- Current balance + Current balance
Top up my credit diff --git a/svelte/src/home_page/GetStarted.svelte b/svelte/src/home_page/GetStarted.svelte index d40b782..9f8120a 100644 --- a/svelte/src/home_page/GetStarted.svelte +++ b/svelte/src/home_page/GetStarted.svelte @@ -1,28 +1,28 @@ - -{#if window.user.username !== ""} +{#if $user !== null}
- {#if window.user.subscription.type === "patreon"} + {#if $user.subscription.type === "patreon"}

You already have a Patreon subscription active. You cannot use Prepaid while that subscription is active.

- - {:else if window.user.subscription.type === "prepaid"} + {:else if $user.subscription.type === "prepaid"}

You already have a Prepaid subscription active. Your account - balance is . Use + balance is . Use the form below to top up your balance.

{:else}

- You are currently logged in as '{window.user.username}'. Use the + You are currently logged in as '{$user.username}'. Use the form below to activate prepaid on this account.

diff --git a/svelte/src/home_page/HomePage.svelte b/svelte/src/home_page/HomePage.svelte index 426ebe9..30f612f 100644 --- a/svelte/src/home_page/HomePage.svelte +++ b/svelte/src/home_page/HomePage.svelte @@ -3,9 +3,9 @@ import Menu from "filesystem/Menu.svelte"; import Footer from "layout/Footer.svelte"; import { drop_target } from "lib/DropTarget"; import AddressReputation from "./AddressReputation.svelte"; -import FeatureTable from "./FeatureTable.svelte"; import GetStarted from "./GetStarted.svelte"; import Pricing from "./Pricing.svelte"; +import SubscriptionPlans from "./SubscriptionPlans.svelte"; let upload_widget @@ -28,26 +28,6 @@ let upload_widget content delivery. We will store and serve your files at an extremely competitive rate.

-
-
-
Storage pricing
-
€ 4 / TB / month
-
-
-
Egress pricing
-
€ 1 / TB
-
-
-

What Nova is good at

-
    -
  • - Serving large files to millions of people worldwide -
  • -
  • - Storing files for less money than all the competition -
  • -
-
@@ -107,6 +87,11 @@ let upload_widget
+
+

Subscription plans

+
+ +

Get started

diff --git a/svelte/src/home_page/OtherPlans.svelte b/svelte/src/home_page/OtherPlans.svelte deleted file mode 100644 index b9200e2..0000000 --- a/svelte/src/home_page/OtherPlans.svelte +++ /dev/null @@ -1,146 +0,0 @@ -
-
- -
-
100 GB max file size
-
Files never expire
-
8 TB transfer limit
-
4 TB storage space
-
- File viewer - branding: Set a custom theme and header, - footer and background images on the download pages - for your files -
-
-
-
-
- Tenacity
- {#if window.user.subscription.id === "patreon_3"} - You have this plan
- Thank you for supporting Nova! - {:else} - - € 16 - - / month - {/if} -
-
-
100 GB max file size
-
Files never expire
-
16 TB transfer limit
-
8 TB storage space
-
File viewer branding
-
-
-
-
- Eternity
- {#if window.user.subscription.id === "patreon_4"} - You have this plan
- Thank you for supporting Nova! - {:else} - - € 32 - - / month - {/if} -
-
-
100 GB max file size
-
Files never expire
-
32 TB transfer limit
-
16 TB storage space
-
File viewer branding
-
-
-
-
- Infinity
- {#if window.user.subscription.id === "patreon_6"} - You have this plan
- Thank you for supporting Nova! - {:else} - - € 64 - - / month - {/if} -
-
-
100 GB max file size
-
Files never expire
-
64 TB transfer limit
-
32 TB storage space
-
File viewer branding
-
-
-
- - diff --git a/svelte/src/home_page/SubscriptionPlans.svelte b/svelte/src/home_page/SubscriptionPlans.svelte new file mode 100644 index 0000000..096c59f --- /dev/null +++ b/svelte/src/home_page/SubscriptionPlans.svelte @@ -0,0 +1,226 @@ + + +
+
+ {#each plans as plan (plan.title)} +
+
+ {plan.title} +
+ / month +
+
+
+ {formatDataVolume(plan.storage, 0)} + storage space +
+
+ {formatDataVolume(plan.egress, 0)} + egress traffic per month +
+
+
+ {#if plan.checkout_cadence_1 !== undefined} + +
Monthly
+
/ month
+
+ {:else} + Monthly plan not available + {/if} + {#if plan.checkout_cadence_6 !== undefined} + +
Bi-yearly (save 10%)
+
/ 6 months
+
+ {:else} + Bi-yearly plan not available + {/if} + {#if plan.checkout_cadence_12 !== undefined} + +
Yearly (save 20%)
+
/ year
+
+ {:else} + Yearly plan not available + {/if} +
+
+ {/each} +
+
+ + diff --git a/svelte/src/layout/IconBlock.svelte b/svelte/src/layout/IconBlock.svelte index 65e5191..62ad77a 100644 --- a/svelte/src/layout/IconBlock.svelte +++ b/svelte/src/layout/IconBlock.svelte @@ -1,7 +1,7 @@ -
- {@render children?.()} +
+
+ {@render children?.()} +
diff --git a/svelte/src/util/ProgressBar.svelte b/svelte/src/util/ProgressBar.svelte index 3c3bcdc..7bef300 100644 --- a/svelte/src/util/ProgressBar.svelte +++ b/svelte/src/util/ProgressBar.svelte @@ -1,6 +1,4 @@