@memberjunction/ng-artifacts 5.43.0 → 5.44.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.
Files changed (64) hide show
  1. package/README.md +6 -0
  2. package/dist/lib/artifacts.module.d.ts +28 -25
  3. package/dist/lib/artifacts.module.d.ts.map +1 -1
  4. package/dist/lib/artifacts.module.js +22 -2
  5. package/dist/lib/artifacts.module.js.map +1 -1
  6. package/dist/lib/components/artifact-version-history.component.d.ts.map +1 -1
  7. package/dist/lib/components/artifact-version-history.component.js +26 -29
  8. package/dist/lib/components/artifact-version-history.component.js.map +1 -1
  9. package/dist/lib/components/artifact-viewer-panel.component.d.ts +3 -0
  10. package/dist/lib/components/artifact-viewer-panel.component.d.ts.map +1 -1
  11. package/dist/lib/components/artifact-viewer-panel.component.js +198 -112
  12. package/dist/lib/components/artifact-viewer-panel.component.js.map +1 -1
  13. package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts +11 -0
  14. package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts.map +1 -1
  15. package/dist/lib/components/plugins/audio-artifact-viewer.component.js +37 -12
  16. package/dist/lib/components/plugins/audio-artifact-viewer.component.js.map +1 -1
  17. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.d.ts.map +1 -1
  18. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js +40 -51
  19. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js.map +1 -1
  20. package/dist/lib/components/plugins/data-artifact-viewer.component.js +27 -47
  21. package/dist/lib/components/plugins/data-artifact-viewer.component.js.map +1 -1
  22. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js +89 -95
  23. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js.map +1 -1
  24. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts +227 -0
  25. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts.map +1 -0
  26. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js +630 -0
  27. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js.map +1 -0
  28. package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts +11 -0
  29. package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts.map +1 -1
  30. package/dist/lib/components/plugins/video-artifact-viewer.component.js +37 -12
  31. package/dist/lib/components/plugins/video-artifact-viewer.component.js.map +1 -1
  32. package/dist/lib/components/previews/audio-artifact-preview.component.d.ts +18 -4
  33. package/dist/lib/components/previews/audio-artifact-preview.component.d.ts.map +1 -1
  34. package/dist/lib/components/previews/audio-artifact-preview.component.js +54 -21
  35. package/dist/lib/components/previews/audio-artifact-preview.component.js.map +1 -1
  36. package/dist/lib/components/previews/video-artifact-preview.component.d.ts +19 -5
  37. package/dist/lib/components/previews/video-artifact-preview.component.d.ts.map +1 -1
  38. package/dist/lib/components/previews/video-artifact-preview.component.js +54 -22
  39. package/dist/lib/components/previews/video-artifact-preview.component.js.map +1 -1
  40. package/dist/public-api.d.ts +1 -0
  41. package/dist/public-api.d.ts.map +1 -1
  42. package/dist/public-api.js +1 -0
  43. package/dist/public-api.js.map +1 -1
  44. package/package.json +21 -18
  45. package/dist/__tests__/exports.test.d.ts +0 -2
  46. package/dist/__tests__/exports.test.d.ts.map +0 -1
  47. package/dist/__tests__/exports.test.js +0 -17
  48. package/dist/__tests__/exports.test.js.map +0 -1
  49. package/dist/__tests__/image-artifact-viewer.test.d.ts +0 -2
  50. package/dist/__tests__/image-artifact-viewer.test.d.ts.map +0 -1
  51. package/dist/__tests__/image-artifact-viewer.test.js +0 -62
  52. package/dist/__tests__/image-artifact-viewer.test.js.map +0 -1
  53. package/dist/__tests__/index.test.d.ts +0 -2
  54. package/dist/__tests__/index.test.d.ts.map +0 -1
  55. package/dist/__tests__/index.test.js +0 -7
  56. package/dist/__tests__/index.test.js.map +0 -1
  57. package/dist/lib/__tests__/artifact-snapshots.test.d.ts +0 -2
  58. package/dist/lib/__tests__/artifact-snapshots.test.d.ts.map +0 -1
  59. package/dist/lib/__tests__/artifact-snapshots.test.js +0 -155
  60. package/dist/lib/__tests__/artifact-snapshots.test.js.map +0 -1
  61. package/dist/lib/__tests__/interactive-form-apply.service.test.d.ts +0 -2
  62. package/dist/lib/__tests__/interactive-form-apply.service.test.d.ts.map +0 -1
  63. package/dist/lib/__tests__/interactive-form-apply.service.test.js +0 -211
  64. package/dist/lib/__tests__/interactive-form-apply.service.test.js.map +0 -1
@@ -2,23 +2,17 @@ import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  import * as i2 from "@memberjunction/ng-markdown";
5
+ import * as i3 from "@memberjunction/ng-ui-components";
5
6
  const _forTrack0 = ($index, $item) => $item.name;
6
7
  function _forTrack1($index, $item) { return this.getQueryKey($item); }
7
8
  function DataRequirementsViewerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
8
- i0.ɵɵelementStart(0, "div", 1);
9
- i0.ɵɵelement(1, "i", 2);
10
- i0.ɵɵelementStart(2, "h3");
11
- i0.ɵɵtext(3, "No Data Requirements");
12
- i0.ɵɵelementEnd();
13
- i0.ɵɵelementStart(4, "p");
14
- i0.ɵɵtext(5, "This component doesn't have any data requirements defined.");
15
- i0.ɵɵelementEnd()();
9
+ i0.ɵɵelement(0, "mj-empty-state", 1);
16
10
  } }
17
11
  function DataRequirementsViewerComponent_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelementStart(0, "div", 7)(1, "span", 8);
12
+ i0.ɵɵelementStart(0, "div", 6)(1, "span", 7);
19
13
  i0.ɵɵtext(2);
20
14
  i0.ɵɵelementEnd();
21
- i0.ɵɵelementStart(3, "span", 9);
15
+ i0.ɵɵelementStart(3, "span", 8);
22
16
  i0.ɵɵtext(4);
23
17
  i0.ɵɵelementEnd()();
24
18
  } if (rf & 2) {
@@ -29,10 +23,10 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_6_Template(rf
29
23
  i0.ɵɵtextInterpolate(ctx_r0.entities.length === 1 ? "Entity" : "Entities");
30
24
  } }
31
25
  function DataRequirementsViewerComponent_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelementStart(0, "div", 7)(1, "span", 8);
26
+ i0.ɵɵelementStart(0, "div", 6)(1, "span", 7);
33
27
  i0.ɵɵtext(2);
34
28
  i0.ɵɵelementEnd();
35
- i0.ɵɵelementStart(3, "span", 9);
29
+ i0.ɵɵelementStart(3, "span", 8);
36
30
  i0.ɵɵtext(4);
37
31
  i0.ɵɵelementEnd()();
38
32
  } if (rf & 2) {
@@ -43,12 +37,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_7_Template(rf
43
37
  i0.ɵɵtextInterpolate(ctx_r0.queries.length === 1 ? "Query" : "Queries");
44
38
  } }
45
39
  function DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵelementStart(0, "div", 10)(1, "h4", 13);
47
- i0.ɵɵelement(2, "i", 14);
40
+ i0.ɵɵelementStart(0, "div", 9)(1, "h4", 12);
41
+ i0.ɵɵelement(2, "i", 13);
48
42
  i0.ɵɵtext(3, " Overview ");
49
43
  i0.ɵɵelementEnd();
50
- i0.ɵɵelementStart(4, "div", 15);
51
- i0.ɵɵelement(5, "mj-markdown", 16);
44
+ i0.ɵɵelementStart(4, "div", 14);
45
+ i0.ɵɵelement(5, "mj-markdown", 15);
52
46
  i0.ɵɵelementEnd()();
53
47
  } if (rf & 2) {
54
48
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -56,7 +50,7 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template(r
56
50
  i0.ɵɵproperty("data", ctx_r0.description)("enableCollapsibleHeadings", false)("enableLineNumbers", false)("enableSmartypants", true)("enableHtml", true);
57
51
  } }
58
52
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
59
- i0.ɵɵelementStart(0, "p", 27);
53
+ i0.ɵɵelementStart(0, "p", 26);
60
54
  i0.ɵɵtext(1);
