@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
@@ -42,7 +42,7 @@ export interface ActionSheetProps {
42
42
  /**
43
43
  * ActionSheet — iOS-style action menu sliding up from the bottom.
44
44
  *
45
- * Built on `Sheet`. Use as the touch replacement for `ContextMenu` and as the
45
+ * Built on `Sheet`. Use as the touch replacement for `Menu` with `trigger="context"` and as the
46
46
  * primary pattern for "options" menus on motorcycles, service records, etc.
47
47
  *
48
48
  * Each action's `onClick` runs, then the sheet auto-closes.
@@ -1,14 +1,31 @@
1
1
  import React from 'react';
2
+ import { type ContextSelectOption } from '../ContextSelect';
2
3
  import './Breadcrumb.css';
3
4
  export interface BreadcrumbItem {
4
- /** Display label */
5
+ /** Display label (also used as ContextSelect label when `contextSelect` is set) */
5
6
  label: string;
6
- /** Link URL */
7
+ /** Link URL for plain crumbs, or ContextSelect label navigation */
7
8
  href?: string;
8
- /** Click handler */
9
+ /** Click handler for plain crumbs, or ContextSelect label navigation */
9
10
  onClick?: () => void;
10
11
  /** Optional icon */
11
12
  icon?: React.ReactNode;
13
+ /**
14
+ * When set, this segment renders a ContextSelect:
15
+ * label navigates (href/onClick), chevron switches context via the menu.
16
+ */
17
+ contextSelect?: {
18
+ options: ReadonlyArray<ContextSelectOption>;
19
+ value?: string;
20
+ onValueChange?: (value: string) => void;
21
+ /** Optional leading icon (falls back to `item.icon`) */
22
+ icon?: React.ReactNode;
23
+ searchable?: boolean;
24
+ searchPlaceholder?: string;
25
+ scrollbar?: boolean;
26
+ disabled?: boolean;
27
+ 'aria-label'?: string;
28
+ };
12
29
  }
