@crewlethq/ui 0.32.0 → 0.33.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 (273) hide show
  1. package/README.md +131 -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 +12 -12
  13. package/dist/{ArtifactBar-MLMJHWY6.css → ArtifactBar-C462VD4C.css} +8 -3
  14. package/dist/ArtifactCard/ArtifactCard.d.ts +19 -1
  15. package/dist/ArtifactCard/index.d.ts +1 -1
  16. package/dist/ArtifactCard/index.js +4 -4
  17. package/dist/{ArtifactCard-EXVAEBV6.css → ArtifactCard-AS5Z4CVI.css} +17 -2
  18. package/dist/ArtifactCover/index.js +6 -6
  19. package/dist/ArtifactIcon/index.js +5 -5
  20. package/dist/ArtifactPanel/ArtifactPanel.d.ts +6 -2
  21. package/dist/ArtifactPanel/index.js +1 -1
  22. package/dist/{ArtifactPanel-YFXT5O77.css → ArtifactPanel-HW3SU7CP.css} +25 -7
  23. package/dist/Avatar/Avatar.d.ts +6 -4
  24. package/dist/Avatar/index.js +2 -2
  25. package/dist/AvatarPicker/index.js +8 -8
  26. package/dist/Callout/index.js +1 -1
  27. package/dist/{Callout-SXXK4B5R.css → Callout-ZAVG3P66.css} +46 -6
  28. package/dist/Canvas/Canvas.d.ts +33 -2
  29. package/dist/Canvas/index.d.ts +1 -1
  30. package/dist/Canvas/index.js +4 -4
  31. package/dist/{Canvas-LRVNW7XN.css → Canvas-VUG2HLZK.css} +23 -0
  32. package/dist/CanvasBoard/CanvasBoard.d.ts +38 -3
  33. package/dist/CanvasBoard/budget.d.ts +9 -3
  34. package/dist/CanvasBoard/index.d.ts +2 -2
  35. package/dist/CanvasBoard/index.js +7 -7
  36. package/dist/{CanvasBoard-MBZVBWDO.css → CanvasBoard-5NNSKY6A.css} +127 -6
  37. package/dist/CanvasToolbar/index.js +5 -5
  38. package/dist/{CanvasToolbar-AE5MXH7T.css → CanvasToolbar-EM5EVZED.css} +4 -2
  39. package/dist/ChangeMark/index.js +4 -4
  40. package/dist/CharacterPicker/index.js +2 -2
  41. package/dist/Charts/ActivityStrip.d.ts +16 -1
  42. package/dist/Charts/BarList.d.ts +6 -0
  43. package/dist/Charts/ChartEmpty.d.ts +33 -0
  44. package/dist/Charts/Legend.d.ts +6 -0
  45. package/dist/Charts/StackedBar.d.ts +4 -1
  46. package/dist/Charts/StackedColumns.d.ts +14 -3
  47. package/dist/Charts/TimeSeries.d.ts +11 -1
  48. package/dist/Charts/index.d.ts +2 -0
  49. package/dist/Charts/index.js +1 -1
  50. package/dist/{Charts-RY4JN5FC.css → Charts-MBJG72BS.css} +140 -16
  51. package/dist/Checkbox/index.js +1 -1
  52. package/dist/{Checkbox-5UORUG3F.css → Checkbox-ALWG3WV2.css} +11 -0
  53. package/dist/CommandPalette/index.js +3 -3
  54. package/dist/{CommandPalette-HBTNKHZQ.css → CommandPalette-7CFGVBND.css} +4 -0
  55. package/dist/CommentThread/index.js +5 -5
  56. package/dist/Container/index.js +1 -1
  57. package/dist/{Container-3TSKMGNI.css → Container-34BAKG7B.css} +3 -1
  58. package/dist/{DashboardCover-RMINBODB.css → DashboardCover-KYGYMRKW.css} +42 -9
  59. package/dist/DataTable/index.js +5 -5
  60. package/dist/{DataTable-WZK3V62B.css → DataTable-NL2YWAIA.css} +4 -1
  61. package/dist/DataView/index.js +8 -8
  62. package/dist/DateTimePicker/index.js +3 -3
  63. package/dist/DocTabsEditor/DocTabsEditor.d.ts +34 -21
  64. package/dist/DocTabsEditor/index.js +4 -1
  65. package/dist/DocTabsEditor-4M452LNS.css +189 -0
  66. package/dist/Document/Document.d.ts +18 -1
  67. package/dist/Document/index.d.ts +2 -2
  68. package/dist/Document/index.js +1 -1
  69. package/dist/{Document-G3YTZIUL.css → Document-JUGCSQ4L.css} +78 -5
  70. package/dist/EditingStatus/index.js +1 -1
  71. package/dist/{EditingStatus-L6THUAN7.css → EditingStatus-NNA2CKIL.css} +17 -4
  72. package/dist/{Editor-YWBUJAQU.js → Editor-UUZ7XKCU.js} +5 -5
  73. package/dist/EntityChip/index.js +3 -3
  74. package/dist/FactList/index.js +3 -3
  75. package/dist/FollowBanner/index.js +3 -3
  76. package/dist/Fullscreen/index.d.ts +1 -0
  77. package/dist/Fullscreen/index.js +1 -1
  78. package/dist/Fullscreen/useIdle.d.ts +16 -0
  79. package/dist/HuePicker/index.js +3 -3
  80. package/dist/ImageUpload/index.js +3 -3
  81. package/dist/Layer/index.d.ts +1 -1
  82. package/dist/Layer/index.js +1 -1
  83. package/dist/Layer/place.d.ts +18 -0
  84. package/dist/LayersList/LayersList.d.ts +57 -0
  85. package/dist/LayersList/index.d.ts +3 -0
  86. package/dist/LayersList/index.js +3 -0
  87. package/dist/LayersList-NQZEIPZB.css +82 -0
  88. package/dist/LinkInterstitial/index.js +4 -4
  89. package/dist/ListInput/index.js +1 -1
  90. package/dist/Markdown/index.js +1 -1
  91. package/dist/MarkdownEditor/index.js +5 -5
  92. package/dist/MediaMatch/index.d.ts +1 -0
  93. package/dist/MediaMatch/index.js +1 -0
  94. package/dist/MediaMatch/useMediaMatch.d.ts +19 -0
  95. package/dist/Menu/index.js +2 -2
  96. package/dist/MergeConflicts/index.js +4 -4
  97. package/dist/Modal/index.js +2 -2
  98. package/dist/{Modal-XOSV6FAH.css → Modal-7MWRCWAI.css} +30 -0
  99. package/dist/Note/index.js +1 -1
  100. package/dist/{Note-ONSKKTOA.css → Note-WI5MLZOO.css} +13 -0
  101. package/dist/OrgLabel/index.js +3 -3
  102. package/dist/OrgNode/index.js +4 -4
  103. package/dist/OrgTable/index.js +7 -7
  104. package/dist/PeopleRail/index.js +3 -3
  105. package/dist/Popover/index.js +2 -2
  106. package/dist/PresenceStack/index.js +3 -3
  107. package/dist/{PresenceStack-QSXQJND5.css → PresenceStack-FJJQVH74.css} +11 -3
  108. package/dist/PresenterView/PresenterView.d.ts +3 -0
  109. package/dist/PresenterView/index.js +5 -3
  110. package/dist/PresenterView-T3EXIQ5S.css +147 -0
  111. package/dist/Principal/index.js +3 -3
  112. package/dist/PrincipalPicker/index.js +4 -4
  113. package/dist/RichEditor/index.js +5 -5
  114. package/dist/RichEditor/schema.d.ts +1 -1
  115. package/dist/RichEditorMarkdown/index.js +3 -3
  116. package/dist/SandboxedFrame/SandboxedFrame.d.ts +44 -2
  117. package/dist/SandboxedFrame/index.d.ts +2 -2
  118. package/dist/SandboxedFrame/index.js +3 -3
  119. package/dist/SandboxedFrame-P5NASXB7.css +72 -0
  120. package/dist/Section/index.js +1 -1
  121. package/dist/{Section-QR3ILQVK.css → Section-O5AHGSOG.css} +28 -5
  122. package/dist/SegmentedControl/index.js +3 -3
  123. package/dist/Select/index.js +2 -2
  124. package/dist/ShareDialog/ShareDialog.d.ts +10 -0
  125. package/dist/ShareDialog/index.js +9 -9
  126. package/dist/{ShareDialog-YZ4F37MW.css → ShareDialog-4QDCBWMH.css} +12 -0
  127. package/dist/SheetGrid/SheetGrid.d.ts +3 -1
  128. package/dist/SheetGrid/index.js +8 -8
  129. package/dist/{SheetGrid-J3TKKXZL.css → SheetGrid-AKPUCK67.css} +106 -7
  130. package/dist/SheetModel/fit.d.ts +34 -0
  131. package/dist/SheetModel/index.d.ts +1 -0
  132. package/dist/SheetModel/index.js +1 -1
  133. package/dist/Shortcut/index.js +1 -1
  134. package/dist/Skeleton/Skeleton.d.ts +2 -1
  135. package/dist/Skeleton/index.js +1 -1
  136. package/dist/SlideCompare/SlideCompare.d.ts +6 -1
  137. package/dist/SlideCompare/index.js +3 -3
  138. package/dist/{SlideCompare-MGM3U2ME.css → SlideCompare-HTCMPQFY.css} +36 -3
  139. package/dist/SlideFilmstrip/SlideFilmstrip.d.ts +14 -3
  140. package/dist/SlideFilmstrip/index.js +3 -3
  141. package/dist/{SlideFilmstrip-BCLNAHFX.css → SlideFilmstrip-5U6Z55GS.css} +63 -2
  142. package/dist/SlideGrid/index.js +3 -3
  143. package/dist/{SlideGrid-RT6QEQEE.css → SlideGrid-S4LTJ4UU.css} +9 -5
  144. package/dist/SlideNav/SlideNav.d.ts +49 -0
  145. package/dist/SlideNav/index.d.ts +3 -0
  146. package/dist/SlideNav/index.js +4 -0
  147. package/dist/SlideNav-BLFJF6AH.css +53 -0
  148. package/dist/SlideStage/SlideStage.d.ts +9 -1
  149. package/dist/SlideStage/index.js +2 -2
  150. package/dist/{SlideStage-KGRRALXR.css → SlideStage-S2FISF4C.css} +23 -0
  151. package/dist/StatCard/StatCard.d.ts +16 -1
  152. package/dist/StatCard/index.js +1 -1
  153. package/dist/{StatCard-KPAFD4E2.css → StatCard-4T7TMWMN.css} +40 -13
  154. package/dist/Switcher/index.js +6 -6
  155. package/dist/TableCells/index.js +3 -3
  156. package/dist/Tabs/Tabs.d.ts +21 -4
  157. package/dist/Tabs/index.js +1 -1
  158. package/dist/{Tabs-CJGO35BH.css → Tabs-MMZXV5EF.css} +9 -8
  159. package/dist/TagsInput/index.js +1 -1
  160. package/dist/ThemeSwitcher/index.js +4 -4
  161. package/dist/TimeWindowPicker/index.js +4 -4
  162. package/dist/Toaster/index.js +2 -2
  163. package/dist/{Toaster-EOOOTSJT.css → Toaster-C6BQ7L6I.css} +10 -1
  164. package/dist/Toolbar/index.js +1 -1
  165. package/dist/Tooltip/index.js +2 -2
  166. package/dist/TreeCanvas/index.js +5 -5
  167. package/dist/TreeGrid/index.js +3 -3
  168. package/dist/VersionCompare/index.js +4 -4
  169. package/dist/VersionTimeline/index.js +4 -4
  170. package/dist/WidgetFrame/WidgetFrame.d.ts +8 -1
  171. package/dist/WidgetFrame/index.js +2 -2
  172. package/dist/{WidgetFrame-LRZIL62O.css → WidgetFrame-BTFW3CRK.css} +49 -5
  173. package/dist/{chunk-OTN35CI4.js → chunk-22UEIXZE.js} +18 -6
  174. package/dist/{chunk-UZ6MA2V6.js → chunk-2DHMVB5J.js} +2 -2
  175. package/dist/{chunk-WJDQ7XQA.js → chunk-2QEDJSJC.js} +1 -1
  176. package/dist/{chunk-2HIOJ4YZ.js → chunk-3EB2AV3H.js} +2 -3
  177. package/dist/{chunk-ODT5H4MN.js → chunk-3LYWD3BO.js} +2 -2
  178. package/dist/{chunk-FAQGGX2Z.js → chunk-3TFDQLW3.js} +1 -1
  179. package/dist/{chunk-VYDFB6PJ.js → chunk-3U7S6ZUN.js} +50 -17
  180. package/dist/{chunk-A4E5YLXO.js → chunk-4B6LSFDS.js} +1 -1
  181. package/dist/{chunk-WTNUVQVI.js → chunk-4IJS5CPF.js} +1 -1
  182. package/dist/{chunk-UAN5NE7M.js → chunk-5AQBPHZD.js} +1 -1
  183. package/dist/{chunk-QWOPX2MN.js → chunk-5FYPE5GL.js} +2 -3
  184. package/dist/{chunk-CJKMURZO.js → chunk-5SZGKSGL.js} +1 -1
  185. package/dist/chunk-6VOS2GMB.js +54 -0
  186. package/dist/{chunk-3ZAFJ4GK.js → chunk-7Q7WDXHG.js} +4 -4
  187. package/dist/{chunk-JI5AVQLA.js → chunk-7WHDPLVJ.js} +1 -1
  188. package/dist/{chunk-QH3AKP2N.js → chunk-AC22RZKC.js} +2 -2
  189. package/dist/{chunk-ZITJKF6Z.js → chunk-AYB6AYNH.js} +1 -1
  190. package/dist/{chunk-Y5NQ2LMS.js → chunk-BY4N65PM.js} +1 -1
  191. package/dist/{chunk-YFW4MTK4.js → chunk-C7DKX453.js} +1 -1
  192. package/dist/{chunk-RCQXUT5K.js → chunk-CCAXYHQS.js} +1 -1
  193. package/dist/{chunk-4KP4RC3O.js → chunk-CI3VPIJN.js} +1 -1
  194. package/dist/{chunk-7T42VQQT.js → chunk-CPEPST4S.js} +1 -1
  195. package/dist/{chunk-AAOH2P6Y.js → chunk-DFK5EQTU.js} +5 -3
  196. package/dist/{chunk-GOSQXEZU.js → chunk-DFZMYB5X.js} +16 -10
  197. package/dist/{chunk-TGYDROIB.js → chunk-EBCHVFCS.js} +4 -4
  198. package/dist/{chunk-YDBC4DNW.js → chunk-FWYHRU7M.js} +1 -1
  199. package/dist/{chunk-LWXRD6L6.js → chunk-G4ZW7A2W.js} +123 -31
  200. package/dist/{chunk-E6EWK5YY.js → chunk-GLSOD5Z4.js} +3 -3
  201. package/dist/{chunk-LIXSV5YI.js → chunk-GPHWCK7M.js} +1 -1
  202. package/dist/{chunk-UQHKFF2N.js → chunk-GPWJCP3U.js} +1 -1
  203. package/dist/{chunk-77DRMDXR.js → chunk-HG5VF3TZ.js} +192 -67
  204. package/dist/{chunk-4JUKWWUD.js → chunk-HH2GKAAE.js} +1 -1
  205. package/dist/{chunk-QVE4GJAT.js → chunk-HJO4WCH6.js} +1 -1
  206. package/dist/{chunk-I3BSQUKN.js → chunk-HUVG2FFT.js} +1 -1
  207. package/dist/{chunk-VS3KOOOL.js → chunk-ILAEBSLJ.js} +3 -3
  208. package/dist/{chunk-GR55WT4R.js → chunk-IYO2N5ZH.js} +2 -2
  209. package/dist/{chunk-RWA4H2TV.js → chunk-J6ON5SYE.js} +1 -1
  210. package/dist/{chunk-NHBP2XS5.js → chunk-J6ZSH3F5.js} +49 -1
  211. package/dist/{chunk-AMNN4WDX.js → chunk-JBUMD6DS.js} +2 -2
  212. package/dist/{chunk-BWRGFKJP.js → chunk-K3IJQNB7.js} +2 -3
  213. package/dist/{chunk-LFNUH4GY.js → chunk-K4VP6ZKE.js} +1 -1
  214. package/dist/{chunk-ZR5VN5IV.js → chunk-KD2IRYCT.js} +2 -2
  215. package/dist/{chunk-SKOYC2CF.js → chunk-KK5OYNAF.js} +2 -1
  216. package/dist/{chunk-UB7TJEKZ.js → chunk-KV3ODJXH.js} +6 -7
  217. package/dist/chunk-LL5AFXU7.js +96 -0
  218. package/dist/{chunk-VYOKRN2I.js → chunk-LM3ISVJA.js} +1 -1
  219. package/dist/{chunk-E6CR5PEV.js → chunk-LV4APO72.js} +8 -2
  220. package/dist/{chunk-B4EBHPK3.js → chunk-M5KZX5JE.js} +9 -2
  221. package/dist/{chunk-PJD2KFHX.js → chunk-MDNVHIB2.js} +38 -13
  222. package/dist/{chunk-V5IGUXMZ.js → chunk-MTMKIUWF.js} +4 -4
  223. package/dist/{chunk-HVNTQ36V.js → chunk-O37AQNLK.js} +4 -4
  224. package/dist/{chunk-HMPFGIWM.js → chunk-OMV5W53A.js} +10 -1
  225. package/dist/chunk-ONL54WMH.js +55 -0
  226. package/dist/{chunk-AKEZ3G5V.js → chunk-ONQKKHON.js} +1 -1
  227. package/dist/{chunk-LZHLSQYK.js → chunk-OOWPSBIS.js} +2 -2
  228. package/dist/{chunk-JQLTG4KH.js → chunk-ORT5IKHP.js} +62 -51
  229. package/dist/{chunk-4KWOKX2B.js → chunk-OSKJZNBT.js} +1 -1
  230. package/dist/{chunk-EHQTPVV4.js → chunk-PLTCDSTU.js} +1 -1
  231. package/dist/{chunk-5OM447RW.js → chunk-PZKHBB7D.js} +1 -1
  232. package/dist/{chunk-VEB5ERRE.js → chunk-QWNVSR6G.js} +2 -2
  233. package/dist/{chunk-IG75YMUN.js → chunk-RTPQDNW3.js} +1 -1
  234. package/dist/{chunk-SVSCLHHI.js → chunk-SZZRIHGT.js} +1 -1
  235. package/dist/{chunk-EBNI36UQ.js → chunk-T46NR3WP.js} +3 -3
  236. package/dist/{chunk-FPS3JIPQ.js → chunk-TC7DJTXI.js} +1 -1
  237. package/dist/{chunk-W5J7R5EB.js → chunk-TEUQWOWZ.js} +1 -1
  238. package/dist/chunk-THROPJZC.js +115 -0
  239. package/dist/{chunk-IDBHX5SR.js → chunk-TRQCHF2F.js} +1 -1
  240. package/dist/{chunk-M3LUNN7F.js → chunk-TYKQ33CL.js} +13 -2
  241. package/dist/{chunk-VVRL27HM.js → chunk-ULPL26BU.js} +2 -2
  242. package/dist/{chunk-6AH2XJ3Q.js → chunk-UNXLTJU7.js} +3 -3
  243. package/dist/{chunk-FC4YTTFJ.js → chunk-UQGFHNDI.js} +2 -3
  244. package/dist/{chunk-EBJREOKS.js → chunk-UXXJDIYE.js} +4 -4
  245. package/dist/{chunk-5LUI3WQP.js → chunk-V43UVX4H.js} +1 -1
  246. package/dist/{chunk-W4XYY73O.js → chunk-VHZ3AXJD.js} +1 -1
  247. package/dist/{chunk-HJEVSQN6.js → chunk-VL6CUNSX.js} +11 -5
  248. package/dist/{chunk-XDTYBF2F.js → chunk-W5XCNEZC.js} +39 -1
  249. package/dist/{chunk-LDJ3J4TQ.js → chunk-WGD2HX2A.js} +1 -1
  250. package/dist/{chunk-FQCLKD7U.js → chunk-WKEPORNM.js} +1 -1
  251. package/dist/{chunk-I3KKZ2O3.js → chunk-XEGZHHRH.js} +45 -36
  252. package/dist/{chunk-IKB6HFGK.js → chunk-XO7PUL4F.js} +6 -4
  253. package/dist/chunk-XV32RKQZ.js +142 -0
  254. package/dist/{chunk-TBMDMXEX.js → chunk-YA3AWELW.js} +1 -1
  255. package/dist/{chunk-HVIX5ECM.js → chunk-YEVG2X5R.js} +1 -1
  256. package/dist/chunk-YZFLH463.js +215 -0
  257. package/dist/{chunk-P4BOXB6E.js → chunk-Z6GFMI2Z.js} +6 -7
  258. package/dist/{chunk-YEKYVJQR.js → chunk-ZNBLFCQS.js} +2 -2
  259. package/dist/generated/index.d.ts +3 -0
  260. package/dist/generated/index.js +105 -103
  261. package/dist/index.js +105 -103
  262. package/dist/styles.css +1448 -211
  263. package/package.json +3 -3
  264. package/dist/AccessDeniedCard-WXM5DBDZ.css +0 -8
  265. package/dist/DocTabsEditor-RCOWHX5J.css +0 -78
  266. package/dist/PresenterView-T2C6ZZ3N.css +0 -103
  267. package/dist/SandboxedFrame-L6HBQZCD.css +0 -50
  268. package/dist/chunk-CRKFL423.js +0 -74
  269. package/dist/chunk-MBNFJSZS.js +0 -107
  270. package/dist/chunk-RV7SZAHR.js +0 -105
  271. package/dist/chunk-UZ7ZUSLH.js +0 -179
  272. package/dist/utils/useMediaMatch.d.ts +0 -12
  273. /package/dist/{chunk-TF2P3OPS.js → chunk-2JJIN6JN.js} +0 -0
