Context
Ripple has 40+ widgets which cover most common patterns, but agents frequently try to generate UIs that need widgets we don't have yet. This causes silent failures or forces workarounds.
High Priority (agents need these often)
| Widget |
Why |
Complexity |
| textarea |
Multi-line text input — forms, feedback, comments. Current input is single-line only |
S — wrap shadcn Textarea |
| modal / dialog |
Confirmations, detail views, edit forms, overlays. No way to do popover content today |
S-M — shadcn Dialog + open/close state binding |
| date-picker |
Scheduling, date filters, any form with dates |
S — shadcn DatePicker |
| autocomplete / combobox |
Search inputs, entity pickers, tag selection with filtering |
M — shadcn Combobox |
Medium Priority (useful, workarounds exist)
| Widget |
Why |
| multi-select |
Tag selection, category filters — current select is single-value |
| skeleton / loading |
Loading placeholders while data fetches |
| alert / banner |
Persistent messages, not ephemeral toasts |
| pagination |
Table pagination controls — table widget has no built-in paging |
| slider |
Range inputs, numeric filters |
Lower Priority (nice to have, less common)
| Widget |
Why |
| file-upload |
Forms that accept files |
| tree-view |
Hierarchical data display |
| color-picker |
Theming, design tool UIs |
Implementation Notes
Most high-priority widgets are straightforward — wrap the existing shadcn-svelte component with a Ripple widget interface (register in widget registry, define props schema, handle bind/events). The pattern is well-established from existing widgets like input, select, button.
Each widget should:
Can be tackled incrementally — one widget per PR, or batch the S-sized ones together.
Context
Ripple has 40+ widgets which cover most common patterns, but agents frequently try to generate UIs that need widgets we don't have yet. This causes silent failures or forces workarounds.
High Priority (agents need these often)
inputis single-line onlyMedium Priority (useful, workarounds exist)
selectis single-valueLower Priority (nice to have, less common)
Implementation Notes
Most high-priority widgets are straightforward — wrap the existing shadcn-svelte component with a Ripple widget interface (register in widget registry, define props schema, handle bind/events). The pattern is well-established from existing widgets like
input,select,button.Each widget should:
src/lib/widgets/index.tsbind,show,on_change/on_clickwhere appropriateCan be tackled incrementally — one widget per PR, or batch the S-sized ones together.