glam/frontend/src/components/layout/Layout.tsx
kempersc 505c12601a Add test script for PiCo extraction from Arabic waqf documents
- Implemented a new script `test_pico_arabic_waqf.py` to test the GLM annotator's ability to extract person observations from Arabic historical documents.
- The script includes environment variable handling for API token, structured prompts for the GLM API, and validation of extraction results.
- Added comprehensive logging for API responses, extraction results, and validation errors.
- Included a sample Arabic waqf text for testing purposes, following the PiCo ontology pattern.
2025-12-12 17:50:17 +01:00

61 lines
2 KiB
TypeScript

/**
* Root Layout Component
*
* © 2025 Netwerk Digitaal Erfgoed & TextPast. All rights reserved.
*/
import { Outlet, useLocation } from 'react-router-dom';
import { Navigation } from './Navigation';
import { useLanguage } from '../../contexts/LanguageContext';
import './Layout.css';
// Pages that handle their own footer (full-screen apps with sidebars)
const PAGES_WITH_CUSTOM_FOOTER = ['/map', '/visualize', '/query-builder', '/linkml', '/ontology', '/conversation'];
export function Layout() {
const currentYear = new Date().getFullYear();
const { t } = useLanguage();
const location = useLocation();
// Hide global footer on pages that have their own minimal footer
const showGlobalFooter = !PAGES_WITH_CUSTOM_FOOTER.includes(location.pathname);
return (
<div className="layout">
<Navigation />
<div className="layout-content" id="layout-content">
<div className="layout-main">
<Outlet />
</div>
{/* Footer - appears at the bottom of pages without custom footers */}
{showGlobalFooter && (
<footer className="layout-footer">
<div className="footer-content">
<div className="footer-copyright">
© {currentYear}{' '}
<a
href="https://netwerkdigitaalerfgoed.nl/"
target="_blank"
rel="noopener noreferrer"
className="footer-link"
>
Netwerk Digitaal Erfgoed
</a>
{' & '}
<a
href="https://www.textpast.com/"
target="_blank"
rel="noopener noreferrer"
className="footer-link"
>
TextPast
</a>
. {t('Alle rechten voorbehouden.', 'All rights reserved.')}
</div>
</div>
</footer>
)}
</div>
</div>
);
}