update with nuxt4 for docker-web
All checks were successful
Deploy App / deploy (push) Successful in 4m5s

This commit is contained in:
valere
2025-08-29 16:08:08 +02:00
parent 2db113a0c5
commit f0e2aa237a
65 changed files with 10747 additions and 22132 deletions

30
app/app.vue Normal file
View File

@@ -0,0 +1,30 @@
<template>
<div>
<Head>
<Title>docker-web - docker-compose cli superset</Title>
<Meta charset="UTF-8" />
<Meta name="viewport" content="width=device-width" />
<Link
rel="icon"
type="image/svg+xml"
href="https://raw.githubusercontent.com/docker-web/docker-web/master/logo.svg"
/>
<Link rel="canonical" href="https://docker-web.com" />
<Meta property="og:title" content="docker-web, deploy stack on the go" />
<Meta
property="og:image"
content="https://raw.githubusercontent.com/docker-web/docker-web/master/logo.svg"
/>
<Meta property="og:site_name" content="docker-web" />
<Meta name="description" content="Extending docker-compose functionalities and control multiple docker-compose.yml configurations"/>
<Meta name="viewport" content="width=device-width, initial-scale=1.0" />
</Head>
<NuxtPage />
</div>
</template>
<style lang="postcss">
html {
@apply bg-slate-100;
}
</style>

View File

@@ -0,0 +1,61 @@
<script>
export default {
data: () => ({
apps: [
{
name: 'Transmission',
component: resolveComponent('SvgTransmission')
},
{
name: 'Drone',
component: resolveComponent('SvgDrone')
},
{
name: 'Gitea',
component: resolveComponent('SvgGitea')
},
{
name: 'Hoppscotch',
component: resolveComponent('SvgHoppscotch')
},
{
name: 'Jellyfin',
component: resolveComponent('SvgJellyfin')
},
{
name: 'Nextcloud',
component: resolveComponent('SvgNextcloud')
},
{
name: 'Plausible',
component: resolveComponent('SvgPlausible')
},
{
name: 'Penpot',
component: resolveComponent('SvgPenpot')
}
]
})
}
</script>
<template>
<section class="bg-slate-300 p-8 bg-gradient-to-r from-violet-100 to-indigo-100 rounded-t-xl">
<h2 class="title">
Pre-configured applications
</h2>
<ul class="flex justify-center p-2 max-w-full flex-wrap">
<li v-for="app in apps" :key="app" class="m-4">
<a
:href="
'https://github.com/docker-web/docker-web/tree/master/apps/' +
app.name.toLowerCase()
"
:title="app.name"
>
<component :is="app.component" class="app hover:scale-110" />
</a>
</li>
</ul>
</section>
</template>

View File

@@ -0,0 +1,168 @@
<script>
export default {
data: () => ({
terminalContent: '',
penpotClass: [],
plausibleClass: [],
folderClass: [],
storjClass: [],
progressBarClass: [],
progressClass: '',
startApps: '',
endApps: '',
upClass: ['animate-upApp', 'mx-2', 'md:mx-12'],
downClass: [],
pauseClass: [],
compressingClass: [],
isDemonstrationEnded: false
}),
created () {
this.demonstration()
},
methods: {
delay (time) {
return new Promise(resolve => setTimeout(resolve, time))
},
demonstration () {
this.isDemonstrationEnded = false
this.terminalContent = ''
this.folderClass = this.storjClass = this.downClass
this.penpotClass = this.plausibleClass = this.giteaClass = [...this.upClass, 'rounded-xl']
this.storjClass = ['hidden']
this.progressBarClass = ['opacity-0']
this.progressClass = 'w-0'
this.startApps = 'w-full'
this.endApps = 'hidden'
this.upClass = ['animate-upApp', 'mx-2', 'md:mx-12', 'rounded-xl']
this.downClass = ['opacity-0', 'w-0', 'p-0', 'h-0']
this.pauseClass = ['filter', 'grayscale']
this.compressingClass = ['mx-0', 'rounded-none']
let i = 0
this.timer = setInterval(async () => {
// docker-web backup
if (i === 0) {
const cmd = '$ docker-web backup\n'
for (const y in cmd) {
this.terminalContent += cmd[y]
await this.delay(20)
}
}
if (i === 1) {
this.penpotClass = this.plausibleClass = this.giteaClass = [...this.upClass, ...this.pauseClass]
}
if (i === 2) {
this.penpotClass = [...this.compressingClass, ...this.pauseClass, 'rounded-l-xl', 'rounded-r-none']
this.plausibleClass = [...this.compressingClass, ...this.pauseClass, 'rounded-r-xl', 'rounded-l-none']
this.giteaClass = [...this.compressingClass, ...this.pauseClass]
this.startApps = 'w-16'
}
if (i === 3) {
this.progressBarClass = 'opacity-100'
this.progressClass = 'w-full'
}
if (i === 5) {
this.progressBarClass = 'opacity-0'
this.folderClass = this.upClass
this.startApps = ['hidden']
this.endApps = ''
}
if (i === 1) { this.terminalContent += 'Pausing apps ... done\n' }
if (i === 2) { this.terminalContent += '[*] compressing files\n' }
if (i === 4) { this.terminalContent += 'Unpausing apps ... done\n' }
if (i === 5) { this.terminalContent += '[√] apps backup done\n' }
// docker-web restore
// this.progressClass = 'w-0'
// this.startApps = 'w-full'
if (i === 7) { this.terminalContent = '' }
if (i === 7) { this.progressClass = 'w-0' }
if (i === 8) {
const cmd = '$ docker-web restore\n'
for (const y in cmd) {
this.terminalContent += cmd[y]
await this.delay(20)
}
}
if (i === 10) {
this.progressBarClass = 'opacity-100'
this.progressClass = 'w-full'
}
if (i === 11) {
this.folderClass = this.downClass
this.progressBarClass = 'opacity-0'
this.startApps = 'w-full'
}
if (i === 11) {
this.penpotClass = [...this.upClass, ...this.pauseClass]
this.plausibleClass = [...this.upClass, ...this.pauseClass]
this.giteaClass = [...this.upClass, ...this.pauseClass]
}
if (i === 13) {
this.penpotClass = [...this.upClass]
this.plausibleClass = [...this.upClass]
this.giteaClass = [...this.upClass]
}
if (i === 9) { this.terminalContent += 'Stoping apps ... done\n' }
if (i === 10) { this.terminalContent += '[*] uncompressing files\n' }
if (i === 12) { this.terminalContent += '[*] starting apps ...done\n' }
if (i === 13) { this.terminalContent += '[√] apps restore done\n' }
i += 1
if (i === 15) { this.isDemonstrationEnded = true }
if (i === 15) { this.progressClass = 'w-0' }
if (i === 15) { this.terminalContent = '' }
// if (i === 15) clearInterval(this.timer)
if (i === 15) { i = 0 }
}, 1000)
}
}
}
</script>
<template>
<h2 class="title">
Backup & restore
</h2>
<section class="docker-web-section">
<Terminal :terminal-content="terminalContent" />
<div
class="flex flex-col items-center md:w-3/4 lg:w-1/2 h-20 relative rounded-b-xl transition-all"
>
<div
class="flex transition-all justify-center duration-1000"
:class="startApps"
>
<SvgGitea :class="penpotClass" class="app--backup" />
<SvgDrone :class="giteaClass" class="app--backup hidden md:block" />
<SvgPlausible :class="plausibleClass" class="app--backup" />
</div>
<div :class="endApps">
<div class="app" :class="folderClass">
<SvgFolder class="text-yellow-400" />
<div class="-mt-7 text-sm text-center">
tar.gz
</div>
</div>
<SvgStorj class="hidden" :class="storjClass" />
</div>
<div class="flex mt-10 w-14 absolute" :class="progressBarClass">
<span
class="h-2 w-full absolute bg-black rounded-full opacity-10"
/>
<span
class="h-2 absolute rounded-full bg-green-400 transition-all duration-1000"
:class="progressClass"
/>
</div>
</div>
</section>
</template>

200
app/components/demo.vue Normal file
View File

@@ -0,0 +1,200 @@
<script>
export default {
data: () => ({
terminalContent: '',
subDomain: '',
nextcloudClass: [],
jellyfinClass: [],
backbuttonClass: [],
subdomainClass: [],
pointerClass: [],
isDemonstrationEnded: false,
isPageScrolled: false,
pointer: {
top: '100%',
left: '0%',
opacity: '0'
}
}),
created () {
this.nextcloudClass = this.jellyfinClass = []
},
beforeMount () {
window.addEventListener('scroll', () => {
if (!this.isPageScrolled) { this.demonstration() }
this.isPageScrolled = true
})
},
beforeUnmount () {
window.removeEventListener('scroll', () => {
if (!this.isPageScrolled) { this.demonstration() }
this.isPageScrolled = true
})
},
methods: {
demonstration () {
const upClass = [
'w-20',
'h-20',
'p-4',
'opacity-100',
'animate-upApp',
'rounded-xl',
'bg-black',
'bg-opacity-10',
'transition-all'
]
const downClass = ['opacity-0', 'w-0', 'p-0', 'transition-all']
const openClass = [
'w-full',
'h-full',
'p-20',
'rounded-b-xl',
'rounded-t-none',
'bg-gradient-to-r',
'from-indigo-100',
'to-violet-100',
'transition-all'
]
const closeClass = [
...upClass,
'm-2'
]
function delay (time) {
return new Promise(resolve => setTimeout(resolve, time))
}
this.isDemonstrationEnded = false
this.terminalContent = ''
this.nextcloudClass = this.jellyfinClass = downClass
let i = 0
this.timer = setInterval(async () => {
// nextcloud
// up
if (i === 0) {
const cmd = '$ docker-web up nextcloud\n'
for (const y in cmd) {
this.terminalContent += cmd[y]
await delay(20)
}
}
if (i === 1) this.terminalContent += 'Creating nextcloud ... done\n'
if (i === 2) this.terminalContent += '[√] https://nextcloud.domain.com\n'
if (i === 3) this.nextcloudClass = upClass
if (i === 4) this.pointer = {left: '47%', top: '53%', opacity: '100'}
// open
if (i === 5) this.nextcloudClass.push('animate-openApp')
if (i === 5) this.pointerClass = ['']
if (i === 5) this.pointerClass = ['animate-click']
if (i === 6) this.nextcloudClass = openClass
if (i === 6) this.subDomain = 'cloud.'
if (i === 6) this.subdomainClass = ['']
if (i === 6) this.subdomainClass = ['animate-click']
// close
if (i === 7) this.terminalContent = ''
if (i === 8) this.pointer = {left: '10%', top: '3%'}
if (i === 9) this.backbuttonClass = ['']
if (i === 9) this.backbuttonClass = ['animate-click']
if (i === 10) this.nextcloudClass = closeClass
if (i === 10) this.subDomain = this.backbuttonClass = ''
if (i === 11) this.pointer.opacity = '0'
if (i === 12) this.pointer.top = '50%'
// jellyfin
// up
if (i === 11) {
const cmd = '$ docker-web up jellyfin\n'
for (const y in cmd) {
this.terminalContent += cmd[y]
await delay(20)
}
}
if (i === 12) this.terminalContent += 'Creating jellyfin ... done\n'
if (i === 13) this.terminalContent += '[√] https://jellyfin.domain.com\n'
if (i === 14) this.jellyfinClass = closeClass
if (i === 16) this.pointer = {left: '47%', top: '53%', opacity: '100'}
// open
if (i === 16) this.jellyfinClass.push('animate-openApp')
if (i === 16) this.pointerClass = ['animate-click']
if (i === 16) this.nextcloudClass = downClass
if (i === 17) this.jellyfinClass = openClass
if (i === 17) this.subDomain = 'jellyfin.'
if (i === 17) this.subdomainClass = ['']
if (i === 17) this.pointer = {left: '10%', top: '3%'}
if (i === 17) this.subdomainClass = ['animate-click']
// close
if (i === 19) this.backbuttonClass = ['']
if (i === 19) this.backbuttonClass = ['animate-click']
if (i === 19) this.pointer = {opacity: '0'}
if (i === 20) this.jellyfinClass = this.nextcloudClass = closeClass
if (i === 20) this.subDomain = ''
if (i === 20) this.terminalContent = ''
if (i === 21) this.pointer = {top: '100%', left: '0'}
// nextcloud down
if (i === 23) {
const cmd = '$ docker-web down\n'
for (const y in cmd) {
this.terminalContent += cmd[y]
await delay(20)
}
}
if (i === 24) this.terminalContent += 'Stopping nextcloud ... done\n'
if (i === 25) this.terminalContent += '[√] Removing nextcloud ... done\n'
if (i === 26) this.nextcloudClass = downClass
if (i === 27) this.terminalContent += 'Stopping jellyfin ... done\n'
if (i === 28) this.terminalContent += '[√] Removing jellyfin ... done\n'
if (i === 29) this.jellyfinClass = downClass
if (i === 30) this.isDemonstrationEnded = true
i += 1
// i = 5
// if (i === 30) clearInterval(this.timer)
if (i === 33) this.terminalContent = ''
if (i === 33) this.jellyfinClass = downClass
if (i === 33) i = 0
}, 700)
}
}
}
</script>
<template>
<section class="docker-web-section">
<Terminal :terminal-content="terminalContent" />
<div
class="bg-slate-400 flex flex-col items-center relative rounded-2xl w-full m-0 md:min-w-fit max-w-2xl md:-ml-8 md:z-0 overflow-hidden"
>
<div class="absolute block bg-black bg-opacity-10 rounded-full h-10 w-10 transition-all duration-700 ease-out" :class="pointerClass" :style="{left: pointer.left, top: pointer.top, opacity: pointer.opacity}"></div>
<div
class="bg-white flex items-center rounded-2xl pr-4 pl-2 py-1 m-4 w-4/5"
>
<SvgBackbutton
class="mr-3 p-1 bg-slate-300 rounded-full"
:class="backbuttonClass"
/>
<span class="text-gray-400"> https:// </span>
<span class="text-indigo-700 font-bold" :class="subdomainClass">
{{ subDomain }} </span>domain.com
</div>
<div
class="bg-white w-full h-full flex rounded-b-xl justify-center items-center h-96 max-h-96"
>
<SvgNextcloud
class="app-demo"
:class="nextcloudClass"
title="nextcloud.domain.com"
/>
<SvgJellyfin
class="app-demo"
:class="jellyfinClass"
title="jellyfin.domain.com"
/>
</div>
</div>
</section>
</template>

View File

