@revikornmann/muka-ui 0.23.0 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4802,156 +4802,6 @@ body {
4802
4802
  }
4803
4803
 
4804
4804
 
4805
- /* SocialSignInButton */
4806
- /*
4807
- * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
4808
- * Google Identity branding) and intentionally fixed across Muka brands —
4809
- * same exception pattern as LicensePlateInput regulatory colors.
4810
- *
4811
- * Apple: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple
4812
- * Google: https://developers.google.com/identity/branding-guidelines
4813
- */
4814
- .muka-social-sign-in-button {
4815
- --ssi-white: #ffffff;
4816
- --ssi-black: #000000;
4817
- --ssi-google-text-light: #1f1f1f;
4818
-
4819
- display: inline-flex;
4820
- align-items: center;
4821
- justify-content: center;
4822
-
4823
- /* Provider lockup type — matches Figma / HIG, not brand font tokens.
4824
- * SF Pro Text is OS-provided on Apple platforms (not redistributable).
4825
- * Google Sans is not freely shippable; Roboto is the closest system fallback. */
4826
- font-family: inherit;
4827
- font-weight: 600;
4828
- text-decoration: none;
4829
- white-space: nowrap;
4830
-
4831
- border: 1px solid transparent;
4832
- cursor: pointer;
4833
- user-select: none;
4834
- transition: opacity 0.15s ease, filter 0.15s ease;
4835
-
4836
- outline: none;
4837
- position: relative;
4838
- box-sizing: border-box;
4839
- }
4840
-
4841
- .muka-social-sign-in-button--apple {
4842
- font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
4843
- Helvetica, Arial, sans-serif;
4844
- font-weight: 600;
4845
- }
4846
-
4847
- .muka-social-sign-in-button--google {
4848
- font-family: 'Google Sans', Roboto, 'Helvetica Neue', Arial, sans-serif;
4849
- font-weight: 500;
4850
- }
4851
-
4852
- .muka-social-sign-in-button:focus-visible {
4853
- outline: 2px solid var(--color-border-focus);
4854
- outline-offset: 2px;
4855
- }
4856
-
4857
- /* Sizes — heights align with Button md/lg */
4858
- .muka-social-sign-in-button--md {
4859
- padding: 0 var(--button-padding-md-x);
4860
- border-radius: var(--button-radius-md);
4861
- font-size: var(--text-label-sm-semibold-fontSize);
4862
- line-height: var(--text-label-sm-semibold-lineHeight);
4863
- min-height: 40px;
4864
- min-width: 240px;
4865
- }
4866
-
4867
- .muka-social-sign-in-button--md .muka-social-sign-in-button__label {
4868
- padding: 0 var(--button-gap-md);
4869
- }
4870
-
4871
- .muka-social-sign-in-button--md .muka-social-sign-in-button__icon {
4872
- width: var(--button-icon-md);
4873
- height: var(--button-icon-md);
4874
- }
4875
-
4876
- .muka-social-sign-in-button--lg {
4877
- padding: 0 var(--button-padding-lg-x);
4878
- border-radius: var(--button-radius-lg);
4879
- font-size: var(--text-label-lg-semibold-fontSize);
4880
- line-height: var(--text-label-lg-semibold-lineHeight);
4881
- min-height: 48px;
4882
- min-width: 280px;
4883
- }
4884
-
4885
- .muka-social-sign-in-button--lg .muka-social-sign-in-button__label {
4886
- padding: 0 var(--button-gap-lg);
4887
- }
4888
-
4889
- .muka-social-sign-in-button--lg .muka-social-sign-in-button__icon {
4890
- width: var(--button-icon-lg);
4891
- height: var(--button-icon-lg);
4892
- }
4893
-
4894
- /* White lockup — for dark surfaces (Apple White with Outline) */
4895
- .muka-social-sign-in-button--white {
4896
- background-color: var(--ssi-white);
4897
- color: var(--ssi-black);
4898
- border-color: var(--ssi-black);
4899
- }
4900
-
4901
- .muka-social-sign-in-button--white.muka-social-sign-in-button--google {
4902
- color: var(--ssi-google-text-light);
4903
- }
4904
-
4905
- /* Black lockup — for light surfaces */
4906
- .muka-social-sign-in-button--black {
4907
- background-color: var(--ssi-black);
4908
- color: var(--ssi-white);
4909
- border-color: transparent;
4910
- }
4911
-
4912
- /* Interaction — luminance/opacity only; no brand tint */
4913
- .muka-social-sign-in-button:hover:not(:disabled) {
4914
- filter: brightness(0.92);
4915
- }
4916
-
4917
- .muka-social-sign-in-button:active:not(:disabled) {
4918
- filter: brightness(0.85);
4919
- }
4920
-
4921
- .muka-social-sign-in-button:disabled,
4922
- .muka-social-sign-in-button--disabled {
4923
- cursor: not-allowed;
4924
- opacity: 0.4;
4925
- pointer-events: none;
4926
- filter: none;
4927
- }
4928
-
4929
- .muka-social-sign-in-button--full-width {
4930
- width: 100%;
4931
- min-width: 0;
4932
- }
4933
-
4934
- .muka-social-sign-in-button__icon {
4935
- display: inline-flex;
4936
- align-items: center;
4937
- justify-content: center;
4938
- flex-shrink: 0;
4939
- }
4940
-
4941
- .muka-social-sign-in-button__icon > *,
4942
- .muka-social-sign-in-button__icon svg {
4943
- width: auto;
4944
- height: 100%;
4945
- max-width: 100%;
4946
- display: block;
4947
- }
4948
-
4949
- .muka-social-sign-in-button__label {
4950
- display: inline-flex;
4951
- align-items: center;
4952
- }
4953
-
4954
-
4955
4805
  /* SmsOtpField */
4956
4806
  /* SmsOtpField Component Styles - Using Muka Design Tokens */
4957
4807
 
@@ -5144,64 +4994,214 @@ body {
5144
4994
  }
5145
4995
 
5146
4996
 
