diff --git a/public/data/logos.json b/public/data/logos.json
index d88b579..88fea55 100644
--- a/public/data/logos.json
+++ b/public/data/logos.json
@@ -20,8 +20,8 @@
]
},
{
- "name": "Apple (black)",
- "path": "logos/apple_black.svg",
+ "name": "Apple",
+ "path": "logos/apple.svg",
"format": "SVG",
"disable": false,
"tags": [
@@ -29,19 +29,16 @@
"text": "tech",
"color": "silver"
}
- ]
- },
- {
- "name": "Apple (silver)",
- "path": "logos/apple_silver.svg",
- "format": "SVG",
- "disable": false,
- "tags": [
- {
- "text": "tech",
- "color": "silver"
- }
- ]
+ ],
+ "colors": [
+ { "label": "Silver", "value": "#999" },
+ { "label": "White", "value": "#fff" },
+ { "label": "Black", "value": "#000" }
+ ],
+ "colorConfig": {
+ "target": "path",
+ "attribute": "fill"
+ }
},
{
"name": "ATB",
@@ -315,6 +312,26 @@
"furniture"
]
},
+ {
+ "name": "Sendpulse Small",
+ "path": "logos/sendpulse-small.svg",
+ "format": "SVG",
+ "disable": false,
+ "tags": [
+ "marketing",
+ "email"
+ ]
+ },
+ {
+ "name": "Sendpulse",
+ "path": "logos/sendpulse.svg",
+ "format": "SVG",
+ "disable": false,
+ "tags": [
+ "marketing",
+ "email"
+ ]
+ },
{
"name": "Shkafnik",
"path": "logos/shkafnik.svg",
diff --git a/public/logos/apple_silver.svg b/public/logos/apple.svg
similarity index 100%
rename from public/logos/apple_silver.svg
rename to public/logos/apple.svg
diff --git a/public/logos/apple_black.svg b/public/logos/apple_black.svg
deleted file mode 100644
index 7f7f73e..0000000
--- a/public/logos/apple_black.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/public/logos/sendpulse-small.svg b/public/logos/sendpulse-small.svg
new file mode 100644
index 0000000..ead5843
--- /dev/null
+++ b/public/logos/sendpulse-small.svg
@@ -0,0 +1,7 @@
+
diff --git a/public/logos/sendpulse.svg b/public/logos/sendpulse.svg
new file mode 100644
index 0000000..a99a962
--- /dev/null
+++ b/public/logos/sendpulse.svg
@@ -0,0 +1,36 @@
+
diff --git a/src/components/InlineSvg.svelte b/src/components/InlineSvg.svelte
new file mode 100644
index 0000000..f698d20
--- /dev/null
+++ b/src/components/InlineSvg.svelte
@@ -0,0 +1,25 @@
+
+
+{@html svgHtml}
diff --git a/src/components/LogoGrid.svelte b/src/components/LogoGrid.svelte
index 51bf177..c0a30af 100644
--- a/src/components/LogoGrid.svelte
+++ b/src/components/LogoGrid.svelte
@@ -1,6 +1,8 @@
@@ -32,11 +49,38 @@
on:keydown={(e) => (e.key === 'Enter' || e.key === ' ') && openPreview(logo)}
style="cursor:pointer;"
>
-
+ {#if isSvgLogo(logo) && logo.colors}
+
+ {:else}
+
+ {/if}
{logo.name}
-
Format: {logo.format}
+
+ Format: {logo.format}
+ {#if isSvgLogo(logo) && logo.colors}
+
+ {#each logo.colors as colorObj}
+ logo._activeColor = colorObj.value}
+ on:keydown|stopPropagation={(e) => {
+ if (e.key === 'Enter' || e.key === ' ') {
+ logo._activeColor = colorObj.value;
+ e.preventDefault();
+ }
+ }}
+ >
+ {/each}
+
+ {/if}
+
@@ -77,13 +121,27 @@
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
- .logo-image img {
+ .logo-image img,
+.logo-image :global(svg) {
+ width: 100%;
+ height: 100%;
+ max-width: 100%;
+ max-height: 100%;
+ object-fit: contain;
+ object-position: center;
+ display: block;
+ margin: 0 auto;
+}
+ /* Make inline SVGs scale and fit like
![]()
*/
+ .logo-image svg {
max-width: 80%;
max-height: 80%;
width: auto !important;
height: auto !important;
object-fit: contain;
object-position: center;
+ display: block;
+ margin: 0 auto;
}
.logo-info {
padding: 1rem;
@@ -96,21 +154,71 @@
margin-bottom: 0.5rem;
color: var(--color-accent, #4f8cff);
}
- .logo-info p {
- font-size: 0.9rem;
- color: var(--color-text);
- margin-bottom: 1rem;
- }
+ /* .logo-info p { font-size: 0.9rem; color: var(--color-text); margin-bottom: 1rem; } */
.logo-actions {
display: flex;
align-items: center;
gap: 0.5em;
flex-wrap: nowrap;
}
+ .format-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 1em;
+ margin-bottom: 0.5em;
+ }
+ .color-switcher-inline {
+ display: flex;
+ gap: 0.4em;
+ align-items: center;
+ margin-left: auto;
+ }
+ .color-switcher {
+ display: flex;
+ gap: 0.4em;
+ margin: 0.5em 0 0.5em 0;
+ align-items: center;
+ }
+ .color-circle {
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ border: 2px solid #eee;
+ box-shadow: 0 1px 2px rgba(0,0,0,0.08);
+ cursor: pointer;
+ display: inline-block;
+ transition: border 0.2s, box-shadow 0.2s;
+ }
+ .color-circle:hover {
+ border: 2px solid #888;
+ box-shadow: 0 2px 8px rgba(0,0,0,0.12);
+ }
.no-results {
grid-column: 1 / -1;
text-align: center;
padding: 2rem;
color: #666;
}
+
+ .color-switcher {
+ display: flex;
+ gap: 0.4em;
+ margin: 0.5em 0 0.5em 0;
+ align-items: center;
+ }
+ .color-circle {
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ border: 2px solid #eee;
+ box-shadow: 0 1px 2px rgba(0,0,0,0.08);
+ cursor: pointer;
+ display: inline-block;
+ transition: border 0.2s, box-shadow 0.2s;
+ }
+ .color-circle:hover {
+ border: 2px solid #888;
+ box-shadow: 0 2px 8px rgba(0,0,0,0.12);
+ }
diff --git a/src/components/LogoList.svelte b/src/components/LogoList.svelte
index ef0ab32..f47ede9 100644
--- a/src/components/LogoList.svelte
+++ b/src/components/LogoList.svelte
@@ -1,6 +1,7 @@
@@ -33,11 +38,39 @@
on:keydown={(e) => (e.key === 'Enter' || e.key === ' ') && openPreview(logo)}
style="cursor:pointer;"
>
-

+ >
+ {#if isSvgLogo(logo) && logo.colors}
+
+ {:else}
+

+ {/if}
{logo.name}
-
Format: {logo.format}
+
+ Format: {logo.format}
+
+ {#if isSvgLogo(logo) && logo.colors}
+
+ {#each logo.colors as colorObj}
+ logo._activeColor = colorObj.value}
+ on:keydown|stopPropagation={(e) => {
+ if (e.key === 'Enter' || e.key === ' ') {
+ logo._activeColor = colorObj.value;
+ e.preventDefault();
+ }
+ }}
+ >
+ {/each}
+
+ {/if}
@@ -82,6 +115,26 @@
object-fit: contain;
object-position: center;
}
+ .color-switcher {
+ display: flex;
+ gap: 0.4em;
+ margin: 0.5em 0 0.5em 0;
+ align-items: center;
+ }
+ .color-circle {
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ border: 2px solid #eee;
+ box-shadow: 0 1px 2px rgba(0,0,0,0.08);
+ cursor: pointer;
+ display: inline-block;
+ transition: border 0.2s, box-shadow 0.2s;
+ }
+ .color-circle:hover {
+ border: 2px solid #888;
+ box-shadow: 0 2px 8px rgba(0,0,0,0.12);
+ }
.logo-info {
background: var(--color-card);
color: var(--color-text);
@@ -93,11 +146,7 @@
margin-bottom: 0.5rem;
color: var(--color-accent, #4f8cff);
}
- .logo-info p {
- font-size: 0.9rem;
- color: var(--color-text);
- margin-bottom: 1rem;
- }
+ /* .logo-info p { font-size: 0.9rem; color: var(--color-text); margin-bottom: 1rem; } */
.logo-actions {
display: flex;
align-items: center;
@@ -114,4 +163,17 @@
padding: 2rem;
color: #666;
}
+
+ .format-row {
+ display: flex;
+ align-items: center;
+ gap: 1em;
+ }
+ /* .color-switcher-inline { display: flex; gap: 0.4em; align-items: center; margin-left: auto; } */
+ .color-switcher-under {
+ display: flex;
+ gap: 0.4em;
+ align-items: center;
+ margin: 0.5em 0 0 0;
+ }
diff --git a/src/components/LogoModal.svelte b/src/components/LogoModal.svelte
index 6d93e66..7aae80a 100644
--- a/src/components/LogoModal.svelte
+++ b/src/components/LogoModal.svelte
@@ -1,5 +1,6 @@