@@ -0,0 +1,20 @@
<template>
<section class="container mx-auto max-w-4xl">
<p class="text-2xl md:text-center my-20">
In extending <b>docker-compose</b> functionalities, docker-web let you control
<b>multiple</b> docker-compose.yml <b>configurations</b>.
</p>
<div class="my-20">
<h2 class="title">
Features
</h2>
<ul class="text-xl md:text-2xl p-6 [&>li]:leading-10 [&>li]:md:pb-6">
<li>🔒 ssl certification</li>
<li>🌐 sub-domain & multi-domain directly in docker-compose file</li>
<li>📦 backup / restore volumes</li>
<li>📝 pre & post install script</li>
<li>🤖 pre-configure apps user account</li>
</ul>
</div>
</section>
</template>

View File

@@ -0,0 +1,35 @@
<script setup lang="ts">
const isClicked = ref(false)
const copyToClipBoard = () => {
navigator.clipboard
.writeText('curl -sL get.docker-web.com | sudo bash')
.then(() => {
isClicked.value = true
setTimeout(() => {
isClicked.value = false
}, 600)
})
}
</script>
<template>
<section class="py-4 sm:flex justify-center items-center">
<a
href="https://github.com/docker-web/docker-web"
target="_blank"
class="py-4 px-6 h-14 leading-6 flex justify-center bg-indigo-600 text-white text-lg capitalize font-semibold mb-4 sm:mb-0 rounded-xl shadow-md hover:bg-indigo-500 focus:outline-none focus:ring-4 hover:ring-indigo-200 focus:ring-indigo-300 focus:ring-opacity-100 transition-all"
>
get started
</a>
<div
class="font-mono bg-neutral-900 text-neutral-50 rounded-xl flex justify-between items-center pl-3 pr-4 py-4 sm:ml-4 border border-transparent text-base shadow-primary-700 relative"
>
<span class="select-all"> curl -L get.docker-web.com | sudo bash </span>
<SvgClipboard
class="ml-3 cursor-pointer"
:class="{ 'animate-ping': isClicked }"
@click="copyToClipBoard"
/>
</div>
</section>
</template>

View File

@@ -0,0 +1,21 @@
<template>
<section>
<div class="flex justify-center -ml-24 animate-slide">
<div class="py-4 mr-14 animate-fadeout opacity-0">
<div class="bg-gray-400 h-px w-16 my-16 block" />
<div class="bg-gray-400 h-px w-16 my-16 translate-x-3 block" />
<div class="bg-gray-400 h-px w-16 my-16 translate-x-1 block" />
<div class="bg-gray-400 h-px w-16 my-16 translate-x-6 block" />
</div>
<SvgDockerWeb />
</div>
<div class="text-center py-4">
<h1 class="text-5xl font-bold leading-relaxed">
docker-web
</h1>
<h2 class="text-3xl text-center text-slate-400">
hackable self-hosting
</h2>
</div>
</section>
</template>

View File

@@ -0,0 +1,36 @@
<template>
<svg
id="screenshot-ebe7fc5d-5b94-11ed-963d-5f59412bd802"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="14.364"
xmlns="http://www.w3.org/2000/svg"
height="13.2"
viewBox="674.9 1469.9 14.364 13.2"
style="-webkit-print-color-adjust: exact"
fill="none"
version="1.1"
>
<g id="shape-ebe7fc5d-5b94-11ed-963d-5f59412bd802">
<g id="fills-ebe7fc5d-5b94-11ed-963d-5f59412bd802">
<path
stroke-linejoin="round"
rx="0"
ry="0"
d="M675,1476L687.25,1476L682,1470.75L682.664,1470L689.164,1476.5L682.664,1483L682,1482.25L687.25,1477L675,1477L675,1476ZZ"
style="fill: rgb(0, 0, 0); fill-opacity: 1"
/>
</g>
<g id="strokes-ebe7fc5d-5b94-11ed-963d-5f59412bd802">
<g class="stroke-shape">
<path
stroke-linejoin="round"
rx="0"
ry="0"
d="M675,1476L687.25,1476L682,1470.75L682.664,1470L689.164,1476.5L682.664,1483L682,1482.25L687.25,1477L675,1477L675,1476ZZ"
style="fill: none; stroke-width: 0.2"
/>
</g>
</g>
</g>
</svg>
</template>

View File

@@ -0,0 +1,12 @@
<template>
<svg height="26" width="26">
<path
fill="none"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.5"
d="m7.25 3.75l-4.5 4.5l4.5 4.5m6-4.5H2.75"
/>
</svg>
</template>

View File

@@ -0,0 +1,36 @@
<template>
<svg
id="screenshot-39f85615-bf4c-80f1-8001-923fc255459e"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="17.2"
xmlns="http://www.w3.org/2000/svg"
height="17.2"
viewBox="572.9 1607.9 17.2 17.2"
style="-webkit-print-color-adjust: exact"
fill="none"
version="1.1"
>
<g id="shape-39f85615-bf4c-80f1-8001-923fc255459e">
<g id="fills-39f85615-bf4c-80f1-8001-923fc255459e">
<path
stroke-linejoin="round"
rx="0"
ry="0"
d="M576,1608L586.586,1608L590,1611.414L590,1622C590,1623.657,588.657,1625,587,1625L576,1625C574.343,1625,573,1623.657,573,1622L573,1611C573,1609.343,574.343,1608,576,1608ZZM576,1609C574.895,1609,574,1609.895,574,1611L574,1622C574,1623.105,574.895,1624,576,1624L587,1624C588.105,1624,589,1623.105,589,1622L589,1611.914L586.086,1609L585,1609L585,1613L585,1614L576,1614L576,1613L576,1609ZZM577,1609L577,1613L584,1613L584,1609L577,1609ZZM582,1616C583.657,1616,585,1617.343,585,1619C585,1620.657,583.657,1622,582,1622C580.343,1622,579,1620.657,579,1619C579,1617.343,580.343,1616,582,1616ZZM582,1617C580.895,1617,580,1617.895,580,1619C580,1620.105,580.895,1621,582,1621C583.105,1621,584,1620.105,584,1619C584,1617.895,583.105,1617,582,1617ZZ"
style="fill: rgb(0, 0, 0); fill-opacity: 1"
/>
</g>
<g id="strokes-39f85615-bf4c-80f1-8001-923fc255459e">
<g class="stroke-shape">
<path
stroke-linejoin="round"
rx="0"
ry="0"
d="M576,1608L586.586,1608L590,1611.414L590,1622C590,1623.657,588.657,1625,587,1625L576,1625C574.343,1625,573,1623.657,573,1622L573,1611C573,1609.343,574.343,1608,576,1608ZZM576,1609C574.895,1609,574,1609.895,574,1611L574,1622C574,1623.105,574.895,1624,576,1624L587,1624C588.105,1624,589,1623.105,589,1622L589,1611.914L586.086,1609L585,1609L585,1613L585,1614L576,1614L576,1613L576,1609ZZM577,1609L577,1613L584,1613L584,1609L577,1609ZZM582,1616C583.657,1616,585,1617.343,585,1619C585,1620.657,583.657,1622,582,1622C580.343,1622,579,1620.657,579,1619C579,1617.343,580.343,1616,582,1616ZZM582,1617C580.895,1617,580,1617.895,580,1619C580,1620.105,580.895,1621,582,1621C583.105,1621,584,1620.105,584,1619C584,1617.895,583.105,1617,582,1617ZZ"
style="fill: none; stroke-width: 0.2"
/>
</g>
</g>
</g>
</svg>
</template>

View File

@@ -0,0 +1,36 @@
<template>
<svg
id="screenshot-b97b5a92-5b4a-11ed-b852-87fca6c776a4"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="17.2"
xmlns="http://www.w3.org/2000/svg"
height="20.2"
viewBox="1033.9 280.9 17.2 20.2"
style="-webkit-print-color-adjust: exact"
fill="none"
version="1.1"
>
<g id="shape-b97b5a92-5b4a-11ed-b852-87fca6c776a4">
<g id="fills-b97b5a92-5b4a-11ed-b852-87fca6c776a4">
<path
stroke-linejoin="round"
rx="0"
ry="0"
d="M1037,284L1039.5,284C1039.5,282.343,1040.843,281,1042.5,281C1044.157,281,1045.5,282.343,1045.5,284L1048,284C1049.657,284,1051,285.343,1051,287L1051,298C1051,299.657,1049.657,301,1048,301L1037,301C1035.343,301,1034,299.657,1034,298L1034,287C1034,285.343,1035.343,284,1037,284ZZM1037,285C1035.895,285,1035,285.895,1035,287L1035,298C1035,299.105,1035.895,300,1037,300L1048,300C1049.104,300,1050,299.105,1050,298L1050,287C1050,285.895,1049.104,285,1048,285L1047,285L1047,288L1038,288L1038,285L1037,285ZZM1039,287L1046,287L1046,285L1039,285L1039,287ZZM1042.5,282C1041.395,282,1040.5,282.895,1040.5,284L1044.5,284C1044.5,282.895,1043.605,282,1042.5,282ZZM1037,290L1048,290L1048,291L1037,291L1037,290ZZM1037,293L1048,293L1048,294L1037,294L1037,293ZZM1037,296L1046,296L1046,297L1037,297L1037,296ZZ"
style="fill: rgb(197, 197, 197); fill-opacity: 1"
/>
</g>
<g id="strokes-b97b5a92-5b4a-11ed-b852-87fca6c776a4">
<g class="stroke-shape">
<path
stroke-linejoin="round"
rx="0"
ry="0"
d="M1037,284L1039.5,284C1039.5,282.343,1040.843,281,1042.5,281C1044.157,281,1045.5,282.343,1045.5,284L1048,284C1049.657,284,1051,285.343,1051,287L1051,298C1051,299.657,1049.657,301,1048,301L1037,301C1035.343,301,1034,299.657,1034,298L1034,287C1034,285.343,1035.343,284,1037,284ZZM1037,285C1035.895,285,1035,285.895,1035,287L1035,298C1035,299.105,1035.895,300,1037,300L1048,300C1049.104,300,1050,299.105,1050,298L1050,287C1050,285.895,1049.104,285,1048,285L1047,285L1047,288L1038,288L1038,285L1037,285ZZM1039,287L1046,287L1046,285L1039,285L1039,287ZZM1042.5,282C1041.395,282,1040.5,282.895,1040.5,284L1044.5,284C1044.5,282.895,1043.605,282,1042.5,282ZZM1037,290L1048,290L1048,291L1037,291L1037,290ZZM1037,293L1048,293L1048,294L1037,294L1037,293ZZM1037,296L1046,296L1046,297L1037,297L1037,296ZZ"
style="fill: none; stroke-width: 0.2"
/>
</g>
</g>
</g>
</svg>
</template>

17
app/components/svg/code.vue Executable file
View File

@@ -0,0 +1,17 @@
<template>
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<title>file_type_vscode</title>
<path
d="M29.01,5.03,23.244,2.254a1.742,1.742,0,0,0-1.989.338L2.38,19.8A1.166,1.166,0,0,0,2.3,21.447c.025.027.05.053.077.077l1.541,1.4a1.165,1.165,0,0,0,1.489.066L28.142,5.75A1.158,1.158,0,0,1,30,6.672V6.605A1.748,1.748,0,0,0,29.01,5.03Z"
style="fill: #0065a9"
/>
<path
d="M29.01,26.97l-5.766,2.777a1.745,1.745,0,0,1-1.989-.338L2.38,12.2A1.166,1.166,0,0,1,2.3,10.553c.025-.027.05-.053.077-.077l1.541-1.4A1.165,1.165,0,0,1,5.41,9.01L28.142,26.25A1.158,1.158,0,0,0,30,25.328V25.4A1.749,1.749,0,0,1,29.01,26.97Z"
style="fill: #007acc"
/>
<path
d="M23.244,29.747a1.745,1.745,0,0,1-1.989-.338A1.025,1.025,0,0,0,23,28.684V3.316a1.024,1.024,0,0,0-1.749-.724,1.744,1.744,0,0,1,1.989-.339l5.765,2.772A1.748,1.748,0,0,1,30,6.6V25.4a1.748,1.748,0,0,1-.991,1.576Z"
style="fill: #1f9cf0"
/>
</svg>
</template>

View File

@@ -0,0 +1,36 @@
<template>
<svg
id="screenshot-8851a460-5b95-11ed-963d-5f59412bd802"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="19.2"
xmlns="http://www.w3.org/2000/svg"
height="17.2"
viewBox="186.9 1600.9 19.2 17.2"
style="-webkit-print-color-adjust: exact"
fill="none"
version="1.1"
>
<g id="shape-8851a460-5b95-11ed-963d-5f59412bd802">
<g id="fills-8851a460-5b95-11ed-963d-5f59412bd802">
<path
stroke-linejoin="round"
rx="0"
ry="0"
d="M190,1601L203,1601C204.657,1601,206,1602.343,206,1604L206,1615C206,1616.657,204.657,1618,203,1618L190,1618C188.343,1618,187,1616.657,187,1615L187,1604C187,1602.343,188.343,1601,190,1601ZZM190,1602C188.895,1602,188,1602.895,188,1604L205,1604C205,1602.895,204.105,1602,203,1602L190,1602ZZM188,1615C188,1616.105,188.895,1617,190,1617L203,1617C204.105,1617,205,1616.105,205,1615L205,1605L188,1605L188,1615ZZM202,1615L197,1615L197,1614L202,1614L202,1615ZZM191,1607.5L191.707,1606.793L195.914,1611L191.707,1615.207L191,1614.5L194.5,1611L191,1607.5ZZ"
style="fill: rgb(0, 0, 0); fill-opacity: 1"
/>
</g>
<g id="strokes-8851a460-5b95-11ed-963d-5f59412bd802">
<g class="stroke-shape">
<path
stroke-linejoin="round"
rx="0"
ry="0"
d="M190,1601L203,1601C204.657,1601,206,1602.343,206,1604L206,1615C206,1616.657,204.657,1618,203,1618L190,1618C188.343,1618,187,1616.657,187,1615L187,1604C187,1602.343,188.343,1601,190,1601ZZM190,1602C188.895,1602,188,1602.895,188,1604L205,1604C205,1602.895,204.105,1602,203,1602L190,1602ZZM188,1615C188,1616.105,188.895,1617,190,1617L203,1617C204.105,1617,205,1616.105,205,1615L205,1605L188,1605L188,1615ZZM202,1615L197,1615L197,1614L202,1614L202,1615ZZM191,1607.5L191.707,1606.793L195.914,1611L191.707,1615.207L191,1614.5L194.5,1611L191,1607.5ZZ"
style="fill: none; stroke-width: 0.2"
/>
</g>
</g>
</g>
</svg>
</template>

View File

