From 2ee69406b60490f81c0ef695b25fc297fab1eed3 Mon Sep 17 00:00:00 2001 From: Nils Schneider Date: Mon, 3 Nov 2025 00:17:00 +0100 Subject: [PATCH] stuff --- frontend/src/DesktopWorkspace.css | 33 ++ frontend/src/DesktopWorkspace.jsx | 17 ++ frontend/src/app/AppLayout.jsx | 148 +-------- frontend/src/app/useDocumentSelection.js | 4 +- frontend/src/documents/DocumentsGrid.jsx | 215 ++++++++++++- frontend/src/documents/DocumentsList.jsx | 353 ++++++++++++++-------- frontend/src/documents/DocumentsPanel.jsx | 16 +- frontend/src/documents/useInlineRename.js | 133 ++++++++ frontend/src/styles.css | 76 ++++- 9 files changed, 720 insertions(+), 275 deletions(-) create mode 100644 frontend/src/documents/useInlineRename.js diff --git a/frontend/src/DesktopWorkspace.css b/frontend/src/DesktopWorkspace.css index 6489c37..4aecad2 100644 --- a/frontend/src/DesktopWorkspace.css +++ b/frontend/src/DesktopWorkspace.css @@ -111,6 +111,39 @@ transition: transform 0.28s ease; } +.desk-item__correspondents { + position: absolute; + bottom: 0; + left: 0; + display: flex; + flex-direction: column; + gap: 0.35rem; + align-items: flex-start; + transform-origin: bottom left; + transform: translate(0.5em, -0.5em); + pointer-events: none; +} + +.desk-correspondent-chip { + pointer-events: none; + font-size: 0.82rem; + padding: 0.18rem 0.55rem; + max-width: min(16rem, 80%); + display: inline-flex; + align-items: center; + overflow: hidden; + box-shadow: 2px 2px 4px var(--shadow-faint); + background: color-mix(in oklch, var(--surface-subtle) 88%, transparent); + color: var(--muted); +} + +.desk-correspondent-chip__label { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + .tag-chip--draggable { user-select: none; diff --git a/frontend/src/DesktopWorkspace.jsx b/frontend/src/DesktopWorkspace.jsx index 6c50014..3df97ea 100644 --- a/frontend/src/DesktopWorkspace.jsx +++ b/frontend/src/DesktopWorkspace.jsx @@ -12,6 +12,7 @@ import { useAssetNavigator } from './hooks/useAssetNavigator'; import { ArrowLeftIcon, ArrowRightIcon, CloseIcon } from './ui/icons'; import { createDocumentsTableHeaderActions } from './documents/DocumentsPanel'; import createWorkspaceSurfaceConfig from './documents/workspaceHeader'; +import { resolveCorrespondents } from './documents/correspondents'; import DetailPanel from './detail/DetailPanel'; import { clamp, formatTransform } from './desktop/math'; import { preventAll } from './desktop/events'; @@ -2204,6 +2205,7 @@ const DesktopWorkspaceView = () => { const shouldLoad = docKey ? visibleDocIds.has(docKey) : false; const dragging = draggingId === doc.id; const tags = Array.isArray(doc.tags) ? doc.tags : []; + const correspondents = resolveCorrespondents(doc); const docTagKeys = tags .map((tag) => (tag ? tag.id : null)) .filter(Boolean); @@ -2298,6 +2300,21 @@ const DesktopWorkspaceView = () => { onNavigatorSnapshot={handleNavigatorSnapshot} shouldLoad={shouldLoad} /> + {correspondents.length > 0 && ( + + )} {tags.length > 0 && (