@crewlethq/ui 0.55.0 → 0.56.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 (315) hide show
  1. package/README.md +87 -4
  2. package/dist/Accordion/index.js +2 -2
  3. package/dist/AgentHandoffPanel/index.js +14 -9
  4. package/dist/AppShell/AppShell.d.ts +74 -1
  5. package/dist/AppShell/ResizeHandle.d.ts +74 -0
  6. package/dist/AppShell/index.d.ts +7 -2
  7. package/dist/AppShell/index.js +6 -4
  8. package/dist/AppShell/regions.d.ts +34 -0
  9. package/dist/AppShell/storedWidth.d.ts +47 -0
  10. package/dist/{AppShell-5LPXYUV3.css → AppShell-ZVCJRGXH.css} +172 -1
  11. package/dist/ArrangeFrame/index.js +2 -2
  12. package/dist/ArrangeList/index.js +5 -5
  13. package/dist/ArtifactBar/ArtifactBar.d.ts +13 -2
  14. package/dist/ArtifactBar/index.js +9 -8
  15. package/dist/{ArtifactBar-UMZCTARR.css → ArtifactBar-LEBMR35Y.css} +19 -1
  16. package/dist/ArtifactCard/index.js +6 -6
  17. package/dist/ArtifactNameCell/ArtifactNameCell.d.ts +7 -1
  18. package/dist/ArtifactNameCell/index.js +1 -1
  19. package/dist/ArtifactPanel/ArtifactPanel.d.ts +11 -17
  20. package/dist/ArtifactPanel/index.d.ts +3 -0
  21. package/dist/ArtifactPanel/index.js +8 -2
  22. package/dist/ArtifactPanel-TN4FFK2F.css +43 -0
  23. package/dist/AvatarPicker/index.js +9 -8
  24. package/dist/Button/index.js +2 -1
  25. package/dist/{Button-UWKBTKYD.css → Button-VXJ7M5XF.css} +9 -32
  26. package/dist/Canvas/index.js +5 -4
  27. package/dist/CanvasBoard/index.js +7 -6
  28. package/dist/CanvasToolbar/index.js +6 -5
  29. package/dist/ChangeList/ChangeList.d.ts +114 -0
  30. package/dist/ChangeList/index.d.ts +3 -0
  31. package/dist/ChangeList/index.js +10 -0
  32. package/dist/ChangeList-CB2DLR5S.css +151 -0
  33. package/dist/ChatThread/ChatThread.d.ts +53 -0
  34. package/dist/ChatThread/index.d.ts +3 -0
  35. package/dist/ChatThread/index.js +6 -0
  36. package/dist/ChatThread-52KMDXHB.css +58 -0
  37. package/dist/Checkbox/index.js +4 -4
  38. package/dist/CodeBlock/index.js +5 -4
  39. package/dist/ColorField/index.js +4 -4
  40. package/dist/ColorSwatch/index.js +5 -4
  41. package/dist/Combobox/index.js +5 -5
  42. package/dist/CommandPalette/index.js +9 -8
  43. package/dist/CommentThread/index.js +9 -7
  44. package/dist/Composer/Composer.d.ts +39 -2
  45. package/dist/Composer/index.js +5 -4
  46. package/dist/Composer-JSGTOW3F.css +192 -0
  47. package/dist/ConfirmField/index.js +4 -4
  48. package/dist/ConflictNote/index.js +3 -2
  49. package/dist/ContrastHelp/index.js +2 -2
  50. package/dist/Copyable/index.js +4 -3
  51. package/dist/DataGrid/driving.d.ts +48 -0
  52. package/dist/DataGrid/index.d.ts +2 -0
  53. package/dist/DataGrid/index.js +8 -7
  54. package/dist/DataTable/index.js +10 -9
  55. package/dist/DataView/index.js +14 -13
  56. package/dist/DatasetSource/index.js +2 -2
  57. package/dist/DateTimePicker/index.js +4 -3
  58. package/dist/DiffList/DiffList.d.ts +12 -3
  59. package/dist/DiffList/index.d.ts +1 -1
  60. package/dist/DiffList/index.js +1 -1
  61. package/dist/{DiffList-3EX64AAE.css → DiffList-GE6YBRLJ.css} +53 -0
  62. package/dist/Disclosure/anatomy.d.ts +14 -1
  63. package/dist/Disclosure/index.js +2 -2
  64. package/dist/{Disclosure-P4FH3C35.css → Disclosure-FVMA4RW2.css} +36 -0
  65. package/dist/DocTabsEditor/index.js +8 -7
  66. package/dist/DownloadButton/DownloadButton.d.ts +21 -4
  67. package/dist/DownloadButton/index.d.ts +1 -1
  68. package/dist/DownloadButton/index.js +4 -3
  69. package/dist/EditingStatus/index.js +2 -2
  70. package/dist/{Editor-GNKMX3VF.js → Editor-X2J47LPD.js} +7 -6
  71. package/dist/EntityList/EntityList.d.ts +37 -0
  72. package/dist/EntityList/index.d.ts +3 -0
  73. package/dist/EntityList/index.js +10 -0
  74. package/dist/EntityList-XIICECVC.css +55 -0
  75. package/dist/ErrorBoundary/index.js +3 -2
  76. package/dist/FileDrop/index.js +3 -2
  77. package/dist/FollowBanner/index.js +3 -2
  78. package/dist/HuePicker/index.js +8 -7
  79. package/dist/IconButton/IconButton.d.ts +6 -1
  80. package/dist/IconButton/index.js +1 -1
  81. package/dist/{IconButton-K24JQHLF.css → IconButton-6WA7UEBJ.css} +44 -21
  82. package/dist/IconTile/IconTile.d.ts +8 -2
  83. package/dist/IconTile/index.js +1 -1
  84. package/dist/{IconTile-4GNWTLAW.css → IconTile-G52XZVR4.css} +3 -0
  85. package/dist/InlineEditor/index.js +6 -5
  86. package/dist/Input/index.js +3 -3
  87. package/dist/LinkInterstitial/index.js +6 -5
  88. package/dist/ListInput/index.js +7 -6
  89. package/dist/LogoSlot/index.js +4 -3
  90. package/dist/MarkdownEditor/index.js +8 -7
  91. package/dist/Menu/index.js +4 -3
  92. package/dist/MergeConflicts/index.js +8 -7
  93. package/dist/MessageBubble/MessageBubble.d.ts +34 -0
  94. package/dist/MessageBubble/index.d.ts +3 -0
  95. package/dist/MessageBubble/index.js +2 -0
  96. package/dist/MessageBubble-GKO6X3QG.css +71 -0
  97. package/dist/Modal/index.js +5 -4
  98. package/dist/OpenInAppCard/OpenInAppCard.d.ts +44 -0
  99. package/dist/OpenInAppCard/index.d.ts +3 -0
  100. package/dist/OpenInAppCard/index.js +15 -0
  101. package/dist/OpenInAppCard-CKHCK7DO.css +24 -0
  102. package/dist/OrgTable/index.js +3 -3
  103. package/dist/PeekRail/PeekHost.d.ts +90 -0
  104. package/dist/PeekRail/PeekRail.d.ts +83 -0
  105. package/dist/PeekRail/activation.d.ts +30 -0
  106. package/dist/PeekRail/index.d.ts +8 -0
  107. package/dist/PeekRail/index.js +8 -0
  108. package/dist/PeekRail-4L5YUQMW.css +95 -0
  109. package/dist/PeopleRail/index.js +4 -3
  110. package/dist/PinTile/index.js +2 -2
  111. package/dist/PresenterView/index.js +5 -4
  112. package/dist/PrincipalPicker/index.js +6 -6
  113. package/dist/ProposalCard/ProposalCard.d.ts +134 -0
  114. package/dist/ProposalCard/index.d.ts +3 -0
  115. package/dist/ProposalCard/index.js +17 -0
  116. package/dist/ProposalCard-HLB3FNLA.css +19 -0
  117. package/dist/ReceiptStrip/ReceiptStrip.d.ts +66 -0
  118. package/dist/ReceiptStrip/index.d.ts +3 -0
  119. package/dist/ReceiptStrip/index.js +5 -0
  120. package/dist/ReceiptStrip-IIRKRTBG.css +93 -0
  121. package/dist/RefusalCard/RefusalCard.d.ts +34 -0
  122. package/dist/RefusalCard/index.d.ts +3 -0
  123. package/dist/RefusalCard/index.js +10 -0
  124. package/dist/RefusalCard-UM67F5HB.css +8 -0
  125. package/dist/RelativeTime/clock.d.ts +0 -6
  126. package/dist/RelativeTime/index.js +1 -1
  127. package/dist/ResizeHandle-2UNSZ4ZQ.css +59 -0
  128. package/dist/ResultTableCard/ResultTableCard.d.ts +64 -0
  129. package/dist/ResultTableCard/index.d.ts +3 -0
  130. package/dist/ResultTableCard/index.js +16 -0
  131. package/dist/ResultTableCard-HZRUDNTX.css +40 -0
  132. package/dist/ReviewList/index.js +2 -2
  133. package/dist/RichEditor/index.js +3 -2
  134. package/dist/RunChip/RunChip.d.ts +53 -0
  135. package/dist/RunChip/index.d.ts +3 -0
  136. package/dist/RunChip/index.js +10 -0
  137. package/dist/RunChip-I2S4VZ3R.css +43 -0
  138. package/dist/SandboxedFrame/index.js +3 -2
  139. package/dist/SegmentedControl/index.js +7 -6
  140. package/dist/SelectionBar/index.js +4 -3
  141. package/dist/SendButton/SendButton.d.ts +38 -0
  142. package/dist/SendButton/index.d.ts +2 -0
  143. package/dist/SendButton/index.js +4 -0
  144. package/dist/SetupWizard/index.js +6 -5
  145. package/dist/ShareDialog/index.js +8 -7
  146. package/dist/SheetColumnEditor/index.js +13 -12
  147. package/dist/SheetGrid/index.js +7 -6
  148. package/dist/SidePanel/SidePanel.d.ts +137 -0
  149. package/dist/SidePanel/SidePanelBase.d.ts +59 -0
  150. package/dist/SidePanel/index.d.ts +5 -0
  151. package/dist/SidePanel/index.js +11 -0
  152. package/dist/SidePanel-ERBUIELD.css +235 -0
  153. package/dist/SlideCompare/index.js +3 -2
  154. package/dist/SlideFilmstrip/index.js +7 -6
  155. package/dist/SlideNav/index.js +2 -2
  156. package/dist/Spinner/Spinner.d.ts +35 -0
  157. package/dist/Spinner/index.d.ts +3 -0
  158. package/dist/Spinner/index.js +2 -0
  159. package/dist/Spinner-XZ2TVYE5.css +46 -0
  160. package/dist/StatusCard/StatusCard.d.ts +59 -0
  161. package/dist/StatusCard/index.d.ts +3 -0
  162. package/dist/StatusCard/index.js +9 -0
  163. package/dist/StatusCard-6RPEE6UU.css +62 -0
  164. package/dist/StepList-A4YVU4JI.css +119 -0
  165. package/dist/Stepper/StepList.d.ts +72 -0
  166. package/dist/Stepper/index.d.ts +3 -0
  167. package/dist/Stepper/index.js +2 -1
  168. package/dist/SuggestionRow/SuggestionRow.d.ts +45 -0
  169. package/dist/SuggestionRow/index.d.ts +3 -0
  170. package/dist/SuggestionRow/index.js +3 -0
  171. package/dist/SuggestionRow-OKBGNHSS.css +102 -0
  172. package/dist/Switcher/index.js +9 -8
  173. package/dist/Table/Table.d.ts +23 -2
  174. package/dist/Table/index.d.ts +1 -1
  175. package/dist/Table/index.js +1 -1
  176. package/dist/{Table-TGCS4C3F.css → Table-RUYMMWXT.css} +49 -0
  177. package/dist/TableCells/index.js +2 -2
  178. package/dist/Tabs/index.js +6 -5
  179. package/dist/TagsInput/index.js +4 -4
  180. package/dist/ThemeGallery/index.js +2 -2
  181. package/dist/ThemeSwitcher/index.js +8 -7
  182. package/dist/ThemeToggle/index.js +2 -2
  183. package/dist/TimeRangePicker/TimeRangePicker.d.ts +121 -0
  184. package/dist/TimeRangePicker/index.d.ts +2 -0
  185. package/dist/TimeRangePicker/index.js +23 -0
  186. package/dist/TimeWindowPicker/index.js +8 -7
  187. package/dist/Toaster/Toaster.d.ts +27 -3
  188. package/dist/Toaster/index.d.ts +2 -2
  189. package/dist/Toaster/index.js +1 -1
  190. package/dist/{Toaster-C6BQ7L6I.css → Toaster-MX7TBMC3.css} +32 -11
  191. package/dist/TreeCanvas/index.js +6 -5
  192. package/dist/TreeGrid/index.js +2 -2
  193. package/dist/VersionCompare/index.js +9 -8
  194. package/dist/VersionTimeline/index.js +4 -3
  195. package/dist/WidgetFrame/index.js +2 -2
  196. package/dist/{chunk-KHKZPZHO.js → chunk-272Y3YMV.js} +3 -3
  197. package/dist/{chunk-LACA4JGC.js → chunk-2BQYODY3.js} +1 -1
  198. package/dist/{chunk-CCPOLCZL.js → chunk-2TTFDRR3.js} +2 -2
  199. package/dist/{chunk-4BJK7FE5.js → chunk-3EYSYEXP.js} +1 -1
  200. package/dist/chunk-3LI4TRUR.js +22 -0
  201. package/dist/{chunk-ATCHK6LC.js → chunk-3NQS6KYG.js} +1 -1
  202. package/dist/{chunk-V2N3BMOT.js → chunk-45KMH3E3.js} +11 -4
  203. package/dist/{chunk-ZMBPEHYH.js → chunk-4CBGIRVU.js} +1 -1
  204. package/dist/{chunk-DFW5PDU5.js → chunk-4OINEWR4.js} +1 -1
  205. package/dist/{chunk-5XKI4ITH.js → chunk-56P72ZBE.js} +4 -4
  206. package/dist/{chunk-J24Q4HTD.js → chunk-5NT6OIPP.js} +13 -3
  207. package/dist/{chunk-O2KT7HBD.js → chunk-5OMV75GE.js} +3 -3
  208. package/dist/{chunk-6RMZH7P7.js → chunk-672GLRBU.js} +2 -2
  209. package/dist/{chunk-MFXN46NN.js → chunk-67F2AM4R.js} +3 -3
  210. package/dist/{chunk-NQCY44B3.js → chunk-67MW366X.js} +2 -2
  211. package/dist/{chunk-URV6MGWT.js → chunk-6KLK7E76.js} +2 -2
  212. package/dist/{chunk-ZFM5L7M4.js → chunk-6NJW5KSX.js} +2 -2
  213. package/dist/{chunk-A4GFEMVI.js → chunk-6T6V5565.js} +1 -1
  214. package/dist/{chunk-THDGBD6Y.js → chunk-AKFHMLEX.js} +1 -1
  215. package/dist/{chunk-CNGHOTHV.js → chunk-AWSFK2IK.js} +2 -2
  216. package/dist/{chunk-HQJ24WPM.js → chunk-AZ5BKSGV.js} +1 -1
  217. package/dist/chunk-BLPT6GHV.js +31 -0
  218. package/dist/chunk-C3FX7ZSU.js +30 -0
  219. package/dist/{chunk-LDGQIDIZ.js → chunk-CGT4R7LW.js} +64 -2
  220. package/dist/{chunk-DM4JG4M5.js → chunk-D5OSP3KI.js} +3 -3
  221. package/dist/{chunk-BTHQFWMG.js → chunk-DOPPU6TZ.js} +4 -4
  222. package/dist/{chunk-AC22RZKC.js → chunk-DRT4L4WC.js} +17 -5
  223. package/dist/chunk-E4DZOE55.js +162 -0
  224. package/dist/chunk-EA23JG6R.js +9 -0
  225. package/dist/{chunk-WHL3XZCK.js → chunk-EBG3V4MK.js} +6 -6
  226. package/dist/{chunk-5JDHMDMQ.js → chunk-EDNZHW4K.js} +57 -7
  227. package/dist/{chunk-E6HXFFWO.js → chunk-EGL24VY5.js} +2 -2
  228. package/dist/{chunk-7SHAFLEX.js → chunk-ES4HR34Y.js} +2 -2
  229. package/dist/chunk-EVWTLFKI.js +102 -0
  230. package/dist/chunk-FA44M2YT.js +25 -0
  231. package/dist/{chunk-LKBZV5IT.js → chunk-FLTMDSC3.js} +1 -1
  232. package/dist/{chunk-XANKR3EP.js → chunk-FXQLNETQ.js} +2 -2
  233. package/dist/{chunk-G22NPQG4.js → chunk-GCASX3FD.js} +4 -4
  234. package/dist/{chunk-OGXHZHRX.js → chunk-GG4QZWMQ.js} +2 -2
  235. package/dist/{chunk-XP7EXNKF.js → chunk-GPW4M4OI.js} +2 -2
  236. package/dist/chunk-GZMEWWXW.js +78 -0
  237. package/dist/{chunk-OG6CL3EB.js → chunk-HD4QJ2SI.js} +3 -2
  238. package/dist/{chunk-SYY26XBX.js → chunk-HGCDJOEF.js} +2 -2
  239. package/dist/chunk-HGYHWWA5.js +54 -0
  240. package/dist/{chunk-ZS63CFDO.js → chunk-HL4CPLEK.js} +7 -7
  241. package/dist/{chunk-BEHFTRMZ.js → chunk-HNK43Z3P.js} +23 -5
  242. package/dist/{chunk-UO7JZVCO.js → chunk-HVEDVKXL.js} +1 -1
  243. package/dist/{chunk-FS4IH7VB.js → chunk-I7VG6RQE.js} +2 -2
  244. package/dist/{chunk-3RCHEFIL.js → chunk-ICJRP6QW.js} +2 -2
  245. package/dist/{chunk-YRIZAIU6.js → chunk-IDQBSMMZ.js} +2 -2
  246. package/dist/chunk-JILNCBBS.js +27 -0
  247. package/dist/{chunk-W5GM452Z.js → chunk-JJ3NOBJ6.js} +5 -5
  248. package/dist/chunk-JLRXCKTS.js +97 -0
  249. package/dist/{chunk-OJCVVCAZ.js → chunk-JMMS2PQU.js} +1 -1
  250. package/dist/{chunk-IVAR7NRW.js → chunk-JS2TRHBF.js} +3 -3
  251. package/dist/{chunk-3CZ7XAVY.js → chunk-KS7YIJ4S.js} +10 -6
  252. package/dist/{chunk-MU5KH3JF.js → chunk-LQ6AGUDL.js} +2 -2
  253. package/dist/chunk-LXYSWQNE.js +214 -0
  254. package/dist/{chunk-EKLEYNGR.js → chunk-MYX4XABB.js} +3 -3
  255. package/dist/{chunk-PM3JVNRY.js → chunk-N3ISZVLK.js} +1 -1
  256. package/dist/chunk-NEHSV55H.js +119 -0
  257. package/dist/{chunk-LLHO4FJK.js → chunk-NHJQXDHA.js} +1 -1
  258. package/dist/{chunk-NTZQN7OR.js → chunk-NI7WUPH3.js} +2 -2
  259. package/dist/{chunk-F6CKQX5D.js → chunk-NK3D66PB.js} +2 -2
  260. package/dist/{chunk-RHPBTE3F.js → chunk-NQGZRMUG.js} +1 -1
  261. package/dist/chunk-NVZCANJ5.js +3 -0
  262. package/dist/{chunk-RRO7UEYU.js → chunk-OHBXOEP3.js} +1 -1
  263. package/dist/{chunk-USVUSO3S.js → chunk-OHG7762N.js} +1 -1
  264. package/dist/{chunk-OBUQVGEG.js → chunk-OJ2QULVH.js} +1 -1
  265. package/dist/{chunk-ITTECHM4.js → chunk-OOZ5AGPS.js} +5 -5
  266. package/dist/{chunk-BZXY2L2D.js → chunk-OYAXKHVW.js} +1 -1
  267. package/dist/{chunk-WQQ5T5SA.js → chunk-OZIBNFLO.js} +1 -1
  268. package/dist/{chunk-DFK5EQTU.js → chunk-PDTEPN4D.js} +1 -1
  269. package/dist/chunk-PIYJNCN7.js +124 -0
  270. package/dist/{chunk-ZVV2VERB.js → chunk-Q6R6EUQ4.js} +3 -3
  271. package/dist/chunk-QYEOGGVS.js +161 -0
  272. package/dist/{chunk-NWGGH2LN.js → chunk-QZ4B72FP.js} +3 -3
  273. package/dist/chunk-RV2FGESF.js +98 -0
  274. package/dist/{chunk-TQ3C3Q7V.js → chunk-S5C64PTT.js} +1 -1
  275. package/dist/chunk-SDSBVVLL.js +45 -0
  276. package/dist/{chunk-ZNOXQACX.js → chunk-T4D7RZNI.js} +2 -2
  277. package/dist/{chunk-TDVPYBNL.js → chunk-TA72CURM.js} +1 -1
  278. package/dist/{chunk-WXOYHVWG.js → chunk-TD3UHDFY.js} +4 -4
  279. package/dist/{chunk-H7FUQCQY.js → chunk-TDQZ4LB5.js} +8 -6
  280. package/dist/chunk-TFGCNBWP.js +64 -0
  281. package/dist/{chunk-TMM32U7D.js → chunk-TKS7FTTO.js} +2 -2
  282. package/dist/{chunk-NKHS2RQ2.js → chunk-U5PJSGHG.js} +1 -1
  283. package/dist/{chunk-7CGPPAYR.js → chunk-UV4LOQ3E.js} +1 -1
  284. package/dist/{chunk-34ANLQW2.js → chunk-UVYGMCJ4.js} +173 -8
  285. package/dist/{chunk-ON2E46DX.js → chunk-VRNUKH2W.js} +1 -1
  286. package/dist/{chunk-XX2VQE55.js → chunk-WBRC3MNE.js} +1 -1
  287. package/dist/chunk-WDIVALLP.js +51 -0
  288. package/dist/{chunk-QMIWMLFI.js → chunk-WOW5SCEK.js} +1 -1
  289. package/dist/chunk-XODESBSR.js +250 -0
  290. package/dist/chunk-XQI2OUV4.js +59 -0
  291. package/dist/{chunk-EJWPYEG4.js → chunk-XRZGGB6I.js} +1 -1
  292. package/dist/{chunk-34C7NYIQ.js → chunk-Y73BQL74.js} +1 -1
  293. package/dist/{chunk-KIRQZG3G.js → chunk-YCGZK2E4.js} +1 -1
  294. package/dist/{chunk-5TK3C6RG.js → chunk-YCZ2FBKA.js} +1 -1
  295. package/dist/{chunk-TV2QW6GX.js → chunk-YEURM24I.js} +3 -3
  296. package/dist/{chunk-IW55G7XG.js → chunk-YNRKVY7X.js} +11 -1
  297. package/dist/chunk-YY445YFQ.js +55 -0
  298. package/dist/{chunk-LFHCXZO5.js → chunk-Z3GDMNMU.js} +3 -3
  299. package/dist/{chunk-LQPU5O3B.js → chunk-Z7PJF6F3.js} +3 -3
  300. package/dist/{chunk-HDHL773Z.js → chunk-ZH4MJM73.js} +1 -1
  301. package/dist/generated/index.d.ts +17 -0
  302. package/dist/generated/index.js +141 -122
  303. package/dist/index.js +141 -122
  304. package/dist/styles.css +1877 -218
  305. package/dist/utils/index.js +1 -1
  306. package/dist/utils/useDownload.d.ts +6 -0
  307. package/package.json +3 -3
  308. package/dist/ArtifactPanel-KKUUIPEU.css +0 -159
  309. package/dist/Composer-TXULCPPV.css +0 -99
  310. package/dist/chunk-4E5MWUUJ.js +0 -48
  311. package/dist/chunk-FZVJDJFN.js +0 -54
  312. package/dist/chunk-IXJHTFXG.js +0 -17
  313. package/dist/chunk-NBDN5JZV.js +0 -123
  314. package/dist/{chunk-UTESMBPL.js → chunk-ESUZ27TS.js} +1 -1
  315. /package/dist/{chunk-55MPFB2U.js → chunk-EWTPXRRM.js} +0 -0
