@crewlethq/ui 0.81.2 → 0.83.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 (410) hide show
  1. package/README.md +89 -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 +19 -1
  13. package/dist/AppShell/AppShell.d.ts +62 -4
  14. package/dist/AppShell/index.d.ts +1 -1
  15. package/dist/AppShell/index.js +12 -6
  16. package/dist/AppShell/railMotion.d.ts +60 -0
  17. package/dist/AppShell/railShape.d.ts +22 -0
  18. package/dist/{AppShell-2IBUS4TH.css → AppShell-U7D2MUUF.css} +291 -20
  19. package/dist/ArrangeFrame/index.js +2 -2
  20. package/dist/ArrangeGroup/index.js +2 -2
  21. package/dist/ArrangeList/index.js +8 -7
  22. package/dist/ArtifactBar/index.js +13 -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 +13 -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 +8 -6
  46. package/dist/CanvasBoard/index.js +11 -9
  47. package/dist/CanvasToolbar/index.js +10 -8
  48. package/dist/Card/index.js +2 -2
  49. package/dist/ChangeList/index.js +5 -5
  50. package/dist/ChangeMark/index.js +6 -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 +2 -2
  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 +12 -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 +9 -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 +7 -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 +11 -10
  96. package/dist/DataView/index.js +18 -17
  97. package/dist/DatasetSource/index.js +3 -3
  98. package/dist/DateTimePicker/index.js +6 -5
  99. package/dist/DeepWorkCard/index.js +9 -9
  100. package/dist/Disclosure/index.js +3 -3
  101. package/dist/DocTabsEditor/index.js +11 -9
  102. package/dist/DockColumn/DockColumn.d.ts +68 -0
  103. package/dist/DockColumn/index.d.ts +3 -0
  104. package/dist/DockColumn/index.js +6 -0
  105. package/dist/DockColumn-SMJCXHS4.css +61 -0
  106. package/dist/Document/index.js +2 -2
  107. package/dist/EditingStatus/index.js +2 -2
  108. package/dist/{Editor-IMYESOW7.js → Editor-5D5Z3LBQ.js} +9 -8
  109. package/dist/EmojiPicker/EmojiPicker.d.ts +51 -0
  110. package/dist/EmojiPicker/emoji.d.ts +24 -0
  111. package/dist/EmojiPicker/index.d.ts +5 -0
  112. package/dist/EmojiPicker/index.js +15 -0
  113. package/dist/EmojiPicker-FMWYN2WX.css +63 -0
  114. package/dist/EntityChip/index.js +3 -3
  115. package/dist/EntityList/index.js +6 -6
  116. package/dist/FactList/index.js +6 -4
  117. package/dist/FolderTile/index.js +3 -3
  118. package/dist/FollowBanner/index.js +4 -4
  119. package/dist/HuePicker/index.js +9 -8
  120. package/dist/ImageUpload/ImageUpload.d.ts +6 -7
  121. package/dist/ImageUpload/index.js +3 -3
  122. package/dist/{ImageUpload-OWI7CCG7.css → ImageUpload-IFXZROFZ.css} +6 -37
  123. package/dist/InlineEditor/index.js +7 -7
  124. package/dist/Input/index.js +4 -4
  125. package/dist/Kbd/Kbd.d.ts +9 -0
  126. package/dist/Kbd/index.d.ts +1 -1
  127. package/dist/Kbd/index.js +1 -1
  128. package/dist/Layer/index.js +2 -2
  129. package/dist/LinkCard/LinkCard.d.ts +64 -0
  130. package/dist/LinkCard/index.d.ts +5 -0
  131. package/dist/LinkCard/index.js +5 -0
  132. package/dist/LinkCard-5I4MYU6I.css +155 -0
  133. package/dist/LinkInterstitial/index.js +7 -6
  134. package/dist/ListInput/index.js +10 -9
  135. package/dist/Listbox/index.js +3 -3
  136. package/dist/LogoSlot/index.js +3 -3
  137. package/dist/MarkdownEditor/format.d.ts +9 -1
  138. package/dist/MarkdownEditor/index.d.ts +2 -2
  139. package/dist/MarkdownEditor/index.js +10 -9
  140. package/dist/MediaMatch/index.d.ts +1 -1
  141. package/dist/MediaMatch/index.js +1 -1
  142. package/dist/MediaMatch/useMediaMatch.d.ts +14 -0
  143. package/dist/MentionChip/MentionChip.d.ts +25 -0
  144. package/dist/MentionChip/index.d.ts +3 -0
  145. package/dist/MentionChip/index.js +2 -0
  146. package/dist/MentionChip-W7MZZVRZ.css +42 -0
  147. package/dist/MentionMenu/MentionMenu.d.ts +82 -0
  148. package/dist/MentionMenu/index.d.ts +4 -0
  149. package/dist/MentionMenu/index.js +3 -0
  150. package/dist/MentionMenu-4NAQ45S4.css +65 -0
  151. package/dist/Menu/index.js +5 -4
  152. package/dist/MergeConflicts/index.js +9 -8
  153. package/dist/MessageActions/MessageActions.d.ts +58 -0
  154. package/dist/MessageActions/index.d.ts +4 -0
  155. package/dist/MessageActions/index.js +18 -0
  156. package/dist/MessageActions-Q4F5UH3S.css +73 -0
  157. package/dist/Modal/Modal.d.ts +12 -0
  158. package/dist/Modal/index.js +6 -5
  159. package/dist/{Modal-FYQYEI3N.css → Modal-GKUOO7PZ.css} +26 -1
  160. package/dist/OpenInAppCard/index.js +8 -8
  161. package/dist/OrgLabel/index.js +3 -3
  162. package/dist/OrgNode/index.js +4 -4
  163. package/dist/OrgTable/index.js +7 -7
  164. package/dist/Outline/index.js +2 -1
  165. package/dist/PeekRail/index.js +1 -1
  166. package/dist/PeopleRail/index.js +4 -4
  167. package/dist/PersonRow/PersonRow.d.ts +70 -0
  168. package/dist/PersonRow/index.d.ts +3 -0
  169. package/dist/PersonRow/index.js +2 -0
  170. package/dist/PersonRow-V5GTPNVP.css +161 -0
  171. package/dist/Popover/index.js +4 -3
  172. package/dist/Presence/index.d.ts +2 -0
  173. package/dist/Presence/index.js +4 -0
  174. package/dist/Presence/usePresence.d.ts +109 -0
  175. package/dist/PresenceStack/index.js +3 -3
  176. package/dist/{PresenceStack-ZV67BH4V.css → PresenceStack-2DTYRADY.css} +4 -6
  177. package/dist/PresenterView/index.js +5 -5
  178. package/dist/PricingCard/index.js +2 -2
  179. package/dist/Principal/index.js +3 -3
  180. package/dist/PrincipalPicker/index.js +11 -11
  181. package/dist/ProposalCard/index.js +15 -15
  182. package/dist/ReactionBar/ReactionBar.d.ts +84 -0
  183. package/dist/ReactionBar/index.d.ts +4 -0
  184. package/dist/ReactionBar/index.js +17 -0
  185. package/dist/ReactionBar-XXI4V7XG.css +93 -0
  186. package/dist/RecordChip/index.js +5 -4
  187. package/dist/RefusalCard/index.js +6 -6
  188. package/dist/RelatedRow/index.js +3 -3
  189. package/dist/Reorder/index.js +2 -1
  190. package/dist/ResultTableCard/index.js +7 -7
  191. package/dist/ReviewList/index.js +2 -2
  192. package/dist/RichEditor/index.js +2 -2
  193. package/dist/RunChip/index.js +5 -5
  194. package/dist/SandboxedFrame/index.js +2 -2
  195. package/dist/SectionFrame/index.js +2 -2
  196. package/dist/SegmentedControl/index.js +8 -7
  197. package/dist/Select/index.js +4 -4
  198. package/dist/SelectionBar/index.js +6 -6
  199. package/dist/SetupWizard/index.js +6 -6
  200. package/dist/ShareDialog/index.js +13 -12
  201. package/dist/SheetColumnEditor/index.js +17 -16
  202. package/dist/SheetGrid/index.js +14 -12
  203. package/dist/Shortcut/index.js +3 -3
  204. package/dist/SidePanel/SidePanel.d.ts +8 -1
  205. package/dist/SidePanel/SidePanelBase.d.ts +3 -1
  206. package/dist/SidePanel/index.js +5 -5
  207. package/dist/{SidePanel-VXKUKLOJ.css → SidePanel-BKWT6Q6Z.css} +36 -0
  208. package/dist/SidebarNav/SidebarNav.d.ts +52 -3
  209. package/dist/SidebarNav/index.js +1 -1
  210. package/dist/{SidebarNav-VTQ3G4AE.css → SidebarNav-E7PZGGA6.css} +132 -7
  211. package/dist/Skeleton/index.js +1 -1
  212. package/dist/{Skeleton-7ZA5ETJM.css → Skeleton-GIXV3KK5.css} +3 -1
  213. package/dist/SlideCompare/index.js +5 -5
  214. package/dist/SlideFilmstrip/index.js +11 -9
  215. package/dist/SlideGrid/index.js +4 -4
  216. package/dist/SlideStage/index.js +3 -3
  217. package/dist/SourceEditor/index.js +2 -2
  218. package/dist/StatusCard/index.js +5 -5
  219. package/dist/Switcher/index.js +13 -12
  220. package/dist/TableCells/index.js +5 -5
  221. package/dist/Tabs/index.js +7 -6
  222. package/dist/Tag/Tag.d.ts +9 -2
  223. package/dist/Tag/index.js +1 -1
  224. package/dist/{Tag-JTJVZM2D.css → Tag-WLDOROB5.css} +24 -0
  225. package/dist/TagsInput/index.js +6 -6
  226. package/dist/ThemeGallery/index.js +5 -5
  227. package/dist/ThemeSwitcher/index.js +9 -8
  228. package/dist/ThinkingIndicator/index.js +1 -1
  229. package/dist/{ThinkingIndicator-JMK2TNMZ.css → ThinkingIndicator-S7ZL2C77.css} +8 -0
  230. package/dist/ThreadSummary/ThreadSummary.d.ts +43 -0
  231. package/dist/ThreadSummary/index.d.ts +4 -0
  232. package/dist/ThreadSummary/index.js +6 -0
  233. package/dist/ThreadSummary-AGR4NDMD.css +90 -0
  234. package/dist/TimeRangePicker/index.js +13 -12
  235. package/dist/TimeWindowPicker/index.js +11 -10
  236. package/dist/Toaster/index.js +2 -2
  237. package/dist/Toolbar/index.js +3 -3
  238. package/dist/Tooltip/Tooltip.d.ts +30 -3
  239. package/dist/Tooltip/index.js +5 -3
  240. package/dist/TreeCanvas/index.js +10 -7
  241. package/dist/TreeGrid/index.js +3 -3
  242. package/dist/ValueField/index.js +9 -9
  243. package/dist/VersionCompare/index.js +10 -9
  244. package/dist/VersionTimeline/index.js +4 -4
  245. package/dist/WidgetFrame/index.js +2 -2
  246. package/dist/{chunk-LOWQK2PB.js → chunk-22CU7V4J.js} +4 -4
  247. package/dist/{chunk-WCDPFTJZ.js → chunk-25JQNHTC.js} +92 -28
  248. package/dist/{chunk-6LXS3X7A.js → chunk-2L4WHYMT.js} +1 -1
  249. package/dist/{chunk-6G6WHTC7.js → chunk-2O5CMV76.js} +1 -1
  250. package/dist/{chunk-FQI62PIZ.js → chunk-2SVQBQAD.js} +2 -2
  251. package/dist/{chunk-7PJFUQMY.js → chunk-2ZSCHQOA.js} +1 -1
  252. package/dist/chunk-3BRXEMYT.js +46 -0
  253. package/dist/{chunk-H22SR76M.js → chunk-3H6OZUZ3.js} +1 -1
  254. package/dist/{chunk-VK45YJLH.js → chunk-3IWZVEXA.js} +2 -2
  255. package/dist/{chunk-2STOSJT3.js → chunk-46FIBJCV.js} +7 -7
  256. package/dist/chunk-4DEKONVJ.js +87 -0
  257. package/dist/{chunk-NUZHC6MM.js → chunk-4ITETIGZ.js} +12 -1
  258. package/dist/{chunk-73GUXYYE.js → chunk-5AHNW5CP.js} +1 -1
  259. package/dist/{chunk-FFGEJUAP.js → chunk-5ILRWUE7.js} +2 -2
  260. package/dist/chunk-5JPOFAVN.js +58 -0
  261. package/dist/{chunk-S5QJZOPL.js → chunk-5K5SZGBI.js} +1 -1
  262. package/dist/{chunk-YB64PWIN.js → chunk-5V6GW6HK.js} +1 -1
  263. package/dist/{chunk-LM6VYJTV.js → chunk-5YXMKZUA.js} +1 -1
  264. package/dist/{chunk-5XBNJNSO.js → chunk-65RFU7LF.js} +1 -1
  265. package/dist/{chunk-7MGXHCVK.js → chunk-6M2N6ETA.js} +1 -1
  266. package/dist/{chunk-OWHETZIU.js → chunk-6SFDL4QH.js} +1 -1
  267. package/dist/{chunk-WK4FQPYW.js → chunk-77VOASOY.js} +5 -5
  268. package/dist/{chunk-UYF2B2TH.js → chunk-7ELFH3RJ.js} +1 -1
  269. package/dist/{chunk-HPI5J6AR.js → chunk-7K6LVM5I.js} +2 -2
  270. package/dist/{chunk-YQDRJZ5J.js → chunk-7M7WKYOV.js} +8 -8
  271. package/dist/{chunk-A5YKNRG6.js → chunk-7QCSISHM.js} +2 -1
  272. package/dist/{chunk-CYYBE2MM.js → chunk-7U6PK242.js} +1 -1
  273. package/dist/{chunk-I33UIUZD.js → chunk-7ZSEUO5Q.js} +51 -40
  274. package/dist/{chunk-LCZULGMB.js → chunk-ABRWL5FJ.js} +2 -2
  275. package/dist/{chunk-VG3SIJ3M.js → chunk-AFLS26AC.js} +2 -2
  276. package/dist/{chunk-4XF7ENQA.js → chunk-AOJ6ZA77.js} +2 -2
  277. package/dist/{chunk-Q2T4L6ML.js → chunk-AQNP3KQU.js} +5 -5
  278. package/dist/{chunk-6X5PGHEX.js → chunk-AUSFKGKL.js} +2 -2
  279. package/dist/{chunk-6R334YT3.js → chunk-AZYE7NR4.js} +2 -2
  280. package/dist/{chunk-WKKWF277.js → chunk-BN5FEJL5.js} +2 -2
  281. package/dist/{chunk-MPVMB2DV.js → chunk-BVML4UVB.js} +3 -2
  282. package/dist/{chunk-EAIOXW2W.js → chunk-BXGBGYKH.js} +8 -14
  283. package/dist/chunk-C4256UXE.js +21 -0
  284. package/dist/{chunk-2FMBZCFR.js → chunk-C42XW5YP.js} +1 -1
  285. package/dist/{chunk-4MRFLHJC.js → chunk-C46DDVTK.js} +1 -1
  286. package/dist/{chunk-5BOFC5OP.js → chunk-CF4M6N6A.js} +20 -4
  287. package/dist/{chunk-ANTAQAR4.js → chunk-CMAZZY2I.js} +7 -1
  288. package/dist/{chunk-3JXX5S3Z.js → chunk-CV2LU2T2.js} +2 -2
  289. package/dist/{chunk-MLDTLZAO.js → chunk-D2GT3CR4.js} +3 -3
  290. package/dist/{chunk-57AKYFML.js → chunk-DD7RBNT4.js} +3 -3
  291. package/dist/{chunk-KL6A7JGH.js → chunk-DRFOTWJE.js} +2 -2
  292. package/dist/{chunk-MUFBHVCT.js → chunk-DWQYV5AV.js} +2 -2
  293. package/dist/{chunk-CNEHFH2A.js → chunk-EAHEJNVJ.js} +1 -1
  294. package/dist/chunk-EALRMP7N.js +69 -0
  295. package/dist/{chunk-E35HYQMK.js → chunk-EBVZHVPD.js} +12 -5
  296. package/dist/{chunk-KHJIEPZV.js → chunk-EC6EUIAD.js} +9 -6
  297. package/dist/{chunk-XNNY27SC.js → chunk-ED4A6Q24.js} +1 -1
  298. package/dist/{chunk-6LN64KGG.js → chunk-F7HZYTZT.js} +6 -3
  299. package/dist/{chunk-RTMNULTL.js → chunk-FLW5U7YS.js} +2 -2
  300. package/dist/{chunk-JQEXAH7G.js → chunk-FPU7AA3X.js} +5 -16
  301. package/dist/{chunk-GHQG4VZA.js → chunk-G3CACE5L.js} +3 -3
  302. package/dist/{chunk-JMTBK55P.js → chunk-G4EHZHKM.js} +2 -2
  303. package/dist/{chunk-45M73G5A.js → chunk-GLKQHN7G.js} +5 -5
  304. package/dist/{chunk-N2BF272H.js → chunk-HF5L56YQ.js} +1 -1
  305. package/dist/chunk-HTBTAIH6.js +37 -0
  306. package/dist/chunk-HTS5RJ7S.js +6 -0
  307. package/dist/{chunk-BRLZXYPA.js → chunk-I4IUX3JF.js} +1 -1
  308. package/dist/{chunk-BXCL6P5Z.js → chunk-I4PBFJGX.js} +1 -1
  309. package/dist/{chunk-ADGNISEI.js → chunk-IAP7APOX.js} +5 -5
  310. package/dist/chunk-ICE3D63E.js +384 -0
  311. package/dist/{chunk-BT3GB7HC.js → chunk-IRONPJB4.js} +3 -3
  312. package/dist/chunk-IUBOLGHG.js +140 -0
  313. package/dist/chunk-JLOESTT2.js +10 -0
  314. package/dist/{chunk-5EFLA6BW.js → chunk-K6RWEQ6P.js} +2 -2
  315. package/dist/{chunk-ZQEJSEPS.js → chunk-K6Y6CDEZ.js} +2 -2
  316. package/dist/chunk-K774LUN3.js +20 -0
  317. package/dist/{chunk-7KBNFFM3.js → chunk-KXWJJWBD.js} +6 -3
  318. package/dist/{chunk-53J2YNQA.js → chunk-L5VU3LZT.js} +1 -1
  319. package/dist/chunk-L72URIHR.js +36 -0
  320. package/dist/{chunk-VERJCAJ4.js → chunk-LBGKLYBY.js} +1 -1
  321. package/dist/{chunk-PRN5IP2R.js → chunk-LMEMH6DO.js} +1 -1
  322. package/dist/{chunk-I22MUEG7.js → chunk-LNQSNXGJ.js} +1 -1
  323. package/dist/chunk-LT44RL62.js +50 -0
  324. package/dist/{chunk-222VILSP.js → chunk-LVJGN5II.js} +1 -1
  325. package/dist/{chunk-AYHIF6DH.js → chunk-LZNPL266.js} +1 -1
  326. package/dist/{chunk-R45VM5EX.js → chunk-MMV7NEAC.js} +1 -1
  327. package/dist/{chunk-2IIHMJMZ.js → chunk-MVKUE4FI.js} +2 -2
  328. package/dist/{chunk-37U3Z65B.js → chunk-MVMVMHYI.js} +1 -1
  329. package/dist/{chunk-JD7P2GJP.js → chunk-MYAARF4Z.js} +1 -1
  330. package/dist/{chunk-OBPINJNO.js → chunk-NCUSI4ZU.js} +3 -3
  331. package/dist/{chunk-NKBKQEKS.js → chunk-NFXCJGHG.js} +1 -1
  332. package/dist/{chunk-OZAZHM55.js → chunk-NKBKHOMU.js} +1 -1
  333. package/dist/{chunk-MGQKF7GK.js → chunk-NN475NAP.js} +1 -1
  334. package/dist/{chunk-6EWNMSS4.js → chunk-NNZRTR5M.js} +2 -2
  335. package/dist/{chunk-JT7WRPZ6.js → chunk-NTRKC2JV.js} +1 -1
  336. package/dist/{chunk-63GBSOLU.js → chunk-NXBCAXP5.js} +2 -2
  337. package/dist/{chunk-NR4CPM4T.js → chunk-NXFTCPF6.js} +1 -1
  338. package/dist/chunk-O3MYBNRO.js +80 -0
  339. package/dist/{chunk-RMEBFYL7.js → chunk-O6EV6GKI.js} +1 -1
  340. package/dist/{chunk-YL7AR6PR.js → chunk-O7KG4CXB.js} +3 -3
  341. package/dist/{chunk-FB3TCNQP.js → chunk-O7N6W52M.js} +3 -3
  342. package/dist/chunk-ONHYFU7D.js +25 -0
  343. package/dist/{chunk-T24HBEU6.js → chunk-OOOVL77Y.js} +1 -1
  344. package/dist/{chunk-BLGBD2D2.js → chunk-P7HMY3BQ.js} +4 -4
  345. package/dist/chunk-PCAT2EFB.js +104 -0
  346. package/dist/{chunk-TPIMOGOZ.js → chunk-PEBQMX5X.js} +1 -1
  347. package/dist/{chunk-UY3FWQWG.js → chunk-PGBKZSSQ.js} +201 -22
  348. package/dist/{chunk-4TMBAOXK.js → chunk-PW57R4BN.js} +1 -1
  349. package/dist/chunk-PX5BOALQ.js +13 -0
  350. package/dist/{chunk-CFTBESST.js → chunk-Q6TCUSQA.js} +2 -2
  351. package/dist/{chunk-ZWXHTXZO.js → chunk-QGEDXYLB.js} +2 -2
  352. package/dist/{chunk-ZKLEAK7M.js → chunk-QM3432PH.js} +7 -7
  353. package/dist/{chunk-WTXCK46H.js → chunk-R2QBQ6NO.js} +1 -1
  354. package/dist/{chunk-Z6JKZI4E.js → chunk-RBQRTGXX.js} +1 -1
  355. package/dist/{chunk-TJIBTHWJ.js → chunk-RDIQB5ZE.js} +3 -3
  356. package/dist/{chunk-TPCBPGSB.js → chunk-RO5JU6SN.js} +4 -4
  357. package/dist/{chunk-O222F2IX.js → chunk-SGMWLUYQ.js} +6 -6
  358. package/dist/{chunk-HEA6TERQ.js → chunk-SHH7UD5U.js} +1 -1
  359. package/dist/{chunk-CLJGFOTV.js → chunk-SKGOKLJD.js} +31 -18
  360. package/dist/{chunk-CSXJIIO4.js → chunk-SNQ7PH3D.js} +1 -1
  361. package/dist/chunk-SPNTUQBV.js +244 -0
  362. package/dist/{chunk-RIAPCEB5.js → chunk-T3S3D4FC.js} +5 -5
  363. package/dist/chunk-TDFLCUBE.js +6 -0
  364. package/dist/{chunk-OQG4P5KU.js → chunk-TGGYSQRD.js} +5 -6
  365. package/dist/{chunk-7FF6CZW5.js → chunk-TQKQRS2J.js} +36 -8
  366. package/dist/chunk-TRXTO3WC.js +114 -0
  367. package/dist/{chunk-H5XTJ7GJ.js → chunk-TUEM2XIW.js} +1 -1
  368. package/dist/{chunk-4AUTALJA.js → chunk-U2IQNDDR.js} +1 -1
  369. package/dist/{chunk-IVTQWOXV.js → chunk-ULYHDP7U.js} +1 -1
  370. package/dist/{chunk-DGSK4LLS.js → chunk-V6WDJUYK.js} +1 -1
  371. package/dist/{chunk-Z2MZTI3H.js → chunk-VB3FVKNI.js} +1 -1
  372. package/dist/{chunk-R5OATXWU.js → chunk-VONEKR3J.js} +38 -15
  373. package/dist/{chunk-CZQ7UITX.js → chunk-WANKINXG.js} +3 -3
  374. package/dist/{chunk-HQOEAUDJ.js → chunk-WMO722J2.js} +2 -2
  375. package/dist/{chunk-D7G2QGET.js → chunk-X3US25XJ.js} +1 -1
  376. package/dist/{chunk-GPFYITOF.js → chunk-X7VZQKIW.js} +1 -1
  377. package/dist/{chunk-L4HHWG4V.js → chunk-XA2QKGBJ.js} +3 -3
  378. package/dist/{chunk-DV5L2GRY.js → chunk-XJMES7AE.js} +1 -1
  379. package/dist/{chunk-5NJMSYDZ.js → chunk-XNC3M4IN.js} +1 -1
  380. package/dist/{chunk-B2YSFWUG.js → chunk-XRWHDW6F.js} +9 -9
  381. package/dist/{chunk-TKUAGWNR.js → chunk-XTJHMP3W.js} +2 -2
  382. package/dist/{chunk-KTIQSSME.js → chunk-XZY6S3UC.js} +6 -3
  383. package/dist/{chunk-7KHM2FZH.js → chunk-YGRTX67J.js} +1 -1
  384. package/dist/{chunk-RTPQDNW3.js → chunk-YJQXESOJ.js} +5 -1
  385. package/dist/chunk-YP2FS6SH.js +54 -0
  386. package/dist/{chunk-LMQG3VPG.js → chunk-YQ7Q52XU.js} +1 -1
  387. package/dist/{chunk-G4CGDUCP.js → chunk-YRNNUCQP.js} +1 -1
  388. package/dist/{chunk-5CEQ3HLH.js → chunk-YXKSUILG.js} +6 -6
  389. package/dist/{chunk-NHLNHH4J.js → chunk-ZB3E2Z4Y.js} +1 -1
  390. package/dist/{chunk-IL3XLDW7.js → chunk-ZDWAIVWL.js} +1 -1
  391. package/dist/{chunk-SNIPM6K7.js → chunk-ZJVLGYE3.js} +3 -3
  392. package/dist/{chunk-BFM5G2Z6.js → chunk-ZPTKAYJK.js} +1 -1
  393. package/dist/{chunk-2PIH6JHJ.js → chunk-ZXTDWTXS.js} +1 -1
  394. package/dist/{chunk-C667GCU7.js → chunk-ZXXZESCD.js} +9 -7
  395. package/dist/generated/index.d.ts +17 -0
  396. package/dist/generated/index.js +184 -163
  397. package/dist/index.js +184 -163
  398. package/dist/styles.css +2769 -156
  399. package/dist/utils/composedRef.d.ts +39 -0
  400. package/dist/utils/focusModality.d.ts +14 -0
  401. package/dist/utils/heldHint.d.ts +6 -0
  402. package/dist/utils/index.d.ts +3 -1
  403. package/dist/utils/index.js +4 -2
  404. package/dist/utils/tokenMs.d.ts +6 -0
  405. package/package.json +5 -5
  406. package/dist/ArtifactKinds-O3CALPVX.css +0 -16
  407. package/dist/{chunk-PLNJEDGI.js → chunk-I4IO56EY.js} +1 -1
  408. package/dist/{chunk-FEJANUZK.js → chunk-KBSD476L.js} +0 -0
  409. package/dist/{chunk-624X3RVA.js → chunk-O55JQ7BE.js} +1 -1
  410. /package/dist/{chunk-CDFQ7MQK.js → chunk-REEZQCML.js} +0 -0
