@a83/orbiter-admin 0.3.26 → 0.3.28

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a83/orbiter-admin",
3
- "version": "0.3.26",
3
+ "version": "0.3.28",
4
4
  "description": "Standalone admin server for Orbiter CMS",
5
5
  "type": "module",
6
6
  "main": "./src/server.js",
package/public/style.css CHANGED
@@ -1994,6 +1994,19 @@ html[data-style="xfce"] .xfce-in-focus .xfce-focus-trigger::after {
1994
1994
  text-align: center;
1995
1995
  flex-shrink: 0;
1996
1996
  }
1997
+ .xfce-tools-sep {
1998
+ height: 1px; background: var(--line); margin: 4px 6px;
1999
+ }
2000
+ .xfce-tools-palette {
2001
+ width: 100%; background: none; border: none; cursor: pointer;
2002
+ text-align: left; font-family: inherit;
2003
+ }
2004
+ .xfce-tools-kbd {
2005
+ margin-left: auto; font-family: var(--mono);
2006
+ font-size: 8px; color: var(--muted);
2007
+ background: color-mix(in srgb, var(--mid) 14%, transparent);
2008
+ padding: 2px 5px; border-radius: 3px; border: none; font-style: normal;
2009
+ }
1997
2010
 
1998
2011
  /* Status bar links & logout */
1999
2012
  a.xfce-sb-logo { text-decoration: none; color: var(--accent); }
@@ -2006,6 +2019,12 @@ a.xfce-sb-logo:hover { opacity: .8; }
2006
2019
  font-family: var(--mono); transition: color .15s;
2007
2020
  }
2008
2021
  .xfce-sb-logout:hover { color: var(--red); }
2022
+ .xfce-sb-palette-btn {
2023
+ background: none; border: none; cursor: pointer; padding: 0 1px;
2024
+ font-size: 11px; color: var(--mid); line-height: 1;
2025
+ font-family: var(--mono); transition: color .15s;
2026
+ }
2027
+ .xfce-sb-palette-btn:hover { color: var(--accent); }
2009
2028
 
2010
2029
  /* Draft badge on dock items */
2011
2030
  .xfce-dock-badge {
@@ -2043,21 +2062,38 @@ a.xfce-sb-logo:hover { opacity: .8; }
2043
2062
  /* ── Command Palette ─────────────────────────────────────── */
2044
2063
  .xfce-palette {
2045
2064
  display: none; position: fixed; inset: 0; z-index: 10000;
2046
- background: rgba(0,0,0,.55); backdrop-filter: blur(4px);
2047
- align-items: flex-start; justify-content: center;
2048
- padding-top: 12vh;
2065
+ background: rgba(0,0,0,0);
2066
+ align-items: flex-end; justify-content: center;
2067
+ padding-bottom: calc(var(--dock-h, 76px) + 28px);
2068
+ transition: background .2s;
2069
+ }
2070
+ .xfce-palette.open {
2071
+ display: flex;
2072
+ background: rgba(0,0,0,.76);
2073
+ backdrop-filter: blur(5px);
2074
+ -webkit-backdrop-filter: blur(5px);
2049
2075
  }
2050
- .xfce-palette.open { display: flex; }
2051
2076
 
2052
2077
  .xfce-palette-inner {
2053
- width: min(560px, 92vw);
2078
+ width: min(580px, 92vw);
2054
2079
  background: color-mix(in srgb, var(--bg1) 97%, transparent);
2055
- backdrop-filter: blur(8px) saturate(160%);
2056
- -webkit-backdrop-filter: blur(8px) saturate(160%);
2057
- border: 1px solid var(--line);
2080
+ backdrop-filter: blur(12px) saturate(180%);
2081
+ -webkit-backdrop-filter: blur(12px) saturate(180%);
2082
+ border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--line));
2083
+ border-top: 2px solid var(--accent);
2058
2084
  border-radius: 12px;
2059
- box-shadow: 0 24px 60px rgba(0,0,0,.5), 0 0 0 1px color-mix(in srgb,var(--accent) 20%,transparent);
2085
+ box-shadow:
2086
+ 0 -2px 0 0 color-mix(in srgb, var(--accent) 40%, transparent),
2087
+ 0 8px 48px rgba(0,0,0,.5),
2088
+ 0 0 60px color-mix(in srgb, var(--accent) 12%, transparent);
2060
2089
  overflow: hidden;
