mirror of
https://github.com/gromlab-ru/svg-sprites.git
synced 2026-07-22 04:40:17 +03:00
feat: инициализировать пакет генерации SVG-спрайтов
- создан NPM-пакет @gromlab/svg-sprites (ESM, TypeScript) - реализован CLI через citty и программный API - добавлена компиляция SVG в спрайты (stack/symbol) через svg-sprite - добавлена генерация TypeScript union-типов имён иконок - реализованы SVG-трансформации: замена цветов на CSS-переменные, удаление width/height, добавление transition к элементам с цветом - добавлен генератор HTML-превью с color picker-ами, авто-темой, синхронизацией currentColor с темой и поиском по иконкам - добавлены тестовые SVG-файлы (icons, logos)
This commit is contained in:
79
src/types.ts
Normal file
79
src/types.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
/** Режим спрайта: stack или symbol. */
|
||||
export type SpriteMode = 'stack' | 'symbol'
|
||||
|
||||
/** Результат парсинга имени папки со спрайтами. */
|
||||
export interface SpriteFolder {
|
||||
/** Полное имя папки (как на диске, включая суффикс ?mode). */
|
||||
fullName: string
|
||||
/** Имя папки без суффикса режима. */
|
||||
name: string
|
||||
/** Режим спрайта. */
|
||||
mode: SpriteMode
|
||||
/** Абсолютный путь к папке. */
|
||||
path: string
|
||||
/** Абсолютные пути к SVG-файлам внутри папки. */
|
||||
files: string[]
|
||||
}
|
||||
|
||||
/** Результат компиляции одного спрайта. */
|
||||
export interface SpriteResult {
|
||||
/** Имя папки (без суффикса режима). */
|
||||
name: string
|
||||
/** Режим спрайта. */
|
||||
mode: SpriteMode
|
||||
/** Путь к сгенерированному SVG-спрайту. */
|
||||
spritePath: string
|
||||
/** Путь к сгенерированному .generated.ts файлу (если включена генерация типов). */
|
||||
typesPath: string | null
|
||||
/** Количество иконок в спрайте. */
|
||||
iconCount: number
|
||||
}
|
||||
|
||||
/** Параметры трансформации SVG. */
|
||||
export interface TransformOptions {
|
||||
/**
|
||||
* Удалять width/height с корневого <svg>.
|
||||
* По умолчанию: true.
|
||||
*/
|
||||
removeSize?: boolean
|
||||
/**
|
||||
* Заменять цвета на CSS-переменные var(--icon-color-N, ...).
|
||||
* Моно-иконка: var(--icon-color-1, currentColor).
|
||||
* Мульти-иконка: var(--icon-color-N, #original).
|
||||
* По умолчанию: true.
|
||||
*/
|
||||
replaceColors?: boolean
|
||||
/**
|
||||
* Добавлять transition:fill 0.3s,stroke 0.3s к элементам с цветом.
|
||||
* По умолчанию: true.
|
||||
*/
|
||||
addTransition?: boolean
|
||||
}
|
||||
|
||||
/** Параметры генерации спрайтов. */
|
||||
export interface GenerateOptions {
|
||||
/** Путь к папке с исходными SVG (содержит подпапки-спрайты). */
|
||||
input: string
|
||||
/** Путь к папке для сгенерированных SVG-спрайтов. */
|
||||
output: string
|
||||
/**
|
||||
* Генерировать ли .generated.ts файлы с union-типами имён иконок.
|
||||
* По умолчанию: true.
|
||||
*/
|
||||
types?: boolean
|
||||
/**
|
||||
* Куда складывать .generated.ts файлы.
|
||||
* По умолчанию: рядом с исходными папками (в input).
|
||||
*/
|
||||
typesOutput?: string
|
||||
/**
|
||||
* Настройки трансформации SVG.
|
||||
* По умолчанию: все трансформации включены.
|
||||
*/
|
||||
transform?: TransformOptions
|
||||
/**
|
||||
* Генерировать HTML-превью со всеми иконками.
|
||||
* По умолчанию: true.
|
||||
*/
|
||||
preview?: boolean
|
||||
}
|
||||
Reference in New Issue
Block a user