@ai-matrx/design-system 0.21.4 → 0.21.6

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 (45) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/data-table/copy-helpers.d.cts +1 -1
  3. package/dist/data-table/copy-helpers.d.ts +1 -1
  4. package/dist/data-table/data-row-inspector.cjs.map +1 -1
  5. package/dist/data-table/data-row-inspector.js.map +1 -1
  6. package/dist/data-table/data-row-window.cjs.map +1 -1
  7. package/dist/data-table/data-row-window.js.map +1 -1
  8. package/dist/data-table/filter-engine.d.cts +1 -1
  9. package/dist/data-table/filter-engine.d.ts +1 -1
  10. package/dist/data-table/host.d.cts +1 -1
  11. package/dist/data-table/host.d.ts +1 -1
  12. package/dist/data-table/index.cjs +101 -22
  13. package/dist/data-table/index.cjs.map +1 -1
  14. package/dist/data-table/index.d.cts +10 -3
  15. package/dist/data-table/index.d.ts +10 -3
  16. package/dist/data-table/index.js +101 -22
  17. package/dist/data-table/index.js.map +1 -1
  18. package/dist/data-table/infer-filter.cjs +16 -0
  19. package/dist/data-table/infer-filter.cjs.map +1 -1
  20. package/dist/data-table/infer-filter.d.cts +1 -1
  21. package/dist/data-table/infer-filter.d.ts +1 -1
  22. package/dist/data-table/infer-filter.js +16 -0
  23. package/dist/data-table/infer-filter.js.map +1 -1
  24. package/dist/data-table/layered-filters.d.cts +1 -1
  25. package/dist/data-table/layered-filters.d.ts +1 -1
  26. package/dist/data-table/pagination.cjs.map +1 -1
  27. package/dist/data-table/pagination.js.map +1 -1
  28. package/dist/data-table/query-control.cjs +19 -0
  29. package/dist/data-table/query-control.cjs.map +1 -1
  30. package/dist/data-table/query-control.d.cts +1 -1
  31. package/dist/data-table/query-control.d.ts +1 -1
  32. package/dist/data-table/query-control.js +19 -0
  33. package/dist/data-table/query-control.js.map +1 -1
  34. package/dist/data-table/types.cjs.map +1 -1
  35. package/dist/data-table/types.d.cts +1 -1
  36. package/dist/data-table/types.d.ts +1 -1
  37. package/dist/data-table/url-state.d.cts +1 -1
  38. package/dist/data-table/url-state.d.ts +1 -1
  39. package/dist/data-table/uuid-cell.cjs.map +1 -1
  40. package/dist/data-table/uuid-cell.js.map +1 -1
  41. package/dist/data-table/xlsx.d.cts +1 -1
  42. package/dist/data-table/xlsx.d.ts +1 -1
  43. package/dist/{types-CbGNfo7r.d.ts → types-Dpl8OW_m.d.ts} +17 -1
  44. package/dist/{types-DRusLYrU.d.cts → types-DsmrqJHN.d.cts} +17 -1
  45. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../types-DRusLYrU.cjs';
1
+ import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../types-DsmrqJHN.cjs';
2
2
  import '../content-transfer.cjs';
3
3
  import 'react';
4
4
  import '@ai-matrx/kit/content-transfer';
@@ -1,4 +1,4 @@
1
- import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../types-CbGNfo7r.js';
1
+ import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../types-Dpl8OW_m.js';
2
2
  import '../content-transfer.js';
3
3
  import 'react';
4
4
  import '@ai-matrx/kit/content-transfer';
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { ComponentType, ReactNode, MouseEventHandler } from 'react';
3
- import { b as TableSavedViewsProps, c as MatrxDataTableRecordControls, d as MatrxDataTableDensity } from '../types-DRusLYrU.cjs';
3
+ import { b as TableSavedViewsProps, c as MatrxDataTableRecordControls, d as MatrxDataTableDensity } from '../types-DsmrqJHN.cjs';
4
4
  import { CopyControlProps } from './copy-types.cjs';
5
5
  export { AgentPayloadInput, AiCustomSource, AiVariant, CopyExportConfig } from './copy-types.cjs';
6
6
  import '../content-transfer.cjs';
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { ComponentType, ReactNode, MouseEventHandler } from 'react';
3
- import { b as TableSavedViewsProps, c as MatrxDataTableRecordControls, d as MatrxDataTableDensity } from '../types-CbGNfo7r.js';
3
+ import { b as TableSavedViewsProps, c as MatrxDataTableRecordControls, d as MatrxDataTableDensity } from '../types-Dpl8OW_m.js';
4
4
  import { CopyControlProps } from './copy-types.js';
