Installation
Dependencies
This component requires the following dependencies:button- shadcn/ui button componentdialog- shadcn/ui dialog componentlabel- shadcn/ui label componentselect- shadcn/ui select componentseparator- shadcn/ui separator componentlucide-react- Icon library (AppWindowIcon)
Usage
Features
- Two-column layout - Sidebar for information, main area for form
- Multi-step design - Numbered steps with clear progression
- Responsive layout - Columns stack on mobile, side-by-side on desktop
- Information sidebar - Icon, description, and contextual help
- Step indicators - Numbered badges for each configuration step
- Multiple selects - Dropdowns for framework, package manager, linter, and testing tool
- Helper text - Additional context for complex options
- Sticky footer - Actions remain visible at bottom of sidebar
- Large dialog - Uses
sm:max-w-2xlfor wide layout - Overflow handling - Uses
overflow-visiblefor select dropdowns
Component Structure
The component includes:Dialogwith controlled stateDialogTriggerbuttonDialogContentwith:overflow-visiblefor dropdowns- Custom padding (
p-0) - Extra large width (
sm:max-w-2xl) - No gap (
gap-0)
- Bordered
DialogHeader - Form with two-column flex layout:
- Left sidebar (
md:w-80 md:border-r):- Icon and title section
Separator- Description sections
- Info sections
- Sticky footer with Cancel and Initialize buttons
- Right content area (flex-1):
- Step 1: Framework selection
- Step 2: Package manager selection
- Step 3: Linter/formatter selection with helper text
- Step 4: Testing tool selection with helper text
- Left sidebar (
- Each step includes:
- Numbered badge indicator
- Label
- Select component with options
- Optional helper text
- Responsive classes:
flex-col-reverse md:flex-rowfor layout directionborder-t md:border-nonefor conditional borders
The dialog uses
overflow-visible to prevent select dropdowns from being clipped. The two-column layout uses flex-col-reverse on mobile so the form appears above the sidebar, improving mobile UX. The sidebar footer uses flexbox to stay at the bottom.