From 67936b4e142b5cf0f112e7a79c59f6f911ba3368 Mon Sep 17 00:00:00 2001 From: Diego Imbert Date: Wed, 7 Oct 2026 22:56:21 +0200 Subject: [PATCH] feat: inline the favorite star after the home row title Co-Authored-By: Claude Opus 5.5 (1M context) --- frontend/src/lib/components/Star.svelte | 22 +++++++++++++++++-- .../lib/components/common/table/Row.svelte | 21 +++++++++++++++++- frontend/src/lib/components/home/homeTable.ts | 2 +- 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/frontend/src/lib/components/Star.svelte b/frontend/src/lib/components/Star.svelte index 4f0f169109..1abccaf678 100644 --- a/frontend/src/lib/components/Star.svelte +++ b/frontend/src/lib/components/Star.svelte @@ -10,9 +10,21 @@ summary?: string workspaceId?: string size?: number + /** Starred items show in yellow. */ + yellowWhenStarred?: boolean + /** Hidden until the surrounding `group/row` is hovered or focused, unless starred. */ + revealOnRowHover?: boolean } - let { path, kind, workspaceId, summary, size = 16 }: Props = $props() + let { + path, + kind, + workspaceId, + summary, + size = 16, + yellowWhenStarred = false, + revealOnRowHover = false + }: Props = $props() let buttonHover = $state(false) let starred = $derived(favoriteManager.isStarred(path, kind)) @@ -28,7 +40,13 @@ onclick={preventDefault(onClick)} onmouseenter={() => (buttonHover = true)} onmouseleave={() => (buttonHover = false)} - class="p-1" + class={[ + 'p-1', + starred && yellowWhenStarred && 'text-yellow-500', + !starred && + revealOnRowHover && + 'invisible group-hover/row:visible group-focus-within/row:visible group-data-[row-keyboard-selected=true]/row:visible' + ]} > {#if starred} {#if buttonHover} diff --git a/frontend/src/lib/components/common/table/Row.svelte b/frontend/src/lib/components/common/table/Row.svelte index 382d714e10..6c960b6226 100644 --- a/frontend/src/lib/components/common/table/Row.svelte +++ b/frontend/src/lib/components/common/table/Row.svelte @@ -270,7 +270,6 @@
{@render actions?.()}
- {@render favorite()} {:else} @@ -396,6 +395,23 @@ {/if} {/snippet} +{#snippet inlineFavorite()} + {#if kind == 'app' || kind == 'raw_app' || kind == 'script' || kind == 'flow'} +
+ {#if canFavorite} + + {:else} + + {/if} +
+ {/if} +{/snippet} + {#snippet rowContent(withIcon: boolean, linked: boolean, inlineBadges = true)} {#if withIcon}
@@ -425,6 +441,9 @@
{@render draftBadge()}
{/if} + {#if homeTable} + {@render inlineFavorite()} + {/if} {#if inlineBadges && (badges || languageBadge || tagBadges || draftBadge || sharedBadge || labelBadges)}