Ports every remaining view (Keybinds, the last one — dual Flat/MultiLayout schema detection, per-action dedicated fields with a raw-JSON fallback for anything not modeled) and removes the now-fully-dead GTK4 crate (root Cargo.toml + src/), leaving src-tauri/ as the single Rust binary crate. Also folds in the UX pass done alongside the migration: responsive multi-column layout instead of a single centered column, chip/dropdown pickers replacing free-typed fields (Wi-Fi networks, Bar style, keyboard layout, tag lists), consistent pill-switch toggles and boxed-list card styling across every page, and a sidebar scroll-chaining fix.
35 lines
742 B
Svelte
35 lines
742 B
Svelte
<script lang="ts">
|
|
import Row from "./Row.svelte";
|
|
|
|
let { label, value = $bindable(), placeholder = "" }: { label: string; value: string[]; placeholder?: string } =
|
|
$props();
|
|
|
|
let text = $state(value.join(", "));
|
|
|
|
function onInput() {
|
|
value = text
|
|
.split(",")
|
|
.map((s) => s.trim())
|
|
.filter((s) => s.length > 0);
|
|
}
|
|
</script>
|
|
|
|
<Row {label}>
|
|
<input type="text" bind:value={text} oninput={onInput} {placeholder} />
|
|
</Row>
|
|
|
|
<style>
|
|
input {
|
|
width: 28ch;
|
|
background-color: var(--bg);
|
|
color: var(--on-surface);
|
|
border: 1px solid transparent;
|
|
border-radius: var(--radius-secondary, 6px);
|
|
padding: var(--space-xs, 4px) var(--space-sm, 8px);
|
|
}
|
|
|
|
input:focus {
|
|
outline: none;
|
|
border-color: var(--accent);
|
|
}
|
|
</style>
|