Commit Graph

25 Commits

Author SHA1 Message Date
7bd25e1a7a Add Progressive Web App support and content formatting standards
## PWA Implementation
• Add comprehensive service worker for offline caching and app installation
• Implement PWA manifest with app shortcuts and file handling
• Create offline indicator component with update notifications
• Add service worker utilities for cache management and updates
• Update HTML with PWA meta tags and SEO optimization

## Content Standards Enhancement
• Update presentation JSON generator prompt with strict Unicode prohibition
• Add comprehensive content quality checklist for ASCII-only formatting
• Create two example presentations demonstrating proper formatting
• Fix build errors in OfflineIndicator component styling
• Enforce consistent markdown formatting with plain dash bullets

## Features Added
• Install as native app capability on all platforms
• Complete offline functionality after first load
• Automatic background updates with user notifications
• Export/import JSON presentations with proper formatting
• Real-time online/offline status indicators

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 09:34:40 -05:00
7ad433f260 Add presentation import/export and fix template styling
• Add JSON import/export functionality to presentations list
• Fix HTML sanitizer to allow style tags in layout templates
• Add comprehensive SVG attributes for Mermaid diagram markers
• Create LLM prompt generator for presentation JSON format
• Add sample presentation showcasing SlideShare features
• Clean up diagram-slide layout template

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 08:23:08 -05:00
18d653cc2d Fix Mermaid diagram text visibility and styling issues
- Add essential CSS for proper text display in diagram nodes and edges
- Fix foreignObject text container inheritance for proper styling
- Ensure node labels and edge labels are visible with correct fonts
- Add responsive sizing for mobile devices
- Remove complex styling that was causing text clipping issues
- Simplify diagram container styling for better compatibility

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-22 06:40:29 -05:00
72cce3af0f Add Mermaid diagram support with dedicated diagram-slide layout
- Implement complete Mermaid.js integration for rich diagram rendering
- Add diagram-slide.html layout with title, diagram, and notes slots
- Create diagramProcessor.ts with async rendering and error handling
- Add comprehensive SVG element support to HTML sanitizer
- Implement async template rendering system for diagram processing
- Add SlidePreview component with loading states for better UX
- Support all major Mermaid diagram types (flowchart, sequence, gantt, pie, etc.)
- Add dark theme integration with custom color scheme
- Include diagram-specific styling and responsive design
- Add diagram field editor with syntax highlighting styling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-22 05:41:50 -05:00
69be84e5ab Fix TypeScript compilation errors
- Remove deprecated marked options (sanitize, headerIds, mangle)
- Fix undefined codeExample and diagramExample references in templateRenderer
- Replace with additional markdown sample content
- Ensure clean TypeScript build with no errors

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 21:20:09 -05:00
84b2d233a7 Add JavaScript syntax highlighting with Highlight.js
- Implement code highlighting utility using Highlight.js library
- Add dedicated code-slide layout with proper pre/code structure
- Update HTML sanitizer to allow pre and code elements
- Add comprehensive VS Code dark theme syntax colors
- Fix whitespace preservation in highlighted code blocks
- Support code slot type in template rendering system
- Add code-specific styling and editor improvements

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 21:18:11 -05:00
655e324c88 Add secure markdown support to slide templates
- Implement safe markdown processing with marked and DOMPurify
- Add markdown-slide layout template with dedicated markdown slots
- Support auto-detection of markdown content in text slots
- Include comprehensive markdown styling (lists, headers, code, quotes, tables)
- Maintain security with HTML sanitization and safe element filtering
- Add markdown documentation to theme creation guidelines

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 20:43:26 -05:00
ed0a57f802 Removed static content from template. 2025-08-21 16:39:44 -05:00
a84546b30b Remove PresentationViewer component and view functionality
- Remove view buttons from presentations list (both icon and card actions)
- Delete PresentationViewer component and CSS files
- Remove view route from App.tsx routing
- Streamline presentation actions to Edit, Present, and Delete only

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 13:30:58 -05:00
e7f8650ff4 Fix SlideEditor CSS specificity conflicts and complete global color system integration
- Increase CSS specificity for layout components in SlideEditor.css to prevent style overrides
- Add .slide-editor parent selector to .layout-preview, .layout-card, .layout-info, .layout-meta, and .layout-rendered
- Replace local color variables with global color system references
- Ensure SlideEditor layout styles are properly applied without conflicts from other stylesheets

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 13:23:16 -05:00
04d9487501 Implement global color system and optimize CSS architecture
- Create comprehensive global color system with semantic variables in src/styles/colors.css
- Replace all hardcoded colors across components with CSS custom properties
- Establish semantic color mappings for consistent theming (--text-primary, --bg-secondary, etc.)
- Add complete color scales for gray, slate, blue, red, green, yellow, purple, pink
- Include dark mode color overrides for automatic theme switching
- Update PresentationEditor.css to use global color variables throughout
- Consolidate SlideThumbnail.css styles and optimize using CSS cascades
- Move SlideThumbnail-specific styles from PresentationEditor.css to component file
- Update all UI button components (Button, ActionButton, BackButton) to use color variables
- Modernize Modal, AlertDialog, and ConfirmDialog components with global colors
- Optimize App.css, index.css, and PresentationsList.css color usage
- Reduce CSS bundle size through consolidation and elimination of duplicate styles

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 13:06:34 -05:00
3d0f6dd25e Fix TypeScript build errors and improve navigation consistency
- Replace hardcoded navigation routes with history-based navigation (navigate(-1))
- Convert presentation deletion to use shared ConfirmDialog/AlertDialog components
- Consolidate button components throughout the application
- Fix TypeScript unused import errors from button component consolidation
- Convert enums to const assertions to fix erasableSyntaxOnly compatibility
- Hide theme browsing features with "coming soon" comments
- Improve AppHeader routing with regex patterns instead of manual parsing

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 12:34:11 -05:00
b4b61ad761 Consolidate button components and eliminate barrel exports
## Button Component System
- Create dedicated components/ui/buttons directory with 6 specialized button components:
  - Button.tsx: Universal button with variants (primary, secondary, danger, link) and sizes
  - ActionButton.tsx: Action buttons matching existing patterns
  - BackButton.tsx: Navigation back buttons
  - CancelLink.tsx: Cancel/link style buttons
  - CloseButton.tsx: Modal/preview close buttons with variants
  - NavigationButton.tsx: Presentation navigation buttons
