@ai-matrx/design-system 0.18.9 → 0.18.12

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 (68) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/content-transfer/alchemy.svg +1 -1
  3. package/dist/content-transfer/icon.cjs +3 -1
  4. package/dist/content-transfer/icon.cjs.map +1 -1
  5. package/dist/content-transfer/icon.d.cts +3 -2
  6. package/dist/content-transfer/icon.d.ts +3 -2
  7. package/dist/content-transfer/icon.js +3 -1
  8. package/dist/content-transfer/icon.js.map +1 -1
  9. package/dist/content-transfer.cjs +442 -447
  10. package/dist/content-transfer.cjs.map +1 -1
  11. package/dist/content-transfer.css +130 -54
  12. package/dist/content-transfer.d.cts +5 -1
  13. package/dist/content-transfer.d.ts +5 -1
  14. package/dist/content-transfer.js +467 -472
  15. package/dist/content-transfer.js.map +1 -1
  16. package/dist/data-table/copy-helpers.d.cts +1 -1
  17. package/dist/data-table/copy-helpers.d.ts +1 -1
  18. package/dist/data-table/copy-types.cjs.map +1 -1
  19. package/dist/data-table/copy-types.d.cts +1 -1
  20. package/dist/data-table/copy-types.d.ts +1 -1
  21. package/dist/data-table/data-row-inspector.cjs +444 -446
  22. package/dist/data-table/data-row-inspector.cjs.map +1 -1
  23. package/dist/data-table/data-row-inspector.js +489 -491
  24. package/dist/data-table/data-row-inspector.js.map +1 -1
  25. package/dist/data-table/data-row-window.cjs +444 -446
  26. package/dist/data-table/data-row-window.cjs.map +1 -1
  27. package/dist/data-table/data-row-window.js +489 -491
  28. package/dist/data-table/data-row-window.js.map +1 -1
  29. package/dist/data-table/filter-engine.d.cts +1 -1
  30. package/dist/data-table/filter-engine.d.ts +1 -1
  31. package/dist/data-table/host.cjs.map +1 -1
  32. package/dist/data-table/host.d.cts +17 -1
  33. package/dist/data-table/host.d.ts +17 -1
  34. package/dist/data-table/host.js.map +1 -1
  35. package/dist/data-table/index.cjs +1524 -1011
  36. package/dist/data-table/index.cjs.map +1 -1
  37. package/dist/data-table/index.d.cts +25 -4
  38. package/dist/data-table/index.d.ts +25 -4
  39. package/dist/data-table/index.js +1560 -1047
  40. package/dist/data-table/index.js.map +1 -1
  41. package/dist/data-table/infer-filter.d.cts +1 -1
  42. package/dist/data-table/infer-filter.d.ts +1 -1
  43. package/dist/data-table/layered-filters.d.cts +1 -1
  44. package/dist/data-table/layered-filters.d.ts +1 -1
  45. package/dist/data-table/pagination.cjs +5 -5
  46. package/dist/data-table/pagination.cjs.map +1 -1
  47. package/dist/data-table/pagination.js +5 -5
  48. package/dist/data-table/pagination.js.map +1 -1
  49. package/dist/data-table/query-control.d.cts +1 -1
  50. package/dist/data-table/query-control.d.ts +1 -1
  51. package/dist/data-table/types.cjs.map +1 -1
  52. package/dist/data-table/types.d.cts +1 -1
  53. package/dist/data-table/types.d.ts +1 -1
  54. package/dist/data-table/url-state.d.cts +1 -1
  55. package/dist/data-table/url-state.d.ts +1 -1
  56. package/dist/data-table/uuid-cell.cjs.map +1 -1
  57. package/dist/data-table/uuid-cell.js.map +1 -1
  58. package/dist/data-table/xlsx.d.cts +1 -1
  59. package/dist/data-table/xlsx.d.ts +1 -1
  60. package/dist/index.cjs +5 -5
  61. package/dist/index.cjs.map +1 -1
  62. package/dist/index.js +5 -5
  63. package/dist/index.js.map +1 -1
  64. package/dist/styles.css +4 -0
  65. package/dist/tokens.css +2 -0
  66. package/dist/{types-cH8oLqUx.d.ts → types-BuDKVpeF.d.ts} +47 -3
  67. package/dist/{types-0CNCWvdK.d.cts → types-Dqcb7jXO.d.cts} +47 -3
  68. package/package.json +2 -2
