Navigation bar and empty login page

- Added nav bar;
- Added an empty login page
- Fixed .gitignore, which had been overwritten on previous commit.
This commit is contained in:
Rodrigo Pinto 2024-11-19 01:46:59 -03:00
commit c8a02fb468
20 changed files with 232 additions and 1308 deletions

8
.gitignore vendored
View file

@ -1,9 +1,14 @@
node_modules node_modules
introducer
storage0
storage1
webapp
# Output # Output
.output .output
.vercel .vercel
/.svelte-kit .svelte-kit
packages/.svelte-kit
/build /build
# OS # OS
@ -11,6 +16,7 @@ node_modules
Thumbs.db Thumbs.db
# Env # Env
.venv
.env .env
.env.* .env.*
!.env.example !.env.example

View file

@ -1,263 +0,0 @@
// this file is generated — do not edit it
/// <reference types="@sveltejs/kit" />
/**
* Environment variables [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env`. Like [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private), this module cannot be imported into client-side code. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://svelte.dev/docs/kit/configuration#env) (if configured).
*
* _Unlike_ [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private), the values exported from this module are statically injected into your bundle at build time, enabling optimisations like dead code elimination.
*
* ```ts
* import { API_KEY } from '$env/static/private';
* ```
*
* Note that all environment variables referenced in your code should be declared (for example in an `.env` file), even if they don't have a value until the app is deployed:
*
* ```
* MY_FEATURE_FLAG=""
* ```
*
* You can override `.env` values from the command line like so:
*
* ```bash
* MY_FEATURE_FLAG="enabled" npm run dev
* ```
*/
declare module '$env/static/private' {
export const NVM_INC: string;
export const COREPACK_ROOT: string;
export const npm_package_devDependencies_prettier: string;
export const TERM_PROGRAM: string;
export const npm_package_devDependencies_eslint_plugin_svelte: string;
export const NODE: string;
export const NVM_CD_FLAGS: string;
export const npm_package_devDependencies_prettier_plugin_svelte: string;
export const INIT_CWD: string;
export const SHELL: string;
export const TERM: string;
export const npm_package_devDependencies_vite: string;
export const TMPDIR: string;
export const HOMEBREW_REPOSITORY: string;
export const RIPGREP_CONFIG_PATH: string;
export const npm_package_scripts_lint: string;
export const TERM_PROGRAM_VERSION: string;
export const npm_package_scripts_dev: string;
export const TERM_SESSION_ID: string;
export const npm_package_devDependencies__sveltejs_kit: string;
export const npm_config_registry: string;
export const ZSH: string;
export const npm_package_devDependencies_globals: string;
export const USER: string;
export const NVM_DIR: string;
export const LS_COLORS: string;
export const COMMAND_MODE: string;
export const npm_package_devDependencies_mdsvex: string;
export const PNPM_SCRIPT_SRC_DIR: string;
export const SSH_AUTH_SOCK: string;
export const __CF_USER_TEXT_ENCODING: string;
export const npm_package_devDependencies_eslint: string;
export const TERM_FEATURES: string;
export const npm_execpath: string;
export const PAGER: string;
export const FZF_DEFAULT_OPTS: string;
export const npm_package_devDependencies_svelte: string;
export const LSCOLORS: string;
export const npm_config_frozen_lockfile: string;
export const PATH: string;
export const TERMINFO_DIRS: string;
export const FZF_COMPLETION_TRIGGER: string;
export const npm_config_engine_strict: string;
export const __CFBundleIdentifier: string;
export const PWD: string;
export const npm_command: string;
export const JAVA_HOME: string;
export const npm_package_scripts_preview: string;
export const EDITOR: string;
export const npm_lifecycle_event: string;
export const LANG: string;
export const npm_package_name: string;
export const npm_package_devDependencies__sveltejs_vite_plugin_svelte: string;
export const ITERM_PROFILE: string;
export const NODE_PATH: string;
export const npm_package_scripts_build: string;
export const XPC_FLAGS: string;
export const npm_package_devDependencies_vitest: string;
export const FZF_COMPLETION_OPTS: string;
export const NVM_LAZY_LOAD: string;
export const npm_package_devDependencies_eslint_config_prettier: string;
export const npm_config_node_gyp: string;
export const XPC_SERVICE_NAME: string;
export const npm_package_version: string;
export const npm_package_devDependencies__sveltejs_adapter_auto: string;
export const COLORFGBG: string;
export const HOME: string;
export const SHLVL: string;
export const PYENV_SHELL: string;
export const npm_package_type: string;
export const npm_package_scripts_test: string;
export const LC_TERMINAL_VERSION: string;
export const HOMEBREW_PREFIX: string;
export const ITERM_SESSION_ID: string;
export const LOGNAME: string;
export const LESS: string;
export const npm_package_scripts_format: string;
export const VISUAL: string;
export const npm_lifecycle_script: string;
export const FZF_DEFAULT_COMMAND: string;
export const NVM_BIN: string;
export const npm_config_user_agent: string;
export const HOMEBREW_CELLAR: string;
export const INFOPATH: string;
export const DISPLAY: string;
export const LC_TERMINAL: string;
export const npm_package_devDependencies__types_eslint: string;
export const COLORTERM: string;
export const npm_package_scripts_test_unit: string;
export const npm_node_execpath: string;
export const NODE_ENV: string;
}
/**
* Similar to [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private), except that it only includes environment variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code.
*
* Values are replaced statically at build time.
*
* ```ts
* import { PUBLIC_BASE_URL } from '$env/static/public';
* ```
*/
declare module '$env/static/public' {
}
/**
* This module provides access to runtime environment variables, as defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/main/packages/adapter-node) (or running [`vite preview`](https://svelte.dev/docs/kit/cli)), this is equivalent to `process.env`. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://svelte.dev/docs/kit/configuration#env) (if configured).
*
* This module cannot be imported into client-side code.
*
* Dynamic environment variables cannot be used during prerendering.
*
* ```ts
* import { env } from '$env/dynamic/private';
* console.log(env.DEPLOYMENT_SPECIFIC_VARIABLE);
* ```
*
* > In `dev`, `$env/dynamic` always includes environment variables from `.env`. In `prod`, this behavior will depend on your adapter.
*/
declare module '$env/dynamic/private' {
export const env: {
NVM_INC: string;
COREPACK_ROOT: string;
npm_package_devDependencies_prettier: string;
TERM_PROGRAM: string;
npm_package_devDependencies_eslint_plugin_svelte: string;
NODE: string;
NVM_CD_FLAGS: string;
npm_package_devDependencies_prettier_plugin_svelte: string;
INIT_CWD: string;
SHELL: string;
TERM: string;
npm_package_devDependencies_vite: string;
TMPDIR: string;
HOMEBREW_REPOSITORY: string;
RIPGREP_CONFIG_PATH: string;
npm_package_scripts_lint: string;
TERM_PROGRAM_VERSION: string;
npm_package_scripts_dev: string;
TERM_SESSION_ID: string;
npm_package_devDependencies__sveltejs_kit: string;
npm_config_registry: string;
ZSH: string;
npm_package_devDependencies_globals: string;
USER: string;
NVM_DIR: string;
LS_COLORS: string;
COMMAND_MODE: string;
npm_package_devDependencies_mdsvex: string;
PNPM_SCRIPT_SRC_DIR: string;
SSH_AUTH_SOCK: string;
__CF_USER_TEXT_ENCODING: string;
npm_package_devDependencies_eslint: string;
TERM_FEATURES: string;
npm_execpath: string;
PAGER: string;
FZF_DEFAULT_OPTS: string;
npm_package_devDependencies_svelte: string;
LSCOLORS: string;
npm_config_frozen_lockfile: string;
PATH: string;
TERMINFO_DIRS: string;
FZF_COMPLETION_TRIGGER: string;
npm_config_engine_strict: string;
__CFBundleIdentifier: string;
PWD: string;
npm_command: string;
JAVA_HOME: string;
npm_package_scripts_preview: string;
EDITOR: string;
npm_lifecycle_event: string;
LANG: string;
npm_package_name: string;
npm_package_devDependencies__sveltejs_vite_plugin_svelte: string;
ITERM_PROFILE: string;
NODE_PATH: string;
npm_package_scripts_build: string;
XPC_FLAGS: string;
npm_package_devDependencies_vitest: string;
FZF_COMPLETION_OPTS: string;
NVM_LAZY_LOAD: string;
npm_package_devDependencies_eslint_config_prettier: string;
npm_config_node_gyp: string;
XPC_SERVICE_NAME: string;
npm_package_version: string;
npm_package_devDependencies__sveltejs_adapter_auto: string;
COLORFGBG: string;
HOME: string;
SHLVL: string;
PYENV_SHELL: string;
npm_package_type: string;
npm_package_scripts_test: string;
LC_TERMINAL_VERSION: string;
HOMEBREW_PREFIX: string;
ITERM_SESSION_ID: string;
LOGNAME: string;
LESS: string;
npm_package_scripts_format: string;
VISUAL: string;
npm_lifecycle_script: string;
FZF_DEFAULT_COMMAND: string;
NVM_BIN: string;
npm_config_user_agent: string;
HOMEBREW_CELLAR: string;
INFOPATH: string;
DISPLAY: string;
LC_TERMINAL: string;
npm_package_devDependencies__types_eslint: string;
COLORTERM: string;
npm_package_scripts_test_unit: string;
npm_node_execpath: string;
NODE_ENV: string;
[key: `PUBLIC_${string}`]: undefined;
[key: `${string}`]: string | undefined;
}
}
/**
* Similar to [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private), but only includes variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code.
*
* Note that public dynamic environment variables must all be sent from the server to the client, causing larger network requests when possible, use `$env/static/public` instead.
*
* Dynamic environment variables cannot be used during prerendering.
*
* ```ts
* import { env } from '$env/dynamic/public';
* console.log(env.PUBLIC_DEPLOYMENT_SPECIFIC_VARIABLE);
* ```
*/
declare module '$env/dynamic/public' {
export const env: {
[key: `PUBLIC_${string}`]: string | undefined;
}
}

