@memberjunction/ng-versions 5.43.0 → 5.45.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.
@@ -5,7 +5,8 @@ import { GraphQLDataProvider, GraphQLVersionHistoryClient } from '@memberjunctio
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/forms";
7
7
  import * as i2 from "@memberjunction/ng-shared-generic";
8
- import * as i3 from "@angular/common";
8
+ import * as i3 from "@memberjunction/ng-ui-components";
9
+ import * as i4 from "@angular/common";
9
10
  function MjLabelCreateComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
10
11
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 5)(2, "span", 6);
11
12
  i0.ɵɵtext(3, "1");
@@ -69,9 +70,7 @@ function MjLabelCreateComponent_Conditional_2_For_8_Template(rf, ctx) { if (rf &
69
70
  i0.ɵɵconditional(entity_r4.Description ? 4 : -1);
70
71
  } }
71
72
  function MjLabelCreateComponent_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
72
- i0.ɵɵelementStart(0, "div", 15);
73
- i0.ɵɵtext(1, " No entities match your search. ");
74
- i0.ɵɵelementEnd();
73
+ i0.ɵɵelement(0, "mj-empty-state", 15);
75
74
  } }
76
75
  function MjLabelCreateComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
77
76
  const _r2 = i0.ɵɵgetCurrentView();
@@ -85,7 +84,7 @@ function MjLabelCreateComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
85
84
  i0.ɵɵelementEnd()();
86
85
  i0.ɵɵelementStart(6, "div", 13);
87
86
  i0.ɵɵrepeaterCreate(7, MjLabelCreateComponent_Conditional_2_For_8_Template, 6, 2, "div", 14, i0.ɵɵrepeaterTrackByIdentity);
88
- i0.ɵɵconditionalCreate(9, MjLabelCreateComponent_Conditional_2_Conditional_9_Template, 2, 0, "div", 15);
87
+ i0.ɵɵconditionalCreate(9, MjLabelCreateComponent_Conditional_2_Conditional_9_Template, 1, 0, "mj-empty-state", 15);
89
88
  i0.ɵɵelementEnd()();
90
89
  } if (rf & 2) {
91
90
  const ctx_r0 = i0.ɵɵnextContext();
@@ -107,16 +106,16 @@ function MjLabelCreateComponent_Conditional_3_Conditional_9_Template(rf, ctx) {
107
106
  i0.ɵɵelement(0, "mj-loading", 23);
108
107
  } }
109
108
  function MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
110
- i0.ɵɵelement(0, "i", 39);
109
+ i0.ɵɵelement(0, "i", 40);
111
110
  } }
112
111
  function MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Template(rf, ctx) { if (rf & 1) {
113
112
  const _r7 = i0.ɵɵgetCurrentView();
114
- i0.ɵɵelementStart(0, "div", 37);
113
+ i0.ɵɵelementStart(0, "div", 38);
115
114
  i0.ɵɵlistener("click", function MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Template_div_click_0_listener() { const record_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleRecordSelection(record_r8)); });
116
- i0.ɵɵelementStart(1, "div", 38);
117
- i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Conditional_2_Template, 1, 0, "i", 39);
115
+ i0.ɵɵelementStart(1, "div", 39);
116
+ i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Conditional_2_Template, 1, 0, "i", 40);
118
117
  i0.ɵɵelementEnd();
119
- i0.ɵɵelementStart(3, "span", 40);
118
+ i0.ɵɵelementStart(3, "span", 41);
120
119
  i0.ɵɵtext(4);
121
120
  i0.ɵɵelementEnd()();
122
121
  } if (rf & 2) {
@@ -128,9 +127,7 @@ function MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Template(rf,
128
127
  i0.ɵɵtextInterpolate(record_r8.DisplayName);
129
128
  } }
130
129
  function MjLabelCreateComponent_Conditional_3_Conditional_10_Conditional_12_Template(rf, ctx) { if (rf & 1) {
131
- i0.ɵɵelementStart(0, "div", 15);
132
- i0.ɵɵtext(1, " No records found for this entity. ");
133
- i0.ɵɵelementEnd();
130
+ i0.ɵɵelement(0, "mj-empty-state", 33);
134
131
  } }
135
132
  function MjLabelCreateComponent_Conditional_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
136
133
  const _r6 = i0.ɵɵgetCurrentView();
@@ -149,15 +146,15 @@ function MjLabelCreateComponent_Conditional_3_Conditional_10_Template(rf, ctx) {
149
146
  i0.ɵɵelementEnd()()();
150
147
  i0.ɵɵelementStart(9, "div", 31);
151
148
  i0.ɵɵrepeaterCreate(10, MjLabelCreateComponent_Conditional_3_Conditional_10_For_11_Template, 5, 4, "div", 32, i0.ɵɵrepeaterTrackByIdentity);
152
- i0.ɵɵconditionalCreate(12, MjLabelCreateComponent_Conditional_3_Conditional_10_Conditional_12_Template, 2, 0, "div", 15);
149
+ i0.ɵɵconditionalCreate(12, MjLabelCreateComponent_Conditional_3_Conditional_10_Conditional_12_Template, 1, 0, "mj-empty-state", 33);
153
150
  i0.ɵɵelementEnd();
154
- i0.ɵɵelementStart(13, "div", 33)(14, "span", 34);
151
+ i0.ɵɵelementStart(13, "div", 34)(14, "span", 35);
155
152
  i0.ɵɵtext(15);
156
153
  i0.ɵɵelementEnd();
157
- i0.ɵɵelementStart(16, "button", 35);
154
+ i0.ɵɵelementStart(16, "button", 36);
158
155
  i0.ɵɵlistener("click", function MjLabelCreateComponent_Conditional_3_Conditional_10_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.GoToDetailsStep()); });