@@ -36,14 +36,67 @@
36
36
  min-width: 18rem;
37
37
  max-width: min(24rem, calc(100vw - 2rem));
38
38
  }
39
+ .matrx-alchemy-palette {
40
+ width: min(18rem, calc(100vw - 2rem));
41
+ min-width: 0;
42
+ padding: 0.4375rem;
43
+ max-height: var(--radix-popover-content-available-height, 80dvh);
44
+ }
45
+ .matrx-alchemy-output {
46
+ display: grid;
47
+ gap: 0.375rem;
48
+ padding: 0.375rem;
49
+ border: 1px solid hsl(var(--border, 240 6% 90%));
50
+ border-radius: 0.5rem;
51
+ }
52
+ .matrx-alchemy-output > h3 {
53
+ margin: 0.125rem 0.125rem 0;
54
+ color: hsl(var(--muted-foreground, 240 4% 46%));
55
+ font-size: 0.6875rem;
56
+ font-weight: 600;
57
+ letter-spacing: 0.04em;
58
+ text-transform: uppercase;
59
+ }
60
+ .matrx-alchemy-mode {
61
+ display: flex;
62
+ gap: 0.1875rem;
63
+ margin-bottom: 0.375rem;
64
+ padding: 0.1875rem;
65
+ border-radius: 0.5rem;
66
+ background: hsl(var(--muted, 240 5% 96%));
67
+ }
68
+ .matrx-alchemy-mode button {
69
+ flex: 1;
70
+ min-height: 2rem;
71
+ border: 0;
72
+ border-radius: 0.3125rem;
73
+ background: transparent;
74
+ color: inherit;
75
+ font: inherit;
76
+ font-size: 0.8125rem;
77
+ cursor: pointer;
78
+ }
79
+ .matrx-alchemy-mode button[aria-pressed="true"] { background: hsl(var(--background, 0 0% 100%)); box-shadow: 0 1px 2px hsl(var(--foreground, 240 10% 4%) / 0.12); }
80
+ .matrx-alchemy-palette-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.1875rem; }
81
+ .matrx-alchemy-palette-tile { display: grid; place-items: center; gap: 0.375rem; min-width: 0; min-height: 4.25rem; padding: 0.5rem 0.25rem; border: 0; border-radius: 0.375rem; background: transparent; color: inherit; font: inherit; font-size: 0.75rem; line-height: 1.2; text-align: center; overflow-wrap: anywhere; cursor: pointer; }
82
+ .matrx-alchemy-palette-glyph { width: 1.125rem; height: 1.125rem; color: hsl(var(--muted-foreground, 240 4% 46%)); flex: 0 0 auto; }
83
+ .matrx-alchemy-palette-section { display: grid; gap: 0.125rem; margin-top: 0.375rem; padding-top: 0.375rem; border-top: 1px solid hsl(var(--border, 240 6% 90%)); }
84
+ .matrx-alchemy-palette-section h3 { margin: 0.125rem 0.375rem; color: hsl(var(--muted-foreground, 240 4% 46%)); font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
85
+ .matrx-alchemy-palette-row { display: flex; align-items: center; gap: 0.5rem; width: 100%; min-height: 2rem; padding: 0.375rem 0.5rem; border: 0; border-radius: 0.3125rem; background: transparent; color: inherit; font: inherit; font-size: 0.8125rem; line-height: 1.25; text-align: left; overflow-wrap: anywhere; cursor: pointer; }
86
+ .matrx-alchemy-palette-row > span { min-width: 0; }
87
+ .matrx-alchemy-palette-row-ai { color: hsl(var(--primary, 262 43% 51%)); }
88
+ .matrx-alchemy-palette :is(button:hover, button:focus-visible) { background: hsl(var(--accent, 240 5% 96%)); outline: none; }
89
+ .matrx-alchemy-palette :is(button:focus-visible) { box-shadow: 0 0 0 2px hsl(var(--ring, 240 5% 65%)); }
90
+ .matrx-alchemy-palette-status { margin: 0.25rem 0.375rem; color: hsl(var(--muted-foreground, 240 4% 46%)); font-size: 0.75rem; }
39
91
  .matrx-alchemy-notice,
40
92
  .matrx-alchemy-meta {
41
93
  font-size: 0.75rem;
42
94
  color: hsl(var(--muted-foreground, 240 4% 46%));
43
95
  }
44
96
  .matrx-alchemy-workspace {
45
- max-height: min(90dvh, 56rem);
46
- overflow: auto;
97
+ max-height: min(90dvh, 48rem);
98
+ overflow: hidden;
99
+ grid-template-rows: auto minmax(0, 1fr) auto;
47
100
  }
48
101
  .matrx-alchemy-workspace-grid {
49
102
  display: grid;
@@ -51,8 +104,15 @@
51
104
  gap: 1rem;
52
105
  min-height: 0;
53
106
  }
107
+ .matrx-alchemy-workspace-body {
108
+ min-height: 0;
109
+ overflow: auto;
110
+ overscroll-behavior: contain;
111
+ padding-right: 0.125rem;
112
+ }
54
113
  .matrx-alchemy-main {
55
114
  display: grid;
115
+ align-content: start;
56
116
  gap: 0.75rem;
57
117
  min-width: 0;
58
118
  }
@@ -91,6 +151,15 @@
91
151
  border-radius: 0.375rem;
92
152
  padding: 0.625rem;
93
153
  }
