# Chapters 11–20 ## T11a Loading · Spinners & skeletons — `src/motion` - [x] Spinner — ring, dots, bars, pulse, orbit, wave; also the Button loading state (T05 LoadingButton) and T07a LoadMore → `motion::Spinner`, `buttons::Button::loading`, `navigation::LoadMore` - [x] DotsLoader → `motion::Spinner` - [x] BarsLoader → `motion::Spinner` - [x] PulseLoader → `motion::Spinner` - [x] RingLoader → `motion::Spinner` - [x] OrbitLoader → `motion::Spinner` - [x] WaveLoader → `motion::Spinner` - [x] Skeleton / SkeletonText / SkeletonAvatar / SkeletonCard / SkeletonTable → `motion::Skeleton` and kin - [x] Shimmer → `motion::Shimmer` ## T11b Loading · Progress & states - [x] ProgressBar — determinate, indeterminate, segmented, buffered — also T06e UploadList → `motion::ProgressBar`, `forms::UploadList` - [x] ProgressCircle / ProgressRing → `motion::ProgressRing` - [x] StepProgress → `navigation::Steps` - [x] LoadingOverlay → `motion::LoadingOverlay` - [x] LoadingScreen → `shell::SplashScreen`, which renders in place too - [x] InlineLoader → `motion::Spinner` - [x] LazyLoad → `motion::LazyLoad` - [x] Suspense / AsyncView → `feedback::Suspense`, `feedback::AsyncView`; a failure shows the error view, so they live with it - [x] RefreshIndicator → `motion::RefreshIndicator` - [x] TypingIndicator → `motion::TypingIndicator` ## T11c Motion · Presence & order — `src/motion` - [x] Transition — fade, slide, scale, collapse → `motion::Transition` fades, rises and slides; collapse is `layout::Collapsible`; scale is blocked: gpui 0.2.2 transforms only icons - [x] AnimatePresence → `motion::AnimatePresence` - [x] Motion → gpui's `with_animation`, timed by `motion::duration` and eased by the curves in `motion` - [x] Spring → `motion::spring` - [x] Stagger → `motion::Stagger` - [x] Reorder → `motion::Reorder` - [x] Flip → `motion::Flip` - [x] CountUp → `typography::AnimatedNumber`, counting up ## T11d Motion · Effects - [x] Marquee → `motion::Marquee` - [x] Ripple → `motion::Ripple` - [x] Confetti → `motion::Confetti` - [x] Glow / Pulse → `motion::Glow`, `motion::Pulse` - [x] Blink / Flash → `motion::Blink`, `motion::Flash` - [x] Shake → `motion::Shake` - [x] ParticleBackground → `motion::ParticleBackground` - [x] AnimatedGradient — slow tonal drift → `motion::AnimatedGradient` - [x] Lottie Player — blocked: gpui 0.2.2 paints paths without the clip masks, mattes, blend modes and radial gradients Lottie files lean on, so frames would come out wrong ## T12a Data Display · People & numbers — `src/data_display` - [x] Badge / CountBadge / DotBadge → `data_display::Badge`, `CountBadge`, `DotBadge`; the activity bar's count is a CountBadge - [x] Tag / Chip → `data_display::Tag`; the chips in TagInput and MultiSelect are Tags - [x] Avatar — image, initials, icon, presence — also T06e AvatarUpload → `data_display::Avatar`, `forms::AvatarUpload` - [x] AvatarGroup → `data_display::AvatarGroup` - [x] UserChip → `data_display::UserChip` - [x] Statistic / KPI Card → `data_display::Statistic`, `data_display::KpiCard` - [x] Metric → `data_display::Statistic`, at a smaller size - [x] TrendIndicator → `data_display::TrendIndicator` ## T12b Data Display · Records - [x] DescriptionList → `data_display::DescriptionList` - [x] PropertyGrid → `data_display::PropertyGrid`, `PropertyGroup` - [x] KeyValueList → `data_display::DescriptionList` - [x] InfoRow → `data_display::DescriptionList` - [x] Timeline / TimelineItem → `data_display::Timeline`, `TimelineItem` - [x] ActivityFeed → `data_display::ActivityFeed`, `Activity` - [x] Changelog → `data_display::Changelog`, `Release`, `Change` ## T12c Data Display · Media - [x] Carousel → `data_display::Carousel` - [x] Gallery → `data_display::Gallery`, opening `overlays::Lightbox` - [x] Accordion list → `layout::Accordion` - [x] Card Grid → `layout::SimpleGrid` - [x] BeforeAfter → `data_display::BeforeAfter` - [x] Watermark → `data_display::Watermark`; its rows run level, since gpui draws text upright ## T12d Data Display · Codes & measures - [x] QRCode → `data_display::QrCode` - [x] Barcode → `data_display::Barcode`: Code 128 and EAN-13 - [x] ColorSwatch display → `forms::ColorSwatch` - [x] Meter → `data_display::Meter` - [x] Gauge → `data_display::Gauge` - [x] UsageBar → `data_display::UsageBar` - [x] Rating display → `data_display::Stars`, read only with parts of a star; `forms::Rating` sets a score - [x] Comparison → `data_display::Comparison` ## T13a Lists & Trees · Lists — `src/lists` - [x] List / ListItem → `lists::List`, `ListItem` - [x] VirtualList → `lists::VirtualList`, on gpui's `list()`; rows as tall as they need - [x] InfiniteList → `lists::InfiniteList` - [x] SortableList → `lists::SortableList`; drags through `motion::Reorder`, Alt with arrows moves - [x] SelectableList — single, multi, shift range → `lists::SelectableList` - [x] GroupedList → `lists::GroupedList`, headers from `layout::StickyHeader` - [x] SectionList → `lists::GroupedList` - [x] ReorderableList → `lists::SortableList` - [x] SwipeableListItem → `lists::SwipeableListItem`, `SwipeAction`; proved with real trackpad phases (`Step::Swipe`) ## T13b Lists & Trees · Trees - [x] Tree / TreeView → `lists::Tree`, `TreeNode`; also T06b TreeSelect → `lists::TreeSelect` - [x] VirtualTree → `lists::Tree`, whose rows draw in a `uniform_list` - [x] CheckboxTree → `lists::Tree` with `checked` - [x] Outline → `lists::Outline` - [x] NestedList → `lists::Outline` ## T13c Lists & Trees · Files - [x] FileTree → `lists::FileTree`, `GitStatus`; built on `lists::Tree` - [x] DirectoryListing → `lists::DirectoryListing`, `DirEntry`; rows through `lists::SelectableList` - [x] Menu List → `menus::Menu` - [x] Transfer List → `forms::TransferList` ## T14a Tables · Core — `src/tables` - [x] Table → `tables::Table` - [x] DataTable — sort, filter, page, select → `tables::DataTable` - [x] VirtualTable → `tables::DataTable`, `virtualized` - [x] CellRenderer → `tables::Cell`: text, number, tag, progress, sparkline, person, link - [x] RowSelection → `tables::DataTable`, `selected` - [x] TableDensity → `tables::DataTable`, `density` - [x] AggregationFooter → `tables::Column`, `aggregate` - [x] ConditionalFormatting → `tables::Column`, `scale` - [x] HeatmapTable → `tables::HeatmapTable` - [x] ComparisonTable → `data_display::Comparison` ## T14b Tables · Columns & rows - [x] ColumnResizer → `tables::DataTable`: a header's edge drags - [x] ColumnReorder → `tables::DataTable`: a header drags onto another - [x] ColumnVisibility → `tables::DataTable`, `hidden`; the toolbar's Columns menu - [x] ColumnPinning → `tables::Column`, `pinned` - [x] RowExpansion → `tables::DataTable`, `detail` - [x] RowGrouping → `tables::DataTable`, `group_by` - [x] InlineRowEdit → `tables::Column`, `editable`; `DataTable::on_edit` - [x] TableToolbar → `tables::TableToolbar`; `tables::to_csv` for export - [x] FilterBuilder → `tables::FilterBuilder`, `FilterRule` - [x] SortBuilder → `tables::SortBuilder`, `SortKey` ## T14c Tables · Grids - [x] DataGrid → `tables::DataGrid` - [x] Spreadsheet — formula subset, merge, freeze, fill handle → `tables::Spreadsheet`; SUM, AVERAGE, MIN, MAX, COUNT over ranges - [x] TreeTable → `tables::TreeTable`, `TreeRow` - [x] PivotTable → `tables::PivotTable` ## T15a Charts · Cartesian — `src/charts` - [x] LineChart - [x] AreaChart / StackedArea → `charts::AreaChart::stacked` - [x] BarChart - [x] ScatterChart - [x] BubbleChart → `charts::ScatterChart` with `Points::sizes` - [x] Sparkline / SparkBar / SparkArea → `data_display::Sparkline`, landed with T14a for table cells - [x] RealtimeChart - [x] ChartLegend - [x] ChartTooltip - [x] ChartCrosshair → the hover of `LineChart`, `AreaChart` and `BarChart` - [x] ChartAxis / ChartGrid → the axes every cartesian chart draws - [x] ChartZoom / Brush → `LineChart::zoom` - [x] ChartAnnotation → `rule` and `note` - [x] ChartExport — SVG and CSV → `svg` and `csv` on each cartesian chart ## T15b Charts · Parts and spreads - [x] PieChart / DonutChart → `charts::PieChart::donut` - [x] RadarChart - [x] HeatmapChart - [x] CalendarHeatmap - [x] Treemap - [x] Sunburst - [x] WaterfallChart - [x] BoxPlot - [x] Histogram - [x] ViolinPlot ## T15c Charts · Flows and relations - [x] SankeyChart - [x] FunnelChart - [x] GanttChart - [x] NetworkGraph / ForceGraph → `charts::NetworkGraph` - [x] ChordDiagram - [x] ParallelCoordinates - [x] Bullet Chart → `charts::BulletChart` - [x] ProgressChart ## T16a Finance · Market charts — `src/finance` - [x] CandlestickChart - [x] OHLCChart → `finance::CandlestickChart` with `ChartKind::Bars` - [x] HeikinAshiChart → `finance::CandlestickChart` with `ChartKind::HeikinAshi` - [x] LineQuoteChart → `finance::CandlestickChart` with `ChartKind::Line` or `ChartKind::Area` - [x] VolumeChart → `CandlestickChart::volume` - [x] DepthChart - [x] MarketProfile / VolumeProfile → `CandlestickChart::profile` - [x] RenkoChart / PointAndFigure → `RenkoChart`, `PointFigureChart` - [x] MultiChartLayout - [x] ChartSync - [x] TimeRangeSelector - [x] IntervalSelector - [x] ChartTypeSwitcher ## T16b Finance · Technical analysis - [x] IndicatorOverlay — MA, EMA, BOLL, VWAP → `CandlestickChart::overlay` with `Overlay` - [x] IndicatorPane — MACD, RSI, KDJ, OBV → `CandlestickChart::study` with `Study` - [x] IndicatorSelector - [x] DrawingTools → `CandlestickChart::tool` and `drawings`: trend, level, box, Fibonacci retracement - [x] DrawingToolbar - [x] CompareSymbol → `CandlestickChart::compare` - [x] PriceAlertLine → `CandlestickChart::alert` ## T16c Finance · Quotes & book - [x] Ticker / TickerTape → `TickerTape` - [x] QuoteCard - [x] PriceText - [x] PriceChangeBadge - [x] OrderBook - [x] Level2 Quotes → `Level2Quotes` - [x] TimeAndSales / TradeTape → `TimeAndSales` - [x] MarketDepthLadder / DOM → `DomLadder` - [x] SpreadIndicator - [x] BidAskBar ## T16d Finance · Trading - [x] OrderEntry / TradePanel → `OrderEntry` - [x] QuickTradeButtons - [x] PositionTable - [x] OrderTable - [x] TradeHistoryTable - [x] PnLDisplay - [x] LeverageSlider - [x] MarginIndicator - [x] RiskMeter - [x] OrderConfirmDialog - [x] OptionChain - [x] GreeksTable - [x] PayoffDiagram ## T16e Finance · Markets & assets - [x] Watchlist - [x] SymbolSearch - [x] SymbolBadge - [x] MarketHeatmap - [x] SectorTreemap → `finance::MarketHeatmap`, or `charts::Treemap` for plain weights - [x] Screener / FilterPanel → `Screener`, its rules from `tables::FilterBuilder` - [x] MarketOverview - [x] IndexCard → `finance::QuoteCard`, in a row by `MarketOverview::index` - [x] MarketStatus - [x] TradingSessionClock - [x] EconomicCalendar - [x] EarningsCalendar - [x] NewsFeed - [x] SentimentGauge → `data_display::Gauge` - [x] PortfolioSummary - [x] AssetAllocationChart → `charts::PieChart` with `donut` - [x] PerformanceChart — equity curve, drawdown - [x] DividendTable - [x] FinancialStatementTable - [x] CurrencyConverter - [x] CryptoWalletCard - [x] TransactionList - [x] Candle Countdown → `feedback::Countdown` ## T17a Editor · Core — `src/editor` - [ ] CodeEditor — highlight, multi-cursor, selection, undo, redo - [ ] EditorGutter - [ ] LineNumbers — absolute, relative - [ ] FoldingControl - [ ] Minimap - [ ] Ruler / IndentGuide - [ ] BracketMatcher / RainbowBrackets - [ ] WhitespaceRenderer - [ ] CursorRenderer — block, line, underline, blink - [ ] SelectionHighlight - [ ] MultiCursor - [ ] VimModeIndicator - [ ] StickyScroll - [ ] Breadcrumb → `navigation::Breadcrumb` - [ ] InlayHints - [ ] CodeLens - [ ] InlineDecoration - [ ] GhostText - [ ] InlineChat - [ ] InlineDiff - [ ] ReadOnlyBanner ## T17b Editor · Intelligence - [ ] CompletionMenu - [ ] SignatureHelp - [ ] HoverInfo - [ ] QuickFix / CodeActionMenu - [ ] RenameInput - [ ] PeekView → `overlays::Peek` - [ ] ReferencesPanel - [ ] SymbolOutline - [ ] GoToSymbol - [ ] CallHierarchy / TypeHierarchy ## T17c Editor · Search - [ ] FindWidget - [ ] ReplaceWidget → `editor::FindWidget` - [ ] SearchPanel - [ ] SearchResultItem - [ ] SearchFilters ## T17d Editor · Panels - [ ] ProblemsPanel / DiagnosticsList - [ ] OutputPanel - [ ] DebugConsole - [ ] ExtensionsPanel / PluginList - [ ] SettingsEditor — UI and JSON - [ ] KeybindingsEditor - [ ] ThemePreview - [ ] WelcomePage - [ ] RecentProjects - [ ] ProjectSwitcher - [ ] TaskRunner / RunConfiguration ## T17e Editor · Status items - [ ] CursorPosition - [ ] LanguageMode - [ ] Encoding - [ ] LineEnding - [ ] IndentSettings - [ ] BranchIndicator - [ ] LspStatus - [ ] NotificationBell ## T18 Terminal — `src/terminal` - [ ] Terminal — prove: `alacritty_terminal` grid and PTY - [ ] TerminalTabs → `navigation::EditorTabs` - [ ] TerminalSplit → `layout::PaneGroup` - [ ] TerminalToolbar - [ ] TerminalSearch → `editor::FindWidget` - [ ] TerminalLink - [ ] ShellSelector - [ ] CommandBlock - [ ] CommandHistory - [ ] AnsiText - [ ] LogViewer - [ ] ProcessList ## T19 Git — `src/git` - [ ] DiffViewer — split, unified - [ ] InlineDiff → `editor::InlineDiff` - [ ] ThreeWayMerge - [ ] ConflictResolver - [ ] ChangesList - [ ] CommitInput - [ ] CommitGraph - [ ] CommitList / CommitItem - [ ] BranchSelector - [ ] BranchList - [ ] TagList - [ ] StashList - [ ] BlameView / GitBlameAnnotation - [ ] FileHistory - [ ] PullRequestCard - [ ] ReviewComment - [ ] DiffStat - [ ] GitStatusBadge ## T20 Debug — `src/debug` - [ ] DebugToolbar - [ ] BreakpointList - [ ] BreakpointGutter → `editor::EditorGutter` - [ ] CallStack - [ ] VariablesPanel - [ ] WatchPanel - [ ] ThreadList - [ ] MemoryViewer / HexViewer - [ ] Disassembly - [ ] PerformanceProfiler / Flamegraph - [ ] TimelineProfiler - [ ] NetworkInspector - [ ] ConsoleREPL → `editor::DebugConsole`