pdfn 0.8.7 → 0.8.9

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/cli.js CHANGED
@@ -600,6 +600,19 @@ function createPreviewHTML(templates, activeTemplate, hasCloudAccess) {
600
600
  border-right: 1px solid var(--border);
601
601
  padding: 16px;
602
602
  overflow-y: auto;
603
+ transition: width 0.15s ease, padding 0.15s ease;
604
+ }
605
+
606
+ .sidebar.collapsed {
607
+ width: 40px;
608
+ padding: 8px 0;
609
+ overflow: hidden;
610
+ }
611
+
612
+ .sidebar.collapsed .sidebar-title,
613
+ .sidebar.collapsed .template-btn,
614
+ .sidebar.collapsed .empty-state {
615
+ display: none;
603
616
  }
604
617
 
605
618
  .sidebar-title {
@@ -771,6 +784,17 @@ function createPreviewHTML(templates, activeTemplate, hasCloudAccess) {
771
784
  display: flex;
772
785
  flex-direction: column;
773
786
  overflow-y: auto;
787
+ transition: width 0.15s ease;
788
+ }
789
+
790
+ .inspector-panel.collapsed {
791
+ width: 40px;
792
+ overflow: hidden;
793
+ }
794
+
795
+ .inspector-panel.collapsed .inspector-title,
796
+ .inspector-panel.collapsed .inspector-content {
797
+ display: none;
774
798
  }
775
799
 
776
800
  .inspector-title {
@@ -1179,6 +1203,52 @@ function createPreviewHTML(templates, activeTemplate, hasCloudAccess) {
1179
1203
  word-break: break-all;
1180
1204
  }
1181
1205
 
1206
+ /* Panel toggle buttons */
1207
+ .panel-toggle {
1208
+ width: 40px;
1209
+ height: 32px;
1210
+ display: flex;
1211
+ align-items: center;
1212
+ justify-content: center;
1213
+ background: transparent;
1214
+ border: none;
1215
+ color: var(--text-muted);
1216
+ cursor: pointer;
1217
+ flex-shrink: 0;
1218
+ transition: color 0.15s;
1219
+ }
1220
+
1221
+ .panel-toggle:hover {
1222
+ color: var(--text);
1223
+ }
1224
+
1225
+ .sidebar .panel-toggle {
1226
+ margin: -8px -8px 8px -8px;
1227
+ }
1228
+
1229
+ .sidebar.collapsed .panel-toggle {
1230
+ margin: 0 auto 0 auto;
1231
+ }
1232
+
1233
+ .inspector-panel .panel-toggle {
1234
+ margin-left: auto;
1235
+ margin-right: 4px;
1236
+ }
1237
+
1238
+ .inspector-panel.collapsed .panel-toggle {
1239
+ margin: 4px auto;
1240
+ }
1241
+
1242
+ .inspector-toggle-row {
1243
+ display: flex;
1244
+ align-items: center;
1245
+ border-bottom: 1px solid var(--border);
1246
+ }
1247
+
1248
+ .inspector-panel.collapsed .inspector-toggle-row {
1249
+ border-bottom: none;
1250
+ }
1251
+
1182
1252
  /* Buttons */
1183
1253
  .btn {
1184
1254
  padding: 6px 10px;
@@ -1280,7 +1350,12 @@ function createPreviewHTML(templates, activeTemplate, hasCloudAccess) {
1280
1350
  </header>
1281
1351
 
1282
1352
  <div class="container">
1283
- <aside class="sidebar">
1353
+ <aside class="sidebar" id="sidebar">
1354
+ <button class="panel-toggle" id="sidebar-toggle" title="Toggle sidebar (${"`"}Cmd+B${"`"})">
1355
+ <svg width="16" height="16" fill="none" stroke="currentColor" viewBox="0 0 24 24">
1356
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/>
1357
+ </svg>
1358
+ </button>
1284
1359
  <div class="sidebar-title">Templates</div>
1285
1360
  ${templates.length > 0 ? templateList : '<div class="empty-state"><p>No templates found</p><code>pdfn add invoice</code></div>'}
1286
1361
  </aside>
@@ -1340,6 +1415,13 @@ function createPreviewHTML(templates, activeTemplate, hasCloudAccess) {
1340
1415
 
1341
1416
  <!-- Inspector panel: right side -->
1342
1417
  <aside class="inspector-panel" id="inspector-panel">
1418
+ <div class="inspector-toggle-row">
1419
+ <button class="panel-toggle" id="inspector-toggle" title="Toggle inspector (${"`"}Cmd+J${"`"})">
1420
+ <svg width="16" height="16" fill="none" stroke="currentColor" viewBox="0 0 24 24">
1421
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
1422
+ </svg>
1423
+ </button>
1424
+ </div>
1343
1425
  <div class="inspector-title">Inspector</div>
1344
1426
  <div class="inspector-content">
1345
1427
  <div class="inspector-section">
@@ -1463,7 +1545,9 @@ function createPreviewHTML(templates, activeTemplate, hasCloudAccess) {
1463
1545
  breaks: false,
1464
1546
  },
1465
1547
  a11yExpanded: true,
1466
- consoleExpanded: true
1548
+ consoleExpanded: true,
1549
+ sidebarCollapsed: false,
1550
+ inspectorCollapsed: false
1467
1551
  };
1468
1552
 
1469
1553
  // Console messages
@@ -1516,6 +1600,10 @@ function createPreviewHTML(templates, activeTemplate, hasCloudAccess) {
1516
1600
  consoleContent.style.display = 'none';
1517
1601
  consoleToggle.classList.add('collapsed');
1518
1602
  }
1603
+
1604
+ // Panel collapsed state
1605
+ applySidebarState();
1606
+ applyInspectorState();
1519
1607
  }
1520
1608
 
1521
1609
  // Toggle accessibility expanded state
@@ -1532,6 +1620,48 @@ function createPreviewHTML(templates, activeTemplate, hasCloudAccess) {
1532
1620
  applyState();
1533
1621
  }
1534
1622
 
1623
+ // Toggle sidebar collapsed state
1624
+ function toggleSidebar() {
1625
+ inspectorState.sidebarCollapsed = !inspectorState.sidebarCollapsed;
1626
+ saveState();
1627
+ applySidebarState();
1628
+ }
1629
+
1630
+ // Toggle inspector collapsed state
1631
+ function toggleInspector() {
1632
+ inspectorState.inspectorCollapsed = !inspectorState.inspectorCollapsed;
1633
+ saveState();
1634
+ applyInspectorState();
1635
+ }
1636
+
1637
+ function applySidebarState() {
1638
+ const sidebar = document.getElementById('sidebar');
1639
+ const toggleBtn = document.getElementById('sidebar-toggle');
1640
+ if (inspectorState.sidebarCollapsed) {
1641
+ sidebar.classList.add('collapsed');
1642
+ toggleBtn.innerHTML = '<svg width="16" height="16" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/></svg>';
1643
+ toggleBtn.title = 'Expand sidebar (Cmd+B)';
1644
+ } else {
1645
+ sidebar.classList.remove('collapsed');
1646
+ toggleBtn.innerHTML = '<svg width="16" height="16" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/></svg>';
1647
+ toggleBtn.title = 'Collapse sidebar (Cmd+B)';
1648
+ }
1649
+ }
1650
+
1651
+ function applyInspectorState() {
1652
+ const panel = document.getElementById('inspector-panel');
1653
+ const toggleBtn = document.getElementById('inspector-toggle');
1654
+ if (inspectorState.inspectorCollapsed) {
1655
+ panel.classList.add('collapsed');
1656
+ toggleBtn.innerHTML = '<svg width="16" height="16" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/></svg>';
1657
+ toggleBtn.title = 'Expand inspector (Cmd+J)';
1658
+ } else {
1659
+ panel.classList.remove('collapsed');
1660
+ toggleBtn.innerHTML = '<svg width="16" height="16" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/></svg>';
1661
+ toggleBtn.title = 'Collapse inspector (Cmd+J)';
1662
+ }
1663
+ }
1664
+
1535
1665
  // Add console message
1536
1666
  function addConsoleMessage(type, message) {
1537
1667
  consoleMessages.push({ type, message });
@@ -1623,10 +1753,12 @@ function createPreviewHTML(templates, activeTemplate, hasCloudAccess) {
1623
1753
  // Update template list in sidebar (called when templates are added/removed)
1624
1754
  function updateTemplateList(templates) {
1625
1755
  const sidebar = document.querySelector('.sidebar');
1756
+ const toggleBtn = document.getElementById('sidebar-toggle');
1626
1757
  const titleEl = sidebar.querySelector('.sidebar-title');
1627
1758
 
1628
1759
  // Clear existing buttons
1629
1760
  sidebar.innerHTML = '';
1761
+ sidebar.appendChild(toggleBtn);
1630
1762
  sidebar.appendChild(titleEl);
1631
1763
 
1632
1764
  if (templates.length === 0) {
@@ -2006,6 +2138,24 @@ function createPreviewHTML(templates, activeTemplate, hasCloudAccess) {
2006
2138
  // Console header click handler
2007
2139
  document.getElementById('console-header').onclick = toggleConsole;
2008
2140
 
2141
+ // Panel toggle click handlers
2142
+ document.getElementById('sidebar-toggle').onclick = toggleSidebar;
2143
+ document.getElementById('inspector-toggle').onclick = toggleInspector;
2144
+
2145
+ // Keyboard shortcuts for panel toggles
2146
+ document.addEventListener('keydown', function(e) {
2147
+ // Cmd/Ctrl+B \u2014 toggle sidebar
2148
+ if ((e.metaKey || e.ctrlKey) && e.key === 'b') {
2149
+ e.preventDefault();
2150
+ toggleSidebar();
2151
+ }
2152
+ // Cmd/Ctrl+J \u2014 toggle inspector
2153
+ if ((e.metaKey || e.ctrlKey) && e.key === 'j') {
2154
+ e.preventDefault();
2155
+ toggleInspector();
2156
+ }
2157
+ });
2158
+
2009
2159
  let resizeTimeout;
2010
2160
  window.addEventListener('resize', () => {
2011
2161
  clearTimeout(resizeTimeout);