61
55
  i0.ɵɵelementEnd();
62
56
  } if (rf & 2) {
@@ -65,8 +59,8 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
65
59
  i0.ɵɵtextInterpolate(entity_r3.description);
66
60
  } }
67
61
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_14_Template(rf, ctx) { if (rf & 1) {
68
- i0.ɵɵelementStart(0, "span", 34);
69
- i0.ɵɵelement(1, "i", 5);
62
+ i0.ɵɵelementStart(0, "span", 33);
63
+ i0.ɵɵelement(1, "i", 4);
70
64
  i0.ɵɵtext(2);
71
65
  i0.ɵɵelementEnd();
72
66
  } if (rf & 2) {
@@ -79,8 +73,8 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_
79
73
  i0.ɵɵtextInterpolate1(" ", perm_r4, " ");
80
74
  } }
81
75
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_1_Template(rf, ctx) { if (rf & 1) {
82
- i0.ɵɵelementStart(0, "div", 35);
83
- i0.ɵɵelement(1, "i", 14);
76
+ i0.ɵɵelementStart(0, "div", 34);
77
+ i0.ɵɵelement(1, "i", 13);
84
78
  i0.ɵɵelementStart(2, "span");
85
79
  i0.ɵɵtext(3);
86
80
  i0.ɵɵelementEnd()();
@@ -90,12 +84,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
90
84
  i0.ɵɵtextInterpolate(entity_r3.usageContext);
91
85
  } }
92
86
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Conditional_5_Template(rf, ctx) { if (rf & 1) {
93
- i0.ɵɵelementStart(0, "span", 46);
87
+ i0.ɵɵelementStart(0, "span", 45);
94
88
  i0.ɵɵtext(1, "*");
95
89
  i0.ɵɵelementEnd();
96
90
  } }
97
91
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_For_11_Template(rf, ctx) { if (rf & 1) {
98
- i0.ɵɵelementStart(0, "span", 49);
92
+ i0.ɵɵelementStart(0, "span", 48);
99
93
  i0.ɵɵtext(1);
100
94
  i0.ɵɵelementEnd();
101
95
  } if (rf & 2) {
@@ -106,20 +100,20 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
106
100
  i0.ɵɵtextInterpolate(tag_r5);
107
101
  } }
108
102
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Template(rf, ctx) { if (rf & 1) {
109
- i0.ɵɵelementStart(0, "div", 44)(1, "span", 40);
110
- i0.ɵɵelement(2, "i", 5);
111
- i0.ɵɵelementStart(3, "span", 45);
103
+ i0.ɵɵelementStart(0, "div", 43)(1, "span", 39);
104
+ i0.ɵɵelement(2, "i", 4);
105
+ i0.ɵɵelementStart(3, "span", 44);
112
106
  i0.ɵɵtext(4);
113
107
  i0.ɵɵelementEnd();
114
- i0.ɵɵconditionalCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Conditional_5_Template, 2, 0, "span", 46);
108
+ i0.ɵɵconditionalCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Conditional_5_Template, 2, 0, "span", 45);
115
109
  i0.ɵɵelementEnd();
116
- i0.ɵɵelementStart(6, "span", 41)(7, "code", 47);
110
+ i0.ɵɵelementStart(6, "span", 40)(7, "code", 46);
117
111
  i0.ɵɵtext(8);
118
112
  i0.ɵɵelementEnd()();
119
- i0.ɵɵelementStart(9, "span", 42);
120
- i0.ɵɵrepeaterCreate(10, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_For_11_Template, 2, 3, "span", 48, i0.ɵɵrepeaterTrackByIdentity);
113
+ i0.ɵɵelementStart(9, "span", 41);
114
+ i0.ɵɵrepeaterCreate(10, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_For_11_Template, 2, 3, "span", 47, i0.ɵɵrepeaterTrackByIdentity);
121
115
  i0.ɵɵelementEnd();
122
- i0.ɵɵelementStart(12, "span", 43);
116
+ i0.ɵɵelementStart(12, "span", 42);
123
117
  i0.ɵɵtext(13);
124
118
  i0.ɵɵelementEnd()();
125
119
  } if (rf & 2) {
@@ -141,22 +135,22 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
141
135
  i0.ɵɵtextInterpolate1(" ", field_r6.description || "\u2014", " ");
142
136
  } }
143
137
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_Template(rf, ctx) { if (rf & 1) {
144
- i0.ɵɵelementStart(0, "div", 36)(1, "h5", 37);
138
+ i0.ɵɵelementStart(0, "div", 35)(1, "h5", 36);
145
139
  i0.ɵɵtext(2, "Fields");
146
140
  i0.ɵɵelementEnd();
147
- i0.ɵɵelementStart(3, "div", 38)(4, "div", 39)(5, "span", 40);
141
+ i0.ɵɵelementStart(3, "div", 37)(4, "div", 38)(5, "span", 39);
148
142
  i0.ɵɵtext(6, "Name");
149
143
  i0.ɵɵelementEnd();
150
- i0.ɵɵelementStart(7, "span", 41);
144
+ i0.ɵɵelementStart(7, "span", 40);
151
145
  i0.ɵɵtext(8, "Type");
152
146
  i0.ɵɵelementEnd();
153
- i0.ɵɵelementStart(9, "span", 42);
147
+ i0.ɵɵelementStart(9, "span", 41);
154
148
  i0.ɵɵtext(10, "Usage");
155
149
  i0.ɵɵelementEnd();
156
- i0.ɵɵelementStart(11, "span", 43);
150
+ i0.ɵɵelementStart(11, "span", 42);
157
151
  i0.ɵɵtext(12, "Description");
158
152
  i0.ɵɵelementEnd()();
159
- i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Template, 14, 7, "div", 44, _forTrack0);
153
+ i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_For_14_Template, 14, 7, "div", 43, _forTrack0);
160
154
  i0.ɵɵelementEnd()();
161
155
  } if (rf & 2) {
162
156
  const entity_r3 = i0.ɵɵnextContext(2).$implicit;
@@ -164,9 +158,9 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
164
158
  i0.ɵɵrepeater(entity_r3.fieldMetadata);
165
159
  } }
166
160
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
167
- i0.ɵɵelementStart(0, "div", 33);
168
- i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_1_Template, 4, 1, "div", 35);
169
- i0.ɵɵconditionalCreate(2, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_Template, 15, 0, "div", 36);
161
+ i0.ɵɵelementStart(0, "div", 32);
162
+ i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_1_Template, 4, 1, "div", 34);
163
+ i0.ɵɵconditionalCreate(2, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Conditional_2_Template, 15, 0, "div", 35);
170
164
  i0.ɵɵelementEnd();
171
165
  } if (rf & 2) {
172
166
  const entity_r3 = i0.ɵɵnextContext().$implicit;
@@ -177,26 +171,26 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Cond
177
171
  } }
178
172
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template(rf, ctx) { if (rf & 1) {
179
173
  const _r2 = i0.ɵɵgetCurrentView();
180
- i0.ɵɵelementStart(0, "div", 21)(1, "div", 22);
174
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 21);
181
175
  i0.ɵɵlistener("click", function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template_div_click_1_listener() { const entity_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.toggleEntity(entity_r3.name)); });
182
- i0.ɵɵelementStart(2, "div", 23)(3, "div", 24);
183
- i0.ɵɵelement(4, "i", 18);
176
+ i0.ɵɵelementStart(2, "div", 22)(3, "div", 23);
177
+ i0.ɵɵelement(4, "i", 17);
184
178
  i0.ɵɵelementEnd();
185
- i0.ɵɵelementStart(5, "div", 25)(6, "h4", 26);
179
+ i0.ɵɵelementStart(5, "div", 24)(6, "h4", 25);
186
180
  i0.ɵɵtext(7);
187
181
  i0.ɵɵelementEnd();
188
- i0.ɵɵconditionalCreate(8, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_8_Template, 2, 1, "p", 27);
182
+ i0.ɵɵconditionalCreate(8, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_8_Template, 2, 1, "p", 26);
189
183
  i0.ɵɵelementEnd();
