72 lines
1.8 KiB
TypeScript
72 lines
1.8 KiB
TypeScript
import { keyframes, style } from '@vanilla-extract/css';
|
|
import { config, toRem } from 'folds';
|
|
import { VOJO_HORSESHOE_RADIUS_PX } from '../../styles/horseshoe';
|
|
|
|
// Left edge carves TL + BL the same way `RoomViewProfileSidePanel` does
|
|
// across the 12px horseshoe void gap rendered by Room.tsx — same design
|
|
// language as the page-nav <-> chat split. `overflow: hidden` keeps the
|
|
// rounded corners clean against header / scroll content; the void
|
|
// colour beneath is painted by the parent flex row, not by the panel
|
|
// itself.
|
|
export const MembersDrawer = style({
|
|
width: toRem(266),
|
|
overflow: 'hidden',
|
|
borderTopLeftRadius: toRem(VOJO_HORSESHOE_RADIUS_PX),
|
|
borderBottomLeftRadius: toRem(VOJO_HORSESHOE_RADIUS_PX),
|
|
});
|
|
|
|
export const MembersDrawerHeader = style({
|
|
flexShrink: 0,
|
|
padding: `0 ${config.space.S200} 0 ${config.space.S300}`,
|
|
borderBottomWidth: config.borderWidth.B300,
|
|
});
|
|
|
|
export const MemberDrawerContentBase = style({
|
|
position: 'relative',
|
|
overflow: 'hidden',
|
|
});
|
|
|
|
export const MemberDrawerContent = style({
|
|
padding: `${config.space.S200} 0`,
|
|
});
|
|
|
|
const ScrollBtnAnime = keyframes({
|
|
'0%': {
|
|
transform: `translate(-50%, -100%) scale(0)`,
|
|
},
|
|
'100%': {
|
|
transform: `translate(-50%, 0) scale(1)`,
|
|
},
|
|
});
|
|
|
|
export const DrawerScrollTop = style({
|
|
position: 'absolute',
|
|
top: config.space.S200,
|
|
left: '50%',
|
|
transform: 'translateX(-50%)',
|
|
zIndex: 1,
|
|
animation: `${ScrollBtnAnime} 100ms`,
|
|
});
|
|
|
|
export const DrawerGroup = style({
|
|
paddingLeft: config.space.S200,
|
|
});
|
|
|
|
export const MembersGroup = style({
|
|
paddingLeft: config.space.S200,
|
|
});
|
|
export const MembersGroupLabel = style({
|
|
padding: config.space.S200,
|
|
selectors: {
|
|
'&:not(:first-child)': {
|
|
paddingTop: config.space.S500,
|
|
},
|
|
},
|
|
});
|
|
|
|
export const DrawerVirtualItem = style({
|
|
position: 'absolute',
|
|
top: 0,
|
|
left: 0,
|
|
width: '100%',
|
|
});
|