159
156
  i0.ɵɵtext(17, " Continue ");
160
- i0.ɵɵelement(18, "i", 36);
157
+ i0.ɵɵelement(18, "i", 37);
161
158
  i0.ɵɵelementEnd()();
162
159
  } if (rf & 2) {
163
160
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -197,8 +194,8 @@ function MjLabelCreateComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
197
194
  i0.ɵɵconditional(!ctx_r0.IsLoadingRecords ? 10 : -1);
198
195
  } }
199
196
  function MjLabelCreateComponent_Conditional_4_Conditional_15_Template(rf, ctx) { if (rf & 1) {
200
- i0.ɵɵelementStart(0, "div", 42);
201
- i0.ɵɵelement(1, "i", 52);
197
+ i0.ɵɵelementStart(0, "div", 43);
198
+ i0.ɵɵelement(1, "i", 53);
202
199
  i0.ɵɵelementStart(2, "span");
203
200
  i0.ɵɵtext(3);
204
201
  i0.ɵɵelementEnd()();
@@ -216,36 +213,36 @@ function MjLabelCreateComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
216
213
  i0.ɵɵelementStart(4, "p", 9);
217
214
  i0.ɵɵtext(5, "Name your version label.");
218
215
  i0.ɵɵelementEnd()();
219
- i0.ɵɵelementStart(6, "div", 41)(7, "div", 42);
220
- i0.ɵɵelement(8, "i", 43);
216
+ i0.ɵɵelementStart(6, "div", 42)(7, "div", 43);
217
+ i0.ɵɵelement(8, "i", 44);
221
218
  i0.ɵɵelementStart(9, "span");
222
219
  i0.ɵɵtext(10);
223
220
  i0.ɵɵelementEnd()();
224
- i0.ɵɵelementStart(11, "div", 42);
225
- i0.ɵɵelement(12, "i", 44);
221
+ i0.ɵɵelementStart(11, "div", 43);
222
+ i0.ɵɵelement(12, "i", 45);
226
223
  i0.ɵɵelementStart(13, "span");
227
224
  i0.ɵɵtext(14);
228
225
  i0.ɵɵelementEnd()();
229
- i0.ɵɵconditionalCreate(15, MjLabelCreateComponent_Conditional_4_Conditional_15_Template, 4, 1, "div", 42);
226
+ i0.ɵɵconditionalCreate(15, MjLabelCreateComponent_Conditional_4_Conditional_15_Template, 4, 1, "div", 43);
230
227
  i0.ɵɵelementEnd();
231
- i0.ɵɵelementStart(16, "div", 45)(17, "label", 46);
228
+ i0.ɵɵelementStart(16, "div", 46)(17, "label", 47);
232
229
  i0.ɵɵtext(18, "Label Name");
233
230
  i0.ɵɵelementEnd();
234
- i0.ɵɵelementStart(19, "input", 47);
231
+ i0.ɵɵelementStart(19, "input", 48);
235
232
  i0.ɵɵtwoWayListener("ngModelChange", function MjLabelCreateComponent_Conditional_4_Template_input_ngModelChange_19_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.LabelName, $event) || (ctx_r0.LabelName = $event); return i0.ɵɵresetView($event); });
236
233
  i0.ɵɵelementEnd()();
237
- i0.ɵɵelementStart(20, "div", 45)(21, "label", 46);
234
+ i0.ɵɵelementStart(20, "div", 46)(21, "label", 47);
238
235
  i0.ɵɵtext(22, "Description (optional)");
239
236
  i0.ɵɵelementEnd();
240
- i0.ɵɵelementStart(23, "textarea", 48);
237
+ i0.ɵɵelementStart(23, "textarea", 49);
241
238
  i0.ɵɵtwoWayListener("ngModelChange", function MjLabelCreateComponent_Conditional_4_Template_textarea_ngModelChange_23_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.LabelDescription, $event) || (ctx_r0.LabelDescription = $event); return i0.ɵɵresetView($event); });
242
239
  i0.ɵɵelementEnd()();
243
- i0.ɵɵelementStart(24, "div", 49)(25, "button", 35);
240
+ i0.ɵɵelementStart(24, "div", 50)(25, "button", 36);
244
241
  i0.ɵɵlistener("click", function MjLabelCreateComponent_Conditional_4_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.CreateLabels()); });
245
- i0.ɵɵelement(26, "i", 50);
242
+ i0.ɵɵelement(26, "i", 51);
246
243
  i0.ɵɵtext(27);
247
244
  i0.ɵɵelementEnd();
248
- i0.ɵɵelementStart(28, "button", 51);
245
+ i0.ɵɵelementStart(28, "button", 52);
249
246
  i0.ɵɵlistener("click", function MjLabelCreateComponent_Conditional_4_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnCancel()); });
250
247
  i0.ɵɵtext(29, " Cancel ");
251
248
  i0.ɵɵelementEnd()()();
@@ -267,8 +264,8 @@ function MjLabelCreateComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
267
264
  i0.ɵɵtextInterpolate1(" Create Label", ctx_r0.SelectedRecordCount > 1 ? "s" : "", " ");
268
265
  } }
269
266
  function MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
