@decantr/cli 1.7.14 → 1.7.17

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/bin.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import "./chunk-M2DFCY3N.js";
3
- import "./chunk-WINKQSUX.js";
2
+ import "./chunk-AMP4C5NV.js";
3
+ import "./chunk-BABBST2Q.js";
4
4
  import "./chunk-QRQCPD3C.js";
@@ -14,7 +14,7 @@ import {
14
14
  scaffoldProject,
15
15
  syncRegistry,
16
16
  writeExecutionPackBundleArtifacts
17
- } from "./chunk-WINKQSUX.js";
17
+ } from "./chunk-BABBST2Q.js";
18
18
  import {
19
19
  buildGuardRegistryContext,
20
20
  scanProjectInteractions
@@ -5942,7 +5942,7 @@ async function main() {
5942
5942
  break;
5943
5943
  }
5944
5944
  case "upgrade": {
5945
- const { cmdUpgrade } = await import("./upgrade-Q7PHW34P.js");
5945
+ const { cmdUpgrade } = await import("./upgrade-ARXL7WCP.js");
5946
5946
  const applyFlag = args.includes("--apply");
5947
5947
  await cmdUpgrade(process.cwd(), { apply: applyFlag });
5948
5948
  break;
@@ -473,6 +473,9 @@ ${themeBody}
473
473
  ["padding-left", "var(--d-label-px)"],
474
474
  ["border-left", "2px solid var(--d-accent)"]
475
475
  ]);
