@bigbinary/neeto-atoms 1.0.4 → 1.0.5

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.
Files changed (26) hide show
  1. package/dist/cjs/index.js +4277 -547
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/components/DataTable/DataTable.d.ts +2 -0
  4. package/dist/components/DataTable/components/BulkSelectCallout.d.ts +8 -0
  5. package/dist/components/DataTable/components/DataTablePagination.d.ts +7 -0
  6. package/dist/components/DataTable/components/EmptyState.d.ts +7 -0
  7. package/dist/components/DataTable/components/HeaderCellMenu.d.ts +19 -0
  8. package/dist/components/DataTable/components/LoadingOverlay.d.ts +1 -0
  9. package/dist/components/DataTable/components/ResizeHandle.d.ts +6 -0
  10. package/dist/components/DataTable/components/SelectionCheckbox.d.ts +7 -0
  11. package/dist/components/DataTable/components/SortIndicator.d.ts +6 -0
  12. package/dist/components/DataTable/constants.d.ts +12 -0
  13. package/dist/components/DataTable/hooks/useColumnOrdering.d.ts +13 -0
  14. package/dist/components/DataTable/hooks/useColumnPinning.d.ts +15 -0
  15. package/dist/components/DataTable/hooks/useColumnVisibility.d.ts +14 -0
  16. package/dist/components/DataTable/hooks/useTablePagination.d.ts +18 -0
  17. package/dist/components/DataTable/hooks/useTableSelection.d.ts +15 -0
  18. package/dist/components/DataTable/hooks/useTableSort.d.ts +11 -0
  19. package/dist/components/DataTable/index.d.ts +8 -0
  20. package/dist/components/DataTable/types.d.ts +69 -0
  21. package/dist/components/DataTable/utils.d.ts +14 -0
  22. package/dist/index.css +2 -1
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.js +4271 -548
  25. package/dist/index.js.map +1 -1
  26. package/package.json +2 -1
