@threadlabs/looma 0.18.0 → 0.18.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.
@@ -729,7 +729,7 @@ svg[data-v-7dbd4f40],
729
729
  syntax: "*";
730
730
  inherits: false;
731
731
  }
732
- [data-component~="ui-button"][data-v-a89a1895] {
732
+ [data-component~="ui-button"][data-v-720dbd9f] {
733
733
  --_hue: var(--ui-accent);
734
734
  --_hue-hover: var(--ui-accent-hover);
735
735
  --_hue-active: var(--ui-accent-active);
@@ -748,15 +748,15 @@ svg[data-v-7dbd4f40],
748
748
  vertical-align: middle;
749
749
  color: var(--_tone-text);
750
750
  }
751
- [data-component~="ui-button"][data-ui-button-state~="align=start"][data-v-a89a1895] {
751
+ [data-component~="ui-button"][data-ui-button-state~="align=start"][data-v-720dbd9f] {
752
752
  justify-content: flex-start;
753
753
  text-align: start;
754
754
  }
755
- [data-component~="ui-button"][data-ui-button-state~="stretch"][data-v-a89a1895] {
755
+ [data-component~="ui-button"][data-ui-button-state~="stretch"][data-v-720dbd9f] {
756
756
  display: flex;
757
757
  inline-size: 100%;
758
758
  }
759
- [data-component~="ui-button"][data-v-a89a1895] {
759
+ [data-component~="ui-button"][data-v-720dbd9f] {
760
760
  appearance: none;
761
761
  min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
762
762
  border-style: solid;
@@ -784,27 +784,27 @@ svg[data-v-7dbd4f40],
784
784
  }
785
785
 
786
786
  /* An anchor keeps the boxed button look even when an app styles ordinary links. */
787
- [data-component~="ui-button"][data-v-a89a1895]:is(a) {
787
+ [data-component~="ui-button"][data-v-720dbd9f]:is(a) {
788
788
  text-decoration: none;
789
789
  }
790
- .spinner-wrap[data-v-a89a1895] {
790
+ .spinner-wrap[data-v-720dbd9f] {
791
791
  display: inline-flex;
792
792
  flex: none;
793
793
  margin-inline-end: var(--ui-space-2);
794
794
  vertical-align: middle;
795
795
  }
796
796
  @supports (text-box-trim: trim-both) {
797
- [data-component~="ui-button"][data-v-a89a1895] {
797
+ [data-component~="ui-button"][data-v-720dbd9f] {
798
798
  text-box-trim: trim-both;
799
799
  text-box-edge: cap alphabetic;
800
800
  }
801
801
  }
802
- [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-a89a1895] {
802
+ [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-720dbd9f] {
803
803
  min-block-size: var(--ui-control-size-sm);
804
804
  padding: var(--ui-space-1) var(--ui-space-2);
805
805
  font-size: var(--ui-font-size-sm);
806
806
  }
807
- [data-component~="ui-button"][data-ui-button-state~="size=lg"][data-v-a89a1895] {
807
+ [data-component~="ui-button"][data-ui-button-state~="size=lg"][data-v-720dbd9f] {
808
808
  min-block-size: var(--ui-control-size-lg);
809
809
  padding: var(--ui-space-3) var(--ui-space-4);
810
810
  font-size: var(--ui-font-size-md);
@@ -812,29 +812,29 @@ svg[data-v-7dbd4f40],
812
812
 
813
813
  /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
814
814
  is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
815
- [data-component~="ui-button"][data-v-a89a1895]:hover:not(:disabled, [aria-disabled="true"]) {
815
+ [data-component~="ui-button"][data-v-720dbd9f]:hover:not(:disabled, [aria-disabled="true"]) {
816
816
  border-color: var(--ui-button-hover-border, var(--_tone-hover));
817
817
  background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
818
818
  }
819
819
 
820
820
  /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
821
- [data-component~="ui-button"][data-v-a89a1895]:active:not(:disabled, [aria-disabled="true"]) {
821
+ [data-component~="ui-button"][data-v-720dbd9f]:active:not(:disabled, [aria-disabled="true"]) {
822
822
  background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
823
823
  background-image: none;
824
824
  box-shadow: var(--ui-pressed);
825
825
  }
826
- [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-a89a1895],
827
- [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-a89a1895] {
826
+ [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-720dbd9f],
827
+ [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-720dbd9f] {
828
828
  border-color: var(--_tone);
829
829
  background-color: var(--_tone);
830
830
  color: var(--_on-tone);
831
831
  box-shadow: var(--ui-button-solid-shadow, var(--ui-raised));
832
832
  }
833
- :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-a89a1895], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-a89a1895]):hover:not(:disabled, [aria-disabled="true"]) {
833
+ :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-720dbd9f], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-720dbd9f]):hover:not(:disabled, [aria-disabled="true"]) {
834
834
  background-color: var(--_tone-hover);
835
835
  border-color: var(--_tone-hover);
836
836
  }
837
- :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-a89a1895], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-a89a1895]):active:not(:disabled, [aria-disabled="true"]) {
837
+ :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-720dbd9f], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-720dbd9f]):active:not(:disabled, [aria-disabled="true"]) {
838
838
  background-color: var(--_tone-active);
839
839
  border-color: var(--_tone-active);
840
840
  background-image: none;
@@ -843,43 +843,43 @@ svg[data-v-7dbd4f40],
843
843
 
844
844
  /* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
845
845
  destructive secondary action, not a special case. */
846
- [data-component~="ui-button"][data-ui-button-state~="tone=neutral"][data-v-a89a1895] {
846
+ [data-component~="ui-button"][data-ui-button-state~="tone=neutral"][data-v-720dbd9f] {
847
847
  --_hue: var(--ui-text);
848
848
  --_hue-hover: var(--ui-text);
849
849
  --_hue-active: var(--ui-text);
850
850
  --_hue-text: var(--ui-text);
851
851
  --_on-hue: var(--ui-surface);
852
852
  }
853
- [data-component~="ui-button"][data-ui-button-state~="tone=danger"][data-v-a89a1895],
854
- [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-a89a1895] {
853
+ [data-component~="ui-button"][data-ui-button-state~="tone=danger"][data-v-720dbd9f],
854
+ [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-720dbd9f] {
855
855
  --_hue: var(--ui-danger);
856
856
  --_hue-hover: var(--ui-danger-hover);
857
857
  --_hue-active: var(--ui-danger-hover);
858
858
  --_hue-text: var(--ui-danger-hover);
859
859
  --_on-hue: var(--ui-on-danger);
860
860
  }
861
- [data-component~="ui-button"][data-ui-button-state~="tone=success"][data-v-a89a1895] {
861
+ [data-component~="ui-button"][data-ui-button-state~="tone=success"][data-v-720dbd9f] {
862
862
  --_hue: var(--ui-success);
863
863
  --_hue-hover: color-mix(in srgb, var(--ui-success) 85%, #000);
864
864
  --_hue-active: color-mix(in srgb, var(--ui-success) 75%, #000);
865
865
  --_hue-text: color-mix(in srgb, var(--ui-success) 85%, #000);
866
866
  --_on-hue: var(--ui-surface);
867
867
  }
868
- [data-component~="ui-button"][data-ui-button-state~="tone=warning"][data-v-a89a1895] {
868
+ [data-component~="ui-button"][data-ui-button-state~="tone=warning"][data-v-720dbd9f] {
869
869
  --_hue: var(--ui-warning);
870
870
  --_hue-hover: color-mix(in srgb, var(--ui-warning) 85%, #000);
871
871
  --_hue-active: color-mix(in srgb, var(--ui-warning) 75%, #000);
872
872
  --_hue-text: color-mix(in srgb, var(--ui-warning) 85%, #000);
873
873
  --_on-hue: var(--ui-surface);
874
874
  }
875
- [data-component~="ui-button"][data-ui-button-state~="tone=info"][data-v-a89a1895] {
875
+ [data-component~="ui-button"][data-ui-button-state~="tone=info"][data-v-720dbd9f] {
876
876
  --_hue: var(--ui-info);
877
877
  --_hue-hover: color-mix(in srgb, var(--ui-info) 85%, #000);
878
878
  --_hue-active: color-mix(in srgb, var(--ui-info) 75%, #000);
879
879
  --_hue-text: color-mix(in srgb, var(--ui-info) 85%, #000);
880
880
  --_on-hue: var(--ui-surface);
881
881
  }
882
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-a89a1895] {
882
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-720dbd9f] {
883
883
  border-color: transparent;
884
884
  background: transparent;
885
885
  box-shadow: none;
@@ -887,24 +887,24 @@ svg[data-v-7dbd4f40],
887
887
  }
888
888
 
889
889
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
890
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-a89a1895]:hover:not(:disabled, [aria-disabled="true"]) {
890
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-720dbd9f]:hover:not(:disabled, [aria-disabled="true"]) {
891
891
  background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
892
892
  border-color: transparent;
893
893
  }
894
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-a89a1895]:active:not(:disabled, [aria-disabled="true"]) {
894
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-720dbd9f]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]) {
895
895
  background-color: var(--ui-button-ghost-active-surface, oklch(from var(--_tone) l c h / 16%));
896
896
  border-color: transparent;
897
897
  box-shadow: var(--ui-pressed);
898
898
  }
899
899
 
900
900
  /* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
901
- [data-component~="ui-button"][data-v-a89a1895]:focus-visible {
901
+ [data-component~="ui-button"][data-v-720dbd9f]:focus-visible {
902
902
  outline: none;
903
903
  box-shadow:
904
904
  var(--ui-button-shadow, var(--ui-raised)),
905
905
  var(--ui-focus-halo);
906
906
  }
907
- [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-a89a1895]:focus-visible {
907
+ [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-720dbd9f]:focus-visible {
908
908
  box-shadow:
909
909
  var(--ui-button-solid-shadow, var(--ui-raised)),
910
910
  var(--ui-focus-halo);
@@ -912,7 +912,7 @@ svg[data-v-7dbd4f40],
912
912
 
913
913
  /* A loading action stays visually active; only an explicitly disabled action takes the
914
914
  neutral disabled palette. Its flat surface and muted ink make the state unambiguous. */
915
- [data-component~="ui-button"][data-v-a89a1895]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
915
+ [data-component~="ui-button"][data-v-720dbd9f]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
916
916
  border-color: var(--ui-disabled-border);
917
917
  background-color: var(--ui-disabled-surface);
918
918
  color: var(--ui-disabled-text);
@@ -922,19 +922,19 @@ svg[data-v-7dbd4f40],
922
922
  background-image: none;
923
923
  box-shadow: none;
924
924
  }
925
- :is([data-component~="ui-button"][data-ui-button-state~="loading"][data-v-a89a1895], [data-component~="ui-button"][data-ui-button-state~="pending"][data-v-a89a1895]):focus-visible {
925
+ :is([data-component~="ui-button"][data-ui-button-state~="loading"][data-v-720dbd9f], [data-component~="ui-button"][data-ui-button-state~="pending"][data-v-720dbd9f]):focus-visible {
926
926
  box-shadow: var(--ui-focus-halo);
927
927
  }
928
928
 
929
929
  /* Ghost keeps no border, but gains the same neutral surface as other disabled buttons. */
930
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-a89a1895]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
930
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-720dbd9f]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
931
931
  background-color: var(--ui-disabled-surface);
932
932
  border-color: transparent;
933
933
  }
934
934
 
935
935
  /* The size states outrank :host, so sm is named too, or a small button would stay small. */
936
936
  @media (pointer: coarse) {
937
- [data-component~="ui-button"][data-v-a89a1895], [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-a89a1895] {
937
+ [data-component~="ui-button"][data-v-720dbd9f], [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-720dbd9f] {
938
938
  min-block-size: var(--ui-control-min-block-size);
939
939
  }
940
940
  }
@@ -944,11 +944,11 @@ svg[data-v-7dbd4f40],
944
944
  a link-style one keeps its text size, so a standalone one ("See all" under a list) needs the
945
945
  area. Only the link needs it: a hit area on every button would reach over its neighbours. */
946
946
  html[data-ui-input-modality="touch"]
947
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895] {
947
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-720dbd9f] {
948
948
  position: relative;
949
949
  }
950
950
  html[data-ui-input-modality="touch"]
951
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895]::after {
951
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-720dbd9f]::after {
952
952
  position: absolute;
953
953
  inset: 50% auto auto 50%;
954
954
  inline-size: max(100%, var(--ui-control-min-block-size));
@@ -959,7 +959,7 @@ html[data-ui-input-modality="touch"]
959
959
 
960
960
  /* Link: an inline text action. No box, padding, or minimum height (inline targets are exempt under
961
961
  WCAG 2.5.8); the inherited font; an underline that strengthens on hover; a visible focus ring. */
962
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895] {
962
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-720dbd9f] {
963
963
  display: inline;
964
964
  min-block-size: 0;
965
965
  padding: 0;
@@ -977,21 +977,21 @@ html[data-ui-input-modality="touch"]
977
977
  color var(--ui-motion-fast) var(--ui-motion-ease),
978
978
  text-decoration-color var(--ui-motion-fast) var(--ui-motion-ease);
979
979
  }
980
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895]:hover:not(:disabled, [aria-disabled="true"]) {
980
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-720dbd9f]:hover:not(:disabled, [aria-disabled="true"]) {
981
981
  color: var(--ui-button-link-hover-text, var(--ui-text-primary));
982
982
  text-decoration-color: currentColor;
983
983
  background: none;
984
984
  transform: none;
985
985
  }
986
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895]:active:not(:disabled, [aria-disabled="true"]) {
986
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-720dbd9f]:active:not(:disabled, [aria-disabled="true"]) {
987
987
  background: none;
988
988
  transform: none;
989
989
  }
990
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
990
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-720dbd9f]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
991
991
  background: none;
992
992
  border-color: transparent;
993
993
  }
994
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895]:focus-visible {
994
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-720dbd9f]:focus-visible {
995
995
  box-shadow: none;
996
996
  /* Fallback keeps the ring if the token is missing: an unresolved var() would void the outline. */
997
997
  outline: 2px solid var(--ui-focus-ring);
@@ -999,7 +999,7 @@ html[data-ui-input-modality="touch"]
999
999
  }
1000
1000
 
1001
1001
  /* A component that sets its display still honours the hidden attribute on its root. */
1002
- [data-component~="ui-button"][hidden][data-v-a89a1895] {
1002
+ [data-component~="ui-button"][hidden][data-v-720dbd9f] {
1003
1003
  display: none;
1004
1004
  }
1005
1005
 
@@ -4147,6 +4147,10 @@ svg[data-v-610f67a7-s] {
4147
4147
  syntax: "*";
4148
4148
  inherits: false;
4149
4149
  }
4150
+ @property --ui-icon-button-active-surface {
4151
+ syntax: "*";
4152
+ inherits: false;
4153
+ }
4150
4154
  @property --ui-icon-button-border {
4151
4155
  syntax: "*";
4152
4156
  inherits: false;
@@ -4215,7 +4219,7 @@ svg[data-v-610f67a7-s] {
4215
4219
  syntax: "*";
4216
4220
  inherits: false;
4217
4221
  }
4218
- [data-component~="ui-icon-button"][data-v-ae1ec9d2] {
4222
+ [data-component~="ui-icon-button"][data-v-9828be81] {
4219
4223
  /* Hooks do not inherit, so the parts below read them from the root. */
4220
4224
  --_ui-icon-button-icon-size: var(--ui-icon-button-icon-size);
4221
4225
  --_ui-icon-button-icon-stroke-width: var(--ui-icon-button-icon-stroke-width);
@@ -4223,10 +4227,10 @@ svg[data-v-610f67a7-s] {
4223
4227
  display: inline-flex;
4224
4228
  color: var(--ui-text-secondary);
4225
4229
  }
4226
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2] {
4230
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-9828be81] {
4227
4231
  position: relative;
4228
4232
  }
4229
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2]::before {
4233
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-9828be81]::before {
4230
4234
  content: "";
4231
4235
  position: absolute;
4232
4236
  inset: 50% auto auto 50%;
@@ -4240,13 +4244,13 @@ svg[data-v-610f67a7-s] {
4240
4244
  transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
4241
4245
  pointer-events: none;
4242
4246
  }
4243
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2]:disabled::before {
4247
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-9828be81]:disabled::before {
4244
4248
  opacity: 0;
4245
4249
  }
4246
4250
 
4247
4251
  /* At rest an anticipatory button shows only its guide dot. The icon grows into place when
4248
4252
  proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
4249
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-ae1ec9d2] {
4253
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-9828be81] {
4250
4254
  opacity: 1;
4251
4255
  transform: scale(1);
4252
4256
  transition:
@@ -4254,22 +4258,22 @@ svg[data-v-610f67a7-s] {
4254
4258
  transform calc(var(--ui-motion-fast) * 2) cubic-bezier(0.2, 1.4, 0.35, 1);
4255
4259
  }
4256
4260
  @media (hover: hover) and (pointer: fine) {
4257
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"], :disabled, [data-ui-proximity="near"], :hover, :focus-visible) {
4261
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-9828be81]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"], :disabled, [data-ui-proximity="near"], :hover, :focus-visible) {
4258
4262
  border-color: transparent;
4259
4263
  background-color: transparent;
4260
4264
  box-shadow: none;
4261
4265
  }
4262
4266
  [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"], :disabled, [data-ui-proximity="near"], :hover, :focus-visible)
4263
- .content[data-v-ae1ec9d2] {
4267
+ .content[data-v-9828be81] {
4264
4268
  opacity: 0;
4265
4269
  transform: scale(0.65);
4266
4270
  transition-duration: var(--ui-motion-fast);
4267
4271
  }
4268
4272
  }
4269
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
4273
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-9828be81]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
4270
4274
  opacity: 0;
4271
4275
  }
4272
- [data-component~="ui-icon-button"][data-v-ae1ec9d2] {
4276
+ [data-component~="ui-icon-button"][data-v-9828be81] {
4273
4277
  /* The size prop resolves here; --ui-icon-button-size overrides it on an element. */
4274
4278
  --_size: 2rem;
4275
4279
  appearance: none;
@@ -4295,7 +4299,7 @@ svg[data-v-610f67a7-s] {
4295
4299
  transform var(--ui-motion-fast) var(--ui-motion-ease);
4296
4300
  }
4297
4301
  @media (hover: none), (pointer: coarse) {
4298
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2]::before {
4302
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-9828be81]::before {
4299
4303
  opacity: 0;
4300
4304
  }
4301
4305
  }
@@ -4303,10 +4307,10 @@ svg[data-v-610f67a7-s] {
4303
4307
  /* A touch target without a bigger button: an invisible hit area, at least the control
4304
4308
  minimum, centred on the button (::before is the anticipatory guide). */
4305
4309
  @media (pointer: coarse) {
4306
- [data-component~="ui-icon-button"][data-v-ae1ec9d2] {
4310
+ [data-component~="ui-icon-button"][data-v-9828be81] {
4307
4311
  position: relative;
4308
4312
  }
4309
- [data-component~="ui-icon-button"][data-v-ae1ec9d2]::after {
4313
+ [data-component~="ui-icon-button"][data-v-9828be81]::after {
4310
4314
  content: "";
4311
4315
  position: absolute;
4312
4316
  inset: 50% auto auto 50%;
@@ -4315,10 +4319,10 @@ svg[data-v-610f67a7-s] {
4315
4319
  transform: translate(-50%, -50%);
4316
4320
  }
4317
4321
  }
4318
- html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-ae1ec9d2] {
4322
+ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-9828be81] {
4319
4323
  position: relative;
4320
4324
  }
4321
- html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-ae1ec9d2]::after {
4325
+ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-9828be81]::after {
4322
4326
  content: "";
4323
4327
  position: absolute;
4324
4328
  inset: 50% auto auto 50%;
@@ -4326,31 +4330,31 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-a
4326
4330
  block-size: max(100%, var(--ui-control-min-block-size));
4327
4331
  transform: translate(-50%, -50%);
4328
4332
  }
4329
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-ae1ec9d2] {
4333
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-9828be81] {
4330
4334
  --_size: 1.75rem;
4331
4335
  inline-size: var(--ui-icon-button-size, var(--_size));
4332
4336
  block-size: var(--ui-icon-button-size, var(--_size));
4333
4337
  min-inline-size: var(--ui-icon-button-size, var(--_size));
4334
4338
  min-block-size: var(--ui-icon-button-size, var(--_size));
4335
4339
  }
4336
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-ae1ec9d2] {
4340
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-9828be81] {
4337
4341
  --_size: 2.5rem;
4338
4342
  inline-size: var(--ui-icon-button-size, var(--_size));
4339
4343
  block-size: var(--ui-icon-button-size, var(--_size));
4340
4344
  min-inline-size: var(--ui-icon-button-size, var(--_size));
4341
4345
  min-block-size: var(--ui-icon-button-size, var(--_size));
4342
4346
  }
4343
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"][data-v-ae1ec9d2] {
4347
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"][data-v-9828be81] {
4344
4348
  border-radius: var(--ui-radius-round);
4345
4349
  }
4346
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-ae1ec9d2] {
4350
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-9828be81] {
4347
4351
  border-color: var(--ui-icon-button-border, var(--ui-control-border, var(--ui-border-strong)));
4348
4352
  background-color: var(--ui-icon-button-outline-surface, var(--ui-surface-default));
4349
4353
  background-image: var(--ui-raised-highlight);
4350
4354
  color: var(--ui-icon-button-outline-text, var(--ui-text-primary));
4351
4355
  box-shadow: var(--ui-raised);
4352
4356
  }
4353
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-ae1ec9d2] {
4357
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-9828be81] {
4354
4358
  background-color: var(--ui-icon-button-solid-surface, var(--ui-accent-solid));
4355
4359
  background-image: var(--ui-raised-highlight);
4356
4360
  color: var(--ui-icon-button-solid-text, var(--ui-text-on-accent));
@@ -4359,7 +4363,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-a
4359
4363
  0 1px 2px color-mix(in srgb, var(--ui-accent-solid) 18%, transparent)
4360
4364
  );
4361
4365
  }
4362
- [data-component~="ui-icon-button"][data-v-ae1ec9d2]:hover:enabled:not([aria-disabled="true"]) {
4366
+ [data-component~="ui-icon-button"][data-v-9828be81]:hover:enabled:not([aria-disabled="true"]) {
4363
4367
  /* Derived from the text colour so the ghost hover shows on any background. */
4364
4368
  background-color: var(
4365
4369
  --ui-icon-button-hover-surface,
@@ -4367,42 +4371,50 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-a
4367
4371
  );
4368
4372
  color: var(--ui-icon-button-hover-text, var(--ui-text-primary));
4369
4373
  }
4370
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-ae1ec9d2]:hover:enabled:not([aria-disabled="true"]) {
4374
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-9828be81]:hover:enabled:not([aria-disabled="true"]) {
4371
4375
  border-color: var(
4372
4376
  --ui-icon-button-hover-border,
4373
4377
  var(--ui-control-border-hover, var(--ui-control-border))
4374
4378
  );
4375
4379
  }
4376
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-ae1ec9d2]:hover:enabled:not([aria-disabled="true"]) {
4380
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-9828be81]:hover:enabled:not([aria-disabled="true"]) {
4377
4381
  background-color: var(--ui-icon-button-solid-hover-surface, var(--ui-accent-hover));
4378
4382
  }
