From c61114d13de705cf32d0a14350d02c9b727215f8 Mon Sep 17 00:00:00 2001 From: Sam Chau Date: Thu, 29 Jan 2026 04:10:18 +1030 Subject: [PATCH] style: mobile improvements for arr pages --- src/lib/client/ui/button/Button.svelte | 8 +- src/lib/client/ui/dropdown/Dropdown.svelte | 22 ++- src/lib/client/ui/modal/InfoModal.svelte | 8 +- src/lib/client/ui/modal/Modal.svelte | 2 +- src/routes/arr/[id]/+layout.svelte | 4 +- src/routes/arr/[id]/library/+page.svelte | 55 ++---- .../components/LibraryActionBar.svelte | 71 +------- .../[id]/library/components/MovieRow.svelte | 19 +- src/routes/arr/[id]/logs/+page.svelte | 2 +- .../rename/components/RenameRunHistory.svelte | 16 +- .../rename/components/RenameSettings.svelte | 163 +++++++++--------- src/routes/arr/[id]/sync/+page.svelte | 29 ++-- .../[id]/sync/components/DelayProfiles.svelte | 2 +- .../sync/components/QualityProfiles.svelte | 2 +- .../[id]/sync/components/SyncFooter.svelte | 66 +++---- src/routes/arr/[id]/upgrades/+page.svelte | 4 +- .../upgrades/components/CoreSettings.svelte | 132 +++++++------- .../upgrades/components/FilterSettings.svelte | 115 ++++++++---- .../upgrades/components/RunHistory.svelte | 10 +- src/routes/arr/components/InstanceForm.svelte | 26 +-- src/routes/settings/logs/+page.svelte | 152 ++++++---------- .../logs/components/LogsActionsBar.svelte | 2 +- 22 files changed, 430 insertions(+), 480 deletions(-) diff --git a/src/lib/client/ui/button/Button.svelte b/src/lib/client/ui/button/Button.svelte index 3d32137..9d4a466 100644 --- a/src/lib/client/ui/button/Button.svelte +++ b/src/lib/client/ui/button/Button.svelte @@ -11,8 +11,10 @@ export let textColor: string = ''; export let iconPosition: 'left' | 'right' = 'left'; export let type: 'button' | 'submit' = 'button'; - // Responsive: auto-switch to xs on smaller screens (< 1280px) + // Responsive: auto-switch to xs on smaller screens (< 768px) export let responsive: boolean = false; + // Hide text on mobile (show icon only) + export let hideTextOnMobile: boolean = false; export let fullWidth: boolean = false; // Optional href - renders as anchor instead of button export let href: string | undefined = undefined; @@ -75,7 +77,7 @@ {/if} {#if text} - {text} + {text} {/if} {#if icon && iconPosition === 'right'} @@ -88,7 +90,7 @@ {/if} {#if text} - {text} + {text} {/if} {#if icon && iconPosition === 'right'} diff --git a/src/lib/client/ui/dropdown/Dropdown.svelte b/src/lib/client/ui/dropdown/Dropdown.svelte index c67ac8b..73a139f 100644 --- a/src/lib/client/ui/dropdown/Dropdown.svelte +++ b/src/lib/client/ui/dropdown/Dropdown.svelte @@ -2,6 +2,7 @@ import { onMount } from 'svelte'; export let position: 'left' | 'right' | 'middle' = 'left'; + export let mobilePosition: 'left' | 'right' | 'middle' | null = null; export let minWidth: string = '12rem'; export let compact: boolean = false; // Fixed positioning to escape overflow containers @@ -11,13 +12,24 @@ let dropdownEl: HTMLElement; let fixedStyle = ''; + const positionClasses = { + left: 'left-0', + right: 'right-0', + middle: 'left-1/2 -translate-x-1/2' + }; + + const responsivePositionClasses = { + 'middle-to-right': 'left-1/2 -translate-x-1/2 md:left-auto md:right-0 md:translate-x-0', + 'middle-to-left': 'left-1/2 -translate-x-1/2 md:left-0 md:translate-x-0', + 'left-to-right': 'left-0 md:left-auto md:right-0', + 'right-to-left': 'right-0 md:right-auto md:left-0' + }; + $: positionClass = fixed ? '' - : { - left: 'left-0', - right: 'right-0', - middle: 'left-1/2 -translate-x-1/2' - }[position]; + : mobilePosition && mobilePosition !== position + ? responsivePositionClasses[`${mobilePosition}-to-${position}`] || positionClasses[position] + : positionClasses[position]; $: marginClass = compact ? 'mt-1' : 'mt-3'; $: gap = compact ? 4 : 12; // pixels gap below trigger diff --git a/src/lib/client/ui/modal/InfoModal.svelte b/src/lib/client/ui/modal/InfoModal.svelte index ef811f2..e5708a0 100644 --- a/src/lib/client/ui/modal/InfoModal.svelte +++ b/src/lib/client/ui/modal/InfoModal.svelte @@ -34,7 +34,7 @@