@a83/orbiter-admin 0.3.17 → 0.3.19

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.17",
3
+ "version": "0.3.19",
4
4
  "description": "Standalone admin server for Orbiter CMS",
5
5
  "type": "module",
6
6
  "main": "./src/server.js",
package/public/router.js CHANGED
@@ -24,7 +24,10 @@
24
24
  function updateActiveNav(href) {
25
25
  var target;
26
26
  try { target = new URL(href, location.origin); } catch (e) { return; }
27
- document.querySelectorAll('.nav-item').forEach(function (a) {
27
+ var pg = target.pathname.split('/').pop().replace('.html', '');
28
+
29
+ // Update classic sidebar + xfce dock/HUD link items
30
+ document.querySelectorAll('.nav-item, a.xfce-dock-item, a.xfce-hud-nav-item, a.xfce-tools-item').forEach(function (a) {
28
31
  var raw = a.getAttribute('href');
29
32
  if (!raw) return;
30
33
  var itemUrl;
@@ -37,6 +40,12 @@
37
40
  }
38
41
  a.classList.toggle('active', match);
39
42
  });
43
+
44
+ // xfce tools button is a <button> (not an <a>), update separately
45
+ var toolsBtn = document.getElementById('xfce-tools-btn');
46
+ if (toolsBtn) {
47
+ toolsBtn.classList.toggle('active', ['schema', 'build', 'import'].indexOf(pg) !== -1);
48
+ }
40
49
  }
41
50
 
42
51
  function swapPageStyle(doc) {
@@ -10,14 +10,29 @@
10
10
  <link rel="stylesheet" href="/style.css" />
11
11
  <script src="/theme.js"></script>
12
12
  <style>
13
- .settings-wrap { max-width:720px; padding-bottom:40px; }
13
+ .settings-wrap { max-width:1100px; padding-bottom:40px; }
14
+
15
+ /* Two-column grid for settings groups */
16
+ .settings-grid {
17
+ display: grid;
18
+ grid-template-columns: 1fr 1fr;
19
+ gap: 12px;
20
+ align-items: start;
21
+ margin-bottom: 12px;
22
+ }
23
+ .settings-grid .settings-group { margin-bottom: 0; }
24
+ .settings-wrap > .settings-group { margin-bottom: 12px; }
25
+
26
+ @media (max-width: 720px) {
27
+ .settings-wrap { max-width: 720px; }
28
+ .settings-grid { grid-template-columns: 1fr; }
29
+ }
14
30
 
15
31
  /* Card — einheitliches bg2, eine Farbe, kein Alternieren */
16
32
  .settings-group {
17
33
  background: var(--bg2);
18
34
  border: 1px solid var(--line);
19
35
  border-radius: 10px;
20
- margin-bottom: 12px;
21
36
  overflow: hidden;
22
37
  }
23
38
 
@@ -250,8 +265,9 @@
250
265
  </div>
251
266
  </nav>
252
267
  <main class="main">
253
- <div class="page-header glass-card">
268
+ <div class="page-header glass-card" style="display:flex;align-items:center;justify-content:space-between;">
254
269
  <h1 class="page-title">Settings</h1>
270
+ <button type="submit" form="site-form" class="btn-save" id="header-save-btn">Save settings</button>
255
271
  </div>
256
272
  <div class="settings-wrap" id="settings-content">
257
273
  <div class="empty"><div class="spinner"></div></div>
@@ -301,6 +317,7 @@
301
317
 
302
318
  <!-- Site + Build + GitHub + API — one form -->
303
319
  <form id="site-form">
320
+ <div class="settings-grid">
304
321
  <div class="settings-group">
305
322
  <div class="group-header">Site</div>
306
323
  <div class="setting-row">
@@ -485,9 +502,7 @@
485
502
  </div>
486
503
  </div>
487
504
 
488
- <div class="save-row">
489
- <button type="submit" class="btn-save">Save settings</button>
490
- </div>
505
+ </div><!-- /settings-grid -->
491
506
  </form>
492
507
 
493
508
  <!-- GitHub Sync (conditional) -->
@@ -508,8 +523,9 @@
508
523
  </div>
509
524
  ` : ''}
510
525
 
511
- <!-- Account -->
526
+ <!-- Account + Interface language (two-column) -->
512
527
  <div id="account-banner" class="banner" style="display:none"></div>
528
+ <div class="settings-grid">
513
529
  <div class="settings-group">
514
530
  <div class="group-header">Account — ${me.user.username}</div>
515
531
  <form id="pw-form">
@@ -555,8 +571,9 @@
555
571
  </div>
556
572
  </div>
557
573
  </div>
574
+ </div><!-- /settings-grid account+lang -->
558
575
 
559
- <!-- Appearance -->
576
+ <!-- Appearance (full width) -->
560
577
  <div class="settings-group">
561
578
  <div class="group-header">Appearance</div>
562
579
  <div style="padding:16px 28px;border-bottom:1px solid var(--line2)">
@@ -654,7 +671,8 @@
654
671
  </div>
655
672
  </div>
656
673
 
657
- <!-- Data + Import -->
674
+ <!-- Data + Pod (two-column) -->
675
+ <div class="settings-grid">
658
676
  <div class="settings-group">
659
677
  <div class="group-header">Data</div>
660
678
  <div class="setting-row">
@@ -666,7 +684,6 @@
666
684
  </div>
667
685
  </div>
668
686
 
669
- <!-- Pod info -->
670
687
  <div class="settings-group" id="pod-info-group">
671
688
  <div class="group-header">Pod</div>
672
689
  <div class="pod-meta">
@@ -677,6 +694,11 @@
677
694
  <div class="pod-col-row"><span class="pod-col-name" style="color:var(--muted)">Loading…</span></div>
678
695
  </div>
679
696
  </div>
697
+ </div><!-- /settings-grid data+pod -->
698
+
699
+ <div class="save-row">
700
+ <button type="submit" form="site-form" class="btn-save">Save settings</button>
701
+ </div>
680
702
 
681
703
  <!-- Support widget -->
682
704
  <div class="support-widget">
package/public/style.css CHANGED
@@ -1040,7 +1040,7 @@ html[data-style="xfce"] {
1040
1040
  --glass-shadow: 0 8px 40px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.07);
1041
1041
  --sb-h: 26px;
1042
1042
  --dock-h: 76px;
1043
- --dock-item-base: 44px;
1043
+ --dock-item-base: 50px;
1044
1044
  }
1045
1045
 
1046
1046
  html[data-style="xfce"][data-scheme="light"],
@@ -1158,8 +1158,8 @@ html[data-style="xfce"] .editor-shell {
1158
1158
  flex-direction: column;
1159
1159
  align-items: center;
1160
1160
  justify-content: flex-end;
1161
- width: var(--dock-item-base, 44px);
1162
- padding: 5px 4px 4px;
1161
+ width: var(--dock-item-base, 50px);
1162
+ padding: 8px 7px 7px;
1163
1163
  background: transparent;
1164
1164
  border: none;
1165
1165
  border-radius: 12px;
@@ -1217,7 +1217,7 @@ html[data-style="xfce"] .editor-shell {
1217
1217
  font-size: 18px;
1218
1218
  line-height: 1;
1219
1219
  display: block;
1220
- opacity: .35;
1220
+ opacity: .58;
1221
1221
  transition: filter .12s, transform .12s cubic-bezier(.34,1.5,.64,1), opacity .12s, color .12s;
1222
1222
  }
1223
1223
  .xfce-dock-item:hover .xfce-dock-icon {
@@ -1239,7 +1239,7 @@ html[data-style="xfce"] .editor-shell {
1239
1239
  color: var(--mid);
1240
1240
  white-space: nowrap;
1241
1241
  transition: color .12s, opacity .12s;
1242
- opacity: .32;
1242
+ opacity: .48;
1243
1243
  }
1244
1244
  .xfce-dock-item:hover .xfce-dock-lbl {
1245
1245
  opacity: 1;
@@ -1637,7 +1637,13 @@ html[data-style="xfce"] .table-wrap {
1637
1637
  }
1638
1638
 
1639
1639
  /* Settings / Import content: center within padded main */
1640
- html[data-style="xfce"] .settings-wrap,
1640
+ html[data-style="xfce"] .settings-wrap {
1641
+ width: 100%;
1642
+ max-width: 1100px;
1643
+ margin: 0 auto;
1644
+ padding-left: 0;
1645
+ padding-right: 0;
1646
+ }
1641
1647
  html[data-style="xfce"] .import-wrap {
1642
1648
  width: 100%;
1643
1649
  max-width: 720px;
package/public/xfce.js CHANGED
@@ -564,7 +564,7 @@
564
564
  var r = item.getBoundingClientRect();
565
565
  var mid = r.left + r.width / 2;
566
566
  var d = Math.abs(cx - mid);
567
- var s = d < 96 ? 1 + (1 - d / 96) * 0.95 : 1;
567
+ var s = d < 80 ? 1 + (1 - d / 80) * 0.50 : 1;
568
568
  item.style.setProperty('--ds', s.toFixed(3));
569
569
  });
570
570
  }
package/src/cli.js CHANGED
@@ -8,12 +8,16 @@ if (portIdx !== -1 && process.argv[portIdx + 1]) {
8
8
  process.env.PORT = process.argv[portIdx + 1];
9
9
  }
10
10
 
11
+ // When run via `npm run --workspace=...`, npm sets CWD to the workspace dir.
12
+ // INIT_CWD is where the user actually ran npm — use that as base for relative paths.
13
+ const baseCwd = process.env.INIT_CWD || process.cwd();
14
+
11
15
  // Resolve ORBITER_POD to absolute path (server.js does chdir, so must happen first)
12
16
  if (process.env.ORBITER_POD) {
13
- process.env.ORBITER_POD = resolve(process.env.ORBITER_POD);
17
+ process.env.ORBITER_POD = resolve(baseCwd, process.env.ORBITER_POD);
14
18
  } else {
15
- // Auto-detect a single .pod file in cwd
16
- const pods = readdirSync('.').filter(f => f.endsWith('.pod'));
19
+ // Auto-detect a single .pod file in the directory where npm was invoked
20
+ const pods = readdirSync(baseCwd).filter(f => f.endsWith('.pod'));
17
21
  if (pods.length === 0) {
18
22
  console.error('Error: No .pod file found in current directory.');
19
23
  console.error('Set ORBITER_POD=/path/to/content.pod or run from the directory containing your .pod file.');
@@ -21,10 +25,10 @@ if (process.env.ORBITER_POD) {
21
25
  }
22
26
  if (pods.length > 1) {
23
27
  console.error('Multiple .pod files found. Specify one with ORBITER_POD:');
24
- pods.forEach(p => console.error(' ORBITER_POD=' + resolve(p)));
28
+ pods.forEach(p => console.error(' ORBITER_POD=' + resolve(baseCwd, p)));
25
29
  process.exit(1);
26
30
  }
27
- process.env.ORBITER_POD = resolve(pods[0]);
31
+ process.env.ORBITER_POD = resolve(baseCwd, pods[0]);
28
32
  }
29
33
 
30
34
  await import('./server.js');