blunt-ui 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { ComponentPropsWithRef } from 'react';
2
- export type BadgeVariant = "primary" | "neutral" | "success" | "error" | "warning" | "info";
3
- export type BadgeSize = "sm" | "md";
2
+ export type BadgeVariants = "primary" | "neutral" | "success" | "error" | "warning" | "info";
3
+ export type BadgeSizes = "sm" | "md";
4
4
  export type BadgeProps = ComponentPropsWithRef<"span"> & {
5
- variant?: BadgeVariant;
6
- size?: BadgeSize;
5
+ variant?: BadgeVariants;
6
+ size?: BadgeSizes;
7
7
  };
@@ -1,2 +1,2 @@
1
1
  export { Badge } from './Badge';
2
- export type { BadgeProps, BadgeVariant, BadgeSize } from './Badge.types';
2
+ export type { BadgeProps, BadgeVariants, BadgeSizes } from './Badge.types';
@@ -0,0 +1,5 @@
1
+ import { DataTableProps } from './DataTable.types';
2
+ export declare function DataTable<T extends Record<string, unknown> = Record<string, unknown>>({ columns, defaultData, data: controlledData, rowKey, onChange, size, borderColor, headerColor, addRowLabel, newRowFactory, deletable, className, style, }: DataTableProps<T>): import("react/jsx-runtime").JSX.Element;
3
+ export declare namespace DataTable {
4
+ var displayName: string;
5
+ }
@@ -0,0 +1,13 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { DataTable } from './DataTable';
3
+ declare const meta: Meta<typeof DataTable>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof DataTable>;
6
+ export declare const Default: Story;
7
+ export declare const WithDelete: Story;
8
+ export declare const MixedEditable: Story;
9
+ export declare const PerCellEditable: Story;
10
+ export declare const CustomColors: Story;
11
+ export declare const KeyboardNavigation: Story;
12
+ export declare const StartsEmpty: Story;
13
+ export declare const Controlled: Story;
@@ -1,19 +1,22 @@
1
1
  import { CSSProperties, ReactNode } from 'react';
2
2
  import { TableSizes } from '../Table/Table.types';
3
3
  export type { TableSizes };
