{{ expandedGalleryItem.title }}
@@ -99,7 +99,7 @@ import { show_ads_window, hide_ads_window } from '@/helpers/ads.js'
const props = defineProps({
project: {
type: Object,
- default: () => {},
+ default: () => ({}),
},
})
diff --git a/apps/app-playground/Cargo.toml b/apps/app-playground/Cargo.toml
index a37251612..a90c40e74 100644
--- a/apps/app-playground/Cargo.toml
+++ b/apps/app-playground/Cargo.toml
@@ -7,18 +7,7 @@ edition = "2021"
[dependencies]
theseus = { path = "../../packages/app-lib", features = ["cli"] }
-
-serde_json = "1.0"
-serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
-thiserror = "1.0"
-url = "2.2"
webbrowser = "0.8.13"
-dunce = "1.0.3"
-
-futures = "0.3"
-uuid = { version = "1.1", features = ["serde", "v4"] }
tracing = "0.1.37"
-tracing-subscriber = "0.3.18"
-tracing-error = "0.2.0"
diff --git a/apps/app/Cargo.toml b/apps/app/Cargo.toml
index 0e3bc20b3..06f38432d 100644
--- a/apps/app/Cargo.toml
+++ b/apps/app/Cargo.toml
@@ -28,12 +28,9 @@ tauri-plugin-single-instance = { version = "2.2.0" }
tokio = { version = "1", features = ["full"] }
thiserror = "1.0"
-futures = "0.3"
daedalus = { path = "../../packages/daedalus" }
chrono = "0.4.26"
-dirs = "5.0.1"
-
url = "2.2"
uuid = { version = "1.1", features = ["serde", "v4"] }
os_info = "3.7.0"
@@ -41,9 +38,6 @@ os_info = "3.7.0"
tracing = "0.1.37"
tracing-error = "0.2.0"
-lazy_static = "1"
-once_cell = "1"
-
dashmap = "6.0.1"
paste = "1.0.15"
diff --git a/apps/app/tauri.conf.json b/apps/app/tauri.conf.json
index 24eb3bd41..7f3e31ac8 100644
--- a/apps/app/tauri.conf.json
+++ b/apps/app/tauri.conf.json
@@ -39,7 +39,7 @@
"fileAssociations": [
{
"ext": ["mrpack"],
- "mimeType": "application/zip+mrpack"
+ "mimeType": "application/x-modrinth-modpack+zip"
}
]
},
diff --git a/apps/daedalus_client/Cargo.toml b/apps/daedalus_client/Cargo.toml
index 30b0f9db5..6ddb4c5ba 100644
--- a/apps/daedalus_client/Cargo.toml
+++ b/apps/daedalus_client/Cargo.toml
@@ -22,7 +22,6 @@ reqwest = { version = "0.12.5", default-features = false, features = [
"rustls-tls-native-roots",
] }
async_zip = { version = "0.0.17", features = ["full"] }
-semver = "1.0"
chrono = { version = "0.4", features = ["serde"] }
bytes = "1.6.0"
rust-s3 = { version = "0.33.0", default-features = false, features = [
@@ -39,4 +38,3 @@ tracing-error = "0.2.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
-tracing-futures = { version = "0.2.5", features = ["futures", "tokio"] }
diff --git a/apps/daedalus_client/src/forge.rs b/apps/daedalus_client/src/forge.rs
index 5591f3211..a4f7a33a9 100644
--- a/apps/daedalus_client/src/forge.rs
+++ b/apps/daedalus_client/src/forge.rs
@@ -598,7 +598,7 @@ async fn fetch(
))
})?;
- let file_name = value.split('/').last()
+ let file_name = value.split('/').next_back()
.ok_or_else(|| {
crate::ErrorKind::InvalidInput(format!(
"Unable reading filename for data key {key} at path {value}",
diff --git a/apps/docs/astro.config.mjs b/apps/docs/astro.config.mjs
index 4fcf82fa6..3baeb6f4f 100644
--- a/apps/docs/astro.config.mjs
+++ b/apps/docs/astro.config.mjs
@@ -44,6 +44,10 @@ export default defineConfig({
label: 'Contributing to Modrinth',
autogenerate: { directory: 'contributing' },
},
+ {
+ label: 'Guides',
+ autogenerate: { directory: 'guide' },
+ },
// Add the generated sidebar group to the sidebar.
...openAPISidebarGroups,
],
diff --git a/apps/docs/public/openapi.yaml b/apps/docs/public/openapi.yaml
index ec727b3af..73b2b05b7 100644
--- a/apps/docs/public/openapi.yaml
+++ b/apps/docs/public/openapi.yaml
@@ -1,7 +1,7 @@
openapi: '3.0.0'
info:
- version: v2.7.0/15cf3fc
+ version: v2.7.0/366f528
title: Labrinth
termsOfService: https://modrinth.com/legal/terms
contact:
@@ -51,35 +51,7 @@ info:
Please note that certain scopes and requests cannot be completed with a personal access token or using OAuth.
For example, deleting a user account can only be done through Modrinth's frontend.
- ### OAuth2
- Applications interacting with an authenticated API should create an OAuth2 application.
- You can do this in [the developer settings](https://modrinth.com/settings/applications).
-
- Make sure to save your application secret, as you will not be able to access it after you leave the page.
-
- Once you have created a client, use the following URL to have a user authorize your client:
- ```
- https://modrinth.com/auth/authorize?client_id=&redirect_uri=&scope=++
- ```
- > You can get a list of all scope names [here](https://github.com/modrinth/code/tree/main/apps/labrinth/src/models/v3/pats.rs).
-
- Then, send a `POST` request to the following URL to get the token:
-
- ```
- https://api.modrinth.com/_internal/oauth/token
- ```
-
- > Note that you will need to provide your application's secret under the Authorization header.
-
- In the body of your request, make sure to include the following:
- - `code`: The code generated when authorizing your client
- - `client_id`: Your client ID (found in developer settings)
- - `redirect_uri`: A valid redirect URI provided in your application's settings
- - `grant_type`: This will need to be `authorization_code`.
-
- If your token request fails for any reason, you will need to get another code from the authorization process.
-
- This route will be changed in the future to move the `_internal` part to `v3`.
+ A detailed guide on OAuth has been published in [Modrinth's technical documentation](https://docs.modrinth.com/guide/oauth).
### Personal access tokens
Personal access tokens (PATs) can be generated in from [the user settings](https://modrinth.com/settings/account).
@@ -1823,7 +1795,7 @@ components:
description: Number of projects on Modrinth
versions:
type: integer
- description: Number of projects on Modrinth
+ description: Number of versions on Modrinth
files:
type: integer
description: Number of version files on Modrinth
@@ -3018,6 +2990,24 @@ paths:
$ref: '#/components/schemas/InvalidInputError'
'404':
description: The requested item(s) were not found or no authorization to access the requested item(s)
+ delete:
+ summary: Remove user's avatar
+ operationId: deleteUserIcon
+ tags:
+ - users
+ security:
+ - TokenAuth: ['USER_WRITE']
+ responses:
+ '204':
+ description: Expected response to a valid request
+ '400':
+ description: Request was invalid, see given error
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/InvalidInputError'
+ '404':
+ description: The requested item(s) were not found or no authorization to access the requested item(s)
/user/{id|username}/projects:
parameters:
- $ref: '#/components/parameters/UserIdentifier'
diff --git a/apps/docs/src/content/docs/guide/oauth.md b/apps/docs/src/content/docs/guide/oauth.md
new file mode 100644
index 000000000..a7833b103
--- /dev/null
+++ b/apps/docs/src/content/docs/guide/oauth.md
@@ -0,0 +1,95 @@
+---
+title: The hitchhiker's guide to OAuth
+description: Guide for using Modrinth OAuth to interact with the API on users' behalf.
+---
+
+Modrinth allows developers to create applications which, once authorized by a Modrinth user, let the developer interact with the API on their behalf. The flow used to get an API token is based on the OAuth 2 protocol. It is recommended that most people use an existing OAuth library to handle the authentication. If you want to implement it from scratch, you will need to look into [RFC 6749]. If the only user of the application is yourself, a personal access token (PAT) may be a better fit.
+
+If you're familiar with OAuth 2, these are the URLs you will need:
+
+| Name | URL |
+|--------------------|--------------------------------------------------|
+| Authorization page | `https://modrinth.com/auth/authorize` |
+| Token exchange | `https://api.modrinth.com/_internal/oauth/token` |
+
+The flow will generally look like this:
+
+1. User is redirected to Modrinth to authorize your application
+2. User is redirected back to your site after authorizing, with an authorization code
+3. Your backend exchanges this code for an access token
+
+## Register your application
+
+To start off, you need to [register an application] in Modrinth's systems. The settings chosen here can always be changed later. You need to select what permissions you need, called scopes. For security reasons you will want to select only the scopes you need. See the [principle of least privilege].
+
+In addition to name and scopes, you will also need to add one or more redirect URIs. These are the URIs that the user can be redirected to after they authorize your application.
+
+After you've registered your application, it is important that you take note of the client secret somewhere safe. If the client secret is to ever leak, it is important that you regenerate it to ensure the security of your authorized users. If your client secret or access tokens are found exposed in the wild, your application may be disabled without prior notice.
+
+## Getting authorization
+
+Once the user is ready to authorize your application, you need to construct a URL to redirect them to. The authorization URL for Modrinth is `https://api.modrinth.com/_internal/oauth/token`. Supply the following query parameters:
+
+| Query parameter | Description |
+|-----------------|-------------------------------------------------------------------------------------------|
+| `response_type` | In Modrinth this always needs to be `code`, since only code grants are supported |
+| `client_id` | The application identifier found in the settings |
+| `scope` | The permissions you need access to |
+| `state` | A mechanism to prevent certain attacks. Explained further below. Recommended but optional |
+| `redirect_uri` | The URI the user is redirect to after finishing authorization |
+
+You might have noticed the `state` parameter. [CSRF] (Cross-site request forgery), and [clickjacking] are security vulnerabilities that you're recommended to protect against. In OAuth2 this is usually done with the `state` parameter. When the user initiates a request to start authorization, you include a `state` which is unique to this request. This can, for example, be saved in localStorge or a cookie. When the redirect URI is called, you verify that the `state` parameter is the same. Using `state` is optional, but recommended.
+
+The scope identifiers are currently best found in the backend source code located at [`apps/labrinth/src/models/v3/pats.rs`]. The scope parameter is an array of scope identifiers, seperated by a plus sign (`+`).
+
+The redirect URI is the endpoint on your server that will receive the code which can eventually be used to act on the user's behalf. For security reasons the redirect URI used has to be allowlisted in your application settings. The redirect will contain the following query parameters:
+
+| Query parameter | Description |
+|-----------------|----------------------------------------------------|
+| `code` | The code that can be exchanged for an access token |
+| `client_id` | Your client id |
+| `redirect_uri` | The redirect URI which was used |
+| `grant_type` | Always `authorization_code` in Modrinth |
+
+## Exchanging tokens
+
+If you've followed the previous section on getting authorization, you should now have an authorization code. Before you can access the API, you need to exchange this code for an access token. This is done by sending a POST request to the exchange token endpoint, `https://api.modrinth.com/_internal/oauth/token`. This request has to be of type urlencoded form. Make sure the `Content-Type` header is set to `application/x-www-form-urlencoded`. To authenticate this request you need to place your client secret in the `Authorization` header.
+
+In the body use these fields:
+
+| Field | Description |
+|----------------|--------------------------------------------------------------|
+| `code` | The authorization code |
+| `client_id` | Your client id, the same as in the authorization request |
+| `redirect_uri` | The redirect URI which was redirected to after authorization |
+| `grant_type` | Always `authorization_code` in Modrinth |
+
+If the request succeeds, you should receive a JSON payload with these fields:
+
+| Field | Description |
+|----------------|------------------------------------------------------|
+| `access_token` | The access token you can use to access the API |
+| `token_type` | Currently only `Bearer` |
+| `expires_in` | The amount of seconds until the access token expires |
+
+To use this access token, you attach it to API requests in the `Authorization` header. To get basic information about the authorizer, you can use the [`/user` endpoint], which automatically gets the user from the header.
+
+If you have any questions, you're welcome to ask in #api-development in the [Discord guild], or create a ticket on the [support portal].
+
+[RFC 6749]: https://datatracker.ietf.org/doc/html/rfc6749
+
+[register an application]: https://modrinth.com/settings/applications
+
+[principle of least privilege]: https://en.wikipedia.org/wiki/Principle_of_least_privilege
+
+[`apps/labrinth/src/models/v3/pats.rs`]: https://github.com/modrinth/code/blob/main/apps/labrinth/src/models/v3/pats.rs
+
+[CSRF]: https://en.wikipedia.org/wiki/Cross-site_request_forgery
+
+[Clickjacking]: https://en.wikipedia.org/wiki/Clickjacking
+
+[`/user` endpoint]: https://docs.modrinth.com/api/operations/getuserfromauth/
+
+[Discord guild]: https://discord.modrinth.com
+
+[support portal]: https://support.modrinth.com/en/
diff --git a/apps/frontend/.env.example b/apps/frontend/.env.example
index bd54ceb10..43ceb1d53 100644
--- a/apps/frontend/.env.example
+++ b/apps/frontend/.env.example
@@ -1,2 +1,3 @@
BASE_URL=https://api.modrinth.com/v2/
BROWSER_BASE_URL=https://api.modrinth.com/v2/
+PYRO_BASE_URL=https://archon.modrinth.com/
diff --git a/apps/frontend/nuxt.config.ts b/apps/frontend/nuxt.config.ts
index 6f9418832..354bff294 100644
--- a/apps/frontend/nuxt.config.ts
+++ b/apps/frontend/nuxt.config.ts
@@ -126,6 +126,7 @@ export default defineNuxtConfig({
homePageSearch?: any[];
homePageNotifs?: any[];
products?: any[];
+ errors?: number[];
} = {};
try {
@@ -157,6 +158,14 @@ export default defineNuxtConfig({
},
};
+ const caughtErrorCodes = new Set();
+
+ function handleFetchError(err: any, defaultValue: any) {
+ console.error("Error generating state: ", err);
+ caughtErrorCodes.add(err.status);
+ return defaultValue;
+ }
+
const [
categories,
loaders,
@@ -168,15 +177,25 @@ export default defineNuxtConfig({
homePageNotifs,
products,
] = await Promise.all([
- $fetch(`${API_URL}tag/category`, headers),
- $fetch(`${API_URL}tag/loader`, headers),
- $fetch(`${API_URL}tag/game_version`, headers),
- $fetch(`${API_URL}tag/donation_platform`, headers),
- $fetch(`${API_URL}tag/report_type`, headers),
- $fetch(`${API_URL}projects_random?count=60`, headers),
- $fetch(`${API_URL}search?limit=3&query=leave&index=relevance`, headers),
- $fetch(`${API_URL}search?limit=3&query=&index=updated`, headers),
- $fetch(`${API_URL.replace("/v2/", "/_internal/")}billing/products`, headers),
+ $fetch(`${API_URL}tag/category`, headers).catch((err) => handleFetchError(err, [])),
+ $fetch(`${API_URL}tag/loader`, headers).catch((err) => handleFetchError(err, [])),
+ $fetch(`${API_URL}tag/game_version`, headers).catch((err) => handleFetchError(err, [])),
+ $fetch(`${API_URL}tag/donation_platform`, headers).catch((err) =>
+ handleFetchError(err, []),
+ ),
+ $fetch(`${API_URL}tag/report_type`, headers).catch((err) => handleFetchError(err, [])),
+ $fetch(`${API_URL}projects_random?count=60`, headers).catch((err) =>
+ handleFetchError(err, []),
+ ),
+ $fetch(`${API_URL}search?limit=3&query=leave&index=relevance`, headers).catch((err) =>
+ handleFetchError(err, {}),
+ ),
+ $fetch(`${API_URL}search?limit=3&query=&index=updated`, headers).catch((err) =>
+ handleFetchError(err, {}),
+ ),
+ $fetch(`${API_URL.replace("/v2/", "/_internal/")}billing/products`, headers).catch((err) =>
+ handleFetchError(err, []),
+ ),
]);
state.categories = categories;
@@ -188,6 +207,7 @@ export default defineNuxtConfig({
state.homePageSearch = homePageSearch;
state.homePageNotifs = homePageNotifs;
state.products = products;
+ state.errors = [...caughtErrorCodes];
await fs.writeFile("./src/generated/state.json", JSON.stringify(state));
diff --git a/apps/frontend/package.json b/apps/frontend/package.json
index 64b7a31cf..c04ddc418 100644
--- a/apps/frontend/package.json
+++ b/apps/frontend/package.json
@@ -10,7 +10,7 @@
"postinstall": "nuxi prepare",
"lint": "eslint . && prettier --check .",
"fix": "eslint . --fix && prettier --write .",
- "intl:extract": "formatjs extract \"{,src/components,src/composables,src/layouts,src/middleware,src/modules,src/pages,src/plugins,src/utils}/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore '**/*.d.ts' --ignore 'node_modules' --out-file src/locales/en-US/index.json --format crowdin --preserve-whitespace"
+ "intl:extract": "formatjs extract \"{,src/components,src/composables,src/layouts,src/middleware,src/modules,src/pages,src/plugins,src/utils}/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" \"src/error.vue\" --ignore '**/*.d.ts' --ignore 'node_modules' --out-file src/locales/en-US/index.json --format crowdin --preserve-whitespace"
},
"devDependencies": {
"@formatjs/cli": "^6.2.12",
diff --git a/apps/frontend/src/assets/images/utils/align-left.svg b/apps/frontend/src/assets/images/utils/align-left.svg
deleted file mode 100644
index e295fc502..000000000
--- a/apps/frontend/src/assets/images/utils/align-left.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/archive.svg b/apps/frontend/src/assets/images/utils/archive.svg
deleted file mode 100644
index 7e1a54e64..000000000
--- a/apps/frontend/src/assets/images/utils/archive.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/asterisk.svg b/apps/frontend/src/assets/images/utils/asterisk.svg
deleted file mode 100644
index 19e562fdf..000000000
--- a/apps/frontend/src/assets/images/utils/asterisk.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/bell-ring.svg b/apps/frontend/src/assets/images/utils/bell-ring.svg
deleted file mode 100644
index 0611c0b0d..000000000
--- a/apps/frontend/src/assets/images/utils/bell-ring.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/bell.svg b/apps/frontend/src/assets/images/utils/bell.svg
deleted file mode 100644
index c8b1cd588..000000000
--- a/apps/frontend/src/assets/images/utils/bell.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/box.svg b/apps/frontend/src/assets/images/utils/box.svg
deleted file mode 100644
index 81c7a615f..000000000
--- a/apps/frontend/src/assets/images/utils/box.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/calendar-clock.svg b/apps/frontend/src/assets/images/utils/calendar-clock.svg
deleted file mode 100644
index 13cd832da..000000000
--- a/apps/frontend/src/assets/images/utils/calendar-clock.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/calendar.svg b/apps/frontend/src/assets/images/utils/calendar.svg
deleted file mode 100644
index c350eb1a5..000000000
--- a/apps/frontend/src/assets/images/utils/calendar.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/chart.svg b/apps/frontend/src/assets/images/utils/chart.svg
deleted file mode 100644
index 1300b435d..000000000
--- a/apps/frontend/src/assets/images/utils/chart.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/check-circle.svg b/apps/frontend/src/assets/images/utils/check-circle.svg
deleted file mode 100644
index f6e6b1752..000000000
--- a/apps/frontend/src/assets/images/utils/check-circle.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/check.svg b/apps/frontend/src/assets/images/utils/check.svg
deleted file mode 100644
index f633db267..000000000
--- a/apps/frontend/src/assets/images/utils/check.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/chevron-left.svg b/apps/frontend/src/assets/images/utils/chevron-left.svg
deleted file mode 100644
index 2b7022366..000000000
--- a/apps/frontend/src/assets/images/utils/chevron-left.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/chevron-right.svg b/apps/frontend/src/assets/images/utils/chevron-right.svg
deleted file mode 100644
index 6f2693a38..000000000
--- a/apps/frontend/src/assets/images/utils/chevron-right.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/clear.svg b/apps/frontend/src/assets/images/utils/clear.svg
deleted file mode 100644
index 144ce2439..000000000
--- a/apps/frontend/src/assets/images/utils/clear.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/client.svg b/apps/frontend/src/assets/images/utils/client.svg
deleted file mode 100644
index 06dd3b980..000000000
--- a/apps/frontend/src/assets/images/utils/client.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/clipboard-copy.svg b/apps/frontend/src/assets/images/utils/clipboard-copy.svg
deleted file mode 100644
index 4d1827d95..000000000
--- a/apps/frontend/src/assets/images/utils/clipboard-copy.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/coins.svg b/apps/frontend/src/assets/images/utils/coins.svg
deleted file mode 100644
index 8d3fd9d2d..000000000
--- a/apps/frontend/src/assets/images/utils/coins.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/contract.svg b/apps/frontend/src/assets/images/utils/contract.svg
deleted file mode 100644
index 977536891..000000000
--- a/apps/frontend/src/assets/images/utils/contract.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/copyright.svg b/apps/frontend/src/assets/images/utils/copyright.svg
deleted file mode 100644
index 3a93176c2..000000000
--- a/apps/frontend/src/assets/images/utils/copyright.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/currency.svg b/apps/frontend/src/assets/images/utils/currency.svg
deleted file mode 100644
index 221d05fcd..000000000
--- a/apps/frontend/src/assets/images/utils/currency.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/dashboard.svg b/apps/frontend/src/assets/images/utils/dashboard.svg
deleted file mode 100644
index 94c0ceb3e..000000000
--- a/apps/frontend/src/assets/images/utils/dashboard.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/download.svg b/apps/frontend/src/assets/images/utils/download.svg
deleted file mode 100644
index 84f0d7d3b..000000000
--- a/apps/frontend/src/assets/images/utils/download.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/dropdown.svg b/apps/frontend/src/assets/images/utils/dropdown.svg
deleted file mode 100644
index 3ef764bce..000000000
--- a/apps/frontend/src/assets/images/utils/dropdown.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/edit.svg b/apps/frontend/src/assets/images/utils/edit.svg
deleted file mode 100644
index 98ef3a754..000000000
--- a/apps/frontend/src/assets/images/utils/edit.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/exit.svg b/apps/frontend/src/assets/images/utils/exit.svg
deleted file mode 100644
index 7d8048fa5..000000000
--- a/apps/frontend/src/assets/images/utils/exit.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/expand.svg b/apps/frontend/src/assets/images/utils/expand.svg
deleted file mode 100644
index 743770940..000000000
--- a/apps/frontend/src/assets/images/utils/expand.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/external.svg b/apps/frontend/src/assets/images/utils/external.svg
deleted file mode 100644
index 36fbe5a4e..000000000
--- a/apps/frontend/src/assets/images/utils/external.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/eye-off.svg b/apps/frontend/src/assets/images/utils/eye-off.svg
deleted file mode 100644
index dc48b93c8..000000000
--- a/apps/frontend/src/assets/images/utils/eye-off.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/eye.svg b/apps/frontend/src/assets/images/utils/eye.svg
deleted file mode 100644
index e6fe607ba..000000000
--- a/apps/frontend/src/assets/images/utils/eye.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/file-text.svg b/apps/frontend/src/assets/images/utils/file-text.svg
deleted file mode 100644
index 10ee96fbf..000000000
--- a/apps/frontend/src/assets/images/utils/file-text.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/file.svg b/apps/frontend/src/assets/images/utils/file.svg
deleted file mode 100644
index 09dcf7612..000000000
--- a/apps/frontend/src/assets/images/utils/file.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/filter.svg b/apps/frontend/src/assets/images/utils/filter.svg
deleted file mode 100644
index 38a47e043..000000000
--- a/apps/frontend/src/assets/images/utils/filter.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/gap.svg b/apps/frontend/src/assets/images/utils/gap.svg
deleted file mode 100644
index 44951634c..000000000
--- a/apps/frontend/src/assets/images/utils/gap.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/github.svg b/apps/frontend/src/assets/images/utils/github.svg
deleted file mode 100644
index 90908bb31..000000000
--- a/apps/frontend/src/assets/images/utils/github.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/globe.svg b/apps/frontend/src/assets/images/utils/globe.svg
deleted file mode 100644
index 292dca417..000000000
--- a/apps/frontend/src/assets/images/utils/globe.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/grid.svg b/apps/frontend/src/assets/images/utils/grid.svg
deleted file mode 100644
index f721c4857..000000000
--- a/apps/frontend/src/assets/images/utils/grid.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/hamburger.svg b/apps/frontend/src/assets/images/utils/hamburger.svg
deleted file mode 100644
index 8e2046a0d..000000000
--- a/apps/frontend/src/assets/images/utils/hamburger.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/hash.svg b/apps/frontend/src/assets/images/utils/hash.svg
deleted file mode 100644
index e7ed57c05..000000000
--- a/apps/frontend/src/assets/images/utils/hash.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/heart-handshake.svg b/apps/frontend/src/assets/images/utils/heart-handshake.svg
deleted file mode 100644
index 336bb00ac..000000000
--- a/apps/frontend/src/assets/images/utils/heart-handshake.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/heart.svg b/apps/frontend/src/assets/images/utils/heart.svg
deleted file mode 100644
index 4f363ce76..000000000
--- a/apps/frontend/src/assets/images/utils/heart.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/history.svg b/apps/frontend/src/assets/images/utils/history.svg
deleted file mode 100644
index c55b1cdbc..000000000
--- a/apps/frontend/src/assets/images/utils/history.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/image.svg b/apps/frontend/src/assets/images/utils/image.svg
deleted file mode 100644
index a45c6a30e..000000000
--- a/apps/frontend/src/assets/images/utils/image.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/info.svg b/apps/frontend/src/assets/images/utils/info.svg
deleted file mode 100644
index 8ae884368..000000000
--- a/apps/frontend/src/assets/images/utils/info.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/issues.svg b/apps/frontend/src/assets/images/utils/issues.svg
deleted file mode 100644
index ec77384be..000000000
--- a/apps/frontend/src/assets/images/utils/issues.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/key.svg b/apps/frontend/src/assets/images/utils/key.svg
deleted file mode 100644
index 845dcd6b2..000000000
--- a/apps/frontend/src/assets/images/utils/key.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/languages.svg b/apps/frontend/src/assets/images/utils/languages.svg
deleted file mode 100644
index 72ed7aeee..000000000
--- a/apps/frontend/src/assets/images/utils/languages.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/left-arrow.svg b/apps/frontend/src/assets/images/utils/left-arrow.svg
deleted file mode 100644
index 743b86d89..000000000
--- a/apps/frontend/src/assets/images/utils/left-arrow.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/lightbulb.svg b/apps/frontend/src/assets/images/utils/lightbulb.svg
deleted file mode 100644
index 724bc9776..000000000
--- a/apps/frontend/src/assets/images/utils/lightbulb.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/link.svg b/apps/frontend/src/assets/images/utils/link.svg
deleted file mode 100644
index f5db36f31..000000000
--- a/apps/frontend/src/assets/images/utils/link.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/list-end.svg b/apps/frontend/src/assets/images/utils/list-end.svg
deleted file mode 100644
index 06ded6da5..000000000
--- a/apps/frontend/src/assets/images/utils/list-end.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/list.svg b/apps/frontend/src/assets/images/utils/list.svg
deleted file mode 100644
index 10bfe7538..000000000
--- a/apps/frontend/src/assets/images/utils/list.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/lock.svg b/apps/frontend/src/assets/images/utils/lock.svg
deleted file mode 100644
index de09d9db3..000000000
--- a/apps/frontend/src/assets/images/utils/lock.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/log-out.svg b/apps/frontend/src/assets/images/utils/log-out.svg
deleted file mode 100644
index f489e1808..000000000
--- a/apps/frontend/src/assets/images/utils/log-out.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/message.svg b/apps/frontend/src/assets/images/utils/message.svg
deleted file mode 100644
index 7b092e81a..000000000
--- a/apps/frontend/src/assets/images/utils/message.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/mic.svg b/apps/frontend/src/assets/images/utils/mic.svg
deleted file mode 100644
index a63b99671..000000000
--- a/apps/frontend/src/assets/images/utils/mic.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/modrinth.svg b/apps/frontend/src/assets/images/utils/modrinth.svg
deleted file mode 100644
index a6b2e3807..000000000
--- a/apps/frontend/src/assets/images/utils/modrinth.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/monitor-smartphone.svg b/apps/frontend/src/assets/images/utils/monitor-smartphone.svg
deleted file mode 100644
index 0494f32d6..000000000
--- a/apps/frontend/src/assets/images/utils/monitor-smartphone.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/moon.svg b/apps/frontend/src/assets/images/utils/moon.svg
deleted file mode 100644
index 3284684f3..000000000
--- a/apps/frontend/src/assets/images/utils/moon.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/more-horizontal.svg b/apps/frontend/src/assets/images/utils/more-horizontal.svg
deleted file mode 100644
index 20338ba75..000000000
--- a/apps/frontend/src/assets/images/utils/more-horizontal.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/organization.svg b/apps/frontend/src/assets/images/utils/organization.svg
deleted file mode 100644
index d624b2079..000000000
--- a/apps/frontend/src/assets/images/utils/organization.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/paintbrush.svg b/apps/frontend/src/assets/images/utils/paintbrush.svg
deleted file mode 100644
index 7b3371125..000000000
--- a/apps/frontend/src/assets/images/utils/paintbrush.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/plus.svg b/apps/frontend/src/assets/images/utils/plus.svg
deleted file mode 100644
index 7da250ede..000000000
--- a/apps/frontend/src/assets/images/utils/plus.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/radio-button-checked.svg b/apps/frontend/src/assets/images/utils/radio-button-checked.svg
deleted file mode 100644
index 6571ac46e..000000000
--- a/apps/frontend/src/assets/images/utils/radio-button-checked.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/radio-button.svg b/apps/frontend/src/assets/images/utils/radio-button.svg
deleted file mode 100644
index c2e74a314..000000000
--- a/apps/frontend/src/assets/images/utils/radio-button.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/reply.svg b/apps/frontend/src/assets/images/utils/reply.svg
deleted file mode 100644
index b308a45d5..000000000
--- a/apps/frontend/src/assets/images/utils/reply.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/report.svg b/apps/frontend/src/assets/images/utils/report.svg
deleted file mode 100644
index 3f8507abf..000000000
--- a/apps/frontend/src/assets/images/utils/report.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/right-arrow.svg b/apps/frontend/src/assets/images/utils/right-arrow.svg
deleted file mode 100644
index 6046f1518..000000000
--- a/apps/frontend/src/assets/images/utils/right-arrow.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/save.svg b/apps/frontend/src/assets/images/utils/save.svg
deleted file mode 100644
index 204821423..000000000
--- a/apps/frontend/src/assets/images/utils/save.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/search.svg b/apps/frontend/src/assets/images/utils/search.svg
deleted file mode 100644
index 35ce90a3e..000000000
--- a/apps/frontend/src/assets/images/utils/search.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/send.svg b/apps/frontend/src/assets/images/utils/send.svg
deleted file mode 100644
index e20fad810..000000000
--- a/apps/frontend/src/assets/images/utils/send.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/server.svg b/apps/frontend/src/assets/images/utils/server.svg
deleted file mode 100644
index 54e05379d..000000000
--- a/apps/frontend/src/assets/images/utils/server.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/settings.svg b/apps/frontend/src/assets/images/utils/settings.svg
deleted file mode 100644
index 5accf92ee..000000000
--- a/apps/frontend/src/assets/images/utils/settings.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/shield.svg b/apps/frontend/src/assets/images/utils/shield.svg
deleted file mode 100644
index 9a4bef40e..000000000
--- a/apps/frontend/src/assets/images/utils/shield.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/slash.svg b/apps/frontend/src/assets/images/utils/slash.svg
deleted file mode 100644
index f4131b85f..000000000
--- a/apps/frontend/src/assets/images/utils/slash.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/sort-asc.svg b/apps/frontend/src/assets/images/utils/sort-asc.svg
deleted file mode 100644
index 859fb6e60..000000000
--- a/apps/frontend/src/assets/images/utils/sort-asc.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/sort-desc.svg b/apps/frontend/src/assets/images/utils/sort-desc.svg
deleted file mode 100644
index 2df482776..000000000
--- a/apps/frontend/src/assets/images/utils/sort-desc.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/star.svg b/apps/frontend/src/assets/images/utils/star.svg
deleted file mode 100644
index 0854bd018..000000000
--- a/apps/frontend/src/assets/images/utils/star.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/sun.svg b/apps/frontend/src/assets/images/utils/sun.svg
deleted file mode 100644
index e6255561a..000000000
--- a/apps/frontend/src/assets/images/utils/sun.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/sunrise.svg b/apps/frontend/src/assets/images/utils/sunrise.svg
deleted file mode 100644
index e84d06498..000000000
--- a/apps/frontend/src/assets/images/utils/sunrise.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/tag.svg b/apps/frontend/src/assets/images/utils/tag.svg
deleted file mode 100644
index d39bfbc02..000000000
--- a/apps/frontend/src/assets/images/utils/tag.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/tags.svg b/apps/frontend/src/assets/images/utils/tags.svg
deleted file mode 100644
index 37c752456..000000000
--- a/apps/frontend/src/assets/images/utils/tags.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/transfer.svg b/apps/frontend/src/assets/images/utils/transfer.svg
deleted file mode 100644
index 8929f6ca3..000000000
--- a/apps/frontend/src/assets/images/utils/transfer.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/trash.svg b/apps/frontend/src/assets/images/utils/trash.svg
deleted file mode 100644
index 731d939cc..000000000
--- a/apps/frontend/src/assets/images/utils/trash.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/undo.svg b/apps/frontend/src/assets/images/utils/undo.svg
deleted file mode 100644
index dfda16c24..000000000
--- a/apps/frontend/src/assets/images/utils/undo.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/unknown-donation.svg b/apps/frontend/src/assets/images/utils/unknown-donation.svg
deleted file mode 100644
index 1a124d269..000000000
--- a/apps/frontend/src/assets/images/utils/unknown-donation.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/unknown.svg b/apps/frontend/src/assets/images/utils/unknown.svg
deleted file mode 100644
index 000b3c115..000000000
--- a/apps/frontend/src/assets/images/utils/unknown.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/updated.svg b/apps/frontend/src/assets/images/utils/updated.svg
deleted file mode 100644
index b4a29e8ac..000000000
--- a/apps/frontend/src/assets/images/utils/updated.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/upload.svg b/apps/frontend/src/assets/images/utils/upload.svg
deleted file mode 100644
index 10ff29218..000000000
--- a/apps/frontend/src/assets/images/utils/upload.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/user-plus.svg b/apps/frontend/src/assets/images/utils/user-plus.svg
deleted file mode 100644
index 09e5ff83a..000000000
--- a/apps/frontend/src/assets/images/utils/user-plus.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/user-x.svg b/apps/frontend/src/assets/images/utils/user-x.svg
deleted file mode 100644
index b8244f0de..000000000
--- a/apps/frontend/src/assets/images/utils/user-x.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/user.svg b/apps/frontend/src/assets/images/utils/user.svg
deleted file mode 100644
index 34d4b2b6a..000000000
--- a/apps/frontend/src/assets/images/utils/user.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/users.svg b/apps/frontend/src/assets/images/utils/users.svg
deleted file mode 100644
index 416859760..000000000
--- a/apps/frontend/src/assets/images/utils/users.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/version.svg b/apps/frontend/src/assets/images/utils/version.svg
deleted file mode 100644
index e83cf9bf5..000000000
--- a/apps/frontend/src/assets/images/utils/version.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/wiki.svg b/apps/frontend/src/assets/images/utils/wiki.svg
deleted file mode 100644
index 260e6d41e..000000000
--- a/apps/frontend/src/assets/images/utils/wiki.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/frontend/src/assets/images/utils/world.svg b/apps/frontend/src/assets/images/utils/world.svg
deleted file mode 100644
index d064d8542..000000000
--- a/apps/frontend/src/assets/images/utils/world.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/frontend/src/assets/images/utils/x.svg b/apps/frontend/src/assets/images/utils/x.svg
deleted file mode 100644
index 6e20061f4..000000000
--- a/apps/frontend/src/assets/images/utils/x.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/apps/frontend/src/assets/styles/layout.scss b/apps/frontend/src/assets/styles/layout.scss
index 41be6710e..60e05cfdd 100644
--- a/apps/frontend/src/assets/styles/layout.scss
+++ b/apps/frontend/src/assets/styles/layout.scss
@@ -126,6 +126,7 @@
max-width: 80rem;
column-gap: 0.75rem;
padding: 0 1.5rem;
+ padding-bottom: 1.5rem;
grid-template:
"header"
diff --git a/apps/frontend/src/components/ui/Breadcrumbs.vue b/apps/frontend/src/components/ui/Breadcrumbs.vue
index 35ab1dc08..889a2484a 100644
--- a/apps/frontend/src/components/ui/Breadcrumbs.vue
+++ b/apps/frontend/src/components/ui/Breadcrumbs.vue
@@ -15,7 +15,7 @@
-
-
diff --git a/apps/frontend/src/components/ui/ModalCreation.vue b/apps/frontend/src/components/ui/ModalCreation.vue
index 1de76a95e..bfc5b140f 100644
--- a/apps/frontend/src/components/ui/ModalCreation.vue
+++ b/apps/frontend/src/components/ui/ModalCreation.vue
@@ -183,7 +183,7 @@ async function createProject() {
app.$notify({
group: "main",
title: "An error occurred",
- text: err.data.description,
+ text: err.data ? err.data.description : err,
type: "error",
});
}
diff --git a/apps/frontend/src/components/ui/NavStackItem.vue b/apps/frontend/src/components/ui/NavStackItem.vue
index e9adf443b..c1471ca9d 100644
--- a/apps/frontend/src/components/ui/NavStackItem.vue
+++ b/apps/frontend/src/components/ui/NavStackItem.vue
@@ -23,7 +23,7 @@
diff --git a/apps/frontend/src/components/ui/servers/BackupDeleteModal.vue b/apps/frontend/src/components/ui/servers/BackupDeleteModal.vue
index 44d0ac11e..632919c61 100644
--- a/apps/frontend/src/components/ui/servers/BackupDeleteModal.vue
+++ b/apps/frontend/src/components/ui/servers/BackupDeleteModal.vue
@@ -1,86 +1,45 @@
-
-