From 8e1b6b400984025b6a360f91e77af30fac8d89df Mon Sep 17 00:00:00 2001 From: Richard R Date: Tue, 17 Feb 2026 18:29:54 -0700 Subject: [PATCH] refactor: Move document-related components into a dedicated `documents` subdirectory and update imports. --- src/app/(app)/epub/[id]/page.tsx | 6 ++-- src/app/(app)/html/[id]/page.tsx | 6 ++-- src/app/(app)/pdf/[id]/page.tsx | 6 ++-- src/components/HomeContent.tsx | 2 +- src/components/SettingsModal.tsx | 2 +- src/components/doclist/DocumentList.tsx | 4 +-- .../{ => documents}/DocumentHeaderMenu.tsx | 2 +- .../DocumentSelectionModal.tsx | 0 .../{ => documents}/DocumentSettings.tsx | 0 .../{ => documents}/DocumentSkeleton.tsx | 0 .../{ => documents}/DocumentUploader.tsx | 0 .../{ => documents}/ZoomControl.tsx | 0 src/components/views/EPUBViewer.tsx | 2 +- src/components/views/HTMLViewer.tsx | 28 +++++++++---------- src/components/views/PDFViewer.tsx | 2 +- 15 files changed, 30 insertions(+), 30 deletions(-) rename src/components/{ => documents}/DocumentHeaderMenu.tsx (98%) rename src/components/{ => documents}/DocumentSelectionModal.tsx (100%) rename src/components/{ => documents}/DocumentSettings.tsx (100%) rename src/components/{ => documents}/DocumentSkeleton.tsx (100%) rename src/components/{ => documents}/DocumentUploader.tsx (100%) rename src/components/{ => documents}/ZoomControl.tsx (100%) diff --git a/src/app/(app)/epub/[id]/page.tsx b/src/app/(app)/epub/[id]/page.tsx index f80e05f..09c281e 100644 --- a/src/app/(app)/epub/[id]/page.tsx +++ b/src/app/(app)/epub/[id]/page.tsx @@ -4,14 +4,14 @@ import { useParams, useRouter } from "next/navigation"; import Link from 'next/link'; import { useCallback, useEffect, useRef, useState } from 'react'; import { useEPUB } from '@/contexts/EPUBContext'; -import { DocumentSkeleton } from '@/components/DocumentSkeleton'; +import { DocumentSkeleton } from '@/components/documents/DocumentSkeleton'; import { EPUBViewer } from '@/components/views/EPUBViewer'; -import { DocumentSettings } from '@/components/DocumentSettings'; +import { DocumentSettings } from '@/components/documents/DocumentSettings'; import { Header } from '@/components/Header'; import { useTTS } from "@/contexts/TTSContext"; import TTSPlayer from '@/components/player/TTSPlayer'; import { RateLimitPauseButton } from '@/components/player/RateLimitPauseButton'; -import { DocumentHeaderMenu } from '@/components/DocumentHeaderMenu'; +import { DocumentHeaderMenu } from '@/components/documents/DocumentHeaderMenu'; import { AudiobookExportModal } from '@/components/AudiobookExportModal'; import type { TTSAudiobookChapter } from '@/types/tts'; import type { AudiobookGenerationSettings } from '@/types/client'; diff --git a/src/app/(app)/html/[id]/page.tsx b/src/app/(app)/html/[id]/page.tsx index f7922fd..50c14e8 100644 --- a/src/app/(app)/html/[id]/page.tsx +++ b/src/app/(app)/html/[id]/page.tsx @@ -4,15 +4,15 @@ import { useParams, useRouter } from "next/navigation"; import Link from 'next/link'; import { useCallback, useEffect, useRef, useState } from 'react'; import { useHTML } from '@/contexts/HTMLContext'; -import { DocumentSkeleton } from '@/components/DocumentSkeleton'; +import { DocumentSkeleton } from '@/components/documents/DocumentSkeleton'; import { HTMLViewer } from '@/components/views/HTMLViewer'; -import { DocumentSettings } from '@/components/DocumentSettings'; +import { DocumentSettings } from '@/components/documents/DocumentSettings'; import { RateLimitPauseButton } from '@/components/player/RateLimitPauseButton'; import { Header } from '@/components/Header'; import { useTTS } from "@/contexts/TTSContext"; import TTSPlayer from '@/components/player/TTSPlayer'; import { resolveDocumentId } from '@/lib/dexie'; -import { DocumentHeaderMenu } from '@/components/DocumentHeaderMenu'; +import { DocumentHeaderMenu } from '@/components/documents/DocumentHeaderMenu'; import { RateLimitBanner } from '@/components/auth/RateLimitBanner'; import { useAuthRateLimit } from '@/contexts/AuthRateLimitContext'; diff --git a/src/app/(app)/pdf/[id]/page.tsx b/src/app/(app)/pdf/[id]/page.tsx index 45ca251..69661cf 100644 --- a/src/app/(app)/pdf/[id]/page.tsx +++ b/src/app/(app)/pdf/[id]/page.tsx @@ -5,10 +5,10 @@ import { usePDF } from '@/contexts/PDFContext'; import { useParams, useRouter } from 'next/navigation'; import Link from 'next/link'; import { useCallback, useEffect, useRef, useState } from 'react'; -import { DocumentSkeleton } from '@/components/DocumentSkeleton'; +import { DocumentSkeleton } from '@/components/documents/DocumentSkeleton'; import { useTTS } from '@/contexts/TTSContext'; -import { DocumentSettings } from '@/components/DocumentSettings'; -import { DocumentHeaderMenu } from '@/components/DocumentHeaderMenu'; +import { DocumentSettings } from '@/components/documents/DocumentSettings'; +import { DocumentHeaderMenu } from '@/components/documents/DocumentHeaderMenu'; import { Header } from '@/components/Header'; import { AudiobookExportModal } from '@/components/AudiobookExportModal'; import type { TTSAudiobookChapter } from '@/types/tts'; diff --git a/src/components/HomeContent.tsx b/src/components/HomeContent.tsx index 6d1769d..02255bd 100644 --- a/src/components/HomeContent.tsx +++ b/src/components/HomeContent.tsx @@ -1,6 +1,6 @@ 'use client'; -import { DocumentUploader } from '@/components/DocumentUploader'; +import { DocumentUploader } from '@/components/documents/DocumentUploader'; import { DocumentList } from '@/components/doclist/DocumentList'; import { DocumentListSkeleton } from '@/components/doclist/DocumentListSkeleton'; import { useDocuments } from '@/contexts/DocumentContext'; diff --git a/src/components/SettingsModal.tsx b/src/components/SettingsModal.tsx index d043fd6..beaf3c9 100644 --- a/src/components/SettingsModal.tsx +++ b/src/components/SettingsModal.tsx @@ -29,7 +29,7 @@ import { ConfirmDialog } from '@/components/ConfirmDialog'; import { ProgressPopup } from '@/components/ProgressPopup'; import { useTimeEstimation } from '@/hooks/useTimeEstimation'; import { THEMES } from '@/contexts/ThemeContext'; -import { DocumentSelectionModal } from '@/components/DocumentSelectionModal'; +import { DocumentSelectionModal } from '@/components/documents/DocumentSelectionModal'; import { BaseDocument } from '@/types/documents'; import { getAuthClient } from '@/lib/auth-client'; import { useAuthSession } from '@/hooks/useAuthSession'; diff --git a/src/components/doclist/DocumentList.tsx b/src/components/doclist/DocumentList.tsx index fce1c87..5d1417d 100644 --- a/src/components/doclist/DocumentList.tsx +++ b/src/components/doclist/DocumentList.tsx @@ -13,7 +13,7 @@ import { SortControls } from '@/components/doclist/SortControls'; import { CreateFolderDialog } from '@/components/doclist/CreateFolderDialog'; import { DocumentListSkeleton } from '@/components/doclist/DocumentListSkeleton'; import { Button } from '@headlessui/react'; -import { DocumentUploader } from '@/components/DocumentUploader'; +import { DocumentUploader } from '@/components/documents/DocumentUploader'; type DocumentToDelete = { id: string; @@ -318,7 +318,7 @@ export function DocumentList() { onViewModeChange={setViewMode} /> - +

{summaryParts.join(' • ')}{summaryParts.length ? ' • ' : ''}{totalSizeMB} MB total

diff --git a/src/components/DocumentHeaderMenu.tsx b/src/components/documents/DocumentHeaderMenu.tsx similarity index 98% rename from src/components/DocumentHeaderMenu.tsx rename to src/components/documents/DocumentHeaderMenu.tsx index 2e8bfe0..f1606c4 100644 --- a/src/components/DocumentHeaderMenu.tsx +++ b/src/components/documents/DocumentHeaderMenu.tsx @@ -3,7 +3,7 @@ import { Menu, MenuButton, MenuItem, MenuItems, Transition } from '@headlessui/react'; import { Fragment } from 'react'; import { DotsVerticalIcon, FileSettingsIcon, DownloadIcon } from '@/components/icons/Icons'; -import { ZoomControl } from '@/components/ZoomControl'; +import { ZoomControl } from '@/components/documents/ZoomControl'; import { UserMenu } from '@/components/auth/UserMenu'; interface DocumentHeaderMenuProps { diff --git a/src/components/DocumentSelectionModal.tsx b/src/components/documents/DocumentSelectionModal.tsx similarity index 100% rename from src/components/DocumentSelectionModal.tsx rename to src/components/documents/DocumentSelectionModal.tsx diff --git a/src/components/DocumentSettings.tsx b/src/components/documents/DocumentSettings.tsx similarity index 100% rename from src/components/DocumentSettings.tsx rename to src/components/documents/DocumentSettings.tsx diff --git a/src/components/DocumentSkeleton.tsx b/src/components/documents/DocumentSkeleton.tsx similarity index 100% rename from src/components/DocumentSkeleton.tsx rename to src/components/documents/DocumentSkeleton.tsx diff --git a/src/components/DocumentUploader.tsx b/src/components/documents/DocumentUploader.tsx similarity index 100% rename from src/components/DocumentUploader.tsx rename to src/components/documents/DocumentUploader.tsx diff --git a/src/components/ZoomControl.tsx b/src/components/documents/ZoomControl.tsx similarity index 100% rename from src/components/ZoomControl.tsx rename to src/components/documents/ZoomControl.tsx diff --git a/src/components/views/EPUBViewer.tsx b/src/components/views/EPUBViewer.tsx index 3c38034..615ec0b 100644 --- a/src/components/views/EPUBViewer.tsx +++ b/src/components/views/EPUBViewer.tsx @@ -5,7 +5,7 @@ import dynamic from 'next/dynamic'; import { useEPUB } from '@/contexts/EPUBContext'; import { useTTS } from '@/contexts/TTSContext'; import { useConfig } from '@/contexts/ConfigContext'; -import { DocumentSkeleton } from '@/components/DocumentSkeleton'; +import { DocumentSkeleton } from '@/components/documents/DocumentSkeleton'; import { useEPUBTheme, getThemeStyles } from '@/hooks/epub/useEPUBTheme'; import { useEPUBResize } from '@/hooks/epub/useEPUBResize'; import { DotsVerticalIcon, ChevronLeftIcon, ChevronRightIcon } from '@/components/icons/Icons'; diff --git a/src/components/views/HTMLViewer.tsx b/src/components/views/HTMLViewer.tsx index 1f0cbc6..959ee79 100644 --- a/src/components/views/HTMLViewer.tsx +++ b/src/components/views/HTMLViewer.tsx @@ -4,7 +4,7 @@ import { useRef } from 'react'; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; import { useHTML } from '@/contexts/HTMLContext'; -import { DocumentSkeleton } from '@/components/DocumentSkeleton'; +import { DocumentSkeleton } from '@/components/documents/DocumentSkeleton'; interface HTMLViewerProps { className?: string; @@ -19,21 +19,21 @@ export function HTMLViewer({ className = '' }: HTMLViewerProps) { } // Check if the file is a txt file - const isTxtFile = currDocName?.toLowerCase().endsWith('.txt'); + const isTxtFile = currDocName?.toLowerCase().endsWith('.txt'); - return ( -
-
-
- {isTxtFile ? ( - currDocData - ) : ( - - {currDocData} - - )} -
+ return ( +
+
+
+ {isTxtFile ? ( + currDocData + ) : ( + + {currDocData} + + )}
+
); } diff --git a/src/components/views/PDFViewer.tsx b/src/components/views/PDFViewer.tsx index 93672a6..805bb1c 100644 --- a/src/components/views/PDFViewer.tsx +++ b/src/components/views/PDFViewer.tsx @@ -5,7 +5,7 @@ import { Document, Page } from 'react-pdf'; import type { Dest } from 'react-pdf/src/shared/types.js'; import 'react-pdf/dist/Page/AnnotationLayer.css'; import 'react-pdf/dist/Page/TextLayer.css'; -import { DocumentSkeleton } from '@/components/DocumentSkeleton'; +import { DocumentSkeleton } from '@/components/documents/DocumentSkeleton'; import { useTTS } from '@/contexts/TTSContext'; import { usePDF } from '@/contexts/PDFContext'; import { useConfig } from '@/contexts/ConfigContext';