@ai-matrx/design-system 0.21.2 → 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 (60) hide show
  1. package/CHANGELOG.md +6 -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 +799 -724
  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 +755 -680
  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/{types-Bt-0UhEw.d.cts → types-BarjBFyG.d.cts} +3 -1
  57. package/dist/{types-DnnvjGV4.d.ts → types-JFlsIv-0.d.ts} +3 -1
  58. package/package.json +1 -1
  59. package/dist/extensions-DCHtNwG3.d.cts +0 -32
  60. package/dist/extensions-DCHtNwG3.d.ts +0 -32
@@ -374,6 +374,9 @@ var HostContext = hostRegistry[HOST_SLOT] ??= createContext4({});
374
374
  function useMatrxDataTableHost() {
375
375
  return useContext4(HostContext);
376
376
  }
377
+ var ROW_ALCHEMY_SLOT = /* @__PURE__ */ Symbol.for("ai-matrx.design-system.table-row-alchemy-context");
378
+ var rowAlchemyRegistry = globalThis;
379
+ var RowAlchemyContext = rowAlchemyRegistry[ROW_ALCHEMY_SLOT] ??= createContext4(null);
377
380
 
378
381
  // src/content-transfer/matrx-copy.tsx
379
382
  import * as React10 from "react";
@@ -1407,8 +1410,9 @@ function ContentTransferMenu(props) {
1407
1410
  const identityKey = props.capabilities?.identityKey ?? inherited.identityKey;
1408
1411
  return /* @__PURE__ */ jsx13(ContentTransferMenuSession, { ...props }, identityKey ?? "anonymous");
1409
1412
  }
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" }) {
1413
+ 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 }) {
1411
1414
  const triggerRef = React9.useRef(null);
1415
+ const restoreFocusRef = React9.useRef(null);
1412
1416
  const inherited = React9.useContext(CapabilityContext);
1413
1417
  const nearestSurface = React9.useContext(SurfaceContext);
1414
1418
  const fence = useFence();
@@ -1658,13 +1662,21 @@ function ContentTransferMenuSession({ references = [], referenceActions = [], so
1658
1662
  );
1659
1663
  React9.useImperativeHandle(controllerRef, () => ({
1660
1664
  focusTrigger: () => triggerRef.current?.focus(),
1665
+ preparePrimary: async (options) => {
1666
+ if (!enabled) throw new Error("Alchemy is not enabled for this record.");
1667
+ if (disabled) throw new Error("Alchemy is disabled for this record.");
1668
+ if (hide.includes("prepare")) throw new Error("Alchemy preparation is unavailable for this record.");
1669
+ if (!primary) throw new Error("Alchemy has no source to prepare.");
1670
+ restoreFocusRef.current = options?.restoreFocus ?? null;
1671
+ await openWorkspace(primaryWorkspaceKey, { source: primary, label: sourceLabel });
1672
+ },
1661
1673
  prepare: async (requestedSource, options) => {
1662
1674
  const requestedLabel = options?.label ?? ("label" in requestedSource ? requestedSource.label : "content");
1663
1675
  const requestedKey = `controller:${options?.id ?? "source"}:${materialIdentity(requestedSource)}`;
1664
1676
  externalWorkspaceKeys.current.add(requestedKey);
1665
1677
  await openWorkspace(requestedKey, { source: requestedSource, label: requestedLabel });
1666
1678
  }
1667
- }), [openWorkspace]);
1679
+ }), [disabled, enabled, hide, openWorkspace, primary, primaryWorkspaceKey, sourceLabel]);
1668
1680
  const runAction = React9.useCallback(async (action) => {
1669
1681
  const { controller, id } = fence.begin();
1670
1682
  try {
@@ -1747,7 +1759,7 @@ function ContentTransferMenuSession({ references = [], referenceActions = [], so
1747
1759
  ] }, id);
1748
1760
  };
1749
1761
  return /* @__PURE__ */ jsxs7("span", { className: cn("matrx-alchemy", className), onClick: stopPropagation ? (event) => event.stopPropagation() : void 0, children: [
1750
- /* @__PURE__ */ jsxs7(Popover, { open: paletteOpen, onOpenChange: (open) => {
1762
+ !triggerHidden ? /* @__PURE__ */ jsxs7(Popover, { open: paletteOpen, onOpenChange: (open) => {
1751
1763
  setPaletteOpen(open);
1752
1764
  if (open) {
1753
1765
  setMode("copy");
@@ -1856,13 +1868,13 @@ function ContentTransferMenuSession({ references = [], referenceActions = [], so
1856
1868
  ] }, group) : null;
1857
1869
  })
1858
1870
  ] })
1859
- ] }),
1871
+ ] }) : null,
1860
1872
  notice && triggerRef.current ? createPortal(/* @__PURE__ */ jsxs7("div", { className: "matrx-alchemy-feedback", children: [
1861
1873
  /* @__PURE__ */ jsx13("span", { role: "status", children: notice }),
1862
1874
  /* @__PURE__ */ jsx13(ReceiptLink, { target: receiptTarget }),
1863
1875
  /* @__PURE__ */ jsx13("button", { type: "button", "aria-label": "Dismiss Alchemy feedback", onClick: () => setNotice(null), children: "\xD7" })
1864
1876
  ] }), triggerRef.current.ownerDocument.body) : null,
1865
- Object.values(workspaces).map((saved) => /* @__PURE__ */ jsx13(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)),
1877
+ Object.values(workspaces).map((saved) => /* @__PURE__ */ jsx13(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)),
1866
1878
  emailReview
1867
1879
  ] });
1868
1880
  }
@@ -2669,7 +2681,12 @@ function MatrxCopyMenuSession(props) {
2669
2681
  ...props.referenceActions ? { referenceActions: props.referenceActions } : {},
2670
2682
  ...props.icon !== void 0 ? { icon: props.icon } : {},
2671
2683
  ...props.triggerVariant !== void 0 ? { triggerVariant: props.triggerVariant } : {},
2672
- controllerRef: controller,
2684
+ controllerRef: (value) => {
2685
+ controller.current = value;
2686
+ if (typeof props.controllerRef === "function") props.controllerRef(value);
2687
+ else if (props.controllerRef) props.controllerRef.current = value;
2688
+ },
2689
+ ...props.triggerHidden ? { triggerHidden: true } : {},
2673
2690
  label: props.label,
2674
2691
  variants,
2675
2692
  actions,