@ai-matrx/design-system 0.19.18 → 0.20.0

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 (64) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/content-transfer/alchemy.svg +1 -1
  3. package/dist/content-transfer/icon.cjs +1 -1
  4. package/dist/content-transfer/icon.cjs.map +1 -1
  5. package/dist/content-transfer/icon.js +1 -1
  6. package/dist/content-transfer/icon.js.map +1 -1
  7. package/dist/content-transfer/portal.svg +1 -1
  8. package/dist/content-transfer.cjs +692 -407
  9. package/dist/content-transfer.cjs.map +1 -1
  10. package/dist/content-transfer.css +15 -0
  11. package/dist/content-transfer.d.cts +19 -4
  12. package/dist/content-transfer.d.ts +19 -4
  13. package/dist/content-transfer.js +684 -396
  14. package/dist/content-transfer.js.map +1 -1
  15. package/dist/data-table/copy-helpers.d.cts +3 -1
  16. package/dist/data-table/copy-helpers.d.ts +3 -1
  17. package/dist/data-table/copy-types.cjs.map +1 -1
  18. package/dist/data-table/copy-types.d.cts +4 -0
  19. package/dist/data-table/copy-types.d.ts +4 -0
  20. package/dist/data-table/data-row-inspector.cjs +659 -465
  21. package/dist/data-table/data-row-inspector.cjs.map +1 -1
  22. package/dist/data-table/data-row-inspector.js +662 -463
  23. package/dist/data-table/data-row-inspector.js.map +1 -1
  24. package/dist/data-table/data-row-window.cjs +657 -463
  25. package/dist/data-table/data-row-window.cjs.map +1 -1
  26. package/dist/data-table/data-row-window.js +663 -464
  27. package/dist/data-table/data-row-window.js.map +1 -1
  28. package/dist/data-table/filter-engine.d.cts +3 -1
  29. package/dist/data-table/filter-engine.d.ts +3 -1
  30. package/dist/data-table/host.cjs.map +1 -1
  31. package/dist/data-table/host.d.cts +6 -1
  32. package/dist/data-table/host.d.ts +6 -1
  33. package/dist/data-table/host.js.map +1 -1
  34. package/dist/data-table/index.cjs +1204 -980
  35. package/dist/data-table/index.cjs.map +1 -1
  36. package/dist/data-table/index.d.cts +4 -2
  37. package/dist/data-table/index.d.ts +4 -2
  38. package/dist/data-table/index.js +1343 -1114
  39. package/dist/data-table/index.js.map +1 -1
  40. package/dist/data-table/infer-filter.d.cts +3 -1
  41. package/dist/data-table/infer-filter.d.ts +3 -1
  42. package/dist/data-table/layered-filters.d.cts +3 -1
  43. package/dist/data-table/layered-filters.d.ts +3 -1
  44. package/dist/data-table/pagination.cjs +2 -2
  45. package/dist/data-table/pagination.cjs.map +1 -1
  46. package/dist/data-table/pagination.js +2 -2
  47. package/dist/data-table/pagination.js.map +1 -1
  48. package/dist/data-table/query-control.d.cts +3 -1
  49. package/dist/data-table/query-control.d.ts +3 -1
  50. package/dist/data-table/types.cjs.map +1 -1
  51. package/dist/data-table/types.d.cts +3 -1
  52. package/dist/data-table/types.d.ts +3 -1
  53. package/dist/data-table/url-state.d.cts +3 -1
  54. package/dist/data-table/url-state.d.ts +3 -1
  55. package/dist/data-table/uuid-cell.cjs.map +1 -1
  56. package/dist/data-table/uuid-cell.js.map +1 -1
  57. package/dist/data-table/xlsx.d.cts +3 -1
  58. package/dist/data-table/xlsx.d.ts +3 -1
  59. package/dist/extensions-DCHtNwG3.d.cts +32 -0
  60. package/dist/extensions-DCHtNwG3.d.ts +32 -0
  61. package/dist/tap-target.css +2 -2
  62. package/dist/{types-CRCy-Zy_.d.cts → types-C2yaTspG.d.cts} +5 -0
  63. package/dist/{types-Ch60uNn-.d.ts → types-DB30aCHu.d.ts} +5 -0
  64. package/package.json +1 -1