@@ -1,7 +1,7 @@
1
- import { useListbox, useOptionKeys, useHighlightRest } from './chunk-7KHM2FZH.js';
1
+ import { useListbox, useOptionKeys, useHighlightRest } from './chunk-YGRTX67J.js';
2
2
  import { useLayerContainer, viewportBounds, anchorGone, placePopup, LAYER_GAP, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
3
3
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
4
- import { useFocusModality, returnFocus } from './chunk-NUZHC6MM.js';
4
+ import { useFocusModality, returnFocus } from './chunk-4ITETIGZ.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './HitArea-QUOS6ZDJ.css';
7
7
  import './Select-6BQPBOHH.css';
@@ -1,17 +1,17 @@
1
1
  import { TagGroup } from './chunk-UEOEBOBR.js';
2
2
  import { CursorFlag } from './chunk-MMCYH5LB.js';
3
3
  import { presenceHueClass } from './chunk-EFX2YC5T.js';
4
- import { ChangeMark } from './chunk-Z2MZTI3H.js';
4
+ import { ChangeMark } from './chunk-VB3FVKNI.js';
5
5
  import { isEmptyValue, displayText, ratingMax, findPerson, findOption, statusTone, editText, textMax, sheetLabels, normalizeValue, sameValue, spokenText, drawnColumns, fitSamples, fittedWidth, columnWidth, SHEET_COLUMN_BOUNDS, sortRows, SHEET_ROW_HEIGHT, cellKey, columnOffsets, SHEET_ROW_NUMBER_WIDTH, rangeOf, presenceByCell, presenceByRow, presenceByColumn, scrollToRow, planClear, visibleRows, cellDescription, nextSort, rowName, inRange, hasPrevious, flagText, toTSV, planPaste, parseTSV, isMod, moveFrom, isTypingKey, editorSide, optionHue, parseText, liveOptions, checkValue } from './chunk-LFSIKGRQ.js';
6
6
  import { presenceLabels } from './chunk-Z7JYG5TF.js';
7
- import { Popover } from './chunk-KHJIEPZV.js';
8
- import { Tag } from './chunk-VERJCAJ4.js';
9
- import { Tooltip } from './chunk-I33UIUZD.js';
7
+ import { Tag } from './chunk-LBGKLYBY.js';
8
+ import { Popover } from './chunk-EC6EUIAD.js';
9
+ import { Avatar } from './chunk-XZY6S3UC.js';
10
10
  import { StatusDot } from './chunk-CYQBDZ6M.js';
11
- import { Avatar } from './chunk-KTIQSSME.js';
12
- import { Menu } from './chunk-OQG4P5KU.js';
11
+ import { Tooltip } from './chunk-7ZSEUO5Q.js';
12
+ import { Menu } from './chunk-TGGYSQRD.js';
13
13
  import { Button } from './chunk-DGXZ635L.js';
14
- import { isComposing } from './chunk-H5XTJ7GJ.js';
14
+ import { isComposing } from './chunk-TUEM2XIW.js';
15
15
  import { IconButton } from './chunk-UAUP6XGK.js';
16
16
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
17
17
  import { cx } from './chunk-ODEQTPFM.js';
@@ -0,0 +1,87 @@
1
+ import { heldHint } from './chunk-TDFLCUBE.js';
2
+ import { emojiName, EmojiPicker } from './chunk-SPNTUQBV.js';
3
+ import { Tooltip } from './chunk-7ZSEUO5Q.js';
4
+ import { cx } from './chunk-ODEQTPFM.js';
5
+ import './ChatScale-L4SIHSKL.css';
6
+ import './ReactionBar-XXI4V7XG.css';
7
+ import { FaceSlightlySmilingPlusGlyph } from '@crewlethq/icons/glyphs';
8
+ import { jsxs, jsx } from 'react/jsx-runtime';
9
+
10
+ var REACTION_BAR_LABELS = {
11
+ group: "Reactions",
12
+ you: "You",
13
+ others: (count) => count === 1 ? "1 other" : `${count.toLocaleString()} others`,
14
+ members: (count) => count === 1 ? "1 member" : `${count.toLocaleString()} members`,
15
+ reacted: (who, emoji) => `${who} reacted with ${emoji}`,
16
+ pill: (name, who) => `${name}: ${who} reacted`
17
+ };
18
+ function sentence(names, unnamed, others) {
19
+ const shown = names.length > 3 ? names.slice(0, 2) : names;
20
+ const rest = names.length - shown.length + unnamed;
21
+ const parts = rest > 0 ? [...shown, others(rest)] : [...shown];
22
+ if (parts.length <= 1) return parts[0] ?? "";
23
+ return `${parts.slice(0, -1).join(", ")} and ${parts[parts.length - 1]}`;
24
+ }
25
+ function reactionWho(reaction, labels = REACTION_BAR_LABELS) {
26
+ const you = reaction.mine ? [labels.you] : [];
27
+ if (reaction.people) {
28
+ const names = [...you, ...reaction.people];
29
+ return sentence(names, Math.max(0, reaction.count - names.length), labels.others);
30
+ }
31
+ if (reaction.mine) return sentence(you, Math.max(0, reaction.count - 1), labels.others);
32
+ return labels.members(reaction.count);
33
+ }
34
+ function ReactionBar({ reactions, onToggle, add, disabledReason, labels: overrides, className }) {
35
+ const labels = overrides ? { ...REACTION_BAR_LABELS, ...overrides } : REACTION_BAR_LABELS;
36
+ if (reactions.length === 0 && !add) return null;
37
+ return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-reaction-bar", className), role: "group", "aria-label": labels.group, children: [
38
+ reactions.map((reaction) => {
39
+ const who = reactionWho(reaction, labels);
40
+ const hint = labels.reacted(who, reaction.emoji);
41
+ return /* @__PURE__ */ jsx(Tooltip, { content: heldHint(hint, disabledReason), children: /* @__PURE__ */ jsxs(
42
+ "button",
43
+ {
44
+ type: "button",
45
+ className: cx("crewlet-reaction", reaction.mine && "is-mine"),
46
+ "aria-pressed": reaction.mine,
47
+ "aria-label": labels.pill(reaction.name ?? emojiName(reaction.emoji), who),
48
+ "aria-disabled": disabledReason ? true : void 0,
49
+ onClick: () => {
50
+ if (!disabledReason) onToggle(reaction.emoji);
51
+ },
52
+ children: [
53
+ /* @__PURE__ */ jsx("span", { className: "crewlet-reaction__emoji", "aria-hidden": "true", children: reaction.emoji }),
54
+ /* @__PURE__ */ jsx("span", { className: "crewlet-reaction__count", "aria-hidden": "true", children: reaction.count.toLocaleString() })
55
+ ]
56
+ }
57
+ ) }, reaction.emoji);
58
+ }),
59
+ add
60
+ ] });
61
+ }
62
+ function AddReaction({ label = "Add a reaction", align = "start", disabledReason, ...picker }) {
63
+ return /* @__PURE__ */ jsx(
64
+ EmojiPicker,
65
+ {
66
+ ...picker,
67
+ label,
68
+ tooltip: heldHint(label, disabledReason),
69
+ align,
70
+ trigger: (_open, toggle) => /* @__PURE__ */ jsx(
71
+ "button",
72
+ {
73
+ type: "button",
74
+ className: "crewlet-reaction crewlet-reaction--add",
75
+ "aria-label": label,
76
+ "aria-disabled": disabledReason ? true : void 0,
77
+ onClick: () => {
78
+ if (!disabledReason) toggle();
79
+ },
80
+ children: /* @__PURE__ */ jsx(FaceSlightlySmilingPlusGlyph, { size: "sm" })
81
+ }
82
+ )
83
+ }
84
+ );
85
+ }
86
+
87
+ export { AddReaction, REACTION_BAR_LABELS, ReactionBar, reactionWho };
@@ -64,5 +64,16 @@ function returnFocus(el, options) {
64
64
  clear();
65
65
  return false;
66
66
  }
