From c1e28224aa2e1450031669d9a7e359b63e04687d Mon Sep 17 00:00:00 2001 From: Volpeon Date: Wed, 22 Jul 2026 19:40:59 +0200 Subject: Init --- src/ui/base/BaseLayout.tsx | 134 ++++++++++++++++++++++++++++++++++++ src/ui/components/Logo.tsx | 34 +++++++++ src/ui/components/ReleaseCard.tsx | 47 +++++++++++++ src/ui/components/SiteFooter.tsx | 39 +++++++++++ src/ui/components/SiteHeader.tsx | 121 ++++++++++++++++++++++++++++++++ src/ui/components/SiteNav.tsx | 38 ++++++++++ src/ui/layouts/CardList.tsx | 52 ++++++++++++++ src/ui/layouts/Container.tsx | 33 +++++++++ src/ui/layouts/EmojiGrid.tsx | 40 +++++++++++ src/ui/layouts/HList.tsx | 44 ++++++++++++ src/ui/layouts/SplitView.tsx | 27 ++++++++ src/ui/layouts/SplitViewPanel.tsx | 33 +++++++++ src/ui/objects/ActionButton.tsx | 61 ++++++++++++++++ src/ui/objects/Alert.tsx | 21 ++++++ src/ui/objects/Avatar.tsx | 69 +++++++++++++++++++ src/ui/objects/Badge.tsx | 19 +++++ src/ui/objects/Body.tsx | 21 ++++++ src/ui/objects/Button.tsx | 26 +++++++ src/ui/objects/Card.tsx | 47 +++++++++++++ src/ui/objects/CardBody.tsx | 32 +++++++++ src/ui/objects/CardFooter.tsx | 11 +++ src/ui/objects/CardImage.tsx | 40 +++++++++++ src/ui/objects/CollapseCard.tsx | 27 ++++++++ src/ui/objects/ContentImage.tsx | 15 ++++ src/ui/objects/Deflist.tsx | 7 ++ src/ui/objects/Dialog.tsx | 41 +++++++++++ src/ui/objects/Divider.tsx | 51 ++++++++++++++ src/ui/objects/Emoji.tsx | 21 ++++++ src/ui/objects/Figure.tsx | 13 ++++ src/ui/objects/FigureCaption.tsx | 11 +++ src/ui/objects/Heading.tsx | 49 +++++++++++++ src/ui/objects/Icon.tsx | 20 ++++++ src/ui/objects/Lightbox.tsx | 122 ++++++++++++++++++++++++++++++++ src/ui/objects/LoadingIndicator.tsx | 10 +++ src/ui/objects/Navbar.tsx | 37 ++++++++++ src/ui/objects/NavbarItem.tsx | 33 +++++++++ src/ui/objects/PlaceholderBox.tsx | 11 +++ src/ui/objects/SideNav.tsx | 14 ++++ src/ui/objects/SideNavItem.tsx | 33 +++++++++ src/ui/objects/StatusIndicator.tsx | 18 +++++ src/ui/objects/Tab.tsx | 14 ++++ src/ui/objects/Tabbar.tsx | 43 ++++++++++++ src/ui/objects/TextField.tsx | 62 +++++++++++++++++ src/ui/objects/Thumbnail.tsx | 46 +++++++++++++ 44 files changed, 1687 insertions(+) create mode 100644 src/ui/base/BaseLayout.tsx create mode 100644 src/ui/components/Logo.tsx create mode 100644 src/ui/components/ReleaseCard.tsx create mode 100644 src/ui/components/SiteFooter.tsx create mode 100644 src/ui/components/SiteHeader.tsx create mode 100644 src/ui/components/SiteNav.tsx create mode 100644 src/ui/layouts/CardList.tsx create mode 100644 src/ui/layouts/Container.tsx create mode 100644 src/ui/layouts/EmojiGrid.tsx create mode 100644 src/ui/layouts/HList.tsx create mode 100644 src/ui/layouts/SplitView.tsx create mode 100644 src/ui/layouts/SplitViewPanel.tsx create mode 100644 src/ui/objects/ActionButton.tsx create mode 100644 src/ui/objects/Alert.tsx create mode 100644 src/ui/objects/Avatar.tsx create mode 100644 src/ui/objects/Badge.tsx create mode 100644 src/ui/objects/Body.tsx create mode 100644 src/ui/objects/Button.tsx create mode 100644 src/ui/objects/Card.tsx create mode 100644 src/ui/objects/CardBody.tsx create mode 100644 src/ui/objects/CardFooter.tsx create mode 100644 src/ui/objects/CardImage.tsx create mode 100644 src/ui/objects/CollapseCard.tsx create mode 100644 src/ui/objects/ContentImage.tsx create mode 100644 src/ui/objects/Deflist.tsx create mode 100644 src/ui/objects/Dialog.tsx create mode 100644 src/ui/objects/Divider.tsx create mode 100644 src/ui/objects/Emoji.tsx create mode 100644 src/ui/objects/Figure.tsx create mode 100644 src/ui/objects/FigureCaption.tsx create mode 100644 src/ui/objects/Heading.tsx create mode 100644 src/ui/objects/Icon.tsx create mode 100644 src/ui/objects/Lightbox.tsx create mode 100644 src/ui/objects/LoadingIndicator.tsx create mode 100644 src/ui/objects/Navbar.tsx create mode 100644 src/ui/objects/NavbarItem.tsx create mode 100644 src/ui/objects/PlaceholderBox.tsx create mode 100644 src/ui/objects/SideNav.tsx create mode 100644 src/ui/objects/SideNavItem.tsx create mode 100644 src/ui/objects/StatusIndicator.tsx create mode 100644 src/ui/objects/Tab.tsx create mode 100644 src/ui/objects/Tabbar.tsx create mode 100644 src/ui/objects/TextField.tsx create mode 100644 src/ui/objects/Thumbnail.tsx (limited to 'src/ui') diff --git a/src/ui/base/BaseLayout.tsx b/src/ui/base/BaseLayout.tsx new file mode 100644 index 0000000..c57d41e --- /dev/null +++ b/src/ui/base/BaseLayout.tsx @@ -0,0 +1,134 @@ +// @ts-types="corvos/mod.ts" +import { getGenerator, type Select } from "corvos/mod.ts"; + +import site from "@/corvos.config.ts"; + +import { SiteFooter } from "../components/SiteFooter.tsx"; +import { SiteNav } from "../components/SiteNav.tsx"; +import { Lightbox } from "../objects/Lightbox.tsx"; + +export interface Props { + page: Select; + image?: string; + theme?: "l1" | "l2" | null; + children?: JSX.Element; + class?: unknown; +} + +export const BaseLayout = site.$.component( + async ({ page, theme = "l1", image: imageUrl, children, class: cls }: Props, pages) => { + const query = site.$.query(pages); + + const stylesheet = await site.load("styles/style.scss"); + const script = await site.load("scripts/script.ts"); + const fonts = await site.glob("assets/**.woff2"); + const favicon = await site.load("assets/favicon.svg"); + const image = await site.load( + imageUrl ?? "https://strapi.volpeon.ink/uploads/icon_7999cf625e.png", + ); + + const feeds = query.type(".rss").many(); + + return ( + <> + {{ __html: "" }} + + + + + + + + + {fonts.map((font) => ( + + ))} + + + +