@ai-matrx/design-system 0.19.8 → 0.19.10

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 (42) hide show
  1. package/CHANGELOG.md +16 -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.cjs.map +1 -1
  11. package/dist/data-table/host.d.cts +3 -2
  12. package/dist/data-table/host.d.ts +3 -2
  13. package/dist/data-table/host.js.map +1 -1
  14. package/dist/data-table/index.cjs +78 -28
  15. package/dist/data-table/index.cjs.map +1 -1
  16. package/dist/data-table/index.d.cts +2 -2
  17. package/dist/data-table/index.d.ts +2 -2
  18. package/dist/data-table/index.js +78 -28
  19. package/dist/data-table/index.js.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/layered-filters.d.cts +1 -1
  23. package/dist/data-table/layered-filters.d.ts +1 -1
  24. package/dist/data-table/pagination.cjs +2 -1
  25. package/dist/data-table/pagination.cjs.map +1 -1
  26. package/dist/data-table/pagination.js +2 -1
  27. package/dist/data-table/pagination.js.map +1 -1
  28. package/dist/data-table/query-control.d.cts +1 -1
  29. package/dist/data-table/query-control.d.ts +1 -1
  30. package/dist/data-table/types.cjs.map +1 -1
  31. package/dist/data-table/types.d.cts +1 -1
  32. package/dist/data-table/types.d.ts +1 -1
  33. package/dist/data-table/url-state.d.cts +1 -1
  34. package/dist/data-table/url-state.d.ts +1 -1
  35. package/dist/data-table/uuid-cell.cjs.map +1 -1
  36. package/dist/data-table/uuid-cell.js.map +1 -1
  37. package/dist/data-table/xlsx.d.cts +1 -1
  38. package/dist/data-table/xlsx.d.ts +1 -1
  39. package/dist/tap-target.css +95 -10
  40. package/dist/{types-BcIcmIxd.d.cts → types-DqlfNcC5.d.cts} +4 -1
  41. package/dist/{types-xTXSqmR7.d.ts → types-lNw7TnTM.d.ts} +4 -1
  42. 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-BcIcmIxd.cjs';
1
+ import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../types-DqlfNcC5.cjs';
2
2
  import 'react';
3
3
  import './copy-types.cjs';
4
4
 
@@ -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-xTXSqmR7.js';
1
+ import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../types-lNw7TnTM.js';
2
2
  import 'react';
3
3
  import './copy-types.js';
