@ai-matrx/design-system 0.19.7 → 0.19.9

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 +17 -1
  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 +65 -25
  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 +65 -25
  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 +91 -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;
@@ -8515,7 +8518,7 @@ function MatrxDataTableCore({
8515
8518
  ...selectionWidth === void 0 ? {} : { selectionWidth },
8516
8519
  ...actionsWidth === void 0 ? {} : { actionsWidth }
8517
8520
  };
8518
- }, []);
8521
+ }, [resolvedDensity]);
8519
8522
  const captureResizeGestureSnapshot = (0, import_react17.useCallback)(() => {
8520
8523
  resizeGestureSnapshotRef.current = {
8521
8524
  widths: measureVisibleColumnWidths(),
@@ -8586,6 +8589,27 @@ function MatrxDataTableCore({
8586
8589
  }
8587
8590
  if (fixedTableGeometry === null) setFixedTableGeometry(measureFixedTableGeometry());
8588
8591
  }, [fixedTableGeometry, measureFixedTableGeometry, usesMeasuredFixedLayout]);
8592
+ (0, import_react17.useLayoutEffect)(() => {
8593
+ if (!usesMeasuredFixedLayout) return;
8594
+ const table = tableRef.current;
8595
+ if (!table) return;
8596
+ const utilityHeaders = Array.from(table.querySelectorAll(
8597
+ "th[data-matrx-table-selection-column], th[data-matrx-table-actions-column]"
8598
+ ));
8599
+ const utilityStyles = utilityHeaders.map((header) => header.getAttribute("style"));
8600
+ const resizedWidth = table.style.getPropertyValue("--matrx-resized-table-width");
8601
+ for (const header of utilityHeaders) header.removeAttribute("style");
8602
+ table.style.removeProperty("--matrx-resized-table-width");
8603
+ void table.getBoundingClientRect();
8604
+ const geometry = measureFixedTableGeometry();
8605
+ utilityHeaders.forEach((header, index) => {
8606
+ const style = utilityStyles[index];
8607
+ if (style == null) header.removeAttribute("style");
8608
+ else header.setAttribute("style", style);
8609
+ });
8610
+ table.style.setProperty("--matrx-resized-table-width", resizedWidth);
8611
+ setFixedTableGeometry(geometry);
8612
+ }, [resolvedDensity, measureFixedTableGeometry, usesMeasuredFixedLayout]);
8589
8613
  const fixedLayoutActive = usesMeasuredFixedLayout && fixedTableGeometry !== null;
8590
8614
  const declaredVisibleCopyColumns = (0, import_react17.useMemo)(
8591
8615
  () => visibleColumns.filter((column) => column.accessorFn !== void 0 || column.accessorKey !== void 0),
@@ -9391,16 +9415,10 @@ function MatrxDataTableCore({
9391
9415
  {
9392
9416
  ref: setDiagnosticBoundaryRef,
9393
9417
  "data-matrx-table": true,
9418
+ "data-matrx-table-density": resolvedDensity,
9394
9419
  "data-url-state-table": urlState?.id,
9395
9420
  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 p-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",
9421
+ "flex h-full min-h-0 flex-col gap-2 px-0 py-2",
9404
9422
  className
9405
9423
  ),
9406
9424
  children: [
@@ -9902,13 +9920,24 @@ function MatrxDataTableCore({
9902
9920
  className: "h-9 w-9 px-2 text-left align-middle",
9903
9921
  style: fixedUtilityWidth(fixedTableGeometry?.selectionWidth),
9904
9922
  children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9905
- Checkbox,
9923
+ "div",
9906
9924
  {
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"
9925
+ "data-matrx-table-selection-target": true,
9926
+ onClick: (event) => {
9927
+ if (event.target === event.currentTarget) {
9928
+ event.currentTarget.querySelector('[role="checkbox"]')?.click();
9929
+ }
9930
+ },
9931
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9932
+ Checkbox,
9933
+ {
9934
+ className: CHECKBOX_TAP_AREA,
9935
+ checked: allOnPageSelected ? true : someOnPageSelected ? "indeterminate" : false,
9936
+ disabled: selectableRows.length === 0,
9937
+ onCheckedChange: toggleAllOnPage,
9938
+ "aria-label": allOnPageSelected ? "Clear selection on this page" : "Select every row on this page"
9939
+ }
9940
+ )
9912
9941
  }
9913
9942
  )
9914
9943
  }
@@ -10083,12 +10112,23 @@ function MatrxDataTableCore({
10083
10112
  style: fixedUtilityWidth(fixedTableGeometry?.selectionWidth),
10084
10113
  onClick: (e) => e.stopPropagation(),
10085
10114
  children: selection.isRowSelectable?.(row) ?? true ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
10086
- Checkbox,
10115
+ "div",
10087
10116
  {
10088
- className: CHECKBOX_TAP_AREA,
10089
- checked: isChecked,
10090
- "aria-label": `Select this ${selectionNoun}`,
10091
- onClick: (e) => toggleRowSelected(index, e.shiftKey)
10117
+ "data-matrx-table-selection-target": true,
10118
+ onClick: (event) => {
10119
+ if (event.target === event.currentTarget) {
10120
+ event.currentTarget.querySelector('[role="checkbox"]')?.click();
10121
+ }
10122
+ },
10123
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
10124
+ Checkbox,
10125
+ {
10126
+ className: CHECKBOX_TAP_AREA,
10127
+ checked: isChecked,
10128
+ "aria-label": `Select this ${selectionNoun}`,
10129
+ onClick: (e) => toggleRowSelected(index, e.shiftKey)
10130
+ }
10131
+ )
10092
10132
  }
10093
10133
  ) : null
10094
10134
  }