@crewlethq/ui 0.32.0 → 0.34.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 (292) hide show
  1. package/README.md +149 -5
  2. package/dist/AccessDeniedCard/AccessDeniedCard.d.ts +5 -0
  3. package/dist/AccessDeniedCard/index.js +1 -5
  4. package/dist/AccessDeniedCard-QVNDMT46.css +8 -0
  5. package/dist/AppShell/index.js +4 -4
  6. package/dist/{AppShell-GCM4TDVY.css → AppShell-JTSEOA57.css} +3 -1
  7. package/dist/ArrangeGroup/ArrangeGroup.d.ts +16 -1
  8. package/dist/ArrangeGroup/index.d.ts +1 -1
  9. package/dist/ArrangeGroup/index.js +1 -1
  10. package/dist/{ArrangeGroup-GY5YMP6E.css → ArrangeGroup-KRWWOJKR.css} +43 -0
  11. package/dist/ArrangeList/index.js +2 -2
  12. package/dist/ArtifactBar/index.js +14 -12
  13. package/dist/{ArtifactBar-MLMJHWY6.css → ArtifactBar-C462VD4C.css} +8 -3
  14. package/dist/ArtifactCard/ArtifactCard.d.ts +64 -6
  15. package/dist/ArtifactCard/index.d.ts +2 -2
  16. package/dist/ArtifactCard/index.js +6 -4
  17. package/dist/ArtifactCard-XHRLAL7C.css +289 -0
  18. package/dist/ArtifactCover/index.js +8 -6
  19. package/dist/ArtifactIcon/index.js +7 -5
  20. package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +53 -0
  21. package/dist/ArtifactKindIllustration/index.d.ts +3 -0
  22. package/dist/ArtifactKindIllustration/index.js +3 -0
  23. package/dist/ArtifactKindIllustration-4NG6IE3C.css +211 -0
  24. package/dist/ArtifactPanel/ArtifactPanel.d.ts +6 -2
  25. package/dist/ArtifactPanel/index.js +1 -1
  26. package/dist/{ArtifactPanel-YFXT5O77.css → ArtifactPanel-HW3SU7CP.css} +25 -7
  27. package/dist/Avatar/Avatar.d.ts +6 -4
  28. package/dist/Avatar/index.js +2 -2
  29. package/dist/AvatarPicker/index.js +8 -8
  30. package/dist/Callout/index.js +1 -1
  31. package/dist/{Callout-SXXK4B5R.css → Callout-ZAVG3P66.css} +46 -6
  32. package/dist/Canvas/Canvas.d.ts +33 -2
  33. package/dist/Canvas/index.d.ts +1 -1
  34. package/dist/Canvas/index.js +4 -4
  35. package/dist/{Canvas-LRVNW7XN.css → Canvas-VUG2HLZK.css} +23 -0
  36. package/dist/CanvasBoard/CanvasBoard.d.ts +38 -3
  37. package/dist/CanvasBoard/budget.d.ts +9 -3
  38. package/dist/CanvasBoard/index.d.ts +2 -2
  39. package/dist/CanvasBoard/index.js +7 -7
  40. package/dist/{CanvasBoard-MBZVBWDO.css → CanvasBoard-5NNSKY6A.css} +127 -6
  41. package/dist/CanvasToolbar/index.js +5 -5
  42. package/dist/{CanvasToolbar-AE5MXH7T.css → CanvasToolbar-EM5EVZED.css} +4 -2
  43. package/dist/ChangeMark/index.js +4 -4
  44. package/dist/CharacterPicker/index.js +2 -2
  45. package/dist/Charts/ActivityStrip.d.ts +16 -1
  46. package/dist/Charts/BarList.d.ts +6 -0
  47. package/dist/Charts/ChartEmpty.d.ts +33 -0
  48. package/dist/Charts/Legend.d.ts +6 -0
  49. package/dist/Charts/StackedBar.d.ts +4 -1
  50. package/dist/Charts/StackedColumns.d.ts +14 -3
  51. package/dist/Charts/TimeSeries.d.ts +11 -1
  52. package/dist/Charts/index.d.ts +2 -0
  53. package/dist/Charts/index.js +1 -1
  54. package/dist/{Charts-RY4JN5FC.css → Charts-MBJG72BS.css} +140 -16
  55. package/dist/Checkbox/index.js +1 -1
  56. package/dist/{Checkbox-5UORUG3F.css → Checkbox-ALWG3WV2.css} +11 -0
  57. package/dist/CommandPalette/index.js +3 -3
  58. package/dist/{CommandPalette-HBTNKHZQ.css → CommandPalette-7CFGVBND.css} +4 -0
  59. package/dist/CommentThread/index.js +5 -5
  60. package/dist/Container/index.js +1 -1
  61. package/dist/{Container-3TSKMGNI.css → Container-34BAKG7B.css} +3 -1
  62. package/dist/{DashboardCover-RMINBODB.css → DashboardCover-KYGYMRKW.css} +42 -9
  63. package/dist/DataTable/index.js +5 -5
  64. package/dist/{DataTable-WZK3V62B.css → DataTable-NL2YWAIA.css} +4 -1
  65. package/dist/DataView/index.js +8 -8
  66. package/dist/DateTimePicker/index.js +3 -3
  67. package/dist/DocTabsEditor/DocTabsEditor.d.ts +34 -21
  68. package/dist/DocTabsEditor/index.js +4 -1
  69. package/dist/DocTabsEditor-4M452LNS.css +189 -0
  70. package/dist/Document/Document.d.ts +18 -1
  71. package/dist/Document/index.d.ts +2 -2
  72. package/dist/Document/index.js +1 -1
  73. package/dist/{Document-G3YTZIUL.css → Document-JUGCSQ4L.css} +78 -5
  74. package/dist/EditingStatus/index.js +1 -1
  75. package/dist/{EditingStatus-L6THUAN7.css → EditingStatus-NNA2CKIL.css} +17 -4
  76. package/dist/{Editor-YWBUJAQU.js → Editor-UUZ7XKCU.js} +5 -5
  77. package/dist/EntityChip/index.js +3 -3
  78. package/dist/FactList/index.js +3 -3
  79. package/dist/FollowBanner/index.js +3 -3
  80. package/dist/Fullscreen/index.d.ts +1 -0
  81. package/dist/Fullscreen/index.js +1 -1
  82. package/dist/Fullscreen/useIdle.d.ts +16 -0
  83. package/dist/HuePicker/index.js +3 -3
  84. package/dist/ImageUpload/index.js +3 -3
  85. package/dist/Layer/index.d.ts +1 -1
  86. package/dist/Layer/index.js +1 -1
  87. package/dist/Layer/place.d.ts +18 -0
  88. package/dist/LayersList/LayersList.d.ts +57 -0
  89. package/dist/LayersList/index.d.ts +3 -0
  90. package/dist/LayersList/index.js +3 -0
  91. package/dist/LayersList-NQZEIPZB.css +82 -0
  92. package/dist/LinkInterstitial/index.js +4 -4
  93. package/dist/ListInput/index.js +1 -1
  94. package/dist/LivePreview/LivePreview.d.ts +83 -0
  95. package/dist/LivePreview/budget.d.ts +50 -0
  96. package/dist/LivePreview/index.d.ts +5 -0
  97. package/dist/LivePreview/index.js +2 -0
  98. package/dist/LivePreview-SRO7KHO4.css +65 -0
  99. package/dist/Markdown/index.js +1 -1
  100. package/dist/MarkdownEditor/index.js +5 -5
  101. package/dist/MediaMatch/index.d.ts +1 -0
  102. package/dist/MediaMatch/index.js +1 -0
  103. package/dist/MediaMatch/useMediaMatch.d.ts +19 -0
  104. package/dist/Menu/index.js +2 -2
  105. package/dist/MergeConflicts/index.js +4 -4
  106. package/dist/Modal/index.js +2 -2
  107. package/dist/{Modal-XOSV6FAH.css → Modal-7MWRCWAI.css} +30 -0
  108. package/dist/Note/index.js +1 -1
  109. package/dist/{Note-ONSKKTOA.css → Note-WI5MLZOO.css} +13 -0
  110. package/dist/OrgLabel/index.js +3 -3
  111. package/dist/OrgNode/index.js +4 -4
  112. package/dist/OrgTable/index.js +7 -7
  113. package/dist/PeopleRail/index.js +3 -3
  114. package/dist/Popover/index.js +2 -2
  115. package/dist/PresenceStack/index.js +3 -3
  116. package/dist/{PresenceStack-QSXQJND5.css → PresenceStack-FJJQVH74.css} +11 -3
  117. package/dist/PresenterView/PresenterView.d.ts +3 -0
  118. package/dist/PresenterView/index.js +5 -3
  119. package/dist/PresenterView-T3EXIQ5S.css +147 -0
  120. package/dist/Principal/index.js +3 -3
  121. package/dist/PrincipalPicker/index.js +4 -4
  122. package/dist/RichEditor/index.js +5 -5
  123. package/dist/RichEditor/schema.d.ts +1 -1
  124. package/dist/RichEditorMarkdown/index.js +3 -3
  125. package/dist/SandboxedFrame/SandboxedFrame.d.ts +44 -2
  126. package/dist/SandboxedFrame/index.d.ts +2 -2
  127. package/dist/SandboxedFrame/index.js +3 -3
  128. package/dist/SandboxedFrame-P5NASXB7.css +72 -0
  129. package/dist/Section/index.js +1 -1
  130. package/dist/{Section-QR3ILQVK.css → Section-O5AHGSOG.css} +28 -5
  131. package/dist/SegmentedControl/index.js +3 -3
  132. package/dist/Select/Select.d.ts +10 -0
  133. package/dist/Select/index.d.ts +1 -1
  134. package/dist/Select/index.js +2 -2
  135. package/dist/{Select-2P7AWUE4.css → Select-A54YS5EP.css} +29 -0
  136. package/dist/ShareDialog/ShareDialog.d.ts +10 -0
  137. package/dist/ShareDialog/index.js +9 -9
  138. package/dist/{ShareDialog-YZ4F37MW.css → ShareDialog-4QDCBWMH.css} +12 -0
  139. package/dist/SheetGrid/SheetGrid.d.ts +7 -3
  140. package/dist/SheetGrid/index.js +8 -8
  141. package/dist/{SheetGrid-J3TKKXZL.css → SheetGrid-GDPCCZ4V.css} +154 -14
  142. package/dist/SheetModel/fit.d.ts +34 -0
  143. package/dist/SheetModel/index.d.ts +1 -0
  144. package/dist/SheetModel/index.js +1 -1
  145. package/dist/SheetModel/labels.d.ts +1 -1
  146. package/dist/Shortcut/index.js +1 -1
  147. package/dist/Skeleton/Skeleton.d.ts +2 -1
  148. package/dist/Skeleton/index.js +1 -1
  149. package/dist/SlideCompare/SlideCompare.d.ts +6 -1
  150. package/dist/SlideCompare/index.js +3 -3
  151. package/dist/{SlideCompare-MGM3U2ME.css → SlideCompare-HTCMPQFY.css} +36 -3
  152. package/dist/SlideFilmstrip/SlideFilmstrip.d.ts +14 -3
  153. package/dist/SlideFilmstrip/index.js +3 -3
  154. package/dist/{SlideFilmstrip-BCLNAHFX.css → SlideFilmstrip-5U6Z55GS.css} +63 -2
  155. package/dist/SlideGrid/index.js +3 -3
  156. package/dist/{SlideGrid-RT6QEQEE.css → SlideGrid-S4LTJ4UU.css} +9 -5
  157. package/dist/SlideNav/SlideNav.d.ts +49 -0
  158. package/dist/SlideNav/index.d.ts +3 -0
  159. package/dist/SlideNav/index.js +4 -0
  160. package/dist/SlideNav-BLFJF6AH.css +53 -0
  161. package/dist/SlideStage/SlideStage.d.ts +9 -1
  162. package/dist/SlideStage/index.js +2 -2
  163. package/dist/{SlideStage-KGRRALXR.css → SlideStage-S2FISF4C.css} +23 -0
  164. package/dist/StatCard/StatCard.d.ts +16 -1
  165. package/dist/StatCard/index.js +1 -1
  166. package/dist/{StatCard-KPAFD4E2.css → StatCard-4T7TMWMN.css} +40 -13
  167. package/dist/Switcher/index.js +6 -6
  168. package/dist/TableCells/index.js +3 -3
  169. package/dist/Tabs/Tabs.d.ts +21 -4
  170. package/dist/Tabs/index.js +1 -1
  171. package/dist/{Tabs-CJGO35BH.css → Tabs-MMZXV5EF.css} +9 -8
  172. package/dist/TagsInput/index.js +1 -1
  173. package/dist/ThemeSwitcher/index.js +4 -4
  174. package/dist/TimeWindowPicker/index.js +4 -4
  175. package/dist/Toaster/index.js +2 -2
  176. package/dist/{Toaster-EOOOTSJT.css → Toaster-C6BQ7L6I.css} +10 -1
  177. package/dist/Toolbar/index.js +1 -1
  178. package/dist/Tooltip/Tooltip.d.ts +12 -1
  179. package/dist/Tooltip/index.d.ts +1 -1
  180. package/dist/Tooltip/index.js +2 -2
  181. package/dist/TreeCanvas/index.js +5 -5
  182. package/dist/TreeGrid/index.js +3 -3
  183. package/dist/VersionCompare/index.js +4 -4
  184. package/dist/VersionTimeline/index.js +4 -4
  185. package/dist/WidgetFrame/WidgetFrame.d.ts +8 -1
  186. package/dist/WidgetFrame/index.js +2 -2
  187. package/dist/{WidgetFrame-LRZIL62O.css → WidgetFrame-BTFW3CRK.css} +49 -5
  188. package/dist/{chunk-WJDQ7XQA.js → chunk-2QEDJSJC.js} +1 -1
  189. package/dist/{chunk-VYDFB6PJ.js → chunk-356JNSER.js} +50 -17
  190. package/dist/{chunk-2HIOJ4YZ.js → chunk-3EB2AV3H.js} +2 -3
  191. package/dist/{chunk-ODT5H4MN.js → chunk-3LYWD3BO.js} +2 -2
  192. package/dist/{chunk-OTN35CI4.js → chunk-3P4Y5RX6.js} +18 -6
  193. package/dist/{chunk-FAQGGX2Z.js → chunk-3TFDQLW3.js} +1 -1
  194. package/dist/{chunk-E6EWK5YY.js → chunk-3Y56GQPM.js} +3 -3
  195. package/dist/{chunk-A4E5YLXO.js → chunk-4B6LSFDS.js} +1 -1
  196. package/dist/{chunk-UAN5NE7M.js → chunk-5AQBPHZD.js} +1 -1
  197. package/dist/{chunk-CJKMURZO.js → chunk-5SZGKSGL.js} +1 -1
  198. package/dist/chunk-6VOS2GMB.js +54 -0
  199. package/dist/{chunk-QWOPX2MN.js → chunk-6ZJ3N7QI.js} +7 -5
  200. package/dist/{chunk-3ZAFJ4GK.js → chunk-7Q7WDXHG.js} +4 -4
  201. package/dist/{chunk-QH3AKP2N.js → chunk-AC22RZKC.js} +2 -2
  202. package/dist/{chunk-UZ6MA2V6.js → chunk-AORVEG5V.js} +2 -2
  203. package/dist/{chunk-ZITJKF6Z.js → chunk-AYB6AYNH.js} +1 -1
  204. package/dist/{chunk-FC4YTTFJ.js → chunk-BQ7AKL2N.js} +5 -5
  205. package/dist/{chunk-Y5NQ2LMS.js → chunk-BY4N65PM.js} +1 -1
  206. package/dist/{chunk-YFW4MTK4.js → chunk-C7DKX453.js} +1 -1
  207. package/dist/{chunk-RCQXUT5K.js → chunk-CCAXYHQS.js} +1 -1
  208. package/dist/{chunk-JQLTG4KH.js → chunk-CCLNGVCM.js} +62 -51
  209. package/dist/{chunk-6AH2XJ3Q.js → chunk-CFAJP777.js} +3 -3
  210. package/dist/{chunk-4KP4RC3O.js → chunk-CI3VPIJN.js} +1 -1
  211. package/dist/{chunk-7T42VQQT.js → chunk-CPEPST4S.js} +1 -1
  212. package/dist/{chunk-AAOH2P6Y.js → chunk-DFK5EQTU.js} +5 -3
  213. package/dist/{chunk-V5IGUXMZ.js → chunk-E4NNGC6X.js} +4 -4
  214. package/dist/{chunk-TGYDROIB.js → chunk-EBCHVFCS.js} +4 -4
  215. package/dist/{chunk-LWXRD6L6.js → chunk-EWAFN2IU.js} +118 -27
  216. package/dist/{chunk-YDBC4DNW.js → chunk-FWYHRU7M.js} +1 -1
  217. package/dist/{chunk-HVNTQ36V.js → chunk-GMU6SQ6B.js} +4 -4
  218. package/dist/{chunk-LIXSV5YI.js → chunk-GPHWCK7M.js} +1 -1
  219. package/dist/{chunk-UQHKFF2N.js → chunk-GPWJCP3U.js} +1 -1
  220. package/dist/{chunk-77DRMDXR.js → chunk-HG5VF3TZ.js} +192 -67
  221. package/dist/{chunk-QVE4GJAT.js → chunk-HJO4WCH6.js} +1 -1
  222. package/dist/{chunk-JI5AVQLA.js → chunk-HOIZ6MIS.js} +1 -1
  223. package/dist/{chunk-I3BSQUKN.js → chunk-HUVG2FFT.js} +1 -1
  224. package/dist/{chunk-VS3KOOOL.js → chunk-ILAEBSLJ.js} +3 -3
  225. package/dist/{chunk-P4BOXB6E.js → chunk-IUD5VA2Z.js} +6 -7
  226. package/dist/{chunk-GR55WT4R.js → chunk-IYO2N5ZH.js} +2 -2
  227. package/dist/{chunk-RWA4H2TV.js → chunk-J6ON5SYE.js} +1 -1
  228. package/dist/{chunk-AMNN4WDX.js → chunk-JBUMD6DS.js} +2 -2
  229. package/dist/{chunk-BWRGFKJP.js → chunk-K3IJQNB7.js} +2 -3
  230. package/dist/{chunk-LFNUH4GY.js → chunk-K4VP6ZKE.js} +1 -1
  231. package/dist/{chunk-ZR5VN5IV.js → chunk-KD2IRYCT.js} +2 -2
  232. package/dist/chunk-KF6YGL4B.js +160 -0
  233. package/dist/{chunk-SKOYC2CF.js → chunk-KK5OYNAF.js} +2 -1
  234. package/dist/{chunk-UB7TJEKZ.js → chunk-KV3ODJXH.js} +6 -7
  235. package/dist/chunk-LL5AFXU7.js +96 -0
  236. package/dist/{chunk-VYOKRN2I.js → chunk-LM3ISVJA.js} +1 -1
  237. package/dist/{chunk-E6CR5PEV.js → chunk-LV4APO72.js} +8 -2
  238. package/dist/{chunk-B4EBHPK3.js → chunk-M5KZX5JE.js} +9 -2
  239. package/dist/{chunk-HMPFGIWM.js → chunk-OMV5W53A.js} +10 -1
  240. package/dist/chunk-ONL54WMH.js +55 -0
  241. package/dist/{chunk-AKEZ3G5V.js → chunk-ONQKKHON.js} +1 -1
  242. package/dist/{chunk-LZHLSQYK.js → chunk-OOWPSBIS.js} +2 -2
  243. package/dist/{chunk-4KWOKX2B.js → chunk-OSKJZNBT.js} +1 -1
  244. package/dist/{chunk-4JUKWWUD.js → chunk-PLDUNXAO.js} +1 -1
  245. package/dist/{chunk-EHQTPVV4.js → chunk-PLTCDSTU.js} +1 -1
  246. package/dist/{chunk-5OM447RW.js → chunk-PZKHBB7D.js} +1 -1
  247. package/dist/{chunk-VEB5ERRE.js → chunk-QWNVSR6G.js} +2 -2
  248. package/dist/{chunk-IG75YMUN.js → chunk-RTPQDNW3.js} +1 -1
  249. package/dist/{chunk-YEKYVJQR.js → chunk-SGHIAGPR.js} +2 -2
  250. package/dist/{chunk-SVSCLHHI.js → chunk-SZZRIHGT.js} +1 -1
  251. package/dist/{chunk-EBNI36UQ.js → chunk-T46NR3WP.js} +3 -3
  252. package/dist/{chunk-FPS3JIPQ.js → chunk-TC7DJTXI.js} +1 -1
  253. package/dist/{chunk-W5J7R5EB.js → chunk-TEUQWOWZ.js} +1 -1
  254. package/dist/chunk-THROPJZC.js +115 -0
  255. package/dist/{chunk-IDBHX5SR.js → chunk-TRQCHF2F.js} +1 -1
  256. package/dist/{chunk-M3LUNN7F.js → chunk-TYKQ33CL.js} +13 -2
  257. package/dist/chunk-UDQW6UK7.js +129 -0
  258. package/dist/{chunk-WTNUVQVI.js → chunk-UHJQDFKQ.js} +1 -1
  259. package/dist/{chunk-VVRL27HM.js → chunk-ULPL26BU.js} +2 -2
  260. package/dist/{chunk-EBJREOKS.js → chunk-UXXJDIYE.js} +4 -4
  261. package/dist/{chunk-5LUI3WQP.js → chunk-V43UVX4H.js} +1 -1
  262. package/dist/{chunk-W4XYY73O.js → chunk-VHZ3AXJD.js} +1 -1
  263. package/dist/{chunk-NHBP2XS5.js → chunk-VI5FWDZW.js} +51 -3
  264. package/dist/{chunk-HJEVSQN6.js → chunk-VL6CUNSX.js} +11 -5
  265. package/dist/{chunk-XDTYBF2F.js → chunk-W5XCNEZC.js} +39 -1
  266. package/dist/{chunk-LDJ3J4TQ.js → chunk-WGD2HX2A.js} +1 -1
  267. package/dist/{chunk-FQCLKD7U.js → chunk-WKEPORNM.js} +1 -1
  268. package/dist/{chunk-PJD2KFHX.js → chunk-WPX6A5BV.js} +38 -13
  269. package/dist/{chunk-I3KKZ2O3.js → chunk-XEGZHHRH.js} +45 -36
  270. package/dist/{chunk-IKB6HFGK.js → chunk-XO7PUL4F.js} +6 -4
  271. package/dist/chunk-XTOVADJU.js +170 -0
  272. package/dist/chunk-XV32RKQZ.js +142 -0
  273. package/dist/{chunk-TBMDMXEX.js → chunk-YA3AWELW.js} +1 -1
  274. package/dist/{chunk-HVIX5ECM.js → chunk-YEVG2X5R.js} +1 -1
  275. package/dist/chunk-YZFLH463.js +215 -0
  276. package/dist/generated/index.d.ts +5 -0
  277. package/dist/generated/index.js +112 -108
  278. package/dist/index.js +112 -108
  279. package/dist/styles.css +1982 -228
  280. package/package.json +3 -3
  281. package/dist/AccessDeniedCard-WXM5DBDZ.css +0 -8
  282. package/dist/ArtifactCard-EXVAEBV6.css +0 -109
  283. package/dist/DocTabsEditor-RCOWHX5J.css +0 -78
  284. package/dist/PresenterView-T2C6ZZ3N.css +0 -103
  285. package/dist/SandboxedFrame-L6HBQZCD.css +0 -50
  286. package/dist/chunk-CRKFL423.js +0 -74
  287. package/dist/chunk-GOSQXEZU.js +0 -102
  288. package/dist/chunk-MBNFJSZS.js +0 -107
  289. package/dist/chunk-RV7SZAHR.js +0 -105
  290. package/dist/chunk-UZ7ZUSLH.js +0 -179
  291. package/dist/utils/useMediaMatch.d.ts +0 -12
  292. /package/dist/{chunk-TF2P3OPS.js → chunk-YCARLYI6.js} +0 -0
