👽️ Updated legacy svelte components to runes
All checks were successful
Build and deploy website / build (push) Successful in 1m7s
All checks were successful
Build and deploy website / build (push) Successful in 1m7s
This commit is contained in:
parent
7c5b228e59
commit
04f279dab3
@ -8,6 +8,7 @@
|
|||||||
"myLinks": "My links",
|
"myLinks": "My links",
|
||||||
"myProjects": "My projects",
|
"myProjects": "My projects",
|
||||||
"uses": "Uses",
|
"uses": "Uses",
|
||||||
|
"hardware": "Hardware",
|
||||||
"accessories": "Accessories",
|
"accessories": "Accessories",
|
||||||
"sourceCode": "Source code",
|
"sourceCode": "Source code",
|
||||||
"createdAt": "Created at",
|
"createdAt": "Created at",
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
"myLinks": "Mine lenker",
|
"myLinks": "Mine lenker",
|
||||||
"myProjects": "Mine prosjekter",
|
"myProjects": "Mine prosjekter",
|
||||||
"uses": "Uses",
|
"uses": "Uses",
|
||||||
|
"hardware": "Maskinvare",
|
||||||
"accessories": "Tilbehør",
|
"accessories": "Tilbehør",
|
||||||
"sourceCode": "Kildekode",
|
"sourceCode": "Kildekode",
|
||||||
"createdAt": "Opprettet",
|
"createdAt": "Opprettet",
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
"build": "paraglide-js compile --project ./project.inlang --outdir ./src/paraglide && astro check && astro build",
|
"build": "paraglide-js compile --project ./project.inlang --outdir ./src/paraglide && astro check && astro build",
|
||||||
"preview": "astro preview",
|
"preview": "astro preview",
|
||||||
"astro": "astro",
|
"astro": "astro",
|
||||||
|
"type-check": "astro check",
|
||||||
"postinstall": "paraglide-js compile --project ./project.inlang --outdir ./src/paraglide",
|
"postinstall": "paraglide-js compile --project ./project.inlang --outdir ./src/paraglide",
|
||||||
"format": "prettier --write \"./src/**/*.{js,mjs,ts,astro,svelte,css,md,json}\"",
|
"format": "prettier --write \"./src/**/*.{js,mjs,ts,astro,svelte,css,md,json}\"",
|
||||||
"watch-messages": "paraglide-js compile --watch --project ./project.inlang --outdir ./src/paraglide"
|
"watch-messages": "paraglide-js compile --watch --project ./project.inlang --outdir ./src/paraglide"
|
||||||
|
@ -1,20 +1,23 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { createEventDispatcher } from "svelte"
|
|
||||||
|
|
||||||
// TODO move to types?
|
// TODO move to types?
|
||||||
interface Option {
|
interface Option<Key> {
|
||||||
key: string
|
key: Key
|
||||||
value: string
|
value: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export let options: Option[] = []
|
interface Props<Key = string> {
|
||||||
// TODO bind data instead of dispatching events
|
selected: Key
|
||||||
const dispatch = createEventDispatcher<{ change: string }>()
|
options?: Option<Key>[]
|
||||||
|
class?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
let { selected = $bindable(), options = [], class: clazz }: Props = $props()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<select
|
<select
|
||||||
class="select select-bordered w-full max-w-xs ${$$restProps.class}"
|
bind:value={selected}
|
||||||
on:change={(value) => dispatch("change", value.currentTarget.value)}
|
class="select select-bordered w-full max-w-xs ${clazz}"
|
||||||
>
|
>
|
||||||
{#each options as { key, value }}
|
{#each options as { key, value }}
|
||||||
<option value={key}>{value}</option>
|
<option value={key}>{value}</option>
|
||||||
|
@ -2,32 +2,32 @@
|
|||||||
import Select from "./Select.svelte"
|
import Select from "./Select.svelte"
|
||||||
import * as m from "@/paraglide/messages"
|
import * as m from "@/paraglide/messages"
|
||||||
import CollapseList from "@/components/collapse/CollapseList.svelte"
|
import CollapseList from "@/components/collapse/CollapseList.svelte"
|
||||||
|
import type { CollectionEntry } from "astro:content"
|
||||||
|
|
||||||
export let uses: any[] = []
|
interface Props {
|
||||||
|
uses: CollectionEntry<'uses'>[]
|
||||||
|
}
|
||||||
|
|
||||||
|
const { uses }: Props = $props()
|
||||||
|
|
||||||
const hardwareOptions = uses.map((item) => ({
|
const hardwareOptions = uses.map((item) => ({
|
||||||
key: item.id,
|
key: item.id,
|
||||||
value: item.data.title
|
value: item.data.title
|
||||||
}))
|
}))
|
||||||
|
|
||||||
let selectedHardwareKey: string = uses[0].id
|
let selectedHardwareKey = $state(uses[0].id)
|
||||||
$: selectedHardware = uses.find((item) => item.id === selectedHardwareKey)!
|
let selectedHardware = $derived(uses.find((item) => item.id === selectedHardwareKey)!)
|
||||||
|
|
||||||
// TODO bind to component
|
|
||||||
// TODO onChange not called
|
|
||||||
function onChange({ detail }: CustomEvent<string>) {
|
|
||||||
selectedHardwareKey = detail
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="px-2 max-w-[750px] sm:min-w-[750px] w-screen">
|
<div class="px-2 max-w-[750px] sm:min-w-[750px] w-screen">
|
||||||
<h1 class="text-center">{m.uses()}</h1>
|
<h1 class="text-center">{m.uses()}</h1>
|
||||||
<div>
|
<div>
|
||||||
<Select options={hardwareOptions} on:change={onChange} class="mx-auto w-max" />
|
<Select options={hardwareOptions} bind:selected={selectedHardwareKey} class="mx-auto w-max" />
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<CollapseList items={selectedHardware.data.hardware} title={m.uses()} />
|
<CollapseList items={selectedHardware.data.hardware} title={m.hardware()} />
|
||||||
<div class="my-2"></div>
|
<div class="my-2"></div>
|
||||||
{#if (selectedHardware.data.accessories)}
|
{#if (selectedHardware.data.accessories)}
|
||||||
<CollapseList items={selectedHardware.data.accessories} title={m.accessories()} />
|
<CollapseList items={selectedHardware.data.accessories} title={m.accessories()} />
|
||||||
|
@ -1,10 +1,16 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
export let title: string = ""
|
|
||||||
|
interface Props {
|
||||||
|
title?: string
|
||||||
|
children: any
|
||||||
|
}
|
||||||
|
|
||||||
|
const { title = "", children }: Props = $props()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<details class="collapse collapse-arrow bg-base-200">
|
<details class="collapse collapse-arrow bg-base-200">
|
||||||
<summary class="collapse-title text-xl font-medium">{title}</summary>
|
<summary class="collapse-title text-xl font-medium">{title}</summary>
|
||||||
<div class="collapse-content">
|
<div class="collapse-content">
|
||||||
<slot />
|
{@render children()}
|
||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
@ -1,9 +1,12 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Collapse from "@/components/collapse/Collapse.svelte"
|
import Collapse from "@/components/collapse/Collapse.svelte"
|
||||||
|
|
||||||
export let items: string[] = []
|
interface Props {
|
||||||
export let title: string = ""
|
items?: string[]
|
||||||
|
title?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const { items = [], title = "" }: Props = $props()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Collapse title={title}>
|
<Collapse title={title}>
|
||||||
|
@ -8,5 +8,5 @@ const uses = await getCollection("uses")
|
|||||||
---
|
---
|
||||||
|
|
||||||
<Layout title="Hardware" class="mx-auto max-w-[750px]">
|
<Layout title="Hardware" class="mx-auto max-w-[750px]">
|
||||||
<UsesPage server:defer uses={uses} />
|
<UsesPage client:load uses={uses} />
|
||||||
</Layout>
|
</Layout>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user