@threadlabs/looma 0.14.6 → 0.14.8

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.
@@ -57,22 +57,35 @@ var _hoisted_16 = [
57
57
  "id",
58
58
  "aria-selected",
59
59
  "aria-disabled",
60
- "data-index"
60
+ "data-index",
61
+ "aria-labelledby",
62
+ "aria-describedby"
61
63
  ];
62
- var _hoisted_17 = { class: "primary" };
63
- var _hoisted_18 = ["id", "data-index"];
64
- var _hoisted_19 = {
64
+ var _hoisted_17 = {
65
+ key: 0,
66
+ class: "detail"
67
+ };
68
+ var _hoisted_18 = { class: "line" };
69
+ var _hoisted_19 = ["id"];
70
+ var _hoisted_20 = ["id"];
71
+ var _hoisted_21 = ["id"];
72
+ var _hoisted_22 = {
73
+ key: 1,
74
+ class: "primary"
75
+ };
76
+ var _hoisted_23 = ["id", "data-index"];
77
+ var _hoisted_24 = {
65
78
  key: 1,
66
79
  class: "message"
67
80
  };
68
- var _hoisted_20 = ["id", "hidden"];
69
- var _hoisted_21 = {
81
+ var _hoisted_25 = ["id", "hidden"];
82
+ var _hoisted_26 = {
70
83
  class: "sr-only",
71
84
  role: "status",
72
85
  "aria-live": "polite",
73
86
  "aria-atomic": "true"
74
87
  };
75
- var _hoisted_22 = {
88
+ var _hoisted_27 = {
76
89
  class: "authored-options",
77
90
  hidden: "",
78
91
  "aria-hidden": "true",
@@ -104,6 +117,7 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
104
117
  type: Boolean,
105
118
  default: false
106
119
  },
120
+ filter: { default: "label" },
107
121
  help: { default: "" },
108
122
  items: {},
109
123
  label: { default: "" },
@@ -188,31 +202,37 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
188
202
  "display",
189
203
  "trigger"
190
204
  ].includes(key));
191
- const isValueChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
205
+ const isValueChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && (detail["option"]["description"] === void 0 || typeof detail["option"]["description"] === "string") && (detail["option"]["tag"] === void 0 || detail["option"]["tag"] !== null && typeof detail["option"]["tag"] === "object" && !Array.isArray(detail["option"]["tag"]) && typeof detail["option"]["tag"]["label"] === "string" && (detail["option"]["tag"]["tone"] === void 0 || detail["option"]["tag"]["tone"] === "neutral" || detail["option"]["tag"]["tone"] === "accent" || detail["option"]["tag"]["tone"] === "info" || detail["option"]["tag"]["tone"] === "success" || detail["option"]["tag"]["tone"] === "warning" || detail["option"]["tag"]["tone"] === "danger") && Object.keys(detail["option"]["tag"]).every((key) => ["label", "tone"].includes(key))) && Object.keys(detail["option"]).every((key) => [
192
206
  "id",
193
207
  "value",
194
208
  "label",
195
209
  "group",
196
- "disabled"
210
+ "disabled",
211
+ "description",
212
+ "tag"
197
213
  ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
198
214
  "value",
199
215
  "query",
200
216
  "option",
201
217
  "kind",
202
218
  "trigger"
203
- ].includes(key)) || Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && Object.keys(item).every((key) => [
219
+ ].includes(key)) || Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && (item["description"] === void 0 || typeof item["description"] === "string") && (item["tag"] === void 0 || item["tag"] !== null && typeof item["tag"] === "object" && !Array.isArray(item["tag"]) && typeof item["tag"]["label"] === "string" && (item["tag"]["tone"] === void 0 || item["tag"]["tone"] === "neutral" || item["tag"]["tone"] === "accent" || item["tag"]["tone"] === "info" || item["tag"]["tone"] === "success" || item["tag"]["tone"] === "warning" || item["tag"]["tone"] === "danger") && Object.keys(item["tag"]).every((key) => ["label", "tone"].includes(key))) && Object.keys(item).every((key) => [
204
220
  "id",
205
221
  "value",
206
222
  "label",
207
223
  "group",
208
- "disabled"
224
+ "disabled",
225
+ "description",
226
+ "tag"
209
227
  ].includes(key)));