190
- i0.ɵɵelementStart(9, "div", 28);
191
- i0.ɵɵelement(10, "i", 5);
184
+ i0.ɵɵelementStart(9, "div", 27);
185
+ i0.ɵɵelement(10, "i", 4);
192
186
  i0.ɵɵelementEnd()();
193
- i0.ɵɵelementStart(11, "div", 29)(12, "div", 30);
194
- i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_14_Template, 3, 4, "span", 31, i0.ɵɵrepeaterTrackByIdentity);
187
+ i0.ɵɵelementStart(11, "div", 28)(12, "div", 29);
188
+ i0.ɵɵrepeaterCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_For_14_Template, 3, 4, "span", 30, i0.ɵɵrepeaterTrackByIdentity);
195
189
  i0.ɵɵelementEnd();
196
- i0.ɵɵelementStart(15, "span", 32);
190
+ i0.ɵɵelementStart(15, "span", 31);
197
191
  i0.ɵɵtext(16);
198
192
  i0.ɵɵelementEnd()()();
199
- i0.ɵɵconditionalCreate(17, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Template, 3, 2, "div", 33);
193
+ i0.ɵɵconditionalCreate(17, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Conditional_17_Template, 3, 2, "div", 32);
200
194
  i0.ɵɵelementEnd();
201
195
  } if (rf & 2) {
202
196
  const entity_r3 = ctx.$implicit;
@@ -216,12 +210,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Temp
216
210
  i0.ɵɵconditional(ctx_r0.isEntityExpanded(entity_r3.name) ? 17 : -1);
217
211
  } }
218
212
  function DataRequirementsViewerComponent_Conditional_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
219
- i0.ɵɵelementStart(0, "div", 11)(1, "h3", 17);
220
- i0.ɵɵelement(2, "i", 18);
213
+ i0.ɵɵelementStart(0, "div", 10)(1, "h3", 16);
214
+ i0.ɵɵelement(2, "i", 17);
221
215
  i0.ɵɵtext(3, " Entities ");
222
216
  i0.ɵɵelementEnd();
223
- i0.ɵɵelementStart(4, "div", 19);
224
- i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template, 18, 7, "div", 20, _forTrack0);
217
+ i0.ɵɵelementStart(4, "div", 18);
218
+ i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_14_For_6_Template, 18, 7, "div", 19, _forTrack0);
225
219
  i0.ɵɵelementEnd()();
226
220
  } if (rf & 2) {
227
221
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -235,7 +229,7 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
235
229
  i0.ɵɵelementEnd();
236
230
  } }
237
231
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_12_Template(rf, ctx) { if (rf & 1) {
238
- i0.ɵɵelementStart(0, "p", 27);
232
+ i0.ɵɵelementStart(0, "p", 26);
239
233
  i0.ɵɵtext(1);
240
234
  i0.ɵɵelementEnd();
241
235
  } if (rf & 2) {
@@ -245,7 +239,7 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
245
239
  } }
246
240
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
247
241
  i0.ɵɵelementStart(0, "span", 59);
248
- i0.ɵɵelement(1, "i", 18);
242
+ i0.ɵɵelement(1, "i", 17);
249
243
  i0.ɵɵtext(2);
250
244
  i0.ɵɵelementEnd();
251
245
  } if (rf & 2) {
@@ -339,15 +333,15 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
339
333
  i0.ɵɵrepeater(query_r8.parameters);
340
334
  } }
341
335
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_For_12_Template(rf, ctx) { if (rf & 1) {
342
- i0.ɵɵelementStart(0, "div", 44)(1, "span", 40);
343
- i0.ɵɵelement(2, "i", 5);
344
- i0.ɵɵelementStart(3, "span", 45);
336
+ i0.ɵɵelementStart(0, "div", 43)(1, "span", 39);
337
+ i0.ɵɵelement(2, "i", 4);
338
+ i0.ɵɵelementStart(3, "span", 44);
345
339
  i0.ɵɵtext(4);
346
340
  i0.ɵɵelementEnd()();
347
- i0.ɵɵelementStart(5, "span", 41)(6, "code", 47);
341
+ i0.ɵɵelementStart(5, "span", 40)(6, "code", 46);
348
342
  i0.ɵɵtext(7);
349
343
  i0.ɵɵelementEnd()();
350
- i0.ɵɵelementStart(8, "span", 43);
344
+ i0.ɵɵelementStart(8, "span", 42);
351
345
  i0.ɵɵtext(9);
352
346
  i0.ɵɵelementEnd()();
353
347
  } if (rf & 2) {
@@ -364,19 +358,19 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
364
358
  i0.ɵɵtextInterpolate1(" ", field_r11.description || "\u2014", " ");
365
359
  } }
366
360
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_Template(rf, ctx) { if (rf & 1) {
367
- i0.ɵɵelementStart(0, "div", 36)(1, "h5", 37);
361
+ i0.ɵɵelementStart(0, "div", 35)(1, "h5", 36);
368
362
  i0.ɵɵtext(2, "Output Fields");
369
363
  i0.ɵɵelementEnd();
370
- i0.ɵɵelementStart(3, "div", 38)(4, "div", 39)(5, "span", 40);
364
+ i0.ɵɵelementStart(3, "div", 37)(4, "div", 38)(5, "span", 39);
371
365
  i0.ɵɵtext(6, "Name");
372
366
  i0.ɵɵelementEnd();
373
- i0.ɵɵelementStart(7, "span", 41);
367
+ i0.ɵɵelementStart(7, "span", 40);
374
368
  i0.ɵɵtext(8, "Type");
375
369
  i0.ɵɵelementEnd();
376
- i0.ɵɵelementStart(9, "span", 43);
370
+ i0.ɵɵelementStart(9, "span", 42);
377
371
  i0.ɵɵtext(10, "Description");
378
372
  i0.ɵɵelementEnd()();
379
- i0.ɵɵrepeaterCreate(11, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_For_12_Template, 10, 6, "div", 44, _forTrack0);
373
+ i0.ɵɵrepeaterCreate(11, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_For_12_Template, 10, 6, "div", 43, _forTrack0);
380
374
  i0.ɵɵelementEnd()();
381
375
  } if (rf & 2) {
382
376
  const query_r8 = i0.ɵɵnextContext(2).$implicit;
@@ -397,9 +391,9 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
397
391
  i0.ɵɵtextInterpolate(query_r8.newQuerySQL);
398
392
  } }
399
393
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Template(rf, ctx) { if (rf & 1) {
400
- i0.ɵɵelementStart(0, "div", 33);
394
+ i0.ɵɵelementStart(0, "div", 32);
401
395
  i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_1_Template, 7, 0, "div", 60);
402
- i0.ɵɵconditionalCreate(2, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_Template, 13, 0, "div", 36);
396
+ i0.ɵɵconditionalCreate(2, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_2_Template, 13, 0, "div", 35);
403
397
  i0.ɵɵconditionalCreate(3, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Conditional_3_Template, 6, 1, "div", 61);
404
398
  i0.ɵɵelementEnd();
405
399
  } if (rf & 2) {
@@ -413,12 +407,12 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Cond
413
407
  } }
