diff --git a/Makefile b/Makefile index 6b719bb..663e240 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ # Configuration DOCKER_COMPOSE = docker compose -CONTAINER_NAME = logo-gallery +CONTAINER_NAME = slogos-dev DEV_PORT = 5006 # Main targets @@ -47,15 +47,9 @@ run: # Scan logos.json from files in the logos directory (for dev mode) scan-logos: @echo "Scanning logos directory and updating logos.json for development..." - $(DOCKER_COMPOSE) -f compose.dev.yml run --rm slogos-dev npm run scan-logos + $(DOCKER_COMPOSE) -f compose.dev.yml run --rm $(CONTAINER_NAME) npm run scan-logos @echo "Logos have been updated - refresh the browser to see changes" -# Convert logo colors format from array to object -convert-colors: - @echo "Converting logo colors format in logos.json..." - $(DOCKER_COMPOSE) -f compose.dev.yml run --rm slogos-dev npm run convert-colors - @echo "Color format conversion complete" - # Clean up build artifacts and temporary files clean: @echo "Cleaning up build artifacts and temporary files..." @@ -70,7 +64,7 @@ rebuild: # Generate favicons favicon: @echo "Generating favicons..." - $(DOCKER_COMPOSE) -f compose.dev.yml run --rm slogos-dev npm run generate-favicons + $(DOCKER_COMPOSE) -f compose.dev.yml run --rm $(CONTAINER_NAME) npm run generate-favicons @echo "Favicons have been generated" # Build with favicons @@ -79,5 +73,5 @@ build-with-favicons: favicon build # Update package-lock.json by running npm install in Docker update-lock: @echo "Updating package-lock.json to match package.json..." - $(DOCKER_COMPOSE) -f compose.dev.yml run --rm slogos-dev npm install + $(DOCKER_COMPOSE) -f compose.dev.yml run --rm $(CONTAINER_NAME) npm install @echo "Package lock file has been updated" diff --git a/package-lock.json b/package-lock.json index c68a43f..2a27dfa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "dependencies": { "@resvg/resvg-js": "^2.0.1", "jimp": "^0.22.10", - "sirv-cli": "^1.0.0" + "sirv-cli": "^1.0.0", + "svelte-spa-router": "^3.3.0" }, "devDependencies": { "@rollup/plugin-commonjs": "^17.0.0", @@ -1736,6 +1737,15 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "license": "MIT" }, + "node_modules/regexparam": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.1.tgz", + "integrity": "sha512-zRgSaYemnNYxUv+/5SeoHI0eJIgTL/A2pUtXUPLHQxUldagouJ9p+K6IbIZ/JiQuCEv2E2B1O11SjVQy3aMCkw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/resolve": { "version": "1.22.10", "dev": true, @@ -2017,6 +2027,18 @@ "node": ">= 8" } }, + "node_modules/svelte-spa-router": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/svelte-spa-router/-/svelte-spa-router-3.3.0.tgz", + "integrity": "sha512-cwRNe7cxD43sCvSfEeaKiNZg3FCizGxeMcf7CPiWRP3jKXjEma3vxyyuDtPOam6nWbVxl9TNM3hlE/i87ZlqcQ==", + "license": "MIT", + "dependencies": { + "regexparam": "2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ItalyPaleAle" + } + }, "node_modules/terser": { "version": "5.39.0", "dev": true, diff --git a/package.json b/package.json index e2fb8fe..082a637 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,7 @@ "dev": "rollup -c -w", "start": "sirv public --host 0.0.0.0 --dev --single", "scan-logos": "node scripts/scanLogos.js", - "generate-favicons": "node scripts/generateFavicons.js", - "convert-colors": "node scripts/convertColorsFormat.js" + "generate-favicons": "node scripts/generateFavicons.js" }, "devDependencies": { "@rollup/plugin-commonjs": "^17.0.0", @@ -23,6 +22,7 @@ "dependencies": { "@resvg/resvg-js": "^2.0.1", "jimp": "^0.22.10", - "sirv-cli": "^1.0.0" + "sirv-cli": "^1.0.0", + "svelte-spa-router": "^3.3.0" } } diff --git a/scripts/convertColorsFormat.js b/scripts/convertColorsFormat.js deleted file mode 100644 index e8410e1..0000000 --- a/scripts/convertColorsFormat.js +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env node - -const fs = require('fs'); -const path = require('path'); - -// Path to logos.json -const logosJsonPath = path.join(__dirname, '../public/data/logos.json'); - -// Read the current logos.json file -console.log('Reading logos.json...'); -const logosData = JSON.parse(fs.readFileSync(logosJsonPath, 'utf8')); - -// Convert the colors format and create targets & sets -console.log('Converting logos format...'); -let convertedColorsCount = 0; -let convertedConfigCount = 0; - -for (const logo of logosData) { - // 1. Convert colors array to object if needed - if (logo.colors && Array.isArray(logo.colors)) { - // Convert array format to object format - const newColors = {}; - for (const colorObj of logo.colors) { - // Convert label to lowercase and replace spaces with underscores - const key = colorObj.label.toLowerCase().replace(/\s+/g, '_'); - newColors[key] = colorObj.value; - } - logo.colors = newColors; - convertedColorsCount++; - } - - // 2. Convert colorConfig to targets and sets - if (logo.colorConfig && !logo.targets) { - // Create targets object - logo.targets = {}; - - // Handle selector or target from colorConfig - if (logo.colorConfig.selector) { - // Split multiple selectors (e.g., "#text, #logo_int") - const selectors = logo.colorConfig.selector.split(',').map(s => s.trim()); - - // Create a target for each selector - selectors.forEach((selector, index) => { - logo.targets[`selector_${index + 1}`] = selector; - }); - - // Create sets for each color - if (logo.colors && Object.keys(logo.colors).length > 0) { - logo.sets = {}; - let setIndex = 1; - - // Create a set for each color - for (const [colorName, colorValue] of Object.entries(logo.colors)) { - const setName = `set_${setIndex}`; - logo.sets[setName] = {}; - - // Apply this color to all targets in this set - Object.keys(logo.targets).forEach(targetName => { - logo.sets[setName][targetName] = colorName; - }); - - setIndex++; - } - } - } else if (logo.colorConfig.target) { - logo.targets.main = logo.colorConfig.target; - - // Create sets for each color - if (logo.colors && Object.keys(logo.colors).length > 0) { - logo.sets = {}; - let setIndex = 1; - - // Create a set for each color - for (const [colorName, colorValue] of Object.entries(logo.colors)) { - const setName = `set_${setIndex}`; - logo.sets[setName] = { - main: colorName - }; - setIndex++; - } - } - } - - convertedConfigCount++; - - // Keep the original colorConfig for backward compatibility - } -} - -// Write the updated data back to logos.json -console.log('Writing updated logos.json...'); -fs.writeFileSync(logosJsonPath, JSON.stringify(logosData, null, 2)); -console.log(`Conversion complete! Updated colors for ${convertedColorsCount} logos and created targets/sets for ${convertedConfigCount} logos.`); diff --git a/src/App.svelte b/src/App.svelte index ea75e1b..b83d1d4 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,9 +1,15 @@
-
- - - -
- {#if viewMode === "grid"} - openPreview(e.detail)} - {compactMode} - /> - {:else} - openPreview(e.detail)} - {compactMode} - /> - {/if} -
- -
- -
+ diff --git a/src/components/List.svelte b/src/components/List.svelte index ccbb1e1..1270d0a 100644 --- a/src/components/List.svelte +++ b/src/components/List.svelte @@ -1,7 +1,6 @@ - -
{#each logos as logo}
@@ -179,6 +171,7 @@ class="brand-filter-btn common-btn" title="Filter by brand" on:click={() => { + console.log("List: Filtering by brand:", logo.brand); setSearchQuery(logo.brand); // Update URL with search param const params = new URLSearchParams(window.location.search); diff --git a/src/components/Preview.svelte b/src/components/Preview.svelte index b01e22f..ef4603d 100644 --- a/src/components/Preview.svelte +++ b/src/components/Preview.svelte @@ -1,5 +1,5 @@