ToolLayer lies over an InfiniteCanvas and carries its tools. Select takes the topmost shape a press reaches, Shift adds or drops one, a drag moves the selection and snaps its nearest edge or middle to another shape's within reach, a handle resizes it, Shift keeping a corner's shape, and a drag on empty space draws a SelectionBox that takes what lies wholly inside. The shape tools draw by a drag toward any corner, Shift keeping them square; the pen adds a point per press and a double press ends the path; text drops a line where pressed; the brush strokes a path its width. A drag may end in the layer or out of it; each gesture ends once and asks the owner. SelectionBox, TransformHandles and SnapIndicator draw the marks. ToolPalette picks a tool from icons named in tips; BrushSettings sets a brush's width and hue; HistoryPanel lists the steps done, the undone ones quiet, and takes the drawing to a step on Enter or a double press. The model changes: lines and arrows end at a named corner, so they run either way, and paths carry their width. Three Lucide icons: hexagon, slash and move-up-right.
312 lines
8.1 KiB
Markdown
312 lines
8.1 KiB
Markdown
# 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
|
||
|
||
- [ ] 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
|
||
|
||
## 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
|