414
408
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Template(rf, ctx) { if (rf & 1) {
415
409
  const _r7 = i0.ɵɵgetCurrentView();
416
- i0.ɵɵelementStart(0, "div", 51)(1, "div", 22);
410
+ i0.ɵɵelementStart(0, "div", 51)(1, "div", 21);
417
411
  i0.ɵɵlistener("click", function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Template_div_click_1_listener() { const query_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.toggleQuery(ctx_r0.getQueryKey(query_r8))); });
418
- i0.ɵɵelementStart(2, "div", 23)(3, "div", 52);
412
+ i0.ɵɵelementStart(2, "div", 22)(3, "div", 52);
419
413
  i0.ɵɵelement(4, "i", 53);
420
414
  i0.ɵɵelementEnd();
421
- i0.ɵɵelementStart(5, "div", 25)(6, "div", 54)(7, "h4", 26);
415
+ i0.ɵɵelementStart(5, "div", 24)(6, "div", 54)(7, "h4", 25);
422
416
  i0.ɵɵtext(8);
423
417
  i0.ɵɵelementEnd();
424
418
  i0.ɵɵconditionalCreate(9, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_9_Template, 3, 0, "span", 55);
@@ -426,17 +420,17 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Temp
426
420
  i0.ɵɵelementStart(10, "p", 56);
427
421
  i0.ɵɵtext(11);
428
422
  i0.ɵɵelementEnd();
429
- i0.ɵɵconditionalCreate(12, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_12_Template, 2, 1, "p", 27);
423
+ i0.ɵɵconditionalCreate(12, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_12_Template, 2, 1, "p", 26);
430
424
  i0.ɵɵelementEnd();
431
- i0.ɵɵelementStart(13, "div", 28);
432
- i0.ɵɵelement(14, "i", 5);
425
+ i0.ɵɵelementStart(13, "div", 27);
426
+ i0.ɵɵelement(14, "i", 4);
433
427
  i0.ɵɵelementEnd()();
434
- i0.ɵɵelementStart(15, "div", 29);
428
+ i0.ɵɵelementStart(15, "div", 28);
435
429
  i0.ɵɵconditionalCreate(16, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_16_Template, 3, 0, "div", 57);
436
- i0.ɵɵelementStart(17, "span", 32);
430
+ i0.ɵɵelementStart(17, "span", 31);
437
431
  i0.ɵɵtext(18);
438
432
  i0.ɵɵelementEnd()()();
439
- i0.ɵɵconditionalCreate(19, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Template, 4, 3, "div", 33);
433
+ i0.ɵɵconditionalCreate(19, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Conditional_19_Template, 4, 3, "div", 32);
440
434
  i0.ɵɵelementEnd();
441
435
  } if (rf & 2) {
442
436
  const query_r8 = ctx.$implicit;
@@ -460,11 +454,11 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Temp
460
454
  i0.ɵɵconditional(ctx_r0.isQueryExpanded(ctx_r0.getQueryKey(query_r8)) ? 19 : -1);
461
455
  } }
462
456
  function DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
463
- i0.ɵɵelementStart(0, "div", 12)(1, "h3", 17);
464
- i0.ɵɵelement(2, "i", 2);
457
+ i0.ɵɵelementStart(0, "div", 11)(1, "h3", 16);
458
+ i0.ɵɵelement(2, "i", 49);
465
459
  i0.ɵɵtext(3, " Queries ");
466
460
  i0.ɵɵelementEnd();
467
- i0.ɵɵelementStart(4, "div", 19);
461
+ i0.ɵɵelementStart(4, "div", 18);
468
462
  i0.ɵɵrepeaterCreate(5, DataRequirementsViewerComponent_Conditional_2_Conditional_15_For_6_Template, 20, 10, "div", 50, _forTrack1, true);
469
463
  i0.ɵɵelementEnd()();
470
464
  } if (rf & 2) {
@@ -473,23 +467,23 @@ function DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template(r
473
467
  i0.ɵɵrepeater(ctx_r0.queries);
474
468
  } }
475
469
  function DataRequirementsViewerComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
476
- i0.ɵɵelementStart(0, "div", 3)(1, "div", 4);
477
- i0.ɵɵelement(2, "i", 5);
470
+ i0.ɵɵelementStart(0, "div", 2)(1, "div", 3);
471
+ i0.ɵɵelement(2, "i", 4);
478
472
  i0.ɵɵelementStart(3, "span");
479
473
  i0.ɵɵtext(4);
480
474
  i0.ɵɵelementEnd()();
481
- i0.ɵɵelementStart(5, "div", 6);
482
- i0.ɵɵconditionalCreate(6, DataRequirementsViewerComponent_Conditional_2_Conditional_6_Template, 5, 2, "div", 7);
483
- i0.ɵɵconditionalCreate(7, DataRequirementsViewerComponent_Conditional_2_Conditional_7_Template, 5, 2, "div", 7);
484
- i0.ɵɵelementStart(8, "div", 7)(9, "span", 8);
475
+ i0.ɵɵelementStart(5, "div", 5);
476
+ i0.ɵɵconditionalCreate(6, DataRequirementsViewerComponent_Conditional_2_Conditional_6_Template, 5, 2, "div", 6);
477
+ i0.ɵɵconditionalCreate(7, DataRequirementsViewerComponent_Conditional_2_Conditional_7_Template, 5, 2, "div", 6);
478
+ i0.ɵɵelementStart(8, "div", 6)(9, "span", 7);
485
479
  i0.ɵɵtext(10);
486
480
  i0.ɵɵelementEnd();
487
- i0.ɵɵelementStart(11, "span", 9);
481
+ i0.ɵɵelementStart(11, "span", 8);
488
482
  i0.ɵɵtext(12);
489
483
  i0.ɵɵelementEnd()()()();
490
- i0.ɵɵconditionalCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template, 6, 5, "div", 10);
491
- i0.ɵɵconditionalCreate(14, DataRequirementsViewerComponent_Conditional_2_Conditional_14_Template, 7, 0, "div", 11);
492
- i0.ɵɵconditionalCreate(15, DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template, 7, 0, "div", 12);
484
+ i0.ɵɵconditionalCreate(13, DataRequirementsViewerComponent_Conditional_2_Conditional_13_Template, 6, 5, "div", 9);
485
+ i0.ɵɵconditionalCreate(14, DataRequirementsViewerComponent_Conditional_2_Conditional_14_Template, 7, 0, "div", 10);
486
+ i0.ɵɵconditionalCreate(15, DataRequirementsViewerComponent_Conditional_2_Conditional_15_Template, 7, 0, "div", 11);
493
487
  } if (rf & 2) {
494
488
  const ctx_r0 = i0.ɵɵnextContext();
495
489
  i0.ɵɵadvance(2);
@@ -674,18 +668,18 @@ export class DataRequirementsViewerComponent {
674
668
  }
675
669
  }
676
670
  static ɵfac = function DataRequirementsViewerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DataRequirementsViewerComponent)(); };