@@ -1,5 +1,5 @@
1
- import { Select } from './chunk-FC4YTTFJ.js';
2
- import { Popover } from './chunk-BWRGFKJP.js';
1
+ import { Select } from './chunk-UQGFHNDI.js';
2
+ import { Popover } from './chunk-K3IJQNB7.js';
3
3
  import { today, shiftMonth, CalendarGrid, compareDays } from './chunk-GXQ3B46I.js';
4
4
  import { Input } from './chunk-6QFAK2WV.js';
5
5
  import { isComposing } from './chunk-R25RGPUB.js';
@@ -1,5 +1,5 @@
1
1
  import { useThemePreference, useDensityPreference } from './chunk-Z24ZUSTX.js';
2
- import { SegmentedControl } from './chunk-RCQXUT5K.js';
2
+ import { SegmentedControl } from './chunk-CCAXYHQS.js';
3
3
  import { SunGlyph, MonitorGlyph, MoonGlyph } from '@crewlethq/icons/glyphs';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,4 +1,4 @@
1
- import { useLayerContainer, viewportBounds, LAYER_GAP, outsideBounds, placePopup, LAYER_REPOSITION_EVENT } from './chunk-HMPFGIWM.js';
1
+ import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
2
2
  import { usePopupLayer } from './chunk-R25RGPUB.js';
