@crewlethq/ui 0.81.1 → 0.82.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 (389) hide show
  1. package/README.md +61 -4
  2. package/dist/Accordion/index.js +3 -3
  3. package/dist/ActionCard/ActionCard.d.ts +49 -0
  4. package/dist/ActionCard/index.d.ts +4 -0
  5. package/dist/ActionCard/index.js +2 -0
  6. package/dist/ActionCard-47WSZ2O5.css +110 -0
  7. package/dist/ActivityLine/ActivityLine.d.ts +27 -0
  8. package/dist/ActivityLine/index.d.ts +4 -0
  9. package/dist/ActivityLine/index.js +4 -0
  10. package/dist/ActivityLine-AMSERTOB.css +74 -0
  11. package/dist/AgentHandoffPanel/index.js +15 -15
  12. package/dist/AppShell/AccountRow.d.ts +14 -1
  13. package/dist/AppShell/AppShell.d.ts +53 -4
  14. package/dist/AppShell/ResizeHandle.d.ts +1 -1
  15. package/dist/AppShell/index.d.ts +1 -1
  16. package/dist/AppShell/index.js +8 -5
  17. package/dist/AppShell/railShape.d.ts +17 -0
  18. package/dist/{AppShell-2IBUS4TH.css → AppShell-F7RID4P4.css} +150 -0
  19. package/dist/ArrangeFrame/index.js +2 -2
  20. package/dist/ArrangeGroup/index.js +2 -2
  21. package/dist/ArrangeList/index.js +6 -6
  22. package/dist/ArtifactBar/index.js +11 -11
  23. package/dist/ArtifactCard/index.js +13 -13
  24. package/dist/ArtifactCover/index.js +3 -3
  25. package/dist/ArtifactKindIllustration/index.js +1 -1
  26. package/dist/ArtifactKinds-3EH4KR3F.css +18 -0
  27. package/dist/ArtifactMakeRow/index.js +1 -1
  28. package/dist/ArtifactNameCell/index.js +1 -1
  29. package/dist/ArtifactPanel/index.js +5 -5
  30. package/dist/AttachmentChip/index.js +2 -2
  31. package/dist/AuthLayout/index.js +5 -4
  32. package/dist/Avatar/Avatar.d.ts +30 -28
  33. package/dist/Avatar/AvatarStack.d.ts +2 -2
  34. package/dist/Avatar/index.d.ts +1 -1
  35. package/dist/Avatar/index.js +2 -2
  36. package/dist/{Avatar-VJSJGFRG.css → Avatar-MNE3WBZO.css} +56 -54
  37. package/dist/AvatarPicker/index.js +12 -12
  38. package/dist/{AvatarStack-7I3P7LCK.css → AvatarStack-KEHD3GWY.css} +16 -4
  39. package/dist/BrandLockup/BrandLockup.d.ts +6 -0
  40. package/dist/BrandLockup/index.js +2 -1
  41. package/dist/BriefCard/BriefCard.d.ts +23 -1
  42. package/dist/BriefCard/index.d.ts +2 -2
  43. package/dist/BriefCard/index.js +7 -7
  44. package/dist/{BriefCard-VKTH3BSW.css → BriefCard-QCL7MVUV.css} +26 -0
  45. package/dist/Canvas/index.js +6 -6
  46. package/dist/CanvasBoard/index.js +9 -9
  47. package/dist/CanvasToolbar/index.js +8 -8
  48. package/dist/Card/index.js +2 -2
  49. package/dist/ChangeList/index.js +5 -5
  50. package/dist/ChangeMark/index.js +4 -4
  51. package/dist/CharacterPicker/index.js +2 -2
  52. package/dist/ChatDay/ChatDay.d.ts +53 -0
  53. package/dist/ChatDay/index.d.ts +5 -0
  54. package/dist/ChatDay/index.js +3 -0
  55. package/dist/ChatDay-E3FF5HWF.css +116 -0
  56. package/dist/ChatDivider/ChatDivider.d.ts +31 -0
  57. package/dist/ChatDivider/index.d.ts +4 -0
  58. package/dist/ChatDivider/index.js +2 -0
  59. package/dist/ChatDivider-7ZNDL2PZ.css +76 -0
  60. package/dist/ChatMessage/ChatMessage.d.ts +111 -0
  61. package/dist/ChatMessage/index.d.ts +4 -0
  62. package/dist/ChatMessage/index.js +5 -0
  63. package/dist/ChatMessage-FH7VRVCH.css +304 -0
  64. package/dist/ChatScale-L4SIHSKL.css +42 -0
  65. package/dist/ChatThread/ChatThread.d.ts +33 -4
  66. package/dist/ChatThread/index.d.ts +1 -1
  67. package/dist/ChatThread/index.js +1 -1
  68. package/dist/{ChatThread-2KO3FZKQ.css → ChatThread-HAECJMP6.css} +17 -0
  69. package/dist/CheckGrid/index.js +6 -6
  70. package/dist/Checkbox/index.js +5 -5
  71. package/dist/ChipField/ChipField.d.ts +82 -0
  72. package/dist/ChipField/index.d.ts +4 -0
  73. package/dist/ChipField/index.js +9 -0
  74. package/dist/ChipField-D4CW6XFA.css +108 -0
  75. package/dist/ColorField/index.js +5 -5
  76. package/dist/Combobox/index.js +7 -7
  77. package/dist/CommandPalette/index.js +11 -11
  78. package/dist/CommentThread/index.js +14 -14
  79. package/dist/CompactNav/CompactNav.d.ts +175 -0
  80. package/dist/CompactNav/index.d.ts +4 -0
  81. package/dist/CompactNav/index.js +8 -0
  82. package/dist/CompactNav-CU2AQXBC.css +322 -0
  83. package/dist/Composer/Composer.d.ts +26 -2
  84. package/dist/Composer/index.d.ts +2 -1
  85. package/dist/Composer/index.js +7 -7
  86. package/dist/{Composer-HQIMTMRC.css → Composer-ZEGHEAFE.css} +71 -0
  87. package/dist/ConfirmField/index.js +5 -5
  88. package/dist/ContrastBadge/index.js +2 -2
  89. package/dist/ContrastHelp/index.js +6 -6
  90. package/dist/Count/Count.d.ts +24 -6
  91. package/dist/Count/index.d.ts +1 -1
  92. package/dist/Count/index.js +1 -1
  93. package/dist/{Count-ZJ6ID4ZU.css → Count-2HXBBYPO.css} +19 -0
  94. package/dist/DataGrid/index.js +8 -8
  95. package/dist/DataTable/index.js +10 -10
  96. package/dist/DataView/index.js +17 -17
  97. package/dist/DatasetSource/index.js +3 -3
  98. package/dist/DateTimePicker/index.js +5 -5
  99. package/dist/DeepWorkCard/index.js +10 -10
  100. package/dist/Disclosure/index.js +3 -3
  101. package/dist/DocTabsEditor/index.js +8 -8
  102. package/dist/Document/index.js +2 -2
  103. package/dist/EditingStatus/index.js +2 -2
  104. package/dist/{Editor-BXOWAV46.js → Editor-7EQWP3RN.js} +8 -8
  105. package/dist/EmojiPicker/EmojiPicker.d.ts +51 -0
  106. package/dist/EmojiPicker/emoji.d.ts +24 -0
  107. package/dist/EmojiPicker/index.d.ts +5 -0
  108. package/dist/EmojiPicker/index.js +13 -0
  109. package/dist/EmojiPicker-FMWYN2WX.css +63 -0
  110. package/dist/EntityChip/index.js +3 -3
  111. package/dist/EntityList/index.js +6 -6
  112. package/dist/FactList/index.js +4 -4
  113. package/dist/FolderTile/index.js +3 -3
  114. package/dist/FollowBanner/index.js +4 -4
  115. package/dist/HuePicker/index.js +8 -8
  116. package/dist/ImageUpload/ImageUpload.d.ts +6 -7
  117. package/dist/ImageUpload/index.js +3 -3
  118. package/dist/{ImageUpload-OWI7CCG7.css → ImageUpload-IFXZROFZ.css} +6 -37
  119. package/dist/InlineEditor/index.js +7 -7
  120. package/dist/Input/index.js +4 -4
  121. package/dist/Kbd/Kbd.d.ts +9 -0
  122. package/dist/Kbd/index.d.ts +1 -1
  123. package/dist/Kbd/index.js +1 -1
  124. package/dist/Layer/index.js +2 -2
  125. package/dist/LinkCard/LinkCard.d.ts +64 -0
  126. package/dist/LinkCard/index.d.ts +5 -0
  127. package/dist/LinkCard/index.js +5 -0
  128. package/dist/LinkCard-5I4MYU6I.css +155 -0
  129. package/dist/LinkInterstitial/index.js +6 -6
  130. package/dist/ListInput/index.js +8 -8
  131. package/dist/Listbox/index.js +3 -3
  132. package/dist/LogoSlot/index.js +3 -3
  133. package/dist/MarkdownEditor/format.d.ts +9 -1
  134. package/dist/MarkdownEditor/index.d.ts +2 -2
  135. package/dist/MarkdownEditor/index.js +9 -9
  136. package/dist/MentionChip/MentionChip.d.ts +25 -0
  137. package/dist/MentionChip/index.d.ts +3 -0
  138. package/dist/MentionChip/index.js +2 -0
  139. package/dist/MentionChip-W7MZZVRZ.css +42 -0
  140. package/dist/MentionMenu/MentionMenu.d.ts +82 -0
  141. package/dist/MentionMenu/index.d.ts +4 -0
  142. package/dist/MentionMenu/index.js +3 -0
  143. package/dist/MentionMenu-4NAQ45S4.css +65 -0
  144. package/dist/Menu/index.js +4 -4
  145. package/dist/MergeConflicts/index.js +8 -8
  146. package/dist/MessageActions/MessageActions.d.ts +58 -0
  147. package/dist/MessageActions/index.d.ts +4 -0
  148. package/dist/MessageActions/index.js +16 -0
  149. package/dist/MessageActions-Q4F5UH3S.css +73 -0
  150. package/dist/Modal/Modal.d.ts +12 -0
  151. package/dist/Modal/index.js +5 -5
  152. package/dist/{Modal-FYQYEI3N.css → Modal-GKUOO7PZ.css} +26 -1
  153. package/dist/OpenInAppCard/index.js +7 -7
  154. package/dist/OrgLabel/index.js +3 -3
  155. package/dist/OrgNode/index.js +4 -4
  156. package/dist/OrgTable/index.js +7 -7
  157. package/dist/PeekRail/index.js +1 -1
  158. package/dist/PeopleRail/index.js +4 -4
  159. package/dist/PersonRow/PersonRow.d.ts +70 -0
  160. package/dist/PersonRow/index.d.ts +3 -0
  161. package/dist/PersonRow/index.js +2 -0
  162. package/dist/PersonRow-V5GTPNVP.css +161 -0
  163. package/dist/Popover/index.js +3 -3
  164. package/dist/PresenceStack/index.js +3 -3
  165. package/dist/{PresenceStack-ZV67BH4V.css → PresenceStack-2DTYRADY.css} +4 -6
  166. package/dist/PresenterView/index.js +5 -5
  167. package/dist/PricingCard/index.js +2 -2
  168. package/dist/Principal/index.js +3 -3
  169. package/dist/PrincipalPicker/index.js +11 -11
  170. package/dist/ProposalCard/index.js +15 -15
  171. package/dist/ReactionBar/ReactionBar.d.ts +84 -0
  172. package/dist/ReactionBar/index.d.ts +4 -0
  173. package/dist/ReactionBar/index.js +15 -0
  174. package/dist/ReactionBar-XXI4V7XG.css +93 -0
  175. package/dist/RecordChip/index.js +4 -4
  176. package/dist/RefusalCard/index.js +6 -6
  177. package/dist/RelatedRow/index.js +3 -3
  178. package/dist/ResultTableCard/index.js +7 -7
  179. package/dist/ReviewList/index.js +2 -2
  180. package/dist/RichEditor/index.js +2 -2
  181. package/dist/RunChip/index.js +5 -5
  182. package/dist/SandboxedFrame/index.js +2 -2
  183. package/dist/SectionFrame/index.js +2 -2
  184. package/dist/SegmentedControl/index.js +7 -7
  185. package/dist/Select/index.js +4 -4
  186. package/dist/SelectionBar/index.js +6 -6
  187. package/dist/SetupWizard/index.js +6 -6
  188. package/dist/ShareDialog/index.js +11 -11
  189. package/dist/SheetColumnEditor/index.js +16 -16
  190. package/dist/SheetGrid/index.js +12 -12
  191. package/dist/Shortcut/index.js +3 -3
  192. package/dist/SidePanel/SidePanel.d.ts +10 -3
  193. package/dist/SidePanel/SidePanelBase.d.ts +3 -1
  194. package/dist/SidePanel/index.js +5 -5
  195. package/dist/{SidePanel-VXKUKLOJ.css → SidePanel-BKWT6Q6Z.css} +36 -0
  196. package/dist/SidebarNav/SidebarNav.d.ts +52 -3
  197. package/dist/SidebarNav/index.js +1 -1
  198. package/dist/{SidebarNav-VTQ3G4AE.css → SidebarNav-E7PZGGA6.css} +132 -7
  199. package/dist/Skeleton/index.js +1 -1
  200. package/dist/{Skeleton-7ZA5ETJM.css → Skeleton-GIXV3KK5.css} +3 -1
  201. package/dist/SlideCompare/index.js +5 -5
  202. package/dist/SlideFilmstrip/index.js +8 -8
  203. package/dist/SlideGrid/index.js +4 -4
  204. package/dist/SlideStage/index.js +3 -3
  205. package/dist/SourceEditor/index.js +2 -2
  206. package/dist/StatusCard/index.js +5 -5
  207. package/dist/Switcher/index.js +12 -12
  208. package/dist/TableCells/index.js +5 -5
  209. package/dist/Tabs/index.js +6 -6
  210. package/dist/Tag/Tag.d.ts +9 -2
  211. package/dist/Tag/index.js +1 -1
  212. package/dist/{Tag-JTJVZM2D.css → Tag-WLDOROB5.css} +24 -0
  213. package/dist/TagsInput/index.js +6 -6
  214. package/dist/ThemeGallery/index.js +5 -5
  215. package/dist/ThemeSwitcher/index.js +8 -8
  216. package/dist/ThinkingIndicator/ThinkingIndicator.d.ts +1 -1
  217. package/dist/ThinkingIndicator/index.js +1 -1
  218. package/dist/{ThinkingIndicator-JVF52N7L.css → ThinkingIndicator-S7ZL2C77.css} +10 -2
  219. package/dist/ThreadSummary/ThreadSummary.d.ts +43 -0
  220. package/dist/ThreadSummary/index.d.ts +4 -0
  221. package/dist/ThreadSummary/index.js +6 -0
  222. package/dist/ThreadSummary-AGR4NDMD.css +90 -0
  223. package/dist/TimeRangePicker/index.js +12 -12
  224. package/dist/TimeWindowPicker/index.js +10 -10
  225. package/dist/Toaster/index.js +2 -2
  226. package/dist/Toolbar/index.js +3 -3
  227. package/dist/Tooltip/Tooltip.d.ts +30 -3
  228. package/dist/Tooltip/index.js +3 -3
  229. package/dist/TreeCanvas/index.js +7 -7
  230. package/dist/TreeGrid/index.js +3 -3
  231. package/dist/ValueField/index.js +9 -9
  232. package/dist/VersionCompare/index.js +9 -9
  233. package/dist/VersionTimeline/index.js +4 -4
  234. package/dist/WidgetFrame/index.js +2 -2
  235. package/dist/{chunk-WCDPFTJZ.js → chunk-25JQNHTC.js} +92 -28
  236. package/dist/{chunk-ZKLEAK7M.js → chunk-2H6YDUR5.js} +7 -7
  237. package/dist/{chunk-7FF6CZW5.js → chunk-2KJCUCVE.js} +36 -8
  238. package/dist/{chunk-6LXS3X7A.js → chunk-2L4WHYMT.js} +1 -1
  239. package/dist/{chunk-6G6WHTC7.js → chunk-2O5CMV76.js} +1 -1
  240. package/dist/chunk-2TOGGCDM.js +50 -0
  241. package/dist/{chunk-7PJFUQMY.js → chunk-2ZSCHQOA.js} +1 -1
  242. package/dist/chunk-3BRXEMYT.js +46 -0
  243. package/dist/{chunk-H22SR76M.js → chunk-3H6OZUZ3.js} +1 -1
  244. package/dist/{chunk-VK45YJLH.js → chunk-3IWZVEXA.js} +2 -2
  245. package/dist/{chunk-I33UIUZD.js → chunk-3QQIGMY3.js} +49 -14
  246. package/dist/{chunk-NUZHC6MM.js → chunk-4ITETIGZ.js} +12 -1
  247. package/dist/{chunk-FQI62PIZ.js → chunk-4RYELYWG.js} +2 -2
  248. package/dist/{chunk-LCZULGMB.js → chunk-57BFL323.js} +2 -2
  249. package/dist/{chunk-73GUXYYE.js → chunk-5AHNW5CP.js} +1 -1
  250. package/dist/{chunk-FFGEJUAP.js → chunk-5ILRWUE7.js} +2 -2
  251. package/dist/{chunk-S5QJZOPL.js → chunk-5K5SZGBI.js} +1 -1
  252. package/dist/{chunk-LM6VYJTV.js → chunk-5YXMKZUA.js} +1 -1
  253. package/dist/{chunk-5XBNJNSO.js → chunk-65RFU7LF.js} +1 -1
  254. package/dist/{chunk-WKKWF277.js → chunk-6IOQWMYJ.js} +2 -2
  255. package/dist/{chunk-7MGXHCVK.js → chunk-6M2N6ETA.js} +1 -1
  256. package/dist/{chunk-OWHETZIU.js → chunk-6SFDL4QH.js} +1 -1
  257. package/dist/{chunk-JD7P2GJP.js → chunk-6YBBQAEM.js} +1 -1
  258. package/dist/{chunk-WK4FQPYW.js → chunk-77VOASOY.js} +5 -5
  259. package/dist/{chunk-UYF2B2TH.js → chunk-7ELFH3RJ.js} +1 -1
  260. package/dist/{chunk-CYYBE2MM.js → chunk-7U6PK242.js} +1 -1
  261. package/dist/{chunk-VG3SIJ3M.js → chunk-AFLS26AC.js} +2 -2
  262. package/dist/{chunk-JQEXAH7G.js → chunk-AMUXSJ2A.js} +2 -2
  263. package/dist/{chunk-4XF7ENQA.js → chunk-AOJ6ZA77.js} +2 -2
  264. package/dist/{chunk-TJIBTHWJ.js → chunk-B3X4DHRB.js} +2 -2
  265. package/dist/{chunk-BFM5G2Z6.js → chunk-BSAU7QRW.js} +1 -1
  266. package/dist/chunk-C4256UXE.js +21 -0
  267. package/dist/{chunk-4MRFLHJC.js → chunk-C46DDVTK.js} +1 -1
  268. package/dist/{chunk-5EFLA6BW.js → chunk-C75WZMXG.js} +2 -2
  269. package/dist/{chunk-YB64PWIN.js → chunk-C7UHDM7Y.js} +1 -1
  270. package/dist/{chunk-5BOFC5OP.js → chunk-CF4M6N6A.js} +20 -4
  271. package/dist/{chunk-ANTAQAR4.js → chunk-CMAZZY2I.js} +7 -1
  272. package/dist/{chunk-MLDTLZAO.js → chunk-D2GT3CR4.js} +3 -3
  273. package/dist/{chunk-57AKYFML.js → chunk-DD7RBNT4.js} +3 -3
  274. package/dist/{chunk-MUFBHVCT.js → chunk-DWQYV5AV.js} +2 -2
  275. package/dist/{chunk-CNEHFH2A.js → chunk-EAHEJNVJ.js} +1 -1
  276. package/dist/chunk-EALRMP7N.js +69 -0
  277. package/dist/{chunk-E35HYQMK.js → chunk-EBVZHVPD.js} +12 -5
  278. package/dist/{chunk-M73MMEZY.js → chunk-ED4A6Q24.js} +1 -1
  279. package/dist/{chunk-6LN64KGG.js → chunk-F7HZYTZT.js} +6 -3
  280. package/dist/{chunk-YQDRJZ5J.js → chunk-FKAJBN6G.js} +8 -8
  281. package/dist/{chunk-RTMNULTL.js → chunk-FLW5U7YS.js} +2 -2
  282. package/dist/{chunk-JMTBK55P.js → chunk-FVZPSTL2.js} +1 -1
  283. package/dist/{chunk-GHQG4VZA.js → chunk-G3CACE5L.js} +3 -3
  284. package/dist/{chunk-SNIPM6K7.js → chunk-G6ZFSUIH.js} +3 -3
  285. package/dist/chunk-GP5TNTZH.js +386 -0
  286. package/dist/{chunk-7KBNFFM3.js → chunk-GVPUCEWH.js} +6 -3
  287. package/dist/{chunk-6R334YT3.js → chunk-GZVAZ3LL.js} +2 -2
  288. package/dist/{chunk-KL6A7JGH.js → chunk-HA2PL7PA.js} +2 -2
  289. package/dist/{chunk-2IIHMJMZ.js → chunk-HCUECVZ3.js} +2 -2
  290. package/dist/{chunk-N2BF272H.js → chunk-HF5L56YQ.js} +1 -1
  291. package/dist/{chunk-Q2T4L6ML.js → chunk-HFOTRZFU.js} +4 -4
  292. package/dist/{chunk-2STOSJT3.js → chunk-HQFOZJQ4.js} +7 -7
  293. package/dist/chunk-HTBTAIH6.js +37 -0
  294. package/dist/{chunk-BRLZXYPA.js → chunk-I4IUX3JF.js} +1 -1
  295. package/dist/{chunk-BXCL6P5Z.js → chunk-I4PBFJGX.js} +1 -1
  296. package/dist/{chunk-ADGNISEI.js → chunk-IAP7APOX.js} +5 -5
  297. package/dist/{chunk-BT3GB7HC.js → chunk-IRONPJB4.js} +3 -3
  298. package/dist/chunk-ISQANI6Q.js +9 -0
  299. package/dist/chunk-IUBOLGHG.js +140 -0
  300. package/dist/{chunk-O222F2IX.js → chunk-IUWP2LSE.js} +6 -6
  301. package/dist/{chunk-3JXX5S3Z.js → chunk-IYI6HWKN.js} +3 -3
  302. package/dist/{chunk-R5OATXWU.js → chunk-JHQGNFN3.js} +36 -13
  303. package/dist/{chunk-CSXJIIO4.js → chunk-JV6JM6W6.js} +1 -1
  304. package/dist/{chunk-ZQEJSEPS.js → chunk-K6Y6CDEZ.js} +2 -2
  305. package/dist/chunk-K774LUN3.js +20 -0
  306. package/dist/{chunk-LOWQK2PB.js → chunk-KJR5X4II.js} +4 -4
  307. package/dist/{chunk-45M73G5A.js → chunk-KLAVEJIO.js} +4 -4
  308. package/dist/{chunk-53J2YNQA.js → chunk-L5VU3LZT.js} +1 -1
  309. package/dist/{chunk-VERJCAJ4.js → chunk-LBGKLYBY.js} +1 -1
  310. package/dist/{chunk-PRN5IP2R.js → chunk-LMEMH6DO.js} +1 -1
  311. package/dist/{chunk-I22MUEG7.js → chunk-LNQSNXGJ.js} +1 -1
  312. package/dist/chunk-LQRN2XZK.js +87 -0
  313. package/dist/{chunk-HEA6TERQ.js → chunk-LSOR77RZ.js} +1 -1
  314. package/dist/{chunk-222VILSP.js → chunk-LVJGN5II.js} +1 -1
  315. package/dist/{chunk-AYHIF6DH.js → chunk-LZNPL266.js} +1 -1
  316. package/dist/{chunk-R45VM5EX.js → chunk-MMV7NEAC.js} +1 -1
  317. package/dist/chunk-MPYRC3GO.js +244 -0
  318. package/dist/{chunk-37U3Z65B.js → chunk-MVMVMHYI.js} +1 -1
  319. package/dist/{chunk-MP7DGKB6.js → chunk-N2T7Y5KR.js} +2 -2
  320. package/dist/{chunk-NKBKQEKS.js → chunk-NFXCJGHG.js} +1 -1
  321. package/dist/{chunk-OZAZHM55.js → chunk-NKBKHOMU.js} +1 -1
  322. package/dist/{chunk-MGQKF7GK.js → chunk-NN475NAP.js} +1 -1
  323. package/dist/{chunk-6EWNMSS4.js → chunk-NNZRTR5M.js} +2 -2
  324. package/dist/{chunk-JT7WRPZ6.js → chunk-NTRKC2JV.js} +1 -1
  325. package/dist/{chunk-63GBSOLU.js → chunk-NXBCAXP5.js} +2 -2
  326. package/dist/{chunk-NR4CPM4T.js → chunk-NXFTCPF6.js} +1 -1
  327. package/dist/chunk-O3MYBNRO.js +80 -0
  328. package/dist/{chunk-RMEBFYL7.js → chunk-O6EV6GKI.js} +1 -1
  329. package/dist/{chunk-YL7AR6PR.js → chunk-O7KG4CXB.js} +3 -3
  330. package/dist/{chunk-FB3TCNQP.js → chunk-O7N6W52M.js} +3 -3
  331. package/dist/{chunk-2FMBZCFR.js → chunk-OAHRMR4U.js} +1 -1
  332. package/dist/chunk-ONHYFU7D.js +25 -0
  333. package/dist/{chunk-Z2MZTI3H.js → chunk-ONNXUS5Y.js} +1 -1
  334. package/dist/{chunk-T24HBEU6.js → chunk-OOOVL77Y.js} +1 -1
  335. package/dist/{chunk-CZQ7UITX.js → chunk-P6F3PE4V.js} +3 -3
  336. package/dist/{chunk-BLGBD2D2.js → chunk-P7HMY3BQ.js} +4 -4
  337. package/dist/{chunk-TPIMOGOZ.js → chunk-PEBQMX5X.js} +1 -1
  338. package/dist/{chunk-4TMBAOXK.js → chunk-PW57R4BN.js} +1 -1
  339. package/dist/chunk-PX5BOALQ.js +13 -0
  340. package/dist/{chunk-HQOEAUDJ.js → chunk-PXLS6JKL.js} +2 -2
  341. package/dist/{chunk-CFTBESST.js → chunk-Q6TCUSQA.js} +2 -2
  342. package/dist/{chunk-ZWXHTXZO.js → chunk-QGEDXYLB.js} +2 -2
  343. package/dist/{chunk-WTXCK46H.js → chunk-R2QBQ6NO.js} +1 -1
  344. package/dist/{chunk-OBPINJNO.js → chunk-SEKO6P3Y.js} +3 -3
  345. package/dist/{chunk-CLJGFOTV.js → chunk-SKGOKLJD.js} +31 -18
  346. package/dist/{chunk-KHJIEPZV.js → chunk-SM4P2SHB.js} +2 -2
  347. package/dist/{chunk-B2YSFWUG.js → chunk-SYVQXMLO.js} +9 -9
  348. package/dist/{chunk-UY3FWQWG.js → chunk-T4IEESXN.js} +128 -12
  349. package/dist/{chunk-TPCBPGSB.js → chunk-T7WESRZF.js} +3 -3
  350. package/dist/chunk-TDFLCUBE.js +6 -0
  351. package/dist/{chunk-Z6JKZI4E.js → chunk-TGCGLKD4.js} +1 -1
  352. package/dist/chunk-TRXTO3WC.js +114 -0
  353. package/dist/{chunk-H5XTJ7GJ.js → chunk-TUEM2XIW.js} +1 -1
  354. package/dist/{chunk-4AUTALJA.js → chunk-U2IQNDDR.js} +1 -1
  355. package/dist/{chunk-IVTQWOXV.js → chunk-ULYHDP7U.js} +1 -1
  356. package/dist/{chunk-DGSK4LLS.js → chunk-V6WDJUYK.js} +1 -1
  357. package/dist/{chunk-5CEQ3HLH.js → chunk-VGOWSOUA.js} +6 -6
  358. package/dist/{chunk-TKUAGWNR.js → chunk-WT3B76MG.js} +1 -1
  359. package/dist/{chunk-D7G2QGET.js → chunk-X3US25XJ.js} +1 -1
  360. package/dist/{chunk-GPFYITOF.js → chunk-X7VZQKIW.js} +1 -1
  361. package/dist/{chunk-L4HHWG4V.js → chunk-XA2QKGBJ.js} +3 -3
  362. package/dist/{chunk-HPI5J6AR.js → chunk-XGLMPPDW.js} +2 -2
  363. package/dist/{chunk-DV5L2GRY.js → chunk-XJMES7AE.js} +1 -1
  364. package/dist/{chunk-5NJMSYDZ.js → chunk-XNC3M4IN.js} +1 -1
  365. package/dist/{chunk-C667GCU7.js → chunk-XXDB6KPV.js} +6 -3
  366. package/dist/{chunk-EAIOXW2W.js → chunk-XY4O2XMR.js} +8 -14
  367. package/dist/{chunk-KTIQSSME.js → chunk-XZY6S3UC.js} +6 -3
  368. package/dist/{chunk-7KHM2FZH.js → chunk-YGRTX67J.js} +1 -1
  369. package/dist/{chunk-RIAPCEB5.js → chunk-YM77TZ7Q.js} +5 -5
  370. package/dist/{chunk-OQG4P5KU.js → chunk-YOJAGKTS.js} +2 -2
  371. package/dist/chunk-YP2FS6SH.js +54 -0
  372. package/dist/{chunk-LMQG3VPG.js → chunk-YQ7Q52XU.js} +1 -1
  373. package/dist/{chunk-G4CGDUCP.js → chunk-YRNNUCQP.js} +1 -1
  374. package/dist/{chunk-NHLNHH4J.js → chunk-ZB3E2Z4Y.js} +1 -1
  375. package/dist/{chunk-IL3XLDW7.js → chunk-ZDWAIVWL.js} +1 -1
  376. package/dist/{chunk-2PIH6JHJ.js → chunk-ZXTDWTXS.js} +1 -1
  377. package/dist/generated/index.d.ts +15 -0
  378. package/dist/generated/index.js +181 -164
  379. package/dist/index.js +181 -164
  380. package/dist/styles.css +2566 -138
  381. package/dist/utils/focusModality.d.ts +14 -0
  382. package/dist/utils/heldHint.d.ts +6 -0
  383. package/dist/utils/index.d.ts +1 -1
  384. package/dist/utils/index.js +1 -1
  385. package/package.json +3 -3
  386. package/dist/ArtifactKinds-O3CALPVX.css +0 -16
  387. package/dist/{chunk-PLNJEDGI.js → chunk-I4IO56EY.js} +1 -1
  388. package/dist/{chunk-CDFQ7MQK.js → chunk-KLWWNV25.js} +0 -0
  389. package/dist/{chunk-624X3RVA.js → chunk-O55JQ7BE.js} +1 -1
