import type { CSSProperties } from "react"; import { loginKeyboardRows, type LoginField, type LoginInputSnapshot, type LoginKeyDefinition, } from "../app/loginInputStore"; import type { CompanionCommand } from "../platform/dualScreenSync"; import { BrandMark, FrontSurface } from "./FrontSurface"; function passwordPreview(length: number): string { if (!length) return "Password"; return `${"•".repeat(Math.min(length, 18))}${length > 18 ? "…" : ""}`; } function keyLabel(key: LoginKeyDefinition, activeField: LoginField): string { if (key.kind === "field") return activeField === "username" ? "Password" : "Username"; return key.label; } export function LoginVirtualKeyboard({ snapshot, notice, send }: { snapshot: LoginInputSnapshot; notice: string; send: (command: CompanionCommand) => void; }) { const rows = loginKeyboardRows(snapshot.keyboardMode); const chooseField = (field: LoginField) => send({ name: "selectLoginField", field }); return (
CONTROLLER KEYBOARD
{rows.flat().map((key) => { const isAction = ["login", "create", "offline"].includes(key.kind); const unavailableForUsername = snapshot.activeField === "username" && key.kind === "character" && !/^[A-Za-z0-9_]$/.test(key.value ?? ""); return ( ); })}
); }