@contentful/experience-design-system-cli 2.37.1-dev-build-5efcf6e5.0 → 2.37.1-dev-build-daf63213.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/index.js CHANGED
@@ -9164,8 +9164,8 @@ function extractAccessorProperties(classDecl, applyRuntimeFieldDenylist = false)
9164
9164
  accessors.set(name, entry);
9165
9165
  }
9166
9166
  for (const [name, { getter, setter }] of accessors) {
9167
- const hasPropertyDecorator2 = getter?.getDecorators().some((decorator) => decorator.getName() === "property") || setter?.getDecorators().some((decorator) => decorator.getName() === "property");
9168
- if (!hasPropertyDecorator2 && !(getter && setter))
9167
+ const hasPropertyDecorator = getter?.getDecorators().some((decorator) => decorator.getName() === "property") || setter?.getDecorators().some((decorator) => decorator.getName() === "property");
9168
+ if (!hasPropertyDecorator && !(getter && setter))
9169
9169
  continue;
9170
9170
  const type = getter?.getReturnTypeNode()?.getText() ?? setter?.getParameters()[0]?.getTypeNode()?.getText() ?? "any";
9171
9171
  const accessorNode = getter ?? setter;
@@ -12979,9 +12979,9 @@ function generateUlid(now = Date.now()) {
12979
12979
  tsBytes[i] = n & 255;
12980
12980
  n = Math.floor(n / 256);
12981
12981
  }
12982
- const ts6 = encodeBase32(tsBytes, 10);
12982
+ const ts3 = encodeBase32(tsBytes, 10);
12983
12983
  const rand = encodeBase32(randomBytes2(10), 16);
12984
- return (ts6 + rand).toUpperCase();
12984
+ return (ts3 + rand).toUpperCase();
12985
12985
  }
12986
12986
  var CROCKFORD;