@@ -0,0 +1,134 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ import { type ChangeListLabels, type ChangeListRow } from '../ChangeList/index.js';
3
+ import type { DiffListLabels } from '../DiffList/index.js';
4
+ /**
5
+ * Where a proposed change stands: `pending` (waiting on the person),
6
+ * `stepup` (the approval needs a fresh sign-in), `applying` (approved and
7
+ * being carried out), `applied`, `declined`, `expired`, `stale` (what it
8
+ * would change moved after it was prepared) and `failed` (refused or not
9
+ * carried out when approved).
10
+ */
11
+ export type ProposalState = 'pending' | 'stepup' | 'applying' | 'applied' | 'declined' | 'expired' | 'stale' | 'failed';
12
+ export declare const PROPOSAL_STATES: readonly ["pending", "stepup", "applying", "applied", "declined", "expired", "stale", "failed"];
13
+ /**
14
+ * Where the change lands: on the page the person is looking at (a filter on
15
+ * a list), which is applied, or in the company's records, which is saved.
16
+ * It decides the words of the busy and done states: "Applying" and "Applied",
17
+ * or "Saving" and "Saved".
18
+ */
19
+ export type ProposalScope = 'page' | 'server';
20
+ /** What the change does to a record: change fields of one, or create one. */
21
+ export type ProposalKind = 'change' | 'create';
22
+ export interface ProposalCardLabels {
23
+ needsApproval: string;
24
+ needsSignIn: string;
25
+ applying: string;
26
+ saving: string;
27
+ applied: string;
28
+ saved: string;
29
+ declined: string;
30
+ expired: string;
31
+ stale: string;
32
+ notApplied: string;
33
+ decline: string;
34
+ confirmIdentity: string;
35
+ prepareAgain: string;
36
+ tryAgain: string;
37
+ whatWillChange: string;
38
+ whatWillBeCreated: string;
39
+ whatChanged: string;
40
+ whatWasCreated: string;
41
+ whatWasProposed: string;
42
+ stepUpNotice: string;
43
+ declinedNotice: string;
44
+ expiredNotice: string;
45
+ staleNotice: string;
46
+ nothingChanged: string;
47
+ /** Why Decline is held while the approved change is carried out. */
48
+ busy: string;
49
+ }
50
+ export declare const PROPOSAL_CARD_LABELS: ProposalCardLabels;
51
+ export interface ProposalCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
52
+ /** The action itself, in sentence case: "Filter this list", "Create task", "Share artifact". */
53
+ title: string;
54
+ /** Where the change applies, as the card's subtitle: "This list only", "Saved for the company". */
55
+ subtitle?: ReactNode;
56
+ state: ProposalState;
57
+ /** `server` (the default) or `page`; see `ProposalScope`. */
58
+ scope?: ProposalScope | undefined;
59
+ /** `change` (the default) or `create`, which heads the list "What will be created". */
60
+ kind?: ProposalKind | undefined;
61
+ /** What the change does, in one sentence, above the list. */
62
+ summary?: ReactNode;
63
+ /** The change, field by field (`ChangeList`). The scope is the subtitle, never a row. */
64
+ changes: readonly ChangeListRow[];
65
+ /** Replaces the list's heading, which otherwise follows `kind` and `state`. */
66
+ changesHeading?: ReactNode;
67
+ /** The consequence, in one sentence, under the list. */
68
+ note?: ReactNode;
69
+ /** The primary action, named for its effect: "Apply to this list", "Create task". Never a bare "OK". */
70
+ approveLabel: string;
71
+ /**
72
+ * Called by the primary action. In `stepup` the primary is "Confirm it's
73
+ * you" and calls this too: the host opens its sign-in check and approves
74
+ * again with the fresh session.
75
+ */
76
+ onApprove: () => void;
77
+ onDecline: () => void;
78
+ /** Offers "Prepare it again" on an expired or stale card. */
79
+ onPrepareAgain?: (() => void) | undefined;
80
+ /** Offers "Try again" on a failed card, where the refusal's class may succeed on a retry. */
81
+ onRetry?: (() => void) | undefined;
82
+ /** What was done, for an applied card: "Created ENG-156 · assigned to Agent SWE". */
83
+ receipt?: ReactNode;
84
+ /** Why it was not applied, for a failed card, in the engine's own sentence. "Nothing changed." follows it. */
85
+ failure?: ReactNode;
86
+ /**
87
+ * What the person can do next about a failure, on its own quieter line
88
+ * after the failure sentence and "Nothing changed.": the route's next step,
89
+ * such as "Ask an admin to give you access." Drawn only with `failure`.
90
+ */
91
+ failureHint?: ReactNode;
92
+ /**
93
+ * Why the primary action cannot be taken now, while the card waits on the
94
+ * person (`pending`) or on a fresh sign-in (`stepup`): a page action whose
95
+ * screen refuses the prepared change, say. The primary is held soft
96
+ * disabled, as Decline is held while applying, so it keeps its focus and
97
+ * its pointer events, says it is unavailable, and is described by this
98
+ * sentence, which the foot also shows above the buttons. Ignored in every
99
+ * other state. Decline stays available.
100
+ */
101
+ approveBlocked?: string | undefined;
102
+ /** Replaces the default sentence of a step-up, declined, expired or stale card. */
103
+ notice?: ReactNode;
104
+ labels?: Partial<ProposalCardLabels> | undefined;
105
+ /** Words for the change list. */
106
+ changeLabels?: Partial<ChangeListLabels> | undefined;
107
+ /** Words for the `DiffList` behind "Show the whole change". */
108
+ diffLabels?: Partial<DiffListLabels> | undefined;
109
+ }
110
+ /**
111
+ * A change prepared for the person to approve, and what became of it: one
112
+ * card from the moment it is proposed until it is applied, declined, expires
113
+ * or is refused.
114
+ *
115
+ * THE HEAD IS THE ACTION, THE TAG IS THE STATE. "Create task" with "Needs
116
+ * your approval", then "Saving", then "Saved". The body is a summary, the
117
+ * change as before and after pairs (`ChangeList`) and a one-sentence
118
+ * consequence; the foot is the decision, or a strip that says what happened.
119
+ *
120
+ * APPROVAL IS ALWAYS AN EXPLICIT PRESS. Nothing here takes focus when the
121
+ * card arrives and Enter in a composer never reaches it, so a person typing
122
+ * cannot approve by accident. While the approved change is carried out the
123
+ * primary keeps its label with the spinner in its leading slot (a button whose
124
+ * text becomes "Saving" has stopped saying what it does), soft disabled so
125
+ * focus stays on it, and Decline is held with its reason.
126
+ *
127
+ * SETTLED, THE BODY STEPS BACK. Applied, declined, expired, stale and failed
128
+ * cards draw their body in the secondary ink so the strip reads first, and
129
+ * the before and after pairs stay, so the record of what changed is there.
130
+ *
131
+ * Every sentence a refusal shows is the caller's (the engine's), never the
132
+ * card's own words about why.
133
+ */
134
+ export declare function ProposalCard({ title, subtitle, state, scope, kind, summary, changes, changesHeading, note, approveLabel, onApprove, onDecline, onPrepareAgain, onRetry, receipt, failure, failureHint, approveBlocked, notice, labels: overrides, changeLabels, diffLabels, className, ...rest }: ProposalCardProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './ProposalCard.css';
2
+ export { PROPOSAL_CARD_LABELS, PROPOSAL_STATES, ProposalCard } from './ProposalCard.js';
3
+ export type { ProposalCardLabels, ProposalCardProps, ProposalKind, ProposalScope, ProposalState } from './ProposalCard.js';
@@ -0,0 +1,17 @@
1
+ export { PROPOSAL_CARD_LABELS, PROPOSAL_STATES, ProposalCard } from '../chunk-E4DZOE55.js';
2
+ import '../chunk-XQI2OUV4.js';
3
+ import '../chunk-WDIVALLP.js';
4
+ import '../chunk-NEHSV55H.js';
5
+ import '../chunk-Z3GDMNMU.js';
6
+ import '../chunk-KYIAFNU7.js';
7
+ import '../chunk-WIATRXEJ.js';
8
+ import '../chunk-INHXF2CL.js';
9
+ import '../chunk-AV2DXAEL.js';
10
+ import '../chunk-GG4QZWMQ.js';
11
+ import '../chunk-TFGCNBWP.js';
12
+ import '../chunk-BHHIIK3M.js';
13
+ import '../chunk-PQADV6P6.js';
14
+ import '../chunk-HD4QJ2SI.js';
15
+ import '../chunk-EA23JG6R.js';
16
+ import '../chunk-BZFWDIV6.js';
17
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,19 @@
1
+ /*
2
+ * A proposed change. The card, its head, its strip and its foot are
3
+ * StatusCard's; only the note's register is said here: the consequence is a
4
+ * quieter sentence than the summary it follows.
5
+ */
6
+ .crewlet-proposal-card__note {
7
+ color: var(--color-text-secondary);
8
+ }
9
+
10
+ /* WHY THE PRIMARY IS HELD, on a line of its own above the decision and at
11
+ its end, in the foot's quiet register, so it wraps rather than pushing the
12
+ buttons apart. */
13
+ .crewlet-proposal-card__blocked {
14
+ flex: 1 1 100%;
15
+ margin: 0;
16
+ color: var(--color-text-secondary);
17
+ font-size: var(--font-size-compact);
18
+ text-align: end;
19
+ }
@@ -0,0 +1,66 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ /** What the strip reports: done, nothing happened, refused or failed, under way, or a caution. */
3
+ export type ReceiptStripTone = 'success' | 'neutral' | 'danger' | 'info' | 'warning';
4
+ export interface ReceiptStripProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {
5
+ tone?: ReceiptStripTone | undefined;
6
+ /**
7
+ * The mark before the words, at 16px. Each tone has one by default (the
8
+ * check, the info mark, the alert); a strip that says something more
9
+ * specific passes its own, such as the clock of an expiry or the lock of a
10
+ * sign-in check.
11
+ */
12
+ icon?: ReactNode;
13
+ /** The outcome, in one or two sentences. */
14
+ children: ReactNode;
15
+ /** Controls at the strip's end, such as Try again. */
16
+ actions?: ReactNode;
17
+ }
18
+ /**
19
+ * What happened, at the foot of a card: "Created ENG-156 · assigned to Agent
20
+ * SWE", "You declined this. Nothing changed.".
21
+ *
22
+ * IT REPLACES THE CARD'S FOOT rather than sitting inside the card as a box of
23
+ * its own: the card's hairline above it, the card's own edge around it, a
24
+ * tint under the words. A card never holds a second bordered box.
25
+ *
26
+ * A STATUS, OR AN ALERT. A refusal or a failure (`danger`) is an alert, the
27
+ * one tone a reader must not miss; every other tone is a polite status.
28
+ * Colour is never alone: the mark and the words say the outcome.
29
+ */
30
+ export declare function ReceiptStrip({ tone, icon, children, actions, className, ...rest }: ReceiptStripProps): import("react").JSX.Element;
31
+ export interface RefusalStripLabels {
32
+ retry: string;
33
+ dismiss: string;
34
+ }
35
+ export declare const REFUSAL_STRIP_LABELS: RefusalStripLabels;
36
+ /** Where the refusal is drawn: under the control that caused it, or as a card's foot. */
37
+ export type RefusalStripPlacement = 'inline' | 'foot';
38
+ export interface RefusalStripProps extends Omit<HTMLAttributes<HTMLElement>, 'role' | 'children'> {
39
+ /** The refusal, in the engine's own sentence. Never a model's words. */
40
+ children: ReactNode;
41
+ /** A second, quieter line: what the person could do about it. */
42
+ hint?: ReactNode;
43
+ /** Offers Try again, for a refusal whose class may succeed on a retry. */
44
+ onRetry?: (() => void) | undefined;
45
+ /** Try again is under way. */
46
+ retrying?: boolean | undefined;
47
+ /** Offers Dismiss. */
48
+ onDismiss?: (() => void) | undefined;
49
+ /** `inline` (the default) under a control; `foot` as a card's foot strip. */
50
+ placement?: RefusalStripPlacement | undefined;
51
+ labels?: Partial<RefusalStripLabels> | undefined;
52
+ }
53
+ /**
54
+ * A refusal, drawn where it happened: the write a control tried, or the
55
+ * change a card was approved for, refused by the engine.
56
+ *
57
+ * ONE DRAWING FOR EVERY REFUSAL. Inline it is the sentence in the danger ink
58
+ * with its actions beside it, under the control that caused it, wrapping
59
+ * rather than widening the row; at a card's foot it is the danger
60
+ * `ReceiptStrip`. The sentence is the caller's (the engine's), so the strip
61
+ * never words a refusal itself.
62
+ *
63
+ * AN ALERT, because a write that did not happen is the one outcome a reader
64
+ * must hear without looking for it.
65
+ */
66
+ export declare function RefusalStrip({ children, hint, onRetry, retrying, onDismiss, placement, labels: overrides, className, ...rest }: RefusalStripProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './ReceiptStrip.css';
2
+ export { REFUSAL_STRIP_LABELS, ReceiptStrip, RefusalStrip } from './ReceiptStrip.js';
3
+ export type { ReceiptStripProps, ReceiptStripTone, RefusalStripLabels, RefusalStripPlacement, RefusalStripProps, } from './ReceiptStrip.js';
@@ -0,0 +1,5 @@
1
+ export { REFUSAL_STRIP_LABELS, ReceiptStrip, RefusalStrip } from '../chunk-XQI2OUV4.js';
2
+ import '../chunk-HD4QJ2SI.js';
3
+ import '../chunk-EA23JG6R.js';
4
+ import '../chunk-BZFWDIV6.js';
5
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,93 @@
1
+ /*
2
+ * A card's foot strip: the card's hairline above it, a tint under the words,
3
+ * the mark on the first line. The tints are the soft step of the tone under
4
+ * its ink step, the pairing the palette suite measures; the quiet strip is
5
+ * the inset ground under the secondary ink.
6
+ */
7
+ .crewlet-receipt-strip {
8
+ display: grid;
9
+ grid-template-columns: auto minmax(0, 1fr) auto;
10
+ align-items: start;
11
+ gap: var(--spacing-2);
12
+ padding: var(--spacing-2) var(--spacing-4);
13
+ border-top: 1px solid var(--color-border-default);
14
+ font-size: var(--font-size-compact);
15
+ line-height: var(--font-line-height-normal);
16
+ }
17
+
18
+ .crewlet-receipt-strip--success {
19
+ background: var(--color-feedback-success-soft);
20
+ color: var(--color-feedback-success-ink);
21
+ }
22
+
23
+ .crewlet-receipt-strip--neutral {
24
+ background: var(--color-surface-inset);
25
+ color: var(--color-text-secondary);
26
+ }
27
+
28
+ .crewlet-receipt-strip--info {
29
+ background: var(--color-feedback-info-soft);
30
+ color: var(--color-feedback-info-ink);
31
+ }
32
+
33
+ .crewlet-receipt-strip--warning {
34
+ background: var(--color-feedback-warning-soft);
35
+ color: var(--color-feedback-warning-ink);
36
+ }
37
+
38
+ .crewlet-receipt-strip--danger {
39
+ background: var(--color-feedback-danger-soft);
40
+ color: var(--color-feedback-danger-ink);
41
+ }
42
+
43
+ /* The 16px mark, centred on the first line of the words beside it. */
44
+ .crewlet-receipt-strip__icon {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ height: calc(var(--font-size-compact) * var(--font-line-height-normal));
48
+ }
49
+
50
+ .crewlet-receipt-strip__text {
51
+ display: flex;
52
+ flex-direction: column;
53
+ min-width: 0;
54
+ overflow-wrap: anywhere;
55
+ }
56
+
57
+ /* The actions keep the strip's ink, so a ghost button reads as part of it. */
58
+ .crewlet-receipt-strip__actions {
59
+ display: flex;
60
+ flex-wrap: wrap;
61
+ align-items: center;
62
+ gap: var(--spacing-1);
63
+ margin-block: calc(var(--spacing-1) * -1);
64
+ }
65
+
66
+ .crewlet-receipt-strip__actions .crewlet-btn--ghost {
67
+ color: inherit;
68
+ }
69
+
70
+ /*
71
+ * THE INLINE REFUSAL, under the control that caused it: the sentence in the
72
+ * danger ink, the hint in the secondary ink, the actions beside them, wrapping
73
+ * onto a second line rather than widening the row.
74
+ */
75
+ .crewlet-refusal-strip {
76
+ display: flex;
77
+ flex-wrap: wrap;
78
+ align-items: center;
79
+ gap: var(--spacing-1) var(--spacing-2);
80
+ max-width: 40rem;
81
+ font-size: var(--font-size-compact);
82
+ color: var(--color-feedback-danger-ink);
83
+ overflow-wrap: anywhere;
84
+ }
85
+
86
+ .crewlet-refusal-strip__hint {
87
+ font-size: var(--font-size-xs);
88
+ color: var(--color-text-secondary);
89
+ }
90
+
91
+ .crewlet-refusal-strip--foot .crewlet-refusal-strip__hint {
92
+ color: inherit;
93
+ }
@@ -0,0 +1,34 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ export interface RefusalCardLabels {
3
+ /** The Tag in the head. */
4
+ notPermitted: string;
5
+ /** The house phrase, always said last. */
6
+ nothingChanged: string;
7
+ }
8
+ export declare const REFUSAL_CARD_LABELS: RefusalCardLabels;
9
+ export interface RefusalCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
10
+ /** The action that was asked for, in sentence case: "File a task". */
11
+ title: string;
12
+ /** An optional first sentence: "You do not have permission to file tasks." */
13
+ heading?: ReactNode;
14
+ /**
15
+ * Why, in the product's own words: the access the action needs and what the
16
+ * person holds ("Filing tasks needs Tracker access, and your role includes
17
+ * Knowledge only."). Assembled from the engine's answer, never a model's.
18
+ */
19
+ children: ReactNode;
20
+ /** Utilities at the foot: "Copy a request to an admin", "About access". Nothing is sent on the person's behalf. */
21
+ actions?: ReactNode;
22
+ labels?: Partial<RefusalCardLabels> | undefined;
23
+ }
24
+ /**
25
+ * A request the person's own access does not allow, said as the product says
26
+ * it: the action asked for as the title, "Not permitted" as a neutral Tag
27
+ * with the lock (nothing went wrong, so not the danger tone), the access it
28
+ * needs and what the person holds, and always "Nothing changed.".
29
+ *
30
+ * IT OFFERS NO WORKAROUND. The foot holds only what the person can do with
31
+ * their own hands (copy a request to send an admin, read about access), and
32
+ * starts on the card's text edge, because none of it is a decision.
33
+ */
34
+ export declare function RefusalCard({ title, heading, children, actions, labels: overrides, className, ...rest }: RefusalCardProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './RefusalCard.css';
2
+ export { REFUSAL_CARD_LABELS, RefusalCard } from './RefusalCard.js';
3
+ export type { RefusalCardLabels, RefusalCardProps } from './RefusalCard.js';
@@ -0,0 +1,10 @@
1
+ export { REFUSAL_CARD_LABELS, RefusalCard } from '../chunk-BLPT6GHV.js';
2
+ import '../chunk-WDIVALLP.js';
3
+ import '../chunk-KYIAFNU7.js';
4
+ import '../chunk-WIATRXEJ.js';
5
+ import '../chunk-INHXF2CL.js';
6
+ import '../chunk-AV2DXAEL.js';
7
+ import '../chunk-BHHIIK3M.js';
8
+ import '../chunk-PQADV6P6.js';
9
+ import '../chunk-BZFWDIV6.js';
10
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,8 @@
1
+ /* The first sentence carries the weight; "Nothing changed." closes in the secondary ink. */
2
+ .crewlet-refusal-card__heading {
3
+ font-weight: var(--font-weight-medium);
4
+ }
5
+
6
+ .crewlet-refusal-card__nothing {
7
+ color: var(--color-text-secondary);
8
+ }
@@ -1,9 +1,3 @@
1
- /**
2
- * The shared instant, in epoch ms, re-rendering the caller once a second.
3
- *
4
- * Pass the value DOWN rather than calling this again deeper: two components
5
- * reading their own clock is the disagreement it exists to prevent.
6
- */
7
1
  export declare function useNow(): number;
8
2
  /** The current instant without subscribing, for an event handler or an effect. */
9
3
  export declare function currentNow(): number;
@@ -1,4 +1,4 @@
1
- export { RelativeTime, currentNow, formatElapsed, formatExact, formatRelative, formatUntil, toISO, toInstant, useNow } from '../chunk-3CZ7XAVY.js';
1
+ export { RelativeTime, currentNow, formatElapsed, formatExact, formatRelative, formatUntil, toISO, toInstant, useNow } from '../chunk-KS7YIJ4S.js';
2
2
  import '../chunk-EUCC37WY.js';
3
3
  import '../chunk-BZFWDIV6.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,59 @@
1
+ /*
2
+ * The grip between a panel and the page beside it (`ResizeHandle`).
3
+ *
4
+ * DRAWN AS NOTHING AT REST. It stands in a seam that is already drawn (the
5
+ * frame's inset between two sheets, a panel's hairline), so a handle of its
6
+ * own would be a second line beside one. It washes in the soft accent under
7
+ * the pointer, under keyboard focus and for the whole of a drag.
8
+ *
9
+ * ITS DRAWN WIDTH IS THE SEAM'S (`--crewlet-resize-handle-width`, the frame's
10
+ * inset), and its target is the 24px floor whatever that width is: the
11
+ * hit area reaches half the difference out on each side, so a seam of 8px
12
+ * is still a target a finger can find.
13
+ *
14
+ * Placed by whoever holds it: the shell's aside and a side panel put it on
15
+ * their own start edge. Absolute, so it takes no room in the layout it sizes.
16
+ */
17
+ .crewlet-resize-handle {
18
+ --crewlet-resize-handle-width: var(--size-shell-inset);
19
+ --crewlet-hit-area-inline: max(0px, calc((var(--size-target-min) - var(--crewlet-resize-handle-width)) / 2));
20
+ position: absolute;
21
+ top: 0;
22
+ bottom: 0;
23
+ z-index: var(--z-index-raised);
24
+ width: var(--crewlet-resize-handle-width);
25
+ border-radius: var(--radius-xs);
26
+ background: transparent;
27
+ cursor: col-resize;
28
+ /* A touch drags the edge rather than scrolling the page under it. */
29
+ touch-action: none;
30
+ transition: background var(--motion-duration-fast) var(--motion-easing-default);
31
+ }
32
+
33
+ /* On a panel's left edge it stands outside the panel, in the seam before it. */
34
+ .crewlet-resize-handle--left {
35
+ left: calc(var(--crewlet-resize-handle-width) * -1);
36
+ }
37
+
38
+ .crewlet-resize-handle--right {
39
+ right: calc(var(--crewlet-resize-handle-width) * -1);
40
+ }
41
+
42
+ .crewlet-resize-handle:hover,
43
+ .crewlet-resize-handle:focus-visible,
44
+ .crewlet-resize-handle[data-dragging] {
45
+ background: var(--color-brand-accent-soft);
46
+ }
47
+
48
+ /* Inside its own box: it draws no edge, and the seam it stands in is the
49
+ two neighbours' edges, which a ring set outward would run over. */
50
+ .crewlet-resize-handle:focus-visible {
51
+ outline: 2px solid var(--color-focus);
52
+ outline-offset: var(--size-focus-ring-inset-offset);
53
+ }
54
+
55
+ @media (prefers-reduced-motion: reduce) {
56
+ .crewlet-resize-handle {
57
+ transition: none;
58
+ }
59
+ }
@@ -0,0 +1,64 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ import { type TableColumnAlign } from '../Table/index.js';
3
+ /** One download a result offers, fetched on the press: an export the server builds. */
4
+ export interface ResultTableDownload {
5
+ /** The format, as the button says it: "CSV", "XLSX". */
6
+ label: string;
7
+ /** The name the file is offered under: "token-spend-this-week.csv". */
8
+ filename: string;
9
+ /** Fetches the file. A rejection reads as a failed download on the button. */
10
+ file: () => Promise<Blob>;
11
+ }
12
+ export interface ResultTableCardLabels {
13
+ /** The control that shows every row of a long result: "Show all 48". */
14
+ showAll: (count: number) => string;
15
+ }
16
+ export declare const RESULT_TABLE_CARD_LABELS: ResultTableCardLabels;
17
+ /** Results with more rows than this show the first `collapsedRows` and "Show all". */
18
+ export declare const RESULT_TABLE_MAX_ROWS = 20;
19
+ /** How many rows a long result shows until the reader asks for all of them. */
20
+ export declare const RESULT_TABLE_COLLAPSED_ROWS = 10;
21
+ export interface ResultTableCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
22
+ /** What the rows are: "Token spend by agent". Also the table's caption, said and not shown twice. */
23
+ title: string;
24
+ /** The window or scope the rows cover, under the title: "This week, from Monday". */
25
+ window?: ReactNode;
26
+ headers: ReactNode[];
27
+ rows: ReactNode[][];
28
+ /** Each column's edge: `end` for figures. */
29
+ align?: readonly TableColumnAlign[] | undefined;
30
+ /** The total row, under the rows it sums. */
31
+ total?: readonly ReactNode[] | undefined;
32
+ /** The exports the result offers, each fetched on its press. */
33
+ downloads?: readonly ResultTableDownload[] | undefined;
34
+ /**
35
+ * A way to the page the rows come from ("Open in Spend"), at the foot's
36
+ * end: the host's own link (a `ButtonLink` ghost small, or its router's).
37
+ */
38
+ link?: ReactNode;
39
+ /** Over this many rows, the card shows `collapsedRows` and "Show all". 20 by default. */
40
+ maxRows?: number | undefined;
41
+ /** How many rows a long result shows at first. 10 by default. */
42
+ collapsedRows?: number | undefined;
43
+ /** What an empty result says. "No rows match." by default. */
44
+ emptyMessage?: ReactNode;
45
+ labels?: Partial<ResultTableCardLabels> | undefined;
46
+ }
47
+ /**
48
+ * A result as a table in a card: its title and window, the rows with
49
+ * tabular figures and a total row, and a foot with the exports and a way to
50
+ * the page the rows come from.
51
+ *
52
+ * THE CARD IS THE FRAME. The table draws no edge of its own and its outer
53
+ * cells take the card's inset, so every row lines up with the title. The
54
+ * first column takes the room the figures leave and ends a long name in an
55
+ * ellipsis; a host that cuts names gives the cell its own tooltip.
56
+ *
57
+ * A FOOT OF UTILITIES, so it starts on the card's text edge: the downloads
58
+ * first (their ghost padding pulled out so the first glyph sits on that edge)
59
+ * and the link at the far end.
60
+ *
61
+ * A LONG RESULT IS SHORTENED, never paged: over `maxRows` rows, the first
62
+ * `collapsedRows` and "Show all 48", which shows the rest in place.
63
+ */
64
+ export declare function ResultTableCard({ title, window: span, headers, rows, align, total, downloads, link, maxRows, collapsedRows, emptyMessage, labels: overrides, className, ...rest }: ResultTableCardProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './ResultTableCard.css';
2
+ export { RESULT_TABLE_CARD_LABELS, RESULT_TABLE_COLLAPSED_ROWS, RESULT_TABLE_MAX_ROWS, ResultTableCard, } from './ResultTableCard.js';
3
+ export type { ResultTableCardLabels, ResultTableCardProps, ResultTableDownload } from './ResultTableCard.js';
@@ -0,0 +1,16 @@
1
+ export { RESULT_TABLE_CARD_LABELS, RESULT_TABLE_COLLAPSED_ROWS, RESULT_TABLE_MAX_ROWS, ResultTableCard } from '../chunk-GZMEWWXW.js';
2
+ import '../chunk-45KMH3E3.js';
3
+ import '../chunk-WDIVALLP.js';
4
+ import '../chunk-HNK43Z3P.js';
5
+ import '../chunk-YNRKVY7X.js';
6
+ import '../chunk-DTIW4CHZ.js';
7
+ import '../chunk-KYIAFNU7.js';
8
+ import '../chunk-WIATRXEJ.js';
9
+ import '../chunk-INHXF2CL.js';
10
+ import '../chunk-AV2DXAEL.js';
11
+ import '../chunk-BHHIIK3M.js';
12
+ import '../chunk-PQADV6P6.js';
13
+ import '../chunk-HD4QJ2SI.js';
14
+ import '../chunk-EA23JG6R.js';
15
+ import '../chunk-BZFWDIV6.js';
16
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,40 @@
1
+ /*
2
+ * A result in a card. The card, its head and its foot are StatusCard's and
3
+ * the table is Table's, drawn flush; what a result adds is the column model:
4
+ * the first column takes the room the figures leave and ends a long name in
5
+ * an ellipsis, and the figures never wrap.
6
+ */
7
+ .crewlet-result-table-card__table .crewlet-table__table {
8
+ table-layout: auto;
9
+ font-variant-numeric: tabular-nums;
10
+ }
11
+
12
+ .crewlet-result-table-card__table td:first-child {
13
+ width: 100%;
14
+ max-width: 0;
15
+ overflow: hidden;
16
+ text-overflow: ellipsis;
17
+ white-space: nowrap;
18
+ overflow-wrap: normal;
19
+ }
20
+
21
+ .crewlet-result-table-card__table .crewlet-table__cell--end {
22
+ white-space: nowrap;
23
+ }
24
+
25
+ /*
26
+ * THE DOWNLOADS ARE SPANS AROUND A BUTTON (the status region beside each is
27
+ * a sibling of its button), so the foot's ghost outdent is stated for them
28
+ * here: the first one's padding and edge are pulled out so its glyph sits on
29
+ * the card's text edge.
30
+ */
31
+ .crewlet-result-table-card .crewlet-status-card__actions > .crewlet-result-table-card__download:first-child {
32
+ margin-inline-start: calc(-1 * (var(--spacing-2) + 1px));
33
+ }
34
+
35
+ /* The link stands at the foot's far end, its own padding pulled out to the edge. */
36
+ .crewlet-result-table-card__link {
37
+ display: inline-flex;
38
+ margin-inline-start: auto;
39
+ margin-inline-end: calc(-1 * (var(--spacing-2) + 1px));
40
+ }
@@ -1,5 +1,5 @@
1
- export { ReviewList } from '../chunk-OBUQVGEG.js';
2
- import '../chunk-IXJHTFXG.js';
1
+ export { ReviewList } from '../chunk-OJ2QULVH.js';
2
+ import '../chunk-3LI4TRUR.js';
3
3
  import '../chunk-KYIAFNU7.js';
4
4
  import '../chunk-WIATRXEJ.js';
5
5
  import '../chunk-PQADV6P6.js';
@@ -1,8 +1,9 @@
1
- export { RichEditor, preloadRichEditor } from '../chunk-NTZQN7OR.js';
1
+ export { RichEditor, preloadRichEditor } from '../chunk-NI7WUPH3.js';
2
2
  export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-CSQTDGTS.js';
3
3
  import '../chunk-BAKPMH3S.js';
4
4
  import '../chunk-BPCY7ZID.js';
5
5
  import '../chunk-TEUQWOWZ.js';
6
- import '../chunk-OG6CL3EB.js';
6
+ import '../chunk-HD4QJ2SI.js';
7
+ import '../chunk-EA23JG6R.js';
7
8
  import '../chunk-BZFWDIV6.js';
8
9
  import '../chunk-ODEQTPFM.js';