feat: update frontend for document handling and styling.
This commit is contained in:
@@ -4,7 +4,7 @@ import { useNavigate } from 'react-router-dom';
|
|||||||
import {
|
import {
|
||||||
DocumentsFilterProvider,
|
DocumentsFilterProvider,
|
||||||
} from '../documents/context/DocumentsFilterContext';
|
} from '../documents/context/DocumentsFilterContext';
|
||||||
import { PreviewProvider, usePreviewContext } from '../preview/PreviewContext';
|
import { PreviewProvider, usePreviewContext } from '../viewer/PreviewContext';
|
||||||
import { DocumentOpenProvider } from '../lib/context/DocumentOpenContext';
|
import { DocumentOpenProvider } from '../lib/context/DocumentOpenContext';
|
||||||
import { useWorkspaceSurface } from './useWorkspaceSurface';
|
import { useWorkspaceSurface } from './useWorkspaceSurface';
|
||||||
import { DocumentsHeaderBreadcrumb } from '../documents/panel/DocumentsPanelHeader';
|
import { DocumentsHeaderBreadcrumb } from '../documents/panel/DocumentsPanelHeader';
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { useCallback, useEffect, useMemo } from 'react';
|
|||||||
import type { ComponentProps, ReactNode } from 'react';
|
import type { ComponentProps, ReactNode } from 'react';
|
||||||
import { SidebarExpandIcon } from '../components/icons';
|
import { SidebarExpandIcon } from '../components/icons';
|
||||||
import DocumentsPanel from '../documents/panel/DocumentsPanel';
|
import DocumentsPanel from '../documents/panel/DocumentsPanel';
|
||||||
import DocumentViewerPanel from '../preview/DocumentViewerPanel';
|
import DocumentViewerPanel from '../viewer/DocumentViewerPanel';
|
||||||
import { usePanelManager } from './PanelManagerContext';
|
import { usePanelManager } from './PanelManagerContext';
|
||||||
import { FolderManagerProvider } from '../folders/FolderManagerContext';
|
import { FolderManagerProvider } from '../folders/FolderManagerContext';
|
||||||
import type { Identifier } from '../types/identifiers';
|
import type { Identifier } from '../types/identifiers';
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ import useDocumentTagActions from '../features/tagging/useDocumentTagActions';
|
|||||||
import useDocumentUploads from '../features/upload/useDocumentUploads';
|
import useDocumentUploads from '../features/upload/useDocumentUploads';
|
||||||
import useDocumentDragHandlers from '../features/upload/useDocumentDragHandlers';
|
import useDocumentDragHandlers from '../features/upload/useDocumentDragHandlers';
|
||||||
import useDocumentMutations from './useDocumentMutations';
|
import useDocumentMutations from './useDocumentMutations';
|
||||||
import useDetailWorkspace from '../../detail/useDetailWorkspace';
|
import useDetailWorkspace from '../../viewer/logic/useDetailWorkspace';
|
||||||
import useWorkspaceTaxonomies from './useWorkspaceTaxonomies';
|
import useWorkspaceTaxonomies from './useWorkspaceTaxonomies';
|
||||||
import useWorkspaceBreadcrumbs from '../logic/useWorkspaceBreadcrumbs';
|
import useWorkspaceBreadcrumbs from '../logic/useWorkspaceBreadcrumbs';
|
||||||
import useWorkspaceSelectionSync from '../features/selection/useWorkspaceSelectionSync';
|
import useWorkspaceSelectionSync from '../features/selection/useWorkspaceSelectionSync';
|
||||||
|
|||||||
@@ -2,17 +2,17 @@
|
|||||||
@import './base/controls.css';
|
@import './base/controls.css';
|
||||||
@import './layout/panel-header-controls.css';
|
@import './layout/panel-header-controls.css';
|
||||||
@import './components/resize-handle.css';
|
@import './components/resize-handle.css';
|
||||||
@import './preview/preview-zoom.css';
|
@import './viewer/preview-zoom.css';
|
||||||
@import './base/iconography.css';
|
@import './base/iconography.css';
|
||||||
@import '../documents/styles/controls.css';
|
@import '../documents/styles/controls.css';
|
||||||
@import './layout/structure.css';
|
@import './layout/structure.css';
|
||||||
@import '../documents/styles/viewer.css';
|
@import '../viewer/styles/viewer.css';
|
||||||
@import '../documents/styles/drag-preview.css';
|
@import '../documents/styles/drag-preview.css';
|
||||||
@import '../documents/styles/tags-correspondents.css';
|
@import '../documents/styles/tags-correspondents.css';
|
||||||
@import '../documents/styles/panel-sections.css';
|
@import '../documents/styles/panel-sections.css';
|
||||||
@import '../sidebar/sidebar.css';
|
@import '../sidebar/sidebar.css';
|
||||||
@import '../documents/styles/listing.css';
|
@import '../documents/styles/listing.css';
|
||||||
@import '../detail/detail-panels.css';
|
@import '../viewer/styles/detail-panels.css';
|
||||||
@import './forms/elements.css';
|
@import './forms/elements.css';
|
||||||
@import './modals/status-drop.css';
|
@import './modals/status-drop.css';
|
||||||
@import '../settings/settings.css';
|
@import '../settings/settings.css';
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
import { useCallback, useMemo, useRef } from 'react';
|
import { useCallback, useMemo, useRef } from 'react';
|
||||||
import type { JSX } from 'react';
|
import type { JSX } from 'react';
|
||||||
import DocumentInfoPanel from '../documents/DocumentInfoPanel';
|
import DocumentInfoPanel from './components/DocumentInfoPanel';
|
||||||
import UnifiedDocumentViewer from './UnifiedDocumentViewer';
|
import UnifiedDocumentViewer from './UnifiedDocumentViewer';
|
||||||
|
|
||||||
import type { Document } from '../types/documents';
|
import type { Document } from '../types/documents';
|
||||||
+4
-4
@@ -14,10 +14,10 @@ import {
|
|||||||
import {
|
import {
|
||||||
buildCorrespondentOptions,
|
buildCorrespondentOptions,
|
||||||
sortCorrespondents,
|
sortCorrespondents,
|
||||||
} from '../documents/DocumentSummarySection';
|
} from './components/DocumentSummarySection';
|
||||||
import { usePreviewContext } from '../preview/PreviewContext';
|
import { usePreviewContext } from './PreviewContext';
|
||||||
import type { DocumentSummarySectionProps } from '../documents/DocumentSummarySection';
|
import type { DocumentSummarySectionProps } from './components/DocumentSummarySection';
|
||||||
import { extractDocumentMetadataPayload } from '../documents/documentSummary';
|
import { extractDocumentMetadataPayload } from './logic/documentSummary';
|
||||||
import { createDocumentActionState } from '../documents/documentActions';
|
import { createDocumentActionState } from '../documents/documentActions';
|
||||||
import { resolveDocumentAssetUrl } from '../lib/assets/AssetManager';
|
import { resolveDocumentAssetUrl } from '../lib/assets/AssetManager';
|
||||||
import PanelHeader from '../components/PanelHeader';
|
import PanelHeader from '../components/PanelHeader';
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import React, { useState, useCallback, useMemo, useRef } from 'react';
|
import React, { useState, useCallback, useMemo, useRef } from 'react';
|
||||||
import PreviewZoomOverlay from '../detail/PreviewZoomOverlay';
|
import PreviewZoomOverlay from './components/PreviewZoomOverlay';
|
||||||
import type { Document } from '../types/documents';
|
import type { Document } from '../types/documents';
|
||||||
import type { Identifier } from '../types/identifiers';
|
import type { Identifier } from '../types/identifiers';
|
||||||
import { createSafeContext } from '../utils/createSafeContext';
|
import { createSafeContext } from '../utils/createSafeContext';
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
import DocumentSummarySection, { DocumentSummarySectionProps } from './DocumentSummarySection';
|
import DocumentSummarySection, { DocumentSummarySectionProps } from './DocumentSummarySection';
|
||||||
import { describeDocumentSummary, extractDocumentMetadataPayload, type DocumentSummaryRow } from './documentSummary';
|
import { describeDocumentSummary, extractDocumentMetadataPayload, type DocumentSummaryRow } from '../logic/documentSummary';
|
||||||
|
|
||||||
type PanelTab = { id: string; label: string; render: (context?: Record<string, unknown>) => ReactNode };
|
type PanelTab = { id: string; label: string; render: (context?: Record<string, unknown>) => ReactNode };
|
||||||
|
|
||||||
+9
-9
@@ -1,21 +1,21 @@
|
|||||||
import React, { useCallback, useEffect, useMemo, useState, type FormEvent } from 'react';
|
import React, { useCallback, useEffect, useMemo, useState, type FormEvent } from 'react';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { EditIcon, IconX, PlusIcon } from '../components/icons';
|
import { EditIcon, IconX, PlusIcon } from '../../components/icons';
|
||||||
import InlineRenameInput from './components/InlineRenameInput';
|
import InlineRenameInput from '../../documents/components/InlineRenameInput';
|
||||||
import SelectionAssignmentMenu, {
|
import SelectionAssignmentMenu, {
|
||||||
SelectionAssignmentMenuItem,
|
SelectionAssignmentMenuItem,
|
||||||
type NormalizedSelectionAssignmentItem,
|
type NormalizedSelectionAssignmentItem,
|
||||||
} from './features/selection/SelectionAssignmentMenu';
|
} from '../../documents/features/selection/SelectionAssignmentMenu';
|
||||||
import { getTagColorStyle } from '../utils/colors';
|
import { getTagColorStyle } from '../../utils/colors';
|
||||||
import {
|
import {
|
||||||
formatDate,
|
formatDate,
|
||||||
toDateInputValue,
|
toDateInputValue,
|
||||||
toIssuedTimestamp,
|
toIssuedTimestamp,
|
||||||
} from '../utils/date';
|
} from '../../utils/date';
|
||||||
import { describeDocumentSummary, type DocumentSummaryRow } from './documentSummary';
|
import { describeDocumentSummary, type DocumentSummaryRow } from '../logic/documentSummary';
|
||||||
|
|
||||||
import { useFolderManager } from '../folders/FolderManagerContext';
|
import { useFolderManager } from '../../folders/FolderManagerContext';
|
||||||
import type { FolderId, Identifier, TagId } from '../types/identifiers';
|
import type { FolderId, Identifier, TagId } from '../../types/identifiers';
|
||||||
|
|
||||||
interface TagEntry {
|
interface TagEntry {
|
||||||
id?: TagId;
|
id?: TagId;
|
||||||
@@ -29,7 +29,7 @@ interface CorrespondentEntry {
|
|||||||
count?: number;
|
count?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
import type { Document } from '../types/documents';
|
import type { Document } from '../../types/documents';
|
||||||
|
|
||||||
interface TagSectionProps {
|
interface TagSectionProps {
|
||||||
tags?: TagEntry[];
|
tags?: TagEntry[];
|
||||||
+4
-4
@@ -1,10 +1,10 @@
|
|||||||
import React, { useEffect, useRef, useState } from 'react';
|
import React, { useEffect, useRef, useState } from 'react';
|
||||||
import { createPortal } from 'react-dom';
|
import { createPortal } from 'react-dom';
|
||||||
import UnifiedDocumentViewer from '../preview/UnifiedDocumentViewer';
|
import UnifiedDocumentViewer from '../UnifiedDocumentViewer';
|
||||||
import PanelHeader from '../components/PanelHeader';
|
import PanelHeader from '../../components/PanelHeader';
|
||||||
import { IconX, DownloadIcon, FileInfoIcon } from '../components/icons';
|
import { IconX, DownloadIcon, FileInfoIcon } from '../../components/icons';
|
||||||
|
|
||||||
import type { Document } from '../types/documents';
|
import type { Document } from '../../types/documents';
|
||||||
|
|
||||||
interface PreviewZoomOverlayProps {
|
interface PreviewZoomOverlayProps {
|
||||||
open?: boolean;
|
open?: boolean;
|
||||||
+4
-4
@@ -1,8 +1,8 @@
|
|||||||
import { formatFileSize } from '../utils/format';
|
import { formatFileSize } from '../../utils/format';
|
||||||
import { formatDateTime as defaultFormatDateTime } from '../utils/date';
|
import { formatDateTime as defaultFormatDateTime } from '../../utils/date';
|
||||||
import { DEFAULT_FOLDER_NAME } from '../app/workspaceUtils';
|
import { DEFAULT_FOLDER_NAME } from '../../app/workspaceUtils';
|
||||||
|
|
||||||
import type { DocumentTag, DocumentCorrespondent, Document } from '../types/documents';
|
import type { DocumentTag, DocumentCorrespondent, Document } from '../../types/documents';
|
||||||
|
|
||||||
interface DescribeSummaryOptions {
|
interface DescribeSummaryOptions {
|
||||||
formatDateTime?: typeof defaultFormatDateTime;
|
formatDateTime?: typeof defaultFormatDateTime;
|
||||||
+7
-7
@@ -1,12 +1,12 @@
|
|||||||
import { useCallback, useEffect, useMemo } from 'react';
|
import { useCallback, useEffect, useMemo } from 'react';
|
||||||
import type { MutableRefObject } from 'react';
|
import type { MutableRefObject } from 'react';
|
||||||
import { resolveDocumentAssetUrl } from '../lib/assets/AssetManager';
|
import { resolveDocumentAssetUrl } from '../../lib/assets/AssetManager';
|
||||||
import { useDetailPanel } from '../app/useDetailPanel';
|
import { useDetailPanel } from '../../app/useDetailPanel';
|
||||||
import { DEFAULT_FOLDER_NAME } from '../app/workspaceUtils';
|
import { DEFAULT_FOLDER_NAME } from '../../app/workspaceUtils';
|
||||||
import type { DocumentInfoPanelProps } from '../documents/DocumentInfoPanel';
|
import type { DocumentInfoPanelProps } from '../components/DocumentInfoPanel';
|
||||||
import type { EnsureAssetUrl, GetDocumentAsset } from '../utils/ocr';
|
import type { EnsureAssetUrl, GetDocumentAsset } from '../../utils/ocr';
|
||||||
import type { Identifier } from '../types/identifiers';
|
import type { Identifier } from '../../types/identifiers';
|
||||||
import type { Document } from '../types/documents';
|
import type { Document } from '../../types/documents';
|
||||||
|
|
||||||
interface FolderNode {
|
interface FolderNode {
|
||||||
id: Identifier | 'root';
|
id: Identifier | 'root';
|
||||||
Reference in New Issue
Block a user