270
- i0.ɵɵelementStart(0, "span", 64);
271
- i0.ɵɵelement(1, "i", 43);
267
+ i0.ɵɵelementStart(0, "span", 65);
268
+ i0.ɵɵelement(1, "i", 44);
272
269
  i0.ɵɵtext(2);
273
270
  i0.ɵɵelementEnd();
274
271
  } if (rf & 2) {
@@ -277,11 +274,11 @@ function MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Condit
277
274
  i0.ɵɵtextInterpolate1(" ", ctx_r0.CreateProgress.CurrentEntity, " ");
278
275
  } }
279
276
  function MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Template(rf, ctx) { if (rf & 1) {
280
- i0.ɵɵelementStart(0, "div", 63)(1, "span", 64);
281
- i0.ɵɵelement(2, "i", 65);
277
+ i0.ɵɵelementStart(0, "div", 64)(1, "span", 65);
278
+ i0.ɵɵelement(2, "i", 66);
282
279
  i0.ɵɵtext(3);
283
280
  i0.ɵɵelementEnd();
284
- i0.ɵɵconditionalCreate(4, MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Conditional_4_Template, 3, 1, "span", 64);
281
+ i0.ɵɵconditionalCreate(4, MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Conditional_4_Template, 3, 1, "span", 65);
285
282
  i0.ɵɵelementEnd();
286
283
  } if (rf & 2) {
287
284
  const ctx_r0 = i0.ɵɵnextContext(3);
@@ -291,16 +288,16 @@ function MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Templa
291
288
  i0.ɵɵconditional(ctx_r0.CreateProgress.CurrentEntity ? 4 : -1);
292
289
  } }
293
290
  function MjLabelCreateComponent_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
294
- i0.ɵɵelementStart(0, "div", 56)(1, "div", 58);
295
- i0.ɵɵelement(2, "div", 59);
291
+ i0.ɵɵelementStart(0, "div", 57)(1, "div", 59);
292
+ i0.ɵɵelement(2, "div", 60);
296
293
  i0.ɵɵelementEnd();
297
- i0.ɵɵelementStart(3, "div", 60)(4, "span", 61);
294
+ i0.ɵɵelementStart(3, "div", 61)(4, "span", 62);
298
295
  i0.ɵɵtext(5);
299
296
  i0.ɵɵelementEnd();
300
- i0.ɵɵelementStart(6, "span", 62);
297
+ i0.ɵɵelementStart(6, "span", 63);
301
298
  i0.ɵɵtext(7);
302
299
  i0.ɵɵelementEnd()();
303
- i0.ɵɵconditionalCreate(8, MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Template, 5, 3, "div", 63);
300
+ i0.ɵɵconditionalCreate(8, MjLabelCreateComponent_Conditional_5_Conditional_5_Conditional_8_Template, 5, 3, "div", 64);
304
301
  i0.ɵɵelementEnd();
305
302
  } if (rf & 2) {
306
303
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -323,7 +320,7 @@ function MjLabelCreateComponent_Conditional_5_Conditional_6_Conditional_2_Templa
323
320
  i0.ɵɵtextInterpolate1(" \u00B7 ", ctx_r0.CreatedItemCount, " items captured");
324
321
  } }
325
322
  function MjLabelCreateComponent_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
326
- i0.ɵɵelementStart(0, "p", 57);
323
+ i0.ɵɵelementStart(0, "p", 58);
327
324
  i0.ɵɵtext(1);
328
325
  i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_5_Conditional_6_Conditional_2_Template, 2, 1, "span");
329
326
  i0.ɵɵelementEnd();
@@ -335,14 +332,14 @@ function MjLabelCreateComponent_Conditional_5_Conditional_6_Template(rf, ctx) {
335
332
  i0.ɵɵconditional(ctx_r0.CreatedItemCount > 0 ? 2 : -1);
336
333
  } }
337
334
  function MjLabelCreateComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
338
- i0.ɵɵelementStart(0, "div", 3)(1, "div", 53);
339
- i0.ɵɵelement(2, "i", 54);
335
+ i0.ɵɵelementStart(0, "div", 3)(1, "div", 54);
336
+ i0.ɵɵelement(2, "i", 55);
340
337
  i0.ɵɵelementEnd();
341
- i0.ɵɵelementStart(3, "h3", 55);
338
+ i0.ɵɵelementStart(3, "h3", 56);
342
339
  i0.ɵɵtext(4, "Creating Labels...");
343
340
  i0.ɵɵelementEnd();
344
- i0.ɵɵconditionalCreate(5, MjLabelCreateComponent_Conditional_5_Conditional_5_Template, 9, 5, "div", 56);
345
- i0.ɵɵconditionalCreate(6, MjLabelCreateComponent_Conditional_5_Conditional_6_Template, 3, 3, "p", 57);
341
+ i0.ɵɵconditionalCreate(5, MjLabelCreateComponent_Conditional_5_Conditional_5_Template, 9, 5, "div", 57);
342
+ i0.ɵɵconditionalCreate(6, MjLabelCreateComponent_Conditional_5_Conditional_6_Template, 3, 3, "p", 58);
346
343
  i0.ɵɵelementEnd();
347
344
  } if (rf & 2) {
348
345
  const ctx_r0 = i0.ɵɵnextContext();
@@ -361,13 +358,13 @@ function MjLabelCreateComponent_Conditional_6_Conditional_1_Conditional_6_Templa
361
358
  i0.ɵɵtextInterpolate1(" with ", ctx_r0.CreatedItemCount, " items captured");
362
359
  } }