@@ -0,0 +1,32 @@
<template>
<svg width="111.83958mm" height="111.83958mm" viewBox="0 0 111.83957 111.83957" version="1.1" id="svg1"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)" sodipodi:docname="logo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-49.080209,-92.580211)">
<g id="g2" transform="matrix(5.5108247,0,0,5.5108247,118.69148,125.59682)" style="display:inline;fill:#ffffff">
<g style="display:inline;fill:#0062f8;fill-opacity:0.446602"
transform="matrix(0.61412638,0,0,0.61412638,-46.767414,1.3479387)" id="g1236-3-3-2">
<circle
style="display:inline;fill:#0062f8;fill-opacity:0.446602;stroke:none;stroke-width:302.362;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:161.197;stroke-opacity:1"
id="path1180-2-6-6-9" cx="72.107216" cy="4.5725055" r="9.6730785" />
<circle
style="display:inline;fill:#0062f8;fill-opacity:0.446602;stroke:none;stroke-width:428.643;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:161.197;stroke-opacity:1"
id="path1180-9-7-7-1" cx="72.107216" cy="4.5725055" r="13.713011" />
<circle
style="display:inline;fill:#0062f8;fill-opacity:0.446602;stroke:none;stroke-width:516.481;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:161.197;stroke-opacity:1"
id="path1180-1-5-5-27" cx="72.107216" cy="4.5725055" r="16.523087" />
</g>
<path inkscape:connector-curvature="0" style="display:inline;fill:#ffffff;stroke-width:0.433462"
id="path881-7-5-5-0"
d="m 3.9199448,3.7220977 c -0.0282,-0.02295 -0.29172,-0.221932 -0.84699,-0.221932 -0.13871,0 -0.28565,0.013 -0.4378,0.0377 -0.10749,-0.738187 -0.71564,-1.097959 -0.74382,-1.113996 l -0.14954,-0.08669 -0.0984,0.142176 c -0.12298,0.190471 -0.21255,0.400537 -0.26484,0.621149 -0.0997,0.421326 -0.039,0.816643 0.17468,1.155612 -0.25834,0.143476 -0.67013003,0.181186 -0.75596003,0.182051 H -6.0544552 c -0.17908,7.09e-4 -0.32415,0.145584 -0.3251,0.324667 0.12299,0.569402 0.12059,0.553034 0.31955,1.075789 0.23623,0.619849 0.58734,1.076285 1.04421,1.356736 0.51191,0.31426 1.34546,0.494146 2.28694,0.494146 0.4404,0 0.87993,-0.03991 1.27004,-0.115302 0.61422,-0.118332 1.17252,-0.321625 1.65843,-0.602942 0.42468,-0.246154 0.80673,-0.559405 1.13134,-0.927608 0.54269,-0.615519 0.68368,-0.724924 1.08704,-1.222306 0.0325,0.0015 0.0641,0.002 0.0958,0.002 0.59428,0 0.96012,-0.238404 1.16168,-0.437793 0.2189,-0.216731 0.29692,-0.432597 0.30516,-0.456436 l 0.0421,-0.124838 z"
sodipodi:nodetypes="cscccccccccccsccccscccc" />
<path
style="font-weight:bold;font-size:3.06667px;font-family:Comfortaa;-inkscape-font-specification:'Comfortaa Bold';letter-spacing:0px;display:inline;fill:#ffffff;stroke-width:1.51181"
d="m -6.3933452,1.1512817 h 0.55254 l 0.38633,1.624676 0.38333,-1.624676 h 0.55553 l 0.38334,1.624676 0.38633,-1.624676 h 0.54804 l -0.52708,2.235614 h -0.66484 l -0.4058,-1.699546 -0.4013,1.699546 h -0.66485 z m 5.11361,1.392579 v 0.152735 h -1.25332 q 0.0195,0.188672 0.13626,0.283008 0.1168,0.09434 0.32643,0.09434 0.16921,0 0.3459,-0.04941 0.17819,-0.05091 0.36537,-0.152735 v 0.413282 q -0.19017,0.07187 -0.38034,0.107813 -0.19017,0.03743 -0.38034,0.03743 -0.45521,0 -0.70827,-0.2306 -0.25156,-0.232096 -0.25156,-0.64987 0,-0.410287 0.24707,-0.645378 0.24857,-0.235092 0.68281,-0.235092 0.39532,0 0.6319,0.238086 0.23809,0.238087 0.23809,0.636394 z m -0.55104,-0.17819 q 0,-0.152735 -0.0898,-0.245573 -0.0883,-0.09434 -0.23209,-0.09434 -0.15573,0 -0.25306,0.08835 -0.0973,0.08685 -0.12129,0.251563 z m 1.84928,0.675326 q 0.17221,0 0.26205,-0.125781 0.0913,-0.125782 0.0913,-0.365365 0,-0.239584 -0.0913,-0.365365 -0.0898,-0.125782 -0.26205,-0.125782 -0.1722,0 -0.26503,0.127279 -0.0914,0.125782 -0.0914,0.363868 0,0.238086 0.0914,0.365365 0.0928,0.125781 0.26503,0.125781 z m -0.35638,-1.085613 q 0.11081,-0.146745 0.24558,-0.215625 0.13476,-0.07038 0.30996,-0.07038 0.30996,0 0.50910997,0.24707 0.19916,0.245574 0.19916,0.6334 0,0.387826 -0.19916,0.634896 -0.19914997,0.245573 -0.50910997,0.245573 -0.1752,0 -0.30996,-0.06888 -0.13477,-0.07038 -0.24558,-0.217122 v 0.242578 h -0.53606 v -2.32995 h 0.53606 z"
id="text2-6-9" aria-label="Web" />
</g>
</g>
</svg>
</template>

View File

@@ -0,0 +1,41 @@
<template>
<svg
id="screenshot-c9186fb0-5b95-11ed-963d-5f59412bd802"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="61"
xmlns="http://www.w3.org/2000/svg"
height="43"
viewBox="-0 -0 61 43"
style="-webkit-print-color-adjust: exact"
fill="none"
version="1.1"
>
<g
id="shape-c9186fb0-5b95-11ed-963d-5f59412bd802"
version="1.1"
width="431.99628"
height="308.89954"
rx="0"
ry="0"
style="fill: rgb(0, 0, 0)"
>
<g
id="shape-c9186fb2-5b95-11ed-963d-5f59412bd802"
rx="0"
ry="0"
style="fill: rgb(0, 0, 0)"
>
<g id="shape-c9186fb3-5b95-11ed-963d-5f59412bd802">
<g id="fills-c9186fb3-5b95-11ed-963d-5f59412bd802">
<path
rx="0"
ry="0"
d="M16.944,42.842C14.28,42.548,11.654,41.919,9.682,41.103C5.24,39.263,2.341,35.428,0.762,29.304C0.562,28.527,0.375,27.665,0.347,27.388C0.318,27.11,0.229,26.36,0.147,25.721C0.066,25.081,0,23.899,0,23.093C0,21.885,0.049,21.549,0.276,21.182C0.859,20.241,-0.744,20.306,21.915,20.3C43.824,20.295,43.41,20.307,45.525,19.614L46.433,19.316L46.032,18.565C45.119,16.853,44.941,14.107,45.608,12.023C45.971,10.889,46.726,9.349,47.252,8.67L47.619,8.195L48.318,8.57C50.31,9.639,52.144,11.998,52.73,14.244L52.91,14.935L55.225,14.949C57.306,14.961,57.649,14.998,58.613,15.315C59.852,15.723,61,16.444,61,16.813C61,17.392,59.971,19.072,59.05,19.997C57.5,21.554,55.519,22.379,52.796,22.602L51.583,22.701L51.116,23.835C50.522,25.28,49.101,28.092,48.487,29.04C48.226,29.442,48.043,29.771,48.08,29.771C48.117,29.771,48.057,29.881,47.947,30.015C47.836,30.149,47.261,30.906,46.669,31.697C43.764,35.578,39.574,38.818,35.284,40.499C34.866,40.663,34.365,40.863,34.171,40.943C33.977,41.024,33.755,41.105,33.677,41.124C33.32,41.21,30.406,42.053,30.217,42.124C30.101,42.168,29.964,42.197,29.914,42.187C29.863,42.177,29.373,42.262,28.826,42.374C26.044,42.946,20.028,43.183,16.944,42.842ZZM5.252,19.025C5.014,18.789,5.014,13.887,5.252,13.651C5.518,13.389,11.205,13.417,11.428,13.682C11.612,13.901,11.688,18.354,11.516,18.888C11.419,19.188,11.379,19.192,8.42,19.192C6.276,19.192,5.373,19.144,5.252,19.025ZZM12.664,19.102C12.61,19.049,12.567,17.796,12.567,16.317C12.567,13.645,12.569,13.628,12.884,13.552C13.059,13.51,14.473,13.493,16.026,13.514L18.85,13.554L18.85,16.338L18.85,19.122L15.805,19.16C14.131,19.18,12.717,19.154,12.664,19.102ZZM20.111,18.883C19.941,18.352,20.019,13.899,20.203,13.68C20.424,13.417,26.112,13.391,26.377,13.651C26.555,13.828,26.63,18.537,26.46,18.972C26.386,19.163,25.973,19.192,23.293,19.192C20.234,19.192,20.21,19.189,20.111,18.883ZZM27.629,19.099C27.577,19.048,27.534,17.802,27.534,16.33C27.534,14.018,27.565,13.642,27.758,13.569C27.881,13.522,29.275,13.484,30.856,13.484C33.003,13.484,33.759,13.528,33.842,13.658C33.992,13.895,34.019,18.487,33.872,18.878C33.755,19.19,33.737,19.192,30.739,19.192C29.08,19.192,27.68,19.15,27.629,19.099ZZM35.112,19.099C34.934,18.923,35.005,13.832,35.188,13.651C35.309,13.532,36.197,13.484,38.289,13.484C41.044,13.484,41.23,13.501,41.368,13.754C41.582,14.148,41.561,18.811,41.344,19.025C41.161,19.205,35.291,19.275,35.112,19.099ZZM12.729,12.326C12.504,12.059,12.491,7.13,12.715,6.864C12.851,6.702,13.416,6.663,15.679,6.663C17.216,6.663,18.575,6.701,18.698,6.748C18.891,6.821,18.921,7.196,18.921,9.504C18.921,11.397,18.872,12.225,18.751,12.343C18.498,12.593,12.941,12.578,12.729,12.326ZZM20.269,12.323C20.033,12.153,20.01,11.908,20.021,9.599C20.029,7.861,20.085,6.999,20.2,6.862C20.46,6.554,26.009,6.572,26.324,6.882C26.654,7.207,26.654,11.966,26.324,12.291C26.137,12.475,25.661,12.51,23.315,12.51C21.205,12.51,20.465,12.465,20.269,12.323ZZM27.704,12.343C27.465,12.107,27.465,7.066,27.704,6.83C27.912,6.625,33.422,6.597,33.747,6.8C33.924,6.909,33.959,7.378,33.959,9.587C33.959,11.795,33.924,12.264,33.747,12.374C33.422,12.576,27.912,12.548,27.704,12.343ZZM27.69,5.497C27.578,5.364,27.54,4.498,27.567,2.678L27.605,0.051L30.67,0.014C33.482,-0.021,33.745,-0.004,33.861,0.222C33.931,0.358,33.981,1.583,33.973,2.945C33.961,4.981,33.921,5.445,33.747,5.553C33.631,5.625,32.257,5.686,30.694,5.687C28.448,5.688,27.818,5.649,27.69,5.497ZZ"
style="fill: rgb(36, 151, 237)"
/>
</g>
</g>
</g>
</g>
</svg>
</template>

23
app/components/svg/drone.vue Executable file
View File

@@ -0,0 +1,23 @@
<template>
<svg viewBox="0 0 33 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient
id="drone"
x1="6.89"
y1="1.73"
x2="27.869"
y2="33.277"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="#73DFE7" />
<stop offset="1" stop-color="#0095F7" />
</linearGradient>
</defs>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M32.813 17.293a17.17 17.17 0 0 1-1.335 6.58l-5.83-5.929c.702-1.157 1.053-2.53 1.053-3.977.07-4.122-3.231-7.52-7.305-7.52-1.475 0-2.81.433-3.934 1.157l-5.409-5.496A15.513 15.513 0 0 1 16.656.662c8.921 0 16.157 7.448 16.157 16.631ZM7.805 3.41l5.83 6.001a7.614 7.614 0 0 0-1.545 4.628c0 4.194 3.302 7.593 7.376 7.593a7.128 7.128 0 0 0 4.496-1.591l6.251 6.436c-2.95 4.483-7.867 7.448-13.557 7.448C7.736 33.925.5 26.477.5 17.293.5 11.436 3.38 6.374 7.805 3.41Zm11.661 15.33c2.74 0 4.917-2.242 4.917-5.062 0-2.82-2.177-5.062-4.917-5.062-2.74 0-4.917 2.242-4.917 5.062 0 2.82 2.178 5.061 4.917 5.061Z"
fill="url(#drone)"
/>
</svg>
</template>

View File

@@ -0,0 +1,8 @@
<template>
<svg viewBox="0 0 16 16">
<path
fill="currentColor"
d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75z"
/>
</svg>
</template>

43
app/components/svg/gitea.vue Executable file
View File