- Update key components to use new button system (SlideEditor, ContentEditor, Modal, AlertDialog, ConfirmDialog)
- Replace inline styled-jsx with proper CSS files for AlertDialog and ConfirmDialog

## Barrel Export Elimination
- Remove all barrel export files violating IMPORT_STANDARDS.md:
  - src/themes/index.ts
  - src/components/themes/index.ts
  - src/components/presentations/index.ts
  - src/components/slide-editor/index.ts
- Update 15+ files to use direct imports from themeLoader.ts instead of barrel exports
- Fix function naming conflict in ThemeDetailPage.tsx (loadTheme shadowing)
- Follow project standards: direct imports with .tsx extensions for better Vite performance

## Benefits
- Improved Vite tree shaking and module resolution performance
- Consistent, reusable button system across application
- Adherence to project coding standards and import conventions
- Reduced bundle size through elimination of barrel export overhead

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 11:42:42 -05:00
127b0fe96a Refactor SlideEditor component and consolidate CSS
- Move SlideEditor to dedicated slide-editor directory structure
- Break down monolithic 471-line component into smaller, focused modules:
  - SlideEditor.tsx (127 lines) - main component using composition
  - useSlideEditor.ts (235 lines) - custom hook for state management
  - ContentEditor.tsx - focused content editing component
  - SlidePreviewModal.tsx - modal for fullscreen preview
- Consolidate CSS from 838+132 lines to 731 lines with:
  - Comprehensive CSS variables system for consistent theming
  - Remove duplicate .slide-preview-wrapper rules and conflicts
  - Clean aspect ratio handling with clear separation of contexts
