diff --git a/frontend/src/lib/components/DBManager.svelte b/frontend/src/lib/components/DBManager.svelte
index 81dc5b7147..46e4a90794 100644
--- a/frontend/src/lib/components/DBManager.svelte
+++ b/frontend/src/lib/components/DBManager.svelte
@@ -34,6 +34,7 @@
import { capitalize, onlyAlphaNumAndUnderscore, pluralize } from '$lib/utils'
import type { DbFeatures } from './apps/components/display/dbtable/dbFeatures'
import Star from './Star.svelte'
+ import { favoriteManager } from './sidebar/FavoriteMenu.svelte'
import DatatableRoleBadge from './DatatableRoleBadge.svelte'
import type { Asset, DataTableTables } from '$lib/gen'
import { ADMIN_DATATABLE_ROLE, type DatatableRowAction } from './dbTypes'
@@ -289,14 +290,15 @@
expandOverrides = next
}
- // The row menu appears while you are on the row, just left of the chevron or
- // star. Out of flow, so rows without one are not padded to make room.
- const rowActionsClass =
- 'absolute right-full mr-0.5 opacity-0 transition-opacity focus-visible:opacity-100 group-hover:opacity-100'
-
const rowChevronClass = (open: boolean) =>
'shrink-0 text-secondary transition-transform ' + (open ? '' : '-rotate-90')
+ /** A favourite says something about the table, so it stays visible; an empty
+ * star is just an affordance and waits for the pointer. */
+ const rowStarClass = (path: string) =>
+ 'flex shrink-0 transition-opacity ' +
+ (favoriteManager.isStarred(path, 'asset') ? '' : 'opacity-0 group-hover:opacity-100')
+
/** Reveal a node, dropping a stale "closed" that would hide a new selection. */
function reveal(dt: string | undefined, schemaKey?: string) {
const next = new Map(expandOverrides)
@@ -524,6 +526,7 @@
class="shrink-0"
/>
{/if}
+
+
{tableKey}
-