🎨 Format using Biome
This commit is contained in:
@ -1,17 +1,17 @@
|
||||
<script lang="ts">
|
||||
// TODO move to types?
|
||||
interface Option<Key> {
|
||||
// TODO move to types?
|
||||
interface Option<Key> {
|
||||
key: Key
|
||||
value: string
|
||||
}
|
||||
}
|
||||
|
||||
interface Props<Key = string> {
|
||||
interface Props<Key = string> {
|
||||
selected: Key
|
||||
options?: Option<Key>[]
|
||||
class?: string
|
||||
}
|
||||
}
|
||||
|
||||
let { selected = $bindable(), options = [], class: clazz }: Props = $props()
|
||||
let { selected = $bindable(), options = [], class: clazz }: Props = $props()
|
||||
</script>
|
||||
|
||||
<select
|
||||
|
@ -1,12 +1,12 @@
|
||||
<script lang="ts">
|
||||
import { onMount } from "svelte"
|
||||
import { onMount } from "svelte"
|
||||
|
||||
let history: string[] = []
|
||||
let currentDir = "~"
|
||||
let history: string[] = []
|
||||
let currentDir = "~"
|
||||
|
||||
type Command = "help" | "about" | "skills" | "projects" | "contact" | "clear"
|
||||
type Command = "help" | "about" | "skills" | "projects" | "contact" | "clear"
|
||||
|
||||
const commands: Record<Command, () => string> = {
|
||||
const commands: Record<Command, () => string> = {
|
||||
help: () => `Available commands:
|
||||
about - Display information about me
|
||||
skills - List my technical skills
|
||||
@ -34,47 +34,43 @@ LinkedIn: linkedin.com/in/johndoe`,
|
||||
history = []
|
||||
return ""
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
const executeCommand = (input: string) => {
|
||||
const executeCommand = (input: string) => {
|
||||
const [command, ...args] = input.trim().split(" ")
|
||||
if (command in commands) {
|
||||
return commands[command as Command]()
|
||||
}
|
||||
return `Command not found: ${command}. Type 'help' for available commands.`
|
||||
}
|
||||
}
|
||||
|
||||
let input = ""
|
||||
let inputRef: HTMLInputElement | null = null
|
||||
let input = ""
|
||||
let inputRef: HTMLInputElement | null = null
|
||||
|
||||
const handleSubmit = (e: Event) => {
|
||||
const handleSubmit = (e: Event) => {
|
||||
e.preventDefault()
|
||||
if (input.trim()) {
|
||||
if (input === "clear") {
|
||||
history = []
|
||||
} else {
|
||||
history = [
|
||||
...history,
|
||||
`${currentDir} $ ${input}`,
|
||||
executeCommand(input),
|
||||
]
|
||||
history = [...history, `${currentDir} $ ${input}`, executeCommand(input)]
|
||||
}
|
||||
input = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
onMount(() => {
|
||||
history = [
|
||||
"Welcome to John Doe's Terminal Portfolio!",
|
||||
"Type 'help' to see available commands.",
|
||||
]
|
||||
})
|
||||
})
|
||||
|
||||
$: {
|
||||
$: {
|
||||
if (inputRef) {
|
||||
inputRef.scrollIntoView({ behavior: "smooth" })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="min-h-screen bg-black text-green-500 p-4 font-mono">
|
||||
|
@ -1,12 +1,12 @@
|
||||
<script lang="ts">
|
||||
import type { Snippet } from "svelte"
|
||||
import type { Snippet } from "svelte"
|
||||
|
||||
interface Props {
|
||||
interface Props {
|
||||
title?: string
|
||||
children: Snippet
|
||||
}
|
||||
}
|
||||
|
||||
const { title = "", children }: Props = $props()
|
||||
const { title = "", children }: Props = $props()
|
||||
</script>
|
||||
|
||||
<details class="collapse collapse-arrow bg-base-200">
|
||||
|
@ -1,12 +1,12 @@
|
||||
<script lang="ts">
|
||||
import Collapse from "@/components/collapse/Collapse.svelte"
|
||||
import Collapse from "@/components/collapse/Collapse.svelte"
|
||||
|
||||
interface Props {
|
||||
interface Props {
|
||||
items?: string[]
|
||||
title?: string
|
||||
}
|
||||
}
|
||||
|
||||
const { items = [], title = "" }: Props = $props()
|
||||
const { items = [], title = "" }: Props = $props()
|
||||
</script>
|
||||
|
||||
<Collapse {title}>
|
||||
|
@ -2,7 +2,7 @@ import { defineCollection, z } from "astro:content"
|
||||
import { glob } from "astro/loaders"
|
||||
|
||||
const projectCollection = defineCollection({
|
||||
loader: glob({ pattern: "**\/*.mdx", base: "./src/content/projects" }),
|
||||
loader: glob({ pattern: "**/*.mdx", base: "./src/content/projects" }),
|
||||
schema: ({ image }) =>
|
||||
z.object({
|
||||
lang: z.union([z.literal("en"), z.literal("nb")]),
|
||||
@ -19,7 +19,7 @@ const projectCollection = defineCollection({
|
||||
})
|
||||
|
||||
const usesCollection = defineCollection({
|
||||
loader: glob({ pattern: "**\/*.yaml", base: "./src/content/uses" }),
|
||||
loader: glob({ pattern: "**/*.yaml", base: "./src/content/uses" }),
|
||||
schema: z.object({
|
||||
title: z.string(),
|
||||
accessories: z.optional(z.array(z.string())),
|
||||
|
Reference in New Issue
Block a user