@@ -0,0 +1,43 @@
<template>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="main_outline"
x="0px"
y="0px"
viewBox="0 0 628.63165 387.52499"
xml:space="preserve"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
>
<g id="g1811" transform="translate(-5.6683205,-143.075)">
<path
id="teabag"
style="fill: #ffffff"
d="M 395.9,484.2 269,423.2 c -12.5,-6 -17.9,-21.2 -11.8,-33.8 l 61,-126.9 c 6,-12.5 21.2,-17.9 33.8,-11.8 17.2,8.3 27.1,13 27.1,13 l -0.1,-109.2 16.7,-0.1 0.1,117.1 c 0,0 57.4,24.2 83.1,40.1 3.7,2.3 10.2,6.8 12.9,14.4 2.1,6.1 2,13.1 -1,19.3 l -61,126.9 c -6.2,12.7 -21.4,18.1 -33.9,12 z"
inkscape:connector-curvature="0"
/>
<g id="g1809">
<g id="g1807">
<path
style="fill: #609926"
d="m 622.7,149.8 c -4.1,-4.1 -9.6,-4 -9.6,-4 0,0 -117.2,6.6 -177.9,8 -13.3,0.3 -26.5,0.6 -39.6,0.7 0,39.1 0,78.2 0,117.2 -5.5,-2.6 -11.1,-5.3 -16.6,-7.9 0,-36.4 -0.1,-109.2 -0.1,-109.2 -29,0.4 -89.2,-2.2 -89.2,-2.2 0,0 -141.4,-7.1 -156.8,-8.5 -9.8,-0.6 -22.5,-2.1 -39,1.5 -8.7,1.8 -33.5,7.4 -53.8,26.9 -45,40.1 -33.5,103.9 -32.1,113.5 1.7,11.7 6.9,44.2 31.7,72.5 45.8,56.1 144.4,54.8 144.4,54.8 0,0 12.1,28.9 30.6,55.5 25,33.1 50.7,58.9 75.7,62 63,0 188.9,-0.1 188.9,-0.1 0,0 12,0.1 28.3,-10.3 14,-8.5 26.5,-23.4 26.5,-23.4 0,0 12.9,-13.8 30.9,-45.3 5.5,-9.7 10.1,-19.1 14.1,-28 0,0 55.2,-117.1 55.2,-231.1 -1.1,-34.5 -9.6,-40.6 -11.6,-42.6 z M 125.6,353.9 c -25.9,-8.5 -36.9,-18.7 -36.9,-18.7 0,0 -19.1,-13.4 -28.7,-39.8 -16.5,-44.2 -1.4,-71.2 -1.4,-71.2 0,0 8.4,-22.5 38.5,-30 13.8,-3.7 31,-3.1 31,-3.1 0,0 7.1,59.4 15.7,94.2 7.2,29.2 24.8,77.7 24.8,77.7 0,0 -26.1,-3.1 -43,-9.1 z m 300.3,107.6 c 0,0 -6.1,14.5 -19.6,15.4 -5.8,0.4 -10.3,-1.2 -10.3,-1.2 0,0 -0.3,-0.1 -5.3,-2.1 l -112.9,-55 c 0,0 -10.9,-5.7 -12.8,-15.6 -2.2,-8.1 2.7,-18.1 2.7,-18.1 L 322,273 c 0,0 4.8,-9.7 12.2,-13 0.6,-0.3 2.3,-1 4.5,-1.5 8.1,-2.1 18,2.8 18,2.8 L 467.4,315 c 0,0 12.6,5.7 15.3,16.2 1.9,7.4 -0.5,14 -1.8,17.2 -6.3,15.4 -55,113.1 -55,113.1 z"
id="path1803"
inkscape:connector-curvature="0"
/>
<path
style="fill: #609926"
d="m 326.8,380.1 c -8.2,0.1 -15.4,5.8 -17.3,13.8 -1.9,8 2,16.3 9.1,20 7.7,4 17.5,1.8 22.7,-5.4 5.1,-7.1 4.3,-16.9 -1.8,-23.1 l 24,-49.1 c 1.5,0.1 3.7,0.2 6.2,-0.5 4.1,-0.9 7.1,-3.6 7.1,-3.6 4.2,1.8 8.6,3.8 13.2,6.1 4.8,2.4 9.3,4.9 13.4,7.3 0.9,0.5 1.8,1.1 2.8,1.9 1.6,1.3 3.4,3.1 4.7,5.5 1.9,5.5 -1.9,14.9 -1.9,14.9 -2.3,7.6 -18.4,40.6 -18.4,40.6 -8.1,-0.2 -15.3,5 -17.7,12.5 -2.6,8.1 1.1,17.3 8.9,21.3 7.8,4 17.4,1.7 22.5,-5.3 5,-6.8 4.6,-16.3 -1.1,-22.6 1.9,-3.7 3.7,-7.4 5.6,-11.3 5,-10.4 13.5,-30.4 13.5,-30.4 0.9,-1.7 5.7,-10.3 2.7,-21.3 -2.5,-11.4 -12.6,-16.7 -12.6,-16.7 -12.2,-7.9 -29.2,-15.2 -29.2,-15.2 0,0 0,-4.1 -1.1,-7.1 -1.1,-3.1 -2.8,-5.1 -3.9,-6.3 4.7,-9.7 9.4,-19.3 14.1,-29 -4.1,-2 -8.1,-4 -12.2,-6.1 -4.8,9.8 -9.7,19.7 -14.5,29.5 -6.7,-0.1 -12.9,3.5 -16.1,9.4 -3.4,6.3 -2.7,14.1 1.9,19.8 -8.2,16.8 -16.4,33.6 -24.6,50.4 z"
id="path1805"
inkscape:connector-curvature="0"
/>
</g>
</g>
</g>
</svg>
</template>

View File

@@ -0,0 +1,30 @@
<template>
<svg
id="screenshot-e1abaae4-8d9a-80ff-8001-956afa1f32eb"
width="44"
height="43"
viewBox="1281 -100 44 43"
style="-webkit-print-color-adjust: exact"
fill="none"
version="1.1"
sodipodi:docname="svg-path-7.svg"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
>
<g id="shape-e1abaae4-8d9a-80ff-8001-956afa1f32eb" style="fill: #000000">
<g id="fills-e1abaae4-8d9a-80ff-8001-956afa1f32eb" style="fill: #000000">
<path
id="path2"
fill-rule="evenodd"
rx="0"
ry="0"
d="M1303,-100C1290.845,-100,1281,-90.135,1281,-77.956C1281,-68.202,1287.297,-59.963,1296.043,-57.042C1297.143,-56.849,1297.555,-57.511,1297.555,-58.089C1297.555,-58.613,1297.528,-60.349,1297.528,-62.195C1292,-61.175,1290.57,-63.545,1290.13,-64.785C1289.883,-65.419,1288.81,-67.375,1287.875,-67.899C1287.105,-68.312,1286.005,-69.332,1287.847,-69.359C1289.58,-69.387,1290.817,-67.761,1291.23,-67.1C1293.21,-63.765,1296.373,-64.702,1297.637,-65.281C1297.83,-66.714,1298.407,-67.678,1299.04,-68.229C1294.145,-68.78,1289.03,-70.682,1289.03,-79.113C1289.03,-81.511,1289.883,-83.495,1291.285,-85.038C1291.065,-85.589,1290.295,-87.848,1291.505,-90.879C1291.505,-90.879,1293.347,-91.458,1297.555,-88.62C1299.315,-89.116,1301.185,-89.364,1303.055,-89.364C1304.925,-89.364,1306.795,-89.116,1308.555,-88.62C1312.762,-91.486,1314.605,-90.879,1314.605,-90.879C1315.815,-87.848,1315.045,-85.589,1314.825,-85.038C1316.228,-83.495,1317.08,-81.538,1317.08,-79.113C1317.08,-70.654,1311.938,-68.78,1307.043,-68.229C1307.84,-67.54,1308.528,-66.218,1308.528,-64.151C1308.528,-61.203,1308.5,-58.833,1308.5,-58.089C1308.5,-57.511,1308.913,-56.822,1310.012,-57.042C1318.968,-60.071,1324.998,-68.486,1325,-77.956C1325,-90.135,1315.155,-100,1303,-100ZZ"
style="fill: #000000"
/>
</g>
</g>
</svg>
</template>

View File

@@ -0,0 +1,196 @@
<template>
<svg
id="svg190"
version="1.1"
width="393.39569"
height="393.39569"
viewBox="0 0 393.39569 393.39569"
sodipodi:docname="logo.svg"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
>
<defs
id="defs194"
>
<linearGradient
id="linearGradient13929"
inkscape:collect="always"
>
<stop
id="stop13925"
style="stop-color:#04865c;stop-opacity:1;"
offset="0"
/>
<stop
id="stop13927"
style="stop-color:#066245;stop-opacity:1;"
offset="1"
/>
</linearGradient>
<linearGradient
id="linearGradient13767"
inkscape:collect="always"
>
<stop
id="stop13763"
style="stop-color:#67ceaa;stop-opacity:1;"
offset="0"
/>
<stop
id="stop13765"
style="stop-color:#39b088;stop-opacity:0;"
offset="1"
/>
</linearGradient>
<linearGradient
id="linearGradient19707"
inkscape:collect="always"
>
<stop
id="stop19703"
style="stop-color:#067555;stop-opacity:1;"
offset="0"
/>
<stop
id="stop26611"
style="stop-color:#066548;stop-opacity:1;"
offset="0.5"
/>
<stop
id="stop19705"
style="stop-color:#06563b;stop-opacity:1;"
offset="1"
/>
</linearGradient>
<radialGradient
id="radialGradient19709"
inkscape:collect="always"
xlink:href="#linearGradient19707"
cx="258.2518"
cy="111.30856"
fx="258.2518"
fy="111.30856"
r="144.73241"
gradientTransform="matrix(1,0,0,0.26232525,0,82.109517)"
gradientUnits="userSpaceOnUse"
/>
<linearGradient
id="linearGradient13769"
inkscape:collect="always"
xlink:href="#linearGradient13767"
x1="227.9971"
y1="164.44801"
x2="199.6779"
y2="361.70694"
gradientUnits="userSpaceOnUse"
/>
<radialGradient
id="radialGradient13931"
inkscape:collect="always"
xlink:href="#linearGradient13929"
cx="230.15836"
cy="47.509117"
fx="230.15836"
fy="47.509117"
r="57.429787"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.6711718,0.06259482,-0.02693208,0.28877884,81.31173,70.298382)"
/>
</defs>
<g
id="g196"
inkscape:groupmode="layer"
inkscape:label="Image"
transform="translate(-22.985779,-1.2769928)"
>
<circle
id="path18800"
style="fill:#10b982;fill-opacity:1;stroke:none;stroke-width:1.47767"
cx="219.68362"
cy="197.97484"
r="196.69785"
/>
<circle
id="path564"
style="fill:url(#radialGradient13931);fill-opacity:1;stroke:none;stroke-width:1.9172;stroke-dasharray:none"
cx="229.63922"
cy="130.58992"
r="57.429787"
/>
<path
id="path1435"
style="display:inline;fill:url(#linearGradient13769);fill-opacity:1;stroke:none;stroke-width:23.0629;stroke-dasharray:none"
d="M 154.83569,140.29296 87.837483,323.35279 312.196,348.95574 292.17195,161.84683 Z"
sodipodi:nodetypes="ccccc"
/>
<ellipse
id="path510"
style="fill:url(#radialGradient19709);fill-opacity:1;stroke:none;stroke-width:3.08472;stroke-dasharray:none"
cx="258.2518"
cy="111.30856"
rx="144.73241"
ry="37.966965"
transform="matrix(0.98785347,0.15538828,-0.26474655,0.96431803,0,0)"
/>
<path
id="path510-5-3-5"
style="fill:#5cc9a4;fill-opacity:1;stroke-width:1.59418"
transform="matrix(0.98803718,0.15421583,-0.26666281,0.96378989,0,0)"
d="m 336.80361,138.97559 a 75.060692,19.552454 0 0 1 -75.06069,19.55245 75.060692,19.552454 0 0 1 -75.06069,-19.55245 75.060692,19.552454 0 0 1 75.06069,-19.55246 75.060692,19.552454 0 0 1 75.06069,19.55246 z"
/>
<ellipse
id="path510-5-3"
style="fill:#85e6bd;fill-opacity:1;stroke:none;stroke-width:1.39712;stroke-dasharray:none"
cx="261.77979"
cy="142.58211"
rx="66.810738"
ry="16.871904"
transform="matrix(0.98881768,0.14912947,-0.27528102,0.9613638,0,0)"
/>
<ellipse
id="path510-5"
style="fill:#5cc9a4;fill-opacity:1;stroke:none;stroke-width:1.04102;stroke-dasharray:none"
cx="261.53564"
cy="134.85057"
rx="48.843674"
ry="12.812929"
transform="matrix(0.98785347,0.15538828,-0.26474655,0.96431803,0,0)"
/>
<circle
id="path564-3"
style="fill:#c7e9dd;fill-opacity:1;stroke:none;stroke-width:0.324698;stroke-dasharray:none"
cx="227.53282"
cy="126.47501"
r="9.7263527"
/>
<circle
id="path564-3-6"
style="fill:#c7e9dd;fill-opacity:1;stroke:none;stroke-width:0.222375;stroke-dasharray:none"
cx="275.15833"
cy="137.97833"
r="6.6612716"
/>
<circle
id="path564-3-6-7"
style="fill:#c7e9dd;fill-opacity:1;stroke:none;stroke-width:0.222375;stroke-dasharray:none"
cx="179.57893"
cy="123.66492"
r="6.6612716"
/>
<path
id="path16760"
style="fill:#5cc9a4;fill-opacity:1;stroke:none"
d="m 144.8295,167.73835 2.96312,-6.07927 c 0,0 9.17615,9.8631 4.31124,9.21855 -4.86492,-0.64455 -4.86492,-0.64455 -4.86492,-0.64455 l -0.0627,0.32937 z"
/>
<path
id="path17989"
style="fill:#5cc9a4;fill-opacity:1;stroke:none"
d="m 295.86423,184.55616 -1.11687,9.82274 -3.40985,-1.3222 -0.43522,-8.31425 z"
/>
</g>
</svg>
</template>

66
app/components/svg/jellyfin.vue Executable file
View File

@@ -0,0 +1,66 @@
<template>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="logo"
viewBox="0 0 465.36509 465.36288"
class="w-0"
sodipodi:docname="logo.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
>
<defs id="defs2431">
<linearGradient
id="linear-gradient"
gradientUnits="userSpaceOnUse"
x1="110.25"
y1="213.3"
x2="496.14001"
y2="436.09"
>
<stop offset="0" style="stop-color: rgb(170, 92, 195)" id="stop2426" />
<stop offset="1" style="stop-color: rgb(0, 164, 220)" id="stop2428" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linear-gradient"
id="linearGradient6687"
gradientUnits="userSpaceOnUse"
x1="110.25"
y1="213.3"
x2="496.14001"
y2="436.09"
/>
<linearGradient
inkscape:collect="always"
xlink:href="#linear-gradient"
id="linearGradient6689"
gradientUnits="userSpaceOnUse"
x1="110.25"
y1="213.3"
x2="496.14001"
y2="436.09"
/>
</defs>
<g id="icon-transparent" transform="translate(-23.290284,-23.3)">
<path
id="inner-shape"
d="m 256,201.6 c -20.4,0 -86.2,119.3 -76.2,139.4 10,20.1 142.5,19.9 152.4,0 9.9,-19.9 -55.7,-139.4 -76.2,-139.4 z"
inkscape:connector-curvature="0"
style="fill: url(#linearGradient6687)"
/>
<path
id="outer-shape"
d="m 256,23.3 c -61.6,0 -259.8,359.4 -229.6,420.1 30.2,60.7 429.3,60 459.2,0 C 515.5,383.4 317.6,23.3 256,23.3 Z m 150.5,367.5 c -19.6,39.3 -281.1,39.8 -300.9,0 C 85.8,351 215.7,115.5 256,115.5 c 40.3,0 170.1,235.9 150.5,275.3 z"
inkscape:connector-curvature="0"
style="fill: url(#linearGradient6689)"
/>
</g>
</svg>
</template>

View File

