| 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 |
|
|