@botiverse/raft-ui 0.50.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 +32 -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 -17053
  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 -1222
  581. package/dist/wip.mjs +43 -3079
  582. package/package.json +8 -1
  583. package/dist/inbox-item-B4nNvpp1.d.mts +0 -1784
  584. package/dist/inbox-item-DHJOrxB8.mjs +0 -7454
  585. package/dist/style.css +0 -1395
@@ -0,0 +1,160 @@
1
+ import { tv } from "../../lib/tv.mjs";
2
+ import { mergeProps } from "@base-ui/react/merge-props";
3
+ import { useRender } from "@base-ui/react/use-render";
4
+ //#region src/components/composer/composer-suggestion-list.tsx
5
+ const composerSuggestionList = tv({
6
+ slots: {
7
+ root: [
8
+ "absolute inset-x-0 bottom-full w-auto overflow-y-auto",
9
+ "mb-2 max-h-60 overflow-x-hidden rounded-container p-1",
10
+ "bg-layer-popover text-foreground ring-1 ring-line-seam shadow-float"
11
+ ],
12
+ group: ["flex flex-col"],
13
+ groupLabel: ["py-1.5", "px-2.5 pt-2 pb-1 font-sans text-caption font-bold text-foreground-hint"],
14
+ item: [
15
+ "flex w-full items-center text-left",
16
+ "min-h-9 cursor-pointer gap-2.5 rounded-chip px-2.5 py-1",
17
+ "font-sans text-callout font-medium text-foreground",
18
+ "hover:bg-brand-soft data-[highlighted=true]:bg-brand-soft",
19
+ "data-[disabled=true]:cursor-default data-[disabled=true]:text-foreground-disabled",
20
+ "data-[disabled=true]:hover:bg-transparent"
21
+ ],
22
+ content: ["flex min-w-0 flex-1 items-center gap-1.5 text-left"],
23
+ icon: ["shrink-0"],
24
+ title: ["min-w-0 truncate"],
25
+ aside: ["ml-auto flex max-w-[33%] min-w-0 shrink-0 items-center justify-end"],
26
+ meta: ["text-caption text-foreground-hint"]
27
+ },
28
+ variants: {
29
+ separated: {
30
+ true: { group: ["-mx-1 mt-1 border-t border-line-hairline px-1 pt-1"] },
31
+ false: {}
32
+ },
33
+ iconVariant: {
34
+ avatar: {},
35
+ framed: { icon: ["flex size-[19px] items-center justify-center rounded-sticker", "bg-fill-muted text-foreground-muted [&_svg]:size-[11px]"] },
36
+ auxiliary: { icon: ["-ml-1 size-3", "text-foreground-hint"] },
37
+ inline: { icon: ["flex size-3.5 items-center justify-center [&_svg]:size-3.5", "text-foreground-hint"] }
38
+ },
39
+ metaVariant: {
40
+ text: { meta: "min-w-0 flex-1 basis-0 truncate" },
41
+ code: { meta: ["min-w-0 truncate font-mono", "text-mono-meta text-foreground-hint"] }
42
+ }
43
+ },
44
+ defaultVariants: {
45
+ separated: false,
46
+ iconVariant: "avatar",
47
+ metaVariant: "text"
48
+ }
49
+ });
50
+ function ComposerSuggestionList({ className, render, ...props }) {
51
+ const { root } = composerSuggestionList();
52
+ const defaultProps = {
53
+ "data-slot": "composer-suggestion-list",
54
+ className: root({ className })
55
+ };
56
+ return useRender({
57
+ defaultTagName: "div",
58
+ render,
59
+ props: mergeProps(defaultProps, props)
60
+ });
61
+ }
62
+ function ComposerSuggestionGroup({ separated, className, render, ...props }) {
63
+ const { group } = composerSuggestionList({ separated });
64
+ const defaultProps = {
65
+ "data-slot": "composer-suggestion-group",
66
+ className: group({ className })
67
+ };
68
+ return useRender({
69
+ defaultTagName: "div",
70
+ render,
71
+ props: mergeProps(defaultProps, props)
72
+ });
73
+ }
74
+ function ComposerSuggestionGroupLabel({ className, render, ...props }) {
75
+ const { groupLabel } = composerSuggestionList();
76
+ const defaultProps = {
77
+ "data-slot": "composer-suggestion-group-label",
78
+ className: groupLabel({ className })
79
+ };
80
+ return useRender({
81
+ defaultTagName: "div",
82
+ render,
83
+ props: mergeProps(defaultProps, props)
84
+ });
85
+ }
86
+ function ComposerSuggestionOption({ className, render, ...props }) {
87
+ const { item } = composerSuggestionList();
88
+ const defaultProps = {
89
+ "data-slot": "composer-suggestion-option",
90
+ className: item({ className }),
91
+ role: "option"
92
+ };
93
+ return useRender({
94
+ defaultTagName: "div",
95
+ render,
96
+ props: mergeProps(defaultProps, props)
97
+ });
98
+ }
99
+ function ComposerSuggestionContent({ className, render, ...props }) {
100
+ const { content } = composerSuggestionList();
101
+ const defaultProps = {
102
+ "data-slot": "composer-suggestion-content",
103
+ className: content({ className })
104
+ };
105
+ return useRender({
106
+ defaultTagName: "div",
107
+ render,
108
+ props: mergeProps(defaultProps, props)
109
+ });
110
+ }
111
+ function ComposerSuggestionIcon({ variant = "avatar", className, render, ...props }) {
112
+ const { icon } = composerSuggestionList({ iconVariant: variant });
113
+ const defaultProps = {
114
+ "data-slot": "composer-suggestion-icon",
115
+ className: icon({ className })
116
+ };
117
+ return useRender({
118
+ defaultTagName: "span",
119
+ render,
120
+ props: mergeProps(defaultProps, props)
121
+ });
122
+ }
123
+ function ComposerSuggestionTitle({ className, render, ...props }) {
124
+ const { title } = composerSuggestionList();
125
+ const defaultProps = {
126
+ "data-slot": "composer-suggestion-title",
127
+ className: title({ className })
128
+ };
129
+ return useRender({
130
+ defaultTagName: "span",
131
+ render,
132
+ props: mergeProps(defaultProps, props)
133
+ });
134
+ }
135
+ function ComposerSuggestionAside({ className, render, ...props }) {
136
+ const { aside } = composerSuggestionList();
137
+ const defaultProps = {
138
+ "data-slot": "composer-suggestion-aside",
139
+ className: aside({ className })
140
+ };
141
+ return useRender({
142
+ defaultTagName: "span",
143
+ render,
144
+ props: mergeProps(defaultProps, props)
145
+ });
146
+ }
147
+ function ComposerSuggestionMeta({ variant = "text", className, render, ...props }) {
148
+ const { meta } = composerSuggestionList({ metaVariant: variant });
149
+ const defaultProps = {
150
+ "data-slot": "composer-suggestion-meta",
151
+ className: meta({ className })
152
+ };
153
+ return useRender({
154
+ defaultTagName: "span",
155
+ render,
156
+ props: mergeProps(defaultProps, props)
157
+ });
158
+ }
159
+ //#endregion
160
+ export { ComposerSuggestionAside, ComposerSuggestionContent, ComposerSuggestionGroup, ComposerSuggestionGroupLabel, ComposerSuggestionIcon, ComposerSuggestionList, ComposerSuggestionMeta, ComposerSuggestionOption, ComposerSuggestionTitle };
@@ -0,0 +1,5 @@
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ //#region src/components/composer/composer-toolbar-label.d.ts
3
+ export type ComposerToolbarLabelProps = useRender.ComponentProps<"label">;
4
+ export declare function ComposerToolbarLabel({ className, render, ...props }: ComposerToolbarLabelProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
5
+ //#endregion
@@ -0,0 +1,24 @@
1
+ import { tv } from "../../lib/tv.mjs";
2
+ import { mergeProps } from "@base-ui/react/merge-props";
3
+ import { useRender } from "@base-ui/react/use-render";
4
+ //#region src/components/composer/composer-toolbar-label.tsx
5
+ const composerToolbarLabel = tv({ slots: { root: [
6
+ "inline-flex cursor-pointer select-none items-center",
7
+ "min-h-8 gap-2",
8
+ "font-sans text-callout font-semibold text-foreground",
9
+ "has-data-disabled:cursor-not-allowed has-data-disabled:text-foreground-disabled"
10
+ ] } });
11
+ function ComposerToolbarLabel({ className, render, ...props }) {
12
+ const { root } = composerToolbarLabel();
13
+ const defaultProps = {
14
+ "data-slot": "composer-toolbar-label",
15
+ className: root({ className })
16
+ };
17
+ return useRender({
18
+ defaultTagName: "label",
19
+ render,
20
+ props: mergeProps(defaultProps, props)
21
+ });
22
+ }
23
+ //#endregion
24
+ export { ComposerToolbarLabel };
@@ -0,0 +1,20 @@
1
+ import { ButtonProps } from "../button/button.mjs";
2
+ import { useRender } from "@base-ui/react/use-render";
3
+ //#region src/components/composer/composer.d.ts
4
+ export type ComposerProps = useRender.ComponentProps<"div">;
5
+ export declare function Composer({ className, render, ...props }: ComposerProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
6
+ export type ComposerInputProps = useRender.ComponentProps<"textarea">;
7
+ export declare function ComposerInput({ className, render, ...props }: ComposerInputProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
8
+ export type ComposerToolbarProps = useRender.ComponentProps<"div">;
9
+ export declare function ComposerToolbar({ className, render, ...props }: ComposerToolbarProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
10
+ export type ComposerActionsProps = useRender.ComponentProps<"div">;
11
+ export declare function ComposerActions({ className, render, ...props }: ComposerActionsProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
12
+ export type ComposerMetaProps = useRender.ComponentProps<"div">;
13
+ export declare function ComposerMeta({ className, render, ...props }: ComposerMetaProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
14
+ export type ComposerIconButtonProps = Omit<ButtonProps, "className" | "size" | "variant"> & {
15
+ className?: string;
16
+ };
17
+ export declare function ComposerIconButton({ className, ...props }: ComposerIconButtonProps): import("react").JSX.Element;
18
+ export type ComposerSubmitProps = Omit<ButtonProps, "variant">;
19
+ export declare function ComposerSubmit({ type, className, ...props }: ComposerSubmitProps): import("react").JSX.Element;
20
+ //#endregion
@@ -0,0 +1,88 @@
1
+ import { Button } from "../button/button.mjs";
2
+ import { composer } from "./composer.recipe.mjs";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { mergeProps } from "@base-ui/react/merge-props";
5
+ import { useRender } from "@base-ui/react/use-render";
6
+ //#region src/components/composer/composer.tsx
7
+ function Composer({ className, render, ...props }) {
8
+ const { root } = composer();
9
+ const defaultProps = {
10
+ "data-slot": "composer",
11
+ className: root({ className })
12
+ };
13
+ return useRender({
14
+ defaultTagName: "div",
15
+ render,
16
+ props: mergeProps(defaultProps, props)
17
+ });
18
+ }
19
+ function ComposerInput({ className, render, ...props }) {
20
+ const { input } = composer();
21
+ const defaultProps = {
22
+ rows: 1,
23
+ "data-slot": "composer-input",
24
+ className: input({ className })
25
+ };
26
+ return useRender({
27
+ defaultTagName: "textarea",
28
+ render,
29
+ props: mergeProps(defaultProps, props)
30
+ });
31
+ }
32
+ function ComposerToolbar({ className, render, ...props }) {
33
+ const { toolbar } = composer();
34
+ const defaultProps = {
35
+ "data-slot": "composer-toolbar",
36
+ className: toolbar({ className })
37
+ };
38
+ return useRender({
39
+ defaultTagName: "div",
40
+ render,
41
+ props: mergeProps(defaultProps, props)
42
+ });
43
+ }
44
+ function ComposerActions({ className, render, ...props }) {
45
+ const { actions } = composer();
46
+ const defaultProps = {
47
+ "data-slot": "composer-actions",
48
+ className: actions({ className })
49
+ };
50
+ return useRender({
51
+ defaultTagName: "div",
52
+ render,
53
+ props: mergeProps(defaultProps, props)
54
+ });
55
+ }
56
+ function ComposerMeta({ className, render, ...props }) {
57
+ const { meta } = composer();
58
+ const defaultProps = {
59
+ "data-slot": "composer-meta",
60
+ className: meta({ className })
61
+ };
62
+ return useRender({
63
+ defaultTagName: "div",
64
+ render,
65
+ props: mergeProps(defaultProps, props)
66
+ });
67
+ }
68
+ function ComposerIconButton({ className, ...props }) {
69
+ const { iconButton } = composer();
70
+ return /* @__PURE__ */ jsx(Button, {
71
+ type: "button",
72
+ size: "icon-md",
73
+ variant: "ghost",
74
+ className: iconButton({ className }),
75
+ ...props
76
+ });
77
+ }
78
+ function ComposerSubmit({ type = "submit", className, ...props }) {
79
+ const { submit } = composer();
80
+ return /* @__PURE__ */ jsx(Button, {
81
+ ...props,
82
+ className: submit({ className }),
83
+ type,
84
+ variant: "accent"
85
+ });
86
+ }
87
+ //#endregion
88
+ export { Composer, ComposerActions, ComposerIconButton, ComposerInput, ComposerMeta, ComposerSubmit, ComposerToolbar };
@@ -0,0 +1,29 @@
1
+ import { tv } from "../../lib/tv.mjs";
2
+ //#region src/components/composer/composer.recipe.ts
3
+ const composer = tv({ slots: {
4
+ root: [
5
+ "flex w-full flex-col gap-2 p-2",
6
+ "rounded-container border-[1.5px] px-3 pt-3 pb-[calc(var(--control-embedded-inset)-1px)]",
7
+ "border-line-field bg-layer-card text-foreground shadow-none",
8
+ "has-focus-visible:shadow-focus"
9
+ ],
10
+ input: [
11
+ "max-h-32 w-full resize-none bg-transparent outline-none",
12
+ "field-sizing-content overflow-y-auto",
13
+ "min-h-6 px-0.5",
14
+ "font-sans text-body font-normal text-foreground",
15
+ "placeholder:text-foreground-hint"
16
+ ],
17
+ toolbar: ["flex items-center justify-between", "mx-[calc(var(--control-embedded-inset)-0.75rem-1px)] gap-embedded-inset"],
18
+ actions: ["flex items-center gap-embedded-inset"],
19
+ meta: ["flex items-center", "gap-embedded-inset"],
20
+ iconButton: [
21
+ "size-8 rounded-chip text-foreground-muted",
22
+ "disabled:border-transparent disabled:bg-transparent",
23
+ "aria-disabled:border-transparent aria-disabled:bg-transparent",
24
+ "[&_svg:not([class*='size-'])]:size-4.5"
25
+ ],
26
+ submit: ["rounded-chip"]
27
+ } });
28
+ //#endregion
29
+ export { composer };
@@ -0,0 +1,10 @@
1
+ import { Composer, ComposerActions, ComposerActionsProps, ComposerIconButton, ComposerIconButtonProps, ComposerInput, ComposerInputProps, ComposerMeta, ComposerMetaProps, ComposerProps, ComposerSubmit, ComposerSubmitProps, ComposerToolbar, ComposerToolbarProps } from "./composer.mjs";
2
+ import { ComposerAttachment, ComposerAttachmentBody, ComposerAttachmentBodyProps, ComposerAttachmentFailedOverlay, ComposerAttachmentFailedOverlayProps, ComposerAttachmentFile, ComposerAttachmentFileProps, ComposerAttachmentImage, ComposerAttachmentImageProps, ComposerAttachmentMeta, ComposerAttachmentMetaProps, ComposerAttachmentProps, ComposerAttachmentRemove, ComposerAttachmentRemoveProps, ComposerAttachmentTitle, ComposerAttachmentTitleProps, ComposerAttachmentUploadProgressBar, ComposerAttachmentUploadProgressBarProps, ComposerAttachmentUploadingOverlay, ComposerAttachmentUploadingOverlayProps, ComposerAttachments, ComposerAttachmentsProps } from "./composer-attachments.mjs";
3
+ import { ComposerAttachmentsScrollArea, ComposerAttachmentsScrollAreaProps } from "./composer-attachments-scroll-area.mjs";
4
+ import { SortableComposerAttachment, SortableComposerAttachmentProps, SortableComposerAttachments, SortableComposerAttachmentsProps, SortableComposerAttachmentsScroll } from "./sortable-composer-attachments.mjs";
5
+ import { ComposerDropOverlay, ComposerDropOverlayLabel, ComposerDropOverlayLabelProps, ComposerDropOverlayPrompt, ComposerDropOverlayPromptProps, ComposerDropOverlayProps } from "./composer-drop-overlay.mjs";
6
+ import { ComposerSuggestionAside, ComposerSuggestionAsideProps, ComposerSuggestionContent, ComposerSuggestionContentProps, ComposerSuggestionGroup, ComposerSuggestionGroupLabel, ComposerSuggestionGroupLabelProps, ComposerSuggestionGroupProps, ComposerSuggestionIcon, ComposerSuggestionIconProps, ComposerSuggestionList, ComposerSuggestionListProps, ComposerSuggestionMeta, ComposerSuggestionMetaProps, ComposerSuggestionOption, ComposerSuggestionOptionProps, ComposerSuggestionTitle, ComposerSuggestionTitleProps } from "./composer-suggestion-list.mjs";
7
+ import { ComposerRoot, ComposerRootProps } from "./composer-root.mjs";
8
+ import { ComposerToolbarLabel, ComposerToolbarLabelProps } from "./composer-toolbar-label.mjs";
9
+ import { ComposerSuggestionTriggerMatch, ComposerSuggestionsInputProps, ComposerSuggestionsListProps, ComposerSuggestionsOptionProps, UseComposerSuggestionsParams, useComposerSuggestions } from "./use-composer-suggestions.mjs";
10
+ export { Composer, ComposerActions, type ComposerActionsProps, ComposerAttachment, ComposerAttachmentBody, type ComposerAttachmentBodyProps, ComposerAttachmentFailedOverlay, type ComposerAttachmentFailedOverlayProps, ComposerAttachmentFile, type ComposerAttachmentFileProps, ComposerAttachmentImage, type ComposerAttachmentImageProps, ComposerAttachmentMeta, type ComposerAttachmentMetaProps, type ComposerAttachmentProps, ComposerAttachmentRemove, type ComposerAttachmentRemoveProps, ComposerAttachmentTitle, type ComposerAttachmentTitleProps, ComposerAttachmentUploadProgressBar, type ComposerAttachmentUploadProgressBarProps, ComposerAttachmentUploadingOverlay, type ComposerAttachmentUploadingOverlayProps, ComposerAttachments, type ComposerAttachmentsProps, ComposerAttachmentsScrollArea, type ComposerAttachmentsScrollAreaProps, ComposerDropOverlay, ComposerDropOverlayLabel, type ComposerDropOverlayLabelProps, ComposerDropOverlayPrompt, type ComposerDropOverlayPromptProps, type ComposerDropOverlayProps, ComposerIconButton, type ComposerIconButtonProps, ComposerInput, type ComposerInputProps, ComposerMeta, type ComposerMetaProps, type ComposerProps, ComposerRoot, type ComposerRootProps, ComposerSubmit, type ComposerSubmitProps, ComposerSuggestionAside, type ComposerSuggestionAsideProps, ComposerSuggestionContent, type ComposerSuggestionContentProps, ComposerSuggestionGroup, ComposerSuggestionGroupLabel, type ComposerSuggestionGroupLabelProps, type ComposerSuggestionGroupProps, ComposerSuggestionIcon, type ComposerSuggestionIconProps, ComposerSuggestionList, type ComposerSuggestionListProps, ComposerSuggestionMeta, type ComposerSuggestionMetaProps, ComposerSuggestionOption, type ComposerSuggestionOptionProps, ComposerSuggestionTitle, type ComposerSuggestionTitleProps, type ComposerSuggestionTriggerMatch, type ComposerSuggestionsInputProps, type ComposerSuggestionsListProps, type ComposerSuggestionsOptionProps, ComposerToolbar, ComposerToolbarLabel, type ComposerToolbarLabelProps, type ComposerToolbarProps, SortableComposerAttachment, type SortableComposerAttachmentProps, SortableComposerAttachments, type SortableComposerAttachmentsProps, SortableComposerAttachmentsScroll, type UseComposerSuggestionsParams, useComposerSuggestions };
@@ -0,0 +1,37 @@
1
+ import { DragMessages } from "../drag/drag-announcements.mjs";
2
+ import { ReactNode } from "react";
3
+ //#region src/components/composer/sortable-composer-attachments.d.ts
4
+ export type SortableComposerAttachmentsProps = {
5
+ items: readonly string[];
6
+ onReorder: (items: string[]) => void;
7
+ children: ReactNode;
8
+ /**
9
+ * Your translations of the drag's instructions and announcements. Each step
10
+ * is said by the attachment's `label` and its position; never by its id.
11
+ */
12
+ messages?: Partial<DragMessages>;
13
+ /**
14
+ * Where the lifted copy renders: `document.body` by default, so a
15
+ * transformed ancestor (a drawer, a dialog) doesn't offset it. `null`
16
+ * renders it in place.
17
+ */
18
+ container?: Element | DocumentFragment | null;
19
+ };
20
+ /** Wrap / flex-pack attachment reorder (mixed widths). */
21
+ export declare function SortableComposerAttachments(props: SortableComposerAttachmentsProps): import("react").JSX.Element;
22
+ /** Horizontal scroll strip reorder — wraps `ComposerAttachmentsScrollArea`. */
23
+ export declare function SortableComposerAttachmentsScroll(props: SortableComposerAttachmentsProps): import("react").JSX.Element;
24
+ export type SortableComposerAttachmentProps = {
25
+ id: string;
26
+ label: string;
27
+ children: ReactNode;
28
+ };
29
+ /**
30
+ * The lifted attachment's own slot stays in the flex flow: at 40% while it is
31
+ * still home, the dashed place once it stands anywhere else. DragLift holds
32
+ * the copy that follows the hand; the root reads these `children` for it.
33
+ * Live draft reorder moves this slot to the drop index; wrap skips strategy
34
+ * transforms so siblings FLIP via layout instead of wrong gaps.
35
+ */
36
+ export declare function SortableComposerAttachment({ id, label, children }: SortableComposerAttachmentProps): import("react").JSX.Element;
37
+ //#endregion
@@ -0,0 +1,247 @@
1
+ import { ComposerAttachmentsScrollArea } from "./composer-attachments-scroll-area.mjs";
2
+ import { createDragAnnouncements, dragInstructions } from "../drag/drag-announcements.mjs";
3
+ import { DragLift, useDragSiblingTransition, useLiftContainer } from "../drag/drag-lift.mjs";
4
+ import { useDragSensors } from "../drag/drag-sensors.mjs";
5
+ import { DropPlaceholder } from "../drag/drop-placeholder.mjs";
6
+ import { Children, createContext, isValidElement, use, useCallback, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { DndContext, closestCenter, pointerWithin } from "@dnd-kit/core";
9
+ import { SortableContext, arrayMove, defaultAnimateLayoutChanges, horizontalListSortingStrategy, useSortable } from "@dnd-kit/sortable";
10
+ import { CSS } from "@dnd-kit/utilities";
11
+ //#region src/components/composer/sortable-composer-attachments.tsx
12
+ /** Whether the lifted attachment still stands at its own index. */
13
+ const SortableAttachmentsHomeContext = createContext(true);
14
+ /**
15
+ * Mixed-width flex-wrap cannot be predicted by rectSortingStrategy. Preview
16
+ * position by live DOM reorder on dragOver instead; strategy returns null so
17
+ * siblings are not shifted by incorrect transforms on top of that reflow.
18
+ * @see https://github.com/clauderic/dnd-kit/issues/44
19
+ */
20
+ const liveReorderStrategy = () => null;
21
+ /**
22
+ * Prefer pointer hits; if the active droppable is still under the pointer /
23
+ * closest center, keep it so layout reflow alone cannot claim a neighbor.
24
+ */
25
+ const sortableCollisionDetection = (args) => {
26
+ const pointerCollisions = pointerWithin(args);
27
+ const collisions = pointerCollisions.length > 0 ? pointerCollisions : closestCenter(args);
28
+ const self = collisions.find((collision) => collision.id === args.active.id);
29
+ return self ? [self] : collisions;
30
+ };
31
+ function reorderItems(items, activeId, overId) {
32
+ const oldIndex = items.indexOf(String(activeId));
33
+ const newIndex = items.indexOf(String(overId));
34
+ if (oldIndex === -1 || newIndex === -1 || oldIndex === newIndex) return null;
35
+ return arrayMove([...items], oldIndex, newIndex);
36
+ }
37
+ function pointerFromDragEvent(event) {
38
+ const { activatorEvent, delta } = event;
39
+ if (!activatorEvent || !("clientX" in activatorEvent) || !("clientY" in activatorEvent) || typeof activatorEvent.clientX !== "number" || typeof activatorEvent.clientY !== "number") return null;
40
+ return {
41
+ x: activatorEvent.clientX + delta.x,
42
+ y: activatorEvent.clientY + delta.y
43
+ };
44
+ }
45
+ function samePointer(a, b, tolerance = .5) {
46
+ return Math.abs(a.x - b.x) <= tolerance && Math.abs(a.y - b.y) <= tolerance;
47
+ }
48
+ /** Attachment tiles keyed by id; also the source of the DragOverlay ghost content. */
49
+ function attachmentsById(children) {
50
+ const byId = /* @__PURE__ */ new Map();
51
+ Children.forEach(children, (child) => {
52
+ if (!isValidElement(child) || child.props.id == null) return;
53
+ byId.set(String(child.props.id), child);
54
+ });
55
+ return byId;
56
+ }
57
+ function setOrder(positions, ids) {
58
+ positions.clear();
59
+ ids.forEach((id, index) => positions.set(id, index));
60
+ }
61
+ /**
62
+ * An attachment is said by its `label`, at its position. Over another
63
+ * attachment the dragged one already stands where it would drop (live
64
+ * reorder); with nothing under the hand it is home.
65
+ */
66
+ function attachmentAnnouncementSource({ labels, home, draft }) {
67
+ return {
68
+ name: (id) => labels.get(String(id)) ?? "",
69
+ place: (id, overId) => {
70
+ const positions = overId == null ? home : draft;
71
+ const index = positions.get(String(id));
72
+ return index == null ? null : {
73
+ place: "",
74
+ position: index + 1,
75
+ count: positions.size
76
+ };
77
+ }
78
+ };
79
+ }
80
+ function SortableComposerAttachmentsRoot({ items, onReorder, children, messages, container, axis, strategy }) {
81
+ const dndContextId = useId();
82
+ const listRef = useRef(null);
83
+ const [activeId, setActiveId] = useState(null);
84
+ const [draftIds, setDraftIds] = useState([]);
85
+ const [overlay, setOverlay] = useState(null);
86
+ const [listMinHeight, setListMinHeight] = useState();
87
+ const draftIdsRef = useRef([]);
88
+ const lastReorderPointerRef = useRef(null);
89
+ const sensors = useDragSensors();
90
+ const liftContainer = useLiftContainer(container);
91
+ const attachments = useMemo(() => attachmentsById(children), [children]);
92
+ const itemIds = useMemo(() => items.map(String), [items]);
93
+ const [announced] = useState(() => ({
94
+ labels: /* @__PURE__ */ new Map(),
95
+ home: /* @__PURE__ */ new Map(),
96
+ draft: /* @__PURE__ */ new Map()
97
+ }));
98
+ useLayoutEffect(() => {
99
+ announced.labels.clear();
100
+ for (const [id, child] of attachments) if (child.props.label != null) announced.labels.set(id, child.props.label);
101
+ setOrder(announced.home, itemIds);
102
+ }, [
103
+ announced,
104
+ attachments,
105
+ itemIds
106
+ ]);
107
+ const accessibility = useMemo(() => ({
108
+ screenReaderInstructions: dragInstructions(messages),
109
+ announcements: createDragAnnouncements(attachmentAnnouncementSource(announced), messages)
110
+ }), [announced, messages]);
111
+ const horizontal = axis === "x";
112
+ const displayIds = activeId !== null ? draftIds : itemIds;
113
+ const home = activeId === null || draftIds.indexOf(activeId) === itemIds.indexOf(activeId);
114
+ const orderedChildren = useMemo(() => displayIds.flatMap((id) => {
115
+ const child = attachments.get(id);
116
+ return child ? [child] : [];
117
+ }), [attachments, displayIds]);
118
+ const listClassName = horizontal ? "contents" : "flex w-full min-w-0 flex-wrap content-start items-start gap-2 py-1.5";
119
+ const handleDragStart = useCallback(({ active }) => {
120
+ const id = String(active.id);
121
+ lastReorderPointerRef.current = null;
122
+ const nextDraft = [...itemIds];
123
+ draftIdsRef.current = nextDraft;
124
+ setOrder(announced.draft, nextDraft);
125
+ setDraftIds(nextDraft);
126
+ if (!horizontal && listRef.current) setListMinHeight(listRef.current.getBoundingClientRect().height);
127
+ setActiveId(id);
128
+ setOverlay(attachments.get(id)?.props.children ?? null);
129
+ }, [
130
+ announced,
131
+ attachments,
132
+ horizontal,
133
+ itemIds
134
+ ]);
135
+ const handleDragOver = useCallback(({ active, over, activatorEvent, delta }) => {
136
+ if (!over || active.id === over.id) return;
137
+ const next = reorderItems(draftIdsRef.current, active.id, over.id);
138
+ if (!next) return;
139
+ const pointer = pointerFromDragEvent({
140
+ activatorEvent,
141
+ delta
142
+ });
143
+ if (pointer && lastReorderPointerRef.current && samePointer(pointer, lastReorderPointerRef.current)) return;
144
+ if (pointer) lastReorderPointerRef.current = pointer;
145
+ draftIdsRef.current = next;
146
+ setOrder(announced.draft, next);
147
+ setDraftIds(next);
148
+ }, [announced]);
149
+ const clearDrag = useCallback(() => {
150
+ lastReorderPointerRef.current = null;
151
+ draftIdsRef.current = [];
152
+ setActiveId(null);
153
+ setDraftIds([]);
154
+ setOverlay(null);
155
+ setListMinHeight(void 0);
156
+ }, []);
157
+ const handleDragCancel = useCallback(() => {
158
+ clearDrag();
159
+ }, [clearDrag]);
160
+ const handleDragEnd = useCallback(() => {
161
+ onReorder(draftIdsRef.current);
162
+ clearDrag();
163
+ }, [clearDrag, onReorder]);
164
+ return /* @__PURE__ */ jsxs(DndContext, {
165
+ id: dndContextId,
166
+ accessibility,
167
+ sensors,
168
+ collisionDetection: sortableCollisionDetection,
169
+ autoScroll: false,
170
+ onDragStart: handleDragStart,
171
+ onDragOver: handleDragOver,
172
+ onDragCancel: handleDragCancel,
173
+ onDragEnd: handleDragEnd,
174
+ children: [/* @__PURE__ */ jsx("div", {
175
+ ref: listRef,
176
+ "data-slot": "sortable-composer-attachments-list",
177
+ className: listClassName,
178
+ style: listMinHeight != null ? { minHeight: listMinHeight } : void 0,
179
+ children: /* @__PURE__ */ jsx(SortableContext, {
180
+ items: displayIds,
181
+ strategy,
182
+ children: /* @__PURE__ */ jsx(SortableAttachmentsHomeContext, {
183
+ value: home,
184
+ children: orderedChildren
185
+ })
186
+ })
187
+ }), /* @__PURE__ */ jsx(DragLift, {
188
+ className: "rounded-control",
189
+ container: liftContainer,
190
+ children: activeId && overlay ? overlay : null
191
+ })]
192
+ });
193
+ }
194
+ /** Wrap / flex-pack attachment reorder (mixed widths). */
195
+ function SortableComposerAttachments(props) {
196
+ return /* @__PURE__ */ jsx(SortableComposerAttachmentsRoot, {
197
+ ...props,
198
+ axis: "xy",
199
+ strategy: liveReorderStrategy
200
+ });
201
+ }
202
+ /** Horizontal scroll strip reorder — wraps `ComposerAttachmentsScrollArea`. */
203
+ function SortableComposerAttachmentsScroll(props) {
204
+ return /* @__PURE__ */ jsx(ComposerAttachmentsScrollArea, { children: /* @__PURE__ */ jsx(SortableComposerAttachmentsRoot, {
205
+ ...props,
206
+ axis: "x",
207
+ strategy: horizontalListSortingStrategy
208
+ }) });
209
+ }
210
+ /**
211
+ * The lifted attachment's own slot stays in the flex flow: at 40% while it is
212
+ * still home, the dashed place once it stands anywhere else. DragLift holds
213
+ * the copy that follows the hand; the root reads these `children` for it.
214
+ * Live draft reorder moves this slot to the drop index; wrap skips strategy
215
+ * transforms so siblings FLIP via layout instead of wrong gaps.
216
+ */
217
+ function SortableComposerAttachment({ id, label, children }) {
218
+ const home = use(SortableAttachmentsHomeContext);
219
+ const siblingTransition = useDragSiblingTransition();
220
+ const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
221
+ id,
222
+ animateLayoutChanges: defaultAnimateLayoutChanges,
223
+ transition: siblingTransition
224
+ });
225
+ const { role: _sortableRole, tabIndex: _sortableTabIndex, ...sortableAttributes } = attributes;
226
+ const style = {
227
+ transform: isDragging ? void 0 : CSS.Translate.toString(transform),
228
+ transition: isDragging ? void 0 : transition,
229
+ zIndex: isDragging ? 0 : void 0
230
+ };
231
+ const place = isDragging && !home;
232
+ return /* @__PURE__ */ jsxs("div", {
233
+ ref: setNodeRef,
234
+ "aria-label": `Reorder ${label}`,
235
+ className: "relative w-max max-w-full shrink-0 cursor-grab touch-manipulation select-none [-webkit-touch-callout:none] active:cursor-grabbing data-drop-place:[&>:not([data-slot=drop-placeholder])]:invisible",
236
+ "data-dragging": isDragging ? "true" : void 0,
237
+ "data-drag-origin": isDragging && home ? "" : void 0,
238
+ "data-drop-place": place ? "" : void 0,
239
+ "data-slot": "sortable-composer-attachment",
240
+ style,
241
+ ...sortableAttributes,
242
+ ...listeners,
243
+ children: [children, place ? /* @__PURE__ */ jsx(DropPlaceholder, { className: "absolute inset-0" }) : null]
244
+ });
245
+ }
246
+ //#endregion
247
+ export { SortableComposerAttachment, SortableComposerAttachments, SortableComposerAttachmentsScroll };