* add active theme context * add chroma js library * add hook for accessible tag color * disable reply user color - temporary * render user color based on tag in room timeline * remove default tag icons * move accessible color function to plugins * render user power color in reply * increase username weight in timeline * add default color for member power level tag * show red slash in power color badge with no color * show power level color in room input reply * show power level username color in notifications * show power level color in notification reply * show power level color in message search * render power level color in room pin menu * add toggle for legacy username colors * drop over saturation from member default color * change border color of power color badge * show legacy username color in direct rooms
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import React from 'react';
|
|
import { Text, as } from 'folds';
|
|
import classNames from 'classnames';
|
|
import * as css from './layout.css';
|
|
|
|
export const MessageBase = as<'div', css.MessageBaseVariants>(
|
|
({ className, highlight, selected, collapse, autoCollapse, space, ...props }, ref) => (
|
|
<div
|
|
className={classNames(
|
|
css.MessageBase({ highlight, selected, collapse, autoCollapse, space }),
|
|
className
|
|
)}
|
|
{...props}
|
|
ref={ref}
|
|
/>
|
|
)
|
|
);
|
|
|
|
export const AvatarBase = as<'span'>(({ className, ...props }, ref) => (
|
|
<span className={classNames(css.AvatarBase, className)} {...props} ref={ref} />
|
|
));
|
|
|
|
export const Username = as<'span'>(({ as: AsUsername = 'span', className, ...props }, ref) => (
|
|
<AsUsername className={classNames(css.Username, className)} {...props} ref={ref} />
|
|
));
|
|
|
|
export const UsernameBold = as<'b'>(({ as: AsUsernameBold = 'b', className, ...props }, ref) => (
|
|
<AsUsernameBold className={classNames(css.UsernameBold, className)} {...props} ref={ref} />
|
|
));
|
|
|
|
export const MessageTextBody = as<'div', css.MessageTextBodyVariants & { notice?: boolean }>(
|
|
({ as: asComp = 'div', className, preWrap, jumboEmoji, emote, notice, ...props }, ref) => (
|
|
<Text
|
|
as={asComp}
|
|
size="T400"
|
|
priority={notice ? '300' : '400'}
|
|
className={classNames(css.MessageTextBody({ preWrap, jumboEmoji, emote }), className)}
|
|
{...props}
|
|
ref={ref}
|
|
/>
|
|
)
|
|
);
|