@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
@@ -3798,6 +3798,88 @@ body {
3798
3798
  }
3799
3799
 
3800
3800
 
3801
+ /* TextLink */
3802
+ /* TextLink Component Styles - Using Muka Design Tokens */
3803
+
3804
+ .muka-text-link {
3805
+ display: inline;
3806
+ cursor: pointer;
3807
+ text-decoration: underline;
3808
+ /* Nudge the rule clear of descenders; the Figma underline sits off baseline. */
3809
+ text-underline-offset: 0.2em;
3810
+ text-decoration-thickness: from-font;
3811
+ /* Rounds the focus ring's corners; the link itself has no visible box. */
3812
+ border-radius: var(--border-radius-sm);
3813
+ transition: color var(--motion-duration-micro, 0.15s) var(--motion-easing-enter, ease);
3814
+ }
3815
+
3816
+ /* ─── Sizes ───────────────────────────────────────────────
3817
+ Mirrors the body text scale so a link matches the copy it sits in. */
3818
+ .muka-text-link--sm {
3819
+ font-family: var(--text-body-sm-regular-fontFamily);
3820
+ font-weight: var(--text-body-sm-regular-fontWeight);
3821
+ font-size: var(--text-body-sm-regular-fontSize);
3822
+ line-height: var(--text-body-sm-regular-lineHeight);
3823
+ }
3824
+
3825
+ .muka-text-link--base {
3826
+ font-family: var(--text-body-base-regular-fontFamily);
3827
+ font-weight: var(--text-body-base-regular-fontWeight);
3828
+ font-size: var(--text-body-base-regular-fontSize);
3829
+ line-height: var(--text-body-base-regular-lineHeight);
3830
+ }
3831
+
3832
+ .muka-text-link--lg {
3833
+ font-family: var(--text-body-lg-regular-fontFamily);
3834
+ font-weight: var(--text-body-lg-regular-fontWeight);
3835
+ font-size: var(--text-body-lg-regular-fontSize);
3836
+ line-height: var(--text-body-lg-regular-lineHeight);
3837
+ }
3838
+
3839
+ /* ─── Variant: default (accent) ───────────────────────────
3840
+ Visited repeats the default colour on purpose: the design treats visited and
3841
+ default the same, and pinning it stops the browser's purple from showing. */
3842
+ .muka-text-link--default,
3843
+ .muka-text-link--default:visited {
3844
+ color: var(--color-text-action-default);
3845
+ }
3846
+
3847
+ .muka-text-link--default:hover,
3848
+ .muka-text-link--default:focus-visible {
3849
+ color: var(--color-text-action-hover);
3850
+ }
3851
+
3852
+ .muka-text-link--default:active {
3853
+ color: var(--color-text-action-pressed);
3854
+ }
3855
+
3856
+ /* ─── Variant: subtle (neutral) ───────────────────────────
3857
+ Hover, focus and pressed all darken to the default text colour. */
3858
+ .muka-text-link--subtle,
3859
+ .muka-text-link--subtle:visited {
3860
+ color: var(--color-text-subtle-default);
3861
+ }
3862
+
3863
+ .muka-text-link--subtle:hover,
3864
+ .muka-text-link--subtle:focus-visible,
3865
+ .muka-text-link--subtle:active {
3866
+ color: var(--color-text-default-default);
3867
+ }
3868
+
3869
+ /* ─── Focus ───────────────────────────────────────────────
3870
+ Same ring as every other focusable Muka component. */
3871
+ .muka-text-link:focus-visible {
3872
+ outline: 2px solid var(--color-border-focus);
3873
+ outline-offset: 2px;
3874
+ }
3875
+
3876
+ @media (prefers-reduced-motion: reduce) {
3877
+ .muka-text-link {
3878
+ transition: none;
3879
+ }
3880
+ }
3881
+
3882
+
3801
3883
  /* Textarea */
3802
3884
  /* Textarea Component Styles - Using Muka Design Tokens */
3803
3885
 
@@ -3962,88 +4044,6 @@ body {
3962
4044
  }
3963
4045
 
3964
4046
 