13
30
  export interface BreadcrumbProps {
14
31
  /** Breadcrumb items */
@@ -22,6 +39,13 @@ export interface BreadcrumbProps {
22
39
  /** Additional CSS classes */
23
40
  className?: string;
24
41
  }
42
+ export type { ContextSelectOption };
43
+ /**
44
+ * Breadcrumb — hierarchical navigation.
45
+ *
46
+ * Supports plain link/button crumbs and **contextual** segments via
47
+ * `item.contextSelect` (ContextSelect: label → overview, chevron → switch).
48
+ */
25
49
  export declare const Breadcrumb: React.FC<BreadcrumbProps>;
26
50
  export default Breadcrumb;
27
51
  //# sourceMappingURL=Breadcrumb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumb.d.ts","sourceRoot":"","sources":["../../../../components/Breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAE1B,MAAM,WAAW,cAAc;IAC7B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oBAAoB;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyEhD,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"Breadcrumb.d.ts","sourceRoot":"","sources":["../../../../components/Breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAE1B,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oBAAoB;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,wDAAwD;QACxD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgGhD,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -35,6 +35,13 @@ export interface ChatComposerProps {
35
35
  micLabel?: string;
36
36
  /** Send button aria-label. Default: 'Send message' */
37
37
  sendLabel?: string;
38
+ /**
39
+ * Overrides the default send-enablement rule. By default the send button is
40
+ * enabled once the trimmed text is non-empty (or while `recording`). Set this
41
+ * to enable/disable send explicitly — e.g. a caption-less gallery send driven
42
+ * by staged attachments rather than text.
43
+ */
44
+ canSubmit?: boolean;
38
45
  /** When true, the composer switches to the voice-recording layout */
39
46
  recording?: boolean;
40
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../../../components/ChatComposer/ChatComposer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAKN,MAAM,OAAO,CAAC;AAEf,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B,gEAAgE;IAChE,WAAW,CAAC,EAAE,QAAQ,CAAC;IAEvB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEhC,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B,4EAA4E;IAC5E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,+FA2MxB,CAAC;AAIF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../../../components/ChatComposer/ChatComposer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAKN,MAAM,OAAO,CAAC;AAEf,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B,gEAAgE;IAChE,WAAW,CAAC,EAAE,QAAQ,CAAC;IAEvB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEhC,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B,4EAA4E;IAC5E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,+FAqNxB,CAAC;AAIF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ import './ContextSelect.css';
3
+ export interface ContextSelectOption {
4
+ value: string;
5
+ label: string;
6
+ disabled?: boolean;
7
+ }
8
+ export interface ContextSelectProps {
9
+ /** Available contexts */
10
+ options: ReadonlyArray<ContextSelectOption>;
11
+ /** Controlled selected value */
12
+ value?: string;
13
+ /** Called when selection changes (instant context switch) */
14
+ onValueChange?: (value: string) => void;
15
+ /**
16
+ * Trigger label. Defaults to the selected option's label, or the first option,
17
+ * or "Context".
18
+ */
19
+ label?: string;
20
+ /**
21
+ * Optional leading icon before the label (16px / icon.size.xs).
22
+ * Omit to render label-only. Spaced 8px (spacing/2) from the label.
23
+ */
24
+ icon?: React.ReactNode;
25
+ /**
26
+ * Navigate when the label is clicked (context overview).
27
+ * Independent from the chevron menu trigger.
28
+ */
29
+ href?: string;
30
+ /** Called when the label is activated (alternative to `href`) */
31
+ onLabelClick?: () => void;
32
+ /** Enable sticky search in the menu. Default: true */
33
+ searchable?: boolean;
34
+ /** Search placeholder. Default: 'Search' */
35
+ searchPlaceholder?: string;
36
+ /** Show custom scrollbar when the list overflows. Default: false */
37
+ scrollbar?: boolean;
38
+ /** Controlled open state */
39
+ open?: boolean;
40
+ /** Called when open state changes */
41
+ onOpenChange?: (open: boolean) => void;
42
+ /** Default open state */
43
+ defaultOpen?: boolean;
44
+ /** Disable the control */
45
+ disabled?: boolean;
46
+ /** Accessible name for the chevron menu button */
47
+ 'aria-label'?: string;
48
+ /** Additional CSS classes on the root */
49
+ className?: string;
50
+ }
51
+ /**
52
+ * ContextSelect — split control for contextual navigation.
53
+ *
54
+ * - **Label** (and icon): navigates to the context overview (`href` / `onLabelClick`)
55
+ * - **Chevron button**: opens a searchable single-select menu to switch context instantly
56
+ *
57
+ * Designed to compose inside Breadcrumb (contextual breadcrumb).
58
+ * Not a form Select — use `Select` / `Combobox` for forms.
59
+ */
60
+ export declare const ContextSelect: React.FC<ContextSelectProps>;
61
+ export default ContextSelect;
62
+ //# sourceMappingURL=ContextSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextSelect.d.ts","sourceRoot":"","sources":["../../../../components/ContextSelect/ContextSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAUjD,OAAO,qBAAqB,CAAC;AAE7B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,yBAAyB;IACzB,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC5C,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,qCAAqC;IACrC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,yBAAyB;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmItD,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ContextSelect, type ContextSelectProps, type ContextSelectOption, } from './ContextSelect';
2
+ export { default } from './ContextSelect';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/ContextSelect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
@@ -97,7 +97,7 @@ export interface DataTableProps<T> {
97
97
  isRowDisabled?: (row: T, index: number) => boolean;
98
98
  /**
99
99
  * Render a trailing action for each row (a `Button`, an icon-only `Button`,
100
- * or a `ContextMenu`/`Menu` trigger). Rendered in a pinned trailing column;
100
+ * or a `Menu` trigger). Rendered in a pinned trailing column;
101
101
  * clicks on it never trigger the row click/href.
102
102
  */
103
103
  rowAction?: (row: T, index: number) => React.ReactNode;
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import './EmojiPicker.css';
3
+ /** A small default set of common Unicode emoji. Override via the `emoji` prop. */
4
+ export declare const DEFAULT_EMOJI: string[];
5
+ export interface EmojiPickerProps {
6
+ /** Whether the panel is shown. */
7
+ open: boolean;
8
+ /** Called when the panel requests to close (Escape / outside click). */
9
+ onClose: () => void;
10
+ /** Called with the chosen emoji character. */
11
+ onSelect: (emoji: string) => void;
12
+ /** Accessible label for the panel. Default: 'Emoji'. */
13
+ title?: string;
14
+ /** Emoji to display. Defaults to a small built-in Unicode set. */
15
+ emoji?: string[];
16
+ /** Additional CSS classes */
17
+ className?: string;
18
+ }
19
+ /**
20
+ * EmojiPicker — a minimal panel of Unicode emoji that inserts into a composer.
21
+ *
22
+ * Optional and dependency-free: apps may ignore it and wire only
23
+ * `ChatComposer.onEmoji`. Emoji are plain text, so once inserted they render in
24
+ * sent bubbles for free. Closes on Escape or an outside click.
25
+ */
26
+ export declare const EmojiPicker: React.FC<EmojiPickerProps>;
27
+ export default EmojiPicker;
28
+ //# sourceMappingURL=EmojiPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmojiPicker.d.ts","sourceRoot":"","sources":["../../../../components/EmojiPicker/EmojiPicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,mBAAmB,CAAC;AAE3B,kFAAkF;AAClF,eAAO,MAAM,aAAa,EAAE,MAAM,EAMjC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,OAAO,CAAC;IAEd,wEAAwE;IACxE,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqDlD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { EmojiPicker, type EmojiPickerProps, DEFAULT_EMOJI, } from './EmojiPicker';
2
+ export { default } from './EmojiPicker';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/EmojiPicker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ /**
3
+ * Custom icon from Figma: arrow-drop-up-down-line (node 5578:7253).
4
+ * Combined drop-up + drop-down carets — not available as a single Remix glyph.
5
+ */
6
+ export declare const ArrowDropUpDownIcon: React.FC<{
7
+ className?: string;
8
+ }>;
9
+ //# sourceMappingURL=ArrowDropUpDownIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrowDropUpDownIcon.d.ts","sourceRoot":"","sources":["../../../../../components/Icon/custom/ArrowDropUpDownIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBhE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"iconRegistry.d.ts","sourceRoot":"","sources":["../../../../components/Icon/iconRegistry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD,CAAC;AAiBF;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAM,CAAC;AAyDlE,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,KAAK,CAAC,aAAa,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAI7C"}
1
+ {"version":3,"file":"iconRegistry.d.ts","sourceRoot":"","sources":["../../../../components/Icon/iconRegistry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD,CAAC;AAiBF;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAM,CAAC;AA+DlE,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,KAAK,CAAC,aAAa,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAI7C"}
@@ -1,57 +1,63 @@
1
1
  import React from 'react';
2
2
  import './Menu.css';
3
+ export type MenuTriggerMode = 'click' | 'context';
4
+ interface MenuSearchContextValue {
5
+ query: string;
6
+ setQuery: (query: string) => void;
7
+ searchable: boolean;
8
+ }
9
+ export declare function useMenuSearch(): MenuSearchContextValue;
10
+ /** Bold the first case-insensitive match of `query` within `text`. */
11
+ export declare function highlightMenuMatch(text: string, query: string): React.ReactNode;
3
12
  export interface MenuProps {
4
13
  /** Menu content */
5
14
  children: React.ReactNode;
6
- /** Controlled open state */
15
+ /**
16
+ * How the menu opens:
17
+ * - `click` — button / pointer click (Radix DropdownMenu)
18
+ * - `context` — right-click / long-press context menu
19
+ */
20
+ trigger?: MenuTriggerMode;
21
+ /** Controlled open state (click trigger only; context menus are pointer-driven) */
7
22
  open?: boolean;
8
23
  /** Called when the open state changes */
9
24
  onOpenChange?: (open: boolean) => void;
10
- /** Default open state for uncontrolled usage */
25
+ /** Default open state for uncontrolled usage (click trigger) */
11
26
  defaultOpen?: boolean;
12
27
  /** Modal behavior - if true, interactions outside will close the menu */
13
28
  modal?: boolean;
14
29
  }
15
30
  /**
16
- * Menu Component
17
- *
18
- * A dropdown menu for displaying actions and options.
19
- * Built on Radix UI DropdownMenu for accessibility and keyboard navigation.
31
+ * Menu (Dropdown Menu)
20
32
  *
21
- * @example
22
- * ```tsx
23
- * <Menu>
24
- * <MenuTrigger asChild>
25
- * <Button>Open Menu</Button>
26
- * </MenuTrigger>
27
- * <MenuContent>
28
- * <MenuItem onSelect={() => console.log('Edit')}>Edit</MenuItem>
29
- * <MenuItem onSelect={() => console.log('Delete')} destructive>Delete</MenuItem>
30
- * </MenuContent>
31
- * </Menu>
32
- * ```
33
+ * Shared action-menu surface for click and right-click triggers.
34
+ * Built on Radix DropdownMenu / ContextMenu.
33
35
  */
34
36
  export declare const Menu: React.FC<MenuProps>;
37
+ /** Alias for Figma / docs naming parity with "Dropdown Menu". */
38
+ export declare const DropdownMenu: React.FC<MenuProps>;
35
39
  export interface MenuTriggerProps {
36
40
  /** Trigger element */
37
41
  children: React.ReactNode;
38
42
  /** Merge trigger props onto child element instead of wrapping */
39
43
  asChild?: boolean;
44
+ /** Disable the trigger (context menus) */
45
+ disabled?: boolean;
40
46
  /** Additional CSS classes */
41
47
  className?: string;
42
48
  }
43
49
  /**
44
- * MenuTrigger - Button that opens the menu
50
+ * MenuTrigger — opens the menu on click or right-click depending on `Menu.trigger`.
45
51
  */
46
52
  export declare const MenuTrigger: React.ForwardRefExoticComponent<MenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
47
53
  export interface MenuContentProps {
48
54
  /** Menu items */
49
55
  children: React.ReactNode;
50
- /** Horizontal alignment relative to trigger */
56
+ /** Horizontal alignment relative to trigger (click mode) */
51
57
  align?: 'start' | 'center' | 'end';
52
- /** Side of the trigger to render on */
58
+ /** Side of the trigger to render on (click mode) */
53
59
  side?: 'top' | 'right' | 'bottom' | 'left';
54
- /** Distance from the trigger */
60
+ /** Distance from the trigger (click mode) */
55
61
  sideOffset?: number;
56
62
  /** Distance from the alignment edge */
57
63
  alignOffset?: number;
@@ -61,15 +67,28 @@ export interface MenuContentProps {
61
67
  loop?: boolean;
62
68
  /**
63
69
  * Called when focus returns to the trigger after the menu closes.
64
- * Call `event.preventDefault()` to leave focus where it is — useful when the
65
- * trigger is a hover-only affordance that should not stay revealed.
70
+ * Call `event.preventDefault()` to leave focus where it is.
66
71
  */
67
72
  onCloseAutoFocus?: (event: Event) => void;
73
+ /** Enable search context for MenuSearch + item filtering */
74
+ searchable?: boolean;
75
+ /** Show the custom Figma scrollbar when content overflows */
76
+ scrollbar?: boolean;
77
+ }
78
+ export declare const MenuContent: React.ForwardRefExoticComponent<MenuContentProps & React.RefAttributes<HTMLDivElement>>;
79
+ export interface MenuSearchProps {
80
+ /** Placeholder text */
81
+ placeholder?: string;
82
+ /** Additional CSS classes */
83
+ className?: string;
84
+ /** Accessible label */
85
+ 'aria-label'?: string;
68
86
  }
69
87
  /**
70
- * MenuContent - The dropdown container for menu items
88
+ * MenuSearch — sticky search header for filtering menu items.
89
+ * Must be used inside a `MenuContent` with `searchable`.
71
90
  */
72
- export declare const MenuContent: React.ForwardRefExoticComponent<MenuContentProps & React.RefAttributes<HTMLDivElement>>;
91
+ export declare const MenuSearch: React.ForwardRefExoticComponent<MenuSearchProps & React.RefAttributes<HTMLInputElement>>;
73
92
  export interface MenuItemProps {
74
93
  /** Item content */
75
94
  children: React.ReactNode;
@@ -85,6 +104,8 @@ export interface MenuItemProps {
85
104
  shortcut?: string;
86
105
  /** Additional CSS classes */
87
106
  className?: string;
107
+ /** Override text used for search filtering / highlighting */
108
+ textValue?: string;
88
109
  }
89
110
  /**
90
111
  * MenuItem - An action item within the menu
@@ -121,12 +142,13 @@ export interface MenuCheckboxItemProps {
121
142
  disabled?: boolean;
122
143
  /**
123
144
  * Icon to display before the label, in the same column as `MenuItem`'s icon.
124
- * The checkmark then moves to the end of the row, so a menu that mixes plain
125
- * and checkable items keeps one icon column.
145
+ * The checkmark then moves to the end of the row.
126
146
  */
127
147
  icon?: React.ReactNode;
128
148
  /** Additional CSS classes */
129
149
  className?: string;
150
+ /** Override text used for search filtering / highlighting */
151
+ textValue?: string;
130
152
  }
131
153
  /**
132
154
  * MenuCheckboxItem - A checkable menu item
@@ -155,6 +177,14 @@ export interface MenuRadioItemProps {
155
177
  disabled?: boolean;
156
178
  /** Additional CSS classes */
157
179
  className?: string;
180
+ /**
181
+ * Indicator style:
182
+ * - `dot` — classic leading radio dot (default)
183
+ * - `check` — trailing check + selected background (Context Select)
184
+ */
185
+ indicator?: 'dot' | 'check';
186
+ /** Override text used for search filtering / highlighting */
187
+ textValue?: string;
158
188
  }
159
189
  /**
160
190
  * MenuRadioItem - A radio option within a MenuRadioGroup
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../../components/Menu/Menu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../../components/Menu/Menu.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export { Menu, MenuTrigger, MenuContent, MenuItem, MenuSeparator, MenuGroup, MenuCheckboxItem, MenuRadioGroup, MenuRadioItem, MenuSub, MenuSubTrigger, MenuSubContent, } from './Menu';
2
- export type { MenuProps, MenuTriggerProps, MenuContentProps, MenuItemProps, MenuSeparatorProps, MenuGroupProps, MenuCheckboxItemProps, MenuRadioGroupProps, MenuRadioItemProps, MenuSubProps, MenuSubTriggerProps, MenuSubContentProps, } from './Menu';
1
+ export { Menu, DropdownMenu, MenuTrigger, MenuContent, MenuSearch, MenuItem, MenuSeparator, MenuGroup, MenuCheckboxItem, MenuRadioGroup, MenuRadioItem, MenuSub, MenuSubTrigger, MenuSubContent, highlightMenuMatch, useMenuSearch, } from './Menu';
2
+ export type { MenuProps, MenuTriggerMode, MenuTriggerProps, MenuContentProps, MenuSearchProps, MenuItemProps, MenuSeparatorProps, MenuGroupProps, MenuCheckboxItemProps, MenuRadioGroupProps, MenuRadioItemProps, MenuSubProps, MenuSubTriggerProps, MenuSubContentProps, } from './Menu';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/Menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,WAAW,EACX,WAAW,EACX,QAAQ,EACR,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/Menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,QAAQ,EACR,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,OAAO,EACP,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,aAAa,GACd,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+ import './PhotoDraftStrip.css';
3
+ export interface DraftPhoto {
4
+ /** Stable identifier used as the React key and passed to `onRemove`. */
5
+ id: string;
6
+ /** Local object URL for the preview tile. */
7
+ previewUrl: string;
8
+ /** Upload lifecycle for this tile. */
9
+ status: 'uploading' | 'ready' | 'error';
10
+ /** Upload progress 0..100 while `status === 'uploading'`. */
11
+ progress: number;
12
+ /** File name, shown as the error caption and the tile's alt text. */
13
+ fileName: string;
14
+ }
15
+ export interface PhotoDraftStripProps {
16
+ /** Staged photos, in order. Renders nothing when empty. */
17
+ photos: DraftPhoto[];
18
+ /** Called with the photo id when its remove (×) control is activated. */
19
+ onRemove: (id: string) => void;
20
+ /** Called when the send button is pressed. Omit with `showSend={false}`. */
21
+ onSend?: () => void;
22
+ /** When true the send button shows a spinner and is disabled. */
23
+ sending?: boolean;
24
+ /** Show the trailing send button. Default: true. */
25
+ showSend?: boolean;
26
+ /** Send button aria-label. Default: 'Send photos'. */
27
+ sendLabel?: string;
28
+ /** Remove button aria-label (per tile). Default: 'Remove photo'. */
29
+ removeLabel?: string;
30
+ /** View label for a tile (per tile). Default: 'View photo'. */
31
+ viewLabel?: string;
32
+ /** Caption shown under a tile in the error state. Default: 'Upload failed'. */
33
+ errorCaption?: string;
34
+ /** Additional CSS classes */
35
+ className?: string;
36
+ }
37
+ /**
38
+ * PhotoDraftStrip — a controlled, horizontally-scrolling strip of staged photos
39
+ * shown above the composer while they upload. Each tile is a Muka `Thumbnail`
40
+ * carrying its own upload progress / error and a remove (×) control, so a
41
+ * per-item failure never blocks sending the rest.
42
+ *
43
+ * Controlled and network-free: the app owns upload, object URLs and the cap on
44
+ * how many photos may be staged. The optional send button lives here because
45
+ * the composer only enables its own send once text is non-empty — it can't send
46
+ * a caption-less gallery. Sending is enabled once every tile has settled and at
47
+ * least one uploaded successfully.
48
+ */
49
+ export declare const PhotoDraftStrip: React.FC<PhotoDraftStripProps>;
50
+ export default PhotoDraftStrip;
51
+ //# sourceMappingURL=PhotoDraftStrip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhotoDraftStrip.d.ts","sourceRoot":"","sources":["../../../../components/PhotoDraftStrip/PhotoDraftStrip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,uBAAuB,CAAC;AAE/B,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,MAAM,EAAE,UAAU,EAAE,CAAC;IAErB,yEAAyE;IACzE,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA8D1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { PhotoDraftStrip, type PhotoDraftStripProps, type DraftPhoto, } from './PhotoDraftStrip';
2
+ export { default } from './PhotoDraftStrip';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/PhotoDraftStrip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import './RecordingBar.css';
3
+ export interface RecordingBarProps {
4
+ /** Elapsed recording time in milliseconds (from `useVoiceRecorder`). */
5
+ elapsedMs: number;
6
+ /** Live normalized amplitudes (0..1) for the moving waveform. */
7
+ livePeaks: number[];
8
+ /** Accessible status label. Default: 'Recording'. */
9
+ recordingLabel?: string;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ }
13
+ /**
14
+ * RecordingBar — drop-in content for `ChatComposer.recordingSlot` while a voice
15
+ * note is being recorded. A pulsing record dot, an elapsed timer, and the live
16
+ * `Waveform`. Muka delegates this slot to the app, but ships this default so
17
+ * consumers don't rebuild it. Feed it straight from `useVoiceRecorder`
18
+ * (`elapsedMs`, `livePeaks`). Tokens only; the label comes via props.
19
+ */
20
+ export declare const RecordingBar: React.FC<RecordingBarProps>;
21
+ export default RecordingBar;
22
+ //# sourceMappingURL=RecordingBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordingBar.d.ts","sourceRoot":"","sources":["../../../../components/RecordingBar/RecordingBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiBpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { RecordingBar, type RecordingBarProps } from './RecordingBar';
2
+ export { default } from './RecordingBar';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/RecordingBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import './Scrollbar.css';
3
+ export interface ScrollbarProps {
4
+ /** The scrollable viewport element to control */
5
+ viewportRef: React.RefObject<HTMLElement | null>;
6
+ /** Orientation — only vertical is used by menus today */
7
+ orientation?: 'vertical' | 'horizontal';
8
+ /** Pixels to scroll when pressing the chevron buttons */
9
+ step?: number;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ }
13
+ /**
14
+ * Scrollbar — custom vertical scrollbar matching the Figma menu scrollbar
15
+ * (chevron buttons + grip thumb on a 32px rail).
16
+ */
17
+ export declare const Scrollbar: React.FC<ScrollbarProps>;
18
+ export default Scrollbar;
19
+ //# sourceMappingURL=Scrollbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scrollbar.d.ts","sourceRoot":"","sources":["../../../../components/Scrollbar/Scrollbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAEhE,OAAO,iBAAiB,CAAC;AAEzB,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACjD,yDAAyD;IACzD,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAwJ9C,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Scrollbar, type ScrollbarProps } from './Scrollbar';
2
+ export { default } from './Scrollbar';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/Scrollbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import './VoiceMessage.css';
3
+ export type VoiceMessageVariant = 'own' | 'peer' | 'agent';
4
+ export interface VoiceMessageProps {
5
+ /**
6
+ * Playable audio source (e.g. a short-lived signed URL the app minted), or
7
+ * null while unresolved / unavailable. Muka never fetches or signs this.
8
+ */
9
+ src: string | null;
10
+ /** Persisted clip length in seconds (fallback until metadata loads). */
11
+ durationSec: number;
12
+ /** Persisted, normalized waveform peaks (0..1). */
13
+ peaks: number[];
14
+ /** Bubble variant — drives which side the played bars are tinted for. */
15
+ variant: VoiceMessageVariant;
16
+ /** Play button aria-label. Default: 'Play voice message'. */
17
+ playLabel?: string;
18
+ /** Pause button aria-label. Default: 'Pause voice message'. */
19
+ pauseLabel?: string;
20
+ /** Waveform label used when `src` is null. Default: 'Voice message unavailable'. */
21
+ unavailableLabel?: string;
22
+ /** Additional CSS classes */
23
+ className?: string;
24
+ }
25
+ /**
26
+ * VoiceMessage — inline play/pause player for a sent voice note.
27
+ *
28
+ * Composes a Muka `Button` with the shared token-based `Waveform`; the media
29
+ * stays with the app (`src` is whatever URL it hands over — Muka never fetches
30
+ * or signs it). Play/pause only: there is no transcription/speech-to-text.
31
+ */
32
+ export declare const VoiceMessage: React.FC<VoiceMessageProps>;
33
+ export default VoiceMessage;
34
+ //# sourceMappingURL=VoiceMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceMessage.d.ts","sourceRoot":"","sources":["../../../../components/VoiceMessage/VoiceMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D,OAAO,oBAAoB,CAAC;AAE5B,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IAEpB,mDAAmD;IACnD,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,yEAAyE;IACzE,OAAO,EAAE,mBAAmB,CAAC;IAE7B,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2GpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { VoiceMessage, type VoiceMessageProps, type VoiceMessageVariant, } from './VoiceMessage';
2
+ export { default } from './VoiceMessage';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/VoiceMessage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}