@botiverse/raft-ui 0.51.0 → 0.52.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 (585) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/components/activity-inbox/activity-inbox-shell.d.mts +12 -0
  3. package/dist/components/activity-inbox/activity-inbox-shell.mjs +39 -0
  4. package/dist/components/activity-inbox/activity-inbox-shell.recipe.mjs +14 -0
  5. package/dist/components/activity-inbox/activity-inbox-sidebar.d.mts +6 -0
  6. package/dist/components/activity-inbox/activity-inbox-sidebar.mjs +22 -0
  7. package/dist/components/activity-inbox/activity-inbox-sidebar.recipe.mjs +22 -0
  8. package/dist/components/activity-inbox/activity-inbox-toolbar.d.mts +9 -0
  9. package/dist/components/activity-inbox/activity-inbox-toolbar.mjs +29 -0
  10. package/dist/components/activity-inbox/activity-inbox-toolbar.recipe.mjs +14 -0
  11. package/dist/components/activity-inbox/index.d.mts +4 -0
  12. package/dist/components/alert-dialog/alert-dialog.d.mts +41 -0
  13. package/dist/components/alert-dialog/alert-dialog.mjs +163 -0
  14. package/dist/components/alert-dialog/index.d.mts +2 -0
  15. package/dist/components/announcement-dialog/announcement-dialog.d.mts +18 -0
  16. package/dist/components/announcement-dialog/announcement-dialog.mjs +121 -0
  17. package/dist/components/announcement-dialog/index.d.mts +3 -0
  18. package/dist/components/app-rail/app-rail.d.mts +31 -0
  19. package/dist/components/app-rail/app-rail.mjs +126 -0
  20. package/dist/components/app-rail/app-rail.recipe.mjs +47 -0
  21. package/dist/components/app-rail/index.d.mts +2 -0
  22. package/dist/components/app-shell/app-shell.d.mts +27 -0
  23. package/dist/components/app-shell/app-shell.mjs +217 -0
  24. package/dist/components/app-shell/index.d.mts +2 -0
  25. package/dist/components/avatar/avatar.d.mts +169 -0
  26. package/dist/components/avatar/avatar.mjs +298 -0
  27. package/dist/components/avatar/index.d.mts +2 -0
  28. package/dist/components/badge/badge.d.mts +89 -0
  29. package/dist/components/badge/badge.mjs +203 -0
  30. package/dist/components/badge/index.d.mts +2 -0
  31. package/dist/components/banner/banner.d.mts +141 -0
  32. package/dist/components/banner/banner.mjs +228 -0
  33. package/dist/components/banner/index.d.mts +2 -0
  34. package/dist/components/button/button.d.mts +257 -0
  35. package/dist/components/button/button.mjs +177 -0
  36. package/dist/components/button/index.d.mts +2 -0
  37. package/dist/components/card/card.d.mts +21 -0
  38. package/dist/components/card/card.mjs +114 -0
  39. package/dist/components/card/card.recipe.d.mts +105 -0
  40. package/dist/components/card/card.recipe.mjs +67 -0
  41. package/dist/components/card/index.d.mts +2 -0
  42. package/dist/components/checkbox/checkbox-indicator.d.mts +92 -0
  43. package/dist/components/checkbox/checkbox-indicator.mjs +61 -0
  44. package/dist/components/checkbox/checkbox.d.mts +9 -0
  45. package/dist/components/checkbox/checkbox.mjs +40 -0
  46. package/dist/components/checkbox/index.d.mts +3 -0
  47. package/dist/components/choice-list/choice-list.d.mts +103 -0
  48. package/dist/components/choice-list/choice-list.mjs +301 -0
  49. package/dist/components/choice-list/choice-list.recipe.mjs +44 -0
  50. package/dist/components/choice-list/index.d.mts +2 -0
  51. package/dist/components/code-block/code-block.d.mts +30 -0
  52. package/dist/components/code-block/code-block.mjs +151 -0
  53. package/dist/components/code-block/code-block.recipe.mjs +47 -0
  54. package/dist/components/code-block/index.d.mts +2 -0
  55. package/dist/components/combobox/combobox.d.mts +69 -0
  56. package/dist/components/combobox/combobox.mjs +438 -0
  57. package/dist/components/combobox/index.d.mts +2 -0
  58. package/dist/components/combobox-select/combobox-select.d.mts +4 -0
  59. package/dist/components/combobox-select/combobox-select.list-side.mjs +16 -0
  60. package/dist/components/combobox-select/combobox-select.mjs +473 -0
  61. package/dist/components/combobox-select/combobox-select.options.mjs +21 -0
  62. package/dist/components/combobox-select/combobox-select.types.d.mts +83 -0
  63. package/dist/components/combobox-select/index.d.mts +3 -0
  64. package/dist/components/comment/comment-card.d.mts +40 -0
  65. package/dist/components/comment/comment-card.mjs +83 -0
  66. package/dist/components/comment/comment-entry.d.mts +24 -0
  67. package/dist/components/comment/comment-entry.mjs +75 -0
  68. package/dist/components/comment/comment-highlight.d.mts +18 -0
  69. package/dist/components/comment/comment-highlight.mjs +33 -0
  70. package/dist/components/comment/comment-margin-layout.d.mts +32 -0
  71. package/dist/components/comment/comment-margin-layout.mjs +44 -0
  72. package/dist/components/comment/comment-margin.d.mts +29 -0
  73. package/dist/components/comment/comment-margin.mjs +164 -0
  74. package/dist/components/comment/comment-marker.d.mts +16 -0
  75. package/dist/components/comment/comment-marker.mjs +24 -0
  76. package/dist/components/comment/comment.recipe.mjs +58 -0
  77. package/dist/components/comment/index.d.mts +8 -0
  78. package/dist/components/comment/use-comment-margin-fits.d.mts +16 -0
  79. package/dist/components/comment/use-comment-margin-fits.mjs +34 -0
  80. package/dist/components/composer/composer-attachment.recipe.mjs +85 -0
  81. package/dist/components/composer/composer-attachments-scroll-area.d.mts +5 -0
  82. package/dist/components/composer/composer-attachments-scroll-area.mjs +93 -0
  83. package/dist/components/composer/composer-attachments.d.mts +27 -0
  84. package/dist/components/composer/composer-attachments.mjs +147 -0
  85. package/dist/components/composer/composer-drop-overlay.d.mts +9 -0
  86. package/dist/components/composer/composer-drop-overlay.mjs +60 -0
  87. package/dist/components/composer/composer-drop-overlay.recipe.mjs +23 -0
  88. package/dist/components/composer/composer-root.d.mts +5 -0
  89. package/dist/components/composer/composer-root.mjs +18 -0
  90. package/dist/components/composer/composer-suggestion-list.d.mts +139 -0
  91. package/dist/components/composer/composer-suggestion-list.mjs +160 -0
  92. package/dist/components/composer/composer-toolbar-label.d.mts +5 -0
  93. package/dist/components/composer/composer-toolbar-label.mjs +24 -0
  94. package/dist/components/composer/composer.d.mts +20 -0
  95. package/dist/components/composer/composer.mjs +88 -0
  96. package/dist/components/composer/composer.recipe.mjs +29 -0
  97. package/dist/components/composer/index.d.mts +10 -0
  98. package/dist/components/composer/sortable-composer-attachments.d.mts +37 -0
  99. package/dist/components/composer/sortable-composer-attachments.mjs +247 -0
  100. package/dist/components/composer/use-composer-suggestions.d.mts +83 -0
  101. package/dist/components/composer/use-composer-suggestions.mjs +207 -0
  102. package/dist/components/context-menu/context-menu.d.mts +53 -0
  103. package/dist/components/context-menu/context-menu.mjs +275 -0
  104. package/dist/components/context-menu/index.d.mts +2 -0
  105. package/dist/components/conversation-panel/conversation-panel-empty-state.d.mts +9 -0
  106. package/dist/components/conversation-panel/conversation-panel-empty-state.mjs +57 -0
  107. package/dist/components/conversation-panel/conversation-panel.d.mts +20 -0
  108. package/dist/components/conversation-panel/conversation-panel.mjs +63 -0
  109. package/dist/components/conversation-panel/conversation-panel.recipe.mjs +15 -0
  110. package/dist/components/conversation-panel/index.d.mts +3 -0
  111. package/dist/components/copyable-code/copyable-code.d.mts +72 -0
  112. package/dist/components/copyable-code/copyable-code.mjs +153 -0
  113. package/dist/components/copyable-code/index.d.mts +2 -0
  114. package/dist/components/description-list/description-list.d.mts +59 -0
  115. package/dist/components/description-list/description-list.mjs +96 -0
  116. package/dist/components/description-list/index.d.mts +2 -0
  117. package/dist/components/dialog/dialog-sheet-context.mjs +58 -0
  118. package/dist/components/dialog/dialog-sheet.d.mts +31 -0
  119. package/dist/components/dialog/dialog-sheet.mjs +194 -0
  120. package/dist/components/dialog/dialog.d.mts +85 -0
  121. package/dist/components/dialog/dialog.mjs +371 -0
  122. package/dist/components/dialog/index.d.mts +3 -0
  123. package/dist/components/drag/drag-announcements.d.mts +72 -0
  124. package/dist/components/drag/drag-announcements.mjs +115 -0
  125. package/dist/components/drag/drag-lift.d.mts +100 -0
  126. package/dist/components/drag/drag-lift.mjs +276 -0
  127. package/dist/components/drag/drag-lists.d.mts +98 -0
  128. package/dist/components/drag/drag-lists.mjs +258 -0
  129. package/dist/components/drag/drag-sensors.d.mts +87 -0
  130. package/dist/components/drag/drag-sensors.mjs +169 -0
  131. package/dist/components/drag/drag.recipe.d.mts +7 -0
  132. package/dist/components/drag/drag.recipe.mjs +30 -0
  133. package/dist/components/drag/drop-placeholder.d.mts +41 -0
  134. package/dist/components/drag/drop-placeholder.mjs +161 -0
  135. package/dist/components/drag/index.d.mts +8 -0
  136. package/dist/components/drawer/drawer.d.mts +34 -0
  137. package/dist/components/drawer/drawer.mjs +202 -0
  138. package/dist/components/drawer/drawer.recipe.mjs +175 -0
  139. package/dist/components/drawer/index.d.mts +2 -0
  140. package/dist/components/dropdown-menu/dropdown-menu.d.mts +62 -0
  141. package/dist/components/dropdown-menu/dropdown-menu.mjs +319 -0
  142. package/dist/components/dropdown-menu/index.d.mts +2 -0
  143. package/dist/components/ellipsis/ellipsis.d.mts +55 -0
  144. package/dist/components/ellipsis/ellipsis.mjs +320 -0
  145. package/dist/components/ellipsis/index.d.mts +3 -0
  146. package/dist/components/empty-state/empty-state.d.mts +15 -0
  147. package/dist/components/empty-state/empty-state.mjs +102 -0
  148. package/dist/components/empty-state/index.d.mts +2 -0
  149. package/dist/components/field/field.d.mts +79 -0
  150. package/dist/components/field/field.mjs +100 -0
  151. package/dist/components/field/index.d.mts +2 -0
  152. package/dist/components/file-preview/file-preview.d.mts +17 -0
  153. package/dist/components/file-preview/file-preview.mjs +210 -0
  154. package/dist/components/file-preview/file-preview.recipe.d.mts +99 -0
  155. package/dist/components/file-preview/file-preview.recipe.mjs +39 -0
  156. package/dist/components/file-preview/index.d.mts +2 -0
  157. package/dist/components/files/files.d.mts +35 -0
  158. package/dist/components/files/files.mjs +69 -0
  159. package/dist/components/files/files.recipe.mjs +40 -0
  160. package/dist/components/files/index.d.mts +2 -0
  161. package/dist/components/filter-chip/filter-chip.d.mts +25 -0
  162. package/dist/components/filter-chip/filter-chip.mjs +59 -0
  163. package/dist/components/filter-chip/index.d.mts +2 -0
  164. package/dist/components/float-button/float-button.d.mts +36 -0
  165. package/dist/components/float-button/float-button.mjs +116 -0
  166. package/dist/components/float-button/float-button.position.d.mts +6 -0
  167. package/dist/components/float-button/float-button.position.mjs +41 -0
  168. package/dist/components/float-button/index.d.mts +3 -0
  169. package/dist/components/form-section/form-section.d.mts +16 -0
  170. package/dist/components/form-section/form-section.mjs +53 -0
  171. package/dist/components/form-section/index.d.mts +2 -0
  172. package/dist/components/icon-tile/icon-tile.d.mts +97 -0
  173. package/dist/components/icon-tile/icon-tile.mjs +49 -0
  174. package/dist/components/icon-tile/index.d.mts +2 -0
  175. package/dist/components/icons/action-icons.d.mts +34 -0
  176. package/dist/components/icons/action-icons.mjs +383 -0
  177. package/dist/components/icons/conversation-icons.d.mts +12 -0
  178. package/dist/components/icons/conversation-icons.mjs +147 -0
  179. package/dist/components/icons/index.d.mts +4 -0
  180. package/dist/components/icons/object-icons.d.mts +6 -0
  181. package/dist/components/icons/object-icons.mjs +27 -0
  182. package/dist/components/inbox-item/inbox-item-leading-badge.d.mts +13 -0
  183. package/dist/components/inbox-item/inbox-item-leading-badge.mjs +27 -0
  184. package/dist/components/inbox-item/inbox-item-skeleton.d.mts +46 -0
  185. package/dist/components/inbox-item/inbox-item-skeleton.mjs +89 -0
  186. package/dist/components/inbox-item/inbox-item-skeleton.recipe.mjs +20 -0
  187. package/dist/components/inbox-item/inbox-item.d.mts +71 -0
  188. package/dist/components/inbox-item/inbox-item.mjs +276 -0
  189. package/dist/components/inbox-item/inbox-item.recipe.mjs +137 -0
  190. package/dist/components/inbox-item/index.d.mts +2 -0
  191. package/dist/components/inline-code/index.d.mts +2 -0
  192. package/dist/components/inline-code/inline-code.d.mts +8 -0
  193. package/dist/components/inline-code/inline-code.mjs +30 -0
  194. package/dist/components/input/index.d.mts +2 -0
  195. package/dist/components/input/input.d.mts +16 -0
  196. package/dist/components/input/input.mjs +20 -0
  197. package/dist/components/input/input.recipe.mjs +12 -0
  198. package/dist/components/input-group/index.d.mts +2 -0
  199. package/dist/components/input-group/input-group.d.mts +93 -0
  200. package/dist/components/input-group/input-group.mjs +178 -0
  201. package/dist/components/kbd/index.d.mts +2 -0
  202. package/dist/components/kbd/kbd.d.mts +7 -0
  203. package/dist/components/kbd/kbd.mjs +34 -0
  204. package/dist/components/label/index.d.mts +2 -0
  205. package/dist/components/label/label.d.mts +60 -0
  206. package/dist/components/label/label.mjs +75 -0
  207. package/dist/components/legacy-task-panel/index.d.mts +2 -0
  208. package/dist/components/legacy-task-panel/legacy-task-panel.d.mts +57 -0
  209. package/dist/components/legacy-task-panel/legacy-task-panel.mjs +234 -0
  210. package/dist/components/legacy-task-panel/legacy-task-panel.recipe.mjs +30 -0
  211. package/dist/components/lightbox/index.d.mts +2 -0
  212. package/dist/components/lightbox/lightbox.d.mts +55 -0
  213. package/dist/components/lightbox/lightbox.mjs +336 -0
  214. package/dist/components/list-row/index.d.mts +2 -0
  215. package/dist/components/list-row/list-row-skeleton.d.mts +21 -0
  216. package/dist/components/list-row/list-row-skeleton.mjs +43 -0
  217. package/dist/components/list-row/list-row.d.mts +66 -0
  218. package/dist/components/list-row/list-row.mjs +167 -0
  219. package/dist/components/list-row/list-row.recipe.d.mts +126 -0
  220. package/dist/components/list-row/list-row.recipe.mjs +94 -0
  221. package/dist/components/live-agent-activity-bar/index.d.mts +2 -0
  222. package/dist/components/live-agent-activity-bar/live-agent-activity-bar.d.mts +25 -0
  223. package/dist/components/live-agent-activity-bar/live-agent-activity-bar.mjs +107 -0
  224. package/dist/components/logo/index.d.mts +2 -0
  225. package/dist/components/logo/raft-logo.d.mts +9 -0
  226. package/dist/components/logo/raft-logo.mjs +63 -0
  227. package/dist/components/markdown/index.d.mts +2 -0
  228. package/dist/components/markdown/markdown-parts.d.mts +54 -0
  229. package/dist/components/markdown/markdown-parts.mjs +153 -0
  230. package/dist/components/markdown/markdown.recipe.mjs +77 -0
  231. package/dist/components/message-action-card/index.d.mts +2 -0
  232. package/dist/components/message-action-card/message-action-card-content.recipe.mjs +50 -0
  233. package/dist/components/message-action-card/message-action-card.d.mts +95 -0
  234. package/dist/components/message-action-card/message-action-card.mjs +298 -0
  235. package/dist/components/message-action-card/message-action-card.recipe.mjs +47 -0
  236. package/dist/components/message-attachment/index.d.mts +5 -0
  237. package/dist/components/message-attachment/message-attachment.d.mts +27 -0
  238. package/dist/components/message-attachment/message-attachment.mjs +129 -0
  239. package/dist/components/message-attachment/message-attachment.recipe.mjs +36 -0
  240. package/dist/components/message-attachment/message-image-gallery-rows.d.mts +47 -0
  241. package/dist/components/message-attachment/message-image-gallery-rows.mjs +55 -0
  242. package/dist/components/message-attachment/message-image-gallery.d.mts +32 -0
  243. package/dist/components/message-attachment/message-image-gallery.mjs +105 -0
  244. package/dist/components/message-attachment/message-image-gallery.recipe.mjs +61 -0
  245. package/dist/components/message-attachment/message-video-preview.d.mts +19 -0
  246. package/dist/components/message-attachment/message-video-preview.mjs +92 -0
  247. package/dist/components/message-attachment/message-video-preview.recipe.mjs +33 -0
  248. package/dist/components/message-embed/index.d.mts +2 -0
  249. package/dist/components/message-embed/message-embed.d.mts +12 -0
  250. package/dist/components/message-embed/message-embed.mjs +42 -0
  251. package/dist/components/message-embed/message-embed.recipe.mjs +14 -0
  252. package/dist/components/message-forwarded-bundle/index.d.mts +2 -0
  253. package/dist/components/message-forwarded-bundle/message-forwarded-bundle.d.mts +92 -0
  254. package/dist/components/message-forwarded-bundle/message-forwarded-bundle.mjs +324 -0
  255. package/dist/components/message-forwarded-bundle/message-forwarded-bundle.recipe.mjs +81 -0
  256. package/dist/components/message-item/index.d.mts +13 -0
  257. package/dist/components/message-item/message-footer.d.mts +20 -0
  258. package/dist/components/message-item/message-footer.mjs +54 -0
  259. package/dist/components/message-item/message-footer.recipe.mjs +46 -0
  260. package/dist/components/message-item/message-item-content.d.mts +22 -0
  261. package/dist/components/message-item/message-item-content.mjs +81 -0
  262. package/dist/components/message-item/message-item-delegated.d.mts +38 -0
  263. package/dist/components/message-item/message-item-delegated.mjs +72 -0
  264. package/dist/components/message-item/message-item-gutter.d.mts +10 -0
  265. package/dist/components/message-item/message-item-gutter.mjs +41 -0
  266. package/dist/components/message-item/message-item-header.d.mts +29 -0
  267. package/dist/components/message-item/message-item-header.mjs +107 -0
  268. package/dist/components/message-item/message-item-label.mjs +113 -0
  269. package/dist/components/message-item/message-item-root.d.mts +25 -0
  270. package/dist/components/message-item/message-item-root.mjs +39 -0
  271. package/dist/components/message-item/message-item-toolbar.d.mts +9 -0
  272. package/dist/components/message-item/message-item-toolbar.mjs +131 -0
  273. package/dist/components/message-item/message-item.recipe.d.mts +101 -0
  274. package/dist/components/message-item/message-item.recipe.mjs +114 -0
  275. package/dist/components/message-item/message-multi-select.d.mts +15 -0
  276. package/dist/components/message-item/message-multi-select.mjs +49 -0
  277. package/dist/components/message-item/message-multi-select.recipe.mjs +23 -0
  278. package/dist/components/message-item/message-reaction.d.mts +39 -0
  279. package/dist/components/message-item/message-reaction.mjs +188 -0
  280. package/dist/components/message-item/message-reaction.recipe.mjs +76 -0
  281. package/dist/components/message-item/message-reference.d.mts +50 -0
  282. package/dist/components/message-item/message-reference.mjs +111 -0
  283. package/dist/components/message-item/message-reference.recipe.d.mts +6 -0
  284. package/dist/components/message-item/message-reference.recipe.mjs +63 -0
  285. package/dist/components/message-item/message-text-selection-toolbar.d.mts +24 -0
  286. package/dist/components/message-item/message-text-selection-toolbar.mjs +13 -0
  287. package/dist/components/message-list/index.d.mts +4 -0
  288. package/dist/components/message-list/message-list-jump.d.mts +21 -0
  289. package/dist/components/message-list/message-list-jump.mjs +73 -0
  290. package/dist/components/message-list/message-list-markers.d.mts +13 -0
  291. package/dist/components/message-list/message-list-markers.mjs +70 -0
  292. package/dist/components/message-list/message-list.d.mts +7 -0
  293. package/dist/components/message-list/message-list.mjs +52 -0
  294. package/dist/components/message-list/message-list.recipe.mjs +54 -0
  295. package/dist/components/message-quoted-preview/index.d.mts +2 -0
  296. package/dist/components/message-quoted-preview/message-quoted-preview.d.mts +40 -0
  297. package/dist/components/message-quoted-preview/message-quoted-preview.mjs +144 -0
  298. package/dist/components/message-quoted-preview/message-quoted-preview.recipe.mjs +38 -0
  299. package/dist/components/message-replies/index.d.mts +2 -0
  300. package/dist/components/message-replies/message-replies.d.mts +17 -0
  301. package/dist/components/message-replies/message-replies.mjs +79 -0
  302. package/dist/components/message-replies/message-replies.recipe.mjs +25 -0
  303. package/dist/components/message-translation/index.d.mts +2 -0
  304. package/dist/components/message-translation/message-translation.d.mts +20 -0
  305. package/dist/components/message-translation/message-translation.mjs +64 -0
  306. package/dist/components/message-translation/message-translation.recipe.mjs +27 -0
  307. package/dist/components/meter/index.d.mts +2 -0
  308. package/dist/components/meter/meter.d.mts +107 -0
  309. package/dist/components/meter/meter.mjs +118 -0
  310. package/dist/components/mobile-nav/index.d.mts +3 -0
  311. package/dist/components/mobile-nav/mobile-nav-server.d.mts +71 -0
  312. package/dist/components/mobile-nav/mobile-nav-server.mjs +287 -0
  313. package/dist/components/mobile-nav/mobile-nav.d.mts +12 -0
  314. package/dist/components/mobile-nav/mobile-nav.mjs +73 -0
  315. package/dist/components/mode-bar/index.d.mts +2 -0
  316. package/dist/components/mode-bar/mode-bar.d.mts +33 -0
  317. package/dist/components/mode-bar/mode-bar.mjs +115 -0
  318. package/dist/components/notification-center/index.d.mts +2 -0
  319. package/dist/components/notification-center/notification-center.d.mts +225 -0
  320. package/dist/components/notification-center/notification-center.mjs +340 -0
  321. package/dist/components/panel/index.d.mts +7 -0
  322. package/dist/components/panel/panel-action.d.mts +15 -0
  323. package/dist/components/panel/panel-action.mjs +23 -0
  324. package/dist/components/panel/panel-action.recipe.mjs +40 -0
  325. package/dist/components/panel/panel-header.d.mts +34 -0
  326. package/dist/components/panel/panel-header.mjs +135 -0
  327. package/dist/components/panel/panel-header.recipe.mjs +78 -0
  328. package/dist/components/panel/panel-notice.d.mts +16 -0
  329. package/dist/components/panel/panel-notice.mjs +77 -0
  330. package/dist/components/panel/panel-split-action.d.mts +34 -0
  331. package/dist/components/panel/panel-split-action.mjs +69 -0
  332. package/dist/components/panel/panel-split-action.recipe.mjs +53 -0
  333. package/dist/components/panel/panel-toggle-action.d.mts +6 -0
  334. package/dist/components/panel/panel-toggle-action.mjs +15 -0
  335. package/dist/components/panel/panel.d.mts +25 -0
  336. package/dist/components/panel/panel.mjs +96 -0
  337. package/dist/components/panel/panel.recipe.mjs +24 -0
  338. package/dist/components/picker-trigger-button/index.d.mts +2 -0
  339. package/dist/components/picker-trigger-button/picker-trigger-button.d.mts +7 -0
  340. package/dist/components/picker-trigger-button/picker-trigger-button.mjs +36 -0
  341. package/dist/components/popover/index.d.mts +2 -0
  342. package/dist/components/popover/popover.d.mts +41 -0
  343. package/dist/components/popover/popover.mjs +184 -0
  344. package/dist/components/preview-card/index.d.mts +2 -0
  345. package/dist/components/preview-card/preview-card.d.mts +43 -0
  346. package/dist/components/preview-card/preview-card.mjs +197 -0
  347. package/dist/components/profile-panel/index.d.mts +2 -0
  348. package/dist/components/profile-panel/profile-panel.d.mts +14 -0
  349. package/dist/components/profile-panel/profile-panel.mjs +46 -0
  350. package/dist/components/profile-panel/profile-panel.recipe.mjs +14 -0
  351. package/dist/components/progress/index.d.mts +2 -0
  352. package/dist/components/progress/progress.d.mts +119 -0
  353. package/dist/components/progress/progress.mjs +139 -0
  354. package/dist/components/pull-to-refresh/index.d.mts +4 -0
  355. package/dist/components/pull-to-refresh/pull-to-refresh-gesture.d.mts +30 -0
  356. package/dist/components/pull-to-refresh/pull-to-refresh-gesture.mjs +134 -0
  357. package/dist/components/pull-to-refresh/pull-to-refresh-indicator.d.mts +21 -0
  358. package/dist/components/pull-to-refresh/pull-to-refresh-indicator.mjs +153 -0
  359. package/dist/components/pull-to-refresh/pull-to-refresh-material-progress.mjs +150 -0
  360. package/dist/components/pull-to-refresh/use-pull-to-refresh.d.mts +55 -0
  361. package/dist/components/pull-to-refresh/use-pull-to-refresh.mjs +156 -0
  362. package/dist/components/radio-group/index.d.mts +2 -0
  363. package/dist/components/radio-group/radio-group.d.mts +14 -0
  364. package/dist/components/radio-group/radio-group.mjs +59 -0
  365. package/dist/components/resizable/index.d.mts +2 -0
  366. package/dist/components/resizable/resizable.d.mts +15 -0
  367. package/dist/components/resizable/resizable.mjs +39 -0
  368. package/dist/components/resizable/resizable.recipe.mjs +24 -0
  369. package/dist/components/scroll-area/index.d.mts +2 -0
  370. package/dist/components/scroll-area/scroll-area.d.mts +17 -0
  371. package/dist/components/scroll-area/scroll-area.mjs +55 -0
  372. package/dist/components/scroll-area/scroll-area.recipe.mjs +23 -0
  373. package/dist/components/search/index.d.mts +6 -0
  374. package/dist/components/search/search-entity.d.mts +24 -0
  375. package/dist/components/search/search-entity.mjs +106 -0
  376. package/dist/components/search/search-entity.recipe.mjs +41 -0
  377. package/dist/components/search/search-message.d.mts +25 -0
  378. package/dist/components/search/search-message.mjs +115 -0
  379. package/dist/components/search/search-message.recipe.mjs +32 -0
  380. package/dist/components/search/search-thread.d.mts +17 -0
  381. package/dist/components/search/search-thread.mjs +79 -0
  382. package/dist/components/search/search-thread.recipe.mjs +16 -0
  383. package/dist/components/search/search-trigger.d.mts +15 -0
  384. package/dist/components/search/search-trigger.mjs +59 -0
  385. package/dist/components/search/search.d.mts +23 -0
  386. package/dist/components/search/search.mjs +88 -0
  387. package/dist/components/search/search.recipe.mjs +22 -0
  388. package/dist/components/segmented-control/index.d.mts +2 -0
  389. package/dist/components/segmented-control/segmented-control.d.mts +38 -0
  390. package/dist/components/segmented-control/segmented-control.mjs +306 -0
  391. package/dist/components/select/index.d.mts +2 -0
  392. package/dist/components/select/select.d.mts +95 -0
  393. package/dist/components/select/select.mjs +483 -0
  394. package/dist/components/separator/index.d.mts +2 -0
  395. package/dist/components/separator/separator.d.mts +10 -0
  396. package/dist/components/separator/separator.mjs +49 -0
  397. package/dist/components/sidebar/index.d.mts +5 -0
  398. package/dist/components/sidebar/sidebar-item.d.mts +64 -0
  399. package/dist/components/sidebar/sidebar-item.mjs +201 -0
  400. package/dist/components/sidebar/sidebar-item.recipe.mjs +100 -0
  401. package/dist/components/sidebar/sidebar-menu.d.mts +13 -0
  402. package/dist/components/sidebar/sidebar-menu.mjs +67 -0
  403. package/dist/components/sidebar/sidebar-menu.recipe.mjs +22 -0
  404. package/dist/components/sidebar/sidebar-section.d.mts +41 -0
  405. package/dist/components/sidebar/sidebar-section.mjs +164 -0
  406. package/dist/components/sidebar/sidebar-section.recipe.mjs +45 -0
  407. package/dist/components/sidebar/sidebar.d.mts +17 -0
  408. package/dist/components/sidebar/sidebar.mjs +149 -0
  409. package/dist/components/sidebar/sidebar.recipe.mjs +37 -0
  410. package/dist/components/skeleton/index.d.mts +2 -0
  411. package/dist/components/skeleton/skeleton.d.mts +50 -0
  412. package/dist/components/skeleton/skeleton.mjs +29 -0
  413. package/dist/components/spinner/index.d.mts +2 -0
  414. package/dist/components/spinner/spinner.d.mts +77 -0
  415. package/dist/components/spinner/spinner.mjs +118 -0
  416. package/dist/components/status/index.d.mts +2 -0
  417. package/dist/components/status/status.d.mts +143 -0
  418. package/dist/components/status/status.mjs +56 -0
  419. package/dist/components/steps/index.d.mts +3 -0
  420. package/dist/components/steps/otter-indicator.d.mts +17 -0
  421. package/dist/components/steps/otter-indicator.mjs +331 -0
  422. package/dist/components/steps/steps.d.mts +50 -0
  423. package/dist/components/steps/steps.mjs +174 -0
  424. package/dist/components/switch/index.d.mts +2 -0
  425. package/dist/components/switch/switch.d.mts +9 -0
  426. package/dist/components/switch/switch.mjs +50 -0
  427. package/dist/components/system-message/index.d.mts +2 -0
  428. package/dist/components/system-message/system-message.d.mts +27 -0
  429. package/dist/components/system-message/system-message.mjs +113 -0
  430. package/dist/components/system-message/system-message.recipe.mjs +34 -0
  431. package/dist/components/table/index.d.mts +2 -0
  432. package/dist/components/table/table.d.mts +35 -0
  433. package/dist/components/table/table.mjs +102 -0
  434. package/dist/components/table/table.recipe.mjs +31 -0
  435. package/dist/components/tabs/index.d.mts +2 -0
  436. package/dist/components/tabs/tabs.d.mts +185 -0
  437. package/dist/components/tabs/tabs.mjs +528 -0
  438. package/dist/components/task-board/index.d.mts +2 -0
  439. package/dist/components/task-board/task-board-column.recipe.mjs +46 -0
  440. package/dist/components/task-board/task-board.d.mts +40 -0
  441. package/dist/components/task-board/task-board.mjs +155 -0
  442. package/dist/components/task-card/index.d.mts +2 -0
  443. package/dist/components/task-card/task-card-status.recipe.mjs +17 -0
  444. package/dist/components/task-card/task-card.d.mts +30 -0
  445. package/dist/components/task-card/task-card.mjs +141 -0
  446. package/dist/components/task-card/task-card.recipe.mjs +39 -0
  447. package/dist/components/task-dnd/index.d.mts +2 -0
  448. package/dist/components/task-dnd/task-dnd.d.mts +75 -0
  449. package/dist/components/task-dnd/task-dnd.mjs +341 -0
  450. package/dist/components/task-dnd/task-dnd.recipe.mjs +20 -0
  451. package/dist/components/task-list/index.d.mts +2 -0
  452. package/dist/components/task-list/task-list-section.recipe.mjs +37 -0
  453. package/dist/components/task-list/task-list.d.mts +34 -0
  454. package/dist/components/task-list/task-list.mjs +119 -0
  455. package/dist/components/tasks/index.d.mts +7 -0
  456. package/dist/components/tasks/task-chip.d.mts +14 -0
  457. package/dist/components/tasks/task-chip.mjs +81 -0
  458. package/dist/components/tasks/task-loading.d.mts +7 -0
  459. package/dist/components/tasks/task-loading.mjs +32 -0
  460. package/dist/components/tasks/task-loading.recipe.mjs +8 -0
  461. package/dist/components/tasks/task-status-badge.d.mts +24 -0
  462. package/dist/components/tasks/task-status-badge.mjs +24 -0
  463. package/dist/components/tasks/task-status-icon.d.mts +13 -0
  464. package/dist/components/tasks/task-status-icon.mjs +90 -0
  465. package/dist/components/tasks/task-status.recipe.d.mts +62 -0
  466. package/dist/components/tasks/task-status.recipe.mjs +33 -0
  467. package/dist/components/tasks/tasks-panel.d.mts +22 -0
  468. package/dist/components/tasks/tasks-panel.mjs +114 -0
  469. package/dist/components/tasks/tasks-panel.recipe.mjs +36 -0
  470. package/dist/components/text/index.d.mts +2 -0
  471. package/dist/components/text/text.d.mts +186 -0
  472. package/dist/components/text/text.mjs +114 -0
  473. package/dist/components/text-link/index.d.mts +2 -0
  474. package/dist/components/text-link/text-link.d.mts +36 -0
  475. package/dist/components/text-link/text-link.mjs +60 -0
  476. package/dist/components/text-selection-toolbar/index.d.mts +3 -0
  477. package/dist/components/text-selection-toolbar/text-selection-anchor.d.mts +22 -0
  478. package/dist/components/text-selection-toolbar/text-selection-anchor.mjs +106 -0
  479. package/dist/components/text-selection-toolbar/text-selection-toolbar.d.mts +20 -0
  480. package/dist/components/text-selection-toolbar/text-selection-toolbar.mjs +41 -0
  481. package/dist/components/text-selection-toolbar/text-selection-toolbar.recipe.mjs +19 -0
  482. package/dist/components/textarea/index.d.mts +2 -0
  483. package/dist/components/textarea/textarea.d.mts +16 -0
  484. package/dist/components/textarea/textarea.mjs +62 -0
  485. package/dist/components/thread-panel/index.d.mts +2 -0
  486. package/dist/components/thread-panel/thread-panel.d.mts +31 -0
  487. package/dist/components/thread-panel/thread-panel.mjs +162 -0
  488. package/dist/components/thread-panel/thread-panel.recipe.mjs +36 -0
  489. package/dist/components/timeline/index.d.mts +2 -0
  490. package/dist/components/timeline/timeline.d.mts +44 -0
  491. package/dist/components/timeline/timeline.mjs +81 -0
  492. package/dist/components/toast/index.d.mts +2 -0
  493. package/dist/components/toast/toast.d.mts +263 -0
  494. package/dist/components/toast/toast.mjs +556 -0
  495. package/dist/components/toggle-group/index.d.mts +2 -0
  496. package/dist/components/toggle-group/toggle-group.d.mts +15 -0
  497. package/dist/components/toggle-group/toggle-group.mjs +64 -0
  498. package/dist/components/tooltip/index.d.mts +2 -0
  499. package/dist/components/tooltip/tooltip.d.mts +18 -0
  500. package/dist/components/tooltip/tooltip.mjs +197 -0
  501. package/dist/components/virtual-list/ItemColumns.mjs +37 -0
  502. package/dist/components/virtual-list/VirtualList.d.mts +4 -0
  503. package/dist/components/virtual-list/VirtualList.mjs +1401 -0
  504. package/dist/components/virtual-list/VirtualListContext.mjs +5 -0
  505. package/dist/components/virtual-list/hooks/use-event-callback.mjs +10 -0
  506. package/dist/components/virtual-list/hooks/use-ios-momentum-compensation.mjs +148 -0
  507. package/dist/components/virtual-list/hooks/use-keyboard-scroll.mjs +42 -0
  508. package/dist/components/virtual-list/hooks/use-latest-ref.mjs +10 -0
  509. package/dist/components/virtual-list/hooks/use-layout-effect-with-previous.mjs +16 -0
  510. package/dist/components/virtual-list/hooks/use-memo-with-previous.mjs +22 -0
  511. package/dist/components/virtual-list/hooks/use-non-passive-wheel.mjs +23 -0
  512. package/dist/components/virtual-list/hooks/use-non-virtual-content-resize.mjs +28 -0
  513. package/dist/components/virtual-list/hooks/use-scroll-anchor.mjs +55 -0
  514. package/dist/components/virtual-list/index.d.mts +5 -0
  515. package/dist/components/virtual-list/public-types.d.mts +341 -0
  516. package/dist/components/virtual-list/resize-observer/ResizeObserverWrapper.d.mts +5 -0
  517. package/dist/components/virtual-list/resize-observer/ResizeObserverWrapper.mjs +70 -0
  518. package/dist/components/virtual-list/resize-observer/resize-observer-delegate.d.mts +6 -0
  519. package/dist/components/virtual-list/resize-observer/resize-observer-delegate.mjs +54 -0
  520. package/dist/components/virtual-list/utils/align.mjs +19 -0
  521. package/dist/components/virtual-list/utils/constants.mjs +30 -0
  522. package/dist/components/virtual-list/utils/fenwick-tree.mjs +66 -0
  523. package/dist/components/virtual-list/utils/items-anchor.mjs +49 -0
  524. package/dist/components/virtual-list/utils/measure.mjs +77 -0
  525. package/dist/components/virtual-list/utils/platform.mjs +39 -0
  526. package/dist/components/virtual-list/utils/range.mjs +103 -0
  527. package/dist/components/virtual-list/utils/size-cache.mjs +35 -0
  528. package/dist/components/workspace-button/index.d.mts +2 -0
  529. package/dist/components/workspace-button/workspace-button.d.mts +9 -0
  530. package/dist/components/workspace-button/workspace-button.mjs +28 -0
  531. package/dist/index.d.mts +239 -4864
  532. package/dist/index.mjs +142 -17054
  533. package/dist/lib/chip-remove.mjs +17 -0
  534. package/dist/lib/data-attributes.d.mts +5 -0
  535. package/dist/lib/decision-width.mjs +9 -0
  536. package/dist/lib/default-native-button.mjs +8 -0
  537. package/dist/lib/desktop-media.mjs +10 -0
  538. package/dist/lib/drag-escape.mjs +37 -0
  539. package/dist/lib/frame-insets.mjs +127 -0
  540. package/dist/lib/head-edges.mjs +44 -0
  541. package/dist/lib/hud-text-action.mjs +10 -0
  542. package/dist/lib/inline-chip.mjs +30 -0
  543. package/dist/lib/input-modality.d.mts +36 -0
  544. package/dist/lib/input-modality.mjs +186 -0
  545. package/dist/lib/list-cell.mjs +21 -0
  546. package/dist/lib/located.d.mts +25 -0
  547. package/dist/lib/located.mjs +28 -0
  548. package/dist/lib/overlay-depth.d.mts +42 -0
  549. package/dist/lib/overlay-depth.mjs +59 -0
  550. package/dist/lib/phone-media.mjs +24 -0
  551. package/dist/lib/presence.d.mts +16 -0
  552. package/dist/lib/presence.mjs +16 -0
  553. package/dist/lib/row-tone.d.mts +8 -0
  554. package/dist/lib/search-hit.mjs +18 -0
  555. package/dist/lib/stacked-actions.mjs +112 -0
  556. package/dist/lib/styled-props.d.mts +15 -0
  557. package/dist/lib/tap-activation.mjs +133 -0
  558. package/dist/lib/theme/theme-context.d.mts +10 -0
  559. package/dist/lib/theme/theme-context.mjs +9 -0
  560. package/dist/lib/theme/theme-provider.d.mts +23 -0
  561. package/dist/lib/theme/theme-provider.mjs +61 -0
  562. package/dist/lib/theme/theme-scope.mjs +19 -0
  563. package/dist/lib/theme/use-theme.d.mts +5 -0
  564. package/dist/lib/theme/use-theme.mjs +9 -0
  565. package/dist/lib/touch-drag.d.mts +55 -0
  566. package/dist/lib/touch-drag.mjs +151 -0
  567. package/dist/lib/truncation.d.mts +26 -0
  568. package/dist/lib/truncation.mjs +153 -0
  569. package/dist/lib/tv.d.mts +2 -0
  570. package/dist/lib/tv.mjs +14 -0
  571. package/dist/lib/use-copy-to-clipboard.mjs +58 -0
  572. package/dist/lib/use-merged-ref.mjs +60 -0
  573. package/dist/lib/use-mobile-viewport.mjs +17 -0
  574. package/dist/lib/use-overflow-title.mjs +49 -0
  575. package/dist/lib/use-scrollbar-size.d.mts +16 -0
  576. package/dist/lib/use-scrollbar-size.mjs +46 -0
  577. package/dist/lib/use-truncated.d.mts +20 -0
  578. package/dist/lib/use-truncated.mjs +34 -0
  579. package/dist/lib/without-children.d.mts +8 -0
  580. package/dist/wip.d.mts +61 -1190
  581. package/dist/wip.mjs +43 -2970
  582. package/package.json +8 -1
  583. package/dist/index-C3ymUW98.d.mts +0 -1816
  584. package/dist/mode-bar-tGnYByXp.mjs +0 -7564
  585. package/dist/style.css +0 -1395
