const SETTINGS_TEMPLATE = `

Nebula OS

--:--

System

Settings

Network

Optimize connection and online routing.

Status

Applying Nebula profile

`; const CATEGORIES = { network: "Network", audio: "Audio", display: "Display", storage: "Storage", system: "System", }; export const createSettingsView = ({ state, renderView }) => { const updatePasskey = (partial) => { state.passkey.updateConfig(partial); refreshPanel(); }; const refreshPanel = () => { const title = document.querySelector("[data-panel-title]"); const copy = document.querySelector("[data-panel-copy]"); const passkeyEnabled = document.querySelector("[data-passkey-enabled]"); const passkeyLength = document.querySelector("[data-passkey-length]"); const passkeyConfirm = document.querySelector("[data-passkey-confirm]"); const passkeyKeyboard = document.querySelector("[data-passkey-keyboard]"); const status = document.querySelector("[data-status-note]"); const passkeyConfig = state.passkey.getConfig(); document.querySelectorAll(".settings-category").forEach((button) => { button.classList.toggle("is-active", button.dataset.cat === state.settingsCategory); }); if (title) { title.textContent = CATEGORIES[state.settingsCategory] ?? "Settings"; } if (copy) { if (state.settingsCategory === "system") { copy.textContent = "Configure passkey security and controller login behavior."; } else { copy.textContent = `Tune ${CATEGORIES[state.settingsCategory] ?? "system"} options with controller-first cards.`; } } if (passkeyEnabled) { passkeyEnabled.textContent = passkeyConfig.enabled ? "Enabled" : "Disabled"; } if (passkeyLength) { passkeyLength.textContent = `${passkeyConfig.length} digits`; } if (passkeyConfirm) { passkeyConfirm.textContent = passkeyConfig.requireConfirm ? "Enabled" : "Disabled"; } if (passkeyKeyboard) { passkeyKeyboard.textContent = passkeyConfig.keyboardSupport ? "Enabled" : "Disabled"; } if (status) { status.textContent = state.settingsCategory === "system" ? `Attempts: ${passkeyConfig.maxAttempts}, cooldown: ${passkeyConfig.cooldownSeconds}s` : `${CATEGORIES[state.settingsCategory] ?? "System"} profile synced`; } document.querySelectorAll("[data-toggle^='passkey']").forEach((button) => { button.classList.toggle("is-disabled", state.settingsCategory !== "system"); button.setAttribute("aria-disabled", state.settingsCategory === "system" ? "false" : "true"); }); }; const toggleCurrent = (suffix = "") => { const key = suffix ? `${state.settingsCategory}_${suffix}` : state.settingsCategory; state.settingsValues[key] = !Boolean(state.settingsValues[key]); refreshPanel(); }; return { id: "settings", render: () => SETTINGS_TEMPLATE, mount: () => { const root = document.querySelector("[data-focus-root]"); root?.addEventListener("focusin", (event) => { const focused = event.target.closest("[data-focusable='true']"); const col = Number(focused?.dataset.col ?? 0); document.documentElement.style.setProperty("--nebula-accent-line-x", `${24 + col * 110}px`); }); refreshPanel(); document.documentElement.style.setProperty("--nebula-focus-strength", "1"); }, getNavigationContract: () => { const root = document.querySelector("[data-focus-root]"); return { focusRoot: root, defaultFocus: root?.querySelector("[data-cat='network']") ?? null, layout: { type: "grid", cols: 5, rows: 2 }, hintsTemplate: "#global-hints-template", nebulaNavigation: state.nebula.navigation, onAccept: (element) => { if (!element) { return; } const category = element.dataset.cat; const toggle = element.dataset.toggle; if (category) { state.settingsCategory = category; refreshPanel(); return; } if (toggle === "primary") { toggleCurrent(); return; } if (toggle === "secondary") { toggleCurrent("secondary"); return; } if (state.settingsCategory !== "system") { return; } if (toggle === "passkey-enabled") { updatePasskey({ enabled: !state.passkey.getConfig().enabled }); return; } if (toggle === "passkey-change") { state.passkey.resetSequence(); state.passkeySetupRequired = true; state.locked = true; state.activeView = "lock"; renderView("lock"); return; } if (toggle === "passkey-length") { return; } if (toggle === "passkey-confirm") { updatePasskey({ requireConfirm: !state.passkey.getConfig().requireConfirm }); return; } if (toggle === "passkey-keyboard") { updatePasskey({ keyboardSupport: !state.passkey.getConfig().keyboardSupport }); } }, onBack: () => { state.activeView = "home"; renderView("home"); }, onMenu: () => {}, onAction: (action, element) => { if (state.settingsCategory !== "system") { return false; } if (element?.dataset.toggle !== "passkey-length") { return false; } return false; }, }; }, }; };