@@ -0,0 +1,82 @@
1
+ import type { ReactNode, Ref } from 'react';
2
+ /** One thing a composer can mention: a person, an agent, a room, or everyone. */
3
+ export interface MentionOption {
4
+ id: string;
5
+ /** What is inserted when it is taken: "@pm", "#engineering". */
6
+ insert: string;
7
+ /** Its name in the list. */
8
+ label: string;
9
+ /** A second piece of identity after the name: a title, a handle, a room's topic. */
10
+ detail?: string | undefined;
11
+ /** A face (an `Avatar` with its status) or a glyph (a room's, `@channel`'s). */
12
+ mark?: ReactNode;
13
+ /** A trailing word: "Working", "Needs you", "Not in this room". */
14
+ note?: ReactNode;
15
+ }
16
+ /** The words the menu draws, for a host that sets its own. */
17
+ export interface MentionMenuLabels {
18
+ /** The keyboard hints at the foot. A touch screen has no keys, so the foot is hidden there. */
19
+ hints: readonly string[];
20
+ }
21
+ export declare const MENTION_MENU_LABELS: MentionMenuLabels;
22
+ export interface MentionMenuProps {
23
+ /**
24
+ * The listbox's id. Each option's id is `${id}-${index}`, which is what the
25
+ * field points at with `aria-activedescendant`. With `useListbox`, pass the
26
+ * hook's `listId`, and its `optionId(index)` names the same rows.
27
+ */
28
+ id: string;
29
+ /** What the list offers, as its heading and its name: "People and agents", "Rooms". */
30
+ label: string;
31
+ options: readonly MentionOption[];
32
+ /** The highlighted option's index. */
33
+ active: number;
34
+ /** Taking an option, on a press (the press's default is prevented, so the field keeps focus). */
35
+ onPick: (option: MentionOption, index: number) => void;
36
+ /** The pointer moved onto an option. */
37
+ onHover: (index: number) => void;
38
+ /**
39
+ * The list element: `useListbox`'s `listRef`, so the highlighted row is kept
40
+ * in view as the arrows move and a press outside the list closes it.
41
+ */
42
+ listRef?: Ref<HTMLUListElement> | undefined;
43
+ /** The foot. Left out, it carries the keyboard hints; `null` draws none. */
44
+ footer?: ReactNode;
45
+ labels?: Partial<MentionMenuLabels> | undefined;
46
+ className?: string | undefined;
47
+ }
48
+ /**
49
+ * The suggestions a composer opens on "@" or "#": people and agents with
50
+ * their faces and what they are doing, rooms with their glyphs, and everyone
51
+ * in the room.
52
+ *
53
+ * A LISTBOX THE FIELD OWNS. Focus stays in the message box, which points at
54
+ * the highlighted row with `aria-activedescendant`, so typing goes on while
55
+ * the list narrows. `useListbox` gives the keys (the arrows wrap, Enter and
56
+ * Tab take the row, Escape closes the list and nothing else); the host spreads
57
+ * `role="combobox"`, `aria-controls`, `aria-expanded` and
58
+ * `aria-activedescendant` on its field, and finds the word being typed with
59
+ * `mentionQuery`.
60
+ *
61
+ * DRAWN ABOVE THE COMPOSER, never over what is being typed: it is placed
62
+ * against the nearest positioned box round the field, as wide as the field
63
+ * and no wider than a list is read (`--crewlet-mention-menu-width`).
64
+ *
65
+ * ITS ROWS ARE `PersonRow`s, so a face, a name and its detail sit where every
66
+ * other list of people in the product puts them.
67
+ */
68
+ export declare function MentionMenu({ id, label, options, active, onPick, onHover, listRef, footer, labels: overrides, className }: MentionMenuProps): import("react").JSX.Element;
69
+ /** The mention being typed at the caret. */
70
+ export interface MentionQuery {
71
+ trigger: '@' | '#';
72
+ /** The words typed after the trigger, possibly none. */
73
+ query: string;
74
+ /** Where the trigger stands in the text, which is where a taken option is inserted from. */
75
+ start: number;
76
+ }
77
+ /**
78
+ * The "@word" or "#word" that ends at the caret, if the caret is in one. A
79
+ * trigger counts at the start of the text or after whitespace, so an address
80
+ * ("ada@crewlet.com") or a heading mark inside a word opens nothing.
81
+ */
82
+ export declare function mentionQuery(text: string, caret: number): MentionQuery | null;
@@ -0,0 +1,4 @@
1
+ import '../PersonRow/PersonRow.css';
2
+ import './MentionMenu.css';
3
+ export { MENTION_MENU_LABELS, MentionMenu, mentionQuery } from './MentionMenu.js';
4
+ export type { MentionMenuLabels, MentionMenuProps, MentionOption, MentionQuery } from './MentionMenu.js';
@@ -0,0 +1,3 @@
1
+ export { MENTION_MENU_LABELS, MentionMenu, mentionQuery } from '../chunk-3BRXEMYT.js';
2
+ import '../chunk-EALRMP7N.js';
3
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,65 @@
1
+ /*
2
+ * MentionMenu: the suggestions a composer opens on "@" or "#".
3
+ *
4
+ * The popover surface (the fill, hairline, corner and shadow of the emoji
5
+ * picker that opens from the same composer), as wide as the field but no
6
+ * wider than a list a reader scans: on a wide room the trailing word
7
+ * ("Working") stood a screen's width from the name it belongs to; a host
8
+ * moves that cap with `--crewlet-mention-menu-width` on any box round it.
9
+ * It is placed against the nearest positioned box round the field, above
10
+ * it, so it never covers what is being typed.
11
+ */
12
+ .crewlet-mention-menu {
13
+ position: absolute;
14
+ bottom: calc(100% + var(--spacing-1));
15
+ left: 0;
16
+ z-index: var(--z-index-dropdown);
17
+ box-sizing: border-box;
18
+ width: min(100%, var(--crewlet-mention-menu-width, 560px));
19
+ overflow: hidden;
20
+ border: 1px solid var(--color-border-default);
21
+ border-radius: var(--radius-lg);
22
+ background: var(--color-surface-subtle);
23
+ box-shadow: var(--shadow-xl);
24
+ }
25
+
26
+ .crewlet-mention-menu__label {
27
+ padding: var(--spacing-2) var(--spacing-3) var(--spacing-1);
28
+ color: var(--color-text-tertiary);
29
+ font-size: var(--font-size-2xs);
30
+ font-weight: var(--font-weight-regular);
31
+ letter-spacing: var(--font-letter-spacing-wide);
32
+ text-transform: uppercase;
33
+ }
34
+
35
+ .crewlet-mention-menu__list {
36
+ max-height: 264px;
37
+ margin: 0;
38
+ padding: 0 var(--spacing-1) var(--spacing-1);
39
+ overflow-y: auto;
40
+ overscroll-behavior: contain;
41
+ list-style: none;
42
+ }
43
+
44
+ /* The panel's corner less its inset, so each row's curve runs parallel. */
45
+ .crewlet-mention-menu__list > .crewlet-person-row {
46
+ --crewlet-person-row-radius: calc(var(--radius-lg) - var(--spacing-1));
47
+ }
48
+
49
+ .crewlet-mention-menu__footer {
50
+ display: flex;
51
+ flex-wrap: wrap;
52
+ align-items: center;
53
+ gap: var(--spacing-1) var(--spacing-3);
54
+ padding: var(--spacing-2) var(--spacing-3);
55
+ border-top: 1px solid var(--color-border-default);
56
+ color: var(--color-text-tertiary);
57
+ font-size: var(--font-size-xs);
58
+ }
59
+
60
+ /* The foot names keys, and a touch screen has none to press. */
61
+ @media (hover: none) {
62
+ .crewlet-mention-menu__footer {
63
+ display: none;
64
+ }
65
+ }
@@ -1,9 +1,9 @@
1
- export { Menu } from '../chunk-OQG4P5KU.js';
1
+ export { Menu } from '../chunk-YOJAGKTS.js';
2
2
  import '../chunk-DGXZ635L.js';
