@ai-matrx/design-system 0.18.21 → 0.19.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 (86) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/content-transfer/alchemy.svg +1 -1
  3. package/dist/content-transfer/copy-transform.svg +1 -0
  4. package/dist/content-transfer/icon.cjs +8 -2
  5. package/dist/content-transfer/icon.cjs.map +1 -1
  6. package/dist/content-transfer/icon.d.cts +5 -3
  7. package/dist/content-transfer/icon.d.ts +5 -3
  8. package/dist/content-transfer/icon.js +8 -2
  9. package/dist/content-transfer/icon.js.map +1 -1
  10. package/dist/content-transfer/portal.svg +1 -0
  11. package/dist/content-transfer.cjs +923 -304
  12. package/dist/content-transfer.cjs.map +1 -1
  13. package/dist/content-transfer.css +17 -74
  14. package/dist/content-transfer.d.cts +14 -3
  15. package/dist/content-transfer.d.ts +14 -3
  16. package/dist/content-transfer.js +929 -305
  17. package/dist/content-transfer.js.map +1 -1
  18. package/dist/data-table/copy-helpers.d.cts +1 -1
  19. package/dist/data-table/copy-helpers.d.ts +1 -1
  20. package/dist/data-table/data-row-inspector.cjs +990 -397
  21. package/dist/data-table/data-row-inspector.cjs.map +1 -1
  22. package/dist/data-table/data-row-inspector.js +988 -390
  23. package/dist/data-table/data-row-inspector.js.map +1 -1
  24. package/dist/data-table/data-row-window.cjs +989 -396
  25. package/dist/data-table/data-row-window.cjs.map +1 -1
  26. package/dist/data-table/data-row-window.js +987 -389
  27. package/dist/data-table/data-row-window.js.map +1 -1
  28. package/dist/data-table/filter-engine.d.cts +1 -1
  29. package/dist/data-table/filter-engine.d.ts +1 -1
  30. package/dist/data-table/host.cjs.map +1 -1
  31. package/dist/data-table/host.d.cts +3 -2
  32. package/dist/data-table/host.d.ts +3 -2
  33. package/dist/data-table/host.js.map +1 -1
  34. package/dist/data-table/index.cjs +2733 -1441
  35. package/dist/data-table/index.cjs.map +1 -1
  36. package/dist/data-table/index.d.cts +2 -2
  37. package/dist/data-table/index.d.ts +2 -2
  38. package/dist/data-table/index.js +2742 -1440
  39. package/dist/data-table/index.js.map +1 -1
  40. package/dist/data-table/infer-filter.d.cts +1 -1
  41. package/dist/data-table/infer-filter.d.ts +1 -1
  42. package/dist/data-table/layered-filters.d.cts +1 -1
  43. package/dist/data-table/layered-filters.d.ts +1 -1
  44. package/dist/data-table/pagination.cjs +135 -97
  45. package/dist/data-table/pagination.cjs.map +1 -1
  46. package/dist/data-table/pagination.d.cts +8 -1
  47. package/dist/data-table/pagination.d.ts +8 -1
  48. package/dist/data-table/pagination.js +130 -92
  49. package/dist/data-table/pagination.js.map +1 -1
  50. package/dist/data-table/query-control.d.cts +1 -1
  51. package/dist/data-table/query-control.d.ts +1 -1
  52. package/dist/data-table/scroll-pagination.cjs +82 -54
  53. package/dist/data-table/scroll-pagination.cjs.map +1 -1
  54. package/dist/data-table/scroll-pagination.js +82 -54
  55. package/dist/data-table/scroll-pagination.js.map +1 -1
  56. package/dist/data-table/types.cjs.map +1 -1
  57. package/dist/data-table/types.d.cts +1 -1
  58. package/dist/data-table/types.d.ts +1 -1
  59. package/dist/data-table/url-state.cjs +7 -1
  60. package/dist/data-table/url-state.cjs.map +1 -1
  61. package/dist/data-table/url-state.d.cts +1 -1
  62. package/dist/data-table/url-state.d.ts +1 -1
  63. package/dist/data-table/url-state.js +7 -1
  64. package/dist/data-table/url-state.js.map +1 -1
  65. package/dist/data-table/uuid-cell.cjs +1 -1
  66. package/dist/data-table/uuid-cell.cjs.map +1 -1
  67. package/dist/data-table/uuid-cell.js +1 -1
  68. package/dist/data-table/uuid-cell.js.map +1 -1
  69. package/dist/data-table/xlsx.d.cts +1 -1
  70. package/dist/data-table/xlsx.d.ts +1 -1
  71. package/dist/index.cjs +527 -0
  72. package/dist/index.cjs.map +1 -1
  73. package/dist/index.d.cts +1 -0
  74. package/dist/index.d.ts +1 -0
  75. package/dist/index.js +531 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/tap-target.cjs +636 -0
  78. package/dist/tap-target.cjs.map +1 -0
  79. package/dist/tap-target.css +151 -0
  80. package/dist/tap-target.d.cts +131 -0
  81. package/dist/tap-target.d.ts +131 -0
  82. package/dist/tap-target.js +608 -0
  83. package/dist/tap-target.js.map +1 -0
  84. package/dist/{types-BuDKVpeF.d.ts → types-D1m14boM.d.ts} +49 -3
  85. package/dist/{types-Dqcb7jXO.d.cts → types-Di6QT0P1.d.cts} +49 -3
  86. package/package.json +14 -1
