T00 foundation: theme, motion, assets, icon, buttons, gallery
Theme tokens in light and dark with high contrast, a palette cross-fade, motion curves and a damped spring, embedded Lucide icons with Inter and JetBrains Mono, Icon, Button, IconButton, and a gallery that captures its own window. Reviewed by codex gpt-6-astra (max): PASS in round 3.
This commit is contained in:
258 files changed
+16908
No files matched your search
@@ -0,0 +1,365 @@
|
||||
# Chapters 1–10
|
||||
|
||||
## T01 Primitives — `src/primitives`
|
||||
|
||||
- [ ] Box / View — native `div()`
|
||||
- [ ] Text — native: strings and `StyledText` are elements
|
||||
- [x] Icon (T00)
|
||||
- [x] IconSet / IconRegistry (T00)
|
||||
- [ ] Svg — native `svg()`
|
||||
- [ ] Image — loading, failed, placeholder over `img()`
|
||||
- [ ] Canvas — native `canvas()`
|
||||
- [ ] Divider / Separator
|
||||
- [ ] Spacer — native `div().flex_1()`
|
||||
- [ ] Portal — native `deferred(anchored())`
|
||||
- [ ] Overlay / Backdrop
|
||||
- [ ] Slot — native `impl IntoElement` params and `ParentElement`
|
||||
- [ ] Show / When — native `.when()` / `.when_some()`
|
||||
- [ ] For / Each — native `.children(iter)`
|
||||
- [ ] Fragment — native: children take iterators
|
||||
- [ ] VisuallyHidden — blocked: gpui 0.2.2 has no accessibility tree
|
||||
- [ ] FocusRing
|
||||
- [ ] FocusScope / FocusTrap
|
||||
- [ ] ClickOutside — native `on_mouse_down_out`
|
||||
- [ ] HoverArea — native `on_hover` / `.hover()`
|
||||
- [ ] Pressable — press state, long press
|
||||
- [ ] KeyboardHandler — native `on_key_down` / `on_action`
|
||||
- [ ] Measure
|
||||
- [ ] ResizeObserver → `primitives::Measure`
|
||||
- [ ] IntersectionObserver
|
||||
- [ ] Clipboard — native `write_to_clipboard` / `read_from_clipboard`
|
||||
- [ ] Tooltip Trigger — owns `Tooltip`: delay, follow mouse, rich content
|
||||
|
||||
## T02 Typography — `src/typography`
|
||||
|
||||
- [ ] Heading (H1–H6)
|
||||
- [ ] Title / Subtitle
|
||||
- [ ] Paragraph
|
||||
- [ ] Label
|
||||
- [ ] Caption
|
||||
- [ ] Overline
|
||||
- [ ] Code
|
||||
- [ ] Kbd — ⌘ / Ctrl by platform
|
||||
- [ ] KbdCombo
|
||||
- [ ] Blockquote
|
||||
- [ ] Highlight / Mark
|
||||
- [ ] Truncate — native `.truncate()`
|
||||
- [ ] LineClamp — native `.line_clamp(n)`
|
||||
- [ ] MiddleEllipsis
|
||||
- [ ] EllipsisTooltip
|
||||
- [ ] Link
|
||||
- [ ] ExternalLink
|
||||
- [ ] RelativeTime
|
||||
- [ ] DateTimeText
|
||||
- [ ] NumberText
|
||||
- [ ] CurrencyText
|
||||
- [ ] PercentText
|
||||
- [ ] FileSizeText
|
||||
- [ ] DurationText
|
||||
- [ ] PluralText
|
||||
- [ ] CopyableText
|
||||
- [ ] SelectableText — prove: selection over `StyledText` layout
|
||||
- [ ] Emoji — shortcodes
|
||||
- [ ] Latex / MathInline — prove: TeX subset
|
||||
- [ ] AnimatedNumber
|
||||
- [ ] Typewriter
|
||||
- [ ] GradientText — per-glyph tonal ramp
|
||||
- [ ] 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
|
||||
Reference in new issue
Block a user