@chakra-ui/react#Box TypeScript Examples
The following examples show how to use
@chakra-ui/react#Box.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Pool2Row.tsx From rari-dApp with GNU Affero General Public License v3.0 | 7 votes |
Pool2Row = ({
apr,
earned,
balance,
}: {
apr: any;
earned: any;
balance: any;
}) => {
const { t } = useTranslation();
return (
<motion.tr
initial={{ opacity: 0, y: -40 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: 40 }}
>
<Td>
<SimpleTooltip label={t("Pool2")} placement="right">
<Box width="30px">
<Pool2LogoPNGWhite boxSize="25px" />
</Box>
</SimpleTooltip>
</Td>
<Td textAlign="right">{t("RGT-ETH")}</Td>
<Td textAlign="right">
{balance?.SLP?.toFixed(2)} {t("RGT-ETH")}
</Td>
{/* Todo (sharad) - implement RGT earned in poolInfo */}
<Td textAlign="right">
{earned?.toFixed(2)} {t("RGT")}
</Td>
<Td textAlign="right">{t("N/A")}</Td>
</motion.tr>
);
}
Example #2
Source File: DropZone.tsx From bluebubbles-server with Apache License 2.0 | 6 votes |
DropZone = ({ text, isDragging = false, isLoaded = false, loadedText = null }: DropZoneProps): JSX.Element => {
const dragColor = getColor(isLoaded, isDragging);
const dragFontSize = isDragging ? 'lg' : 'md';
const dragIconSize = isDragging ? 36 : 28;
return (
<Box
borderRadius='3xl'
borderWidth='1px'
minHeight='100px'
border='dashed'
borderColor={dragColor}
pl={5}
pr={5}
>
<Center height='100%'>
<Flex flexDirection="row" justifyContent="center" alignItems='center'>
<Box transition='all 2s ease'>
{/* The key is required for the color to change */}
<RiDragDropLine key={dragColor} size={dragIconSize} color={dragColor} />
</Box>
<Text
ml={3}
color={dragColor}
transition='all .2s ease'
fontSize={dragFontSize}
textAlign='center'
>
{isLoaded && !isDragging ? loadedText : text}
</Text>
</Flex>
</Center>
</Box>
);
}
Example #3
Source File: Banner.tsx From fresh-coupons with GNU General Public License v3.0 | 6 votes |
function Banner(props: GradientBannerProps) {
const {actionButton, bannerContent, bgColor, ...rest} = props
const [isHidden, setIsHidden] = useState(false)
return (
<Box display={isHidden ? 'none' : 'block'} pos="fixed" bottom="0" left="0" width="full" as="section" {...rest}>
<Box
zIndex="9999"
bg={bgColor || 'blue.600'}
color="white"
py="5"
px={{base: '3', md: '6', lg: '8'}}
>
<HStack spacing="3">
<Stack
direction={{base: 'column', sm: 'row'}}
justifyContent="center"
alignItems="center"
spacing={{base: '3', md: '6'}}
width="full"
>
<Text fontSize="3xl">
<b>FC: </b>
{bannerContent}
</Text>
{actionButton}
</Stack>
<CloseButton onClick={() => setIsHidden(true)} alignSelf={{base: 'self-start', sm: 'initial'}}
aria-label="Close banner"/>
</HStack>
</Box>
</Box>
)
}
Example #4
Source File: index.tsx From notebook with MIT License | 6 votes |
ReactDOM.render( <React.StrictMode> <ColorModeScript /> <Router> <Box maxW="1050px" mx="auto"> <App /> </Box> </Router> </React.StrictMode>, document.getElementById("root") );
Example #5
Source File: Timeline.tsx From portfolio with MIT License | 6 votes |
TimelineItem: React.FC<TimelineItemProps> = ({
icon = FiCheckCircle,
boxProps = {},
skipTrail = false,
children,
...props
}) => {
const color = useColorModeValue("gray.700", "gray.500");
return (
<Flex minH={20} {...props}>
<Flex flexDir="column" alignItems="center" mr={4} pos="relative">
<Circle
size={12}
bg={useColorModeValue("gray.600", "gray.500")}
opacity={useColorModeValue(0.07, 0.15)}
sx={{}}
/>
<Box
as={icon}
size="1.25rem"
color={color}
pos="absolute"
left="0.875rem"
top="0.875rem"
/>
{!skipTrail && <Box w="1px" flex={1} bg={color} my={1} />}
</Flex>
<Box pt={3} {...boxProps}>
{children}
</Box>
</Flex>
);
}
Example #6
Source File: ErrorPage.tsx From rari-dApp with GNU Affero General Public License v3.0 | 6 votes |
ErrorPage: React.FC<FallbackProps> = ({ error }) => {
const { t } = useTranslation();
return (
<Box color="white">
<Box bg="red.600" width="100%" p={4}>
<Heading>{t("Whoops! Looks like something went wrong!")}</Heading>
<Text>
{t(
"You can either reload the page, or report this error to us on our"
)}{" "}
<Link isExternal href="https://github.com/Rari-Capital/rari-dApp">
<u>GitHub</u>
<ExternalLinkIcon mx="2px" />
</Link>
</Text>
</Box>
<Code colorScheme="red">{error.toString()}</Code>
</Box>
);
}
Example #7
Source File: AsyncReadOnlyWidget.tsx From ke with MIT License | 6 votes |
AsyncReadOnlyWidget = (props: WidgetProps): JSX.Element => {
const { mainDetailObject, containerStore, style, helpText, name, provider, displayValue, cacheTime } = props
const [content, setContent] = useState<string>('')
const context = containerStore.getState()
const { dataResourceUrl, widgetDescription } = useWidgetInitialization({ ...props, context })
const effectiveCacheTime = getAccessor(cacheTime, mainDetailObject, context)
useEffect(() => {
provider
.getObject(dataResourceUrl, effectiveCacheTime)
.then((responseData: any) => setContent(getWidgetContent(name, responseData, displayValue, context) || ''))
}, [provider, dataResourceUrl, context, displayValue, name, effectiveCacheTime])
const { getDataTestId } = useCreateTestId()
return (
<WidgetWrapper
name={name}
style={style}
helpText={helpText}
description={widgetDescription}
{...getDataTestId(props)}
>
<Box borderWidth="1px" borderRadius="3px" borderColor="#cbd5e0" padding="5.4px" whiteSpace="pre-line">
{content || '\u00a0'}
</Box>
</WidgetWrapper>
)
}
Example #8
Source File: index.tsx From engine with MIT License | 6 votes |
Guards = () => (
<AccordionItem>
<h2>
<AccordionButton _expanded={{ bg: "gray.300", color: "white" }}>
<Box flex="1" textAlign="left">
Guards (100% test coverage)
</Box>
<AccordionIcon />
</AccordionButton>
</h2>
<AccordionPanel pb={4}>
<CodeEditor
value={`if (!foo || bamSomething !== undefined) {
return
}
if (!operation) {
throw new Error('Operation not provided or invalid.')
}`}
language="typescript"
placeholder="loading code.."
padding={15}
style={{
fontSize: 12,
backgroundColor: "#f5f5f5",
fontFamily:
"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",
}}
/>
</AccordionPanel>
</AccordionItem>
)
Example #9
Source File: ReceiptItemDope.tsx From dope-monorepo with GNU General Public License v3.0 | 6 votes |
ReceiptItemDope = (
{dopeId, hideUnderline}:
{dopeId: string, hideUnderline?: boolean}
) => {
return(
<ReceiptItem hideUnderline={hideUnderline}>
<DopeLofi>
• • • • • • • • •
</DopeLofi>
<Box flex="1">DOPE NFT #{dopeId}</Box>
<Box>
<Image
src="/images/icon/ethereum.svg"
width="16px"
alt="This asset lives on Ethereum Mainnet"
/>
</Box>
</ReceiptItem>
);
}
Example #10
Source File: PermissionRequirements.tsx From bluebubbles-server with Apache License 2.0 | 5 votes |
PermissionRequirements = (): JSX.Element => {
const permissions: Array<RequirementsItem> = (useAppSelector(state => state.config.permissions) ?? []);
const [showProgress, setShowProgress] = useBoolean();
const refreshRequirements = () => {
setShowProgress.on();
checkPermissions().then(permissions => {
// I like longer spinning
setTimeout(() => {
setShowProgress.off();
}, 1000);
if (!permissions) return;
store.dispatch(setConfig({ name: 'permissions', value: permissions }));
});
};
return (
<Box border='1px solid' borderColor={useColorModeValue('gray.200', 'gray.700')} borderRadius='xl' p={3} width='325px'>
<Stack direction='row' align='center'>
<Text fontSize='lg' fontWeight='bold'>macOS Permissions</Text>
<Box
_hover={{ cursor: 'pointer' }}
animation={showProgress ? `${spin} infinite 1s linear` : undefined}
onClick={refreshRequirements}
>
<BiRefresh />
</Box>
</Stack>
<UnorderedList mt={2} ml={8}>
{permissions.map(e => (
<ListItem key={e.name}>
<Stack direction='row' align='center'>
<Text fontSize='md'><strong>{e.name}</strong>:
<Box as='span' color={e.pass ? 'green' : 'red'}>{e.pass ? 'Pass' : 'Fail'}</Box>
</Text>
{(e.pass) ? (
<Popover trigger='hover'>
<PopoverTrigger>
<Box ml={2} _hover={{ color: 'brand.primary', cursor: 'pointer' }}>
<AiOutlineInfoCircle />
</Box>
</PopoverTrigger>
<PopoverContent>
<PopoverArrow />
<PopoverCloseButton />
<PopoverHeader>How to Fix</PopoverHeader>
<PopoverBody>
<Text>
{e.solution}
</Text>
</PopoverBody>
</PopoverContent>
</Popover>
): null}
</Stack>
</ListItem>
))}
</UnorderedList>
</Box>
);
}
Example #11
Source File: ContextMenuTrigger.tsx From wiregui with MIT License | 5 votes |
ContextMenuTrigger: React.FC<Props> = ({
children,
menuId,
passData,
onTrigger = () => {
return;
},
}) => {
const [, setContextMenusState] = useRecoilState(contextMenusAtom);
// when the trigger is right clicked,
// we want to add a menu in our context or update it if it already exists
return (
<Box
onContextMenu={(event: MouseEvent) => {
// dont show the browser menu
event.preventDefault();
// run an optional action on trigger
onTrigger();
// update the position where the ContextMenuList should be shown
setContextMenusState((oldState) => ({
...oldState,
// set the passthrough data
passData,
// update the mouse position
position: {
x: event.clientX,
y: event.clientY,
},
// update which menu should be showing
menus: oldState.menus.find((m) => m.id === menuId)
? // open the menu if it exists and close all others
oldState.menus.map((m) => {
if (m.id === menuId) {
return {
...m,
isOpen: true,
};
}
return {
...m,
isOpen: false,
};
})
: // create the menu if it doesnt exist and close all others
[
{
id: menuId,
isOpen: true,
},
...oldState.menus.map((m) => {
return {
...m,
isOpen: false,
};
}),
],
}));
}}
>
{children}
</Box>
);
}
Example #12
Source File: meet.tsx From video-chat with MIT License | 5 votes |
export default function Meet(){
const navigate = useNavigate()
const myVideoRef = useRef<any>()
const otherUserRef = useRef<any>()
const socketRef = useRef<Socket>()
const { currentCall, userId } = useStore()
const handleHangUp = () => {
currentCall.reset()
socketRef.current?.emit("hang-up", { to: currentCall.userId, from: userId })
socketRef.current?.disconnect()
navigate('/')
}
useEffect(() => {
if (!otherUserRef.current || !myVideoRef.current) return
otherUserRef.current.srcObject = currentCall.stream
myVideoRef.current.srcObject = currentCall.myStream
}, [currentCall])
useEffect(() => {
socketRef.current = io("http://localhost:8000");
socketRef.current.on("hanging-up", (data) => {
if(data.from === currentCall.userId){
currentCall.reset()
navigate('/')
}
})
return () => handleHangUp()
}, [])
return(
<Page>
<Box
as="video"
playsInline
muted
ref={myVideoRef}
autoPlay
maxW="300px"
minW="150px"
borderRadius="16px"
m="4"
/>
<Box
as="video"
playsInline
muted
ref={otherUserRef}
autoPlay
maxW="300px"
minW="150px"
borderRadius="16px"
m="4"
/>
<Box as="span" border="1px solid red" p="4" borderRadius="rounded">
<ImPhoneHangUp color="red" fontSize="32px" onClick={handleHangUp} cursor="pointer" />
</Box>
</Page>
)
}
Example #13
Source File: AllCoupons.tsx From fresh-coupons with GNU General Public License v3.0 | 5 votes |
function AllCoupons() {
const {isOpen, onOpen, onClose} = useDisclosure()
const btnRef = React.useRef<HTMLButtonElement>(null)
const courses = useCourses()
return (
<>
<Button ref={btnRef} colorScheme="teal" onClick={onOpen}>
Open
</Button>
<Drawer
isOpen={isOpen}
placement="right"
onClose={onClose}
size={"4xl"}
finalFocusRef={btnRef}
>
<DrawerOverlay/>
<DrawerContent>
<DrawerCloseButton/>
<DrawerBody>
<Box my={9}>
<Center>
<Heading my={3} className={"course-list-title"} textAlign="center">Premium courses with
discount</Heading>
</Center>
<Stack spacing="10" py="5">
{Object.entries(courses.coursesWithCoupon)
.sort(([_, course]) => course.courseDetails.language === 'English' ? -1 : 1)
.map(([url, course]) => (
<CourseCard key={url} course={course}/>
))}
</Stack>
</Box>
<Box>
<Center>
<Heading my={3} className={"course-list-title"} textAlign="center">More free courses</Heading>
</Center>
<Stack spacing="10" py="5">
{Object.entries(courses.freeCourses).map(([url, course]) => (
<CourseCard key={url} course={course}/>
))}
</Stack>
</Box>
</DrawerBody>
</DrawerContent>
</Drawer>
</>
)
}
Example #14
Source File: App.tsx From notebook with MIT License | 5 votes |
App: React.FC<AppComponentProps> = ({ history }) => {
const [notes, setNotes] = React.useState<note[]>([]);
React.useEffect(() => {
const dummyNotes = [
{
id: "Odork5n5jPVd0wvm0w_dY",
title: "Hey ?",
body:
"I'm dummy note here. Try to update me. Click me to see my remaining part. You can also delete me ?. But I'll be here again by reopening the app link ?. "
}
];
setNotes(dummyNotes);
}, []);
const handleNoteCreate = (note: note) => {
const newNotesState: note[] = [...notes];
newNotesState.push(note);
setNotes(newNotesState);
if (history.location.pathname !== "/") history.push("/");
};
return (
<ChakraProvider theme={theme}>
<Box textAlign="center" fontSize="xl" p={5}>
<TopNav handleNoteCreate={handleNoteCreate} />
<Switch>
<Route exact path="/projects" component={RepositoriesList} />
<Route
exact
path="/"
component={() => <HomePage notes={notes} setNotes={setNotes} />}
/>
<Redirect to="/" />
</Switch>
<PageFooter />
</Box>
</ChakraProvider>
);
}
Example #15
Source File: about.tsx From portfolio with MIT License | 5 votes |
Card = (props: CardProps) => {
const { title, role, skills, period, logo, colorMode, alt } = props;
return (
<CardTransition>
<Box
px={4}
py={5}
borderWidth="1px"
_hover={{ shadow: "lg" }}
bg={useColorModeValue("white", "gray.800")}
position="relative"
rounded="md"
>
<Flex justifyContent="space-between">
<Flex>
<Image
rounded="full"
w={16}
h={16}
objectFit="cover"
fallbackSrc={placeholder}
src={logo}
alt={alt}
/>
<Stack spacing={2} pl={3} align="left">
<Heading
align="left"
fontSize="xl"
color={`mode.${colorMode}.career.text`}
>
{title}
</Heading>
<Heading
align="left"
fontSize="sm"
color={`mode.${colorMode}.career.subtext`}
>
{role}
</Heading>
<Stack
spacing={1}
mt={3}
isInline
alignItems="center"
display={["none", "none", "flex", "flex"]}
>
{skills.map(skill => (
<Tag size="sm" padding="0 3px" key={skill}>
{skill}
</Tag>
))}
</Stack>
</Stack>
</Flex>
<Stack display={["none", "none", "flex", "flex"]}>
<Text fontSize={14} color={`mode.${colorMode}.career.subtext`}>
{period}
</Text>
</Stack>
</Flex>
<Stack
spacing={1}
mt={3}
isInline
alignItems="center"
display={["flex", "flex", "none", "none"]}
>
{skills.map(skill => (
<Tag size="sm" padding="0 3px" key={skill}>
{skill}
</Tag>
))}
</Stack>
</Box>
</CardTransition>
);
}
Example #16
Source File: FusePoolCreatePage.tsx From rari-dApp with GNU Affero General Public License v3.0 | 5 votes |
TransactionStepperModal = ({
isOpen,
onClose,
activeStep,
needsRetry,
handleRetry,
}: {
isOpen: boolean;
onClose: () => void;
activeStep: number;
needsRetry: boolean;
handleRetry: () => void;
}) => {
return (
<Modal isOpen={isOpen} onClose={onClose} closeOnOverlayClick={false}>
<ModalOverlay>
<ModalContent
{...MODAL_PROPS}
display="flex"
alignSelf="center"
alignItems="center"
justifyContent="center"
height="25%"
width="25%"
>
<Row
mb={6}
mainAxisAlignment="center"
crossAxisAlignment="center"
w="100%"
px={4}
>
<Box mx="auto">
<Text textAlign="center" fontSize="20px">
{steps[activeStep]}
</Text>
{steps[activeStep] === "Deploying Pool!" ? (
<Text fontSize="13px" opacity="0.8">
Will take two transactions, please wait.
</Text>
) : null}
</Box>
</Row>
<TransactionStepper
steps={steps}
activeStep={activeStep}
tokenData={{ color: "#21C35E" }}
/>
{needsRetry ? (
<Button onClick={() => handleRetry()} mx={3} bg="#21C35E">
{" "}
Retry{" "}
</Button>
) : null}
</ModalContent>
</ModalOverlay>
</Modal>
);
}