Improve logo and footerUnverified
bc9e3fb parent: 6bf6dbf modified
Makefile +6 -1 | @@ -37,13 +37,18 @@ css: | ||
| 37 | 37 | css-watch: |
| 38 | 38 | npx tailwindcss -i ./static/input.css -o ./static/output.css --watch |
| 39 | 39 | |
| 40 | +.PHONY: icons | |
| 41 | +icons: | |
| 42 | + magick static/favicon.svg -background none -density 1200 -resize 512x512 -depth 8 PNG32:static/favicon.png | |
| 43 | + magick static/favicon.svg -background none -density 1200 -resize 180x180 -depth 8 PNG32:static/apple-touch-icon.png | |
| 44 | + | |
| 40 | 45 | .PHONY: test |
| 41 | 46 | test: |
| 42 | 47 | go test -tags fts5 ./... |
| 43 | 48 | |
| 44 | 49 | .PHONY: clean |
| 45 | 50 | clean: |
| 46 | - rm -f glean glean.db static/output.css | |
| 51 | + rm -f glean glean.db static/output.css static/favicon.png static/apple-touch-icon.png | |
| 47 | 52 | |
| 48 | 53 | .PHONY: docker-build |
| 49 | 54 | docker-build: |
| @@ -37,13 +37,18 @@ css: | |||
| 37 | css-watch: | 37 | css-watch: |
| 38 | npx tailwindcss -i ./static/input.css -o ./static/output.css --watch | 38 | npx tailwindcss -i ./static/input.css -o ./static/output.css --watch |
| 39 | 39 | ||
| 40 | +.PHONY: icons | ||
| 41 | +icons: | ||
| 42 | + magick static/favicon.svg -background none -density 1200 -resize 512x512 -depth 8 PNG32:static/favicon.png | ||
| 43 | + magick static/favicon.svg -background none -density 1200 -resize 180x180 -depth 8 PNG32:static/apple-touch-icon.png | ||
| 44 | + | ||
| 40 | .PHONY: test | 45 | .PHONY: test |
| 41 | test: | 46 | test: |
| 42 | go test -tags fts5 ./... | 47 | go test -tags fts5 ./... |
| 43 | 48 | ||
| 44 | .PHONY: clean | 49 | .PHONY: clean |
| 45 | clean: | 50 | clean: |
| 46 | - rm -f glean glean.db static/output.css | 51 | + rm -f glean glean.db static/output.css static/favicon.png static/apple-touch-icon.png |
| 47 | 52 | ||
| 48 | .PHONY: docker-build | 53 | .PHONY: docker-build |
| 49 | docker-build: | 54 | docker-build: |
modified
docs/design.md +2 -2 | @@ -156,8 +156,8 @@ All custom colors live under the `spot` namespace in `tailwind.config.js`. CSS v | ||
| 156 | 156 | - **CSS build:** `make css` (minified) or `make css-watch` (dev with live reload) |
| 157 | 157 | - **Source:** `static/input.css` — contains `@tailwind` directives, CSS variables for themes, `@layer components` for article-body styles, and base utilities |
| 158 | 158 | - **Output:** `static/output.css` (gitignored, rebuilt on deploy) |
| 159 | -- **Favicon:** `static/favicon.svg` — wheat stalk SVG on House Green background | |
| 160 | -- **Logo:** Inline SVG in base.html sidebar and index.html hero | |
| 159 | +- **Favicon:** `static/favicon.svg` — bee logo (gradient green background, rounded rect). `static/favicon.png` — 512x512 raster fallback. Both linked in `base.html` `<head>`. | |
| 160 | +- **Logo:** `<img>` referencing `/static/favicon.svg`, defined in `partials/logo.html` (`logo-icon`, `logo-link`, `logo-text` templates). | |
| 161 | 161 | |
| 162 | 162 | ## 8. Page Structure |
| 163 | 163 | |
| @@ -156,8 +156,8 @@ All custom colors live under the `spot` namespace in `tailwind.config.js`. CSS v | |||
| 156 | - **CSS build:** `make css` (minified) or `make css-watch` (dev with live reload) | 156 | - **CSS build:** `make css` (minified) or `make css-watch` (dev with live reload) |
| 157 | - **Source:** `static/input.css` — contains `@tailwind` directives, CSS variables for themes, `@layer components` for article-body styles, and base utilities | 157 | - **Source:** `static/input.css` — contains `@tailwind` directives, CSS variables for themes, `@layer components` for article-body styles, and base utilities |
| 158 | - **Output:** `static/output.css` (gitignored, rebuilt on deploy) | 158 | - **Output:** `static/output.css` (gitignored, rebuilt on deploy) |
| 159 | -- **Favicon:** `static/favicon.svg` — wheat stalk SVG on House Green background | 159 | +- **Favicon:** `static/favicon.svg` — bee logo (gradient green background, rounded rect). `static/favicon.png` — 512x512 raster fallback. Both linked in `base.html` `<head>`. |
| 160 | -- **Logo:** Inline SVG in base.html sidebar and index.html hero | 160 | +- **Logo:** `<img>` referencing `/static/favicon.svg`, defined in `partials/logo.html` (`logo-icon`, `logo-link`, `logo-text` templates). |
| 161 | 161 | ||
| 162 | ## 8. Page Structure | 162 | ## 8. Page Structure |
| 163 | 163 | ||
modified
internal/tmpl/base.html +19 -16 | @@ -28,10 +28,16 @@ | ||
| 28 | 28 | </script> |
| 29 | 29 | <meta property="og:title" content="Glean"> |
| 30 | 30 | <meta property="og:description" content="A social RSS reader on the AT Protocol."> |
| 31 | - <meta property="og:image" content="/static/favicon.svg"> | |
| 31 | + <meta property="og:image" content="/static/banner.png"> | |
| 32 | 32 | <meta property="og:type" content="website"> |
| 33 | 33 | <meta property="og:site_name" content="Glean"> |
| 34 | + <link rel="icon" type="image/png" sizes="512x512" href="/static/favicon.png"> | |
| 34 | 35 | <link rel="icon" type="image/svg+xml" href="/static/favicon.svg"> |
| 36 | + <link rel="apple-touch-icon" href="/static/apple-touch-icon.png"> | |
| 37 | + <meta name="theme-color" content="#00754A"> | |
| 38 | + <meta name="apple-mobile-web-app-capable" content="yes"> | |
| 39 | + <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> | |
| 40 | + <link rel="manifest" href="/static/manifest.json"> | |
| 35 | 41 | <link rel="preconnect" href="https://fonts.googleapis.com"> |
| 36 | 42 | <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| 37 | 43 | <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet"> |
| @@ -139,7 +145,7 @@ | ||
| 139 | 145 | <main id="main-content" class="{{if or .User (or (eq .ActivePath "/trending") (eq .ActivePath "/stats"))}}lg:ml-60 pb-20 lg:pb-0{{end}} flex-1 min-h-screen flex flex-col"> |
| 140 | 146 | {{if or .User (or (eq .ActivePath "/trending") (eq .ActivePath "/stats"))}} |
| 141 | 147 | <div class="lg:hidden bg-spot-surface border-b border-spot-divider px-4 py-3 flex items-center justify-between sticky top-0 z-20"> |
| 142 | - {{template "logo-text"}} | |
| 148 | + {{template "logo-link"}} | |
| 143 | 149 | {{if .User}} |
| 144 | 150 | <a href="/profile/{{.User.DID}}" class="flex items-center gap-2"> |
| 145 | 151 | {{if .User.AvatarURL}}<img src="{{.User.AvatarURL}}" class="w-7 h-7 rounded-full">{{end}} |
| @@ -155,12 +161,8 @@ | ||
| 155 | 161 | </div> |
| 156 | 162 | <footer class="mt-auto"> |
| 157 | 163 | <div class="w-full bg-spot-surface border-t border-spot-divider"> |
| 158 | - <div class="max-w-6xl mx-auto px-4 lg:px-8 py-8"> | |
| 159 | - <div class="hidden md:grid md:grid-cols-[auto_1fr_auto] md:gap-12 md:items-start"> | |
| 160 | - <div> | |
| 161 | - {{template "logo-text"}} | |
| 162 | - <p class="text-xs text-spot-secondary mt-1 max-w-[200px]">A social RSS reader<br>on the AT Protocol.</p> | |
| 163 | - </div> | |
| 164 | + <div class="max-w-6xl mx-auto px-4 lg:px-8 py-6 lg:py-8"> | |
| 165 | + <div class="hidden md:grid md:grid-cols-[2fr_1fr] md:gap-8 md:items-start"> | |
| 164 | 166 | <div class="grid grid-cols-3 gap-8"> |
| 165 | 167 | <div class="flex flex-col gap-1.5"> |
| 166 | 168 | <div class="text-spot-text font-bold text-xs uppercase tracking-wide mb-1">Browse</div> |
| @@ -204,33 +206,32 @@ | ||
| 204 | 206 | </button> |
| 205 | 207 | <button onclick="document.getElementById('shortcuts-dialog').showModal()" class="text-xs text-spot-secondary hover:text-spot-text hover:underline inline-flex gap-1.5 items-center transition text-left"> |
| 206 | 208 | <svg class="w-3.5 h-3.5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"/></svg> |
| 207 | - Keyboard shortcuts | |
| 209 | + Shortcuts | |
| 208 | 210 | </button> |
| 209 | 211 | </div> |
| 210 | 212 | </div> |
| 211 | 213 | <div class="text-right"> |
| 212 | - <div class="text-xs text-spot-secondary">© {{now.Format "2006"}} <a href="https://bsky.app/profile/julien.rbrt.fr">julien.rbrt.fr</a></div> | |
| 214 | + <div class="text-xs text-spot-secondary">© {{now.Format "2006"}} <a href="https://bsky.app/profile/julien.rbrt.fr" class="hover:text-spot-text transition">julien.rbrt.fr</a></div> | |
| 213 | 215 | <div class="text-[10px] text-spot-secondary mt-0.5">Made in Europe 🇪🇺</div> |
| 214 | 216 | </div> |
| 215 | 217 | </div> |
| 216 | 218 | |
| 217 | - <div class="md:hidden flex flex-col gap-6"> | |
| 218 | - {{template "logo-text"}} | |
| 219 | + <div class="md:hidden flex flex-col gap-5"> | |
| 219 | 220 | <div class="grid grid-cols-2 gap-6"> |
| 220 | 221 | <div class="flex flex-col gap-1.5"> |
| 221 | 222 | <div class="text-spot-text font-bold text-xs uppercase tracking-wide mb-1">Browse</div> |
| 222 | 223 | <a href="/dashboard" class="text-xs text-spot-secondary hover:text-spot-text transition">Dashboard</a> |
| 223 | 224 | <a href="/trending" class="text-xs text-spot-secondary hover:text-spot-text transition">Trending</a> |
| 225 | + <a href="/articles" class="text-xs text-spot-secondary hover:text-spot-text transition">Articles</a> | |
| 224 | 226 | </div> |
| 225 | 227 | <div class="flex flex-col gap-1.5"> |
| 226 | 228 | <div class="text-spot-text font-bold text-xs uppercase tracking-wide mb-1">Library</div> |
| 227 | - <a href="/articles" class="text-xs text-spot-secondary hover:text-spot-text transition">Articles</a> | |
| 228 | 229 | <a href="/feeds" class="text-xs text-spot-secondary hover:text-spot-text transition">Feeds</a> |
| 229 | 230 | <a href="/library" class="text-xs text-spot-secondary hover:text-spot-text transition">Library</a> |
| 230 | 231 | </div> |
| 231 | 232 | </div> |
| 232 | - <div class="flex flex-col gap-3"> | |
| 233 | - <div class="flex items-center gap-4"> | |
| 233 | + <div class="border-t border-spot-divider pt-4"> | |
| 234 | + <div class="flex flex-wrap items-center gap-3"> | |
| 234 | 235 | <button onclick="toggleTheme()" class="text-xs text-spot-secondary hover:text-spot-text inline-flex gap-1.5 items-center transition"> |
| 235 | 236 | <svg class="w-3.5 h-3.5 theme-icon-dark" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg> |
| 236 | 237 | <svg class="w-3.5 h-3.5 theme-icon-light hidden" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg> |
| @@ -244,7 +245,9 @@ | ||
| 244 | 245 | <span class="shape-text">Squared</span> |
| 245 | 246 | </button> |
| 246 | 247 | </div> |
| 247 | - <span class="text-xs text-spot-secondary">© {{now.Format "2006"}} <a href="https://bsky.app/profile/julien.rbrt.fr">julien.rbrt.fr</a> · Made in Europe 🇪🇺</span> | |
| 248 | + <div class="border-t border-spot-divider mt-4 pt-3"> | |
| 249 | + <span class="text-xs text-spot-secondary">© {{now.Format "2006"}} <a href="https://bsky.app/profile/julien.rbrt.fr" class="hover:text-spot-text transition">julien.rbrt.fr</a> · Made in Europe 🇪🇺</span> | |
| 250 | + </div> | |
| 248 | 251 | </div> |
| 249 | 252 | </div> |
| 250 | 253 | </div> |
| @@ -28,10 +28,16 @@ | |||
| 28 | </script> | 28 | </script> |
| 29 | <meta property="og:title" content="Glean"> | 29 | <meta property="og:title" content="Glean"> |
| 30 | <meta property="og:description" content="A social RSS reader on the AT Protocol."> | 30 | <meta property="og:description" content="A social RSS reader on the AT Protocol."> |
| 31 | - <meta property="og:image" content="/static/favicon.svg"> | 31 | + <meta property="og:image" content="/static/banner.png"> |
| 32 | <meta property="og:type" content="website"> | 32 | <meta property="og:type" content="website"> |
| 33 | <meta property="og:site_name" content="Glean"> | 33 | <meta property="og:site_name" content="Glean"> |
| 34 | + <link rel="icon" type="image/png" sizes="512x512" href="/static/favicon.png"> | ||
| 34 | <link rel="icon" type="image/svg+xml" href="/static/favicon.svg"> | 35 | <link rel="icon" type="image/svg+xml" href="/static/favicon.svg"> |
| 36 | + <link rel="apple-touch-icon" href="/static/apple-touch-icon.png"> | ||
| 37 | + <meta name="theme-color" content="#00754A"> | ||
| 38 | + <meta name="apple-mobile-web-app-capable" content="yes"> | ||
| 39 | + <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> | ||
| 40 | + <link rel="manifest" href="/static/manifest.json"> | ||
| 35 | <link rel="preconnect" href="https://fonts.googleapis.com"> | 41 | <link rel="preconnect" href="https://fonts.googleapis.com"> |
| 36 | <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | 42 | <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| 37 | <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet"> | 43 | <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet"> |
| @@ -139,7 +145,7 @@ | |||
| 139 | <main id="main-content" class="{{if or .User (or (eq .ActivePath "/trending") (eq .ActivePath "/stats"))}}lg:ml-60 pb-20 lg:pb-0{{end}} flex-1 min-h-screen flex flex-col"> | 145 | <main id="main-content" class="{{if or .User (or (eq .ActivePath "/trending") (eq .ActivePath "/stats"))}}lg:ml-60 pb-20 lg:pb-0{{end}} flex-1 min-h-screen flex flex-col"> |
| 140 | {{if or .User (or (eq .ActivePath "/trending") (eq .ActivePath "/stats"))}} | 146 | {{if or .User (or (eq .ActivePath "/trending") (eq .ActivePath "/stats"))}} |
| 141 | <div class="lg:hidden bg-spot-surface border-b border-spot-divider px-4 py-3 flex items-center justify-between sticky top-0 z-20"> | 147 | <div class="lg:hidden bg-spot-surface border-b border-spot-divider px-4 py-3 flex items-center justify-between sticky top-0 z-20"> |
| 142 | - {{template "logo-text"}} | 148 | + {{template "logo-link"}} |
| 143 | {{if .User}} | 149 | {{if .User}} |
| 144 | <a href="/profile/{{.User.DID}}" class="flex items-center gap-2"> | 150 | <a href="/profile/{{.User.DID}}" class="flex items-center gap-2"> |
| 145 | {{if .User.AvatarURL}}<img src="{{.User.AvatarURL}}" class="w-7 h-7 rounded-full">{{end}} | 151 | {{if .User.AvatarURL}}<img src="{{.User.AvatarURL}}" class="w-7 h-7 rounded-full">{{end}} |
| @@ -155,12 +161,8 @@ | |||
| 155 | </div> | 161 | </div> |
| 156 | <footer class="mt-auto"> | 162 | <footer class="mt-auto"> |
| 157 | <div class="w-full bg-spot-surface border-t border-spot-divider"> | 163 | <div class="w-full bg-spot-surface border-t border-spot-divider"> |
| 158 | - <div class="max-w-6xl mx-auto px-4 lg:px-8 py-8"> | 164 | + <div class="max-w-6xl mx-auto px-4 lg:px-8 py-6 lg:py-8"> |
| 159 | - <div class="hidden md:grid md:grid-cols-[auto_1fr_auto] md:gap-12 md:items-start"> | 165 | + <div class="hidden md:grid md:grid-cols-[2fr_1fr] md:gap-8 md:items-start"> |
| 160 | - <div> | ||
| 161 | - {{template "logo-text"}} | ||
| 162 | - <p class="text-xs text-spot-secondary mt-1 max-w-[200px]">A social RSS reader<br>on the AT Protocol.</p> | ||
| 163 | - </div> | ||
| 164 | <div class="grid grid-cols-3 gap-8"> | 166 | <div class="grid grid-cols-3 gap-8"> |
| 165 | <div class="flex flex-col gap-1.5"> | 167 | <div class="flex flex-col gap-1.5"> |
| 166 | <div class="text-spot-text font-bold text-xs uppercase tracking-wide mb-1">Browse</div> | 168 | <div class="text-spot-text font-bold text-xs uppercase tracking-wide mb-1">Browse</div> |
| @@ -204,33 +206,32 @@ | |||
| 204 | </button> | 206 | </button> |
| 205 | <button onclick="document.getElementById('shortcuts-dialog').showModal()" class="text-xs text-spot-secondary hover:text-spot-text hover:underline inline-flex gap-1.5 items-center transition text-left"> | 207 | <button onclick="document.getElementById('shortcuts-dialog').showModal()" class="text-xs text-spot-secondary hover:text-spot-text hover:underline inline-flex gap-1.5 items-center transition text-left"> |
| 206 | <svg class="w-3.5 h-3.5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"/></svg> | 208 | <svg class="w-3.5 h-3.5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"/></svg> |
| 207 | - Keyboard shortcuts | 209 | + Shortcuts |
| 208 | </button> | 210 | </button> |
| 209 | </div> | 211 | </div> |
| 210 | </div> | 212 | </div> |
| 211 | <div class="text-right"> | 213 | <div class="text-right"> |
| 212 | - <div class="text-xs text-spot-secondary">© {{now.Format "2006"}} <a href="https://bsky.app/profile/julien.rbrt.fr">julien.rbrt.fr</a></div> | 214 | + <div class="text-xs text-spot-secondary">© {{now.Format "2006"}} <a href="https://bsky.app/profile/julien.rbrt.fr" class="hover:text-spot-text transition">julien.rbrt.fr</a></div> |
| 213 | <div class="text-[10px] text-spot-secondary mt-0.5">Made in Europe 🇪🇺</div> | 215 | <div class="text-[10px] text-spot-secondary mt-0.5">Made in Europe 🇪🇺</div> |
| 214 | </div> | 216 | </div> |
| 215 | </div> | 217 | </div> |
| 216 | 218 | ||
| 217 | - <div class="md:hidden flex flex-col gap-6"> | 219 | + <div class="md:hidden flex flex-col gap-5"> |
| 218 | - {{template "logo-text"}} | ||
| 219 | <div class="grid grid-cols-2 gap-6"> | 220 | <div class="grid grid-cols-2 gap-6"> |
| 220 | <div class="flex flex-col gap-1.5"> | 221 | <div class="flex flex-col gap-1.5"> |
| 221 | <div class="text-spot-text font-bold text-xs uppercase tracking-wide mb-1">Browse</div> | 222 | <div class="text-spot-text font-bold text-xs uppercase tracking-wide mb-1">Browse</div> |
| 222 | <a href="/dashboard" class="text-xs text-spot-secondary hover:text-spot-text transition">Dashboard</a> | 223 | <a href="/dashboard" class="text-xs text-spot-secondary hover:text-spot-text transition">Dashboard</a> |
| 223 | <a href="/trending" class="text-xs text-spot-secondary hover:text-spot-text transition">Trending</a> | 224 | <a href="/trending" class="text-xs text-spot-secondary hover:text-spot-text transition">Trending</a> |
| 225 | + <a href="/articles" class="text-xs text-spot-secondary hover:text-spot-text transition">Articles</a> | ||
| 224 | </div> | 226 | </div> |
| 225 | <div class="flex flex-col gap-1.5"> | 227 | <div class="flex flex-col gap-1.5"> |
| 226 | <div class="text-spot-text font-bold text-xs uppercase tracking-wide mb-1">Library</div> | 228 | <div class="text-spot-text font-bold text-xs uppercase tracking-wide mb-1">Library</div> |
| 227 | - <a href="/articles" class="text-xs text-spot-secondary hover:text-spot-text transition">Articles</a> | ||
| 228 | <a href="/feeds" class="text-xs text-spot-secondary hover:text-spot-text transition">Feeds</a> | 229 | <a href="/feeds" class="text-xs text-spot-secondary hover:text-spot-text transition">Feeds</a> |
| 229 | <a href="/library" class="text-xs text-spot-secondary hover:text-spot-text transition">Library</a> | 230 | <a href="/library" class="text-xs text-spot-secondary hover:text-spot-text transition">Library</a> |
| 230 | </div> | 231 | </div> |
| 231 | </div> | 232 | </div> |
| 232 | - <div class="flex flex-col gap-3"> | 233 | + <div class="border-t border-spot-divider pt-4"> |
| 233 | - <div class="flex items-center gap-4"> | 234 | + <div class="flex flex-wrap items-center gap-3"> |
| 234 | <button onclick="toggleTheme()" class="text-xs text-spot-secondary hover:text-spot-text inline-flex gap-1.5 items-center transition"> | 235 | <button onclick="toggleTheme()" class="text-xs text-spot-secondary hover:text-spot-text inline-flex gap-1.5 items-center transition"> |
| 235 | <svg class="w-3.5 h-3.5 theme-icon-dark" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg> | 236 | <svg class="w-3.5 h-3.5 theme-icon-dark" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg> |
| 236 | <svg class="w-3.5 h-3.5 theme-icon-light hidden" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg> | 237 | <svg class="w-3.5 h-3.5 theme-icon-light hidden" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg> |
| @@ -244,7 +245,9 @@ | |||
| 244 | <span class="shape-text">Squared</span> | 245 | <span class="shape-text">Squared</span> |
| 245 | </button> | 246 | </button> |
| 246 | </div> | 247 | </div> |
| 247 | - <span class="text-xs text-spot-secondary">© {{now.Format "2006"}} <a href="https://bsky.app/profile/julien.rbrt.fr">julien.rbrt.fr</a> · Made in Europe 🇪🇺</span> | 248 | + <div class="border-t border-spot-divider mt-4 pt-3"> |
| 249 | + <span class="text-xs text-spot-secondary">© {{now.Format "2006"}} <a href="https://bsky.app/profile/julien.rbrt.fr" class="hover:text-spot-text transition">julien.rbrt.fr</a> · Made in Europe 🇪🇺</span> | ||
| 250 | + </div> | ||
| 248 | </div> | 251 | </div> |
| 249 | </div> | 252 | </div> |
| 250 | </div> | 253 | </div> |
modified
internal/tmpl/login.html +1 -1 | @@ -2,7 +2,7 @@ | ||
| 2 | 2 | <div class="max-w-md mx-auto mt-20"> |
| 3 | 3 | <div class="bg-spot-surface rounded-xl shadow-spot-heavy p-8"> |
| 4 | 4 | <div class="flex justify-center mb-6"> |
| 5 | - <span class="w-14 h-14">{{template "logo-icon"}}</span> | |
| 5 | + <a href="/" class="w-14 h-14 block">{{template "logo-icon"}}</a> | |
| 6 | 6 | </div> |
| 7 | 7 | <h1 class="text-2xl font-bold text-spot-text mb-2 text-center">Sign in to Glean</h1> |
| 8 | 8 | <p class="text-spot-secondary text-sm mb-6 text-center">Enter your handle.</p> |
| @@ -2,7 +2,7 @@ | |||
| 2 | <div class="max-w-md mx-auto mt-20"> | 2 | <div class="max-w-md mx-auto mt-20"> |
| 3 | <div class="bg-spot-surface rounded-xl shadow-spot-heavy p-8"> | 3 | <div class="bg-spot-surface rounded-xl shadow-spot-heavy p-8"> |
| 4 | <div class="flex justify-center mb-6"> | 4 | <div class="flex justify-center mb-6"> |
| 5 | - <span class="w-14 h-14">{{template "logo-icon"}}</span> | 5 | + <a href="/" class="w-14 h-14 block">{{template "logo-icon"}}</a> |
| 6 | </div> | 6 | </div> |
| 7 | <h1 class="text-2xl font-bold text-spot-text mb-2 text-center">Sign in to Glean</h1> | 7 | <h1 class="text-2xl font-bold text-spot-text mb-2 text-center">Sign in to Glean</h1> |
| 8 | <p class="text-spot-secondary text-sm mb-6 text-center">Enter your handle.</p> | 8 | <p class="text-spot-secondary text-sm mb-6 text-center">Enter your handle.</p> |
modified
internal/tmpl/partials/logo.html +4 -20 | @@ -1,21 +1,5 @@ | ||
| 1 | -{{define "logo-icon"}}<svg class="w-full h-full" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
| 2 | - <rect width="32" height="32" rx="8" fill="#00754A"/> | |
| 3 | - <ellipse cx="16" cy="20" rx="5.5" ry="6" fill="#fff"/> | |
| 4 | - <path d="M10.5 19.5c-2.5-1-5.5-4-5-7.5.2-1.2 1-1.8 1.8-1.5 2 .7 3.5 4 3.8 7" fill="#fff" fill-opacity=".5"/> | |
| 5 | - <path d="M21.5 19.5c2.5-1 5.5-4 5-7.5-.2-1.2-1-1.8-1.8-1.5-2 .7-3.5 4-3.8 7" fill="#fff" fill-opacity=".5"/> | |
| 6 | - <line x1="13" y1="17" x2="19" y2="17" stroke="#00754A" stroke-width="1.2"/> | |
| 7 | - <line x1="12.5" y1="20" x2="19.5" y2="20" stroke="#00754A" stroke-width="1.2"/> | |
| 8 | - <line x1="13" y1="23" x2="19" y2="23" stroke="#00754A" stroke-width="1.2"/> | |
| 9 | - <circle cx="13.5" cy="11" r="1.8" fill="#fff"/> | |
| 10 | - <circle cx="18.5" cy="11" r="1.8" fill="#fff"/> | |
| 11 | - <line x1="13.5" y1="9.2" x2="12" y2="6.5" stroke="#fff" stroke-width="1.3" stroke-linecap="round"/> | |
| 12 | - <line x1="18.5" y1="9.2" x2="20" y2="6.5" stroke="#fff" stroke-width="1.3" stroke-linecap="round"/> | |
| 13 | - <path d="M13 26c.5 1 1.5 1.5 3 1.5s2.5-.5 3-1.5" stroke="#fff" stroke-width="1.2" stroke-linecap="round" fill="none"/> | |
| 14 | -</svg>{{end}} | |
| 1 | +{{define "logo-icon"}}<img src="/static/favicon.svg" class="w-full h-full" alt="Glean">{{end}} | |
| 15 | 2 | |
| 16 | -{{define "logo-link"}}<a href="/" class="text-spot-green font-bold text-xl tracking-tight flex items-center gap-2"> | |
| 17 | - <span class="w-7 h-7">{{template "logo-icon"}}</span> | |
| 18 | - <span class="font-bold text-xl text-spot-text">Glean</span> | |
| 19 | -</a>{{end}} | |
| 20 | - | |
| 21 | -{{define "logo-text"}}<a href="/" class="text-spot-green font-bold text-lg tracking-tight"><span class="font-bold text-xl text-spot-text">Glean</span>.at</a>{{end}} | |
| 3 | +{{define "logo-link"}}<a href="/" class="font-bold text-xl tracking-tight flex items-center gap-2"> | |
| 4 | + <span class="w-7 h-7">{{template "logo-icon"}}</span><span class="text-spot-text">Glean</span> | |
| 5 | +</a>{{end}} | |
| \ No newline at end of file | ||
| @@ -1,21 +1,5 @@ | |||
| 1 | -{{define "logo-icon"}}<svg class="w-full h-full" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> | 1 | +{{define "logo-icon"}}<img src="/static/favicon.svg" class="w-full h-full" alt="Glean">{{end}} |
| 2 | - <rect width="32" height="32" rx="8" fill="#00754A"/> | ||
| 3 | - <ellipse cx="16" cy="20" rx="5.5" ry="6" fill="#fff"/> | ||
| 4 | - <path d="M10.5 19.5c-2.5-1-5.5-4-5-7.5.2-1.2 1-1.8 1.8-1.5 2 .7 3.5 4 3.8 7" fill="#fff" fill-opacity=".5"/> | ||
| 5 | - <path d="M21.5 19.5c2.5-1 5.5-4 5-7.5-.2-1.2-1-1.8-1.8-1.5-2 .7-3.5 4-3.8 7" fill="#fff" fill-opacity=".5"/> | ||
| 6 | - <line x1="13" y1="17" x2="19" y2="17" stroke="#00754A" stroke-width="1.2"/> | ||
| 7 | - <line x1="12.5" y1="20" x2="19.5" y2="20" stroke="#00754A" stroke-width="1.2"/> | ||
| 8 | - <line x1="13" y1="23" x2="19" y2="23" stroke="#00754A" stroke-width="1.2"/> | ||
| 9 | - <circle cx="13.5" cy="11" r="1.8" fill="#fff"/> | ||
| 10 | - <circle cx="18.5" cy="11" r="1.8" fill="#fff"/> | ||
| 11 | - <line x1="13.5" y1="9.2" x2="12" y2="6.5" stroke="#fff" stroke-width="1.3" stroke-linecap="round"/> | ||
| 12 | - <line x1="18.5" y1="9.2" x2="20" y2="6.5" stroke="#fff" stroke-width="1.3" stroke-linecap="round"/> | ||
| 13 | - <path d="M13 26c.5 1 1.5 1.5 3 1.5s2.5-.5 3-1.5" stroke="#fff" stroke-width="1.2" stroke-linecap="round" fill="none"/> | ||
| 14 | -</svg>{{end}} | ||
| 15 | 2 | ||
| 16 | -{{define "logo-link"}}<a href="/" class="text-spot-green font-bold text-xl tracking-tight flex items-center gap-2"> | 3 | +{{define "logo-link"}}<a href="/" class="font-bold text-xl tracking-tight flex items-center gap-2"> |
| 17 | - <span class="w-7 h-7">{{template "logo-icon"}}</span> | 4 | + <span class="w-7 h-7">{{template "logo-icon"}}</span><span class="text-spot-text">Glean</span> |
| 18 | - <span class="font-bold text-xl text-spot-text">Glean</span> | 5 | +</a>{{end}} |
| 19 | -</a>{{end}} | ||
| 20 | - | ||
| 21 | -{{define "logo-text"}}<a href="/" class="text-spot-green font-bold text-lg tracking-tight"><span class="font-bold text-xl text-spot-text">Glean</span>.at</a>{{end}} | ||
| \ No newline at end of file | \ No newline at end of file | ||
modified
internal/tmpl/trending.html +2 -2 | @@ -1,6 +1,6 @@ | ||
| 1 | 1 | {{define "trending.html"}} |
| 2 | 2 | {{if not .User}} |
| 3 | -<div class="bg-spot-surface rounded-xl shadow-spot-heavy p-6 mb-6 flex items-center justify-between gap-4"> | |
| 3 | +<div class="bg-spot-surface rounded-xl shadow-spot-heavy p-6 mb-6 flex items-center justify-between gap-4 flex-wrap"> | |
| 4 | 4 | <div> |
| 5 | 5 | <p class="text-sm text-spot-text font-bold">Sign in to like, annotate, and get personalized recommendations.</p> |
| 6 | 6 | </div> |
| @@ -8,7 +8,7 @@ | ||
| 8 | 8 | </div> |
| 9 | 9 | {{end}} |
| 10 | 10 | |
| 11 | -<div class="flex items-center justify-between mb-2"> | |
| 11 | +<div class="flex items-center justify-between mb-2 flex-wrap gap-2"> | |
| 12 | 12 | <h1 class="text-2xl font-bold text-spot-text">Trending</h1> |
| 13 | 13 | <div class="flex gap-2"> |
| 14 | 14 | <a href="/trending?scope=all" |
| @@ -1,6 +1,6 @@ | |||
| 1 | {{define "trending.html"}} | 1 | {{define "trending.html"}} |
| 2 | {{if not .User}} | 2 | {{if not .User}} |
| 3 | -<div class="bg-spot-surface rounded-xl shadow-spot-heavy p-6 mb-6 flex items-center justify-between gap-4"> | 3 | +<div class="bg-spot-surface rounded-xl shadow-spot-heavy p-6 mb-6 flex items-center justify-between gap-4 flex-wrap"> |
| 4 | <div> | 4 | <div> |
| 5 | <p class="text-sm text-spot-text font-bold">Sign in to like, annotate, and get personalized recommendations.</p> | 5 | <p class="text-sm text-spot-text font-bold">Sign in to like, annotate, and get personalized recommendations.</p> |
| 6 | </div> | 6 | </div> |
| @@ -8,7 +8,7 @@ | |||
| 8 | </div> | 8 | </div> |
| 9 | {{end}} | 9 | {{end}} |
| 10 | 10 | ||
| 11 | -<div class="flex items-center justify-between mb-2"> | 11 | +<div class="flex items-center justify-between mb-2 flex-wrap gap-2"> |
| 12 | <h1 class="text-2xl font-bold text-spot-text">Trending</h1> | 12 | <h1 class="text-2xl font-bold text-spot-text">Trending</h1> |
| 13 | <div class="flex gap-2"> | 13 | <div class="flex gap-2"> |
| 14 | <a href="/trending?scope=all" | 14 | <a href="/trending?scope=all" |
added
static/apple-touch-icon.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/static/apple-touch-icon.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/static/apple-touch-icon.png differ | Binary files /dev/null and b/static/apple-touch-icon.png differ | ||
added
static/banner.png +0 -0 | new file mode 100644 | ||
| Binary files /dev/null and b/static/banner.png differ | ||
| new file mode 100644 | |||
| Binary files /dev/null and b/static/banner.png differ | Binary files /dev/null and b/static/banner.png differ | ||
modified
static/favicon.png +0 -0 | Binary files a/static/favicon.png and b/static/favicon.png differ |
| Binary files a/static/favicon.png and b/static/favicon.png differ | Binary files a/static/favicon.png and b/static/favicon.png differ |
modified
static/favicon.svg +25 -13 | @@ -1,14 +1,26 @@ | ||
| 1 | -<svg class="w-full h-full" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
| 2 | - <rect width="32" height="32" rx="8" fill="#00754A"/> | |
| 3 | - <ellipse cx="16" cy="20" rx="5.5" ry="6" fill="#fff"/> | |
| 4 | - <path d="M10.5 19.5c-2.5-1-5.5-4-5-7.5.2-1.2 1-1.8 1.8-1.5 2 .7 3.5 4 3.8 7" fill="#fff" fill-opacity=".5"/> | |
| 5 | - <path d="M21.5 19.5c2.5-1 5.5-4 5-7.5-.2-1.2-1-1.8-1.8-1.5-2 .7-3.5 4-3.8 7" fill="#fff" fill-opacity=".5"/> | |
| 6 | - <line x1="13" y1="17" x2="19" y2="17" stroke="#00754A" stroke-width="1.2"/> | |
| 7 | - <line x1="12.5" y1="20" x2="19.5" y2="20" stroke="#00754A" stroke-width="1.2"/> | |
| 8 | - <line x1="13" y1="23" x2="19" y2="23" stroke="#00754A" stroke-width="1.2"/> | |
| 9 | - <circle cx="13.5" cy="11" r="1.8" fill="#fff"/> | |
| 10 | - <circle cx="18.5" cy="11" r="1.8" fill="#fff"/> | |
| 11 | - <line x1="13.5" y1="9.2" x2="12" y2="6.5" stroke="#fff" stroke-width="1.3" stroke-linecap="round"/> | |
| 12 | - <line x1="18.5" y1="9.2" x2="20" y2="6.5" stroke="#fff" stroke-width="1.3" stroke-linecap="round"/> | |
| 13 | - <path d="M13 26c.5 1 1.5 1.5 3 1.5s2.5-.5 3-1.5" stroke="#fff" stroke-width="1.2" stroke-linecap="round" fill="none"/> | |
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500"> | |
| 2 | + <defs> | |
| 3 | + <linearGradient id="bgGrad" x1="0" y1="0" x2="0" y2="1"> | |
| 4 | + <stop offset="0%" stop-color="#00754A"/> | |
| 5 | + <stop offset="100%" stop-color="#006241"/> | |
| 6 | + </linearGradient> | |
| 7 | + </defs> | |
| 8 | + | |
| 9 | + <rect width="500" height="500" rx="115" fill="url(#bgGrad)"/> | |
| 10 | + <g transform="translate(250,250) scale(0.82) translate(-250,-280)"> | |
| 11 | + <path d="M 325 290 C 450 260 510 170 495 85 C 400 130 360 200 325 290 Z" fill="#d4e9e2" opacity="0.75"/> | |
| 12 | + <path d="M 175 290 C 50 260 -10 170 5 85 C 100 130 140 200 175 290 Z" fill="#d4e9e2" opacity="0.75"/> | |
| 13 | + <path d="M 218 185 C 212 148 185 130 155 138" fill="none" stroke="#f2f2f2" stroke-width="11" stroke-linecap="round" opacity="0.55"/> | |
| 14 | + <circle cx="155" cy="138" r="13" fill="#f2f2f2"/> | |
| 15 | + <path d="M 282 185 C 288 148 315 130 345 138" fill="none" stroke="#f2f2f2" stroke-width="11" stroke-linecap="round" opacity="0.55"/> | |
| 16 | + <circle cx="345" cy="138" r="13" fill="#f2f2f2"/> | |
| 17 | + <rect x="155" y="165" width="190" height="290" rx="95" fill="#f2f2f2"/> | |
| 18 | + <circle cx="215" cy="230" r="22" fill="#00754A"/> | |
| 19 | + <circle cx="285" cy="230" r="22" fill="#00754A"/> | |
| 20 | + <circle cx="220" cy="224" r="7" fill="#f2f2f2"/> | |
| 21 | + <circle cx="290" cy="224" r="7" fill="#f2f2f2"/> | |
| 22 | + <rect x="195" y="315" width="110" height="18" rx="9" fill="#00754A"/> | |
| 23 | + <rect x="195" y="355" width="110" height="18" rx="9" fill="#00754A"/> | |
| 24 | + <rect x="195" y="395" width="70" height="18" rx="9" fill="#00754A"/> | |
| 25 | + </g> | |
| 14 | 26 | </svg> |
| @@ -1,14 +1,26 @@ | |||
| 1 | -<svg class="w-full h-full" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> | 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500"> |
| 2 | - <rect width="32" height="32" rx="8" fill="#00754A"/> | 2 | + <defs> |
| 3 | - <ellipse cx="16" cy="20" rx="5.5" ry="6" fill="#fff"/> | 3 | + <linearGradient id="bgGrad" x1="0" y1="0" x2="0" y2="1"> |
| 4 | - <path d="M10.5 19.5c-2.5-1-5.5-4-5-7.5.2-1.2 1-1.8 1.8-1.5 2 .7 3.5 4 3.8 7" fill="#fff" fill-opacity=".5"/> | 4 | + <stop offset="0%" stop-color="#00754A"/> |
| 5 | - <path d="M21.5 19.5c2.5-1 5.5-4 5-7.5-.2-1.2-1-1.8-1.8-1.5-2 .7-3.5 4-3.8 7" fill="#fff" fill-opacity=".5"/> | 5 | + <stop offset="100%" stop-color="#006241"/> |
| 6 | - <line x1="13" y1="17" x2="19" y2="17" stroke="#00754A" stroke-width="1.2"/> | 6 | + </linearGradient> |
| 7 | - <line x1="12.5" y1="20" x2="19.5" y2="20" stroke="#00754A" stroke-width="1.2"/> | 7 | + </defs> |
| 8 | - <line x1="13" y1="23" x2="19" y2="23" stroke="#00754A" stroke-width="1.2"/> | 8 | + |
| 9 | - <circle cx="13.5" cy="11" r="1.8" fill="#fff"/> | 9 | + <rect width="500" height="500" rx="115" fill="url(#bgGrad)"/> |
| 10 | - <circle cx="18.5" cy="11" r="1.8" fill="#fff"/> | 10 | + <g transform="translate(250,250) scale(0.82) translate(-250,-280)"> |
| 11 | - <line x1="13.5" y1="9.2" x2="12" y2="6.5" stroke="#fff" stroke-width="1.3" stroke-linecap="round"/> | 11 | + <path d="M 325 290 C 450 260 510 170 495 85 C 400 130 360 200 325 290 Z" fill="#d4e9e2" opacity="0.75"/> |
| 12 | - <line x1="18.5" y1="9.2" x2="20" y2="6.5" stroke="#fff" stroke-width="1.3" stroke-linecap="round"/> | 12 | + <path d="M 175 290 C 50 260 -10 170 5 85 C 100 130 140 200 175 290 Z" fill="#d4e9e2" opacity="0.75"/> |
| 13 | - <path d="M13 26c.5 1 1.5 1.5 3 1.5s2.5-.5 3-1.5" stroke="#fff" stroke-width="1.2" stroke-linecap="round" fill="none"/> | 13 | + <path d="M 218 185 C 212 148 185 130 155 138" fill="none" stroke="#f2f2f2" stroke-width="11" stroke-linecap="round" opacity="0.55"/> |
| 14 | + <circle cx="155" cy="138" r="13" fill="#f2f2f2"/> | ||
| 15 | + <path d="M 282 185 C 288 148 315 130 345 138" fill="none" stroke="#f2f2f2" stroke-width="11" stroke-linecap="round" opacity="0.55"/> | ||
| 16 | + <circle cx="345" cy="138" r="13" fill="#f2f2f2"/> | ||
| 17 | + <rect x="155" y="165" width="190" height="290" rx="95" fill="#f2f2f2"/> | ||
| 18 | + <circle cx="215" cy="230" r="22" fill="#00754A"/> | ||
| 19 | + <circle cx="285" cy="230" r="22" fill="#00754A"/> | ||
| 20 | + <circle cx="220" cy="224" r="7" fill="#f2f2f2"/> | ||
| 21 | + <circle cx="290" cy="224" r="7" fill="#f2f2f2"/> | ||
| 22 | + <rect x="195" y="315" width="110" height="18" rx="9" fill="#00754A"/> | ||
| 23 | + <rect x="195" y="355" width="110" height="18" rx="9" fill="#00754A"/> | ||
| 24 | + <rect x="195" y="395" width="70" height="18" rx="9" fill="#00754A"/> | ||
| 25 | + </g> | ||
| 14 | </svg> | 26 | </svg> |
added
static/manifest.json +14 -0 | new file mode 100644 | ||
| @@ -0,0 +1,14 @@ | ||
| 1 | +{ | |
| 2 | + "name": "Glean", | |
| 3 | + "short_name": "Glean", | |
| 4 | + "description": "A social RSS reader on the AT Protocol.", | |
| 5 | + "start_url": "/dashboard", | |
| 6 | + "display": "standalone", | |
| 7 | + "background_color": "#0a1814", | |
| 8 | + "theme_color": "#00754A", | |
| 9 | + "icons": [ | |
| 10 | + { "src": "/static/favicon.svg", "sizes": "any", "type": "image/svg+xml" }, | |
| 11 | + { "src": "/static/favicon.png", "sizes": "512x512", "type": "image/png" }, | |
| 12 | + { "src": "/static/apple-touch-icon.png", "sizes": "180x180", "type": "image/png" } | |
| 13 | + ] | |
| 14 | +} | |
| new file mode 100644 | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | +{ | ||
| 2 | + "name": "Glean", | ||
| 3 | + "short_name": "Glean", | ||
| 4 | + "description": "A social RSS reader on the AT Protocol.", | ||
| 5 | + "start_url": "/dashboard", | ||
| 6 | + "display": "standalone", | ||
| 7 | + "background_color": "#0a1814", | ||
| 8 | + "theme_color": "#00754A", | ||
| 9 | + "icons": [ | ||
| 10 | + { "src": "/static/favicon.svg", "sizes": "any", "type": "image/svg+xml" }, | ||
| 11 | + { "src": "/static/favicon.png", "sizes": "512x512", "type": "image/png" }, | ||
| 12 | + { "src": "/static/apple-touch-icon.png", "sizes": "180x180", "type": "image/png" } | ||
| 13 | + ] | ||
| 14 | +} | ||