476
+ emitRule("* + .d-label[data-anchor]", [
477
+ ["margin-top", "var(--d-section-gap, 2rem)"]
478
+ ]);
476
479
  emitRule(".d-link", [
477
480
  ["color", "var(--d-text)"],
478
481
  ["text-decoration", "none"],
@@ -763,12 +766,60 @@ ${themeBody}
763
766
  lines.push(" bottom: 0;");
764
767
  lines.push(" z-index: 50;");
765
768
  lines.push(" transform: translateX(-100%);");
769
+ lines.push(" box-shadow: var(--d-elevation-4, 0 8px 24px rgba(0,0,0,0.25));");
766
770
  lines.push(" }");
767
771
  lines.push(' .d-shell-sidebar[data-mobile-open="true"] {');
768
772
  lines.push(" transform: translateX(0);");
769
773
  lines.push(" }");
770
774
  lines.push("}");
771
775
  lines.push("");
776
+ emitRule(".d-shell-mobile-trigger", [
777
+ ["display", "none"],
778
+ ["align-items", "center"],
779
+ ["justify-content", "center"],
780
+ ["width", "36px"],
781
+ ["height", "36px"],
782
+ ["border", "1px solid var(--d-border)"],
783
+ ["border-radius", "var(--d-radius-sm)"],
784
+ ["background", "transparent"],
785
+ ["color", "var(--d-text)"],
786
+ ["cursor", "pointer"],
787
+ ["flex-shrink", "0"],
788
+ [
789
+ "transition",
790
+ "background var(--d-motion-fast, 150ms) var(--d-motion-ease-out, cubic-bezier(0,0,0.2,1)), border-color var(--d-motion-fast, 150ms) var(--d-motion-ease-out, cubic-bezier(0,0,0.2,1))"
791
+ ]
792
+ ]);
793
+ emitRule(".d-shell-mobile-trigger:hover", [
794
+ ["background", "var(--d-surface)"],
795
+ ["border-color", "var(--d-primary)"]
796
+ ]);
797
+ emitRule(".d-shell-mobile-trigger:focus-visible", [
798
+ ["outline", "2px solid var(--d-primary)"],
799
+ ["outline-offset", "2px"]
800
+ ]);
801
+ emitRule(".d-shell-mobile-backdrop", [
802
+ ["display", "none"],
803
+ ["position", "fixed"],
804
+ ["inset", "0"],
805
+ ["z-index", "49"],
806
+ ["background", "color-mix(in srgb, var(--d-bg) 60%, transparent)"],
807
+ ["backdrop-filter", "blur(2px)"],
808
+ ["-webkit-backdrop-filter", "blur(2px)"],
809
+ [
810
+ "transition",
811
+ "opacity var(--d-motion-fast, 150ms) var(--d-motion-ease-out, cubic-bezier(0,0,0.2,1))"
812
+ ]
813
+ ]);
814
+ lines.push("@media (max-width: 767.98px) {");
815
+ lines.push(" .d-shell-mobile-trigger {");
816
+ lines.push(" display: inline-flex;");
817
+ lines.push(" }");
818
+ lines.push(' .d-shell-mobile-backdrop[data-visible="true"] {');
819
+ lines.push(" display: block;");
820
+ lines.push(" }");
821
+ lines.push("}");
822
+ lines.push("");
772
823
  emitRule(".d-shell-main", [
773
824
  ["display", "flex"],
774
825
  ["flex-direction", "column"],
@@ -2498,6 +2549,8 @@ Pair \`d-card\` with a theme card decorator (e.g., \`carbon-card\`) for hover gl
2498
2549
  | **Body** | \`d-shell-body\` | Scrollable main region. \`data-padding="compact\\|spacious\\|none"\` overrides the default 1rem padding. |
2499
2550
  | **Footer** | \`d-shell-footer\` | Narrow band below the body with top border. |
2500
2551
  | **Centered card** | \`d-shell-centered-card\` | The content parent inside \`d-shell[data-layout="centered"]\`. Caps width at 28rem. |
2552
+ | **Mobile menu trigger** | \`d-shell-mobile-trigger\` | Hamburger button hidden above \`_md:\`, visible below. Toggles \`data-mobile-open\` on the sibling \`d-shell-sidebar\`. REQUIRED inside \`d-shell-header\` for any \`sidebar-main\` or \`sidebar-aside\` shell \u2014 without it, mobile users can't re-open the collapsed nav. |
2553
+ | **Mobile backdrop** | \`d-shell-mobile-backdrop\` | Dim scrim shown behind the open sidebar drawer below \`_md:\`. Apply \`data-visible="true"\` when sidebar is open; click to close. Hidden above \`_md:\`. |
2501
2554
 
2502
2555
  **Shell layout recipes:**
2503
2556
  - **Auth / confirmation:** \`d-shell[data-layout="centered"] + d-shell-centered-card\`.
@@ -2507,6 +2560,47 @@ Pair \`d-card\` with a theme card decorator (e.g., \`carbon-card\`) for hover gl
2507
2560
 
2508
2561
  Do NOT hand-roll \`.shell-sidebar\`, \`.shell-centered\`, \`.shell-tnf\`, \`.shell-aside\`, \`.sidebar-main-layout\`, or similar class names. They exist as treatments.
2509
2562
 
2563
+ **Mobile sidebar wiring (REQUIRED for sidebar-main / sidebar-aside shells):**
2564
+
2565
+ The sidebar collapses to off-canvas below \`_mdmax:\`. Without an explicit toggle, mobile users get stuck \u2014 collapsed sidebar, no way to re-open it. Wire it up like this:
2566
+
2567
+ \`\`\`tsx
2568
+ function AppShell() {
2569
+ const [navOpen, setNavOpen] = useState(false);
2570
+ return (
2571
+ <div className="d-shell" data-layout="sidebar-main">
2572
+ <aside
2573
+ className="d-shell-sidebar"
2574
+ data-mobile-open={navOpen ? 'true' : undefined}
2575
+ >
2576
+ {/* nav items */}
2577
+ </aside>
2578
+ <div
2579
+ className="d-shell-mobile-backdrop"
2580
+ data-visible={navOpen ? 'true' : undefined}
2581
+ onClick={() => setNavOpen(false)}
2582
+ />
2583
+ <main className="d-shell-main">
2584
+ <header className="d-shell-header">
2585
+ <button
2586
+ className="d-shell-mobile-trigger"
2587
+ aria-label={navOpen ? 'Close navigation' : 'Open navigation'}
2588
+ aria-expanded={navOpen}
2589
+ onClick={() => setNavOpen((v) => !v)}
2590
+ >
2591
+ <Menu size={18} aria-hidden />
2592
+ </button>
2593
+ {/* rest of header */}
2594
+ </header>
2595
+ <div className="d-shell-body">{/* page content */}</div>
2596
+ </main>
2597
+ </div>
2598
+ );
2599
+ }
2600
+ \`\`\`
2601
+
2602
+ The trigger auto-hides above \`_md:\` (where the sidebar is always visible inline) and the backdrop only shows when \`data-visible="true"\` AND viewport is below \`_md:\`. Close-on-route-change is recommended for SPA blueprints \u2014 wire \`useEffect\` on \`location.pathname\` to reset \`navOpen\` to false.
2603
+
2510
2604
  ### Theme toggle
2511
2605
 
2512
2606
  If the blueprint declares the \`theme-toggle\` feature, \`tokens.css\` includes a \`[data-mode="<opposite>"]\` selector block. Flip the visible mode by setting \`data-mode\` on \`<html>\` (or any ancestor):
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import "./chunk-M2DFCY3N.js";
2
- import "./chunk-WINKQSUX.js";
1
+ import "./chunk-AMP4C5NV.js";
2
+ import "./chunk-BABBST2Q.js";
3
3
  import "./chunk-QRQCPD3C.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RegistryClient,
3
3
  refreshDerivedFiles
4
- } from "./chunk-WINKQSUX.js";
4
+ } from "./chunk-BABBST2Q.js";
5
5
 
6
6
  // src/commands/upgrade.ts
7
7
  import { existsSync, readFileSync, writeFileSync } from "fs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decantr/cli",
3
- "version": "1.7.14",
3
+ "version": "1.7.17",
4
4
  "description": "Decantr CLI — scaffold, audit, and maintain Decantr projects from the terminal",
5
5
  "author": "Decantr AI",
6
6
  "license": "MIT",
@@ -27,10 +27,10 @@
27
27
  "access": "public"
28
28
  },
29
29
  "dependencies": {
30
- "@decantr/core": "1.0.2",
31
- "@decantr/verifier": "1.0.2",
30
+ "@decantr/essence-spec": "1.0.5",
31
+ "@decantr/verifier": "1.0.3",
32
32
  "@decantr/registry": "1.0.2",
33
- "@decantr/essence-spec": "1.0.4"
33
+ "@decantr/core": "1.0.2"
34
34
  },
35
35
  "scripts": {
36
36
  "build": "tsup",