@@ -1,37 +1,10 @@
1
1
  /* Structural Alchemy rules. Hosts own token values; Tailwind is never required. */
2
+ @import "./tap-target.css";
2
3
  .matrx-alchemy {
3
4
  display: inline-flex;
4
5
  align-items: center;
5
6
  gap: 0.375rem;
6
7
  }
7
- .matrx-alchemy-trigger {
8
- display: inline-flex;
9
- align-items: center;
10
- justify-content: center;
11
- width: 2rem;
12
- height: 2rem;
13
- padding: 0.375rem;
14
- border: 0;
15
- border-radius: 0.375rem;
16
- background: transparent;
17
- color: hsl(var(--foreground, 240 10% 4%));
18
- cursor: pointer;
19
- }
20
- .matrx-alchemy-trigger svg {
21
- width: 1.125rem;
22
- height: 1.125rem;
23
- }
24
- .matrx-alchemy-trigger:hover {
25
- background: hsl(var(--accent, 240 5% 96%));
26
- }
27
- .matrx-alchemy-trigger:focus-visible {
28
- outline: 2px solid hsl(var(--ring, 240 5% 65%));
29
- outline-offset: 2px;
30
- }
31
- .matrx-alchemy-trigger:disabled {
32
- opacity: 0.5;
33
- cursor: not-allowed;
34
- }
35
8
  .matrx-alchemy-menu {
36
9
  min-width: 18rem;
37
10
  max-width: min(24rem, calc(100vw - 2rem));
@@ -134,6 +107,7 @@
134
107
  .matrx-alchemy-toolbar select,
135
108
  .matrx-alchemy-preview-label select,
136
109
  .matrx-alchemy-workspace aside textarea,
110
+ .matrx-alchemy-workspace aside select,
137
111
  .matrx-alchemy-options input {
138
112
  min-height: 2.25rem;
139
113
  border: 1px solid hsl(var(--border, 240 6% 90%));
@@ -256,25 +230,7 @@
256
230
  }
257
231
  }
258
232
 