3965
- /* TextLink */
3966
- /* TextLink Component Styles - Using Muka Design Tokens */
3967
-
3968
- .muka-text-link {
3969
- display: inline;
3970
- cursor: pointer;
3971
- text-decoration: underline;
3972
- /* Nudge the rule clear of descenders; the Figma underline sits off baseline. */
3973
- text-underline-offset: 0.2em;
3974
- text-decoration-thickness: from-font;
3975
- /* Rounds the focus ring's corners; the link itself has no visible box. */
3976
- border-radius: var(--border-radius-sm);
3977
- transition: color var(--motion-duration-micro, 0.15s) var(--motion-easing-enter, ease);
3978
- }
3979
-
3980
- /* ─── Sizes ───────────────────────────────────────────────
3981
- Mirrors the body text scale so a link matches the copy it sits in. */
3982
- .muka-text-link--sm {
3983
- font-family: var(--text-body-sm-regular-fontFamily);
3984
- font-weight: var(--text-body-sm-regular-fontWeight);
3985
- font-size: var(--text-body-sm-regular-fontSize);
3986
- line-height: var(--text-body-sm-regular-lineHeight);
3987
- }
3988
-
3989
- .muka-text-link--base {
3990
- font-family: var(--text-body-base-regular-fontFamily);
3991
- font-weight: var(--text-body-base-regular-fontWeight);
3992
- font-size: var(--text-body-base-regular-fontSize);
3993
- line-height: var(--text-body-base-regular-lineHeight);
3994
- }
3995
-
3996
- .muka-text-link--lg {
3997
- font-family: var(--text-body-lg-regular-fontFamily);
3998
- font-weight: var(--text-body-lg-regular-fontWeight);
3999
- font-size: var(--text-body-lg-regular-fontSize);
4000
- line-height: var(--text-body-lg-regular-lineHeight);
4001
- }
4002
-
4003
- /* ─── Variant: default (accent) ───────────────────────────
4004
- Visited repeats the default colour on purpose: the design treats visited and
4005
- default the same, and pinning it stops the browser's purple from showing. */
4006
- .muka-text-link--default,
4007
- .muka-text-link--default:visited {
4008
- color: var(--color-text-action-default);
4009
- }
4010
-
4011
- .muka-text-link--default:hover,
4012
- .muka-text-link--default:focus-visible {
4013
- color: var(--color-text-action-hover);
4014
- }
4015
-
4016
- .muka-text-link--default:active {
4017
- color: var(--color-text-action-pressed);
4018
- }
4019
-
4020
- /* ─── Variant: subtle (neutral) ───────────────────────────
4021
- Hover, focus and pressed all darken to the default text colour. */
4022
- .muka-text-link--subtle,
4023
- .muka-text-link--subtle:visited {
4024
- color: var(--color-text-subtle-default);
4025
- }
4026
-
4027
- .muka-text-link--subtle:hover,
4028
- .muka-text-link--subtle:focus-visible,
4029
- .muka-text-link--subtle:active {
4030
- color: var(--color-text-default-default);
4031
- }
4032
-
4033
- /* ─── Focus ───────────────────────────────────────────────
4034
- Same ring as every other focusable Muka component. */
4035
- .muka-text-link:focus-visible {
4036
- outline: 2px solid var(--color-border-focus);
4037
- outline-offset: 2px;
4038
- }
4039
-
4040
- @media (prefers-reduced-motion: reduce) {
4041
- .muka-text-link {
4042
- transition: none;
4043
- }
4044
- }
4045
-
4046
-
4047
4047
  /* Tabs */
4048
4048
  /* Tabs Component Styles - Clean underline style tabs matching Figma */
4049
4049
 
@@ -7465,6 +7465,77 @@ body {
7465
7465
  }
7466
7466
 
7467
7467
 
