@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
@@ -1,11 +1,11 @@
1
- import { HeadingLevelProvider } from './chunk-PQADV6P6.js';
2
1
  import { useAppShellAside, ResizeHandle } from './chunk-PIYJNCN7.js';
3
- import { useModalLayer } from './chunk-H5XTJ7GJ.js';
2
+ import { useModalLayer } from './chunk-TUEM2XIW.js';
4
3
  import { IconButton } from './chunk-UAUP6XGK.js';
4
+ import { HeadingLevelProvider } from './chunk-PQADV6P6.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import { createContext, useId, useRef, useContext, useLayoutEffect, useEffect, useMemo } from 'react';
7
7
  import { MinimizeGlyph, MaximizeGlyph, XGlyph } from '@crewlethq/icons/glyphs';
8
- import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
8
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
 
10
10
  var SidePanelFrameContext = createContext(null);
11
11
  function part(name, alias) {
@@ -14,6 +14,7 @@ function part(name, alias) {
14
14
  function SidePanelBase({
15
15
  alias,
16
16
  title,
17
+ subtitle,
17
18
  icon,
18
19
  onClose,
19
20
  closeLabel,
@@ -39,6 +40,7 @@ function SidePanelBase({
39
40
  children
40
41
  }) {
41
42
  const titleId = useId();
43
+ const subtitled = subtitle !== void 0 && subtitle !== null && subtitle !== false && !hideTitle;
42
44
  const panelId = useId();
43
45
  const root = useRef(null);
44
46
  const heading = useRef(null);
@@ -79,6 +81,20 @@ function SidePanelBase({
79
81
  }, []);
80
82
  const sized = !inShell && !expanded && width !== void 0;
81
83
  const grip = resizable && !inShell && !expanded && (shape === null || shape === "column") && width !== void 0 && onWidthChange;
84
+ const headingNode = /* @__PURE__ */ jsx(
85
+ "h2",
86
+ {
87
+ ref: heading,
88
+ id: titleId,
89
+ className: cx(
90
+ part("title", alias),
91
+ !ringHeading && "crewlet-side-panel__title--quiet",
92
+ hideTitle && "crewlet-side-panel__title--hidden"
93
+ ),
94
+ tabIndex: -1,
95
+ children: title
96
+ }
97
+ );
82
98
  return /* @__PURE__ */ jsxs(Fragment, { children: [
83
99
  /* @__PURE__ */ jsxs(
84
100
  "div",
@@ -106,22 +122,17 @@ function SidePanelBase({
106
122
  edge: "left"
107
123
  }
108
124
  ) : null,
109
- /* @__PURE__ */ jsxs("div", { className: part("head", alias), children: [
125
+ /* @__PURE__ */ jsxs("div", { className: cx(part("head", alias), subtitled && "crewlet-side-panel__head--subtitled"), children: [
110
126
  icon ? /* @__PURE__ */ jsx("span", { className: part("icon", alias), "aria-hidden": true, children: icon }) : null,
111
- /* @__PURE__ */ jsx(
112
- "h2",
113
- {
114
- ref: heading,
115
- id: titleId,
116
- className: cx(
117
- part("title", alias),
118
- !ringHeading && "crewlet-side-panel__title--quiet",
119
- hideTitle && "crewlet-side-panel__title--hidden"
120
- ),
121
- tabIndex: -1,
122
- children: title
123
- }
124
- ),
127
+ subtitled ? (
128
+ /* THE TITLE AND WHAT IT IS ABOUT, on one baseline ("Thread" and the
129
+ room it is in), the second dropping under the first when the two
130
+ do not fit, and the title ellipsised on its own line. */
131
+ /* @__PURE__ */ jsxs("div", { className: part("heading", alias), children: [
132
+ headingNode,
133
+ /* @__PURE__ */ jsx("span", { className: part("subtitle", alias), children: subtitle })
134
+ ] })
135
+ ) : headingNode,
125
136
  /* @__PURE__ */ jsxs("span", { className: part("actions", alias), children: [
126
137
  actions,
127
138
  onExpandedChange ? /* @__PURE__ */ jsx(
@@ -163,6 +174,7 @@ var SIDE_PANEL_LABELS = {
163
174
  };
164
175
  function SidePanel({
165
176
  title,
177
+ subtitle,
166
178
  icon,
167
179
  hideTitle,
168
180
  onClose,
@@ -186,6 +198,7 @@ function SidePanel({
186
198
  SidePanelBase,
187
199
  {
188
200
  title,
201
+ subtitle,
189
202
  icon,
190
203
  hideTitle,
191
204
  onClose,
@@ -1,6 +1,6 @@
1
1
  import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
2
- import { usePopupLayer, focusables } from './chunk-H5XTJ7GJ.js';
3
- import { returnFocus } from './chunk-NUZHC6MM.js';
2
+ import { usePopupLayer, focusables } from './chunk-TUEM2XIW.js';
3
+ import { returnFocus } from './chunk-4ITETIGZ.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './Popover-QCINR7WG.css';
6
6
  import { useId, useState, useRef, useCallback, useLayoutEffect, useEffect, cloneElement } from 'react';
@@ -1,17 +1,17 @@
1
1
  import { PageHeader } from './chunk-FPDIHEM4.js';
2
2
  import { FilterPill } from './chunk-K4LZXSKZ.js';
3
- import { DateTimePicker } from './chunk-HPI5J6AR.js';
4
- import { DataTable } from './chunk-CZQ7UITX.js';
5
- import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
6
- import { Toolbar } from './chunk-NR4CPM4T.js';
7
- import { Popover } from './chunk-KHJIEPZV.js';
3
+ import { DateTimePicker } from './chunk-XGLMPPDW.js';
4
+ import { DataTable } from './chunk-P6F3PE4V.js';
5
+ import { useListbox, useOptionKeys } from './chunk-YGRTX67J.js';
6
+ import { Toolbar } from './chunk-NXFTCPF6.js';
7
+ import { Popover } from './chunk-SM4P2SHB.js';
8
8
  import { RelativeTime } from './chunk-EJNJMHQG.js';
9
- import { Kbd } from './chunk-ANTAQAR4.js';
10
- import { Input } from './chunk-FB3TCNQP.js';
11
- import { Count } from './chunk-MLDTLZAO.js';
12
- import { Menu } from './chunk-OQG4P5KU.js';
9
+ import { Menu } from './chunk-YOJAGKTS.js';
10
+ import { Input } from './chunk-O7N6W52M.js';
11
+ import { Kbd } from './chunk-CMAZZY2I.js';
13
12
  import { Button } from './chunk-DGXZ635L.js';
14
13
  import { IconButton } from './chunk-UAUP6XGK.js';
14
+ import { Count } from './chunk-D2GT3CR4.js';
15
15
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
16
16
  import { cx } from './chunk-ODEQTPFM.js';
17
17
  import './DataView-L7HLNW7C.css';
@@ -1,18 +1,21 @@
1
1
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
2
- import { Menu } from './chunk-OQG4P5KU.js';
2
+ import { useRailShape, RailShapeContext } from './chunk-ISQANI6Q.js';
3
+ import { Tooltip } from './chunk-3QQIGMY3.js';
4
+ import { Menu } from './chunk-YOJAGKTS.js';
3
5
  import { PeekContext, AsideContext, ResizeHandle, clampSize } from './chunk-PIYJNCN7.js';
6
+ import { isApplePlatform, ariaKeyshortcuts, Kbd } from './chunk-CMAZZY2I.js';
4
7
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
5
- import { focusables, useModalLayer, isComposing, layerCount } from './chunk-H5XTJ7GJ.js';
8
+ import { focusables, useModalLayer, isComposing, layerCount } from './chunk-TUEM2XIW.js';
9
+ import { returnFocus } from './chunk-4ITETIGZ.js';
6
10
  import { IconButton } from './chunk-UAUP6XGK.js';
7
- import { returnFocus } from './chunk-NUZHC6MM.js';
8
11
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
9
12
  import { cx } from './chunk-ODEQTPFM.js';
10
13
  import './HitArea-QUOS6ZDJ.css';
11
- import './AppShell-2IBUS4TH.css';
14
+ import './AppShell-F7RID4P4.css';
12
15
  import './ResizeHandle-2UNSZ4ZQ.css';
13
16
  import { createContext, forwardRef, useContext, useSyncExternalStore, useCallback, useId, useState, useRef, useEffect, useLayoutEffect } from 'react';
14
17
  import { breakpoint } from '@crewlethq/tokens';
15
- import { ChevronUpGlyph, ChevronsUpDownGlyph, ChevronRightGlyph, MenuGlyph } from '@crewlethq/icons/glyphs';
18
+ import { ChevronUpGlyph, ChevronsUpDownGlyph, ChevronRightGlyph, ChevronsRightGlyph, ChevronsLeftGlyph, MenuGlyph } from '@crewlethq/icons/glyphs';
16
19
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
17
20
 
18
21
  function AccountRow({
@@ -25,8 +28,11 @@ function AccountRow({
25
28
  title,
26
29
  linkSuffix = ", your account",
27
30
  actions,
31
+ compact: compactProp,
28
32
  className
29
33
  }) {
34
+ const railShape = useRailShape();
35
+ const compact = compactProp ?? railShape === "compact";
30
36
  const who = /* @__PURE__ */ jsxs(Fragment, { children: [
31
37
  /* @__PURE__ */ jsx("span", { className: "crewlet-account-row__avatar", children: avatar }),
32
38
  /* @__PURE__ */ jsxs("span", { className: "crewlet-account-row__text", children: [
@@ -38,6 +44,7 @@ function AccountRow({
38
44
  ] }) : null
39
45
  ] })
40
46
  ] });
47
+ if (compact) return /* @__PURE__ */ jsx(CompactAccount, { avatar, name, detail, href, menu, current, linkSuffix, className });
41
48
  return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-account-row", className), children: [
42
49
  menu ? /* @__PURE__ */ jsx(
43
50
  Menu,
@@ -79,6 +86,60 @@ function AccountRow({
79
86
  actions ? /* @__PURE__ */ jsx("div", { className: "crewlet-account-row__actions", children: actions }) : null
80
87
  ] });
81
88
  }
89
+ function CompactAccount({
90
+ avatar,
91
+ name,
92
+ detail,
93
+ href,
94
+ menu,
95
+ current,
96
+ linkSuffix,
97
+ className
98
+ }) {
99
+ const words = (suffix) => /* @__PURE__ */ jsxs(VisuallyHidden, { children: [
100
+ name,
101
+ detail ? /* @__PURE__ */ jsxs(Fragment, { children: [
102
+ ", ",
103
+ detail
104
+ ] }) : null,
105
+ suffix
106
+ ] });
107
+ const tip = /* @__PURE__ */ jsxs(Fragment, { children: [
108
+ name,
109
+ detail ? /* @__PURE__ */ jsxs(Fragment, { children: [
110
+ " \xB7 ",
111
+ detail
112
+ ] }) : null
113
+ ] });
114
+ const face = /* @__PURE__ */ jsx("span", { className: "crewlet-account-row__avatar", "aria-hidden": true, children: avatar });
115
+ const shape = cx("crewlet-account-row__who", "crewlet-account-row__who--compact", HIT_AREA_CLASS);
116
+ let control;
117
+ if (menu) {
118
+ control = /* @__PURE__ */ jsx(
119
+ Menu,
120
+ {
121
+ label: menu.label ?? "Your account",
122
+ items: menu.items,
123
+ header: menu.header,
124
+ renderTrigger: (trigger) => /* @__PURE__ */ jsx(Tooltip, { content: tip, children: /* @__PURE__ */ jsxs("button", { type: "button", className: shape, "data-current": current ? "" : void 0, ...trigger, children: [
125
+ face,
126
+ words(linkSuffix)
127
+ ] }) })
128
+ }
129
+ );
130
+ } else if (href === void 0) {
131
+ control = /* @__PURE__ */ jsx(Tooltip, { content: tip, children: /* @__PURE__ */ jsxs("span", { className: "crewlet-account-row__who crewlet-account-row__who--compact", children: [
132
+ face,
133
+ words("")
134
+ ] }) });
135
+ } else {
136
+ control = /* @__PURE__ */ jsx(Tooltip, { content: tip, children: /* @__PURE__ */ jsxs("a", { className: shape, href, "aria-current": current ? "page" : void 0, children: [
137
+ face,
138
+ words(linkSuffix)
139
+ ] }) });
140
+ }
141
+ return /* @__PURE__ */ jsx("div", { className: cx("crewlet-account-row", "crewlet-account-row--compact", className), children: control });
142
+ }
82
143
  function createScreenWidthStore() {
83
144
  let width = null;
84
145
  const listeners = /* @__PURE__ */ new Set();
@@ -141,6 +202,10 @@ function AppShell({
141
202
  navigationKey,
142
203
  toggleLabel = "Sections",
143
204
  skipLabel = "Skip to content",
205
+ rail: railChoice = "full",
206
+ onRailChange,
207
+ railFoldKeys,
208
+ railFoldLabels,
144
209
  aside,
145
210
  asideWidth = APP_SHELL_ASIDE_WIDTH,
146
211
  asideReserve,
@@ -225,6 +290,9 @@ function AppShell({
225
290
  screenWidth.set(null);
226
291
  };
227
292
  }, [screenWidth]);
293
+ const hasRail = sidebar !== void 0 && sidebar !== null;
294
+ const railShape = hasRail && railChoice === "compact" && !narrow ? "compact" : "full";
295
+ const foldable = hasRail && onRailChange !== void 0 && !narrow;
228
296
  const shell = {
229
297
  narrow,
230
298
  drawerOpen,
@@ -234,7 +302,8 @@ function AppShell({
234
302
  scroller,
235
303
  railId,
236
304
  toggleLabel,
237
- hasRail: sidebar !== void 0 && sidebar !== null
305
+ hasRail,
306
+ rail: railShape
238
307
  };
239
308
  return /* @__PURE__ */ jsx(AppShellContext.Provider, { value: shell, children: /* @__PURE__ */ jsxs(
240
309
  "div",
@@ -244,13 +313,16 @@ function AppShell({
244
313
  className: cx(
245
314
  "crewlet-app-shell",
246
315
  fill && "crewlet-app-shell--fill",
316
+ fill === "flush" && "crewlet-app-shell--fill-flush",
247
317
  // Named on the root rather than read off the tree by a selector,
248
318
  // because a shell with no rail is one column whatever else it holds.
249
319
  !shell.hasRail && "crewlet-app-shell--no-rail",
320
+ foldable && "crewlet-app-shell--foldable",
250
321
  className
251
322
  ),
252
323
  "data-aside": hasAside ? asideShape : void 0,
253
324
  "data-peek": hasPeek ? peekShape : void 0,
325
+ "data-rail": hasRail ? railShape : void 0,
254
326
  style: {
255
327
  ...style,
256
328
  ["--crewlet-app-shell-gutter"]: `${gutter}px`,
@@ -279,7 +351,7 @@ function AppShell({
279
351
  }
280
352
  ),
281
353
  drawerOpen ? /* @__PURE__ */ jsx(ShellDrawer, { rail, onClose: closeDrawer, onZIndex: setDrawerZ }) : null,
282
- shell.hasRail ? /* @__PURE__ */ jsx(
354
+ shell.hasRail ? /* @__PURE__ */ jsxs(
283
355
  "aside",
284
356
  {
285
357
  ref: rail,
@@ -289,7 +361,10 @@ function AppShell({
289
361
  role: drawerOpen ? "dialog" : void 0,
290
362
  "aria-modal": drawerOpen || void 0,
291
363
  "aria-label": drawerOpen ? toggleLabel : void 0,
292
- children: sidebar
364
+ children: [
365
+ foldable ? /* @__PURE__ */ jsx(RailFold, { rail: railShape, onRailChange, keys: railFoldKeys, labels: railFoldLabels, railId }) : null,
366
+ /* @__PURE__ */ jsx(RailShapeContext.Provider, { value: railShape, children: sidebar })
367
+ ]
293
368
  }
294
369
  ) : null,
295
370
  /* @__PURE__ */ jsxs("div", { ref: sheet, className: "crewlet-app-shell__sheet", children: [
@@ -454,17 +529,58 @@ function ShellDrawer({
454
529
  }
455
530
  );
456
531
  }
532
+ function RailFold({
533
+ rail,
534
+ onRailChange,
535
+ keys,
536
+ labels,
537
+ railId
538
+ }) {
539
+ const compact = rail === "compact";
540
+ const label = compact ? labels?.expand ?? "Expand the sidebar" : labels?.collapse ?? "Collapse the sidebar";
541
+ const apple = isApplePlatform();
542
+ return /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__fold", children: /* @__PURE__ */ jsx(
543
+ Tooltip,
544
+ {
545
+ placement: "bottom",
546
+ content: /* @__PURE__ */ jsxs(Fragment, { children: [
547
+ label,
548
+ keys ? /* @__PURE__ */ jsxs(Fragment, { children: [
549
+ " ",
550
+ /* @__PURE__ */ jsx(Kbd, { keys, subtle: true, apple })
551
+ ] }) : null
552
+ ] }),
553
+ children: /* @__PURE__ */ jsx(
554
+ IconButton,
555
+ {
556
+ label,
557
+ size: "sm",
558
+ variant: "ghost",
559
+ icon: compact ? /* @__PURE__ */ jsx(ChevronsRightGlyph, { size: "sm" }) : /* @__PURE__ */ jsx(ChevronsLeftGlyph, { size: "sm" }),
560
+ "aria-controls": railId,
561
+ "aria-keyshortcuts": keys ? ariaKeyshortcuts(keys, apple) : void 0,
562
+ onClick: () => onRailChange?.(compact ? "full" : "compact")
563
+ }
564
+ )
565
+ }
566
+ ) });
567
+ }
457
568
  function AppShellRail({ header, search, status, footer, className, children }) {
569
+ const compact = useRailShape() === "compact";
570
+ const statusSlot = status ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-status", children: status }) : null;
458
571
  return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-app-shell__rail-inner", className), children: [
459
- header || status ? /* @__PURE__ */ jsxs("div", { className: "crewlet-app-shell__rail-head", children: [
572
+ header || status && !compact ? /* @__PURE__ */ jsxs("div", { className: "crewlet-app-shell__rail-head", children: [
460
573
  header,
461
- status ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-status", children: status }) : null
574
+ compact ? null : statusSlot
462
575
  ] }) : null,
463
576
  /* @__PURE__ */ jsxs("div", { className: "crewlet-app-shell__rail-body", children: [
464
- search ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-search", children: search }) : null,
577
+ search && !compact ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-search", children: search }) : null,
465
578
  children
466
579
  ] }),
467
- footer ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-foot", children: footer }) : null
580
+ footer || status && compact ? /* @__PURE__ */ jsxs("div", { className: "crewlet-app-shell__rail-foot", children: [
581
+ compact ? statusSlot : null,
582
+ footer
583
+ ] }) : null
468
584
  ] });
469
585
  }
470
586
  function countWords(count) {
@@ -1,7 +1,7 @@
1
- import { SlideStage } from './chunk-RMEBFYL7.js';
1
+ import { SlideStage } from './chunk-O6EV6GKI.js';
2
2
  import { useReorder } from './chunk-MPVMB2DV.js';
3
- import { Kbd, isApplePlatform } from './chunk-ANTAQAR4.js';
4
- import { Menu } from './chunk-OQG4P5KU.js';
3
+ import { Menu } from './chunk-YOJAGKTS.js';
4
+ import { Kbd, isApplePlatform } from './chunk-CMAZZY2I.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './SlideFilmstrip-BLGBCLEU.css';
@@ -0,0 +1,6 @@
1
+ // src/utils/heldHint.ts
2
+ function heldHint(hint, reason) {
3
+ return reason ? `${hint}. ${reason}` : hint;
4
+ }
5
+
6
+ export { heldHint };
@@ -1,5 +1,5 @@
1
1
  import { diffLines, diffStat, collapseDiff, DiffSummary, DiffView } from './chunk-AOFVXE6V.js';
2
- import { SegmentedControl } from './chunk-6R334YT3.js';
2
+ import { SegmentedControl } from './chunk-GZVAZ3LL.js';
3
3
  import { EmptyState } from './chunk-PPUR46MK.js';
4
4
  import { useHeadingLevel, headingTag, nextHeadingLevel, HeadingLevelProvider } from './chunk-PQADV6P6.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
@@ -0,0 +1,114 @@
1
+ import { Tag } from './chunk-LBGKLYBY.js';
2
+ import { isComposing } from './chunk-TUEM2XIW.js';
3
+ import { useFocusModality } from './chunk-4ITETIGZ.js';
4
+ import { announce } from './chunk-2G355KDJ.js';
5
+ import { cx } from './chunk-ODEQTPFM.js';
6
+ import './Tag-WLDOROB5.css';
7
+ import './ChipField-D4CW6XFA.css';
8
+ import { useRef } from 'react';
9
+ import { jsxs, jsx } from 'react/jsx-runtime';
10
+
11
+ var CHIP_FIELD_LABELS = {
12
+ remove: (label) => `Remove ${label}`,
13
+ removed: (label) => `Removed ${label}`,
14
+ chosen: "Chosen"
15
+ };
16
+ function ChipField({
17
+ items,
18
+ onRemove,
19
+ query,
20
+ onQueryChange,
21
+ onCommit,
22
+ label,
23
+ prefix,
24
+ variant = "boxed",
25
+ inputRef,
26
+ labels: overrides,
27
+ className,
28
+ disabled = false,
29
+ onKeyDown,
30
+ ...input
31
+ }) {
32
+ useFocusModality();
33
+ const labels = overrides ? { ...CHIP_FIELD_LABELS, ...overrides } : CHIP_FIELD_LABELS;
34
+ const box = useRef(null);
35
+ const setBox = (el) => {
36
+ box.current = el;
37
+ if (typeof inputRef === "function") inputRef(el);
38
+ else if (inputRef) inputRef.current = el;
39
+ };
40
+ const remove = (item) => {
41
+ onRemove(item.id);
42
+ announce(labels.removed(item.label));
43
+ box.current?.focus();
44
+ };
45
+ const keys = (event) => {
46
+ onKeyDown?.(event);
47
+ if (event.defaultPrevented || isComposing(event)) return;
48
+ if (event.key === "Backspace" && query === "") {
49
+ const last = items.at(-1);
50
+ if (!last) return;
51
+ event.preventDefault();
52
+ remove(last);
53
+ return;
54
+ }
55
+ if (event.key === "Enter" && onCommit && query.trim() !== "" && !event.metaKey && !event.ctrlKey && !event.altKey) {
56
+ event.preventDefault();
57
+ onCommit();
58
+ }
59
+ };
60
+ const pressRow = (event) => {
61
+ if (disabled || event.target !== event.currentTarget) return;
62
+ event.preventDefault();
63
+ box.current?.focus();
64
+ };
65
+ return (
66
+ // The row is not a control: its press only forwards the caret to the
67
+ // box, which is the field's one keyboard stop besides the chips' Remove.
68
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
69
+ /* @__PURE__ */ jsxs(
70
+ "div",
71
+ {
72
+ className: cx("crewlet-chip-field", `crewlet-chip-field--${variant}`, disabled && "is-disabled", className),
73
+ onMouseDown: pressRow,
74
+ children: [
75
+ prefix ? /* @__PURE__ */ jsx("span", { className: "crewlet-chip-field__prefix", children: prefix }) : null,
76
+ items.length > 0 ? (
77
+ // THE ROLE IS SPELLED OUT. The list is `display: contents`, so its
78
+ // chips wrap in one line with the box, and a browser that drops a
79
+ // contents box from the accessibility tree drops its list role too.
80
+ // eslint-disable-next-line jsx-a11y/no-redundant-roles
81
+ /* @__PURE__ */ jsx("ul", { role: "list", className: "crewlet-chip-field__chips", "aria-label": labels.chosen, children: items.map((item) => /* @__PURE__ */ jsx("li", { className: "crewlet-chip-field__chip", children: /* @__PURE__ */ jsx(
82
+ Tag,
83
+ {
84
+ size: "sm",
85
+ leadingIcon: item.leading,
86
+ onRemove: disabled ? void 0 : () => remove(item),
87
+ removeAriaLabel: labels.remove(item.label),
88
+ children: item.label
89
+ }
90
+ ) }, item.id)) })
91
+ ) : null,
92
+ /* @__PURE__ */ jsx(
93
+ "input",
94
+ {
95
+ autoComplete: "off",
96
+ spellCheck: false,
97
+ ...input,
98
+ ref: setBox,
99
+ type: "text",
100
+ "aria-label": label,
101
+ className: "crewlet-chip-field__input",
102
+ value: query,
103
+ disabled,
104
+ onChange: (event) => onQueryChange(event.target.value),
105
+ onKeyDown: keys
106
+ }
107
+ )
108
+ ]
109
+ }
110
+ )
111
+ );
112
+ }
113
+
114
+ export { CHIP_FIELD_LABELS, ChipField };
@@ -1,4 +1,4 @@
1
- import { returnFocus } from './chunk-NUZHC6MM.js';
1
+ import { returnFocus } from './chunk-4ITETIGZ.js';
2
2
  import { useRef, useState, useLayoutEffect, useEffect, useCallback, useSyncExternalStore } from 'react';
3
3
  import { zIndex } from '@crewlethq/tokens';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { CardHeaderSlotContext } from './chunk-AV2DXAEL.js';
2
- import { Count } from './chunk-MLDTLZAO.js';
2
+ import { Count } from './chunk-D2GT3CR4.js';
3
3
  import { useHeadingLevel, HeadingLevelProvider, nextHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './Card-O35OMBQ5.css';
@@ -1,4 +1,4 @@
1
- import { Count } from './chunk-MLDTLZAO.js';
1
+ import { Count } from './chunk-D2GT3CR4.js';
2
2
  import { headingTag } from './chunk-PQADV6P6.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import { ChevronDownGlyph } from '@crewlethq/icons/glyphs';
@@ -1,6 +1,6 @@
1
1
  import { frameThemeMessage, readFrameHello, frameOriginMatches, negotiateBridge, FRAME_MESSAGE, portTargetOrigin, checkFrameSandbox, httpOrigin, isFrameNonce, frameFragment, readOpenLink, externalUrl, isFocusExit } from './chunk-F6V2PTN6.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 { cx } from './chunk-ODEQTPFM.js';
6
6
  import './SandboxedFrame-P5NASXB7.css';
@@ -1,10 +1,10 @@
1
- import { Modal } from './chunk-C667GCU7.js';
2
- import { useListbox, useHighlightRest } from './chunk-7KHM2FZH.js';
3
- import { Kbd } from './chunk-ANTAQAR4.js';
4
- import { Input } from './chunk-FB3TCNQP.js';
5
- import { Count } from './chunk-MLDTLZAO.js';
1
+ import { Modal } from './chunk-XXDB6KPV.js';
2
+ import { useListbox, useHighlightRest } from './chunk-YGRTX67J.js';
3
+ import { Input } from './chunk-O7N6W52M.js';
4
+ import { Kbd } from './chunk-CMAZZY2I.js';
6
5
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
7
- import { isComposing } from './chunk-H5XTJ7GJ.js';
6
+ import { isComposing } from './chunk-TUEM2XIW.js';
7
+ import { Count } from './chunk-D2GT3CR4.js';
8
8
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
9
9
  import { cx } from './chunk-ODEQTPFM.js';
10
10
  import './HitArea-QUOS6ZDJ.css';
@@ -1,6 +1,6 @@
1
1
  import { Switch } from './chunk-3XDT5ZWL.js';
2
2
  import { useReorder } from './chunk-MPVMB2DV.js';
3
- import { Checkbox } from './chunk-LMQG3VPG.js';
3
+ import { Checkbox } from './chunk-YQ7Q52XU.js';
4
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- import { Tag } from './chunk-VERJCAJ4.js';
1
+ import { Tag } from './chunk-LBGKLYBY.js';
2
2
  import './PricingCard-BXMLP7KD.css';
3
3
  import { forwardRef } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { StepStateMark } from './chunk-RJWO2PC5.js';
2
- import { DisclosureAnatomy } from './chunk-IVTQWOXV.js';
2
+ import { DisclosureAnatomy } from './chunk-ULYHDP7U.js';
3
3
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './RunChip-K5DGHXHO.css';
@@ -1,7 +1,7 @@
1
- import { Toolbar } from './chunk-NR4CPM4T.js';
2
- import { announce } from './chunk-2G355KDJ.js';
1
+ import { Toolbar } from './chunk-NXFTCPF6.js';
3
2
  import { Button } from './chunk-DGXZ635L.js';
4
- import { returnFocus } from './chunk-NUZHC6MM.js';
3
+ import { returnFocus } from './chunk-4ITETIGZ.js';
4
+ import { announce } from './chunk-2G355KDJ.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './SelectionBar-SCAU6EBY.css';
7
7
  import { useRef, useEffect } from 'react';
@@ -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-SM4P2SHB.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,4 +1,4 @@
1
- import { SlideStage } from './chunk-RMEBFYL7.js';
1
+ import { SlideStage } from './chunk-O6EV6GKI.js';
2
2
  import { Button } from './chunk-DGXZ635L.js';
3
3
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- import { DisclosureAnatomy } from './chunk-IVTQWOXV.js';
1
+ import { DisclosureAnatomy } from './chunk-ULYHDP7U.js';
2
2
  import { useHeadingLevel } from './chunk-PQADV6P6.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './Disclosure-D727FN5X.css';