4379
- [data-component~="ui-icon-button"][data-v-ae1ec9d2]:active:enabled:not([aria-disabled="true"]) {
4383
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][aria-expanded="true"][data-v-9828be81]:enabled:not([aria-disabled="true"]) {
4384
+ background-color: var(
4385
+ --ui-icon-button-active-surface,
4386
+ color-mix(in srgb, currentColor 16%, transparent)
4387
+ );
4388
+ color: var(--ui-icon-button-hover-text, var(--ui-text-primary));
4389
+ box-shadow: var(--ui-pressed);
4390
+ }
4391
+ [data-component~="ui-icon-button"][data-v-9828be81]:active:enabled:not([aria-disabled="true"]) {
4380
4392
  transform: scale(var(--ui-icon-button-active-scale, 0.96));
4381
4393
  }
4382
- :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"][data-v-ae1ec9d2], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"][data-v-ae1ec9d2]) {
4394
+ :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"][data-v-9828be81], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"][data-v-9828be81]) {
4383
4395
  cursor: progress;
4384
4396
  }
4385
- .content[data-v-ae1ec9d2] {
4397
+ .content[data-v-9828be81] {
4386
4398
  display: inline-flex;
4387
4399
  align-items: center;
4388
4400
  justify-content: center;
4389
4401
  }
4390
4402
  :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"])
4391
- .content[data-v-ae1ec9d2] {
4403
+ .content[data-v-9828be81] {
4392
4404
  display: none;
4393
4405
  }
4394
4406
  @media (prefers-reduced-motion: reduce) {
4395
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-ae1ec9d2] {
4407
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-9828be81] {
4396
4408
  transition: none;
4397
4409
  }
4398
4410
  }
4399
- [data-component~="ui-icon-button"][data-v-ae1ec9d2]:focus-visible {
4411
+ [data-component~="ui-icon-button"][data-v-9828be81]:focus-visible {
4400
4412
  outline: none;
4401
4413
  box-shadow: var(--ui-focus-halo);
4402
4414
  }
4403
4415
 
4404
4416
  /* Disabled is a flat neutral control, independent of the active variant's tone. */
4405
- [data-component~="ui-icon-button"][data-v-ae1ec9d2]:disabled {
4417
+ [data-component~="ui-icon-button"][data-v-9828be81]:disabled {
4406
4418
  border-color: var(--ui-disabled-border);
4407
4419
  background-color: var(--ui-disabled-surface);
4408
4420
  color: var(--ui-disabled-text);
@@ -4412,23 +4424,23 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-a
4412
4424
  box-shadow: none;
4413
4425
  background-image: none;
4414
4426
  }
4415
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][data-v-ae1ec9d2]:disabled {
4427
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][data-v-9828be81]:disabled {
4416
4428
  border-color: transparent;
4417
4429
  }
4418
- [data-component~="ui-icon-button"][data-v-ae1ec9d2] {
4430
+ [data-component~="ui-icon-button"][data-v-9828be81] {
4419
4431
  --_icon-button-icon-default: var(--ui-icon-size-md);
4420
4432
  /* A slotted ui-icon is its own component, out of reach of the svg rule below; these are its
4421
4433
  defaults, which its own --ui-icon-* hooks still override. */
4422
4434
  --_ui-default-icon-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4423
4435
  --_ui-default-icon-stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
4424
4436
  }
4425
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-ae1ec9d2] {
4437
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-9828be81] {
4426
4438
  --_icon-button-icon-default: var(--ui-icon-size-sm);
4427
4439
  }
4428
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-ae1ec9d2] {
4440
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-9828be81] {
4429
4441
  --_icon-button-icon-default: var(--ui-icon-size-lg);
4430
4442
  }
4431
- svg[data-v-ae1ec9d2-s] {
4443
+ svg[data-v-9828be81-s] {
4432
4444
  inline-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4433
4445
  block-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4434
4446
  flex-shrink: 0;
@@ -4436,7 +4448,7 @@ svg[data-v-ae1ec9d2-s] {
4436
4448
  }
4437
4449
 
4438
4450
  /* A component that sets its display still honours the hidden attribute on its root. */
4439
- [data-component~="ui-icon-button"][hidden][data-v-ae1ec9d2] {
4451
+ [data-component~="ui-icon-button"][hidden][data-v-9828be81] {
4440
4452
  display: none;
4441
4453
  }
4442
4454
 
@@ -5237,7 +5249,7 @@ svg[data-v-ae1ec9d2-s] {
5237
5249
  syntax: "*";
5238
5250
  inherits: false;
5239
5251
  }
5240
- [data-component~="ui-menu-item"][data-v-6b7f9bed] {
5252
+ [data-component~="ui-menu-item"][data-v-6d5ac848] {
5241
5253
  display: flex;
5242
5254
  align-items: center;
5243
5255
  gap: var(--ui-space-2);
@@ -5269,11 +5281,14 @@ svg[data-v-ae1ec9d2-s] {
5269
5281
  background-color var(--ui-motion-fast) var(--ui-motion-ease),
5270
5282
  color var(--ui-motion-fast) var(--ui-motion-ease);
5271
5283
  }
5272
- .label[data-v-6b7f9bed] {
5284
+ .label[data-v-6d5ac848] {
5285
+ display: flex;
5286
+ align-items: center;
5287
+ gap: var(--ui-space-2);
5273
5288
  flex: 1;
5274
5289
  min-inline-size: 0;
5275
5290
  }
5276
- .indicator[data-v-6b7f9bed] {
5291
+ .indicator[data-v-6d5ac848] {
5277
5292
  display: inline-flex;
5278
5293
  align-items: center;
5279
5294
  justify-content: center;
@@ -5286,75 +5301,75 @@ svg[data-v-ae1ec9d2-s] {
5286
5301
  color: var(--ui-surface);
5287
5302
  --_ui-default-icon-size: 0.75rem;
5288
5303
  }
5289
- [data-component~="ui-menu-item"][data-ui-menu-item-state~="type=action"] .indicator[data-v-6b7f9bed] {
5304
+ [data-component~="ui-menu-item"][data-ui-menu-item-state~="type=action"] .indicator[data-v-6d5ac848] {
5290
5305
  display: none;
5291
5306
  }
5292
5307
  [data-component~="ui-menu-item"][data-ui-menu-item-state~="type=checkbox"][aria-checked="true"]
5293
- .indicator[data-v-6b7f9bed] {
5308
+ .indicator[data-v-6d5ac848] {
5294
5309
  border-color: var(--ui-accent);
5295
5310
  background: var(--ui-accent);
5296
5311
  }
5297
- [data-component~="ui-menu-item"][data-ui-menu-item-state~="type=radio"] .indicator[data-v-6b7f9bed] {
5312
+ [data-component~="ui-menu-item"][data-ui-menu-item-state~="type=radio"] .indicator[data-v-6d5ac848] {
5298
5313
  border-radius: var(--ui-radius-round);
5299
5314
  }
5300
5315
  [data-component~="ui-menu-item"][data-ui-menu-item-state~="type=radio"][aria-checked="true"]
5301
- .indicator[data-v-6b7f9bed] {
5316
+ .indicator[data-v-6d5ac848] {
5302
5317
  border-color: var(--ui-accent);
5303
5318
  }
5304
5319
  [data-component~="ui-menu-item"][data-ui-menu-item-state~="type=radio"][aria-checked="true"]
5305
- .indicator[data-v-6b7f9bed]::after {
5320
+ .indicator[data-v-6d5ac848]::after {
5306
5321
  content: "";
5307
5322
  inline-size: 0.375rem;
5308
5323
  block-size: 0.375rem;
5309
5324
  border-radius: var(--ui-radius-round);
5310
5325
  background: var(--ui-accent);
5311
5326
  }
5312
- .shortcut[data-v-6b7f9bed] {
5327
+ .shortcut[data-v-6d5ac848] {
5313
5328
  margin-inline-start: auto;
5314
5329
  color: var(--ui-text-secondary);
5315
5330
  font-size: var(--ui-font-size-sm);
5316
5331
  font-weight: var(--ui-font-normal);
5317
5332
  }
5318
- .shortcut[data-v-6b7f9bed]:empty {
5333
+ .shortcut[data-v-6d5ac848]:empty {
5319
5334
  display: none;
5320
5335
  }
5321
5336
 
5322
5337
  /* Keep the text row at the shared control height where cap trimming is available. */
5323
5338
  @supports (text-box-trim: trim-both) {
5324
- [data-component~="ui-menu-item"][data-v-6b7f9bed] {
5339
+ [data-component~="ui-menu-item"][data-v-6d5ac848] {
5325
5340
  min-block-size: var(--ui-menu-item-min-block-size, var(--ui-control-size-md, 2.5rem));
5326
5341
  text-box-trim: trim-both;
5327
5342
  text-box-edge: cap alphabetic;
5328
5343
  }
5329
5344
  }
5330
- [data-component~="ui-menu-item"][data-v-6b7f9bed]:is(:hover, :focus-visible):not([aria-disabled="true"]) {
5345
+ [data-component~="ui-menu-item"][data-v-6d5ac848]:is(:hover, :focus-visible):not([aria-disabled="true"]) {
5331
5346
  background: var(--ui-menu-item-hover-surface, var(--ui-surface-subtle));
5332
5347
  }
5333
- [data-component~="ui-menu-item"][data-v-6b7f9bed]:focus-visible {
5348
+ [data-component~="ui-menu-item"][data-v-6d5ac848]:focus-visible {
5334
5349
  outline: 2px solid var(--ui-focus-ring);
5335
5350
  outline-offset: -2px;
5336
5351
  }
5337
- [data-component~="ui-menu-item"][aria-disabled="true"][data-v-6b7f9bed] {
5352
+ [data-component~="ui-menu-item"][aria-disabled="true"][data-v-6d5ac848] {
5338
5353
  background: var(--ui-disabled-surface);
5339
5354
  color: var(--ui-disabled-text);
5340
5355
  cursor: not-allowed;
5341
5356
  }
5342
- [data-component~="ui-menu-item"][aria-disabled="true"] .indicator[data-v-6b7f9bed] {
5357
+ [data-component~="ui-menu-item"][aria-disabled="true"] .indicator[data-v-6d5ac848] {
5343
5358
  border-color: var(--ui-disabled-border);
5344
5359
  background: transparent;
5345
5360
  color: var(--ui-disabled-text);
5346
5361
  }
5347
- [data-component~="ui-menu-item"][aria-disabled="true"] .indicator[data-v-6b7f9bed]::after {
5362
+ [data-component~="ui-menu-item"][aria-disabled="true"] .indicator[data-v-6d5ac848]::after {
5348
5363
  background: var(--ui-disabled-text);
5349
5364
  }
5350
5365
  @media (forced-colors: active) {
5351
- [data-component~="ui-menu-item"][data-v-6b7f9bed]:focus-visible {
5366
+ [data-component~="ui-menu-item"][data-v-6d5ac848]:focus-visible {
5352
5367
  outline-color: Highlight;
5353
5368
  }
5354
5369
  }
5355
5370
 
5356
5371
  /* A component that sets its display still honours the hidden attribute on its root. */
5357
- [data-component~="ui-menu-item"][hidden][data-v-6b7f9bed] {
5372
+ [data-component~="ui-menu-item"][hidden][data-v-6d5ac848] {
5358
5373
  display: none;
5359
5374
  }
5360
5375