@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
@@ -1662,8 +1662,7 @@ body {
1662
1662
  --card-border-pressed: 0.125rem solid #b4b4b4;
1663
1663
  --card-border-selected: 0.125rem solid #b4b4b4;
1664
1664
  --chat-column-max-width: 768px;
1665
- --chatbubble-max-width: 37rem;
1666
- --chatbubble-max-width-ratio: 77%;
1665
+ --chatbubble-max-width: 600px;
1667
1666
  --chatbubble-radius: 0px;
1668
1667
  --chatbubble-padding-block: 0.75rem;
1669
1668
  --chatbubble-padding-inline: 1rem;
@@ -4718,6 +4717,241 @@ body {
4718
4717
  }
4719
4718
 
4720
4719
 
4720
+ /* SpecList */
4721
+ /* SpecList Component Styles */
4722
+
4723
+ .muka-spec-list {
4724
+ margin: 0;
4725
+ padding: 0;
4726
+ }
4727
+
4728
+ /* ─── Row ─────────────────────────────────────────────── */
4729
+
4730
+ .muka-spec-row {
4731
+ display: flex;
4732
+ align-items: flex-start;
4733
+ gap: var(--spacing-3);
4734
+ padding-bottom: var(--spacing-3);
4735
+ }
4736
+
4737
+ /* ─── Label ───────────────────────────────────────────── */
4738
+
4739
+ .muka-spec-row__label {
4740
+ flex: 0 0 auto;
4741
+ margin: 0;
4742
+ color: var(--color-text-subtle-default);
4743
+ font-family: var(--text-body-base-regular-fontFamily);
4744
+ font-weight: var(--text-body-base-regular-fontWeight);
4745
+ font-size: var(--text-body-base-regular-fontSize);
4746
+ line-height: var(--text-body-base-regular-lineHeight);
4747
+ overflow: hidden;
4748
+ text-overflow: ellipsis;
4749
+ white-space: nowrap;
4750
+ }
4751
+
4752
+ /* ─── Value ───────────────────────────────────────────── */
4753
+
4754
+ .muka-spec-row__value {
4755
+ flex: 1 1 0;
4756
+ min-width: 0;
4757
+ margin: 0;
4758
+ display: flex;
4759
+ flex-direction: column;
4760
+ color: var(--color-text-default-default);
4761
+ }
4762
+
4763
+ .muka-spec-row__value-text {
4764
+ font-family: var(--text-body-base-regular-fontFamily);
4765
+ font-weight: var(--text-body-base-regular-fontWeight);
4766
+ font-size: var(--text-body-base-regular-fontSize);
4767
+ line-height: var(--text-body-base-regular-lineHeight);
4768
+ }
4769
+
4770
+ .muka-spec-row__hint {
4771
+ color: var(--color-text-subtle-default);
4772
+ font-family: var(--text-body-sm-regular-fontFamily);
4773
+ font-weight: var(--text-body-sm-regular-fontWeight);
4774
+ font-size: var(--text-body-sm-regular-fontSize);
4775
+ line-height: var(--text-body-sm-regular-lineHeight);
4776
+ }
4777
+
4778
+ /* ─── Label width (horizontal stacking) ───────────────── */
4779
+
4780
+ .muka-spec-list--label-small .muka-spec-row__label {
4781
+ width: 80px;
4782
+ }
4783
+
4784
+ .muka-spec-list--label-medium .muka-spec-row__label {
4785
+ width: 120px;
4786
+ }
4787
+
4788
+ .muka-spec-list--label-large .muka-spec-row__label {
4789
+ width: 160px;
4790
+ }
4791
+
4792
+ /* ─── Vertical stacking ───────────────────────────────── */
4793
+
4794
+ .muka-spec-list--vertical .muka-spec-row {
4795
+ flex-direction: column;
4796
+ gap: var(--spacing-1);
4797
+ }
4798
+
4799
+ .muka-spec-list--vertical .muka-spec-row__label {
4800
+ width: 100%;
4801
+ white-space: normal;
4802
+ }
4803
+
4804
+
4805
+ /* SocialSignInButton */
4806
+ /*
4807
+ * SocialSignInButton lockup colors are provider-mandated (Apple HIG /
4808
+ * Google Identity branding) and intentionally fixed across Muka brands —
4809
+ * same exception pattern as LicensePlateInput regulatory colors.
4810
+ *
4811
+ * Apple: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple
4812
+ * Google: https://developers.google.com/identity/branding-guidelines
4813
+ */
4814
+ .muka-social-sign-in-button {
4815
+ --ssi-white: #ffffff;
4816
+ --ssi-black: #000000;
4817
+ --ssi-google-text-light: #1f1f1f;
4818
+
4819
+ display: inline-flex;
4820
+ align-items: center;
4821
+ justify-content: center;
4822
+
4823
+ /* Provider lockup type — matches Figma / HIG, not brand font tokens.
4824
+ * SF Pro Text is OS-provided on Apple platforms (not redistributable).
4825
+ * Google Sans is not freely shippable; Roboto is the closest system fallback. */
4826
+ font-family: inherit;
4827
+ font-weight: 600;
4828
+ text-decoration: none;
4829
+ white-space: nowrap;
4830
+
4831
+ border: 1px solid transparent;
4832
+ cursor: pointer;
4833
+ user-select: none;
4834
+ transition: opacity 0.15s ease, filter 0.15s ease;
4835
+
4836
+ outline: none;
4837
+ position: relative;
4838
+ box-sizing: border-box;
4839
+ }
4840
+
4841
+ .muka-social-sign-in-button--apple {
4842
+ font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
4843
+ Helvetica, Arial, sans-serif;
4844
+ font-weight: 600;
4845
+ }
4846
+
4847
+ .muka-social-sign-in-button--google {
4848
+ font-family: 'Google Sans', Roboto, 'Helvetica Neue', Arial, sans-serif;
4849
+ font-weight: 500;
4850
+ }
4851
+
4852
+ .muka-social-sign-in-button:focus-visible {
4853
+ outline: 2px solid var(--color-border-focus);
4854
+ outline-offset: 2px;
4855
+ }
4856
+
4857
+ /* Sizes — heights align with Button md/lg */
4858
+ .muka-social-sign-in-button--md {
4859
+ padding: 0 var(--button-padding-md-x);
4860
+ border-radius: var(--button-radius-md);
4861
+ font-size: var(--text-label-sm-semibold-fontSize);
4862
+ line-height: var(--text-label-sm-semibold-lineHeight);
4863
+ min-height: 40px;
4864
+ min-width: 240px;
4865
+ }
4866
+
4867
+ .muka-social-sign-in-button--md .muka-social-sign-in-button__label {
4868
+ padding: 0 var(--button-gap-md);
4869
+ }
4870
+
4871
+ .muka-social-sign-in-button--md .muka-social-sign-in-button__icon {
4872
+ width: var(--button-icon-md);
4873
+ height: var(--button-icon-md);
4874
+ }
4875
+
4876
+ .muka-social-sign-in-button--lg {
4877
+ padding: 0 var(--button-padding-lg-x);
4878
+ border-radius: var(--button-radius-lg);
4879
+ font-size: var(--text-label-lg-semibold-fontSize);
4880
+ line-height: var(--text-label-lg-semibold-lineHeight);
4881
+ min-height: 48px;
4882
+ min-width: 280px;
4883
+ }
4884
+
4885
+ .muka-social-sign-in-button--lg .muka-social-sign-in-button__label {
4886
+ padding: 0 var(--button-gap-lg);
4887
+ }
4888
+
4889
+ .muka-social-sign-in-button--lg .muka-social-sign-in-button__icon {
4890
+ width: var(--button-icon-lg);
4891
+ height: var(--button-icon-lg);
4892
+ }
4893
+
4894
+ /* White lockup — for dark surfaces (Apple White with Outline) */
4895
+ .muka-social-sign-in-button--white {
4896
+ background-color: var(--ssi-white);
4897
+ color: var(--ssi-black);
4898
+ border-color: var(--ssi-black);
4899
+ }
4900
+
4901
+ .muka-social-sign-in-button--white.muka-social-sign-in-button--google {
4902
+ color: var(--ssi-google-text-light);
4903
+ }
4904
+
4905
+ /* Black lockup — for light surfaces */
4906
+ .muka-social-sign-in-button--black {
4907
+ background-color: var(--ssi-black);
4908
+ color: var(--ssi-white);
4909
+ border-color: transparent;
4910
+ }
4911
+
4912
+ /* Interaction — luminance/opacity only; no brand tint */
4913
+ .muka-social-sign-in-button:hover:not(:disabled) {
4914
+ filter: brightness(0.92);
4915
+ }
4916
+
4917
+ .muka-social-sign-in-button:active:not(:disabled) {
4918
+ filter: brightness(0.85);
4919
+ }
4920
+
4921
+ .muka-social-sign-in-button:disabled,
4922
+ .muka-social-sign-in-button--disabled {
4923
+ cursor: not-allowed;
4924
+ opacity: 0.4;
4925
+ pointer-events: none;
4926
+ filter: none;
4927
+ }
4928
+
4929
+ .muka-social-sign-in-button--full-width {
4930
+ width: 100%;
4931
+ min-width: 0;
4932
+ }
4933
+
4934
+ .muka-social-sign-in-button__icon {
4935
+ display: inline-flex;
4936
+ align-items: center;
4937
+ justify-content: center;
4938
+ flex-shrink: 0;
4939
+ }
4940
+
4941
+ .muka-social-sign-in-button__icon > *,
4942
+ .muka-social-sign-in-button__icon svg {
4943
+ width: auto;
4944
+ height: 100%;
4945
+ max-width: 100%;
4946
+ display: block;
4947
+ }
4948
+
4949
+ .muka-social-sign-in-button__label {
4950
+ display: inline-flex;
4951
+ align-items: center;
4952
+ }
4953
+
4954
+
4721
4955
  /* SmsOtpField */
4722
4956
  /* SmsOtpField Component Styles - Using Muka Design Tokens */
4723
4957
 
@@ -4910,138 +5144,53 @@ body {
4910
5144
  }
4911
5145
 
4912
5146
 
4913
- /* SpecList */
4914
- /* SpecList Component Styles */
5147
+ /* Skeleton */
5148
+ /* Skeleton Component Styles */
4915
5149
 
4916
- .muka-spec-list {
4917
- margin: 0;
4918
- padding: 0;
5150
+ .muka-skeleton {
5151
+ background-color: var(--color-surface-level1);
5152
+ display: block;
4919
5153
  }
4920
5154
 
4921
- /* ─── Row ─────────────────────────────────────────────── */
4922
-
4923
- .muka-spec-row {
4924
- display: flex;
4925
- align-items: flex-start;
4926
- gap: var(--spacing-3);
4927
- padding-bottom: var(--spacing-3);
5155
+ /* Variants */
5156
+ .muka-skeleton--text {
5157
+ height: 1em;
5158
+ border-radius: var(--radius-md);
5159
+ width: 100%;
4928
5160
  }
4929
5161
 
4930
- /* ─── Label ───────────────────────────────────────────── */
5162
+ .muka-skeleton--circular {
5163
+ width: 2.5rem;
5164
+ height: 2.5rem;
5165
+ border-radius: var(--radius-full);
5166
+ }
4931
5167
 
4932
- .muka-spec-row__label {
4933
- flex: 0 0 auto;
4934
- margin: 0;
4935
- color: var(--color-text-subtle-default);
4936
- font-family: var(--text-body-base-regular-fontFamily);
4937
- font-weight: var(--text-body-base-regular-fontWeight);
4938
- font-size: var(--text-body-base-regular-fontSize);
4939
- line-height: var(--text-body-base-regular-lineHeight);
4940
- overflow: hidden;
4941
- text-overflow: ellipsis;
4942
- white-space: nowrap;
5168
+ .muka-skeleton--rectangular {
5169
+ height: 7.5rem;
5170
+ border-radius: var(--radius-md);
5171
+ width: 100%;
4943
5172
  }
4944
5173
 
4945
- /* ─── Value ───────────────────────────────────────────── */
5174
+ /* Last line in multi-line text is shorter */
5175
+ .muka-skeleton--last-line {
5176
+ width: 80%;
5177
+ }
4946
5178
 
4947
- .muka-spec-row__value {
4948
- flex: 1 1 0;
4949
- min-width: 0;
4950
- margin: 0;
5179
+ /* Lines container */
5180
+ .muka-skeleton__lines {
4951
5181
  display: flex;
4952
5182
  flex-direction: column;
4953
- color: var(--color-text-default-default);
5183
+ gap: var(--spacing-2);
4954
5184
  }
4955
5185
 
4956
- .muka-spec-row__value-text {
4957
- font-family: var(--text-body-base-regular-fontFamily);
4958
- font-weight: var(--text-body-base-regular-fontWeight);
4959
- font-size: var(--text-body-base-regular-fontSize);
4960
- line-height: var(--text-body-base-regular-lineHeight);
4961
- }
4962
-
4963
- .muka-spec-row__hint {
4964
- color: var(--color-text-subtle-default);
4965
- font-family: var(--text-body-sm-regular-fontFamily);
4966
- font-weight: var(--text-body-sm-regular-fontWeight);
4967
- font-size: var(--text-body-sm-regular-fontSize);
4968
- line-height: var(--text-body-sm-regular-lineHeight);
4969
- }
4970
-
4971
- /* ─── Label width (horizontal stacking) ───────────────── */
4972
-
4973
- .muka-spec-list--label-small .muka-spec-row__label {
4974
- width: 80px;
4975
- }
4976
-
4977
- .muka-spec-list--label-medium .muka-spec-row__label {
4978
- width: 120px;
4979
- }
4980
-
4981
- .muka-spec-list--label-large .muka-spec-row__label {
4982
- width: 160px;
4983
- }
4984
-
4985
- /* ─── Vertical stacking ───────────────────────────────── */
4986
-
4987
- .muka-spec-list--vertical .muka-spec-row {
4988
- flex-direction: column;
4989
- gap: var(--spacing-1);
4990
- }
4991
-
4992
- .muka-spec-list--vertical .muka-spec-row__label {
4993
- width: 100%;
4994
- white-space: normal;
4995
- }
4996
-
4997
-
4998
- /* Skeleton */
4999
- /* Skeleton Component Styles */
5000
-
5001
- .muka-skeleton {
5002
- background-color: var(--color-surface-level1);
5003
- display: block;
5004
- }
5005
-
5006
- /* Variants */
5007
- .muka-skeleton--text {
5008
- height: 1em;
5009
- border-radius: var(--radius-md);
5010
- width: 100%;
5011
- }
5012
-
5013
- .muka-skeleton--circular {
5014
- width: 2.5rem;
5015
- height: 2.5rem;
5016
- border-radius: var(--radius-full);
5017
- }
5018
-
5019
- .muka-skeleton--rectangular {
5020
- height: 7.5rem;
5021
- border-radius: var(--radius-md);
5022
- width: 100%;
5023
- }
5024
-
5025
- /* Last line in multi-line text is shorter */
5026
- .muka-skeleton--last-line {
5027
- width: 80%;
5028
- }
5029
-
5030
- /* Lines container */
5031
- .muka-skeleton__lines {
5032
- display: flex;
5033
- flex-direction: column;
5034
- gap: var(--spacing-2);
5035
- }
5036
-
5037
- /* Shimmer animation */
5038
- @keyframes muka-skeleton-shimmer {
5039
- 0% {
5040
- background-position: -200% 0;
5041
- }
5042
- 100% {
5043
- background-position: 200% 0;
5044
- }
5186
+ /* Shimmer animation */
5187
+ @keyframes muka-skeleton-shimmer {
5188
+ 0% {
5189
+ background-position: -200% 0;
5190
+ }
5191
+ 100% {
5192
+ background-position: 200% 0;
5193
+ }
5045
5194
  }
5046
5195
 
5047
5196
  .muka-skeleton--shimmer {
@@ -5532,6 +5681,29 @@ body {
5532
5681
  }
5533
5682
 
5534
5683
 
5684
+ /* Section */
5685
+ /* Section Component - Layout tokens (section.padding) */
5686
+
5687
+ .muka-section {
5688
+ box-sizing: border-box;
5689
+ }
5690
+
5691
+ .muka-section--padding-compact {
5692
+ padding-block: var(--section-padding-vertical-compact);
5693
+ padding-inline: var(--section-padding-horizontal-compact);
5694
+ }
5695
+
5696
+ .muka-section--padding-default {
5697
+ padding-block: var(--section-padding-vertical-default);
5698
+ padding-inline: var(--section-padding-horizontal-default);
5699
+ }
5700
+
5701
+ .muka-section--padding-spacious {
5702
+ padding-block: var(--section-padding-vertical-spacious);
5703
+ padding-inline: var(--section-padding-horizontal-spacious);
5704
+ }
5705
+
5706
+
5535
5707
  /* SearchInput */
5536
5708
  /* SearchInput Component Styles */
5537
5709
 
@@ -5701,79 +5873,6 @@ body {
5701
5873
  }
5702
5874
 
5703
5875
 
5704
- /* Section */
5705
- /* Section Component - Layout tokens (section.padding) */
5706
-
5707
- .muka-section {
5708
- box-sizing: border-box;
5709
- }
5710
-
5711
- .muka-section--padding-compact {
5712
- padding-block: var(--section-padding-vertical-compact);
5713
- padding-inline: var(--section-padding-horizontal-compact);
5714
- }
5715
-
5716
- .muka-section--padding-default {
5717
- padding-block: var(--section-padding-vertical-default);
5718
- padding-inline: var(--section-padding-horizontal-default);
5719
- }
5720
-
5721
- .muka-section--padding-spacious {
5722
- padding-block: var(--section-padding-vertical-spacious);
5723
- padding-inline: var(--section-padding-horizontal-spacious);
5724
- }
5725
-
5726
-
5727
- /* RecordingBar */
5728
- /* RecordingBar Component Styles */
5729
-
5730
- .muka-recording-bar {
5731
- display: flex;
5732
- align-items: center;
5733
- gap: var(--spacing-3);
5734
- width: 100%;
5735
- min-width: 0;
5736
- }
5737
-
5738
- .muka-recording-bar__dot {
5739
- flex: 0 0 auto;
5740
- width: 0.625rem;
5741
- height: 0.625rem;
5742
- border-radius: var(--radius-full, 9999px);
5743
- background: var(--alert-color-error-accent, var(--color-text-default-default));
5744
- animation: muka-recording-bar-pulse 1s ease-in-out infinite;
5745
- }
5746
-
5747
- .muka-recording-bar__time {
5748
- flex: 0 0 auto;
5749
- font-size: var(--text-label-sm-fontSize, 0.75rem);
5750
- line-height: var(--text-label-sm-lineHeight, 1);
5751
- font-variant-numeric: tabular-nums;
5752
- color: var(--color-text-default-default);
5753
- }
5754
-
5755
- .muka-recording-bar__wave {
5756
- flex: 1 1 auto;
5757
- min-width: 0;
5758
- }
5759
-
5760
- @keyframes muka-recording-bar-pulse {
5761
- 0%,
5762
- 100% {
5763
- opacity: 1;
5764
- }
5765
- 50% {
5766
- opacity: 0.3;
5767
- }
5768
- }
5769
-
5770
- @media (prefers-reduced-motion: reduce) {
5771
- .muka-recording-bar__dot {
5772
- animation: none;
5773
- }
5774
- }
5775
-
5776
-
5777
5876
  /* Scrollbar */
5778
5877
  /* Scrollbar — Figma menu scrollbar (32px rail, chevrons, grip thumb) */
5779
5878
 
@@ -5901,6 +6000,56 @@ body {
5901
6000
  }
5902
6001
 
5903
6002
 
6003
+ /* RecordingBar */
6004
+ /* RecordingBar Component Styles */
6005
+
6006
+ .muka-recording-bar {
6007
+ display: flex;
6008
+ align-items: center;
6009
+ gap: var(--spacing-3);
6010
+ width: 100%;
6011
+ min-width: 0;
6012
+ }
6013
+
6014
+ .muka-recording-bar__dot {
6015
+ flex: 0 0 auto;
6016
+ width: 0.625rem;
6017
+ height: 0.625rem;
6018
+ border-radius: var(--radius-full, 9999px);
6019
+ background: var(--alert-color-error-accent, var(--color-text-default-default));
6020
+ animation: muka-recording-bar-pulse 1s ease-in-out infinite;
6021
+ }
6022
+
6023
+ .muka-recording-bar__time {
6024
+ flex: 0 0 auto;
6025
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
6026
+ line-height: var(--text-label-sm-lineHeight, 1);
6027
+ font-variant-numeric: tabular-nums;
6028
+ color: var(--color-text-default-default);
6029
+ }
6030
+
6031
+ .muka-recording-bar__wave {
6032
+ flex: 1 1 auto;
6033
+ min-width: 0;
6034
+ }
6035
+
6036
+ @keyframes muka-recording-bar-pulse {
6037
+ 0%,
6038
+ 100% {
6039
+ opacity: 1;
6040
+ }
6041
+ 50% {
6042
+ opacity: 0.3;
6043
+ }
6044
+ }
6045
+
6046
+ @media (prefers-reduced-motion: reduce) {
6047
+ .muka-recording-bar__dot {
6048
+ animation: none;
6049
+ }
6050
+ }
6051
+
6052
+
5904
6053
  /* RangeSlider */
5905
6054
  /* RangeSlider Component Styles - Using Muka Design Tokens */
5906
6055
 
@@ -6260,81 +6409,34 @@ body {
6260
6409
  }
6261
6410
 
6262
6411
 
6263
- /* PullToRefresh */
6264
- /* PullToRefresh Component Styles */
6412
+ /* Radio */
6413
+ /* Radio Component Styles - Using Muka Design Tokens */
6265
6414
 
6266
- .muka-pull-to-refresh {
6415
+ /* Wrapper - clickable label container */
6416
+ .muka-radio {
6417
+ display: inline-flex;
6418
+ align-items: center;
6419
+ gap: var(--spacing-4);
6420
+ cursor: pointer;
6421
+ user-select: none;
6422
+ }
6423
+
6424
+ .muka-radio--disabled {
6425
+ cursor: not-allowed;
6426
+ opacity: 0.6;
6427
+ }
6428
+
6429
+ /* Control container */
6430
+ .muka-radio__control {
6267
6431
  position: relative;
6268
- display: flex;
6269
- flex-direction: column;
6270
- width: 100%;
6271
- height: 100%;
6272
- overflow: hidden;
6432
+ display: inline-flex;
6433
+ align-items: center;
6434
+ justify-content: center;
6435
+ flex-shrink: 0;
6273
6436
  }
6274
6437
 
6275
- .muka-pull-to-refresh__indicator {
6276
- position: absolute;
6277
- top: 0;
6278
- left: 0;
6279
- right: 0;
6280
- display: flex;
6281
- align-items: flex-end;
6282
- justify-content: center;
6283
- padding-bottom: var(--spacing-2);
6284
- color: var(--color-text-subtle-default);
6285
- overflow: hidden;
6286
- pointer-events: none;
6287
- z-index: 1;
6288
- }
6289
-
6290
- .muka-pull-to-refresh__chevron {
6291
- display: inline-flex;
6292
- align-items: center;
6293
- justify-content: center;
6294
- transition: transform 0.16s ease;
6295
- }
6296
-
6297
- .muka-pull-to-refresh__scroller {
6298
- flex: 1 1 auto;
6299
- min-height: 0;
6300
- width: 100%;
6301
- overflow-x: clip;
6302
- overflow-y: auto;
6303
- -webkit-overflow-scrolling: touch;
6304
- overscroll-behavior-y: contain;
6305
- touch-action: pan-y;
6306
- will-change: transform;
6307
- }
6308
-
6309
-
6310
- /* Radio */
6311
- /* Radio Component Styles - Using Muka Design Tokens */
6312
-
6313
- /* Wrapper - clickable label container */
6314
- .muka-radio {
6315
- display: inline-flex;
6316
- align-items: center;
6317
- gap: var(--spacing-4);
6318
- cursor: pointer;
6319
- user-select: none;
6320
- }
6321
-
6322
- .muka-radio--disabled {
6323
- cursor: not-allowed;
6324
- opacity: 0.6;
6325
- }
6326
-
6327
- /* Control container */
6328
- .muka-radio__control {
6329
- position: relative;
6330
- display: inline-flex;
6331
- align-items: center;
6332
- justify-content: center;
6333
- flex-shrink: 0;
6334
- }
6335
-
6336
- /* Hidden native input */
6337
- .muka-radio__input {
6438
+ /* Hidden native input */
6439
+ .muka-radio__input {
6338
6440
  position: absolute;
6339
6441
  width: 1px;
6340
6442
  height: 1px;
@@ -6451,117 +6553,141 @@ body {
6451
6553
  }
6452
6554
 
6453
6555
 
6454
- /* ProgressAccordeon */
6455
- /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
6556
+ /* PullToRefresh */
6557
+ /* PullToRefresh Component Styles */
6456
6558
 
6457
- /* ─── Root ──────────────────────────────────────────────── */
6458
- .muka-progress-accordeon {
6459
- container-type: inline-size;
6559
+ .muka-pull-to-refresh {
6560
+ position: relative;
6460
6561
  display: flex;
6461
6562
  flex-direction: column;
6462
- align-items: stretch;
6463
6563
  width: 100%;
6464
- /* Top padding provides the vertical rhythm between stacked steps */
6465
- padding-top: var(--spacing-8);
6564
+ height: 100%;
6565
+ overflow: hidden;
6466
6566
  }
6467
6567
 
6468
- /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6469
- .muka-progress-accordeon--current,
6470
- .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
6471
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
6472
- gap: var(--spacing-6);
6568
+ .muka-pull-to-refresh__indicator {
6569
+ position: absolute;
6570
+ top: 0;
6571
+ left: 0;
6572
+ right: 0;
6573
+ display: flex;
6574
+ align-items: flex-end;
6575
+ justify-content: center;
6576
+ padding-bottom: var(--spacing-2);
6577
+ color: var(--color-text-subtle-default);
6578
+ overflow: hidden;
6579
+ pointer-events: none;
6580
+ z-index: 1;
6473
6581
  }
6474
6582
 
6475
- .muka-progress-accordeon--upcoming,
6476
- .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
6477
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
6478
- gap: var(--spacing-8);
6583
+ .muka-pull-to-refresh__chevron {
6584
+ display: inline-flex;
6585
+ align-items: center;
6586
+ justify-content: center;
6587
+ transition: transform 0.16s ease;
6479
6588
  }
6480
6589
 
6481
- /* Collapsible steps group header + slot. The header↔content gap lives inside the
6482
- collapsing slot (as padding-top) so it collapses with the content, so the
6483
- body gap itself is 0. */
6484
- .muka-progress-accordeon__body {
6485
- display: flex;
6486
- flex-direction: column;
6487
- gap: 0;
6590
+ .muka-pull-to-refresh__scroller {
6591
+ flex: 1 1 auto;
6592
+ min-height: 0;
6488
6593
  width: 100%;
6594
+ overflow-x: clip;
6595
+ overflow-y: auto;
6596
+ -webkit-overflow-scrolling: touch;
6597
+ overscroll-behavior-y: contain;
6598
+ touch-action: pan-y;
6599
+ will-change: transform;
6489
6600
  }
6490
6601
 
6491
- /* ─── Header ─────────────────────────────────────────────── */
6492
- .muka-progress-accordeon__header {
6493
- display: flex;
6494
- flex-direction: column;
6495
- gap: var(--spacing-3);
6602
+
6603
+ /* ProgressTracker */
6604
+ /* ProgressTracker Component Styles — Using Muka Design Tokens */
6605
+
6606
+ /* ─── Root ──────────────────────────────────────────────── */
6607
+ .muka-progress-tracker {
6496
6608
  width: 100%;
6497
6609
  }
6498
6610
 
6499
- .muka-progress-accordeon__header-row {
6500
- display: flex;
6501
- align-items: flex-start;
6502
- gap: var(--spacing-3);
6503
- width: 100%;
6504
- min-height: 40px;
6611
+ .muka-progress-tracker--horizontal {
6612
+ padding-bottom: var(--spacing-7);
6505
6613
  }
6506
6614
 
6507
- .muka-progress-accordeon__heading-group {
6508
- display: flex;
6509
- flex: 1 0 0;
6510
- min-width: 0;
6511
- align-items: flex-start;
6512
- gap: var(--spacing-4);
6615
+ /* ─── Track (layered container) ─────────────────────────── */
6616
+ .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6617
+ position: relative;
6618
+ /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6619
+ padding-top: 14px;
6620
+ padding-bottom: 14px;
6513
6621
  }
6514
6622
 
6515
- /* Steps with header controls (edit / chevron) are 40px tall; nudge the heading
6516
- so a single line centres against the indicator + controls row. */
6517
- .muka-progress-accordeon:has(.muka-progress-accordeon__controls)
6518
- .muka-progress-accordeon__heading-group {
6519
- padding-top: var(--spacing-1);
6623
+ /* ─── Steps layer (on top) — horizontal ─────────────────── */
6624
+ .muka-progress-tracker--horizontal .muka-progress-tracker__steps {
6625
+ position: absolute;
6626
+ inset: 0;
6627
+ display: flex;
6628
+ align-items: flex-start;
6629
+ justify-content: space-between;
6630
+ z-index: 2;
6520
6631
  }
6521
6632
 
6522
- .muka-progress-accordeon__controls {
6633
+ /* ─── Individual step — horizontal ──────────────────────── */
6634
+ .muka-progress-tracker--horizontal .muka-progress-tracker__step {
6523
6635
  display: flex;
6524
- flex-shrink: 0;
6636
+ flex-direction: column;
6525
6637
  align-items: center;
6526
- gap: var(--spacing-3);
6638
+ position: relative;
6639
+ /* Labels are absolutely positioned so the step stays 32px and
6640
+ circle centers line up with the connector padding. */
6641
+ width: 32px;
6642
+ flex: 0 0 32px;
6527
6643
  }
6528
6644
 
6529
6645
  /* ─── Step indicator (circle) ───────────────────────────── */
6530
- .muka-progress-accordeon__indicator {
6646
+ .muka-progress-tracker__indicator {
6531
6647
  width: 32px;
6532
6648
  height: 32px;
6533
- flex-shrink: 0;
6534
6649
  border-radius: var(--border-radius-full);
6535
6650
  display: flex;
6536
6651
  align-items: center;
6537
6652
  justify-content: center;
6653
+ flex-shrink: 0;
6654
+ position: relative;
6655
+ z-index: 1;
6538
6656
  }
6539
6657
 
6540
- /* Past: dark accent-contrast circle with inverse checkmark */
6541
- .muka-progress-accordeon__indicator--past {
6658
+ /* Past: dark accent contrast circle with white checkmark */
6659
+ .muka-progress-tracker__indicator--past {
6542
6660
  background-color: var(--alias-color-accent-contrast);
6543
6661
  color: var(--color-text-default-inverse);
6544
6662
  }
6545
6663
 
6546
- /* Current: accent circle with inverse bold number */
6547
- .muka-progress-accordeon__indicator--current {
6664
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past {
6665
+ cursor: pointer;
6666
+ }
6667
+
6668
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:hover {
6669
+ background-color: var(--alias-color-accent-pressed);
6670
+ }
6671
+
6672
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:focus-visible {
6673
+ outline: 2px solid var(--color-border-focus);
6674
+ outline-offset: 2px;
6675
+ }
6676
+
6677
+ /* Current: accent default circle with white number */
6678
+ .muka-progress-tracker__indicator--current {
6548
6679
  background-color: var(--alias-color-accent-default);
6549
6680
  color: var(--color-text-default-inverse);
6550
6681
  }
6551
6682
 
6552
- /* Upcoming: sunken/muted circle with default-color number */
6553
- .muka-progress-accordeon__indicator--upcoming {
6683
+ /* Upcoming: sunken/gray circle with dark number */
6684
+ .muka-progress-tracker__indicator--upcoming {
6554
6685
  background-color: var(--color-surface-sunken);
6555
6686
  color: var(--color-text-default-default);
6556
6687
  }
6557
6688
 
6558
- .muka-progress-accordeon__check-icon {
6559
- width: 20px;
6560
- height: 20px;
6561
- color: var(--color-text-default-inverse);
6562
- }
6563
-
6564
- .muka-progress-accordeon__number {
6689
+ /* ─── Step number text ──────────────────────────────────── */
6690
+ .muka-progress-tracker__number {
6565
6691
  font-family: var(--text-label-md-bold-fontFamily);
6566
6692
  font-weight: var(--text-label-md-bold-fontWeight);
6567
6693
  font-size: var(--text-label-md-bold-fontSize);
@@ -6570,249 +6696,28 @@ body {
6570
6696
  user-select: none;
6571
6697
  }
6572
6698
 
6573
- /* Upcoming number is semibold (not bold) per Figma */
6574
- .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
6699
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6700
+ font-family: var(--text-label-md-bold-fontFamily);
6701
+ font-weight: var(--text-label-md-bold-fontWeight);
6702
+ }
6703
+
6704
+ .muka-progress-tracker--vertical .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6575
6705
  font-family: var(--text-label-md-semibold-fontFamily);
6576
6706
  font-weight: var(--text-label-md-semibold-fontWeight);
6707
+ font-size: var(--text-label-md-semibold-fontSize);
6708
+ line-height: var(--text-label-md-semibold-lineHeight);
6577
6709
  }
6578
6710
 
6579
- /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
6580
- .muka-progress-accordeon__heading {
6581
- flex: 1 0 0;
6582
- min-width: 0;
6583
- margin: 0;
6584
- font-family: var(--text-heading-md-fontFamily);
6585
- font-weight: var(--text-heading-md-fontWeight);
6586
- font-size: var(--text-heading-md-fontSize);
6587
- line-height: var(--text-heading-md-lineHeight);
6588
- letter-spacing: var(--text-heading-md-letterSpacing);
6589
- color: var(--color-text-default-default);
6711
+ /* ─── Checkmark icon ────────────────────────────────────── */
6712
+ .muka-progress-tracker__check-icon {
6713
+ width: 20px;
6714
+ height: 20px;
6590
6715
  }
6591
6716
 
6592
- /* ─── Description ────────────────────────────────────────── */
6593
- /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
6594
- .muka-progress-accordeon__description {
6595
- width: 100%;
6596
- padding-left: 48px;
6597
- font-family: var(--text-body-base-regular-fontFamily);
6598
- font-weight: var(--text-body-base-regular-fontWeight);
6599
- font-size: var(--text-body-base-regular-fontSize);
6600
- line-height: var(--text-body-base-regular-lineHeight);
6601
- color: var(--color-text-default-default);
6602
- }
6603
-
6604
- /* ─── Edit button ────────────────────────────────────────── */
6605
- .muka-progress-accordeon__edit {
6606
- flex-shrink: 0;
6607
- }
6608
-
6609
- /* Wide container shows the labelled button; the icon-only one is hidden */
6610
- .muka-progress-accordeon__edit--narrow {
6611
- display: none;
6612
- }
6613
-
6614
- /* ─── Content slot ───────────────────────────────────────── */
6615
- .muka-progress-accordeon__slot {
6616
- display: flex;
6617
- flex-direction: column;
6618
- align-items: stretch;
6619
- width: 100%;
6620
- }
6621
-
6622
- /* ─── Collapse/expand animation (past & upcoming steps) ──────
6623
- The grid-template-rows 1fr → 0fr technique animates the content to/from its
6624
- intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
6625
- --motion-duration-view resolves to 0ms, so the toggle stays instant. */
6626
- .muka-progress-accordeon__slot-wrapper {
6627
- display: grid;
6628
- grid-template-rows: 1fr;
6629
- transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
6630
- }
6631
-
6632
- .muka-progress-accordeon__slot-wrapper--collapsed {
6633
- grid-template-rows: 0fr;
6634
- }
6635
-
6636
- /* The direct grid child clips and must have NO padding/border of its own —
6637
- min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
6638
- 0 height (padding on the item would leave a residual gap when collapsed). */
6639
- .muka-progress-accordeon__slot-clip {
6640
- overflow: hidden;
6641
- min-height: 0;
6642
- }
6643
-
6644
- /* The header↔content spacing lives on the inner slot (inside the clip region)
6645
- so it collapses together with the content. */
6646
- .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
6647
- padding-top: var(--spacing-4);
6648
- }
6649
-
6650
- /* ─── Action buttons (current state) ─────────────────────── */
6651
- .muka-progress-accordeon__actions {
6652
- display: flex;
6653
- justify-content: flex-end;
6654
- gap: var(--spacing-4);
6655
- width: 100%;
6656
- }
6657
-
6658
- .muka-progress-accordeon__action {
6659
- min-width: 160px;
6660
- }
6661
-
6662
- /* ─── Divider ────────────────────────────────────────────── */
6663
- .muka-progress-accordeon__divider {
6664
- width: 100%;
6665
- }
6666
-
6667
- /* ─── Responsive (narrow container) ──────────────────────── */
6668
- @container (max-width: 480px) {
6669
- /* Heading steps down to heading/sm. The 24px line-height is shorter than the
6670
- 32px step indicator, so nudge the text down to keep a single line centred. */
6671
- .muka-progress-accordeon__heading {
6672
- font-size: var(--text-heading-sm-fontSize);
6673
- line-height: var(--text-heading-sm-lineHeight);
6674
- padding-top: var(--spacing-1);
6675
- }
6676
-
6677
- /* Edit button swaps to the icon-only variant */
6678
- .muka-progress-accordeon__edit--wide {
6679
- display: none;
6680
- }
6681
-
6682
- .muka-progress-accordeon__edit--narrow {
6683
- display: inline-flex;
6684
- }
6685
-
6686
- /* Action buttons stretch to fill the row */
6687
- .muka-progress-accordeon__actions {
6688
- justify-content: stretch;
6689
- }
6690
-
6691
- .muka-progress-accordeon__action {
6692
- flex: 1 0 0;
6693
- min-width: 0;
6694
- }
6695
- }
6696
-
6697
-
6698
- /* ProgressTracker */
6699
- /* ProgressTracker Component Styles — Using Muka Design Tokens */
6700
-
6701
- /* ─── Root ──────────────────────────────────────────────── */
6702
- .muka-progress-tracker {
6703
- width: 100%;
6704
- }
6705
-
6706
- .muka-progress-tracker--horizontal {
6707
- padding-bottom: var(--spacing-7);
6708
- }
6709
-
6710
- /* ─── Track (layered container) ─────────────────────────── */
6711
- .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6712
- position: relative;
6713
- /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6714
- padding-top: 14px;
6715
- padding-bottom: 14px;
6716
- }
6717
-
6718
- /* ─── Steps layer (on top) — horizontal ─────────────────── */
6719
- .muka-progress-tracker--horizontal .muka-progress-tracker__steps {
6720
- position: absolute;
6721
- inset: 0;
6722
- display: flex;
6723
- align-items: flex-start;
6724
- justify-content: space-between;
6725
- z-index: 2;
6726
- }
6727
-
6728
- /* ─── Individual step — horizontal ──────────────────────── */
6729
- .muka-progress-tracker--horizontal .muka-progress-tracker__step {
6730
- display: flex;
6731
- flex-direction: column;
6732
- align-items: center;
6733
- position: relative;
6734
- /* Labels are absolutely positioned so the step stays 32px and
6735
- circle centers line up with the connector padding. */
6736
- width: 32px;
6737
- flex: 0 0 32px;
6738
- }
6739
-
6740
- /* ─── Step indicator (circle) ───────────────────────────── */
6741
- .muka-progress-tracker__indicator {
6742
- width: 32px;
6743
- height: 32px;
6744
- border-radius: var(--border-radius-full);
6745
- display: flex;
6746
- align-items: center;
6747
- justify-content: center;
6748
- flex-shrink: 0;
6749
- position: relative;
6750
- z-index: 1;
6751
- }
6752
-
6753
- /* Past: dark accent contrast circle with white checkmark */
6754
- .muka-progress-tracker__indicator--past {
6755
- background-color: var(--alias-color-accent-contrast);
6756
- color: var(--color-text-default-inverse);
6757
- }
6758
-
6759
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past {
6760
- cursor: pointer;
6761
- }
6762
-
6763
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:hover {
6764
- background-color: var(--alias-color-accent-pressed);
6765
- }
6766
-
6767
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:focus-visible {
6768
- outline: 2px solid var(--color-border-focus);
6769
- outline-offset: 2px;
6770
- }
6771
-
6772
- /* Current: accent default circle with white number */
6773
- .muka-progress-tracker__indicator--current {
6774
- background-color: var(--alias-color-accent-default);
6775
- color: var(--color-text-default-inverse);
6776
- }
6777
-
6778
- /* Upcoming: sunken/gray circle with dark number */
6779
- .muka-progress-tracker__indicator--upcoming {
6780
- background-color: var(--color-surface-sunken);
6781
- color: var(--color-text-default-default);
6782
- }
6783
-
6784
- /* ─── Step number text ──────────────────────────────────── */
6785
- .muka-progress-tracker__number {
6786
- font-family: var(--text-label-md-bold-fontFamily);
6787
- font-weight: var(--text-label-md-bold-fontWeight);
6788
- font-size: var(--text-label-md-bold-fontSize);
6789
- line-height: var(--text-label-md-bold-lineHeight);
6790
- text-align: center;
6791
- user-select: none;
6792
- }
6793
-
6794
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6795
- font-family: var(--text-label-md-bold-fontFamily);
6796
- font-weight: var(--text-label-md-bold-fontWeight);
6797
- }
6798
-
6799
- .muka-progress-tracker--vertical .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6800
- font-family: var(--text-label-md-semibold-fontFamily);
6801
- font-weight: var(--text-label-md-semibold-fontWeight);
6802
- font-size: var(--text-label-md-semibold-fontSize);
6803
- line-height: var(--text-label-md-semibold-lineHeight);
6804
- }
6805
-
6806
- /* ─── Checkmark icon ────────────────────────────────────── */
6807
- .muka-progress-tracker__check-icon {
6808
- width: 20px;
6809
- height: 20px;
6810
- }
6811
-
6812
- /* Past checkmark uses inverse foreground, matching the active step number.
6813
- Scoped under the indicator to override the Icon component's default color. */
6814
- .muka-progress-tracker__indicator--past .muka-progress-tracker__check-icon {
6815
- color: var(--color-text-default-inverse);
6717
+ /* Past checkmark uses inverse foreground, matching the active step number.
6718
+ Scoped under the indicator to override the Icon component's default color. */
6719
+ .muka-progress-tracker__indicator--past .muka-progress-tracker__check-icon {
6720
+ color: var(--color-text-default-inverse);
6816
6721
  }
6817
6722
 
6818
6723
  /* ─── Step label — horizontal ───────────────────────────── */
@@ -7112,74 +7017,247 @@ body {
7112
7017
  }
7113
7018
 
7114
7019
 
7115
- /* ProfileBadge */
7116
- /* ProfileBadge Component Styles - Using Muka Design Tokens */
7117
-
7118
- .muka-profile-badge {
7119
- display: inline-flex;
7120
- align-items: center;
7121
- font-family: var(--text-body-base-regular-fontFamily);
7122
- }
7020
+ /* ProgressAccordeon */
7021
+ /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
7123
7022
 
7124
- /* Size variants */
7125
- .muka-profile-badge--lg {
7126
- gap: var(--spacing-4); /* 16px */
7023
+ /* ─── Root ──────────────────────────────────────────────── */
7024
+ .muka-progress-accordeon {
7025
+ container-type: inline-size;
7026
+ display: flex;
7027
+ flex-direction: column;
7028
+ align-items: stretch;
7029
+ width: 100%;
7030
+ /* Top padding provides the vertical rhythm between stacked steps */
7031
+ padding-top: var(--spacing-8);
7127
7032
  }
7128
7033
 
7129
- .muka-profile-badge--md {
7130
- gap: var(--spacing-3); /* 12px */
7034
+ /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
7035
+ .muka-progress-accordeon--current,
7036
+ .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
7037
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
7038
+ gap: var(--spacing-6);
7131
7039
  }
7132
7040
 
7133
- .muka-profile-badge__avatar {
7134
- flex-shrink: 0;
7041
+ .muka-progress-accordeon--upcoming,
7042
+ .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
7043
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
7044
+ gap: var(--spacing-8);
7135
7045
  }
7136
7046
 
7137
- /* Text stack */
7138
- .muka-profile-badge__text {
7047
+ /* Collapsible steps group header + slot. The header↔content gap lives inside the
7048
+ collapsing slot (as padding-top) so it collapses with the content, so the
7049
+ body gap itself is 0. */
7050
+ .muka-progress-accordeon__body {
7139
7051
  display: flex;
7140
7052
  flex-direction: column;
7141
- align-items: flex-start;
7142
- min-width: 0;
7053
+ gap: 0;
7054
+ width: 100%;
7143
7055
  }
7144
7056
 
7145
- .muka-profile-badge__name {
7057
+ /* ─── Header ─────────────────────────────────────────────── */
7058
+ .muka-progress-accordeon__header {
7059
+ display: flex;
7060
+ flex-direction: column;
7061
+ gap: var(--spacing-3);
7062
+ width: 100%;
7063
+ }
7064
+
7065
+ .muka-progress-accordeon__header-row {
7066
+ display: flex;
7067
+ align-items: flex-start;
7068
+ gap: var(--spacing-3);
7069
+ width: 100%;
7070
+ min-height: 40px;
7071
+ }
7072
+
7073
+ .muka-progress-accordeon__heading-group {
7074
+ display: flex;
7075
+ flex: 1 0 0;
7076
+ min-width: 0;
7077
+ align-items: flex-start;
7078
+ gap: var(--spacing-4);
7079
+ }
7080
+
7081
+ /* Steps with header controls (edit / chevron) are 40px tall; nudge the heading
7082
+ so a single line centres against the indicator + controls row. */
7083
+ .muka-progress-accordeon:has(.muka-progress-accordeon__controls)
7084
+ .muka-progress-accordeon__heading-group {
7085
+ padding-top: var(--spacing-1);
7086
+ }
7087
+
7088
+ .muka-progress-accordeon__controls {
7089
+ display: flex;
7090
+ flex-shrink: 0;
7091
+ align-items: center;
7092
+ gap: var(--spacing-3);
7093
+ }
7094
+
7095
+ /* ─── Step indicator (circle) ───────────────────────────── */
7096
+ .muka-progress-accordeon__indicator {
7097
+ width: 32px;
7098
+ height: 32px;
7099
+ flex-shrink: 0;
7100
+ border-radius: var(--border-radius-full);
7101
+ display: flex;
7102
+ align-items: center;
7103
+ justify-content: center;
7104
+ }
7105
+
7106
+ /* Past: dark accent-contrast circle with inverse checkmark */
7107
+ .muka-progress-accordeon__indicator--past {
7108
+ background-color: var(--alias-color-accent-contrast);
7109
+ color: var(--color-text-default-inverse);
7110
+ }
7111
+
7112
+ /* Current: accent circle with inverse bold number */
7113
+ .muka-progress-accordeon__indicator--current {
7114
+ background-color: var(--alias-color-accent-default);
7115
+ color: var(--color-text-default-inverse);
7116
+ }
7117
+
7118
+ /* Upcoming: sunken/muted circle with default-color number */
7119
+ .muka-progress-accordeon__indicator--upcoming {
7120
+ background-color: var(--color-surface-sunken);
7121
+ color: var(--color-text-default-default);
7122
+ }
7123
+
7124
+ .muka-progress-accordeon__check-icon {
7125
+ width: 20px;
7126
+ height: 20px;
7127
+ color: var(--color-text-default-inverse);
7128
+ }
7129
+
7130
+ .muka-progress-accordeon__number {
7131
+ font-family: var(--text-label-md-bold-fontFamily);
7132
+ font-weight: var(--text-label-md-bold-fontWeight);
7133
+ font-size: var(--text-label-md-bold-fontSize);
7134
+ line-height: var(--text-label-md-bold-lineHeight);
7135
+ text-align: center;
7136
+ user-select: none;
7137
+ }
7138
+
7139
+ /* Upcoming number is semibold (not bold) per Figma */
7140
+ .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
7141
+ font-family: var(--text-label-md-semibold-fontFamily);
7142
+ font-weight: var(--text-label-md-semibold-fontWeight);
7143
+ }
7144
+
7145
+ /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
7146
+ .muka-progress-accordeon__heading {
7147
+ flex: 1 0 0;
7148
+ min-width: 0;
7149
+ margin: 0;
7150
+ font-family: var(--text-heading-md-fontFamily);
7151
+ font-weight: var(--text-heading-md-fontWeight);
7152
+ font-size: var(--text-heading-md-fontSize);
7153
+ line-height: var(--text-heading-md-lineHeight);
7154
+ letter-spacing: var(--text-heading-md-letterSpacing);
7155
+ color: var(--color-text-default-default);
7156
+ }
7157
+
7158
+ /* ─── Description ────────────────────────────────────────── */
7159
+ /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
7160
+ .muka-progress-accordeon__description {
7161
+ width: 100%;
7162
+ padding-left: 48px;
7146
7163
  font-family: var(--text-body-base-regular-fontFamily);
7147
- font-size: var(--text-body-base-regular-fontSize);
7148
7164
  font-weight: var(--text-body-base-regular-fontWeight);
7165
+ font-size: var(--text-body-base-regular-fontSize);
7149
7166
  line-height: var(--text-body-base-regular-lineHeight);
7150
7167
  color: var(--color-text-default-default);
7151
7168
  }
7152
7169
 
7153
- .muka-profile-badge__email {
7154
- font-family: var(--text-body-xs-regular-fontFamily);
7155
- font-size: var(--text-body-xs-regular-fontSize);
7156
- font-weight: var(--text-body-xs-regular-fontWeight);
7157
- line-height: var(--text-body-xs-regular-lineHeight);
7158
- color: var(--color-text-subtle-default);
7170
+ /* ─── Edit button ────────────────────────────────────────── */
7171
+ .muka-progress-accordeon__edit {
7172
+ flex-shrink: 0;
7159
7173
  }
7160
7174
 
7161
- /* Clickable state */
7162
- .muka-profile-badge--clickable {
7163
- cursor: pointer;
7164
- border: none;
7165
- background: none;
7166
- padding: 0;
7167
- text-align: left;
7168
- border-radius: var(--radius-md);
7169
- transition: opacity 0.2s ease;
7175
+ /* Wide container shows the labelled button; the icon-only one is hidden */
7176
+ .muka-progress-accordeon__edit--narrow {
7177
+ display: none;
7170
7178
  }
7171
7179
 
7172
- .muka-profile-badge--clickable:hover {
7173
- opacity: 0.9;
7180
+ /* ─── Content slot ───────────────────────────────────────── */
7181
+ .muka-progress-accordeon__slot {
7182
+ display: flex;
7183
+ flex-direction: column;
7184
+ align-items: stretch;
7185
+ width: 100%;
7174
7186
  }
7175
7187
 
7176
- .muka-profile-badge--clickable:active {
7177
- opacity: 0.8;
7188
+ /* ─── Collapse/expand animation (past & upcoming steps) ──────
7189
+ The grid-template-rows 1fr → 0fr technique animates the content to/from its
7190
+ intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
7191
+ --motion-duration-view resolves to 0ms, so the toggle stays instant. */
7192
+ .muka-progress-accordeon__slot-wrapper {
7193
+ display: grid;
7194
+ grid-template-rows: 1fr;
7195
+ transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
7178
7196
  }
7179
7197
 
7180
- .muka-profile-badge--clickable:focus-visible {
7181
- outline: 2px solid var(--color-border-focus);
7182
- outline-offset: 2px;
7198
+ .muka-progress-accordeon__slot-wrapper--collapsed {
7199
+ grid-template-rows: 0fr;
7200
+ }
7201
+
7202
+ /* The direct grid child clips and must have NO padding/border of its own —
7203
+ min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
7204
+ 0 height (padding on the item would leave a residual gap when collapsed). */
7205
+ .muka-progress-accordeon__slot-clip {
7206
+ overflow: hidden;
7207
+ min-height: 0;
7208
+ }
7209
+
7210
+ /* The header↔content spacing lives on the inner slot (inside the clip region)
7211
+ so it collapses together with the content. */
7212
+ .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
7213
+ padding-top: var(--spacing-4);
7214
+ }
7215
+
7216
+ /* ─── Action buttons (current state) ─────────────────────── */
7217
+ .muka-progress-accordeon__actions {
7218
+ display: flex;
7219
+ justify-content: flex-end;
7220
+ gap: var(--spacing-4);
7221
+ width: 100%;
7222
+ }
7223
+
7224
+ .muka-progress-accordeon__action {
7225
+ min-width: 160px;
7226
+ }
7227
+
7228
+ /* ─── Divider ────────────────────────────────────────────── */
7229
+ .muka-progress-accordeon__divider {
7230
+ width: 100%;
7231
+ }
7232
+
7233
+ /* ─── Responsive (narrow container) ──────────────────────── */
7234
+ @container (max-width: 480px) {
7235
+ /* Heading steps down to heading/sm. The 24px line-height is shorter than the
7236
+ 32px step indicator, so nudge the text down to keep a single line centred. */
7237
+ .muka-progress-accordeon__heading {
7238
+ font-size: var(--text-heading-sm-fontSize);
7239
+ line-height: var(--text-heading-sm-lineHeight);
7240
+ padding-top: var(--spacing-1);
7241
+ }
7242
+
7243
+ /* Edit button swaps to the icon-only variant */
7244
+ .muka-progress-accordeon__edit--wide {
7245
+ display: none;
7246
+ }
7247
+
7248
+ .muka-progress-accordeon__edit--narrow {
7249
+ display: inline-flex;
7250
+ }
7251
+
7252
+ /* Action buttons stretch to fill the row */
7253
+ .muka-progress-accordeon__actions {
7254
+ justify-content: stretch;
7255
+ }
7256
+
7257
+ .muka-progress-accordeon__action {
7258
+ flex: 1 0 0;
7259
+ min-width: 0;
7260
+ }
7183
7261
  }
7184
7262
 
7185
7263
 
@@ -7355,46 +7433,117 @@ body {
7355
7433
  }
7356
7434
 
7357
7435
 
7358
- /* Popover */
7359
- /* Popover Component Styles */
7436
+ /* ProfileBadge */
7437
+ /* ProfileBadge Component Styles - Using Muka Design Tokens */
7360
7438
 
7361
- .muka-popover__content {
7362
- background-color: var(--color-surface-level3);
7363
- border: var(--border-width-regular) solid var(--color-border-default);
7364
- border-radius: var(--radius-md);
7365
- padding: var(--spacing-4);
7366
- box-shadow: var(--shadow-level3);
7367
- max-width: 20rem;
7368
- z-index: 50;
7369
- animation: muka-popover-fade-in 150ms ease;
7439
+ .muka-profile-badge {
7440
+ display: inline-flex;
7441
+ align-items: center;
7442
+ font-family: var(--text-body-base-regular-fontFamily);
7370
7443
  }
7371
7444
 
7372
- @keyframes muka-popover-fade-in {
7373
- from {
7374
- opacity: 0;
7375
- transform: scale(0.96);
7376
- }
7377
- to {
7378
- opacity: 1;
7379
- transform: scale(1);
7380
- }
7445
+ /* Size variants */
7446
+ .muka-profile-badge--lg {
7447
+ gap: var(--spacing-4); /* 16px */
7381
7448
  }
7382
7449
 
7383
- /* Arrow */
7384
- .muka-popover__arrow {
7385
- fill: var(--color-surface-level3);
7450
+ .muka-profile-badge--md {
7451
+ gap: var(--spacing-3); /* 12px */
7386
7452
  }
7387
7453
 
7388
-
7389
- /* PriceTag */
7390
- /* PriceTag Component Styles - Using Muka Design Tokens */
7391
-
7392
- .muka-price-tag {
7393
- display: flex;
7454
+ .muka-profile-badge__avatar {
7394
7455
  flex-shrink: 0;
7395
7456
  }
7396
7457
 
7397
- /* Medium: stacked layout (price on top, unit below) */
7458
+ /* Text stack */
7459
+ .muka-profile-badge__text {
7460
+ display: flex;
7461
+ flex-direction: column;
7462
+ align-items: flex-start;
7463
+ min-width: 0;
7464
+ }
7465
+
7466
+ .muka-profile-badge__name {
7467
+ font-family: var(--text-body-base-regular-fontFamily);
7468
+ font-size: var(--text-body-base-regular-fontSize);
7469
+ font-weight: var(--text-body-base-regular-fontWeight);
7470
+ line-height: var(--text-body-base-regular-lineHeight);
7471
+ color: var(--color-text-default-default);
7472
+ }
7473
+
7474
+ .muka-profile-badge__email {
7475
+ font-family: var(--text-body-xs-regular-fontFamily);
7476
+ font-size: var(--text-body-xs-regular-fontSize);
7477
+ font-weight: var(--text-body-xs-regular-fontWeight);
7478
+ line-height: var(--text-body-xs-regular-lineHeight);
7479
+ color: var(--color-text-subtle-default);
7480
+ }
7481
+
7482
+ /* Clickable state */
7483
+ .muka-profile-badge--clickable {
7484
+ cursor: pointer;
7485
+ border: none;
7486
+ background: none;
7487
+ padding: 0;
7488
+ text-align: left;
7489
+ border-radius: var(--radius-md);
7490
+ transition: opacity 0.2s ease;
7491
+ }
7492
+
7493
+ .muka-profile-badge--clickable:hover {
7494
+ opacity: 0.9;
7495
+ }
7496
+
7497
+ .muka-profile-badge--clickable:active {
7498
+ opacity: 0.8;
7499
+ }
7500
+
7501
+ .muka-profile-badge--clickable:focus-visible {
7502
+ outline: 2px solid var(--color-border-focus);
7503
+ outline-offset: 2px;
7504
+ }
7505
+
7506
+
7507
+ /* Popover */
7508
+ /* Popover Component Styles */
7509
+
7510
+ .muka-popover__content {
7511
+ background-color: var(--color-surface-level3);
7512
+ border: var(--border-width-regular) solid var(--color-border-default);
7513
+ border-radius: var(--radius-md);
7514
+ padding: var(--spacing-4);
7515
+ box-shadow: var(--shadow-level3);
7516
+ max-width: 20rem;
7517
+ z-index: 50;
7518
+ animation: muka-popover-fade-in 150ms ease;
7519
+ }
7520
+
7521
+ @keyframes muka-popover-fade-in {
7522
+ from {
7523
+ opacity: 0;
7524
+ transform: scale(0.96);
7525
+ }
7526
+ to {
7527
+ opacity: 1;
7528
+ transform: scale(1);
7529
+ }
7530
+ }
7531
+
7532
+ /* Arrow */
7533
+ .muka-popover__arrow {
7534
+ fill: var(--color-surface-level3);
7535
+ }
7536
+
7537
+
7538
+ /* PriceTag */
7539
+ /* PriceTag Component Styles - Using Muka Design Tokens */
7540
+
7541
+ .muka-price-tag {
7542
+ display: flex;
7543
+ flex-shrink: 0;
7544
+ }
7545
+
7546
+ /* Medium: stacked layout (price on top, unit below) */
7398
7547
  .muka-price-tag--md {
7399
7548
  flex-direction: column;
7400
7549
  align-items: flex-end;
@@ -7483,6 +7632,103 @@ body {
7483
7632
  }
7484
7633
 
7485
7634
 
7635
+ /* PieChart */
7636
+ /* PieChart Component Styles - Using Muka Design Tokens */
7637
+
7638
+ .muka-piechart {
7639
+ display: inline-flex;
7640
+ align-items: center;
7641
+ gap: var(--spacing-4);
7642
+ }
7643
+
7644
+ /* Legend layout */
7645
+ .muka-piechart--legend-right {
7646
+ flex-direction: row;
7647
+ }
7648
+
7649
+ .muka-piechart--legend-bottom {
7650
+ flex-direction: column;
7651
+ }
7652
+
7653
+ /* ========================================
7654
+ CHART
7655
+ ======================================== */
7656
+
7657
+ .muka-piechart__chart {
7658
+ position: relative;
7659
+ flex-shrink: 0;
7660
+ }
7661
+
7662
+ .muka-piechart__chart--sm {
7663
+ width: var(--piechart-size-diameter-sm);
7664
+ height: var(--piechart-size-diameter-sm);
7665
+ }
7666
+
7667
+ .muka-piechart__chart--md {
7668
+ width: var(--piechart-size-diameter-md);
7669
+ height: var(--piechart-size-diameter-md);
7670
+ }
7671
+
7672
+ .muka-piechart__chart--lg {
7673
+ width: var(--piechart-size-diameter-lg);
7674
+ height: var(--piechart-size-diameter-lg);
7675
+ }
7676
+
7677
+ .muka-piechart__svg {
7678
+ display: block;
7679
+ width: 100%;
7680
+ height: 100%;
7681
+ /* Start slices at 12 o'clock instead of 3 o'clock */
7682
+ transform: rotate(-90deg);
7683
+ }
7684
+
7685
+ .muka-piechart__track {
7686
+ fill: none;
7687
+ stroke: var(--piechart-color-track);
7688
+ }
7689
+
7690
+ .muka-piechart__segment {
7691
+ fill: none;
7692
+ }
7693
+
7694
+ /* ========================================
7695
+ LEGEND
7696
+ ======================================== */
7697
+
7698
+ .muka-piechart__legend {
7699
+ list-style: none;
7700
+ margin: 0;
7701
+ padding: 0;
7702
+ display: flex;
7703
+ flex-direction: column;
7704
+ gap: var(--spacing-1);
7705
+ }
7706
+
7707
+ .muka-piechart__legend-item {
7708
+ display: flex;
7709
+ align-items: center;
7710
+ gap: var(--spacing-2);
7711
+ font-family: var(--text-body-sm-regular-fontFamily);
7712
+ font-weight: var(--text-body-sm-regular-fontWeight);
7713
+ font-size: var(--text-body-sm-regular-fontSize);
7714
+ line-height: var(--text-body-sm-regular-lineHeight);
7715
+ color: var(--color-text-default-default);
7716
+ }
7717
+
7718
+ .muka-piechart__swatch {
7719
+ flex-shrink: 0;
7720
+ width: var(--spacing-3);
7721
+ height: var(--spacing-3);
7722
+ border-radius: var(--border-radius-sm);
7723
+ }
7724
+
7725
+ .muka-piechart__legend-value {
7726
+ margin-left: auto;
7727
+ padding-left: var(--spacing-2);
7728
+ color: var(--color-text-subtle-default);
7729
+ }
7730
+
7731
+
7486
7732
  /* PhotoUploader */
7487
7733
  /* PhotoUploader Component Styles - Using Muka Design Tokens */
7488
7734
 
@@ -7611,158 +7857,61 @@ body {
7611
7857
  }
7612
7858
 
7613
7859
 
7614
- /* PieChart */
7615
- /* PieChart Component Styles - Using Muka Design Tokens */
7860
+ /* PhotoDraftStrip */
7861
+ /* PhotoDraftStrip Component Styles */
7616
7862
 
7617
- .muka-piechart {
7618
- display: inline-flex;
7863
+ .muka-photo-draft-strip {
7864
+ display: flex;
7619
7865
  align-items: center;
7620
- gap: var(--spacing-4);
7866
+ gap: var(--spacing-3);
7867
+ width: 100%;
7868
+ padding: var(--spacing-2) 0;
7621
7869
  }
7622
7870
 
7623
- /* Legend layout */
7624
- .muka-piechart--legend-right {
7625
- flex-direction: row;
7871
+ .muka-photo-draft-strip__track {
7872
+ display: flex;
7873
+ gap: var(--spacing-2);
7874
+ flex: 1 1 auto;
7875
+ min-width: 0;
7876
+ overflow-x: auto;
7877
+ scroll-behavior: smooth;
7878
+ scrollbar-width: none;
7626
7879
  }
7627
7880
 
7628
- .muka-piechart--legend-bottom {
7629
- flex-direction: column;
7881
+ .muka-photo-draft-strip__track::-webkit-scrollbar {
7882
+ display: none;
7630
7883
  }
7631
7884
 
7632
- /* ========================================
7633
- CHART
7634
- ======================================== */
7635
-
7636
- .muka-piechart__chart {
7637
- position: relative;
7638
- flex-shrink: 0;
7885
+ .muka-photo-draft-strip__item {
7886
+ flex: 0 0 auto;
7639
7887
  }
7640
7888
 
7641
- .muka-piechart__chart--sm {
7642
- width: var(--piechart-size-diameter-sm);
7643
- height: var(--piechart-size-diameter-sm);
7644
- }
7645
7889
 
7646
- .muka-piechart__chart--md {
7647
- width: var(--piechart-size-diameter-md);
7648
- height: var(--piechart-size-diameter-md);
7890
+ /* Pagination */
7891
+ /* Pagination Component Styles */
7892
+
7893
+ .muka-pagination__list {
7894
+ display: flex;
7895
+ align-items: center;
7896
+ gap: var(--spacing-1);
7897
+ list-style: none;
7898
+ margin: 0;
7899
+ padding: 0;
7649
7900
  }
7650
7901
 
7651
- .muka-piechart__chart--lg {
7652
- width: var(--piechart-size-diameter-lg);
7653
- height: var(--piechart-size-diameter-lg);
7654
- }
7655
-
7656
- .muka-piechart__svg {
7657
- display: block;
7658
- width: 100%;
7659
- height: 100%;
7660
- /* Start slices at 12 o'clock instead of 3 o'clock */
7661
- transform: rotate(-90deg);
7662
- }
7663
-
7664
- .muka-piechart__track {
7665
- fill: none;
7666
- stroke: var(--piechart-color-track);
7667
- }
7668
-
7669
- .muka-piechart__segment {
7670
- fill: none;
7671
- }
7672
-
7673
- /* ========================================
7674
- LEGEND
7675
- ======================================== */
7676
-
7677
- .muka-piechart__legend {
7678
- list-style: none;
7679
- margin: 0;
7680
- padding: 0;
7681
- display: flex;
7682
- flex-direction: column;
7683
- gap: var(--spacing-1);
7684
- }
7685
-
7686
- .muka-piechart__legend-item {
7687
- display: flex;
7688
- align-items: center;
7689
- gap: var(--spacing-2);
7690
- font-family: var(--text-body-sm-regular-fontFamily);
7691
- font-weight: var(--text-body-sm-regular-fontWeight);
7692
- font-size: var(--text-body-sm-regular-fontSize);
7693
- line-height: var(--text-body-sm-regular-lineHeight);
7694
- color: var(--color-text-default-default);
7695
- }
7696
-
7697
- .muka-piechart__swatch {
7698
- flex-shrink: 0;
7699
- width: var(--spacing-3);
7700
- height: var(--spacing-3);
7701
- border-radius: var(--border-radius-sm);
7702
- }
7703
-
7704
- .muka-piechart__legend-value {
7705
- margin-left: auto;
7706
- padding-left: var(--spacing-2);
7707
- color: var(--color-text-subtle-default);
7708
- }
7709
-
7710
-
7711
- /* PhotoDraftStrip */
7712
- /* PhotoDraftStrip Component Styles */
7713
-
7714
- .muka-photo-draft-strip {
7715
- display: flex;
7716
- align-items: center;
7717
- gap: var(--spacing-3);
7718
- width: 100%;
7719
- padding: var(--spacing-2) 0;
7720
- }
7721
-
7722
- .muka-photo-draft-strip__track {
7723
- display: flex;
7724
- gap: var(--spacing-2);
7725
- flex: 1 1 auto;
7726
- min-width: 0;
7727
- overflow-x: auto;
7728
- scroll-behavior: smooth;
7729
- scrollbar-width: none;
7730
- }
7731
-
7732
- .muka-photo-draft-strip__track::-webkit-scrollbar {
7733
- display: none;
7734
- }
7735
-
7736
- .muka-photo-draft-strip__item {
7737
- flex: 0 0 auto;
7738
- }
7739
-
7740
-
7741
- /* Pagination */
7742
- /* Pagination Component Styles */
7743
-
7744
- .muka-pagination__list {
7745
- display: flex;
7746
- align-items: center;
7747
- gap: var(--spacing-1);
7748
- list-style: none;
7749
- margin: 0;
7750
- padding: 0;
7751
- }
7752
-
7753
- /* Base button */
7754
- .muka-pagination__button {
7755
- display: inline-flex;
7756
- align-items: center;
7757
- justify-content: center;
7758
- border: var(--border-width-regular) solid transparent;
7759
- border-radius: var(--radius-md);
7760
- background: transparent;
7761
- color: var(--color-text-default-default);
7762
- cursor: pointer;
7763
- font: inherit;
7764
- transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
7765
- padding: 0;
7902
+ /* Base button */
7903
+ .muka-pagination__button {
7904
+ display: inline-flex;
7905
+ align-items: center;
7906
+ justify-content: center;
7907
+ border: var(--border-width-regular) solid transparent;
7908
+ border-radius: var(--radius-md);
7909
+ background: transparent;
7910
+ color: var(--color-text-default-default);
7911
+ cursor: pointer;
7912
+ font: inherit;
7913
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
7914
+ padding: 0;
7766
7915
  }
7767
7916
 
7768
7917
  .muka-pagination__button:hover:not(:disabled):not(.muka-pagination__button--active) {
@@ -7898,869 +8047,869 @@ body {
7898
8047
  .muka-nav-transition__view--top { z-index: 2; }
7899
8048
 
7900
8049
 
7901
- /* Menu */
7902
- /* Menu Component Styles */
7903
-
7904
- /* ─── Content Container ──────────────────────────────────────────────────── */
8050
+ /* ListItem */
8051
+ /* ListItem Component Styles - Using Muka Design Tokens */
7905
8052
 
7906
- .muka-menu__content {
8053
+ /* Base list item styles */
8054
+ .muka-listitem {
8055
+ /* Layout */
7907
8056
  display: flex;
7908
- flex-direction: column;
7909
- min-width: var(--menu-content-min-width);
7910
- max-height: var(--menu-content-max-height);
7911
- overflow: hidden;
7912
- background-color: var(--menu-content-color-background);
7913
- border: var(--menu-content-border-width) solid var(--menu-content-color-border);
7914
- border-radius: var(--menu-content-border-radius);
7915
- box-shadow: var(--menu-content-shadow);
7916
- padding: 0;
7917
- z-index: 50;
8057
+ align-items: flex-start;
8058
+ gap: var(--spacing-4);
8059
+ padding: var(--spacing-5) var(--spacing-4);
8060
+
8061
+ /* Background - using semantic tokens */
8062
+ background-color: var(--color-surface-level3);
8063
+
8064
+ /* Typography */
8065
+ font-family: var(--alias-font-brand-family);
8066
+
8067
+ /* Border and spacing */
8068
+ border: none;
8069
+ position: relative;
8070
+
8071
+ /* Interaction - only apply if interactive */
8072
+ transition: background-color 0.2s ease, box-shadow 0.2s ease;
8073
+ }
7918
8074
 
7919
- /* Animation */
7920
- animation-duration: 150ms;
7921
- animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
8075
+ /* Interactive state */
8076
+ .muka-listitem--interactive {
8077
+ cursor: pointer;
7922
8078
  }
7923
8079
 
7924
- .muka-menu__body {
7925
- display: flex;
7926
- flex: 1 1 auto;
7927
- min-height: 0;
7928
- align-items: stretch;
7929
- width: 100%;
8080
+ /*
8081
+ * surface.hover / surface.pressed are theme-adaptive translucent tints, so they
8082
+ * are layered on top of the item's base surface via an inset box-shadow overlay
8083
+ * rather than replacing background-color. This preserves the base level (level3,
8084
+ * or level2 when selected) and lets the tint read correctly on any surface.
8085
+ */
8086
+ .muka-listitem--interactive:hover:not(:disabled):not(.muka-listitem--disabled) {
8087
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
7930
8088
  }
7931
8089
 
7932
- .muka-menu__viewport {
7933
- flex: 1 1 auto;
7934
- min-width: 0;
7935
- min-height: 0;
7936
- overflow-y: auto;
7937
- padding: var(--menu-content-padding);
8090
+ .muka-listitem--interactive:active:not(:disabled):not(.muka-listitem--disabled),
8091
+ .muka-listitem--interactive.muka-listitem--pressed:not(:disabled):not(.muka-listitem--disabled) {
8092
+ box-shadow: inset 0 0 0 9999px var(--color-surface-pressed);
7938
8093
  }
7939
8094
 
7940
- .muka-menu__content--scrollbar .muka-menu__viewport {
7941
- /* Custom scrollbar owns the chrome; hide native track */
7942
- scrollbar-width: none;
8095
+ /* Focus styles for accessibility */
8096
+ .muka-listitem:focus-visible {
8097
+ outline: 2px solid var(--color-border-focus);
8098
+ outline-offset: -2px;
7943
8099
  }
7944
8100
 
7945
- .muka-menu__content--scrollbar .muka-menu__viewport::-webkit-scrollbar {
7946
- display: none;
8101
+ /* Disabled state */
8102
+ .muka-listitem--disabled {
8103
+ opacity: 0.5;
8104
+ cursor: not-allowed;
8105
+ pointer-events: none;
7947
8106
  }
7948
8107
 
7949
- /* ─── Search header ──────────────────────────────────────────────────────── */
8108
+ .muka-listitem--disabled:hover {
8109
+ background-color: var(--color-surface-level3);
8110
+ }
7950
8111
 
7951
- .muka-menu__search {
7952
- display: flex;
7953
- align-items: center;
7954
- flex-shrink: 0;
7955
- /* Figma dropdown filter header: 48px, 8px inset, 32px icon slots. */
7956
- height: var(--input-field-height-lg, 3rem);
7957
- padding: 0 var(--spacing-2);
7958
- border-bottom: var(--border-width-regular) solid var(--color-border-default);
8112
+ /* Selected state */
8113
+ .muka-listitem--selected {
8114
+ background-color: var(--color-surface-level2);
7959
8115
  }
7960
8116
 
7961
- .muka-menu__search--sm {
7962
- height: calc(var(--size-xl, 1.5rem) + var(--spacing-2) * 2);
8117
+ .muka-listitem--selected:hover {
8118
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
7963
8119
  }
7964
8120
 
7965
- .muka-menu__search-icon,
7966
- .muka-menu__search-clear {
8121
+ /* No divider modifier */
8122
+ .muka-listitem--no-divider .muka-listitem__divider {
8123
+ display: none;
8124
+ }
8125
+
8126
+ /* Center content vertically when no caption */
8127
+ .muka-listitem--no-caption {
8128
+ align-items: center;
8129
+ }
8130
+
8131
+ /* Leading content (icon or image) */
8132
+ .muka-listitem__leading {
7967
8133
  display: flex;
7968
8134
  align-items: center;
7969
8135
  justify-content: center;
7970
8136
  flex-shrink: 0;
7971
- width: var(--size-2xl, 2rem);
7972
- height: var(--size-2xl, 2rem);
7973
- color: var(--color-text-subtle-default);
8137
+ width: 48px;
8138
+ height: 48px;
7974
8139
  }
7975
8140
 
7976
- .muka-menu__search-icon .muka-icon,
7977
- .muka-menu__search-clear .muka-icon,
7978
- .muka-menu__search-clear:hover,
7979
- .muka-menu__search-clear:hover .muka-icon {
7980
- color: var(--color-text-subtle-default);
8141
+ .muka-listitem__icon {
8142
+ display: inline-flex;
8143
+ align-items: center;
8144
+ justify-content: center;
8145
+ width: 32px;
8146
+ height: 32px;
8147
+ color: var(--color-text-default-default);
7981
8148
  }
7982
8149
 
7983
- .muka-menu__search--sm .muka-menu__search-icon,
7984
- .muka-menu__search--sm .muka-menu__search-clear {
7985
- width: var(--size-xl, 1.5rem);
7986
- height: var(--size-xl, 1.5rem);
8150
+ .muka-listitem__image {
8151
+ width: 48px;
8152
+ height: 48px;
8153
+ border-radius: var(--radius-md);
8154
+ object-fit: cover;
7987
8155
  }
7988
8156
 
7989
- .muka-menu__search-input {
7990
- flex: 1 1 auto;
7991
- min-width: 0;
7992
- border: none;
7993
- outline: none;
7994
- background: transparent;
7995
- padding: 0 var(--spacing-1);
7996
- font-family: var(--text-input-md-fontFamily);
7997
- font-size: var(--text-input-md-fontSize);
7998
- font-weight: var(--text-input-md-fontWeight);
7999
- line-height: var(--text-input-md-lineHeight);
8000
- color: var(--color-text-default-default);
8157
+ /* Main content area */
8158
+ .muka-listitem__content {
8159
+ flex: 1;
8160
+ display: flex;
8161
+ align-items: center;
8162
+ gap: var(--spacing-4);
8163
+ min-width: 0;
8001
8164
  }
8002
8165
 
8003
- .muka-menu__search--sm .muka-menu__search-input {
8004
- font-family: var(--text-input-sm-fontFamily);
8005
- font-size: var(--text-input-sm-fontSize);
8006
- font-weight: var(--text-input-sm-fontWeight);
8007
- line-height: var(--text-input-sm-lineHeight);
8166
+ .muka-listitem__text {
8167
+ flex: 1;
8168
+ display: flex;
8169
+ flex-direction: column;
8170
+ gap: var(--spacing-1);
8171
+ min-width: 0;
8008
8172
  }
8009
8173
 
8010
- .muka-menu__search-input::placeholder {
8011
- color: var(--color-text-subtle-default);
8174
+ /* Label text */
8175
+ .muka-listitem__label {
8176
+ margin: 0;
8177
+ padding: 0;
8178
+
8179
+ /* Typography - using semantic tokens */
8180
+ font-family: var(--alias-font-plain-family);
8181
+ font-weight: var(--alias-font-plain-weight-semibold, 600);
8182
+ font-size: var(--text-label-md-fontSize);
8183
+ line-height: var(--text-label-md-lineHeight);
8184
+ color: var(--color-text-default-default);
8185
+
8186
+ /* Text handling */
8187
+ overflow: hidden;
8188
+ text-overflow: ellipsis;
8189
+ white-space: nowrap;
8012
8190
  }
8013
8191
 
8014
- .muka-menu__search-input::-webkit-search-cancel-button,
8015
- .muka-menu__search-input::-webkit-search-decoration {
8016
- -webkit-appearance: none;
8017
- appearance: none;
8192
+ /* Caption text */
8193
+ .muka-listitem__caption {
8194
+ margin: 0;
8195
+ padding: 0;
8196
+
8197
+ /* Typography - using semantic tokens */
8198
+ font-family: var(--alias-font-plain-family);
8199
+ font-weight: var(--alias-font-plain-weight-regular, 400);
8200
+ font-size: var(--text-body-sm-fontSize);
8201
+ line-height: var(--text-body-sm-lineHeight);
8202
+ color: var(--color-text-subtle-default);
8203
+
8204
+ /* Text handling */
8205
+ overflow: hidden;
8206
+ text-overflow: ellipsis;
8207
+ white-space: nowrap;
8018
8208
  }
8019
8209
 
8020
- .muka-menu__empty {
8021
- display: flex;
8210
+ /* Trailing chevron */
8211
+ .muka-listitem__chevron {
8212
+ display: inline-flex;
8022
8213
  align-items: center;
8023
- min-height: var(--menu-item-height);
8024
- padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
8214
+ justify-content: center;
8215
+ flex-shrink: 0;
8216
+ width: 24px;
8217
+ height: 24px;
8025
8218
  color: var(--color-text-subtle-default);
8026
- font-family: var(--text-input-md-fontFamily);
8027
- font-size: var(--text-input-md-fontSize);
8028
- font-weight: var(--text-input-md-fontWeight);
8029
- line-height: var(--text-input-md-lineHeight);
8030
- pointer-events: none;
8031
- user-select: none;
8032
8219
  }
8033
8220
 
8034
- .muka-menu__search-clear {
8035
- padding: 0;
8036
- border: none;
8037
- background: transparent;
8038
- cursor: pointer;
8221
+ /* Bottom divider */
8222
+ .muka-listitem__divider {
8223
+ position: absolute;
8224
+ bottom: 0;
8225
+ left: 0;
8226
+ right: 0;
8227
+ height: 1px;
8228
+ background-color: var(--color-border-default);
8039
8229
  }
8040
8230
 
8041
- .muka-menu__match {
8042
- font-weight: var(--text-label-md-bold-fontWeight);
8231
+ /* Button and anchor specific styles */
8232
+ button.muka-listitem,
8233
+ a.muka-listitem {
8234
+ text-align: left;
8235
+ width: 100%;
8043
8236
  }
8044
8237
 
8045
- .muka-menu__content--scrollbar {
8046
- height: var(--menu-content-scroll-height, 20.625rem);
8047
- max-height: var(--menu-content-scroll-height, 20.625rem);
8238
+ /* List item specific styles */
8239
+ li.muka-listitem {
8240
+ list-style: none;
8048
8241
  }
8049
8242
 
8050
- .muka-menu__content[data-state='open'] {
8051
- animation-name: muka-menu-fade-in;
8052
- }
8053
8243
 
8054
- .muka-menu__content[data-state='closed'] {
8055
- animation-name: muka-menu-fade-out;
8056
- }
8244
+ /* LicensePlateInput */
8245
+ /* LicensePlateInput — Dutch RDW-style plate input
8246
+ *
8247
+ * Plate body colors are regulatory (EU/NL) and intentionally fixed:
8248
+ * - Plate yellow: #F0CE3D
8249
+ * - EU strip blue: #003399
8250
+ * - EU stars yellow: #FFCC00
8251
+ * - Plate text: #1A1A1A
8252
+ *
8253
+ * All surrounding UI (label, helper, focus ring, error border) uses Muka tokens.
8254
+ */
8057
8255
 
8058
- .muka-menu__content[data-side='top'] {
8059
- animation-name: muka-menu-slide-down;
8060
- }
8256
+ .muka-license-plate-input {
8257
+ --plate-yellow: #f0ce3d;
8258
+ --plate-blue: #003399;
8259
+ --plate-text: #1a1a1a;
8260
+ --plate-stars: #ffcc00;
8061
8261
 
8062
- .muka-menu__content[data-side='bottom'] {
8063
- animation-name: muka-menu-slide-up;
8262
+ display: inline-flex;
8263
+ flex-direction: column;
8264
+ gap: var(--spacing-2);
8064
8265
  }
8065
8266
 
8066
- .muka-menu__content[data-side='left'] {
8067
- animation-name: muka-menu-slide-right;
8267
+ /* Plate body */
8268
+ .muka-license-plate-input__plate {
8269
+ display: inline-flex;
8270
+ align-items: stretch;
8271
+ background-color: var(--plate-yellow);
8272
+ border-radius: var(--input-field-radius-md);
8273
+ cursor: text;
8274
+ position: relative;
8275
+ overflow: hidden;
8276
+ box-sizing: border-box;
8277
+ /* Subtle outline to lift the plate from light backgrounds */
8278
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
8279
+ /* Reserve space for the focus / error solid ring without shifting layout */
8280
+ outline: 3px solid transparent;
8281
+ outline-offset: 2px;
8282
+ transition: outline-color 0.15s ease, opacity 0.15s ease;
8068
8283
  }
8069
8284
 
8070
- .muka-menu__content[data-side='right'] {
8071
- animation-name: muka-menu-slide-left;
8285
+ /* Size variants — plate aspect echoes the real RDW plate (~5:1) */
8286
+ .muka-license-plate-input__plate--sm {
8287
+ height: 44px;
8288
+ min-width: 220px;
8289
+ border-radius: var(--input-field-radius-sm);
8072
8290
  }
8073
8291
 
8074
- /* ─── Menu Item ──────────────────────────────────────────────────────────── */
8292
+ .muka-license-plate-input__plate--md {
8293
+ height: 60px;
8294
+ min-width: 300px;
8295
+ border-radius: var(--input-field-radius-md);
8296
+ }
8075
8297
 
8076
- .muka-menu__item {
8077
- position: relative;
8078
- display: flex;
8079
- align-items: center;
8080
- gap: var(--menu-item-gap);
8081
- min-height: var(--menu-item-height);
8082
- /* Right gutter always reserved for floating trailers (enter / check). */
8083
- padding: var(--menu-item-padding-y) var(--menu-item-padding-right) var(--menu-item-padding-y)
8084
- var(--menu-item-padding-x);
8085
- border-radius: var(--menu-item-border-radius);
8086
- cursor: pointer;
8087
- user-select: none;
8088
- outline: none;
8089
- font-family: var(--text-label-md-regular-fontFamily);
8090
- font-size: var(--text-label-md-regular-fontSize);
8091
- font-weight: var(--text-label-md-regular-fontWeight);
8092
- line-height: var(--text-label-md-regular-lineHeight);
8093
- color: var(--menu-item-color-default-foreground);
8094
- background-color: var(--menu-item-color-default-background);
8095
- transition: background-color 100ms ease, color 100ms ease;
8096
- white-space: nowrap;
8298
+ .muka-license-plate-input__plate--lg {
8299
+ height: 80px;
8300
+ min-width: 400px;
8301
+ border-radius: var(--input-field-radius-lg);
8097
8302
  }
8098
8303
 
8099
- .muka-menu__item:hover,
8100
- .muka-menu__item[data-highlighted] {
8101
- background-color: var(--menu-item-color-hover-background);
8102
- color: var(--menu-item-color-hover-foreground);
8304
+ /* Focus — solid outline ring */
8305
+ .muka-license-plate-input__plate--focused:not(.muka-license-plate-input__plate--disabled) {
8306
+ outline-color: var(--input-field-color-focus-border);
8103
8307
  }
8104
8308
 
8105
- .muka-menu__item:focus,
8106
- .muka-menu__item[data-highlighted]:focus {
8107
- background-color: var(--menu-item-color-focus-background);
8108
- color: var(--menu-item-color-focus-foreground);
8309
+ /* Error — solid outline ring in error color */
8310
+ .muka-license-plate-input__plate--error:not(.muka-license-plate-input__plate--disabled) {
8311
+ outline-color: var(--input-field-color-error-border);
8109
8312
  }
8110
8313
 
8111
8314
  /* Disabled */
8112
- .muka-menu__item--disabled,
8113
- .muka-menu__item[data-disabled] {
8114
- color: var(--menu-item-color-disabled-foreground);
8115
- background-color: var(--menu-item-color-disabled-background);
8315
+ .muka-license-plate-input__plate--disabled {
8116
8316
  cursor: not-allowed;
8117
- pointer-events: none;
8118
- }
8119
-
8120
- .muka-menu__item--disabled .muka-menu__item-icon,
8121
- .muka-menu__item[data-disabled] .muka-menu__item-icon {
8122
- color: var(--menu-item-color-disabled-icon);
8317
+ opacity: 0.55;
8123
8318
  }
8124
8319
 
8125
- /* Destructive */
8126
- .muka-menu__item--destructive {
8127
- color: var(--menu-item-color-destructive-default-foreground);
8320
+ /* EU strip */
8321
+ .muka-license-plate-input__eu-strip {
8322
+ display: inline-flex;
8323
+ flex-direction: column;
8324
+ align-items: center;
8325
+ justify-content: center;
8326
+ background-color: var(--plate-blue);
8327
+ color: #ffffff;
8328
+ flex-shrink: 0;
8329
+ padding: 0 0.4em;
8330
+ gap: 0.15em;
8331
+ /* Strip width scales with plate height for a consistent ratio */
8332
+ width: 14%;
8333
+ min-width: 36px;
8128
8334
  }
8129
8335
 
8130
- .muka-menu__item--destructive .muka-menu__item-icon {
8131
- color: var(--menu-item-color-destructive-default-icon);
8336
+ .muka-license-plate-input__eu-stars {
8337
+ width: 60%;
8338
+ max-width: 28px;
8339
+ aspect-ratio: 1 / 1;
8340
+ display: block;
8132
8341
  }
8133
8342
 
8134
- .muka-menu__item--destructive:hover,
8135
- .muka-menu__item--destructive[data-highlighted] {
8136
- background-color: var(--menu-item-color-destructive-hover-background);
8137
- color: var(--menu-item-color-destructive-hover-foreground);
8343
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__eu-stars {
8344
+ max-width: 20px;
8138
8345
  }
8139
8346
 
8140
- .muka-menu__item--destructive:hover .muka-menu__item-icon,
8141
- .muka-menu__item--destructive[data-highlighted] .muka-menu__item-icon {
8142
- color: var(--menu-item-color-destructive-hover-icon);
8347
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__eu-stars {
8348
+ max-width: 36px;
8143
8349
  }
8144
8350
 
8145
- /* ─── Item Parts ─────────────────────────────────────────────────────────── */
8146
-
8147
- .muka-menu__item-icon {
8148
- display: flex;
8149
- align-items: center;
8150
- justify-content: center;
8151
- flex-shrink: 0;
8152
- color: var(--menu-item-color-default-icon);
8153
- transition: color 100ms ease;
8351
+ .muka-license-plate-input__country-code {
8352
+ font-family:
8353
+ 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
8354
+ font-weight: 700;
8355
+ letter-spacing: 0.04em;
8356
+ line-height: 1;
8357
+ color: #ffffff;
8154
8358
  }
8155
8359
 
8156
- .muka-menu__item:hover .muka-menu__item-icon,
8157
- .muka-menu__item[data-highlighted] .muka-menu__item-icon {
8158
- color: var(--menu-item-color-hover-icon);
8360
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__country-code {
8361
+ font-size: 10px;
8159
8362
  }
8160
8363
 
8161
- .muka-menu__item-label {
8162
- flex: 1 1 auto;
8163
- min-width: 0;
8164
- white-space: nowrap;
8364
+ .muka-license-plate-input__plate--md .muka-license-plate-input__country-code {
8365
+ font-size: 13px;
8165
8366
  }
8166
8367
 
8167
- /* Shortcut trailers replace icons and sit with an 8px right inset. */
8168
- .muka-menu__item--has-shortcut {
8169
- padding-right: var(--spacing-2);
8368
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__country-code {
8369
+ font-size: 16px;
8170
8370
  }
8171
8371
 
8172
- .muka-menu__item-shortcut {
8173
- flex-shrink: 0;
8174
- margin-left: auto;
8175
- padding-left: var(--menu-item-gap);
8176
- font-family: var(--text-label-sm-regular-fontFamily);
8177
- font-size: var(--text-label-sm-regular-fontSize);
8178
- font-weight: var(--text-label-sm-regular-fontWeight);
8179
- line-height: var(--text-label-sm-regular-lineHeight);
8180
- color: var(--color-text-muted-default);
8181
- white-space: nowrap;
8372
+ /* Native input */
8373
+ .muka-license-plate-input__native {
8374
+ flex: 1;
8375
+ min-width: 0;
8376
+ border: none;
8377
+ outline: none;
8378
+ background: transparent;
8379
+ color: var(--plate-text);
8380
+ text-align: center;
8381
+ text-transform: uppercase;
8382
+ letter-spacing: 0.06em;
8383
+ /* Plate font — bold condensed sans is closest to the FE-Schrift look without
8384
+ shipping a custom font. JetBrains Mono is the system mono brand font. */
8385
+ font-family:
8386
+ 'Arial Narrow', 'Helvetica Neue', Helvetica, Arial, sans-serif;
8387
+ font-weight: 800;
8388
+ padding: 0 0.5em;
8389
+ width: 100%;
8390
+ caret-color: var(--plate-text);
8182
8391
  }
8183
8392
 
8184
- .muka-menu__item-hint {
8185
- /* Figma: trailer sits with 8px margin top / right / bottom; 24px glyph centered inside. */
8186
- position: absolute;
8187
- top: var(--spacing-2);
8188
- right: var(--spacing-2);
8189
- bottom: var(--spacing-2);
8190
- display: none;
8191
- align-items: center;
8192
- justify-content: center;
8193
- width: var(--icon-size-default, 1.5rem);
8194
- color: var(--color-text-muted-default);
8195
- pointer-events: none;
8393
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__native {
8394
+ font-size: 22px;
8196
8395
  }
8197
8396
 
8198
- .muka-menu__item--hint-enter[data-highlighted] .muka-menu__item-hint {
8199
- display: flex;
8397
+ .muka-license-plate-input__plate--md .muka-license-plate-input__native {
8398
+ font-size: 30px;
8200
8399
  }
8201
8400
 
8202
- .muka-menu__item-chevron {
8203
- position: absolute;
8204
- top: var(--spacing-2);
8205
- right: var(--spacing-2);
8206
- bottom: var(--spacing-2);
8207
- display: flex;
8208
- align-items: center;
8209
- justify-content: center;
8210
- width: var(--icon-size-default, 1.5rem);
8211
- color: var(--menu-shortcut-color);
8401
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__native {
8402
+ font-size: 42px;
8212
8403
  }
8213
8404
 
8214
- /* ─── Indicator (Checkbox/Radio) ─────────────────────────────────────────── */
8215
-
8216
- .muka-menu__item-indicator {
8217
- display: flex;
8218
- align-items: center;
8219
- justify-content: center;
8220
- width: var(--menu-checkbox-indicator-size);
8221
- height: var(--menu-checkbox-indicator-size);
8222
- flex-shrink: 0;
8223
- color: var(--menu-checkbox-indicator-color);
8405
+ .muka-license-plate-input__native::placeholder {
8406
+ color: var(--plate-text);
8407
+ opacity: 0.55;
8408
+ font-weight: 700;
8409
+ letter-spacing: 0.08em;
8224
8410
  }
8225
8411
 
8226
- .muka-menu__item--checkbox,
8227
- .muka-menu__item--radio {
8228
- padding-left: var(--menu-item-padding-x);
8412
+ .muka-license-plate-input__plate--disabled .muka-license-plate-input__native {
8413
+ cursor: not-allowed;
8229
8414
  }
8230
8415
 
8231
- .muka-menu__item--checkbox-trailing,
8232
- .muka-menu__item--radio-check {
8233
- /* Same reserved right gutter as default items — trailing indicator floats. */
8234
- padding-right: var(--menu-item-padding-right);
8416
+ /* Helper text */
8417
+ .muka-license-plate-input__helper {
8418
+ font-family: var(--text-label-sm-regular-fontFamily);
8419
+ font-weight: var(--text-label-sm-regular-fontWeight);
8420
+ font-size: var(--text-label-sm-regular-fontSize);
8421
+ line-height: var(--text-label-sm-regular-lineHeight);
8422
+ color: var(--color-text-subtle-default);
8423
+ margin: 0;
8235
8424
  }
8236
8425
 
8237
- .muka-menu__item--radio-check[data-state='checked'] {
8238
- background-color: var(--menu-item-color-selected-background);
8426
+ /* Error message */
8427
+ .muka-license-plate-input__error {
8428
+ font-family: var(--text-label-sm-regular-fontFamily);
8429
+ font-weight: var(--text-label-sm-regular-fontWeight);
8430
+ font-size: var(--text-label-sm-regular-fontSize);
8431
+ line-height: var(--text-label-sm-regular-lineHeight);
8432
+ color: var(--color-state-error-default);
8433
+ margin: 0;
8239
8434
  }
8240
8435
 
8241
- .muka-menu__item-indicator--trailing {
8242
- /* Match enter-hint trailer: 8px inset, 24px box (override leading indicator size). */
8243
- position: absolute;
8244
- top: var(--spacing-2);
8245
- right: var(--spacing-2);
8246
- bottom: var(--spacing-2);
8436
+
8437
+ /* Menu */
8438
+ /* Menu Component Styles */
8439
+
8440
+ /* ─── Content Container ──────────────────────────────────────────────────── */
8441
+
8442
+ .muka-menu__content {
8247
8443
  display: flex;
8248
- align-items: center;
8249
- justify-content: center;
8250
- width: var(--icon-size-default, 1.5rem);
8251
- height: auto;
8252
- max-height: none;
8253
- transform: none;
8254
- color: var(--color-text-subtle-default);
8444
+ flex-direction: column;
8445
+ min-width: var(--menu-content-min-width);
8446
+ max-height: var(--menu-content-max-height);
8447
+ overflow: hidden;
8448
+ background-color: var(--menu-content-color-background);
8449
+ border: var(--menu-content-border-width) solid var(--menu-content-color-border);
8450
+ border-radius: var(--menu-content-border-radius);
8451
+ box-shadow: var(--menu-content-shadow);
8452
+ padding: 0;
8453
+ z-index: 50;
8454
+
8455
+ /* Animation */
8456
+ animation-duration: 150ms;
8457
+ animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
8255
8458
  }
8256
8459
 
8257
- .muka-menu__item-indicator--trailing > [data-state] {
8460
+ .muka-menu__body {
8258
8461
  display: flex;
8259
- align-items: center;
8260
- justify-content: center;
8462
+ flex: 1 1 auto;
8463
+ min-height: 0;
8464
+ align-items: stretch;
8261
8465
  width: 100%;
8262
- height: 100%;
8263
8466
  }
8264
8467
 
8265
- .muka-menu__radio-dot {
8266
- width: 8px;
8267
- height: 8px;
8268
- border-radius: 50%;
8269
- background-color: var(--menu-radio-indicator-color);
8468
+ .muka-menu__viewport {
8469
+ flex: 1 1 auto;
8470
+ min-width: 0;
8471
+ min-height: 0;
8472
+ overflow-y: auto;
8473
+ padding: var(--menu-content-padding);
8270
8474
  }
8271
8475
 
8272
- /* ─── Separator ──────────────────────────────────────────────────────────── */
8476
+ .muka-menu__content--scrollbar .muka-menu__viewport {
8477
+ /* Custom scrollbar owns the chrome; hide native track */
8478
+ scrollbar-width: none;
8479
+ }
8273
8480
 
8274
- .muka-menu__separator {
8275
- height: var(--menu-separator-height);
8276
- margin: var(--menu-separator-margin-y) 0;
8277
- background-color: var(--menu-separator-color);
8481
+ .muka-menu__content--scrollbar .muka-menu__viewport::-webkit-scrollbar {
8482
+ display: none;
8278
8483
  }
8279
8484
 
8280
- /* ─── Group ──────────────────────────────────────────────────────────────── */
8485
+ /* ─── Search header ──────────────────────────────────────────────────────── */
8281
8486
 
8282
- .muka-menu__group {
8283
- /* No additional styles needed - just a container */
8487
+ .muka-menu__search {
8488
+ display: flex;
8489
+ align-items: center;
8490
+ flex-shrink: 0;
8491
+ /* Figma dropdown filter header: 48px, 8px inset, 32px icon slots. */
8492
+ height: var(--input-field-height-lg, 3rem);
8493
+ padding: 0 var(--spacing-2);
8494
+ border-bottom: var(--border-width-regular) solid var(--color-border-default);
8284
8495
  }
8285
8496
 
8286
- .muka-menu__group-label {
8287
- padding: var(--menu-group-label-padding-y) var(--menu-group-label-padding-x);
8288
- font-family: var(--text-label-sm-semibold-fontFamily);
8289
- font-size: var(--text-label-sm-semibold-fontSize);
8290
- font-weight: var(--text-label-sm-semibold-fontWeight);
8291
- line-height: var(--text-label-sm-semibold-lineHeight);
8292
- color: var(--menu-group-label-color);
8293
- text-transform: uppercase;
8294
- letter-spacing: 0.05em;
8497
+ .muka-menu__search--sm {
8498
+ height: calc(var(--size-xl, 1.5rem) + var(--spacing-2) * 2);
8295
8499
  }
8296
8500
 
8297
- /* ─── Radio Group ────────────────────────────────────────────────────────── */
8298
-
8299
- .muka-menu__radio-group {
8300
- /* No additional styles needed - just a container */
8501
+ .muka-menu__search-icon,
8502
+ .muka-menu__search-clear {
8503
+ display: flex;
8504
+ align-items: center;
8505
+ justify-content: center;
8506
+ flex-shrink: 0;
8507
+ width: var(--size-2xl, 2rem);
8508
+ height: var(--size-2xl, 2rem);
8509
+ color: var(--color-text-subtle-default);
8301
8510
  }
8302
8511
 
8303
- /* ─── Context Menu Trigger ───────────────────────────────────────────────── */
8304
-
8305
- .muka-context-menu__trigger {
8306
- /* Allow the trigger to be styled by the parent */
8512
+ .muka-menu__search-icon .muka-icon,
8513
+ .muka-menu__search-clear .muka-icon,
8514
+ .muka-menu__search-clear:hover,
8515
+ .muka-menu__search-clear:hover .muka-icon {
8516
+ color: var(--color-text-subtle-default);
8307
8517
  }
8308
8518
 
8309
- .muka-context-menu__trigger:focus-visible {
8310
- outline: var(--contextmenu-trigger-outline-width) solid var(--contextmenu-trigger-outline-color);
8311
- outline-offset: var(--contextmenu-trigger-outline-offset);
8312
- border-radius: var(--border-radius-sm);
8519
+ .muka-menu__search--sm .muka-menu__search-icon,
8520
+ .muka-menu__search--sm .muka-menu__search-clear {
8521
+ width: var(--size-xl, 1.5rem);
8522
+ height: var(--size-xl, 1.5rem);
8313
8523
  }
8314
8524
 
8315
- /* ─── Animations ─────────────────────────────────────────────────────────── */
8316
-
8317
- @keyframes muka-menu-fade-in {
8318
- from {
8319
- opacity: 0;
8320
- }
8321
- to {
8322
- opacity: 1;
8323
- }
8324
- }
8525
+ .muka-menu__search-input {
8526
+ flex: 1 1 auto;
8527
+ min-width: 0;
8528
+ border: none;
8529
+ outline: none;
8530
+ background: transparent;
8531
+ padding: 0 var(--spacing-1);
8532
+ font-family: var(--text-input-md-fontFamily);
8533
+ font-size: var(--text-input-md-fontSize);
8534
+ font-weight: var(--text-input-md-fontWeight);
8535
+ line-height: var(--text-input-md-lineHeight);
8536
+ color: var(--color-text-default-default);
8537
+ }
8325
8538
 
8326
- @keyframes muka-menu-fade-out {
8327
- from {
8328
- opacity: 1;
8329
- }
8330
- to {
8331
- opacity: 0;
8332
- }
8539
+ .muka-menu__search--sm .muka-menu__search-input {
8540
+ font-family: var(--text-input-sm-fontFamily);
8541
+ font-size: var(--text-input-sm-fontSize);
8542
+ font-weight: var(--text-input-sm-fontWeight);
8543
+ line-height: var(--text-input-sm-lineHeight);
8333
8544
  }
8334
8545
 
8335
- @keyframes muka-menu-slide-up {
8336
- from {
8337
- opacity: 0;
8338
- transform: translateY(4px);
8339
- }
8340
- to {
8341
- opacity: 1;
8342
- transform: translateY(0);
8343
- }
8546
+ .muka-menu__search-input::placeholder {
8547
+ color: var(--color-text-subtle-default);
8344
8548
  }
8345
8549
 
8346
- @keyframes muka-menu-slide-down {
8347
- from {
8348
- opacity: 0;
8349
- transform: translateY(-4px);
8350
- }
8351
- to {
8352
- opacity: 1;
8353
- transform: translateY(0);
8354
- }
8550
+ .muka-menu__search-input::-webkit-search-cancel-button,
8551
+ .muka-menu__search-input::-webkit-search-decoration {
8552
+ -webkit-appearance: none;
8553
+ appearance: none;
8355
8554
  }
8356
8555
 
8357
- @keyframes muka-menu-slide-left {
8358
- from {
8359
- opacity: 0;
8360
- transform: translateX(4px);
8361
- }
8362
- to {
8363
- opacity: 1;
8364
- transform: translateX(0);
8365
- }
8556
+ .muka-menu__empty {
8557
+ display: flex;
8558
+ align-items: center;
8559
+ min-height: var(--menu-item-height);
8560
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
8561
+ color: var(--color-text-subtle-default);
8562
+ font-family: var(--text-input-md-fontFamily);
8563
+ font-size: var(--text-input-md-fontSize);
8564
+ font-weight: var(--text-input-md-fontWeight);
8565
+ line-height: var(--text-input-md-lineHeight);
8566
+ pointer-events: none;
8567
+ user-select: none;
8366
8568
  }
8367
8569
 
8368
- @keyframes muka-menu-slide-right {
8369
- from {
8370
- opacity: 0;
8371
- transform: translateX(-4px);
8372
- }
8373
- to {
8374
- opacity: 1;
8375
- transform: translateX(0);
8376
- }
8570
+ .muka-menu__search-clear {
8571
+ padding: 0;
8572
+ border: none;
8573
+ background: transparent;
8574
+ cursor: pointer;
8377
8575
  }
8378
8576
 
8577
+ .muka-menu__match {
8578
+ font-weight: var(--text-label-md-bold-fontWeight);
8579
+ }
8379
8580
 
8380
- /* ListItem */
8381
- /* ListItem Component Styles - Using Muka Design Tokens */
8581
+ .muka-menu__content--scrollbar {
8582
+ height: var(--menu-content-scroll-height, 20.625rem);
8583
+ max-height: var(--menu-content-scroll-height, 20.625rem);
8584
+ }
8382
8585
 
8383
- /* Base list item styles */
8384
- .muka-listitem {
8385
- /* Layout */
8386
- display: flex;
8387
- align-items: flex-start;
8388
- gap: var(--spacing-4);
8389
- padding: var(--spacing-5) var(--spacing-4);
8390
-
8391
- /* Background - using semantic tokens */
8392
- background-color: var(--color-surface-level3);
8393
-
8394
- /* Typography */
8395
- font-family: var(--alias-font-brand-family);
8396
-
8397
- /* Border and spacing */
8398
- border: none;
8399
- position: relative;
8400
-
8401
- /* Interaction - only apply if interactive */
8402
- transition: background-color 0.2s ease, box-shadow 0.2s ease;
8586
+ .muka-menu__content[data-state='open'] {
8587
+ animation-name: muka-menu-fade-in;
8403
8588
  }
8404
8589
 
8405
- /* Interactive state */
8406
- .muka-listitem--interactive {
8407
- cursor: pointer;
8590
+ .muka-menu__content[data-state='closed'] {
8591
+ animation-name: muka-menu-fade-out;
8408
8592
  }
8409
8593
 
8410
- /*
8411
- * surface.hover / surface.pressed are theme-adaptive translucent tints, so they
8412
- * are layered on top of the item's base surface via an inset box-shadow overlay
8413
- * rather than replacing background-color. This preserves the base level (level3,
8414
- * or level2 when selected) and lets the tint read correctly on any surface.
8415
- */
8416
- .muka-listitem--interactive:hover:not(:disabled):not(.muka-listitem--disabled) {
8417
- box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
8594
+ .muka-menu__content[data-side='top'] {
8595
+ animation-name: muka-menu-slide-down;
8418
8596
  }
8419
8597
 
8420
- .muka-listitem--interactive:active:not(:disabled):not(.muka-listitem--disabled),
8421
- .muka-listitem--interactive.muka-listitem--pressed:not(:disabled):not(.muka-listitem--disabled) {
8422
- box-shadow: inset 0 0 0 9999px var(--color-surface-pressed);
8598
+ .muka-menu__content[data-side='bottom'] {
8599
+ animation-name: muka-menu-slide-up;
8423
8600
  }
8424
8601
 
8425
- /* Focus styles for accessibility */
8426
- .muka-listitem:focus-visible {
8427
- outline: 2px solid var(--color-border-focus);
8428
- outline-offset: -2px;
8602
+ .muka-menu__content[data-side='left'] {
8603
+ animation-name: muka-menu-slide-right;
8429
8604
  }
8430
8605
 
8431
- /* Disabled state */
8432
- .muka-listitem--disabled {
8433
- opacity: 0.5;
8606
+ .muka-menu__content[data-side='right'] {
8607
+ animation-name: muka-menu-slide-left;
8608
+ }
8609
+
8610
+ /* ─── Menu Item ──────────────────────────────────────────────────────────── */
8611
+
8612
+ .muka-menu__item {
8613
+ position: relative;
8614
+ display: flex;
8615
+ align-items: center;
8616
+ gap: var(--menu-item-gap);
8617
+ min-height: var(--menu-item-height);
8618
+ /* Right gutter always reserved for floating trailers (enter / check). */
8619
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-right) var(--menu-item-padding-y)
8620
+ var(--menu-item-padding-x);
8621
+ border-radius: var(--menu-item-border-radius);
8622
+ cursor: pointer;
8623
+ user-select: none;
8624
+ outline: none;
8625
+ font-family: var(--text-label-md-regular-fontFamily);
8626
+ font-size: var(--text-label-md-regular-fontSize);
8627
+ font-weight: var(--text-label-md-regular-fontWeight);
8628
+ line-height: var(--text-label-md-regular-lineHeight);
8629
+ color: var(--menu-item-color-default-foreground);
8630
+ background-color: var(--menu-item-color-default-background);
8631
+ transition: background-color 100ms ease, color 100ms ease;
8632
+ white-space: nowrap;
8633
+ }
8634
+
8635
+ .muka-menu__item:hover,
8636
+ .muka-menu__item[data-highlighted] {
8637
+ background-color: var(--menu-item-color-hover-background);
8638
+ color: var(--menu-item-color-hover-foreground);
8639
+ }
8640
+
8641
+ .muka-menu__item:focus,
8642
+ .muka-menu__item[data-highlighted]:focus {
8643
+ background-color: var(--menu-item-color-focus-background);
8644
+ color: var(--menu-item-color-focus-foreground);
8645
+ }
8646
+
8647
+ /* Disabled */
8648
+ .muka-menu__item--disabled,
8649
+ .muka-menu__item[data-disabled] {
8650
+ color: var(--menu-item-color-disabled-foreground);
8651
+ background-color: var(--menu-item-color-disabled-background);
8434
8652
  cursor: not-allowed;
8435
8653
  pointer-events: none;
8436
8654
  }
8437
8655
 
8438
- .muka-listitem--disabled:hover {
8439
- background-color: var(--color-surface-level3);
8656
+ .muka-menu__item--disabled .muka-menu__item-icon,
8657
+ .muka-menu__item[data-disabled] .muka-menu__item-icon {
8658
+ color: var(--menu-item-color-disabled-icon);
8440
8659
  }
8441
8660
 
8442
- /* Selected state */
8443
- .muka-listitem--selected {
8444
- background-color: var(--color-surface-level2);
8661
+ /* Destructive */
8662
+ .muka-menu__item--destructive {
8663
+ color: var(--menu-item-color-destructive-default-foreground);
8445
8664
  }
8446
8665
 
8447
- .muka-listitem--selected:hover {
8448
- box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
8666
+ .muka-menu__item--destructive .muka-menu__item-icon {
8667
+ color: var(--menu-item-color-destructive-default-icon);
8449
8668
  }
8450
8669
 
8451
- /* No divider modifier */
8452
- .muka-listitem--no-divider .muka-listitem__divider {
8453
- display: none;
8670
+ .muka-menu__item--destructive:hover,
8671
+ .muka-menu__item--destructive[data-highlighted] {
8672
+ background-color: var(--menu-item-color-destructive-hover-background);
8673
+ color: var(--menu-item-color-destructive-hover-foreground);
8454
8674
  }
8455
8675
 
8456
- /* Center content vertically when no caption */
8457
- .muka-listitem--no-caption {
8458
- align-items: center;
8676
+ .muka-menu__item--destructive:hover .muka-menu__item-icon,
8677
+ .muka-menu__item--destructive[data-highlighted] .muka-menu__item-icon {
8678
+ color: var(--menu-item-color-destructive-hover-icon);
8459
8679
  }
8460
8680
 
8461
- /* Leading content (icon or image) */
8462
- .muka-listitem__leading {
8681
+ /* ─── Item Parts ─────────────────────────────────────────────────────────── */
8682
+
8683
+ .muka-menu__item-icon {
8463
8684
  display: flex;
8464
8685
  align-items: center;
8465
8686
  justify-content: center;
8466
8687
  flex-shrink: 0;
8467
- width: 48px;
8468
- height: 48px;
8688
+ color: var(--menu-item-color-default-icon);
8689
+ transition: color 100ms ease;
8469
8690
  }
8470
8691
 
8471
- .muka-listitem__icon {
8472
- display: inline-flex;
8473
- align-items: center;
8474
- justify-content: center;
8475
- width: 32px;
8476
- height: 32px;
8477
- color: var(--color-text-default-default);
8692
+ .muka-menu__item:hover .muka-menu__item-icon,
8693
+ .muka-menu__item[data-highlighted] .muka-menu__item-icon {
8694
+ color: var(--menu-item-color-hover-icon);
8478
8695
  }
8479
8696
 
8480
- .muka-listitem__image {
8481
- width: 48px;
8482
- height: 48px;
8483
- border-radius: var(--radius-md);
8484
- object-fit: cover;
8697
+ .muka-menu__item-label {
8698
+ flex: 1 1 auto;
8699
+ min-width: 0;
8700
+ white-space: nowrap;
8485
8701
  }
8486
8702
 
8487
- /* Main content area */
8488
- .muka-listitem__content {
8489
- flex: 1;
8490
- display: flex;
8491
- align-items: center;
8492
- gap: var(--spacing-4);
8493
- min-width: 0;
8703
+ /* Shortcut trailers replace icons and sit with an 8px right inset. */
8704
+ .muka-menu__item--has-shortcut {
8705
+ padding-right: var(--spacing-2);
8494
8706
  }
8495
8707
 
8496
- .muka-listitem__text {
8497
- flex: 1;
8498
- display: flex;
8499
- flex-direction: column;
8500
- gap: var(--spacing-1);
8501
- min-width: 0;
8502
- }
8503
-
8504
- /* Label text */
8505
- .muka-listitem__label {
8506
- margin: 0;
8507
- padding: 0;
8508
-
8509
- /* Typography - using semantic tokens */
8510
- font-family: var(--alias-font-plain-family);
8511
- font-weight: var(--alias-font-plain-weight-semibold, 600);
8512
- font-size: var(--text-label-md-fontSize);
8513
- line-height: var(--text-label-md-lineHeight);
8514
- color: var(--color-text-default-default);
8515
-
8516
- /* Text handling */
8517
- overflow: hidden;
8518
- text-overflow: ellipsis;
8519
- white-space: nowrap;
8520
- }
8521
-
8522
- /* Caption text */
8523
- .muka-listitem__caption {
8524
- margin: 0;
8525
- padding: 0;
8526
-
8527
- /* Typography - using semantic tokens */
8528
- font-family: var(--alias-font-plain-family);
8529
- font-weight: var(--alias-font-plain-weight-regular, 400);
8530
- font-size: var(--text-body-sm-fontSize);
8531
- line-height: var(--text-body-sm-lineHeight);
8532
- color: var(--color-text-subtle-default);
8533
-
8534
- /* Text handling */
8535
- overflow: hidden;
8536
- text-overflow: ellipsis;
8708
+ .muka-menu__item-shortcut {
8709
+ flex-shrink: 0;
8710
+ margin-left: auto;
8711
+ padding-left: var(--menu-item-gap);
8712
+ font-family: var(--text-label-sm-regular-fontFamily);
8713
+ font-size: var(--text-label-sm-regular-fontSize);
8714
+ font-weight: var(--text-label-sm-regular-fontWeight);
8715
+ line-height: var(--text-label-sm-regular-lineHeight);
8716
+ color: var(--color-text-muted-default);
8537
8717
  white-space: nowrap;
8538
8718
  }
8539
8719
 
8540
- /* Trailing chevron */
8541
- .muka-listitem__chevron {
8542
- display: inline-flex;
8720
+ .muka-menu__item-hint {
8721
+ /* Figma: trailer sits with 8px margin top / right / bottom; 24px glyph centered inside. */
8722
+ position: absolute;
8723
+ top: var(--spacing-2);
8724
+ right: var(--spacing-2);
8725
+ bottom: var(--spacing-2);
8726
+ display: none;
8543
8727
  align-items: center;
8544
8728
  justify-content: center;
8545
- flex-shrink: 0;
8546
- width: 24px;
8547
- height: 24px;
8548
- color: var(--color-text-subtle-default);
8549
- }
8550
-
8551
- /* Bottom divider */
8552
- .muka-listitem__divider {
8553
- position: absolute;
8554
- bottom: 0;
8555
- left: 0;
8556
- right: 0;
8557
- height: 1px;
8558
- background-color: var(--color-border-default);
8729
+ width: var(--icon-size-default, 1.5rem);
8730
+ color: var(--color-text-muted-default);
8731
+ pointer-events: none;
8559
8732
  }
8560
8733
 
8561
- /* Button and anchor specific styles */
8562
- button.muka-listitem,
8563
- a.muka-listitem {
8564
- text-align: left;
8565
- width: 100%;
8734
+ .muka-menu__item--hint-enter[data-highlighted] .muka-menu__item-hint {
8735
+ display: flex;
8566
8736
  }
8567
8737
 
8568
- /* List item specific styles */
8569
- li.muka-listitem {
8570
- list-style: none;
8738
+ .muka-menu__item-chevron {
8739
+ position: absolute;
8740
+ top: var(--spacing-2);
8741
+ right: var(--spacing-2);
8742
+ bottom: var(--spacing-2);
8743
+ display: flex;
8744
+ align-items: center;
8745
+ justify-content: center;
8746
+ width: var(--icon-size-default, 1.5rem);
8747
+ color: var(--menu-shortcut-color);
8571
8748
  }
8572
8749
 
8750
+ /* ─── Indicator (Checkbox/Radio) ─────────────────────────────────────────── */
8573
8751
 
8574
- /* LicensePlateInput */
8575
- /* LicensePlateInput — Dutch RDW-style plate input
8576
- *
8577
- * Plate body colors are regulatory (EU/NL) and intentionally fixed:
8578
- * - Plate yellow: #F0CE3D
8579
- * - EU strip blue: #003399
8580
- * - EU stars yellow: #FFCC00
8581
- * - Plate text: #1A1A1A
8582
- *
8583
- * All surrounding UI (label, helper, focus ring, error border) uses Muka tokens.
8584
- */
8585
-
8586
- .muka-license-plate-input {
8587
- --plate-yellow: #f0ce3d;
8588
- --plate-blue: #003399;
8589
- --plate-text: #1a1a1a;
8590
- --plate-stars: #ffcc00;
8591
-
8592
- display: inline-flex;
8593
- flex-direction: column;
8594
- gap: var(--spacing-2);
8752
+ .muka-menu__item-indicator {
8753
+ display: flex;
8754
+ align-items: center;
8755
+ justify-content: center;
8756
+ width: var(--menu-checkbox-indicator-size);
8757
+ height: var(--menu-checkbox-indicator-size);
8758
+ flex-shrink: 0;
8759
+ color: var(--menu-checkbox-indicator-color);
8595
8760
  }
8596
8761
 
8597
- /* Plate body */
8598
- .muka-license-plate-input__plate {
8599
- display: inline-flex;
8600
- align-items: stretch;
8601
- background-color: var(--plate-yellow);
8602
- border-radius: var(--input-field-radius-md);
8603
- cursor: text;
8604
- position: relative;
8605
- overflow: hidden;
8606
- box-sizing: border-box;
8607
- /* Subtle outline to lift the plate from light backgrounds */
8608
- box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
8609
- /* Reserve space for the focus / error solid ring without shifting layout */
8610
- outline: 3px solid transparent;
8611
- outline-offset: 2px;
8612
- transition: outline-color 0.15s ease, opacity 0.15s ease;
8762
+ .muka-menu__item--checkbox,
8763
+ .muka-menu__item--radio {
8764
+ padding-left: var(--menu-item-padding-x);
8613
8765
  }
8614
8766
 
8615
- /* Size variants — plate aspect echoes the real RDW plate (~5:1) */
8616
- .muka-license-plate-input__plate--sm {
8617
- height: 44px;
8618
- min-width: 220px;
8619
- border-radius: var(--input-field-radius-sm);
8767
+ .muka-menu__item--checkbox-trailing,
8768
+ .muka-menu__item--radio-check {
8769
+ /* Same reserved right gutter as default items — trailing indicator floats. */
8770
+ padding-right: var(--menu-item-padding-right);
8620
8771
  }
8621
8772
 
8622
- .muka-license-plate-input__plate--md {
8623
- height: 60px;
8624
- min-width: 300px;
8625
- border-radius: var(--input-field-radius-md);
8773
+ .muka-menu__item--radio-check[data-state='checked'] {
8774
+ background-color: var(--menu-item-color-selected-background);
8626
8775
  }
8627
8776
 
8628
- .muka-license-plate-input__plate--lg {
8629
- height: 80px;
8630
- min-width: 400px;
8631
- border-radius: var(--input-field-radius-lg);
8777
+ .muka-menu__item-indicator--trailing {
8778
+ /* Match enter-hint trailer: 8px inset, 24px box (override leading indicator size). */
8779
+ position: absolute;
8780
+ top: var(--spacing-2);
8781
+ right: var(--spacing-2);
8782
+ bottom: var(--spacing-2);
8783
+ display: flex;
8784
+ align-items: center;
8785
+ justify-content: center;
8786
+ width: var(--icon-size-default, 1.5rem);
8787
+ height: auto;
8788
+ max-height: none;
8789
+ transform: none;
8790
+ color: var(--color-text-subtle-default);
8632
8791
  }
8633
8792
 
8634
- /* Focus — solid outline ring */
8635
- .muka-license-plate-input__plate--focused:not(.muka-license-plate-input__plate--disabled) {
8636
- outline-color: var(--input-field-color-focus-border);
8793
+ .muka-menu__item-indicator--trailing > [data-state] {
8794
+ display: flex;
8795
+ align-items: center;
8796
+ justify-content: center;
8797
+ width: 100%;
8798
+ height: 100%;
8637
8799
  }
8638
8800
 
8639
- /* Error — solid outline ring in error color */
8640
- .muka-license-plate-input__plate--error:not(.muka-license-plate-input__plate--disabled) {
8641
- outline-color: var(--input-field-color-error-border);
8801
+ .muka-menu__radio-dot {
8802
+ width: 8px;
8803
+ height: 8px;
8804
+ border-radius: 50%;
8805
+ background-color: var(--menu-radio-indicator-color);
8642
8806
  }
8643
8807
 
8644
- /* Disabled */
8645
- .muka-license-plate-input__plate--disabled {
8646
- cursor: not-allowed;
8647
- opacity: 0.55;
8648
- }
8808
+ /* ─── Separator ──────────────────────────────────────────────────────────── */
8649
8809
 
8650
- /* EU strip */
8651
- .muka-license-plate-input__eu-strip {
8652
- display: inline-flex;
8653
- flex-direction: column;
8654
- align-items: center;
8655
- justify-content: center;
8656
- background-color: var(--plate-blue);
8657
- color: #ffffff;
8658
- flex-shrink: 0;
8659
- padding: 0 0.4em;
8660
- gap: 0.15em;
8661
- /* Strip width scales with plate height for a consistent ratio */
8662
- width: 14%;
8663
- min-width: 36px;
8810
+ .muka-menu__separator {
8811
+ height: var(--menu-separator-height);
8812
+ margin: var(--menu-separator-margin-y) 0;
8813
+ background-color: var(--menu-separator-color);
8664
8814
  }
8665
8815
 
8666
- .muka-license-plate-input__eu-stars {
8667
- width: 60%;
8668
- max-width: 28px;
8669
- aspect-ratio: 1 / 1;
8670
- display: block;
8671
- }
8816
+ /* ─── Group ──────────────────────────────────────────────────────────────── */
8672
8817
 
8673
- .muka-license-plate-input__plate--sm .muka-license-plate-input__eu-stars {
8674
- max-width: 20px;
8818
+ .muka-menu__group {
8819
+ /* No additional styles needed - just a container */
8675
8820
  }
8676
8821
 
8677
- .muka-license-plate-input__plate--lg .muka-license-plate-input__eu-stars {
8678
- max-width: 36px;
8822
+ .muka-menu__group-label {
8823
+ padding: var(--menu-group-label-padding-y) var(--menu-group-label-padding-x);
8824
+ font-family: var(--text-label-sm-semibold-fontFamily);
8825
+ font-size: var(--text-label-sm-semibold-fontSize);
8826
+ font-weight: var(--text-label-sm-semibold-fontWeight);
8827
+ line-height: var(--text-label-sm-semibold-lineHeight);
8828
+ color: var(--menu-group-label-color);
8829
+ text-transform: uppercase;
8830
+ letter-spacing: 0.05em;
8679
8831
  }
8680
8832
 
8681
- .muka-license-plate-input__country-code {
8682
- font-family:
8683
- 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
8684
- font-weight: 700;
8685
- letter-spacing: 0.04em;
8686
- line-height: 1;
8687
- color: #ffffff;
8688
- }
8833
+ /* ─── Radio Group ────────────────────────────────────────────────────────── */
8689
8834
 
8690
- .muka-license-plate-input__plate--sm .muka-license-plate-input__country-code {
8691
- font-size: 10px;
8835
+ .muka-menu__radio-group {
8836
+ /* No additional styles needed - just a container */
8692
8837
  }
8693
8838
 
8694
- .muka-license-plate-input__plate--md .muka-license-plate-input__country-code {
8695
- font-size: 13px;
8696
- }
8839
+ /* ─── Context Menu Trigger ───────────────────────────────────────────────── */
8697
8840
 
8698
- .muka-license-plate-input__plate--lg .muka-license-plate-input__country-code {
8699
- font-size: 16px;
8841
+ .muka-context-menu__trigger {
8842
+ /* Allow the trigger to be styled by the parent */
8700
8843
  }
8701
8844
 
8702
- /* Native input */
8703
- .muka-license-plate-input__native {
8704
- flex: 1;
8705
- min-width: 0;
8706
- border: none;
8707
- outline: none;
8708
- background: transparent;
8709
- color: var(--plate-text);
8710
- text-align: center;
8711
- text-transform: uppercase;
8712
- letter-spacing: 0.06em;
8713
- /* Plate font — bold condensed sans is closest to the FE-Schrift look without
8714
- shipping a custom font. JetBrains Mono is the system mono brand font. */
8715
- font-family:
8716
- 'Arial Narrow', 'Helvetica Neue', Helvetica, Arial, sans-serif;
8717
- font-weight: 800;
8718
- padding: 0 0.5em;
8719
- width: 100%;
8720
- caret-color: var(--plate-text);
8845
+ .muka-context-menu__trigger:focus-visible {
8846
+ outline: var(--contextmenu-trigger-outline-width) solid var(--contextmenu-trigger-outline-color);
8847
+ outline-offset: var(--contextmenu-trigger-outline-offset);
8848
+ border-radius: var(--border-radius-sm);
8721
8849
  }
8722
8850
 
8723
- .muka-license-plate-input__plate--sm .muka-license-plate-input__native {
8724
- font-size: 22px;
8725
- }
8851
+ /* ─── Animations ─────────────────────────────────────────────────────────── */
8726
8852
 
8727
- .muka-license-plate-input__plate--md .muka-license-plate-input__native {
8728
- font-size: 30px;
8853
+ @keyframes muka-menu-fade-in {
8854
+ from {
8855
+ opacity: 0;
8856
+ }
8857
+ to {
8858
+ opacity: 1;
8859
+ }
8729
8860
  }
8730
8861
 
8731
- .muka-license-plate-input__plate--lg .muka-license-plate-input__native {
8732
- font-size: 42px;
8862
+ @keyframes muka-menu-fade-out {
8863
+ from {
8864
+ opacity: 1;
8865
+ }
8866
+ to {
8867
+ opacity: 0;
8868
+ }
8733
8869
  }
8734
8870
 
8735
- .muka-license-plate-input__native::placeholder {
8736
- color: var(--plate-text);
8737
- opacity: 0.55;
8738
- font-weight: 700;
8739
- letter-spacing: 0.08em;
8871
+ @keyframes muka-menu-slide-up {
8872
+ from {
8873
+ opacity: 0;
8874
+ transform: translateY(4px);
8875
+ }
8876
+ to {
8877
+ opacity: 1;
8878
+ transform: translateY(0);
8879
+ }
8740
8880
  }
8741
8881
 
8742
- .muka-license-plate-input__plate--disabled .muka-license-plate-input__native {
8743
- cursor: not-allowed;
8882
+ @keyframes muka-menu-slide-down {
8883
+ from {
8884
+ opacity: 0;
8885
+ transform: translateY(-4px);
8886
+ }
8887
+ to {
8888
+ opacity: 1;
8889
+ transform: translateY(0);
8890
+ }
8744
8891
  }
8745
8892
 
8746
- /* Helper text */
8747
- .muka-license-plate-input__helper {
8748
- font-family: var(--text-label-sm-regular-fontFamily);
8749
- font-weight: var(--text-label-sm-regular-fontWeight);
8750
- font-size: var(--text-label-sm-regular-fontSize);
8751
- line-height: var(--text-label-sm-regular-lineHeight);
8752
- color: var(--color-text-subtle-default);
8753
- margin: 0;
8893
+ @keyframes muka-menu-slide-left {
8894
+ from {
8895
+ opacity: 0;
8896
+ transform: translateX(4px);
8897
+ }
8898
+ to {
8899
+ opacity: 1;
8900
+ transform: translateX(0);
8901
+ }
8754
8902
  }
8755
8903
 
8756
- /* Error message */
8757
- .muka-license-plate-input__error {
8758
- font-family: var(--text-label-sm-regular-fontFamily);
8759
- font-weight: var(--text-label-sm-regular-fontWeight);
8760
- font-size: var(--text-label-sm-regular-fontSize);
8761
- line-height: var(--text-label-sm-regular-lineHeight);
8762
- color: var(--color-state-error-default);
8763
- margin: 0;
8904
+ @keyframes muka-menu-slide-right {
8905
+ from {
8906
+ opacity: 0;
8907
+ transform: translateX(-4px);
8908
+ }
8909
+ to {
8910
+ opacity: 1;
8911
+ transform: translateX(0);
8912
+ }
8764
8913
  }
8765
8914
 
8766
8915
 
@@ -8992,7 +9141,8 @@ li.muka-listitem {
8992
9141
  height: var(--icon-size-default);
8993
9142
  }
8994
9143
 
8995
- .muka-input__clear {
9144
+ .muka-input__clear,
9145
+ .muka-input__reveal {
8996
9146
  display: inline-flex;
8997
9147
  align-items: center;
8998
9148
  justify-content: center;
@@ -9006,7 +9156,8 @@ li.muka-listitem {
9006
9156
  cursor: pointer;
9007
9157
  }
9008
9158
 
9009
- .muka-input__field--sm .muka-input__clear {
9159
+ .muka-input__field--sm .muka-input__clear,
9160
+ .muka-input__field--sm .muka-input__reveal {
9010
9161
  width: var(--size-xl, 1.5rem);
9011
9162
  height: var(--size-xl, 1.5rem);
9012
9163
  }
@@ -9015,14 +9166,19 @@ li.muka-listitem {
9015
9166
  .muka-input__icon .muka-icon,
9016
9167
  .muka-input__clear .muka-icon,
9017
9168
  .muka-input__clear:hover,
9018
- .muka-input__clear:hover .muka-icon {
9169
+ .muka-input__clear:hover .muka-icon,
9170
+ .muka-input__reveal .muka-icon,
9171
+ .muka-input__reveal:hover,
9172
+ .muka-input__reveal:hover .muka-icon {
9019
9173
  color: var(--color-text-subtle-default);
9020
9174
  }
9021
9175
 
9022
9176
  .muka-input__field--disabled .muka-input__icon,
9023
9177
  .muka-input__field--disabled .muka-input__icon .muka-icon,
9024
9178
  .muka-input__field--disabled .muka-input__clear,
9025
- .muka-input__field--disabled .muka-input__clear .muka-icon {
9179
+ .muka-input__field--disabled .muka-input__clear .muka-icon,
9180
+ .muka-input__field--disabled .muka-input__reveal,
9181
+ .muka-input__field--disabled .muka-input__reveal .muka-icon {
9026
9182
  color: var(--input-field-color-disabled-foreground);
9027
9183
  }
9028
9184
 
@@ -10765,6 +10921,11 @@ li.muka-listitem {
10765
10921
  transition: background-color 0.15s ease;
10766
10922
  }
10767
10923
 
10924
+ /* Last body row: no bottom border (matches Table; avoids a double line at the table edge). */
10925
+ .muka-data-table__body .muka-data-table__row:last-child {
10926
+ border-bottom: none;
10927
+ }
10928
+
10768
10929
  .muka-data-table__row:not(.muka-data-table__row--empty):not(.muka-data-table__row--selected):hover {
10769
10930
  background-color: var(--datatable-row-hover-background);
10770
10931
  }
@@ -12166,6 +12327,128 @@ li.muka-listitem {
12166
12327
  }
12167
12328
 
12168
12329
 
12330
+ /* ChatPhotoGrid */
12331
+ /* ChatPhotoGrid Component Styles */
12332
+
12333
+ /*
12334
+ * The grid clips to its own radius and the tiles stay square, so only the four
12335
+ * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
12336
+ */
12337
+ .muka-chat-photo-grid {
12338
+ display: grid;
12339
+ gap: var(--chatphotogrid-gap);
12340
+ width: 100%;
12341
+ min-width: 0;
12342
+ overflow: hidden;
12343
+ border-radius: var(--chatphotogrid-radius);
12344
+ }
12345
+
12346
+ /* ─── Tiles ────────────────────────────────────────────── */
12347
+
12348
+ .muka-chat-photo-grid__tile {
12349
+ position: relative;
12350
+ display: block;
12351
+ overflow: hidden;
12352
+ min-width: 0;
12353
+ padding: 0;
12354
+ margin: 0;
12355
+ border: none;
12356
+ background-color: var(--chatphotogrid-color-placeholder);
12357
+ aspect-ratio: 1 / 1;
12358
+ }
12359
+
12360
+ button.muka-chat-photo-grid__tile {
12361
+ cursor: pointer;
12362
+ appearance: none;
12363
+ }
12364
+
12365
+ button.muka-chat-photo-grid__tile:focus-visible {
12366
+ outline: var(--border-width-bold) solid var(--color-border-focus);
12367
+ /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
12368
+ outline-offset: calc(-1 * var(--border-width-bold));
12369
+ }
12370
+
12371
+ .muka-chat-photo-grid__image {
12372
+ display: block;
12373
+ width: 100%;
12374
+ height: 100%;
12375
+ object-fit: cover;
12376
+ }
12377
+
12378
+ /* ─── Overflow tile ────────────────────────────────────── */
12379
+
12380
+ .muka-chat-photo-grid__overflow {
12381
+ position: absolute;
12382
+ inset: 0;
12383
+ display: flex;
12384
+ align-items: center;
12385
+ justify-content: center;
12386
+ background-color: var(--chatphotogrid-color-overflow-background);
12387
+ color: var(--chatphotogrid-color-overflow-foreground);
12388
+ font-family: var(--text-body-2xl-regular-fontFamily);
12389
+ font-weight: var(--text-body-2xl-regular-fontWeight);
12390
+ font-size: var(--text-body-2xl-regular-fontSize);
12391
+ line-height: var(--text-body-2xl-regular-lineHeight);
12392
+ }
12393
+
12394
+ /* ─── Layouts ──────────────────────────────────────────── */
12395
+
12396
+ .muka-chat-photo-grid--1 {
12397
+ grid-template-columns: 1fr;
12398
+ }
12399
+
12400
+ .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
12401
+ aspect-ratio: 4 / 3;
12402
+ }
12403
+
12404
+ .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
12405
+ aspect-ratio: 3 / 4;
12406
+ }
12407
+
12408
+ .muka-chat-photo-grid--2 {
12409
+ grid-template-columns: repeat(2, 1fr);
12410
+ }
12411
+
12412
+ .muka-chat-photo-grid--3 {
12413
+ grid-template-columns: repeat(3, 1fr);
12414
+ }
12415
+
12416
+ .muka-chat-photo-grid--4 {
12417
+ grid-template-columns: repeat(2, 1fr);
12418
+ }
12419
+
12420
+ /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
12421
+ .muka-chat-photo-grid--5 {
12422
+ grid-template-columns: repeat(6, 1fr);
12423
+ }
12424
+
12425
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
12426
+ grid-column: span 3;
12427
+ }
12428
+
12429
+ .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
12430
+ grid-column: span 2;
12431
+ }
12432
+
12433
+ .muka-chat-photo-grid--6,
12434
+ .muka-chat-photo-grid--overflow {
12435
+ grid-template-columns: repeat(3, 1fr);
12436
+ }
12437
+
12438
+ /* ─── Print ────────────────────────────────────────────── */
12439
+
12440
+ @media print {
12441
+ .muka-chat-photo-grid {
12442
+ break-inside: avoid;
12443
+ }
12444
+
12445
+ .muka-chat-photo-grid__image {
12446
+ print-color-adjust: exact;
12447
+ -webkit-print-color-adjust: exact;
12448
+ }
12449
+ }
12450
+
12451
+
12169
12452
  /* ChatMessageStack */
12170
12453
  /* ChatMessageStack Component Styles */
12171
12454
 
@@ -12329,12 +12612,10 @@ li.muka-listitem {
12329
12612
  */
12330
12613
  width: fit-content;
12331
12614
  /*
12332
- * Stops short of the far edge at every width: the fixed cap once the
12333
- * conversation column reaches its own cap, the ratio below that, where the
12334
- * column runs full-bleed. Without that gap a long `own` bubble spans the
12335
- * column and reads no differently from a `peer` one.
12615
+ * Ceiling from design (Figma 5355:44091). Below it, wrapping text fills the
12616
+ * row; above it the fixed cap leaves room for own/peer alignment.
12336
12617
  */
12337
- max-width: min(var(--chatbubble-max-width), var(--chatbubble-max-width-ratio));
12618
+ max-width: var(--chatbubble-max-width);
12338
12619
  position: relative;
12339
12620
  display: flex;
12340
12621
  flex-direction: column;
@@ -12586,139 +12867,11 @@ li.muka-listitem {
12586
12867
  break-inside: avoid;
12587
12868
  print-color-adjust: exact;
12588
12869
  -webkit-print-color-adjust: exact;
12589
- }
12590
-
12591
- .muka-chat-message__menu,
12592
- .muka-chat-message__embed-copy,
12593
- .muka-chat-message__action-stack {
12594
- display: none;
12595
- }
12596
- }
12597
-
12598
-
12599
- /* ChatComposer */
12600
- /* ChatComposer Component Styles */
12601
-
12602
- /*
12603
- * The composer is a bare, fill-width row: no padding, background, border or
12604
- * max-width of its own (Figma 5243:14141). Whatever hosts it owns the
12605
- * container — see BottomBar's `chat` variant.
12606
- */
12607
- .muka-chat-composer {
12608
- display: flex;
12609
- flex-direction: column;
12610
- gap: var(--spacing-3);
12611
- width: 100%;
12612
- }
12613
-
12614
- .muka-chat-composer--disabled {
12615
- opacity: 0.6;
12616
- pointer-events: none;
12617
- }
12618
-
12619
- /* ─── Input row ────────────────────────────────────────── */
12620
-
12621
- .muka-chat-composer__row {
12622
- display: flex;
12623
- width: 100%;
12624
- align-items: flex-end;
12625
- gap: var(--spacing-3);
12626
- }
12627
-
12628
- /* ─── Text field ───────────────────────────────────────── */
12629
-
12630
- .muka-chat-composer__field {
12631
- display: flex;
12632
- flex: 1 1 auto;
12633
- min-width: 0;
12634
- box-sizing: border-box;
12635
- align-items: center;
12636
- gap: var(--spacing-1);
12637
- min-height: var(--input-field-height-lg, 48px);
12638
- padding: 0 var(--spacing-2);
12639
- border: var(--border-width-regular) solid var(--input-field-color-default-border);
12640
- border-radius: var(--input-field-radius-lg);
12641
- background-color: var(--input-field-color-default-background);
12642
- transition: border-color 0.12s ease;
12643
- }
12644
-
12645
- .muka-chat-composer__field:focus-within {
12646
- border-color: var(--input-field-color-focus-border, var(--color-action-default));
12647
- }
12648
-
12649
- .muka-chat-composer__input {
12650
- flex: 1 1 auto;
12651
- min-width: 0;
12652
- width: 100%;
12653
- box-sizing: border-box;
12654
- resize: none;
12655
- border: none;
12656
- background: transparent;
12657
- outline: none;
12658
- padding: 0 var(--spacing-1);
12659
- color: var(--color-text-default-default);
12660
- font-family: var(--text-body-base-regular-fontFamily);
12661
- font-weight: var(--text-body-base-regular-fontWeight);
12662
- font-size: var(--text-body-base-regular-fontSize);
12663
- line-height: var(--text-body-base-regular-lineHeight);
12664
- appearance: none;
12665
- -webkit-appearance: none;
12666
- }
12667
-
12668
- .muka-chat-composer__input::placeholder {
12669
- color: var(--color-text-subtle-default);
12670
- }
12671
-
12672
- /* Keep the in-field emoji button flush to the bottom-right as the field grows */
12673
- .muka-chat-composer__emoji {
12674
- flex-shrink: 0;
12675
- }
12676
-
12677
- /* ─── Recording bar ────────────────────────────────────── */
12678
-
12679
- .muka-chat-composer__recording {
12680
- display: flex;
12681
- flex: 1 1 auto;
12682
- min-width: 0;
12683
- box-sizing: border-box;
12684
- align-items: center;
12685
- min-height: var(--input-field-height-lg, 48px);
12686
- padding: var(--card-padding-sm);
12687
- border: var(--border-width-regular) solid var(--card-color-default-border);
12688
- border-radius: var(--radius-lg);
12689
- background-color: var(--card-color-default-background);
12690
- }
12691
-
12692
- /* ─── Staged attachments strip ─────────────────────────── */
12693
-
12694
- .muka-chat-composer__attachments-strip {
12695
- position: relative;
12696
- width: 100%;
12697
- }
12698
-
12699
- .muka-chat-composer__attachments {
12700
- display: flex;
12701
- gap: var(--spacing-3);
12702
- overflow-x: auto;
12703
- scroll-behavior: smooth;
12704
- scrollbar-width: none;
12705
- }
12706
-
12707
- .muka-chat-composer__attachments::-webkit-scrollbar {
12708
- display: none;
12709
- }
12710
-
12711
- .muka-chat-composer__overflow {
12712
- position: absolute;
12713
- top: 50%;
12714
- right: var(--spacing-2);
12715
- transform: translateY(-50%);
12716
- }
12717
-
12718
- /* ─── Print ────────────────────────────────────────────── */
12870
+ }
12719
12871
 
12720
- @media print {
12721
- .muka-chat-composer {
12872
+ .muka-chat-message__menu,
12873
+ .muka-chat-message__embed-copy,
12874
+ .muka-chat-message__action-stack {
12722
12875
  display: none;
12723
12876
  }
12724
12877
  }
@@ -14297,6 +14450,134 @@ li.muka-listitem {
14297
14450
  }
14298
14451
 
14299
14452
 
14453
+ /* ChatComposer */
14454
+ /* ChatComposer Component Styles */
14455
+
14456
+ /*
14457
+ * The composer is a bare, fill-width row: no padding, background, border or
14458
+ * max-width of its own (Figma 5243:14141). Whatever hosts it owns the
14459
+ * container — see BottomBar's `chat` variant.
14460
+ */
14461
+ .muka-chat-composer {
14462
+ display: flex;
14463
+ flex-direction: column;
14464
+ gap: var(--spacing-3);
14465
+ width: 100%;
14466
+ }
14467
+
14468
+ .muka-chat-composer--disabled {
14469
+ opacity: 0.6;
14470
+ pointer-events: none;
14471
+ }
14472
+
14473
+ /* ─── Input row ────────────────────────────────────────── */
14474
+
14475
+ .muka-chat-composer__row {
14476
+ display: flex;
14477
+ width: 100%;
14478
+ align-items: flex-end;
14479
+ gap: var(--spacing-3);
14480
+ }
14481
+
14482
+ /* ─── Text field ───────────────────────────────────────── */
14483
+
14484
+ .muka-chat-composer__field {
14485
+ display: flex;
14486
+ flex: 1 1 auto;
14487
+ min-width: 0;
14488
+ box-sizing: border-box;
14489
+ align-items: center;
14490
+ gap: var(--spacing-1);
14491
+ min-height: var(--input-field-height-lg, 48px);
14492
+ padding: 0 var(--spacing-2);
14493
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
14494
+ border-radius: var(--input-field-radius-lg);
14495
+ background-color: var(--input-field-color-default-background);
14496
+ transition: border-color 0.12s ease;
14497
+ }
14498
+
14499
+ .muka-chat-composer__field:focus-within {
14500
+ border-color: var(--input-field-color-focus-border, var(--color-action-default));
14501
+ }
14502
+
14503
+ .muka-chat-composer__input {
14504
+ flex: 1 1 auto;
14505
+ min-width: 0;
14506
+ width: 100%;
14507
+ box-sizing: border-box;
14508
+ resize: none;
14509
+ border: none;
14510
+ background: transparent;
14511
+ outline: none;
14512
+ padding: 0 var(--spacing-1);
14513
+ color: var(--color-text-default-default);
14514
+ font-family: var(--text-body-base-regular-fontFamily);
14515
+ font-weight: var(--text-body-base-regular-fontWeight);
14516
+ font-size: var(--text-body-base-regular-fontSize);
14517
+ line-height: var(--text-body-base-regular-lineHeight);
14518
+ appearance: none;
14519
+ -webkit-appearance: none;
14520
+ }
14521
+
14522
+ .muka-chat-composer__input::placeholder {
14523
+ color: var(--color-text-subtle-default);
14524
+ }
14525
+
14526
+ /* Keep the in-field emoji button flush to the bottom-right as the field grows */
14527
+ .muka-chat-composer__emoji {
14528
+ flex-shrink: 0;
14529
+ }
14530
+
14531
+ /* ─── Recording bar ────────────────────────────────────── */
14532
+
14533
+ .muka-chat-composer__recording {
14534
+ display: flex;
14535
+ flex: 1 1 auto;
14536
+ min-width: 0;
14537
+ box-sizing: border-box;
14538
+ align-items: center;
14539
+ min-height: var(--input-field-height-lg, 48px);
14540
+ padding: var(--card-padding-sm);
14541
+ border: var(--border-width-regular) solid var(--card-color-default-border);
14542
+ border-radius: var(--radius-lg);
14543
+ background-color: var(--card-color-default-background);
14544
+ }
14545
+
14546
+ /* ─── Staged attachments strip ─────────────────────────── */
14547
+
14548
+ .muka-chat-composer__attachments-strip {
14549
+ position: relative;
14550
+ width: 100%;
14551
+ }
14552
+
14553
+ .muka-chat-composer__attachments {
14554
+ display: flex;
14555
+ gap: var(--spacing-3);
14556
+ overflow-x: auto;
14557
+ scroll-behavior: smooth;
14558
+ scrollbar-width: none;
14559
+ }
14560
+
14561
+ .muka-chat-composer__attachments::-webkit-scrollbar {
14562
+ display: none;
14563
+ }
14564
+
14565
+ .muka-chat-composer__overflow {
14566
+ position: absolute;
14567
+ top: 50%;
14568
+ right: var(--spacing-2);
14569
+ transform: translateY(-50%);
14570
+ }
14571
+
14572
+ /* ─── Print ────────────────────────────────────────────── */
14573
+
14574
+ @media print {
14575
+ .muka-chat-composer {
14576
+ display: none;
14577
+ }
14578
+ }
14579
+
14580
+
14300
14581
  /* AppShell */
14301
14582
  /* AppShell Component Styles */
14302
14583
 
@@ -15036,125 +15317,3 @@ li.muka-listitem {
15036
15317
  border-bottom: none;
15037
15318
  }
15038
15319
 
15039
-
15040
- /* ChatPhotoGrid */
15041
- /* ChatPhotoGrid Component Styles */
15042
-
15043
- /*
15044
- * The grid clips to its own radius and the tiles stay square, so only the four
15045
- * outer corners round — matching the Figma "Wrapper" frame (5225:1394).
15046
- */
15047
- .muka-chat-photo-grid {
15048
- display: grid;
15049
- gap: var(--chatphotogrid-gap);
15050
- width: 100%;
15051
- min-width: 0;
15052
- overflow: hidden;
15053
- border-radius: var(--chatphotogrid-radius);
15054
- }
15055
-
15056
- /* ─── Tiles ────────────────────────────────────────────── */
15057
-
15058
- .muka-chat-photo-grid__tile {
15059
- position: relative;
15060
- display: block;
15061
- overflow: hidden;
15062
- min-width: 0;
15063
- padding: 0;
15064
- margin: 0;
15065
- border: none;
15066
- background-color: var(--chatphotogrid-color-placeholder);
15067
- aspect-ratio: 1 / 1;
15068
- }
15069
-
15070
- button.muka-chat-photo-grid__tile {
15071
- cursor: pointer;
15072
- appearance: none;
15073
- }
15074
-
15075
- button.muka-chat-photo-grid__tile:focus-visible {
15076
- outline: var(--border-width-bold) solid var(--color-border-focus);
15077
- /* Inset, so the grid's overflow clip cannot cut the ring off on corner tiles */
15078
- outline-offset: calc(-1 * var(--border-width-bold));
15079
- }
15080
-
15081
- .muka-chat-photo-grid__image {
15082
- display: block;
15083
- width: 100%;
15084
- height: 100%;
15085
- object-fit: cover;
15086
- }
15087
-
15088
- /* ─── Overflow tile ────────────────────────────────────── */
15089
-
15090
- .muka-chat-photo-grid__overflow {
15091
- position: absolute;
15092
- inset: 0;
15093
- display: flex;
15094
- align-items: center;
15095
- justify-content: center;
15096
- background-color: var(--chatphotogrid-color-overflow-background);
15097
- color: var(--chatphotogrid-color-overflow-foreground);
15098
- font-family: var(--text-body-2xl-regular-fontFamily);
15099
- font-weight: var(--text-body-2xl-regular-fontWeight);
15100
- font-size: var(--text-body-2xl-regular-fontSize);
15101
- line-height: var(--text-body-2xl-regular-lineHeight);
15102
- }
15103
-
15104
- /* ─── Layouts ──────────────────────────────────────────── */
15105
-
15106
- .muka-chat-photo-grid--1 {
15107
- grid-template-columns: 1fr;
15108
- }
15109
-
15110
- .muka-chat-photo-grid--landscape .muka-chat-photo-grid__tile {
15111
- aspect-ratio: 4 / 3;
15112
- }
15113
-
15114
- .muka-chat-photo-grid--portrait .muka-chat-photo-grid__tile {
15115
- aspect-ratio: 3 / 4;
15116
- }
15117
-
15118
- .muka-chat-photo-grid--2 {
15119
- grid-template-columns: repeat(2, 1fr);
15120
- }
15121
-
15122
- .muka-chat-photo-grid--3 {
15123
- grid-template-columns: repeat(3, 1fr);
15124
- }
15125
-
15126
- .muka-chat-photo-grid--4 {
15127
- grid-template-columns: repeat(2, 1fr);
15128
- }
15129
-
15130
- /* 5 photos: a 2-up row above a 3-up row, on a shared 6-column track */
15131
- .muka-chat-photo-grid--5 {
15132
- grid-template-columns: repeat(6, 1fr);
15133
- }
15134
-
15135
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(-n + 2) {
15136
- grid-column: span 3;
15137
- }
15138
-
15139
- .muka-chat-photo-grid--5 .muka-chat-photo-grid__tile:nth-child(n + 3) {
15140
- grid-column: span 2;
15141
- }
15142
-
15143
- .muka-chat-photo-grid--6,
15144
- .muka-chat-photo-grid--overflow {
15145
- grid-template-columns: repeat(3, 1fr);
15146
- }
15147
-
15148
- /* ─── Print ────────────────────────────────────────────── */
15149
-
15150
- @media print {
15151
- .muka-chat-photo-grid {
15152
- break-inside: avoid;
15153
- }
15154
-
15155
- .muka-chat-photo-grid__image {
15156
- print-color-adjust: exact;
15157
- -webkit-print-color-adjust: exact;
15158
- }
15159
- }
15160
-