154
+ .matrx-alchemy-options > fieldset {
155
+ display: grid;
156
+ gap: 0.5rem;
157
+ min-width: 0;
158
+ margin: 0.625rem 0 0;
159
+ padding: 0;
160
+ border: 0;
161
+ }
162
+ .matrx-alchemy-options summary { cursor: pointer; }
94
163
  .matrx-alchemy-options legend {
95
164
  padding: 0 0.25rem;
96
165
  font-size: 0.8125rem;
@@ -237,50 +306,24 @@
237
306
  }
238
307
  .matrx-alchemy-menu {
239
308
  z-index: 10001;
240
- padding: 0.25rem;
241
- max-height: var(--radix-dropdown-menu-content-available-height, 80dvh);
309
+ padding: 0.4375rem;
310
+ max-height: var(--radix-popover-content-available-height, 80dvh);
242
311
  overflow: auto;
243
312
  overscroll-behavior: contain;
313
+ border-radius: 0.75rem;
244
314
  }
245
- .matrx-alchemy-menu [role="menuitem"] {
246
- display: flex;
247
- align-items: center;
248
- gap: 0.5rem;
249
- min-height: 2rem;
250
- padding: 0.375rem 0.5rem;
251
- border-radius: 0.25rem;
252
- font-size: 0.875rem;
253
- cursor: default;
254
- outline: none;
255
- user-select: none;
256
- }
257
- .matrx-alchemy-menu [role="menuitem"][data-highlighted] {
258
- background: hsl(var(--accent, 240 5% 96%));
259
- }
260
- .matrx-alchemy-menu [data-disabled] {
261
- opacity: 0.5;
262
- pointer-events: none;
263
- }
264
- .matrx-alchemy-menu [data-slot="dropdown-menu-label"] {
265
- padding: 0.375rem 0.5rem;
266
- font-size: 0.75rem;
267
- font-weight: 600;
268
- }
269
- .matrx-alchemy-menu [role="separator"] {
270
- height: 1px;
271
- margin: 0.25rem 0;
272
- background: hsl(var(--border, 240 6% 90%));
315
+ @media (pointer: coarse) {
316
+ .matrx-alchemy-palette :is(.matrx-alchemy-mode button, .matrx-alchemy-palette-row) { min-height: 2.75rem; }
317
+ .matrx-alchemy-palette-tile { min-height: 4.5rem; }
273
318
  }
274
319
  .matrx-alchemy-workspace {
275
320
  position: fixed;
276
321
  z-index: 10001;
277
- top: 50%;
278
- left: 50%;
279
- right: auto;
280
- bottom: auto;
281
- margin: 0;
282
- translate: -50% -50%;
283
- width: min(64rem, calc(100vw - 2rem));
322
+ inset: 0;
323
+ margin: auto;
324
+ translate: none;
325
+ height: fit-content;
326
+ width: min(56rem, calc(100vw - 2rem));
284
327
  max-width: calc(100vw - 2rem);
285
328
  padding: 1.5rem;
286
329
  display: grid;
@@ -314,27 +357,35 @@
314
357
  gap: 0.5rem;
315
358
  align-items: center;
316
359
  }
317
- .matrx-alchemy-workspace button {
360
+ .matrx-alchemy-workspace-secondary,
361
+ .matrx-alchemy-workspace-primary {
318
362
  display: inline-flex;
319
363
  align-items: center;
320
364
  justify-content: center;
321
- gap: 0.375rem;
322
365
  min-height: 2rem;
323
366
  padding: 0.375rem 0.75rem;
324
- border: 1px solid hsl(var(--border, 240 6% 90%));
325
367
  border-radius: 0.375rem;
326
- background: hsl(var(--background, 0 0% 100%));
327
- color: inherit;
368
+ cursor: pointer;
328
369
  font: inherit;
329
370
  font-size: 0.8125rem;
330
- cursor: pointer;
331
371
  }
332
- .matrx-alchemy-workspace button:hover {
333
- background: hsl(var(--accent, 240 5% 96%));
372
+ .matrx-alchemy-workspace-secondary {
373
+ border: 1px solid hsl(var(--border, 240 6% 90%));
374
+ background: hsl(var(--background, 0 0% 100%));
375
+ color: hsl(var(--foreground, 240 10% 4%));
334
376
  }
335
- .matrx-alchemy-workspace button:disabled {
336
- opacity: 0.5;
337
- cursor: not-allowed;
377
+ .matrx-alchemy-workspace-primary {
378
+ border: 1px solid hsl(var(--primary, 262 43% 51%));
379
+ background: hsl(var(--primary, 262 43% 51%));
380
+ color: hsl(var(--primary-foreground, 0 0% 100%));
381
+ }
382
+ .matrx-alchemy-workspace :is(.matrx-alchemy-workspace-secondary, .matrx-alchemy-workspace-primary):disabled { opacity: 0.5; cursor: not-allowed; }
383
+ .matrx-alchemy-workspace-secondary:hover { background: hsl(var(--accent, 240 5% 96%)); }
384
+ .matrx-alchemy-workspace-primary:hover { filter: brightness(0.96); }
385
+ .matrx-alchemy-configuration {
386
+ width: min(40rem, calc(100vw - 2rem));
387
+ max-height: min(90dvh, 42rem);
388
+ overflow: hidden;
338
389
  }
339
390
  .matrx-alchemy-workspace button:focus-visible,
340
391
  .matrx-alchemy-workspace :is(input, textarea, select):focus-visible {
@@ -366,10 +417,7 @@
366
417
  }
367
418
  @media (max-width: 767px) {
368
419
  .matrx-alchemy-workspace {
369
- top: auto;
370
- bottom: 0;
371
- left: 0;
372
- translate: none;
420
+ inset: auto 0 0;
373
421
  width: 100%;
374
422
  max-width: 100%;
375
423
  max-height: 92dvh;
@@ -380,3 +428,31 @@
380
428
 
381
429
  .matrx-alchemy-menu *, .matrx-alchemy-workspace * { box-sizing: border-box; }
382
430
  .matrx-alchemy-workspace-grid:not(:has(aside)) { grid-template-columns: minmax(0, 1fr); }
431
+
432
+ /* Table toolbar matches the canonical tap-target 44 / 28 / 14 geometry.
433
+ tap-target depends on design-system, so this primitive cannot import it. */
434
+ .matrx-alchemy-toolbar-target .matrx-alchemy-trigger {
435
+ position: relative;
436
+ flex-shrink: 0;
437
+ width: 2.75rem;
438
+ height: 2.75rem;
439
+ background: transparent;
440
+ touch-action: manipulation;
441
+ }
442
+ .matrx-alchemy-toolbar-target .matrx-alchemy-trigger::before {
443
+ content: "";
444
+ position: absolute;
445
+ width: 1.75rem;
446
+ height: 1.75rem;
447
+ border-radius: 9999px;
448
+ transition: background-color 150ms ease, transform 100ms ease;
449
+ }
450
+ .matrx-alchemy-toolbar-target .matrx-alchemy-trigger:hover::before {
451
+ background: hsl(var(--accent, 240 5% 96%));
452
+ }
453
+ .matrx-alchemy-toolbar-target .matrx-alchemy-trigger:active::before { transform: scale(0.92); }
454
+ .matrx-alchemy-toolbar-target .matrx-alchemy-trigger svg {
455
+ position: relative;
456
+ width: 0.875rem;
457
+ height: 0.875rem;
458
+ }
@@ -133,7 +133,7 @@ interface MatrxCopyMenuProps {
133
133
  disabled?: boolean;
134
134
  className?: string;
135
135
  stopPropagation?: boolean;
136
- size?: "xs" | "icon" | "sm";
136
+ size?: "xs" | "icon" | "sm" | "toolbar";
137
137
  appearance?: "bare" | "segmented";
138
138
  unified?: boolean;
139
139
  grouped?: boolean;
@@ -173,6 +173,8 @@ interface TransferMenuPresentation {
173
173
  className?: string;
174
174
  }>;
175
175
  ariaLabel?: string;
176
+ /** Download-only actions join the shared format palette instead of a second menu. */
177
+ placement?: "download";
176
178
  }
177
179
  interface TransferMenuVariant extends TransferMenuPresentation {
178
180
  id: string;
@@ -196,6 +198,8 @@ interface ContentTransferMenuProps {
196
198
  };
197
199
  /** A quick format may explicitly capture a different representation. */
198
200
  formatSources?: Partial<Record<SerializableFormat, Source | Payload>>;
201
+ /** Set false for action-only hosts; source formats and adapters are then omitted. */
202
+ sourceFormats?: boolean;
199
203
  /** Named alternate sources open this same preparation workspace. */
200
204
  variants?: readonly TransferMenuVariant[];
201
205
  actions?: (PageAction & TransferMenuPresentation)[];
@@ -133,7 +133,7 @@ interface MatrxCopyMenuProps {
133
133
  disabled?: boolean;
134
134
  className?: string;
135
135
  stopPropagation?: boolean;
136
- size?: "xs" | "icon" | "sm";
136
+ size?: "xs" | "icon" | "sm" | "toolbar";
137
137
  appearance?: "bare" | "segmented";
138
138
  unified?: boolean;
139
139
  grouped?: boolean;
@@ -173,6 +173,8 @@ interface TransferMenuPresentation {
173
173
  className?: string;
174
174
  }>;
175
175
  ariaLabel?: string;
176
+ /** Download-only actions join the shared format palette instead of a second menu. */
177
+ placement?: "download";
176
178
  }
177
179
  interface TransferMenuVariant extends TransferMenuPresentation {
178
180
  id: string;
@@ -196,6 +198,8 @@ interface ContentTransferMenuProps {
196
198
  };
197
199
  /** A quick format may explicitly capture a different representation. */
198
200
  formatSources?: Partial<Record<SerializableFormat, Source | Payload>>;
201
+ /** Set false for action-only hosts; source formats and adapters are then omitted. */
202
+ sourceFormats?: boolean;
199
203
  /** Named alternate sources open this same preparation workspace. */
200
204
  variants?: readonly TransferMenuVariant[];
201
205
  actions?: (PageAction & TransferMenuPresentation)[];