feat(documents): enlarge thumbnail in document-list rows
Add a `size` prop to DocumentThumbnail (default `sm` keeps the existing 60×84 tile used in person sublists; new `lg` is 120×168) and use `lg` for the main document-list row, where the previous tile occupied less than half of the row's vertical space. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -40,7 +40,7 @@ function safeTagColor(color: string | null | undefined): string {
|
|||||||
<a href="/documents/{doc.id}" class="block px-4 py-4 sm:py-5">
|
<a href="/documents/{doc.id}" class="block px-4 py-4 sm:py-5">
|
||||||
<div class="flex gap-3 sm:gap-5">
|
<div class="flex gap-3 sm:gap-5">
|
||||||
<!-- Thumbnail tile -->
|
<!-- Thumbnail tile -->
|
||||||
<DocumentThumbnail doc={doc} />
|
<DocumentThumbnail doc={doc} size="lg" />
|
||||||
|
|
||||||
<!-- Left column -->
|
<!-- Left column -->
|
||||||
<div class="flex-1 sm:border-r sm:border-line sm:pr-5">
|
<div class="flex-1 sm:border-r sm:border-line sm:pr-5">
|
||||||
|
|||||||
@@ -7,21 +7,27 @@ type Doc = Pick<
|
|||||||
'id' | 'thumbnailKey' | 'thumbnailGeneratedAt' | 'contentType'
|
'id' | 'thumbnailKey' | 'thumbnailGeneratedAt' | 'contentType'
|
||||||
>;
|
>;
|
||||||
|
|
||||||
let { doc }: { doc: Doc } = $props();
|
let { doc, size = 'sm' }: { doc: Doc; size?: 'sm' | 'lg' } = $props();
|
||||||
const url = $derived(thumbnailUrl(doc));
|
const url = $derived(thumbnailUrl(doc));
|
||||||
|
|
||||||
|
const containerClass = $derived(
|
||||||
|
size === 'lg'
|
||||||
|
? 'relative h-[168px] w-[120px] flex-shrink-0 overflow-hidden rounded-sm border border-line bg-white'
|
||||||
|
: 'relative h-[84px] w-[60px] flex-shrink-0 overflow-hidden rounded-sm border border-line bg-white'
|
||||||
|
);
|
||||||
|
const iconClass = $derived(size === 'lg' ? 'h-16 w-16' : 'h-8 w-8');
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Fixed 60x84 tile used wherever a document row appears. When the backend has
|
Fixed-aspect (5:7, ≈A4) tile used wherever a document row appears. `sm` is
|
||||||
generated a thumbnail we render it with `object-cover` + `object-top` so
|
60×84 (compact rows, person sublists); `lg` is 120×168 (main document list).
|
||||||
letter salutations stay visible; otherwise we fall back to the file-type
|
When the backend has generated a thumbnail we render it with `object-cover`
|
||||||
icon so the row never shows an empty rectangle. Dark mode uses
|
+ `object-top` so letter salutations stay visible; otherwise we fall back
|
||||||
`mix-blend-multiply` to keep bright paper scans from glaring against the
|
to the file-type icon so the row never shows an empty rectangle. Dark mode
|
||||||
dark page background.
|
uses `mix-blend-multiply` to keep bright paper scans from glaring against
|
||||||
|
the dark page background.
|
||||||
-->
|
-->
|
||||||
<div
|
<div class={containerClass}>
|
||||||
class="relative h-[84px] w-[60px] flex-shrink-0 overflow-hidden rounded-sm border border-line bg-white"
|
|
||||||
>
|
|
||||||
{#if url}
|
{#if url}
|
||||||
<img
|
<img
|
||||||
src={url}
|
src={url}
|
||||||
@@ -41,7 +47,7 @@ const url = $derived(thumbnailUrl(doc));
|
|||||||
viewBox="0 0 24 24"
|
viewBox="0 0 24 24"
|
||||||
stroke-width="1.5"
|
stroke-width="1.5"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
class="h-8 w-8"
|
class={iconClass}
|
||||||
>
|
>
|
||||||
<path
|
<path
|
||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
|
|||||||
Reference in New Issue
Block a user