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