capsule-ai-cli
Version:
The AI Model Orchestrator - Intelligent multi-model workflows with device-locked licensing
35 lines • 1.9 kB
JavaScript
import React from 'react';
import { Box, Text } from 'ink';
import SelectInput from 'ink-select-input';
import chalk from 'chalk';
import { getProviderColor, createProviderColoredItem } from '../utils/provider-colors.js';
export const ProviderSelector = ({ providers = [], currentProvider, onSelect, onClose }) => {
const providerColor = getProviderColor(currentProvider);
const items = providers.map(provider => ({
label: provider === currentProvider ? `${provider} ${chalk.green('(current)')}` : provider,
value: provider
}));
if (providers.length === 0) {
return (React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderColor: "yellow", paddingX: 1 },
React.createElement(Text, { color: "yellow" }, "No providers available. Configure API keys with /keys")));
}
const maxVisibleItems = 10;
const showingAllItems = items.length <= maxVisibleItems;
return (React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderColor: providerColor, paddingX: 1 },
React.createElement(Box, { marginBottom: 1 },
React.createElement(Text, { bold: true }, "Select an AI provider:")),
React.createElement(SelectInput, { items: items, limit: maxVisibleItems, onSelect: (item) => {
onSelect(item.value);
onClose();
}, itemComponent: createProviderColoredItem() }),
!showingAllItems && (React.createElement(Box, { marginTop: 1 },
React.createElement(Text, { dimColor: true },
"Showing ",
maxVisibleItems,
" of ",
items.length,
" providers"))),
React.createElement(Box, { marginTop: 1 },
React.createElement(Text, { dimColor: true }, "Press ESC to cancel"))));
};
//# sourceMappingURL=ProviderSelector.js.map