feat(views): drag regions on top-bars across remaining views
This commit is contained in:
24 files changed
+47
-49
No files matched your search
@@ -422,7 +422,7 @@
|
||||
<div class="scene-view">
|
||||
{#if !loading}
|
||||
<!-- Back button (always visible) -->
|
||||
<div class="top-bar">
|
||||
<div class="top-bar" data-tauri-drag-region="deep">
|
||||
<button class="back-btn" onclick={onBack}>
|
||||
<ArrowLeft size={16} />
|
||||
<span>{$t('actions.back')}</span>
|
||||
@@ -431,7 +431,7 @@
|
||||
|
||||
<!-- Compact sticky header (appears when hero scrolls out) -->
|
||||
{#if heroScrolledPast}
|
||||
<div class="compact-header">
|
||||
<div class="compact-header" data-tauri-drag-region="deep">
|
||||
{#if flagUrl}
|
||||
<img src={flagUrl} alt="" class="compact-flag" />
|
||||
{/if}
|
||||
|
||||
@@ -163,8 +163,8 @@
|
||||
</script>
|
||||
|
||||
<div class="award-albums-view">
|
||||
<div class="top-bar">
|
||||
<div class="top-bar-left">
|
||||
<div class="top-bar" data-tauri-drag-region="deep">
|
||||
<div class="top-bar-left" data-tauri-drag-region="false">
|
||||
<button class="back-btn" onclick={onBack} title={$t('actions.back')}>
|
||||
<ChevronLeft size={20} />
|
||||
</button>
|
||||
@@ -173,7 +173,7 @@
|
||||
<h1 class="page-title">{$t('award.section.releases')}</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="top-bar-right">
|
||||
<div class="top-bar-right" data-tauri-drag-region="false">
|
||||
<div class="search-wrapper">
|
||||
<Search size={16} />
|
||||
<input
|
||||
|
||||
@@ -227,13 +227,13 @@
|
||||
const heroImage = $derived(page?.image || page?.magazine?.image || '');
|
||||
</script>
|
||||
|
||||
<div class="award-detail-view">
|
||||
<div class="award-detail-view" data-tauri-drag-region>
|
||||
<button class="back-btn" onclick={onBack}>
|
||||
<ArrowLeft size={16} />
|
||||
<span>{$t('actions.back')}</span>
|
||||
</button>
|
||||
|
||||
<header class="award-header">
|
||||
<header class="award-header" data-tauri-drag-region="deep">
|
||||
<div class="award-image-wrapper">
|
||||
{#if heroImage && !heroImageFailed}
|
||||
<img
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
|
||||
<ViewTransition duration={200} distance={12} direction="down">
|
||||
<div class="blacklist-manager">
|
||||
<div class="top-bar">
|
||||
<div class="top-bar" data-tauri-drag-region="deep">
|
||||
<button class="back-btn" onclick={onBack}>
|
||||
<ArrowLeft size={16} />
|
||||
<span>{$t('actions.back')}</span>
|
||||
|
||||
@@ -156,9 +156,9 @@
|
||||
<span>{$t('actions.back')}</span>
|
||||
</button>
|
||||
{/if}
|
||||
<header class="view-header">
|
||||
<header class="view-header" data-tauri-drag-region="deep">
|
||||
<h1>{$t('collections.nav')}</h1>
|
||||
<div class="header-actions">
|
||||
<div class="header-actions" data-tauri-drag-region="false">
|
||||
<button
|
||||
type="button"
|
||||
class="primary-cta"
|
||||
|
||||
@@ -567,7 +567,7 @@
|
||||
</script>
|
||||
|
||||
<div class="builder-view">
|
||||
<div class="builder-scroll">
|
||||
<div class="builder-scroll" data-tauri-drag-region>
|
||||
{#if onBack}
|
||||
<button class="back-btn" onclick={() => onBack?.()}>
|
||||
<ArrowLeft size={16} />
|
||||
@@ -575,7 +575,7 @@
|
||||
</button>
|
||||
{/if}
|
||||
|
||||
<header class="builder-header">
|
||||
<header class="builder-header" data-tauri-drag-region="deep">
|
||||
{#if artistAvatarUrl}
|
||||
<img class="avatar" src={artistAvatarUrl} alt="" />
|
||||
{:else}
|
||||
@@ -1157,7 +1157,6 @@
|
||||
color: var(--text-muted);
|
||||
font-size: 12px;
|
||||
line-height: 1;
|
||||
user-select: none;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -234,14 +234,14 @@
|
||||
|
||||
<div class="discover-browse">
|
||||
<!-- Top bar -->
|
||||
<div class="top-bar">
|
||||
<div class="top-bar-left">
|
||||
<div class="top-bar" data-tauri-drag-region="deep">
|
||||
<div class="top-bar-left" data-tauri-drag-region="false">
|
||||
<button class="back-btn" onclick={onBack}>
|
||||
<ChevronLeft size={20} />
|
||||
</button>
|
||||
<h1 class="page-title">{$t(titleKey)}</h1>
|
||||
</div>
|
||||
<div class="top-bar-right">
|
||||
<div class="top-bar-right" data-tauri-drag-region="false">
|
||||
<div class="search-wrapper">
|
||||
<Search size={16} />
|
||||
<input
|
||||
|
||||
@@ -163,14 +163,14 @@
|
||||
|
||||
<div class="discover-playlists">
|
||||
<!-- Top bar -->
|
||||
<div class="top-bar">
|
||||
<div class="top-bar-left">
|
||||
<div class="top-bar" data-tauri-drag-region="deep">
|
||||
<div class="top-bar-left" data-tauri-drag-region="false">
|
||||
<button class="back-btn" onclick={onBack}>
|
||||
<ChevronLeft size={20} />
|
||||
</button>
|
||||
<h1 class="page-title">{$t('discover.qobuzPlaylists')}</h1>
|
||||
</div>
|
||||
<div class="top-bar-right">
|
||||
<div class="top-bar-right" data-tauri-drag-region="false">
|
||||
<div class="search-wrapper">
|
||||
<Search size={16} />
|
||||
<input
|
||||
|
||||
@@ -514,7 +514,7 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="playlist-header">
|
||||
<div class="playlist-header" data-tauri-drag-region="deep">
|
||||
<div class="artwork-container">
|
||||
<div class="artwork artwork-daily"></div>
|
||||
</div>
|
||||
@@ -594,7 +594,7 @@
|
||||
<div class="empty">{$t('qobuzMixes.result.empty')}</div>
|
||||
{:else if result}
|
||||
<div class="track-list">
|
||||
<div class="track-list-header">
|
||||
<div class="track-list-header" data-tauri-drag-region="deep">
|
||||
{#if multiSelectMode}
|
||||
<div class="col-select-all">
|
||||
<input
|
||||
|
||||
@@ -442,7 +442,7 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="playlist-header">
|
||||
<div class="playlist-header" data-tauri-drag-region="deep">
|
||||
<div class="artwork-container">
|
||||
<div class="artwork artwork-favq"></div>
|
||||
</div>
|
||||
@@ -525,7 +525,7 @@
|
||||
<div class="empty">{$t('qobuzMixes.result.empty')}</div>
|
||||
{:else if tracks.length > 0}
|
||||
<div class="track-list">
|
||||
<div class="track-list-header">
|
||||
<div class="track-list-header" data-tauri-drag-region="deep">
|
||||
{#if multiSelectMode}
|
||||
<div class="col-select-all">
|
||||
<input
|
||||
|
||||
@@ -345,7 +345,7 @@
|
||||
|
||||
<div class="label-view" onscroll={handleScroll}>
|
||||
<!-- Back button -->
|
||||
<div class="top-bar">
|
||||
<div class="top-bar" data-tauri-drag-region="deep">
|
||||
<button class="back-btn" onclick={onBack}>
|
||||
<ArrowLeft size={16} />
|
||||
<span>{$t('actions.back')}</span>
|
||||
@@ -353,7 +353,7 @@
|
||||
</div>
|
||||
|
||||
<!-- Header -->
|
||||
<header class="label-header">
|
||||
<header class="label-header" data-tauri-drag-region="deep">
|
||||
<div class="label-image-wrapper">
|
||||
{#if getLabelImage()}
|
||||
<img src={getLabelImage()} alt={label?.name || labelName} class="label-image" loading="lazy" decoding="async" />
|
||||
|
||||
@@ -842,7 +842,7 @@
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="label-detail-view" bind:this={labelDetailEl}>
|
||||
<div class="label-detail-view" bind:this={labelDetailEl} data-tauri-drag-region>
|
||||
{#if loading}
|
||||
<div class="loading-state">
|
||||
<div class="spinner"></div>
|
||||
@@ -862,7 +862,7 @@
|
||||
</button>
|
||||
|
||||
<!-- Header -->
|
||||
<header class="label-header section-anchor" bind:this={headerSection}>
|
||||
<header class="label-header section-anchor" bind:this={headerSection} data-tauri-drag-region="deep">
|
||||
<div class="label-image-wrapper">
|
||||
{#if getLabelImage(pageData)}
|
||||
<img
|
||||
|
||||
@@ -1391,7 +1391,7 @@
|
||||
</div>
|
||||
{:else}
|
||||
<!-- Header -->
|
||||
<header class="detail-header">
|
||||
<header class="detail-header" data-tauri-drag-region="deep">
|
||||
{#if onBack}
|
||||
<button class="back-btn" onclick={() => onBack()}>
|
||||
<ArrowLeft size={16} />
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
<span>{$t('actions.back')}</span>
|
||||
</button>
|
||||
{/if}
|
||||
<header class="view-header">
|
||||
<header class="view-header" data-tauri-drag-region="deep">
|
||||
<h1>{$t('mixtapes.nav')}</h1>
|
||||
<button
|
||||
type="button"
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
<div class="musician-page">
|
||||
<!-- Header -->
|
||||
<header class="page-header">
|
||||
<header class="page-header" data-tauri-drag-region="deep">
|
||||
<button class="back-btn" onclick={onBack} title={ $t('actions.back') }>
|
||||
<ArrowLeft size={20} />
|
||||
</button>
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
</script>
|
||||
|
||||
<div class="offline-cache-manager">
|
||||
<header class="ocm-header">
|
||||
<header class="ocm-header" data-tauri-drag-region="deep">
|
||||
<button type="button" class="back-btn" onclick={onBack} aria-label={$t('actions.back')}>
|
||||
<ArrowLeft size={18} />
|
||||
</button>
|
||||
|
||||
@@ -890,14 +890,14 @@
|
||||
<span>{$t('actions.back')}</span>
|
||||
</button>
|
||||
<!-- Header -->
|
||||
<div class="header">
|
||||
<div class="header" data-tauri-drag-region="deep">
|
||||
<h1>{$t('playlistManager.heading')}</h1>
|
||||
</div>
|
||||
|
||||
<!-- Breadcrumb Navigation (when inside a folder, only in folder mode and not tree) -->
|
||||
{#if folderMode && viewMode !== 'tree' && currentFolderId && currentFolder}
|
||||
{@const breadcrumbFolder = currentFolder}
|
||||
<div class="breadcrumb">
|
||||
<div class="breadcrumb" data-tauri-drag-region="deep">
|
||||
<button class="breadcrumb-item" onclick={navigateToRoot}>
|
||||
{$t('playlist.allPlaylists')}
|
||||
</button>
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
</script>
|
||||
|
||||
<ViewTransition duration={200} distance={12} direction="up">
|
||||
<div class="purchase-album-detail">
|
||||
<div class="purchase-album-detail" data-tauri-drag-region>
|
||||
<!-- Back Navigation -->
|
||||
<button class="back-btn" onclick={onBack}>
|
||||
<ArrowLeft size={16} />
|
||||
@@ -235,7 +235,7 @@
|
||||
</div>
|
||||
{:else if album}
|
||||
<!-- Album Header -->
|
||||
<div class="album-header">
|
||||
<div class="album-header" data-tauri-drag-region="deep">
|
||||
<div class="artwork" class:unavailable={!album.downloadable}>
|
||||
<img src={getQobuzImage(album.image)} alt={album.title} />
|
||||
{#if !album.downloadable}
|
||||
|
||||
@@ -484,7 +484,7 @@
|
||||
|
||||
<div class="purchases-view">
|
||||
<!-- Header -->
|
||||
<div class="header">
|
||||
<div class="header" data-tauri-drag-region="deep">
|
||||
<div class="header-icon">
|
||||
<ShoppingBag size={32} color="var(--accent-primary)" />
|
||||
</div>
|
||||
@@ -503,8 +503,8 @@
|
||||
{/if}
|
||||
|
||||
<!-- Sticky Navigation Bar -->
|
||||
<div class="purchases-nav">
|
||||
<div class="nav-left">
|
||||
<div class="purchases-nav" data-tauri-drag-region="deep">
|
||||
<div class="nav-left" data-tauri-drag-region="false">
|
||||
<button
|
||||
class="nav-link"
|
||||
class:active={activeTab === 'albums'}
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
</script>
|
||||
|
||||
<div class="release-watch">
|
||||
<div class="top-bar">
|
||||
<div class="top-bar" data-tauri-drag-region="deep">
|
||||
<button class="back-btn" onclick={onBack} title={$t('actions.back')}>
|
||||
<ChevronLeft size={20} />
|
||||
</button>
|
||||
@@ -169,7 +169,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tabs">
|
||||
<div class="tabs" data-tauri-drag-region="deep">
|
||||
{#each tabs as tab}
|
||||
{@const Icon = tab.icon}
|
||||
<button
|
||||
|
||||
@@ -1136,9 +1136,9 @@
|
||||
{/if}
|
||||
|
||||
<!-- Sticky Header Container -->
|
||||
<div class="sticky-header" class:scrolled={isScrolled}>
|
||||
<div class="sticky-header" class:scrolled={isScrolled} data-tauri-drag-region="deep">
|
||||
{#if !searchInTitlebar}
|
||||
<div class="search-input-container" class:compact={isScrolled}>
|
||||
<div class="search-input-container" class:compact={isScrolled} data-tauri-drag-region="false">
|
||||
<Search size={isScrolled ? 18 : 20} class="search-icon" />
|
||||
<input
|
||||
type="text"
|
||||
@@ -1157,7 +1157,7 @@
|
||||
{/if}
|
||||
|
||||
<!-- Tabs and Filters Row -->
|
||||
<div class="tabs-row">
|
||||
<div class="tabs-row" data-tauri-drag-region="false">
|
||||
<div class="tabs">
|
||||
<button
|
||||
class="tab"
|
||||
|
||||
@@ -4181,7 +4181,7 @@
|
||||
{/if}
|
||||
|
||||
<!-- Header -->
|
||||
<div class="header">
|
||||
<div class="header" data-tauri-drag-region="deep">
|
||||
{#if onBack}
|
||||
<button class="back-btn" onclick={onBack}>
|
||||
<ArrowLeft size={16} />
|
||||
@@ -7157,7 +7157,6 @@ flatpak override --user --filesystem=/home/USUARIO/Música com.blitzfc.qbz</pre>
|
||||
color: var(--text-secondary);
|
||||
font-size: 13px;
|
||||
list-style: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.discord-rpc-override > summary::-webkit-details-marker {
|
||||
|
||||
@@ -570,7 +570,7 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="playlist-header">
|
||||
<div class="playlist-header" data-tauri-drag-region="deep">
|
||||
<div class="artwork-container">
|
||||
<div class="artwork artwork-topq"></div>
|
||||
</div>
|
||||
@@ -653,7 +653,7 @@
|
||||
<div class="empty">{$t('qobuzMixes.result.empty')}</div>
|
||||
{:else if result}
|
||||
<div class="track-list">
|
||||
<div class="track-list-header">
|
||||
<div class="track-list-header" data-tauri-drag-region="deep">
|
||||
{#if multiSelectMode}
|
||||
<div class="col-select-all">
|
||||
<input
|
||||
|
||||
@@ -512,7 +512,7 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="playlist-header">
|
||||
<div class="playlist-header" data-tauri-drag-region="deep">
|
||||
<div class="artwork-container">
|
||||
<div class="artwork artwork-weekly"></div>
|
||||
</div>
|
||||
@@ -589,7 +589,7 @@
|
||||
<div class="empty">{$t('qobuzMixes.result.empty')}</div>
|
||||
{:else if result}
|
||||
<div class="track-list">
|
||||
<div class="track-list-header">
|
||||
<div class="track-list-header" data-tauri-drag-region="deep">
|
||||
{#if multiSelectMode}
|
||||
<div class="col-select-all">
|
||||
<input
|
||||
|
||||
Reference in new issue
Block a user