363
360
  function MjLabelCreateComponent_Conditional_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
364
- i0.ɵɵelementStart(0, "div", 67);
365
- i0.ɵɵelement(1, "i", 39);
361
+ i0.ɵɵelementStart(0, "div", 68);
362
+ i0.ɵɵelement(1, "i", 40);
366
363
  i0.ɵɵelementEnd();
367
- i0.ɵɵelementStart(2, "h3", 68);
364
+ i0.ɵɵelementStart(2, "h3", 69);
368
365
  i0.ɵɵtext(3, "Labels Created");
369
366
  i0.ɵɵelementEnd();
370
- i0.ɵɵelementStart(4, "p", 69);
367
+ i0.ɵɵelementStart(4, "p", 70);
371
368
  i0.ɵɵtext(5);
372
369
  i0.ɵɵconditionalCreate(6, MjLabelCreateComponent_Conditional_6_Conditional_1_Conditional_6_Template, 2, 1, "span");
373
370
  i0.ɵɵtext(7, ". ");
@@ -380,13 +377,13 @@ function MjLabelCreateComponent_Conditional_6_Conditional_1_Template(rf, ctx) {
380
377
  i0.ɵɵconditional(ctx_r0.CreatedItemCount > 0 ? 6 : -1);
381
378
  } }
382
379
  function MjLabelCreateComponent_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
383
- i0.ɵɵelementStart(0, "div", 70);
384
- i0.ɵɵelement(1, "i", 71);
380
+ i0.ɵɵelementStart(0, "div", 71);
381
+ i0.ɵɵelement(1, "i", 72);
385
382
  i0.ɵɵelementEnd();
386
- i0.ɵɵelementStart(2, "h3", 68);
383
+ i0.ɵɵelementStart(2, "h3", 69);
387
384
  i0.ɵɵtext(3, "Error");
388
385
  i0.ɵɵelementEnd();
389
- i0.ɵɵelementStart(4, "p", 72);
386
+ i0.ɵɵelementStart(4, "p", 73);
390
387
  i0.ɵɵtext(5);
391
388
  i0.ɵɵelementEnd();
392
389
  } if (rf & 2) {
@@ -399,7 +396,7 @@ function MjLabelCreateComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
399
396
  i0.ɵɵelementStart(0, "div", 4);
400
397
  i0.ɵɵconditionalCreate(1, MjLabelCreateComponent_Conditional_6_Conditional_1_Template, 8, 3);
401
398
  i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_6_Conditional_2_Template, 6, 1);
402
- i0.ɵɵelementStart(3, "button", 66);
399
+ i0.ɵɵelementStart(3, "button", 67);
403
400
  i0.ɵɵlistener("click", function MjLabelCreateComponent_Conditional_6_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.FinishCreate()); });
404
401
  i0.ɵɵtext(4, "Done");
405
402
  i0.ɵɵelementEnd()();
@@ -758,7 +755,7 @@ export class MjLabelCreateComponent extends BaseAngularComponent {
758
755
  this.CreateProgress = null;
759
756
  }
760
757
  static ɵfac = function MjLabelCreateComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MjLabelCreateComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone)); };
