You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.6 KiB
66 lines
1.6 KiB
import React from 'react';
|
|
import { gridStyle, gridItemStyle } from './styles';
|
|
|
|
import type { VariantProps } from '@gluestack-ui/nativewind-utils';
|
|
|
|
type IGridProps = React.ComponentPropsWithoutRef<'div'> &
|
|
VariantProps<typeof gridStyle> & {
|
|
gap?: number;
|
|
rowGap?: number;
|
|
columnGap?: number;
|
|
flexDirection?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
|
|
padding?: number;
|
|
paddingLeft?: number;
|
|
paddingRight?: number;
|
|
paddingStart?: number;
|
|
paddingEnd?: number;
|
|
_extra: {
|
|
className: string;
|
|
};
|
|
};
|
|
|
|
const Grid = React.forwardRef<HTMLDivElement, IGridProps>(function Grid(
|
|
{ className, _extra, ...props },
|
|
ref
|
|
) {
|
|
const gridClass = _extra?.className;
|
|
const finalGridClass = gridClass ?? '';
|
|
return (
|
|
<div
|
|
ref={ref}
|
|
className={gridStyle({
|
|
class: className + ' ' + finalGridClass,
|
|
})}
|
|
{...props}
|
|
/>
|
|
);
|
|
});
|
|
|
|
type IGridItemProps = React.ComponentPropsWithoutRef<'div'> &
|
|
VariantProps<typeof gridItemStyle> & {
|
|
index?: number;
|
|
_extra: {
|
|
className: string;
|
|
};
|
|
};
|
|
const GridItem = React.forwardRef<HTMLDivElement, IGridItemProps>(
|
|
function GridItem({ className, _extra, ...props }, ref) {
|
|
const gridItemClass = _extra?.className;
|
|
|
|
const finalGridItemClass = gridItemClass ?? '';
|
|
return (
|
|
<div
|
|
ref={ref}
|
|
className={gridItemStyle({
|
|
class: className + ' ' + finalGridItemClass,
|
|
})}
|
|
{...props}
|
|
/>
|
|
);
|
|
}
|
|
);
|
|
|
|
Grid.displayName = 'Grid';
|
|
GridItem.displayName = 'GridItem';
|
|
|
|
export { Grid, GridItem };
|