Prettier install & format

This commit is contained in:
2025-01-24 14:17:23 +00:00
parent ecff0a202c
commit 683151d591
27 changed files with 616 additions and 613 deletions

View File

@@ -11,6 +11,7 @@ This project uses `devenv.nix` to manage the development environment, which will
### Installation ### Installation
1. Clone the repository: 1. Clone the repository:
```bash ```bash
git clone https://github.com/Cian-H/am-d-model.eu.git git clone https://github.com/Cian-H/am-d-model.eu.git
cd am-d-model.eu cd am-d-model.eu
@@ -54,4 +55,3 @@ implemented in future but for now, simplicity is a virtue.
## License ## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

BIN
bun.lockb

Binary file not shown.

View File

@@ -1,4 +1,4 @@
# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json # yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
inputs: inputs:
nixpkgs: nixpkgs:
url: github:cachix/devenv-nixpkgs/rolling url: github:cachix/devenv-nixpkgs/rolling

View File

@@ -1,44 +1,43 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json # yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
services: services:
site: site:
build: . build: .
networks: networks:
- am-d-model-network - am-d-model-network
expose: expose:
- "3000" - "3000"
restart: unless-stopped restart: unless-stopped
labels: labels:
- "io.containers.autoupdate=local" - "io.containers.autoupdate=local"
caddy: caddy:
image: docker.io/library/caddy:latest image: docker.io/library/caddy:latest
depends_on: depends_on:
- site - site
networks: networks:
- am-d-model-network - am-d-model-network
ports: ports:
- "80:80" - "80:80"
- "443:443" - "443:443"
volumes: volumes:
- caddy_data:/data - caddy_data:/data
- ./caddy:/etc/caddy - ./caddy:/etc/caddy
restart: unless-stopped restart: unless-stopped
labels: labels:
- "io.containers.autoupdate=registry" - "io.containers.autoupdate=registry"
repo-placeholder: repo-placeholder:
image: docker.io/nginx:alpine image: docker.io/nginx:alpine
networks: networks:
- am-d-model-network - am-d-model-network
expose: expose:
- "80" - "80"
volumes: volumes:
- ./repo:/usr/share/nginx/html - ./repo:/usr/share/nginx/html
networks: networks:
am-d-model-network: am-d-model-network:
name: am-d-model-network name: am-d-model-network
volumes: volumes:
caddy_data: caddy_data:

View File

@@ -1,12 +1,12 @@
{ {
"extends": "./.svelte-kit/tsconfig.json", "extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": { "compilerOptions": {
"esModuleInterop": true, "esModuleInterop": true,
"forceConsistentCasingInFileNames": true, "forceConsistentCasingInFileNames": true,
"resolveJsonModule": true, "resolveJsonModule": true,
"skipLibCheck": true, "skipLibCheck": true,
"sourceMap": true, "sourceMap": true,
"module": "NodeNext", "module": "NodeNext",
"moduleResolution": "NodeNext" "moduleResolution": "NodeNext"
} }
} }

View File

@@ -16,6 +16,7 @@
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"globals": "^15.14.0", "globals": "^15.14.0",
"publint": "^0.2.12", "publint": "^0.2.12",
"prettier": "^3.4.2",
"sass": "^1.83.1", "sass": "^1.83.1",
"svelte": "^5.17.3", "svelte": "^5.17.3",
"svelte-preprocess": "^5.1.4", "svelte-preprocess": "^5.1.4",

View File

@@ -1,6 +1,6 @@
export default { export default {
plugins: { plugins: {
tailwindcss: {}, tailwindcss: {},
autoprefixer: {} autoprefixer: {},
} },
}; };

8
prettier.config.js Normal file
View File

@@ -0,0 +1,8 @@
const config = {
singleQuote: false,
tabWidth: 4,
trailingComma: "all",
printWidth: 100,
};
export default config;

View File

@@ -1,6 +1,6 @@
<h1>This is a placeholder page</h1> <h1>This is a placeholder page</h1>
<h2>Please wait patiently while I set up the data repository</h2> <h2>Please wait patiently while I set up the data repository</h2>
<p> <p>
The data repository will be deployed as soon as possible, we just The data repository will be deployed as soon as possible, we just need to figure out some
need to figure out some details first before deployment happens. details first before deployment happens.
</p> </p>

