diff --git a/package-lock.json b/package-lock.json index 4848f99..cb41222 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1178,9 +1178,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.53.4", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.53.4.tgz", - "integrity": "sha512-iAIPEahFgDJJyvz8g0jP08KvqnM6JvdW8YfsygZ+pMeMvyM2zssWMltcsotETvjSZ82G3VlitgDtBIvpQSZrTA==", + "version": "2.55.0", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.55.0.tgz", + "integrity": "sha512-MdFRjevVxmAknf2NbaUkDF16jSIzXMWd4Nfah0Qp8TtQVoSp3bV4jKt8mX7z7qTUTWvgSaxtR0EG5WJf53gcuA==", "dev": true, "license": "MIT", "dependencies": { @@ -1189,7 +1189,7 @@ "@types/cookie": "^0.6.0", "acorn": "^8.14.1", "cookie": "^0.6.0", - "devalue": "^5.6.3", + "devalue": "^5.6.4", "esm-env": "^1.2.2", "kleur": "^4.1.5", "magic-string": "^0.30.5", @@ -2036,9 +2036,9 @@ } }, "node_modules/devalue": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz", - "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.4.tgz", + "integrity": "sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==", "license": "MIT" }, "node_modules/es-module-lexer": { @@ -2452,9 +2452,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", "dev": true, "license": "ISC" }, diff --git a/src/app.html b/src/app.html index 3d8585e..7c40556 100644 --- a/src/app.html +++ b/src/app.html @@ -5,7 +5,10 @@ - + diff --git a/src/lib/assets/img/stop-error.svg b/src/lib/assets/img/stop-error.svg new file mode 100644 index 0000000..c8aefe3 --- /dev/null +++ b/src/lib/assets/img/stop-error.svg @@ -0,0 +1 @@ + diff --git a/src/lib/components/ui/Button.svelte b/src/lib/components/ui/Button.svelte new file mode 100644 index 0000000..e584ae6 --- /dev/null +++ b/src/lib/components/ui/Button.svelte @@ -0,0 +1,82 @@ + + +{#if isLink} + + {@render children?.()} + +{:else} + +{/if} + + diff --git a/src/lib/components/ui/Textbox.svelte b/src/lib/components/ui/Textbox.svelte new file mode 100644 index 0000000..3026bec --- /dev/null +++ b/src/lib/components/ui/Textbox.svelte @@ -0,0 +1,94 @@ + + +
+ {#if label} + + {/if} + + isFocussed = true} + onblur={() => isFocussed = false} + {...rest} + /> + + {#if error} + {error} + {/if} +
+ + \ No newline at end of file diff --git a/src/lib/components/ui/cards/BaseCard.svelte b/src/lib/components/ui/cards/BaseCard.svelte new file mode 100644 index 0000000..87a1a68 --- /dev/null +++ b/src/lib/components/ui/cards/BaseCard.svelte @@ -0,0 +1,94 @@ + + +
+ {#if header || helpText} +
+
+ {header} +
+ {#if helpText} + + {/if} +
+ + {#if showHelp && helpText} +
+

{helpText}

+
+ {/if} + {/if} + +
+ {@render children?.()} +
+
+ + \ No newline at end of file diff --git a/src/lib/global.css b/src/lib/global.css index c8718dd..5b59d6c 100644 --- a/src/lib/global.css +++ b/src/lib/global.css @@ -4,78 +4,79 @@ * Copyright (c) 2014,2015 by (URW)++ Design & Development */ @font-face { - font-family: 'URW Gothic'; - src: url('/type/urwgothic/urwgothic-book-webfont.woff2') format('woff2'); - font-weight: 400; - font-style: normal; - font-display: swap; + font-family: 'URW Gothic'; + src: url('/type/urwgothic/urwgothic-book-webfont.woff2') format('woff2'); + font-weight: 400; + font-style: normal; + font-display: swap; } /* * URW Gothic is licensed under the SIL Open Font License, Version 1.1. * Copyright (c) 2014,2015 by (URW)++ Design & Development */ @font-face { - font-family: 'URW Gothic'; - src: url('/type/urwgothic/urwgothic-bookoblique-webfont.woff2') format('woff2'); - font-weight: 400; - font-style: italic; - font-display: swap; + font-family: 'URW Gothic'; + src: url('/type/urwgothic/urwgothic-bookoblique-webfont.woff2') format('woff2'); + font-weight: 400; + font-style: italic; + font-display: swap; } /* * URW Gothic is licensed under the SIL Open Font License, Version 1.1. * Copyright (c) 2014,2015 by (URW)++ Design & Development */ @font-face { - font-family: 'URW Gothic'; - src: url('/type/urwgothic/urwgothic-demi-webfont.woff2') format('woff2'); - font-weight: 600; - font-style: normal; - font-display: swap; + font-family: 'URW Gothic'; + src: url('/type/urwgothic/urwgothic-demi-webfont.woff2') format('woff2'); + font-weight: 600; + font-style: normal; + font-display: swap; } /* * URW Gothic is licensed under the SIL Open Font License, Version 1.1. * Copyright (c) 2014,2015 by (URW)++ Design & Development */ @font-face { - font-family: 'URW Gothic'; - src: url('/type/urwgothic/urwgothic-demioblique-webfont.woff2') format('woff2'); - font-weight: 600; - font-style: italic; - font-display: swap; + font-family: 'URW Gothic'; + src: url('/type/urwgothic/urwgothic-demioblique-webfont.woff2') format('woff2'); + font-weight: 600; + font-style: italic; + font-display: swap; } - :root { - /* Brand Colours */ - --color-brand: #4fd1d1; - --color-accent: #3c6f79; - --color-title: #ebebeb; - --color-bg-light: #404c55; - --color-bg-dark: #2b343c; - - /* Shadows */ - --color-shadow: hsla(210, 20%, 5%, 0.35); - --shadow-std: 0 4px 12px var(--color-shadow); - --shadow-up: 0 -4px 12px var(--color-shadow); - } +:root { + /* Brand Colours */ + --color-brand: #4fd1d1; + --color-accent: #3c6f79; + --color-title: #ebebeb; + --color-bg-light: #404c55; + --color-bg-dark: #2b343c; + + /* Shadows */ + --color-shadow: hsla(210, 20%, 5%, 0.35); + --shadow-std: 0 4px 12px var(--color-shadow); + --shadow-up: 0 -4px 12px var(--color-shadow); + --shadow-right: 4px 0 12px var(--color-shadow); +} body { - margin: 0; - padding: 0; - background-color: var(--color-accent); - color: white; - -webkit-font-smoothing: antialiased; - -mos-osx-font-smoothing: grayscale; - overflow-x: hidden; + margin: 0; + padding: 0; + background-color: var(--color-accent); + color: white; + -webkit-font-smoothing: antialiased; + -mos-osx-font-smoothing: grayscale; + overflow-x: hidden; } a { - color: var(--color-brand); + color: var(--color-brand); } a:visited { - color: var(--color-brand); + color: var(--color-brand); } a:hover { - color: var(--color-accent); -} \ No newline at end of file + color: var(--color-accent); +} diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte index b9709f4..5a69b2c 100644 --- a/src/routes/+error.svelte +++ b/src/routes/+error.svelte @@ -1,69 +1,72 @@
-
-
-
+ -

Signal Failure: {page.status}

+

{page.status}

-

- {page.error?.message ?? "An unexpected derailment occurred."} -

+

+ {page.error?.message ?? 'An unexpected derailment occurred.'} +

- {#if page.error?.owlCode} -
- Ref: {page.error.owlCode} -
- {/if} + {#if page.error?.owlCode} +
+ Ref: {page.error.owlCode} +
+ {/if} - Return to Home +
\ No newline at end of file + .error-message { + font-size: 1.1rem; + color: var(--color-title); + max-width: 300px; + margin-top: 5px; + margin-bottom: 30px; + } + + .debug-info { + background: rgba(255, 255, 255, 0.05); + padding: 5px 12px; + border-radius: 4px; + font-size: 0.8rem; + opacity: 0.6; + } + diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 6f27509..a98f5c2 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,5 +1,6 @@ @@ -41,37 +72,76 @@
-{@render children()} + {@render children()}
-