Ask for a meeting in plain words, then compare ranked times on everyone's timeline.
FreeWeb and MobileMotion
Preview
npx shadcn add @fetaui/meeting-finderPlayground
- 30 min
- Maya, Leo
- Next weekNov 2 to 6
- Mornings9 AM to 12 PM
Removable constraints
- 30 min
- Maya, Leo
- Next weekNov 2 to 6
- Mornings9 AM to 12 PM
Initials and long names
Empty prompt
Icons animation
Fail next action
Motion
Installation
Terminal· bash
npx shadcn add @fetaui/meeting-finder
Accessibility
- Timelines and avatars are decorative, because each suggestion says the same in words.
- Results are announced.
- Notes pair color with a check or a warning icon, so status is never color only.
- On Mobile the button reads Find but keeps the name Find times, and its tap area stays 44 px.
Motion
- The panel fades and rises 8 px in 400 ms on first render.
- Suggestions fade in over 240 ms with a 40 ms stagger.
- The proposed ring slides to the picked time in 240 ms, by transform only.
- Skeletons shimmer while searching and pause offscreen.
- With reduced motion, the panel only fades, the ring swaps at once and skeletons stay still.
Responsive behavior
- 600 px on Web and full width on Mobile.
- Mobile narrows the name column to 44 px and shortens the button to Find, 28 px tall with a 44 px hit area. The prompt wraps to two lines and ends with an ellipsis beyond that. Chip values and chips after the third are kept for screen readers only. Names, times and notes stay on one line and end with an ellipsis.
Performance
- No loop at rest. The skeleton shimmer runs only while searching, pauses offscreen and stays still with reduced motion.
- One proposed ring spans every lane and slides by transform, so picking a time never lays the timeline out again.
Note for AI
Give your coding assistant the Markdown reference instead of screenshots.
- Import
MeetingFinderfrom@/components/fetaui/meeting-finder. It composesButton,AvatarandBadge. - Give each person a
personorsrcfor the avatar, or it shows initials fromname. Give each constraint akind(duration,people,date,time) for its icon, and an optionalvalue. Passremovableto add remove buttons. onFindgets the prompt and constraints, and returns ranked suggestions. The demo returns fixed times after a timer, so connect your own calendar and model.- A rejected
onFindshowsfailedMessage, and an empty result showsemptyMessage. busy,startandendare decimal hours insidefromandto.onPickfires when someone picks a suggestion, but not for the first one, which is picked by default.
Related
Timezone PlannerProBlockFind a meeting time across zones. Each ring is one person's day.Slot PickerComponentBook a time by placing a block on a day. It snaps to 15 minutes and avoids busy time.Calendar ScheduleComponentA month with its events in the grid, and the picked day's agenda beside it.PromptProComponentTwo composers. AI Prompt is the lighter chat composer with commands, files and hints. Prompt Input is the agent composer, where the header names the mode: ask, responding, voice or actions.