@texturehq/edges 1.26.9 → 1.27.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.
package/dist/index.d.cts CHANGED
@@ -2,8 +2,8 @@ import { BreadcrumbProps, BreadcrumbsProps, DateValue, CalendarProps as Calendar
2
2
  export { BreadcrumbProps, BreadcrumbsProps, DialogTrigger } from 'react-aria-components';
3
3
  import * as React$1 from 'react';
4
4
  import React__default, { RefObject, ComponentType, ReactNode, HTMLAttributes, ComponentProps, CSSProperties, Component, ErrorInfo } from 'react';
5
- import { V as FieldValue, W as BooleanFormat, X as FormattedValue, Z as CurrentFormat, _ as DateFormat, $ as DistanceFormat, a0 as EnergyFormat, a1 as CurrencyFormat, a2 as NumberFormat, a3 as PhoneFormat, a4 as PowerFormat, a5 as FormatterFunction, a6 as ResistanceFormat, a7 as TemperatureUnitString, a8 as TemperatureUnit, a9 as TemperatureFormat, aa as TextFormat, ab as VoltageFormat, ac as FieldFormat, K as BaseDataPoint, B as BadgeProps, Y as YFormatType, G as TooltipData, ad as DeviceState, ae as GridState, af as ComponentFormatter, ag as LayerSpec, ah as CustomPinsSpec, ai as GeoJsonLayerSpec, aj as RasterLayerSpec, ak as VectorLayerSpec, al as ClusteredVectorLayerSpec } from './colors-DhcZH-We.cjs';
6
- export { A as ActionItem, am as ActionMenu, a as ActionMenuProps, b as AppShell, c as AppShellProps, an as Avatar, d as AvatarProps, ao as Badge, aF as BaseFormat, aA as ChartContext, N as ChartMargin, ap as CodeEditor, C as CodeEditorProps, e as CodeLanguage, f as CodeTheme, aq as ColorSpec, aC as ComponentFormatOptions, aN as CurrentUnit, aQ as CustomFormat, aJ as DateFormatStyle, aP as DistanceUnit, q as ENTITY_CONFIG, aK as EnergyUnit, E as EntityConfig, p as EntityType, H as Heading, av as InteractiveMap, I as InteractiveMapProps, ar as LayerFeature, as as LayerStyle, L as Loader, g as Logo, aw as MAP_TYPES, M as MapPoint, ay as Meter, h as MeterProps, aR as MetricFormat, aI as PercentageFormat, aL as PowerUnit, at as RenderType, aO as ResistanceUnit, j as SegmentOption, az as SegmentedControl, i as SegmentedControlProps, k as SideNav, l as SideNavItem, m as SideNavProps, ax as StaticMap, S as StaticMapProps, T as TextLink, aG as TextTransform, aH as TextTruncatePosition, J as TooltipSeries, n as TopNav, o as TopNavProps, aM as VoltageUnit, U as YFormatSettings, au as ZoomStops, aT as activeDeviceStates, u as clearColorCache, v as createCategoryColorMap, O as createXScale, P as createYScale, Q as defaultMargin, aU as deviceStateLabels, aS as deviceStateMetricFormats, aD as formatComponentValue, w as getContrastingTextColor, x as getDefaultChartColor, y as getDefaultColors, aW as getDeviceStateDisplayLabel, aW as getDeviceStateLabel, r as getEntityConfig, s as getEntityIcon, t as getEntityLabel, aY as getGridStateLabel, z as getResolvedColor, D as getThemeCategoricalColors, R as getYFormatSettings, aX as gridStateLabels, aV as isActiveDeviceState, aV as isActiveState, F as isLightColor, aB as useChartContext, aE as useComponentFormatter } from './colors-DhcZH-We.cjs';
5
+ import { V as FieldValue, W as BooleanFormat, X as FormattedValue, Z as CurrentFormat, _ as DateFormat, $ as DistanceFormat, a0 as EnergyFormat, a1 as CurrencyFormat, a2 as NumberFormat, a3 as PhoneFormat, a4 as PowerFormat, a5 as FormatterFunction, a6 as ResistanceFormat, a7 as TemperatureUnitString, a8 as TemperatureUnit, a9 as TemperatureFormat, aa as TextFormat, ab as VoltageFormat, ac as FieldFormat, K as BaseDataPoint, B as BadgeProps, Y as YFormatType, G as TooltipData, ad as DeviceState, ae as GridState, af as ComponentFormatter, ag as LayerSpec, ah as CustomPinsSpec, ai as GeoJsonLayerSpec, aj as RasterLayerSpec, ak as VectorLayerSpec, al as ClusteredVectorLayerSpec } from './colors-CY0JrRSg.cjs';
6
+ export { A as ActionItem, am as ActionMenu, a as ActionMenuProps, b as AppShell, c as AppShellProps, an as Avatar, d as AvatarProps, ao as Badge, aF as BaseFormat, aA as ChartContext, N as ChartMargin, ap as CodeEditor, C as CodeEditorProps, e as CodeLanguage, f as CodeTheme, aq as ColorSpec, aC as ComponentFormatOptions, aN as CurrentUnit, aQ as CustomFormat, aJ as DateFormatStyle, aP as DistanceUnit, q as ENTITY_CONFIG, aK as EnergyUnit, E as EntityConfig, p as EntityType, H as Heading, av as InteractiveMap, I as InteractiveMapProps, ar as LayerFeature, as as LayerStyle, L as Loader, g as Logo, aw as MAP_TYPES, M as MapPoint, ay as Meter, h as MeterProps, aR as MetricFormat, aI as PercentageFormat, aL as PowerUnit, at as RenderType, aO as ResistanceUnit, j as SegmentOption, az as SegmentedControl, i as SegmentedControlProps, k as SideNav, l as SideNavItem, m as SideNavProps, ax as StaticMap, S as StaticMapProps, T as TextLink, aG as TextTransform, aH as TextTruncatePosition, J as TooltipSeries, n as TopNav, o as TopNavProps, aM as VoltageUnit, U as YFormatSettings, au as ZoomStops, aT as activeDeviceStates, u as clearColorCache, v as createCategoryColorMap, O as createXScale, P as createYScale, Q as defaultMargin, aU as deviceStateLabels, aS as deviceStateMetricFormats, aD as formatComponentValue, w as getContrastingTextColor, x as getDefaultChartColor, y as getDefaultColors, aW as getDeviceStateDisplayLabel, aW as getDeviceStateLabel, r as getEntityConfig, s as getEntityIcon, t as getEntityLabel, aY as getGridStateLabel, z as getResolvedColor, D as getThemeCategoricalColors, R as getYFormatSettings, aX as gridStateLabels, aV as isActiveDeviceState, aV as isActiveState, F as isLightColor, aB as useChartContext, aE as useComponentFormatter } from './colors-CY0JrRSg.cjs';
7
7
  import { Virtualizer } from '@tanstack/react-virtual';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
9
9
  import { I as Icon, S as Size, d as IconName$2, B as BaseInputProps } from './RichTextEditor-CZCqHSPF.cjs';
@@ -1254,6 +1254,11 @@ interface Column<T> {
1254
1254
  cellProps?: Record<string, any> | ((value: any, row: T) => Record<string, any>);
1255
1255
  render?: (value: any, row: T, context: CellContext) => ReactNode;
1256
1256
  sortable?: boolean;
1257
+ /**
1258
+ * Whether this column can be reordered via drag-and-drop.
1259
+ * Defaults to true. Set to false to lock a column in place (e.g., sticky first column).
1260
+ */
1261
+ reorderable?: boolean;
1257
1262
  noCellPadding?: boolean;
1258
1263
  mobile?: MobileConfig | false;
1259
1264
  popover?: string | ((value: unknown, row: T) => ReactNode) | {
@@ -1299,6 +1304,8 @@ interface DataTableProps<T> {
1299
1304
  estimatedRowHeight?: number;
1300
1305
  loadingIndicator?: ReactNode;
1301
1306
  stickyHeader?: boolean;
1307
+ /** Make the first column sticky on horizontal scroll */
1308
+ stickyFirstColumn?: boolean;
1302
1309
  onRowClick?: (row: T) => void;
1303
1310
  getRowId?: (row: T) => string;
1304
1311
  hideHeader?: boolean;
@@ -1306,6 +1313,22 @@ interface DataTableProps<T> {
1306
1313
  sortConfig?: SortConfig | null;
1307
1314
  onSort?: (sortConfig: SortConfig | null) => void;
1308
1315
  "aria-label"?: string;
1316
+ /**
1317
+ * Enable drag-and-drop column reordering (like Notion tables).
1318
+ * When enabled, users can drag column headers to reorder columns.
1319
+ */
1320
+ enableColumnReorder?: boolean;
1321
+ /**
1322
+ * Controlled column order - array of column IDs in display order.
1323
+ * When provided, DataTable uses this order instead of the columns array order.
1324
+ * Use with onColumnOrderChange for controlled behavior.
1325
+ */
1326
+ columnOrder?: string[];
1327
+ /**
1328
+ * Callback fired when column order changes via drag-and-drop.
1329
+ * Receives the new array of column IDs in their new order.
1330
+ */
1331
+ onColumnOrderChange?: (columnOrder: string[]) => void;
1309
1332
  }
1310
1333
 
1311
1334
  /**
@@ -2667,6 +2690,13 @@ interface DataControlsProps {
2667
2690
  };
2668
2691
  /** Custom controls to render on the left side, before results count (e.g., saved views dropdown) */
2669
2692
  leftControls?: React.ReactNode;
2693
+ /** Callback to open column management UI (dialog/drawer) */
2694
+ onManageColumns?: () => void;
2695
+ /**
2696
+ * @deprecated Use `onManageColumns` instead. This prop will be removed in a future version.
2697
+ * Column picker control - rendered on the LEFT side with Sort (display controls)
2698
+ */
2699
+ columnPicker?: React.ReactNode;
2670
2700
  /** Custom controls to render on the right side (desktop) or below search (mobile) */
2671
2701
  customControls?: React.ReactNode;
2672
2702
  /** Action buttons (exposed on desktop, ActionMenu on mobile) */
@@ -2735,7 +2765,7 @@ interface DataControlsProps {
2735
2765
  * ```
2736
2766
  */
2737
2767
  declare function DataControls({ search, searchMobileMode: _searchMobileMode, // Deprecated: kept for backward compatibility
2738
- filters, onRemoveFilter, onClearAllFilters, onManageFilters, maxVisibleFilterChips, sort, resultsCount, leftControls, customControls, actions, sticky, stickyTop, zIndex, className, style, }: DataControlsProps): react_jsx_runtime.JSX.Element | null;
2768
+ filters, onRemoveFilter, onClearAllFilters, onManageFilters, maxVisibleFilterChips, sort, resultsCount, leftControls, onManageColumns, columnPicker, customControls, actions, sticky, stickyTop, zIndex, className, style, }: DataControlsProps): react_jsx_runtime.JSX.Element | null;
2739
2769
 
2740
2770
  interface FilterDialogProps {
2741
2771
  /** Whether the dialog is open */
@@ -2900,6 +2930,18 @@ interface BadgeCellProps<T = any> extends CellComponentProps<T> {
2900
2930
  emptyText?: string;
2901
2931
  /** Additional CSS classes */
2902
2932
  className?: string;
2933
+ /**
2934
+ * Maximum number of badges to show when value is an array.
2935
+ * Remaining items will be shown as "+N" with a tooltip.
2936
+ * Defaults to 2.
2937
+ */
2938
+ maxVisible?: number;
2939
+ /**
2940
+ * Maximum character length for each badge label.
2941
+ * Longer labels will be truncated with "..." and show full text in tooltip.
2942
+ * Defaults to undefined (no truncation).
2943
+ */
2944
+ maxLabelLength?: number;
2903
2945
  }
2904
2946
  /**
2905
2947
  * BadgeCell
@@ -2908,6 +2950,8 @@ interface BadgeCellProps<T = any> extends CellComponentProps<T> {
2908
2950
  * Supports mapping values to semantic variants (success, error, warning, etc.)
2909
2951
  * and customizing the display label.
2910
2952
  *
2953
+ * Also supports array values (e.g., tags) with truncation via maxVisible prop.
2954
+ *
2911
2955
  * @example
2912
2956
  * ```tsx
2913
2957
  * // Simple usage with static variant
@@ -2950,9 +2994,22 @@ interface BadgeCellProps<T = any> extends CellComponentProps<T> {
2950
2994
  * dotPulse: (value) => value === "online",
2951
2995
  * }
2952
2996
  * }
2997
+ *
2998
+ * // Array of tags with truncation
2999
+ * {
3000
+ * id: "tags",
3001
+ * label: "Tags",
3002
+ * accessor: (row) => row.tags,
3003
+ * cell: BadgeCell,
3004
+ * cellProps: {
3005
+ * variant: "secondary",
3006
+ * shape: "pill",
3007
+ * maxVisible: 2,
3008
+ * }
3009
+ * }
2953
3010
  * ```
2954
3011
  */
2955
- declare function BadgeCell<T = any>({ value, row, context, variant, label, size, shape, dot, dotPosition, dotPulse, align, emptyText, className, }: BadgeCellProps<T>): react_jsx_runtime.JSX.Element;
3012
+ declare function BadgeCell<T = any>({ value, row, context, variant, label, size, shape, dot, dotPosition, dotPulse, align, emptyText, className, maxVisible, maxLabelLength, }: BadgeCellProps<T>): react_jsx_runtime.JSX.Element;
2956
3013
 
2957
3014
  interface BooleanCellProps<T = any> extends CellComponentProps<T> {
2958
3015
  format?: "icon" | "text" | "badge";
@@ -3111,6 +3168,7 @@ declare function getCellAlignmentClasses(align?: CellAlignment): string;
3111
3168
  declare function getCellTextClasses(emphasis?: CellEmphasis, isLink?: boolean): string;
3112
3169
  /**
3113
3170
  * Get container classes for cells
3171
+ * Includes min-w-0 and overflow-hidden to enable text truncation in flex containers
3114
3172
  */
3115
3173
  declare function getCellContainerClasses(align?: CellAlignment, additionalClasses?: string): string;
3116
3174
  /**
@@ -3617,7 +3675,7 @@ declare function TextCell<T = any>({ value, row, context, prefix, suffix, emptyT
3617
3675
  * Supports custom cell renderers, column configurations, multiple display densities,
3618
3676
  * and virtualization for large datasets.
3619
3677
  */
3620
- declare function DataTable<T extends Record<string, unknown>>({ columns, data, className, density, width, height, maxHeight, layout, mobileRenderer, customMobileRowRender, mobileBreakpoint, isLoading, loadingState, loadingRowCount, onLoadMore, hasMore, enableVirtualization, estimatedRowHeight, loadingIndicator, stickyHeader, onRowClick, getRowId, hideHeader, sortConfig: controlledSortConfig, onSort, "aria-label": ariaLabel, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
3678
+ declare function DataTable<T extends Record<string, unknown>>({ columns, data, className, density, width, height, maxHeight, layout, mobileRenderer, customMobileRowRender, mobileBreakpoint, isLoading, loadingState, loadingRowCount, onLoadMore, hasMore, enableVirtualization, estimatedRowHeight, loadingIndicator, stickyHeader, stickyFirstColumn, onRowClick, getRowId, hideHeader, sortConfig: controlledSortConfig, onSort, "aria-label": ariaLabel, enableColumnReorder, columnOrder: controlledColumnOrder, onColumnOrderChange, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
3621
3679
 
3622
3680
  interface MobileRowProps<T> {
3623
3681
  row: T;
package/dist/index.d.ts CHANGED
@@ -2,8 +2,8 @@ import { BreadcrumbProps, BreadcrumbsProps, DateValue, CalendarProps as Calendar
2
2
  export { BreadcrumbProps, BreadcrumbsProps, DialogTrigger } from 'react-aria-components';
3
3
  import * as React$1 from 'react';
4
4
  import React__default, { RefObject, ComponentType, ReactNode, HTMLAttributes, ComponentProps, CSSProperties, Component, ErrorInfo } from 'react';
5
- import { V as FieldValue, W as BooleanFormat, X as FormattedValue, Z as CurrentFormat, _ as DateFormat, $ as DistanceFormat, a0 as EnergyFormat, a1 as CurrencyFormat, a2 as NumberFormat, a3 as PhoneFormat, a4 as PowerFormat, a5 as FormatterFunction, a6 as ResistanceFormat, a7 as TemperatureUnitString, a8 as TemperatureUnit, a9 as TemperatureFormat, aa as TextFormat, ab as VoltageFormat, ac as FieldFormat, K as BaseDataPoint, B as BadgeProps, Y as YFormatType, G as TooltipData, ad as DeviceState, ae as GridState, af as ComponentFormatter, ag as LayerSpec, ah as CustomPinsSpec, ai as GeoJsonLayerSpec, aj as RasterLayerSpec, ak as VectorLayerSpec, al as ClusteredVectorLayerSpec } from './colors-BsIMEV0c.js';
6
- export { A as ActionItem, am as ActionMenu, a as ActionMenuProps, b as AppShell, c as AppShellProps, an as Avatar, d as AvatarProps, ao as Badge, aF as BaseFormat, aA as ChartContext, N as ChartMargin, ap as CodeEditor, C as CodeEditorProps, e as CodeLanguage, f as CodeTheme, aq as ColorSpec, aC as ComponentFormatOptions, aN as CurrentUnit, aQ as CustomFormat, aJ as DateFormatStyle, aP as DistanceUnit, q as ENTITY_CONFIG, aK as EnergyUnit, E as EntityConfig, p as EntityType, H as Heading, av as InteractiveMap, I as InteractiveMapProps, ar as LayerFeature, as as LayerStyle, L as Loader, g as Logo, aw as MAP_TYPES, M as MapPoint, ay as Meter, h as MeterProps, aR as MetricFormat, aI as PercentageFormat, aL as PowerUnit, at as RenderType, aO as ResistanceUnit, j as SegmentOption, az as SegmentedControl, i as SegmentedControlProps, k as SideNav, l as SideNavItem, m as SideNavProps, ax as StaticMap, S as StaticMapProps, T as TextLink, aG as TextTransform, aH as TextTruncatePosition, J as TooltipSeries, n as TopNav, o as TopNavProps, aM as VoltageUnit, U as YFormatSettings, au as ZoomStops, aT as activeDeviceStates, u as clearColorCache, v as createCategoryColorMap, O as createXScale, P as createYScale, Q as defaultMargin, aU as deviceStateLabels, aS as deviceStateMetricFormats, aD as formatComponentValue, w as getContrastingTextColor, x as getDefaultChartColor, y as getDefaultColors, aW as getDeviceStateDisplayLabel, aW as getDeviceStateLabel, r as getEntityConfig, s as getEntityIcon, t as getEntityLabel, aY as getGridStateLabel, z as getResolvedColor, D as getThemeCategoricalColors, R as getYFormatSettings, aX as gridStateLabels, aV as isActiveDeviceState, aV as isActiveState, F as isLightColor, aB as useChartContext, aE as useComponentFormatter } from './colors-BsIMEV0c.js';
5
+ import { V as FieldValue, W as BooleanFormat, X as FormattedValue, Z as CurrentFormat, _ as DateFormat, $ as DistanceFormat, a0 as EnergyFormat, a1 as CurrencyFormat, a2 as NumberFormat, a3 as PhoneFormat, a4 as PowerFormat, a5 as FormatterFunction, a6 as ResistanceFormat, a7 as TemperatureUnitString, a8 as TemperatureUnit, a9 as TemperatureFormat, aa as TextFormat, ab as VoltageFormat, ac as FieldFormat, K as BaseDataPoint, B as BadgeProps, Y as YFormatType, G as TooltipData, ad as DeviceState, ae as GridState, af as ComponentFormatter, ag as LayerSpec, ah as CustomPinsSpec, ai as GeoJsonLayerSpec, aj as RasterLayerSpec, ak as VectorLayerSpec, al as ClusteredVectorLayerSpec } from './colors-DKozNGNs.js';
6
+ export { A as ActionItem, am as ActionMenu, a as ActionMenuProps, b as AppShell, c as AppShellProps, an as Avatar, d as AvatarProps, ao as Badge, aF as BaseFormat, aA as ChartContext, N as ChartMargin, ap as CodeEditor, C as CodeEditorProps, e as CodeLanguage, f as CodeTheme, aq as ColorSpec, aC as ComponentFormatOptions, aN as CurrentUnit, aQ as CustomFormat, aJ as DateFormatStyle, aP as DistanceUnit, q as ENTITY_CONFIG, aK as EnergyUnit, E as EntityConfig, p as EntityType, H as Heading, av as InteractiveMap, I as InteractiveMapProps, ar as LayerFeature, as as LayerStyle, L as Loader, g as Logo, aw as MAP_TYPES, M as MapPoint, ay as Meter, h as MeterProps, aR as MetricFormat, aI as PercentageFormat, aL as PowerUnit, at as RenderType, aO as ResistanceUnit, j as SegmentOption, az as SegmentedControl, i as SegmentedControlProps, k as SideNav, l as SideNavItem, m as SideNavProps, ax as StaticMap, S as StaticMapProps, T as TextLink, aG as TextTransform, aH as TextTruncatePosition, J as TooltipSeries, n as TopNav, o as TopNavProps, aM as VoltageUnit, U as YFormatSettings, au as ZoomStops, aT as activeDeviceStates, u as clearColorCache, v as createCategoryColorMap, O as createXScale, P as createYScale, Q as defaultMargin, aU as deviceStateLabels, aS as deviceStateMetricFormats, aD as formatComponentValue, w as getContrastingTextColor, x as getDefaultChartColor, y as getDefaultColors, aW as getDeviceStateDisplayLabel, aW as getDeviceStateLabel, r as getEntityConfig, s as getEntityIcon, t as getEntityLabel, aY as getGridStateLabel, z as getResolvedColor, D as getThemeCategoricalColors, R as getYFormatSettings, aX as gridStateLabels, aV as isActiveDeviceState, aV as isActiveState, F as isLightColor, aB as useChartContext, aE as useComponentFormatter } from './colors-DKozNGNs.js';
7
7
  import { Virtualizer } from '@tanstack/react-virtual';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
9
9
  import { I as Icon, S as Size, d as IconName$2, B as BaseInputProps } from './RichTextEditor-CZCqHSPF.js';
@@ -1254,6 +1254,11 @@ interface Column<T> {
1254
1254
  cellProps?: Record<string, any> | ((value: any, row: T) => Record<string, any>);
1255
1255
  render?: (value: any, row: T, context: CellContext) => ReactNode;
1256
1256
  sortable?: boolean;
1257
+ /**
1258
+ * Whether this column can be reordered via drag-and-drop.
1259
+ * Defaults to true. Set to false to lock a column in place (e.g., sticky first column).
1260
+ */
1261
+ reorderable?: boolean;
1257
1262
  noCellPadding?: boolean;
1258
1263
  mobile?: MobileConfig | false;
1259
1264
  popover?: string | ((value: unknown, row: T) => ReactNode) | {
@@ -1299,6 +1304,8 @@ interface DataTableProps<T> {
1299
1304
  estimatedRowHeight?: number;
1300
1305
  loadingIndicator?: ReactNode;
1301
1306
  stickyHeader?: boolean;
1307
+ /** Make the first column sticky on horizontal scroll */
1308
+ stickyFirstColumn?: boolean;
1302
1309
  onRowClick?: (row: T) => void;
1303
1310
  getRowId?: (row: T) => string;
1304
1311
  hideHeader?: boolean;
@@ -1306,6 +1313,22 @@ interface DataTableProps<T> {
1306
1313
  sortConfig?: SortConfig | null;
1307
1314
  onSort?: (sortConfig: SortConfig | null) => void;
1308
1315
  "aria-label"?: string;
1316
+ /**
1317
+ * Enable drag-and-drop column reordering (like Notion tables).
1318
+ * When enabled, users can drag column headers to reorder columns.
1319
+ */
1320
+ enableColumnReorder?: boolean;
1321
+ /**
1322
+ * Controlled column order - array of column IDs in display order.
1323
+ * When provided, DataTable uses this order instead of the columns array order.
1324
+ * Use with onColumnOrderChange for controlled behavior.
1325
+ */
1326
+ columnOrder?: string[];
1327
+ /**
1328
+ * Callback fired when column order changes via drag-and-drop.
1329
+ * Receives the new array of column IDs in their new order.
1330
+ */
1331
+ onColumnOrderChange?: (columnOrder: string[]) => void;
1309
1332
  }
1310
1333
 
1311
1334
  /**
@@ -2667,6 +2690,13 @@ interface DataControlsProps {
2667
2690
  };
2668
2691
  /** Custom controls to render on the left side, before results count (e.g., saved views dropdown) */
2669
2692
  leftControls?: React.ReactNode;
2693
+ /** Callback to open column management UI (dialog/drawer) */
2694
+ onManageColumns?: () => void;
2695
+ /**
2696
+ * @deprecated Use `onManageColumns` instead. This prop will be removed in a future version.
2697
+ * Column picker control - rendered on the LEFT side with Sort (display controls)
2698
+ */
2699
+ columnPicker?: React.ReactNode;
2670
2700
  /** Custom controls to render on the right side (desktop) or below search (mobile) */
2671
2701
  customControls?: React.ReactNode;
2672
2702
  /** Action buttons (exposed on desktop, ActionMenu on mobile) */
@@ -2735,7 +2765,7 @@ interface DataControlsProps {
2735
2765
  * ```
2736
2766
  */
2737
2767
  declare function DataControls({ search, searchMobileMode: _searchMobileMode, // Deprecated: kept for backward compatibility
2738
- filters, onRemoveFilter, onClearAllFilters, onManageFilters, maxVisibleFilterChips, sort, resultsCount, leftControls, customControls, actions, sticky, stickyTop, zIndex, className, style, }: DataControlsProps): react_jsx_runtime.JSX.Element | null;
2768
+ filters, onRemoveFilter, onClearAllFilters, onManageFilters, maxVisibleFilterChips, sort, resultsCount, leftControls, onManageColumns, columnPicker, customControls, actions, sticky, stickyTop, zIndex, className, style, }: DataControlsProps): react_jsx_runtime.JSX.Element | null;
2739
2769
 
2740
2770
  interface FilterDialogProps {
2741
2771
  /** Whether the dialog is open */
@@ -2900,6 +2930,18 @@ interface BadgeCellProps<T = any> extends CellComponentProps<T> {
2900
2930
  emptyText?: string;
2901
2931
  /** Additional CSS classes */
2902
2932
  className?: string;
2933
+ /**
2934
+ * Maximum number of badges to show when value is an array.
2935
+ * Remaining items will be shown as "+N" with a tooltip.
2936
+ * Defaults to 2.
2937
+ */
2938
+ maxVisible?: number;
2939
+ /**
2940
+ * Maximum character length for each badge label.
2941
+ * Longer labels will be truncated with "..." and show full text in tooltip.
2942
+ * Defaults to undefined (no truncation).
2943
+ */
2944
+ maxLabelLength?: number;
2903
2945
  }
2904
2946
  /**
2905
2947
  * BadgeCell
@@ -2908,6 +2950,8 @@ interface BadgeCellProps<T = any> extends CellComponentProps<T> {
2908
2950
  * Supports mapping values to semantic variants (success, error, warning, etc.)
2909
2951
  * and customizing the display label.
2910
2952
  *
2953
+ * Also supports array values (e.g., tags) with truncation via maxVisible prop.
2954
+ *
2911
2955
  * @example
2912
2956
  * ```tsx
2913
2957
  * // Simple usage with static variant
@@ -2950,9 +2994,22 @@ interface BadgeCellProps<T = any> extends CellComponentProps<T> {
2950
2994
  * dotPulse: (value) => value === "online",
2951
2995
  * }
2952
2996
  * }
2997
+ *
2998
+ * // Array of tags with truncation
2999
+ * {
3000
+ * id: "tags",
3001
+ * label: "Tags",
3002
+ * accessor: (row) => row.tags,
3003
+ * cell: BadgeCell,
3004
+ * cellProps: {
3005
+ * variant: "secondary",
3006
+ * shape: "pill",
3007
+ * maxVisible: 2,
3008
+ * }
3009
+ * }
2953
3010
  * ```
2954
3011
  */
2955
- declare function BadgeCell<T = any>({ value, row, context, variant, label, size, shape, dot, dotPosition, dotPulse, align, emptyText, className, }: BadgeCellProps<T>): react_jsx_runtime.JSX.Element;
3012
+ declare function BadgeCell<T = any>({ value, row, context, variant, label, size, shape, dot, dotPosition, dotPulse, align, emptyText, className, maxVisible, maxLabelLength, }: BadgeCellProps<T>): react_jsx_runtime.JSX.Element;
2956
3013
 
2957
3014
  interface BooleanCellProps<T = any> extends CellComponentProps<T> {
2958
3015
  format?: "icon" | "text" | "badge";
@@ -3111,6 +3168,7 @@ declare function getCellAlignmentClasses(align?: CellAlignment): string;
3111
3168
  declare function getCellTextClasses(emphasis?: CellEmphasis, isLink?: boolean): string;
3112
3169
  /**
3113
3170
  * Get container classes for cells
3171
+ * Includes min-w-0 and overflow-hidden to enable text truncation in flex containers
3114
3172
  */
3115
3173
  declare function getCellContainerClasses(align?: CellAlignment, additionalClasses?: string): string;
3116
3174
  /**
@@ -3617,7 +3675,7 @@ declare function TextCell<T = any>({ value, row, context, prefix, suffix, emptyT
3617
3675
  * Supports custom cell renderers, column configurations, multiple display densities,
3618
3676
  * and virtualization for large datasets.
3619
3677
  */
3620
- declare function DataTable<T extends Record<string, unknown>>({ columns, data, className, density, width, height, maxHeight, layout, mobileRenderer, customMobileRowRender, mobileBreakpoint, isLoading, loadingState, loadingRowCount, onLoadMore, hasMore, enableVirtualization, estimatedRowHeight, loadingIndicator, stickyHeader, onRowClick, getRowId, hideHeader, sortConfig: controlledSortConfig, onSort, "aria-label": ariaLabel, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
3678
+ declare function DataTable<T extends Record<string, unknown>>({ columns, data, className, density, width, height, maxHeight, layout, mobileRenderer, customMobileRowRender, mobileBreakpoint, isLoading, loadingState, loadingRowCount, onLoadMore, hasMore, enableVirtualization, estimatedRowHeight, loadingIndicator, stickyHeader, stickyFirstColumn, onRowClick, getRowId, hideHeader, sortConfig: controlledSortConfig, onSort, "aria-label": ariaLabel, enableColumnReorder, columnOrder: controlledColumnOrder, onColumnOrderChange, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
3621
3679
 
3622
3680
  interface MobileRowProps<T> {
3623
3681
  row: T;