| 1234567891011121314151617181920212223242526272829303132333435 |
- import type { OperateBorderLines } from '@/lib/types/edit';
- interface BorderLineProps {
- readonly type: OperateBorderLines;
- readonly isWide?: boolean;
- readonly style?: React.CSSProperties;
- readonly className?: string;
- }
- export function BorderLine({ type, isWide = false, style, className }: BorderLineProps) {
- const borderClass = {
- top: 'border-t',
- bottom: 'border-b',
- left: 'border-l',
- right: 'border-r',
- }[type];
- const wideBeforeClass = isWide
- ? {
- top: 'before:absolute before:-top-2 before:-left-2 before:w-[calc(100%+16px)] before:h-4 before:bg-transparent before:cursor-move before:content-[""]',
- bottom:
- 'before:absolute before:-bottom-2 before:-left-2 before:w-[calc(100%+16px)] before:h-4 before:bg-transparent before:cursor-move before:content-[""]',
- left: 'before:absolute before:-top-2 before:-left-2 before:w-4 before:h-[calc(100%+16px)] before:bg-transparent before:cursor-move before:content-[""]',
- right:
- 'before:absolute before:-top-2 before:-right-2 before:w-4 before:h-[calc(100%+16px)] before:bg-transparent before:cursor-move before:content-[""]',
- }[type]
- : '';
- return (
- <div
- className={`border-line absolute inset-0 border-dashed border-primary ${borderClass} ${wideBeforeClass} ${className || ''}`}
- style={style}
- />
- );
- }
|