Spaces:
Sleeping
Sleeping
| import React from 'react' | |
| import { Group, Title, Badge, Button, Text, Box } from '@mantine/core' | |
| import { IconRefresh } from '@tabler/icons-react' | |
| import { useXRD } from '../context/XRDContext' | |
| const Header = () => { | |
| const { filename, analysisStatus, handleReset } = useXRD() | |
| const getStatusBadge = () => { | |
| switch (analysisStatus) { | |
| case 'PROCESSING': | |
| return ( | |
| <Badge color="blue" variant="light" size="lg"> | |
| Analyzing... | |
| </Badge> | |
| ) | |
| case 'COMPLETE': | |
| return ( | |
| <Badge color="green" variant="light" size="lg"> | |
| Analysis Complete | |
| </Badge> | |
| ) | |
| default: | |
| return ( | |
| <Badge color="gray" variant="light" size="lg"> | |
| Ready | |
| </Badge> | |
| ) | |
| } | |
| } | |
| return ( | |
| <Box | |
| style={{ | |
| borderBottom: '1px solid #e9ecef', | |
| backgroundColor: 'white', | |
| padding: '1rem 2rem', | |
| }} | |
| > | |
| <Group justify="space-between" align="center"> | |
| {/* Left: Logo/App Name */} | |
| <Title | |
| order={2} | |
| style={{ | |
| fontWeight: 700, | |
| letterSpacing: '-0.02em', | |
| background: 'linear-gradient(135deg, #9775fa 0%, #1e88e5 100%)', | |
| WebkitBackgroundClip: 'text', | |
| WebkitTextFillColor: 'transparent', | |
| backgroundClip: 'text' | |
| }} | |
| > | |
| Open AlphaDiffract Demo | |
| </Title> | |
| {/* Center: Filename and Status */} | |
| <Group gap="md"> | |
| <Text size="sm" c="dimmed" style={{ fontFamily: 'monospace' }}> | |
| {filename || 'No File Loaded'} | |
| </Text> | |
| {getStatusBadge()} | |
| </Group> | |
| {/* Right: Action Toolbar */} | |
| <Group gap="sm"> | |
| <Button | |
| variant="subtle" | |
| leftSection={<IconRefresh size={16} />} | |
| size="sm" | |
| onClick={handleReset} | |
| > | |
| Reset | |
| </Button> | |
| </Group> | |
| </Group> | |
| </Box> | |
| ) | |
| } | |
| export default Header | |