@superdangerous/app-framework 4.15.2 → 4.15.3
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.
- package/package.json +1 -1
- package/ui/data-table/hooks/useColumnOrder.ts +6 -2
- package/ui/dist/index.d.mts +418 -1
- package/ui/dist/index.d.ts +418 -1
- package/ui/dist/index.js +37 -37
- package/ui/dist/index.js.map +1 -1
- package/ui/dist/index.mjs +37 -37
- package/ui/dist/index.mjs.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@superdangerous/app-framework",
|
|
3
|
-
"version": "4.15.
|
|
3
|
+
"version": "4.15.3",
|
|
4
4
|
"description": "Opinionated TypeScript framework for structured vibecoding - building internal web and desktop apps with batteries included",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -82,7 +82,9 @@ export function useColumnOrder({
|
|
|
82
82
|
setColumnOrder(prev => {
|
|
83
83
|
const newOrder = [...prev];
|
|
84
84
|
const [removed] = newOrder.splice(fromIndex, 1);
|
|
85
|
-
|
|
85
|
+
if (removed !== undefined) {
|
|
86
|
+
newOrder.splice(toIndex, 0, removed);
|
|
87
|
+
}
|
|
86
88
|
return newOrder;
|
|
87
89
|
});
|
|
88
90
|
}, []);
|
|
@@ -100,7 +102,9 @@ export function useColumnOrder({
|
|
|
100
102
|
|
|
101
103
|
const newOrder = [...prev];
|
|
102
104
|
const [removed] = newOrder.splice(currentIndex, 1);
|
|
103
|
-
|
|
105
|
+
if (removed !== undefined) {
|
|
106
|
+
newOrder.splice(newIndex, 0, removed);
|
|
107
|
+
}
|
|
104
108
|
return newOrder;
|
|
105
109
|
});
|
|
106
110
|
}, []);
|
package/ui/dist/index.d.mts
CHANGED
|
@@ -1420,4 +1420,421 @@ declare const statusStyles: {
|
|
|
1420
1420
|
};
|
|
1421
1421
|
};
|
|
1422
1422
|
|
|
1423
|
-
|
|
1423
|
+
interface UsePaginationOptions<T> {
|
|
1424
|
+
data: T[];
|
|
1425
|
+
pageSize?: number;
|
|
1426
|
+
storageKey?: string;
|
|
1427
|
+
}
|
|
1428
|
+
interface UsePaginationResult<T> {
|
|
1429
|
+
paginatedData: T[];
|
|
1430
|
+
page: number;
|
|
1431
|
+
pageSize: number;
|
|
1432
|
+
totalPages: number;
|
|
1433
|
+
totalItems: number;
|
|
1434
|
+
setPage: (page: number) => void;
|
|
1435
|
+
setPageSize: (size: number) => void;
|
|
1436
|
+
nextPage: () => void;
|
|
1437
|
+
prevPage: () => void;
|
|
1438
|
+
firstPage: () => void;
|
|
1439
|
+
lastPage: () => void;
|
|
1440
|
+
startIndex: number;
|
|
1441
|
+
endIndex: number;
|
|
1442
|
+
canGoNext: boolean;
|
|
1443
|
+
canGoPrev: boolean;
|
|
1444
|
+
pageSizeOptions: number[];
|
|
1445
|
+
}
|
|
1446
|
+
declare function usePagination<T>({ data, pageSize: initialPageSize, storageKey, }: UsePaginationOptions<T>): UsePaginationResult<T>;
|
|
1447
|
+
|
|
1448
|
+
interface ColumnConfig$1 {
|
|
1449
|
+
id: string;
|
|
1450
|
+
label: string;
|
|
1451
|
+
defaultVisible?: boolean;
|
|
1452
|
+
locked?: boolean;
|
|
1453
|
+
}
|
|
1454
|
+
interface ColumnVisibilityState {
|
|
1455
|
+
[key: string]: boolean;
|
|
1456
|
+
}
|
|
1457
|
+
interface UseColumnVisibilityOptions {
|
|
1458
|
+
columns: ColumnConfig$1[];
|
|
1459
|
+
storageKey: string;
|
|
1460
|
+
}
|
|
1461
|
+
interface UseColumnVisibilityReturn {
|
|
1462
|
+
visibleColumns: ColumnVisibilityState;
|
|
1463
|
+
isColumnVisible: (columnId: string) => boolean;
|
|
1464
|
+
toggleColumn: (columnId: string) => void;
|
|
1465
|
+
showAllColumns: () => void;
|
|
1466
|
+
hideAllColumns: () => void;
|
|
1467
|
+
columns: ColumnConfig$1[];
|
|
1468
|
+
}
|
|
1469
|
+
declare function useColumnVisibility({ columns, storageKey, }: UseColumnVisibilityOptions): UseColumnVisibilityReturn;
|
|
1470
|
+
|
|
1471
|
+
interface ColumnConfig {
|
|
1472
|
+
key: string;
|
|
1473
|
+
minWidth?: number;
|
|
1474
|
+
maxWidth?: number;
|
|
1475
|
+
defaultWidth?: number;
|
|
1476
|
+
}
|
|
1477
|
+
interface UseResizableColumnsOptions {
|
|
1478
|
+
tableId: string;
|
|
1479
|
+
columns: ColumnConfig[];
|
|
1480
|
+
storageKey?: string;
|
|
1481
|
+
}
|
|
1482
|
+
interface ResizableColumnResult {
|
|
1483
|
+
widths: Record<string, number>;
|
|
1484
|
+
isResizing: boolean;
|
|
1485
|
+
totalWidth: number;
|
|
1486
|
+
getResizeHandleProps: (columnKey: string) => {
|
|
1487
|
+
onPointerDown: (e: React.PointerEvent) => void;
|
|
1488
|
+
onMouseDown: (e: React.MouseEvent) => void;
|
|
1489
|
+
draggable: boolean;
|
|
1490
|
+
onDragStart: (e: React.DragEvent) => void;
|
|
1491
|
+
className: string;
|
|
1492
|
+
'data-resizing': boolean;
|
|
1493
|
+
};
|
|
1494
|
+
getColumnStyle: (columnKey: string) => React.CSSProperties;
|
|
1495
|
+
getTableStyle: () => React.CSSProperties;
|
|
1496
|
+
resetToDefaults: () => void;
|
|
1497
|
+
}
|
|
1498
|
+
declare function useResizableColumns({ tableId, columns, storageKey, }: UseResizableColumnsOptions): ResizableColumnResult;
|
|
1499
|
+
|
|
1500
|
+
interface ColumnOrderConfig {
|
|
1501
|
+
id: string;
|
|
1502
|
+
label: string;
|
|
1503
|
+
locked?: boolean;
|
|
1504
|
+
}
|
|
1505
|
+
interface UseColumnOrderOptions {
|
|
1506
|
+
storageKey: string;
|
|
1507
|
+
defaultOrder: string[];
|
|
1508
|
+
}
|
|
1509
|
+
interface UseColumnOrderReturn {
|
|
1510
|
+
columnOrder: string[];
|
|
1511
|
+
moveColumn: (fromIndex: number, toIndex: number) => void;
|
|
1512
|
+
moveColumnById: (columnId: string, direction: 'left' | 'right') => void;
|
|
1513
|
+
resetOrder: () => void;
|
|
1514
|
+
getOrderedColumns: <T extends {
|
|
1515
|
+
id: string;
|
|
1516
|
+
}>(columns: T[]) => T[];
|
|
1517
|
+
}
|
|
1518
|
+
/**
|
|
1519
|
+
* Hook for managing column order with localStorage persistence
|
|
1520
|
+
*/
|
|
1521
|
+
declare function useColumnOrder({ storageKey, defaultOrder, }: UseColumnOrderOptions): UseColumnOrderReturn;
|
|
1522
|
+
/**
|
|
1523
|
+
* Drag and drop helpers for column reordering
|
|
1524
|
+
*/
|
|
1525
|
+
interface DragState {
|
|
1526
|
+
isDragging: boolean;
|
|
1527
|
+
draggedId: string | null;
|
|
1528
|
+
dropIndex: number | null;
|
|
1529
|
+
}
|
|
1530
|
+
declare function useColumnDragDrop(columnOrder: string[], moveColumn: (from: number, to: number) => void, lockedColumns?: string[]): {
|
|
1531
|
+
dragState: DragState;
|
|
1532
|
+
getDragHandleProps: (columnId: string) => {
|
|
1533
|
+
draggable: boolean;
|
|
1534
|
+
onDragStart: (e: React.DragEvent) => void;
|
|
1535
|
+
onDragOver: (e: React.DragEvent) => void;
|
|
1536
|
+
onDrop: (e: React.DragEvent) => void;
|
|
1537
|
+
onDragEnd: () => void;
|
|
1538
|
+
};
|
|
1539
|
+
showDropIndicator: (columnId: string) => boolean;
|
|
1540
|
+
};
|
|
1541
|
+
|
|
1542
|
+
/**
|
|
1543
|
+
* Column width configuration
|
|
1544
|
+
*/
|
|
1545
|
+
interface ColumnWidth {
|
|
1546
|
+
default: number;
|
|
1547
|
+
min: number;
|
|
1548
|
+
max?: number;
|
|
1549
|
+
}
|
|
1550
|
+
/**
|
|
1551
|
+
* Column visibility configuration
|
|
1552
|
+
*/
|
|
1553
|
+
interface ColumnVisibility$1 {
|
|
1554
|
+
default: boolean;
|
|
1555
|
+
locked?: boolean;
|
|
1556
|
+
}
|
|
1557
|
+
/**
|
|
1558
|
+
* Props passed to header cell render function
|
|
1559
|
+
*/
|
|
1560
|
+
interface HeaderCellProps {
|
|
1561
|
+
columnId: string;
|
|
1562
|
+
isSorted: boolean;
|
|
1563
|
+
sortDirection?: 'asc' | 'desc';
|
|
1564
|
+
}
|
|
1565
|
+
/**
|
|
1566
|
+
* Props passed to cell render function
|
|
1567
|
+
*/
|
|
1568
|
+
interface CellProps {
|
|
1569
|
+
columnId: string;
|
|
1570
|
+
isDragging: boolean;
|
|
1571
|
+
}
|
|
1572
|
+
/**
|
|
1573
|
+
* Column definition for DataTable
|
|
1574
|
+
*/
|
|
1575
|
+
interface ColumnDef<T> {
|
|
1576
|
+
/** Unique column identifier */
|
|
1577
|
+
id: string;
|
|
1578
|
+
/** Header content - string or render function */
|
|
1579
|
+
header: string | ((props: HeaderCellProps) => ReactNode);
|
|
1580
|
+
/** Cell content render function */
|
|
1581
|
+
cell: (item: T, props: CellProps) => ReactNode;
|
|
1582
|
+
/** Key to use for sorting (if sortable) */
|
|
1583
|
+
sortKey?: string;
|
|
1584
|
+
/** Width configuration */
|
|
1585
|
+
width?: ColumnWidth;
|
|
1586
|
+
/** Visibility configuration */
|
|
1587
|
+
visibility?: ColumnVisibility$1;
|
|
1588
|
+
/** Additional CSS class for cells */
|
|
1589
|
+
className?: string;
|
|
1590
|
+
/** Whether this column should use column style from resize hook */
|
|
1591
|
+
resizable?: boolean;
|
|
1592
|
+
}
|
|
1593
|
+
/**
|
|
1594
|
+
* External pagination state (from usePagination hook)
|
|
1595
|
+
*/
|
|
1596
|
+
interface ExternalPaginationState<T> {
|
|
1597
|
+
paginatedData: T[];
|
|
1598
|
+
page: number;
|
|
1599
|
+
pageSize: number;
|
|
1600
|
+
totalPages: number;
|
|
1601
|
+
totalItems: number;
|
|
1602
|
+
startIndex: number;
|
|
1603
|
+
endIndex: number;
|
|
1604
|
+
canGoNext: boolean;
|
|
1605
|
+
canGoPrev: boolean;
|
|
1606
|
+
pageSizeOptions: number[];
|
|
1607
|
+
setPage: (page: number) => void;
|
|
1608
|
+
setPageSize: (size: number) => void;
|
|
1609
|
+
nextPage: () => void;
|
|
1610
|
+
prevPage: () => void;
|
|
1611
|
+
}
|
|
1612
|
+
/**
|
|
1613
|
+
* DataTable props
|
|
1614
|
+
*/
|
|
1615
|
+
interface DataTableProps<T> {
|
|
1616
|
+
/** Data array to display */
|
|
1617
|
+
data: T[];
|
|
1618
|
+
/** Column definitions */
|
|
1619
|
+
columns: ColumnDef<T>[];
|
|
1620
|
+
/** Storage key for persisting table state (column widths, order, visibility) */
|
|
1621
|
+
storageKey: string;
|
|
1622
|
+
/** Function to get unique ID from item */
|
|
1623
|
+
getRowId: (item: T) => string;
|
|
1624
|
+
/** Enable row selection with checkboxes */
|
|
1625
|
+
selectable?: boolean;
|
|
1626
|
+
/** Set of selected row IDs */
|
|
1627
|
+
selectedIds?: Set<string>;
|
|
1628
|
+
/** Callback when selection changes */
|
|
1629
|
+
onSelectionChange?: (ids: Set<string>) => void;
|
|
1630
|
+
/** Callback when row is clicked */
|
|
1631
|
+
onRowClick?: (item: T) => void;
|
|
1632
|
+
/** Callback when row is right-clicked (for context menu) */
|
|
1633
|
+
onRowContextMenu?: (item: T, position: {
|
|
1634
|
+
x: number;
|
|
1635
|
+
y: number;
|
|
1636
|
+
}) => void;
|
|
1637
|
+
/** Current sort field */
|
|
1638
|
+
sortField?: string;
|
|
1639
|
+
/** Current sort order */
|
|
1640
|
+
sortOrder?: 'asc' | 'desc';
|
|
1641
|
+
/** Callback when sort changes */
|
|
1642
|
+
onSort?: (field: string) => void;
|
|
1643
|
+
/** Render function for actions column (always last, sticky) */
|
|
1644
|
+
actionsColumn?: (item: T) => ReactNode;
|
|
1645
|
+
/** Width for actions column */
|
|
1646
|
+
actionsColumnWidth?: number;
|
|
1647
|
+
/** Page size for pagination (used when no external pagination provided) */
|
|
1648
|
+
pageSize?: number;
|
|
1649
|
+
/** External pagination state from usePagination hook (overrides internal pagination) */
|
|
1650
|
+
pagination?: ExternalPaginationState<T>;
|
|
1651
|
+
/** Hide the built-in pagination controls (use when pagination is shown elsewhere) */
|
|
1652
|
+
hidePagination?: boolean;
|
|
1653
|
+
/** Additional CSS class for table container */
|
|
1654
|
+
className?: string;
|
|
1655
|
+
/** Function to compute row CSS class */
|
|
1656
|
+
rowClassName?: (item: T) => string;
|
|
1657
|
+
/** Enable header right-click for column visibility menu */
|
|
1658
|
+
enableHeaderContextMenu?: boolean;
|
|
1659
|
+
/** Columns that cannot be reordered */
|
|
1660
|
+
lockedColumns?: string[];
|
|
1661
|
+
/** Default column order (if not persisted) */
|
|
1662
|
+
defaultColumnOrder?: string[];
|
|
1663
|
+
/** Show loading indicator */
|
|
1664
|
+
loading?: boolean;
|
|
1665
|
+
/** Content to show when no data */
|
|
1666
|
+
emptyState?: ReactNode;
|
|
1667
|
+
}
|
|
1668
|
+
/**
|
|
1669
|
+
* Column config for visibility hook (for compatibility)
|
|
1670
|
+
*/
|
|
1671
|
+
interface ColumnConfigCompat {
|
|
1672
|
+
id: string;
|
|
1673
|
+
label: string;
|
|
1674
|
+
defaultVisible?: boolean;
|
|
1675
|
+
locked?: boolean;
|
|
1676
|
+
}
|
|
1677
|
+
/**
|
|
1678
|
+
* Column config for resize hook (for compatibility)
|
|
1679
|
+
*/
|
|
1680
|
+
interface ColumnSizeConfig {
|
|
1681
|
+
key: string;
|
|
1682
|
+
defaultWidth: number;
|
|
1683
|
+
minWidth: number;
|
|
1684
|
+
maxWidth?: number;
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
/**
|
|
1688
|
+
* DataTable - Generic data table with full feature set
|
|
1689
|
+
*
|
|
1690
|
+
* Features:
|
|
1691
|
+
* - Column resizing (drag handles)
|
|
1692
|
+
* - Column reordering (drag-drop)
|
|
1693
|
+
* - Column visibility toggle
|
|
1694
|
+
* - Row selection with checkboxes
|
|
1695
|
+
* - Sorting
|
|
1696
|
+
* - Pagination
|
|
1697
|
+
* - Sticky actions column
|
|
1698
|
+
* - Context menu support
|
|
1699
|
+
* - Header context menu for column visibility
|
|
1700
|
+
*/
|
|
1701
|
+
declare function DataTable<T>({ data, columns, storageKey, getRowId, selectable, selectedIds, onSelectionChange, onRowClick, onRowContextMenu, sortField, sortOrder, onSort, actionsColumn, actionsColumnWidth, pageSize, pagination: externalPagination, hidePagination, className, rowClassName, enableHeaderContextMenu, lockedColumns, defaultColumnOrder, loading, emptyState, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
|
|
1702
|
+
|
|
1703
|
+
/**
|
|
1704
|
+
* PaginationControls - Compact inline pagination for table headers
|
|
1705
|
+
*
|
|
1706
|
+
* A condensed version of pagination controls designed to sit alongside
|
|
1707
|
+
* search/filter controls in a table header bar.
|
|
1708
|
+
*/
|
|
1709
|
+
interface PaginationControlsProps {
|
|
1710
|
+
page: number;
|
|
1711
|
+
pageSize: number;
|
|
1712
|
+
totalPages: number;
|
|
1713
|
+
totalItems: number;
|
|
1714
|
+
startIndex: number;
|
|
1715
|
+
endIndex: number;
|
|
1716
|
+
canGoNext: boolean;
|
|
1717
|
+
canGoPrev: boolean;
|
|
1718
|
+
pageSizeOptions: number[];
|
|
1719
|
+
setPage: (page: number) => void;
|
|
1720
|
+
setPageSize: (size: number) => void;
|
|
1721
|
+
nextPage: () => void;
|
|
1722
|
+
prevPage: () => void;
|
|
1723
|
+
className?: string;
|
|
1724
|
+
}
|
|
1725
|
+
declare function PaginationControls({ page, pageSize, totalPages, totalItems, startIndex, endIndex, canGoNext, canGoPrev, pageSizeOptions, setPage: _setPage, setPageSize, nextPage, prevPage, className, }: PaginationControlsProps): react_jsx_runtime.JSX.Element | null;
|
|
1726
|
+
|
|
1727
|
+
interface FilterOption$1 {
|
|
1728
|
+
id: string;
|
|
1729
|
+
label: string;
|
|
1730
|
+
render: () => React__default.ReactNode;
|
|
1731
|
+
}
|
|
1732
|
+
interface DataTablePageProps {
|
|
1733
|
+
/** Page title */
|
|
1734
|
+
title: string;
|
|
1735
|
+
/** Page description */
|
|
1736
|
+
description?: string;
|
|
1737
|
+
/** Search term */
|
|
1738
|
+
search?: string;
|
|
1739
|
+
/** Search change handler */
|
|
1740
|
+
onSearchChange?: (value: string) => void;
|
|
1741
|
+
/** Search placeholder text */
|
|
1742
|
+
searchPlaceholder?: string;
|
|
1743
|
+
/** Filter options for popover */
|
|
1744
|
+
filters?: FilterOption$1[];
|
|
1745
|
+
/** Number of active filters */
|
|
1746
|
+
activeFilterCount?: number;
|
|
1747
|
+
/** Clear all filters handler */
|
|
1748
|
+
onClearFilters?: () => void;
|
|
1749
|
+
/** Pagination props from usePagination hook */
|
|
1750
|
+
pagination?: PaginationControlsProps;
|
|
1751
|
+
/** Action buttons to show in the header */
|
|
1752
|
+
actions?: React__default.ReactNode;
|
|
1753
|
+
/** Content before the table (e.g., BatchActionsBar) */
|
|
1754
|
+
beforeTable?: React__default.ReactNode;
|
|
1755
|
+
/** The DataTable component */
|
|
1756
|
+
children: React__default.ReactNode;
|
|
1757
|
+
/** Additional class for the container */
|
|
1758
|
+
className?: string;
|
|
1759
|
+
/** Whether to show a loading state */
|
|
1760
|
+
loading?: boolean;
|
|
1761
|
+
/** Loading component to show */
|
|
1762
|
+
loadingComponent?: React__default.ReactNode;
|
|
1763
|
+
}
|
|
1764
|
+
declare function DataTablePage({ title, description, search, onSearchChange, searchPlaceholder, filters, activeFilterCount, onClearFilters, pagination, actions, beforeTable, children, className, loading, loadingComponent, }: DataTablePageProps): react_jsx_runtime.JSX.Element;
|
|
1765
|
+
|
|
1766
|
+
interface PaginationProps {
|
|
1767
|
+
page: number;
|
|
1768
|
+
pageSize: number;
|
|
1769
|
+
totalPages: number;
|
|
1770
|
+
totalItems: number;
|
|
1771
|
+
startIndex: number;
|
|
1772
|
+
endIndex: number;
|
|
1773
|
+
canGoNext: boolean;
|
|
1774
|
+
canGoPrev: boolean;
|
|
1775
|
+
pageSizeOptions: number[];
|
|
1776
|
+
onPageChange: (page: number) => void;
|
|
1777
|
+
onPageSizeChange: (size: number) => void;
|
|
1778
|
+
onNextPage: () => void;
|
|
1779
|
+
onPrevPage: () => void;
|
|
1780
|
+
onFirstPage: () => void;
|
|
1781
|
+
onLastPage: () => void;
|
|
1782
|
+
className?: string;
|
|
1783
|
+
}
|
|
1784
|
+
declare function Pagination({ page, pageSize, totalPages, totalItems, startIndex, endIndex, canGoNext, canGoPrev, pageSizeOptions, onPageChange, onPageSizeChange, onNextPage, onPrevPage, onFirstPage, onLastPage, className, }: PaginationProps): react_jsx_runtime.JSX.Element | null;
|
|
1785
|
+
|
|
1786
|
+
interface BatchActionsBarProps {
|
|
1787
|
+
/** Number of selected items */
|
|
1788
|
+
selectedCount: number;
|
|
1789
|
+
/** Callback to clear selection */
|
|
1790
|
+
onClear: () => void;
|
|
1791
|
+
/** Action buttons to display on the right side */
|
|
1792
|
+
children: ReactNode;
|
|
1793
|
+
/** Label for the selected items (default: "item"/"items") */
|
|
1794
|
+
itemLabel?: string;
|
|
1795
|
+
/** Additional CSS classes */
|
|
1796
|
+
className?: string;
|
|
1797
|
+
}
|
|
1798
|
+
/**
|
|
1799
|
+
* A horizontal bar that appears when items are selected,
|
|
1800
|
+
* showing the count and providing batch action buttons.
|
|
1801
|
+
*/
|
|
1802
|
+
declare function BatchActionsBar({ selectedCount, onClear, children, itemLabel, className, }: BatchActionsBarProps): react_jsx_runtime.JSX.Element | null;
|
|
1803
|
+
|
|
1804
|
+
interface ColumnVisibilityProps {
|
|
1805
|
+
columns: ColumnConfig$1[];
|
|
1806
|
+
isColumnVisible: (columnId: string) => boolean;
|
|
1807
|
+
toggleColumn: (columnId: string) => void;
|
|
1808
|
+
showAllColumns: () => void;
|
|
1809
|
+
hideAllColumns: () => void;
|
|
1810
|
+
}
|
|
1811
|
+
declare function ColumnVisibility({ columns, isColumnVisible, toggleColumn, showAllColumns, hideAllColumns, }: ColumnVisibilityProps): react_jsx_runtime.JSX.Element;
|
|
1812
|
+
|
|
1813
|
+
interface FilterOption {
|
|
1814
|
+
id: string;
|
|
1815
|
+
label: string;
|
|
1816
|
+
render: () => React__default.ReactNode;
|
|
1817
|
+
}
|
|
1818
|
+
interface TableFiltersProps {
|
|
1819
|
+
search?: string;
|
|
1820
|
+
onSearchChange?: (value: string) => void;
|
|
1821
|
+
searchPlaceholder?: string;
|
|
1822
|
+
filters?: FilterOption[];
|
|
1823
|
+
activeFilterCount?: number;
|
|
1824
|
+
onClearFilters?: () => void;
|
|
1825
|
+
className?: string;
|
|
1826
|
+
children?: React__default.ReactNode;
|
|
1827
|
+
}
|
|
1828
|
+
/**
|
|
1829
|
+
* TableFilters - Compact filter controls for data tables
|
|
1830
|
+
*
|
|
1831
|
+
* Features:
|
|
1832
|
+
* - Search input
|
|
1833
|
+
* - Popover filter menu with badge showing active count
|
|
1834
|
+
* - Clear all filters button
|
|
1835
|
+
* - Custom filter components via render prop
|
|
1836
|
+
* - Children slot for additional action buttons
|
|
1837
|
+
*/
|
|
1838
|
+
declare function TableFilters({ search, onSearchChange, searchPlaceholder, filters, activeFilterCount, onClearFilters, className, children, }: TableFiltersProps): react_jsx_runtime.JSX.Element;
|
|
1839
|
+
|
|
1840
|
+
export { ActivityLED, type ActivityLEDProps, Alert, AlertDescription, AlertTitle, type ApiReadinessOptions, type ApiReadinessResult, AppLayout, type AppLayoutProps, Badge, type BadgeProps, BatchActionsBar, type BatchActionsBarProps, Button, type ButtonProps, Card, CardContent, CardHeader, type CardProps, CardSkeleton, CardTitle, type CellProps, Checkbox, CodeSnippet, CodeViewer, type CodeViewerProps, ColorPalette, type ColumnConfig$1 as ColumnConfig, type ColumnConfigCompat, type ColumnDef, type ColumnOrderConfig, type ColumnSizeConfig, ColumnVisibility, type ColumnVisibility$1 as ColumnVisibilityConfig, type ColumnVisibilityState, type ColumnWidth, CompactStat, type CompactStatProps, CompactThemeToggle, ConfirmDialog, type ConfirmDialogVariant, ConnectionIndicator, ConnectionLostOverlay, ConnectionOverlay, ConnectionStatus$1 as ConnectionStatus, ConnectionStatusBanner, ContextMenu, ContextMenuItem, type ContextMenuItemProps, type ContextMenuPosition, type ContextMenuProps, ContextMenuSeparator, ContextMenuSubmenu, type ContextMenuSubmenuProps, DashboardStats, type DashboardStatsProps, type DataColumn, DataTable, DataTablePage, type DataTablePageProps, type DataTableProps, DeviceIcon, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DogEarBadge, type DragState, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStates, type ExternalPaginationState, type FilterOption$1 as FilterOption, type FormState, type HeaderCellProps, HelpTooltip, Input, type InputProps, Label, LoadingState, type LogEntry, type LogFile, LogStats, type LogStatsProps, LogViewer, type LogViewerProps, LoginPage, LogsPage, type LogsPageProps, MarkdownCard, MarkdownScrollArea, MarkdownViewer, type NavItem, NetworkInterfaceSelect, NoSearchResults, NoSimulatorsRunning, NoTemplatesFound, Pagination, PaginationControls, type PaginationControlsProps, Popover, PopoverContent, PopoverTrigger, Progress, ProtectedRoute, RealtimeDataTable, type RealtimeDataTableProps, type ResizableColumnResult, ResizableDialog, RestartBanner, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, type SettingDefinition$1 as SettingDefinition, type SettingsCategory$1 as SettingsCategory, SettingsFramework, SettingsPage, type SettingsPageProps, SidebarLayout, type SidebarLayoutProps, Slider, type SocketIOActions, type SocketIOConfig, type SocketIOState, Sparkline, type SparklineProps, type StatCard, Switch, TAG_COLORS, Table, TableBody, TableCaption, TableCell, type FilterOption as TableFilterOption, TableFilters, type TableFiltersProps, TableFooter, TableHead, TableHeader, TableRow, TableSkeleton, Tabs, TabsContent, TabsList, TabsTrigger, TestModeIndicator, Textarea, type TextareaProps, type Theme, type ThemeConfig, type ThemeMode, ThemeProvider, type ThemeProviderProps, ThemeToggle, type ThemeToggleProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TruncatedText, UpdateNotification, type UseFormStateOptions, activityStyles, apiRequest, authHandler, badgeVariants, buttonStyles, buttonVariants, cardStyles, checkApiReadiness, cn, createSettingsCategory, defaultSettingsCategories, emptyStateStyles, formatBytes, formatDateTime, formatDuration, formatDurationMs, formatNumber, formatRelativeTime, formatShortRelativeTime, getCSSVariables, getNextAvailableColor, getNextTagColor, getRandomTagColor, getTagClassName, getTagColor, socketManager, statusStyles, theme, timeAgo, useApiReadiness, useColumnDragDrop, useColumnOrder, useColumnVisibility, useConfirmDialog, useConnectionStatus, useDebounce, useFormState, usePagination, useResizableColumns, useSocketIO, useTheme, waitForApiReady };
|