feat(pwa): change default icons
|
@ -103,6 +103,40 @@ Elk will generate 2 web manifests per locale, one for light theme and one for da
|
||||||
|
|
||||||
You can check web manifest generation on [modules/pwa/i18n.ts](https://github.com/elk-zone/elk/blob/main/modules/pwa/i18n.ts) module.
|
You can check web manifest generation on [modules/pwa/i18n.ts](https://github.com/elk-zone/elk/blob/main/modules/pwa/i18n.ts) module.
|
||||||
|
|
||||||
|
### PWA Icons
|
||||||
|
|
||||||
|
Elk icons have been generated using [PWA Builder Image Generator](https://www.pwabuilder.com/imageGenerator), we generate the icons twice per environment: transparent and maskable icons.
|
||||||
|
|
||||||
|
To generate transparent icons:
|
||||||
|
- upload `logo.svg` from `public` folders: `public`, ` public-dev` and `public-staging`
|
||||||
|
- configure `0,1` as padding
|
||||||
|
- check `Transparent` in background color
|
||||||
|
- check `Windows 11` and `Android` in platforms
|
||||||
|
- click on `Generate` button
|
||||||
|
|
||||||
|
Once generated, we use the following icons:
|
||||||
|
- `windows11/Square44x44Logo.altform-lightunplated_targetsize-64.png` for `pwa-windows-44x44-64.png`
|
||||||
|
- `android/android-launchericon-192x192.png` for `pwa-192x192.png`
|
||||||
|
- `android/android-launchericon-512x512.png` for `pwa-512x512.png`
|
||||||
|
|
||||||
|
To generate maskable icons:
|
||||||
|
- upload `logo.svg` from `public` folders: `public`, ` public-dev` and `public-staging`
|
||||||
|
- configure `0,5` as padding
|
||||||
|
- check `Custom` in background color and set `#ffffff` as color
|
||||||
|
- check only `Android` in platforms
|
||||||
|
- click on `Generate` button
|
||||||
|
|
||||||
|
Once generated, we use the following icons:
|
||||||
|
- `android/android-launchericon-512x512.png` for `maskable-icon.png`
|
||||||
|
|
||||||
|
::alert{type="info"}
|
||||||
|
**Note 1:** to generate `favicon.ico` we use [RealFaviconGenerator](https://realfavicongenerator.net/), we upload `logo.svg` from `public` folders: `public`, ` public-dev` and `public-staging`.
|
||||||
|
::
|
||||||
|
|
||||||
|
::alert{type="info"}
|
||||||
|
**Note 2:** Safari don't use `apple-touch-icon` and so we don't need to generate it anymore: we use [RealFaviconGenerator](https://realfavicongenerator.net/) to generate it, using white background color and 10px of padding.
|
||||||
|
::
|
||||||
|
|
||||||
### PWA UI Components
|
### PWA UI Components
|
||||||
|
|
||||||
Elk will provide a set of UI components to allow you to customize the PWA installation prompt on browsers with [beforeinstallprompt](https://web.dev/customize-install/) support.
|
Elk will provide a set of UI components to allow you to customize the PWA installation prompt on browsers with [beforeinstallprompt](https://web.dev/customize-install/) support.
|
||||||
|
|
|
@ -29,8 +29,8 @@ export default defineNuxtModule({
|
||||||
|
|
||||||
nuxt.options.nitro.publicAssets = nuxt.options.nitro.publicAssets || []
|
nuxt.options.nitro.publicAssets = nuxt.options.nitro.publicAssets || []
|
||||||
if (env === 'dev')
|
if (env === 'dev')
|
||||||
nuxt.options.nitro.publicAssets.unshift({ dir: resolve('../public-dev') })
|
nuxt.options.nitro.publicAssets.unshift({ dir: resolve('../public-dev'), baseURL: '/' })
|
||||||
else if (env === 'canary' || env === 'preview' || !isCI)
|
else if (env === 'canary' || env === 'preview' || !isCI)
|
||||||
nuxt.options.nitro.publicAssets.unshift({ dir: resolve('../public-staging') })
|
nuxt.options.nitro.publicAssets.unshift({ dir: resolve('../public-staging'), baseURL: '/' })
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
|
@ -78,6 +78,11 @@ export async function createI18n(): Promise<LocalizedWebManifest> {
|
||||||
display_override: ['window-controls-overlay'],
|
display_override: ['window-controls-overlay'],
|
||||||
categories: ['social', 'social networking'],
|
categories: ['social', 'social networking'],
|
||||||
icons: [
|
icons: [
|
||||||
|
{
|
||||||
|
src: 'pwa-windows-44x44-64.png',
|
||||||
|
sizes: '64x64',
|
||||||
|
type: 'image/png',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
src: 'pwa-192x192.png',
|
src: 'pwa-192x192.png',
|
||||||
sizes: '192x192',
|
sizes: '192x192',
|
||||||
|
@ -87,7 +92,6 @@ export async function createI18n(): Promise<LocalizedWebManifest> {
|
||||||
src: 'pwa-512x512.png',
|
src: 'pwa-512x512.png',
|
||||||
sizes: '512x512',
|
sizes: '512x512',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
purpose: 'any',
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'maskable-icon.png',
|
src: 'maskable-icon.png',
|
||||||
|
@ -114,6 +118,8 @@ export async function createI18n(): Promise<LocalizedWebManifest> {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: add related_applications, only when env === 'release'
|
||||||
|
|
||||||
const locales: RequiredWebManifestEntry[] = await Promise.all(
|
const locales: RequiredWebManifestEntry[] = await Promise.all(
|
||||||
pwaLocales
|
pwaLocales
|
||||||
.filter(l => l.code !== 'en-US')
|
.filter(l => l.code !== 'en-US')
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
"ufo": "^1.1.1",
|
"ufo": "^1.1.1",
|
||||||
"ultrahtml": "^1.2.0",
|
"ultrahtml": "^1.2.0",
|
||||||
"unimport": "^3.0.6",
|
"unimport": "^3.0.6",
|
||||||
"vite-plugin-pwa": "^0.15.0",
|
"vite-plugin-pwa": "^0.15.1",
|
||||||
"vue-advanced-cropper": "^2.8.8",
|
"vue-advanced-cropper": "^2.8.8",
|
||||||
"vue-virtual-scroller": "2.0.0-beta.8",
|
"vue-virtual-scroller": "2.0.0-beta.8",
|
||||||
"workbox-build": "^6.5.4",
|
"workbox-build": "^6.5.4",
|
||||||
|
|
|
@ -208,8 +208,8 @@ importers:
|
||||||
specifier: ^3.0.6
|
specifier: ^3.0.6
|
||||||
version: 3.0.6(rollup@2.79.1)
|
version: 3.0.6(rollup@2.79.1)
|
||||||
vite-plugin-pwa:
|
vite-plugin-pwa:
|
||||||
specifier: ^0.15.0
|
specifier: ^0.15.1
|
||||||
version: 0.15.0(vite@4.3.4)(workbox-build@6.5.4)(workbox-window@6.5.4)
|
version: 0.15.1(vite@4.3.4)(workbox-build@6.5.4)(workbox-window@6.5.4)
|
||||||
vue-advanced-cropper:
|
vue-advanced-cropper:
|
||||||
specifier: ^2.8.8
|
specifier: ^2.8.8
|
||||||
version: 2.8.8(vue@3.2.45)
|
version: 2.8.8(vue@3.2.45)
|
||||||
|
@ -13387,8 +13387,8 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vite-plugin-pwa@0.15.0(vite@4.3.4)(workbox-build@6.5.4)(workbox-window@6.5.4):
|
/vite-plugin-pwa@0.15.1(vite@4.3.4)(workbox-build@6.5.4)(workbox-window@6.5.4):
|
||||||
resolution: {integrity: sha512-gpmx3BeubsRIXRBkjPToOTJbo8fknNmZFQs24i0TPZyaNVa0n27YHDo0Y72amnO70WvHKGE3e1fn8SYUP7e8SA==}
|
resolution: {integrity: sha512-lJVzEYda/Y9AfwxFzX0rV+QCQ2+WdBoEGtR1RBZKWxvrJ4NWEH1VZaHOMyzvRiYhWQsi7aFhewsp1CDvN/R1Og==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vite: ^3.1.0 || ^4.0.0
|
vite: ^3.1.0 || ^4.0.0
|
||||||
workbox-build: ^6.5.4
|
workbox-build: ^6.5.4
|
||||||
|
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 7 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 22 KiB |
BIN
public-dev/pwa-windows-44x44-64.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 22 KiB |
BIN
public-staging/pwa-windows-44x44-64.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 22 KiB |
BIN
public/pwa-windows-44x44-64.png
Normal file
After Width: | Height: | Size: 2.4 KiB |