mirror of
https://github.com/pesde-pkg/pesde.git
synced 2025-04-20 11:53:47 +01:00
* feat(website): init * feat(website): home page * feat(website): make page more responsive * feat(website): layout * feat(website): package page * feat(website): update PackageResponse type * feat(website): display package readme * feat(website): use new /latest/any endpoint * feat(website): make website lg instead of xl * fix(website): use NodeJS.Timeout * feat(website): versions page * feat(website): add latest version indicator * feat(website): add target select menu * feat(website): indicate current version * feat(website): add package metadata * feat(website): add hamburger * fix(website): header responsiveness * feat(website): better package layout * feat(website): display authors on package page * fix(website): only display relative dates on client * feat(docs): init docs site * chore(website): read .env from project root * feat(website): add gemoji support * fix(website): overflow on code blocks * chore(docs): read .env from project root * feat(docs): config changes * fix: authors not displaying * fix(website): use fallback language * refactor(website): use predefined target names * refactor(website): change Github to GitHub * chore: remove starter readmes * chore(docs): remove .vscode * chore(docs): remove unused assets folder * fix(website): fix missing datetime attribute * feat(website): switch to universal loaders * feat(docs): search * fix(website): type errors * fix(website): use provided fetch instead of global * feat(website): remove isr * chore(website): add .env.example * feat(website): add icons and metadata * chore(website): add debug logs * chore(website): remove shiki temporarily * fix(website): rehype shiki lazy load * fix(website): use custom highlighter * fix(website): move highlighter creation into load * docs: write docs * feat(website): add og image * feat(website): fix accessibility issues * fix(website): no target selector on mobile * fix(website): close dialog on navigation * fix(website): logo is not a link in hamburger menu * feat(website): dependencies tab * fix(website): use correct dependency target * fix(website): navigation links * feat(website): support wally dependencies * feat(website): metadata + case insensitivity * fix(website): manually implement groupBy `Object.groupBy` isn't supported on Vercel right now. * fix(website): code block with an unknown language * docs(policies): explain & cover more cases * docs: update cli reference * docs: add self hosting registries guide * docs: update README * docs: add more configs to registry guide * fix: favicon and logomark * feat(website): package documentation * fix(website): missing $derive for toc * docs: change SENTRY_URL to SENTRY_DSN * chore(website): remove unused file * chore: remove favicon.zip * fix(website): strip wally# prefix * chore: add changelog entry --------- Co-authored-by: daimond113 <72147841+daimond113@users.noreply.github.com>
78 lines
2.1 KiB
Svelte
78 lines
2.1 KiB
Svelte
<script lang="ts">
|
|
import { page } from "$app/stores"
|
|
|
|
import "@fontsource-variable/nunito-sans"
|
|
import "../app.css"
|
|
|
|
const { children } = $props()
|
|
|
|
const siteName = $derived($page.data.meta?.siteName ?? "pesde")
|
|
const title = $derived($page.data.meta?.title)
|
|
const description = $derived(
|
|
$page.data.meta?.description ??
|
|
"A package manager for the Luau programming language, supporting multiple runtimes including Roblox and Lune.",
|
|
)
|
|
|
|
let themeColor = $state("#F19D1E")
|
|
$effect(() => {
|
|
const query = window.matchMedia("(prefers-color-scheme: dark)")
|
|
|
|
const updateColor = (dark: boolean) => {
|
|
themeColor = dark ? "#14100C" : "#FAEAD7"
|
|
}
|
|
|
|
const listener = (e: MediaQueryListEvent) => {
|
|
updateColor(e.matches)
|
|
}
|
|
|
|
query.addEventListener("change", listener)
|
|
updateColor(query.matches)
|
|
|
|
return () => query.removeEventListener("change", listener)
|
|
})
|
|
|
|
function hashChange() {
|
|
let hash
|
|
|
|
try {
|
|
hash = decodeURIComponent(location.hash.slice(1)).toLowerCase()
|
|
} catch {
|
|
return
|
|
}
|
|
|
|
const id = "user-content-" + hash
|
|
const target = document.getElementById(id)
|
|
|
|
if (target) {
|
|
target.scrollIntoView()
|
|
}
|
|
}
|
|
|
|
$effect(() => {
|
|
hashChange()
|
|
})
|
|
</script>
|
|
|
|
<svelte:head>
|
|
<title>{title ? `${title} - ${siteName}` : siteName}</title>
|
|
<meta name="description" content={description} />
|
|
<meta name="theme-color" content={themeColor} />
|
|
|
|
<meta property="og:site_name" content={siteName} />
|
|
<meta property="og:type" content="website" />
|
|
<meta property="og:title" content={title ?? "Manage your packages for Luau"} />
|
|
<meta property="og:description" content={description} />
|
|
<meta property="og:image" content="/favicon-48x48.png" />
|
|
<meta name="twitter:card" content="summary" />
|
|
|
|
<link rel="icon" type="image/png" href="/favicon-48x48.png" sizes="48x48" />
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
<link rel="shortcut icon" href="/favicon.ico" />
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
|
<meta name="apple-mobile-web-app-title" content="pesde" />
|
|
<link rel="manifest" href="/site.webmanifest" />
|
|
</svelte:head>
|
|
|
|
<svelte:window onhashchange={hashChange} />
|
|
|
|
{@render children()}
|