aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-01-23 02:14:40 -0800
committerFuwn <[email protected]>2026-01-23 02:14:40 -0800
commit9fdc552fa90dd1372ff36534995b5c057e871e59 (patch)
tree2b7d67eb7249cefb6b94a21cca45b41ec4b723cc /src
parentfix(CommandPalette): Suppress intentional a11y warnings for command palette o... (diff)
downloaddue.moe-9fdc552fa90dd1372ff36534995b5c057e871e59.tar.xz
due.moe-9fdc552fa90dd1372ff36534995b5c057e871e59.zip
refactor(layout): Replace empty p elements with reusable Spacer component
Diffstat (limited to 'src')
-rw-r--r--src/lib/Announcement.svelte3
-rw-r--r--src/lib/Error/AnimeRateLimited.svelte3
-rw-r--r--src/lib/Error/RateLimited.svelte5
-rw-r--r--src/lib/Hololive/Lives.svelte5
-rw-r--r--src/lib/Landing.svelte5
-rw-r--r--src/lib/Layout/Spacer.svelte23
-rw-r--r--src/lib/List/Anime/CleanAnimeList.svelte3
-rw-r--r--src/lib/List/Anime/UpcomingAnimeList.svelte3
-rw-r--r--src/lib/List/Manga/CleanMangaList.svelte5
-rw-r--r--src/lib/Loading/Skeleton.svelte3
-rw-r--r--src/lib/Schedule/Crunchyroll.svelte5
-rw-r--r--src/lib/Settings/Categories/Attributions.svelte3
-rw-r--r--src/lib/Settings/Categories/Cache.svelte3
-rw-r--r--src/lib/Settings/Categories/Debug.svelte7
-rw-r--r--src/lib/Settings/Categories/Display.svelte19
-rw-r--r--src/lib/Settings/Categories/SettingSync.svelte5
-rw-r--r--src/lib/Settings/Category.svelte3
-rw-r--r--src/lib/Settings/SettingCheckboxToggle.svelte3
-rw-r--r--src/lib/Settings/SettingToggle.svelte3
-rw-r--r--src/lib/Tools/ActivityHistory/Tool.svelte7
-rw-r--r--src/lib/Tools/DumpProfile.svelte3
-rw-r--r--src/lib/Tools/EpisodeDiscussionCollector.svelte3
-rw-r--r--src/lib/Tools/Hayai.svelte5
-rw-r--r--src/lib/Tools/InputTemplate.svelte3
-rw-r--r--src/lib/Tools/RandomFollower.svelte3
-rw-r--r--src/lib/Tools/SequelCatcher/List.svelte3
-rw-r--r--src/lib/Tools/SequelCatcher/Tool.svelte3
-rw-r--r--src/lib/Tools/SequelSpy/Tool.svelte3
-rw-r--r--src/lib/Tools/Tracker/Tool.svelte3
-rw-r--r--src/lib/Tools/Wrapped/Tool.svelte5
-rw-r--r--src/lib/User/BadgeWall/AWC.svelte5
-rw-r--r--src/lib/User/BadgeWall/BadgePreview.svelte7
-rw-r--r--src/lib/User/BadgeWall/Badges.svelte5
-rw-r--r--src/routes/+layout.svelte3
-rw-r--r--src/routes/+page.svelte3
-rw-r--r--src/routes/completed/+page.svelte3
-rw-r--r--src/routes/events/+page.svelte3
-rw-r--r--src/routes/events/group/[group]/+page.svelte5
-rw-r--r--src/routes/events/groups/+page.svelte3
-rw-r--r--src/routes/girls/+page.svelte5
-rw-r--r--src/routes/schedule/+page.svelte5
-rw-r--r--src/routes/settings/+page.svelte5
-rw-r--r--src/routes/tools/+page.svelte5
-rw-r--r--src/routes/user/[user]/+page.svelte15
-rw-r--r--src/routes/user/[user]/badges/+page.svelte35
45 files changed, 162 insertions, 95 deletions
diff --git a/src/lib/Announcement.svelte b/src/lib/Announcement.svelte
index 8f05d6f1..9a348f7a 100644
--- a/src/lib/Announcement.svelte
+++ b/src/lib/Announcement.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import Popup from './Layout/Popup.svelte';
import announcementHash from '$stores/announcementHash';
import { env } from '$env/dynamic/public';
@@ -40,7 +41,7 @@
{line}<br />
{/each}
- <p></p>
+ <Spacer />
<button on:click={dismiss} class="dismiss">{dismissButton || 'Dismiss'}</button>
</Popup>
diff --git a/src/lib/Error/AnimeRateLimited.svelte b/src/lib/Error/AnimeRateLimited.svelte
index d5d51530..5813ce51 100644
--- a/src/lib/Error/AnimeRateLimited.svelte
+++ b/src/lib/Error/AnimeRateLimited.svelte
@@ -1,4 +1,5 @@
<script>
+ import Spacer from '$lib/Layout/Spacer.svelte';
import Popup from '$lib/Layout/Popup.svelte';
</script>
@@ -9,7 +10,7 @@
{#await fetch('https://api.waifu.pics/sfw/cry') then response}
{#await response.json() then json}
- <p></p>
+ <Spacer />
<a href={`https://trace.moe/?url=${encodeURIComponent(json.url)}`} target="_blank">
<img src={json.url} alt="" style="width: 30vw;" />
diff --git a/src/lib/Error/RateLimited.svelte b/src/lib/Error/RateLimited.svelte
index 4e395c70..5a729c87 100644
--- a/src/lib/Error/RateLimited.svelte
+++ b/src/lib/Error/RateLimited.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
export let type = 'Media';
export let loginSessionError = true;
export let contact = true;
@@ -27,7 +28,7 @@
<slot />
{#if contact}
- <p></p>
+ <Spacer />
If the problem persists, please contact
<a href="https://anilist.co/user/fuwn" target="_blank">@fuwn</a> on AniList.
@@ -51,7 +52,7 @@
<slot />
{#if contact}
- <p></p>
+ <Spacer />
If the problem persists, please contact
<a href="https://anilist.co/user/fuwn" target="_blank">@fuwn</a> on AniList.
diff --git a/src/lib/Hololive/Lives.svelte b/src/lib/Hololive/Lives.svelte
index 7e45ea3d..877dc316 100644
--- a/src/lib/Hololive/Lives.svelte
+++ b/src/lib/Hololive/Lives.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import Message from '$lib/Loading/Message.svelte';
import root from '$lib/Utility/root';
import type { Live, ParseResult } from './hololive';
@@ -68,7 +69,7 @@
{/each}
</div>
-<p></p>
+<Spacer />
<div class="container">
{#each categorisedStreams.upcoming as live}
@@ -76,7 +77,7 @@
{/each}
</div>
-<p></p>
+<Spacer />
<div class="container">
{#each categorisedStreams.ended as live}
diff --git a/src/lib/Landing.svelte b/src/lib/Landing.svelte
index 541c3c36..5e2d4ccd 100644
--- a/src/lib/Landing.svelte
+++ b/src/lib/Landing.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import root from './Utility/root';
import { env } from '$env/dynamic/public';
import tooltip from './Tooltip/tooltip';
@@ -30,7 +31,7 @@
</div>
</div>
-<p></p>
+<Spacer />
<div class="example-item card">
<div class="card item-description">
@@ -53,7 +54,7 @@
</div>
</div>
-<p></p>
+<Spacer />
<div class="example-item card">
<div class="item-content">
diff --git a/src/lib/Layout/Spacer.svelte b/src/lib/Layout/Spacer.svelte
new file mode 100644
index 00000000..a26796df
--- /dev/null
+++ b/src/lib/Layout/Spacer.svelte
@@ -0,0 +1,23 @@
+<script lang="ts">
+ export let size: 'sm' | 'md' | 'lg' = 'md';
+</script>
+
+<div class="spacer {size}"></div>
+
+<style>
+ .spacer {
+ width: 100%;
+ }
+
+ .spacer.sm {
+ height: 0.75em;
+ }
+
+ .spacer.md {
+ height: 1.5em;
+ }
+
+ .spacer.lg {
+ height: 2.25em;
+ }
+</style>
diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte
index 5130cc2a..1a3cd7cc 100644
--- a/src/lib/List/Anime/CleanAnimeList.svelte
+++ b/src/lib/List/Anime/CleanAnimeList.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
/* eslint svelte/no-at-html-tags: "off" */
import settings from '$stores/settings';
@@ -159,7 +160,7 @@
{/each}
</select>
- <p></p>
+ <Spacer />
{/if}
{#if $settings.displayCoverModeAnime}
diff --git a/src/lib/List/Anime/UpcomingAnimeList.svelte b/src/lib/List/Anime/UpcomingAnimeList.svelte
index f22291f2..4f285b47 100644
--- a/src/lib/List/Anime/UpcomingAnimeList.svelte
+++ b/src/lib/List/Anime/UpcomingAnimeList.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { mediaListCollection, Type, type Media } from '$lib/Data/AniList/media';
import type { AniListAuthorisation } from '$lib/Data/AniList/identity';
import { onMount } from 'svelte';
@@ -94,7 +95,7 @@
/>
{#if $settings.displayPlannedAnime}
- <p></p>
+ <Spacer />
<AnimeList
{endTime}
diff --git a/src/lib/List/Manga/CleanMangaList.svelte b/src/lib/List/Manga/CleanMangaList.svelte
index 290646a5..a4159dfa 100644
--- a/src/lib/List/Manga/CleanMangaList.svelte
+++ b/src/lib/List/Manga/CleanMangaList.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import type { Media } from '$lib/Data/AniList/media';
import Error from '$lib/Error/RateLimited.svelte';
import { volumeCount } from '$lib/Media/Manga/volumes';
@@ -124,7 +125,7 @@
{#if media.length === 0 && !rateLimited}
{#if rateLimited}
- <p></p>
+ <Spacer />
{/if}
<p>
@@ -149,7 +150,7 @@
{/each}
</select>
- <p></p>
+ <Spacer />
{/if}
{#if $settings.displayCoverModeManga || dummy}
diff --git a/src/lib/Loading/Skeleton.svelte b/src/lib/Loading/Skeleton.svelte
index 18b483cb..3f93d107 100644
--- a/src/lib/Loading/Skeleton.svelte
+++ b/src/lib/Loading/Skeleton.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
export let count = 3;
export let width = '100%';
export let height = '100px';
@@ -31,7 +32,7 @@
</div>
{#if !list && i < count - 1}
- <p></p>
+ <Spacer />
{/if}
{/each}
{/if}
diff --git a/src/lib/Schedule/Crunchyroll.svelte b/src/lib/Schedule/Crunchyroll.svelte
index 066a5d22..9d7c8e70 100644
--- a/src/lib/Schedule/Crunchyroll.svelte
+++ b/src/lib/Schedule/Crunchyroll.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import crunchyroll from '$lib/Data/Static/crunchyroll.json';
import './container.css';
@@ -61,7 +62,7 @@
</details>
</div>
- <p></p>
+ <Spacer />
{/each}
<div class="card day">
@@ -76,7 +77,7 @@
</details>
</div>
- <p></p>
+ <Spacer />
<div class="card day">
<details open class="details-unstyled">
diff --git a/src/lib/Settings/Categories/Attributions.svelte b/src/lib/Settings/Categories/Attributions.svelte
index 28f69a74..e0a77f1f 100644
--- a/src/lib/Settings/Categories/Attributions.svelte
+++ b/src/lib/Settings/Categories/Attributions.svelte
@@ -1,4 +1,5 @@
<script>
+ import Spacer from '$lib/Layout/Spacer.svelte';
import root from '$lib/Utility/root';
</script>
@@ -34,7 +35,7 @@
</li> -->
</ul>
-<p></p>
+<Spacer />
<details open class="card-clear">
<summary>Outbound Link Disclaimer</summary>
diff --git a/src/lib/Settings/Categories/Cache.svelte b/src/lib/Settings/Categories/Cache.svelte
index ba7e2842..337d4a41 100644
--- a/src/lib/Settings/Categories/Cache.svelte
+++ b/src/lib/Settings/Categories/Cache.svelte
@@ -1,4 +1,5 @@
<script>
+ import Spacer from '$lib/Layout/Spacer.svelte';
import settings from '$stores/settings';
</script>
@@ -7,7 +8,7 @@
<a href="https://due.moe">due.moe</a>'s site data will clear these caches too.
</small>
-<p></p>
+<Spacer />
Re-cache AniList media lists every
<input
diff --git a/src/lib/Settings/Categories/Debug.svelte b/src/lib/Settings/Categories/Debug.svelte
index 2f74a3c7..1b6cbedd 100644
--- a/src/lib/Settings/Categories/Debug.svelte
+++ b/src/lib/Settings/Categories/Debug.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import settings from '$stores/settings';
import { addNotification } from '$lib/Notification/store';
import SettingHint from '../SettingHint.svelte';
@@ -25,7 +26,7 @@
<button on:click={clearCaches}>{$locale().debug.clearCaches}</button>
-<p></p>
+<Spacer />
<button
on:click={() => {
@@ -43,7 +44,7 @@
{$locale().debug.resetAllSettings.hint}
</SettingHint>
-<p></p>
+<Spacer />
<button
on:click={async () => {
@@ -61,7 +62,7 @@
{$locale().debug.clearLocalStorage.hint2}
</SettingHint>
-<p></p>
+<Spacer />
Custom CSS
<textarea bind:value={$settings.displayCustomCSS}></textarea>
diff --git a/src/lib/Settings/Categories/Display.svelte b/src/lib/Settings/Categories/Display.svelte
index ebbaf6e7..d9dad534 100644
--- a/src/lib/Settings/Categories/Display.svelte
+++ b/src/lib/Settings/Categories/Display.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import settings from '$stores/settings';
import SettingCheckboxToggle from '../SettingCheckboxToggle.svelte';
import SettingHint from '../SettingHint.svelte';
@@ -85,7 +86,7 @@
<SettingHint lineBreak>
Media where either the next episode's release date is unknown or the chapter count could not be
resolved is considered unresolved.
- <p></p>
+ <Spacer />
<span>
Additionally, you hard exclude specific media from <a href={root('/')}>due.moe</a> on AniList.
To exclude any media from being included in <b>any</b> <a href={root('/')}>due.moe</a>
@@ -107,7 +108,7 @@
</span>
</SettingHint>
-<p></p>
+<Spacer />
<b>{$locale().settings.display.categories.hidePanels}</b><br />
<SettingCheckboxToggle
@@ -160,7 +161,7 @@
}}
/>
-<p></p>
+<Spacer />
<b>{$locale().settings.display.categories.motionAndAccessibility.title}</b><br />
<SettingCheckboxToggle
@@ -200,7 +201,7 @@
</button>
{/if}
-<p></p>
+<Spacer />
<SettingCheckboxToggle
setting="displayAniListNotifications"
@@ -227,7 +228,7 @@
</SettingHint>
</SettingCheckboxToggle>
-<p></p>
+<Spacer />
<b>{$locale().settings.display.categories.dateAndTime.title}</b><br />
<SettingCheckboxToggle
@@ -247,7 +248,7 @@
text={$locale().settings.display.categories.dateAndTime.fields.abbreviateCountdown}
/>
-<p></p>
+<Spacer />
<SettingCheckboxToggle
setting="displayDisableLastActivityWarning"
@@ -262,7 +263,7 @@
</SettingHint>
</SettingCheckboxToggle>
-<p></p>
+<Spacer />
<b>Show lists with media covers instead of text</b><br />
<SettingCheckboxToggle setting="displayCoverModeAnime" text="Anime" lineBreak={false} />
@@ -298,7 +299,7 @@
<br />
{/if}
-<p></p>
+<Spacer />
<b>List sort & filter</b><br />
<select bind:value={$settings.displayAnimeSort}>
@@ -364,7 +365,7 @@ Anime sort order
<br />
{/if}
-<p></p>
+<Spacer />
<select bind:value={$settings.displayOutboundLinksTo}>
<option value="anilist">AniList</option>
diff --git a/src/lib/Settings/Categories/SettingSync.svelte b/src/lib/Settings/Categories/SettingSync.svelte
index 9fd01b0e..183dc13f 100644
--- a/src/lib/Settings/Categories/SettingSync.svelte
+++ b/src/lib/Settings/Categories/SettingSync.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { options } from '$lib/Notification/options';
import root from '$lib/Utility/root';
import identity from '$stores/identity';
@@ -48,7 +49,7 @@
<SettingHint lineBreak>
{$locale().settings.settingsSync.buttons.pull.hint}
</SettingHint>
- <p></p>
+ <Spacer />
<button
on:click={() => {
$settings.settingsSync = true;
@@ -106,7 +107,7 @@
{$locale().settings.settingsSync.buttons.delete}
</button>
- <p></p>
+ <Spacer />
<b>Last Push</b>: {$locale().dateFormatter($settingsSyncTimes.lastPush)}
<br />
diff --git a/src/lib/Settings/Category.svelte b/src/lib/Settings/Category.svelte
index 5771e8eb..f4936e8a 100644
--- a/src/lib/Settings/Category.svelte
+++ b/src/lib/Settings/Category.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
export let title = '';
export let id = title.toLowerCase();
export let open = true;
@@ -14,5 +15,5 @@
</details>
{#if newLine}
- <p></p>
+ <Spacer />
{/if}
diff --git a/src/lib/Settings/SettingCheckboxToggle.svelte b/src/lib/Settings/SettingCheckboxToggle.svelte
index 16741cef..751a085c 100644
--- a/src/lib/Settings/SettingCheckboxToggle.svelte
+++ b/src/lib/Settings/SettingCheckboxToggle.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import settings, { type Settings } from '$stores/settings';
type BooleanSettingsKeys<T> = {
@@ -79,5 +80,5 @@
{/if}
{#if sectionBreak}
- <p></p>
+ <Spacer />
{/if}
diff --git a/src/lib/Settings/SettingToggle.svelte b/src/lib/Settings/SettingToggle.svelte
index ac494e44..c2c3f3ff 100644
--- a/src/lib/Settings/SettingToggle.svelte
+++ b/src/lib/Settings/SettingToggle.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import settings, { type Settings } from '$stores/settings';
export let setting: keyof Settings;
@@ -31,5 +32,5 @@
<br />
{#if sectionBreak}
- <p></p>
+ <Spacer />
{/if}
diff --git a/src/lib/Tools/ActivityHistory/Tool.svelte b/src/lib/Tools/ActivityHistory/Tool.svelte
index fda912e7..e439ed4d 100644
--- a/src/lib/Tools/ActivityHistory/Tool.svelte
+++ b/src/lib/Tools/ActivityHistory/Tool.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import {
activityHistory,
fillMissingDays,
@@ -79,18 +80,18 @@
<div class="card">
<ActivityHistoryGrid {user} />
- <p></p>
+ <Spacer />
<div id="grid-final"></div>
{#if generated}
- <p></p>
+ <Spacer />
{/if}
<button on:click={screenshot}>Generate grid image</button>
</div>
- <p></p>
+ <Spacer />
<details open>
<summary>Days in risk of developing an activity history hole</summary>
diff --git a/src/lib/Tools/DumpProfile.svelte b/src/lib/Tools/DumpProfile.svelte
index 0d38d857..704bca8a 100644
--- a/src/lib/Tools/DumpProfile.svelte
+++ b/src/lib/Tools/DumpProfile.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { dumpUser } from '$lib/Data/AniList/user';
import RateLimited from '$lib/Error/RateLimited.svelte';
import Skeleton from '$lib/Loading/Skeleton.svelte';
@@ -36,7 +37,7 @@
<pre>{JSON.stringify(dump, null, 2)}</pre>
{#if decoded && (dump.about || '').includes('[](json')}
- <p></p>
+ <Spacer />
<pre>{JSON.stringify(decoded, null, 2).replaceAll(/\\n/g, '\n')}</pre>
{/if}
diff --git a/src/lib/Tools/EpisodeDiscussionCollector.svelte b/src/lib/Tools/EpisodeDiscussionCollector.svelte
index 840ce410..71e13add 100644
--- a/src/lib/Tools/EpisodeDiscussionCollector.svelte
+++ b/src/lib/Tools/EpisodeDiscussionCollector.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { threads } from '$lib/Data/AniList/forum';
import { onMount } from 'svelte';
import { clearAllParameters } from '../Utility/parameters';
@@ -54,7 +55,7 @@
</p>
{/await}
{:else}
- <p></p>
+ <Spacer />
Enter a username to search for to continue.
{/if}
diff --git a/src/lib/Tools/Hayai.svelte b/src/lib/Tools/Hayai.svelte
index 07b666e9..79459985 100644
--- a/src/lib/Tools/Hayai.svelte
+++ b/src/lib/Tools/Hayai.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { onMount } from 'svelte';
import JSZip from 'jszip';
@@ -90,13 +91,13 @@
)}
</small>
- <p></p>
+ <Spacer />
{@html applyBionicReadingToString(
`After selecting an EPUB file, 早い will apply a bionic reading filter over any and all words, and return the newly created "bionic" EPUB file.`
)}
- <p></p>
+ <Spacer />
<input type="file" id="epub-file" accept=".epub" on:change={handleFileUpload} />
</div>
diff --git a/src/lib/Tools/InputTemplate.svelte b/src/lib/Tools/InputTemplate.svelte
index 8d946074..c0ee4f1d 100644
--- a/src/lib/Tools/InputTemplate.svelte
+++ b/src/lib/Tools/InputTemplate.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { clearAllParameters } from '$lib/Utility/parameters';
import { onMount } from 'svelte';
import SettingHint from '$lib/Settings/SettingHint.svelte';
@@ -64,7 +65,7 @@
{#if submission !== ''}
<slot />
{:else}
- <p></p>
+ <Spacer />
{prompt}
{/if}
diff --git a/src/lib/Tools/RandomFollower.svelte b/src/lib/Tools/RandomFollower.svelte
index 25375d31..34a9b48e 100644
--- a/src/lib/Tools/RandomFollower.svelte
+++ b/src/lib/Tools/RandomFollower.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { followers } from '$lib/Data/AniList/following';
import RateLimited from '$lib/Error/RateLimited.svelte';
import Skeleton from '$lib/Loading/Skeleton.svelte';
@@ -21,7 +22,7 @@
{:then users}
{@const user = users[Math.floor(randomSeed * users.length)]}
- <p></p>
+ <Spacer />
<a href={`https://anilist.co/user/${user.id}`} target="_blank">
<TextSwap text={user.name} />
diff --git a/src/lib/Tools/SequelCatcher/List.svelte b/src/lib/Tools/SequelCatcher/List.svelte
index 64f4f88c..a7e03ed0 100644
--- a/src/lib/Tools/SequelCatcher/List.svelte
+++ b/src/lib/Tools/SequelCatcher/List.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { filterRelations, type Media } from '$lib/Data/AniList/media';
import MediaTitleDisplay from '$lib/List/MediaTitleDisplay.svelte';
import { outboundLink } from '$lib/Media/links';
@@ -30,7 +31,7 @@ paused)
<input type="checkbox" bind:checked={includeSideStories} /> Include side stories (e.g., OVAs,
specials, etc.)
-<p></p>
+<Spacer />
<ol class="media-list">
{#each filterRelations( mediaListUnchecked.filter((media) => media.mediaListEntry?.status === 'COMPLETED'), includeSideStories ) as { media, unwatchedRelations }}
diff --git a/src/lib/Tools/SequelCatcher/Tool.svelte b/src/lib/Tools/SequelCatcher/Tool.svelte
index 4038c04e..05227ac4 100644
--- a/src/lib/Tools/SequelCatcher/Tool.svelte
+++ b/src/lib/Tools/SequelCatcher/Tool.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import List from './List.svelte';
import type { AniListAuthorisation } from '$lib/Data/AniList/identity';
import userIdentity from '$stores/identity';
@@ -71,7 +72,7 @@
<Message message="" loader="ripple" slot withReload fullscreen>Error fetching media.</Message>
{/await}
- <p></p>
+ <Spacer />
<blockquote style="margin: 0 0 0 1.5rem;">
Thanks to <Username username="sevengirl" /> and <Username username="esthereae" /> for the idea!
diff --git a/src/lib/Tools/SequelSpy/Tool.svelte b/src/lib/Tools/SequelSpy/Tool.svelte
index 8a289105..998cab13 100644
--- a/src/lib/Tools/SequelSpy/Tool.svelte
+++ b/src/lib/Tools/SequelSpy/Tool.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import type { AniListAuthorisation } from '$lib/Data/AniList/identity';
import { prequels, type MediaPrequel } from '$lib/Data/AniList/prequels';
import { onMount } from 'svelte';
@@ -54,7 +55,7 @@
<Prequels {currentPrequels} />
{/await}
- <p></p>
+ <Spacer />
The count ratio is the number of episodes you've seen of any direct prequels, and the total
number of episodes of all direct prequels.
diff --git a/src/lib/Tools/Tracker/Tool.svelte b/src/lib/Tools/Tracker/Tool.svelte
index a7b6da10..314dce18 100644
--- a/src/lib/Tools/Tracker/Tool.svelte
+++ b/src/lib/Tools/Tracker/Tool.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { v6 as uuidv6 } from 'uuid';
import { database, type TrackerEntry } from '$lib/Database/IDB/tracker';
import { onMount } from 'svelte';
@@ -76,7 +77,7 @@
<input type="number" placeholder="Progress (defaults to 0)" bind:value={progress} />
<button class="button-lined" on:click={() => addEntry(url, title, progress)}> Add </button>
- <p></p>
+ <Spacer />
{#if masterList === null}
<Message message="Loading entries ..." />
diff --git a/src/lib/Tools/Wrapped/Tool.svelte b/src/lib/Tools/Wrapped/Tool.svelte
index 64e4e2ea..bc28f97e 100644
--- a/src/lib/Tools/Wrapped/Tool.svelte
+++ b/src/lib/Tools/Wrapped/Tool.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import './wrapped.css';
import userIdentity from '$stores/identity';
import type { AniListAuthorisation } from '$lib/Data/AniList/identity';
@@ -908,7 +909,7 @@
<div id="wrapped-final"></div>
{#if generated}
- <p></p>
+ <Spacer />
<blockquote style="margin: 0 0 0 1.5rem;">
Click on the image to download, or right click and select "Save Image As...".
@@ -917,7 +918,7 @@
</div>
{#if generated}
- <p></p>
+ <Spacer />
{/if}
<div id="options" class="card">
diff --git a/src/lib/User/BadgeWall/AWC.svelte b/src/lib/User/BadgeWall/AWC.svelte
index 49431494..8d340282 100644
--- a/src/lib/User/BadgeWall/AWC.svelte
+++ b/src/lib/User/BadgeWall/AWC.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import type { AWCBadgesGroup } from '$lib/Data/awc';
import { cdn, thumbnail } from '$lib/Utility/image';
import type { Preferences } from '../../../graphql/$types';
@@ -72,7 +73,7 @@
{group.group}
</summary>
- <p></p>
+ <Spacer />
<div class="badges">
{#each group.badges as badge, index}
@@ -92,7 +93,7 @@
</div>
</details>
- <p></p>
+ <Spacer />
{/each}
{/if}
{/await}
diff --git a/src/lib/User/BadgeWall/BadgePreview.svelte b/src/lib/User/BadgeWall/BadgePreview.svelte
index c15ecd52..46aa2d46 100644
--- a/src/lib/User/BadgeWall/BadgePreview.svelte
+++ b/src/lib/User/BadgeWall/BadgePreview.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { thumbnail } from '$lib/Utility/image';
import type { Badge } from '$lib/Database/SB/User/badges';
import { cdn } from '$lib/Utility/image';
@@ -115,7 +116,7 @@
</a>
</div>
- <p></p>
+ <Spacer />
{/if}
</div>
@@ -124,7 +125,7 @@
{$locale().dateFormatter(databaseTimeToDate(selectedBadge.time))}
{#if (selectedBadge.designer || selectedBadge.source || selectedBadge.post) && !selectedBadge.description}
- <p></p>
+ <Spacer />
{:else if selectedBadge.description}
<br />
{/if}
@@ -133,7 +134,7 @@
{#if selectedBadge.description}
{selectedBadge.description}
- <p></p>
+ <Spacer />
{/if}
{#if selectedBadge.designer}
diff --git a/src/lib/User/BadgeWall/Badges.svelte b/src/lib/User/BadgeWall/Badges.svelte
index 9bc213f8..e7e1e9f3 100644
--- a/src/lib/User/BadgeWall/Badges.svelte
+++ b/src/lib/User/BadgeWall/Badges.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import LinkedTooltip from '$lib/Tooltip/LinkedTooltip.svelte';
import tooltip from '$lib/Tooltip/tooltip';
import locale from '$stores/locale';
@@ -36,7 +37,7 @@
<details open={categoryFilter ? categoryFilter === category : true}>
<summary>{category}</summary>
- <p></p>
+ <Spacer />
<div class="badges">
{#each badges as badge}
@@ -93,6 +94,6 @@
</details>
{#if groupedBadges[groupedBadges.length - 1][0] !== category}
- <p></p>
+ <Spacer />
{/if}
{/each}
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index aa2a1e8f..5ba94ec7 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import type { SubsPleaseEpisode } from '$lib/Media/Anime/Airing/Subtitled/subsPlease';
import { env } from '$env/dynamic/public';
import { userIdentity as getUserIdentity } from '$lib/Data/AniList/identity';
@@ -251,7 +252,7 @@
</div>
</div>
- <p></p>
+ <Spacer />
<NotificationsProvider zIndex={5000}>
<Root {data} {way}>
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 6c10e31d..987e39b2 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { onDestroy, onMount } from 'svelte';
import MangaListTemplate from '$lib/List/Manga/MangaListTemplate.svelte';
import UpcomingAnimeList from '$lib/List/Anime/UpcomingAnimeList.svelte';
@@ -34,7 +35,7 @@
{#if data.user === undefined}
<div class="card">Please log in to view due media.</div>
- <p></p>
+ <Spacer />
<Landing />
{:else}
diff --git a/src/routes/completed/+page.svelte b/src/routes/completed/+page.svelte
index d2aef68b..f9fb433d 100644
--- a/src/routes/completed/+page.svelte
+++ b/src/routes/completed/+page.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import { onDestroy, onMount } from 'svelte';
import userIdentity from '$stores/identity.js';
import settings from '$stores/settings';
@@ -33,7 +34,7 @@
{#if data.user === undefined}
<div class="card">Please log in to view completed media.</div>
- <p></p>
+ <Spacer />
<Landing />
{:else}
diff --git a/src/routes/events/+page.svelte b/src/routes/events/+page.svelte
index 1c6e2524..fa833c1f 100644
--- a/src/routes/events/+page.svelte
+++ b/src/routes/events/+page.svelte
@@ -1,4 +1,5 @@
<script>
+ import Spacer from '$lib/Layout/Spacer.svelte';
import Event from '$lib/Events/Event.svelte';
import Message from '$lib/Loading/Message.svelte';
@@ -16,7 +17,7 @@
<Event event={rawEvent} avatar />
{#if i < events.length - 1}
- <p></p>
+ <Spacer />
{/if}
{/each}
{/if}
diff --git a/src/routes/events/group/[group]/+page.svelte b/src/routes/events/group/[group]/+page.svelte
index a30ab78c..2ac371f1 100644
--- a/src/routes/events/group/[group]/+page.svelte
+++ b/src/routes/events/group/[group]/+page.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import type { Group as GroupType } from '$lib/Database/SB/groups.js';
import type { Event as EventType } from '$lib/Database/SB/events.js';
import Message from '$lib/Loading/Message.svelte';
@@ -37,7 +38,7 @@
<Group {group} />
- <p></p>
+ <Spacer />
<details open>
<summary>Events</summary>
@@ -53,7 +54,7 @@
<Event event={asEvent(rawEvent)} />
{#if i < events.length - 1}
- <p></p>
+ <Spacer />
{/if}
{/each}
{/if}
diff --git a/src/routes/events/groups/+page.svelte b/src/routes/events/groups/+page.svelte
index a1b902ba..6b9d8a10 100644
--- a/src/routes/events/groups/+page.svelte
+++ b/src/routes/events/groups/+page.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import type { Group as GroupType } from '$lib/Database/SB/groups';
import Message from '$lib/Loading/Message.svelte';
import root from '$lib/Utility/root';
@@ -29,7 +30,7 @@
</a>
{#if i < json.length - 1}
- <p></p>
+ <Spacer />
{/if}
{/each}
{:catch}
diff --git a/src/routes/girls/+page.svelte b/src/routes/girls/+page.svelte
index ecd4acd0..0dcf75c4 100644
--- a/src/routes/girls/+page.svelte
+++ b/src/routes/girls/+page.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import Senpy from '$lib/Data/senpy';
import HeadTitle from '$lib/Home/HeadTitle.svelte';
import Message from '$lib/Loading/Message.svelte';
@@ -27,7 +28,7 @@
<div>
The Senpy Club <span class="opaque">|</span> Anime Girls Holding Programming Books
- <p></p>
+ <Spacer />
<ul>
<li>
@@ -65,7 +66,7 @@
</div>
</div>
-<p></p>
+<Spacer />
<details class="languages" open>
<summary>Languages</summary>
diff --git a/src/routes/schedule/+page.svelte b/src/routes/schedule/+page.svelte
index 6502f2cb..160add29 100644
--- a/src/routes/schedule/+page.svelte
+++ b/src/routes/schedule/+page.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import Error from '$lib/Error/RateLimited.svelte';
import { onMount } from 'svelte';
import { parseOrDefault } from '$lib/Utility/parameters';
@@ -47,12 +48,12 @@
Crunchyroll Release Calender (Click to {crunchyrollExpanded ? 'collapse' : 'expand'})
</summary>
- <p></p>
+ <Spacer />
<Crunchyroll />
</details>
-<p></p> -->
+<Spacer /> -->
{#if !$subsPlease}
<Message message="Loading subtitle schedule ..." />
diff --git a/src/routes/settings/+page.svelte b/src/routes/settings/+page.svelte
index 25b2f6e1..e8b79fa1 100644
--- a/src/routes/settings/+page.svelte
+++ b/src/routes/settings/+page.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
/* eslint svelte/no-at-html-tags: "off" */
import Attributions from '$lib/Settings/Categories/Attributions.svelte';
@@ -50,7 +51,7 @@
にDMを送ってください!
{/if}
- <!-- <p></p>
+ <!-- <Spacer />
<p>
<b>{$locale().settings.fields.notice}</b>
@@ -71,7 +72,7 @@
</Category>
</div>
- <p></p>
+ <Spacer />
<Category title={$locale().settings.display.title}><Display /></Category>
<Category title={$locale().settings.calculation.title}><Calculation /></Category>
diff --git a/src/routes/tools/+page.svelte b/src/routes/tools/+page.svelte
index 5997d262..4014c58f 100644
--- a/src/routes/tools/+page.svelte
+++ b/src/routes/tools/+page.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import HeadTitle from '$lib/Home/HeadTitle.svelte';
import Picker from '$lib/Tools/Picker.svelte';
import { tools } from '$lib/Tools/tools.js';
@@ -20,7 +21,7 @@
{tools[t].name()}
</span>
- <p></p>
+ <Spacer />
{#if tools[t].description}
<span class="description">
@@ -32,7 +33,7 @@
{/each}
</div>
- <p></p>
+ <Spacer />
<blockquote style="margin: 0 0 0 1.5rem;">
Have any requests for cool tools that you think others might find useful? Send a private message
diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte
index 2b09fd85..0cfe05fd 100644
--- a/src/routes/user/[user]/+page.svelte
+++ b/src/routes/user/[user]/+page.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import settings from '$stores/settings';
import ParallaxImage from '../../../lib/Image/ParallaxImage.svelte';
import { typeSchedule, type ParseResult } from '$lib/Hololive/hololive';
@@ -302,7 +303,7 @@
{#if schedule && preferences && preferences.biography && preferences.biography.length > 0}
<br />
{:else}
- <p></p>
+ <Spacer />
{/if}
{#if $Profile.fetching}
@@ -325,7 +326,7 @@
{/if}
{#if schedule && preferences && preferences.pinned_hololive_streams.length > 0}
- <p></p>
+ <Spacer />
<div class="card">
<div class="hololive-badges">
@@ -352,7 +353,7 @@
{/if}
{#if preferences && userData && userData.id === $identity.id}
- <p></p>
+ <Spacer />
<details open>
<summary>{$locale().user.preferences.title}</summary>
@@ -367,7 +368,7 @@
{$locale().user.preferences.hideMissingBadges.title}
<SettingHint lineBreak>{$locale().user.preferences.hideMissingBadges.hint}</SettingHint>
- <p></p>
+ <Spacer />
<input
type="checkbox"
@@ -378,7 +379,7 @@
/>
{$locale().user.preferences.hideAWCBadges.title}
- <p></p>
+ <Spacer />
Pinned Categories
@@ -416,7 +417,7 @@
</span>
</div>
- <p></p>
+ <Spacer />
Biography
@@ -438,7 +439,7 @@
placeholder="Markdown supported!"
></textarea>
- <p></p>
+ <Spacer />
Badge Wall Custom CSS
diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte
index b0c83fd6..c9bb7454 100644
--- a/src/routes/user/[user]/badges/+page.svelte
+++ b/src/routes/user/[user]/badges/+page.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import Spacer from '$lib/Layout/Spacer.svelte';
import AWC from './../../../../lib/User/BadgeWall/AWC.svelte';
import { user, type User } from '$lib/Data/AniList/user';
import type { Badge } from '../../../../graphql/$types';
@@ -559,7 +560,7 @@
<b>Notice:</b> The Badge Wall overseer system has detected badges containing
AI-generated material on your wall. {shadowHiddenCount} of your badges have been shadow
hidden.
- <p></p>
+ <Spacer />
You may use the "Un-shadow Hide Badges" button to unhide these badges, from where you will
be required to use the hide feature to hide these badges from the public, while allowing
them to stay visible to you as the account holder.
@@ -570,10 +571,10 @@
material, this includes Badge Wall. If you have collected badges with AI-generated
elements, kindly use the hide feature to hide these badges from the public, while
allowing them to stay visible to you as the account holder.
- <p></p>
+ <Spacer />
Failure to comply with this request at your earliest convenience will result in the hiding
of all badges from your Badge Wall.
- <p></p>
+ <Spacer />
<button
on:click={async () => {
noticeDismissed = true;
@@ -586,7 +587,7 @@
</div>
{/if}
- <p></p>
+ <Spacer />
<div class="card">
{#if authorised}
@@ -661,7 +662,7 @@
)
])}
- <p></p>
+ <Spacer />
{#if error}
<p style="color: red;">{error}</p>
@@ -738,7 +739,7 @@
<small>Must be full date and time, defaults to now if any fields empty</small>
</span>
- <p></p>
+ <Spacer />
<div class="edit-row-2">
<input
@@ -826,7 +827,7 @@
</div>
{/if}
- <p></p>
+ <Spacer />
{#if loadQueryParameter === 'none'}
<div class="card">
@@ -885,7 +886,7 @@
<Popup fullscreen onLeave={() => (importMode = false)} show={importMode}>
{$locale().user.badges.importMode.title}
- <p></p>
+ <Spacer />
<input
type="text"
@@ -904,7 +905,7 @@
size="20"
/>
- <p></p>
+ <Spacer />
<input type="checkbox" id="import_links" name="import_links" bind:checked={importLinks} />
{$locale().user.badges.importMode.importLinks.title}
@@ -912,12 +913,12 @@
{$locale().user.badges.importMode.importLinks.hint}
</SettingHint>
- <p></p>
+ <Spacer />
<input type="checkbox" id="import_links" name="import_links" bind:checked={importReplies} />
{$locale().user.badges.importMode.importReplies}
- <p></p>
+ <Spacer />
<button
on:click={() => {
@@ -932,7 +933,7 @@
{$locale().user.badges.importMode.fetch}
</button>
- <p></p>
+ <Spacer />
<details>
<summary>{$locale().user.badges.importMode.dangerous}</summary>
@@ -954,7 +955,7 @@
</details>
{#if importImages && importImages.length > 0}
- <p></p>
+ <Spacer />
{$locale({
values: {
@@ -979,7 +980,7 @@
<Popup fullscreen onLeave={() => (migrateMode = false)} show={migrateMode}>
Migrate Category
- <p></p>
+ <Spacer />
<input
type="text"
@@ -999,7 +1000,7 @@
/>
<SettingHint lineBreak>Leave category empty to migrate all to or from uncategorised.</SettingHint>
- <p></p>
+ <Spacer />
<button
on:click={() => {
@@ -1023,7 +1024,7 @@
versa.
</SettingHint>
- <p></p>
+ <Spacer />
<input
type="text"
@@ -1035,7 +1036,7 @@
/>
<SettingHint lineBreak>Leave category field empty to hide all.</SettingHint>
- <p></p>
+ <Spacer />
<button
on:click={() => {