import { palette } from '@roleypoly/design-system/atoms/colors'; import { transitions } from '@roleypoly/design-system/atoms/timings'; import styled, { css } from 'styled-components'; export type StyledProps = { selected: boolean; defaultColor: boolean; disabled: boolean; type?: 'delete'; }; export const Circle = styled.div` width: 24px; height: 24px; border-radius: 25px; background-color: ${(props) => props.defaultColor && !props.selected ? 'transparent' : 'var(--role-color)'}; border: 1px solid ${(props) => props.defaultColor ? 'var(--role-color)' : props.selected ? 'var(--role-accent)' : 'transparent'}; display: flex; justify-content: center; align-items: center; transition: border ${transitions.in2in}s ease-in-out, background-color ${transitions.in2in}s ease-in-out; flex-shrink: 0; svg { width: 10px; height: 10px; fill-opacity: ${(props) => (props.selected || props.disabled ? 1 : 0)}; transition: fill-opacity ${transitions.in2in}s ease-in-out; fill: ${(props) => props.disabled && props.defaultColor ? 'var(--role-color)' : 'var(--role-contrast)'}; } `; export const Outer = styled.div` border-radius: 24px; background-color: ${(props) => props.selected && !props.defaultColor ? 'var(--role-color)' : palette.taupe100}; color: ${(props) => (props.selected ? 'var(--role-contrast)' : palette.grey600)}; transition: color ${transitions.in2in}s ease-in-out, background-color ${transitions.in2in}s ease-in-out, transform ${transitions.actionable}s ease-in-out, box-shadow ${transitions.actionable}s ease-in-out; display: flex; padding: 4px; user-select: none; overflow: hidden; cursor: pointer; ${(props) => !props.disabled ? css` &:hover { transform: translateY(-2px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); ${Circle} svg { fill-opacity: 1; } } &:active { transform: translateY(0); box-shadow: 0 0 0 transparent; } ` : null}; `; export const Text = styled.div` padding: 0 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; `;