7468
+ /* ProfileBadge */
7469
+ /* ProfileBadge Component Styles - Using Muka Design Tokens */
7470
+
7471
+ .muka-profile-badge {
7472
+ display: inline-flex;
7473
+ align-items: center;
7474
+ font-family: var(--text-body-base-regular-fontFamily);
7475
+ }
7476
+
7477
+ /* Size variants */
7478
+ .muka-profile-badge--lg {
7479
+ gap: var(--spacing-4); /* 16px */
7480
+ }
7481
+
7482
+ .muka-profile-badge--md {
7483
+ gap: var(--spacing-3); /* 12px */
7484
+ }
7485
+
7486
+ .muka-profile-badge__avatar {
7487
+ flex-shrink: 0;
7488
+ }
7489
+
7490
+ /* Text stack */
7491
+ .muka-profile-badge__text {
7492
+ display: flex;
7493
+ flex-direction: column;
7494
+ align-items: flex-start;
7495
+ min-width: 0;
7496
+ }
7497
+
7498
+ .muka-profile-badge__name {
7499
+ font-family: var(--text-body-base-regular-fontFamily);
7500
+ font-size: var(--text-body-base-regular-fontSize);
7501
+ font-weight: var(--text-body-base-regular-fontWeight);
7502
+ line-height: var(--text-body-base-regular-lineHeight);
7503
+ color: var(--color-text-default-default);
7504
+ }
7505
+
7506
+ .muka-profile-badge__email {
7507
+ font-family: var(--text-body-xs-regular-fontFamily);
7508
+ font-size: var(--text-body-xs-regular-fontSize);
7509
+ font-weight: var(--text-body-xs-regular-fontWeight);
7510
+ line-height: var(--text-body-xs-regular-lineHeight);
7511
+ color: var(--color-text-subtle-default);
7512
+ }
7513
+
7514
+ /* Clickable state */
7515
+ .muka-profile-badge--clickable {
7516
+ cursor: pointer;
7517
+ border: none;
7518
+ background: none;
7519
+ padding: 0;
7520
+ text-align: left;
7521
+ border-radius: var(--radius-md);
7522
+ transition: opacity 0.2s ease;
7523
+ }
7524
+
7525
+ .muka-profile-badge--clickable:hover {
7526
+ opacity: 0.9;
7527
+ }
7528
+
7529
+ .muka-profile-badge--clickable:active {
7530
+ opacity: 0.8;
7531
+ }
7532
+
7533
+ .muka-profile-badge--clickable:focus-visible {
7534
+ outline: 2px solid var(--color-border-focus);
7535
+ outline-offset: 2px;
7536
+ }
7537
+
7538
+
7468
7539
  /* PriceTag */
7469
7540
  /* PriceTag Component Styles - Using Muka Design Tokens */
7470
7541
 
@@ -7531,105 +7602,34 @@ body {
7531
7602
  color: var(--color-text-default-default);
7532
7603
  }
7533
7604
 
