flexdesk 0.8.0 → 0.9.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.
package/README.md CHANGED
@@ -122,6 +122,7 @@ await createShell({
122
122
  backToOpenList: true, // Back in a record opened beside its list closes onto that list
123
123
  floatActiveTab: true, // floating a tile takes the tab on screen, not the whole pane
124
124
  tabLayout: 'header', // tabs in the tile header, in place of its title, with a + (0.8.0)
125
+ newTabButton: false, // …and without the + (0.8.1)
125
126
  chrome: {
126
127
  topNav: document.getElementById('nav'),
127
128
  zoom: document.getElementById('status-bar'), // content zoom, 50–200%
@@ -129,6 +130,38 @@ await createShell({
129
130
  });
130
131
  ```
131
132
 
133
+ ### The palette that finds anything (0.9.0)
134
+
135
+ Ctrl+K's grouped layout. Every option is off unless you pass it, so a shell that
136
+ passes none of them keeps the chip strip, the panel toggles and the flat list:
137
+
138
+ ```js
139
+ await createShell({
140
+ // …everything above…
141
+ palette: {
142
+ placeholder: 'Search everything…',
143
+ layout: 'grouped', // a header per kind, matches marked
144
+ chrome: { pages: false, panels: false }, // nothing between the input and the results
145
+ groupCap: 4, // then "Show all N", which scopes to the kind
146
+ cache: true, // a re-open draws the last catalogue at once
147
+ empty: async () => recentRows(), // shown before anything is typed, under "Recent"
148
+ commands: () => commandRows(), // `{label, action}`; `>` restricts to them
149
+ drill: (pick) => pick.kind === 'planet' // Tab on a row enters a scope
150
+ ? { label: `${pick.label} › moons`, search: (q, signal) => findMoons(pick.id, q, signal) }
151
+ : null,
152
+ onPick: (pick, { mode, scope }) => openSomewhere(pick, mode), // 'open' | 'split' | 'window'
153
+ },
154
+ });
155
+ ```
156
+
157
+ A row may carry `context` (drawn, not searched), `keywords` (searched, not
158
+ drawn), `modes` (which of `split`/`window` its keys offer), `drillLabel` (the Tab
159
+ hint), `boost`, `group`/`groupLabel`, `kindLabel`, `shortcut` and `verb`. A group's
160
+ header is the taxonomy's `plural` for the kind, else its `label`. Matching ranks
161
+ exact, prefix, word starts (`ord li` finds *Order lines*), substring, then a tight
162
+ subsequence. A drill's `search` is debounced, and a stale answer is aborted and
163
+ never drawn. `palette.invalidate()` drops the cache.
164
+
132
165
  **`chrome.zoom`** paints a − / track / + / readout control into the element you
133
166
  pass, restores the saved zoom through the host's `state` capability, and scales
134
167
  the content of tiles and floating windows. It deliberately scales *content only*
@@ -158,6 +191,7 @@ editor tab bar between the header and the body, also from two tabs.
158
191
  `'header'` (0.8.0) puts that tab bar inside the header in place of the title,
159
192
  on every tile, one tab included, with a `+` after the last tab that opens the
160
193
  taxonomy root in a new tab (`wm.newTab(leafId)`, the same seed a split uses).
194
+ Pass `newTabButton: false` (0.8.1) to leave the `+` out.
161
195
  A panel tile has no tabs and keeps its title. Under `'header'` the tab, not
162
196
  the header, is what you drag to move a single-tab pane; the empty part of the
163
197
  header still floats the pane on a pull-down or a double-click. Set
package/css/flexdesk.css CHANGED
@@ -6684,6 +6684,133 @@ body.twm-dragging * { user-select: none; }
6684
6684
  margin: 0 1px;
6685
6685
  }
6686
6686
 
6687
+ /* ── C39: the grouped layout (`layout: 'grouped'`) ───────────────────────
6688
+ * Everything here is under `--grouped`, so the flat palette above draws
6689
+ * exactly as it did. Rows are three columns: icon, the label with its
6690
+ * context, and a right side that shows the kind — or, on the active row,
6691
+ * the keys that act on it. */
6692
+ .twm-cmdpal--grouped {
6693
+ width: min(680px, calc(100vw - 32px));
6694
+ max-height: 76vh;
6695
+ border-color: var(--border-strong);
6696
+ }
6697
+ .twm-cmdpal-overlay--grouped { padding-top: 11vh; }
6698
+ .twm-cmdpal--grouped .twm-cmdpal__inputrow {
6699
+ padding: var(--space-md) var(--space-lg);
6700
+ border-bottom-color: var(--border-default);
6701
+ }
6702
+ .twm-cmdpal__search-icon,
6703
+ .twm-cmdpal__search-icon.material-symbols-outlined { color: var(--text-muted); font-size: 20px; }
6704
+ .twm-cmdpal--grouped .twm-cmdpal__input { font-size: var(--font-size-xl); color: var(--text-bright); }
6705
+ .twm-cmdpal--grouped .twm-cmdpal__input::placeholder { color: var(--text-muted); }
6706
+ .twm-cmdpal--grouped .twm-cmdpal__type-chip-label--scope { text-transform: none; letter-spacing: 0; }
6707
+ .twm-cmdpal__esc,
6708
+ .twm-cmdpal--grouped kbd {
6709
+ display: inline-block;
6710
+ padding: 1px 4px;
6711
+ background: var(--surface-2);
6712
+ border: 1px solid var(--border-default);
6713
+ border-radius: 0;
6714
+ color: var(--text-secondary);
6715
+ font-family: var(--font-family-mono);
6716
+ font-size: 10px;
6717
+ line-height: 1.3;
6718
+ }
6719
+ .twm-cmdpal--grouped .twm-cmdpal__list {
6720
+ flex: 1 1 auto;
6721
+ max-height: none;
6722
+ min-height: 0;
6723
+ padding: var(--space-xs) 0;
6724
+ }
6725
+ .twm-cmdpal__group {
6726
+ padding: 10px var(--space-lg) 4px;
6727
+ color: var(--text-muted);
6728
+ font-size: var(--font-size-xs);
6729
+ text-transform: uppercase;
6730
+ letter-spacing: 0.06em;
6731
+ }
6732
+ .twm-cmdpal--grouped .twm-cmdpal__item {
6733
+ grid-template-columns: 20px minmax(0, 1fr) auto;
6734
+ gap: 10px;
6735
+ padding: 5px var(--space-lg);
6736
+ font-size: var(--font-size-md);
6737
+ }
6738
+ /* The flat layout highlights on :hover; here the pointer MOVES the active
6739
+ * row instead, so a hover tint would be a second, disagreeing highlight. */
6740
+ .twm-cmdpal--grouped .twm-cmdpal__item:hover:not(.twm-cmdpal__item--active) { background: transparent; color: var(--text-secondary); }
6741
+ .twm-cmdpal--grouped .twm-cmdpal__item--active {
6742
+ background: var(--state-selected);
6743
+ color: var(--text-bright);
6744
+ box-shadow: inset 2px 0 0 var(--accent-bright);
6745
+ }
6746
+ .twm-cmdpal--grouped .twm-cmdpal__item--active .twm-cmdpal__icon { color: var(--text-bright); }
6747
+ .twm-cmdpal__main {
6748
+ min-width: 0;
6749
+ display: flex;
6750
+ align-items: baseline;
6751
+ gap: var(--space-sm);
6752
+ }
6753
+ .twm-cmdpal--grouped .twm-cmdpal__label {
6754
+ font-weight: 400;
6755
+ white-space: nowrap;
6756
+ overflow: hidden;
6757
+ text-overflow: ellipsis;
6758
+ flex: 0 1 auto;
6759
+ min-width: 0;
6760
+ }
6761
+ .twm-cmdpal__label mark {
6762
+ background: none;
6763
+ color: var(--twm-cmdpal-match);
6764
+ font-weight: var(--font-weight-semibold);
6765
+ }
6766
+ .twm-cmdpal__context,
6767
+ .twm-cmdpal__cells {
6768
+ color: var(--text-muted);
6769
+ font-size: var(--font-size-xs);
6770
+ white-space: nowrap;
6771
+ overflow: hidden;
6772
+ text-overflow: ellipsis;
6773
+ min-width: 0;
6774
+ flex: 0 10 auto;
6775
+ }
6776
+ .twm-cmdpal__cells { font-family: var(--font-family-mono); }
6777
+ .twm-cmdpal__side {
6778
+ display: flex;
6779
+ align-items: center;
6780
+ gap: 10px;
6781
+ color: var(--text-muted);
6782
+ font-size: var(--font-size-xs);
6783
+ white-space: nowrap;
6784
+ }
6785
+ .twm-cmdpal__acts { display: none; gap: 10px; }
6786
+ .twm-cmdpal__item--active .twm-cmdpal__acts { display: flex; }
6787
+ .twm-cmdpal__item--active .twm-cmdpal__kind,
6788
+ .twm-cmdpal__item--active .twm-cmdpal__shortcut { display: none; }
6789
+ .twm-cmdpal__item--more { color: var(--text-muted); font-size: var(--font-size-sm); }
6790
+ .twm-cmdpal__empty {
6791
+ padding: 24px var(--space-lg);
6792
+ color: var(--text-muted);
6793
+ text-align: center;
6794
+ }
6795
+ .twm-cmdpal__empty--quiet { padding: 6px var(--space-lg); text-align: left; font-size: var(--font-size-xs); }
6796
+ .twm-cmdpal__tips {
6797
+ display: flex;
6798
+ flex-wrap: wrap;
6799
+ gap: 6px 16px;
6800
+ margin-top: var(--space-xs);
6801
+ padding: 10px var(--space-lg) var(--space-sm);
6802
+ border-top: 1px solid var(--border-subtle);
6803
+ color: var(--text-muted);
6804
+ font-size: var(--font-size-xs);
6805
+ }
6806
+ .twm-cmdpal--grouped .twm-cmdpal__footer { flex-wrap: wrap; row-gap: 2px; }
6807
+ .twm-cmdpal__footnote { margin-left: auto; color: var(--text-muted); }
6808
+ @media (max-width: 560px) {
6809
+ .twm-cmdpal__context { display: none; }
6810
+ .twm-cmdpal__acts > span:not(:first-child) { display: none; }
6811
+ .twm-cmdpal__footnote { display: none; }
6812
+ }
6813
+
6687
6814
  /* ── from tiling/nav.css ───────────────────────── */
6688
6815
  /* nav.css — left-nav panel-tile (project / files / git). */
6689
6816
 
package/css/overrides.css CHANGED
@@ -1517,6 +1517,133 @@ body.twm-dragging * { user-select: none; }
1517
1517
  margin: 0 1px;
1518
1518
  }
1519
1519
 
1520
+ /* ── C39: the grouped layout (`layout: 'grouped'`) ───────────────────────
1521
+ * Everything here is under `--grouped`, so the flat palette above draws
1522
+ * exactly as it did. Rows are three columns: icon, the label with its
1523
+ * context, and a right side that shows the kind — or, on the active row,
1524
+ * the keys that act on it. */
1525
+ .twm-cmdpal--grouped {
1526
+ width: min(680px, calc(100vw - 32px));
1527
+ max-height: 76vh;
1528
+ border-color: var(--border-strong);
1529
+ }
1530
+ .twm-cmdpal-overlay--grouped { padding-top: 11vh; }
1531
+ .twm-cmdpal--grouped .twm-cmdpal__inputrow {
1532
+ padding: var(--space-md) var(--space-lg);
1533
+ border-bottom-color: var(--border-default);
1534
+ }
1535
+ .twm-cmdpal__search-icon,
1536
+ .twm-cmdpal__search-icon.material-symbols-outlined { color: var(--text-muted); font-size: 20px; }
1537
+ .twm-cmdpal--grouped .twm-cmdpal__input { font-size: var(--font-size-xl); color: var(--text-bright); }
1538
+ .twm-cmdpal--grouped .twm-cmdpal__input::placeholder { color: var(--text-muted); }
1539
+ .twm-cmdpal--grouped .twm-cmdpal__type-chip-label--scope { text-transform: none; letter-spacing: 0; }
1540
+ .twm-cmdpal__esc,
1541
+ .twm-cmdpal--grouped kbd {
1542
+ display: inline-block;
1543
+ padding: 1px 4px;
1544
+ background: var(--surface-2);
1545
+ border: 1px solid var(--border-default);
1546
+ border-radius: 0;
1547
+ color: var(--text-secondary);
1548
+ font-family: var(--font-family-mono);
1549
+ font-size: 10px;
1550
+ line-height: 1.3;
1551
+ }
1552
+ .twm-cmdpal--grouped .twm-cmdpal__list {
1553
+ flex: 1 1 auto;
1554
+ max-height: none;
1555
+ min-height: 0;
1556
+ padding: var(--space-xs) 0;
1557
+ }
1558
+ .twm-cmdpal__group {
1559
+ padding: 10px var(--space-lg) 4px;
1560
+ color: var(--text-muted);
1561
+ font-size: var(--font-size-xs);
1562
+ text-transform: uppercase;
1563
+ letter-spacing: 0.06em;
1564
+ }
1565
+ .twm-cmdpal--grouped .twm-cmdpal__item {
1566
+ grid-template-columns: 20px minmax(0, 1fr) auto;
1567
+ gap: 10px;
1568
+ padding: 5px var(--space-lg);
1569
+ font-size: var(--font-size-md);
1570
+ }
1571
+ /* The flat layout highlights on :hover; here the pointer MOVES the active
1572
+ * row instead, so a hover tint would be a second, disagreeing highlight. */
1573
+ .twm-cmdpal--grouped .twm-cmdpal__item:hover:not(.twm-cmdpal__item--active) { background: transparent; color: var(--text-secondary); }
1574
+ .twm-cmdpal--grouped .twm-cmdpal__item--active {
1575
+ background: var(--state-selected);
1576
+ color: var(--text-bright);
1577
+ box-shadow: inset 2px 0 0 var(--accent-bright);
1578
+ }
1579
+ .twm-cmdpal--grouped .twm-cmdpal__item--active .twm-cmdpal__icon { color: var(--text-bright); }
1580
+ .twm-cmdpal__main {
1581
+ min-width: 0;
1582
+ display: flex;
1583
+ align-items: baseline;
1584
+ gap: var(--space-sm);
1585
+ }
1586
+ .twm-cmdpal--grouped .twm-cmdpal__label {
1587
+ font-weight: 400;
1588
+ white-space: nowrap;
1589
+ overflow: hidden;
1590
+ text-overflow: ellipsis;
1591
+ flex: 0 1 auto;
1592
+ min-width: 0;
1593
+ }
1594
+ .twm-cmdpal__label mark {
1595
+ background: none;
1596
+ color: var(--twm-cmdpal-match);
1597
+ font-weight: var(--font-weight-semibold);
1598
+ }
1599
+ .twm-cmdpal__context,
1600
+ .twm-cmdpal__cells {
1601
+ color: var(--text-muted);
1602
+ font-size: var(--font-size-xs);
1603
+ white-space: nowrap;
1604
+ overflow: hidden;
1605
+ text-overflow: ellipsis;
1606
+ min-width: 0;
1607
+ flex: 0 10 auto;
1608
+ }
1609
+ .twm-cmdpal__cells { font-family: var(--font-family-mono); }
1610
+ .twm-cmdpal__side {
1611
+ display: flex;
1612
+ align-items: center;
1613
+ gap: 10px;
1614
+ color: var(--text-muted);
1615
+ font-size: var(--font-size-xs);
1616
+ white-space: nowrap;
1617
+ }
1618
+ .twm-cmdpal__acts { display: none; gap: 10px; }
1619
+ .twm-cmdpal__item--active .twm-cmdpal__acts { display: flex; }
1620
+ .twm-cmdpal__item--active .twm-cmdpal__kind,
1621
+ .twm-cmdpal__item--active .twm-cmdpal__shortcut { display: none; }
1622
+ .twm-cmdpal__item--more { color: var(--text-muted); font-size: var(--font-size-sm); }
1623
+ .twm-cmdpal__empty {
1624
+ padding: 24px var(--space-lg);
1625
+ color: var(--text-muted);
1626
+ text-align: center;
1627
+ }
1628
+ .twm-cmdpal__empty--quiet { padding: 6px var(--space-lg); text-align: left; font-size: var(--font-size-xs); }
1629
+ .twm-cmdpal__tips {
1630
+ display: flex;
1631
+ flex-wrap: wrap;
1632
+ gap: 6px 16px;
1633
+ margin-top: var(--space-xs);
1634
+ padding: 10px var(--space-lg) var(--space-sm);
1635
+ border-top: 1px solid var(--border-subtle);
1636
+ color: var(--text-muted);
1637
+ font-size: var(--font-size-xs);
1638
+ }
1639
+ .twm-cmdpal--grouped .twm-cmdpal__footer { flex-wrap: wrap; row-gap: 2px; }
1640
+ .twm-cmdpal__footnote { margin-left: auto; color: var(--text-muted); }
1641
+ @media (max-width: 560px) {
1642
+ .twm-cmdpal__context { display: none; }
1643
+ .twm-cmdpal__acts > span:not(:first-child) { display: none; }
1644
+ .twm-cmdpal__footnote { display: none; }
1645
+ }
1646
+
1520
1647
  /* ── from tiling/nav.css ───────────────────────── */
1521
1648
  /* nav.css — left-nav panel-tile (project / files / git). */
1522
1649
 
package/css/tokens.css CHANGED
@@ -256,6 +256,8 @@
256
256
  --twm-flow-control-border: #454545;
257
257
  --twm-flow-muted: #a6a6a6;
258
258
  --twm-flow-focus: var(--accent-bright);
259
+ /* C39: a matched character in the command palette (grouped layout). */
260
+ --twm-cmdpal-match: #4fc1ff;
259
261
  --twm-flow-error: #f48771;
260
262
  --twm-flow-error-bg: rgba(244, 135, 113, 0.09);
261
263
  --twm-flow-error-line: rgba(244, 135, 113, 0.35);
package/dist/flexdesk.css CHANGED
@@ -6684,6 +6684,133 @@ body.twm-dragging * { user-select: none; }
6684
6684
  margin: 0 1px;
6685
6685
  }
6686
6686
 
6687
+ /* ── C39: the grouped layout (`layout: 'grouped'`) ───────────────────────
6688
+ * Everything here is under `--grouped`, so the flat palette above draws
6689
+ * exactly as it did. Rows are three columns: icon, the label with its
6690
+ * context, and a right side that shows the kind — or, on the active row,
6691
+ * the keys that act on it. */
6692
+ .twm-cmdpal--grouped {
6693
+ width: min(680px, calc(100vw - 32px));
6694
+ max-height: 76vh;
6695
+ border-color: var(--border-strong);
6696
+ }
6697
+ .twm-cmdpal-overlay--grouped { padding-top: 11vh; }
6698
+ .twm-cmdpal--grouped .twm-cmdpal__inputrow {
6699
+ padding: var(--space-md) var(--space-lg);
6700
+ border-bottom-color: var(--border-default);
6701
+ }
6702
+ .twm-cmdpal__search-icon,
6703
+ .twm-cmdpal__search-icon.material-symbols-outlined { color: var(--text-muted); font-size: 20px; }
6704
+ .twm-cmdpal--grouped .twm-cmdpal__input { font-size: var(--font-size-xl); color: var(--text-bright); }
6705
+ .twm-cmdpal--grouped .twm-cmdpal__input::placeholder { color: var(--text-muted); }
6706
+ .twm-cmdpal--grouped .twm-cmdpal__type-chip-label--scope { text-transform: none; letter-spacing: 0; }
6707
+ .twm-cmdpal__esc,
6708
+ .twm-cmdpal--grouped kbd {
6709
+ display: inline-block;
6710
+ padding: 1px 4px;
6711
+ background: var(--surface-2);
6712
+ border: 1px solid var(--border-default);
6713
+ border-radius: 0;
6714
+ color: var(--text-secondary);
6715
+ font-family: var(--font-family-mono);
6716
+ font-size: 10px;
6717
+ line-height: 1.3;
6718
+ }
6719
+ .twm-cmdpal--grouped .twm-cmdpal__list {
6720
+ flex: 1 1 auto;
6721
+ max-height: none;
6722
+ min-height: 0;
6723
+ padding: var(--space-xs) 0;
6724
+ }
6725
+ .twm-cmdpal__group {
6726
+ padding: 10px var(--space-lg) 4px;
6727
+ color: var(--text-muted);
6728
+ font-size: var(--font-size-xs);
6729
+ text-transform: uppercase;
6730
+ letter-spacing: 0.06em;
6731
+ }
6732
+ .twm-cmdpal--grouped .twm-cmdpal__item {
6733
+ grid-template-columns: 20px minmax(0, 1fr) auto;
6734
+ gap: 10px;
6735
+ padding: 5px var(--space-lg);
6736
+ font-size: var(--font-size-md);
6737
+ }
6738
+ /* The flat layout highlights on :hover; here the pointer MOVES the active
6739
+ * row instead, so a hover tint would be a second, disagreeing highlight. */
6740
+ .twm-cmdpal--grouped .twm-cmdpal__item:hover:not(.twm-cmdpal__item--active) { background: transparent; color: var(--text-secondary); }
6741
+ .twm-cmdpal--grouped .twm-cmdpal__item--active {
6742
+ background: var(--state-selected);
6743
+ color: var(--text-bright);
6744
+ box-shadow: inset 2px 0 0 var(--accent-bright);
6745
+ }
6746
+ .twm-cmdpal--grouped .twm-cmdpal__item--active .twm-cmdpal__icon { color: var(--text-bright); }
6747
+ .twm-cmdpal__main {
6748
+ min-width: 0;
6749
+ display: flex;
6750
+ align-items: baseline;
6751
+ gap: var(--space-sm);
6752
+ }
6753
+ .twm-cmdpal--grouped .twm-cmdpal__label {
6754
+ font-weight: 400;
6755
+ white-space: nowrap;
6756
+ overflow: hidden;
6757
+ text-overflow: ellipsis;
6758
+ flex: 0 1 auto;
6759
+ min-width: 0;
6760
+ }
6761
+ .twm-cmdpal__label mark {
6762
+ background: none;
6763
+ color: var(--twm-cmdpal-match);
6764
+ font-weight: var(--font-weight-semibold);
6765
+ }
6766
+ .twm-cmdpal__context,
6767
+ .twm-cmdpal__cells {
6768
+ color: var(--text-muted);
6769
+ font-size: var(--font-size-xs);
6770
+ white-space: nowrap;
6771
+ overflow: hidden;
6772
+ text-overflow: ellipsis;
6773
+ min-width: 0;
6774
+ flex: 0 10 auto;
6775
+ }
6776
+ .twm-cmdpal__cells { font-family: var(--font-family-mono); }
6777
+ .twm-cmdpal__side {
6778
+ display: flex;
6779
+ align-items: center;
6780
+ gap: 10px;
6781
+ color: var(--text-muted);
6782
+ font-size: var(--font-size-xs);
6783
+ white-space: nowrap;
6784
+ }
6785
+ .twm-cmdpal__acts { display: none; gap: 10px; }
6786
+ .twm-cmdpal__item--active .twm-cmdpal__acts { display: flex; }
6787
+ .twm-cmdpal__item--active .twm-cmdpal__kind,
6788
+ .twm-cmdpal__item--active .twm-cmdpal__shortcut { display: none; }
6789
+ .twm-cmdpal__item--more { color: var(--text-muted); font-size: var(--font-size-sm); }
6790
+ .twm-cmdpal__empty {
6791
+ padding: 24px var(--space-lg);
6792
+ color: var(--text-muted);
6793
+ text-align: center;
6794
+ }
6795
+ .twm-cmdpal__empty--quiet { padding: 6px var(--space-lg); text-align: left; font-size: var(--font-size-xs); }
6796
+ .twm-cmdpal__tips {
6797
+ display: flex;
6798
+ flex-wrap: wrap;
6799
+ gap: 6px 16px;
6800
+ margin-top: var(--space-xs);
6801
+ padding: 10px var(--space-lg) var(--space-sm);
6802
+ border-top: 1px solid var(--border-subtle);
6803
+ color: var(--text-muted);
6804
+ font-size: var(--font-size-xs);
6805
+ }
6806
+ .twm-cmdpal--grouped .twm-cmdpal__footer { flex-wrap: wrap; row-gap: 2px; }
6807
+ .twm-cmdpal__footnote { margin-left: auto; color: var(--text-muted); }
6808
+ @media (max-width: 560px) {
6809
+ .twm-cmdpal__context { display: none; }
6810
+ .twm-cmdpal__acts > span:not(:first-child) { display: none; }
6811
+ .twm-cmdpal__footnote { display: none; }
6812
+ }
6813
+
6687
6814
  /* ── from tiling/nav.css ───────────────────────── */
6688
6815
  /* nav.css — left-nav panel-tile (project / files / git). */
6689
6816
 
package/dist/tokens.css CHANGED
@@ -256,6 +256,8 @@
256
256
  --twm-flow-control-border: #454545;
257
257
  --twm-flow-muted: #a6a6a6;
258
258
  --twm-flow-focus: var(--accent-bright);
259
+ /* C39: a matched character in the command palette (grouped layout). */
260
+ --twm-cmdpal-match: #4fc1ff;
259
261
  --twm-flow-error: #f48771;
260
262
  --twm-flow-error-bg: rgba(244, 135, 113, 0.09);
261
263
  --twm-flow-error-line: rgba(244, 135, 113, 0.35);