mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-01-09 15:17:59 -05:00
feat(frontend): add dialog component (#10254)
## Changes 🏗️ ### Overview Introduces a new responsive `<Dialog />` component that automatically adapts to screen size, providing optimal UX across devices. <img width="800" alt="Screenshot 2025-06-27 at 16 00 01" src="https://github.com/user-attachments/assets/d0c53b30-488f-4102-8100-c9318168d65b" /> <img width="300" alt="Screenshot 2025-06-27 at 16 00 12" src="https://github.com/user-attachments/assets/f2105708-97d9-4a94-8e26-3c2d582ea8cd" /> ### Key Features #### 📱 **Responsive Behavior** - **Desktop**: Modal dialog with overlay - **Mobile**: Bottom drawer [Vaul](https://vaul.emilkowal.ski/) with **swipe-to-dismiss** functionality #### 🎯 **Multiple Interaction Methods** - `ESC` key to close (both desktop & mobile) - Click outside to dismiss - Swipe down to dismiss (mobile drawer) - Close button (X) #### ❓ Why I did not use `shadcn/dialog` in this case as a base While we already use the raw `shadcn/dialog` on the platform, it's designed as a desktop-only solution and is not really responsive-friendly. It lacks 📱 mobile-optimisation patterns like _bottom drawers_, _swipe-to-dismiss gestures_ ( the new implementation has it via [Vaul](https://vaul.emilkowal.ski/) ), and automatic breakpoint adaptation according to screen size. #### 🧩 **Compound Component Pattern** ```tsx <Dialog title="Example"> <Dialog.Trigger> <Button>Open Dialog</Button> </Dialog.Trigger> <Dialog.Content> Content goes here </Dialog.Content> </Dialog> ``` #### ⚙️ **Flexible Control** - **Uncontrolled**: Self-managed state via triggers - **Controlled**: External state management - **Force open**: rare but might be needed - **Custom styling**: if needed ## Checklist 📋 - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] **Desktop Modal**: Opens/closes via trigger, ESC key, click outside, close button - [x] **Mobile Drawer**: Automatically switches at `lg` breakpoint, swipe-to-dismiss works - [x] **Controlled Mode**: External state management functions correctly - [x] **Force Open**: Dialog stays open for preview purposes - [x] **Custom Styling**: CSS-in-JS overrides work as expected - [x] **Footer Component**: Action buttons render and function properly - [x] **No Title Mode**: Dialog works without title prop - [x] **Accessibility**: Tab navigation, screen reader announcements, ARIA compliance - [x] **Responsive Breakpoints**: Component switches modes at correct screen sizes - [x] **Storybook**: All stories render and function correctly --------- Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com>
This commit is contained in:
@@ -89,6 +89,7 @@
|
||||
"tailwind-merge": "2.6.0",
|
||||
"tailwindcss-animate": "1.0.7",
|
||||
"uuid": "11.1.0",
|
||||
"vaul": "1.1.2",
|
||||
"zod": "3.25.56"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
Reference in New Issue
Block a user