Template v1

This commit is contained in:
Annie 2025-04-03 22:03:40 +03:00
parent e9b0e46d7e
commit 70088d37e0
15 changed files with 2286 additions and 3 deletions

3
.gitignore vendored
View file

@ -130,3 +130,6 @@ dist
.yarn/install-state.gz .yarn/install-state.gz
.pnp.* .pnp.*
# Mock hiding
public/mock/*
!public/mock/notice.txt

3
.vscode/extensions.json vendored Normal file
View file

@ -0,0 +1,3 @@
{
"recommendations": ["Vue.volar"]
}

1105
Bridge-mock-APIs.d.ts vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,2 @@
# blhs This is the Vue 3 + Vite template branch.
If you want to download this for use, this is not a working Bridge Launcher Project, but a template. In that case select a different branch.
Bridge Launcher Home Screens I made for myself but published for no reason

13
index.html Normal file
View file

@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>

26
package.json Normal file
View file

@ -0,0 +1,26 @@
{
"name": "blhs",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"@bridgelauncher/api-mock": "^0.1.0",
"vue": "^3.5.13"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.2.1",
"sass": "^1.86.2",
"vite": "^6.2.0"
},
"packageManager": "pnpm@10.6.1+sha512.40ee09af407fa9fbb5fbfb8e1cb40fbb74c0af0c3e10e9224d7b53c7658528615b2c92450e74cfad91e3a2dcafe3ce4050d80bda71d757756d2ce2b66213e9a3",
"pnpm": {
"onlyBuiltDependencies": [
"@parcel/watcher"
]
}
}

1016
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load diff

9
public/mock/notice.txt Normal file
View file

@ -0,0 +1,9 @@
This is the mock folder, put your `icons` folder and `apps.json` in the folder where this file is located
How to obtain? (you may ask)
1. Open Bridge Launcher
2. Open it's Settings
3. Scroll down to 'development'
4. Click 'Export'
5. Select any path
6. Transfer the needed files (`icons` folder and `apps.json`) here

1
public/vite.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
public/vue.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>

After

Width:  |  Height:  |  Size: 496 B

29
src/App.vue Normal file
View file

@ -0,0 +1,29 @@
<template>
This is a <strong>TEMPLATE</strong>
<Suspense>
<template #default>
<div>
<AppIcon v-for="app in apps" :key="app.packageName" :packageName="app.packageName" :label="app.label" />
</div>
</template>
</Suspense>
</template>
<script setup>
import { ref } from 'vue'
import AppIcon from './components/AppIcon.vue'
const apps = ref([])
async function loadApps() {
const resp = await fetch(Bridge.getAppsURL())
const data = await resp.json()
apps.value = data.apps
}
loadApps()
</script>
<style>
</style>

View file

@ -0,0 +1,43 @@
<script setup>
import { defineProps, ref, onMounted } from 'vue'
// Define component props
const props = defineProps({
packageName: {
type: String,
required: true
},
label: {
type: String,
required: true
}
})
// Create a ref to hold the icon URL
const icon = ref('');
icon.value = await Bridge.getDefaultAppIconURL(props.packageName);
</script>
<template>
<div class="app-icon">
<img :src="icon" :alt="props.label" />
<span>{{ props.label }}</span>
</div>
</template>
<style scoped>
.app-icon {
display: flex;
align-items: center;
}
.app-icon img {
width: 50px;
height: 50px;
}
.app-icon span {
font-size: 14px;
color: #333;
}
</style>

13
src/main.js Normal file
View file

@ -0,0 +1,13 @@
import { createApp } from 'vue'
import './style.scss'
import App from './App.vue'
import { BridgeMock } from '@bridgelauncher/api-mock';
if (!window.Bridge) {
window.Bridge = new BridgeMock({
appsUrl: '/mock/apps.json',
makeGetDefaultIconUrl: (packageName) => `/mock/icons/default/${packageName}.png`,
});
}
createApp(App).mount('#app')

7
src/style.scss Normal file
View file

@ -0,0 +1,7 @@
// SCSS goes here
body {
margin: 0;
padding: 0;
box-sizing: border-box;
}

15
vite.config.js Normal file
View file

@ -0,0 +1,15 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import sass from 'sass';
// https://vite.dev/config/
export default defineConfig({
plugins: [vue()],
css: {
preprocessorOptions: {
sass: {
implementation: sass,
},
},
},
})