| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import {
- AlignBottomIcon,
- AlignCenterHorizontallyIcon,
- AlignCenterVerticallyIcon,
- AlignLeftIcon,
- AlignRightIcon,
- AlignTopIcon,
- SpaceEvenlyHorizontallyIcon,
- SpaceEvenlyVerticallyIcon,
- StretchHorizontallyIcon,
- StretchVerticallyIcon,
- } from '@radix-ui/react-icons'
- import { IconButton } from 'components/shared'
- import state from 'state'
- import styled from 'styles'
- import { AlignType, DistributeType, StretchType } from 'types'
-
- function alignTop() {
- state.send('ALIGNED', { type: AlignType.Top })
- }
-
- function alignCenterVertical() {
- state.send('ALIGNED', { type: AlignType.CenterVertical })
- }
-
- function alignBottom() {
- state.send('ALIGNED', { type: AlignType.Bottom })
- }
-
- function stretchVertically() {
- state.send('STRETCHED', { type: StretchType.Vertical })
- }
-
- function distributeVertically() {
- state.send('DISTRIBUTED', { type: DistributeType.Vertical })
- }
-
- function alignLeft() {
- state.send('ALIGNED', { type: AlignType.Left })
- }
-
- function alignCenterHorizontal() {
- state.send('ALIGNED', { type: AlignType.CenterHorizontal })
- }
-
- function alignRight() {
- state.send('ALIGNED', { type: AlignType.Right })
- }
-
- function stretchHorizontally() {
- state.send('STRETCHED', { type: StretchType.Horizontal })
- }
-
- function distributeHorizontally() {
- state.send('DISTRIBUTED', { type: DistributeType.Horizontal })
- }
-
- export default function AlignDistribute({
- hasTwoOrMore,
- hasThreeOrMore,
- }: {
- hasTwoOrMore: boolean
- hasThreeOrMore: boolean
- }) {
- return (
- <Container>
- <IconButton disabled={!hasTwoOrMore} onClick={alignLeft}>
- <AlignLeftIcon />
- </IconButton>
- <IconButton disabled={!hasTwoOrMore} onClick={alignCenterHorizontal}>
- <AlignCenterHorizontallyIcon />
- </IconButton>
- <IconButton disabled={!hasTwoOrMore} onClick={alignRight}>
- <AlignRightIcon />
- </IconButton>
- <IconButton disabled={!hasTwoOrMore} onClick={stretchHorizontally}>
- <StretchHorizontallyIcon />
- </IconButton>
- <IconButton disabled={!hasThreeOrMore} onClick={distributeHorizontally}>
- <SpaceEvenlyHorizontallyIcon />
- </IconButton>
- <IconButton disabled={!hasTwoOrMore} onClick={alignTop}>
- <AlignTopIcon />
- </IconButton>
- <IconButton disabled={!hasTwoOrMore} onClick={alignCenterVertical}>
- <AlignCenterVerticallyIcon />
- </IconButton>
- <IconButton disabled={!hasTwoOrMore} onClick={alignBottom}>
- <AlignBottomIcon />
- </IconButton>
- <IconButton disabled={!hasTwoOrMore} onClick={stretchVertically}>
- <StretchVerticallyIcon />
- </IconButton>
- <IconButton disabled={!hasThreeOrMore} onClick={distributeVertically}>
- <SpaceEvenlyVerticallyIcon />
- </IconButton>
- </Container>
- )
- }
-
- const Container = styled('div', {
- display: 'grid',
- padding: 4,
- gridTemplateColumns: 'repeat(5, auto)',
- [`& ${IconButton}`]: {
- color: '$text',
- },
- [`& ${IconButton} > svg`]: {
- fill: 'red',
- stroke: 'transparent',
- },
- })
|