@threadlabs/looma 0.13.3 → 0.13.5

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.
@@ -123,12 +123,14 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
123
123
  type: Boolean,
124
124
  default: false
125
125
  },
126
+ selectedValues: {},
126
127
  size: { default: "md" },
127
128
  tokenSeparators: {},
128
129
  value: {}
129
130
  },
130
131
  emits: [
131
132
  "update:query",
133
+ "update:selectedValues",
132
134
  "update:value",
133
135
  "query-change",
134
136
  "value-change",
@@ -138,7 +140,8 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
138
140
  "options-change",
139
141
  "add-item",
140
142
  "remove-item",
141
- "create-item"
143
+ "create-item",
144
+ "selected-values-change"
142
145
  ],
143
146
  setup(__props, { expose: __expose, emit: __emit }) {
144
147
  const props = __props;
@@ -247,6 +250,7 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
247
250
  "trigger"
248
251
  ].includes(key));
249
252
  const isCreateItemDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["query", "trigger"].includes(key));
253
+ const isSelectedValuesChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Array.isArray(detail["selectedValues"]) && detail["selectedValues"].every((item) => typeof item === "string") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["selectedValues", "trigger"].includes(key));
250
254
  const dispatch = createDispatch(root, emit, {
251
255
  checks: {
252
256
  "query-change": isQueryChangeDetail,
@@ -257,9 +261,14 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
257
261
  "options-change": isOptionsChangeDetail,
258
262
  "add-item": isAddItemDetail,
259
263
  "remove-item": isAddItemDetail,
260
- "create-item": isCreateItemDetail
264
+ "create-item": isCreateItemDetail,
265
+ "selected-values-change": isSelectedValuesChangeDetail
261
266
  },
262
- modeled: ["query", "value"]
267
+ modeled: [
268
+ "query",
269
+ "selectedValues",
270
+ "value"
271
+ ]
263
272
  });
264
273
  const { host, ready } = useComponentHost(controllerModule.default, {
265
274
  root,
@@ -479,6 +488,6 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
479
488
  ], 16, _hoisted_1);
480
489
  };
481
490
  }
482
- }), [["__scopeId", "data-v-7616cc1c"]]);
491
+ }), [["__scopeId", "data-v-1482f333"]]);
483
492
  //#endregion
484
493
  export { UiCombobox_default as t };
@@ -59,6 +59,6 @@ var UiIconButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
59
59
  }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1);
60
60
  };
61
61
  }
62
- }), [["__scopeId", "data-v-a20a82b7"]]);
62
+ }), [["__scopeId", "data-v-006fa1b2"]]);
63
63
  //#endregion
64
64
  export { UiIconButton_default as t };
@@ -1094,7 +1094,7 @@ input[data-v-e122df08]:focus-visible {
1094
1094
  syntax: "*";
1095
1095
  inherits: false;
1096
1096
  }