12987
12987
  var init_generate_ulid = __esm({
@@ -16475,1506 +16475,7 @@ var init_component = __esm({
16475
16475
  }
16476
16476
  });
16477
16477
 
16478
- // packages/experience-design-system-extraction/dist/src/extract/types/display.js
16479
- var init_display = __esm({
16480
- "packages/experience-design-system-extraction/dist/src/extract/types/display.js"() {
16481
- "use strict";
16482
- }
16483
- });
16484
-
16485
- // packages/experience-design-system-extraction/dist/src/extract/services/deduplication/helpers/component-path-analysis.js
16486
- var init_component_path_analysis = __esm({
16487
- "packages/experience-design-system-extraction/dist/src/extract/services/deduplication/helpers/component-path-analysis.js"() {
16488
- "use strict";
16489
- }
16490
- });
16491
-
16492
- // packages/experience-design-system-extraction/dist/src/extract/services/deduplication/helpers/component-path-scoring.js
16493
- var init_component_path_scoring = __esm({
16494
- "packages/experience-design-system-extraction/dist/src/extract/services/deduplication/helpers/component-path-scoring.js"() {
16495
- "use strict";
16496
- init_component_path_analysis();
16497
- }
16498
- });
16499
-
16500
- // packages/experience-design-system-extraction/dist/src/extract/services/deduplication/deduplicate-components.js
16501
- var init_deduplicate_components = __esm({
16502
- "packages/experience-design-system-extraction/dist/src/extract/services/deduplication/deduplicate-components.js"() {
16503
- "use strict";
16504
- init_component_path_scoring();
16505
- }
16506
- });
16507
-
16508
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/file-processing/file-workers.js
16509
- var init_file_workers = __esm({
16510
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/file-processing/file-workers.js"() {
16511
- "use strict";
16512
- }
16513
- });
16514
-
16515
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/file-processing/result-normalizer.js
16516
- var init_result_normalizer = __esm({
16517
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/file-processing/result-normalizer.js"() {
16518
- "use strict";
16519
- }
16520
- });
16521
-
16522
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/resolve-type-symbol.js
16523
- var init_resolve_type_symbol = __esm({
16524
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/resolve-type-symbol.js"() {
16525
- "use strict";
16526
- }
16527
- });
16528
-
16529
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/get-node-source-lines.js
16530
- var init_get_node_source_lines = __esm({
16531
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/get-node-source-lines.js"() {
16532
- "use strict";
16533
- }
16534
- });
16535
-
16536
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/astro/helpers/collect-astro-props-bindings.js
16537
- import { Node as Node10, Project as Project7 } from "ts-morph";
16538
- var init_collect_astro_props_bindings = __esm({
16539
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/astro/helpers/collect-astro-props-bindings.js"() {
16540
- "use strict";
16541
- }
16542
- });
16543
-
16544
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/astro/frontmatter.js
16545
- var init_frontmatter = __esm({
16546
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/astro/frontmatter.js"() {
16547
- "use strict";
16548
- init_resolve_type_symbol();
16549
- init_get_node_source_lines();
16550
- init_collect_astro_props_bindings();
16551
- }
16552
- });
16553
-
16554
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/astro/slots.js
16555
- var init_slots = __esm({
16556
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/astro/slots.js"() {
16557
- "use strict";
16558
- }
16559
- });
16560
-
16561
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/astro/extractor.js
16562
- var init_extractor = __esm({
16563
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/astro/extractor.js"() {
16564
- "use strict";
16565
- init_file_workers();
16566
- init_result_normalizer();
16567
- init_frontmatter();
16568
- init_slots();
16569
- }
16570
- });
16571
-
16572
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-tsconfig-path.js
16573
- import ts3 from "typescript";
16574
- var init_resolve_tsx_tsconfig_path = __esm({
16575
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-tsconfig-path.js"() {
16576
- "use strict";
16577
- }
16578
- });
16579
-
16580
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/find-tsx-workspace-package.js
16581
- var init_find_tsx_workspace_package = __esm({
16582
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/find-tsx-workspace-package.js"() {
16583
- "use strict";
16584
- }
16585
- });
16586
-
16587
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-workspace-imports.js
16588
- import { Node as Node11 } from "ts-morph";
16589
- var init_resolve_tsx_workspace_imports = __esm({
16590
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-workspace-imports.js"() {
16591
- "use strict";
16592
- init_resolve_tsx_tsconfig_path();
16593
- init_find_tsx_workspace_package();
16594
- }
16595
- });
16596
-
16597
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/tsx-node-utils.js
16598
- import { Node as Node12, SyntaxKind as SyntaxKind7 } from "ts-morph";
16599
- var init_tsx_node_utils = __esm({
16600
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/tsx-node-utils.js"() {
16601
- "use strict";
16602
- init_resolve_tsx_workspace_imports();
16603
- }
16604
- });
16605
-
16606
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/tsx-renderable-exports.js
16607
- import { Node as Node13 } from "ts-morph";
16608
- var init_tsx_renderable_exports = __esm({
16609
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/tsx-renderable-exports.js"() {
16610
- "use strict";
16611
- }
16612
- });
16613
-
16614
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/tsx-shared.js
16615
- import { Project as Project8 } from "ts-morph";
16616
- var init_tsx_shared = __esm({
16617
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/tsx-shared.js"() {
16618
- "use strict";
16619
- init_tsx_node_utils();
16620
- init_tsx_renderable_exports();
16621
- }
16622
- });
16623
-
16624
- // packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/collect-allowed-component-names.js
16625
- var init_collect_allowed_component_names = __esm({
16626
- "packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/collect-allowed-component-names.js"() {
16627
- "use strict";
16628
- }
16629
- });
16630
-
16631
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/build-component-lookup-maps.js
16632
- var init_build_component_lookup_maps = __esm({
16633
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/build-component-lookup-maps.js"() {
16634
- "use strict";
16635
- }
16636
- });
16637
-
16638
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-allowed-components.js
16639
- var init_extract_react_allowed_components = __esm({
16640
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-allowed-components.js"() {
16641
- "use strict";
16642
- init_collect_allowed_component_names();
16643
- init_build_component_lookup_maps();
16644
- }
16645
- });
16646
-
16647
- // packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/ast/get-jsx-ast-data.js
16648
- import { Node as Node14 } from "ts-morph";
16649
- var init_get_jsx_ast_data = __esm({
16650
- "packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/ast/get-jsx-ast-data.js"() {
16651
- "use strict";
16652
- }
16653
- });
16654
-
16655
- // packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/ast/collect-structural-jsx-evidence.js
16656
- import { SyntaxKind as SyntaxKind8 } from "ts-morph";
16657
- var init_collect_structural_jsx_evidence = __esm({
16658
- "packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/ast/collect-structural-jsx-evidence.js"() {
16659
- "use strict";
16660
- init_tsx_shared();
16661
- init_get_jsx_ast_data();
16662
- }
16663
- });
16664
-
16665
- // packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/collect-jsx-component-references.js
16666
- import { Node as Node15, SyntaxKind as SyntaxKind9 } from "ts-morph";
16667
- var init_collect_jsx_component_references = __esm({
16668
- "packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/collect-jsx-component-references.js"() {
16669
- "use strict";
16670
- init_collect_allowed_component_names();
16671
- init_get_jsx_ast_data();
16672
- init_collect_structural_jsx_evidence();
16673
- }
16674
- });
16675
-
16676
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/synthesize-react-structural-slots.js
16677
- var init_synthesize_react_structural_slots = __esm({
16678
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/synthesize-react-structural-slots.js"() {
16679
- "use strict";
16680
- init_collect_jsx_component_references();
16681
- init_build_component_lookup_maps();
16682
- }
16683
- });
16684
-
16685
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/resolve-react-prop-forwarding.js
16686
- var init_resolve_react_prop_forwarding = __esm({
16687
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/resolve-react-prop-forwarding.js"() {
16688
- "use strict";
16689
- }
16690
- });
16691
-
16692
- // packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/ast/detect-react-node-types.js
16693
- var init_detect_react_node_types = __esm({
16694
- "packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/ast/detect-react-node-types.js"() {
16695
- "use strict";
16696
- }
16697
- });
16698
-
16699
- // packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/detect-slot-from-prop.js
16700
- var init_detect_slot_from_prop = __esm({
16701
- "packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/detect-slot-from-prop.js"() {
16702
- "use strict";
16703
- init_detect_react_node_types();
16704
- init_detect_react_node_types();
16705
- }
16706
- });
16707
-
16708
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/resolve-component-function.js
16709
- import { Node as Node16 } from "ts-morph";
16710
- var init_resolve_component_function = __esm({
16711
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/resolve-component-function.js"() {
16712
- "use strict";
16713
- init_tsx_shared();
16714
- }
16715
- });
16716
-
16717
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/collect-prop-dataflow.js
16718
- import { Node as Node17, SyntaxKind as SyntaxKind10 } from "ts-morph";
16719
- var init_collect_prop_dataflow = __esm({
16720
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/collect-prop-dataflow.js"() {
16721
- "use strict";
16722
- init_tsx_shared();
16723
- init_resolve_component_function();
16724
- }
16725
- });
16726
-
16727
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-slots.js
16728
- var init_extract_react_slots = __esm({
16729
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-slots.js"() {
16730
- "use strict";
16731
- }
16732
- });
16733
-
16734
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/dom-attribute-surfaces.js
16735
- import { Node as Node18 } from "ts-morph";
16736
- function createTextControlSurface2(onChangeType, specificProps) {
16737
- return [
16738
- { name: "autoComplete", type: "string", required: false },
16739
- ...specificProps,
16740
- { name: "disabled", type: "boolean", required: false },
16741
- { name: "name", type: "string", required: false },
16742
- { name: "onChange", type: onChangeType, required: false },
16743
- { name: "placeholder", type: "string", required: false },
16744
- { name: "readOnly", type: "boolean", required: false },
16745
- { name: "required", type: "boolean", required: false },
16746
- {
16747
- name: "value",
16748
- type: "string | number | readonly string[]",
16749
- required: false
16750
- }
16751
- ];
16752
- }
16753
- var DOM_ATTRIBUTE_PROP_SURFACES2;
16754
- var init_dom_attribute_surfaces = __esm({
16755
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/dom-attribute-surfaces.js"() {
16756
- "use strict";
16757
- DOM_ATTRIBUTE_PROP_SURFACES2 = {
16758
- HTMLProps: [],
16759
- HTMLAttributes: [
16760
- { name: "className", type: "string", required: false },
16761
- { name: "hidden", type: "boolean", required: false },
16762
- { name: "id", type: "string", required: false },
16763
- {
16764
- name: "onClick",
16765
- type: "MouseEventHandler<HTMLElement>",
16766
- required: false
16767
- },
16768
- { name: "style", type: "CSSProperties", required: false },
16769
- { name: "tabIndex", type: "number", required: false },
16770
- { name: "title", type: "string", required: false }
16771
- ],
16772
- ImgHTMLAttributes: [
16773
- { name: "alt", type: "string", required: false },
16774
- { name: "crossOrigin", type: "string", required: false },
16775
- { name: "height", type: "number | string", required: false },
16776
- {
16777
- name: "loading",
16778
- type: "string",
16779
- required: false,
16780
- allowedValues: ["eager", "lazy"]
16781
- },
16782
- { name: "sizes", type: "string", required: false },
16783
- { name: "src", type: "string", required: false },
16784
- { name: "srcSet", type: "string", required: false },
16785
- { name: "width", type: "number | string", required: false }
16786
- ],
16787
- LiHTMLAttributes: [],
16788
- AnchorHTMLAttributes: [
16789
- { name: "download", type: "boolean | string", required: false },
16790
- { name: "href", type: "string", required: false },
16791
- { name: "hrefLang", type: "string", required: false },
16792
- { name: "referrerPolicy", type: "string", required: false },
16793
- { name: "rel", type: "string", required: false },
16794
- {
16795
- name: "target",
16796
- type: "string",
16797
- required: false,
16798
- allowedValues: ["_blank", "_parent", "_self", "_top"]
16799
- }
16800
- ],
16801
- ButtonHTMLAttributes: [
16802
- { name: "autoFocus", type: "boolean", required: false },
16803
- { name: "disabled", type: "boolean", required: false },
16804
- { name: "form", type: "string", required: false },
16805
- { name: "formAction", type: "string", required: false },
16806
- { name: "formMethod", type: "string", required: false },
16807
- { name: "formNoValidate", type: "boolean", required: false },
16808
- { name: "formTarget", type: "string", required: false },
16809
- { name: "name", type: "string", required: false },
16810
- {
16811
- name: "type",
16812
- type: "string",
16813
- required: false,
16814
- allowedValues: ["button", "reset", "submit"]
16815
- },
16816
- {
16817
- name: "value",
16818
- type: "string | number | readonly string[]",
16819
- required: false
16820
- }
16821
- ],
16822
- InputHTMLAttributes: createTextControlSurface2("ChangeEventHandler<HTMLInputElement>", [
16823
- { name: "checked", type: "boolean", required: false },
16824
- { name: "max", type: "number | string", required: false },
16825
- { name: "maxLength", type: "number", required: false },
16826
- { name: "min", type: "number | string", required: false },
16827
- { name: "minLength", type: "number", required: false },
16828
- { name: "type", type: "string", required: false }
16829
- ]),
16830
- FieldsetHTMLAttributes: [
16831
- { name: "disabled", type: "boolean", required: false },
16832
- { name: "form", type: "string", required: false },
16833
- { name: "name", type: "string", required: false }
16834
- ],
16835
- LabelHTMLAttributes: [
16836
- { name: "form", type: "string", required: false },
16837
- { name: "htmlFor", type: "string", required: false }
16838
- ],
16839
- SelectHTMLAttributes: [
16840
- { name: "autoComplete", type: "string", required: false },
16841
- { name: "disabled", type: "boolean", required: false },
16842
- { name: "form", type: "string", required: false },
16843
- { name: "multiple", type: "boolean", required: false },
16844
- { name: "name", type: "string", required: false },
16845
- {
16846
- name: "onChange",
16847
- type: "ChangeEventHandler<HTMLSelectElement>",
16848
- required: false
16849
- },
16850
- { name: "required", type: "boolean", required: false },
16851
- { name: "size", type: "number", required: false },
16852
- {
16853
- name: "value",
16854
- type: "string | number | readonly string[]",
16855
- required: false
16856
- }
16857
- ],
16858
- SVGAttributes: [
16859
- {
16860
- name: "focusable",
16861
- type: 'boolean | "auto"',
16862
- required: false,
16863
- allowedValues: ["auto"]
16864
- },
16865
- { name: "height", type: "number | string", required: false },
16866
- { name: "viewBox", type: "string", required: false },
16867
- { name: "width", type: "number | string", required: false }
16868
- ],
16869
- SVGProps: [],
16870
- TextareaHTMLAttributes: createTextControlSurface2("ChangeEventHandler<HTMLTextAreaElement>", [
16871
- { name: "cols", type: "number", required: false },
16872
- { name: "rows", type: "number", required: false },
16873
- { name: "wrap", type: "string", required: false }
16874
- ]),
16875
- TdHTMLAttributes: [
16876
- {
16877
- name: "align",
16878
- type: "string",
16879
- required: false,
16880
- allowedValues: ["center", "char", "justify", "left", "right"]
16881
- },
16882
- { name: "colSpan", type: "number", required: false },
16883
- { name: "headers", type: "string", required: false },
16884
- { name: "rowSpan", type: "number", required: false },
16885
- { name: "scope", type: "string", required: false }
16886
- ]
16887
- };
16888
- }
16889
- });
16890
-
16891
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/collect-dom-wrapper-contexts.js
16892
- import { Node as Node19 } from "ts-morph";
16893
- var init_collect_dom_wrapper_contexts = __esm({
16894
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/collect-dom-wrapper-contexts.js"() {
16895
- "use strict";
16896
- init_tsx_shared();
16897
- init_tsx_node_utils();
16898
- init_dom_attribute_surfaces();
16899
- }
16900
- });
16901
-
16902
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/detect-dom-is-pure-wrapper.js
16903
- import { Node as Node20 } from "ts-morph";
16904
- var init_detect_dom_is_pure_wrapper = __esm({
16905
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/detect-dom-is-pure-wrapper.js"() {
16906
- "use strict";
16907
- init_tsx_shared();
16908
- init_tsx_node_utils();
16909
- init_dom_attribute_surfaces();
16910
- }
16911
- });
16912
-
16913
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/detect-omit-wrapped-custom-props.js
16914
- import { Node as Node21 } from "ts-morph";
16915
- var init_detect_omit_wrapped_custom_props = __esm({
16916
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/detect-omit-wrapped-custom-props.js"() {
16917
- "use strict";
16918
- init_tsx_shared();
16919
- init_tsx_node_utils();
16920
- init_detect_dom_is_pure_wrapper();
16921
- }
16922
- });
16923
-
16924
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/detect-pick-type-patterns.js
16925
- import { Node as Node22 } from "ts-morph";
16926
- var init_detect_pick_type_patterns = __esm({
16927
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/detect-pick-type-patterns.js"() {
16928
- "use strict";
16929
- init_tsx_shared();
16930
- init_tsx_node_utils();
16931
- init_detect_dom_type_patterns();
16932
- }
16933
- });
16934
-
16935
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/detect-dom-type-patterns.js
16936
- var init_detect_dom_type_patterns = __esm({
16937
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/detect-dom-type-patterns.js"() {
16938
- "use strict";
16939
- init_dom_attribute_surfaces();
16940
- init_collect_dom_wrapper_contexts();
16941
- init_detect_dom_is_pure_wrapper();
16942
- init_detect_omit_wrapped_custom_props();
16943
- init_detect_pick_type_patterns();
16944
- init_collect_dom_wrapper_contexts();
16945
- }
16946
- });
16947
-
16948
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/detect-react-polymorphic.js
16949
- import { Node as Node23 } from "ts-morph";
16950
- var init_detect_react_polymorphic = __esm({
16951
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/detect-react-polymorphic.js"() {
16952
- "use strict";
16953
- init_tsx_shared();
16954
- init_tsx_node_utils();
16955
- }
16956
- });
16957
-
16958
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-props-from-type.js
16959
- import { Node as Node24 } from "ts-morph";
16960
- var init_extract_react_props_from_type = __esm({
16961
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-props-from-type.js"() {
16962
- "use strict";
16963
- init_tsx_shared();
16964
- init_get_node_source_lines();
16965
- init_detect_dom_type_patterns();
16966
- init_detect_react_polymorphic();
16967
- init_dom_attribute_surfaces();
16968
- }
16969
- });
16970
-
16971
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/resolve-react-props-type.js
16972
- import { Node as Node25 } from "ts-morph";
16973
- var init_resolve_react_props_type = __esm({
16974
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/resolve-react-props-type.js"() {
16975
- "use strict";
16976
- init_tsx_shared();
16977
- init_detect_dom_type_patterns();
16978
- }
16979
- });
16980
-
16981
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/filter-impl-alias-props.js
16982
- import { Node as Node26 } from "ts-morph";
16983
- var init_filter_impl_alias_props = __esm({
16984
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/filter-impl-alias-props.js"() {
16985
- "use strict";
16986
- }
16987
- });
16988
-
16989
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-binding-fallback-props.js
16990
- import { Node as Node27, SyntaxKind as SyntaxKind11 } from "ts-morph";
16991
- var init_extract_binding_fallback_props = __esm({
16992
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-binding-fallback-props.js"() {
16993
- "use strict";
16994
- init_get_node_source_lines();
16995
- }
16996
- });
16997
-
16998
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-binding-defaults.js
16999
- import { Node as Node28 } from "ts-morph";
17000
- var init_extract_react_binding_defaults = __esm({
17001
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-binding-defaults.js"() {
17002
- "use strict";
17003
- init_filter_impl_alias_props();
17004
- init_extract_binding_fallback_props();
17005
- }
17006
- });
17007
-
17008
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/infer-primitive-dom-props.js
17009
- import { Node as Node29, SyntaxKind as SyntaxKind12 } from "ts-morph";
17010
- var init_infer_primitive_dom_props = __esm({
17011
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/infer-primitive-dom-props.js"() {
17012
- "use strict";
17013
- init_tsx_shared();
17014
- init_dom_attribute_surfaces();
17015
- }
17016
- });
17017
-
17018
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/collect-react-impl-hints.js
17019
- import { Node as Node30, SyntaxKind as SyntaxKind13 } from "ts-morph";
17020
- var init_collect_react_impl_hints = __esm({
17021
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/collect-react-impl-hints.js"() {
17022
- "use strict";
17023
- init_infer_primitive_dom_props();
17024
- }
17025
- });
17026
-
17027
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-prop-types.js
17028
- import { Node as Node31 } from "ts-morph";
17029
- var init_extract_react_prop_types = __esm({
17030
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-prop-types.js"() {
17031
- "use strict";
17032
- }
17033
- });
17034
-
17035
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-component-from-export.js
17036
- import { Node as Node32 } from "ts-morph";
17037
- var init_extract_react_component_from_export = __esm({
17038
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-react-component-from-export.js"() {
17039
- "use strict";
17040
- init_detect_slot_from_prop();
17041
- init_collect_prop_dataflow();
17042
- init_resolve_component_function();
17043
- init_extract_react_slots();
17044
- init_extract_react_props_from_type();
17045
- init_detect_dom_type_patterns();
17046
- init_resolve_react_props_type();
17047
- init_extract_react_binding_defaults();
17048
- init_collect_react_impl_hints();
17049
- init_extract_react_prop_types();
17050
- }
17051
- });
17052
-
17053
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-from-react-source-file.js
17054
- import { SyntaxKind as SyntaxKind14 } from "ts-morph";
17055
- var init_extract_from_react_source_file = __esm({
17056
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/helpers/extract-from-react-source-file.js"() {
17057
- "use strict";
17058
- init_tsx_shared();
17059
- init_extract_react_component_from_export();
17060
- }
17061
- });
17062
-
17063
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/extractor.js
17064
- var init_extractor2 = __esm({
17065
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/react/extractor.js"() {
17066
- "use strict";
17067
- init_tsx_shared();
17068
- init_extract_react_allowed_components();
17069
- init_synthesize_react_structural_slots();
17070
- init_resolve_react_prop_forwarding();
17071
- init_extract_from_react_source_file();
17072
- }
17073
- });
17074
-
17075
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/file-processing/project-source-files.js
17076
- var init_project_source_files = __esm({
17077
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/file-processing/project-source-files.js"() {
17078
- "use strict";
17079
- }
17080
- });
17081
-
17082
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/stencil/helpers/detect-stencil-class.js
17083
- import { Node as Node33 } from "ts-morph";
17084
- var init_detect_stencil_class = __esm({
17085
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/stencil/helpers/detect-stencil-class.js"() {
17086
- "use strict";
17087
- }
17088
- });
17089
-
17090
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/stencil/helpers/stencil-prop-helpers.js
17091
- import { Node as Node34, SyntaxKind as SyntaxKind15 } from "ts-morph";
17092
- var init_stencil_prop_helpers = __esm({
17093
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/stencil/helpers/stencil-prop-helpers.js"() {
17094
- "use strict";
17095
- init_tsx_shared();
17096
- }
17097
- });
17098
-
17099
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-props.js
17100
- import { Node as Node35 } from "ts-morph";
17101
- var init_extract_stencil_props = __esm({
17102
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-props.js"() {
17103
- "use strict";
17104
- init_detect_stencil_class();
17105
- init_stencil_prop_helpers();
17106
- init_stencil_prop_helpers();
17107
- }
17108
- });
17109
-
17110
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/collect-jsdoc-slot-comments.js
17111
- var init_collect_jsdoc_slot_comments = __esm({
17112
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/collect-jsdoc-slot-comments.js"() {
17113
- "use strict";
17114
- }
17115
- });
17116
-
17117
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-slots.js
17118
- import { Node as Node36 } from "ts-morph";
17119
- var init_extract_stencil_slots = __esm({
17120
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-slots.js"() {
17121
- "use strict";
17122
- init_collect_jsdoc_slot_comments();
17123
- }
17124
- });
17125
-
17126
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/stencil/extractor.js
17127
- import { Project as Project9, Node as Node37 } from "ts-morph";
17128
- var init_extractor3 = __esm({
17129
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/stencil/extractor.js"() {
17130
- "use strict";
17131
- init_tsx_shared();
17132
- init_result_normalizer();
17133
- init_project_source_files();
17134
- init_detect_stencil_class();
17135
- init_extract_stencil_props();
17136
- init_extract_stencil_slots();
17137
- }
17138
- });
17139
-
17140
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/get-svelte-component-name.js
17141
- var init_get_svelte_component_name = __esm({
17142
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/get-svelte-component-name.js"() {
17143
- "use strict";
17144
- }
17145
- });
17146
-
17147
- // packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/scoring/collect-scoring-inputs.js
17148
- function isWidePrimitiveUnion2(type) {
17149
- const parts = type.split("|").map((p) => p.trim());
17150
- if (parts.length < 3)
17151
- return false;
17152
- const basePrimitives = /* @__PURE__ */ new Set(["string", "number", "boolean"]);
17153
- const nullability = /* @__PURE__ */ new Set(["null", "undefined"]);
17154
- const baseCount = parts.filter((p) => basePrimitives.has(p)).length;
17155
- const nullabilityCount = parts.filter((p) => nullability.has(p)).length;
17156
- return baseCount >= 3 || baseCount >= 2 && nullabilityCount > 0 && baseCount + nullabilityCount >= 3;
17157
- }
17158
- function countExtractionIssues(component, options = {}) {
17159
- let count = 0;
17160
- const reasons = [];
17161
- if (component.props.length === 0 && component.slots.length === 0) {
17162
- count++;
17163
- reasons.push("no-props-or-slots");
17164
- }
17165
- if (component.props.length > 50) {
17166
- count++;
17167
- reasons.push(`high-prop-count:${component.props.length}`);
17168
- }
17169
- for (const prop of component.props) {
17170
- if (OPAQUE_TYPES2.has(prop.type.trim())) {
17171
- count++;
17172
- reasons.push(`opaque-type:${prop.name}`);
17173
- break;
17174
- }
17175
- if (isWidePrimitiveUnion2(prop.type)) {
17176
- count++;
17177
- reasons.push(`wide-union:${prop.name}`);
17178
- break;
17179
- }
17180
- if (!prop.description && !OBVIOUS_PROP_NAMES2.has(prop.name)) {
17181
- count++;
17182
- reasons.push("props-missing-description");
17183
- break;
17184
- }
17185
- }
17186
- count += options.additionalIssueCount ?? 0;
17187
- if (options.additionalReasons && options.additionalReasons.length > 0) {
17188
- reasons.push(...options.additionalReasons);
17189
- }
17190
- return { count, reasons: [...new Set(reasons)] };
17191
- }
17192
- function mapIssueCountToConfidence(count) {
17193
- if (count === 0)
17194
- return 5;
17195
- if (count === 1)
17196
- return 4;
17197
- if (count === 2)
17198
- return 3;
17199
- if (count === 3)
17200
- return 2;
17201
- return 1;
17202
- }
17203
- var OPAQUE_TYPES2, OBVIOUS_PROP_NAMES2;
17204
- var init_collect_scoring_inputs = __esm({
17205
- "packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/scoring/collect-scoring-inputs.js"() {
17206
- "use strict";
17207
- OPAQUE_TYPES2 = /* @__PURE__ */ new Set(["any", "unknown", "object", "Record<string, unknown>", "Record<string, any>"]);
17208
- OBVIOUS_PROP_NAMES2 = /* @__PURE__ */ new Set([
17209
- "className",
17210
- "style",
17211
- "id",
17212
- "children",
17213
- "disabled",
17214
- "hidden",
17215
- "onClick",
17216
- "onChange",
17217
- "onSubmit",
17218
- "onBlur",
17219
- "onFocus",
17220
- "href",
17221
- "src",
17222
- "alt",
17223
- "type",
17224
- "value",
17225
- "checked",
17226
- "placeholder",
17227
- "label",
17228
- "title",
17229
- "name",
17230
- "required",
17231
- "readOnly",
17232
- "autoFocus",
17233
- "tabIndex",
17234
- "role",
17235
- "aria-label",
17236
- "aria-describedby"
17237
- ]);
17238
- }
17239
- });
17240
-
17241
- // packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/scoring/compute-extraction-score.js
17242
- function computeExtractionScore2(component, options = {}) {
17243
- const { count, reasons } = countExtractionIssues(component, options);
17244
- return {
17245
- confidence: mapIssueCountToConfidence(count),
17246
- reasons
17247
- };
17248
- }
17249
- function deriveNeedsReview2(confidence) {
17250
- return confidence <= 2;
17251
- }
17252
- var init_compute_extraction_score = __esm({
17253
- "packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/scoring/compute-extraction-score.js"() {
17254
- "use strict";
17255
- init_collect_scoring_inputs();
17256
- }
17257
- });
17258
-
17259
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-template-slots.js
17260
- var init_extract_svelte_template_slots = __esm({
17261
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-template-slots.js"() {
17262
- "use strict";
17263
- }
17264
- });
17265
-
17266
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/collect-svelte-type-references.js
17267
- var init_collect_svelte_type_references = __esm({
17268
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/collect-svelte-type-references.js"() {
17269
- "use strict";
17270
- }
17271
- });
17272
-
17273
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/find-svelte-script-declarations.js
17274
- var init_find_svelte_script_declarations = __esm({
17275
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/find-svelte-script-declarations.js"() {
17276
- "use strict";
17277
- init_collect_svelte_type_references();
17278
- }
17279
- });
17280
-
17281
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type-strings.js
17282
- var init_render_svelte_type_strings = __esm({
17283
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type-strings.js"() {
17284
- "use strict";
17285
- }
17286
- });
17287
-
17288
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type.js
17289
- var init_render_svelte_type = __esm({
17290
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type.js"() {
17291
- "use strict";
17292
- init_render_svelte_type_strings();
17293
- }
17294
- });
17295
-
17296
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-ast-type-members.js
17297
- var init_extract_svelte_ast_type_members = __esm({
17298
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-ast-type-members.js"() {
17299
- "use strict";
17300
- init_render_svelte_type();
17301
- }
17302
- });
17303
-
17304
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-declaration-data.js
17305
- import { Node as Node38 } from "ts-morph";
17306
- var init_extract_svelte_declaration_data = __esm({
17307
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-declaration-data.js"() {
17308
- "use strict";
17309
- }
17310
- });
17311
-
17312
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-checker.js
17313
- import { Project as Project10, ScriptTarget as ScriptTarget2, ModuleKind as ModuleKind2, ts as ts4 } from "ts-morph";
17314
- var init_resolve_svelte_type_checker = __esm({
17315
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-checker.js"() {
17316
- "use strict";
17317
- init_render_svelte_type();
17318
- init_extract_svelte_declaration_data();
17319
- }
17320
- });
17321
-
17322
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/resolve-import-file-path.js
17323
- var init_resolve_import_file_path = __esm({
17324
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/shared/helpers/resolve-import-file-path.js"() {
17325
- "use strict";
17326
- }
17327
- });
17328
-
17329
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-external-type-members.js
17330
- import { Node as Node39 } from "ts-morph";
17331
- var init_extract_svelte_external_type_members = __esm({
17332
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-external-type-members.js"() {
17333
- "use strict";
17334
- init_render_svelte_type();
17335
- }
17336
- });
17337
-
17338
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-external-type-readers.js
17339
- import { Node as Node40, Project as Project11, ScriptTarget as ScriptTarget3, ModuleKind as ModuleKind3 } from "ts-morph";
17340
- var init_resolve_svelte_external_type_readers = __esm({
17341
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-external-type-readers.js"() {
17342
- "use strict";
17343
- init_resolve_import_file_path();
17344
- init_extract_svelte_external_type_members();
17345
- }
17346
- });
17347
-
17348
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-members.js
17349
- var init_resolve_svelte_type_members = __esm({
17350
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-members.js"() {
17351
- "use strict";
17352
- init_find_svelte_script_declarations();
17353
- init_extract_svelte_ast_type_members();
17354
- init_resolve_svelte_type_checker();
17355
- init_resolve_svelte_external_type_readers();
17356
- init_extract_svelte_ast_type_members();
17357
- init_resolve_svelte_type_checker();
17358
- }
17359
- });
17360
-
17361
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-from-destructure.js
17362
- var init_extract_svelte_from_destructure = __esm({
17363
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-from-destructure.js"() {
17364
- "use strict";
17365
- init_render_svelte_type();
17366
- }
17367
- });
17368
-
17369
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-type-member-props.js
17370
- var init_extract_svelte_type_member_props = __esm({
17371
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-type-member-props.js"() {
17372
- "use strict";
17373
- }
17374
- });
17375
-
17376
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/classify-svelte-props-annotation.js
17377
- var init_classify_svelte_props_annotation = __esm({
17378
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/classify-svelte-props-annotation.js"() {
17379
- "use strict";
17380
- init_find_svelte_script_declarations();
17381
- }
17382
- });
17383
-
17384
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-props.js
17385
- var init_extract_svelte_props = __esm({
17386
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-props.js"() {
17387
- "use strict";
17388
- init_resolve_svelte_type_members();
17389
- init_extract_svelte_from_destructure();
17390
- init_extract_svelte_type_member_props();
17391
- init_classify_svelte_props_annotation();
17392
- init_classify_svelte_props_annotation();
17393
- }
17394
- });
17395
-
17396
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-dts-location.js
17397
- var init_resolve_dts_location = __esm({
17398
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-dts-location.js"() {
17399
- "use strict";
17400
- }
17401
- });
17402
-
17403
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-unresolved-retry.js
17404
- import { Project as Project12, ScriptTarget as ScriptTarget4, ModuleKind as ModuleKind4, ts as ts5 } from "ts-morph";
17405
- var init_resolve_svelte_unresolved_retry = __esm({
17406
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-unresolved-retry.js"() {
17407
- "use strict";
17408
- init_compute_extraction_score();
17409
- init_extract_svelte_template_slots();
17410
- init_find_svelte_script_declarations();
17411
- init_resolve_svelte_type_members();
17412
- init_extract_svelte_props();
17413
- init_resolve_dts_location();
17414
- }
17415
- });
17416
-
17417
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-allowed-components.js
17418
- var init_resolve_svelte_allowed_components = __esm({
17419
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-allowed-components.js"() {
17420
- "use strict";
17421
- init_collect_allowed_component_names();
17422
- init_build_component_lookup_maps();
17423
- }
17424
- });
17425
-
17426
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-from-svelte-file.js
17427
- import { parse as parseSvelte2 } from "svelte/compiler";
17428
- var init_extract_from_svelte_file = __esm({
17429
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/helpers/extract-from-svelte-file.js"() {
17430
- "use strict";
17431
- init_compute_extraction_score();
17432
- init_get_svelte_component_name();
17433
- init_extract_svelte_template_slots();
17434
- init_find_svelte_script_declarations();
17435
- init_extract_svelte_props();
17436
- }
17437
- });
17438
-
17439
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/extractor.js
17440
- var init_extractor4 = __esm({
17441
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/svelte/extractor.js"() {
17442
- "use strict";
17443
- init_file_workers();
17444
- init_get_svelte_component_name();
17445
- init_resolve_svelte_unresolved_retry();
17446
- init_resolve_svelte_allowed_components();
17447
- init_extract_from_svelte_file();
17448
- }
17449
- });
17450
-
17451
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue-tsx/helpers/resolve-ast-object.js
17452
- import { Node as Node41, SyntaxKind as SyntaxKind16 } from "ts-morph";
17453
- var init_resolve_ast_object = __esm({
17454
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue-tsx/helpers/resolve-ast-object.js"() {
17455
- "use strict";
17456
- init_tsx_shared();
17457
- }
17458
- });
17459
-
17460
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-props.js
17461
- import { Node as Node42 } from "ts-morph";
17462
- var init_extract_vue_tsx_props = __esm({
17463
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-props.js"() {
17464
- "use strict";
17465
- init_tsx_shared();
17466
- init_resolve_ast_object();
17467
- }
17468
- });
17469
-
17470
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-slots.js
17471
- import { Node as Node43, SyntaxKind as SyntaxKind17 } from "ts-morph";
17472
- var init_extract_vue_tsx_slots = __esm({
17473
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-slots.js"() {
17474
- "use strict";
17475
- init_tsx_shared();
17476
- }
17477
- });
17478
-
17479
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue-tsx/extractor.js
17480
- import { Node as Node44 } from "ts-morph";
17481
- var init_extractor5 = __esm({
17482
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue-tsx/extractor.js"() {
17483
- "use strict";
17484
- init_tsx_shared();
17485
- init_extract_vue_tsx_props();
17486
- init_extract_vue_tsx_slots();
17487
- }
17488
- });
17489
-
17490
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/resolve-vue-component-name.js
17491
- var init_resolve_vue_component_name = __esm({
17492
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/resolve-vue-component-name.js"() {
17493
- "use strict";
17494
- }
17495
- });
17496
-
17497
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/extract-vue-slots.js
17498
- var init_extract_vue_slots = __esm({
17499
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/extract-vue-slots.js"() {
17500
- "use strict";
17501
- }
17502
- });
17503
-
17504
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/extract-vue-object-props.js
17505
- import { Node as Node45 } from "ts-morph";
17506
- var init_extract_vue_object_props = __esm({
17507
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/extract-vue-object-props.js"() {
17508
- "use strict";
17509
- }
17510
- });
17511
-
17512
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-object-props.js
17513
- import { Project as Project13, Node as Node46 } from "ts-morph";
17514
- var init_extract_vue_setup_object_props = __esm({
17515
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-object-props.js"() {
17516
- "use strict";
17517
- init_resolve_import_file_path();
17518
- init_extract_vue_object_props();
17519
- }
17520
- });
17521
-
17522
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-props.js
17523
- import { Project as Project14, Node as Node47 } from "ts-morph";
17524
- var init_extract_vue_setup_props = __esm({
17525
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-props.js"() {
17526
- "use strict";
17527
- init_resolve_type_symbol();
17528
- init_extract_vue_setup_object_props();
17529
- }
17530
- });
17531
-
17532
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/workspace-package-dirs.js
17533
- var init_workspace_package_dirs = __esm({
17534
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/workspace-package-dirs.js"() {
17535
- "use strict";
17536
- }
17537
- });
17538
-
17539
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/resolve-workspace-module.js
17540
- var init_resolve_workspace_module = __esm({
17541
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/resolve-workspace-module.js"() {
17542
- "use strict";
17543
- init_workspace_package_dirs();
17544
- }
17545
- });
17546
-
17547
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/extract-vue-options-props.js
17548
- import { parse as parseSFC2 } from "@vue/compiler-sfc";
17549
- import { Node as Node48, Project as Project15 } from "ts-morph";
17550
- var init_extract_vue_options_props = __esm({
17551
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/helpers/extract-vue-options-props.js"() {
17552
- "use strict";
17553
- init_resolve_workspace_module();
17554
- init_extract_vue_object_props();
17555
- init_extract_vue_object_props();
17556
- }
17557
- });
17558
-
17559
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/extractor.js
17560
- import { parse as parseSFC3 } from "@vue/compiler-sfc";
17561
- var init_extractor6 = __esm({
17562
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/vue/extractor.js"() {
17563
- "use strict";
17564
- init_file_workers();
17565
- init_result_normalizer();
17566
- init_resolve_vue_component_name();
17567
- init_extract_vue_slots();
17568
- init_extract_vue_setup_props();
17569
- init_extract_vue_options_props();
17570
- }
17571
- });
17572
-
17573
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-observed-attrs.js
17574
- import { Node as Node49 } from "ts-morph";
17575
- var init_extract_wc_observed_attrs = __esm({
17576
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-observed-attrs.js"() {
17577
- "use strict";
17578
- }
17579
- });
17580
-
17581
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/detect-wc-non-public-members.js
17582
- var init_detect_wc_non_public_members = __esm({
17583
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/detect-wc-non-public-members.js"() {
17584
- "use strict";
17585
- }
17586
- });
17587
-
17588
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-accessor-props.js
17589
- var init_extract_wc_accessor_props = __esm({
17590
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-accessor-props.js"() {
17591
- "use strict";
17592
- init_detect_wc_non_public_members();
17593
- }
17594
- });
17595
-
17596
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-jsdoc-attr-props.js
17597
- var init_extract_wc_jsdoc_attr_props = __esm({
17598
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-jsdoc-attr-props.js"() {
17599
- "use strict";
17600
- }
17601
- });
17602
-
17603
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-class-properties.js
17604
- import { Node as Node50 } from "ts-morph";
17605
- var init_extract_wc_class_properties = __esm({
17606
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-class-properties.js"() {
17607
- "use strict";
17608
- init_detect_wc_non_public_members();
17609
- }
17610
- });
17611
-
17612
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/merge-wc-prop-lists.js
17613
- var init_merge_wc_prop_lists = __esm({
17614
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/merge-wc-prop-lists.js"() {
17615
- "use strict";
17616
- init_extract_wc_observed_attrs();
17617
- init_extract_wc_accessor_props();
17618
- init_extract_wc_jsdoc_attr_props();
17619
- init_extract_wc_class_properties();
17620
- }
17621
- });
17622
-
17623
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-decorator-tag.js
17624
- import { Node as Node51 } from "ts-morph";
17625
- var init_resolve_wc_decorator_tag = __esm({
17626
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-decorator-tag.js"() {
17627
- "use strict";
17628
- }
17629
- });
17630
-
17631
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import-source.js
17632
- import { Node as Node52 } from "ts-morph";
17633
- var init_resolve_wc_import_source = __esm({
17634
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import-source.js"() {
17635
- "use strict";
17636
- }
17637
- });
17638
-
17639
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import.js
17640
- import { Node as Node53, SyntaxKind as SyntaxKind18 } from "ts-morph";
17641
- var init_resolve_wc_import = __esm({
17642
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import.js"() {
17643
- "use strict";
17644
- init_resolve_wc_import_source();
17645
- }
17646
- });
17647
-
17648
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-sibling-definition.js
17649
- import { Node as Node54, SyntaxKind as SyntaxKind19 } from "ts-morph";
17650
- var init_resolve_wc_sibling_definition = __esm({
17651
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-sibling-definition.js"() {
17652
- "use strict";
17653
- init_resolve_wc_import();
17654
- }
17655
- });
17656
-
17657
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-tag-name.js
17658
- var init_resolve_wc_tag_name = __esm({
17659
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-tag-name.js"() {
17660
- "use strict";
17661
- init_tsx_shared();
17662
- init_resolve_wc_decorator_tag();
17663
- init_resolve_wc_sibling_definition();
17664
- }
17665
- });
17666
-
17667
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/collect-wc-html-templates.js
17668
- import { Node as Node55 } from "ts-morph";
17669
- var init_collect_wc_html_templates = __esm({
17670
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/collect-wc-html-templates.js"() {
17671
- "use strict";
17672
- init_resolve_wc_import();
17673
- }
17674
- });
17675
-
17676
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-template-content.js
17677
- import { Node as Node56 } from "ts-morph";
17678
- var init_extract_wc_template_content = __esm({
17679
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-template-content.js"() {
17680
- "use strict";
17681
- init_resolve_wc_import();
17682
- init_extract_wc_slots();
17683
- init_collect_wc_html_templates();
17684
- }
17685
- });
17686
-
17687
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-slots.js
17688
- var init_extract_wc_slots = __esm({
17689
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-slots.js"() {
17690
- "use strict";
17691
- init_collect_jsdoc_slot_comments();
17692
- init_extract_wc_template_content();
17693
- }
17694
- });
17695
-
17696
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-base-class.js
17697
- import { Node as Node57, SyntaxKind as SyntaxKind20 } from "ts-morph";
17698
- var init_resolve_wc_base_class = __esm({
17699
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-base-class.js"() {
17700
- "use strict";
17701
- init_resolve_wc_import();
17702
- }
17703
- });
17704
-
17705
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-inheritance.js
17706
- var init_extract_wc_inheritance = __esm({
17707
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-inheritance.js"() {
17708
- "use strict";
17709
- init_merge_wc_prop_lists();
17710
- init_extract_wc_slots();
17711
- init_resolve_wc_base_class();
17712
- }
17713
- });
17714
-
17715
- // packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/extractor.js
17716
- import { Project as Project16 } from "ts-morph";
17717
- var init_extractor7 = __esm({
17718
- "packages/experience-design-system-extraction/dist/src/extract/framework-adapters/web-components/extractor.js"() {
17719
- "use strict";
17720
- init_result_normalizer();
17721
- init_project_source_files();
17722
- init_merge_wc_prop_lists();
17723
- init_resolve_wc_tag_name();
17724
- init_extract_wc_slots();
17725
- init_extract_wc_inheritance();
17726
- }
17727
- });
17728
-
17729
- // packages/experience-design-system-extraction/dist/src/extract/services/extraction/helpers/register-extractors.js
17730
- var init_register_extractors = __esm({
17731
- "packages/experience-design-system-extraction/dist/src/extract/services/extraction/helpers/register-extractors.js"() {
17732
- "use strict";
17733
- init_extractor();
17734
- init_extractor2();
17735
- init_extractor3();
17736
- init_extractor4();
17737
- init_extractor5();
17738
- init_extractor6();
17739
- init_extractor7();
17740
- }
17741
- });
17742
-
17743
- // packages/experience-design-system-extraction/dist/src/extract/services/extraction/helpers/run-extractor-batches.js
17744
- var init_run_extractor_batches = __esm({
17745
- "packages/experience-design-system-extraction/dist/src/extract/services/extraction/helpers/run-extractor-batches.js"() {
17746
- "use strict";
17747
- }
17748
- });
17749
-
17750
- // packages/experience-design-system-extraction/dist/src/extract/services/extraction/helpers/collect-sveltekit-route-exclusions.js
17751
- var init_collect_sveltekit_route_exclusions = __esm({
17752
- "packages/experience-design-system-extraction/dist/src/extract/services/extraction/helpers/collect-sveltekit-route-exclusions.js"() {
17753
- "use strict";
17754
- }
17755
- });
17756
-
17757
- // packages/experience-design-system-extraction/dist/src/extract/services/extraction/helpers/filter-hook-components.js
17758
- var init_filter_hook_components = __esm({
17759
- "packages/experience-design-system-extraction/dist/src/extract/services/extraction/helpers/filter-hook-components.js"() {
17760
- "use strict";
17761
- }
17762
- });
17763
-
17764
- // packages/experience-design-system-extraction/dist/src/extract/services/extraction/extract-components.js
17765
- var init_extract_components = __esm({
17766
- "packages/experience-design-system-extraction/dist/src/extract/services/extraction/extract-components.js"() {
17767
- "use strict";
17768
- init_deduplicate_components();
17769
- init_register_extractors();
17770
- init_run_extractor_batches();
17771
- init_collect_sveltekit_route_exclusions();
17772
- init_filter_hook_components();
17773
- }
17774
- });
17775
-
17776
- // packages/experience-design-system-extraction/dist/src/extract/services/classification/helpers/check-prop-types.js
17777
- function isStringLiteralUnion(type) {
17778
- return type.includes("|") && type.includes("'");
17779
- }
17780
- function isSimpleType(type) {
17781
- const t = type.trim();
17782
- if (t === "string" || t === "boolean" || t === "number")
17783
- return true;
17784
- return isStringLiteralUnion(t);
17785
- }
17786
- function isBooleanType(type) {
17787
- return type.trim() === "boolean";
17788
- }
17789
- function isStringType(type) {
17790
- return type.trim() === "string";
17791
- }
17792
- function isNumberType(type) {
17793
- return type.trim() === "number";
17794
- }
17795
- function isComplexType(type) {
17796
- return !isSimpleType(type);
17797
- }
17798
- var init_check_prop_types = __esm({
17799
- "packages/experience-design-system-extraction/dist/src/extract/services/classification/helpers/check-prop-types.js"() {
17800
- "use strict";
17801
- }
17802
- });
17803
-
17804
- // packages/experience-design-system-extraction/dist/src/extract/services/classification/helpers/detect-dom-props.js
17805
- function isDomPassThroughProp(name) {
17806
- if (DOM_PASS_THROUGH_PROPS.has(name))
17807
- return true;
17808
- if (/^aria[-A-Z]/.test(name))
17809
- return true;
17810
- return name.startsWith("data-");
17811
- }
17812
- var DOM_PASS_THROUGH_PROPS;
17813
- var init_detect_dom_props = __esm({
17814
- "packages/experience-design-system-extraction/dist/src/extract/services/classification/helpers/detect-dom-props.js"() {
17815
- "use strict";
17816
- DOM_PASS_THROUGH_PROPS = /* @__PURE__ */ new Set([
17817
- // Bare HTML / framework styling pass-through
17818
- "className",
17819
- "class",
17820
- "classes",
17821
- "classNames",
17822
- "rootClassName",
17823
- "prefixCls",
17824
- "style",
17825
- "styles",
17826
- // Bare HTML attributes
17827
- "id",
17828
- "role",
17829
- "tabIndex",
17830
- "tabindex",
17831
- "htmlFor",
17832
- "for",
17833
- "slot",
17834
- "is",
17835
- "lang",
17836
- "dir",
17837
- "hidden",
17838
- "draggable",
17839
- "spellCheck",
17840
- "spellcheck",
17841
- "contentEditable",
17842
- "contenteditable",
17843
- "inputMode",
17844
- "inputmode",
17845
- "autoComplete",
17846
- "autocomplete",
17847
- "autoFocus",
17848
- "autofocus",
17849
- "translate",
17850
- "part",
17851
- "exportparts",
17852
- "aria",
17853
- // Framework theming / pass-through escape hatches — dev-facing, never marketer-configurable
17854
- "dt",
17855
- "pt",
17856
- "ptOptions",
17857
- "unstyled",
17858
- "sx",
17859
- // Polymorphic component props — change rendered HTML/component, not marketer-visible behavior
17860
- "as",
17861
- "element",
17862
- "component",
17863
- // QA / vendor test attributes
17864
- "dataQa",
17865
- "data-qa",
17866
- // Vue v-model internals — framework wiring, never marketer-configurable
17867
- "modelValue",
17868
- "modelModifiers"
17869
- ]);
17870
- }
17871
- });
17872
-
17873
- // packages/experience-design-system-extraction/dist/src/extract/services/classification/classify-component-props.js
17874
- function preClassifyProp(prop) {
17875
- const { name, type } = prop;
17876
- if (/^on[A-Z]/.test(name) || type.includes("=> void") || type.includes("EventHandler")) {
17877
- return { category: "exclude" };
17878
- }
17879
- if (name === "ref" || name === "innerRef" || type.includes("Ref<") || type.includes("RefObject<")) {
17880
- return { category: "exclude" };
17881
- }
17882
- if (name === "testId" || name === "data-testid" || name === "dataTestId") {
17883
- return { category: "exclude" };
17884
- }
17885
- if (name === "key") {
17886
- return { category: "exclude" };
17887
- }
17888
- if (type.includes("Dispatch<") || type.includes("SetStateAction")) {
17889
- return { category: "exclude" };
17890
- }
17891
- if (isDomPassThroughProp(name)) {
17892
- return { category: "exclude" };
17893
- }
17894
- if (name === "name" && prop.domAttribute) {
17895
- return { category: "exclude" };
17896
- }
17897
- if (isStringLiteralUnion(type)) {
17898
- return { category: "design", cdfTypeHint: "enum" };
17899
- }
17900
- if (!isComplexType(type)) {
17901
- const designNameStart = /^(variant|size|spacing|gap|color|bg|theme|align|layout|orientation|position)/i;
17902
- const designNameEnd = /(Color|Size|Variant|Style)$/;
17903
- if (designNameStart.test(name) || designNameEnd.test(name)) {
17904
- return { category: "design", cdfTypeHint: "string" };
17905
- }
17906
- }
17907
- if (isBooleanType(type)) {
17908
- const stateNames = ["disabled", "loading", "expanded", "isOpen", "selected", "checked", "active", "preview"];
17909
- if (stateNames.includes(name)) {
17910
- return { category: "state", cdfTypeHint: "boolean" };
17911
- }
17912
- }
17913
- if (isBooleanType(type)) {
17914
- const visualToggle = /^(hide|show|enable|disable|vertical|horizontal|reverse|bold|italic|imageOn|with)/i;
17915
- if (visualToggle.test(name)) {
17916
- return { category: "design", cdfTypeHint: "boolean" };
17917
- }
17918
- }
17919
- if (name === "componentId" || name === "sectionKey" || name === "locale" || name === "variantIndex") {
17920
- return { category: "state", cdfTypeHint: "string" };
17921
- }
17922
- if (isStringType(type)) {
17923
- const urlNameStart = /^(href|url|link|src)/i;
17924
- const urlNameEnd = /(Url|Href|Link|Src)$/;
17925
- if (urlNameStart.test(name) || urlNameEnd.test(name)) {
17926
- return { category: "content", cdfTypeHint: "string" };
17927
- }
17928
- }
17929
- if (isStringType(type)) {
17930
- const textNameStart = /^(label|title|text|description|caption|heading|subheading|body|alt|name|placeholder|summary)/i;
17931
- const textNameEnd = /(Text|Label|Title|Name)$/;
17932
- if (textNameStart.test(name) || textNameEnd.test(name)) {
17933
- return { category: "content", cdfTypeHint: "string" };
17934
- }
17935
- }
17936
- if (isStringType(type)) {
17937
- return { category: "content", cdfTypeHint: "string" };
17938
- }
17939
- if (isBooleanType(type)) {
17940
- return { category: "design", cdfTypeHint: "boolean" };
17941
- }
17942
- if (isNumberType(type)) {
17943
- return { category: "design", cdfTypeHint: "string" };
17944
- }
17945
- return void 0;
17946
- }
17947
- function preClassifyComponent(component) {
17948
- const props = component.props.flatMap((prop) => {
17949
- const result = preClassifyProp(prop);
17950
- if (result?.category === "exclude") {
17951
- return [];
17952
- }
17953
- const { domAttribute: _domAttribute, ...authorableProp } = prop;
17954
- if (prop.category) {
17955
- return [authorableProp];
17956
- }
17957
- if (!result) {
17958
- return [authorableProp];
17959
- }
17960
- return [
17961
- {
17962
- ...authorableProp,
17963
- category: result.category
17964
- }
17965
- ];
17966
- });
17967
- return { ...component, props };
17968
- }
17969
- var init_classify_component_props = __esm({
17970
- "packages/experience-design-system-extraction/dist/src/extract/services/classification/classify-component-props.js"() {
17971
- "use strict";
17972
- init_check_prop_types();
17973
- init_detect_dom_props();
17974
- }
17975
- });
17976
-
17977
- // packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/authorability/evaluate-authorability.js
16478
+ // packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/helpers/quality/non-authorable-filter.js
17978
16479
  function isHandlerOrRefProp(prop) {
17979
16480
  if (HANDLER_TYPE_PATTERN.test(prop.type))
17980
16481
  return true;
@@ -18025,15 +16526,34 @@ function hasNoAuthoringSurface(component) {
18025
16526
  return { skip: false };
18026
16527
  }
18027
16528
  var HANDLER_TYPE_PATTERN, REF_TYPE_PATTERN;
18028
- var init_evaluate_authorability = __esm({
18029
- "packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/authorability/evaluate-authorability.js"() {
16529
+ var init_non_authorable_filter = __esm({
16530
+ "packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/helpers/quality/non-authorable-filter.js"() {
18030
16531
  "use strict";
18031
16532
  HANDLER_TYPE_PATTERN = /=>|EventHandler|Dispatch<|SetStateAction/;
18032
16533
  REF_TYPE_PATTERN = /Ref<|RefObject<|MutableRefObject/;
18033
16534
  }
18034
16535
  });
18035
16536
 
18036
- // packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/parse-source-imports.js
16537
+ // packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/constants/review-reasons.js
16538
+ var HIGH_CONFIDENCE_DATA_FETCH_WRAPPER_REASON, POSSIBLE_DATA_FETCH_WRAPPER_REASON, ZERO_SURFACE_RENDERED_UI_REASON;
16539
+ var init_review_reasons = __esm({
16540
+ "packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/constants/review-reasons.js"() {
16541
+ "use strict";
16542
+ HIGH_CONFIDENCE_DATA_FETCH_WRAPPER_REASON = "data-fetch-wrapper";
16543
+ POSSIBLE_DATA_FETCH_WRAPPER_REASON = "possible-data-fetch-wrapper";
16544
+ ZERO_SURFACE_RENDERED_UI_REASON = "zero-surface:rendered-ui";
16545
+ }
16546
+ });
16547
+
16548
+ // packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/constants/index.js
16549
+ var init_constants7 = __esm({
16550
+ "packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/constants/index.js"() {
16551
+ "use strict";
16552
+ init_review_reasons();
16553
+ }
16554
+ });
16555
+
16556
+ // packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/framework-adapters/shared/parse-imported-names.js
18037
16557
  function parseImportedNames(importClause) {
18038
16558
  const trimmed = importClause.trim();
18039
16559
  if (!trimmed)
@@ -18057,13 +16577,14 @@ function parseImportedNames(importClause) {
18057
16577
  }
18058
16578
  return names;
18059
16579
  }
18060
- var init_parse_source_imports = __esm({
18061
- "packages/experience-design-system-extraction/dist/src/extract/helpers/evidence/parse-source-imports.js"() {
16580
+ var init_parse_imported_names = __esm({
16581
+ "packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/framework-adapters/shared/parse-imported-names.js"() {
18062
16582
  "use strict";
18063
16583
  }
18064
16584
  });
18065
16585
 
18066
- // packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/inspection/detect-data-wrapper-patterns.js
16586
+ // packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/helpers/evidence/source-inspection.js
16587
+ import { readFile as readFile15 } from "node:fs/promises";
18067
16588
  function escapeRegExp(value) {
18068
16589
  return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
18069
16590
  }
@@ -18098,11 +16619,11 @@ function hasSiblingForwardRender(sourceText, siblingImports) {
18098
16619
  function hasVisibleUiRender(sourceText) {
18099
16620
  return /return\s*(?:\(|<)/.test(sourceText) && VISIBLE_UI_TAG_PATTERN.test(sourceText);
18100
16621
  }
18101
- function collectInfraPropNames(component) {
16622
+ function infraPropNames(component) {
18102
16623
  const props = component.props.map((prop) => prop.name);
18103
16624
  return props.length > 0 && props.every((prop) => INFRA_PROP_NAMES.has(prop)) ? props : [];
18104
16625
  }
18105
- function mapScoreToWrapperConfidence(score) {
16626
+ function scoreToConfidence(score) {
18106
16627
  if (score <= 0)
18107
16628
  return 0;
18108
16629
  if (score <= 2)
@@ -18113,26 +16634,9 @@ function mapScoreToWrapperConfidence(score) {
18113
16634
  return 4;
18114
16635
  return 5;
18115
16636
  }
18116
- function dedupeStrings(values) {
18117
- return [...new Set(values)];
16637
+ function dedupeReasons(reasons) {
16638
+ return [...new Set(reasons)];
18118
16639
  }
18119
- var INFRA_PROP_NAMES, VISIBLE_UI_TAG_PATTERN, GENERATED_IMPORT_PATTERN, GENERATED_QUERY_HOOK_PATTERN, GQL_FILENAME_PATTERN, LOADING_NULL_GUARD_PATTERN, IMPORT_PATTERN;
18120
- var init_detect_data_wrapper_patterns = __esm({
18121
- "packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/inspection/detect-data-wrapper-patterns.js"() {
18122
- "use strict";
18123
- init_parse_source_imports();
18124
- INFRA_PROP_NAMES = /* @__PURE__ */ new Set(["id", "locale", "preview", "slug", "topic", "previousComponent", "__typename"]);
18125
- VISIBLE_UI_TAG_PATTERN = /<(?:[A-Z][A-Za-z0-9_.]*|div|span|section|main|article|header|footer|nav|aside|img|video|p|h[1-6]|ul|ol|li|button|input|textarea|select|form|label|table|tbody|thead|tr|td|th)\b/;
18126
- GENERATED_IMPORT_PATTERN = /from\s+['"][^'"]*__generated[^'"]*['"]/;
18127
- GENERATED_QUERY_HOOK_PATTERN = /\buse[A-Z][A-Za-z0-9]*(?:Lazy|Suspense)?Query\s*\(/;
18128
- GQL_FILENAME_PATTERN = /(?:-gql|-ggl)\.[cm]?[jt]sx?$/i;
18129
- LOADING_NULL_GUARD_PATTERN = /if\s*\([^)]*(?:isLoading|loading|!data|!\w+Collection|!\w+Item|!\w+)\s*[^)]*\)\s*return\s+null\b/;
18130
- IMPORT_PATTERN = /import\s+(?:type\s+)?(.+?)\s+from\s+['"]([^'"]+)['"]/g;
18131
- }
18132
- });
18133
-
18134
- // packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/inspection/inspect-component-source.js
18135
- import { readFile as readFile15 } from "node:fs/promises";
18136
16640
  async function inspectComponentSource(component) {
18137
16641
  let sourceText = "";
18138
16642
  try {
@@ -18147,7 +16651,7 @@ async function inspectComponentSource(component) {
18147
16651
  const reviewReasons = [];
18148
16652
  let wrapperScore = 0;
18149
16653
  const hasGeneratedQueryHook = GENERATED_IMPORT_PATTERN.test(sourceText) && GENERATED_QUERY_HOOK_PATTERN.test(sourceText);
18150
- const infraProps = collectInfraPropNames(component);
16654
+ const infraProps = infraPropNames(component);
18151
16655
  const siblingImports = collectSiblingRendererImports(sourceText);
18152
16656
  if (GQL_FILENAME_PATTERN.test(component.source)) {
18153
16657
  reviewReasons.push("data-wrapper:gql-filename");
@@ -18177,7 +16681,7 @@ async function inspectComponentSource(component) {
18177
16681
  reviewReasons.push("data-wrapper:loading-null-guard");
18178
16682
  wrapperScore += 1;
18179
16683
  }
18180
- const wrapperConfidence = mapScoreToWrapperConfidence(wrapperScore);
16684
+ const wrapperConfidence = scoreToConfidence(wrapperScore);
18181
16685
  if (wrapperConfidence >= 4) {
18182
16686
  reviewReasons.unshift(HIGH_CONFIDENCE_DATA_FETCH_WRAPPER_REASON);
18183
16687
  } else if (wrapperConfidence === 3) {
@@ -18189,7 +16693,7 @@ async function inspectComponentSource(component) {
18189
16693
  }
18190
16694
  return {
18191
16695
  wrapperConfidence,
18192
- reviewReasons: dedupeStrings(reviewReasons),
16696
+ reviewReasons: dedupeReasons(reviewReasons),
18193
16697
  keepDespiteZeroSurface
18194
16698
  };
18195
16699
  }
@@ -18220,199 +16724,264 @@ function describeReviewReason(reason) {
18220
16724
  }
18221
16725
  }
18222
16726
  function describeReviewReasons(reasons) {
18223
- return dedupeStrings(reasons.map(describeReviewReason));
16727
+ return dedupeReasons(reasons.map(describeReviewReason));
18224
16728
  }
18225
- var HIGH_CONFIDENCE_DATA_FETCH_WRAPPER_REASON, POSSIBLE_DATA_FETCH_WRAPPER_REASON, ZERO_SURFACE_RENDERED_UI_REASON;
18226
- var init_inspect_component_source = __esm({
18227
- "packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/inspection/inspect-component-source.js"() {
16729
+ var INFRA_PROP_NAMES, VISIBLE_UI_TAG_PATTERN, GENERATED_IMPORT_PATTERN, GENERATED_QUERY_HOOK_PATTERN, GQL_FILENAME_PATTERN, LOADING_NULL_GUARD_PATTERN, IMPORT_PATTERN;
16730
+ var init_source_inspection = __esm({
16731
+ "packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/helpers/evidence/source-inspection.js"() {
18228
16732
  "use strict";
18229
- init_detect_data_wrapper_patterns();
18230
- HIGH_CONFIDENCE_DATA_FETCH_WRAPPER_REASON = "data-fetch-wrapper";
18231
- POSSIBLE_DATA_FETCH_WRAPPER_REASON = "possible-data-fetch-wrapper";
18232
- ZERO_SURFACE_RENDERED_UI_REASON = "zero-surface:rendered-ui";
16733
+ init_constants7();
16734
+ init_parse_imported_names();
16735
+ INFRA_PROP_NAMES = /* @__PURE__ */ new Set(["id", "locale", "preview", "slug", "topic", "previousComponent", "__typename"]);
16736
+ VISIBLE_UI_TAG_PATTERN = /<(?:[A-Z][A-Za-z0-9_.]*|div|span|section|main|article|header|footer|nav|aside|img|video|p|h[1-6]|ul|ol|li|button|input|textarea|select|form|label|table|tbody|thead|tr|td|th)\b/;
16737
+ GENERATED_IMPORT_PATTERN = /from\s+['"][^'"]*__generated[^'"]*['"]/;
16738
+ GENERATED_QUERY_HOOK_PATTERN = /\buse[A-Z][A-Za-z0-9]*(?:Lazy|Suspense)?Query\s*\(/;
16739
+ GQL_FILENAME_PATTERN = /(?:-gql|-ggl)\.[cm]?[jt]sx?$/i;
16740
+ LOADING_NULL_GUARD_PATTERN = /if\s*\([^)]*(?:isLoading|loading|!data|!\w+Collection|!\w+Item|!\w+)\s*[^)]*\)\s*return\s+null\b/;
16741
+ IMPORT_PATTERN = /import\s+(?:type\s+)?(.+?)\s+from\s+['"]([^'"]+)['"]/g;
18233
16742
  }
18234
16743
  });
18235
16744
 
18236
- // packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/inspection/validate-extracted-components.js
18237
- function validateExtractedComponents2(components) {
18238
- const nameCounts = /* @__PURE__ */ new Map();
18239
- for (const component of components) {
18240
- const key = component.name.trim();
18241
- nameCounts.set(key, (nameCounts.get(key) ?? 0) + 1);
18242
- }
18243
- return components.map((component) => {
18244
- const issues = [];
18245
- if (!component.name.trim()) {
18246
- issues.push({
18247
- severity: "error",
18248
- code: "EMPTY_COMPONENT_NAME",
18249
- message: "Component name must not be empty"
18250
- });
18251
- }
18252
- for (let i = 0; i < component.props.length; i++) {
18253
- if (!component.props[i].name.trim()) {
18254
- issues.push({
18255
- severity: "error",
18256
- code: "EMPTY_PROP_NAME",
18257
- message: `Prop at index ${i} has an empty name`,
18258
- field: `props[${i}].name`
18259
- });
18260
- }
16745
+ // packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/helpers/quality/evaluate-extraction-quality.js
16746
+ function wrapperConfidenceToIssueCount(confidence) {
16747
+ if (confidence >= 4)
16748
+ return 2;
16749
+ if (confidence === 3)
16750
+ return 1;
16751
+ return 0;
16752
+ }
16753
+ async function evaluateExtractionQuality(components, initialWarnings = []) {
16754
+ const inspectedComponents = await Promise.all(components.map(async (component) => ({
16755
+ component,
16756
+ inspection: await inspectComponentSource(component)
16757
+ })));
16758
+ const scoredComponents = [];
16759
+ const warnings = [...initialWarnings];
16760
+ for (const { component, inspection } of inspectedComponents) {
16761
+ const verdict = hasNoAuthoringSurface(component);
16762
+ const keepDespiteZeroSurface = verdict.skip && verdict.reason === "component has no props and no slots" && inspection.keepDespiteZeroSurface;
16763
+ const retainedForReview = verdict.skip && !keepDespiteZeroSurface;
16764
+ if (retainedForReview) {
16765
+ warnings.push(`${component.name}: requires operator review (${verdict.reason})`);
18261
16766
  }
18262
- for (let i = 0; i < component.slots.length; i++) {
18263
- if (!component.slots[i].name.trim()) {
18264
- issues.push({
18265
- severity: "warning",
18266
- code: "EMPTY_SLOT_NAME",
18267
- message: `Slot at index ${i} has an empty name`,
18268
- field: `slots[${i}].name`
18269
- });
18270
- }
16767
+ if (keepDespiteZeroSurface) {
16768
+ warnings.push(`${component.name}: retained despite 0 props/slots because the source renders visible or compositional UI`);
18271
16769
  }
18272
- const propNames = new Set(component.props.map((p) => p.name.trim()).filter(Boolean));
18273
- for (let i = 0; i < component.slots.length; i++) {
18274
- const slotName = component.slots[i].name.trim();
18275
- if (slotName && propNames.has(slotName)) {
18276
- issues.push({
18277
- severity: "error",
18278
- code: "PROP_SLOT_NAME_COLLISION",
18279
- message: `"${slotName}" is used as both a prop name and a slot name`,
18280
- field: `slots[${i}].name`
18281
- });
18282
- }
16770
+ if (inspection.reviewReasons.length > 0) {
16771
+ const reviewNotes = describeReviewReasons(inspection.reviewReasons).filter((note) => note !== "high-confidence data-fetch wrapper").join("; ");
16772
+ if (reviewNotes)
16773
+ warnings.push(`${component.name}: ${reviewNotes}`);
18283
16774
  }
18284
- const nameKey = component.name.trim();
18285
- if (nameKey && (nameCounts.get(nameKey) ?? 0) > 1) {
18286
- issues.push({
18287
- severity: "error",
18288
- code: "DUPLICATE_COMPONENT_NAME",
18289
- message: `Component name "${component.name}" appears more than once in the extracted set`
18290
- });
16775
+ const extractorReasons = component.reviewReasons ?? [];
16776
+ const nonAuthorableReason = retainedForReview ? [`non-authorable:${verdict.reason}`] : [];
16777
+ const { confidence, reasons } = computeExtractionScore(component, {
16778
+ additionalIssueCount: wrapperConfidenceToIssueCount(inspection.wrapperConfidence) + extractorReasons.length + nonAuthorableReason.length,
16779
+ additionalReasons: [...extractorReasons, ...inspection.reviewReasons, ...nonAuthorableReason]
16780
+ });
16781
+ scoredComponents.push({
16782
+ ...component,
16783
+ extractionConfidence: confidence,
16784
+ reviewReasons: reasons,
16785
+ needsReview: deriveNeedsReview(confidence) || inspection.wrapperConfidence >= 4 || inspection.keepDespiteZeroSurface || retainedForReview || extractorReasons.includes("props-type-unresolved") || (component.needsReview ?? false)
16786
+ });
16787
+ }
16788
+ return {
16789
+ components: validateExtractedComponents(scoredComponents),
16790
+ warnings
16791
+ };
16792
+ }
16793
+ var init_evaluate_extraction_quality = __esm({
16794
+ "packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/helpers/quality/evaluate-extraction-quality.js"() {
16795
+ "use strict";
16796
+ init_non_authorable_filter();
16797
+ init_scoring();
16798
+ init_source_inspection();
16799
+ init_validate3();
16800
+ }
16801
+ });
16802
+
16803
+ // packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/helpers/pre-classify.js
16804
+ function isStringLiteralUnion(type) {
16805
+ return type.includes("|") && type.includes("'");
16806
+ }
16807
+ function isSimpleType(type) {
16808
+ const t = type.trim();
16809
+ if (t === "string" || t === "boolean" || t === "number")
16810
+ return true;
16811
+ return isStringLiteralUnion(t);
16812
+ }
16813
+ function isBooleanType(type) {
16814
+ return type.trim() === "boolean";
16815
+ }
16816
+ function isStringType(type) {
16817
+ return type.trim() === "string";
16818
+ }
16819
+ function isNumberType(type) {
16820
+ return type.trim() === "number";
16821
+ }
16822
+ function isComplexType(type) {
16823
+ return !isSimpleType(type);
16824
+ }
16825
+ function isDomPassThroughProp(name) {
16826
+ if (DOM_PASS_THROUGH_PROPS.has(name))
16827
+ return true;
16828
+ if (/^aria[-A-Z]/.test(name))
16829
+ return true;
16830
+ return name.startsWith("data-");
16831
+ }
16832
+ function preClassifyProp(prop) {
16833
+ const { name, type } = prop;
16834
+ if (/^on[A-Z]/.test(name) || type.includes("=> void") || type.includes("EventHandler")) {
16835
+ return { category: "exclude" };
16836
+ }
16837
+ if (name === "ref" || name === "innerRef" || type.includes("Ref<") || type.includes("RefObject<")) {
16838
+ return { category: "exclude" };
16839
+ }
16840
+ if (name === "testId" || name === "data-testid" || name === "dataTestId") {
16841
+ return { category: "exclude" };
16842
+ }
16843
+ if (name === "key") {
16844
+ return { category: "exclude" };
16845
+ }
16846
+ if (type.includes("Dispatch<") || type.includes("SetStateAction")) {
16847
+ return { category: "exclude" };
16848
+ }
16849
+ if (isDomPassThroughProp(name)) {
16850
+ return { category: "exclude" };
16851
+ }
16852
+ if (name === "name" && prop.domAttribute) {
16853
+ return { category: "exclude" };
16854
+ }
16855
+ if (isStringLiteralUnion(type)) {
16856
+ return { category: "design", cdfTypeHint: "enum" };
16857
+ }
16858
+ if (!isComplexType(type)) {
16859
+ const designNameStart = /^(variant|size|spacing|gap|color|bg|theme|align|layout|orientation|position)/i;
16860
+ const designNameEnd = /(Color|Size|Variant|Style)$/;
16861
+ if (designNameStart.test(name) || designNameEnd.test(name)) {
16862
+ return { category: "design", cdfTypeHint: "string" };
18291
16863
  }
18292
- if (component.props.length === 0 && component.slots.length === 0) {
18293
- issues.push({
18294
- severity: "warning",
18295
- code: "EMPTY_COMPONENT",
18296
- message: "Component has no props or slots and will be filtered out during generation"
18297
- });
16864
+ }
16865
+ if (isBooleanType(type)) {
16866
+ const stateNames = ["disabled", "loading", "expanded", "isOpen", "selected", "checked", "active", "preview"];
16867
+ if (stateNames.includes(name)) {
16868
+ return { category: "state", cdfTypeHint: "boolean" };
18298
16869
  }
18299
- return { ...component, validationIssues: issues };
18300
- });
18301
- }
18302
- var init_validate_extracted_components = __esm({
18303
- "packages/experience-design-system-extraction/dist/src/extract/services/quality/helpers/inspection/validate-extracted-components.js"() {
18304
- "use strict";
18305
16870
  }
18306
- });
18307
-
18308
- // packages/experience-design-system-extraction/dist/src/extract/services/quality/evaluate-extraction-quality.js
18309
- function wrapperConfidenceToIssueCount(confidence) {
18310
- if (confidence >= 4)
18311
- return 2;
18312
- if (confidence === 3)
18313
- return 1;
18314
- return 0;
18315
- }
18316
- async function evaluateExtractionQuality(components, initialWarnings = []) {
18317
- const inspectedComponents = await Promise.all(components.map(async (component) => ({
18318
- component,
18319
- inspection: await inspectComponentSource(component)
18320
- })));
18321
- const scoredComponents = [];
18322
- const warnings = [...initialWarnings];
18323
- for (const { component, inspection } of inspectedComponents) {
18324
- const verdict = hasNoAuthoringSurface(component);
18325
- const keepDespiteZeroSurface = verdict.skip && verdict.reason === "component has no props and no slots" && inspection.keepDespiteZeroSurface;
18326
- const retainedForReview = verdict.skip && !keepDespiteZeroSurface;
18327
- if (retainedForReview) {
18328
- warnings.push(`${component.name}: requires operator review (${verdict.reason})`);
16871
+ if (isBooleanType(type)) {
16872
+ const visualToggle = /^(hide|show|enable|disable|vertical|horizontal|reverse|bold|italic|imageOn|with)/i;
16873
+ if (visualToggle.test(name)) {
16874
+ return { category: "design", cdfTypeHint: "boolean" };
18329
16875
  }
18330
- if (keepDespiteZeroSurface) {
18331
- warnings.push(`${component.name}: retained despite 0 props/slots because the source renders visible or compositional UI`);
16876
+ }
16877
+ if (name === "componentId" || name === "sectionKey" || name === "locale" || name === "variantIndex") {
16878
+ return { category: "state", cdfTypeHint: "string" };
16879
+ }
16880
+ if (isStringType(type)) {
16881
+ const urlNameStart = /^(href|url|link|src)/i;
16882
+ const urlNameEnd = /(Url|Href|Link|Src)$/;
16883
+ if (urlNameStart.test(name) || urlNameEnd.test(name)) {
16884
+ return { category: "content", cdfTypeHint: "string" };
18332
16885
  }
18333
- if (inspection.reviewReasons.length > 0) {
18334
- const reviewNotes = describeReviewReasons(inspection.reviewReasons).filter((note) => note !== "high-confidence data-fetch wrapper").join("; ");
18335
- if (reviewNotes)
18336
- warnings.push(`${component.name}: ${reviewNotes}`);
16886
+ }
16887
+ if (isStringType(type)) {
16888
+ const textNameStart = /^(label|title|text|description|caption|heading|subheading|body|alt|name|placeholder|summary)/i;
16889
+ const textNameEnd = /(Text|Label|Title|Name)$/;
16890
+ if (textNameStart.test(name) || textNameEnd.test(name)) {
16891
+ return { category: "content", cdfTypeHint: "string" };
18337
16892
  }
18338
- const extractorReasons = component.reviewReasons ?? [];
18339
- const nonAuthorableReason = retainedForReview ? [`non-authorable:${verdict.reason}`] : [];
18340
- const { confidence, reasons } = computeExtractionScore2(component, {
18341
- additionalIssueCount: wrapperConfidenceToIssueCount(inspection.wrapperConfidence) + extractorReasons.length + nonAuthorableReason.length,
18342
- additionalReasons: [...extractorReasons, ...inspection.reviewReasons, ...nonAuthorableReason]
18343
- });
18344
- scoredComponents.push({
18345
- ...component,
18346
- extractionConfidence: confidence,
18347
- reviewReasons: reasons,
18348
- needsReview: deriveNeedsReview2(confidence) || inspection.wrapperConfidence >= 4 || inspection.keepDespiteZeroSurface || retainedForReview || extractorReasons.includes("props-type-unresolved") || (component.needsReview ?? false)
18349
- });
18350
16893
  }
18351
- return {
18352
- components: validateExtractedComponents2(scoredComponents),
18353
- warnings
18354
- };
18355
- }
18356
- var init_evaluate_extraction_quality = __esm({
18357
- "packages/experience-design-system-extraction/dist/src/extract/services/quality/evaluate-extraction-quality.js"() {
18358
- "use strict";
18359
- init_evaluate_authorability();
18360
- init_compute_extraction_score();
18361
- init_inspect_component_source();
18362
- init_validate_extracted_components();
16894
+ if (isStringType(type)) {
16895
+ return { category: "content", cdfTypeHint: "string" };
18363
16896
  }
18364
- });
18365
-
18366
- // packages/experience-design-system-extraction/dist/src/extract/orchestrator/execute-extraction-orchestrator.js
18367
- var init_execute_extraction_orchestrator = __esm({
18368
- "packages/experience-design-system-extraction/dist/src/extract/orchestrator/execute-extraction-orchestrator.js"() {
18369
- "use strict";
18370
- init_extract_components();
18371
- init_classify_component_props();
18372
- init_evaluate_extraction_quality();
16897
+ if (isBooleanType(type)) {
16898
+ return { category: "design", cdfTypeHint: "boolean" };
18373
16899
  }
18374
- });
18375
-
18376
- // packages/experience-design-system-extraction/dist/src/extract/controller/helpers/validate-endpoint-request.js
18377
- var init_validate_endpoint_request = __esm({
18378
- "packages/experience-design-system-extraction/dist/src/extract/controller/helpers/validate-endpoint-request.js"() {
18379
- "use strict";
16900
+ if (isNumberType(type)) {
16901
+ return { category: "design", cdfTypeHint: "string" };
18380
16902
  }
18381
- });
18382
-
18383
- // packages/experience-design-system-extraction/dist/src/extract/controller/extract-controller.js
18384
- var init_extract_controller = __esm({
18385
- "packages/experience-design-system-extraction/dist/src/extract/controller/extract-controller.js"() {
16903
+ return void 0;
16904
+ }
16905
+ function preClassifyComponent(component) {
16906
+ const props = component.props.flatMap((prop) => {
16907
+ const result = preClassifyProp(prop);
16908
+ if (result?.category === "exclude") {
16909
+ return [];
16910
+ }
16911
+ const { domAttribute: _domAttribute, ...authorableProp } = prop;
16912
+ if (prop.category) {
16913
+ return [authorableProp];
16914
+ }
16915
+ if (!result) {
16916
+ return [authorableProp];
16917
+ }
16918
+ return [
16919
+ {
16920
+ ...authorableProp,
16921
+ category: result.category
16922
+ }
16923
+ ];
16924
+ });
16925
+ return { ...component, props };
16926
+ }
16927
+ var DOM_PASS_THROUGH_PROPS;
16928
+ var init_pre_classify = __esm({
16929
+ "packages/experience-design-system-backend-pipeline/dist/src/steps/extraction/src/helpers/pre-classify.js"() {
18386
16930
  "use strict";
18387
- init_execute_extraction_orchestrator();
18388
- init_validate_endpoint_request();
18389
- }
18390
- });
18391
-
18392
- // packages/experience-design-system-extraction/dist/src/index.js
18393
- var init_src3 = __esm({
18394
- "packages/experience-design-system-extraction/dist/src/index.js"() {
18395
- "use strict";
18396
- init_display();
18397
- init_extract_components();
18398
- init_extract_controller();
18399
- init_extractor2();
18400
- init_extractor6();
18401
- init_extractor5();
18402
- init_extractor3();
18403
- init_extractor();
18404
- init_extractor7();
18405
- init_extractor4();
18406
- init_collect_allowed_component_names();
18407
- init_evaluate_extraction_quality();
18408
- init_evaluate_authorability();
18409
- init_evaluate_authorability();
18410
- init_compute_extraction_score();
18411
- init_inspect_component_source();
18412
- init_validate_extracted_components();
18413
- init_parse_source_imports();
18414
- init_detect_slot_from_prop();
18415
- init_classify_component_props();
16931
+ DOM_PASS_THROUGH_PROPS = /* @__PURE__ */ new Set([
16932
+ // Bare HTML / framework styling pass-through
16933
+ "className",
16934
+ "class",
16935
+ "classes",
16936
+ "classNames",
16937
+ "rootClassName",
16938
+ "prefixCls",
16939
+ "style",
16940
+ "styles",
16941
+ // Bare HTML attributes
16942
+ "id",
16943
+ "role",
16944
+ "tabIndex",
16945
+ "tabindex",
16946
+ "htmlFor",
16947
+ "for",
16948
+ "slot",
16949
+ "is",
16950
+ "lang",
16951
+ "dir",
16952
+ "hidden",
16953
+ "draggable",
16954
+ "spellCheck",
16955
+ "spellcheck",
16956
+ "contentEditable",
16957
+ "contenteditable",
16958
+ "inputMode",
16959
+ "inputmode",
16960
+ "autoComplete",
16961
+ "autocomplete",
16962
+ "autoFocus",
16963
+ "autofocus",
16964
+ "translate",
16965
+ "part",
16966
+ "exportparts",
16967
+ "aria",
16968
+ // Framework theming / pass-through escape hatches — dev-facing, never marketer-configurable
16969
+ "dt",
16970
+ "pt",
16971
+ "ptOptions",
16972
+ "unstyled",
16973
+ "sx",
16974
+ // Polymorphic component props — change rendered HTML/component, not marketer-visible behavior
16975
+ "as",
16976
+ "element",
16977
+ "component",
16978
+ // QA / vendor test attributes
16979
+ "dataQa",
16980
+ "data-qa",
16981
+ // Vue v-model internals — framework wiring, never marketer-configurable
16982
+ "modelValue",
16983
+ "modelModifiers"
16984
+ ]);
18416
16985
  }
18417
16986
  });
18418
16987
 
@@ -18441,7 +17010,7 @@ function emitPreClassificationExclusions(extraction, onExclusion) {
18441
17010
  var init_emit_pre_classification_exclusions = __esm({
18442
17011
  "packages/experience-design-system-backend-pipeline/dist/src/orchestrators/run-extract-and-compose-session/helpers/emit-pre-classification-exclusions.js"() {
18443
17012
  "use strict";
18444
- init_src3();
17013
+ init_pre_classify();
18445
17014
  }
18446
17015
  });
18447
17016
 
@@ -18784,7 +17353,8 @@ async function runExtractAndComposeSession(request) {
18784
17353
  var init_run_extract_and_compose_session = __esm({
18785
17354
  "packages/experience-design-system-backend-pipeline/dist/src/orchestrators/run-extract-and-compose-session/run-extract-and-compose-session.js"() {
18786
17355
  "use strict";
18787
- init_src3();
17356
+ init_evaluate_extraction_quality();
17357
+ init_pre_classify();
18788
17358
  init_resolve_composition_sources();
18789
17359
  init_db();
18790
17360
  init_emit_pre_classification_exclusions();
@@ -19375,7 +17945,7 @@ var init_run_generate_components_session = __esm({
19375
17945
  });
19376
17946
 
19377
17947
  // packages/experience-design-system-backend-pipeline/dist/src/index.js
19378
- var init_src4 = __esm({
17948
+ var init_src3 = __esm({
19379
17949
  "packages/experience-design-system-backend-pipeline/dist/src/index.js"() {
19380
17950
  "use strict";
19381
17951
  init_export_cdf_document();
@@ -19573,7 +18143,8 @@ function emptyAgents() {
19573
18143
  async function readAgentConfig() {
19574
18144
  const store = await readV1Store();
19575
18145
  const stored = asString(store["agent"]);
19576
- const defaultAgent = isAgentName(stored) ? stored : DEFAULT_AGENT_NAME;
18146
+ const defaultChosen = isAgentName(stored);
18147
+ const defaultAgent = defaultChosen ? stored : DEFAULT_AGENT_NAME;
19577
18148
  const agents = emptyAgents();
19578
18149
  const saved = store["agents"];
19579
18150
  if (saved && typeof saved === "object") {
@@ -19588,7 +18159,7 @@ async function readAgentConfig() {
19588
18159
  const legacyModel = asString(store["agentModel"]);
19589
18160
  if (legacyModel && !agents[defaultAgent].model)
19590
18161
  agents[defaultAgent] = { ...agents[defaultAgent], model: legacyModel };
19591
- return { defaultAgent, agents };
18162
+ return { defaultAgent, defaultChosen, agents };
19592
18163
  }
19593
18164
  async function writeAgentConfig(config) {
19594
18165
  const existing = await readV1Store();
@@ -19599,8 +18170,9 @@ async function writeAgentConfig(config) {
19599
18170
  const binary = config.agents[name].binary.trim();
19600
18171
  if (model || binary) agents[name] = { ...model ? { model } : {}, ...binary ? { binary } : {} };
19601
18172
  }
19602
- merged["agent"] = config.defaultAgent;
19603
- const defaultModel = agents[config.defaultAgent]?.model;
18173
+ const defaultModel = config.defaultChosen ? agents[config.defaultAgent]?.model : void 0;
18174
+ if (config.defaultChosen) merged["agent"] = config.defaultAgent;
18175
+ else delete merged["agent"];
19604
18176
  if (defaultModel) merged["agentModel"] = defaultModel;
19605
18177
  else delete merged["agentModel"];
19606
18178
  if (Object.keys(agents).length > 0) merged["agents"] = agents;
@@ -19611,7 +18183,7 @@ var AGENT_LABELS, asString;
19611
18183
  var init_agent_store = __esm({
19612
18184
  "packages/experience-design-system-cli/src/tui/settings/configuration/agents/agent-store.ts"() {
19613
18185
  "use strict";
19614
- init_src4();
18186
+ init_src3();
19615
18187
  init_v1_store();
19616
18188
  AGENT_LABELS = {
19617
18189
  claude: "Claude Code",
@@ -19644,7 +18216,7 @@ var shellValues;
19644
18216
  var init_apply_binary_overrides = __esm({
19645
18217
  "packages/experience-design-system-cli/src/tui/settings/configuration/agents/apply-binary-overrides.ts"() {
19646
18218
  "use strict";
19647
- init_src4();
18219
+ init_src3();
19648
18220
  shellValues = /* @__PURE__ */ new Map();
19649
18221
  }
19650
18222
  });
@@ -20317,7 +18889,7 @@ function foldSvelteAndMdIntoOther(counts) {
20317
18889
  var init_scan_files = __esm({
20318
18890
  "packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/helpers/scan-files.ts"() {
20319
18891
  "use strict";
20320
- init_src4();
18892
+ init_src3();
20321
18893
  }
20322
18894
  });
20323
18895
 
@@ -20439,7 +19011,7 @@ var FIELDS;
20439
19011
  var init_logic4 = __esm({
20440
19012
  "packages/experience-design-system-cli/src/tui/import/steps/04-credentials/logic.ts"() {
20441
19013
  "use strict";
20442
- init_src4();
19014
+ init_src3();
20443
19015
  FIELDS = ["spaceId", "environmentId", "cmaToken", "host"];
20444
19016
  }
20445
19017
  });
@@ -20476,7 +19048,7 @@ function cliUserAgent() {
20476
19048
  var init_user_agent = __esm({
20477
19049
  "packages/experience-design-system-cli/src/tui/user-agent.ts"() {
20478
19050
  "use strict";
20479
- init_src4();
19051
+ init_src3();
20480
19052
  init_version();
20481
19053
  }
20482
19054
  });
@@ -20511,7 +19083,7 @@ function toUserError(error, host) {
20511
19083
  var init_validate4 = __esm({
20512
19084
  "packages/experience-design-system-cli/src/tui/import/steps/04-credentials/validate.ts"() {
20513
19085
  "use strict";
20514
- init_src4();
19086
+ init_src3();
20515
19087
  init_user_agent();
20516
19088
  }
20517
19089
  });
@@ -20614,7 +19186,7 @@ var init_screen4 = __esm({
20614
19186
  "use strict";
20615
19187
  init_theme();
20616
19188
  init_controls4();
20617
- init_src4();
19189
+ init_src3();
20618
19190
  init_logic4();
20619
19191
  init_validate4();
20620
19192
  LABELS = {
@@ -21080,7 +19652,7 @@ function resolveAgentChoice(flag, stored) {
21080
19652
  var init_logic9 = __esm({
21081
19653
  "packages/experience-design-system-cli/src/tui/import/steps/06-extraction/logic.ts"() {
21082
19654
  "use strict";
21083
- init_src4();
19655
+ init_src3();
21084
19656
  }
21085
19657
  });
21086
19658
 
@@ -21236,7 +19808,7 @@ var SELECT_SKILL_PATH, DEFAULT_TIMEOUT_MS5;
21236
19808
  var init_selection2 = __esm({
21237
19809
  "packages/experience-design-system-cli/src/tui/import/steps/06-extraction/selection.ts"() {
21238
19810
  "use strict";
21239
- init_src4();
19811
+ init_src3();
21240
19812
  init_find_skill_path();
21241
19813
  SELECT_SKILL_PATH = findSkillPath("select-components.md");
21242
19814
  DEFAULT_TIMEOUT_MS5 = Number(process.env.EDS_AGENT_TIMEOUT_MS ?? 5 * 60 * 1e3);
@@ -21381,7 +19953,7 @@ var TOKENS_SKILL_PATH, realDeps, fail, errorMessage2;
21381
19953
  var init_run = __esm({
21382
19954
  "packages/experience-design-system-cli/src/tui/import/steps/06-extraction/run.ts"() {
21383
19955
  "use strict";
21384
- init_src4();
19956
+ init_src3();
21385
19957
  init_find_skill_path();
21386
19958
  init_logic9();
21387
19959
  init_selection2();
@@ -24478,7 +23050,7 @@ async function checkGenerationCache(input) {
24478
23050
  var init_cache_check = __esm({
24479
23051
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/cache-check.ts"() {
24480
23052
  "use strict";
24481
- init_src4();
23053
+ init_src3();
24482
23054
  }
24483
23055
  });
24484
23056
 
@@ -24505,7 +23077,7 @@ function loadScopeGate(sessionId) {
24505
23077
  var init_load = __esm({
24506
23078
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/load.ts"() {
24507
23079
  "use strict";
24508
- init_src4();
23080
+ init_src3();
24509
23081
  }
24510
23082
  });
24511
23083
 
@@ -24635,7 +23207,7 @@ async function prepareMapTokens(input, generatedSessionId) {
24635
23207
  var init_map_tokens = __esm({
24636
23208
  "packages/experience-design-system-cli/src/tui/import/steps/08-generation/map-tokens.ts"() {
24637
23209
  "use strict";
24638
- init_src4();
23210
+ init_src3();
24639
23211
  init_logic10();
24640
23212
  }
24641
23213
  });
@@ -24653,7 +23225,7 @@ async function saveDecisions(input) {
24653
23225
  var init_save_decisions = __esm({
24654
23226
  "packages/experience-design-system-cli/src/tui/import/steps/08-generation/save-decisions.ts"() {
24655
23227
  "use strict";
24656
- init_src4();
23228
+ init_src3();
24657
23229
  }
24658
23230
  });
24659
23231
 
@@ -24771,7 +23343,7 @@ var COMPONENTS_SKILL_PATH, MAP_TOKENS_SKILL_PATH, realDeps3, fail2, errorMessage
24771
23343
  var init_run2 = __esm({
24772
23344
  "packages/experience-design-system-cli/src/tui/import/steps/08-generation/run.ts"() {
24773
23345
  "use strict";
24774
- init_src4();
23346
+ init_src3();
24775
23347
  init_find_skill_path();
24776
23348
  init_logic9();
24777
23349
  init_map_tokens();
@@ -24849,7 +23421,7 @@ function buildFlowStart(input) {
24849
23421
  var init_build_flow_start = __esm({
24850
23422
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/build-flow-start.ts"() {
24851
23423
  "use strict";
24852
- init_src4();
23424
+ init_src3();
24853
23425
  }
24854
23426
  });
24855
23427
 
@@ -25223,7 +23795,7 @@ var init_dtcg2 = __esm({
25223
23795
  });
25224
23796
 
25225
23797
  // packages/experience-design-system-types/dist/src/index.js
25226
- var init_src5 = __esm({
23798
+ var init_src4 = __esm({
25227
23799
  "packages/experience-design-system-types/dist/src/index.js"() {
25228
23800
  "use strict";
25229
23801
  init_cdf2();
@@ -27371,7 +25943,7 @@ var init_FieldEditor = __esm({
27371
25943
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx"() {
27372
25944
  "use strict";
27373
25945
  init_theme();
27374
- init_src5();
25946
+ init_src4();
27375
25947
  init_useImmediateInput();
27376
25948
  init_scroll_offset();
27377
25949
  init_cycle_detection();
@@ -28286,7 +26858,7 @@ function finalizeReviewSession(extractSessionId, components) {
28286
26858
  var init_session3 = __esm({
28287
26859
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/session.ts"() {
28288
26860
  "use strict";
28289
- init_src4();
26861
+ init_src3();
28290
26862
  }
28291
26863
  });
28292
26864
 
@@ -28399,10 +26971,10 @@ var TimeoutError, DEFAULT_TIMEOUT_MS6;
28399
26971
  var init_run_live_preview = __esm({
28400
26972
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/run-live-preview.ts"() {
28401
26973
  "use strict";
28402
- init_src5();
28403
- init_src4();
28404
- init_src4();
28405
26974
  init_src4();
26975
+ init_src3();
26976
+ init_src3();
26977
+ init_src3();
28406
26978
  init_user_agent();
28407
26979
  TimeoutError = class extends Error {
28408
26980
  constructor(message = "live-preview timed out") {
@@ -28728,7 +27300,7 @@ function useReviewFinalize({
28728
27300
  var init_use_review_session = __esm({
28729
27301
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-session.ts"() {
28730
27302
  "use strict";
28731
- init_src4();
27303
+ init_src3();
28732
27304
  init_history();
28733
27305
  init_session3();
28734
27306
  init_use_finalize_preview();
@@ -28906,7 +27478,7 @@ function useReviewEditor({
28906
27478
  var init_use_review_editor = __esm({
28907
27479
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-editor.ts"() {
28908
27480
  "use strict";
28909
- init_src4();
27481
+ init_src3();
28910
27482
  init_token_suggestions();
28911
27483
  }
28912
27484
  });
@@ -29356,7 +27928,7 @@ var DEFAULT_DEBOUNCE_MS;
29356
27928
  var init_use_live_preview = __esm({
29357
27929
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/use-live-preview.ts"() {
29358
27930
  "use strict";
29359
- init_src4();
27931
+ init_src3();
29360
27932
  init_run_live_preview();
29361
27933
  DEFAULT_DEBOUNCE_MS = 500;
29362
27934
  }
@@ -30739,7 +29311,7 @@ var init_generate_review_step = __esm({
30739
29311
  init_issue_inheritance();
30740
29312
  init_removed_components_text();
30741
29313
  init_useImmediateInput();
30742
- init_src4();
29314
+ init_src3();
30743
29315
  init_cycle_detection();
30744
29316
  init_cycle_panel_scroll();
30745
29317
  init_fuzzy_search();
@@ -31696,7 +30268,7 @@ var init_WizardPreviewStep = __esm({
31696
30268
  init_theme();
31697
30269
  init_useImmediateInput();
31698
30270
  init_use_terminal_size();
31699
- init_src4();
30271
+ init_src3();
31700
30272
  init_preview_diff();
31701
30273
  init_StepHeader();
31702
30274
  init_SpaceEnvironment();
@@ -31862,7 +30434,7 @@ function FlowScreen({
31862
30434
  var init_screen10 = __esm({
31863
30435
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx"() {
31864
30436
  "use strict";
31865
- init_src5();
30437
+ init_src4();
31866
30438
  init_shared2();
31867
30439
  init_screen9();
31868
30440
  init_generate_review_step();
@@ -32051,8 +30623,8 @@ var realPreviewDeps;
32051
30623
  var init_preview2 = __esm({
32052
30624
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/preview.ts"() {
32053
30625
  "use strict";
30626
+ init_src3();
32054
30627
  init_src4();
32055
- init_src5();
32056
30628
  init_user_agent();
32057
30629
  init_wizard_state_transitions();
32058
30630
  realPreviewDeps = () => ({
@@ -32225,8 +30797,8 @@ var realPushDeps, zeroResult, componentsOf;
32225
30797
  var init_push = __esm({
32226
30798
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/push.ts"() {
32227
30799
  "use strict";
30800
+ init_src3();
32228
30801
  init_src4();
32229
- init_src5();
32230
30802
  init_user_agent();
32231
30803
  init_wizard_state_transitions();
32232
30804
  realPushDeps = (log) => ({
@@ -32347,8 +30919,8 @@ var SAVE_CONFIRMATION_DELAY_MS, realSaveDeps;
32347
30919
  var init_save = __esm({
32348
30920
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/save.ts"() {
32349
30921
  "use strict";
30922
+ init_src3();
32350
30923
  init_src4();
32351
- init_src5();
32352
30924
  init_run_print_files_helpers();
32353
30925
  SAVE_CONFIRMATION_DELAY_MS = 1e3;
32354
30926
  realSaveDeps = () => ({
@@ -32651,7 +31223,7 @@ var WIZARD_LOG;
32651
31223
  var init_controller = __esm({
32652
31224
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/controller.ts"() {
32653
31225
  "use strict";
32654
- init_src4();
31226
+ init_src3();
32655
31227
  init_slot_graph();
32656
31228
  init_cycle_detection();
32657
31229
  init_wizard_state_transitions();
@@ -33273,7 +31845,7 @@ var VERSION_TIMEOUT_MS, PROMPT_TIMEOUT_MS, TEST_PROMPT, INSTALL_HINTS, LOGIN_HIN
33273
31845
  var init_agent_status = __esm({
33274
31846
  "packages/experience-design-system-cli/src/tui/settings/configuration/agents/agent-status.ts"() {
33275
31847
  "use strict";
33276
- init_src4();
31848
+ init_src3();
33277
31849
  VERSION_TIMEOUT_MS = 5e3;
33278
31850
  PROMPT_TIMEOUT_MS = 6e4;
33279
31851
  TEST_PROMPT = "Reply with the single word: ok";
@@ -33312,6 +31884,20 @@ import { useState as useState29 } from "react";
33312
31884
  import { Box as Box44, Text as Text46, useInput as useInput11 } from "ink";
33313
31885
  import TextInput4 from "ink-text-input";
33314
31886
  import { Fragment as Fragment17, jsx as jsx55, jsxs as jsxs45 } from "react/jsx-runtime";
31887
+ function formLabelWidth(rows) {
31888
+ return Math.max(...rows.map((row) => row.label.length));
31889
+ }
31890
+ function FormReadOnlyRow({
31891
+ label,
31892
+ labelWidth,
31893
+ children
31894
+ }) {
31895
+ return /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
31896
+ /* @__PURE__ */ jsx55(Text46, { children: " " }),
31897
+ /* @__PURE__ */ jsx55(Box44, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: label }) }),
31898
+ children
31899
+ ] });
31900
+ }
33315
31901
  function FieldForm({
33316
31902
  title,
33317
31903
  subtitle,
@@ -33329,10 +31915,7 @@ function FieldForm({
33329
31915
  const [editing, setEditing] = useState29(false);
33330
31916
  const [valueBeforeEdit, setValueBeforeEdit] = useState29("");
33331
31917
  const rowCount = fields2.length + actions.length;
33332
- const labelWidth = Math.max(
33333
- ...fields2.map((field) => field.label.length),
33334
- ...actions.map((action) => action.label.length)
33335
- );
31918
+ const labelWidth = formLabelWidth([...fields2, ...actions]);
33336
31919
  const currentField = active < fields2.length ? fields2[active] : void 0;
33337
31920
  const currentAction = currentField ? void 0 : actions[active - fields2.length];
33338
31921
  useInput11((input, key) => {
@@ -33394,8 +31977,12 @@ function FieldForm({
33394
31977
  onSubmit: () => setEditing(false),
33395
31978
  mask: field.masked ? "\u2022" : void 0
33396
31979
  }
33397
- ) : /* @__PURE__ */ jsx55(Text46, { bold: !!display, children: display || (field.hint ? "" : /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "(empty)" })) }),
33398
- field.hint && /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: field.hint })
31980
+ ) : display ? /* @__PURE__ */ jsx55(Text46, { bold: true, children: display }) : (
31981
+ // An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
31982
+ // text starts in the same column as every other row's.
31983
+ /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
31984
+ ),
31985
+ display && field.hint && /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: field.hint })
33399
31986
  ] }, field.key);
33400
31987
  }),
33401
31988
  actions.map((action, index) => {
@@ -33473,12 +32060,6 @@ var init_AgentStatusBadge = __esm({
33473
32060
  import { useEffect as useEffect22, useState as useState30 } from "react";
33474
32061
  import { Box as Box45, Text as Text48 } from "ink";
33475
32062
  import { jsx as jsx57, jsxs as jsxs46 } from "react/jsx-runtime";
33476
- function Row2({ label, children }) {
33477
- return /* @__PURE__ */ jsxs46(Box45, { children: [
33478
- /* @__PURE__ */ jsx57(Box45, { width: POINTER_WIDTH + LABEL_WIDTH + LABEL_GAP, flexShrink: 0, children: /* @__PURE__ */ jsx57(Text48, { color: PALETTE.muted, children: label }) }),
33479
- children
33480
- ] });
33481
- }
33482
32063
  function StatusHeading() {
33483
32064
  return /* @__PURE__ */ jsxs46(Box45, { gap: 1, children: [
33484
32065
  /* @__PURE__ */ jsx57(Text48, { bold: true, color: PALETTE.muted, children: "STATUS" }),
@@ -33499,9 +32080,12 @@ function AgentDetail({
33499
32080
  useEffect22(() => {
33500
32081
  let active = true;
33501
32082
  setChecks(void 0);
33502
- void inspectAgent(name, settings.binary).then((result) => active && setChecks(result));
32083
+ const timer = setTimeout(() => {
32084
+ void inspectAgent(name, settings.binary).then((result) => active && setChecks(result));
32085
+ }, INSPECT_DELAY_MS);
33503
32086
  return () => {
33504
32087
  active = false;
32088
+ clearTimeout(timer);
33505
32089
  };
33506
32090
  }, [name, settings.binary]);
33507
32091
  const save = () => {
@@ -33534,12 +32118,14 @@ function AgentDetail({
33534
32118
  hint: "run test",
33535
32119
  onRun: runTest
33536
32120
  };
32121
+ const formFields = fields(name);
32122
+ const labelWidth = formLabelWidth([...formFields, action]);
33537
32123
  return /* @__PURE__ */ jsx57(
33538
32124
  FieldForm,
33539
32125
  {
33540
32126
  title: AGENT_LABELS[name],
33541
32127
  subtitle: config.defaultAgent === name ? "This is the default agent." : `Runs the \`${AGENT_BINARIES[name]}\` command.`,
33542
- fields: fields(name),
32128
+ fields: formFields,
33543
32129
  values: { binary: settings.binary, model: settings.model },
33544
32130
  onChange: (key, value) => {
33545
32131
  setConfig({ ...config, agents: { ...config.agents, [name]: { ...settings, [key]: value } } });
@@ -33552,16 +32138,16 @@ function AgentDetail({
33552
32138
  busy: saving || testing,
33553
32139
  children: /* @__PURE__ */ jsxs46(Box45, { flexDirection: "column", marginTop: 1, children: [
33554
32140
  /* @__PURE__ */ jsx57(StatusHeading, {}),
33555
- statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */ jsx57(Row2, { label: row.label, children: /* @__PURE__ */ jsx57(Text48, { color: TONE_COLOR[row.tone], children: row.value }) }, row.label))
32141
+ statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */ jsx57(FormReadOnlyRow, { label: row.label, labelWidth, children: /* @__PURE__ */ jsx57(Text48, { color: TONE_COLOR[row.tone], children: row.value }) }, row.label))
33556
32142
  ] })
33557
32143
  }
33558
32144
  );
33559
32145
  }
33560
- var fields, LABEL_WIDTH, LABEL_GAP, POINTER_WIDTH;
32146
+ var fields, INSPECT_DELAY_MS;
33561
32147
  var init_AgentDetail = __esm({
33562
32148
  "packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx"() {
33563
32149
  "use strict";
33564
- init_src4();
32150
+ init_src3();
33565
32151
  init_theme();
33566
32152
  init_FieldForm();
33567
32153
  init_agent_store();
@@ -33572,9 +32158,7 @@ var init_AgentDetail = __esm({
33572
32158
  { key: "binary", label: "Command path", hint: `(empty: \`${AGENT_BINARIES[name]}\` from the PATH)` },
33573
32159
  { key: "model", label: "Model", hint: `(empty: ${defaultModelLabel(name)})` }
33574
32160
  ];
33575
- LABEL_WIDTH = "Command path".length;
33576
- LABEL_GAP = 2;
33577
- POINTER_WIDTH = 2;
32161
+ INSPECT_DELAY_MS = 400;
33578
32162
  }
33579
32163
  });
33580
32164
 
@@ -33588,6 +32172,7 @@ function AgentsScreen({ onDone }) {
33588
32172
  const [open, setOpen] = useState31(null);
33589
32173
  const [notice, setNotice] = useState31(null);
33590
32174
  const [saving, setSaving] = useState31(false);
32175
+ const [loadError, setLoadError] = useState31(null);
33591
32176
  const [checks, setChecks] = useState31({});
33592
32177
  const inspectAll = (loaded) => {
33593
32178
  for (const name of AGENT_NAMES) {
@@ -33597,7 +32182,7 @@ function AgentsScreen({ onDone }) {
33597
32182
  }
33598
32183
  };
33599
32184
  useEffect23(() => {
33600
- void readAgentConfig().then((loaded) => {
32185
+ readAgentConfig().then((loaded) => {
33601
32186
  setConfig(loaded);
33602
32187
  inspectAll(loaded);
33603
32188
  startDebugRun({
@@ -33606,7 +32191,7 @@ function AgentsScreen({ onDone }) {
33606
32191
  menuOption: "Configuration > Agents",
33607
32192
  inputs: { default_agent: loaded.defaultAgent }
33608
32193
  });
33609
- });
32194
+ }).catch((err) => setLoadError(err instanceof Error ? err.message : String(err)));
33610
32195
  }, []);
33611
32196
  const makeDefault = (name) => {
33612
32197
  if (!config || saving) return;
@@ -33616,8 +32201,8 @@ function AgentsScreen({ onDone }) {
33616
32201
  }
33617
32202
  setSaving(true);
33618
32203
  setNotice(null);
33619
- writeAgentConfig({ ...config, defaultAgent: name }).then(() => {
33620
- setConfig((current) => current ? { ...current, defaultAgent: name } : current);
32204
+ writeAgentConfig({ ...config, defaultAgent: name, defaultChosen: true }).then(() => {
32205
+ setConfig((current) => current ? { ...current, defaultAgent: name, defaultChosen: true } : current);
33621
32206
  setNotice({ kind: "success", text: `Default agent is now ${AGENT_LABELS[name]}` });
33622
32207
  }).catch(
33623
32208
  (err) => setNotice({
@@ -33627,6 +32212,10 @@ function AgentsScreen({ onDone }) {
33627
32212
  ).finally(() => setSaving(false));
33628
32213
  };
33629
32214
  useInput12((input, key) => {
32215
+ if (loadError && (key.escape || input === "q")) {
32216
+ onDone();
32217
+ return;
32218
+ }
33630
32219
  if (!config || open || saving) return;
33631
32220
  const focused = AGENT_NAMES[focus];
33632
32221
  if (key.upArrow || key.downArrow || key.tab) setNotice(null);
@@ -33656,7 +32245,14 @@ function AgentsScreen({ onDone }) {
33656
32245
  return /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
33657
32246
  /* @__PURE__ */ jsx58(Text49, { bold: true, children: "Agents" }),
33658
32247
  /* @__PURE__ */ jsx58(Text49, { children: " " }),
33659
- /* @__PURE__ */ jsx58(Text49, { color: PALETTE.accent, children: "Loading..." })
32248
+ loadError ? /* @__PURE__ */ jsxs47(Fragment18, { children: [
32249
+ /* @__PURE__ */ jsxs47(Text49, { color: PALETTE.error, children: [
32250
+ "\u2717 Could not read the settings: ",
32251
+ loadError
32252
+ ] }),
32253
+ /* @__PURE__ */ jsx58(Text49, { children: " " }),
32254
+ /* @__PURE__ */ jsx58(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
32255
+ ] }) : /* @__PURE__ */ jsx58(Text49, { color: PALETTE.accent, children: "Loading..." })
33660
32256
  ] });
33661
32257
  }
33662
32258
  if (open) {
@@ -33734,7 +32330,7 @@ var NAME_WIDTH, PANEL_LABEL_WIDTH;
33734
32330
  var init_AgentsScreen = __esm({
33735
32331
  "packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx"() {
33736
32332
  "use strict";
33737
- init_src4();
32333
+ init_src3();
33738
32334
  init_theme();
33739
32335
  init_control_hints();
33740
32336
  init_debug_store();
@@ -34480,7 +33076,7 @@ var init_app = __esm({
34480
33076
  });
34481
33077
 
34482
33078
  // packages/experience-design-system-cli/program.ts
34483
- init_src4();
33079
+ init_src3();
34484
33080
  import { readFileSync as readFileSync9 } from "node:fs";
34485
33081
  import { join as join28 } from "node:path";
34486
33082
  import { Command } from "commander";