-```
diff --git a/docs/routes/classes/Base.md b/docs/routes/classes/Base.md
deleted file mode 100644
index ffdda5b3a..000000000
--- a/docs/routes/classes/Base.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Base should be applied to a "root" element, like ``, to provide base styles for common things like text. The theme mode, `light-theme`, `dark-theme`, or `oled-theme`, should also be added to this element.
-
-```svelte example
-
...
-```
diff --git a/docs/routes/classes/Card.md b/docs/routes/classes/Card.md
deleted file mode 100644
index 252ca62fb..000000000
--- a/docs/routes/classes/Card.md
+++ /dev/null
@@ -1,33 +0,0 @@
-### A simple example
-
-```svelte example
-
-
Moon/Distance to Earth
-
238,900 mi
-
- The moon's distance from Earth affects the strength of ocean tides and the appearance of solar
- eclipses in our skies. The average distance between the blue planet and its only natural
- satellite is about 238,855 miles (384,400 kilometers), according to NASA.
-
-
-```
-
-### A more complex example
-
-```svelte example
-
-
-
-
-
-
-
-
-
Project
-
A project that has a description right here.
-
-```
diff --git a/docs/routes/classes/Divider.md b/docs/routes/classes/Divider.md
deleted file mode 100644
index dc5ded069..000000000
--- a/docs/routes/classes/Divider.md
+++ /dev/null
@@ -1,7 +0,0 @@
-```svelte example raised
-Some words could go here.
-
-
-
-And some other words could go here.
-```
diff --git a/docs/routes/classes/File.md b/docs/routes/classes/File.md
deleted file mode 100644
index b8dcc8f17..000000000
--- a/docs/routes/classes/File.md
+++ /dev/null
@@ -1,14 +0,0 @@
-```svelte example raised
-
-
-
-```
diff --git a/docs/routes/components/Avatar.md b/docs/routes/components/Avatar.md
deleted file mode 100644
index 5288aec40..000000000
--- a/docs/routes/components/Avatar.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Avatars are used for project icons and user profile pictures. Low resolution images are rendered pixelated to preserve pixel art.
-
-```svelte example raised
-
-
-
-
-
-
-
-```
diff --git a/docs/routes/components/Badge.md b/docs/routes/components/Badge.md
deleted file mode 100644
index 11b511d02..000000000
--- a/docs/routes/components/Badge.md
+++ /dev/null
@@ -1,10 +0,0 @@
-```svelte example raised
-
-
-
-
-
-
-```
diff --git a/docs/routes/components/Button.md b/docs/routes/components/Button.md
deleted file mode 100644
index 9fa6e5e95..000000000
--- a/docs/routes/components/Button.md
+++ /dev/null
@@ -1,46 +0,0 @@
-### Single example
-
-```svelte example
-
-
-
-```
-
-### Color variants example
-
-```svelte example raised
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-### With icons example
-
-```svelte example
-
-
-
-
-
-
-```
diff --git a/docs/routes/components/Checkbox.md b/docs/routes/components/Checkbox.md
deleted file mode 100644
index 98ad27449..000000000
--- a/docs/routes/components/Checkbox.md
+++ /dev/null
@@ -1,20 +0,0 @@
-### Text-only Example
-
-```svelte example raised
-
-
-Extra components
-```
-
-### Text with Icon Example
-
-```svelte example raised
-
-
- Food
-```
diff --git a/docs/routes/components/CheckboxList.md b/docs/routes/components/CheckboxList.md
deleted file mode 100644
index eec59edde..000000000
--- a/docs/routes/components/CheckboxList.md
+++ /dev/null
@@ -1,36 +0,0 @@
-```svelte example raised
-
-
-
-
-Selected: {selected}
-```
diff --git a/docs/routes/components/CheckboxVirtualList.md b/docs/routes/components/CheckboxVirtualList.md
deleted file mode 100644
index 55bde2400..000000000
--- a/docs/routes/components/CheckboxVirtualList.md
+++ /dev/null
@@ -1,20 +0,0 @@
-```svelte example raised
-
-
-
-
-Selected: {selected}
-```
diff --git a/docs/routes/components/Chips.md b/docs/routes/components/Chips.md
deleted file mode 100644
index f5787a3b5..000000000
--- a/docs/routes/components/Chips.md
+++ /dev/null
@@ -1,47 +0,0 @@
-### Simple example
-
-```svelte example raised
-
-
-
-```
-
-### Force an option to be selected with `neverEmpty`
-
-```svelte example raised
-
-
-
-```
diff --git a/docs/routes/components/Code.md b/docs/routes/components/Code.md
deleted file mode 100644
index ef5b25b22..000000000
--- a/docs/routes/components/Code.md
+++ /dev/null
@@ -1,7 +0,0 @@
-```svelte example raised
-
-
-
-```
diff --git a/docs/routes/components/Field.md b/docs/routes/components/Field.md
deleted file mode 100644
index 39ab4b6a0..000000000
--- a/docs/routes/components/Field.md
+++ /dev/null
@@ -1,12 +0,0 @@
-```svelte example raised
-
-
-
-
-
-
-
-
-```
diff --git a/docs/routes/components/FileUpload.md b/docs/routes/components/FileUpload.md
deleted file mode 100644
index 1ff410357..000000000
--- a/docs/routes/components/FileUpload.md
+++ /dev/null
@@ -1,31 +0,0 @@
-### Single constrained example
-
-```svelte example raised column
-
-
-
-
-
-
-File name: {file?.name}
-```
-
-### Multiple example
-
-```svelte example raised column
-
-
-
-
-
-
-Count: {files.length}
-```
diff --git a/docs/routes/components/Modal.md b/docs/routes/components/Modal.md
deleted file mode 100644
index 555063c97..000000000
--- a/docs/routes/components/Modal.md
+++ /dev/null
@@ -1,21 +0,0 @@
-```svelte example raised
-
-
-
-
-
-
Secret message goes here!
-
-
-
-
-
-
- Are you sure you want to delete this gallery image?
-
-
-```
diff --git a/docs/routes/components/ModalDeletion.md b/docs/routes/components/ModalDeletion.md
deleted file mode 100644
index 9b397ad33..000000000
--- a/docs/routes/components/ModalDeletion.md
+++ /dev/null
@@ -1,13 +0,0 @@
-```svelte example raised
-
-
- console.log('Do something...')}>
-
-
-```
diff --git a/docs/routes/components/NavRow.md b/docs/routes/components/NavRow.md
deleted file mode 100644
index 23d19952d..000000000
--- a/docs/routes/components/NavRow.md
+++ /dev/null
@@ -1,66 +0,0 @@
-`NavRow` works well for most horizontal navigation with less than 10 items. It can be used with paths & query params, and supports specific path level (depths).
-
-### Query example
-
-```svelte example
-
-
-
-
-
-```
-
-### Route example
-
-```svelte example
-
-
-
-```
diff --git a/docs/routes/components/Pagination.md b/docs/routes/components/Pagination.md
deleted file mode 100644
index 8d4b95eaf..000000000
--- a/docs/routes/components/Pagination.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Use pagination to show a set of page numbers and navigation directions to move through paginated data.
-
-```svelte example
-
-
-
-```
diff --git a/docs/routes/components/Select.md b/docs/routes/components/Select.md
deleted file mode 100644
index afa665ea0..000000000
--- a/docs/routes/components/Select.md
+++ /dev/null
@@ -1,36 +0,0 @@
-### Default option example
-
-```svelte example raised
-
-
-
-```
-
-### Icon example
-
-```svelte example raised
-
-
-
-```
diff --git a/docs/routes/components/Slider.md b/docs/routes/components/Slider.md
deleted file mode 100644
index 2c8e55e10..000000000
--- a/docs/routes/components/Slider.md
+++ /dev/null
@@ -1,7 +0,0 @@
-```svelte example raised
-
-
-
-```
diff --git a/docs/routes/components/TextInput.md b/docs/routes/components/TextInput.md
deleted file mode 100644
index cdaf6679d..000000000
--- a/docs/routes/components/TextInput.md
+++ /dev/null
@@ -1,9 +0,0 @@
-```svelte example raised
-
-
-
-
-```
diff --git a/docs/routes/index.md b/docs/routes/index.md
deleted file mode 100644
index d0127adc7..000000000
--- a/docs/routes/index.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Introduction
----
-
-## Overview
-
-Omorphia is Modrinth's component, style, and utility library for Svelte projects. It includes:
-
-- 🧩 Typed components which enhance HTML elements and provide a consistent UI
-- 🎨 CSS classes to easily style elements with a coherent style
-- 🧰 Typed utilities to solve common tasks quick and dependably
-- ⚙️ Configuration for SvelteKit and PostCSS to simplify setups
-- 🚚 A Rollup plugin to generate a cache of heavily used API requests and OpenAPI types
-
-Omorphia is used in [Knossos](https://github.com/modrinth/knossos) (modrinth.com) and [Theseus](https://github.com/modrinth/theseus) (Minecraft launcher).
-
-It uses [Svelte](https://svelte.dev/) to deliver the best performance with the least boilerplate.
-
-## Try Omorphia online
-
-You can try Omorphia online via [➜ **CodeSandbox** 💻](https://codesandbox.io/s/omorphia-starter-bsbgke).
-
-## Getting started
-
-Follow the instructions on the [➜ **setup page** 🛠️](/setup).
diff --git a/docs/routes/setup.md b/docs/routes/setup.md
deleted file mode 100644
index 2c6609cb6..000000000
--- a/docs/routes/setup.md
+++ /dev/null
@@ -1,210 +0,0 @@
----
-title: Setup
----
-
-## `0.` Prerequisites
-
-First install the following:
-
-- [Node 16.x](https://docs.volta.sh/guide/getting-started) or higher
-- [PNPM](https://pnpm.io/installation) (required for Modrinth projects)
-
-## `1.` Create a SvelteKit project
-
-Run the following command to create a SvelteKit project:
-
-```bash
-pnpm create svelte
-```
-
-Follow the instructions to install dependencies and setup git.
-
-## `2.` Add Omorphia to your project
-
-```bash
-pnpm add omorphia
-```
-
-## `3.` Setup translations
-
-Install the translations submodule:
-
-```bash
-git submodule add https://github.com/modrinth/translations locales/
-```
-
-Install `svelte-intl-precompile`:
-
-```bash
-pnpm add svelte-intl-precompile -D
-```
-
-Add translations in `src/routes/__layout.svelte`:
-
-```html
-
-```
-
-## `4.` Configure SvelteKit
-
-Add the following parts to your `svelte.config.js` file:
-
-```js
-import adapter from '@sveltejs/adapter-auto'
-import { preprocess } from 'omorphia/config/svelte'
-import path from 'path'
-
-/** @type {import('@sveltejs/kit').Config} */
-const config = {
- preprocess: [preprocess],
-
- kit: {
- adapter: adapter(),
-
- alias: {
- $generated: path.resolve('./generated'),
- $stores: path.resolve('./src/stores'),
- },
- },
-}
-
-export default config
-```
-
-Create a `src/stores/account.ts` file with a `token` store export:
-
-```ts
-import { writable } from 'svelte/store'
-
-export const token = writable('')
-```
-
-## `5.` Configure Vite
-
-Add the following to your `vite.config.js` file:
-
-```js
-import { plugins } from 'omorphia/config/vite.js'
-import { Generator } from 'omorphia/plugins'
-import precompileIntl from 'svelte-intl-precompile/sveltekit-plugin'
-
-/** @type {import('vite').UserConfig} */
-const config = {
- plugins: [
- ...plugins,
- precompileIntl('locales'),
- Generator({
- gameVersions: true,
- openapi: true,
- // Add more if needed
- }),
- ],
-
- server: {
- fs: {
- allow: ['generated'],
- },
- },
-}
-
-export default config
-```
-
-## `6.` Configure PostCSS
-
-Create a `postcss.config.cjs` file in the root of your project.
-
-Add the following line to that file:
-
-```js
-module.exports = require('omorphia/config/postcss.cjs')
-```
-
-## `7.` Setup styles
-
-Import styles in `src/routes/__layout.svelte`:
-
-```html
-
-```
-
-Add the `base` class and a theme to the `` tag in `src/app.html`:
-
-```html
-
- %sveltekit.body%
-
-```
-
-## `8.` Setup fonts
-
-Copy the the `fonts/` folder from [Omorphia's repository](https://github.com/modrinth/omorphia/blob/main/docs/static/assets/fonts) and place them in the `static/` folder at the root of your project.
-
-Add the following preload tags to your head in `app.html` to speed up font loading:
-
-
-```html
-
-
-
-
-
-```
-
-
-## `9.` Using Omorphia
-
-### Developing
-
-Start the development server with:
-
-```bash
-pnpm dev
-```
-
-> To get Svelte language support in your code editor, [use this list of extensions.](https://sveltesociety.dev/tools#editor-support)
-
-### Components
-
-Use a component by importing from `omorphia`. For example, use the [Button component](/components/Button) like so:
-
-```svelte example raised
-
-
-
-```
-
-### Utils
-
-Use a utility by importing from `omorphia/utils`.
-
-```svelte example raised
-
-
-{ago(Date.now() - 100000)}
-```
-
-### Using icons and styles
-
-Follow the guides on the sidebar to learn how to use [icons](/usage/icons) and general concepts.
diff --git a/docs/routes/usage/css.md b/docs/routes/usage/css.md
deleted file mode 100644
index 5285b227e..000000000
--- a/docs/routes/usage/css.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: Writing CSS
----
-
-## Conventions
-
-### Avoid inconsistent CSS units
-
-Prefer using `rem` units, using only whole and half units, eg. `2rem` or `1.5rem`. If you need a specific pixel (`px`) measurement, use `px` and add comment explaining why you used it. The one exception is that `0.25rem` is allowed.
-
-> Using `rem` units lets you change the scale of the UI by simply changing the body font size.
-
-### Always use `HSL` colors
-
-### All colors should be theme variables
-
-## Abilities
-
-Omorphia leverages PostCSS to allow you to write in future-standards-compliant CSS. Browse [the CSSWG drafts](https://cssdb.org/) to see what is possible (not including stage 0).
-
-Notable features:
-
-- [Nesting](https://www.w3.org/TR/css-nesting-1/#example-aecb8796)
-- [Gap](https://developer.mozilla.org/en-US/docs/Web/CSS/gap)
-- [`clamp` function]()
-- [Custom Media Queries](https://www.w3.org/TR/mediaqueries-5/#example-532b0adb)
-- [`:has()`](https://developer.mozilla.org/en-US/docs/Web/CSS/:has)
-- [place-content](https://developer.mozilla.org/en-US/docs/Web/CSS/place-content)
-
-## Styles
-
-Conform to [BEM styling](http://getbem.com/introduction/) wherever possible. When working in components, you may want to leverage [Svelte's conditional class shorthand](https://svelte.dev/tutorial/class-shorthand) instead of BEM's modifier class name format.
diff --git a/docs/routes/usage/generator.md b/docs/routes/usage/generator.md
deleted file mode 100644
index 1397ae034..000000000
--- a/docs/routes/usage/generator.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Generator plugin
----
-
-The generator plugin creates static files from API responses to increase performance and perform tasks that would not be possible on the client. It regenerates files every 7 days, or when the plugin settings change.
-
-### Current options
-
-- `projectColors` (false) generates colors for every project
-- `tags` (false) copies & parses tags from API
-- `gameVersions` copies game versions from API
-- `landingPage` gets icon urls for top 100 mods
-
-> All options are disabled by default
-
-## Configuration
-
-```js
-import Generator from 'omorphia/plugins/generator'
-
-/** @type {import('@sveltejs/kit').Config} */
-const config = {
- kit: {
- vite: {
- plugins: [
- Generator({
- projectColors: true,
- tags: true,
- gameVersions: true,
- landingPage: true,
- }),
- ],
- },
- },
-}
-
-export default config
-```
diff --git a/docs/routes/usage/icons.md b/docs/routes/usage/icons.md
deleted file mode 100644
index fdb96a9f7..000000000
--- a/docs/routes/usage/icons.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: Icons
----
-
-## Choosing icons
-
-The follwing icon packs are included with omorphia:
-
-`heroicons-outline` `lucide` `fa-regular` `heroicons-solid` `carbon` `simple-icons`
-
-Aim to find icons from `heroicons-outline` first, and then from the following packs if you can't find what you are looking for. [Browse icons...](https://icones.js.org/collection/heroicons-outline)
-
-## Using icons
-
-Import an icon in the `
-
-
That's lovely!
-```
diff --git a/docs/routes/usage/illustrations.md b/docs/routes/usage/illustrations.md
deleted file mode 100644
index e566150b1..000000000
--- a/docs/routes/usage/illustrations.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Using illustrations
----
-
-Find an illustration from [unDraw](https://undraw.co/illustrations) and download it as an SVG.
-
-Put the illustration in the `src/assets/images/illustrations` folder. Rename it to `undraw_` + the illustration slug.
-
-Replace colors in the SVG with CSS variables such as `var(--color-brand)` and `var(--color-raised)`. For colors that are the same as the font color, use `currentColor`.
-
-Add the `.illustration` class to the SVG
-
-Import the SVG in the `
-
-
-```
diff --git a/docs/routes/usage/utils.md b/docs/routes/usage/utils.md
deleted file mode 100644
index 727ace430..000000000
--- a/docs/routes/usage/utils.md
+++ /dev/null
@@ -1,116 +0,0 @@
----
-title: Built-in utilities
----
-
-## API requests
-
-Use the `send` function to make API requests.
-
-```svelte example raised
-
-
-{#await project}
- fetching...
-{:then project}
- {project.downloads} downloads
-{/await}
-```
-
-## Markdown
-
-Use the markdown utilities to parse markdown text into HTML. Both markdown parsers have HTML sanitization built-in.
-
-### Body parser
-
-The `markdown` parser is designed for bodies of markdown text and supports images, tables, lists, and youtube `