Apply masked scroll to env vars

This commit is contained in:
Sam Becker 2025-04-30 23:19:24 -05:00
parent 31a722db26
commit 56d013f663
3 changed files with 15 additions and 9 deletions

View File

@ -1,6 +1,7 @@
import clsx from 'clsx/lite'; import clsx from 'clsx/lite';
import { ReactNode } from 'react'; import { ReactNode } from 'react';
import CopyButton from './CopyButton'; import CopyButton from './CopyButton';
import MaskedScroll from './MaskedScroll';
export default function EnvVar({ export default function EnvVar({
variable, variable,
@ -18,12 +19,14 @@ export default function EnvVar({
className?: string, className?: string,
}) { }) {
return ( return (
<div <MaskedScroll
direction="horizontal"
className={clsx( className={clsx(
'inline-flex max-w-full', 'inline-flex max-w-full',
'overflow-x-auto overflow-y-hidden', 'overflow-y-hidden',
className, className,
)} )}
hideScrollbar
> >
<span className="inline-flex items-center gap-1"> <span className="inline-flex items-center gap-1">
<span className={clsx( <span className={clsx(
@ -50,6 +53,6 @@ export default function EnvVar({
{trailingContent} {trailingContent}
</span>} </span>}
</span> </span>
</div> </MaskedScroll>
); );
} }

View File

@ -3,7 +3,7 @@ import { HTMLAttributes, useRef } from 'react';
import useMaskedScroll from './useMaskedScroll'; import useMaskedScroll from './useMaskedScroll';
export default function MaskedScroll({ export default function MaskedScroll({
direction = 'vertical', direction,
fadeSize, fadeSize,
animationDuration, animationDuration,
hideScrollbar, hideScrollbar,
@ -17,7 +17,7 @@ export default function MaskedScroll({
Omit<Parameters<typeof useMaskedScroll>[0], 'ref'>) { Omit<Parameters<typeof useMaskedScroll>[0], 'ref'>) {
const ref = useRef<HTMLDivElement>(null); const ref = useRef<HTMLDivElement>(null);
const { styleMask } = useMaskedScroll({ const { styleMask, classNameMask } = useMaskedScroll({
ref, ref,
direction, direction,
fadeSize, fadeSize,
@ -31,9 +31,7 @@ Omit<Parameters<typeof useMaskedScroll>[0], 'ref'>) {
{...props} {...props}
ref={ref} ref={ref}
className={clsx( className={clsx(
direction === 'vertical' classNameMask,
? 'max-h-full overflow-y-scroll'
: 'max-w-full overflow-x-scroll',
className, className,
)} )}
style={{ ...styleMask, ...style }} style={{ ...styleMask, ...style }}

View File

@ -108,5 +108,10 @@ export default function useMaskedScroll({
}; };
}, [isVertical, fadeSize, animationDuration, hideScrollbar]); }, [isVertical, fadeSize, animationDuration, hideScrollbar]);
return { styleMask, updateMask }; const classNameMask = useMemo(() => isVertical
? 'max-h-full overflow-y-scroll'
: 'max-w-full overflow-x-scroll'
, [isVertical]);
return { styleMask, classNameMask, updateMask };
} }