@schukai/monster 4.136.30 → 4.137.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1 +1 @@
1
- {"author":"Volker Schukai","dependencies":{"@floating-ui/dom":"^1.7.6"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"4.136.30"}
1
+ {"author":"Volker Schukai","dependencies":{"@floating-ui/dom":"^1.7.6"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"4.137.0"}
@@ -134,7 +134,7 @@ class DataSet extends CustomElement {
134
134
  */
135
135
  refreshOnMutation: {
136
136
  selector:
137
- "input, select, textarea, monster-select, monster-toggle-switch",
137
+ "input, select, textarea, monster-select, monster-toggle-switch, monster-choice-cards",
138
138
  },
139
139
 
140
140
  writeBack: {
@@ -0,0 +1,525 @@
1
+ /**
2
+ * Copyright © Volker Schukai and all contributing authors, {{copyRightYear}}. All rights reserved.
3
+ * Node module: @schukai/monster
4
+ *
5
+ * This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
6
+ * The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html
7
+ *
8
+ * For those who do not wish to adhere to the AGPLv3, a commercial license is available.
9
+ * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
10
+ * For more information about purchasing a commercial license, please contact Volker Schukai.
11
+ *
12
+ * SPDX-License-Identifier: AGPL-3.0
13
+ */
14
+
15
+ import { instanceSymbol } from "../../constants.mjs";
16
+ import { CustomControl } from "../../dom/customcontrol.mjs";
17
+ import {
18
+ assembleMethodSymbol,
19
+ registerCustomElement,
20
+ } from "../../dom/customelement.mjs";
21
+ import { fireCustomEvent, fireEvent } from "../../dom/events.mjs";
22
+ import { isArray, isObject, isString, isNumber } from "../../types/is.mjs";
23
+ import { Observer } from "../../types/observer.mjs";
24
+ import { clone } from "../../util/clone.mjs";
25
+ import { ChoiceCardsStyleSheet } from "./stylesheet/choice-cards.mjs";
26
+
27
+ export { ChoiceCards };
28
+
29
+ /**
30
+ * @private
31
+ * @type {symbol}
32
+ */
33
+ const controlElementSymbol = Symbol("controlElement");
34
+
35
+ /**
36
+ * @private
37
+ * @type {symbol}
38
+ */
39
+ const itemsElementSymbol = Symbol("itemsElement");
40
+
41
+ /**
42
+ * A card-based single choice control.
43
+ *
44
+ * @fragments /fragments/components/form/choice-cards
45
+ *
46
+ * @example /examples/components/form/choice-cards-simple Simple card choices
47
+ *
48
+ * @since 4.137.0
49
+ * @copyright Volker Schukai
50
+ * @summary A visual radio-card picker for choosing one option from a compact set.
51
+ * @fires monster-selected
52
+ * @fires monster-change
53
+ * @fires monster-changed
54
+ */
55
+ class ChoiceCards extends CustomControl {
56
+ /**
57
+ * To set the options via the HTML tag, the attribute `data-monster-options` must be used.
58
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
59
+ *
60
+ * @property {Array<Object|string|number>} items Choice items.
61
+ * @property {string} items[].contentSlot Slot name for custom card content.
62
+ * @property {string|null} value Current selected value.
63
+ * @property {boolean} disabled Disabled state.
64
+ * @property {Object} labels Accessible labels.
65
+ * @property {string} labels.group Radio group label.
66
+ * @property {Object} templates Template definitions.
67
+ * @property {string} templates.main Main template.
68
+ */
69
+ get defaults() {
70
+ return Object.assign({}, super.defaults, {
71
+ items: [],
72
+ value: null,
73
+ disabled: false,
74
+ eventProcessing: false,
75
+ labels: {
76
+ group: "Choices",
77
+ },
78
+ templates: {
79
+ main: getTemplate(),
80
+ },
81
+ });
82
+ }
83
+
84
+ /**
85
+ * @return {void}
86
+ */
87
+ [assembleMethodSymbol]() {
88
+ super[assembleMethodSymbol]();
89
+ initControlReferences.call(this);
90
+ initItems.call(this);
91
+ initEventHandler.call(this);
92
+ render.call(this);
93
+ syncFormValue.call(this);
94
+
95
+ this.attachObserver(
96
+ new Observer(() => {
97
+ render.call(this);
98
+ syncFormValue.call(this);
99
+ }),
100
+ );
101
+ }
102
+
103
+ /**
104
+ * @return {CSSStyleSheet[]}
105
+ */
106
+ static getCSSStyleSheet() {
107
+ return [ChoiceCardsStyleSheet];
108
+ }
109
+
110
+ /**
111
+ * This method is called by the `instanceof` operator.
112
+ * @return {symbol}
113
+ */
114
+ static get [instanceSymbol]() {
115
+ return Symbol.for(
116
+ "@schukai/monster/components/form/choice-cards@@instance",
117
+ );
118
+ }
119
+
120
+ /**
121
+ * @return {string}
122
+ */
123
+ static getTag() {
124
+ return "monster-choice-cards";
125
+ }
126
+
127
+ /**
128
+ * @return {string}
129
+ */
130
+ get value() {
131
+ return this.getOption("value");
132
+ }
133
+
134
+ /**
135
+ * @param {string|null|undefined} value
136
+ */
137
+ set value(value) {
138
+ const normalized = normalizeValue(value);
139
+ if (this.getOption("value") !== normalized) {
140
+ this.setOption("value", normalized);
141
+ }
142
+ syncValueAttribute.call(this, normalized);
143
+ render.call(this);
144
+ syncFormValue.call(this);
145
+ }
146
+
147
+ /**
148
+ * @return {Array}
149
+ */
150
+ getItems() {
151
+ return clone(this.getOption("items", []));
152
+ }
153
+
154
+ /**
155
+ * @param {Array} items
156
+ * @return {ChoiceCards}
157
+ */
158
+ setItems(items) {
159
+ this.setOption("items", normalizeItems(items));
160
+ render.call(this);
161
+ return this;
162
+ }
163
+
164
+ /**
165
+ * Select a choice by value.
166
+ *
167
+ * @param {string|null|undefined} value
168
+ * @return {ChoiceCards}
169
+ */
170
+ select(value) {
171
+ if (this.getOption("disabled") === true || this.hasAttribute("disabled")) {
172
+ return this;
173
+ }
174
+
175
+ const normalized = normalizeValue(value);
176
+ const item = findItem.call(this, normalized);
177
+ if (item?.disabled === true) {
178
+ return this;
179
+ }
180
+
181
+ if (this.value === normalized) {
182
+ return this;
183
+ }
184
+
185
+ this.value = normalized;
186
+ const detail = {
187
+ value: this.value,
188
+ item: item || null,
189
+ };
190
+
191
+ fireEvent(this, "change");
192
+ fireCustomEvent(this, "monster-selected", detail);
193
+ fireCustomEvent(this, "monster-change", detail);
194
+ fireCustomEvent(this, "monster-changed", detail);
195
+
196
+ return this;
197
+ }
198
+ }
199
+
200
+ /**
201
+ * @private
202
+ * @return {void}
203
+ */
204
+ function initControlReferences() {
205
+ this[controlElementSymbol] = this.shadowRoot?.querySelector(
206
+ "[data-monster-role=control]",
207
+ );
208
+ this[itemsElementSymbol] = this.shadowRoot?.querySelector(
209
+ "[data-monster-role=items]",
210
+ );
211
+ }
212
+
213
+ /**
214
+ * @private
215
+ * @return {void}
216
+ */
217
+ function initItems() {
218
+ if (this.hasAttribute("value")) {
219
+ this.setOption("value", normalizeValue(this.getAttribute("value")));
220
+ }
221
+
222
+ const normalized = normalizeItems(this.getOption("items", []));
223
+ this.setOption("items", normalized);
224
+ }
225
+
226
+ /**
227
+ * @private
228
+ * @return {void}
229
+ */
230
+ function initEventHandler() {
231
+ this.addEventListener("click", (event) => {
232
+ const button = findChoiceButton(event);
233
+ if (!button) {
234
+ return;
235
+ }
236
+ this.select(button.getAttribute("data-choice-value"));
237
+ });
238
+
239
+ this.addEventListener("keydown", (event) => {
240
+ if (this.getOption("disabled") === true || this.hasAttribute("disabled")) {
241
+ return;
242
+ }
243
+
244
+ const buttons = getEnabledButtons.call(this);
245
+ if (buttons.length === 0) {
246
+ return;
247
+ }
248
+
249
+ const current = this.shadowRoot?.activeElement;
250
+ let index = buttons.indexOf(current);
251
+ if (index < 0) {
252
+ index = Math.max(
253
+ 0,
254
+ buttons.findIndex(
255
+ (button) => button.getAttribute("aria-checked") === "true",
256
+ ),
257
+ );
258
+ }
259
+
260
+ if (event.key === " " || event.key === "Enter") {
261
+ event.preventDefault();
262
+ this.select(buttons[index].getAttribute("data-choice-value"));
263
+ return;
264
+ }
265
+
266
+ if (event.key === "Home") {
267
+ event.preventDefault();
268
+ focusAndSelect.call(this, buttons[0]);
269
+ return;
270
+ }
271
+
272
+ if (event.key === "End") {
273
+ event.preventDefault();
274
+ focusAndSelect.call(this, buttons[buttons.length - 1]);
275
+ return;
276
+ }
277
+
278
+ if (["ArrowRight", "ArrowDown"].includes(event.key)) {
279
+ event.preventDefault();
280
+ focusAndSelect.call(this, buttons[(index + 1) % buttons.length]);
281
+ return;
282
+ }
283
+
284
+ if (["ArrowLeft", "ArrowUp"].includes(event.key)) {
285
+ event.preventDefault();
286
+ focusAndSelect.call(
287
+ this,
288
+ buttons[(index - 1 + buttons.length) % buttons.length],
289
+ );
290
+ }
291
+ });
292
+ }
293
+
294
+ /**
295
+ * @private
296
+ * @param {HTMLButtonElement} button
297
+ * @return {void}
298
+ */
299
+ function focusAndSelect(button) {
300
+ button.focus();
301
+ this.select(button.getAttribute("data-choice-value"));
302
+ }
303
+
304
+ /**
305
+ * @private
306
+ * @param {Event} event
307
+ * @return {HTMLButtonElement|null}
308
+ */
309
+ function findChoiceButton(event) {
310
+ for (const node of event.composedPath()) {
311
+ if (
312
+ node instanceof HTMLButtonElement &&
313
+ node.getAttribute("data-monster-role") === "choice"
314
+ ) {
315
+ return node;
316
+ }
317
+ }
318
+ return null;
319
+ }
320
+
321
+ /**
322
+ * @private
323
+ * @return {HTMLButtonElement[]}
324
+ */
325
+ function getEnabledButtons() {
326
+ return Array.from(
327
+ this.shadowRoot?.querySelectorAll('[data-monster-role="choice"]') || [],
328
+ ).filter((button) => button.disabled !== true);
329
+ }
330
+
331
+ /**
332
+ * @private
333
+ * @return {void}
334
+ */
335
+ function render() {
336
+ if (!this[itemsElementSymbol]) {
337
+ return;
338
+ }
339
+
340
+ const items = normalizeItems(this.getOption("items", []));
341
+ const value = normalizeValue(this.getOption("value"));
342
+ const disabled =
343
+ this.getOption("disabled") === true || this.hasAttribute("disabled");
344
+ const hasSelectedItem = items.some((item) => item.value === value);
345
+ const firstEnabledIndex = items.findIndex((item) => item.disabled !== true);
346
+
347
+ this[itemsElementSymbol].replaceChildren();
348
+ this[controlElementSymbol]?.setAttribute(
349
+ "aria-label",
350
+ this.getOption("labels.group", "Choices"),
351
+ );
352
+
353
+ for (const [index, item] of items.entries()) {
354
+ const selected = value !== null && item.value === value;
355
+ const tabbable =
356
+ selected || (hasSelectedItem === false && index === firstEnabledIndex);
357
+ const button = document.createElement("button");
358
+ button.type = "button";
359
+ button.setAttribute("data-monster-role", "choice");
360
+ button.setAttribute("data-choice-value", item.value);
361
+ button.setAttribute("part", "choice");
362
+ button.setAttribute("role", "radio");
363
+ button.setAttribute("aria-label", item.label);
364
+ button.setAttribute("aria-checked", selected ? "true" : "false");
365
+ button.tabIndex = tabbable ? 0 : -1;
366
+ button.disabled = disabled || item.disabled === true;
367
+ button.classList.toggle("selected", selected);
368
+ button.classList.toggle("custom-content", !!item.contentSlot);
369
+
370
+ if (item.id) {
371
+ button.setAttribute("data-choice-id", item.id);
372
+ }
373
+
374
+ const indicator = document.createElement("span");
375
+ indicator.setAttribute("data-monster-role", "indicator");
376
+ indicator.setAttribute("part", "indicator");
377
+ button.appendChild(indicator);
378
+
379
+ if (item.contentSlot) {
380
+ const content = document.createElement("span");
381
+ content.setAttribute("data-monster-role", "content");
382
+ content.setAttribute("part", "content");
383
+ const slot = document.createElement("slot");
384
+ slot.name = item.contentSlot;
385
+ content.appendChild(slot);
386
+ button.appendChild(content);
387
+ } else {
388
+ const visual = document.createElement("span");
389
+ visual.setAttribute("data-monster-role", "visual");
390
+ visual.setAttribute("part", "visual");
391
+ if (item.iconSlot) {
392
+ const slot = document.createElement("slot");
393
+ slot.name = item.iconSlot;
394
+ visual.appendChild(slot);
395
+ } else if (item.icon) {
396
+ visual.setAttribute("data-choice-icon", item.icon);
397
+ } else {
398
+ visual.classList.add("empty");
399
+ }
400
+ button.appendChild(visual);
401
+
402
+ const label = document.createElement("span");
403
+ label.setAttribute("data-monster-role", "label");
404
+ label.setAttribute("part", "label");
405
+ label.textContent = item.label;
406
+ button.appendChild(label);
407
+ }
408
+
409
+ this[itemsElementSymbol].appendChild(button);
410
+ }
411
+ }
412
+
413
+ /**
414
+ * @private
415
+ * @param {string|null} value
416
+ * @return {object|null}
417
+ */
418
+ function findItem(value) {
419
+ return normalizeItems(this.getOption("items", [])).find(
420
+ (item) => item.value === value,
421
+ );
422
+ }
423
+
424
+ /**
425
+ * @private
426
+ * @param {*} value
427
+ * @return {string|null}
428
+ */
429
+ function normalizeValue(value) {
430
+ if (value === undefined || value === null || value === "") {
431
+ return null;
432
+ }
433
+ return String(value);
434
+ }
435
+
436
+ /**
437
+ * @private
438
+ * @param {*} items
439
+ * @return {Array}
440
+ */
441
+ function normalizeItems(items) {
442
+ if (!isArray(items)) {
443
+ return [];
444
+ }
445
+
446
+ return items.map((entry, index) => {
447
+ if (isString(entry) || isNumber(entry)) {
448
+ return {
449
+ id: `item-${index}`,
450
+ value: String(entry),
451
+ label: String(entry),
452
+ icon: "",
453
+ iconSlot: "",
454
+ contentSlot: "",
455
+ disabled: false,
456
+ };
457
+ }
458
+
459
+ if (!isObject(entry)) {
460
+ return {
461
+ id: `item-${index}`,
462
+ value: `item-${index}`,
463
+ label: "",
464
+ icon: "",
465
+ iconSlot: "",
466
+ contentSlot: "",
467
+ disabled: false,
468
+ };
469
+ }
470
+
471
+ const value = normalizeValue(entry.value ?? entry.id ?? `item-${index}`);
472
+ return {
473
+ id: String(entry.id ?? value ?? `item-${index}`),
474
+ value: value ?? `item-${index}`,
475
+ label: String(entry.label ?? value ?? ""),
476
+ icon: String(entry.icon ?? ""),
477
+ iconSlot: String(entry.iconSlot ?? ""),
478
+ contentSlot: String(entry.contentSlot ?? entry.slot ?? ""),
479
+ disabled: entry.disabled === true,
480
+ };
481
+ });
482
+ }
483
+
484
+ /**
485
+ * @private
486
+ * @return {void}
487
+ */
488
+ function syncFormValue() {
489
+ if (typeof this.setFormValue === "function") {
490
+ this.setFormValue(this.value ?? "");
491
+ }
492
+ }
493
+
494
+ /**
495
+ * @private
496
+ * @param {string|null} value
497
+ * @return {void}
498
+ */
499
+ function syncValueAttribute(value) {
500
+ if (value === null) {
501
+ if (this.hasAttribute("value")) {
502
+ this.removeAttribute("value");
503
+ }
504
+ return;
505
+ }
506
+
507
+ if (this.getAttribute("value") !== value) {
508
+ this.setAttribute("value", value);
509
+ }
510
+ }
511
+
512
+ /**
513
+ * @private
514
+ * @return {string}
515
+ */
516
+ function getTemplate() {
517
+ // language=HTML
518
+ return `
519
+ <div data-monster-role="control" part="control" role="radiogroup">
520
+ <div data-monster-role="items" part="items"></div>
521
+ </div>
522
+ `;
523
+ }
524
+
525
+ registerCustomElement(ChoiceCards);
@@ -97,7 +97,7 @@ class Form extends DataSet {
97
97
 
98
98
  reportValidity: {
99
99
  selector:
100
- "input,select,textarea,monster-select,monster-toggle-switch,monster-password",
100
+ "input,select,textarea,monster-select,monster-toggle-switch,monster-password,monster-choice-cards",
101
101
  },
102
102
 
103
103
  eventProcessing: true,
@@ -0,0 +1,172 @@
1
+ @import "../../style/control.pcss";
2
+ @import "../../style/color.pcss";
3
+ @import "../../style/theme.pcss";
4
+ @import "../../style/border.pcss";
5
+
6
+ :host {
7
+ box-sizing: border-box;
8
+ color: var(--monster-color-primary-1);
9
+ display: block;
10
+ font-family: var(--monster-font-family);
11
+ font-size: 1rem;
12
+ }
13
+
14
+ *,
15
+ *::before,
16
+ *::after {
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ [data-monster-role="control"] {
21
+ outline: none;
22
+ width: 100%;
23
+ }
24
+
25
+ [data-monster-role="items"] {
26
+ display: flex;
27
+ flex-wrap: wrap;
28
+ gap: var(--monster-choice-cards-gap, 0.75rem);
29
+ }
30
+
31
+ [data-monster-role="choice"] {
32
+ align-items: center;
33
+ appearance: none;
34
+ background: var(--monster-bg-color-primary-1);
35
+ border-color: var(--monster-theme-control-border-color);
36
+ border-radius: var(--monster-theme-control-border-radius);
37
+ border-style: var(--monster-theme-control-border-style);
38
+ border-width: var(--monster-theme-control-border-width);
39
+ color: var(--monster-color-primary-1);
40
+ cursor: pointer;
41
+ display: grid;
42
+ font: inherit;
43
+ gap: 0.55rem;
44
+ grid-template-rows: 1.65rem auto;
45
+ justify-items: center;
46
+ min-height: var(--monster-choice-cards-min-height, 6.75rem);
47
+ min-width: 0;
48
+ padding: 1.35rem 0.85rem 1.45rem;
49
+ position: relative;
50
+ text-align: center;
51
+ width: min(100%, var(--monster-choice-cards-card-width, 10.5rem));
52
+ }
53
+
54
+ [data-monster-role="content"] {
55
+ align-items: center;
56
+ display: flex;
57
+ flex-direction: column;
58
+ gap: 0.55rem;
59
+ justify-content: center;
60
+ min-height: 100%;
61
+ min-width: 0;
62
+ }
63
+
64
+ ::slotted([slot]) {
65
+ min-width: 0;
66
+ }
67
+
68
+ [data-monster-role="choice"]:focus-visible {
69
+ outline: 1px dashed var(--monster-color-selection-4);
70
+ outline-offset: 2px;
71
+ }
72
+
73
+ [data-monster-role="choice"]:hover:not(:disabled) {
74
+ border-color: var(--monster-bg-color-primary-4);
75
+ }
76
+
77
+ [data-monster-role="choice"].selected {
78
+ border-color: var(--monster-color-primary-1);
79
+ }
80
+
81
+ [data-monster-role="choice"].custom-content {
82
+ align-items: center;
83
+ display: flex;
84
+ justify-content: center;
85
+ }
86
+
87
+ [data-monster-role="choice"]:disabled {
88
+ cursor: not-allowed;
89
+ opacity: 0.6;
90
+ }
91
+
92
+ [data-monster-role="indicator"] {
93
+ align-items: center;
94
+ background: var(--monster-color-primary-1);
95
+ border-radius: 999px;
96
+ color: var(--monster-bg-color-primary-1);
97
+ display: none;
98
+ height: 1rem;
99
+ justify-content: center;
100
+ left: 0.32rem;
101
+ position: absolute;
102
+ top: 0.32rem;
103
+ width: 1rem;
104
+ }
105
+
106
+ [data-monster-role="choice"].selected [data-monster-role="indicator"] {
107
+ display: flex;
108
+ }
109
+
110
+ [data-monster-role="indicator"]::before {
111
+ background: currentColor;
112
+ content: "";
113
+ height: 0.72rem;
114
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='black' d='M12.78 4.72a.75.75 0 0 1 0 1.06l-5.25 5.25a.75.75 0 0 1-1.06 0L3.22 7.78a.75.75 0 1 1 1.06-1.06L7 9.44l4.72-4.72a.75.75 0 0 1 1.06 0Z'/%3E%3C/svg%3E");
115
+ mask-position: center;
116
+ mask-repeat: no-repeat;
117
+ mask-size: contain;
118
+ width: 0.72rem;
119
+ }
120
+
121
+ [data-monster-role="visual"] {
122
+ align-items: center;
123
+ color: var(--monster-color-primary-1);
124
+ display: inline-flex;
125
+ height: 1.8rem;
126
+ justify-content: center;
127
+ width: 1.8rem;
128
+ }
129
+
130
+ [data-monster-role="visual"].empty {
131
+ display: none;
132
+ }
133
+
134
+ [data-monster-role="visual"][data-choice-icon]::before {
135
+ background: currentColor;
136
+ content: "";
137
+ height: 1.8rem;
138
+ mask-position: center;
139
+ mask-repeat: no-repeat;
140
+ mask-size: contain;
141
+ width: 1.8rem;
142
+ }
143
+
144
+ [data-monster-role="visual"][data-choice-icon="project-assets"]::before,
145
+ [data-monster-role="visual"][data-choice-icon="stack"]::before {
146
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m12 2 9 4-9 4-9-4 9-4Z'/%3E%3Cpath d='m3 10 9 4 9-4'/%3E%3Cpath d='m3 14 9 4 9-4'/%3E%3C/g%3E%3C/svg%3E");
147
+ }
148
+
149
+ [data-monster-role="visual"][data-choice-icon="api-collection"]::before,
150
+ [data-monster-role="visual"][data-choice-icon="api"]::before {
151
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect x='5' y='3' width='14' height='16' rx='1.5'/%3E%3Cpath d='M8 7h8M8 15h8M9 11l2-2 2 2M15 9l-2 2 2 2M9 21h6'/%3E%3C/g%3E%3C/svg%3E");
152
+ }
153
+
154
+ [data-monster-role="label"] {
155
+ display: block;
156
+ font-size: 0.86rem;
157
+ font-weight: 600;
158
+ line-height: 1.25;
159
+ max-width: 100%;
160
+ min-width: 0;
161
+ overflow-wrap: anywhere;
162
+ }
163
+
164
+ @media (prefers-color-scheme: light) {
165
+ [data-monster-role="choice"] {
166
+ border-color: var(--monster-bg-color-primary-3);
167
+ }
168
+
169
+ [data-monster-role="choice"].selected {
170
+ border-color: var(--monster-color-primary-1);
171
+ }
172
+ }
@@ -174,6 +174,7 @@
174
174
 
175
175
  .monster-field-layout > input,
176
176
  .monster-field-layout > monster-toggle-switch,
177
+ .monster-field-layout > monster-choice-cards,
177
178
  .monster-field-layout > select {
178
179
  min-height: 1.8rem;
179
180
  padding: 0.5rem;
@@ -210,6 +211,7 @@
210
211
 
211
212
  .monster-field-layout > input,
212
213
  .monster-field-layout > monster-toggle-switch,
214
+ .monster-field-layout > monster-choice-cards,
213
215
  .monster-field-layout > monster-password,
214
216
  .monster-field-layout > select,
215
217
  .monster-field-layout > [data-monster-validation-wrapper] {
@@ -234,6 +236,11 @@
234
236
  padding: 0;
235
237
  }
236
238
 
239
+ .monster-field-layout > monster-choice-cards {
240
+ align-self: stretch;
241
+ padding: 0;
242
+ }
243
+
237
244
  @container field-layout (max-width: 1200px) {
238
245
  .monster-field-layout.multiple-columns {
239
246
  grid-template-columns: auto 1fr auto 1fr;
@@ -315,6 +322,7 @@
315
322
  .monster-field-layout > div.wrapper,
316
323
  .monster-field-layout > input,
317
324
  .monster-field-layout > monster-toggle-switch,
325
+ .monster-field-layout > monster-choice-cards,
318
326
  .monster-field-layout > monster-password,
319
327
  .monster-field-layout > textarea,
320
328
  .monster-field-layout > select,
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Copyright © Volker Schukai and all contributing authors, 2026. All rights reserved.
3
+ * Node module: @schukai/monster
4
+ *
5
+ * This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
6
+ * The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html
7
+ *
8
+ * For those who do not wish to adhere to the AGPLv3, a commercial license is available.
9
+ * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
10
+ * For more information about purchasing a commercial license, please contact Volker Schukai.
11
+ */
12
+
13
+ import {addAttributeToken} from "../../../dom/attributes.mjs";
14
+ import {ATTRIBUTE_ERRORMESSAGE} from "../../../dom/constants.mjs";
15
+
16
+ export {ChoiceCardsStyleSheet}
17
+
18
+ /**
19
+ * @private
20
+ * @type {CSSStyleSheet}
21
+ */
22
+ const ChoiceCardsStyleSheet = new CSSStyleSheet();
23
+
24
+ try {
25
+ ChoiceCardsStyleSheet.insertRule(`
26
+ @layer choicecards {
27
+ [data-monster-role=control]{box-sizing:border-box}[data-monster-role=control].flex{align-items:center;display:flex;flex-direction:row}:after,:before,:root{--monster-color-gray-1:#f6f6f6;--monster-color-gray-2:#e2e2e2;--monster-color-gray-3:#8b8b8b;--monster-color-gray-4:#6f6f6f;--monster-color-gray-5:#3e3e3e;--monster-color-gray-6:#222;--monster-color-rose-1:#fff7f9;--monster-color-rose-2:#ffdce5;--monster-color-rose-3:#ff3b8d;--monster-color-rose-4:#db0072;--monster-color-rose-5:#800040;--monster-color-rose-6:#4c0023;--monster-color-raspberry-1:#fff8f8;--monster-color-raspberry-2:#ffdddf;--monster-color-raspberry-3:#ff426c;--monster-color-raspberry-4:#de0051;--monster-color-raspberry-5:#82002c;--monster-color-raspberry-6:#510018;--monster-color-red-1:#fff8f6;--monster-color-red-2:#ffddd8;--monster-color-red-3:#ff4647;--monster-color-red-4:#e0002b;--monster-color-red-5:#830014;--monster-color-red-6:#530003;--monster-color-orange-1:#fff8f5;--monster-color-orange-2:#ffded1;--monster-color-orange-3:#fd4d00;--monster-color-orange-4:#cd3c00;--monster-color-orange-5:#752100;--monster-color-orange-6:#401600;--monster-color-cinnamon-1:#fff8f3;--monster-color-cinnamon-2:#ffdfc6;--monster-color-cinnamon-3:#d57300;--monster-color-cinnamon-4:#ac5c00;--monster-color-cinnamon-5:#633300;--monster-color-cinnamon-6:#371d00;--monster-color-amber-1:#fff8ef;--monster-color-amber-2:#ffe0b2;--monster-color-amber-3:#b98300;--monster-color-amber-4:#926700;--monster-color-amber-5:#523800;--monster-color-amber-6:#302100;--monster-color-yellow-1:#fff9e5;--monster-color-yellow-2:#ffe53e;--monster-color-yellow-3:#9c8b00;--monster-color-yellow-4:#7d6f00;--monster-color-yellow-5:#463d00;--monster-color-yellow-6:#292300;--monster-color-lime-1:#f7ffac;--monster-color-lime-2:#d5f200;--monster-color-lime-3:#819300;--monster-color-lime-4:#677600;--monster-color-lime-5:#394100;--monster-color-lime-6:#222600;--monster-color-chartreuse-1:#e5ffc3;--monster-color-chartreuse-2:#98fb00;--monster-color-chartreuse-3:#5c9b00;--monster-color-chartreuse-4:#497c00;--monster-color-chartreuse-5:#264500;--monster-color-chartreuse-6:#182600;--monster-color-green-1:#e0ffd9;--monster-color-green-2:#72ff6c;--monster-color-green-3:#00a21f;--monster-color-green-4:#008217;--monster-color-green-5:#004908;--monster-color-green-6:#062800;--monster-color-emerald-1:#dcffe6;--monster-color-emerald-2:#5dffa2;--monster-color-emerald-3:#00a05a;--monster-color-emerald-4:#008147;--monster-color-emerald-5:#004825;--monster-color-emerald-6:#002812;--monster-color-aquamarine-1:#daffef;--monster-color-aquamarine-2:#42ffc6;--monster-color-aquamarine-3:#009f78;--monster-color-aquamarine-4:#007f5f;--monster-color-aquamarine-5:#004734;--monster-color-aquamarine-6:#00281b;--monster-color-teal-1:#d7fff7;--monster-color-teal-2:#00ffe4;--monster-color-teal-3:#009e8c;--monster-color-teal-4:#007c6e;--monster-color-teal-5:#00443c;--monster-color-teal-6:#002722;--monster-color-cyan-1:#c4fffe;--monster-color-cyan-2:#00fafb;--monster-color-cyan-3:#00999a;--monster-color-cyan-4:#007a7b;--monster-color-cyan-5:#004344;--monster-color-cyan-6:#002525;--monster-color-powder-1:#dafaff;--monster-color-powder-2:#8df0ff;--monster-color-powder-3:#0098a9;--monster-color-powder-4:#007987;--monster-color-powder-5:#004048;--monster-color-powder-6:#002227;--monster-color-sky-1:#e3f7ff;--monster-color-sky-2:#aee9ff;--monster-color-sky-3:#0094b4;--monster-color-sky-4:#007590;--monster-color-sky-5:#00404f;--monster-color-sky-6:#001f28;--monster-color-cerulean-1:#e8f6ff;--monster-color-cerulean-2:#b9e3ff;--monster-color-cerulean-3:#0092c5;--monster-color-cerulean-4:#00749d;--monster-color-cerulean-5:#003c54;--monster-color-cerulean-6:#001d2a;--monster-color-azure-1:#e8f2ff;--monster-color-azure-2:#c6e0ff;--monster-color-azure-3:#008fdb;--monster-color-azure-4:#0071af;--monster-color-azure-5:#003b5e;--monster-color-azure-6:#001c30;--monster-color-blue-1:#f0f4ff;--monster-color-blue-2:#d4e0ff;--monster-color-blue-3:#0089fc;--monster-color-blue-4:#006dca;--monster-color-blue-5:#00386d;--monster-color-blue-6:#001a39;--monster-color-indigo-1:#f3f3ff;--monster-color-indigo-2:#deddff;--monster-color-indigo-3:#657eff;--monster-color-indigo-4:#0061fc;--monster-color-indigo-5:#00328a;--monster-color-indigo-6:#001649;--monster-color-violet-1:#f7f1ff;--monster-color-violet-2:#e8daff;--monster-color-violet-3:#9b70ff;--monster-color-violet-4:#794aff;--monster-color-violet-5:#2d0fbf;--monster-color-violet-6:#0b0074;--monster-color-purple-1:#fdf4ff;--monster-color-purple-2:#f7d9ff;--monster-color-purple-3:#d150ff;--monster-color-purple-4:#b01fe3;--monster-color-purple-5:#660087;--monster-color-purple-6:#3a004f;--monster-color-magenta-1:#fff3fc;--monster-color-magenta-2:#ffd7f6;--monster-color-magenta-3:#f911e0;--monster-color-magenta-4:#ca00b6;--monster-color-magenta-5:#740068;--monster-color-magenta-6:#44003c;--monster-color-pink-1:#fff7fb;--monster-color-pink-2:#ffdcec;--monster-color-pink-3:#ff2fb2;--monster-color-pink-4:#d2008f;--monster-color-pink-5:#790051;--monster-color-pink-6:#4b0030;--monster-gradient-tangerine-1:#e5b875;--monster-gradient-tangerine-2:#d9a362;--monster-gradient-tangerine-3:#c08a4e;--monster-gradient-tangerine-4:#a7713b;--monster-gradient-tangerine-5:#8f5a28;--monster-gradient-tangerine-6:#360505;--monster-color-seashell-1:#f7f5ef;--monster-color-seashell-2:#e5e2d9;--monster-color-seashell-3:#cbc6b3;--monster-color-seashell-4:#a19d8a;--monster-color-seashell-5:#7a7566;--monster-color-seashell-6:#514d3f}.monster-theme-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-theme-primary-disabled-1{background-color:var(--monster-bg-color-primary-disabled-1);color:var(--monster-color-primary-disabled-1)}.monster-theme-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-theme-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-theme-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-theme-danger-1{background-color:var(--monster-bg-color-danger-1);color:var(--monster-color-danger-1)}.monster-theme-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-theme-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-theme-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-theme-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-border-color-1{border-color:var(--monster-color-border-1)}.monster-color-neutral-1{color:var(--monster-color-primary-1)}.monster-bg-color-primary-1{background-color:var(--monster-bg-color-primary-1)}.monster-bg-color-secondary-1{background-color:var(--monster-bg-color-secondary-1)}.monster-bg-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1)}.monster-color-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-color-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-color-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-color-danger-1{background-color:var(--monster-bg-color-danger-1);color:var(--monster-color-danger-1)}.monster-color-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-color-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-color-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-color-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-theme-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-theme-primary-disabled-2{background-color:var(--monster-bg-color-primary-disabled-2);color:var(--monster-color-primary-disabled-2)}.monster-theme-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-theme-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-theme-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-theme-danger-2{background-color:var(--monster-bg-color-danger-2);color:var(--monster-color-danger-2)}.monster-theme-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-theme-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-theme-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-theme-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-border-color-2{border-color:var(--monster-color-border-2)}.monster-color-neutral-2{color:var(--monster-color-primary-2)}.monster-bg-color-primary-2{background-color:var(--monster-bg-color-primary-2)}.monster-bg-color-secondary-2{background-color:var(--monster-bg-color-secondary-2)}.monster-bg-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2)}.monster-color-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-color-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-color-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-color-danger-2{background-color:var(--monster-bg-color-danger-2);color:var(--monster-color-danger-2)}.monster-color-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-color-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-color-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-color-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-theme-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-theme-primary-disabled-3{background-color:var(--monster-bg-color-primary-disabled-3);color:var(--monster-color-primary-disabled-3)}.monster-theme-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-theme-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-theme-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-theme-danger-3{background-color:var(--monster-bg-color-danger-3);color:var(--monster-color-danger-3)}.monster-theme-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-theme-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-theme-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-theme-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-border-color-3{border-color:var(--monster-color-border-3)}.monster-color-neutral-3{color:var(--monster-color-primary-3)}.monster-bg-color-primary-3{background-color:var(--monster-bg-color-primary-3)}.monster-bg-color-secondary-3{background-color:var(--monster-bg-color-secondary-3)}.monster-bg-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3)}.monster-color-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-color-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-color-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-color-danger-3{background-color:var(--monster-bg-color-danger-3);color:var(--monster-color-danger-3)}.monster-color-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-color-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-color-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-color-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-theme-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-theme-primary-disabled-4{background-color:var(--monster-bg-color-primary-disabled-4);color:var(--monster-color-primary-disabled-4)}.monster-theme-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-theme-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-theme-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-theme-danger-4{background-color:var(--monster-bg-color-danger-4);color:var(--monster-color-danger-4)}.monster-theme-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-theme-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-theme-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-theme-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-border-color-4{border-color:var(--monster-color-border-4)}.monster-color-neutral-4{color:var(--monster-color-primary-4)}.monster-bg-color-primary-4{background-color:var(--monster-bg-color-primary-4)}.monster-bg-color-secondary-4{background-color:var(--monster-bg-color-secondary-4)}.monster-bg-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4)}.monster-color-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-color-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-color-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-color-danger-4{background-color:var(--monster-bg-color-danger-4);color:var(--monster-color-danger-4)}.monster-color-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-color-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-color-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-color-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-theme-control-container-1,.monster-theme-control-row-1{border:1px solid var(--monster-theme-control-border-color)}.monster-theme-control-container-1,.monster-theme-control-element,.monster-theme-control-row-1{background-color:var(--monster-theme-control-bg-color);color:var(--monster-theme-control-color)}.monster-theme-control-background{background-color:var(--monster-theme-control-bg-color)}.monster-theme-background-inherit{background-color:inherit!important}.monster-theme-on{background-color:var(--monster-theme-on-bg-color);color:var(--monster-theme-on-color)}.monster-theme-off{background-color:var(--monster-theme-off-bg-color);color:var(--monster-theme-off-color)}.monster-border-primary-1,.monster-border-primary-2,.monster-border-primary-3,.monster-border-primary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-0{border-radius:0;border-style:none;border-width:0}.monster-border-primary-1{border-color:var(--monster-bg-color-primary-1)}.monster-border-primary-2{border-color:var(--monster-bg-color-primary-2)}.monster-border-primary-3{border-color:var(--monster-bg-color-primary-3)}.monster-border-primary-4{border-color:var(--monster-bg-color-primary-4)}.monster-border-secondary-1,.monster-border-secondary-2,.monster-border-secondary-3,.monster-border-secondary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-secondary-1{border-color:var(--monster-bg-color-secondary-1)}.monster-border-secondary-2{border-color:var(--monster-bg-color-secondary-2)}.monster-border-secondary-3{border-color:var(--monster-bg-color-secondary-3)}.monster-border-secondary-4{border-color:var(--monster-bg-color-secondary-4)}.monster-border-tertiary-1,.monster-border-tertiary-2,.monster-border-tertiary-3,.monster-border-tertiary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-tertiary-1{border-color:var(--monster-bg-color-tertiary-1)}.monster-border-tertiary-2{border-color:var(--monster-bg-color-tertiary-2)}.monster-border-tertiary-3{border-color:var(--monster-bg-color-tertiary-3)}.monster-border-tertiary-4{border-color:var(--monster-bg-color-tertiary-4)}:host{box-sizing:border-box;color:var(--monster-color-primary-1);display:block;font-family:var(--monster-font-family);font-size:1rem}*,:after,:before{box-sizing:border-box}[data-monster-role=control]{outline:none;width:100%}[data-monster-role=items]{display:flex;flex-wrap:wrap;gap:var(--monster-choice-cards-gap,.75rem)}[data-monster-role=choice]{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--monster-bg-color-primary-1);border-color:var(--monster-theme-control-border-color);border-radius:var(--monster-theme-control-border-radius);border-style:var(--monster-theme-control-border-style);border-width:var(--monster-theme-control-border-width);color:var(--monster-color-primary-1);cursor:pointer;display:grid;font:inherit;gap:.55rem;grid-template-rows:1.65rem auto;justify-items:center;min-height:var(--monster-choice-cards-min-height,6.75rem);min-width:0;padding:1.35rem .85rem 1.45rem;position:relative;text-align:center;width:min(100%,var(--monster-choice-cards-card-width,10.5rem))}[data-monster-role=content]{align-items:center;display:flex;flex-direction:column;gap:.55rem;justify-content:center;min-height:100%;min-width:0}::slotted([slot]){min-width:0}[data-monster-role=choice]:focus-visible{outline:1px dashed var(--monster-color-selection-4);outline-offset:2px}[data-monster-role=choice]:hover:not(:disabled){border-color:var(--monster-bg-color-primary-4)}[data-monster-role=choice].selected{border-color:var(--monster-color-primary-1)}[data-monster-role=choice].custom-content{align-items:center;display:flex;justify-content:center}[data-monster-role=choice]:disabled{cursor:not-allowed;opacity:.6}[data-monster-role=indicator]{align-items:center;background:var(--monster-color-primary-1);border-radius:999px;color:var(--monster-bg-color-primary-1);display:none;height:1rem;justify-content:center;left:.32rem;position:absolute;top:.32rem;width:1rem}[data-monster-role=choice].selected [data-monster-role=indicator]{display:flex}[data-monster-role=indicator]:before{background:currentColor;content:\"\";height:.72rem;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M12.78 4.72a.75.75 0 0 1 0 1.06l-5.25 5.25a.75.75 0 0 1-1.06 0L3.22 7.78a.75.75 0 1 1 1.06-1.06L7 9.44l4.72-4.72a.75.75 0 0 1 1.06 0'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M12.78 4.72a.75.75 0 0 1 0 1.06l-5.25 5.25a.75.75 0 0 1-1.06 0L3.22 7.78a.75.75 0 1 1 1.06-1.06L7 9.44l4.72-4.72a.75.75 0 0 1 1.06 0'/%3E%3C/svg%3E\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.72rem}[data-monster-role=visual]{align-items:center;color:var(--monster-color-primary-1);display:inline-flex;height:1.8rem;justify-content:center;width:1.8rem}[data-monster-role=visual].empty{display:none}[data-monster-role=visual][data-choice-icon]:before{background:currentColor;content:\"\";height:1.8rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.8rem}[data-monster-role=visual][data-choice-icon=project-assets]:before,[data-monster-role=visual][data-choice-icon=stack]:before{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m12 2 9 4-9 4-9-4zM3 10l9 4 9-4M3 14l9 4 9-4'/%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m12 2 9 4-9 4-9-4zM3 10l9 4 9-4M3 14l9 4 9-4'/%3E%3C/g%3E%3C/svg%3E\")}[data-monster-role=visual][data-choice-icon=api-collection]:before,[data-monster-role=visual][data-choice-icon=api]:before{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='16' x='5' y='3' rx='1.5'/%3E%3Cpath d='M8 7h8m-8 8h8m-7-4 2-2 2 2m2-2-2 2 2 2m-6 8h6'/%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='16' x='5' y='3' rx='1.5'/%3E%3Cpath d='M8 7h8m-8 8h8m-7-4 2-2 2 2m2-2-2 2 2 2m-6 8h6'/%3E%3C/g%3E%3C/svg%3E\")}[data-monster-role=label]{display:block;font-size:.86rem;font-weight:600;line-height:1.25;max-width:100%;min-width:0;overflow-wrap:anywhere}@media (prefers-color-scheme:light){[data-monster-role=choice]{border-color:var(--monster-bg-color-primary-3)}[data-monster-role=choice].selected{border-color:var(--monster-color-primary-1)}}
28
+ }`, 0);
29
+ } catch (e) {
30
+ addAttributeToken(document.getRootNode().querySelector('html'), ATTRIBUTE_ERRORMESSAGE, e + "");
31
+ }
@@ -10,10 +10,10 @@
10
10
  * For more information about purchasing a commercial license, please contact Volker Schukai.
11
11
  */
12
12
 
13
- import { addAttributeToken } from "../../../dom/attributes.mjs";
14
- import { ATTRIBUTE_ERRORMESSAGE } from "../../../dom/constants.mjs";
13
+ import {addAttributeToken} from "../../../dom/attributes.mjs";
14
+ import {ATTRIBUTE_ERRORMESSAGE} from "../../../dom/constants.mjs";
15
15
 
16
- export { FieldLayoutStyleSheet };
16
+ export {FieldLayoutStyleSheet}
17
17
 
18
18
  /**
19
19
  * @private
@@ -22,17 +22,10 @@ export { FieldLayoutStyleSheet };
22
22
  const FieldLayoutStyleSheet = new CSSStyleSheet();
23
23
 
24
24
  try {
25
- FieldLayoutStyleSheet.insertRule(
26
- `
25
+ FieldLayoutStyleSheet.insertRule(`
27
26
  @layer fieldlayout {
28
- :after,:before,:root{--monster-color-gray-1:#f6f6f6;--monster-color-gray-2:#e2e2e2;--monster-color-gray-3:#8b8b8b;--monster-color-gray-4:#6f6f6f;--monster-color-gray-5:#3e3e3e;--monster-color-gray-6:#222;--monster-color-rose-1:#fff7f9;--monster-color-rose-2:#ffdce5;--monster-color-rose-3:#ff3b8d;--monster-color-rose-4:#db0072;--monster-color-rose-5:#800040;--monster-color-rose-6:#4c0023;--monster-color-raspberry-1:#fff8f8;--monster-color-raspberry-2:#ffdddf;--monster-color-raspberry-3:#ff426c;--monster-color-raspberry-4:#de0051;--monster-color-raspberry-5:#82002c;--monster-color-raspberry-6:#510018;--monster-color-red-1:#fff8f6;--monster-color-red-2:#ffddd8;--monster-color-red-3:#ff4647;--monster-color-red-4:#e0002b;--monster-color-red-5:#830014;--monster-color-red-6:#530003;--monster-color-orange-1:#fff8f5;--monster-color-orange-2:#ffded1;--monster-color-orange-3:#fd4d00;--monster-color-orange-4:#cd3c00;--monster-color-orange-5:#752100;--monster-color-orange-6:#401600;--monster-color-cinnamon-1:#fff8f3;--monster-color-cinnamon-2:#ffdfc6;--monster-color-cinnamon-3:#d57300;--monster-color-cinnamon-4:#ac5c00;--monster-color-cinnamon-5:#633300;--monster-color-cinnamon-6:#371d00;--monster-color-amber-1:#fff8ef;--monster-color-amber-2:#ffe0b2;--monster-color-amber-3:#b98300;--monster-color-amber-4:#926700;--monster-color-amber-5:#523800;--monster-color-amber-6:#302100;--monster-color-yellow-1:#fff9e5;--monster-color-yellow-2:#ffe53e;--monster-color-yellow-3:#9c8b00;--monster-color-yellow-4:#7d6f00;--monster-color-yellow-5:#463d00;--monster-color-yellow-6:#292300;--monster-color-lime-1:#f7ffac;--monster-color-lime-2:#d5f200;--monster-color-lime-3:#819300;--monster-color-lime-4:#677600;--monster-color-lime-5:#394100;--monster-color-lime-6:#222600;--monster-color-chartreuse-1:#e5ffc3;--monster-color-chartreuse-2:#98fb00;--monster-color-chartreuse-3:#5c9b00;--monster-color-chartreuse-4:#497c00;--monster-color-chartreuse-5:#264500;--monster-color-chartreuse-6:#182600;--monster-color-green-1:#e0ffd9;--monster-color-green-2:#72ff6c;--monster-color-green-3:#00a21f;--monster-color-green-4:#008217;--monster-color-green-5:#004908;--monster-color-green-6:#062800;--monster-color-emerald-1:#dcffe6;--monster-color-emerald-2:#5dffa2;--monster-color-emerald-3:#00a05a;--monster-color-emerald-4:#008147;--monster-color-emerald-5:#004825;--monster-color-emerald-6:#002812;--monster-color-aquamarine-1:#daffef;--monster-color-aquamarine-2:#42ffc6;--monster-color-aquamarine-3:#009f78;--monster-color-aquamarine-4:#007f5f;--monster-color-aquamarine-5:#004734;--monster-color-aquamarine-6:#00281b;--monster-color-teal-1:#d7fff7;--monster-color-teal-2:#00ffe4;--monster-color-teal-3:#009e8c;--monster-color-teal-4:#007c6e;--monster-color-teal-5:#00443c;--monster-color-teal-6:#002722;--monster-color-cyan-1:#c4fffe;--monster-color-cyan-2:#00fafb;--monster-color-cyan-3:#00999a;--monster-color-cyan-4:#007a7b;--monster-color-cyan-5:#004344;--monster-color-cyan-6:#002525;--monster-color-powder-1:#dafaff;--monster-color-powder-2:#8df0ff;--monster-color-powder-3:#0098a9;--monster-color-powder-4:#007987;--monster-color-powder-5:#004048;--monster-color-powder-6:#002227;--monster-color-sky-1:#e3f7ff;--monster-color-sky-2:#aee9ff;--monster-color-sky-3:#0094b4;--monster-color-sky-4:#007590;--monster-color-sky-5:#00404f;--monster-color-sky-6:#001f28;--monster-color-cerulean-1:#e8f6ff;--monster-color-cerulean-2:#b9e3ff;--monster-color-cerulean-3:#0092c5;--monster-color-cerulean-4:#00749d;--monster-color-cerulean-5:#003c54;--monster-color-cerulean-6:#001d2a;--monster-color-azure-1:#e8f2ff;--monster-color-azure-2:#c6e0ff;--monster-color-azure-3:#008fdb;--monster-color-azure-4:#0071af;--monster-color-azure-5:#003b5e;--monster-color-azure-6:#001c30;--monster-color-blue-1:#f0f4ff;--monster-color-blue-2:#d4e0ff;--monster-color-blue-3:#0089fc;--monster-color-blue-4:#006dca;--monster-color-blue-5:#00386d;--monster-color-blue-6:#001a39;--monster-color-indigo-1:#f3f3ff;--monster-color-indigo-2:#deddff;--monster-color-indigo-3:#657eff;--monster-color-indigo-4:#0061fc;--monster-color-indigo-5:#00328a;--monster-color-indigo-6:#001649;--monster-color-violet-1:#f7f1ff;--monster-color-violet-2:#e8daff;--monster-color-violet-3:#9b70ff;--monster-color-violet-4:#794aff;--monster-color-violet-5:#2d0fbf;--monster-color-violet-6:#0b0074;--monster-color-purple-1:#fdf4ff;--monster-color-purple-2:#f7d9ff;--monster-color-purple-3:#d150ff;--monster-color-purple-4:#b01fe3;--monster-color-purple-5:#660087;--monster-color-purple-6:#3a004f;--monster-color-magenta-1:#fff3fc;--monster-color-magenta-2:#ffd7f6;--monster-color-magenta-3:#f911e0;--monster-color-magenta-4:#ca00b6;--monster-color-magenta-5:#740068;--monster-color-magenta-6:#44003c;--monster-color-pink-1:#fff7fb;--monster-color-pink-2:#ffdcec;--monster-color-pink-3:#ff2fb2;--monster-color-pink-4:#d2008f;--monster-color-pink-5:#790051;--monster-color-pink-6:#4b0030;--monster-gradient-tangerine-1:#e5b875;--monster-gradient-tangerine-2:#d9a362;--monster-gradient-tangerine-3:#c08a4e;--monster-gradient-tangerine-4:#a7713b;--monster-gradient-tangerine-5:#8f5a28;--monster-gradient-tangerine-6:#360505;--monster-color-seashell-1:#f7f5ef;--monster-color-seashell-2:#e5e2d9;--monster-color-seashell-3:#cbc6b3;--monster-color-seashell-4:#a19d8a;--monster-color-seashell-5:#7a7566;--monster-color-seashell-6:#514d3f}.monster-theme-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-theme-primary-disabled-1{background-color:var(--monster-bg-color-primary-disabled-1);color:var(--monster-color-primary-disabled-1)}.monster-theme-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-theme-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-theme-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-theme-danger-1{background-color:var(--monster-bg-color-danger-1);color:var(--monster-color-danger-1)}.monster-theme-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-theme-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-theme-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-theme-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-border-color-1{border-color:var(--monster-color-border-1)}.monster-color-neutral-1{color:var(--monster-color-primary-1)}.monster-bg-color-primary-1{background-color:var(--monster-bg-color-primary-1)}.monster-bg-color-secondary-1{background-color:var(--monster-bg-color-secondary-1)}.monster-bg-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1)}.monster-color-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-color-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-color-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-color-danger-1{background-color:var(--monster-bg-color-danger-1);color:var(--monster-color-danger-1)}.monster-color-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-color-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-color-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-color-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-theme-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-theme-primary-disabled-2{background-color:var(--monster-bg-color-primary-disabled-2);color:var(--monster-color-primary-disabled-2)}.monster-theme-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-theme-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-theme-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-theme-danger-2{background-color:var(--monster-bg-color-danger-2);color:var(--monster-color-danger-2)}.monster-theme-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-theme-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-theme-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-theme-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-border-color-2{border-color:var(--monster-color-border-2)}.monster-color-neutral-2{color:var(--monster-color-primary-2)}.monster-bg-color-primary-2{background-color:var(--monster-bg-color-primary-2)}.monster-bg-color-secondary-2{background-color:var(--monster-bg-color-secondary-2)}.monster-bg-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2)}.monster-color-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-color-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-color-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-color-danger-2{background-color:var(--monster-bg-color-danger-2);color:var(--monster-color-danger-2)}.monster-color-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-color-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-color-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-color-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-theme-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-theme-primary-disabled-3{background-color:var(--monster-bg-color-primary-disabled-3);color:var(--monster-color-primary-disabled-3)}.monster-theme-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-theme-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-theme-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-theme-danger-3{background-color:var(--monster-bg-color-danger-3);color:var(--monster-color-danger-3)}.monster-theme-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-theme-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-theme-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-theme-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-border-color-3{border-color:var(--monster-color-border-3)}.monster-color-neutral-3{color:var(--monster-color-primary-3)}.monster-bg-color-primary-3{background-color:var(--monster-bg-color-primary-3)}.monster-bg-color-secondary-3{background-color:var(--monster-bg-color-secondary-3)}.monster-bg-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3)}.monster-color-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-color-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-color-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-color-danger-3{background-color:var(--monster-bg-color-danger-3);color:var(--monster-color-danger-3)}.monster-color-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-color-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-color-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-color-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-theme-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-theme-primary-disabled-4{background-color:var(--monster-bg-color-primary-disabled-4);color:var(--monster-color-primary-disabled-4)}.monster-theme-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-theme-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-theme-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-theme-danger-4{background-color:var(--monster-bg-color-danger-4);color:var(--monster-color-danger-4)}.monster-theme-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-theme-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-theme-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-theme-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-border-color-4{border-color:var(--monster-color-border-4)}.monster-color-neutral-4{color:var(--monster-color-primary-4)}.monster-bg-color-primary-4{background-color:var(--monster-bg-color-primary-4)}.monster-bg-color-secondary-4{background-color:var(--monster-bg-color-secondary-4)}.monster-bg-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4)}.monster-color-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-color-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-color-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-color-danger-4{background-color:var(--monster-bg-color-danger-4);color:var(--monster-color-danger-4)}.monster-color-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-color-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-color-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-color-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-theme-control-container-1,.monster-theme-control-row-1{border:1px solid var(--monster-theme-control-border-color)}.monster-theme-control-container-1,.monster-theme-control-element,.monster-theme-control-row-1{background-color:var(--monster-theme-control-bg-color);color:var(--monster-theme-control-color)}.monster-theme-control-background{background-color:var(--monster-theme-control-bg-color)}.monster-theme-background-inherit{background-color:inherit!important}.monster-theme-on{background-color:var(--monster-theme-on-bg-color);color:var(--monster-theme-on-color)}.monster-theme-off{background-color:var(--monster-theme-off-bg-color);color:var(--monster-theme-off-color)}.monster-border-primary-1,.monster-border-primary-2,.monster-border-primary-3,.monster-border-primary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-0{border-radius:0;border-style:none;border-width:0}.monster-border-primary-1{border-color:var(--monster-bg-color-primary-1)}.monster-border-primary-2{border-color:var(--monster-bg-color-primary-2)}.monster-border-primary-3{border-color:var(--monster-bg-color-primary-3)}.monster-border-primary-4{border-color:var(--monster-bg-color-primary-4)}.monster-border-secondary-1,.monster-border-secondary-2,.monster-border-secondary-3,.monster-border-secondary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-secondary-1{border-color:var(--monster-bg-color-secondary-1)}.monster-border-secondary-2{border-color:var(--monster-bg-color-secondary-2)}.monster-border-secondary-3{border-color:var(--monster-bg-color-secondary-3)}.monster-border-secondary-4{border-color:var(--monster-bg-color-secondary-4)}.monster-border-tertiary-1,.monster-border-tertiary-2,.monster-border-tertiary-3,.monster-border-tertiary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-tertiary-1{border-color:var(--monster-bg-color-tertiary-1)}.monster-border-tertiary-2{border-color:var(--monster-bg-color-tertiary-2)}.monster-border-tertiary-3{border-color:var(--monster-bg-color-tertiary-3)}.monster-border-tertiary-4{border-color:var(--monster-bg-color-tertiary-4)}input,meter,progress,select,textarea{accent-color:var(--monster-color-secondary-2);background-color:var(--monster-bg-color-primary-1);border-color:var(--monster-theme-control-border-color);border-radius:var(--monster-theme-control-border-radius);border-style:var(--monster-theme-control-border-style);border-width:var(--monster-theme-control-border-width);box-sizing:border-box;color:var(--monster-color-primary-1);font-family:inherit;font-size:100%;margin:0;outline:none}input,select,textarea{height:-moz-fit-content;height:fit-content;padding:.4rem .6rem}textarea{min-height:6rem;resize:vertical}input[type=color]{height:2rem;margin:0;padding:.1rem;width:2rem}input:hover:not([type=radio]):not([type=checkbox]):not([type=range]),select:hover,textarea:hover{box-shadow:var(--monster-box-shadow-2);transition:background .8s,color .25s .0833333333s}input:focus,select:focus,textarea:focus{outline:1px dashed var(--monster-color-selection-3);outline-offset:3px}[data-monster-role=control]{box-sizing:border-box;outline:none;width:100%}[data-monster-role=control].flex{align-items:center;display:flex;flex-direction:row}:host{box-sizing:border-box;display:block}.monster-badge-primary{padding:.25em .4em}.monster-badge-primary,.monster-badge-primary-pill{background-color:var(--monster-bg-color-primary-4);border-radius:.25rem;color:var(--monster-color-primary-4);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-primary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-secondary{padding:.25em .4em}.monster-badge-secondary,.monster-badge-secondary-pill{background-color:var(--monster-bg-color-secondary-3);border-radius:.25rem;color:var(--monster-color-secondary-3);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-secondary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-tertiary{padding:.25em .4em}.monster-badge-tertiary,.monster-badge-tertiary-pill{background-color:var(--monster-bg-color-tertiary-3);border-radius:.25rem;color:var(--monster-color-tertiary-3);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-tertiary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-destructive{padding:.25em .4em}.monster-badge-destructive,.monster-badge-destructive-pill{background-color:var(--monster-bg-color-destructive-1);border-radius:.25rem;color:var(--monster-color-destructive-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-destructive-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-success{padding:.25em .4em}.monster-badge-success,.monster-badge-success-pill{background-color:var(--monster-bg-color-success-1);border-radius:.25rem;color:var(--monster-color-success-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-success-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-warning{padding:.25em .4em}.monster-badge-warning,.monster-badge-warning-pill{background-color:var(--monster-bg-color-warning-1);border-radius:.25rem;color:var(--monster-color-warning-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-warning-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-error{padding:.25em .4em}.monster-badge-error,.monster-badge-error-pill{background-color:var(--monster-bg-color-error-1);border-radius:.25rem;color:var(--monster-color-error-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-error-pill{border-radius:10rem;padding:.25em .6em}.monster-field-layout{container-name:field-layout;container-type:inline-size;display:grid;grid-template-columns:auto 1fr;grid-gap:.8rem;accent-color:var(--monster-color-secondary-2);--monster-field-set-h1-size:xx-large;--monster-field-set-h2-size:x-large;--monster-field-set-h3-size:large;--monster-field-set-h4-size:medium;--monster-field-set-h5-size:small;--monster-field-set-h6-size:smaller;--monster-field-set-heading-margin-top:1rem;--monster-field-set-heading-margin-top-first:0.3rem;--monster-field-set-heading-margin-top-1200:2.2rem;--monster-field-set-heading-margin-top-first-1200:0.6rem;--monster-field-set-heading-margin-top-900:1.8rem;--monster-field-set-heading-margin-top-first-900:0.5rem;--monster-field-set-heading-margin-top-500:1.3rem;--monster-field-set-heading-margin-top-first-500:0.4rem;font-size:1rem;font-weight:400;line-height:1.6}.monster-field-layout.multiple-columns{grid-template-columns:auto 1fr auto 1fr auto 1fr}.monster-field-layout>.label,.monster-field-layout>label{align-items:flex-start;border-bottom:thin dotted var(--monster-color-primary-1);color:var(--monster-color-primary-1);display:flex;gap:.4rem;justify-content:space-between}.monster-field-layout>h1,.monster-field-layout>h2,.monster-field-layout>h3,.monster-field-layout>h4,.monster-field-layout>h5,.monster-field-layout>h6,.monster-field-layout>hr{grid-column:1/-1;margin:var(--monster-field-set-heading-margin-top,1rem) 0 .1rem}.monster-field-layout>h1{font-size:var(--monster-field-set-h1-size,xx-large)}.monster-field-layout>h2{font-size:var(--monster-field-set-h2-size,x-large)}.monster-field-layout>h3{font-size:var(--monster-field-set-h3-size,large)}.monster-field-layout>h4{font-size:var(--monster-field-set-h4-size,medium)}.monster-field-layout>h5{font-size:var(--monster-field-set-h5-size,small)}.monster-field-layout>h6{font-size:var(--monster-field-set-h6-size,smaller)}.monster-field-layout>h1:first-of-type,.monster-field-layout>h2:first-of-type,.monster-field-layout>h3:first-of-type,.monster-field-layout>h4:first-of-type,.monster-field-layout>h5:first-of-type{margin-top:var(--monster-field-set-heading-margin-top-first,.3rem)}.monster-field-layout>hr{border:none;border-top:thin dotted var(--monster-color-gray-3);margin:1rem 0;padding:0}.monster-field-layout>hr.delimiter{border:none;margin:0;padding:0}.monster-field-layout>.grid-span-full{grid-column-end:-1}.monster-field-layout>.grid-start-1{grid-column-start:1}.monster-field-layout>.grid-start-2{grid-column-start:2}.monster-field-layout>.grid-start-3{grid-column-start:3}.monster-field-layout>.grid-start-4{grid-column-start:4}.monster-field-layout>.grid-double-span{grid-column:span 3}.monster-field-layout>.grid-to-end{grid-column-end:-1}.monster-field-layout>input[type=email],.monster-field-layout>input[type=number],.monster-field-layout>input[type=password],.monster-field-layout>input[type=tel],.monster-field-layout>input[type=text]{height:-webkit-fill-available}.monster-field-layout>input:not([type=checkbox]):not([type=radio]),.monster-field-layout>select{border-color:var(--monster-theme-control-border-color);border-radius:var(--monster-theme-control-border-radius);border-style:var(--monster-theme-control-border-style);border-width:var(--monster-theme-control-border-width);width:100%}.monster-field-layout>select{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-field-layout>select:disabled,.monster-field-layout>select[readonly]{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2);cursor:default}.monster-field-layout>input:not([type=checkbox]):not([type=radio])[readonly]{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-field-layout>input[readonly]:not([type=checkbox]):not([type=radio]){background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2);cursor:default}.monster-field-layout>input,.monster-field-layout>monster-toggle-switch,.monster-field-layout>select{box-sizing:border-box;min-height:1.8rem;padding:.5rem}.monster-field-layout>monster-password{min-height:1.8rem}.monster-field-layout>input[type=color]{min-height:2.2rem;padding:0 .2rem;width:100%}.monster-field-layout>input[type=date],.monster-field-layout>input[type=time]{min-height:2.2rem;padding:0 .2rem}.monster-field-layout>input[type=checkbox],.monster-field-layout>input[type=radio]{min-height:2.2rem;padding:0 .2rem;width:1.8rem}.monster-field-layout>input[type=file]{min-height:1.2rem;padding:.4rem}.monster-field-layout>[data-monster-validation-wrapper],.monster-field-layout>input,.monster-field-layout>monster-password,.monster-field-layout>monster-toggle-switch,.monster-field-layout>select{align-self:end}.monster-field-layout>select[multiple],.monster-field-layout>select[size]:not([size=\"1\"]){align-self:stretch;min-height:7.2rem;overflow-y:auto;padding:.25rem .35rem}.monster-field-layout>select[multiple] option,.monster-field-layout>select[size]:not([size=\"1\"]) option{padding-block:.15rem}.monster-field-layout>monster-toggle-switch{padding:0;width:3rem}@container field-layout (max-width: 1200px){.monster-field-layout.multiple-columns{grid-template-columns:auto 1fr auto 1fr}.monster-field-layout>h1,.monster-field-layout>h2,.monster-field-layout>h3,.monster-field-layout>h4,.monster-field-layout>h5,.monster-field-layout>h6{margin:var(--monster-field-set-heading-margin-top-1200,2.2rem) 0 .1rem}.monster-field-layout>h1:first-of-type,.monster-field-layout>h2:first-of-type,.monster-field-layout>h3:first-of-type,.monster-field-layout>h4:first-of-type,.monster-field-layout>h5:first-of-type{margin-top:var(--monster-field-set-heading-margin-top-first-1200,.6rem)}.monster-field-layout>.grid-double-span{grid-column:span 1}}@container field-layout (max-width: 900px){.monster-field-layout.multiple-columns{grid-template-columns:auto 1fr}.monster-field-layout>h1,.monster-field-layout>h2,.monster-field-layout>h3,.monster-field-layout>h4,.monster-field-layout>h5,.monster-field-layout>h6{margin:var(--monster-field-set-heading-margin-top-900,1.8rem) 0 .1rem}.monster-field-layout>h1:first-of-type,.monster-field-layout>h2:first-of-type,.monster-field-layout>h3:first-of-type,.monster-field-layout>h4:first-of-type,.monster-field-layout>h5:first-of-type{margin-top:var(--monster-field-set-heading-margin-top-first-900,.5rem)}.monster-field-layout>.grid-double-span{grid-column:span 1}}@container field-layout (max-width: 500px){.monster-field-layout{gap:0;grid-template-columns:1fr}.monster-field-layout>h1,.monster-field-layout>h2,.monster-field-layout>h3,.monster-field-layout>h4,.monster-field-layout>h5,.monster-field-layout>h6{grid-column:1;margin:var(--monster-field-set-heading-margin-top-500,1.3rem) 0 .1rem}.monster-field-layout>h1:first-of-type,.monster-field-layout>h2:first-of-type,.monster-field-layout>h3:first-of-type,.monster-field-layout>h4:first-of-type,.monster-field-layout>h5:first-of-type{margin-top:var(--monster-field-set-heading-margin-top-first-500,.4rem)}.monster-field-layout>div.wrapper,.monster-field-layout>input,.monster-field-layout>monster-action-button,.monster-field-layout>monster-api-button,.monster-field-layout>monster-button,.monster-field-layout>monster-datasource-save-button,.monster-field-layout>monster-password,.monster-field-layout>monster-state-button,.monster-field-layout>monster-toggle-switch,.monster-field-layout>select,.monster-field-layout>textarea{grid-column:1}.monster-field-layout>.label,.monster-field-layout>label{border-bottom:none;padding-top:1rem}.monster-field-layout.multiple-columns{grid-template-columns:1fr}.monster-field-layout>.grid-span-full,.monster-field-layout>.grid-start-1,.monster-field-layout>.grid-start-2,.monster-field-layout>.grid-start-3,.monster-field-layout>.grid-start-4{grid-column:1!important}.monster-field-layout>.grid-double-span{grid-column:span 1!important}}
29
- }`,
30
- 0,
31
- );
27
+ :after,:before,:root{--monster-color-gray-1:#f6f6f6;--monster-color-gray-2:#e2e2e2;--monster-color-gray-3:#8b8b8b;--monster-color-gray-4:#6f6f6f;--monster-color-gray-5:#3e3e3e;--monster-color-gray-6:#222;--monster-color-rose-1:#fff7f9;--monster-color-rose-2:#ffdce5;--monster-color-rose-3:#ff3b8d;--monster-color-rose-4:#db0072;--monster-color-rose-5:#800040;--monster-color-rose-6:#4c0023;--monster-color-raspberry-1:#fff8f8;--monster-color-raspberry-2:#ffdddf;--monster-color-raspberry-3:#ff426c;--monster-color-raspberry-4:#de0051;--monster-color-raspberry-5:#82002c;--monster-color-raspberry-6:#510018;--monster-color-red-1:#fff8f6;--monster-color-red-2:#ffddd8;--monster-color-red-3:#ff4647;--monster-color-red-4:#e0002b;--monster-color-red-5:#830014;--monster-color-red-6:#530003;--monster-color-orange-1:#fff8f5;--monster-color-orange-2:#ffded1;--monster-color-orange-3:#fd4d00;--monster-color-orange-4:#cd3c00;--monster-color-orange-5:#752100;--monster-color-orange-6:#401600;--monster-color-cinnamon-1:#fff8f3;--monster-color-cinnamon-2:#ffdfc6;--monster-color-cinnamon-3:#d57300;--monster-color-cinnamon-4:#ac5c00;--monster-color-cinnamon-5:#633300;--monster-color-cinnamon-6:#371d00;--monster-color-amber-1:#fff8ef;--monster-color-amber-2:#ffe0b2;--monster-color-amber-3:#b98300;--monster-color-amber-4:#926700;--monster-color-amber-5:#523800;--monster-color-amber-6:#302100;--monster-color-yellow-1:#fff9e5;--monster-color-yellow-2:#ffe53e;--monster-color-yellow-3:#9c8b00;--monster-color-yellow-4:#7d6f00;--monster-color-yellow-5:#463d00;--monster-color-yellow-6:#292300;--monster-color-lime-1:#f7ffac;--monster-color-lime-2:#d5f200;--monster-color-lime-3:#819300;--monster-color-lime-4:#677600;--monster-color-lime-5:#394100;--monster-color-lime-6:#222600;--monster-color-chartreuse-1:#e5ffc3;--monster-color-chartreuse-2:#98fb00;--monster-color-chartreuse-3:#5c9b00;--monster-color-chartreuse-4:#497c00;--monster-color-chartreuse-5:#264500;--monster-color-chartreuse-6:#182600;--monster-color-green-1:#e0ffd9;--monster-color-green-2:#72ff6c;--monster-color-green-3:#00a21f;--monster-color-green-4:#008217;--monster-color-green-5:#004908;--monster-color-green-6:#062800;--monster-color-emerald-1:#dcffe6;--monster-color-emerald-2:#5dffa2;--monster-color-emerald-3:#00a05a;--monster-color-emerald-4:#008147;--monster-color-emerald-5:#004825;--monster-color-emerald-6:#002812;--monster-color-aquamarine-1:#daffef;--monster-color-aquamarine-2:#42ffc6;--monster-color-aquamarine-3:#009f78;--monster-color-aquamarine-4:#007f5f;--monster-color-aquamarine-5:#004734;--monster-color-aquamarine-6:#00281b;--monster-color-teal-1:#d7fff7;--monster-color-teal-2:#00ffe4;--monster-color-teal-3:#009e8c;--monster-color-teal-4:#007c6e;--monster-color-teal-5:#00443c;--monster-color-teal-6:#002722;--monster-color-cyan-1:#c4fffe;--monster-color-cyan-2:#00fafb;--monster-color-cyan-3:#00999a;--monster-color-cyan-4:#007a7b;--monster-color-cyan-5:#004344;--monster-color-cyan-6:#002525;--monster-color-powder-1:#dafaff;--monster-color-powder-2:#8df0ff;--monster-color-powder-3:#0098a9;--monster-color-powder-4:#007987;--monster-color-powder-5:#004048;--monster-color-powder-6:#002227;--monster-color-sky-1:#e3f7ff;--monster-color-sky-2:#aee9ff;--monster-color-sky-3:#0094b4;--monster-color-sky-4:#007590;--monster-color-sky-5:#00404f;--monster-color-sky-6:#001f28;--monster-color-cerulean-1:#e8f6ff;--monster-color-cerulean-2:#b9e3ff;--monster-color-cerulean-3:#0092c5;--monster-color-cerulean-4:#00749d;--monster-color-cerulean-5:#003c54;--monster-color-cerulean-6:#001d2a;--monster-color-azure-1:#e8f2ff;--monster-color-azure-2:#c6e0ff;--monster-color-azure-3:#008fdb;--monster-color-azure-4:#0071af;--monster-color-azure-5:#003b5e;--monster-color-azure-6:#001c30;--monster-color-blue-1:#f0f4ff;--monster-color-blue-2:#d4e0ff;--monster-color-blue-3:#0089fc;--monster-color-blue-4:#006dca;--monster-color-blue-5:#00386d;--monster-color-blue-6:#001a39;--monster-color-indigo-1:#f3f3ff;--monster-color-indigo-2:#deddff;--monster-color-indigo-3:#657eff;--monster-color-indigo-4:#0061fc;--monster-color-indigo-5:#00328a;--monster-color-indigo-6:#001649;--monster-color-violet-1:#f7f1ff;--monster-color-violet-2:#e8daff;--monster-color-violet-3:#9b70ff;--monster-color-violet-4:#794aff;--monster-color-violet-5:#2d0fbf;--monster-color-violet-6:#0b0074;--monster-color-purple-1:#fdf4ff;--monster-color-purple-2:#f7d9ff;--monster-color-purple-3:#d150ff;--monster-color-purple-4:#b01fe3;--monster-color-purple-5:#660087;--monster-color-purple-6:#3a004f;--monster-color-magenta-1:#fff3fc;--monster-color-magenta-2:#ffd7f6;--monster-color-magenta-3:#f911e0;--monster-color-magenta-4:#ca00b6;--monster-color-magenta-5:#740068;--monster-color-magenta-6:#44003c;--monster-color-pink-1:#fff7fb;--monster-color-pink-2:#ffdcec;--monster-color-pink-3:#ff2fb2;--monster-color-pink-4:#d2008f;--monster-color-pink-5:#790051;--monster-color-pink-6:#4b0030;--monster-gradient-tangerine-1:#e5b875;--monster-gradient-tangerine-2:#d9a362;--monster-gradient-tangerine-3:#c08a4e;--monster-gradient-tangerine-4:#a7713b;--monster-gradient-tangerine-5:#8f5a28;--monster-gradient-tangerine-6:#360505;--monster-color-seashell-1:#f7f5ef;--monster-color-seashell-2:#e5e2d9;--monster-color-seashell-3:#cbc6b3;--monster-color-seashell-4:#a19d8a;--monster-color-seashell-5:#7a7566;--monster-color-seashell-6:#514d3f}.monster-theme-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-theme-primary-disabled-1{background-color:var(--monster-bg-color-primary-disabled-1);color:var(--monster-color-primary-disabled-1)}.monster-theme-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-theme-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-theme-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-theme-danger-1{background-color:var(--monster-bg-color-danger-1);color:var(--monster-color-danger-1)}.monster-theme-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-theme-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-theme-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-theme-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-border-color-1{border-color:var(--monster-color-border-1)}.monster-color-neutral-1{color:var(--monster-color-primary-1)}.monster-bg-color-primary-1{background-color:var(--monster-bg-color-primary-1)}.monster-bg-color-secondary-1{background-color:var(--monster-bg-color-secondary-1)}.monster-bg-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1)}.monster-color-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-color-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-color-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-color-danger-1{background-color:var(--monster-bg-color-danger-1);color:var(--monster-color-danger-1)}.monster-color-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-color-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-color-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-color-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-theme-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-theme-primary-disabled-2{background-color:var(--monster-bg-color-primary-disabled-2);color:var(--monster-color-primary-disabled-2)}.monster-theme-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-theme-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-theme-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-theme-danger-2{background-color:var(--monster-bg-color-danger-2);color:var(--monster-color-danger-2)}.monster-theme-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-theme-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-theme-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-theme-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-border-color-2{border-color:var(--monster-color-border-2)}.monster-color-neutral-2{color:var(--monster-color-primary-2)}.monster-bg-color-primary-2{background-color:var(--monster-bg-color-primary-2)}.monster-bg-color-secondary-2{background-color:var(--monster-bg-color-secondary-2)}.monster-bg-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2)}.monster-color-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-color-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-color-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-color-danger-2{background-color:var(--monster-bg-color-danger-2);color:var(--monster-color-danger-2)}.monster-color-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-color-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-color-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-color-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-theme-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-theme-primary-disabled-3{background-color:var(--monster-bg-color-primary-disabled-3);color:var(--monster-color-primary-disabled-3)}.monster-theme-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-theme-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-theme-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-theme-danger-3{background-color:var(--monster-bg-color-danger-3);color:var(--monster-color-danger-3)}.monster-theme-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-theme-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-theme-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-theme-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-border-color-3{border-color:var(--monster-color-border-3)}.monster-color-neutral-3{color:var(--monster-color-primary-3)}.monster-bg-color-primary-3{background-color:var(--monster-bg-color-primary-3)}.monster-bg-color-secondary-3{background-color:var(--monster-bg-color-secondary-3)}.monster-bg-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3)}.monster-color-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-color-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-color-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-color-danger-3{background-color:var(--monster-bg-color-danger-3);color:var(--monster-color-danger-3)}.monster-color-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-color-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-color-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-color-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-theme-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-theme-primary-disabled-4{background-color:var(--monster-bg-color-primary-disabled-4);color:var(--monster-color-primary-disabled-4)}.monster-theme-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-theme-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-theme-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-theme-danger-4{background-color:var(--monster-bg-color-danger-4);color:var(--monster-color-danger-4)}.monster-theme-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-theme-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-theme-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-theme-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-border-color-4{border-color:var(--monster-color-border-4)}.monster-color-neutral-4{color:var(--monster-color-primary-4)}.monster-bg-color-primary-4{background-color:var(--monster-bg-color-primary-4)}.monster-bg-color-secondary-4{background-color:var(--monster-bg-color-secondary-4)}.monster-bg-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4)}.monster-color-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-color-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-color-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-color-danger-4{background-color:var(--monster-bg-color-danger-4);color:var(--monster-color-danger-4)}.monster-color-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-color-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-color-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-color-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-theme-control-container-1,.monster-theme-control-row-1{border:1px solid var(--monster-theme-control-border-color)}.monster-theme-control-container-1,.monster-theme-control-element,.monster-theme-control-row-1{background-color:var(--monster-theme-control-bg-color);color:var(--monster-theme-control-color)}.monster-theme-control-background{background-color:var(--monster-theme-control-bg-color)}.monster-theme-background-inherit{background-color:inherit!important}.monster-theme-on{background-color:var(--monster-theme-on-bg-color);color:var(--monster-theme-on-color)}.monster-theme-off{background-color:var(--monster-theme-off-bg-color);color:var(--monster-theme-off-color)}.monster-border-primary-1,.monster-border-primary-2,.monster-border-primary-3,.monster-border-primary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-0{border-radius:0;border-style:none;border-width:0}.monster-border-primary-1{border-color:var(--monster-bg-color-primary-1)}.monster-border-primary-2{border-color:var(--monster-bg-color-primary-2)}.monster-border-primary-3{border-color:var(--monster-bg-color-primary-3)}.monster-border-primary-4{border-color:var(--monster-bg-color-primary-4)}.monster-border-secondary-1,.monster-border-secondary-2,.monster-border-secondary-3,.monster-border-secondary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-secondary-1{border-color:var(--monster-bg-color-secondary-1)}.monster-border-secondary-2{border-color:var(--monster-bg-color-secondary-2)}.monster-border-secondary-3{border-color:var(--monster-bg-color-secondary-3)}.monster-border-secondary-4{border-color:var(--monster-bg-color-secondary-4)}.monster-border-tertiary-1,.monster-border-tertiary-2,.monster-border-tertiary-3,.monster-border-tertiary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-tertiary-1{border-color:var(--monster-bg-color-tertiary-1)}.monster-border-tertiary-2{border-color:var(--monster-bg-color-tertiary-2)}.monster-border-tertiary-3{border-color:var(--monster-bg-color-tertiary-3)}.monster-border-tertiary-4{border-color:var(--monster-bg-color-tertiary-4)}input,meter,progress,select,textarea{accent-color:var(--monster-color-secondary-2);background-color:var(--monster-bg-color-primary-1);border-color:var(--monster-theme-control-border-color);border-radius:var(--monster-theme-control-border-radius);border-style:var(--monster-theme-control-border-style);border-width:var(--monster-theme-control-border-width);box-sizing:border-box;color:var(--monster-color-primary-1);font-family:inherit;font-size:100%;margin:0;outline:none}input,select,textarea{height:-moz-fit-content;height:fit-content;padding:.4rem .6rem}textarea{min-height:6rem;resize:vertical}input[type=color]{height:2rem;margin:0;padding:.1rem;width:2rem}input:hover:not([type=radio]):not([type=checkbox]):not([type=range]),select:hover,textarea:hover{box-shadow:var(--monster-box-shadow-2);transition:background .8s,color .25s .0833333333s}input:focus,select:focus,textarea:focus{outline:1px dashed var(--monster-color-selection-3);outline-offset:3px}[data-monster-role=control]{box-sizing:border-box;outline:none;width:100%}[data-monster-role=control].flex{align-items:center;display:flex;flex-direction:row}:host{box-sizing:border-box;display:block}.monster-badge-primary{padding:.25em .4em}.monster-badge-primary,.monster-badge-primary-pill{background-color:var(--monster-bg-color-primary-4);border-radius:.25rem;color:var(--monster-color-primary-4);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-primary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-secondary{padding:.25em .4em}.monster-badge-secondary,.monster-badge-secondary-pill{background-color:var(--monster-bg-color-secondary-3);border-radius:.25rem;color:var(--monster-color-secondary-3);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-secondary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-tertiary{padding:.25em .4em}.monster-badge-tertiary,.monster-badge-tertiary-pill{background-color:var(--monster-bg-color-tertiary-3);border-radius:.25rem;color:var(--monster-color-tertiary-3);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-tertiary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-destructive{padding:.25em .4em}.monster-badge-destructive,.monster-badge-destructive-pill{background-color:var(--monster-bg-color-destructive-1);border-radius:.25rem;color:var(--monster-color-destructive-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-destructive-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-success{padding:.25em .4em}.monster-badge-success,.monster-badge-success-pill{background-color:var(--monster-bg-color-success-1);border-radius:.25rem;color:var(--monster-color-success-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-success-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-warning{padding:.25em .4em}.monster-badge-warning,.monster-badge-warning-pill{background-color:var(--monster-bg-color-warning-1);border-radius:.25rem;color:var(--monster-color-warning-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-warning-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-error{padding:.25em .4em}.monster-badge-error,.monster-badge-error-pill{background-color:var(--monster-bg-color-error-1);border-radius:.25rem;color:var(--monster-color-error-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-error-pill{border-radius:10rem;padding:.25em .6em}.monster-field-layout{container-name:field-layout;container-type:inline-size;display:grid;grid-template-columns:auto 1fr;grid-gap:.8rem;accent-color:var(--monster-color-secondary-2);--monster-field-set-h1-size:xx-large;--monster-field-set-h2-size:x-large;--monster-field-set-h3-size:large;--monster-field-set-h4-size:medium;--monster-field-set-h5-size:small;--monster-field-set-h6-size:smaller;--monster-field-set-heading-margin-top:1rem;--monster-field-set-heading-margin-top-first:0.3rem;--monster-field-set-heading-margin-top-1200:2.2rem;--monster-field-set-heading-margin-top-first-1200:0.6rem;--monster-field-set-heading-margin-top-900:1.8rem;--monster-field-set-heading-margin-top-first-900:0.5rem;--monster-field-set-heading-margin-top-500:1.3rem;--monster-field-set-heading-margin-top-first-500:0.4rem;font-size:1rem;font-weight:400;line-height:1.6}.monster-field-layout.multiple-columns{grid-template-columns:auto 1fr auto 1fr auto 1fr}.monster-field-layout>.label,.monster-field-layout>label{align-items:flex-start;border-bottom:thin dotted var(--monster-color-primary-1);color:var(--monster-color-primary-1);display:flex;gap:.4rem;justify-content:space-between}.monster-field-layout>h1,.monster-field-layout>h2,.monster-field-layout>h3,.monster-field-layout>h4,.monster-field-layout>h5,.monster-field-layout>h6,.monster-field-layout>hr{grid-column:1/-1;margin:var(--monster-field-set-heading-margin-top,1rem) 0 .1rem}.monster-field-layout>h1{font-size:var(--monster-field-set-h1-size,xx-large)}.monster-field-layout>h2{font-size:var(--monster-field-set-h2-size,x-large)}.monster-field-layout>h3{font-size:var(--monster-field-set-h3-size,large)}.monster-field-layout>h4{font-size:var(--monster-field-set-h4-size,medium)}.monster-field-layout>h5{font-size:var(--monster-field-set-h5-size,small)}.monster-field-layout>h6{font-size:var(--monster-field-set-h6-size,smaller)}.monster-field-layout>h1:first-of-type,.monster-field-layout>h2:first-of-type,.monster-field-layout>h3:first-of-type,.monster-field-layout>h4:first-of-type,.monster-field-layout>h5:first-of-type{margin-top:var(--monster-field-set-heading-margin-top-first,.3rem)}.monster-field-layout>hr{border:none;border-top:thin dotted var(--monster-color-gray-3);margin:1rem 0;padding:0}.monster-field-layout>hr.delimiter{border:none;margin:0;padding:0}.monster-field-layout>.grid-span-full{grid-column-end:-1}.monster-field-layout>.grid-start-1{grid-column-start:1}.monster-field-layout>.grid-start-2{grid-column-start:2}.monster-field-layout>.grid-start-3{grid-column-start:3}.monster-field-layout>.grid-start-4{grid-column-start:4}.monster-field-layout>.grid-double-span{grid-column:span 3}.monster-field-layout>.grid-to-end{grid-column-end:-1}.monster-field-layout>input[type=email],.monster-field-layout>input[type=number],.monster-field-layout>input[type=password],.monster-field-layout>input[type=tel],.monster-field-layout>input[type=text]{height:-webkit-fill-available}.monster-field-layout>input:not([type=checkbox]):not([type=radio]),.monster-field-layout>select{border-color:var(--monster-theme-control-border-color);border-radius:var(--monster-theme-control-border-radius);border-style:var(--monster-theme-control-border-style);border-width:var(--monster-theme-control-border-width);width:100%}.monster-field-layout>select{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-field-layout>select:disabled,.monster-field-layout>select[readonly]{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2);cursor:default}.monster-field-layout>input:not([type=checkbox]):not([type=radio])[readonly]{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-field-layout>input[readonly]:not([type=checkbox]):not([type=radio]){background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2);cursor:default}.monster-field-layout>input,.monster-field-layout>monster-choice-cards,.monster-field-layout>monster-toggle-switch,.monster-field-layout>select{box-sizing:border-box;min-height:1.8rem;padding:.5rem}.monster-field-layout>monster-password{min-height:1.8rem}.monster-field-layout>input[type=color]{min-height:2.2rem;padding:0 .2rem;width:100%}.monster-field-layout>input[type=date],.monster-field-layout>input[type=time]{min-height:2.2rem;padding:0 .2rem}.monster-field-layout>input[type=checkbox],.monster-field-layout>input[type=radio]{min-height:2.2rem;padding:0 .2rem;width:1.8rem}.monster-field-layout>input[type=file]{min-height:1.2rem;padding:.4rem}.monster-field-layout>[data-monster-validation-wrapper],.monster-field-layout>input,.monster-field-layout>monster-choice-cards,.monster-field-layout>monster-password,.monster-field-layout>monster-toggle-switch,.monster-field-layout>select{align-self:end}.monster-field-layout>select[multiple],.monster-field-layout>select[size]:not([size=\"1\"]){align-self:stretch;min-height:7.2rem;overflow-y:auto;padding:.25rem .35rem}.monster-field-layout>select[multiple] option,.monster-field-layout>select[size]:not([size=\"1\"]) option{padding-block:.15rem}.monster-field-layout>monster-toggle-switch{padding:0;width:3rem}.monster-field-layout>monster-choice-cards{align-self:stretch;padding:0}@container field-layout (max-width: 1200px){.monster-field-layout.multiple-columns{grid-template-columns:auto 1fr auto 1fr}.monster-field-layout>h1,.monster-field-layout>h2,.monster-field-layout>h3,.monster-field-layout>h4,.monster-field-layout>h5,.monster-field-layout>h6{margin:var(--monster-field-set-heading-margin-top-1200,2.2rem) 0 .1rem}.monster-field-layout>h1:first-of-type,.monster-field-layout>h2:first-of-type,.monster-field-layout>h3:first-of-type,.monster-field-layout>h4:first-of-type,.monster-field-layout>h5:first-of-type{margin-top:var(--monster-field-set-heading-margin-top-first-1200,.6rem)}.monster-field-layout>.grid-double-span{grid-column:span 1}}@container field-layout (max-width: 900px){.monster-field-layout.multiple-columns{grid-template-columns:auto 1fr}.monster-field-layout>h1,.monster-field-layout>h2,.monster-field-layout>h3,.monster-field-layout>h4,.monster-field-layout>h5,.monster-field-layout>h6{margin:var(--monster-field-set-heading-margin-top-900,1.8rem) 0 .1rem}.monster-field-layout>h1:first-of-type,.monster-field-layout>h2:first-of-type,.monster-field-layout>h3:first-of-type,.monster-field-layout>h4:first-of-type,.monster-field-layout>h5:first-of-type{margin-top:var(--monster-field-set-heading-margin-top-first-900,.5rem)}.monster-field-layout>.grid-double-span{grid-column:span 1}}@container field-layout (max-width: 500px){.monster-field-layout{gap:0;grid-template-columns:1fr}.monster-field-layout>h1,.monster-field-layout>h2,.monster-field-layout>h3,.monster-field-layout>h4,.monster-field-layout>h5,.monster-field-layout>h6{grid-column:1;margin:var(--monster-field-set-heading-margin-top-500,1.3rem) 0 .1rem}.monster-field-layout>h1:first-of-type,.monster-field-layout>h2:first-of-type,.monster-field-layout>h3:first-of-type,.monster-field-layout>h4:first-of-type,.monster-field-layout>h5:first-of-type{margin-top:var(--monster-field-set-heading-margin-top-first-500,.4rem)}.monster-field-layout>div.wrapper,.monster-field-layout>input,.monster-field-layout>monster-action-button,.monster-field-layout>monster-api-button,.monster-field-layout>monster-button,.monster-field-layout>monster-choice-cards,.monster-field-layout>monster-datasource-save-button,.monster-field-layout>monster-password,.monster-field-layout>monster-state-button,.monster-field-layout>monster-toggle-switch,.monster-field-layout>select,.monster-field-layout>textarea{grid-column:1}.monster-field-layout>.label,.monster-field-layout>label{border-bottom:none;padding-top:1rem}.monster-field-layout.multiple-columns{grid-template-columns:1fr}.monster-field-layout>.grid-span-full,.monster-field-layout>.grid-start-1,.monster-field-layout>.grid-start-2,.monster-field-layout>.grid-start-3,.monster-field-layout>.grid-start-4{grid-column:1!important}.monster-field-layout>.grid-double-span{grid-column:span 1!important}}
28
+ }`, 0);
32
29
  } catch (e) {
33
- addAttributeToken(
34
- document.getRootNode().querySelector("html"),
35
- ATTRIBUTE_ERRORMESSAGE,
36
- e + "",
37
- );
30
+ addAttributeToken(document.getRootNode().querySelector('html'), ATTRIBUTE_ERRORMESSAGE, e + "");
38
31
  }
@@ -83,6 +83,7 @@ export * from "./components/form/credential-button.mjs";
83
83
  export * from "./components/form/wizard.mjs";
84
84
  export * from "./components/form/input-group.mjs";
85
85
  export * from "./components/form/checklist.mjs";
86
+ export * from "./components/form/choice-cards.mjs";
86
87
  export * from "./components/form/shadow-reload.mjs";
87
88
  export * from "./components/form/button.mjs";
88
89
  export * from "./components/form/field-set.mjs";
@@ -0,0 +1,192 @@
1
+ import * as chai from "chai";
2
+ import { chaiDom } from "../../../util/chai-dom.mjs";
3
+ import { initJSDOM } from "../../../util/jsdom.mjs";
4
+
5
+ let expect = chai.expect;
6
+ chai.use(chaiDom);
7
+
8
+ let ChoiceCards;
9
+
10
+ function waitForCondition(check, { timeout = 4000, interval = 25 } = {}) {
11
+ return new Promise((resolve, reject) => {
12
+ const start = Date.now();
13
+
14
+ const poll = () => {
15
+ try {
16
+ if (check()) {
17
+ resolve();
18
+ return;
19
+ }
20
+ } catch (e) {
21
+ reject(e);
22
+ return;
23
+ }
24
+
25
+ if (Date.now() - start >= timeout) {
26
+ reject(new Error("Timed out while waiting for test condition."));
27
+ return;
28
+ }
29
+
30
+ setTimeout(poll, interval);
31
+ };
32
+
33
+ poll();
34
+ });
35
+ }
36
+
37
+ describe("ChoiceCards", function () {
38
+ before(function (done) {
39
+ initJSDOM()
40
+ .then(() => {
41
+ return import("element-internals-polyfill");
42
+ })
43
+ .then(() => {
44
+ return import("../../../../source/components/form/form.mjs");
45
+ })
46
+ .then(() => {
47
+ return import("../../../../source/components/form/choice-cards.mjs");
48
+ })
49
+ .then((m) => {
50
+ ChoiceCards = m["ChoiceCards"];
51
+ done();
52
+ })
53
+ .catch((e) => done(e));
54
+ });
55
+
56
+ beforeEach(() => {
57
+ document.getElementById("mocks").innerHTML = '<div id="test"></div>';
58
+ });
59
+
60
+ afterEach(() => {
61
+ document.getElementById("mocks").innerHTML = "";
62
+ });
63
+
64
+ it("creates a custom element instance", function () {
65
+ expect(document.createElement("monster-choice-cards")).is.instanceof(
66
+ ChoiceCards,
67
+ );
68
+ });
69
+
70
+ it("renders choice cards from items", function () {
71
+ const cards = document.createElement("monster-choice-cards");
72
+ cards.setItems([
73
+ { value: "assets", label: "Project assets", icon: "project-assets" },
74
+ { value: "api", label: "API collection", icon: "api-collection" },
75
+ ]);
76
+
77
+ document.getElementById("test").appendChild(cards);
78
+
79
+ const choices = cards.shadowRoot.querySelectorAll(
80
+ '[data-monster-role="choice"]',
81
+ );
82
+ expect(choices.length).is.equal(2);
83
+ expect(choices[0].textContent).contains("Project assets");
84
+ expect(choices[1].textContent).contains("API collection");
85
+ });
86
+
87
+ it("renders custom card content from slots", function () {
88
+ const cards = document.createElement("monster-choice-cards");
89
+ cards.setItems([
90
+ { value: "assets", label: "Project assets", contentSlot: "assets-card" },
91
+ { value: "api", label: "API collection", contentSlot: "api-card" },
92
+ { value: "manual", label: "Manual", contentSlot: "manual-card" },
93
+ ]);
94
+
95
+ const assets = document.createElement("span");
96
+ assets.slot = "assets-card";
97
+ assets.textContent = "Custom assets content";
98
+ cards.appendChild(assets);
99
+
100
+ document.getElementById("test").appendChild(cards);
101
+
102
+ const choices = cards.shadowRoot.querySelectorAll(
103
+ '[data-monster-role="choice"]',
104
+ );
105
+ expect(choices.length).is.equal(3);
106
+ expect(
107
+ cards.shadowRoot
108
+ .querySelector('[data-choice-value="assets"] slot')
109
+ .getAttribute("name"),
110
+ ).is.equal("assets-card");
111
+ });
112
+
113
+ it("selects a card and emits change events", function (done) {
114
+ const cards = document.createElement("monster-choice-cards");
115
+ cards.setItems([
116
+ { value: "assets", label: "Project assets" },
117
+ { value: "api", label: "API collection" },
118
+ ]);
119
+
120
+ cards.addEventListener("monster-change", (event) => {
121
+ expect(event.detail.value).is.equal("api");
122
+ expect(cards.value).is.equal("api");
123
+ expect(
124
+ cards.shadowRoot
125
+ .querySelector('[data-choice-value="api"]')
126
+ .getAttribute("aria-checked"),
127
+ ).is.equal("true");
128
+ done();
129
+ });
130
+
131
+ document.getElementById("test").appendChild(cards);
132
+ cards.shadowRoot.querySelector('[data-choice-value="api"]').click();
133
+ });
134
+
135
+ it("reads from and writes back to a form datasource", async function () {
136
+ this.timeout(6000);
137
+
138
+ document.getElementById("test").innerHTML = `
139
+ <monster-datasource-dom id="choice-ds">
140
+ <script type="application/json">
141
+ [
142
+ {
143
+ "source": "assets"
144
+ }
145
+ ]
146
+ </script>
147
+ </monster-datasource-dom>
148
+ <monster-form
149
+ id="choice-form"
150
+ data-monster-option-datasource-selector="#choice-ds"
151
+ data-monster-option-mapping-data=""
152
+ data-monster-option-mapping-index="0"
153
+ >
154
+ <monster-choice-cards
155
+ id="choice-source"
156
+ data-monster-attributes="value path:data.source"
157
+ data-monster-bind="path:data.source"
158
+ data-monster-options='{
159
+ "items": [
160
+ { "value": "assets", "label": "Assets", "contentSlot": "assets-card" },
161
+ { "value": "api", "label": "API", "contentSlot": "api-card" }
162
+ ]
163
+ }'
164
+ >
165
+ <span slot="assets-card">Assets</span>
166
+ <span slot="api-card">API</span>
167
+ </monster-choice-cards>
168
+ </monster-form>
169
+ `;
170
+
171
+ const datasource = document.getElementById("choice-ds");
172
+ const cards = document.getElementById("choice-source");
173
+
174
+ await waitForCondition(() => cards.value === "assets");
175
+
176
+ cards.select("api");
177
+ await waitForCondition(() => datasource.data?.[0]?.source === "api");
178
+ });
179
+
180
+ it("does not select disabled items", function () {
181
+ const cards = document.createElement("monster-choice-cards");
182
+ cards.setItems([
183
+ { value: "assets", label: "Project assets" },
184
+ { value: "api", label: "API collection", disabled: true },
185
+ ]);
186
+
187
+ document.getElementById("test").appendChild(cards);
188
+ cards.select("api");
189
+
190
+ expect(cards.value).is.equal(null);
191
+ });
192
+ });