4-page layout (Home, Recipes, Settings, Doctor) with sidebar nav and integrated Chat panel powered by OpenClaw agent (--local). - Home: status, agents overview, recommended recipes, recent activity - Recipes: browse, preview diff, apply with params - Settings: model profiles CRUD, chat model selection, provider catalog - Doctor: diagnostics with auto-fix - Chat: OpenClaw agent integration with session persistence, agent selector, read-only advisory context injection - Progressive data loading to avoid UI blocking - API key resolution from OpenClaw agent auth-profiles - Model catalog from openclaw CLI with cache Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
20 lines
560 B
TypeScript
20 lines
560 B
TypeScript
import type { Recipe } from "../lib/types";
|
|
|
|
export function RecipeCard({ recipe, onInstall }: { recipe: Recipe; onInstall: (id: string) => void }) {
|
|
return (
|
|
<article className="recipe-card">
|
|
<h3>{recipe.name}</h3>
|
|
<p>{recipe.description}</p>
|
|
<div className="meta">
|
|
{recipe.tags.map((t) => (
|
|
<span key={t} className="tag">
|
|
{t}
|
|
</span>
|
|
))}
|
|
</div>
|
|
<p>Impact: {recipe.impactCategory}</p>
|
|
<button onClick={() => onInstall(recipe.id)}>Install</button>
|
|
</article>
|
|
);
|
|
}
|