Introduces new API endpoints for AI chat and title generation, integrates an AI chat component into the layout, and updates client-side services to communicate with the new backend AI endpoints. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 9203795e-937a-4306-b81d-b4d5c78c240e Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 64961019-b4a5-48d8-97fc-c4980d29f3c4 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/7c94b7a0-29c7-4f2e-94ef-44b2153872b7/9203795e-937a-4306-b81d-b4d5c78c240e/fhRML7y Replit-Helium-Checkpoint-Created: true
64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
import React from 'react';
|
|
import {
|
|
Shield,
|
|
Hammer,
|
|
Building2,
|
|
BookOpen,
|
|
BarChart3,
|
|
Music,
|
|
ScrollText,
|
|
Waves,
|
|
DollarSign,
|
|
Brain,
|
|
Gamepad2,
|
|
FlaskConical,
|
|
User,
|
|
Send,
|
|
Trash2,
|
|
X,
|
|
MessageSquare,
|
|
ChevronDown,
|
|
Sparkles
|
|
} from 'lucide-react';
|
|
import type { PersonaIcon } from '@/lib/ai/types';
|
|
|
|
interface IconProps {
|
|
className?: string;
|
|
}
|
|
|
|
export const AethexLogo: React.FC<IconProps> = ({ className }) => (
|
|
<svg className={className} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M12 2L2 7L12 12L22 7L12 2Z" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
|
<path d="M2 17L12 22L22 17" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
|
<path d="M2 12L12 17L22 12" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
|
|
</svg>
|
|
);
|
|
|
|
export const getPersonaIcon = (iconName: PersonaIcon): React.FC<IconProps> => {
|
|
switch (iconName) {
|
|
case 'logo': return AethexLogo;
|
|
case 'shield': return Shield;
|
|
case 'hammer': return Hammer;
|
|
case 'building': return Building2;
|
|
case 'book': return BookOpen;
|
|
case 'chart': return BarChart3;
|
|
case 'music': return Music;
|
|
case 'scroll': return ScrollText;
|
|
case 'wave': return Waves;
|
|
case 'money': return DollarSign;
|
|
case 'brain': return Brain;
|
|
case 'gamepad': return Gamepad2;
|
|
case 'flask': return FlaskConical;
|
|
default: return AethexLogo;
|
|
}
|
|
};
|
|
|
|
export {
|
|
User as UserIcon,
|
|
Send as SendIcon,
|
|
Trash2 as TrashIcon,
|
|
X as CloseIcon,
|
|
MessageSquare as ChatIcon,
|
|
ChevronDown as ChevronDownIcon,
|
|
Sparkles as SparklesIcon
|
|
};
|