@contentful/experience-design-system-cli 2.26.8-dev-build-5d1e683.0 → 2.26.8-dev-build-a7afae3.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/experience-design-system-cli",
3
- "version": "2.26.8-dev-build-5d1e683.0",
3
+ "version": "2.26.8-dev-build-a7afae3.0",
4
4
  "description": "Contentful Experiences design system import CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -44,7 +44,7 @@
44
44
  "commander": "^13.1.0",
45
45
  "ink": "^4.4.1",
46
46
  "react": "^18.3.1",
47
- "react-devtools-core": "^4.28.5",
47
+ "react-devtools-core": "^4.19.1",
48
48
  "react-dom": "^18.3.1",
49
49
  "svelte": "^5.56.4",
50
50
  "ts-morph": "^27.0.2",
@@ -56,7 +56,7 @@
56
56
  "@contentful/experience-design-system-generation": "workspace:*",
57
57
  "@tsconfig/node24": "^24.0.4",
58
58
  "@types/node": "^24.0.3",
59
- "@types/react": "^18.3.31",
59
+ "@types/react": "^18.3.24",
60
60
  "eslint": "^9.39.5",
61
61
  "eslint-config-prettier": "^10.1.8",
62
62
  "eslint-plugin-prettier": "^5.5.6",
@@ -37,6 +37,7 @@ type FieldEditorProps = {
37
37
  kind: 'prop' | 'slot';
38
38
  name: string;
39
39
  };
40
+ showHiddenProps?: boolean;
40
41
  };
