toast-builder-vue3 1.0.13 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,348 +1,423 @@
1
- # Toast Notification Builder
1
+ # 🎉 Toast Builder Vue3
2
2
 
3
- A type-safe toast notification configuration tool built with Vue 3 and TypeScript. Configure, preview, and export production-ready notification code with live updates and comprehensive customization options.
3
+ <div align="center">
4
4
 
5
- Live Demo: https://toast-builder.vercel.app/
5
+ [![npm version](https://img.shields.io/npm/v/toast-builder-vue3.svg?style=flat-square&color=4FC08D)](https://www.npmjs.com/package/toast-builder-vue3)
6
+ [![npm downloads](https://img.shields.io/npm/dm/toast-builder-vue3.svg?style=flat-square&color=4FC08D)](https://www.npmjs.com/package/toast-builder-vue3)
7
+ [![bundle size](https://img.shields.io/bundlephobia/minzip/toast-builder-vue3?style=flat-square&color=4FC08D)](https://bundlephobia.com/package/toast-builder-vue3)
8
+ [![license](https://img.shields.io/npm/l/toast-builder-vue3.svg?style=flat-square&color=4FC08D)](https://github.com/highpriv/toast-builder/blob/master/LICENSE)
6
9
 
7
- ![Vue 3](https://img.shields.io/badge/Vue-3.5.25-4FC08D?logo=vue.js&logoColor=white)
8
- ![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript&logoColor=white)
9
- ![Vite](https://img.shields.io/badge/Vite-7.3-646CFF?logo=vite&logoColor=white)
10
- ![Jest](https://img.shields.io/badge/Jest-29.7-C21325?logo=jest&logoColor=white)
10
+ **Modern, lightweight toast notification system for Vue 3 with TypeScript**
11
+
12
+ [Live Demo](https://toast-builder.vercel.app/) â€ĸ [NPM Package](https://www.npmjs.com/package/toast-builder-vue3) â€ĸ [GitHub](https://github.com/highpriv/toast-builder)
13
+
14
+ </div>
11
15
 
12
16
  ---
13
17
 
14
- ## Features
18
+ ## ✨ Features
15
19
 
16
- ### Core Features
20
+ - 🎨 **Fully Customizable** - Configure colors, icons, animations, and positions
21
+ - 🎭 **3 Animation Styles** - Fade, slide, and bounce animations
22
+ - 📍 **6 Position Options** - Place toasts anywhere on the screen
23
+ - đŸ–ŧī¸ **Custom Icons** - Use URLs, Base64, or built-in icons
24
+ - âąī¸ **Auto-dismiss** - Optional countdown with progress bar
25
+ - 📱 **Responsive** - Works on all screen sizes
26
+ - 🔒 **Type-Safe** - Full TypeScript support
27
+ - đŸĒļ **Lightweight** - Minimal bundle size
28
+ - ⚡ **Vite-powered** - Built with modern tooling
17
29
 
18
- - **Configuration Panel**: Fully customizable notification properties
19
- - 4 notification types (success, error, warning, info)
20
- - Title and message inputs with validation
21
- - Duration slider (1-10 seconds) or persistent mode
22
- - 6 position options (top/bottom × left/center/right)
30
+ ---
23
31
 
24
- - **Style Customization**
25
- - Background and text color pickers with hex input
26
- - Icon visibility toggle
27
- - Close button toggle
28
- - Progress bar toggle
32
+ ## đŸ“Ļ Installation
29
33
 
30
- - **Live Preview**: Real-time preview that updates instantly as you configure
34
+ ```bash
35
+ npm install toast-builder-vue3
36
+ ```
31
37
 
32
- - **Preset Management**
33
- - Save current configuration as named presets
34
- - Load previously saved presets
35
- - Delete unwanted presets
36
- - Persistent storage using localStorage
38
+ Or with yarn:
37
39
 
38
- - **Multiple Notification Stacking**: Display multiple notifications simultaneously with proper vertical arrangement
40
+ ```bash
41
+ yarn add toast-builder-vue3
42
+ ```
39
43
 
40
- ### Bonus Features (All Implemented)
44
+ Or with pnpm:
41
45
 
42
- - **Animation System**: 3 animation styles (fade, slide, bounce)
43
- - **Code Export**: Generate production-ready Vue 3 or JavaScript code with copy-to-clipboard
44
- - **Progress Bar**: Visual countdown for auto-dismiss notifications
45
- - **Custom Icon Upload**: Upload custom icons with automatic compression (max 128×128, 100KB)
46
- - **Custom Icon URLs**: Use external icon URLs with validation
47
- - **Dark/Light Theme**: Toggle between themes with system preference detection
48
- - **Built-in Icon Library**: 15 pre-configured icons for immediate use
46
+ ```bash
47
+ pnpm add toast-builder-vue3
48
+ ```
49
49
 
50
50
  ---
51
51
 
52
- ## Tech Stack
52
+ ## 🚀 Quick Start
53
53
 
54
- | Technology | Version | Purpose |
55
- | ------------------ | ------- | ------------------------------------ |
56
- | **Vue 3** | 3.5.25 | Frontend framework (Composition API) |
57
- | **TypeScript** | 5.9 | Type safety and better DX |
58
- | **Vite** | 7.3 | Build tool and dev server |
59
- | **Jest** | 29.7 | Testing framework |
60
- | **Vue Test Utils** | 2.4.6 | Vue component testing |
61
- | **Nanoid** | 5.0.7 | Unique ID generation |
62
- | **SCSS Modules** | - | Scoped styling |
54
+ ### 1. Import CSS
63
55
 
64
- ---
56
+ In your `main.ts`:
65
57
 
66
- ## Prerequisites
58
+ ```typescript
59
+ import { createApp } from "vue";
60
+ import App from "./App.vue";
61
+ import "toast-builder-vue3/dist/toast-builder-vue3.css";
67
62
 
68
- - **Node.js**: â‰Ĩ 18.0.0
69
- - **npm**: â‰Ĩ 9.0.0
63
+ createApp(App).mount("#app");
64
+ ```
70
65
 
71
- ---
66
+ ### 2. Add ToastContainer
72
67
 
73
- ## Setup Instructions
68
+ In your `App.vue`:
74
69
 
75
- ### 1. Clone the repository
70
+ ```vue
71
+ <template>
72
+ <div id="app">
73
+ <router-view />
74
+ <ToastContainer />
75
+ </div>
76
+ </template>
76
77
 
77
- ```bash
78
- git clone https://github.com/highpriv/toast-builder.git
79
- cd toast-builder
78
+ <script setup lang="ts">
79
+ import { ToastContainer } from "toast-builder-vue3";
80
+ </script>
80
81
  ```
81
82
 
82
- ### 2. Install dependencies
83
-
84
- ```bash
85
- npm install
83
+ ### 3. Show Toasts
84
+
85
+ In any component:
86
+
87
+ ```vue
88
+ <script setup lang="ts">
89
+ import { useToast } from "toast-builder-vue3";
90
+
91
+ const { showToast } = useToast();
92
+
93
+ const notify = () => {
94
+ // Minimal usage - smart defaults applied automatically
95
+ showToast({
96
+ type: "success",
97
+ message: "Operation completed successfully!",
98
+ });
99
+ };
100
+
101
+ const notifyWithCustomization = () => {
102
+ // Full customization - override any default
103
+ showToast({
104
+ type: "success",
105
+ message: "Operation completed successfully!",
106
+ title: "Success",
107
+ duration: 5000,
108
+ position: "bottom-right",
109
+ backgroundColor: "#10b981",
110
+ textColor: "#ffffff",
111
+ showIcon: true,
112
+ showCloseButton: true,
113
+ showProgress: true,
114
+ animation: "slide",
115
+ });
116
+ };
117
+ </script>
86
118
  ```
87
119
 
88
- ### 3. Start the development server
120
+ > **Smart Defaults:** Only `type` and `message` are required. All other options have sensible defaults based on the toast type.
89
121
 
90
- ```bash
91
- npm run dev
92
- ```
122
+ ---
93
123
 
94
- The application will open automatically at `http://localhost:5173`
124
+ ## 🎨 Smart Defaults System
95
125
 
96
- ### 4. Run tests
126
+ The package uses an intelligent defaults system that requires minimal configuration while allowing full customization.
97
127
 
98
- ```bash
99
- npm run test
128
+ ### Type-Based Defaults
129
+
130
+ Each toast type automatically gets appropriate colors and icons:
131
+
132
+ | Type | Colors | Icon |
133
+ | --------- | -------------------------- | ------------ |
134
+ | `success` | Green (#10b981 / #ffffff) | Check circle |
135
+ | `error` | Red (#ef4444 / #ffffff) | X circle |
136
+ | `warning` | Orange (#f59e0b / #111827) | Alert |
137
+ | `info` | Blue (#3b82f6 / #ffffff) | Info circle |
138
+
139
+ ### Base Defaults
140
+
141
+ All toasts use these defaults unless overridden:
142
+
143
+ ```typescript
144
+ {
145
+ duration: 3000, // 3 seconds
146
+ position: 'top-right',
147
+ showIcon: true,
148
+ showCloseButton: true,
149
+ animation: 'fade',
150
+ showProgress: false,
151
+ }
100
152
  ```
101
153
 
102
- ---
154
+ ### Customization Priority
103
155
 
104
- ## Available Scripts
156
+ Defaults are applied in this order (highest priority first):
105
157
 
106
- | Command | Description |
107
- | ----------------------- | ---------------------------------------- |
108
- | `npm run dev` | Start development server with hot reload |
109
- | `npm run build` | Build for production (`dist/` folder) |
110
- | `npm run preview` | Preview production build locally |
111
- | `npm run test` | Run all tests |
112
- | `npm run test:watch` | Run tests in watch mode |
113
- | `npm run test:coverage` | Generate test coverage report |
114
- | `npm run type-check` | Run TypeScript type checking |
158
+ 1. **Per-toast config** (showToast options)
159
+ 2. **Global defaults** (ToastContainer props)
160
+ 3. **Type defaults** (type-based colors/icons)
161
+ 4. **Base defaults** (package defaults)
115
162
 
116
- ---
163
+ ### Global Defaults (Optional)
117
164
 
118
- ## Project Structure
165
+ Set default options for all toasts in your app:
119
166
 
167
+ ```vue
168
+ <template>
169
+ <ToastContainer
170
+ position="top-right"
171
+ :defaultDuration="5000"
172
+ defaultAnimation="slide"
173
+ :defaultShowProgress="true"
174
+ />
175
+ </template>
176
+
177
+ <script setup lang="ts">
178
+ import { ToastContainer } from "toast-builder-vue3";
179
+ </script>
120
180
  ```
121
- toast-builder/
122
- ├── src/
123
- │ ├── components/
124
- │ │ ├── builder/ # Configuration panel components
125
- │ │ │ ├── ToastBuilder.vue
126
- │ │ │ ├── ConfigPanel.vue
127
- │ │ │ ├── PreviewPane.vue
128
- │ │ │ ├── TypeSelector.vue
129
- │ │ │ ├── PositionSelector.vue
130
- │ │ │ ├── ContentControls.vue
131
- │ │ │ ├── StyleControls.vue
132
- │ │ │ ├── AnimationSelector.vue
133
- │ │ │ ├── PresetManager.vue
134
- │ │ │ └── CodeExport.vue
135
- │ │ ├── common/ # Reusable UI components
136
- │ │ │ ├── BaseButton.vue
137
- │ │ │ ├── BaseInput.vue
138
- │ │ │ ├── BaseSelect.vue
139
- │ │ │ ├── BaseRadio.vue
140
- │ │ │ ├── ColorPicker.vue
141
- │ │ │ ├── Icon.vue
142
- │ │ │ └── ThemeToggle.vue
143
- │ │ └── toast/ # Toast display components
144
- │ │ ├── Toast.vue
145
- │ │ └── ToastContainer.vue
146
- │ ├── composables/ # Vue composition functions
147
- │ │ ├── useToast.ts # Toast state management
148
- │ │ ├── useToastBuilder.ts # Builder config management
149
- │ │ ├── usePresets.ts # Preset CRUD operations
150
- │ │ ├── useTheme.ts # Theme management
151
- │ │ ├── useAnimation.ts # Animation utilities
152
- │ │ └── useClipboard.ts # Copy-to-clipboard functionality
153
- │ ├── utils/ # Helper functions
154
- │ │ ├── validators.ts # Input validation
155
- │ │ ├── storage.ts # localStorage abstraction
156
- │ │ ├── code-generator.ts # Code export logic
157
- │ │ ├── color-utils.ts # Color manipulation
158
- │ │ ├── image-utils.ts # Image compression & validation
159
- │ │ └── nanoid.ts # ID generation
160
- │ ├── types/ # TypeScript type definitions
161
- │ │ ├── toast.ts
162
- │ │ ├── builder.ts
163
- │ │ ├── animation.ts
164
- │ │ └── theme.ts
165
- │ ├── constants/ # App constants
166
- │ │ ├── toast-defaults.ts
167
- │ │ ├── animation-presets.ts
168
- │ │ ├── color-palettes.ts
169
- │ │ └── icon-library.ts
170
- │ ├── styles/ # Global styles
171
- │ │ ├── main.scss
172
- │ │ ├── _variables.scss
173
- │ │ ├── _reset.scss
174
- │ │ └── _animations.scss
175
- │ ├── App.vue
176
- │ └── main.ts
177
- ├── tests/
178
- │ ├── unit/
179
- │ │ └── utils/
180
- │ │ └── validators.spec.ts
181
- │ ├── setup.ts
182
- │ └── __mocks__/
183
- ├── package.json
184
- ├── vite.config.ts
185
- ├── tsconfig.json
186
- └── jest.config.cjs
187
- ```
181
+
182
+ **ToastContainer Props:**
183
+
184
+ | Prop | Type | Default | Description |
185
+ | ------------------------ | --------------- | ------------- | ----------------------------- |
186
+ | `position` | `Position` | `'top-right'` | Container position |
187
+ | `defaultDuration` | `number` | `3000` | Default toast duration (ms) |
188
+ | `defaultAnimation` | `AnimationType` | `'fade'` | Default animation type |
189
+ | `defaultShowIcon` | `boolean` | `true` | Show icons by default |
190
+ | `defaultShowCloseButton` | `boolean` | `true` | Show close buttons by default |
191
+ | `defaultShowProgress` | `boolean` | `false` | Show progress bars by default |
188
192
 
189
193
  ---
190
194
 
191
- ## Development Approach
195
+ ## 📖 API Reference
196
+
197
+ ### `useToast()`
198
+
199
+ Returns an object with the following methods and properties:
200
+
201
+ #### Methods
192
202
 
193
- ### Architecture
203
+ ##### `showToast(config: ToastInput): string`
194
204
 
195
- The project follows a **component-based architecture** with clear separation of concerns:
205
+ Display a new toast notification. Returns the toast ID.
196
206
 
197
- 1. **Presentation Layer** (`components/`): Reusable UI components using Vue 3 Composition API
198
- 2. **Business Logic** (`composables/`): Shared state management and functionality using Vue composables
199
- 3. **Utilities** (`utils/`): Pure functions for validation, storage, code generation
200
- 4. **Type Safety**: Strict TypeScript configuration with comprehensive type definitions
207
+ **Required Parameters:**
201
208
 
202
- ### Key Design Decisions
209
+ | Parameter | Type | Description |
210
+ | --------- | --------------------------------------------- | ------------- |
211
+ | `type` | `'success' \| 'error' \| 'warning' \| 'info'` | Toast type |
212
+ | `message` | `string` | Toast message |
203
213
 
204
- **1. Composition API over Options API**
214
+ **Optional Parameters:**
205
215
 
206
- - Better TypeScript inference
207
- - Improved code reusability through composables
208
- - More maintainable for complex logic
216
+ | Parameter | Type | Default | Description |
217
+ | ------------------------- | ------------------------------- | ------------- | ------------------------------- |
218
+ | `title` | `string` | `''` | Toast title |
219
+ | `duration` | `number` | `3000` | Duration in ms (0 = persistent) |
220
+ | `position` | `Position` | `'top-right'` | Position on screen |
221
+ | `backgroundColor` | `string` | Type-based | Background color (hex) |
222
+ | `textColor` | `string` | Type-based | Text color (hex) |
223
+ | `showIcon` | `boolean` | `true` | Show/hide icon |
224
+ | `showCloseButton` | `boolean` | `true` | Show/hide close button |
225
+ | `showProgress` | `boolean` | `false` | Show progress bar |
226
+ | `animation` | `'fade' \| 'slide' \| 'bounce'` | `'fade'` | Animation type |
227
+ | `customIcon` | `IconName` | Type-based | Built-in icon name |
228
+ | `customIconUrl` | `string` | - | Custom icon URL |
229
+ | `customIconBase64` | `string` | - | Custom icon Base64 |
230
+ | `customCloseButtonUrl` | `string` | - | Custom close button URL |
231
+ | `customCloseButtonBase64` | `string` | - | Custom close button Base64 |
209
232
 
210
- **2. SCSS Modules for Styling**
233
+ ##### `dismissToast(id: string): void`
211
234
 
212
- - Scoped styles prevent conflicts
213
- - CSS variable system for theming
214
- - Consistent design tokens
235
+ Dismiss a specific toast by ID.
215
236
 
216
- **3. Single Source of Truth**
237
+ ##### `clearAllToasts(): void`
217
238
 
218
- - `useToastBuilder()` manages configuration state
219
- - `useToast()` manages active notifications
220
- - All components react to state changes
239
+ Dismiss all active toasts.
221
240
 
222
- **4. Validation & Error Handling**
241
+ ##### `undoLastDismissed(): void`
223
242
 
224
- - Input validation on every change
225
- - User-friendly error messages
226
- - Prevents invalid configurations
243
+ Restore the last dismissed toast.
227
244
 
228
- **5. Image Optimization**
245
+ ##### `getToastsByPosition(position: Position): ComputedRef<ActiveNotification[]>`
229
246
 
230
- - Canvas API for client-side compression
231
- - Maximum dimensions (128×128px)
232
- - File size limit (100KB)
233
- - Supported formats: PNG, JPEG, GIF, WebP, SVG
247
+ Get all toasts at a specific position.
234
248
 
235
- **6. Code Export**
249
+ #### Properties
236
250
 
237
- - Templates for Vue 3 SFC and plain JavaScript
238
- - Proper escaping for special characters
239
- - Copy-to-clipboard with user feedback
251
+ - `activeToasts`: `ComputedRef<ActiveNotification[]>` - All active toasts
252
+ - `dismissedToasts`: `ComputedRef<ActiveNotification[]>` - Recently dismissed toasts
240
253
 
241
- ### State Management Pattern
254
+ ---
255
+
256
+ ## 💡 Examples
257
+
258
+ ### Success Toast
242
259
 
243
260
  ```typescript
244
- // Global reactive state using composables
245
- const config = useToastBuilder(); // Configuration state
246
- const toasts = useToast(); // Active toasts
247
- const presets = usePresets(); // Saved presets
248
- const theme = useTheme(); // Theme preference
261
+ showToast({
262
+ type: "success",
263
+ message: "Changes saved successfully!",
264
+ duration: 3000,
265
+ position: "top-right",
266
+ backgroundColor: "#10b981",
267
+ textColor: "#ffffff",
268
+ showIcon: true,
269
+ showCloseButton: true,
270
+ });
249
271
  ```
250
272
 
251
- ### Testing Strategy
273
+ ### Error Toast with Progress Bar
252
274
 
253
- - **Unit Tests**: Core utilities (validators, color manipulation)
254
- - **Component Tests**: (Ready for expansion)
255
- - **Integration Tests**: (Future improvement)
275
+ ```typescript
276
+ showToast({
277
+ type: "error",
278
+ title: "Error",
279
+ message: "Failed to save changes",
280
+ duration: 5000,
281
+ position: "top-right",
282
+ backgroundColor: "#ef4444",
283
+ textColor: "#ffffff",
284
+ showIcon: true,
285
+ showCloseButton: true,
286
+ showProgress: true,
287
+ animation: "bounce",
288
+ });
289
+ ```
256
290
 
257
- ---
291
+ ### Persistent Toast
292
+
293
+ ```typescript
294
+ showToast({
295
+ type: "warning",
296
+ message: "This toast stays until closed",
297
+ duration: 0, // Persistent
298
+ position: "top-center",
299
+ backgroundColor: "#f59e0b",
300
+ textColor: "#000000",
301
+ showIcon: true,
302
+ showCloseButton: true,
303
+ });
304
+ ```
258
305
 
259
- ## Assumptions
306
+ ### Custom Icon
260
307
 
261
- ### User Experience
308
+ ```typescript
309
+ showToast({
310
+ type: "info",
311
+ message: "You have a new message",
312
+ duration: 4000,
313
+ position: "bottom-right",
314
+ backgroundColor: "#3b82f6",
315
+ textColor: "#ffffff",
316
+ showIcon: true,
317
+ showCloseButton: true,
318
+ customIcon: "bell", // Built-in icon
319
+ });
320
+ ```
262
321
 
263
- 1. **Responsive design**: Optimized for all devices
264
- 2. **Modern browser support**: Assumes ES2020+ features (async/await, optional chaining, etc.)
265
- 3. **JavaScript enabled**: Application requires JavaScript to function
266
- 4. **localStorage available**: Presets require localStorage (graceful degradation if unavailable)
322
+ ### Using Built-in Icons
267
323
 
268
- ### Technical
324
+ Available icons: `check-circle`, `check`, `badge-check`, `x-circle`, `alert-circle`, `exclamation-circle`, `alert-triangle`, `exclamation-triangle`, `information-circle`, `question-mark-circle`, `bell`, `megaphone`, `sparkles`, `heart`, `moon`, `sun`
269
325
 
270
- 1. **No backend required**: All state managed client-side
271
- 2. **ID generation**: Using `nanoid` for unique IDs instead of UUID (smaller, URL-safe)
272
- 3. **Animation timing**: Standard durations (fade: 300ms, slide: 400ms, bounce: 500ms)
273
- 4. **Color format**: Only hex colors supported (no RGB/HSL input)
274
- 5. **Image upload**: Client-side compression using Canvas API (no server-side processing)
275
- 6. **Theme detection**: Uses `prefers-color-scheme` media query for initial theme
326
+ ---
276
327
 
277
- ### Validation Rules
328
+ ## 🎨 Position Options
278
329
 
279
- - **Title**: Optional, max 50 characters
280
- - **Message**: Required, 1-200 characters
281
- - **Duration**: 1000ms - 10000ms or 0 (persistent)
282
- - **Preset name**: 1-50 characters
283
- - **Image files**: ≤5MB, PNG/JPEG/GIF/WebP/SVG only
284
- - **Image URLs**: Must end with valid image extension
330
+ - `top-left`
331
+ - `top-center`
332
+ - `top-right`
333
+ - `bottom-left`
334
+ - `bottom-center`
335
+ - `bottom-right`
336
+
337
+ ---
285
338
 
286
- ### Browser Compatibility
339
+ ## đŸŽŦ Animation Types
287
340
 
288
- - **Chrome**: â‰Ĩ90
289
- - **Firefox**: â‰Ĩ88
290
- - **Safari**: â‰Ĩ14
291
- - **Edge**: â‰Ĩ90
341
+ - `fade` - Simple fade in/out (300ms)
342
+ - `slide` - Slide from right (400ms)
343
+ - `bounce` - Bouncy entrance (500ms)
292
344
 
293
345
  ---
294
346
 
295
- ## Testing
347
+ ## 🎨 Recommended Colors
296
348
 
297
- The project includes comprehensive unit tests for core functionality:
349
+ | Type | Background | Text |
350
+ | ------- | ---------- | --------- |
351
+ | Success | `#10b981` | `#ffffff` |
352
+ | Error | `#ef4444` | `#ffffff` |
353
+ | Warning | `#f59e0b` | `#000000` |
354
+ | Info | `#3b82f6` | `#ffffff` |
298
355
 
299
- ```bash
300
- # Run all tests
301
- npm run test
356
+ ---
302
357
 
303
- # Run with coverage
304
- npm run test:coverage
358
+ ## 📘 TypeScript Support
305
359
 
306
- # Watch mode for development
307
- npm run test:watch
360
+ Full TypeScript support with comprehensive type definitions:
361
+
362
+ ```typescript
363
+ import type {
364
+ NotificationConfig,
365
+ ActiveNotification,
366
+ NotificationType,
367
+ Position,
368
+ AnimationType,
369
+ IconName,
370
+ } from "toast-builder-vue3";
308
371
  ```
309
372
 
310
- **Current Test Coverage:**
373
+ ---
374
+
375
+ ## đŸ› ī¸ Browser Support
311
376
 
312
- - Input validation (title, message, duration, preset names)
313
- - Color utilities
314
- - Image validation (file type, size, URL format)
315
- - Component tests (planned)
316
- - Integration tests (planned)
377
+ - Chrome â‰Ĩ 90
378
+ - Firefox â‰Ĩ 88
379
+ - Safari â‰Ĩ 14
380
+ - Edge â‰Ĩ 90
317
381
 
318
382
  ---
319
383
 
320
- ## Usage Example
384
+ ## 📄 License
321
385
 
322
- 1. **Select notification type** (success, error, warning, info)
323
- 2. **Configure content** (title, message, duration)
324
- 3. **Choose position** (where toast appears on screen)
325
- 4. **Customize appearance** (colors, icons, progress bar)
326
- 5. **Select animation** (fade, slide, bounce)
327
- 6. **Preview in real-time** - See changes instantly
328
- 7. **Test behavior** - Click "Show Notification" to trigger actual toast
329
- 8. **Save as preset** (optional) - Save for reuse
330
- 9. **Export code** - Get Vue 3 or JavaScript code
386
+ [GPL-3.0](LICENSE)
331
387
 
332
388
  ---
333
389
 
334
- ## Build & Deployment
390
+ ## 🔗 Links
335
391
 
336
- ### Production Build
392
+ - [NPM Package](https://www.npmjs.com/package/toast-builder-vue3)
393
+ - [Live Demo](https://toast-builder.vercel.app/)
394
+ - [GitHub Repository](https://github.com/highpriv/toast-builder)
395
+ - [Report Issues](https://github.com/highpriv/toast-builder/issues)
337
396
 
338
- ```bash
339
- npm run build
340
- ```
397
+ ---
341
398
 
342
- Generates optimized production build in `dist/` folder.
399
+ ## 👨‍đŸ’ģ Author
400
+
401
+ **Canberk Beren**
402
+
403
+ - GitHub: [@highpriv](https://github.com/highpriv)
404
+
405
+ ---
343
406
 
344
- **Build configuration:**
407
+ ## ☕ Support This Project
408
+
409
+ If you find this package useful, consider buying me a coffee! Your support helps me maintain and improve this project.
410
+
411
+ <div align="center">
412
+
413
+ [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-support-yellow.svg?style=for-the-badge&logo=buy-me-a-coffee)](https://buymeacoffee.com/highpriv)
414
+
415
+ ### Or scan the QR code:
416
+
417
+ <img src="buymeacoffee-qr.png" alt="Buy Me a Coffee QR Code" width="200" />
418
+
419
+ </div>
420
+
421
+ ---
345
422
 
346
- - Output directory: `dist`
347
- - Build command: `npm run build`
348
- - Install command: `npm install`
423
+ Made with â¤ī¸ using Vue 3 and TypeScript