View File

@@ -1,3 +1,3 @@
@import 'tailwindcss/base'; @import "tailwindcss/base";
@import 'tailwindcss/components'; @import "tailwindcss/components";
@import 'tailwindcss/utilities' @import "tailwindcss/utilities";

View File

@@ -1,15 +1,13 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head%
</head>
<head> <body data-sveltekit-preload-data="hover">
<meta charset="utf-8" /> <div>%sveltekit.body%</div>
<link rel="icon" href="%sveltekit.assets%/favicon.png" /> </body>
<meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div>%sveltekit.body%</div>
</body>
</html> </html>

View File

@@ -1,10 +1,12 @@
import { goto } from "$app/navigation"; import { goto } from "$app/navigation";
import { error } from '@sveltejs/kit'; import { error } from "@sveltejs/kit";
export const navigation = { export const navigation = {
toHome: () => goto("/"), toHome: () => goto("/"),
toAbout: () => goto("/about"), toAbout: () => goto("/about"),
toContact: () => goto("/contact"), toContact: () => goto("/contact"),
toRepository: () => goto("/repo"), toRepository: () => goto("/repo"),
to404: () => { throw error(404, 'Page not found') }, to404: () => {
throw error(404, "Page not found");
},
}; };

View File

@@ -1,64 +1,65 @@
.form-container { .form-container {
input,
textarea {
transition:
border-color 0.2s ease,
box-shadow 0.2s ease;
input, &:focus {
textarea { outline: none;
transition: border-color 0.2s ease, box-shadow 0.2s ease; box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
}
&:focus { &.error {
outline: none; border-color: #ef4444;
box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
&:focus {
box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.2);
}
}
} }
&.error { .submit-button {
border-color: #ef4444; width: auto;
padding: 0.5rem 1rem;
background-color: var(--background);
color: white;
border-radius: 0.375rem;
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
transition: background-color 0.2s ease;
&:focus { &:hover:not(:disabled) {
box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.2); background-color: var(--cpalettemedium);
} }
}
}
.submit-button { &:focus {
width: auto; outline: none;
padding: 0.5rem 1rem; box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
background-color: var(--background); }
color: white;
border-radius: 0.375rem;
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
transition: background-color 0.2s ease;
&:hover:not(:disabled) { &:disabled {
background-color: var(--cpalettemedium); background-color: #93c5fd;
cursor: not-allowed;
}
} }
&:focus { // Add subtle animation for success message
outline: none; .success-message {
box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2); animation: fadeIn 0.3s ease-in-out;
} }
&:disabled { @keyframes fadeIn {
background-color: #93c5fd; from {
cursor: not-allowed; opacity: 0;
} transform: translateY(-10px);
} }
// Add subtle animation for success message to {
.success-message { opacity: 1;
animation: fadeIn 0.3s ease-in-out; transform: translateY(0);
} }
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(-10px);
} }
to {
opacity: 1;
transform: translateY(0);
}
}
} }

View File

