@mirror-physics/fractal-ui 0.2.0-next.8 → 0.2.0-next.82

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.
@@ -0,0 +1,3 @@
1
+ <svg width="460" height="460" viewBox="0 0 460 460" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M122.969 0.059864C124.824 0.0608223 126.603 0.798262 127.915 2.11016L457.572 331.773C458.882 333.083 459.62 334.859 459.622 336.711L459.809 452.735C459.815 456.607 456.677 459.749 452.805 459.747L336.65 459.685C334.795 459.684 333.016 458.947 331.704 457.635L2.05026 127.981C0.736582 126.667 -0.000997322 124.885 1.01213e-06 123.027L0.0623525 6.99624C0.06443 3.13031 3.20003 -0.00199578 7.06597 9.54104e-07L122.969 0.059864Z" fill="#D9D9D9"/>
3
+ </svg>
package/dist/tokens.css CHANGED
@@ -15,7 +15,7 @@
15
15
  /* Grey — true neutral UI scale, very slight cool lean */
16
16
  --grey-0: #FEFEFE;
17
17
  --grey-50: #FAFAFA;
18
- --grey-100: #F0F0F0;
18
+ --grey-100: #F2F2F3;
19
19
  --grey-200: #E6E6E7;
20
20
  --grey-300: #D4D4D6;
21
21
  --grey-400: #929295;
@@ -123,6 +123,7 @@
123
123
  /* ---- Core ---- */
124
124
  --bg-canvas: var(--grey-0);
125
125
  --bg-surface-1: var(--grey-50);
126
+ --bg-surface-subtle: var(--grey-100);
126
127
  --bg-surface-2: var(--grey-200);
127
128
  --bg-surface-3: var(--grey-400);
128
129
  --bg-inverse: var(--grey-800);
@@ -134,11 +135,11 @@
134
135
  /* Hover */
135
136
  --hover-surface: var(--grey-100);
136
137
  --hover-on-surface: var(--grey-50);
137
- --hover-canvas: var(--grey-100);
138
+ --hover-canvas: #F6F6F7;
138
139
 
139
140
  /* Navigation */
140
141
  --nav-surface: var(--grey-50);
141
- --nav-border: var(--grey-200);
142
+ --nav-border: var(--border-on-surface-1);
142
143
  --nav-hover: var(--grey-100);
143
144
  --nav-selected: var(--grey-100);
144
145
 
@@ -152,8 +153,13 @@
152
153
  --fg-inverse-secondary: var(--grey-300);
153
154
 
154
155
  /* ---- Borders ---- */
155
- --border-subtle: var(--grey-200);
156
- --border-default: var(--grey-300);
156
+ /* Matched Oklab lightness step; calibrated to grey-200 on light canvas. */
157
+ --border-on-canvas: #E6E6E7;
158
+ --border-on-surface-1: #E2E2E2;
159
+ --border-on-surface-2: #CFCFD0;
160
+ --border-on-surface-3: #7D7D7F;
161
+ --border-subtle: var(--border-on-canvas);
162
+ --border-default: var(--border-subtle);
157
163
  --border-strong: var(--grey-400);
158
164
  --border-focus: var(--blue-500);
159
165
  --border-inverse: rgba(255, 255, 255, 0.12);
@@ -202,6 +208,18 @@
202
208
  --warning-text: var(--yellow-900);
203
209
  --warning-bg: var(--yellow-0);
204
210
 
211
+ /* Filled status and metadata tags — borderless containment. */
212
+ --tag-info-bg: var(--blue-100);
213
+ --tag-info-fg: var(--blue-600);
214
+ --tag-success-bg: var(--green-100);
215
+ --tag-success-fg: var(--green-600);
216
+ --tag-warning-bg: var(--yellow-100);
217
+ --tag-warning-fg: var(--yellow-600);
218
+ --tag-error-bg: var(--red-100);
219
+ --tag-error-fg: var(--red-600);
220
+ --tag-neutral-bg: var(--bg-surface-2);
221
+ --tag-neutral-fg: var(--fg-secondary);
222
+
205
223
  /* ---- Pink ---- */
206
224
  --pink-default: var(--pink-500);
207
225
  --pink-hover: var(--pink-400);
@@ -313,6 +331,7 @@
313
331
  /* ---- Core ---- */
314
332
  --bg-canvas: var(--grey-900);
315
333
  --bg-surface-1: var(--grey-800);
334
+ --bg-surface-subtle: var(--grey-800);
316
335
  --bg-surface-2: var(--grey-700);
317
336
  --bg-surface-3: var(--grey-600);
318
337
  --bg-inverse: var(--grey-50);
