@revikornmann/muka-ui 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/cjs/components/ChatMessage/ChatMessage.css +3 -5
  2. package/dist/cjs/components/DataTable/DataTable.css +5 -0
  3. package/dist/cjs/components/Icon/iconRegistry.js +2 -2
  4. package/dist/cjs/components/Icon/iconRegistry.js.map +1 -1
  5. package/dist/cjs/components/Input/Input.css +11 -4
  6. package/dist/cjs/components/Input/Input.js +13 -5
  7. package/dist/cjs/components/Input/Input.js.map +1 -1
  8. package/dist/cjs/components/SocialSignInButton/SocialSignInButton.css +147 -0
  9. package/dist/cjs/components/SocialSignInButton/SocialSignInButton.js +43 -0
  10. package/dist/cjs/components/SocialSignInButton/SocialSignInButton.js.map +1 -0
  11. package/dist/cjs/components/SocialSignInButton/icons/AppleLogo.js +11 -0
  12. package/dist/cjs/components/SocialSignInButton/icons/AppleLogo.js.map +1 -0
  13. package/dist/cjs/components/SocialSignInButton/icons/GoogleLogo.js +12 -0
  14. package/dist/cjs/components/SocialSignInButton/icons/GoogleLogo.js.map +1 -0
  15. package/dist/cjs/components/SocialSignInButton/index.js +11 -0
  16. package/dist/cjs/components/SocialSignInButton/index.js.map +1 -0
  17. package/dist/cjs/components/index.js +3 -1
  18. package/dist/cjs/components/index.js.map +1 -1
  19. package/dist/esm/components/ChatMessage/ChatMessage.css +3 -5
  20. package/dist/esm/components/DataTable/DataTable.css +5 -0
  21. package/dist/esm/components/Icon/iconRegistry.js +2 -2
  22. package/dist/esm/components/Icon/iconRegistry.js.map +1 -1
  23. package/dist/esm/components/Input/Input.css +11 -4
  24. package/dist/esm/components/Input/Input.js +13 -5
  25. package/dist/esm/components/Input/Input.js.map +1 -1
  26. package/dist/esm/components/SocialSignInButton/SocialSignInButton.css +147 -0
  27. package/dist/esm/components/SocialSignInButton/SocialSignInButton.js +40 -0
  28. package/dist/esm/components/SocialSignInButton/SocialSignInButton.js.map +1 -0
  29. package/dist/esm/components/SocialSignInButton/icons/AppleLogo.js +7 -0
  30. package/dist/esm/components/SocialSignInButton/icons/AppleLogo.js.map +1 -0
  31. package/dist/esm/components/SocialSignInButton/icons/GoogleLogo.js +8 -0
  32. package/dist/esm/components/SocialSignInButton/icons/GoogleLogo.js.map +1 -0
  33. package/dist/esm/components/SocialSignInButton/index.js +3 -0
  34. package/dist/esm/components/SocialSignInButton/index.js.map +1 -0
  35. package/dist/esm/components/index.js +1 -0
  36. package/dist/esm/components/index.js.map +1 -1
  37. package/dist/styles/components/ChatMessage.css +3 -5
  38. package/dist/styles/components/DataTable.css +5 -0
  39. package/dist/styles/components/Input.css +11 -4
  40. package/dist/styles/components/SocialSignInButton.css +147 -0
  41. package/dist/styles/index.css +1840 -1681
  42. package/dist/styles/muka-dark.css +1840 -1681
  43. package/dist/styles/muka-light.css +1840 -1681
  44. package/dist/styles/tokens-bouwplan-dark.css +1 -2
  45. package/dist/styles/tokens-bouwplan-light.css +1 -2
  46. package/dist/styles/tokens-fscl-dark.css +1 -2
  47. package/dist/styles/tokens-fscl-light.css +1 -2
  48. package/dist/styles/tokens-grip-dark.css +1 -2
  49. package/dist/styles/tokens-grip-light.css +1 -2
  50. package/dist/styles/tokens-muka-dark.css +1 -2
  51. package/dist/styles/tokens-muka-light.css +1 -2
  52. package/dist/styles/tokens-wireframe-dark.css +1 -2
  53. package/dist/styles/tokens-wireframe-light.css +1 -2
  54. package/dist/styles/wireframe-dark.css +1840 -1681
  55. package/dist/styles/wireframe-light.css +1840 -1681
  56. package/dist/types/components/Icon/iconRegistry.d.ts +2 -2
  57. package/dist/types/components/Input/Input.d.ts +5 -0
  58. package/dist/types/components/Input/Input.d.ts.map +1 -1
  59. package/dist/types/components/SocialSignInButton/SocialSignInButton.d.ts +41 -0
  60. package/dist/types/components/SocialSignInButton/SocialSignInButton.d.ts.map +1 -0
  61. package/dist/types/components/SocialSignInButton/icons/AppleLogo.d.ts +9 -0
  62. package/dist/types/components/SocialSignInButton/icons/AppleLogo.d.ts.map +1 -0
  63. package/dist/types/components/SocialSignInButton/icons/GoogleLogo.d.ts +10 -0
  64. package/dist/types/components/SocialSignInButton/icons/GoogleLogo.d.ts.map +1 -0
  65. package/dist/types/components/SocialSignInButton/index.d.ts +3 -0
  66. package/dist/types/components/SocialSignInButton/index.d.ts.map +1 -0
  67. package/dist/types/components/index.d.ts +1 -0
  68. package/dist/types/components/index.d.ts.map +1 -1
  69. package/package.json +1 -1
  70. package/tokens/t4-components/chatbubble.json +2 -7
