skyroc-ui
Version:
A modern React UI component library built on Radix UI and Tailwind CSS
51 lines (50 loc) • 1.81 kB
TypeScript
import { ClassValue, ClassValueProp, ThemeSize } from "../../types/other.js";
import { CardSlots } from "./card-variants.js";
import { ReactNode } from "react";
//#region src/components/card/types.d.ts
interface CardRootProps extends ClassValueProp, Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'title'> {
size?: ThemeSize;
split?: boolean;
}
interface CardHeaderProps extends ClassValueProp, Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'title'> {
size?: ThemeSize;
}
interface CardTitleRootProps extends ClassValueProp, Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'title'> {
leading?: React.ReactNode;
size?: ThemeSize;
trailing?: React.ReactNode;
}
interface CardTitleProps extends ClassValueProp, Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'title'> {
size?: ThemeSize;
}
interface CardFooterProps extends ClassValueProp, Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'title'> {
size?: ThemeSize;
}
interface CardContentProps extends ClassValueProp, Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'title'> {
/**
* If true, the content will be flex-grow and overflow-hidden
*
* @default false
*/
flexHeight?: boolean;
size?: ThemeSize;
}
type CardUi = Partial<Record<CardSlots, ClassValue>>;
interface CardProps extends CardRootProps {
classNames?: CardUi;
extra?: ReactNode;
/**
* If true, the content will be flex-grow and overflow-hidden
*
* @default false
*/
flexHeight?: boolean;
footer?: ReactNode;
header?: ReactNode;
title?: ReactNode;
titleLeading?: ReactNode;
titleRoot?: ReactNode;
titleTrailing?: ReactNode;
}
//#endregion
export { CardContentProps, CardFooterProps, CardHeaderProps, CardProps, CardRootProps, CardTitleProps, CardTitleRootProps, CardUi };