@revikornmann/muka-ui 0.25.0 → 0.26.0

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 (96) hide show
  1. package/dist/cjs/components/Autocomplete/Autocomplete.css +63 -0
  2. package/dist/cjs/components/Autocomplete/Autocomplete.js +190 -0
  3. package/dist/cjs/components/Autocomplete/Autocomplete.js.map +1 -0
  4. package/dist/cjs/components/Autocomplete/index.js +6 -0
  5. package/dist/cjs/components/Autocomplete/index.js.map +1 -0
  6. package/dist/cjs/components/Combobox/Combobox.js +7 -23
  7. package/dist/cjs/components/Combobox/Combobox.js.map +1 -1
  8. package/dist/cjs/components/ContextSelect/ContextSelect.js +2 -2
  9. package/dist/cjs/components/ContextSelect/ContextSelect.js.map +1 -1
  10. package/dist/cjs/components/Dialog/Dialog.js +9 -1
  11. package/dist/cjs/components/Dialog/Dialog.js.map +1 -1
  12. package/dist/cjs/components/DropdownSelect/DropdownSelect.js +2 -2
  13. package/dist/cjs/components/DropdownSelect/DropdownSelect.js.map +1 -1
  14. package/dist/cjs/components/InputCounter/InputCounter.css +175 -0
  15. package/dist/cjs/components/InputCounter/InputCounter.js +196 -0
  16. package/dist/cjs/components/InputCounter/InputCounter.js.map +1 -0
  17. package/dist/cjs/components/InputCounter/index.js +11 -0
  18. package/dist/cjs/components/InputCounter/index.js.map +1 -0
  19. package/dist/cjs/components/Menu/Menu.js +26 -11
  20. package/dist/cjs/components/Menu/Menu.js.map +1 -1
  21. package/dist/cjs/components/Popover/Popover.js +10 -8
  22. package/dist/cjs/components/Popover/Popover.js.map +1 -1
  23. package/dist/cjs/components/Tooltip/Tooltip.js +7 -2
  24. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  25. package/dist/cjs/components/index.js +7 -3
  26. package/dist/cjs/components/index.js.map +1 -1
  27. package/dist/cjs/utils/suggestionList.js +27 -0
  28. package/dist/cjs/utils/suggestionList.js.map +1 -0
  29. package/dist/cjs/utils/usePortalContainer.js +33 -0
  30. package/dist/cjs/utils/usePortalContainer.js.map +1 -0
  31. package/dist/esm/components/Autocomplete/Autocomplete.css +63 -0
  32. package/dist/esm/components/Autocomplete/Autocomplete.js +187 -0
  33. package/dist/esm/components/Autocomplete/Autocomplete.js.map +1 -0
  34. package/dist/esm/components/Autocomplete/index.js +2 -0
  35. package/dist/esm/components/Autocomplete/index.js.map +1 -0
  36. package/dist/esm/components/Combobox/Combobox.js +5 -21
  37. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  38. package/dist/esm/components/ContextSelect/ContextSelect.js +2 -2
  39. package/dist/esm/components/ContextSelect/ContextSelect.js.map +1 -1
  40. package/dist/esm/components/Dialog/Dialog.js +9 -1
  41. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  42. package/dist/esm/components/DropdownSelect/DropdownSelect.js +2 -2
  43. package/dist/esm/components/DropdownSelect/DropdownSelect.js.map +1 -1
  44. package/dist/esm/components/InputCounter/InputCounter.css +175 -0
  45. package/dist/esm/components/InputCounter/InputCounter.js +160 -0
  46. package/dist/esm/components/InputCounter/InputCounter.js.map +1 -0
  47. package/dist/esm/components/InputCounter/index.js +3 -0
  48. package/dist/esm/components/InputCounter/index.js.map +1 -0
  49. package/dist/esm/components/Menu/Menu.js +26 -11
  50. package/dist/esm/components/Menu/Menu.js.map +1 -1
  51. package/dist/esm/components/Popover/Popover.js +10 -5
  52. package/dist/esm/components/Popover/Popover.js.map +1 -1
  53. package/dist/esm/components/Tooltip/Tooltip.js +7 -2
  54. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  55. package/dist/esm/components/index.js +2 -0
  56. package/dist/esm/components/index.js.map +1 -1
  57. package/dist/esm/utils/suggestionList.js +22 -0
  58. package/dist/esm/utils/suggestionList.js.map +1 -0
  59. package/dist/esm/utils/usePortalContainer.js +29 -0
  60. package/dist/esm/utils/usePortalContainer.js.map +1 -0
  61. package/dist/styles/components/Autocomplete.css +63 -0
  62. package/dist/styles/components/InputCounter.css +175 -0
  63. package/dist/styles/index.css +449 -205
  64. package/dist/styles/muka-dark.css +449 -205
  65. package/dist/styles/muka-light.css +449 -205
  66. package/dist/styles/wireframe-dark.css +449 -205
  67. package/dist/styles/wireframe-light.css +449 -205
  68. package/dist/types/components/Autocomplete/Autocomplete.d.ts +105 -0
  69. package/dist/types/components/Autocomplete/Autocomplete.d.ts.map +1 -0
  70. package/dist/types/components/Autocomplete/index.d.ts +2 -0
  71. package/dist/types/components/Autocomplete/index.d.ts.map +1 -0
  72. package/dist/types/components/Combobox/Combobox.d.ts +2 -2
  73. package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
  74. package/dist/types/components/ContextSelect/ContextSelect.d.ts +6 -0
  75. package/dist/types/components/ContextSelect/ContextSelect.d.ts.map +1 -1
  76. package/dist/types/components/Dialog/Dialog.d.ts.map +1 -1
  77. package/dist/types/components/DropdownSelect/DropdownSelect.d.ts +6 -0
  78. package/dist/types/components/DropdownSelect/DropdownSelect.d.ts.map +1 -1
  79. package/dist/types/components/InputCounter/InputCounter.d.ts +79 -0
  80. package/dist/types/components/InputCounter/InputCounter.d.ts.map +1 -0
  81. package/dist/types/components/InputCounter/index.d.ts +3 -0
  82. package/dist/types/components/InputCounter/index.d.ts.map +1 -0
  83. package/dist/types/components/Menu/Menu.d.ts +4 -4
  84. package/dist/types/components/Menu/Menu.d.ts.map +1 -1
  85. package/dist/types/components/Popover/Popover.d.ts +12 -0
  86. package/dist/types/components/Popover/Popover.d.ts.map +1 -1
  87. package/dist/types/components/Tooltip/Tooltip.d.ts +6 -0
  88. package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -1
  89. package/dist/types/components/index.d.ts +2 -0
  90. package/dist/types/components/index.d.ts.map +1 -1
  91. package/dist/types/utils/suggestionList.d.ts +13 -0
  92. package/dist/types/utils/suggestionList.d.ts.map +1 -0
  93. package/dist/types/utils/usePortalContainer.d.ts +19 -0
  94. package/dist/types/utils/usePortalContainer.d.ts.map +1 -0
  95. package/docs/consumers/README.md +2 -2
  96. package/package.json +1 -1
