Move technical documentation from root directory to organized locations for better project structure and discoverability. Documentation Moved to docs/development/: - UserInterfaceFramework.md: UI component framework specification and architecture - LOST_FUNCTIONALITY_ANALYSIS.md: Technical analysis of recovered JavaScript functionality - TDD_COMPLIANCE_REPORT.md: Test-Driven Development methodology validation report Obsolete Documentation Archived: - TEST_ENVIRONMENT.md → history/javascript-dev-tests/ Manual testing environment docs (replaced by automated testing) Files Remaining in Root: - CHANGELOG.md: Project changelog (standard location) - TODO.md: Active project tasks (operational file) Benefits: - ✅ Clean root directory with only operational files - ✅ Technical documentation properly organized in docs/development/ - ✅ Obsolete docs archived with historical context - ✅ Improved project navigation and documentation discoverability - ✅ Follows standard project organization conventions Project Structure: - Root: Operational files (CHANGELOG, TODO) - docs/development/: Technical documentation and reports - history/: Archived development artifacts and obsolete documentation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
17 KiB
User Interface Framework Documentation
Overview
This document defines the canonical terminology and specifications for all UI components in the Markitect markdown editor interface. This framework establishes a common vocabulary for interface evolution discussions and future development.
Component Architecture
The editor interface consists of 6 main components organized in layers:
Layer Priority (Z-Index)
- Toast Notifications (z-index: 10001) - Highest priority
- Editor Floating Action Panel (z-index: 1000) - High priority
- Modal Dialogs (z-index: 999) - Modal layer
- Inline Section Editors (z-index: 100) - Contextual editing
- Document Canvas (z-index: 1) - Content layer
- Background (z-index: 0) - Base layer
1. Editor Floating Action Panel
Component Name: Editor
Type: Floating action panel with status indicator
Location: Top-right corner (fixed positioning)
Description
A persistent control hub providing document-level actions and real-time status feedback. Always visible and contextually aware of editing state.
Technical Specifications
- Container ID:
ui-edit-floater - CSS Classes:
ui-edit-floater-panel - Position:
position: fixed; top: 20px; right: 20px; - Z-Index: 1000
- Update Frequency: Status refreshes every 2 seconds via
setInterval
Components
-
Header Section
- Title: "📝 Editor" (emoji + text)
- Status Display: Dynamic text showing current state
-
Action Buttons
- 💾 Save Document (green accept style)
- 🔄 Reset All (orange reset style)
- 📊 Show Status (grey secondary style)
Status States
"Ready"- Default idle state"Editing [N] section(s)"- Active editing in progress"[N] section(s) modified"- Unsaved changes exist"All sections saved ✓"- All work is saved (with checkmark)
Theme Integration
- Colors and styling adapt to selected UI theme (standard, greyscale, electric, psychedelic)
- Header text color matches theme text color
- Panel background follows theme panel styling
2. Toast Notification System
Component Name: Toast
Type: Auto-dismissing temporary status messages
Location: Top-center (horizontally centered)
Description
Provides immediate visual feedback for user actions through temporary, non-blocking messages that appear and automatically disappear.
Technical Specifications
- Position:
position: fixed; top: 20px; left: 50%; transform: translateX(-50%); - Z-Index: 10001 (highest priority)
- Auto-Dismiss: 3 seconds
- Max Width: 400px
- Animation: Smooth appear/disappear
Message Types
-
Success Toast (green
#28a745)- "Document saved as: [filename]"
- "✂️ Section split into [N] sections!"
-
Info Toast (blue
#007acc)- "Document reset to original structure"
-
Error Toast (red
#dc3545)- Error condition messages
Visual Styling
- Shape: Rounded corners (4px border-radius)
- Typography: White text, 14px font size, center aligned
- Shadow:
0 2px 8px rgba(0,0,0,0.2) - Padding:
12px 20px
3. Document Canvas
Component Name: Document or Canvas
Type: Main content rendering area
Location: Central content area
Description
The primary workspace where markdown content is rendered and made interactive for editing. Displays content as formatted HTML while providing editing affordances.
Technical Specifications
- Container ID:
markdown-content - CSS Classes: Content uses semantic classes (
ui-edit-section) - Layout: Responsive, centered with max-width constraints
- Interaction: Click-to-edit paradigm
Section Elements
Each content section is individually interactive:
- Hover Effect: Subtle background (
rgba(0, 0, 0, 0.02)) and border hint - Click Target: Entire section area is clickable
- Visual Feedback: Smooth transitions (0.2s ease)
- Section Types: Headings, paragraphs, lists, code blocks, blockquotes
Content Rendering
- Primary: Uses
marked.jsfor markdown parsing - Fallback: Basic HTML conversion if library fails
- Graceful Degradation: Always displays content, even with errors
4. Inline Section Editor
Component Name: Section Editor or Inline Editor
Type: Contextual editing widget
Location: Replaces section content during editing
Description
A contextual editing interface that appears when a section is activated for editing. Provides textarea input and action controls for section-level operations.
Technical Specifications
- Container CSS:
ui-edit-inline-panel - Layout: Horizontal flex layout (textarea + button column)
- Theme Integration: Inherits floating panel styling from active UI theme
- Focus Management: Auto-focus on textarea when activated
Components
-
Textarea
- CSS Classes:
ui-edit-textarea ui-edit-textarea-main - Font: Monospace font family for code editing
- Features: Vertical resize, focus styling, theme-aware colors
- CSS Classes:
-
Action Buttons (vertical column)
- ✓ Accept (
ui-edit-button-accept) - Save changes - ✗ Cancel (
ui-edit-button-cancel) - Discard changes - 🔄 Reset (
ui-edit-button-reset) - Restore original content
- ✓ Accept (
Behavior
- Multi-Section: Supports multiple concurrent section editing
- State Persistence: Maintains editing state until explicitly resolved
- Keyboard Support: Planned for future enhancement
- Auto-Split: Automatically splits sections when new headings are added
5. Status Information Modal
Component Name: Status Modal or Info Dialog
Type: Modal dialog for comprehensive status display
Location: Center screen (modal overlay)
Description
Provides detailed information about the current editing session, including version info, document statistics, file details, and help documentation.
Current Implementation
- Method: Browser native
alert()(temporary solution) - Trigger: "📊 Show Status" button in floating action panel
- Content: Multi-section formatted text
Information Sections
-
Application Header
- Application name and version
- Git commit info and development status
-
File Information
- Generated save filename
- Source filename
- Current URL
-
Document Statistics
- Total sections count
- Modified sections count
- Currently editing sections count
- Unsaved changes indicator
-
Help Documentation
- Section behavior explanation
- Editing controls reference
- Keyboard shortcuts (future)
Future Enhancement Plan
Target: Replace browser alert with custom modal dialog
- Styling: Theme-aware modal with proper typography
- Interaction: Close button, better formatting
- Features: Copy-to-clipboard, expandable sections
- Accessibility: Proper ARIA labels, keyboard navigation
6. Confirmation Dialog
Component Name: Confirmation Dialog
Type: Modal confirmation for destructive actions
Location: Center screen (modal overlay)
Description
Provides user confirmation for potentially destructive operations that cannot be easily undone.
Current Implementation ✅ COMPLETED
- Method: Custom theme-aware modal dialog
- Trigger: "🔄 Reset All" button in floating action panel
- Message: "Reset all content to original markdown?"
- Warning: "This will permanently lose all edits and remove any split sections. This action cannot be undone."
Features Implemented
- Theme-Aware Styling: Adapts to all UI themes (standard, greyscale, electric, psychedelic)
- Clear Action Buttons:
- Primary action: "Reset Document" (red danger button)
- Secondary action: "Keep Changes" (grey cancel button)
- Enhanced UX:
- Detailed consequence explanation with warning styling
- Professional modal overlay with smooth animations
- Proper focus management and accessibility
- Keyboard Support:
- ESC key to cancel
- Enter key to confirm
- Tab navigation between buttons
Use Cases
- Reset All Sections: Complete document reset to original state
- Future: Extensible for delete operations, bulk changes, file operations
Technical Implementation
CSS Classes:
.ui-edit-confirmation-modal- Modal container.ui-edit-confirmation-content- Main message.ui-edit-confirmation-warning- Warning section.ui-edit-confirmation-buttons- Button container.ui-edit-button-confirm- Danger action button.ui-edit-button-cancel- Cancel action button
JavaScript Method: showConfirmation(message, confirmText, cancelText, warningText)
- Returns Promise for async/await support
- Theme-consistent styling via layered theme system
- Proper event cleanup and accessibility features
7. Insert Mode Editor
Component Name: Insert Mode Editor
Type: Structured editing mode with heading protection
Location: Replaces section content during editing (contextual)
Description ✅ COMPLETED
A specialized editing mode that duplicates edit mode functionality while enforcing document structure integrity. Provides content editing with selective heading protection for levels 1-3, maintaining document outline consistency.
Current Implementation ✅ COMPLETED
- CLI Activation:
markitect md-render document.md --insert - Mode Detection: Uses
MARKITECT_INSERT_MODEJavaScript flag - Heading Protection: Levels 1-3 are read-only, displayed above content editor
- Content Editing: Full editing capability for content following protected headings
Features Implemented
- Structured Editing Interface:
- Protected heading display (read-only) for levels 1-3
- Content-only textarea for body text editing
- Level 4+ headings remain fully editable
- Heading Protection Logic:
- Visual distinction with warning-styled heading display
- Prevents modification of heading text in protected sections
- Server-side validation ensures heading integrity
- Section Management:
- Automatic section splitting on new heading introduction
- New heading sections inherit protection based on level
- Maintains document structure during complex edits
- Theme Integration:
- Adapts to all UI themes (standard, greyscale, electric, psychedelic)
- Consistent styling with edit mode components
- Special styling for protected heading display
Use Cases
- Document Structure Preservation: Maintain established outline while allowing content updates
- Collaborative Editing: Prevent accidental heading modifications in shared documents
- Template-Based Content: Edit content within predefined structural frameworks
- Controlled Authoring: Allow content contributions without structural changes
Technical Implementation
CLI Integration:
--insertflag added tomd-rendercommand- Mutually exclusive with
--editflag - Validation prevents simultaneous mode activation
CSS Classes:
.markitect-insert-mode- Body class for insert mode.ui-insert-protected-panel- Container for protected heading sections.ui-insert-heading-display- Read-only heading display component.ui-insert-content-editor- Content-only editing textarea
JavaScript Configuration:
const MARKITECT_INSERT_MODE = true;
const MARKITECT_EDITOR_CONFIG = {
mode: 'insert',
restrictedHeadingLevels: [1, 2, 3],
// ... standard editor config
};
Section Enhancement:
Section.detectHeadingLevel()- Identify heading levels 1-6Section.isProtectedHeading()- Check if heading is protected in current modeSection.getHeadingText()- Extract heading text for displaySection.getHeadingContent()- Extract content after heading for editing
Validation Logic:
- Pre-acceptance validation ensures protected headings remain unchanged
- Error handling for attempted heading modifications
- Content reconstruction maintains heading + content structure
Behavioral Differences from Edit Mode
| Feature | Edit Mode | Insert Mode |
|---|---|---|
| Heading Levels 1-3 | ✏️ Fully Editable | 🔒 Read-Only Display |
| Heading Levels 4-6 | ✏️ Fully Editable | ✏️ Fully Editable |
| Content Editing | ✏️ Full Section | ✏️ Content Only (for protected) |
| Section Splitting | ✅ All Headings | ✅ All Headings |
| New Heading Creation | ✅ Unlimited | ✅ With Level-Based Protection |
| Theme Support | ✅ All Themes | ✅ All Themes |
Future Enhancements
- Configurable Protection Levels: Allow customization of which heading levels are protected
- Conditional Protection: Enable/disable protection based on section content or metadata
- Protection Indicators: Visual badges showing protection status in section list
- Bulk Mode Switching: Convert between edit and insert modes for existing documents
Design Principles
1. Theme Consistency
All components must adapt to the selected UI theme:
- Standard: Light grey palette with blue accents
- Greyscale: Monochromatic grey scale
- Electric: Dark blue with cyan/yellow accents and glow effects
- Psychedelic: Vibrant gradient backgrounds with white text
2. Non-Blocking Interactions
- Toast notifications: Auto-dismiss, don't require user action
- Floating action panel: Always accessible, doesn't block content
- Inline editors: Contextual, don't interfere with other sections
3. Graceful Degradation
- Content always visible: Even if JavaScript fails
- Progressive enhancement: Core functionality works without advanced features
- Fallback implementations: Basic browser dialogs until custom implementations ready
4. Responsive Design
- Mobile-first: Components adapt to smaller screens
- Touch-friendly: Appropriate touch targets and gestures
- Scalable: Works across different zoom levels and resolutions
5. Accessibility
- Keyboard navigation: All interactive elements accessible via keyboard
- Screen reader support: Proper ARIA labels and semantic markup
- High contrast: Sufficient color contrast ratios in all themes
- Focus management: Clear focus indicators and logical tab order
Development Conventions
CSS Class Naming
Pattern: {scope}-{component}-{element}-{modifier}
Scopes:
ui- User interface elementsmd- Mode (light/dark)dc- Document contentbr- Branding
Examples:
ui-edit-floater-panelui-edit-button-acceptui-edit-textarea-mainui-edit-section-frame
JavaScript Event Naming
Pattern: {action}-{target}
Examples:
edit-startedchanges-acceptedsection-splitcontent-updated
Component State Management
- Centralized: Section state managed by
SectionManager - Event-driven: Components communicate via events
- Immutable updates: State changes create new state objects
- Consistent: Same patterns across all components
Future Enhancement Roadmap
Phase 1: Modal System Replacement
- Replace browser
alert()andconfirm()with custom implementations - Add proper theme integration and accessibility features
- Implement keyboard navigation and focus management
Phase 2: Enhanced Interactions
- Add keyboard shortcuts for common operations
- Implement drag-and-drop section reordering
- Add section templates and quick-insert functionality
Phase 3: Advanced Features
- Multi-document editing with tabs
- Real-time collaboration indicators
- Advanced search and replace within sections
- Export options beyond basic markdown
Phase 4: Performance Optimization
- Virtual scrolling for large documents
- Lazy loading of section editors
- Optimized rendering for mobile devices
- Advanced caching strategies
Component Integration Matrix
| Component | Theme Aware | Mobile Ready | Keyboard Nav | Touch Friendly | Accessible |
|---|---|---|---|---|---|
| Editor Panel | ✅ Yes | ⚠️ Partial | ❌ Planned | ⚠️ Basic | ⚠️ Partial |
| Toast System | ❌ No | ✅ Yes | ❌ N/A | ✅ Yes | ⚠️ Basic |
| Document Canvas | ✅ Yes | ✅ Yes | ⚠️ Partial | ✅ Yes | ✅ Yes |
| Section Editor | ✅ Yes | ⚠️ Partial | ⚠️ Basic | ⚠️ Basic | ⚠️ Partial |
| Insert Mode Editor | ✅ Yes | ⚠️ Partial | ⚠️ Basic | ⚠️ Basic | ⚠️ Partial |
| Status Modal | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No |
| Confirmation | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
Legend: ✅ Full Support | ⚠️ Partial/Needs Work | ❌ Not Implemented
This framework provides the foundation for consistent UI development and evolution. All future interface changes should reference these component definitions and maintain the established patterns and conventions.