3
- import '../chunk-OMV5W53A.js';
4
3
  import '../chunk-XSPCITPN.js';
5
- import '../chunk-H5XTJ7GJ.js';
4
+ import '../chunk-OMV5W53A.js';
5
+ import '../chunk-TUEM2XIW.js';
6
+ import '../chunk-4ITETIGZ.js';
6
7
  import '../chunk-UAUP6XGK.js';
7
- import '../chunk-NUZHC6MM.js';
8
8
  import '../chunk-UT6CW3C7.js';
9
9
  import '../chunk-ODEQTPFM.js';
@@ -1,17 +1,17 @@
1
- export { MERGE_CONFLICTS_LABELS, MergeConflicts } from '../chunk-2FMBZCFR.js';
1
+ export { MERGE_CONFLICTS_LABELS, MergeConflicts } from '../chunk-OAHRMR4U.js';
2
2
  import '../chunk-36WK24AI.js';
3
- import '../chunk-6R334YT3.js';
4
- import '../chunk-2IIHMJMZ.js';
3
+ import '../chunk-GZVAZ3LL.js';
4
+ import '../chunk-HCUECVZ3.js';
5
5
  import '../chunk-EGMQURBR.js';
6
6
  import '../chunk-CYQBDZ6M.js';
7
- import '../chunk-MLDTLZAO.js';
8
- import '../chunk-OQG4P5KU.js';
7
+ import '../chunk-YOJAGKTS.js';
9
8
  import '../chunk-DGXZ635L.js';