@@ -4,6 +4,14 @@
4
4
  * each present collaborator's hue, outside the cut-out, and the idle fade.
5
5
  */
6
6
 
7
+ /* HOW FAR THE RING REACHES past each badge: the cut-out, then the hue. The
8
+ ring is drawn outside the stack's own box, so a container that places the
9
+ stack flush to an edge (or clips) keeps this much clear round it. */
10
+ .crewlet-presence-stack {
11
+ --crewlet-presence-stack-cutout: 2px;
12
+ --crewlet-presence-stack-reach: calc(var(--crewlet-presence-stack-cutout) * 2);
13
+ }
14
+
7
15
  /* The wrapper (a span, or a button when badges select) carries no edge of its
8
16
  own: the cut-out and the hue ring are drawn on the badge inside it, which
9
17
  has the badge's own outline to follow. */
@@ -36,15 +44,15 @@ button.crewlet-presence-stack__member:focus-visible {
36
44
  }
37
45
 
38
46
  .crewlet-presence-stack .crewlet-presence-stack__badge {
39
- box-shadow: 0 0 0 2px var(--crewlet-avatar-stack-ground);
47
+ box-shadow: 0 0 0 var(--crewlet-presence-stack-cutout) var(--crewlet-avatar-stack-ground);
40
48
  }
