tercul-frontend/COMPONENT-STRUCTURE.md
Damir Mukimov 4a23f496fa
Major frontend development updates
- Enhanced annotation system with improved inline editing
- Updated author components with new card and header designs
- Improved reading view with enhanced line numbering and controls
- Added new blog management features and tag management
- Updated UI components with improved accessibility and styling
- Enhanced search functionality with better filtering
- Added new dashboard features and activity feeds
- Improved translation selector and work comparison tools
- Updated GraphQL integration and API hooks
- Enhanced responsive design and mobile experience
2025-11-27 03:44:09 +01:00

186 lines
6.4 KiB
Markdown

# Tercul Component Structure
## Overview
The component structure has been reorganized to improve maintainability, scalability, and code reuse. Components are organized by their domain and functionality.
## Directory Structure
### UI Components (`/components/ui`)
Basic, reusable UI components with minimal business logic. These serve as building blocks for more complex components.
- **Typography Components** (`/components/ui/typography`)
- heading.tsx - For h1-h6 headings with consistent styling
- paragraph.tsx - For text content with various styles
- quote.tsx - For blockquotes and citations
- code-block.tsx - For code snippets
- **Data Display Components**
- stat-card.tsx - For displaying statistics
- timeline.tsx - For chronological events visualization
- tree-view.tsx - For hierarchical data
- tag-cloud.tsx - For tag visualization
- file-viewer.tsx - For previewing documents
- code-highlighter.tsx - For syntax highlighting
- **Feedback Components**
- empty-state.tsx - For when no data is available
- error-state.tsx - For error handling
- loading-spinner.tsx - For loading indicators
- status-indicator.tsx - For success/failure states
- confirmation-dialog.tsx - For user confirmations
- **Navigation Components**
- stepper.tsx - For multi-step processes
- vertical-navigation.tsx - For side navigation
- breadcrumbs.tsx - For navigation trails
- **Form Components**
- rich-text-editor.tsx - For content creation
- tag-input.tsx - For adding/managing tags
- date-range-picker.tsx - For date selection
- file-uploader.tsx - For file uploads
- multi-select.tsx - For multiple selections
- autocomplete.tsx - For search suggestions
- form-wizard.tsx - For multi-step forms
- **Layout Components**
- grid.tsx - For grid layouts
- masonry.tsx - For pinterest-style layouts
- split-pane.tsx - For resizable panels
- spotlight.tsx - For featured content
- responsive-container.tsx - For responsive design
- **Specialized Components**
- color-picker.tsx - For color selection
- rating.tsx - For rating inputs
- comparison-slider.tsx - For before/after comparisons
- share-buttons.tsx - For social sharing
- expandable-search.tsx - For search interfaces
- notification-badge.tsx - For alerts/notifications
### Domain-Specific Components
#### Blog Components (`/components/blog`)
Components specific to the blog functionality.
- blog-editor.tsx - For creating/editing blog posts
- blog-preview.tsx - For displaying blog post cards
- tag-manager.tsx - For managing post tags
- publication-scheduler.tsx - For scheduling posts
- featured-post.tsx - For highlighting posts
#### Dashboard Components (`/components/dashboard`)
Components for the editorial dashboard.
- stats-card.tsx - For dashboard statistics
- activity-feed.tsx - For recent activities
- content-queue.tsx - For approval workflows
- stats-chart.tsx - For data visualization
- dashboard-header.tsx - For dashboard navigation
- role-badge.tsx - For user role indication
#### Work Components (`/components/work`)
Components for literary works management and display.
- work-editor.tsx - For creating/editing works
- work-header.tsx - For work metadata display
- work-status.tsx - For publication status
- related-works.tsx - For similar works
- comparison-view.tsx - For comparing translations
- EnhancedReadingView.tsx - Enhanced reading experience
- LineNumberedText.tsx - Text with line numbers
- EnhancedLineNumberedText.tsx - Advanced text display
- TranslationSelector.tsx - For selecting translations
- ReadingControls.tsx - Reading interface controls
- ReadingView.tsx - Main reading component
- WorkCard.tsx - Work preview card
#### Author Components (`/components/authors`)
Components for author profiles and management.
- author-editor.tsx - For creating/editing authors
- author-card.tsx - Author preview card
- author-header.tsx - Author profile header
- author-stats.tsx - Author statistics
- related-authors.tsx - Similar authors
- AuthorTimeline.tsx - Author timeline component
- AuthorChip.tsx - Small author reference
#### Comment Components (`/components/comment`)
Components for the comment system.
- comment-thread.tsx - Threaded comments
- comment-editor.tsx - For writing comments
- moderation-tools.tsx - For moderating comments
- comment-filters.tsx - For filtering comments
#### Annotation Components (`/components/annotation`)
Components for the annotation system.
- AnnotationSystem.tsx - Main annotation component
- annotation-editor.tsx - For creating annotations
- annotation-browser.tsx - For browsing annotations
- inline-form.tsx - For inline annotation creation
- annotation-filters.tsx - For filtering annotations
#### User Components (`/components/user`)
Components for user profiles and management.
- profile-card.tsx - User profile display
- user-avatar.tsx - User avatar with status
- reading-progress.tsx - Reading progress tracker
- bookmarks-manager.tsx - Bookmarks interface
- preferences-form.tsx - User settings
#### Search Components (`/components/search`)
Components for search functionality.
- SearchBar.tsx - Main search input
- advanced-search.tsx - Advanced search interface
- search-filters.tsx - Search filter controls
- results-toggle.tsx - Grid/list view toggle
- pagination.tsx - Result pagination
- sort-controls.tsx - Result sorting
- FilterSidebar.tsx - Sidebar with filters
#### Pattern Components (`/components/patterns`)
Reusable component patterns and combinations.
- empty-states.tsx - Empty state patterns
- modal-forms.tsx - Modal dialog forms
- action-toolbar.tsx - Action button groups
- filter-controls.tsx - Standardized filters
- card-grid.tsx - Grid of cards
### Layout Components (`/components/layout`)
Components for page layout.
- PageLayout.tsx - Standard page wrapper
- DashboardLayout.tsx - Dashboard layout
- Footer.tsx - Site footer
- NavHeader.tsx - Navigation header
## Implementation Status
Most components are currently empty placeholder files. The implementation priority should follow the order outlined in the COMPONENT-IMPLEMENTATION-PLAN.md document.
## Key Benefits of This Structure
1. **Separation of Concerns**: UI components are separate from domain-specific components
2. **Reusability**: Common patterns are extracted into reusable components
3. **Discoverability**: Developers can easily find components by their domain
4. **Maintainability**: Related components are grouped together
5. **Scalability**: New domains can be added without affecting existing structure