9
+ import '../chunk-XSPCITPN.js';
10
10
  import '../chunk-OMV5W53A.js';
11
11
  import '../chunk-2YTOOH3A.js';
12
- import '../chunk-XSPCITPN.js';
13
- import '../chunk-H5XTJ7GJ.js';
12
+ import '../chunk-TUEM2XIW.js';
13
+ import '../chunk-4ITETIGZ.js';
14
14
  import '../chunk-UAUP6XGK.js';
15
- import '../chunk-NUZHC6MM.js';
15
+ import '../chunk-D2GT3CR4.js';
16
16
  import '../chunk-UT6CW3C7.js';
17
17
  import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,58 @@
1
+ import { type ButtonHTMLAttributes, type ReactNode } from 'react';
2
+ export interface MessageActionsProps {
3
+ /** Names the toolbar: "Message actions" by default. */
4
+ label?: string | undefined;
5
+ className?: string | undefined;
6
+ /** Quick reactions, `MessageAction`s, a `Menu` and `ActionDivider`s. */
7
+ children: ReactNode;
8
+ }
9
+ /**
10
+ * The toolbar a message shows on hover, keyboard focus or a tap: a few quick
11
+ * reactions, add reaction, reply in a thread, save, and More. Pass it to
12
+ * `ChatMessage`'s `actions`, which places it on the row's first line.
13
+ *
14
+ * A SOFT TRAY OF TOOLS, NOT A FRAMED BAR: the transcript's own ground ringed
15
+ * with the hairline and a small shadow, with the large corner, and 30px tools
16
+ * inside a 4px inset. It is a `Toolbar`, so it is one tab stop that the
17
+ * arrow keys walk.
18
+ */
19
+ export declare function MessageActions({ label, className, children }: MessageActionsProps): import("react").JSX.Element;
20
+ export interface MessageActionProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'aria-label' | 'children'> {
21
+ /** What it does, in words: the button's name and its hint. */
22
+ label: string;
23
+ /** The glyph, at the medium step. */
24
+ icon: ReactNode;
25
+ /** A toggle that is on (Saved): `aria-pressed`. */
26
+ pressed?: boolean | undefined;
27
+ /**
28
+ * Why the reader cannot use it here ("Join the room to react."): the tool
29
+ * is marked unavailable, does nothing when pressed, and adds the reason to
30
+ * its hint.
31
+ */
32
+ disabledReason?: string | undefined;
33
+ }
34
+ /**
35
+ * One tool in the tray: a 30px ghost icon button named by `label`, with the
36
+ * same words as its hint. It spreads what it is given on the button, so it
37
+ * can be a `Menu`'s own trigger (`renderTrigger`), and its hint steps aside
38
+ * while the menu it opens is open.
39
+ */
40
+ export declare const MessageAction: import("react").ForwardRefExoticComponent<MessageActionProps & import("react").RefAttributes<HTMLButtonElement>>;
41
+ export interface QuickReactionProps {
42
+ emoji: string;
43
+ /** The emoji's name, for its button and its hint: "eyes". Read from the picker's names by default. */
44
+ name?: string | undefined;
45
+ onPick: () => void;
46
+ /** The words, given the name: "React with eyes" by default. */
47
+ label?: ((name: string) => string) | undefined;
48
+ /**
49
+ * Why the reader cannot react here ("Join the room to react."), as
50
+ * `ReactionBar` takes it: the emoji is marked unavailable, does not react
51
+ * when pressed, and adds the reason to its hint.
52
+ */
53
+ disabledReason?: string | undefined;
54
+ }
55
+ /** A quick reaction in the tray: the emoji itself is the button. */
56
+ export declare function QuickReaction({ emoji, name, onPick, label, disabledReason }: QuickReactionProps): import("react").JSX.Element;
57
+ /** A hairline between groups of tools, said by nothing. */
58
+ export declare function ActionDivider(): import("react").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import '../ChatMessage/ChatScale.css';
2
+ import './MessageActions.css';
3
+ export { ActionDivider, MessageAction, MessageActions, QuickReaction } from './MessageActions.js';
4
+ export type { MessageActionProps, MessageActionsProps, QuickReactionProps } from './MessageActions.js';
@@ -0,0 +1,16 @@
1
+ export { ActionDivider, MessageAction, MessageActions, QuickReaction } from '../chunk-2TOGGCDM.js';
2
+ import '../chunk-TDFLCUBE.js';
3
+ import '../chunk-MPYRC3GO.js';
4
+ import '../chunk-NXFTCPF6.js';
5
+ import '../chunk-SM4P2SHB.js';
6
+ import '../chunk-3QQIGMY3.js';
7
+ import '../chunk-O7N6W52M.js';
8
+ import '../chunk-PGCLHYVP.js';
9
+ import '../chunk-OMV5W53A.js';
10
+ import '../chunk-TUEM2XIW.js';
11
+ import '../chunk-4ITETIGZ.js';
12
+ import '../chunk-UAUP6XGK.js';
13
+ import '../chunk-PQADV6P6.js';
14
+ import '../chunk-2G355KDJ.js';
15
+ import '../chunk-UT6CW3C7.js';
16
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,73 @@
1
+ /*
2
+ * The tray a message shows on hover: the transcript's own ground ringed with
3
+ * the hairline and a small shadow, the large corner, and 30px tools inside
4
+ * the inset, so it reads as a soft tray of tools rather than a framed bar.
5
+ * Two classes, so the tray's own rules hold over Toolbar's in any bundle
6
+ * order.
7
+ */
8
+ .crewlet-toolbar.crewlet-message-actions {
9
+ flex-wrap: nowrap;
10
+ gap: var(--crewlet-chat-toolbar-inset);
11
+ height: var(--crewlet-chat-toolbar);
12
+ box-sizing: border-box;
13
+ padding: var(--crewlet-chat-toolbar-inset);
14
+ border: 1px solid var(--color-edge-hairline);
15
+ border-radius: var(--radius-lg);
16
+ background: var(--crewlet-chat-ground);
17
+ box-shadow: var(--shadow-xs);
18
+ }
19
+
20
+ /* A tool whose menu or picker is open reads as held down, which is not the
21
+ accent fill a toggle that is on (Saved) draws. */
22
+ .crewlet-message-actions .crewlet-icon-btn[aria-expanded='true'] {
23
+ background: var(--color-surface-pressed);
24
+ color: var(--color-text-primary);
25
+ }
26
+
27
+ .crewlet-message-actions__emoji {
28
+ display: inline-flex;
29
+ flex: none;
30
+ align-items: center;
31
+ justify-content: center;
32
+ width: var(--size-control-md);
33
+ height: var(--size-control-md);
34
+ padding: 0;
35
+ border: 0;
36
+ border-radius: var(--radius-md);
37
+ background: transparent;
38
+ font-size: var(--font-size-md);
39
+ line-height: 1;
40
+ cursor: pointer;
41
+ }
42
+
43
+ .crewlet-message-actions__emoji:hover {
44
+ background: var(--color-fill-soft);
45
+ }
46
+
47
+ .crewlet-message-actions__emoji:active {
48
+ background: var(--color-surface-pressed);
49
+ }
50
+
51
+ /* Held, as the tray's icon tools are: faded, no fill under the pointer, and
52
+ the reason in its hint. */
53
+ .crewlet-message-actions__emoji[aria-disabled='true'] {
54
+ opacity: 0.5;
55
+ cursor: not-allowed;
56
+ }
57
+
58
+ .crewlet-message-actions__emoji[aria-disabled='true']:is(:hover, :active) {
59
+ background: transparent;
60
+ }
61
+
62
+ .crewlet-message-actions__emoji:focus-visible {
63
+ outline: 2px solid var(--color-focus);
64
+ outline-offset: var(--size-focus-ring-inset-offset);
65
+ }
66
+
67
+ .crewlet-message-actions__divider {
68
+ flex: none;
69
+ width: 1px;
70
+ height: var(--spacing-4);
71
+ margin: 0 var(--spacing-1);
72
+ background: var(--color-border-default);
73
+ }
@@ -10,6 +10,16 @@ export type ModalSize = 'sm' | 'md' | 'lg' | 'xl';
10
10
  * A centred dialog grown to hold that covers the very card it is editing.