210
- const isFreeEntryDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
228
+ const isFreeEntryDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && (detail["option"]["description"] === void 0 || typeof detail["option"]["description"] === "string") && (detail["option"]["tag"] === void 0 || detail["option"]["tag"] !== null && typeof detail["option"]["tag"] === "object" && !Array.isArray(detail["option"]["tag"]) && typeof detail["option"]["tag"]["label"] === "string" && (detail["option"]["tag"]["tone"] === void 0 || detail["option"]["tag"]["tone"] === "neutral" || detail["option"]["tag"]["tone"] === "accent" || detail["option"]["tag"]["tone"] === "info" || detail["option"]["tag"]["tone"] === "success" || detail["option"]["tag"]["tone"] === "warning" || detail["option"]["tag"]["tone"] === "danger") && Object.keys(detail["option"]["tag"]).every((key) => ["label", "tone"].includes(key))) && Object.keys(detail["option"]).every((key) => [
211
229
  "id",
212
230
  "value",
213
231
  "label",
214
232
  "group",
215
- "disabled"
233
+ "disabled",
234
+ "description",
235
+ "tag"
216
236
  ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
217
237
  "value",
218
238
  "query",
@@ -231,19 +251,23 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
231
251
  "issues",
232
252
  "output"
233
253
  ].includes(key));
234
- const isOptionsChangeDetail = (detail) => Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && Object.keys(item).every((key) => [
254
+ const isOptionsChangeDetail = (detail) => Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && (item["description"] === void 0 || typeof item["description"] === "string") && (item["tag"] === void 0 || item["tag"] !== null && typeof item["tag"] === "object" && !Array.isArray(item["tag"]) && typeof item["tag"]["label"] === "string" && (item["tag"]["tone"] === void 0 || item["tag"]["tone"] === "neutral" || item["tag"]["tone"] === "accent" || item["tag"]["tone"] === "info" || item["tag"]["tone"] === "success" || item["tag"]["tone"] === "warning" || item["tag"]["tone"] === "danger") && Object.keys(item["tag"]).every((key) => ["label", "tone"].includes(key))) && Object.keys(item).every((key) => [
235
255
  "id",
236
256
  "value",
237
257
  "label",
238
258
  "group",
239
- "disabled"
259
+ "disabled",
260
+ "description",
261
+ "tag"
240
262
  ].includes(key)));
241
- const isAddItemDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["item"] !== null && typeof detail["item"] === "object" && !Array.isArray(detail["item"]) && typeof detail["item"]["id"] === "string" && typeof detail["item"]["value"] === "string" && typeof detail["item"]["label"] === "string" && (detail["item"]["group"] === void 0 || typeof detail["item"]["group"] === "string") && (detail["item"]["disabled"] === void 0 || typeof detail["item"]["disabled"] === "boolean") && Object.keys(detail["item"]).every((key) => [
263
+ const isAddItemDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["item"] !== null && typeof detail["item"] === "object" && !Array.isArray(detail["item"]) && typeof detail["item"]["id"] === "string" && typeof detail["item"]["value"] === "string" && typeof detail["item"]["label"] === "string" && (detail["item"]["group"] === void 0 || typeof detail["item"]["group"] === "string") && (detail["item"]["disabled"] === void 0 || typeof detail["item"]["disabled"] === "boolean") && (detail["item"]["description"] === void 0 || typeof detail["item"]["description"] === "string") && (detail["item"]["tag"] === void 0 || detail["item"]["tag"] !== null && typeof detail["item"]["tag"] === "object" && !Array.isArray(detail["item"]["tag"]) && typeof detail["item"]["tag"]["label"] === "string" && (detail["item"]["tag"]["tone"] === void 0 || detail["item"]["tag"]["tone"] === "neutral" || detail["item"]["tag"]["tone"] === "accent" || detail["item"]["tag"]["tone"] === "info" || detail["item"]["tag"]["tone"] === "success" || detail["item"]["tag"]["tone"] === "warning" || detail["item"]["tag"]["tone"] === "danger") && Object.keys(detail["item"]["tag"]).every((key) => ["label", "tone"].includes(key))) && Object.keys(detail["item"]).every((key) => [
242
264
  "id",
243
265
  "value",
244
266
  "label",
245
267
  "group",
246
- "disabled"
268
+ "disabled",
269
+ "description",
270
+ "tag"
247
271
  ].includes(key)) && Number.isInteger(detail["index"]) && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
248
272
  "item",
249
273
  "index",
@@ -462,8 +486,23 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
462
486
  id: `${uid.value}-option-${row.index}`,
463
487
  "aria-selected": row.selected,
464
488
  "aria-disabled": row.disabled,
465
- "data-index": row.index
466
- }, [renderSlot(_ctx.$slots, `option-${row.id}`, {}, () => [createElementVNode("span", _hoisted_17, toDisplayString(row.label), 1)], true)], 10, _hoisted_16);
489
+ "data-index": row.index,
490
+ "aria-labelledby": row.labelledBy ?? void 0,
491
+ "aria-describedby": row.detail ?? void 0
492
+ }, [renderSlot(_ctx.$slots, `option-${row.id}`, {}, () => [row.detail ? (openBlock(), createElementBlock("span", _hoisted_17, [createElementVNode("span", _hoisted_18, [createElementVNode("span", {
493
+ class: "primary",
494
+ id: `${uid.value}-option-${row.index}-label`
495
+ }, toDisplayString(row.label), 9, _hoisted_19), row.tag ? (openBlock(), createBlock(UiBadge_default, {
496
+ key: 0,
497
+ tone: row.tag?.tone
498
+ }, {
499
+ default: withCtx(() => [createElementVNode("span", { id: `${uid.value}-option-${row.index}-tag` }, toDisplayString(row.tag?.label), 9, _hoisted_20)]),
500
+ _: 2
501
+ }, 1032, ["tone"])) : createCommentVNode("v-if", true)]), row.description ? (openBlock(), createElementBlock("span", {
502
+ key: 0,
503
+ class: "description",
504
+ id: `${uid.value}-option-${row.index}-description`
505
+ }, toDisplayString(row.description), 9, _hoisted_21)) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true), !row.detail ? (openBlock(), createElementBlock("span", _hoisted_22, toDisplayString(row.label), 1)) : createCommentVNode("v-if", true)], true)], 10, _hoisted_16);
467
506
  }), 128))], 8, _hoisted_14);