@@ -1694,8 +1694,7 @@ body {
1694
1694
  --card-border-pressed: 0.125rem solid #9eb1ff;
1695
1695
  --card-border-selected: 0.125rem solid #9eb1ff;
1696
1696
  --chat-column-max-width: 768px;
1697
- --chatbubble-max-width: 37rem;
1698
- --chatbubble-max-width-ratio: 77%;
1697
+ --chatbubble-max-width: 600px;
1699
1698
  --chatbubble-radius: 0.75rem;
1700
1699
  --chatbubble-padding-block: 0.75rem;
1701
1700
  --chatbubble-padding-inline: 1rem;
@@ -4750,6 +4749,241 @@ body {
4750
4749
  }
4751
4750
 
4752
4751
 
4752
+ /* SpecList */
4753
+ /* SpecList Component Styles */
4754
+
4755
+ .muka-spec-list {
4756
+ margin: 0;
4757
+ padding: 0;
4758
+ }
4759
+
4760
+ /* ─── Row ─────────────────────────────────────────────── */
4761
+
4762
+ .muka-spec-row {
4763
+ display: flex;
4764
+ align-items: flex-start;
4765
+ gap: var(--spacing-3);
4766
+ padding-bottom: var(--spacing-3);
4767
+ }
4768
+
4769
+ /* ─── Label ───────────────────────────────────────────── */
4770
+
4771
+ .muka-spec-row__label {
4772
+ flex: 0 0 auto;
4773
+ margin: 0;
4774
+ color: var(--color-text-subtle-default);
4775
+ font-family: var(--text-body-base-regular-fontFamily);
4776
+ font-weight: var(--text-body-base-regular-fontWeight);
4777
+ font-size: var(--text-body-base-regular-fontSize);
4778
+ line-height: var(--text-body-base-regular-lineHeight);
4779
+ overflow: hidden;
4780
+ text-overflow: ellipsis;
4781
+ white-space: nowrap;
4782
+ }
4783
+
4784
+ /* ─── Value ───────────────────────────────────────────── */
4785
+
4786
+ .muka-spec-row__value {
4787
+ flex: 1 1 0;
4788
+ min-width: 0;
4789
+ margin: 0;
4790
+ display: flex;
4791
+ flex-direction: column;
4792
+ color: var(--color-text-default-default);
4793
+ }
4794
+
4795
+ .muka-spec-row__value-text {
4796
+ font-family: var(--text-body-base-regular-fontFamily);
4797
+ font-weight: var(--text-body-base-regular-fontWeight);
4798
+ font-size: var(--text-body-base-regular-fontSize);
4799
+ line-height: var(--text-body-base-regular-lineHeight);
4800
+ }
4801
+
4802
+ .muka-spec-row__hint {
4803
+ color: var(--color-text-subtle-default);
4804
+ font-family: var(--text-body-sm-regular-fontFamily);
4805
+ font-weight: var(--text-body-sm-regular-fontWeight);
4806
+ font-size: var(--text-body-sm-regular-fontSize);
4807
+ line-height: var(--text-body-sm-regular-lineHeight);
4808
+ }
4809
+
4810
+ /* ─── Label width (horizontal stacking) ───────────────── */
4811
+
4812
+ .muka-spec-list--label-small .muka-spec-row__label {
4813
+ width: 80px;
4814
+ }
4815
+
4816
+ .muka-spec-list--label-medium .muka-spec-row__label {
4817
+ width: 120px;
4818
+ }
4819
+
4820
+ .muka-spec-list--label-large .muka-spec-row__label {
4821
+ width: 160px;
4822
+ }
4823
+
4824
+ /* ─── Vertical stacking ───────────────────────────────── */
4825
+
4826
+ .muka-spec-list--vertical .muka-spec-row {
4827
+ flex-direction: column;
4828
+ gap: var(--spacing-1);
4829
+ }
4830
+
4831
+ .muka-spec-list--vertical .muka-spec-row__label {
4832
+ width: 100%;
4833
+ white-space: normal;
4834
+ }
4835
+
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
+
4753
4987
  /* SmsOtpField */
4754
4988
  /* SmsOtpField Component Styles - Using Muka Design Tokens */
4755
4989
 
@@ -4942,138 +5176,53 @@ body {
4942
5176
  }
4943
5177
 
4944
5178
 
4945
- /* SpecList */
4946
- /* SpecList Component Styles */
5179
+ /* Skeleton */
5180
+ /* Skeleton Component Styles */
4947
5181
 
4948
- .muka-spec-list {
4949
- margin: 0;
4950
- padding: 0;
5182
+ .muka-skeleton {
5183
+ background-color: var(--color-surface-level1);
5184
+ display: block;
4951
5185
  }
4952
5186
 
4953
- /* ─── Row ─────────────────────────────────────────────── */
4954
-
4955
- .muka-spec-row {
4956
- display: flex;
4957
- align-items: flex-start;
4958
- gap: var(--spacing-3);
4959
- padding-bottom: var(--spacing-3);
5187
+ /* Variants */
5188
+ .muka-skeleton--text {
5189
+ height: 1em;
5190
+ border-radius: var(--radius-md);
5191
+ width: 100%;
4960
5192
  }
4961
5193
 
4962
- /* ─── Label ───────────────────────────────────────────── */
5194
+ .muka-skeleton--circular {
5195
+ width: 2.5rem;
5196
+ height: 2.5rem;
5197
+ border-radius: var(--radius-full);
5198
+ }
4963
5199
 
4964
- .muka-spec-row__label {
4965
- flex: 0 0 auto;
4966
- margin: 0;
4967
- color: var(--color-text-subtle-default);
4968
- font-family: var(--text-body-base-regular-fontFamily);
4969
- font-weight: var(--text-body-base-regular-fontWeight);
4970
- font-size: var(--text-body-base-regular-fontSize);
4971
- line-height: var(--text-body-base-regular-lineHeight);
4972
- overflow: hidden;
4973
- text-overflow: ellipsis;
4974
- white-space: nowrap;
5200
+ .muka-skeleton--rectangular {
5201
+ height: 7.5rem;
5202
+ border-radius: var(--radius-md);
5203
+ width: 100%;
4975
5204
  }
4976
5205
 
4977
- /* ─── Value ───────────────────────────────────────────── */
5206
+ /* Last line in multi-line text is shorter */
5207
+ .muka-skeleton--last-line {
5208
+ width: 80%;
5209
+ }
4978
5210
 
4979
- .muka-spec-row__value {
4980
- flex: 1 1 0;
4981
- min-width: 0;
4982
- margin: 0;
5211
+ /* Lines container */
5212
+ .muka-skeleton__lines {
4983
5213
  display: flex;
4984
5214
  flex-direction: column;
4985
- color: var(--color-text-default-default);
5215
+ gap: var(--spacing-2);
4986
5216
  }
4987
5217
 
4988
- .muka-spec-row__value-text {
4989
- font-family: var(--text-body-base-regular-fontFamily);
4990
- font-weight: var(--text-body-base-regular-fontWeight);
4991
- font-size: var(--text-body-base-regular-fontSize);
4992
- line-height: var(--text-body-base-regular-lineHeight);
4993
- }
4994
-
4995
- .muka-spec-row__hint {
4996
- color: var(--color-text-subtle-default);
4997
- font-family: var(--text-body-sm-regular-fontFamily);
4998
- font-weight: var(--text-body-sm-regular-fontWeight);
4999
- font-size: var(--text-body-sm-regular-fontSize);
5000
- line-height: var(--text-body-sm-regular-lineHeight);
5001
- }
5002
-
5003
- /* ─── Label width (horizontal stacking) ───────────────── */
5004
-
5005
- .muka-spec-list--label-small .muka-spec-row__label {
5006
- width: 80px;
5007
- }
5008
-
5009
- .muka-spec-list--label-medium .muka-spec-row__label {
5010
- width: 120px;
5011
- }
5012
-
5013
- .muka-spec-list--label-large .muka-spec-row__label {
5014
- width: 160px;
5015
- }
5016
-
5017
- /* ─── Vertical stacking ───────────────────────────────── */
5018
-
5019
- .muka-spec-list--vertical .muka-spec-row {
5020
- flex-direction: column;
5021
- gap: var(--spacing-1);
5022
- }
5023
-
5024
- .muka-spec-list--vertical .muka-spec-row__label {
5025
- width: 100%;
5026
- white-space: normal;
5027
- }
5028
-
5029
-
5030
- /* Skeleton */
5031
- /* Skeleton Component Styles */
5032
-
5033
- .muka-skeleton {
5034
- background-color: var(--color-surface-level1);
5035
- display: block;
5036
- }
5037
-
5038
- /* Variants */
5039
- .muka-skeleton--text {
5040
- height: 1em;
5041
- border-radius: var(--radius-md);
5042
- width: 100%;
5043
- }
5044
-
5045
- .muka-skeleton--circular {
5046
- width: 2.5rem;
5047
- height: 2.5rem;
5048
- border-radius: var(--radius-full);
5049
- }
5050
-
5051
- .muka-skeleton--rectangular {
5052
- height: 7.5rem;
5053
- border-radius: var(--radius-md);
5054
- width: 100%;
5055
- }
5056
-
5057
- /* Last line in multi-line text is shorter */
5058
- .muka-skeleton--last-line {
5059
- width: 80%;
5060
- }
5061
-
5062
- /* Lines container */
5063
- .muka-skeleton__lines {
5064
- display: flex;
5065
- flex-direction: column;
5066
- gap: var(--spacing-2);
5067
- }
5068
-
5069
- /* Shimmer animation */
5070
- @keyframes muka-skeleton-shimmer {
5071
- 0% {
5072
- background-position: -200% 0;
5073
- }
5074
- 100% {
5075
- background-position: 200% 0;
5076
- }
5218
+ /* Shimmer animation */
5219
+ @keyframes muka-skeleton-shimmer {
5220
+ 0% {
5221
+ background-position: -200% 0;
5222
+ }
5223
+ 100% {
5224
+ background-position: 200% 0;
5225
+ }
5077
5226
  }
5078
5227
 
5079
5228
  .muka-skeleton--shimmer {
@@ -5564,6 +5713,29 @@ body {
5564
5713
  }
5565
5714
 
5566
5715
 
5716
+ /* Section */
5717
+ /* Section Component - Layout tokens (section.padding) */
5718
+
5719
+ .muka-section {
5720
+ box-sizing: border-box;
5721
+ }
5722
+
5723
+ .muka-section--padding-compact {
5724
+ padding-block: var(--section-padding-vertical-compact);
5725
+ padding-inline: var(--section-padding-horizontal-compact);
5726
+ }
5727
+
5728
+ .muka-section--padding-default {
5729
+ padding-block: var(--section-padding-vertical-default);
5730
+ padding-inline: var(--section-padding-horizontal-default);
5731
+ }
5732
+
5733
+ .muka-section--padding-spacious {
5734
+ padding-block: var(--section-padding-vertical-spacious);
5735
+ padding-inline: var(--section-padding-horizontal-spacious);
5736
+ }
5737
+
5738
+
5567
5739
  /* SearchInput */
5568
5740
  /* SearchInput Component Styles */
5569
5741
 
@@ -5733,79 +5905,6 @@ body {
5733
5905
  }
5734
5906
 
5735
5907
 
5736
- /* Section */
5737
- /* Section Component - Layout tokens (section.padding) */
5738
-
5739
- .muka-section {
5740
- box-sizing: border-box;
5741
- }
5742
-
5743
- .muka-section--padding-compact {
5744
- padding-block: var(--section-padding-vertical-compact);
5745
- padding-inline: var(--section-padding-horizontal-compact);
5746
- }
5747
-
5748
- .muka-section--padding-default {
5749
- padding-block: var(--section-padding-vertical-default);
5750
- padding-inline: var(--section-padding-horizontal-default);
5751
- }
5752
-
5753
- .muka-section--padding-spacious {
5754
- padding-block: var(--section-padding-vertical-spacious);
5755
- padding-inline: var(--section-padding-horizontal-spacious);
5756
- }
5757
-
5758
-
5759
- /* RecordingBar */
5760
- /* RecordingBar Component Styles */
5761
-
5762
- .muka-recording-bar {
5763
- display: flex;
5764
- align-items: center;
5765
- gap: var(--spacing-3);
5766
- width: 100%;
5767
- min-width: 0;
5768
- }
5769
-
5770
- .muka-recording-bar__dot {
5771
- flex: 0 0 auto;
5772
- width: 0.625rem;
5773
- height: 0.625rem;
5774
- border-radius: var(--radius-full, 9999px);
5775
- background: var(--alert-color-error-accent, var(--color-text-default-default));
5776
- animation: muka-recording-bar-pulse 1s ease-in-out infinite;
5777
- }
5778
-
5779
- .muka-recording-bar__time {
5780
- flex: 0 0 auto;
5781
- font-size: var(--text-label-sm-fontSize, 0.75rem);
5782
- line-height: var(--text-label-sm-lineHeight, 1);
5783
- font-variant-numeric: tabular-nums;
5784
- color: var(--color-text-default-default);
5785
- }
5786
-
5787
- .muka-recording-bar__wave {
5788
- flex: 1 1 auto;
5789
- min-width: 0;
5790
- }
5791
-
5792
- @keyframes muka-recording-bar-pulse {
5793
- 0%,
5794
- 100% {
5795
- opacity: 1;
5796
- }
5797
- 50% {
5798
- opacity: 0.3;
5799
- }
5800
- }
5801
-
5802
- @media (prefers-reduced-motion: reduce) {
5803
- .muka-recording-bar__dot {
5804
- animation: none;
5805
- }
5806
- }
5807
-
5808
-
5809
5908
  /* Scrollbar */
5810
5909
  /* Scrollbar — Figma menu scrollbar (32px rail, chevrons, grip thumb) */
5811
5910
 
@@ -5933,6 +6032,56 @@ body {
5933
6032
  }
5934
6033
 
5935
6034
 
6035
+ /* RecordingBar */
6036
+ /* RecordingBar Component Styles */
6037
+
6038
+ .muka-recording-bar {
6039
+ display: flex;
6040
+ align-items: center;
6041
+ gap: var(--spacing-3);
6042
+ width: 100%;
6043
+ min-width: 0;
6044
+ }
6045
+
6046
+ .muka-recording-bar__dot {
6047
+ flex: 0 0 auto;
6048
+ width: 0.625rem;
6049
+ height: 0.625rem;
6050
+ border-radius: var(--radius-full, 9999px);
6051
+ background: var(--alert-color-error-accent, var(--color-text-default-default));
6052
+ animation: muka-recording-bar-pulse 1s ease-in-out infinite;
6053
+ }
6054
+
6055
+ .muka-recording-bar__time {
6056
+ flex: 0 0 auto;
6057
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
6058
+ line-height: var(--text-label-sm-lineHeight, 1);
6059
+ font-variant-numeric: tabular-nums;
6060
+ color: var(--color-text-default-default);
6061
+ }
6062
+
6063
+ .muka-recording-bar__wave {
6064
+ flex: 1 1 auto;
6065
+ min-width: 0;
6066
+ }
6067
+
6068
+ @keyframes muka-recording-bar-pulse {
6069
+ 0%,
6070
+ 100% {
6071
+ opacity: 1;
6072
+ }
6073
+ 50% {
6074
+ opacity: 0.3;
6075
+ }
6076
+ }
6077
+
6078
+ @media (prefers-reduced-motion: reduce) {
6079
+ .muka-recording-bar__dot {
6080
+ animation: none;
6081
+ }
6082
+ }
6083
+
6084
+
5936
6085
  /* RangeSlider */
5937
6086
  /* RangeSlider Component Styles - Using Muka Design Tokens */
5938
6087
 
@@ -6292,81 +6441,34 @@ body {
6292
6441
  }
6293
6442
 
6294
6443
 
6295
- /* PullToRefresh */
6296
- /* PullToRefresh Component Styles */
6444
+ /* Radio */
6445
+ /* Radio Component Styles - Using Muka Design Tokens */
6297
6446
 
6298
- .muka-pull-to-refresh {
6447
+ /* Wrapper - clickable label container */
6448
+ .muka-radio {
6449
+ display: inline-flex;
6450
+ align-items: center;
6451
+ gap: var(--spacing-4);
6452
+ cursor: pointer;
6453
+ user-select: none;
6454
+ }
6455
+
6456
+ .muka-radio--disabled {
6457
+ cursor: not-allowed;
6458
+ opacity: 0.6;
6459
+ }
6460
+
6461
+ /* Control container */
6462
+ .muka-radio__control {
6299
6463
  position: relative;
6300
- display: flex;
6301
- flex-direction: column;
6302
- width: 100%;
6303
- height: 100%;
6304
- overflow: hidden;
6464
+ display: inline-flex;
6465
+ align-items: center;
6466
+ justify-content: center;
6467
+ flex-shrink: 0;
6305
6468
  }
6306
6469
 
6307
- .muka-pull-to-refresh__indicator {
6308
- position: absolute;
6309
- top: 0;
6310
- left: 0;
6311
- right: 0;
6312
- display: flex;
6313
- align-items: flex-end;
6314
- justify-content: center;
6315
- padding-bottom: var(--spacing-2);
6316
- color: var(--color-text-subtle-default);
6317
- overflow: hidden;
6318
- pointer-events: none;
6319
- z-index: 1;
6320
- }
6321
-
6322
- .muka-pull-to-refresh__chevron {
6323
- display: inline-flex;
6324
- align-items: center;
6325
- justify-content: center;
6326
- transition: transform 0.16s ease;
6327
- }
6328
-
6329
- .muka-pull-to-refresh__scroller {
6330
- flex: 1 1 auto;
6331
- min-height: 0;
6332
- width: 100%;
6333
- overflow-x: clip;
6334
- overflow-y: auto;
6335
- -webkit-overflow-scrolling: touch;
6336
- overscroll-behavior-y: contain;
6337
- touch-action: pan-y;
6338
- will-change: transform;
6339
- }
6340
-
6341
-
6342
- /* Radio */
6343
- /* Radio Component Styles - Using Muka Design Tokens */
6344
-
6345
- /* Wrapper - clickable label container */
6346
- .muka-radio {
6347
- display: inline-flex;
6348
- align-items: center;
6349
- gap: var(--spacing-4);
6350
- cursor: pointer;
6351
- user-select: none;
6352
- }
6353
-
6354
- .muka-radio--disabled {
6355
- cursor: not-allowed;
6356
- opacity: 0.6;
6357
- }
6358
-
6359
- /* Control container */
6360
- .muka-radio__control {
6361
- position: relative;
6362
- display: inline-flex;
6363
- align-items: center;
6364
- justify-content: center;
6365
- flex-shrink: 0;
6366
- }
6367
-
6368
- /* Hidden native input */
6369
- .muka-radio__input {
6470
+ /* Hidden native input */
6471
+ .muka-radio__input {
6370
6472
  position: absolute;
6371
6473
  width: 1px;
6372
6474
  height: 1px;
@@ -6483,117 +6585,141 @@ body {
6483
6585
  }
6484
6586
 
6485
6587
 
6486
- /* ProgressAccordeon */
6487
- /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
6588
+ /* PullToRefresh */
6589
+ /* PullToRefresh Component Styles */
6488
6590
 
6489
- /* ─── Root ──────────────────────────────────────────────── */
6490
- .muka-progress-accordeon {
6491
- container-type: inline-size;
6591
+ .muka-pull-to-refresh {
6592
+ position: relative;
6492
6593
  display: flex;
6493
6594
  flex-direction: column;
6494
- align-items: stretch;
6495
6595
  width: 100%;
6496
- /* Top padding provides the vertical rhythm between stacked steps */
6497
- padding-top: var(--spacing-8);
6596
+ height: 100%;
6597
+ overflow: hidden;
6498
6598
  }
6499
6599
 
6500
- /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6501
- .muka-progress-accordeon--current,
6502
- .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
6503
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
6504
- gap: var(--spacing-6);
6600
+ .muka-pull-to-refresh__indicator {
6601
+ position: absolute;
6602
+ top: 0;
6603
+ left: 0;
6604
+ right: 0;
6605
+ display: flex;
6606
+ align-items: flex-end;
6607
+ justify-content: center;
6608
+ padding-bottom: var(--spacing-2);
6609
+ color: var(--color-text-subtle-default);
6610
+ overflow: hidden;
6611
+ pointer-events: none;
6612
+ z-index: 1;
6505
6613
  }
6506
6614
 
6507
- .muka-progress-accordeon--upcoming,
6508
- .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
6509
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
6510
- gap: var(--spacing-8);
6615
+ .muka-pull-to-refresh__chevron {
6616
+ display: inline-flex;
6617
+ align-items: center;
6618
+ justify-content: center;
6619
+ transition: transform 0.16s ease;
6511
6620
  }
6512
6621
 
6513
- /* Collapsible steps group header + slot. The header↔content gap lives inside the
6514
- collapsing slot (as padding-top) so it collapses with the content, so the
6515
- body gap itself is 0. */
6516
- .muka-progress-accordeon__body {
6517
- display: flex;
6518
- flex-direction: column;
6519
- gap: 0;
6622
+ .muka-pull-to-refresh__scroller {
6623
+ flex: 1 1 auto;
6624
+ min-height: 0;
6520
6625
  width: 100%;
6626
+ overflow-x: clip;
6627
+ overflow-y: auto;
6628
+ -webkit-overflow-scrolling: touch;
6629
+ overscroll-behavior-y: contain;
6630
+ touch-action: pan-y;
6631
+ will-change: transform;
6521
6632
  }
6522
6633
 
6523
- /* ─── Header ─────────────────────────────────────────────── */
6524
- .muka-progress-accordeon__header {
6525
- display: flex;
6526
- flex-direction: column;
6527
- gap: var(--spacing-3);
6634
+
6635
+ /* ProgressTracker */
6636
+ /* ProgressTracker Component Styles — Using Muka Design Tokens */
6637
+
6638
+ /* ─── Root ──────────────────────────────────────────────── */
6639
+ .muka-progress-tracker {
6528
6640
  width: 100%;
6529
6641
  }
6530
6642
 
6531
- .muka-progress-accordeon__header-row {
6532
- display: flex;
6533
- align-items: flex-start;
6534
- gap: var(--spacing-3);
6535
- width: 100%;
6536
- min-height: 40px;
6643
+ .muka-progress-tracker--horizontal {
6644
+ padding-bottom: var(--spacing-7);
6537
6645
  }
6538
6646
 
6539
- .muka-progress-accordeon__heading-group {
6540
- display: flex;
6541
- flex: 1 0 0;
6542
- min-width: 0;
6543
- align-items: flex-start;
6544
- gap: var(--spacing-4);
6647
+ /* ─── Track (layered container) ─────────────────────────── */
6648
+ .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6649
+ position: relative;
6650
+ /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6651
+ padding-top: 14px;
6652
+ padding-bottom: 14px;
6545
6653
  }
6546
6654
 
6547
- /* Steps with header controls (edit / chevron) are 40px tall; nudge the heading
6548
- so a single line centres against the indicator + controls row. */
6549
- .muka-progress-accordeon:has(.muka-progress-accordeon__controls)
6550
- .muka-progress-accordeon__heading-group {
6551
- padding-top: var(--spacing-1);
6655
+ /* ─── Steps layer (on top) — horizontal ─────────────────── */
6656
+ .muka-progress-tracker--horizontal .muka-progress-tracker__steps {
6657
+ position: absolute;
6658
+ inset: 0;
6659
+ display: flex;
6660
+ align-items: flex-start;
6661
+ justify-content: space-between;
6662
+ z-index: 2;
6552
6663
  }
6553
6664
 
6554
- .muka-progress-accordeon__controls {
6665
+ /* ─── Individual step — horizontal ──────────────────────── */
6666
+ .muka-progress-tracker--horizontal .muka-progress-tracker__step {
6555
6667
  display: flex;
6556
- flex-shrink: 0;
6668
+ flex-direction: column;
6557
6669
  align-items: center;
6558
- gap: var(--spacing-3);
6670
+ position: relative;
6671
+ /* Labels are absolutely positioned so the step stays 32px and
6672
+ circle centers line up with the connector padding. */
6673
+ width: 32px;
6674
+ flex: 0 0 32px;
6559
6675
  }
6560
6676
 
6561
6677
  /* ─── Step indicator (circle) ───────────────────────────── */
6562
- .muka-progress-accordeon__indicator {
6678
+ .muka-progress-tracker__indicator {
6563
6679
  width: 32px;
6564
6680
  height: 32px;
6565
- flex-shrink: 0;
6566
6681
  border-radius: var(--border-radius-full);
6567
6682
  display: flex;
6568
6683
  align-items: center;
6569
6684
  justify-content: center;
6685
+ flex-shrink: 0;
6686
+ position: relative;
6687
+ z-index: 1;
6570
6688
  }
6571
6689
 
6572
- /* Past: dark accent-contrast circle with inverse checkmark */
6573
- .muka-progress-accordeon__indicator--past {
6690
+ /* Past: dark accent contrast circle with white checkmark */
6691
+ .muka-progress-tracker__indicator--past {
6574
6692
  background-color: var(--alias-color-accent-contrast);
6575
6693
  color: var(--color-text-default-inverse);
6576
6694
  }
6577
6695
 
6578
- /* Current: accent circle with inverse bold number */
6579
- .muka-progress-accordeon__indicator--current {
6696
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past {
6697
+ cursor: pointer;
6698
+ }
6699
+
6700
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:hover {
6701
+ background-color: var(--alias-color-accent-pressed);
6702
+ }
6703
+
6704
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:focus-visible {
6705
+ outline: 2px solid var(--color-border-focus);
6706
+ outline-offset: 2px;
6707
+ }
6708
+
6709
+ /* Current: accent default circle with white number */
6710
+ .muka-progress-tracker__indicator--current {
6580
6711
  background-color: var(--alias-color-accent-default);
6581
6712
  color: var(--color-text-default-inverse);
6582
6713
  }
6583
6714
 
6584
- /* Upcoming: sunken/muted circle with default-color number */
6585
- .muka-progress-accordeon__indicator--upcoming {
6715
+ /* Upcoming: sunken/gray circle with dark number */
6716
+ .muka-progress-tracker__indicator--upcoming {
6586
6717
  background-color: var(--color-surface-sunken);
6587
6718
  color: var(--color-text-default-default);
6588
6719
  }
6589
6720
 
6590
- .muka-progress-accordeon__check-icon {
6591
- width: 20px;
6592
- height: 20px;
6593
- color: var(--color-text-default-inverse);
6594
- }
6595
-
6596
- .muka-progress-accordeon__number {
6721
+ /* ─── Step number text ──────────────────────────────────── */
6722
+ .muka-progress-tracker__number {
6597
6723
  font-family: var(--text-label-md-bold-fontFamily);
6598
6724
  font-weight: var(--text-label-md-bold-fontWeight);
6599
6725
  font-size: var(--text-label-md-bold-fontSize);
@@ -6602,249 +6728,28 @@ body {
6602
6728
  user-select: none;
6603
6729
  }
6604
6730
 
6605
- /* Upcoming number is semibold (not bold) per Figma */
6606
- .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
6731
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6732
+ font-family: var(--text-label-md-bold-fontFamily);
6733
+ font-weight: var(--text-label-md-bold-fontWeight);
6734
+ }
6735
+
6736
+ .muka-progress-tracker--vertical .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6607
6737
  font-family: var(--text-label-md-semibold-fontFamily);
6608
6738
  font-weight: var(--text-label-md-semibold-fontWeight);
6739
+ font-size: var(--text-label-md-semibold-fontSize);
6740
+ line-height: var(--text-label-md-semibold-lineHeight);
6609
6741
  }
6610
6742
 
6611
- /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
6612
- .muka-progress-accordeon__heading {
6613
- flex: 1 0 0;
6614
- min-width: 0;
6615
- margin: 0;
6616
- font-family: var(--text-heading-md-fontFamily);
6617
- font-weight: var(--text-heading-md-fontWeight);
6618
- font-size: var(--text-heading-md-fontSize);
6619
- line-height: var(--text-heading-md-lineHeight);
6620
- letter-spacing: var(--text-heading-md-letterSpacing);
6621
- color: var(--color-text-default-default);
6743
+ /* ─── Checkmark icon ────────────────────────────────────── */
6744
+ .muka-progress-tracker__check-icon {
6745
+ width: 20px;
6746
+ height: 20px;
6622
6747
  }
6623
6748
 
6624
- /* ─── Description ────────────────────────────────────────── */
6625
- /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
6626
- .muka-progress-accordeon__description {
6627
- width: 100%;
6628
- padding-left: 48px;
6629
- font-family: var(--text-body-base-regular-fontFamily);
6630
- font-weight: var(--text-body-base-regular-fontWeight);
6631
- font-size: var(--text-body-base-regular-fontSize);
6632
- line-height: var(--text-body-base-regular-lineHeight);
6633
- color: var(--color-text-default-default);
6634
- }
6635
-
6636
- /* ─── Edit button ────────────────────────────────────────── */
6637
- .muka-progress-accordeon__edit {
6638
- flex-shrink: 0;
6639
- }
6640
-
6641
- /* Wide container shows the labelled button; the icon-only one is hidden */
6642
- .muka-progress-accordeon__edit--narrow {
6643
- display: none;
6644
- }
6645
-
6646
- /* ─── Content slot ───────────────────────────────────────── */
6647
- .muka-progress-accordeon__slot {
6648
- display: flex;
6649
- flex-direction: column;
6650
- align-items: stretch;
6651
- width: 100%;
6652
- }
6653
-
6654
- /* ─── Collapse/expand animation (past & upcoming steps) ──────
6655
- The grid-template-rows 1fr → 0fr technique animates the content to/from its
6656
- intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
6657
- --motion-duration-view resolves to 0ms, so the toggle stays instant. */
6658
- .muka-progress-accordeon__slot-wrapper {
6659
- display: grid;
6660
- grid-template-rows: 1fr;
6661
- transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
6662
- }
6663
-
6664
- .muka-progress-accordeon__slot-wrapper--collapsed {
6665
- grid-template-rows: 0fr;
6666
- }
6667
-
6668
- /* The direct grid child clips and must have NO padding/border of its own —
6669
- min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
6670
- 0 height (padding on the item would leave a residual gap when collapsed). */
6671
- .muka-progress-accordeon__slot-clip {
6672
- overflow: hidden;
6673
- min-height: 0;
6674
- }
6675
-
6676
- /* The header↔content spacing lives on the inner slot (inside the clip region)
6677
- so it collapses together with the content. */
6678
- .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
6679
- padding-top: var(--spacing-4);
6680
- }
6681
-
6682
- /* ─── Action buttons (current state) ─────────────────────── */
6683
- .muka-progress-accordeon__actions {
6684
- display: flex;
6685
- justify-content: flex-end;
6686
- gap: var(--spacing-4);
6687
- width: 100%;
6688
- }
6689
-
6690
- .muka-progress-accordeon__action {
6691
- min-width: 160px;
6692
- }
6693
-
6694
- /* ─── Divider ────────────────────────────────────────────── */
6695
- .muka-progress-accordeon__divider {
6696
- width: 100%;
6697
- }
6698
-
6699
- /* ─── Responsive (narrow container) ──────────────────────── */
6700
- @container (max-width: 480px) {
6701
- /* Heading steps down to heading/sm. The 24px line-height is shorter than the
6702
- 32px step indicator, so nudge the text down to keep a single line centred. */
6703
- .muka-progress-accordeon__heading {
6704
- font-size: var(--text-heading-sm-fontSize);
6705
- line-height: var(--text-heading-sm-lineHeight);
6706
- padding-top: var(--spacing-1);
6707
- }
6708
-
6709
- /* Edit button swaps to the icon-only variant */
6710
- .muka-progress-accordeon__edit--wide {
6711
- display: none;
6712
- }
6713
-
6714
- .muka-progress-accordeon__edit--narrow {
6715
- display: inline-flex;
6716
- }
6717
-
6718
- /* Action buttons stretch to fill the row */
6719
- .muka-progress-accordeon__actions {
6720
- justify-content: stretch;
6721
- }
6722
-
6723
- .muka-progress-accordeon__action {
6724
- flex: 1 0 0;
6725
- min-width: 0;
6726
- }
6727
- }
6728
-
6729
-
6730
- /* ProgressTracker */
6731
- /* ProgressTracker Component Styles — Using Muka Design Tokens */
6732
-
6733
- /* ─── Root ──────────────────────────────────────────────── */
6734
- .muka-progress-tracker {
6735
- width: 100%;
6736
- }
6737
-
6738
- .muka-progress-tracker--horizontal {
6739
- padding-bottom: var(--spacing-7);
6740
- }
6741
-
6742
- /* ─── Track (layered container) ─────────────────────────── */
6743
- .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6744
- position: relative;
6745
- /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6746
- padding-top: 14px;
6747
- padding-bottom: 14px;
6748
- }
6749
-
6750
- /* ─── Steps layer (on top) — horizontal ─────────────────── */
6751
- .muka-progress-tracker--horizontal .muka-progress-tracker__steps {
6752
- position: absolute;
6753
- inset: 0;
6754
- display: flex;
6755
- align-items: flex-start;
6756
- justify-content: space-between;
6757
- z-index: 2;
6758
- }
6759
-
6760
- /* ─── Individual step — horizontal ──────────────────────── */
6761
- .muka-progress-tracker--horizontal .muka-progress-tracker__step {
6762
- display: flex;
6763
- flex-direction: column;
6764
- align-items: center;
6765
- position: relative;
6766
- /* Labels are absolutely positioned so the step stays 32px and
6767
- circle centers line up with the connector padding. */
6768
- width: 32px;
6769
- flex: 0 0 32px;
6770
- }
6771
-
6772
- /* ─── Step indicator (circle) ───────────────────────────── */
6773
- .muka-progress-tracker__indicator {
6774
- width: 32px;
6775
- height: 32px;
6776
- border-radius: var(--border-radius-full);
6777
- display: flex;
6778
- align-items: center;
6779
- justify-content: center;
6780
- flex-shrink: 0;
6781
- position: relative;
6782
- z-index: 1;
6783
- }
6784
-
6785
- /* Past: dark accent contrast circle with white checkmark */
6786
- .muka-progress-tracker__indicator--past {
6787
- background-color: var(--alias-color-accent-contrast);
6788
- color: var(--color-text-default-inverse);
6789
- }
6790
-
6791
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past {
6792
- cursor: pointer;
6793
- }
6794
-
6795
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:hover {
6796
- background-color: var(--alias-color-accent-pressed);
6797
- }
6798
-
6799
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:focus-visible {
6800
- outline: 2px solid var(--color-border-focus);
6801
- outline-offset: 2px;
6802
- }
6803
-
6804
- /* Current: accent default circle with white number */
6805
- .muka-progress-tracker__indicator--current {
6806
- background-color: var(--alias-color-accent-default);
6807
- color: var(--color-text-default-inverse);
6808
- }
6809
-
6810
- /* Upcoming: sunken/gray circle with dark number */
6811
- .muka-progress-tracker__indicator--upcoming {
6812
- background-color: var(--color-surface-sunken);
6813
- color: var(--color-text-default-default);
6814
- }
6815
-
6816
- /* ─── Step number text ──────────────────────────────────── */
6817
- .muka-progress-tracker__number {
6818
- font-family: var(--text-label-md-bold-fontFamily);
6819
- font-weight: var(--text-label-md-bold-fontWeight);
6820
- font-size: var(--text-label-md-bold-fontSize);
6821
- line-height: var(--text-label-md-bold-lineHeight);
6822
- text-align: center;
6823
- user-select: none;
6824
- }
6825
-
6826
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6827
- font-family: var(--text-label-md-bold-fontFamily);
6828
- font-weight: var(--text-label-md-bold-fontWeight);
6829
- }
6830
-
6831
- .muka-progress-tracker--vertical .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6832
- font-family: var(--text-label-md-semibold-fontFamily);
6833
- font-weight: var(--text-label-md-semibold-fontWeight);
6834
- font-size: var(--text-label-md-semibold-fontSize);
6835
- line-height: var(--text-label-md-semibold-lineHeight);
6836
- }
6837
-
6838
- /* ─── Checkmark icon ────────────────────────────────────── */
6839
- .muka-progress-tracker__check-icon {
6840
- width: 20px;
6841
- height: 20px;
6842
- }
6843
-
6844
- /* Past checkmark uses inverse foreground, matching the active step number.
6845
- Scoped under the indicator to override the Icon component's default color. */
6846
- .muka-progress-tracker__indicator--past .muka-progress-tracker__check-icon {
6847
- color: var(--color-text-default-inverse);
6749
+ /* Past checkmark uses inverse foreground, matching the active step number.
6750
+ Scoped under the indicator to override the Icon component's default color. */
6751
+ .muka-progress-tracker__indicator--past .muka-progress-tracker__check-icon {
6752
+ color: var(--color-text-default-inverse);
6848
6753
  }
6849
6754
 
6850
6755
  /* ─── Step label — horizontal ───────────────────────────── */
@@ -7144,74 +7049,247 @@ body {
7144
7049
  }
7145
7050
 
7146
7051
 
7147
- /* ProfileBadge */
7148
- /* ProfileBadge Component Styles - Using Muka Design Tokens */
7149
-
7150
- .muka-profile-badge {
7151
- display: inline-flex;
7152
- align-items: center;
7153
- font-family: var(--text-body-base-regular-fontFamily);
7154
- }
7052
+ /* ProgressAccordeon */
7053
+ /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
7155
7054
 
7156
- /* Size variants */
7157
- .muka-profile-badge--lg {
7158
- gap: var(--spacing-4); /* 16px */
7055
+ /* ─── Root ──────────────────────────────────────────────── */
7056
+ .muka-progress-accordeon {
7057
+ container-type: inline-size;
7058
+ display: flex;
7059
+ flex-direction: column;
7060
+ align-items: stretch;
7061
+ width: 100%;
7062
+ /* Top padding provides the vertical rhythm between stacked steps */
7063
+ padding-top: var(--spacing-8);
7159
7064
  }
7160
7065
 
7161
- .muka-profile-badge--md {
7162
- gap: var(--spacing-3); /* 12px */
7066
+ /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
7067
+ .muka-progress-accordeon--current,
7068
+ .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
7069
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
7070
+ gap: var(--spacing-6);
7163
7071
  }
7164
7072
 
7165
- .muka-profile-badge__avatar {
7166
- flex-shrink: 0;
7073
+ .muka-progress-accordeon--upcoming,
7074
+ .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
7075
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
7076
+ gap: var(--spacing-8);
7167
7077
  }
7168
7078
 
7169
- /* Text stack */
7170
- .muka-profile-badge__text {
7079
+ /* Collapsible steps group header + slot. The header↔content gap lives inside the
7080
+ collapsing slot (as padding-top) so it collapses with the content, so the
7081
+ body gap itself is 0. */
7082
+ .muka-progress-accordeon__body {
7171
7083
  display: flex;
7172
7084
  flex-direction: column;
7173
- align-items: flex-start;
7174
- min-width: 0;
7085
+ gap: 0;
7086
+ width: 100%;
7175
7087
  }
7176
7088
 
7177
- .muka-profile-badge__name {
7089
+ /* ─── Header ─────────────────────────────────────────────── */
7090
+ .muka-progress-accordeon__header {
7091
+ display: flex;
7092
+ flex-direction: column;
7093
+ gap: var(--spacing-3);
7094
+ width: 100%;
7095
+ }
7096
+
7097
+ .muka-progress-accordeon__header-row {
7098
+ display: flex;
7099
+ align-items: flex-start;
7100
+ gap: var(--spacing-3);
7101
+ width: 100%;
7102
+ min-height: 40px;
7103
+ }
7104
+
7105
+ .muka-progress-accordeon__heading-group {
7106
+ display: flex;
7107
+ flex: 1 0 0;
7108
+ min-width: 0;
7109
+ align-items: flex-start;
7110
+ gap: var(--spacing-4);
7111
+ }
7112
+
7113
+ /* Steps with header controls (edit / chevron) are 40px tall; nudge the heading
7114
+ so a single line centres against the indicator + controls row. */
7115
+ .muka-progress-accordeon:has(.muka-progress-accordeon__controls)
7116
+ .muka-progress-accordeon__heading-group {
7117
+ padding-top: var(--spacing-1);
7118
+ }
7119
+
7120
+ .muka-progress-accordeon__controls {
7121
+ display: flex;
7122
+ flex-shrink: 0;
7123
+ align-items: center;
7124
+ gap: var(--spacing-3);
7125
+ }
7126
+
7127
+ /* ─── Step indicator (circle) ───────────────────────────── */
7128
+ .muka-progress-accordeon__indicator {
7129
+ width: 32px;
7130
+ height: 32px;
7131
+ flex-shrink: 0;
7132
+ border-radius: var(--border-radius-full);
7133
+ display: flex;
7134
+ align-items: center;
7135
+ justify-content: center;
7136
+ }
7137
+
7138
+ /* Past: dark accent-contrast circle with inverse checkmark */
7139
+ .muka-progress-accordeon__indicator--past {
7140
+ background-color: var(--alias-color-accent-contrast);
7141
+ color: var(--color-text-default-inverse);
7142
+ }
7143
+
7144
+ /* Current: accent circle with inverse bold number */
7145
+ .muka-progress-accordeon__indicator--current {
7146
+ background-color: var(--alias-color-accent-default);
7147
+ color: var(--color-text-default-inverse);
7148
+ }
7149
+
7150
+ /* Upcoming: sunken/muted circle with default-color number */
7151
+ .muka-progress-accordeon__indicator--upcoming {
7152
+ background-color: var(--color-surface-sunken);
7153
+ color: var(--color-text-default-default);
7154
+ }
7155
+
7156
+ .muka-progress-accordeon__check-icon {
7157
+ width: 20px;
7158
+ height: 20px;
7159
+ color: var(--color-text-default-inverse);
7160
+ }
7161
+
7162
+ .muka-progress-accordeon__number {
7163
+ font-family: var(--text-label-md-bold-fontFamily);
7164
+ font-weight: var(--text-label-md-bold-fontWeight);
7165
+ font-size: var(--text-label-md-bold-fontSize);
7166
+ line-height: var(--text-label-md-bold-lineHeight);
7167
+ text-align: center;
7168
+ user-select: none;
7169
+ }
7170
+
7171
+ /* Upcoming number is semibold (not bold) per Figma */
7172
+ .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
7173
+ font-family: var(--text-label-md-semibold-fontFamily);
7174
+ font-weight: var(--text-label-md-semibold-fontWeight);
7175
+ }
7176
+
7177
+ /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
7178
+ .muka-progress-accordeon__heading {
7179
+ flex: 1 0 0;
7180
+ min-width: 0;
7181
+ margin: 0;
7182
+ font-family: var(--text-heading-md-fontFamily);
7183
+ font-weight: var(--text-heading-md-fontWeight);
7184
+ font-size: var(--text-heading-md-fontSize);
7185
+ line-height: var(--text-heading-md-lineHeight);
7186
+ letter-spacing: var(--text-heading-md-letterSpacing);
7187
+ color: var(--color-text-default-default);
7188
+ }
7189
+
7190
+ /* ─── Description ────────────────────────────────────────── */
7191
+ /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
7192
+ .muka-progress-accordeon__description {
7193
+ width: 100%;
7194
+ padding-left: 48px;
7178
7195
  font-family: var(--text-body-base-regular-fontFamily);
7179
- font-size: var(--text-body-base-regular-fontSize);
7180
7196
  font-weight: var(--text-body-base-regular-fontWeight);
7197
+ font-size: var(--text-body-base-regular-fontSize);
7181
7198
  line-height: var(--text-body-base-regular-lineHeight);
7182
7199
  color: var(--color-text-default-default);
7183
7200
  }
7184
7201
 
7185
- .muka-profile-badge__email {
7186
- font-family: var(--text-body-xs-regular-fontFamily);
7187
- font-size: var(--text-body-xs-regular-fontSize);
7188
- font-weight: var(--text-body-xs-regular-fontWeight);
7189
- line-height: var(--text-body-xs-regular-lineHeight);
7190
- color: var(--color-text-subtle-default);
7202
+ /* ─── Edit button ────────────────────────────────────────── */
7203
+ .muka-progress-accordeon__edit {
7204
+ flex-shrink: 0;
7191
7205
  }
7192
7206
 
7193
- /* Clickable state */
7194
- .muka-profile-badge--clickable {
7195
- cursor: pointer;
7196
- border: none;
7197
- background: none;
7198
- padding: 0;
7199
- text-align: left;
7200
- border-radius: var(--radius-md);
7201
- transition: opacity 0.2s ease;
7207
+ /* Wide container shows the labelled button; the icon-only one is hidden */
7208
+ .muka-progress-accordeon__edit--narrow {
7209
+ display: none;
7202
7210
  }
7203
7211
 
7204
- .muka-profile-badge--clickable:hover {
7205
- opacity: 0.9;
7212
+ /* ─── Content slot ───────────────────────────────────────── */
7213
+ .muka-progress-accordeon__slot {
7214
+ display: flex;
7215
+ flex-direction: column;
7216
+ align-items: stretch;
7217
+ width: 100%;
7206
7218
  }
7207
7219
 
7208
- .muka-profile-badge--clickable:active {
7209
- opacity: 0.8;
7220
+ /* ─── Collapse/expand animation (past & upcoming steps) ──────
7221
+ The grid-template-rows 1fr → 0fr technique animates the content to/from its
7222
+ intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
7223
+ --motion-duration-view resolves to 0ms, so the toggle stays instant. */
7224
+ .muka-progress-accordeon__slot-wrapper {
7225
+ display: grid;
7226
+ grid-template-rows: 1fr;
7227
+ transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
7210
7228
  }
7211
7229
 
7212
- .muka-profile-badge--clickable:focus-visible {
7213
- outline: 2px solid var(--color-border-focus);
7214
- outline-offset: 2px;
7230
+ .muka-progress-accordeon__slot-wrapper--collapsed {
7231
+ grid-template-rows: 0fr;
7232
+ }
7233
+
7234
+ /* The direct grid child clips and must have NO padding/border of its own —
7235
+ min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
7236
+ 0 height (padding on the item would leave a residual gap when collapsed). */
7237
+ .muka-progress-accordeon__slot-clip {
7238
+ overflow: hidden;
7239
+ min-height: 0;
7240
+ }
7241
+
7242
+ /* The header↔content spacing lives on the inner slot (inside the clip region)
7243
+ so it collapses together with the content. */
7244
+ .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
7245
+ padding-top: var(--spacing-4);
7246
+ }
7247
+
7248
+ /* ─── Action buttons (current state) ─────────────────────── */
7249
+ .muka-progress-accordeon__actions {
7250
+ display: flex;
7251
+ justify-content: flex-end;
7252
+ gap: var(--spacing-4);
7253
+ width: 100%;
7254
+ }
7255
+
7256
+ .muka-progress-accordeon__action {
7257
+ min-width: 160px;
7258
+ }
7259
+
7260
+ /* ─── Divider ────────────────────────────────────────────── */
7261
+ .muka-progress-accordeon__divider {
7262
+ width: 100%;
7263
+ }
7264
+
7265
+ /* ─── Responsive (narrow container) ──────────────────────── */
7266
+ @container (max-width: 480px) {
7267
+ /* Heading steps down to heading/sm. The 24px line-height is shorter than the
7268
+ 32px step indicator, so nudge the text down to keep a single line centred. */
7269
+ .muka-progress-accordeon__heading {
7270
+ font-size: var(--text-heading-sm-fontSize);
7271
+ line-height: var(--text-heading-sm-lineHeight);
7272
+ padding-top: var(--spacing-1);
7273
+ }
7274
+
7275
+ /* Edit button swaps to the icon-only variant */
7276
+ .muka-progress-accordeon__edit--wide {
7277
+ display: none;
7278
+ }
7279
+
7280
+ .muka-progress-accordeon__edit--narrow {
7281
+ display: inline-flex;
7282
+ }
7283
+
7284
+ /* Action buttons stretch to fill the row */
7285
+ .muka-progress-accordeon__actions {
7286
+ justify-content: stretch;
7287
+ }
7288
+
7289
+ .muka-progress-accordeon__action {
7290
+ flex: 1 0 0;
7291
+ min-width: 0;
7292
+ }
7215
7293
  }
7216
7294
 
7217
7295
 
@@ -7387,46 +7465,117 @@ body {
7387
7465
  }
7388
7466
 
7389
7467
 
7390
- /* Popover */
7391
- /* Popover Component Styles */
7468
+ /* ProfileBadge */
7469
+ /* ProfileBadge Component Styles - Using Muka Design Tokens */
7392
7470
 
7393
- .muka-popover__content {
7394
- background-color: var(--color-surface-level3);
7395
- border: var(--border-width-regular) solid var(--color-border-default);
7396
- border-radius: var(--radius-md);
7397
- padding: var(--spacing-4);
7398
- box-shadow: var(--shadow-level3);
7399
- max-width: 20rem;
7400
- z-index: 50;
7401
- animation: muka-popover-fade-in 150ms ease;
7471
+ .muka-profile-badge {
7472
+ display: inline-flex;
7473
+ align-items: center;
7474
+ font-family: var(--text-body-base-regular-fontFamily);
7402
7475
  }
7403
7476
 
7404
- @keyframes muka-popover-fade-in {
7405
- from {
7406
- opacity: 0;
7407
- transform: scale(0.96);
7408
- }
7409
- to {
7410
- opacity: 1;
7411
- transform: scale(1);
7412
- }
7477
+ /* Size variants */
7478
+ .muka-profile-badge--lg {
7479
+ gap: var(--spacing-4); /* 16px */
7413
7480
  }
7414
7481
 
7415
- /* Arrow */
7416
- .muka-popover__arrow {
7417
- fill: var(--color-surface-level3);
7482
+ .muka-profile-badge--md {
7483
+ gap: var(--spacing-3); /* 12px */
7418
7484
  }
7419
7485
 
7420
-
7421
- /* PriceTag */
7422
- /* PriceTag Component Styles - Using Muka Design Tokens */
7423
-
7424
- .muka-price-tag {
7425
- display: flex;
7486
+ .muka-profile-badge__avatar {
7426
7487
  flex-shrink: 0;
7427
7488
  }
7428
7489
 
7429
- /* Medium: stacked layout (price on top, unit below) */
7490
+ /* Text stack */
7491
+ .muka-profile-badge__text {
7492
+ display: flex;
7493
+ flex-direction: column;
7494
+ align-items: flex-start;
7495
+ min-width: 0;
7496
+ }
7497
+
7498
+ .muka-profile-badge__name {
7499
+ font-family: var(--text-body-base-regular-fontFamily);
7500
+ font-size: var(--text-body-base-regular-fontSize);
7501
+ font-weight: var(--text-body-base-regular-fontWeight);
7502
+ line-height: var(--text-body-base-regular-lineHeight);
7503
+ color: var(--color-text-default-default);
7504
+ }
7505
+
7506
+ .muka-profile-badge__email {
7507
+ font-family: var(--text-body-xs-regular-fontFamily);
7508
+ font-size: var(--text-body-xs-regular-fontSize);
7509
+ font-weight: var(--text-body-xs-regular-fontWeight);
7510
+ line-height: var(--text-body-xs-regular-lineHeight);
7511
+ color: var(--color-text-subtle-default);
7512
+ }
7513
+
7514
+ /* Clickable state */
7515
+ .muka-profile-badge--clickable {
7516
+ cursor: pointer;
7517
+ border: none;
7518
+ background: none;
7519
+ padding: 0;
7520
+ text-align: left;
7521
+ border-radius: var(--radius-md);
7522
+ transition: opacity 0.2s ease;
7523
+ }
7524
+
7525
+ .muka-profile-badge--clickable:hover {
7526
+ opacity: 0.9;
7527
+ }
7528
+
7529
+ .muka-profile-badge--clickable:active {
7530
+ opacity: 0.8;
7531
+ }
7532
+
7533
+ .muka-profile-badge--clickable:focus-visible {
7534
+ outline: 2px solid var(--color-border-focus);
7535
+ outline-offset: 2px;
7536
+ }
7537
+
7538
+
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
+ /* PriceTag */
7571
+ /* PriceTag Component Styles - Using Muka Design Tokens */
7572
+
7573
+ .muka-price-tag {
7574
+ display: flex;
7575
+ flex-shrink: 0;
7576
+ }
7577
+
7578
+ /* Medium: stacked layout (price on top, unit below) */
7430
7579
  .muka-price-tag--md {
7431
7580
  flex-direction: column;
7432
7581
  align-items: flex-end;
@@ -7515,6 +7664,103 @@ body {
7515
7664
  }
7516
7665
 
7517
7666
 
7667
+ /* PieChart */
7668
+ /* PieChart Component Styles - Using Muka Design Tokens */
7669
+
7670
+ .muka-piechart {
7671
+ display: inline-flex;
7672
+ align-items: center;
7673
+ gap: var(--spacing-4);
7674
+ }
7675
+
7676
+ /* Legend layout */
7677
+ .muka-piechart--legend-right {
7678
+ flex-direction: row;
7679
+ }
7680
+
7681
+ .muka-piechart--legend-bottom {
7682
+ flex-direction: column;
7683
+ }
7684
+
7685
+ /* ========================================
7686
+ CHART
7687
+ ======================================== */
7688
+
7689
+ .muka-piechart__chart {
7690
+ position: relative;
7691
+ flex-shrink: 0;
7692
+ }
7693
+
7694
+ .muka-piechart__chart--sm {
7695
+ width: var(--piechart-size-diameter-sm);
7696
+ height: var(--piechart-size-diameter-sm);
7697
+ }
7698
+
7699
+ .muka-piechart__chart--md {
7700
+ width: var(--piechart-size-diameter-md);
7701
+ height: var(--piechart-size-diameter-md);
7702
+ }
7703
+
7704
+ .muka-piechart__chart--lg {
7705
+ width: var(--piechart-size-diameter-lg);
7706
+ height: var(--piechart-size-diameter-lg);
7707
+ }
7708
+
7709
+ .muka-piechart__svg {
7710
+ display: block;
7711
+ width: 100%;
7712
+ height: 100%;
7713
+ /* Start slices at 12 o'clock instead of 3 o'clock */
7714
+ transform: rotate(-90deg);
7715
+ }
7716
+
7717
+ .muka-piechart__track {
7718
+ fill: none;
7719
+ stroke: var(--piechart-color-track);
7720
+ }
7721
+
7722
+ .muka-piechart__segment {
7723
+ fill: none;
7724
+ }
7725
+
7726
+ /* ========================================
7727
+ LEGEND
7728
+ ======================================== */
7729
+
7730
+ .muka-piechart__legend {
7731
+ list-style: none;
7732
+ margin: 0;
7733
+ padding: 0;
7734
+ display: flex;
7735
+ flex-direction: column;
7736
+ gap: var(--spacing-1);
7737
+ }
7738
+
7739
+ .muka-piechart__legend-item {
7740
+ display: flex;
7741
+ align-items: center;
7742
+ gap: var(--spacing-2);
7743
+ font-family: var(--text-body-sm-regular-fontFamily);
7744
+ font-weight: var(--text-body-sm-regular-fontWeight);
7745
+ font-size: var(--text-body-sm-regular-fontSize);
7746
+ line-height: var(--text-body-sm-regular-lineHeight);
7747
+ color: var(--color-text-default-default);
7748
+ }
7749
+
7750
+ .muka-piechart__swatch {
7751
+ flex-shrink: 0;
7752
+ width: var(--spacing-3);
7753
+ height: var(--spacing-3);
7754
+ border-radius: var(--border-radius-sm);
7755
+ }
7756
+
7757
+ .muka-piechart__legend-value {
7758
+ margin-left: auto;
7759
+ padding-left: var(--spacing-2);
7760
+ color: var(--color-text-subtle-default);
7761
+ }
7762
+
7763
+
7518
7764
  /* PhotoUploader */
7519
7765
  /* PhotoUploader Component Styles - Using Muka Design Tokens */
7520
7766
 
@@ -7643,158 +7889,61 @@ body {
7643
7889
  }
7644
7890
 
7645
7891
 
7646
- /* PieChart */
7647
- /* PieChart Component Styles - Using Muka Design Tokens */
7892
+ /* PhotoDraftStrip */
7893
+ /* PhotoDraftStrip Component Styles */
7648
7894
 
7649
- .muka-piechart {
7650
- display: inline-flex;
7895
+ .muka-photo-draft-strip {
7896
+ display: flex;
7651
7897
  align-items: center;
7652
- gap: var(--spacing-4);
7898
+ gap: var(--spacing-3);
7899
+ width: 100%;
7900
+ padding: var(--spacing-2) 0;
7653
7901
  }
7654
7902
 
7655
- /* Legend layout */
7656
- .muka-piechart--legend-right {
7657
- flex-direction: row;
7903
+ .muka-photo-draft-strip__track {
7904
+ display: flex;
7905
+ gap: var(--spacing-2);
7906
+ flex: 1 1 auto;
7907
+ min-width: 0;
7908
+ overflow-x: auto;
7909
+ scroll-behavior: smooth;
7910
+ scrollbar-width: none;
7658
7911
  }
7659
7912
 
7660
- .muka-piechart--legend-bottom {
7661
- flex-direction: column;
7913
+ .muka-photo-draft-strip__track::-webkit-scrollbar {
7914
+ display: none;
7662
7915
  }
7663
7916
 
7664
- /* ========================================
7665
- CHART
7666
- ======================================== */
7667
-
7668
- .muka-piechart__chart {
7669
- position: relative;
7670
- flex-shrink: 0;
7917
+ .muka-photo-draft-strip__item {
7918
+ flex: 0 0 auto;
7671
7919
  }
7672
7920
 
7673
- .muka-piechart__chart--sm {
7674
- width: var(--piechart-size-diameter-sm);
7675
- height: var(--piechart-size-diameter-sm);
7676
- }
7677
7921
 
7678
- .muka-piechart__chart--md {
7679
- width: var(--piechart-size-diameter-md);
7680
- height: var(--piechart-size-diameter-md);
7922
+ /* Pagination */
7923
+ /* Pagination Component Styles */
7924
+
7925
+ .muka-pagination__list {
7926
+ display: flex;
7927
+ align-items: center;
7928
+ gap: var(--spacing-1);
7929
+ list-style: none;
7930
+ margin: 0;
7931
+ padding: 0;
7681
7932
  }
7682
7933
 
7683
- .muka-piechart__chart--lg {
7684
- width: var(--piechart-size-diameter-lg);
7685
- height: var(--piechart-size-diameter-lg);
7686
- }
7687
-
7688
- .muka-piechart__svg {
7689
- display: block;
7690
- width: 100%;
7691
- height: 100%;
7692
- /* Start slices at 12 o'clock instead of 3 o'clock */
7693
- transform: rotate(-90deg);
7694
- }
7695
-
7696
- .muka-piechart__track {
7697
- fill: none;
7698
- stroke: var(--piechart-color-track);
7699
- }
7700
-
7701
- .muka-piechart__segment {
7702
- fill: none;
7703
- }
7704
-
7705
- /* ========================================
7706
- LEGEND
7707
- ======================================== */
7708
-
7709
- .muka-piechart__legend {
7710
- list-style: none;
7711
- margin: 0;
7712
- padding: 0;
7713
- display: flex;
7714
- flex-direction: column;
7715
- gap: var(--spacing-1);
7716
- }
7717
-
7718
- .muka-piechart__legend-item {
7719
- display: flex;
7720
- align-items: center;
7721
- gap: var(--spacing-2);
7722
- font-family: var(--text-body-sm-regular-fontFamily);
7723
- font-weight: var(--text-body-sm-regular-fontWeight);
7724
- font-size: var(--text-body-sm-regular-fontSize);
7725
- line-height: var(--text-body-sm-regular-lineHeight);
7726
- color: var(--color-text-default-default);
7727
- }
7728
-
7729
- .muka-piechart__swatch {
7730
- flex-shrink: 0;
7731
- width: var(--spacing-3);
7732
- height: var(--spacing-3);
7733
- border-radius: var(--border-radius-sm);
7734
- }
7735
-
7736
- .muka-piechart__legend-value {
7737
- margin-left: auto;
7738
- padding-left: var(--spacing-2);
7739
- color: var(--color-text-subtle-default);
7740
- }
7741
-
7742
-
7743
- /* PhotoDraftStrip */
7744
- /* PhotoDraftStrip Component Styles */
7745
-
7746
- .muka-photo-draft-strip {
7747
- display: flex;
7748
- align-items: center;
7749
- gap: var(--spacing-3);
7750
- width: 100%;
7751
- padding: var(--spacing-2) 0;
7752
- }
7753
-
7754
- .muka-photo-draft-strip__track {
7755
- display: flex;
7756
- gap: var(--spacing-2);
7757
- flex: 1 1 auto;
7758
- min-width: 0;
7759
- overflow-x: auto;
7760
- scroll-behavior: smooth;
7761
- scrollbar-width: none;
7762
- }
7763
-
7764
- .muka-photo-draft-strip__track::-webkit-scrollbar {
7765
- display: none;
7766
- }
7767
-
7768
- .muka-photo-draft-strip__item {
7769
- flex: 0 0 auto;
7770
- }
7771
-
7772
-
7773
- /* Pagination */
7774
- /* Pagination Component Styles */
7775
-
7776
- .muka-pagination__list {
7777
- display: flex;
7778
- align-items: center;
7779
- gap: var(--spacing-1);
7780
- list-style: none;
7781
- margin: 0;
7782
- padding: 0;
7783
- }
7784
-
7785
- /* Base button */
7786
- .muka-pagination__button {
7787
- display: inline-flex;
7788
- align-items: center;
7789
- justify-content: center;
7790
- border: var(--border-width-regular) solid transparent;
7791
- border-radius: var(--radius-md);
7792
- background: transparent;
7793
- color: var(--color-text-default-default);
7794
- cursor: pointer;
7795
- font: inherit;
7796
- transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
7797
- padding: 0;
7934
+ /* Base button */
7935
+ .muka-pagination__button {
7936
+ display: inline-flex;
7937
+ align-items: center;
7938
+ justify-content: center;
7939
+ border: var(--border-width-regular) solid transparent;
7940
+ border-radius: var(--radius-md);
7941
+ background: transparent;
7942
+ color: var(--color-text-default-default);
7943
+ cursor: pointer;
7944
+ font: inherit;
7945
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
7946
+ padding: 0;
7798
7947
  }
7799
7948
 
7800
7949
  .muka-pagination__button:hover:not(:disabled):not(.muka-pagination__button--active) {
@@ -7930,869 +8079,869 @@ body {
7930
8079
  .muka-nav-transition__view--top { z-index: 2; }
7931
8080
 
7932
8081
 
7933
- /* Menu */
7934
- /* Menu Component Styles */
7935
-
7936
- /* ─── Content Container ──────────────────────────────────────────────────── */
8082
+ /* ListItem */
8083
+ /* ListItem Component Styles - Using Muka Design Tokens */
7937
8084
 
7938
- .muka-menu__content {
8085
+ /* Base list item styles */
8086
+ .muka-listitem {
8087
+ /* Layout */
7939
8088
  display: flex;
7940
- flex-direction: column;
7941
- min-width: var(--menu-content-min-width);
7942
- max-height: var(--menu-content-max-height);
7943
- overflow: hidden;
7944
- background-color: var(--menu-content-color-background);
7945
- border: var(--menu-content-border-width) solid var(--menu-content-color-border);
7946
- border-radius: var(--menu-content-border-radius);
7947
- box-shadow: var(--menu-content-shadow);
7948
- padding: 0;
7949
- z-index: 50;
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;
8105
+ }
7950
8106
 
7951
- /* Animation */
7952
- animation-duration: 150ms;
7953
- animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
8107
+ /* Interactive state */
8108
+ .muka-listitem--interactive {
8109
+ cursor: pointer;
7954
8110
  }
7955
8111
 
7956
- .muka-menu__body {
7957
- display: flex;
7958
- flex: 1 1 auto;
7959
- min-height: 0;
7960
- align-items: stretch;
7961
- width: 100%;
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);
7962
8120
  }
7963
8121
 
7964
- .muka-menu__viewport {
7965
- flex: 1 1 auto;
7966
- min-width: 0;
7967
- min-height: 0;
7968
- overflow-y: auto;
7969
- padding: var(--menu-content-padding);
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);
7970
8125
  }
7971
8126
 
7972
- .muka-menu__content--scrollbar .muka-menu__viewport {
7973
- /* Custom scrollbar owns the chrome; hide native track */
7974
- scrollbar-width: none;
8127
+ /* Focus styles for accessibility */
8128
+ .muka-listitem:focus-visible {
8129
+ outline: 2px solid var(--color-border-focus);
8130
+ outline-offset: -2px;
7975
8131
  }
7976
8132
 
7977
- .muka-menu__content--scrollbar .muka-menu__viewport::-webkit-scrollbar {
7978
- display: none;
8133
+ /* Disabled state */
8134
+ .muka-listitem--disabled {
8135
+ opacity: 0.5;
8136
+ cursor: not-allowed;
8137
+ pointer-events: none;
7979
8138
  }
7980
8139
 
7981
- /* ─── Search header ──────────────────────────────────────────────────────── */
8140
+ .muka-listitem--disabled:hover {
8141
+ background-color: var(--color-surface-level3);
8142
+ }
7982
8143
 
7983
- .muka-menu__search {
7984
- display: flex;
7985
- align-items: center;
7986
- flex-shrink: 0;
7987
- /* Figma dropdown filter header: 48px, 8px inset, 32px icon slots. */
7988
- height: var(--input-field-height-lg, 3rem);
7989
- padding: 0 var(--spacing-2);
7990
- border-bottom: var(--border-width-regular) solid var(--color-border-default);
8144
+ /* Selected state */
8145
+ .muka-listitem--selected {
8146
+ background-color: var(--color-surface-level2);
7991
8147
  }
7992
8148
 
7993
- .muka-menu__search--sm {
7994
- height: calc(var(--size-xl, 1.5rem) + var(--spacing-2) * 2);
8149
+ .muka-listitem--selected:hover {
8150
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
7995
8151
  }
7996
8152
 
7997
- .muka-menu__search-icon,
7998
- .muka-menu__search-clear {
8153
+ /* No divider modifier */
8154
+ .muka-listitem--no-divider .muka-listitem__divider {
8155
+ display: none;
8156
+ }
8157
+
8158
+ /* Center content vertically when no caption */
8159
+ .muka-listitem--no-caption {
8160
+ align-items: center;
8161
+ }
8162
+
8163
+ /* Leading content (icon or image) */
8164
+ .muka-listitem__leading {
7999
8165
  display: flex;
8000
8166
  align-items: center;
8001
8167
  justify-content: center;
8002
8168
  flex-shrink: 0;
8003
- width: var(--size-2xl, 2rem);
8004
- height: var(--size-2xl, 2rem);
8005
- color: var(--color-text-subtle-default);
8169
+ width: 48px;
8170
+ height: 48px;
8006
8171
  }
8007
8172
 
8008
- .muka-menu__search-icon .muka-icon,
8009
- .muka-menu__search-clear .muka-icon,
8010
- .muka-menu__search-clear:hover,
8011
- .muka-menu__search-clear:hover .muka-icon {
8012
- color: var(--color-text-subtle-default);
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);
8013
8180
  }
8014
8181
 
8015
- .muka-menu__search--sm .muka-menu__search-icon,
8016
- .muka-menu__search--sm .muka-menu__search-clear {
8017
- width: var(--size-xl, 1.5rem);
8018
- height: var(--size-xl, 1.5rem);
8182
+ .muka-listitem__image {
8183
+ width: 48px;
8184
+ height: 48px;
8185
+ border-radius: var(--radius-md);
8186
+ object-fit: cover;
8019
8187
  }
8020
8188
 
8021
- .muka-menu__search-input {
8022
- flex: 1 1 auto;
8023
- min-width: 0;
8024
- border: none;
8025
- outline: none;
8026
- background: transparent;
8027
- padding: 0 var(--spacing-1);
8028
- font-family: var(--text-input-md-fontFamily);
8029
- font-size: var(--text-input-md-fontSize);
8030
- font-weight: var(--text-input-md-fontWeight);
8031
- line-height: var(--text-input-md-lineHeight);
8032
- color: var(--color-text-default-default);
8189
+ /* Main content area */
8190
+ .muka-listitem__content {
8191
+ flex: 1;
8192
+ display: flex;
8193
+ align-items: center;
8194
+ gap: var(--spacing-4);
8195
+ min-width: 0;
8033
8196
  }
8034
8197
 
8035
- .muka-menu__search--sm .muka-menu__search-input {
8036
- font-family: var(--text-input-sm-fontFamily);
8037
- font-size: var(--text-input-sm-fontSize);
8038
- font-weight: var(--text-input-sm-fontWeight);
8039
- line-height: var(--text-input-sm-lineHeight);
8198
+ .muka-listitem__text {
8199
+ flex: 1;
8200
+ display: flex;
8201
+ flex-direction: column;
8202
+ gap: var(--spacing-1);
8203
+ min-width: 0;
8040
8204
  }
8041
8205
 
8042
- .muka-menu__search-input::placeholder {
8043
- color: var(--color-text-subtle-default);
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;
8044
8222
  }
8045
8223
 
8046
- .muka-menu__search-input::-webkit-search-cancel-button,
8047
- .muka-menu__search-input::-webkit-search-decoration {
8048
- -webkit-appearance: none;
8049
- appearance: none;
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;
8050
8240
  }
8051
8241
 
8052
- .muka-menu__empty {
8053
- display: flex;
8242
+ /* Trailing chevron */
8243
+ .muka-listitem__chevron {
8244
+ display: inline-flex;
8054
8245
  align-items: center;
8055
- min-height: var(--menu-item-height);
8056
- padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
8246
+ justify-content: center;
8247
+ flex-shrink: 0;
8248
+ width: 24px;
8249
+ height: 24px;
8057
8250
  color: var(--color-text-subtle-default);
8058
- font-family: var(--text-input-md-fontFamily);
8059
- font-size: var(--text-input-md-fontSize);
8060
- font-weight: var(--text-input-md-fontWeight);
8061
- line-height: var(--text-input-md-lineHeight);
8062
- pointer-events: none;
8063
- user-select: none;
8064
8251
  }
8065
8252
 
8066
- .muka-menu__search-clear {
8067
- padding: 0;
8068
- border: none;
8069
- background: transparent;
8070
- cursor: pointer;
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);
8071
8261
  }
8072
8262
 
8073
- .muka-menu__match {
8074
- font-weight: var(--text-label-md-bold-fontWeight);
8263
+ /* Button and anchor specific styles */
8264
+ button.muka-listitem,
8265
+ a.muka-listitem {
8266
+ text-align: left;
8267
+ width: 100%;
8075
8268
  }
8076
8269
 
8077
- .muka-menu__content--scrollbar {
8078
- height: var(--menu-content-scroll-height, 20.625rem);
8079
- max-height: var(--menu-content-scroll-height, 20.625rem);
8270
+ /* List item specific styles */
8271
+ li.muka-listitem {
8272
+ list-style: none;
8080
8273
  }
8081
8274
 
8082
- .muka-menu__content[data-state='open'] {
8083
- animation-name: muka-menu-fade-in;
8084
- }
8085
8275
 
8086
- .muka-menu__content[data-state='closed'] {
8087
- animation-name: muka-menu-fade-out;
8088
- }
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
+ */
8089
8287
 
8090
- .muka-menu__content[data-side='top'] {
8091
- animation-name: muka-menu-slide-down;
8092
- }
8288
+ .muka-license-plate-input {
8289
+ --plate-yellow: #f0ce3d;
8290
+ --plate-blue: #003399;
8291
+ --plate-text: #1a1a1a;
8292
+ --plate-stars: #ffcc00;
8093
8293
 
8094
- .muka-menu__content[data-side='bottom'] {
8095
- animation-name: muka-menu-slide-up;
8294
+ display: inline-flex;
8295
+ flex-direction: column;
8296
+ gap: var(--spacing-2);
8096
8297
  }
8097
8298
 
8098
- .muka-menu__content[data-side='left'] {
8099
- animation-name: muka-menu-slide-right;
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;
8100
8315
  }
8101
8316
 
8102
- .muka-menu__content[data-side='right'] {
8103
- animation-name: muka-menu-slide-left;
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);
8104
8322
  }
8105
8323
 
8106
- /* ─── Menu Item ──────────────────────────────────────────────────────────── */
8324
+ .muka-license-plate-input__plate--md {
8325
+ height: 60px;
8326
+ min-width: 300px;
8327
+ border-radius: var(--input-field-radius-md);
8328
+ }
8107
8329
 
8108
- .muka-menu__item {
8109
- position: relative;
8110
- display: flex;
8111
- align-items: center;
8112
- gap: var(--menu-item-gap);
8113
- min-height: var(--menu-item-height);
8114
- /* Right gutter always reserved for floating trailers (enter / check). */
8115
- padding: var(--menu-item-padding-y) var(--menu-item-padding-right) var(--menu-item-padding-y)
8116
- var(--menu-item-padding-x);
8117
- border-radius: var(--menu-item-border-radius);
8118
- cursor: pointer;
8119
- user-select: none;
8120
- outline: none;
8121
- font-family: var(--text-label-md-regular-fontFamily);
8122
- font-size: var(--text-label-md-regular-fontSize);
8123
- font-weight: var(--text-label-md-regular-fontWeight);
8124
- line-height: var(--text-label-md-regular-lineHeight);
8125
- color: var(--menu-item-color-default-foreground);
8126
- background-color: var(--menu-item-color-default-background);
8127
- transition: background-color 100ms ease, color 100ms ease;
8128
- white-space: nowrap;
8330
+ .muka-license-plate-input__plate--lg {
8331
+ height: 80px;
8332
+ min-width: 400px;
8333
+ border-radius: var(--input-field-radius-lg);
8129
8334
  }
8130
8335
 
8131
- .muka-menu__item:hover,
8132
- .muka-menu__item[data-highlighted] {
8133
- background-color: var(--menu-item-color-hover-background);
8134
- color: var(--menu-item-color-hover-foreground);
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);
8135
8339
  }
8136
8340
 
8137
- .muka-menu__item:focus,
8138
- .muka-menu__item[data-highlighted]:focus {
8139
- background-color: var(--menu-item-color-focus-background);
8140
- color: var(--menu-item-color-focus-foreground);
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);
8141
8344
  }
8142
8345
 
8143
8346
  /* Disabled */
8144
- .muka-menu__item--disabled,
8145
- .muka-menu__item[data-disabled] {
8146
- color: var(--menu-item-color-disabled-foreground);
8147
- background-color: var(--menu-item-color-disabled-background);
8347
+ .muka-license-plate-input__plate--disabled {
8148
8348
  cursor: not-allowed;
8149
- pointer-events: none;
8150
- }
8151
-
8152
- .muka-menu__item--disabled .muka-menu__item-icon,
8153
- .muka-menu__item[data-disabled] .muka-menu__item-icon {
8154
- color: var(--menu-item-color-disabled-icon);
8349
+ opacity: 0.55;
8155
8350
  }
8156
8351
 
8157
- /* Destructive */
8158
- .muka-menu__item--destructive {
8159
- color: var(--menu-item-color-destructive-default-foreground);
8352
+ /* EU strip */
8353
+ .muka-license-plate-input__eu-strip {
8354
+ display: inline-flex;
8355
+ flex-direction: column;
8356
+ 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;
8160
8366
  }
8161
8367
 
8162
- .muka-menu__item--destructive .muka-menu__item-icon {
8163
- color: var(--menu-item-color-destructive-default-icon);
8368
+ .muka-license-plate-input__eu-stars {
8369
+ width: 60%;
8370
+ max-width: 28px;
8371
+ aspect-ratio: 1 / 1;
8372
+ display: block;
8164
8373
  }
8165
8374
 
8166
- .muka-menu__item--destructive:hover,
8167
- .muka-menu__item--destructive[data-highlighted] {
8168
- background-color: var(--menu-item-color-destructive-hover-background);
8169
- color: var(--menu-item-color-destructive-hover-foreground);
8375
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__eu-stars {
8376
+ max-width: 20px;
8170
8377
  }
8171
8378
 
8172
- .muka-menu__item--destructive:hover .muka-menu__item-icon,
8173
- .muka-menu__item--destructive[data-highlighted] .muka-menu__item-icon {
8174
- color: var(--menu-item-color-destructive-hover-icon);
8379
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__eu-stars {
8380
+ max-width: 36px;
8175
8381
  }
8176
8382
 
8177
- /* ─── Item Parts ─────────────────────────────────────────────────────────── */
8178
-
8179
- .muka-menu__item-icon {
8180
- display: flex;
8181
- align-items: center;
8182
- justify-content: center;
8183
- flex-shrink: 0;
8184
- color: var(--menu-item-color-default-icon);
8185
- transition: color 100ms ease;
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;
8186
8390
  }
8187
8391
 
8188
- .muka-menu__item:hover .muka-menu__item-icon,
8189
- .muka-menu__item[data-highlighted] .muka-menu__item-icon {
8190
- color: var(--menu-item-color-hover-icon);
8392
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__country-code {
8393
+ font-size: 10px;
8191
8394
  }
8192
8395
 
8193
- .muka-menu__item-label {
8194
- flex: 1 1 auto;
8195
- min-width: 0;
8196
- white-space: nowrap;
8396
+ .muka-license-plate-input__plate--md .muka-license-plate-input__country-code {
8397
+ font-size: 13px;
8197
8398
  }
8198
8399
 
8199
- /* Shortcut trailers replace icons and sit with an 8px right inset. */
8200
- .muka-menu__item--has-shortcut {
8201
- padding-right: var(--spacing-2);
8400
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__country-code {
8401
+ font-size: 16px;
8202
8402
  }
8203
8403
 
8204
- .muka-menu__item-shortcut {
8205
- flex-shrink: 0;
8206
- margin-left: auto;
8207
- padding-left: var(--menu-item-gap);
8208
- font-family: var(--text-label-sm-regular-fontFamily);
8209
- font-size: var(--text-label-sm-regular-fontSize);
8210
- font-weight: var(--text-label-sm-regular-fontWeight);
8211
- line-height: var(--text-label-sm-regular-lineHeight);
8212
- color: var(--color-text-muted-default);
8213
- white-space: nowrap;
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);
8214
8423
  }
8215
8424
 
8216
- .muka-menu__item-hint {
8217
- /* Figma: trailer sits with 8px margin top / right / bottom; 24px glyph centered inside. */
8218
- position: absolute;
8219
- top: var(--spacing-2);
8220
- right: var(--spacing-2);
8221
- bottom: var(--spacing-2);
8222
- display: none;
8223
- align-items: center;
8224
- justify-content: center;
8225
- width: var(--icon-size-default, 1.5rem);
8226
- color: var(--color-text-muted-default);
8227
- pointer-events: none;
8425
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__native {
8426
+ font-size: 22px;
8228
8427
  }
8229
8428
 
8230
- .muka-menu__item--hint-enter[data-highlighted] .muka-menu__item-hint {
8231
- display: flex;
8429
+ .muka-license-plate-input__plate--md .muka-license-plate-input__native {
8430
+ font-size: 30px;
8232
8431
  }
8233
8432
 
8234
- .muka-menu__item-chevron {
8235
- position: absolute;
8236
- top: var(--spacing-2);
8237
- right: var(--spacing-2);
8238
- bottom: var(--spacing-2);
8239
- display: flex;
8240
- align-items: center;
8241
- justify-content: center;
8242
- width: var(--icon-size-default, 1.5rem);
8243
- color: var(--menu-shortcut-color);
8433
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__native {
8434
+ font-size: 42px;
8244
8435
  }
8245
8436
 
8246
- /* ─── Indicator (Checkbox/Radio) ─────────────────────────────────────────── */
8247
-
8248
- .muka-menu__item-indicator {
8249
- display: flex;
8250
- align-items: center;
8251
- justify-content: center;
8252
- width: var(--menu-checkbox-indicator-size);
8253
- height: var(--menu-checkbox-indicator-size);
8254
- flex-shrink: 0;
8255
- color: var(--menu-checkbox-indicator-color);
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;
8256
8442
  }
8257
8443
 
8258
- .muka-menu__item--checkbox,
8259
- .muka-menu__item--radio {
8260
- padding-left: var(--menu-item-padding-x);
8444
+ .muka-license-plate-input__plate--disabled .muka-license-plate-input__native {
8445
+ cursor: not-allowed;
8261
8446
  }
8262
8447
 
8263
- .muka-menu__item--checkbox-trailing,
8264
- .muka-menu__item--radio-check {
8265
- /* Same reserved right gutter as default items — trailing indicator floats. */
8266
- padding-right: var(--menu-item-padding-right);
8448
+ /* Helper text */
8449
+ .muka-license-plate-input__helper {
8450
+ font-family: var(--text-label-sm-regular-fontFamily);
8451
+ font-weight: var(--text-label-sm-regular-fontWeight);
8452
+ 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;
8267
8456
  }
8268
8457
 
8269
- .muka-menu__item--radio-check[data-state='checked'] {
8270
- background-color: var(--menu-item-color-selected-background);
8458
+ /* Error message */
8459
+ .muka-license-plate-input__error {
8460
+ font-family: var(--text-label-sm-regular-fontFamily);
8461
+ font-weight: var(--text-label-sm-regular-fontWeight);
8462
+ font-size: var(--text-label-sm-regular-fontSize);
8463
+ line-height: var(--text-label-sm-regular-lineHeight);
8464
+ color: var(--color-state-error-default);
8465
+ margin: 0;
8271
8466
  }
8272
8467
 
8273
- .muka-menu__item-indicator--trailing {
8274
- /* Match enter-hint trailer: 8px inset, 24px box (override leading indicator size). */
8275
- position: absolute;
8276
- top: var(--spacing-2);
8277
- right: var(--spacing-2);
8278
- bottom: var(--spacing-2);
8468
+
8469
+ /* Menu */
8470
+ /* Menu Component Styles */
8471
+
8472
+ /* ─── Content Container ──────────────────────────────────────────────────── */
8473
+
8474
+ .muka-menu__content {
8279
8475
  display: flex;
8280
- align-items: center;
8281
- justify-content: center;
8282
- width: var(--icon-size-default, 1.5rem);
8283
- height: auto;
8284
- max-height: none;
8285
- transform: none;
8286
- color: var(--color-text-subtle-default);
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);
8287
8490
  }
8288
8491
 
8289
- .muka-menu__item-indicator--trailing > [data-state] {
8492
+ .muka-menu__body {
8290
8493
  display: flex;
8291
- align-items: center;
8292
- justify-content: center;
8494
+ flex: 1 1 auto;
8495
+ min-height: 0;
8496
+ align-items: stretch;
8293
8497
  width: 100%;
8294
- height: 100%;
8295
8498
  }
8296
8499
 
8297
- .muka-menu__radio-dot {
8298
- width: 8px;
8299
- height: 8px;
8300
- border-radius: 50%;
8301
- background-color: var(--menu-radio-indicator-color);
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);
8302
8506
  }
8303
8507
 
8304
- /* ─── Separator ──────────────────────────────────────────────────────────── */
8508
+ .muka-menu__content--scrollbar .muka-menu__viewport {
8509
+ /* Custom scrollbar owns the chrome; hide native track */
8510
+ scrollbar-width: none;
8511
+ }
8305
8512
 
8306
- .muka-menu__separator {
8307
- height: var(--menu-separator-height);
8308
- margin: var(--menu-separator-margin-y) 0;
8309
- background-color: var(--menu-separator-color);
8513
+ .muka-menu__content--scrollbar .muka-menu__viewport::-webkit-scrollbar {
8514
+ display: none;
8310
8515
  }
8311
8516
 
8312
- /* ─── Group ──────────────────────────────────────────────────────────────── */
8517
+ /* ─── Search header ──────────────────────────────────────────────────────── */
8313
8518
 
8314
- .muka-menu__group {
8315
- /* No additional styles needed - just a container */
8519
+ .muka-menu__search {
8520
+ display: flex;
8521
+ 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);
8316
8527
  }
8317
8528
 
8318
- .muka-menu__group-label {
8319
- padding: var(--menu-group-label-padding-y) var(--menu-group-label-padding-x);
8320
- font-family: var(--text-label-sm-semibold-fontFamily);
8321
- font-size: var(--text-label-sm-semibold-fontSize);
8322
- font-weight: var(--text-label-sm-semibold-fontWeight);
8323
- line-height: var(--text-label-sm-semibold-lineHeight);
8324
- color: var(--menu-group-label-color);
8325
- text-transform: uppercase;
8326
- letter-spacing: 0.05em;
8529
+ .muka-menu__search--sm {
8530
+ height: calc(var(--size-xl, 1.5rem) + var(--spacing-2) * 2);
8327
8531
  }
8328
8532
 
8329
- /* ─── Radio Group ────────────────────────────────────────────────────────── */
8330
-
8331
- .muka-menu__radio-group {
8332
- /* No additional styles needed - just a container */
8533
+ .muka-menu__search-icon,
8534
+ .muka-menu__search-clear {
8535
+ display: flex;
8536
+ align-items: center;
8537
+ justify-content: center;
8538
+ flex-shrink: 0;
8539
+ width: var(--size-2xl, 2rem);
8540
+ height: var(--size-2xl, 2rem);
8541
+ color: var(--color-text-subtle-default);
8333
8542
  }
8334
8543
 
8335
- /* ─── Context Menu Trigger ───────────────────────────────────────────────── */
8336
-
8337
- .muka-context-menu__trigger {
8338
- /* Allow the trigger to be styled by the parent */
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);
8339
8549
  }
8340
8550
 
8341
- .muka-context-menu__trigger:focus-visible {
8342
- outline: var(--contextmenu-trigger-outline-width) solid var(--contextmenu-trigger-outline-color);
8343
- outline-offset: var(--contextmenu-trigger-outline-offset);
8344
- border-radius: var(--border-radius-sm);
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);
8345
8555
  }
8346
8556
 
8347
- /* ─── Animations ─────────────────────────────────────────────────────────── */
8348
-
8349
- @keyframes muka-menu-fade-in {
8350
- from {
8351
- opacity: 0;
8352
- }
8353
- to {
8354
- opacity: 1;
8355
- }
8356
- }
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
+ }
8357
8570
 
8358
- @keyframes muka-menu-fade-out {
8359
- from {
8360
- opacity: 1;
8361
- }
8362
- to {
8363
- opacity: 0;
8364
- }
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);
8365
8576
  }
8366
8577
 
8367
- @keyframes muka-menu-slide-up {
8368
- from {
8369
- opacity: 0;
8370
- transform: translateY(4px);
8371
- }
8372
- to {
8373
- opacity: 1;
8374
- transform: translateY(0);
8375
- }
8578
+ .muka-menu__search-input::placeholder {
8579
+ color: var(--color-text-subtle-default);
8376
8580
  }
8377
8581
 
8378
- @keyframes muka-menu-slide-down {
8379
- from {
8380
- opacity: 0;
8381
- transform: translateY(-4px);
8382
- }
8383
- to {
8384
- opacity: 1;
8385
- transform: translateY(0);
8386
- }
8582
+ .muka-menu__search-input::-webkit-search-cancel-button,
8583
+ .muka-menu__search-input::-webkit-search-decoration {
8584
+ -webkit-appearance: none;
8585
+ appearance: none;
8387
8586
  }
8388
8587
 
8389
- @keyframes muka-menu-slide-left {
8390
- from {
8391
- opacity: 0;
8392
- transform: translateX(4px);
8393
- }
8394
- to {
8395
- opacity: 1;
8396
- transform: translateX(0);
8397
- }
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;
8398
8600
  }
8399
8601
 
8400
- @keyframes muka-menu-slide-right {
8401
- from {
8402
- opacity: 0;
8403
- transform: translateX(-4px);
8404
- }
8405
- to {
8406
- opacity: 1;
8407
- transform: translateX(0);
8408
- }
8602
+ .muka-menu__search-clear {
8603
+ padding: 0;
8604
+ border: none;
8605
+ background: transparent;
8606
+ cursor: pointer;
8409
8607
  }
8410
8608
 
8609
+ .muka-menu__match {
8610
+ font-weight: var(--text-label-md-bold-fontWeight);
8611
+ }
8411
8612
 
8412
- /* ListItem */
8413
- /* ListItem Component Styles - Using Muka Design Tokens */
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
+ }
8414
8617
 
8415
- /* Base list item styles */
8416
- .muka-listitem {
8417
- /* Layout */
8418
- display: flex;
8419
- align-items: flex-start;
8420
- gap: var(--spacing-4);
8421
- padding: var(--spacing-5) var(--spacing-4);
8422
-
8423
- /* Background - using semantic tokens */
8424
- background-color: var(--color-surface-level3);
8425
-
8426
- /* Typography */
8427
- font-family: var(--alias-font-brand-family);
8428
-
8429
- /* Border and spacing */
8430
- border: none;
8431
- position: relative;
8432
-
8433
- /* Interaction - only apply if interactive */
8434
- transition: background-color 0.2s ease, box-shadow 0.2s ease;
8618
+ .muka-menu__content[data-state='open'] {
8619
+ animation-name: muka-menu-fade-in;
8435
8620
  }
8436
8621
 
8437
- /* Interactive state */
8438
- .muka-listitem--interactive {
8439
- cursor: pointer;
8622
+ .muka-menu__content[data-state='closed'] {
8623
+ animation-name: muka-menu-fade-out;
8440
8624
  }
8441
8625
 
8442
- /*
8443
- * surface.hover / surface.pressed are theme-adaptive translucent tints, so they
8444
- * are layered on top of the item's base surface via an inset box-shadow overlay
8445
- * rather than replacing background-color. This preserves the base level (level3,
8446
- * or level2 when selected) and lets the tint read correctly on any surface.
8447
- */
8448
- .muka-listitem--interactive:hover:not(:disabled):not(.muka-listitem--disabled) {
8449
- box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
8626
+ .muka-menu__content[data-side='top'] {
8627
+ animation-name: muka-menu-slide-down;
8450
8628
  }
8451
8629
 
8452
- .muka-listitem--interactive:active:not(:disabled):not(.muka-listitem--disabled),
8453
- .muka-listitem--interactive.muka-listitem--pressed:not(:disabled):not(.muka-listitem--disabled) {
8454
- box-shadow: inset 0 0 0 9999px var(--color-surface-pressed);
8630
+ .muka-menu__content[data-side='bottom'] {
8631
+ animation-name: muka-menu-slide-up;
8455
8632
  }
8456
8633
 
8457
- /* Focus styles for accessibility */
8458
- .muka-listitem:focus-visible {
8459
- outline: 2px solid var(--color-border-focus);
8460
- outline-offset: -2px;
8634
+ .muka-menu__content[data-side='left'] {
8635
+ animation-name: muka-menu-slide-right;
8461
8636
  }
8462
8637
 
8463
- /* Disabled state */
8464
- .muka-listitem--disabled {
8465
- opacity: 0.5;
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);
8466
8684
  cursor: not-allowed;
8467
8685
  pointer-events: none;
8468
8686
  }
8469
8687
 
8470
- .muka-listitem--disabled:hover {
8471
- background-color: var(--color-surface-level3);
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);
8472
8691
  }
8473
8692
 
8474
- /* Selected state */
8475
- .muka-listitem--selected {
8476
- background-color: var(--color-surface-level2);
8693
+ /* Destructive */
8694
+ .muka-menu__item--destructive {
8695
+ color: var(--menu-item-color-destructive-default-foreground);
8477
8696
  }
8478
8697
 
8479
- .muka-listitem--selected:hover {
8480
- box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
8698
+ .muka-menu__item--destructive .muka-menu__item-icon {
8699
+ color: var(--menu-item-color-destructive-default-icon);
8481
8700
  }
8482
8701
 
8483
- /* No divider modifier */
8484
- .muka-listitem--no-divider .muka-listitem__divider {
8485
- display: none;
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);
8486
8706
  }
8487
8707
 
8488
- /* Center content vertically when no caption */
8489
- .muka-listitem--no-caption {
8490
- align-items: center;
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);
8491
8711
  }
8492
8712
 
8493
- /* Leading content (icon or image) */
8494
- .muka-listitem__leading {
8713
+ /* ─── Item Parts ─────────────────────────────────────────────────────────── */
8714
+
8715
+ .muka-menu__item-icon {
8495
8716
  display: flex;
8496
8717
  align-items: center;
8497
8718
  justify-content: center;
8498
8719
  flex-shrink: 0;
8499
- width: 48px;
8500
- height: 48px;
8720
+ color: var(--menu-item-color-default-icon);
8721
+ transition: color 100ms ease;
8501
8722
  }
8502
8723
 
8503
- .muka-listitem__icon {
8504
- display: inline-flex;
8505
- align-items: center;
8506
- justify-content: center;
8507
- width: 32px;
8508
- height: 32px;
8509
- color: var(--color-text-default-default);
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);
8510
8727
  }
8511
8728
 
8512
- .muka-listitem__image {
8513
- width: 48px;
8514
- height: 48px;
8515
- border-radius: var(--radius-md);
8516
- object-fit: cover;
8729
+ .muka-menu__item-label {
8730
+ flex: 1 1 auto;
8731
+ min-width: 0;
8732
+ white-space: nowrap;
8517
8733
  }
8518
8734
 
8519
- /* Main content area */
8520
- .muka-listitem__content {
8521
- flex: 1;
8522
- display: flex;
8523
- align-items: center;
8524
- gap: var(--spacing-4);
8525
- min-width: 0;
8735
+ /* Shortcut trailers replace icons and sit with an 8px right inset. */
8736
+ .muka-menu__item--has-shortcut {
8737
+ padding-right: var(--spacing-2);
8526
8738
  }
8527
8739
 
8528
- .muka-listitem__text {
8529
- flex: 1;
8530
- display: flex;
8531
- flex-direction: column;
8532
- gap: var(--spacing-1);
8533
- min-width: 0;
8534
- }
8535
-
8536
- /* Label text */
8537
- .muka-listitem__label {
8538
- margin: 0;
8539
- padding: 0;
8540
-
8541
- /* Typography - using semantic tokens */
8542
- font-family: var(--alias-font-plain-family);
8543
- font-weight: var(--alias-font-plain-weight-semibold, 600);
8544
- font-size: var(--text-label-md-fontSize);
8545
- line-height: var(--text-label-md-lineHeight);
8546
- color: var(--color-text-default-default);
8547
-
8548
- /* Text handling */
8549
- overflow: hidden;
8550
- text-overflow: ellipsis;
8551
- white-space: nowrap;
8552
- }
8553
-
8554
- /* Caption text */
8555
- .muka-listitem__caption {
8556
- margin: 0;
8557
- padding: 0;
8558
-
8559
- /* Typography - using semantic tokens */
8560
- font-family: var(--alias-font-plain-family);
8561
- font-weight: var(--alias-font-plain-weight-regular, 400);
8562
- font-size: var(--text-body-sm-fontSize);
8563
- line-height: var(--text-body-sm-lineHeight);
8564
- color: var(--color-text-subtle-default);
8565
-
8566
- /* Text handling */
8567
- overflow: hidden;
8568
- text-overflow: ellipsis;
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);
8569
8749
  white-space: nowrap;
8570
8750
  }
8571
8751
 
8572
- /* Trailing chevron */
8573
- .muka-listitem__chevron {
8574
- display: inline-flex;
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;
8575
8759
  align-items: center;
8576
8760
  justify-content: center;
8577
- flex-shrink: 0;
8578
- width: 24px;
8579
- height: 24px;
8580
- color: var(--color-text-subtle-default);
8581
- }
8582
-
8583
- /* Bottom divider */
8584
- .muka-listitem__divider {
8585
- position: absolute;
8586
- bottom: 0;
8587
- left: 0;
8588
- right: 0;
8589
- height: 1px;
8590
- background-color: var(--color-border-default);
8761
+ width: var(--icon-size-default, 1.5rem);
8762
+ color: var(--color-text-muted-default);
8763
+ pointer-events: none;
8591
8764
  }
8592
8765
 
8593
- /* Button and anchor specific styles */
8594
- button.muka-listitem,
8595
- a.muka-listitem {
8596
- text-align: left;
8597
- width: 100%;
8766
+ .muka-menu__item--hint-enter[data-highlighted] .muka-menu__item-hint {
8767
+ display: flex;
8598
8768
  }
8599
8769
 
8600
- /* List item specific styles */
8601
- li.muka-listitem {
8602
- list-style: none;
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);
8603
8780
  }
8604
8781
 
8782
+ /* ─── Indicator (Checkbox/Radio) ─────────────────────────────────────────── */
8605
8783
 
8606
- /* LicensePlateInput */
8607
- /* LicensePlateInput — Dutch RDW-style plate input
8608
- *
8609
- * Plate body colors are regulatory (EU/NL) and intentionally fixed:
8610
- * - Plate yellow: #F0CE3D
8611
- * - EU strip blue: #003399
8612
- * - EU stars yellow: #FFCC00
8613
- * - Plate text: #1A1A1A
8614
- *
8615
- * All surrounding UI (label, helper, focus ring, error border) uses Muka tokens.
8616
- */
8617
-
8618
- .muka-license-plate-input {
8619
- --plate-yellow: #f0ce3d;
8620
- --plate-blue: #003399;
8621
- --plate-text: #1a1a1a;
8622
- --plate-stars: #ffcc00;
8623
-
8624
- display: inline-flex;
8625
- flex-direction: column;
8626
- gap: var(--spacing-2);
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);
8627
8792
  }
8628
8793
 
8629
- /* Plate body */
8630
- .muka-license-plate-input__plate {
8631
- display: inline-flex;
8632
- align-items: stretch;
8633
- background-color: var(--plate-yellow);
8634
- border-radius: var(--input-field-radius-md);
8635
- cursor: text;
8636
- position: relative;
8637
- overflow: hidden;
8638
- box-sizing: border-box;
8639
- /* Subtle outline to lift the plate from light backgrounds */
8640
- box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
8641
- /* Reserve space for the focus / error solid ring without shifting layout */
8642
- outline: 3px solid transparent;
8643
- outline-offset: 2px;
8644
- transition: outline-color 0.15s ease, opacity 0.15s ease;
8794
+ .muka-menu__item--checkbox,
8795
+ .muka-menu__item--radio {
8796
+ padding-left: var(--menu-item-padding-x);
8645
8797
  }
8646
8798
 
8647
- /* Size variants — plate aspect echoes the real RDW plate (~5:1) */
8648
- .muka-license-plate-input__plate--sm {
8649
- height: 44px;
8650
- min-width: 220px;
8651
- border-radius: var(--input-field-radius-sm);
8799
+ .muka-menu__item--checkbox-trailing,
8800
+ .muka-menu__item--radio-check {
8801
+ /* Same reserved right gutter as default items — trailing indicator floats. */
8802
+ padding-right: var(--menu-item-padding-right);
8652
8803
  }
8653
8804
 
8654
- .muka-license-plate-input__plate--md {
8655
- height: 60px;
8656
- min-width: 300px;
8657
- border-radius: var(--input-field-radius-md);
8805
+ .muka-menu__item--radio-check[data-state='checked'] {
8806
+ background-color: var(--menu-item-color-selected-background);
8658
8807
  }
8659
8808
 
8660
- .muka-license-plate-input__plate--lg {
8661
- height: 80px;
8662
- min-width: 400px;
8663
- border-radius: var(--input-field-radius-lg);
8809
+ .muka-menu__item-indicator--trailing {
8810
+ /* Match enter-hint trailer: 8px inset, 24px box (override leading indicator size). */
8811
+ position: absolute;
8812
+ top: var(--spacing-2);
8813
+ right: var(--spacing-2);
8814
+ bottom: var(--spacing-2);
8815
+ display: flex;
8816
+ align-items: center;
8817
+ justify-content: center;
8818
+ width: var(--icon-size-default, 1.5rem);
8819
+ height: auto;
8820
+ max-height: none;
8821
+ transform: none;
8822
+ color: var(--color-text-subtle-default);
8664
8823
  }
8665
8824
 
8666
- /* Focus — solid outline ring */
8667
- .muka-license-plate-input__plate--focused:not(.muka-license-plate-input__plate--disabled) {
8668
- outline-color: var(--input-field-color-focus-border);
8825
+ .muka-menu__item-indicator--trailing > [data-state] {
8826
+ display: flex;
8827
+ align-items: center;
8828
+ justify-content: center;
8829
+ width: 100%;
8830
+ height: 100%;
8669
8831
  }
8670
8832
 
8671
- /* Error — solid outline ring in error color */
8672
- .muka-license-plate-input__plate--error:not(.muka-license-plate-input__plate--disabled) {
8673
- outline-color: var(--input-field-color-error-border);
8833
+ .muka-menu__radio-dot {
8834
+ width: 8px;
8835
+ height: 8px;
8836
+ border-radius: 50%;
8837
+ background-color: var(--menu-radio-indicator-color);
8674
8838
  }
8675
8839
 
8676
- /* Disabled */
8677
- .muka-license-plate-input__plate--disabled {
8678
- cursor: not-allowed;
8679
- opacity: 0.55;
8680
- }
8840
+ /* ─── Separator ──────────────────────────────────────────────────────────── */
8681
8841
 
8682
- /* EU strip */
8683
- .muka-license-plate-input__eu-strip {
8684
- display: inline-flex;
8685
- flex-direction: column;
8686
- align-items: center;
8687
- justify-content: center;
8688
- background-color: var(--plate-blue);
8689
- color: #ffffff;
8690
- flex-shrink: 0;
8691
- padding: 0 0.4em;
8692
- gap: 0.15em;
8693
- /* Strip width scales with plate height for a consistent ratio */
8694
- width: 14%;
8695
- min-width: 36px;
8842
+ .muka-menu__separator {
8843
+ height: var(--menu-separator-height);
8844
+ margin: var(--menu-separator-margin-y) 0;
8845
+ background-color: var(--menu-separator-color);
8696
8846
  }
8697
8847
 
8698
- .muka-license-plate-input__eu-stars {
8699
- width: 60%;
8700
- max-width: 28px;
8701
- aspect-ratio: 1 / 1;
8702
- display: block;
8703
- }
8848
+ /* ─── Group ──────────────────────────────────────────────────────────────── */
8704
8849
 
8705
- .muka-license-plate-input__plate--sm .muka-license-plate-input__eu-stars {
8706
- max-width: 20px;
8850
+ .muka-menu__group {
8851
+ /* No additional styles needed - just a container */
8707
8852
  }
8708
8853
 
8709
- .muka-license-plate-input__plate--lg .muka-license-plate-input__eu-stars {
8710
- max-width: 36px;
8854
+ .muka-menu__group-label {
8855
+ padding: var(--menu-group-label-padding-y) var(--menu-group-label-padding-x);
8856
+ font-family: var(--text-label-sm-semibold-fontFamily);
8857
+ font-size: var(--text-label-sm-semibold-fontSize);
8858
+ font-weight: var(--text-label-sm-semibold-fontWeight);
8859
+ line-height: var(--text-label-sm-semibold-lineHeight);
8860
+ color: var(--menu-group-label-color);
8861
+ text-transform: uppercase;
8862
+ letter-spacing: 0.05em;
8711
8863
  }
8712
8864
 
8713
- .muka-license-plate-input__country-code {
8714
- font-family:
8715
- 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
8716
- font-weight: 700;
8717
- letter-spacing: 0.04em;
8718
- line-height: 1;
8719
- color: #ffffff;
8720
- }
8865
+ /* ─── Radio Group ────────────────────────────────────────────────────────── */
8721
8866
 
8722
- .muka-license-plate-input__plate--sm .muka-license-plate-input__country-code {
8723
- font-size: 10px;
8867
+ .muka-menu__radio-group {
8868
+ /* No additional styles needed - just a container */
8724
8869
  }
8725
8870
 
8726
- .muka-license-plate-input__plate--md .muka-license-plate-input__country-code {
8727
- font-size: 13px;
8728
- }
8871
+ /* ─── Context Menu Trigger ───────────────────────────────────────────────── */
8729
8872
 
8730
- .muka-license-plate-input__plate--lg .muka-license-plate-input__country-code {
8731
- font-size: 16px;
8873
+ .muka-context-menu__trigger {
8874
+ /* Allow the trigger to be styled by the parent */
8732
8875
  }
8733
8876
 
8734
- /* Native input */
8735
- .muka-license-plate-input__native {
8736
- flex: 1;
8737
- min-width: 0;
8738
- border: none;
8739
- outline: none;
8740
- background: transparent;
8741
- color: var(--plate-text);
8742
- text-align: center;
8743
- text-transform: uppercase;
8744
- letter-spacing: 0.06em;
8745
- /* Plate font — bold condensed sans is closest to the FE-Schrift look without
8746
- shipping a custom font. JetBrains Mono is the system mono brand font. */
8747
- font-family:
8748
- 'Arial Narrow', 'Helvetica Neue', Helvetica, Arial, sans-serif;
8749
- font-weight: 800;
8750
- padding: 0 0.5em;
8751
- width: 100%;
8752
- caret-color: var(--plate-text);
8877
+ .muka-context-menu__trigger:focus-visible {
8878
+ outline: var(--contextmenu-trigger-outline-width) solid var(--contextmenu-trigger-outline-color);
8879
+ outline-offset: var(--contextmenu-trigger-outline-offset);
8880
+ border-radius: var(--border-radius-sm);
8753
8881
  }
8754
8882
 
8755
- .muka-license-plate-input__plate--sm .muka-license-plate-input__native {
8756
- font-size: 22px;
8757
- }
8883
+ /* ─── Animations ─────────────────────────────────────────────────────────── */
8758
8884
 
8759
- .muka-license-plate-input__plate--md .muka-license-plate-input__native {
8760
- font-size: 30px;
8885
+ @keyframes muka-menu-fade-in {
8886
+ from {
8887
+ opacity: 0;
8888
+ }
8889
+ to {
8890
+ opacity: 1;
8891
+ }
8761
8892
  }
8762
8893
 
8763
- .muka-license-plate-input__plate--lg .muka-license-plate-input__native {
8764
- font-size: 42px;
8894
+ @keyframes muka-menu-fade-out {
8895
+ from {
8896
+ opacity: 1;
8897
+ }
8898
+ to {
8899
+ opacity: 0;
8900
+ }
8765
8901
  }
8766
8902
 
8767
- .muka-license-plate-input__native::placeholder {
8768
- color: var(--plate-text);
8769
- opacity: 0.55;
8770
- font-weight: 700;
8771
- letter-spacing: 0.08em;
8903
+ @keyframes muka-menu-slide-up {
8904
+ from {
8905
+ opacity: 0;
8906
+ transform: translateY(4px);
8907
+ }
8908
+ to {
8909
+ opacity: 1;
8910
+ transform: translateY(0);
8911
+ }
8772
8912
  }
8773
8913
 
8774
- .muka-license-plate-input__plate--disabled .muka-license-plate-input__native {
8775
- cursor: not-allowed;
8914
+ @keyframes muka-menu-slide-down {
8915
+ from {
8916
+ opacity: 0;
8917
+ transform: translateY(-4px);
8918
+ }
8919
+ to {
8920
+ opacity: 1;
8921
+ transform: translateY(0);
8922
+ }
8776
8923
  }
8777
8924
 
8778
- /* Helper text */
8779
- .muka-license-plate-input__helper {
8780
- font-family: var(--text-label-sm-regular-fontFamily);
8781
- font-weight: var(--text-label-sm-regular-fontWeight);
8782
- font-size: var(--text-label-sm-regular-fontSize);
8783
- line-height: var(--text-label-sm-regular-lineHeight);
8784
- color: var(--color-text-subtle-default);
8785
- margin: 0;
8925
+ @keyframes muka-menu-slide-left {
8926
+ from {
8927
+ opacity: 0;
8928
+ transform: translateX(4px);
8929
+ }
8930
+ to {
8931
+ opacity: 1;
8932
+ transform: translateX(0);
8933
+ }
8786
8934
  }
8787
8935
 
8788
- /* Error message */
8789
- .muka-license-plate-input__error {
8790
- font-family: var(--text-label-sm-regular-fontFamily);
8791
- font-weight: var(--text-label-sm-regular-fontWeight);
8792
- font-size: var(--text-label-sm-regular-fontSize);
8793
- line-height: var(--text-label-sm-regular-lineHeight);
8794
- color: var(--color-state-error-default);
8795
- margin: 0;
8936
+ @keyframes muka-menu-slide-right {
8937
+ from {
8938
+ opacity: 0;
8939
+ transform: translateX(-4px);
8940
+ }
8941
+ to {
8942
+ opacity: 1;
8943
+ transform: translateX(0);
8944
+ }
8796
8945
  }
8797
8946
 
8798
8947
 
@@ -9024,7 +9173,8 @@ li.muka-listitem {
9024
9173
  height: var(--icon-size-default);
9025
9174
  }
9026
9175
 
9027
- .muka-input__clear {
9176
+ .muka-input__clear,
9177
+ .muka-input__reveal {
9028
9178
  display: inline-flex;
9029
9179
  align-items: center;
9030
9180
  justify-content: center;
@@ -9038,7 +9188,8 @@ li.muka-listitem {
9038
9188
  cursor: pointer;
9039
9189
  }
9040
9190
 
9041
- .muka-input__field--sm .muka-input__clear {
9191
+ .muka-input__field--sm .muka-input__clear,
9192
+ .muka-input__field--sm .muka-input__reveal {
9042
9193
  width: var(--size-xl, 1.5rem);
9043
9194
  height: var(--size-xl, 1.5rem);
9044
9195
  }
@@ -9047,14 +9198,19 @@ li.muka-listitem {
9047
9198
  .muka-input__icon .muka-icon,
9048
9199
  .muka-input__clear .muka-icon,
9049
9200
  .muka-input__clear:hover,
9050
- .muka-input__clear:hover .muka-icon {
9201
+ .muka-input__clear:hover .muka-icon,
9202
+ .muka-input__reveal .muka-icon,
9203
+ .muka-input__reveal:hover,
9204
+ .muka-input__reveal:hover .muka-icon {
9051
9205
  color: var(--color-text-subtle-default);
9052
9206
  }
9053
9207
 
9054
9208
  .muka-input__field--disabled .muka-input__icon,
9055
9209
  .muka-input__field--disabled .muka-input__icon .muka-icon,
9056
9210
  .muka-input__field--disabled .muka-input__clear,
9057
- .muka-input__field--disabled .muka-input__clear .muka-icon {
9211
+ .muka-input__field--disabled .muka-input__clear .muka-icon,
9212
+ .muka-input__field--disabled .muka-input__reveal,
9213
+ .muka-input__field--disabled .muka-input__reveal .muka-icon {
9058
9214
  color: var(--input-field-color-disabled-foreground);
9059
9215
  }
9060
9216
 
@@ -10797,6 +10953,11 @@ li.muka-listitem {
10797
10953
  transition: background-color 0.15s ease;
10798
10954
  }
10799
10955
 
10956
+ /* Last body row: no bottom border (matches Table; avoids a double line at the table edge). */
10957
+ .muka-data-table__body .muka-data-table__row:last-child {
10958
+ border-bottom: none;
10959
+ }
10960
+
10800
10961
  .muka-data-table__row:not(.muka-data-table__row--empty):not(.muka-data-table__row--selected):hover {
10801
10962
  background-color: var(--datatable-row-hover-background);
10802
10963
  }
@@ -12198,6 +12359,128 @@ li.muka-listitem {
12198
12359
  }
12199
12360
 
12200
12361
 
12362
+ /* ChatPhotoGrid */
12363
+ /* ChatPhotoGrid Component Styles */
12364
+
12365
+ /*
12366
+ * The grid clips to its own radius and the tiles stay square, so only the four
12367
+ * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
12368
+ */
12369
+ .muka-chat-photo-grid {
12370
+ display: grid;
12371
+ gap: var(--chatphotogrid-gap);
12372
+ width: 100%;
12373
+ min-width: 0;
12374
+ overflow: hidden;
12375
+ border-radius: var(--chatphotogrid-radius);
12376
+ }
12377
+
12378
+ /* ─── Tiles ────────────────────────────────────────────── */
12379
+
12380
+ .muka-chat-photo-grid__tile {
12381
+ position: relative;
12382
+ display: block;
12383
+ overflow: hidden;
12384
+ min-width: 0;
12385
+ padding: 0;
12386
+ margin: 0;
12387
+ border: none;
12388
+ background-color: var(--chatphotogrid-color-placeholder);
12389
+ aspect-ratio: 1 / 1;
12390
+ }
12391
+
12392
+ button.muka-chat-photo-grid__tile {
12393
+ cursor: pointer;
12394
+ appearance: none;
12395
+ }
12396
+
12397
+ button.muka-chat-photo-grid__tile:focus-visible {
12398
+ outline: var(--border-width-bold) solid var(--color-border-focus);
12399
+ /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
12400
+ outline-offset: calc(-1 * var(--border-width-bold));
12401
+ }
12402
+
12403
+ .muka-chat-photo-grid__image {
12404
+ display: block;
12405
+ width: 100%;
12406
+ height: 100%;
12407
+ object-fit: cover;
12408
+ }
12409
+
12410
+ /* ─── Overflow tile ────────────────────────────────────── */
12411
+
12412
+ .muka-chat-photo-grid__overflow {
12413
+ position: absolute;
12414
+ inset: 0;
12415
+ display: flex;
12416
+ align-items: center;
12417
+ justify-content: center;
12418
+ background-color: var(--chatphotogrid-color-overflow-background);
12419
+ color: var(--chatphotogrid-color-overflow-foreground);
12420
+ font-family: var(--text-body-2xl-regular-fontFamily);
12421
+ font-weight: var(--text-body-2xl-regular-fontWeight);
12422
+ font-size: var(--text-body-2xl-regular-fontSize);
12423
+ line-height: var(--text-body-2xl-regular-lineHeight);
12424
+ }
12425
+
12426
+ /* ─── Layouts ──────────────────────────────────────────── */
12427
+
12428
+ .muka-chat-photo-grid--1 {
12429
+ grid-template-columns: 1fr;
12430
+ }
12431
+
12432
+ .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
12433
+ aspect-ratio: 4 / 3;
12434
+ }
12435
+
12436
+ .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
12437
+ aspect-ratio: 3 / 4;
12438
+ }
12439
+
12440
+ .muka-chat-photo-grid--2 {
12441
+ grid-template-columns: repeat(2, 1fr);
12442
+ }
12443
+
12444
+ .muka-chat-photo-grid--3 {
12445
+ grid-template-columns: repeat(3, 1fr);
12446
+ }
12447
+
12448
+ .muka-chat-photo-grid--4 {
12449
+ grid-template-columns: repeat(2, 1fr);
12450
+ }
12451
+
12452
+ /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
12453
+ .muka-chat-photo-grid--5 {
12454
+ grid-template-columns: repeat(6, 1fr);
12455
+ }
12456
+
12457
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
12458
+ grid-column: span 3;
12459
+ }
12460
+
12461
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
12462
+ grid-column: span 2;
12463
+ }
12464
+
12465
+ .muka-chat-photo-grid--6,
12466
+ .muka-chat-photo-grid--overflow {
12467
+ grid-template-columns: repeat(3, 1fr);
12468
+ }
12469
+
12470
+ /* ─── Print ────────────────────────────────────────────── */
12471
+
12472
+ @media print {
12473
+ .muka-chat-photo-grid {
12474
+ break-inside: avoid;
12475
+ }
12476
+
12477
+ .muka-chat-photo-grid__image {
12478
+ print-color-adjust: exact;
12479
+ -webkit-print-color-adjust: exact;
12480
+ }
12481
+ }
12482
+
12483
+
12201
12484
  /* ChatMessageStack */
12202
12485
  /* ChatMessageStack Component Styles */
12203
12486
 
@@ -12361,12 +12644,10 @@ li.muka-listitem {
12361
12644
  */
12362
12645
  width: fit-content;
12363
12646
  /*
12364
- * Stops short of the far edge at every width: the fixed cap once the
12365
- * conversation column reaches its own cap, the ratio below that, where the
12366
- * column runs full-bleed. Without that gap a long `own` bubble spans the
12367
- * column and reads no differently from a `peer` one.
12647
+ * Ceiling from design (Figma 5355:44091). Below it, wrapping text fills the
12648
+ * row; above it the fixed cap leaves room for own/peer alignment.
12368
12649
  */
12369
- max-width: min(var(--chatbubble-max-width), var(--chatbubble-max-width-ratio));
12650
+ max-width: var(--chatbubble-max-width);
12370
12651
  position: relative;
12371
12652
  display: flex;
12372
12653
  flex-direction: column;
@@ -12618,139 +12899,11 @@ li.muka-listitem {
12618
12899
  break-inside: avoid;
12619
12900
  print-color-adjust: exact;
12620
12901
  -webkit-print-color-adjust: exact;
12621
- }
12622
-
12623
- .muka-chat-message__menu,
12624
- .muka-chat-message__embed-copy,
12625
- .muka-chat-message__action-stack {
12626
- display: none;
12627
- }
12628
- }
12629
-
12630
-
12631
- /* ChatComposer */
12632
- /* ChatComposer Component Styles */
12633
-
12634
- /*
12635
- * The composer is a bare, fill-width row: no padding, background, border or
12636
- * max-width of its own (Figma 5243:14141). Whatever hosts it owns the
12637
- * container — see BottomBar's `chat` variant.
12638
- */
12639
- .muka-chat-composer {
12640
- display: flex;
12641
- flex-direction: column;
12642
- gap: var(--spacing-3);
12643
- width: 100%;
12644
- }
12645
-
12646
- .muka-chat-composer--disabled {
12647
- opacity: 0.6;
12648
- pointer-events: none;
12649
- }
12650
-
12651
- /* ─── Input row ────────────────────────────────────────── */
12652
-
12653
- .muka-chat-composer__row {
12654
- display: flex;
12655
- width: 100%;
12656
- align-items: flex-end;
12657
- gap: var(--spacing-3);
12658
- }
12659
-
12660
- /* ─── Text field ───────────────────────────────────────── */
12661
-
12662
- .muka-chat-composer__field {
12663
- display: flex;
12664
- flex: 1 1 auto;
12665
- min-width: 0;
12666
- box-sizing: border-box;
12667
- align-items: center;
12668
- gap: var(--spacing-1);
12669
- min-height: var(--input-field-height-lg, 48px);
12670
- padding: 0 var(--spacing-2);
12671
- border: var(--border-width-regular) solid var(--input-field-color-default-border);
12672
- border-radius: var(--input-field-radius-lg);
12673
- background-color: var(--input-field-color-default-background);
12674
- transition: border-color 0.12s ease;
12675
- }
12676
-
12677
- .muka-chat-composer__field:focus-within {
12678
- border-color: var(--input-field-color-focus-border, var(--color-action-default));
12679
- }
12680
-
12681
- .muka-chat-composer__input {
12682
- flex: 1 1 auto;
12683
- min-width: 0;
12684
- width: 100%;
12685
- box-sizing: border-box;
12686
- resize: none;
12687
- border: none;
12688
- background: transparent;
12689
- outline: none;
12690
- padding: 0 var(--spacing-1);
12691
- color: var(--color-text-default-default);
12692
- font-family: var(--text-body-base-regular-fontFamily);
12693
- font-weight: var(--text-body-base-regular-fontWeight);
12694
- font-size: var(--text-body-base-regular-fontSize);
12695
- line-height: var(--text-body-base-regular-lineHeight);
12696
- appearance: none;
12697
- -webkit-appearance: none;
12698
- }
12699
-
12700
- .muka-chat-composer__input::placeholder {
12701
- color: var(--color-text-subtle-default);
12702
- }
12703
-
12704
- /* Keep the in-field emoji button flush to the bottom-right as the field grows */
12705
- .muka-chat-composer__emoji {
12706
- flex-shrink: 0;
12707
- }
12708
-
12709
- /* ─── Recording bar ────────────────────────────────────── */
12710
-
12711
- .muka-chat-composer__recording {
12712
- display: flex;
12713
- flex: 1 1 auto;
12714
- min-width: 0;
12715
- box-sizing: border-box;
12716
- align-items: center;
12717
- min-height: var(--input-field-height-lg, 48px);
12718
- padding: var(--card-padding-sm);
12719
- border: var(--border-width-regular) solid var(--card-color-default-border);
12720
- border-radius: var(--radius-lg);
12721
- background-color: var(--card-color-default-background);
12722
- }
12723
-
12724
- /* ─── Staged attachments strip ─────────────────────────── */
12725
-
12726
- .muka-chat-composer__attachments-strip {
12727
- position: relative;
12728
- width: 100%;
12729
- }
12730
-
12731
- .muka-chat-composer__attachments {
12732
- display: flex;
12733
- gap: var(--spacing-3);
12734
- overflow-x: auto;
12735
- scroll-behavior: smooth;
12736
- scrollbar-width: none;
12737
- }
12738
-
12739
- .muka-chat-composer__attachments::-webkit-scrollbar {
12740
- display: none;
12741
- }
12742
-
12743
- .muka-chat-composer__overflow {
12744
- position: absolute;
12745
- top: 50%;
12746
- right: var(--spacing-2);
12747
- transform: translateY(-50%);
12748
- }
12749
-
12750
- /* ─── Print ────────────────────────────────────────────── */
12902
+ }
12751
12903
 
12752
- @media print {
12753
- .muka-chat-composer {
12904
+ .muka-chat-message__menu,
12905
+ .muka-chat-message__embed-copy,
12906
+ .muka-chat-message__action-stack {
12754
12907
  display: none;
12755
12908
  }
12756
12909
  }
@@ -14329,6 +14482,134 @@ li.muka-listitem {
14329
14482
  }
14330
14483
 
14331
14484
 
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
+
14332
14613
  /* AppShell */
14333
14614
  /* AppShell Component Styles */
14334
14615
 
@@ -15068,125 +15349,3 @@ li.muka-listitem {
15068
15349
  border-bottom: none;
15069
15350
  }
15070
15351
 
15071
-
15072
- /* ChatPhotoGrid */
15073
- /* ChatPhotoGrid Component Styles */
15074
-
15075
- /*
15076
- * The grid clips to its own radius and the tiles stay square, so only the four
15077
- * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
15078
- */
15079
- .muka-chat-photo-grid {
15080
- display: grid;
15081
- gap: var(--chatphotogrid-gap);
15082
- width: 100%;
15083
- min-width: 0;
15084
- overflow: hidden;
15085
- border-radius: var(--chatphotogrid-radius);
15086
- }
15087
-
15088
- /* ─── Tiles ────────────────────────────────────────────── */
15089
-
15090
- .muka-chat-photo-grid__tile {
15091
- position: relative;
15092
- display: block;
15093
- overflow: hidden;
15094
- min-width: 0;
15095
- padding: 0;
15096
- margin: 0;
15097
- border: none;
15098
- background-color: var(--chatphotogrid-color-placeholder);
15099
- aspect-ratio: 1 / 1;
15100
- }
15101
-
15102
- button.muka-chat-photo-grid__tile {
15103
- cursor: pointer;
15104
- appearance: none;
15105
- }
15106
-
15107
- button.muka-chat-photo-grid__tile:focus-visible {
15108
- outline: var(--border-width-bold) solid var(--color-border-focus);
15109
- /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
15110
- outline-offset: calc(-1 * var(--border-width-bold));
15111
- }
15112
-
15113
- .muka-chat-photo-grid__image {
15114
- display: block;
15115
- width: 100%;
15116
- height: 100%;
15117
- object-fit: cover;
15118
- }
15119
-
15120
- /* ─── Overflow tile ────────────────────────────────────── */
15121
-
15122
- .muka-chat-photo-grid__overflow {
15123
- position: absolute;
15124
- inset: 0;
15125
- display: flex;
15126
- align-items: center;
15127
- justify-content: center;
15128
- background-color: var(--chatphotogrid-color-overflow-background);
15129
- color: var(--chatphotogrid-color-overflow-foreground);
15130
- font-family: var(--text-body-2xl-regular-fontFamily);
15131
- font-weight: var(--text-body-2xl-regular-fontWeight);
15132
- font-size: var(--text-body-2xl-regular-fontSize);
15133
- line-height: var(--text-body-2xl-regular-lineHeight);
15134
- }
15135
-
15136
- /* ─── Layouts ──────────────────────────────────────────── */
15137
-
15138
- .muka-chat-photo-grid--1 {
15139
- grid-template-columns: 1fr;
15140
- }
15141
-
15142
- .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
15143
- aspect-ratio: 4 / 3;
15144
- }
15145
-
15146
- .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
15147
- aspect-ratio: 3 / 4;
15148
- }
15149
-
15150
- .muka-chat-photo-grid--2 {
15151
- grid-template-columns: repeat(2, 1fr);
15152
- }
15153
-
15154
- .muka-chat-photo-grid--3 {
15155
- grid-template-columns: repeat(3, 1fr);
15156
- }
15157
-
15158
- .muka-chat-photo-grid--4 {
15159
- grid-template-columns: repeat(2, 1fr);
15160
- }
15161
-
15162
- /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
15163
- .muka-chat-photo-grid--5 {
15164
- grid-template-columns: repeat(6, 1fr);
15165
- }
15166
-
15167
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
15168
- grid-column: span 3;
15169
- }
15170
-
15171
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
15172
- grid-column: span 2;
15173
- }
15174
-
15175
- .muka-chat-photo-grid--6,
15176
- .muka-chat-photo-grid--overflow {
15177
- grid-template-columns: repeat(3, 1fr);
15178
- }
15179
-
15180
- /* ─── Print ────────────────────────────────────────────── */
15181
-
15182
- @media print {
15183
- .muka-chat-photo-grid {
15184
- break-inside: avoid;
15185
- }
15186
-
15187
- .muka-chat-photo-grid__image {
15188
- print-color-adjust: exact;
15189
- -webkit-print-color-adjust: exact;
15190
- }
15191
- }
15192
-