diff --git a/frontend/src/app/AppLayout.jsx b/frontend/src/app/AppLayout.jsx index 09b0dfd..87e1c85 100644 --- a/frontend/src/app/AppLayout.jsx +++ b/frontend/src/app/AppLayout.jsx @@ -31,8 +31,6 @@ const AppLayout = () => { onToggleSearchIncludeDescendants: documentsPreferences.toggleSearchIncludeDescendants, onSetSearchIncludeDescendants: documentsPreferences.setSearchIncludeDescendants, sortRefreshReadyRef: documentsPreferences.sortRefreshReadyRef, - deskHelpOpen: documentsPreferences.deskHelpOpen, - setDeskHelpOpen: documentsPreferences.setDeskHelpOpen, handleDeskExit: documentsPreferences.handleDeskExit, }); diff --git a/frontend/src/app/useDocumentsPreferences.js b/frontend/src/app/useDocumentsPreferences.js index 89a139a..c02468f 100644 --- a/frontend/src/app/useDocumentsPreferences.js +++ b/frontend/src/app/useDocumentsPreferences.js @@ -42,17 +42,8 @@ export const useDocumentsPreferences = () => { return 'list'; }); - const [deskHelpOpen, setDeskHelpOpen] = useState(false); const lastNonDeskViewRef = useRef(documentsViewMode === 'desk' ? 'list' : documentsViewMode); - useEffect(() => { - if (documentsViewMode !== 'desk') { - lastNonDeskViewRef.current = documentsViewMode; - } else if (deskHelpOpen) { - setDeskHelpOpen(false); - } - }, [documentsViewMode, deskHelpOpen]); - const setDocumentsViewMode = useCallback((mode) => { const next = mode === 'grid' ? 'grid' : mode === 'desk' ? 'desk' : 'list'; setDocumentsViewModeState((previous) => { @@ -122,8 +113,6 @@ export const useDocumentsPreferences = () => { documentsViewMode, handleDocumentsViewModeChange: setDocumentsViewMode, handleDeskExit, - deskHelpOpen, - setDeskHelpOpen, documentsSortField, documentsSortDirection, documentsSortFieldRef, diff --git a/frontend/src/desktop/DesktopWorkspace.jsx b/frontend/src/desktop/DesktopWorkspace.jsx index c5924e9..7b94936 100644 --- a/frontend/src/desktop/DesktopWorkspace.jsx +++ b/frontend/src/desktop/DesktopWorkspace.jsx @@ -7,9 +7,7 @@ import React, { useState, useSyncExternalStore, } from 'react'; -import { createPortal } from 'react-dom'; import { resolveDocumentAssetUrl } from '../asset_manager'; -import { CloseIcon } from '../ui/icons'; import { formatTransform } from './math'; import useDocumentDrag from './useDocumentDrag'; import PreviewZoomOverlay from '../detail/PreviewZoomOverlay'; @@ -29,7 +27,6 @@ import usePreviewMetadata from './hooks/usePreviewMetadata'; import '../styles/workspace/workspace-layout.css'; import '../styles/workspace/workspace-items.css'; import '../styles/workspace/workspace-cards.css'; -import '../styles/workspace/workspace-overlays.css'; const DEBUG_DRAG = false; const DEBUG_FOCUS = false; @@ -50,8 +47,6 @@ const DesktopWorkspace = ({ onClearSelection = null, detailPanelOpen = false, onCloseDetailPanel = null, - helpOpen = false, - onHelpClose = null, tenantId = null, viewId = 'default', }) => { @@ -641,12 +636,7 @@ const DesktopWorkspace = ({ visibleDocIds, ], ); - return ( - <> - - - - ); + return ; }; const DesktopWorkspaceView = ({ @@ -897,107 +887,3 @@ const DesktopWorkspaceView = ({ }; export default DesktopWorkspace; - -const DesktopHelpOverlay = ({ open = false, onClose = null }) => { - const portalTarget = typeof document !== 'undefined' ? document.body : null; - const closeButtonRef = useRef(null); - const previousFocusRef = useRef(null); - - const handleClose = useCallback(() => { - if (typeof onClose === 'function') { - onClose(); - } - }, [onClose]); - - useEffect(() => { - if (!open || typeof window === 'undefined') { - return undefined; - } - - const handleKeyDown = (event) => { - if (!event) { - return; - } - if (event.key === 'Escape') { - event.preventDefault(); - handleClose(); - } - }; - - window.addEventListener('keydown', handleKeyDown, true); - return () => window.removeEventListener('keydown', handleKeyDown, true); - }, [open, handleClose]); - - useEffect(() => { - if (!open) { - const previous = previousFocusRef.current; - if (previous && typeof previous.focus === 'function') { - previous.focus(); - } - previousFocusRef.current = null; - return; - } - - if (typeof document !== 'undefined') { - previousFocusRef.current = document.activeElement instanceof HTMLElement - ? document.activeElement - : null; - } - - if (closeButtonRef.current && typeof closeButtonRef.current.focus === 'function') { - closeButtonRef.current.focus(); - } - }, [open]); - - if (!open || !portalTarget) { - return null; - } - - return createPortal( -
-
-
-
-

Desk view tips

- -
-
-

Use the desk as a freeform workspace for triage and quick comparisons.

-
    -
  • Single-click a document to open it in the detail panel.
  • -
  • Double-click to open the zoomed preview.
  • -
  • - Drag selected cards to reposition them; build a selection with - {' '} - Cmd/Ctrl - {' '}+ click or Shift-click. -
  • -
  • - Cmd/Ctrl + click with an empty selection scoops up the stack under - {' '}the pointer. -
  • -
  • Space clears the current selection.
  • -
  • - Drag tags from the sidebar onto a card to assign them, or fling a - {' '}tag away to remove it. -
  • -
-
-
- -
-
-
, - portalTarget, - ); -}; diff --git a/frontend/src/desktop/createDesktopSurface.js b/frontend/src/desktop/createDesktopSurface.js index 50a860a..1018c94 100644 --- a/frontend/src/desktop/createDesktopSurface.js +++ b/frontend/src/desktop/createDesktopSurface.js @@ -54,7 +54,6 @@ const createDesktopSurface = ({ viewMode: viewMode || 'desk', onViewModeChange, onRefresh, - onShowDeskHelp: viewMode === 'desk' ? workspaceProps?.onOpenHelp : null, includeDescendants: searchIncludeDescendants, onToggleIncludeDescendants: onToggleSearchIncludeDescendants, }); diff --git a/frontend/src/desktop/useDeskWorkspaceProps.js b/frontend/src/desktop/useDeskWorkspaceProps.js index 32782c5..8d8f634 100644 --- a/frontend/src/desktop/useDeskWorkspaceProps.js +++ b/frontend/src/desktop/useDeskWorkspaceProps.js @@ -46,8 +46,6 @@ const useDeskWorkspaceProps = ({ searchQuery, activeCorrespondentFilters, selectedFolder, - setDeskHelpOpen, - deskHelpOpen, openDetailPanel, }) => { const handleDeskDocumentStackSelect = useCallback( @@ -107,14 +105,6 @@ const useDeskWorkspaceProps = ({ [openDetailPanel, selectedDocumentIds], ); - const handleDeskHelpOpen = useCallback(() => { - setDeskHelpOpen(true); - }, [setDeskHelpOpen]); - - const handleDeskHelpClose = useCallback(() => { - setDeskHelpOpen(false); - }, [setDeskHelpOpen]); - const deskViewId = useMemo(() => { if (showingSearchResults) { const trimmedQuery = searchQuery.trim(); @@ -148,9 +138,6 @@ const useDeskWorkspaceProps = ({ onEntryPointer: handleEntryPointerCore, onDocumentStackSelect: handleDeskDocumentStackSelect, onPromoteSelection: promoteSelectionOrder, - onOpenHelp: handleDeskHelpOpen, - helpOpen: deskHelpOpen, - onHelpClose: handleDeskHelpClose, tenantId: currentTenantId, viewId: deskViewId, selectedDocumentIds, @@ -193,9 +180,6 @@ const useDeskWorkspaceProps = ({ handleEntryPointerCore, handleDeskDocumentStackSelect, promoteSelectionOrder, - handleDeskHelpOpen, - deskHelpOpen, - handleDeskHelpClose, currentTenantId, deskViewId, selectedDocumentIds, diff --git a/frontend/src/documents/panel/DocumentsToolbar.jsx b/frontend/src/documents/panel/DocumentsToolbar.jsx index e593be0..083a314 100644 --- a/frontend/src/documents/panel/DocumentsToolbar.jsx +++ b/frontend/src/documents/panel/DocumentsToolbar.jsx @@ -5,7 +5,6 @@ import { IconFileStack, RefreshIcon, MinusVerticalIcon, - InfoIcon, FoldersIcon, FoldersOffIcon, SortAscendingLettersIcon, @@ -17,7 +16,6 @@ export const createDocumentsTableHeaderActions = ({ viewMode, onViewModeChange, onRefresh, - onShowDeskHelp = null, sortField = 'title', onSortFieldChange = null, sortDirection = 'asc', @@ -78,22 +76,6 @@ export const createDocumentsTableHeaderActions = ({ return ( <> - {isDeskView && typeof onShowDeskHelp === 'function' ? ( - <> - - - - ) : null} {includeDescendantsToggle ? ( <> {includeDescendantsToggle} diff --git a/frontend/src/hooks/documents/useDocumentsWorkspace.js b/frontend/src/hooks/documents/useDocumentsWorkspace.js index 090a5c1..f79dc09 100644 --- a/frontend/src/hooks/documents/useDocumentsWorkspace.js +++ b/frontend/src/hooks/documents/useDocumentsWorkspace.js @@ -65,8 +65,6 @@ const useDocumentsWorkspace = ({ onToggleSearchIncludeDescendants, onSetSearchIncludeDescendants, sortRefreshReadyRef, - deskHelpOpen = false, - setDeskHelpOpen, handleDeskExit, } = {}) => { const handleDocumentsViewModeChange = onDocumentsViewModeChange || noop; @@ -74,7 +72,6 @@ const useDocumentsWorkspace = ({ const handleDocumentsSortDirectionToggle = onDocumentsSortDirectionToggle || noop; const toggleSearchIncludeDescendants = onToggleSearchIncludeDescendants || noop; const setSearchIncludeDescendants = onSetSearchIncludeDescendants || noop; - const setDeskHelpOpenSafe = setDeskHelpOpen || noop; const handleDeskExitSafe = handleDeskExit || noop; const fallbackSortFieldRef = useRef(documentsSortField); @@ -1446,8 +1443,6 @@ const useDocumentsWorkspace = ({ searchQuery, activeCorrespondentFilters, selectedFolder, - setDeskHelpOpen: setDeskHelpOpenSafe, - deskHelpOpen, openDetailPanel, }); diff --git a/frontend/src/settings/sections/ApiTokensSection.jsx b/frontend/src/settings/sections/ApiTokensSection.jsx index 141528e..b3ea68c 100644 --- a/frontend/src/settings/sections/ApiTokensSection.jsx +++ b/frontend/src/settings/sections/ApiTokensSection.jsx @@ -365,9 +365,6 @@ const ApiTokensSection = ({ const selectedSet = token?.capability_set_id ? capabilitySetMap[token.capability_set_id] : null; - const capabilityList = Array.isArray(token?.capabilities) && token.capabilities.length - ? token.capabilities - : selectedSet?.capabilities || []; const capabilitySetLabel = selectedSet?.label || selectedSet?.slug || token.capability_set_id diff --git a/frontend/src/styles/workspace/workspace-overlays.css b/frontend/src/styles/workspace/workspace-overlays.css deleted file mode 100644 index d612f55..0000000 --- a/frontend/src/styles/workspace/workspace-overlays.css +++ /dev/null @@ -1,94 +0,0 @@ -/* Workspace overlays (help, guidance, etc.) */ -.desk-help-overlay { - position: fixed; - inset: 0; - z-index: 2000000; - display: flex; - align-items: center; - justify-content: center; - padding: clamp(1.5rem, 4vw, 3rem); - pointer-events: none; -} - -.desk-help-overlay__backdrop { - position: absolute; - inset: 0; - background: var(--surface-overlay); - backdrop-filter: blur(8px); - pointer-events: auto; -} - -.desk-help-overlay__content { - position: relative; - width: min(640px, 92vw); - max-height: min(80vh, 640px); - background: var(--surface); - border: 1px solid var(--border); - box-shadow: 0 24px 64px var(--shadow-strong); - border-radius: 1.25rem; - display: flex; - flex-direction: column; - pointer-events: auto; - overflow: hidden; -} - -.desk-help-overlay__header, -.desk-help-overlay__footer { - display: flex; - align-items: center; - justify-content: space-between; - padding: 1rem 1.25rem; -} - -.desk-help-overlay__header { - border-bottom: 1px solid var(--border); -} - -.desk-help-overlay__header h2 { - margin: 0; - font-size: 1.15rem; - font-weight: 600; -} - -.desk-help-overlay__body { - padding: 1rem 1.25rem 1.5rem; - overflow-y: auto; - display: flex; - flex-direction: column; - gap: 0.75rem; - line-height: 1.55; -} - -.desk-help-overlay__body p { - margin: 0; - color: var(--muted); -} - -.desk-help-overlay__list { - margin: 0; - padding-left: 1.1rem; - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -.desk-help-overlay__list li { - color: var(--fg); -} - -.desk-help-overlay__body kbd { - display: inline-block; - padding: 0.15rem 0.4rem; - border-radius: 0.4rem; - border: 1px solid var(--border-strong); - background: var(--surface-subtle); - font-size: 0.85em; - line-height: 1; - font-family: inherit; -} - -.desk-help-overlay__footer { - border-top: 1px solid var(--border); - justify-content: flex-end; - gap: 0.5rem; -}