@nice2dev/ui-tools 1.0.10
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 +36 -0
- package/dist/access-control.d.ts +726 -0
- package/dist/access-control.d.ts.map +1 -0
- package/dist/accessibility-i18n.d.ts +1017 -0
- package/dist/accessibility-i18n.d.ts.map +1 -0
- package/dist/ai-assistant.d.ts +263 -0
- package/dist/ai-assistant.d.ts.map +1 -0
- package/dist/ai-playgrounds.d.ts +842 -0
- package/dist/ai-playgrounds.d.ts.map +1 -0
- package/dist/alerting-incidents.d.ts +558 -0
- package/dist/alerting-incidents.d.ts.map +1 -0
- package/dist/api-designer.d.ts +1568 -0
- package/dist/api-designer.d.ts.map +1 -0
- package/dist/api-testing.d.ts +1146 -0
- package/dist/api-testing.d.ts.map +1 -0
- package/dist/apm-profiling.d.ts +656 -0
- package/dist/apm-profiling.d.ts.map +1 -0
- package/dist/artifacts.d.ts +421 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/audit-compliance.d.ts +752 -0
- package/dist/audit-compliance.d.ts.map +1 -0
- package/dist/certificates.d.ts +256 -0
- package/dist/certificates.d.ts.map +1 -0
- package/dist/chart-builder.d.ts +1404 -0
- package/dist/chart-builder.d.ts.map +1 -0
- package/dist/cloud-instances.d.ts +169 -0
- package/dist/cloud-instances.d.ts.map +1 -0
- package/dist/config-management.d.ts +350 -0
- package/dist/config-management.d.ts.map +1 -0
- package/dist/containers.d.ts +256 -0
- package/dist/containers.d.ts.map +1 -0
- package/dist/dashboard-designer.d.ts +1238 -0
- package/dist/dashboard-designer.d.ts.map +1 -0
- package/dist/data-management.d.ts +496 -0
- package/dist/data-management.d.ts.map +1 -0
- package/dist/data-pipeline.d.ts +1105 -0
- package/dist/data-pipeline.d.ts.map +1 -0
- package/dist/data-warehouse.d.ts +1097 -0
- package/dist/data-warehouse.d.ts.map +1 -0
- package/dist/dataset-management.d.ts +782 -0
- package/dist/dataset-management.d.ts.map +1 -0
- package/dist/db-adapters.d.ts +704 -0
- package/dist/db-adapters.d.ts.map +1 -0
- package/dist/db-admin.d.ts +699 -0
- package/dist/db-admin.d.ts.map +1 -0
- package/dist/db-designer.d.ts +366 -0
- package/dist/db-designer.d.ts.map +1 -0
- package/dist/debugger.d.ts +356 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/device-management.d.ts +871 -0
- package/dist/device-management.d.ts.map +1 -0
- package/dist/distributed-tracing.d.ts +427 -0
- package/dist/distributed-tracing.d.ts.map +1 -0
- package/dist/dns-management.d.ts +215 -0
- package/dist/dns-management.d.ts.map +1 -0
- package/dist/download-manager.d.ts +271 -0
- package/dist/download-manager.d.ts.map +1 -0
- package/dist/download-torrent.d.ts +1062 -0
- package/dist/download-torrent.d.ts.map +1 -0
- package/dist/edge-computing.d.ts +720 -0
- package/dist/edge-computing.d.ts.map +1 -0
- package/dist/education.d.ts +1135 -0
- package/dist/education.d.ts.map +1 -0
- package/dist/email-template.d.ts +1141 -0
- package/dist/email-template.d.ts.map +1 -0
- package/dist/erp-enterprise.d.ts +1270 -0
- package/dist/erp-enterprise.d.ts.map +1 -0
- package/dist/form-builder.d.ts +1117 -0
- package/dist/form-builder.d.ts.map +1 -0
- package/dist/game-engine-advanced.d.ts +1049 -0
- package/dist/game-engine-advanced.d.ts.map +1 -0
- package/dist/git.d.ts +415 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/hardware-integration.d.ts +966 -0
- package/dist/hardware-integration.d.ts.map +1 -0
- package/dist/iac.d.ts +318 -0
- package/dist/iac.d.ts.map +1 -0
- package/dist/icon-tools.d.ts +1023 -0
- package/dist/icon-tools.d.ts.map +1 -0
- package/dist/ide.d.ts +322 -0
- package/dist/ide.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +176 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +1887 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integration-platform.d.ts +857 -0
- package/dist/integration-platform.d.ts.map +1 -0
- package/dist/kubernetes.d.ts +278 -0
- package/dist/kubernetes.d.ts.map +1 -0
- package/dist/life-management.d.ts +1132 -0
- package/dist/life-management.d.ts.map +1 -0
- package/dist/log-management.d.ts +473 -0
- package/dist/log-management.d.ts.map +1 -0
- package/dist/mathematics.d.ts +870 -0
- package/dist/mathematics.d.ts.map +1 -0
- package/dist/message-queue.d.ts +1006 -0
- package/dist/message-queue.d.ts.map +1 -0
- package/dist/metrics-dashboard.d.ts +596 -0
- package/dist/metrics-dashboard.d.ts.map +1 -0
- package/dist/mobile-components.d.ts +766 -0
- package/dist/mobile-components.d.ts.map +1 -0
- package/dist/model-deployment.d.ts +787 -0
- package/dist/model-deployment.d.ts.map +1 -0
- package/dist/model-registry.d.ts +740 -0
- package/dist/model-registry.d.ts.map +1 -0
- package/dist/model-training.d.ts +706 -0
- package/dist/model-training.d.ts.map +1 -0
- package/dist/network-config.d.ts +334 -0
- package/dist/network-config.d.ts.map +1 -0
- package/dist/network-monitoring.d.ts +291 -0
- package/dist/network-monitoring.d.ts.map +1 -0
- package/dist/pdf-tools.d.ts +1003 -0
- package/dist/pdf-tools.d.ts.map +1 -0
- package/dist/pipelines.d.ts +250 -0
- package/dist/pipelines.d.ts.map +1 -0
- package/dist/remote-desktop.d.ts +207 -0
- package/dist/remote-desktop.d.ts.map +1 -0
- package/dist/report-designer.d.ts +1153 -0
- package/dist/report-designer.d.ts.map +1 -0
- package/dist/scada-industrial.d.ts +848 -0
- package/dist/scada-industrial.d.ts.map +1 -0
- package/dist/scientific-research.d.ts +1149 -0
- package/dist/scientific-research.d.ts.map +1 -0
- package/dist/secret-management.d.ts +617 -0
- package/dist/secret-management.d.ts.map +1 -0
- package/dist/security-scanning.d.ts +714 -0
- package/dist/security-scanning.d.ts.map +1 -0
- package/dist/self-service-analytics.d.ts +1208 -0
- package/dist/self-service-analytics.d.ts.map +1 -0
- package/dist/sensor-dashboard.d.ts +845 -0
- package/dist/sensor-dashboard.d.ts.map +1 -0
- package/dist/server-management.d.ts +331 -0
- package/dist/server-management.d.ts.map +1 -0
- package/dist/smart-home.d.ts +861 -0
- package/dist/smart-home.d.ts.map +1 -0
- package/dist/spreadsheet.d.ts +1043 -0
- package/dist/spreadsheet.d.ts.map +1 -0
- package/dist/sql-editor.d.ts +402 -0
- package/dist/sql-editor.d.ts.map +1 -0
- package/dist/terminal.d.ts +245 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/testing-qa.d.ts +1013 -0
- package/dist/testing-qa.d.ts.map +1 -0
- package/dist/torrent-client.d.ts +298 -0
- package/dist/torrent-client.d.ts.map +1 -0
- package/dist/traceless.d.ts +759 -0
- package/dist/traceless.d.ts.map +1 -0
- package/dist/virtual-machines.d.ts +199 -0
- package/dist/virtual-machines.d.ts.map +1 -0
- package/dist/visual-scripting.d.ts +381 -0
- package/dist/visual-scripting.d.ts.map +1 -0
- package/dist/word-processor.d.ts +1124 -0
- package/dist/word-processor.d.ts.map +1 -0
- package/dist/workspace.d.ts +333 -0
- package/dist/workspace.d.ts.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,1023 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview PRO-28: Icons Professional Suite Types
|
|
3
|
+
*
|
|
4
|
+
* This module provides TypeScript types and interfaces for the comprehensive
|
|
5
|
+
* icon system including icon management, searching, editing, and cross-framework
|
|
6
|
+
* support.
|
|
7
|
+
*
|
|
8
|
+
* @module @nice2dev/ui-tools/icon-tools
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Icon style variants.
|
|
12
|
+
*/
|
|
13
|
+
export type IconStyle = 'solid' | 'outline' | 'duotone' | 'light' | 'thin' | 'bold' | 'filled' | 'regular' | 'brand';
|
|
14
|
+
/**
|
|
15
|
+
* Icon size presets.
|
|
16
|
+
*/
|
|
17
|
+
export type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
|
|
18
|
+
/**
|
|
19
|
+
* Icon size in pixels.
|
|
20
|
+
*/
|
|
21
|
+
export type IconSizePixels = 12 | 14 | 16 | 18 | 20 | 24 | 28 | 32 | 36 | 40 | 48 | 56 | 64 | 72 | 96 | 128 | 192 | 256 | 512;
|
|
22
|
+
/**
|
|
23
|
+
* Icon category for organization.
|
|
24
|
+
*/
|
|
25
|
+
export type IconCategory = 'action' | 'alert' | 'av' | 'communication' | 'content' | 'device' | 'editor' | 'file' | 'hardware' | 'image' | 'maps' | 'navigation' | 'notification' | 'places' | 'social' | 'toggle' | 'brand' | 'custom';
|
|
26
|
+
/**
|
|
27
|
+
* Domain-specific icon categories.
|
|
28
|
+
*/
|
|
29
|
+
export type DomainCategory = 'business' | 'finance' | 'healthcare' | 'education' | 'manufacturing' | 'retail' | 'technology' | 'gaming' | 'science' | 'life-management' | 'creative' | 'legal' | 'hr' | 'logistics';
|
|
30
|
+
/**
|
|
31
|
+
* Use case for icon selection.
|
|
32
|
+
*/
|
|
33
|
+
export type IconUseCase = 'toolbar' | 'menu' | 'button' | 'status' | 'cursor' | 'notification' | 'tab' | 'avatar' | 'decoration' | 'illustration' | 'logo' | 'favicon';
|
|
34
|
+
/**
|
|
35
|
+
* Basic icon definition.
|
|
36
|
+
*/
|
|
37
|
+
export interface IconDefinition {
|
|
38
|
+
/** Unique icon ID */
|
|
39
|
+
id: string;
|
|
40
|
+
/** Icon name (kebab-case) */
|
|
41
|
+
name: string;
|
|
42
|
+
/** Display name */
|
|
43
|
+
displayName: string;
|
|
44
|
+
/** SVG path data */
|
|
45
|
+
path: string;
|
|
46
|
+
/** Alternative paths for composite icons */
|
|
47
|
+
paths?: string[];
|
|
48
|
+
/** Viewbox dimensions */
|
|
49
|
+
viewBox: string;
|
|
50
|
+
/** Default fill rule */
|
|
51
|
+
fillRule?: 'nonzero' | 'evenodd';
|
|
52
|
+
/** Default stroke properties */
|
|
53
|
+
stroke?: IconStrokeConfig;
|
|
54
|
+
/** Icon style */
|
|
55
|
+
style: IconStyle;
|
|
56
|
+
/** Available sizes */
|
|
57
|
+
sizes?: IconSizePixels[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Stroke configuration for outline icons.
|
|
61
|
+
*/
|
|
62
|
+
export interface IconStrokeConfig {
|
|
63
|
+
/** Stroke width */
|
|
64
|
+
width: number;
|
|
65
|
+
/** Stroke line cap */
|
|
66
|
+
lineCap: 'butt' | 'round' | 'square';
|
|
67
|
+
/** Stroke line join */
|
|
68
|
+
lineJoin: 'miter' | 'round' | 'bevel';
|
|
69
|
+
/** Miter limit */
|
|
70
|
+
miterLimit?: number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Extended icon metadata for search and organization.
|
|
74
|
+
*/
|
|
75
|
+
export interface IconMetadata extends IconDefinition {
|
|
76
|
+
/** Primary category */
|
|
77
|
+
category: IconCategory;
|
|
78
|
+
/** Secondary categories */
|
|
79
|
+
secondaryCategories?: IconCategory[];
|
|
80
|
+
/** Domain tags */
|
|
81
|
+
domains: DomainCategory[];
|
|
82
|
+
/** Use case tags */
|
|
83
|
+
useCases: IconUseCase[];
|
|
84
|
+
/** Style compatibility */
|
|
85
|
+
availableStyles: IconStyle[];
|
|
86
|
+
/** Recommended sizes */
|
|
87
|
+
recommendedSizes: IconSizePixels[];
|
|
88
|
+
/** Related icon IDs */
|
|
89
|
+
relatedIcons: string[];
|
|
90
|
+
/** Alternative names/aliases */
|
|
91
|
+
aliases: string[];
|
|
92
|
+
/** Localized names */
|
|
93
|
+
localizedNames: Record<string, string>;
|
|
94
|
+
/** Keywords for search */
|
|
95
|
+
keywords: string[];
|
|
96
|
+
/** Description */
|
|
97
|
+
description?: string;
|
|
98
|
+
/** Version added */
|
|
99
|
+
versionAdded: string;
|
|
100
|
+
/** Whether icon is deprecated */
|
|
101
|
+
deprecated?: boolean;
|
|
102
|
+
/** Replacement icon if deprecated */
|
|
103
|
+
replacement?: string;
|
|
104
|
+
/** License information */
|
|
105
|
+
license?: string;
|
|
106
|
+
/** Author/source */
|
|
107
|
+
author?: string;
|
|
108
|
+
/** Unicode codepoint (if in icon font) */
|
|
109
|
+
unicode?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Icon usage statistics.
|
|
113
|
+
*/
|
|
114
|
+
export interface IconUsageStats {
|
|
115
|
+
/** Icon ID */
|
|
116
|
+
iconId: string;
|
|
117
|
+
/** Total usage count */
|
|
118
|
+
totalUsage: number;
|
|
119
|
+
/** Usage by project */
|
|
120
|
+
byProject: Record<string, number>;
|
|
121
|
+
/** Usage by component type */
|
|
122
|
+
byComponentType: Record<string, number>;
|
|
123
|
+
/** First used date */
|
|
124
|
+
firstUsed: string;
|
|
125
|
+
/** Last used date */
|
|
126
|
+
lastUsed: string;
|
|
127
|
+
/** Usage trend */
|
|
128
|
+
trend: 'increasing' | 'stable' | 'decreasing';
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Icon set/collection definition.
|
|
132
|
+
*/
|
|
133
|
+
export interface IconSet {
|
|
134
|
+
/** Set identifier */
|
|
135
|
+
id: string;
|
|
136
|
+
/** Set name */
|
|
137
|
+
name: string;
|
|
138
|
+
/** Set description */
|
|
139
|
+
description: string;
|
|
140
|
+
/** Set version */
|
|
141
|
+
version: string;
|
|
142
|
+
/** Total icon count */
|
|
143
|
+
iconCount: number;
|
|
144
|
+
/** Available styles in this set */
|
|
145
|
+
styles: IconStyle[];
|
|
146
|
+
/** License */
|
|
147
|
+
license: IconLicense;
|
|
148
|
+
/** Author/organization */
|
|
149
|
+
author: string;
|
|
150
|
+
/** Website URL */
|
|
151
|
+
website?: string;
|
|
152
|
+
/** Documentation URL */
|
|
153
|
+
docsUrl?: string;
|
|
154
|
+
/** Icon prefix */
|
|
155
|
+
prefix: string;
|
|
156
|
+
/** Default style */
|
|
157
|
+
defaultStyle: IconStyle;
|
|
158
|
+
/** Categories available */
|
|
159
|
+
categories: IconCategory[];
|
|
160
|
+
/** Icons in this set */
|
|
161
|
+
icons: Record<string, IconDefinition>;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Icon license information.
|
|
165
|
+
*/
|
|
166
|
+
export interface IconLicense {
|
|
167
|
+
/** License name */
|
|
168
|
+
name: string;
|
|
169
|
+
/** SPDX identifier */
|
|
170
|
+
spdx?: string;
|
|
171
|
+
/** License URL */
|
|
172
|
+
url?: string;
|
|
173
|
+
/** Whether attribution is required */
|
|
174
|
+
attributionRequired: boolean;
|
|
175
|
+
/** Attribution text if required */
|
|
176
|
+
attributionText?: string;
|
|
177
|
+
/** Commercial use allowed */
|
|
178
|
+
commercialUse: boolean;
|
|
179
|
+
/** Modification allowed */
|
|
180
|
+
modification: boolean;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* User-created icon collection.
|
|
184
|
+
*/
|
|
185
|
+
export interface UserIconCollection {
|
|
186
|
+
/** Collection ID */
|
|
187
|
+
id: string;
|
|
188
|
+
/** Collection name */
|
|
189
|
+
name: string;
|
|
190
|
+
/** Description */
|
|
191
|
+
description?: string;
|
|
192
|
+
/** Owner user ID */
|
|
193
|
+
ownerId: string;
|
|
194
|
+
/** Icon IDs in collection */
|
|
195
|
+
iconIds: string[];
|
|
196
|
+
/** Custom icon data (user-created icons) */
|
|
197
|
+
customIcons?: IconDefinition[];
|
|
198
|
+
/** Created date */
|
|
199
|
+
createdAt: string;
|
|
200
|
+
/** Last modified date */
|
|
201
|
+
modifiedAt: string;
|
|
202
|
+
/** Whether collection is public */
|
|
203
|
+
isPublic: boolean;
|
|
204
|
+
/** Tags for organization */
|
|
205
|
+
tags: string[];
|
|
206
|
+
/** Cover icon ID */
|
|
207
|
+
coverIconId?: string;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Icon search query.
|
|
211
|
+
*/
|
|
212
|
+
export interface IconSearchQuery {
|
|
213
|
+
/** Search text */
|
|
214
|
+
query: string;
|
|
215
|
+
/** Filter by category */
|
|
216
|
+
categories?: IconCategory[];
|
|
217
|
+
/** Filter by domain */
|
|
218
|
+
domains?: DomainCategory[];
|
|
219
|
+
/** Filter by use case */
|
|
220
|
+
useCases?: IconUseCase[];
|
|
221
|
+
/** Filter by style */
|
|
222
|
+
styles?: IconStyle[];
|
|
223
|
+
/** Filter by size availability */
|
|
224
|
+
sizes?: IconSizePixels[];
|
|
225
|
+
/** Filter by icon set */
|
|
226
|
+
sets?: string[];
|
|
227
|
+
/** Include deprecated icons */
|
|
228
|
+
includeDeprecated?: boolean;
|
|
229
|
+
/** Search mode */
|
|
230
|
+
mode?: 'exact' | 'fuzzy' | 'semantic';
|
|
231
|
+
/** Fuzzy match threshold (0-1) */
|
|
232
|
+
fuzzyThreshold?: number;
|
|
233
|
+
/** Sort by */
|
|
234
|
+
sortBy?: 'relevance' | 'name' | 'popularity' | 'recent';
|
|
235
|
+
/** Sort direction */
|
|
236
|
+
sortDir?: 'asc' | 'desc';
|
|
237
|
+
/** Page number */
|
|
238
|
+
page?: number;
|
|
239
|
+
/** Page size */
|
|
240
|
+
pageSize?: number;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Icon search result.
|
|
244
|
+
*/
|
|
245
|
+
export interface IconSearchResult {
|
|
246
|
+
/** Total matches */
|
|
247
|
+
total: number;
|
|
248
|
+
/** Current page */
|
|
249
|
+
page: number;
|
|
250
|
+
/** Page size */
|
|
251
|
+
pageSize: number;
|
|
252
|
+
/** Results */
|
|
253
|
+
results: IconSearchHit[];
|
|
254
|
+
/** Search suggestions */
|
|
255
|
+
suggestions?: string[];
|
|
256
|
+
/** Related searches */
|
|
257
|
+
relatedSearches?: string[];
|
|
258
|
+
/** Facets for filtering */
|
|
259
|
+
facets?: IconSearchFacets;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Individual search hit.
|
|
263
|
+
*/
|
|
264
|
+
export interface IconSearchHit {
|
|
265
|
+
/** Icon metadata */
|
|
266
|
+
icon: IconMetadata;
|
|
267
|
+
/** Relevance score (0-100) */
|
|
268
|
+
score: number;
|
|
269
|
+
/** Matched fields */
|
|
270
|
+
matchedFields: string[];
|
|
271
|
+
/** Highlighted name */
|
|
272
|
+
highlightedName?: string;
|
|
273
|
+
/** Matched keywords */
|
|
274
|
+
matchedKeywords?: string[];
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Search facets for filtering.
|
|
278
|
+
*/
|
|
279
|
+
export interface IconSearchFacets {
|
|
280
|
+
/** Category counts */
|
|
281
|
+
categories: Record<IconCategory, number>;
|
|
282
|
+
/** Domain counts */
|
|
283
|
+
domains: Record<DomainCategory, number>;
|
|
284
|
+
/** Style counts */
|
|
285
|
+
styles: Record<IconStyle, number>;
|
|
286
|
+
/** Set counts */
|
|
287
|
+
sets: Record<string, number>;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Semantic search configuration (AI-powered).
|
|
291
|
+
*/
|
|
292
|
+
export interface SemanticSearchConfig {
|
|
293
|
+
/** Enable semantic search */
|
|
294
|
+
enabled: boolean;
|
|
295
|
+
/** Embedding model */
|
|
296
|
+
model: 'openai' | 'cohere' | 'local';
|
|
297
|
+
/** Similarity threshold */
|
|
298
|
+
threshold: number;
|
|
299
|
+
/** Maximum results to re-rank */
|
|
300
|
+
maxRerank: number;
|
|
301
|
+
/** Cache embeddings */
|
|
302
|
+
cacheEmbeddings: boolean;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Icon editor configuration.
|
|
306
|
+
*/
|
|
307
|
+
export interface IconEditorConfig {
|
|
308
|
+
/** Canvas size */
|
|
309
|
+
canvasSize: number;
|
|
310
|
+
/** Grid size */
|
|
311
|
+
gridSize: number;
|
|
312
|
+
/** Show grid */
|
|
313
|
+
showGrid: boolean;
|
|
314
|
+
/** Snap to grid */
|
|
315
|
+
snapToGrid: boolean;
|
|
316
|
+
/** Show guides */
|
|
317
|
+
showGuides: boolean;
|
|
318
|
+
/** Default stroke width */
|
|
319
|
+
defaultStrokeWidth: number;
|
|
320
|
+
/** Default fill color */
|
|
321
|
+
defaultFill: string;
|
|
322
|
+
/** Default stroke color */
|
|
323
|
+
defaultStroke: string;
|
|
324
|
+
/** Undo history limit */
|
|
325
|
+
undoLimit: number;
|
|
326
|
+
/** Auto-save interval (ms) */
|
|
327
|
+
autoSaveInterval?: number;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Icon editing operation.
|
|
331
|
+
*/
|
|
332
|
+
export interface IconEditOperation {
|
|
333
|
+
/** Operation type */
|
|
334
|
+
type: IconEditOperationType;
|
|
335
|
+
/** Operation parameters */
|
|
336
|
+
params: Record<string, unknown>;
|
|
337
|
+
/** Timestamp */
|
|
338
|
+
timestamp: string;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Types of edit operations.
|
|
342
|
+
*/
|
|
343
|
+
export type IconEditOperationType = 'add-path' | 'remove-path' | 'modify-path' | 'set-fill' | 'set-stroke' | 'transform' | 'flip-h' | 'flip-v' | 'rotate' | 'scale' | 'combine' | 'subtract' | 'intersect' | 'exclude' | 'simplify' | 'optimize';
|
|
344
|
+
/**
|
|
345
|
+
* Icon transformation.
|
|
346
|
+
*/
|
|
347
|
+
export interface IconTransform {
|
|
348
|
+
/** Translation X */
|
|
349
|
+
translateX: number;
|
|
350
|
+
/** Translation Y */
|
|
351
|
+
translateY: number;
|
|
352
|
+
/** Scale X */
|
|
353
|
+
scaleX: number;
|
|
354
|
+
/** Scale Y */
|
|
355
|
+
scaleY: number;
|
|
356
|
+
/** Rotation in degrees */
|
|
357
|
+
rotate: number;
|
|
358
|
+
/** Rotation origin X */
|
|
359
|
+
originX: number;
|
|
360
|
+
/** Rotation origin Y */
|
|
361
|
+
originY: number;
|
|
362
|
+
/** Skew X */
|
|
363
|
+
skewX: number;
|
|
364
|
+
/** Skew Y */
|
|
365
|
+
skewY: number;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Color modification options.
|
|
369
|
+
*/
|
|
370
|
+
export interface IconColorOptions {
|
|
371
|
+
/** Primary color */
|
|
372
|
+
primary: string;
|
|
373
|
+
/** Secondary color (for duotone) */
|
|
374
|
+
secondary?: string;
|
|
375
|
+
/** Background color */
|
|
376
|
+
background?: string;
|
|
377
|
+
/** Opacity */
|
|
378
|
+
opacity: number;
|
|
379
|
+
/** Color mode */
|
|
380
|
+
colorMode: 'single' | 'gradient' | 'duotone';
|
|
381
|
+
/** Gradient configuration */
|
|
382
|
+
gradient?: IconGradient;
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Gradient configuration for icons.
|
|
386
|
+
*/
|
|
387
|
+
export interface IconGradient {
|
|
388
|
+
/** Gradient type */
|
|
389
|
+
type: 'linear' | 'radial';
|
|
390
|
+
/** Gradient angle (for linear) */
|
|
391
|
+
angle?: number;
|
|
392
|
+
/** Gradient stops */
|
|
393
|
+
stops: GradientStop[];
|
|
394
|
+
/** Center X (for radial) */
|
|
395
|
+
cx?: number;
|
|
396
|
+
/** Center Y (for radial) */
|
|
397
|
+
cy?: number;
|
|
398
|
+
/** Radius (for radial) */
|
|
399
|
+
r?: number;
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Gradient color stop.
|
|
403
|
+
*/
|
|
404
|
+
export interface GradientStop {
|
|
405
|
+
/** Offset (0-1) */
|
|
406
|
+
offset: number;
|
|
407
|
+
/** Color */
|
|
408
|
+
color: string;
|
|
409
|
+
/** Opacity */
|
|
410
|
+
opacity?: number;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Icon combination/composition.
|
|
414
|
+
*/
|
|
415
|
+
export interface IconComposition {
|
|
416
|
+
/** Base icon */
|
|
417
|
+
base: IconDefinition;
|
|
418
|
+
/** Overlay icon (badge) */
|
|
419
|
+
overlay?: IconDefinition;
|
|
420
|
+
/** Overlay position */
|
|
421
|
+
overlayPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
|
|
422
|
+
/** Overlay scale */
|
|
423
|
+
overlayScale?: number;
|
|
424
|
+
/** Overlay offset */
|
|
425
|
+
overlayOffset?: {
|
|
426
|
+
x: number;
|
|
427
|
+
y: number;
|
|
428
|
+
};
|
|
429
|
+
/** Whether to create cutout for overlay */
|
|
430
|
+
cutout?: boolean;
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Icon set creation configuration.
|
|
434
|
+
*/
|
|
435
|
+
export interface IconSetCreatorConfig {
|
|
436
|
+
/** Set name */
|
|
437
|
+
name: string;
|
|
438
|
+
/** Set prefix */
|
|
439
|
+
prefix: string;
|
|
440
|
+
/** Selected icons */
|
|
441
|
+
icons: string[];
|
|
442
|
+
/** Custom naming rules */
|
|
443
|
+
naming: IconNamingConfig;
|
|
444
|
+
/** Export configuration */
|
|
445
|
+
export: IconSetExportConfig;
|
|
446
|
+
/** Include metadata */
|
|
447
|
+
includeMetadata: boolean;
|
|
448
|
+
/** Tree-shaking support */
|
|
449
|
+
treeShakeable: boolean;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Naming configuration for icon sets.
|
|
453
|
+
*/
|
|
454
|
+
export interface IconNamingConfig {
|
|
455
|
+
/** Case style */
|
|
456
|
+
caseStyle: 'camelCase' | 'PascalCase' | 'kebab-case' | 'snake_case';
|
|
457
|
+
/** Prefix to add */
|
|
458
|
+
prefix?: string;
|
|
459
|
+
/** Suffix to add */
|
|
460
|
+
suffix?: string;
|
|
461
|
+
/** Word replacements */
|
|
462
|
+
replacements?: Record<string, string>;
|
|
463
|
+
/** Remove words */
|
|
464
|
+
removeWords?: string[];
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Icon set export configuration.
|
|
468
|
+
*/
|
|
469
|
+
export interface IconSetExportConfig {
|
|
470
|
+
/** Export formats */
|
|
471
|
+
formats: IconExportFormat[];
|
|
472
|
+
/** Output directory */
|
|
473
|
+
outputDir: string;
|
|
474
|
+
/** Generate index file */
|
|
475
|
+
generateIndex: boolean;
|
|
476
|
+
/** Generate TypeScript types */
|
|
477
|
+
generateTypes: boolean;
|
|
478
|
+
/** Generate CSS */
|
|
479
|
+
generateCSS: boolean;
|
|
480
|
+
/** Generate icon font */
|
|
481
|
+
generateFont: boolean;
|
|
482
|
+
/** Font configuration */
|
|
483
|
+
fontConfig?: IconFontConfig;
|
|
484
|
+
/** Sprite configuration */
|
|
485
|
+
spriteConfig?: IconSpriteConfig;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Icon export formats.
|
|
489
|
+
*/
|
|
490
|
+
export type IconExportFormat = 'svg' | 'png' | 'webp' | 'ico' | 'icns' | 'pdf' | 'jsx' | 'tsx' | 'vue' | 'svelte' | 'json' | 'css' | 'scss' | 'woff2' | 'ttf';
|
|
491
|
+
/**
|
|
492
|
+
* Icon font generation configuration.
|
|
493
|
+
*/
|
|
494
|
+
export interface IconFontConfig {
|
|
495
|
+
/** Font family name */
|
|
496
|
+
fontName: string;
|
|
497
|
+
/** Class prefix */
|
|
498
|
+
classPrefix: string;
|
|
499
|
+
/** Unicode starting point */
|
|
500
|
+
unicodeStart: number;
|
|
501
|
+
/** Font formats to generate */
|
|
502
|
+
formats: ('woff2' | 'woff' | 'ttf' | 'eot' | 'svg')[];
|
|
503
|
+
/** Normalize icon sizes */
|
|
504
|
+
normalize: boolean;
|
|
505
|
+
/** Center icons */
|
|
506
|
+
centerHorizontally: boolean;
|
|
507
|
+
centerVertically: boolean;
|
|
508
|
+
/** Font height */
|
|
509
|
+
fontHeight: number;
|
|
510
|
+
/** Descent */
|
|
511
|
+
descent: number;
|
|
512
|
+
/** Round values */
|
|
513
|
+
round: number;
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* SVG sprite configuration.
|
|
517
|
+
*/
|
|
518
|
+
export interface IconSpriteConfig {
|
|
519
|
+
/** Sprite filename */
|
|
520
|
+
filename: string;
|
|
521
|
+
/** Symbol mode (versus inline) */
|
|
522
|
+
symbolMode: boolean;
|
|
523
|
+
/** Include style element */
|
|
524
|
+
includeStyle: boolean;
|
|
525
|
+
/** Namespace prefix */
|
|
526
|
+
symbolPrefix: string;
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* Icon preview configuration.
|
|
530
|
+
*/
|
|
531
|
+
export interface IconPreviewConfig {
|
|
532
|
+
/** Preview sizes */
|
|
533
|
+
sizes: IconSizePixels[];
|
|
534
|
+
/** Show in both themes */
|
|
535
|
+
showBothThemes: boolean;
|
|
536
|
+
/** Background options */
|
|
537
|
+
backgrounds: PreviewBackground[];
|
|
538
|
+
/** Show grid */
|
|
539
|
+
showGrid: boolean;
|
|
540
|
+
/** Grid color */
|
|
541
|
+
gridColor: string;
|
|
542
|
+
/** Animation preview */
|
|
543
|
+
animationPreview: boolean;
|
|
544
|
+
/** Compare mode */
|
|
545
|
+
compareMode: boolean;
|
|
546
|
+
/** Compare icons */
|
|
547
|
+
compareIcons?: string[];
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Preview background options.
|
|
551
|
+
*/
|
|
552
|
+
export interface PreviewBackground {
|
|
553
|
+
/** Background name */
|
|
554
|
+
name: string;
|
|
555
|
+
/** Background color or image */
|
|
556
|
+
value: string;
|
|
557
|
+
/** Whether it's a pattern */
|
|
558
|
+
isPattern?: boolean;
|
|
559
|
+
/** Contrast for icon color suggestion */
|
|
560
|
+
suggestedIconColor?: string;
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Animation preview configuration.
|
|
564
|
+
*/
|
|
565
|
+
export interface IconAnimationPreview {
|
|
566
|
+
/** Animation type */
|
|
567
|
+
type: IconAnimationType;
|
|
568
|
+
/** Duration in ms */
|
|
569
|
+
duration: number;
|
|
570
|
+
/** Easing function */
|
|
571
|
+
easing: string;
|
|
572
|
+
/** Iteration count */
|
|
573
|
+
iterations: number | 'infinite';
|
|
574
|
+
/** Direction */
|
|
575
|
+
direction: 'normal' | 'reverse' | 'alternate' | 'alternate-reverse';
|
|
576
|
+
/** Delay in ms */
|
|
577
|
+
delay: number;
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
* Icon animation types.
|
|
581
|
+
*/
|
|
582
|
+
export type IconAnimationType = 'spin' | 'pulse' | 'bounce' | 'shake' | 'flip' | 'beat' | 'fade' | 'beat-fade' | 'spin-pulse' | 'custom';
|
|
583
|
+
/**
|
|
584
|
+
* Favicon generation configuration.
|
|
585
|
+
*/
|
|
586
|
+
export interface FaviconGeneratorConfig {
|
|
587
|
+
/** Source icon */
|
|
588
|
+
sourceIcon: IconDefinition | string;
|
|
589
|
+
/** App name */
|
|
590
|
+
appName: string;
|
|
591
|
+
/** Short name */
|
|
592
|
+
shortName: string;
|
|
593
|
+
/** Theme color */
|
|
594
|
+
themeColor: string;
|
|
595
|
+
/** Background color */
|
|
596
|
+
backgroundColor: string;
|
|
597
|
+
/** Display mode */
|
|
598
|
+
display: 'standalone' | 'fullscreen' | 'minimal-ui' | 'browser';
|
|
599
|
+
/** Orientation */
|
|
600
|
+
orientation: 'any' | 'portrait' | 'landscape';
|
|
601
|
+
/** Start URL */
|
|
602
|
+
startUrl: string;
|
|
603
|
+
/** Sizes to generate */
|
|
604
|
+
sizes: FaviconSize[];
|
|
605
|
+
/** Generate manifest.json */
|
|
606
|
+
generateManifest: boolean;
|
|
607
|
+
/** Generate browserconfig.xml (Windows) */
|
|
608
|
+
generateBrowserConfig: boolean;
|
|
609
|
+
/** Output configuration */
|
|
610
|
+
output: FaviconOutputConfig;
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* Favicon sizes to generate.
|
|
614
|
+
*/
|
|
615
|
+
export interface FaviconSize {
|
|
616
|
+
/** Width */
|
|
617
|
+
width: number;
|
|
618
|
+
/** Height */
|
|
619
|
+
height: number;
|
|
620
|
+
/** Purpose */
|
|
621
|
+
purpose: 'any' | 'maskable' | 'monochrome' | 'favicon' | 'apple-touch';
|
|
622
|
+
/** Filename */
|
|
623
|
+
filename?: string;
|
|
624
|
+
/** Format */
|
|
625
|
+
format: 'png' | 'ico' | 'svg';
|
|
626
|
+
}
|
|
627
|
+
/**
|
|
628
|
+
* Standard favicon sizes.
|
|
629
|
+
*/
|
|
630
|
+
export declare const STANDARD_FAVICON_SIZES: FaviconSize[];
|
|
631
|
+
/**
|
|
632
|
+
* Favicon output configuration.
|
|
633
|
+
*/
|
|
634
|
+
export interface FaviconOutputConfig {
|
|
635
|
+
/** Output directory */
|
|
636
|
+
outputDir: string;
|
|
637
|
+
/** Base path for URLs */
|
|
638
|
+
basePath: string;
|
|
639
|
+
/** Generate HTML link tags */
|
|
640
|
+
generateHtml: boolean;
|
|
641
|
+
/** Generate meta tags */
|
|
642
|
+
generateMeta: boolean;
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Generated favicon result.
|
|
646
|
+
*/
|
|
647
|
+
export interface FaviconGenerationResult {
|
|
648
|
+
/** Generated files */
|
|
649
|
+
files: GeneratedFile[];
|
|
650
|
+
/** HTML to include */
|
|
651
|
+
html: string;
|
|
652
|
+
/** manifest.json content */
|
|
653
|
+
manifest?: Record<string, unknown>;
|
|
654
|
+
/** browserconfig.xml content */
|
|
655
|
+
browserConfig?: string;
|
|
656
|
+
}
|
|
657
|
+
/**
|
|
658
|
+
* Generated file information.
|
|
659
|
+
*/
|
|
660
|
+
export interface GeneratedFile {
|
|
661
|
+
/** Filename */
|
|
662
|
+
filename: string;
|
|
663
|
+
/** File path */
|
|
664
|
+
path: string;
|
|
665
|
+
/** File size in bytes */
|
|
666
|
+
size: number;
|
|
667
|
+
/** MIME type */
|
|
668
|
+
mimeType: string;
|
|
669
|
+
/** Dimensions if image */
|
|
670
|
+
dimensions?: {
|
|
671
|
+
width: number;
|
|
672
|
+
height: number;
|
|
673
|
+
};
|
|
674
|
+
}
|
|
675
|
+
/**
|
|
676
|
+
* Framework-specific icon component configuration.
|
|
677
|
+
*/
|
|
678
|
+
export interface FrameworkIconConfig {
|
|
679
|
+
/** Component name */
|
|
680
|
+
componentName: string;
|
|
681
|
+
/** File extension */
|
|
682
|
+
fileExtension: string;
|
|
683
|
+
/** Import style */
|
|
684
|
+
importStyle: 'named' | 'default' | 'namespace';
|
|
685
|
+
/** Props interface name */
|
|
686
|
+
propsInterfaceName: string;
|
|
687
|
+
/** Supports tree-shaking */
|
|
688
|
+
treeShakeable: boolean;
|
|
689
|
+
/** SSR support */
|
|
690
|
+
ssrSupport: boolean;
|
|
691
|
+
/** TypeScript support */
|
|
692
|
+
typeScriptSupport: boolean;
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* React icon component props.
|
|
696
|
+
*/
|
|
697
|
+
export interface ReactIconProps {
|
|
698
|
+
/** Icon size */
|
|
699
|
+
size?: IconSize | number;
|
|
700
|
+
/** Icon color */
|
|
701
|
+
color?: string;
|
|
702
|
+
/** Additional class names */
|
|
703
|
+
className?: string;
|
|
704
|
+
/** Inline styles */
|
|
705
|
+
style?: React.CSSProperties;
|
|
706
|
+
/** Title for accessibility */
|
|
707
|
+
title?: string;
|
|
708
|
+
/** Description for accessibility */
|
|
709
|
+
desc?: string;
|
|
710
|
+
/** Whether icon is decorative (aria-hidden) */
|
|
711
|
+
decorative?: boolean;
|
|
712
|
+
/** Animation */
|
|
713
|
+
animation?: IconAnimationType;
|
|
714
|
+
/** Animation duration */
|
|
715
|
+
animationDuration?: number;
|
|
716
|
+
/** onClick handler */
|
|
717
|
+
onClick?: (event: React.MouseEvent) => void;
|
|
718
|
+
}
|
|
719
|
+
/**
|
|
720
|
+
* Vue icon component props.
|
|
721
|
+
*/
|
|
722
|
+
export interface VueIconProps {
|
|
723
|
+
/** Icon size */
|
|
724
|
+
size?: IconSize | number;
|
|
725
|
+
/** Icon color */
|
|
726
|
+
color?: string;
|
|
727
|
+
/** Additional class names */
|
|
728
|
+
class?: string;
|
|
729
|
+
/** Title for accessibility */
|
|
730
|
+
title?: string;
|
|
731
|
+
/** Animation */
|
|
732
|
+
animation?: IconAnimationType;
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* Angular icon component inputs.
|
|
736
|
+
*/
|
|
737
|
+
export interface AngularIconInputs {
|
|
738
|
+
/** Icon name */
|
|
739
|
+
name: string;
|
|
740
|
+
/** Icon size */
|
|
741
|
+
size: IconSize | number;
|
|
742
|
+
/** Icon color */
|
|
743
|
+
color: string;
|
|
744
|
+
/** Title for accessibility */
|
|
745
|
+
title: string;
|
|
746
|
+
/** Animation */
|
|
747
|
+
animation: IconAnimationType;
|
|
748
|
+
}
|
|
749
|
+
/**
|
|
750
|
+
* Web Component (Lit) icon properties.
|
|
751
|
+
*/
|
|
752
|
+
export interface WebComponentIconProps {
|
|
753
|
+
/** Icon name */
|
|
754
|
+
name: string;
|
|
755
|
+
/** Icon size */
|
|
756
|
+
size: IconSize | number;
|
|
757
|
+
/** Icon color */
|
|
758
|
+
color: string;
|
|
759
|
+
/** Title for accessibility */
|
|
760
|
+
title: string;
|
|
761
|
+
}
|
|
762
|
+
/**
|
|
763
|
+
* Blazor icon parameters.
|
|
764
|
+
*/
|
|
765
|
+
export interface BlazorIconParameters {
|
|
766
|
+
/** Icon name */
|
|
767
|
+
Name: string;
|
|
768
|
+
/** Icon size */
|
|
769
|
+
Size: IconSize | number;
|
|
770
|
+
/** Icon color */
|
|
771
|
+
Color: string;
|
|
772
|
+
/** CSS class */
|
|
773
|
+
CssClass: string;
|
|
774
|
+
/** Title for accessibility */
|
|
775
|
+
Title: string;
|
|
776
|
+
}
|
|
777
|
+
/**
|
|
778
|
+
* Flutter IconData equivalent.
|
|
779
|
+
*/
|
|
780
|
+
export interface FlutterIconData {
|
|
781
|
+
/** Codepoint */
|
|
782
|
+
codePoint: number;
|
|
783
|
+
/** Font family */
|
|
784
|
+
fontFamily: string;
|
|
785
|
+
/** Font package */
|
|
786
|
+
fontPackage: string;
|
|
787
|
+
/** Match text direction */
|
|
788
|
+
matchTextDirection: boolean;
|
|
789
|
+
}
|
|
790
|
+
/**
|
|
791
|
+
* Figma plugin configuration.
|
|
792
|
+
*/
|
|
793
|
+
export interface FigmaPluginConfig {
|
|
794
|
+
/** Plugin ID */
|
|
795
|
+
pluginId: string;
|
|
796
|
+
/** Sync configuration */
|
|
797
|
+
sync: FigmaSyncConfig;
|
|
798
|
+
/** Insert options */
|
|
799
|
+
insertOptions: FigmaInsertOptions;
|
|
800
|
+
}
|
|
801
|
+
/**
|
|
802
|
+
* Figma sync configuration.
|
|
803
|
+
*/
|
|
804
|
+
export interface FigmaSyncConfig {
|
|
805
|
+
/** Auto-sync enabled */
|
|
806
|
+
autoSync: boolean;
|
|
807
|
+
/** Sync interval in minutes */
|
|
808
|
+
syncInterval: number;
|
|
809
|
+
/** Which collections to sync */
|
|
810
|
+
collections: string[];
|
|
811
|
+
/** Sync direction */
|
|
812
|
+
direction: 'push' | 'pull' | 'both';
|
|
813
|
+
}
|
|
814
|
+
/**
|
|
815
|
+
* Figma insert options.
|
|
816
|
+
*/
|
|
817
|
+
export interface FigmaInsertOptions {
|
|
818
|
+
/** Insert as component */
|
|
819
|
+
asComponent: boolean;
|
|
820
|
+
/** Auto-layout */
|
|
821
|
+
autoLayout: boolean;
|
|
822
|
+
/** Default size */
|
|
823
|
+
defaultSize: number;
|
|
824
|
+
/** Maintain aspect ratio */
|
|
825
|
+
maintainAspectRatio: boolean;
|
|
826
|
+
}
|
|
827
|
+
/**
|
|
828
|
+
* Sketch plugin configuration.
|
|
829
|
+
*/
|
|
830
|
+
export interface SketchPluginConfig {
|
|
831
|
+
/** Plugin identifier */
|
|
832
|
+
identifier: string;
|
|
833
|
+
/** Library configuration */
|
|
834
|
+
library: SketchLibraryConfig;
|
|
835
|
+
}
|
|
836
|
+
/**
|
|
837
|
+
* Sketch library configuration.
|
|
838
|
+
*/
|
|
839
|
+
export interface SketchLibraryConfig {
|
|
840
|
+
/** Library name */
|
|
841
|
+
name: string;
|
|
842
|
+
/** Library path */
|
|
843
|
+
path: string;
|
|
844
|
+
/** Auto-update */
|
|
845
|
+
autoUpdate: boolean;
|
|
846
|
+
}
|
|
847
|
+
/**
|
|
848
|
+
* Icon analytics configuration.
|
|
849
|
+
*/
|
|
850
|
+
export interface IconAnalyticsConfig {
|
|
851
|
+
/** Enable analytics */
|
|
852
|
+
enabled: boolean;
|
|
853
|
+
/** Track usage */
|
|
854
|
+
trackUsage: boolean;
|
|
855
|
+
/** Track searches */
|
|
856
|
+
trackSearches: boolean;
|
|
857
|
+
/** Retention days */
|
|
858
|
+
retentionDays: number;
|
|
859
|
+
/** Anonymize data */
|
|
860
|
+
anonymize: boolean;
|
|
861
|
+
}
|
|
862
|
+
/**
|
|
863
|
+
* Icon analytics dashboard data.
|
|
864
|
+
*/
|
|
865
|
+
export interface IconAnalyticsDashboard {
|
|
866
|
+
/** Time period */
|
|
867
|
+
period: {
|
|
868
|
+
start: string;
|
|
869
|
+
end: string;
|
|
870
|
+
};
|
|
871
|
+
/** Total icons used */
|
|
872
|
+
totalIconsUsed: number;
|
|
873
|
+
/** Unique icons used */
|
|
874
|
+
uniqueIconsUsed: number;
|
|
875
|
+
/** Most used icons */
|
|
876
|
+
mostUsed: IconUsageStats[];
|
|
877
|
+
/** Least used icons */
|
|
878
|
+
leastUsed: IconUsageStats[];
|
|
879
|
+
/** Unused icons */
|
|
880
|
+
unusedIcons: string[];
|
|
881
|
+
/** Search analytics */
|
|
882
|
+
searchAnalytics: SearchAnalytics;
|
|
883
|
+
/** Missing icon requests */
|
|
884
|
+
missingIconRequests: MissingIconRequest[];
|
|
885
|
+
}
|
|
886
|
+
/**
|
|
887
|
+
* Search analytics data.
|
|
888
|
+
*/
|
|
889
|
+
export interface SearchAnalytics {
|
|
890
|
+
/** Total searches */
|
|
891
|
+
totalSearches: number;
|
|
892
|
+
/** Unique queries */
|
|
893
|
+
uniqueQueries: number;
|
|
894
|
+
/** Top queries */
|
|
895
|
+
topQueries: {
|
|
896
|
+
query: string;
|
|
897
|
+
count: number;
|
|
898
|
+
}[];
|
|
899
|
+
/** Zero-result queries */
|
|
900
|
+
zeroResultQueries: {
|
|
901
|
+
query: string;
|
|
902
|
+
count: number;
|
|
903
|
+
}[];
|
|
904
|
+
/** Average results per search */
|
|
905
|
+
avgResultsPerSearch: number;
|
|
906
|
+
/** Click-through rate */
|
|
907
|
+
clickThroughRate: number;
|
|
908
|
+
}
|
|
909
|
+
/**
|
|
910
|
+
* Missing icon request.
|
|
911
|
+
*/
|
|
912
|
+
export interface MissingIconRequest {
|
|
913
|
+
/** Requested icon name/description */
|
|
914
|
+
request: string;
|
|
915
|
+
/** Number of times requested */
|
|
916
|
+
count: number;
|
|
917
|
+
/** First requested date */
|
|
918
|
+
firstRequested: string;
|
|
919
|
+
/** Users who requested */
|
|
920
|
+
userCount: number;
|
|
921
|
+
/** Suggested alternatives */
|
|
922
|
+
suggestedAlternatives?: string[];
|
|
923
|
+
}
|
|
924
|
+
/**
|
|
925
|
+
* Cursor icon definition.
|
|
926
|
+
*/
|
|
927
|
+
export interface CursorIconDefinition extends IconDefinition {
|
|
928
|
+
/** Cursor type */
|
|
929
|
+
cursorType: CursorType;
|
|
930
|
+
/** Hotspot X coordinate */
|
|
931
|
+
hotspotX: number;
|
|
932
|
+
/** Hotspot Y coordinate */
|
|
933
|
+
hotspotY: number;
|
|
934
|
+
/** Animation frames (for animated cursors) */
|
|
935
|
+
frames?: CursorFrame[];
|
|
936
|
+
/** Frame rate for animation */
|
|
937
|
+
frameRate?: number;
|
|
938
|
+
}
|
|
939
|
+
/**
|
|
940
|
+
* Standard cursor types.
|
|
941
|
+
*/
|
|
942
|
+
export type CursorType = 'pointer' | 'crosshair' | 'move' | 'resize-n' | 'resize-s' | 'resize-e' | 'resize-w' | 'resize-ne' | 'resize-nw' | 'resize-se' | 'resize-sw' | 'resize-ns' | 'resize-ew' | 'resize-nesw' | 'resize-nwse' | 'text' | 'cell' | 'grab' | 'grabbing' | 'zoom-in' | 'zoom-out' | 'rotate' | 'draw' | 'brush' | 'eraser' | 'eyedropper' | 'bucket' | 'pen' | 'line' | 'rectangle' | 'ellipse' | 'wait' | 'progress' | 'not-allowed' | 'help' | 'context-menu' | 'custom';
|
|
943
|
+
/**
|
|
944
|
+
* Cursor animation frame.
|
|
945
|
+
*/
|
|
946
|
+
export interface CursorFrame {
|
|
947
|
+
/** Frame icon/image */
|
|
948
|
+
icon: IconDefinition;
|
|
949
|
+
/** Frame duration in ms */
|
|
950
|
+
duration: number;
|
|
951
|
+
}
|
|
952
|
+
/**
|
|
953
|
+
* Desktop/high-DPI icon configuration.
|
|
954
|
+
*/
|
|
955
|
+
export interface DesktopIconConfig {
|
|
956
|
+
/** Base icon */
|
|
957
|
+
baseIcon: IconDefinition;
|
|
958
|
+
/** Sizes to generate */
|
|
959
|
+
sizes: IconSizePixels[];
|
|
960
|
+
/** High-DPI scales */
|
|
961
|
+
scales: (1 | 1.5 | 2 | 3 | 4)[];
|
|
962
|
+
/** Platform-specific exports */
|
|
963
|
+
platforms: DesktopIconPlatform[];
|
|
964
|
+
}
|
|
965
|
+
/**
|
|
966
|
+
* Desktop platform targets.
|
|
967
|
+
*/
|
|
968
|
+
export interface DesktopIconPlatform {
|
|
969
|
+
/** Platform name */
|
|
970
|
+
platform: 'windows' | 'macos' | 'linux';
|
|
971
|
+
/** Format */
|
|
972
|
+
format: 'ico' | 'icns' | 'png';
|
|
973
|
+
/** Sizes for this platform */
|
|
974
|
+
sizes: IconSizePixels[];
|
|
975
|
+
/** Output filename */
|
|
976
|
+
filename: string;
|
|
977
|
+
}
|
|
978
|
+
/**
|
|
979
|
+
* Windows ICO file generation.
|
|
980
|
+
*/
|
|
981
|
+
export interface WindowsIcoConfig {
|
|
982
|
+
/** Sizes to include */
|
|
983
|
+
sizes: (16 | 32 | 48 | 64 | 128 | 256)[];
|
|
984
|
+
/** Include 256-color versions */
|
|
985
|
+
include256Color: boolean;
|
|
986
|
+
/** Compression */
|
|
987
|
+
compress: boolean;
|
|
988
|
+
}
|
|
989
|
+
/**
|
|
990
|
+
* macOS ICNS file generation.
|
|
991
|
+
*/
|
|
992
|
+
export interface MacOSIcnsConfig {
|
|
993
|
+
/** Sizes to include */
|
|
994
|
+
sizes: (16 | 32 | 64 | 128 | 256 | 512 | 1024)[];
|
|
995
|
+
/** Include @2x versions */
|
|
996
|
+
includeRetina: boolean;
|
|
997
|
+
}
|
|
998
|
+
/**
|
|
999
|
+
* Thematic icon package definition.
|
|
1000
|
+
*/
|
|
1001
|
+
export interface ThematicIconPackage {
|
|
1002
|
+
/** Package name */
|
|
1003
|
+
name: string;
|
|
1004
|
+
/** npm package name */
|
|
1005
|
+
npmName: string;
|
|
1006
|
+
/** Description */
|
|
1007
|
+
description: string;
|
|
1008
|
+
/** Total icon count */
|
|
1009
|
+
iconCount: number;
|
|
1010
|
+
/** Categories included */
|
|
1011
|
+
categories: string[];
|
|
1012
|
+
/** Domains covered */
|
|
1013
|
+
domains: DomainCategory[];
|
|
1014
|
+
/** Dependencies on other packages */
|
|
1015
|
+
dependencies: string[];
|
|
1016
|
+
/** Version */
|
|
1017
|
+
version: string;
|
|
1018
|
+
}
|
|
1019
|
+
/**
|
|
1020
|
+
* Available thematic packages.
|
|
1021
|
+
*/
|
|
1022
|
+
export declare const THEMATIC_PACKAGES: ThematicIconPackage[];
|
|
1023
|
+
//# sourceMappingURL=icon-tools.d.ts.map
|