style: reduce top padding above tabs on entity pages

fix: remove unfinished arr types from instance form
This commit is contained in:
Sam Chau
2026-01-16 21:02:45 +10:30
parent 1f97a96e34
commit ad7e77dcea
12 changed files with 26 additions and 30 deletions

View File

@@ -26,9 +26,7 @@
function getTypeBadgeClasses(type: string): string {
const colors: Record<string, string> = {
radarr: 'bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-400',
sonarr: 'bg-sky-100 text-sky-800 dark:bg-sky-900/30 dark:text-sky-400',
lidarr: 'bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-400',
chaptarr: 'bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400'
sonarr: 'bg-sky-100 text-sky-800 dark:bg-sky-900/30 dark:text-sky-400'
};
return colors[type] || 'bg-neutral-100 text-neutral-800 dark:bg-neutral-800 dark:text-neutral-200';
}
@@ -62,7 +60,7 @@
<EmptyState
icon={Server}
title="No Arr Instances"
description="Add a Radarr, Sonarr, Lidarr, or Chaptarr instance to get started."
description="Add a Radarr or Sonarr instance to get started."
buttonText="Add Instance"
buttonHref="/arr/new"
buttonIcon={Plus}
@@ -74,7 +72,7 @@
<div>
<h1 class="text-3xl font-bold text-neutral-900 dark:text-neutral-50">Arr Instances</h1>
<p class="mt-1 text-neutral-600 dark:text-neutral-400">
Manage your Radarr, Sonarr, Lidarr, and Chaptarr instances
Manage your Radarr and Sonarr instances
</p>
</div>
<a

View File