@@ -0,0 +1,37 @@
<template>
<svg
xmlns:xlink="http://www.w3.org/1999/xlink"
width="160.997"
xmlns="http://www.w3.org/2000/svg"
height="98.997"
viewBox="766.502 -54.498 160.997 98.997"
style="-webkit-print-color-adjust: exact"
fill="none"
>
<defs>
<linearGradient
id="b"
gradientUnits="userSpaceOnUse"
y1="294.65"
xlink:href="#a"
x1="37.362"
y2="279.148"
x2="19.99"
gradientTransform="matrix(3.88534 0 0 3.92905 767 -1122.927)"
/>
<linearGradient id="a">
<stop offset="0" style="stop-color: #322eeb; stop-opacity: 1" />
<stop offset="1" style="stop-color: #702fff; stop-opacity: 1" />
</linearGradient>
</defs>
<path
d="M886.653-54c-16.355.468-23.539 22.832-23.539 22.832-4.874-9.083-16.866-9.98-20.478-10.045l-60.983-.002-.002.017-14.597-.039c-.027.26-.045.521-.054.782.008 7.669 7.928 14.066 18.257 14.746l32.878.065v-.004l14.9.027c1.401.023 2.525 1.179 2.526 2.597 0 1.432-1.146 2.594-2.562 2.598v.003h-14.864v-.023h-32.872v.002c.01 7.669 7.967 14.891 18.295 15.571l1.675.004c.559.004 2.07.019 12.886.019.013 0 .025.003.038.004 0 0 1.971.02 14.842.02 1.416.004 2.562 1.167 2.562 2.599a2.578 2.578 0 0 1-2.313 2.572h-29.706v.017c.007 6.723 6.125 13.1 14.593 15.031l2.056.509c5.415.035 10.83.004 16.245.061-17.289.008 11.436.002 14.553.002l3.341.22 9.543 8.818c17.214 10.071 32.112 11.559 32.112 11.559s12.237 15.969 30.3 1.11c1.6-1.316.014-3.106.014-3.106l-47.663-65.734Zm-101.39 33.556c-8.553 0-13.976-.001-14.444-.002v.002h14.444Zm108.223-23.045c-6.04 2.274-8.353 12.41-8.353 12.41l3.92 5.328Z"
style="display: inline; fill: url(#b)"
/>
<path
d="M886.653-54c-16.355.468-23.539 22.832-23.539 22.832-4.874-9.083-16.866-9.98-20.478-10.045l-60.983-.002-.002.017-14.597-.039c-.027.26-.045.521-.054.782.008 7.669 7.928 14.066 18.257 14.746l32.878.065v-.004l14.9.027c1.401.023 2.525 1.179 2.526 2.597 0 1.432-1.146 2.594-2.562 2.598v.003h-14.864v-.023h-32.872v.002c.01 7.669 7.967 14.891 18.295 15.571l1.675.004c.559.004 2.07.019 12.886.019.013 0 .025.003.038.004 0 0 1.971.02 14.842.02 1.416.004 2.562 1.167 2.562 2.599a2.578 2.578 0 0 1-2.313 2.572h-29.706v.017c.007 6.723 6.125 13.1 14.593 15.031l2.056.509c5.415.035 10.83.004 16.245.061-17.289.008 11.436.002 14.553.002l3.341.22 9.543 8.818c17.214 10.071 32.112 11.559 32.112 11.559s12.237 15.969 30.3 1.11c1.6-1.316.014-3.106.014-3.106l-47.663-65.734Zm-101.39 33.556c-8.553 0-13.976-.001-14.444-.002v.002h14.444Zm108.223-23.045c-6.04 2.274-8.353 12.41-8.353 12.41l3.92 5.328Z"
style="display: inline; fill: none; stroke-width: 0.996658"
class="stroke-shape"
/>
</svg>
</template>

View File

@@ -0,0 +1,96 @@
<template>
<svg
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 150.00002 68.287012"
enable-background="new 0 0 196.6 72"
xml:space="preserve"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
sodipodi:docname="logo.svg"
width="160"
height="72.839485"
inkscape:export-filename="nextcloud-logo-inverted.png"
inkscape:export-xdpi="299.75104"
inkscape:export-ydpi="299.75104"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
>
<defs id="defs18">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8812">
<circle
id="circle8814"
cx="95.669289"
cy="95.669296"
r="79.724197"
style="fill: #00080d; fill-opacity: 1; stroke-width: 1"
/>
</clipPath>
</defs>
<path
inkscape:connector-curvature="0"
id="path1052"
d="M 75.114322,0 C 59.566367,0 46.388185,10.540419 42.303829,24.821495 38.754097,17.246596 31.061705,11.939743 22.201404,11.939743 10.016394,11.939743 0,21.956074 0,34.140997 c 0,12.184907 10.016394,22.20581 22.201404,22.20581 8.860301,0 16.552693,-5.310098 20.102426,-12.886328 4.084356,14.282163 17.262537,24.826085 32.810492,24.826085 15.432969,0 28.543958,-10.384898 32.732778,-24.505971 3.61531,7.404235 11.21249,12.566214 19.94694,12.566214 12.18501,0 22.20596,-10.020903 22.20596,-22.20581 0,-12.184923 -10.02095,-22.201254 -22.20596,-22.201254 -8.73445,0 -16.33163,5.158746 -19.94694,12.561653 C 103.65828,10.381427 90.547291,0 75.114322,0 Z m 0,13.032657 c 11.736953,0 21.113057,9.371502 21.113057,21.10834 0,11.736818 -9.376104,21.112902 -21.113057,21.112902 -11.73688,0 -21.108446,-9.376084 -21.108446,-21.112902 0,-11.736838 9.371565,-21.108337 21.108446,-21.10834 z M 22.201404,24.972401 c 5.142206,0 9.173215,4.026397 9.173215,9.168596 0,5.142179 -4.031009,9.173153 -9.173215,9.173153 -5.142218,0 -9.168684,-4.030974 -9.168684,-9.173153 0,-5.142199 4.026466,-9.168596 9.168684,-9.168596 z m 105.592636,0 c 5.14226,0 9.17323,4.026397 9.17323,9.168596 0,5.142179 -4.031,9.173153 -9.17323,9.173153 -5.14218,0 -9.16864,-4.030974 -9.16864,-9.173153 0,-5.142199 4.02648,-9.168596 9.16864,-9.168596 z"
style="
color: #000000;
font-style: normal;
font-variant: normal;
font-weight: normal;
font-stretch: normal;
font-size: medium;
line-height: normal;
font-family: sans-serif;
text-indent: 0;
text-align: start;
text-decoration: none;
text-decoration-line: none;
text-decoration-style: solid;
text-decoration-color: #000000;
letter-spacing: normal;
word-spacing: normal;
text-transform: none;
writing-mode: lr-tb;
direction: ltr;
baseline-shift: baseline;
text-anchor: start;
white-space: normal;
clip-rule: nonzero;
display: inline;
overflow: visible;
visibility: visible;
opacity: 1;
isolation: auto;
mix-blend-mode: normal;
color-interpolation: sRGB;
color-interpolation-filters: linearRGB;
solid-color: #000000;
solid-opacity: 1;
fill: #0082c9;
fill-opacity: 1;
fill-rule: nonzero;
stroke: none;
stroke-width: 7.33046;
stroke-linecap: butt;
stroke-linejoin: miter;
stroke-miterlimit: 10;
stroke-dasharray: none;
stroke-dashoffset: 0;
stroke-opacity: 1;
color-rendering: auto;
image-rendering: auto;
shape-rendering: auto;
text-rendering: auto;
enable-background: accumulate;
"
inkscape:export-filename="Nextcloud Hub logo variants.png"
inkscape:export-xdpi="300"
inkscape:export-ydpi="300"
/>
</svg>
</template>

29
app/components/svg/penpot.vue Executable file
View File

@@ -0,0 +1,29 @@
<template>
<svg
viewBox="0 0 261.92107 345.94192"
version="1.1"
id="svg6755"
sodipodi:docname="logo.svg"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
>
<defs id="defs6751" />
<path
style="fill: #ffffff; stroke-width: 0.9375; fill-opacity: 1"
d="M 9.3448306,100.99152 35.913127,87.972678 37.245724,50.655062 67.542451,16.28108 100.72365,57.405625 125.75631,39.37409 l 15.22518,1.834775 14.84036,21.063668 31.87425,-38.730634 13.74071,0.372539 20.9012,30.130237 3.73859,35.563734 31.46306,12.965961 -3.5426,181.37087 L 132.06548,337.18752 5.4171538,277.0129 Z"
id="path1622"
/>
<path
d="M 68.318,0 31.941,51.237 V 80.198 L 0.286,95.255 0,95.121 v 188.952 l 123.419,58.309 7.542,3.56 7.542,-3.56 123.418,-58.309 V 95.121 l -0.232,0.11 -31.665,-15.062 V 51.237 L 228.917,49.678 193.645,0 157.265,51.237 v 0.05 L 130.795,14.006 104.528,51 103.589,49.678 Z m 6.437,29.762 14.07,19.816 H 47.811 L 61.72,29.995 74.756,29.762 Z m 125.324,0 14.072,19.816 H 173.139 L 187.042,29.995 Z M 137.23,43.77 151.3,63.583 H 110.292 L 124.195,44 Z M 43.923,59.564 h 19.452 v 65.497 l -19.452,-9.19 z m 29.438,0 h 19.354 v 79.356 l -19.354,-9.142 z m 95.89,0 h 19.45 v 70.146 l -19.45,9.188 z m 29.435,0 h 19.352 v 56.285 l -19.352,9.142 z M 106.4,73.57 h 19.451 v 81.004 l -19.451,-9.19 z m 29.438,0 h 19.352 v 71.971 l -19.352,9.145 z m 94.182,21.526 17.126,7.002 -17.126,8.09 V 95.095 Z M 31.94,95.121 v 15.09 l -17.122,-8.09 z m -16.859,23.808 108.337,51.178 v 155.59 L 15.082,274.519 v -155.59 z m 231.755,0 v 155.59 l -108.334,51.178 v -155.59 z"
id="path6753"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
/>
</svg>
</template>

View File

@@ -0,0 +1,82 @@
<template>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 746.89825 996.75226"
version="1.1"
id="svg999"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
>
<defs id="defs989">
<radialGradient
cx="591.27264"
cy="905.23793"
fx="591.27264"
fy="905.23793"
r="724.41493"
id="radialGradient-1"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="#2440E6" offset="0%" id="stop979" />
<stop stop-color="#5661B3" offset="100%" id="stop981" />
</radialGradient>
<radialGradient
cx="0.2919243"
cy="256.68957"
fx="0.2919243"
fy="256.68957"
r="527.57365"
gradientTransform="scale(0.85001132,1.1764549)"
id="radialGradient-2"
gradientUnits="userSpaceOnUse"
>
<stop
stop-color="#6574CD"
stop-opacity="0.5"
offset="0%"
id="stop984"
/>
<stop stop-color="#6574CD" offset="100%" id="stop986" />
</radialGradient>
</defs>
<g
id="Artboard"
style="fill: none; fill-rule: evenodd; stroke: none; stroke-width: 1"
transform="translate(-126.55087,-2.4813893)"
>
<g id="Group-4" transform="translate(19)">
<g id="Group-3" transform="translate(-19)">
<rect id="Rectangle" x="0" y="0" width="1000" height="1000" />
<g id="Bitmap" transform="translate(124.06948)">
<g id="Group" transform="matrix(1,0,0,-1,2.233251,1000)">
<circle
id="Oval"
cx="373.69727"
cy="624.06946"
r="373.44913"
style="fill: url(#radialGradient-1)"
/>
<path
d="M 309.67742,993.32217 C 232.5062,979.92267 167.4938,947.16833 113.64764,894.56287 58.312655,840.46858 24.069479,777.44128 7.4441687,698.78123 L 1.7369727,671.98222 0.99255583,336.49835 0.24813896,0.76634245 H 7.1960298 c 3.9702232,0 16.6253102,1.24069475 28.0397022,2.48138955 97.518608,11.91067 180.397018,70.967742 225.558308,160.545908 11.4144,22.82878 19.60298,49.13151 25.31018,81.88585 4.71464,27.79157 4.96278,36.97271 4.21836,181.88586 l -0.74442,152.60546 5.95534,14.88834 c 8.18858,20.34739 30.76923,42.92804 51.11662,51.11662 l 14.88834,5.95534 138.95782,0.24814 c 76.4268,0 143.42432,0.99255 148.63523,1.98511 24.31762,4.71464 50.37221,25.06203 60.79405,47.64268 2.97767,6.20347 6.94789,18.36228 8.68486,26.55087 2.72953,13.64764 2.48139,17.36972 -1.48883,32.75434 -12.40695,45.65757 -56.07941,108.933 -100.74442,145.9057 -50.62035,41.93549 -106.45161,69.97519 -166.74938,84.11911 -31.76179,7.19603 -103.72208,8.43673 -139.95037,1.98511 z"
id="Path"
inkscape:connector-curvature="0"
style="fill: url(#radialGradient-2); fill-rule: nonzero"
/>
</g>
</g>
</g>
</g>
</g>
</svg>
</template>

50
app/components/svg/radio.vue Executable file
View File

