/**
* Vite SVG Sprite Plugin - TypeScript Definitions (Production-Ready)
* @version 1.3.0 - Aligned with Vite best practices
*/
import type { Plugin } from 'vite';
// HMR Custom Events Type Definitions
import 'vite/types/customEvent.d.ts';
declare module 'vite/types/customEvent.d.ts' {
interface CustomEventMap {
/**
* Custom HMR event for SVG sprite updates
* Fired when icons are added/removed/modified in dev mode
*/
'svg-sprite-update': {
/** Complete SVG sprite content */
spriteContent: string;
/** Number of icons in the sprite */
iconCount: number;
};
}
}
/**
* Опции плагина SVG Sprite
*/
export interface SvgSpriteOptions {
/**
* Папка с SVG иконками
* @default 'src/icons'
* @example 'assets/icons'
*/
iconsFolder?: string;
/**
* ID элемента спрайта в DOM
* @default 'sprite-id'
* @example 'my-sprite'
*/
spriteId?: string;
/**
* CSS класс спрайта
* @default 'sprite-class'
* @example 'custom-sprite'
*/
spriteClass?: string;
/**
* Префикс для ID символов
* @default '' (empty string - uses only filename)
* @example 'icon' will generate 'icon-home', 'icon-user'
* @example '' will generate 'home', 'user'
*/
idPrefix?: string;
/**
* Включить отслеживание изменений в dev-режиме
* @default true
*/
watch?: boolean;
/**
* Задержка debounce для множественных изменений (мс)
* @default 100
*/
debounceDelay?: number;
/**
* Подробное логирование
* @default true (когда NODE_ENV === 'development'), false в остальных случаях
*/
verbose?: boolean;
/**
* Оптимизация SVG с помощью SVGO
* @default true (когда NODE_ENV === 'production'), false в остальных случаях
*/
svgoOptimize?: boolean;
/**
* Кастомная конфигурация SVGO
* @default оптимальные настройки для спрайтов
*/
svgoConfig?: any;
/**
* Конвертировать цвета заливки и обводки в currentColor
* Позволяет управлять цветом иконок через CSS
* @default true
* @example
* // С currentColor: true
* // →
* // Теперь можно: .icon { color: red; }
*/
currentColor?: boolean;
/**
* Tree-shaking: включать только используемые иконки
* Сканирует HTML/JS/TS файлы проекта и находит все