3
3
  import { Button } from './chunk-OG6CL3EB.js';
4
4
  import { IconButton } from './chunk-4FQT6ZAY.js';
@@ -99,14 +99,13 @@ function Menu({
99
99
  width: rect.width,
100
100
  height: rect.height
101
101
  };
102
- const whole = { x: 0, y: 0, width: host.width, height: host.height };
103
102
  const bounds = {
104
103
  x: LAYER_GAP,
105
104
  y: LAYER_GAP,
106
105
  width: host.width - 2 * LAYER_GAP,
107
106
  height: host.height - 2 * LAYER_GAP
108
107
  };
109
- if (outsideBounds(local, whole)) {
108
+ if (anchorGone(rect, host, inHost)) {
110
109
  close(true);
111
110
  return;
112
111
  }
@@ -1,9 +1,9 @@
1
1
  import { presenceHueClass } from './chunk-I6POAB4V.js';
2
2
  import { presenceLabels, presenceOrder } from './chunk-Z7JYG5TF.js';
3
- import { AVATAR_SIZES, Avatar } from './chunk-5OM447RW.js';
3
+ import { AVATAR_SIZES, Avatar } from './chunk-PZKHBB7D.js';
4
4
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
- import './PresenceStack-QSXQJND5.css';
6
+ import './PresenceStack-FJJQVH74.css';
7
7
  import { isCrewletCharacter } from '@crewlethq/icons/characters';
8
8
  import { jsxs, jsx } from 'react/jsx-runtime';
9
9
 
@@ -1,6 +1,6 @@
1
1
  import { useHeadingLevel, headingTag, HeadingLevelProvider, nextHeadingLevel } from './chunk-PQADV6P6.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './Section-QR3ILQVK.css';
3
+ import './Section-O5AHGSOG.css';
4
4
  import { useId } from 'react';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,25 +1,26 @@
1
- import { Skeleton } from './chunk-W5J7R5EB.js';
1
+ import { Skeleton } from './chunk-TEUQWOWZ.js';
2
2
  import { frameThemeMessage, readFrameHello, frameOriginMatches, negotiateBridge, FRAME_MESSAGE, portTargetOrigin, checkFrameSandbox, httpOrigin, isFrameNonce, frameFragment, readOpenLink, externalUrl, isFocusExit } from './chunk-F6V2PTN6.js';
3
- import { Callout } from './chunk-SVSCLHHI.js';
3
+ import { Callout } from './chunk-SZZRIHGT.js';
4
4
  import { Button } from './chunk-OG6CL3EB.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
- import './SandboxedFrame-L6HBQZCD.css';
6
+ import './SandboxedFrame-P5NASXB7.css';
7
7
  import { useState, useMemo, useRef, useEffect } from 'react';
8
8
  import { jsx, jsxs } from 'react/jsx-runtime';
9
9
 
10
10
  var LABELS = {
11
11
  loading: (title) => `Loading ${title}`,
12
- failed: "This page failed to load.",
12
+ failed: "This page failed to load",
13
13
  failedDetail: "It did not finish starting. Reload it, and if it fails again, ask its owner to republish it.",
14
- navigated: "This page left its frame, so it was closed.",
14
+ navigated: "This page left its frame, so it was closed",
15
15
  navigatedDetail: "An artifact may only show its own pages. Reload it to open it again.",
16
- refused: "This page cannot be shown safely.",
16
+ refused: "This page cannot be shown safely",
17
17
  refusedDetail: "It arrived with a frame policy this dashboard does not accept.",
18
- outdated: "This page needs a newer dashboard.",
18
+ outdated: "This page needs a newer dashboard",
19
19
  outdatedDetail: "Reload the dashboard to update it, then open the page again.",
20
20
  reload: "Reload"
21
21
  };
22
22
  var FRAME_HELLO_TIMEOUT_MS = 1e4;
23
+ var FRAME_LOAD_GRACE_MS = 1500;
23
24
  function framePolicy(src, origin, mode, sandbox, nonce, theme) {
24
25
  const verdict = checkFrameSandbox(sandbox, mode);
25
26
  if (!verdict.ok) return { ok: false, refusal: { kind: "sandbox", tokens: verdict.refused } };
@@ -54,6 +55,7 @@ function FrameInstance(props) {
54
55
  onRefusal: _onRefusal,
55
56
  onReload,
56
57
  helloTimeoutMs = FRAME_HELLO_TIMEOUT_MS,
58
+ loadGraceMs = FRAME_LOAD_GRACE_MS,
57
59
  labels,
58
60
  className,
59
61
  ...rest
@@ -168,7 +170,7 @@ function FrameInstance(props) {
168
170
  }
169
171
  owed = true;
170
172
  clearTimeout(loadTimer);
171
- loadTimer = setTimeout(() => end(greeted > 0 ? "navigated" : "failed"), helloTimeoutMs);
173
+ loadTimer = setTimeout(() => end(greeted > 0 ? "navigated" : "failed"), Math.min(helloTimeoutMs, loadGraceMs));
172
174
  };
173
175
  window.addEventListener("message", onWindowMessage);
174
176
  frame.addEventListener("load", onLoad);
@@ -183,7 +185,7 @@ function FrameInstance(props) {
183
185
  clearTimeout(loadTimer);
184
186
  closePort();
185
187
  };
186
- }, [policy, mode, nonce, helloTimeoutMs]);
188
+ }, [policy, mode, nonce, helloTimeoutMs, loadGraceMs]);
187
189
  const { mode: themeMode, palette, density } = theme;
