import { Children, HTMLAttributes, HTMLProps, ReactNode } from 'react';
import styled from 'styled-components';
import { Box, BoxComponentProps } from './components/box/Box';
export const spacing = {
r1: '0.0625rem',
r2: '0.125rem',
r4: '0.25rem',
r8: '0.5rem',
r10: '0.625rem',
r12: '0.75rem',
r14: '0.875rem',
r16: '1rem',
r20: '1.25rem',
r24: '1.5rem',
r28: '1.75rem',
r32: '2rem',
r36: '2.25rem',
r40: '2.5rem',
f1: '1px',
f2: '2px',
f4: '4px',
f8: '8px',
f10: '10px',
f12: '12px',
f14: '14px',
f16: '16px',
f20: '20px',
f24: '24px',
f28: '28px',
f32: '32px',
f36: '36px',
f40: '40px',
};
const HSeparator = styled.div`
background: ${(props) => props.theme.border};
width: ${spacing.r1};
align-self: stretch;
flex-shrink: 0;
margin: ${spacing.r12} 0px;
`;
const VSeparator = styled.div`
height: 1px;
width: ${spacing.r24};
background: ${(props) => props.theme.border};
`;
const Separator = ({ type }: { type?: 'vertical' | 'horizontal' }) => {
return (
<>
{type === 'horizontal' && }
{type === 'vertical' && }
>
);
};
export const Stack = ({
gap,
direction,
withSeparators,
children,
...rest
}: {
gap?: keyof typeof spacing;
direction?: 'vertical' | 'horizontal';
withSeparators?: boolean;
children: ReactNode[];
} & HTMLAttributes) => {
gap = gap || 'r8';
direction = direction || 'horizontal';
const numberOfChildren = Children.count(children);
return (
{Children.map(children, (node, nodeIndex) => {
return (
<>
{node}
{withSeparators && nodeIndex + 1 !== numberOfChildren && (
)}
>
);
})}
);
};
export const Wrap = ({
children,
...rest
}: { children: ReactNode[] } & Omit, 'ref' | 'as'> &
BoxComponentProps) => {
return (
{Children.map(children, (node) => {
return <>{node}>;
})}
);
};