From 760bd9a28367c25eeea285958d02233e7037d688 Mon Sep 17 00:00:00 2001 From: HorizonCode Date: Tue, 3 Nov 2026 23:13:44 +0100 Subject: [PATCH] refactor(themes): align installed cards with the workshop layout Installed theme cards now use the same visual hierarchy as workshop cards: status and API badges at the top, version on the preview, an author strip over the artwork, a compact title and description, and a footer with status plus compact actions. This removes the oversized primary button and duplicate version/author rows. --- src/screens/Launch.svelte | 376 ++++++++++++++++++++------------------ 1 file changed, 203 insertions(+), 173 deletions(-) diff --git a/src/screens/Launch.svelte b/src/screens/Launch.svelte index 8924cec..7d8011c 100644 --- a/src/screens/Launch.svelte +++ b/src/screens/Launch.svelte @@ -4012,17 +4012,37 @@
- {#if isActive} - In use - {/if} - {#if theme.name !== 'Default' && theme.folder_name !== 'default' && theme.apiVersion} - + {#if isActive} + In use + {/if} + {#if theme.name !== 'Default' && theme.folder_name !== 'default' && theme.apiVersion} + + API {theme.apiVersion.startsWith('2') ? '2.0' : '1.0'} + + {/if} + +
+ {#if theme.nsfw} + + 18+ + + {/if} + - API {theme.apiVersion.startsWith('2') ? '2.0' : '1.0'} - - {/if} + v{theme.version} + +
{#if theme.nsfw && !revealedNsfw.includes(theme.name)} {/if} - {#if theme.nsfw} - - 18+ - - {/if} - -
-
-
+
+
- {theme.name} + {theme.author.trim().charAt(0) || '?'} - by {theme.author} + {theme.author || 'Unknown author'}
- {#if theme.updateAvailable && theme.availableVersion} - v{theme.version} → - v{theme.availableVersion} - {:else} - v{theme.version} - {/if} + {theme.updateAvailable ? 'Update available' : 'Installed'}
-

- {theme.description} -

-
-
+
+

+ {theme.name} +

+ {#if theme.description} +

- {#if theme.status === 'downloading' || theme.status === 'extracting'} - - {#if !$reduceAnimations} - - {/if} - {/if} - - {#if theme.status === 'extracting'} - - {/if} - - - - {#if hasThemeMenu} - - - {#snippet child({ props })} - - {/snippet} - - + {/if} +

+ + {#if theme.updateAvailable && theme.availableVersion} + v{theme.availableVersion} available - {#if canEditTheme} - openThemeEditor(theme)} - > - - Edit theme - + {:else if isActive} + Active theme + {:else} + Installed + {/if} + +
+ + {#if hasThemeMenu} + + + {#snippet child({ props })} + + {/snippet} + + + {#if canEditTheme} + openThemeEditor(theme)} + > + + Edit theme + + {/if} + {#if canRestoreTheme} + + requestThemeRestore(theme, theme.backups![0])} + > - Uninstalling... - {:else} - - Uninstall theme - {/if} - - {/if} - - - {/if} + Restore previous version + + {/if} + {#if canUpdateTheme} + updateInstalledTheme(theme)} + > + + Update theme + + {/if} + {#if canReportTheme} + void openInstalledReport(theme)} + > + + Report theme + + {/if} + {#if canUninstallTheme} + + void uninstallInstalledTheme(theme)} + > + {#if theme.status === 'deleting'} + + Uninstalling... + {:else} + + Uninstall theme + {/if} + + {/if} + + + {/if} +