677
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataRequirementsViewerComponent, selectors: [["mj-data-requirements-viewer"]], inputs: { dataRequirements: "dataRequirements" }, standalone: false, decls: 3, vars: 1, consts: [[1, "data-requirements-viewer"], [1, "empty-state"], [1, "fas", "fa-database"], [1, "summary-header"], [1, "mode-badge"], [1, "fas", 3, "ngClass"], [1, "stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "description-section"], [1, "section", "entities-section"], [1, "section", "queries-section"], [1, "description-title"], [1, "fas", "fa-info-circle"], [1, "description-content"], [3, "data", "enableCollapsibleHeadings", "enableLineNumbers", "enableSmartypants", "enableHtml"], [1, "section-title"], [1, "fas", "fa-table"], [1, "cards-container"], [1, "data-card", "entity-card", 3, "expanded"], [1, "data-card", "entity-card"], [1, "card-header", 3, "click"], [1, "card-title-row"], [1, "card-icon"], [1, "card-title-info"], [1, "card-title"], [1, "card-description"], [1, "expand-icon"], [1, "card-meta"], [1, "permissions-row"], [1, "permission-badge", 3, "background-color"], [1, "field-count"], [1, "card-body"], [1, "permission-badge"], [1, "usage-context"], [1, "fields-section"], [1, "fields-title"], [1, "fields-table"], [1, "fields-header"], [1, "field-col", "name-col"], [1, "field-col", "type-col"], [1, "field-col", "tags-col"], [1, "field-col", "desc-col"], [1, "field-row"], [1, "field-name"], ["title", "Required", 1, "required-indicator"], [1, "field-type"], [1, "usage-tag", 3, "background-color"], [1, "usage-tag"], [1, "data-card", "query-card", 3, "expanded"], [1, "data-card", "query-card"], [1, "card-icon", "query-icon"], [1, "fas", "fa-code"], [1, "title-with-badge"], ["title", "This query was newly created for this component", 1, "new-query-badge"], [1, "card-path"], [1, "entity-badges"], [1, "fas", "fa-sparkles"], [1, "entity-badge"], [1, "parameters-section"], [1, "sql-section"], [1, "parameters-title"], [1, "fas", "fa-sliders-h"], [1, "parameters-list"], [1, "parameter-item"], [1, "param-header"], [1, "param-name"], [1, "required-badge"], [1, "optional-badge"], [1, "param-type"], [1, "param-description"], [1, "param-sample"], [1, "sample-label"], [1, "sql-title"], [1, "fas", "fa-terminal"], [1, "sql-code"]], template: function DataRequirementsViewerComponent_Template(rf, ctx) { if (rf & 1) {
671
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataRequirementsViewerComponent, selectors: [["mj-data-requirements-viewer"]], inputs: { dataRequirements: "dataRequirements" }, standalone: false, decls: 3, vars: 1, consts: [[1, "data-requirements-viewer"], ["Icon", "fa-solid fa-database", "Title", "No Data Requirements", "Message", "This component doesn't have any data requirements defined.", "Size", "compact"], [1, "summary-header"], [1, "mode-badge"], [1, "fas", 3, "ngClass"], [1, "stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "description-section"], [1, "section", "entities-section"], [1, "section", "queries-section"], [1, "description-title"], [1, "fas", "fa-info-circle"], [1, "description-content"], [3, "data", "enableCollapsibleHeadings", "enableLineNumbers", "enableSmartypants", "enableHtml"], [1, "section-title"], [1, "fas", "fa-table"], [1, "cards-container"], [1, "data-card", "entity-card", 3, "expanded"], [1, "data-card", "entity-card"], [1, "card-header", 3, "click"], [1, "card-title-row"], [1, "card-icon"], [1, "card-title-info"], [1, "card-title"], [1, "card-description"], [1, "expand-icon"], [1, "card-meta"], [1, "permissions-row"], [1, "permission-badge", 3, "background-color"], [1, "field-count"], [1, "card-body"], [1, "permission-badge"], [1, "usage-context"], [1, "fields-section"], [1, "fields-title"], [1, "fields-table"], [1, "fields-header"], [1, "field-col", "name-col"], [1, "field-col", "type-col"], [1, "field-col", "tags-col"], [1, "field-col", "desc-col"], [1, "field-row"], [1, "field-name"], ["title", "Required", 1, "required-indicator"], [1, "field-type"], [1, "usage-tag", 3, "background-color"], [1, "usage-tag"], [1, "fas", "fa-database"], [1, "data-card", "query-card", 3, "expanded"], [1, "data-card", "query-card"], [1, "card-icon", "query-icon"], [1, "fas", "fa-code"], [1, "title-with-badge"], ["title", "This query was newly created for this component", 1, "new-query-badge"], [1, "card-path"], [1, "entity-badges"], [1, "fas", "fa-sparkles"], [1, "entity-badge"], [1, "parameters-section"], [1, "sql-section"], [1, "parameters-title"], [1, "fas", "fa-sliders-h"], [1, "parameters-list"], [1, "parameter-item"], [1, "param-header"], [1, "param-name"], [1, "required-badge"], [1, "optional-badge"], [1, "param-type"], [1, "param-description"], [1, "param-sample"], [1, "sample-label"], [1, "sql-title"], [1, "fas", "fa-terminal"], [1, "sql-code"]], template: function DataRequirementsViewerComponent_Template(rf, ctx) { if (rf & 1) {
678
672
  i0.ɵɵelementStart(0, "div", 0);
679
- i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_1_Template, 6, 0, "div", 1)(2, DataRequirementsViewerComponent_Conditional_2_Template, 16, 9);
673
+ i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_1_Template, 1, 0, "mj-empty-state", 1)(2, DataRequirementsViewerComponent_Conditional_2_Template, 16, 9);
680
674
  i0.ɵɵelementEnd();
681
675
  } if (rf & 2) {
682
676
  i0.ɵɵadvance();
683
677
  i0.ɵɵconditional(!ctx.hasData ? 1 : 2);
684
- } }, dependencies: [i1.NgClass, i2.MarkdownComponent], styles: [".data-requirements-viewer[_ngcontent-%COMP%] {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-sunken);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-border-default);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-muted);\n}\n\n\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 0;\n}\n\n.mode-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.mode-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n opacity: 0.9;\n}\n\n.stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n line-height: 1;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.85;\n}\n\n\n\n.description-section[_ngcontent-%COMP%] {\n padding: 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.description-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.description-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.description-content[_ngcontent-%COMP%] {\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\n}\n\n.description-content[_ngcontent-%COMP%] p {\n margin: 0 0 12px 0;\n}\n\n.description-content[_ngcontent-%COMP%] p:last-child {\n margin-bottom: 0;\n}\n\n.description-content[_ngcontent-%COMP%] pre {\n background: var(--mj-bg-surface-sunken);\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content[_ngcontent-%COMP%] code {\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n\n\n\n.section[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 18px;\n}\n\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n\n\n.data-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.data-card.expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\n}\n\n\n\n.card-header[_ngcontent-%COMP%] {\n padding: 16px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.card-title-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.title-with-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-query-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n animation: _ngcontent-%COMP%_subtle-pulse 2s ease-in-out infinite;\n}\n\n.new-query-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n@keyframes _ngcontent-%COMP%_subtle-pulse {\n 0%, 100% {\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n }\n 50% {\n box-shadow: 0 2px 8px rgba(16, 185, 129, 0.4);\n }\n}\n\n.card-path[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.permissions-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.permission-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-inverse);\n text-transform: capitalize;\n}\n\n.permission-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.field-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.entity-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 16px 16px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n\n\n.usage-context[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 12px;\n margin-top: 12px;\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-status-warning);\n}\n\n.usage-context[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n margin-top: 2px;\n}\n\n\n\n.fields-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.fields-title[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.fields-table[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header[_ngcontent-%COMP%] {\n display: flex;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.field-row[_ngcontent-%COMP%] {\n display: flex;\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n font-size: 13px;\n align-items: center;\n}\n\n.field-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.field-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-col[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.name-col[_ngcontent-%COMP%] {\n flex: 0 0 200px;\n min-width: 0;\n}\n\n.type-col[_ngcontent-%COMP%] {\n flex: 0 0 120px;\n}\n\n.tags-col[_ngcontent-%COMP%] {\n flex: 0 0 160px;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.desc-col[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.required-indicator[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.field-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.usage-tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n\n.parameters-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.parameters-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.parameters-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.parameter-item[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.param-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n\n.required-badge[_ngcontent-%COMP%] {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.optional-badge[_ngcontent-%COMP%] {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.param-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.param-description[_ngcontent-%COMP%] {\n margin: 8px 0 0 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n}\n\n.param-sample[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 12px;\n}\n\n.sample-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.param-sample[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: var(--mj-status-error);\n}\n\n\n\n.sql-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.sql-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.sql-code[_ngcontent-%COMP%] {\n margin: 0;\n padding: 16px;\n background: var(--mj-bg-code-block, #1e1e1e);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.5;\n color: var(--mj-text-code, #d4d4d4);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n@media (max-width: 768px) {\n .summary-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .stats[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: space-around;\n }\n\n .name-col[_ngcontent-%COMP%] {\n flex: 0 0 140px;\n }\n\n .type-col[_ngcontent-%COMP%] {\n flex: 0 0 90px;\n }\n\n .tags-col[_ngcontent-%COMP%] {\n flex: 0 0 120px;\n }\n\n .card-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n }\n}"] });
678
+ } }, dependencies: [i1.NgClass, i2.MarkdownComponent, i3.MJEmptyStateComponent], styles: [".data-requirements-viewer[_ngcontent-%COMP%] {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-sunken);\n}\n\n\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 0;\n}\n\n.mode-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.mode-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n opacity: 0.9;\n}\n\n.stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n line-height: 1;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.85;\n}\n\n\n\n.description-section[_ngcontent-%COMP%] {\n padding: 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.description-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.description-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.description-content[_ngcontent-%COMP%] {\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\n}\n\n.description-content[_ngcontent-%COMP%] p {\n margin: 0 0 12px 0;\n}\n\n.description-content[_ngcontent-%COMP%] p:last-child {\n margin-bottom: 0;\n}\n\n.description-content[_ngcontent-%COMP%] pre {\n background: var(--mj-bg-surface-sunken);\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content[_ngcontent-%COMP%] code {\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n\n\n\n.section[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 18px;\n}\n\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n\n\n.data-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.data-card.expanded[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\n}\n\n\n\n.card-header[_ngcontent-%COMP%] {\n padding: 16px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.card-title-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.title-with-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-query-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n animation: _ngcontent-%COMP%_subtle-pulse 2s ease-in-out infinite;\n}\n\n.new-query-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n@keyframes _ngcontent-%COMP%_subtle-pulse {\n 0%, 100% {\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n }\n 50% {\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-status-success) 40%, transparent);\n }\n}\n\n.card-path[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded[_ngcontent-%COMP%] .expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.permissions-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.permission-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-inverse);\n text-transform: capitalize;\n}\n\n.permission-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.field-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.entity-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 16px 16px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n\n\n.usage-context[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 12px;\n margin-top: 12px;\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-status-warning);\n}\n\n.usage-context[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n margin-top: 2px;\n}\n\n\n\n.fields-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.fields-title[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.fields-table[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header[_ngcontent-%COMP%] {\n display: flex;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.field-row[_ngcontent-%COMP%] {\n display: flex;\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n font-size: 13px;\n align-items: center;\n}\n\n.field-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.field-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-col[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.name-col[_ngcontent-%COMP%] {\n flex: 0 0 200px;\n min-width: 0;\n}\n\n.type-col[_ngcontent-%COMP%] {\n flex: 0 0 120px;\n}\n\n.tags-col[_ngcontent-%COMP%] {\n flex: 0 0 160px;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.desc-col[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.required-indicator[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.field-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.usage-tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n\n.parameters-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.parameters-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.parameters-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.parameter-item[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.param-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n\n.required-badge[_ngcontent-%COMP%] {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.optional-badge[_ngcontent-%COMP%] {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.param-type[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.param-description[_ngcontent-%COMP%] {\n margin: 8px 0 0 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n}\n\n.param-sample[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 12px;\n}\n\n.sample-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.param-sample[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n padding: 2px 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: var(--mj-status-error);\n}\n\n\n\n.sql-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.sql-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.sql-code[_ngcontent-%COMP%] {\n margin: 0;\n padding: 16px;\n background: var(--mj-bg-code-block, #1e1e1e);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.5;\n color: var(--mj-text-code, #d4d4d4);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n@media (max-width: 768px) {\n .summary-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .stats[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: space-around;\n }\n\n .name-col[_ngcontent-%COMP%] {\n flex: 0 0 140px;\n }\n\n .type-col[_ngcontent-%COMP%] {\n flex: 0 0 90px;\n }\n\n .tags-col[_ngcontent-%COMP%] {\n flex: 0 0 120px;\n }\n\n .card-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n }\n}"] });
685
679
  }