188
190
  useEffect(() => {
189
191
  portRef.current?.postMessage(frameThemeMessage({ mode: themeMode, palette, density }));
@@ -216,17 +218,15 @@ function FrameInstance(props) {
216
218
  ...credentialless
217
219
  }
218
220
  ) : null,
219
- state === "loading" ? /* @__PURE__ */ jsx("div", { className: "crewlet-sandboxed-frame__loading", children: /* @__PURE__ */ jsx(Skeleton, { variant: "box", width: "100%", height: "100%", label: text.loading(title) }) }) : null,
220
- ending ? /* @__PURE__ */ jsx("div", { className: "crewlet-sandboxed-frame__end", children: /* @__PURE__ */ jsx(
221
- Callout,
221
+ state === "loading" ? /* @__PURE__ */ jsx(FrameLoading, { label: text.loading(title) }) : null,
222
+ ending ? /* @__PURE__ */ jsx(
223
+ FrameEnd,
222
224
  {
223
- variant: "danger",
224
- title: text[ending.title],
225
- live: "polite",
225
+ heading: text[ending.title],
226
226
  action: onReload ? /* @__PURE__ */ jsx(Button, { variant: "outline", size: "small", onClick: onReload, children: text.reload }) : void 0,
227
227
  children: text[ending.detail]
228
228
  }
229
- ) }) : null
229
+ ) : null
230
230
  ]
