mirror of
https://github.com/pesde-pkg/pesde.git
synced 2025-04-03 02:10:54 +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>
52 lines
1.3 KiB
Svelte
52 lines
1.3 KiB
Svelte
<script lang="ts">
|
|
import { goto } from "$app/navigation"
|
|
import { page } from "$app/stores"
|
|
import Select from "$lib/components/Select.svelte"
|
|
import { TARGET_KIND_DISPLAY_NAMES, type TargetInfo, type TargetKind } from "$lib/registry-api"
|
|
import { Label, useId } from "bits-ui"
|
|
import { getContext } from "svelte"
|
|
|
|
const currentTarget = getContext<{ value: TargetInfo }>("currentTarget")
|
|
|
|
const basePath = $derived.by(() => {
|
|
const { scope, name } = $page.params
|
|
if ("target" in $page.params) {
|
|
const { version } = $page.params
|
|
return `/packages/${scope}/${name}/${version}`
|
|
}
|
|
return `/packages/${scope}/${name}/latest`
|
|
})
|
|
|
|
const items = ($page.data.pkg.targets as TargetInfo[]).map((target) => {
|
|
return {
|
|
value: target.kind,
|
|
label: TARGET_KIND_DISPLAY_NAMES[target.kind as TargetKind],
|
|
}
|
|
})
|
|
|
|
const id = useId()
|
|
|
|
let disabled = $state(false)
|
|
let open = $state(false)
|
|
</script>
|
|
|
|
<div class="text-heading mb-1 text-lg font-semibold">
|
|
<Label.Root for={id} onclick={() => (open = true)}>Target</Label.Root>
|
|
</div>
|
|
|
|
<Select
|
|
{items}
|
|
{disabled}
|
|
{id}
|
|
bind:open
|
|
name="target-selector"
|
|
allowDeselect={false}
|
|
value={currentTarget.value.kind}
|
|
triggerClass="mb-6"
|
|
onValueChange={(selected) => {
|
|
disabled = true
|
|
goto(`${basePath}/${selected}`).finally(() => {
|
|
disabled = false
|
|
})
|
|
}}
|
|
/>
|