@@ -3766,6 +3766,88 @@ body {
3766
3766
  }
3767
3767
 
3768
3768
 
3769
+ /* TextLink */
3770
+ /* TextLink Component Styles - Using Muka Design Tokens */
3771
+
3772
+ .muka-text-link {
3773
+ display: inline;
3774
+ cursor: pointer;
3775
+ text-decoration: underline;
3776
+ /* Nudge the rule clear of descenders; the Figma underline sits off baseline. */
3777
+ text-underline-offset: 0.2em;
3778
+ text-decoration-thickness: from-font;
3779
+ /* Rounds the focus ring's corners; the link itself has no visible box. */
3780
+ border-radius: var(--border-radius-sm);
3781
+ transition: color var(--motion-duration-micro, 0.15s) var(--motion-easing-enter, ease);
3782
+ }
3783
+
3784
+ /* ─── Sizes ───────────────────────────────────────────────
3785
+ Mirrors the body text scale so a link matches the copy it sits in. */
3786
+ .muka-text-link--sm {
3787
+ font-family: var(--text-body-sm-regular-fontFamily);
3788
+ font-weight: var(--text-body-sm-regular-fontWeight);
3789
+ font-size: var(--text-body-sm-regular-fontSize);
3790
+ line-height: var(--text-body-sm-regular-lineHeight);
3791
+ }
3792
+
3793
+ .muka-text-link--base {
3794
+ font-family: var(--text-body-base-regular-fontFamily);
3795
+ font-weight: var(--text-body-base-regular-fontWeight);
3796
+ font-size: var(--text-body-base-regular-fontSize);
3797
+ line-height: var(--text-body-base-regular-lineHeight);
3798
+ }
3799
+
3800
+ .muka-text-link--lg {
3801
+ font-family: var(--text-body-lg-regular-fontFamily);
3802
+ font-weight: var(--text-body-lg-regular-fontWeight);
3803
+ font-size: var(--text-body-lg-regular-fontSize);
3804
+ line-height: var(--text-body-lg-regular-lineHeight);
3805
+ }
3806
+
3807
+ /* ─── Variant: default (accent) ───────────────────────────
3808
+ Visited repeats the default colour on purpose: the design treats visited and
3809
+ default the same, and pinning it stops the browser's purple from showing. */
3810
+ .muka-text-link--default,
3811
+ .muka-text-link--default:visited {
3812
+ color: var(--color-text-action-default);
3813
+ }
3814
+
3815
+ .muka-text-link--default:hover,
3816
+ .muka-text-link--default:focus-visible {
3817
+ color: var(--color-text-action-hover);
3818
+ }
3819
+
3820
+ .muka-text-link--default:active {
3821
+ color: var(--color-text-action-pressed);
3822
+ }
3823
+
3824
+ /* ─── Variant: subtle (neutral) ───────────────────────────
3825
+ Hover, focus and pressed all darken to the default text colour. */
3826
+ .muka-text-link--subtle,
3827
+ .muka-text-link--subtle:visited {
3828
+ color: var(--color-text-subtle-default);
3829
+ }
3830
+
3831
+ .muka-text-link--subtle:hover,
3832
+ .muka-text-link--subtle:focus-visible,
3833
+ .muka-text-link--subtle:active {
3834
+ color: var(--color-text-default-default);
3835
+ }
3836
+
3837
+ /* ─── Focus ───────────────────────────────────────────────
3838
+ Same ring as every other focusable Muka component. */
3839
+ .muka-text-link:focus-visible {
3840
+ outline: 2px solid var(--color-border-focus);
3841
+ outline-offset: 2px;
3842
+ }
3843
+
3844
+ @media (prefers-reduced-motion: reduce) {
3845
+ .muka-text-link {
3846
+ transition: none;
3847
+ }
3848
+ }
3849
+
3850
+
3769
3851
  /* Textarea */