41
49
 
42
50
  /* The hue ring sits outside the cut-out, so it reads as a ring round the
43
51
  badge rather than a stroke on it. */
44
52
  .crewlet-presence-stack .crewlet-presence-stack__badge--present {
45
53
  box-shadow:
46
- 0 0 0 2px var(--crewlet-avatar-stack-ground),
47
- 0 0 0 4px var(--crewlet-presence-hue);
54
+ 0 0 0 var(--crewlet-presence-stack-cutout) var(--crewlet-avatar-stack-ground),
55
+ 0 0 0 var(--crewlet-presence-stack-reach) var(--crewlet-presence-hue);
48
56
  }
49
57
 
50
58
  .crewlet-presence-stack .crewlet-presence-stack__badge--idle {
@@ -2,6 +2,9 @@ import { type ReactNode } from 'react';
2
2
  export interface PresenterViewLabels {
3
3
  current: (position: number, total: number, title: string) => string;
4
4
  next: (title: string) => string;
5
+ /** The captions over the room's slide and the next one. */
6
+ onScreen: string;
7
+ upNext: string;
5
8
  end: string;
6
9
  notes: string;
7
10
  noNotes: string;
@@ -1,6 +1,8 @@
1
- export { PresenterView, formatStopwatch } from '../chunk-MBNFJSZS.js';
2
- import '../chunk-E6CR5PEV.js';
3
- import '../chunk-HMPFGIWM.js';
1
+ export { PresenterView, formatStopwatch } from '../chunk-THROPJZC.js';
2
+ import '../chunk-6VOS2GMB.js';
3
+ import '../chunk-LV4APO72.js';
4
+ import '../chunk-RK4XPHVG.js';
5
+ import '../chunk-OMV5W53A.js';
4
6
  import '../chunk-R25RGPUB.js';
5
7
  import '../chunk-OG6CL3EB.js';
6
8
  import '../chunk-4FQT6ZAY.js';
@@ -0,0 +1,147 @@
1
+ /*
2
+ * PresenterView: the presenter's own screen beside the room's.
3
+ *
4
+ * The room's slide is as large as fits the column with its controls right
5
+ * under it, drawn as the slide itself rather than letterboxed in a well. The
6
+ * notes take the space a glance needs: a large, readable size and their own
7
+ * scroll, so a long note never pushes the next slide or the timer away.
8
+ */
9
+
10
+ .crewlet-presenter {
11
+ display: grid;
12
+ grid-template-columns: minmax(0, 2fr) minmax(16rem, 1fr);
13
+ gap: var(--spacing-5);
14
+ height: 100%;
15
+ min-height: 0;
16
+ padding: var(--spacing-4);
17
+ box-sizing: border-box;
18
+ background: var(--color-surface-background);
19
+ color: var(--color-text-primary);
20
+ }
21
+
22
+ /* THE SLIDE AS LARGE AS FITS, measured against the room under its caption
23
+ (a size container), less the controls under it: the largest box of the
24
+ slide's shape that fits both ways, so nothing is letterboxed and the
25
+ controls sit on the slide's foot wherever that is. */
26
+ .crewlet-presenter__main {
27
+ display: flex;
28
+ flex-direction: column;
29
+ gap: var(--spacing-2);
30
+ min-width: 0;
31
+ min-height: 0;
32
+ margin: 0;
33
+ }
34
+
35
+ .crewlet-presenter__screen {
36
+ container-type: size;
37
+ flex: 1;
38
+ display: flex;
39
+ flex-direction: column;
40
+ align-items: center;
41
+ gap: var(--spacing-3);
42
+ min-height: 0;
43
+ }
44
+
45
+ .crewlet-presenter__screen > .crewlet-slide-stage {
46
+ flex: none;
47
+ width: min(
48
+ 100cqw,
49
+ (100cqh - var(--size-control-sm) - var(--spacing-3)) * var(--crewlet-presenter-ratio, 1.7778)
50
+ );
51
+ border-radius: var(--radius-md);
52
+ }
53
+
54
+ .crewlet-presenter__side {
55
+ display: flex;
56
+ flex-direction: column;
57
+ gap: var(--spacing-4);
58
+ min-height: 0;
59
+ }
60
+
61
+ .crewlet-presenter__next,
62
+ .crewlet-presenter__notes {
63
+ display: flex;
64
+ flex-direction: column;
65
+ gap: var(--spacing-2);
66
+ min-height: 0;
67
+ margin: 0;
68
+ }
69
+
70
+ .crewlet-presenter__caption {
71
+ margin: 0;
72
+ }
73
+
74
+ /* THE END HOLDS THE NEXT SLIDE'S PLACE at its shape, so the timer and the
75
+ notes under it stay where they were on the last slide. */
76
+ .crewlet-presenter__end {
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: center;
80
+ aspect-ratio: var(--crewlet-presenter-ratio, 1.7778);
81
+ margin: 0;
82
+ border: 1px dashed var(--color-border-strong);
83
+ border-radius: var(--radius-sm);
84
+ color: var(--color-text-tertiary);
85
+ font-size: var(--font-size-sm);
86
+ text-align: center;
87
+ }
88
+
89
+ .crewlet-presenter__timer {
90
+ display: flex;
91
+ align-items: center;
92
+ gap: var(--spacing-2);
93
+ }
94
+
95
+ .crewlet-presenter__elapsed {
96
+ margin-right: auto;
97
+ font-family: var(--font-family-mono);
98
+ font-size: var(--font-size-2xl);
99
+ font-variant-numeric: tabular-nums;
100
+ }
101
+
102
+ .crewlet-presenter__notes {
103
+ flex: 1;
104
+ }
105
+
106
+ .crewlet-presenter__notes-body {
107
+ flex: 1;
108
+ min-height: 0;
109
+ overflow: auto;
110
+ padding: var(--spacing-3) var(--spacing-4);
111
+ border-radius: var(--radius-md);
112
+ background: var(--color-surface-subtle);
113
+ font-size: var(--font-size-lg);
114
+ line-height: 1.5;
115
+ white-space: pre-wrap;
116
+ }
117
+
118
+ .crewlet-presenter__notes-body p {
119
+ margin: 0;
120
+ }
121
+
122
+ .crewlet-presenter__empty {
123
+ color: var(--color-text-tertiary);
124
+ }
125
+
126
+ /* ONE COLUMN on a narrow screen: the page scrolls, so the slide is as wide as
127
+ the column and the notes as tall as they are. */
128
+ @media (max-width: 48rem) {
129
+ .crewlet-presenter {
130
+ grid-template-columns: minmax(0, 1fr);
131
+ height: auto;
132
+ }
133
+
134
+ .crewlet-presenter__screen {
135
+ container-type: normal;
136
+ flex: none;
137
+ }
138
+
139
+ .crewlet-presenter__screen > .crewlet-slide-stage {
140
+ width: 100%;
141
+ }
142
+
143
+ .crewlet-presenter__notes-body {
144
+ flex: none;
145
+ overflow: visible;
146
+ }
147
+ }
@@ -1,4 +1,4 @@
1
- export { PRINCIPAL_KINDS, PrincipalAvatar } from '../chunk-4KP4RC3O.js';
2
- import '../chunk-UAN5NE7M.js';
3
- import '../chunk-5OM447RW.js';
1
+ export { PRINCIPAL_KINDS, PrincipalAvatar } from '../chunk-CI3VPIJN.js';
2
+ import '../chunk-5AQBPHZD.js';
3
+ import '../chunk-PZKHBB7D.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,10 +1,10 @@
1
- export { PrincipalPicker } from '../chunk-ZITJKF6Z.js';
1
+ export { PrincipalPicker } from '../chunk-AYB6AYNH.js';
2
2
  import '../chunk-QS4ZGTEU.js';
3
3
  import '../chunk-F73MC7EZ.js';
4
4
  import '../chunk-6QFAK2WV.js';
5
- import '../chunk-4KP4RC3O.js';
6
- import '../chunk-UAN5NE7M.js';
7
- import '../chunk-5OM447RW.js';
5
+ import '../chunk-CI3VPIJN.js';
6
+ import '../chunk-5AQBPHZD.js';
7
+ import '../chunk-PZKHBB7D.js';
8
8
  import '../chunk-PQADV6P6.js';
9
9
  import '../chunk-R25RGPUB.js';
10
10
  import '../chunk-4FQT6ZAY.js';
@@ -1,8 +1,8 @@
1
- export { RichEditor, preloadRichEditor } from '../chunk-V5IGUXMZ.js';
2
- export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-A4E5YLXO.js';
3
- import '../chunk-W5J7R5EB.js';
4
- import '../chunk-SKOYC2CF.js';
5
- import '../chunk-SVSCLHHI.js';
1
+ export { RichEditor, preloadRichEditor } from '../chunk-E4NNGC6X.js';
2
+ export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-4B6LSFDS.js';
3
+ import '../chunk-KK5OYNAF.js';
4
+ import '../chunk-SZZRIHGT.js';
5
+ import '../chunk-TEUQWOWZ.js';
6
6
  import '../chunk-OG6CL3EB.js';
7
7
  import '../chunk-BZFWDIV6.js';
8
8
  import '../chunk-ODEQTPFM.js';
@@ -20,4 +20,4 @@
20
20
  import { Schema } from 'prosemirror-model';
21
21
  /** A heading's element: a body's `#` is an `h2`, because the page's title is its `h1`. */
22
22
  export declare function headingTag(level: number): string;
23
- export declare const schema: Schema<"blockquote" | "table" | "image" | "text" | "heading" | "doc" | "paragraph" | "callout" | "code_block" | "horizontal_rule" | "bullet_list" | "ordered_list" | "list_item" | "table_row" | "table_header" | "table_cell" | "hard_break", "code" | "em" | "link" | "strong" | "strike">;
23
+ export declare const schema: Schema<"heading" | "table" | "text" | "blockquote" | "image" | "doc" | "paragraph" | "callout" | "code_block" | "horizontal_rule" | "bullet_list" | "ordered_list" | "list_item" | "table_row" | "table_header" | "table_cell" | "hard_break", "link" | "strike" | "code" | "em" | "strong">;
@@ -1,3 +1,3 @@
1
- export { canonicalMarkdown, roundTripMarkdown } from '../chunk-IDBHX5SR.js';
2
- import '../chunk-YFW4MTK4.js';
3
- import '../chunk-SKOYC2CF.js';
1
+ export { canonicalMarkdown, roundTripMarkdown } from '../chunk-TRQCHF2F.js';
2
+ import '../chunk-C7DKX453.js';
3
+ import '../chunk-KK5OYNAF.js';
@@ -1,4 +1,4 @@
1
- import { type HTMLAttributes } from 'react';
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
2
  import { type FrameBridgeRange, type FrameHello, type FrameOriginMode, type FrameTheme } from '../FrameProtocol/index.js';
3
3
  /**
4
4
  * Where the frame is in its life.
@@ -66,8 +66,17 @@ export interface SandboxedFrameLabels {
66
66
  outdatedDetail: string;
67
67
  reload: string;
68
68
  }
69
- /** How long a document has to say hello after the frame mounts, or after a load, before it is torn down. */
69
+ /** How long a document has to say hello after the frame mounts before it is torn down. */
70
70
  export declare const FRAME_HELLO_TIMEOUT_MS = 10000;
71
+ /**
72
+ * How long a document that has LOADED has to say hello. The runtime says it
73
+ * as the page's first script runs, long before the load event, so a load with
74
+ * no hello is an answer the engine served without one (an expired ticket, a
75
+ * page that is not there, a node that is starting) and is said within a beat
76
+ * rather than after the reader has watched a placeholder for ten seconds. The
77
+ * beat covers a hello still crossing the process boundary behind its load.
78
+ */
79
+ export declare const FRAME_LOAD_GRACE_MS = 1500;
71
80
  type FrameDivAttributes = Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'onMessage' | 'children' | 'role' | 'aria-label'>;
72
81
  export interface SandboxedFrameProps extends FrameDivAttributes {
73
82
  /** The engine's ticketed frame URL (`Frame.frame_url`). The host appends the fragment. */
@@ -113,6 +122,8 @@ export interface SandboxedFrameProps extends FrameDivAttributes {
113
122
  /** Offered on every end state as the Reload action. Mint a fresh frame, then re-render with it. */
114
123
  onReload?: (() => void) | undefined;
115
124
  helloTimeoutMs?: number | undefined;
125
+ /** How long a loaded document has to say hello; the hello timeout where that is shorter. */
126
+ loadGraceMs?: number | undefined;
116
127
  labels?: Partial<SandboxedFrameLabels> | undefined;
117
128
  }
118
129
  /**
@@ -139,4 +150,35 @@ export interface SandboxedFrameProps extends FrameDivAttributes {
139
150
  * again, as if the component had been remounted.
140
151
  */
141
152
  export declare function SandboxedFrame(props: SandboxedFrameProps): import("react").JSX.Element;
153
+ export interface SandboxedFramePlaceholderProps extends FrameDivAttributes {
154
+ /** The artifact's title. It names the region, as the frame that replaces it will. */
155
+ title: string;
156
+ /** The loading line said to a screen reader. `Loading <title>` when absent. */
157
+ label?: string | undefined;
158
+ }
159
+ /**
160
+ * The frame's loading state, for a host that has no frame to mount yet: the
161
+ * frame's ticket is still being minted, say. It is the very placeholder the
162
+ * frame shows until its document says hello, in the same box, so the reader
163
+ * sees one loading state from the first paint to the document, never a
164
+ * placeholder that jumps when the frame takes over from it.
165
+ */
166
+ export declare function SandboxedFramePlaceholder({ title, label, className, ...rest }: SandboxedFramePlaceholderProps): import("react").JSX.Element;
167
+ export interface SandboxedFrameNoticeProps extends FrameDivAttributes {
168
+ /** The artifact's title. It names the region, as the frame would have. */
169
+ title: string;
170
+ /** What went wrong, as a short heading with no closing full stop. */
171
+ heading: string;
172
+ /** What the reader can do about it. */
173
+ children: ReactNode;
174
+ /** One control at the callout's trailing edge, such as Try again. */
175
+ action?: ReactNode;
176
+ }
177
+ /**
178
+ * A frame that could not be opened at all, for a host that has no frame to
179
+ * mount: the engine refused its ticket, say. It is drawn exactly as the
180
+ * frame's own end states are, in the same box, so a reader meets one way of
181
+ * saying "this page is not here" whichever side found the problem.
182
+ */
183
+ export declare function SandboxedFrameNotice({ title, heading, action, children, className, ...rest }: SandboxedFrameNoticeProps): import("react").JSX.Element;
142
184
  export {};
@@ -1,3 +1,3 @@
1
1
  import './SandboxedFrame.css';
2
- export { FRAME_HELLO_TIMEOUT_MS, SandboxedFrame } from './SandboxedFrame.js';
3
- export type { FrameRefusal, SandboxedFrameLabels, SandboxedFrameProps, SandboxedFrameState } from './SandboxedFrame.js';
2
+ export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from './SandboxedFrame.js';
3
+ export type { FrameRefusal, SandboxedFrameLabels, SandboxedFrameNoticeProps, SandboxedFramePlaceholderProps, SandboxedFrameProps, SandboxedFrameState, } from './SandboxedFrame.js';
@@ -1,8 +1,8 @@
1
- export { FRAME_HELLO_TIMEOUT_MS, SandboxedFrame } from '../chunk-VYDFB6PJ.js';
2
- import '../chunk-W5J7R5EB.js';
1
+ export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from '../chunk-356JNSER.js';
3
2
  import '../chunk-F6V2PTN6.js';
4
3
  import '../chunk-ZXXDZJQN.js';
5
- import '../chunk-SVSCLHHI.js';
4
+ import '../chunk-SZZRIHGT.js';
5
+ import '../chunk-TEUQWOWZ.js';
6
6
  import '../chunk-OG6CL3EB.js';
7
7
  import '../chunk-BZFWDIV6.js';
8
8
  import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,72 @@
1
+ /*
2
+ * The frame fills the box it is given. The page around it does not scroll
3
+ * round the artifact: the artifact scrolls inside its own document, which is
4
+ * what a viewer body that holds one wants.
5
+ */
6
+
7
+ .crewlet-sandboxed-frame {
8
+ position: relative;
9
+ display: flex;
10
+ flex-direction: column;
11
+ width: 100%;
12
+ height: 100%;
13
+ min-height: 0;
14
+ overflow: hidden;
15
+ border-radius: var(--radius-md);
16
+ background: var(--color-surface-background);
17
+ }
18
+
19
+ .crewlet-sandboxed-frame__frame {
20
+ flex: 1 1 auto;
21
+ display: block;
22
+ width: 100%;
23
+ height: 100%;
24
+ border: 0;
25
+ background: transparent;
26
+ }
27
+
28
+ /* THE PLACEHOLDER AND THE END STATES SIT AT ONE INSET, the frame's margin,
29
+ so a reader who watches a page load and then fail sees the callout take
30
+ the placeholder's place rather than jump beside it. */
31
+
32
+ /* Kept out of sight while it starts, so a document that has not painted in
33
+ the reader's palette yet is never what they see. It still loads. */
34
+ .crewlet-sandboxed-frame[data-state='loading'] .crewlet-sandboxed-frame__frame {
35
+ visibility: hidden;
36
+ }
37
+
38
+ .crewlet-sandboxed-frame__loading {
39
+ position: absolute;
40
+ inset: 0;
41
+ display: flex;
42
+ padding: var(--spacing-4);
43
+ }
44
+
45
+ .crewlet-sandboxed-frame__end {
46
+ display: flex;
47
+ flex-direction: column;
48
+ justify-content: flex-start;
49
+ padding: var(--spacing-4);
50
+ }
51
+
52
+ /* THE REGION TAKES FOCUS WHEN THE FRAME HANDS IT BACK, and a reader who just
53
+ left a page by keyboard needs to see where they landed. The document's own
54
+ ring sits outside the box, where a frame filling a clipping card loses it,
55
+ so the region draws its ring inside its edge, on a layer above the frame. */
56
+ .crewlet-sandboxed-frame:focus-visible {
57
+ /* Transparent rather than none: forced-colors mode paints a transparent
58
+ outline in the system ink, so the region's edge is never left bare. */
59
+ outline: 2px solid transparent;
60
+ }
61
+
62
+ .crewlet-sandboxed-frame:focus-visible::after {
63
+ content: '';
64
+ position: absolute;
65
+ inset: 0;
66
+ z-index: 1;
67
+ border-radius: inherit;
68
+ /* An outline, never a shadow: forced-colors mode keeps only outlines. */
69
+ outline: 2px solid var(--color-focus);
70
+ outline-offset: var(--size-focus-ring-inset-offset);
71
+ pointer-events: none;
72
+ }
@@ -1,3 +1,3 @@
1
- export { Section } from '../chunk-FAQGGX2Z.js';
1
+ export { Section } from '../chunk-3TFDQLW3.js';
2
2
  import '../chunk-PQADV6P6.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -56,7 +56,11 @@
56
56
  .crewlet-section__title {
57
57
  margin: 0;
58
58
  font-family: var(--font-family-display);
59
- font-size: var(--font-size-lg);
59
+ /* THE REGISTER IS THE CONTAINER'S TO SET. A screen's band heads at the large
60
+ step; a side panel, whose own title is the small step, sets
61
+ `--crewlet-section-title-size` so the sections inside it never outrank the
62
+ heading they sit under. */
63
+ font-size: var(--crewlet-section-title-size, var(--font-size-lg));
60
64
  font-weight: var(--font-weight-semibold);
61
65
  line-height: var(--font-line-height-normal);
62
66
  letter-spacing: var(--font-letter-spacing-tight);
@@ -115,15 +119,34 @@
115
119
  padding-block: var(--spacing-10);
116
120
  }
117
121
 
118
- /*
119
- * Narrow: the sentence moves under the heading rather than competing with it
120
- * for a line that has room for neither.
121
- */
122
122
  .crewlet-section__header {
123
123
  flex-wrap: wrap;
124
+ row-gap: var(--spacing-1);
124
125
  }
125
126
 
126
127
  .crewlet-section__description {
128
+ order: 1;
129
+ white-space: normal;
130
+ flex-basis: 100%;
131
+ }
132
+ }
133
+
134
+ /*
135
+ * NARROW: the sentence moves under the heading rather than competing with it
136
+ * for a line that has room for neither, and the actions stay on the heading's
137
+ * line. Measured on the column the section sits in where it sits in a size
138
+ * container (a side panel, a screen's content column), since a panel beside a
139
+ * wide window is as narrow as a phone; the window's width above is the answer
140
+ * where there is no container to ask.
141
+ */
142
+ @container (width < 36rem) {
143
+ .crewlet-section__header {
144
+ flex-wrap: wrap;
145
+ row-gap: var(--spacing-1);
146
+ }
147
+
148
+ .crewlet-section__description {
149
+ order: 1;
127
150
  white-space: normal;
128
151
  flex-basis: 100%;
129
152
  }
@@ -1,6 +1,6 @@
1
- import '../chunk-FQCLKD7U.js';
2
- export { SegmentedControl } from '../chunk-RCQXUT5K.js';
3
- import '../chunk-HJEVSQN6.js';
1
+ import '../chunk-WKEPORNM.js';
2
+ export { SegmentedControl } from '../chunk-CCAXYHQS.js';
3
+ import '../chunk-VL6CUNSX.js';
4
4
  import '../chunk-RKKO7QHH.js';
5
5
  import '../chunk-BHHIIK3M.js';
6
6
  import '../chunk-BZFWDIV6.js';
@@ -12,6 +12,8 @@ export type SelectAlign = 'left' | 'right';
12
12
  * one question per line, which is not what a filter bar is.
13
13
  */
14
14
  export type SelectWidth = 'full' | 'auto';
15
+ /** How much chrome a picker draws. See [SelectProps.appearance]. */
16
+ export type SelectAppearance = 'field' | 'quiet';
15
17
  /**
16
18
  * Which control this is.
17
19
  *
@@ -124,6 +126,14 @@ export interface SelectProps extends NativePassthrough {
124
126
  active?: boolean;
125
127
  /** Marks the value as refused. Sets `aria-invalid`. */
126
128
  error?: boolean;
129
+ /**
130
+ * `field` (the default) is a bordered picker, a form's. `quiet` draws no
131
+ * boundary until the pointer is over it, for a toolbar whose pickers
132
+ * arrange content that is the page's point (a gallery's type and order): a
133
+ * row of bordered boxes above a grid of cards read as a form to fill in.
134
+ * A quiet filter that is on takes the accent's soft fill and ink.
135
+ */
136
+ appearance?: SelectAppearance;
127
137
  ariaLabel?: string;
128
138
  searchable?: boolean;
129
139
  searchPlaceholder?: string;
@@ -1,3 +1,3 @@
1
1
  import './Select.css';
2
2
  export { Select } from './Select.js';
3
- export type { SelectAlign, SelectMode, SelectOption, SelectProps, SelectSize, SelectValue, } from './Select.js';
3
+ export type { SelectAlign, SelectAppearance, SelectMode, SelectOption, SelectProps, SelectSize, SelectValue, } from './Select.js';
@@ -1,5 +1,5 @@
1
- export { Select } from '../chunk-FC4YTTFJ.js';
1
+ export { Select } from '../chunk-BQ7AKL2N.js';
2
2
  import '../chunk-F73MC7EZ.js';
3
- import '../chunk-HMPFGIWM.js';
3
+ import '../chunk-OMV5W53A.js';
4
4
  import '../chunk-R25RGPUB.js';
5
5
  import '../chunk-ODEQTPFM.js';
@@ -97,6 +97,35 @@
97
97
  border-color: var(--color-feedback-danger);
98
98
  }
99
99
 
100
+ /*
101
+ * QUIET: no boundary and no fill at rest, the hover overlay under the
102
+ * pointer, and the ring on focus as every field draws it. It sizes to its
103
+ * answer with no floor, since a quiet picker in a toolbar reads as its words.
104
+ * A quiet filter that is on takes the accent's soft fill under its accent ink,
105
+ * so "this narrows the list" still shows without a box around it.
106
+ */
107
+ .crewlet-select--quiet {
108
+ --crewlet-select-auto-min-width: 0px;
109
+
110
+ border-color: transparent;
111
+ background-color: transparent;
112
+ }
113
+
114
+ .crewlet-select--quiet:hover {
115
+ border-color: transparent;
116
+ background-color: var(--color-surface-hover);
117
+ }
118
+
119
+ .crewlet-select--quiet.is-open {
120
+ background-color: var(--color-surface-hover);
121
+ }
122
+
123
+ .crewlet-select--quiet.is-active,
124
+ .crewlet-select--quiet.is-active:hover {
125
+ border-color: transparent;
126
+ background-color: var(--color-brand-accent-soft);
127
+ }
128
+
100
129
  /* A refused picker keeps its colour while the reader is in it: the ring
101
130
  covers the boundary, so a focus-coloured one would paint out the refusal.
102
131
  See Input.css. */
@@ -26,6 +26,14 @@ export interface ShareAudienceRow {
26
26
  removable?: boolean | undefined;
27
27
  /** A line under the row. An agent's row says what the agent may do with its role when this is left out. */
28
28
  note?: string | undefined;
29
+ /**
30
+ * Why this share reaches nobody, in words ("token:maya is a sign-in, not a
31
+ * seat. Remove it and share with their seat."). A stored share the engine
32
+ * can no longer honour is LISTED, not hidden, so its owner sees it and takes
33
+ * it away: the row says so in the warning ink in place of its note, reads
34
+ * `labels.noAccess` in place of a role, and offers Remove as its one action.
35
+ */
36
+ invalid?: string | undefined;
29
37
  }
30
38
  export interface ShareDialogLabels {
31
39
  title: (artifact: string) => string;
@@ -36,6 +44,8 @@ export interface ShareDialogLabels {
36
44
  roleDescriptions: Record<ArtifactRole, string>;
37
45
  roleFor: (name: string) => string;
38
46
  remove: (name: string) => string;
47
+ /** What an invalid row ([ShareAudienceRow.invalid]) reads in place of its role. */
48
+ noAccess: string;
39
49
  saving: string;
40
50
  /** Why a row's controls wait while its change is in flight. */
41
51
  busy: string;
@@ -1,17 +1,17 @@
1
- export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-JQLTG4KH.js';
2
- import '../chunk-FC4YTTFJ.js';
1
+ export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-CCLNGVCM.js';
2
+ import '../chunk-BQ7AKL2N.js';
3
3
  import '../chunk-W46LPU4R.js';
4
4
  import '../chunk-STJ7QBC3.js';
5
5
  import '../chunk-DTIW4CHZ.js';
6
- import '../chunk-I3KKZ2O3.js';
6
+ import '../chunk-XEGZHHRH.js';
7
7
  import '../chunk-F73MC7EZ.js';
8
- import '../chunk-SVSCLHHI.js';
9
- import '../chunk-4KP4RC3O.js';
10
- import '../chunk-UAN5NE7M.js';
11
- import '../chunk-5OM447RW.js';
8
+ import '../chunk-SZZRIHGT.js';
9
+ import '../chunk-CI3VPIJN.js';
10
+ import '../chunk-5AQBPHZD.js';
11
+ import '../chunk-PZKHBB7D.js';
12
12
  import '../chunk-PQADV6P6.js';
13
- import '../chunk-IG75YMUN.js';
14
- import '../chunk-HMPFGIWM.js';
13
+ import '../chunk-RTPQDNW3.js';
14
+ import '../chunk-OMV5W53A.js';
15
15
  import '../chunk-R25RGPUB.js';
16
16
  import '../chunk-OG6CL3EB.js';
17
17
  import '../chunk-4FQT6ZAY.js';
@@ -16,6 +16,10 @@
16
16
  display: flex;
17
17
  flex-direction: column;
18
18
  gap: var(--spacing-2);
19
+ /* A BLOCK'S WORTH OF ROOM ABOVE EACH HEADING, over the body's own gap: at
20
+ the gap alone "Who has access" sat as close under the add field as the
21
+ role select beside it, and read as that field's label. */
22
+ padding-block-start: var(--spacing-2);
19
23
  }
20
24
 
21
25
  .crewlet-share-dialog__heading {
@@ -87,11 +91,19 @@
87
91
  }
88
92
 
89
93
  .crewlet-share-dialog__note,
94
+ .crewlet-share-dialog__invalid,
90
95
  .crewlet-share-dialog__refusal {
91
96
  grid-column: 2 / -1;
92
97
  font-size: var(--font-size-xs);
93
98
  }
94
99
 
100
+ /* A SHARE THAT REACHES NOBODY says why in the warning ink, the state a person
101
+ is asked to act on, and its "No access" stands in the quiet ink a role
102
+ would. */
103
+ .crewlet-share-dialog__invalid {
104
+ color: var(--color-feedback-warning-ink);
105
+ }
106
+
95
107
  .crewlet-share-dialog__note {
96
108
  color: var(--color-text-tertiary);
97
109
  }