A premium, highly customizable toast notification configuration tool built with Vue 3, TypeScript, and Pinia. Design, preview, and export perfect notification styles for your application with real-time feedback.
Tip
Live Demo: Check it out here!
Screen.Recording.2026-01-29.at.18.25.07.mov
- Notification Types: Success, Error, Warning, Info (with smart defaults).
- Content: Dynamic Title and Message input with real-time validation.
- Timing: 1-10s duration slider or Persistent mode.
- Positioning: 6-way selector (Top/Bottom x Left/Center/Right).
- Style Customization:
- RGB Color pickers for background and text.
- Toggleable icons and close buttons.
- Animation Styles: Choose between
Fade,Slide, andBounce. - Progress Bar: Visual countdown for auto-dismiss notifications.
- Custom Icons: Upload and use your own SVG/Emoji icons.
- Code Export: One-click copy to clipboard with Syntax Highlighting (Highlight.js).
- Guided Tour: Integrated onboarding experience using Driver.js.
- Theming: Full Dark Mode / Light Mode support with smooth transitions.
- Localization: Multi-language support (English/Turkish) using Vue-I18n.
- Persistence: Save your favorite configurations to
localStorage. - Organization: Filter presets by type and sort by creation date.
- Management: Load, delete, and list all your saved designs instantly.
- Framework: Vue 3 (Composition API)
- State Management: Pinia
- Language: TypeScript
- Styling: SCSS (Vanilla CSS approach with variables)
- Validation: Zod
- Testing: Jest + Vue Test Utils
- Documentation/UI Dev: Storybook
- Utilities:
nanoid,dompurify,highlight.js,driver.js,vue-i18n.
src/
โโโ components/
โ โโโ layout/ # Header, Footer, Hero sections
โ โโโ ui/ # Atomic components (Button, Input, Switch, etc.)
โโโ composables/ # Shared logic (useTheme, useToastStore, useTouchTarget)
โโโ constants/ # App-wide constants (Default colors, timings)
โโโ helpers/ # Logic helpers (localStorage, color utils)
โโโ i18n/ # Localization config and translation files
โโโ pages/ # Main route components
โโโ router/ # Vue Router configuration
โโโ types/ # TypeScript interfaces and types
โโโ utils/ # Utility functions (validators, formatters)
tests/
โโโ unit/ # Comprehensive unit tests for components and stores
-
Clone the repository:
git clone https://github.com/your-username/toast-builder.git cd toast-builder -
Install dependencies:
npm install
-
Run development server:
npm run dev
-
Run tests:
npm run test -
Build for production:
npm run build
-
View Component Library (Storybook):
npm run storybook
- Challenge: The requirements asked for both a "Live Preview" (static update) and a "Triggered Behavior" (dynamic list).
- Solution: I implemented a dual-notification system. The
ToastPreviewCarddisplays a single reactivity-tracked notification that doesn't expire, while the "Show Notification" button triggers a "real" notification in theToastListmanaged by Pinia with unique IDs and auto-dismiss logic.
- Challenge: Toasts need to stack vertically but slide in differently depending on the quadrant (e.g., slide from left for
top-left, slide from right fortop-right). - Solution: Created dynamic SCSS classes for
<transition-group>names. Based on thepositionprop, the app applies specific transform origins and entry paths, ensuring a polished "premium" feel across all positions.
- Drag & Drop Reordering: Allow users to manually reorder toast priority.
- Multi-Color Gradients: Add support for gradient backgrounds.
- Icon Library Integration: Built-in picker for Lucide or FontAwesome icons.
- Web Component Export: Export the toast logic as a standalone
.jsfile to use in any framework. - Sound Effects: Add optional subtle audio cues for different notification types.
MIT License - feel free to build something awesome!