🎨 Design improvements + fixed content page size + improve accessibility

This commit is contained in:
pheralb
2025-09-16 13:28:44 +01:00
parent 5bc3616dec
commit 789fc0ce72
9 changed files with 74 additions and 85 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import type { tCategory } from "@/types/categories"; import type { Category } from "@/types/categories";
import { cn } from "@/utils/cn"; import { cn } from "@/utils/cn";
import { svgs } from "@/data/svgs"; import { svgs } from "@/data/svgs";
@@ -10,7 +10,7 @@
import { sidebarBadgeClasses } from "./sidebarBadgeClasses"; import { sidebarBadgeClasses } from "./sidebarBadgeClasses";
// Get category counts: // Get category counts:
const categories: tCategory[] = getCategories(); const categories: Category[] = getCategories();
let categoryCounts: Record<string, number> = {}; let categoryCounts: Record<string, number> = {};
categories.forEach((category) => { categories.forEach((category) => {
categoryCounts[category] = svgs.filter((svg) => categoryCounts[category] = svgs.filter((svg) =>
+1 -1
View File
@@ -20,7 +20,7 @@
<ShowSidebarLinks /> <ShowSidebarLinks />
</nav> </nav>
<Separator orientation="horizontal" /> <Separator orientation="horizontal" />
<nav class="flex flex-col space-y-0.5 overflow-y-auto"> <nav class="relative flex h-auto flex-col space-y-0.5 overflow-y-auto">
<ShowCategories /> <ShowCategories />
</nav> </nav>
</aside> </aside>
+8 -64
View File
@@ -5,70 +5,14 @@
</script> </script>
<svg <svg
name="SVGL Logo"
xmlns="http://www.w3.org/2000/svg"
width={props.size} width={props.size}
height={props.size} height={props.size}
name="SVGL Logo" fill="currentColor"
viewBox="0 0 512 512" viewBox="0 0 256 256"
fill="none" ><path d="M216,136c-8,24-56,72-80,80V184a48,48,0,0,1,48-48Z" opacity="0.2"
xmlns="http://www.w3.org/2000/svg" ></path><path
xmlns:xlink="http://www.w3.org/1999/xlink" d="M168,32H88A56.06,56.06,0,0,0,32,88v80a56.06,56.06,0,0,0,56,56h48a8.07,8.07,0,0,0,2.53-.41c26.23-8.75,76.31-58.83,85.06-85.06A8.07,8.07,0,0,0,224,136V88A56.06,56.06,0,0,0,168,32ZM48,168V88A40,40,0,0,1,88,48h80a40,40,0,0,1,40,40v40H184a56.06,56.06,0,0,0-56,56v24H88A40,40,0,0,1,48,168Zm96,35.14V184a40,40,0,0,1,40-40h19.14C191,163.5,163.5,191,144,203.14Z"
class={props.className} ></path>
>
<rect
id="svgl__r4"
width="512"
height="512"
x="0"
y="0"
rx="128"
fill="#222"
stroke="#FFFFFF"
stroke-width="0"
stroke-opacity="100%"
paint-order="stroke"
/><rect
width="512"
height="512"
x="0"
y="0"
fill="url(#svgl__r6)"
rx="128"
style="mix-blend-mode: overlay;"
/><clipPath id="svgl__clip"><use xlink:href="#svgl__r4" /></clipPath><defs
><linearGradient
id="svgl__r5"
gradientUnits="userSpaceOnUse"
gradientTransform="rotate(135)"
style="transform-origin: center center;"
><stop stop-color="#222" /><stop
offset="1"
stop-color="#222222"
/></linearGradient
><radialGradient
id="svgl__r6"
cx="0"
cy="0"
r="1"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(256) rotate(90) scale(512)"
><stop stop-color="white" /><stop
offset="1"
stop-color="white"
stop-opacity="0"
/></radialGradient
></defs
><svg
xmlns="http://www.w3.org/2000/svg"
width="310"
height="310"
fill="#e8e8e8"
viewBox="0 0 256 256"
x="101"
y="101"
alignment-baseline="middle"
style="color: rgb(255, 255, 255);"
><path
d="M168,32H88A56.06,56.06,0,0,0,32,88v80a56.06,56.06,0,0,0,56,56h48a8.07,8.07,0,0,0,2.53-.41c26.23-8.75,76.31-58.83,85.06-85.06A8.07,8.07,0,0,0,224,136V88A56.06,56.06,0,0,0,168,32ZM48,168V88A40,40,0,0,1,88,48h80a40,40,0,0,1,40,40v40H184a56.06,56.06,0,0,0-56,56v24H88A40,40,0,0,1,48,168Zm96,35.14V184a40,40,0,0,1,40-40h19.14C191,163.5,163.5,191,144,203.14Z"
/></svg
>
</svg> </svg>
+2 -2
View File
@@ -22,7 +22,7 @@
<button <button
class={cn( class={cn(
"cursor-pointer transition-colors hover:animate-pulse", "cursor-pointer transition-colors hover:animate-pulse",
"text-neutral-500 hover:text-red-700 dark:text-neutral-400 dark:hover:text-red-400", "text-neutral-500 hover:text-red-700 dark:text-neutral-400 dark:hover:text-red-600",
isFavorite && "text-red-500", isFavorite && "text-red-500",
)} )}
onclick={toggleFavorite} onclick={toggleFavorite}
@@ -36,6 +36,6 @@
<HeartIcon <HeartIcon
size={16} size={16}
strokeWidth={1.8} strokeWidth={1.8}
class={cn(isFavorite && "fill-red-500")} class={cn(isFavorite && "fill-red-500 dark:fill-red-600")}
/> />
</button> </button>
+2 -2
View File
@@ -564,8 +564,8 @@
class="mt-1 flex w-full items-center text-center text-[12px] text-neutral-600 dark:text-neutral-400" class="mt-1 flex w-full items-center text-center text-[12px] text-neutral-600 dark:text-neutral-400"
> >
<p> <p>
Remember to request permission from the creators for the use of the SVG. Please ensure you have permission from the creators before using the
Modification is not allowed. SVG. Modifications are not permitted.
</p> </p>
</div> </div>
</Popover.Content> </Popover.Content>
+9 -5
View File
@@ -306,11 +306,15 @@
</div> </div>
{/if} {/if}
</div> </div>
<Dialog.Footer class="text-xs text-neutral-600 dark:text-neutral-400"> <Dialog.Footer>
<p> <div
Remember to request permission from the creators for the use of the class="mt-2 flex w-full items-center justify-center text-sm text-neutral-600 dark:text-neutral-400"
SVG. Modification is not allowed. >
</p> <p class="w-full text-center text-sm">
Please ensure you have permission from the creators before using the
SVG. Modifications are not permitted.
</p>
</div>
</Dialog.Footer> </Dialog.Footer>
</Dialog.Content> </Dialog.Content>
</Dialog.Root> </Dialog.Root>
+2 -2
View File
@@ -90,9 +90,9 @@ export const rehypeCopyBtn = () => {
type: "button", type: "button",
title: "Copy code to clipboard", title: "Copy code to clipboard",
class: cn( class: cn(
"cursor-pointer absolute top-0 right-0 px-1.5 py-0.5 rounded-bl-md", "cursor-pointer z-40 absolute top-[1px] right-[1px] px-1.5 py-0.5 rounded-bl-md",
"border-b border-l border-neutral-200 dark:border-neutral-800", "border-b border-l border-neutral-200 dark:border-neutral-800",
"transition-colors hover:text-neutral-700 dark:hover:text-neutral-300", "transition-colors text-neutral-500 dark:text-neutral-400 hover:text-black dark:hover:text-white",
), ),
onclick: ` onclick: `
const button = this; const button = this;
+47 -6
View File
@@ -1,16 +1,22 @@
<script lang="ts"> <script lang="ts">
import type { PageProps } from "./$types"; import type { PageProps } from "./$types";
import { cn } from "@/utils/cn";
import PageCard from "@/components/pageCard.svelte"; import PageCard from "@/components/pageCard.svelte";
import PageHeader from "@/components/pageHeader.svelte";
import Container from "@/components/container.svelte"; import Container from "@/components/container.svelte";
import PageHeader from "@/components/pageHeader.svelte";
import TableOfContents from "@/components/tableOfContents/tableOfContents.svelte";
import * as Collapsible from "@/components/ui/collapsible";
import FileText from "@lucide/svelte/icons/file-text"; import FileText from "@lucide/svelte/icons/file-text";
// Markdown: // Markdown:
import "@/styles/markdown.css"; import "@/styles/markdown.css";
import { buttonVariants } from "@/components/ui/button";
import ChevronDown from "@lucide/svelte/icons/chevron-down";
let { data }: PageProps = $props(); let { data }: PageProps = $props();
let tocOpen = $state(false);
const document = $derived(data.document); const document = $derived(data.document);
</script> </script>
@@ -21,7 +27,7 @@
<PageCard <PageCard
containerClass="mt-0" containerClass="mt-0"
contentCardClass="max-h-[calc(100vh-5rem)] min-h-[calc(100vh-5rem)]" contentCardClass="min-h-[calc(100vh-5.4rem)] md:min-h-[calc(100vh-5rem)]"
> >
<PageHeader> <PageHeader>
<div <div
@@ -33,7 +39,42 @@
</p> </p>
</div> </div>
</PageHeader> </PageHeader>
<Container className="my-6"> <Collapsible.Root class="block lg:hidden" bind:open={tocOpen}>
<article class="markdown">{@html document.html}</article> <Collapsible.Trigger
</Container> class={buttonVariants({
variant: "outline",
class: "mb-4 w-full rounded-none border-x-0 border-t-0",
})}
>
<span>On this page</span>
<ChevronDown
size={14}
class={cn(
"transition-transform duration-200",
tocOpen ? "rotate-180" : "rotate-0",
)}
/>
</Collapsible.Trigger>
<Collapsible.Content class="px-4">
<TableOfContents toc={document.tableOfContents} />
</Collapsible.Content>
</Collapsible.Root>
<div class="flex min-h-screen gap-8 lg:gap-12">
<Container
className={cn(
"flex-1 mt-8 mb-6 max-w-3xl",
"animate-in duration-500 fill-mode-backwards fade-in slide-in-from-bottom-4",
)}
>
<article class="markdown">{@html document.html}</article>
</Container>
<aside class="sticky top-20 hidden w-60 flex-shrink-0 self-start lg:block">
<div
class="mb-2 text-sm font-medium text-neutral-900 dark:text-neutral-50"
>
On this page
</div>
<TableOfContents toc={document.tableOfContents} />
</aside>
</div>
</PageCard> </PageCard>
+1 -1
View File
@@ -103,7 +103,7 @@
</section> </section>
<Container <Container
className={cn( className={cn(
"max-w-3xl", "max-w-4xl",
"animate-in delay-500 duration-500 fill-mode-backwards fade-in slide-in-from-bottom-4", "animate-in delay-500 duration-500 fill-mode-backwards fade-in slide-in-from-bottom-4",
)} )}
> >