761
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelCreateComponent, selectors: [["mj-label-create"]], inputs: { PreselectedEntity: "PreselectedEntity", PreselectedRecordIds: "PreselectedRecordIds" }, outputs: { Created: "Created", Cancel: "Cancel" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 6, consts: [[1, "label-create-container"], [1, "step-indicator"], [1, "dialog-step"], [1, "dialog-step", "creating-step"], [1, "dialog-step", "done-step"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "step-description"], [1, "dialog-search"], [1, "fa-solid", "fa-search", "dialog-search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "entity-list"], [1, "entity-option"], [1, "entity-list-empty"], [1, "entity-option", 3, "click"], [1, "entity-option-info"], [1, "entity-option-name"], [1, "entity-option-desc"], [1, "fa-solid", "fa-chevron-right", "entity-option-arrow"], [1, "step-header-row"], [1, "btn-back"], ["text", "Loading records..."], [1, "btn-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "records-toolbar"], [1, "dialog-search", 2, "flex", "1"], ["type", "text", "placeholder", "Search records...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "selection-actions"], [1, "btn-text", 3, "click"], [1, "record-list"], [1, "record-option", 3, "selected"], [1, "records-footer"], [1, "selection-count"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "record-option", 3, "click"], [1, "record-checkbox"], [1, "fa-solid", "fa-check"], [1, "record-name"], [1, "details-summary"], [1, "summary-item"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-check-double"], [1, "form-field"], [1, "form-label"], ["type", "text", "placeholder", "e.g. Customer Support Agent v2.0", 1, "form-input", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "What does this version represent?", 1, "form-textarea", 3, "ngModelChange", "ngModel"], [1, "details-footer"], [1, "fa-solid", "fa-tag"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-layer-group"], [1, "creating-animation"], [1, "fa-solid", "fa-tag", "fa-spin", "creating-icon"], [1, "creating-title"], [1, "progress-container"], [1, "creating-progress"], [1, "progress-bar-track"], [1, "progress-bar-fill"], [1, "progress-details"], [1, "progress-message"], [1, "progress-pct"], [1, "progress-stats"], [1, "progress-stat"], [1, "fa-solid", "fa-camera"], [1, "btn-primary", 3, "click"], [1, "done-icon-wrap", "success"], [1, "done-title"], [1, "done-message"], [1, "done-icon-wrap", "error"], [1, "fa-solid", "fa-xmark"], [1, "done-message", "error-text"]], template: function MjLabelCreateComponent_Template(rf, ctx) { if (rf & 1) {
758
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelCreateComponent, selectors: [["mj-label-create"]], inputs: { PreselectedEntity: "PreselectedEntity", PreselectedRecordIds: "PreselectedRecordIds" }, outputs: { Created: "Created", Cancel: "Cancel" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 6, consts: [[1, "label-create-container"], [1, "step-indicator"], [1, "dialog-step"], [1, "dialog-step", "creating-step"], [1, "dialog-step", "done-step"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "step-description"], [1, "dialog-search"], [1, "fa-solid", "fa-search", "dialog-search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "entity-list"], [1, "entity-option"], ["Size", "compact", "Variant", "no-results", "Title", "No entities match your search.", 1, "entity-list-empty"], [1, "entity-option", 3, "click"], [1, "entity-option-info"], [1, "entity-option-name"], [1, "entity-option-desc"], [1, "fa-solid", "fa-chevron-right", "entity-option-arrow"], [1, "step-header-row"], [1, "btn-back"], ["text", "Loading records..."], [1, "btn-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "records-toolbar"], [1, "dialog-search", 2, "flex", "1"], ["type", "text", "placeholder", "Search records...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "selection-actions"], [1, "btn-text", 3, "click"], [1, "record-list"], [1, "record-option", 3, "selected"], ["Size", "compact", "Icon", "", "Title", "No records found for this entity.", 1, "entity-list-empty"], [1, "records-footer"], [1, "selection-count"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "record-option", 3, "click"], [1, "record-checkbox"], [1, "fa-solid", "fa-check"], [1, "record-name"], [1, "details-summary"], [1, "summary-item"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-check-double"], [1, "form-field"], [1, "form-label"], ["type", "text", "placeholder", "e.g. Customer Support Agent v2.0", 1, "form-input", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "What does this version represent?", 1, "form-textarea", 3, "ngModelChange", "ngModel"], [1, "details-footer"], [1, "fa-solid", "fa-tag"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-layer-group"], [1, "creating-animation"], [1, "fa-solid", "fa-tag", "fa-spin", "creating-icon"], [1, "creating-title"], [1, "progress-container"], [1, "creating-progress"], [1, "progress-bar-track"], [1, "progress-bar-fill"], [1, "progress-details"], [1, "progress-message"], [1, "progress-pct"], [1, "progress-stats"], [1, "progress-stat"], [1, "fa-solid", "fa-camera"], [1, "btn-primary", 3, "click"], [1, "done-icon-wrap", "success"], [1, "done-title"], [1, "done-message"], [1, "done-icon-wrap", "error"], [1, "fa-solid", "fa-xmark"], [1, "done-message", "error-text"]], template: function MjLabelCreateComponent_Template(rf, ctx) { if (rf & 1) {
762
759
  i0.ɵɵelementStart(0, "div", 0);
763
760
  i0.ɵɵconditionalCreate(1, MjLabelCreateComponent_Conditional_1_Template, 18, 14, "div", 1);
764
761
  i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_2_Template, 10, 2, "div", 2);
@@ -780,11 +777,11 @@ export class MjLabelCreateComponent extends BaseAngularComponent {
780
777
  i0.ɵɵconditional(ctx.CreateStep === "creating" ? 5 : -1);
781
778
  i0.ɵɵadvance();
782
779
  i0.ɵɵconditional(ctx.CreateStep === "done" ? 6 : -1);
783
- } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.SlicePipe], styles: ["\n\n.label-create-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.step.active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n.dialog-step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n.step-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.dialog-search[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.dialog-search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.dialog-search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.entity-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty[_ngcontent-%COMP%] {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n\n\n.records-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text[_ngcontent-%COMP%] {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.record-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.record-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n\n\n.details-summary[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.summary-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.details-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n\n\n.btn-primary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.creating-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.creating-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.creating-progress[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n\n\n.progress-container[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track[_ngcontent-%COMP%] {\n width: 100%;\n height: 8px;\n background: var(--mj-border-default);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.progress-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.done-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.done-message[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0 0 20px 0;\n}\n\n.error-text[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}"], changeDetection: 0 });
780
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.MJEmptyStateComponent, i4.SlicePipe], styles: ["\n\n.label-create-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.step.active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n.dialog-step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n.step-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.dialog-search[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.dialog-search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.dialog-search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.entity-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty[_ngcontent-%COMP%] {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n\n\n.records-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text[_ngcontent-%COMP%] {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.record-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.record-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n\n\n.details-summary[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.summary-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.details-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n\n\n.btn-primary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.creating-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.creating-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.creating-progress[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n\n\n.progress-container[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track[_ngcontent-%COMP%] {\n width: 100%;\n height: 8px;\n background: var(--mj-border-default);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.progress-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.done-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.done-message[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0 0 20px 0;\n}\n\n.error-text[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}"], changeDetection: 0 });
784
781
  }