468
507
  }), 128)),
469
508
  creatable.value ? (openBlock(), createElementBlock("div", {
@@ -473,8 +512,8 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
473
512
  "aria-selected": "false",
474
513
  id: `${uid.value}-option-${createIndex.value}`,
475
514
  "data-index": createIndex.value
476
- }, toDisplayString(`Create “${raw.value}”`), 11, _hoisted_18)) : createCommentVNode("v-if", true),
477
- message.value ? (openBlock(), createElementBlock("div", _hoisted_19, toDisplayString(message.value), 1)) : createCommentVNode("v-if", true)
515
+ }, toDisplayString(`Create “${raw.value}”`), 11, _hoisted_23)) : createCommentVNode("v-if", true),
516
+ message.value ? (openBlock(), createElementBlock("div", _hoisted_24, toDisplayString(message.value), 1)) : createCommentVNode("v-if", true)
478
517
  ], 8, _hoisted_13), renderSlot(_ctx.$slots, "footer", {}, void 0, true)], 8, _hoisted_12),
479
518
  createElementVNode("div", {
480
519
  class: "message",
@@ -482,12 +521,12 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
482
521
  hidden: !validation.value.issues.length
483
522
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(validation.value.issues, (issue, index) => {
484
523
  return openBlock(), createElementBlock("div", { key: index }, toDisplayString(issue.message), 1);
485
- }), 128))], 8, _hoisted_20),
486
- createElementVNode("div", _hoisted_21, toDisplayString(statusText.value), 1),
487
- createElementVNode("div", _hoisted_22, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)
524
+ }), 128))], 8, _hoisted_25),
525
+ createElementVNode("div", _hoisted_26, toDisplayString(statusText.value), 1),
526
+ createElementVNode("div", _hoisted_27, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)
488
527
  ], 16, _hoisted_1);
489
528
  };
490
529
  }
491
- }), [["__scopeId", "data-v-fd4a871f"]]);
530
+ }), [["__scopeId", "data-v-10aa8368"]]);
492
531
  //#endregion
493
532
  export { UiCombobox_default as t };
@@ -1356,7 +1356,7 @@ input[data-v-bfcc98e1]:focus-visible {
1356
1356
  syntax: "*";
1357
1357
  inherits: false;
1358
1358
  }
