Overview
I would like to request expanding GPUI Kit with more comprehensive out of the box support for animations, transitions, responsive layouts, dialogs, popups, containers, grids, media, content overlays, file attachments, folders, and drag and drop.
GPUI Kit already provides a strong foundation for reusable components, polished interactions, layout, and productive defaults. These improvements would make it much easier to build modern desktop applications without repeatedly implementing the same UI infrastructure.
1. Advanced Animation and Transition Support
Add first class support for animations and transitions across the component system.
Support should include:
- Fade animations
- Slide animations
- Scale animations
- Expand and collapse animations
- Size transitions
- Position transitions
- Opacity transitions
- Transform animations
- Spring based animations
- Configurable animation duration
- Configurable animation delay
- Easing support
- Animation sequencing
- Staggered animations
- Reusable animation presets
- Interruptible animations
- Smooth state transitions
- Reduced motion support
Animations should work consistently across components instead of requiring each application to implement its own animation system.
2. More Responsive Dialogs and Popups
Dialogs, modals, popups, dropdowns, popovers, tooltips, menus, sheets, and other overlay components should have much stronger responsive behavior.
They should gracefully adapt when:
- The application window becomes smaller
- Content becomes larger
- Text becomes longer
- A dialog contains many controls
- Nested content is added
- Display scaling changes
- Available screen space is limited
Support should include:
- Automatic sizing within available space
- Maximum width and height handling
- Minimum size handling
- Automatic scrolling when content exceeds available space
- Viewport boundary detection
- Automatic repositioning
- Better placement near screen edges
- Responsive padding and spacing
- Content wrapping
- Text truncation where appropriate
- Better nested popup behavior
- Smooth opening and closing transitions
- Better keyboard interaction
- Proper focus management
A dialog, popup, or modal should not unexpectedly overflow outside its usable area.
3. More Responsive Containers and Layouts
Containers and layout components should have stronger protection against unexpected overflow.
Support should include:
- Automatic shrinking
- Flexible sizing
- Minimum and maximum dimensions
- Content aware sizing
- Safe nested layouts
- Better overflow handling
- Scrollable content
- Text wrapping
- Text truncation
- Responsive spacing
- Adaptive padding
- Better handling of long content
- Better behavior when children exceed available space
- Better behavior during window resizing
The goal is for containers to remain stable and usable even when their content or available space changes significantly.
4. Responsive Layout System
It would be valuable to have a more comprehensive responsive layout system throughout GPUI Kit.
Components should adapt naturally to:
- Different window sizes
- Different display scaling
- Different font metrics
- Dynamic content
- Long text
- Large amounts of content
- Nested components
- Resizable panels
- Different desktop platforms
The framework should make it difficult for normal application layouts to accidentally overflow.
5. Grid Component
Add a dedicated production ready Grid component.
Support should include:
- Fixed columns
- Flexible columns
- Automatic column sizing
- Minimum and maximum column sizes
- Row gaps
- Column gaps
- Row spanning
- Column spanning
- Responsive column counts
- Alignment
- Justification
- Nested grids
- Dynamic content
- Scrollable grids
- Virtualized grids
The grid should automatically adapt to the available space.
For example:
Large window: 4 columns
Medium window: 3 columns
Small window: 2 columns
Very small: 1 column
6. Flexible Image, Text, and Content Display
It would be very useful to have more flexible support for displaying images, text, icons, badges, buttons, metadata, and other content in different compositions.
For example:
- Image with text below
- Image with text above
- Text over an image
- Text over an image with a gradient or background treatment
- Text positioned at the top of an image
- Text positioned at the bottom of an image
- Centered text over an image
- Icon over an image
- Badge over an image
- Buttons over an image
- Multiple elements layered over an image
- Image with a caption
- Image with metadata
- Image with actions
- Image with hover controls
- Image with hover text
- Image with hover overlay
- Image with hover actions
- Content revealed only when hovering
- Content visible by default and enhanced on hover
For example, a media card could support:
┌────────────────────────────┐
│ │
│ IMAGE │
│ │
│ Title over image │
│ Description │
│ ● Play │
└────────────────────────────┘
Another application may want:
┌────────────────────────────┐
│ IMAGE │
├────────────────────────────┤
│ Title │
│ Description │
│ Metadata Actions │
└────────────────────────────┘
Both layouts should be easy to create without having to build custom positioning and interaction logic for every application.
7. Image and Content Overlay Support
A reusable overlay system would be particularly useful for media and content heavy applications.
Support should include:
- Text overlays
- Icon overlays
- Button overlays
- Badge overlays
- Gradient overlays
- Scrim overlays
- Loading overlays
- Selection overlays
- Hover overlays
- Contextual action overlays
- Play button overlays
- Status overlays
- Progress overlays
Overlay positioning should support:
- Top left
- Top center
- Top right
- Center left
- Center
- Center right
- Bottom left
- Bottom center
- Bottom right
It would also be useful to support combinations of multiple overlay elements.
8. Hover Based Content and Transitions
Components should support content that changes or appears based on interaction.
Examples include:
- Text appearing when hovering
- Image controls appearing when hovering
- Action buttons appearing when hovering
- Metadata appearing when hovering
- Overlay appearing when hovering
- Additional information being revealed
- Image scaling on hover
- Image brightness or opacity changing on hover
- Icons transitioning on hover
- Cards transitioning on hover
These interactions should integrate with the animation and transition system.
The default behavior should also remain usable without hover, especially where keyboard navigation or accessibility requires it.
9. Multiple Content Display Modes
Components should support different ways of presenting the same content.
For example:
- Image only
- Image with text below
- Image with text above
- Image with text overlay
- Image with hover overlay
- Image with actions
- Image with metadata
- Text only
- Icon with text
- Icon with metadata
- Compact view
- Detailed view
- Grid view
- List view
This would be especially useful for media browsers, galleries, dashboards, file managers, cards, search results, and application launchers.
10. Video Player Component
Add a complete reusable Video Player component.
Support should include:
- Play and pause
- Seeking
- Timeline
- Current time
- Duration
- Buffering state
- Playback speed
- Restart
- Skip forward and backward
- Looping
- Muted playback
- Volume control
- Mute and unmute
- Fullscreen
- Picture in picture where supported
- Aspect ratio handling
- Fit, fill, and contain modes
- Poster and thumbnail support
- Loading state
- Error state
- Hover controls
- Automatically hiding controls
- Keyboard shortcuts
- Smooth control transitions
11. Advanced File Attachment Support
Expand the existing attachment functionality into a complete multi file and folder aware attachment system.
Support should include:
- Multiple file selection
- Multiple file drag and drop
- Incremental attachment
- Removing individual attachments
- Removing multiple attachments
- Reordering attachments
- File previews
- Upload progress
- Duplicate handling
- File type validation
- File size validation
12. Folder and Nested Folder Support
Allow users to attach complete folders and preserve their structure.
Support should include:
- Selecting folders
- Dragging folders
- Dropping folders
- Recursive folder handling
- Nested folder support
- Preserving folder hierarchy
- Including files from nested directories
- Displaying folder structure
- Showing file counts
- Handling large folder structures efficiently
For example:
Project/
├── images/
│ ├── logo.png
│ └── banner.jpg
├── videos/
│ └── demo.mp4
├── documents/
│ └── specification.pdf
└── src/
└── main.rs
The structure should ideally remain available instead of flattening everything into one file list.
13. Mixed File and Folder Attachments
Users should be able to combine different types of attachments at the same time.
For example:
Selected:
photo.png
video.mp4
document.pdf
Project/
AnotherFolder/
This should support multiple files, multiple folders, nested folders, images, videos, documents, and other supported file types in the same attachment experience.
14. Improved Drag and Drop
Drag and drop should be treated as a first class interaction.
Support should include:
- Multiple files
- Multiple folders
- Nested folders
- Visual drop target states
- Drag enter states
- Drag leave states
- Animated drop feedback
- Invalid file feedback
- Upload progress
- Cancel support
- Drop previews
The interaction should provide clear visual feedback throughout the entire drag and drop process.
15. Native File Explorer and File Picker Support
Attachment components should provide integrated support for opening the native file picker or file explorer.
Users should be able to:
- Click the attachment area
- Click an add attachment action
- Select multiple files
- Select folders
- Add additional files later
- Continue building an attachment collection incrementally
This should ideally work consistently across Windows, macOS, and Linux.
16. Media Aware Attachment Previews
Attachments should automatically provide appropriate previews based on their type.
Images should support thumbnails and relevant metadata.
Videos should support thumbnails, duration, metadata, and playback previews.
Audio should support appropriate icons or artwork and playback information.
Documents should display appropriate file type information.
Folders should display folder information, file counts, and nested folder indicators.
17. Attachment Grid and List Views
The attachment system could support both grid and list presentations.
The grid should automatically adapt to available width.
The list should handle long filenames, metadata, actions, and different attachment types without causing overflow.
Applications should be able to choose the presentation that best fits their use case.
18. Responsive Attachment UI
The attachment UI should remain responsive regardless of the number or type of attachments.
For example:
Wide:
[File] [File] [File] [File]
Medium:
[File] [File] [File]
Small:
[File] [File]
Very small:
[File]
[File]
Long filenames should truncate gracefully rather than breaking the layout.
Large attachment collections should also remain performant and usable.
19. Consistent Hover and Interaction Effects
All relevant components should have consistent interaction states.
Support should include:
- Hover
- Pressed
- Focused
- Active
- Selected
- Disabled
- Loading
- Dragging
- Drop target
- Keyboard navigation
These states should integrate naturally with the animation and transition system.
20. Unified Loading and Async States
Provide consistent visual states for asynchronous operations.
Examples include:
- Loading
- Uploading
- Processing
- Success
- Error
- Cancelled
- Retrying
These states should support consistent visual feedback and transitions.
21. Accessibility and Keyboard Support
All these components should provide strong support for:
- Keyboard navigation
- Focus management
- Focus visible states
- Enter and Space interaction
- Escape to close or cancel
- Appropriate accessibility semantics
- Reduced motion
- Clear disabled states
Expected Outcome
The main goal is to make GPUI Kit much easier to use for building modern, polished, highly responsive desktop applications out of the box.
In particular, I would like responsive behavior to work reliably across:
- Dialogs
- Popups
- Modals
- Containers
- Panels
- Cards
- Menus
- Dropdowns
- Tooltips
- Forms
- Grids
- Images
- Text
- Media
- Attachment areas
- File browsers
- Video players
- Other reusable components
I would also like the component system to provide flexible composition of images, text, icons, metadata, badges, actions, overlays, and hover content, including displaying text over images, text below images, content by default, or additional content when hovering.
The framework should handle resizing, constrained space, long content, dynamic content, nested layouts, media content, and overflow gracefully.
The overall objective is to provide a cohesive foundation for:
- Responsive UI
- Animation
- Transitions
- Image and content composition
- Hover interactions
- Media
- File workflows
- Drag and drop
- Responsive dialogs and popups
- Robust container layouts
- Modern interaction states
This would allow developers to focus on their applications instead of repeatedly rebuilding common UI infrastructure.
Overview
I would like to request expanding GPUI Kit with more comprehensive out of the box support for animations, transitions, responsive layouts, dialogs, popups, containers, grids, media, content overlays, file attachments, folders, and drag and drop.
GPUI Kit already provides a strong foundation for reusable components, polished interactions, layout, and productive defaults. These improvements would make it much easier to build modern desktop applications without repeatedly implementing the same UI infrastructure.
1. Advanced Animation and Transition Support
Add first class support for animations and transitions across the component system.
Support should include:
Animations should work consistently across components instead of requiring each application to implement its own animation system.
2. More Responsive Dialogs and Popups
Dialogs, modals, popups, dropdowns, popovers, tooltips, menus, sheets, and other overlay components should have much stronger responsive behavior.
They should gracefully adapt when:
Support should include:
A dialog, popup, or modal should not unexpectedly overflow outside its usable area.
3. More Responsive Containers and Layouts
Containers and layout components should have stronger protection against unexpected overflow.
Support should include:
The goal is for containers to remain stable and usable even when their content or available space changes significantly.
4. Responsive Layout System
It would be valuable to have a more comprehensive responsive layout system throughout GPUI Kit.
Components should adapt naturally to:
The framework should make it difficult for normal application layouts to accidentally overflow.
5. Grid Component
Add a dedicated production ready Grid component.
Support should include:
The grid should automatically adapt to the available space.
For example:
6. Flexible Image, Text, and Content Display
It would be very useful to have more flexible support for displaying images, text, icons, badges, buttons, metadata, and other content in different compositions.
For example:
For example, a media card could support:
Another application may want:
Both layouts should be easy to create without having to build custom positioning and interaction logic for every application.
7. Image and Content Overlay Support
A reusable overlay system would be particularly useful for media and content heavy applications.
Support should include:
Overlay positioning should support:
It would also be useful to support combinations of multiple overlay elements.
8. Hover Based Content and Transitions
Components should support content that changes or appears based on interaction.
Examples include:
These interactions should integrate with the animation and transition system.
The default behavior should also remain usable without hover, especially where keyboard navigation or accessibility requires it.
9. Multiple Content Display Modes
Components should support different ways of presenting the same content.
For example:
This would be especially useful for media browsers, galleries, dashboards, file managers, cards, search results, and application launchers.
10. Video Player Component
Add a complete reusable Video Player component.
Support should include:
11. Advanced File Attachment Support
Expand the existing attachment functionality into a complete multi file and folder aware attachment system.
Support should include:
12. Folder and Nested Folder Support
Allow users to attach complete folders and preserve their structure.
Support should include:
For example:
The structure should ideally remain available instead of flattening everything into one file list.
13. Mixed File and Folder Attachments
Users should be able to combine different types of attachments at the same time.
For example:
This should support multiple files, multiple folders, nested folders, images, videos, documents, and other supported file types in the same attachment experience.
14. Improved Drag and Drop
Drag and drop should be treated as a first class interaction.
Support should include:
The interaction should provide clear visual feedback throughout the entire drag and drop process.
15. Native File Explorer and File Picker Support
Attachment components should provide integrated support for opening the native file picker or file explorer.
Users should be able to:
This should ideally work consistently across Windows, macOS, and Linux.
16. Media Aware Attachment Previews
Attachments should automatically provide appropriate previews based on their type.
Images should support thumbnails and relevant metadata.
Videos should support thumbnails, duration, metadata, and playback previews.
Audio should support appropriate icons or artwork and playback information.
Documents should display appropriate file type information.
Folders should display folder information, file counts, and nested folder indicators.
17. Attachment Grid and List Views
The attachment system could support both grid and list presentations.
The grid should automatically adapt to available width.
The list should handle long filenames, metadata, actions, and different attachment types without causing overflow.
Applications should be able to choose the presentation that best fits their use case.
18. Responsive Attachment UI
The attachment UI should remain responsive regardless of the number or type of attachments.
For example:
Long filenames should truncate gracefully rather than breaking the layout.
Large attachment collections should also remain performant and usable.
19. Consistent Hover and Interaction Effects
All relevant components should have consistent interaction states.
Support should include:
These states should integrate naturally with the animation and transition system.
20. Unified Loading and Async States
Provide consistent visual states for asynchronous operations.
Examples include:
These states should support consistent visual feedback and transitions.
21. Accessibility and Keyboard Support
All these components should provide strong support for:
Expected Outcome
The main goal is to make GPUI Kit much easier to use for building modern, polished, highly responsive desktop applications out of the box.
In particular, I would like responsive behavior to work reliably across:
I would also like the component system to provide flexible composition of images, text, icons, metadata, badges, actions, overlays, and hover content, including displaying text over images, text below images, content by default, or additional content when hovering.
The framework should handle resizing, constrained space, long content, dynamic content, nested layouts, media content, and overflow gracefully.
The overall objective is to provide a cohesive foundation for:
This would allow developers to focus on their applications instead of repeatedly rebuilding common UI infrastructure.