Files
Ely-GPUI-Components/tasks/ch31-43.md
T
ZacharyZhang-NY 1633bc9293 Project · Tasks: priorities, issues, statuses, assignees, task rows
A new chapter, src/project. PriorityIndicator shows how urgent a task
is in three bars, urgent in red, its words in a tip or beside it.
IssueIdBadge names an issue by its team's key and number, as ENG-123.
StatusSelect picks a status from the workflow, each with its mark, and
AssigneePicker picks a person or no one; DueDatePicker is the forms
DatePicker. TaskItem is a task in a row: its box, priority and issue,
its title, then its due day, red when past and still open, and who has
it. TaskList puts them in a SelectableList: arrows move, Enter opens,
and a box's press or keys stay at the box. SubtaskList is the
documents Checklist, which gains a field that adds a step on Enter.

Along the way: forms::Choice::avatar leads a person's row with their
initials, in lists and in a Select's trigger; ListItem::struck strikes
a closed task's title; typography::Ellipsis now shapes with the text
style's run, so a strike or underline on its box shows; two Lucide
icons, circle-dashed and circle-dot-dashed.
2026-09-27 04:48:54 -04:00

303 lines
8.0 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
- [ ] IssueCard
- [ ] LabelManager
- [ ] KanbanBoard / KanbanColumn / KanbanCard
- [ ] Sprint Board → `project::KanbanBoard`
- [ ] TaskDetailPanel
## T31c Project · Plans
- [ ] GanttChart / TimelineView → `charts::GanttChart`
- [ ] Roadmap
- [ ] Burndown Chart
- [ ] MilestoneProgress
- [ ] WorkloadView
## T31d Project · Time and databases
- [ ] TimeTracker
- [ ] Pomodoro Timer
- [ ] DatabaseView (from T21c) — table, board, gallery, calendar, timeline
## T32 Canvas & Design — `src/canvas`
- [ ] InfiniteCanvas
- [ ] CanvasGrid / Guides
- [ ] Ruler
- [ ] SelectionBox
- [ ] TransformHandles
- [ ] SnapIndicator
- [ ] LayerPanel
- [ ] AssetPanel
- [ ] InspectorPanel
- [ ] AlignmentToolbar
- [ ] ToolPalette
- [ ] ZoomControls / ZoomIndicator
- [ ] MiniMap
- [ ] ArtboardFrame
- [ ] ShapeTools — rect, ellipse, polygon, line, arrow
- [ ] PenTool / PathEditor
- [ ] TextTool
- [ ] BrushTool / BrushSettings
- [ ] ColorPanel
- [ ] GradientPanel → `forms::GradientEditor`
- [ ] ShadowEditor
- [ ] BorderEditor
- [ ] TypographyPanel
- [ ] ConstraintsEditor
- [ ] AutoLayoutControls
- [ ] ExportPanel
- [ ] NodeEditor / NodeGraph
- [ ] Node / Port / Edge / Connection
- [ ] FlowChart / DiagramEditor
- [ ] MindMap
- [ ] Whiteboard
- [ ] StickyNote
- [ ] Connector Line
- [ ] HistoryPanel
## T33 DB & Dev Tools — `src/devtools`
- [ ] ConnectionManager
- [ ] ConnectionForm
- [ ] SchemaTree
- [ ] QueryEditor → `editor::CodeEditor`
- [ ] QueryResultGrid → `tables::DataGrid`
- [ ] QueryHistory
- [ ] QueryPlanViewer
- [ ] TableStructureEditor
- [ ] ERDiagram
- [ ] IndexManager
- [ ] RedisKeyBrowser
- [ ] DocumentViewer (MongoDB / JSON) → `devtools::JsonViewer`
- [ ] JsonViewer / JsonTree
- [ ] JsonEditor
- [ ] YamlViewer
- [ ] XmlViewer
- [ ] ApiRequestBuilder
- [ ] ResponseViewer
- [ ] HeadersTable
- [ ] QueryParamsEditor → `forms::KeyValueInput`
- [ ] EnvironmentSelector
- [ ] CollectionTree
- [ ] WebSocketConsole
- [ ] GraphQLExplorer
- [ ] 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 → `agent::TraceViewer`
- [ ] EventStream
- [ ] ResourceGauge → `data_display::Gauge`
- [ ] SystemMonitor
- [ ] ProcessTable → `terminal::ProcessList`
- [ ] NetworkGraph (throughput) → `charts::RealtimeChart`
- [ ] MapView / GeoHeatmap → `maps::MapView`, `maps::GeoHeatmap` (T41)
- [ ] WorldMap → `maps::WorldMap` (T41)
- [ ] RefreshIntervalSelector
- [ ] DashboardFilterBar
## T35 Settings — `src/settings`
- [ ] SettingsLayout
- [ ] SettingsSection
- [ ] SettingsRow
- [ ] SettingsSearch
- [ ] ThemeSelector → `theme::ThemeSwitcher`
- [ ] 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
## T36 Account — `src/account`
- [ ] LoginForm
- [ ] SignupForm
- [ ] OAuthButtons
- [ ] MagicLinkForm
- [ ] TwoFactorInput
- [ ] ForgotPassword
- [ ] ProfileCard
- [ ] ProfileEditor
- [ ] AccountSwitcher
- [ ] WorkspaceSwitcher / OrgSwitcher
- [ ] UserMenu
- [ ] SessionList
- [ ] ApiKeyManager
- [ ] SubscriptionCard / PlanBadge
- [ ] UsageQuota
- [ ] BillingHistory
- [ ] PaymentMethodForm
- [ ] UpgradePrompt / Paywall
- [ ] TeamMemberTable
- [ ] RoleSelector
- [ ] InvitationList
## T37 Onboarding & Help — `src/onboarding`
- [ ] OnboardingWizard
- [ ] WelcomeTour → `overlays::Tour` (T09b)
- [ ] Coachmark / Hotspot — Coachmark → `overlays::Spotlight`; Hotspot here
- [ ] FeatureHighlight / NewBadge
- [ ] Checklist (first-run tasks)
- [ ] 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
- [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