@ai-matrx/design-system 0.21.1 → 0.21.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/content-transfer.cjs +20 -6
  3. package/dist/content-transfer.cjs.map +1 -1
  4. package/dist/content-transfer.d.cts +38 -4
  5. package/dist/content-transfer.d.ts +38 -4
  6. package/dist/content-transfer.js +20 -6
  7. package/dist/content-transfer.js.map +1 -1
  8. package/dist/data-table/copy-helpers.d.cts +4 -3
  9. package/dist/data-table/copy-helpers.d.ts +4 -3
  10. package/dist/data-table/copy-types.cjs.map +1 -1
  11. package/dist/data-table/copy-types.d.cts +7 -2
  12. package/dist/data-table/copy-types.d.ts +7 -2
  13. package/dist/data-table/data-row-inspector.cjs +23 -6
  14. package/dist/data-table/data-row-inspector.cjs.map +1 -1
  15. package/dist/data-table/data-row-inspector.js +23 -6
  16. package/dist/data-table/data-row-inspector.js.map +1 -1
  17. package/dist/data-table/data-row-window.cjs +23 -6
  18. package/dist/data-table/data-row-window.cjs.map +1 -1
  19. package/dist/data-table/data-row-window.js +23 -6
  20. package/dist/data-table/data-row-window.js.map +1 -1
  21. package/dist/data-table/filter-engine.d.cts +4 -3
  22. package/dist/data-table/filter-engine.d.ts +4 -3
  23. package/dist/data-table/host.cjs +12 -1
  24. package/dist/data-table/host.cjs.map +1 -1
  25. package/dist/data-table/host.d.cts +16 -3
  26. package/dist/data-table/host.d.ts +16 -3
  27. package/dist/data-table/host.js +12 -1
  28. package/dist/data-table/host.js.map +1 -1
  29. package/dist/data-table/index.cjs +992 -843
  30. package/dist/data-table/index.cjs.map +1 -1
  31. package/dist/data-table/index.d.cts +15 -6
  32. package/dist/data-table/index.d.ts +15 -6
  33. package/dist/data-table/index.js +949 -800
  34. package/dist/data-table/index.js.map +1 -1
  35. package/dist/data-table/infer-filter.d.cts +4 -3
  36. package/dist/data-table/infer-filter.d.ts +4 -3
  37. package/dist/data-table/layered-filters.d.cts +4 -3
  38. package/dist/data-table/layered-filters.d.ts +4 -3
  39. package/dist/data-table/pagination.cjs +3 -0
  40. package/dist/data-table/pagination.cjs.map +1 -1
  41. package/dist/data-table/pagination.js +3 -0
  42. package/dist/data-table/pagination.js.map +1 -1
  43. package/dist/data-table/query-control.d.cts +4 -3
  44. package/dist/data-table/query-control.d.ts +4 -3
  45. package/dist/data-table/types.cjs.map +1 -1
  46. package/dist/data-table/types.d.cts +3 -2
  47. package/dist/data-table/types.d.ts +3 -2
  48. package/dist/data-table/url-state.d.cts +4 -3
  49. package/dist/data-table/url-state.d.ts +4 -3
  50. package/dist/data-table/uuid-cell.cjs +3 -0
  51. package/dist/data-table/uuid-cell.cjs.map +1 -1
  52. package/dist/data-table/uuid-cell.js +3 -0
  53. package/dist/data-table/uuid-cell.js.map +1 -1
  54. package/dist/data-table/xlsx.d.cts +4 -3
  55. package/dist/data-table/xlsx.d.ts +4 -3
  56. package/dist/styles.css +9 -0
  57. package/dist/{types-B99KFITZ.d.cts → types-BarjBFyG.d.cts} +9 -1
  58. package/dist/{types-CryQuMmz.d.ts → types-JFlsIv-0.d.ts} +9 -1
  59. package/package.json +1 -1
  60. package/dist/extensions-DCHtNwG3.d.cts +0 -32
  61. package/dist/extensions-DCHtNwG3.d.ts +0 -32
@@ -407,6 +407,9 @@ var HostContext = hostRegistry[HOST_SLOT] ??= (0, import_react.createContext)({}
407
407
  function useMatrxDataTableHost() {
408
408
  return (0, import_react.useContext)(HostContext);
409
409
  }
410
+ var ROW_ALCHEMY_SLOT = /* @__PURE__ */ Symbol.for("ai-matrx.design-system.table-row-alchemy-context");
411
+ var rowAlchemyRegistry = globalThis;
412
+ var RowAlchemyContext = rowAlchemyRegistry[ROW_ALCHEMY_SLOT] ??= (0, import_react.createContext)(null);
410
413
 
411
414
  // src/content-transfer/matrx-copy.tsx
412
415
  var React10 = __toESM(require("react"), 1);
@@ -1404,8 +1407,9 @@ function ContentTransferMenu(props) {
1404
1407
  const identityKey = props.capabilities?.identityKey ?? inherited.identityKey;
1405
1408
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ContentTransferMenuSession, { ...props }, identityKey ?? "anonymous");
1406
1409
  }
