@threadlabs/looma 0.23.14 → 0.23.16

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.
@@ -4533,7 +4533,7 @@ svg[data-v-68ef93fb-s] {
4533
4533
  syntax: "*";
4534
4534
  inherits: false;
4535
4535
  }
4536
- [data-component~="ui-icon-button"][data-v-7bb0fe2e] {
4536
+ [data-component~="ui-icon-button"][data-v-1cd8b91b] {
4537
4537
  /* Hooks do not inherit, so the parts below read them from the root. */
4538
4538
  --_ui-icon-button-icon-size: var(--ui-icon-button-icon-size);
4539
4539
  --_ui-icon-button-icon-stroke-width: var(--ui-icon-button-icon-stroke-width);
@@ -4541,10 +4541,10 @@ svg[data-v-68ef93fb-s] {
4541
4541
  display: inline-flex;
4542
4542
  color: var(--ui-text-secondary);
4543
4543
  }
4544
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-7bb0fe2e] {
4544
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-1cd8b91b] {
4545
4545
  position: relative;
4546
4546
  }
4547
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-7bb0fe2e]::before {
4547
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-1cd8b91b]::before {
4548
4548
  content: "";
4549
4549
  position: absolute;
4550
4550
  inset: 50% auto auto 50%;
@@ -4558,13 +4558,13 @@ svg[data-v-68ef93fb-s] {
4558
4558
  transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
4559
4559
  pointer-events: none;
4560
4560
  }
4561
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-7bb0fe2e]:disabled::before {
4561
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-1cd8b91b]:disabled::before {
4562
4562
  opacity: 0;
4563
4563
  }
4564
4564
 
4565
4565
  /* At rest an anticipatory button shows only its guide dot. The icon grows into place when
4566
4566
  proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
4567
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-7bb0fe2e] {
4567
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-1cd8b91b] {
4568
4568
  opacity: 1;
4569
4569
  transform: scale(1);
4570
4570
  transition:
@@ -4572,22 +4572,22 @@ svg[data-v-68ef93fb-s] {
4572
4572
  transform calc(var(--ui-motion-fast) * 2) cubic-bezier(0.2, 1.4, 0.35, 1);
4573
4573
  }
4574
4574
  @media (hover: hover) and (pointer: fine) {
4575
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-7bb0fe2e]: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) {
4575
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-1cd8b91b]: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) {
4576
4576
  border-color: transparent;
4577
4577
  background-color: transparent;
4578
4578
  box-shadow: none;
4579
4579
  }
4580
4580
  [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)
4581
- .content[data-v-7bb0fe2e] {
4581
+ .content[data-v-1cd8b91b] {
4582
4582
  opacity: 0;
4583
4583
  transform: scale(0.65);
4584
4584
  transition-duration: var(--ui-motion-fast);
4585
4585
  }
4586
4586
  }
4587
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-7bb0fe2e]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
4587
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-1cd8b91b]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
4588
4588
  opacity: 0;
4589
4589
  }
4590
- [data-component~="ui-icon-button"][data-v-7bb0fe2e] {
4590
+ [data-component~="ui-icon-button"][data-v-1cd8b91b] {
4591
4591
  /* The size prop resolves here; --ui-icon-button-size overrides it on an element. */
4592
4592
  --_size: 2rem;
4593
4593
  appearance: none;
@@ -4613,7 +4613,7 @@ svg[data-v-68ef93fb-s] {
4613
4613
  transform var(--ui-motion-fast) var(--ui-motion-ease);
4614
4614
  }
4615
4615
  @media (hover: none), (pointer: coarse) {
4616
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-7bb0fe2e]::before {
4616
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-1cd8b91b]::before {
4617
4617
  opacity: 0;
4618
4618
  }
4619
4619
  }
@@ -4621,10 +4621,10 @@ svg[data-v-68ef93fb-s] {
4621
4621
  /* A touch target without a bigger button: an invisible hit area, at least the control
4622
4622
  minimum, centred on the button (::before is the anticipatory guide). */
4623
4623
  @media (pointer: coarse) {
4624
- [data-component~="ui-icon-button"][data-v-7bb0fe2e] {
4624
+ [data-component~="ui-icon-button"][data-v-1cd8b91b] {
4625
4625
  position: relative;
4626
4626
  }
4627
- [data-component~="ui-icon-button"][data-v-7bb0fe2e]::after {
4627
+ [data-component~="ui-icon-button"][data-v-1cd8b91b]::after {
4628
4628
  content: "";
4629
4629
  position: absolute;
4630
4630
  inset: 50% auto auto 50%;
@@ -4633,10 +4633,10 @@ svg[data-v-68ef93fb-s] {
4633
4633
  transform: translate(-50%, -50%);
4634
4634
  }
4635
4635
  }
4636
- html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-7bb0fe2e] {
4636
+ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-1cd8b91b] {
4637
4637
  position: relative;
4638
4638
  }
4639
- html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-7bb0fe2e]::after {
4639
+ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-1cd8b91b]::after {
4640
4640
  content: "";
4641
4641
  position: absolute;
4642
4642
  inset: 50% auto auto 50%;
@@ -4644,31 +4644,54 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-7
4644
4644
  block-size: max(100%, var(--ui-control-min-block-size));
4645
4645
  transform: translate(-50%, -50%);
4646
4646
  }
4647
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-7bb0fe2e] {
4647
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-1cd8b91b] {
4648
4648
  --_size: 1.75rem;
4649
4649
  inline-size: var(--ui-icon-button-size, var(--_size));
4650
4650
  block-size: var(--ui-icon-button-size, var(--_size));
4651
4651
  min-inline-size: var(--ui-icon-button-size, var(--_size));
4652
4652
  min-block-size: var(--ui-icon-button-size, var(--_size));
4653
4653
  }
4654
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-7bb0fe2e] {
4654
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-1cd8b91b] {
4655
4655
  --_size: 2.5rem;
4656
4656
  inline-size: var(--ui-icon-button-size, var(--_size));
4657
4657
  block-size: var(--ui-icon-button-size, var(--_size));
4658
4658
  min-inline-size: var(--ui-icon-button-size, var(--_size));
4659
4659
  min-block-size: var(--ui-icon-button-size, var(--_size));
4660
4660
  }
