diff --git a/packages/ui/package.json b/packages/ui/package.json index 423ce382..610f2be2 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -84,6 +84,14 @@ "types": "./dist/components/Switch.d.ts", "import": "./dist/components/Switch.js" }, + "./data-list": { + "types": "./dist/components/DataList.d.ts", + "import": "./dist/components/DataList.js" + }, + "./data-table": { + "types": "./dist/components/DataTable.d.ts", + "import": "./dist/components/DataTable.js" + }, "./separator": { "types": "./dist/components/Separator.d.ts", "import": "./dist/components/Separator.js" diff --git a/packages/ui/src/components/DataList.tsx b/packages/ui/src/components/DataList.tsx new file mode 100644 index 00000000..4394957d --- /dev/null +++ b/packages/ui/src/components/DataList.tsx @@ -0,0 +1,56 @@ +import * as React from 'react'; +import { clsx } from 'clsx'; + +export interface DataListProps extends React.HTMLAttributes { + density?: 'compact' | 'normal' | 'spacious'; +} + +const densityClasses: Record, string> = { + compact: 'gap-1', + normal: 'gap-2', + spacious: 'gap-3', +}; + +export function DataList({ density = 'normal', className, children, ...props }: DataListProps) { + return ( +
+ {children} +
+ ); +} + +export interface DataListItemProps extends React.HTMLAttributes { + selected?: boolean; +} + +export function DataListItem({ selected, className, children, ...props }: DataListItemProps) { + return ( +
+ {children} +
+ ); +} + +export interface DataListMetaProps extends React.HTMLAttributes {} + +export function DataListMeta({ className, children, ...props }: DataListMetaProps) { + return ( +
+ {children} +
+ ); +} diff --git a/packages/ui/src/components/DataTable.tsx b/packages/ui/src/components/DataTable.tsx new file mode 100644 index 00000000..78f3273f --- /dev/null +++ b/packages/ui/src/components/DataTable.tsx @@ -0,0 +1,60 @@ +import * as React from 'react'; +import { clsx } from 'clsx'; + +export type DataTableProps = React.TableHTMLAttributes; + +export function DataTable({ className, children, ...props }: DataTableProps) { + return ( +
+ + {children} +
+
+ ); +} + +export type DataTableHeaderProps = React.HTMLAttributes; + +export function DataTableHeader({ className, ...props }: DataTableHeaderProps) { + return ; +} + +export type DataTableBodyProps = React.HTMLAttributes; + +export function DataTableBody({ className, ...props }: DataTableBodyProps) { + return ; +} + +export type DataTableRowProps = React.HTMLAttributes; + +export function DataTableRow({ className, ...props }: DataTableRowProps) { + return ( + + ); +} + +export type DataTableHeadProps = React.ThHTMLAttributes; + +export function DataTableHead({ className, ...props }: DataTableHeadProps) { + return ( + + ); +} + +export type DataTableCellProps = React.TdHTMLAttributes; + +export function DataTableCell({ className, ...props }: DataTableCellProps) { + return ; +} diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index f911b072..efe2744a 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -44,6 +44,28 @@ export { export { ListItemButton, type ListItemButtonProps } from './components/ListItemButton'; export { Timeline, type TimelineItem, type TimelineProps } from './components/Timeline'; export { DiffCard, type DiffCardProps } from './components/DiffCard'; +export { + DataList, + DataListItem, + DataListMeta, + type DataListItemProps, + type DataListMetaProps, + type DataListProps, +} from './components/DataList'; +export { + DataTable, + DataTableBody, + DataTableCell, + DataTableHead, + DataTableHeader, + DataTableRow, + type DataTableBodyProps, + type DataTableCellProps, + type DataTableHeadProps, + type DataTableHeaderProps, + type DataTableProps, + type DataTableRowProps, +} from './components/DataTable'; export { Label, type LabelProps } from './components/Label'; export { Select, type SelectProps } from './components/Select'; export {