41
42
  export declare function simulateGraphWithCandidate(projectSlotGraph: ComponentSlotInfo[], selfName: string, currentSlots: {
42
43
  name: string;
@@ -55,5 +56,5 @@ export declare function computeAllowedComponentReplacementCandidates(projectSlot
55
56
  name: string;
56
57
  allowedComponents: string[];
57
58
  }[], targetSlotName: string, replaceIndex: number): string[];
58
- export declare function FieldEditor({ value, width, height, active, onChange, onSave, onDiscard, onExit, metadata, onTogglePropRationale, propRationaleKey, onToggleComponentRationale, componentRationaleKey, onToggleSourceExternal, onTextEntryActiveChange, projectSlotGraph, currentComponentName, onDirtyChange, discardTrigger, initialFocusTarget, }: FieldEditorProps): React.ReactElement;
59
+ export declare function FieldEditor({ value, width, height, active, onChange, onSave, onDiscard, onExit, metadata, onTogglePropRationale, propRationaleKey, onToggleComponentRationale, componentRationaleKey, onToggleSourceExternal, onTextEntryActiveChange, projectSlotGraph, currentComponentName, onDirtyChange, discardTrigger, initialFocusTarget, showHiddenProps, }: FieldEditorProps): React.ReactElement;
59
60
  export {};
@@ -0,0 +1,7 @@
1
+ import type { CDFComponentEntry } from '@contentful/experience-design-system-types';
2
+ type ReviewJsonComponent = {
3
+ key: string;
4
+ entry: CDFComponentEntry;
5
+ };
6
+ export declare function getReviewJsonPanelValue(selected: ReviewJsonComponent | null, showHiddenProps: boolean): string;
7
+ export {};
package/dist/src/index.js CHANGED
@@ -8564,6 +8564,63 @@ function applyDbMigrations(db) {
8564
8564
  if (!rawPropColNames.has("source_end_line")) {
8565
8565
  db.exec("ALTER TABLE raw_props ADD COLUMN source_end_line INTEGER");
8566
8566
  }
8567
+ const rawPropsDdl = db.prepare(`SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'raw_props'`).get();
8568
+ if (rawPropsDdl && !rawPropsDdl.sql.includes(`'unattached'`)) {
8569
+ db.exec("PRAGMA foreign_keys = OFF");
8570
+ try {
8571
+ db.exec("BEGIN");
8572
+ try {
8573
+ db.exec(`
8574
+ CREATE TABLE raw_props__new (
8575
+ session_id TEXT NOT NULL,
8576
+ component_id TEXT NOT NULL,
8577
+ name TEXT NOT NULL,
8578
+ type TEXT NOT NULL,
8579
+ required INTEGER NOT NULL CHECK (required IN (0, 1)),
8580
+ category TEXT CHECK (category IN ('content', 'design', 'state')),
8581
+ default_value TEXT,
8582
+ description TEXT,
8583
+ token_reference TEXT,
8584
+ position INTEGER NOT NULL,
8585
+ cdf_type TEXT,
8586
+ cdf_category TEXT CHECK (cdf_category IN ('content', 'design', 'state', 'unattached')),
8587
+ cdf_token_kind TEXT,
8588
+ rationale TEXT,
8589
+ source_start_line INTEGER,
8590
+ source_end_line INTEGER,
8591
+ PRIMARY KEY (session_id, component_id, name),
8592
+ FOREIGN KEY (session_id, component_id) REFERENCES raw_components(session_id, component_id) ON DELETE CASCADE
8593
+ );
8594
+
8595
+ INSERT INTO raw_props__new
8596
+ (session_id, component_id, name, type, required, category, default_value,
8597
+ description, token_reference, position, cdf_type, cdf_category, cdf_token_kind,
8598
+ rationale, source_start_line, source_end_line)
8599
+ SELECT
8600
+ session_id, component_id, name, type, required, category, default_value,
8601
+ description, token_reference, position, cdf_type, cdf_category, cdf_token_kind,
8602
+ rationale, source_start_line, source_end_line
8603
+ FROM raw_props;
8604
+
8605
+ DROP TABLE raw_props;
8606
+ ALTER TABLE raw_props__new RENAME TO raw_props;
8607
+ CREATE INDEX IF NOT EXISTS idx_raw_props_session ON raw_props(session_id, component_id);
8608
+
8609
+ UPDATE raw_props
8610
+ SET cdf_category = 'unattached',
8611
+ cdf_type = CASE WHEN type = 'boolean' THEN 'boolean' ELSE 'string' END,
8612
+ required = 0
8613
+ WHERE cdf_type = 'excluded';
8614
+ `);
8615
+ db.exec("COMMIT");
8616
+ } catch (e) {
8617
+ db.exec("ROLLBACK");
8618
+ throw e;
8619
+ }
8620
+ } finally {
8621
+ db.exec("PRAGMA foreign_keys = ON");
8622
+ }
8623
+ }
8567
8624
  if (!rawCompColNames.has("reject_reason")) {
8568
8625
  db.exec("ALTER TABLE raw_components ADD COLUMN reject_reason TEXT");
8569
8626
  }
@@ -8749,7 +8806,12 @@ function applyToolCalls(db, sessionId2, componentId, componentName, calls, incom
8749
8806
  WHERE session_id = ? AND component_id = ? AND name = ?`
8750
8807
  );
8751
8808
  const clearProp = db.prepare(
8752
- `UPDATE raw_props SET cdf_type = 'excluded', cdf_category = NULL, cdf_token_kind = NULL, rationale = ?
8809
+ `UPDATE raw_props
8810
+ SET cdf_type = CASE WHEN type = 'boolean' THEN 'boolean' ELSE 'string' END,
8811
+ cdf_category = 'unattached',
8812
+ cdf_token_kind = NULL,
8813
+ required = 0,
8814
+ rationale = ?
8753
8815
  WHERE session_id = ? AND component_id = ? AND name = ?`
8754
8816
  );
8755
8817
  const deleteAllowedValues = db.prepare(
@@ -9348,7 +9410,7 @@ function loadCDFComponents(db, sessionId2) {
9348
9410
  `SELECT component_id, name, required, default_value, description,
9349
9411
  cdf_type, cdf_category, cdf_token_kind, position
9350
9412
  FROM raw_props
9351
- WHERE session_id = ? AND cdf_type IS NOT NULL AND cdf_type != 'excluded'
9413
+ WHERE session_id = ? AND cdf_type IS NOT NULL
9352
9414
  ORDER BY component_id, position`
9353
9415
  ).all(sessionId2);
9354
9416
  const allowedValues = db.prepare(
@@ -21318,6 +21380,27 @@ var init_merge_ai_decisions = __esm({
21318
21380
  }
21319
21381
  });
21320
21382
 
21383
+ // packages/experience-design-system-cli/src/import/tui/steps/review-json-panel.ts
21384
+ function getReviewJsonPanelValue(selected, showHiddenProps) {
21385
+ if (!selected) return "";
21386
+ const entry = showHiddenProps ? selected.entry : {
21387
+ ...selected.entry,
21388
+ $properties: Object.fromEntries(
21389
+ Object.entries(selected.entry.$properties ?? {}).filter(
21390
+ ([, definition]) => !HIDDEN_PROP_CATEGORIES.has(definition.$category)
21391
+ )
21392
+ )
21393
+ };
21394
+ return JSON.stringify({ [selected.key]: entry }, null, 2);
21395
+ }
21396
+ var HIDDEN_PROP_CATEGORIES;
21397
+ var init_review_json_panel = __esm({
21398
+ "packages/experience-design-system-cli/src/import/tui/steps/review-json-panel.ts"() {
21399
+ "use strict";
21400
+ HIDDEN_PROP_CATEGORIES = /* @__PURE__ */ new Set(["state", "unattached"]);
21401
+ }
21402
+ });
21403
+
21321
21404
  // packages/experience-design-system-cli/src/analyze/cycle-view.ts
21322
21405
  function computeCycleView(components) {
21323
21406
  const filtered = components.filter((c2) => c2.status !== "rejected");
@@ -21924,7 +22007,8 @@ function FieldEditor({
21924
22007
  currentComponentName,
21925
22008
  onDirtyChange,
21926
22009
  discardTrigger,
21927
- initialFocusTarget
22010
+ initialFocusTarget,
22011
+ showHiddenProps = true
21928
22012
  }) {
21929
22013
  const { state: initialState, error: parseError } = parseToState(value);
21930
22014
  const [editorState, setEditorState] = useState23(initialState);
@@ -22005,12 +22089,34 @@ function FieldEditor({
22005
22089
  const [showHelp, setShowHelp] = useState23(false);
22006
22090
  const props = editorState.props;
22007
22091
  const slots = editorState.slots;
22092
+ const visiblePropIndexes = React23.useMemo(
22093
+ () => props.flatMap(
22094
+ (prop, index) => showHiddenProps || prop.category !== "state" && prop.category !== "unattached" ? [index] : []
22095
+ ),
22096
+ [props, showHiddenProps]
22097
+ );
22098
+ const visiblePropPosition = visiblePropIndexes.indexOf(propIdx);
22008
22099
  const textEntryActive = focusLevel === "field" && activeField === "description" || focusLevel === "field" && activeField === "default" && (editorState.props[propIdx]?.type === "string" || editorState.props[propIdx]?.type === "token") || editingValue != null;
22009
22100
  React23.useEffect(() => {
22010
22101
  onTextEntryActiveChange?.(textEntryActive);
22011
22102
  }, [textEntryActive, onTextEntryActiveChange]);
22012
22103
  const currentProp = props[propIdx] ?? null;
22013
22104
  const currentSlot = slots[slotIdx] ?? null;
22105
+ React23.useEffect(() => {
22106
+ if (showHiddenProps || inSlots || inComponentDesc || visiblePropPosition >= 0) return;
22107
+ if (visiblePropIndexes.length > 0) {
22108
+ setPropIdx(visiblePropIndexes[0]);
22109
+ return;
22110
+ }
22111
+ if (slots.length > 0) {
22112
+ setInSlots(true);
22113
+ setSlotIdx(0);
22114
+ setFocusLevel("slot");
22115
+ return;
22116
+ }
22117
+ setInComponentDesc(true);
22118
+ setFocusLevel("componentDescription");
22119
+ }, [inComponentDesc, inSlots, showHiddenProps, slots.length, visiblePropIndexes, visiblePropPosition]);
22014
22120
  const commit = (next) => {
22015
22121
  setEditorState(next);
22016
22122
  onChange(serializeState(next, value));
@@ -22212,8 +22318,8 @@ function FieldEditor({
22212
22318
  }
22213
22319
  if (focusLevel === "prop") {
22214
22320
  if (key.upArrow || input === "k") {
22215
- if (propIdx > 0) {
22216
- setPropIdx(propIdx - 1);
22321
+ if (visiblePropPosition > 0) {
22322
+ setPropIdx(visiblePropIndexes[visiblePropPosition - 1]);
22217
22323
  } else {
22218
22324
  setFocusLevel("componentDescription");
22219
22325
  setInSlots(false);
@@ -22222,8 +22328,8 @@ function FieldEditor({
22222
22328
  return;
22223
22329
  }
22224
22330
  if (key.downArrow || input === "j") {
22225
- if (propIdx < props.length - 1) {
22226
- setPropIdx(propIdx + 1);
22331
+ if (visiblePropPosition >= 0 && visiblePropPosition < visiblePropIndexes.length - 1) {
22332
+ setPropIdx(visiblePropIndexes[visiblePropPosition + 1]);
22227
22333
  } else if (slots.length > 0) {
22228
22334
  setInSlots(true);
22229
22335
  setSlotIdx(0);
@@ -22244,9 +22350,9 @@ function FieldEditor({
22244
22350
  return;
22245
22351
  }
22246
22352
  if (key.downArrow || input === "j") {
22247
- if (props.length > 0) {
22353
+ if (visiblePropIndexes.length > 0) {
22248
22354
  setFocusLevel("prop");
22249
- setPropIdx(0);
22355
+ setPropIdx(visiblePropIndexes[0]);
22250
22356
  setInSlots(false);
22251
22357
  setInComponentDesc(false);
22252
22358
  } else if (slots.length > 0) {
@@ -22269,9 +22375,9 @@ function FieldEditor({
22269
22375
  if (key.upArrow || input === "k") {
22270
22376
  if (slotIdx > 0) {
22271
22377
  setSlotIdx(slotIdx - 1);
22272
- } else if (props.length > 0) {
22378
+ } else if (visiblePropIndexes.length > 0) {
22273
22379
  setInSlots(false);
22274
- setPropIdx(props.length - 1);
22380
+ setPropIdx(visiblePropIndexes[visiblePropIndexes.length - 1]);
22275
22381
  setFocusLevel("prop");
22276
22382
  }
22277
22383
  return;
@@ -22616,9 +22722,9 @@ function FieldEditor({
22616
22722
  })();
22617
22723
  const rows = [];
22618
22724
  rows.push({ kind: "component-description" });
22619
- if (props.length > 0) {
22620
- rows.push({ kind: "header", label: `\u2500\u2500 PROPERTIES (${props.length}) `, section: "properties" });
22621
- props.forEach((_, i) => rows.push({ kind: "prop", idx: i }));
22725
+ if (visiblePropIndexes.length > 0) {
22726
+ rows.push({ kind: "header", label: `\u2500\u2500 PROPERTIES (${visiblePropIndexes.length}) `, section: "properties" });
22727
+ visiblePropIndexes.forEach((idx) => rows.push({ kind: "prop", idx }));
22622
22728
  }
22623
22729
  if (slots.length > 0) {
22624
22730
  rows.push({ kind: "header", label: `\u2500\u2500 SLOTS (${slots.length}) `, section: "slots" });
@@ -23610,6 +23716,7 @@ function GenerateReviewStep({
23610
23716
  const [showFinalize, setShowFinalize] = useState26(false);
23611
23717
  const [showQuit, setShowQuit] = useState26(false);
23612
23718
  const [showJson, setShowJson] = useState26(false);
23719
+ const [showHiddenProps, setShowHiddenProps] = useState26(false);
23613
23720
  const [draftValue, setDraftValue] = useState26("");
23614
23721
  const [saveError, setSaveError] = useState26(null);
23615
23722
  const [finalizeError, setFinalizeError] = useState26(initialFinalizeError);
@@ -24559,7 +24666,7 @@ function GenerateReviewStep({
24559
24666
  }
24560
24667
  if (!sidebarFocused && showJson) {
24561
24668
  const current = components[selectedIdx];
24562
- const currentJson = current ? JSON.stringify({ [current.key]: current.entry }, null, 2) : "";
24669
+ const currentJson = getReviewJsonPanelValue(current ?? null, showHiddenProps);
24563
24670
  const totalLines = currentJson.split("\n").length;
24564
24671
  const maxOffset = Math.max(0, totalLines - PANEL_HEIGHT);
24565
24672
  if (input === "g" && !key.ctrl) {
@@ -24696,6 +24803,12 @@ function GenerateReviewStep({
24696
24803
  pendingGRef.current = false;
24697
24804
  return;
24698
24805
  }
24806
+ if (input === "H") {
24807
+ setShowHiddenProps((prev) => !prev);
24808
+ setJsonScrollOffset(0);
24809
+ pendingGRef.current = false;
24810
+ return;
24811
+ }
24699
24812
  if (key.return) {
24700
24813
  const current = components[selectedIdx];
24701
24814
  if (!current) return;
@@ -24796,6 +24909,7 @@ function GenerateReviewStep({
24796
24909
  }
24797
24910
  const selected = components[selectedIdx] ?? null;
24798
24911
  const selectedJson = selected ? JSON.stringify({ [selected.key]: selected.entry }, null, 2) : "";
24912
+ const visibleJsonPanelValue = getReviewJsonPanelValue(selected, showHiddenProps);
24799
24913
  const isEmpty2 = (c2) => Object.keys(c2.entry.$properties).length === 0 && Object.keys(c2.entry.$slots ?? {}).length === 0;
24800
24914
  const emptyCount = components.filter(isEmpty2).length;
24801
24915
  const cycleParticipantSet = cycleView.structural;
@@ -25117,7 +25231,7 @@ function GenerateReviewStep({
25117
25231
  JsonPanel,
25118
25232
  {
25119
25233
  label: "GENERATED DEFINITION (read-only)",
25120
- value: selectedJson,
25234
+ value: visibleJsonPanelValue,
25121
25235
  scrollOffset: jsonScrollOffset,
25122
25236
  width: panelWidth,
25123
25237
  height: PANEL_HEIGHT,
@@ -25127,6 +25241,7 @@ function GenerateReviewStep({
25127
25241
  FieldEditor,
25128
25242
  {
25129
25243
  value: draftValue || selectedJson,
25244
+ showHiddenProps,
25130
25245
  width: panelWidth,
25131
25246
  height: PANEL_HEIGHT,
25132
25247
  active: !sidebarFocused,
@@ -25210,6 +25325,7 @@ function GenerateReviewStep({
25210
25325
  legendEntry("[P]", "component rationale", panelOpen === "component-rationale"),
25211
25326
  legendEntry("[s]", "source", panelOpen === "source"),
25212
25327
  legendEntry("[J]", showJson ? "hide JSON" : "show JSON", showJson),
25328
+ legendEntry("[H]", showHiddenProps ? "hide state/unattached" : "show state/unattached", showHiddenProps),
25213
25329
  breakingChanges.length > 0 && legendEntry("[b]", "see breaking changes", breakingPanel.isOpen),
25214
25330
  removedComponents.length > 0 && legendEntry("[d]", removedBannerCollapsed ? "show removed" : "hide removed", !removedBannerCollapsed),
25215
25331
  legendEntry("[/]", "search", searchOpen || searchQuery.length > 0),
@@ -25240,6 +25356,7 @@ var init_GenerateReviewStep = __esm({
25240
25356
  "packages/experience-design-system-cli/src/import/tui/steps/GenerateReviewStep.tsx"() {
25241
25357
  "use strict";
25242
25358
  init_theme();
25359
+ init_review_json_panel();
25243
25360
  init_GroupedSidebar();
25244
25361
  init_composite_closure();
25245
25362
  init_slot_graph();
@@ -25390,6 +25507,7 @@ function AtomicGenerateReviewStep({
25390
25507
  const [showFinalize, setShowFinalize] = useState27(false);
25391
25508
  const [showQuit, setShowQuit] = useState27(false);
25392
25509
  const [showJson, setShowJson] = useState27(false);
25510
+ const [showHiddenProps, setShowHiddenProps] = useState27(false);
25393
25511
  const [draftValue, setDraftValue] = useState27("");
25394
25512
  const [saveError, setSaveError] = useState27(null);
25395
25513
  const [finalizeError, setFinalizeError] = useState27(initialFinalizeError);
@@ -25753,7 +25871,7 @@ function AtomicGenerateReviewStep({
25753
25871
  }
25754
25872
  if (!sidebarFocused && showJson) {
25755
25873
  const current = components[selectedIdx];
25756
- const currentJson = current ? JSON.stringify({ [current.key]: current.entry }, null, 2) : "";
25874
+ const currentJson = getReviewJsonPanelValue(current ?? null, showHiddenProps);
25757
25875
  const totalLines = currentJson.split("\n").length;
25758
25876
  const maxOffset = Math.max(0, totalLines - PANEL_HEIGHT2);
25759
25877
  if (input === "g" && !key.ctrl) {
@@ -25809,6 +25927,12 @@ function AtomicGenerateReviewStep({
25809
25927
  pendingGRef.current = false;
25810
25928
  return;
25811
25929
  }
25930
+ if (input === "H") {
25931
+ setShowHiddenProps((prev) => !prev);
25932
+ setJsonScrollOffset(0);
25933
+ pendingGRef.current = false;
25934
+ return;
25935
+ }
25812
25936
  if (key.upArrow || input === "k") {
25813
25937
  setSelectedIdx((prev) => {
25814
25938
  const newIdx = Math.max(0, prev - 1);
@@ -25841,6 +25965,7 @@ function AtomicGenerateReviewStep({
25841
25965
  }
25842
25966
  const selected = components[selectedIdx] ?? null;
25843
25967
  const selectedJson = selected ? JSON.stringify({ [selected.key]: selected.entry }, null, 2) : "";
25968
+ const visibleJsonPanelValue = getReviewJsonPanelValue(selected, showHiddenProps);
25844
25969
  const isEmpty2 = (c2) => Object.keys(c2.entry.$properties).length === 0;
25845
25970
  const emptyCount = components.filter(isEmpty2).length;
25846
25971
  const sidebarItems = components.map((c2) => ({
@@ -26016,7 +26141,7 @@ function AtomicGenerateReviewStep({
26016
26141
  JsonPanel,
26017
26142
  {
26018
26143
  label: "GENERATED DEFINITION (read-only)",
26019
- value: selectedJson,
26144
+ value: visibleJsonPanelValue,
26020
26145
  scrollOffset: jsonScrollOffset,
26021
26146
  width: panelWidth,
26022
26147
  height: PANEL_HEIGHT2,
@@ -26026,6 +26151,7 @@ function AtomicGenerateReviewStep({
26026
26151
  FieldEditor,
26027
26152
  {
26028
26153
  value: draftValue || selectedJson,
26154
+ showHiddenProps,
26029
26155
  width: panelWidth,
26030
26156
  height: PANEL_HEIGHT2,
26031
26157
  active: !sidebarFocused,
@@ -26056,7 +26182,7 @@ function AtomicGenerateReviewStep({
26056
26182
  ),
26057
26183
  saveError && /* @__PURE__ */ jsx48(Text47, { color: PALETTE.error, children: "\u2717 " + saveError }),
26058
26184
  /* @__PURE__ */ jsxs47(Text47, { dimColor: true, children: [
26059
- sidebarFocused ? " [a] accept [r] reject [A] accept all [i] prop rationale [I] component rationale [s] source [J] " + (showJson ? "hide JSON" : "show JSON") + " [^z] undo [^y] redo [^r] reload [F] finalize [e/Tab] focus panel" + (livePreview && removedComponents.length > 0 ? " [d] removed list" : "") + " [q] quit" : showJson ? " [j/k] scroll [Ctrl+u/d] half-page [gg/G] top/bottom [Tab] focus list" : " [Tab] focus list (edit fields)",
26185
+ sidebarFocused ? " [a] accept [r] reject [A] accept all [i] prop rationale [I] component rationale [s] source [J] " + (showJson ? "hide JSON" : "show JSON") + " [H] " + (showHiddenProps ? "hide state/unattached" : "show state/unattached") + " [^z] undo [^y] redo [^r] reload [F] finalize [e/Tab] focus panel" + (livePreview && removedComponents.length > 0 ? " [d] removed list" : "") + " [q] quit" : showJson ? " [j/k] scroll [Ctrl+u/d] half-page [gg/G] top/bottom [Tab] focus list" : " [Tab] focus list (edit fields)",
26060
26186
  livePreviewHook.status === "running" && /* @__PURE__ */ jsx48(Text47, { children: ` ${livePreviewSpinner} live preview` }),
26061
26187
  livePreviewHook.disabled && /* @__PURE__ */ jsx48(Text47, { children: " \xB7 live preview disabled" })
26062
26188
  ] })
@@ -26103,6 +26229,7 @@ var init_AtomicGenerateReviewStep = __esm({
26103
26229
  init_useFinalizePreview();
26104
26230
  init_scroll_offset();
26105
26231
  init_theme();
26232
+ init_review_json_panel();
26106
26233
  VISIBLE_COUNT3 = 20;
26107
26234
  PANEL_HEIGHT2 = 22;
26108
26235
  }
@@ -31357,7 +31484,7 @@ async function runGenerateSkill(skill, opts, verbose = false) {
31357
31484
  const allOk = failed.length === 0;
31358
31485
  const cachedNote = cachedResults.length > 0 ? c.dim(` (${cachedResults.length} cached)`) : "";
31359
31486
  process.stderr.write(
31360
- (allOk ? c.green("\u2713") : c.yellow("\u26A0")) + ` ${generated.length + cachedResults.length}/${componentResults.length} components` + cachedNote + c.dim(` ${totalClassified} classified, ${totalExcluded} excluded`) + "\n"
31487
+ (allOk ? c.green("\u2713") : c.yellow("\u26A0")) + ` ${generated.length + cachedResults.length}/${componentResults.length} components` + cachedNote + c.dim(` ${totalClassified} classified, ${totalExcluded} unattached`) + "\n"
31361
31488
  );
31362
31489
  process.stdout.write(`renamed-slots: ${totalRenamedSlots}
31363
31490
  `);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/experience-design-system-cli",
3
- "version": "2.26.8-dev-build-5d1e683.0",
3
+ "version": "2.26.8-dev-build-a7afae3.0",
4
4
  "description": "Contentful Experiences design system import CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -34,26 +34,26 @@
34
34
  "commander": "^13.1.0",
35
35
  "ink": "^4.4.1",
36
36
  "react": "^18.3.1",
37
- "react-devtools-core": "^4.28.5",
37
+ "react-devtools-core": "^4.19.1",
38
38
  "react-dom": "^18.3.1",
39
39
  "svelte": "^5.56.4",
40
40
  "ts-morph": "^27.0.2",
41
41
  "typescript": "^5.9.3",
42
- "@contentful/experience-design-system-types": "2.26.8-dev-build-5d1e683.0"
42
+ "@contentful/experience-design-system-types": "2.26.8-dev-build-a7afae3.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@tsconfig/node24": "^24.0.4",
46
46
  "@types/node": "^24.0.3",
47
- "@types/react": "^18.3.31",
47
+ "@types/react": "^18.3.24",
48
48
  "eslint": "^9.39.5",
49
49
  "eslint-config-prettier": "^10.1.8",
50
50
  "eslint-plugin-prettier": "^5.5.6",
51
51
  "ink-testing-library": "^4.0.0",
52
52
  "typescript-eslint": "^8.67.0",
53
53
  "vitest": "^4.0.16",
54
- "@contentful/experience-design-system-client": "2.26.8-dev-build-5d1e683.0",
55
- "@contentful/experience-design-system-extraction": "2.26.8-dev-build-5d1e683.0",
56
- "@contentful/experience-design-system-generation": "2.26.8-dev-build-5d1e683.0"
54
+ "@contentful/experience-design-system-client": "2.26.8-dev-build-a7afae3.0",
55
+ "@contentful/experience-design-system-extraction": "2.26.8-dev-build-a7afae3.0",
56
+ "@contentful/experience-design-system-generation": "2.26.8-dev-build-a7afae3.0"
57
57
  },
58
58
  "repository": {
59
59
  "type": "git",