diff --git a/app/Section/Characters.tsx b/app/Section/Characters.tsx new file mode 100644 index 0000000..2d43dca --- /dev/null +++ b/app/Section/Characters.tsx @@ -0,0 +1,54 @@ +import Link from "next/link"; +import { IconWithText } from "../components/IconWithText"; +import { Section } from "../components/Section"; +import { CharacterImage } from "../components/CharacterImage"; + +const links = [ + { + icon: "/icons/furaffinity.svg", + text: "Furaffinity", + desc: "radiquum", + url: "https://furaffinity.net/user/radiquum", + }, + { + icon: "/icons/itaku.svg", + text: "Itaku", + desc: "radiquum", + url: "https://itaku.ee/profile/radiquum", + }, +]; + +export const Characters = () => { + return ( +
+
+

Characters

+
+ {links.map((item) => ( + + + + ))} +
+
+
+ + +
+
+ ); +}; diff --git a/app/Section/Contacts.tsx b/app/Section/Contacts.tsx new file mode 100644 index 0000000..1ce4f3c --- /dev/null +++ b/app/Section/Contacts.tsx @@ -0,0 +1,62 @@ +import Link from "next/link"; +import { IconWithText } from "../components/IconWithText"; +import { Section } from "../components/Section"; + +const links = [ + { + icon: "/icons/ic_baseline-telegram.svg", + text: "Telegram", + desc: "@radiquum", + url: "https://t.me/radiquum", + }, + { + icon: "/icons/ic_baseline-discord.svg", + text: "Discord", + desc: "radiquum", + url: null, + }, + { + icon: "/icons/material-symbols_mail.svg", + text: "E-Mail", + desc: "radiquum@wah.su", + url: "mailto:radiquum@wah.su", + }, + { + icon: "/icons/ri_vk-fill.svg", + text: "Vkontakte", + desc: "@radiquum", + url: "https://vk.com/radiquum", + }, +]; + +export const Contacts = () => { + return ( +
+

Contacts

+
+ {links.map((item) => { + if (item.url) { + return ( + + + + ); + } else { + return ( + + ); + } + })} +
+
+ ); +}; diff --git a/app/Section/Intro.tsx b/app/Section/Intro.tsx new file mode 100644 index 0000000..0ee7e25 --- /dev/null +++ b/app/Section/Intro.tsx @@ -0,0 +1,20 @@ +export const Intro = () => { + return ( +
+
+

+ Radiquum +

+
+
+
+

Photographer

+

Developer

+

+ Self-Hosting admirer +

+
+
+
+ ); +}; diff --git a/app/Section/Photos.tsx b/app/Section/Photos.tsx new file mode 100644 index 0000000..0d3bd55 --- /dev/null +++ b/app/Section/Photos.tsx @@ -0,0 +1,61 @@ +"use client"; + +import Link from "next/link"; +import { Section } from "../components/Section"; +import { IconWithText } from "../components/IconWithText"; +import { EmblaOptionsType } from "embla-carousel"; +import EmblaCarousel from "../components/Photos.Carousel"; + +const links = [ + { + icon: "/icons/ic_baseline-telegram.svg", + text: "Telegram", + desc: "@photowah", + url: "https://x.com/radiquum", + }, + { + icon: "/icons/simple-icons_immich.svg", + text: "Gallery", + desc: "wah.su/photos", + url: "https://bsky.app/profile/@radiquum.wah.su", + }, +]; + +const OPTIONS: EmblaOptionsType = { dragFree: true, loop: true }; +const SLIDES = [ + "/images/photos/2024-06-14T19_32_04_024.JPG", + "/images/photos/2024-06-17T18_55_55_030.JPG", + "/images/photos/2024-06-17T19_44_15_068.JPG", + "/images/photos/2024-06-17T19_48_32_074.JPG", + "/images/photos/2024-06-22T20_17_57_001.JPG", + "/images/photos/image_2024-06-02_16-55-04.png", + "/images/photos/IMG_20230604_043911_43.JPG", + "/images/photos/IMG_20240710_225123.jpg", + "/images/photos/IMG_20240710_225448.jpg", + "/images/photos/IMG_20230602_190558.JPG", + "/images/photos/IMG_20230603_175135.JPG", +]; + +export const Photos = () => { + return ( +
+
+
+

Photos

+
+ {links.map((item) => ( + + + + ))} +
+
+
+ +
+ ); +}; diff --git a/app/Section/Projects.tsx b/app/Section/Projects.tsx new file mode 100644 index 0000000..91886a2 --- /dev/null +++ b/app/Section/Projects.tsx @@ -0,0 +1,63 @@ +import Link from "next/link"; +import { IconWithText } from "../components/IconWithText"; +import { Section } from "../components/Section"; + +const links = [ + { + icon: "/icons/mdi_github.svg", + text: "Anix", + desc: "Unofficial web client for anixart", + url: "https://github.com/radiquum/AniX", + }, + { + icon: "/icons/mdi_github.svg", + text: "Furaffinity-dl", + desc: "Fork with additional functionality", + url: "https://github.com/radiquum/furaffinity-dl", + }, + { + icon: "/icons/mdi_github.svg", + text: "TG-Photos", + desc: "Google Photo like bot for Telegram", + url: "https://github.com/radiquum/TG-Photos", + }, + { + icon: "/icons/mdi_github.svg", + text: "TIG", + desc: "Generate images from text", + url: "https://github.com/radiquum/TIG", + }, + { + icon: "/icons/mdi_github.svg", + text: "GitHub", + desc: "Other Projects", + url: "https://github.com/radiquum", + }, + { + icon: "/icons/wahsu.svg", + text: "wah.su", + desc: "Self-Hosting project", + url: "https://wah.su", + }, + { + icon: "/icons/ic_baseline-telegram.svg", + text: "Red Pandas Stickers", + desc: "Collection of Red Panda related sticker packs", + url: "https://t.me/red_panda_stickers", + }, +]; + +export const Projects = () => { + return ( +
+

Projects

+
+ {links.map((item) => ( + + + + ))} +
+
+ ); +}; diff --git a/app/Section/Socials.tsx b/app/Section/Socials.tsx new file mode 100644 index 0000000..55fb62d --- /dev/null +++ b/app/Section/Socials.tsx @@ -0,0 +1,63 @@ +import Link from "next/link"; +import { IconWithText } from "../components/IconWithText"; +import { Section } from "../components/Section"; + +const links = [ + { + icon: "/icons/uim_twitter.svg", + text: "Twitter", + desc: "@radiquum", + url: "https://x.com/radiquum", + }, + { + icon: "/icons/ri_bluesky-fill.svg", + text: "BlueSky", + desc: "@radiquum.wah.su", + url: "https://bsky.app/profile/@radiquum.wah.su", + }, + { + icon: "/icons/mdi_mastodon.svg", + text: "Mastodon", + desc: "@radiquum@furry.engineer", + url: "https://furry.engineer/@radiquum", + }, + { + icon: "/icons/ic_baseline-telegram.svg", + text: "Telegram", + desc: "@radiquumprojects", + url: "https://t.me/radiquumprojects", + }, + { + icon: "/icons/ri_vk-fill.svg", + text: "Vkontakte", + desc: "@radiquum", + url: "https://vk.com/radiquum", + }, + { + icon: "/icons/ri_pixelfed-fill.svg", + text: "Pixey", + desc: "@radiquum@pixey.org", + url: "https://pixey.org/@radiquum", + }, + { + icon: "/icons/ri_pixelfed-fill.svg", + text: "Instafops", + desc: "@radiquwum@Instafops.net", + url: "https://instafops.net/@radiquum", + }, +]; + +export const Socials = () => { + return ( +
+

Socials

+
+ {links.map((item) => ( + + + + ))} +
+
+ ); +}; diff --git a/app/components/CharacterImage.tsx b/app/components/CharacterImage.tsx new file mode 100644 index 0000000..a01d403 --- /dev/null +++ b/app/components/CharacterImage.tsx @@ -0,0 +1,28 @@ +/* eslint-disable @next/next/no-img-element */ +type CharacterImageProps = { + image: string; + name: string | null; + species: string; + gender: string; +}; + +export const CharacterImage = ({ + image, + name, + species, + gender, +}: CharacterImageProps) => { + return ( +
+ +
+
+

{name}

+

+ {species}, {gender} +

+
+
+
+ ); +}; diff --git a/app/components/IconWithText.tsx b/app/components/IconWithText.tsx new file mode 100644 index 0000000..9e07af4 --- /dev/null +++ b/app/components/IconWithText.tsx @@ -0,0 +1,18 @@ +type IconWithTextProps = { + icon: string; + text: string; + desc: string; +}; + +export const IconWithText = ({ icon, text, desc }: IconWithTextProps) => { + return ( +
+ {/* eslint-disable-next-line @next/next/no-img-element */} + {""} +
+

{text}

+

{desc}

+
+
+ ); +}; diff --git a/app/components/Photos.Carousel.tsx b/app/components/Photos.Carousel.tsx new file mode 100644 index 0000000..bcaa3bd --- /dev/null +++ b/app/components/Photos.Carousel.tsx @@ -0,0 +1,112 @@ +import Styles from "./Photos.Carousel.module.css"; + +import React, { useCallback, useEffect, useRef } from "react"; +import { + EmblaCarouselType, + EmblaEventType, + EmblaOptionsType, +} from "embla-carousel"; +import useEmblaCarousel from "embla-carousel-react"; + +const TWEEN_FACTOR_BASE = 0.2; + +type PropType = { + slides: string[]; + options?: EmblaOptionsType; +}; + +const EmblaCarousel: React.FC = (props) => { + const { slides, options } = props; + const [emblaRef, emblaApi] = useEmblaCarousel(options); + const tweenFactor = useRef(0); + const tweenNodes = useRef([]); + + const setTweenNodes = useCallback((emblaApi: EmblaCarouselType): void => { + tweenNodes.current = emblaApi.slideNodes().map((slideNode) => { + return slideNode.querySelector(".embla__parallax__layer") as HTMLElement; + }); + }, []); + + const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => { + tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length; + }, []); + + const tweenParallax = useCallback( + (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => { + const engine = emblaApi.internalEngine(); + const scrollProgress = emblaApi.scrollProgress(); + const slidesInView = emblaApi.slidesInView(); + const isScrollEvent = eventName === "scroll"; + + emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => { + let diffToTarget = scrollSnap - scrollProgress; + const slidesInSnap = engine.slideRegistry[snapIndex]; + + slidesInSnap.forEach((slideIndex) => { + if (isScrollEvent && !slidesInView.includes(slideIndex)) return; + + if (engine.options.loop) { + engine.slideLooper.loopPoints.forEach((loopItem) => { + const target = loopItem.target(); + + if (slideIndex === loopItem.index && target !== 0) { + const sign = Math.sign(target); + + if (sign === -1) { + diffToTarget = scrollSnap - (1 + scrollProgress); + } + if (sign === 1) { + diffToTarget = scrollSnap + (1 - scrollProgress); + } + } + }); + } + + const translate = diffToTarget * (-1 * tweenFactor.current) * 100; + const tweenNode = tweenNodes.current[slideIndex]; + tweenNode.style.transform = `translateX(${translate}%)`; + }); + }); + }, + [] + ); + + useEffect(() => { + if (!emblaApi) return; + + setTweenNodes(emblaApi); + setTweenFactor(emblaApi); + tweenParallax(emblaApi); + + emblaApi + .on("reInit", setTweenNodes) + .on("reInit", setTweenFactor) + .on("reInit", tweenParallax) + .on("scroll", tweenParallax) + .on("slideFocus", tweenParallax); + }, [emblaApi, tweenParallax]); + + return ( +
+
+
+ {slides.map((index) => ( +
+
+
+ Your alt text +
+
+
+ ))} +
+
+
+ ); +}; + +export default EmblaCarousel; diff --git a/app/components/Section.tsx b/app/components/Section.tsx new file mode 100644 index 0000000..d0779f9 --- /dev/null +++ b/app/components/Section.tsx @@ -0,0 +1,9 @@ +export const Section = ({ + children, +}: Readonly<{ children: React.ReactNode }>) => { + return ( +
+ {children} +
+ ); +}; diff --git a/app/globals.css b/app/globals.css index a2dc41e..db00065 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1,8 +1,8 @@ @import "tailwindcss"; :root { - --background: #ffffff; - --foreground: #171717; + --background: #090909; + --foreground: #ededed; } @theme inline { @@ -12,15 +12,78 @@ --font-mono: var(--font-geist-mono); } -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; - } +@font-face { + font-family: "LTSuperior"; + src: url("/fonts/LTSuperior-Mar2025/LTSuperior-Regular.ttf") + format("truetype"); + font-weight: 400; +} + +@font-face { + font-family: "LTSuperior"; + src: url("/fonts/LTSuperior-Mar2025/LTSuperior-Medium.ttf") format("truetype"); + font-weight: 500; +} + +@font-face { + font-family: "LTSuperior"; + src: url("/fonts/LTSuperior-Mar2025/LTSuperior-SemiBold.ttf") + format("truetype"); + font-weight: 700; } body { background: var(--background); color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; + font-family: LTSuperior, Inter, Helvetica, sans-serif; +} + +/* embla styles */ + +.embla { + max-width: 48rem; + margin: auto; + --slide-height: 144px; + --slide-spacing: 8px; + --slide-size: 256px; +} +.embla__viewport { + overflow: hidden; +} +.embla__container { + display: flex; + touch-action: pan-y pinch-zoom; + margin-left: calc(var(--slide-spacing) * -1); +} +.embla__slide { + transform: translate3d(0, 0, 0); + flex: 0 0 var(--slide-size); + min-width: 0; + padding-left: var(--slide-spacing); +} +.embla__slide__img { + border-radius: 1.8rem; + display: block; + height: var(--slide-height); + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} +.embla__parallax { + border-radius: 1.8rem; + height: 100%; + overflow: hidden; +} +.embla__parallax__layer { + position: relative; + height: 100%; + width: 100%; + display: flex; + justify-content: center; +} +.embla__parallax__img { + max-width: none; + flex: 0 0 calc(115% + (var(--slide-spacing) * 2)); + -o-object-fit: cover; + object-fit: cover; } diff --git a/app/layout.tsx b/app/layout.tsx index f7fa87e..b570ae5 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,17 +1,6 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; -const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], -}); - -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], -}); - export const metadata: Metadata = { title: "Create Next App", description: "Generated by create next app", @@ -24,11 +13,7 @@ export default function RootLayout({ }>) { return ( - - {children} - + {children} ); } diff --git a/app/page.tsx b/app/page.tsx index 21b686d..5466d1f 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,103 +1,23 @@ -import Image from "next/image"; +import { Characters } from "./Section/Characters"; +import { Contacts } from "./Section/Contacts"; +import { Intro } from "./Section/Intro"; +import { Photos } from "./Section/Photos"; +import { Projects } from "./Section/Projects"; +import { Socials } from "./Section/Socials"; export default function Home() { return ( -
-
- Next.js logo -
    -
  1. - Get started by editing{" "} - - app/page.tsx - - . -
  2. -
  3. - Save and see your changes instantly. -
  4. -
- -
- - Vercel logomark - Deploy now - - - Read our docs - -
-
- -
+
+
+ + + + +
+
+ + +
+
); } diff --git a/next.config.ts b/next.config.ts index e9ffa30..9d1f4a2 100644 --- a/next.config.ts +++ b/next.config.ts @@ -2,6 +2,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { /* config options here */ + output: 'export' }; export default nextConfig; diff --git a/package-lock.json b/package-lock.json index 706d467..3f412ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "radiquum.github.io", "version": "0.1.0", "dependencies": { + "embla-carousel-react": "^8.6.0", "next": "15.4.2", "react": "19.1.0", "react-dom": "19.1.0" @@ -2548,6 +2549,34 @@ "node": ">= 0.4" } }, + "node_modules/embla-carousel": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", + "license": "MIT" + }, + "node_modules/embla-carousel-react": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz", + "integrity": "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==", + "license": "MIT", + "dependencies": { + "embla-carousel": "8.6.0", + "embla-carousel-reactive-utils": "8.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", + "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", diff --git a/package.json b/package.json index 5fe169c..4fa0c2a 100644 --- a/package.json +++ b/package.json @@ -9,19 +9,20 @@ "lint": "next lint" }, "dependencies": { + "embla-carousel-react": "^8.6.0", + "next": "15.4.2", "react": "19.1.0", - "react-dom": "19.1.0", - "next": "15.4.2" + "react-dom": "19.1.0" }, "devDependencies": { - "typescript": "^5", + "@eslint/eslintrc": "^3", + "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", - "@tailwindcss/postcss": "^4", - "tailwindcss": "^4", "eslint": "^9", "eslint-config-next": "15.4.2", - "@eslint/eslintrc": "^3" + "tailwindcss": "^4", + "typescript": "^5" } } diff --git a/public/file.svg b/public/file.svg deleted file mode 100644 index 004145c..0000000 --- a/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/fonts/LTSuperior-Mar2025/LTSuperior-Medium.ttf b/public/fonts/LTSuperior-Mar2025/LTSuperior-Medium.ttf new file mode 100644 index 0000000..87282ff Binary files /dev/null and b/public/fonts/LTSuperior-Mar2025/LTSuperior-Medium.ttf differ diff --git a/public/fonts/LTSuperior-Mar2025/LTSuperior-Regular.ttf b/public/fonts/LTSuperior-Mar2025/LTSuperior-Regular.ttf new file mode 100644 index 0000000..9a18e2d Binary files /dev/null and b/public/fonts/LTSuperior-Mar2025/LTSuperior-Regular.ttf differ diff --git a/public/fonts/LTSuperior-Mar2025/LTSuperior-SemiBold.ttf b/public/fonts/LTSuperior-Mar2025/LTSuperior-SemiBold.ttf new file mode 100644 index 0000000..6585a2a Binary files /dev/null and b/public/fonts/LTSuperior-Mar2025/LTSuperior-SemiBold.ttf differ diff --git a/public/fonts/LTSuperior-Mar2025/OFL.txt b/public/fonts/LTSuperior-Mar2025/OFL.txt new file mode 100644 index 0000000..adc8cfe --- /dev/null +++ b/public/fonts/LTSuperior-Mar2025/OFL.txt @@ -0,0 +1,94 @@ +Copyright (c) 2024, LyonsType (lyonstype4.wixsite.com/lyonstype-beta), +with Reserved Font Name LT Superior. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/globe.svg b/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/furaffinity.svg b/public/icons/furaffinity.svg new file mode 100644 index 0000000..d5dac7c --- /dev/null +++ b/public/icons/furaffinity.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/icons/ic_baseline-discord.svg b/public/icons/ic_baseline-discord.svg new file mode 100644 index 0000000..8faa944 --- /dev/null +++ b/public/icons/ic_baseline-discord.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/ic_baseline-telegram.svg b/public/icons/ic_baseline-telegram.svg new file mode 100644 index 0000000..37b3fa6 --- /dev/null +++ b/public/icons/ic_baseline-telegram.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/itaku.svg b/public/icons/itaku.svg new file mode 100644 index 0000000..0113340 --- /dev/null +++ b/public/icons/itaku.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/icons/material-symbols_mail.svg b/public/icons/material-symbols_mail.svg new file mode 100644 index 0000000..e0f7186 --- /dev/null +++ b/public/icons/material-symbols_mail.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/mdi_github.svg b/public/icons/mdi_github.svg new file mode 100644 index 0000000..13860b1 --- /dev/null +++ b/public/icons/mdi_github.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/mdi_mastodon.svg b/public/icons/mdi_mastodon.svg new file mode 100644 index 0000000..bef7201 --- /dev/null +++ b/public/icons/mdi_mastodon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/ri_bluesky-fill.svg b/public/icons/ri_bluesky-fill.svg new file mode 100644 index 0000000..b0887ca --- /dev/null +++ b/public/icons/ri_bluesky-fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/ri_pixelfed-fill.svg b/public/icons/ri_pixelfed-fill.svg new file mode 100644 index 0000000..73b50d7 --- /dev/null +++ b/public/icons/ri_pixelfed-fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/ri_vk-fill.svg b/public/icons/ri_vk-fill.svg new file mode 100644 index 0000000..766df16 --- /dev/null +++ b/public/icons/ri_vk-fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/simple-icons_immich.svg b/public/icons/simple-icons_immich.svg new file mode 100644 index 0000000..96cd855 --- /dev/null +++ b/public/icons/simple-icons_immich.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/uim_twitter.svg b/public/icons/uim_twitter.svg new file mode 100644 index 0000000..2eae509 --- /dev/null +++ b/public/icons/uim_twitter.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/wahsu.svg b/public/icons/wahsu.svg new file mode 100644 index 0000000..8298fae --- /dev/null +++ b/public/icons/wahsu.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/photos/2024-06-14T19_32_04_024.JPG b/public/images/photos/2024-06-14T19_32_04_024.JPG new file mode 100644 index 0000000..4c6324b Binary files /dev/null and b/public/images/photos/2024-06-14T19_32_04_024.JPG differ diff --git a/public/images/photos/2024-06-17T18_55_55_030.JPG b/public/images/photos/2024-06-17T18_55_55_030.JPG new file mode 100644 index 0000000..99ea6cc Binary files /dev/null and b/public/images/photos/2024-06-17T18_55_55_030.JPG differ diff --git a/public/images/photos/2024-06-17T19_44_15_068.JPG b/public/images/photos/2024-06-17T19_44_15_068.JPG new file mode 100644 index 0000000..dfd2db4 Binary files /dev/null and b/public/images/photos/2024-06-17T19_44_15_068.JPG differ diff --git a/public/images/photos/2024-06-17T19_48_32_074.JPG b/public/images/photos/2024-06-17T19_48_32_074.JPG new file mode 100644 index 0000000..01919cc Binary files /dev/null and b/public/images/photos/2024-06-17T19_48_32_074.JPG differ diff --git a/public/images/photos/2024-06-22T20_17_57_001.JPG b/public/images/photos/2024-06-22T20_17_57_001.JPG new file mode 100644 index 0000000..8bf96c2 Binary files /dev/null and b/public/images/photos/2024-06-22T20_17_57_001.JPG differ diff --git a/public/images/photos/IMG_20230602_190558.JPG b/public/images/photos/IMG_20230602_190558.JPG new file mode 100644 index 0000000..bd6eca1 Binary files /dev/null and b/public/images/photos/IMG_20230602_190558.JPG differ diff --git a/public/images/photos/IMG_20230603_175135.JPG b/public/images/photos/IMG_20230603_175135.JPG new file mode 100644 index 0000000..e2c6699 Binary files /dev/null and b/public/images/photos/IMG_20230603_175135.JPG differ diff --git a/public/images/photos/IMG_20230604_043911_43.JPG b/public/images/photos/IMG_20230604_043911_43.JPG new file mode 100644 index 0000000..0370c5b Binary files /dev/null and b/public/images/photos/IMG_20230604_043911_43.JPG differ diff --git a/public/images/photos/IMG_20240710_225123.jpg b/public/images/photos/IMG_20240710_225123.jpg new file mode 100644 index 0000000..770fcf7 Binary files /dev/null and b/public/images/photos/IMG_20240710_225123.jpg differ diff --git a/public/images/photos/IMG_20240710_225448.jpg b/public/images/photos/IMG_20240710_225448.jpg new file mode 100644 index 0000000..3eedf08 Binary files /dev/null and b/public/images/photos/IMG_20240710_225448.jpg differ diff --git a/public/images/photos/image_2024-06-02_16-55-04.png b/public/images/photos/image_2024-06-02_16-55-04.png new file mode 100644 index 0000000..765db42 Binary files /dev/null and b/public/images/photos/image_2024-06-02_16-55-04.png differ diff --git a/public/images/protogen.png b/public/images/protogen.png new file mode 100644 index 0000000..c85acb7 Binary files /dev/null and b/public/images/protogen.png differ diff --git a/public/images/red_panda.png b/public/images/red_panda.png new file mode 100644 index 0000000..1894652 Binary files /dev/null and b/public/images/red_panda.png differ diff --git a/public/next.svg b/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/window.svg b/public/window.svg deleted file mode 100644 index b2b2a44..0000000 --- a/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file