4661
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"][data-v-7bb0fe2e] {
4661
+
4662
+ /* A text button's companion uses control geometry; compact icon buttons keep their own density. */
4663
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-v-1cd8b91b] {
4664
+ --_size: var(--ui-control-size-md);
4665
+ block-size: auto;
4666
+ align-self: stretch;
4667
+ }
4668
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=sm"][data-v-1cd8b91b] {
4669
+ --_size: var(--ui-control-size-sm);
4670
+ }
4671
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=lg"][data-v-1cd8b91b] {
4672
+ --_size: var(--ui-control-size-lg);
4673
+ }
4674
+ @media (pointer: coarse) {
4675
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-v-1cd8b91b] {
4676
+ inline-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
4677
+ min-inline-size: max(
4678
+ var(--ui-icon-button-size, var(--_size)),
4679
+ var(--ui-control-min-block-size)
4680
+ );
4681
+ min-block-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
4682
+ }
4683
+ }
4684
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"][data-v-1cd8b91b] {
4662
4685
  border-radius: var(--ui-radius-round);
4663
4686
  }
4664
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-7bb0fe2e] {
4687
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-1cd8b91b] {
4665
4688
  border-color: var(--ui-icon-button-border, var(--ui-control-border, var(--ui-border-strong)));
4666
4689
  background-color: var(--ui-icon-button-outline-surface, var(--ui-surface-default));
4667
4690
  background-image: var(--ui-raised-highlight);
4668
4691
  color: var(--ui-icon-button-outline-text, var(--ui-text-primary));
4669
4692
  box-shadow: var(--ui-raised);
4670
4693
  }
4671
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-7bb0fe2e] {
4694
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-1cd8b91b] {
4672
4695
  background-color: var(--ui-icon-button-solid-surface, var(--ui-accent-solid));
4673
4696
  background-image: var(--ui-raised-highlight);
4674
4697
  color: var(--ui-icon-button-solid-text, var(--ui-text-on-accent));
@@ -4677,7 +4700,7 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-7
4677
4700
  0 1px 2px color-mix(in srgb, var(--ui-accent-solid) 18%, transparent)
4678
4701
  );
4679
4702
  }
4680
- [data-component~="ui-icon-button"][data-v-7bb0fe2e]:hover:enabled:not([aria-disabled="true"]) {
4703
+ [data-component~="ui-icon-button"][data-v-1cd8b91b]:hover:enabled:not([aria-disabled="true"]) {
4681
4704
  /* Derived from the text colour so the ghost hover shows on any background. */
4682
4705
  background-color: var(
4683
4706
  --ui-icon-button-hover-surface,
@@ -4685,16 +4708,16 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-7
4685
4708
  );
4686
4709
  color: var(--ui-icon-button-hover-text, var(--ui-text-primary));
4687
4710
  }
4688
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-7bb0fe2e]:hover:enabled:not([aria-disabled="true"]) {
4711
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-1cd8b91b]:hover:enabled:not([aria-disabled="true"]) {
4689
4712
  border-color: var(
4690
4713
  --ui-icon-button-hover-border,
4691
4714
  var(--ui-control-border-hover, var(--ui-control-border))
4692
4715
  );
4693
4716
  }
4694
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-7bb0fe2e]:hover:enabled:not([aria-disabled="true"]) {
4717
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-1cd8b91b]:hover:enabled:not([aria-disabled="true"]) {
4695
4718
  background-color: var(--ui-icon-button-solid-hover-surface, var(--ui-accent-hover));
4696
4719
  }
4697
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][aria-expanded="true"][data-v-7bb0fe2e]:enabled:not([aria-disabled="true"]) {
4720
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][aria-expanded="true"][data-v-1cd8b91b]:enabled:not([aria-disabled="true"]) {
4698
4721
  background-color: var(
4699
4722
  --ui-icon-button-active-surface,
4700
4723
  color-mix(in srgb, currentColor 16%, transparent)
@@ -4702,33 +4725,33 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-7
4702
4725
  color: var(--ui-icon-button-hover-text, var(--ui-text-primary));
4703
4726
  box-shadow: var(--ui-pressed);
4704
4727
  }
4705
- [data-component~="ui-icon-button"][data-v-7bb0fe2e]:active:enabled:not([aria-disabled="true"]) {
4728
+ [data-component~="ui-icon-button"][data-v-1cd8b91b]:active:enabled:not([aria-disabled="true"]) {
4706
4729
  transform: scale(var(--ui-icon-button-active-scale, 0.96));
4707
4730
  }
4708
- :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"][data-v-7bb0fe2e], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"][data-v-7bb0fe2e]) {
4731
+ :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"][data-v-1cd8b91b], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"][data-v-1cd8b91b]) {
4709
4732
  cursor: progress;
4710
4733
  }