2090
+ transform: translateY(16px);
2091
+ opacity: 0;
2092
+ transition: transform .22s cubic-bezier(.34,1.15,.64,1), opacity .16s;
2093
+ }
2094
+ .xfce-palette.open .xfce-palette-inner {
2095
+ transform: translateY(0);
2096
+ opacity: 1;
2061
2097
  }
2062
2098
 
2063
2099
  .xfce-palette-bar {
package/public/xfce.js CHANGED
@@ -62,6 +62,8 @@
62
62
  '</div>',
63
63
  '<div class="xfce-sb-center" id="xfce-sb-title"></div>',
64
64
  '<div class="xfce-sb-right">',
65
+ '<button id="xfce-sb-palette-btn" class="xfce-sb-palette-btn" title="Command palette (⌘K)">⌘</button>',
66
+ '<span class="xfce-sb-div">·</span>',
65
67
  '<a id="xfce-sb-user" href="/account.html" class="xfce-sb-user-link"></a>',
66
68
  '<span class="xfce-sb-div">·</span>',
67
69
  '<button id="xfce-sb-logout" class="xfce-sb-logout" title="Log out">⏻</button>',
@@ -90,6 +92,12 @@
90
92
  fetch('/api/auth/logout', { method: 'POST', credentials: 'include' })
91
93
  .finally(function () { location.href = '/login.html'; });
92
94
  });
95
+
96
+ // Palette trigger in status bar
97
+ document.getElementById('xfce-sb-palette-btn').addEventListener('click', function (e) {
98
+ e.stopPropagation();
99
+ openPalette();
100
+ });
93
101
  }
94
102
 
95
103
  // ── HUD Meta Panel ────────────────────────────────────────────────────
@@ -146,6 +154,19 @@
146
154
  a.innerHTML = '<span class="xfce-tools-icon">' + t.icon + '</span><span>' + t.label + '</span>';
147
155
  toolsPopup.appendChild(a);
148
156
  });
157
+ // Separator
158
+ var sep = document.createElement('div');
159
+ sep.className = 'xfce-tools-sep';
160
+ toolsPopup.appendChild(sep);
161
+ // Command palette shortcut
162
+ var palBtn = el('button', 'xfce-tools-item xfce-tools-palette');
163
+ palBtn.innerHTML = '<span class="xfce-tools-icon">⌘</span><span>Palette</span><kbd class="xfce-tools-kbd">⌘K</kbd>';
164
+ palBtn.addEventListener('click', function (e) {
165
+ e.stopPropagation();
166
+ toolsPopup.classList.remove('open');
167
+ openPalette();
168
+ });
169
+ toolsPopup.appendChild(palBtn);
149
170
  document.body.appendChild(toolsPopup);
150
171
  document.addEventListener('click', function () {
151
172
  toolsPopup.classList.remove('open');
@@ -302,15 +323,25 @@
302
323
 
303
324
  function openPalette() {
304
325
  if (!palette) buildPalette();
305
- palette.classList.add('open');
326
+ palette.style.display = 'flex';
306
327
  paletteInp.value = '';
307
328
  palActive = -1;
308
329
  renderPalette('');
309
- setTimeout(function () { paletteInp.focus(); }, 30);
330
+ // double rAF so display:flex has rendered before the transition fires
331
+ requestAnimationFrame(function () {
332
+ requestAnimationFrame(function () {
333
+ palette.classList.add('open');
334
+ setTimeout(function () { paletteInp.focus(); }, 40);
335
+ });
336
+ });
310
337
  }
311
338
 
312
339
  function closePalette() {
313
- if (palette) palette.classList.remove('open');
340
+ if (!palette) return;
341
+ palette.classList.remove('open');
342
+ setTimeout(function () {
343
+ if (!palette.classList.contains('open')) palette.style.display = 'none';
344
+ }, 220);
314
345
  }
315
346
 
316
347
  // ── Toast system ──────────────────────────────────────────────────────