@@ -0,0 +1,50 @@
<template>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg919"
width="834.39722"
height="730.48706"
viewBox="0 0 834.39722 730.48706"
sodipodi:docname="radio.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
>
<defs id="defs923">
<linearGradient inkscape:collect="always" id="linearGradient1563">
<stop
style="stop-color: #d50500; stop-opacity: 1"
offset="0"
id="stop1559"
/>
<stop
style="stop-color: #e1b900; stop-opacity: 0.76862746"
offset="1"
id="stop1561"
/>
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1563"
id="linearGradient1565"
x1="90.683296"
y1="690.62628"
x2="767.32019"
y2="225.25154"
gradientUnits="userSpaceOnUse"
/>
</defs>
<path
style="fill: url(#linearGradient1565); fill-opacity: 1"
d="M 94.50247,730.25079 C 77.117356,727.71405 65.427746,724.2075 54.618466,718.28673 28.893936,704.19615 10.662156,680.93363 2.6616063,651.99329 l -2.65913978,-9.61888 v -197 c 0,-214.09526 -0.29603,-202.52243 5.59812978,-218.84753 5.9199797,-16.39658 14.1859497,-28.9754 27.0974097,-41.23574 11.62637,-11.04006 22.82393,-17.81421 38.00471,-22.99161 16.7009,-5.69583 3.53919,-5.42367 263.180744,-5.44197 232.58777,-0.0164 239.03707,-0.0671 236.11901,-1.85632 -1.65,-1.01171 -26.85,-15.02377 -56,-31.1379 C 353.66179,35.226934 368.85438,44.037404 364.99429,37.450664 356.9973,23.804834 364.1962,6.0125243 379.56052,1.4498143 c 10.34373,-3.07175 13.77778,-2.05749005 36.94195,10.9109797 19.01034,10.64295 97.1136,54.21233 138,76.98237 14.025,7.81066 47.00125,26.200456 73.28056,40.866226 l 47.78056,26.66502 h 30.89708 c 16.99339,0 34.39858,0.48701 38.6782,1.08225 14.20305,1.97547 32.37619,9.03994 44.28611,17.21541 6.21634,4.26716 18.53026,16.14867 23.71094,22.87832 8.16272,10.60329 15.46557,26.16114 19.11287,40.71774 1.5055,6.0088 1.6867,24.06134 2.0033,199.60628 0.3618,200.57325 0.3582,200.77432 -3.837,216.39503 -8.34326,31.06582 -34.33414,58.98896 -64.82161,69.64064 -18.31727,6.39967 12.31571,5.86253 -344.59101,6.0423 -178.2,0.0898 -325.125,-9.6e-4 -326.5,-0.20159 z m 463.5,-130.36273 c 22.57197,-1.76998 39.46342,-6.37844 59,-16.09687 15.81513,-7.8672 28.75425,-17.16261 41,-29.45425 21.41719,-21.49743 36.53683,-49.15408 42.50461,-77.74886 10.24379,-49.08335 -2.70354,-98.53261 -35.67275,-136.24359 -19.93605,-22.80332 -48.49533,-40.49778 -77.49171,-48.0115 -37.24965,-9.65236 -77.34154,-5.22028 -111.58857,12.33589 -20.88648,10.70711 -43.3649,30.29648 -56.46236,49.20553 -42.43451,61.26347 -36.68664,142.39143 13.96448,197.10068 25.35051,27.38158 63.83544,45.85088 101.7463,48.82906 5.5,0.43206 10.225,0.83942 10.5,0.90523 0.275,0.0658 5.9,-0.30379 12.5,-0.82132 z M 531.42186,546.9284 c -29.24511,-5.36131 -54.27731,-21.21641 -70.14873,-44.43138 -5.93182,-8.67642 -12.41142,-23.03069 -14.97884,-33.18267 -3.07438,-12.15653 -3.28412,-38.00354 -0.40119,-49.43994 10.22955,-40.58004 40.67752,-69.95214 81.05008,-78.1862 13.00955,-2.65332 34.81951,-2.1438 46.68477,1.09065 36.91805,10.06379 65.4177,38.78128 75.0221,75.59555 3.09496,11.86318 3.38066,36.76342 0.55537,48.40426 -9.34166,38.48986 -37.01321,67.19032 -74.89653,77.68141 -7.52303,2.08336 -12.08506,2.64726 -23.80642,2.94265 -7.975,0.20097 -16.56127,-0.0125 -19.08061,-0.47433 z m -234.25133,25.00962 c 17.1098,-7.76851 20.54111,-31.16909 6.35142,-43.31494 -8.21303,-7.03005 -4.25978,-6.74929 -94.94762,-6.74309 -52.43388,0.004 -82.88542,0.37041 -85.24917,1.02693 -15.36872,4.26859 -23.73524,22.18807 -16.92644,36.25318 2.62173,5.41577 9.5535,11.93059 14.31881,13.45754 2.18411,0.69986 31.60206,1.07945 87.78494,1.13272 80.85911,0.0767 84.67959,-10e-4 88.66806,-1.81234 z m 0.90015,-104.74119 c 19.10488,-10.22623 19.00946,-37.37206 -0.16481,-46.88568 -3.75492,-1.86307 -7.12808,-1.94688 -88.67948,-2.20332 -84.65121,-0.26619 -84.78339,-0.26343 -89.74164,1.86955 -13.55452,5.831 -19.26922,21.67758 -12.66759,35.12662 1.54684,3.15128 4.47133,7.10366 6.49887,8.78307 7.29246,6.04035 4.71464,5.88894 96.68644,5.67904 l 84,-0.1917 z m 0.0515,-104.52326 c 11.55775,-6.09711 16.84264,-18.39274 13.33465,-31.0239 -1.54521,-5.56396 -6.77189,-11.68576 -12.95436,-15.17298 l -5.5,-3.10228 h -84 c -69.20471,0 -84.69473,0.24512 -87.94431,1.39168 -5.56198,1.96245 -13.09728,9.34113 -15.22261,14.90621 -3.61657,9.46987 -1.72895,19.64759 4.99734,26.94475 4.47853,4.85863 7.67996,6.81477 13.38708,8.17981 2.1274,0.50884 39.88196,0.83313 86.2825,0.74113 l 82.5,-0.16358 5.11974,-2.70084 z"
id="path1028"
inkscape:connector-curvature="0"
/>
</svg>
</template>

View File

@@ -0,0 +1,16 @@
<template>
<svg width="100" height="100" viewBox="0 0 20 20">
<g fill="currentColor" fill-rule="evenodd" clip-rule="evenodd">
<path
d="M5.955 5.805a5.94 5.94 0 0 0-1.736 4.87a1 1 0 0 1-1.99.21a7.94 7.94 0 0 1 2.322-6.504c3.136-3.092 8.19-3.04 11.289.102c3.1 3.143 3.081 8.198-.054 11.29a7.924 7.924 0 0 1-5.44 2.286a8.021 8.021 0 0 1-2.283-.29a1 1 0 1 1 .533-1.927a6 6 0 0 0 1.714.217a5.924 5.924 0 0 0 4.071-1.71c2.343-2.31 2.365-6.099.035-8.461c-2.33-2.363-6.118-2.393-8.46-.083Z"
/>
<path
d="M3.967 11.695a1 1 0 0 1-1.412.082l-1.72-1.53a1 1 0 0 1 1.33-1.494l1.72 1.53a1 1 0 0 1 .082 1.412Z"
/>
<path
d="M2.42 11.6a1 1 0 0 0 1.4.2l2-1.5a1 1 0 0 0-1.2-1.6l-2 1.5a1 1 0 0 0-.2 1.4ZM10 6a1 1 0 0 1 1 1v3.5a1 1 0 1 1-2 0V7a1 1 0 0 1 1-1Z"
/>
<path d="M14 10.5a1 1 0 0 1-1 1h-3a1 1 0 1 1 0-2h3a1 1 0 0 1 1 1Z" />
</g>
</svg>
</template>

View File

@@ -0,0 +1,43 @@
<template>
<svg
width="32"
height="32"
viewBox="0 0 16 16"
version="1.1"
id="svg174"
sodipodi:docname="logo.svg"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
>
<defs id="defs178" />
<sodipodi:namedview
id="namedview176"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="26.90625"
inkscape:cx="15.739837"
inkscape:cy="16"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="-36"
inkscape:window-maximized="1"
inkscape:current-layer="svg174"
/>
<path
fill="currentColor"
d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm1.5 2.5c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0a8 8 0 0 0-8-8a1 1 0 0 1 0-2zm0 4a6 6 0 0 1 6 6a1 1 0 1 1-2 0a4 4 0 0 0-4-4a1 1 0 0 1 0-2zm.5 7a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3z"
id="path172"
style="fill: #1182db; fill-opacity: 1"
/>
</svg>
</template>

View File

@@ -0,0 +1,25 @@
<template>
<svg
id="screenshot-8851a463-5b95-11ed-963d-5f59412bd802"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="17"
xmlns="http://www.w3.org/2000/svg"
height="21.069"
viewBox="258 1606 17 21.069"
style="-webkit-print-color-adjust: exact"
fill="none"
version="1.1"
>
<g id="shape-8851a463-5b95-11ed-963d-5f59412bd802">
<g id="fills-8851a463-5b95-11ed-963d-5f59412bd802">
<path
stroke-linejoin="round"
rx="0"
ry="0"
d="M266.5,1607.108L274,1610.631L274,1615.644C274,1620.453,270.784,1624.896,266.5,1626.036C262.216,1624.897,259,1620.453,259,1615.644L259,1610.631M266.5,1627.069C271.398,1625.842,275,1620.944,275,1615.644L275,1610L266.5,1606L258,1610L258.001,1615.644C258.001,1620.944,261.602,1625.842,266.5,1627.069ZZ"
style="fill: rgb(0, 0, 0); fill-opacity: 1"
/>
</g>
</g>
</svg>
</template>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,110 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="800" width="1200"
viewBox="-6.659355 -11.5136 57.71441 69.0816">
<defs>
<linearGradient id="j">
<stop offset="0" />
<stop offset="1" stop-opacity="0" />
</linearGradient>
<linearGradient id="i">
<stop offset="0" stop-color="#f9f9f9" />
<stop offset="1" stop-color="#eeeeec" stop-opacity=".6204" />
</linearGradient>
<linearGradient id="h">
<stop offset="0" stop-color="#787b76" />
<stop offset=".8713" stop-color="#babcb9" />
<stop offset="1" stop-color="#787b76" />
</linearGradient>
<linearGradient id="f">
<stop offset="0" stop-color="#fff" />
<stop offset="1" stop-color="#fff" stop-opacity="0" />
</linearGradient>
<linearGradient id="e">
<stop offset="0" stop-color="#c00" />
<stop offset=".3651" stop-color="#ef0000" />
<stop offset="1" stop-color="#a00" />
</linearGradient>
<linearGradient id="g">
<stop offset="0" stop-color="#f0f2ef" />
<stop offset="1" stop-color="#cdd1c8" />
</linearGradient>
<linearGradient id="d">
<stop offset="0" stop-color="#888a85" />
<stop offset="1" stop-color="#2e3436" />
</linearGradient>
<linearGradient id="c">
<stop offset="0" stop-color="#555753" />
<stop offset="1" stop-color="#2e3436" />
</linearGradient>
<linearGradient id="b">
<stop offset="0" stop-color="#2e3436" />
<stop offset="1" stop-color="#2e3436" stop-opacity="0" />
</linearGradient>
<linearGradient id="a">
<stop offset="0" stop-color="#babdb6" />
<stop offset=".133" stop-color="#eeeeec" />
<stop offset="1" stop-color="#babdb6" />
</linearGradient>
<linearGradient gradientUnits="userSpaceOnUse" y2="19.4657" x2="23.7386" y1="4.1566" x1="23.7386" id="t"
xlink:href="#a" />
<linearGradient gradientUnits="userSpaceOnUse" y2="22.6325" x2="23.6881" y1="30.0572" x1="23.7323" id="u"
xlink:href="#b" />
<linearGradient gradientUnits="userSpaceOnUse" y2="36.358" x2="23.9375" y1="30.6169" x1="23.9375" id="n"
xlink:href="#c" />
<linearGradient gradientUnits="userSpaceOnUse" y2="23.9395" x2="20.5631" y1="32.248" x1="20.7711" id="o"
xlink:href="#d" />
<linearGradient gradientUnits="userSpaceOnUse" y2="9" x2="14.8125" y1="5.6244" x1="14.8125" id="p"
xlink:href="#e" />
<linearGradient gradientUnits="userSpaceOnUse" y2="10.0086" x2="24.0405" y1="5.069" x1="24.0405" id="q"
xlink:href="#f" />
<linearGradient gradientUnits="userSpaceOnUse" y2="24" x2="14.125" y1="33.125" x1="13.625" id="m"
xlink:href="#g" />
<linearGradient gradientUnits="userSpaceOnUse" y2="42.5" x2="10.1875" y1="20.25" x1="10.1875" id="l"
xlink:href="#h" />
<linearGradient gradientUnits="userSpaceOnUse" y2="17.0709" x2="23.9367" y1="35.9587" x1="24.7188" id="r"
xlink:href="#i" />
<linearGradient gradientUnits="userSpaceOnUse" y2="21.8143" x2="18.3125" y1="20.7438" x1="18.3125" id="s"
xlink:href="#j" />
<filter height="1.2799" y="-.14" width="1.0595" x="-.0298" id="k">
<feGaussianBlur stdDeviation=".5197" />
</filter>
</defs>
<g transform="translate(-1.7528 -3.1044)">
<rect ry="2.2981" rx="2.2981" y="39" x="3" height="8.9116" width="41.9013" opacity=".2824" fill="#2e3436"
filter="url(#k)" />
<path
d="M10 16.5938c-1.1804-.045-2.3598.978-2.4688 2.2187-.888 7.2876-2.2042 14.591-2.875 21.875V43.75c.0338 1.5795 1.071 2.642 2.2188 2.8438H41.5c.979-.0246 2.065-.7038 2.0313-2v-3.9376l-3.125-21.2187c-.2539-1.3018-1.3668-2.6848-2.9063-2.8438z"
fill="url(#l)" fill-rule="evenodd" stroke="#555753" />
<path
d="M10.6019 39.6246c-1.1297-.1225-1.9285-.8636-1.9005-2.2236l1.9005-15.9933c.292-1.0683.985-1.9224 2.079-1.9193h21.9246c1.0863-.0326 2.1726.7204 2.457 1.6163l2.416 16.133c.057 1.469-.5475 2.3194-1.5654 2.2859z"
fill="url(#m)" fill-rule="evenodd" stroke="#555753" />
<path d="M20.4688 20.4375l-2.0626 12.0313h-2.9687l8.0313 5.1562 8.9687-5.1563h-2.9688l-1.875-12.0312z"
fill="url(#n)" fill-rule="evenodd" stroke="url(#o)" />
<rect ry="1.9855" rx="5.0159" y="4.5135" x="8.4848" height="6.0609" width="31.1132" fill="url(#p)"
stroke="#930000" stroke-linecap="round" stroke-linejoin="round" />
<rect ry="1.2783" rx="1.8339" y="5.569" x="9.5004" height="3.9396" width="29.0803" opacity=".5833" fill="none"
stroke="url(#q)" stroke-linecap="round" stroke-linejoin="round" />
<path
d="M10.593 17.5722c-1.1188-.042-2.2367.9145-2.34 2.0748L5.4687 39.7228c.011.125.031.2569.0593.3799v2.8638c.032 1.477 1.015 2.4414 2.103 2.63h32.8483c.928-.0229 1.9276-.6288 1.8956-1.841v-3.682c.0073-.0285.0236-.0596.0297-.0877l-.0297-.2046v-.2045h-.0296l-2.9027-19.3745c-.2406-1.2173-1.2954-2.4813-2.7546-2.63z"
opacity=".2454" fill="none" stroke="url(#r)" />
<path
d="M10.2102 29.9558L12.048 22l24.0302.058 1.7797 8.9862-1.1767-9.0746c-.221-1.0017-.7513-1.9696-1.7236-1.9445l-21.9203-.0442c-1.4304-.0442-1.7118.8839-2.0373 1.9887z"
opacity=".2083" fill="url(#s)" fill-rule="evenodd" />
<rect ry="1.0763" rx="1.0763" y="3.6044" x="20.4837" height="25.9701" width="7.0964" fill="url(#t)"
stroke="#888a85" stroke-linecap="round" stroke-linejoin="round" />
<rect ry="1.0763" rx="1.0763" y="22.0138" x="19.9758" height="8.0433" width="8.1317" fill="url(#u)" />
<path d="M11.4234 41.4863h28.1104" opacity=".4352" fill="none" stroke="#fff" stroke-linecap="round" />
<rect ry="1.0763" rx="1.0763" y="4.6321" x="21.4282" height="23.9371" width="5.1519" opacity=".2269" fill="none"
stroke="#fff" stroke-linecap="round" stroke-linejoin="round" />
<g opacity=".6204" fill="none" stroke-linecap="round">
<path d="M20.4375 30.5H27.5" stroke="#888a85" />
<path d="M19.961 32.5h8.0155" opacity=".6806" stroke="#888a85" />
<path d="M20.2735 31.5h7.453" stroke="#5d5d5c" />
<path d="M19.87 33.4887h8.2713" opacity=".6806" stroke="#5d5d5c" />
</g>
<path d="M14.3814 31.5137h3.1378m12.9248-.0625h3.1377" fill="none" stroke="#fff" stroke-linecap="round" />
<ellipse ry="1.0828" rx="1.1932" cy="42.1885" cx="9.8553" transform="matrix(.42163 0 0 .4766 5.3635 21.3923)"
opacity=".335" fill="#fff" />
</g>
</svg>
</template>