- Follow project standards: direct imports, error boundaries, under 200 lines per component
- Maintain all existing functionality while improving code organization

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 11:25:59 -05:00
c51931af9c Add image upload functionality for slide editing
- Create ImageUploadField component with file upload and URL input
- Support base64 encoding for local IndexedDB storage
- Add image preview, replacement, and removal functionality
- Update SlideEditor to use ImageUploadField for image slots
- Include file validation (5MB limit, image types only)
- Add responsive design and error handling
- Integrate with existing theme system and slot detection

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 09:45:24 -05:00
3864de28e7 Implement fullscreen presentation mode with keyboard navigation
- Add PresentationMode component for fullscreen slide viewing
- Support keyboard navigation: arrows/space for slides, escape to exit
- Integrate with existing theme rendering and CSS loading system
- Update PresentationsList Present button to use fullscreen mode
- Add new route /presentations/:presentationId/present
- Fix TypeScript errors in presentation components

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 09:21:38 -05:00
1008bd4bca Implement slide preview and fix import standards project-wide
## New Feature: Full Screen Slide Preview
- Add SlidePreviewModal component for full screen slide preview in SlideEditor
- ESC key support and temporary hint for user guidance
- Proper aspect ratio handling with theme CSS inheritance
- Modal follows existing UI patterns for consistency

## Import Standards Compliance (31 files updated)
- Fix all imports to use explicit .tsx/.ts extensions per IMPORT_STANDARDS.md
- Eliminate barrel imports in App.tsx for better Vite tree shaking
- Add direct imports with explicit paths across entire codebase
- Preserve CSS imports and external library imports unchanged

## Code Architecture Improvements
- Add comprehensive CSS & Component Architecture Guidelines to CLAUDE.md
- Document modal patterns, aspect ratio handling, and CSS reuse principles
- Reference all coding standards files for consistent development workflow
- Prevent future CSS overcomplication and component duplication

## Performance Optimizations
- Enable Vite tree shaking with proper import structure
- Improve module resolution speed with explicit extensions
- Optimize build performance through direct imports

## Files Changed
- 31 TypeScript/React files with import fixes
- 2 new SlidePreviewModal files (component + CSS)
- Updated project documentation and coding guidelines
- Fixed aspect ratio CSS patterns across components

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 06:52:56 -05:00
8376e77df7 Refactor presentation components following coding guidelines
## Major Refactoring
- Broke down large components into focused, reusable pieces
- Reduced NewPresentationPage.tsx from 238 to 172 lines
- Reduced PresentationEditor.tsx from 457 to 261 lines
- Eliminated functions exceeding 50-line guideline

## New Reusable Components
- PresentationDetailsForm: Form inputs for title/description
- AspectRatioSelector: Aspect ratio selection grid
- ThemeSelectionSection: Theme selection wrapper
- CreationActions: Action buttons and selected theme info
- EmptyPresentationState: Empty presentation state display
- SlidesSidebar: Complete sidebar with slides list
- SlideThumbnail: Individual slide thumbnail with actions
- LoadingState: Reusable loading component with spinner
- ErrorState: Reusable error display with retry/back actions

## New Hooks
- useSlideOperations: Custom hook for slide duplicate/delete logic

## Code Quality Improvements
- Replaced browser alert() calls with AlertDialog component
- Updated imports to use direct .tsx extensions per IMPORT_STANDARDS.md
- Eliminated browser confirm() calls in favor of ConfirmDialog system
- Consolidated duplicate loading/error state patterns
- Improved type safety throughout

## Benefits
- Better maintainability through component separation
- Consistent UX with shared UI components
- Code reuse across presentation components
- Compliance with 200-line file guideline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 06:23:45 -05:00
d0e70f81e7 Major code quality improvements: Fix XSS vulnerabilities and replace browser dialogs
Security Fixes:
- Add DOMPurify HTML sanitization for all dangerouslySetInnerHTML usage
- Create comprehensive HTML sanitization utility with configurable security levels
- Implement safe template rendering for slide content and layouts
- Add input validation for image sources and dangerous attributes

UI/UX Improvements:
- Replace browser alert() and confirm() with proper React modal components
- Create reusable Modal, AlertDialog, and ConfirmDialog components
- Add useDialog hook for easy dialog state management
- Implement proper accessibility with keyboard navigation and focus management
- Add smooth animations and responsive design for dialogs

Components Added:
- src/utils/htmlSanitizer.ts - Comprehensive HTML sanitization
- src/components/ui/Modal.tsx - Base modal component
- src/components/ui/AlertDialog.tsx - Alert dialog component
- src/components/ui/ConfirmDialog.tsx - Confirmation dialog component
- src/hooks/useDialog.ts - Dialog state management hook