View file

@ -1,21 +0,0 @@
export { matchers } from './matchers.js';
export const nodes = [
() => import('./nodes/0'),
() => import('./nodes/1'),
() => import('./nodes/2')
];
export const server_loads = [];
export const dictionary = {
"/": [2]
};
export const hooks = {
handleError: (({ error }) => { console.error(error) }),
reroute: (() => {})
};
export { default as root } from '../root.js';

View file

@ -1 +0,0 @@
export const matchers = {};

View file

@ -1 +0,0 @@
export { default as component } from "../../../../node_modules/.pnpm/@sveltejs+kit@2.8.0_@sveltejs+vite-plugin-svelte@4.0.0_svelte@5.1.15_vite@5.4.11__svelte@5.1.15_vite@5.4.11/node_modules/@sveltejs/kit/src/runtime/components/svelte-5/layout.svelte";

View file

@ -1 +0,0 @@
export { default as component } from "../../../../node_modules/.pnpm/@sveltejs+kit@2.8.0_@sveltejs+vite-plugin-svelte@4.0.0_svelte@5.1.15_vite@5.4.11__svelte@5.1.15_vite@5.4.11/node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte";

View file

@ -1 +0,0 @@
export { default as component } from "../../../../src/routes/+page.svelte";

View file

@ -1,3 +0,0 @@
import { asClassComponent } from 'svelte/legacy';
import Root from './root.svelte';
export default asClassComponent(Root);

