@pipelex/mthds-ui 0.6.5 → 0.8.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.
@@ -1007,6 +1007,19 @@ svg.react-flow__connectionline {
1007
1007
  .pipe-card--controller {
1008
1008
  --pipe-card-accent: var(--text-muted);
1009
1009
  }
1010
+
1011
+ /* Signature (unimplemented stub) — dashed + muted so it reads as "declared,
1012
+ not built yet", distinct from operator (solid accent) and controller (tinted). */
1013
+ .pipe-card--signature {
1014
+ --pipe-card-accent: var(--text-muted);
1015
+ border-left-style: dashed;
1016
+ opacity: 0.85;
1017
+ }
1018
+ .pipe-card-badge--signature {
1019
+ background: transparent;
1020
+ color: var(--text-muted);
1021
+ border: 1px dashed var(--text-muted);
1022
+ }
1010
1023
  @keyframes pipe-card-pulse {
1011
1024
  0%,
1012
1025
  100% {
@@ -1583,12 +1596,24 @@ button.stuff-viewer-local-file--button:focus-visible {
1583
1596
  pointer-events: none;
1584
1597
  }
1585
1598
 
1599
+ /* ─── Close row — scrolls away with the content (intentionally NOT pinned) ─ */
1600
+ /* The close button is part of the content's top, not panel chrome: it
1601
+ * scrolls out of view with the content, and closing the panel means
1602
+ * scrolling back up. The negative margin tucks the following section up
1603
+ * beside it so the row doesn't cost a full line of vertical space. */
1604
+
1605
+ .detail-panel-close-row {
1606
+ display: flex;
1607
+ justify-content: flex-end;
1608
+ /* Pull the next section up by exactly this row's height + the column
1609
+ * gap, so the close button sits ON the first content line (concept /
1610
+ * pipe header), right-aligned — not on its own line above it. */
1611
+ margin-bottom: -40px;
1612
+ }
1613
+
1586
1614
  .detail-panel-close {
1587
1615
  all: unset;
1588
1616
  cursor: pointer;
1589
- position: absolute;
1590
- top: 12px;
1591
- right: 12px;
1592
1617
  width: 24px;
1593
1618
  height: 24px;
1594
1619
  display: flex;
@@ -1598,7 +1623,10 @@ button.stuff-viewer-local-file--button:focus-visible {
1598
1623
  color: var(--text-dim);
1599
1624
  font-size: 18px;
1600
1625
  line-height: 1;
1601
- z-index: 3;
1626
+ /* Above the sticky pipe header (z 1) so the X is visible at rest while
1627
+ * sharing its line; on scroll it briefly slides over the stuck header's
1628
+ * empty right side before leaving the viewport. */
1629
+ z-index: 2;
1602
1630
  }
1603
1631
 
1604
1632
  .detail-panel-close:hover {
@@ -1609,7 +1637,7 @@ button.stuff-viewer-local-file--button:focus-visible {
1609
1637
  .detail-panel-content {
1610
1638
  flex: 1;
1611
1639
  overflow-y: auto;
1612
- padding: 20px 16px;
1640
+ padding: 12px 16px 20px;
1613
1641
  display: flex;
1614
1642
  flex-direction: column;
1615
1643
  gap: 16px;
@@ -1619,11 +1647,11 @@ button.stuff-viewer-local-file--button:focus-visible {
1619
1647
 
1620
1648
  .detail-sticky-header {
1621
1649
  position: sticky;
1622
- top: -20px;
1650
+ top: -12px; /* must mirror .detail-panel-content's top padding */
1623
1651
  z-index: 1;
1624
1652
  background: var(--surface-panel);
1625
- padding-top: 20px;
1626
- margin-top: -20px;
1653
+ padding-top: 12px;
1654
+ margin-top: -12px;
1627
1655
  display: flex;
1628
1656
  flex-direction: column;
1629
1657
  gap: 16px;
@@ -1994,6 +2022,47 @@ button.stuff-viewer-local-file--button:focus-visible {
1994
2022
  font-family: var(--font-mono);
1995
2023
  }
1996
2024
 
2025
+ /* ─── Detail tabs (Data / Structure) ────────────────────────────────────── */
2026
+
2027
+ .detail-tabs {
2028
+ display: flex;
2029
+ gap: 2px;
2030
+ border-bottom: 1px solid var(--border-default);
2031
+ }
2032
+
2033
+ .detail-tab {
2034
+ all: unset;
2035
+ cursor: pointer;
2036
+ font-size: 11px;
2037
+ font-weight: 600;
2038
+ color: var(--text-dim);
2039
+ padding: 5px 10px;
2040
+ border-radius: 4px 4px 0 0;
2041
+ border-bottom: 2px solid transparent;
2042
+ margin-bottom: -1px;
2043
+ transition:
2044
+ color 0.15s,
2045
+ border-color 0.15s;
2046
+ }
2047
+
2048
+ .detail-tab:hover {
2049
+ color: var(--text-muted);
2050
+ }
2051
+
2052
+ .detail-tab--active {
2053
+ color: var(--text-default);
2054
+ border-bottom-color: var(--color-accent);
2055
+ }
2056
+
2057
+ /* `all: unset` strips the UA focus ring — restore a visible indicator for
2058
+ * keyboard users (WCAG 2.4.7) on every unset button in the panel. */
2059
+ .detail-tab:focus-visible,
2060
+ .detail-panel-close:focus-visible,
2061
+ .detail-prompt-expand-btn:focus-visible {
2062
+ outline: 2px solid var(--color-accent);
2063
+ outline-offset: 2px;
2064
+ }
2065
+
1997
2066
  /* ─── Concept panel header ──────────────────────────────────────────────── */
1998
2067
 
1999
2068
  .detail-concept-code {