3770
3852
  /* Textarea Component Styles - Using Muka Design Tokens */
3771
3853
 
@@ -3930,88 +4012,6 @@ body {
3930
4012
  }
3931
4013
 
3932
4014
 
3933
- /* TextLink */
3934
- /* TextLink Component Styles - Using Muka Design Tokens */
3935
-
3936
- .muka-text-link {
3937
- display: inline;
3938
- cursor: pointer;
3939
- text-decoration: underline;
3940
- /* Nudge the rule clear of descenders; the Figma underline sits off baseline. */
3941
- text-underline-offset: 0.2em;
3942
- text-decoration-thickness: from-font;
3943
- /* Rounds the focus ring's corners; the link itself has no visible box. */
3944
- border-radius: var(--border-radius-sm);
3945
- transition: color var(--motion-duration-micro, 0.15s) var(--motion-easing-enter, ease);
3946
- }
3947
-
3948
- /* ─── Sizes ───────────────────────────────────────────────
3949
- Mirrors the body text scale so a link matches the copy it sits in. */
3950
- .muka-text-link--sm {
3951
- font-family: var(--text-body-sm-regular-fontFamily);
3952
- font-weight: var(--text-body-sm-regular-fontWeight);
3953
- font-size: var(--text-body-sm-regular-fontSize);
3954
- line-height: var(--text-body-sm-regular-lineHeight);
3955
- }
3956
-
3957
- .muka-text-link--base {
3958
- font-family: var(--text-body-base-regular-fontFamily);
3959
- font-weight: var(--text-body-base-regular-fontWeight);
3960
- font-size: var(--text-body-base-regular-fontSize);
3961
- line-height: var(--text-body-base-regular-lineHeight);
3962
- }
3963
-
3964
- .muka-text-link--lg {
3965
- font-family: var(--text-body-lg-regular-fontFamily);
3966
- font-weight: var(--text-body-lg-regular-fontWeight);
3967
- font-size: var(--text-body-lg-regular-fontSize);
3968
- line-height: var(--text-body-lg-regular-lineHeight);
3969
- }
3970
-
3971
- /* ─── Variant: default (accent) ───────────────────────────
3972
- Visited repeats the default colour on purpose: the design treats visited and
3973
- default the same, and pinning it stops the browser's purple from showing. */
3974
- .muka-text-link--default,
3975
- .muka-text-link--default:visited {
3976
- color: var(--color-text-action-default);
3977
- }
3978
-
3979
- .muka-text-link--default:hover,
3980
- .muka-text-link--default:focus-visible {
3981
- color: var(--color-text-action-hover);
3982
- }
3983
-
3984
- .muka-text-link--default:active {
3985
- color: var(--color-text-action-pressed);
3986
- }
3987
-
3988
- /* ─── Variant: subtle (neutral) ───────────────────────────
3989
- Hover, focus and pressed all darken to the default text colour. */
3990
- .muka-text-link--subtle,
3991
- .muka-text-link--subtle:visited {
3992
- color: var(--color-text-subtle-default);
3993
- }
3994
-
3995
- .muka-text-link--subtle:hover,
3996
- .muka-text-link--subtle:focus-visible,
3997
- .muka-text-link--subtle:active {
3998
- color: var(--color-text-default-default);
3999
- }
4000
-
4001
- /* ─── Focus ───────────────────────────────────────────────
4002
- Same ring as every other focusable Muka component. */
4003
- .muka-text-link:focus-visible {
4004
- outline: 2px solid var(--color-border-focus);
4005
- outline-offset: 2px;
4006
- }
4007
-
4008
- @media (prefers-reduced-motion: reduce) {
4009
- .muka-text-link {
4010
- transition: none;
4011
- }
4012
- }
4013
-
4014
-
4015
4015
  /* Tabs */