@@ -191,7 +191,7 @@ export const actions: Actions = {
try {
const { createArrClient } = await import('$arr/factory.ts');
const { DelayProfileSyncer } = await import('$lib/server/sync/delayProfiles.ts');
const client = createArrClient(instance.type as 'radarr' | 'sonarr' | 'lidarr' | 'chaptarr', instance.url, instance.api_key);
const client = createArrClient(instance.type as 'radarr' | 'sonarr', instance.url, instance.api_key);
const syncer = new DelayProfileSyncer(client, id, instance.name);
const result = await syncer.sync();
@@ -225,7 +225,7 @@ export const actions: Actions = {
try {
const { createArrClient } = await import('$arr/factory.ts');
const { QualityProfileSyncer } = await import('$lib/server/sync/qualityProfiles.ts');
const client = createArrClient(instance.type as 'radarr' | 'sonarr' | 'lidarr' | 'chaptarr', instance.url, instance.api_key);
const client = createArrClient(instance.type as 'radarr' | 'sonarr', instance.url, instance.api_key);
const syncer = new QualityProfileSyncer(client, id, instance.name, instance.type as 'radarr' | 'sonarr');
const result = await syncer.sync();
@@ -259,8 +259,8 @@ export const actions: Actions = {
try {
const { createArrClient } = await import('$arr/factory.ts');
const { MediaManagementSyncer } = await import('$lib/server/sync/mediaManagement.ts');
const client = createArrClient(instance.type as 'radarr' | 'sonarr' | 'lidarr' | 'chaptarr', instance.url, instance.api_key);
const syncer = new MediaManagementSyncer(client, id, instance.name, instance.type as 'radarr' | 'sonarr' | 'lidarr' | 'chaptarr');
const client = createArrClient(instance.type as 'radarr' | 'sonarr', instance.url, instance.api_key);
const syncer = new MediaManagementSyncer(client, id, instance.name, instance.type as 'radarr' | 'sonarr');
const result = await syncer.sync();
await logger.info(`Manual media management sync completed for "${instance.name}"`, {

View File

@@ -90,7 +90,7 @@
$: title = mode === 'create' ? 'Add Arr Instance' : 'Edit Instance';
$: description =
mode === 'create'
? 'Configure a new Radarr, Sonarr, Lidarr, or Chaptarr instance'
? 'Configure a new Radarr or Sonarr instance'
: `Update the configuration for ${instance?.name || 'this instance'}`;
$: submitButtonText = mode === 'create' ? 'Save' : 'Save';
$: successMessage =
@@ -144,7 +144,7 @@
bind:value={name}
required
placeholder="e.g., Main Radarr, 4K Sonarr"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-neutral-400 focus:outline-none dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:focus:border-neutral-500"
/>
</div>
@@ -176,13 +176,11 @@
bind:value={type}
on:change={resetConnectionStatus}
required
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 focus:border-neutral-400 focus:outline-none dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:focus:border-neutral-500"
>
<option value="">Select type...</option>
<option value="radarr">Radarr</option>
<option value="sonarr">Sonarr</option>
<option value="lidarr">Lidarr</option>
<option value="chaptarr">Chaptarr</option>
</select>
{/if}
</div>
@@ -246,7 +244,7 @@
on:input={resetConnectionStatus}
required
placeholder="http://localhost:7878"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-neutral-400 focus:outline-none dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:focus:border-neutral-500"
/>
</div>
@@ -266,7 +264,7 @@
on:input={resetConnectionStatus}
required
placeholder={mode === 'edit' ? 'Enter API key to test connection' : 'Enter API key'}
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm font-mono text-neutral-900 placeholder-neutral-400 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm font-mono text-neutral-900 placeholder-neutral-400 focus:border-neutral-400 focus:outline-none dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:focus:border-neutral-500"
/>
{#if mode === 'edit'}
<p class="mt-1 text-xs text-neutral-500 dark:text-neutral-400">

View File

@@ -3,7 +3,7 @@ import type { Actions } from '@sveltejs/kit';
import { arrInstancesQueries } from '$db/queries/arrInstances.ts';
import { logger } from '$logger/logger.ts';
const VALID_TYPES = ['radarr', 'sonarr', 'lidarr', 'chaptarr'];
const VALID_TYPES = ['radarr', 'sonarr'];
export const actions = {
default: async ({ request }) => {

View File

@@ -3,7 +3,7 @@ import type { RequestHandler } from '@sveltejs/kit';
import { createArrClient } from '$arr/factory.ts';
import type { ArrType } from '$arr/types.ts';
const VALID_TYPES = ['radarr', 'sonarr', 'lidarr', 'chaptarr'];
const VALID_TYPES = ['radarr', 'sonarr'];
export const POST: RequestHandler = async ({ request }) => {
try {

View File

@@ -104,7 +104,7 @@
<title>Custom Formats - {data.currentDatabase.name} - Profilarr</title>
</svelte:head>
<div class="space-y-6 p-8">
<div class="space-y-6 px-8 pt-4 pb-8">
<!-- Tabs -->
<Tabs {tabs} />

View File

@@ -104,7 +104,7 @@
bind:value={name}
required
placeholder="e.g., Main Database, 4K Profiles"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-neutral-400 focus:outline-none dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:focus:border-neutral-500"
/>
<p class="mt-1 text-xs text-neutral-500 dark:text-neutral-400">
A friendly name to identify this database
@@ -127,7 +127,7 @@
required
disabled={mode === 'edit'}
placeholder="https://github.com/username/database"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-neutral-100 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:disabled:bg-neutral-900"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-neutral-400 focus:outline-none disabled:cursor-not-allowed disabled:bg-neutral-100 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:disabled:bg-neutral-900 dark:focus:border-neutral-500"
/>
{#if mode === 'edit'}
<p class="mt-1 text-xs text-neutral-500 dark:text-neutral-400">
@@ -155,7 +155,7 @@
name="branch"
bind:value={branch}
placeholder="main"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-neutral-400 focus:outline-none dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:focus:border-neutral-500"
/>
<p class="mt-1 text-xs text-neutral-500 dark:text-neutral-400">
Branch to checkout on link. Leave empty to use the default branch. You can change this later.
@@ -177,7 +177,7 @@
name="personal_access_token"
bind:value={personalAccessToken}
placeholder="ghp_..."
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 placeholder-neutral-400 focus:border-neutral-400 focus:outline-none dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:focus:border-neutral-500"
/>
<p class="mt-1 text-xs text-neutral-500 dark:text-neutral-400">
Required for private repositories to clone and for developers to push back to GitHub.
@@ -207,7 +207,7 @@
id="sync_strategy"
name="sync_strategy"
bind:value={syncStrategy}
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100"
class="mt-1 block w-full rounded-lg border border-neutral-300 bg-white px-3 py-2 text-sm text-neutral-900 focus:border-neutral-400 focus:outline-none dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:focus:border-neutral-500"
>
<option value={0}>Manual (no auto-sync)</option>
<option value={5}>Every 5 minutes</option>
@@ -231,7 +231,7 @@
name="auto_pull"
bind:checked={autoPull}
value="1"
class="mt-0.5 h-4 w-4 rounded border-neutral-300 text-blue-600 focus:ring-2 focus:ring-blue-500 dark:border-neutral-700 dark:bg-neutral-800"
class="mt-0.5 h-4 w-4 rounded border-neutral-300 text-neutral-600 focus:ring-0 dark:border-neutral-700 dark:bg-neutral-800"
/>
<div>
<label

View File

@@ -37,7 +37,7 @@
<title>Delay Profiles - {data.currentDatabase.name} - Profilarr</title>
</svelte:head>
<div class="space-y-6 p-8">
<div class="space-y-6 px-8 pt-4 pb-8">
<!-- Tabs -->
<Tabs {tabs} />

View File

@@ -35,7 +35,7 @@
<title>Media Management - {data.currentDatabase.name} - Profilarr</title>
</svelte:head>
<div class="space-y-6 p-8">
<div class="space-y-6 px-8 pt-4 pb-8">
<!-- Database Tabs -->
<Tabs tabs={databaseTabs} />

View File

@@ -34,7 +34,7 @@
<title>Quality Profiles - {data.currentDatabase.name} - Profilarr</title>
</svelte:head>
<div class="space-y-6 p-8">
<div class="space-y-6 px-8 pt-4 pb-8">
<!-- Tabs -->
<Tabs {tabs} />

View File

@@ -354,7 +354,7 @@
<title>Entity Testing - {data.currentDatabase.name} - Profilarr</title>
</svelte:head>
<div class="space-y-6 p-8">
<div class="space-y-6 px-8 pt-4 pb-8">
<!-- Database Tabs -->
<Tabs {tabs} />

View File

@@ -108,7 +108,7 @@
<title>Regular Expressions - {data.currentDatabase.name} - Profilarr</title>
</svelte:head>
<div class="space-y-6 p-8">
<div class="space-y-6 px-8 pt-4 pb-8">
<!-- Tabs -->
<Tabs {tabs} />