its-just-ui
Version:
ITS Just UI - The easiest and best React UI component library. Modern, accessible, and customizable components built with TypeScript and Tailwind CSS. Simple to use, production-ready components for building beautiful user interfaces with ease.
75 lines (73 loc) • 3.02 kB
TypeScript
import { default as React } from 'react';
export interface ListItemData {
id: string;
title: string;
description?: string;
disabled?: boolean;
icon?: React.ReactNode;
avatar?: React.ReactNode;
badge?: React.ReactNode;
action?: React.ReactNode;
[key: string]: unknown;
}
export interface ListProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
items?: ListItemData[];
value?: string | string[] | null;
onChange?: (value: string | string[] | null) => void;
variant?: 'default' | 'bordered' | 'card' | 'minimal' | 'elevated';
size?: 'sm' | 'md' | 'lg';
status?: 'default' | 'success' | 'warning' | 'error' | 'info';
disabled?: boolean;
loading?: boolean;
selectable?: boolean;
multiple?: boolean;
maxSelection?: number;
label?: string;
helperText?: string;
required?: boolean;
emptyMessage?: string;
loadingMessage?: string;
onItemClick?: (item: ListItemData) => void;
onItemSelect?: (item: ListItemData) => void;
renderItem?: (item: ListItemData, isSelected: boolean) => React.ReactNode;
children?: React.ReactNode;
className?: string;
style?: React.CSSProperties;
}
interface ListContextValue {
items: ListItemData[];
value: string | string[] | null;
onChange: (value: string | string[] | null) => void;
variant?: 'default' | 'bordered' | 'card' | 'minimal' | 'elevated';
size?: 'sm' | 'md' | 'lg';
status?: 'default' | 'success' | 'warning' | 'error' | 'info';
disabled?: boolean;
loading?: boolean;
selectable?: boolean;
multiple?: boolean;
maxSelection?: number;
onItemClick?: (item: ListItemData) => void;
onItemSelect?: (item: ListItemData) => void;
renderItem?: (item: ListItemData, isSelected: boolean) => React.ReactNode;
emptyMessage?: string;
loadingMessage?: string;
}
export declare const useList: () => ListContextValue;
declare const List: React.ForwardRefExoticComponent<ListProps & React.RefAttributes<HTMLDivElement>>;
export interface ListContainerProps extends React.HTMLAttributes<HTMLDivElement> {
children?: React.ReactNode;
}
declare const ListContainer: React.ForwardRefExoticComponent<ListContainerProps & React.RefAttributes<HTMLDivElement>>;
export interface ListItemProps extends React.HTMLAttributes<HTMLDivElement> {
item: ListItemData;
}
declare const ListItem: React.ForwardRefExoticComponent<ListItemProps & React.RefAttributes<HTMLDivElement>>;
export interface ListHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
children?: React.ReactNode;
}
declare const ListHeader: React.ForwardRefExoticComponent<ListHeaderProps & React.RefAttributes<HTMLDivElement>>;
export interface ListFooterProps extends React.HTMLAttributes<HTMLDivElement> {
children?: React.ReactNode;
}
declare const ListFooter: React.ForwardRefExoticComponent<ListFooterProps & React.RefAttributes<HTMLDivElement>>;
export { List, ListContainer, ListItem, ListHeader, ListFooter };