mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-19 22:24:11 +00:00
feat: create reusable scroll area
This commit is contained in:
committed by
Carlos Valente
parent
e25725ea8b
commit
b28573455a
@@ -0,0 +1,38 @@
|
||||
import { CSSProperties, PropsWithChildren, Ref } from 'react';
|
||||
import { ScrollArea } from '@base-ui/react/scroll-area';
|
||||
|
||||
import { cx } from '../../utils/styleUtils';
|
||||
|
||||
import style from './ScrollArea.module.scss';
|
||||
|
||||
interface ScrollAreaProps {
|
||||
className?: string;
|
||||
viewportClassName?: string;
|
||||
contentClassName?: string;
|
||||
contentStyle?: CSSProperties;
|
||||
ref?: Ref<HTMLDivElement>;
|
||||
orientation?: 'vertical' | 'horizontal';
|
||||
}
|
||||
|
||||
export default function StyledScrollArea({
|
||||
className,
|
||||
viewportClassName,
|
||||
contentClassName,
|
||||
contentStyle,
|
||||
children,
|
||||
ref,
|
||||
orientation = 'vertical',
|
||||
}: PropsWithChildren<ScrollAreaProps>) {
|
||||
return (
|
||||
<ScrollArea.Root className={cx([style.root, className])}>
|
||||
<ScrollArea.Viewport ref={ref} className={cx([style.viewport, viewportClassName])}>
|
||||
<ScrollArea.Content className={contentClassName} style={contentStyle}>
|
||||
{children}
|
||||
</ScrollArea.Content>
|
||||
</ScrollArea.Viewport>
|
||||
<ScrollArea.Scrollbar className={style.scrollbar} orientation={orientation}>
|
||||
<ScrollArea.Thumb className={style.thumb} />
|
||||
</ScrollArea.Scrollbar>
|
||||
</ScrollArea.Root>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user