1097
- [data-component~="ui-cluster"][data-v-d749e74b] {
1097
+ [data-component~="ui-cluster"][data-v-81b18ffc] {
1098
1098
  --_layout-gap: var(--ui-space-3);
1099
1099
  display: flex;
1100
1100
  flex-wrap: wrap;
@@ -1104,33 +1104,42 @@ input[data-v-e122df08]:focus-visible {
1104
1104
  max-inline-size: 100%;
1105
1105
  margin: 0;
1106
1106
  }
1107
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xs"][data-v-d749e74b] {
1107
+ [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xs"][data-v-81b18ffc] {
1108
1108
  --_layout-gap: var(--ui-space-2);
1109
1109
  }
1110
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=s"][data-v-d749e74b] {
1110
+ [data-component~="ui-cluster"][data-ui-cluster-state~="gap=s"][data-v-81b18ffc] {
1111
1111
  --_layout-gap: var(--ui-space-3);
1112
1112
  }
1113
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=m"][data-v-d749e74b] {
1113
+ [data-component~="ui-cluster"][data-ui-cluster-state~="gap=m"][data-v-81b18ffc] {
1114
1114
  --_layout-gap: var(--ui-space-4);
1115
1115
  }
1116
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=l"][data-v-d749e74b] {
1116
+ [data-component~="ui-cluster"][data-ui-cluster-state~="gap=l"][data-v-81b18ffc] {
1117
1117
  --_layout-gap: var(--ui-space-5);
1118
1118
  }
1119
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xl"][data-v-d749e74b] {
1119
+ [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xl"][data-v-81b18ffc] {
1120
1120
  --_layout-gap: var(--ui-space-6);
1121
1121
  }
1122
- [data-component~="ui-cluster"][data-ui-cluster-state~="align=start"][data-v-d749e74b] {
1122
+ [data-component~="ui-cluster"][data-ui-cluster-state~="align=start"][data-v-81b18ffc] {
1123
1123
  align-items: flex-start;
1124
1124
  }
1125
- [data-component~="ui-cluster"][data-ui-cluster-state~="align=end"][data-v-d749e74b] {
1125
+ [data-component~="ui-cluster"][data-ui-cluster-state~="align=end"][data-v-81b18ffc] {
1126
1126
  align-items: flex-end;
1127
1127
  }
1128
- [data-component~="ui-cluster"][data-ui-cluster-state~="align=stretch"][data-v-d749e74b] {
1128
+ [data-component~="ui-cluster"][data-ui-cluster-state~="align=stretch"][data-v-81b18ffc] {
1129
1129
  align-items: stretch;
1130
1130
  }
1131
+ [data-component~="ui-cluster"][data-ui-cluster-state~="justify=center"][data-v-81b18ffc] {
1132
+ justify-content: center;
1133
+ }
1134
+ [data-component~="ui-cluster"][data-ui-cluster-state~="justify=end"][data-v-81b18ffc] {
1135
+ justify-content: flex-end;
1136
+ }
1137
+ [data-component~="ui-cluster"][data-ui-cluster-state~="justify=between"][data-v-81b18ffc] {
1138
+ justify-content: space-between;
1139
+ }
1131
1140
 
1132
1141
  /* A component that sets its display still honours the hidden attribute on its root. */
1133
- [data-component~="ui-cluster"][hidden][data-v-d749e74b] {
1142
+ [data-component~="ui-cluster"][hidden][data-v-81b18ffc] {
1134
1143
  display: none;
1135
1144
  }
1136
1145
 
@@ -1318,7 +1327,7 @@ input[data-v-e122df08]:focus-visible {
1318
1327
  syntax: "*";
1319
1328
  inherits: false;
1320
1329
  }
1321
- [data-component~="ui-combobox"][data-v-7616cc1c] {
1330
+ [data-component~="ui-combobox"][data-v-1482f333] {
1322
1331
  /* Hooks do not inherit, so the parts below read them from the root. */
1323
1332
  --_ui-combobox-label-text: var(--ui-combobox-label-text);
1324
1333
  --_ui-combobox-label-font-size: var(--ui-combobox-label-font-size);
@@ -1337,20 +1346,20 @@ input[data-v-e122df08]:focus-visible {
1337
1346
  color: var(--ui-text-primary);
1338
1347
  font: inherit;
1339
1348
  }
1340
- label[data-v-7616cc1c] {
1349
+ label[data-v-1482f333] {
1341
1350
  color: var(--_ui-combobox-label-text, var(--ui-text-primary));
1342
1351
  font-size: var(--_ui-combobox-label-font-size, var(--ui-font-size-sm));
1343
1352
  font-weight: 500;
1344
1353
  }
1345
1354
  /* The field and anything that annotates it sit on one row; the help button is beside the box,
1346
1355
  not inside it, because a control's box holds its value. */
1347
- .control[data-v-7616cc1c] {
1356
+ .control[data-v-1482f333] {
1348
1357
  display: flex;
1349
1358
  align-items: center;
1350
1359
  gap: var(--ui-space-2);
1351
1360
  min-inline-size: 0;
1352
1361
  }
1353
- .field[data-v-7616cc1c] {
1362
+ .field[data-v-1482f333] {
1354
1363
  flex: 1 1 auto;
1355
1364
  display: flex;
1356
1365
  min-inline-size: 0;
@@ -1362,14 +1371,14 @@ label[data-v-7616cc1c] {
1362
1371
  border-color var(--ui-motion-fast) var(--ui-motion-ease),
1363
1372
  box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
1364
1373
  }
1365
- .field[data-v-7616cc1c]:focus-within {
1374
+ .field[data-v-1482f333]:focus-within {
1366
1375
  border-color: var(--ui-control-focus, var(--ui-accent-solid));
1367
1376
  box-shadow:
1368
1377
  var(--ui-control-inset),
1369
1378
  var(--ui-control-focus-halo-shadow);
1370
1379
  }
1371
1380
  /* A ghost icon button: the affordance is the mark, not a box around it. */
1372
- .help[data-v-7616cc1c] {
1381
+ .help[data-v-1482f333] {
1373
1382
  flex: none;
1374
1383
  display: inline-flex;
1375
1384
  align-items: center;
@@ -1386,28 +1395,28 @@ label[data-v-7616cc1c] {
1386
1395
  background-color var(--ui-motion-fast) var(--ui-motion-ease),
1387
1396
  color var(--ui-motion-fast) var(--ui-motion-ease);
1388
1397
  }
1389
- .help[data-v-7616cc1c]:hover:enabled,
1390
- .help[aria-expanded="true"][data-v-7616cc1c] {
1398
+ .help[data-v-1482f333]:hover:enabled,
1399
+ .help[aria-expanded="true"][data-v-1482f333] {
1391
1400
  background: color-mix(in srgb, currentColor 8%, transparent);
1392
1401
  color: var(--ui-text-primary);
1393
1402
  }
1394
- .help[data-v-7616cc1c]:focus-visible {
1403
+ .help[data-v-1482f333]:focus-visible {
1395
1404
  outline: none;
1396
1405
  box-shadow: var(--ui-focus-halo);
1397
1406
  }
1398
- .help[data-v-7616cc1c]:disabled {
1407
+ .help[data-v-1482f333]:disabled {
1399
1408
  color: var(--ui-disabled-text);
1400
1409
  cursor: not-allowed;
1401
1410
  }
1402
- .help-icon[data-v-7616cc1c] {
1411
+ .help-icon[data-v-1482f333] {
1403
1412
  inline-size: var(--ui-icon-size-sm);
1404
1413
  block-size: var(--ui-icon-size-sm);
1405
1414
  }
1406
- input[data-v-7616cc1c]::selection {
1415
+ input[data-v-1482f333]::selection {
1407
1416
  background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
1408
1417
  color: inherit;
1409
1418
  }
1410
- input[data-v-7616cc1c] {
1419
+ input[data-v-1482f333] {
1411
1420
  appearance: none;
1412
1421
  width: 100%;
1413
1422
  min-inline-size: 0;
@@ -1423,11 +1432,11 @@ input[data-v-7616cc1c] {
1423
1432
  margin: 0;
1424
1433
  outline: none;
1425
1434
  }
1426
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-7616cc1c] {
1435
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-1482f333] {
1427
1436
  min-block-size: calc(var(--ui-control-size-sm) - 2px);
1428
1437
  padding: var(--ui-space-1) var(--ui-space-2);
1429
1438
  }
1430
- button[data-v-7616cc1c] {
1439
+ button[data-v-1482f333] {
1431
1440
  appearance: none;
1432
1441
  display: inline-grid;
1433
1442
  place-items: center;
@@ -1442,31 +1451,31 @@ button[data-v-7616cc1c] {
1442
1451
  padding: 0 var(--ui-space-1);
1443
1452
  cursor: pointer;
1444
1453
  }
1445
- .affordance-icon[data-v-7616cc1c] {
1454
+ .affordance-icon[data-v-1482f333] {
1446
1455
  display: block;
1447
1456
  inline-size: var(--ui-icon-size-sm);
1448
1457
  block-size: var(--ui-icon-size-sm);
1449
1458
  }
1450
- button[data-v-7616cc1c]:hover:enabled {
1459
+ button[data-v-1482f333]:hover:enabled {
1451
1460
  background: var(--ui-surface-muted);
1452
1461
  color: var(--ui-text-primary);
1453
1462
  }
1454
- button[data-v-7616cc1c]:focus-visible {
1463
+ button[data-v-1482f333]:focus-visible {
1455
1464
  outline: none;
1456
1465
  background: var(--ui-surface-muted);
1457
1466
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
1458
1467
  }
1459
- input[data-v-7616cc1c]:disabled, button[data-v-7616cc1c]:disabled {
1468
+ input[data-v-1482f333]:disabled, button[data-v-1482f333]:disabled {
1460
1469
  color: var(--ui-disabled-text);
1461
1470
  cursor: not-allowed;
1462
1471
  }
1463
- .field[data-v-7616cc1c]:has(input:disabled) {
1472
+ .field[data-v-1482f333]:has(input:disabled) {
1464
1473
  background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
1465
1474
  }
1466
- [data-component~="ui-combobox"][data-ui-combobox-state~="validationStatus=error"] .field[data-v-7616cc1c] {
1475
+ [data-component~="ui-combobox"][data-ui-combobox-state~="validationStatus=error"] .field[data-v-1482f333] {
1467
1476
  border-color: var(--ui-danger-solid, var(--ui-accent-active));
1468
1477
  }
1469
- .popup[data-v-7616cc1c] {
1478
+ .popup[data-v-1482f333] {
1470
1479
  box-sizing: border-box;
1471
1480
  min-inline-size: 12rem;
1472
1481
  max-inline-size: calc(100vw - 1rem);
@@ -1480,40 +1489,40 @@ input[data-v-7616cc1c]:disabled, button[data-v-7616cc1c]:disabled {
1480
1489
  color: var(--ui-text-primary);
1481
1490
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
1482
1491
  }
1483
- [hidden][data-v-7616cc1c] {
1492
+ [hidden][data-v-1482f333] {
1484
1493
  display: none;
1485
1494
  }
1486
- .option[data-v-7616cc1c] {
1495
+ .option[data-v-1482f333] {
1487
1496
  padding: var(--ui-space-2) var(--ui-space-3);
1488
1497
  border-radius: var(--ui-radius-sm);
1489
1498
  cursor: pointer;
1490
1499
  overflow-wrap: anywhere;
1491
1500
  }
1492
- .option[data-v-7616cc1c]:hover, .option.active[data-v-7616cc1c] {
1501
+ .option[data-v-1482f333]:hover, .option.active[data-v-1482f333] {
1493
1502
  background: var(--ui-surface-muted);
1494
1503
  outline: 1px solid var(--ui-focus-ring);
1495
1504
  outline-offset: -1px;
1496
1505
  }
1497
- .option[aria-disabled="true"][data-v-7616cc1c] {
1506
+ .option[aria-disabled="true"][data-v-1482f333] {
1498
1507
  color: var(--ui-disabled-text);
1499
1508
  cursor: not-allowed;
1500
1509
  }
1501
- .primary[data-v-7616cc1c] {
1510
+ .primary[data-v-1482f333] {
1502
1511
  display: block;
1503
1512
  color: var(--_ui-combobox-option-text, var(--ui-text-primary));
1504
1513
  font-weight: 500;
1505
1514
  }
1506
- .message[data-v-7616cc1c], .group[data-v-7616cc1c] {
1515
+ .message[data-v-1482f333], .group[data-v-1482f333] {
1507
1516
  color: var(--_ui-combobox-message-text, var(--ui-text-secondary));
1508
1517
  font-weight: 400;
1509
1518
  font-size: var(--ui-font-size-sm);
1510
1519
  line-height: var(--ui-line-height-md);
1511
1520
  overflow-wrap: anywhere;
1512
1521
  }
1513
- .group[data-v-7616cc1c], .popup .message[data-v-7616cc1c] {
1522
+ .group[data-v-1482f333], .popup .message[data-v-1482f333] {
1514
1523
  padding: var(--ui-space-2) var(--ui-space-3);
1515
1524
  }
1516
- .sr-only[data-v-7616cc1c] {
1525
+ .sr-only[data-v-1482f333] {
1517
1526
  position: absolute;
1518
1527
  inline-size: 1px;
1519
1528
  block-size: 1px;
@@ -1522,16 +1531,16 @@ input[data-v-7616cc1c]:disabled, button[data-v-7616cc1c]:disabled {
1522
1531
  white-space: nowrap;
1523
1532
  }
1524
1533
  @media (pointer: coarse) {
1525
- button[data-v-7616cc1c] {
1534
+ button[data-v-1482f333] {
1526
1535
  min-inline-size: 2.75rem;
1527
1536
  min-block-size: 2.75rem;
1528
1537
  }
1529
1538
  }
1530
1539
  @media (forced-colors: active) {
1531
- .field[data-v-7616cc1c], .popup[data-v-7616cc1c] {
1540
+ .field[data-v-1482f333], .popup[data-v-1482f333] {
1532
1541
  border-color: CanvasText;
1533
1542
  }
1534
- .option.active[data-v-7616cc1c] {
1543
+ .option.active[data-v-1482f333] {
1535
1544
  outline-color: Highlight;
1536
1545
  }
1537
1546
  }
@@ -1539,12 +1548,12 @@ button[data-v-7616cc1c] {
1539
1548
  /* Multiple mode: every option carries a checkbox, so a list that takes several answers says so
1540
1549
  before anything is picked. aria-selected is the state; this draws it.
1541
1550
  Longhands, not shorthands: lowering drops a shorthand that omits a component. */
1542
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-7616cc1c] {
1551
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-1482f333] {
1543
1552
  display: flex;
1544
1553
  gap: var(--ui-space-2);
1545
1554
  align-items: center;
1546
1555
  }
1547
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-7616cc1c]::before {
1556
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-1482f333]::before {
1548
1557
  content: "";
1549
1558
  flex: none;
1550
1559
  inline-size: 1.125rem;
@@ -1559,7 +1568,7 @@ button[data-v-7616cc1c] {
1559
1568
  background-size: 0.7rem;
1560
1569
  }
1561
1570
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"]
1562
- .option[aria-selected="true"][data-v-7616cc1c]::before {
1571
+ .option[aria-selected="true"][data-v-1482f333]::before {
1563
1572
  border-color: var(--ui-accent-solid);
1564
1573
  background-color: var(--ui-accent-solid);
1565
1574
  background-image: var(
@@ -1569,20 +1578,20 @@ button[data-v-7616cc1c] {
1569
1578
  }
1570
1579
 
1571
1580
  /* Multiple mode: chips wrap before the cursor on one flexible field line. */
1572
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .field[data-v-7616cc1c] {
1581
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .field[data-v-1482f333] {
1573
1582
  flex-wrap: wrap;
1574
1583
  align-items: center;
1575
1584
  gap: var(--ui-space-1);
1576
1585
  min-block-size: var(--_ui-combobox-item-min-block-size, 2.5rem);
1577
1586
  padding: var(--ui-space-1);
1578
1587
  }
1579
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] input[data-v-7616cc1c] {
1588
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] input[data-v-1482f333] {
1580
1589
  flex: 1 0 var(--_ui-combobox-item-input-min-inline-size, 5rem);
1581
1590
  width: auto;
1582
1591
  min-block-size: 1.75rem;
1583
1592
  padding: var(--ui-space-0-5) var(--ui-space-1);
1584
1593
  }
1585
- .item[data-v-7616cc1c] {
1594
+ .item[data-v-1482f333] {
1586
1595
  appearance: none;
1587
1596
  display: inline-flex;
1588
1597
  min-inline-size: 0;
@@ -1596,16 +1605,16 @@ button[data-v-7616cc1c] {
1596
1605
  font: inherit;
1597
1606
  cursor: default;
1598
1607
  }
1599
- .item[data-v-7616cc1c]:focus-visible {
1608
+ .item[data-v-1482f333]:focus-visible {
1600
1609
  outline: 2px solid var(--ui-focus-ring);
1601
1610
  outline-offset: 1px;
1602
1611
  }
1603
- .item[data-v-7616cc1c]:disabled {
1612
+ .item[data-v-1482f333]:disabled {
1604
1613
  opacity: 0.6;
1605
1614
  }
1606
1615
 
1607
1616
  /* A component that sets its display still honours the hidden attribute on its root. */
1608
- [data-component~="ui-combobox"][hidden][data-v-7616cc1c] {
1617
+ [data-component~="ui-combobox"][hidden][data-v-1482f333] {
1609
1618
  display: none;
1610
1619
  }
1611
1620
 
@@ -3484,7 +3493,7 @@ svg[data-v-03a5b772-s] {
3484
3493
  syntax: "*";
3485
3494
  inherits: false;
3486
3495
  }
3487
- [data-component~="ui-icon-button"][data-v-a20a82b7] {
3496
+ [data-component~="ui-icon-button"][data-v-006fa1b2] {
3488
3497
  /* Hooks do not inherit, so the parts below read them from the root. */
3489
3498
  --_ui-icon-button-icon-size: var(--ui-icon-button-icon-size);
3490
3499
  --_ui-icon-button-icon-stroke-width: var(--ui-icon-button-icon-stroke-width);
@@ -3492,10 +3501,10 @@ svg[data-v-03a5b772-s] {
3492
3501
  display: inline-flex;
3493
3502
  color: var(--ui-text-secondary);
3494
3503
  }
3495
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-a20a82b7] {
3504
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-006fa1b2] {
3496
3505
  position: relative;
3497
3506
  }
3498
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-a20a82b7]::before {
3507
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-006fa1b2]::before {
3499
3508
  content: "";
3500
3509
  position: absolute;
3501
3510
  inset: 50% auto auto 50%;
@@ -3514,17 +3523,17 @@ svg[data-v-03a5b772-s] {
3514
3523
  * surface and icon. The root is the native button, so hiding it outright would hide the dot
3515
3524
  * too, and slotted icons sit outside this scope; `color: transparent` hides currentColor icons. */
3516
3525
  @media (hover: hover) and (pointer: fine) {
3517
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-a20a82b7]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-ui-proximity="near"], :hover, :focus-visible) {
3526
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-006fa1b2]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-ui-proximity="near"], :hover, :focus-visible) {
3518
3527
  border-color: transparent;
3519
3528
  background: transparent;
3520
3529
  box-shadow: none;
3521
3530
  color: transparent;
3522
3531
  }
3523
3532
  }
3524
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-a20a82b7]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
3533
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-006fa1b2]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
3525
3534
  opacity: 0;
3526
3535
  }
3527
- [data-component~="ui-icon-button"][data-v-a20a82b7] {
3536
+ [data-component~="ui-icon-button"][data-v-006fa1b2] {
3528
3537
  /* The size prop resolves here; --ui-icon-button-size overrides it on an element. */
3529
3538
  --_size: 2rem;
3530
3539
  appearance: none;
@@ -3550,7 +3559,7 @@ svg[data-v-03a5b772-s] {
3550
3559
  transform var(--ui-motion-fast) var(--ui-motion-ease);
3551
3560
  }
3552
3561
  @media (hover: none), (pointer: coarse) {
3553
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-a20a82b7]::before {
3562
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-006fa1b2]::before {
3554
3563
  opacity: 0;
3555
3564
  }
3556
3565
  }
@@ -3558,10 +3567,10 @@ svg[data-v-03a5b772-s] {
3558
3567
  /* A touch target without a bigger button: an invisible hit area, at least the control
3559
3568
  minimum, centred on the button (::before is the anticipatory guide). */
3560
3569
  @media (pointer: coarse) {
3561
- [data-component~="ui-icon-button"][data-v-a20a82b7] {
3570
+ [data-component~="ui-icon-button"][data-v-006fa1b2] {
3562
3571
  position: relative;
3563
3572
  }
3564
- [data-component~="ui-icon-button"][data-v-a20a82b7]::after {
3573
+ [data-component~="ui-icon-button"][data-v-006fa1b2]::after {
3565
3574
  content: "";
3566
3575
  position: absolute;
3567
3576
  inset: 50% auto auto 50%;
@@ -3570,10 +3579,10 @@ svg[data-v-03a5b772-s] {
3570
3579
  transform: translate(-50%, -50%);
3571
3580
  }
3572
3581
  }
3573
- html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-a20a82b7] {
3582
+ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-006fa1b2] {
3574
3583
  position: relative;
3575
3584
  }
3576
- html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-a20a82b7]::after {
3585
+ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-006fa1b2]::after {
3577
3586
  content: "";
3578
3587
  position: absolute;
3579
3588
  inset: 50% auto auto 50%;
@@ -3581,29 +3590,29 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-a
3581
3590
  block-size: max(100%, var(--ui-control-min-block-size));
3582
3591
  transform: translate(-50%, -50%);
3583
3592
  }
3584
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-a20a82b7] {
3593
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-006fa1b2] {
3585
3594
  --_size: 1.75rem;
3586
3595
  inline-size: var(--ui-icon-button-size, var(--_size));
3587
3596
  block-size: var(--ui-icon-button-size, var(--_size));
3588
3597
  min-inline-size: var(--ui-icon-button-size, var(--_size));
3589
3598
  min-block-size: var(--ui-icon-button-size, var(--_size));
3590
3599
  }
3591
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-a20a82b7] {
3600
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-006fa1b2] {
3592
3601
  --_size: 2.5rem;
3593
3602
  inline-size: var(--ui-icon-button-size, var(--_size));
3594
3603
  block-size: var(--ui-icon-button-size, var(--_size));
3595
3604
  min-inline-size: var(--ui-icon-button-size, var(--_size));
3596
3605
  min-block-size: var(--ui-icon-button-size, var(--_size));
3597
3606
  }
3598
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"][data-v-a20a82b7] {
3607
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"][data-v-006fa1b2] {
3599
3608
  border-radius: var(--ui-radius-round);
3600
3609
  }
3601
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-a20a82b7] {
3610
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-006fa1b2] {
3602
3611
  border-color: var(--ui-icon-button-border, var(--ui-border-default));
3603
3612
  background: var(--ui-icon-button-outline-surface, var(--ui-surface-default));
3604
3613
  color: var(--ui-icon-button-outline-text, var(--ui-text-primary));
3605
3614
  }
3606
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-a20a82b7] {
3615
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-006fa1b2] {
3607
3616
  background: var(--ui-icon-button-solid-surface, var(--ui-accent-solid));
3608
3617
  color: var(--ui-icon-button-solid-text, var(--ui-text-on-accent));
3609
3618
  box-shadow: var(
@@ -3611,43 +3620,47 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-a
3611
3620
  0 1px 2px color-mix(in srgb, var(--ui-accent-solid) 18%, transparent)
3612
3621
  );
3613
3622
  }
3614
- [data-component~="ui-icon-button"][data-v-a20a82b7]:hover:enabled {
3623
+ [data-component~="ui-icon-button"][data-v-006fa1b2]:hover:enabled {
3615
3624
  /* Derived from the text colour so the ghost hover shows on any background. */
3616
3625
  background: var(--ui-icon-button-hover-surface, color-mix(in srgb, currentColor 8%, transparent));
3617
3626
  color: var(--ui-icon-button-hover-text, var(--ui-text-primary));
3618
3627
  }
3619
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-a20a82b7]:hover:enabled {
3628
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-006fa1b2]:hover:enabled {
3620
3629
  border-color: var(--ui-icon-button-hover-border, var(--ui-border-strong));
3621
3630
  }
3622
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-a20a82b7]:hover:enabled {
3631
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-006fa1b2]:hover:enabled {
3623
3632
  background: var(--ui-icon-button-solid-hover-surface, var(--ui-accent-hover));
3624
3633
  }
3625
- [data-component~="ui-icon-button"][data-v-a20a82b7]:active:enabled {
3634
+ [data-component~="ui-icon-button"][data-v-006fa1b2]:active:enabled {
3626
3635
  transform: scale(var(--ui-icon-button-active-scale, 0.96));
3627
3636
  }
3628
- [data-component~="ui-icon-button"][data-v-a20a82b7]:focus-visible {
3637
+ [data-component~="ui-icon-button"][data-v-006fa1b2]:focus-visible {
3629
3638
  outline: none;
3630
3639
  box-shadow: var(--ui-focus-halo);
3631
3640
  }
3632
3641
 
3633
3642
  /* Disabled colours fall back to each variant's own; ghost takes only the icon colour. */
3634
3643
  /* Disabled washes the button out the way Button does: the same shape, one filter. */
3635
- [data-component~="ui-icon-button"][data-v-a20a82b7]:disabled {
3644
+ [data-component~="ui-icon-button"][data-v-006fa1b2]:disabled {
3636
3645
  filter: var(--ui-icon-button-disabled-filter, var(--ui-disabled-filter));
3637
3646
  opacity: var(--ui-icon-button-disabled-opacity, 1);
3638
3647
  cursor: not-allowed;
3639
3648
  box-shadow: none;
3640
3649
  }
3641
- [data-component~="ui-icon-button"][data-v-a20a82b7] {
3650
+ [data-component~="ui-icon-button"][data-v-006fa1b2] {
3642
3651
  --_icon-button-icon-default: var(--ui-icon-size-md);
3652
+ /* A slotted ui-icon is its own component, out of reach of the svg rule below; these are its
3653
+ defaults, which its own --ui-icon-* hooks still override. */
3654
+ --_ui-default-icon-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
3655
+ --_ui-default-icon-stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
3643
3656
  }
3644
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-a20a82b7] {
3657
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-006fa1b2] {
3645
3658
  --_icon-button-icon-default: var(--ui-icon-size-sm);
3646
3659
  }
3647
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-a20a82b7] {
3660
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-006fa1b2] {
3648
3661
  --_icon-button-icon-default: var(--ui-icon-size-lg);
3649
3662
  }
3650
- svg[data-v-a20a82b7-s] {
3663
+ svg[data-v-006fa1b2-s] {
3651
3664
  inline-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
3652
3665
  block-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
3653
3666
  flex-shrink: 0;
@@ -3655,7 +3668,7 @@ svg[data-v-a20a82b7-s] {
3655
3668
  }
3656
3669
 
3657
3670
  /* A component that sets its display still honours the hidden attribute on its root. */
3658
- [data-component~="ui-icon-button"][hidden][data-v-a20a82b7] {
3671
+ [data-component~="ui-icon-button"][hidden][data-v-006fa1b2] {
3659
3672
  display: none;
3660
3673
  }
3661
3674