<!--
What this machine is called: the name paired machines show it as, kept in
its identity under the workshop's `.state` — never committed. The hostname
until it is given another.
-->
<script lang="ts">
import { onMount } from "svelte";
import { peers } from "../../stores/peers.svelte.js";
import SettingsSection from "./SettingsSection.svelte";
let name = $state("");
onMount(() => {
void peers.load();
});
$effect(() => {
name = peers.machine?.name ?? "";
});
const dirty = $derived(name.trim() !== "" && name.trim() !== (peers.machine?.name ?? ""));
</script>
<SettingsSection title="Machine" description="What this machine is called, here and by its peers.">
<div class="settings-form">
<label class="field">
<span class="field-label">Name</span>
<input class="field-input" bind:value={name} />
</label>
{#if peers.error}
<p class="settings-refused" role="alert">{peers.error}</p>
{/if}
{#if dirty}
<div class="button-row">
<button class="primary" disabled={peers.busy === "rename"} onclick={() => void peers.rename(name.trim())}>
{peers.busy === "rename" ? "Renaming…" : "Rename"}
</button>
</div>
{/if}
</div>
</SettingsSection>
<style>
.settings-form {
display: flex;
flex-direction: column;
gap: var(--wb-spacing-10);
}
.settings-refused {
color: var(--wb-error);
font-size: var(--wb-font-size-12);
}
</style>