231
231
  }
232
232
  );
@@ -239,5 +239,38 @@ var END_TEXT = {
239
239
  refused: { title: "refused", detail: "refusedDetail" },
240
240
  outdated: { title: "outdated", detail: "outdatedDetail" }
241
241
  };
242
+ function FrameLoading({ label }) {
243
+ return /* @__PURE__ */ jsx("div", { className: "crewlet-sandboxed-frame__loading", children: /* @__PURE__ */ jsx(
244
+ Skeleton,
245
+ {
246
+ variant: "box",
247
+ width: "100%",
248
+ height: "100%",
249
+ marginTop: 0,
250
+ borderRadius: "var(--radius-md)",
251
+ label
252
+ }
253
+ ) });
254
+ }
255
+ function FrameEnd({ heading, action, children }) {
256
+ return /* @__PURE__ */ jsx("div", { className: "crewlet-sandboxed-frame__end", children: /* @__PURE__ */ jsx(Callout, { variant: "danger", title: heading, live: "polite", action, children }) });
257
+ }
258
+ function SandboxedFramePlaceholder({ title, label, className, ...rest }) {
259
+ return /* @__PURE__ */ jsx(
260
+ "div",
261
+ {
262
+ ...rest,
263
+ role: "region",
264
+ "aria-label": title,
265
+ "aria-busy": true,
266
+ "data-state": "loading",
267
+ className: cx("crewlet-sandboxed-frame", className),
268
+ children: /* @__PURE__ */ jsx(FrameLoading, { label: label ?? LABELS.loading(title) })
269
+ }
270
+ );
271
+ }
272
+ function SandboxedFrameNotice({ title, heading, action, children, className, ...rest }) {
273
+ return /* @__PURE__ */ jsx("div", { ...rest, role: "region", "aria-label": title, "data-state": "failed", className: cx("crewlet-sandboxed-frame", className), children: /* @__PURE__ */ jsx(FrameEnd, { heading, action, children }) });
274
+ }
242
275
 
