/** * Examples Page Component * * Displays the examples gallery */ import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { ExamplesGallery } from '../components/examples/ExamplesGallery'; import { AppHeader } from '../components/layout/AppHeader'; import { useLocalizedHref } from '../i18n/useLocalizedNavigate'; import { useSEO } from '../utils/useSEO'; import { getSeoMeta } from '../seoRoutes'; import { loadExample, type LibraryInstallProgress } from '../utils/loadExample'; import type { ExampleProject } from '../data/examples'; export const ExamplesPage: React.FC = () => { const { t } = useTranslation(); const localize = useLocalizedHref(); useSEO(getSeoMeta('/examples')!); const navigate = useNavigate(); const [installing, setInstalling] = useState(null); const handleLoadExample = async (example: ExampleProject) => { await loadExample(example, setInstalling); navigate(localize('/editor')); }; return (
{/* Library install overlay */} {installing && (
{t('examples.installing', { done: installing.done + 1, total: installing.total, })}
{installing.current}
)}
); };