View file

@ -1,66 +0,0 @@
<!-- This file is generated by @sveltejs/kit — do not edit it! -->
<svelte:options runes={true} />
<script>
import { setContext, onMount, tick } from 'svelte';
import { browser } from '$app/environment';
// stores
let { stores, page, constructors, components = [], form, data_0 = null, data_1 = null } = $props();
if (!browser) {
setContext('__svelte__', stores);
}
if (browser) {
$effect.pre(() => stores.page.set(page));
} else {
stores.page.set(page);
}
$effect(() => {
stores;page;constructors;components;form;data_0;data_1;
stores.page.notify();
});
let mounted = $state(false);
let navigated = $state(false);
let title = $state(null);
onMount(() => {
const unsubscribe = stores.page.subscribe(() => {
if (mounted) {
navigated = true;
tick().then(() => {
title = document.title || 'untitled page';
});
}
});
mounted = true;
return unsubscribe;
});
const Pyramid_1=$derived(constructors[1])
</script>
{#if constructors[1]}
{@const Pyramid_0 = constructors[0]}
<!-- svelte-ignore binding_property_non_reactive -->
<Pyramid_0 bind:this={components[0]} data={data_0} {form}>
<!-- svelte-ignore binding_property_non_reactive -->
<Pyramid_1 bind:this={components[1]} data={data_1} {form} />
</Pyramid_0>
{:else}
{@const Pyramid_0 = constructors[0]}
<!-- svelte-ignore binding_property_non_reactive -->
<Pyramid_0 bind:this={components[0]} data={data_0} {form} />
{/if}
{#if mounted}
<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px">
{#if navigated}
{title}
{/if}
</div>
{/if}

View file

@ -1,34 +0,0 @@
import root from '../root.js';
import { set_building, set_prerendering } from '__sveltekit/environment';
import { set_assets } from '__sveltekit/paths';
import { set_manifest, set_read_implementation } from '__sveltekit/server';
import { set_private_env, set_public_env, set_safe_public_env } from '../../../node_modules/.pnpm/@sveltejs+kit@2.8.0_@sveltejs+vite-plugin-svelte@4.0.0_svelte@5.1.15_vite@5.4.11__svelte@5.1.15_vite@5.4.11/node_modules/@sveltejs/kit/src/runtime/shared-server.js';
export const options = {
app_dir: "_app",
app_template_contains_nonce: false,
csp: {"mode":"auto","directives":{"upgrade-insecure-requests":false,"block-all-mixed-content":false},"reportOnly":{"upgrade-insecure-requests":false,"block-all-mixed-content":false}},
csrf_check_origin: true,
embedded: false,
env_public_prefix: 'PUBLIC_',
env_private_prefix: '',
hooks: null, // added lazily, via `get_hooks`
preload_strategy: "modulepreload",
root,
service_worker: false,
templates: {
app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<link rel=\"icon\" href=\"" + assets + "/favicon.png\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n\t\t" + head + "\n\t</head>\n\t<body data-sveltekit-preload-data=\"hover\">\n\t\t<div style=\"display: contents\">" + body + "</div>\n\t</body>\n</html>\n",
error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
},
version_hash: "1vvcu4z"
};
export async function get_hooks() {
return {
};
}
export { set_assets, set_building, set_manifest, set_prerendering, set_private_env, set_public_env, set_read_implementation, set_safe_public_env };

View file

@ -1,25 +0,0 @@
// this file is generated — do not edit it
declare module "svelte/elements" {
export interface HTMLAttributes<T> {
'data-sveltekit-keepfocus'?: true | '' | 'off' | undefined | null;
'data-sveltekit-noscroll'?: true | '' | 'off' | undefined | null;
'data-sveltekit-preload-code'?:
| true
| ''
| 'eager'
| 'viewport'
| 'hover'
| 'tap'
| 'off'
| undefined
| null;
'data-sveltekit-preload-data'?: true | '' | 'hover' | 'tap' | 'off' | undefined | null;
'data-sveltekit-reload'?: true | '' | 'off' | undefined | null;
'data-sveltekit-replacestate'?: true | '' | 'off' | undefined | null;
}
}
export {};

View file

@ -1,49 +0,0 @@
{
"compilerOptions": {
"paths": {
"$lib": [
"../src/lib"
],
"$lib/*": [
"../src/lib/*"
]
},
"rootDirs": [
"..",
"./types"
],
"verbatimModuleSyntax": true,
"isolatedModules": true,
"lib": [
"esnext",
"DOM",
"DOM.Iterable"
],
"moduleResolution": "bundler",
"module": "esnext",
"noEmit": true,
"target": "esnext"
},
"include": [
"ambient.d.ts",
"non-ambient.d.ts",
"./types/**/$types.d.ts",
"../vite.config.js",
"../vite.config.ts",
"../src/**/*.js",
"../src/**/*.ts",
"../src/**/*.svelte",
"../tests/**/*.js",
"../tests/**/*.ts",
"../tests/**/*.svelte"
],
"exclude": [
"../node_modules/**",
"../src/service-worker.js",
"../src/service-worker/**/*.js",
"../src/service-worker.ts",
"../src/service-worker/**/*.ts",
"../src/service-worker.d.ts",
"../src/service-worker/**/*.d.ts"
]
}

View file

@ -1,23 +0,0 @@
import prettier from 'eslint-config-prettier';
import js from '@eslint/js';
import svelte from 'eslint-plugin-svelte';
import globals from 'globals';
/** @type {import('eslint').Linter.Config[]} */
export default [
js.configs.recommended,
...svelte.configs['flat/recommended'],
prettier,
...svelte.configs['flat/prettier'],
{
languageOptions: {
globals: {
...globals.browser,
...globals.node
}
}
},
{
ignores: ['build/', '.svelte-kit/', 'dist/']
}
];

View file

@ -7,7 +7,7 @@
"build": "vite build", "build": "vite build",
"preview": "vite preview", "preview": "vite preview",
"format": "prettier --write .", "format": "prettier --write .",
"lint": "prettier --check . && eslint .", "lint": "prettier --check .",
"test:unit": "vitest", "test:unit": "vitest",
"test": "npm run test:unit -- --run" "test": "npm run test:unit -- --run"
}, },
@ -15,10 +15,6 @@
"@sveltejs/adapter-auto": "^3.0.0", "@sveltejs/adapter-auto": "^3.0.0",
"@sveltejs/kit": "^2.0.0", "@sveltejs/kit": "^2.0.0",
"@sveltejs/vite-plugin-svelte": "^4.0.0", "@sveltejs/vite-plugin-svelte": "^4.0.0",
"@types/eslint": "^9.6.0",
"eslint": "^9.7.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-svelte": "^2.36.0",
"globals": "^15.0.0", "globals": "^15.0.0",
"mdsvex": "^0.11.2", "mdsvex": "^0.11.2",
"prettier": "^3.3.2", "prettier": "^3.3.2",
@ -26,5 +22,8 @@
"svelte": "^5.0.0", "svelte": "^5.0.0",
"vite": "^5.0.3", "vite": "^5.0.3",
"vitest": "^2.0.4" "vitest": "^2.0.4"
},
"dependencies": {
"otplib": "^12.0.1"
} }
} }