7534
- /* ─── Small size typography ───────────────────────────── */
7535
-
7536
- .muka-price-tag--sm .muka-price-tag__currency {
7537
- font-family: var(--text-body-base-regular-fontFamily);
7538
- font-weight: var(--text-body-base-regular-fontWeight);
7539
- font-size: var(--text-body-base-regular-fontSize);
7540
- line-height: var(--text-label-md-bold-lineHeight);
7541
- color: var(--color-text-subtle-default);
7542
- }
7543
-
7544
- .muka-price-tag--sm .muka-price-tag__whole,
7545
- .muka-price-tag--sm .muka-price-tag__decimal,
7546
- .muka-price-tag--sm .muka-price-tag__cents {
7547
- font-family: var(--text-label-md-bold-fontFamily);
7548
- font-weight: var(--text-label-md-bold-fontWeight);
7549
- font-size: var(--text-label-md-bold-fontSize);
7550
- line-height: var(--text-label-md-bold-lineHeight);
7551
- color: var(--color-text-default-default);
7552
- }
7553
-
7554
- /* ─── Unit label (same for both sizes) ────────────────── */
7555
-
7556
- .muka-price-tag__unit {
7557
- font-family: var(--text-body-sm-regular-fontFamily);
7558
- font-weight: var(--text-body-sm-regular-fontWeight);
7559
- font-size: var(--text-body-sm-regular-fontSize);
7560
- line-height: var(--text-body-sm-regular-lineHeight);
7561
- color: var(--color-text-subtle-default);
7562
- }
7563
-
7564
-
7565
- /* ProfileBadge */
7566
- /* ProfileBadge Component Styles - Using Muka Design Tokens */
7567
-
7568
- .muka-profile-badge {
7569
- display: inline-flex;
7570
- align-items: center;
7571
- font-family: var(--text-body-base-regular-fontFamily);
7572
- }
7573
-
7574
- /* Size variants */
7575
- .muka-profile-badge--lg {
7576
- gap: var(--spacing-4); /* 16px */
7577
- }
7578
-
7579
- .muka-profile-badge--md {
7580
- gap: var(--spacing-3); /* 12px */
7581
- }
7582
-
7583
- .muka-profile-badge__avatar {
7584
- flex-shrink: 0;
7585
- }
7586
-
7587
- /* Text stack */
7588
- .muka-profile-badge__text {
7589
- display: flex;
7590
- flex-direction: column;
7591
- align-items: flex-start;
7592
- min-width: 0;
7593
- }
7594
-
7595
- .muka-profile-badge__name {
7596
- font-family: var(--text-body-base-regular-fontFamily);
7597
- font-size: var(--text-body-base-regular-fontSize);
7598
- font-weight: var(--text-body-base-regular-fontWeight);
7599
- line-height: var(--text-body-base-regular-lineHeight);
7600
- color: var(--color-text-default-default);
7601
- }
7602
-
7603
- .muka-profile-badge__email {
7604
- font-family: var(--text-body-xs-regular-fontFamily);
7605
- font-size: var(--text-body-xs-regular-fontSize);
7606
- font-weight: var(--text-body-xs-regular-fontWeight);
7607
- line-height: var(--text-body-xs-regular-lineHeight);
7608
- color: var(--color-text-subtle-default);
7609
- }
7610
-
7611
- /* Clickable state */
7612
- .muka-profile-badge--clickable {
7613
- cursor: pointer;
7614
- border: none;
7615
- background: none;
7616
- padding: 0;
7617
- text-align: left;
7618
- border-radius: var(--radius-md);
7619
- transition: opacity 0.2s ease;
7620
- }
7621
-
7622
- .muka-profile-badge--clickable:hover {
7623
- opacity: 0.9;
7605
+ /* ─── Small size typography ───────────────────────────── */
7606
+
7607
+ .muka-price-tag--sm .muka-price-tag__currency {
7608
+ font-family: var(--text-body-base-regular-fontFamily);
7609
+ font-weight: var(--text-body-base-regular-fontWeight);
7610
+ font-size: var(--text-body-base-regular-fontSize);
7611
+ line-height: var(--text-label-md-bold-lineHeight);
7612
+ color: var(--color-text-subtle-default);
7624
7613
  }
7625
7614
 
7626
- .muka-profile-badge--clickable:active {
7627
- opacity: 0.8;
7615
+ .muka-price-tag--sm .muka-price-tag__whole,
7616
+ .muka-price-tag--sm .muka-price-tag__decimal,
7617
+ .muka-price-tag--sm .muka-price-tag__cents {
7618
+ font-family: var(--text-label-md-bold-fontFamily);
7619
+ font-weight: var(--text-label-md-bold-fontWeight);
7620
+ font-size: var(--text-label-md-bold-fontSize);
7621
+ line-height: var(--text-label-md-bold-lineHeight);
7622
+ color: var(--color-text-default-default);
7628
7623
  }
7629
7624
 
7630
- .muka-profile-badge--clickable:focus-visible {
7631
- outline: 2px solid var(--color-border-focus);
7632
- outline-offset: 2px;
7625
+ /* ─── Unit label (same for both sizes) ────────────────── */
7626
+
7627
+ .muka-price-tag__unit {
7628
+ font-family: var(--text-body-sm-regular-fontFamily);
7629
+ font-weight: var(--text-body-sm-regular-fontWeight);
7630
+ font-size: var(--text-body-sm-regular-fontSize);
7631
+ line-height: var(--text-body-sm-regular-lineHeight);
7632
+ color: var(--color-text-subtle-default);
7633
7633
  }
7634
7634
 
7635
7635
 
@@ -8051,6 +8051,34 @@ body {
8051
8051
  }
8052
8052
 
8053
8053
 
8054
+ /* NavigationTransition */
8055
+ /* NavigationTransition Component Styles */
8056
+
8057
+ /* ─── Wrapper ────────────────────────────────────────── */
8058
+
8059
+ .muka-nav-transition {
8060
+ position: relative;
8061
+ height: 100vh;
8062
+ overflow: hidden;
8063
+ }
8064
+
8065
+ /* Disable interaction during animation */
8066
+ .muka-nav-transition--active {
8067
+ pointer-events: none;
8068
+ }
8069
+
8070
+ /* ─── View slots ─────────────────────────────────────── */
8071
+
8072
+ .muka-nav-transition--active .muka-nav-transition__view {
8073
+ position: absolute;
8074
+ inset: 0;
8075
+ }
8076
+
8077
+ /* Z-index layering */
8078
+ .muka-nav-transition__view--bottom { z-index: 1; }
8079
+ .muka-nav-transition__view--top { z-index: 2; }
8080
+
8081
+
8054
8082
  /* Menu */
8055
8083
  /* Menu Component Styles */
8056
8084
 
@@ -8530,34 +8558,6 @@ body {
8530
8558
  }
8531
8559
 
8532
8560
 
8533
- /* NavigationTransition */
8534
- /* NavigationTransition Component Styles */
8535
-
8536
- /* ─── Wrapper ────────────────────────────────────────── */
8537
-
8538
- .muka-nav-transition {
8539
- position: relative;
8540
- height: 100vh;
8541
- overflow: hidden;
8542
- }
8543
-
8544
- /* Disable interaction during animation */
8545
- .muka-nav-transition--active {
8546
- pointer-events: none;
8547
- }
8548
-
8549
- /* ─── View slots ─────────────────────────────────────── */
8550
-
8551
- .muka-nav-transition--active .muka-nav-transition__view {
8552
- position: absolute;
8553
- inset: 0;
8554
- }
8555
-
8556
- /* Z-index layering */
8557
- .muka-nav-transition__view--bottom { z-index: 1; }
8558
- .muka-nav-transition__view--top { z-index: 2; }
8559
-
8560
-
8561
8561
  /* ListItem */
8562
8562
  /* ListItem Component Styles - Using Muka Design Tokens */
8563
8563
 
@@ -8986,6 +8986,184 @@ li.muka-listitem {
8986
8986
  }
8987
8987
 
8988
8988
 
8989
+ /* InputCounter */
8990
+ /* InputCounter — numeric field + joined decrement/increment buttons.
8991
+ Label, helper and error text reuse Input.css (../Input/Input.css).
8992
+ Field and button group share one radius per size:
8993
+ sm/md → input.field.radius.md, lg → input.field.radius.lg. */
8994
+
8995
+ .muka-inputcounter {
8996
+ --muka-inputcounter-radius: var(--input-field-radius-md);
8997
+ --muka-inputcounter-height: var(--input-field-height-default);
8998
+ --muka-inputcounter-pad: calc(var(--spacing-2) + var(--spacing-1));
8999
+ --muka-inputcounter-min: var(--size-3xl);
9000
+
9001
+ display: inline-flex;
9002
+ flex-direction: column;
9003
+ gap: var(--spacing-2);
9004
+ }
9005
+
9006
+ .muka-inputcounter--sm {
9007
+ --muka-inputcounter-height: var(--input-field-height-sm);
9008
+ --muka-inputcounter-pad: calc(var(--spacing-1) + var(--spacing-1));
9009
+ --muka-inputcounter-min: var(--size-2xl);
9010
+ }
9011
+
9012
+ .muka-inputcounter--lg {
9013
+ --muka-inputcounter-radius: var(--input-field-radius-lg);
9014
+ --muka-inputcounter-height: var(--input-field-height-lg);
9015
+ }
9016
+
9017
+ /* Label row — label, info tooltip trigger, optional hint */
9018
+ .muka-inputcounter__label-row {
9019
+ display: flex;
9020
+ align-items: center;
9021
+ gap: var(--spacing-2);
9022
+ min-height: var(--size-xl);
9023
+ }
9024
+
9025
+ .muka-inputcounter__info {
9026
+ display: inline-flex;
9027
+ align-items: center;
9028
+ justify-content: center;
9029
+ padding: 0;
9030
+ border: none;
9031
+ border-radius: 50%;
9032
+ background: transparent;
9033
+ cursor: pointer;
9034
+ }
9035
+
9036
+ .muka-inputcounter__info .muka-icon {
9037
+ color: var(--color-action-default);
9038
+ }
9039
+
9040
+ .muka-inputcounter__info:focus-visible {
9041
+ outline: 2px solid var(--color-border-focus);
9042
+ outline-offset: 2px;
9043
+ }
9044
+
9045
+ .muka-inputcounter__optional {
9046
+ font-family: var(--text-label-sm-regular-fontFamily);
9047
+ font-weight: var(--text-label-sm-regular-fontWeight);
9048
+ font-size: var(--text-label-sm-regular-fontSize);
9049
+ line-height: var(--text-label-sm-regular-lineHeight);
9050
+ color: var(--color-text-subtle-default);
9051
+ }
9052
+
9053
+ /* Field + button group */
9054
+ .muka-inputcounter__row {
9055
+ display: flex;
9056
+ align-items: center;
9057
+ gap: var(--spacing-3);
9058
+ }
9059
+
9060
+ /* Field — grows with the value (in ch), never narrower than the Figma width.
9061
+ Padding sits on the native input so the 2px focus/error border doesn't
9062
+ need compensating: content is centred in a fixed box. */
9063
+ .muka-inputcounter__field {
9064
+ position: relative;
9065
+ display: flex;
9066
+ align-items: center;
9067
+ box-sizing: border-box;
9068
+ height: var(--muka-inputcounter-height);
9069
+ width: calc(
9070
+ max(var(--muka-inputcounter-min), calc(var(--muka-inputcounter-chars, 1) * 1ch)) +
9071
+ 2 * var(--muka-inputcounter-pad) + 2 * var(--border-width-regular)
9072
+ );
9073
+ background-color: var(--input-field-color-default-background);
9074
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
9075
+ border-radius: var(--muka-inputcounter-radius);
9076
+ transition: border-color 0.2s ease, background-color 0.2s ease;
9077
+ }
9078
+
9079
+ .muka-inputcounter__field::after {
9080
+ content: '';
9081
+ position: absolute;
9082
+ inset: 0;
9083
+ border-radius: inherit;
9084
+ box-shadow: var(--shadow-sunken);
9085
+ pointer-events: none;
9086
+ }
9087
+
9088
+ .muka-inputcounter__field--focused:not(.muka-inputcounter__field--disabled) {
9089
+ border-width: var(--border-width-bold);
9090
+ border-color: var(--input-field-color-focus-border);
9091
+ background-color: var(--input-field-color-focus-background);
9092
+ }
9093
+
9094
+ .muka-inputcounter__field--error:not(.muka-inputcounter__field--disabled) {
9095
+ border-width: var(--border-width-bold);
9096
+ border-color: var(--input-field-color-error-border);
9097
+ background-color: var(--input-field-color-error-background);
9098
+ }
9099
+
9100
+ .muka-inputcounter__field--disabled {
9101
+ background-color: var(--input-field-color-disabled-background);
9102
+ border-color: var(--input-field-color-disabled-border);
9103
+ }
9104
+
9105
+ .muka-inputcounter__field--disabled::after {
9106
+ display: none;
9107
+ }
9108
+
9109
+ .muka-inputcounter__native {
9110
+ width: 100%;
9111
+ min-width: 0;
9112
+ height: 100%;
9113
+ box-sizing: border-box;
9114
+ padding: 0 calc(var(--muka-inputcounter-pad) - var(--border-width-regular));
9115
+ border: none;
9116
+ outline: none;
9117
+ background: transparent;
9118
+ text-align: center;
9119
+ font-variant-numeric: tabular-nums;
9120
+ color: var(--input-field-color-default-foreground);
9121
+ font-family: var(--text-input-md-fontFamily);
9122
+ font-weight: var(--text-input-md-fontWeight);
9123
+ font-size: var(--text-input-md-fontSize);
9124
+ line-height: var(--text-input-md-lineHeight);
9125
+ }
9126
+
9127
+ .muka-inputcounter--sm .muka-inputcounter__native {
9128
+ font-family: var(--text-input-sm-fontFamily);
9129
+ font-weight: var(--text-input-sm-fontWeight);
9130
+ font-size: var(--text-input-sm-fontSize);
9131
+ line-height: var(--text-input-sm-lineHeight);
9132
+ }
9133
+
9134
+ .muka-inputcounter__field--disabled .muka-inputcounter__native {
9135
+ color: var(--input-field-color-disabled-foreground);
9136
+ cursor: not-allowed;
9137
+ }
9138
+
9139
+ /* Button group — secondary icon-only Buttons joined by a divider.
9140
+ Only the outer corners are rounded. */
9141
+ .muka-inputcounter__group {
9142
+ display: inline-flex;
9143
+ align-items: stretch;
9144
+ }
9145
+
9146
+ .muka-inputcounter__group .muka-button {
9147
+ border-radius: 0;
9148
+ }
9149
+
9150
+ .muka-inputcounter__group .muka-button:first-child {
9151
+ border-start-start-radius: var(--muka-inputcounter-radius);
9152
+ border-end-start-radius: var(--muka-inputcounter-radius);
9153
+ }
9154
+
9155
+ .muka-inputcounter__group .muka-button:last-child {
9156
+ border-start-end-radius: var(--muka-inputcounter-radius);
9157
+ border-end-end-radius: var(--muka-inputcounter-radius);
9158
+ }
9159
+
9160
+ .muka-inputcounter__divider {
9161
+ flex: none;
9162
+ width: var(--border-width-regular);
9163
+ background-color: var(--color-border-default);
9164
+ }
9165
+
9166
+
8989
9167
  /* Input */
8990
9168
  /* Input Component Styles - Using Muka Design Tokens */
8991
9169
 
@@ -14611,6 +14789,72 @@ button.muka-chat-photo-grid__tile:focus-visible {
14611
14789
  }
14612
14790
 
14613
14791
 
14792
+ /* Autocomplete */
14793
+ /* Autocomplete — Figma Input Autocomplete (Input field + single-line suggestion Menu).
14794
+ The field reuses the Input styles (.muka-input*); only the menu wiring lives here. */
14795
+
14796
+ .muka-autocomplete {
14797
+ min-width: 200px;
14798
+ }
14799
+
14800
+ /* Covers the field's outer edge so the menu matches its full width. The menu
14801
+ is only open while focused, when the field has the bold border. */
14802
+ .muka-autocomplete__menu-anchor {
14803
+ position: absolute;
14804
+ inset: calc(-1 * var(--border-width-bold));
14805
+ z-index: 0;
14806
+ margin: 0;
14807
+ padding: 0;
14808
+ border: none;
14809
+ background: transparent;
14810
+ pointer-events: none;
14811
+ opacity: 0;
14812
+ }
14813
+
14814
+ /* Keep the field content above the invisible anchor. */
14815
+ .muka-autocomplete__field > :not(.muka-autocomplete__menu-anchor) {
14816
+ position: relative;
14817
+ z-index: 1;
14818
+ }
14819
+
14820
+ /* Figma: the menu is as wide as the field (never below the menu min-width token). */
14821
+ .muka-autocomplete__menu {
14822
+ width: var(--radix-dropdown-menu-trigger-width);
14823
+ max-width: calc(100vw - 2rem);
14824
+ }
14825
+
14826
+ /* Suggestions are single-line; long labels truncate. */
14827
+ .muka-autocomplete__menu .muka-menu__item-label {
14828
+ overflow: hidden;
14829
+ text-overflow: ellipsis;
14830
+ }
14831
+
14832
+ /* Loading and empty rows: menu-row geometry, not selectable. */
14833
+ .muka-autocomplete__status {
14834
+ display: flex;
14835
+ align-items: center;
14836
+ gap: var(--menu-item-gap);
14837
+ min-height: var(--menu-item-height);
14838
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
14839
+ color: var(--color-text-subtle-default);
14840
+ font-family: var(--text-label-md-regular-fontFamily);
14841
+ font-size: var(--text-label-md-regular-fontSize);
14842
+ font-weight: var(--text-label-md-regular-fontWeight);
14843
+ line-height: var(--text-label-md-regular-lineHeight);
14844
+ }
14845
+
14846
+ .muka-autocomplete__footer {
14847
+ flex-shrink: 0;
14848
+ padding: var(--spacing-2) var(--spacing-3);
14849
+ border-top: var(--border-width-regular) solid var(--color-border-default);
14850
+ color: var(--color-text-subtle-default);
14851
+ font-family: var(--text-label-sm-regular-fontFamily);
14852
+ font-size: var(--text-label-sm-regular-fontSize);
14853
+ font-weight: var(--text-label-sm-regular-fontWeight);
14854
+ line-height: var(--text-label-sm-regular-lineHeight);
14855
+ }
14856
+
14857
+
14614
14858
  /* AppShell */
14615
14859
  /* AppShell Component Styles */
14616
14860