5
5
  export { AgentPayloadInput, AiCustomSource, AiVariant, CopyExportConfig } from './copy-types.js';
6
6
  import '../content-transfer.js';
@@ -48,6 +48,7 @@ __export(data_table_exports, {
48
48
  downloadTableAsXlsx: () => downloadTableAsXlsx,
49
49
  filterKindLabel: () => filterKindLabel,
50
50
  parseTableViewSnapshot: () => parseTableViewSnapshot,
51
+ resolveColumnMarker: () => resolveColumnMarker,
51
52
  resolveFilterKind: () => resolveFilterKind,
52
53
  rowsToCsvFromColumns: () => rowsToCsvFromColumns,
53
54
  rowsToMarkdownTable: () => rowsToMarkdownTable,
@@ -84,6 +85,8 @@ var Search = (p) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Icon, { ...p, c
84
85
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m16 16 4 4" })
85
86
  ] });
86
87
  var Plus = (p) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { ...p, children: path });
88
+ var Star = (p) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { ...p, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m12 2 3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" }) });
89
+ var Pin = (p) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { ...p, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M12 17v5M9 3h6l1 7 3 3v2H5v-2l3-3 1-7z" }) });
87
90
  var Eraser = (p) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { ...p, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m16 3 5 5-11 11H5l-3-3L13 5l3-2Z M8 10l6 6 M10 19h12" }) });
88
91
  var GripVertical = (p) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Icon, { ...p, children: [
89
92
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "9", cy: "6", r: "1" }),
@@ -5774,6 +5777,34 @@ var CommandShortcut = ({
5774
5777
  };
5775
5778
  CommandShortcut.displayName = "CommandShortcut";
5776
5779
 
5780
+ // src/data-table/column-marker.ts
5781
+ var MARKER_ACCESSORS = {
5782
+ favorite: "favorite",
5783
+ is_favorite: "favorite",
5784
+ favourite: "favorite",
5785
+ is_favourite: "favorite",
5786
+ pinned: "pin",
5787
+ is_pinned: "pin"
5788
+ };
5789
+ function resolveColumnMarker(column) {
5790
+ if (column.marker === false) return void 0;
5791
+ if (column.marker) return column.marker;
5792
+ return column.accessorKey ? MARKER_ACCESSORS[column.accessorKey] : void 0;
5793
+ }
5794
+ function markerCopy(marker) {
5795
+ return marker === "favorite" ? {
5796
+ label: "Favorites",
5797
+ lowerLabel: "favorites",
5798
+ onlyLabel: "Favorites only",
5799
+ notLabel: "Not favorites"
5800
+ } : {
5801
+ label: "Pins",
5802
+ lowerLabel: "pins",
5803
+ onlyLabel: "Pins only",
5804
+ notLabel: "Not pinned"
5805
+ };
5806
+ }
5807
+
5777
5808
  // src/data-table/ColumnHeaderCell.tsx
5778
5809
  var import_jsx_runtime31 = require("react/jsx-runtime");
5779
5810
  var HeaderButton = (0, import_react13.forwardRef)(({ dragDescription, "aria-describedby": tooltipDescription, ...props }, ref) => {
@@ -5806,6 +5837,7 @@ function ColumnHeaderCell({
5806
5837
  align = "left",
5807
5838
  className,
5808
5839
  compact = false,
5840
+ marker,
5809
5841
  filterApplyLabel,
5810
5842
  filterShowCancel = false,
5811
5843
  filterFooterHint,
@@ -5857,7 +5889,9 @@ function ColumnHeaderCell({
5857
5889
  if (deferredFilter) setDraftFilter(next);
5858
5890
  else onFilterChange(next);
5859
5891
  };
5860
- const menuLabel = labelText ? `Sort or filter ${labelText}` : "Sort or filter column";
5892
+ const markerLabels = marker ? markerCopy(marker) : void 0;
5893
+ const accessibleLabel = markerLabels?.label ?? labelText;
5894
+ const menuLabel = accessibleLabel ? `Sort or filter ${accessibleLabel}` : "Sort or filter column";
5861
5895
  const menuContent = /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
5862
5896
  PopoverContent,
5863
5897
  {
@@ -5886,7 +5920,7 @@ function ColumnHeaderCell({
5886
5920
  onClick: onSortAsc,
5887
5921
  children: [
5888
5922
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ArrowUp, { className: "h-3.5 w-3.5" }),
5889
- "Sort ascending"
5923
+ markerLabels ? `${markerLabels.label} last` : "Sort ascending"
5890
5924
  ]
5891
5925
  }
5892
5926
  ),
@@ -5899,7 +5933,7 @@ function ColumnHeaderCell({
5899
5933
  onClick: onSortDesc,
5900
5934
  children: [
5901
5935
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ArrowDown, { className: "h-3.5 w-3.5" }),
5902
- "Sort descending"
5936
+ markerLabels ? `${markerLabels.label} first` : "Sort descending"
5903
5937
  ]
5904
5938
  }
5905
5939
  ),
@@ -5912,7 +5946,7 @@ function ColumnHeaderCell({
5912
5946
  onClick: onClearSort,
5913
5947
  children: [
5914
5948
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ListX, { className: "h-3.5 w-3.5" }),
5915
- "Clear sort"
5949
+ markerLabels ? `Clear ${markerLabels.lowerLabel} sort` : "Clear sort"
5916
5950
  ]
5917
5951
  }
5918
5952
  ) : null
@@ -5931,6 +5965,13 @@ function ColumnHeaderCell({
5931
5965
  },
5932
5966
  selectOptions,
5933
5967
  selectSingle,
5968
+ ...markerLabels ? {
5969
+ booleanLabels: {
5970
+ all: "All",
5971
+ true: markerLabels.onlyLabel,
5972
+ false: markerLabels.notLabel
5973
+ }
5974
+ } : {},
5934
5975
  allowNullModes
5935
5976
  }
5936
5977
  ) : null,
@@ -6146,7 +6187,8 @@ function FilterBody({
6146
6187
  onChange,
6147
6188
  selectOptions,
6148
6189
  selectSingle = false,
6149
- allowNullModes = false
6190
+ allowNullModes = false,
6191
+ booleanLabels
6150
6192
  }) {
6151
6193
  if (kind === "text") {
6152
6194
  const text = value?.kind === "text" ? value.value : "";
@@ -6233,9 +6275,9 @@ function FilterBody({
6233
6275
  children: [
6234
6276
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectTrigger, { className: "h-8 text-xs", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectValue, {}) }),
6235
6277
  /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(SelectContent, { children: [
6236
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "__all__", children: "All" }),
6237
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "true", children: "Yes" }),
6238
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "false", children: "No" })
6278
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "__all__", children: booleanLabels?.all ?? "All" }),
6279
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "true", children: booleanLabels?.true ?? "Yes" }),
6280
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SelectItem, { value: "false", children: booleanLabels?.false ?? "No" })
6239
6281
  ] })
