import type { HTMLAttributes, ReactNode } from 'react'; import React, { Children, Fragment } from 'react'; import classnames from 'classnames'; const spaceClassesX = { 0: 'pr-0', 1: 'pr-1', 2: 'pr-2', 3: 'pr-3', 4: 'pr-4', 5: 'pr-5', 6: 'pr-6', }; const spaceClassesY = { 0: 'pt-0', 1: 'pt-1', 2: 'pt-2', 3: 'pt-3', 4: 'pt-4', 5: 'pt-5', 6: 'pt-6', }; interface HStackProps extends BaseStackProps { space?: keyof typeof spaceClassesX; children?: ReactNode; } export function HStack({ className, space, children, ...props }: HStackProps) { return ( {space ? Children.toArray(children) .filter(Boolean) // Remove null/false/undefined children .map((c, i) => ( {i > 0 ? (
) : null} {c} )) : children} ); } export interface VStackProps extends BaseStackProps { space?: keyof typeof spaceClassesY; children: ReactNode; } export function VStack({ className, space, children, ...props }: VStackProps) { return ( {space ? Children.toArray(children) .filter(Boolean) // Remove null/false/undefined children .map((c, i) => ( {i > 0 ? (
) : null} {c} )) : children} ); } interface BaseStackProps extends HTMLAttributes { items?: 'start' | 'center'; justify?: 'start' | 'center' | 'end'; as?: React.ElementType; } function BaseStack({ className, items, justify, as = 'div', ...props }: BaseStackProps) { const Component = as; return ( ); }