@revikornmann/muka-ui 0.16.0 → 0.18.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 (204) hide show
  1. package/dist/cjs/components/ActionSheet/ActionSheet.js +1 -1
  2. package/dist/cjs/components/Breadcrumb/Breadcrumb.css +11 -3
  3. package/dist/cjs/components/Breadcrumb/Breadcrumb.js +19 -1
  4. package/dist/cjs/components/Breadcrumb/Breadcrumb.js.map +1 -1
  5. package/dist/cjs/components/ChatComposer/ChatComposer.js +12 -4
  6. package/dist/cjs/components/ChatComposer/ChatComposer.js.map +1 -1
  7. package/dist/cjs/components/ContextSelect/ContextSelect.css +117 -0
  8. package/dist/cjs/components/ContextSelect/ContextSelect.js +49 -0
  9. package/dist/cjs/components/ContextSelect/ContextSelect.js.map +1 -0
  10. package/dist/cjs/components/ContextSelect/index.js +11 -0
  11. package/dist/cjs/components/ContextSelect/index.js.map +1 -0
  12. package/dist/cjs/components/EmojiPicker/EmojiPicker.css +19 -0
  13. package/dist/cjs/components/EmojiPicker/EmojiPicker.js +54 -0
  14. package/dist/cjs/components/EmojiPicker/EmojiPicker.js.map +1 -0
  15. package/dist/cjs/components/EmojiPicker/index.js +12 -0
  16. package/dist/cjs/components/EmojiPicker/index.js.map +1 -0
  17. package/dist/cjs/components/Icon/custom/ArrowDropUpDownIcon.js +11 -0
  18. package/dist/cjs/components/Icon/custom/ArrowDropUpDownIcon.js.map +1 -0
  19. package/dist/cjs/components/Icon/iconRegistry.js +6 -0
  20. package/dist/cjs/components/Icon/iconRegistry.js.map +1 -1
  21. package/dist/cjs/components/Menu/Menu.css +112 -2
  22. package/dist/cjs/components/Menu/Menu.js +171 -39
  23. package/dist/cjs/components/Menu/Menu.js.map +1 -1
  24. package/dist/cjs/components/Menu/index.js +5 -1
  25. package/dist/cjs/components/Menu/index.js.map +1 -1
  26. package/dist/cjs/components/PhotoDraftStrip/PhotoDraftStrip.css +27 -0
  27. package/dist/cjs/components/PhotoDraftStrip/PhotoDraftStrip.js +36 -0
  28. package/dist/cjs/components/PhotoDraftStrip/PhotoDraftStrip.js.map +1 -0
  29. package/dist/cjs/components/PhotoDraftStrip/index.js +11 -0
  30. package/dist/cjs/components/PhotoDraftStrip/index.js.map +1 -0
  31. package/dist/cjs/components/RecordingBar/RecordingBar.css +47 -0
  32. package/dist/cjs/components/RecordingBar/RecordingBar.js +22 -0
  33. package/dist/cjs/components/RecordingBar/RecordingBar.js.map +1 -0
  34. package/dist/cjs/components/RecordingBar/index.js +11 -0
  35. package/dist/cjs/components/RecordingBar/index.js.map +1 -0
  36. package/dist/cjs/components/Scrollbar/Scrollbar.css +123 -0
  37. package/dist/cjs/components/Scrollbar/Scrollbar.js +118 -0
  38. package/dist/cjs/components/Scrollbar/Scrollbar.js.map +1 -0
  39. package/dist/cjs/components/Scrollbar/index.js +11 -0
  40. package/dist/cjs/components/Scrollbar/index.js.map +1 -0
  41. package/dist/cjs/components/VoiceMessage/VoiceMessage.css +29 -0
  42. package/dist/cjs/components/VoiceMessage/VoiceMessage.js +85 -0
  43. package/dist/cjs/components/VoiceMessage/VoiceMessage.js.map +1 -0
  44. package/dist/cjs/components/VoiceMessage/index.js +11 -0
  45. package/dist/cjs/components/VoiceMessage/index.js.map +1 -0
  46. package/dist/cjs/components/VoiceRecorder/audio.js +61 -0
  47. package/dist/cjs/components/VoiceRecorder/audio.js.map +1 -0
  48. package/dist/cjs/components/VoiceRecorder/index.js +16 -0
  49. package/dist/cjs/components/VoiceRecorder/index.js.map +1 -0
  50. package/dist/cjs/components/VoiceRecorder/useVoiceRecorder.js +213 -0
  51. package/dist/cjs/components/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  52. package/dist/cjs/components/Waveform/Waveform.css +23 -0
  53. package/dist/cjs/components/Waveform/Waveform.js +36 -0
  54. package/dist/cjs/components/Waveform/Waveform.js.map +1 -0
  55. package/dist/cjs/components/Waveform/index.js +11 -0
  56. package/dist/cjs/components/Waveform/index.js.map +1 -0
  57. package/dist/cjs/components/index.js +27 -15
  58. package/dist/cjs/components/index.js.map +1 -1
  59. package/dist/esm/components/ActionSheet/ActionSheet.js +1 -1
  60. package/dist/esm/components/Breadcrumb/Breadcrumb.css +11 -3
  61. package/dist/esm/components/Breadcrumb/Breadcrumb.js +19 -1
  62. package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -1
  63. package/dist/esm/components/ChatComposer/ChatComposer.js +12 -4
  64. package/dist/esm/components/ChatComposer/ChatComposer.js.map +1 -1
  65. package/dist/esm/components/ContextSelect/ContextSelect.css +117 -0
  66. package/dist/esm/components/ContextSelect/ContextSelect.js +45 -0
  67. package/dist/esm/components/ContextSelect/ContextSelect.js.map +1 -0
  68. package/dist/esm/components/ContextSelect/index.js +3 -0
  69. package/dist/esm/components/ContextSelect/index.js.map +1 -0
  70. package/dist/esm/components/EmojiPicker/EmojiPicker.css +19 -0
  71. package/dist/esm/components/EmojiPicker/EmojiPicker.js +50 -0
  72. package/dist/esm/components/EmojiPicker/EmojiPicker.js.map +1 -0
  73. package/dist/esm/components/EmojiPicker/index.js +3 -0
  74. package/dist/esm/components/EmojiPicker/index.js.map +1 -0
  75. package/dist/esm/components/Icon/custom/ArrowDropUpDownIcon.js +7 -0
  76. package/dist/esm/components/Icon/custom/ArrowDropUpDownIcon.js.map +1 -0
  77. package/dist/esm/components/Icon/iconRegistry.js +6 -0
  78. package/dist/esm/components/Icon/iconRegistry.js.map +1 -1
  79. package/dist/esm/components/Menu/Menu.css +112 -2
  80. package/dist/esm/components/Menu/Menu.js +170 -40
  81. package/dist/esm/components/Menu/Menu.js.map +1 -1
  82. package/dist/esm/components/Menu/index.js +1 -1
  83. package/dist/esm/components/Menu/index.js.map +1 -1
  84. package/dist/esm/components/PhotoDraftStrip/PhotoDraftStrip.css +27 -0
  85. package/dist/esm/components/PhotoDraftStrip/PhotoDraftStrip.js +32 -0
  86. package/dist/esm/components/PhotoDraftStrip/PhotoDraftStrip.js.map +1 -0
  87. package/dist/esm/components/PhotoDraftStrip/index.js +3 -0
  88. package/dist/esm/components/PhotoDraftStrip/index.js.map +1 -0
  89. package/dist/esm/components/RecordingBar/RecordingBar.css +47 -0
  90. package/dist/esm/components/RecordingBar/RecordingBar.js +18 -0
  91. package/dist/esm/components/RecordingBar/RecordingBar.js.map +1 -0
  92. package/dist/esm/components/RecordingBar/index.js +3 -0
  93. package/dist/esm/components/RecordingBar/index.js.map +1 -0
  94. package/dist/esm/components/Scrollbar/Scrollbar.css +123 -0
  95. package/dist/esm/components/Scrollbar/Scrollbar.js +114 -0
  96. package/dist/esm/components/Scrollbar/Scrollbar.js.map +1 -0
  97. package/dist/esm/components/Scrollbar/index.js +3 -0
  98. package/dist/esm/components/Scrollbar/index.js.map +1 -0
  99. package/dist/esm/components/VoiceMessage/VoiceMessage.css +29 -0
  100. package/dist/esm/components/VoiceMessage/VoiceMessage.js +81 -0
  101. package/dist/esm/components/VoiceMessage/VoiceMessage.js.map +1 -0
  102. package/dist/esm/components/VoiceMessage/index.js +3 -0
  103. package/dist/esm/components/VoiceMessage/index.js.map +1 -0
  104. package/dist/esm/components/VoiceRecorder/audio.js +55 -0
  105. package/dist/esm/components/VoiceRecorder/audio.js.map +1 -0
  106. package/dist/esm/components/VoiceRecorder/index.js +4 -0
  107. package/dist/esm/components/VoiceRecorder/index.js.map +1 -0
  108. package/dist/esm/components/VoiceRecorder/useVoiceRecorder.js +210 -0
  109. package/dist/esm/components/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  110. package/dist/esm/components/Waveform/Waveform.css +23 -0
  111. package/dist/esm/components/Waveform/Waveform.js +32 -0
  112. package/dist/esm/components/Waveform/Waveform.js.map +1 -0
  113. package/dist/esm/components/Waveform/index.js +3 -0
  114. package/dist/esm/components/Waveform/index.js.map +1 -0
  115. package/dist/esm/components/index.js +9 -2
  116. package/dist/esm/components/index.js.map +1 -1
  117. package/dist/styles/components/Breadcrumb.css +11 -3
  118. package/dist/styles/components/ContextSelect.css +117 -0
  119. package/dist/styles/components/EmojiPicker.css +19 -0
  120. package/dist/styles/components/Menu.css +112 -2
  121. package/dist/styles/components/PhotoDraftStrip.css +27 -0
  122. package/dist/styles/components/RecordingBar.css +47 -0
  123. package/dist/styles/components/Scrollbar.css +123 -0
  124. package/dist/styles/components/VoiceMessage.css +29 -0
  125. package/dist/styles/components/Waveform.css +23 -0
  126. package/dist/styles/index.css +919 -393
  127. package/dist/styles/muka-dark.css +919 -393
  128. package/dist/styles/muka-light.css +919 -393
  129. package/dist/styles/tokens-bouwplan-dark.css +4 -2
  130. package/dist/styles/tokens-bouwplan-light.css +4 -2
  131. package/dist/styles/tokens-fscl-dark.css +4 -2
  132. package/dist/styles/tokens-fscl-light.css +4 -2
  133. package/dist/styles/tokens-grip-dark.css +4 -2
  134. package/dist/styles/tokens-grip-light.css +4 -2
  135. package/dist/styles/tokens-muka-dark.css +4 -2
  136. package/dist/styles/tokens-muka-light.css +4 -2
  137. package/dist/styles/tokens-wireframe-dark.css +4 -2
  138. package/dist/styles/tokens-wireframe-light.css +4 -2
  139. package/dist/styles/wireframe-dark.css +919 -393
  140. package/dist/styles/wireframe-light.css +919 -393
  141. package/dist/types/components/ActionSheet/ActionSheet.d.ts +1 -1
  142. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +27 -3
  143. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  144. package/dist/types/components/ChatComposer/ChatComposer.d.ts +7 -0
  145. package/dist/types/components/ChatComposer/ChatComposer.d.ts.map +1 -1
  146. package/dist/types/components/ContextSelect/ContextSelect.d.ts +62 -0
  147. package/dist/types/components/ContextSelect/ContextSelect.d.ts.map +1 -0
  148. package/dist/types/components/ContextSelect/index.d.ts +3 -0
  149. package/dist/types/components/ContextSelect/index.d.ts.map +1 -0
  150. package/dist/types/components/DataTable/DataTable.d.ts +1 -1
  151. package/dist/types/components/EmojiPicker/EmojiPicker.d.ts +28 -0
  152. package/dist/types/components/EmojiPicker/EmojiPicker.d.ts.map +1 -0
  153. package/dist/types/components/EmojiPicker/index.d.ts +3 -0
  154. package/dist/types/components/EmojiPicker/index.d.ts.map +1 -0
  155. package/dist/types/components/Icon/custom/ArrowDropUpDownIcon.d.ts +9 -0
  156. package/dist/types/components/Icon/custom/ArrowDropUpDownIcon.d.ts.map +1 -0
  157. package/dist/types/components/Icon/iconRegistry.d.ts.map +1 -1
  158. package/dist/types/components/Menu/Menu.d.ts +58 -28
  159. package/dist/types/components/Menu/Menu.d.ts.map +1 -1
  160. package/dist/types/components/Menu/index.d.ts +2 -2
  161. package/dist/types/components/Menu/index.d.ts.map +1 -1
  162. package/dist/types/components/PhotoDraftStrip/PhotoDraftStrip.d.ts +51 -0
  163. package/dist/types/components/PhotoDraftStrip/PhotoDraftStrip.d.ts.map +1 -0
  164. package/dist/types/components/PhotoDraftStrip/index.d.ts +3 -0
  165. package/dist/types/components/PhotoDraftStrip/index.d.ts.map +1 -0
  166. package/dist/types/components/RecordingBar/RecordingBar.d.ts +22 -0
  167. package/dist/types/components/RecordingBar/RecordingBar.d.ts.map +1 -0
  168. package/dist/types/components/RecordingBar/index.d.ts +3 -0
  169. package/dist/types/components/RecordingBar/index.d.ts.map +1 -0
  170. package/dist/types/components/Scrollbar/Scrollbar.d.ts +19 -0
  171. package/dist/types/components/Scrollbar/Scrollbar.d.ts.map +1 -0
  172. package/dist/types/components/Scrollbar/index.d.ts +3 -0
  173. package/dist/types/components/Scrollbar/index.d.ts.map +1 -0
  174. package/dist/types/components/VoiceMessage/VoiceMessage.d.ts +34 -0
  175. package/dist/types/components/VoiceMessage/VoiceMessage.d.ts.map +1 -0
  176. package/dist/types/components/VoiceMessage/index.d.ts +3 -0
  177. package/dist/types/components/VoiceMessage/index.d.ts.map +1 -0
  178. package/dist/types/components/VoiceRecorder/audio.d.ts +20 -0
  179. package/dist/types/components/VoiceRecorder/audio.d.ts.map +1 -0
  180. package/dist/types/components/VoiceRecorder/index.d.ts +4 -0
  181. package/dist/types/components/VoiceRecorder/index.d.ts.map +1 -0
  182. package/dist/types/components/VoiceRecorder/useVoiceRecorder.d.ts +48 -0
  183. package/dist/types/components/VoiceRecorder/useVoiceRecorder.d.ts.map +1 -0
  184. package/dist/types/components/Waveform/Waveform.d.ts +31 -0
  185. package/dist/types/components/Waveform/Waveform.d.ts.map +1 -0
  186. package/dist/types/components/Waveform/index.d.ts +3 -0
  187. package/dist/types/components/Waveform/index.d.ts.map +1 -0
  188. package/dist/types/components/index.d.ts +10 -4
  189. package/dist/types/components/index.d.ts.map +1 -1
  190. package/package.json +1 -1
  191. package/tokens/README.md +1 -1
  192. package/tokens/t4-components/menu.json +12 -2
  193. package/dist/cjs/components/ContextMenu/ContextMenu.js +0 -186
  194. package/dist/cjs/components/ContextMenu/ContextMenu.js.map +0 -1
  195. package/dist/cjs/components/ContextMenu/index.js +0 -17
  196. package/dist/cjs/components/ContextMenu/index.js.map +0 -1
  197. package/dist/esm/components/ContextMenu/ContextMenu.js +0 -145
  198. package/dist/esm/components/ContextMenu/ContextMenu.js.map +0 -1
  199. package/dist/esm/components/ContextMenu/index.js +0 -2
  200. package/dist/esm/components/ContextMenu/index.js.map +0 -1
  201. package/dist/types/components/ContextMenu/ContextMenu.d.ts +0 -188
  202. package/dist/types/components/ContextMenu/ContextMenu.d.ts.map +0 -1
  203. package/dist/types/components/ContextMenu/index.d.ts +0 -3
  204. package/dist/types/components/ContextMenu/index.d.ts.map +0 -1