686
680
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataRequirementsViewerComponent, [{
687
681
  type: Component,
688
- args: [{ standalone: false, selector: 'mj-data-requirements-viewer', template: "<div class=\"data-requirements-viewer\">\n @if (!hasData) {\n <div class=\"empty-state\">\n <i class=\"fas fa-database\"></i>\n <h3>No Data Requirements</h3>\n <p>This component doesn't have any data requirements defined.</p>\n </div>\n } @else {\n <!-- Header Summary -->\n <div class=\"summary-header\">\n <div class=\"mode-badge\">\n <i class=\"fas\" [ngClass]=\"modeIcon\"></i>\n <span>{{ modeLabel }}</span>\n </div>\n <div class=\"stats\">\n @if (entities.length > 0) {\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ entities.length }}</span>\n <span class=\"stat-label\">{{ entities.length === 1 ? 'Entity' : 'Entities' }}</span>\n </div>\n }\n @if (queries.length > 0) {\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ queries.length }}</span>\n <span class=\"stat-label\">{{ queries.length === 1 ? 'Query' : 'Queries' }}</span>\n </div>\n }\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ totalFieldCount }}</span>\n <span class=\"stat-label\">{{ totalFieldCount === 1 ? 'Field' : 'Fields' }}</span>\n </div>\n </div>\n </div>\n\n <!-- Description / Overview (supports markdown including mermaid diagrams) -->\n @if (description) {\n <div class=\"description-section\">\n <h4 class=\"description-title\">\n <i class=\"fas fa-info-circle\"></i>\n Overview\n </h4>\n <div class=\"description-content\">\n <mj-markdown [data]=\"description\"\n [enableCollapsibleHeadings]=\"false\"\n [enableLineNumbers]=\"false\"\n [enableSmartypants]=\"true\"\n [enableHtml]=\"true\"></mj-markdown>\n </div>\n </div>\n }\n\n <!-- Entities Section -->\n @if (entities.length > 0) {\n <div class=\"section entities-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-table\"></i>\n Entities\n </h3>\n <div class=\"cards-container\">\n @for (entity of entities; track entity.name) {\n <div class=\"data-card entity-card\" [class.expanded]=\"isEntityExpanded(entity.name)\">\n <div class=\"card-header\" (click)=\"toggleEntity(entity.name)\">\n <div class=\"card-title-row\">\n <div class=\"card-icon\">\n <i class=\"fas fa-table\"></i>\n </div>\n <div class=\"card-title-info\">\n <h4 class=\"card-title\">{{ entity.name }}</h4>\n @if (entity.description) {\n <p class=\"card-description\">{{ entity.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isEntityExpanded(entity.name) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n <div class=\"permissions-row\">\n @for (perm of entity.permissionLevelNeeded; track perm) {\n <span class=\"permission-badge\" [style.background-color]=\"getPermissionColor(perm)\">\n <i class=\"fas\" [ngClass]=\"getPermissionIcon(perm)\"></i>\n {{ perm }}\n </span>\n }\n </div>\n <span class=\"field-count\">{{ entity.fieldMetadata.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isEntityExpanded(entity.name)) {\n <div class=\"card-body\">\n @if (entity.usageContext) {\n <div class=\"usage-context\">\n <i class=\"fas fa-info-circle\"></i>\n <span>{{ entity.usageContext }}</span>\n </div>\n }\n\n <!-- Fields Table -->\n @if (entity.fieldMetadata && entity.fieldMetadata.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col tags-col\">Usage</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of entity.fieldMetadata; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n @if (!field.allowsNull) {\n <span class=\"required-indicator\" title=\"Required\">*</span>\n }\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col tags-col\">\n @for (tag of getFieldUsageTags(field, entity); track tag) {\n <span class=\"usage-tag\" [style.background-color]=\"getTagColor(tag)\">{{ tag }}</span>\n }\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '\u2014' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Queries Section -->\n @if (queries.length > 0) {\n <div class=\"section queries-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-database\"></i>\n Queries\n </h3>\n <div class=\"cards-container\">\n @for (query of queries; track getQueryKey(query)) {\n <div class=\"data-card query-card\" [class.expanded]=\"isQueryExpanded(getQueryKey(query))\">\n <div class=\"card-header\" (click)=\"toggleQuery(getQueryKey(query))\">\n <div class=\"card-title-row\">\n <div class=\"card-icon query-icon\">\n <i class=\"fas fa-code\"></i>\n </div>\n <div class=\"card-title-info\">\n <div class=\"title-with-badge\">\n <h4 class=\"card-title\">{{ query.name }}</h4>\n @if (query.isNew) {\n <span class=\"new-query-badge\" title=\"This query was newly created for this component\">\n <i class=\"fas fa-sparkles\"></i>\n NEW\n </span>\n }\n </div>\n <p class=\"card-path\">{{ query.categoryPath }}</p>\n @if (query.description) {\n <p class=\"card-description\">{{ query.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isQueryExpanded(getQueryKey(query)) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n @if (query.entityNames && query.entityNames.length > 0) {\n <div class=\"entity-badges\">\n @for (entityName of query.entityNames; track entityName) {\n <span class=\"entity-badge\">\n <i class=\"fas fa-table\"></i>\n {{ entityName }}\n </span>\n }\n </div>\n }\n <span class=\"field-count\">{{ query.fields.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isQueryExpanded(getQueryKey(query))) {\n <div class=\"card-body\">\n <!-- Parameters -->\n @if (query.parameters && query.parameters.length > 0) {\n <div class=\"parameters-section\">\n <h5 class=\"parameters-title\">\n <i class=\"fas fa-sliders-h\"></i>\n Parameters\n </h5>\n <div class=\"parameters-list\">\n @for (param of query.parameters; track param.name) {\n <div class=\"parameter-item\">\n <div class=\"param-header\">\n <span class=\"param-name\">{{ param.name }}</span>\n @if (param.isRequired) {\n <span class=\"required-badge\">Required</span>\n } @else {\n <span class=\"optional-badge\">Optional</span>\n }\n @if (param.type) {\n <code class=\"param-type\">{{ param.type }}</code>\n }\n </div>\n @if (param.description) {\n <p class=\"param-description\">{{ param.description }}</p>\n }\n @if (param.sampleValue || param.testValue) {\n <div class=\"param-sample\">\n <span class=\"sample-label\">Sample:</span>\n <code>{{ param.sampleValue || param.testValue }}</code>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Fields Table -->\n @if (query.fields && query.fields.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Output Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of query.fields; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '\u2014' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- New Query SQL -->\n @if (query.newQuerySQL) {\n <div class=\"sql-section\">\n <h5 class=\"sql-title\">\n <i class=\"fas fa-terminal\"></i>\n Query SQL\n </h5>\n <pre class=\"sql-code\">{{ query.newQuerySQL }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: [".data-requirements-viewer {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n color: var(--mj-border-default);\n}\n\n.empty-state h3 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-muted);\n}\n\n/* Summary Header */\n.summary-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 0;\n}\n\n.mode-badge {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.mode-badge i {\n font-size: 20px;\n opacity: 0.9;\n}\n\n.stats {\n display: flex;\n gap: 24px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 700;\n line-height: 1;\n}\n\n.stat-label {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.85;\n}\n\n/* Description Section */\n.description-section {\n padding: 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.description-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.description-title i {\n color: var(--mj-brand-primary);\n}\n\n.description-content {\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\n}\n\n.description-content ::ng-deep p {\n margin: 0 0 12px 0;\n}\n\n.description-content ::ng-deep p:last-child {\n margin-bottom: 0;\n}\n\n.description-content ::ng-deep pre {\n background: var(--mj-bg-surface-sunken);\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content ::ng-deep code {\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n\n/* Section Styling */\n.section {\n padding: 20px;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\n font-size: 18px;\n}\n\n/* Cards Container */\n.cards-container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Data Card */\n.data-card {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card:hover {\n border-color: var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.data-card.expanded {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\n}\n\n/* Card Header */\n.card-header {\n padding: 16px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-title-row {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.card-title-info {\n flex: 1;\n min-width: 0;\n}\n\n.title-with-badge {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-query-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n animation: subtle-pulse 2s ease-in-out infinite;\n}\n\n.new-query-badge i {\n font-size: 9px;\n}\n\n@keyframes subtle-pulse {\n 0%, 100% {\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.2);\n }\n 50% {\n box-shadow: 0 2px 8px rgba(16, 185, 129, 0.4);\n }\n}\n\n.card-path {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.expand-icon {\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded .expand-icon {\n color: var(--mj-brand-primary);\n}\n\n/* Card Meta */\n.card-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.permissions-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-inverse);\n text-transform: capitalize;\n}\n\n.permission-badge i {\n font-size: 10px;\n}\n\n.field-count {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.entity-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.entity-badge i {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* Card Body */\n.card-body {\n padding: 0 16px 16px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n/* Usage Context */\n.usage-context {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 12px;\n margin-top: 12px;\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-status-warning);\n}\n\n.usage-context i {\n color: var(--mj-status-warning);\n margin-top: 2px;\n}\n\n/* Fields Section */\n.fields-section {\n margin-top: 16px;\n}\n\n.fields-title {\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Fields Table */\n.fields-table {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header {\n display: flex;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.field-row {\n display: flex;\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n font-size: 13px;\n align-items: center;\n}\n\n.field-row:last-child {\n border-bottom: none;\n}\n\n.field-row:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-col {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.name-col {\n flex: 0 0 200px;\n min-width: 0;\n}\n\n.type-col {\n flex: 0 0 120px;\n}\n\n.tags-col {\n flex: 0 0 160px;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.desc-col {\n flex: 1;\n color: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.required-indicator {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.field-type {\n padding: 2px 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.usage-tag {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* Parameters Section */\n.parameters-section {\n margin-top: 16px;\n}\n\n.parameters-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title i {\n color: var(--mj-brand-primary);\n}\n\n.parameters-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.parameter-item {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.param-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n\n.required-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.optional-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.param-type {\n padding: 2px 6px;\n background: var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.param-description {\n margin: 8px 0 0 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n}\n\n.param-sample {\n margin-top: 8px;\n font-size: 12px;\n}\n\n.sample-label {\n color: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.param-sample code {\n padding: 2px 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: var(--mj-status-error);\n}\n\n/* SQL Section */\n.sql-section {\n margin-top: 16px;\n}\n\n.sql-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title i {\n color: var(--mj-brand-primary);\n}\n\n.sql-code {\n margin: 0;\n padding: 16px;\n background: var(--mj-bg-code-block, #1e1e1e);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.5;\n color: var(--mj-text-code, #d4d4d4);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .summary-header {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .stats {\n width: 100%;\n justify-content: space-around;\n }\n\n .name-col {\n flex: 0 0 140px;\n }\n\n .type-col {\n flex: 0 0 90px;\n }\n\n .tags-col {\n flex: 0 0 120px;\n }\n\n .card-meta {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n }\n}\n"] }]
682
+ args: [{ standalone: false, selector: 'mj-data-requirements-viewer', template: "<div class=\"data-requirements-viewer\">\n @if (!hasData) {\n <mj-empty-state\n Icon=\"fa-solid fa-database\"\n Title=\"No Data Requirements\"\n Message=\"This component doesn't have any data requirements defined.\"\n Size=\"compact\" />\n } @else {\n <!-- Header Summary -->\n <div class=\"summary-header\">\n <div class=\"mode-badge\">\n <i class=\"fas\" [ngClass]=\"modeIcon\"></i>\n <span>{{ modeLabel }}</span>\n </div>\n <div class=\"stats\">\n @if (entities.length > 0) {\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ entities.length }}</span>\n <span class=\"stat-label\">{{ entities.length === 1 ? 'Entity' : 'Entities' }}</span>\n </div>\n }\n @if (queries.length > 0) {\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ queries.length }}</span>\n <span class=\"stat-label\">{{ queries.length === 1 ? 'Query' : 'Queries' }}</span>\n </div>\n }\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ totalFieldCount }}</span>\n <span class=\"stat-label\">{{ totalFieldCount === 1 ? 'Field' : 'Fields' }}</span>\n </div>\n </div>\n </div>\n\n <!-- Description / Overview (supports markdown including mermaid diagrams) -->\n @if (description) {\n <div class=\"description-section\">\n <h4 class=\"description-title\">\n <i class=\"fas fa-info-circle\"></i>\n Overview\n </h4>\n <div class=\"description-content\">\n <mj-markdown [data]=\"description\"\n [enableCollapsibleHeadings]=\"false\"\n [enableLineNumbers]=\"false\"\n [enableSmartypants]=\"true\"\n [enableHtml]=\"true\"></mj-markdown>\n </div>\n </div>\n }\n\n <!-- Entities Section -->\n @if (entities.length > 0) {\n <div class=\"section entities-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-table\"></i>\n Entities\n </h3>\n <div class=\"cards-container\">\n @for (entity of entities; track entity.name) {\n <div class=\"data-card entity-card\" [class.expanded]=\"isEntityExpanded(entity.name)\">\n <div class=\"card-header\" (click)=\"toggleEntity(entity.name)\">\n <div class=\"card-title-row\">\n <div class=\"card-icon\">\n <i class=\"fas fa-table\"></i>\n </div>\n <div class=\"card-title-info\">\n <h4 class=\"card-title\">{{ entity.name }}</h4>\n @if (entity.description) {\n <p class=\"card-description\">{{ entity.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isEntityExpanded(entity.name) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n <div class=\"permissions-row\">\n @for (perm of entity.permissionLevelNeeded; track perm) {\n <span class=\"permission-badge\" [style.background-color]=\"getPermissionColor(perm)\">\n <i class=\"fas\" [ngClass]=\"getPermissionIcon(perm)\"></i>\n {{ perm }}\n </span>\n }\n </div>\n <span class=\"field-count\">{{ entity.fieldMetadata.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isEntityExpanded(entity.name)) {\n <div class=\"card-body\">\n @if (entity.usageContext) {\n <div class=\"usage-context\">\n <i class=\"fas fa-info-circle\"></i>\n <span>{{ entity.usageContext }}</span>\n </div>\n }\n\n <!-- Fields Table -->\n @if (entity.fieldMetadata && entity.fieldMetadata.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col tags-col\">Usage</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of entity.fieldMetadata; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n @if (!field.allowsNull) {\n <span class=\"required-indicator\" title=\"Required\">*</span>\n }\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col tags-col\">\n @for (tag of getFieldUsageTags(field, entity); track tag) {\n <span class=\"usage-tag\" [style.background-color]=\"getTagColor(tag)\">{{ tag }}</span>\n }\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '\u2014' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Queries Section -->\n @if (queries.length > 0) {\n <div class=\"section queries-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-database\"></i>\n Queries\n </h3>\n <div class=\"cards-container\">\n @for (query of queries; track getQueryKey(query)) {\n <div class=\"data-card query-card\" [class.expanded]=\"isQueryExpanded(getQueryKey(query))\">\n <div class=\"card-header\" (click)=\"toggleQuery(getQueryKey(query))\">\n <div class=\"card-title-row\">\n <div class=\"card-icon query-icon\">\n <i class=\"fas fa-code\"></i>\n </div>\n <div class=\"card-title-info\">\n <div class=\"title-with-badge\">\n <h4 class=\"card-title\">{{ query.name }}</h4>\n @if (query.isNew) {\n <span class=\"new-query-badge\" title=\"This query was newly created for this component\">\n <i class=\"fas fa-sparkles\"></i>\n NEW\n </span>\n }\n </div>\n <p class=\"card-path\">{{ query.categoryPath }}</p>\n @if (query.description) {\n <p class=\"card-description\">{{ query.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isQueryExpanded(getQueryKey(query)) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n @if (query.entityNames && query.entityNames.length > 0) {\n <div class=\"entity-badges\">\n @for (entityName of query.entityNames; track entityName) {\n <span class=\"entity-badge\">\n <i class=\"fas fa-table\"></i>\n {{ entityName }}\n </span>\n }\n </div>\n }\n <span class=\"field-count\">{{ query.fields.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isQueryExpanded(getQueryKey(query))) {\n <div class=\"card-body\">\n <!-- Parameters -->\n @if (query.parameters && query.parameters.length > 0) {\n <div class=\"parameters-section\">\n <h5 class=\"parameters-title\">\n <i class=\"fas fa-sliders-h\"></i>\n Parameters\n </h5>\n <div class=\"parameters-list\">\n @for (param of query.parameters; track param.name) {\n <div class=\"parameter-item\">\n <div class=\"param-header\">\n <span class=\"param-name\">{{ param.name }}</span>\n @if (param.isRequired) {\n <span class=\"required-badge\">Required</span>\n } @else {\n <span class=\"optional-badge\">Optional</span>\n }\n @if (param.type) {\n <code class=\"param-type\">{{ param.type }}</code>\n }\n </div>\n @if (param.description) {\n <p class=\"param-description\">{{ param.description }}</p>\n }\n @if (param.sampleValue || param.testValue) {\n <div class=\"param-sample\">\n <span class=\"sample-label\">Sample:</span>\n <code>{{ param.sampleValue || param.testValue }}</code>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Fields Table -->\n @if (query.fields && query.fields.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Output Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of query.fields; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '\u2014' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- New Query SQL -->\n @if (query.newQuerySQL) {\n <div class=\"sql-section\">\n <h5 class=\"sql-title\">\n <i class=\"fas fa-terminal\"></i>\n Query SQL\n </h5>\n <pre class=\"sql-code\">{{ query.newQuerySQL }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: [".data-requirements-viewer {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Summary Header */\n.summary-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 0;\n}\n\n.mode-badge {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.mode-badge i {\n font-size: 20px;\n opacity: 0.9;\n}\n\n.stats {\n display: flex;\n gap: 24px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 700;\n line-height: 1;\n}\n\n.stat-label {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.85;\n}\n\n/* Description Section */\n.description-section {\n padding: 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.description-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.description-title i {\n color: var(--mj-brand-primary);\n}\n\n.description-content {\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\n}\n\n.description-content ::ng-deep p {\n margin: 0 0 12px 0;\n}\n\n.description-content ::ng-deep p:last-child {\n margin-bottom: 0;\n}\n\n.description-content ::ng-deep pre {\n background: var(--mj-bg-surface-sunken);\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content ::ng-deep code {\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n\n/* Section Styling */\n.section {\n padding: 20px;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\n font-size: 18px;\n}\n\n/* Cards Container */\n.cards-container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Data Card */\n.data-card {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card:hover {\n border-color: var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.data-card.expanded {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\n}\n\n/* Card Header */\n.card-header {\n padding: 16px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-title-row {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.card-title-info {\n flex: 1;\n min-width: 0;\n}\n\n.title-with-badge {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-query-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n animation: subtle-pulse 2s ease-in-out infinite;\n}\n\n.new-query-badge i {\n font-size: 9px;\n}\n\n@keyframes subtle-pulse {\n 0%, 100% {\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n }\n 50% {\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-status-success) 40%, transparent);\n }\n}\n\n.card-path {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.expand-icon {\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded .expand-icon {\n color: var(--mj-brand-primary);\n}\n\n/* Card Meta */\n.card-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.permissions-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-inverse);\n text-transform: capitalize;\n}\n\n.permission-badge i {\n font-size: 10px;\n}\n\n.field-count {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.entity-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.entity-badge i {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* Card Body */\n.card-body {\n padding: 0 16px 16px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n/* Usage Context */\n.usage-context {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 12px;\n margin-top: 12px;\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-status-warning);\n}\n\n.usage-context i {\n color: var(--mj-status-warning);\n margin-top: 2px;\n}\n\n/* Fields Section */\n.fields-section {\n margin-top: 16px;\n}\n\n.fields-title {\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Fields Table */\n.fields-table {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header {\n display: flex;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.field-row {\n display: flex;\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n font-size: 13px;\n align-items: center;\n}\n\n.field-row:last-child {\n border-bottom: none;\n}\n\n.field-row:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-col {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.name-col {\n flex: 0 0 200px;\n min-width: 0;\n}\n\n.type-col {\n flex: 0 0 120px;\n}\n\n.tags-col {\n flex: 0 0 160px;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.desc-col {\n flex: 1;\n color: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.required-indicator {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.field-type {\n padding: 2px 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.usage-tag {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* Parameters Section */\n.parameters-section {\n margin-top: 16px;\n}\n\n.parameters-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title i {\n color: var(--mj-brand-primary);\n}\n\n.parameters-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.parameter-item {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.param-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n\n.required-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.optional-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.param-type {\n padding: 2px 6px;\n background: var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.param-description {\n margin: 8px 0 0 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n}\n\n.param-sample {\n margin-top: 8px;\n font-size: 12px;\n}\n\n.sample-label {\n color: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.param-sample code {\n padding: 2px 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: var(--mj-status-error);\n}\n\n/* SQL Section */\n.sql-section {\n margin-top: 16px;\n}\n\n.sql-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title i {\n color: var(--mj-brand-primary);\n}\n\n.sql-code {\n margin: 0;\n padding: 16px;\n background: var(--mj-bg-code-block, #1e1e1e);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.5;\n color: var(--mj-text-code, #d4d4d4);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .summary-header {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .stats {\n width: 100%;\n justify-content: space-around;\n }\n\n .name-col {\n flex: 0 0 140px;\n }\n\n .type-col {\n flex: 0 0 90px;\n }\n\n .tags-col {\n flex: 0 0 120px;\n }\n\n .card-meta {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n }\n}\n"] }]
689
683
  }], null, { dataRequirements: [{
690
684
  type: Input
691
685
  }] }); })();