Skip to main content
Glama
ThemeTest.jsx10.1 kB
import React from 'react'; import { Box, Button, Card, CardBody, CardHeader, Text, Badge, VStack, HStack, Heading, Input, Table, Tbody, Td, Th, Thead, Tr, useColorMode, useColorModeValue, Grid, GridItem, } from '@chakra-ui/react'; import { statusColors, priorityColors, themeColors } from './colors'; /** * Theme Test Component * * This component provides a visual test of the custom Chakra UI theme. * Use this during development to verify theme colors, components, and responsive behavior. * * Usage: * import ThemeTest from '../theme/ThemeTest'; * * function App() { * return ( * <div> * <ThemeTest /> * </div> * ); * } */ const ThemeTest = () => { const { colorMode, toggleColorMode } = useColorMode(); const bgColor = useColorModeValue('gray.50', 'bg.canvas'); const textColor = useColorModeValue('gray.800', 'text.default'); return ( <Box bg={bgColor} color={textColor} p={6} minH="100vh"> <VStack spacing={8} align="stretch" maxW="1200px" mx="auto"> {/* Header */} <Box> <Heading size="xl" mb={4}>Chakra UI Theme Test</Heading> <HStack> <Button onClick={toggleColorMode}> Toggle {colorMode === 'light' ? 'Dark' : 'Light'} Mode </Button> <Text>Current mode: {colorMode}</Text> </HStack> </Box> {/* Color Palette */} <Card> <CardHeader> <Heading size="lg">Color Palette</Heading> </CardHeader> <CardBody> <VStack spacing={4} align="stretch"> {/* Brand Colors */} <Box> <Heading size="md" mb={3}>Brand Colors</Heading> <HStack spacing={4} flexWrap="wrap"> {Object.entries(themeColors).map(([name, color]) => ( <VStack key={name} spacing={2}> <Box w="60px" h="60px" bg={color} borderRadius="md" border="1px solid" borderColor="border.default" /> <Text fontSize="sm" textAlign="center"> {name}<br/> <Text as="span" fontSize="xs" color="text.muted"> {color} </Text> </Text> </VStack> ))} </HStack> </Box> {/* Status Colors */} <Box> <Heading size="md" mb={3}>Status Colors</Heading> <HStack spacing={4} flexWrap="wrap"> {Object.entries(statusColors).map(([status, color]) => ( <VStack key={status} spacing={2}> <Box w="60px" h="60px" bg={color} borderRadius="md" border="1px solid" borderColor="border.default" /> <Text fontSize="sm" textAlign="center"> {status}<br/> <Text as="span" fontSize="xs" color="text.muted"> {color} </Text> </Text> </VStack> ))} </HStack> </Box> {/* Priority Colors */} <Box> <Heading size="md" mb={3}>Priority Colors</Heading> <HStack spacing={4} flexWrap="wrap"> {Object.entries(priorityColors).map(([priority, color]) => ( <VStack key={priority} spacing={2}> <Box w="60px" h="60px" bg={color} borderRadius="md" border="1px solid" borderColor="border.default" /> <Text fontSize="sm" textAlign="center"> {priority}<br/> <Text as="span" fontSize="xs" color="text.muted"> {color} </Text> </Text> </VStack> ))} </HStack> </Box> </VStack> </CardBody> </Card> {/* Component Tests */} <Card> <CardHeader> <Heading size="lg">Component Tests</Heading> </CardHeader> <CardBody> <Grid templateColumns={{ base: '1fr', md: 'repeat(2, 1fr)' }} gap={6}> {/* Buttons */} <GridItem> <Heading size="md" mb={3}>Buttons</Heading> <VStack spacing={3} align="stretch"> <HStack spacing={3}> <Button colorScheme="brand" size="sm">Small</Button> <Button colorScheme="brand" size="md">Medium</Button> <Button colorScheme="brand" size="lg">Large</Button> </HStack> <HStack spacing={3}> <Button variant="solid">Solid</Button> <Button variant="outline">Outline</Button> <Button variant="ghost">Ghost</Button> </HStack> </VStack> </GridItem> {/* Badges */} <GridItem> <Heading size="md" mb={3}>Badges</Heading> <VStack spacing={3} align="start"> <HStack spacing={3}> <Badge variant="solid">Solid</Badge> <Badge variant="outline">Outline</Badge> <Badge variant="subtle">Subtle</Badge> </HStack> <HStack spacing={3}> {Object.keys(statusColors).map(status => ( <Badge key={status} bg={statusColors[status]} color="white"> {status} </Badge> ))} </HStack> </VStack> </GridItem> {/* Form Elements */} <GridItem> <Heading size="md" mb={3}>Form Elements</Heading> <VStack spacing={3} align="stretch"> <Input placeholder="Text input" /> <Input placeholder="Focused input" variant="outline" /> <Input placeholder="Disabled input" isDisabled /> </VStack> </GridItem> {/* Text Variants */} <GridItem> <Heading size="md" mb={3}>Text Variants</Heading> <VStack spacing={2} align="start"> <Text color="text.default">Default text</Text> <Text color="text.muted">Muted text</Text> <Text color="text.subtle">Subtle text</Text> <Text color="text.accent">Accent text</Text> </VStack> </GridItem> </Grid> </CardBody> </Card> {/* Table Test */} <Card> <CardHeader> <Heading size="lg">Table Component</Heading> </CardHeader> <CardBody> <Table variant="simple" size="sm"> <Thead> <Tr> <Th>Task</Th> <Th>Status</Th> <Th>Priority</Th> <Th>Progress</Th> </Tr> </Thead> <Tbody> <Tr> <Td>Setup Theme</Td> <Td><Badge bg={statusColors.completed} color="white">completed</Badge></Td> <Td><Badge bg={priorityColors.high} color="white">high</Badge></Td> <Td>100%</Td> </Tr> <Tr> <Td>Test Components</Td> <Td><Badge bg={statusColors.in_progress} color="white">in_progress</Badge></Td> <Td><Badge bg={priorityColors.medium} color="white">medium</Badge></Td> <Td>75%</Td> </Tr> <Tr> <Td>Deploy</Td> <Td><Badge bg={statusColors.pending} color="white">pending</Badge></Td> <Td><Badge bg={priorityColors.low} color="white">low</Badge></Td> <Td>0%</Td> </Tr> </Tbody> </Table> </CardBody> </Card> {/* Background Tests */} <Card> <CardHeader> <Heading size="lg">Background Tests</Heading> </CardHeader> <CardBody> <Grid templateColumns="repeat(auto-fit, minmax(200px, 1fr))" gap={4}> <Box bg="bg.canvas" p={4} borderRadius="md" border="1px solid" borderColor="border.default"> <Text>bg.canvas</Text> </Box> <Box bg="bg.surface" p={4} borderRadius="md" border="1px solid" borderColor="border.default"> <Text>bg.surface</Text> </Box> <Box bg="bg.subtle" p={4} borderRadius="md" border="1px solid" borderColor="border.default"> <Text>bg.subtle</Text> </Box> <Box bg="bg.muted" p={4} borderRadius="md" border="1px solid" borderColor="border.default"> <Text>bg.muted</Text> </Box> </Grid> </CardBody> </Card> {/* Footer */} <Box textAlign="center" py={4}> <Text color="text.muted" fontSize="sm"> Theme test completed. All components should render with consistent styling. </Text> </Box> </VStack> </Box> ); }; export default ThemeTest;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cjo4m06/mcp-shrimp-task-manager'

If you have feedback or need assistance with the MCP directory API, please join our Discord server