@decantr/cli 1.7.17 → 1.7.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/dist/bin.js
CHANGED
|
@@ -473,9 +473,6 @@ ${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
|
-
]);
|
|
479
476
|
emitRule(".d-link", [
|
|
480
477
|
["color", "var(--d-text)"],
|
|
481
478
|
["text-decoration", "none"],
|
|
@@ -846,11 +843,19 @@ ${themeBody}
|
|
|
846
843
|
["min-width", "0"],
|
|
847
844
|
["overflow-y", "auto"],
|
|
848
845
|
["overflow-x", "clip"],
|
|
849
|
-
["padding", "1rem"]
|
|
846
|
+
["padding", "1rem"],
|
|
847
|
+
["display", "flex"],
|
|
848
|
+
["flex-direction", "column"],
|
|
849
|
+
["gap", "var(--d-section-gap, 2rem)"]
|
|
850
850
|
]);
|
|
851
851
|
emitRule('.d-shell-body[data-padding="compact"]', [["padding", "0.75rem"]]);
|
|
852
852
|
emitRule('.d-shell-body[data-padding="spacious"]', [["padding", "1.5rem"]]);
|
|
853
853
|
emitRule('.d-shell-body[data-padding="none"]', [["padding", "0"]]);
|
|
854
|
+
emitRule('.d-shell-body[data-flow="tight"]', [["gap", "0.75rem"]]);
|
|
855
|
+
emitRule('.d-shell-body[data-flow="none"]', [
|
|
856
|
+
["display", "block"],
|
|
857
|
+
["gap", "0"]
|
|
858
|
+
]);
|
|
854
859
|
emitRule(".d-shell-footer", [
|
|
855
860
|
["padding", "1rem clamp(1rem, 2vw, 1.5rem)"],
|
|
856
861
|
["border-top", "1px solid var(--d-border)"],
|
|
@@ -2546,7 +2551,7 @@ Pair \`d-card\` with a theme card decorator (e.g., \`carbon-card\`) for hover gl
|
|
|
2546
2551
|
| **Main** | \`d-shell-main\` | Remaining-width column to the right of the sidebar (or the full content area in top-nav shells). Handles scroll internally. |
|
|
2547
2552
|
| **Aside** | \`d-shell-aside\` | Right 320px auxiliary panel for inspector / timeline / minimap in \`sidebar-aside\` layouts. Below \`_mdmax:\` hides by default; toggle with \`data-mobile-open="true"\`. |
|
|
2548
2553
|
| **Header** | \`d-shell-header\` | 52px sticky top bar with horizontal flex layout. Use inside \`d-shell-main\` (sidebar-main shells) or at the top of \`d-shell\` (top-nav shells). |
|
|
2549
|
-
| **Body** | \`d-shell-body\` | Scrollable main region. \`data-padding="compact\\|spacious\\|none"\`
|
|
2554
|
+
| **Body** | \`d-shell-body\` | Scrollable main region. **Flex column with section-level gap (\`var(--d-section-gap, 2rem)\`) between direct children** \u2014 every block-level child (eyebrow, card grid, chart row, table) gets uniform spacing automatically, no matter how it's wrapped internally. \`data-padding="compact\\|spacious\\|none"\` adjusts the outer 1rem padding. \`data-flow="tight"\` reduces the gap to 0.75rem; \`data-flow="none"\` reverts to plain block flow. |
|
|
2550
2555
|
| **Footer** | \`d-shell-footer\` | Narrow band below the body with top border. |
|
|
2551
2556
|
| **Centered card** | \`d-shell-centered-card\` | The content parent inside \`d-shell[data-layout="centered"]\`. Caps width at 28rem. |
|
|
2552
2557
|
| **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. |
|
|
@@ -3165,12 +3170,18 @@ Start implementation from the shell layouts and shared route structure before fi
|
|
|
3165
3170
|
}
|
|
3166
3171
|
briefLines.push(`- **Guard mode:** ${params.guardMode}`);
|
|
3167
3172
|
briefLines.push("");
|
|
3173
|
+
const escDecCell = (s) => s.replace(/\|/g, "\\|");
|
|
3168
3174
|
if (params.decoratorDefinitions && Object.keys(params.decoratorDefinitions).length > 0) {
|
|
3169
3175
|
briefLines.push("### Decorator Quick Reference");
|
|
3170
|
-
briefLines.push(
|
|
3171
|
-
|
|
3176
|
+
briefLines.push(
|
|
3177
|
+
`Apply these classes \u2014 they carry the theme's visual identity. Without them the scaffold reads as "themed colors only."`
|
|
3178
|
+
);
|
|
3179
|
+
briefLines.push("");
|
|
3180
|
+
briefLines.push("| Class | Intent | Apply to | Key CSS |");
|
|
3181
|
+
briefLines.push("|-------|--------|----------|---------|");
|
|
3172
3182
|
for (const [name, def] of Object.entries(params.decoratorDefinitions)) {
|
|
3173
|
-
const intent = def.intent || "";
|
|
3183
|
+
const intent = escDecCell(def.intent || "");
|
|
3184
|
+
const applyTo = escDecCell((def.usage || []).join(", "));
|
|
3174
3185
|
const props = def.suggested_properties ?? def.css ?? {};
|
|
3175
3186
|
const base = Object.entries(props).map(([p, v]) => `${p}: ${v}`).join("; ");
|
|
3176
3187
|
const hasHover = def.hover_properties && Object.keys(def.hover_properties).length > 0;
|
|
@@ -3182,7 +3193,9 @@ Start implementation from the shell layouts and shared route structure before fi
|
|
|
3182
3193
|
hasActive && ":active"
|
|
3183
3194
|
].filter((m) => Boolean(m));
|
|
3184
3195
|
const stateSuffix = stateMarkers.length > 0 ? ` _(+ ${stateMarkers.join(", ")})_` : "";
|
|
3185
|
-
briefLines.push(
|
|
3196
|
+
briefLines.push(
|
|
3197
|
+
`| \`.${name}\` | ${intent} | ${applyTo} | ${escDecCell(base)}${stateSuffix} |`
|
|
3198
|
+
);
|
|
3186
3199
|
}
|
|
3187
3200
|
briefLines.push("");
|
|
3188
3201
|
} else if (params.decorators && params.decorators.length > 0) {
|
|
@@ -3190,7 +3203,7 @@ Start implementation from the shell layouts and shared route structure before fi
|
|
|
3190
3203
|
briefLines.push("| Class | Purpose |");
|
|
3191
3204
|
briefLines.push("|-------|---------|");
|
|
3192
3205
|
for (const d of params.decorators) {
|
|
3193
|
-
briefLines.push(`| \`.${d.name}\` | ${d.description} |`);
|
|
3206
|
+
briefLines.push(`| \`.${d.name}\` | ${escDecCell(d.description)} |`);
|
|
3194
3207
|
}
|
|
3195
3208
|
briefLines.push("");
|
|
3196
3209
|
}
|
|
@@ -4593,14 +4606,20 @@ function generateQuickStart(input) {
|
|
|
4593
4606
|
if (patternLabels.length > 0) {
|
|
4594
4607
|
lines.push(`**Key patterns:** ${patternLabels.join(", ")}`);
|
|
4595
4608
|
}
|
|
4596
|
-
|
|
4597
|
-
|
|
4598
|
-
|
|
4609
|
+
if (decorators.length > 0) {
|
|
4610
|
+
const count = decorators.length;
|
|
4611
|
+
lines.push(
|
|
4612
|
+
`**Theme decorators:** ${count} class${count === 1 ? "" : "es"} \u2014 see "Required Theme Decorators" below for class + intent + apply-to`
|
|
4613
|
+
);
|
|
4614
|
+
}
|
|
4599
4615
|
const pLower = personality.join(" ").toLowerCase();
|
|
4600
|
-
|
|
4601
|
-
if (pLower.includes("
|
|
4602
|
-
if (
|
|
4603
|
-
|
|
4616
|
+
const personalityUtils = [];
|
|
4617
|
+
if (pLower.includes("neon") || pLower.includes("glow")) personalityUtils.push("neon-glow");
|
|
4618
|
+
if (pLower.includes("mono") || pLower.includes("monospace")) personalityUtils.push("mono-data");
|
|
4619
|
+
if (personalityUtils.length > 0) {
|
|
4620
|
+
lines.push(
|
|
4621
|
+
`**Personality utilities:** ${personalityUtils.map((c) => `\`.${c}\``).join(", ")}`
|
|
4622
|
+
);
|
|
4604
4623
|
}
|
|
4605
4624
|
const density = section.dna_overrides?.density || "comfortable";
|
|
4606
4625
|
lines.push(`**Density:** ${density}`);
|
|
@@ -4751,21 +4770,38 @@ function generateSectionContext(input) {
|
|
|
4751
4770
|
);
|
|
4752
4771
|
lines.push("");
|
|
4753
4772
|
const decoratorDefs = input.themeData?.decorator_definitions;
|
|
4773
|
+
const escCell = (s) => s.replace(/\|/g, "\\|");
|
|
4754
4774
|
if (decoratorDefs && Object.keys(decoratorDefs).length > 0) {
|
|
4755
|
-
const
|
|
4756
|
-
([, def]) => def.usage && def.usage.length > 0
|
|
4775
|
+
const renderableEntries = Object.entries(decoratorDefs).filter(
|
|
4776
|
+
([, def]) => def.intent || def.description || def.usage && def.usage.length > 0
|
|
4757
4777
|
);
|
|
4758
|
-
if (
|
|
4759
|
-
lines.push(
|
|
4760
|
-
|
|
4761
|
-
|
|
4778
|
+
if (renderableEntries.length > 0) {
|
|
4779
|
+
lines.push(`## Required Theme Decorators (${themeName})`);
|
|
4780
|
+
lines.push("");
|
|
4781
|
+
lines.push(
|
|
4782
|
+
`These classes carry the active theme's visual identity. Tokens alone give bones; decorators give personality. Generated source MUST apply these \u2014 without them, the page reads as "themed colors only" with no theme character.`
|
|
4783
|
+
);
|
|
4784
|
+
lines.push("");
|
|
4785
|
+
lines.push("| Class | Intent | Apply to |");
|
|
4786
|
+
lines.push("|-------|--------|----------|");
|
|
4787
|
+
for (const [name, def] of renderableEntries) {
|
|
4788
|
+
const intent = escCell(def.intent || def.description || "");
|
|
4789
|
+
const applyTo = escCell((def.usage || []).join(", "));
|
|
4790
|
+
lines.push(`| \`.${name}\` | ${intent} | ${applyTo} |`);
|
|
4762
4791
|
}
|
|
4763
4792
|
lines.push("");
|
|
4764
4793
|
}
|
|
4765
4794
|
} else if (decorators.length > 0) {
|
|
4766
|
-
lines.push(
|
|
4795
|
+
lines.push(`## Required Theme Decorators (${themeName})`);
|
|
4796
|
+
lines.push("");
|
|
4797
|
+
lines.push(
|
|
4798
|
+
"These classes carry the active theme's visual identity. Apply them across this section's patterns or the scaffold reads as generic."
|
|
4799
|
+
);
|
|
4800
|
+
lines.push("");
|
|
4801
|
+
lines.push("| Class | Description |");
|
|
4802
|
+
lines.push("|-------|-------------|");
|
|
4767
4803
|
for (const d of decorators) {
|
|
4768
|
-
lines.push(
|
|
4804
|
+
lines.push(`| \`.${d.name}\` | ${escCell(d.description)} |`);
|
|
4769
4805
|
}
|
|
4770
4806
|
lines.push("");
|
|
4771
4807
|
}
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
scaffoldProject,
|
|
15
15
|
syncRegistry,
|
|
16
16
|
writeExecutionPackBundleArtifacts
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-26JRGQ54.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-
|
|
5945
|
+
const { cmdUpgrade } = await import("./upgrade-LVMAKWEA.js");
|
|
5946
5946
|
const applyFlag = args.includes("--apply");
|
|
5947
5947
|
await cmdUpgrade(process.cwd(), { apply: applyFlag });
|
|
5948
5948
|
break;
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./chunk-
|
|
2
|
-
import "./chunk-
|
|
1
|
+
import "./chunk-GHLSLSRW.js";
|
|
2
|
+
import "./chunk-26JRGQ54.js";
|
|
3
3
|
import "./chunk-QRQCPD3C.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decantr/cli",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.19",
|
|
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",
|
|
30
31
|
"@decantr/essence-spec": "1.0.5",
|
|
31
|
-
"@decantr/verifier": "1.0.3",
|
|
32
32
|
"@decantr/registry": "1.0.2",
|
|
33
|
-
"@decantr/
|
|
33
|
+
"@decantr/verifier": "1.0.3"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"build": "tsup",
|