# Chapters 1–10 ## T01 Primitives — `src/primitives` - [x] Box / View — native `div()` - [x] Text — native: strings and `StyledText` are elements - [x] Icon (T00) - [x] IconSet / IconRegistry (T00) - [x] Svg — native `svg()` - [x] Image — loading, failed, placeholder over `img()` - [x] Canvas — native `canvas()` - [x] Divider / Separator - [x] Spacer — native `div().flex_1()` - [x] Portal — native `deferred(anchored())` - [x] Overlay / Backdrop - [x] Slot — native `impl IntoElement` params and `ParentElement` - [x] Show / When — native `.when()` / `.when_some()` - [x] For / Each — native `.children(iter)` - [x] Fragment — native: children take iterators - [x] VisuallyHidden — blocked: gpui 0.2.2 has no accessibility tree - [x] FocusRing - [x] FocusScope / FocusTrap - [x] ClickOutside — native `on_mouse_down_out` - [x] HoverArea — native `on_hover` / `.hover()` - [x] Pressable — press state, long press - [x] KeyboardHandler — native `on_key_down` / `on_action` - [x] Measure - [x] ResizeObserver → `primitives::Measure` - [x] IntersectionObserver - [x] Clipboard — native `write_to_clipboard` / `read_from_clipboard` - [x] Tooltip Trigger — owns `Tooltip`: delay, follow mouse, rich content ## T02 Typography — `src/typography` - [x] Heading (H1–H6) - [x] Title / Subtitle - [x] Paragraph - [x] Label - [x] Caption - [x] Overline - [x] Code - [x] Kbd — ⌘ / Ctrl by platform - [x] KbdCombo - [x] Blockquote - [x] Highlight / Mark - [x] Truncate — native `.truncate()` - [x] LineClamp — native `.line_clamp(n)` - [x] MiddleEllipsis - [x] EllipsisTooltip - [x] Link - [x] ExternalLink - [x] RelativeTime - [x] DateTimeText - [x] NumberText - [x] CurrencyText - [x] PercentText - [x] FileSizeText - [x] DurationText - [x] PluralText - [x] CopyableText - [x] SelectableText — prove: selection over `StyledText` layout - [x] Emoji — shortcodes - [x] Latex / MathInline — prove: TeX subset - [x] AnimatedNumber - [x] Typewriter - [x] GradientText — per-glyph tonal ramp - [x] ShimmerText ## T03 Layout — `src/layout` - [ ] Stack / HStack / VStack - [ ] Flex — native `.flex()` - [ ] Grid / GridItem — native `.grid()`, `.col_span()` - [ ] SimpleGrid - [ ] Masonry - [ ] Center — native `.flex().items_center().justify_center()` - [ ] Container - [ ] AspectRatio - [ ] Inset / Padding — native `.p_*()` - [ ] Wrap — native `.flex_wrap()` - [ ] Absolute / Positioned — native `.absolute()` - [ ] Layer / ZStack - [ ] ScrollArea - [ ] Scrollbar - [ ] ScrollShadow - [ ] ScrollToTop - [ ] StickyHeader - [ ] SplitPane — horizontal, vertical, nested - [ ] ResizablePanel / ResizablePanelGroup → `layout::SplitPane` - [ ] ResizeHandle - [ ] Collapsible - [ ] Accordion / AccordionItem - [ ] Card / CardHeader / CardBody / CardFooter - [ ] Panel / PanelHeader - [ ] Section / SectionHeader - [ ] Group / Fieldset - [ ] Frame - [ ] Well - [ ] Sidebar - [ ] Drawer - [ ] Sheet - [ ] Page / PageHeader / PageContent - [ ] AppShell - [ ] MasterDetail - [ ] ThreeColumnLayout → `layout::SplitPane` - [ ] Dock / DockPanel - [ ] DockZone / DropIndicator - [ ] FloatingPanel - [ ] Pane / PaneGroup - [ ] Workspace — versioned layout snapshot - [ ] Viewport ## T04 Window & Shell — `src/shell` - [ ] TitleBar - [ ] WindowControls — macOS, Windows, Linux - [ ] TrafficLights → `shell::WindowControls` - [ ] WindowDragRegion — native `window_control_area` - [ ] WindowResizeBorder — prove: client-side decorations - [ ] MenuBar - [ ] NativeMenu — native `cx.set_menus()` - [ ] Toolbar / ToolbarGroup / ToolbarSeparator - [ ] StatusBar / StatusBarItem - [ ] ActivityBar - [ ] NavigationRail → `shell::ActivityBar` - [ ] TabBar - [ ] SplashScreen - [ ] AboutDialog - [ ] TrayIcon / TrayMenu — prove - [ ] DockBadge — prove - [ ] JumpList — native `cx.set_dock_menu()` - [ ] SystemNotification — prove - [ ] MultiWindow Manager - [ ] WindowSwitcher - [ ] QuickLauncher - [ ] MiniWindow / CompactMode - [ ] AlwaysOnTop — native `WindowKind::PopUp` - [ ] PictureInPicture — host content - [ ] UpdateBanner / UpdateDialog - [ ] CrashReporter - [ ] OfflineIndicator - [ ] ZoomControl ## T05 Buttons & Actions — `src/buttons` - [x] Button (T00) - [x] IconButton (T00) - [ ] ButtonGroup - [ ] SplitButton - [ ] DropdownButton / MenuButton - [ ] ToggleButton - [ ] ToggleGroup - [ ] SegmentedControl - [ ] FloatingActionButton - [ ] LoadingButton → `buttons::Button` loading state - [ ] ConfirmButton — hold or click twice - [ ] HoldToConfirm → `buttons::ConfirmButton` - [ ] CopyButton - [ ] ShareButton - [ ] CloseButton - [ ] BackButton - [ ] MoreButton - [ ] ActionBar - [ ] BulkActionBar - [ ] ActionSheet - [ ] QuickActions - [ ] ShortcutHint ## T06a Forms · Text — `src/forms` - [ ] Input / TextField - [ ] TextArea - [ ] PasswordInput - [ ] SearchInput - [ ] NumberInput - [ ] ScrubInput - [ ] CurrencyInput - [ ] PercentInput - [ ] UnitInput - [ ] EmailInput - [ ] UrlInput - [ ] PhoneInput - [ ] MaskedInput - [ ] PinInput / OTPInput - [ ] InlineEdit / EditableText - [ ] InputGroup / InputAddon - [ ] ClearableInput → `forms::Input` - [ ] AutoResizeInput → `forms::Input` - [ ] MentionInput - [ ] HashtagInput - [ ] TagInput / TokenInput - [ ] KeyValueInput - [ ] ListInput - [ ] PathInput — native dialog via `prompt_for_paths` - [ ] RegexInput - [ ] ExpressionInput - [ ] HotkeyInput / ShortcutRecorder ## T06b Forms · Selection - [ ] Checkbox - [ ] CheckboxGroup - [ ] CheckboxCard - [ ] Radio / RadioGroup - [ ] RadioCard - [ ] Switch / Toggle - [ ] Select - [ ] NativeSelect — blocked: gpui 0.2.2 has no native popup menu - [ ] Combobox - [ ] Autocomplete - [ ] MultiSelect - [ ] CascadeSelect / Cascader - [ ] TreeSelect - [ ] TransferList - [ ] ListBox - [ ] ChoiceChips / FilterChips - [ ] Rating - [ ] Slider - [ ] RangeSlider - [ ] VerticalSlider → `forms::Slider` - [ ] Knob / Dial - [ ] Stepper ## T06c Forms · Date & Time - [ ] Calendar - [ ] DatePicker - [ ] DateRangePicker - [ ] TimePicker - [ ] DateTimePicker - [ ] MonthPicker / YearPicker / QuarterPicker - [ ] WeekPicker - [ ] RelativeDatePicker - [ ] TimezoneSelect - [ ] DurationPicker - [ ] CronEditor ## T06d Forms · Color - [ ] ColorPicker — HSV, RGB, HEX, alpha - [ ] ColorSwatch - [ ] ColorPalette - [ ] EyeDropper — prove: `NSColorSampler` - [ ] GradientEditor ## T06e Forms · Files - [ ] FilePicker / FileInput - [ ] FolderPicker - [ ] DropZone - [ ] UploadList - [ ] ImageUpload — preview, crop - [ ] AvatarUpload ## T06f Forms · Other - [ ] SignaturePad - [ ] CodeInput - [ ] JsonInput - [ ] FontPicker - [ ] IconPicker - [ ] EmojiPicker - [ ] LanguageSelect - [ ] CountrySelect - [ ] CurrencySelect ## T06g Forms · Structure - [ ] Form - [ ] FormField - [ ] FormLabel - [ ] FormDescription / HelperText - [ ] FormError / ValidationMessage - [ ] FormSection - [ ] FormActions - [ ] FieldArray - [ ] InlineForm - [ ] WizardForm / MultiStepForm - [ ] DirtyIndicator ## T07 Navigation — `src/navigation` - [ ] Tabs — top, left, bottom - [ ] EditorTabs - [ ] TabOverflowMenu - [ ] Breadcrumb - [ ] Pagination - [ ] LoadMore - [ ] Stepper / Steps / Wizard — as `Steps` - [ ] Sidebar Navigation / NavItem / NavGroup - [ ] NavigationMenu - [ ] ActivityBar Item → `shell::ActivityBar` - [ ] BackForwardNavigation - [ ] History Navigation → `navigation::BackForwardNavigation` - [ ] Anchor / TableOfContents - [ ] JumpTo / GoToLine - [ ] CommandPalette - [ ] QuickOpen - [ ] QuickSwitcher - [ ] SearchPalette - [ ] SpotlightSearch → `navigation::SearchPalette` - [ ] Tour / Onboarding ## T08 Menus — `src/menus` - [ ] Menu / MenuItem / MenuGroup / MenuSeparator - [ ] SubMenu - [ ] CheckboxMenuItem - [ ] RadioMenuItem - [ ] MenuItemShortcut - [ ] MenuItemIcon - [ ] ContextMenu - [ ] DropdownMenu - [ ] MenuBar Menu → `shell::MenuBar` - [ ] OverflowMenu - [ ] MegaMenu - [ ] SearchableMenu - [ ] PieMenu / RadialMenu ## T09 Overlays — `src/overlays` - [ ] Tooltip → `primitives::Tooltip` - [ ] Popover - [ ] HoverCard - [ ] Dialog / Modal - [ ] AlertDialog - [ ] ConfirmDialog - [ ] PromptDialog - [ ] FullscreenDialog - [ ] Sheet → `layout::Sheet` - [ ] Drawer → `layout::Drawer` - [ ] Lightbox - [ ] Spotlight / Coachmark - [ ] FloatingToolbar - [ ] Callout / Peek - [ ] DropdownPanel → `overlays::Popover` - [ ] InlinePopup → `overlays::Popover` - [ ] ToastViewport ## T10 Feedback — `src/feedback` - [ ] Toast — success, error, warning, info, action, undo - [ ] Notification - [ ] NotificationCenter - [ ] Alert - [ ] Banner - [ ] Callout / Admonition - [ ] InlineMessage - [ ] StatusMessage - [ ] Snackbar → `feedback::Toast` - [ ] UndoToast → `feedback::Toast` - [ ] ErrorView - [ ] ErrorBoundary — renders and logs a `Result` error; never catches panics - [ ] NotFound / 404 → `feedback::ErrorView` - [ ] NoPermission / 403 → `feedback::ErrorView` - [ ] Maintenance → `feedback::ErrorView` - [ ] Offline → `feedback::ErrorView` - [ ] EmptyState - [ ] Result - [ ] ConfirmationCard - [ ] SavingIndicator - [ ] SyncStatus - [ ] ConnectionStatus - [ ] Countdown - [ ] Timer