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