67
+ function isVisibleFocus(el) {
68
+ let visible;
69
+ try {
70
+ visible = el.matches(":focus-visible");
71
+ } catch {
72
+ visible = true;
73
+ }
74
+ if (!visible) return false;
75
+ const pointer = el.ownerDocument.documentElement.getAttribute(FOCUS_MODALITY_ATTRIBUTE) === "pointer";
76
+ return !(pointer && el.hasAttribute(FOCUS_RETURNED_ATTRIBUTE));
77
+ }
67
78
 
68
- export { FOCUS_MODALITY_ATTRIBUTE, FOCUS_RETURNED_ATTRIBUTE, returnFocus, trackFocusModality, useFocusModality };
79
+ export { FOCUS_MODALITY_ATTRIBUTE, FOCUS_RETURNED_ATTRIBUTE, isVisibleFocus, returnFocus, trackFocusModality, useFocusModality };
@@ -1,3 +1,3 @@
1
1
  import './HitArea-QUOS6ZDJ.css';
2
2
  import './ResizeHandle-2UNSZ4ZQ.css';
3
- import './SidePanel-VXKUKLOJ.css';
3
+ import './SidePanel-BKWT6Q6Z.css';
@@ -1,8 +1,8 @@
1
- import { SidePanelBase, SidePanelFrameBase } from './chunk-CLJGFOTV.js';
1
+ import { SidePanelBase, SidePanelFrameBase } from './chunk-SKGOKLJD.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './HitArea-QUOS6ZDJ.css';
4
4
  import './ResizeHandle-2UNSZ4ZQ.css';