@@ -1928,15 +1928,17 @@ body {
1928
1928
  --menu-content-padding: 0.25rem;
1929
1929
  --menu-content-min-width: 12rem;
1930
1930
  --menu-content-max-height: 20rem;
1931
+ --menu-content-scroll-height: 20.625rem;
1931
1932
  --menu-item-color-default-background: transparent;
1932
1933
  --menu-item-color-default-foreground: #211f26;
1933
1934
  --menu-item-color-default-icon: #8e8c99;
1934
- --menu-item-color-hover-background: rgba(43, 0, 85, 0.024);
1935
+ --menu-item-color-hover-background: #f2eff3;
1935
1936
  --menu-item-color-hover-foreground: #211f26;
1936
1937
  --menu-item-color-hover-icon: #211f26;
1937
- --menu-item-color-focus-background: #8da4ef;
1938
+ --menu-item-color-focus-background: #f2eff3;
1938
1939
  --menu-item-color-focus-foreground: #211f26;
1939
1940
  --menu-item-color-focus-icon: #211f26;
1941
+ --menu-item-color-selected-background: #eae7ec;
1940
1942
  --menu-item-color-disabled-background: transparent;
1941
1943
  --menu-item-color-disabled-foreground: #d0cdd7;
1942
1944
  --menu-item-color-disabled-icon: #d0cdd7;
@@ -2390,6 +2392,64 @@ body {
2390
2392
 
2391
2393
 
2392
2394
  /* ========== Component Styles ========== */
2395
+ /* Waveform */
2396
+ /* Waveform Component Styles */
2397
+
2398
+ /*
2399
+ * A row of amplitude bars. Muka ships no audio/waveform primitive; this is
2400
+ * drawn from color + spacing tokens only. Bar height (per-peak magnitude) and
2401
+ * the played/unplayed color split are data-driven, so they arrive as inline
2402
+ * styles from the component; everything else is tokenized here.
2403
+ */
2404
+ .muka-waveform {
2405
+ display: flex;
2406
+ align-items: center;
2407
+ gap: var(--spacing-05, 2px);
2408
+ width: 100%;
2409
+ min-width: 0;
2410
+ }
2411
+
2412
+ .muka-waveform__bar {
2413
+ flex: 1 1 0;
2414
+ min-width: 2px;
2415
+ max-width: 4px;
2416
+ border-radius: var(--radius-full, 9999px);
2417
+ background: var(--color-border-contrast);
2418
+ }
2419
+
2420
+
2421
+ /* VoiceMessage */
2422
+ /* VoiceMessage Component Styles */
2423
+
2424
+ .muka-voice-message {
2425
+ display: flex;
2426
+ align-items: center;
2427
+ gap: var(--spacing-3);
2428
+ width: 100%;
2429
+ min-width: min(16rem, 60vw);
2430
+ }
2431
+
2432
+ .muka-voice-message__wave {
2433
+ flex: 1 1 auto;
2434
+ min-width: 0;
2435
+ }
2436
+
2437
+ .muka-voice-message__time {
2438
+ flex: 0 0 auto;
2439
+ white-space: nowrap;
2440
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
2441
+ line-height: var(--text-label-sm-lineHeight, 1);
2442
+ font-variant-numeric: tabular-nums;
2443
+ color: var(--color-text-subtle-default);
2444
+ }
2445
+
2446
+ /* On the tinted own bubble the surface is the action color, so the timer flips
2447
+ * to the inverse text token for contrast. */
2448
+ .muka-voice-message--own .muka-voice-message__time {
2449
+ color: var(--color-text-default-inverse);
2450
+ }
2451
+
2452
+
2393
2453
  /* View */
2394
2454
  /* View Component Styles */
2395
2455
 
@@ -2921,6 +2981,196 @@ body {
2921
2981
  }
2922
2982
 
2923
2983
 
2984
+ /* Toast */
2985
+ /* Toast Component Styles - Using Muka Design Tokens */
2986
+
2987
+ .muka-toast {
2988
+ display: flex;
2989
+ align-items: flex-start;
2990
+ gap: var(--toast-gap);
2991
+ padding: var(--toast-padding-y) var(--toast-padding-x);
2992
+ border-radius: var(--toast-radius);
2993
+ box-shadow: var(--toast-shadow);
2994
+ min-width: var(--toast-width-min);
2995
+ max-width: var(--toast-width-max);
2996
+ pointer-events: auto;
2997
+ animation: muka-toast-slide-in 0.2s ease-out;
2998
+ }
2999
+
3000
+ /* Entry animation */
3001
+ @keyframes muka-toast-slide-in {
3002
+ from {
3003
+ opacity: 0;
3004
+ transform: translateY(8px);
3005
+ }
3006
+ to {
3007
+ opacity: 1;
3008
+ transform: translateY(0);
3009
+ }
3010
+ }
3011
+
3012
+ /* Position variants (for standalone use - typically managed by ToastProvider) */
3013
+ .muka-toast--top-right,
3014
+ .muka-toast--top-left,
3015
+ .muka-toast--top-center,
3016
+ .muka-toast--bottom-right,
3017
+ .muka-toast--bottom-left,
3018
+ .muka-toast--bottom-center {
3019
+ position: fixed;
3020
+ z-index: 9999;
3021
+ }
3022
+
3023
+ .muka-toast--top-right {
3024
+ top: var(--spacing-4);
3025
+ right: var(--spacing-4);
3026
+ }
3027
+
3028
+ .muka-toast--top-left {
3029
+ top: var(--spacing-4);
3030
+ left: var(--spacing-4);
3031
+ }
3032
+
3033
+ .muka-toast--top-center {
3034
+ top: var(--spacing-4);
3035
+ left: 50%;
3036
+ transform: translateX(-50%);
3037
+ }
3038
+
3039
+ .muka-toast--bottom-right {
3040
+ bottom: var(--spacing-4);
3041
+ right: var(--spacing-4);
3042
+ }
3043
+
3044
+ .muka-toast--bottom-left {
3045
+ bottom: var(--spacing-4);
3046
+ left: var(--spacing-4);
3047
+ }
3048
+
3049
+ .muka-toast--bottom-center {
3050
+ bottom: var(--spacing-4);
3051
+ left: 50%;
3052
+ transform: translateX(-50%);
3053
+ }
3054
+
3055
+ /* Variant: Info */
3056
+ .muka-toast--info {
3057
+ background-color: var(--toast-color-info-background);
3058
+ color: var(--toast-color-info-foreground);
3059
+ }
3060
+
3061
+ .muka-toast--info .muka-toast__icon {
3062
+ color: var(--toast-color-info-accent);
3063
+ }
3064
+
3065
+ /* Variant: Success */
3066
+ .muka-toast--success {
3067
+ background-color: var(--toast-color-success-background);
3068
+ color: var(--toast-color-success-foreground);
3069
+ }
3070
+
3071
+ .muka-toast--success .muka-toast__icon {
3072
+ color: var(--toast-color-success-accent);
3073
+ }
3074
+
3075
+ /* Variant: Warning */
3076
+ .muka-toast--warning {
3077
+ background-color: var(--toast-color-warning-background);
3078
+ color: var(--toast-color-warning-foreground);
3079
+ }
3080
+
3081
+ .muka-toast--warning .muka-toast__icon {
3082
+ color: var(--toast-color-warning-accent);
3083
+ }
3084
+
3085
+ /* Variant: Error */
3086
+ .muka-toast--error {
3087
+ background-color: var(--toast-color-error-background);
3088
+ color: var(--toast-color-error-foreground);
3089
+ }
3090
+
3091
+ .muka-toast--error .muka-toast__icon {
3092
+ color: var(--toast-color-error-accent);
3093
+ }
3094
+
3095
+ /* Icon */
3096
+ .muka-toast__icon {
3097
+ display: flex;
3098
+ align-items: center;
3099
+ justify-content: center;
3100
+ flex-shrink: 0;
3101
+ width: var(--toast-icon-size);
3102
+ height: var(--toast-icon-size);
3103
+ }
3104
+
3105
+ .muka-toast__icon svg {
3106
+ width: 100%;
3107
+ height: 100%;
3108
+ }
3109
+
3110
+ /* Content */
3111
+ .muka-toast__content {
3112
+ flex: 1;
3113
+ min-width: 0;
3114
+ }
3115
+
3116
+ .muka-toast__title {
3117
+ font-family: var(--text-label-md-semibold-fontFamily);
3118
+ font-weight: var(--text-label-md-semibold-fontWeight);
3119
+ font-size: var(--text-label-md-semibold-fontSize);
3120
+ line-height: var(--text-label-md-semibold-lineHeight);
3121
+ margin-bottom: var(--spacing-1);
3122
+ }
3123
+
3124
+ .muka-toast__message {
3125
+ font-family: var(--text-body-sm-regular-fontFamily);
3126
+ font-weight: var(--text-body-sm-regular-fontWeight);
3127
+ font-size: var(--text-body-sm-regular-fontSize);
3128
+ line-height: var(--text-body-sm-regular-lineHeight);
3129
+ }
3130
+
3131
+ /* Action slot */
3132
+ .muka-toast__action {
3133
+ display: flex;
3134
+ align-items: center;
3135
+ flex-shrink: 0;
3136
+ }
3137
+
3138
+ /* Dismiss button */
3139
+ .muka-toast__dismiss {
3140
+ display: flex;
3141
+ align-items: center;
3142
+ justify-content: center;
3143
+ flex-shrink: 0;
3144
+ width: 24px;
3145
+ height: 24px;
3146
+ padding: 0;
3147
+ margin: -2px -4px -2px 0;
3148
+ border: none;
3149
+ background: transparent;
3150
+ color: inherit;
3151
+ opacity: 0.7;
3152
+ cursor: pointer;
3153
+ border-radius: var(--border-radius-sm);
3154
+ transition: opacity 0.15s ease, background-color 0.15s ease;
3155
+ }
3156
+
3157
+ .muka-toast__dismiss:hover {
3158
+ opacity: 1;
3159
+ background-color: rgba(0, 0, 0, 0.05);
3160
+ }
3161
+
3162
+ .muka-toast__dismiss:focus-visible {
3163
+ outline: 2px solid var(--color-border-focus);
3164
+ outline-offset: 2px;
3165
+ opacity: 1;
3166
+ }
3167
+
3168
+ .muka-toast__dismiss svg {
3169
+ width: 16px;
3170
+ height: 16px;
3171
+ }
3172
+
3173
+
2924
3174
  /* Tile */
2925
3175
  /* Tile Component Styles - Using Muka Design Tokens */
2926
3176
 
@@ -3282,202 +3532,12 @@ body {
3282
3532
  }
3283
3533
 
3284
3534
 
3285
- /* Toast */
3286
- /* Toast Component Styles - Using Muka Design Tokens */
3287
-
3288
- .muka-toast {
3289
- display: flex;
3290
- align-items: flex-start;
3291
- gap: var(--toast-gap);
3292
- padding: var(--toast-padding-y) var(--toast-padding-x);
3293
- border-radius: var(--toast-radius);
3294
- box-shadow: var(--toast-shadow);
3295
- min-width: var(--toast-width-min);
3296
- max-width: var(--toast-width-max);
3297
- pointer-events: auto;
3298
- animation: muka-toast-slide-in 0.2s ease-out;
3299
- }
3535
+ /* Thumbnail */
3536
+ /* Thumbnail Component Styles - Using Muka Design Tokens */
3300
3537
 
3301
- /* Entry animation */
3302
- @keyframes muka-toast-slide-in {
3303
- from {
3304
- opacity: 0;
3305
- transform: translateY(8px);
3306
- }
3307
- to {
3308
- opacity: 1;
3309
- transform: translateY(0);
3310
- }
3311
- }
3312
-
3313
- /* Position variants (for standalone use - typically managed by ToastProvider) */
3314
- .muka-toast--top-right,
3315
- .muka-toast--top-left,
3316
- .muka-toast--top-center,
3317
- .muka-toast--bottom-right,
3318
- .muka-toast--bottom-left,
3319
- .muka-toast--bottom-center {
3320
- position: fixed;
3321
- z-index: 9999;
3322
- }
3323
-
3324
- .muka-toast--top-right {
3325
- top: var(--spacing-4);
3326
- right: var(--spacing-4);
3327
- }
3328
-
3329
- .muka-toast--top-left {
3330
- top: var(--spacing-4);
3331
- left: var(--spacing-4);
3332
- }
3333
-
3334
- .muka-toast--top-center {
3335
- top: var(--spacing-4);
3336
- left: 50%;
3337
- transform: translateX(-50%);
3338
- }
3339
-
3340
- .muka-toast--bottom-right {
3341
- bottom: var(--spacing-4);
3342
- right: var(--spacing-4);
3343
- }
3344
-
3345
- .muka-toast--bottom-left {
3346
- bottom: var(--spacing-4);
3347
- left: var(--spacing-4);
3348
- }
3349
-
3350
- .muka-toast--bottom-center {
3351
- bottom: var(--spacing-4);
3352
- left: 50%;
3353
- transform: translateX(-50%);
3354
- }
3355
-
3356
- /* Variant: Info */
3357
- .muka-toast--info {
3358
- background-color: var(--toast-color-info-background);
3359
- color: var(--toast-color-info-foreground);
3360
- }
3361
-
3362
- .muka-toast--info .muka-toast__icon {
3363
- color: var(--toast-color-info-accent);
3364
- }
3365
-
3366
- /* Variant: Success */
3367
- .muka-toast--success {
3368
- background-color: var(--toast-color-success-background);
3369
- color: var(--toast-color-success-foreground);
3370
- }
3371
-
3372
- .muka-toast--success .muka-toast__icon {
3373
- color: var(--toast-color-success-accent);
3374
- }
3375
-
3376
- /* Variant: Warning */
3377
- .muka-toast--warning {
3378
- background-color: var(--toast-color-warning-background);
3379
- color: var(--toast-color-warning-foreground);
3380
- }
3381
-
3382
- .muka-toast--warning .muka-toast__icon {
3383
- color: var(--toast-color-warning-accent);
3384
- }
3385
-
3386
- /* Variant: Error */
3387
- .muka-toast--error {
3388
- background-color: var(--toast-color-error-background);
3389
- color: var(--toast-color-error-foreground);
3390
- }
3391
-
3392
- .muka-toast--error .muka-toast__icon {
3393
- color: var(--toast-color-error-accent);
3394
- }
3395
-
3396
- /* Icon */
3397
- .muka-toast__icon {
3398
- display: flex;
3399
- align-items: center;
3400
- justify-content: center;
3401
- flex-shrink: 0;
3402
- width: var(--toast-icon-size);
3403
- height: var(--toast-icon-size);
3404
- }
3405
-
3406
- .muka-toast__icon svg {
3407
- width: 100%;
3408
- height: 100%;
3409
- }
3410
-
3411
- /* Content */
3412
- .muka-toast__content {
3413
- flex: 1;
3414
- min-width: 0;
3415
- }
3416
-
3417
- .muka-toast__title {
3418
- font-family: var(--text-label-md-semibold-fontFamily);
3419
- font-weight: var(--text-label-md-semibold-fontWeight);
3420
- font-size: var(--text-label-md-semibold-fontSize);
3421
- line-height: var(--text-label-md-semibold-lineHeight);
3422
- margin-bottom: var(--spacing-1);
3423
- }
3424
-
3425
- .muka-toast__message {
3426
- font-family: var(--text-body-sm-regular-fontFamily);
3427
- font-weight: var(--text-body-sm-regular-fontWeight);
3428
- font-size: var(--text-body-sm-regular-fontSize);
3429
- line-height: var(--text-body-sm-regular-lineHeight);
3430
- }
3431
-
3432
- /* Action slot */
3433
- .muka-toast__action {
3434
- display: flex;
3435
- align-items: center;
3436
- flex-shrink: 0;
3437
- }
3438
-
3439
- /* Dismiss button */
3440
- .muka-toast__dismiss {
3441
- display: flex;
3442
- align-items: center;
3443
- justify-content: center;
3444
- flex-shrink: 0;
3445
- width: 24px;
3446
- height: 24px;
3447
- padding: 0;
3448
- margin: -2px -4px -2px 0;
3449
- border: none;
3450
- background: transparent;
3451
- color: inherit;
3452
- opacity: 0.7;
3453
- cursor: pointer;
3454
- border-radius: var(--border-radius-sm);
3455
- transition: opacity 0.15s ease, background-color 0.15s ease;
3456
- }
3457
-
3458
- .muka-toast__dismiss:hover {
3459
- opacity: 1;
3460
- background-color: rgba(0, 0, 0, 0.05);
3461
- }
3462
-
3463
- .muka-toast__dismiss:focus-visible {
3464
- outline: 2px solid var(--color-border-focus);
3465
- outline-offset: 2px;
3466
- opacity: 1;
3467
- }
3468
-
3469
- .muka-toast__dismiss svg {
3470
- width: 16px;
3471
- height: 16px;
3472
- }
3473
-
3474
-
3475
- /* Thumbnail */
3476
- /* Thumbnail Component Styles - Using Muka Design Tokens */
3477
-
3478
- .muka-thumbnail {
3479
- position: relative;
3480
- flex-shrink: 0;
3538
+ .muka-thumbnail {
3539
+ position: relative;
3540
+ flex-shrink: 0;
3481
3541
  }
3482
3542
 
3483
3543
  /* The frame carries the border, background and shape clip. Keeping it separate
@@ -5411,6 +5471,29 @@ body {
5411
5471
  }
5412
5472
 
5413
5473
 
5474
+ /* Section */
5475
+ /* Section Component - Layout tokens (section.padding) */
5476
+
5477
+ .muka-section {
5478
+ box-sizing: border-box;
5479
+ }
5480
+
5481
+ .muka-section--padding-compact {
5482
+ padding-block: var(--section-padding-vertical-compact);
5483
+ padding-inline: var(--section-padding-horizontal-compact);
5484
+ }
5485
+
5486
+ .muka-section--padding-default {
5487
+ padding-block: var(--section-padding-vertical-default);
5488
+ padding-inline: var(--section-padding-horizontal-default);
5489
+ }
5490
+
5491
+ .muka-section--padding-spacious {
5492
+ padding-block: var(--section-padding-vertical-spacious);
5493
+ padding-inline: var(--section-padding-horizontal-spacious);
5494
+ }
5495
+
5496
+
5414
5497
  /* SearchInput */
5415
5498
  /* SearchInput Component Styles */
5416
5499
 
@@ -5580,47 +5663,200 @@ body {
5580
5663
  }
5581
5664
 
5582
5665
 
5583
- /* Section */
5584
- /* Section Component - Layout tokens (section.padding) */
5666
+ /* Scrollbar */
5667
+ /* Scrollbar — Figma menu scrollbar (32px rail, chevrons, grip thumb) */
5585
5668
 
5586
- .muka-section {
5587
- box-sizing: border-box;
5669
+ .muka-scrollbar {
5670
+ display: flex;
5671
+ flex-shrink: 0;
5672
+ border-left: var(--border-width-regular) solid var(--color-border-default);
5673
+ background-color: var(--color-surface-level3);
5674
+ user-select: none;
5588
5675
  }
5589
5676
 
5590
- .muka-section--padding-compact {
5591
- padding-block: var(--section-padding-vertical-compact);
5592
- padding-inline: var(--section-padding-horizontal-compact);
5677
+ .muka-scrollbar--vertical {
5678
+ flex-direction: column;
5679
+ width: var(--size-2xl, 32px);
5680
+ align-self: stretch;
5593
5681
  }
5594
5682
 
5595
- .muka-section--padding-default {
5596
- padding-block: var(--section-padding-vertical-default);
5597
- padding-inline: var(--section-padding-horizontal-default);
5683
+ .muka-scrollbar--horizontal {
5684
+ flex-direction: row;
5685
+ height: var(--size-2xl, 32px);
5686
+ width: 100%;
5687
+ border-left: none;
5688
+ border-top: var(--border-width-regular) solid var(--color-border-default);
5598
5689
  }
5599
5690
 
5600
- .muka-section--padding-spacious {
5601
- padding-block: var(--section-padding-vertical-spacious);
5602
- padding-inline: var(--section-padding-horizontal-spacious);
5691
+ .muka-scrollbar__button {
5692
+ display: flex;
5693
+ align-items: center;
5694
+ justify-content: center;
5695
+ flex-shrink: 0;
5696
+ width: 100%;
5697
+ height: var(--size-2xl, 32px);
5698
+ padding: 0;
5699
+ border: none;
5700
+ background-color: var(--button-color-tertiary-background-default, var(--color-surface-level3));
5701
+ color: var(--color-text-default-default);
5702
+ cursor: pointer;
5703
+ }
5704
+
5705
+ .muka-scrollbar--horizontal .muka-scrollbar__button {
5706
+ width: var(--size-2xl, 32px);
5707
+ height: 100%;
5603
5708
  }
5604
5709
 
5710
+ .muka-scrollbar__button:hover {
5711
+ background-color: var(--color-surface-hover);
5712
+ }
5605
5713
 
5606
- /* RangeSlider */
5607
- /* RangeSlider Component Styles - Using Muka Design Tokens */
5714
+ .muka-scrollbar__divider {
5715
+ flex-shrink: 0;
5716
+ width: 100%;
5717
+ height: 1px;
5718
+ background-color: var(--color-border-default);
5719
+ }
5608
5720
 
5609
- .muka-range-slider {
5721
+ .muka-scrollbar--horizontal .muka-scrollbar__divider {
5722
+ width: 1px;
5723
+ height: 100%;
5724
+ }
5725
+
5726
+ .muka-scrollbar__track {
5727
+ position: relative;
5610
5728
  display: flex;
5611
5729
  flex-direction: column;
5612
- gap: var(--spacing-1);
5730
+ flex: 1 1 auto;
5731
+ min-height: 0;
5613
5732
  width: 100%;
5614
5733
  }
5615
5734
 
5616
- /* ========================================
5617
- HEADER: label group (label + info + optional) and value readout
5618
- ======================================== */
5735
+ .muka-scrollbar--horizontal .muka-scrollbar__track {
5736
+ flex-direction: row;
5737
+ min-width: 0;
5738
+ height: 100%;
5739
+ }
5619
5740
 
5620
- .muka-range-slider__header {
5741
+ .muka-scrollbar__thumb {
5742
+ position: absolute;
5743
+ left: 50%;
5744
+ top: 0;
5745
+ z-index: 1;
5621
5746
  display: flex;
5622
5747
  align-items: center;
5623
- justify-content: space-between;
5748
+ justify-content: center;
5749
+ width: 14px;
5750
+ margin-left: -7px;
5751
+ cursor: grab;
5752
+ touch-action: none;
5753
+ }
5754
+
5755
+ .muka-scrollbar--horizontal .muka-scrollbar__thumb {
5756
+ left: 0;
5757
+ top: 50%;
5758
+ width: auto;
5759
+ height: 14px;
5760
+ margin-left: 0;
5761
+ margin-top: -7px;
5762
+ }
5763
+
5764
+ .muka-scrollbar__thumb:active {
5765
+ cursor: grabbing;
5766
+ }
5767
+
5768
+ .muka-scrollbar__grip {
5769
+ display: flex;
5770
+ flex-direction: column;
5771
+ gap: 2px;
5772
+ width: 14px;
5773
+ }
5774
+
5775
+ .muka-scrollbar__grip::before,
5776
+ .muka-scrollbar__grip::after {
5777
+ content: '';
5778
+ display: block;
5779
+ width: 100%;
5780
+ height: 2px;
5781
+ border-radius: var(--border-radius-md);
5782
+ background-color: var(--color-text-subtle-default);
5783
+ }
5784
+
5785
+ .muka-scrollbar__spacer {
5786
+ flex: 1 1 auto;
5787
+ min-height: 0;
5788
+ background-color: var(--color-surface-level2);
5789
+ }
5790
+
5791
+
5792
+ /* RecordingBar */
5793
+ /* RecordingBar Component Styles */
5794
+
5795
+ .muka-recording-bar {
5796
+ display: flex;
5797
+ align-items: center;
5798
+ gap: var(--spacing-3);
5799
+ width: 100%;
5800
+ min-width: 0;
5801
+ }
5802
+
5803
+ .muka-recording-bar__dot {
5804
+ flex: 0 0 auto;
5805
+ width: 0.625rem;
5806
+ height: 0.625rem;
5807
+ border-radius: var(--radius-full, 9999px);
5808
+ background: var(--alert-color-error-accent, var(--color-text-default-default));
5809
+ animation: muka-recording-bar-pulse 1s ease-in-out infinite;
5810
+ }
5811
+
5812
+ .muka-recording-bar__time {
5813
+ flex: 0 0 auto;
5814
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
5815
+ line-height: var(--text-label-sm-lineHeight, 1);
5816
+ font-variant-numeric: tabular-nums;
5817
+ color: var(--color-text-default-default);
5818
+ }
5819
+
5820
+ .muka-recording-bar__wave {
5821
+ flex: 1 1 auto;
5822
+ min-width: 0;
5823
+ }
5824
+
5825
+ @keyframes muka-recording-bar-pulse {
5826
+ 0%,
5827
+ 100% {
5828
+ opacity: 1;
5829
+ }
5830
+ 50% {
5831
+ opacity: 0.3;
5832
+ }
5833
+ }
5834
+
5835
+ @media (prefers-reduced-motion: reduce) {
5836
+ .muka-recording-bar__dot {
5837
+ animation: none;
5838
+ }
5839
+ }
5840
+
5841
+
5842
+ /* RangeSlider */
5843
+ /* RangeSlider Component Styles - Using Muka Design Tokens */
5844
+
5845
+ .muka-range-slider {
5846
+ display: flex;
5847
+ flex-direction: column;
5848
+ gap: var(--spacing-1);
5849
+ width: 100%;
5850
+ }
5851
+
5852
+ /* ========================================
5853
+ HEADER: label group (label + info + optional) and value readout
5854
+ ======================================== */
5855
+
5856
+ .muka-range-slider__header {
5857
+ display: flex;
5858
+ align-items: center;
5859
+ justify-content: space-between;
5624
5860
  gap: var(--spacing-2);
5625
5861
  min-height: 24px;
5626
5862
  }
@@ -7155,6 +7391,36 @@ body {
7155
7391
  }
7156
7392
 
7157
7393
 
7394
+ /* PhotoDraftStrip */
7395
+ /* PhotoDraftStrip Component Styles */
7396
+
7397
+ .muka-photo-draft-strip {
7398
+ display: flex;
7399
+ align-items: center;
7400
+ gap: var(--spacing-3);
7401
+ width: 100%;
7402
+ padding: var(--spacing-2) 0;
7403
+ }
7404
+
7405
+ .muka-photo-draft-strip__track {
7406
+ display: flex;
7407
+ gap: var(--spacing-2);
7408
+ flex: 1 1 auto;
7409
+ min-width: 0;
7410
+ overflow-x: auto;
7411
+ scroll-behavior: smooth;
7412
+ scrollbar-width: none;
7413
+ }
7414
+
7415
+ .muka-photo-draft-strip__track::-webkit-scrollbar {
7416
+ display: none;
7417
+ }
7418
+
7419
+ .muka-photo-draft-strip__item {
7420
+ flex: 0 0 auto;
7421
+ }
7422
+
7423
+
7158
7424
  /* Pagination */
7159
7425
  /* Pagination Component Styles */
7160
7426
 
@@ -7321,14 +7587,16 @@ body {
7321
7587
  /* ─── Content Container ──────────────────────────────────────────────────── */
7322
7588
 
7323
7589
  .muka-menu__content {
7590
+ display: flex;
7591
+ flex-direction: column;
7324
7592
  min-width: var(--menu-content-min-width);
7325
7593
  max-height: var(--menu-content-max-height);
7326
- overflow-y: auto;
7594
+ overflow: hidden;
7327
7595
  background-color: var(--menu-content-color-background);
7328
7596
  border: var(--menu-content-border-width) solid var(--menu-content-color-border);
7329
7597
  border-radius: var(--menu-content-border-radius);
7330
7598
  box-shadow: var(--menu-content-shadow);
7331
- padding: var(--menu-content-padding);
7599
+ padding: 0;
7332
7600
  z-index: 50;
7333
7601
 
7334
7602
  /* Animation */
@@ -7336,6 +7604,97 @@ body {
7336
7604
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
7337
7605
  }
7338
7606
 
7607
+ .muka-menu__body {
7608
+ display: flex;
7609
+ flex: 1 1 auto;
7610
+ min-height: 0;
7611
+ align-items: stretch;
7612
+ width: 100%;
7613
+ }
7614
+
7615
+ .muka-menu__viewport {
7616
+ flex: 1 1 auto;
7617
+ min-width: 0;
7618
+ min-height: 0;
7619
+ overflow-y: auto;
7620
+ padding: var(--menu-content-padding);
7621
+ }
7622
+
7623
+ .muka-menu__content--scrollbar .muka-menu__viewport {
7624
+ /* Custom scrollbar owns the chrome; hide native track */
7625
+ scrollbar-width: none;
7626
+ }
7627
+
7628
+ .muka-menu__content--scrollbar .muka-menu__viewport::-webkit-scrollbar {
7629
+ display: none;
7630
+ }
7631
+
7632
+ /* ─── Search header ──────────────────────────────────────────────────────── */
7633
+
7634
+ .muka-menu__search {
7635
+ display: flex;
7636
+ align-items: center;
7637
+ gap: var(--spacing-2);
7638
+ flex-shrink: 0;
7639
+ height: var(--size-3xl, 48px);
7640
+ padding: 0 var(--spacing-4);
7641
+ border-bottom: var(--border-width-regular) solid var(--color-border-default);
7642
+ }
7643
+
7644
+ .muka-menu__search-icon {
7645
+ display: flex;
7646
+ flex-shrink: 0;
7647
+ color: var(--color-text-subtle-default);
7648
+ }
7649
+
7650
+ .muka-menu__search-input {
7651
+ flex: 1 1 auto;
7652
+ min-width: 0;
7653
+ border: none;
7654
+ outline: none;
7655
+ background: transparent;
7656
+ font-family: var(--text-label-md-regular-font-family);
7657
+ font-size: var(--text-label-md-regular-font-size);
7658
+ font-weight: var(--text-label-md-regular-font-weight);
7659
+ line-height: var(--text-label-md-regular-line-height);
7660
+ color: var(--color-text-default-default);
7661
+ }
7662
+
7663
+ .muka-menu__search-input::placeholder {
7664
+ color: var(--color-text-subtle-default);
7665
+ }
7666
+
7667
+ .muka-menu__search-input::-webkit-search-cancel-button,
7668
+ .muka-menu__search-input::-webkit-search-decoration {
7669
+ -webkit-appearance: none;
7670
+ appearance: none;
7671
+ }
7672
+
7673
+ .muka-menu__search-clear {
7674
+ display: flex;
7675
+ align-items: center;
7676
+ justify-content: center;
7677
+ flex-shrink: 0;
7678
+ padding: 0;
7679
+ border: none;
7680
+ background: transparent;
7681
+ color: var(--color-text-subtle-default);
7682
+ cursor: pointer;
7683
+ }
7684
+
7685
+ .muka-menu__search-clear:hover {
7686
+ color: var(--color-text-default-default);
7687
+ }
7688
+
7689
+ .muka-menu__match {
7690
+ font-weight: var(--font-weight-bold, 700);
7691
+ }
7692
+
7693
+ .muka-menu__content--scrollbar {
7694
+ height: var(--menu-content-scroll-height, 20.625rem);
7695
+ max-height: var(--menu-content-scroll-height, 20.625rem);
7696
+ }
7697
+
7339
7698
  .muka-menu__content[data-state='open'] {
7340
7699
  animation-name: muka-menu-fade-in;
7341
7700
  }
@@ -7483,6 +7842,23 @@ body {
7483
7842
  padding-left: var(--menu-item-padding-x);
7484
7843
  }
7485
7844
 
7845
+ .muka-menu__item--radio-check {
7846
+ position: relative;
7847
+ padding-right: calc(var(--menu-item-padding-x) + var(--menu-checkbox-indicator-size) + var(--menu-item-gap));
7848
+ }
7849
+
7850
+ .muka-menu__item--radio-check[data-state='checked'] {
7851
+ background-color: var(--menu-item-color-selected-background);
7852
+ }
7853
+
7854
+ .muka-menu__item-indicator--trailing {
7855
+ position: absolute;
7856
+ right: var(--menu-item-padding-x);
7857
+ top: 50%;
7858
+ transform: translateY(-50%);
7859
+ color: var(--menu-checkbox-indicator-color);
7860
+ }
7861
+
7486
7862
  .muka-menu__radio-dot {
7487
7863
  width: 8px;
7488
7864
  height: 8px;
@@ -8860,6 +9236,28 @@ li.muka-listitem {
8860
9236
  }
8861
9237
 
8862
9238
 
9239
+ /* EmojiPicker */
9240
+ /* EmojiPicker Component Styles */
9241
+
9242
+ .muka-emoji-picker {
9243
+ display: grid;
9244
+ grid-template-columns: repeat(8, 1fr);
9245
+ gap: var(--spacing-1);
9246
+ padding: var(--spacing-2);
9247
+ max-height: 12rem;
9248
+ overflow-y: auto;
9249
+ background: var(--color-surface-level2);
9250
+ border: var(--border-width-regular, 1px) solid var(--color-border-default);
9251
+ border-radius: var(--radius-lg);
9252
+ box-shadow: var(--menu-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
9253
+ }
9254
+
9255
+ .muka-emoji-picker__glyph {
9256
+ font-size: 1.25rem;
9257
+ line-height: 1;
9258
+ }
9259
+
9260
+
8863
9261
  /* Drawer */
8864
9262
  /* Drawer Component Styles */
8865
9263
 
@@ -10182,46 +10580,166 @@ li.muka-listitem {
10182
10580
  }
10183
10581
 
10184
10582
 
10185
- /* Container */
10186
- /* Container Component - Layout tokens (container.max-width, container.gap) */
10187
-
10188
- .muka-container {
10189
- box-sizing: border-box;
10190
- width: 100%;
10191
- margin-inline: auto;
10192
- }
10583
+ /* ContextSelect */
10584
+ /* ContextSelect — split label (navigate) + chevron menu button (switch)
10585
+ *
10586
+ * Figma (5623:8651 / 5631:9344):
10587
+ * - Root: gap spacing/1 (4px) between label group and chevron
10588
+ * - Label group: gap spacing/2 (8px) icon↔label, pl spacing/2 (8px)
10589
+ * - Icons: 16px (icon.size.xs)
10590
+ */
10193
10591
 
10194
- /* Max-width variants */
10195
- .muka-container--max-width-small {
10196
- max-width: var(--container-max-width-small);
10592
+ .muka-context-select {
10593
+ display: inline-flex;
10594
+ position: relative;
10595
+ align-items: flex-start;
10596
+ gap: var(--spacing-1, 4px);
10197
10597
  }
10198
10598
 
10199
- .muka-container--max-width-medium {
10200
- max-width: var(--container-max-width-medium);
10599
+ .muka-context-select__label-group {
10600
+ display: inline-flex;
10601
+ align-items: center;
10602
+ gap: var(--spacing-2, 8px);
10603
+ height: var(--size-2xl, 32px);
10604
+ padding-left: var(--spacing-2, 8px);
10605
+ padding-right: 0;
10606
+ border-radius: var(--border-radius-lg);
10607
+ color: var(--color-text-default-default);
10608
+ text-decoration: none;
10609
+ border: none;
10610
+ background: transparent;
10611
+ font: inherit;
10612
+ cursor: default;
10201
10613
  }
10202
10614
 
10203
- .muka-container--max-width-large {
10204
- max-width: var(--container-max-width-large);
10615
+ .muka-context-select__label-group--link,
10616
+ .muka-context-select__label-group--button {
10617
+ cursor: pointer;
10205
10618
  }
10206
10619
 
10207
- .muka-container--max-width-xlarge {
10208
- max-width: var(--container-max-width-xlarge);
10620
+ .muka-context-select__label-group--link:hover .muka-context-select__label,
10621
+ .muka-context-select__label-group--button:hover .muka-context-select__label,
10622
+ .muka-context-select__label-group--link:focus-visible .muka-context-select__label,
10623
+ .muka-context-select__label-group--button:focus-visible .muka-context-select__label {
10624
+ text-decoration: underline;
10625
+ text-underline-offset: 2px;
10209
10626
  }
10210
10627
 
10211
- /* No gap — max-width only, no flex */
10212
- .muka-container--gap-none {
10213
- /* block layout by default */
10628
+ .muka-context-select__label-group--link:focus-visible,
10629
+ .muka-context-select__label-group--button:focus-visible {
10630
+ outline: 2px solid var(--color-border-focus);
10631
+ outline-offset: 2px;
10214
10632
  }
10215
10633
 
10216
- /* Gap variants — flex column with token gap */
10217
- .muka-container--gap-compact {
10218
- display: flex;
10219
- flex-direction: column;
10220
- gap: var(--container-gap-compact);
10634
+ .muka-context-select__label-group--button:disabled,
10635
+ .muka-context-select__label-group--link[aria-disabled='true'] {
10636
+ cursor: not-allowed;
10637
+ opacity: 0.5;
10638
+ pointer-events: none;
10221
10639
  }
10222
10640
 
10223
- .muka-container--gap-default {
10224
- display: flex;
10641
+ .muka-context-select__icon {
10642
+ display: inline-flex;
10643
+ flex-shrink: 0;
10644
+ align-items: center;
10645
+ justify-content: center;
10646
+ width: var(--icon-size-xs, 16px);
10647
+ height: var(--icon-size-xs, 16px);
10648
+ color: var(--color-text-default-default);
10649
+ }
10650
+
10651
+ .muka-context-select__icon .muka-icon {
10652
+ width: var(--icon-size-xs, 16px);
10653
+ height: var(--icon-size-xs, 16px);
10654
+ }
10655
+
10656
+ .muka-context-select__label {
10657
+ font-family: var(--text-label-sm-regular-font-family);
10658
+ font-size: var(--text-label-sm-regular-font-size);
10659
+ font-weight: var(--text-label-sm-regular-font-weight);
10660
+ line-height: var(--text-label-sm-regular-line-height);
10661
+ white-space: nowrap;
10662
+ }
10663
+
10664
+ .muka-context-select__menu-button {
10665
+ position: relative;
10666
+ display: inline-flex;
10667
+ flex-shrink: 0;
10668
+ align-items: center;
10669
+ justify-content: center;
10670
+ width: var(--size-2xl, 32px);
10671
+ height: var(--size-2xl, 32px);
10672
+ margin: 0;
10673
+ padding: 0;
10674
+ border: none;
10675
+ border-radius: var(--border-radius-lg);
10676
+ background: transparent;
10677
+ color: var(--color-text-default-default);
10678
+ cursor: pointer;
10679
+ }
10680
+
10681
+ .muka-context-select__menu-button:hover,
10682
+ .muka-context-select__menu-button:focus-visible,
10683
+ .muka-context-select__menu-button[data-state='open'],
10684
+ .muka-context-select--expanded .muka-context-select__menu-button {
10685
+ border: var(--border-width-regular) solid var(--color-border-default);
10686
+ }
10687
+
10688
+ .muka-context-select__menu-button:focus-visible {
10689
+ outline: 2px solid var(--color-border-focus);
10690
+ outline-offset: 2px;
10691
+ }
10692
+
10693
+ .muka-context-select__menu-button:disabled {
10694
+ cursor: not-allowed;
10695
+ opacity: 0.5;
10696
+ }
10697
+
10698
+ .muka-context-select__content {
10699
+ min-width: 17.5rem;
10700
+ }
10701
+
10702
+
10703
+ /* Container */
10704
+ /* Container Component - Layout tokens (container.max-width, container.gap) */
10705
+
10706
+ .muka-container {
10707
+ box-sizing: border-box;
10708
+ width: 100%;
10709
+ margin-inline: auto;
10710
+ }
10711
+
10712
+ /* Max-width variants */
10713
+ .muka-container--max-width-small {
10714
+ max-width: var(--container-max-width-small);
10715
+ }
10716
+
10717
+ .muka-container--max-width-medium {
10718
+ max-width: var(--container-max-width-medium);
10719
+ }
10720
+
10721
+ .muka-container--max-width-large {
10722
+ max-width: var(--container-max-width-large);
10723
+ }
10724
+
10725
+ .muka-container--max-width-xlarge {
10726
+ max-width: var(--container-max-width-xlarge);
10727
+ }
10728
+
10729
+ /* No gap — max-width only, no flex */
10730
+ .muka-container--gap-none {
10731
+ /* block layout by default */
10732
+ }
10733
+
10734
+ /* Gap variants — flex column with token gap */
10735
+ .muka-container--gap-compact {
10736
+ display: flex;
10737
+ flex-direction: column;
10738
+ gap: var(--container-gap-compact);
10739
+ }
10740
+
10741
+ .muka-container--gap-default {
10742
+ display: flex;
10225
10743
  flex-direction: column;
10226
10744
  gap: var(--container-gap-default);
10227
10745
  }
@@ -12312,9 +12830,17 @@ button.muka-chat-photo-grid__tile:focus-visible {
12312
12830
  user-select: none;
12313
12831
  }
12314
12832
 
12315
- /* Ellipsis */
12316
- .muka-breadcrumb__ellipsis {
12317
- color: var(--color-text-subtle-default);
12833
+ .muka-breadcrumb__item--context {
12834
+ gap: 0;
12835
+ }
12836
+
12837
+ .muka-breadcrumb__list:has(.muka-breadcrumb__item--context) {
12838
+ gap: 0;
12839
+ }
12840
+
12841
+ .muka-breadcrumb__item--context .muka-breadcrumb__separator {
12842
+ margin: 0;
12843
+ padding-inline: var(--spacing-1, 4px);
12318
12844
  }
12319
12845
 
12320
12846
  /* Size variants */
@@ -13518,148 +14044,6 @@ button.muka-chat-photo-grid__tile:focus-visible {
13518
14044
  }
13519
14045
 
13520
14046
 
13521
- /* ActionSheet */
13522
- /* ActionSheet Component Styles */
13523
-
13524
- .muka-action-sheet__inner {
13525
- display: flex;
13526
- flex-direction: column;
13527
- padding: 0 var(--spacing-4) var(--spacing-3) var(--spacing-4);
13528
- gap: var(--spacing-3);
13529
- }
13530
-
13531
- /* ─── Header ──────────────────────────────────────────── */
13532
-
13533
- .muka-action-sheet__header {
13534
- display: flex;
13535
- flex-direction: column;
13536
- align-items: center;
13537
- gap: var(--spacing-1);
13538
- padding: var(--spacing-2) 0 var(--spacing-3);
13539
- text-align: center;
13540
- }
13541
-
13542
- .muka-action-sheet__title {
13543
- margin: 0;
13544
- color: var(--color-text-default-default);
13545
- font-family: var(--text-label-md-semibold-fontFamily);
13546
- font-weight: var(--text-label-md-semibold-fontWeight);
13547
- font-size: var(--text-label-md-semibold-fontSize);
13548
- line-height: var(--text-label-md-semibold-lineHeight);
13549
- }
13550
-
13551
- .muka-action-sheet__description {
13552
- margin: 0;
13553
- color: var(--color-text-subtle-default);
13554
- font-family: var(--text-body-sm-regular-fontFamily);
13555
- font-weight: var(--text-body-sm-regular-fontWeight);
13556
- font-size: var(--text-body-sm-regular-fontSize);
13557
- line-height: var(--text-body-sm-regular-lineHeight);
13558
- }
13559
-
13560
- /* ─── Actions group ───────────────────────────────────── */
13561
-
13562
- .muka-action-sheet__actions {
13563
- display: flex;
13564
- flex-direction: column;
13565
- background-color: var(--color-surface-level1);
13566
- border-radius: var(--radius-md);
13567
- overflow: hidden;
13568
- }
13569
-
13570
- .muka-action-sheet__item {
13571
- display: flex;
13572
- align-items: center;
13573
- gap: var(--spacing-3);
13574
- padding: var(--spacing-3) var(--spacing-4);
13575
- background: none;
13576
- border: none;
13577
- cursor: pointer;
13578
- text-align: left;
13579
- color: var(--color-text-default-default);
13580
- font-family: var(--text-body-md-regular-fontFamily);
13581
- font-weight: var(--text-body-md-regular-fontWeight);
13582
- font-size: var(--text-body-md-regular-fontSize);
13583
- line-height: var(--text-body-md-regular-lineHeight);
13584
- -webkit-tap-highlight-color: transparent;
13585
- transition: background-color 0.12s ease;
13586
- }
13587
-
13588
- .muka-action-sheet__item + .muka-action-sheet__item {
13589
- border-top: var(--border-width-regular) solid var(--color-border-default);
13590
- }
13591
-
13592
- .muka-action-sheet__item:hover:not(:disabled) {
13593
- background-color: var(--color-surface-level2);
13594
- }
13595
-
13596
- .muka-action-sheet__item:active:not(:disabled) {
13597
- background-color: var(--color-surface-level3);
13598
- }
13599
-
13600
- .muka-action-sheet__item:focus-visible {
13601
- outline: 2px solid var(--color-action-default);
13602
- outline-offset: -2px;
13603
- }
13604
-
13605
- .muka-action-sheet__item--destructive {
13606
- color: var(--color-state-error-default);
13607
- }
13608
-
13609
- .muka-action-sheet__item--disabled,
13610
- .muka-action-sheet__item:disabled {
13611
- opacity: 0.5;
13612
- cursor: not-allowed;
13613
- }
13614
-
13615
- .muka-action-sheet__item-icon {
13616
- display: inline-flex;
13617
- align-items: center;
13618
- justify-content: center;
13619
- width: 24px;
13620
- height: 24px;
13621
- flex-shrink: 0;
13622
- }
13623
-
13624
- .muka-action-sheet__item-icon svg {
13625
- width: 100%;
13626
- height: 100%;
13627
- }
13628
-
13629
- .muka-action-sheet__item-label {
13630
- flex: 1;
13631
- }
13632
-
13633
- /* ─── Cancel button (separate at bottom) ──────────────── */
13634
-
13635
- .muka-action-sheet__cancel {
13636
- display: flex;
13637
- align-items: center;
13638
- justify-content: center;
13639
- padding: var(--spacing-3) var(--spacing-4);
13640
- background-color: var(--color-surface-level1);
13641
- border: none;
13642
- border-radius: var(--radius-md);
13643
- cursor: pointer;
13644
- color: var(--color-text-default-default);
13645
- font-family: var(--text-label-md-semibold-fontFamily);
13646
- font-weight: var(--text-label-md-semibold-fontWeight);
13647
- font-size: var(--text-label-md-semibold-fontSize);
13648
- line-height: var(--text-label-md-semibold-lineHeight);
13649
- -webkit-tap-highlight-color: transparent;
13650
- transition: background-color 0.12s ease;
13651
- }
13652
-
13653
- .muka-action-sheet__cancel:hover {
13654
- background-color: var(--color-surface-level2);
13655
- }
13656
-
13657
- .muka-action-sheet__cancel:focus-visible {
13658
- outline: 2px solid var(--color-action-default);
13659
- outline-offset: 2px;
13660
- }
13661
-
13662
-
13663
14047
  /* AgentTaskList */
13664
14048
  /* AgentTaskList Component Styles */
13665
14049
 
@@ -13829,6 +14213,148 @@ button.muka-chat-photo-grid__tile:focus-visible {
13829
14213
  }
13830
14214
 
13831
14215
 
14216
+ /* ActionSheet */
14217
+ /* ActionSheet Component Styles */
14218
+
14219
+ .muka-action-sheet__inner {
14220
+ display: flex;
14221
+ flex-direction: column;
14222
+ padding: 0 var(--spacing-4) var(--spacing-3) var(--spacing-4);
14223
+ gap: var(--spacing-3);
14224
+ }
14225
+
14226
+ /* ─── Header ──────────────────────────────────────────── */
14227
+
14228
+ .muka-action-sheet__header {
14229
+ display: flex;
14230
+ flex-direction: column;
14231
+ align-items: center;
14232
+ gap: var(--spacing-1);
14233
+ padding: var(--spacing-2) 0 var(--spacing-3);
14234
+ text-align: center;
14235
+ }
14236
+
14237
+ .muka-action-sheet__title {
14238
+ margin: 0;
14239
+ color: var(--color-text-default-default);
14240
+ font-family: var(--text-label-md-semibold-fontFamily);
14241
+ font-weight: var(--text-label-md-semibold-fontWeight);
14242
+ font-size: var(--text-label-md-semibold-fontSize);
14243
+ line-height: var(--text-label-md-semibold-lineHeight);
14244
+ }
14245
+
14246
+ .muka-action-sheet__description {
14247
+ margin: 0;
14248
+ color: var(--color-text-subtle-default);
14249
+ font-family: var(--text-body-sm-regular-fontFamily);
14250
+ font-weight: var(--text-body-sm-regular-fontWeight);
14251
+ font-size: var(--text-body-sm-regular-fontSize);
14252
+ line-height: var(--text-body-sm-regular-lineHeight);
14253
+ }
14254
+
14255
+ /* ─── Actions group ───────────────────────────────────── */
14256
+
14257
+ .muka-action-sheet__actions {
14258
+ display: flex;
14259
+ flex-direction: column;
14260
+ background-color: var(--color-surface-level1);
14261
+ border-radius: var(--radius-md);
14262
+ overflow: hidden;
14263
+ }
14264
+
14265
+ .muka-action-sheet__item {
14266
+ display: flex;
14267
+ align-items: center;
14268
+ gap: var(--spacing-3);
14269
+ padding: var(--spacing-3) var(--spacing-4);
14270
+ background: none;
14271
+ border: none;
14272
+ cursor: pointer;
14273
+ text-align: left;
14274
+ color: var(--color-text-default-default);
14275
+ font-family: var(--text-body-md-regular-fontFamily);
14276
+ font-weight: var(--text-body-md-regular-fontWeight);
14277
+ font-size: var(--text-body-md-regular-fontSize);
14278
+ line-height: var(--text-body-md-regular-lineHeight);
14279
+ -webkit-tap-highlight-color: transparent;
14280
+ transition: background-color 0.12s ease;
14281
+ }
14282
+
14283
+ .muka-action-sheet__item + .muka-action-sheet__item {
14284
+ border-top: var(--border-width-regular) solid var(--color-border-default);
14285
+ }
14286
+
14287
+ .muka-action-sheet__item:hover:not(:disabled) {
14288
+ background-color: var(--color-surface-level2);
14289
+ }
14290
+
14291
+ .muka-action-sheet__item:active:not(:disabled) {
14292
+ background-color: var(--color-surface-level3);
14293
+ }
14294
+
14295
+ .muka-action-sheet__item:focus-visible {
14296
+ outline: 2px solid var(--color-action-default);
14297
+ outline-offset: -2px;
14298
+ }
14299
+
14300
+ .muka-action-sheet__item--destructive {
14301
+ color: var(--color-state-error-default);
14302
+ }
14303
+
14304
+ .muka-action-sheet__item--disabled,
14305
+ .muka-action-sheet__item:disabled {
14306
+ opacity: 0.5;
14307
+ cursor: not-allowed;
14308
+ }
14309
+
14310
+ .muka-action-sheet__item-icon {
14311
+ display: inline-flex;
14312
+ align-items: center;
14313
+ justify-content: center;
14314
+ width: 24px;
14315
+ height: 24px;
14316
+ flex-shrink: 0;
14317
+ }
14318
+
14319
+ .muka-action-sheet__item-icon svg {
14320
+ width: 100%;
14321
+ height: 100%;
14322
+ }
14323
+
14324
+ .muka-action-sheet__item-label {
14325
+ flex: 1;
14326
+ }
14327
+
14328
+ /* ─── Cancel button (separate at bottom) ──────────────── */
14329
+
14330
+ .muka-action-sheet__cancel {
14331
+ display: flex;
14332
+ align-items: center;
14333
+ justify-content: center;
14334
+ padding: var(--spacing-3) var(--spacing-4);
14335
+ background-color: var(--color-surface-level1);
14336
+ border: none;
14337
+ border-radius: var(--radius-md);
14338
+ cursor: pointer;
14339
+ color: var(--color-text-default-default);
14340
+ font-family: var(--text-label-md-semibold-fontFamily);
14341
+ font-weight: var(--text-label-md-semibold-fontWeight);
14342
+ font-size: var(--text-label-md-semibold-fontSize);
14343
+ line-height: var(--text-label-md-semibold-lineHeight);
14344
+ -webkit-tap-highlight-color: transparent;
14345
+ transition: background-color 0.12s ease;
14346
+ }
14347
+
14348
+ .muka-action-sheet__cancel:hover {
14349
+ background-color: var(--color-surface-level2);
14350
+ }
14351
+
14352
+ .muka-action-sheet__cancel:focus-visible {
14353
+ outline: 2px solid var(--color-action-default);
14354
+ outline-offset: 2px;
14355
+ }
14356
+
14357
+
13832
14358
  /* Accordion */
13833
14359
  /* Accordion Component Styles */
13834
14360