@threadlabs/looma 0.6.0 → 0.6.1

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.
Files changed (37) hide show
  1. package/components/ui-button/ui-button.html +2 -2
  2. package/components/ui-cluster/ui-cluster.html +1 -1
  3. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +3 -3
  4. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +2 -2
  5. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +2 -2
  6. package/components/ui-editor-toolbar/ui-editor-toolbar.html +5 -3
  7. package/components/ui-stack/ui-stack.html +1 -1
  8. package/components/ui-toast-region/ui-toast-region.html +2 -2
  9. package/dist/index.js +1 -1
  10. package/package.json +1 -1
  11. package/styles/ui-cluster.css +1 -1
  12. package/styles/ui-editor-insert-table-grid.css +2 -2
  13. package/styles/ui-editor-table-context-menu.css +1 -1
  14. package/styles/ui-editor-table-toolbar.css +1 -1
  15. package/styles/ui-editor-toolbar.css +5 -3
  16. package/styles/ui-stack.css +1 -1
  17. package/styles/ui-toast-region.css +2 -2
  18. package/tokens.css +4 -0
  19. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  20. package/vanilla/UiEditorTableContextMenu.js +1 -1
  21. package/vanilla/UiEditorTableToolbar.js +1 -1
  22. package/vue/UiCluster.vue +1 -1
  23. package/vue/UiEditorInsertTableGrid.vue +3 -3
  24. package/vue/UiEditorTableContextMenu.vue +2 -2
  25. package/vue/UiEditorTableToolbar.vue +2 -2
  26. package/vue/UiEditorToolbar.vue +5 -3
  27. package/vue/UiStack.vue +1 -1
  28. package/vue/UiToastRegion.vue +2 -2
  29. package/vue/chunks/UiCluster.js +1 -1
  30. package/vue/chunks/UiEditorInsertTableGrid.js +3 -3
  31. package/vue/chunks/UiEditorTableContextMenu.js +2 -2
  32. package/vue/chunks/UiEditorTableToolbar.js +2 -2
  33. package/vue/chunks/UiEditorToolbar.js +1 -1
  34. package/vue/chunks/UiStack.js +1 -1
  35. package/vue/chunks/UiToastRegion.js +1 -1
  36. package/vue/components.css +131 -122
  37. package/vue/editor/index.js +2 -1
@@ -556,43 +556,43 @@ input[data-v-acf71232]:focus-visible {
556
556
  display: none;
557
557
  }
558
558
 