@@ -19,6 +19,11 @@
19
19
  border: 1px solid hsl(var(--border));
20
20
  box-shadow: none;
21
21
  }
22
+ [data-alchemy-size="compact"] { width: 1.75rem; height: 1.75rem; }
23
+ [data-alchemy-size="compact"] .matrx-tap-icon { width: .875rem; height: .875rem; color: inherit; stroke-width: 2; }
24
+ /* Dense outline toolbars use the same package Button as their neighbors. */
25
+ [data-alchemy-trigger="outline"] { width: 1.75rem; height: 1.75rem; padding: 0; }
26
+ [data-alchemy-trigger="outline"] > svg { width: .875rem; height: .875rem; stroke-width: 2; }
22
27
  @media (pointer: coarse) {
23
28
  [data-alchemy-trigger] { width: 2.75rem; height: 2.75rem; }
24
29
  }
@@ -448,3 +453,13 @@ body:has(.matrx-alchemy-workspace[data-state="open"]) > .matrx-alchemy-feedback
448
453
  .matrx-alchemy-palette-destinations > summary > span { font-size: 0.6875rem; color: hsl(var(--muted-foreground)); }
449
454
  .matrx-alchemy-palette-destinations > summary:hover { background: hsl(var(--accent)); }
450
455
  .matrx-alchemy-palette-destinations > summary:focus-visible { outline: none; box-shadow: inset 0 0 0 2px hsl(var(--ring)); }
456
+
457
+ .matrx-alchemy-scope { display: grid; gap: .375rem; padding: .5rem; font-size: .75rem; }
458
+ .matrx-alchemy-scope select { width: 100%; min-width: 0; padding: .375rem; border: 1px solid hsl(var(--border)); border-radius: .375rem; color: inherit; background: hsl(var(--background)); }
459
+
460
+ /* Email review shares the preparation chrome, including hosts without Tailwind. */
461
+ .matrx-alchemy-email-review { max-height: 85dvh; overflow: auto; }
462
+ .matrx-alchemy-email-review .matrx-alchemy-preview { min-height: 12rem; max-height: 45dvh; resize: vertical; }
463
+ .matrx-alchemy-email-adjustments { font-size: .8125rem; overflow-wrap: anywhere; }
464
+ .matrx-alchemy-email-adjustments ul { margin: .5rem 0 0; padding-left: 1.25rem; }
465
+ @media (min-width: 768px) { .matrx-alchemy-email-review { width: min(32rem, calc(100vw - 2rem)); } }
@@ -2,6 +2,8 @@ import * as React from 'react';
2
2
  import { AgentPayloadInput, TransferOutcome, TransferCapabilities, Transport, PageAction, TransferPreferenceOverrides, Source, Payload, ExportProjection, Section, SurfaceHandle, TransferScope } from '@ai-matrx/kit/content-transfer';
3
3
  import { AlchemyIcon } from './content-transfer/icon.cjs';
4
4
  export { ALCHEMY_COPY_TRANSFORM_SVG, ALCHEMY_GLYPH_SVG } from './content-transfer/icon.cjs';
5
+ import { C as ContentTransferReference, a as ContentTransferReferencePort, b as ContentTransferEmailPort } from './extensions-DCHtNwG3.cjs';
6
+ export { c as createTransferEmailActions, t as tableDataFormat, d as tableSchemaFormat } from './extensions-DCHtNwG3.cjs';
5
7
 
6
8
  type AlchemyOptionValues = Record<string, boolean | number>;
