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,56 @@
// Maps a sidebar page id to its view component. Pages not yet migrated
// fall back to Placeholder (see +page.svelte) — this map only lists pages
// that actually have a real Tauri-backed view.
import type { Component } from "svelte";
import About from "./About.svelte";
import Breadclip from "./Breadclip.svelte";
import Bread from "./Bread.svelte";
import Breadbar from "./Breadbar.svelte";
import Breadbox from "./Breadbox.svelte";
import Breadpad from "./Breadpad.svelte";
import Breadpaper from "./Breadpaper.svelte";
import Breadsearch from "./Breadsearch.svelte";
import Breadcrumbs from "./Breadcrumbs.svelte";
import Appearance from "./Appearance.svelte";
import Autostart from "./Autostart.svelte";
import Display from "./Display.svelte";
import Keybinds from "./Keybinds.svelte";
import Sound from "./Sound.svelte";
import DateTime from "./DateTime.svelte";
import Power from "./Power.svelte";
import Network from "./Network.svelte";
import Bluetooth from "./Bluetooth.svelte";
import Firewall from "./Firewall.svelte";
import Users from "./Users.svelte";
import Packages from "./Packages.svelte";
import Aur from "./Aur.svelte";
import Firmware from "./Firmware.svelte";
import Snapshots from "./Snapshots.svelte";
export const VIEWS: Record<string, Component> = {
about: About,
breadclip: Breadclip,
bread: Bread,
breadbar: Breadbar,
breadbox: Breadbox,
breadpad: Breadpad,
breadpaper: Breadpaper,
breadsearch: Breadsearch,
breadcrumbs: Breadcrumbs,
appearance: Appearance,
autostart: Autostart,
hyprland: Display,
keybinds: Keybinds,
sound: Sound,
datetime: DateTime,
power: Power,
network: Network,
bluetooth: Bluetooth,
firewall: Firewall,
users: Users,
packages: Packages,
aur: Aur,
firmware: Firmware,
snapshots: Snapshots,
};