Files
platform/src/workspaces/components/Workspace/AppPicker.tsx
T
2026-02-20 18:25:33 +00:00

27 lines
962 B
TypeScript

import type { AppRegistry } from './types';
type AppPickerProps = {
registry: AppRegistry;
onSelect: (appType: string) => void;
};
export const AppPicker = ({ registry, onSelect }: AppPickerProps) => {
const entries = Object.entries(registry).filter(([, entry]) => !entry.widget && entry.availableOnPanel !== false);
return (
<div className="flex flex-wrap gap-1.5 max-w-md">
{entries.map(([key, entry]) => (
<button
key={key}
type="button"
className="flex items-center gap-1.5 rounded-full border border-duck-teal/25 bg-background/80 backdrop-blur-sm px-3 py-1.5 text-duck-teal hover:border-duck-teal/40 hover:bg-background/90 transition-colors cursor-pointer"
onClick={() => onSelect(key)}
>
<entry.icon className="h-3.5 w-3.5 shrink-0" />
<span className="text-xs font-medium whitespace-nowrap">{entry.name}</span>
</button>
))}
</div>
);
};