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.
This commit is contained in:
Breadway 2026-07-22 19:23:02 +08:00
parent 62365ebf10
commit 93c3b88b10
147 changed files with 15804 additions and 7516 deletions

View file

@ -0,0 +1,40 @@
<script lang="ts">
import type { Snippet } from "svelte";
let { title, children }: { title: string; children: Snippet } = $props();
</script>
<div class="view">
<h1 class="title">{title}</h1>
<div class="content">
{@render children()}
</div>
</div>
<style>
.view {
padding: var(--space-xl, 20px) var(--space-xl, 20px) 48px;
height: 100%;
overflow-y: auto;
}
.title {
font-size: 1.6em;
font-weight: bold;
margin: 0 0 var(--space-xl, 20px);
}
/* Groups lay out as a responsive grid rather than a single narrow
column — on a wide (tiled/maximized) window that means multiple
independent setting groups sit side by side instead of one column
with a wall of empty space either side. `.group.wide` (device
lists, thumbnail grids, log views — anything that reads badly
squeezed into a card) opts out via `grid-column: 1 / -1`. */
.content {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
gap: var(--space-xl, 20px) 32px;
align-items: start;
max-width: 1400px;
}
</style>