@ai-matrx/alchemy 0.1.3 → 0.1.5

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.5
4
+
5
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
6
+ `git diff npm/alchemy/v0.1.4..npm/alchemy/v0.1.5 -- apps/shared/alchemy`).
7
+ No source changes intended and no consumer action required.
8
+
3
9
  ## 0.1.3 — 2026-09-12
4
10
 
5
11
  Refreshes the distribution with the compact Alchemy format palette, its
package/dist/alchemy.svg CHANGED
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4.5 5.5h8v11h-8z"/><path d="M8.5 9.5h8v9h-8z"/><path d="m18.5 3 .65 1.85L21 5.5l-1.85.65L18.5 8l-.65-1.85L16 5.5l1.85-.65z"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 3h6"/><path d="M10 3v6l-5.2 8.7A2 2 0 0 0 6.5 21h11a2 2 0 0 0 1.7-3.3L14 9V3"/><path d="M8 15h8"/></svg>
package/dist/styles.css CHANGED
@@ -42,6 +42,21 @@
42
42
  padding: 0.4375rem;
43
43
  max-height: var(--radix-popover-content-available-height, 80dvh);
44
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
+ }
45
60
  .matrx-alchemy-mode {
46
61
  display: flex;
47
62
  gap: 0.1875rem;
@@ -71,7 +86,7 @@
71
86
  .matrx-alchemy-palette-row > span { min-width: 0; }
72
87
  .matrx-alchemy-palette-row-ai { color: hsl(var(--primary, 262 43% 51%)); }
73
88
  .matrx-alchemy-palette :is(button:hover, button:focus-visible) { background: hsl(var(--accent, 240 5% 96%)); outline: none; }
74
- .matrx-alchemy-palette :is(button:focus-visible) { box-shadow: 0 0 0 2px hsl(var(--ring, 240 5% 65%)); }
89
+ .matrx-alchemy-palette :is(button:focus-visible) { box-shadow: inset 0 0 0 2px hsl(var(--ring, 240 5% 65%)); }
75
90
  .matrx-alchemy-palette-status { margin: 0.25rem 0.375rem; color: hsl(var(--muted-foreground, 240 4% 46%)); font-size: 0.75rem; }
76
91
  .matrx-alchemy-notice,
77
92
  .matrx-alchemy-meta {
@@ -79,17 +94,25 @@
79
94
  color: hsl(var(--muted-foreground, 240 4% 46%));
80
95
  }
81
96
  .matrx-alchemy-workspace {
82
- max-height: min(90dvh, 56rem);
83
- overflow: auto;
97
+ max-height: min(90dvh, 48rem);
98
+ overflow: hidden;
99
+ grid-template-rows: auto minmax(0, 1fr) auto;
84
100
  }
85
101
  .matrx-alchemy-workspace-grid {
86
102
  display: grid;
87
- grid-template-columns: minmax(0, 2fr) minmax(14rem, 1fr);
103
+ grid-template-columns: minmax(0, 2fr) minmax(12rem, 1fr);
88
104
  gap: 1rem;
89
105
  min-height: 0;
90
106
  }
107
+ .matrx-alchemy-workspace-body {
108
+ min-height: 0;
109
+ overflow: auto;
110
+ overscroll-behavior: contain;
111
+ padding: 0.25rem;
112
+ }
91
113
  .matrx-alchemy-main {
92
114
  display: grid;
115
+ align-content: start;
93
116
  gap: 0.75rem;
94
117
  min-width: 0;
95
118
  }
@@ -128,6 +151,15 @@
128
151
  border-radius: 0.375rem;
129
152
  padding: 0.625rem;
130
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; }
131
163
  .matrx-alchemy-options legend {
132
164
  padding: 0 0.25rem;
133
165
  font-size: 0.8125rem;
@@ -169,7 +201,7 @@
169
201
  .matrx-alchemy-preview {
170
202
  display: block;
171
203
  width: 100%;
172
- min-height: 20rem;
204
+ min-height: 16rem;
173
205
  padding: 0.75rem;
174
206
  border: 1px solid hsl(var(--border, 240 6% 90%));
175
207
  border-radius: 0.375rem;
@@ -287,17 +319,15 @@
287
319
  .matrx-alchemy-workspace {
288
320
  position: fixed;
289
321
  z-index: 10001;
290
- top: 50%;
291
- left: 50%;
292
- right: auto;
293
- bottom: auto;
294
- margin: 0;
295
- translate: -50% -50%;
296
- width: min(64rem, calc(100vw - 2rem));
322
+ inset: 0;
323
+ margin: auto;
324
+ translate: none;
325
+ height: fit-content;
326
+ width: min(48rem, calc(100vw - 2rem));
297
327
  max-width: calc(100vw - 2rem);
298
- padding: 1.5rem;
328
+ padding: 1rem;
299
329
  display: grid;
300
- gap: 1rem;
330
+ gap: 0.75rem;
301
331
  }
302
332
  [data-slot="dialog-overlay"]:has(+ .matrx-alchemy-workspace) {
303
333
  position: fixed;
@@ -327,27 +357,35 @@
327
357
  gap: 0.5rem;
328
358
  align-items: center;
329
359
  }
330
- .matrx-alchemy-workspace button {
360
+ .matrx-alchemy-workspace-secondary,
361
+ .matrx-alchemy-workspace-primary {
331
362
  display: inline-flex;
332
363
  align-items: center;
333
364
  justify-content: center;
334
- gap: 0.375rem;
335
365
  min-height: 2rem;
336
366
  padding: 0.375rem 0.75rem;
337
- border: 1px solid hsl(var(--border, 240 6% 90%));
338
367
  border-radius: 0.375rem;
339
- background: hsl(var(--background, 0 0% 100%));
340
- color: inherit;
368
+ cursor: pointer;
341
369
  font: inherit;
342
370
  font-size: 0.8125rem;
343
- cursor: pointer;
344
371
  }
345
- .matrx-alchemy-workspace button:hover {
346
- 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%));
347
376
  }
348
- .matrx-alchemy-workspace button:disabled {
349
- opacity: 0.5;
350
- 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;
351
389
  }
352
390
  .matrx-alchemy-workspace button:focus-visible,
353
391
  .matrx-alchemy-workspace :is(input, textarea, select):focus-visible {
@@ -379,10 +417,7 @@
379
417
  }
380
418
  @media (max-width: 767px) {
381
419
  .matrx-alchemy-workspace {
382
- top: auto;
383
- bottom: 0;
384
- left: 0;
385
- translate: none;
420
+ inset: auto 0 0;
386
421
  width: 100%;
387
422
  max-width: 100%;
388
423
  max-height: 92dvh;
@@ -393,3 +428,50 @@
393
428
 
394
429
  .matrx-alchemy-menu *, .matrx-alchemy-workspace * { box-sizing: border-box; }
395
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
+ }
459
+
460
+ .matrx-alchemy-data-controls { max-height: none; }
461
+ .matrx-alchemy-data-controls-body { display: grid; gap: 0.75rem; margin-top: 0.75rem; }
462
+ .matrx-alchemy-preview-label { display: flex; align-items: center; gap: 0.5rem; }
463
+ .matrx-alchemy-preview-label select { width: auto; min-width: 10rem; max-width: 100%; }
464
+
465
+ /* Subset shaping uses the same dialog chrome without recursive transfer controls. */
466
+ .matrx-alchemy-subset { width: min(48rem, calc(100vw - 2rem)); height: min(80dvh, 42rem); }
467
+ .matrx-alchemy-subset-body { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: 0.75rem; }
468
+ .matrx-alchemy-subset-columns { max-height: 8rem; overflow: auto; margin: 0; padding: 0.25rem; border: 0; font-size: 0.8125rem; }
469
+ .matrx-alchemy-subset-columns legend { font-weight: 500; }
470
+ .matrx-alchemy-subset-table { min-height: 18rem; overflow: hidden; }
471
+ .matrx-alchemy-subset-format { display: inline-flex; align-items: center; gap: 0.375rem; font-size: 0.8125rem; }
472
+ .matrx-alchemy-subset-format select { min-height: 2rem; border: 1px solid hsl(var(--border)); border-radius: 0.375rem; background: hsl(var(--background)); color: inherit; padding: 0.25rem 0.5rem; }
473
+ @media (max-width: 767px) { .matrx-alchemy-subset { width: 100%; } }
474
+
475
+ .matrx-alchemy-feedback { position: fixed; z-index: 10002; bottom: max(1rem, env(safe-area-inset-bottom)); left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 0.75rem; width: max-content; max-width: calc(100vw - 2rem); padding: 0.5rem 0.75rem; border: 1px solid hsl(var(--border)); border-radius: 0.5rem; background: hsl(var(--background)); color: hsl(var(--foreground)); box-shadow: 0 4px 16px hsl(var(--foreground) / 0.12); font-size: 0.8125rem; }
476
+ .matrx-alchemy-feedback button { flex-shrink: 0; width: 1.75rem; height: 1.75rem; border: 0; border-radius: 0.25rem; background: transparent; color: inherit; cursor: pointer; }
477
+ .matrx-alchemy-feedback button:focus-visible { outline: 2px solid hsl(var(--ring)); outline-offset: -2px; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-matrx/alchemy",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Matrx Alchemy: the complete Matrx copy, prepare-for-AI, and export experience, with framework-neutral core, React menu, glyph, styles and Matrx integration.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -131,7 +131,7 @@
131
131
  "scripts": {
132
132
  "build": "pnpm clean && tsup && node ./scripts/copy-assets.mjs && node ./scripts/assert-distribution-artifacts.mjs",
133
133
  "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
134
- "check:package": "pnpm build && publint && pnpm verify:tarball",
134
+ "check:package": "pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball",
135
135
  "typecheck": "tsc -p tsconfig.json --noEmit",
136
136
  "test": "vitest run",
137
137
  "verify:tarball": "node ./scripts/verify-tarball.mjs"