install_inspector draws gpui's debug inspector in Ely's look: a panel with the picked box's source, ids and box model, and its margin, border, padding and size drawn over the page through raise, since the panel scrolls. FpsMeter counts frames on the executor's clock and colors each by the frames it missed. RenderCounter counts the renders of the view that draws it. EventLogger lists the input that reaches what it holds, its canvas laid first so a child's stop hides nothing.
16 KiB
16 KiB
Chapters 31–43
T31a Project · Tasks — src/project
- PriorityIndicator
- IssueIdBadge
- StatusSelect
- AssigneePicker
- DueDatePicker →
forms::DatePicker - TaskItem — check, priority, due date, assignee
- TaskList
- SubtaskList →
documents::Checklist, which gains a field to add one
T31b Project · Issues and boards
- IssueCard
- LabelManager
- KanbanBoard / KanbanColumn / KanbanCard
- Sprint Board →
project::KanbanBoard - TaskDetailPanel
T31c Project · Plans
- GanttChart / TimelineView →
charts::GanttChart - Roadmap
- Burndown Chart →
charts::BurndownChart, on the charts' scales and paint - MilestoneProgress
- WorkloadView
T31d Project · Time and databases
- TimeTracker
- Pomodoro Timer
- DatabaseView (from T21c) — table, board, gallery, calendar, timeline
T32a Canvas · Plane — src/canvas
- InfiniteCanvas
- CanvasGrid / Guides
- Ruler
- ZoomControls / ZoomIndicator
- MiniMap
- ArtboardFrame
T32b Canvas · Tools
- SelectionBox
- TransformHandles
- SnapIndicator
- ToolPalette
- ShapeTools — rect, ellipse, polygon, line, arrow
- PenTool / PathEditor
- TextTool
- BrushTool / BrushSettings
- HistoryPanel
T32c Canvas · Panels
- LayerPanel
- AssetPanel
- InspectorPanel
- AlignmentToolbar
- ColorPanel
- GradientPanel →
forms::GradientEditor - ShadowEditor
- BorderEditor
- TypographyPanel
- ConstraintsEditor
- AutoLayoutControls
- ExportPanel
T32d Canvas · Graphs and boards
- NodeEditor / NodeGraph
- Node / Port / Edge / Connection
- FlowChart / DiagramEditor
- MindMap
- Whiteboard
- StickyNote
- Connector Line
T33a DB & Dev Tools · Databases — src/devtools
- ConnectionManager
- ConnectionForm
- SchemaTree
- QueryEditor →
editor::CodeEditor - QueryResultGrid →
tables::DataGrid - QueryHistory
- QueryPlanViewer
- TableStructureEditor
- ERDiagram
- IndexManager
- RedisKeyBrowser
T33b DB & Dev Tools · Data formats
- DocumentViewer (MongoDB / JSON) →
devtools::JsonViewer - JsonViewer / JsonTree
- JsonEditor
- YamlViewer
- XmlViewer
T33c DB & Dev Tools · APIs
- ApiRequestBuilder
- ResponseViewer
- HeadersTable
- QueryParamsEditor →
forms::KeyValueInput - EnvironmentSelector
- CollectionTree
- WebSocketConsole
- GraphQLExplorer
T33d DB & Dev Tools · Tools and machines
- RegexTester
- Base64 / Encoder
- ColorContrastChecker
- ContainerList
- PodList
- ResourceMonitor
T34 Dashboard — src/dashboard
- Dashboard Grid
- Widget / DashboardCard
- StatCard →
data_display::Statistic - MetricsChart →
charts::LineChart - AlertList
- IncidentCard
- UptimeBar
- ServiceStatus
- HealthCheck Indicator
- LogStream →
terminal::LogViewer - TraceWaterfall →
debug::TimelineProfiler - EventStream
- ResourceGauge →
data_display::Gauge - SystemMonitor →
devtools::ResourceMonitor - ProcessTable →
terminal::ProcessList - NetworkGraph (throughput) →
charts::RealtimeChart - MapView / GeoHeatmap →
maps::MapView,maps::GeoHeatmap(T41a, T41b) - WorldMap →
maps::WorldMap(T41c) - RefreshIntervalSelector
- DashboardFilterBar
T35 Settings — src/settings
- SettingsLayout
- SettingsSection
- SettingsRow
- SettingsSearch
- ThemeSelector (T39's ThemeSwitcher points here)
- AccentColorPicker
- FontSizeControl
- FontFamilySelect →
forms::FontPicker - DensitySelector
- LanguageSelector →
forms::Combobox::languages(T06f) - KeyboardShortcutsList
- ShortcutEditor →
editor::KeybindingsEditor - ProxySettings
- StorageSettings / CacheClear
- PrivacySettings
- NotificationSettings
- StartupSettings
- ImportExportSettings
- ResetToDefault
- AdvancedSettings / FeatureFlags
- DeveloperMode Toggle
T36a Account · Sign in — src/account
- LoginForm
- SignupForm
- OAuthButtons
- MagicLinkForm
- TwoFactorInput
- ForgotPassword
T36b Account · Profile and access
- ProfileCard
- ProfileEditor
- AccountSwitcher
- WorkspaceSwitcher / OrgSwitcher
- UserMenu
- SessionList
- ApiKeyManager
T36c Account · Billing and team
- SubscriptionCard / PlanBadge
- UsageQuota
- BillingHistory
- PaymentMethodForm
- UpgradePrompt / Paywall
- TeamMemberTable
- RoleSelector
- InvitationList
T37a Onboarding · Flows and highlights — src/onboarding
- OnboardingWizard — on
navigation::Wizardwithout its numbered steps - WelcomeTour →
overlays::Tour(T09b) - Coachmark / Hotspot — Coachmark →
overlays::Spotlight; Hotspot here - FeatureHighlight / NewBadge — NewBadge →
data_display::BadgewithTone::Accent, which FeatureHighlight wears - Checklist (first-run tasks) →
onboarding::SetupChecklist; a to-do list ticked by hand isdocuments::Checklist
T37b Onboarding · Help
- HelpTooltip →
primitives::HelpTooltip, the mark FormLabel's help shows - HelpPanel / DocsSidebar
- KeyboardShortcutCheatsheet —
settings::KeyboardShortcutsListin anoverlays::Dialog - WhatsNewDialog —
data_display::Changelogin anoverlays::Dialog - FeedbackWidget
- ContactSupport
- InlineHelp
- EmptyStateWithAction →
feedback::EmptyState, whoseactionadds its buttons
T38a Interaction · Pointer — src/interaction
- Draggable — native
on_drag - Droppable / DropTarget — native
on_drop,drag_over,can_drop - DragOverlay / DragPreview — native drag view
- DragGhost → DragPreview (native)
- Sortable / SortableContext →
motion::Reorder - Resizable
- Rotatable — an svg: gpui 0.2.2 turns no other element
- Selectable / SelectionArea
- RubberBandSelection →
interaction::SelectionArea - LongPress →
primitives::Pressable - DoubleClick — native
ClickEvent::click_count - Gesture — prove: wheel zoom through
layout::Viewport, two-finger swipe throughlists::SwipeableListItem; pinch blocked, gpui 0.2.2 forwards no magnify event - PanZoom →
layout::Viewport
T38b Interaction · Keys, scroll and focus
- Hotkeys / KeyBinding — native
actions!,bind_keys,key_context - KeyChord — native multi-keystroke bindings;
window.pending_input_keystrokes()shows the first stroke - Undo / Redo Manager →
forms::History, made public - InfiniteScroll Trigger →
lists::InfiniteList - VirtualScroller — native
list()/uniform_list() - ScrollSync
- Autofocus — native
window.focus() - RovingTabIndex →
interaction::RovingFocus - TypeAhead →
lists::SelectableList, whose letters move its cursor - FocusVisible →
primitives::FocusRing
T39a Theme · Editing — src/theme
- ThemeProvider (T00)
- ThemeSwitcher →
settings::ThemeSelector(T35) - ColorTokens / DesignTokens (T00)
- ThemeEditor →
settings::ThemeEditor;Theme::set_palettetakes the owner's colors per mode - DensityProvider (T00) —
Theme::density, laid open insettings::ThemeEditor - RadiusProvider (T00) —
Theme::radius_scale, laid open insettings::ThemeEditor - FontProvider (T00) —
Theme::font_scale, laid open insettings::ThemeEditor - HighContrastMode (T00) —
Theme::set_high_contrast, laid open insettings::ThemeEditor - ReducedMotionProvider (T00) —
Theme::reduced_motion, laid open insettings::ThemeEditor - Elevation / Shadow (T00)
T39b Theme · Importing
- ThemeImporter — VS Code theme JSON →
settings::ThemeImporteronsettings::read_vscode_theme - SyntaxThemes →
theme::syntax_themes, chosen throughsettings::SyntaxThemePicker
T39c Theme · Platform
- IconThemeProvider →
primitives::IconTheme, an owner's rules by name and extension overfile_icon - Platform Style →
theme::Platform, the theme'splatform: the window buttons Ely draws, the title bar, key caps - VibrancyBackground / Acrylic →
shell::Vibrancyin a window openedWindowBackgroundAppearance::Blurred - Mica — blocked: gpui 0.2.2's one blur,
Blurred, is acrylic on Windows
T40a i18n — src/i18n
- I18nProvider →
i18n::I18n, a gpui global: the shown locale and one catalog per locale - Trans / LocalizedText →
I18n::text, a message with its{name}arguments filled - LocaleNumber / LocaleDate →
Locale::numberandLocale::date, CLDR's separators, right-to-left sign and short dates - RTL layout — proven:
Direction::rowmirrors a stack andDirection::alignsets its text's side; a right-to-left line stays oneEllipsis, since gpui wraps glyphs in drawn order; Ely's other components stay left to right
T40b a11y — src/i18n
- LiveRegion / Announcer — blocked: gpui 0.2.2 has no accessibility tree; AppKit's announcement request needs none, but no process here is trusted to observe VoiceOver take it
- SkipLink →
i18n::SkipLink: a Tab stop in flow that shows only while focused, raised over the page, and hands focus to its target - AccessibleIcon — blocked: no accessibility tree
- AriaLabel helper — blocked: no accessibility tree
- KeyboardNavigationHelper →
interaction::RovingFocus - ScreenReaderOnly — blocked: no accessibility tree
- ColorBlindSafe Palette →
Theme::set_color_blind_safe: chart hues fitted to stay apart under Machado's simulated protanopia, deuteranopia and tritanopia, each 3:1 on its page
T41a Maps · View — src/maps
- MapView — host tiles →
maps::MapView: the host's tile for each zoom, column and row, the nearest cut scaled past its zooms; a drag, the wheel or the arrows pan, Command-wheel, + and - or its buttons zoom - MapMarker →
maps::MapMarker, a pin keyed by its place's name, a Tab stop and pressable while in view when the map hears it; a focused pin keeps focus as it leaves the view - MapPopup →
maps::MapPopup, over or under its point toward the larger half, held inside the map, its body scrolling past the room; it takes focus when it shows and hands it back when it goes - LocationPicker →
maps::LocationPicker, the place under a center crosshair - CoordinateDisplay →
maps::CoordinateDisplay, degrees or degrees, minutes and seconds, copyable
T41b Maps · Layers
- MapCluster →
MapView::cluster_markers: pins gathered by squares of the world, so a pan keeps each group; a cluster's press shows its members whole - RouteLine →
maps::RouteLine, a layer that crosses the date line the short way - GeoJSON Layer →
maps::read_geojsonreads RFC 7946 to features;maps::GeoJsonLayerwashes areas with their holes open, strokes lines, dots points - GeoHeatmap (from T34) →
maps::GeoHeatmap, weighted places as heat scaled to the densest spot in view
T41c Maps · World
- ChoroplethMap →
maps::ChoroplethMapon aChoroplethLayer: areas washed by value on one hue's scale, keyed by id or a property, with a legend; an area without a value reads as no data, a value without an area is logged once - WorldMap (from T34) →
maps::WorldMap, Natural Earth's 110m countries bundled and washed by ISO 3166 alpha-2 code; a key that is no code fails
T42a Misc · Time — src/misc
- Clock / WorldClock →
misc::Clock, a face over its digits ticking each second;misc::WorldClock, places in rows by day and offset against home - Stopwatch →
misc::Stopwatch, on the executor's clock: Start or Pause on one button, Lap on another that reads Reset once paused, laps newest first
T42b Misc · Numbers
- Calculator →
misc::Calculator: digits, the four operations in precedence throughforms::evaluate, sign, delete and clear; a result goes on at its whole value and shows twelve significant digits; keys type too, and Enter gives the result while the calculator itself has focus - UnitConverter →
misc::UnitConverter: length, area, volume, mass, temperature, speed and data, each on a starting pair, with a swap; six significant digits, wrapped when long
T42c Misc · Codes and checks
- QRCodeScanner — proven:
rqrr0.11 reads the host's frames off the main thread →misc::QrCodeScanner, a camera's view with a square to aim at; each code goes to the owner once - BarcodeDisplay →
data_display::Barcode - Captcha →
misc::Captcha: the owner's picture and verdict over an answer field that empties and keeps focus with each answer, with a refresh - Signature →
forms::SignaturePad - Rating Widget →
forms::Rating
T42d Misc · Asking and learning
- Poll / Survey →
misc::Poll: one vote, then each option's share with the vote marked, and Change vote on Vote's stop;misc::Survey: questions on one page answered by an option, several, or words; Submit asks for what is missing, then sends, and thanks in its place and focus - Quiz / Flashcard →
misc::Quiz: a question at a time, Check shows the right answer, then Next and the score, one button on one stop;misc::Flashcards: a press turns the card, Previous and Next go round the deck
T42e Misc · Terms and notices
- ChangeLog Viewer →
data_display::Changelog - LicenseViewer →
misc::LicenseViewer: each package with its version and license, beside the chosen one's text, which scrolls; narrow, the text drops below the list - Terms / Consent Dialog →
misc::ConsentDialogonoverlays::Dialog: a box to agree, and Accept asks for it until ticked; each way out answers once, accept or decline - CookieBanner →
misc::CookieBanner: Accept all, Reject all, or Choose, which turns into Save choices over a switch for each kind; necessary cookies stay on
T42f Misc · Web
- WebView — proven:
wry0.57 lays a child WKWebView over the window →misc::WebView, an address or the owner's HTML, following its box each frame and hidden out of view; it draws above gpui and ignores its clipping, and a press anywhere gpui draws, or the view leaving, hands the keyboard back. macOS only - IframeEmbed / EmbedCard →
misc::IframeEmbed, a page in a frame of its own under its address, with Open in browser; EmbedCard ischat::LinkPreviewCard - HTMLPreview →
misc::WebView - PrintButton — blocked: gpui 0.2.2 has no print API
- ShareSheet →
buttons::ShareButton
T42g Misc · Export and import
- ExportDialog — PDF, PNG, CSV, JSON →
misc::ExportDialog: the owner's formats as cards, and Export hands the chosen one over for the owner to write; each way out answers once - ImportDialog — field mapping →
misc::ImportDialog: a Select of the columns for each field, matched by name to start, over a preview of the first rows; Import asks for each required field's column - CSVImporter →
misc::CsvImporter: CSV read as RFC 4180 (misc::read_csv), its first row naming the columns unless the box says otherwise, mapped through the ImportDialog into records; text that does not read says why
T43a Tooling · Workbench — src/tooling
- ComponentGallery / Storybook →
examples/gallery, a page per chapter, light and dark, with scripted states;--pageopens one and--capturephotographs every page and state - PlaygroundPanel →
tooling::Playground: a preview beside knobs, each a switch, a choice or a number that edits one property
T43b Tooling · Inspection
- InspectorOverlay →
tooling::install_inspector: gpui's inspector, debug builds only, drawn by Ely: hover picks a box, the wheel steps out, a press holds; the box's margin, border, padding and size over the page, its model, source and ids in the panel - FPSMeter / PerfOverlay →
tooling::FpsMeter: frames per second over the last second, the worst frame, a bar per frame against the 60 Hz budget - RenderCounter →
tooling::RenderCounter: how often the view that draws it has rendered - EventLogger →
tooling::EventLogger: the input events that reach what it holds, newest first, moves run together, each timed from the first
T43c Tooling · Catalogs
- DesignTokenViewer
- IconBrowser
- A11yChecker — contrast audit
- ScreenshotTest Harness — self-capture; scripted input since T01