4
- export interface EditableColumn<T = Record<string, unknown>> {
4
+ export interface DataTableColumn<T = Record<string, unknown>> {
5
5
  key: keyof T & string;
6
6
  header: string;
7
7
  width?: string;
8
- editable?: boolean;
8
+ editable?: boolean | ((row: T, rowIndex: number) => boolean);
9
9
  render?: (value: unknown, row: T, rowIndex: number) => ReactNode;
10
10
  }
11
- export interface EditableTableProps<T extends Record<string, unknown> = Record<string, unknown>> {
12
- columns: EditableColumn<T>[];
11
+ export interface DataTableProps<T extends Record<string, unknown> = Record<string, unknown>> {
12
+ columns: DataTableColumn<T>[];
13
13
  defaultData?: T[];
14
14
  data?: T[];
15
+ rowKey?: string;
15
16
  onChange?: (data: T[]) => void;
16
17
  size?: TableSizes;
18
+ borderColor?: string;
19
+ headerColor?: string;
17
20
  addRowLabel?: string;
18
21
  newRowFactory?: () => T;
19
22
  deletable?: boolean;
@@ -0,0 +1,2 @@
1
+ export { DataTable } from './DataTable';
2
+ export type { DataTableProps, DataTableColumn } from './DataTable.types';
@@ -1,5 +1,5 @@
1
1
  import { TableProps } from './Table.types';
2
- export declare function Table<T extends Record<string, unknown> = Record<string, unknown>>({ columns, data, size, variant, caption, className, style, }: TableProps<T>): import("react/jsx-runtime").JSX.Element;
2
+ export declare function Table<T extends Record<string, unknown> = Record<string, unknown>>({ columns, data, rowKey, size, striped, bordered, stickyHeader, caption, emptyMessage, loading, sort, defaultSort, onSortChange, pageSize, page, defaultPage, totalRows, onPageChange, onChange, borderColor, headerColor, rowColor, stripeColor, className, style, }: TableProps<T>): import("react/jsx-runtime").JSX.Element;
3
3
  export declare namespace Table {
4
4
  var displayName: string;
5
5
  }
@@ -0,0 +1,25 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Table } from './Table';
3
+ declare const meta: Meta<typeof Table>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Table>;
6
+ export declare const Default: Story;
7
+ export declare const Striped: Story;
8
+ export declare const Bordered: Story;
9
+ export declare const StripedAndBordered: Story;
10
+ export declare const Small: Story;
11
+ export declare const Large: Story;
12
+ export declare const WithCaption: Story;
13
+ export declare const WithCustomRender: Story;
14
+ export declare const Sortable: Story;
15
+ export declare const SortableControlled: Story;
16
+ export declare const Loading: Story;
17
+ export declare const Empty: Story;
18
+ export declare const Paginated: Story;
19
+ export declare const PaginatedSortable: Story;
20
+ export declare const StickyHeader: Story;
21
+ export declare const ColumnWidths: Story;
22
+ export declare const CustomBorderColor: Story;
23
+ export declare const CustomHeaderColor: Story;
24
+ export declare const CustomRowColors: Story;
25
+ export declare const FullyCustomized: Story;
@@ -1,18 +1,45 @@
1
1
  import { CSSProperties, ReactNode } from 'react';
2
2
  export type TableSizes = "sm" | "md" | "lg";
3
- export type TableVariants = "default" | "striped" | "bordered";
3
+ export type SortDirection = "asc" | "desc";
4
+ export interface SortState {
5
+ key: string;
6
+ direction: SortDirection;
7
+ }
4
8
  export interface TableColumn<T = Record<string, unknown>> {
5
9
  key: keyof T & string;
6
10
  header: string;
7
11
  width?: string;
12
+ sortable?: boolean;
8
13
  render?: (value: unknown, row: T, rowIndex: number) => ReactNode;
9
14
  }
15
+ export interface TableChangeState {
16
+ sort: SortState | null;
17
+ page: number;
18
+ }
10
19
  export interface TableProps<T extends Record<string, unknown> = Record<string, unknown>> {
11
20
  columns: TableColumn<T>[];
12
21
  data: T[];
22
+ rowKey?: string;
13
23
  size?: TableSizes;
14
- variant?: TableVariants;
24
+ striped?: boolean;
25
+ bordered?: boolean;
26
+ stickyHeader?: boolean;
15
27
  caption?: string;
28
+ emptyMessage?: string;
29
+ loading?: boolean;
30
+ sort?: SortState;
31
+ defaultSort?: SortState;
32
+ onSortChange?: (sort: SortState | null) => void;
33
+ pageSize?: number;
34
+ page?: number;
35
+ defaultPage?: number;
36
+ totalRows?: number;
37
+ onPageChange?: (page: number) => void;
38
+ onChange?: (state: TableChangeState) => void;
39
+ borderColor?: string;
40
+ headerColor?: string;
41
+ rowColor?: string;
42
+ stripeColor?: string;
16
43
  className?: string;
17
44
  style?: CSSProperties;
18
45
  }
@@ -1,2 +1,2 @@
1
1
  export { Table } from './Table';
2
- export type { TableProps, TableColumn, TableSizes, TableVariants } from './Table.types';
2
+ export type { TableProps, TableColumn, TableSizes, SortState, SortDirection, TableChangeState, } from './Table.types';
@@ -0,0 +1,16 @@
1
+ interface UseTablePaginationProps<T> {
2
+ data: T[];
3
+ pageSize?: number;
4
+ page?: number;
5
+ defaultPage?: number;
6
+ totalRows?: number;
7
+ onPageChange?: (page: number) => void;
8
+ }
9
+ export declare function getPageNumbers(current: number, total: number): (number | "...")[];
10
+ export declare function useTablePagination<T>({ data, pageSize, page, defaultPage, totalRows, onPageChange, }: UseTablePaginationProps<T>): {
11
+ activePage: number;
12
+ totalPages: number;
13
+ displayData: T[];
14
+ handlePageChange: (newPage: number) => void;
15
+ };
16
+ export {};
@@ -0,0 +1,13 @@
1
+ import { SortState } from './Table.types';
2
+ interface UseTableSortProps<T> {
3
+ data: T[];
4
+ sort?: SortState;
5
+ defaultSort?: SortState;
6
+ onSortChange?: (sort: SortState | null) => void;
7
+ }
8
+ export declare function useTableSort<T extends Record<string, unknown>>({ data, sort, defaultSort, onSortChange, }: UseTableSortProps<T>): {
9
+ activeSort: SortState | null;
10
+ sortedData: T[];
11
+ handleSort: (key: string) => SortState | null;
12
+ };
13
+ export {};