@@ -0,0 +1,2 @@
1
+ import type { DataTableProps } from "./types";
2
+ export declare const DataTable: <TData>({ columns, data, getRowId: getRowIdProp, sorting: sortingProp, onSortingChange: onSortingChangeProp, enableSorting, enableURLSort, totalCount, pageSize, currentPage: currentPageProp, onPageChange: onPageChangeProp, enableURLPagination, enableRowSelection: enableRowSelectionProp, selectedRowKeys, onRowSelect, bulkSelectAllRowsProps, enableColumnResize, enableColumnFreeze, columnPinning: columnPinningProp, onColumnPinningChange: onColumnPinningChangeProp, localStorageKeyPrefix, columnVisibility: columnVisibilityProp, onColumnVisibilityChange: onColumnVisibilityChangeProp, onColumnHide: onColumnHideProp, enableColumnReorder, columnOrder: columnOrderProp, onColumnOrderChange: onColumnOrderChangeProp, enableAddColumn, onColumnAdd, onColumnDelete, onColumnUpdate, onMoreActionClick, enableHeaderMenu, loading, fixedHeight, bordered, className, scroll, emptyMessage, onRowClick, allowRowClick, }: DataTableProps<TData>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { BulkSelectAllRowsProps } from "../types";
2
+ interface BulkSelectCalloutProps {
3
+ bulkSelectAllRowsProps: BulkSelectAllRowsProps;
4
+ isAllPageRowsSelected: boolean;
5
+ isBulkAllSelected: boolean;
6
+ }
7
+ export declare const BulkSelectCallout: ({ bulkSelectAllRowsProps, isAllPageRowsSelected, isBulkAllSelected, }: BulkSelectCalloutProps) => import("react/jsx-runtime").JSX.Element | null;
8
+ export {};
@@ -0,0 +1,7 @@
1
+ interface DataTablePaginationProps {
2
+ currentPage: number;
3
+ pageCount: number;
4
+ onPageChange: (page: number) => void;
5
+ }
6
+ export declare const DataTablePagination: ({ currentPage, pageCount, onPageChange, }: DataTablePaginationProps) => import("react/jsx-runtime").JSX.Element | null;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import type React from "react";
2
+ interface EmptyStateProps {
3
+ colSpan: number;
4
+ message?: string | React.ReactNode;
5
+ }
6
+ export declare const EmptyState: ({ colSpan, message, }: EmptyStateProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,19 @@
1
+ import type { Column } from "@tanstack/react-table";
2
+ interface HeaderCellMenuProps<TData> {
3
+ column: Column<TData, unknown>;
4
+ enableAddColumn?: boolean;
5
+ enableColumnFreeze?: boolean;
6
+ isColumnPinned?: boolean;
7
+ canMoveLeft?: boolean;
8
+ canMoveRight?: boolean;
9
+ onSort?: (columnId: string, desc: boolean) => void;
10
+ onHideColumn?: (columnId: string) => void;
11
+ onTogglePin?: (columnId: string) => void;
12
+ onAddColumn?: (position: number) => void;
13
+ onDeleteColumn?: (columnId: string) => void;
14
+ onMoveColumn?: (columnId: string, direction: -1 | 1) => void;
15
+ onMoreActionClick?: (actionType: string, columnId: string) => void;
16
+ columnIndex: number;
17
+ }
18
+ export declare const HeaderCellMenu: <TData>({ column, enableAddColumn, enableColumnFreeze, isColumnPinned, canMoveLeft, canMoveRight, onSort, onHideColumn, onTogglePin, onAddColumn, onDeleteColumn, onMoveColumn, onMoreActionClick, columnIndex, }: HeaderCellMenuProps<TData>) => import("react/jsx-runtime").JSX.Element | null;
19
+ export {};
@@ -0,0 +1 @@
1
+ export declare const LoadingOverlay: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import type { Header } from "@tanstack/react-table";
2
+ interface ResizeHandleProps<TData> {
3
+ header: Header<TData, unknown>;
4
+ }
5
+ export declare const ResizeHandle: <TData>({ header }: ResizeHandleProps<TData>) => import("react/jsx-runtime").JSX.Element | null;
6
+ export {};
@@ -0,0 +1,7 @@
1
+ interface SelectionCheckboxProps {
2
+ checked: boolean | "indeterminate";
3
+ onCheckedChange: (checked: boolean) => void;
4
+ ariaLabel?: string;
5
+ }
6
+ export declare const SelectionCheckbox: ({ checked, onCheckedChange, ariaLabel, }: SelectionCheckboxProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { Column } from "@tanstack/react-table";
2
+ interface SortIndicatorProps<TData> {
3
+ column: Column<TData, unknown>;
4
+ }
5
+ export declare const SortIndicator: <TData>({ column, }: SortIndicatorProps<TData>) => import("react/jsx-runtime").JSX.Element | null;
6
+ export {};
@@ -0,0 +1,12 @@
1
+ export declare const DEFAULT_PAGE_SIZE = 30;
2
+ export declare const URL_SORT_PARAMS: {
3
+ readonly SORT_BY: "sort_by";
4
+ readonly ORDER_BY: "order_by";
5
+ };
6
+ export declare const URL_PAGE_PARAM = "page";
7
+ export declare const SORT_DIRECTIONS: {
8
+ readonly ASC: "asc";
9
+ readonly DESC: "desc";
10
+ };
11
+ export declare const STORAGE_KEY_PREFIX = "NEETOUI";
12
+ export declare const STORAGE_KEY_SUFFIX = "FIXED_COLUMNS";
@@ -0,0 +1,13 @@
1
+ import type { ColumnOrderState, OnChangeFn } from "@tanstack/react-table";
2
+ interface UseColumnOrderingOptions {
3
+ enabled?: boolean;
4
+ columnOrder?: ColumnOrderState;
5
+ onColumnOrderChange?: OnChangeFn<ColumnOrderState>;
6
+ }
7
+ export declare const useColumnOrdering: ({ enabled, columnOrder: controlledOrder, onColumnOrderChange: controlledOnChange, }: UseColumnOrderingOptions) => {
8
+ columnOrder: ColumnOrderState;
9
+ onColumnOrderChange: OnChangeFn<ColumnOrderState>;
10
+ moveColumn: (columnId: string, direction: -1 | 1) => void;
11
+ reorderColumn: (fromId: string, toId: string) => void;
12
+ };
13
+ export {};
@@ -0,0 +1,15 @@
1
+ import type { ColumnPinningState, OnChangeFn } from "@tanstack/react-table";
2
+ interface UseColumnPinningOptions {
3
+ enabled?: boolean;
4
+ columnPinning?: ColumnPinningState;
5
+ onColumnPinningChange?: OnChangeFn<ColumnPinningState>;
6
+ localStorageKeyPrefix?: string;
7
+ initialPinnedColumns?: string[];
8
+ }
9
+ export declare const useColumnPinning: ({ enabled, columnPinning: controlledPinning, onColumnPinningChange: controlledOnChange, localStorageKeyPrefix, initialPinnedColumns, }: UseColumnPinningOptions) => {
10
+ columnPinning: ColumnPinningState;
11
+ onColumnPinningChange: OnChangeFn<ColumnPinningState>;
12
+ toggleColumnPin: (columnId: string) => void;
13
+ isColumnPinned: (columnId: string) => boolean;
14
+ };
15
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { OnChangeFn, VisibilityState } from "@tanstack/react-table";
2
+ interface UseColumnVisibilityOptions {
3
+ columnVisibility?: VisibilityState;
4
+ onColumnVisibilityChange?: OnChangeFn<VisibilityState>;
5
+ onColumnHide?: (columnId: string) => void;
6
+ }
7
+ export declare const useColumnVisibility: ({ columnVisibility: controlledVisibility, onColumnVisibilityChange: controlledOnChange, onColumnHide, }: UseColumnVisibilityOptions) => {
8
+ columnVisibility: VisibilityState;
9
+ onColumnVisibilityChange: OnChangeFn<VisibilityState>;
10
+ hideColumn: (columnId: string) => void;
11
+ showColumn: (columnId: string) => void;
12
+ toggleColumnVisibility: (columnId: string) => void;
13
+ };
14
+ export {};
@@ -0,0 +1,18 @@
1
+ interface UseTablePaginationOptions {
2
+ totalCount?: number;
3
+ pageSize?: number;
4
+ currentPage?: number;
5
+ onPageChange?: (page: number) => void;
6
+ enableURLPagination?: boolean;
7
+ }
8
+ export declare const useTablePagination: ({ totalCount, pageSize, currentPage: controlledPage, onPageChange: controlledOnPageChange, enableURLPagination, }: UseTablePaginationOptions) => {
9
+ currentPage: number;
10
+ pageCount: number;
11
+ pageSize: number;
12
+ paginationState: {
13
+ pageIndex: number;
14
+ pageSize: number;
15
+ };
16
+ onPageChange: (page: number) => void;
17
+ };
18
+ export {};
@@ -0,0 +1,15 @@
1
+ import type { ColumnDef, OnChangeFn, Row, RowSelectionState } from "@tanstack/react-table";
2
+ interface UseTableSelectionOptions<TData> {
3
+ enableRowSelection?: boolean | ((row: Row<TData>) => boolean);
4
+ selectedRowKeys?: string[];
5
+ onRowSelect?: (keys: string[], rows: TData[]) => void;
6
+ data: TData[];
7
+ getRowId: (row: TData) => string;
8
+ }
9
+ export declare const useTableSelection: <TData>({ enableRowSelection, selectedRowKeys, onRowSelect, data, getRowId, }: UseTableSelectionOptions<TData>) => {
10
+ rowSelection: RowSelectionState;
11
+ onRowSelectionChange: OnChangeFn<RowSelectionState>;
12
+ selectionColumn: ColumnDef<TData, unknown> | null;
13
+ enableRowSelection: boolean | ((row: Row<TData>) => boolean);
14
+ };
15
+ export {};
@@ -0,0 +1,11 @@
1
+ import type { SortingState, OnChangeFn } from "@tanstack/react-table";
2
+ interface UseTableSortOptions {
3
+ sorting?: SortingState;
4
+ onSortingChange?: OnChangeFn<SortingState>;
5
+ enableURLSort?: boolean;
6
+ }
7
+ export declare const useTableSort: ({ sorting: controlledSorting, onSortingChange: controlledOnSortingChange, enableURLSort, }: UseTableSortOptions) => {
8
+ sorting: SortingState;
9
+ onSortingChange: OnChangeFn<SortingState>;
10
+ };
11
+ export {};
@@ -0,0 +1,8 @@
1
+ export { DataTable } from "./DataTable";
2
+ export { useTableSort } from "./hooks/useTableSort";
3
+ export { useTablePagination } from "./hooks/useTablePagination";
4
+ export { useTableSelection } from "./hooks/useTableSelection";
5
+ export { useColumnPinning } from "./hooks/useColumnPinning";
6
+ export { useColumnVisibility } from "./hooks/useColumnVisibility";
7
+ export { useColumnOrdering } from "./hooks/useColumnOrdering";
8
+ export type { DataTableProps, BulkSelectAllRowsProps, DataTableColumnMeta, ColumnMoreAction, } from "./types";
@@ -0,0 +1,69 @@
1
+ import type { ColumnDef, ColumnOrderState, ColumnPinningState, OnChangeFn, Row, SortingState, VisibilityState } from "@tanstack/react-table";
2
+ export interface BulkSelectAllRowsProps {
3
+ selectAllRowMessage: string;
4
+ selectAllRowButtonLabel: string;
5
+ setBulkSelectedAllRows: (value: boolean) => void;
6
+ allRowsSelectedMessage?: string;
7
+ clearSelectionButtonLabel?: string;
8
+ }
9
+ export interface ColumnMoreAction {
10
+ type: string;
11
+ label: string;
12
+ icon?: React.ComponentType<{
13
+ className?: string;
14
+ size?: number;
15
+ }>;
16
+ }
17
+ export interface DataTableColumnMeta {
18
+ isHidable?: boolean;
19
+ isDeletable?: boolean;
20
+ moreActions?: ColumnMoreAction[];
21
+ description?: string;
22
+ align?: "left" | "center" | "right";
23
+ }
24
+ export interface DataTableProps<TData> {
25
+ columns: ColumnDef<TData, unknown>[];
26
+ data: TData[];
27
+ getRowId?: (row: TData) => string;
28
+ sorting?: SortingState;
29
+ onSortingChange?: OnChangeFn<SortingState>;
30
+ enableSorting?: boolean;
31
+ enableURLSort?: boolean;
32
+ totalCount?: number;
33
+ pageSize?: number;
34
+ currentPage?: number;
35
+ onPageChange?: (page: number) => void;
36
+ enableURLPagination?: boolean;
37
+ enableRowSelection?: boolean | ((row: Row<TData>) => boolean);
38
+ selectedRowKeys?: string[];
39
+ onRowSelect?: (keys: string[], rows: TData[]) => void;
40
+ bulkSelectAllRowsProps?: BulkSelectAllRowsProps;
41
+ enableColumnResize?: boolean;
42
+ enableColumnFreeze?: boolean;
43
+ columnPinning?: ColumnPinningState;
44
+ onColumnPinningChange?: OnChangeFn<ColumnPinningState>;
45
+ localStorageKeyPrefix?: string;
46
+ columnVisibility?: VisibilityState;
47
+ onColumnVisibilityChange?: OnChangeFn<VisibilityState>;
48
+ onColumnHide?: (columnId: string) => void;
49
+ enableColumnReorder?: boolean;
50
+ columnOrder?: ColumnOrderState;
51
+ onColumnOrderChange?: OnChangeFn<ColumnOrderState>;
52
+ enableAddColumn?: boolean;
53
+ onColumnAdd?: (position: number) => void;
54
+ onColumnDelete?: (columnId: string) => void;
55
+ onColumnUpdate?: (columns: ColumnDef<TData, unknown>[]) => void;
56
+ onMoreActionClick?: (actionType: string, columnId: string) => void;
57
+ enableHeaderMenu?: boolean;
58
+ loading?: boolean;
59
+ fixedHeight?: boolean;
60
+ bordered?: boolean;
61
+ className?: string;
62
+ scroll?: {
63
+ x?: number | string;
64
+ y?: number | string;
65
+ };
66
+ emptyMessage?: string | React.ReactNode;
67
+ onRowClick?: (event: React.MouseEvent, row: TData, index: number) => void;
68
+ allowRowClick?: boolean;
69
+ }
@@ -0,0 +1,14 @@
1
+ import type { SortingState } from "@tanstack/react-table";
2
+ import type { RowSelectionState } from "@tanstack/react-table";
3
+ export declare const getSearchParams: () => URLSearchParams;
4
+ export declare const readSortFromURL: () => SortingState;
5
+ export declare const writeSortToURL: (sorting: SortingState) => void;
6
+ export declare const readPageFromURL: () => number;
7
+ export declare const writePageToURL: (page: number) => void;
8
+ export declare const keysToRowSelection: (keys: string[]) => RowSelectionState;
9
+ export declare const rowSelectionToKeys: (selection: RowSelectionState) => string[];
10
+ export declare const hashPathname: () => string;
11
+ export declare const getStorageKey: (prefix?: string) => string;
12
+ export declare const readFromLocalStorage: (key: string) => string[];
13
+ export declare const writeToLocalStorage: (key: string, value: string[]) => void;
14
+ export declare const getPageNumbers: (current: number, total: number) => (number | "ellipsis")[];
package/dist/index.css CHANGED
@@ -4,6 +4,7 @@
4
4
  @custom-variant dark (&:is(.dark *));
5
5
 
6
6
  @theme inline {
7
+ --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
7
8
  --radius-sm: calc(var(--radius) - 4px);
8
9
  --radius-md: calc(var(--radius) - 2px);
9
10
  --radius-lg: var(--radius);
@@ -130,6 +131,6 @@
130
131
  @apply border-border outline-ring/50;
131
132
  }
132
133
  body {
133
- @apply bg-background text-foreground antialiased;
134
+ @apply bg-background text-foreground !font-sans antialiased;
134
135
  }
135
136
  }
package/dist/index.d.ts CHANGED
@@ -13,6 +13,7 @@ export * from "./components/Carousel";
13
13
  export * from "./components/Chart";
14
14
  export * from "./components/Checkbox";
15
15
  export * from "./components/Combobox";
16
+ export * from "./components/DataTable";
16
17
  export * from "./components/Collapsible";
17
18
  export * from "./components/Command";
18
19
  export * from "./components/ContextMenu";