Files
AFFiNE-Mirror/packages/frontend/component/src/ui/menu/styles.css.ts
T
2025-02-09 23:26:38 +00:00

124 lines
2.8 KiB
TypeScript

import { cssVar } from '@toeverything/theme';
import { cssVarV2 } from '@toeverything/theme/v2';
import { createVar, style } from '@vanilla-extract/css';
export const iconColor = createVar('iconColor');
export const labelColor = createVar('labelColor');
export const bgColor = createVar('bgColor');
export const menuContent = style({
minWidth: '180px',
borderRadius: '8px',
padding: '8px',
fontSize: cssVar('fontSm'),
fontWeight: '400',
backgroundColor: cssVarV2('layer/background/overlayPanel'),
boxShadow: cssVar('menuShadow'),
userSelect: 'none',
['WebkitAppRegion' as string]: 'no-drag',
display: 'flex',
flexDirection: 'column',
gap: 4,
selectors: {
'&.mobile': {
padding: 0,
boxShadow: 'none',
},
},
});
export const menuItem = style({
vars: {
[iconColor]: cssVarV2('icon/primary'),
[labelColor]: cssVarV2('text/primary'),
[bgColor]: 'transparent',
},
color: labelColor,
backgroundColor: bgColor,
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
gap: 8,
padding: '4px',
borderRadius: 4,
lineHeight: '22px',
border: 'none',
outline: 'none',
cursor: 'pointer',
boxSizing: 'border-box',
selectors: {
'&.block': {
maxWidth: '100%',
},
'&[data-disabled], &.disabled': {
vars: {
[iconColor]: cssVarV2('icon/disable'),
[labelColor]: cssVarV2('text/secondary'),
},
pointerEvents: 'none',
cursor: 'default',
},
'&:hover': {
vars: {
[bgColor]: cssVar('hoverColor'),
},
outline: 'none !important',
},
'&:focus-visible': {
outline: '1px solid ' + cssVarV2('layer/insideBorder/primaryBorder'),
},
'&.danger:hover': {
vars: {
[iconColor]: cssVar('errorColor'),
[labelColor]: cssVar('errorColor'),
[bgColor]: cssVar('backgroundErrorColor'),
},
},
'&.warning:hover': {
vars: {
[iconColor]: cssVar('warningColor'),
[labelColor]: cssVar('warningColor'),
[bgColor]: cssVar('backgroundWarningColor'),
},
},
'&.checked, &.selected': {
vars: {
[iconColor]: cssVar('primaryColor'),
},
},
},
});
export const menuSpan = style({
flex: 1,
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap',
textAlign: 'left',
});
export const menuItemIcon = style({
display: 'flex',
flexShrink: 0,
fontSize: cssVar('fontH5'),
color: iconColor,
width: 20,
height: 20,
});
export const menuSeparator = style({
width: '100%',
height: '8px',
position: 'relative',
':after': {
content: '""',
display: 'block',
height: '1px',
width: '100%',
backgroundColor: cssVarV2('layer/insideBorder/border'),
position: 'absolute',
top: '50%',
left: 0,
transform: 'translateY(-50%) scaleY(0.5)',
},
});