4
4
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/data-table/host.tsx"],"sourcesContent":["\"use client\";\nimport { createContext, useContext, type Context, type ComponentType, type ReactNode, type MouseEventHandler } from \"react\";\nimport type { CopyControlProps } from \"./copy-types\";\nimport type { TableSavedViewsProps } from \"./types\";\n\nexport type {\n AgentPayloadInput,\n AiCustomSource,\n AiVariant,\n CopyControlProps,\n CopyExportConfig,\n} from \"./copy-types\";\n\nexport interface TableLinkProps { href: string; children: ReactNode; className?: string; onClick?: MouseEventHandler<HTMLAnchorElement>; }\n/**\n * Host-owned toolbar affordance. The table package keeps operation state and\n * labels; an application can supply its canonical icon-button primitive\n * without making the shared package depend on an application UI package.\n */\nexport interface TableToolbarActionProps { ariaLabel: string; tooltip?: string | undefined; disabled?: boolean | undefined; busy?: boolean | undefined; /** Indicates a selected mutually-exclusive action such as the current page. */ active?: boolean | undefined; onClick: () => void; children: ReactNode; }\nexport interface TableSidePanelProps { title: string; titleNode?: ReactNode; description?: ReactNode; onClose: () => void; defaultWidth?: number; headerActions?: ReactNode; children: ReactNode; }\nexport interface TableWindowPanelProps { id: string; title: string; onClose: () => void; width?: number; height?: number; minWidth?: number; minHeight?: number; actionsRight?: ReactNode; bodyClassName?: string; sidebarDefaultSize?: number; sidebarMinSize?: number; sidebar?: ReactNode; children: ReactNode; }\nexport interface TableEntityRefProps { token: string; id: string; href?: string; children: ReactNode; className?: string; }\nexport interface TablePeekProps { kind: string; id: string; href?: string; onClose: () => void; }\nexport interface TableDoors { href?: string; peekKind?: string; canPeek?: boolean; }\nexport interface MatrxDataTableHost { Link?: ComponentType<TableLinkProps>; CopyControls?: ComponentType<CopyControlProps>; ToolbarAction?: ComponentType<TableToolbarActionProps>; SidePanelSurface?: ComponentType<TableSidePanelProps>; WindowPanel?: ComponentType<TableWindowPanelProps>; EntityRef?: ComponentType<TableEntityRefProps>; resolveEntityDoors?: (token: string, id: string, href?: string | null) => TableDoors | null; ResourcePeek?: ComponentType<TablePeekProps>; SavedViews?: ComponentType<TableSavedViewsProps>; notify?: { success(message: string): void; error(message: string): void }; }\n// Public entrypoints are independently bundled in ESM and CJS. The context\n// identity must survive those bundle boundaries; values stay provider-scoped.\nconst HOST_SLOT = Symbol.for(\"ai-matrx.design-system.table-host-context\");\nconst hostRegistry = globalThis as typeof globalThis & { [HOST_SLOT]?: Context<MatrxDataTableHost> };\nconst HostContext = hostRegistry[HOST_SLOT] ??= createContext<MatrxDataTableHost>({});\nexport function MatrxDataTableProvider({ value, children }: { value: MatrxDataTableHost; children: ReactNode }) { return <HostContext.Provider value={value}>{children}</HostContext.Provider>; }\nexport function useMatrxDataTableHost(): MatrxDataTableHost { return useContext(HostContext); }\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAoH;AA8BK;AAHzH,IAAM,YAAY,uBAAO,IAAI,2CAA2C;AACxE,IAAM,eAAe;AACrB,IAAM,cAAc,aAAa,SAAS,UAAM,4BAAkC,CAAC,CAAC;AAC7E,SAAS,uBAAuB,EAAE,OAAO,SAAS,GAAuD;AAAE,SAAO,4CAAC,YAAY,UAAZ,EAAqB,OAAe,UAAS;AAAyB;AACzL,SAAS,wBAA4C;AAAE,aAAO,yBAAW,WAAW;AAAG;","names":[]}
1
+ {"version":3,"sources":["../../src/data-table/host.tsx"],"sourcesContent":["\"use client\";\nimport { createContext, useContext, type Context, type ComponentType, type ReactNode, type MouseEventHandler } from \"react\";\nimport type { CopyControlProps } from \"./copy-types\";\nimport type { MatrxDataTableDensity, TableSavedViewsProps } from \"./types\";\n\nexport type {\n AgentPayloadInput,\n AiCustomSource,\n AiVariant,\n CopyControlProps,\n CopyExportConfig,\n} from \"./copy-types\";\n\nexport interface TableLinkProps { href: string; children: ReactNode; className?: string; onClick?: MouseEventHandler<HTMLAnchorElement>; }\n/**\n * Host-owned toolbar affordance. The table package keeps operation state and\n * labels; an application can supply its canonical icon-button primitive\n * without making the shared package depend on an application UI package.\n */\nexport interface TableToolbarActionProps { ariaLabel: string; tooltip?: string | undefined; disabled?: boolean | undefined; busy?: boolean | undefined; /** Indicates a selected mutually-exclusive action such as the current page. */ active?: boolean | undefined; onClick: () => void; children: ReactNode; }\nexport interface TableSidePanelProps { title: string; titleNode?: ReactNode; description?: ReactNode; onClose: () => void; defaultWidth?: number; headerActions?: ReactNode; children: ReactNode; }\nexport interface TableWindowPanelProps { id: string; title: string; onClose: () => void; width?: number; height?: number; minWidth?: number; minHeight?: number; actionsRight?: ReactNode; bodyClassName?: string; sidebarDefaultSize?: number; sidebarMinSize?: number; sidebar?: ReactNode; children: ReactNode; }\nexport interface TableEntityRefProps { token: string; id: string; href?: string; children: ReactNode; className?: string; }\nexport interface TablePeekProps { kind: string; id: string; href?: string; onClose: () => void; }\nexport interface TableDoors { href?: string; peekKind?: string; canPeek?: boolean; }\nexport interface MatrxDataTableHost { Link?: ComponentType<TableLinkProps>; CopyControls?: ComponentType<CopyControlProps>; ToolbarAction?: ComponentType<TableToolbarActionProps>; SidePanelSurface?: ComponentType<TableSidePanelProps>; WindowPanel?: ComponentType<TableWindowPanelProps>; EntityRef?: ComponentType<TableEntityRefProps>; resolveEntityDoors?: (token: string, id: string, href?: string | null) => TableDoors | null; ResourcePeek?: ComponentType<TablePeekProps>; SavedViews?: ComponentType<TableSavedViewsProps>; /** Host default; a table's explicit density takes precedence. */ defaultDensity?: MatrxDataTableDensity; notify?: { success(message: string): void; error(message: string): void }; }\n// Public entrypoints are independently bundled in ESM and CJS. The context\n// identity must survive those bundle boundaries; values stay provider-scoped.\nconst HOST_SLOT = Symbol.for(\"ai-matrx.design-system.table-host-context\");\nconst hostRegistry = globalThis as typeof globalThis & { [HOST_SLOT]?: Context<MatrxDataTableHost> };\nconst HostContext = hostRegistry[HOST_SLOT] ??= createContext<MatrxDataTableHost>({});\nexport function MatrxDataTableProvider({ value, children }: { value: MatrxDataTableHost; children: ReactNode }) { return <HostContext.Provider value={value}>{children}</HostContext.Provider>; }\nexport function useMatrxDataTableHost(): MatrxDataTableHost { return useContext(HostContext); }\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAoH;AA8BK;AAHzH,IAAM,YAAY,uBAAO,IAAI,2CAA2C;AACxE,IAAM,eAAe;AACrB,IAAM,cAAc,aAAa,SAAS,UAAM,4BAAkC,CAAC,CAAC;AAC7E,SAAS,uBAAuB,EAAE,OAAO,SAAS,GAAuD;AAAE,SAAO,4CAAC,YAAY,UAAZ,EAAqB,OAAe,UAAS;AAAyB;AACzL,SAAS,wBAA4C;AAAE,aAAO,yBAAW,WAAW;AAAG;","names":[]}
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { ComponentType, ReactNode, MouseEventHandler } from 'react';
3
3
  import { CopyControlProps } from './copy-types.cjs';
4
4
  export { AgentPayloadInput, AiCustomSource, AiVariant, CopyExportConfig } from './copy-types.cjs';
5
- import { b as TableSavedViewsProps } from '../types-BcIcmIxd.cjs';
5
+ import { b as TableSavedViewsProps, c as MatrxDataTableDensity } from '../types-DqlfNcC5.cjs';
6
6
 
7
7
  interface TableLinkProps {
8
8
  href: string;
@@ -75,7 +75,8 @@ interface MatrxDataTableHost {
75
75
  EntityRef?: ComponentType<TableEntityRefProps>;
76
76
  resolveEntityDoors?: (token: string, id: string, href?: string | null) => TableDoors | null;
77
77
  ResourcePeek?: ComponentType<TablePeekProps>;
78
- SavedViews?: ComponentType<TableSavedViewsProps>;
78
+ SavedViews?: ComponentType<TableSavedViewsProps>; /** Host default; a table's explicit density takes precedence. */
79
+ defaultDensity?: MatrxDataTableDensity;
79
80
  notify?: {
80
81
  success(message: string): void;
81
82
  error(message: string): void;
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { ComponentType, ReactNode, MouseEventHandler } from 'react';
3
3
  import { CopyControlProps } from './copy-types.js';
4
4
  export { AgentPayloadInput, AiCustomSource, AiVariant, CopyExportConfig } from './copy-types.js';
5
- import { b as TableSavedViewsProps } from '../types-xTXSqmR7.js';
5
+ import { b as TableSavedViewsProps, c as MatrxDataTableDensity } from '../types-lNw7TnTM.js';
6
6
 
7
7
  interface TableLinkProps {
8
8
  href: string;
@@ -75,7 +75,8 @@ interface MatrxDataTableHost {
75
75
  EntityRef?: ComponentType<TableEntityRefProps>;
76
76
  resolveEntityDoors?: (token: string, id: string, href?: string | null) => TableDoors | null;
77
77
  ResourcePeek?: ComponentType<TablePeekProps>;
78
- SavedViews?: ComponentType<TableSavedViewsProps>;
78
+ SavedViews?: ComponentType<TableSavedViewsProps>; /** Host default; a table's explicit density takes precedence. */
79
+ defaultDensity?: MatrxDataTableDensity;
79
80
  notify?: {
80
81
  success(message: string): void;
81
82
  error(message: string): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/data-table/host.tsx"],"sourcesContent":["\"use client\";\nimport { createContext, useContext, type Context, type ComponentType, type ReactNode, type MouseEventHandler } from \"react\";\nimport type { CopyControlProps } from \"./copy-types\";\nimport type { TableSavedViewsProps } from \"./types\";\n\nexport type {\n AgentPayloadInput,\n AiCustomSource,\n AiVariant,\n CopyControlProps,\n CopyExportConfig,\n} from \"./copy-types\";\n\nexport interface TableLinkProps { href: string; children: ReactNode; className?: string; onClick?: MouseEventHandler<HTMLAnchorElement>; }\n/**\n * Host-owned toolbar affordance. The table package keeps operation state and\n * labels; an application can supply its canonical icon-button primitive\n * without making the shared package depend on an application UI package.\n */\nexport interface TableToolbarActionProps { ariaLabel: string; tooltip?: string | undefined; disabled?: boolean | undefined; busy?: boolean | undefined; /** Indicates a selected mutually-exclusive action such as the current page. */ active?: boolean | undefined; onClick: () => void; children: ReactNode; }\nexport interface TableSidePanelProps { title: string; titleNode?: ReactNode; description?: ReactNode; onClose: () => void; defaultWidth?: number; headerActions?: ReactNode; children: ReactNode; }\nexport interface TableWindowPanelProps { id: string; title: string; onClose: () => void; width?: number; height?: number; minWidth?: number; minHeight?: number; actionsRight?: ReactNode; bodyClassName?: string; sidebarDefaultSize?: number; sidebarMinSize?: number; sidebar?: ReactNode; children: ReactNode; }\nexport interface TableEntityRefProps { token: string; id: string; href?: string; children: ReactNode; className?: string; }\nexport interface TablePeekProps { kind: string; id: string; href?: string; onClose: () => void; }\nexport interface TableDoors { href?: string; peekKind?: string; canPeek?: boolean; }\nexport interface MatrxDataTableHost { Link?: ComponentType<TableLinkProps>; CopyControls?: ComponentType<CopyControlProps>; ToolbarAction?: ComponentType<TableToolbarActionProps>; SidePanelSurface?: ComponentType<TableSidePanelProps>; WindowPanel?: ComponentType<TableWindowPanelProps>; EntityRef?: ComponentType<TableEntityRefProps>; resolveEntityDoors?: (token: string, id: string, href?: string | null) => TableDoors | null; ResourcePeek?: ComponentType<TablePeekProps>; SavedViews?: ComponentType<TableSavedViewsProps>; notify?: { success(message: string): void; error(message: string): void }; }\n// Public entrypoints are independently bundled in ESM and CJS. The context\n// identity must survive those bundle boundaries; values stay provider-scoped.\nconst HOST_SLOT = Symbol.for(\"ai-matrx.design-system.table-host-context\");\nconst hostRegistry = globalThis as typeof globalThis & { [HOST_SLOT]?: Context<MatrxDataTableHost> };\nconst HostContext = hostRegistry[HOST_SLOT] ??= createContext<MatrxDataTableHost>({});\nexport function MatrxDataTableProvider({ value, children }: { value: MatrxDataTableHost; children: ReactNode }) { return <HostContext.Provider value={value}>{children}</HostContext.Provider>; }\nexport function useMatrxDataTableHost(): MatrxDataTableHost { return useContext(HostContext); }\n"],"mappings":";;;;AACA,SAAS,eAAe,kBAA4F;AA8BK;AAHzH,IAAM,YAAY,uBAAO,IAAI,2CAA2C;AACxE,IAAM,eAAe;AACrB,IAAM,cAAc,aAAa,SAAS,MAAM,cAAkC,CAAC,CAAC;AAC7E,SAAS,uBAAuB,EAAE,OAAO,SAAS,GAAuD;AAAE,SAAO,oBAAC,YAAY,UAAZ,EAAqB,OAAe,UAAS;AAAyB;AACzL,SAAS,wBAA4C;AAAE,SAAO,WAAW,WAAW;AAAG;","names":[]}
1
+ {"version":3,"sources":["../../src/data-table/host.tsx"],"sourcesContent":["\"use client\";\nimport { createContext, useContext, type Context, type ComponentType, type ReactNode, type MouseEventHandler } from \"react\";\nimport type { CopyControlProps } from \"./copy-types\";\nimport type { MatrxDataTableDensity, TableSavedViewsProps } from \"./types\";\n\nexport type {\n AgentPayloadInput,\n AiCustomSource,\n AiVariant,\n CopyControlProps,\n CopyExportConfig,\n} from \"./copy-types\";\n\nexport interface TableLinkProps { href: string; children: ReactNode; className?: string; onClick?: MouseEventHandler<HTMLAnchorElement>; }\n/**\n * Host-owned toolbar affordance. The table package keeps operation state and\n * labels; an application can supply its canonical icon-button primitive\n * without making the shared package depend on an application UI package.\n */\nexport interface TableToolbarActionProps { ariaLabel: string; tooltip?: string | undefined; disabled?: boolean | undefined; busy?: boolean | undefined; /** Indicates a selected mutually-exclusive action such as the current page. */ active?: boolean | undefined; onClick: () => void; children: ReactNode; }\nexport interface TableSidePanelProps { title: string; titleNode?: ReactNode; description?: ReactNode; onClose: () => void; defaultWidth?: number; headerActions?: ReactNode; children: ReactNode; }\nexport interface TableWindowPanelProps { id: string; title: string; onClose: () => void; width?: number; height?: number; minWidth?: number; minHeight?: number; actionsRight?: ReactNode; bodyClassName?: string; sidebarDefaultSize?: number; sidebarMinSize?: number; sidebar?: ReactNode; children: ReactNode; }\nexport interface TableEntityRefProps { token: string; id: string; href?: string; children: ReactNode; className?: string; }\nexport interface TablePeekProps { kind: string; id: string; href?: string; onClose: () => void; }\nexport interface TableDoors { href?: string; peekKind?: string; canPeek?: boolean; }\nexport interface MatrxDataTableHost { Link?: ComponentType<TableLinkProps>; CopyControls?: ComponentType<CopyControlProps>; ToolbarAction?: ComponentType<TableToolbarActionProps>; SidePanelSurface?: ComponentType<TableSidePanelProps>; WindowPanel?: ComponentType<TableWindowPanelProps>; EntityRef?: ComponentType<TableEntityRefProps>; resolveEntityDoors?: (token: string, id: string, href?: string | null) => TableDoors | null; ResourcePeek?: ComponentType<TablePeekProps>; SavedViews?: ComponentType<TableSavedViewsProps>; /** Host default; a table's explicit density takes precedence. */ defaultDensity?: MatrxDataTableDensity; notify?: { success(message: string): void; error(message: string): void }; }\n// Public entrypoints are independently bundled in ESM and CJS. The context\n// identity must survive those bundle boundaries; values stay provider-scoped.\nconst HOST_SLOT = Symbol.for(\"ai-matrx.design-system.table-host-context\");\nconst hostRegistry = globalThis as typeof globalThis & { [HOST_SLOT]?: Context<MatrxDataTableHost> };\nconst HostContext = hostRegistry[HOST_SLOT] ??= createContext<MatrxDataTableHost>({});\nexport function MatrxDataTableProvider({ value, children }: { value: MatrxDataTableHost; children: ReactNode }) { return <HostContext.Provider value={value}>{children}</HostContext.Provider>; }\nexport function useMatrxDataTableHost(): MatrxDataTableHost { return useContext(HostContext); }\n"],"mappings":";;;;AACA,SAAS,eAAe,kBAA4F;AA8BK;AAHzH,IAAM,YAAY,uBAAO,IAAI,2CAA2C;AACxE,IAAM,eAAe;AACrB,IAAM,cAAc,aAAa,SAAS,MAAM,cAAkC,CAAC,CAAC;AAC7E,SAAS,uBAAuB,EAAE,OAAO,SAAS,GAAuD;AAAE,SAAO,oBAAC,YAAY,UAAZ,EAAqB,OAAe,UAAS;AAAyB;AACzL,SAAS,wBAA4C;AAAE,SAAO,WAAW,WAAW;AAAG;","names":[]}
@@ -1880,7 +1880,7 @@ function PaginationAction({
1880
1880
  ...props
1881
1881
  }) {
1882
1882
  if (HostAction) {
1883
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: visibilityClassName, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1883
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { "data-matrx-table-icon-action": true, className: visibilityClassName, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1884
1884
  HostAction,
1885
1885
  {
1886
1886
  ...props,
@@ -1905,6 +1905,7 @@ function PaginationAction({
1905
1905
  fallbackClassName
1906
1906
  ),
1907
1907
  "aria-current": active ? "page" : void 0,
1908
+ "data-matrx-table-icon-action": true,
1908
1909
  children: props.children
1909
1910
  }
1910
1911
  );
@@ -7896,10 +7897,10 @@ function TableToolbarAction({
7896
7897
  children
7897
7898
  }) {
7898
7899
  if (HostAction) {
7899
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(HostAction, { ariaLabel, tooltip, disabled, busy, onClick, children });
7900
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "data-matrx-table-toolbar-action": true, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(HostAction, { ariaLabel, tooltip, disabled, busy, onClick, children }) });
7900
7901
  }
7901
7902
  return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(Tooltip, { children: [
7902
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "inline-flex", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Button, { type: "button", variant: "ghost", size: "icon", className: "h-11 w-11 [&_svg]:size-5", "aria-label": ariaLabel, "aria-busy": busy || void 0, disabled, onClick, children: (0, import_react17.isValidElement)(children) ? (0, import_react17.cloneElement)(children, { className: cn("h-5 w-5", children.props.className) }) : children }) }) }),
7903
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "data-matrx-table-toolbar-action": true, className: "inline-flex", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Button, { type: "button", variant: "ghost", size: "icon", className: "h-11 w-11 [&_svg]:size-5", "aria-label": ariaLabel, "aria-busy": busy || void 0, disabled, onClick, children: (0, import_react17.isValidElement)(children) ? (0, import_react17.cloneElement)(children, { className: cn("h-5 w-5", children.props.className) }) : children }) }) }),
7903
7904
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TooltipContent, { children: tooltip ?? ariaLabel })
7904
7905
  ] });
