Files
temetro/.agents/skills/ai-elements/references/model-selector.md
T
Khalid Abdi 929bec8f31 feat: AI-added records save with placeholders + "Added by AI" provenance
Stop blocking AI imports/proposals on missing non-critical fields. Records
the chat agent drafts now save with safe placeholders, auto-generated file
numbers, and a source="ai" marker that surfaces an "Added by AI" badge so a
clinician can review/edit them later.

Backend:
- add `source` (manual|ai) column to patients/appointments/prescriptions
  (migration 0014) + canonical types, services, validation schemas
- relax patient/appointment validation: empty file number allowed, demographic
  + type/provider/initials fall back to placeholders (initials derived from name)
- patients.generateFileNumber() auto-assigns an MRN when one is missing
- proposeAppointment accepts a name when no file number resolves; AI commits +
  /api/ai/import stamp source="ai"

Frontend:
- `source` on Appointment/Patient/Prescription types; AI commits send source="ai"
- reusable <AiBadge> shown on the Patients table/detail and prescriptions list

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 19:27:17 +03:00

4.3 KiB

Model Selector

A searchable command palette for selecting AI models in your chat interface.

The ModelSelector component provides a searchable command palette interface for selecting AI models. It's built on top of the cmdk library and provides a keyboard-navigable interface with search functionality.

See scripts/model-selector.tsx for this example.

Installation

npx ai-elements@latest add model-selector

Features

  • Searchable interface with keyboard navigation
  • Fuzzy search filtering across model names
  • Grouped model organization by provider
  • Keyboard shortcuts support
  • Empty state handling
  • Customizable styling with Tailwind CSS
  • Built on cmdk for excellent accessibility
  • TypeScript support with proper type definitions

Props

<ModelSelector />

Prop Type Default Description
...props React.ComponentProps<typeof Dialog> - Any other props are spread to the underlying Dialog component.

<ModelSelectorTrigger />

Prop Type Default Description
...props React.ComponentProps<typeof DialogTrigger> - Any other props are spread to the underlying DialogTrigger component.

<ModelSelectorContent />

Prop Type Default Description
title ReactNode - Accessible title for the dialog (rendered in sr-only).
...props React.ComponentProps<typeof DialogContent> - Any other props are spread to the underlying DialogContent component.

<ModelSelectorDialog />

Prop Type Default Description
...props React.ComponentProps<typeof CommandDialog> - Any other props are spread to the underlying CommandDialog component.

<ModelSelectorInput />

Prop Type Default Description
...props React.ComponentProps<typeof CommandInput> - Any other props are spread to the underlying CommandInput component.

<ModelSelectorList />

Prop Type Default Description
...props React.ComponentProps<typeof CommandList> - Any other props are spread to the underlying CommandList component.

<ModelSelectorEmpty />

Prop Type Default Description
...props React.ComponentProps<typeof CommandEmpty> - Any other props are spread to the underlying CommandEmpty component.

<ModelSelectorGroup />

Prop Type Default Description
...props React.ComponentProps<typeof CommandGroup> - Any other props are spread to the underlying CommandGroup component.

<ModelSelectorItem />

Prop Type Default Description
...props React.ComponentProps<typeof CommandItem> - Any other props are spread to the underlying CommandItem component.

<ModelSelectorShortcut />

Prop Type Default Description
...props React.ComponentProps<typeof CommandShortcut> - Any other props are spread to the underlying CommandShortcut component.

<ModelSelectorSeparator />

Prop Type Default Description
...props React.ComponentProps<typeof CommandSeparator> - Any other props are spread to the underlying CommandSeparator component.

<ModelSelectorLogo />

Prop Type Default Description
provider string Required The AI provider name. Supports major providers like
...props Omit<React.ComponentProps< - Any other props are spread to the underlying img element (except src and alt which are generated).

<ModelSelectorLogoGroup />

Prop Type Default Description
...props React.ComponentProps< - Any other props are spread to the underlying div element.

<ModelSelectorName />

Prop Type Default Description
...props React.ComponentProps< - Any other props are spread to the underlying span element.