mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-17 18:16:15 +08:00
124 lines
2.8 KiB
TypeScript
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)',
|
|
},
|
|
});
|