@ai-matrx/canvas 0.10.34 → 0.10.35

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/dist/styles.css CHANGED
@@ -533,6 +533,8 @@
533
533
  max-width: 12rem;
534
534
  display: flex;
535
535
  align-items: center;
536
+ /* macOS tabs (Safari, Terminal, Finder) centre their icon and name. */
537
+ justify-content: center;
536
538
  gap: 0.25rem;
537
539
  height: 1.625rem;
538
540
  padding: 0 0.375rem;
@@ -546,9 +548,9 @@
546
548
  box-sizing: border-box;
547
549
  }
548
550
 
549
- /* The active tab always shows its close: its room is reserved. */
551
+ /* The active tab always shows its close: its room is reserved (at the leading edge, as macOS tabs put it). */
550
552
  .mxc-tab[data-active]:has(> .mxc-tab-close) {
551
- padding-right: 1.25rem;
553
+ padding-left: 1.25rem;
552
554
  }
553
555
 
554
556
  /* The active tab: the same width rules as every tab (no flex-shrink of its own — 0.7.0 live: it ran under "All tabs"). */
@@ -655,7 +657,7 @@
655
657
  @media (hover: hover) {
656
658
  .mxc-tab:not([data-active]):hover:has(> .mxc-tab-close),
657
659
  .mxc-tab:not([data-active]):focus-within:has(> .mxc-tab-close) {
658
- padding-right: 1.25rem;
660
+ padding-left: 1.25rem;
659
661
  }
660
662
  }
661
663
 
@@ -668,7 +670,7 @@
668
670
  .mxc-tab-close {
669
671
  position: absolute;
670
672
  top: 50%;
671
- right: 0.1875rem;
673
+ left: 0.1875rem;
672
674
  transform: translateY(-50%);
673
675
  display: inline-flex;
674
676
  align-items: center;
@@ -716,43 +718,95 @@
716
718
 
717
719
  /* ── browser bar ────────────────────────────────────────────────────────── */
718
720
 
719
- /* In a body column it keeps its own height; in a header's leading slot it fills the width. */
721
+ /*
722
+ * Safari's toolbar row (macOS 26): Back and Forward in one capsule, the address
723
+ * as a centred pill showing the site's host until clicked, Reload inside its
724
+ * trailing edge, the page's actions in a capsule after it. 8px apart.
725
+ * In a body column it keeps its own height; in a header's leading slot it fills the width.
726
+ */
720
727
  .mxc-browser-bar {
721
- flex: none;
728
+ flex: 1 1 auto;
722
729
  min-width: 0;
723
730
  display: flex;
724
731
  align-items: center;
725
- gap: 0.125rem;
726
- height: 2.5rem;
727
- padding: 0 0.375rem;
732
+ gap: 0.5rem;
733
+ height: 2.75rem;
734
+ padding: 0 0.5rem;
728
735
  }
729
736
 
730
737
  .mxc-pane-leading > .mxc-browser-bar {
731
- flex: 1 1 auto;
732
738
  height: auto;
733
739
  padding: 0;
734
740
  }
735
741
 
742
+ /* A glass capsule of related buttons (Back | Forward; a page's actions). */
743
+ .mxc-capsule {
744
+ flex: none;
745
+ display: inline-flex;
746
+ align-items: center;
747
+ gap: 0;
748
+ height: 2rem;
749
+ padding: 0 0.125rem;
750
+ border-radius: 999px;
751
+ background: var(--mxc-capsule-bg);
752
+ box-shadow: var(--mxc-capsule-shadow);
753
+ }
754
+
755
+ .mxc-capsule > .mxc-icon-button {
756
+ border-radius: 999px;
757
+ }
758
+
759
+ .mxc-capsule-divider {
760
+ flex: none;
761
+ width: 1px;
762
+ height: 1rem;
763
+ background: var(--mxc-border);
764
+ }
765
+
736
766
  .mxc-address-form {
767
+ position: relative;
737
768
  flex: 1 1 auto;
738
- min-width: 4rem;
739
- margin: 0 0 0 0.25rem;
769
+ min-width: 6rem;
770
+ display: flex;
771
+ align-items: center;
772
+ margin: 0;
740
773
  }
741
774
 
742
775
  .mxc-address {
743
776
  width: 100%;
744
- height: 1.75rem;
745
- padding: 0 0.75rem;
746
- border: 1px solid var(--mxc-border);
777
+ height: 2rem;
778
+ padding: 0 2rem;
779
+ border: 0;
747
780
  border-radius: 999px;
748
- background: var(--mxc-input-bg);
781
+ background: var(--mxc-capsule-bg);
782
+ box-shadow: var(--mxc-capsule-shadow);
749
783
  color: var(--mxc-fg);
750
784
  font: inherit;
751
- font-size: 0.75rem;
785
+ font-size: 0.8125rem;
752
786
  text-align: center;
753
787
  outline: none;
754
788
  }
755
789
 
790
+ /* Not being typed in: the field keeps the whole address (its value, its accessible name), and the
791
+ host is what shows, centred, as Safari's does. */
792
+ .mxc-address[data-shown="host"] {
793
+ color: transparent;
794
+ }
795
+
796
+ .mxc-address-host {
797
+ position: absolute;
798
+ inset: 0 2rem;
799
+ display: flex;
800
+ align-items: center;
801
+ justify-content: center;
802
+ overflow: hidden;
803
+ font-size: 0.8125rem;
804
+ color: var(--mxc-fg);
805
+ white-space: nowrap;
806
+ text-overflow: ellipsis;
807
+ pointer-events: none;
808
+ }
809
+
756
810
  .mxc-address::placeholder {
757
811
  color: var(--mxc-muted);
758
812
  }
@@ -760,15 +814,27 @@
760
814
  .mxc-address:focus {
761
815
  background: var(--mxc-tab-active-bg);
762
816
  text-align: left;
763
- box-shadow: 0 0 0 2px var(--mxc-ring);
817
+ padding-left: 0.875rem;
818
+ box-shadow: 0 0 0 3px var(--mxc-ring);
819
+ }
820
+
821
+ .mxc-address-reload {
822
+ position: absolute;
823
+ right: 0.25rem;
824
+ border-radius: 999px;
825
+ }
826
+
827
+ /* No page yet: no Reload, so the placeholder gets the whole pill. */
828
+ .mxc-address-form:not(:has(> .mxc-address-reload)) > .mxc-address {
829
+ padding: 0 0.875rem;
830
+ }
831
+
832
+ .mxc-address-form[data-editing] > .mxc-address-reload {
833
+ display: none;
764
834
  }
765
835
 
766
836
  .mxc-browser-bar-trailing {
767
- flex: none;
768
- display: flex;
769
- align-items: center;
770
- gap: 0.125rem;
771
- margin-left: 0.25rem;
837
+ margin-left: 0;
772
838
  }
773
839
 
774
840
  /* ── bodies ─────────────────────────────────────────────────────────────── */
package/dist/tokens.css CHANGED
@@ -21,6 +21,9 @@
21
21
  --mxc-tab-active-bg: hsl(var(--background, 0 0% 100%));
22
22
  --mxc-tab-active-shadow: 0 0 0 0.5px hsl(var(--border, 240 6% 85%)), 0 1px 2px hsl(var(--foreground, 240 6% 10%) / 0.06);
23
23
  --mxc-input-bg: hsl(var(--muted, 240 5% 96%) / 0.5);
24
+ /* Safari's glass capsules (Back | Forward, the address pill): raised on the toolbar. */
25
+ --mxc-capsule-bg: hsl(var(--background, 0 0% 100%));
26
+ --mxc-capsule-shadow: 0 0 0 0.5px hsl(var(--foreground, 240 6% 10%) / 0.12), 0 1px 3px hsl(var(--foreground, 240 6% 10%) / 0.08);
24
27
  --mxc-ring: hsl(var(--ring, 217 91% 60%) / 0.6);
25
28
  --mxc-accent: hsl(var(--primary, 221 83% 53%));
26
29
  --mxc-accent-soft: hsl(var(--primary, 221 83% 53%) / 0.18);
@@ -51,6 +54,8 @@
51
54
  --mxc-tab-active-bg: hsl(var(--background, 240 6% 7%));
52
55
  --mxc-tab-active-shadow: 0 0 0 0.5px hsl(var(--border, 240 4% 22%)), 0 1px 2px rgb(0 0 0 / 0.3);
53
56
  --mxc-input-bg: hsl(var(--muted, 240 4% 16%) / 0.5);
57
+ --mxc-capsule-bg: hsl(var(--foreground, 240 5% 96%) / 0.1);
58
+ --mxc-capsule-shadow: 0 0 0 0.5px hsl(var(--foreground, 240 5% 96%) / 0.12), 0 1px 3px rgb(0 0 0 / 0.3);
54
59
  --mxc-tooltip-bg: hsl(var(--foreground, 240 5% 96%));
55
60
  --mxc-tooltip-fg: hsl(var(--background, 240 6% 7%));
56
61
  }
