RovingFocus keeps a row or column of items behind one Tab stop: the arrows walk focus, Home and End reach the ends, Enter or Space presses, and a press moves the stop without taking focus. ScrollSync keeps boxes at one place along an axis: the pane a wheel turned leads, and a canvas ahead of the panes copies its place before they draw. SelectableList moves its cursor to the row that starts with the letters typed, the letters joining within a pause and a Command letter left to the app. forms::History becomes public as the undo manager. The gallery shows gpui's own key bindings, a two-stroke chord waiting on its first stroke, uniform_list, autofocus and the focus ring. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
103 lines
1.7 KiB
Rust
103 lines
1.7 KiB
Rust
mod account;
|
|
mod agent;
|
|
mod buttons;
|
|
mod calendar;
|
|
mod canvas;
|
|
mod charts;
|
|
mod chat;
|
|
mod collab;
|
|
mod dashboard;
|
|
mod data;
|
|
mod debug;
|
|
mod devtools;
|
|
mod documents;
|
|
mod editor;
|
|
mod feedback;
|
|
mod files;
|
|
mod finance;
|
|
mod forms;
|
|
mod generative;
|
|
mod git;
|
|
mod interaction;
|
|
mod layout;
|
|
mod lists;
|
|
mod mail;
|
|
mod media;
|
|
mod menus;
|
|
mod messaging;
|
|
mod motion;
|
|
mod navigation;
|
|
mod onboarding;
|
|
mod overlays;
|
|
mod primitives;
|
|
mod project;
|
|
mod settings;
|
|
mod shell;
|
|
mod tables;
|
|
mod terminal;
|
|
mod theme;
|
|
mod typography;
|
|
|
|
use gpui::{AnyElement, App, Window};
|
|
|
|
use crate::script::Step;
|
|
|
|
pub struct Page {
|
|
pub number: u8,
|
|
pub slug: &'static str,
|
|
pub title: &'static str,
|
|
pub summary: &'static str,
|
|
pub render: fn(&mut Window, &mut App) -> AnyElement,
|
|
/// Interactions shot after the static pages.
|
|
pub script: &'static [Step],
|
|
}
|
|
|
|
pub const ALL: &[Page] = &[
|
|
primitives::PAGE,
|
|
typography::PAGE,
|
|
layout::PAGE,
|
|
shell::PAGE,
|
|
buttons::PAGE,
|
|
forms::PAGE,
|
|
navigation::PAGE,
|
|
menus::PAGE,
|
|
overlays::PAGE,
|
|
feedback::PAGE,
|
|
motion::PAGE,
|
|
data::PAGE,
|
|
lists::PAGE,
|
|
tables::PAGE,
|
|
charts::PAGE,
|
|
finance::PAGE,
|
|
editor::PAGE,
|
|
terminal::PAGE,
|
|
git::PAGE,
|
|
debug::PAGE,
|
|
documents::PAGE,
|
|
collab::PAGE,
|
|
chat::PAGE,
|
|
agent::PAGE,
|
|
generative::PAGE,
|
|
media::PAGE,
|
|
files::PAGE,
|
|
messaging::PAGE,
|
|
mail::PAGE,
|
|
calendar::PAGE,
|
|
project::PAGE,
|
|
canvas::PAGE,
|
|
devtools::PAGE,
|
|
dashboard::PAGE,
|
|
settings::PAGE,
|
|
account::PAGE,
|
|
onboarding::PAGE,
|
|
interaction::PAGE,
|
|
theme::PAGE,
|
|
];
|
|
|
|
pub use interaction::bind_keys;
|
|
pub use shell::{open_about, open_managed};
|
|
|
|
pub fn find(slug: &str) -> Option<usize> {
|
|
ALL.iter().position(|page| page.slug == slug)
|
|
}
|