5
- import './SidePanel-VXKUKLOJ.css';
5
+ import './SidePanel-BKWT6Q6Z.css';
6
6
  import './ArtifactPanel-MR5Z5AVN.css';
7
7
  import { jsx } from 'react/jsx-runtime';
8
8
 
@@ -0,0 +1,58 @@
1
+ import { usePresence, releaseFocus } from './chunk-PCAT2EFB.js';
2
+ import { cx } from './chunk-ODEQTPFM.js';
3
+ import './DockColumn-SMJCXHS4.css';
4
+ import { useRef, useCallback, useLayoutEffect } from 'react';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var DOCK_MOTION = { transitions: ["width"] };
8
+ function DockColumn({
9
+ open,
10
+ width,
11
+ side = "start",
12
+ divider = true,
13
+ focusOnClose,
14
+ className,
15
+ style,
16
+ children,
17
+ ...rest
18
+ }) {
19
+ const column = useRef(null);
20
+ const { present, leaving } = usePresence(open, column, DOCK_MOTION);
21
+ const closed = useRef(!open);
22
+ closed.current = !open;
23
+ const isClosed = useCallback(() => closed.current, []);
24
+ return /* @__PURE__ */ jsx(
25
+ "div",
26
+ {
27
+ ...rest,
28
+ ref: column,
29
+ className: cx("crewlet-dock-column", divider && "crewlet-dock-column--divider", className),
30
+ "data-side": side,
31
+ "data-open": open ? "" : void 0,
32
+ style: { ...style, "--crewlet-dock-column-width": typeof width === "number" ? `${width}px` : width },
33
+ children: present ? /* @__PURE__ */ jsx(DockPanel, { leaving, isClosed, focusOnClose, children }) : null
34
+ }
35
+ );
36
+ }
37
+ function DockPanel({
38
+ leaving,
39
+ isClosed,
40
+ focusOnClose,
41
+ children
42
+ }) {
43
+ const panel = useRef(null);
44
+ const target = useRef(focusOnClose);
45
+ target.current = focusOnClose;
46
+ useLayoutEffect(() => {
47
+ if (leaving) releaseFocus(panel.current, target.current?.());
48
+ }, [leaving]);
49
+ useLayoutEffect(() => {
50
+ const element = panel.current;
51
+ return () => {
52
+ if (isClosed()) releaseFocus(element, target.current?.());
53
+ };
54
+ }, [isClosed]);
55
+ return /* @__PURE__ */ jsx("div", { ref: panel, className: "crewlet-dock-column__panel", inert: leaving || void 0, children });
56
+ }
57
+
58
+ export { DockColumn };
@@ -1,4 +1,4 @@
1
- import { Skeleton } from './chunk-BRLZXYPA.js';
1
+ import { Skeleton } from './chunk-I4IUX3JF.js';
2
2
  import { RelativeTime } from './chunk-EJNJMHQG.js';