11
11
  */
12
12
  export type ModalVariant = 'dialog' | 'sheet';
13
+ /**
14
+ * Which edge a SHEET is pinned to, in the page's own direction.
15
+ *
16
+ * `end` is the default and every editor: a sheet about something on the page
17
+ * stands beside it, at the end, where a reader's eye finishes a row. `start`
18
+ * is a navigation panel (a list of rooms, a list of places), which belongs
19
+ * where the navigation it stands for is drawn: it slides in from the start
20
+ * edge, its edge and its shadow on its inline end. A dialog has no side.
21
+ */
22
+ export type ModalSide = 'start' | 'end';
13
23
  /**
14
24
  * Where a dialog sits in the window.
15
25
  *
@@ -100,6 +110,8 @@ export interface ModalProps extends FrameAttributes {
100
110
  children?: ReactNode;
101
111
  size?: ModalSize | undefined;
102
112
  variant?: ModalVariant | undefined;
113
+ /** The edge a sheet is pinned to (`end` by default). Read on the sheet variant only. */
114
+ side?: ModalSide | undefined;
103
115
  shape?: ModalShape | undefined;
104
116
  placement?: ModalPlacement | undefined;
105
117
  /**
@@ -1,10 +1,10 @@
1
- export { ConfirmModal, Modal } from '../chunk-C667GCU7.js';
2
- import '../chunk-PQADV6P6.js';
1
+ export { ConfirmModal, Modal } from '../chunk-XXDB6KPV.js';
3
2
  import '../chunk-DGXZ635L.js';
4
- import '../chunk-OMV5W53A.js';
5
3
  import '../chunk-XSPCITPN.js';
6
- import '../chunk-H5XTJ7GJ.js';
4
+ import '../chunk-OMV5W53A.js';
5
+ import '../chunk-TUEM2XIW.js';
6
+ import '../chunk-4ITETIGZ.js';
7
7
  import '../chunk-UAUP6XGK.js';
8
- import '../chunk-NUZHC6MM.js';
8
+ import '../chunk-PQADV6P6.js';
9
9
  import '../chunk-UT6CW3C7.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -285,13 +285,32 @@
285
285
  animation: crewlet-modal-sheet-in var(--motion-duration-slow) var(--motion-easing-emphasized);
286
286
  }
287
287
 
288
+ /*
289
+ * A SHEET FROM THE START EDGE (`side="start"`): a navigation panel, pinned to
290
+ * the inline start and arriving from past it, with its edge and its shadow on
291
+ * its inline end, into the page it covers. The shadow is the sheet's own,
292
+ * mirrored by the token build, so a palette's sheet shadow reads the same way
293
+ * round on either side.
294
+ */
295
+ .crewlet-modal-overlay--sheet.crewlet-modal-overlay--start {
296
+ justify-content: flex-start;
297
+ }
298
+
299
+ .crewlet-modal--sheet.crewlet-modal--start {
300
+ --crewlet-modal-sheet-from: -100%;
301
+ border-inline-start: none;
302
+ border-inline-end: 1px solid var(--color-border-default);
303
+ box-shadow: var(--shadow-sheet-start);
304
+ }
305
+
288
306
  /*
289
307
  * The shell's one breakpoint, strictly under it as the shell switches. Below
290
308
  * it there is no content beside a sheet to keep in view, so the sheet takes
291
309
  * the whole width and its edge goes with it.
292
310
  */
