# Resizable Component API A container with resizable panels. --- ## Installation ```toml # Cargo.toml [dependencies] shadcn-ui-leptos-resizable = "0.7" ``` ```rust use shadcn_ui_leptos_resizable::Resizable; ``` --- ## Import ```rust use shadcn_ui_leptos_resizable::{ Resizable, ResizablePanel, ResizableHandle }; ``` --- ## Component API ### Resizable Root container for resizable layout. | Prop | Type | Default | Description | |------|------|---------|-------------| | `direction` | `MaybeProp` | `Horizontal` | Resize direction | ### ResizablePanel Individual resizable panel. | Prop | Type | Default | Description | |------|------|---------|-------------| | `id` | `String` | **Required** | Panel identifier | | `min_size` | `MaybeProp` | `0` | Minimum size percentage | | `default_size` | `MaybeProp` | `50` | Default size percentage | --- ## Usage Examples ### Basic Resizable ```rust use leptos::prelude::*; use shadcn_ui_leptos_resizable::*; #[component] pub fn MyComponent() -> impl IntoView { view! {
"Left panel"
"Right panel"
} } ``` --- ## CSS Classes ```css .resizable { flex } .resizable-panel { overflow-hidden } .resizable-handle { flex w-px bg-border hover:bg-primary/50 cursor-col-resize } .resizable-handle-vertical { h-px w-full cursor-row-resize } ``` --- ## Accessibility - `aria-resizable` - Resizable indicator - `aria-valuenow` - Current size - Keyboard resize support (Shift+Arrow keys) --- ## TypeScript API ```typescript interface ResizableProps { direction?: 'horizontal' | 'vertical'; children?: React.ReactNode; } interface ResizablePanelProps { id: string; minSize?: number; defaultSize?: number; } export const Resizable: React.FC; export const ResizablePanel: React.FC; export const ResizableHandle: React.FC; ``` --- *Source: [packages/leptos/resizable/src/default.rs](https://github.com/yourusername/leptos-shadcn-ui/blob/main/packages/leptos/resizable/src/default.rs)*