A modern, TypeScript-powered Chrome extension with React, Shadcn/UI, and full internationalization (i18n) support.
- ✨ Modern UI: Built with React, TypeScript, and Shadcn/UI components
- 🎨 Dark/Light Mode: Automatic theme switching with system preference detection
- 🔄 Drag & Drop: Reorder prompts with smooth animations
- 🏷️ Tag System: Organize prompts with customizable tags
- 🔍 Search & Filter: Find prompts quickly with real-time search
- 📥 Import/Export: Backup and share your prompt collections
- 🌍 Internationalization: Full i18n support with Hebrew and English languages
↔️ RTL Support: Right-to-left layout support for Hebrew- 💾 Chrome Storage: Persistent storage using Chrome extension APIs
- 🎯 Type Safety: Full TypeScript coverage with strict type checking
- English (en) - Default language
- עברית (he) - Hebrew with full RTL support
- Clone the repository:
git clone <repository-url>
cd prompt-templates-sidebar- Install dependencies:
npm install- Build the extension:
npm run build- Load the extension in Chrome:
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" and select the
distfolder
- Open Chrome and navigate to
- Node.js 18+
- npm or yarn
- Chrome browser
- Install dependencies:
npm install- Start development server:
npm run dev- The extension will be built in
dist/folder. Load it as an unpacked extension in Chrome.
The project uses react-i18next for internationalization with full i18n Ally support.
src/
├── locales/
│ ├── en/
│ │ └── common.json # English translations
│ ├── he/
│ │ └── common.json # Hebrew translations
│ └── index.ts # Locale exports
├── i18n/
│ ├── config.ts # i18next configuration
│ └── types.ts # TypeScript types
- Create a new folder in
src/locales/(e.g.,fr/) - Add
common.jsonwith translations - Update
src/locales/index.tsto include the new language - Add language to
supportedLanguagesarray - Update
LanguageSwitcher.tsxwith language name and flag
Use nested dot notation for translation keys:
// Usage in components
const { t } = useTranslation();
t("sidebar.title"); // "Prompt Helper"
t("buttons.newPrompt"); // "New Prompt"
t("messages.copied"); // "Copied to clipboard!"The project includes i18n-ally.config.json for VS Code integration:
- Automatic key extraction
- Translation management
- Real-time preview
- Missing translation detection
Hebrew language includes full RTL (Right-to-Left) support:
- Automatic direction switching (
dir="rtl") - CSS logical properties for layout
- Icon orientation adjustments
- Proper text alignment
npm run dev- Start development servernpm run build- Build for productionnpm run lint- Run ESLintnpm run preview- Preview built extensionnpm run clean- Clean build artifacts
src/
├── components/ # React components
│ ├── ui/ # Shadcn/UI components
│ ├── PromptSidebar.tsx
│ ├── PromptForm.tsx
│ ├── PromptCard.tsx
│ ├── LanguageSwitcher.tsx
│ └── DarkModeToggle.tsx
├── hooks/ # Custom React hooks
├── lib/ # Utility functions
├── types/ # TypeScript type definitions
├── locales/ # Translation files
├── i18n/ # i18n configuration
├── assets/ # Static assets
├── App.tsx # Main app component
├── main.tsx # Entry point
└── index.css # Global styles with RTL support
The extension is configured as a Chrome Extension Manifest V3:
- Side Panel: Integrated with Chrome's side panel API
- Storage: Uses Chrome storage for persistence
- Permissions: Minimal required permissions
- Content Security Policy: Strict CSP for security
Users can switch languages using the globe icon in the header:
- Click the globe icon (🌍)
- Select desired language from dropdown
- Language preference is saved automatically
- Interface updates immediately with RTL support for Hebrew
- Fork the repository
- Create a feature branch
- Add translations for new features
- Test with both LTR and RTL languages
- Submit a pull request
- Keep translations concise and contextual
- Test UI layout with longer Hebrew text
- Ensure proper RTL behavior
- Use i18n Ally for translation management
- Follow existing key naming conventions
MIT License - see LICENSE file for details
- Frontend: React 18, TypeScript
- UI Components: Shadcn/UI, Radix UI
- Styling: Tailwind CSS with RTL support
- Animation: Framer Motion
- Drag & Drop: @hello-pangea/dnd
- i18n: react-i18next, i18next
- Build Tool: Vite
- Linting: ESLint
- Type Checking: TypeScript
- Chrome 88+ (Manifest V3 support)
- Chromium-based browsers (Edge, Brave, etc.)