From b7de2208ae48d49b05e13ee848b40308c72a1d77 Mon Sep 17 00:00:00 2001 From: Stanisław Zagórowski Date: Thu, 17 Aug 2023 13:43:00 +0200 Subject: Initial commit --- src/app.css | 114 ++++++++++++ src/app.tsx | 23 +++ src/components/carousel.css | 68 +++++++ src/components/carousel.tsx | 31 ++++ src/components/navbar-item.tsx | 8 + src/components/navbar.css | 270 ++++++++++++++++++++++++++++ src/components/navbar.tsx | 20 +++ src/index.css | 121 +++++++++++++ src/main.tsx | 5 + src/pages/contact.css | 22 +++ src/pages/contact.tsx | 34 ++++ src/pages/games.css | 0 src/pages/games.tsx | 393 +++++++++++++++++++++++++++++++++++++++++ src/pages/home.tsx | 29 +++ src/pages/projects.css | 137 ++++++++++++++ src/pages/projects.tsx | 50 ++++++ src/vite-env.d.ts | 1 + 17 files changed, 1326 insertions(+) create mode 100644 src/app.css create mode 100644 src/app.tsx create mode 100644 src/components/carousel.css create mode 100644 src/components/carousel.tsx create mode 100644 src/components/navbar-item.tsx create mode 100644 src/components/navbar.css create mode 100644 src/components/navbar.tsx create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/pages/contact.css create mode 100644 src/pages/contact.tsx create mode 100644 src/pages/games.css create mode 100644 src/pages/games.tsx create mode 100644 src/pages/home.tsx create mode 100644 src/pages/projects.css create mode 100644 src/pages/projects.tsx create mode 100644 src/vite-env.d.ts (limited to 'src') diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..4cd5008 --- /dev/null +++ b/src/app.css @@ -0,0 +1,114 @@ +#app-main { + font-family: 'Hack', monospace; + max-width: 1280px; + margin: 0 auto; + padding: 2rem 2rem 2rem 2rem; + text-align: center; +} + +#app { + margin: 0 auto; + display: flex; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.preact:hover { + filter: drop-shadow(0 0 2em #673ab8aa); +} + +.main-info { + margin-top: 80px; + text-align: center; +} + +.main-info-image { + width: 128px; + height: 128px; + border-radius: 100%; + margin: 6px 6px 6px 6px; +} + +.main-info-title { + font-size: 42pt; +} + +.main-info-subtitle { + font-size: 26pt; + font-style: italic; + color: #5c6370; +} + +.quiet { + color: var(--color-gray); + font-style: italic; +} + +.section { + font-size: 22pt; +} + +.highlight { + color: #e5c07b; +} + +@media (max-width: 480px) { + .main-info-title { + font-size: 32pt; + } + + .main-info-subtitle { + font-size: 18pt; + } +} + +@media (max-width: 1150px) and (min-width: 480px) { + .main-info-title { + font-size: 42pt; + } + + .main-info-subtitle { + font-size: 26pt; + } +} + +@media (min-width: 1150px) { + .main-info-title { + font-size: 42pt; + } + + .main-info-subtitle { + font-size: 26pt; + } +} + + +@media (max-width: 480px) { + .about-paragraph { + margin: auto; + font-size: 16pt; + max-width: 90%; + } +} + +@media (max-width: 1150px) and (min-width: 480px) { + .about-paragraph { + margin: auto; + font-size: 18pt; + max-width: 80%; + } +} + +@media (min-width: 1150px) { + .about-paragraph { + margin: auto; + font-size: 18pt; + max-width: 60%; + } +} diff --git a/src/app.tsx b/src/app.tsx new file mode 100644 index 0000000..771b84a --- /dev/null +++ b/src/app.tsx @@ -0,0 +1,23 @@ +import './app.css' +import { Navbar } from './components/navbar' +import Contact from './pages/contact'; +import Games from './pages/games'; +import Home from './pages/home' +import { Router, Route } from 'preact-router'; +import Projects from './pages/projects'; + +export function App() { + return ( + <> + +
+ + + + + + +
+ + ) +} diff --git a/src/components/carousel.css b/src/components/carousel.css new file mode 100644 index 0000000..f311805 --- /dev/null +++ b/src/components/carousel.css @@ -0,0 +1,68 @@ +.carousel-content { + align-self: center; + max-height: 100%; + white-space: nowrap; + -ms-overflow-style: none; /* hide scrollbar in IE and Edge */ + scrollbar-width: none; /* hide scrollbar in Firefox */ +} + +.carousel-item { + width: 100%; + flex-shrink: 0; + height: auto; + float: left; + text-align: center; + transition: all 250ms linear; + white-space: nowrap; + vertical-align: middle; +} + +.slick-slider { + margin: 24px; +} + +.slick-slide { + margin: 0 auto; + border-radius: 10px; + text-align: center; + float: none !important; + display: inline-block !important; + vertical-align: middle; + min-height: 1px; +} + +.carousel-item > * { + border-radius: 10px; + vertical-align: middle; + width: 100%; + height: auto; +} + +.slick-dots li button::before { + color: var(--color-fg) !important; +} + +@media (max-width: 1150px) { + .carousel-wrapper { + margin: 60px auto; + width: 330px; + height: 220px; + } +} + +@media (max-width: 1150px) and (min-width: 480px) { + .carousel-wrapper { + margin: 60px auto; + width: 480px; + height: 360px; + } +} + +@media (min-width: 1150px) { + .carousel-wrapper { + float: right; + width: 480px; + height: 360px; + } +} + diff --git a/src/components/carousel.tsx b/src/components/carousel.tsx new file mode 100644 index 0000000..af9279b --- /dev/null +++ b/src/components/carousel.tsx @@ -0,0 +1,31 @@ +import './carousel.css'; +import Slider, { Settings } from 'react-slick'; +import "slick-carousel/slick/slick.css"; +import "slick-carousel/slick/slick-theme.css"; + +export default function Carousel(props: { children: any }) { + const settings: Settings = { + dots: true, + infinite: true, + speed: 500, + slidesToShow: 1, + slidesToScroll: 1 + }; + + return ( + + ); +} diff --git a/src/components/navbar-item.tsx b/src/components/navbar-item.tsx new file mode 100644 index 0000000..c2f2306 --- /dev/null +++ b/src/components/navbar-item.tsx @@ -0,0 +1,8 @@ +import * as preact from "preact"; + +export function NavbarItem(props: any) { + const { name, href, children, rel } = props; + + return (preact.createElement("div", { className: "navbar-item" }, + preact.createElement("a", { className: "navbar-item-" + name, href: href, rel: rel }, children))); +} diff --git a/src/components/navbar.css b/src/components/navbar.css new file mode 100644 index 0000000..18390bb --- /dev/null +++ b/src/components/navbar.css @@ -0,0 +1,270 @@ +.navbar-container { + position: fixed; + background-color: var(--color-bg); + top: 0; + width: 100%; + z-index: 9999; + margin: auto; + width: 100%; +} + +.navbar { + margin-top: 20pt; + margin-bottom: 12pt; + align-items: center; + justify-content: center; + align-self: center; +} + +.navbar-icon { + font-family: Hack, monospace; + font-weight: 500; + color: #646cff; + font-size: 1.5em; + padding: 0.5em; + margin: 0.5em; +} + +.navbar { + align-self: center; + display: block; + width: 100%; + text-align: center; +} + +.navbar-item { + font-family: Hack, monospace; + font-size: 18pt; + text-align: center; + float: none; + clear: left; + display: inline-block; + margin: 0 0.25em; + transition: all 0.2s ease-in-out; +} + +.navbar-item:hover { + padding-left: 0.5em; + padding-right: 0.5em; + transition: all 0.2s ease-in-out; +} + +.navbar-current { + font-weight: bold; +} + +/* home */ + +.navbar-item-home:link { + color: #98C379; + text-decoration: none; +} + +.navbar-item-home:visited { + color: #98C379; + text-decoration: none; +} + +.navbar-item-home:hover { + color: #afd088; + text-decoration: underline; +} + +.navbar-item-home:active { + color: #afd088; + text-decoration: underline; +} + +/* games */ + +.navbar-item-games:link { + color: #e06c75; + text-decoration: none; +} + +.navbar-item-games:visited { + color: #e06c75; + text-decoration: none; +} + +.navbar-item-games:hover { + color: #ef7a80; + text-decoration: underline; +} + +.navbar-item-games:active { + color: #ef7a90; + text-decoration: underline; +} + +/* projects */ + +.navbar-item-projects:link { + color: #d19a66; + text-decoration: none; +} + +.navbar-item-projects:visited { + color: #d19a66; + text-decoration: none; +} + +.navbar-item-projects:hover { + color: #dfa873; + text-decoration: underline; +} + +.navbar-item-projects:active { + color: #dffa73; + text-decoration: underline; +} + +/* github */ + +.navbar-item-github:link { + color: #c678dd; + text-decoration: none; +} + +.navbar-item-github:visited { + color: #c678dd; + text-decoration: none; +} + +.navbar-item-github:hover { + color: #d286eb; + text-decoration: underline; +} + +.navbar-item-github:active { + color: #d286eb; + text-decoration: underline; +} + +/* itch */ + +.navbar-item-itch:link { + color: #e06c75; + text-decoration: none; +} + +.navbar-item-itch:visited { + color: #e06c75; + text-decoration: none; +} + +.navbar-item-itch:hover { + color: #ef7a80; + text-decoration: underline; +} + +.navbar-item-itch:active { + color: #ef7a90; + text-decoration: underline; +} + +/* twitter */ + +.navbar-item-twitter:link { + text-decoration: none; +} + +.navbar-item-twitter:visited { + text-decoration: none; +} + +.navbar-item-twitter:hover { + text-decoration: underline; +} + +.navbar-item-twitter:active { + text-decoration: underline; +} + +/* mastodon */ + +.navbar-item-mastodon:link { + color: #6a4ae0; + text-decoration: none; +} + +.navbar-item-mastodon:visited { + color: #6a4ae0; + text-decoration: none; +} + +.navbar-item-mastodon:hover { + color: #7a55e8; + text-decoration: underline; +} + +.navbar-item-mastodon:active { + color: #7a55e8; + text-decoration: underline; +} + +/* cohost */ + +.navbar-item-cohost:link { + color: #b63b73; + text-decoration: none; +} + +.navbar-item-cohost:visited { + color: #b63b73; + text-decoration: none; +} + +.navbar-item-cohost:hover { + color: #c54a7f; + text-decoration: underline; +} + +.navbar-item-cohost:active { + color: #c54a7f; + text-decoration: underline; +} + +/* tumblr */ + +.navbar-item-tumblr:link { + color: #00b8ff; + text-decoration: none; +} + +.navbar-item-tumblr:visited { + color: #00b8ff; + text-decoration: none; +} + +.navbar-item-tumblr:hover { + color: #00c5ff; + text-decoration: underline; +} + +.navbar-item-tumblr:active { + color: #00c5ff; + text-decoration: underline; +} + +/* contact */ + +.navbar-item-contact:link { + color: #e5c07b; + text-decoration: none; +} + +.navbar-item-contact:visited { + color: #e5c07b; + text-decoration: none; +} + +.navbar-item-contact:hover { + color: #f2ce89; + text-decoration: underline; +} + +.navbar-item-contact:active { + color: #f2ce89; + text-decoration: underline; +} diff --git a/src/components/navbar.tsx b/src/components/navbar.tsx new file mode 100644 index 0000000..ba3d7d7 --- /dev/null +++ b/src/components/navbar.tsx @@ -0,0 +1,20 @@ +import './navbar.css'; + +import { NavbarItem } from './navbar-item'; + +export function Navbar() { + return ( + + ); +} diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..cf6f743 --- /dev/null +++ b/src/index.css @@ -0,0 +1,121 @@ +:root { + font-weight: 400; + + color-scheme: light dark; + color: var(--color-fg); + background-color: var(--color-bg); + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; + + /* variables */ + --color-bg: #161f30; + --color-fg: #a3b3d9; + --color-search-blue: #083C5A; + --color-white: #a3b3d9; + --color-gray: #647089; + --color-dark-gray: #3e4451; + --color-context: #6b737f; + --color-light-gray: #c8ccd4; + --color-tree-gray: #1b1f27; + --color-blue: #6080dd; + --color-vivid-blue: #61afef; + --color-dark-blue: #223E55; + --color-folder-blue: #61afef; + --color-light-blue: #a3b3d9; + --color-green: #449871; + --color-cyan: #56b6c2; + --color-light-green: #98c379; + --color-red: #c13251; + --color-orange: #c18a56; + --color-light-red: #e06c75; + --color-yellow: #e5c07b; + --color-purple: #604bd8; + --color-magenta: #b071fc; +} + +a:link { + font-weight: 500; + color: #4fc1ff; + text-decoration: inherit; +} + +a:visited { + color: #4fc1ff; +} + +a:hover { + color: #60d2ff; +} + +a:active { + color: #66d8ff; +} + + +body { + margin: 0; + /* display: flex; */ + /* place-items: center; */ + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +span { + display: inline; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} + +.hack { + font-family: Hack, monospace; + font-weight: 500; +} + +.grow { + transition: all .2s ease-in-out; + transform: scale(1); +} + +.grow:hover { + transition: all .2s ease-in-out; + transform: scale(1.1); +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..846cd1e --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,5 @@ +import { render } from 'preact' +import { App } from './app.tsx' +import './index.css' + +render(, document.getElementById('app')!) diff --git a/src/pages/contact.css b/src/pages/contact.css new file mode 100644 index 0000000..93b63bd --- /dev/null +++ b/src/pages/contact.css @@ -0,0 +1,22 @@ +.contact-container { + width: 100%; + max-width: 1120px; + margin: auto; + margin-top: 24pt; + margin-bottom: 48pt; + align-items: center; + justify-content: center; + align-self: center; + font-size: 18pt; +} + +.contact { + margin-top: 24pt; + margin-bottom: 8pt; + font-size: 20pt; + color: #98C379; +} + +.highlight { + color: #e5c07b; +} diff --git a/src/pages/contact.tsx b/src/pages/contact.tsx new file mode 100644 index 0000000..efc9eba --- /dev/null +++ b/src/pages/contact.tsx @@ -0,0 +1,34 @@ +import './contact.css'; + +export default function Contact() { + return ( +
+
+ Contact +
+
+
+ Discord +
+ + usually the fastest way to reach me +
+ EchoDuck#7866 + +
+ Matrix +
+ for the FOSS folks +
+ @echoduck:matrix.org + +
+ Email +
+ I check my email daily +
+ duckonaut@gmail.com +
+
+ ); +} diff --git a/src/pages/games.css b/src/pages/games.css new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/games.tsx b/src/pages/games.tsx new file mode 100644 index 0000000..314813d --- /dev/null +++ b/src/pages/games.tsx @@ -0,0 +1,393 @@ +import Carousel from '../components/carousel'; +import './projects.css'; + +export default function Games() { + return ( + <> +
+
+ Game Projects +
+
+ my game projects, mostly from game jams +
+
+
+
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ + +
+
+
+
+ The legends say that one day, brave Heroes will slay the evil and malicious Ignatius, the Chaos + Bringer... But YOU won't go down without a fight! Be the bossfight everyone is dreading and hunt + down as many Heroes as you can in your last stand using a variety of abilities you can choose from! +
+ Game made in 72 hours for Ludum Dare 50, with + the theme "Delay the Inevitable". +
+
+ + + + + + + +
+ +
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ + +
+
+
+
+ A physics puzzle game in which you need to protect little creatures from danger that could come from + any direction. Build forts with tetris-style blocks. The game features 30+ levels, multiple distinct + enemies and a star rating system. +
+ Game made in 72 hours for Ludum Dare 49, with + the theme "Unstable". +
+
+ + + + + + +
+ +
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ +
+
+
+
+ Adventure through a dungeon of gambling themed enemies! + Craft your perfect dice from many powerful spells, + combo them to destroy everything in your path, and descend deeper. +
+ Game made in under 50 hours for GMTK Game Jam 2022, + with + the theme "Roll of the dice". +
+
+ + + +
+ +
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ + +
+
+
+
+ Turn based arcade survival game. + Survive as long as you can by freezing enemies and using them to defeat more enemies. +
+ Game made in roughly 8 hours for a private game jam with friends. +
+
+ + + + + + +
+ +
+
Miro +
+
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ +
+
+
+
+ Small chill game made mostly as an experiment for a nice 2D renderer mechanic. + Infect the world around you, breaking it down into its simplest components. +
+ Game made in roughly 8 hours for a private game jam with friends. +
+
+ + + + + + +
+ +
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ + +
+
+
+
+ Play as Yolka, a mountain goat who found an unknown egg. Keep the egg warm as you navigate the 3 + distinct worlds, and bring it to the hottest place you know: the depths of a volcano. +
+ Game made in a week for Newgrounds July + Jam 2021, with the theme "Egg". +
+
+ + + + + + + +
+ +
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ +
+
+
+
+ Tiny idle simulation game where you manage a team of randomly generated little fellas as they fight + other greachers in a sidescrolling world with beautiful procedurally generated graphics. +
+ Game made in 2 weeks for LOWREZJAM 2021, with the + theme "Minibeasts". +
+
+ + + + + + +
+ +
+ +
+
+
Made using
+
+ +
+
+
+
Available on
+
+ + +
+
+
+
+ A top-down stealth game where you play as a spy tasked with stealing important data from a rivaling + government. Your task would be easy enough if your objective wasn’t in a underground top-secret + facility handling an alien outbreak. Without access to conventional stealth techniques, use corpses + of your enemies to sneak through the battlefield. +
+ Game made in 72 hours for Ludum Dare 48, with + the theme "Deeper and deeper". +
+
+ + + + + + + +
+
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ +
+
+
+
+ A simple pacman-inspired arcade game. Try to grab all the stars in a randomly generated maze before + the time expires, while your controls are scattered all over the screen. Get as far as you can to + get the highest score. +
+ Game made in 8 hours for Jam Jam, a local + in-person event organized by KNTG Polygon, with + the theme "One Click". +
+
+ + + + + + +
+
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ +
+
+
+
+ You just got your first guitar, and through sheer luck managed to land in the king's throne room, + trying to entertain him. Sadly, his subjects aren't huge fans of your music. Dodge them while trying + to play the best you can, or the king won't be merciful. +
+ Game made in 48 hours for a special solo game jam among friends. My theme was "Power at a price". +
+
+ + + + + +
+
+ +
+
+
Made using
+
+ +
+
+
+
Available on
+
+ + +
+
+
+
+ A quick movement focused platformer that tests your short term memory. Survive the trap system of an + ancient temple! Dash through the lanterns in the correct order before the time runs out, or face + certain death! +
+ Game made in 48 hours for Ludum Dare Compo 47 + with the theme "Stuck in a loop". +
+
+ + + + +
+
+ + ); +} + diff --git a/src/pages/home.tsx b/src/pages/home.tsx new file mode 100644 index 0000000..a47e997 --- /dev/null +++ b/src/pages/home.tsx @@ -0,0 +1,29 @@ +export default function Home() { + return ( + <> +
+
+ Stanisław Zagórowski +
+
+ aka Duckonaut, EchoDuck +
+ +
+ +
+

+ Hello! I'm a programmer, game designer, and artist. I'm currently a student at the Warsaw University of + Technology, studying Computer Science. A list of the games I've worked on is in the games section. Other projects I've been a part of are available in the projects section. + I also enjoy some lower-level programming and learning about the inner workings of various systems. The main + technologies I use are C#, Unity + , Python, Rust and C, + although I'm also familiar with Godot, C++ + , Java and some JavaScript and TypeScript. +

+
+ + ); +} diff --git a/src/pages/projects.css b/src/pages/projects.css new file mode 100644 index 0000000..f9cc07f --- /dev/null +++ b/src/pages/projects.css @@ -0,0 +1,137 @@ +.icon { + display: inline; + width: 32px; + height: 32px; + transition: 0.3s; + transform-origin: center; + filter: brightness(70%) +} + +.icon:hover { + filter: brightness(80%); +} + +.icon-row { + width: 240px; + height: 36px; +} + +.icon-container { + height: 36px; + float: right; +} + +.icon-text { + width: auto; + height: 36px; + line-height: 36px; + float: left; + vertical-align: middle; + margin-right: 8px; + color: #5c6370; +} + +.projects-container { + width: 100%; + max-width: 1120px; + margin: auto; + margin-top: 24pt; + margin-bottom: 48pt; + align-items: center; + justify-content: center; + align-self: center; +} + +.project { + display: table; + align-self: center; + clear: both; + margin-bottom: 24pt; +} + +.project-info { + font-size: 14pt; +} + +.project-description { + font-size: 16pt; + text-align: justify; +} + +.project-image-gallery { + margin-left: 24px; + margin-right: 10px; +} + +@media (max-width: 1150px) { + .project-title { + text-align: center; + font-size: 24pt; + margin-bottom: 8px; + text-decoration-line: underline; + } + + .project-image-gallery { + margin: 60px auto; + width: 330px; + height: 220px; + } + + .project-info { + float: none; + width: 90%; + margin: auto; + } + + .project-description { + font-size: 14pt; + } +} + +@media (max-width: 1150px) and (min-width: 480px) { + .project-title { + text-align: center; + font-size: 24pt; + margin-bottom: 8px; + text-decoration-line: underline; + } + .project-image-gallery { + margin: 60px auto; + width: 480px; + height: 360px; + } + + .project-info { + float: none; + width: 90%; + margin: auto; + } + + .project-description { + font-size: 14pt; + } +} + +@media (min-width: 1150px) { + .project-title { + text-align: left; + font-size: 32pt; + margin-bottom: 8px; + text-decoration-line: underline; + } + .project-image-gallery { + float: right; + width: 480px; + height: 360px; + } + .project-info { + float: left; + max-width: 600px; + } + + .project-description { + font-size: 16pt; + } +} + + diff --git a/src/pages/projects.tsx b/src/pages/projects.tsx new file mode 100644 index 0000000..4e64704 --- /dev/null +++ b/src/pages/projects.tsx @@ -0,0 +1,50 @@ +import './projects.css'; +import Carousel from '../components/carousel'; + +export default function Projects() { + return ( + <> +
+
+ Other Projects +
+
+ projects that are not games +
+
+ +
+ +
+ +
+
+
Made using
+
+ +
+
+
+
Available on
+
+ +
+
+
+
+ The Spirit Mod is one of the largest mods for Terraria: with more than 1300 items, 8 bosses, and + hundreds of enemies, as well as 3 new events and 3 brand new biomes, the mod has a lot to offer. +
+ I had the privilege of contributing some system code, mainly the "Stargoop" system. +
+
+ + + + + +
+
+ + ); +} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// -- cgit v1.3.1