bos-settings/frontend/src/lib/components/CsvField.svelte
Breadway 93c3b88b10 Migrate bos-settings from GTK4 to Tauri + Svelte 5
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.
2026-07-22 19:23:02 +08:00

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>