7
9
  type AlchemySourceOption = {
@@ -106,6 +108,8 @@ interface MatrxCopyMenuProps {
106
108
  label: string;
107
109
  /** Stable record identity when this mounted control can switch between records. */
108
110
  sourceId?: string;
111
+ references?: readonly ContentTransferReference[];
112
+ referenceActions?: readonly ContentTransferReferenceAction[];
109
113
  /** Prepare the tabular view while keeping raw JSON and human copy formats. */
110
114
  primarySource?: "table";
111
115
  human?: Resolvable<string>;
@@ -139,7 +143,7 @@ interface MatrxCopyMenuProps {
139
143
  unified?: boolean;
140
144
  grouped?: boolean;
141
145
  icon?: AlchemyIcon;
142
- triggerVariant?: "transparent" | "glass";
146
+ triggerVariant?: "transparent" | "glass" | "outline";
143
147
  }
144
148
  /** Opinionated bridge for Matrx's existing content builders, with one transfer UI. */
145
149
  declare function MatrxCopyMenu(props: MatrxCopyMenuProps): React.JSX.Element;
@@ -150,6 +154,11 @@ declare function defaultGroomerSelections(sections: AlchemyGroomerSection[]): Re
150
154
  declare function buildGroomerPresetPayload(config: AlchemyGroomerConfig, preset: AlchemyGroomerPreset): AgentPayloadInput;
151
155
  declare function groomerPresetVariants(getConfig: () => AlchemyGroomerConfig): AlchemyCopyVariant[];
152
156
 
157
+ type ContentTransferReferenceAction = {
158
+ id: string;
159
+ label: string;
160
+ run(): void | Promise<void>;
161
+ };
153
162
  declare function AlchemyGlyph({ icon, ...props }: React.SVGAttributes<SVGSVGElement> & {
154
163
  icon?: AlchemyIcon;
155
164
  }): React.JSX.Element;
@@ -157,6 +166,8 @@ type ContentTransferCapabilities = TransferCapabilities & {
157
166
  /** Opaque host session boundary. It is used only to reset local menu state. */
158
167
  identityKey?: string;
159
168
  transport?: Transport;
169
+ reference?: ContentTransferReferencePort;
170
+ email?: ContentTransferEmailPort;
160
171
  actions?: PageAction[];
161
172
  preferences?: TransferPreferenceOverrides;
162
173
  onOutcome?: (outcome: TransferOutcome) => void;
@@ -173,7 +184,7 @@ declare function ContentTransferSurfaceProvider({ handle, children }: {
173
184
  declare const useContentTransferSurface: () => SurfaceHandle | null;
174
185
  type SerializableFormat = "plain" | "markdown" | "html" | "json" | "compact-json" | "csv" | "tsv";
175
186
  interface TransferMenuPresentation {
176
- group?: "save" | "chat";
187
+ group?: "save" | "chat" | "email";
177
188
  prepared?: boolean;
178
189
  hint?: string;
179
190
  icon?: React.ComponentType<{
@@ -202,7 +213,10 @@ interface ContentTransferMenuProps {
202
213
  table?: {
203
214
  availableScopes: TransferScope[];
204
215
  initialScope: TransferScope;
216
+ scopeLabels?: Partial<Record<TransferScope, string>>;
205
217
  };
218
+ references?: readonly ContentTransferReference[];
219
+ referenceActions?: readonly ContentTransferReferenceAction[];
206
220
  /** A quick format may explicitly capture a different representation. */
207
221
  formatSources?: Partial<Record<SerializableFormat, Source | Payload>>;
208
222
  /** Set false for action-only hosts; source formats and adapters are then omitted. */
@@ -215,7 +229,8 @@ interface ContentTransferMenuProps {
215
229
  /** Portal is the default Alchemy mark; copy-transform remains opt-in. */
216
230
  icon?: AlchemyIcon;
217
231
  /** Uses the canonical TapTargetButton presentation. */
218
- triggerVariant?: "transparent" | "glass";
232
+ triggerVariant?: "transparent" | "glass" | "outline";
233
+ triggerSize?: "default" | "compact";
219
234
  className?: string;
220
235
  stopPropagation?: boolean;
221
236
  hide?: readonly ("copy" | "prepare" | "download")[];
@@ -230,4 +245,4 @@ interface ContentTransferController {
230
245
  }
231
246
  declare function ContentTransferMenu(props: ContentTransferMenuProps): React.JSX.Element;
232
247
 
233
- export { type AlchemyCopyVariant, type AlchemyCustomSource, type AlchemyDetail, type AlchemyExportItem, AlchemyGlyph, type AlchemyGroomerConfig, type AlchemyGroomerPreset, type AlchemyGroomerSection, AlchemyIcon, type AlchemyOptionValues, type AlchemySourceOption, type ContentTransferCapabilities, ContentTransferCapabilitiesProvider, type ContentTransferController, ContentTransferMenu, type ContentTransferMenuProps, ContentTransferSurfaceProvider, GROOMER_LEVELS, MatrxCopyMenu, type MatrxCopyMenuProps, type SerializableFormat, type TransferMenuPresentation, type TransferMenuVariant, applyGroomerPreset, buildGroomerPresetPayload, defaultGroomerSelections, groomerPresetVariants, useContentTransferCapabilities, useContentTransferSurface };
248
+ export { type AlchemyCopyVariant, type AlchemyCustomSource, type AlchemyDetail, type AlchemyExportItem, AlchemyGlyph, type AlchemyGroomerConfig, type AlchemyGroomerPreset, type AlchemyGroomerSection, AlchemyIcon, type AlchemyOptionValues, type AlchemySourceOption, type ContentTransferCapabilities, ContentTransferCapabilitiesProvider, type ContentTransferController, ContentTransferEmailPort, ContentTransferMenu, type ContentTransferMenuProps, ContentTransferReference, type ContentTransferReferenceAction, ContentTransferReferencePort, ContentTransferSurfaceProvider, GROOMER_LEVELS, MatrxCopyMenu, type MatrxCopyMenuProps, type SerializableFormat, type TransferMenuPresentation, type TransferMenuVariant, applyGroomerPreset, buildGroomerPresetPayload, defaultGroomerSelections, groomerPresetVariants, useContentTransferCapabilities, useContentTransferSurface };
@@ -2,6 +2,8 @@ import * as React from 'react';
2
2
  import { AgentPayloadInput, TransferOutcome, TransferCapabilities, Transport, PageAction, TransferPreferenceOverrides, Source, Payload, ExportProjection, Section, SurfaceHandle, TransferScope } from '@ai-matrx/kit/content-transfer';
3
3
  import { AlchemyIcon } from './content-transfer/icon.js';
4
4
  export { ALCHEMY_COPY_TRANSFORM_SVG, ALCHEMY_GLYPH_SVG } from './content-transfer/icon.js';
5
+ import { C as ContentTransferReference, a as ContentTransferReferencePort, b as ContentTransferEmailPort } from './extensions-DCHtNwG3.js';
6
+ export { c as createTransferEmailActions, t as tableDataFormat, d as tableSchemaFormat } from './extensions-DCHtNwG3.js';
5
7
 
6
8
  type AlchemyOptionValues = Record<string, boolean | number>;
7
9
  type AlchemySourceOption = {
@@ -106,6 +108,8 @@ interface MatrxCopyMenuProps {
106
108
  label: string;
107
109
  /** Stable record identity when this mounted control can switch between records. */
108
110
  sourceId?: string;
111
+ references?: readonly ContentTransferReference[];
112
+ referenceActions?: readonly ContentTransferReferenceAction[];
109
113
  /** Prepare the tabular view while keeping raw JSON and human copy formats. */
110
114
  primarySource?: "table";
111
115
  human?: Resolvable<string>;
@@ -139,7 +143,7 @@ interface MatrxCopyMenuProps {
139
143
  unified?: boolean;
140
144
  grouped?: boolean;
141
145
  icon?: AlchemyIcon;
142
- triggerVariant?: "transparent" | "glass";
146
+ triggerVariant?: "transparent" | "glass" | "outline";
143
147
  }
144
148
  /** Opinionated bridge for Matrx's existing content builders, with one transfer UI. */
145
149
  declare function MatrxCopyMenu(props: MatrxCopyMenuProps): React.JSX.Element;
@@ -150,6 +154,11 @@ declare function defaultGroomerSelections(sections: AlchemyGroomerSection[]): Re
150
154
  declare function buildGroomerPresetPayload(config: AlchemyGroomerConfig, preset: AlchemyGroomerPreset): AgentPayloadInput;
151
155
  declare function groomerPresetVariants(getConfig: () => AlchemyGroomerConfig): AlchemyCopyVariant[];
152
156
 
157
+ type ContentTransferReferenceAction = {
158
+ id: string;
159
+ label: string;
160
+ run(): void | Promise<void>;
161
+ };
153
162
  declare function AlchemyGlyph({ icon, ...props }: React.SVGAttributes<SVGSVGElement> & {
154
163
  icon?: AlchemyIcon;
155
164
  }): React.JSX.Element;
@@ -157,6 +166,8 @@ type ContentTransferCapabilities = TransferCapabilities & {
157
166
  /** Opaque host session boundary. It is used only to reset local menu state. */
158
167
  identityKey?: string;
159
168
  transport?: Transport;
169
+ reference?: ContentTransferReferencePort;
170
+ email?: ContentTransferEmailPort;
160
171
  actions?: PageAction[];
161
172
  preferences?: TransferPreferenceOverrides;
162
173
  onOutcome?: (outcome: TransferOutcome) => void;
@@ -173,7 +184,7 @@ declare function ContentTransferSurfaceProvider({ handle, children }: {
173
184
  declare const useContentTransferSurface: () => SurfaceHandle | null;
174
185
  type SerializableFormat = "plain" | "markdown" | "html" | "json" | "compact-json" | "csv" | "tsv";
175
186
  interface TransferMenuPresentation {
176
- group?: "save" | "chat";
187
+ group?: "save" | "chat" | "email";
177
188
  prepared?: boolean;
178
189
  hint?: string;
179
190
  icon?: React.ComponentType<{
@@ -202,7 +213,10 @@ interface ContentTransferMenuProps {
202
213
  table?: {
203
214
  availableScopes: TransferScope[];
204
215
  initialScope: TransferScope;
216
+ scopeLabels?: Partial<Record<TransferScope, string>>;
205
217
  };
218
+ references?: readonly ContentTransferReference[];
219
+ referenceActions?: readonly ContentTransferReferenceAction[];
206
220
  /** A quick format may explicitly capture a different representation. */
207
221
  formatSources?: Partial<Record<SerializableFormat, Source | Payload>>;
208
222
  /** Set false for action-only hosts; source formats and adapters are then omitted. */
@@ -215,7 +229,8 @@ interface ContentTransferMenuProps {
215
229
  /** Portal is the default Alchemy mark; copy-transform remains opt-in. */
216
230
  icon?: AlchemyIcon;
217
231
  /** Uses the canonical TapTargetButton presentation. */
218
- triggerVariant?: "transparent" | "glass";
232
+ triggerVariant?: "transparent" | "glass" | "outline";
233
+ triggerSize?: "default" | "compact";
219
234
  className?: string;
220
235
  stopPropagation?: boolean;
221
236
  hide?: readonly ("copy" | "prepare" | "download")[];
@@ -230,4 +245,4 @@ interface ContentTransferController {
230
245
  }
231
246
  declare function ContentTransferMenu(props: ContentTransferMenuProps): React.JSX.Element;
232
247
 
233
- export { type AlchemyCopyVariant, type AlchemyCustomSource, type AlchemyDetail, type AlchemyExportItem, AlchemyGlyph, type AlchemyGroomerConfig, type AlchemyGroomerPreset, type AlchemyGroomerSection, AlchemyIcon, type AlchemyOptionValues, type AlchemySourceOption, type ContentTransferCapabilities, ContentTransferCapabilitiesProvider, type ContentTransferController, ContentTransferMenu, type ContentTransferMenuProps, ContentTransferSurfaceProvider, GROOMER_LEVELS, MatrxCopyMenu, type MatrxCopyMenuProps, type SerializableFormat, type TransferMenuPresentation, type TransferMenuVariant, applyGroomerPreset, buildGroomerPresetPayload, defaultGroomerSelections, groomerPresetVariants, useContentTransferCapabilities, useContentTransferSurface };
248
+ export { type AlchemyCopyVariant, type AlchemyCustomSource, type AlchemyDetail, type AlchemyExportItem, AlchemyGlyph, type AlchemyGroomerConfig, type AlchemyGroomerPreset, type AlchemyGroomerSection, AlchemyIcon, type AlchemyOptionValues, type AlchemySourceOption, type ContentTransferCapabilities, ContentTransferCapabilitiesProvider, type ContentTransferController, ContentTransferEmailPort, ContentTransferMenu, type ContentTransferMenuProps, ContentTransferReference, type ContentTransferReferenceAction, ContentTransferReferencePort, ContentTransferSurfaceProvider, GROOMER_LEVELS, MatrxCopyMenu, type MatrxCopyMenuProps, type SerializableFormat, type TransferMenuPresentation, type TransferMenuVariant, applyGroomerPreset, buildGroomerPresetPayload, defaultGroomerSelections, groomerPresetVariants, useContentTransferCapabilities, useContentTransferSurface };