7905
7906
  }
@@ -8070,7 +8071,8 @@ function MatrxDataTableCore({
8070
8071
  tableClassName,
8071
8072
  mobileCards,
8072
8073
  mobileCardsBreakpoint = "sm",
8073
- onRowOpen
8074
+ onRowOpen,
8075
+ density
8074
8076
  }) {
8075
8077
  const appendQuery = query?.mode === "controlled-append" ? query : null;
8076
8078
  const appendQueryKey = appendQuery?.pagination.queryKey ?? null;
@@ -8080,6 +8082,7 @@ function MatrxDataTableCore({
8080
8082
  const isLoading = appendQuery ? appendQuery.pagination.loading : suppliedLoading;
8081
8083
  const isFetching = appendQuery ? appendQuery.pagination.isFetchingNextPage : suppliedFetching;
8082
8084
  const host = useMatrxDataTableHost();
8085
+ const resolvedDensity = density ?? host.defaultDensity ?? "normal";
8083
8086
  const SavedViews = host.SavedViews;
8084
8087
  const Link = host.Link ?? DefaultTableLink;
8085
8088
  const SidePanelSurface = host.SidePanelSurface ?? DefaultTableSidePanel;
@@ -8088,7 +8091,7 @@ function MatrxDataTableCore({
8088
8091
  const [toolbarActionError, setToolbarActionError] = (0, import_react17.useState)(null);
8089
8092
  const [toolbarActionPending, setToolbarActionPending] = (0, import_react17.useState)({ refresh: false, add: false });
8090
8093
  const toolbarActionPendingRef = (0, import_react17.useRef)({ refresh: false, add: false });
8091
- const CHECKBOX_TAP_AREA = "relative max-lg:before:absolute max-lg:before:left-1/2 max-lg:before:top-1/2 max-lg:before:h-11 max-lg:before:w-11 max-lg:before:-translate-x-1/2 max-lg:before:-translate-y-1/2 max-lg:before:content-['']";
8094
+ const CHECKBOX_TAP_AREA = "h-4 w-4 touch-manipulation";
8092
8095
  const mobileCardsClass = mobileCardsBreakpoint === "lg" ? "lg:hidden" : "sm:hidden";
8093
8096
  const tableWithCardsClass = mobileCardsBreakpoint === "lg" ? "max-lg:hidden" : "max-sm:hidden";
8094
8097
  const controlledQuery = query?.mode === "controlled" || query?.mode === "controlled-local" || query?.mode === "controlled-append" ? query : null;
@@ -8509,13 +8512,23 @@ function MatrxDataTableCore({
8509
8512
  0
8510
8513
  );
8511
8514
  const selectionWidth = widthFor("th[data-matrx-table-selection-column]");
8512
- const actionsWidth = widthFor("th[data-matrx-table-actions-column]");
8515
+ const headerActionsWidth = widthFor("th[data-matrx-table-actions-column]");
8516
+ const visibleActionStrips = Array.from(
8517
+ table?.querySelectorAll("[data-matrx-table-row-actions]") ?? []
8518
+ ).filter(
8519
+ (element) => element.closest("table") === table && element.getClientRects().length > 0
8520
+ );
8521
+ const actionContentWidth = Math.max(
8522
+ 0,
8523
+ ...visibleActionStrips.map((element) => Math.ceil(element.scrollWidth))
8524
+ );
8525
+ const actionsWidth = actionContentWidth || headerActionsWidth;
8513
8526
  return {
8514
8527
  ...headerTotal > 0 ? { tableWidth: Math.ceil(headerTotal) } : {},
8515
8528
  ...selectionWidth === void 0 ? {} : { selectionWidth },
8516
8529
  ...actionsWidth === void 0 ? {} : { actionsWidth }
8517
8530
  };
8518
- }, []);
8531
+ }, [resolvedDensity]);
8519
8532
  const captureResizeGestureSnapshot = (0, import_react17.useCallback)(() => {
8520
8533
  resizeGestureSnapshotRef.current = {
8521
8534
  widths: measureVisibleColumnWidths(),
@@ -8586,6 +8599,27 @@ function MatrxDataTableCore({
8586
8599
  }
8587
8600
  if (fixedTableGeometry === null) setFixedTableGeometry(measureFixedTableGeometry());
8588
8601
  }, [fixedTableGeometry, measureFixedTableGeometry, usesMeasuredFixedLayout]);
8602
+ (0, import_react17.useLayoutEffect)(() => {
8603
+ if (!usesMeasuredFixedLayout) return;
8604
+ const table = tableRef.current;
8605
+ if (!table) return;
8606
+ const utilityHeaders = Array.from(table.querySelectorAll(
8607
+ "th[data-matrx-table-selection-column], th[data-matrx-table-actions-column]"
8608
+ ));
8609
+ const utilityStyles = utilityHeaders.map((header) => header.getAttribute("style"));
8610
+ const resizedWidth = table.style.getPropertyValue("--matrx-resized-table-width");
8611
+ for (const header of utilityHeaders) header.removeAttribute("style");
8612
+ table.style.removeProperty("--matrx-resized-table-width");
8613
+ void table.getBoundingClientRect();
8614
+ const geometry = measureFixedTableGeometry();
8615
+ utilityHeaders.forEach((header, index) => {
8616
+ const style = utilityStyles[index];
8617
+ if (style == null) header.removeAttribute("style");
8618
+ else header.setAttribute("style", style);
8619
+ });
8620
+ table.style.setProperty("--matrx-resized-table-width", resizedWidth);
8621
+ setFixedTableGeometry(geometry);
8622
+ }, [resolvedDensity, measureFixedTableGeometry, usesMeasuredFixedLayout]);
8589
8623
  const fixedLayoutActive = usesMeasuredFixedLayout && fixedTableGeometry !== null;
8590
8624
  const declaredVisibleCopyColumns = (0, import_react17.useMemo)(
8591
8625
  () => visibleColumns.filter((column) => column.accessorFn !== void 0 || column.accessorKey !== void 0),
@@ -9391,16 +9425,10 @@ function MatrxDataTableCore({
9391
9425
  {
9392
9426
  ref: setDiagnosticBoundaryRef,
9393
9427
  "data-matrx-table": true,
9428
+ "data-matrx-table-density": resolvedDensity,
9394
9429
  "data-url-state-table": urlState?.id,
9395
9430
  className: cn(
9396
- // The touch-target floor deliberately SKIPS checkboxes, radios and
9397
- // switches. Radix renders those as `<button role="checkbox">`, so the
9398
- // blanket `[&_button]` rule inflated a 14px checkbox into a 44×44
9399
- // bordered empty box — measured on Search Console → Queries at 375px,
9400
- // where every row read as an empty text input rather than a selection
9401
- // control. The control keeps its own size and gains the 44px tap area
9402
- // as an invisible ::before below.
9403
- "flex h-full min-h-0 flex-col gap-2 px-0 py-2 max-lg:[&_button:not([role=checkbox]):not([role=radio]):not([role=switch])]:min-h-11 max-lg:[&_button:not([role=checkbox]):not([role=radio]):not([role=switch])]:min-w-11 max-lg:[&_input]:min-h-11 max-lg:[&_table_a]:inline-flex max-lg:[&_table_a]:min-h-11 max-lg:[&_table_a]:items-center",
9431
+ "flex h-full min-h-0 flex-col gap-2 px-0 py-2",
9404
9432
  className
9405
9433
  ),
9406
9434
  children: [
@@ -9412,7 +9440,7 @@ function MatrxDataTableCore({
9412
9440
  TableTitleRow,
9413
9441
  {
9414
9442
  ...toolbar?.title === void 0 ? {} : { title: toolbar.title },
9415
- context: tableId && SavedViews ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9443
+ context: tableId && SavedViews ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "data-matrx-table-view-control": true, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9416
9444
  SavedViews,
9417
9445
  {
9418
9446
  tableId,
@@ -9420,7 +9448,7 @@ function MatrxDataTableCore({
9420
9448
  defaultSnapshot: declaredDefaultViewSnapshot,
9421
9449
  onApply: applySavedView
9422
9450
  }
9423
- ) : void 0,
9451
+ ) }) : void 0,
9424
9452
  search: showSearch ? intelligentSearchEnabled ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9425
9453
  TableSearch,
9426
9454
  {
@@ -9902,13 +9930,24 @@ function MatrxDataTableCore({
9902
9930
  className: "h-9 w-9 px-2 text-left align-middle",
9903
9931
  style: fixedUtilityWidth(fixedTableGeometry?.selectionWidth),
9904
9932
  children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9905
- Checkbox,
9933
+ "div",
9906
9934
  {
9907
- className: CHECKBOX_TAP_AREA,
9908
- checked: allOnPageSelected ? true : someOnPageSelected ? "indeterminate" : false,
9909
- disabled: selectableRows.length === 0,
9910
- onCheckedChange: toggleAllOnPage,
9911
- "aria-label": allOnPageSelected ? "Clear selection on this page" : "Select every row on this page"
9935
+ "data-matrx-table-selection-target": true,
9936
+ onClick: (event) => {
9937
+ if (event.target === event.currentTarget) {
9938
+ event.currentTarget.querySelector('[role="checkbox"]')?.click();
9939
+ }
9940
+ },
9941
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9942
+ Checkbox,
9943
+ {
9944
+ className: CHECKBOX_TAP_AREA,
9945
+ checked: allOnPageSelected ? true : someOnPageSelected ? "indeterminate" : false,
9946
+ disabled: selectableRows.length === 0,
9947
+ onCheckedChange: toggleAllOnPage,
9948
+ "aria-label": allOnPageSelected ? "Clear selection on this page" : "Select every row on this page"
9949
+ }
9950
+ )
9912
9951
  }
9913
9952
  )
9914
9953
  }
@@ -10083,12 +10122,23 @@ function MatrxDataTableCore({
10083
10122
  style: fixedUtilityWidth(fixedTableGeometry?.selectionWidth),
10084
10123
  onClick: (e) => e.stopPropagation(),
10085
10124
  children: selection.isRowSelectable?.(row) ?? true ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
10086
- Checkbox,
10125
+ "div",
10087
10126
  {
10088
- className: CHECKBOX_TAP_AREA,
10089
- checked: isChecked,
10090
- "aria-label": `Select this ${selectionNoun}`,
10091
- onClick: (e) => toggleRowSelected(index, e.shiftKey)
10127
+ "data-matrx-table-selection-target": true,
10128
+ onClick: (event) => {
10129
+ if (event.target === event.currentTarget) {
10130
+ event.currentTarget.querySelector('[role="checkbox"]')?.click();
10131
+ }
10132
+ },
10133
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
10134
+ Checkbox,
10135
+ {
10136
+ className: CHECKBOX_TAP_AREA,
10137
+ checked: isChecked,
10138
+ "aria-label": `Select this ${selectionNoun}`,
10139
+ onClick: (e) => toggleRowSelected(index, e.shiftKey)
10140
+ }
10141
+ )
10092
10142
  }
10093
10143
  ) : null
10094
10144
  }