Files
Ely-GPUI-Components/tasks/ch31-43.md
T
ZacharyZhang-NY eea99b8e41 Onboarding · Flows and highlights: wizard, hotspot, highlight, setup checklist
OnboardingWizard runs a first run on navigation::Wizard without its
numbered steps: "Step 2 of 4" over a bar in as many parts, the step's
title, line and content, Back and Next once ready, Finish last, and
Skip for now. Hotspot pulses on a dot that opens a tip on a press or
Enter, with Got it. FeatureHighlight names something new under a New
badge, with Try it and Not now, and rises in. SetupChecklist counts
first things to do in words and a bar, offers Start on each left, eases
a check in as one gets done, and offers Hide once all are.

navigation::Wizard now keys its buttons, steps and motion by its own id
and takes on_step and on_finish at render, failing loud without them.
2026-09-27 14:20:45 -04:00

330 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Chapters 31–43
## T31a Project · Tasks — `src/project`
- [x] PriorityIndicator
- [x] IssueIdBadge
- [x] StatusSelect
- [x] AssigneePicker
- [x] DueDatePicker → `forms::DatePicker`
- [x] TaskItem — check, priority, due date, assignee
- [x] TaskList
- [x] SubtaskList → `documents::Checklist`, which gains a field to add one
## T31b Project · Issues and boards
- [x] IssueCard
- [x] LabelManager
- [x] KanbanBoard / KanbanColumn / KanbanCard
- [x] Sprint Board → `project::KanbanBoard`
- [x] TaskDetailPanel
## T31c Project · Plans
- [x] GanttChart / TimelineView → `charts::GanttChart`
- [x] Roadmap
- [x] Burndown Chart → `charts::BurndownChart`, on the charts' scales and paint
- [x] MilestoneProgress
- [x] WorkloadView
## T31d Project · Time and databases
- [x] TimeTracker
- [x] Pomodoro Timer
- [x] DatabaseView (from T21c) — table, board, gallery, calendar, timeline
## T32a Canvas · Plane — `src/canvas`
- [x] InfiniteCanvas
- [x] CanvasGrid / Guides
- [x] Ruler
- [x] ZoomControls / ZoomIndicator
- [x] MiniMap
- [x] ArtboardFrame
## T32b Canvas · Tools
- [x] SelectionBox
- [x] TransformHandles
- [x] SnapIndicator
- [x] ToolPalette
- [x] ShapeTools — rect, ellipse, polygon, line, arrow
- [x] PenTool / PathEditor
- [x] TextTool
- [x] BrushTool / BrushSettings
- [x] HistoryPanel
## T32c Canvas · Panels
- [x] LayerPanel
- [x] AssetPanel
- [x] InspectorPanel
- [x] AlignmentToolbar
- [x] ColorPanel
- [x] GradientPanel → `forms::GradientEditor`
- [x] ShadowEditor
- [x] BorderEditor
- [x] TypographyPanel
- [x] ConstraintsEditor
- [x] AutoLayoutControls
- [x] ExportPanel
## T32d Canvas · Graphs and boards
- [x] NodeEditor / NodeGraph
- [x] Node / Port / Edge / Connection
- [x] FlowChart / DiagramEditor
- [x] MindMap
- [x] Whiteboard
- [x] StickyNote
- [x] Connector Line
## T33a DB & Dev Tools · Databases — `src/devtools`
- [x] ConnectionManager
- [x] ConnectionForm
- [x] SchemaTree
- [x] QueryEditor → `editor::CodeEditor`
- [x] QueryResultGrid → `tables::DataGrid`
- [x] QueryHistory
- [x] QueryPlanViewer
- [x] TableStructureEditor
- [x] ERDiagram
- [x] IndexManager
- [x] RedisKeyBrowser
## T33b DB & Dev Tools · Data formats
- [x] DocumentViewer (MongoDB / JSON) → `devtools::JsonViewer`
- [x] JsonViewer / JsonTree
- [x] JsonEditor
- [x] YamlViewer
- [x] XmlViewer
## T33c DB & Dev Tools · APIs
- [x] ApiRequestBuilder
- [x] ResponseViewer
- [x] HeadersTable
- [x] QueryParamsEditor → `forms::KeyValueInput`
- [x] EnvironmentSelector
- [x] CollectionTree
- [x] WebSocketConsole
- [x] GraphQLExplorer
## T33d DB & Dev Tools · Tools and machines
- [x] RegexTester
- [x] Base64 / Encoder
- [x] ColorContrastChecker
- [x] ContainerList
- [x] PodList
- [x] ResourceMonitor
## T34 Dashboard — `src/dashboard`
- [x] Dashboard Grid
- [x] Widget / DashboardCard
- [x] StatCard → `data_display::Statistic`
- [x] MetricsChart → `charts::LineChart`
- [x] AlertList
- [x] IncidentCard
- [x] UptimeBar
- [x] ServiceStatus
- [x] HealthCheck Indicator
- [x] LogStream → `terminal::LogViewer`
- [x] TraceWaterfall → `debug::TimelineProfiler`
- [x] EventStream
- [x] ResourceGauge → `data_display::Gauge`
- [x] SystemMonitor → `devtools::ResourceMonitor`
- [x] ProcessTable → `terminal::ProcessList`
- [x] NetworkGraph (throughput) → `charts::RealtimeChart`
- [ ] MapView / GeoHeatmap → `maps::MapView`, `maps::GeoHeatmap` (T41)
- [ ] WorldMap → `maps::WorldMap` (T41)
- [x] RefreshIntervalSelector
- [x] DashboardFilterBar
## T35 Settings — `src/settings`
- [x] SettingsLayout
- [x] SettingsSection
- [x] SettingsRow
- [x] SettingsSearch
- [x] ThemeSelector (T39's ThemeSwitcher points here)
- [x] AccentColorPicker
- [x] FontSizeControl
- [x] FontFamilySelect → `forms::FontPicker`
- [x] DensitySelector
- [x] LanguageSelector → `forms::Combobox::languages` (T06f)
- [x] KeyboardShortcutsList
- [x] ShortcutEditor → `editor::KeybindingsEditor`
- [x] ProxySettings
- [x] StorageSettings / CacheClear
- [x] PrivacySettings
- [x] NotificationSettings
- [x] StartupSettings
- [x] ImportExportSettings
- [x] ResetToDefault
- [x] AdvancedSettings / FeatureFlags
- [x] DeveloperMode Toggle
## T36a Account · Sign in — `src/account`
- [x] LoginForm
- [x] SignupForm
- [x] OAuthButtons
- [x] MagicLinkForm
- [x] TwoFactorInput
- [x] ForgotPassword
## T36b Account · Profile and access
- [x] ProfileCard
- [x] ProfileEditor
- [x] AccountSwitcher
- [x] WorkspaceSwitcher / OrgSwitcher
- [x] UserMenu
- [x] SessionList
- [x] ApiKeyManager
## T36c Account · Billing and team
- [x] SubscriptionCard / PlanBadge
- [x] UsageQuota
- [x] BillingHistory
- [x] PaymentMethodForm
- [x] UpgradePrompt / Paywall
- [x] TeamMemberTable
- [x] RoleSelector
- [x] InvitationList
## T37a Onboarding · Flows and highlights — `src/onboarding`
- [x] OnboardingWizard — on `navigation::Wizard` without its numbered steps
- [x] WelcomeTour → `overlays::Tour` (T09b)
- [x] Coachmark / Hotspot — Coachmark → `overlays::Spotlight`; Hotspot here
- [x] FeatureHighlight / NewBadge — NewBadge → `data_display::Badge` with `Tone::Accent`, which FeatureHighlight wears
- [x] Checklist (first-run tasks) → `onboarding::SetupChecklist`; a to-do list ticked by hand is `documents::Checklist`
## T37b Onboarding · Help
- [ ] HelpTooltip
- [ ] HelpPanel / DocsSidebar
- [ ] KeyboardShortcutCheatsheet
- [ ] WhatsNewDialog
- [ ] FeedbackWidget
- [ ] ContactSupport
- [ ] InlineHelp
- [ ] EmptyStateWithAction → `feedback::EmptyState`
## T38 Interaction — `src/interaction`
- [ ] Draggable — native `on_drag`
- [ ] Droppable / DropTarget — native `on_drop`, `drag_over`
- [ ] DragOverlay / DragPreview — native drag view
- [ ] DragGhost → DragPreview (native)
- [ ] Sortable / SortableContext
- [ ] Resizable
- [ ] Rotatable
- [ ] Selectable / SelectionArea
- [ ] RubberBandSelection → `interaction::SelectionArea`
- [ ] LongPress → `primitives::Pressable`
- [ ] DoubleClick — native `ClickEvent::click_count`
- [ ] Gesture — prove: wheel zoom, pinch, two-finger swipe
- [ ] PanZoom → `layout::Viewport`
- [ ] Hotkeys / KeyBinding — native `actions!`, `bind_keys`, `key_context`
- [ ] KeyChord — native multi-keystroke bindings
- [ ] Undo / Redo Manager
- [ ] InfiniteScroll Trigger → `lists::InfiniteList`
- [ ] VirtualScroller — native `list()` / `uniform_list()`
- [ ] ScrollSync
- [ ] Autofocus — native `window.focus()`
- [ ] RovingTabIndex
- [ ] TypeAhead
- [ ] FocusVisible → `primitives::FocusRing`
## T39 Theme — `src/theme`
- [x] ThemeProvider (T00)
- [ ] ThemeSwitcher → `settings::ThemeSelector` (T35)
- [x] ColorTokens / DesignTokens (T00)
- [ ] ThemeEditor
- [ ] ThemeImporter — VS Code theme JSON
- [ ] SyntaxThemes
- [ ] IconThemeProvider
- [ ] DensityProvider (T00)
- [ ] RadiusProvider (T00)
- [ ] FontProvider (T00)
- [ ] HighContrastMode (T00)
- [ ] ReducedMotionProvider (T00)
- [ ] Platform Style
- [ ] VibrancyBackground / Mica / Acrylic — native `WindowBackgroundAppearance::Blurred`
- [x] Elevation / Shadow (T00)
## T40 i18n & a11y — `src/i18n`
- [ ] I18nProvider
- [ ] Trans / LocalizedText
- [ ] LocaleNumber / LocaleDate
- [ ] RTL layout — prove: mirrored stacks
- [ ] LiveRegion / Announcer — blocked: gpui 0.2.2 has no accessibility tree
- [ ] SkipLink
- [ ] AccessibleIcon — blocked: no accessibility tree
- [ ] AriaLabel helper — blocked: no accessibility tree
- [ ] KeyboardNavigationHelper
- [ ] ScreenReaderOnly — blocked: no accessibility tree
- [ ] ColorBlindSafe Palette
## T41 Maps — `src/maps`
- [ ] MapView — host tiles
- [ ] MapMarker
- [ ] MapPopup
- [ ] MapCluster
- [ ] RouteLine
- [ ] GeoJSON Layer
- [ ] ChoroplethMap
- [ ] LocationPicker
- [ ] CoordinateDisplay
- [ ] WorldMap (from T34)
- [ ] GeoHeatmap (from T34)
## T42 Misc — `src/misc`
- [ ] Clock / WorldClock
- [ ] Stopwatch
- [ ] Calculator
- [ ] UnitConverter
- [ ] QRCodeScanner — prove: host frames, `rqrr` decode
- [ ] BarcodeDisplay → `data_display::Barcode`
- [ ] Captcha
- [ ] Signature → `forms::SignaturePad`
- [ ] Rating Widget → `forms::Rating`
- [ ] Poll / Survey
- [ ] Quiz / Flashcard
- [ ] ChangeLog Viewer → `data_display::Changelog`
- [ ] LicenseViewer
- [ ] Terms / Consent Dialog
- [ ] CookieBanner
- [ ] WebView — prove: `wry`
- [ ] IframeEmbed / EmbedCard
- [ ] HTMLPreview → `misc::WebView`
- [ ] PrintButton — blocked: gpui 0.2.2 has no print API
- [ ] ExportDialog — PDF, PNG, CSV, JSON
- [ ] ImportDialog — field mapping
- [ ] CSVImporter
- [ ] ShareSheet
## T43 Library Tooling — `src/tooling`
- [ ] ComponentGallery / Storybook
- [ ] PlaygroundPanel
- [ ] InspectorOverlay
- [ ] FPSMeter / PerfOverlay
- [ ] RenderCounter
- [ ] EventLogger
- [ ] DesignTokenViewer
- [ ] IconBrowser
- [ ] A11yChecker — contrast audit
- [ ] ScreenshotTest Harness — self-capture; scripted input since T01