864
packages/pnpm-lock.yaml generated

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,66 @@
<script>
import { goto } from '$app/navigation'
</script>
<nav class='nav-bar'>
<div class='cluster nav-left'>
<ul>
<li><button onclick={() => goto('/')}>Home</button></li>
</ul>
</div>
<div class='cluster nav-right'>
<ul>
<li><button onclick={() => goto('/auth/login')}>Login</button></li>
</ul>
</div>
</nav>
<style>
.nav-bar {
height: var(--navbar-height);
display: flex;
background: var(--theme-background);
border-bottom: solid thin var(--border-color);
position: sticky;
top: 0;
z-index: 10;
}
ul {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
.cluster ul {
display: flex;
height: 100%;
}
.cluster li {
display: flex;
}
.nav-left {
margin: 0 auto 0 0;
}
.nav-right {
margin: 0 0 0 auto;
}
button {
margin: 0;
background: transparent;
color: var(--theme-color);
border: none;
width: 100%;
height: 100%;
padding: 0 1em;
text-align: left;
}
</style>

View file

@ -0,0 +1,25 @@
<script>
import { page } from '$app/stores'
</script>
<div class='error-page'>
<h1>Supawiki</h1>
<h2>Oops... Something went wrong!</h2>
{#if $page.status === 401}
<h3>Error {$page.status}: {$page.error?.message}</h3>
<p>
Go to <a href="/auth/login">log in</a> page.
</p>
{:else}
<h3>{$page.status}: {$page.error?.message}</h3>
<p>We are looking into it.</p>
{/if}
</div>
<style>
.error-page {
text-align: center;
}
</style>

View file

@ -0,0 +1,56 @@
<script>
import NavBar from '$lib/components/nav-bar.svelte'
</script>
<div class='content'>
<NavBar />
<slot></slot>
</div>
<style>
:root {
--border-color: #3b3b3b;
--font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
--navbar-height: 3em;
--theme-background: white;
--theme-color: #555555;
}
.content {
text-align: center;
margin: auto;
height: calc(100vh - 6em);
overflow: clip;
overflow-y: auto;
}
:global(body) {
margin: 0;
font-family: var(--font-family);
font-weight: 400;
background: var(--theme-background);
color: var(--theme-color);
overflow: clip;
}
:global(button){
margin: 1em;
width: 10em;
height: 3em;
font-family: var(--font-family-text);
font-weight: 400;
font-size: 16px;
color: var(--button-color);
}
:global(button:hover) {
cursor: pointer;
}
:global(button:disabled) {
background-color: light-dark(rgba(239, 239, 239, 0.3), rgba(19, 1, 1, 0.3));
color: light-dark(rgba(16, 16, 16, 0.3), rgba(255, 255, 255, 0.3));
border-color: light-dark(rgba(118, 118, 118, 0.3), rgba(195, 195, 195, 0.3));
}
</style>

View file

@ -1,2 +1,14 @@
<h1>Welcome to SvelteKit</h1> <script>
<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p> import { goto } from '$app/navigation'
</script>
<svelte:head>
<title>Home page</title>
<meta name='description' content='Home page'/>
</svelte:head>
<div class='landing-page'>
<h1>Private facts</h1>
<button onclick={() => goto('/auth/login')}>Login</button>
</div>

View file

@ -0,0 +1,8 @@
<svelte:head>
<title>Login page</title>
<meta name='description' content='Login page'/>
</svelte:head>
<div class='login-content'>
<h1>Login</h1>
</div>