PWA added and some other things idk lol
|
|
@ -2,6 +2,7 @@
|
||||||
"name": "puffercat-apps",
|
"name": "puffercat-apps",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
"description": "An app store for Puffercat's apps",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"serve": "vue-cli-service serve",
|
"serve": "vue-cli-service serve",
|
||||||
"build": "vue-cli-service build",
|
"build": "vue-cli-service build",
|
||||||
|
|
@ -19,6 +20,7 @@
|
||||||
"@ionic/vue-router": "^6.0.0",
|
"@ionic/vue-router": "^6.0.0",
|
||||||
"core-js": "^3.6.5",
|
"core-js": "^3.6.5",
|
||||||
"ionicons": "^6.0.3",
|
"ionicons": "^6.0.3",
|
||||||
|
"register-service-worker": "^1.7.2",
|
||||||
"vue": "^3.2.21",
|
"vue": "^3.2.21",
|
||||||
"vue-router": "^4.0.12"
|
"vue-router": "^4.0.12"
|
||||||
},
|
},
|
||||||
|
|
@ -30,6 +32,7 @@
|
||||||
"@vue/cli-plugin-babel": "~5.0.0-rc.1",
|
"@vue/cli-plugin-babel": "~5.0.0-rc.1",
|
||||||
"@vue/cli-plugin-e2e-cypress": "~5.0.0-rc.1",
|
"@vue/cli-plugin-e2e-cypress": "~5.0.0-rc.1",
|
||||||
"@vue/cli-plugin-eslint": "~5.0.0-rc.1",
|
"@vue/cli-plugin-eslint": "~5.0.0-rc.1",
|
||||||
|
"@vue/cli-plugin-pwa": "~5.0.0",
|
||||||
"@vue/cli-plugin-router": "~5.0.0-rc.1",
|
"@vue/cli-plugin-router": "~5.0.0-rc.1",
|
||||||
"@vue/cli-plugin-typescript": "~5.0.0-rc.1",
|
"@vue/cli-plugin-typescript": "~5.0.0-rc.1",
|
||||||
"@vue/cli-plugin-unit-jest": "~5.0.0-rc.1",
|
"@vue/cli-plugin-unit-jest": "~5.0.0-rc.1",
|
||||||
|
|
@ -44,6 +47,5 @@
|
||||||
"jest": "^27.3.1",
|
"jest": "^27.3.1",
|
||||||
"ts-jest": "^27.0.7",
|
"ts-jest": "^27.0.7",
|
||||||
"typescript": "^4.3.5"
|
"typescript": "^4.3.5"
|
||||||
},
|
}
|
||||||
"description": "An Ionic project"
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 468 KiB |
|
After Width: | Height: | Size: 855 B |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="228px" height="228px" viewBox="0 0 228 228" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<title>Profile Photo 2 Copy 16@2x</title>
|
||||||
|
<g id="Profile-Photo-2-Copy-16" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="bag-handle" transform="translate(8.000000, 0.000000)" fill="#000000" fill-rule="nonzero">
|
||||||
|
<path d="M105.999922,0 C137.522613,0 163.076803,25.5197684 163.076803,57 L163.076803,65.1428551 L195.692164,65.1428551 C200.025247,65.1333448 204.181908,66.8560812 207.234944,69.9267835 C210.29752,72.9714416 212.013275,77.1130292 211.999923,81.4285688 L211.999923,191.993297 C211.989773,201.647378 208.027583,210.877585 201.032929,217.541511 C194.154715,224.249246 184.921355,228.003009 175.307564,228 L36.6922808,228 C16.8172953,228 0,211.20535 0,191.357137 L0,81.4285688 C0,72.4342175 7.30119718,65.1428551 16.3076803,65.1428551 L48.923041,65.1428551 L48.923041,57 C48.923041,25.5197684 74.4772311,0 105.999922,0 Z M154.922963,89.5714257 C150.419722,89.5714257 146.769123,93.2171069 146.769123,97.7142826 L146.769123,105.857139 C146.769123,128.343018 128.51613,146.571426 105.999922,146.571426 C83.4837143,146.571426 65.2307213,128.343018 65.2307213,105.857139 L65.2307213,97.7142826 C65.2307213,93.2171069 61.5801228,89.5714257 57.0768812,89.5714257 C52.5736396,89.5714257 48.923041,93.2171069 48.923041,97.7142826 L48.923041,105.857139 C48.923041,137.337369 74.4772311,162.857138 105.999922,162.857138 C137.522613,162.857138 163.076803,137.337369 163.076803,105.857139 L163.076803,97.7142826 C163.076803,93.2171069 159.426205,89.5714257 154.922963,89.5714257 Z M105.999922,16.2857138 C83.4837143,16.2857138 65.2307213,34.5141198 65.2307213,56.9999982 L65.2307213,65.1428551 L146.769123,65.1428551 L146.769123,56.9999982 C146.769123,34.5141198 128.51613,16.2857138 105.999922,16.2857138 Z" id="Combined-Shape"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
<!-- add to homescreen for ios -->
|
<!-- add to homescreen for ios -->
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
<meta name="apple-mobile-web-app-title" content="Ionic App" />
|
<meta name="apple-mobile-web-app-title" content="Puffercat Apps" />
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
User-agent: *
|
||||||
|
Disallow:
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
/* eslint-disable no-console */
|
||||||
|
|
||||||
|
import { register } from 'register-service-worker'
|
||||||
|
|
||||||
|
if (process.env.NODE_ENV === 'production') {
|
||||||
|
register(`${process.env.BASE_URL}service-worker.js`, {
|
||||||
|
ready () {
|
||||||
|
console.log(
|
||||||
|
'App is being served from cache by a service worker.\n' +
|
||||||
|
'For more details, visit https://goo.gl/AFskqB'
|
||||||
|
)
|
||||||
|
},
|
||||||
|
registered () {
|
||||||
|
console.log('Service worker has been registered.')
|
||||||
|
},
|
||||||
|
cached () {
|
||||||
|
console.log('Content has been cached for offline use.')
|
||||||
|
},
|
||||||
|
updatefound () {
|
||||||
|
console.log('New content is downloading.')
|
||||||
|
},
|
||||||
|
updated () {
|
||||||
|
console.log('New content is available; please refresh.')
|
||||||
|
},
|
||||||
|
offline () {
|
||||||
|
console.log('No internet connection found. App is running in offline mode.')
|
||||||
|
},
|
||||||
|
error (error) {
|
||||||
|
console.error('Error during service worker registration:', error)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
import { createRouter, createWebHistory } from '@ionic/vue-router';
|
import { createRouter, createWebHistory } from '@ionic/vue-router';
|
||||||
import { RouteRecordRaw } from 'vue-router';
|
import { RouteRecordRaw } from 'vue-router';
|
||||||
import TabsPage from '../views/TabsPage.vue'
|
import TabsPage from '../views/TabsPage.vue'
|
||||||
|
import Apps from '../views/Apps.vue'
|
||||||
|
import PufferIcons from '../views/PufferIcons.vue'
|
||||||
|
|
||||||
const routes: Array<RouteRecordRaw> = [
|
const routes: Array<RouteRecordRaw> = [
|
||||||
{
|
{
|
||||||
|
|
@ -24,6 +26,11 @@ const routes: Array<RouteRecordRaw> = [
|
||||||
component: () => import('@/views/ComingSoon.vue')
|
component: () => import('@/views/ComingSoon.vue')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/details/PufferIcons',
|
||||||
|
name: 'PufferIcons',
|
||||||
|
component: PufferIcons,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@
|
||||||
<ion-grid>
|
<ion-grid>
|
||||||
<ion-row class="column-standard">
|
<ion-row class="column-standard">
|
||||||
<ion-col size="auto">
|
<ion-col size="auto">
|
||||||
<img src="../assets/Icon_PufferIcons.png" class="icon">
|
<a href="/details/PufferIcons"><img src="../assets/Icon_PufferIcons.png" class="icon"></a>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col size="auto" class="description-column">
|
<ion-col size="auto" class="description-column">
|
||||||
<ion-row>
|
<ion-row>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,176 @@
|
||||||
|
<template>
|
||||||
|
<ion-page>
|
||||||
|
<ion-header>
|
||||||
|
<ion-toolbar>
|
||||||
|
<ion-title>PufferIcons</ion-title>
|
||||||
|
</ion-toolbar>
|
||||||
|
</ion-header>
|
||||||
|
<ion-content :fullscreen="true">
|
||||||
|
<ion-header collapse="condense">
|
||||||
|
<ion-toolbar>
|
||||||
|
<ion-title size="large">PufferIcons</ion-title>
|
||||||
|
</ion-toolbar>
|
||||||
|
</ion-header>
|
||||||
|
<ion-grid>
|
||||||
|
<ion-row class="column-standard">
|
||||||
|
<ion-col size="auto">
|
||||||
|
<img src="../assets/Icon_PufferIcons.png" class="icon">
|
||||||
|
</ion-col>
|
||||||
|
<ion-col size="auto" class="description-column">
|
||||||
|
<ion-row>
|
||||||
|
<ion-column><h4 class="size-appname">PufferIcons</h4></ion-column>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-column><ion-icon :icon="logoAndroid" class="size-appname-icon"/></ion-column>
|
||||||
|
</ion-row>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="download-column">
|
||||||
|
<ion-button shape="round"><ion-icon :icon="arrowDown" /></ion-button>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row class="column-standard">
|
||||||
|
<ion-col size="auto">
|
||||||
|
<img src="../assets/Icon_Puffercat_Apps.png" class="icon">
|
||||||
|
</ion-col>
|
||||||
|
<ion-col size="auto" class="description-column">
|
||||||
|
<ion-row>
|
||||||
|
<ion-column><h4 class="size-appname">Puffercat Apps</h4></ion-column>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-column><ion-icon :icon="logoPwa" class="size-appname-icon"/></ion-column>
|
||||||
|
</ion-row>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="download-column">
|
||||||
|
<ion-button shape="round"><ion-icon :icon="arrowDown" /></ion-button>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row class="column-standard">
|
||||||
|
<ion-col size="auto">
|
||||||
|
<img src="../assets/Icon_Shapes.png" class="icon">
|
||||||
|
</ion-col>
|
||||||
|
<ion-col size="auto" class="description-column">
|
||||||
|
<ion-row>
|
||||||
|
<ion-column><h4 class="size-appname">Shapes</h4></ion-column>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-column><ion-icon :icon="logoAndroid" class="size-appname-icon"/></ion-column>
|
||||||
|
</ion-row>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="download-column">
|
||||||
|
<ion-button shape="round"><ion-icon :icon="arrowDown" /></ion-button>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row class="column-standard">
|
||||||
|
<ion-col size="auto">
|
||||||
|
<img src="../assets/Icon_Blurry.png" class="icon">
|
||||||
|
</ion-col>
|
||||||
|
<ion-col size="auto" class="description-column">
|
||||||
|
<ion-row>
|
||||||
|
<ion-column><h4 class="size-appname">Blurry Wallpapers</h4></ion-column>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-column><ion-icon :icon="logoAndroid" class="size-appname-icon"/></ion-column>
|
||||||
|
</ion-row>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="download-column">
|
||||||
|
<ion-button shape="round"><ion-icon :icon="arrowDown" /></ion-button>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row class="column-standard">
|
||||||
|
<ion-col size="auto">
|
||||||
|
<img src="../assets/Icon_Tipper.png" class="icon">
|
||||||
|
</ion-col>
|
||||||
|
<ion-col size="auto" class="description-column">
|
||||||
|
<ion-row>
|
||||||
|
<ion-column><h4 class="size-appname">Tipper by myCALC</h4></ion-column>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-column><ion-icon :icon="logoAndroid" class="size-appname-icon"/></ion-column>
|
||||||
|
</ion-row>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="download-column">
|
||||||
|
<ion-button shape="round"><ion-icon :icon="arrowDown" /></ion-button>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
</ion-grid>
|
||||||
|
</ion-content>
|
||||||
|
</ion-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { defineComponent } from 'vue';
|
||||||
|
import { IonPage, IonHeader, IonToolbar, IonTitle, IonContent, IonCol, IonGrid, IonRow, IonBackButton, IonButton, IonButtons, IonIcon, IonMenuButton,
|
||||||
|
IonModal,
|
||||||
|
IonItem,
|
||||||
|
IonList,
|
||||||
|
IonAvatar,
|
||||||
|
IonImg,
|
||||||
|
IonLabel } from '@ionic/vue';
|
||||||
|
import ExploreContainer from '@/components/ExploreContainer.vue';
|
||||||
|
import { logoAndroid, arrowDown, logoPwa, ellipsisVertical } from 'ionicons/icons';
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'Tab1Page',
|
||||||
|
components: {IonHeader, IonToolbar, IonTitle, IonContent, IonPage, IonCol, IonGrid, IonRow, IonButton, IonButtons, IonIcon,
|
||||||
|
IonModal,
|
||||||
|
IonItem,
|
||||||
|
IonList },
|
||||||
|
setup() {
|
||||||
|
return {
|
||||||
|
logoAndroid,
|
||||||
|
arrowDown,
|
||||||
|
logoPwa,
|
||||||
|
ellipsisVertical
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.column-standard {
|
||||||
|
background-color: var(--ion-color-light-shade);
|
||||||
|
color: var(--ion-color-light-contrast);
|
||||||
|
padding: 15px;
|
||||||
|
border-radius: 25px;
|
||||||
|
margin: 5px;
|
||||||
|
margin-top: 15px;
|
||||||
|
} .icon {
|
||||||
|
width: 70px;
|
||||||
|
margin-right: 5px;
|
||||||
|
} ion-button {
|
||||||
|
--box-shadow: 0px;
|
||||||
|
} .download-column {
|
||||||
|
text-align: right;
|
||||||
|
display: flex;
|
||||||
|
justify-content: right;
|
||||||
|
align-items: center;
|
||||||
|
} .description-column {
|
||||||
|
align-items: center;
|
||||||
|
} .size-appname {
|
||||||
|
font-size: 18px;
|
||||||
|
} .size-appname-icon {
|
||||||
|
font-size: 18px;
|
||||||
|
} .logoAbout {
|
||||||
|
width: 125px;
|
||||||
|
margin: 10px;
|
||||||
|
margin-top: 20px;
|
||||||
|
} .modalContent {
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
} .tableLabel {
|
||||||
|
text-align: left;
|
||||||
|
} .vueLogoLight {
|
||||||
|
display: inline;
|
||||||
|
} .vueLogoDark {
|
||||||
|
display: none;
|
||||||
|
} @media (prefers-color-scheme: dark) {
|
||||||
|
.vueLogoLight {
|
||||||
|
display: none;
|
||||||
|
} .vueLogoDark {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
} .aboutFrameworkLogo {
|
||||||
|
width: 175px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
module.exports = {
|
||||||
|
// ...other vue-cli plugin options...
|
||||||
|
pwa: {
|
||||||
|
name: 'Puffercat Apps',
|
||||||
|
themeColor: '#009473',
|
||||||
|
msTileColor: '#001122',
|
||||||
|
appleMobileWebAppCapable: 'yes',
|
||||||
|
appleMobileWebAppStatusBarStyle: 'default',
|
||||||
|
|
||||||
|
// configure the workbox plugin
|
||||||
|
/* workboxPluginMode: 'InjectManifest',
|
||||||
|
workboxOptions: {
|
||||||
|
// swSrc is required in InjectManifest mode.
|
||||||
|
swSrc: 'dev/sw.js',
|
||||||
|
// ...other Workbox options...
|
||||||
|
} */
|
||||||
|
}
|
||||||
|
}
|
||||||