diff --git a/scripts/icon-converter.js b/scripts/icon-converter.js new file mode 100644 index 0000000..bf5bf68 --- /dev/null +++ b/scripts/icon-converter.js @@ -0,0 +1,53 @@ +#!/usr/bin/env node +/** + * Usage: node convert-svg-to-svelte.js [inputDir] [outputDir] + * Defaults: ./svgs ./svelte + */ +import fs from 'fs'; +import path from 'path'; + +const INPUT_DIR = process.argv[2] || '../svgs'; +const OUTPUT_DIR = process.argv[3] || '../src/lib/icons'; + +if (!fs.existsSync(OUTPUT_DIR)) fs.mkdirSync(OUTPUT_DIR, { recursive: true }); + +function processSvg(svgContent) { + // Strip XML/DOCTYPE + let out = svgContent.replace(/<\?xml[\s\S]*?\?>\s*/i, '').replace(/\s*/i, ''); + + // Remove ALL comments + out = out.replace(/\s*/g, ''); + + // Remove with any whitespace between tags + out = out.replace(/\s*<\/g>\s*/gi, ''); + + // Ensure only width="100%" height="100%" on the tag + out = out.replace(/]*>/i, (match) => { + let tag = match + .replace(/\s+(width|height)\s*=\s*"[^"]*"/gi, '') + .replace(/\s+(width|height)\s*=\s*'[^']*'/gi, ''); + return tag.replace(/>$/, ' width="100%" height="100%">'); + }); + + // Prepend the single license comment + out = '\n' + out.replace(/^\s+/, ''); + return out; +} + +function convertSvgs(inputDir = INPUT_DIR, outputDir = OUTPUT_DIR) { + if (!fs.existsSync(inputDir)) { + console.warn(`Input directory not found: ${inputDir}`); + return; + } + const files = fs.readdirSync(inputDir).filter((f) => f.toLowerCase().endsWith('.svg')); + files.forEach((file) => { + const src = path.join(inputDir, file); + const dest = path.join(outputDir, file.replace(/\.svg$/i, '.svelte')); + const svgContent = fs.readFileSync(src, 'utf8'); + const processed = processSvg(svgContent); + fs.writeFileSync(dest, processed, 'utf8'); + console.log(`Converted: ${file} -> ${path.basename(dest)}`); + }); +} + +convertSvgs(); diff --git a/src/lib/icons/bucket.svelte b/src/lib/icons/bucket.svelte new file mode 100644 index 0000000..7a858e1 --- /dev/null +++ b/src/lib/icons/bucket.svelte @@ -0,0 +1,5 @@ + + + + + diff --git a/src/lib/icons/color-sampler.svelte b/src/lib/icons/color-sampler.svelte new file mode 100644 index 0000000..2e6bce8 --- /dev/null +++ b/src/lib/icons/color-sampler.svelte @@ -0,0 +1,5 @@ + + + + + diff --git a/src/lib/icons/id.svelte b/src/lib/icons/id.svelte new file mode 100644 index 0000000..edd1fe4 --- /dev/null +++ b/src/lib/icons/id.svelte @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/lib/icons/paint-roller.svelte b/src/lib/icons/paint-roller.svelte new file mode 100644 index 0000000..b509627 --- /dev/null +++ b/src/lib/icons/paint-roller.svelte @@ -0,0 +1,5 @@ + + + + + diff --git a/src/lib/icons/palette.svelte b/src/lib/icons/palette.svelte new file mode 100644 index 0000000..92c02fc --- /dev/null +++ b/src/lib/icons/palette.svelte @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/lib/icons/picture.svelte b/src/lib/icons/picture.svelte new file mode 100644 index 0000000..21f8219 --- /dev/null +++ b/src/lib/icons/picture.svelte @@ -0,0 +1,18 @@ + + + + + + diff --git a/src/lib/icons/quill.svelte b/src/lib/icons/quill.svelte new file mode 100644 index 0000000..ddb6cb0 --- /dev/null +++ b/src/lib/icons/quill.svelte @@ -0,0 +1,4 @@ + + + + diff --git a/src/lib/icons/tag.svelte b/src/lib/icons/tag.svelte new file mode 100644 index 0000000..ab255e2 --- /dev/null +++ b/src/lib/icons/tag.svelte @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/lib/icons/text-color.svelte b/src/lib/icons/text-color.svelte new file mode 100644 index 0000000..8f3c614 --- /dev/null +++ b/src/lib/icons/text-color.svelte @@ -0,0 +1,5 @@ + + + + + diff --git a/src/lib/icons/text-size.svelte b/src/lib/icons/text-size.svelte new file mode 100644 index 0000000..45764f6 --- /dev/null +++ b/src/lib/icons/text-size.svelte @@ -0,0 +1,5 @@ + + + + + diff --git a/src/lib/icons/window.svelte b/src/lib/icons/window.svelte new file mode 100644 index 0000000..f074fb5 --- /dev/null +++ b/src/lib/icons/window.svelte @@ -0,0 +1,7 @@ + + + + + + +