259
- .matrx-alchemy-xs .matrx-alchemy-trigger {
260
- width: 1.75rem;
261
- height: 1.75rem;
262
- padding: 0.375rem;
263
- }
264
- .matrx-alchemy-xs .matrx-alchemy-trigger svg {
265
- width: 1rem;
266
- height: 1rem;
267
- }
268
- .matrx-alchemy-sm .matrx-alchemy-trigger {
269
- width: 2.25rem;
270
- height: 2.25rem;
271
- }
272
233
  @media (pointer: coarse) {
273
- .matrx-alchemy .matrx-alchemy-trigger {
274
- width: 2.75rem;
275
- height: 2.75rem;
276
- padding: 0.625rem;
277
- }
278
234
  .matrx-alchemy-workspace input,
279
235
  .matrx-alchemy-workspace select,
280
236
  .matrx-alchemy-workspace textarea {
@@ -434,34 +390,6 @@
434
390
  .matrx-alchemy-menu *, .matrx-alchemy-workspace * { box-sizing: border-box; }
435
391
  .matrx-alchemy-workspace-grid:not(:has(aside)) { grid-template-columns: minmax(0, 1fr); }
436
392
 
437
- /* Table toolbar matches the canonical tap-target 44 / 28 / 14 geometry.
438
- tap-target depends on design-system, so this primitive cannot import it. */
439
- .matrx-alchemy-toolbar-target .matrx-alchemy-trigger {
440
- position: relative;
441
- flex-shrink: 0;
442
- width: 2.75rem;
443
- height: 2.75rem;
444
- background: transparent;
445
- touch-action: manipulation;
446
- }
447
- .matrx-alchemy-toolbar-target .matrx-alchemy-trigger::before {
448
- content: "";
449
- position: absolute;
450
- width: 1.75rem;
451
- height: 1.75rem;
452
- border-radius: 9999px;
453
- transition: background-color 150ms ease, transform 100ms ease;
454
- }
455
- .matrx-alchemy-toolbar-target .matrx-alchemy-trigger:hover::before {
456
- background: hsl(var(--accent, 240 5% 96%));
457
- }
458
- .matrx-alchemy-toolbar-target .matrx-alchemy-trigger:active::before { transform: scale(0.92); }
459
- .matrx-alchemy-toolbar-target .matrx-alchemy-trigger svg {
460
- position: relative;
461
- width: 0.875rem;
462
- height: 0.875rem;
463
- }
464
-
465
393
  .matrx-alchemy-data-controls { max-height: none; }
466
394
  .matrx-alchemy-data-controls-body { display: grid; gap: 0.75rem; margin-top: 0.75rem; }
467
395
  .matrx-alchemy-preview-label { display: flex; align-items: center; gap: 0.5rem; }
@@ -483,3 +411,18 @@
483
411
 
484
412
  /* Dialogs show their own result; an earlier page notice must not cover their actions. */
485
413
  body:has(.matrx-alchemy-workspace[data-state="open"]) > .matrx-alchemy-feedback { display: none; }
414
+
415
+ .matrx-alchemy-destination-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 0.25rem; margin-top: 0.5rem; padding: 0.25rem; }
416
+ .matrx-alchemy-destination-grid button:disabled { opacity: 0.5; cursor: not-allowed; }
417
+
418
+ .matrx-alchemy-receipt-link { flex-shrink: 0; color: hsl(var(--primary)); text-decoration: underline; text-underline-offset: 2px; }
419
+
420
+ .matrx-alchemy-workspace aside { min-width: 0; }
421
+ .matrx-alchemy-workspace aside select { width: 100%; min-width: 0; }
422
+ .matrx-alchemy-palette { overflow-y: auto; overscroll-behavior: contain; }
423
+ .matrx-alchemy-palette-destinations { margin-top: 0.375rem; padding-top: 0.375rem; border-top: 1px solid hsl(var(--border)); }
424
+ .matrx-alchemy-palette-destinations > summary { display: flex; align-items: center; justify-content: space-between; min-height: 2.25rem; padding: 0.375rem 0.5rem; border-radius: 0.3125rem; font-size: 0.8125rem; font-weight: 500; cursor: pointer; list-style: none; }
425
+ .matrx-alchemy-palette-destinations > summary::-webkit-details-marker { display: none; }
426
+ .matrx-alchemy-palette-destinations > summary > span { font-size: 0.6875rem; color: hsl(var(--muted-foreground)); }
427
+ .matrx-alchemy-palette-destinations > summary:hover { background: hsl(var(--accent)); }
428
+ .matrx-alchemy-palette-destinations > summary:focus-visible { outline: none; box-shadow: inset 0 0 0 2px hsl(var(--ring)); }
@@ -1,6 +1,7 @@
1
1
  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
- export { ALCHEMY_GLYPH_SVG } from './content-transfer/icon.cjs';
3
+ import { AlchemyIcon } from './content-transfer/icon.cjs';
4
+ export { ALCHEMY_COPY_TRANSFORM_SVG, ALCHEMY_GLYPH_SVG } from './content-transfer/icon.cjs';
4
5
 
5
6
  type AlchemyOptionValues = Record<string, boolean | number>;
6
7
  type AlchemySourceOption = {
@@ -137,6 +138,8 @@ interface MatrxCopyMenuProps {
137
138
  appearance?: "bare" | "segmented";
138
139
  unified?: boolean;
139
140
  grouped?: boolean;
141
+ icon?: AlchemyIcon;
142
+ triggerVariant?: "transparent" | "glass";
140
143
  }
141
144
  /** Opinionated bridge for Matrx's existing content builders, with one transfer UI. */
142
145
  declare function MatrxCopyMenu(props: MatrxCopyMenuProps): React.JSX.Element;
@@ -147,7 +150,9 @@ declare function defaultGroomerSelections(sections: AlchemyGroomerSection[]): Re
147
150
  declare function buildGroomerPresetPayload(config: AlchemyGroomerConfig, preset: AlchemyGroomerPreset): AgentPayloadInput;
148
151
  declare function groomerPresetVariants(getConfig: () => AlchemyGroomerConfig): AlchemyCopyVariant[];
149
152
 
150
- declare function AlchemyGlyph(props: React.SVGAttributes<SVGSVGElement>): React.JSX.Element;
153
+ declare function AlchemyGlyph({ icon, ...props }: React.SVGAttributes<SVGSVGElement> & {
154
+ icon?: AlchemyIcon;
155
+ }): React.JSX.Element;
151
156
  type ContentTransferCapabilities = TransferCapabilities & {
152
157
  /** Opaque host session boundary. It is used only to reset local menu state. */
153
158
  identityKey?: string;
@@ -168,6 +173,8 @@ declare function ContentTransferSurfaceProvider({ handle, children }: {
168
173
  declare const useContentTransferSurface: () => SurfaceHandle | null;
169
174
  type SerializableFormat = "plain" | "markdown" | "html" | "json" | "compact-json" | "csv" | "tsv";
170
175
  interface TransferMenuPresentation {
176
+ group?: "save" | "chat";
177
+ prepared?: boolean;
171
178
  hint?: string;
172
179
  icon?: React.ComponentType<{
173
180
  className?: string;
@@ -205,6 +212,10 @@ interface ContentTransferMenuProps {
205
212
  actions?: (PageAction & TransferMenuPresentation)[];
206
213
  capabilities?: ContentTransferCapabilities;
207
214
  disabled?: boolean;
215
+ /** Portal is the default Alchemy mark; copy-transform remains opt-in. */
216
+ icon?: AlchemyIcon;
217
+ /** Uses the canonical TapTargetButton presentation. */
218
+ triggerVariant?: "transparent" | "glass";
208
219
  className?: string;
209
220
  stopPropagation?: boolean;
210
221
  hide?: readonly ("copy" | "prepare" | "download")[];
@@ -219,4 +230,4 @@ interface ContentTransferController {
219
230
  }
220
231
  declare function ContentTransferMenu(props: ContentTransferMenuProps): React.JSX.Element;
221
232
 
222
- export { type AlchemyCopyVariant, type AlchemyCustomSource, type AlchemyDetail, type AlchemyExportItem, AlchemyGlyph, type AlchemyGroomerConfig, type AlchemyGroomerPreset, type AlchemyGroomerSection, 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 };
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 };
@@ -1,6 +1,7 @@
1
1
  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
- export { ALCHEMY_GLYPH_SVG } from './content-transfer/icon.js';
3
+ import { AlchemyIcon } from './content-transfer/icon.js';
4
+ export { ALCHEMY_COPY_TRANSFORM_SVG, ALCHEMY_GLYPH_SVG } from './content-transfer/icon.js';
4
5
 
5
6
  type AlchemyOptionValues = Record<string, boolean | number>;
6
7
  type AlchemySourceOption = {
@@ -137,6 +138,8 @@ interface MatrxCopyMenuProps {
137
138
  appearance?: "bare" | "segmented";
138
139
  unified?: boolean;
139
140
  grouped?: boolean;
141
+ icon?: AlchemyIcon;
142
+ triggerVariant?: "transparent" | "glass";
140
143
  }
141
144
  /** Opinionated bridge for Matrx's existing content builders, with one transfer UI. */
142
145
  declare function MatrxCopyMenu(props: MatrxCopyMenuProps): React.JSX.Element;
@@ -147,7 +150,9 @@ declare function defaultGroomerSelections(sections: AlchemyGroomerSection[]): Re
147
150
  declare function buildGroomerPresetPayload(config: AlchemyGroomerConfig, preset: AlchemyGroomerPreset): AgentPayloadInput;
148
151
  declare function groomerPresetVariants(getConfig: () => AlchemyGroomerConfig): AlchemyCopyVariant[];
149
152
 
150
- declare function AlchemyGlyph(props: React.SVGAttributes<SVGSVGElement>): React.JSX.Element;
153
+ declare function AlchemyGlyph({ icon, ...props }: React.SVGAttributes<SVGSVGElement> & {
154
+ icon?: AlchemyIcon;
155
+ }): React.JSX.Element;
151
156
  type ContentTransferCapabilities = TransferCapabilities & {
152
157
  /** Opaque host session boundary. It is used only to reset local menu state. */
153
158
  identityKey?: string;
@@ -168,6 +173,8 @@ declare function ContentTransferSurfaceProvider({ handle, children }: {
168
173
  declare const useContentTransferSurface: () => SurfaceHandle | null;
169
174
  type SerializableFormat = "plain" | "markdown" | "html" | "json" | "compact-json" | "csv" | "tsv";
170
175
  interface TransferMenuPresentation {
176
+ group?: "save" | "chat";
177
+ prepared?: boolean;
171
178
  hint?: string;
172
179
  icon?: React.ComponentType<{
173
180
  className?: string;
@@ -205,6 +212,10 @@ interface ContentTransferMenuProps {
205
212
  actions?: (PageAction & TransferMenuPresentation)[];
206
213
  capabilities?: ContentTransferCapabilities;
207
214
  disabled?: boolean;
215
+ /** Portal is the default Alchemy mark; copy-transform remains opt-in. */
216
+ icon?: AlchemyIcon;
217
+ /** Uses the canonical TapTargetButton presentation. */
218
+ triggerVariant?: "transparent" | "glass";
208
219
  className?: string;
209
220
  stopPropagation?: boolean;
210
221
  hide?: readonly ("copy" | "prepare" | "download")[];
@@ -219,4 +230,4 @@ interface ContentTransferController {
219
230
  }
220
231
  declare function ContentTransferMenu(props: ContentTransferMenuProps): React.JSX.Element;
221
232
 
222
- export { type AlchemyCopyVariant, type AlchemyCustomSource, type AlchemyDetail, type AlchemyExportItem, AlchemyGlyph, type AlchemyGroomerConfig, type AlchemyGroomerPreset, type AlchemyGroomerSection, 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 };
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 };