@@ -0,0 +1,298 @@
1
+ import { Badge } from "../badge/badge.mjs";
2
+ import { MessageEmbed, MessageEmbedContent, MessageEmbedHeader } from "../message-embed/message-embed.mjs";
3
+ import { messageActionCard } from "./message-action-card.recipe.mjs";
4
+ import { messageActionCardContent } from "./message-action-card-content.recipe.mjs";
5
+ import { ChevronDown, Info, Zap } from "lucide-react";
6
+ import { useEffect, useState } from "react";
7
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
8
+ import { mergeProps } from "@base-ui/react/merge-props";
9
+ import { useRender } from "@base-ui/react/use-render";
10
+ import { Collapsible } from "@base-ui/react/collapsible";
11
+ //#region src/components/message-action-card/message-action-card.tsx
12
+ /**
13
+ * The card is a disclosure: open by default, and a consumer can fold a
14
+ * resolved or view-only card to its header with `defaultOpen={false}` (or
15
+ * control it with `open` / `onOpenChange`). The fold is offered by placing a
16
+ * MessageActionCardCollapseTrigger in the header; without one the card simply
17
+ * stays open.
18
+ */
19
+ function MessageActionCard({ className, render, open, defaultOpen = true, onOpenChange, ...props }) {
20
+ const { root } = messageActionCard();
21
+ return /* @__PURE__ */ jsx(Collapsible.Root, {
22
+ open,
23
+ defaultOpen,
24
+ onOpenChange,
25
+ render: /* @__PURE__ */ jsx(MessageEmbed, {
26
+ className: root({ className }),
27
+ render,
28
+ ...props
29
+ })
30
+ });
31
+ }
32
+ function MessageActionCardContent({ className, render, ...props }) {
33
+ const { root, panel } = messageActionCardContent();
34
+ return /* @__PURE__ */ jsx(Collapsible.Panel, {
35
+ className: panel(),
36
+ children: /* @__PURE__ */ jsx(MessageEmbedContent, {
37
+ className: root({ className }),
38
+ render,
39
+ ...props
40
+ })
41
+ });
42
+ }
43
+ /** The card type's icon. Without children it shows a generic action icon. */
44
+ function MessageActionCardHeaderIcon({ className, render, children, ...props }) {
45
+ const { headerIcon } = messageActionCard();
46
+ return useRender({
47
+ defaultTagName: "span",
48
+ render,
49
+ props: mergeProps({
50
+ className: headerIcon({ className }),
51
+ "aria-hidden": true,
52
+ children: children ?? /* @__PURE__ */ jsx(Zap, {})
53
+ }, props),
54
+ state: { slot: "message-action-card-header-icon" }
55
+ });
56
+ }
57
+ function MessageActionCardHeaderTitle({ className, render, ...props }) {
58
+ const { headerTitle } = messageActionCard();
59
+ return useRender({
60
+ defaultTagName: "span",
61
+ render,
62
+ props: mergeProps({ className: headerTitle({ className }) }, props),
63
+ state: { slot: "message-action-card-header-title" }
64
+ });
65
+ }
66
+ /**
67
+ * A line under the title: what happened on a resolved card ("Installed by Ada
68
+ * → Lens"), or why you cannot act on a view-only one. Place it inside
69
+ * MessageActionCardHeaderTitle; it stays visible while the card is folded.
70
+ */
71
+ function MessageActionCardHeaderDescription({ className, render, ...props }) {
72
+ const { headerDescription } = messageActionCard();
73
+ return useRender({
74
+ defaultTagName: "span",
75
+ render,
76
+ props: mergeProps({ className: headerDescription({ className }) }, props),
77
+ state: { slot: "message-action-card-header-description" }
78
+ });
79
+ }
80
+ const STATUS_TONES = {
81
+ default: "neutral",
82
+ muted: "neutral",
83
+ primary: "primary",
84
+ you: "primary",
85
+ busy: "primary",
86
+ information: "information",
87
+ accent: "accent",
88
+ success: "success",
89
+ warning: "warning",
90
+ danger: "danger"
91
+ };
92
+ /**
93
+ * The card's state label in the header: plain text led by a square pixel in
94
+ * the variant's colour, so a column of "Done" cards does not shout.
95
+ */
96
+ function MessageActionCardStatus({ className, appearance, ...props }) {
97
+ const { headerStatus, status } = messageActionCard({ tone: STATUS_TONES[props.variant ?? "default"] });
98
+ return /* @__PURE__ */ jsx(Badge, {
99
+ appearance: appearance ?? "soft",
100
+ className: headerStatus({ className: status({ className }) }),
101
+ ...props
102
+ });
103
+ }
104
+ /** Folds the card to its header and back. Needs an accessible `aria-label`. */
105
+ function MessageActionCardCollapseTrigger({ className, ...props }) {
106
+ const { collapseTrigger } = messageActionCard();
107
+ return /* @__PURE__ */ jsx(Collapsible.Trigger, {
108
+ className: collapseTrigger({ className }),
109
+ ...props,
110
+ children: /* @__PURE__ */ jsx(ChevronDown, { "aria-hidden": true })
111
+ });
112
+ }
113
+ function MessageActionCardHeader({ className, render, ...props }) {
114
+ const { header } = messageActionCard();
115
+ return /* @__PURE__ */ jsx(MessageEmbedHeader, {
116
+ className: header({ className }),
117
+ render,
118
+ ...props
119
+ });
120
+ }
121
+ function MessageActionCardHeaderStatus({ className, render, ...props }) {
122
+ const { headerStatus } = messageActionCard();
123
+ return useRender({
124
+ defaultTagName: "span",
125
+ render,
126
+ props: mergeProps({ className: headerStatus({ className }) }, props),
127
+ state: { slot: "message-action-card-header-status" }
128
+ });
129
+ }
130
+ function MessageActionCardProperties({ className, render, ...props }) {
131
+ const { properties } = messageActionCardContent();
132
+ return useRender({
133
+ defaultTagName: "dl",
134
+ render,
135
+ props: mergeProps({ className: properties({ className }) }, props),
136
+ state: { slot: "message-action-card-properties" }
137
+ });
138
+ }
139
+ function MessageActionCardProperty({ className, render, ...props }) {
140
+ const { property } = messageActionCardContent();
141
+ return useRender({
142
+ defaultTagName: "div",
143
+ render,
144
+ props: mergeProps({ className: property({ className }) }, props),
145
+ state: { slot: "message-action-card-property" }
146
+ });
147
+ }
148
+ function MessageActionCardPropertyLabel({ className, render, ...props }) {
149
+ const { propertyLabel } = messageActionCardContent();
150
+ return useRender({
151
+ defaultTagName: "dt",
152
+ render,
153
+ props: mergeProps({ className: propertyLabel({ className }) }, props),
154
+ state: { slot: "message-action-card-property-label" }
155
+ });
156
+ }
157
+ function MessageActionCardPropertyValue({ className, render, ...props }) {
158
+ const { propertyValue } = messageActionCardContent();
159
+ return useRender({
160
+ defaultTagName: "dd",
161
+ render,
162
+ props: mergeProps({ className: propertyValue({ className }) }, props),
163
+ state: { slot: "message-action-card-property-value" }
164
+ });
165
+ }
166
+ function MessageActionCardScopeList({ className, render, ...props }) {
167
+ const { scopeList } = messageActionCardContent();
168
+ return useRender({
169
+ defaultTagName: "div",
170
+ render,
171
+ props: mergeProps({ className: scopeList({ className }) }, props),
172
+ state: { slot: "message-action-card-scope-list" }
173
+ });
174
+ }
175
+ function MessageActionCardScopeListLabel({ className, render, ...props }) {
176
+ const { scopeListLabel } = messageActionCardContent();
177
+ return useRender({
178
+ defaultTagName: "div",
179
+ render,
180
+ props: mergeProps({ className: scopeListLabel({ className }) }, props),
181
+ state: { slot: "message-action-card-scope-list-label" }
182
+ });
183
+ }
184
+ /**
185
+ * Scrolls a long permission list. It is a Tab stop only while it overflows, so
186
+ * keyboard users can scroll it; a short list adds no empty stop.
187
+ */
188
+ function MessageActionCardScopeListViewport({ className, render, ...props }) {
189
+ const { scopeListViewport } = messageActionCardContent();
190
+ const [element, setElement] = useState(null);
191
+ const [overflows, setOverflows] = useState(false);
192
+ useEffect(() => {
193
+ if (element === null) return;
194
+ const measure = () => setOverflows(element.scrollHeight > element.clientHeight);
195
+ measure();
196
+ const observer = new ResizeObserver(measure);
197
+ observer.observe(element);
198
+ for (const child of element.children) observer.observe(child);
199
+ return () => observer.disconnect();
200
+ }, [element]);
201
+ return useRender({
202
+ defaultTagName: "div",
203
+ render,
204
+ ref: setElement,
205
+ props: mergeProps({
206
+ className: scopeListViewport({ className }),
207
+ tabIndex: overflows ? 0 : void 0
208
+ }, props),
209
+ state: { slot: "message-action-card-scope-list-viewport" }
210
+ });
211
+ }
212
+ function MessageActionCardScope({ className, render, ...props }) {
213
+ const { scope } = messageActionCardContent();
214
+ return useRender({
215
+ defaultTagName: "div",
216
+ render,
217
+ props: mergeProps({ className: scope({ className }) }, props),
218
+ state: { slot: "message-action-card-scope" }
219
+ });
220
+ }
221
+ function MessageActionCardScopeName({ className, render, ...props }) {
222
+ const { scopeName } = messageActionCardContent();
223
+ return useRender({
224
+ defaultTagName: "div",
225
+ render,
226
+ props: mergeProps({ className: scopeName({ className }) }, props),
227
+ state: { slot: "message-action-card-scope-name" }
228
+ });
229
+ }
230
+ function MessageActionCardScopeDescription({ className, render, ...props }) {
231
+ const { scopeDescription } = messageActionCardContent();
232
+ return useRender({
233
+ defaultTagName: "div",
234
+ render,
235
+ props: mergeProps({ className: scopeDescription({ className }) }, props),
236
+ state: { slot: "message-action-card-scope-description" }
237
+ });
238
+ }
239
+ function MessageActionCardHintLabel({ className, render, ...props }) {
240
+ const { hintLabel } = messageActionCardContent();
241
+ return useRender({
242
+ defaultTagName: "div",
243
+ render,
244
+ props: mergeProps({ className: hintLabel({ className }) }, props),
245
+ state: { slot: "message-action-card-hint-label" }
246
+ });
247
+ }
248
+ function MessageActionCardHint({ className, render, ...props }) {
249
+ const { hint } = messageActionCardContent();
250
+ return useRender({
251
+ defaultTagName: "div",
252
+ render,
253
+ props: mergeProps({ className: hint({ className }) }, props),
254
+ state: { slot: "message-action-card-hint" }
255
+ });
256
+ }
257
+ /** Raft's standing note. Leads with an info icon unless `icon` replaces it. */
258
+ function MessageActionCardNotice({ className, render, icon, children, ...props }) {
259
+ const { notice } = messageActionCardContent();
260
+ return useRender({
261
+ defaultTagName: "div",
262
+ render,
263
+ props: mergeProps({
264
+ className: notice({ className }),
265
+ children: /* @__PURE__ */ jsxs(Fragment$1, { children: [icon ?? /* @__PURE__ */ jsx(Info, { "aria-hidden": true }), /* @__PURE__ */ jsx("span", { children })] })
266
+ }, props),
267
+ state: { slot: "message-action-card-notice" }
268
+ });
269
+ }
270
+ function MessageActionCardCompletion({ className, render, ...props }) {
271
+ const { completion } = messageActionCardContent();
272
+ return useRender({
273
+ defaultTagName: "div",
274
+ render,
275
+ props: mergeProps({ className: completion({ className }) }, props),
276
+ state: { slot: "message-action-card-completion" }
277
+ });
278
+ }
279
+ function MessageActionCardActions({ className, render, ...props }) {
280
+ const { actions } = messageActionCardContent();
281
+ return useRender({
282
+ defaultTagName: "div",
283
+ render,
284
+ props: mergeProps({ className: actions({ className }) }, props),
285
+ state: { slot: "message-action-card-actions" }
286
+ });
287
+ }
288
+ function MessageActionCardActionsNote({ className, render, ...props }) {
289
+ const { actionsNote } = messageActionCardContent();
290
+ return useRender({
291
+ defaultTagName: "div",
292
+ render,
293
+ props: mergeProps({ className: actionsNote({ className }) }, props),
294
+ state: { slot: "message-action-card-actions-note" }
295
+ });
296
+ }
297
+ //#endregion
298
+ export { MessageActionCard, MessageActionCardActions, MessageActionCardActionsNote, MessageActionCardCollapseTrigger, MessageActionCardCompletion, MessageActionCardContent, MessageActionCardHeader, MessageActionCardHeaderDescription, MessageActionCardHeaderIcon, MessageActionCardHeaderStatus, MessageActionCardHeaderTitle, MessageActionCardHint, MessageActionCardHintLabel, MessageActionCardNotice, MessageActionCardProperties, MessageActionCardProperty, MessageActionCardPropertyLabel, MessageActionCardPropertyValue, MessageActionCardScope, MessageActionCardScopeDescription, MessageActionCardScopeList, MessageActionCardScopeListLabel, MessageActionCardScopeListViewport, MessageActionCardScopeName, MessageActionCardStatus };
@@ -0,0 +1,47 @@
1
+ import { tv } from "../../lib/tv.mjs";
2
+ //#region src/components/message-action-card/message-action-card.recipe.ts
3
+ const messageActionCard = tv({
4
+ slots: {
5
+ root: ["w-full", "group/action-card mt-2 max-w-[440px]"],
6
+ header: [
7
+ "flex items-start",
8
+ "gap-2 px-3 pt-3 pb-2 group-data-closed/action-card:pb-3",
9
+ "text-subhead font-bold text-foreground"
10
+ ],
11
+ headerIcon: [
12
+ "flex shrink-0 items-center justify-center",
13
+ "[&>svg]:shrink-0",
14
+ "size-[27px] rounded-sticker bg-fill-muted text-foreground-muted",
15
+ "[&>svg]:size-3.5"
16
+ ],
17
+ headerTitle: ["min-w-0 flex-1", "pt-[calc((27px-1lh)/2)]"],
18
+ headerDescription: ["block", "mt-0.5 text-footnote font-normal text-foreground-muted"],
19
+ headerStatus: ["ml-auto shrink-0", "mt-[calc((27px-1lh)/2)] text-caption font-semibold text-foreground-muted"],
20
+ status: [
21
+ "inline-flex h-auto items-center gap-1.5 rounded-none border-0 bg-transparent p-0 shadow-none",
22
+ "text-caption font-semibold text-foreground-muted",
23
+ "before:size-2.5 before:shrink-0 before:rounded-[2px] before:border-[1.5px] before:border-sticker-ink before:content-['']"
24
+ ],
25
+ collapseTrigger: [
26
+ "flex shrink-0 cursor-pointer items-center justify-center",
27
+ "[&>svg]:transition-transform [&>svg]:duration-200 motion-reduce:[&>svg]:transition-none",
28
+ "data-panel-open:[&>svg]:rotate-180",
29
+ "focus-visible:keyboard:outline-2 focus-visible:keyboard:outline-offset-1",
30
+ "my-0 -mr-1 size-[27px] rounded-chip text-foreground-muted",
31
+ "hover:bg-fill-medium hover:text-foreground active:bg-fill-medium",
32
+ "focus-visible:outline-none focus-visible:shadow-focus",
33
+ "[&>svg]:size-4"
34
+ ]
35
+ },
36
+ variants: { tone: {
37
+ neutral: { status: ["before:bg-inactive"] },
38
+ primary: { status: ["before:bg-presence-busy"] },
39
+ information: { status: ["before:bg-info"] },
40
+ accent: { status: ["before:bg-attention"] },
41
+ success: { status: ["before:bg-success"] },
42
+ warning: { status: ["before:bg-warning"] },
43
+ danger: { status: ["before:bg-danger"] }
44
+ } }
45
+ });
46
+ //#endregion
47
+ export { messageActionCard };
@@ -0,0 +1,5 @@
1
+ import { MessageAttachmentAction, MessageAttachmentActionProps, MessageAttachmentCard, MessageAttachmentCardProps, MessageAttachmentCommentSummary, MessageAttachmentCommentSummaryProps, MessageAttachmentDiffAddition, MessageAttachmentDiffAdditionProps, MessageAttachmentDiffDeletion, MessageAttachmentDiffDeletionProps, MessageAttachmentDiffSummary, MessageAttachmentDiffSummaryProps, MessageAttachmentGroup, MessageAttachmentGroupProps, MessageAttachmentMeta, MessageAttachmentMetaEnd, MessageAttachmentMetaEndProps, MessageAttachmentMetaProps, MessageAttachmentMetaStart, MessageAttachmentMetaStartProps, MessageAttachmentSummary, MessageAttachmentSummaryProps, MessageAttachmentTitle, MessageAttachmentTitleProps } from "./message-attachment.mjs";
2
+ import { MessageImageGalleryAspectKind, MessageImageGalleryFit, MessageImageGalleryImage, MessageImageGalleryItemLayout, MessageImageGalleryRowData, SINGLE_IMAGE_MAX_HEIGHT, SINGLE_IMAGE_MAX_WIDTH, buildMessageImageGalleryRows, classifyMessageImageAspect } from "./message-image-gallery-rows.mjs";
3
+ import { MessageImageGallery, MessageImageGalleryAction, MessageImageGalleryActionProps, MessageImageGalleryItem, MessageImageGalleryItemProps, MessageImageGalleryMedia, MessageImageGalleryMediaProps, MessageImageGalleryOverlay, MessageImageGalleryOverlayProps, MessageImageGalleryPreview, MessageImageGalleryPreviewProps, MessageImageGalleryProps, MessageImageGalleryRow, MessageImageGalleryRowProps } from "./message-image-gallery.mjs";
4
+ import { MessageVideoPreview, MessageVideoPreviewAction, MessageVideoPreviewActionProps, MessageVideoPreviewFailureAction, MessageVideoPreviewFailureActionProps, MessageVideoPreviewFailureContent, MessageVideoPreviewFailureContentProps, MessageVideoPreviewFailureIcon, MessageVideoPreviewFailureIconProps, MessageVideoPreviewFailureTitle, MessageVideoPreviewFailureTitleProps, MessageVideoPreviewFallback, MessageVideoPreviewFallbackProps, MessageVideoPreviewMedia, MessageVideoPreviewMediaProps, MessageVideoPreviewProps } from "./message-video-preview.mjs";
5
+ export { MessageAttachmentAction, type MessageAttachmentActionProps, MessageAttachmentCard, type MessageAttachmentCardProps, MessageAttachmentCommentSummary, type MessageAttachmentCommentSummaryProps, MessageAttachmentDiffAddition, type MessageAttachmentDiffAdditionProps, MessageAttachmentDiffDeletion, type MessageAttachmentDiffDeletionProps, MessageAttachmentDiffSummary, type MessageAttachmentDiffSummaryProps, MessageAttachmentGroup, type MessageAttachmentGroupProps, MessageAttachmentMeta, MessageAttachmentMetaEnd, type MessageAttachmentMetaEndProps, type MessageAttachmentMetaProps, MessageAttachmentMetaStart, type MessageAttachmentMetaStartProps, MessageAttachmentSummary, type MessageAttachmentSummaryProps, MessageAttachmentTitle, type MessageAttachmentTitleProps, MessageImageGallery, MessageImageGalleryAction, type MessageImageGalleryActionProps, type MessageImageGalleryAspectKind, type MessageImageGalleryFit, type MessageImageGalleryImage, MessageImageGalleryItem, type MessageImageGalleryItemLayout, type MessageImageGalleryItemProps, MessageImageGalleryMedia, type MessageImageGalleryMediaProps, MessageImageGalleryOverlay, type MessageImageGalleryOverlayProps, MessageImageGalleryPreview, type MessageImageGalleryPreviewProps, type MessageImageGalleryProps, MessageImageGalleryRow, type MessageImageGalleryRowData, type MessageImageGalleryRowProps, MessageVideoPreview, MessageVideoPreviewAction, type MessageVideoPreviewActionProps, MessageVideoPreviewFailureAction, type MessageVideoPreviewFailureActionProps, MessageVideoPreviewFailureContent, type MessageVideoPreviewFailureContentProps, MessageVideoPreviewFailureIcon, type MessageVideoPreviewFailureIconProps, MessageVideoPreviewFailureTitle, type MessageVideoPreviewFailureTitleProps, MessageVideoPreviewFallback, type MessageVideoPreviewFallbackProps, MessageVideoPreviewMedia, type MessageVideoPreviewMediaProps, type MessageVideoPreviewProps, SINGLE_IMAGE_MAX_HEIGHT, SINGLE_IMAGE_MAX_WIDTH, buildMessageImageGalleryRows, classifyMessageImageAspect };
@@ -0,0 +1,27 @@
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ //#region src/components/message-attachment/message-attachment.d.ts
3
+ export type MessageAttachmentGroupProps = useRender.ComponentProps<"div">;
4
+ export declare function MessageAttachmentGroup({ className, render, ...props }: MessageAttachmentGroupProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
5
+ export type MessageAttachmentCardProps = useRender.ComponentProps<"div">;
6
+ export declare function MessageAttachmentCard({ className, render, ...props }: MessageAttachmentCardProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
7
+ export type MessageAttachmentTitleProps = useRender.ComponentProps<"span">;
8
+ export declare function MessageAttachmentTitle({ className, render, ...props }: MessageAttachmentTitleProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
9
+ export type MessageAttachmentMetaProps = useRender.ComponentProps<"span">;
10
+ export declare function MessageAttachmentMeta({ className, render, ...props }: MessageAttachmentMetaProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
11
+ export type MessageAttachmentMetaStartProps = useRender.ComponentProps<"span">;
12
+ export declare function MessageAttachmentMetaStart({ className, render, ...props }: MessageAttachmentMetaStartProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
13
+ export type MessageAttachmentMetaEndProps = useRender.ComponentProps<"span">;
14
+ export declare function MessageAttachmentMetaEnd({ className, render, ...props }: MessageAttachmentMetaEndProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
15
+ export type MessageAttachmentSummaryProps = useRender.ComponentProps<"span">;
16
+ export declare function MessageAttachmentSummary({ className, render, ...props }: MessageAttachmentSummaryProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
17
+ export type MessageAttachmentCommentSummaryProps = useRender.ComponentProps<"span">;
18
+ export declare function MessageAttachmentCommentSummary({ className, render, ...props }: MessageAttachmentCommentSummaryProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
19
+ export type MessageAttachmentDiffSummaryProps = useRender.ComponentProps<"span">;
20
+ export declare function MessageAttachmentDiffSummary({ className, render, ...props }: MessageAttachmentDiffSummaryProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
21
+ export type MessageAttachmentDiffAdditionProps = useRender.ComponentProps<"span">;
22
+ export declare function MessageAttachmentDiffAddition({ className, render, ...props }: MessageAttachmentDiffAdditionProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
23
+ export type MessageAttachmentDiffDeletionProps = useRender.ComponentProps<"span">;
24
+ export declare function MessageAttachmentDiffDeletion({ className, render, ...props }: MessageAttachmentDiffDeletionProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
25
+ export type MessageAttachmentActionProps = useRender.ComponentProps<"button">;
26
+ export declare function MessageAttachmentAction({ className, render, ...props }: MessageAttachmentActionProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
27
+ //#endregion
@@ -0,0 +1,129 @@
1
+ import { messageAttachment } from "./message-attachment.recipe.mjs";
2
+ import { mergeProps } from "@base-ui/react/merge-props";
3
+ import { useRender } from "@base-ui/react/use-render";
4
+ //#region src/components/message-attachment/message-attachment.tsx
5
+ function MessageAttachmentGroup({ className, render, ...props }) {
6
+ const { group } = messageAttachment();
7
+ const defaultProps = { className: group({ className }) };
8
+ return useRender({
9
+ defaultTagName: "div",
10
+ render,
11
+ props: mergeProps(defaultProps, props),
12
+ state: { slot: "message-attachment-group" }
13
+ });
14
+ }
15
+ function MessageAttachmentCard({ className, render, ...props }) {
16
+ const { card } = messageAttachment();
17
+ const defaultProps = { className: card({ className }) };
18
+ return useRender({
19
+ defaultTagName: "div",
20
+ render,
21
+ props: mergeProps(defaultProps, props),
22
+ state: { slot: "message-attachment-card" }
23
+ });
24
+ }
25
+ function MessageAttachmentTitle({ className, render, ...props }) {
26
+ const { title } = messageAttachment();
27
+ const defaultProps = { className: title({ className }) };
28
+ return useRender({
29
+ defaultTagName: "span",
30
+ render,
31
+ props: mergeProps(defaultProps, props),
32
+ state: { slot: "message-attachment-title" }
33
+ });
34
+ }
35
+ function MessageAttachmentMeta({ className, render, ...props }) {
36
+ const { meta } = messageAttachment();
37
+ const defaultProps = { className: meta({ className }) };
38
+ return useRender({
39
+ defaultTagName: "span",
40
+ render,
41
+ props: mergeProps(defaultProps, props),
42
+ state: { slot: "message-attachment-meta" }
43
+ });
44
+ }
45
+ function MessageAttachmentMetaStart({ className, render, ...props }) {
46
+ const { metaStart } = messageAttachment();
47
+ const defaultProps = { className: metaStart({ className }) };
48
+ return useRender({
49
+ defaultTagName: "span",
50
+ render,
51
+ props: mergeProps(defaultProps, props),
52
+ state: { slot: "message-attachment-meta-start" }
53
+ });
54
+ }
55
+ function MessageAttachmentMetaEnd({ className, render, ...props }) {
56
+ const { metaEnd } = messageAttachment();
57
+ const defaultProps = { className: metaEnd({ className }) };
58
+ return useRender({
59
+ defaultTagName: "span",
60
+ render,
61
+ props: mergeProps(defaultProps, props),
62
+ state: { slot: "message-attachment-meta-end" }
63
+ });
64
+ }
65
+ function MessageAttachmentSummary({ className, render, ...props }) {
66
+ const { summary } = messageAttachment();
67
+ const defaultProps = { className: summary({ className }) };
68
+ return useRender({
69
+ defaultTagName: "span",
70
+ render,
71
+ props: mergeProps(defaultProps, props),
72
+ state: { slot: "message-attachment-summary" }
73
+ });
74
+ }
75
+ function MessageAttachmentCommentSummary({ className, render, ...props }) {
76
+ const { commentSummary } = messageAttachment();
77
+ const defaultProps = { className: commentSummary({ className }) };
78
+ return useRender({
79
+ defaultTagName: "span",
80
+ render,
81
+ props: mergeProps(defaultProps, props),
82
+ state: { slot: "message-attachment-comment-summary" }
83
+ });
84
+ }
85
+ function MessageAttachmentDiffSummary({ className, render, ...props }) {
86
+ const { diffSummary } = messageAttachment();
87
+ const defaultProps = { className: diffSummary({ className }) };
88
+ return useRender({
89
+ defaultTagName: "span",
90
+ render,
91
+ props: mergeProps(defaultProps, props),
92
+ state: { slot: "message-attachment-diff-summary" }
93
+ });
94
+ }
95
+ function MessageAttachmentDiffAddition({ className, render, ...props }) {
96
+ const { diffAddition } = messageAttachment();
97
+ const defaultProps = { className: diffAddition({ className }) };
98
+ return useRender({
99
+ defaultTagName: "span",
100
+ render,
101
+ props: mergeProps(defaultProps, props),
102
+ state: { slot: "message-attachment-diff-addition" }
103
+ });
104
+ }
105
+ function MessageAttachmentDiffDeletion({ className, render, ...props }) {
106
+ const { diffDeletion } = messageAttachment();
107
+ const defaultProps = { className: diffDeletion({ className }) };
108
+ return useRender({
109
+ defaultTagName: "span",
110
+ render,
111
+ props: mergeProps(defaultProps, props),
112
+ state: { slot: "message-attachment-diff-deletion" }
113
+ });
114
+ }
115
+ function MessageAttachmentAction({ className, render, ...props }) {
116
+ const { action } = messageAttachment();
117
+ const defaultProps = {
118
+ type: "button",
119
+ className: action({ className })
120
+ };
121
+ return useRender({
122
+ defaultTagName: "button",
123
+ render,
124
+ props: mergeProps(defaultProps, props),
125
+ state: { slot: "message-attachment-action" }
126
+ });
127
+ }
128
+ //#endregion
129
+ export { MessageAttachmentAction, MessageAttachmentCard, MessageAttachmentCommentSummary, MessageAttachmentDiffAddition, MessageAttachmentDiffDeletion, MessageAttachmentDiffSummary, MessageAttachmentGroup, MessageAttachmentMeta, MessageAttachmentMetaEnd, MessageAttachmentMetaStart, MessageAttachmentSummary, MessageAttachmentTitle };
@@ -0,0 +1,36 @@
1
+ import { tv } from "../../lib/tv.mjs";
2
+ //#region src/components/message-attachment/message-attachment.recipe.ts
3
+ const messageAttachment = tv({ slots: {
4
+ group: "flex max-w-[360px] flex-wrap items-start gap-2",
5
+ card: [
6
+ "group/attachment relative inline-flex h-20 w-44 min-w-44 max-w-44 shrink-0 flex-col overflow-hidden",
7
+ "text-left",
8
+ "rounded-container border border-line-hairline bg-layer-card py-2 pr-[calc(var(--control-embedded-inset)-1px)] pl-2.5 text-foreground",
9
+ "outline-none hover:overlay-subtle active:overlay-medium focus-visible:shadow-focus",
10
+ "[&_[data-slot=message-attachment-action]_svg]:size-4"
11
+ ],
12
+ title: ["block w-full max-w-full shrink-0 truncate", "pr-1 font-sans text-callout font-semibold text-foreground"],
13
+ meta: ["mt-auto flex w-full min-w-0 max-w-full items-center justify-between", "gap-2 font-mono text-mono-meta text-foreground-hint"],
14
+ metaStart: "min-w-0 flex-1 truncate",
15
+ metaEnd: ["ml-auto inline-flex shrink-0 items-center gap-1 self-stretch", "[&_svg]:size-[10px] [&_svg]:shrink-0"],
16
+ summary: [
17
+ "mt-0.5 inline-flex shrink-0 items-center whitespace-nowrap",
18
+ "[&_svg]:shrink-0",
19
+ "pr-1 font-mono text-mono-meta text-foreground-hint [&_svg]:size-3.5"
20
+ ],
21
+ commentSummary: "gap-[2.5px]",
22
+ diffSummary: "gap-1.5",
23
+ diffAddition: ["text-success-strong"],
24
+ diffDeletion: ["text-danger-strong"],
25
+ action: [
26
+ "relative flex items-center justify-center",
27
+ "before:absolute before:-inset-1 before:content-['']",
28
+ "[&_svg]:shrink-0",
29
+ "-mt-1 mb-[calc(var(--control-embedded-inset)-9px)] size-6 self-end rounded-chip text-foreground",
30
+ "outline-none hover:bg-fill-medium active:bg-fill-medium",
31
+ "focus-visible:shadow-focus",
32
+ "[&_svg]:size-4"
33
+ ]
34
+ } });
35
+ //#endregion
36
+ export { messageAttachment };
@@ -0,0 +1,47 @@
1
+ //#region src/components/message-attachment/message-image-gallery-rows.d.ts
2
+ /**
3
+ * Row-building rules shared by the message image gallery and the forwarded
4
+ * bundle gallery.
5
+ *
6
+ * Ported verbatim from the Raft web app's message gallery
7
+ * (`buildImageGalleryRows` / `classifyImageAspect`), including the two aspect
8
+ * thresholds and the split rules, so both surfaces lay the same attachments out
9
+ * identically:
10
+ *
11
+ * - a wide image (ratio >= 2.2) always takes a row of its own;
12
+ * - the others fill rows of three, except a lone buffer of exactly four,
13
+ * which splits two-and-two;
14
+ * - normal images crop (`cover`), wide and tall (<= 0.55) ones stay fully
15
+ * visible (`contain`);
16
+ * - a single image keeps its own proportions, capped to
17
+ * SINGLE_IMAGE_MAX_WIDTH x SINGLE_IMAGE_MAX_HEIGHT, and reserves that box
18
+ * before the image loads.
19
+ */
20
+ export interface MessageImageGalleryImage {
21
+ width?: number | null;
22
+ height?: number | null;
23
+ }
24
+ export type MessageImageGalleryAspectKind = "wide" | "tall" | "normal";
25
+ export type MessageImageGalleryFit = "cover" | "contain";
26
+ export interface MessageImageGalleryItemLayout {
27
+ /** Index into the images array given to the builder. */
28
+ index: number;
29
+ /** `cover` crops to fill the cell; `contain` keeps the whole image visible. */
30
+ fit: MessageImageGalleryFit;
31
+ /**
32
+ * Present only for a single-image gallery: the box to reserve (as inline
33
+ * style) so the cell measures right before the image loads.
34
+ */
35
+ reserved?: {
36
+ width: string;
37
+ aspectRatio: string;
38
+ };
39
+ }
40
+ export interface MessageImageGalleryRowData {
41
+ items: MessageImageGalleryItemLayout[];
42
+ }
43
+ export declare const SINGLE_IMAGE_MAX_WIDTH = 416;
44
+ export declare const SINGLE_IMAGE_MAX_HEIGHT = 288;
45
+ export declare function classifyMessageImageAspect(image: MessageImageGalleryImage): MessageImageGalleryAspectKind;
46
+ export declare function buildMessageImageGalleryRows(images: ReadonlyArray<MessageImageGalleryImage>): MessageImageGalleryRowData[];
47
+ //#endregion
@@ -0,0 +1,55 @@
1
+ //#region src/components/message-attachment/message-image-gallery-rows.ts
2
+ const SINGLE_IMAGE_MAX_WIDTH = 416;
3
+ const SINGLE_IMAGE_MAX_HEIGHT = 288;
4
+ function classifyMessageImageAspect(image) {
5
+ if (!image.width || !image.height || image.width <= 0 || image.height <= 0) return "normal";
6
+ const ratio = image.width / image.height;
7
+ if (ratio >= 2.2) return "wide";
8
+ if (ratio <= .55) return "tall";
9
+ return "normal";
10
+ }
11
+ function reserveSingleImage(image) {
12
+ if (!image.width || !image.height || image.width <= 0 || image.height <= 0) return {
13
+ width: "min(11rem, 100%)",
14
+ aspectRatio: "4 / 3"
15
+ };
16
+ const scale = Math.min(416 / image.width, 288 / image.height, 1);
17
+ return {
18
+ width: `min(${Math.max(1, Math.round(image.width * scale))}px, 100%)`,
19
+ aspectRatio: `${image.width} / ${image.height}`
20
+ };
21
+ }
22
+ function itemLayout(image, index, single) {
23
+ if (single) return {
24
+ index,
25
+ fit: "contain",
26
+ reserved: reserveSingleImage(image)
27
+ };
28
+ return {
29
+ index,
30
+ fit: classifyMessageImageAspect(image) === "normal" ? "cover" : "contain"
31
+ };
32
+ }
33
+ function buildMessageImageGalleryRows(images) {
34
+ if (images.length === 1) return [{ items: [itemLayout(images[0], 0, true)] }];
35
+ const rows = [];
36
+ let buffer = [];
37
+ const pushBufferedRows = () => {
38
+ if (buffer.length === 0) return;
39
+ const chunkSize = buffer.length === 4 ? 2 : 3;
40
+ for (let i = 0; i < buffer.length; i += chunkSize) rows.push({ items: buffer.slice(i, i + chunkSize).map((index) => itemLayout(images[index], index, false)) });
41
+ buffer = [];
42
+ };
43
+ images.forEach((image, index) => {
44
+ if (classifyMessageImageAspect(image) === "wide") {
45
+ pushBufferedRows();
46
+ rows.push({ items: [itemLayout(image, index, false)] });
47
+ return;
48
+ }
49
+ buffer.push(index);
50
+ });
51
+ pushBufferedRows();
52
+ return rows;
53
+ }
54
+ //#endregion
55
+ export { SINGLE_IMAGE_MAX_HEIGHT, SINGLE_IMAGE_MAX_WIDTH, buildMessageImageGalleryRows, classifyMessageImageAspect };