243
- export { FRAME_HELLO_TIMEOUT_MS, SandboxedFrame };
276
+ export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder };
@@ -1,4 +1,4 @@
1
- import { MARKDOWN_CALLOUT_NAMES } from './chunk-SKOYC2CF.js';
1
+ import { MARKDOWN_CALLOUT_NAMES } from './chunk-KK5OYNAF.js';
2
2
 
3
3
  // src/RichEditor/types.ts
4
4
  var RICH_EDITOR_LABELS = {
@@ -1,5 +1,5 @@
1
1
  import { useTreeState, useMeasuredSizes, layoutForest, treeAncestors, useLayoutAnchor, treeExpandable, layoutConnectors, treeItemAction, treeStep, treePosInSet, treeSetSize, treeLevel, placeGroups } from './chunk-MY374UUD.js';
2
- import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-OTN35CI4.js';
2
+ import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-22UEIXZE.js';
3
3
  import { focusables } from './chunk-R25RGPUB.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './TreeCanvas-L2XYONWL.css';
@@ -1,4 +1,4 @@
1
- import { AVATAR_SIZES, Avatar } from './chunk-5OM447RW.js';
1
+ import { AVATAR_SIZES, Avatar } from './chunk-PZKHBB7D.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './Avatar-3C2H2WA4.css';
4
4
  import './AvatarStack-GEJBNV7E.css';
@@ -1,4 +1,4 @@
1
- import { useLayerContainer, viewportBounds, LAYER_GAP, outsideBounds, placePopup, LAYER_REPOSITION_EVENT } from './chunk-HMPFGIWM.js';
1
+ import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
2
2
  import { usePopupLayer } from './chunk-R25RGPUB.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './Tooltip-LKQF7CE4.css';
@@ -100,14 +100,13 @@ function Tooltip({
100
100
  width: rect.width,
101
101
  height: rect.height
102
102
  };
103
- const whole = { x: 0, y: 0, width: host.width, height: host.height };
104
103
  const bounds = {
105
104
  x: LAYER_GAP,
106
105
  y: LAYER_GAP,
107
106
  width: host.width - 2 * LAYER_GAP,
108
107
  height: host.height - 2 * LAYER_GAP
109
108
  };
110
- if (outsideBounds({ ...local, x: rect.x - (inHost ? host.x : 0) }, whole)) {
109
+ if (anchorGone(rect, host, inHost)) {
111
110
  setOpen(false);
112
111
  return;
113
112
  }
@@ -1,5 +1,5 @@
1
1
  import { cx } from './chunk-ODEQTPFM.js';
2
- import './Note-ONSKKTOA.css';
2
+ import './Note-WI5MLZOO.css';
3
3
  import { forwardRef, useId } from 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
@@ -0,0 +1,54 @@
1
+ import { IconButton } from './chunk-4FQT6ZAY.js';
2
+ import { cx } from './chunk-ODEQTPFM.js';
3
+ import './SlideNav-BLFJF6AH.css';
4
+ import { ChevronLeftGlyph, ChevronRightGlyph } from '@crewlethq/icons/glyphs';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var SLIDE_NAV_LABELS = {
8
+ nav: "Slide controls",
9
+ previous: "Previous slide",
10
+ next: "Next slide",
11
+ start: "This is the first slide",
12
+ end: "End of the deck",
13
+ position: (position, total) => `${position} of ${total}`
14
+ };
15
+ function SlideNav({
16
+ position,
17
+ total,
18
+ onPrevious,
19
+ onNext,
20
+ tone = "page",
21
+ children,
22
+ className,
23
+ labels
24
+ }) {
25
+ const text = { ...SLIDE_NAV_LABELS, ...labels };
26
+ return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-slide-nav", `crewlet-slide-nav--${tone}`, className), role: "group", "aria-label": text.nav, children: [
27
+ /* @__PURE__ */ jsx(
28
+ IconButton,
29
+ {
30
+ label: text.previous,
31
+ icon: /* @__PURE__ */ jsx(ChevronLeftGlyph, {}),
32
+ variant: "ghost",
33
+ size: "sm",
34
+ onClick: onPrevious,
35
+ disabledReason: position <= 1 ? text.start : void 0
36
+ }
37
+ ),
38
+ /* @__PURE__ */ jsx("span", { className: "crewlet-slide-nav__position", children: text.position(position, total) }),
39
+ /* @__PURE__ */ jsx(
40
+ IconButton,
41
+ {
42
+ label: text.next,
43
+ icon: /* @__PURE__ */ jsx(ChevronRightGlyph, {}),
44
+ variant: "ghost",
45
+ size: "sm",
46
+ onClick: onNext,
47
+ disabledReason: position >= total ? text.end : void 0
48
+ }
49
+ ),
50
+ children ? /* @__PURE__ */ jsx("span", { className: "crewlet-slide-nav__more", children }) : null
51
+ ] });
52
+ }
53
+
54
+ export { SLIDE_NAV_LABELS, SlideNav };
@@ -1,14 +1,14 @@
1
1
  import { PageHeader } from './chunk-HOXGBLEY.js';
2
- import { DateTimePicker } from './chunk-Y5NQ2LMS.js';
3
- import { DataTable } from './chunk-EBJREOKS.js';
2
+ import { DateTimePicker } from './chunk-BY4N65PM.js';
3
+ import { DataTable } from './chunk-UXXJDIYE.js';
4
4
  import { useListbox, useOptionKeys } from './chunk-F73MC7EZ.js';
5
5
  import { Toolbar } from './chunk-PGRPNDWM.js';
6
- import { Popover } from './chunk-BWRGFKJP.js';
6
+ import { Popover } from './chunk-K3IJQNB7.js';
7
7
  import { Input } from './chunk-6QFAK2WV.js';
