diff --git a/src/component/footer.svelte b/src/component/footer.svelte index f2a1fbd..843484a 100644 --- a/src/component/footer.svelte +++ b/src/component/footer.svelte @@ -5,3 +5,32 @@ contact@colormatic.org

+ + diff --git a/src/component/navbar.svelte b/src/component/navbar.svelte index 6aa6391..8dfc1b4 100644 --- a/src/component/navbar.svelte +++ b/src/component/navbar.svelte @@ -71,3 +71,193 @@ Svelte modal example, https://svelte.dev/playground/modal + + diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 76207e5..8dd8f89 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,6 +1,5 @@ - Colormatic Studios @@ -124,3 +120,98 @@ + + diff --git a/src/routes/video/+page.svelte b/src/routes/video/+page.svelte index 16abad4..b0ddb62 100644 --- a/src/routes/video/+page.svelte +++ b/src/routes/video/+page.svelte @@ -1,7 +1,4 @@ @@ -46,3 +130,115 @@ + + diff --git a/src/script/video.ts b/src/script/video.ts deleted file mode 100644 index e98012f..0000000 --- a/src/script/video.ts +++ /dev/null @@ -1,86 +0,0 @@ -const BASEURL = "https://files.colormatic.org/"; - -export function getParam(paramName: string) { - var params = new URLSearchParams(window.location.search); - let t_param = params.get(paramName); - return t_param ? t_param : ""; // Return empty string if null -} - -async function getJSON(url: string) { - const response = await fetch(url); - if (!response.ok) throw new Error(response.statusText); - - const data = response.json(); - return data; -} - -export function getVideo(cname: string, vname: string) { - var videoplayer = document.getElementById("videoplayer") as HTMLElement; - var videotitle = document.getElementById("videotitle") as HTMLElement; - var videodescription = document.getElementById( - "videodescription", - ) as HTMLElement; - var videodownload = document.getElementById("videodownload") as HTMLElement; - var sourcedownload = document.getElementById( - "sourcedownload", - ) as HTMLElement; - getJSON(BASEURL + cname + "/videos/data/" + vname + ".json") - .then((data) => { - let videoURL = - BASEURL + - cname + - "/videos/raw/" + - data.video_file + - "." + - data.video_format; - videoplayer.setAttribute( - "poster", - BASEURL + cname + "/videos/thumbnail/" + data.thumbnail, - ); - var videosource = document.createElement("source"); - videosource.setAttribute("src", videoURL); - videosource.setAttribute("type", "video/" + data.video_format); - videoplayer.appendChild(videosource); - - document.title = data.title; - videotitle.innerText = data.title; - data.description.forEach((iter: number) => { - // TODO: Detect if one of these lines contains a link and if so, make it a link - videodescription.appendChild( - document.createTextNode(iter.toString()), - ); - videodescription.appendChild(document.createElement("br")); - }); - - videodownload.setAttribute( - "href", - BASEURL + - cname + - "/videos/raw/" + - data.video_file + - "." + - data.video_format, - ); - videodownload.setAttribute( - "download", - data.video_file + "." + data.video_format, - ); - sourcedownload.setAttribute( - "href", - BASEURL + - cname + - "/videos/source/" + - data.source_file + - "." + - data.source_format, - ); - sourcedownload.setAttribute( - "download", - data.source_file + "." + data.source_format, - ); - }) - .catch((error) => { - videotitle.innerText = "Failed to load video."; - console.error(error); - }); -} diff --git a/src/style/main.scss b/src/style/main.scss index 6e1408b..e53e872 100644 --- a/src/style/main.scss +++ b/src/style/main.scss @@ -59,27 +59,6 @@ div.panel { backdrop-filter: blur(5px); } -main div.brand-heading { - padding: 12%; - width: 60%; -} - -main div.brand-heading h1 { - font-size: 300%; -} - -main div.heading { - font-size: 250%; - text-align: center; - padding: 12px; -} - -main span.name-title { - display: block; - font-size: 550%; - text-align: center; -} - main div.hero { width: 60%; margin: 16px auto; @@ -87,6 +66,15 @@ main div.hero { text-align: center; } +@media screen and (max-width: global.$mobile-width) { + spacer { + margin-top: 24%; + } + main div.hero { + width: 80%; + } +} + main div#scroll-arrow { text-align: center; font-size: 200%; @@ -106,23 +94,6 @@ main div#scroll-arrow.scroll-arrow-hide { opacity 0.25s ease-out; } -@media screen and (max-width: global.$mobile-width) { - spacer { - margin-top: 24%; - } - main div.brand-heading { - padding: 38% 12px; - text-align: center; - width: initial; - } - main div.heading { - font-size: 200%; - } - main div.hero { - width: 80%; - } -} - main div.hero h1 a { color: global.$text-color; } @@ -130,12 +101,12 @@ main div.hero h1 a { p.justify { text-align: justify; text-justify: auto; - margin-left: auto; - margin-right: auto; } main div.hero p.justify { width: 60%; + margin-left: auto; + margin-right: auto; } main div.hero ul { @@ -143,21 +114,7 @@ main div.hero ul { margin-right: auto; } -main img.banner { - display: block; - width: 70%; - margin: 32px auto 32px auto; - border: solid 1px #00000033; - border-radius: 16px; - box-shadow: 1px 1px 8px #00000033; -} - @media screen and (max-width: global.$mobile-width) { - main img.banner { - width: 95%; - border-radius: 12px; - margin: 24px auto 24px auto; - } main div.hero p.justify { width: 100%; } @@ -246,28 +203,3 @@ ul.videolist li a span { img.pixelart { image-rendering: pixelated; } - -footer { - display: flex; - justify-content: space-between; - border-top: solid 1px global.$text-color; - width: 95%; - padding: 4px; - margin: 0 auto; -} - -footer p { - color: global.$text-color; - padding: 4px 10%; -} - -@media screen and (max-width: global.$mobile-width) { - footer { - flex-direction: column; - } - footer p { - text-align: center; - padding: 4px; - margin: 4px; - } -} diff --git a/src/style/nav.scss b/src/style/nav.scss deleted file mode 100644 index 791a704..0000000 --- a/src/style/nav.scss +++ /dev/null @@ -1,186 +0,0 @@ -@use "global.scss"; - -nav { - display: grid; - grid-template-columns: 1fr min-content 1fr; - align-items: center; - padding: 12px; - border-bottom: solid 1px global.$text-color; - z-index: 1; - - margin: 0 auto; - width: 95%; - box-sizing: border-box; - overflow-wrap: anywhere; -} - -nav .nav-left { - justify-self: left; - grid-column: 1; -} - -nav .nav-center { - justify-self: center; - grid-column: 2; -} - -nav .nav-right { - justify-self: right; - grid-column: 3; -} - -nav ul { - list-style-type: none; - margin: 0; - padding: 0; - display: flex; - flex-direction: row; -} - -nav ul li { - display: grid; - justify-items: center; -} - -nav a, -nav button { - padding: 0 8px; - color: global.$text-color; - text-decoration: none; - - display: flex; - cursor: pointer; - align-items: center; -} - -nav a.title { - font-size: 140%; - font-weight: bold; -} - -nav img.colormatic-logo { - width: auto; - height: 40px; - padding: 4px; -} - -nav button.menu-button { - background: none; - border: none; -} - -nav .menu-button i { - font-size: 230%; - transform: translateY(-1px); - /*/ - * Ugly hack to account for the fact that the menu icon is off-center - * (Bootstrap please fix) - /*/ -} - -nav .git-icon i { - font-size: 140%; -} - -nav div.inline { - display: flex; -} - -@media screen and (max-width: global.$mobile-width) { - nav { - padding: 6px 0; - } - nav .git-icon i { - font-size: 150%; - } - nav ul.responsive-hidden { - display: none; - } -} - -/*/ - * Navigation modal section -/*/ - -span.modalbg.hidden { - display: none; -} - -span.modalbg { - position: fixed; - z-index: 1; - padding: 0; - margin: auto; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.4); -} - -span.modalbg div { - width: 50ch; - margin: 100px auto; - padding: 16px; - - color: global.$text-color; - border-radius: 8px; - box-shadow: 1px 1px 8px #00000033; - background-color: #ffffffbb; - backdrop-filter: blur(5px); - - animation-name: modal-animate-in; - animation-duration: 0.4s; -} - -@keyframes modal-animate-in { - from { - transform: translate(0px, -300px); - opacity: 0; - } - to { - transform: translate(0px, 0px); - opacity: 1; - } -} - -span.modalbg div button.close { - float: right; - width: min-content; - background: none; - border: none; - outline: none; - cursor: pointer; - - font-size: 200%; - color: global.$text-color; -} - -span.modalbg div ul { - list-style-type: none; - margin: 0; - padding: 0; -} - -span.modalbg div ul li { - margin: 18px 12px; -} - -span.modalbg div ul li a { - color: global.$text-color; - padding: 8px; - text-decoration: none; - font-size: 120%; -} - -@media screen and (max-width: global.$mobile-width) { - span.modalbg div { - width: 30ch; - } -} - -@media (prefers-color-scheme: dark) { - span.modalbg div { - background-color: #000000bb; - } -} diff --git a/src/style/studios.scss b/src/style/studios.scss deleted file mode 100644 index cc79ee2..0000000 --- a/src/style/studios.scss +++ /dev/null @@ -1,90 +0,0 @@ -@use "global.scss"; - -div.cs-title { - background-image: url("/img/colormatic_banner.svg"); - background-size: cover; - background-repeat: no-repeat; - height: 300px; - display: flex; - align-items: center; - justify-content: center; -} - -div.cs-title h1 { - color: white; - background-color: #00000088; - padding: 28px 38px; - border-radius: 16px; - font-size: 300%; - box-shadow: 1px 1px 8px #00000033; - backdrop-filter: blur(5px); -} - -div.project-grid-container { - display: flex; - width: 80%; - margin-left: auto; - margin-right: auto; - flex-wrap: wrap; - justify-content: center; -} - -@media screen and (max-width: global.$mobile-width) { - div.project-grid-container { - width: 90%; - } - - div.cs-title { - height: 200px; - } - - div.cs-title h1 { - font-size: 200%; - } -} - -div.project-grid-container div.project-grid-box { - flex: 1; - color: #383c3f; - margin: 16px; - border: solid 1px #00000033; - border-radius: 8px; - box-shadow: 1px 1px 8px #00000033; - padding: 16px; - color: global.$text-color; - min-width: 40%; - max-width: 50%; - background-color: #ffffff22; - backdrop-filter: blur(3px); -} - -div.project-grid-container div.project-grid-box h1 { - text-align: center; -} - -div.project-grid-container div.project-grid-box h1 a { - color: global.$text-color; -} - -div.project-grid-container div.project-grid-box div.project-grid-box-contents { - /* Yes, this absurdly long element selector is a joke */ - display: flex; -} - -div.project-grid-container div.project-grid-box img { - max-width: 120px; - max-height: 150px; - margin: 12px; - border-radius: 8px; -} - -@media screen and (max-width: global.$mobile-width) { - div.project-grid-container div.project-grid-box { - min-width: 90%; - max-width: 90%; - } - - div.project-grid-container div.project-grid-box img { - max-width: 100px; - } -} diff --git a/src/style/video.scss b/src/style/video.scss deleted file mode 100644 index 506050b..0000000 --- a/src/style/video.scss +++ /dev/null @@ -1,109 +0,0 @@ -@use "global.scss"; - -div.video.container { - display: flex; - color: global.$text-color; - width: 90%; - margin: 16px auto 16px auto; - border: solid 1px #00000033; - border-radius: 8px; - box-shadow: 1px 1px 8px #00000033; - padding: 16px; - background-color: #ffffff22; - backdrop-filter: blur(3px); -} - -div.video.container video#videoplayer { - flex-grow: 1; - border-radius: 12px; - height: auto; - max-width: 55%; -} - -div.video.container div.videoobjects { - display: grid; - padding: 24px; -} - -div.video.container div.videodetails h1#videotitle { - padding: 0 12px; -} - -div.dropdown-container { - display: flex; - flex-direction: column-reverse; -} - -div.video.container div.download-dropdown { - position: relative; - display: inline-block; - padding: 12px; - width: 25px; - height: 25px; - background-color: #21afff; - box-shadow: 1px 1px 8px #00000033; - border-radius: 50px; - transition-duration: 0.35s; - font-size: 120%; - text-align: center; -} - -div.video.container div.download-dropdown:hover { - box-shadow: 1px 1px 8px #00000088; -} - -div.video.container div.download-dropdown div.dropdown-content { - display: none; - position: absolute; - font-size: 80%; - min-width: 160px; - background-color: #edeeee; - box-shadow: 1px 1px 8px #00000033; - border-radius: 8px; - text-align: center; -} - -div.video.container div.download-dropdown:hover div.dropdown-content { - display: block; -} - -div.video.container div.download-dropdown div.dropdown-content ul { - list-style-type: none; - padding-left: 0; -} - -div.video.container div.download-dropdown div.dropdown-content ul li { - padding: 4px; - cursor: pointer; -} - -div.video.container div.download-dropdown div.dropdown-content ul li:hover { - background-color: #dcdfdf; -} - -div.video.container div.download-dropdown div.dropdown-content ul li a { - text-decoration: none; - color: global.$text-color; -} - -@media screen and (max-width: global.$mobile-width) { - div.video.container { - display: block; - } - div.video.container video#videoplayer { - width: 100%; - max-width: none; - } - div.video.container div.download-dropdown { - display: block; - margin-left: auto; - margin-right: auto; - margin-top: 12px; - } -} - -@media (prefers-color-scheme: dark) { - div.video.container div.download-dropdown div.dropdown-content { - background-color: #444444; - } -}