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