5147
- /* Skeleton */
5148
- /* Skeleton Component Styles */
4997
+ /* SocialSignInButton */
4998
+ /*
4999
+ * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
5000
+ * Google Identity branding) and intentionally fixed across Muka brands —
5001
+ * same exception pattern as LicensePlateInput regulatory colors.
5002
+ *
5003
+ * Apple: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple
5004
+ * Google: https://developers.google.com/identity/branding-guidelines
5005
+ */
5006
+ .muka-social-sign-in-button {
5007
+ --ssi-white: #ffffff;
5008
+ --ssi-black: #000000;
5009
+ --ssi-google-text-light: #1f1f1f;
5149
5010
 
5150
- .muka-skeleton {
5151
- background-color: var(--color-surface-level1);
5152
- display: block;
5011
+ display: inline-flex;
5012
+ align-items: center;
5013
+ justify-content: center;
5014
+
5015
+ /* Provider lockup type — matches Figma / HIG, not brand font tokens.
5016
+ * SF Pro Text is OS-provided on Apple platforms (not redistributable).
5017
+ * Google Sans is not freely shippable; Roboto is the closest system fallback. */
5018
+ font-family: inherit;
5019
+ font-weight: 600;
5020
+ text-decoration: none;
5021
+ white-space: nowrap;
5022
+
5023
+ border: 1px solid transparent;
5024
+ cursor: pointer;
5025
+ user-select: none;
5026
+ transition: opacity 0.15s ease, filter 0.15s ease;
5027
+
5028
+ outline: none;
5029
+ position: relative;
5030
+ box-sizing: border-box;
5153
5031
  }
5154
5032
 
5155
- /* Variants */
5156
- .muka-skeleton--text {
5157
- height: 1em;
5158
- border-radius: var(--radius-md);
5159
- width: 100%;
5033
+ .muka-social-sign-in-button--apple {
5034
+ font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
5035
+ Helvetica, Arial, sans-serif;
5036
+ font-weight: 600;
5160
5037
  }
5161
5038
 
5162
- .muka-skeleton--circular {
5163
- width: 2.5rem;
5164
- height: 2.5rem;
5165
- border-radius: var(--radius-full);
5039
+ .muka-social-sign-in-button--google {
5040
+ font-family: 'Google Sans', Roboto, 'Helvetica Neue', Arial, sans-serif;
5041
+ font-weight: 500;
5166
5042
  }
5167
5043
 
5168
- .muka-skeleton--rectangular {
5169
- height: 7.5rem;
5170
- border-radius: var(--radius-md);
5171
- width: 100%;
5044
+ .muka-social-sign-in-button:focus-visible {
5045
+ outline: 2px solid var(--color-border-focus);
5046
+ outline-offset: 2px;
5172
5047
  }
5173
5048
 
5174
- /* Last line in multi-line text is shorter */
5175
- .muka-skeleton--last-line {
5176
- width: 80%;
5049
+ /* Sizes — heights align with Button md/lg */
5050
+ .muka-social-sign-in-button--md {
5051
+ padding: 0 var(--button-padding-md-x);
5052
+ border-radius: var(--button-radius-md);
5053
+ font-size: var(--text-label-sm-semibold-fontSize);
5054
+ line-height: var(--text-label-sm-semibold-lineHeight);
5055
+ min-height: 40px;
5056
+ min-width: 240px;
5177
5057
  }
5178
5058
 
5179
- /* Lines container */
5180
- .muka-skeleton__lines {
5181
- display: flex;
5182
- flex-direction: column;
5183
- gap: var(--spacing-2);
5059
+ .muka-social-sign-in-button--md .muka-social-sign-in-button__label {
5060
+ padding: 0 var(--button-gap-md);
5184
5061
  }
5185
5062
 
5186
- /* Shimmer animation */
5187
- @keyframes muka-skeleton-shimmer {
5188
- 0% {
5189
- background-position: -200% 0;
5190
- }
5191
- 100% {
5192
- background-position: 200% 0;
5193
- }
5063
+ .muka-social-sign-in-button--md .muka-social-sign-in-button__icon {
5064
+ width: var(--button-icon-md);
5065
+ height: var(--button-icon-md);
5194
5066
  }
5195
5067
 
5196
- .muka-skeleton--shimmer {
5197
- background: linear-gradient(
5198
- 90deg,
5199
- var(--color-surface-level1) 25%,
5200
- var(--color-surface-level2) 50%,
5201
- var(--color-surface-level1) 75%
5202
- );
5203
- background-size: 200% 100%;
5204
- animation: muka-skeleton-shimmer 1.5s ease-in-out infinite;
5068
+ .muka-social-sign-in-button--lg {
5069
+ padding: 0 var(--button-padding-lg-x);
5070
+ border-radius: var(--button-radius-lg);
5071
+ font-size: var(--text-label-lg-semibold-fontSize);
5072
+ line-height: var(--text-label-lg-semibold-lineHeight);
5073
+ min-height: 48px;
5074
+ min-width: 280px;
5075
+ }
5076
+
5077
+ .muka-social-sign-in-button--lg .muka-social-sign-in-button__label {
5078
+ padding: 0 var(--button-gap-lg);
5079
+ }
5080
+
5081
+ .muka-social-sign-in-button--lg .muka-social-sign-in-button__icon {
5082
+ width: var(--button-icon-lg);
5083
+ height: var(--button-icon-lg);
5084
+ }
5085
+
5086
+ /* White lockup — for dark surfaces (Apple White with Outline) */
5087
+ .muka-social-sign-in-button--white {
5088
+ background-color: var(--ssi-white);
5089
+ color: var(--ssi-black);
5090
+ border-color: var(--ssi-black);
5091
+ }
5092
+
5093
+ .muka-social-sign-in-button--white.muka-social-sign-in-button--google {
5094
+ color: var(--ssi-google-text-light);
5095
+ }
5096
+
5097
+ /* Black lockup — for light surfaces */
5098
+ .muka-social-sign-in-button--black {
5099
+ background-color: var(--ssi-black);
5100
+ color: var(--ssi-white);
5101
+ border-color: transparent;
5102
+ }
5103
+
5104
+ /* Interaction — luminance/opacity only; no brand tint */
5105
+ .muka-social-sign-in-button:hover:not(:disabled) {
5106
+ filter: brightness(0.92);
5107
+ }
5108
+
5109
+ .muka-social-sign-in-button:active:not(:disabled) {
5110
+ filter: brightness(0.85);
5111
+ }
5112
+
5113
+ .muka-social-sign-in-button:disabled,
5114
+ .muka-social-sign-in-button--disabled {
5115
+ cursor: not-allowed;
5116
+ opacity: 0.4;
5117
+ pointer-events: none;
5118
+ filter: none;
5119
+ }
5120
+
5121
+ .muka-social-sign-in-button--full-width {
5122
+ width: 100%;
5123
+ min-width: 0;
5124
+ }
5125
+
5126
+ .muka-social-sign-in-button__icon {
5127
+ display: inline-flex;
5128
+ align-items: center;
5129
+ justify-content: center;
5130
+ flex-shrink: 0;
5131
+ }
5132
+
5133
+ .muka-social-sign-in-button__icon > *,
5134
+ .muka-social-sign-in-button__icon svg {
5135
+ width: auto;
5136
+ height: 100%;
5137
+ max-width: 100%;
5138
+ display: block;
5139
+ }
5140
+
5141
+ .muka-social-sign-in-button__label {
5142
+ display: inline-flex;
5143
+ align-items: center;
5144
+ }
5145
+
5146
+
5147
+ /* Skeleton */
5148
+ /* Skeleton Component Styles */
5149
+
5150
+ .muka-skeleton {
5151
+ background-color: var(--color-surface-level1);
5152
+ display: block;
5153
+ }
5154
+
5155
+ /* Variants */
5156
+ .muka-skeleton--text {
5157
+ height: 1em;
5158
+ border-radius: var(--radius-md);
5159
+ width: 100%;
5160
+ }
5161
+
5162
+ .muka-skeleton--circular {
5163
+ width: 2.5rem;
5164
+ height: 2.5rem;
5165
+ border-radius: var(--radius-full);
5166
+ }
5167
+
5168
+ .muka-skeleton--rectangular {
5169
+ height: 7.5rem;
5170
+ border-radius: var(--radius-md);
5171
+ width: 100%;
5172
+ }
5173
+
5174
+ /* Last line in multi-line text is shorter */
5175
+ .muka-skeleton--last-line {
5176
+ width: 80%;
5177
+ }
5178
+
5179
+ /* Lines container */
5180
+ .muka-skeleton__lines {
5181
+ display: flex;
5182
+ flex-direction: column;
5183
+ gap: var(--spacing-2);
5184
+ }
5185
+
5186
+ /* Shimmer animation */
5187
+ @keyframes muka-skeleton-shimmer {
5188
+ 0% {
5189
+ background-position: -200% 0;
5190
+ }
5191
+ 100% {
5192
+ background-position: 200% 0;
5193
+ }
5194
+ }
5195
+
5196
+ .muka-skeleton--shimmer {
5197
+ background: linear-gradient(
5198
+ 90deg,
5199
+ var(--color-surface-level1) 25%,
5200
+ var(--color-surface-level2) 50%,
5201
+ var(--color-surface-level1) 75%
5202
+ );
5203
+ background-size: 200% 100%;
5204
+ animation: muka-skeleton-shimmer 1.5s ease-in-out infinite;
5205
5205
  }
5206
5206
 
5207
5207
  /* Pulse animation */
@@ -7504,37 +7504,6 @@ body {
7504
7504
  }
7505
7505
 
7506
7506
 
7507
- /* Popover */
7508
- /* Popover Component Styles */
7509
-
7510
- .muka-popover__content {
7511
- background-color: var(--color-surface-level3);
7512
- border: var(--border-width-regular) solid var(--color-border-default);
7513
- border-radius: var(--radius-md);
7514
- padding: var(--spacing-4);
7515
- box-shadow: var(--shadow-level3);
7516
- max-width: 20rem;
7517
- z-index: 50;
7518
- animation: muka-popover-fade-in 150ms ease;
7519
- }
7520
-
7521
- @keyframes muka-popover-fade-in {
7522
- from {
7523
- opacity: 0;
7524
- transform: scale(0.96);
7525
- }
7526
- to {
7527
- opacity: 1;
7528
- transform: scale(1);
7529
- }
7530
- }
7531
-
7532
- /* Arrow */
7533
- .muka-popover__arrow {
7534
- fill: var(--color-surface-level3);
7535
- }
7536
-
7537
-
7538
7507
  /* PriceTag */
7539
7508
  /* PriceTag Component Styles - Using Muka Design Tokens */
7540
7509
 
@@ -7632,6 +7601,37 @@ body {
7632
7601
  }
7633
7602
 
7634
7603
 
7604
+ /* Popover */
7605
+ /* Popover Component Styles */
7606
+
7607
+ .muka-popover__content {
7608
+ background-color: var(--color-surface-level3);
7609
+ border: var(--border-width-regular) solid var(--color-border-default);
7610
+ border-radius: var(--radius-md);
7611
+ padding: var(--spacing-4);
7612
+ box-shadow: var(--shadow-level3);
7613
+ max-width: 20rem;
7614
+ z-index: 50;
7615
+ animation: muka-popover-fade-in 150ms ease;
7616
+ }
7617
+
7618
+ @keyframes muka-popover-fade-in {
7619
+ from {
7620
+ opacity: 0;
7621
+ transform: scale(0.96);
7622
+ }
7623
+ to {
7624
+ opacity: 1;
7625
+ transform: scale(1);
7626
+ }
7627
+ }
7628
+
7629
+ /* Arrow */
7630
+ .muka-popover__arrow {
7631
+ fill: var(--color-surface-level3);
7632
+ }
7633
+
7634
+
7635
7635
  /* PieChart */
7636
7636
  /* PieChart Component Styles - Using Muka Design Tokens */
7637
7637
 
@@ -8047,716 +8047,329 @@ body {
8047
8047
  .muka-nav-transition__view--top { z-index: 2; }
8048
8048
 
8049
8049
 
8050
- /* ListItem */
8051
- /* ListItem Component Styles - Using Muka Design Tokens */
8050
+ /* Menu */
8051
+ /* Menu Component Styles */
8052
8052
 
8053
- /* Base list item styles */
8054
- .muka-listitem {
8055
- /* Layout */
8053
+ /* ─── Content Container ──────────────────────────────────────────────────── */
8054
+
8055
+ .muka-menu__content {
8056
8056
  display: flex;
8057
- align-items: flex-start;
8058
- gap: var(--spacing-4);
8059
- padding: var(--spacing-5) var(--spacing-4);
8060
-
8061
- /* Background - using semantic tokens */
8062
- background-color: var(--color-surface-level3);
8063
-
8064
- /* Typography */
8065
- font-family: var(--alias-font-brand-family);
8066
-
8067
- /* Border and spacing */
8068
- border: none;
8069
- position: relative;
8070
-
8071
- /* Interaction - only apply if interactive */
8072
- transition: background-color 0.2s ease, box-shadow 0.2s ease;
8057
+ flex-direction: column;
8058
+ min-width: var(--menu-content-min-width);
8059
+ max-height: var(--menu-content-max-height);
8060
+ overflow: hidden;
8061
+ background-color: var(--menu-content-color-background);
8062
+ border: var(--menu-content-border-width) solid var(--menu-content-color-border);
8063
+ border-radius: var(--menu-content-border-radius);
8064
+ box-shadow: var(--menu-content-shadow);
8065
+ padding: 0;
8066
+ z-index: 50;
8067
+
8068
+ /* Animation */
8069
+ animation-duration: 150ms;
8070
+ animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
8073
8071
  }
8074
8072
 
8075
- /* Interactive state */
8076
- .muka-listitem--interactive {
8077
- cursor: pointer;
8073
+ .muka-menu__body {
8074
+ display: flex;
8075
+ flex: 1 1 auto;
8076
+ min-height: 0;
8077
+ align-items: stretch;
8078
+ width: 100%;
8078
8079
  }
8079
8080
 
8080
- /*
8081
- * surface.hover / surface.pressed are theme-adaptive translucent tints, so they
8082
- * are layered on top of the item's base surface via an inset box-shadow overlay
8083
- * rather than replacing background-color. This preserves the base level (level3,
8084
- * or level2 when selected) and lets the tint read correctly on any surface.
8085
- */
8086
- .muka-listitem--interactive:hover:not(:disabled):not(.muka-listitem--disabled) {
8087
- box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
8081
+ .muka-menu__viewport {
8082
+ flex: 1 1 auto;
8083
+ min-width: 0;
8084
+ min-height: 0;
8085
+ overflow-y: auto;
8086
+ padding: var(--menu-content-padding);
8088
8087
  }
8089
8088
 
8090
- .muka-listitem--interactive:active:not(:disabled):not(.muka-listitem--disabled),
8091
- .muka-listitem--interactive.muka-listitem--pressed:not(:disabled):not(.muka-listitem--disabled) {
8092
- box-shadow: inset 0 0 0 9999px var(--color-surface-pressed);
8093
- }
8094
-
8095
- /* Focus styles for accessibility */
8096
- .muka-listitem:focus-visible {
8097
- outline: 2px solid var(--color-border-focus);
8098
- outline-offset: -2px;
8099
- }
8100
-
8101
- /* Disabled state */
8102
- .muka-listitem--disabled {
8103
- opacity: 0.5;
8104
- cursor: not-allowed;
8105
- pointer-events: none;
8106
- }
8107
-
8108
- .muka-listitem--disabled:hover {
8109
- background-color: var(--color-surface-level3);
8089
+ .muka-menu__content--scrollbar .muka-menu__viewport {
8090
+ /* Custom scrollbar owns the chrome; hide native track */
8091
+ scrollbar-width: none;
8110
8092
  }
8111
8093
 
8112
- /* Selected state */
8113
- .muka-listitem--selected {
8114
- background-color: var(--color-surface-level2);
8094
+ .muka-menu__content--scrollbar .muka-menu__viewport::-webkit-scrollbar {
8095
+ display: none;
8115
8096
  }
8116
8097
 
8117
- .muka-listitem--selected:hover {
8118
- box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
8119
- }
8098
+ /* ─── Search header ──────────────────────────────────────────────────────── */
8120
8099
 
8121
- /* No divider modifier */
8122
- .muka-listitem--no-divider .muka-listitem__divider {
8123
- display: none;
8100
+ .muka-menu__search {
8101
+ display: flex;
8102
+ align-items: center;
8103
+ flex-shrink: 0;
8104
+ /* Figma dropdown filter header: 48px, 8px inset, 32px icon slots. */
8105
+ height: var(--input-field-height-lg, 3rem);
8106
+ padding: 0 var(--spacing-2);
8107
+ border-bottom: var(--border-width-regular) solid var(--color-border-default);
8124
8108
  }
8125
8109
 
8126
- /* Center content vertically when no caption */
8127
- .muka-listitem--no-caption {
8128
- align-items: center;
8110
+ .muka-menu__search--sm {
8111
+ height: calc(var(--size-xl, 1.5rem) + var(--spacing-2) * 2);
8129
8112
  }
8130
8113
 
8131
- /* Leading content (icon or image) */
8132
- .muka-listitem__leading {
8114
+ .muka-menu__search-icon,
8115
+ .muka-menu__search-clear {
8133
8116
  display: flex;
8134
8117
  align-items: center;
8135
8118
  justify-content: center;
8136
8119
  flex-shrink: 0;
8137
- width: 48px;
8138
- height: 48px;
8120
+ width: var(--size-2xl, 2rem);
8121
+ height: var(--size-2xl, 2rem);
8122
+ color: var(--color-text-subtle-default);
8139
8123
  }
8140
8124
 
8141
- .muka-listitem__icon {
8142
- display: inline-flex;
8143
- align-items: center;
8144
- justify-content: center;
8145
- width: 32px;
8146
- height: 32px;
8147
- color: var(--color-text-default-default);
8125
+ .muka-menu__search-icon .muka-icon,
8126
+ .muka-menu__search-clear .muka-icon,
8127
+ .muka-menu__search-clear:hover,
8128
+ .muka-menu__search-clear:hover .muka-icon {
8129
+ color: var(--color-text-subtle-default);
8148
8130
  }
8149
8131
 
8150
- .muka-listitem__image {
8151
- width: 48px;
8152
- height: 48px;
8153
- border-radius: var(--radius-md);
8154
- object-fit: cover;
8132
+ .muka-menu__search--sm .muka-menu__search-icon,
8133
+ .muka-menu__search--sm .muka-menu__search-clear {
8134
+ width: var(--size-xl, 1.5rem);
8135
+ height: var(--size-xl, 1.5rem);
8155
8136
  }
8156
8137
 
8157
- /* Main content area */
8158
- .muka-listitem__content {
8159
- flex: 1;
8160
- display: flex;
8161
- align-items: center;
8162
- gap: var(--spacing-4);
8138
+ .muka-menu__search-input {
8139
+ flex: 1 1 auto;
8163
8140
  min-width: 0;
8141
+ border: none;
8142
+ outline: none;
8143
+ background: transparent;
8144
+ padding: 0 var(--spacing-1);
8145
+ font-family: var(--text-input-md-fontFamily);
8146
+ font-size: var(--text-input-md-fontSize);
8147
+ font-weight: var(--text-input-md-fontWeight);
8148
+ line-height: var(--text-input-md-lineHeight);
8149
+ color: var(--color-text-default-default);
8164
8150
  }
8165
8151
 
8166
- .muka-listitem__text {
8167
- flex: 1;
8168
- display: flex;
8169
- flex-direction: column;
8170
- gap: var(--spacing-1);
8171
- min-width: 0;
8152
+ .muka-menu__search--sm .muka-menu__search-input {
8153
+ font-family: var(--text-input-sm-fontFamily);
8154
+ font-size: var(--text-input-sm-fontSize);
8155
+ font-weight: var(--text-input-sm-fontWeight);
8156
+ line-height: var(--text-input-sm-lineHeight);
8172
8157
  }
8173
8158
 
8174
- /* Label text */
8175
- .muka-listitem__label {
8176
- margin: 0;
8177
- padding: 0;
8178
-
8179
- /* Typography - using semantic tokens */
8180
- font-family: var(--alias-font-plain-family);
8181
- font-weight: var(--alias-font-plain-weight-semibold, 600);
8182
- font-size: var(--text-label-md-fontSize);
8183
- line-height: var(--text-label-md-lineHeight);
8184
- color: var(--color-text-default-default);
8185
-
8186
- /* Text handling */
8187
- overflow: hidden;
8188
- text-overflow: ellipsis;
8189
- white-space: nowrap;
8159
+ .muka-menu__search-input::placeholder {
8160
+ color: var(--color-text-subtle-default);
8190
8161
  }
8191
8162
 
8192
- /* Caption text */
8193
- .muka-listitem__caption {
8194
- margin: 0;
8195
- padding: 0;
8196
-
8197
- /* Typography - using semantic tokens */
8198
- font-family: var(--alias-font-plain-family);
8199
- font-weight: var(--alias-font-plain-weight-regular, 400);
8200
- font-size: var(--text-body-sm-fontSize);
8201
- line-height: var(--text-body-sm-lineHeight);
8202
- color: var(--color-text-subtle-default);
8203
-
8204
- /* Text handling */
8205
- overflow: hidden;
8206
- text-overflow: ellipsis;
8207
- white-space: nowrap;
8163
+ .muka-menu__search-input::-webkit-search-cancel-button,
8164
+ .muka-menu__search-input::-webkit-search-decoration {
8165
+ -webkit-appearance: none;
8166
+ appearance: none;
8208
8167
  }
8209
8168
 
8210
- /* Trailing chevron */
8211
- .muka-listitem__chevron {
8212
- display: inline-flex;
8169
+ .muka-menu__empty {
8170
+ display: flex;
8213
8171
  align-items: center;
8214
- justify-content: center;
8215
- flex-shrink: 0;
8216
- width: 24px;
8217
- height: 24px;
8172
+ min-height: var(--menu-item-height);
8173
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
8218
8174
  color: var(--color-text-subtle-default);
8175
+ font-family: var(--text-input-md-fontFamily);
8176
+ font-size: var(--text-input-md-fontSize);
8177
+ font-weight: var(--text-input-md-fontWeight);
8178
+ line-height: var(--text-input-md-lineHeight);
8179
+ pointer-events: none;
8180
+ user-select: none;
8219
8181
  }
8220
8182
 
8221
- /* Bottom divider */
8222
- .muka-listitem__divider {
8223
- position: absolute;
8224
- bottom: 0;
8225
- left: 0;
8226
- right: 0;
8227
- height: 1px;
8228
- background-color: var(--color-border-default);
8183
+ .muka-menu__search-clear {
8184
+ padding: 0;
8185
+ border: none;
8186
+ background: transparent;
8187
+ cursor: pointer;
8229
8188
  }
8230
8189
 
8231
- /* Button and anchor specific styles */
8232
- button.muka-listitem,
8233
- a.muka-listitem {
8234
- text-align: left;
8235
- width: 100%;
8190
+ .muka-menu__match {
8191
+ font-weight: var(--text-label-md-bold-fontWeight);
8236
8192
  }
8237
8193
 
8238
- /* List item specific styles */
8239
- li.muka-listitem {
8240
- list-style: none;
8194
+ .muka-menu__content--scrollbar {
8195
+ height: var(--menu-content-scroll-height, 20.625rem);
8196
+ max-height: var(--menu-content-scroll-height, 20.625rem);
8241
8197
  }
8242
8198
 
8243
-
8244
- /* LicensePlateInput */
8245
- /* LicensePlateInput — Dutch RDW-style plate input
8246
- *
8247
- * Plate body colors are regulatory (EU/NL) and intentionally fixed:
8248
- * - Plate yellow: #F0CE3D
8249
- * - EU strip blue: #003399
8250
- * - EU stars yellow: #FFCC00
8251
- * - Plate text: #1A1A1A
8252
- *
8253
- * All surrounding UI (label, helper, focus ring, error border) uses Muka tokens.
8254
- */
8255
-
8256
- .muka-license-plate-input {
8257
- --plate-yellow: #f0ce3d;
8258
- --plate-blue: #003399;
8259
- --plate-text: #1a1a1a;
8260
- --plate-stars: #ffcc00;
8261
-
8262
- display: inline-flex;
8263
- flex-direction: column;
8264
- gap: var(--spacing-2);
8199
+ .muka-menu__content[data-state='open'] {
8200
+ animation-name: muka-menu-fade-in;
8265
8201
  }
8266
8202
 
8267
- /* Plate body */
8268
- .muka-license-plate-input__plate {
8269
- display: inline-flex;
8270
- align-items: stretch;
8271
- background-color: var(--plate-yellow);
8272
- border-radius: var(--input-field-radius-md);
8273
- cursor: text;
8274
- position: relative;
8275
- overflow: hidden;
8276
- box-sizing: border-box;
8277
- /* Subtle outline to lift the plate from light backgrounds */
8278
- box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
8279
- /* Reserve space for the focus / error solid ring without shifting layout */
8280
- outline: 3px solid transparent;
8281
- outline-offset: 2px;
8282
- transition: outline-color 0.15s ease, opacity 0.15s ease;
8203
+ .muka-menu__content[data-state='closed'] {
8204
+ animation-name: muka-menu-fade-out;
8283
8205
  }
8284
8206
 
8285
- /* Size variants — plate aspect echoes the real RDW plate (~5:1) */
8286
- .muka-license-plate-input__plate--sm {
8287
- height: 44px;
8288
- min-width: 220px;
8289
- border-radius: var(--input-field-radius-sm);
8207
+ .muka-menu__content[data-side='top'] {
8208
+ animation-name: muka-menu-slide-down;
8290
8209
  }
8291
8210
 
8292
- .muka-license-plate-input__plate--md {
8293
- height: 60px;
8294
- min-width: 300px;
8295
- border-radius: var(--input-field-radius-md);
8211
+ .muka-menu__content[data-side='bottom'] {
8212
+ animation-name: muka-menu-slide-up;
8296
8213
  }
8297
8214
 
8298
- .muka-license-plate-input__plate--lg {
8299
- height: 80px;
8300
- min-width: 400px;
8301
- border-radius: var(--input-field-radius-lg);
8215
+ .muka-menu__content[data-side='left'] {
8216
+ animation-name: muka-menu-slide-right;
8302
8217
  }
8303
8218
 
8304
- /* Focus — solid outline ring */
8305
- .muka-license-plate-input__plate--focused:not(.muka-license-plate-input__plate--disabled) {
8306
- outline-color: var(--input-field-color-focus-border);
8219
+ .muka-menu__content[data-side='right'] {
8220
+ animation-name: muka-menu-slide-left;
8307
8221
  }
8308
8222
 
8309
- /* Error — solid outline ring in error color */
8310
- .muka-license-plate-input__plate--error:not(.muka-license-plate-input__plate--disabled) {
8311
- outline-color: var(--input-field-color-error-border);
8312
- }
8313
-
8314
- /* Disabled */
8315
- .muka-license-plate-input__plate--disabled {
8316
- cursor: not-allowed;
8317
- opacity: 0.55;
8318
- }
8223
+ /* ─── Menu Item ──────────────────────────────────────────────────────────── */
8319
8224
 
8320
- /* EU strip */
8321
- .muka-license-plate-input__eu-strip {
8322
- display: inline-flex;
8323
- flex-direction: column;
8225
+ .muka-menu__item {
8226
+ position: relative;
8227
+ display: flex;
8324
8228
  align-items: center;
8325
- justify-content: center;
8326
- background-color: var(--plate-blue);
8327
- color: #ffffff;
8328
- flex-shrink: 0;
8329
- padding: 0 0.4em;
8330
- gap: 0.15em;
8331
- /* Strip width scales with plate height for a consistent ratio */
8332
- width: 14%;
8333
- min-width: 36px;
8229
+ gap: var(--menu-item-gap);
8230
+ min-height: var(--menu-item-height);
8231
+ /* Right gutter always reserved for floating trailers (enter / check). */
8232
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-right) var(--menu-item-padding-y)
8233
+ var(--menu-item-padding-x);
8234
+ border-radius: var(--menu-item-border-radius);
8235
+ cursor: pointer;
8236
+ user-select: none;
8237
+ outline: none;
8238
+ font-family: var(--text-label-md-regular-fontFamily);
8239
+ font-size: var(--text-label-md-regular-fontSize);
8240
+ font-weight: var(--text-label-md-regular-fontWeight);
8241
+ line-height: var(--text-label-md-regular-lineHeight);
8242
+ color: var(--menu-item-color-default-foreground);
8243
+ background-color: var(--menu-item-color-default-background);
8244
+ transition: background-color 100ms ease, color 100ms ease;
8245
+ white-space: nowrap;
8334
8246
  }
8335
8247
 
8336
- .muka-license-plate-input__eu-stars {
8337
- width: 60%;
8338
- max-width: 28px;
8339
- aspect-ratio: 1 / 1;
8340
- display: block;
8248
+ .muka-menu__item:hover,
8249
+ .muka-menu__item[data-highlighted] {
8250
+ background-color: var(--menu-item-color-hover-background);
8251
+ color: var(--menu-item-color-hover-foreground);
8341
8252
  }
8342
8253
 
8343
- .muka-license-plate-input__plate--sm .muka-license-plate-input__eu-stars {
8344
- max-width: 20px;
8254
+ .muka-menu__item:focus,
8255
+ .muka-menu__item[data-highlighted]:focus {
8256
+ background-color: var(--menu-item-color-focus-background);
8257
+ color: var(--menu-item-color-focus-foreground);
8345
8258
  }
8346
8259
 
8347
- .muka-license-plate-input__plate--lg .muka-license-plate-input__eu-stars {
8348
- max-width: 36px;
8260
+ /* Disabled */
8261
+ .muka-menu__item--disabled,
8262
+ .muka-menu__item[data-disabled] {
8263
+ color: var(--menu-item-color-disabled-foreground);
8264
+ background-color: var(--menu-item-color-disabled-background);
8265
+ cursor: not-allowed;
8266
+ pointer-events: none;
8349
8267
  }
8350
8268
 
8351
- .muka-license-plate-input__country-code {
8352
- font-family:
8353
- 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
8354
- font-weight: 700;
8355
- letter-spacing: 0.04em;
8356
- line-height: 1;
8357
- color: #ffffff;
8269
+ .muka-menu__item--disabled .muka-menu__item-icon,
8270
+ .muka-menu__item[data-disabled] .muka-menu__item-icon {
8271
+ color: var(--menu-item-color-disabled-icon);
8358
8272
  }
8359
8273
 
8360
- .muka-license-plate-input__plate--sm .muka-license-plate-input__country-code {
8361
- font-size: 10px;
8274
+ /* Destructive */
8275
+ .muka-menu__item--destructive {
8276
+ color: var(--menu-item-color-destructive-default-foreground);
8362
8277
  }
8363
8278
 
8364
- .muka-license-plate-input__plate--md .muka-license-plate-input__country-code {
8365
- font-size: 13px;
8279
+ .muka-menu__item--destructive .muka-menu__item-icon {
8280
+ color: var(--menu-item-color-destructive-default-icon);
8366
8281
  }
8367
8282
 
8368
- .muka-license-plate-input__plate--lg .muka-license-plate-input__country-code {
8369
- font-size: 16px;
8283
+ .muka-menu__item--destructive:hover,
8284
+ .muka-menu__item--destructive[data-highlighted] {
8285
+ background-color: var(--menu-item-color-destructive-hover-background);
8286
+ color: var(--menu-item-color-destructive-hover-foreground);
8370
8287
  }
8371
8288
 
8372
- /* Native input */
8373
- .muka-license-plate-input__native {
8374
- flex: 1;
8375
- min-width: 0;
8376
- border: none;
8377
- outline: none;
8378
- background: transparent;
8379
- color: var(--plate-text);
8380
- text-align: center;
8381
- text-transform: uppercase;
8382
- letter-spacing: 0.06em;
8383
- /* Plate font — bold condensed sans is closest to the FE-Schrift look without
8384
- shipping a custom font. JetBrains Mono is the system mono brand font. */
8385
- font-family:
8386
- 'Arial Narrow', 'Helvetica Neue', Helvetica, Arial, sans-serif;
8387
- font-weight: 800;
8388
- padding: 0 0.5em;
8389
- width: 100%;
8390
- caret-color: var(--plate-text);
8289
+ .muka-menu__item--destructive:hover .muka-menu__item-icon,
8290
+ .muka-menu__item--destructive[data-highlighted] .muka-menu__item-icon {
8291
+ color: var(--menu-item-color-destructive-hover-icon);
8391
8292
  }
8392
8293
 
8393
- .muka-license-plate-input__plate--sm .muka-license-plate-input__native {
8394
- font-size: 22px;
8395
- }
8294
+ /* ─── Item Parts ─────────────────────────────────────────────────────────── */
8396
8295
 
8397
- .muka-license-plate-input__plate--md .muka-license-plate-input__native {
8398
- font-size: 30px;
8296
+ .muka-menu__item-icon {
8297
+ display: flex;
8298
+ align-items: center;
8299
+ justify-content: center;
8300
+ flex-shrink: 0;
8301
+ color: var(--menu-item-color-default-icon);
8302
+ transition: color 100ms ease;
8399
8303
  }
8400
8304
 
8401
- .muka-license-plate-input__plate--lg .muka-license-plate-input__native {
8402
- font-size: 42px;
8305
+ .muka-menu__item:hover .muka-menu__item-icon,
8306
+ .muka-menu__item[data-highlighted] .muka-menu__item-icon {
8307
+ color: var(--menu-item-color-hover-icon);
8403
8308
  }
8404
8309
 
8405
- .muka-license-plate-input__native::placeholder {
8406
- color: var(--plate-text);
8407
- opacity: 0.55;
8408
- font-weight: 700;
8409
- letter-spacing: 0.08em;
8310
+ .muka-menu__item-label {
8311
+ flex: 1 1 auto;
8312
+ min-width: 0;
8313
+ white-space: nowrap;
8410
8314
  }
8411
8315
 
8412
- .muka-license-plate-input__plate--disabled .muka-license-plate-input__native {
8413
- cursor: not-allowed;
8316
+ /* Shortcut trailers replace icons and sit with an 8px right inset. */
8317
+ .muka-menu__item--has-shortcut {
8318
+ padding-right: var(--spacing-2);
8414
8319
  }
8415
8320
 
8416
- /* Helper text */
8417
- .muka-license-plate-input__helper {
8321
+ .muka-menu__item-shortcut {
8322
+ flex-shrink: 0;
8323
+ margin-left: auto;
8324
+ padding-left: var(--menu-item-gap);
8418
8325
  font-family: var(--text-label-sm-regular-fontFamily);
8419
- font-weight: var(--text-label-sm-regular-fontWeight);
8420
8326
  font-size: var(--text-label-sm-regular-fontSize);
8421
- line-height: var(--text-label-sm-regular-lineHeight);
8422
- color: var(--color-text-subtle-default);
8423
- margin: 0;
8424
- }
8425
-
8426
- /* Error message */
8427
- .muka-license-plate-input__error {
8428
- font-family: var(--text-label-sm-regular-fontFamily);
8429
8327
  font-weight: var(--text-label-sm-regular-fontWeight);
8430
- font-size: var(--text-label-sm-regular-fontSize);
8431
8328
  line-height: var(--text-label-sm-regular-lineHeight);
8432
- color: var(--color-state-error-default);
8433
- margin: 0;
8329
+ color: var(--color-text-muted-default);
8330
+ white-space: nowrap;
8434
8331
  }
8435
8332
 
8436
-
8437
- /* Menu */
8438
- /* Menu Component Styles */
8439
-
8440
- /* ─── Content Container ──────────────────────────────────────────────────── */
8441
-
8442
- .muka-menu__content {
8443
- display: flex;
8444
- flex-direction: column;
8445
- min-width: var(--menu-content-min-width);
8446
- max-height: var(--menu-content-max-height);
8447
- overflow: hidden;
8448
- background-color: var(--menu-content-color-background);
8449
- border: var(--menu-content-border-width) solid var(--menu-content-color-border);
8450
- border-radius: var(--menu-content-border-radius);
8451
- box-shadow: var(--menu-content-shadow);
8452
- padding: 0;
8453
- z-index: 50;
8454
-
8455
- /* Animation */
8456
- animation-duration: 150ms;
8457
- animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
8333
+ .muka-menu__item-hint {
8334
+ /* Figma: trailer sits with 8px margin top / right / bottom; 24px glyph centered inside. */
8335
+ position: absolute;
8336
+ top: var(--spacing-2);
8337
+ right: var(--spacing-2);
8338
+ bottom: var(--spacing-2);
8339
+ display: none;
8340
+ align-items: center;
8341
+ justify-content: center;
8342
+ width: var(--icon-size-default, 1.5rem);
8343
+ color: var(--color-text-muted-default);
8344
+ pointer-events: none;
8458
8345
  }
8459
8346
 
8460
- .muka-menu__body {
8347
+ .muka-menu__item--hint-enter[data-highlighted] .muka-menu__item-hint {
8461
8348
  display: flex;
8462
- flex: 1 1 auto;
8463
- min-height: 0;
8464
- align-items: stretch;
8465
- width: 100%;
8466
- }
8467
-
8468
- .muka-menu__viewport {
8469
- flex: 1 1 auto;
8470
- min-width: 0;
8471
- min-height: 0;
8472
- overflow-y: auto;
8473
- padding: var(--menu-content-padding);
8474
- }
8475
-
8476
- .muka-menu__content--scrollbar .muka-menu__viewport {
8477
- /* Custom scrollbar owns the chrome; hide native track */
8478
- scrollbar-width: none;
8479
8349
  }
8480
8350
 
8481
- .muka-menu__content--scrollbar .muka-menu__viewport::-webkit-scrollbar {
8482
- display: none;
8483
- }
8484
-
8485
- /* ─── Search header ──────────────────────────────────────────────────────── */
8486
-
8487
- .muka-menu__search {
8351
+ .muka-menu__item-chevron {
8352
+ position: absolute;
8353
+ top: var(--spacing-2);
8354
+ right: var(--spacing-2);
8355
+ bottom: var(--spacing-2);
8488
8356
  display: flex;
8489
8357
  align-items: center;
8490
- flex-shrink: 0;
8491
- /* Figma dropdown filter header: 48px, 8px inset, 32px icon slots. */
8492
- height: var(--input-field-height-lg, 3rem);
8493
- padding: 0 var(--spacing-2);
8494
- border-bottom: var(--border-width-regular) solid var(--color-border-default);
8358
+ justify-content: center;
8359
+ width: var(--icon-size-default, 1.5rem);
8360
+ color: var(--menu-shortcut-color);
8495
8361
  }
8496
8362
 
8497
- .muka-menu__search--sm {
8498
- height: calc(var(--size-xl, 1.5rem) + var(--spacing-2) * 2);
8499
- }
8363
+ /* ─── Indicator (Checkbox/Radio) ─────────────────────────────────────────── */
8500
8364
 
8501
- .muka-menu__search-icon,
8502
- .muka-menu__search-clear {
8365
+ .muka-menu__item-indicator {
8503
8366
  display: flex;
8504
8367
  align-items: center;
8505
8368
  justify-content: center;
8369
+ width: var(--menu-checkbox-indicator-size);
8370
+ height: var(--menu-checkbox-indicator-size);
8506
8371
  flex-shrink: 0;
8507
- width: var(--size-2xl, 2rem);
8508
- height: var(--size-2xl, 2rem);
8509
- color: var(--color-text-subtle-default);
8510
- }
8511
-
8512
- .muka-menu__search-icon .muka-icon,
8513
- .muka-menu__search-clear .muka-icon,
8514
- .muka-menu__search-clear:hover,
8515
- .muka-menu__search-clear:hover .muka-icon {
8516
- color: var(--color-text-subtle-default);
8517
- }
8518
-
8519
- .muka-menu__search--sm .muka-menu__search-icon,
8520
- .muka-menu__search--sm .muka-menu__search-clear {
8521
- width: var(--size-xl, 1.5rem);
8522
- height: var(--size-xl, 1.5rem);
8523
- }
8524
-
8525
- .muka-menu__search-input {
8526
- flex: 1 1 auto;
8527
- min-width: 0;
8528
- border: none;
8529
- outline: none;
8530
- background: transparent;
8531
- padding: 0 var(--spacing-1);
8532
- font-family: var(--text-input-md-fontFamily);
8533
- font-size: var(--text-input-md-fontSize);
8534
- font-weight: var(--text-input-md-fontWeight);
8535
- line-height: var(--text-input-md-lineHeight);
8536
- color: var(--color-text-default-default);
8537
- }
8538
-
8539
- .muka-menu__search--sm .muka-menu__search-input {
8540
- font-family: var(--text-input-sm-fontFamily);
8541
- font-size: var(--text-input-sm-fontSize);
8542
- font-weight: var(--text-input-sm-fontWeight);
8543
- line-height: var(--text-input-sm-lineHeight);
8544
- }
8545
-
8546
- .muka-menu__search-input::placeholder {
8547
- color: var(--color-text-subtle-default);
8548
- }
8549
-
8550
- .muka-menu__search-input::-webkit-search-cancel-button,
8551
- .muka-menu__search-input::-webkit-search-decoration {
8552
- -webkit-appearance: none;
8553
- appearance: none;
8554
- }
8555
-
8556
- .muka-menu__empty {
8557
- display: flex;
8558
- align-items: center;
8559
- min-height: var(--menu-item-height);
8560
- padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
8561
- color: var(--color-text-subtle-default);
8562
- font-family: var(--text-input-md-fontFamily);
8563
- font-size: var(--text-input-md-fontSize);
8564
- font-weight: var(--text-input-md-fontWeight);
8565
- line-height: var(--text-input-md-lineHeight);
8566
- pointer-events: none;
8567
- user-select: none;
8568
- }
8569
-
8570
- .muka-menu__search-clear {
8571
- padding: 0;
8572
- border: none;
8573
- background: transparent;
8574
- cursor: pointer;
8575
- }
8576
-
8577
- .muka-menu__match {
8578
- font-weight: var(--text-label-md-bold-fontWeight);
8579
- }
8580
-
8581
- .muka-menu__content--scrollbar {
8582
- height: var(--menu-content-scroll-height, 20.625rem);
8583
- max-height: var(--menu-content-scroll-height, 20.625rem);
8584
- }
8585
-
8586
- .muka-menu__content[data-state='open'] {
8587
- animation-name: muka-menu-fade-in;
8588
- }
8589
-
8590
- .muka-menu__content[data-state='closed'] {
8591
- animation-name: muka-menu-fade-out;
8592
- }
8593
-
8594
- .muka-menu__content[data-side='top'] {
8595
- animation-name: muka-menu-slide-down;
8596
- }
8597
-
8598
- .muka-menu__content[data-side='bottom'] {
8599
- animation-name: muka-menu-slide-up;
8600
- }
8601
-
8602
- .muka-menu__content[data-side='left'] {
8603
- animation-name: muka-menu-slide-right;
8604
- }
8605
-
8606
- .muka-menu__content[data-side='right'] {
8607
- animation-name: muka-menu-slide-left;
8608
- }
8609
-
8610
- /* ─── Menu Item ──────────────────────────────────────────────────────────── */
8611
-
8612
- .muka-menu__item {
8613
- position: relative;
8614
- display: flex;
8615
- align-items: center;
8616
- gap: var(--menu-item-gap);
8617
- min-height: var(--menu-item-height);
8618
- /* Right gutter always reserved for floating trailers (enter / check). */
8619
- padding: var(--menu-item-padding-y) var(--menu-item-padding-right) var(--menu-item-padding-y)
8620
- var(--menu-item-padding-x);
8621
- border-radius: var(--menu-item-border-radius);
8622
- cursor: pointer;
8623
- user-select: none;
8624
- outline: none;
8625
- font-family: var(--text-label-md-regular-fontFamily);
8626
- font-size: var(--text-label-md-regular-fontSize);
8627
- font-weight: var(--text-label-md-regular-fontWeight);
8628
- line-height: var(--text-label-md-regular-lineHeight);
8629
- color: var(--menu-item-color-default-foreground);
8630
- background-color: var(--menu-item-color-default-background);
8631
- transition: background-color 100ms ease, color 100ms ease;
8632
- white-space: nowrap;
8633
- }
8634
-
8635
- .muka-menu__item:hover,
8636
- .muka-menu__item[data-highlighted] {
8637
- background-color: var(--menu-item-color-hover-background);
8638
- color: var(--menu-item-color-hover-foreground);
8639
- }
8640
-
8641
- .muka-menu__item:focus,
8642
- .muka-menu__item[data-highlighted]:focus {
8643
- background-color: var(--menu-item-color-focus-background);
8644
- color: var(--menu-item-color-focus-foreground);
8645
- }
8646
-
8647
- /* Disabled */
8648
- .muka-menu__item--disabled,
8649
- .muka-menu__item[data-disabled] {
8650
- color: var(--menu-item-color-disabled-foreground);
8651
- background-color: var(--menu-item-color-disabled-background);
8652
- cursor: not-allowed;
8653
- pointer-events: none;
8654
- }
8655
-
8656
- .muka-menu__item--disabled .muka-menu__item-icon,
8657
- .muka-menu__item[data-disabled] .muka-menu__item-icon {
8658
- color: var(--menu-item-color-disabled-icon);
8659
- }
8660
-
8661
- /* Destructive */
8662
- .muka-menu__item--destructive {
8663
- color: var(--menu-item-color-destructive-default-foreground);
8664
- }
8665
-
8666
- .muka-menu__item--destructive .muka-menu__item-icon {
8667
- color: var(--menu-item-color-destructive-default-icon);
8668
- }
8669
-
8670
- .muka-menu__item--destructive:hover,
8671
- .muka-menu__item--destructive[data-highlighted] {
8672
- background-color: var(--menu-item-color-destructive-hover-background);
8673
- color: var(--menu-item-color-destructive-hover-foreground);
8674
- }
8675
-
8676
- .muka-menu__item--destructive:hover .muka-menu__item-icon,
8677
- .muka-menu__item--destructive[data-highlighted] .muka-menu__item-icon {
8678
- color: var(--menu-item-color-destructive-hover-icon);
8679
- }
8680
-
8681
- /* ─── Item Parts ─────────────────────────────────────────────────────────── */
8682
-
8683
- .muka-menu__item-icon {
8684
- display: flex;
8685
- align-items: center;
8686
- justify-content: center;
8687
- flex-shrink: 0;
8688
- color: var(--menu-item-color-default-icon);
8689
- transition: color 100ms ease;
8690
- }
8691
-
8692
- .muka-menu__item:hover .muka-menu__item-icon,
8693
- .muka-menu__item[data-highlighted] .muka-menu__item-icon {
8694
- color: var(--menu-item-color-hover-icon);
8695
- }
8696
-
8697
- .muka-menu__item-label {
8698
- flex: 1 1 auto;
8699
- min-width: 0;
8700
- white-space: nowrap;
8701
- }
8702
-
8703
- /* Shortcut trailers replace icons and sit with an 8px right inset. */
8704
- .muka-menu__item--has-shortcut {
8705
- padding-right: var(--spacing-2);
8706
- }
8707
-
8708
- .muka-menu__item-shortcut {
8709
- flex-shrink: 0;
8710
- margin-left: auto;
8711
- padding-left: var(--menu-item-gap);
8712
- font-family: var(--text-label-sm-regular-fontFamily);
8713
- font-size: var(--text-label-sm-regular-fontSize);
8714
- font-weight: var(--text-label-sm-regular-fontWeight);
8715
- line-height: var(--text-label-sm-regular-lineHeight);
8716
- color: var(--color-text-muted-default);
8717
- white-space: nowrap;
8718
- }
8719
-
8720
- .muka-menu__item-hint {
8721
- /* Figma: trailer sits with 8px margin top / right / bottom; 24px glyph centered inside. */
8722
- position: absolute;
8723
- top: var(--spacing-2);
8724
- right: var(--spacing-2);
8725
- bottom: var(--spacing-2);
8726
- display: none;
8727
- align-items: center;
8728
- justify-content: center;
8729
- width: var(--icon-size-default, 1.5rem);
8730
- color: var(--color-text-muted-default);
8731
- pointer-events: none;
8732
- }
8733
-
8734
- .muka-menu__item--hint-enter[data-highlighted] .muka-menu__item-hint {
8735
- display: flex;
8736
- }
8737
-
8738
- .muka-menu__item-chevron {
8739
- position: absolute;
8740
- top: var(--spacing-2);
8741
- right: var(--spacing-2);
8742
- bottom: var(--spacing-2);
8743
- display: flex;
8744
- align-items: center;
8745
- justify-content: center;
8746
- width: var(--icon-size-default, 1.5rem);
8747
- color: var(--menu-shortcut-color);
8748
- }
8749
-
8750
- /* ─── Indicator (Checkbox/Radio) ─────────────────────────────────────────── */
8751
-
8752
- .muka-menu__item-indicator {
8753
- display: flex;
8754
- align-items: center;
8755
- justify-content: center;
8756
- width: var(--menu-checkbox-indicator-size);
8757
- height: var(--menu-checkbox-indicator-size);
8758
- flex-shrink: 0;
8759
- color: var(--menu-checkbox-indicator-color);
8372
+ color: var(--menu-checkbox-indicator-color);
8760
8373
  }
8761
8374
 
8762
8375
  .muka-menu__item--checkbox,
@@ -8913,6 +8526,393 @@ li.muka-listitem {
8913
8526
  }
8914
8527
 
8915
8528
 
8529
+ /* ListItem */
8530
+ /* ListItem Component Styles - Using Muka Design Tokens */
8531
+
8532
+ /* Base list item styles */
8533
+ .muka-listitem {
8534
+ /* Layout */
8535
+ display: flex;
8536
+ align-items: flex-start;
8537
+ gap: var(--spacing-4);
8538
+ padding: var(--spacing-5) var(--spacing-4);
8539
+
8540
+ /* Background - using semantic tokens */
8541
+ background-color: var(--color-surface-level3);
8542
+
8543
+ /* Typography */
8544
+ font-family: var(--alias-font-brand-family);
8545
+
8546
+ /* Border and spacing */
8547
+ border: none;
8548
+ position: relative;
8549
+
8550
+ /* Interaction - only apply if interactive */
8551
+ transition: background-color 0.2s ease, box-shadow 0.2s ease;
8552
+ }
8553
+
8554
+ /* Interactive state */
8555
+ .muka-listitem--interactive {
8556
+ cursor: pointer;
8557
+ }
8558
+
8559
+ /*
8560
+ * surface.hover / surface.pressed are theme-adaptive translucent tints, so they
8561
+ * are layered on top of the item's base surface via an inset box-shadow overlay
8562
+ * rather than replacing background-color. This preserves the base level (level3,
8563
+ * or level2 when selected) and lets the tint read correctly on any surface.
8564
+ */
8565
+ .muka-listitem--interactive:hover:not(:disabled):not(.muka-listitem--disabled) {
8566
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
8567
+ }
8568
+
8569
+ .muka-listitem--interactive:active:not(:disabled):not(.muka-listitem--disabled),
8570
+ .muka-listitem--interactive.muka-listitem--pressed:not(:disabled):not(.muka-listitem--disabled) {
8571
+ box-shadow: inset 0 0 0 9999px var(--color-surface-pressed);
8572
+ }
8573
+
8574
+ /* Focus styles for accessibility */
8575
+ .muka-listitem:focus-visible {
8576
+ outline: 2px solid var(--color-border-focus);
8577
+ outline-offset: -2px;
8578
+ }
8579
+
8580
+ /* Disabled state */
8581
+ .muka-listitem--disabled {
8582
+ opacity: 0.5;
8583
+ cursor: not-allowed;
8584
+ pointer-events: none;
8585
+ }
8586
+
8587
+ .muka-listitem--disabled:hover {
8588
+ background-color: var(--color-surface-level3);
8589
+ }
8590
+
8591
+ /* Selected state */
8592
+ .muka-listitem--selected {
8593
+ background-color: var(--color-surface-level2);
8594
+ }
8595
+
8596
+ .muka-listitem--selected:hover {
8597
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
8598
+ }
8599
+
8600
+ /* No divider modifier */
8601
+ .muka-listitem--no-divider .muka-listitem__divider {
8602
+ display: none;
8603
+ }
8604
+
8605
+ /* Center content vertically when no caption */
8606
+ .muka-listitem--no-caption {
8607
+ align-items: center;
8608
+ }
8609
+
8610
+ /* Leading content (icon or image) */
8611
+ .muka-listitem__leading {
8612
+ display: flex;
8613
+ align-items: center;
8614
+ justify-content: center;
8615
+ flex-shrink: 0;
8616
+ width: 48px;
8617
+ height: 48px;
8618
+ }
8619
+
8620
+ .muka-listitem__icon {
8621
+ display: inline-flex;
8622
+ align-items: center;
8623
+ justify-content: center;
8624
+ width: 32px;
8625
+ height: 32px;
8626
+ color: var(--color-text-default-default);
8627
+ }
8628
+
8629
+ .muka-listitem__image {
8630
+ width: 48px;
8631
+ height: 48px;
8632
+ border-radius: var(--radius-md);
8633
+ object-fit: cover;
8634
+ }
8635
+
8636
+ /* Main content area */
8637
+ .muka-listitem__content {
8638
+ flex: 1;
8639
+ display: flex;
8640
+ align-items: center;
8641
+ gap: var(--spacing-4);
8642
+ min-width: 0;
8643
+ }
8644
+
8645
+ .muka-listitem__text {
8646
+ flex: 1;
8647
+ display: flex;
8648
+ flex-direction: column;
8649
+ gap: var(--spacing-1);
8650
+ min-width: 0;
8651
+ }
8652
+
8653
+ /* Label text */
8654
+ .muka-listitem__label {
8655
+ margin: 0;
8656
+ padding: 0;
8657
+
8658
+ /* Typography - using semantic tokens */
8659
+ font-family: var(--alias-font-plain-family);
8660
+ font-weight: var(--alias-font-plain-weight-semibold, 600);
8661
+ font-size: var(--text-label-md-fontSize);
8662
+ line-height: var(--text-label-md-lineHeight);
8663
+ color: var(--color-text-default-default);
8664
+
8665
+ /* Text handling */
8666
+ overflow: hidden;
8667
+ text-overflow: ellipsis;
8668
+ white-space: nowrap;
8669
+ }
8670
+
8671
+ /* Caption text */
8672
+ .muka-listitem__caption {
8673
+ margin: 0;
8674
+ padding: 0;
8675
+
8676
+ /* Typography - using semantic tokens */
8677
+ font-family: var(--alias-font-plain-family);
8678
+ font-weight: var(--alias-font-plain-weight-regular, 400);
8679
+ font-size: var(--text-body-sm-fontSize);
8680
+ line-height: var(--text-body-sm-lineHeight);
8681
+ color: var(--color-text-subtle-default);
8682
+
8683
+ /* Text handling */
8684
+ overflow: hidden;
8685
+ text-overflow: ellipsis;
8686
+ white-space: nowrap;
8687
+ }
8688
+
8689
+ /* Trailing chevron */
8690
+ .muka-listitem__chevron {
8691
+ display: inline-flex;
8692
+ align-items: center;
8693
+ justify-content: center;
8694
+ flex-shrink: 0;
8695
+ width: 24px;
8696
+ height: 24px;
8697
+ color: var(--color-text-subtle-default);
8698
+ }
8699
+
8700
+ /* Bottom divider */
8701
+ .muka-listitem__divider {
8702
+ position: absolute;
8703
+ bottom: 0;
8704
+ left: 0;
8705
+ right: 0;
8706
+ height: 1px;
8707
+ background-color: var(--color-border-default);
8708
+ }
8709
+
8710
+ /* Button and anchor specific styles */
8711
+ button.muka-listitem,
8712
+ a.muka-listitem {
8713
+ text-align: left;
8714
+ width: 100%;
8715
+ }
8716
+
8717
+ /* List item specific styles */
8718
+ li.muka-listitem {
8719
+ list-style: none;
8720
+ }
8721
+
8722
+
8723
+ /* LicensePlateInput */
8724
+ /* LicensePlateInput — Dutch RDW-style plate input
8725
+ *
8726
+ * Plate body colors are regulatory (EU/NL) and intentionally fixed:
8727
+ * - Plate yellow: #F0CE3D
8728
+ * - EU strip blue: #003399
8729
+ * - EU stars yellow: #FFCC00
8730
+ * - Plate text: #1A1A1A
8731
+ *
8732
+ * All surrounding UI (label, helper, focus ring, error border) uses Muka tokens.
8733
+ */
8734
+
8735
+ .muka-license-plate-input {
8736
+ --plate-yellow: #f0ce3d;
8737
+ --plate-blue: #003399;
8738
+ --plate-text: #1a1a1a;
8739
+ --plate-stars: #ffcc00;
8740
+
8741
+ display: inline-flex;
8742
+ flex-direction: column;
8743
+ gap: var(--spacing-2);
8744
+ }
8745
+
8746
+ /* Plate body */
8747
+ .muka-license-plate-input__plate {
8748
+ display: inline-flex;
8749
+ align-items: stretch;
8750
+ background-color: var(--plate-yellow);
8751
+ border-radius: var(--input-field-radius-md);
8752
+ cursor: text;
8753
+ position: relative;
8754
+ overflow: hidden;
8755
+ box-sizing: border-box;
8756
+ /* Subtle outline to lift the plate from light backgrounds */
8757
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
8758
+ /* Reserve space for the focus / error solid ring without shifting layout */
8759
+ outline: 3px solid transparent;
8760
+ outline-offset: 2px;
8761
+ transition: outline-color 0.15s ease, opacity 0.15s ease;
8762
+ }
8763
+
8764
+ /* Size variants — plate aspect echoes the real RDW plate (~5:1) */
8765
+ .muka-license-plate-input__plate--sm {
8766
+ height: 44px;
8767
+ min-width: 220px;
8768
+ border-radius: var(--input-field-radius-sm);
8769
+ }
8770
+
8771
+ .muka-license-plate-input__plate--md {
8772
+ height: 60px;
8773
+ min-width: 300px;
8774
+ border-radius: var(--input-field-radius-md);
8775
+ }
8776
+
8777
+ .muka-license-plate-input__plate--lg {
8778
+ height: 80px;
8779
+ min-width: 400px;
8780
+ border-radius: var(--input-field-radius-lg);
8781
+ }
8782
+
8783
+ /* Focus — solid outline ring */
8784
+ .muka-license-plate-input__plate--focused:not(.muka-license-plate-input__plate--disabled) {
8785
+ outline-color: var(--input-field-color-focus-border);
8786
+ }
8787
+
8788
+ /* Error — solid outline ring in error color */
8789
+ .muka-license-plate-input__plate--error:not(.muka-license-plate-input__plate--disabled) {
8790
+ outline-color: var(--input-field-color-error-border);
8791
+ }
8792
+
8793
+ /* Disabled */
8794
+ .muka-license-plate-input__plate--disabled {
8795
+ cursor: not-allowed;
8796
+ opacity: 0.55;
8797
+ }
8798
+
8799
+ /* EU strip */
8800
+ .muka-license-plate-input__eu-strip {
8801
+ display: inline-flex;
8802
+ flex-direction: column;
8803
+ align-items: center;
8804
+ justify-content: center;
8805
+ background-color: var(--plate-blue);
8806
+ color: #ffffff;
8807
+ flex-shrink: 0;
8808
+ padding: 0 0.4em;
8809
+ gap: 0.15em;
8810
+ /* Strip width scales with plate height for a consistent ratio */
8811
+ width: 14%;
8812
+ min-width: 36px;
8813
+ }
8814
+
8815
+ .muka-license-plate-input__eu-stars {
8816
+ width: 60%;
8817
+ max-width: 28px;
8818
+ aspect-ratio: 1 / 1;
8819
+ display: block;
8820
+ }
8821
+
8822
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__eu-stars {
8823
+ max-width: 20px;
8824
+ }
8825
+
8826
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__eu-stars {
8827
+ max-width: 36px;
8828
+ }
8829
+
8830
+ .muka-license-plate-input__country-code {
8831
+ font-family:
8832
+ 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
8833
+ font-weight: 700;
8834
+ letter-spacing: 0.04em;
8835
+ line-height: 1;
8836
+ color: #ffffff;
8837
+ }
8838
+
8839
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__country-code {
8840
+ font-size: 10px;
8841
+ }
8842
+
8843
+ .muka-license-plate-input__plate--md .muka-license-plate-input__country-code {
8844
+ font-size: 13px;
8845
+ }
8846
+
8847
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__country-code {
8848
+ font-size: 16px;
8849
+ }
8850
+
8851
+ /* Native input */
8852
+ .muka-license-plate-input__native {
8853
+ flex: 1;
8854
+ min-width: 0;
8855
+ border: none;
8856
+ outline: none;
8857
+ background: transparent;
8858
+ color: var(--plate-text);
8859
+ text-align: center;
8860
+ text-transform: uppercase;
8861
+ letter-spacing: 0.06em;
8862
+ /* Plate font — bold condensed sans is closest to the FE-Schrift look without
8863
+ shipping a custom font. JetBrains Mono is the system mono brand font. */
8864
+ font-family:
8865
+ 'Arial Narrow', 'Helvetica Neue', Helvetica, Arial, sans-serif;
8866
+ font-weight: 800;
8867
+ padding: 0 0.5em;
8868
+ width: 100%;
8869
+ caret-color: var(--plate-text);
8870
+ }
8871
+
8872
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__native {
8873
+ font-size: 22px;
8874
+ }
8875
+
8876
+ .muka-license-plate-input__plate--md .muka-license-plate-input__native {
8877
+ font-size: 30px;
8878
+ }
8879
+
8880
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__native {
8881
+ font-size: 42px;
8882
+ }
8883
+
8884
+ .muka-license-plate-input__native::placeholder {
8885
+ color: var(--plate-text);
8886
+ opacity: 0.55;
8887
+ font-weight: 700;
8888
+ letter-spacing: 0.08em;
8889
+ }
8890
+
8891
+ .muka-license-plate-input__plate--disabled .muka-license-plate-input__native {
8892
+ cursor: not-allowed;
8893
+ }
8894
+
8895
+ /* Helper text */
8896
+ .muka-license-plate-input__helper {
8897
+ font-family: var(--text-label-sm-regular-fontFamily);
8898
+ font-weight: var(--text-label-sm-regular-fontWeight);
8899
+ font-size: var(--text-label-sm-regular-fontSize);
8900
+ line-height: var(--text-label-sm-regular-lineHeight);
8901
+ color: var(--color-text-subtle-default);
8902
+ margin: 0;
8903
+ }
8904
+
8905
+ /* Error message */
8906
+ .muka-license-plate-input__error {
8907
+ font-family: var(--text-label-sm-regular-fontFamily);
8908
+ font-weight: var(--text-label-sm-regular-fontWeight);
8909
+ font-size: var(--text-label-sm-regular-fontSize);
8910
+ line-height: var(--text-label-sm-regular-lineHeight);
8911
+ color: var(--color-state-error-default);
8912
+ margin: 0;
8913
+ }
8914
+
8915
+
8916
8916
  /* Label */
8917
8917
  /* Label Component Styles - Using Muka Design Tokens */
8918
8918
 
@@ -12877,6 +12877,134 @@ button.muka-chat-photo-grid__tile:focus-visible {
12877
12877
  }
12878
12878
 
12879
12879
 
12880
+ /* ChatComposer */
12881
+ /* ChatComposer Component Styles */
12882
+
12883
+ /*
12884
+ * The composer is a bare, fill-width row: no padding, background, border or
12885
+ * max-width of its own (Figma 5243:14141). Whatever hosts it owns the
12886
+ * container — see BottomBar's `chat` variant.
12887
+ */
12888
+ .muka-chat-composer {
12889
+ display: flex;
12890
+ flex-direction: column;
12891
+ gap: var(--spacing-3);
12892
+ width: 100%;
12893
+ }
12894
+
12895
+ .muka-chat-composer--disabled {
12896
+ opacity: 0.6;
12897
+ pointer-events: none;
12898
+ }
12899
+
12900
+ /* ─── Input row ────────────────────────────────────────── */
12901
+
12902
+ .muka-chat-composer__row {
12903
+ display: flex;
12904
+ width: 100%;
12905
+ align-items: flex-end;
12906
+ gap: var(--spacing-3);
12907
+ }
12908
+
12909
+ /* ─── Text field ───────────────────────────────────────── */
12910
+
12911
+ .muka-chat-composer__field {
12912
+ display: flex;
12913
+ flex: 1 1 auto;
12914
+ min-width: 0;
12915
+ box-sizing: border-box;
12916
+ align-items: center;
12917
+ gap: var(--spacing-1);
12918
+ min-height: var(--input-field-height-lg, 48px);
12919
+ padding: 0 var(--spacing-2);
12920
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
12921
+ border-radius: var(--input-field-radius-lg);
12922
+ background-color: var(--input-field-color-default-background);
12923
+ transition: border-color 0.12s ease;
12924
+ }
12925
+
12926
+ .muka-chat-composer__field:focus-within {
12927
+ border-color: var(--input-field-color-focus-border, var(--color-action-default));
12928
+ }
12929
+
12930
+ .muka-chat-composer__input {
12931
+ flex: 1 1 auto;
12932
+ min-width: 0;
12933
+ width: 100%;
12934
+ box-sizing: border-box;
12935
+ resize: none;
12936
+ border: none;
12937
+ background: transparent;
12938
+ outline: none;
12939
+ padding: 0 var(--spacing-1);
12940
+ color: var(--color-text-default-default);
12941
+ font-family: var(--text-body-base-regular-fontFamily);
12942
+ font-weight: var(--text-body-base-regular-fontWeight);
12943
+ font-size: var(--text-body-base-regular-fontSize);
12944
+ line-height: var(--text-body-base-regular-lineHeight);
12945
+ appearance: none;
12946
+ -webkit-appearance: none;
12947
+ }
12948
+
12949
+ .muka-chat-composer__input::placeholder {
12950
+ color: var(--color-text-subtle-default);
12951
+ }
12952
+
12953
+ /* Keep the in-field emoji button flush to the bottom-right as the field grows */
12954
+ .muka-chat-composer__emoji {
12955
+ flex-shrink: 0;
12956
+ }
12957
+
12958
+ /* ─── Recording bar ────────────────────────────────────── */
12959
+
12960
+ .muka-chat-composer__recording {
12961
+ display: flex;
12962
+ flex: 1 1 auto;
12963
+ min-width: 0;
12964
+ box-sizing: border-box;
12965
+ align-items: center;
12966
+ min-height: var(--input-field-height-lg, 48px);
12967
+ padding: var(--card-padding-sm);
12968
+ border: var(--border-width-regular) solid var(--card-color-default-border);
12969
+ border-radius: var(--radius-lg);
12970
+ background-color: var(--card-color-default-background);
12971
+ }
12972
+
12973
+ /* ─── Staged attachments strip ─────────────────────────── */
12974
+
12975
+ .muka-chat-composer__attachments-strip {
12976
+ position: relative;
12977
+ width: 100%;
12978
+ }
12979
+
12980
+ .muka-chat-composer__attachments {
12981
+ display: flex;
12982
+ gap: var(--spacing-3);
12983
+ overflow-x: auto;
12984
+ scroll-behavior: smooth;
12985
+ scrollbar-width: none;
12986
+ }
12987
+
12988
+ .muka-chat-composer__attachments::-webkit-scrollbar {
12989
+ display: none;
12990
+ }
12991
+
12992
+ .muka-chat-composer__overflow {
12993
+ position: absolute;
12994
+ top: 50%;
12995
+ right: var(--spacing-2);
12996
+ transform: translateY(-50%);
12997
+ }
12998
+
12999
+ /* ─── Print ────────────────────────────────────────────── */
13000
+
13001
+ @media print {
13002
+ .muka-chat-composer {
13003
+ display: none;
13004
+ }
13005
+ }
13006
+
13007
+
12880
13008
  /* ChatAttachmentChip */
12881
13009
  /* ChatAttachmentChip Component Styles */
12882
13010
 
@@ -14450,134 +14578,6 @@ button.muka-chat-photo-grid__tile:focus-visible {
14450
14578
  }
14451
14579
 
14452
14580
 
14453
- /* ChatComposer */
14454
- /* ChatComposer Component Styles */
14455
-
14456
- /*
14457
- * The composer is a bare, fill-width row: no padding, background, border or
14458
- * max-width of its own (Figma 5243:14141). Whatever hosts it owns the
14459
- * container — see BottomBar's `chat` variant.
14460
- */
14461
- .muka-chat-composer {
14462
- display: flex;
14463
- flex-direction: column;
14464
- gap: var(--spacing-3);
14465
- width: 100%;
14466
- }
14467
-
14468
- .muka-chat-composer--disabled {
14469
- opacity: 0.6;
14470
- pointer-events: none;
14471
- }
14472
-
14473
- /* ─── Input row ────────────────────────────────────────── */
14474
-
14475
- .muka-chat-composer__row {
14476
- display: flex;
14477
- width: 100%;
14478
- align-items: flex-end;
14479
- gap: var(--spacing-3);
14480
- }
14481
-
14482
- /* ─── Text field ───────────────────────────────────────── */
14483
-
14484
- .muka-chat-composer__field {
14485
- display: flex;
14486
- flex: 1 1 auto;
14487
- min-width: 0;
14488
- box-sizing: border-box;
14489
- align-items: center;
14490
- gap: var(--spacing-1);
14491
- min-height: var(--input-field-height-lg, 48px);
14492
- padding: 0 var(--spacing-2);
14493
- border: var(--border-width-regular) solid var(--input-field-color-default-border);
14494
- border-radius: var(--input-field-radius-lg);
14495
- background-color: var(--input-field-color-default-background);
14496
- transition: border-color 0.12s ease;
14497
- }
14498
-
14499
- .muka-chat-composer__field:focus-within {
14500
- border-color: var(--input-field-color-focus-border, var(--color-action-default));
14501
- }
14502
-
14503
- .muka-chat-composer__input {
14504
- flex: 1 1 auto;
14505
- min-width: 0;
14506
- width: 100%;
14507
- box-sizing: border-box;
14508
- resize: none;
14509
- border: none;
14510
- background: transparent;
14511
- outline: none;
14512
- padding: 0 var(--spacing-1);
14513
- color: var(--color-text-default-default);
14514
- font-family: var(--text-body-base-regular-fontFamily);
14515
- font-weight: var(--text-body-base-regular-fontWeight);
14516
- font-size: var(--text-body-base-regular-fontSize);
14517
- line-height: var(--text-body-base-regular-lineHeight);
14518
- appearance: none;
14519
- -webkit-appearance: none;
14520
- }
14521
-
14522
- .muka-chat-composer__input::placeholder {
14523
- color: var(--color-text-subtle-default);
14524
- }
14525
-
14526
- /* Keep the in-field emoji button flush to the bottom-right as the field grows */
14527
- .muka-chat-composer__emoji {
14528
- flex-shrink: 0;
14529
- }
14530
-
14531
- /* ─── Recording bar ────────────────────────────────────── */
14532
-
14533
- .muka-chat-composer__recording {
14534
- display: flex;
14535
- flex: 1 1 auto;
14536
- min-width: 0;
14537
- box-sizing: border-box;
14538
- align-items: center;
14539
- min-height: var(--input-field-height-lg, 48px);
14540
- padding: var(--card-padding-sm);
14541
- border: var(--border-width-regular) solid var(--card-color-default-border);
14542
- border-radius: var(--radius-lg);
14543
- background-color: var(--card-color-default-background);
14544
- }
14545
-
14546
- /* ─── Staged attachments strip ─────────────────────────── */
14547
-
14548
- .muka-chat-composer__attachments-strip {
14549
- position: relative;
14550
- width: 100%;
14551
- }
14552
-
14553
- .muka-chat-composer__attachments {
14554
- display: flex;
14555
- gap: var(--spacing-3);
14556
- overflow-x: auto;
14557
- scroll-behavior: smooth;
14558
- scrollbar-width: none;
14559
- }
14560
-
14561
- .muka-chat-composer__attachments::-webkit-scrollbar {
14562
- display: none;
14563
- }
14564
-
14565
- .muka-chat-composer__overflow {
14566
- position: absolute;
14567
- top: 50%;
14568
- right: var(--spacing-2);
14569
- transform: translateY(-50%);
14570
- }
14571
-
14572
- /* ─── Print ────────────────────────────────────────────── */
14573
-
14574
- @media print {
14575
- .muka-chat-composer {
14576
- display: none;
14577
- }
14578
- }
14579
-
14580
-
14581
14581
  /* AppShell */
14582
14582
  /* AppShell Component Styles */
14583
14583