View File

@@ -0,0 +1,34 @@
<script>
export default {
props: {
terminalContent: {
required: true,
type: String
}
}
}
</script>
<template>
<div
class="bg-slate-900 flex-row rounded-xl w-4/5 md:w-96 max-w-full md:min-w-max h-56 md:z-10 -mb-8 md:-mb-0"
>
<div class="p-3 flex justify-between w-20">
<div class="bg-green-400 h-4 w-4 r-1 rounded-full" />
<div class="bg-yellow-300 h-4 w-4 r-1 rounded-full" />
<div class="bg-red-600 h-4 w-4 r-1 rounded-full" />
</div>
<div class="flex h-4/5">
<code
class="w-full text-white font-mono text-base p-4 pt-0 mr-0 overflow-scroll whitespace-pre"
>
{{ terminalContent }}
<span
ref="terminal"
class="w-2 h-4 bg-white inline-block relative"
style="margin-bottom: -2px"
/>
</code>
</div>
</div>
</template>

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

BIN
app/favicon/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

66
app/favicon/favicon.svg Normal file
View File

@@ -0,0 +1,66 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="195" height="194.56551"><svg class="MuiBox-root css-15p9n5u" viewBox="0 0 195 194.56549" style="fill:#ffffff" data-darkreader-inline-fill="" version="1.1" id="SvgjsSvg1172" sodipodi:docname="logo.svg" width="195" height="194.56551" inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="SvgjsMetadata1171">
<rdf:rdf>
<cc:work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"></dc:type>
<dc:title></dc:title>
</cc:work>
</rdf:rdf>
</metadata>
<defs id="SvgjsDefs1170"></defs>
<sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1920" inkscape:window-height="1132" id="SvgjsSodipodi:namedview1169" showgrid="false" fit-margin-top="4" fit-margin-left="4" fit-margin-right="4" fit-margin-bottom="4" inkscape:zoom="0.91240154" inkscape:cx="132.06904" inkscape:cy="203.30961" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:current-layer="g4" showguides="true" inkscape:guide-bbox="true" inkscape:showpageshadow="0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#505050">
<inkscape:page x="0" y="0" width="195" height="194.56549" id="SvgjsInkscape:page1168" margin="0 0 0 0.43449217" bleed="0" inkscape:export-filename="Page 2.png" inkscape:export-xdpi="812.74384" inkscape:export-ydpi="812.74384"></inkscape:page>
<inkscape:page x="0.43449402" y="241.8387" width="194.56551" height="194.56549" id="SvgjsInkscape:page1167" margin="0" bleed="0"></inkscape:page>
<sodipodi:guide position="104.64025,131.07666" orientation="0,-1" id="SvgjsSodipodi:guide1166" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="96.414395,63.414758" orientation="0,-1" id="SvgjsSodipodi:guide1165" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="60.37471,114.72028" orientation="1,0" id="SvgjsSodipodi:guide1164" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="154.6693,104.36567" orientation="1,0" id="SvgjsSodipodi:guide1163" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="40.765196,69.076684" orientation="1,0" id="SvgjsSodipodi:guide1162" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="17.307314,90.012796" orientation="1,0" id="SvgjsSodipodi:guide1161" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="178.45516,78.096384" orientation="1,0" id="SvgjsSodipodi:guide1160" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="114.18738,154.23479" orientation="0,-1" id="SvgjsSodipodi:guide1159" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="115.0928,178.02065" orientation="0,-1" id="SvgjsSodipodi:guide1158" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="126.61803,16.544842" orientation="0,-1" id="SvgjsSodipodi:guide1157" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="107.01209,40.330695" orientation="0,-1" id="SvgjsSodipodi:guide1156" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="104.68642,-63.818053" orientation="0,-1" id="SvgjsSodipodi:guide1155" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="111.85964,-87.603905" orientation="0,-1" id="SvgjsSodipodi:guide1154" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="112.72049,-201.508" orientation="0,-1" id="SvgjsSodipodi:guide1153" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="117.90319,-225.29386" orientation="0,-1" id="SvgjsSodipodi:guide1152" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="108.84027,-110.76205" orientation="0,-1" id="SvgjsSodipodi:guide1151" inkscape:locked="false"></sodipodi:guide>
<sodipodi:guide position="100.562,-178.43168" orientation="0,-1" id="SvgjsSodipodi:guide1150" inkscape:locked="false"></sodipodi:guide>
</sodipodi:namedview>
<g inkscape:groupmode="layer" id="SvgjsG1149" inkscape:label="dark" style="display:inline" transform="translate(241.4509,5.6112637)">
<rect style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-linecap:square;stroke-miterlimit:2.3;paint-order:markers stroke fill" id="SvgjsRect1148" width="194.56551" height="194.56551" x="-241.0164" y="236.22746" inkscape:label="background"></rect>
<g style="display:inline;fill:#0062f8;fill-opacity:0.446602" transform="matrix(5.8876865,0,0,5.8876865,-568.27833,306.58873)" id="SvgjsG1147" inkscape:label="circles">
<circle style="display:inline;fill:#0062f8;fill-opacity:0.446602;stroke:none;stroke-width:302.362;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:161.197;stroke-opacity:1" id="SvgjsCircle1146" cx="72.107216" cy="4.5725055" r="9.6730785" inkscape:label="small"></circle>
<circle style="display:inline;fill:#0062f8;fill-opacity:0.446602;stroke:none;stroke-width:428.643;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:161.197;stroke-opacity:1" id="SvgjsCircle1145" cx="72.107216" cy="4.5725055" r="13.713011" inkscape:label="medium"></circle>
<circle style="display:inline;fill:#0062f8;fill-opacity:0.446602;stroke:none;stroke-width:516.481;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:161.197;stroke-opacity:1" id="SvgjsCircle1144" cx="72.107216" cy="4.5725055" r="16.523087" inkscape:label="big"></circle>
</g>
<g id="SvgjsG1143" style="display:inline;fill:#e6e6e6" inkscape:label="logo" transform="translate(-224.06334,241.83872)">
<path id="SvgjsPath1142" style="fill:#e6e6e6;stroke-width:355.553;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2.3;paint-order:fill markers stroke" d="m 80.326047,57.877579 a 26.752747,26.752747 0 0 0 -26.757729,26.75772 26.752747,26.752747 0 0 0 0.355777,4.325427 h 52.803915 a 26.752747,26.752747 0 0 0 0.35578,-4.325427 26.752747,26.752747 0 0 0 -26.757743,-26.75772 z" inkscape:label="app"></path>
<path inkscape:connector-curvature="0" style="display:inline;fill:#e6e6e6;stroke-width:4.15564" id="SvgjsPath1141" d="m 141.72941,87.511292 c -0.27036,-0.220024 -2.79675,-2.127682 -8.12017,-2.127682 -1.32983,0 -2.73855,0.124632 -4.19723,0.361433 -1.03052,-7.077067 -6.86091,-10.526234 -7.13107,-10.679982 l -1.43366,-0.831105 -0.94337,1.363054 c -1.17902,1.826063 -2.03773,3.839986 -2.53904,5.955013 -0.95583,4.039291 -0.3739,7.829232 1.67467,11.078959 -2.47673,1.375518 -6.4246,1.737047 -7.24746,1.74534 H 46.103913 c -1.716853,0.0068 -3.107653,1.395727 -3.116761,3.112612 1.179117,5.458916 1.156108,5.301996 3.063553,10.313696 2.264759,5.94255 5.630883,10.31844 10.010938,13.00715 4.907729,3.01284 12.89905,4.73743 21.925106,4.73743 4.222155,0 8.43597,-0.38262 12.175991,-1.10541 5.888584,-1.13446 11.24106,-3.08345 15.89952,-5.78046 4.07145,-2.35991 7.7342,-5.36307 10.84626,-8.89307 5.20282,-5.90104 6.55451,-6.94991 10.42156,-11.718366 0.31158,0.01438 0.61453,0.01917 0.91844,0.01917 5.69742,0 9.20476,-2.285601 11.13713,-4.197162 2.09862,-2.07782 2.8466,-4.147348 2.9256,-4.375894 l 0.40362,-1.196834 z" sodipodi:nodetypes="cscccccccccccsccccscccc" inkscape:label="wahle"></path>
</g>
<g id="SvgjsG1140" style="font-size:55.66px;line-height:1.25;font-family:Comfortaa;-inkscape-font-specification:Comfortaa;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;stroke-width:0.69575" aria-label="docker web" transform="matrix(6.7317198,0,0,6.7317198,-58.468582,-176.22368)">
<path style="font-size:12.9873px;fill:#cccccc" d="m 18.474617,38.619916 v -3.842921 h 1.166827 v 9.867304 h -1.166827 v -1.065365 q -0.367805,0.634146 -0.932194,0.944877 -0.558048,0.30439 -1.344389,0.30439 -1.287315,0 -2.099021,-1.027316 -0.805365,-1.027316 -0.805365,-2.70146 0,-1.674144 0.805365,-2.70146 0.811706,-1.027315 2.099021,-1.027315 0.786341,0 1.344389,0.310731 0.564389,0.30439 0.932194,0.938535 z m -3.976093,2.479509 q 0,1.287316 0.526341,2.022924 0.532682,0.729268 1.458535,0.729268 0.925852,0 1.458535,-0.729268 0.532682,-0.735608 0.532682,-2.022924 0,-1.287315 -0.532682,-2.016583 -0.532683,-0.735608 -1.458535,-0.735608 -0.925853,0 -1.458535,0.735608 -0.526341,0.729268 -0.526341,2.016583 z m 10.298524,-2.739508 q -0.938536,0 -1.483901,0.735608 -0.545365,0.729268 -0.545365,2.0039 0,1.274633 0.539024,2.010241 0.545365,0.729268 1.490242,0.729268 0.932193,0 1.477559,-0.735609 0.545365,-0.735609 0.545365,-2.0039 0,-1.261949 -0.545365,-1.997558 -0.545366,-0.74195 -1.477559,-0.74195 z m 0,-0.989267 q 1.521949,0 2.390728,0.989267 0.868779,0.989267 0.868779,2.739508 0,1.7439 -0.868779,2.739509 -0.868779,0.989267 -2.390728,0.989267 -1.528291,0 -2.39707,-0.989267 -0.862438,-0.995609 -0.862438,-2.739509 0,-1.750241 0.862438,-2.739508 0.868779,-0.989267 2.39707,-0.989267 z m 10.304865,0.443901 v 1.090731 q -0.494634,-0.272683 -0.995609,-0.405853 -0.494633,-0.139512 -1.00195,-0.139512 -1.13512,0 -1.762924,0.722925 -0.627804,0.716585 -0.627804,2.016583 0,1.299998 0.627804,2.022924 0.627804,0.716585 1.762924,0.716585 0.507317,0 1.00195,-0.133171 0.500975,-0.139512 0.995609,-0.412194 v 1.078047 q -0.488292,0.228292 -1.014633,0.342439 -0.52,0.114146 -1.109755,0.114146 -1.604388,0 -2.549265,-1.008292 -0.944877,-1.008291 -0.944877,-2.720484 0,-1.737558 0.951219,-2.733167 0.957559,-0.995608 2.619021,-0.995608 0.539023,0 1.052681,0.114146 0.513658,0.107805 0.995609,0.329755 z m 1.984875,-3.037556 h 1.173169 v 5.827797 l 3.481459,-3.062923 h 1.490242 l -3.766825,3.322922 3.925361,3.779508 h -1.521949 l -3.608288,-3.468776 v 3.468776 h -1.173169 z m 13.177543,6.024382 v 0.570731 H 44.89946 q 0.0761,1.204876 0.722925,1.839022 0.65317,0.627804 1.813657,0.627804 0.672194,0 1.299998,-0.164878 0.634145,-0.164878 1.255608,-0.494634 v 1.103414 q -0.627804,0.266341 -1.287315,0.405853 -0.659512,0.139512 -1.338047,0.139512 -1.69951,0 -2.695119,-0.989267 Q 43.6819,42.849667 43.6819,41.16284 q 0,-1.7439 0.938536,-2.764875 0.944876,-1.027315 2.542923,-1.027315 1.433169,0 2.2639,0.925852 0.837072,0.919511 0.837072,2.504875 z m -1.166828,-0.342439 q -0.01268,-0.957559 -0.539024,-1.52829 -0.519999,-0.570731 -1.382437,-0.570731 -0.976584,0 -1.566339,0.551706 -0.583414,0.551707 -0.672195,1.553657 z m 7.197552,-1.826339 q -0.196585,-0.114146 -0.431219,-0.164878 -0.228292,-0.05707 -0.507316,-0.05707 -0.989267,0 -1.521949,0.646829 -0.526341,0.640487 -0.526341,1.845363 v 3.741459 h -1.173169 v -7.10243 h 1.173169 v 1.103413 q 0.367804,-0.646828 0.95756,-0.95756 0.589755,-0.317072 1.433169,-0.317072 0.120487,0 0.266341,0.01902 0.145853,0.01268 0.323414,0.04439 z" id="SvgjsPath1139"></path>
<path style="font-size:12.9873px;fill:#e6e6e6" d="m 60.968708,37.541869 h 1.166828 l 1.458534,5.542432 1.452193,-5.542432 h 1.376096 l 1.458535,5.542432 1.452193,-5.542432 h 1.166828 l -1.858047,7.10243 h -1.376095 l -1.528291,-5.821456 -1.534632,5.821456 h -1.376096 z m 17.375586,3.259508 v 0.570731 h -5.364871 q 0.0761,1.204876 0.722926,1.839022 0.65317,0.627804 1.813656,0.627804 0.672195,0 1.299999,-0.164878 0.634145,-0.164878 1.255608,-0.494634 v 1.103414 q -0.627804,0.266341 -1.287316,0.405853 -0.659511,0.139512 -1.338047,0.139512 -1.69951,0 -2.695118,-0.989267 -0.989267,-0.989267 -0.989267,-2.676094 0,-1.7439 0.938535,-2.764875 0.944877,-1.027315 2.542924,-1.027315 1.433169,0 2.263899,0.925852 0.837072,0.919511 0.837072,2.504875 z m -1.166827,-0.342439 q -0.01268,-0.957559 -0.539024,-1.52829 -0.519999,-0.570731 -1.382437,-0.570731 -0.976584,0 -1.56634,0.551706 -0.583414,0.551707 -0.672194,1.553657 z m 8.180478,0.640487 q 0,-1.287315 -0.532683,-2.016583 -0.52634,-0.735608 -1.452193,-0.735608 -0.925852,0 -1.458535,0.735608 -0.52634,0.729268 -0.52634,2.016583 0,1.287316 0.52634,2.022924 0.532683,0.729268 1.458535,0.729268 0.925853,0 1.452193,-0.729268 0.532683,-0.735608 0.532683,-2.022924 z m -3.969751,-2.479509 q 0.367804,-0.634145 0.925852,-0.938535 0.56439,-0.310731 1.344389,-0.310731 1.293656,0 2.099021,1.027315 0.811706,1.027316 0.811706,2.70146 0,1.674144 -0.811706,2.70146 -0.805365,1.027316 -2.099021,1.027316 -0.779999,0 -1.344389,-0.30439 -0.558048,-0.310731 -0.925852,-0.944877 v 1.065365 h -1.173169 v -9.867304 h 1.173169 z" id="SvgjsPath1138"></path>
</g>
<g id="SvgjsG1137" style="font-size:55.66px;line-height:1.25;font-family:Comfortaa;-inkscape-font-specification:Comfortaa;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;stroke-width:0.69575" aria-label="docker web" transform="matrix(6.7324888,0,0,6.7324888,-58.478812,65.588292)">
<path style="font-size:12.9873px;fill:#cccccc" d="m 18.474617,38.619916 v -3.842921 h 1.166827 v 9.867304 h -1.166827 v -1.065365 q -0.367805,0.634146 -0.932194,0.944877 -0.558048,0.30439 -1.344389,0.30439 -1.287315,0 -2.099021,-1.027316 -0.805365,-1.027316 -0.805365,-2.70146 0,-1.674144 0.805365,-2.70146 0.811706,-1.027315 2.099021,-1.027315 0.786341,0 1.344389,0.310731 0.564389,0.30439 0.932194,0.938535 z m -3.976093,2.479509 q 0,1.287316 0.526341,2.022924 0.532682,0.729268 1.458535,0.729268 0.925852,0 1.458535,-0.729268 0.532682,-0.735608 0.532682,-2.022924 0,-1.287315 -0.532682,-2.016583 -0.532683,-0.735608 -1.458535,-0.735608 -0.925853,0 -1.458535,0.735608 -0.526341,0.729268 -0.526341,2.016583 z m 10.298524,-2.739508 q -0.938536,0 -1.483901,0.735608 -0.545365,0.729268 -0.545365,2.0039 0,1.274633 0.539024,2.010241 0.545365,0.729268 1.490242,0.729268 0.932193,0 1.477559,-0.735609 0.545365,-0.735609 0.545365,-2.0039 0,-1.261949 -0.545365,-1.997558 -0.545366,-0.74195 -1.477559,-0.74195 z m 0,-0.989267 q 1.521949,0 2.390728,0.989267 0.868779,0.989267 0.868779,2.739508 0,1.7439 -0.868779,2.739509 -0.868779,0.989267 -2.390728,0.989267 -1.528291,0 -2.39707,-0.989267 -0.862438,-0.995609 -0.862438,-2.739509 0,-1.750241 0.862438,-2.739508 0.868779,-0.989267 2.39707,-0.989267 z m 10.304865,0.443901 v 1.090731 q -0.494634,-0.272683 -0.995609,-0.405853 -0.494633,-0.139512 -1.00195,-0.139512 -1.13512,0 -1.762924,0.722925 -0.627804,0.716585 -0.627804,2.016583 0,1.299998 0.627804,2.022924 0.627804,0.716585 1.762924,0.716585 0.507317,0 1.00195,-0.133171 0.500975,-0.139512 0.995609,-0.412194 v 1.078047 q -0.488292,0.228292 -1.014633,0.342439 -0.52,0.114146 -1.109755,0.114146 -1.604388,0 -2.549265,-1.008292 -0.944877,-1.008291 -0.944877,-2.720484 0,-1.737558 0.951219,-2.733167 0.957559,-0.995608 2.619021,-0.995608 0.539023,0 1.052681,0.114146 0.513658,0.107805 0.995609,0.329755 z m 1.984875,-3.037556 h 1.173169 v 5.827797 l 3.481459,-3.062923 h 1.490242 l -3.766825,3.322922 3.925361,3.779508 h -1.521949 l -3.608288,-3.468776 v 3.468776 h -1.173169 z m 13.177543,6.024382 v 0.570731 H 44.89946 q 0.0761,1.204876 0.722925,1.839022 0.65317,0.627804 1.813657,0.627804 0.672194,0 1.299998,-0.164878 0.634145,-0.164878 1.255608,-0.494634 v 1.103414 q -0.627804,0.266341 -1.287315,0.405853 -0.659512,0.139512 -1.338047,0.139512 -1.69951,0 -2.695119,-0.989267 Q 43.6819,42.849667 43.6819,41.16284 q 0,-1.7439 0.938536,-2.764875 0.944876,-1.027315 2.542923,-1.027315 1.433169,0 2.2639,0.925852 0.837072,0.919511 0.837072,2.504875 z m -1.166828,-0.342439 q -0.01268,-0.957559 -0.539024,-1.52829 -0.519999,-0.570731 -1.382437,-0.570731 -0.976584,0 -1.566339,0.551706 -0.583414,0.551707 -0.672195,1.553657 z m 7.197552,-1.826339 q -0.196585,-0.114146 -0.431219,-0.164878 -0.228292,-0.05707 -0.507316,-0.05707 -0.989267,0 -1.521949,0.646829 -0.526341,0.640487 -0.526341,1.845363 v 3.741459 h -1.173169 v -7.10243 h 1.173169 v 1.103413 q 0.367804,-0.646828 0.95756,-0.95756 0.589755,-0.317072 1.433169,-0.317072 0.120487,0 0.266341,0.01902 0.145853,0.01268 0.323414,0.04439 z" id="SvgjsPath1136"></path>
<path style="font-size:12.9873px;fill:#e6e6e6" d="m 60.968708,37.541869 h 1.166828 l 1.458534,5.542432 1.452193,-5.542432 h 1.376096 l 1.458535,5.542432 1.452193,-5.542432 h 1.166828 l -1.858047,7.10243 h -1.376095 l -1.528291,-5.821456 -1.534632,5.821456 h -1.376096 z m 17.375586,3.259508 v 0.570731 h -5.364871 q 0.0761,1.204876 0.722926,1.839022 0.65317,0.627804 1.813656,0.627804 0.672195,0 1.299999,-0.164878 0.634145,-0.164878 1.255608,-0.494634 v 1.103414 q -0.627804,0.266341 -1.287316,0.405853 -0.659511,0.139512 -1.338047,0.139512 -1.69951,0 -2.695118,-0.989267 -0.989267,-0.989267 -0.989267,-2.676094 0,-1.7439 0.938535,-2.764875 0.944877,-1.027315 2.542924,-1.027315 1.433169,0 2.263899,0.925852 0.837072,0.919511 0.837072,2.504875 z m -1.166827,-0.342439 q -0.01268,-0.957559 -0.539024,-1.52829 -0.519999,-0.570731 -1.382437,-0.570731 -0.976584,0 -1.56634,0.551706 -0.583414,0.551707 -0.672194,1.553657 z m 8.180478,0.640487 q 0,-1.287315 -0.532683,-2.016583 -0.52634,-0.735608 -1.452193,-0.735608 -0.925852,0 -1.458535,0.735608 -0.52634,0.729268 -0.52634,2.016583 0,1.287316 0.52634,2.022924 0.532683,0.729268 1.458535,0.729268 0.925853,0 1.452193,-0.729268 0.532683,-0.735608 0.532683,-2.022924 z m -3.969751,-2.479509 q 0.367804,-0.634145 0.925852,-0.938535 0.56439,-0.310731 1.344389,-0.310731 1.293656,0 2.099021,1.027315 0.811706,1.027316 0.811706,2.70146 0,1.674144 -0.811706,2.70146 -0.805365,1.027316 -2.099021,1.027316 -0.779999,0 -1.344389,-0.30439 -0.558048,-0.310731 -0.925852,-0.944877 v 1.065365 h -1.173169 v -9.867304 h 1.173169 z" id="SvgjsPath1135"></path>
</g>
</g>
<g inkscape:groupmode="layer" id="SvgjsG1134" inkscape:label="bright" style="fill:#ffffff;display:inline" transform="translate(16.658678,8.3220275)">
<g style="display:inline;fill:#0062f8;fill-opacity:0.446602" transform="matrix(5.8876865,0,0,5.8876865,-343.48611,62.039248)" id="SvgjsG1133" inkscape:label="circles">
<circle style="display:inline;fill:#0062f8;fill-opacity:0.446602;stroke:none;stroke-width:302.362;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:161.197;stroke-opacity:1" id="SvgjsCircle1132" cx="72.107216" cy="4.5725055" r="9.6730785" inkscape:label="small"></circle>
<circle style="display:inline;fill:#0062f8;fill-opacity:0.446602;stroke:none;stroke-width:428.643;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:161.197;stroke-opacity:1" id="SvgjsCircle1131" cx="72.107216" cy="4.5725055" r="13.713011" inkscape:label="medium"></circle>
<circle style="display:inline;fill:#0062f8;fill-opacity:0.446602;stroke:none;stroke-width:516.481;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:161.197;stroke-opacity:1" id="SvgjsCircle1130" cx="72.107216" cy="4.5725055" r="16.523087" inkscape:label="big"></circle>
</g>
<g id="SvgjsG1129" inkscape:label="logo">
<path id="SvgjsPath1128" style="fill:#ffffff;stroke-width:355.553;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2.3;paint-order:fill markers stroke" d="m 81.054927,55.166816 a 26.752747,26.752747 0 0 0 -26.757729,26.75772 26.752747,26.752747 0 0 0 0.355777,4.325427 h 52.803915 a 26.752747,26.752747 0 0 0 0.35578,-4.325427 26.752747,26.752747 0 0 0 -26.757743,-26.75772 z" inkscape:label="app"></path>
<path inkscape:connector-curvature="0" style="display:inline;fill:#ffffff;stroke-width:4.15564" id="SvgjsPath1127" d="m 142.45829,84.800529 c -0.27036,-0.220024 -2.79675,-2.127682 -8.12017,-2.127682 -1.32983,0 -2.73855,0.124632 -4.19723,0.361433 -1.03052,-7.077067 -6.86091,-10.526234 -7.13107,-10.679982 l -1.43366,-0.831105 -0.94337,1.363054 c -1.17902,1.826063 -2.03773,3.839986 -2.53904,5.955013 -0.95583,4.039291 -0.3739,7.829232 1.67467,11.078959 -2.47673,1.375518 -6.4246,1.737047 -7.24746,1.74534 H 46.832793 c -1.716853,0.0068 -3.107653,1.395727 -3.116761,3.112612 1.179117,5.458909 1.156108,5.301989 3.063553,10.313689 2.264759,5.94255 5.630883,10.31844 10.010938,13.00715 4.907729,3.01284 12.89905,4.73743 21.925106,4.73743 4.222155,0 8.43597,-0.38262 12.175991,-1.10541 5.888584,-1.13446 11.24106,-3.08345 15.89952,-5.78046 4.07145,-2.35991 7.7342,-5.36307 10.84626,-8.89307 5.20282,-5.90104 6.55451,-6.94991 10.42156,-11.718359 0.31158,0.01438 0.61453,0.01917 0.91844,0.01917 5.69742,0 9.20476,-2.285601 11.13713,-4.197162 2.09862,-2.07782 2.8466,-4.147348 2.9256,-4.375894 l 0.40362,-1.196834 z" sodipodi:nodetypes="cscccccccccccsccccscccc" inkscape:label="wahle"></path>
</g>
</g>
</svg><style>@media (prefers-color-scheme: light) { :root { filter: none; } }
@media (prefers-color-scheme: dark) { :root { filter: none; } }
</style></svg>

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,21 @@
{
"name": "docker-web",
"short_name": "docker-web",
"icons": [
{
"src": "/web-app-manifest-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/web-app-manifest-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

42
app/pages/index.vue Normal file
View File

@@ -0,0 +1,42 @@
<template>
<div class="mx-6">
<header class="h-screen flex flex-col justify-center">
<nav class="fixed right-0 top-0 p-2 z-50">
<a
title="Go to docker-web GitHub repo"
href="https://github.com/docker-web/docker-web"
target="_blank"
>
<SvgGithub class="bg-white rounded-full shadow-lg hover:scale-105" />
</a>
</nav>
<HeroTitle client:visible />
<HeroButtons client:visible />
</header>
<main class="-mt-20">
<Demo />
<Disclaimer />
<!-- <Create /> -->
<BackupRestore />
<ApplicationsList />
</main>
</div>
</template>
<style>
.docker-web-section {
@apply flex flex-col md:flex-row items-center justify-center mb-28;
}
.title {
@apply text-3xl text-center mb-10 uppercase text-transparent bg-clip-text bg-gradient-to-r from-violet-900 to-blue-500;
}
.app {
@apply bg-black bg-opacity-10 w-20 h-20 p-4 flex-wrap cursor-pointer inline-block rounded-xl transition-all;
}
.app--demo {
@apply bg-black bg-opacity-10 w-20 h-20 p-4 flex-wrap cursor-pointer inline-block transition-all;
}
.app--backup {
@apply bg-black bg-opacity-10 w-20 h-20 p-4 flex-wrap cursor-pointer inline-block transition-all;
}
</style>

7
app/types/todo.d.ts vendored Normal file
View File

@@ -0,0 +1,7 @@
export default interface Todo {
id: string
content: string
isDone: boolean
createdAt: date
updatedAt: date
}