Updated Components:
- SlideEditor.tsx - Now uses sanitized HTML rendering
- LayoutPreviewPage.tsx - Now uses sanitized HTML rendering
- PresentationEditor.tsx - Now uses React dialogs instead of browser dialogs

Benefits:
 Eliminates XSS vulnerabilities from unsafe HTML rendering
 Provides consistent, accessible user interface
 Improves user experience with proper modal dialogs
 Maintains security while preserving slide formatting capabilities
 Follows React best practices for component composition

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 17:41:15 -05:00
2a905d50e0 Enhance default theme with proper content centering and 2-content-blocks layout
- Update default theme CSS for proper content centering and aspect ratio integration
- Add text-align: center to base slide styling for consistent centering
- Implement specific alignment for title, subtitle, and text slots
- Add aspect ratio specific adjustments (different padding and max-width per ratio)
- Create new 2-content-blocks layout with side-by-side equal spacing
- Use CSS Grid for 50/50 split with proper gap and visual separation
- Add responsive design for mobile devices (stacks vertically)
- Include subtle styling to distinguish content blocks
- Improve typography scaling for two-column layout

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 17:15:03 -05:00
9b0b16969f feat: implement complete presentation management system with aspect ratio support
## Major Features Added:

### Presentation Management
- Complete CRUD operations for presentations (create, read, update, delete)
- IndexedDB storage for offline presentation data
- Comprehensive presentation list view with metadata
- Navigation integration with header menu

### Slide Management
- Full slide editor with layout selection and content editing
- Live preview with theme styling applied
- Speaker notes functionality
- Enhanced layout previews with realistic sample content
- Themed layout selection with proper CSS inheritance

### Aspect Ratio System
- Support for 3 common presentation formats: 16:9, 4:3, 16:10
- Global CSS system baked into theme engine
- Visual aspect ratio selection in presentation creation
- Responsive scaling for different viewing contexts
- Print-optimized styling with proper dimensions

### User Experience Improvements
- Enhanced sample content generation for realistic previews
- Improved navigation with presentation management
- Better form styling and user interaction
- Comprehensive error handling and loading states
- Mobile-responsive design throughout

### Technical Infrastructure
- Complete TypeScript type system for presentations
- Modular component architecture
- CSS aspect ratio classes for theme consistency
- Enhanced template rendering with live updates
- Robust storage utilities with proper error handling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 16:34:00 -05:00
98958b2cb3 Remove iframe previews and improve theme hot reload with SVG demo content
- Remove iframe previews from theme detail and layout detail pages for cleaner UI
- Replace with informative layout cards showing descriptions and slot type badges
- Fix theme hot reload by switching from custom HMR to full page reload
- Update template renderer to use slot names as demo content
- Add SVG pattern generation for image slots with grid background and slot labels
- Improve demo content for all slot types (code, lists, tables, etc.)
- Clean up HMR listeners and simplify theme change detection

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 14:11:51 -05:00
15d3789bb4 Add full-screen layout preview route and fix iframe sandbox issue
- Create LayoutPreviewPage component for full-screen layout previews
- Add preview route /themes/:themeId/layouts/:layoutId/preview to App routing
- Update theme components with preview links and improved navigation
- Fix iframe sandbox error by adding allow-scripts permission
- Enhance template renderer with layout metadata support
- Replace PostCSS with regex-only CSS parsing for browser compatibility
- Add comprehensive standards documentation for code quality
- Clean up CSS slot indicators to be always visible with descriptions

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 13:48:13 -05:00
3f1c299850 updated README.md, removed boilersplate and added instructions for using 2025-08-20 10:26:23 -05:00
6e6c09b5ba Add comprehensive theme routing and browsing system
- Add React Router with theme browser, theme detail, and layout detail pages
- Implement manifest-based theme discovery for better performance
- Add Welcome component as home page with feature overview
- Fix layout and styling issues with proper CSS centering
- Implement introspective theme browsing (dynamically discover colors/variables)
- Add layout preview system with iframe scaling
- Create comprehensive theme detail page with color palette display
- Fix TypeScript errors and build issues
- Remove hardcoded theme assumptions in favor of dynamic discovery

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 10:17:55 -05:00