glam/frontend/src/vite-env.d.ts
kempersc 3a6ead8fde feat: Add legal form filtering rule for CustodianName
- Introduced LEGAL-FORM-FILTER rule to standardize CustodianName by removing legal form designations.
- Documented rationale, examples, and implementation guidelines for the filtering process.

docs: Create README for value standardization rules

- Established a comprehensive README outlining various value standardization rules applicable to Heritage Custodian classes.
- Categorized rules into Name Standardization, Geographic Standardization, Web Observation, and Schema Evolution.

feat: Implement transliteration standards for non-Latin scripts

- Added TRANSLIT-ISO rule to ensure GHCID abbreviations are generated from emic names using ISO standards for transliteration.
- Included detailed guidelines for various scripts and languages, along with implementation examples.

feat: Define XPath provenance rules for web observations

- Created XPATH-PROVENANCE rule mandating XPath pointers for claims extracted from web sources.
- Established a workflow for archiving websites and verifying claims against archived HTML.

chore: Update records lifecycle diagram

- Generated a new Mermaid diagram illustrating the records lifecycle for heritage custodians.
- Included phases for active records, inactive archives, and processed heritage collections with key relationships and classifications.
2025-12-09 16:58:41 +01:00

560 lines
20 KiB
TypeScript

/// <reference types="vite/client" />
// MUI Icons Material module declaration
// The package exports individual icon components but lacks a proper barrel index.d.ts
declare module '@mui/icons-material' {
import type { SvgIconComponent } from '@mui/icons-material/esm';
export const ExpandMore: SvgIconComponent;
export const CheckCircle: SvgIconComponent;
export const RadioButtonUnchecked: SvgIconComponent;
export const Schedule: SvgIconComponent;
export const Assignment: SvgIconComponent;
export const AccountTree: SvgIconComponent;
export const Timeline: SvgIconComponent;
export const Block: SvgIconComponent;
export const Link: SvgIconComponent;
}
// For default icon component type
declare module '@mui/icons-material/esm' {
import type { SvgIconProps } from '@mui/material/SvgIcon';
import type React from 'react';
export type SvgIconComponent = React.FC<SvgIconProps>;
}
// Module declarations for packages without type definitions
declare module 'lucide-react' {
import type { FC, SVGAttributes } from 'react';
interface LucideIconProps extends SVGAttributes<SVGElement> {
size?: number | string;
color?: string;
strokeWidth?: number | string;
absoluteStrokeWidth?: boolean;
}
type LucideIcon = FC<LucideIconProps>;
export const ChevronUp: LucideIcon;
export const ChevronDown: LucideIcon;
export const ChevronRight: LucideIcon;
export const ChevronLeft: LucideIcon;
export const X: LucideIcon;
export const Search: LucideIcon;
export const Filter: LucideIcon;
export const RefreshCw: LucideIcon;
export const Download: LucideIcon;
export const Upload: LucideIcon;
export const Settings: LucideIcon;
export const Info: LucideIcon;
export const AlertTriangle: LucideIcon;
export const AlertCircle: LucideIcon;
export const CheckCircle: LucideIcon;
export const XCircle: LucideIcon;
export const HelpCircle: LucideIcon;
export const Loader2: LucideIcon;
export const Send: LucideIcon;
export const MessageSquare: LucideIcon;
export const Bot: LucideIcon;
export const User: LucideIcon;
export const Copy: LucideIcon;
export const Check: LucideIcon;
export const Play: LucideIcon;
export const Pause: LucideIcon;
export const RotateCcw: LucideIcon;
export const ExternalLink: LucideIcon;
export const Sparkles: LucideIcon;
export const MapPin: LucideIcon;
export const Map: LucideIcon;
export const Layers: LucideIcon;
export const Globe: LucideIcon;
export const Building: LucideIcon;
export const Building2: LucideIcon;
export const Library: LucideIcon;
export const Archive: LucideIcon;
export const Landmark: LucideIcon;
export const Database: LucideIcon;
export const Network: LucideIcon;
export const Share2: LucideIcon;
export const ZoomIn: LucideIcon;
export const ZoomOut: LucideIcon;
export const Maximize: LucideIcon;
export const Maximize2: LucideIcon;
export const Minimize: LucideIcon;
export const Minimize2: LucideIcon;
export const Palette: LucideIcon;
export const Image: LucideIcon;
export const ImageIcon: LucideIcon;
export const FileText: LucideIcon;
export const Eye: LucideIcon;
export const EyeOff: LucideIcon;
export const Sun: LucideIcon;
export const Moon: LucideIcon;
export const Menu: LucideIcon;
export const ArrowRight: LucideIcon;
export const ArrowLeft: LucideIcon;
export const ArrowUp: LucideIcon;
export const ArrowDown: LucideIcon;
export const Plus: LucideIcon;
export const Minus: LucideIcon;
export const Trash2: LucideIcon;
export const Edit: LucideIcon;
export const Save: LucideIcon;
export const Clock: LucideIcon;
export const Calendar: LucideIcon;
export const Star: LucideIcon;
export const Heart: LucideIcon;
export const ThumbsUp: LucideIcon;
export const ThumbsDown: LucideIcon;
export const Flag: LucideIcon;
export const Bookmark: LucideIcon;
export const Tag: LucideIcon;
export const Hash: LucideIcon;
export const AtSign: LucideIcon;
export const Link2: LucideIcon;
export const Unlink: LucideIcon;
export const Lock: LucideIcon;
export const Unlock: LucideIcon;
export const Key: LucideIcon;
export const Shield: LucideIcon;
export const Bell: LucideIcon;
export const BellOff: LucideIcon;
export const Volume2: LucideIcon;
export const VolumeX: LucideIcon;
export const Mic: LucideIcon;
export const MicOff: LucideIcon;
export const Camera: LucideIcon;
export const Video: LucideIcon;
export const Printer: LucideIcon;
export const Mail: LucideIcon;
export const Phone: LucideIcon;
export const Home: LucideIcon;
export const List: LucideIcon;
export const Grid: LucideIcon;
export const LayoutGrid: LucideIcon;
export const LayoutList: LucideIcon;
export const Columns: LucideIcon;
export const Rows: LucideIcon;
export const SlidersHorizontal: LucideIcon;
export const History: LucideIcon;
export const Languages: LucideIcon;
export const BarChart3: LucideIcon;
export const BarChart: LucideIcon;
export const PieChart: LucideIcon;
export const LineChart: LucideIcon;
export const TrendingUp: LucideIcon;
export const TrendingDown: LucideIcon;
export const Activity: LucideIcon;
export const Zap: LucideIcon;
export const Terminal: LucideIcon;
export const Code: LucideIcon;
export const Code2: LucideIcon;
export const FileCode: LucideIcon;
export const Folder: LucideIcon;
export const FolderOpen: LucideIcon;
export const File: LucideIcon;
export const Files: LucideIcon;
export const MoreHorizontal: LucideIcon;
export const MoreVertical: LucideIcon;
export const Grip: LucideIcon;
export const GripVertical: LucideIcon;
export const Move: LucideIcon;
export const Crosshair: LucideIcon;
export const Target: LucideIcon;
export const Compass: LucideIcon;
export const Navigation: LucideIcon;
export const Focus: LucideIcon;
export const Scan: LucideIcon;
export const QrCode: LucideIcon;
export const Table2: LucideIcon;
export const Table: LucideIcon;
export const CreditCard: LucideIcon;
export const LayoutGrid: LucideIcon;
export const IdCard: LucideIcon;
}
declare module 'mermaid' {
interface MermaidConfig {
startOnLoad?: boolean;
theme?: string;
securityLevel?: string;
fontFamily?: string;
logLevel?: string;
flowchart?: Record<string, unknown>;
sequence?: Record<string, unknown>;
gantt?: Record<string, unknown>;
class?: Record<string, unknown>;
}
interface MermaidAPI {
initialize: (config: MermaidConfig) => void;
render: (id: string, text: string, svgContainingElement?: Element) => Promise<{ svg: string }>;
parse: (text: string) => Promise<boolean>;
}
const mermaid: MermaidAPI;
export default mermaid;
}
declare module 'maplibre-gl' {
export interface IControl {
onAdd(map: Map): HTMLElement;
onRemove(map: Map): void;
getDefaultPosition?: () => string;
}
export class Map {
constructor(options: MapOptions);
on(type: string, listener: (e: MapLayerMouseEvent) => void): this;
on(type: string, layerId: string, listener: (e: MapLayerMouseEvent) => void): this;
off(type: string, listener: (e: MapLayerMouseEvent) => void): this;
off(type: string, layerId: string, listener: (e: MapLayerMouseEvent) => void): this;
once(type: string, listener: () => void): this;
remove(): void;
getSource(id: string): GeoJSONSource | undefined;
getLayer(id: string): unknown;
addSource(id: string, source: unknown): this;
addLayer(layer: unknown, before?: string): this;
removeLayer(id: string): this;
removeSource(id: string): this;
moveLayer(id: string, beforeId?: string): this;
setFilter(layerId: string, filter: unknown): this;
setPaintProperty(layerId: string, property: string, value: unknown): this;
setLayoutProperty(layerId: string, property: string, value: unknown): this;
fitBounds(bounds: LngLatBoundsLike, options?: FitBoundsOptions): this;
flyTo(options: FlyToOptions): this;
getCenter(): LngLat;
getZoom(): number;
setCenter(center: LngLatLike): this;
setZoom(zoom: number): this;
resize(): this;
getBounds(): LngLatBounds;
getCanvas(): HTMLCanvasElement;
getContainer(): HTMLElement;
queryRenderedFeatures(point?: PointLike, options?: unknown): MapGeoJSONFeature[];
project(lngLat: LngLatLike): Point;
unproject(point: PointLike): LngLat;
loaded(): boolean;
isStyleLoaded(): boolean;
isMoving(): boolean;
isZooming(): boolean;
isRotating(): boolean;
triggerRepaint(): void;
easeTo(options: unknown): this;
jumpTo(options: unknown): this;
panTo(lngLat: LngLatLike, options?: unknown): this;
zoomTo(zoom: number, options?: unknown): this;
addControl(control: IControl | NavigationControl | ScaleControl, position?: string): this;
removeControl(control: IControl): this;
setStyle(style: StyleSpecification | string, options?: { diff?: boolean }): this;
getStyle(): StyleSpecification;
}
export interface MapGeoJSONFeature {
type: 'Feature';
geometry: GeoJSON.Geometry;
properties: Record<string, unknown>;
id?: string | number;
layer?: unknown;
source?: string;
sourceLayer?: string;
state?: Record<string, unknown>;
}
export class GeoJSONSource {
setData(data: GeoJSON.GeoJSON): this;
}
export class Popup {
constructor(options?: PopupOptions);
setLngLat(lngLat: LngLatLike): this;
setHTML(html: string): this;
setText(text: string): this;
addTo(map: Map): this;
remove(): this;
isOpen(): boolean;
}
export class Marker {
constructor(options?: MarkerOptions);
setLngLat(lngLat: LngLatLike): this;
addTo(map: Map): this;
remove(): this;
getElement(): HTMLElement;
setPopup(popup: Popup): this;
getPopup(): Popup;
}
export class NavigationControl {
constructor(options?: NavigationControlOptions);
}
export class ScaleControl {
constructor(options?: ScaleControlOptions);
}
export class LngLat {
constructor(lng: number, lat: number);
lng: number;
lat: number;
wrap(): LngLat;
toArray(): [number, number];
toString(): string;
distanceTo(lngLat: LngLat): number;
}
export class LngLatBounds {
constructor(sw?: LngLatLike, ne?: LngLatLike);
extend(obj: LngLatLike | LngLatBoundsLike): this;
getCenter(): LngLat;
getSouthWest(): LngLat;
getNorthEast(): LngLat;
getNorthWest(): LngLat;
getSouthEast(): LngLat;
getWest(): number;
getSouth(): number;
getEast(): number;
getNorth(): number;
toArray(): [[number, number], [number, number]];
toString(): string;
isEmpty(): boolean;
contains(lngLat: LngLatLike): boolean;
}
export class Point {
constructor(x: number, y: number);
x: number;
y: number;
}
export type LngLatLike = LngLat | [number, number] | { lng: number; lat: number } | { lon: number; lat: number };
export type LngLatBoundsLike = LngLatBounds | [LngLatLike, LngLatLike] | [number, number, number, number];
export type PointLike = Point | [number, number];
export interface MapOptions {
container: HTMLElement | string;
style: StyleSpecification | string;
center?: LngLatLike;
zoom?: number;
bearing?: number;
pitch?: number;
bounds?: LngLatBoundsLike;
fitBoundsOptions?: FitBoundsOptions;
attributionControl?: boolean;
customAttribution?: string | string[];
interactive?: boolean;
hash?: boolean | string;
maxBounds?: LngLatBoundsLike;
maxZoom?: number;
minZoom?: number;
maxPitch?: number;
minPitch?: number;
scrollZoom?: boolean;
boxZoom?: boolean;
dragRotate?: boolean;
dragPan?: boolean;
keyboard?: boolean;
doubleClickZoom?: boolean;
touchZoomRotate?: boolean;
touchPitch?: boolean;
cooperativeGestures?: boolean;
trackResize?: boolean;
locale?: Record<string, string>;
fadeDuration?: number;
crossSourceCollisions?: boolean;
collectResourceTiming?: boolean;
clickTolerance?: number;
preserveDrawingBuffer?: boolean;
antialias?: boolean;
refreshExpiredTiles?: boolean;
maxTileCacheSize?: number;
transformRequest?: (url: string, resourceType: string) => unknown;
localIdeographFontFamily?: string;
pitchWithRotate?: boolean;
pixelRatio?: number;
validateStyle?: boolean;
}
export interface StyleSpecification {
version: number;
name?: string;
metadata?: unknown;
center?: [number, number];
zoom?: number;
bearing?: number;
pitch?: number;
light?: unknown;
sources: Record<string, unknown>;
sprite?: string;
glyphs?: string;
layers: unknown[];
terrain?: unknown;
fog?: unknown;
transition?: unknown;
}
export interface PopupOptions {
closeButton?: boolean;
closeOnClick?: boolean;
closeOnMove?: boolean;
focusAfterOpen?: boolean;
anchor?: string;
offset?: number | PointLike | Record<string, PointLike>;
className?: string;
maxWidth?: string;
}
export interface MarkerOptions {
element?: HTMLElement;
anchor?: string;
offset?: PointLike;
color?: string;
scale?: number;
draggable?: boolean;
clickTolerance?: number;
rotation?: number;
rotationAlignment?: string;
pitchAlignment?: string;
}
export interface NavigationControlOptions {
showCompass?: boolean;
showZoom?: boolean;
visualizePitch?: boolean;
}
export interface ScaleControlOptions {
maxWidth?: number;
unit?: string;
}
export interface FitBoundsOptions {
padding?: number | { top?: number; bottom?: number; left?: number; right?: number };
offset?: PointLike;
maxZoom?: number;
maxDuration?: number;
linear?: boolean;
easing?: (t: number) => number;
essential?: boolean;
}
export interface FlyToOptions {
center?: LngLatLike;
zoom?: number;
bearing?: number;
pitch?: number;
duration?: number;
easing?: (t: number) => number;
offset?: PointLike;
animate?: boolean;
essential?: boolean;
padding?: number | { top?: number; bottom?: number; left?: number; right?: number };
}
export interface MapLayerMouseEvent {
type: string;
target: Map;
originalEvent: MouseEvent;
point: Point;
lngLat: LngLat;
preventDefault(): void;
defaultPrevented: boolean;
features?: MapGeoJSONFeature[];
}
}
declare module '@mui/material' {
export const Box: React.FC<Record<string, unknown>>;
export const Container: React.FC<Record<string, unknown>>;
export const Typography: React.FC<Record<string, unknown>>;
export const Paper: React.FC<Record<string, unknown>>;
export const Grid: React.FC<Record<string, unknown>>;
export const Card: React.FC<Record<string, unknown>>;
export const CardContent: React.FC<Record<string, unknown>>;
export const CardHeader: React.FC<Record<string, unknown>>;
export const CardActions: React.FC<Record<string, unknown>>;
export const Button: React.FC<Record<string, unknown>>;
export const IconButton: React.FC<Record<string, unknown>>;
export const TextField: React.FC<Record<string, unknown>>;
export const Select: React.FC<Record<string, unknown>>;
export const MenuItem: React.FC<Record<string, unknown>>;
export const FormControl: React.FC<Record<string, unknown>>;
export const FormLabel: React.FC<Record<string, unknown>>;
export const FormHelperText: React.FC<Record<string, unknown>>;
export const InputLabel: React.FC<Record<string, unknown>>;
export const Input: React.FC<Record<string, unknown>>;
export const Checkbox: React.FC<Record<string, unknown>>;
export const Radio: React.FC<Record<string, unknown>>;
export const RadioGroup: React.FC<Record<string, unknown>>;
export const Switch: React.FC<Record<string, unknown>>;
export const Slider: React.FC<Record<string, unknown>>;
export const Tabs: React.FC<Record<string, unknown>>;
export const Tab: React.FC<Record<string, unknown>>;
export const TabPanel: React.FC<Record<string, unknown>>;
export const AppBar: React.FC<Record<string, unknown>>;
export const Toolbar: React.FC<Record<string, unknown>>;
export const Drawer: React.FC<Record<string, unknown>>;
export const Dialog: React.FC<Record<string, unknown>>;
export const DialogTitle: React.FC<Record<string, unknown>>;
export const DialogContent: React.FC<Record<string, unknown>>;
export const DialogActions: React.FC<Record<string, unknown>>;
export const Modal: React.FC<Record<string, unknown>>;
export const Tooltip: React.FC<Record<string, unknown>>;
export const Popover: React.FC<Record<string, unknown>>;
export const Menu: React.FC<Record<string, unknown>>;
export const List: React.FC<Record<string, unknown>>;
export const ListItem: React.FC<Record<string, unknown>>;
export const ListItemText: React.FC<Record<string, unknown>>;
export const ListItemIcon: React.FC<Record<string, unknown>>;
export const ListItemButton: React.FC<Record<string, unknown>>;
export const Divider: React.FC<Record<string, unknown>>;
export const Avatar: React.FC<Record<string, unknown>>;
export const Badge: React.FC<Record<string, unknown>>;
export const Chip: React.FC<Record<string, unknown>>;
export const Alert: React.FC<Record<string, unknown>>;
export const AlertTitle: React.FC<Record<string, unknown>>;
export const Snackbar: React.FC<Record<string, unknown>>;
export const CircularProgress: React.FC<Record<string, unknown>>;
export const LinearProgress: React.FC<Record<string, unknown>>;
export const Skeleton: React.FC<Record<string, unknown>>;
export const Table: React.FC<Record<string, unknown>>;
export const TableBody: React.FC<Record<string, unknown>>;
export const TableCell: React.FC<Record<string, unknown>>;
export const TableContainer: React.FC<Record<string, unknown>>;
export const TableHead: React.FC<Record<string, unknown>>;
export const TableRow: React.FC<Record<string, unknown>>;
export const TablePagination: React.FC<Record<string, unknown>>;
export const TableSortLabel: React.FC<Record<string, unknown>>;
export const Accordion: React.FC<Record<string, unknown>>;
export const AccordionSummary: React.FC<Record<string, unknown>>;
export const AccordionDetails: React.FC<Record<string, unknown>>;
export const Breadcrumbs: React.FC<Record<string, unknown>>;
export const Link: React.FC<Record<string, unknown>>;
export const Pagination: React.FC<Record<string, unknown>>;
export const Rating: React.FC<Record<string, unknown>>;
export const Stepper: React.FC<Record<string, unknown>>;
export const Step: React.FC<Record<string, unknown>>;
export const StepLabel: React.FC<Record<string, unknown>>;
export const StepContent: React.FC<Record<string, unknown>>;
export const SpeedDial: React.FC<Record<string, unknown>>;
export const SpeedDialAction: React.FC<Record<string, unknown>>;
export const SpeedDialIcon: React.FC<Record<string, unknown>>;
export const ToggleButton: React.FC<Record<string, unknown>>;
export const ToggleButtonGroup: React.FC<Record<string, unknown>>;
export const Fab: React.FC<Record<string, unknown>>;
export const FormGroup: React.FC<Record<string, unknown>>;
export const FormControlLabel: React.FC<Record<string, unknown>>;
export const InputAdornment: React.FC<Record<string, unknown>>;
export const Autocomplete: React.FC<Record<string, unknown>>;
export const Stack: React.FC<Record<string, unknown>>;
export const Collapse: React.FC<Record<string, unknown>>;
export const Fade: React.FC<Record<string, unknown>>;
export const Grow: React.FC<Record<string, unknown>>;
export const Slide: React.FC<Record<string, unknown>>;
export const Zoom: React.FC<Record<string, unknown>>;
export const useTheme: () => unknown;
export const useMediaQuery: (query: string) => boolean;
export const createTheme: (options: unknown) => unknown;
export const ThemeProvider: React.FC<Record<string, unknown>>;
export const CssBaseline: React.FC;
export const GlobalStyles: React.FC<Record<string, unknown>>;
export const styled: (component: unknown, options?: unknown) => unknown;
}