web: move out of public for bundling

This commit is contained in:
Mark Joshwel 2025-02-02 04:43:06 +08:00
parent 00349f1b85
commit 5b55487d0b
19 changed files with 328 additions and 1 deletions

57
Web/css/styles.src.css Normal file
View file

@ -0,0 +1,57 @@
@import "./franken-core.css";
/* @import "./franken-utilities.css"; */
@import "tailwindcss";
/* latin-ext */
@font-face {
font-family: 'Geist';
font-style: normal;
font-weight: 100 900;
font-display: swap;
src: url(https://fonts.gstatic.com/s/geist/v1/gyByhwUxId8gMEwSGFWNPoTcZY7pVQ.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Geist';
font-style: normal;
font-weight: 100 900;
font-display: swap;
src: url(https://fonts.gstatic.com/s/geist/v1/gyByhwUxId8gMEwcGFWNPoTcZY4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
font-family: 'Geist Mono';
font-style: normal;
font-weight: 100 900;
font-display: swap;
src: url(https://fonts.gstatic.com/s/geistmono/v1/or3nQ6H-1_WfwkMZI_qYFrkdmhHijks9bNn0.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Geist Mono';
font-style: normal;
font-weight: 100 900;
font-display: swap;
src: url(https://fonts.gstatic.com/s/geistmono/v1/or3nQ6H-1_WfwkMZI_qYFrcdmhHijks9bA.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@theme {
--font-sans: "Geist", sans-serif;
--font-mono: "'Geist Mono'", monospace;
}
:root {
font-family: Geist, sans-serif;
font-feature-settings: "liga" 1, "calt" 1; /* fix for Chrome */
}
@media (max-width: 768px) {
.uk-subnav > * > :first-child {
padding-left: 0.5rem !important;
padding-right: 0.5rem !important;
}
}

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

224
Web/index.html Normal file
View file

@ -0,0 +1,224 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Echoes Behind Closed Doors</title>
<!-- favicons -->
<link
rel="apple-touch-icon"
sizes="180x180"
href="/png/apple-touch-icon.png"
/>
<link rel="icon" type="image/x-icon" href="/ico/favicon.ico" />
<link
rel="icon"
type="image/png"
sizes="32x32"
href="/png/favicon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/png/favicon-16x16.png"
/>
<link rel="manifest" href="/site.webmanifest" />
<!-- TODO: social share -->
<!-- franken-ui -->
<link rel="stylesheet" href="/css/styles.css" />
<script
type="module"
src="/js/franken-ui.js"
>
</head>
<body class="bg-background text-foreground">
<main>
<section
id="landing-hero"
class="uk-inline h-[90vh] h-[90svh] overflow-hidden"
>
<!-- hero image -->
<img
class="!h-[90vh] !h-[90svh] w-screen object-cover"
src="https://files.catbox.moe/o25s1k.JPG"
alt=""
/>
<!-- <video
class="!h-[90vh] !h-[90svh] w-screen object-cover"
src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
loop
muted
playsinline
></video> -->
<!-- navbar -->
<header
class="uk-position-top !uk-position-z-index p-4 flex justify-between !bg-[hsl(var(--muted))]/75 !backdrop-blur-md text-muted-foreground"
data-uk-sticky="position:top"
>
<div class="flex flex-row gap-2">
<img src="/png/logo-icon.png" alt="wirm logo" class="!h-[2.5rem]" />
<img
src="/png/logo-wordmark-blue.png"
alt="wirm wordmark"
class="!h-[2.5rem]"
/>
</div>
<nav class="flex">
<ul class="uk-subnav uk-subnav-primary">
<li class="uk-active"><a href="/">About</a></li>
<li>
<a href>
<span class="mr-2">Account</span>
<uk-icon icon="chevron-down"></uk-icon>
</a>
<div data-uk-dropdown="mode: click">
<ul class="uk-dropdown-nav uk-nav">
<li id="nav-auth-logIn">
<a href="/login">Log In</a>
</li>
<li id="nav-auth-signUp">
<a href="/signup">Sign Up</a>
</li>
<li id="nav-auth-logOut">
<a href="/profile?logOut=true">Log Out</a>
</li>
<li id="nav-auth-profile">
<a href="/profile">Profile</a>
</li>
</ul>
</div>
</li>
<li><a href="/booth">Manage Booth</a></li>
</ul>
</nav>
</header>
<!-- hero left text: game name -->
<div
class="uk-position-bottom-left uk-position-md md:uk-position-lg md:w-[30vw] text-[hsl(var(--background))] dark:text-[hsl(var(--foreground))]"
>
<h1 class="uk-h1 !text-6xl">Echoes Behind Closed Doors</h1>
<p class="uk-text-lead mt-4">Potential Subtitle (TODO)</p>
</div>
<!-- hero right text: registration qr code -->
<figure
class="uk-position-bottom-right uk-position-md md:uk-position-lg max-md:hidden w-[25vw] w-[25svw] h-[31vw] h-[31svw] rounded-2xl bg-[hsl(var(--foreground))]/70 text-[hsl(var(--background))] dark:bg-[hsl(var(--background))]/60 dark:text-[hsl(var(--foreground))] !backdrop-blur-lg flex flex-col justify-center items-center text-center p-4"
>
<div
id="hero-svg"
class="uk-placeholder min-w-fit h-auto aspect-square !rounded-md overflow-hidden"
>
<div class="uk-position-center" data-uk-spinner></div>
</div>
<figcaption class="uk-paragraph fit-content">
<span class="font-bold text-xl">Scan to Register</span>
<br />
or, scroll down for more info
</figcaption>
</figure>
</section>
<section class="uk-container my-20">
<h2 class="uk-h2">Title</h2>
<p class="uk-text-lead mt-4">Subtitle</p>
<p class="uk-paragraph">
Blowy red vixens fight for
<a class="uk-link" href="#">a quick jump.</a>
</p>
<blockquote class="uk-blockquote">
"Sphinx of black quartz, judge my vow!"
</blockquote>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
<p class="uk-paragraph">
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ipsam qui,
eligendi similique aspernatur est reiciendis iusto sunt laudantium
repudiandae quos blanditiis. Asperiores aspernatur, minus quae
inventore laborum voluptas fugit rem.
</p>
</section>
</main>
<script type="application/javascript" src="/js/landing-qrcode.js"></script>
</body>
</html>

17
Web/js/firebase.js Normal file
View file

@ -0,0 +1,17 @@
import { initializeApp } from "firebase/app";
import { getDatabase } from "firebase/database";
import { getAuth } from "firebase/auth";
const firebaseConfig = {
apiKey: "AIzaSyARm-eSymd2Q3AyxJXiAiiUzsXGmc6T72I",
authDomain: "echoesbehindcloseddoors.firebaseapp.com",
databaseURL: "https://echoesbehindcloseddoors-default-rtdb.asia-southeast1.firebasedatabase.app",
projectId: "echoesbehindcloseddoors",
storageBucket: "echoesbehindcloseddoors.firebasestorage.app",
messagingSenderId: "905742343227",
appId: "1:905742343227:web:19d04f77371ef1952c901e"
};
export const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const database = getDatabase(app);

23
Web/js/franken-ui.js Normal file
View file

@ -0,0 +1,23 @@
import "franken-ui/js/core.iife";
import "franken-ui/js/icon.iife";
const htmlElement = document.documentElement;
const __FRANKEN__ = JSON.parse(
localStorage.getItem("__FRANKEN__") || "{}"
);
if (
__FRANKEN__.mode === "dark" ||
(!__FRANKEN__.mode &&
window.matchMedia("(prefers-color-scheme: dark)").matches)
) {
htmlElement.classList.add("dark");
} else {
htmlElement.classList.remove("dark");
}
htmlElement.classList.add(__FRANKEN__.theme || "uk-theme-blue");
htmlElement.classList.add(__FRANKEN__.radii || "uk-radii-md");
htmlElement.classList.add(__FRANKEN__.shadows || "uk-shadows-sm");
htmlElement.classList.add(__FRANKEN__.font || "uk-font-sm");

View file

@ -21,6 +21,8 @@
* Software.
*/
import { qrcodegen } from "./nayuki-qrcodegen-v1.8.0.js";
function toSvgString(qr, border, lightColor, darkColor) {
if (border < 0) throw new RangeError("Border must be non-negative");
let parts = [];
@ -48,3 +50,7 @@ function generateQrCode(text) {
"#000000" // dark
);
}
const svg = generateQrCode(window.location.origin + "/signup.html");
document.getElementById("hero-svg").innerHTML = svg;
document.getElementById("hero-svg").classList.remove("uk-placeholder");

View file

@ -21,7 +21,7 @@
* Software.
*/
"use strict";
var qrcodegen;
export var qrcodegen;
(function (qrcodegen) {
/*---- QR Code symbol class ----*/
/*