3
3
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
1
  import { useThemePreference, useDensityPreference } from './chunk-Z24ZUSTX.js';
2
- import { SegmentedControl } from './chunk-6R334YT3.js';
2
+ import { SegmentedControl } from './chunk-AZYE7NR4.js';
3
3
  import { SunGlyph, MonitorGlyph, MoonGlyph } from '@crewlethq/icons/glyphs';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,4 +1,4 @@
1
- import { Avatar } from './chunk-KTIQSSME.js';
1
+ import { Avatar } from './chunk-XZY6S3UC.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './OrgLabel-R5KY7C3W.css';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- import { Avatar } from './chunk-KTIQSSME.js';
1
+ import { Avatar } from './chunk-XZY6S3UC.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './EntityChip-LUCPZBBG.css';
4
4
  import { Children, isValidElement, cloneElement } from 'react';
@@ -1,4 +1,4 @@
1
- import { SlideStage } from './chunk-RMEBFYL7.js';
1
+ import { SlideStage } from './chunk-O6EV6GKI.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './SlideGrid-J4LAOUSJ.css';
4
4
  import { EyeOffGlyph } from '@crewlethq/icons/glyphs';
@@ -1,5 +1,5 @@
1
1
  import { FileDrop, FilePickButton } from './chunk-KQWJWTED.js';
