Nano Banana Pro
Agent skill for nano-banana-pro
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Sign in to like and favorite skills
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
npm run dev - Start development server (default port 5173)npm run build - Build for production (TypeScript compilation + Vite build)npm run lint - Run ESLintnpm run preview - Preview production buildSlideForge Pro is a comprehensive React-based slide editor application with rich text editing, drawing capabilities, and professional export functionality. Built using modern web technologies, the application provides a complete presentation creation experience with support for various element types, transformation controls, and professional output formats (PDF/PPTX).
src/state/atoms.tssrc/domain/models.tsdocumentAtom - Main document statecurrentSlideIdAtom - Active slide trackingselectionAtom - Element selection stateCanvasStage.tsx using Konva.jsLayerElements.tsx handles rendering of all slide elements (text, shapes, arrows, lines)TransformerOverlay.tsx provides resize/rotate handles with enhanced multi-selection supportGuideLines.tsx provides snap-to-align functionality during element manipulationsrc/domain/actions.ts contains all state mutation functionsproduceWithPatches for automatic undo/redo historyTextToolbar.tsx provides font family, size, color, weight, alignment controlsInlineTextEditor.tsx provides direct text editing within canvassrc/utils/pdfExport.ts handles PDF generation via jsPDF with accurate canvas-to-PDF conversionsrc/utils/pptxExport.ts handles PowerPoint export via PptxGenJS with element-by-element conversionTransformerOverlay.tsx supports simultaneous transformation of multiple elementsThe application requires
enablePatches() to be called in main.tsx for the undo/redo system to function. This enables Immer to generate forward and inverse patches for all state mutations.
App.tsx (main application with 2-tier toolbar + title header) ├── CanvasStage.tsx (Konva Stage wrapper with export capabilities) │ ├── LayerElements.tsx (renders all slide elements) │ ├── TransformerOverlay.tsx (selection/resize handles with multi-selection) │ ├── GuideLines.tsx (snap-to-align guide lines) │ ├── SelectionBox.tsx (drag selection rectangle) │ ├── TextToolbar.tsx (rich text editing toolbar, positioned absolutely) │ ├── ShapeToolbar.tsx (shape editing controls) │ └── InlineTextEditor.tsx (direct text editing within canvas) ├── HelpModal.tsx (help dialog with keyboard shortcuts) └── useHotkeys.ts (keyboard shortcuts for undo/redo/copy/paste)
First Tier:
Second Tier:
All elements extend a base type with: