import { Accordion, Group, Loader, Paper, Text } from '@mantine/core'; import { useState } from 'react'; import ReactMarkdown from 'react-markdown'; import rehypeRaw from 'rehype-raw'; import rehypeSanitize from 'rehype-sanitize'; import remarkGfm from 'remark-gfm'; import { HUGGINGFACE_BASE_URL } from '@/constants'; interface ModelCardProps { modelId: string; } export const ModelCard = ({ modelId }: ModelCardProps) => { const [readme, setReadme] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const loadReadme = async () => { if (readme !== null) { return; } setLoading(true); setError(null); try { const response = await fetch(`${HUGGINGFACE_BASE_URL}/${modelId}/raw/main/README.md`); if (!response.ok) { throw new Error('README not available'); } let text = await response.text(); const frontmatterRegex = /^---\n[\s\S]*?\n---\n/; text = text.replace(frontmatterRegex, ''); setReadme(text); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to load README'); } finally { setLoading(false); } }; return ( void loadReadme()}>Model Card {loading && ( )} {error && ( {error} )} {readme && ( ( ), img: ({ node: _, alt, ...props }) => ( {alt ), pre: ({ node: _, ...props }) => (
                  ),
                }}
              >
                {readme}
              
            
          )}
        
      
    
  );
};