2026-07-13 20:07:12 +03:00
|
|
|
|
import type { SpriteMode } from './targets/types.js'
|
|
|
|
|
|
|
2026-07-16 09:14:11 +03:00
|
|
|
|
export type SpriteSource = 'local' | 'remote'
|
|
|
|
|
|
|
|
|
|
|
|
/** HTTP SVG input серверного mode. Имя задаёт публичное имя иконки. */
|
|
|
|
|
|
export type ServerSvgInput = {
|
|
|
|
|
|
name: string
|
|
|
|
|
|
url: string
|
|
|
|
|
|
sha256?: string
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export type SpriteInput = string | ServerSvgInput
|
|
|
|
|
|
|
2026-07-11 07:00:59 +03:00
|
|
|
|
/** Формат спрайта: stack или symbol. */
|
|
|
|
|
|
export type SpriteFormat = 'stack' | 'symbol'
|
2026-04-21 23:07:34 +03:00
|
|
|
|
|
2026-04-22 16:54:35 +03:00
|
|
|
|
/** Параметры трансформации SVG. Все включены по умолчанию. */
|
|
|
|
|
|
export type TransformOptions = {
|
2026-04-21 23:07:34 +03:00
|
|
|
|
/**
|
|
|
|
|
|
* Удалять 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
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-07-16 09:14:11 +03:00
|
|
|
|
/** Единая конфигурация sprite-модуля. Exact mode уточняет допустимый input. */
|
2026-07-13 20:07:12 +03:00
|
|
|
|
export type SpriteConfig = {
|
|
|
|
|
|
/** Режим можно определить в конфиге либо передать через CLI/API. */
|
|
|
|
|
|
mode?: SpriteMode
|
2026-07-16 09:14:11 +03:00
|
|
|
|
/** Локальные SVG по умолчанию либо готовый server manifest. */
|
|
|
|
|
|
source?: SpriteSource
|
2026-07-13 20:07:12 +03:00
|
|
|
|
/** Логическое имя спрайта. По умолчанию выводится из каталога модуля. */
|
|
|
|
|
|
name?: string
|
|
|
|
|
|
/** Описание спрайта для generated types и manifest. */
|
|
|
|
|
|
description?: string
|
2026-07-14 16:11:39 +03:00
|
|
|
|
/** Путь или glob-шаблоны исходных SVG относительно корня модуля. По умолчанию: ./icons. */
|
2026-07-16 09:14:11 +03:00
|
|
|
|
input?: SpriteInput | SpriteInput[]
|
2026-07-13 20:07:12 +03:00
|
|
|
|
/** Настройки трансформации SVG. По умолчанию все включены. */
|
2026-04-21 23:07:34 +03:00
|
|
|
|
transform?: TransformOptions
|
2026-07-13 20:07:12 +03:00
|
|
|
|
/** Добавлять развёрнутое предупреждение в generated-файлы. По умолчанию: true. */
|
|
|
|
|
|
generatedNotice?: boolean
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** Полностью разрешённая конфигурация, готовая к генерации. */
|
|
|
|
|
|
export type ResolvedSpriteConfig = {
|
|
|
|
|
|
mode: SpriteMode
|
2026-07-16 09:14:11 +03:00
|
|
|
|
source: SpriteSource
|
2026-07-13 20:07:12 +03:00
|
|
|
|
name: string
|
|
|
|
|
|
description?: string
|
2026-07-16 09:14:11 +03:00
|
|
|
|
input: SpriteInput[]
|
2026-07-13 20:07:12 +03:00
|
|
|
|
transform: Required<TransformOptions>
|
|
|
|
|
|
generatedNotice: boolean
|
2026-04-22 16:54:35 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** Результат парсинга спрайта — данные для компиляции. */
|
|
|
|
|
|
export type SpriteFolder = {
|
|
|
|
|
|
/** Имя спрайта. */
|
|
|
|
|
|
name: string
|
2026-07-11 07:00:59 +03:00
|
|
|
|
/** Формат спрайта. */
|
|
|
|
|
|
format: SpriteFormat
|
2026-07-14 16:11:39 +03:00
|
|
|
|
/** Абсолютный путь для единственного input-каталога, иначе null. */
|
2026-04-22 16:54:35 +03:00
|
|
|
|
path: string | null
|
|
|
|
|
|
/** Абсолютные пути к SVG-файлам. */
|
|
|
|
|
|
files: string[]
|
|
|
|
|
|
}
|