@thebes/cadmea 1.3.0 → 1.4.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.
@@ -17,15 +17,19 @@ var _tmpl$$4 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
17
17
  ">",
18
18
  "</button>"
19
19
  ], _tmpl$6$2 = [
20
+ "<span class=\"text-base-content/60 self-center px-1 text-xs\" aria-live=\"polite\">",
21
+ "",
22
+ "</span>"
23
+ ], _tmpl$7$1 = [
20
24
  "<form class=\"flex flex-col gap-4\">",
21
25
  "",
22
26
  "<div class=\"bg-base-100 sticky bottom-0 flex gap-2 border-t py-3\">",
23
27
  "</div></form>"
24
- ], _tmpl$7$1 = [
28
+ ], _tmpl$8$1 = [
25
29
  "<fieldset class=\"border-base-300 rounded-box border p-4\"><legend class=\"px-2 text-sm font-semibold\">",
26
30
  "</legend>",
27
31
  "</fieldset>"
28
- ], _tmpl$8$1 = ["<div class=\"grid grid-cols-1 gap-4 md:grid-cols-2\">", "</div>"], _tmpl$9$1 = "<span class=\"text-error\"> *</span>", _tmpl$0$1 = ["<p class=\"text-base-content/60 mb-1 text-xs\">", "</p>"], _tmpl$1$1 = ["<p class=\"text-error mt-1 text-sm\" role=\"alert\">", "</p>"], _tmpl$10$1 = [
32
+ ], _tmpl$9$1 = ["<div class=\"grid grid-cols-1 gap-4 md:grid-cols-2\">", "</div>"], _tmpl$0$1 = "<span class=\"text-error\"> *</span>", _tmpl$1$1 = ["<p class=\"text-base-content/60 mb-1 text-xs\">", "</p>"], _tmpl$10$1 = ["<p class=\"text-error mt-1 text-sm\" role=\"alert\">", "</p>"], _tmpl$11$1 = [
29
33
  "<div class=\"",
30
34
  "\"><label class=\"label\"",
31
35
  ">",
@@ -34,37 +38,37 @@ var _tmpl$$4 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
34
38
  "",
35
39
  "",
36
40
  "</div>"
37
- ], _tmpl$11$1 = [
41
+ ], _tmpl$12$1 = [
38
42
  "<input",
39
43
  " class=\"input\" type=\"text\"",
40
44
  "",
41
45
  ">"
42
- ], _tmpl$12$1 = [
46
+ ], _tmpl$13$1 = [
43
47
  "<select",
44
48
  " class=\"select\"",
45
49
  "",
46
50
  "",
47
51
  ">",
48
52
  "</select>"
49
- ], _tmpl$13$1 = [
53
+ ], _tmpl$14$1 = [
50
54
  "<option",
51
55
  ">",
52
56
  "</option>"
53
- ], _tmpl$14$1 = [
57
+ ], _tmpl$15$1 = [
54
58
  "<input",
55
59
  " class=\"input\" type=\"number\"",
56
60
  "",
57
61
  ">"
58
- ], _tmpl$15$1 = [
62
+ ], _tmpl$16 = [
59
63
  "<input",
60
64
  " class=\"input\" type=\"text\" readonly",
61
65
  ">"
62
- ], _tmpl$16 = [
66
+ ], _tmpl$17 = [
63
67
  "<input",
64
68
  " class=\"checkbox\" type=\"checkbox\"",
65
69
  "",
66
70
  ">"
67
- ], _tmpl$17 = ["<p class=\"text-sm opacity-70 break-all\">", "</p>"], _tmpl$18 = ["<p class=\"text-sm text-error\">", "</p>"], _tmpl$19 = [
71
+ ], _tmpl$18 = ["<p class=\"text-sm opacity-70 break-all\">", "</p>"], _tmpl$19 = ["<p class=\"text-sm text-error\">", "</p>"], _tmpl$20 = [
68
72
  "<div class=\"flex flex-col gap-2\">",
69
73
  "<input",
70
74
  " class=\"file-input\" type=\"file\"",
@@ -72,11 +76,11 @@ var _tmpl$$4 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
72
76
  ">",
73
77
  "",
74
78
  "</div>"
75
- ], _tmpl$20 = ["<div class=\"mb-1 flex flex-wrap gap-1\">", "</div>"], _tmpl$21 = "<button type=\"button\" aria-label=\"Clear\" class=\"absolute top-2 right-2 cursor-pointer opacity-60\">×</button>", _tmpl$22 = [
79
+ ], _tmpl$21 = ["<div class=\"mb-1 flex flex-wrap gap-1\">", "</div>"], _tmpl$22 = "<button type=\"button\" aria-label=\"Clear\" class=\"absolute top-2 right-2 cursor-pointer opacity-60\">×</button>", _tmpl$23 = [
76
80
  "<div",
77
81
  " role=\"listbox\" class=\"bg-base-100 border-base-300 rounded-box absolute z-10 mt-1 flex max-h-56 w-full flex-col overflow-auto border p-1 shadow\">",
78
82
  "</div>"
79
- ], _tmpl$23 = [
83
+ ], _tmpl$24 = [
80
84
  "<div class=\"relative\">",
81
85
  "<input",
82
86
  " type=\"text\" role=\"combobox\"",
@@ -85,27 +89,27 @@ var _tmpl$$4 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
85
89
  ">",
86
90
  "",
87
91
  "</div>"
88
- ], _tmpl$24 = [
92
+ ], _tmpl$25 = [
89
93
  "<span class=\"badge badge-primary gap-1\">",
90
94
  "<button type=\"button\" aria-label=\"",
91
95
  "\" class=\"cursor-pointer\">×</button></span>"
92
- ], _tmpl$25 = [
96
+ ], _tmpl$26 = [
93
97
  "<button type=\"button\" role=\"option\"",
94
98
  " class=\"",
95
99
  "\">",
96
100
  "</button>"
97
- ], _tmpl$26 = ["<div role=\"menu\" class=\"bg-base-100 border-base-300 rounded-box absolute z-10 mt-1 flex flex-col border p-1 shadow\">", "</div>"], _tmpl$27 = [
101
+ ], _tmpl$27 = ["<div role=\"menu\" class=\"bg-base-100 border-base-300 rounded-box absolute z-10 mt-1 flex flex-col border p-1 shadow\">", "</div>"], _tmpl$28 = [
98
102
  "<div class=\"relative self-start\"><button type=\"button\" class=\"btn btn-outline btn-sm\" aria-haspopup=\"menu\"",
99
103
  ">Add block</button>",
100
104
  "</div>"
101
- ], _tmpl$28 = [
105
+ ], _tmpl$29 = [
102
106
  "<div class=\"form-control md:col-span-2\"><div class=\"label font-medium\">",
103
107
  "",
104
108
  "</div>",
105
109
  "<div class=\"flex flex-col gap-3\">",
106
110
  "",
107
111
  "</div></div>"
108
- ], _tmpl$29 = ["<span class=\"text-base-content/60 truncate text-sm\">", "</span>"], _tmpl$30 = ["<div class=\"flex flex-col gap-2\">", "</div>"], _tmpl$31 = [
112
+ ], _tmpl$30 = ["<span class=\"text-base-content/60 truncate text-sm\">", "</span>"], _tmpl$31 = ["<div class=\"flex flex-col gap-2\">", "</div>"], _tmpl$32 = [
109
113
  "<div class=\"card bg-base-200 flex flex-col gap-2 p-3\"><div class=\"flex items-center gap-2\"><button type=\"button\" class=\"btn btn-ghost btn-sm gap-2\"",
110
114
  "><span aria-hidden=\"true\">",
111
115
  "</span><span class=\"font-semibold\">",
@@ -114,7 +118,7 @@ var _tmpl$$4 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
114
118
  ">↑</button><button type=\"button\" class=\"btn btn-ghost btn-xs\" aria-label=\"Move down\"",
115
119
  ">↓</button><button type=\"button\" class=\"btn btn-ghost btn-xs\" aria-label=\"Duplicate\">⧉</button><button type=\"button\" class=\"btn btn-ghost btn-xs text-error\" aria-label=\"Remove\">Remove</button></div></div>",
116
120
  "</div>"
117
- ], _tmpl$32 = ["<button type=\"button\" class=\"btn btn-outline btn-sm self-start\">Add ", "</button>"], _tmpl$33 = ["<i", " aria-hidden=\"true\"></i>"], _tmpl$34 = [
121
+ ], _tmpl$33 = ["<button type=\"button\" class=\"btn btn-outline btn-sm self-start\">Add ", "</button>"], _tmpl$34 = ["<i", " aria-hidden=\"true\"></i>"], _tmpl$35 = [
118
122
  "<button type=\"button\" role=\"menuitem\" class=\"flex items-center gap-2 rounded px-3 py-2 text-left\">",
119
123
  "",
120
124
  "</button>"
@@ -182,7 +186,29 @@ function CollectionEdit(props) {
182
186
  };
183
187
  const fieldGroups = groupFields(editableFields(props.config));
184
188
  const versioned = () => props.config.versions?.drafts && props.draftActions;
185
- return ssr(_tmpl$6$2, escape(createComponent(Show, {
189
+ const [autosaveStatus, setAutosaveStatus] = createSignal("idle");
190
+ let autosaveTimer;
191
+ createEffect(() => {
192
+ const dirty = !isDefaultValue();
193
+ const values = formValues();
194
+ if (!versioned() || !props.draftActions?.autosave) return;
195
+ if (!dirty) {
196
+ setAutosaveStatus("idle");
197
+ return;
198
+ }
199
+ clearTimeout(autosaveTimer);
200
+ autosaveTimer = setTimeout(async () => {
201
+ setAutosaveStatus("saving");
202
+ try {
203
+ await props.draftActions?.onSaveDraft(editablePayload(values));
204
+ setAutosaveStatus("saved");
205
+ } catch {
206
+ setAutosaveStatus("idle");
207
+ }
208
+ }, props.draftActions?.autosaveMs ?? 1500);
209
+ });
210
+ onCleanup(() => clearTimeout(autosaveTimer));
211
+ return ssr(_tmpl$7$1, escape(createComponent(Show, {
186
212
  get when() {
187
213
  return props.error;
188
214
  },
@@ -206,7 +232,7 @@ function CollectionEdit(props) {
206
232
  });
207
233
  },
208
234
  get children() {
209
- return ssr(_tmpl$7$1, escape(group.name), escape(createComponent(FieldsGrid, {
235
+ return ssr(_tmpl$8$1, escape(group.name), escape(createComponent(FieldsGrid, {
210
236
  form,
211
237
  ctx,
212
238
  get fields() {
@@ -281,13 +307,31 @@ function CollectionEdit(props) {
281
307
  }
282
308
  })));
283
309
  }
310
+ }),
311
+ createComponent(Show, {
312
+ get when() {
313
+ return props.draftActions?.autosave;
314
+ },
315
+ get children() {
316
+ return ssr(_tmpl$6$2, escape(createComponent(Show, {
317
+ get when() {
318
+ return autosaveStatus() === "saving";
319
+ },
320
+ children: "Saving…"
321
+ })), escape(createComponent(Show, {
322
+ get when() {
323
+ return autosaveStatus() === "saved";
324
+ },
325
+ children: "Saved"
326
+ })));
327
+ }
284
328
  })
285
329
  ];
286
330
  }
287
331
  })));
288
332
  }
289
333
  function FieldsGrid(props) {
290
- return ssr(_tmpl$8$1, escape(createComponent(For, {
334
+ return ssr(_tmpl$9$1, escape(createComponent(For, {
291
335
  get each() {
292
336
  return props.fields;
293
337
  },
@@ -306,26 +350,26 @@ function renderField(form, ctx, name, field, label) {
306
350
  const spanClass = field.admin?.width === "half" ? "md:col-span-1" : "md:col-span-2";
307
351
  return createComponent(form.Field, {
308
352
  name,
309
- children: (fieldApi) => ssr(_tmpl$10$1, `form-control ${escape(spanClass, true)}`, ssrAttribute("for", escape(name, true), false), escape(label), escape(createComponent(Show, {
353
+ children: (fieldApi) => ssr(_tmpl$11$1, `form-control ${escape(spanClass, true)}`, ssrAttribute("for", escape(name, true), false), escape(label), escape(createComponent(Show, {
310
354
  get when() {
311
355
  return field.required;
312
356
  },
313
357
  get children() {
314
- return ssr(_tmpl$9$1);
358
+ return ssr(_tmpl$0$1);
315
359
  }
316
360
  })), escape(createComponent(Show, {
317
361
  get when() {
318
362
  return field.admin?.description;
319
363
  },
320
364
  get children() {
321
- return ssr(_tmpl$0$1, escape(field.admin?.description));
365
+ return ssr(_tmpl$1$1, escape(field.admin?.description));
322
366
  }
323
367
  })), escape(renderControl(ctx, name, field, fieldApi)), escape(createComponent(Show, {
324
368
  get when() {
325
369
  return (fieldApi().state.meta.errors?.length ?? 0) > 0;
326
370
  },
327
371
  get children() {
328
- return ssr(_tmpl$1$1, escape(fieldApi().state.meta.errors.filter(Boolean).join(", ")));
372
+ return ssr(_tmpl$10$1, escape(fieldApi().state.meta.errors.filter(Boolean).join(", ")));
329
373
  }
330
374
  })))
331
375
  });
@@ -345,16 +389,16 @@ function renderControl(ctx, name, field, fieldApi) {
345
389
  const readOnly = field.admin?.readOnly;
346
390
  const change = (v) => fieldApi().handleChange(v);
347
391
  switch (field.type) {
348
- case "text": return ssr(_tmpl$11$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("placeholder", escape(field.admin?.placeholder, true), false) + ssrAttribute("readonly", escape(readOnly, true), false) + ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true));
349
- case "select": return ssr(_tmpl$12$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true), ssrAttribute("disabled", readOnly, true), escape(createComponent(For, {
392
+ case "text": return ssr(_tmpl$12$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("placeholder", escape(field.admin?.placeholder, true), false) + ssrAttribute("readonly", escape(readOnly, true), false) + ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true));
393
+ case "select": return ssr(_tmpl$13$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true), ssrAttribute("disabled", readOnly, true), escape(createComponent(For, {
350
394
  get each() {
351
395
  return field.options;
352
396
  },
353
- children: (option) => ssr(_tmpl$13$1, ssrAttribute("value", escape(option, true), false), escape(option))
397
+ children: (option) => ssr(_tmpl$14$1, ssrAttribute("value", escape(option, true), false), escape(option))
354
398
  })));
355
- case "number": return ssr(_tmpl$14$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("placeholder", escape(field.admin?.placeholder, true), false) + ssrAttribute("readonly", escape(readOnly, true), false) + ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true));
356
- case "date": return ssr(_tmpl$15$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("value", escape(formatDateValue(fieldApi().state.value), true), false));
357
- case "checkbox": return ssr(_tmpl$16, ssrAttribute("id", escape(name, true), false), ssrAttribute("disabled", readOnly, true), ssrAttribute("checked", fieldApi().state.value ?? false, true));
399
+ case "number": return ssr(_tmpl$15$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("placeholder", escape(field.admin?.placeholder, true), false) + ssrAttribute("readonly", escape(readOnly, true), false) + ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true));
400
+ case "date": return ssr(_tmpl$16, ssrAttribute("id", escape(name, true), false), ssrAttribute("value", escape(formatDateValue(fieldApi().state.value), true), false));
401
+ case "checkbox": return ssr(_tmpl$17, ssrAttribute("id", escape(name, true), false), ssrAttribute("disabled", readOnly, true), ssrAttribute("checked", fieldApi().state.value ?? false, true));
358
402
  case "upload": return createComponent(UploadControl, {
359
403
  name,
360
404
  field,
@@ -393,12 +437,12 @@ function UploadControl(props) {
393
437
  const [uploading, setUploading] = createSignal(false);
394
438
  const [uploadError, setUploadError] = createSignal();
395
439
  const value = () => props.fieldApi().state.value;
396
- return ssr(_tmpl$19, escape(createComponent(Show, {
440
+ return ssr(_tmpl$20, escape(createComponent(Show, {
397
441
  get when() {
398
442
  return value();
399
443
  },
400
444
  get children() {
401
- return ssr(_tmpl$17, escape(value()));
445
+ return ssr(_tmpl$18, escape(value()));
402
446
  }
403
447
  })), ssrAttribute("id", escape(props.name, true), false), ssrAttribute("required", props.field.required && !value(), true), ssrAttribute("disabled", uploading() || props.field.admin?.readOnly, true), escape(createComponent(Show, {
404
448
  get when() {
@@ -412,7 +456,7 @@ function UploadControl(props) {
412
456
  return uploadError();
413
457
  },
414
458
  get children() {
415
- return ssr(_tmpl$18, escape(uploadError()));
459
+ return ssr(_tmpl$19, escape(uploadError()));
416
460
  }
417
461
  })));
418
462
  }
@@ -434,16 +478,16 @@ function RelationshipField(props) {
434
478
  return props.options.filter((o) => o.label.toLowerCase().includes(q) && (!isMulti() || !selectedIds().includes(o.id)));
435
479
  };
436
480
  const singleLabel = () => selectedOptions()[0]?.label ?? "";
437
- return ssr(_tmpl$23, escape(createComponent(Show, {
481
+ return ssr(_tmpl$24, escape(createComponent(Show, {
438
482
  get when() {
439
483
  return isMulti() && selectedOptions().length > 0;
440
484
  },
441
485
  get children() {
442
- return ssr(_tmpl$20, escape(createComponent(For, {
486
+ return ssr(_tmpl$21, escape(createComponent(For, {
443
487
  get each() {
444
488
  return selectedOptions();
445
489
  },
446
- children: (option) => ssr(_tmpl$24, escape(option.label), `Remove ${escape(option.label, true)}`)
490
+ children: (option) => ssr(_tmpl$25, escape(option.label), `Remove ${escape(option.label, true)}`)
447
491
  })));
448
492
  }
449
493
  })), ssrAttribute("id", escape(props.name, true), false), ssrAttribute("aria-expanded", escape(open(), true), false) + ssrAttribute("aria-controls", escape(listId, true), false), ssrAttribute("required", props.field.required && selectedIds().length === 0, true), ssrAttribute("disabled", props.field.admin?.readOnly, true) + ssrAttribute("placeholder", escape(props.field.admin?.placeholder ?? "Search…", true), false) + ssrAttribute("value", open() || isMulti() ? escape(query(), true) : escape(singleLabel(), true), false), escape(createComponent(Show, {
@@ -451,18 +495,18 @@ function RelationshipField(props) {
451
495
  return !isMulti() && value() != null && !props.field.required;
452
496
  },
453
497
  get children() {
454
- return ssr(_tmpl$21);
498
+ return ssr(_tmpl$22);
455
499
  }
456
500
  })), escape(createComponent(Show, {
457
501
  get when() {
458
502
  return open() && filtered().length > 0;
459
503
  },
460
504
  get children() {
461
- return ssr(_tmpl$22, ssrAttribute("id", escape(listId, true), false), escape(createComponent(For, {
505
+ return ssr(_tmpl$23, ssrAttribute("id", escape(listId, true), false), escape(createComponent(For, {
462
506
  get each() {
463
507
  return filtered();
464
508
  },
465
- children: (option, i) => ssr(_tmpl$25, ssrAttribute("aria-selected", escape(selectedIds().includes(option.id), true), false), `rounded px-3 py-2 text-left ${i() === active() ? "bg-base-200" : ""}`, escape(option.label))
509
+ children: (option, i) => ssr(_tmpl$26, ssrAttribute("aria-selected", escape(selectedIds().includes(option.id), true), false), `rounded px-3 py-2 text-left ${i() === active() ? "bg-base-200" : ""}`, escape(option.label))
466
510
  })));
467
511
  }
468
512
  })));
@@ -504,19 +548,19 @@ function BlockEditor(props) {
504
548
  }
505
549
  return "";
506
550
  }
507
- return ssr(_tmpl$28, escape(props.label), escape(createComponent(Show, {
551
+ return ssr(_tmpl$29, escape(props.label), escape(createComponent(Show, {
508
552
  get when() {
509
553
  return props.field.required;
510
554
  },
511
555
  get children() {
512
- return ssr(_tmpl$9$1);
556
+ return ssr(_tmpl$0$1);
513
557
  }
514
558
  })), escape(createComponent(Show, {
515
559
  get when() {
516
560
  return props.field.admin?.description;
517
561
  },
518
562
  get children() {
519
- return ssr(_tmpl$0$1, escape(props.field.admin?.description));
563
+ return ssr(_tmpl$1$1, escape(props.field.admin?.description));
520
564
  }
521
565
  })), escape(createComponent(Index, {
522
566
  get each() {
@@ -524,19 +568,19 @@ function BlockEditor(props) {
524
568
  },
525
569
  children: (item, index) => {
526
570
  const isCollapsed = () => collapsed().has(index);
527
- return ssr(_tmpl$31, ssrAttribute("aria-expanded", !isCollapsed(), false), isCollapsed() ? "▸" : "▾", escape(blockTitle(item())), escape(createComponent(Show, {
571
+ return ssr(_tmpl$32, ssrAttribute("aria-expanded", !isCollapsed(), false), isCollapsed() ? "▸" : "▾", escape(blockTitle(item())), escape(createComponent(Show, {
528
572
  get when() {
529
573
  return isCollapsed() && blockSummary(item());
530
574
  },
531
575
  get children() {
532
- return ssr(_tmpl$29, escape(blockSummary(item())));
576
+ return ssr(_tmpl$30, escape(blockSummary(item())));
533
577
  }
534
578
  })), ssrAttribute("disabled", index === 0, true), ssrAttribute("disabled", index === items().length - 1, true), escape(createComponent(Show, {
535
579
  get when() {
536
580
  return !isCollapsed();
537
581
  },
538
582
  get children() {
539
- return ssr(_tmpl$30, escape(createComponent(For, {
583
+ return ssr(_tmpl$31, escape(createComponent(For, {
540
584
  get each() {
541
585
  return fieldsForItem(props.field, item());
542
586
  },
@@ -550,22 +594,22 @@ function BlockEditor(props) {
550
594
  return disc && variants.length > 0;
551
595
  },
552
596
  get fallback() {
553
- return ssr(_tmpl$32, escape(props.label));
597
+ return ssr(_tmpl$33, escape(props.label));
554
598
  },
555
599
  get children() {
556
- return ssr(_tmpl$27, ssrAttribute("aria-expanded", escape(menuOpen(), true), false), escape(createComponent(Show, {
600
+ return ssr(_tmpl$28, ssrAttribute("aria-expanded", escape(menuOpen(), true), false), escape(createComponent(Show, {
557
601
  get when() {
558
602
  return menuOpen();
559
603
  },
560
604
  get children() {
561
- return ssr(_tmpl$26, escape(createComponent(For, {
605
+ return ssr(_tmpl$27, escape(createComponent(For, {
562
606
  each: variants,
563
- children: (variant) => ssr(_tmpl$34, escape(createComponent(Show, {
607
+ children: (variant) => ssr(_tmpl$35, escape(createComponent(Show, {
564
608
  get when() {
565
609
  return disc?.variantsAdmin?.[variant]?.icon;
566
610
  },
567
611
  get children() {
568
- return ssr(_tmpl$33, ssrAttribute("class", escape(disc?.variantsAdmin?.[variant]?.icon, true), false));
612
+ return ssr(_tmpl$34, ssrAttribute("class", escape(disc?.variantsAdmin?.[variant]?.icon, true), false));
569
613
  }
570
614
  })), escape(variantLabel(disc, variant)))
571
615
  })));