@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
@@ -1896,15 +1896,17 @@ body {
1896
1896
  --menu-content-padding: 0.25rem;
1897
1897
  --menu-content-min-width: 12rem;
1898
1898
  --menu-content-max-height: 20rem;
1899
+ --menu-content-scroll-height: 20.625rem;
1899
1900
  --menu-item-color-default-background: transparent;
1900
1901
  --menu-item-color-default-foreground: #202020;
1901
1902
  --menu-item-color-default-icon: #838383;
1902
- --menu-item-color-hover-background: rgba(0, 0, 0, 0.024);
1903
+ --menu-item-color-hover-background: #e8e8e8;
1903
1904
  --menu-item-color-hover-foreground: #202020;
1904
1905
  --menu-item-color-hover-icon: #202020;
1905
- --menu-item-color-focus-background: #5eb0ef;
1906
+ --menu-item-color-focus-background: #e8e8e8;
1906
1907
  --menu-item-color-focus-foreground: #202020;
1907
1908
  --menu-item-color-focus-icon: #202020;
1909
+ --menu-item-color-selected-background: #e0e0e0;
1908
1910
  --menu-item-color-disabled-background: transparent;
1909
1911
  --menu-item-color-disabled-foreground: #bbbbbb;
1910
1912
  --menu-item-color-disabled-icon: #bbbbbb;
@@ -2358,6 +2360,64 @@ body {
2358
2360
 
2359
2361
 
2360
2362
  /* ========== Component Styles ========== */
2363
+ /* Waveform */
2364
+ /* Waveform Component Styles */
2365
+
2366
+ /*
2367
+ * A row of amplitude bars. Muka ships no audio/waveform primitive; this is
2368
+ * drawn from color + spacing tokens only. Bar height (per-peak magnitude) and
2369
+ * the played/unplayed color split are data-driven, so they arrive as inline
2370
+ * styles from the component; everything else is tokenized here.
2371
+ */
2372
+ .muka-waveform {
2373
+ display: flex;
2374
+ align-items: center;
2375
+ gap: var(--spacing-05, 2px);
2376
+ width: 100%;
2377
+ min-width: 0;
2378
+ }
2379
+
2380
+ .muka-waveform__bar {
2381
+ flex: 1 1 0;
2382
+ min-width: 2px;
2383
+ max-width: 4px;
2384
+ border-radius: var(--radius-full, 9999px);
2385
+ background: var(--color-border-contrast);
2386
+ }
2387
+
2388
+
2389
+ /* VoiceMessage */
2390
+ /* VoiceMessage Component Styles */
2391
+
2392
+ .muka-voice-message {
2393
+ display: flex;
2394
+ align-items: center;
2395
+ gap: var(--spacing-3);
2396
+ width: 100%;
2397
+ min-width: min(16rem, 60vw);
2398
+ }
2399
+
2400
+ .muka-voice-message__wave {
2401
+ flex: 1 1 auto;
2402
+ min-width: 0;
2403
+ }
2404
+
2405
+ .muka-voice-message__time {
2406
+ flex: 0 0 auto;
2407
+ white-space: nowrap;
2408
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
2409
+ line-height: var(--text-label-sm-lineHeight, 1);
2410
+ font-variant-numeric: tabular-nums;
2411
+ color: var(--color-text-subtle-default);
2412
+ }
2413
+
2414
+ /* On the tinted own bubble the surface is the action color, so the timer flips
2415
+ * to the inverse text token for contrast. */
2416
+ .muka-voice-message--own .muka-voice-message__time {
2417
+ color: var(--color-text-default-inverse);
2418
+ }
2419
+
2420
+
2361
2421
  /* View */
2362
2422
  /* View Component Styles */
2363
2423
 
@@ -2889,6 +2949,196 @@ body {
2889
2949
  }
2890
2950
 
2891
2951
 
2952
+ /* Toast */
2953
+ /* Toast Component Styles - Using Muka Design Tokens */
2954
+
2955
+ .muka-toast {
2956
+ display: flex;
2957
+ align-items: flex-start;
2958
+ gap: var(--toast-gap);
2959
+ padding: var(--toast-padding-y) var(--toast-padding-x);
2960
+ border-radius: var(--toast-radius);
2961
+ box-shadow: var(--toast-shadow);
2962
+ min-width: var(--toast-width-min);
2963
+ max-width: var(--toast-width-max);
2964
+ pointer-events: auto;
2965
+ animation: muka-toast-slide-in 0.2s ease-out;
2966
+ }
2967
+
2968
+ /* Entry animation */
2969
+ @keyframes muka-toast-slide-in {
2970
+ from {
2971
+ opacity: 0;
2972
+ transform: translateY(8px);
2973
+ }
2974
+ to {
2975
+ opacity: 1;
2976
+ transform: translateY(0);
2977
+ }
2978
+ }
2979
+
2980
+ /* Position variants (for standalone use - typically managed by ToastProvider) */
2981
+ .muka-toast--top-right,
2982
+ .muka-toast--top-left,
2983
+ .muka-toast--top-center,
2984
+ .muka-toast--bottom-right,
2985
+ .muka-toast--bottom-left,
2986
+ .muka-toast--bottom-center {
2987
+ position: fixed;
2988
+ z-index: 9999;
2989
+ }
2990
+
2991
+ .muka-toast--top-right {
2992
+ top: var(--spacing-4);
2993
+ right: var(--spacing-4);
2994
+ }
2995
+
2996
+ .muka-toast--top-left {
2997
+ top: var(--spacing-4);
2998
+ left: var(--spacing-4);
2999
+ }
3000
+
3001
+ .muka-toast--top-center {
3002
+ top: var(--spacing-4);
3003
+ left: 50%;
3004
+ transform: translateX(-50%);
3005
+ }
3006
+
3007
+ .muka-toast--bottom-right {
3008
+ bottom: var(--spacing-4);
3009
+ right: var(--spacing-4);
3010
+ }
3011
+
3012
+ .muka-toast--bottom-left {
3013
+ bottom: var(--spacing-4);
3014
+ left: var(--spacing-4);
3015
+ }
3016
+
3017
+ .muka-toast--bottom-center {
3018
+ bottom: var(--spacing-4);
3019
+ left: 50%;
3020
+ transform: translateX(-50%);
3021
+ }
3022
+
3023
+ /* Variant: Info */
3024
+ .muka-toast--info {
3025
+ background-color: var(--toast-color-info-background);
3026
+ color: var(--toast-color-info-foreground);
3027
+ }
3028
+
3029
+ .muka-toast--info .muka-toast__icon {
3030
+ color: var(--toast-color-info-accent);
3031
+ }
3032
+
3033
+ /* Variant: Success */
3034
+ .muka-toast--success {
3035
+ background-color: var(--toast-color-success-background);
3036
+ color: var(--toast-color-success-foreground);
3037
+ }
3038
+
3039
+ .muka-toast--success .muka-toast__icon {
3040
+ color: var(--toast-color-success-accent);
3041
+ }
3042
+
3043
+ /* Variant: Warning */
3044
+ .muka-toast--warning {
3045
+ background-color: var(--toast-color-warning-background);
3046
+ color: var(--toast-color-warning-foreground);
3047
+ }
3048
+
3049
+ .muka-toast--warning .muka-toast__icon {
3050
+ color: var(--toast-color-warning-accent);
3051
+ }
3052
+
3053
+ /* Variant: Error */
3054
+ .muka-toast--error {
3055
+ background-color: var(--toast-color-error-background);
3056
+ color: var(--toast-color-error-foreground);
3057
+ }
3058
+
3059
+ .muka-toast--error .muka-toast__icon {
3060
+ color: var(--toast-color-error-accent);
3061
+ }
3062
+
3063
+ /* Icon */
3064
+ .muka-toast__icon {
3065
+ display: flex;
3066
+ align-items: center;
3067
+ justify-content: center;
3068
+ flex-shrink: 0;
3069
+ width: var(--toast-icon-size);
3070
+ height: var(--toast-icon-size);
3071
+ }
3072
+
3073
+ .muka-toast__icon svg {
3074
+ width: 100%;
3075
+ height: 100%;
3076
+ }
3077
+
3078
+ /* Content */
3079
+ .muka-toast__content {
3080
+ flex: 1;
3081
+ min-width: 0;
3082
+ }
3083
+
3084
+ .muka-toast__title {
3085
+ font-family: var(--text-label-md-semibold-fontFamily);
3086
+ font-weight: var(--text-label-md-semibold-fontWeight);
3087
+ font-size: var(--text-label-md-semibold-fontSize);
3088
+ line-height: var(--text-label-md-semibold-lineHeight);
3089
+ margin-bottom: var(--spacing-1);
3090
+ }
3091
+
3092
+ .muka-toast__message {
3093
+ font-family: var(--text-body-sm-regular-fontFamily);
3094
+ font-weight: var(--text-body-sm-regular-fontWeight);
3095
+ font-size: var(--text-body-sm-regular-fontSize);
3096
+ line-height: var(--text-body-sm-regular-lineHeight);
3097
+ }
3098
+
3099
+ /* Action slot */
3100
+ .muka-toast__action {
3101
+ display: flex;
3102
+ align-items: center;
3103
+ flex-shrink: 0;
3104
+ }
3105
+
3106
+ /* Dismiss button */
3107
+ .muka-toast__dismiss {
3108
+ display: flex;
3109
+ align-items: center;
3110
+ justify-content: center;
3111
+ flex-shrink: 0;
3112
+ width: 24px;
3113
+ height: 24px;
3114
+ padding: 0;
3115
+ margin: -2px -4px -2px 0;
3116
+ border: none;
3117
+ background: transparent;
3118
+ color: inherit;
3119
+ opacity: 0.7;
3120
+ cursor: pointer;
3121
+ border-radius: var(--border-radius-sm);
3122
+ transition: opacity 0.15s ease, background-color 0.15s ease;
3123
+ }
3124
+
3125
+ .muka-toast__dismiss:hover {
3126
+ opacity: 1;
3127
+ background-color: rgba(0, 0, 0, 0.05);
3128
+ }
3129
+
3130
+ .muka-toast__dismiss:focus-visible {
3131
+ outline: 2px solid var(--color-border-focus);
3132
+ outline-offset: 2px;
3133
+ opacity: 1;
3134
+ }
3135
+
3136
+ .muka-toast__dismiss svg {
3137
+ width: 16px;
3138
+ height: 16px;
3139
+ }
3140
+
3141
+
2892
3142
  /* Tile */
2893
3143
  /* Tile Component Styles - Using Muka Design Tokens */
2894
3144
 
@@ -3250,202 +3500,12 @@ body {
3250
3500
  }
3251
3501
 
3252
3502
 
3253
- /* Toast */
3254
- /* Toast Component Styles - Using Muka Design Tokens */
3255
-
3256
- .muka-toast {
3257
- display: flex;
3258
- align-items: flex-start;
3259
- gap: var(--toast-gap);
3260
- padding: var(--toast-padding-y) var(--toast-padding-x);
3261
- border-radius: var(--toast-radius);
3262
- box-shadow: var(--toast-shadow);
3263
- min-width: var(--toast-width-min);
3264
- max-width: var(--toast-width-max);
3265
- pointer-events: auto;
3266
- animation: muka-toast-slide-in 0.2s ease-out;
3267
- }
3503
+ /* Thumbnail */
3504
+ /* Thumbnail Component Styles - Using Muka Design Tokens */
3268
3505
 
3269
- /* Entry animation */
3270
- @keyframes muka-toast-slide-in {
3271
- from {
3272
- opacity: 0;
3273
- transform: translateY(8px);
3274
- }
3275
- to {
3276
- opacity: 1;
3277
- transform: translateY(0);
3278
- }
3279
- }
3280
-
3281
- /* Position variants (for standalone use - typically managed by ToastProvider) */
3282
- .muka-toast--top-right,
3283
- .muka-toast--top-left,
3284
- .muka-toast--top-center,
3285
- .muka-toast--bottom-right,
3286
- .muka-toast--bottom-left,
3287
- .muka-toast--bottom-center {
3288
- position: fixed;
3289
- z-index: 9999;
3290
- }
3291
-
3292
- .muka-toast--top-right {
3293
- top: var(--spacing-4);
3294
- right: var(--spacing-4);
3295
- }
3296
-
3297
- .muka-toast--top-left {
3298
- top: var(--spacing-4);
3299
- left: var(--spacing-4);
3300
- }
3301
-
3302
- .muka-toast--top-center {
3303
- top: var(--spacing-4);
3304
- left: 50%;
3305
- transform: translateX(-50%);
3306
- }
3307
-
3308
- .muka-toast--bottom-right {
3309
- bottom: var(--spacing-4);
3310
- right: var(--spacing-4);
3311
- }
3312
-
3313
- .muka-toast--bottom-left {
3314
- bottom: var(--spacing-4);
3315
- left: var(--spacing-4);
3316
- }
3317
-
3318
- .muka-toast--bottom-center {
3319
- bottom: var(--spacing-4);
3320
- left: 50%;
3321
- transform: translateX(-50%);
3322
- }
3323
-
3324
- /* Variant: Info */
3325
- .muka-toast--info {
3326
- background-color: var(--toast-color-info-background);
3327
- color: var(--toast-color-info-foreground);
3328
- }
3329
-
3330
- .muka-toast--info .muka-toast__icon {
3331
- color: var(--toast-color-info-accent);
3332
- }
3333
-
3334
- /* Variant: Success */
3335
- .muka-toast--success {
3336
- background-color: var(--toast-color-success-background);
3337
- color: var(--toast-color-success-foreground);
3338
- }
3339
-
3340
- .muka-toast--success .muka-toast__icon {
3341
- color: var(--toast-color-success-accent);
3342
- }
3343
-
3344
- /* Variant: Warning */
3345
- .muka-toast--warning {
3346
- background-color: var(--toast-color-warning-background);
3347
- color: var(--toast-color-warning-foreground);
3348
- }
3349
-
3350
- .muka-toast--warning .muka-toast__icon {
3351
- color: var(--toast-color-warning-accent);
3352
- }
3353
-
3354
- /* Variant: Error */
3355
- .muka-toast--error {
3356
- background-color: var(--toast-color-error-background);
3357
- color: var(--toast-color-error-foreground);
3358
- }
3359
-
3360
- .muka-toast--error .muka-toast__icon {
3361
- color: var(--toast-color-error-accent);
3362
- }
3363
-
3364
- /* Icon */
3365
- .muka-toast__icon {
3366
- display: flex;
3367
- align-items: center;
3368
- justify-content: center;
3369
- flex-shrink: 0;
3370
- width: var(--toast-icon-size);
3371
- height: var(--toast-icon-size);
3372
- }
3373
-
3374
- .muka-toast__icon svg {
3375
- width: 100%;
3376
- height: 100%;
3377
- }
3378
-
3379
- /* Content */
3380
- .muka-toast__content {
3381
- flex: 1;
3382
- min-width: 0;
3383
- }
3384
-
3385
- .muka-toast__title {
3386
- font-family: var(--text-label-md-semibold-fontFamily);
3387
- font-weight: var(--text-label-md-semibold-fontWeight);
3388
- font-size: var(--text-label-md-semibold-fontSize);
3389
- line-height: var(--text-label-md-semibold-lineHeight);
3390
- margin-bottom: var(--spacing-1);
3391
- }
3392
-
3393
- .muka-toast__message {
3394
- font-family: var(--text-body-sm-regular-fontFamily);
3395
- font-weight: var(--text-body-sm-regular-fontWeight);
3396
- font-size: var(--text-body-sm-regular-fontSize);
3397
- line-height: var(--text-body-sm-regular-lineHeight);
3398
- }
3399
-
3400
- /* Action slot */
3401
- .muka-toast__action {
3402
- display: flex;
3403
- align-items: center;
3404
- flex-shrink: 0;
3405
- }
3406
-
3407
- /* Dismiss button */
3408
- .muka-toast__dismiss {
3409
- display: flex;
3410
- align-items: center;
3411
- justify-content: center;
3412
- flex-shrink: 0;
3413
- width: 24px;
3414
- height: 24px;
3415
- padding: 0;
3416
- margin: -2px -4px -2px 0;
3417
- border: none;
3418
- background: transparent;
3419
- color: inherit;
3420
- opacity: 0.7;
3421
- cursor: pointer;
3422
- border-radius: var(--border-radius-sm);
3423
- transition: opacity 0.15s ease, background-color 0.15s ease;
3424
- }
3425
-
3426
- .muka-toast__dismiss:hover {
3427
- opacity: 1;
3428
- background-color: rgba(0, 0, 0, 0.05);
3429
- }
3430
-
3431
- .muka-toast__dismiss:focus-visible {
3432
- outline: 2px solid var(--color-border-focus);
3433
- outline-offset: 2px;
3434
- opacity: 1;
3435
- }
3436
-
3437
- .muka-toast__dismiss svg {
3438
- width: 16px;
3439
- height: 16px;
3440
- }
3441
-
3442
-
3443
- /* Thumbnail */
3444
- /* Thumbnail Component Styles - Using Muka Design Tokens */
3445
-
3446
- .muka-thumbnail {
3447
- position: relative;
3448
- flex-shrink: 0;
3506
+ .muka-thumbnail {
3507
+ position: relative;
3508
+ flex-shrink: 0;
3449
3509
  }
3450
3510
 
3451
3511
  /* The frame carries the border, background and shape clip. Keeping it separate
@@ -5379,6 +5439,29 @@ body {
5379
5439
  }
5380
5440
 
5381
5441
 
5442
+ /* Section */
5443
+ /* Section Component - Layout tokens (section.padding) */
5444
+
5445
+ .muka-section {
5446
+ box-sizing: border-box;
5447
+ }
5448
+
5449
+ .muka-section--padding-compact {
5450
+ padding-block: var(--section-padding-vertical-compact);
5451
+ padding-inline: var(--section-padding-horizontal-compact);
5452
+ }
5453
+
5454
+ .muka-section--padding-default {
5455
+ padding-block: var(--section-padding-vertical-default);
5456
+ padding-inline: var(--section-padding-horizontal-default);
5457
+ }
5458
+
5459
+ .muka-section--padding-spacious {
5460
+ padding-block: var(--section-padding-vertical-spacious);
5461
+ padding-inline: var(--section-padding-horizontal-spacious);
5462
+ }
5463
+
5464
+
5382
5465
  /* SearchInput */
5383
5466
  /* SearchInput Component Styles */
5384
5467
 
@@ -5548,47 +5631,200 @@ body {
5548
5631
  }
5549
5632
 
5550
5633
 
5551
- /* Section */
5552
- /* Section Component - Layout tokens (section.padding) */
5634
+ /* Scrollbar */
5635
+ /* Scrollbar — Figma menu scrollbar (32px rail, chevrons, grip thumb) */
5553
5636
 
5554
- .muka-section {
5555
- box-sizing: border-box;
5637
+ .muka-scrollbar {
5638
+ display: flex;
5639
+ flex-shrink: 0;
5640
+ border-left: var(--border-width-regular) solid var(--color-border-default);
5641
+ background-color: var(--color-surface-level3);
5642
+ user-select: none;
5556
5643
  }
5557
5644
 
5558
- .muka-section--padding-compact {
5559
- padding-block: var(--section-padding-vertical-compact);
5560
- padding-inline: var(--section-padding-horizontal-compact);
5645
+ .muka-scrollbar--vertical {
5646
+ flex-direction: column;
5647
+ width: var(--size-2xl, 32px);
5648
+ align-self: stretch;
5561
5649
  }
5562
5650
 
5563
- .muka-section--padding-default {
5564
- padding-block: var(--section-padding-vertical-default);
5565
- padding-inline: var(--section-padding-horizontal-default);
5651
+ .muka-scrollbar--horizontal {
5652
+ flex-direction: row;
5653
+ height: var(--size-2xl, 32px);
5654
+ width: 100%;
5655
+ border-left: none;
5656
+ border-top: var(--border-width-regular) solid var(--color-border-default);
5566
5657
  }
5567
5658
 
5568
- .muka-section--padding-spacious {
5569
- padding-block: var(--section-padding-vertical-spacious);
5570
- padding-inline: var(--section-padding-horizontal-spacious);
5659
+ .muka-scrollbar__button {
5660
+ display: flex;
5661
+ align-items: center;
5662
+ justify-content: center;
5663
+ flex-shrink: 0;
5664
+ width: 100%;
5665
+ height: var(--size-2xl, 32px);
5666
+ padding: 0;
5667
+ border: none;
5668
+ background-color: var(--button-color-tertiary-background-default, var(--color-surface-level3));
5669
+ color: var(--color-text-default-default);
5670
+ cursor: pointer;
5671
+ }
5672
+
5673
+ .muka-scrollbar--horizontal .muka-scrollbar__button {
5674
+ width: var(--size-2xl, 32px);
5675
+ height: 100%;
5571
5676
  }
5572
5677
 
5678
+ .muka-scrollbar__button:hover {
5679
+ background-color: var(--color-surface-hover);
5680
+ }
5573
5681
 
5574
- /* RangeSlider */
5575
- /* RangeSlider Component Styles - Using Muka Design Tokens */
5682
+ .muka-scrollbar__divider {
5683
+ flex-shrink: 0;
5684
+ width: 100%;
5685
+ height: 1px;
5686
+ background-color: var(--color-border-default);
5687
+ }
5576
5688
 
5577
- .muka-range-slider {
5689
+ .muka-scrollbar--horizontal .muka-scrollbar__divider {
5690
+ width: 1px;
5691
+ height: 100%;
5692
+ }
5693
+
5694
+ .muka-scrollbar__track {
5695
+ position: relative;
5578
5696
  display: flex;
5579
5697
  flex-direction: column;
5580
- gap: var(--spacing-1);
5698
+ flex: 1 1 auto;
5699
+ min-height: 0;
5581
5700
  width: 100%;
5582
5701
  }
5583
5702
 
5584
- /* ========================================
5585
- HEADER: label group (label + info + optional) and value readout
5586
- ======================================== */
5703
+ .muka-scrollbar--horizontal .muka-scrollbar__track {
5704
+ flex-direction: row;
5705
+ min-width: 0;
5706
+ height: 100%;
5707
+ }
5587
5708
 
5588
- .muka-range-slider__header {
5709
+ .muka-scrollbar__thumb {
5710
+ position: absolute;
5711
+ left: 50%;
5712
+ top: 0;
5713
+ z-index: 1;
5589
5714
  display: flex;
5590
5715
  align-items: center;
5591
- justify-content: space-between;
5716
+ justify-content: center;
5717
+ width: 14px;
5718
+ margin-left: -7px;
5719
+ cursor: grab;
5720
+ touch-action: none;
5721
+ }
5722
+
5723
+ .muka-scrollbar--horizontal .muka-scrollbar__thumb {
5724
+ left: 0;
5725
+ top: 50%;
5726
+ width: auto;
5727
+ height: 14px;
5728
+ margin-left: 0;
5729
+ margin-top: -7px;
5730
+ }
5731
+
5732
+ .muka-scrollbar__thumb:active {
5733
+ cursor: grabbing;
5734
+ }
5735
+
5736
+ .muka-scrollbar__grip {
5737
+ display: flex;
5738
+ flex-direction: column;
5739
+ gap: 2px;
5740
+ width: 14px;
5741
+ }
5742
+
5743
+ .muka-scrollbar__grip::before,
5744
+ .muka-scrollbar__grip::after {
5745
+ content: '';
5746
+ display: block;
5747
+ width: 100%;
5748
+ height: 2px;
5749
+ border-radius: var(--border-radius-md);
5750
+ background-color: var(--color-text-subtle-default);
5751
+ }
5752
+
5753
+ .muka-scrollbar__spacer {
5754
+ flex: 1 1 auto;
5755
+ min-height: 0;
5756
+ background-color: var(--color-surface-level2);
5757
+ }
5758
+
5759
+
5760
+ /* RecordingBar */
5761
+ /* RecordingBar Component Styles */
5762
+
5763
+ .muka-recording-bar {
5764
+ display: flex;
5765
+ align-items: center;
5766
+ gap: var(--spacing-3);
5767
+ width: 100%;
5768
+ min-width: 0;
5769
+ }
5770
+
5771
+ .muka-recording-bar__dot {
5772
+ flex: 0 0 auto;
5773
+ width: 0.625rem;
5774
+ height: 0.625rem;
5775
+ border-radius: var(--radius-full, 9999px);
5776
+ background: var(--alert-color-error-accent, var(--color-text-default-default));
5777
+ animation: muka-recording-bar-pulse 1s ease-in-out infinite;
5778
+ }
5779
+
5780
+ .muka-recording-bar__time {
5781
+ flex: 0 0 auto;
5782
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
5783
+ line-height: var(--text-label-sm-lineHeight, 1);
5784
+ font-variant-numeric: tabular-nums;
5785
+ color: var(--color-text-default-default);
5786
+ }
5787
+
5788
+ .muka-recording-bar__wave {
5789
+ flex: 1 1 auto;
5790
+ min-width: 0;
5791
+ }
5792
+
5793
+ @keyframes muka-recording-bar-pulse {
5794
+ 0%,
5795
+ 100% {
5796
+ opacity: 1;
5797
+ }
5798
+ 50% {
5799
+ opacity: 0.3;
5800
+ }
5801
+ }
5802
+
5803
+ @media (prefers-reduced-motion: reduce) {
5804
+ .muka-recording-bar__dot {
5805
+ animation: none;
5806
+ }
5807
+ }
5808
+
5809
+
5810
+ /* RangeSlider */
5811
+ /* RangeSlider Component Styles - Using Muka Design Tokens */
5812
+
5813
+ .muka-range-slider {
5814
+ display: flex;
5815
+ flex-direction: column;
5816
+ gap: var(--spacing-1);
5817
+ width: 100%;
5818
+ }
5819
+
5820
+ /* ========================================
5821
+ HEADER: label group (label + info + optional) and value readout
5822
+ ======================================== */
5823
+
5824
+ .muka-range-slider__header {
5825
+ display: flex;
5826
+ align-items: center;
5827
+ justify-content: space-between;
5592
5828
  gap: var(--spacing-2);
5593
5829
  min-height: 24px;
5594
5830
  }
@@ -7123,6 +7359,36 @@ body {
7123
7359
  }
7124
7360
 
7125
7361
 
7362
+ /* PhotoDraftStrip */
7363
+ /* PhotoDraftStrip Component Styles */
7364
+
7365
+ .muka-photo-draft-strip {
7366
+ display: flex;
7367
+ align-items: center;
7368
+ gap: var(--spacing-3);
7369
+ width: 100%;
7370
+ padding: var(--spacing-2) 0;
7371
+ }
7372
+
7373
+ .muka-photo-draft-strip__track {
7374
+ display: flex;
7375
+ gap: var(--spacing-2);
7376
+ flex: 1 1 auto;
7377
+ min-width: 0;
7378
+ overflow-x: auto;
7379
+ scroll-behavior: smooth;
7380
+ scrollbar-width: none;
7381
+ }
7382
+
7383
+ .muka-photo-draft-strip__track::-webkit-scrollbar {
7384
+ display: none;
7385
+ }
7386
+
7387
+ .muka-photo-draft-strip__item {
7388
+ flex: 0 0 auto;
7389
+ }
7390
+
7391
+
7126
7392
  /* Pagination */
7127
7393
  /* Pagination Component Styles */
7128
7394
 
@@ -7289,14 +7555,16 @@ body {
7289
7555
  /* ─── Content Container ──────────────────────────────────────────────────── */
7290
7556
 
7291
7557
  .muka-menu__content {
7558
+ display: flex;
7559
+ flex-direction: column;
7292
7560
  min-width: var(--menu-content-min-width);
7293
7561
  max-height: var(--menu-content-max-height);
7294
- overflow-y: auto;
7562
+ overflow: hidden;
7295
7563
  background-color: var(--menu-content-color-background);
7296
7564
  border: var(--menu-content-border-width) solid var(--menu-content-color-border);
7297
7565
  border-radius: var(--menu-content-border-radius);
7298
7566
  box-shadow: var(--menu-content-shadow);
7299
- padding: var(--menu-content-padding);
7567
+ padding: 0;
7300
7568
  z-index: 50;
7301
7569
 
7302
7570
  /* Animation */
@@ -7304,6 +7572,97 @@ body {
7304
7572
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
7305
7573
  }
7306
7574
 
7575
+ .muka-menu__body {
7576
+ display: flex;
7577
+ flex: 1 1 auto;
7578
+ min-height: 0;
7579
+ align-items: stretch;
7580
+ width: 100%;
7581
+ }
7582
+
7583
+ .muka-menu__viewport {
7584
+ flex: 1 1 auto;
7585
+ min-width: 0;
7586
+ min-height: 0;
7587
+ overflow-y: auto;
7588
+ padding: var(--menu-content-padding);
7589
+ }
7590
+
7591
+ .muka-menu__content--scrollbar .muka-menu__viewport {
7592
+ /* Custom scrollbar owns the chrome; hide native track */
7593
+ scrollbar-width: none;
7594
+ }
7595
+
7596
+ .muka-menu__content--scrollbar .muka-menu__viewport::-webkit-scrollbar {
7597
+ display: none;
7598
+ }
7599
+
7600
+ /* ─── Search header ──────────────────────────────────────────────────────── */
7601
+
7602
+ .muka-menu__search {
7603
+ display: flex;
7604
+ align-items: center;
7605
+ gap: var(--spacing-2);
7606
+ flex-shrink: 0;
7607
+ height: var(--size-3xl, 48px);
7608
+ padding: 0 var(--spacing-4);
7609
+ border-bottom: var(--border-width-regular) solid var(--color-border-default);
7610
+ }
7611
+
7612
+ .muka-menu__search-icon {
7613
+ display: flex;
7614
+ flex-shrink: 0;
7615
+ color: var(--color-text-subtle-default);
7616
+ }
7617
+
7618
+ .muka-menu__search-input {
7619
+ flex: 1 1 auto;
7620
+ min-width: 0;
7621
+ border: none;
7622
+ outline: none;
7623
+ background: transparent;
7624
+ font-family: var(--text-label-md-regular-font-family);
7625
+ font-size: var(--text-label-md-regular-font-size);
7626
+ font-weight: var(--text-label-md-regular-font-weight);
7627
+ line-height: var(--text-label-md-regular-line-height);
7628
+ color: var(--color-text-default-default);
7629
+ }
7630
+
7631
+ .muka-menu__search-input::placeholder {
7632
+ color: var(--color-text-subtle-default);
7633
+ }
7634
+
7635
+ .muka-menu__search-input::-webkit-search-cancel-button,
7636
+ .muka-menu__search-input::-webkit-search-decoration {
7637
+ -webkit-appearance: none;
7638
+ appearance: none;
7639
+ }
7640
+
7641
+ .muka-menu__search-clear {
7642
+ display: flex;
7643
+ align-items: center;
7644
+ justify-content: center;
7645
+ flex-shrink: 0;
7646
+ padding: 0;
7647
+ border: none;
7648
+ background: transparent;
7649
+ color: var(--color-text-subtle-default);
7650
+ cursor: pointer;
7651
+ }
7652
+
7653
+ .muka-menu__search-clear:hover {
7654
+ color: var(--color-text-default-default);
7655
+ }
7656
+
7657
+ .muka-menu__match {
7658
+ font-weight: var(--font-weight-bold, 700);
7659
+ }
7660
+
7661
+ .muka-menu__content--scrollbar {
7662
+ height: var(--menu-content-scroll-height, 20.625rem);
7663
+ max-height: var(--menu-content-scroll-height, 20.625rem);
7664
+ }
7665
+
7307
7666
  .muka-menu__content[data-state='open'] {
7308
7667
  animation-name: muka-menu-fade-in;
7309
7668
  }
@@ -7451,6 +7810,23 @@ body {
7451
7810
  padding-left: var(--menu-item-padding-x);
7452
7811
  }
7453
7812
 
7813
+ .muka-menu__item--radio-check {
7814
+ position: relative;
7815
+ padding-right: calc(var(--menu-item-padding-x) + var(--menu-checkbox-indicator-size) + var(--menu-item-gap));
7816
+ }
7817
+
7818
+ .muka-menu__item--radio-check[data-state='checked'] {
7819
+ background-color: var(--menu-item-color-selected-background);
7820
+ }
7821
+
7822
+ .muka-menu__item-indicator--trailing {
7823
+ position: absolute;
7824
+ right: var(--menu-item-padding-x);
7825
+ top: 50%;
7826
+ transform: translateY(-50%);
7827
+ color: var(--menu-checkbox-indicator-color);
7828
+ }
7829
+
7454
7830
  .muka-menu__radio-dot {
7455
7831
  width: 8px;
7456
7832
  height: 8px;
@@ -8828,6 +9204,28 @@ li.muka-listitem {
8828
9204
  }
8829
9205
 
8830
9206
 
9207
+ /* EmojiPicker */
9208
+ /* EmojiPicker Component Styles */
9209
+
9210
+ .muka-emoji-picker {
9211
+ display: grid;
9212
+ grid-template-columns: repeat(8, 1fr);
9213
+ gap: var(--spacing-1);
9214
+ padding: var(--spacing-2);
9215
+ max-height: 12rem;
9216
+ overflow-y: auto;
9217
+ background: var(--color-surface-level2);
9218
+ border: var(--border-width-regular, 1px) solid var(--color-border-default);
9219
+ border-radius: var(--radius-lg);
9220
+ box-shadow: var(--menu-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
9221
+ }
9222
+
9223
+ .muka-emoji-picker__glyph {
9224
+ font-size: 1.25rem;
9225
+ line-height: 1;
9226
+ }
9227
+
9228
+
8831
9229
  /* Drawer */
8832
9230
  /* Drawer Component Styles */
8833
9231
 
@@ -10150,46 +10548,166 @@ li.muka-listitem {
10150
10548
  }
10151
10549
 
10152
10550
 
10153
- /* Container */
10154
- /* Container Component - Layout tokens (container.max-width, container.gap) */
10155
-
10156
- .muka-container {
10157
- box-sizing: border-box;
10158
- width: 100%;
10159
- margin-inline: auto;
10160
- }
10551
+ /* ContextSelect */
10552
+ /* ContextSelect — split label (navigate) + chevron menu button (switch)
10553
+ *
10554
+ * Figma (5623:8651 / 5631:9344):
10555
+ * - Root: gap spacing/1 (4px) between label group and chevron
10556
+ * - Label group: gap spacing/2 (8px) icon↔label, pl spacing/2 (8px)
10557
+ * - Icons: 16px (icon.size.xs)
10558
+ */
10161
10559
 
10162
- /* Max-width variants */
10163
- .muka-container--max-width-small {
10164
- max-width: var(--container-max-width-small);
10560
+ .muka-context-select {
10561
+ display: inline-flex;
10562
+ position: relative;
10563
+ align-items: flex-start;
10564
+ gap: var(--spacing-1, 4px);
10165
10565
  }
10166
10566
 
10167
- .muka-container--max-width-medium {
10168
- max-width: var(--container-max-width-medium);
10567
+ .muka-context-select__label-group {
10568
+ display: inline-flex;
10569
+ align-items: center;
10570
+ gap: var(--spacing-2, 8px);
10571
+ height: var(--size-2xl, 32px);
10572
+ padding-left: var(--spacing-2, 8px);
10573
+ padding-right: 0;
10574
+ border-radius: var(--border-radius-lg);
10575
+ color: var(--color-text-default-default);
10576
+ text-decoration: none;
10577
+ border: none;
10578
+ background: transparent;
10579
+ font: inherit;
10580
+ cursor: default;
10169
10581
  }
10170
10582
 
10171
- .muka-container--max-width-large {
10172
- max-width: var(--container-max-width-large);
10583
+ .muka-context-select__label-group--link,
10584
+ .muka-context-select__label-group--button {
10585
+ cursor: pointer;
10173
10586
  }
10174
10587
 
10175
- .muka-container--max-width-xlarge {
10176
- max-width: var(--container-max-width-xlarge);
10588
+ .muka-context-select__label-group--link:hover .muka-context-select__label,
10589
+ .muka-context-select__label-group--button:hover .muka-context-select__label,
10590
+ .muka-context-select__label-group--link:focus-visible .muka-context-select__label,
10591
+ .muka-context-select__label-group--button:focus-visible .muka-context-select__label {
10592
+ text-decoration: underline;
10593
+ text-underline-offset: 2px;
10177
10594
  }
10178
10595
 
10179
- /* No gap — max-width only, no flex */
10180
- .muka-container--gap-none {
10181
- /* block layout by default */
10596
+ .muka-context-select__label-group--link:focus-visible,
10597
+ .muka-context-select__label-group--button:focus-visible {
10598
+ outline: 2px solid var(--color-border-focus);
10599
+ outline-offset: 2px;
10182
10600
  }
10183
10601
 
10184
- /* Gap variants — flex column with token gap */
10185
- .muka-container--gap-compact {
10186
- display: flex;
10187
- flex-direction: column;
10188
- gap: var(--container-gap-compact);
10602
+ .muka-context-select__label-group--button:disabled,
10603
+ .muka-context-select__label-group--link[aria-disabled='true'] {
10604
+ cursor: not-allowed;
10605
+ opacity: 0.5;
10606
+ pointer-events: none;
10189
10607
  }
10190
10608
 
10191
- .muka-container--gap-default {
10192
- display: flex;
10609
+ .muka-context-select__icon {
10610
+ display: inline-flex;
10611
+ flex-shrink: 0;
10612
+ align-items: center;
10613
+ justify-content: center;
10614
+ width: var(--icon-size-xs, 16px);
10615
+ height: var(--icon-size-xs, 16px);
10616
+ color: var(--color-text-default-default);
10617
+ }
10618
+
10619
+ .muka-context-select__icon .muka-icon {
10620
+ width: var(--icon-size-xs, 16px);
10621
+ height: var(--icon-size-xs, 16px);
10622
+ }
10623
+
10624
+ .muka-context-select__label {
10625
+ font-family: var(--text-label-sm-regular-font-family);
10626
+ font-size: var(--text-label-sm-regular-font-size);
10627
+ font-weight: var(--text-label-sm-regular-font-weight);
10628
+ line-height: var(--text-label-sm-regular-line-height);
10629
+ white-space: nowrap;
10630
+ }
10631
+
10632
+ .muka-context-select__menu-button {
10633
+ position: relative;
10634
+ display: inline-flex;
10635
+ flex-shrink: 0;
10636
+ align-items: center;
10637
+ justify-content: center;
10638
+ width: var(--size-2xl, 32px);
10639
+ height: var(--size-2xl, 32px);
10640
+ margin: 0;
10641
+ padding: 0;
10642
+ border: none;
10643
+ border-radius: var(--border-radius-lg);
10644
+ background: transparent;
10645
+ color: var(--color-text-default-default);
10646
+ cursor: pointer;
10647
+ }
10648
+
10649
+ .muka-context-select__menu-button:hover,
10650
+ .muka-context-select__menu-button:focus-visible,
10651
+ .muka-context-select__menu-button[data-state='open'],
10652
+ .muka-context-select--expanded .muka-context-select__menu-button {
10653
+ border: var(--border-width-regular) solid var(--color-border-default);
10654
+ }
10655
+
10656
+ .muka-context-select__menu-button:focus-visible {
10657
+ outline: 2px solid var(--color-border-focus);
10658
+ outline-offset: 2px;
10659
+ }
10660
+
10661
+ .muka-context-select__menu-button:disabled {
10662
+ cursor: not-allowed;
10663
+ opacity: 0.5;
10664
+ }
10665
+
10666
+ .muka-context-select__content {
10667
+ min-width: 17.5rem;
10668
+ }
10669
+
10670
+
10671
+ /* Container */
10672
+ /* Container Component - Layout tokens (container.max-width, container.gap) */
10673
+
10674
+ .muka-container {
10675
+ box-sizing: border-box;
10676
+ width: 100%;
10677
+ margin-inline: auto;
10678
+ }
10679
+
10680
+ /* Max-width variants */
10681
+ .muka-container--max-width-small {
10682
+ max-width: var(--container-max-width-small);
10683
+ }
10684
+
10685
+ .muka-container--max-width-medium {
10686
+ max-width: var(--container-max-width-medium);
10687
+ }
10688
+
10689
+ .muka-container--max-width-large {
10690
+ max-width: var(--container-max-width-large);
10691
+ }
10692
+
10693
+ .muka-container--max-width-xlarge {
10694
+ max-width: var(--container-max-width-xlarge);
10695
+ }
10696
+
10697
+ /* No gap — max-width only, no flex */
10698
+ .muka-container--gap-none {
10699
+ /* block layout by default */
10700
+ }
10701
+
10702
+ /* Gap variants — flex column with token gap */
10703
+ .muka-container--gap-compact {
10704
+ display: flex;
10705
+ flex-direction: column;
10706
+ gap: var(--container-gap-compact);
10707
+ }
10708
+
10709
+ .muka-container--gap-default {
10710
+ display: flex;
10193
10711
  flex-direction: column;
10194
10712
  gap: var(--container-gap-default);
10195
10713
  }
@@ -12280,9 +12798,17 @@ button.muka-chat-photo-grid__tile:focus-visible {
12280
12798
  user-select: none;
12281
12799
  }
12282
12800
 
12283
- /* Ellipsis */
12284
- .muka-breadcrumb__ellipsis {
12285
- color: var(--color-text-subtle-default);
12801
+ .muka-breadcrumb__item--context {
12802
+ gap: 0;
12803
+ }
12804
+
12805
+ .muka-breadcrumb__list:has(.muka-breadcrumb__item--context) {
12806
+ gap: 0;
12807
+ }
12808
+
12809
+ .muka-breadcrumb__item--context .muka-breadcrumb__separator {
12810
+ margin: 0;
12811
+ padding-inline: var(--spacing-1, 4px);
12286
12812
  }
12287
12813
 
12288
12814
  /* Size variants */
@@ -13486,148 +14012,6 @@ button.muka-chat-photo-grid__tile:focus-visible {
13486
14012
  }
13487
14013
 
13488
14014
 
13489
- /* ActionSheet */
13490
- /* ActionSheet Component Styles */
13491
-
13492
- .muka-action-sheet__inner {
13493
- display: flex;
13494
- flex-direction: column;
13495
- padding: 0 var(--spacing-4) var(--spacing-3) var(--spacing-4);
13496
- gap: var(--spacing-3);
13497
- }
13498
-
13499
- /* ─── Header ──────────────────────────────────────────── */
13500
-
13501
- .muka-action-sheet__header {
13502
- display: flex;
13503
- flex-direction: column;
13504
- align-items: center;
13505
- gap: var(--spacing-1);
13506
- padding: var(--spacing-2) 0 var(--spacing-3);
13507
- text-align: center;
13508
- }
13509
-
13510
- .muka-action-sheet__title {
13511
- margin: 0;
13512
- color: var(--color-text-default-default);
13513
- font-family: var(--text-label-md-semibold-fontFamily);
13514
- font-weight: var(--text-label-md-semibold-fontWeight);
13515
- font-size: var(--text-label-md-semibold-fontSize);
13516
- line-height: var(--text-label-md-semibold-lineHeight);
13517
- }
13518
-
13519
- .muka-action-sheet__description {
13520
- margin: 0;
13521
- color: var(--color-text-subtle-default);
13522
- font-family: var(--text-body-sm-regular-fontFamily);
13523
- font-weight: var(--text-body-sm-regular-fontWeight);
13524
- font-size: var(--text-body-sm-regular-fontSize);
13525
- line-height: var(--text-body-sm-regular-lineHeight);
13526
- }
13527
-
13528
- /* ─── Actions group ───────────────────────────────────── */
13529
-
13530
- .muka-action-sheet__actions {
13531
- display: flex;
13532
- flex-direction: column;
13533
- background-color: var(--color-surface-level1);
13534
- border-radius: var(--radius-md);
13535
- overflow: hidden;
13536
- }
13537
-
13538
- .muka-action-sheet__item {
13539
- display: flex;
13540
- align-items: center;
13541
- gap: var(--spacing-3);
13542
- padding: var(--spacing-3) var(--spacing-4);
13543
- background: none;
13544
- border: none;
13545
- cursor: pointer;
13546
- text-align: left;
13547
- color: var(--color-text-default-default);
13548
- font-family: var(--text-body-md-regular-fontFamily);
13549
- font-weight: var(--text-body-md-regular-fontWeight);
13550
- font-size: var(--text-body-md-regular-fontSize);
13551
- line-height: var(--text-body-md-regular-lineHeight);
13552
- -webkit-tap-highlight-color: transparent;
13553
- transition: background-color 0.12s ease;
13554
- }
13555
-
13556
- .muka-action-sheet__item + .muka-action-sheet__item {
13557
- border-top: var(--border-width-regular) solid var(--color-border-default);
13558
- }
13559
-
13560
- .muka-action-sheet__item:hover:not(:disabled) {
13561
- background-color: var(--color-surface-level2);
13562
- }
13563
-
13564
- .muka-action-sheet__item:active:not(:disabled) {
13565
- background-color: var(--color-surface-level3);
13566
- }
13567
-
13568
- .muka-action-sheet__item:focus-visible {
13569
- outline: 2px solid var(--color-action-default);
13570
- outline-offset: -2px;
13571
- }
13572
-
13573
- .muka-action-sheet__item--destructive {
13574
- color: var(--color-state-error-default);
13575
- }
13576
-
13577
- .muka-action-sheet__item--disabled,
13578
- .muka-action-sheet__item:disabled {
13579
- opacity: 0.5;
13580
- cursor: not-allowed;
13581
- }
13582
-
13583
- .muka-action-sheet__item-icon {
13584
- display: inline-flex;
13585
- align-items: center;
13586
- justify-content: center;
13587
- width: 24px;
13588
- height: 24px;
13589
- flex-shrink: 0;
13590
- }
13591
-
13592
- .muka-action-sheet__item-icon svg {
13593
- width: 100%;
13594
- height: 100%;
13595
- }
13596
-
13597
- .muka-action-sheet__item-label {
13598
- flex: 1;
13599
- }
13600
-
13601
- /* ─── Cancel button (separate at bottom) ──────────────── */
13602
-
13603
- .muka-action-sheet__cancel {
13604
- display: flex;
13605
- align-items: center;
13606
- justify-content: center;
13607
- padding: var(--spacing-3) var(--spacing-4);
13608
- background-color: var(--color-surface-level1);
13609
- border: none;
13610
- border-radius: var(--radius-md);
13611
- cursor: pointer;
13612
- color: var(--color-text-default-default);
13613
- font-family: var(--text-label-md-semibold-fontFamily);
13614
- font-weight: var(--text-label-md-semibold-fontWeight);
13615
- font-size: var(--text-label-md-semibold-fontSize);
13616
- line-height: var(--text-label-md-semibold-lineHeight);
13617
- -webkit-tap-highlight-color: transparent;
13618
- transition: background-color 0.12s ease;
13619
- }
13620
-
13621
- .muka-action-sheet__cancel:hover {
13622
- background-color: var(--color-surface-level2);
13623
- }
13624
-
13625
- .muka-action-sheet__cancel:focus-visible {
13626
- outline: 2px solid var(--color-action-default);
13627
- outline-offset: 2px;
13628
- }
13629
-
13630
-
13631
14015
  /* AgentTaskList */
13632
14016
  /* AgentTaskList Component Styles */
13633
14017
 
@@ -13797,6 +14181,148 @@ button.muka-chat-photo-grid__tile:focus-visible {
13797
14181
  }
13798
14182
 
13799
14183
 
14184
+ /* ActionSheet */
14185
+ /* ActionSheet Component Styles */
14186
+
14187
+ .muka-action-sheet__inner {
14188
+ display: flex;
14189
+ flex-direction: column;
14190
+ padding: 0 var(--spacing-4) var(--spacing-3) var(--spacing-4);
14191
+ gap: var(--spacing-3);
14192
+ }
14193
+
14194
+ /* ─── Header ──────────────────────────────────────────── */
14195
+
14196
+ .muka-action-sheet__header {
14197
+ display: flex;
14198
+ flex-direction: column;
14199
+ align-items: center;
14200
+ gap: var(--spacing-1);
14201
+ padding: var(--spacing-2) 0 var(--spacing-3);
14202
+ text-align: center;
14203
+ }
14204
+
14205
+ .muka-action-sheet__title {
14206
+ margin: 0;
14207
+ color: var(--color-text-default-default);
14208
+ font-family: var(--text-label-md-semibold-fontFamily);
14209
+ font-weight: var(--text-label-md-semibold-fontWeight);
14210
+ font-size: var(--text-label-md-semibold-fontSize);
14211
+ line-height: var(--text-label-md-semibold-lineHeight);
14212
+ }
14213
+
14214
+ .muka-action-sheet__description {
14215
+ margin: 0;
14216
+ color: var(--color-text-subtle-default);
14217
+ font-family: var(--text-body-sm-regular-fontFamily);
14218
+ font-weight: var(--text-body-sm-regular-fontWeight);
14219
+ font-size: var(--text-body-sm-regular-fontSize);
14220
+ line-height: var(--text-body-sm-regular-lineHeight);
14221
+ }
14222
+
14223
+ /* ─── Actions group ───────────────────────────────────── */
14224
+
14225
+ .muka-action-sheet__actions {
14226
+ display: flex;
14227
+ flex-direction: column;
14228
+ background-color: var(--color-surface-level1);
14229
+ border-radius: var(--radius-md);
14230
+ overflow: hidden;
14231
+ }
14232
+
14233
+ .muka-action-sheet__item {
14234
+ display: flex;
14235
+ align-items: center;
14236
+ gap: var(--spacing-3);
14237
+ padding: var(--spacing-3) var(--spacing-4);
14238
+ background: none;
14239
+ border: none;
14240
+ cursor: pointer;
14241
+ text-align: left;
14242
+ color: var(--color-text-default-default);
14243
+ font-family: var(--text-body-md-regular-fontFamily);
14244
+ font-weight: var(--text-body-md-regular-fontWeight);
14245
+ font-size: var(--text-body-md-regular-fontSize);
14246
+ line-height: var(--text-body-md-regular-lineHeight);
14247
+ -webkit-tap-highlight-color: transparent;
14248
+ transition: background-color 0.12s ease;
14249
+ }
14250
+
14251
+ .muka-action-sheet__item + .muka-action-sheet__item {
14252
+ border-top: var(--border-width-regular) solid var(--color-border-default);
14253
+ }
14254
+
14255
+ .muka-action-sheet__item:hover:not(:disabled) {
14256
+ background-color: var(--color-surface-level2);
14257
+ }
14258
+
14259
+ .muka-action-sheet__item:active:not(:disabled) {
14260
+ background-color: var(--color-surface-level3);
14261
+ }
14262
+
14263
+ .muka-action-sheet__item:focus-visible {
14264
+ outline: 2px solid var(--color-action-default);
14265
+ outline-offset: -2px;
14266
+ }
14267
+
14268
+ .muka-action-sheet__item--destructive {
14269
+ color: var(--color-state-error-default);
14270
+ }
14271
+
14272
+ .muka-action-sheet__item--disabled,
14273
+ .muka-action-sheet__item:disabled {
14274
+ opacity: 0.5;
14275
+ cursor: not-allowed;
14276
+ }
14277
+
14278
+ .muka-action-sheet__item-icon {
14279
+ display: inline-flex;
14280
+ align-items: center;
14281
+ justify-content: center;
14282
+ width: 24px;
14283
+ height: 24px;
14284
+ flex-shrink: 0;
14285
+ }
14286
+
14287
+ .muka-action-sheet__item-icon svg {
14288
+ width: 100%;
14289
+ height: 100%;
14290
+ }
14291
+
14292
+ .muka-action-sheet__item-label {
14293
+ flex: 1;
14294
+ }
14295
+
14296
+ /* ─── Cancel button (separate at bottom) ──────────────── */
14297
+
14298
+ .muka-action-sheet__cancel {
14299
+ display: flex;
14300
+ align-items: center;
14301
+ justify-content: center;
14302
+ padding: var(--spacing-3) var(--spacing-4);
14303
+ background-color: var(--color-surface-level1);
14304
+ border: none;
14305
+ border-radius: var(--radius-md);
14306
+ cursor: pointer;
14307
+ color: var(--color-text-default-default);
14308
+ font-family: var(--text-label-md-semibold-fontFamily);
14309
+ font-weight: var(--text-label-md-semibold-fontWeight);
14310
+ font-size: var(--text-label-md-semibold-fontSize);
14311
+ line-height: var(--text-label-md-semibold-lineHeight);
14312
+ -webkit-tap-highlight-color: transparent;
14313
+ transition: background-color 0.12s ease;
14314
+ }
14315
+
14316
+ .muka-action-sheet__cancel:hover {
14317
+ background-color: var(--color-surface-level2);
14318
+ }
14319
+
14320
+ .muka-action-sheet__cancel:focus-visible {
14321
+ outline: 2px solid var(--color-action-default);
14322
+ outline-offset: 2px;
14323
+ }
14324
+
14325
+
13800
14326
  /* Accordion */
13801
14327
  /* Accordion Component Styles */
13802
14328