ProviderPicker

Provider and model selection compound component.

import { ProviderPicker } from "@arlopass/react-ui";

Parts

Name Element Purpose
ProviderPicker.Root div Manages provider/model selection state. Reads from useProviders when uncontrolled.
ProviderPicker.ProviderSelect select Dropdown for choosing an AI provider.
ProviderPicker.ModelSelect select Dropdown for choosing a model from the selected provider.
ProviderPicker.SubmitButton button Confirms the selected provider/model pair.

Uncontrolled usage

Inside a <ArlopassProvider>, ProviderPicker.Root automatically reads from useProviders. No props needed.

import { ArlopassProvider } from "@arlopass/react";
import { ProviderPicker } from "@arlopass/react-ui";

function Picker() {
  return (
    <ArlopassProvider>
      <ProviderPicker.Root>
        <ProviderPicker.ProviderSelect />
        <ProviderPicker.ModelSelect />
        <ProviderPicker.SubmitButton>Connect</ProviderPicker.SubmitButton>
      </ProviderPicker.Root>
    </ArlopassProvider>
  );
}

Controlled usage

Pass props to take full control over the provider list and selection callbacks.

import { useProviders } from "@arlopass/react";
import { ProviderPicker } from "@arlopass/react-ui";

function ControlledPicker() {
  const { providers, selectedProvider, selectProvider, isLoading, error } =
    useProviders();

return (
    <ProviderPicker.Root
      providers={providers}
      selectedProvider={selectedProvider}
      isLoading={isLoading}
      error={error}
      onProviderChange={(id) => console.log("provider:", id)}
      onModelChange={(id) => console.log("model:", id)}
      onSelect={(providerId, modelId) =>
        selectProvider({ providerId, modelId })
      }
    >
      <ProviderPicker.ProviderSelect />
      <ProviderPicker.ModelSelect />
      <ProviderPicker.SubmitButton>Select</ProviderPicker.SubmitButton>
    </ProviderPicker.Root>
  );
}

ProviderPicker.Root — controlled props

Prop Type Default Description
providers readonly ProviderDescriptor[] — List of available providers and their models.
selectedProvider ` { providerId: string; modelId: string } null` —
isLoading boolean — True while fetching providers or selecting.
error `ArlopassSDKError null` —
onProviderChange (providerId: string) => void — Called when the user selects a different provider.
onModelChange (modelId: string) => void — Called when the user selects a different model.
onSelect (providerId: string, modelId: string) => void — Called when the user confirms the selection.

Data attributes

Prop Type Default Description
data-state ` "ready" "loading" "error"`