Compare commits

...

7 Commits

9 changed files with 93 additions and 48 deletions

View File

@ -2,6 +2,7 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="google-site-verification" content="lsAs9c2Pv7c6Sm26z1hd2YqR2depbp4sJddIDYKHkxY" />
<link rel="icon" href="%sveltekit.assets%/favicon.ico" /> <link rel="icon" href="%sveltekit.assets%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head% %sveltekit.head%

View File

@ -102,6 +102,7 @@
div div ul div { div div ul div {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
gap: 0px;
} }
a { a {

View File

@ -3,7 +3,7 @@
let { independent_page = true, techTablePromise = null } = $props(); let { independent_page = true, techTablePromise = null } = $props();
let limitProjects = $derived(independent_page ? 0 : 8); let limitProjects = $derived(independent_page ? 0 : 6);
let projectsPromise = $state(null); let projectsPromise = $state(null);
let techPromise = $state(null); let techPromise = $state(null);
@ -171,5 +171,6 @@
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
column-gap: 1svw; column-gap: 1svw;
justify-content: space-evenly;
} }
</style> </style>

View File

@ -108,7 +108,7 @@
justify-self: center; justify-self: center;
margin: 0svh 1svw; margin: 0svh 0svw;
padding-top: 1svh; padding-top: 1svh;
object-fit: contain; object-fit: contain;
color: transparent; color: transparent;
@ -125,6 +125,7 @@
border-radius: var(--underlineTitleBorderRadius); border-radius: var(--underlineTitleBorderRadius);
margin: 0px 2svw; margin: 0px 2svw;
padding: 0px 2svw; padding: 0px 2svw;
padding-right: 0px;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@ -173,9 +174,10 @@
.project-title-info div { .project-title-info div {
display: flex; display: flex;
gap: 1svw; gap: 20px;
justify-content: flex-end; justify-content: flex-end;
border-bottom: none; border-bottom: none;
margin: 0svh 10px;
} }
.project-card div p { .project-card div p {

24
src/lib/style/globals.css Normal file
View File

@ -0,0 +1,24 @@
:root {
--underlineTitle: 4px solid purple;
--underlineTitleBorderRadius: 4px;
--img-width: 32px;
--img-height: 32px;
--card-background-color: rgba(38, 38, 38, 0.5);
--card-border-radius: 0.5rem;
}
body {
background-color: #0f1116;
color: #ffffff;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
margin: 20px;
}
h2 {
border-bottom: var(--underlineTitle);
border-radius: var(--underlineTitleBorderRadius);
display: flex;
margin: 2svh 2svw;
padding: 0svh 2svw;
padding-bottom: 1svh;
}

View File

@ -2,35 +2,10 @@
let { children } = $props(); let { children } = $props();
import Top from '$lib/components/layout/Top.svelte'; import Top from '$lib/components/layout/Top.svelte';
import Bottom from '$lib/components/layout/Bottom.svelte'; import Bottom from '$lib/components/layout/Bottom.svelte';
import '$lib/style/globals.css';
</script> </script>
<Top /> <Top />
{@render children()} {@render children()}
<Bottom /> <Bottom />
<style>
:global(:root) {
--underlineTitle: 4px solid purple;
--underlineTitleBorderRadius: 4px;
--img-width: 32px;
--img-height: 32px;
--card-background-color: rgba(38, 38, 38, 0.5);
--card-border-radius: 0.5rem;
}
:global(body) {
background-color: #0f1116;
color: #ffffff;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
margin: 20px;
}
:global(h2) {
border-bottom: var(--underlineTitle);
border-radius: var(--underlineTitleBorderRadius);
display: flex;
margin: 2svh 2svw;
padding: 0svh 2svw;
padding-bottom: 1svh;
}
</style>

View File

@ -1,11 +1,41 @@
<script> <script>
import Contact from '$lib/components/contact.svelte'; import Contact from '$lib/components/contact.svelte';
let contactName = $state('');
let contactEmail = $state('');
let contactMessage = $state('');
let error_box_message = $state(''); let error_box_message = $state('');
let submitButtonEnable = $state(true);
let submitButtonText = $derived(submitButtonEnable ? 'Submit' : 'Submitting');
const formSubmit = async (event) => {
event.preventDefault();
submitButtonEnable = false;
const formData = new FormData(event.target);
const formObject = Object.fromEntries(formData.entries());
try {
let json_to_send = {
content: `***New Message***\n*Name*: ${formObject.name}\n*Email*: [${formObject.email}](mailto:${formObject.email})\n*Message*: ${formObject.message}`
};
const res = await fetch(
'https://discord.com/api/webhooks/1374798951475187732/zOL9aD1wWn9rCywjqVAy3oUMnzPu25SVIMCDaLD4N8C_V9OqPK8Hj2Wmm-7Ts5QHTbzN',
{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(json_to_send)
}
);
if (!res.ok) {
throw new Error(`Discord webhook error: ${res.status} ${res.statusText}`);
}
} catch (err) {
error_box_message = 'An error has occurred';
console.error(err);
}
submitButtonEnable = true;
};
</script> </script>
<title>Brock Tomlinson - Contact</title> <title>Brock Tomlinson - Contact</title>
@ -18,22 +48,23 @@
to either fill out this form or contact me through one of the many of the platforms below to either fill out this form or contact me through one of the many of the platforms below
</p> </p>
</div> </div>
<form <form onsubmit={formSubmit}>
onsubmit={(e) => {
e.preventDefault();
}}
>
<label for="name">Name</label> <label for="name">Name</label>
<input type="text" id="name" bind:value={contactName} /> <input type="text" id="name" name="name" />
<label for="email">Email</label> <label for="email">Email</label>
<input type="email" id="email" bind:value={contactEmail} /> <input type="email" id="email" name="email" />
<label for="message">Message</label> <label for="message">Message</label>
<textarea id="message" bind:value={contactMessage}></textarea> <textarea id="message" name="message"></textarea>
<p>{error_box_message}</p> <p>{error_box_message}</p>
<button onclick={() => console.log('Clicked')}> Submit </button> <input
type="submit"
disabled={!submitButtonEnable}
class="submitButton"
id={submitButtonEnable ? '' : 'disabledSubmitButton'}
/>
</form> </form>
</div> </div>
<Contact /> <Contact />
@ -72,7 +103,7 @@
border-radius: var(--card-border-radius); border-radius: var(--card-border-radius);
border-color: rgba(245, 245, 245, 0.5); border-color: rgba(245, 245, 245, 0.5);
border-width: 2px; border-width: 2px;
padding: 1svh 0svw; padding: 1svh 1ch;
margin: 1svh 0.5svw; margin: 1svh 0.5svw;
color: inherit; color: inherit;
align-items: start; align-items: start;
@ -83,14 +114,14 @@
border-radius: var(--card-border-radius); border-radius: var(--card-border-radius);
border-color: rgba(245, 245, 245, 0.4); border-color: rgba(245, 245, 245, 0.4);
border-width: 2px; border-width: 2px;
padding: 1svh 0svw; padding: 1svh 1ch;
margin: 1svh 0.5svw; margin: 1svh 0.5svw;
color: inherit; color: inherit;
align-items: start; align-items: start;
min-height: 25svh; min-height: 25svh;
} }
button { .submitButton {
border-radius: var(--card-border-radius); border-radius: var(--card-border-radius);
border-color: rgba(245, 245, 245, 0.5); border-color: rgba(245, 245, 245, 0.5);
padding: 1svh 0svw; padding: 1svh 0svw;
@ -101,9 +132,17 @@
border-color: transparent; border-color: transparent;
} }
button:hover { .submitButton:hover {
cursor: pointer; cursor: pointer;
color: #91a4d2; color: #91a4d2;
background-color: rgba(0, 150, 0, 0.6); background-color: rgba(0, 150, 0, 0.6);
} }
#disabledSubmitButton {
background-color: rgba(211, 211, 211, 0.6);
}
#disabledSubmitButton:hover {
background-color: rgba(180, 180, 180, 0.6);
}
</style> </style>

View File

@ -1,7 +1,7 @@
import { format } from 'date-fns'; import { format } from 'date-fns';
export const GET = async () => { export const GET = async () => {
const baseUrl = 'https://yourdomain.com'; // Change to your domain const baseUrl = 'https://darkicewolf50.pages.dev';
const staticPages = [ const staticPages = [
'', // homepage '', // homepage

View File

@ -1,2 +1,4 @@
User-agent: * User-agent: *
Disallow: /blogs/ Disallow: /blogs/
Sitemap: https://darkicewolf50.pages.dev/sitemap.xml