8
8
  import { Kbd } from './chunk-SMBKXWML.js';
9
9
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
10
10
  import { Count } from './chunk-BHHIIK3M.js';
11
- import { Menu } from './chunk-2HIOJ4YZ.js';
11
+ import { Menu } from './chunk-3EB2AV3H.js';
12
12
  import { Button } from './chunk-OG6CL3EB.js';
13
13
  import { IconButton } from './chunk-4FQT6ZAY.js';
14
14
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
@@ -1,4 +1,4 @@
1
- import { Tooltip } from './chunk-QWOPX2MN.js';
1
+ import { Tooltip } from './chunk-5FYPE5GL.js';
2
2
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './FactList-G2H73NFR.css';
@@ -1,7 +1,7 @@
1
- import { useLayerContainer } from './chunk-HMPFGIWM.js';
1
+ import { useLayerContainer } from './chunk-OMV5W53A.js';
2
2
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './Toaster-EOOOTSJT.css';
4
+ import './Toaster-C6BQ7L6I.css';
5
5
  import { createContext, useMemo, useState, useRef, useEffect, useContext, useCallback } from 'react';
6
6
  import { createPortal } from 'react-dom';
7
7
  import { XGlyph, CircleAlertGlyph, TriangleAlertGlyph, CircleCheckGlyph, InfoGlyph } from '@crewlethq/icons/glyphs';
@@ -1,5 +1,5 @@
1
1
  import { Combobox } from './chunk-QS4ZGTEU.js';
2
- import { PRINCIPAL_KINDS, PrincipalAvatar } from './chunk-4KP4RC3O.js';
2
+ import { PRINCIPAL_KINDS, PrincipalAvatar } from './chunk-CI3VPIJN.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './PrincipalPicker-7NNZTGUP.css';
5
5
  import { useState, useId, useMemo } from 'react';
@@ -1,4 +1,4 @@
1
- import { Popover } from './chunk-BWRGFKJP.js';
1
+ import { Popover } from './chunk-K3IJQNB7.js';
2
2
  import { today, CalendarGrid, shiftMonth, compareDays } from './chunk-GXQ3B46I.js';
3
3
  import { Button } from './chunk-OG6CL3EB.js';
4
4
  import { IconButton } from './chunk-4FQT6ZAY.js';
@@ -1,4 +1,4 @@
1
- import { MARKDOWN_CALLOUT_TONES, parseMarkdownSpans, markdownInline, markdownCodeText } from './chunk-SKOYC2CF.js';
1
+ import { MARKDOWN_CALLOUT_TONES, parseMarkdownSpans, markdownInline, markdownCodeText } from './chunk-KK5OYNAF.js';
2
2
  import { Schema, Fragment } from 'prosemirror-model';
3
3
 
