Some checks are pending
Documentation Lint & Validation / Markdown Linting (push) Waiting to run
Documentation Lint & Validation / Validate mdBook Configuration (push) Waiting to run
Documentation Lint & Validation / Content & Structure Validation (push) Waiting to run
Documentation Lint & Validation / Lint & Validation Summary (push) Blocked by required conditions
mdBook Build & Deploy / Build mdBook (push) Waiting to run
mdBook Build & Deploy / Documentation Quality Check (push) Blocked by required conditions
mdBook Build & Deploy / Deploy to GitHub Pages (push) Blocked by required conditions
mdBook Build & Deploy / Notification (push) Blocked by required conditions
Rust CI / Security Audit (push) Waiting to run
Rust CI / Check + Test + Lint (nightly) (push) Waiting to run
Rust CI / Check + Test + Lint (stable) (push) Waiting to run
7.1 KiB
7.1 KiB
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
valueprop, onlyon_inputcallback - No validation: Parent must handle validation
- Type limitation: Only
input_typeprop (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/mailtoprefixes - 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-blurmay 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
- Select component - Most requested missing component
- Textarea component - Common form control
- Table virtual scrolling - Performance for large datasets
- Toast configurability - Allow custom duration, position
- Accessibility audit - Complete ARIA, keyboard navigation
Medium Priority
- Checkbox/Radio components - Complete form controls
- Dialog/ConfirmDialog - More flexible than Modal
- Input controlled mode - Add
valueprop for controlled components - Table server-side sorting - Support for large datasets
- Theme customization - CSS variables for colors
Low Priority
- Tabs component - Nice-to-have layout component
- Drawer component - Alternative to Modal
- Progress component - Visual feedback for long operations
- 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:
- Check if it's a bug or a missing feature
- Open an issue on GitHub (if repository exists)
- Consider contributing a fix/implementation
See README.md for contribution guidelines.
Last Updated: 2026-02-08 (v1.2.0)