2
- import { contrastRatio } from './chunk-7PJFUQMY.js';
2
+ import { contrastRatio } from './chunk-2ZSCHQOA.js';
3
3
  import { normalizeHex } from './chunk-7W3LYIOC.js';
4
4
  import { Button } from './chunk-DGXZ635L.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
@@ -1,9 +1,9 @@
1
- import { useListbox } from './chunk-7KHM2FZH.js';
2
- import { Tag } from './chunk-VERJCAJ4.js';
3
- import { announce } from './chunk-2G355KDJ.js';
4
- import { isComposing } from './chunk-H5XTJ7GJ.js';
1
+ import { useListbox } from './chunk-YGRTX67J.js';
2
+ import { Tag } from './chunk-LBGKLYBY.js';
3
+ import { isComposing } from './chunk-TUEM2XIW.js';
4
+ import { useFocusModality } from './chunk-4ITETIGZ.js';
5
5
  import { IconButton } from './chunk-UAUP6XGK.js';
6
- import { useFocusModality } from './chunk-NUZHC6MM.js';
6
+ import { announce } from './chunk-2G355KDJ.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
8
8
  import './TagsInput-MZXEHKJD.css';
9
9
  import { forwardRef, useState, useRef, useId, useImperativeHandle, useEffect, useMemo, useLayoutEffect } from 'react';
@@ -1,4 +1,4 @@
1
- import { StatusCard } from './chunk-RTMNULTL.js';
1
+ import { StatusCard } from './chunk-FLW5U7YS.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './RefusalCard-UM67F5HB.css';
4
4
  import { LockGlyph } from '@crewlethq/icons/glyphs';
@@ -1,8 +1,8 @@
1
1
  import { today, CalendarGrid, shiftMonth, compareDays } from './chunk-EE3DJMSQ.js';
2
- import { Popover } from './chunk-KHJIEPZV.js';
2
+ import { Popover } from './chunk-EC6EUIAD.js';
3
3
  import { Button } from './chunk-DGXZ635L.js';
4
+ import { useFocusModality } from './chunk-4ITETIGZ.js';
4
5
  import { IconButton } from './chunk-UAUP6XGK.js';
5
- import { useFocusModality } from './chunk-NUZHC6MM.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './DateTimePicker-PM6TIRIX.css';
8
8
  import { useMemo, useState, useEffect } from 'react';
@@ -1,13 +1,13 @@
1
- import { Modal } from './chunk-C667GCU7.js';
2
- import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
3
- import { Popover } from './chunk-KHJIEPZV.js';
1
+ import { Modal } from './chunk-ZXXZESCD.js';
2
+ import { useListbox, useOptionKeys } from './chunk-YGRTX67J.js';
4
3
  import { KeyChip, highlightMatch } from './chunk-HBDA76EZ.js';
