library

react-boxx

Fri Apr 16 2021
Typed react box component with css-in-js styling

Installation

yarn add react-boxx

or

npm i react-boxx

Simple Example

import { Box } from 'react-boxx';

const component = (
  <Box
    as="button"
    backgroundColor="red"
    borderRadius="4px"
    marginBottom="1em"
    hover={{
      color: 'white'
    }}
    focus={{
      color: 'blue'
    }}
    css={{
      '> :last-child': {
        borderBottomLeftRadius: theme.radius,
        borderBottomRightRadius: theme.radius,
      },
      '> :first-child': {
        borderTopLeftRadius: theme.radius,
        borderTopRightRadius: theme.radius,
      },
    }}
  >
    { props.children }
  </Box>
)

Keyboard mode

When wrapped in a KeyboardModeProvider, focused boxes receive hover styles if all of the following are true:

  • they are focused
  • they do not define focus-styles
  • the user has recently pressed a key, but not clicked with the mouse
import { Box, KeyboardModeProvider } from 'react-boxx';

const component = (
  <KeyboardModeProvider>
    <Box
      as="button"
      hover={{ color: 'red' }}
    >
      I'm a button!
    </Box>  
  </KeyboardModeProvider>
)

Utility components

The following utility components are available:

  • Flex
  • Anchor
  • Paragraph
  • RightAligned
  • LeftAligned
  • CenterAligned
  • VisuallyHidden
import { Box, KeyboardModeProvider, Flex } from 'react-boxx';

const component = (
  <Flex>
    <Box>Left</Box>
    <Box>Right</Box>
  </Flex>
)

Defining new boxes

A new box can be defined with composeBox:

import { composeBox } from 'react-boxx';

const MyAnchor = composeBox({
  as: 'a',
  textDecoration: 'none',
  hover: { textDecoration: 'underline' },
})
Profile Image
Lukas Bach
Software engineer at GoTo