From 5f12ccfa341f51b6034a31ee6c9e9d566cc5bf0d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Leon=20Gr=C3=BCnewald?=
<10533763+dhalucario@users.noreply.github.com>
Date: Wed, 5 Feb 2025 05:20:49 +0100
Subject: [PATCH] Inital commit
---
.gitignore | 23 +
.npmrc | 1 +
README.md | 38 +
docker-compose.yml | 18 +
docker/Caddyfile | 25 +
docker/pocketbase/pb_schema.json | 988 +++++++++++++++
jsconfig.json | 19 +
package.json | 29 +
pnpm-lock.yaml | 1113 +++++++++++++++++
src/app.css | 60 +
src/app.d.ts | 13 +
src/app.html | 13 +
src/hooks.client.js | 5 +
src/hooks.server.js | 5 +
src/lib/components/ContainerGridSingle.svelte | 36 +
src/lib/components/ContentGrid.svelte | 13 +
src/lib/components/EventList.svelte | 27 +
src/lib/components/FooterNavigation.svelte | 43 +
src/lib/components/RoundedAvatar.svelte | 32 +
src/lib/index.js | 1 +
src/lib/pocketbase.js | 13 +
src/routes/+layout.svelte | 27 +
src/routes/+page.svelte | 25 +
src/routes/events/+page.js | 10 +
src/routes/events/+page.svelte | 8 +
src/routes/events/[slug]/+page.js | 19 +
src/routes/events/[slug]/+page.svelte | 71 ++
src/routes/rules/+page.svelte | 11 +
static/favicon.png | Bin 0 -> 1571 bytes
static/fonts/inter-v18-latin-regular.woff2 | Bin 0 -> 23692 bytes
svelte.config.js | 13 +
vite.config.js | 9 +
32 files changed, 2708 insertions(+)
create mode 100644 .gitignore
create mode 100644 .npmrc
create mode 100644 README.md
create mode 100644 docker-compose.yml
create mode 100644 docker/Caddyfile
create mode 100644 docker/pocketbase/pb_schema.json
create mode 100644 jsconfig.json
create mode 100644 package.json
create mode 100644 pnpm-lock.yaml
create mode 100644 src/app.css
create mode 100644 src/app.d.ts
create mode 100644 src/app.html
create mode 100644 src/hooks.client.js
create mode 100644 src/hooks.server.js
create mode 100644 src/lib/components/ContainerGridSingle.svelte
create mode 100644 src/lib/components/ContentGrid.svelte
create mode 100644 src/lib/components/EventList.svelte
create mode 100644 src/lib/components/FooterNavigation.svelte
create mode 100644 src/lib/components/RoundedAvatar.svelte
create mode 100644 src/lib/index.js
create mode 100644 src/lib/pocketbase.js
create mode 100644 src/routes/+layout.svelte
create mode 100644 src/routes/+page.svelte
create mode 100644 src/routes/events/+page.js
create mode 100644 src/routes/events/+page.svelte
create mode 100644 src/routes/events/[slug]/+page.js
create mode 100644 src/routes/events/[slug]/+page.svelte
create mode 100644 src/routes/rules/+page.svelte
create mode 100644 static/favicon.png
create mode 100644 static/fonts/inter-v18-latin-regular.woff2
create mode 100644 svelte.config.js
create mode 100644 vite.config.js
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3b462cb
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,23 @@
+node_modules
+
+# Output
+.output
+.vercel
+.netlify
+.wrangler
+/.svelte-kit
+/build
+
+# OS
+.DS_Store
+Thumbs.db
+
+# Env
+.env
+.env.*
+!.env.example
+!.env.test
+
+# Vite
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..b6f27f1
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+engine-strict=true
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b5b2950
--- /dev/null
+++ b/README.md
@@ -0,0 +1,38 @@
+# sv
+
+Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
+
+## Creating a project
+
+If you're seeing this, you've probably already done this step. Congrats!
+
+```bash
+# create a new project in the current directory
+npx sv create
+
+# create a new project in my-app
+npx sv create my-app
+```
+
+## Developing
+
+Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
+
+```bash
+npm run dev
+
+# or start the server and open the app in a new browser tab
+npm run dev -- --open
+```
+
+## Building
+
+To create a production version of your app:
+
+```bash
+npm run build
+```
+
+You can preview the production build with `npm run preview`.
+
+> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..9da8c5f
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,18 @@
+services:
+ caddy:
+ image: caddy:latest
+ volumes:
+ - "./docker/Caddyfile:/etc/caddy/Caddyfile"
+ ports:
+ - "8080:8080"
+ extra_hosts:
+ - "host.docker.internal:host-gateway"
+ pocketbase:
+ image: ghcr.io/muchobien/pocketbase:latest
+ ports:
+ - "8090:8090"
+ healthcheck: # optional, recommended since v0.10.0
+ test: wget --no-verbose --tries=1 --spider http://localhost:8090/api/health || exit 1
+ interval: 5s
+ timeout: 5s
+ retries: 5
\ No newline at end of file
diff --git a/docker/Caddyfile b/docker/Caddyfile
new file mode 100644
index 0000000..2abdf97
--- /dev/null
+++ b/docker/Caddyfile
@@ -0,0 +1,25 @@
+# The Caddyfile is an easy way to configure your Caddy web server.
+#
+# Unless the file starts with a global options block, the first
+# uncommented line is always the address of your site.
+#
+# To use your own domain name (with automatic HTTPS), first make
+# sure your domain's A/AAAA DNS records are properly pointed to
+# this machine's public IP, then replace ":80" below with your
+# domain name.
+
+http://fedora.raccoon-nase.ts.net:8080 {
+ # Set this path to your site's directory.
+ root * /usr/share/caddy
+
+ # Another common task is to set up a reverse proxy:
+ reverse_proxy http://host.docker.internal:5173
+ reverse_proxy /api/* http://pocketbase:8090
+ reverse_proxy /_/* http://pocketbase:8090
+
+ # Or serve a PHP site through php-fpm:
+ # php_fastcgi localhost:9000
+}
+
+# Refer to the Caddy docs for more information:
+# https://caddyserver.com/docs/caddyfile
diff --git a/docker/pocketbase/pb_schema.json b/docker/pocketbase/pb_schema.json
new file mode 100644
index 0000000..481fddc
--- /dev/null
+++ b/docker/pocketbase/pb_schema.json
@@ -0,0 +1,988 @@
+[
+ {
+ "id": "pbc_3142635823",
+ "listRule": null,
+ "viewRule": null,
+ "createRule": null,
+ "updateRule": null,
+ "deleteRule": null,
+ "name": "_superusers",
+ "type": "auth",
+ "fields": [
+ {
+ "autogeneratePattern": "[a-z0-9]{15}",
+ "hidden": false,
+ "id": "text3208210256",
+ "max": 15,
+ "min": 15,
+ "name": "id",
+ "pattern": "^[a-z0-9]+$",
+ "presentable": false,
+ "primaryKey": true,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "cost": 0,
+ "hidden": true,
+ "id": "password901924565",
+ "max": 0,
+ "min": 8,
+ "name": "password",
+ "pattern": "",
+ "presentable": false,
+ "required": true,
+ "system": true,
+ "type": "password"
+ },
+ {
+ "autogeneratePattern": "[a-zA-Z0-9]{50}",
+ "hidden": true,
+ "id": "text2504183744",
+ "max": 60,
+ "min": 30,
+ "name": "tokenKey",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "exceptDomains": null,
+ "hidden": false,
+ "id": "email3885137012",
+ "name": "email",
+ "onlyDomains": null,
+ "presentable": false,
+ "required": true,
+ "system": true,
+ "type": "email"
+ },
+ {
+ "hidden": false,
+ "id": "bool1547992806",
+ "name": "emailVisibility",
+ "presentable": false,
+ "required": false,
+ "system": true,
+ "type": "bool"
+ },
+ {
+ "hidden": false,
+ "id": "bool256245529",
+ "name": "verified",
+ "presentable": false,
+ "required": false,
+ "system": true,
+ "type": "bool"
+ },
+ {
+ "hidden": false,
+ "id": "autodate2990389176",
+ "name": "created",
+ "onCreate": true,
+ "onUpdate": false,
+ "presentable": false,
+ "system": true,
+ "type": "autodate"
+ },
+ {
+ "hidden": false,
+ "id": "autodate3332085495",
+ "name": "updated",
+ "onCreate": true,
+ "onUpdate": true,
+ "presentable": false,
+ "system": true,
+ "type": "autodate"
+ }
+ ],
+ "indexes": [
+ "CREATE UNIQUE INDEX `idx_tokenKey_pbc_3142635823` ON `_superusers` (`tokenKey`)",
+ "CREATE UNIQUE INDEX `idx_email_pbc_3142635823` ON `_superusers` (`email`) WHERE `email` != ''"
+ ],
+ "system": true,
+ "authRule": "",
+ "manageRule": null,
+ "authAlert": {
+ "enabled": true,
+ "emailTemplate": {
+ "subject": "Login from a new location",
+ "body": "
Hello,
\nWe noticed a login to your {APP_NAME} account from a new location.
\nIf this was you, you may disregard this email.
\nIf this wasn't you, you should immediately change your {APP_NAME} account password to revoke access from all other locations.
\n\n Thanks, \n {APP_NAME} team\n
"
+ }
+ },
+ "oauth2": {
+ "mappedFields": {
+ "id": "",
+ "name": "",
+ "username": "",
+ "avatarURL": ""
+ },
+ "enabled": false
+ },
+ "passwordAuth": {
+ "enabled": true,
+ "identityFields": [
+ "email"
+ ]
+ },
+ "mfa": {
+ "enabled": false,
+ "duration": 1800,
+ "rule": ""
+ },
+ "otp": {
+ "enabled": false,
+ "duration": 180,
+ "length": 8,
+ "emailTemplate": {
+ "subject": "OTP for {APP_NAME}",
+ "body": "Hello,
\nYour one-time password is: {OTP}
\nIf you didn't ask for the one-time password, you can ignore this email.
\n\n Thanks, \n {APP_NAME} team\n
"
+ }
+ },
+ "authToken": {
+ "duration": 86400
+ },
+ "passwordResetToken": {
+ "duration": 1800
+ },
+ "emailChangeToken": {
+ "duration": 1800
+ },
+ "verificationToken": {
+ "duration": 259200
+ },
+ "fileToken": {
+ "duration": 180
+ },
+ "verificationTemplate": {
+ "subject": "Verify your {APP_NAME} email",
+ "body": "Hello,
\nThank you for joining us at {APP_NAME}.
\nClick on the button below to verify your email address.
\n\n Verify \n
\n\n Thanks, \n {APP_NAME} team\n
"
+ },
+ "resetPasswordTemplate": {
+ "subject": "Reset your {APP_NAME} password",
+ "body": "Hello,
\nClick on the button below to reset your password.
\n\n Reset password \n
\nIf you didn't ask to reset your password, you can ignore this email.
\n\n Thanks, \n {APP_NAME} team\n
"
+ },
+ "confirmEmailChangeTemplate": {
+ "subject": "Confirm your {APP_NAME} new email address",
+ "body": "Hello,
\nClick on the button below to confirm your new email address.
\n\n Confirm new email \n
\nIf you didn't ask to change your email address, you can ignore this email.
\n\n Thanks, \n {APP_NAME} team\n
"
+ }
+ },
+ {
+ "id": "_pb_users_auth_",
+ "listRule": "id = @request.auth.id",
+ "viewRule": "id = @request.auth.id",
+ "createRule": "",
+ "updateRule": "id = @request.auth.id",
+ "deleteRule": "id = @request.auth.id",
+ "name": "users",
+ "type": "auth",
+ "fields": [
+ {
+ "autogeneratePattern": "[a-z0-9]{15}",
+ "hidden": false,
+ "id": "text3208210256",
+ "max": 15,
+ "min": 15,
+ "name": "id",
+ "pattern": "^[a-z0-9]+$",
+ "presentable": false,
+ "primaryKey": true,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "cost": 0,
+ "hidden": true,
+ "id": "password901924565",
+ "max": 0,
+ "min": 8,
+ "name": "password",
+ "pattern": "",
+ "presentable": false,
+ "required": true,
+ "system": true,
+ "type": "password"
+ },
+ {
+ "autogeneratePattern": "[a-zA-Z0-9]{50}",
+ "hidden": true,
+ "id": "text2504183744",
+ "max": 60,
+ "min": 30,
+ "name": "tokenKey",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "exceptDomains": null,
+ "hidden": false,
+ "id": "email3885137012",
+ "name": "email",
+ "onlyDomains": null,
+ "presentable": false,
+ "required": true,
+ "system": true,
+ "type": "email"
+ },
+ {
+ "hidden": false,
+ "id": "bool1547992806",
+ "name": "emailVisibility",
+ "presentable": false,
+ "required": false,
+ "system": true,
+ "type": "bool"
+ },
+ {
+ "hidden": false,
+ "id": "bool256245529",
+ "name": "verified",
+ "presentable": false,
+ "required": false,
+ "system": true,
+ "type": "bool"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text1579384326",
+ "max": 255,
+ "min": 0,
+ "name": "name",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": false,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "hidden": false,
+ "id": "file376926767",
+ "maxSelect": 1,
+ "maxSize": 0,
+ "mimeTypes": [
+ "image/jpeg",
+ "image/png",
+ "image/svg+xml",
+ "image/gif",
+ "image/webp"
+ ],
+ "name": "avatar",
+ "presentable": false,
+ "protected": false,
+ "required": false,
+ "system": false,
+ "thumbs": null,
+ "type": "file"
+ },
+ {
+ "hidden": false,
+ "id": "autodate2990389176",
+ "name": "created",
+ "onCreate": true,
+ "onUpdate": false,
+ "presentable": false,
+ "system": false,
+ "type": "autodate"
+ },
+ {
+ "hidden": false,
+ "id": "autodate3332085495",
+ "name": "updated",
+ "onCreate": true,
+ "onUpdate": true,
+ "presentable": false,
+ "system": false,
+ "type": "autodate"
+ }
+ ],
+ "indexes": [
+ "CREATE UNIQUE INDEX `idx_tokenKey__pb_users_auth_` ON `users` (`tokenKey`)",
+ "CREATE UNIQUE INDEX `idx_email__pb_users_auth_` ON `users` (`email`) WHERE `email` != ''"
+ ],
+ "system": false,
+ "authRule": "",
+ "manageRule": null,
+ "authAlert": {
+ "enabled": true,
+ "emailTemplate": {
+ "subject": "Login from a new location",
+ "body": "Hello,
\nWe noticed a login to your {APP_NAME} account from a new location.
\nIf this was you, you may disregard this email.
\nIf this wasn't you, you should immediately change your {APP_NAME} account password to revoke access from all other locations.
\n\n Thanks, \n {APP_NAME} team\n
"
+ }
+ },
+ "oauth2": {
+ "mappedFields": {
+ "id": "",
+ "name": "name",
+ "username": "",
+ "avatarURL": "avatar"
+ },
+ "enabled": false
+ },
+ "passwordAuth": {
+ "enabled": true,
+ "identityFields": [
+ "email"
+ ]
+ },
+ "mfa": {
+ "enabled": false,
+ "duration": 1800,
+ "rule": ""
+ },
+ "otp": {
+ "enabled": false,
+ "duration": 180,
+ "length": 8,
+ "emailTemplate": {
+ "subject": "OTP for {APP_NAME}",
+ "body": "Hello,
\nYour one-time password is: {OTP}
\nIf you didn't ask for the one-time password, you can ignore this email.
\n\n Thanks, \n {APP_NAME} team\n
"
+ }
+ },
+ "authToken": {
+ "duration": 604800
+ },
+ "passwordResetToken": {
+ "duration": 1800
+ },
+ "emailChangeToken": {
+ "duration": 1800
+ },
+ "verificationToken": {
+ "duration": 259200
+ },
+ "fileToken": {
+ "duration": 180
+ },
+ "verificationTemplate": {
+ "subject": "Verify your {APP_NAME} email",
+ "body": "Hello,
\nThank you for joining us at {APP_NAME}.
\nClick on the button below to verify your email address.
\n\n Verify \n
\n\n Thanks, \n {APP_NAME} team\n
"
+ },
+ "resetPasswordTemplate": {
+ "subject": "Reset your {APP_NAME} password",
+ "body": "Hello,
\nClick on the button below to reset your password.
\n\n Reset password \n
\nIf you didn't ask to reset your password, you can ignore this email.
\n\n Thanks, \n {APP_NAME} team\n
"
+ },
+ "confirmEmailChangeTemplate": {
+ "subject": "Confirm your {APP_NAME} new email address",
+ "body": "Hello,
\nClick on the button below to confirm your new email address.
\n\n Confirm new email \n
\nIf you didn't ask to change your email address, you can ignore this email.
\n\n Thanks, \n {APP_NAME} team\n
"
+ }
+ },
+ {
+ "id": "pbc_4275539003",
+ "listRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId",
+ "viewRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId",
+ "createRule": null,
+ "updateRule": null,
+ "deleteRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId",
+ "name": "_authOrigins",
+ "type": "base",
+ "fields": [
+ {
+ "autogeneratePattern": "[a-z0-9]{15}",
+ "hidden": false,
+ "id": "text3208210256",
+ "max": 15,
+ "min": 15,
+ "name": "id",
+ "pattern": "^[a-z0-9]+$",
+ "presentable": false,
+ "primaryKey": true,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text455797646",
+ "max": 0,
+ "min": 0,
+ "name": "collectionRef",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text127846527",
+ "max": 0,
+ "min": 0,
+ "name": "recordRef",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text4228609354",
+ "max": 0,
+ "min": 0,
+ "name": "fingerprint",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "hidden": false,
+ "id": "autodate2990389176",
+ "name": "created",
+ "onCreate": true,
+ "onUpdate": false,
+ "presentable": false,
+ "system": true,
+ "type": "autodate"
+ },
+ {
+ "hidden": false,
+ "id": "autodate3332085495",
+ "name": "updated",
+ "onCreate": true,
+ "onUpdate": true,
+ "presentable": false,
+ "system": true,
+ "type": "autodate"
+ }
+ ],
+ "indexes": [
+ "CREATE UNIQUE INDEX `idx_authOrigins_unique_pairs` ON `_authOrigins` (collectionRef, recordRef, fingerprint)"
+ ],
+ "system": true
+ },
+ {
+ "id": "pbc_2281828961",
+ "listRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId",
+ "viewRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId",
+ "createRule": null,
+ "updateRule": null,
+ "deleteRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId",
+ "name": "_externalAuths",
+ "type": "base",
+ "fields": [
+ {
+ "autogeneratePattern": "[a-z0-9]{15}",
+ "hidden": false,
+ "id": "text3208210256",
+ "max": 15,
+ "min": 15,
+ "name": "id",
+ "pattern": "^[a-z0-9]+$",
+ "presentable": false,
+ "primaryKey": true,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text455797646",
+ "max": 0,
+ "min": 0,
+ "name": "collectionRef",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text127846527",
+ "max": 0,
+ "min": 0,
+ "name": "recordRef",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text2462348188",
+ "max": 0,
+ "min": 0,
+ "name": "provider",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text1044722854",
+ "max": 0,
+ "min": 0,
+ "name": "providerId",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "hidden": false,
+ "id": "autodate2990389176",
+ "name": "created",
+ "onCreate": true,
+ "onUpdate": false,
+ "presentable": false,
+ "system": true,
+ "type": "autodate"
+ },
+ {
+ "hidden": false,
+ "id": "autodate3332085495",
+ "name": "updated",
+ "onCreate": true,
+ "onUpdate": true,
+ "presentable": false,
+ "system": true,
+ "type": "autodate"
+ }
+ ],
+ "indexes": [
+ "CREATE UNIQUE INDEX `idx_externalAuths_record_provider` ON `_externalAuths` (collectionRef, recordRef, provider)",
+ "CREATE UNIQUE INDEX `idx_externalAuths_collection_provider` ON `_externalAuths` (collectionRef, provider, providerId)"
+ ],
+ "system": true
+ },
+ {
+ "id": "pbc_2279338944",
+ "listRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId",
+ "viewRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId",
+ "createRule": null,
+ "updateRule": null,
+ "deleteRule": null,
+ "name": "_mfas",
+ "type": "base",
+ "fields": [
+ {
+ "autogeneratePattern": "[a-z0-9]{15}",
+ "hidden": false,
+ "id": "text3208210256",
+ "max": 15,
+ "min": 15,
+ "name": "id",
+ "pattern": "^[a-z0-9]+$",
+ "presentable": false,
+ "primaryKey": true,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text455797646",
+ "max": 0,
+ "min": 0,
+ "name": "collectionRef",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text127846527",
+ "max": 0,
+ "min": 0,
+ "name": "recordRef",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text1582905952",
+ "max": 0,
+ "min": 0,
+ "name": "method",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "hidden": false,
+ "id": "autodate2990389176",
+ "name": "created",
+ "onCreate": true,
+ "onUpdate": false,
+ "presentable": false,
+ "system": true,
+ "type": "autodate"
+ },
+ {
+ "hidden": false,
+ "id": "autodate3332085495",
+ "name": "updated",
+ "onCreate": true,
+ "onUpdate": true,
+ "presentable": false,
+ "system": true,
+ "type": "autodate"
+ }
+ ],
+ "indexes": [
+ "CREATE INDEX `idx_mfas_collectionRef_recordRef` ON `_mfas` (collectionRef,recordRef)"
+ ],
+ "system": true
+ },
+ {
+ "id": "pbc_1638494021",
+ "listRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId",
+ "viewRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId",
+ "createRule": null,
+ "updateRule": null,
+ "deleteRule": null,
+ "name": "_otps",
+ "type": "base",
+ "fields": [
+ {
+ "autogeneratePattern": "[a-z0-9]{15}",
+ "hidden": false,
+ "id": "text3208210256",
+ "max": 15,
+ "min": 15,
+ "name": "id",
+ "pattern": "^[a-z0-9]+$",
+ "presentable": false,
+ "primaryKey": true,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text455797646",
+ "max": 0,
+ "min": 0,
+ "name": "collectionRef",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text127846527",
+ "max": 0,
+ "min": 0,
+ "name": "recordRef",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "cost": 8,
+ "hidden": true,
+ "id": "password901924565",
+ "max": 0,
+ "min": 0,
+ "name": "password",
+ "pattern": "",
+ "presentable": false,
+ "required": true,
+ "system": true,
+ "type": "password"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": true,
+ "id": "text3866985172",
+ "max": 0,
+ "min": 0,
+ "name": "sentTo",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": false,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "hidden": false,
+ "id": "autodate2990389176",
+ "name": "created",
+ "onCreate": true,
+ "onUpdate": false,
+ "presentable": false,
+ "system": true,
+ "type": "autodate"
+ },
+ {
+ "hidden": false,
+ "id": "autodate3332085495",
+ "name": "updated",
+ "onCreate": true,
+ "onUpdate": true,
+ "presentable": false,
+ "system": true,
+ "type": "autodate"
+ }
+ ],
+ "indexes": [
+ "CREATE INDEX `idx_otps_collectionRef_recordRef` ON `_otps` (collectionRef, recordRef)"
+ ],
+ "system": true
+ },
+ {
+ "id": "pbc_1687431684",
+ "listRule": "",
+ "viewRule": "",
+ "createRule": null,
+ "updateRule": null,
+ "deleteRule": null,
+ "name": "events",
+ "type": "base",
+ "fields": [
+ {
+ "autogeneratePattern": "[a-z0-9]{15}",
+ "hidden": false,
+ "id": "text3208210256",
+ "max": 15,
+ "min": 15,
+ "name": "id",
+ "pattern": "^[a-z0-9]+$",
+ "presentable": false,
+ "primaryKey": true,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text724990059",
+ "max": 0,
+ "min": 0,
+ "name": "title",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": false,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "convertURLs": false,
+ "hidden": false,
+ "id": "editor1843675174",
+ "maxSize": 0,
+ "name": "description",
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "editor"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text2560465762",
+ "max": 0,
+ "min": 0,
+ "name": "slug",
+ "pattern": "^[a-zA-Z0-9\\-]+$",
+ "presentable": false,
+ "primaryKey": false,
+ "required": true,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "cascadeDelete": false,
+ "collectionId": "pbc_1942858786",
+ "hidden": false,
+ "id": "relation1587448267",
+ "maxSelect": 1,
+ "minSelect": 0,
+ "name": "location",
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "relation"
+ },
+ {
+ "hidden": false,
+ "id": "autodate2990389176",
+ "name": "created",
+ "onCreate": true,
+ "onUpdate": false,
+ "presentable": false,
+ "system": false,
+ "type": "autodate"
+ },
+ {
+ "hidden": false,
+ "id": "autodate3332085495",
+ "name": "updated",
+ "onCreate": true,
+ "onUpdate": true,
+ "presentable": false,
+ "system": false,
+ "type": "autodate"
+ }
+ ],
+ "indexes": [],
+ "system": false
+ },
+ {
+ "id": "pbc_1942858786",
+ "listRule": null,
+ "viewRule": "",
+ "createRule": null,
+ "updateRule": null,
+ "deleteRule": null,
+ "name": "locations",
+ "type": "base",
+ "fields": [
+ {
+ "autogeneratePattern": "[a-z0-9]{15}",
+ "hidden": false,
+ "id": "text3208210256",
+ "max": 15,
+ "min": 15,
+ "name": "id",
+ "pattern": "^[a-z0-9]+$",
+ "presentable": false,
+ "primaryKey": true,
+ "required": true,
+ "system": true,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text1579384326",
+ "max": 0,
+ "min": 0,
+ "name": "name",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": false,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "autogeneratePattern": "",
+ "hidden": false,
+ "id": "text223244161",
+ "max": 0,
+ "min": 0,
+ "name": "address",
+ "pattern": "",
+ "presentable": false,
+ "primaryKey": false,
+ "required": false,
+ "system": false,
+ "type": "text"
+ },
+ {
+ "hidden": false,
+ "id": "number2499937429",
+ "max": null,
+ "min": null,
+ "name": "lat",
+ "onlyInt": false,
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "number"
+ },
+ {
+ "hidden": false,
+ "id": "number2518964612",
+ "max": null,
+ "min": null,
+ "name": "lng",
+ "onlyInt": false,
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "number"
+ },
+ {
+ "hidden": false,
+ "id": "number3073079668",
+ "max": 20,
+ "min": 1,
+ "name": "zoom",
+ "onlyInt": true,
+ "presentable": false,
+ "required": false,
+ "system": false,
+ "type": "number"
+ },
+ {
+ "hidden": false,
+ "id": "autodate2990389176",
+ "name": "created",
+ "onCreate": true,
+ "onUpdate": false,
+ "presentable": false,
+ "system": false,
+ "type": "autodate"
+ },
+ {
+ "hidden": false,
+ "id": "autodate3332085495",
+ "name": "updated",
+ "onCreate": true,
+ "onUpdate": true,
+ "presentable": false,
+ "system": false,
+ "type": "autodate"
+ }
+ ],
+ "indexes": [],
+ "system": false
+ }
+]
\ No newline at end of file
diff --git a/jsconfig.json b/jsconfig.json
new file mode 100644
index 0000000..0b2d886
--- /dev/null
+++ b/jsconfig.json
@@ -0,0 +1,19 @@
+{
+ "extends": "./.svelte-kit/tsconfig.json",
+ "compilerOptions": {
+ "allowJs": true,
+ "checkJs": true,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "sourceMap": true,
+ "strict": true,
+ "moduleResolution": "bundler"
+ }
+ // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
+ // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
+ //
+ // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
+ // from the referenced tsconfig.json - TypeScript does not merge them in
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..e8df325
--- /dev/null
+++ b/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "cologne-furmeet-reg",
+ "private": true,
+ "version": "0.0.1",
+ "type": "module",
+ "packageManager": "pnpm@10.0.0",
+ "scripts": {
+ "dev": "vite dev --host 0.0.0.0",
+ "build": "vite build",
+ "preview": "vite preview",
+ "prepare": "svelte-kit sync || echo ''",
+ "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json",
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch"
+ },
+ "devDependencies": {
+ "@sveltejs/adapter-auto": "^4.0.0",
+ "@sveltejs/kit": "^2.16.0",
+ "@sveltejs/vite-plugin-svelte": "^5.0.0",
+ "svelte": "^5.0.0",
+ "svelte-check": "^4.0.0",
+ "typescript": "^5.0.0",
+ "vite": "^6.0.0"
+ },
+ "dependencies": {
+ "jdenticon": "^3.3.0",
+ "ol": "^10.4.0",
+ "pocketbase": "^0.25.1"
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..fcd06eb
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,1113 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ jdenticon:
+ specifier: ^3.3.0
+ version: 3.3.0
+ ol:
+ specifier: ^10.4.0
+ version: 10.4.0
+ pocketbase:
+ specifier: ^0.25.1
+ version: 0.25.1
+ devDependencies:
+ '@sveltejs/adapter-auto':
+ specifier: ^4.0.0
+ version: 4.0.0(@sveltejs/kit@2.17.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1)))(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1)))
+ '@sveltejs/kit':
+ specifier: ^2.16.0
+ version: 2.17.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1)))(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1))
+ '@sveltejs/vite-plugin-svelte':
+ specifier: ^5.0.0
+ version: 5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1))
+ svelte:
+ specifier: ^5.0.0
+ version: 5.19.7
+ svelte-check:
+ specifier: ^4.0.0
+ version: 4.1.4(svelte@5.19.7)(typescript@5.7.3)
+ typescript:
+ specifier: ^5.0.0
+ version: 5.7.3
+ vite:
+ specifier: ^6.0.0
+ version: 6.0.11(@types/node@22.13.1)
+
+packages:
+
+ '@ampproject/remapping@2.3.0':
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+
+ '@esbuild/aix-ppc64@0.24.2':
+ resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.24.2':
+ resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.24.2':
+ resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.24.2':
+ resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.24.2':
+ resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.24.2':
+ resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.24.2':
+ resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.24.2':
+ resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.24.2':
+ resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.24.2':
+ resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.24.2':
+ resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.24.2':
+ resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.24.2':
+ resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.24.2':
+ resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.24.2':
+ resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.24.2':
+ resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.24.2':
+ resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-arm64@0.24.2':
+ resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.24.2':
+ resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-arm64@0.24.2':
+ resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.24.2':
+ resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/sunos-x64@0.24.2':
+ resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.24.2':
+ resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.24.2':
+ resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.24.2':
+ resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@jridgewell/gen-mapping@0.3.8':
+ resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
+ '@petamoriken/float16@3.9.1':
+ resolution: {integrity: sha512-j+ejhYwY6PeB+v1kn7lZFACUIG97u90WxMuGosILFsl9d4Ovi0sjk0GlPfoEcx+FzvXZDAfioD+NGnnPamXgMA==}
+
+ '@polka/url@1.0.0-next.28':
+ resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
+
+ '@rollup/rollup-android-arm-eabi@4.34.1':
+ resolution: {integrity: sha512-kwctwVlswSEsr4ljpmxKrRKp1eG1v2NAhlzFzDf1x1OdYaMjBYjDCbHkzWm57ZXzTwqn8stMXgROrnMw8dJK3w==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.34.1':
+ resolution: {integrity: sha512-4H5ZtZitBPlbPsTv6HBB8zh1g5d0T8TzCmpndQdqq20Ugle/nroOyDMf9p7f88Gsu8vBLU78/cuh8FYHZqdXxw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.34.1':
+ resolution: {integrity: sha512-f2AJ7Qwx9z25hikXvg+asco8Sfuc5NCLg8rmqQBIOUoWys5sb/ZX9RkMZDPdnnDevXAMJA5AWLnRBmgdXGEUiA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.34.1':
+ resolution: {integrity: sha512-+/2JBrRfISCsWE4aEFXxd+7k9nWGXA8+wh7ZUHn/u8UDXOU9LN+QYKKhd57sIn6WRcorOnlqPMYFIwie/OHXWw==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.34.1':
+ resolution: {integrity: sha512-SUeB0pYjIXwT2vfAMQ7E4ERPq9VGRrPR7Z+S4AMssah5EHIilYqjWQoTn5dkDtuIJUSTs8H+C9dwoEcg3b0sCA==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.34.1':
+ resolution: {integrity: sha512-L3T66wAZiB/ooiPbxz0s6JEX6Sr2+HfgPSK+LMuZkaGZFAFCQAHiP3dbyqovYdNaiUXcl9TlgnIbcsIicAnOZg==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.34.1':
+ resolution: {integrity: sha512-UBXdQ4+ATARuFgsFrQ+tAsKvBi/Hly99aSVdeCUiHV9dRTTpMU7OrM3WXGys1l40wKVNiOl0QYY6cZQJ2xhKlQ==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.34.1':
+ resolution: {integrity: sha512-m/yfZ25HGdcCSwmopEJm00GP7xAUyVcBPjttGLRAqZ60X/bB4Qn6gP7XTwCIU6bITeKmIhhwZ4AMh2XLro+4+w==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.34.1':
+ resolution: {integrity: sha512-Wy+cUmFuvziNL9qWRRzboNprqSQ/n38orbjRvd6byYWridp5TJ3CD+0+HUsbcWVSNz9bxkDUkyASGP0zS7GAvg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.34.1':
+ resolution: {integrity: sha512-CQ3MAGgiFmQW5XJX5W3wnxOBxKwFlUAgSXFA2SwgVRjrIiVt5LHfcQLeNSHKq5OEZwv+VCBwlD1+YKCjDG8cpg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loongarch64-gnu@4.34.1':
+ resolution: {integrity: sha512-rSzb1TsY4lSwH811cYC3OC2O2mzNMhM13vcnA7/0T6Mtreqr3/qs6WMDriMRs8yvHDI54qxHgOk8EV5YRAHFbw==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.34.1':
+ resolution: {integrity: sha512-fwr0n6NS0pG3QxxlqVYpfiY64Fd1Dqd8Cecje4ILAV01ROMp4aEdCj5ssHjRY3UwU7RJmeWd5fi89DBqMaTawg==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.34.1':
+ resolution: {integrity: sha512-4uJb9qz7+Z/yUp5RPxDGGGUcoh0PnKF33QyWgEZ3X/GocpWb6Mb+skDh59FEt5d8+Skxqs9mng6Swa6B2AmQZg==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.34.1':
+ resolution: {integrity: sha512-QlIo8ndocWBEnfmkYqj8vVtIUpIqJjfqKggjy7IdUncnt8BGixte1wDON7NJEvLg3Kzvqxtbo8tk+U1acYEBlw==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.34.1':
+ resolution: {integrity: sha512-hzpleiKtq14GWjz3ahWvJXgU1DQC9DteiwcsY4HgqUJUGxZThlL66MotdUEK9zEo0PK/2ADeZGM9LIondE302A==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.34.1':
+ resolution: {integrity: sha512-jqtKrO715hDlvUcEsPn55tZt2TEiBvBtCMkUuU0R6fO/WPT7lO9AONjPbd8II7/asSiNVQHCMn4OLGigSuxVQA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-win32-arm64-msvc@4.34.1':
+ resolution: {integrity: sha512-RnHy7yFf2Wz8Jj1+h8klB93N0NHNHXFhNwAmiy9zJdpY7DE01VbEVtPdrK1kkILeIbHGRJjvfBDBhnxBr8kD4g==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.34.1':
+ resolution: {integrity: sha512-i7aT5HdiZIcd7quhzvwQ2oAuX7zPYrYfkrd1QFfs28Po/i0q6kas/oRrzGlDhAEyug+1UfUtkWdmoVlLJj5x9Q==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.34.1':
+ resolution: {integrity: sha512-k3MVFD9Oq+laHkw2N2v7ILgoa9017ZMF/inTtHzyTVZjYs9cSH18sdyAf6spBAJIGwJ5UaC7et2ZH1WCdlhkMw==}
+ cpu: [x64]
+ os: [win32]
+
+ '@sveltejs/adapter-auto@4.0.0':
+ resolution: {integrity: sha512-kmuYSQdD2AwThymQF0haQhM8rE5rhutQXG4LNbnbShwhMO4qQGnKaaTy+88DuNSuoQDi58+thpq8XpHc1+oEKQ==}
+ peerDependencies:
+ '@sveltejs/kit': ^2.0.0
+
+ '@sveltejs/kit@2.17.1':
+ resolution: {integrity: sha512-CpoGSLqE2MCmcQwA2CWJvOsZ9vW+p/1H3itrFykdgajUNAEyQPbsaSn7fZb6PLHQwe+07njxje9ss0fjZoCAyw==}
+ engines: {node: '>=18.13'}
+ hasBin: true
+ peerDependencies:
+ '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0
+ svelte: ^4.0.0 || ^5.0.0-next.0
+ vite: ^5.0.3 || ^6.0.0
+
+ '@sveltejs/vite-plugin-svelte-inspector@4.0.1':
+ resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22}
+ peerDependencies:
+ '@sveltejs/vite-plugin-svelte': ^5.0.0
+ svelte: ^5.0.0
+ vite: ^6.0.0
+
+ '@sveltejs/vite-plugin-svelte@5.0.3':
+ resolution: {integrity: sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22}
+ peerDependencies:
+ svelte: ^5.0.0
+ vite: ^6.0.0
+
+ '@types/cookie@0.6.0':
+ resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
+
+ '@types/estree@1.0.6':
+ resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+
+ '@types/node@22.13.1':
+ resolution: {integrity: sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==}
+
+ '@types/rbush@4.0.0':
+ resolution: {integrity: sha512-+N+2H39P8X+Hy1I5mC6awlTX54k3FhiUmvt7HWzGJZvF+syUAAxP/stwppS8JE84YHqFgRMv6fCy31202CMFxQ==}
+
+ acorn-typescript@1.4.13:
+ resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==}
+ peerDependencies:
+ acorn: '>=8.9.0'
+
+ acorn@8.14.0:
+ resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ aria-query@5.3.2:
+ resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
+ engines: {node: '>= 0.4'}
+
+ axobject-query@4.1.0:
+ resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
+ engines: {node: '>= 0.4'}
+
+ canvas-renderer@2.2.1:
+ resolution: {integrity: sha512-RrBgVL5qCEDIXpJ6NrzyRNoTnXxYarqm/cS/W6ERhUJts5UQtt/XPEosGN3rqUkZ4fjBArlnCbsISJ+KCFnIAg==}
+
+ chokidar@4.0.3:
+ resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+ engines: {node: '>= 14.16.0'}
+
+ clsx@2.1.1:
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+ engines: {node: '>=6'}
+
+ color-name@2.0.0:
+ resolution: {integrity: sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==}
+ engines: {node: '>=12.20'}
+
+ color-parse@2.0.2:
+ resolution: {integrity: sha512-eCtOz5w5ttWIUcaKLiktF+DxZO1R9KLNY/xhbV6CkhM7sR3GhVghmt6X6yOnzeaM24po+Z9/S1apbXMwA3Iepw==}
+
+ color-rgba@3.0.0:
+ resolution: {integrity: sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==}
+
+ color-space@2.3.1:
+ resolution: {integrity: sha512-5DJdKYwoDji3ik/i0xSn+SiwXsfwr+1FEcCMUz2GS5speGCfGSbBMOLd84SDUBOuX8y4CvdFJmOBBJuC4wp7sQ==}
+
+ cookie@0.6.0:
+ resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
+ engines: {node: '>= 0.6'}
+
+ debug@4.4.0:
+ resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
+ devalue@5.1.1:
+ resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==}
+
+ earcut@3.0.1:
+ resolution: {integrity: sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==}
+
+ esbuild@0.24.2:
+ resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ esm-env@1.2.2:
+ resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
+
+ esrap@1.4.3:
+ resolution: {integrity: sha512-Xddc1RsoFJ4z9nR7W7BFaEPIp4UXoeQ0+077UdWLxbafMQFyU79sQJMk7kxNgRwQ9/aVgaKacCHC2pUACGwmYw==}
+
+ fdir@6.4.3:
+ resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ geotiff@2.1.3:
+ resolution: {integrity: sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==}
+ engines: {node: '>=10.19'}
+
+ import-meta-resolve@4.1.0:
+ resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
+
+ is-reference@3.0.3:
+ resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
+
+ jdenticon@3.3.0:
+ resolution: {integrity: sha512-DhuBRNRIybGPeAjMjdHbkIfiwZCCmf8ggu7C49jhp6aJ7DYsZfudnvnTY5/1vgUhrGA7JaDAx1WevnpjCPvaGg==}
+ engines: {node: '>=6.4.0'}
+ hasBin: true
+
+ kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+
+ lerc@3.0.0:
+ resolution: {integrity: sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==}
+
+ locate-character@3.0.0:
+ resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
+
+ magic-string@0.30.17:
+ resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+
+ mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+
+ mrmime@2.0.0:
+ resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
+ engines: {node: '>=10'}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ nanoid@3.3.8:
+ resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ ol@10.4.0:
+ resolution: {integrity: sha512-gv3voS4wgej1WVvdCz2ZIBq3lPWy8agaf0094E79piz8IGQzHiOWPs2in1pdoPmuTNvcqGqyUFG3IbxNE6n08g==}
+
+ pako@2.1.0:
+ resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==}
+
+ parse-headers@2.0.5:
+ resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==}
+
+ pbf@4.0.1:
+ resolution: {integrity: sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==}
+ hasBin: true
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ pocketbase@0.25.1:
+ resolution: {integrity: sha512-2IH0KLI/qMNR/E17C7BGWX2FxW7Tead+igLHOWZ45P56v/NyVT18Jnmddeft+3qWWGL1Hog2F8bc4orWV/+Fcg==}
+
+ postcss@8.5.1:
+ resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ protocol-buffers-schema@3.6.0:
+ resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==}
+
+ quick-lru@6.1.2:
+ resolution: {integrity: sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==}
+ engines: {node: '>=12'}
+
+ quickselect@3.0.0:
+ resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==}
+
+ rbush@4.0.1:
+ resolution: {integrity: sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==}
+
+ readdirp@4.1.1:
+ resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==}
+ engines: {node: '>= 14.18.0'}
+
+ resolve-protobuf-schema@2.1.0:
+ resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==}
+
+ rollup@4.34.1:
+ resolution: {integrity: sha512-iYZ/+PcdLYSGfH3S+dGahlW/RWmsqDhLgj1BT9DH/xXJ0ggZN7xkdP9wipPNjjNLczI+fmMLmTB9pye+d2r4GQ==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ sade@1.8.1:
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+ engines: {node: '>=6'}
+
+ set-cookie-parser@2.7.1:
+ resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
+
+ sirv@3.0.0:
+ resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==}
+ engines: {node: '>=18'}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ svelte-check@4.1.4:
+ resolution: {integrity: sha512-v0j7yLbT29MezzaQJPEDwksybTE2Ups9rUxEXy92T06TiA0cbqcO8wAOwNUVkFW6B0hsYHA+oAX3BS8b/2oHtw==}
+ engines: {node: '>= 18.0.0'}
+ hasBin: true
+ peerDependencies:
+ svelte: ^4.0.0 || ^5.0.0-next.0
+ typescript: '>=5.0.0'
+
+ svelte@5.19.7:
+ resolution: {integrity: sha512-I0UUp2MpB5gF8aqHJVklOcRcoLgQNnBolSwLMMqDepE9gVwmGeYBmJp1/obzae72QpxdPIymA4AunIm2x70LBg==}
+ engines: {node: '>=18'}
+
+ totalist@3.0.1:
+ resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
+ engines: {node: '>=6'}
+
+ typescript@5.7.3:
+ resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ undici-types@6.20.0:
+ resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
+
+ vite@6.0.11:
+ resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+ jiti: '>=1.21.0'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ vitefu@1.0.5:
+ resolution: {integrity: sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==}
+ peerDependencies:
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
+ web-worker@1.5.0:
+ resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==}
+
+ xml-utils@1.10.1:
+ resolution: {integrity: sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==}
+
+ zimmerframe@1.1.2:
+ resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==}
+
+ zstddec@0.1.0:
+ resolution: {integrity: sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==}
+
+snapshots:
+
+ '@ampproject/remapping@2.3.0':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@esbuild/aix-ppc64@0.24.2':
+ optional: true
+
+ '@esbuild/android-arm64@0.24.2':
+ optional: true
+
+ '@esbuild/android-arm@0.24.2':
+ optional: true
+
+ '@esbuild/android-x64@0.24.2':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.24.2':
+ optional: true
+
+ '@esbuild/darwin-x64@0.24.2':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.24.2':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.24.2':
+ optional: true
+
+ '@esbuild/linux-arm64@0.24.2':
+ optional: true
+
+ '@esbuild/linux-arm@0.24.2':
+ optional: true
+
+ '@esbuild/linux-ia32@0.24.2':
+ optional: true
+
+ '@esbuild/linux-loong64@0.24.2':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.24.2':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.24.2':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.24.2':
+ optional: true
+
+ '@esbuild/linux-s390x@0.24.2':
+ optional: true
+
+ '@esbuild/linux-x64@0.24.2':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.24.2':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.24.2':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.24.2':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.24.2':
+ optional: true
+
+ '@esbuild/sunos-x64@0.24.2':
+ optional: true
+
+ '@esbuild/win32-arm64@0.24.2':
+ optional: true
+
+ '@esbuild/win32-ia32@0.24.2':
+ optional: true
+
+ '@esbuild/win32-x64@0.24.2':
+ optional: true
+
+ '@jridgewell/gen-mapping@0.3.8':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@petamoriken/float16@3.9.1': {}
+
+ '@polka/url@1.0.0-next.28': {}
+
+ '@rollup/rollup-android-arm-eabi@4.34.1':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.34.1':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.34.1':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.34.1':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.34.1':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.34.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.34.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.34.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.34.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.34.1':
+ optional: true
+
+ '@rollup/rollup-linux-loongarch64-gnu@4.34.1':
+ optional: true
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.34.1':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.34.1':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.34.1':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.34.1':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.34.1':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.34.1':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.34.1':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.34.1':
+ optional: true
+
+ '@sveltejs/adapter-auto@4.0.0(@sveltejs/kit@2.17.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1)))(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1)))':
+ dependencies:
+ '@sveltejs/kit': 2.17.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1)))(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1))
+ import-meta-resolve: 4.1.0
+
+ '@sveltejs/kit@2.17.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1)))(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1))':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1))
+ '@types/cookie': 0.6.0
+ cookie: 0.6.0
+ devalue: 5.1.1
+ esm-env: 1.2.2
+ import-meta-resolve: 4.1.0
+ kleur: 4.1.5
+ magic-string: 0.30.17
+ mrmime: 2.0.0
+ sade: 1.8.1
+ set-cookie-parser: 2.7.1
+ sirv: 3.0.0
+ svelte: 5.19.7
+ vite: 6.0.11(@types/node@22.13.1)
+
+ '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1)))(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1))':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1))
+ debug: 4.4.0
+ svelte: 5.19.7
+ vite: 6.0.11(@types/node@22.13.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1))':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1)))(svelte@5.19.7)(vite@6.0.11(@types/node@22.13.1))
+ debug: 4.4.0
+ deepmerge: 4.3.1
+ kleur: 4.1.5
+ magic-string: 0.30.17
+ svelte: 5.19.7
+ vite: 6.0.11(@types/node@22.13.1)
+ vitefu: 1.0.5(vite@6.0.11(@types/node@22.13.1))
+ transitivePeerDependencies:
+ - supports-color
+
+ '@types/cookie@0.6.0': {}
+
+ '@types/estree@1.0.6': {}
+
+ '@types/node@22.13.1':
+ dependencies:
+ undici-types: 6.20.0
+
+ '@types/rbush@4.0.0': {}
+
+ acorn-typescript@1.4.13(acorn@8.14.0):
+ dependencies:
+ acorn: 8.14.0
+
+ acorn@8.14.0: {}
+
+ aria-query@5.3.2: {}
+
+ axobject-query@4.1.0: {}
+
+ canvas-renderer@2.2.1:
+ dependencies:
+ '@types/node': 22.13.1
+
+ chokidar@4.0.3:
+ dependencies:
+ readdirp: 4.1.1
+
+ clsx@2.1.1: {}
+
+ color-name@2.0.0: {}
+
+ color-parse@2.0.2:
+ dependencies:
+ color-name: 2.0.0
+
+ color-rgba@3.0.0:
+ dependencies:
+ color-parse: 2.0.2
+ color-space: 2.3.1
+
+ color-space@2.3.1: {}
+
+ cookie@0.6.0: {}
+
+ debug@4.4.0:
+ dependencies:
+ ms: 2.1.3
+
+ deepmerge@4.3.1: {}
+
+ devalue@5.1.1: {}
+
+ earcut@3.0.1: {}
+
+ esbuild@0.24.2:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.24.2
+ '@esbuild/android-arm': 0.24.2
+ '@esbuild/android-arm64': 0.24.2
+ '@esbuild/android-x64': 0.24.2
+ '@esbuild/darwin-arm64': 0.24.2
+ '@esbuild/darwin-x64': 0.24.2
+ '@esbuild/freebsd-arm64': 0.24.2
+ '@esbuild/freebsd-x64': 0.24.2
+ '@esbuild/linux-arm': 0.24.2
+ '@esbuild/linux-arm64': 0.24.2
+ '@esbuild/linux-ia32': 0.24.2
+ '@esbuild/linux-loong64': 0.24.2
+ '@esbuild/linux-mips64el': 0.24.2
+ '@esbuild/linux-ppc64': 0.24.2
+ '@esbuild/linux-riscv64': 0.24.2
+ '@esbuild/linux-s390x': 0.24.2
+ '@esbuild/linux-x64': 0.24.2
+ '@esbuild/netbsd-arm64': 0.24.2
+ '@esbuild/netbsd-x64': 0.24.2
+ '@esbuild/openbsd-arm64': 0.24.2
+ '@esbuild/openbsd-x64': 0.24.2
+ '@esbuild/sunos-x64': 0.24.2
+ '@esbuild/win32-arm64': 0.24.2
+ '@esbuild/win32-ia32': 0.24.2
+ '@esbuild/win32-x64': 0.24.2
+
+ esm-env@1.2.2: {}
+
+ esrap@1.4.3:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ fdir@6.4.3: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ geotiff@2.1.3:
+ dependencies:
+ '@petamoriken/float16': 3.9.1
+ lerc: 3.0.0
+ pako: 2.1.0
+ parse-headers: 2.0.5
+ quick-lru: 6.1.2
+ web-worker: 1.5.0
+ xml-utils: 1.10.1
+ zstddec: 0.1.0
+
+ import-meta-resolve@4.1.0: {}
+
+ is-reference@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.6
+
+ jdenticon@3.3.0:
+ dependencies:
+ canvas-renderer: 2.2.1
+
+ kleur@4.1.5: {}
+
+ lerc@3.0.0: {}
+
+ locate-character@3.0.0: {}
+
+ magic-string@0.30.17:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ mri@1.2.0: {}
+
+ mrmime@2.0.0: {}
+
+ ms@2.1.3: {}
+
+ nanoid@3.3.8: {}
+
+ ol@10.4.0:
+ dependencies:
+ '@types/rbush': 4.0.0
+ color-rgba: 3.0.0
+ color-space: 2.3.1
+ earcut: 3.0.1
+ geotiff: 2.1.3
+ pbf: 4.0.1
+ rbush: 4.0.1
+
+ pako@2.1.0: {}
+
+ parse-headers@2.0.5: {}
+
+ pbf@4.0.1:
+ dependencies:
+ resolve-protobuf-schema: 2.1.0
+
+ picocolors@1.1.1: {}
+
+ pocketbase@0.25.1: {}
+
+ postcss@8.5.1:
+ dependencies:
+ nanoid: 3.3.8
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ protocol-buffers-schema@3.6.0: {}
+
+ quick-lru@6.1.2: {}
+
+ quickselect@3.0.0: {}
+
+ rbush@4.0.1:
+ dependencies:
+ quickselect: 3.0.0
+
+ readdirp@4.1.1: {}
+
+ resolve-protobuf-schema@2.1.0:
+ dependencies:
+ protocol-buffers-schema: 3.6.0
+
+ rollup@4.34.1:
+ dependencies:
+ '@types/estree': 1.0.6
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.34.1
+ '@rollup/rollup-android-arm64': 4.34.1
+ '@rollup/rollup-darwin-arm64': 4.34.1
+ '@rollup/rollup-darwin-x64': 4.34.1
+ '@rollup/rollup-freebsd-arm64': 4.34.1
+ '@rollup/rollup-freebsd-x64': 4.34.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.34.1
+ '@rollup/rollup-linux-arm-musleabihf': 4.34.1
+ '@rollup/rollup-linux-arm64-gnu': 4.34.1
+ '@rollup/rollup-linux-arm64-musl': 4.34.1
+ '@rollup/rollup-linux-loongarch64-gnu': 4.34.1
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.34.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.34.1
+ '@rollup/rollup-linux-s390x-gnu': 4.34.1
+ '@rollup/rollup-linux-x64-gnu': 4.34.1
+ '@rollup/rollup-linux-x64-musl': 4.34.1
+ '@rollup/rollup-win32-arm64-msvc': 4.34.1
+ '@rollup/rollup-win32-ia32-msvc': 4.34.1
+ '@rollup/rollup-win32-x64-msvc': 4.34.1
+ fsevents: 2.3.3
+
+ sade@1.8.1:
+ dependencies:
+ mri: 1.2.0
+
+ set-cookie-parser@2.7.1: {}
+
+ sirv@3.0.0:
+ dependencies:
+ '@polka/url': 1.0.0-next.28
+ mrmime: 2.0.0
+ totalist: 3.0.1
+
+ source-map-js@1.2.1: {}
+
+ svelte-check@4.1.4(svelte@5.19.7)(typescript@5.7.3):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ chokidar: 4.0.3
+ fdir: 6.4.3
+ picocolors: 1.1.1
+ sade: 1.8.1
+ svelte: 5.19.7
+ typescript: 5.7.3
+ transitivePeerDependencies:
+ - picomatch
+
+ svelte@5.19.7:
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@types/estree': 1.0.6
+ acorn: 8.14.0
+ acorn-typescript: 1.4.13(acorn@8.14.0)
+ aria-query: 5.3.2
+ axobject-query: 4.1.0
+ clsx: 2.1.1
+ esm-env: 1.2.2
+ esrap: 1.4.3
+ is-reference: 3.0.3
+ locate-character: 3.0.0
+ magic-string: 0.30.17
+ zimmerframe: 1.1.2
+
+ totalist@3.0.1: {}
+
+ typescript@5.7.3: {}
+
+ undici-types@6.20.0: {}
+
+ vite@6.0.11(@types/node@22.13.1):
+ dependencies:
+ esbuild: 0.24.2
+ postcss: 8.5.1
+ rollup: 4.34.1
+ optionalDependencies:
+ '@types/node': 22.13.1
+ fsevents: 2.3.3
+
+ vitefu@1.0.5(vite@6.0.11(@types/node@22.13.1)):
+ optionalDependencies:
+ vite: 6.0.11(@types/node@22.13.1)
+
+ web-worker@1.5.0: {}
+
+ xml-utils@1.10.1: {}
+
+ zimmerframe@1.1.2: {}
+
+ zstddec@0.1.0: {}
diff --git a/src/app.css b/src/app.css
new file mode 100644
index 0000000..a7f6844
--- /dev/null
+++ b/src/app.css
@@ -0,0 +1,60 @@
+/* inter-regular - latin */
+@font-face {
+ font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
+ font-family: 'Inter';
+ font-style: normal;
+ font-weight: 400;
+ src: url('/fonts/inter-v18-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
+}
+
+* {
+ --color-primary-a0: #ffffff;
+ --color-primary-a10: #e1e6fe;
+ --color-primary-a20: #c2cdfd;
+ --color-primary-a30: #a1b5fb;
+ --color-primary-a40: #7d9df9;
+ --color-primary-a50: #5087f6;
+ --color-primary-a60: #436bc0;
+ --color-primary-a70: #364f8c;
+ --color-primary-a80: #28365c;
+ --color-primary-a90: #191e2f;
+ --color-primary-a100: #000000;
+ --text-color: black;
+
+ box-sizing: border-box;
+ font-size: inherit;
+}
+
+html, body {
+ position: relative;
+ margin: 0;
+ padding: 0;
+ background-color: white;
+ font-size: 1rem;
+}
+
+p, a, h1, h2, h3, h4, h5, h6 {
+ font-family: Inter, Arial, sans-serif;
+ color: var(--text-color);
+}
+
+h1, h2, h3, h4, h5, h6 {
+ font-weight: bold;
+}
+
+p {
+ line-height: 1.35rem;
+}
+
+h1 {
+ font-size: 1.5rem;
+}
+
+h2 {
+ font-size: 1.2rem;
+}
+
+svg {
+ max-width: 100%;
+ height: auto;
+}
diff --git a/src/app.d.ts b/src/app.d.ts
new file mode 100644
index 0000000..da08e6d
--- /dev/null
+++ b/src/app.d.ts
@@ -0,0 +1,13 @@
+// See https://svelte.dev/docs/kit/types#app.d.ts
+// for information about these interfaces
+declare global {
+ namespace App {
+ // interface Error {}
+ // interface Locals {}
+ // interface PageData {}
+ // interface PageState {}
+ // interface Platform {}
+ }
+}
+
+export {};
diff --git a/src/app.html b/src/app.html
new file mode 100644
index 0000000..4170f52
--- /dev/null
+++ b/src/app.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+ %sveltekit.head%
+
+
+ %sveltekit.body%
+
+
diff --git a/src/hooks.client.js b/src/hooks.client.js
new file mode 100644
index 0000000..51625bf
--- /dev/null
+++ b/src/hooks.client.js
@@ -0,0 +1,5 @@
+import {initializePocketBase} from "$lib/pocketbase.js";
+
+export const init = async () => {
+ initializePocketBase()
+}
\ No newline at end of file
diff --git a/src/hooks.server.js b/src/hooks.server.js
new file mode 100644
index 0000000..51625bf
--- /dev/null
+++ b/src/hooks.server.js
@@ -0,0 +1,5 @@
+import {initializePocketBase} from "$lib/pocketbase.js";
+
+export const init = async () => {
+ initializePocketBase()
+}
\ No newline at end of file
diff --git a/src/lib/components/ContainerGridSingle.svelte b/src/lib/components/ContainerGridSingle.svelte
new file mode 100644
index 0000000..d8dc5db
--- /dev/null
+++ b/src/lib/components/ContainerGridSingle.svelte
@@ -0,0 +1,36 @@
+
+
+
+
+ {@render children()}
+
+
+
+
+
diff --git a/src/lib/components/ContentGrid.svelte b/src/lib/components/ContentGrid.svelte
new file mode 100644
index 0000000..10781a7
--- /dev/null
+++ b/src/lib/components/ContentGrid.svelte
@@ -0,0 +1,13 @@
+
+
+
+ {@render children()}
+
+
+
\ No newline at end of file
diff --git a/src/lib/components/EventList.svelte b/src/lib/components/EventList.svelte
new file mode 100644
index 0000000..1cf288e
--- /dev/null
+++ b/src/lib/components/EventList.svelte
@@ -0,0 +1,27 @@
+
+
+
+ {#if events}
+ {#each events as event}
+
+
{event?.title ?? "No title"}
+
{@html event?.description}
+
Details
+
+ {/each}
+ {:else}
+
No events
+ {/if}
+
+
+
diff --git a/src/lib/components/FooterNavigation.svelte b/src/lib/components/FooterNavigation.svelte
new file mode 100644
index 0000000..b578873
--- /dev/null
+++ b/src/lib/components/FooterNavigation.svelte
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/components/RoundedAvatar.svelte b/src/lib/components/RoundedAvatar.svelte
new file mode 100644
index 0000000..48fa0eb
--- /dev/null
+++ b/src/lib/components/RoundedAvatar.svelte
@@ -0,0 +1,32 @@
+
+
+
+ {#if src}
+
+ {:else}
+ {@const randomAvatar = jdenticon.toSvg(Navigator.userAgent, 320, { padding: 0 })}
+
+ {@html randomAvatar}
+
+ {/if}
+
+
+
\ No newline at end of file
diff --git a/src/lib/index.js b/src/lib/index.js
new file mode 100644
index 0000000..c7ab773
--- /dev/null
+++ b/src/lib/index.js
@@ -0,0 +1 @@
+// place files you want to import through the `$lib` alias in this folder.
\ No newline at end of file
diff --git a/src/lib/pocketbase.js b/src/lib/pocketbase.js
new file mode 100644
index 0000000..67fb695
--- /dev/null
+++ b/src/lib/pocketbase.js
@@ -0,0 +1,13 @@
+import PocketBase from 'pocketbase';
+import {PUBLIC_POCKETBASE_URL} from "$env/static/public";
+
+let pocketbase;
+
+export function initializePocketBase() {
+ pocketbase = new PocketBase(PUBLIC_POCKETBASE_URL);
+ return pocketbase;
+}
+
+export function usePocketBase() {
+ return pocketbase;
+}
\ No newline at end of file
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
new file mode 100644
index 0000000..728b816
--- /dev/null
+++ b/src/routes/+layout.svelte
@@ -0,0 +1,27 @@
+
+
+
+ {@render children()}
+ {#snippet footer()}
+
+ {/snippet}
+
+
+
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
new file mode 100644
index 0000000..4d6d804
--- /dev/null
+++ b/src/routes/+page.svelte
@@ -0,0 +1,25 @@
+
+
+
+ {#if user}
+
+ Hallo {user.first_name}!
+ {:else}
+
+ Hallo Besucher!
+ {/if}
+ Du befinest dich auf der Anmeldeseite des Kölner Stammtischs. Schau dir die unteren Menüpunkte an, falls du mehr erfahren möchtest.
+
diff --git a/src/routes/events/+page.js b/src/routes/events/+page.js
new file mode 100644
index 0000000..8c03fc2
--- /dev/null
+++ b/src/routes/events/+page.js
@@ -0,0 +1,10 @@
+import PocketBase from "pocketbase";
+import {PUBLIC_POCKETBASE_URL} from "$env/static/public";
+
+export const load = async ({ fetch }) => {
+ const pb = new PocketBase(PUBLIC_POCKETBASE_URL);
+
+ return {
+ eventCollection: await pb.collection("events").getFullList({fetch})
+ };
+}
\ No newline at end of file
diff --git a/src/routes/events/+page.svelte b/src/routes/events/+page.svelte
new file mode 100644
index 0000000..53be557
--- /dev/null
+++ b/src/routes/events/+page.svelte
@@ -0,0 +1,8 @@
+
+
+Events
+
diff --git a/src/routes/events/[slug]/+page.js b/src/routes/events/[slug]/+page.js
new file mode 100644
index 0000000..231f536
--- /dev/null
+++ b/src/routes/events/[slug]/+page.js
@@ -0,0 +1,19 @@
+import PocketBase from "pocketbase";
+import { PUBLIC_POCKETBASE_URL } from "$env/static/public";
+import { error } from '@sveltejs/kit'
+
+export const load = async ({ params, fetch }) => {
+ const pb = new PocketBase(PUBLIC_POCKETBASE_URL);
+ let event = null;
+ try {
+ event = await pb.collection("events").getFirstListItem("slug = '" + params.slug + "'", {fetch, expand: "location"});
+ } catch (e) {
+ throw error(404, {
+ message: "Not found"
+ });
+ }
+
+ return {
+ event
+ };
+}
\ No newline at end of file
diff --git a/src/routes/events/[slug]/+page.svelte b/src/routes/events/[slug]/+page.svelte
new file mode 100644
index 0000000..782584f
--- /dev/null
+++ b/src/routes/events/[slug]/+page.svelte
@@ -0,0 +1,71 @@
+
+
+
+
{event?.title ?? "No title"}
+ {#if event?.description}
+ {@html event.description}
+ {:else}
+
{event?.description ?? "No description"}
+ {/if}
+
+
+
Location
+
+ {event?.expand?.location?.name}
+ {event?.expand?.location?.address}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/rules/+page.svelte b/src/routes/rules/+page.svelte
new file mode 100644
index 0000000..197d9ac
--- /dev/null
+++ b/src/routes/rules/+page.svelte
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/static/favicon.png b/static/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097
GIT binary patch
literal 1571
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