@@ -69,6 +74,8 @@
69
74
  --mxc-tab-active-bg: hsl(var(--background, 240 6% 7%));
70
75
  --mxc-tab-active-shadow: 0 0 0 0.5px hsl(var(--border, 240 4% 22%)), 0 1px 2px rgb(0 0 0 / 0.3);
71
76
  --mxc-input-bg: hsl(var(--muted, 240 4% 16%) / 0.5);
77
+ --mxc-capsule-bg: hsl(var(--foreground, 240 5% 96%) / 0.1);
78
+ --mxc-capsule-shadow: 0 0 0 0.5px hsl(var(--foreground, 240 5% 96%) / 0.12), 0 1px 3px rgb(0 0 0 / 0.3);
72
79
  --mxc-tooltip-bg: hsl(var(--foreground, 240 5% 96%));
73
80
  --mxc-tooltip-fg: hsl(var(--background, 240 6% 7%));
74
81
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-matrx/canvas",
3
- "version": "0.10.34",
3
+ "version": "0.10.35",
4
4
  "description": "The AI Matrx canvas: a docked right-hand column with split panes, tabs, full screen, a kind registry, Redux-compatible state and persistence.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -103,5 +103,5 @@
103
103
  "check:package": "pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball",
104
104
  "verify:tarball": "node scripts/verify-tarball.mjs"
105
105
  },
106
- "gitHead": "776d512c11dbe2d4909742a217ecc47fcfa2116f"
106
+ "gitHead": "833de2279a3cad3c9cb980582697be6ebc7da1a4"
107
107
  }