6240
6282
  ]
6241
6283
  }
@@ -8335,6 +8377,7 @@ var SELECT_CARDINALITY_CAP = 24;
8335
8377
  function resolveFilterKind(col, sampleRows) {
8336
8378
  if (col.filter === false) return null;
8337
8379
  if (col.filter && col.filter !== "auto") return col.filter;
8380
+ if (resolveColumnMarker(col)) return "boolean";
8338
8381
  const values = sampleRows.slice(0, 200).map((row) => getCellValue(row, col)).filter((v) => v != null);
8339
8382
  if (values.length === 0) return "text";
8340
8383
  if (values.every((v) => typeof v === "boolean")) return "boolean";
@@ -8400,6 +8443,9 @@ function resolveQueryFilterMeta(column, rows, controlled) {
8400
8443
  };
8401
8444
  }
8402
8445
  if (column.filter === false) return { kind: null, options: [] };
8446
+ if (resolveColumnMarker(column) && (column.filter === void 0 || column.filter === "auto")) {
8447
+ return { kind: "boolean", options: [] };
8448
+ }
8403
8449
  const declared = column.filter;
8404
8450
  const kind = declared && declared !== "auto" ? declared : column.filterOptions?.length ? "select" : "text";
8405
8451
  return {
@@ -10641,6 +10687,10 @@ function MatrxDataTableCore({
10641
10687
  const defaultSortDirection = col.defaultSortDirection ?? "asc";
10642
10688
  const isColumnDragShadow = columnDragPreview?.draggedId === id && columnDragPreview.targetId !== null;
10643
10689
  const columnResizable = resizableColumns && col.resizable !== false;
10690
+ const marker = resolveColumnMarker(col);
10691
+ const compact = col.compact || marker !== void 0;
10692
+ const width = marker && col.width === void 0 ? 40 : col.width;
10693
+ const minWidth = marker && col.minWidth === void 0 ? 40 : col.minWidth;
10644
10694
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
10645
10695
  "th",
10646
10696
  {
@@ -10652,7 +10702,7 @@ function MatrxDataTableCore({
10652
10702
  // ICON COLUMN (MatrxColumnDef.compact): a 40px star
10653
10703
  // column cannot honor `width: 40` while paying 16px of
10654
10704
  // padding for a 14px glyph.
10655
- col.compact ? "px-1" : "px-2",
10705
+ compact ? "px-1" : "px-2",
10656
10706
  // An intentional mobile column set (see
10657
10707
  // MatrxColumnDef.mobileHidden). CSS, not a JS
10658
10708
  // breakpoint — no hydration mismatch, and the column
@@ -10663,13 +10713,13 @@ function MatrxDataTableCore({
10663
10713
  // it, a crowded table crushes a declared 190px column to a
10664
10714
  // few characters wide instead of using the canonical
10665
10715
  // horizontal-scroll surface.
10666
- (col.width !== void 0 || columnResizable) && "sm:w-[var(--matrx-col-w)] sm:min-w-[var(--matrx-col-w)]",
10716
+ (width !== void 0 || columnResizable) && "sm:w-[var(--matrx-col-w)] sm:min-w-[var(--matrx-col-w)]",
10667
10717
  col.headerClassName,
10668
10718
  isColumnDragShadow && "bg-primary/10 shadow-[inset_2px_0_0_var(--primary),inset_-2px_0_0_var(--primary)]",
10669
10719
  col.align === "center" && "text-center",
10670
10720
  col.align === "right" && "text-right"
10671
10721
  ),
10672
- style: columnWidthVar(col.width, effectiveColumnWidths[id], id, columnResizable),
10722
+ style: columnWidthVar(width, effectiveColumnWidths[id], id, columnResizable),
10673
10723
  children: [
10674
10724
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ColumnHeaderDropZone, { id, enabled: reorderableColumns, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
10675
10725
  ColumnHeaderCell,
@@ -10704,7 +10754,8 @@ function MatrxDataTableCore({
10704
10754
  allowNegation: filterUi?.allowNegation,
10705
10755
  allowNullModes: filterUi?.allowNullModes,
10706
10756
  align: col.align,
10707
- compact: col.compact,
10757
+ compact,
10758
+ marker,
10708
10759
  reorderColumn: reorderableColumns ? { id, label: headerLabel } : void 0
10709
10760
  }
10710
10761
  ) }),
@@ -10714,12 +10765,12 @@ function MatrxDataTableCore({
10714
10765
  columnId: id,
10715
10766
  label: headerLabel,
10716
10767
  tableRef,
10717
- minWidth: col.minWidth,
10768
+ minWidth,
10718
10769
  maxWidth: col.maxWidth,
10719
10770
  onResizeStart: captureResizeGestureSnapshot,
10720
10771
  onResizeCancel: clearResizeGestureSnapshot,
10721
- onResizeCommit: (columnId2, width) => commitColumnWidths(
10722
- { ...effectiveColumnWidths, [columnId2]: width },
10772
+ onResizeCommit: (columnId2, width2) => commitColumnWidths(
10773
+ { ...effectiveColumnWidths, [columnId2]: width2 },
10723
10774
  true
10724
10775
  )
10725
10776
  }
@@ -10749,7 +10800,7 @@ function MatrxDataTableCore({
10749
10800
  {
10750
10801
  className: cn(
10751
10802
  "py-2",
10752
- col.compact ? "px-1" : "px-2",
10803
+ col.compact || resolveColumnMarker(col) !== void 0 ? "px-1" : "px-2",
10753
10804
  col.mobileHidden && "max-sm:hidden"
10754
10805
  ),
10755
10806
  children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Skeleton, { className: "h-5 w-full" })
@@ -10835,19 +10886,19 @@ function MatrxDataTableCore({
10835
10886
  "data-matrx-column-drag-shadow": isColumnDragShadow ? "true" : void 0,
10836
10887
  className: cn(
10837
10888
  "py-1.5 align-middle lg:py-0.5",
10838
- col.compact ? "px-1" : "px-2",
10889
+ col.compact || resolveColumnMarker(col) !== void 0 ? "px-1" : "px-2",
10839
10890
  // nowrap (NOT truncate — truncate clips the cell and
10840
10891
  // defeats w-max, killing the horizontal scroll).
10841
10892
  "max-sm:whitespace-nowrap",
10842
10893
  col.mobileHidden && "max-sm:hidden",
10843
- (col.width !== void 0 || resizableColumns && col.resizable !== false) && "sm:w-[var(--matrx-col-w)] sm:min-w-[var(--matrx-col-w)] sm:max-w-[var(--matrx-col-w)]",
10894
+ ((resolveColumnMarker(col) && col.width === void 0 ? 40 : col.width) !== void 0 || resizableColumns && col.resizable !== false) && "sm:w-[var(--matrx-col-w)] sm:min-w-[var(--matrx-col-w)] sm:max-w-[var(--matrx-col-w)]",
10844
10895
  col.className,
10845
10896
  isColumnDragShadow && "bg-primary/10 shadow-[inset_2px_0_0_var(--primary),inset_-2px_0_0_var(--primary)]",
10846
10897
  col.align === "center" && "text-center",
10847
10898
  col.align === "right" && "text-right"
10848
10899
  ),
10849
10900
  style: columnWidthVar(
10850
- col.width,
10901
+ resolveColumnMarker(col) && col.width === void 0 ? 40 : col.width,
10851
10902
  effectiveColumnWidths[columnId(col)],
10852
10903
  columnId(col),
10853
10904
  resizableColumns && col.resizable !== false
@@ -10979,13 +11030,13 @@ function MatrxDataTableCore({
10979
11030
  {
10980
11031
  className: cn(
10981
11032
  "px-2 py-2 align-middle",
10982
- column.compact && "px-1",
11033
+ (column.compact || resolveColumnMarker(column) !== void 0) && "px-1",
10983
11034
  column.className,
10984
11035
  column.align === "center" && "text-center",
10985
11036
  column.align === "right" && "text-right"
10986
11037
  ),
10987
11038
  style: columnWidthVar(
10988
- column.width,
11039
+ resolveColumnMarker(column) && column.width === void 0 ? 40 : column.width,
10989
11040
  effectiveColumnWidths[columnId(column)],
10990
11041
  columnId(column),
10991
11042
  resizableColumns && column.resizable !== false
@@ -11577,7 +11628,11 @@ function normalizeColumnWidthsForColumns(widths, columns) {
11577
11628
  return Object.fromEntries(
11578
11629
  Object.entries(normalized).map(([id, width]) => {
11579
11630
  const column = byId.get(id);
11580
- const bounds = resolveColumnResizeBounds(column?.minWidth, column?.maxWidth);
11631
+ const marker = column ? resolveColumnMarker(column) : void 0;
11632
+ const bounds = resolveColumnResizeBounds(
11633
+ marker && column?.minWidth === void 0 ? 40 : column?.minWidth,
11634
+ column?.maxWidth
11635
+ );
11581
11636
  return [id, clampColumnWidth(width, bounds)];
11582
11637
  })
11583
11638
  );
@@ -11611,6 +11666,28 @@ function DefaultJsonCell({ value }) {
11611
11666
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DataRowWindow, { isOpen: open, onClose: () => setOpen(false), title: "JSON value", row: value, viewContent: Viewer ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Viewer, { data: value }) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("pre", { className: "overflow-auto whitespace-pre-wrap p-3 text-xs", children: text }) })
11612
11667
  ] });
11613
11668
  }
11669
+ function DefaultMarkerCell({
11670
+ marker,
11671
+ value
11672
+ }) {
11673
+ const label = marker === "favorite" ? value ? "Favorite" : "Not favorite" : value ? "Pinned" : "Not pinned";
11674
+ const Icon3 = marker === "favorite" ? Star : Pin;
11675
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Tooltip, { children: [
11676
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
11677
+ "span",
11678
+ {
11679
+ role: "img",
11680
+ "aria-label": label,
11681
+ className: cn(
11682
+ "inline-flex size-5 items-center justify-center",
11683
+ value ? "text-amber-500" : "text-muted-foreground/45"
11684
+ ),
11685
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Icon3, { className: "size-4", ...value ? { fill: "currentColor" } : {} })
11686
+ }
11687
+ ) }),
11688
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipContent, { children: label })
11689
+ ] });
11690
+ }
11614
11691
  function renderCell(row, col, index) {
11615
11692
  if (col.cell) return col.cell(row, index);
11616
11693
  const raw = getCellValue(row, col);
@@ -11633,6 +11710,8 @@ function renderCell(row, col, index) {
11633
11710
  }
11634
11711
  if (raw !== null && typeof raw === "object" && !(raw instanceof Date)) return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DefaultJsonCell, { value: raw });
11635
11712
  if (typeof raw === "boolean") {
11713
+ const marker = resolveColumnMarker(col);
11714
+ if (marker) return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DefaultMarkerCell, { marker, value: raw });
11636
11715
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: raw ? "rounded bg-emerald-500/10 px-1.5 py-0.5 text-xs text-emerald-600" : "rounded bg-slate-500/10 px-1.5 py-0.5 text-xs text-muted-foreground", children: raw ? "Yes" : "No" });
11637
11716
  }
11638
11717
  const formatted = formatTableDisplayValue(raw);