├── .gitignore
├── README.md
├── cli.js
├── index.js
├── package-lock.json
├── package.json
└── src
└── icons
└── FluentSearch12Regular.svelte
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | node_modules/
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Svelte Icon Library - Svelicon 🎨
2 |
3 | Create Svelte components from Iconify SVG icons with type-safe support. A simple CLI tool for generating Svelte icons.
4 |
5 | ## Features ✨
6 |
7 | - 🎯 **Iconify Integration**: Access and download icons from the Iconify collection.
8 | - ⚡ **Fast Conversion**: Quickly convert SVG icons to Svelte components.
9 | - 📦 **TypeScript Support**: Generate fully typed components with interfaces for Svelte TypeScript projects.
10 | - 🎨 **Customizable Icons**: Control icon size, display behavior, and spacing.
11 | - 🛠️ **CLI Tool**: Easy-to-use command-line interface for Svelte icon generation.
12 | - 🔄 **Flexible Output**: Generate JavaScript or TypeScript Svelte components.
13 |
14 | > Svelicon streamlines the process of using Iconify icons in your Svelte projects, offering TypeScript support and flexible customization.
15 |
16 | ## Requirements 🗒️
17 |
18 | - Svelte 5
19 | - Awesomeness
20 |
21 | ## Usage 🚀
22 |
23 | ### Basic Usage
24 |
25 | ```bash
26 | npx svelicon fluent/person-passkey-28-filled
27 | ```
28 |
29 | This command downloads the `person-passkey-28-filled` icon from the `fluent` collection and creates a TypeScript Svelte component at
30 | ```
31 | src/icons/FluentPersonPasskey28Filled.svelte
32 | ```
33 |
34 | ### CLI Options
35 |
36 | ```bash
37 | npx svelicon [options] [collection]/[icon]
38 |
39 | Options:
40 | -o, --output
Output directory (default: "src/icons")
41 | --withts Generate TypeScript version (default: true)
42 | --withjs Generate JavaScript version
43 | -h, --help Display help for command
44 | ```
45 |
46 | **Example**:
47 | ```bash
48 | npx svelicon --withjs fluent/person-passkey-28-filled
49 | ```
50 |
51 | ## Component Props 🎛️
52 |
53 | All generated components accept these props:
54 |
55 | ```typescript
56 | interface IconProps {
57 | size?: number; // Icon size in em units
58 | class?: string; // Add custom CSS classes to the SVG element
59 | }
60 | ```
61 |
62 | ## Examples 📝
63 |
64 | ### JavaScript Usage
65 |
66 | ```svelte
67 |
70 |
71 |
72 | ```
73 |
74 | ### TypeScript Usage
75 |
76 | ```svelte
77 |
85 |
86 |
87 | ```
88 |
89 | ## Component Output Structure 🏗️
90 |
91 | Generated components include:
92 |
93 | ```svelte
94 |
100 |
101 |
104 |
105 |
106 | ```
107 |
108 | ## Benefits 🌟
109 |
110 | - **Zero Runtime Dependencies**: Svelte icon components are standalone.
111 | - **Tree-Shakeable**: Only import the Svelte icons you use.
112 | - **Type-Safe Svelte**: Full TypeScript support for Svelte projects.
113 | - **Small Bundle Size**: Minimal impact on your Svelte app's size.
114 | - **Flexible Svelte Icons**: Use any Iconify icon in your Svelte project.
115 |
116 | https://youtu.be/6cpXq1MHg-A
117 |
118 | ## Contributing 🤝
119 |
120 | Contributions are welcome! Please read our Contributing Guide for details.
121 |
122 | ## License 📄
123 |
124 | MIT © [Friend of Svelte](https://github.com/friendofsvelte)
125 |
126 | ## Support 💖
127 |
128 | If you find this Svelte icon library helpful, please consider:
129 |
130 | - ⭐ Starring the GitHub repo
131 | - 🐛 Creating issues for bugs and feature requests
132 | - 🔀 Contributing to the code base
133 |
134 | ## Related Projects 🔗
135 |
136 | - [Iconify](https://iconify.design/)
137 | - [SvelteKit](https://kit.svelte.dev/)
138 | - [Friend of Svelte](https://github.com/friendofsvelte)
139 |
140 | ---
141 |
142 | Made with ❤️ by [Friend of Svelte](https://github.com/friendofsvelte)
143 |
--------------------------------------------------------------------------------
/cli.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | import {program} from 'commander';
3 | import {downloadIcon} from './index.js';
4 |
5 | program
6 | .name('iconify-svelte')
7 | .description('Download Iconify icons as Svelte components')
8 | .argument('', 'icon collection (e.g., mdi)')
9 | .option('-o, --output ', 'output directory', 'src/icons')
10 | .option('--withts', 'generate TypeScript version', true)
11 | .option('--withjs', 'generate JavaScript version', false)
12 | .action(async (icon, options) => {
13 | try {
14 | const results = await downloadIcon(icon, {
15 | outputDir: options.output, withTs: options.withts, withJs: options.withjs
16 | });
17 |
18 | if (results.length) {
19 | console.log('https://github.com/friendofsvelte/svelicon ✨ \n');
20 | }
21 | results.forEach(file => {
22 | console.log(`🚀 Successfully created: ${file}`);
23 | });
24 | } catch (error) {
25 | console.error('Error:', error.message);
26 | process.exit(1);
27 | }
28 | });
29 |
30 | program.parse();
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 | import {promises as fs} from 'fs';
3 | import path from 'path';
4 | import {mkdirp} from 'mkdirp';
5 | import {parseSVGContent, convertParsedSVG, iconToSVG} from '@iconify/utils';
6 |
7 | const capitalizeFirstLetter = (string) => {
8 | // Split the string by ':' and '-' to handle both separator types
9 | return string
10 | .split(/[:,-]/)
11 | .map(word => word.charAt(0).toUpperCase() + word.slice(1))
12 | .join('');
13 | };
14 |
15 | // Common template parts
16 | const generateSvgTemplate = (pathData, width, height, size) => ``;
24 |
25 | const generateComponentTemplate = ({
26 | scriptContent, size = 'size', pathData, width, height
27 | }) => `${scriptContent}
28 |
29 | ${generateSvgTemplate(pathData, width, height, size)}`;
30 |
31 | function generateComponent(pathData, height, width, componentName, isTypescript) {
32 | const scriptContent = isTypescript ? `
38 |
39 | ` : ``;
44 |
45 | return generateComponentTemplate({
46 | scriptContent, pathData, width, height
47 | });
48 | }
49 |
50 | async function processIconData(svgContent) {
51 | const parsedSVG = parseSVGContent(svgContent);
52 | if (!parsedSVG) {
53 | throw new Error('Could not parse SVG content');
54 | }
55 |
56 | const iconData = convertParsedSVG(parsedSVG);
57 | if (!iconData) {
58 | throw new Error('Could not convert SVG to icon data');
59 | }
60 |
61 | return iconData;
62 | }
63 |
64 | export async function downloadIcon(icon, options = {}) {
65 | const {
66 | outputDir = 'src/icons', withTs = false, withJs = true
67 | } = options;
68 |
69 | try {
70 | // Replace spaces with slashes in the name
71 | // Fetch and validate icon
72 | const response = await axios.get(`https://api.iconify.design/${icon}.svg`);
73 | if (response.status !== 200) {
74 | console.log(`Failed to download icon ${icon}`);
75 | return [];
76 | }
77 |
78 | // Process icon data
79 | const iconData = await processIconData(response.data);
80 | const renderData = iconToSVG(iconData, {
81 | height: 'auto', width: 'auto'
82 | });
83 |
84 | // Prepare output
85 | await mkdirp(outputDir);
86 | const names = icon.split('/');
87 | const collectionName = names[0];
88 | const iconName = names[1];
89 | if (!iconName) {
90 | throw new Error('Invalid icon name');
91 | }
92 | const componentName = `${capitalizeFirstLetter(collectionName)}${capitalizeFirstLetter(iconName.replace(/ /g, '-'))}`;
93 |
94 | // Generate component content based on type
95 | const content = generateComponent(renderData.body, iconData.height, iconData.width, componentName, withTs);
96 |
97 | // Write file
98 | const outputPath = path.join(outputDir, `${componentName}.svelte`);
99 | await fs.writeFile(outputPath, content, 'utf8');
100 |
101 | return [outputPath];
102 | } catch (error) {
103 | console.error(`Failed to download icon ${icon}:\n ${error.message}`);
104 | return [];
105 | }
106 | }
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "svelicon",
3 | "version": "1.0.3-dev",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "svelicon",
9 | "version": "1.0.3-dev",
10 | "dependencies": {
11 | "@iconify/utils": "^2.1.5",
12 | "axios": "^1.6.2",
13 | "commander": "^11.1.0",
14 | "mkdirp": "^3.0.1"
15 | },
16 | "bin": {
17 | "svelicon": "cli.js"
18 | }
19 | },
20 | "node_modules/@antfu/install-pkg": {
21 | "version": "0.4.1",
22 | "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz",
23 | "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==",
24 | "license": "MIT",
25 | "dependencies": {
26 | "package-manager-detector": "^0.2.0",
27 | "tinyexec": "^0.3.0"
28 | },
29 | "funding": {
30 | "url": "https://github.com/sponsors/antfu"
31 | }
32 | },
33 | "node_modules/@antfu/utils": {
34 | "version": "0.7.10",
35 | "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz",
36 | "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==",
37 | "license": "MIT",
38 | "funding": {
39 | "url": "https://github.com/sponsors/antfu"
40 | }
41 | },
42 | "node_modules/@iconify/types": {
43 | "version": "2.0.0",
44 | "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
45 | "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
46 | "license": "MIT"
47 | },
48 | "node_modules/@iconify/utils": {
49 | "version": "2.1.33",
50 | "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.33.tgz",
51 | "integrity": "sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==",
52 | "license": "MIT",
53 | "dependencies": {
54 | "@antfu/install-pkg": "^0.4.0",
55 | "@antfu/utils": "^0.7.10",
56 | "@iconify/types": "^2.0.0",
57 | "debug": "^4.3.6",
58 | "kolorist": "^1.8.0",
59 | "local-pkg": "^0.5.0",
60 | "mlly": "^1.7.1"
61 | }
62 | },
63 | "node_modules/acorn": {
64 | "version": "8.14.0",
65 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
66 | "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
67 | "license": "MIT",
68 | "bin": {
69 | "acorn": "bin/acorn"
70 | },
71 | "engines": {
72 | "node": ">=0.4.0"
73 | }
74 | },
75 | "node_modules/asynckit": {
76 | "version": "0.4.0",
77 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
78 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
79 | "license": "MIT"
80 | },
81 | "node_modules/axios": {
82 | "version": "1.7.7",
83 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
84 | "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
85 | "license": "MIT",
86 | "dependencies": {
87 | "follow-redirects": "^1.15.6",
88 | "form-data": "^4.0.0",
89 | "proxy-from-env": "^1.1.0"
90 | }
91 | },
92 | "node_modules/combined-stream": {
93 | "version": "1.0.8",
94 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
95 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
96 | "license": "MIT",
97 | "dependencies": {
98 | "delayed-stream": "~1.0.0"
99 | },
100 | "engines": {
101 | "node": ">= 0.8"
102 | }
103 | },
104 | "node_modules/commander": {
105 | "version": "11.1.0",
106 | "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
107 | "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
108 | "license": "MIT",
109 | "engines": {
110 | "node": ">=16"
111 | }
112 | },
113 | "node_modules/confbox": {
114 | "version": "0.1.8",
115 | "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
116 | "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
117 | "license": "MIT"
118 | },
119 | "node_modules/debug": {
120 | "version": "4.3.7",
121 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
122 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
123 | "license": "MIT",
124 | "dependencies": {
125 | "ms": "^2.1.3"
126 | },
127 | "engines": {
128 | "node": ">=6.0"
129 | },
130 | "peerDependenciesMeta": {
131 | "supports-color": {
132 | "optional": true
133 | }
134 | }
135 | },
136 | "node_modules/delayed-stream": {
137 | "version": "1.0.0",
138 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
139 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
140 | "license": "MIT",
141 | "engines": {
142 | "node": ">=0.4.0"
143 | }
144 | },
145 | "node_modules/follow-redirects": {
146 | "version": "1.15.9",
147 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
148 | "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
149 | "funding": [
150 | {
151 | "type": "individual",
152 | "url": "https://github.com/sponsors/RubenVerborgh"
153 | }
154 | ],
155 | "license": "MIT",
156 | "engines": {
157 | "node": ">=4.0"
158 | },
159 | "peerDependenciesMeta": {
160 | "debug": {
161 | "optional": true
162 | }
163 | }
164 | },
165 | "node_modules/form-data": {
166 | "version": "4.0.1",
167 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
168 | "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
169 | "license": "MIT",
170 | "dependencies": {
171 | "asynckit": "^0.4.0",
172 | "combined-stream": "^1.0.8",
173 | "mime-types": "^2.1.12"
174 | },
175 | "engines": {
176 | "node": ">= 6"
177 | }
178 | },
179 | "node_modules/kolorist": {
180 | "version": "1.8.0",
181 | "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
182 | "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
183 | "license": "MIT"
184 | },
185 | "node_modules/local-pkg": {
186 | "version": "0.5.0",
187 | "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
188 | "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
189 | "license": "MIT",
190 | "dependencies": {
191 | "mlly": "^1.4.2",
192 | "pkg-types": "^1.0.3"
193 | },
194 | "engines": {
195 | "node": ">=14"
196 | },
197 | "funding": {
198 | "url": "https://github.com/sponsors/antfu"
199 | }
200 | },
201 | "node_modules/mime-db": {
202 | "version": "1.52.0",
203 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
204 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
205 | "license": "MIT",
206 | "engines": {
207 | "node": ">= 0.6"
208 | }
209 | },
210 | "node_modules/mime-types": {
211 | "version": "2.1.35",
212 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
213 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
214 | "license": "MIT",
215 | "dependencies": {
216 | "mime-db": "1.52.0"
217 | },
218 | "engines": {
219 | "node": ">= 0.6"
220 | }
221 | },
222 | "node_modules/mkdirp": {
223 | "version": "3.0.1",
224 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
225 | "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
226 | "license": "MIT",
227 | "bin": {
228 | "mkdirp": "dist/cjs/src/bin.js"
229 | },
230 | "engines": {
231 | "node": ">=10"
232 | },
233 | "funding": {
234 | "url": "https://github.com/sponsors/isaacs"
235 | }
236 | },
237 | "node_modules/mlly": {
238 | "version": "1.7.2",
239 | "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.2.tgz",
240 | "integrity": "sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==",
241 | "license": "MIT",
242 | "dependencies": {
243 | "acorn": "^8.12.1",
244 | "pathe": "^1.1.2",
245 | "pkg-types": "^1.2.0",
246 | "ufo": "^1.5.4"
247 | }
248 | },
249 | "node_modules/ms": {
250 | "version": "2.1.3",
251 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
252 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
253 | "license": "MIT"
254 | },
255 | "node_modules/package-manager-detector": {
256 | "version": "0.2.2",
257 | "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.2.tgz",
258 | "integrity": "sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==",
259 | "license": "MIT"
260 | },
261 | "node_modules/pathe": {
262 | "version": "1.1.2",
263 | "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
264 | "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
265 | "license": "MIT"
266 | },
267 | "node_modules/pkg-types": {
268 | "version": "1.2.1",
269 | "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz",
270 | "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==",
271 | "license": "MIT",
272 | "dependencies": {
273 | "confbox": "^0.1.8",
274 | "mlly": "^1.7.2",
275 | "pathe": "^1.1.2"
276 | }
277 | },
278 | "node_modules/proxy-from-env": {
279 | "version": "1.1.0",
280 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
281 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
282 | "license": "MIT"
283 | },
284 | "node_modules/tinyexec": {
285 | "version": "0.3.1",
286 | "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz",
287 | "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==",
288 | "license": "MIT"
289 | },
290 | "node_modules/ufo": {
291 | "version": "1.5.4",
292 | "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
293 | "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
294 | "license": "MIT"
295 | }
296 | }
297 | }
298 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "svelicon",
3 | "version": "1.0.5",
4 | "description": "✨ Svelte Icon Library - Iconify icons, raw SVG and converts them to Svelte components",
5 | "keywords": [
6 | "svelte", "svelte5",
7 | "svelte icon", "icons", "svg",
8 | "iconify", "font awesome", "fluent"
9 | ],
10 | "repository": {
11 | "type": "git",
12 | "url": "https://github.com/friendofsvelte/svelicon"
13 | },
14 | "main": "index.js",
15 | "type": "module",
16 | "bin": {
17 | "svelicon": "./cli.js"
18 | },
19 | "dependencies": {
20 | "@iconify/utils": "^2.1.5",
21 | "axios": "^1.6.2",
22 | "commander": "^11.1.0",
23 | "mkdirp": "^3.0.1"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/icons/FluentSearch12Regular.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
11 |
12 |
--------------------------------------------------------------------------------