5
- import { Skeleton } from './chunk-BRLZXYPA.js';
6
- import { Input } from './chunk-FB3TCNQP.js';
4
+ import { Popover } from './chunk-EC6EUIAD.js';
5
+ import { Skeleton } from './chunk-I4IUX3JF.js';
6
+ import { useMediaMatch } from './chunk-YJQXESOJ.js';
7
+ import { Input } from './chunk-O7N6W52M.js';
8
+ import { focusables, isComposing } from './chunk-TUEM2XIW.js';
9
+ import { returnFocus } from './chunk-4ITETIGZ.js';
7
10
  import { announce } from './chunk-2G355KDJ.js';
8
- import { useMediaMatch } from './chunk-RTPQDNW3.js';
9
- import { focusables, isComposing } from './chunk-H5XTJ7GJ.js';
10
- import { returnFocus } from './chunk-NUZHC6MM.js';
11
11
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
12
12
  import { cx } from './chunk-ODEQTPFM.js';
13
13
  import './Switcher-VWQMZUTN.css';
@@ -1,3 +1,4 @@
1
+ import { prefersReducedMotion } from './chunk-YJQXESOJ.js';
1
2
  import { cx } from './chunk-ODEQTPFM.js';
2
3
  import './Outline-VCXKKU3E.css';
3
4
  import { useState, useRef, useEffect } from 'react';
