import * as DropdownMenu from '@radix-ui/react-dropdown-menu' import * as RadioGroup from '@radix-ui/react-radio-group' import * as Panel from './panel' import styled from 'styles' export const IconButton = styled('button', { height: '32px', width: '32px', backgroundColor: '$panel', borderRadius: '4px', padding: '0', margin: '0', display: 'grid', alignItems: 'center', justifyContent: 'center', outline: 'none', border: 'none', pointerEvents: 'all', cursor: 'pointer', '& > *': { gridRow: 1, gridColumn: 1, }, '&:disabled': { opacity: '0.5', }, '& > span': { width: '100%', height: '100%', display: 'flex', alignItems: 'center', }, variants: { bp: { mobile: {}, small: { '&:hover:not(:disabled)': { backgroundColor: '$hover', }, }, }, size: { small: { '& svg': { height: '16px', width: '16px', }, }, medium: { height: 44, width: 44, '& svg': { height: '20px', width: '20px', }, }, large: { height: 44, width: 44, '& svg': { height: '24px', width: '24px', }, }, }, isActive: { true: { color: '$selected', }, }, }, }) export const RowButton = styled('button', { position: 'relative', display: 'flex', width: '100%', background: 'none', height: '32px', border: 'none', cursor: 'pointer', outline: 'none', alignItems: 'center', fontFamily: '$ui', fontSize: '$1', justifyContent: 'space-between', padding: '4px 6px 4px 12px', borderRadius: 4, '& label': { fontWeight: '$1', margin: 0, padding: 0, }, '& svg': { position: 'relative', stroke: 'rgba(0,0,0,.2)', strokeWidth: 1, zIndex: 1, }, '& :disabled': { opacity: 0.5, }, variants: { bp: { mobile: {}, small: { '&:hover:not(:disabled)': { backgroundColor: '$hover', }, }, }, size: { icon: { padding: '4px ', width: 'auto', }, }, }, }) export const StylePanelRoot = styled(Panel.Root, { minWidth: 1, width: 184, maxWidth: 184, overflow: 'hidden', position: 'relative', border: '1px solid $panel', boxShadow: '0px 2px 4px rgba(0,0,0,.12)', variants: { isOpen: { true: {}, false: { padding: 2, height: 38, width: 38, }, }, }, }) export const Group = styled(RadioGroup.Root, { display: 'flex', }) export const Item = styled('button', { height: '32px', width: '32px', backgroundColor: '$panel', borderRadius: '4px', padding: '0', margin: '0', display: 'flex', alignItems: 'center', justifyContent: 'center', outline: 'none', border: 'none', pointerEvents: 'all', cursor: 'pointer', '&:hover:not(:disabled)': { backgroundColor: '$hover', '& svg': { stroke: '$text', fill: '$text', strokeWidth: '0', }, }, '&:disabled': { opacity: '0.5', }, variants: { isActive: { true: { '& svg': { fill: '$text', stroke: '$text', }, }, false: { '& svg': { fill: '$inactive', stroke: '$inactive', }, }, }, }, }) export const IconWrapper = styled('div', { height: '100%', borderRadius: '4px', marginRight: '1px', display: 'grid', alignItems: 'center', justifyContent: 'center', outline: 'none', border: 'none', pointerEvents: 'all', cursor: 'pointer', '& svg': { height: 22, width: 22, strokeWidth: 1, }, '& > *': { gridRow: 1, gridColumn: 1, }, variants: { size: { small: { '& svg': { height: '16px', width: '16px', }, }, medium: { '& svg': { height: '22px', width: '22px', }, }, }, }, }) export const DropdownContent = styled(DropdownMenu.Content, { display: 'grid', padding: 4, gridTemplateColumns: 'repeat(4, 1fr)', backgroundColor: '$panel', borderRadius: 4, border: '1px solid $panel', boxShadow: '0px 2px 4px rgba(0,0,0,.28)', variants: { direction: { vertical: { gridTemplateColumns: '1fr', }, }, }, }) export function DashSolidIcon() { return ( ) } export function DashDashedIcon() { return ( ) } const dottedDasharray = `${50.26548 * 0.025} ${50.26548 * 0.1}` export function DashDottedIcon() { return ( ) }