4711
- .content[data-v-7bb0fe2e] {
4734
+ .content[data-v-1cd8b91b] {
4712
4735
  display: inline-flex;
4713
4736
  align-items: center;
4714
4737
  justify-content: center;
4715
4738
  }
4716
4739
  :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"])
4717
- .content[data-v-7bb0fe2e] {
4740
+ .content[data-v-1cd8b91b] {
4718
4741
  display: none;
4719
4742
  }
4720
4743
  @media (prefers-reduced-motion: reduce) {
4721
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-7bb0fe2e] {
4744
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-1cd8b91b] {
4722
4745
  transition: none;
4723
4746
  }
4724
4747
  }
4725
- [data-component~="ui-icon-button"][data-v-7bb0fe2e]:focus-visible {
4748
+ [data-component~="ui-icon-button"][data-v-1cd8b91b]:focus-visible {
4726
4749
  outline: none;
4727
4750
  box-shadow: var(--ui-focus-halo);
4728
4751
  }
4729
4752
 
4730
4753
  /* Disabled is a flat neutral control, independent of the active variant's tone. */
4731
- [data-component~="ui-icon-button"][data-v-7bb0fe2e]:disabled {
4754
+ [data-component~="ui-icon-button"][data-v-1cd8b91b]:disabled {
4732
4755
  border-color: var(--ui-disabled-border);
4733
4756
  background-color: var(--ui-disabled-surface);
4734
4757
  color: var(--ui-disabled-text);
@@ -4738,23 +4761,23 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-7
4738
4761
  box-shadow: none;
4739
4762
  background-image: none;
4740
4763
  }
4741
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][data-v-7bb0fe2e]:disabled {
4764
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][data-v-1cd8b91b]:disabled {
4742
4765
  border-color: transparent;
4743
4766
  }
4744
- [data-component~="ui-icon-button"][data-v-7bb0fe2e] {
4767
+ [data-component~="ui-icon-button"][data-v-1cd8b91b] {
4745
4768
  --_icon-button-icon-default: var(--ui-icon-size-md);
4746
4769
  /* A slotted ui-icon is its own component, out of reach of the svg rule below; these are its
4747
4770
  defaults, which its own --ui-icon-* hooks still override. */
4748
4771
  --_ui-default-icon-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4749
4772
  --_ui-default-icon-stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
4750
4773
  }
4751
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-7bb0fe2e] {
4774
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-1cd8b91b] {
4752
4775
  --_icon-button-icon-default: var(--ui-icon-size-sm);
4753
4776
  }
4754
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-7bb0fe2e] {
4777
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-1cd8b91b] {
4755
4778
  --_icon-button-icon-default: var(--ui-icon-size-lg);
4756
4779
  }
4757
- svg[data-v-7bb0fe2e-s] {
4780
+ svg[data-v-1cd8b91b-s] {
4758
4781
  inline-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4759
4782
  block-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4760
4783
  flex-shrink: 0;
@@ -4762,7 +4785,7 @@ svg[data-v-7bb0fe2e-s] {
4762
4785
  }
4763
4786
 
4764
4787
  /* A component that sets its display still honours the hidden attribute on its root. */
4765
- [data-component~="ui-icon-button"][hidden][data-v-7bb0fe2e] {
4788
+ [data-component~="ui-icon-button"][hidden][data-v-1cd8b91b] {
4766
4789
  display: none;
4767
4790
  }
4768
4791
 
@@ -4820,7 +4843,7 @@ svg[data-v-7bb0fe2e-s] {
4820
4843
  syntax: "*";
4821
4844
  inherits: false;
4822
4845
  }
4823
- [data-component~="ui-input"][data-v-762209e1] {
4846
+ [data-component~="ui-input"][data-v-e45d8c3f] {
4824
4847
  box-sizing: border-box;
4825
4848
  display: inline-block;
4826
4849
  inline-size: var(--ui-input-inline-size, 100%);
@@ -4860,7 +4883,7 @@ svg[data-v-7bb0fe2e-s] {
4860
4883
  }
4861
4884
 
4862
4885
  /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
4863
- [data-component~="ui-input"][data-ui-input-state~="size=sm"][data-v-762209e1] {
4886
+ [data-component~="ui-input"][data-ui-input-state~="size=sm"][data-v-e45d8c3f] {
4864
4887
  min-block-size: var(
4865
4888
  --ui-input-min-block-size,
4866
4889
  var(--_ui-default-input-min-block-size, var(--ui-control-size-sm))
@@ -4868,7 +4891,7 @@ svg[data-v-7bb0fe2e-s] {
4868
4891
  padding: var(--ui-space-1) var(--ui-space-2);
4869
4892
  font-size: var(--ui-font-size-sm);
4870
4893
  }
4871
- [data-component~="ui-input"][data-ui-input-state~="size=lg"][data-v-762209e1] {
4894
+ [data-component~="ui-input"][data-ui-input-state~="size=lg"][data-v-e45d8c3f] {
4872
4895
  min-block-size: var(
4873
4896
  --ui-input-min-block-size,
4874
4897
  var(--_ui-default-input-min-block-size, var(--ui-control-size-lg))
@@ -4880,31 +4903,35 @@ svg[data-v-7bb0fe2e-s] {
4880
4903
  /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
4881
4904
  body-size text: below 16px, iOS zooms the page into the focused field. */
4882
4905
  @media (pointer: coarse) {
4883
- [data-component~="ui-input"][data-ui-input-state~="size=sm"][data-v-762209e1] {
4906
+ [data-component~="ui-input"][data-v-e45d8c3f],
4907
+ [data-component~="ui-input"][data-ui-input-state~="size=sm"][data-v-e45d8c3f],
4908
+ [data-component~="ui-input"][data-ui-input-state~="size=lg"][data-v-e45d8c3f] {
4909
+ font-size: var(--ui-font-size-md);
4910
+ }
4911
+ [data-component~="ui-input"][data-ui-input-state~="size=sm"][data-v-e45d8c3f] {
4884
4912
  min-block-size: var(
4885
4913
  --ui-input-min-block-size,
4886
4914
  var(--_ui-default-input-min-block-size, var(--ui-control-min-block-size))
4887
4915
  );
4888
- font-size: inherit;
4889
4916
  }
4890
4917
  }
4891
4918
 
4892
4919
  /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
4893
- [data-component~="ui-input"][data-v-762209e1]::selection {
4920
+ [data-component~="ui-input"][data-v-e45d8c3f]::selection {
4894
4921
  background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
4895
4922
  color: inherit;
4896
4923
  }
4897
- [data-component~="ui-input"][data-v-762209e1]::placeholder {
4924
+ [data-component~="ui-input"][data-v-e45d8c3f]::placeholder {
4898
4925
  color: var(--ui-control-placeholder, var(--ui-text-secondary));
4899
4926
  opacity: 1;
4900
4927
  }
4901
- [data-component~="ui-input"][data-v-762209e1]:hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
4928
+ [data-component~="ui-input"][data-v-e45d8c3f]:hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
4902
4929
  border-color: var(
4903
4930
  --ui-input-border-hover,
4904
4931
  var(--_ui-default-input-border-hover, var(--ui-control-border-hover, var(--ui-text-secondary)))
4905
4932
  );
4906
4933
  }
4907
- [data-component~="ui-input"][data-v-762209e1]:focus-visible {
4934
+ [data-component~="ui-input"][data-v-e45d8c3f]:focus-visible {
4908
4935
  border-color: var(
4909
4936
  --ui-input-focus-border,
4910
4937
  var(--_ui-default-input-focus-border, var(--ui-control-focus, var(--ui-accent-solid)))
@@ -4921,14 +4948,14 @@ svg[data-v-7bb0fe2e-s] {
4921
4948
  }
4922
4949
 
4923
4950
  /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
4924
- [data-component~="ui-input"][aria-invalid="true"][data-v-762209e1],
4925
- [data-component~="ui-input"][data-v-762209e1]:is(:user-invalid, [data-user-invalid]) {
4951
+ [data-component~="ui-input"][aria-invalid="true"][data-v-e45d8c3f],
4952
+ [data-component~="ui-input"][data-v-e45d8c3f]:is(:user-invalid, [data-user-invalid]) {
4926
4953
  border-color: var(
4927
4954
  --ui-input-invalid-border,
4928
4955
  var(--_ui-default-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)))
4929
4956
  );
4930
4957
  }
4931
- [data-component~="ui-input"][data-v-762209e1]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
4958
+ [data-component~="ui-input"][data-v-e45d8c3f]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
4932
4959
  box-shadow: var(
4933
4960
  --ui-input-invalid-focus-shadow,
4934
4961
  var(
@@ -4942,7 +4969,7 @@ svg[data-v-7bb0fe2e-s] {
4942
4969
  )
4943
4970
  );
4944
4971
  }
4945
- [data-component~="ui-input"][data-v-762209e1]:disabled {
4972
+ [data-component~="ui-input"][data-v-e45d8c3f]:disabled {
4946
4973
  background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
4947
4974
  color: var(--ui-disabled-text);
4948
4975
  box-shadow: none;
@@ -4951,7 +4978,7 @@ svg[data-v-7bb0fe2e-s] {
4951
4978
 
4952
4979
  /* Forced colors drop box shadows, so the focus ring becomes an outline. */
4953
4980
  @media (forced-colors: active) {
4954
- [data-component~="ui-input"][data-v-762209e1]:focus-visible {
4981
+ [data-component~="ui-input"][data-v-e45d8c3f]:focus-visible {
4955
4982
  outline: var(
4956
4983
  --ui-input-focus-outline,
4957
4984
  var(--_ui-default-input-focus-outline, var(--ui-focus-width) solid Highlight)
@@ -4964,7 +4991,7 @@ svg[data-v-7bb0fe2e-s] {
4964
4991
  * scroll vertically inside the field. Native inputs already center their single line. */
4965
4992
 
4966
4993
  /* A component that sets its display still honours the hidden attribute on its root. */
4967
- [data-component~="ui-input"][hidden][data-v-762209e1] {
4994
+ [data-component~="ui-input"][hidden][data-v-e45d8c3f] {
4968
4995
  display: none;
4969
4996
  }
4970
4997
 
@@ -8459,7 +8486,7 @@ to {
8459
8486
  syntax: "*";
8460
8487
  inherits: false;
8461
8488
  }
8462
- [data-component~="ui-tree-item"][data-v-d2b1bbe0] {
8489
+ [data-component~="ui-tree-item"][data-v-fd74ff6c] {
8463
8490
  /* Hooks do not inherit, so the parts below read them from the root. The tree's density
8464
8491
  sets the defaults, in --_ui-default-*. */
8465
8492
  --_ui-tree-item-min-block-size: var(
@@ -8481,7 +8508,7 @@ to {
8481
8508
  min-inline-size: 0;
8482
8509
  margin-inline-start: calc(var(--_ui-tree-item-indent-step, 0) * var(--_ui-tree-indent, 16px));
8483
8510
  }
8484
- .row[data-v-d2b1bbe0] {
8511
+ .row[data-v-fd74ff6c] {
8485
8512
  position: relative;
8486
8513
  display: grid;
8487
8514
  grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr);
@@ -8498,54 +8525,54 @@ to {
8498
8525
  box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
8499
8526
  min-block-size var(--ui-motion-base) var(--ui-motion-ease);
8500
8527
  }
8501
- .row[data-v-d2b1bbe0]:hover,
8502
- .row[data-v-d2b1bbe0]:focus-within {
8528
+ .row[data-v-fd74ff6c]:hover,
8529
+ .row[data-v-fd74ff6c]:focus-within {
8503
8530
  color: var(--ui-text-primary);
8504
8531
  background: var(--ui-surface-muted);
8505
8532
  }
8506
8533
 
8507
8534
  /* Selection is the same surface recipe as destination and choice rows. */
8508
- [data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"] > .row[data-v-d2b1bbe0] {
8535
+ [data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"] > .row[data-v-fd74ff6c] {
8509
8536
  color: var(--ui-selection-text);
8510
8537
  background: var(--ui-selection-surface);
8511
8538
  }
8512
8539
  [data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"]:not([aria-disabled="true"])
8513
8540
  > .row
8514
- > .leading[data-v-d2b1bbe0] {
8541
+ > .leading[data-v-fd74ff6c] {
8515
8542
  color: var(--ui-selection-text);
8516
8543
  }
8517
- [data-component~="ui-tree-item"][data-ui-tree-item-state~="disabled"] .row[data-v-d2b1bbe0] {
8544
+ [data-component~="ui-tree-item"][data-ui-tree-item-state~="disabled"] .row[data-v-fd74ff6c] {
8518
8545
  color: var(--ui-disabled-text);
8519
8546
  background: var(--ui-disabled-surface);
8520
8547
  }
8521
- [data-component~="ui-tree-item"][data-dragging]:not([data-move-source]) .row[data-v-d2b1bbe0] {
8548
+ [data-component~="ui-tree-item"][data-dragging]:not([data-move-source]) .row[data-v-fd74ff6c] {
8522
8549
  opacity: 0.42;
8523
8550
  }
8524
- [data-component~="ui-tree-item"][data-move-source] > .row > .label[data-v-d2b1bbe0],
8525
- [data-component~="ui-tree-item"][data-move-source] > .row > .leading[data-v-d2b1bbe0] {
8551
+ [data-component~="ui-tree-item"][data-move-source] > .row > .label[data-v-fd74ff6c],
8552
+ [data-component~="ui-tree-item"][data-move-source] > .row > .leading[data-v-fd74ff6c] {
8526
8553
  opacity: 0.42;
8527
8554
  }
8528
- [data-component~="ui-tree-item"][data-v-d2b1bbe0]:focus {
8555
+ [data-component~="ui-tree-item"][data-v-fd74ff6c]:focus {
8529
8556
  outline: none;
8530
8557
  }
8531
- [data-component~="ui-tree-item"]:focus-visible .row[data-v-d2b1bbe0] {
8558
+ [data-component~="ui-tree-item"]:focus-visible .row[data-v-fd74ff6c] {
8532
8559
  box-shadow: 0 0 0 var(--ui-focus-width) var(--ui-focus-ring);
8533
8560
  }
8534
8561
 
8535
8562
  /* Child combinators: drop feedback belongs to this item's own row, not the rows nested in it. */
8536
- [data-component~="ui-tree-item"][data-drop-position="inside"] > .row[data-v-d2b1bbe0] {
8563
+ [data-component~="ui-tree-item"][data-drop-position="inside"] > .row[data-v-fd74ff6c] {
8537
8564
  background: var(--ui-accent-subtle);
8538
8565
  box-shadow: inset 0 0 0 var(--ui-accent-line-width)
8539
8566
  var(--_ui-tree-drop-color, var(--ui-accent-solid));
8540
8567
  }
8541
- .disclosure[data-v-d2b1bbe0],
8542
- .disclosure-spacer[data-v-d2b1bbe0] {
8568
+ .disclosure[data-v-fd74ff6c],
8569
+ .disclosure-spacer[data-v-fd74ff6c] {
8543
8570
  grid-column: 1;
8544
8571
  grid-row: 1;
8545
8572
  inline-size: var(--_tree-disclosure-size);
8546
8573
  block-size: 28px;
8547
8574
  }
8548
- .disclosure[data-v-d2b1bbe0] {
8575
+ .disclosure[data-v-fd74ff6c] {
8549
8576
  display: grid;
8550
8577
  /* Start-aligned: the chevron's ink, not its hit area, aligns with the content above it. */
8551
8578
  place-items: center start;
@@ -8556,10 +8583,10 @@ to {
8556
8583
  border-radius: var(--ui-radius-sm);
8557
8584
  cursor: pointer;
8558
8585
  }
8559
- .disclosure[hidden][data-v-d2b1bbe0] {
8586
+ .disclosure[hidden][data-v-fd74ff6c] {
8560
8587
  display: none;
8561
8588
  }
8562
- .selection-hit[data-v-d2b1bbe0] {
8589
+ .selection-hit[data-v-fd74ff6c] {
8563
8590
  display: none;
8564
8591
  grid-column: 2;
8565
8592
  grid-row: 1;
@@ -8568,29 +8595,29 @@ to {
8568
8595
  block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
8569
8596
  cursor: pointer;
8570
8597
  }
8571
- .selection-checkbox[data-v-d2b1bbe0] {
8598
+ .selection-checkbox[data-v-fd74ff6c] {
8572
8599
  inline-size: 1rem;
8573
8600
  block-size: 1rem;
8574
8601
  margin: 0;
8575
8602
  accent-color: var(--ui-accent-solid);
8576
8603
  }
8577
- [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row[data-v-d2b1bbe0] {
8604
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row[data-v-fd74ff6c] {
8578
8605
  grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr);
8579
8606
  }
8580
- [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .selection-hit[data-v-d2b1bbe0] {
8607
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .selection-hit[data-v-fd74ff6c] {
8581
8608
  display: grid;
8582
8609
  }
8583
- [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .leading[data-v-d2b1bbe0] {
8610
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .leading[data-v-fd74ff6c] {
8584
8611
  grid-column: 3;
8585
8612
  }
8586
- [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .label[data-v-d2b1bbe0] {
8613
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .label[data-v-fd74ff6c] {
8587
8614
  grid-column: 4;
8588
8615
  }
8589
- .disclosure[data-v-d2b1bbe0]:hover {
8616
+ .disclosure[data-v-fd74ff6c]:hover {
8590
8617
  color: var(--ui-text-primary);
8591
8618
  background: var(--ui-surface-elevated);
8592
8619
  }
8593
- .disclosure-icon[data-v-d2b1bbe0] {
8620
+ .disclosure-icon[data-v-fd74ff6c] {
8594
8621
  display: grid;
8595
8622
  place-items: center;
8596
8623
  inline-size: 12px;
@@ -8598,7 +8625,7 @@ to {
8598
8625
  transform: rotate(-90deg);
8599
8626
  transition: transform var(--ui-motion-fast) var(--ui-motion-ease);
8600
8627
  }
8601
- .disclosure-icon[data-v-d2b1bbe0]::before {
8628
+ .disclosure-icon[data-v-fd74ff6c]::before {
8602
8629
  display: block;
8603
8630
  inline-size: 0.375rem;
8604
8631
  block-size: 0.375rem;
@@ -8608,19 +8635,19 @@ to {
8608
8635
  /* A chevron's ink sits below its box centre; lift it so it centres optically (in either rotation). */
8609
8636
  transform: translateY(-20%) rotate(45deg);
8610
8637
  }
8611
- [data-component~="ui-tree-item"][aria-expanded="true"] .disclosure-icon[data-v-d2b1bbe0] {
8638
+ [data-component~="ui-tree-item"][aria-expanded="true"] .disclosure-icon[data-v-fd74ff6c] {
8612
8639
  transform: rotate(0deg);
8613
8640
  }
8614
8641
 
8615
8642
  /* Lucide grip-vertical, filling the handle as in Looma 0.2. */
8616
- .drag-handle svg[data-v-d2b1bbe0] {
8643
+ .drag-handle svg[data-v-fd74ff6c] {
8617
8644
  display: block;
8618
8645
  inline-size: 100%;
8619
8646
  block-size: 100%;
8620
8647
  }
8621
8648
 
8622
8649
  /* Slotted content is outside this scope, so :has() cannot see it; hide only a truly empty slot. */
8623
- .leading[data-v-d2b1bbe0] {
8650
+ .leading[data-v-fd74ff6c] {
8624
8651
  display: inline-grid;
8625
8652
  place-items: center;
8626
8653
  grid-column: 2;
@@ -8633,12 +8660,12 @@ to {
8633
8660
  position: relative;
8634
8661
  z-index: 1;
8635
8662
  }
8636
- .leading[data-v-d2b1bbe0]:empty {
8663
+ .leading[data-v-fd74ff6c]:empty {
8637
8664
  display: none;
8638
8665
  }
8639
8666
 
8640
8667
  /* Icons match the label's size (as in Knit's tree): an unsized SVG would otherwise render 300×150. */
8641
- svg[data-v-d2b1bbe0-s],img[data-v-d2b1bbe0-s] {
8668
+ svg[data-v-fd74ff6c-s],img[data-v-fd74ff6c-s] {
8642
8669
  display: block;
8643
8670
  inline-size: 1em;
8644
8671
  block-size: 1em;
@@ -8647,7 +8674,7 @@ svg[data-v-d2b1bbe0-s],img[data-v-d2b1bbe0-s] {
8647
8674
 
8648
8675
  /* The label spans the row's height and centres its content, so slotted content (a link) can
8649
8676
  stretch to fill the row as its own hit area; the padding tokens remove the inset. */
8650
- .label[data-v-d2b1bbe0] {
8677
+ .label[data-v-fd74ff6c] {
8651
8678
  grid-column: 3;
8652
8679
  grid-row: 1;
8653
8680
  align-self: stretch;
@@ -8665,7 +8692,7 @@ svg[data-v-d2b1bbe0-s],img[data-v-d2b1bbe0-s] {
8665
8692
 
8666
8693
  /* Slotted label content fills the cell, so a link is the row's hit area rather than sizing to
8667
8694
  its own text and reading as overflow. */
8668
- .label-text[data-v-d2b1bbe0] {
8695
+ .label-text[data-v-fd74ff6c] {
8669
8696
  display: flex;
8670
8697
  align-items: center;
8671
8698
  /* Stretches, so slotted content can still be the row's full-height hit area. */
@@ -8675,16 +8702,16 @@ svg[data-v-d2b1bbe0-s],img[data-v-d2b1bbe0-s] {
8675
8702
  inline-size: 100%;
8676
8703
  white-space: nowrap;
8677
8704
  }
8678
- .label-text > [data-v-d2b1bbe0-s] {
8705
+ .label-text > [data-v-fd74ff6c-s] {
8679
8706
  flex: 1 1 auto;
8680
8707
  min-inline-size: 0;
8681
8708
  }
8682
8709
 
8683
8710
  /* The controls sit over the label's end, so the text fades out where they begin. The fade is
8684
8711
  the truncation mark while it shows: an ellipsis under it would read as a second one. */
8685
- .row:hover > .label[data-v-d2b1bbe0],
8686
- .row:focus-within > .label[data-v-d2b1bbe0],
8687
- [data-component~="ui-tree-item"][data-move-source] > .row > .label[data-v-d2b1bbe0] {
8712
+ .row:hover > .label[data-v-fd74ff6c],
8713
+ .row:focus-within > .label[data-v-fd74ff6c],
8714
+ [data-component~="ui-tree-item"][data-move-source] > .row > .label[data-v-fd74ff6c] {
8688
8715
  text-overflow: clip;
8689
8716
  mask-image: linear-gradient(
8690
8717
  to right,
@@ -8692,9 +8719,9 @@ svg[data-v-d2b1bbe0-s],img[data-v-d2b1bbe0-s] {
8692
8719
  transparent calc(100% - var(--_tree-actions-width, 1.75rem))
8693
8720
  );
8694
8721
  }
8695
- .row:hover > .label[data-v-d2b1bbe0]:dir(rtl),
8696
- .row:focus-within > .label[data-v-d2b1bbe0]:dir(rtl),
8697
- [data-component~="ui-tree-item"][data-move-source] > .row > .label[data-v-d2b1bbe0]:dir(rtl) {
8722
+ .row:hover > .label[data-v-fd74ff6c]:dir(rtl),
8723
+ .row:focus-within > .label[data-v-fd74ff6c]:dir(rtl),
8724
+ [data-component~="ui-tree-item"][data-move-source] > .row > .label[data-v-fd74ff6c]:dir(rtl) {
8698
8725
  mask-image: linear-gradient(
8699
8726
  to left,
8700
8727
  #000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
@@ -8706,10 +8733,10 @@ svg[data-v-d2b1bbe0-s],img[data-v-d2b1bbe0-s] {
8706
8733
  there, and starts again. Only when it actually overflows — the controller measures by how
8707
8734
  much — after the controls have taken their place over its end — and hands over the distance
8708
8735
  and a duration from it, so every name moves at the same speed. */
8709
- .row[data-ui-marquee] > .label > .label-text[data-v-d2b1bbe0] {
8736
+ .row[data-ui-marquee] > .label > .label-text[data-v-fd74ff6c] {
8710
8737
  /* Once per pass: the controller restarts it after a rest at the end, so the name holds still
8711
8738
  long enough to read rather than sliding back and forth. */
8712
- animation: ui-tree-item-marquee-d2b1bbe0 var(--_marquee-duration) linear 0.5s 1 normal forwards;
8739
+ animation: ui-tree-item-marquee-fd74ff6c var(--_marquee-duration) linear 0.5s 1 normal forwards;
8713
8740
  will-change: transform;
8714
8741
  }
8715
8742
 
@@ -8717,7 +8744,7 @@ svg[data-v-d2b1bbe0-s],img[data-v-d2b1bbe0-s] {
8717
8744
  slides, the label reaches back under the icon (the controller measures how far) with its text
8718
8745
  where it was, and fades out across the gap before the icon, fully gone where the icon begins
8719
8746
  to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
8720
- .row[data-ui-marquee] > .label[data-v-d2b1bbe0] {
8747
+ .row[data-ui-marquee] > .label[data-v-fd74ff6c] {
8721
8748
  margin-inline-start: calc(-1 * var(--_marquee-lead, 0px));
8722
8749
  padding-inline-start: calc(
8723
8750
  var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
@@ -8732,7 +8759,7 @@ svg[data-v-d2b1bbe0-s],img[data-v-d2b1bbe0-s] {
8732
8759
  transparent calc(100% - var(--_tree-actions-width, 1.75rem))
8733
8760
  );
8734
8761
  }
8735
- .row[data-ui-marquee] > .label[data-v-d2b1bbe0]:dir(rtl) {
8762
+ .row[data-ui-marquee] > .label[data-v-fd74ff6c]:dir(rtl) {
8736
8763
  mask-image: linear-gradient(
8737
8764
  to left,
8738
8765
  transparent var(--_marquee-icon-width, 0px),
@@ -8743,7 +8770,7 @@ svg[data-v-d2b1bbe0-s],img[data-v-d2b1bbe0-s] {
8743
8770
  transparent calc(100% - var(--_tree-actions-width, 1.75rem))
8744
8771
  );
8745
8772
  }
8746
- @keyframes ui-tree-item-marquee-d2b1bbe0 {
8773
+ @keyframes ui-tree-item-marquee-fd74ff6c {
8747
8774
  from {
8748
8775
  transform: translateX(0);
8749
8776
  }
@@ -8754,15 +8781,15 @@ to {
8754
8781
 
8755
8782
  /* Reduced motion keeps the fade, which already says the name continues. */
8756
8783
  @media (prefers-reduced-motion: reduce) {
8757
- .row[data-ui-marquee] > .label > .label-text[data-v-d2b1bbe0] {
8784
+ .row[data-ui-marquee] > .label > .label-text[data-v-fd74ff6c] {
8758
8785
  animation: none;
8759
8786
  }
8760
8787
  }
8761
- .row:hover > .label > [data-v-d2b1bbe0-s],
8762
- .row:focus-within > .label > [data-v-d2b1bbe0-s] {
8788
+ .row:hover > .label > [data-v-fd74ff6c-s],
8789
+ .row:focus-within > .label > [data-v-fd74ff6c-s] {
8763
8790
  text-overflow: clip;
8764
8791
  }
8765
- .actions[data-v-d2b1bbe0] {
8792
+ .actions[data-v-fd74ff6c] {
8766
8793
  position: absolute;
8767
8794
  z-index: 1;
8768
8795
  inset-block: 0;
@@ -8774,19 +8801,19 @@ to {
8774
8801
  pointer-events: none;
8775
8802
  transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
8776
8803
  }
8777
- .row:hover > .actions[data-v-d2b1bbe0],
8778
- .row:focus-within > .actions[data-v-d2b1bbe0],
8779
- [data-component~="ui-tree-item"][data-move-source] > .row > .actions[data-v-d2b1bbe0] {
8804
+ .row:hover > .actions[data-v-fd74ff6c],
8805
+ .row:focus-within > .actions[data-v-fd74ff6c],
8806
+ [data-component~="ui-tree-item"][data-move-source] > .row > .actions[data-v-fd74ff6c] {
8780
8807
  opacity: 1;
8781
8808
  pointer-events: auto;
8782
8809
  }
8783
8810
 
8784
8811
  /* Without hover there is no reveal, so the controls keep their own column. */
8785
- @media (hover: none) {
8786
- .row[data-v-d2b1bbe0] {
8812
+ @media (hover: none), (pointer: coarse) {
8813
+ .row[data-v-fd74ff6c] {
8787
8814
  grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
8788
8815
  }
8789
- .actions[data-v-d2b1bbe0] {
8816
+ .actions[data-v-fd74ff6c] {
8790
8817
  position: static;
8791
8818
  grid-column: 4;
8792
8819
  grid-row: 1;
@@ -8795,13 +8822,43 @@ to {
8795
8822
  opacity: 1;
8796
8823
  pointer-events: auto;
8797
8824
  }
8825
+ .row:is(:hover, :focus-within) > .label[data-v-fd74ff6c],
8826
+ .row:is(:hover, :focus-within) > .label[data-v-fd74ff6c]:dir(rtl),
8827
+ [data-component~="ui-tree-item"][data-move-source] > .row > .label[data-v-fd74ff6c],
8828
+ [data-component~="ui-tree-item"][data-move-source] > .row > .label[data-v-fd74ff6c]:dir(rtl) {
8829
+ mask-image: none;
8830
+ }
8831
+ .row[data-ui-marquee] > .label[data-v-fd74ff6c] {
8832
+ mask-image: linear-gradient(
8833
+ to right,
8834
+ transparent var(--_marquee-icon-width, 0px),
8835
+ #000 calc(
8836
+ var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
8837
+ )
8838
+ );
8839
+ }
8840
+ .row[data-ui-marquee] > .label[data-v-fd74ff6c]:dir(rtl) {
8841
+ mask-image: linear-gradient(
8842
+ to left,
8843
+ transparent var(--_marquee-icon-width, 0px),
8844
+ #000 calc(
8845
+ var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
8846
+ )
8847
+ );
8848
+ }
8849
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row[data-v-fd74ff6c] {
8850
+ grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr) auto;
8851
+ }
8852
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .actions[data-v-fd74ff6c] {
8853
+ grid-column: 5;
8854
+ }
8798
8855
  }
8799
8856
 
8800
8857
  /* The handle sits beside what it drags. A leaf row has no disclosure, so the handle takes that
8801
8858
  empty column, right before the icon; a branch's disclosure is there, so its handle sits just
8802
8859
  outside the row. It is bare until pointed at: a resting surface behind it read as a faint
8803
8860
  patch rather than as a control. */
8804
- .drag-handle[data-v-d2b1bbe0] {
8861
+ .drag-handle[data-v-fd74ff6c] {
8805
8862
  position: absolute;
8806
8863
  z-index: 2;
8807
8864
  inset-block-start: 50%;
@@ -8822,24 +8879,24 @@ to {
8822
8879
  transform: translateY(-50%);
8823
8880
  transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
8824
8881
  }
8825
- .row:hover .drag-handle[data-v-d2b1bbe0],
8826
- .drag-handle[data-v-d2b1bbe0]:hover,
8827
- .drag-handle[data-v-d2b1bbe0]:focus-visible,
8828
- [data-component~="ui-tree-item"][data-dragging] > .row > .drag-handle[data-v-d2b1bbe0] {
8882
+ .row:hover .drag-handle[data-v-fd74ff6c],
8883
+ .drag-handle[data-v-fd74ff6c]:hover,
8884
+ .drag-handle[data-v-fd74ff6c]:focus-visible,
8885
+ [data-component~="ui-tree-item"][data-dragging] > .row > .drag-handle[data-v-fd74ff6c] {
8829
8886
  opacity: 1;
8830
8887
  }
8831
- [data-component~="ui-tree-item"][data-ui-tree-item-state~="isContainer"] > .row > .drag-handle[data-v-d2b1bbe0] {
8888
+ [data-component~="ui-tree-item"][data-ui-tree-item-state~="isContainer"] > .row > .drag-handle[data-v-fd74ff6c] {
8832
8889
  inset-inline-start: calc(-1 * var(--_tree-disclosure-size) - 2px);
8833
8890
  }
8834
- .drag-handle[data-v-d2b1bbe0]:hover,
8835
- .drag-handle[data-v-d2b1bbe0]:focus-visible {
8891
+ .drag-handle[data-v-fd74ff6c]:hover,
8892
+ .drag-handle[data-v-fd74ff6c]:focus-visible {
8836
8893
  color: var(--ui-text-primary);
8837
8894
  background: var(--ui-surface-hover);
8838
8895
  }
8839
- .drag-handle[data-v-d2b1bbe0]:active {
8896
+ .drag-handle[data-v-fd74ff6c]:active {
8840
8897
  cursor: grabbing;
8841
8898
  }
8842
- .drop-indicator[data-v-d2b1bbe0] {
8899
+ .drop-indicator[data-v-fd74ff6c] {
8843
8900
  position: absolute;
8844
8901
  z-index: 3;
8845
8902
  inset-inline: 1px;
@@ -8849,8 +8906,8 @@ to {
8849
8906
  background: var(--_ui-tree-drop-color, var(--ui-accent-solid));
8850
8907
  pointer-events: none;
8851
8908
  }
8852
- .drop-indicator[data-v-d2b1bbe0]::before,
8853
- .drop-indicator[data-v-d2b1bbe0]::after {
8909
+ .drop-indicator[data-v-fd74ff6c]::before,
8910
+ .drop-indicator[data-v-fd74ff6c]::after {
8854
8911
  content: "";
8855
8912
  position: absolute;
8856
8913
  inset-block-start: 50%;
@@ -8861,34 +8918,34 @@ to {
8861
8918
  background: var(--ui-surface-elevated);
8862
8919
  transform: translateY(-50%);
8863
8920
  }
8864
- .drop-indicator[data-v-d2b1bbe0]::before {
8921
+ .drop-indicator[data-v-fd74ff6c]::before {
8865
8922
  inset-inline-start: -1px;
8866
8923
  }
8867
- .drop-indicator[data-v-d2b1bbe0]::after {
8924
+ .drop-indicator[data-v-fd74ff6c]::after {
8868
8925
  inset-inline-end: -1px;
8869
8926
  }
8870
- [data-component~="ui-tree-item"][data-drop-position="before"] > .row > .row-drop-indicator[data-v-d2b1bbe0] {
8927
+ [data-component~="ui-tree-item"][data-drop-position="before"] > .row > .row-drop-indicator[data-v-fd74ff6c] {
8871
8928
  display: block;
8872
8929
  inset-block-start: calc(-0.5 * var(--ui-accent-line-width));
8873
8930
  }
8874
- [data-component~="ui-tree-item"][data-drop-position="after"] > .subtree-drop-indicator[data-v-d2b1bbe0] {
8931
+ [data-component~="ui-tree-item"][data-drop-position="after"] > .subtree-drop-indicator[data-v-fd74ff6c] {
8875
8932
  display: block;
8876
8933
  inset-block-end: calc(-0.5 * var(--ui-accent-line-width));
8877
8934
  }
8878
- .children[hidden][data-v-d2b1bbe0] {
8935
+ .children[hidden][data-v-fd74ff6c] {
8879
8936
  display: none;
8880
8937
  }
8881
- html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"][data-v-d2b1bbe0] {
8938
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"][data-v-fd74ff6c] {
8882
8939
  --_tree-row-min-height: 44px;
8883
8940
  }
8884
- html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .row[data-v-d2b1bbe0] {
8941
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .row[data-v-fd74ff6c] {
8885
8942
  grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr);
8886
8943
  }
8887
- html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-handle[data-v-d2b1bbe0],
8944
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-handle[data-v-fd74ff6c],
8888
8945
  html[data-ui-input-modality="touch"]
8889
8946
  [data-component~="ui-tree-item"][data-ui-tree-item-state~="isContainer"]
8890
8947
  > .row
8891
- > .drag-handle[data-v-d2b1bbe0] {
8948
+ > .drag-handle[data-v-fd74ff6c] {
8892
8949
  position: relative;
8893
8950
  grid-column: 1;
8894
8951
  grid-row: 1;
@@ -8900,24 +8957,24 @@ html[data-ui-input-modality="touch"]
8900
8957
  transform: none;
8901
8958
  cursor: pointer;
8902
8959
  }
8903
- html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .disclosure[data-v-d2b1bbe0] {
8960
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .disclosure[data-v-fd74ff6c] {
8904
8961
  grid-column: 2;
8905
8962
  }
8906
- html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .leading[data-v-d2b1bbe0] {
8963
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .leading[data-v-fd74ff6c] {
8907
8964
  grid-column: 3;
8908
8965
  }
8909
- html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .label[data-v-d2b1bbe0] {
8966
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .label[data-v-fd74ff6c] {
8910
8967
  grid-column: 4;
8911
8968
  }
8912
8969
  html[data-ui-input-modality="touch"]
8913
8970
  [data-component~="ui-tree-item"][data-selection-mode="multiple"]
8914
- > .row[data-v-d2b1bbe0] {
8971
+ > .row[data-v-fd74ff6c] {
8915
8972
  grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr);
8916
8973
  }
8917
8974
  html[data-ui-input-modality="touch"]
8918
8975
  [data-component~="ui-tree-item"][data-selection-mode="multiple"]
8919
8976
  > .row
8920
- > .selection-hit[data-v-d2b1bbe0] {
8977
+ > .selection-hit[data-v-fd74ff6c] {
8921
8978
  grid-column: 3;
8922
8979
  inline-size: 44px;
8923
8980
  block-size: 44px;
@@ -8925,36 +8982,55 @@ html[data-ui-input-modality="touch"]
8925
8982
  html[data-ui-input-modality="touch"]
8926
8983
  [data-component~="ui-tree-item"][data-selection-mode="multiple"]
8927
8984
  > .row
8928
- > .leading[data-v-d2b1bbe0] {
8985
+ > .leading[data-v-fd74ff6c] {
8929
8986
  grid-column: 4;
8930
8987
  }
8931
8988
  html[data-ui-input-modality="touch"]
8932
8989
  [data-component~="ui-tree-item"][data-selection-mode="multiple"]
8933
8990
  > .row
8934
- > .label[data-v-d2b1bbe0] {
8991
+ > .label[data-v-fd74ff6c] {
8935
8992
  grid-column: 5;
8936
8993
  }
8994
+ @media (hover: none), (pointer: coarse) {
8995
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .row[data-v-fd74ff6c] {
8996
+ grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
8997
+ }
8998
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .actions[data-v-fd74ff6c] {
8999
+ grid-column: 5;
9000
+ }
9001
+ html[data-ui-input-modality="touch"]
9002
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"]
9003
+ > .row[data-v-fd74ff6c] {
9004
+ grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr) auto;
9005
+ }
9006
+ html[data-ui-input-modality="touch"]
9007
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"]
9008
+ > .row
9009
+ > .actions[data-v-fd74ff6c] {
9010
+ grid-column: 6;
9011
+ }
9012
+ }
8937
9013
  @media (prefers-reduced-motion: reduce) {
8938
- .row[data-v-d2b1bbe0],
8939
- .disclosure-icon[data-v-d2b1bbe0],
8940
- .drag-handle[data-v-d2b1bbe0] {
9014
+ .row[data-v-fd74ff6c],
9015
+ .disclosure-icon[data-v-fd74ff6c],
9016
+ .drag-handle[data-v-fd74ff6c] {
8941
9017
  transition: none;
8942
9018
  }
8943
9019
  }
8944
9020
  @media (forced-colors: active) {
8945
- [data-component~="ui-tree-item"]:focus-visible > .row[data-v-d2b1bbe0] {
9021
+ [data-component~="ui-tree-item"]:focus-visible > .row[data-v-fd74ff6c] {
8946
9022
  outline: var(--ui-focus-width) solid Highlight;
8947
9023
  outline-offset: calc(-1 * var(--ui-focus-width));
8948
9024
  }
8949
9025
  [data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"]:not(:focus-visible):not([aria-disabled="true"])
8950
- > .row[data-v-d2b1bbe0] {
9026
+ > .row[data-v-fd74ff6c] {
8951
9027
  outline: var(--ui-border-width) solid Highlight;
8952
9028
  outline-offset: calc(-1 * var(--ui-border-width));
8953
9029
  }
8954
9030
  }
8955
9031
 
8956
9032
  /* A component that sets its display still honours the hidden attribute on its root. */
8957
- [data-component~="ui-tree-item"][hidden][data-v-d2b1bbe0] {
9033
+ [data-component~="ui-tree-item"][hidden][data-v-fd74ff6c] {
8958
9034
  display: none;
8959
9035
  }
8960
9036
  /**