4
4
  function headingTag(level) {
@@ -1,4 +1,4 @@
1
- import { tabId } from './chunk-HJEVSQN6.js';
1
+ import { tabId } from './chunk-VL6CUNSX.js';
2
2
  import { useRoving, tabStop } from './chunk-RKKO7QHH.js';
3
3
  import { Count } from './chunk-BHHIIK3M.js';
4
4
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
@@ -1,4 +1,4 @@
1
- import { Avatar } from './chunk-5OM447RW.js';
1
+ import { Avatar } from './chunk-PZKHBB7D.js';
2
2
  import { UsersGlyph } from '@crewlethq/icons/glyphs';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
@@ -1,6 +1,6 @@
1
1
  import { FormField } from './chunk-6QFAK2WV.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './Checkbox-5UORUG3F.css';
3
+ import './Checkbox-ALWG3WV2.css';
4
4
  import { forwardRef, useId, useRef, useCallback, useEffect } from 'react';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,8 +1,8 @@
1
- import { Skeleton } from './chunk-W5J7R5EB.js';
1
+ import { Skeleton } from './chunk-TEUQWOWZ.js';
2
2
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
3
3
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
- import './WidgetFrame-LRZIL62O.css';
5
+ import './WidgetFrame-BTFW3CRK.css';
6
6
  import { useId } from 'react';
7
7
  import { ClockGlyph, LockGlyph, CircleAlertGlyph } from '@crewlethq/icons/glyphs';
8
8
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
@@ -22,6 +22,7 @@ function WidgetFrame({
22
22
  onCite,
23
23
  actions,
24
24
  flush = false,
25
+ holdTitle = false,
25
26
  headingLevel = 3,
26
27
  now,
27
28
  labels,
@@ -36,7 +37,7 @@ function WidgetFrame({
36
37
  const citation = /* @__PURE__ */ jsxs(Fragment, { children: [
37
38
  /* @__PURE__ */ jsx(VisuallyHidden, { children: text.cite }),
38
39
  " ",
39
- /* @__PURE__ */ jsx("span", { className: "crewlet-widget-frame__source", children: source.label }),
40
+ /* @__PURE__ */ jsx("span", { className: "crewlet-widget-frame__source", title: source.label, children: source.label }),
40
41
  source.status === "live" ? /* @__PURE__ */ jsxs(Fragment, { children: [
41
42
  " ",
42
43
  /* @__PURE__ */ jsx("span", { className: "crewlet-widget-frame__when", children: text.live })
@@ -64,6 +65,7 @@ function WidgetFrame({
64
65
  "crewlet-widget-frame",
65
66
  `crewlet-widget-frame--${source.status}`,
66
67
  flush && "crewlet-widget-frame--flush",
68
+ holdTitle && "crewlet-widget-frame--hold-title",
67
69
  className
68
70
  ),
69
71
  "aria-labelledby": titleId,
@@ -1,10 +1,10 @@
1
- import { PrincipalAvatar } from './chunk-4KP4RC3O.js';
1
+ import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
2
2
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
3
- import { AvatarStack } from './chunk-UAN5NE7M.js';
4
3
  import { Card } from './chunk-ACA27MZH.js';
4
+ import { AvatarStack } from './chunk-5AQBPHZD.js';
5
5
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
- import './ArtifactCard-EXVAEBV6.css';
7
+ import './ArtifactCard-AS5Z4CVI.css';
8
8
  import { useId } from 'react';
9
9
  import { TableGlyph, LayoutDashboardGlyph, PaletteGlyph, PresentationGlyph, FileTextGlyph, FileCodeGlyph, PinGlyph } from '@crewlethq/icons/glyphs';
10
10
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -22,13 +22,17 @@ function ArtifactKindGlyph({ kind, size = "md" }) {
22
22
  const Drawn = KIND_GLYPHS[kind];
23
23
  return /* @__PURE__ */ jsx(Drawn, { size });
24
24
  }
25
+ function ArtifactPreviewGlyph({ kind }) {
26
+ return /* @__PURE__ */ jsx("span", { className: "crewlet-artifact-card__glyph", children: /* @__PURE__ */ jsx(ArtifactKindGlyph, { kind, size: 32 }) });
27
+ }
25
28
  var LABELS = {
26
- kinds: { html: "Page", doc: "Doc", slides: "Slides", design: "Design", dashboard: "Dashboard", sheet: "Sheet" },
29
+ kinds: { html: "HTML", doc: "Doc", slides: "Slides", design: "Design", dashboard: "Dashboard", sheet: "Sheet" },
27
30
  pinned: "Pinned",
28
31
  version: (version) => `v${version}`,
29
32
  changes: (count) => count === 1 ? "1 change since you looked" : `${count} changes since you looked`,
30
33
  present: (count) => count === 1 ? "1 here now" : `${count} here now`,
31
- updated: "Updated"
34
+ updated: "Updated",
35
+ by: (name) => `by ${name}`
32
36
  };
33
37
  function ArtifactCard({
34
38
  title,
@@ -52,6 +56,7 @@ function ArtifactCard({
52
56
  const titleId = useId();
53
57
  const factsId = useId();
54
58
  const present = presence && presence.length > 0 ? presence : null;
59
+ const changedBy = updatedBy && updatedBy !== owner?.name ? updatedBy : void 0;
55
60
  return /* @__PURE__ */ jsxs(
56
61
  Card,
57
62
  {
@@ -62,10 +67,10 @@ function ArtifactCard({
62
67
  "aria-labelledby": titleId,
63
68
  "aria-describedby": factsId,
64
69
  children: [
65
- size === "card" ? /* @__PURE__ */ jsx("span", { className: "crewlet-artifact-card__preview", "aria-hidden": true, children: preview ?? /* @__PURE__ */ jsx("span", { className: "crewlet-artifact-card__glyph", children: /* @__PURE__ */ jsx(ArtifactKindGlyph, { kind, size: 32 }) }) }) : /* @__PURE__ */ jsx("span", { className: "crewlet-artifact-card__glyph crewlet-artifact-card__glyph--compact", "aria-hidden": true, children: /* @__PURE__ */ jsx(ArtifactKindGlyph, { kind, size: "lg" }) }),
70
+ size === "card" ? /* @__PURE__ */ jsx("span", { className: "crewlet-artifact-card__preview", "aria-hidden": true, children: preview ?? /* @__PURE__ */ jsx(ArtifactPreviewGlyph, { kind }) }) : /* @__PURE__ */ jsx("span", { className: "crewlet-artifact-card__glyph crewlet-artifact-card__glyph--compact", "aria-hidden": true, children: /* @__PURE__ */ jsx(ArtifactKindGlyph, { kind, size: "lg" }) }),
66
71
  /* @__PURE__ */ jsxs("span", { className: "crewlet-artifact-card__body", children: [
67
72
  /* @__PURE__ */ jsxs("span", { className: "crewlet-artifact-card__title-row", children: [
68
- /* @__PURE__ */ jsx("span", { id: titleId, className: "crewlet-artifact-card__title", children: title }),
73
+ /* @__PURE__ */ jsx("span", { id: titleId, className: "crewlet-artifact-card__title", title, children: title }),
69
74
  pinned ? /* @__PURE__ */ jsx("span", { className: "crewlet-artifact-card__pin", title: text.pinned, "aria-hidden": true, children: /* @__PURE__ */ jsx(PinGlyph, { size: "xs" }) }) : null
70
75
  ] }),
71
76
  /* @__PURE__ */ jsxs("span", { id: factsId, className: "crewlet-artifact-card__facts", children: [
@@ -81,8 +86,9 @@ function ArtifactCard({
81
86
  /* @__PURE__ */ jsx("span", { children: owner.name })
82
87
  ] }) : null,
83
88
  /* @__PURE__ */ jsxs("span", { children: [
84
- updatedBy ? `${updatedBy} ` : `${text.updated} `,
85
- /* @__PURE__ */ jsx(RelativeTime, { value: updatedAt, now })
89
+ `${text.updated} `,
90
+ /* @__PURE__ */ jsx(RelativeTime, { value: updatedAt, now }),
91
+ changedBy ? ` ${text.by(changedBy)}` : null
86
92
  ] })
87
93
  ] }),
88
94
  present || changes !== void 0 && changes > 0 ? /* @__PURE__ */ jsxs("span", { className: "crewlet-artifact-card__line", children: [
@@ -99,4 +105,4 @@ function ArtifactCard({
99
105
  );
100
106
  }
101
107
 
102
- export { ARTIFACT_KINDS, ArtifactCard, ArtifactKindGlyph };
108
+ export { ARTIFACT_KINDS, ArtifactCard, ArtifactKindGlyph, ArtifactPreviewGlyph };
@@ -1,8 +1,8 @@
1
- import { HuePicker } from './chunk-LIXSV5YI.js';
2
- import { Popover } from './chunk-BWRGFKJP.js';
1
+ import { HuePicker } from './chunk-GPHWCK7M.js';
2
+ import { Popover } from './chunk-K3IJQNB7.js';
3
3
  import { NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
4
- import { CharacterPicker } from './chunk-HVIX5ECM.js';
5
- import { Avatar } from './chunk-5OM447RW.js';
4
+ import { CharacterPicker } from './chunk-YEVG2X5R.js';
5
+ import { Avatar } from './chunk-PZKHBB7D.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './AvatarPicker-PREY36MG.css';
8
8
  import { CREWLET_CHARACTER_GEOMETRY, CREWLET_CHARACTERS } from '@crewlethq/icons/characters';
@@ -1,4 +1,4 @@
1
- import { avatarCorner, Avatar } from './chunk-5OM447RW.js';
1
+ import { avatarCorner, Avatar } from './chunk-PZKHBB7D.js';
2
2
  import './ImageUpload-NVGMN7DP.css';
3
3
  import { useRef } from 'react';
4
4
  import { CameraGlyph, XGlyph } from '@crewlethq/icons/glyphs';