mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-01 08:13:37 +00:00
- Extract board-view into organized subfolders following new pattern: - components/: kanban-card, kanban-column - dialogs/: all dialog and modal components (8 files) - hooks/: all board-specific hooks (10 files) - shared/: reusable components between dialogs (model-selector, etc.) - Rename all files to kebab-case convention - Add barrel exports (index.ts) for clean imports - Add docs/folder-pattern.md documenting the folder structure - Reduce board-view.tsx from ~3600 lines to ~490 lines 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
38 lines
983 B
TypeScript
38 lines
983 B
TypeScript
import { clsx, type ClassValue } from "clsx"
|
|
import { twMerge } from "tailwind-merge"
|
|
import type { AgentModel } from "@/store/app-store"
|
|
|
|
export function cn(...inputs: ClassValue[]) {
|
|
return twMerge(clsx(inputs))
|
|
}
|
|
|
|
/**
|
|
* Determine if the current model supports extended thinking controls
|
|
*/
|
|
export function modelSupportsThinking(model?: AgentModel | string): boolean {
|
|
// All Claude models support thinking
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Get display name for a model
|
|
*/
|
|
export function getModelDisplayName(model: AgentModel | string): string {
|
|
const displayNames: Record<string, string> = {
|
|
haiku: "Claude Haiku",
|
|
sonnet: "Claude Sonnet",
|
|
opus: "Claude Opus",
|
|
};
|
|
return displayNames[model] || model;
|
|
}
|
|
|
|
/**
|
|
* Truncate a description string with ellipsis
|
|
*/
|
|
export function truncateDescription(description: string, maxLength = 50): string {
|
|
if (description.length <= maxLength) {
|
|
return description;
|
|
}
|
|
return `${description.slice(0, maxLength)}...`;
|
|
}
|