@@ -28,7 +29,7 @@ function scrollToHeading(id, ownerDocument = document) {
28
29
  const heading = ownerDocument.getElementById(id);
29
30
  if (!heading) return false;
30
31
  if (!heading.hasAttribute("tabindex")) heading.setAttribute("tabindex", "-1");
31
- const still = ownerDocument.defaultView?.matchMedia?.("(prefers-reduced-motion: reduce)").matches ?? false;
32
+ const still = prefersReducedMotion(ownerDocument.defaultView);
32
33
  heading.scrollIntoView?.({ behavior: still ? "auto" : "smooth", block: "start" });
33
34
  heading.focus({ preventScroll: true });
34
35
  return true;
@@ -1,4 +1,4 @@
1
- import { Count } from './chunk-MLDTLZAO.js';
1
+ import { Count } from './chunk-D2GT3CR4.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './ArrangeGroup-KRWWOJKR.css';
4
4
  import { useId } from 'react';
@@ -1,5 +1,8 @@
1
+ import { tokenMs } from './chunk-HTS5RJ7S.js';
2
+ import { useComposedRef } from './chunk-L72URIHR.js';
1
3
  import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
2
- import { usePopupLayer } from './chunk-H5XTJ7GJ.js';
4
+ import { usePopupLayer } from './chunk-TUEM2XIW.js';
5
+ import { isVisibleFocus } from './chunk-4ITETIGZ.js';
3
6
  import { cx } from './chunk-ODEQTPFM.js';
4
7
  import './Tooltip-LKQF7CE4.css';
5
8
  import { useId, useState, useRef, useCallback, useEffect, useLayoutEffect, cloneElement } from 'react';
@@ -7,24 +10,16 @@ import { createPortal } from 'react-dom';
7
10
  import { motion } from '@crewlethq/tokens';
8
11
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
12
 
10
- function ms(value) {
11
- return Number.parseFloat(value);
12
- }
13
- function attach(ref, el) {
14
- if (typeof ref === "function") {
15
- const release = ref(el);
16
- return typeof release === "function" ? release : () => void ref(null);
17
- }
18
- if (!ref) return () => {
19
- };
20
- const box = ref;
21
- box.current = el;
22
- return () => {
23
- box.current = null;
13
+ function composeHandlers(first, second) {
14
+ if (typeof first !== "function") return second;
15
+ if (typeof second !== "function") return first;
16
+ return (...args) => {
17
+ first(...args);
18
+ second(...args);
24
19
  };
25
20
  }
26
- var OPEN_DELAY = ms(motion.duration.slow);
27
- var CLOSE_DELAY = ms(motion.duration.base);
21
+ var OPEN_DELAY = tokenMs(motion.duration.slow);
22
+ var CLOSE_DELAY = tokenMs(motion.duration.base);
28
23
  function Tooltip({
29
24
  content,
30
25
  placement = "top",
@@ -33,7 +28,9 @@ function Tooltip({
33
28
  openDelay = OPEN_DELAY,
34
29
  closeDelay = CLOSE_DELAY,
35
30
  className,
36
- children
31
+ children,
32
+ ref: forwardedRef,
33
+ ...forwarded
37
34
  }) {
38
35
  const id = useId();
39
36
  const panelId = `${id}-tooltip`;
@@ -41,7 +38,7 @@ function Tooltip({
41
38
  const anchor = useRef(null);
42
39
  const panel = useRef(null);
43
40
  const timer = useRef(void 0);
44
- const over = useRef({ pointer: false, focus: false });
41
+ const over = useRef({ pointer: false, focus: false, pressed: false });
45
42
  const [place, setPlace] = useState(null);
46
43
  const container = useLayerContainer();
47
44
  const clear = useCallback(() => {
@@ -76,7 +73,7 @@ function Tooltip({
76
73
  [clear]
77
74
  );
78
75
  const layer = usePopupLayer({ open, onDismiss: () => {
79
- over.current = { pointer: false, focus: false };
76
+ over.current = { pointer: false, focus: false, pressed: false };
80
77
  clear();
81
78
  setOpen(false);
82
79
  } });
@@ -138,41 +135,55 @@ function Tooltip({
138
135
  if (!open) setPlace(null);
139
136
  }, [open]);
140
137
  const child = children;
141
- const describedBy = child.props["aria-describedby"];
138
+ const outer = forwarded;
139
+ const passed = { ...outer };
140
+ for (const key of Object.keys(outer)) {
141
+ if (/^on[A-Z]/.test(key)) passed[key] = composeHandlers(child.props[key], outer[key]);
142
+ }
143
+ if (outer["style"] !== void 0) passed["style"] = { ...child.props["style"], ...outer["style"] };
144
+ const describedBy = cx(child.props["aria-describedby"], outer["aria-describedby"]) || void 0;
142
145
  const ownRef = child.props["ref"];
146
+ const triggerRef = useComposedRef(anchor, layer.insideRef, ownRef, forwardedRef);
147
+ const call = (key, event) => (passed[key] ?? child.props[key])?.(event);
143
148
  const trigger = cloneElement(child, {
144
- ref: (el) => {
145
- anchor.current = el;
146
- layer.insideRef(el);
147
- const release = attach(ownRef, el);
148
- return () => {
149
- anchor.current = null;
150
- layer.insideRef(null);
151
- release();
152
- };
153
- },
149
+ ...passed,
150
+ ref: triggerRef,
154
151
  "aria-describedby": open ? cx(describedBy, panelId) : describedBy,
155
152
  onPointerEnter: (event) => {
156
153
  over.current.pointer = true;
157
- show(openDelay);
158
- child.props["onPointerEnter"]?.(event);
154
+ if (!over.current.pressed) show(openDelay);
155
+ call("onPointerEnter", event);
159
156
  },
160
157
  onPointerLeave: (event) => {
161
158
  over.current.pointer = false;
159
+ over.current.pressed = false;
162
160
  hide(closeDelay);
163
- child.props["onPointerLeave"]?.(event);
161
+ call("onPointerLeave", event);
162
+ },
163
+ // A press answers the tip: it closes at once and stays shut while the
164
+ // pointer is still on the control, whatever focus the press brought.
165
+ onPointerDown: (event) => {
166
+ over.current.pressed = true;
167
+ over.current.focus = false;
168
+ clear();
169
+ setOpen(false);
170
+ call("onPointerDown", event);
164
171
  },
165
- // Focus opens with NO delay: a keyboard reader who reached this control
166
- // asked for it, and there is no pointer passing over anything.
172
+ // KEYBOARD focus opens with NO delay: a keyboard reader who reached this
173
+ // control asked for it, and there is no pointer passing over anything.
174
+ // Any other focus (a press, a layer handing focus back) neither opens the
175
+ // tip nor holds it open.
167
176
  onFocus: (event) => {
168
- over.current.focus = true;
169
- show(0);
170
- child.props["onFocus"]?.(event);
177
+ const visible = !over.current.pressed && isVisibleFocus(event.currentTarget);
178
+ over.current.focus = visible;
179
+ if (visible) show(0);
180
+ call("onFocus", event);
171
181
  },
172
182
  onBlur: (event) => {
173
183
  over.current.focus = false;
184
+ over.current.pressed = false;
174
185
  hide(0);
175
- child.props["onBlur"]?.(event);
186
+ call("onBlur", event);
176
187
  }
177
188
  });
178
189
  const style = place ? { left: place.left, top: place.top, zIndex: layer.zIndex } : (
@@ -1,6 +1,6 @@
1
- import { Checkbox } from './chunk-LMQG3VPG.js';
1
+ import { Checkbox } from './chunk-YQ7Q52XU.js';
2
+ import { useMediaMatch } from './chunk-YJQXESOJ.js';
2
3
  import { EmptyState } from './chunk-PPUR46MK.js';
3
- import { useMediaMatch } from './chunk-RTPQDNW3.js';
4
4
  import { Button } from './chunk-DGXZ635L.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,8 +1,8 @@
1
1
  import { Link } from './chunk-QF5UNP4T.js';
2
- import { Tag } from './chunk-VERJCAJ4.js';
2
+ import { Tag } from './chunk-LBGKLYBY.js';
3
3
  import { RelativeTime } from './chunk-EJNJMHQG.js';
4
4
  import { EmptyValue } from './chunk-RE3FBGQQ.js';
5
- import { Avatar } from './chunk-KTIQSSME.js';
5
+ import { Avatar } from './chunk-XZY6S3UC.js';
6
6
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
8
8
  import './TableCells-TKSNLRK3.css';
@@ -1,6 +1,6 @@
1
1
  import { DiffList } from './chunk-LR4IWUWQ.js';
2
- import { Tag } from './chunk-VERJCAJ4.js';
3
- import { Disclosure } from './chunk-222VILSP.js';
2
+ import { Tag } from './chunk-LBGKLYBY.js';
3
+ import { Disclosure } from './chunk-LVJGN5II.js';
4
4
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './ChangeList-ITJMTVDF.css';
@@ -1,12 +1,12 @@
1
- import { Select } from './chunk-VK45YJLH.js';
2
- import { Modal } from './chunk-C667GCU7.js';
1
+ import { Select } from './chunk-3IWZVEXA.js';
2
+ import { Modal } from './chunk-ZXXZESCD.js';
3
3
  import { CopyButton } from './chunk-T5GBTXNC.js';
4
4
  import { Callout } from './chunk-BPCY7ZID.js';
5
- import { PrincipalAvatar } from './chunk-N2BF272H.js';
6
- import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
7
- import { useMediaMatch } from './chunk-RTPQDNW3.js';
5
+ import { PrincipalAvatar } from './chunk-HF5L56YQ.js';
6
+ import { useMediaMatch } from './chunk-YJQXESOJ.js';
8
7
  import { Button } from './chunk-DGXZ635L.js';
9
8
  import { IconButton } from './chunk-UAUP6XGK.js';
9
+ import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
10
10
  import { cx } from './chunk-ODEQTPFM.js';
11
11
  import './ShareDialog-72VTMM4K.css';
12
12
  import { useState, useId } from 'react';
@@ -1,6 +1,6 @@
1
1
  import { richEditorLabels } from './chunk-2DMTW2Y3.js';
2
2
  import { Callout } from './chunk-BPCY7ZID.js';
3
- import { Skeleton } from './chunk-BRLZXYPA.js';
3
+ import { Skeleton } from './chunk-I4IUX3JF.js';
4
4
  import { Button } from './chunk-DGXZ635L.js';
5
5
  import './RichEditor-5CF3QV3J.css';
6
6
  import { forwardRef, useState, useEffect } from 'react';
@@ -9,7 +9,7 @@ import { jsx } from 'react/jsx-runtime';
9
9
  var engine = null;
10
10
  var loading = null;
11
11
  function loadEngine() {
12
- loading ??= import('./Editor-IMYESOW7.js').then(
12
+ loading ??= import('./Editor-5D5Z3LBQ.js').then(
13
13
  (module) => {
14
14
  engine = module.Editor;
15
15
  return engine;
@@ -1,7 +1,7 @@
1
- import { tabId } from './chunk-2IIHMJMZ.js';
1
+ import { tabId } from './chunk-MVKUE4FI.js';
2
2
  import { useRoving, tabStop } from './chunk-EGMQURBR.js';
3
- import { Count } from './chunk-MLDTLZAO.js';
4
3
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
4
+ import { Count } from './chunk-D2GT3CR4.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import { useState, useId } from 'react';
@@ -1,5 +1,5 @@
1
- import { BrandLockup } from './chunk-7KBNFFM3.js';
2
- import { Card } from './chunk-4AUTALJA.js';
1
+ import { BrandLockup } from './chunk-KXWJJWBD.js';
2
+ import { Card } from './chunk-U2IQNDDR.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './AuthLayout-ODHBUPHQ.css';
5
5
  import { useId } from 'react';
@@ -1,3 +1,4 @@
1
+ import { prefersReducedMotion } from './chunk-YJQXESOJ.js';
1
2
  import { announce } from './chunk-2G355KDJ.js';
2
3
  import { useId, useState, useRef, useCallback, useLayoutEffect, useMemo } from 'react';
3
4
 
@@ -24,7 +25,7 @@ function place(lists, key, list, index) {
24
25
  return next;
25
26
  }
26
27
  var SETTLE_MS = 200;
27
- var settleMs = () => typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? 20 : SETTLE_MS;
28
+ var settleMs = () => prefersReducedMotion() ? 20 : SETTLE_MS;
28
29
  var now = () => typeof performance !== "undefined" ? performance.now() : Date.now();
29
30
  function byRows(node, axis) {
30
31
  if (axis === "vertical") return true;
@@ -79,7 +80,7 @@ function useReorderLists({
79
80
  const last = before.current;
80
81
  before.current = /* @__PURE__ */ new Map();
81
82
  if (last.size === 0) return;
82
- if (typeof window === "undefined" || window.matchMedia?.("(prefers-reduced-motion: reduce)").matches) return;
83
+ if (typeof window === "undefined" || prefersReducedMotion()) return;
83
84
  for (const [key, node] of nodes.current) {
84
85
  const was = last.get(key);
85
86
  if (!was) continue;