559
- [data-component~="ui-cluster"][data-v-06d4310a] {
559
+ [data-component~="ui-cluster"][data-v-6de2f2e4] {
560
560
  --_layout-gap: var(--ui-space-3);
561
561
  display: flex;
562
562
  flex-wrap: wrap;
563
563
  align-items: center;
564
- gap: var(--ui-layout-gap, var(--_layout-gap));
564
+ gap: var(--ui-cluster-gap, var(--_layout-gap));
565
565
  min-inline-size: 0;
566
566
  max-inline-size: 100%;
567
567
  margin: 0;
568
568
  }
569
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xs"][data-v-06d4310a] {
569
+ [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xs"][data-v-6de2f2e4] {
570
570
  --_layout-gap: var(--ui-space-2);
571
571
  }
572
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=s"][data-v-06d4310a] {
572
+ [data-component~="ui-cluster"][data-ui-cluster-state~="gap=s"][data-v-6de2f2e4] {
573
573
  --_layout-gap: var(--ui-space-3);
574
574
  }
575
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=m"][data-v-06d4310a] {
575
+ [data-component~="ui-cluster"][data-ui-cluster-state~="gap=m"][data-v-6de2f2e4] {
576
576
  --_layout-gap: var(--ui-space-4);
577
577
  }
578
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=l"][data-v-06d4310a] {
578
+ [data-component~="ui-cluster"][data-ui-cluster-state~="gap=l"][data-v-6de2f2e4] {
579
579
  --_layout-gap: var(--ui-space-5);
580
580
  }
581
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xl"][data-v-06d4310a] {
581
+ [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xl"][data-v-6de2f2e4] {
582
582
  --_layout-gap: var(--ui-space-6);
583
583
  }
584
- [data-component~="ui-cluster"][data-ui-cluster-state~="align=start"][data-v-06d4310a] {
584
+ [data-component~="ui-cluster"][data-ui-cluster-state~="align=start"][data-v-6de2f2e4] {
585
585
  align-items: flex-start;
586
586
  }
587
- [data-component~="ui-cluster"][data-ui-cluster-state~="align=end"][data-v-06d4310a] {
587
+ [data-component~="ui-cluster"][data-ui-cluster-state~="align=end"][data-v-6de2f2e4] {
588
588
  align-items: flex-end;
589
589
  }
590
- [data-component~="ui-cluster"][data-ui-cluster-state~="align=stretch"][data-v-06d4310a] {
590
+ [data-component~="ui-cluster"][data-ui-cluster-state~="align=stretch"][data-v-6de2f2e4] {
591
591
  align-items: stretch;
592
592
  }
593
593
 
594
594
  /* A component that sets its display still honours the hidden attribute on its root. */
595
- [data-component~="ui-cluster"][hidden][data-v-06d4310a] {
595
+ [data-component~="ui-cluster"][hidden][data-v-6de2f2e4] {
596
596
  display: none;
597
597
  }
598
598
 
@@ -1339,26 +1339,26 @@ from {
1339
1339
  display: none;
1340
1340
  }
1341
1341
 
1342
- [data-component~="ui-editor-insert-table-grid"][data-v-c4064690] {
1342
+ [data-component~="ui-editor-insert-table-grid"][data-v-00e6602a] {
1343
1343
  padding: var(--ui-space-3);
1344
1344
  background: var(--ui-surface);
1345
1345
  border: 1px solid var(--ui-border);
1346
1346
  border-radius: var(--ui-radius-md);
1347
1347
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
1348
1348
  }
1349
- .hint[data-v-c4064690] {
1349
+ .hint[data-v-00e6602a] {
1350
1350
  margin: 0 0 var(--ui-space-2);
1351
1351
  font-size: var(--ui-font-size-sm);
1352
1352
  color: var(--ui-text-muted);
1353
1353
  }
1354
- .grid[data-v-c4064690] {
1354
+ .grid[data-v-00e6602a] {
1355
1355
  display: grid;
1356
- grid-template-columns: repeat(var(--ui-editor-table-grid-cols, 8), 1.25rem);
1357
- grid-template-rows: repeat(var(--ui-editor-table-grid-rows, 8), 1.25rem);
1356
+ grid-template-columns: repeat(var(--_cols, 8), 1.25rem);
1357
+ grid-template-rows: repeat(var(--_rows, 8), 1.25rem);
1358
1358
  gap: 2px;
1359
1359
  margin-bottom: var(--ui-space-2);
1360
1360
  }
1361
- .cell[data-v-c4064690] {
1361
+ .cell[data-v-00e6602a] {
1362
1362
  width: 1.25rem;
1363
1363
  height: 1.25rem;
1364
1364
  padding: 0;
@@ -1367,17 +1367,17 @@ from {
1367
1367
  background: var(--ui-surface);
1368
1368
  cursor: pointer;
1369
1369
  }
1370
- .cell.selected[data-v-c4064690] {
1370
+ .cell.selected[data-v-00e6602a] {
1371
1371
  background: var(--ui-accent-solid, var(--ui-accent));
1372
1372
  border-color: var(--ui-accent-solid, var(--ui-accent));
1373
1373
  }
1374
- .header[data-v-c4064690] {
1374
+ .header[data-v-00e6602a] {
1375
1375
  display: block;
1376
1376
  margin-bottom: var(--ui-space-2);
1377
1377
  font-size: var(--ui-font-size-sm);
1378
1378
  cursor: pointer;
1379
1379
  }
1380
- [data-component~="ui-editor-insert-table-grid"] .insert[data-v-c4064690] {
1380
+ [data-component~="ui-editor-insert-table-grid"] .insert[data-v-00e6602a] {
1381
1381
  width: 100%;
1382
1382
  padding: var(--ui-space-2) var(--ui-space-3);
1383
1383
  border: 1px solid var(--ui-border);
@@ -1387,10 +1387,10 @@ from {
1387
1387
  font-size: var(--ui-font-size-sm);
1388
1388
  cursor: pointer;
1389
1389
  }
1390
- [data-component~="ui-editor-insert-table-grid"] .insert[data-v-c4064690]:hover {
1390
+ [data-component~="ui-editor-insert-table-grid"] .insert[data-v-00e6602a]:hover {
1391
1391
  filter: brightness(1.05);
1392
1392
  }
1393
- [data-component~="ui-editor-insert-table-grid"][hidden][data-v-c4064690] {
1393
+ [data-component~="ui-editor-insert-table-grid"][hidden][data-v-00e6602a] {
1394
1394
  display: none;
1395
1395
  }
1396
1396
 
@@ -1656,7 +1656,7 @@ svg[data-v-b2b50d17] {
1656
1656
  display: none;
1657
1657
  }
1658
1658
 
1659
- [data-component~="ui-editor-table-context-menu"][data-v-7c984caf] {
1659
+ [data-component~="ui-editor-table-context-menu"][data-v-9cbdf038] {
1660
1660
  min-width: 14rem;
1661
1661
  max-width: min(17rem, calc(100vw - 24px));
1662
1662
  max-height: min(28rem, calc(100vh - 24px));
@@ -1672,12 +1672,12 @@ svg[data-v-b2b50d17] {
1672
1672
  overscroll-behavior: contain;
1673
1673
  scrollbar-width: thin;
1674
1674
  }
1675
- .section[data-v-7c984caf] {
1675
+ .section[data-v-9cbdf038] {
1676
1676
  display: flex;
1677
1677
  flex-direction: column;
1678
1678
  gap: 3px;
1679
1679
  }
1680
- [data-component~="ui-editor-table-context-menu"] button[data-v-7c984caf] {
1680
+ [data-component~="ui-editor-table-context-menu"] button[data-v-9cbdf038] {
1681
1681
  display: flex;
1682
1682
  align-items: center;
1683
1683
  gap: var(--ui-space-2);
@@ -1692,40 +1692,40 @@ svg[data-v-b2b50d17] {
1692
1692
  cursor: pointer;
1693
1693
  color: var(--ui-text);
1694
1694
  }
1695
- [data-component~="ui-editor-table-context-menu"] button[data-v-7c984caf] {
1695
+ [data-component~="ui-editor-table-context-menu"] button[data-v-9cbdf038] {
1696
1696
  --ui-icon-size: 1rem;
1697
1697
  --ui-icon-stroke-width: var(--ui-editor-toolbar-icon-stroke-width, 1.75);
1698
1698
  }
1699
- [data-component~="ui-editor-table-context-menu"] button[data-v-7c984caf]:hover:not(:disabled) {
1699
+ [data-component~="ui-editor-table-context-menu"] button[data-v-9cbdf038]:hover:not(:disabled) {
1700
1700
  background: var(--ui-surface-hover);
1701
1701
  }
1702
- [data-component~="ui-editor-table-context-menu"] button.selected[data-v-7c984caf] {
1702
+ [data-component~="ui-editor-table-context-menu"] button.selected[data-v-9cbdf038] {
1703
1703
  background: var(--ui-accent-subtle, rgb(59 130 246 / 0.1));
1704
1704
  }
1705
- [data-component~="ui-editor-table-context-menu"] button.danger[data-v-7c984caf] {
1705
+ [data-component~="ui-editor-table-context-menu"] button.danger[data-v-9cbdf038] {
1706
1706
  color: var(--ui-danger);
1707
1707
  }
1708
- .swatches[data-v-7c984caf] {
1708
+ .swatches[data-v-9cbdf038] {
1709
1709
  display: grid;
1710
1710
  grid-template-columns: repeat(3, minmax(0, 1fr));
1711
1711
  gap: 3px;
1712
1712
  }
1713
- .swatch-button[data-v-7c984caf] {
1713
+ .swatch-button[data-v-9cbdf038] {
1714
1714
  display: inline-flex;
1715
1715
  align-items: center;
1716
1716
  gap: var(--ui-space-2);
1717
1717
  }
1718
- .swatch[data-v-7c984caf] {
1718
+ .swatch[data-v-9cbdf038] {
1719
1719
  display: inline-flex;
1720
1720
  width: 1rem;
1721
1721
  height: 1rem;
1722
1722
  border-radius: 999px;
1723
1723
  border: 1px solid var(--ui-border);
1724
- background: var(--ui-editor-table-context-swatch, #fff);
1724
+ background: var(--_swatch, #fff);
1725
1725
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.35);
1726
1726
  flex-shrink: 0;
1727
1727
  }
1728
- .swatch.default[data-v-7c984caf] {
1728
+ .swatch.default[data-v-9cbdf038] {
1729
1729
  position: relative;
1730
1730
  background:
1731
1731
  linear-gradient(
@@ -1737,11 +1737,11 @@ svg[data-v-b2b50d17] {
1737
1737
  ),
1738
1738
  var(--ui-surface);
1739
1739
  }
1740
- .swatch-label[data-v-7c984caf] {
1740
+ .swatch-label[data-v-9cbdf038] {
1741
1741
  min-width: 0;
1742
1742
  white-space: nowrap;
1743
1743
  }
1744
- .heading[data-v-7c984caf] {
1744
+ .heading[data-v-9cbdf038] {
1745
1745
  padding: var(--ui-space-1) var(--ui-space-2);
1746
1746
  font-size: 0.6875rem;
1747
1747
  font-weight: 700;
@@ -1749,12 +1749,12 @@ svg[data-v-b2b50d17] {
1749
1749
  text-transform: uppercase;
1750
1750
  color: var(--ui-text-muted);
1751
1751
  }
1752
- .sep[data-v-7c984caf] {
1752
+ .sep[data-v-9cbdf038] {
1753
1753
  height: 1px;
1754
1754
  background: var(--ui-border);
1755
1755
  margin: var(--ui-space-1) 0;
1756
1756
  }
1757
- [data-component~="ui-editor-table-context-menu"][hidden][data-v-7c984caf] {
1757
+ [data-component~="ui-editor-table-context-menu"][hidden][data-v-9cbdf038] {
1758
1758
  display: none;
1759
1759
  }
1760
1760
 
@@ -2029,7 +2029,7 @@ svg[data-v-b2b50d17] {
2029
2029
  display: none;
2030
2030
  }
2031
2031
 
2032
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"][data-v-c7ed049b] {
2032
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"][data-v-1066cfb2] {
2033
2033
  min-width: max-content;
2034
2034
  min-height: 100%;
2035
2035
  padding: 0;
@@ -2039,15 +2039,15 @@ svg[data-v-b2b50d17] {
2039
2039
  box-shadow: none;
2040
2040
  backdrop-filter: none;
2041
2041
  }
2042
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button[data-v-c7ed049b] {
2042
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button[data-v-1066cfb2] {
2043
2043
  min-height: 44px;
2044
2044
  background: transparent;
2045
2045
  }
2046
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.active[data-v-c7ed049b],
2047
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.selected[data-v-c7ed049b] {
2046
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.active[data-v-1066cfb2],
2047
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.selected[data-v-1066cfb2] {
2048
2048
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
2049
2049
  }
2050
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] .menu[data-v-c7ed049b] {
2050
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] .menu[data-v-1066cfb2] {
2051
2051
  top: auto;
2052
2052
  right: 0;
2053
2053
  bottom: calc(100% + var(--ui-space-2));
@@ -2055,7 +2055,7 @@ svg[data-v-b2b50d17] {
2055
2055
  overflow-y: auto;
2056
2056
  overscroll-behavior: contain;
2057
2057
  }
2058
- [data-component~="ui-editor-table-toolbar"][data-v-c7ed049b] {
2058
+ [data-component~="ui-editor-table-toolbar"][data-v-1066cfb2] {
2059
2059
  display: inline-flex;
2060
2060
  align-items: center;
2061
2061
  gap: var(--ui-space-1);
@@ -2066,21 +2066,21 @@ svg[data-v-b2b50d17] {
2066
2066
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
2067
2067
  backdrop-filter: blur(10px);
2068
2068
  }
2069
- .group[data-v-c7ed049b] {
2069
+ .group[data-v-1066cfb2] {
2070
2070
  display: inline-flex;
2071
2071
  align-items: center;
2072
2072
  gap: 2px;
2073
2073
  overflow: hidden;
2074
2074
  }
2075
- .sep[data-v-c7ed049b] {
2075
+ .sep[data-v-1066cfb2] {
2076
2076
  width: 1px;
2077
2077
  align-self: stretch;
2078
2078
  background: var(--ui-border);
2079
2079
  }
2080
- .overflow[data-v-c7ed049b] {
2080
+ .overflow[data-v-1066cfb2] {
2081
2081
  position: relative;
2082
2082
  }
2083
- [data-component~="ui-editor-table-toolbar"] button[data-v-c7ed049b] {
2083
+ [data-component~="ui-editor-table-toolbar"] button[data-v-1066cfb2] {
2084
2084
  display: inline-flex;
2085
2085
  align-items: center;
2086
2086
  justify-content: center;
@@ -2097,39 +2097,39 @@ svg[data-v-b2b50d17] {
2097
2097
  padding: var(--ui-space-2) var(--ui-space-2);
2098
2098
  white-space: nowrap;
2099
2099
  }
2100
- [data-component~="ui-editor-table-toolbar"] button[data-v-c7ed049b]:hover {
2100
+ [data-component~="ui-editor-table-toolbar"] button[data-v-1066cfb2]:hover {
2101
2101
  background: var(--ui-surface-hover);
2102
2102
  }
2103
- [data-component~="ui-editor-table-toolbar"] button.active[data-v-c7ed049b] {
2103
+ [data-component~="ui-editor-table-toolbar"] button.active[data-v-1066cfb2] {
2104
2104
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
2105
2105
  color: var(--ui-accent-active);
2106
2106
  }
2107
- .group button[data-v-c7ed049b] {
2107
+ .group button[data-v-1066cfb2] {
2108
2108
  border-radius: var(--ui-radius-sm);
2109
2109
  }
2110
- .group button + button[data-v-c7ed049b] {
2110
+ .group button + button[data-v-1066cfb2] {
2111
2111
  border-left: 0;
2112
2112
  }
2113
- [data-component~="ui-editor-table-toolbar"] .more[data-v-c7ed049b] {
2113
+ [data-component~="ui-editor-table-toolbar"] .more[data-v-1066cfb2] {
2114
2114
  border: 0;
2115
2115
  border-radius: var(--ui-radius-sm);
2116
2116
  }
2117
- [data-component~="ui-editor-table-toolbar"] button.danger[data-v-c7ed049b] {
2117
+ [data-component~="ui-editor-table-toolbar"] button.danger[data-v-1066cfb2] {
2118
2118
  color: var(--ui-danger);
2119
2119
  }
2120
- [data-component~="ui-editor-table-toolbar"][data-v-c7ed049b] {
2120
+ [data-component~="ui-editor-table-toolbar"][data-v-1066cfb2] {
2121
2121
  --ui-icon-size: var(--ui-editor-toolbar-icon-size, 1rem);
2122
2122
  --ui-icon-stroke-width: var(--ui-editor-toolbar-icon-stroke-width, 1.75);
2123
2123
  }
2124
- .chevron[data-v-c7ed049b] {
2124
+ .chevron[data-v-1066cfb2] {
2125
2125
  display: inline-flex;
2126
2126
  --ui-icon-size: 0.875rem;
2127
2127
  }
2128
- [data-component~="ui-editor-table-toolbar"] .icon-button[data-v-c7ed049b] {
2128
+ [data-component~="ui-editor-table-toolbar"] .icon-button[data-v-1066cfb2] {
2129
2129
  width: 32px;
2130
2130
  padding-inline: 0;
2131
2131
  }
2132
- .menu[data-v-c7ed049b] {
2132
+ .menu[data-v-1066cfb2] {
2133
2133
  position: absolute;
2134
2134
  top: calc(100% + var(--ui-space-2));
2135
2135
  right: 0;
@@ -2144,12 +2144,12 @@ svg[data-v-b2b50d17] {
2144
2144
  gap: 2px;
2145
2145
  z-index: 2;
2146
2146
  }
2147
- .menu-section + .menu-section[data-v-c7ed049b] {
2147
+ .menu-section + .menu-section[data-v-1066cfb2] {
2148
2148
  margin-top: var(--ui-space-1);
2149
2149
  padding-top: var(--ui-space-1);
2150
2150
  border-top: 1px solid color-mix(in srgb, var(--ui-border) 80%, transparent);
2151
2151
  }
2152
- .menu-heading[data-v-c7ed049b] {
2152
+ .menu-heading[data-v-1066cfb2] {
2153
2153
  padding: var(--ui-space-1) var(--ui-space-2);
2154
2154
  font-size: 0.6875rem;
2155
2155
  font-weight: 700;
@@ -2157,42 +2157,42 @@ svg[data-v-b2b50d17] {
2157
2157
  text-transform: uppercase;
2158
2158
  color: var(--ui-text-muted);
2159
2159
  }
2160
- .menu button[data-v-c7ed049b] {
2160
+ .menu button[data-v-1066cfb2] {
2161
2161
  display: flex;
2162
2162
  justify-content: flex-start;
2163
2163
  width: 100%;
2164
2164
  text-align: left;
2165
2165
  }
2166
- .swatches[data-v-c7ed049b] {
2166
+ .swatches[data-v-1066cfb2] {
2167
2167
  display: grid;
2168
2168
  grid-template-columns: repeat(3, minmax(0, 1fr));
2169
2169
  gap: 2px;
2170
2170
  }
2171
- [data-component~="ui-editor-table-toolbar"] .swatch-button[data-v-c7ed049b] {
2171
+ [data-component~="ui-editor-table-toolbar"] .swatch-button[data-v-1066cfb2] {
2172
2172
  gap: var(--ui-space-1);
2173
2173
  justify-content: flex-start;
2174
2174
  }
2175
- .swatch[data-v-c7ed049b] {
2175
+ .swatch[data-v-1066cfb2] {
2176
2176
  width: 14px;
2177
2177
  height: 14px;
2178
2178
  flex: 0 0 14px;
2179
2179
  border: 1px solid color-mix(in srgb, var(--ui-border) 80%, #000);
2180
2180
  border-radius: 3px;
2181
- background: var(--ui-editor-table-toolbar-swatch);
2181
+ background: var(--_swatch);
2182
2182
  }
2183
- .swatch.default[data-v-c7ed049b] {
2183
+ .swatch.default[data-v-1066cfb2] {
2184
2184
  background:
2185
2185
  linear-gradient(135deg, transparent 44%, var(--ui-danger) 46% 54%, transparent 56%),
2186
2186
  var(--ui-surface);
2187
2187
  }
2188
- .swatch-button.selected[data-v-c7ed049b] {
2188
+ .swatch-button.selected[data-v-1066cfb2] {
2189
2189
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
2190
2190
  }
2191
- [data-component~="ui-editor-table-toolbar"][hidden][data-v-c7ed049b] {
2191
+ [data-component~="ui-editor-table-toolbar"][hidden][data-v-1066cfb2] {
2192
2192
  display: none;
2193
2193
  }
2194
2194
 
2195
- [data-component~="ui-editor-toolbar"][data-v-472b5c16] {
2195
+ [data-component~="ui-editor-toolbar"][data-v-0da1a114] {
2196
2196
  position: sticky;
2197
2197
  top: 0;
2198
2198
  z-index: var(--ui-editor-toolbar-z-index, 10);
@@ -2203,26 +2203,28 @@ svg[data-v-b2b50d17] {
2203
2203
  padding: var(--ui-editor-toolbar-padding-block, 6px)
2204
2204
  var(--ui-editor-toolbar-padding-inline, 12px);
2205
2205
  min-height: var(--ui-editor-toolbar-min-height, 48px);
2206
- overflow-x: auto;
2207
- scrollbar-width: none;
2208
- white-space: nowrap;
2206
+ /* More controls than the column is wide is normal at a readable measure, so the row wraps.
2207
+ Scrolling hid the tail behind an invisible scrollbar. */
2208
+ flex-wrap: wrap;
2209
+ row-gap: var(--ui-editor-toolbar-row-gap, var(--ui-editor-toolbar-gap, 2px));
2209
2210
  background: var(--ui-editor-toolbar-surface, var(--ui-surface));
2210
2211
  border-bottom: 1px solid var(--ui-editor-toolbar-border, var(--ui-border));
2211
2212
  }
2212
- [data-component~="ui-editor-toolbar"][data-v-472b5c16]::-webkit-scrollbar {
2213
+ [data-component~="ui-editor-toolbar"][data-v-0da1a114]::-webkit-scrollbar {
2213
2214
  display: none;
2214
2215
  }
2215
- [data-component~="ui-editor-toolbar"] > [data-v-472b5c16-s] {
2216
+ [data-component~="ui-editor-toolbar"] > [data-v-0da1a114-s] {
2216
2217
  flex: 0 0 auto;
2217
2218
  }
2218
- .divider[data-v-472b5c16-s] {
2219
+ .divider[data-v-0da1a114-s] {
2219
2220
  width: 1px;
2220
2221
  height: 20px;
2221
2222
  background: var(--ui-editor-toolbar-divider, var(--ui-border));
2222
2223
  flex-shrink: 0;
2223
2224
  margin: 0 var(--ui-editor-toolbar-divider-margin, 4px);
2224
2225
  }
2225
- [data-component~="ui-editor-toolbar"][data-ui-editor-toolbar-state~="floating"][data-v-472b5c16] {
2226
+ [data-component~="ui-editor-toolbar"][data-ui-editor-toolbar-state~="floating"][data-v-0da1a114] {
2227
+ flex-wrap: nowrap;
2226
2228
  position: static;
2227
2229
  top: auto;
2228
2230
  width: max-content;
@@ -2244,7 +2246,7 @@ svg[data-v-b2b50d17] {
2244
2246
  backdrop-filter: blur(10px);
2245
2247
  }
2246
2248
  @media (max-width: 767px) {
2247
- [data-component~="ui-editor-toolbar"][data-v-472b5c16] {
2249
+ [data-component~="ui-editor-toolbar"][data-v-0da1a114] {
2248
2250
  position: fixed;
2249
2251
  top: auto;
2250
2252
  bottom: env(safe-area-inset-bottom);
@@ -2255,7 +2257,7 @@ svg[data-v-b2b50d17] {
2255
2257
  border-bottom: none;
2256
2258
  box-shadow: var(--ui-editor-toolbar-mobile-shadow, 0 -2px 8px rgb(0 0 0 / 0.06));
2257
2259
  }
2258
- [data-component~="ui-editor-toolbar"][data-ui-editor-toolbar-state~="floating"][data-v-472b5c16] {
2260
+ [data-component~="ui-editor-toolbar"][data-ui-editor-toolbar-state~="floating"][data-v-0da1a114] {
2259
2261
  position: static;
2260
2262
  inset: auto;
2261
2263
  min-height: auto;
@@ -2269,7 +2271,7 @@ svg[data-v-b2b50d17] {
2269
2271
  }
2270
2272
 
2271
2273
  /* Inside LoomaEditor's sticky shell, the shell is the sticky surface. */
2272
- .looma-editor__sticky-toolbar-shell [data-component~="ui-editor-toolbar"][data-v-472b5c16] {
2274
+ .looma-editor__sticky-toolbar-shell [data-component~="ui-editor-toolbar"][data-v-0da1a114] {
2273
2275
  position: static;
2274
2276
  min-height: var(--ui-editor-toolbar-min-height, 48px);
2275
2277
  overscroll-behavior-inline: contain;
@@ -2280,7 +2282,7 @@ svg[data-v-b2b50d17] {
2280
2282
 
2281
2283
  /* Inside LoomaEditor's mobile shell, the toolbar is a scroll-snapping strip. */
2282
2284
  .looma-editor__mobile-toolbar-shell
2283
- [data-component~="ui-editor-toolbar"][data-ui-editor-toolbar-state~="floating"][data-v-472b5c16] {
2285
+ [data-component~="ui-editor-toolbar"][data-ui-editor-toolbar-state~="floating"][data-v-0da1a114] {
2284
2286
  width: 100%;
2285
2287
  max-width: none;
2286
2288
  min-height: 100%;
@@ -2297,7 +2299,7 @@ svg[data-v-b2b50d17] {
2297
2299
  }
2298
2300
 
2299
2301
  /* A component that sets its display still honours the hidden attribute on its root. */
2300
- [data-component~="ui-editor-toolbar"][hidden][data-v-472b5c16] {
2302
+ [data-component~="ui-editor-toolbar"][hidden][data-v-0da1a114] {
2301
2303
  display: none;
2302
2304
  }
2303
2305
 
@@ -3394,52 +3396,52 @@ hr[aria-orientation="vertical"][data-v-f0034397] {
3394
3396
  display: none;
3395
3397
  }
3396
3398
 
3397
- [data-component~="ui-stack"][data-v-aa8062a9] {
3399
+ [data-component~="ui-stack"][data-v-9a903e2b] {
3398
3400
  --_layout-gap: var(--ui-space-4);
3399
3401
  display: flex;
3400
3402
  flex-direction: column;
3401
3403
  align-items: stretch;
3402
- gap: var(--ui-layout-gap, var(--_layout-gap));
3404
+ gap: var(--ui-stack-gap, var(--_layout-gap));
3403
3405
  min-inline-size: 0;
3404
3406
  max-inline-size: 100%;
3405
3407
  margin: 0;
3406
3408
  }
3407
- [data-component~="ui-stack"][data-ui-stack-state~="gap=xs"][data-v-aa8062a9] {
3409
+ [data-component~="ui-stack"][data-ui-stack-state~="gap=xs"][data-v-9a903e2b] {
3408
3410
  --_layout-gap: var(--ui-space-2);
3409
3411
  }
3410
- [data-component~="ui-stack"][data-ui-stack-state~="gap=s"][data-v-aa8062a9] {
3412
+ [data-component~="ui-stack"][data-ui-stack-state~="gap=s"][data-v-9a903e2b] {
3411
3413
  --_layout-gap: var(--ui-space-3);
3412
3414
  }
3413
- [data-component~="ui-stack"][data-ui-stack-state~="gap=m"][data-v-aa8062a9] {
3415
+ [data-component~="ui-stack"][data-ui-stack-state~="gap=m"][data-v-9a903e2b] {
3414
3416
  --_layout-gap: var(--ui-space-4);
3415
3417
  }
3416
- [data-component~="ui-stack"][data-ui-stack-state~="gap=l"][data-v-aa8062a9] {
3418
+ [data-component~="ui-stack"][data-ui-stack-state~="gap=l"][data-v-9a903e2b] {
3417
3419
  --_layout-gap: var(--ui-space-5);
3418
3420
  }
3419
- [data-component~="ui-stack"][data-ui-stack-state~="gap=xl"][data-v-aa8062a9] {
3421
+ [data-component~="ui-stack"][data-ui-stack-state~="gap=xl"][data-v-9a903e2b] {
3420
3422
  --_layout-gap: var(--ui-space-6);
3421
3423
  }
3422
- [data-component~="ui-stack"][data-ui-stack-state~="align=start"][data-v-aa8062a9] {
3424
+ [data-component~="ui-stack"][data-ui-stack-state~="align=start"][data-v-9a903e2b] {
3423
3425
  align-items: flex-start;
3424
3426
  }
3425
- [data-component~="ui-stack"][data-ui-stack-state~="align=center"][data-v-aa8062a9] {
3427
+ [data-component~="ui-stack"][data-ui-stack-state~="align=center"][data-v-9a903e2b] {
3426
3428
  align-items: center;
3427
3429
  }
3428
- [data-component~="ui-stack"][data-ui-stack-state~="align=end"][data-v-aa8062a9] {
3430
+ [data-component~="ui-stack"][data-ui-stack-state~="align=end"][data-v-9a903e2b] {
3429
3431
  align-items: flex-end;
3430
3432
  }
3431
- [data-component~="ui-stack"][data-ui-stack-state~="justify=center"][data-v-aa8062a9] {
3433
+ [data-component~="ui-stack"][data-ui-stack-state~="justify=center"][data-v-9a903e2b] {
3432
3434
  justify-content: center;
3433
3435
  }
3434
- [data-component~="ui-stack"][data-ui-stack-state~="justify=end"][data-v-aa8062a9] {
3436
+ [data-component~="ui-stack"][data-ui-stack-state~="justify=end"][data-v-9a903e2b] {
3435
3437
  justify-content: flex-end;
3436
3438
  }
3437
- [data-component~="ui-stack"][data-ui-stack-state~="justify=between"][data-v-aa8062a9] {
3439
+ [data-component~="ui-stack"][data-ui-stack-state~="justify=between"][data-v-9a903e2b] {
3438
3440
  justify-content: space-between;
3439
3441
  }
3440
3442
 
3441
3443
  /* A component that sets its display still honours the hidden attribute on its root. */
3442
- [data-component~="ui-stack"][hidden][data-v-aa8062a9] {
3444
+ [data-component~="ui-stack"][hidden][data-v-9a903e2b] {
3443
3445
  display: none;
3444
3446
  }
3445
3447
 
@@ -3746,7 +3748,7 @@ input[data-v-44eb48fd], input[data-v-44eb48fd]::after {
3746
3748
  display: none;
3747
3749
  }
3748
3750
 
3749
- [data-component~="ui-toast-region"][data-v-7d8dab78] {
3751
+ [data-component~="ui-toast-region"][data-v-660faa24] {
3750
3752
  position: fixed;
3751
3753
  top: calc(var(--ui-space-4) + env(safe-area-inset-top));
3752
3754
  right: auto;
@@ -3768,14 +3770,14 @@ input[data-v-44eb48fd], input[data-v-44eb48fd]::after {
3768
3770
  box-shadow: none;
3769
3771
  pointer-events: none;
3770
3772
  }
3771
- [data-component~="ui-toast-region"][data-v-7d8dab78]:not(:popover-open) {
3773
+ [data-component~="ui-toast-region"][data-v-660faa24]:not(:popover-open) {
3772
3774
  display: none;
3773
3775
  }
3774
- [data-component~="ui-toast-region"] > .toast[data-v-7d8dab78],
3775
- [data-component~="ui-toast-region"] > [data-v-7d8dab78-s] {
3776
+ [data-component~="ui-toast-region"] > .toast[data-v-660faa24],
3777
+ [data-component~="ui-toast-region"] > [data-v-660faa24-s] {
3776
3778
  pointer-events: auto;
3777
3779
  }
3778
- .toast[data-v-7d8dab78] {
3780
+ .toast[data-v-660faa24] {
3779
3781
  display: grid;
3780
3782
  grid-template-columns: 1fr auto;
3781
3783
  gap: var(--ui-space-2);
@@ -3786,16 +3788,16 @@ input[data-v-44eb48fd], input[data-v-44eb48fd]::after {
3786
3788
  background: var(--ui-surface-elevated);
3787
3789
  color: var(--ui-text-primary);
3788
3790
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
3789
- animation: ui-toast-enter-7d8dab78 var(--ui-toast-enter-duration, 0.32s)
3791
+ animation: ui-toast-enter-660faa24 var(--ui-toast-region-enter-duration, 0.32s)
3790
3792
  var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
3791
3793
  }
3792
3794
 
3793
3795
  /* Leaving slides on down and fades; the controller removes the toast when this ends. */
3794
- .toast.closing[data-v-7d8dab78] {
3795
- animation: ui-toast-exit-7d8dab78 var(--ui-toast-exit-duration, 0.22s) var(--ui-motion-ease) both;
3796
+ .toast.closing[data-v-660faa24] {
3797
+ animation: ui-toast-exit-660faa24 var(--ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease) both;
3796
3798
  pointer-events: none;
3797
3799
  }
3798
- @keyframes ui-toast-enter-7d8dab78 {
3800
+ @keyframes ui-toast-enter-660faa24 {
3799
3801
  from {
3800
3802
  opacity: 0;
3801
3803
  transform: translateY(-1rem);
@@ -3805,7 +3807,7 @@ to {
3805
3807
  transform: translateY(0);
3806
3808
  }
3807
3809
  }
3808
- @keyframes ui-toast-exit-7d8dab78 {
3810
+ @keyframes ui-toast-exit-660faa24 {
3809
3811
  from {
3810
3812
  opacity: 1;
3811
3813
  transform: translateY(0);
@@ -3816,21 +3818,21 @@ to {
3816
3818
  }
3817
3819
  }
3818
3820
  @media (prefers-reduced-motion: reduce) {
3819
- .toast[data-v-7d8dab78], .toast.closing[data-v-7d8dab78] {
3821
+ .toast[data-v-660faa24], .toast.closing[data-v-660faa24] {
3820
3822
  animation: none;
3821
3823
  }
3822
3824
  }
3823
- .message[data-v-7d8dab78] {
3825
+ .message[data-v-660faa24] {
3824
3826
  min-inline-size: 0;
3825
3827
  align-self: center;
3826
3828
  }
3827
- .dismiss[data-v-7d8dab78] {
3829
+ .dismiss[data-v-660faa24] {
3828
3830
  align-self: center;
3829
3831
  margin-inline-end: calc(var(--ui-space-2) * -1);
3830
3832
  }
3831
3833
 
3832
3834
  /* A component that sets its display still honours the hidden attribute on its root. */
3833
- [data-component~="ui-toast-region"][hidden][data-v-7d8dab78] {
3835
+ [data-component~="ui-toast-region"][hidden][data-v-660faa24] {
3834
3836
  display: none;
3835
3837
  }
3836
3838
 
@@ -4237,7 +4239,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4237
4239
  padding: var(--ui-callout-padding-block) var(--ui-callout-padding-inline);
4238
4240
  border: var(--ui-callout-border-width) solid color-mix(in srgb, var(--ui-callout-border) 35%, transparent);
4239
4241
  border-inline-start: var(--ui-callout-leading-border-width) solid var(--ui-callout-border);
4240
- border-radius: var(--ui-radius-2);
4242
+ border-radius: var(--ui-radius-md);
4241
4243
  background: var(--ui-callout-surface);
4242
4244
  color: var(--ui-callout-text);
4243
4245
  }
@@ -4285,7 +4287,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4285
4287
  padding: var(--ui-space-4);
4286
4288
  overflow-x: auto;
4287
4289
  border: 1px solid var(--ui-border-default);
4288
- border-radius: var(--ui-radius-2);
4290
+ border-radius: var(--ui-radius-md);
4289
4291
  background: var(--ui-surface-muted);
4290
4292
  font-family: var(--ui-font-family-mono, ui-monospace, monospace);
4291
4293
  font-size: var(--ui-font-size-sm);
@@ -4293,7 +4295,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4293
4295
 
4294
4296
  .looma-editor .ProseMirror code {
4295
4297
  padding: 0.1em 0.3em;
4296
- border-radius: var(--ui-radius-1);
4298
+ border-radius: var(--ui-radius-sm);
4297
4299
  background: var(--ui-surface-subtle);
4298
4300
  font-family: var(--ui-font-family-mono, ui-monospace, monospace);
4299
4301
  font-size: 0.9em;
@@ -4311,7 +4313,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4311
4313
  }
4312
4314
 
4313
4315
  .looma-editor .ProseMirror mark {
4314
- border-radius: var(--ui-radius-1);
4316
+ border-radius: var(--ui-radius-sm);
4315
4317
  background: var(--ui-editor-highlight-bg, var(--ui-warning-soft));
4316
4318
  }
4317
4319
 
@@ -4354,7 +4356,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4354
4356
  max-width: 100%;
4355
4357
  height: auto;
4356
4358
  margin: var(--ui-space-3) 0;
4357
- border-radius: var(--ui-radius-2);
4359
+ border-radius: var(--ui-radius-md);
4358
4360
  }
4359
4361
 
4360
4362
  .looma-editor .ProseMirror img[data-looma-image]:focus-visible {
@@ -4378,7 +4380,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4378
4380
  margin-top: var(--ui-space-3);
4379
4381
  padding: var(--ui-space-2) var(--ui-space-3);
4380
4382
  border: 1px solid var(--ui-danger-solid);
4381
- border-radius: var(--ui-radius-2);
4383
+ border-radius: var(--ui-radius-md);
4382
4384
  background: var(--ui-danger-soft);
4383
4385
  color: var(--ui-text);
4384
4386
  font-size: var(--ui-font-size-sm);
@@ -4388,7 +4390,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4388
4390
  min-height: 2rem;
4389
4391
  padding: 0 var(--ui-space-3);
4390
4392
  border: 0;
4391
- border-radius: var(--ui-radius-1);
4393
+ border-radius: var(--ui-radius-sm);
4392
4394
  background: var(--ui-danger-solid);
4393
4395
  color: var(--ui-text-on-accent);
4394
4396
  cursor: pointer;
@@ -4416,7 +4418,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4416
4418
  justify-content: center;
4417
4419
  gap: var(--ui-space-3);
4418
4420
  border: 2px dashed var(--ui-accent-solid);
4419
- border-radius: var(--ui-radius-2);
4421
+ border-radius: var(--ui-radius-md);
4420
4422
  background: color-mix(in srgb, var(--ui-accent-soft) 92%, transparent);
4421
4423
  color: var(--ui-accent-active);
4422
4424
  font-size: var(--ui-font-size-sm);
@@ -4432,10 +4434,17 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4432
4434
 
4433
4435
  .looma-editor__toolbar-button {
4434
4436
  --ui-icon-button-size: var(--ui-editor-toolbar-button-size, 2rem);
4435
- --ui-icon-button-radius: var(--ui-editor-toolbar-button-radius, var(--ui-radius-1));
4437
+ --ui-icon-button-radius: var(--ui-editor-toolbar-button-radius, var(--ui-radius-sm));
4436
4438
  --ui-icon-button-icon-size: var(--ui-editor-toolbar-icon-size, 1rem);
4437
4439
  }
4438
4440
 
4441
+ .looma-editor__toolbar-button[data-active="true"] {
4442
+ --ui-icon-button-surface: var(--ui-editor-toolbar-active-surface, var(--ui-accent-subtle));
4443
+ --ui-icon-button-text: var(--ui-editor-toolbar-active-text, var(--ui-accent-active));
4444
+ color: var(--ui-editor-toolbar-active-text, var(--ui-accent-active));
4445
+ box-shadow: inset 0 0 0 1px var(--ui-editor-toolbar-active-border, color-mix(in srgb, var(--ui-accent) 40%, transparent));
4446
+ }
4447
+
4439
4448
  .looma-editor__toolbar-button > .looma-icon {
4440
4449
  width: var(--ui-editor-toolbar-icon-size, 1rem);
4441
4450
  height: var(--ui-editor-toolbar-icon-size, 1rem);
@@ -4447,7 +4456,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4447
4456
  top: var(--ui-editor-sticky-toolbar-top, 0);
4448
4457
  z-index: var(--ui-editor-toolbar-z-index, 10);
4449
4458
  min-width: 0;
4450
- background: var(--ui-editor-toolbar-bg, var(--ui-surface, #fff));
4459
+ background: var(--ui-editor-toolbar-surface, var(--ui-surface, #fff));
4451
4460
  border-bottom: 1px solid var(--ui-editor-toolbar-border, var(--ui-border, #e5e7eb));
4452
4461
  }
4453
4462
 
@@ -4485,7 +4494,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4485
4494
  -webkit-overflow-scrolling: touch;
4486
4495
  scroll-snap-type: x mandatory;
4487
4496
  scrollbar-width: none;
4488
- background: var(--ui-editor-toolbar-bg, var(--ui-surface, #fff));
4497
+ background: var(--ui-editor-toolbar-surface, var(--ui-surface, #fff));
4489
4498
  border-top: 1px solid var(--ui-editor-toolbar-border, var(--ui-border, #e5e7eb));
4490
4499
  box-shadow: var(--ui-editor-toolbar-mobile-shadow, 0 -2px 8px rgb(0 0 0 / 0.06));
4491
4500
  }
@@ -4508,7 +4517,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4508
4517
  display: inline-flex;
4509
4518
  align-items: center;
4510
4519
  justify-content: center;
4511
- gap: var(--ui-space-1-5, 6px);
4520
+ gap: var(--ui-space-2);
4512
4521
  min-width: 44px;
4513
4522
  min-height: 44px;
4514
4523
  padding: 0 var(--ui-space-3, 12px);
@@ -4642,7 +4651,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-hand
4642
4651
  left: calc(100% + 6px);
4643
4652
  width: max-content;
4644
4653
  padding: var(--ui-space-1, 4px) var(--ui-space-2, 8px);
4645
- border-radius: var(--ui-radius-1, 4px);
4654
+ border-radius: var(--ui-radius-sm, 4px);
4646
4655
  background: var(--ui-text-primary, #1a1a1a);
4647
4656
  color: var(--ui-surface-elevated, #fff);
4648
4657
  font-size: var(--ui-font-size-xs, 0.75rem);