1407
- function ContentTransferMenuSession({ references = [], referenceActions = [], source, surface, label, projection, sections, preferences, table, formatSources, sourceFormats = true, variants = EMPTY_VARIANTS, actions = [], capabilities: local, disabled, enabled = true, className, stopPropagation = true, hide = [], controllerRef, icon = "portal", triggerVariant = "transparent", triggerSize = "default" }) {
1410
+ function ContentTransferMenuSession({ references = [], referenceActions = [], source, surface, label, projection, sections, preferences, table, formatSources, sourceFormats = true, variants = EMPTY_VARIANTS, actions = [], capabilities: local, disabled, enabled = true, className, stopPropagation = true, hide = [], controllerRef, icon = "portal", triggerVariant = "transparent", triggerSize = "default", triggerHidden = false }) {
1408
1411
  const triggerRef = React9.useRef(null);
1412
+ const restoreFocusRef = React9.useRef(null);
1409
1413
  const inherited = React9.useContext(CapabilityContext);
1410
1414
  const nearestSurface = React9.useContext(SurfaceContext);
1411
1415
  const fence = useFence();
@@ -1655,13 +1659,21 @@ function ContentTransferMenuSession({ references = [], referenceActions = [], so
1655
1659
  );
1656
1660
  React9.useImperativeHandle(controllerRef, () => ({
1657
1661
  focusTrigger: () => triggerRef.current?.focus(),
1662
+ preparePrimary: async (options) => {
1663
+ if (!enabled) throw new Error("Alchemy is not enabled for this record.");
1664
+ if (disabled) throw new Error("Alchemy is disabled for this record.");
1665
+ if (hide.includes("prepare")) throw new Error("Alchemy preparation is unavailable for this record.");
1666
+ if (!primary) throw new Error("Alchemy has no source to prepare.");
1667
+ restoreFocusRef.current = options?.restoreFocus ?? null;
1668
+ await openWorkspace(primaryWorkspaceKey, { source: primary, label: sourceLabel });
1669
+ },
1658
1670
  prepare: async (requestedSource, options) => {
1659
1671
  const requestedLabel = options?.label ?? ("label" in requestedSource ? requestedSource.label : "content");
1660
1672
  const requestedKey = `controller:${options?.id ?? "source"}:${materialIdentity(requestedSource)}`;
1661
1673
  externalWorkspaceKeys.current.add(requestedKey);
1662
1674
  await openWorkspace(requestedKey, { source: requestedSource, label: requestedLabel });
1663
1675
  }
1664
- }), [openWorkspace]);
1676
+ }), [disabled, enabled, hide, openWorkspace, primary, primaryWorkspaceKey, sourceLabel]);
1665
1677
  const runAction = React9.useCallback(async (action) => {
1666
1678
  const { controller, id } = fence.begin();
1667
1679
  try {
@@ -1744,7 +1756,7 @@ function ContentTransferMenuSession({ references = [], referenceActions = [], so
1744
1756
  ] }, id);
1745
1757
  };
1746
1758
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: cn("matrx-alchemy", className), onClick: stopPropagation ? (event) => event.stopPropagation() : void 0, children: [
1747
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Popover, { open: paletteOpen, onOpenChange: (open) => {
1759
+ !triggerHidden ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Popover, { open: paletteOpen, onOpenChange: (open) => {
1748
1760
  setPaletteOpen(open);
1749
1761
  if (open) {
1750
1762
  setMode("copy");
@@ -1853,13 +1865,13 @@ function ContentTransferMenuSession({ references = [], referenceActions = [], so
1853
1865
  ] }, group) : null;
1854
1866
  })
1855
1867
  ] })
1856
- ] }),
1868
+ ] }) : null,
1857
1869
  notice && triggerRef.current ? (0, import_react_dom.createPortal)(/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "matrx-alchemy-feedback", children: [
1858
1870
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { role: "status", children: notice }),
1859
1871
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ReceiptLink, { target: receiptTarget }),
1860
1872
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { type: "button", "aria-label": "Dismiss Alchemy feedback", onClick: () => setNotice(null), children: "\xD7" })
1861
1873
  ] }), triggerRef.current.ownerDocument.body) : null,
1862
- Object.values(workspaces).map((saved) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(PreparationWorkspace, { restoreFocus: () => triggerRef.current?.focus(), open: workspaceOpen && workspaceKey === saved.key, state: saved, scopes, scopeLabels: table?.scopeLabels, onClose: () => setWorkspaceOpen(false), onChange: (next) => setWorkspaces((current) => ({ ...current, [saved.key]: next })), transport, adapters, actions: preparedActions, captureScope: workspaceCaptures.current.get(saved.key) ?? capturePrimary, ...ai ? { ai } : {}, onOutcome: report }, saved.key)),
1874
+ Object.values(workspaces).map((saved) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(PreparationWorkspace, { restoreFocus: () => restoreFocusRef.current?.() ?? triggerRef.current?.focus(), open: workspaceOpen && workspaceKey === saved.key, state: saved, scopes, scopeLabels: table?.scopeLabels, onClose: () => setWorkspaceOpen(false), onChange: (next) => setWorkspaces((current) => ({ ...current, [saved.key]: next })), transport, adapters, actions: preparedActions, captureScope: workspaceCaptures.current.get(saved.key) ?? capturePrimary, ...ai ? { ai } : {}, onOutcome: report }, saved.key)),
1863
1875
  emailReview
1864
1876
  ] });
1865
1877
  }
@@ -2666,7 +2678,12 @@ function MatrxCopyMenuSession(props) {
2666
2678
  ...props.referenceActions ? { referenceActions: props.referenceActions } : {},
2667
2679
  ...props.icon !== void 0 ? { icon: props.icon } : {},
2668
2680
  ...props.triggerVariant !== void 0 ? { triggerVariant: props.triggerVariant } : {},
2669
- controllerRef: controller,
2681
+ controllerRef: (value) => {
2682
+ controller.current = value;
2683
+ if (typeof props.controllerRef === "function") props.controllerRef(value);
2684
+ else if (props.controllerRef) props.controllerRef.current = value;
2685
+ },
2686
+ ...props.triggerHidden ? { triggerHidden: true } : {},
2670
2687
  label: props.label,
2671
2688
  variants,
2672
2689
  actions,