commit 9c3024c61d3296db4c1973c6787d92cc84298206 Author: sHa Date: Sun Apr 27 16:55:23 2025 +0300 feat: Initialize Svelte application with logo gallery functionality - Add Rollup configuration for building and serving the application. - Implement logo scanning script to generate logos.json from logo files. - Create main App component to manage logo display and search functionality. - Develop LogoGrid and LogoList components for different viewing modes. - Add LogoModal component for logo preview with details. - Implement URL copying and logo downloading features. - Style components for improved user experience and responsiveness. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c4c331f --- /dev/null +++ b/.gitignore @@ -0,0 +1,53 @@ +# Node.js dependencies +node_modules/ +npm-debug.log +yarn-debug.log +yarn-error.log +package-lock.json +yarn.lock + +# Build output +public/build/ + +# macOS specific files +.DS_Store +.AppleDouble +.LSOverride +._* +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Docker related +.docker/ +*.log + +# Editor directories and files +.idea/ +.vscode/ +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Svelte related +.svelte-kit/ + +# Environment variables +.env +.env.local +.env.development +.env.test +.env.production diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 0000000..de83028 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,131 @@ +# Logo Gallery - Developer Documentation + +This document provides instructions for developers working on the Logo Gallery project. + +## Project Overview + +Logo Gallery is a web application that displays a collection of company and brand logos with the following features: +- Grid and list views of logos +- Search functionality +- Direct URL copying for each logo +- Download capability +- Responsive design + +The project is built with: +- Svelte for the front-end UI +- Node.js for script automation +- Docker for containerization +- GitHub Pages for deployment + +## Development Environment Setup + +### Prerequisites + +- Docker and Docker Compose +- Git + +No local Node.js installation is required as all operations run inside Docker containers. + +### Getting Started + +1. Clone the repository: + ``` + git clone https://github.com/yourusername/logos.git + cd logos + ``` + +2. Build and start the application: + ``` + make build + make start + ``` + +3. Access the application at http://localhost:5005 + +## Common Development Tasks + +### Adding New Logos + +1. Add logo files (SVG or PNG preferred) to the `public/logos/` directory +2. Scan the logos directory and update the data file: + ``` + make scan-logos-dev + ``` + (This runs `npm run scan-logos` inside the dev container) +3. The application will automatically rebuild with the new logos + +### Modifying the UI + +1. Edit files in the `src/` directory +2. The changes will require a rebuild: + ``` + make rebuild + ``` + +### Running Custom Commands + +To run any npm or shell command inside the Docker container: +``` +make run CMD="your-command-here" +``` + +Examples: +- List logo files: `make run CMD="ls -la public/assets/logos"` +- Run a specific npm script: `make run CMD="npm run some-script"` + +## Project Structure + +``` +logos/ +├── public/ # Static assets +│ ├── assets/ +│ │ └── logos/ # Logo files (SVG, PNG) +│ ├── data/ # JSON data files +│ ├── build/ # Compiled JS/CSS (generated) +│ └── global.css # Global styles +├── src/ # Application source code +│ ├── components/ # Svelte components +│ ├── App.svelte # Main app component +│ └── main.js # App entry point +├── scripts/ # Utility scripts +├── Dockerfile # Docker configuration +├── compose.yml # Docker Compose configuration +├── Makefile # Development commands +└── README.md # Project overview +``` + +## Deployment to GitHub Pages + +To deploy the application to GitHub Pages: + +1. Build the application: + ``` + make build + ``` + +2. The `public/` directory contains all files needed for deployment + +3. Push the contents of the `public/` directory to the `gh-pages` branch of your repository + +## Available Make Commands + +Run `make help` to see all available commands: + +- `make build` - Build the Docker container +- `make start` - Start the application +- `make stop` - Stop the application +- `make restart` - Restart the application +- `make logs` - View the application logs +- `make run CMD=` - Run a command in the container +- `make generate-logos` - Generate logos.json from assets directory +- `make clean` - Clean up build artifacts +- `make rebuild` - Completely rebuild from scratch + +## Troubleshooting + +If you encounter issues: + +1. Check the logs: `make logs` +2. Try a complete rebuild: `make rebuild` +3. Ensure the Docker service is running +4. Verify your logo files are in the correct format and location diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ce0a172 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM node:slim + +# Update package index and upgrade packages to reduce vulnerabilities +RUN apt-get update && apt-get upgrade -y + +WORKDIR /app + +COPY package*.json ./ + +RUN npm install + +# Copy all source files except those in .dockerignore +COPY . . + +# Create necessary directories for the build +RUN mkdir -p public/build +RUN mkdir -p public/data + +# Build the application +RUN npm run build + +EXPOSE 5000 +EXPOSE 35729 + +# Start the server +CMD ["npm", "run", "start"] diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..9da2c5c --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,15 @@ +FROM node:slim + +WORKDIR /app + +COPY package*.json ./ +RUN [ -f package-lock.json ] || touch package-lock.json +RUN npm install + +# Only copy minimal files for initial build, source will be mounted +COPY public/index.html public/global.css ./public/ + +EXPOSE 5000 +EXPOSE 35729 + +CMD ["npm", "run", "dev"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e972096 --- /dev/null +++ b/Makefile @@ -0,0 +1,81 @@ +# Logo Gallery Project Makefile + +# Configuration +DOCKER_COMPOSE = docker compose +CONTAINER_NAME = logo-gallery +PORT = 5005 +DEV_PORT = 5006 + +# Main targets +.PHONY: all build start stop restart logs clean scan-logos-dev help dev + +all: build start + +# Development mode with hot reloading +dev: + docker compose -f compose.dev.yml up --build + +# Build the Docker container +build: + @echo "Building the Logo Gallery container..." + $(DOCKER_COMPOSE) build + +# Start the application in the background +start: + @echo "Starting Logo Gallery application on port $(PORT)..." + $(DOCKER_COMPOSE) up -d + @echo "Application is running at http://localhost:$(PORT)" + +# Stop the application +stop: + @echo "Stopping Logo Gallery application..." + $(DOCKER_COMPOSE) down + +# Restart the application +restart: stop start + +# View the application logs +logs: + @echo "Showing application logs (press Ctrl+C to exit)..." + $(DOCKER_COMPOSE) logs -f + +# Run a command inside the container +# Usage: make run CMD="npm run build" +run: + @echo "Running command in container: $(CMD)" + $(DOCKER_COMPOSE) run --rm $(CONTAINER_NAME) $(CMD) + +# Scan logos.json from files in the logos directory (for dev mode) +scan-logos-dev: + @echo "Scanning logos directory and updating logos.json for development..." + $(DOCKER_COMPOSE) -f compose.dev.yml run --rm logo-gallery-dev npm run scan-logos + @echo "Logos have been updated - refresh the browser to see changes" + +# Clean up build artifacts and temporary files +clean: + @echo "Cleaning up build artifacts and temporary files..." + $(DOCKER_COMPOSE) down + docker builder prune -f + +# Complete rebuild from scratch +rebuild: + @echo "Performing complete rebuild..." + $(DOCKER_COMPOSE) down + docker builder prune -f + $(DOCKER_COMPOSE) build --no-cache + $(DOCKER_COMPOSE) up -d + @echo "Rebuild complete. Application is running at http://localhost:$(PORT)" + +# Display help information +help: + @echo "Logo Gallery Makefile commands:" + @echo " make build - Build the Docker container" + @echo " make start - Start the application (http://localhost:$(PORT))" + @echo " make stop - Stop the application" + @echo " make restart - Restart the application" + @echo " make logs - View the application logs" + @echo " make run CMD= - Run a command in the container" + @echo " make scan-logos-dev - Scan logos.json from assets directory" + @echo " make clean - Clean up build artifacts" + @echo " make rebuild - Completely rebuild from scratch" + @echo " make help - Display this help information" diff --git a/README.md b/README.md new file mode 100644 index 0000000..efa1900 --- /dev/null +++ b/README.md @@ -0,0 +1,96 @@ +# Logo Gallery + +A collection of company and brand logos hosted on GitHub Pages. This project provides an easy way to access and use various brand logos in SVG and PNG formats with a user-friendly interface. + +## Features + +- Browse logos in grid or list view +- Search functionality to find specific logos +- Copy direct URL to any logo with one click +- Download logos directly +- Responsive design that works on mobile and desktop + +## Project Setup + +### Running with Docker (Recommended) + +The easiest way to run the project locally is using Docker, which doesn't require installing Node.js or npm packages directly on your system: + +1. Clone this repository: +``` +git clone https://github.com/yourusername/logos.git +cd logos +``` + +2. Start the Docker container: +``` +docker-compose up +``` + +The application will be available at http://localhost:5000 with live reloading enabled. + +### Running Manually (Alternative) + +If you prefer to run the project without Docker: + +1. Clone this repository: +``` +git clone https://github.com/yourusername/logos.git +cd logos +``` + +2. Install dependencies: +``` +npm install +``` + +3. Start the development server: +``` +npm run dev +``` + +4. Build for production deployment: +``` +npm run build +``` + +## Deploying to GitHub Pages + +1. Build the project: +``` +npm run build +``` + +2. Push the contents to your GitHub repository's `gh-pages` branch. + +## Adding New Logos + +To add new logos to the collection: + +1. Add the logo file (SVG or PNG) to the `public/logos/` directory +2. Run the logo scan script: +``` +make scan-logos-dev +``` +(This runs `npm run scan-logos` inside the dev container) +3. The application will automatically rebuild with the new logos + +## Directory Structure + +``` +logos/ +├── public/ # Static assets +│ ├── assets/ +│ │ └── logos/ # Logo files +│ └── global.css # Global styles +├── src/ # Application source code +│ ├── components/ # Svelte components +│ ├── data/ # Data files +│ ├── App.svelte # Main app component +│ └── main.js # App entry point +└── index.html # HTML entry point +``` + +## License + +This project is MIT licensed. Please note that the logos themselves are property of their respective owners and should be used according to their brand guidelines. diff --git a/compose.dev.yml b/compose.dev.yml new file mode 100644 index 0000000..eef60a2 --- /dev/null +++ b/compose.dev.yml @@ -0,0 +1,20 @@ +services: + logo-gallery-dev: + build: + context: . + dockerfile: Dockerfile.dev + container_name: logo-gallery-dev + ports: + - "5006:5000" + - "35729:35729" + volumes: + - ./src:/app/src + - ./public:/app/public + - ./rollup.config.js:/app/rollup.config.js + - ./package.json:/app/package.json + - ./scripts:/app/scripts + environment: + - NODE_ENV=development + - CHOKIDAR_USEPOLLING=true + - HOST=0.0.0.0 + command: npm run dev diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..463c1d1 --- /dev/null +++ b/compose.yml @@ -0,0 +1,10 @@ +services: + logo-gallery: + build: . + container_name: logo-gallery + ports: + - "5005:5000" # App port + - "35729:35729" # LiveReload port + environment: + - NODE_ENV=development + - HOST=0.0.0.0 diff --git a/package.json b/package.json new file mode 100644 index 0000000..77a5d5d --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "logo-gallery", + "version": "1.0.0", + "description": "A collection of company and brand logos accessible via GitHub Pages", + "scripts": { + "build": "rollup -c", + "dev": "rollup -c -w", + "start": "sirv public --host 0.0.0.0 --dev --single", + "scan-logos": "node scripts/scanLogos.js" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^17.0.0", + "@rollup/plugin-node-resolve": "^11.0.0", + "rollup": "^2.3.4", + "rollup-plugin-css-only": "^3.1.0", + "rollup-plugin-livereload": "^2.0.0", + "rollup-plugin-svelte": "^7.0.0", + "rollup-plugin-terser": "^7.0.0", + "svelte": "^3.0.0" + }, + "dependencies": { + "sirv-cli": "^1.0.0" + } +} diff --git a/public/data/logos.json b/public/data/logos.json new file mode 100644 index 0000000..0448918 --- /dev/null +++ b/public/data/logos.json @@ -0,0 +1,56 @@ +[ + { + "name": "Apple (black)", + "path": "logos/apple_black.svg", + "format": "SVG", + "disable": false + }, + { + "name": "ATB", + "path": "logos/atb.svg", + "format": "SVG", + "disable": false + }, + { + "name": "Binance", + "path": "logos/binance.svg", + "format": "SVG", + "disable": false + }, + { + "name": "Dalnoboy Service", + "path": "logos/dalnoboy-service.svg", + "format": "SVG", + "disable": false + }, + { + "name": "Google", + "path": "logos/google.svg", + "format": "SVG", + "disable": false + }, + { + "name": "Privatbank", + "path": "logos/privatbank.png", + "format": "PNG", + "disable": false + }, + { + "name": "Pumb", + "path": "logos/pumb.png", + "format": "PNG", + "disable": false + }, + { + "name": "Roomerin", + "path": "logos/roomerin.svg", + "format": "SVG", + "disable": false + }, + { + "name": "Shkafnik", + "path": "logos/shkafnik.png", + "format": "PNG", + "disable": false + } +] diff --git a/public/global.css b/public/global.css new file mode 100644 index 0000000..3d26633 --- /dev/null +++ b/public/global.css @@ -0,0 +1,102 @@ +:root { + --primary-color: #3498db; + --secondary-color: #2c3e50; + --background-color: #f8f9fa; + --card-background: #ffffff; + --text-color: #333333; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; + background-color: var(--background-color); + color: var(--text-color); + line-height: 1.6; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 2rem; +} + +button { + cursor: pointer; + padding: 0.5rem 1rem; + background-color: var(--primary-color); + color: white; + border: none; + border-radius: 4px; + font-size: 0.9rem; + transition: background-color 0.2s; +} + +button:hover { + background-color: #2980b9; +} + +.view-toggle { + display: flex; + gap: 0.5rem; + margin-bottom: 1rem; +} + +.search-bar { + margin-bottom: 1.5rem; + width: 100%; + max-width: 500px; +} + +.search-bar input { + width: 100%; + padding: 0.75rem; + border: 1px solid #ddd; + border-radius: 4px; + font-size: 1rem; +} + +.copy-btn { + background-color: var(--secondary-color); + margin-right: 0.5rem; +} + +.download-btn { + background-color: #27ae60; +} + +/* Direct logo image size constraints that will work with any component structure */ +div.logo-image { + display: flex; + align-items: center; + justify-content: center; + background-color: #f5f5f5; + position: relative; + overflow: hidden; +} + +div.logo-image img { + max-width: 80%; + max-height: 80%; + width: auto; + height: auto; + object-fit: contain; +} + +/* Grid specific */ +.logo-grid .logo-item .logo-image { + height: 160px; + width: 100%; +} + +/* List specific */ +.logo-list .logo-item .logo-image { + width: 120px; + min-width: 120px; + height: 100px; + border-right: 1px solid #eee; +} diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..d97b13d --- /dev/null +++ b/public/index.html @@ -0,0 +1,14 @@ + + + + + + Logo Gallery + + + + +
+ + + diff --git a/public/logos/apple_black.svg b/public/logos/apple_black.svg new file mode 100644 index 0000000..a1fba3e --- /dev/null +++ b/public/logos/apple_black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/logos/atb.svg b/public/logos/atb.svg new file mode 100644 index 0000000..c9dad72 --- /dev/null +++ b/public/logos/atb.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/logos/binance.svg b/public/logos/binance.svg new file mode 100644 index 0000000..c22b1d5 --- /dev/null +++ b/public/logos/binance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/logos/dalnoboy-service.svg b/public/logos/dalnoboy-service.svg new file mode 100644 index 0000000..3bbdc7f --- /dev/null +++ b/public/logos/dalnoboy-service.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/logos/google.svg b/public/logos/google.svg new file mode 100644 index 0000000..3718b41 --- /dev/null +++ b/public/logos/google.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/public/logos/privatbank.png b/public/logos/privatbank.png new file mode 100644 index 0000000..268c903 Binary files /dev/null and b/public/logos/privatbank.png differ diff --git a/public/logos/pumb.png b/public/logos/pumb.png new file mode 100644 index 0000000..d808764 Binary files /dev/null and b/public/logos/pumb.png differ diff --git a/public/logos/roomerin.svg b/public/logos/roomerin.svg new file mode 100644 index 0000000..285f422 --- /dev/null +++ b/public/logos/roomerin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/logos/shkafnik.png b/public/logos/shkafnik.png new file mode 100644 index 0000000..ff1dbb3 Binary files /dev/null and b/public/logos/shkafnik.png differ diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..7aef8e6 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,78 @@ +import svelte from 'rollup-plugin-svelte'; +import commonjs from '@rollup/plugin-commonjs'; +import resolve from '@rollup/plugin-node-resolve'; +import livereload from 'rollup-plugin-livereload'; +import { terser } from 'rollup-plugin-terser'; +import css from 'rollup-plugin-css-only'; + +const production = !process.env.ROLLUP_WATCH; + +function serve() { + let server; + + function toExit() { + if (server) server.kill(0); + } + + return { + writeBundle() { + if (server) return; + server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], { + stdio: ['ignore', 'inherit', 'inherit'], + shell: true + }); + + process.on('SIGTERM', toExit); + process.on('exit', toExit); + } + }; +} + +export default { + input: 'src/main.js', + output: { + sourcemap: true, + format: 'iife', + name: 'app', + file: 'public/build/bundle.js' + }, + plugins: [ + svelte({ + compilerOptions: { + // enable run-time checks when not in production + dev: !production + }, + // Force Svelte to emit CSS for components + emitCss: true + }), + // we'll extract any component CSS out into + // a separate file - better for performance + css({ output: 'bundle.css' }), + + // If you have external dependencies installed from + // npm, you'll most likely need these plugins. In + // some cases you'll need additional configuration - + // consult the documentation for details: + // https://github.com/rollup/plugins/tree/master/packages/commonjs + resolve({ + browser: true, + dedupe: ['svelte'] + }), + commonjs(), + + // In dev mode, call `npm run start` once + // the bundle has been generated + !production && serve(), + + // Watch the `public` directory and refresh the + // browser on changes when not in production + !production && livereload('public'), + + // If we're building for production (npm run build + // instead of npm run dev), minify + production && terser() + ], + watch: { + clearScreen: false + } +}; diff --git a/scripts/scanLogos.js b/scripts/scanLogos.js new file mode 100644 index 0000000..619e52d --- /dev/null +++ b/scripts/scanLogos.js @@ -0,0 +1,107 @@ +// This file has been renamed and updated. See scanLogos.js in the same directory for the new script. + +const fs = require('fs'); +const path = require('path'); + +// Configuration +const logosDir = path.join(__dirname, '../public/logos'); +const outputFile = path.join(__dirname, '../public/data/logos.json'); + +// Get file extension without the dot +function getFileExtension(filename) { + return path.extname(filename).slice(1).toUpperCase(); +} + +// Get file name without extension +function getBaseName(filename) { + return path.basename(filename, path.extname(filename)); +} + +// Convert filename to readable name (replace hyphens with spaces, capitalize words) +function formatName(filename) { + return getBaseName(filename) + .split(/[-_]/) + .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) + .join(' '); +} + +// Scan directory and update logo objects +function scanLogos() { + console.log(`Scanning logos directory: ${logosDir}`); + + let existing = []; + if (fs.existsSync(outputFile)) { + try { + existing = JSON.parse(fs.readFileSync(outputFile, 'utf8')); + } catch (e) { + console.error('Could not parse existing logos.json:', e); + } + } + const existingMap = new Map(); + for (const item of existing) { + existingMap.set(item.path, item); + } + + try { + if (!fs.existsSync(logosDir)) { + console.error(`Directory does not exist: ${logosDir}`); + return []; + } + + const files = fs.readdirSync(logosDir); + // Filter for image files (svg, png, jpg, jpeg) + const logoFiles = files.filter(file => + /\.(svg|png|jpg|jpeg)$/i.test(file) + ); + + console.log(`Found ${logoFiles.length} logo files`); + + // Create logo objects + const logos = logoFiles.map(file => { + const format = getFileExtension(file); + const logoPath = `logos/${file}`; + const existingItem = existingMap.get(logoPath); + if (existingItem) { + // Preserve name and disable, update format/path + return { + ...existingItem, + path: logoPath, + format: format, + disable: typeof existingItem.disable === 'boolean' ? existingItem.disable : false + }; + } else { + // New logo + return { + name: formatName(file), + path: logoPath, + format: format, + disable: false + }; + } + }); + return logos; + } catch (error) { + console.error('Error scanning logos directory:', error); + return []; + } +} + +// Save logos data to JSON file +function saveLogosToJson(logos) { + try { + const data = JSON.stringify(logos, null, 2); + fs.writeFileSync(outputFile, data); + console.log(`Successfully wrote ${logos.length} logos to ${outputFile}`); + } catch (error) { + console.error('Error writing logos data to file:', error); + } +} + +// Main function +function main() { + const logos = scanLogos(); + saveLogosToJson(logos); +} + +// Run the script +main(); diff --git a/src/App.svelte b/src/App.svelte new file mode 100644 index 0000000..9f52c9a --- /dev/null +++ b/src/App.svelte @@ -0,0 +1,191 @@ + + +
+
+

Logo Gallery

+

Collection of company and brand logos for your projects

+ + + +
+ + +
+ + +
+ Current view: {viewMode} +
+
+ +
+ {#if viewMode === 'grid'} + + {:else} + + {/if} +
+ +
+

© {new Date().getFullYear()} Logo Gallery. All logos are property of their respective owners.

+
+
+ + diff --git a/src/components/LogoGrid.svelte b/src/components/LogoGrid.svelte new file mode 100644 index 0000000..914c289 --- /dev/null +++ b/src/components/LogoGrid.svelte @@ -0,0 +1,121 @@ + + + + +
+ {#each logos as logo} +
+
openPreview(logo)} + on:keydown={(e) => (e.key === 'Enter' || e.key === ' ') && openPreview(logo)} + style="cursor:pointer;" + > + {logo.name} +
+
+

{logo.name}

+

Format: {logo.format}

+
+ + +
+
+
+ {:else} +

No logos found matching your search criteria.

+ {/each} +
+ + diff --git a/src/components/LogoList.svelte b/src/components/LogoList.svelte new file mode 100644 index 0000000..604a84b --- /dev/null +++ b/src/components/LogoList.svelte @@ -0,0 +1,150 @@ + + + + +
+ {#each logos as logo} +
+
openPreview(logo)} + on:keydown={(e) => (e.key === 'Enter' || e.key === ' ') && openPreview(logo)} + style="cursor:pointer;" + > + {logo.name} +
+
+

{logo.name}

+

Format: {logo.format}

+
+
+ + +
+
+ {:else} +

No logos found matching your search criteria.

+ {/each} +
+ + diff --git a/src/components/LogoModal.svelte b/src/components/LogoModal.svelte new file mode 100644 index 0000000..0eb6c57 --- /dev/null +++ b/src/components/LogoModal.svelte @@ -0,0 +1,143 @@ + + +{#if show && logo} + +{/if} + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..e68c26b --- /dev/null +++ b/src/main.js @@ -0,0 +1,7 @@ +import App from './App.svelte'; + +const app = new App({ + target: document.getElementById('app') || document.body +}); + +export default app;