# Known Limitations This document lists known limitations, missing features, and design decisions in vapora-leptos-ui v1.2.0. ## Missing Components ### Form Controls - **Select** - Dropdown select component not implemented - **Textarea** - Multi-line text input not implemented - **Checkbox** - Checkbox input not implemented - **Radio** - Radio button group not implemented - **Toggle/Switch** - Toggle switch not implemented ### Layout Components - **Dialog** - Generic dialog component (Modal exists but Dialog is more flexible) - **ConfirmDialog** - Confirmation dialog with Yes/No buttons - **Drawer** - Side panel/drawer component - **Tabs** - Tabbed interface component - **Accordion** - Collapsible sections component ### Data Display - **DataGrid** - Advanced table with virtual scrolling, server-side sorting - **Tree** - Tree view component - **Timeline** - Timeline display component ### Feedback - **Alert** - Alert/banner component - **Progress** - Progress bar component - **Skeleton** - Loading skeleton component ## Component Limitations ### Input - **Uncontrolled**: No `value` prop, only `on_input` callback - **No validation**: Parent must handle validation - **Type limitation**: Only `input_type` prop (string), no type safety for HTML5 input types - **No icon support**: No built-in prefix/suffix icon slots ### Table - **Client-side sorting only**: No server-side sorting support - **No column resizing**: Columns have fixed widths - **No row selection**: No checkboxes or multi-select - **No filtering**: No built-in column filters - **No virtual scrolling**: Poor performance with 1000+ rows - **No sticky headers**: Headers scroll with content ### Pagination - **Fixed styling**: Limited customization of appearance - **No page size selector**: Items per page is fixed by parent - **No "show all" option**: Always paginates if total_pages > 1 ### Modal - **Single modal limitation**: Nested modals not tested, may have z-index issues - **No animation customization**: Fade-in animation is fixed - **No position control**: Always centered - **No size variants**: Width/height controlled by content only ### FormField - **Parent-controlled validation**: No internal validation logic - **Static error messages**: Errors don't animate in/out independently - **No async validation**: Parent must handle async validation ### Toast - **Fixed duration**: Auto-dismiss at 3 seconds (not configurable) - **Fixed position**: Always top-right corner - **No stacking limit**: Unlimited toasts can stack (could overflow) - **No action buttons**: Only dismiss on timeout or click ### Badge - **No variant system**: Uses custom classes only (no Variant enum) - **No size variants**: Fixed size - **No icon support**: Text only ### Spinner - **CSS animation only**: Uses keyframes, not requestAnimationFrame - **No progress indication**: Indeterminate spinner only - **Fixed colors**: Cyan/purple gradient (no variant customization) ### Card - **No collapsible**: Always expanded - **No header/footer slots**: Free-form content only - **Limited glow colors**: Only 5 glow options (None, Cyan, Purple, Pink, Blue) ### Button - **No icon support**: No built-in icon slots (left/right) - **Loading state visual only**: Shows loading prop but parent handles disabled state - **No tooltip**: No built-in tooltip on hover ### SpaLink - **Basic external detection**: Only checks `http/https/mailto` prefixes - **No active state**: No automatic "active" class for current route - **No prefetch**: No link prefetching on hover ## Design Limitations ### Accessibility - **Incomplete ARIA**: Only Modal has full ARIA attributes (role, aria-label, aria-modal) - **No screen reader announcements**: Toast notifications not announced - **Keyboard navigation**: Only Modal has Tab trap, other components lack full keyboard support - **No reduced motion**: Animations don't respect `prefers-reduced-motion` ### Internationalization - **No i18n support**: All strings are hardcoded - **No RTL support**: Layout assumes LTR (left-to-right) - **No locale-aware formatting**: Numbers, dates not formatted per locale ### Theming - **Hardcoded colors**: Glassmorphism colors not customizable via CSS variables - **No dark/light mode**: Theme assumes dark background - **UnoCSS dependency**: Components rely on UnoCSS classes (not portable to pure CSS) ### Performance - **Table re-renders**: Entire table re-renders on sort (no virtual DOM optimization) - **Pagination slicing**: Creates new array on every page change - **Portal leaks**: Portal cleanup uses UUID lookup (potential memory if many modals) ### Browser Support - **Modern browsers only**: Uses ES2020+ features via wasm-bindgen - **No IE11 support**: Relies on CSS Grid, Flexbox, backdrop-filter - **Safari blur limitation**: `backdrop-blur` may have performance issues on older Safari ## Testing Gaps - **No unit tests**: Components lack unit tests - **No integration tests**: No tests for component interactions - **No visual regression tests**: No screenshot comparison tests - **Manual testing only**: All testing is manual in VAPORA frontend ## Documentation Gaps - **No Storybook/demo site**: No interactive component showcase - **Limited cookbook**: cookbook.md exists but examples are minimal - **No API docs**: No generated rustdoc published online - **No migration guide**: No guide for upgrading between versions ## Future Improvements ### High Priority 1. **Select component** - Most requested missing component 2. **Textarea component** - Common form control 3. **Table virtual scrolling** - Performance for large datasets 4. **Toast configurability** - Allow custom duration, position 5. **Accessibility audit** - Complete ARIA, keyboard navigation ### Medium Priority 1. **Checkbox/Radio components** - Complete form controls 2. **Dialog/ConfirmDialog** - More flexible than Modal 3. **Input controlled mode** - Add `value` prop for controlled components 4. **Table server-side sorting** - Support for large datasets 5. **Theme customization** - CSS variables for colors ### Low Priority 1. **Tabs component** - Nice-to-have layout component 2. **Drawer component** - Alternative to Modal 3. **Progress component** - Visual feedback for long operations 4. **i18n support** - Internationalization framework ## Known Bugs ### Confirmed Issues - **Modal focus trap edge case**: If modal content has no focusable elements, Tab does nothing (should focus close button) - **Pagination boundary**: If total_pages changes while on last page that no longer exists, UI shows invalid page number - **Toast overlap**: With many rapid toasts, they can overlap vertically (no spacing) - **Table sort stability**: Sorting equal values doesn't preserve original order ### Unconfirmed Issues - **Safari backdrop-blur**: Reported performance issues on Safari 14, not verified - **Portal cleanup timing**: UUID-based cleanup may not run if component unmounts during animation ## Contributing If you encounter a limitation not listed here, please: 1. Check if it's a bug or a missing feature 2. Open an issue on GitHub (if repository exists) 3. Consider contributing a fix/implementation See README.md for contribution guidelines. --- **Last Updated**: 2026-02-08 (v1.2.0)