@@ -324,11 +343,11 @@
324
343
  /* Hover */
325
344
  --hover-surface: var(--grey-700);
326
345
  --hover-on-surface: var(--grey-800);
327
- --hover-canvas: var(--grey-700);
346
+ --hover-canvas: var(--grey-800);
328
347
 
329
348
  /* Navigation */
330
349
  --nav-surface: var(--grey-700);
331
- --nav-border: var(--grey-600);
350
+ --nav-border: var(--border-on-surface-1);
332
351
  --nav-hover: var(--grey-600);
333
352
  --nav-selected: var(--grey-500);
334
353
 
@@ -342,8 +361,13 @@
342
361
  --fg-inverse-secondary: var(--grey-600);
343
362
 
344
363
  /* ---- Borders ---- */
345
- --border-subtle: var(--grey-700);
346
- --border-default: var(--grey-600);
364
+ /* Matched Oklab lightness step; calibrated to grey-200 on light canvas. */
365
+ --border-on-canvas: #2D2D2F;
366
+ --border-on-surface-1: #3F3F41;
367
+ --border-on-surface-2: #535355;
368
+ --border-on-surface-3: #6A6A6D;
369
+ --border-subtle: var(--border-on-canvas);
370
+ --border-default: var(--border-subtle);
347
371
  --border-strong: var(--grey-500);
348
372
  --border-focus: var(--blue-400);
349
373
  --border-inverse: rgba(0, 0, 0, 0.12);
@@ -392,6 +416,18 @@
392
416
  --warning-text: var(--yellow-100);
393
417
  --warning-bg: var(--yellow-900);
394
418
 
419
+ /* Filled status and metadata tags — borderless containment. */
420
+ --tag-info-bg: var(--blue-700);
421
+ --tag-info-fg: var(--blue-200);
422
+ --tag-success-bg: var(--green-700);
423
+ --tag-success-fg: var(--green-200);
424
+ --tag-warning-bg: var(--yellow-700);
425
+ --tag-warning-fg: var(--yellow-200);
426
+ --tag-error-bg: var(--red-700);
427
+ --tag-error-fg: var(--red-200);
428
+ --tag-neutral-bg: var(--bg-surface-2);
429
+ --tag-neutral-fg: var(--fg-secondary);
430
+
395
431
  /* ---- Pink ---- */
396
432
  --pink-default: var(--pink-400);
397
433
  --pink-hover: var(--pink-300);
@@ -430,6 +466,38 @@
430
466
  }
431
467
  }
432
468
 
469
+ /* Select the reference surface for a neutral boundary. This does not set a
470
+ background. Reset the scope at nested boundaries with a different pair. */
471
+ [data-fractal-border-surface="canvas"] {
472
+ --border-subtle: var(--border-on-canvas);
473
+ --border-default: var(--border-subtle);
474
+ --border-dashed-subtle: 1px dashed var(--border-subtle);
475
+ }
476
+ [data-fractal-border-surface="surface-1"] {
477
+ --border-subtle: var(--border-on-surface-1);
478
+ --border-default: var(--border-subtle);
479
+ --border-dashed-subtle: 1px dashed var(--border-subtle);
480
+ }
481
+ [data-fractal-border-surface="surface-2"] {
482
+ --border-subtle: var(--border-on-surface-2);
483
+ --border-default: var(--border-subtle);
484
+ --border-dashed-subtle: 1px dashed var(--border-subtle);
485
+ }
486
+ [data-fractal-border-surface="surface-3"] {
487
+ --border-subtle: var(--border-on-surface-3);
488
+ --border-default: var(--border-subtle);
489
+ --border-dashed-subtle: 1px dashed var(--border-subtle);
490
+ }
491
+
492
+ /* Primary actions share one theme for text and icon-only buttons.
493
+ Products may override these four tokens on their application root. */
494
+ :root {
495
+ --button-primary-bg: var(--fg-primary);
496
+ --button-primary-hover: var(--fg-secondary);
497
+ --button-primary-active: var(--fg-primary);
498
+ --button-primary-fg: var(--fg-inverse);
499
+ }
500
+
433
501
  /* =========================================
434
502
  Typography - Font Declarations & Tokens
435
503
  ========================================= */
@@ -620,9 +688,46 @@ body {
620
688
  --shadow-xl: 0 20px 25px rgba(0,0,0,0.08), 0 8px 10px rgba(0,0,0,0.04);
621
689
 
622
690
  /* ---- Layout Constants ---- */
691
+ --shell-header-height: 3.5rem; /* 56px at the default root, including the divider */
692
+ --chart-axis-tick-gap: var(--space-1);
693
+ --chart-axis-title-gap: var(--space-2);
623
694
  --panel-width: 256px;
624
695
  }
