208 lines
7.1 KiB
Markdown
Raw Permalink Normal View History

# 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)