@@ -1,142 +1,142 @@
.navigation-footer { .navigation-footer {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
background: #ffffff; background: #ffffff;
width: 100%; width: 100%;
height: 240px; height: 240px;
} }
.navigation-footer-column { .navigation-footer-column {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-wrap: wrap; flex-wrap: wrap;
position: relative; position: relative;
height: 100%; height: 100%;
width: 33%; width: 33%;
padding: 32px; padding: 32px;
justify-content: center; justify-content: center;
} }
.navigation-footer-column-left { .navigation-footer-column-left {
@extend .navigation-footer-column; @extend .navigation-footer-column;
justify-content: space-between; justify-content: space-between;
} }
.navigation-footer-column-mid { .navigation-footer-column-mid {
@extend .navigation-footer-column; @extend .navigation-footer-column;
align-items: center; align-items: center;
} }
.navigation-footer-column-right { .navigation-footer-column-right {
@extend .navigation-footer-column; @extend .navigation-footer-column;
align-items: center; align-items: center;
} }
.navigation-footer-site-name { .navigation-footer-site-name {
color: #000000; color: #000000;
text-align: left; text-align: left;
font-family: "Assistant", sans-serif; font-family: "Assistant", sans-serif;
font-size: 24px; font-size: 24px;
position: relative; position: relative;
padding: 8px; padding: 8px;
} }
.navigation-footer-topic-column { .navigation-footer-topic-column {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-wrap: wrap; flex-wrap: wrap;
position: relative; position: relative;
} }
.navigation-footer-topic { .navigation-footer-topic {
color: #000000; color: #000000;
font-family: "Assistant", sans-serif; font-family: "Assistant", sans-serif;
font-size: 28px; font-size: 28px;
font-weight: 600; font-weight: 600;
position: relative; position: relative;
} }
.navigation-footer-link { .navigation-footer-link {
color: #454545; color: #454545;
font-family: "Assistant", sans-serif; font-family: "Assistant", sans-serif;
font-size: 24px; font-size: 24px;
text-decoration: underline; text-decoration: underline;
position: relative; position: relative;
} }
.navigation-footer-social-icon { .navigation-footer-social-icon {
width: 24px; width: 24px;
height: 24px; height: 24px;
position: relative; position: relative;
} }
.navigation-footer-social-media { .navigation-footer-social-media {
// display: flex; # temporarily disable // display: flex; # temporarily disable
display: none; display: none;
flex-direction: row; flex-direction: row;
gap: var(--spacing-xs, 8px); gap: var(--spacing-xs, 8px);
align-items: flex-start; align-items: flex-start;
justify-content: flex-start; justify-content: flex-start;
position: relative; position: relative;
} }
.navigation-footer-buttons-icon { .navigation-footer-buttons-icon {
border-radius: 4px; border-radius: 4px;
padding: 8px; padding: 8px;
width: 42px; width: 42px;
height: 42px; height: 42px;
position: relative; position: relative;
} }
.navigation-footer-return { .navigation-footer-return {
color: rgba(70, 70, 70, 0.5); color: rgba(70, 70, 70, 0.5);
font-family: "Assistant", sans-serif; font-family: "Assistant", sans-serif;
font-size: 16px; font-size: 16px;
position: relative; position: relative;
} }
@media (max-width: 820px) { @media (max-width: 820px) {
.navigation-footer { .navigation-footer {
height: 100%; height: 100%;
flex-direction: column-reverse; flex-direction: column-reverse;
} }
.navigation-footer-column { .navigation-footer-column {
width: 100%; width: 100%;
} }
.navigation-footer-column-left { .navigation-footer-column-left {
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
} }
.navigation-footer-column-mid { .navigation-footer-column-mid {
align-items: center; align-items: center;
} }
.navigation-footer-column-right { .navigation-footer-column-right {
align-items: center; align-items: center;
} }
.navigation-footer-topic-column { .navigation-footer-topic-column {
flex-direction: row; flex-direction: row;
width: 100%; width: 100%;
justify-content: space-between; justify-content: space-between;
} }
} }
@media (max-width: 620px) { @media (max-width: 620px) {
.navigation-footer-column-left { .navigation-footer-column-left {
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.navigation-footer-topic-column { .navigation-footer-topic-column {
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
} }

View File

@@ -1,81 +1,80 @@
.navigation-header { .navigation-header {
display: flex; display: flex;
flex-direction: row-reverse; flex-direction: row-reverse;
width: 100%; width: 100%;
justify-content: space-between; justify-content: space-between;
} }
.navigation-header { .navigation-header {
position: relative; position: relative;
height: 128px; height: 128px;
width: 100%; width: 100%;
padding-bottom: 120px; padding-bottom: 120px;
} }
.navigation-header-items { .navigation-header-items {
gap: 48px; gap: 48px;
align-items: center; align-items: center;
position: relative; position: relative;
padding-top: 28px; padding-top: 28px;
padding-right: 96px; padding-right: 96px;
padding-left: 32px; padding-left: 32px;
} }
.navigation-header-link { .navigation-header-link {
color: #000000; color: #000000;
font-family: var(--navigation-header-font-family); font-family: var(--navigation-header-font-family);
text-align: left; text-align: left;
font-size: var(--navigation-header-font-size); font-size: var(--navigation-header-font-size);
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
} }
.navigation-header-button { .navigation-header-button {
background: #000000; background: #000000;
border-radius: 8px; border-radius: 8px;
padding: 14px 24px 14px 24px; padding: 14px 24px 14px 24px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
gap: 8px; gap: 8px;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-shrink: 0; flex-shrink: 0;
position: relative; position: relative;
box-shadow: var(--button-shadow-box-shadow, box-shadow: var(--button-shadow-box-shadow, 0px 1px 2px 0px rgba(0, 0, 0, 0.05));
0px 1px 2px 0px rgba(0, 0, 0, 0.05));
} }
.navigation-header-button-text { .navigation-header-button-text {
@extend .navigation-header-link; @extend .navigation-header-link;
color: var(--cpalettecomplimentary); color: var(--cpalettecomplimentary);
text-decoration: none; text-decoration: none;
} }
.navigation-header-site-name { .navigation-header-site-name {
color: #000000; color: #000000;
text-align: left; text-align: left;
font-family: "Assistant", sans-serif; font-family: "Assistant", sans-serif;
font-size: 24px; font-size: 24px;
position: relative; position: relative;
padding: 8px; padding: 8px;
} }
.flexrow-right { .flexrow-right {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: flex-end; justify-content: flex-end;
} }
.flexrow-left { .flexrow-left {
@extend .flexrow-right; @extend .flexrow-right;
justify-content: flex-start; justify-content: flex-start;
} }
@media (max-width: 750px) { @media (max-width: 750px) {
.navigation-header-items { .navigation-header-items {
display: none; display: none;
} }
} }

View File

@@ -45,5 +45,4 @@
--contact-corner-round: 28px; --contact-corner-round: 28px;
/* Effects */ /* Effects */
} }

View File

@@ -1,96 +1,96 @@
.btmcall { .btmcall {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
align-content: left; align-content: left;
background: #f7f7f7; background: #f7f7f7;
width: 100%; width: 100%;
position: relative; position: relative;
padding: 86px 0 86px 32px; padding: 86px 0 86px 32px;
} }
.btmcall-buttons { .btmcall-buttons {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
height: 100%; height: 100%;
max-width: 50%; max-width: 50%;
gap: 24px; gap: 24px;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
position: relative; position: relative;
padding: 0 32px 0 32px; padding: 0 32px 0 32px;
} }
@media (max-width: 640px) { @media (max-width: 640px) {
.btmcall { .btmcall {
flex-direction: column; flex-direction: column;
} }
.btmcall-buttons { .btmcall-buttons {
max-width: 100%; max-width: 100%;
padding-top: 32px padding-top: 32px;
} }
} }
.btmcall-text { .btmcall-text {
color: var(--background); color: var(--background);
text-align: left; text-align: left;
font-family: var(--bottom-call-font-family); font-family: var(--bottom-call-font-family);
font-size: var(--bottom-call-font-size-large); font-size: var(--bottom-call-font-size-large);
line-height: 72px; line-height: 72px;
padding-right: 32px; padding-right: 32px;
position: relative; position: relative;
} }
.btmcall-button1 { .btmcall-button1 {
background: var(--background); background: var(--background);
border-radius: 8px; border-radius: 8px;
padding: 20px 32px 20px 32px; padding: 20px 32px 20px 32px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
flex-shrink: 0; flex-shrink: 0;
position: relative; position: relative;
} }
.btmcall-button2 { .btmcall-button2 {
background: var(--cpalettecomplimentary, #ffffff); background: var(--cpalettecomplimentary, #ffffff);
border-radius: 8px; border-radius: 8px;
padding: 20px 32px 20px 32px; padding: 20px 32px 20px 32px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
flex-shrink: 0; flex-shrink: 0;
position: relative; position: relative;
} }
.btmcall-get-involved { .btmcall-get-involved {
color: var(--cpalettecomplimentary, #ffffff); color: var(--cpalettecomplimentary, #ffffff);
text-align: left; text-align: left;
font-family: "Assistant", sans-serif; font-family: "Assistant", sans-serif;
font-size: 24px; font-size: 24px;
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
} }
.btmcall-contact-us { .btmcall-contact-us {
color: var(--background); color: var(--background);
text-align: left; text-align: left;
font-family: "Assistant", sans-serif; font-family: "Assistant", sans-serif;
font-size: 24px; font-size: 24px;
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
} }
@media (max-width: 380px) { @media (max-width: 380px) {
.btmcall-text { .btmcall-text {
font-size: var(--bottom-call-font-size-small); font-size: var(--bottom-call-font-size-small);
} }
} }

View File

@@ -1,90 +1,90 @@
.infscr { .infscr {
width: 100%; width: 100%;
position: relative; position: relative;
padding-top: var(--infscr-vpad); padding-top: var(--infscr-vpad);
padding-bottom: var(--infscr-vpad); padding-bottom: var(--infscr-vpad);
padding-left: var(--infscr-hpad); padding-left: var(--infscr-hpad);
padding-right: var(--infscr-hpad); padding-right: var(--infscr-hpad);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: var(--infscr-cardgap-size); gap: var(--infscr-cardgap-size);
} }
.infscr-title { .infscr-title {
color: var(--cpalettelight); color: var(--cpalettelight);
width: 100%; width: 100%;
text-align: left; text-align: left;
font-family: var(--infscr-title-font-family); font-family: var(--infscr-title-font-family);
font-size: var(--infscr-title-font-size); font-size: var(--infscr-title-font-size);
font-weight: var(--infscr-title-font-weight); font-weight: var(--infscr-title-font-weight);
position: relative; position: relative;
} }
.infscr-subtitle { .infscr-subtitle {
color: var(--cpalettelight); color: var(--cpalettelight);
text-align: left; text-align: left;
font-family: var(--infscr-subtitle-font-family); font-family: var(--infscr-subtitle-font-family);
font-size: var(--infscr-subtitle-font-size); font-size: var(--infscr-subtitle-font-size);
font-weight: var(--infscr-subtitle-font-weight); font-weight: var(--infscr-subtitle-font-weight);
position: relative; position: relative;
padding-top: 8px; padding-top: 8px;
} }
.infscr-body { .infscr-body {
color: var(--cpalettecomplimentary); color: var(--cpalettecomplimentary);
text-align: left; text-align: left;
font-family: var(--infscr-body-font-family); font-family: var(--infscr-body-font-family);
font-size: var(--infscr-body-font-size); font-size: var(--infscr-body-font-size);
font-weight: var(--infscr-body-font-weight); font-weight: var(--infscr-body-font-weight);
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
} }
.infscr-image-div { .infscr-image-div {
display: flex; display: flex;
min-width: 50%; min-width: 50%;
justify-content: center; justify-content: center;
} }
.infscr-image { .infscr-image {
border-radius: var(--infscr-corner-round); border-radius: var(--infscr-corner-round);
width: 100%; width: 100%;
max-width: var(--infscr-img-size); max-width: var(--infscr-img-size);
max-height: var(--infscr-img-size); max-height: var(--infscr-img-size);
position: relative; position: relative;
} }
.infscr-row, .infscr-row,
.infscr-row-reverse { .infscr-row-reverse {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 100%; width: 100%;
justify-content: space-evenly; justify-content: space-evenly;
align-items: center; align-items: center;
gap: var(--infscr-cardgap-size); gap: var(--infscr-cardgap-size);
} }
@media (orientation: landscape) and (min-width: 1200px) { @media (orientation: landscape) and (min-width: 1200px) {
.infscr-row { .infscr-row {
flex-direction: row; flex-direction: row;
} }
.infscr-row-reverse { .infscr-row-reverse {
flex-direction: row-reverse; flex-direction: row-reverse;
} }
} }
.infscr-textcol { .infscr-textcol {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-evenly; justify-content: space-evenly;
gap: var(--infscr-titlegap-size); gap: var(--infscr-titlegap-size);
} }
.infscr-subcol { .infscr-subcol {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: var(--infscr-textgap-size); gap: var(--infscr-textgap-size);
} }

View File

@@ -1,54 +1,52 @@
.landing-page, .landing-page,
.landing-page * { .landing-page * {
box-sizing: border-box; box-sizing: border-box;
} }
.landing-page { .landing-page {
background: var(--background); background: var(--background);
width: 100vw; width: 100vw;
min-width: 250px; min-width: 250px;
position: absolute; position: absolute;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.landing-zone-outer { .landing-zone-outer {
position: relative; position: relative;
min-height: 100vh; min-height: 100vh;
height: fit-content; height: fit-content;
width: 100%;
// Blend out the background image into the plain bg color
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%; width: 100%;
height: 128px;
background: linear-gradient(to bottom, // Blend out the background image into the plain bg color
#00000000 0%, &::after {
var(--background) 100%); content: "";
z-index: 1; position: absolute;
} bottom: 0;
left: 0;
width: 100%;
height: 128px;
background: linear-gradient(to bottom, #00000000 0%, var(--background) 100%);
z-index: 1;
}
} }
.landing-zone { .landing-zone {
position: relative; position: relative;
top: 0; top: 0;
left: 0; left: 0;
width: 100%; width: 100%;
min-height: 100vh; min-height: 100vh;
height: fit-content; height: fit-content;
z-index: 2; z-index: 2;
} }
.background { .background {
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: cover; object-fit: cover;
z-index: 0; z-index: 0;
} }

View File

@@ -1,48 +1,47 @@
.splash-navigation-header { .splash-navigation-header {
position: relative;
height: 128px;
width: 100%;
padding-bottom: 120px;
.navigation-header-items {
gap: 48px;
align-items: center;
position: relative; position: relative;
padding-top: 28px; height: 128px;
padding-right: 96px; width: 100%;
} padding-bottom: 120px;
.navigation-header-link { .navigation-header-items {
color: var(--cpalettelight); gap: 48px;
font-family: var(--navigation-header-font-family); align-items: center;
text-align: left; position: relative;
font-size: var(--navigation-header-font-size); padding-top: 28px;
font-weight: var(--navigation-header-font-weight); padding-right: 96px;
text-decoration: underline; }
position: relative;
display: flex;
align-items: center;
justify-content: flex-start;
}
.navigation-header-button { .navigation-header-link {
background: var(--cpalettelight); color: var(--cpalettelight);
border-radius: 8px; font-family: var(--navigation-header-font-family);
padding: 14px 24px 14px 24px; text-align: left;
display: flex; font-size: var(--navigation-header-font-size);
flex-direction: row; font-weight: var(--navigation-header-font-weight);
gap: 8px; text-decoration: underline;
align-items: center; position: relative;
justify-content: center; display: flex;
flex-shrink: 0; align-items: center;
position: relative; justify-content: flex-start;
box-shadow: var(--button-shadow-box-shadow, }
0px 1px 2px 0px rgba(0, 0, 0, 0.05));
}
.navigation-header-button-text { .navigation-header-button {
@extend .navigation-header-link; background: var(--cpalettelight);
color: var(--background); border-radius: 8px;
text-decoration: none; padding: 14px 24px 14px 24px;
} display: flex;
flex-direction: row;
gap: 8px;
align-items: center;
justify-content: center;
flex-shrink: 0;
position: relative;
box-shadow: var(--button-shadow-box-shadow, 0px 1px 2px 0px rgba(0, 0, 0, 0.05));
}
.navigation-header-button-text {
@extend .navigation-header-link;
color: var(--background);
text-decoration: none;
}
} }

View File

@@ -1,80 +1,79 @@
.splash { .splash {
position: relative; position: relative;
max-width: 95%; max-width: 95%;
bottom: 0; bottom: 0;
padding-top: 128px; padding-top: 128px;
padding-bottom: 128px; padding-bottom: 128px;
padding-right: 32px; padding-right: 32px;
z-index: 3; z-index: 3;
} }
.splash-copy { .splash-copy {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: flex-start; align-items: flex-start;
max-width: 920px; max-width: 920px;
position: relative; position: relative;
left: 5%; left: 5%;
} }
.splash-title { .splash-title {
color: var(--cpalettecomplimentary); color: var(--cpalettecomplimentary);
max-width: 100%; max-width: 100%;
text-align: left; text-align: left;
font-family: var(--splash-title-font-family); font-family: var(--splash-title-font-family);
font-size: var(--splash-title-font-size-large); font-size: var(--splash-title-font-size-large);
line-height: 125%; line-height: 125%;
font-weight: var(--splash-title-font-weight); font-weight: var(--splash-title-font-weight);
position: relative; position: relative;
padding-bottom: 16px; padding-bottom: 16px;
} }
.splash-body { .splash-body {
color: var(--cpalettecomplimentary); color: var(--cpalettecomplimentary);
max-width: 100%; max-width: 100%;
word-wrap: break-word; word-wrap: break-word;
word-break: break-word; word-break: break-word;
overflow-wrap: break-word; overflow-wrap: break-word;
hyphens: auto; hyphens: auto;
text-align: left; text-align: left;
font-family: var(--splash-body-font-family); font-family: var(--splash-body-font-family);
font-size: var(--splash-body-font-size); font-size: var(--splash-body-font-size);
font-weight: var(--splash-body-font-weight); font-weight: var(--splash-body-font-weight);
padding-bottom: 32px; padding-bottom: 32px;
position: relative; position: relative;
} }
.splash-button { .splash-button {
background: var(--background); background: var(--background);
outline-style: solid; outline-style: solid;
outline-width: 2px; outline-width: 2px;
outline-color: var(--cpalettemedium); outline-color: var(--cpalettemedium);
border-radius: 8px; border-radius: 8px;
padding: 18px 32px 18px 32px; padding: 18px 32px 18px 32px;
position: relative; position: relative;
} }
.splash-get-involved { .splash-get-involved {
color: var(--cpalettelight); color: var(--cpalettelight);
font-family: "Assistant"; font-family: "Assistant";
font-size: 32px; font-size: 32px;
font-weight: 700; font-weight: 700;
position: relative; position: relative;
} }
@media (max-width: 720px) { @media (max-width: 720px) {
.splash { .splash {
padding-top: 120px; padding-top: 120px;
} }
.splash-title { .splash-title {
font-size: var(--splash-title-font-size-small); font-size: var(--splash-title-font-size-small);
} }
} }
@media (max-width: 380px) { @media (max-width: 380px) {
.splash-title { .splash-title {
font-size: var(--splash-title-font-size-tiny); font-size: var(--splash-title-font-size-tiny);
} }
} }

View File

@@ -1,17 +1,17 @@
.about-page, .about-page,
.about-page * { .about-page * {
box-sizing: border-box; box-sizing: border-box;
} }
.about-page { .about-page {
background: var(--cpalettecomplimentary); background: var(--cpalettecomplimentary);
width: 100vw; width: 100vw;
min-width: 250px; min-width: 250px;
position: absolute; position: absolute;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.copy { .copy {
padding: 5% 5% 5% 5%; padding: 5% 5% 5% 5%;
} }

View File

@@ -1,83 +1,83 @@
.contact-page, .contact-page,
.contact-page * { .contact-page * {
box-sizing: border-box; box-sizing: border-box;
} }
.contact-page { .contact-page {
background: var(--cpalettecomplimentary); background: var(--cpalettecomplimentary);
width: 100vw; width: 100vw;
min-width: 250px; min-width: 250px;
position: absolute; position: absolute;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.contact-content { .contact-content {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
width: 100%; width: 100%;
padding: 5% 5% 5% 5%; padding: 5% 5% 5% 5%;
} }
.contact-form-column { .contact-form-column {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 50%; width: 50%;
} }
.contact-form { .contact-form {
position: relative; position: relative;
padding-top: 32px; padding-top: 32px;
} }
.contact-image-column { .contact-image-column {
position: relative; position: relative;
width: 50%; width: 50%;
top: 0; top: 0;
bottom: 0; bottom: 0;
padding: 32px 0 32px 48px; padding: 32px 0 32px 48px;
} }
.contact-image-pane { .contact-image-pane {
position: sticky; position: sticky;
border-radius: var(--contact-corner-round); border-radius: var(--contact-corner-round);
width: 100%; width: 100%;
top: 64px; top: 64px;
max-width: var(--contact-img-size); max-width: var(--contact-img-size);
justify-items: center; justify-items: center;
} }
.contact-image { .contact-image {
border-radius: var(--contact-corner-round); border-radius: var(--contact-corner-round);
width: 100%; width: 100%;
max-width: var(--contact-img-size); max-width: var(--contact-img-size);
max-height: var(--contact-img-size); max-height: var(--contact-img-size);
} }
.contact-image-subtitle { .contact-image-subtitle {
font: "Assistant"; font: "Assistant";
font-size: 24px; font-size: 24px;
color: #d9d9d9; color: #d9d9d9;
text-align: center; text-align: center;
} }
@media (orientation: landscape) and (min-width: 1200px) { @media (orientation: landscape) and (min-width: 1200px) {
.contact-form-column { .contact-form-column {
width: 67%; width: 67%;
} }
} }
@media (orientation: portrait) and (max-width: 1080px) { @media (orientation: portrait) and (max-width: 1080px) {
.contact-content { .contact-content {
flex-direction: column-reverse; flex-direction: column-reverse;
} }
.contact-form-column { .contact-form-column {
width: 100%; width: 100%;
} }
.contact-image-column { .contact-image-column {
width: 100%; width: 100%;
justify-content: center; justify-content: center;
} }
} }

View File

@@ -1,3 +1,3 @@
export function GET() { export function GET() {
return new Response('OK', { status: 200 }); return new Response("OK", { status: 200 });
} }

View File

@@ -1,5 +1,5 @@
import preprocess from "svelte-preprocess"; import preprocess from "svelte-preprocess";
import adapter from '@sveltejs/adapter-node'; import adapter from "@sveltejs/adapter-node";
/** @type {import('@sveltejs/kit').Config} */ /** @type {import('@sveltejs/kit').Config} */
const config = { const config = {
@@ -8,28 +8,28 @@ const config = {
}), }),
kit: { kit: {
paths: { paths: {
base: '', base: "",
}, },
adapter: adapter({ adapter: adapter({
out: 'build', out: "build",
precompress: true, // Pre-compresses files precompress: true, // Pre-compresses files
polyfill: true polyfill: true,
}), }),
csrf: { checkOrigin: false }, csrf: { checkOrigin: false },
prerender: { prerender: {
entries: ['*'], entries: ["*"],
handleMissingId: 'warn' handleMissingId: "warn",
}, },
csp: { csp: {
mode: 'auto', mode: "auto",
directives: { directives: {
'script-src': ['self'] "script-src": ["self"],
} },
}, },
version: { version: {
name: Date.now().toString() name: Date.now().toString(),
} },
} },
}; };
export default config; export default config;

View File

@@ -1,11 +1,11 @@
import forms from '@tailwindcss/forms'; import forms from "@tailwindcss/forms";
/** @type {import('tailwindcss').Config} */ /** @type {import('tailwindcss').Config} */
export default { export default {
content: ['./src/**/*.{html,js,svelte,ts}'], content: ["./src/**/*.{html,js,svelte,ts}"],
theme: { theme: {
extend: {} extend: {},
}, },
plugins: [forms], plugins: [forms],

View File

@@ -1,36 +1,36 @@
import { defineConfig } from 'vite'; import { defineConfig } from "vite";
import { sveltekit } from '@sveltejs/kit/vite' import { sveltekit } from "@sveltejs/kit/vite";
import viteCompression from 'vite-plugin-compression' import viteCompression from "vite-plugin-compression";
export default defineConfig({ export default defineConfig({
plugins: [ plugins: [
sveltekit(), sveltekit(),
viteCompression({ viteCompression({
algorithm: 'brotli', algorithm: "brotli",
threshold: 1024, threshold: 1024,
compressionOptions: { level: 11 }, compressionOptions: { level: 11 },
exclude: [/\.(br|gz)$/, /\.(jpe?g|png|gif|webp|zip)$/i], exclude: [/\.(br|gz)$/, /\.(jpe?g|png|gif|webp|zip)$/i],
filter: /\.(js|css|html|svg)$/i filter: /\.(js|css|html|svg)$/i,
}), }),
viteCompression({ viteCompression({
algorithm: 'gzip', algorithm: "gzip",
threshold: 1024, threshold: 1024,
compressionOptions: { level: 9 }, compressionOptions: { level: 9 },
exclude: [/\.(br|gz)$/, /\.(jpe?g|png|gif|webp|zip)$/i], exclude: [/\.(br|gz)$/, /\.(jpe?g|png|gif|webp|zip)$/i],
filter: /\.(js|css|html|svg)$/i filter: /\.(js|css|html|svg)$/i,
}) }),
], ],
build: { build: {
minify: 'terser', minify: "terser",
terserOptions: { terserOptions: {
compress: { compress: {
drop_console: true, drop_console: true,
drop_debugger: true drop_debugger: true,
} },
}, },
reportCompressedSize: true, reportCompressedSize: true,
cssMinify: true, cssMinify: true,
cssCodeSplit: true cssCodeSplit: true,
}, },
server: { server: {
host: "0.0.0.0", host: "0.0.0.0",