4016
4016
  /* Tabs Component Styles - Clean underline style tabs matching Figma */
4017
4017
 
@@ -7433,6 +7433,77 @@ body {
7433
7433
  }
7434
7434
 
7435
7435
 
7436
+ /* ProfileBadge */
7437
+ /* ProfileBadge Component Styles - Using Muka Design Tokens */
7438
+
7439
+ .muka-profile-badge {
7440
+ display: inline-flex;
7441
+ align-items: center;
7442
+ font-family: var(--text-body-base-regular-fontFamily);
7443
+ }
7444
+
7445
+ /* Size variants */
7446
+ .muka-profile-badge--lg {
7447
+ gap: var(--spacing-4); /* 16px */
7448
+ }
7449
+
7450
+ .muka-profile-badge--md {
7451
+ gap: var(--spacing-3); /* 12px */
7452
+ }
7453
+
7454
+ .muka-profile-badge__avatar {
7455
+ flex-shrink: 0;
7456
+ }
7457
+
7458
+ /* Text stack */
7459
+ .muka-profile-badge__text {
7460
+ display: flex;
7461
+ flex-direction: column;
7462
+ align-items: flex-start;
7463
+ min-width: 0;
7464
+ }
7465
+
7466
+ .muka-profile-badge__name {
7467
+ font-family: var(--text-body-base-regular-fontFamily);
7468
+ font-size: var(--text-body-base-regular-fontSize);
7469
+ font-weight: var(--text-body-base-regular-fontWeight);
7470
+ line-height: var(--text-body-base-regular-lineHeight);
7471
+ color: var(--color-text-default-default);
7472
+ }
7473
+
7474
+ .muka-profile-badge__email {
7475
+ font-family: var(--text-body-xs-regular-fontFamily);
7476
+ font-size: var(--text-body-xs-regular-fontSize);
7477
+ font-weight: var(--text-body-xs-regular-fontWeight);
7478
+ line-height: var(--text-body-xs-regular-lineHeight);
7479
+ color: var(--color-text-subtle-default);
7480
+ }
7481
+
7482
+ /* Clickable state */
7483
+ .muka-profile-badge--clickable {
7484
+ cursor: pointer;
7485
+ border: none;
7486
+ background: none;
7487
+ padding: 0;
7488
+ text-align: left;
7489
+ border-radius: var(--radius-md);
7490
+ transition: opacity 0.2s ease;
7491
+ }
7492
+
7493
+ .muka-profile-badge--clickable:hover {
7494
+ opacity: 0.9;
7495
+ }
7496
+
7497
+ .muka-profile-badge--clickable:active {
7498
+ opacity: 0.8;
7499
+ }
7500
+
7501
+ .muka-profile-badge--clickable:focus-visible {
7502
+ outline: 2px solid var(--color-border-focus);
7503
+ outline-offset: 2px;
7504
+ }
7505
+
7506
+
7436
7507
  /* PriceTag */
7437
7508
  /* PriceTag Component Styles - Using Muka Design Tokens */
7438
7509
 
@@ -7499,105 +7570,34 @@ body {
7499
7570
  color: var(--color-text-default-default);
7500
7571
  }
7501
7572
 