1359
- [data-component~="ui-combobox"][data-v-fd4a871f] {
1359
+ [data-component~="ui-combobox"][data-v-10aa8368] {
1360
1360
  /* Hooks do not inherit, so the parts below read them from the root. */
1361
1361
  --_ui-combobox-label-text: var(--ui-combobox-label-text);
1362
1362
  --_ui-combobox-label-font-size: var(--ui-combobox-label-font-size);
@@ -1375,20 +1375,20 @@ input[data-v-bfcc98e1]:focus-visible {
1375
1375
  color: var(--ui-text-primary);
1376
1376
  font: inherit;
1377
1377
  }
1378
- label[data-v-fd4a871f] {
1378
+ label[data-v-10aa8368] {
1379
1379
  color: var(--_ui-combobox-label-text, var(--ui-text-primary));
1380
1380
  font-size: var(--_ui-combobox-label-font-size, var(--ui-font-size-sm));
1381
1381
  font-weight: 500;
1382
1382
  }
1383
1383
  /* The field and anything that annotates it sit on one row; the help button is beside the box,
1384
1384
  not inside it, because a control's box holds its value. */
1385
- .control[data-v-fd4a871f] {
1385
+ .control[data-v-10aa8368] {
1386
1386
  display: flex;
1387
1387
  align-items: center;
1388
1388
  gap: var(--ui-space-2);
1389
1389
  min-inline-size: 0;
1390
1390
  }
1391
- .field[data-v-fd4a871f] {
1391
+ .field[data-v-10aa8368] {
1392
1392
  flex: 1 1 auto;
1393
1393
  display: flex;
1394
1394
  min-inline-size: 0;
@@ -1400,14 +1400,14 @@ label[data-v-fd4a871f] {
1400
1400
  border-color var(--ui-motion-fast) var(--ui-motion-ease),
1401
1401
  box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
1402
1402
  }
1403
- .field[data-v-fd4a871f]:focus-within {
1403
+ .field[data-v-10aa8368]:focus-within {
1404
1404
  border-color: var(--ui-control-focus, var(--ui-accent-solid));
1405
1405
  box-shadow:
1406
1406
  var(--ui-control-inset),
1407
1407
  var(--ui-control-focus-halo-shadow);
1408
1408
  }
1409
1409
  /* A ghost icon button: the affordance is the mark, not a box around it. */
1410
- .help[data-v-fd4a871f] {
1410
+ .help[data-v-10aa8368] {
1411
1411
  flex: none;
1412
1412
  display: inline-flex;
1413
1413
  align-items: center;
@@ -1424,28 +1424,28 @@ label[data-v-fd4a871f] {
1424
1424
  background-color var(--ui-motion-fast) var(--ui-motion-ease),
1425
1425
  color var(--ui-motion-fast) var(--ui-motion-ease);
1426
1426
  }
1427
- .help[data-v-fd4a871f]:hover:enabled,
1428
- .help[aria-expanded="true"][data-v-fd4a871f] {
1427
+ .help[data-v-10aa8368]:hover:enabled,
1428
+ .help[aria-expanded="true"][data-v-10aa8368] {
1429
1429
  background: color-mix(in srgb, currentColor 8%, transparent);
1430
1430
  color: var(--ui-text-primary);
1431
1431
  }
1432
- .help[data-v-fd4a871f]:focus-visible {
1432
+ .help[data-v-10aa8368]:focus-visible {
1433
1433
  outline: none;
1434
1434
  box-shadow: var(--ui-focus-halo);
1435
1435
  }
1436
- .help[data-v-fd4a871f]:disabled {
1436
+ .help[data-v-10aa8368]:disabled {
1437
1437
  color: var(--ui-disabled-text);
1438
1438
  cursor: not-allowed;
1439
1439
  }
1440
- .help-icon[data-v-fd4a871f] {
1440
+ .help-icon[data-v-10aa8368] {
1441
1441
  inline-size: var(--ui-icon-size-sm);
1442
1442
  block-size: var(--ui-icon-size-sm);
1443
1443
  }
1444
- input[data-v-fd4a871f]::selection {
1444
+ input[data-v-10aa8368]::selection {
1445
1445
  background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
1446
1446
  color: inherit;
1447
1447
  }
1448
- input[data-v-fd4a871f] {
1448
+ input[data-v-10aa8368] {
1449
1449
  appearance: none;
1450
1450
  width: 100%;
1451
1451
  min-inline-size: 0;
@@ -1461,20 +1461,20 @@ input[data-v-fd4a871f] {
1461
1461
  margin: 0;
1462
1462
  outline: none;
1463
1463
  }
1464
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"][data-v-fd4a871f] {
1464
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"][data-v-10aa8368] {
1465
1465
  --_row: var(--ui-control-size-sm);
1466
1466
  }
1467
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-fd4a871f] {
1467
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-10aa8368] {
1468
1468
  min-block-size: calc(var(--_row) - 2px);
1469
1469
  padding: var(--ui-space-1) var(--ui-space-2);
1470
1470
  font-size: var(--ui-font-size-sm);
1471
1471
  }
1472
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"] input[data-v-fd4a871f] {
1472
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"] input[data-v-10aa8368] {
1473
1473
  min-block-size: calc(var(--ui-control-size-lg) - 2px);
1474
1474
  padding: var(--ui-space-3) var(--ui-space-4);
1475
1475
  font-size: var(--ui-font-size-md);
1476
1476
  }
1477
- button[data-v-fd4a871f] {
1477
+ button[data-v-10aa8368] {
1478
1478
  appearance: none;
1479
1479
  display: inline-grid;
1480
1480
  place-items: center;
@@ -1489,31 +1489,31 @@ button[data-v-fd4a871f] {
1489
1489
  padding: 0 var(--ui-space-1);
1490
1490
  cursor: pointer;
1491
1491
  }
1492
- .affordance-icon[data-v-fd4a871f] {
1492
+ .affordance-icon[data-v-10aa8368] {
1493
1493
  display: block;
1494
1494
  inline-size: var(--ui-icon-size-sm);
1495
1495
  block-size: var(--ui-icon-size-sm);
1496
1496
  }
1497
- button[data-v-fd4a871f]:hover:enabled {
1497
+ button[data-v-10aa8368]:hover:enabled {
1498
1498
  background: var(--ui-surface-muted);
1499
1499
  color: var(--ui-text-primary);
1500
1500
  }
1501
- button[data-v-fd4a871f]:focus-visible {
1501
+ button[data-v-10aa8368]:focus-visible {
1502
1502
  outline: none;
1503
1503
  background: var(--ui-surface-muted);
1504
1504
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
1505
1505
  }
1506
- input[data-v-fd4a871f]:disabled, button[data-v-fd4a871f]:disabled {
1506
+ input[data-v-10aa8368]:disabled, button[data-v-10aa8368]:disabled {
1507
1507
  color: var(--ui-disabled-text);
1508
1508
  cursor: not-allowed;
1509
1509
  }
1510
- .field[data-v-fd4a871f]:has(input:disabled) {
1510
+ .field[data-v-10aa8368]:has(input:disabled) {
1511
1511
  background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
1512
1512
  }
1513
- [data-component~="ui-combobox"][data-ui-combobox-state~="validationStatus=error"] .field[data-v-fd4a871f] {
1513
+ [data-component~="ui-combobox"][data-ui-combobox-state~="validationStatus=error"] .field[data-v-10aa8368] {
1514
1514
  border-color: var(--ui-danger-solid, var(--ui-accent-active));
1515
1515
  }
1516
- .popup[data-v-fd4a871f] {
1516
+ .popup[data-v-10aa8368] {
1517
1517
  box-sizing: border-box;
1518
1518
  min-inline-size: 12rem;
1519
1519
  max-inline-size: calc(100vw - 1rem);
@@ -1527,40 +1527,57 @@ input[data-v-fd4a871f]:disabled, button[data-v-fd4a871f]:disabled {
1527
1527
  color: var(--ui-text-primary);
1528
1528
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
1529
1529
  }
1530
- [hidden][data-v-fd4a871f] {
1530
+ [hidden][data-v-10aa8368] {
1531
1531
  display: none;
1532
1532
  }
1533
- .option[data-v-fd4a871f] {
1533
+ .option[data-v-10aa8368] {
1534
1534
  padding: var(--ui-space-2) var(--ui-space-3);
1535
1535
  border-radius: var(--ui-radius-sm);
1536
1536
  cursor: pointer;
1537
1537
  overflow-wrap: anywhere;
1538
1538
  }
1539
- .option[data-v-fd4a871f]:hover, .option.active[data-v-fd4a871f] {
1539
+ .option[data-v-10aa8368]:hover, .option.active[data-v-10aa8368] {
1540
1540
  background: var(--ui-surface-muted);
1541
1541
  outline: 1px solid var(--ui-focus-ring);
1542
1542
  outline-offset: -1px;
1543
1543
  }
1544
- .option[aria-disabled="true"][data-v-fd4a871f] {
1544
+ .option[aria-disabled="true"][data-v-10aa8368] {
1545
1545
  color: var(--ui-disabled-text);
1546
1546
  cursor: not-allowed;
1547
1547
  }
1548
- .primary[data-v-fd4a871f] {
1548
+ .primary[data-v-10aa8368] {
1549
1549
  display: block;
1550
1550
  color: var(--_ui-combobox-option-text, var(--ui-text-primary));
1551
1551
  font-weight: 500;
1552
1552
  }
1553
- .message[data-v-fd4a871f], .group[data-v-fd4a871f] {
1553
+ /* A row with a tag or a description: the label and its tag on one line, the description under them. */
1554
+ .detail[data-v-10aa8368] {
1555
+ display: grid;
1556
+ gap: var(--ui-space-0-5);
1557
+ min-inline-size: 0;
1558
+ }
1559
+ .line[data-v-10aa8368] {
1560
+ display: flex;
1561
+ flex-wrap: wrap;
1562
+ align-items: center;
1563
+ gap: var(--ui-space-2);
1564
+ }
1565
+ .description[data-v-10aa8368] {
1566
+ color: var(--ui-text-muted);
1567
+ font-size: var(--ui-font-size-sm);
1568
+ line-height: var(--ui-line-height-md);
1569
+ }
1570
+ .message[data-v-10aa8368], .group[data-v-10aa8368] {
1554
1571
  color: var(--_ui-combobox-message-text, var(--ui-text-secondary));
1555
1572
  font-weight: 400;
1556
1573
  font-size: var(--ui-font-size-sm);
1557
1574
  line-height: var(--ui-line-height-md);
1558
1575
  overflow-wrap: anywhere;
1559
1576
  }
1560
- .group[data-v-fd4a871f], .popup .message[data-v-fd4a871f] {
1577
+ .group[data-v-10aa8368], .popup .message[data-v-10aa8368] {
1561
1578
  padding: var(--ui-space-2) var(--ui-space-3);
1562
1579
  }
1563
- .sr-only[data-v-fd4a871f] {
1580
+ .sr-only[data-v-10aa8368] {
1564
1581
  position: absolute;
1565
1582
  inline-size: 1px;
1566
1583
  block-size: 1px;
@@ -1569,24 +1586,24 @@ input[data-v-fd4a871f]:disabled, button[data-v-fd4a871f]:disabled {
1569
1586
  white-space: nowrap;
1570
1587
  }
1571
1588
  @media (pointer: coarse) {
1572
- button[data-v-fd4a871f] {
1589
+ button[data-v-10aa8368] {
1573
1590
  min-inline-size: 2.75rem;
1574
1591
  min-block-size: 2.75rem;
1575
1592
  }
1576
1593
  /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
1577
1594
  body-size text: below 16px, iOS zooms the page into the focused field. */
1578
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"][data-v-fd4a871f] {
1595
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"][data-v-10aa8368] {
1579
1596
  --_row: var(--ui-control-min-block-size);
1580
1597
  }
1581
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-fd4a871f] {
1598
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-10aa8368] {
1582
1599
  font-size: inherit;
1583
1600
  }
1584
1601
  }
1585
1602
  @media (forced-colors: active) {
1586
- .field[data-v-fd4a871f], .popup[data-v-fd4a871f] {
1603
+ .field[data-v-10aa8368], .popup[data-v-10aa8368] {
1587
1604
  border-color: CanvasText;
1588
1605
  }
1589
- .option.active[data-v-fd4a871f] {
1606
+ .option.active[data-v-10aa8368] {
1590
1607
  outline-color: Highlight;
1591
1608
  }
1592
1609
  }
@@ -1594,12 +1611,12 @@ button[data-v-fd4a871f] {
1594
1611
  /* Multiple mode: every option carries a checkbox, so a list that takes several answers says so
1595
1612
  before anything is picked. aria-selected is the state; this draws it.
1596
1613
  Longhands, not shorthands: lowering drops a shorthand that omits a component. */
1597
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-fd4a871f] {
1614
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-10aa8368] {
1598
1615
  display: flex;
1599
1616
  gap: var(--ui-space-2);
1600
1617
  align-items: center;
1601
1618
  }
1602
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-fd4a871f]::before {
1619
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-10aa8368]::before {
1603
1620
  content: "";
1604
1621
  flex: none;
1605
1622
  inline-size: 1.125rem;
@@ -1614,7 +1631,7 @@ button[data-v-fd4a871f] {
1614
1631
  background-size: 0.7rem;
1615
1632
  }
1616
1633
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"]
1617
- .option[aria-selected="true"][data-v-fd4a871f]::before {
1634
+ .option[aria-selected="true"][data-v-10aa8368]::before {
1618
1635
  border-color: var(--ui-accent-solid);
1619
1636
  background-color: var(--ui-accent-solid);
1620
1637
  background-image: var(
@@ -1624,14 +1641,14 @@ button[data-v-fd4a871f] {
1624
1641
  }
1625
1642
 
1626
1643
  /* Multiple mode: chips wrap before the cursor on one flexible field line. */
1627
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .field[data-v-fd4a871f] {
1644
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .field[data-v-10aa8368] {
1628
1645
  flex-wrap: wrap;
1629
1646
  align-items: center;
1630
1647
  gap: var(--ui-space-1);
1631
1648
  min-block-size: var(--_ui-combobox-item-min-block-size, 2.5rem);
1632
1649
  padding: var(--ui-space-1);
1633
1650
  }
1634
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] input[data-v-fd4a871f] {
1651
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] input[data-v-10aa8368] {
1635
1652
  flex: 1 0 var(--_ui-combobox-item-input-min-inline-size, 5rem);
1636
1653
  width: auto;
1637
1654
  min-block-size: 1.75rem;
@@ -1639,25 +1656,25 @@ button[data-v-fd4a871f] {
1639
1656
  }
1640
1657
  /* A small multiple field starts at the small control height; chosen items still wrap it taller. */
1641
1658
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"]
1642
- .field[data-v-fd4a871f] {
1659
+ .field[data-v-10aa8368] {
1643
1660
  min-block-size: 0;
1644
1661
  padding: var(--ui-space-0-5);
1645
1662
  }
1646
1663
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"]
1647
- input[data-v-fd4a871f] {
1664
+ input[data-v-10aa8368] {
1648
1665
  min-block-size: calc(var(--_row) - 2px - 2 * var(--ui-space-0-5));
1649
1666
  padding: 0 var(--ui-space-1);
1650
1667
  }
1651
1668
  /* A large multiple field starts at the large control height, as sm starts at the small one. */
1652
1669
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"]
1653
- .field[data-v-fd4a871f] {
1670
+ .field[data-v-10aa8368] {
1654
1671
  min-block-size: 0;
1655
1672
  }
1656
1673
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"]
1657
- input[data-v-fd4a871f] {
1674
+ input[data-v-10aa8368] {
1658
1675
  min-block-size: calc(var(--ui-control-size-lg) - 2px - 2 * var(--ui-space-1));
1659
1676
  }
1660
- .item[data-v-fd4a871f] {
1677
+ .item[data-v-10aa8368] {
1661
1678
  appearance: none;
1662
1679
  display: inline-flex;
1663
1680
  min-inline-size: 0;
@@ -1671,16 +1688,16 @@ button[data-v-fd4a871f] {
1671
1688
  font: inherit;
1672
1689
  cursor: default;
1673
1690
  }
1674
- .item[data-v-fd4a871f]:focus-visible {
1691
+ .item[data-v-10aa8368]:focus-visible {
1675
1692
  outline: 2px solid var(--ui-focus-ring);
1676
1693
  outline-offset: 1px;
1677
1694
  }
1678
- .item[data-v-fd4a871f]:disabled {
1695
+ .item[data-v-10aa8368]:disabled {
1679
1696
  opacity: 0.6;
1680
1697
  }
1681
1698
 
1682
1699
  /* A component that sets its display still honours the hidden attribute on its root. */
1683
- [data-component~="ui-combobox"][hidden][data-v-fd4a871f] {
1700
+ [data-component~="ui-combobox"][hidden][data-v-10aa8368] {
1684
1701
  display: none;
1685
1702
  }
1686
1703