785
782
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MjLabelCreateComponent, [{
786
783
  type: Component,
787
- args: [{ standalone: false, selector: 'mj-label-create', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"label-create-container\">\n\n <!-- Step indicator -->\n @if (CreateStep !== 'creating' && CreateStep !== 'done') {\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CreateStep === 'entity'\" [class.completed]=\"CreateStep !== 'entity'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Entity</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep !== 'entity'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'records'\" [class.completed]=\"CreateStep === 'details'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Records</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep === 'details'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'details'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Details</span>\n </div>\n </div>\n }\n\n <!-- Step 1: Pick Entity -->\n @if (CreateStep === 'entity') {\n <div class=\"dialog-step\">\n <p class=\"step-description\">Choose an entity type to label records from.</p>\n <div class=\"dialog-search\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search entities...\"\n [ngModel]=\"EntitySearchText\"\n (ngModelChange)=\"OnEntitySearchChange($event)\" />\n </div>\n <div class=\"entity-list\">\n @for (entity of FilteredEntities; track entity) {\n <div class=\"entity-option\"\n (click)=\"SelectEntity(entity)\">\n <div class=\"entity-option-info\">\n <span class=\"entity-option-name\">{{entity.Name}}</span>\n @if (entity.Description) {\n <span class=\"entity-option-desc\">{{entity.Description | slice:0:80}}</span>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right entity-option-arrow\"></i>\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <div class=\"entity-list-empty\">\n No entities match your search.\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Step 2: Select Records -->\n @if (CreateStep === 'records') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n @if (!PreselectedEntity) {\n <button class=\"btn-back\" (click)=\"GoBackToEntity()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n }\n <div>\n <p class=\"step-description\">\n Select records from <strong>{{SelectedEntity?.Name}}</strong> to label.\n </p>\n </div>\n </div>\n @if (IsLoadingRecords) {\n <mj-loading text=\"Loading records...\"></mj-loading>\n }\n @if (!IsLoadingRecords) {\n <div class=\"records-toolbar\">\n <div class=\"dialog-search\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search records...\"\n [ngModel]=\"RecordSearchText\"\n (ngModelChange)=\"OnRecordSearchChange($event)\" />\n </div>\n <div class=\"selection-actions\">\n <button class=\"btn-text\" (click)=\"SelectAllRecords()\">Select All</button>\n <button class=\"btn-text\" (click)=\"DeselectAllRecords()\">Clear</button>\n </div>\n </div>\n <div class=\"record-list\">\n @for (record of FilteredRecords; track record) {\n <div class=\"record-option\"\n [class.selected]=\"record.Selected\"\n (click)=\"ToggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.Selected) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </div>\n <span class=\"record-name\">{{record.DisplayName}}</span>\n </div>\n }\n @if (FilteredRecords.length === 0 && !IsLoadingRecords) {\n <div class=\"entity-list-empty\">\n No records found for this entity.\n </div>\n }\n </div>\n <div class=\"records-footer\">\n <span class=\"selection-count\">{{SelectedRecordCount}} selected</span>\n <button class=\"btn-primary\"\n [disabled]=\"SelectedRecordCount === 0\"\n (click)=\"GoToDetailsStep()\">\n Continue\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Step 3: Label Details -->\n @if (CreateStep === 'details') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n <button class=\"btn-back\" (click)=\"GoBackToRecords()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <p class=\"step-description\">Name your version label.</p>\n </div>\n <div class=\"details-summary\">\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n <span>{{SelectedEntity?.Name}}</span>\n </div>\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-check-double\"></i>\n <span>{{SelectedRecordCount}} record{{SelectedRecordCount > 1 ? 's' : ''}} selected</span>\n </div>\n @if (SelectedRecordCount > 1) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Will create 1 group + {{SelectedRecordCount}} child labels</span>\n </div>\n }\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Label Name</label>\n <input type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Customer Support Agent v2.0\"\n [(ngModel)]=\"LabelName\" />\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Description (optional)</label>\n <textarea class=\"form-textarea\"\n rows=\"3\"\n placeholder=\"What does this version represent?\"\n [(ngModel)]=\"LabelDescription\"></textarea>\n </div>\n <div class=\"details-footer\">\n <button class=\"btn-primary\"\n [disabled]=\"!LabelName.trim()\"\n (click)=\"CreateLabels()\">\n <i class=\"fa-solid fa-tag\"></i>\n Create Label{{SelectedRecordCount > 1 ? 's' : ''}}\n </button>\n <button class=\"btn-secondary\" (click)=\"OnCancel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- Creating state -->\n @if (CreateStep === 'creating') {\n <div class=\"dialog-step creating-step\">\n <div class=\"creating-animation\">\n <i class=\"fa-solid fa-tag fa-spin creating-icon\"></i>\n </div>\n <h3 class=\"creating-title\">Creating Labels...</h3>\n <!-- Progress bar -->\n @if (CreateProgress) {\n <div class=\"progress-container\">\n <div class=\"progress-bar-track\">\n <div class=\"progress-bar-fill\" [style.width.%]=\"CreateProgress.Percentage\"></div>\n </div>\n <div class=\"progress-details\">\n <span class=\"progress-message\">{{CreateProgress.Message}}</span>\n <span class=\"progress-pct\">{{CreateProgress.Percentage}}%</span>\n </div>\n @if (CreateProgress.RecordsProcessed != null && CreateProgress.TotalRecords) {\n <div class=\"progress-stats\">\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-camera\"></i>\n {{CreateProgress.RecordsProcessed}} / {{CreateProgress.TotalRecords}} records\n </span>\n @if (CreateProgress.CurrentEntity) {\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-table\"></i>\n {{CreateProgress.CurrentEntity}}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (!CreateProgress) {\n <p class=\"creating-progress\">\n {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}} created\n @if (CreatedItemCount > 0) {\n <span> &middot; {{CreatedItemCount}} items captured</span>\n }\n </p>\n }\n </div>\n }\n\n <!-- Done state -->\n @if (CreateStep === 'done') {\n <div class=\"dialog-step done-step\">\n @if (!CreateError) {\n <div class=\"done-icon-wrap success\">\n <i class=\"fa-solid fa-check\"></i>\n </div>\n <h3 class=\"done-title\">Labels Created</h3>\n <p class=\"done-message\">\n Successfully created {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}}\n @if (CreatedItemCount > 0) {\n <span> with {{CreatedItemCount}} items captured</span>\n }.\n </p>\n }\n @if (CreateError) {\n <div class=\"done-icon-wrap error\">\n <i class=\"fa-solid fa-xmark\"></i>\n </div>\n <h3 class=\"done-title\">Error</h3>\n <p class=\"done-message error-text\">{{CreateError}}</p>\n }\n <button class=\"btn-primary\" (click)=\"FinishCreate()\">Done</button>\n </div>\n }\n </div>\n", styles: ["/* Label Create Wizard Container */\n.label-create-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* Step Indicator */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed .step-number {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.step.active .step-label {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed .step-label {\n color: var(--mj-status-success);\n}\n\n.step-connector {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active {\n background: var(--mj-status-success);\n}\n\n/* Dialog Step Content */\n.dialog-step {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n.step-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Dialog Search */\n.dialog-search {\n position: relative;\n}\n\n.dialog-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.dialog-search-input {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* Entity List */\n.entity-list {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option:last-child {\n border-bottom: none;\n}\n\n.entity-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc {\n font-size: 12px;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow {\n color: var(--mj-text-disabled);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n/* Records */\n.records-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option:last-child {\n border-bottom: none;\n}\n\n.record-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.record-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected .record-checkbox {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n/* Details step */\n.details-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.summary-item i {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-textarea {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.details-footer {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n/* Buttons */\n.btn-primary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-secondary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Creating state */\n.creating-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation {\n margin-bottom: 16px;\n}\n\n.creating-icon {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.creating-progress {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n/* Progress bar */\n.progress-container {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track {\n width: 100%;\n height: 8px;\n background: var(--mj-border-default);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.progress-stat i {\n font-size: 11px;\n}\n\n/* Done state */\n.done-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.done-message {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0 0 20px 0;\n}\n\n.error-text {\n color: var(--mj-status-error);\n}\n"] }]
784
+ args: [{ standalone: false, selector: 'mj-label-create', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"label-create-container\">\n\n <!-- Step indicator -->\n @if (CreateStep !== 'creating' && CreateStep !== 'done') {\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CreateStep === 'entity'\" [class.completed]=\"CreateStep !== 'entity'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Entity</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep !== 'entity'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'records'\" [class.completed]=\"CreateStep === 'details'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Records</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep === 'details'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'details'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Details</span>\n </div>\n </div>\n }\n\n <!-- Step 1: Pick Entity -->\n @if (CreateStep === 'entity') {\n <div class=\"dialog-step\">\n <p class=\"step-description\">Choose an entity type to label records from.</p>\n <div class=\"dialog-search\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search entities...\"\n [ngModel]=\"EntitySearchText\"\n (ngModelChange)=\"OnEntitySearchChange($event)\" />\n </div>\n <div class=\"entity-list\">\n @for (entity of FilteredEntities; track entity) {\n <div class=\"entity-option\"\n (click)=\"SelectEntity(entity)\">\n <div class=\"entity-option-info\">\n <span class=\"entity-option-name\">{{entity.Name}}</span>\n @if (entity.Description) {\n <span class=\"entity-option-desc\">{{entity.Description | slice:0:80}}</span>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right entity-option-arrow\"></i>\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <mj-empty-state class=\"entity-list-empty\" Size=\"compact\"\n Variant=\"no-results\" Title=\"No entities match your search.\" />\n }\n </div>\n </div>\n }\n\n <!-- Step 2: Select Records -->\n @if (CreateStep === 'records') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n @if (!PreselectedEntity) {\n <button class=\"btn-back\" (click)=\"GoBackToEntity()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n }\n <div>\n <p class=\"step-description\">\n Select records from <strong>{{SelectedEntity?.Name}}</strong> to label.\n </p>\n </div>\n </div>\n @if (IsLoadingRecords) {\n <mj-loading text=\"Loading records...\"></mj-loading>\n }\n @if (!IsLoadingRecords) {\n <div class=\"records-toolbar\">\n <div class=\"dialog-search\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search records...\"\n [ngModel]=\"RecordSearchText\"\n (ngModelChange)=\"OnRecordSearchChange($event)\" />\n </div>\n <div class=\"selection-actions\">\n <button class=\"btn-text\" (click)=\"SelectAllRecords()\">Select All</button>\n <button class=\"btn-text\" (click)=\"DeselectAllRecords()\">Clear</button>\n </div>\n </div>\n <div class=\"record-list\">\n @for (record of FilteredRecords; track record) {\n <div class=\"record-option\"\n [class.selected]=\"record.Selected\"\n (click)=\"ToggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.Selected) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </div>\n <span class=\"record-name\">{{record.DisplayName}}</span>\n </div>\n }\n @if (FilteredRecords.length === 0 && !IsLoadingRecords) {\n <mj-empty-state class=\"entity-list-empty\" Size=\"compact\"\n Icon=\"\" Title=\"No records found for this entity.\" />\n }\n </div>\n <div class=\"records-footer\">\n <span class=\"selection-count\">{{SelectedRecordCount}} selected</span>\n <button class=\"btn-primary\"\n [disabled]=\"SelectedRecordCount === 0\"\n (click)=\"GoToDetailsStep()\">\n Continue\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Step 3: Label Details -->\n @if (CreateStep === 'details') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n <button class=\"btn-back\" (click)=\"GoBackToRecords()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <p class=\"step-description\">Name your version label.</p>\n </div>\n <div class=\"details-summary\">\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n <span>{{SelectedEntity?.Name}}</span>\n </div>\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-check-double\"></i>\n <span>{{SelectedRecordCount}} record{{SelectedRecordCount > 1 ? 's' : ''}} selected</span>\n </div>\n @if (SelectedRecordCount > 1) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Will create 1 group + {{SelectedRecordCount}} child labels</span>\n </div>\n }\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Label Name</label>\n <input type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Customer Support Agent v2.0\"\n [(ngModel)]=\"LabelName\" />\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Description (optional)</label>\n <textarea class=\"form-textarea\"\n rows=\"3\"\n placeholder=\"What does this version represent?\"\n [(ngModel)]=\"LabelDescription\"></textarea>\n </div>\n <div class=\"details-footer\">\n <button class=\"btn-primary\"\n [disabled]=\"!LabelName.trim()\"\n (click)=\"CreateLabels()\">\n <i class=\"fa-solid fa-tag\"></i>\n Create Label{{SelectedRecordCount > 1 ? 's' : ''}}\n </button>\n <button class=\"btn-secondary\" (click)=\"OnCancel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- Creating state -->\n @if (CreateStep === 'creating') {\n <div class=\"dialog-step creating-step\">\n <div class=\"creating-animation\">\n <i class=\"fa-solid fa-tag fa-spin creating-icon\"></i>\n </div>\n <h3 class=\"creating-title\">Creating Labels...</h3>\n <!-- Progress bar -->\n @if (CreateProgress) {\n <div class=\"progress-container\">\n <div class=\"progress-bar-track\">\n <div class=\"progress-bar-fill\" [style.width.%]=\"CreateProgress.Percentage\"></div>\n </div>\n <div class=\"progress-details\">\n <span class=\"progress-message\">{{CreateProgress.Message}}</span>\n <span class=\"progress-pct\">{{CreateProgress.Percentage}}%</span>\n </div>\n @if (CreateProgress.RecordsProcessed != null && CreateProgress.TotalRecords) {\n <div class=\"progress-stats\">\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-camera\"></i>\n {{CreateProgress.RecordsProcessed}} / {{CreateProgress.TotalRecords}} records\n </span>\n @if (CreateProgress.CurrentEntity) {\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-table\"></i>\n {{CreateProgress.CurrentEntity}}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (!CreateProgress) {\n <p class=\"creating-progress\">\n {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}} created\n @if (CreatedItemCount > 0) {\n <span> &middot; {{CreatedItemCount}} items captured</span>\n }\n </p>\n }\n </div>\n }\n\n <!-- Done state -->\n @if (CreateStep === 'done') {\n <div class=\"dialog-step done-step\">\n @if (!CreateError) {\n <div class=\"done-icon-wrap success\">\n <i class=\"fa-solid fa-check\"></i>\n </div>\n <h3 class=\"done-title\">Labels Created</h3>\n <p class=\"done-message\">\n Successfully created {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}}\n @if (CreatedItemCount > 0) {\n <span> with {{CreatedItemCount}} items captured</span>\n }.\n </p>\n }\n @if (CreateError) {\n <div class=\"done-icon-wrap error\">\n <i class=\"fa-solid fa-xmark\"></i>\n </div>\n <h3 class=\"done-title\">Error</h3>\n <p class=\"done-message error-text\">{{CreateError}}</p>\n }\n <button class=\"btn-primary\" (click)=\"FinishCreate()\">Done</button>\n </div>\n }\n </div>\n", styles: ["/* Label Create Wizard Container */\n.label-create-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* Step Indicator */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed .step-number {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.step.active .step-label {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed .step-label {\n color: var(--mj-status-success);\n}\n\n.step-connector {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active {\n background: var(--mj-status-success);\n}\n\n/* Dialog Step Content */\n.dialog-step {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n.step-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Dialog Search */\n.dialog-search {\n position: relative;\n}\n\n.dialog-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.dialog-search-input {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* Entity List */\n.entity-list {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option:last-child {\n border-bottom: none;\n}\n\n.entity-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc {\n font-size: 12px;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow {\n color: var(--mj-text-disabled);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n/* Records */\n.records-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option:last-child {\n border-bottom: none;\n}\n\n.record-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.record-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected .record-checkbox {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n/* Details step */\n.details-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.summary-item i {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-textarea {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.details-footer {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n/* Buttons */\n.btn-primary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-secondary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Creating state */\n.creating-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation {\n margin-bottom: 16px;\n}\n\n.creating-icon {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.creating-progress {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n}\n\n/* Progress bar */\n.progress-container {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track {\n width: 100%;\n height: 8px;\n background: var(--mj-border-default);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.progress-stat i {\n font-size: 11px;\n}\n\n/* Done state */\n.done-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.done-message {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0 0 20px 0;\n}\n\n.error-text {\n color: var(--mj-status-error);\n}\n"] }]
788
785
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], { PreselectedEntity: [{
789
786
  type: Input
790
787
  }], PreselectedRecordIds: [{