7502
- /* ─── Small size typography ───────────────────────────── */
7503
-
7504
- .muka-price-tag--sm .muka-price-tag__currency {
7505
- font-family: var(--text-body-base-regular-fontFamily);
7506
- font-weight: var(--text-body-base-regular-fontWeight);
7507
- font-size: var(--text-body-base-regular-fontSize);
7508
- line-height: var(--text-label-md-bold-lineHeight);
7509
- color: var(--color-text-subtle-default);
7510
- }
7511
-
7512
- .muka-price-tag--sm .muka-price-tag__whole,
7513
- .muka-price-tag--sm .muka-price-tag__decimal,
7514
- .muka-price-tag--sm .muka-price-tag__cents {
7515
- font-family: var(--text-label-md-bold-fontFamily);
7516
- font-weight: var(--text-label-md-bold-fontWeight);
7517
- font-size: var(--text-label-md-bold-fontSize);
7518
- line-height: var(--text-label-md-bold-lineHeight);
7519
- color: var(--color-text-default-default);
7520
- }
7521
-
7522
- /* ─── Unit label (same for both sizes) ────────────────── */
7523
-
7524
- .muka-price-tag__unit {
7525
- font-family: var(--text-body-sm-regular-fontFamily);
7526
- font-weight: var(--text-body-sm-regular-fontWeight);
7527
- font-size: var(--text-body-sm-regular-fontSize);
7528
- line-height: var(--text-body-sm-regular-lineHeight);
7529
- color: var(--color-text-subtle-default);
7530
- }
7531
-
7532
-
7533
- /* ProfileBadge */
7534
- /* ProfileBadge Component Styles - Using Muka Design Tokens */
7535
-
7536
- .muka-profile-badge {
7537
- display: inline-flex;
7538
- align-items: center;
7539
- font-family: var(--text-body-base-regular-fontFamily);
7540
- }
7541
-
7542
- /* Size variants */
7543
- .muka-profile-badge--lg {
7544
- gap: var(--spacing-4); /* 16px */
7545
- }
7546
-
7547
- .muka-profile-badge--md {
7548
- gap: var(--spacing-3); /* 12px */
7549
- }
7550
-
7551
- .muka-profile-badge__avatar {
7552
- flex-shrink: 0;
7553
- }
7554
-
7555
- /* Text stack */
7556
- .muka-profile-badge__text {
7557
- display: flex;
7558
- flex-direction: column;
7559
- align-items: flex-start;
7560
- min-width: 0;
7561
- }
7562
-
7563
- .muka-profile-badge__name {
7564
- font-family: var(--text-body-base-regular-fontFamily);
7565
- font-size: var(--text-body-base-regular-fontSize);
7566
- font-weight: var(--text-body-base-regular-fontWeight);
7567
- line-height: var(--text-body-base-regular-lineHeight);
7568
- color: var(--color-text-default-default);
7569
- }
7570
-
7571
- .muka-profile-badge__email {
7572
- font-family: var(--text-body-xs-regular-fontFamily);
7573
- font-size: var(--text-body-xs-regular-fontSize);
7574
- font-weight: var(--text-body-xs-regular-fontWeight);
7575
- line-height: var(--text-body-xs-regular-lineHeight);
7576
- color: var(--color-text-subtle-default);
7577
- }
7578
-
7579
- /* Clickable state */
7580
- .muka-profile-badge--clickable {
7581
- cursor: pointer;
7582
- border: none;
7583
- background: none;
7584
- padding: 0;
7585
- text-align: left;
7586
- border-radius: var(--radius-md);
7587
- transition: opacity 0.2s ease;
7588
- }
7589
-
7590
- .muka-profile-badge--clickable:hover {
7591
- opacity: 0.9;
7573
+ /* ─── Small size typography ───────────────────────────── */
7574
+
7575
+ .muka-price-tag--sm .muka-price-tag__currency {
7576
+ font-family: var(--text-body-base-regular-fontFamily);
7577
+ font-weight: var(--text-body-base-regular-fontWeight);
7578
+ font-size: var(--text-body-base-regular-fontSize);
7579
+ line-height: var(--text-label-md-bold-lineHeight);
7580
+ color: var(--color-text-subtle-default);
7592
7581
  }
7593
7582
 
7594
- .muka-profile-badge--clickable:active {
7595
- opacity: 0.8;
7583
+ .muka-price-tag--sm .muka-price-tag__whole,
7584
+ .muka-price-tag--sm .muka-price-tag__decimal,
7585
+ .muka-price-tag--sm .muka-price-tag__cents {
7586
+ font-family: var(--text-label-md-bold-fontFamily);
7587
+ font-weight: var(--text-label-md-bold-fontWeight);
7588
+ font-size: var(--text-label-md-bold-fontSize);
7589
+ line-height: var(--text-label-md-bold-lineHeight);
7590
+ color: var(--color-text-default-default);
7596
7591
  }
7597
7592
 
7598
- .muka-profile-badge--clickable:focus-visible {
7599
- outline: 2px solid var(--color-border-focus);
7600
- outline-offset: 2px;
7593
+ /* ─── Unit label (same for both sizes) ────────────────── */
7594
+
7595
+ .muka-price-tag__unit {
7596
+ font-family: var(--text-body-sm-regular-fontFamily);
7597
+ font-weight: var(--text-body-sm-regular-fontWeight);
7598
+ font-size: var(--text-body-sm-regular-fontSize);
7599
+ line-height: var(--text-body-sm-regular-lineHeight);
7600
+ color: var(--color-text-subtle-default);
7601
7601
  }
7602
7602
 
7603
7603
 
@@ -8019,6 +8019,34 @@ body {
8019
8019
  }
8020
8020
 
8021
8021
 
8022
+ /* NavigationTransition */
8023
+ /* NavigationTransition Component Styles */
8024
+
8025
+ /* ─── Wrapper ────────────────────────────────────────── */
8026
+
8027
+ .muka-nav-transition {
8028
+ position: relative;
8029
+ height: 100vh;
8030
+ overflow: hidden;
8031
+ }
8032
+
8033
+ /* Disable interaction during animation */
8034
+ .muka-nav-transition--active {
8035
+ pointer-events: none;
8036
+ }
8037
+
8038
+ /* ─── View slots ─────────────────────────────────────── */
8039
+
8040
+ .muka-nav-transition--active .muka-nav-transition__view {
8041
+ position: absolute;
8042
+ inset: 0;
8043
+ }
8044
+
8045
+ /* Z-index layering */
8046
+ .muka-nav-transition__view--bottom { z-index: 1; }
8047
+ .muka-nav-transition__view--top { z-index: 2; }
8048
+
8049
+
8022
8050
  /* Menu */
8023
8051
  /* Menu Component Styles */
8024
8052
 
@@ -8498,34 +8526,6 @@ body {
8498
8526
  }
8499
8527
 
8500
8528
 
8501
- /* NavigationTransition */
8502
- /* NavigationTransition Component Styles */
8503
-
8504
- /* ─── Wrapper ────────────────────────────────────────── */
8505
-
8506
- .muka-nav-transition {
8507
- position: relative;
8508
- height: 100vh;
8509
- overflow: hidden;
8510
- }
8511
-
8512
- /* Disable interaction during animation */
8513
- .muka-nav-transition--active {
8514
- pointer-events: none;
8515
- }
8516
-
8517
- /* ─── View slots ─────────────────────────────────────── */
8518
-
8519
- .muka-nav-transition--active .muka-nav-transition__view {
8520
- position: absolute;
8521
- inset: 0;
8522
- }
8523
-
8524
- /* Z-index layering */
8525
- .muka-nav-transition__view--bottom { z-index: 1; }
8526
- .muka-nav-transition__view--top { z-index: 2; }
8527
-
8528
-
8529
8529
  /* ListItem */
8530
8530
  /* ListItem Component Styles - Using Muka Design Tokens */
8531
8531
 
@@ -8954,6 +8954,184 @@ li.muka-listitem {
8954
8954
  }
8955
8955
 
8956
8956
 
8957
+ /* InputCounter */
8958
+ /* InputCounter — numeric field + joined decrement/increment buttons.
8959
+ Label, helper and error text reuse Input.css (../Input/Input.css).
8960
+ Field and button group share one radius per size:
8961
+ sm/md → input.field.radius.md, lg → input.field.radius.lg. */
8962
+
8963
+ .muka-inputcounter {
8964
+ --muka-inputcounter-radius: var(--input-field-radius-md);
8965
+ --muka-inputcounter-height: var(--input-field-height-default);
8966
+ --muka-inputcounter-pad: calc(var(--spacing-2) + var(--spacing-1));
8967
+ --muka-inputcounter-min: var(--size-3xl);
8968
+
8969
+ display: inline-flex;
8970
+ flex-direction: column;
8971
+ gap: var(--spacing-2);
8972
+ }
8973
+
8974
+ .muka-inputcounter--sm {
8975
+ --muka-inputcounter-height: var(--input-field-height-sm);
8976
+ --muka-inputcounter-pad: calc(var(--spacing-1) + var(--spacing-1));
8977
+ --muka-inputcounter-min: var(--size-2xl);
8978
+ }
8979
+
8980
+ .muka-inputcounter--lg {
8981
+ --muka-inputcounter-radius: var(--input-field-radius-lg);
8982
+ --muka-inputcounter-height: var(--input-field-height-lg);
8983
+ }
8984
+
8985
+ /* Label row — label, info tooltip trigger, optional hint */
8986
+ .muka-inputcounter__label-row {
8987
+ display: flex;
8988
+ align-items: center;
8989
+ gap: var(--spacing-2);
8990
+ min-height: var(--size-xl);
8991
+ }
8992
+
8993
+ .muka-inputcounter__info {
8994
+ display: inline-flex;
8995
+ align-items: center;
8996
+ justify-content: center;
8997
+ padding: 0;
8998
+ border: none;
8999
+ border-radius: 50%;
9000
+ background: transparent;
9001
+ cursor: pointer;
9002
+ }
9003
+
9004
+ .muka-inputcounter__info .muka-icon {
9005
+ color: var(--color-action-default);
9006
+ }
9007
+
9008
+ .muka-inputcounter__info:focus-visible {
9009
+ outline: 2px solid var(--color-border-focus);
9010
+ outline-offset: 2px;
9011
+ }
9012
+
9013
+ .muka-inputcounter__optional {
9014
+ font-family: var(--text-label-sm-regular-fontFamily);
9015
+ font-weight: var(--text-label-sm-regular-fontWeight);
9016
+ font-size: var(--text-label-sm-regular-fontSize);
9017
+ line-height: var(--text-label-sm-regular-lineHeight);
9018
+ color: var(--color-text-subtle-default);
9019
+ }
9020
+
9021
+ /* Field + button group */
9022
+ .muka-inputcounter__row {
9023
+ display: flex;
9024
+ align-items: center;
9025
+ gap: var(--spacing-3);
9026
+ }
9027
+
9028
+ /* Field — grows with the value (in ch), never narrower than the Figma width.
9029
+ Padding sits on the native input so the 2px focus/error border doesn't
9030
+ need compensating: content is centred in a fixed box. */
9031
+ .muka-inputcounter__field {
9032
+ position: relative;
9033
+ display: flex;
9034
+ align-items: center;
9035
+ box-sizing: border-box;
9036
+ height: var(--muka-inputcounter-height);
9037
+ width: calc(
9038
+ max(var(--muka-inputcounter-min), calc(var(--muka-inputcounter-chars, 1) * 1ch)) +
9039
+ 2 * var(--muka-inputcounter-pad) + 2 * var(--border-width-regular)
9040
+ );
9041
+ background-color: var(--input-field-color-default-background);
9042
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
9043
+ border-radius: var(--muka-inputcounter-radius);
9044
+ transition: border-color 0.2s ease, background-color 0.2s ease;
9045
+ }
9046
+
9047
+ .muka-inputcounter__field::after {
9048
+ content: '';
9049
+ position: absolute;
9050
+ inset: 0;
9051
+ border-radius: inherit;
9052
+ box-shadow: var(--shadow-sunken);
9053
+ pointer-events: none;
9054
+ }
9055
+
9056
+ .muka-inputcounter__field--focused:not(.muka-inputcounter__field--disabled) {
9057
+ border-width: var(--border-width-bold);
9058
+ border-color: var(--input-field-color-focus-border);
9059
+ background-color: var(--input-field-color-focus-background);
9060
+ }
9061
+
9062
+ .muka-inputcounter__field--error:not(.muka-inputcounter__field--disabled) {
9063
+ border-width: var(--border-width-bold);
9064
+ border-color: var(--input-field-color-error-border);
9065
+ background-color: var(--input-field-color-error-background);
9066
+ }
9067
+
9068
+ .muka-inputcounter__field--disabled {
9069
+ background-color: var(--input-field-color-disabled-background);
9070
+ border-color: var(--input-field-color-disabled-border);
9071
+ }
9072
+
9073
+ .muka-inputcounter__field--disabled::after {
9074
+ display: none;
9075
+ }
9076
+
9077
+ .muka-inputcounter__native {
9078
+ width: 100%;
9079
+ min-width: 0;
9080
+ height: 100%;
9081
+ box-sizing: border-box;
9082
+ padding: 0 calc(var(--muka-inputcounter-pad) - var(--border-width-regular));
9083
+ border: none;
9084
+ outline: none;
9085
+ background: transparent;
9086
+ text-align: center;
9087
+ font-variant-numeric: tabular-nums;
9088
+ color: var(--input-field-color-default-foreground);
9089
+ font-family: var(--text-input-md-fontFamily);
9090
+ font-weight: var(--text-input-md-fontWeight);
9091
+ font-size: var(--text-input-md-fontSize);
9092
+ line-height: var(--text-input-md-lineHeight);
9093
+ }
9094
+
9095
+ .muka-inputcounter--sm .muka-inputcounter__native {
9096
+ font-family: var(--text-input-sm-fontFamily);
9097
+ font-weight: var(--text-input-sm-fontWeight);
9098
+ font-size: var(--text-input-sm-fontSize);
9099
+ line-height: var(--text-input-sm-lineHeight);
9100
+ }
9101
+
9102
+ .muka-inputcounter__field--disabled .muka-inputcounter__native {
9103
+ color: var(--input-field-color-disabled-foreground);
9104
+ cursor: not-allowed;
9105
+ }
9106
+
9107
+ /* Button group — secondary icon-only Buttons joined by a divider.
9108
+ Only the outer corners are rounded. */
9109
+ .muka-inputcounter__group {
9110
+ display: inline-flex;
9111
+ align-items: stretch;
9112
+ }
9113
+
9114
+ .muka-inputcounter__group .muka-button {
9115
+ border-radius: 0;
9116
+ }
9117
+
9118
+ .muka-inputcounter__group .muka-button:first-child {
9119
+ border-start-start-radius: var(--muka-inputcounter-radius);
9120
+ border-end-start-radius: var(--muka-inputcounter-radius);
9121
+ }
9122
+
9123
+ .muka-inputcounter__group .muka-button:last-child {
9124
+ border-start-end-radius: var(--muka-inputcounter-radius);
9125
+ border-end-end-radius: var(--muka-inputcounter-radius);
9126
+ }
9127
+
9128
+ .muka-inputcounter__divider {
9129
+ flex: none;
9130
+ width: var(--border-width-regular);
9131
+ background-color: var(--color-border-default);
9132
+ }
9133
+
9134
+
8957
9135
  /* Input */
8958
9136
  /* Input Component Styles - Using Muka Design Tokens */
8959
9137
 
@@ -14579,6 +14757,72 @@ button.muka-chat-photo-grid__tile:focus-visible {
14579
14757
  }
14580
14758
 
14581
14759
 
14760
+ /* Autocomplete */
14761
+ /* Autocomplete — Figma Input Autocomplete (Input field + single-line suggestion Menu).
14762
+ The field reuses the Input styles (.muka-input*); only the menu wiring lives here. */
14763
+
14764
+ .muka-autocomplete {
14765
+ min-width: 200px;
14766
+ }
14767
+
14768
+ /* Covers the field's outer edge so the menu matches its full width. The menu
14769
+ is only open while focused, when the field has the bold border. */
14770
+ .muka-autocomplete__menu-anchor {
14771
+ position: absolute;
14772
+ inset: calc(-1 * var(--border-width-bold));
14773
+ z-index: 0;
14774
+ margin: 0;
14775
+ padding: 0;
14776
+ border: none;
14777
+ background: transparent;
14778
+ pointer-events: none;
14779
+ opacity: 0;
14780
+ }
14781
+
14782
+ /* Keep the field content above the invisible anchor. */
14783
+ .muka-autocomplete__field > :not(.muka-autocomplete__menu-anchor) {
14784
+ position: relative;
14785
+ z-index: 1;
14786
+ }
14787
+
14788
+ /* Figma: the menu is as wide as the field (never below the menu min-width token). */
14789
+ .muka-autocomplete__menu {
14790
+ width: var(--radix-dropdown-menu-trigger-width);
14791
+ max-width: calc(100vw - 2rem);
14792
+ }
14793
+
14794
+ /* Suggestions are single-line; long labels truncate. */
14795
+ .muka-autocomplete__menu .muka-menu__item-label {
14796
+ overflow: hidden;
14797
+ text-overflow: ellipsis;
14798
+ }
14799
+
14800
+ /* Loading and empty rows: menu-row geometry, not selectable. */
14801
+ .muka-autocomplete__status {
14802
+ display: flex;
14803
+ align-items: center;
14804
+ gap: var(--menu-item-gap);
14805
+ min-height: var(--menu-item-height);
14806
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
14807
+ color: var(--color-text-subtle-default);
14808
+ font-family: var(--text-label-md-regular-fontFamily);
14809
+ font-size: var(--text-label-md-regular-fontSize);
14810
+ font-weight: var(--text-label-md-regular-fontWeight);
14811
+ line-height: var(--text-label-md-regular-lineHeight);
14812
+ }
14813
+
14814
+ .muka-autocomplete__footer {
14815
+ flex-shrink: 0;
14816
+ padding: var(--spacing-2) var(--spacing-3);
14817
+ border-top: var(--border-width-regular) solid var(--color-border-default);
14818
+ color: var(--color-text-subtle-default);
14819
+ font-family: var(--text-label-sm-regular-fontFamily);
14820
+ font-size: var(--text-label-sm-regular-fontSize);
14821
+ font-weight: var(--text-label-sm-regular-fontWeight);
14822
+ line-height: var(--text-label-sm-regular-lineHeight);
14823
+ }
14824
+
14825
+
14582
14826
  /* AppShell */
14583
14827
  /* AppShell Component Styles */
14584
14828