landing page

This commit is contained in:
Branden J Brown 2024-01-28 10:42:05 -06:00
parent 14b581c748
commit 492c4199bb
6 changed files with 185 additions and 81 deletions

13
site/components.d.ts vendored Normal file
View File

@ -0,0 +1,13 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
export {}
declare module 'vue' {
export interface GlobalComponents {
HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
TheLanding: typeof import('./src/components/TheLanding.vue')['default']
}
}

89
site/package-lock.json generated
View File

@ -9,6 +9,7 @@
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@mdi/font": "7.0.96", "@mdi/font": "7.0.96",
"@vueuse/core": "^10.7.2",
"roboto-fontface": "*", "roboto-fontface": "*",
"vue": "^3.3.0", "vue": "^3.3.0",
"vuetify": "^3.0.0" "vuetify": "^3.0.0"
@ -661,6 +662,11 @@
"undici-types": "~5.26.4" "undici-types": "~5.26.4"
} }
}, },
"node_modules/@types/web-bluetooth": {
"version": "0.0.20",
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz",
"integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow=="
},
"node_modules/@vitejs/plugin-vue": { "node_modules/@vitejs/plugin-vue": {
"version": "4.6.2", "version": "4.6.2",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
@ -830,6 +836,89 @@
"vuetify": "^3.0.0" "vuetify": "^3.0.0"
} }
}, },
"node_modules/@vueuse/core": {
"version": "10.7.2",
"resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.2.tgz",
"integrity": "sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==",
"dependencies": {
"@types/web-bluetooth": "^0.0.20",
"@vueuse/metadata": "10.7.2",
"@vueuse/shared": "10.7.2",
"vue-demi": ">=0.14.6"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vueuse/core/node_modules/vue-demi": {
"version": "0.14.6",
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
"integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/@vueuse/metadata": {
"version": "10.7.2",
"resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.2.tgz",
"integrity": "sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vueuse/shared": {
"version": "10.7.2",
"resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.2.tgz",
"integrity": "sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==",
"dependencies": {
"vue-demi": ">=0.14.6"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vueuse/shared/node_modules/vue-demi": {
"version": "0.14.6",
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
"integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/acorn": { "node_modules/acorn": {
"version": "8.11.3", "version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",

View File

@ -8,6 +8,7 @@
}, },
"dependencies": { "dependencies": {
"@mdi/font": "7.0.96", "@mdi/font": "7.0.96",
"@vueuse/core": "^10.7.2",
"roboto-fontface": "*", "roboto-fontface": "*",
"vue": "^3.3.0", "vue": "^3.3.0",
"vuetify": "^3.0.0" "vuetify": "^3.0.0"

View File

@ -1,11 +1,20 @@
<template> <template>
<v-app> <v-app :theme="theme">
<v-main> <v-main>
<HelloWorld /> <TheLanding />
</v-main> </v-main>
</v-app> </v-app>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
// import {
useDark,
useToggle,
} from '@vueuse/core';
import { computed } from 'vue';
const dark = useDark();
const toggleDark = useToggle(dark);
const theme = computed(() => dark.value ? 'dark' : 'light')
</script> </script>

View File

@ -1,75 +0,0 @@
<template>
<v-container class="fill-height">
<v-responsive class="align-center text-center fill-height">
<v-img height="300" src="@/assets/logo.svg" />
<div class="text-body-2 font-weight-light mb-n1">Welcome to</div>
<h1 class="text-h2 font-weight-bold">Vuetify</h1>
<div class="py-14" />
<v-row class="d-flex align-center justify-center">
<v-col cols="auto">
<v-btn
href="https://vuetifyjs.com/components/all/"
min-width="164"
rel="noopener noreferrer"
target="_blank"
variant="text"
>
<v-icon
icon="mdi-view-dashboard"
size="large"
start
/>
Components
</v-btn>
</v-col>
<v-col cols="auto">
<v-btn
color="primary"
href="https://vuetifyjs.com/introduction/why-vuetify/#feature-guides"
min-width="228"
rel="noopener noreferrer"
size="x-large"
target="_blank"
variant="flat"
>
<v-icon
icon="mdi-speedometer"
size="large"
start
/>
Get Started
</v-btn>
</v-col>
<v-col cols="auto">
<v-btn
href="https://community.vuetifyjs.com/"
min-width="164"
rel="noopener noreferrer"
target="_blank"
variant="text"
>
<v-icon
icon="mdi-account-group"
size="large"
start
/>
Community
</v-btn>
</v-col>
</v-row>
</v-responsive>
</v-container>
</template>
<script setup lang="ts">
//
</script>

View File

@ -0,0 +1,67 @@
<template>
<v-container>
<v-row>
<v-col>
<v-sheet rounded :elevation="5" class="pa-4">
This is an experimental PvP reimplementation of <a href="https://mikeklubnika.itch.io/buckshot-roulette" target="_blank">Buckshot Roulette, a computer game by Mike Klubnika</a>.
Please play here only if you've bought and played the original.
</v-sheet>
</v-col>
</v-row>
<v-row>
<v-col>
<v-sheet rounded :elevation="5" class="pa-4">
There are no niceties in this implementation:
<ul>
<li>No user accounts. Functionality is tied to your IP address for now, and things will probably
break if there are multiple players on the same local network.</li>
<li>No MMR. Matching is done purely on a first-come, first-served basis.</li>
<li>No saves. If you disconnect, or the server goes down for any reason, everything is gone.</li>
<li>No pretty. Buckshot Roulette is an incredibly stylish and atmospheric game; this version is not.
</li>
</ul>
</v-sheet>
</v-col>
</v-row>
<v-row>
<v-col>
<v-sheet rounded :elevation="5" class="pa-4">
Similarly, this server is not intended to be robust.
It runs on a hand-me-down PC sitting on the floor of my living room, the same computer that runs <a href="https://twitch.tv/robotisbroken" target="_blank">RobotIsBroken</a>.
Please don't DoS me. It won't be a challenge, and all it will do is rob people of fun.
</v-sheet>
</v-col>
</v-row>
<v-row>
<v-col>
<v-sheet rounded :elevation="5" class="pa-4">
<v-row>
<v-col>
In order to provide the functionality of this service, I must collect and process your IP
address,
which is identifying information.
I do not permanently store it, and I do not use it for any other purpose.
However, I still feel it is appropriate to explicitly require your consent to use it.
Clicking this button saves a cookie on your device which tells the server it's ok to handle your
information as necessary to provide the service.
</v-col>
</v-row>
<v-row>
<v-col width="auto"></v-col>
<v-col cols="auto">
<v-btn color="secondary">TODO(zeph): actually implement this</v-btn>
</v-col>
<v-col width="auto"></v-col>
</v-row>
</v-sheet>
</v-col>
</v-row>
<v-row>
<v-col width="auto"></v-col>
<v-col cols="auto">
<v-btn color="primary">Play</v-btn>
</v-col>
<v-col width="auto"></v-col>
</v-row>
</v-container>
</template>