625
696
 
697
+ /* Shared single-line control geometry. See layout-guide.md. */
698
+ :root {
699
+ --control-border-width: 1px;
700
+ --control-label-gap: var(--space-2);
701
+ --control-icon-gap: var(--space-2);
702
+ --control-sm-font-size: .75rem;
703
+ --control-sm-line-height: 1.25rem;
704
+ --control-sm-padding-block: var(--space-1);
705
+ --control-sm-padding-inline: var(--space-3);
706
+ --control-sm-icon-size: 1rem;
707
+ --control-md-font-size: .875rem;
708
+ --control-md-line-height: 1.25rem;
709
+ --control-md-padding-block: var(--space-2);
710
+ --control-md-padding-inline: var(--space-3);
711
+ --control-md-icon-size: 1.25rem;
712
+ --control-lg-font-size: .875rem;
713
+ --control-lg-line-height: 1.25rem;
714
+ --control-lg-padding-block: var(--space-3);
715
+ --control-lg-padding-inline: var(--space-4);
716
+ --control-lg-icon-size: 1.25rem;
717
+ --control-xl-font-size: .875rem;
718
+ --control-xl-line-height: 1.25rem;
719
+ --control-xl-padding-block: var(--space-4);
720
+ --control-xl-padding-inline: var(--space-5);
721
+ --control-xl-icon-size: 1.25rem;
722
+ }
723
+
724
+ /* Table content caps; selected by the table container's available width. */
725
+ :root {
726
+ --table-column-max-compact: 16rem;
727
+ --table-column-max-medium: 20rem;
728
+ --table-column-max-wide: 24rem;
729
+ }
730
+
626
731
  /* =========================================
627
732
  Design System Motion Tokens
628
733
  =========================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirror-physics/fractal-ui",
3
- "version": "0.2.0-next.8",
3
+ "version": "0.2.0-next.82",
4
4
  "description": "Fractal UI — React components and CSS tokens for Mirror Physics products",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -13,7 +13,13 @@
13
13
  "require": "./dist/index.cjs"
14
14
  },
15
15
  "./css": "./dist/index.css",
16
- "./tokens.css": "./dist/tokens.css"
16
+ "./tokens.css": "./dist/tokens.css",
17
+ "./column-editor": {
18
+ "types": "./dist/column-editor.d.ts",
19
+ "import": "./dist/column-editor.js",
20
+ "require": "./dist/column-editor.cjs"
21
+ },
22
+ "./column-editor.css": "./dist/column-editor.css"
17
23
  },
18
24
  "files": [
19
25
  "dist"
@@ -24,8 +30,11 @@
24
30
  "scripts": {
25
31
  "build": "tsup",
26
32
  "typecheck": "tsc --noEmit",
33
+ "test:tooltip": "playwright test",
34
+ "test:dropdown": "node --test tests/dropdown-position.test.mjs",
27
35
  "storybook": "storybook dev -p 6006",
28
36
  "build-storybook": "storybook build",
37
+ "publish:next": "set -a && . ./.env.local && set +a && npm publish --tag next",
29
38
  "prepublishOnly": "npm run typecheck && npm run build"
30
39
  },
31
40
  "peerDependencies": {
@@ -33,10 +42,17 @@
33
42
  "react-dom": "^18.0.0 || ^19.0.0"
34
43
  },
35
44
  "dependencies": {
36
- "@mirror-physics/fractal-icons": "^0.4.0",
45
+ "@codemirror/lang-json": "^6.0.2",
46
+ "@codemirror/language": "^6.12.4",
47
+ "@codemirror/view": "^6.43.7",
48
+ "@lezer/highlight": "^1.2.3",
49
+ "@mirror-physics/fractal-icons": "^0.4.3",
50
+ "@radix-ui/react-tooltip": "^1.2.16",
51
+ "@uiw/react-codemirror": "^4.25.11",
37
52
  "clsx": "^2.1.1"
38
53
  },
39
54
  "devDependencies": {
55
+ "@playwright/test": "^1.63.0",
40
56
  "@storybook/addon-a11y": "^10.4.6",
41
57
  "@storybook/addon-docs": "^10.4.6",
42
58
  "@storybook/react-vite": "^10.4.6",
@@ -46,7 +62,8 @@
46
62
  "react-dom": "^19.2.4",
47
63
  "storybook": "^10.4.6",
48
64
  "tsup": "^8.5.1",
49
- "typescript": "^5.9.3"
65
+ "typescript": "^5.9.3",
66
+ "vite": "^7.3.6"
50
67
  },
51
68
  "repository": {
52
69
  "type": "git",