293
311
  @media (width < 1024px) {
294
- .crewlet-modal--sheet {
312
+ .crewlet-modal--sheet,
313
+ .crewlet-modal--sheet.crewlet-modal--start {
295
314
  width: 100%;
296
315
  border-inline: none;
297
316
  }
@@ -314,6 +333,11 @@
314
333
  --crewlet-modal-glyph-inset: calc((var(--size-control-md) - var(--font-size-sm)) / 2);
315
334
 
316
335
  display: flex;
336
+ /* The head and the foot keep their height and the body gives way: in the
337
+ frame's column a head that could shrink was squeezed under a long body
338
+ to the bar's height, and a wrapped title and subtitle ran over its
339
+ edges. */
340
+ flex-shrink: 0;
317
341
  align-items: center;
318
342
  gap: var(--spacing-3);
319
343
  padding: var(--spacing-4);
@@ -534,6 +558,7 @@
534
558
  */
535
559
  .crewlet-modal__footer {
536
560
  display: flex;
561
+ flex-shrink: 0;
537
562
  align-items: center;
538
563
  flex-wrap: wrap;
539
564
  gap: var(--spacing-2);
@@ -1,16 +1,16 @@
1
- export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-JMTBK55P.js';
1
+ export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-FVZPSTL2.js';
2
2
  import '../chunk-KOJPDCGQ.js';
3
3
  import '../chunk-3LI4TRUR.js';
4
4
  import '../chunk-KBZO4B33.js';
5
5
  import '../chunk-ZWCK4N4L.js';
6
- import '../chunk-RTMNULTL.js';
7
- import '../chunk-VERJCAJ4.js';
8
- import '../chunk-CYQBDZ6M.js';
9
- import '../chunk-4AUTALJA.js';
6
+ import '../chunk-FLW5U7YS.js';
7
+ import '../chunk-LBGKLYBY.js';
8
+ import '../chunk-U2IQNDDR.js';
10
9
  import '../chunk-AV2DXAEL.js';
11
- import '../chunk-MLDTLZAO.js';
12
- import '../chunk-PQADV6P6.js';
10
+ import '../chunk-CYQBDZ6M.js';
13
11
  import '../chunk-DGXZ635L.js';
14
12
  import '../chunk-XSPCITPN.js';
13
+ import '../chunk-D2GT3CR4.js';
14
+ import '../chunk-PQADV6P6.js';
15
15
  import '../chunk-UT6CW3C7.js';
16
16
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { OrgLabel } from '../chunk-LM6VYJTV.js';
2
- import '../chunk-BT3GB7HC.js';
3
- import '../chunk-KTIQSSME.js';
1
+ export { OrgLabel } from '../chunk-5YXMKZUA.js';
2
+ import '../chunk-IRONPJB4.js';
3
+ import '../chunk-XZY6S3UC.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
- export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-OZAZHM55.js';
2
- import '../chunk-LM6VYJTV.js';
3
- import '../chunk-BT3GB7HC.js';
4
- import '../chunk-KTIQSSME.js';
1
+ export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-NKBKHOMU.js';
2
+ import '../chunk-5YXMKZUA.js';
3
+ import '../chunk-IRONPJB4.js';
4
+ import '../chunk-XZY6S3UC.js';
5
5
  import '../chunk-ODEQTPFM.js';
@@ -1,14 +1,14 @@
1
- export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-MUFBHVCT.js';
2
- import '../chunk-IL3XLDW7.js';
1
+ export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-DWQYV5AV.js';
2
+ import '../chunk-ZDWAIVWL.js';
3
3
  import '../chunk-MY374UUD.js';
4
- import '../chunk-LM6VYJTV.js';
4
+ import '../chunk-5YXMKZUA.js';
5
5
  import '../chunk-LM3ISVJA.js';
6
- import '../chunk-BT3GB7HC.js';
7
- import '../chunk-KTIQSSME.js';
6
+ import '../chunk-IRONPJB4.js';
7
+ import '../chunk-XZY6S3UC.js';
8
8
  import '../chunk-CVKANYHD.js';
9
9
  import '../chunk-OMV5W53A.js';
10
- import '../chunk-H5XTJ7GJ.js';
10
+ import '../chunk-TUEM2XIW.js';
11
+ import '../chunk-4ITETIGZ.js';
11
12
  import '../chunk-UAUP6XGK.js';
12
- import '../chunk-NUZHC6MM.js';
13
13
  import '../chunk-UT6CW3C7.js';
14
14
  import '../chunk-ODEQTPFM.js';
@@ -1,8 +1,8 @@
1
1
  export { PEEK_RAIL_LABELS, PEEK_RAIL_MAX_WIDTH, PEEK_RAIL_MIN_WIDTH, PEEK_RAIL_WIDTH, PeekHost, PeekNeighbours, PeekRail, isPlainPress, peekClickHandler, peekRowActivation, usePeekNeighbours, usePeekOrder, usePeekStep } from '../chunk-CDNZTCP2.js';
2
2
  import '../chunk-PIYJNCN7.js';
3
3
  import '../chunk-DGXZ635L.js';
4
- import '../chunk-2YTOOH3A.js';
5
4
  import '../chunk-XSPCITPN.js';
5
+ import '../chunk-2YTOOH3A.js';
6
6
  import '../chunk-UAUP6XGK.js';
7
7
  import '../chunk-UT6CW3C7.js';
8
8
  import '../chunk-ODEQTPFM.js';
@@ -1,12 +1,12 @@
1
- export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from '../chunk-ZWXHTXZO.js';
1
+ export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from '../chunk-QGEDXYLB.js';
2
2
  import '../chunk-CENOOTAV.js';
3
3
  import '../chunk-Z7JYG5TF.js';
4
4
  import '../chunk-AYKXMIOR.js';
5
- import '../chunk-BT3GB7HC.js';
6
- import '../chunk-KTIQSSME.js';
7
- import '../chunk-PQADV6P6.js';
5
+ import '../chunk-IRONPJB4.js';
6
+ import '../chunk-XZY6S3UC.js';
8
7
  import '../chunk-DGXZ635L.js';
9
8
  import '../chunk-XSPCITPN.js';
10
9
  import '../chunk-UAUP6XGK.js';
10
+ import '../chunk-PQADV6P6.js';
11
11
  import '../chunk-UT6CW3C7.js';
12
12
  import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,70 @@
1
+ import { type ButtonHTMLAttributes, type LiHTMLAttributes, type ReactNode } from 'react';
2
+ /**
3
+ * How tall a row stands. `default` is a list's row: a 32px face beside the
4
+ * name over a second line. `compact` is one line, the name with its detail
5
+ * after it, for a list that opens under a caret and has to stay short.
6
+ */
7
+ export type PersonRowDensity = 'default' | 'compact';
8
+ /**
9
+ * What the row ends with. `toggle` is the mark of a row that adds and takes
10
+ * away: a plus, or a check on the accent once it is chosen. `none` ends the
11
+ * row on its words, for a row that opens something.
12
+ */
13
+ export type PersonRowMark = 'toggle' | 'none';
14
+ /** What every row draws, whichever element it is. */
15
+ export interface PersonRowLook {
16
+ /** The face: an `Avatar` with its status, or a glyph for something that is not a person (a room, `@channel`). */
17
+ avatar: ReactNode;
18
+ /** The person's or agent's name. */
19
+ name: ReactNode;
20
+ /** A small label after the name, such as an "Agent" `Tag`. */
21
+ tag?: ReactNode;
22
+ /** What they are doing now, or their title. One line, cut with an ellipsis. */
23
+ detail?: ReactNode;
24
+ /** Words at the row's end: "Working", "Not in this room". */
25
+ meta?: ReactNode;
26
+ mark?: PersonRowMark | undefined;
27
+ density?: PersonRowDensity | undefined;
28
+ }
29
+ export interface PersonRowButtonProps extends PersonRowLook, Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'name' | 'onSelect'> {
30
+ as?: 'button' | undefined;
31
+ /**
32
+ * Whether the row is chosen, for a row that toggles: it is announced as a
33
+ * pressed button and filled with the accent's soft tint. Left out, the row
34
+ * is a plain button that opens something.
35
+ */
36
+ selected?: boolean | undefined;
37
+ /** Pressing the row. */
38
+ onSelect?: (() => void) | undefined;
39
+ }
40
+ export interface PersonRowOptionProps extends PersonRowLook, Omit<LiHTMLAttributes<HTMLLIElement>, 'children'> {
41
+ /**
42
+ * An option in a listbox a text field owns (`useListbox`): focus stays in
43
+ * the field, which points at the row with `aria-activedescendant`, so the
44
+ * row is never a tab stop of its own. Spread the hook's `optionHandlers`
45
+ * and give it the hook's `optionId`.
46
+ */
47
+ as: 'option';
48
+ /** `aria-selected`: the highlighted row of a single-choice list, or a chosen row of a multiselectable one. */
49
+ selected?: boolean | undefined;
50
+ /** The row the arrows are on, drawn with a bar on its start edge. */
51
+ highlighted?: boolean | undefined;
52
+ /** An option that cannot be taken. It stays in the list and says so. */
53
+ disabled?: boolean | undefined;
54
+ }
55
+ export type PersonRowProps = PersonRowButtonProps | PersonRowOptionProps;
56
+ /**
57
+ * A person or an agent as one row of a list: their face with its status,
58
+ * their name (and an Agent label), what they are doing now or their title,
59
+ * and, for a row that adds and takes away, a plus that turns into a check.
60
+ *
61
+ * ONE DESIGN FOR EVERY LIST OF PEOPLE. A picker's suggestions, a member list,
62
+ * a search's people and a composer's @ list are the same row, so a face, a
63
+ * name and a second line sit in the same places in all of them. It is a
64
+ * button by default, and an option (`as="option"`) inside a listbox a text
65
+ * field owns, where focus stays in the field.
66
+ *
67
+ * A ROW THAT TOGGLES SAYS SO: `selected` makes it a pressed button, and its
68
+ * mark changes from a plus to a check, so the state is never colour alone.
69
+ */
70
+ export declare const PersonRow: import("react").ForwardRefExoticComponent<PersonRowProps & import("react").RefAttributes<HTMLButtonElement | HTMLLIElement>>;
@@ -0,0 +1,3 @@
1
+ import './PersonRow.css';
2
+ export { PersonRow } from './PersonRow.js';
3
+ export type { PersonRowButtonProps, PersonRowDensity, PersonRowLook, PersonRowMark, PersonRowOptionProps, PersonRowProps, } from './PersonRow.js';
@@ -0,0 +1,2 @@
1
+ export { PersonRow } from '../chunk-EALRMP7N.js';
2
+ import '../chunk-ODEQTPFM.js';