@crewlethq/ui 0.37.0 → 0.38.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 (210) hide show
  1. package/README.md +58 -0
  2. package/dist/Accordion/index.js +1 -1
  3. package/dist/AgentHandoffPanel/index.js +5 -5
  4. package/dist/AppShell/index.d.ts +1 -0
  5. package/dist/AppShell/index.js +5 -3
  6. package/dist/{AppShell-JTSEOA57.css → AppShell-NDU4XMGF.css} +51 -6
  7. package/dist/ArrangeList/index.js +4 -4
  8. package/dist/ArtifactBar/index.js +9 -7
  9. package/dist/ArtifactCard/index.js +2 -2
  10. package/dist/ArtifactCover/index.js +3 -3
  11. package/dist/ArtifactMakeRow/ArtifactMakeRow.d.ts +3 -1
  12. package/dist/ArtifactMakeRow/index.d.ts +1 -0
  13. package/dist/ArtifactMakeRow/index.js +2 -1
  14. package/dist/{ArtifactMakeRow-XBA2MPSY.css → ArtifactMakeRow-6UX2LTF7.css} +49 -6
  15. package/dist/AuthLayout/index.js +2 -2
  16. package/dist/AvatarPicker/index.js +8 -6
  17. package/dist/Canvas/index.js +4 -3
  18. package/dist/CanvasBoard/index.js +7 -6
  19. package/dist/CanvasToolbar/index.js +6 -5
  20. package/dist/Card/index.js +1 -1
  21. package/dist/{Card-QOVASQNU.css → Card-G2ZGT5Z6.css} +43 -0
  22. package/dist/ChangeMark/index.js +4 -3
  23. package/dist/Checkbox/index.js +3 -3
  24. package/dist/ChoiceList/index.d.ts +1 -0
  25. package/dist/ChoiceList/index.js +2 -1
  26. package/dist/{ChoiceList-EA2W6MOS.css → ChoiceList-KFYFAECP.css} +26 -4
  27. package/dist/Combobox/index.d.ts +1 -0
  28. package/dist/Combobox/index.js +6 -5
  29. package/dist/{Combobox-4FUVYIE7.css → Combobox-YDONYDTM.css} +2 -1
  30. package/dist/CommandPalette/index.d.ts +1 -0
  31. package/dist/CommandPalette/index.js +7 -6
  32. package/dist/{CommandPalette-7CFGVBND.css → CommandPalette-TOZYLWLE.css} +5 -1
  33. package/dist/CommentThread/index.js +5 -5
  34. package/dist/Composer/index.js +3 -3
  35. package/dist/{Composer-PXITWNEK.css → Composer-TXULCPPV.css} +1 -1
  36. package/dist/ConfirmField/index.js +3 -3
  37. package/dist/DataTable/index.js +7 -7
  38. package/dist/DataView/index.js +12 -12
  39. package/dist/DatasetSource/index.d.ts +1 -0
  40. package/dist/DatasetSource/index.js +3 -2
  41. package/dist/{DatasetSource-SMGX4PS5.css → DatasetSource-FFKTD3ZU.css} +16 -1
  42. package/dist/DateTimePicker/index.js +4 -4
  43. package/dist/{DateTimePicker-2IVTKFV2.css → DateTimePicker-3A7JIIVL.css} +3 -3
  44. package/dist/DescriptionList/DescriptionList.d.ts +12 -1
  45. package/dist/DescriptionList/index.js +1 -1
  46. package/dist/{DescriptionList-IXMRCSMK.css → DescriptionList-DEZISDLQ.css} +8 -1
  47. package/dist/Disclosure/index.js +1 -1
  48. package/dist/{Disclosure-VKBJJIZ7.css → Disclosure-P4FH3C35.css} +28 -2
  49. package/dist/DocTabsEditor/index.js +6 -6
  50. package/dist/Document/index.js +2 -2
  51. package/dist/{Document-YFWTWXJP.css → Document-TZ2NBLOR.css} +2 -2
  52. package/dist/{Editor-HORWMUM3.js → Editor-QV4JP242.js} +6 -6
  53. package/dist/FactList/index.js +4 -3
  54. package/dist/FollowBanner/index.js +3 -2
  55. package/dist/HitArea/hitArea.d.ts +7 -0
  56. package/dist/HitArea/index.d.ts +2 -0
  57. package/dist/HitArea/index.js +2 -0
  58. package/dist/HitArea-QUOS6ZDJ.css +35 -0
  59. package/dist/HuePicker/index.js +4 -3
  60. package/dist/Input/index.js +2 -2
  61. package/dist/{Input-ABGOFENS.css → Input-OQZBCRX5.css} +9 -4
  62. package/dist/Layer/index.js +2 -1
  63. package/dist/LinkInterstitial/index.js +4 -3
  64. package/dist/ListInput/index.js +5 -5
  65. package/dist/Listbox/index.js +3 -2
  66. package/dist/{Listbox-6WJNJQVQ.css → Listbox-NQV6E3FS.css} +3 -0
  67. package/dist/LivePreview/index.js +1 -1
  68. package/dist/{LivePreview-BROGKR4N.css → LivePreview-KQEDMQCY.css} +13 -0
  69. package/dist/MarkdownEditor/index.js +8 -6
  70. package/dist/Menu/index.js +3 -2
  71. package/dist/MergeConflicts/index.js +5 -4
  72. package/dist/Modal/index.js +3 -2
  73. package/dist/OrgTable/index.js +4 -3
  74. package/dist/Popover/index.js +3 -2
  75. package/dist/PresenterView/index.js +4 -3
  76. package/dist/PricingCard/index.js +2 -2
  77. package/dist/PrincipalPicker/index.js +7 -6
  78. package/dist/RichEditor/index.js +1 -1
  79. package/dist/SegmentedControl/index.d.ts +1 -0
  80. package/dist/SegmentedControl/index.js +4 -3
  81. package/dist/{SegmentedControl-FLI45IOW.css → SegmentedControl-B7XCUOML.css} +9 -2
  82. package/dist/Select/index.d.ts +1 -0
  83. package/dist/Select/index.js +5 -4
  84. package/dist/{Select-W3CHTZXP.css → Select-F526HLNR.css} +5 -4
  85. package/dist/ShareDialog/index.js +7 -6
  86. package/dist/SheetColumnEditor/index.js +12 -11
  87. package/dist/SheetGrid/index.js +9 -8
  88. package/dist/{SheetGrid-YRDXTIIZ.css → SheetGrid-XK7T7M34.css} +9 -4
  89. package/dist/Shortcut/index.js +3 -2
  90. package/dist/SidebarNav/index.d.ts +1 -0
  91. package/dist/SidebarNav/index.js +2 -1
  92. package/dist/{SidebarNav-KF66MLOM.css → SidebarNav-7SGUZYKK.css} +21 -2
  93. package/dist/SlideCompare/index.js +4 -3
  94. package/dist/SlideFilmstrip/index.js +6 -5
  95. package/dist/SlideGrid/index.js +4 -3
  96. package/dist/SlideStage/index.js +3 -2
  97. package/dist/SourceEditor/index.js +2 -2
  98. package/dist/{SourceEditor-QAYE2JS6.css → SourceEditor-OKPWPFXK.css} +1 -1
  99. package/dist/StatGroup/StatGroup.d.ts +11 -7
  100. package/dist/StatGroup/index.js +1 -1
  101. package/dist/StatGroup-DOFHX5QJ.css +168 -0
  102. package/dist/Switcher/index.js +8 -8
  103. package/dist/TableCells/index.js +2 -2
  104. package/dist/Tabs/index.d.ts +1 -0
  105. package/dist/Tabs/index.js +2 -1
  106. package/dist/{Tabs-MMZXV5EF.css → Tabs-WIF7457H.css} +20 -3
  107. package/dist/Tag/index.js +1 -1
  108. package/dist/{Tag-SRGTK5KI.css → Tag-2DQOVE6W.css} +15 -5
  109. package/dist/TagsInput/index.js +6 -6
  110. package/dist/{TagsInput-7EGBBXHS.css → TagsInput-CLFHP6I2.css} +1 -1
  111. package/dist/ThemeGallery/index.js +4 -3
  112. package/dist/ThemeSwitcher/index.js +5 -4
  113. package/dist/TimeWindowPicker/index.js +8 -7
  114. package/dist/{TimeWindowPicker-DEFDV77Z.css → TimeWindowPicker-I3HXC74I.css} +3 -3
  115. package/dist/Toaster/index.js +2 -1
  116. package/dist/Toolbar/index.js +3 -2
  117. package/dist/Tooltip/index.js +3 -2
  118. package/dist/TreeCanvas/index.js +5 -4
  119. package/dist/TreeGrid/index.js +3 -2
  120. package/dist/VersionCompare/index.js +5 -4
  121. package/dist/{chunk-CCAXYHQS.js → chunk-2QZ2VPHR.js} +3 -1
  122. package/dist/chunk-2YTOOH3A.js +4 -0
  123. package/dist/{chunk-QWNVSR6G.js → chunk-3KYVFG47.js} +1 -1
  124. package/dist/{chunk-H5NOLRGH.js → chunk-3V5T5K5H.js} +1 -1
  125. package/dist/{chunk-BIQDJOJZ.js → chunk-3ZUINC7C.js} +2 -2
  126. package/dist/{chunk-K4VP6ZKE.js → chunk-4BJK7FE5.js} +1 -1
  127. package/dist/chunk-4ISUIS6F.js +3 -0
  128. package/dist/{chunk-FG4O64DV.js → chunk-4L2BWSHR.js} +5 -5
  129. package/dist/{chunk-PLTCDSTU.js → chunk-4LRAJXHL.js} +1 -1
  130. package/dist/{chunk-4ZJLOKSS.js → chunk-5BUOMF6N.js} +2 -2
  131. package/dist/{chunk-47JQAGRV.js → chunk-66X5WDKE.js} +1 -1
  132. package/dist/{chunk-66NGUD5S.js → chunk-6NNY5WBF.js} +8 -7
  133. package/dist/{chunk-5RT5O4JR.js → chunk-7CGPPAYR.js} +1 -1
  134. package/dist/{chunk-F73MC7EZ.js → chunk-7KHM2FZH.js} +2 -2
  135. package/dist/{chunk-VL6CUNSX.js → chunk-7SDUKCNW.js} +4 -1
  136. package/dist/{chunk-JML75PGJ.js → chunk-A23KDROH.js} +3 -3
  137. package/dist/{chunk-PJIPUEJ3.js → chunk-AXS6MBNH.js} +1 -1
  138. package/dist/{chunk-2FPENTCF.js → chunk-AYHIF6DH.js} +1 -1
  139. package/dist/{chunk-J6ON5SYE.js → chunk-B5J23C73.js} +1 -1
  140. package/dist/{chunk-7VAUGG6B.js → chunk-B5UHX5UC.js} +2 -2
  141. package/dist/{chunk-AOLCZDZ6.js → chunk-BH52LIY6.js} +5 -5
  142. package/dist/{chunk-WX2NIG4G.js → chunk-BJI3RFXG.js} +1 -1
  143. package/dist/{chunk-JXRI5YD2.js → chunk-BT5H2THK.js} +2 -1
  144. package/dist/{chunk-FHHYXZSP.js → chunk-C7OKDYBH.js} +2 -2
  145. package/dist/{chunk-JBUMD6DS.js → chunk-CFGGE3HO.js} +1 -1
  146. package/dist/{chunk-WYKWXRJ4.js → chunk-CQFQGAZI.js} +1 -1
  147. package/dist/{chunk-GMLAKNFY.js → chunk-D2OL3ZSS.js} +1 -1
  148. package/dist/{chunk-D7GNNID2.js → chunk-D3EJSLCL.js} +2 -2
  149. package/dist/{chunk-BUVCV3WI.js → chunk-D6FEHY5G.js} +3 -2
  150. package/dist/{chunk-4BYHAOHH.js → chunk-DAERKOOG.js} +3 -2
  151. package/dist/{chunk-PGZ2R3ON.js → chunk-DYB66CNM.js} +23 -7
  152. package/dist/{chunk-PPFX6GRK.js → chunk-EAEJ7CDM.js} +6 -3
  153. package/dist/{chunk-WZGYIVYH.js → chunk-EAQLI2SO.js} +4 -2
  154. package/dist/{chunk-GYBDPCRC.js → chunk-ECGGQX2H.js} +2 -2
  155. package/dist/{chunk-RH2NCQBZ.js → chunk-ETVEGR2Y.js} +2 -2
  156. package/dist/{chunk-SUXP4OBT.js → chunk-F4LPQA4E.js} +1 -1
  157. package/dist/{chunk-KYZMN6I6.js → chunk-FBW3Q2OY.js} +2 -2
  158. package/dist/{chunk-JQLS3MZB.js → chunk-FWBKMPNR.js} +1 -1
  159. package/dist/{chunk-OOWPSBIS.js → chunk-GMW4ZHST.js} +3 -3
  160. package/dist/{chunk-R25RGPUB.js → chunk-H5XTJ7GJ.js} +2 -3
  161. package/dist/{chunk-6ZJ3N7QI.js → chunk-I33UIUZD.js} +1 -1
  162. package/dist/{chunk-GRYZ5EP3.js → chunk-IPWU6ERC.js} +14 -3
  163. package/dist/{chunk-W3HYWD63.js → chunk-JZPK4IXR.js} +16 -9
  164. package/dist/{chunk-K3IJQNB7.js → chunk-KHJIEPZV.js} +3 -2
  165. package/dist/{chunk-GFV4LJHH.js → chunk-KYIAFNU7.js} +1 -1
  166. package/dist/{chunk-F2XSYBKH.js → chunk-MFS6F2P7.js} +4 -1
  167. package/dist/chunk-MICRGE3J.js +1 -0
  168. package/dist/{chunk-PGRPNDWM.js → chunk-NR4CPM4T.js} +1 -1
  169. package/dist/{chunk-5WDXPHEW.js → chunk-NRBAXRWE.js} +1 -1
  170. package/dist/{chunk-YSGLEHND.js → chunk-NUZHC6MM.js} +14 -2
  171. package/dist/{chunk-WGD2HX2A.js → chunk-OED6LUWE.js} +1 -1
  172. package/dist/{chunk-MICH6QSJ.js → chunk-OGXHZHRX.js} +1 -1
  173. package/dist/{chunk-OHA6WSAG.js → chunk-OTCXRJ7D.js} +1 -1
  174. package/dist/{chunk-N5SKHIAP.js → chunk-PAQXOP2M.js} +8 -6
  175. package/dist/{chunk-KJW2AS57.js → chunk-PEUGPAKH.js} +1 -1
  176. package/dist/{chunk-IPAU6FLH.js → chunk-PPHTIKZO.js} +1 -1
  177. package/dist/{chunk-44WJLPQS.js → chunk-PT6WKXKW.js} +2 -2
  178. package/dist/{chunk-P6WFZDKS.js → chunk-PWG3VHRQ.js} +2 -2
  179. package/dist/{chunk-EAKC24BW.js → chunk-R2IBCEU6.js} +16 -4
  180. package/dist/{chunk-HOIZ6MIS.js → chunk-RLJXVFEH.js} +1 -1
  181. package/dist/{chunk-NQGPD6NX.js → chunk-RMEBFYL7.js} +1 -1
  182. package/dist/{chunk-APDKUGSH.js → chunk-S27UBCVX.js} +5 -4
  183. package/dist/{chunk-XEGZHHRH.js → chunk-SVGARBDY.js} +1 -1
  184. package/dist/{chunk-UWGUKMBK.js → chunk-SYBYFQTY.js} +2 -2
  185. package/dist/{chunk-IUYUS2SO.js → chunk-TYONQSOK.js} +2 -2
  186. package/dist/{chunk-DQSXWQMJ.js → chunk-U3ILLCR2.js} +1 -1
  187. package/dist/{chunk-L4WZSVMT.js → chunk-UB6MLXUL.js} +3 -3
  188. package/dist/{chunk-EARDAJQY.js → chunk-UWRBD2YO.js} +2 -2
  189. package/dist/{chunk-F23N4MVU.js → chunk-UXYEOWG5.js} +1 -1
  190. package/dist/{chunk-UCCC7YVZ.js → chunk-W7PAIVAP.js} +4 -2
  191. package/dist/{chunk-T5RQGI6O.js → chunk-X3UYTAOG.js} +1 -1
  192. package/dist/{chunk-EOQFPZEE.js → chunk-XBURIXHO.js} +2 -2
  193. package/dist/{chunk-VKKUGZ3G.js → chunk-XQZ6EWOE.js} +8 -5
  194. package/dist/{chunk-TVRBQMIX.js → chunk-YPMGP2X4.js} +6 -6
  195. package/dist/{chunk-GS7ZTHPF.js → chunk-YQG4PZGC.js} +7 -7
  196. package/dist/{chunk-5QXRI35B.js → chunk-ZK3VYY7L.js} +1 -1
  197. package/dist/{chunk-2QEDJSJC.js → chunk-ZMDYQ2HH.js} +1 -1
  198. package/dist/{chunk-27GD7LVR.js → chunk-ZMWXE4GT.js} +1 -1
  199. package/dist/{chunk-RIAZM6L3.js → chunk-ZNOXQACX.js} +1 -1
  200. package/dist/generated/index.d.ts +1 -0
  201. package/dist/generated/index.js +106 -104
  202. package/dist/index.js +106 -104
  203. package/dist/styles.css +508 -102
  204. package/dist/utils/focusModality.d.ts +17 -1
  205. package/dist/utils/index.d.ts +1 -1
  206. package/dist/utils/index.js +1 -1
  207. package/package.json +3 -3
  208. package/dist/StatGroup-PADTJCUQ.css +0 -86
  209. package/dist/chunk-WKEPORNM.js +0 -2
  210. /package/dist/{chunk-PNNYVN52.js → chunk-4QQ3MND5.js} +0 -0
@@ -1,11 +1,11 @@
1
- import { Select } from './chunk-VKKUGZ3G.js';
1
+ import { Select } from './chunk-XQZ6EWOE.js';
2
2
  import { SHEET_LABELS, SHEET_COLUMN_TYPES, optionHue, retypeColumn } from './chunk-LFSIKGRQ.js';
3
- import { HueSwatch } from './chunk-SUXP4OBT.js';
3
+ import { HueSwatch } from './chunk-F4LPQA4E.js';
4
4
  import { NODE_HUES, NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
5
- import { Checkbox } from './chunk-PJIPUEJ3.js';
6
- import { FormField, Input } from './chunk-IUYUS2SO.js';
5
+ import { Checkbox } from './chunk-AXS6MBNH.js';
7
6
  import { Kbd } from './chunk-SMBKXWML.js';
8
- import { Menu } from './chunk-BUVCV3WI.js';
7
+ import { FormField, Input } from './chunk-TYONQSOK.js';
8
+ import { Menu } from './chunk-D6FEHY5G.js';
9
9
  import { Button } from './chunk-OG6CL3EB.js';
10
10
  import { IconButton } from './chunk-4FQT6ZAY.js';
11
11
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
@@ -1,5 +1,5 @@
1
1
  import { diffLines, diffStat, collapseDiff, DiffSummary, DiffView } from './chunk-BVWSLXTY.js';
2
- import { SegmentedControl } from './chunk-CCAXYHQS.js';
2
+ import { SegmentedControl } from './chunk-2QZ2VPHR.js';
3
3
  import { EmptyState } from './chunk-RA2ULG6H.js';
4
4
  import { useHeadingLevel, headingTag, nextHeadingLevel, HeadingLevelProvider } from './chunk-PQADV6P6.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,6 +1,6 @@
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-4BYHAOHH.js';
3
- import { focusables } from './chunk-R25RGPUB.js';
2
+ import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-DAERKOOG.js';
3
+ import { focusables } from './chunk-H5XTJ7GJ.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './TreeCanvas-L2XYONWL.css';
6
6
  import { useState, useRef, useMemo, useLayoutEffect, useCallback, useImperativeHandle, useId, useSyncExternalStore } from 'react';
@@ -1,5 +1,5 @@
1
1
  import { changeText, sheetLabels } from './chunk-LFSIKGRQ.js';
2
- import { Tooltip } from './chunk-6ZJ3N7QI.js';
2
+ import { Tooltip } from './chunk-I33UIUZD.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './ChangeMark-3VMTW7MT.css';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -1,12 +1,13 @@
1
- import { Modal } from './chunk-XEGZHHRH.js';
2
- import { useListbox, useOptionKeys } from './chunk-F73MC7EZ.js';
1
+ import { Modal } from './chunk-SVGARBDY.js';
2
+ import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
3
+ import { Popover } from './chunk-KHJIEPZV.js';
3
4
  import { KeyChip, highlightMatch } from './chunk-FYTIJM2T.js';
4
- import { Popover } from './chunk-K3IJQNB7.js';
5
5
  import { Skeleton } from './chunk-TEUQWOWZ.js';
6
- import { Input } from './chunk-IUYUS2SO.js';
7
- import { useMediaMatch } from './chunk-RTPQDNW3.js';
8
- import { focusables, isComposing } from './chunk-R25RGPUB.js';
6
+ import { Input } from './chunk-TYONQSOK.js';
9
7
  import { announce } from './chunk-RSAQOKH3.js';
8
+ import { useMediaMatch } from './chunk-RTPQDNW3.js';
9
+ import { focusables, isComposing } from './chunk-H5XTJ7GJ.js';
10
+ import { returnFocus } from './chunk-NUZHC6MM.js';
10
11
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
11
12
  import { cx } from './chunk-ODEQTPFM.js';
12
13
  import './Switcher-K3EPA2RB.css';
@@ -40,7 +41,7 @@ function Switcher({ label, open, onOpenChange, trigger, className, ...panel }) {
40
41
  }, []);
41
42
  function done() {
42
43
  close();
43
- if (place === "anchored") document.getElementById(triggerId)?.focus();
44
+ if (place === "anchored") returnFocus(document.getElementById(triggerId));
44
45
  }
45
46
  function leave(back) {
46
47
  const button = document.getElementById(triggerId);
@@ -1,4 +1,4 @@
1
- import { SlideStage } from './chunk-NQGPD6NX.js';
1
+ import { SlideStage } from './chunk-RMEBFYL7.js';
2
2
  import { Button } from './chunk-OG6CL3EB.js';
3
3
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
- import { usePopupLayer, isComposing } from './chunk-R25RGPUB.js';
2
- import './Listbox-6WJNJQVQ.css';
1
+ import { usePopupLayer, isComposing } from './chunk-H5XTJ7GJ.js';
2
+ import './Listbox-NQV6E3FS.css';
3
3
  import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
4
4
 
5
5
  function useListbox({
@@ -1,8 +1,10 @@
1
1
  import { useRoving, tabStop } from './chunk-RKKO7QHH.js';
2
2
  import { Count } from './chunk-BHHIIK3M.js';
3
+ import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
3
4
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
4
5
  import { cx } from './chunk-ODEQTPFM.js';
5
- import './Tabs-MMZXV5EF.css';
6
+ import './HitArea-QUOS6ZDJ.css';
7
+ import './Tabs-WIF7457H.css';
6
8
  import React, { useRef, useImperativeHandle, useLayoutEffect } from 'react';
7
9
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
8
10
 
@@ -75,6 +77,7 @@ function Tabs({
75
77
  const isActive = value !== void 0 && value === item.value;
76
78
  const tabClassName = cx(
77
79
  "crewlet-tabs__tab",
80
+ HIT_AREA_CLASS,
78
81
  isActive && "is-active",
79
82
  item.disabled && "is-disabled"
80
83
  );
@@ -1,9 +1,9 @@
1
1
  import { useClipboard } from './chunk-STJ7QBC3.js';
2
- import { Modal } from './chunk-XEGZHHRH.js';
3
- import { Checkbox } from './chunk-PJIPUEJ3.js';
2
+ import { Modal } from './chunk-SVGARBDY.js';
3
+ import { Checkbox } from './chunk-AXS6MBNH.js';
4
4
  import { EmptyValue } from './chunk-EUCC37WY.js';
5
5
  import { useCardHeaderSlot } from './chunk-AV2DXAEL.js';
6
- import { Menu } from './chunk-BUVCV3WI.js';
6
+ import { Menu } from './chunk-D6FEHY5G.js';
7
7
  import { Button } from './chunk-OG6CL3EB.js';
8
8
  import { IconButton } from './chunk-4FQT6ZAY.js';
9
9
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
@@ -1,4 +1,4 @@
1
- import { FormField } from './chunk-IUYUS2SO.js';
1
+ import { FormField } from './chunk-TYONQSOK.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './Checkbox-ALWG3WV2.css';
4
4
  import { forwardRef, useId, useRef, useCallback, useEffect } from 'react';
@@ -1,4 +1,4 @@
1
- import { isComposing, isModalLayerOpen } from './chunk-R25RGPUB.js';
1
+ import { isComposing, isModalLayerOpen } from './chunk-H5XTJ7GJ.js';
2
2
  import { useRef, useEffect } from 'react';
3
3
 
4
4
  var TYPING_ROLES = /* @__PURE__ */ new Set(["combobox", "listbox", "textbox", "searchbox", "spinbutton"]);
@@ -1,4 +1,4 @@
1
- import { SegmentedControl } from './chunk-CCAXYHQS.js';
1
+ import { SegmentedControl } from './chunk-2QZ2VPHR.js';
2
2
  import { Button } from './chunk-OG6CL3EB.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './MergeConflicts-O44ESH4T.css';
@@ -1,5 +1,5 @@
1
- import { Toolbar } from './chunk-PGRPNDWM.js';
2
- import { ShortcutTip } from './chunk-4BYHAOHH.js';
1
+ import { Toolbar } from './chunk-NR4CPM4T.js';
2
+ import { ShortcutTip } from './chunk-DAERKOOG.js';
3
3
  import { IconButton } from './chunk-4FQT6ZAY.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './CanvasToolbar-EM5EVZED.css';
@@ -1,11 +1,11 @@
1
- import { Tag } from './chunk-GFV4LJHH.js';
2
- import { useListbox } from './chunk-F73MC7EZ.js';
3
- import { useFocusModality } from './chunk-YSGLEHND.js';
4
- import { isComposing } from './chunk-R25RGPUB.js';
1
+ import { Tag } from './chunk-KYIAFNU7.js';
2
+ import { useListbox } from './chunk-7KHM2FZH.js';
5
3
  import { announce } from './chunk-RSAQOKH3.js';
4
+ import { isComposing } from './chunk-H5XTJ7GJ.js';
6
5
  import { IconButton } from './chunk-4FQT6ZAY.js';
6
+ import { useFocusModality } from './chunk-NUZHC6MM.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
8
- import './TagsInput-7EGBBXHS.css';
8
+ import './TagsInput-CLFHP6I2.css';
9
9
  import { forwardRef, useState, useRef, useId, useImperativeHandle, useEffect, useMemo, useLayoutEffect } from 'react';
10
10
  import { CheckGlyph, ChevronLeftGlyph, ChevronRightGlyph } from '@crewlethq/icons/glyphs';
11
11
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { BrandLockup } from './chunk-7KBNFFM3.js';
2
- import { Card } from './chunk-5QXRI35B.js';
2
+ import { Card } from './chunk-ZK3VYY7L.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './AuthLayout-ODHBUPHQ.css';
5
5
  import { useId } from 'react';
@@ -1,5 +1,5 @@
1
1
  import { cx } from './chunk-ODEQTPFM.js';
2
- import './StatGroup-PADTJCUQ.css';
2
+ import './StatGroup-DOFHX5QJ.css';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  function StatGroup({ columns = 4, flush = false, className, children, ...rest }) {
@@ -8,6 +8,7 @@ function StatGroup({ columns = 4, flush = false, className, children, ...rest })
8
8
  {
9
9
  ...rest,
10
10
  className: cx("crewlet-stat-group", flush && "crewlet-stat-group--flush", className),
11
+ "data-columns": columns,
11
12
  style: { "--crewlet-stat-group-cols": columns, ...rest.style },
12
13
  children
13
14
  }
@@ -1,6 +1,6 @@
1
1
  import { Note } from './chunk-5SZGKSGL.js';
2
- import { CanvasToolbar, toolForKey } from './chunk-7VAUGG6B.js';
3
- import { IDENTITY_VIEW, Canvas } from './chunk-4BYHAOHH.js';
2
+ import { CanvasToolbar, toolForKey } from './chunk-B5UHX5UC.js';
3
+ import { IDENTITY_VIEW, Canvas } from './chunk-DAERKOOG.js';
4
4
  import { IconButton } from './chunk-4FQT6ZAY.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './CanvasBoard-TS4P356F.css';
@@ -1,4 +1,4 @@
1
- import { TreeGrid } from './chunk-QWNVSR6G.js';
1
+ import { TreeGrid } from './chunk-3KYVFG47.js';
2
2
  import { createTreeModel, treeParent } from './chunk-MY374UUD.js';
3
3
  import { OrgLabel } from './chunk-ONQKKHON.js';
4
4
  import { AddPill } from './chunk-TROLVEZY.js';
@@ -1,5 +1,5 @@
1
1
  import { cx } from './chunk-ODEQTPFM.js';
2
- import './LivePreview-BROGKR4N.css';
2
+ import './LivePreview-KQEDMQCY.css';
3
3
  import { createContext, useMemo, useContext, useRef, useState, useCallback, useEffect, useLayoutEffect } from 'react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
 
@@ -1,4 +1,4 @@
1
- import { Combobox } from './chunk-PPFX6GRK.js';
1
+ import { Combobox } from './chunk-EAEJ7CDM.js';
2
2
  import { PRINCIPAL_KINDS, PrincipalAvatar } from './chunk-CI3VPIJN.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './PrincipalPicker-7NNZTGUP.css';
@@ -1,7 +1,7 @@
1
- import { useFocusModality } from './chunk-YSGLEHND.js';
1
+ import { useFocusModality } from './chunk-NUZHC6MM.js';
2
2
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './SourceEditor-QAYE2JS6.css';
4
+ import './SourceEditor-OKPWPFXK.css';
5
5
  import { forwardRef, useRef, useId, useState, useImperativeHandle, useLayoutEffect } from 'react';
6
6
  import { jsxs, jsx } from 'react/jsx-runtime';
7
7
 
@@ -1,7 +1,8 @@
1
1
  import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
2
- import { usePopupLayer } from './chunk-R25RGPUB.js';
2
+ import { usePopupLayer } from './chunk-H5XTJ7GJ.js';
3
3
  import { Button } from './chunk-OG6CL3EB.js';
4
4
  import { IconButton } from './chunk-4FQT6ZAY.js';
5
+ import { returnFocus } from './chunk-NUZHC6MM.js';
5
6
  import { cx } from './chunk-ODEQTPFM.js';
6
7
  import './Menu-KEKAD3BZ.css';
7
8
  import { useId, useState, useRef, useCallback, useLayoutEffect, useEffect } from 'react';
@@ -62,7 +63,7 @@ function Menu({
62
63
  const giveFocusBack = useCallback(() => {
63
64
  const back = opener.current;
64
65
  const target = back && back.isConnected && back !== document.body ? back : triggerRef.current;
65
- target?.focus();
66
+ returnFocus(target);
66
67
  }, []);
67
68
  const close = useCallback(
68
69
  (restore) => {
@@ -1,9 +1,10 @@
1
1
  import { LayerNodeBridge } from './chunk-LM3ISVJA.js';
2
- import { Tooltip } from './chunk-6ZJ3N7QI.js';
2
+ import { Tooltip } from './chunk-I33UIUZD.js';
3
3
  import { Kbd } from './chunk-SMBKXWML.js';
4
4
  import { LAYER_REPOSITION_EVENT, LayerHost } from './chunk-OMV5W53A.js';
5
5
  import { Button } from './chunk-OG6CL3EB.js';
6
6
  import { IconButton } from './chunk-4FQT6ZAY.js';
7
+ import { returnFocus } from './chunk-NUZHC6MM.js';
7
8
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
8
9
  import { cx } from './chunk-ODEQTPFM.js';
9
10
  import './Canvas-VUG2HLZK.css';
@@ -668,7 +669,7 @@ function ZoomReadout({
668
669
  }
669
670
  if (!returning.current) return;
670
671
  returning.current = false;
671
- button.current?.focus();
672
+ returnFocus(button.current);
672
673
  }, [typing]);
673
674
  const close = (apply) => {
674
675
  returning.current = true;
@@ -1,10 +1,12 @@
1
1
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
2
- import { Menu } from './chunk-BUVCV3WI.js';
3
- import { useModalLayer, focusables } from './chunk-R25RGPUB.js';
2
+ import { Menu } from './chunk-D6FEHY5G.js';
3
+ import { useModalLayer, focusables } from './chunk-H5XTJ7GJ.js';
4
+ import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
4
5
  import { IconButton } from './chunk-4FQT6ZAY.js';
5
6
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
6
7
  import { cx } from './chunk-ODEQTPFM.js';
7
- import './AppShell-JTSEOA57.css';
8
+ import './HitArea-QUOS6ZDJ.css';
9
+ import './AppShell-NDU4XMGF.css';
8
10
  import { createContext, forwardRef, useContext, useId, useState, useRef, useCallback, useEffect, useLayoutEffect } from 'react';
9
11
  import { breakpoint } from '@crewlethq/tokens';
10
12
  import { ChevronUpGlyph, ChevronsUpDownGlyph, ChevronRightGlyph, MenuGlyph } from '@crewlethq/icons/glyphs';
@@ -45,7 +47,7 @@ function AccountRow({
45
47
  "button",
46
48
  {
47
49
  type: "button",
48
- className: "crewlet-account-row__who",
50
+ className: cx("crewlet-account-row__who", HIT_AREA_CLASS),
49
51
  title,
50
52
  "data-current": current ? "" : void 0,
51
53
  ...trigger,
@@ -60,7 +62,7 @@ function AccountRow({
60
62
  ) : href === void 0 ? /* @__PURE__ */ jsx("span", { className: "crewlet-account-row__who", children: who }) : /* @__PURE__ */ jsxs(
61
63
  "a",
62
64
  {
63
- className: "crewlet-account-row__who",
65
+ className: cx("crewlet-account-row__who", HIT_AREA_CLASS),
64
66
  href,
65
67
  title,
66
68
  "aria-current": current ? "page" : void 0,
@@ -120,6 +122,16 @@ function AppShell({
120
122
  },
121
123
  [mainRef]
122
124
  );
125
+ const [gutter, setGutter] = useState(0);
126
+ useLayoutEffect(() => {
127
+ if (!scroller) return void 0;
128
+ const measure = () => setGutter(Math.max(0, scroller.offsetWidth - scroller.clientWidth));
129
+ measure();
130
+ if (typeof ResizeObserver === "undefined") return void 0;
131
+ const observer = new ResizeObserver(measure);
132
+ observer.observe(scroller);
133
+ return () => observer.disconnect();
134
+ }, [scroller]);
123
135
  const shell = {
124
136
  narrow,
125
137
  drawerOpen,
@@ -143,7 +155,11 @@ function AppShell({
143
155
  !shell.hasRail && "crewlet-app-shell--no-rail",
144
156
  className
145
157
  ),
146
- style: drawerZ === null ? style : { ...style, ["--crewlet-app-shell-drawer-z"]: String(drawerZ) },
158
+ style: {
159
+ ...style,
160
+ ["--crewlet-app-shell-gutter"]: `${gutter}px`,
161
+ ...drawerZ === null ? null : { ["--crewlet-app-shell-drawer-z"]: String(drawerZ) }
162
+ },
147
163
  children: [
148
164
  /* @__PURE__ */ jsx(
149
165
  "a",
@@ -286,7 +302,7 @@ var AppShellRailRow = forwardRef(function AppShellRailRow2({
286
302
  {
287
303
  ref,
288
304
  type: "button",
289
- className: cx(shape, "crewlet-app-shell__rail-row--action"),
305
+ className: cx(shape, "crewlet-app-shell__rail-row--action", HIT_AREA_CLASS),
290
306
  "aria-label": label,
291
307
  "aria-expanded": expanded,
292
308
  "aria-haspopup": haspopup,
@@ -1,7 +1,9 @@
1
- import { useListbox } from './chunk-F73MC7EZ.js';
2
- import { Input } from './chunk-IUYUS2SO.js';
1
+ import { useListbox } from './chunk-7KHM2FZH.js';
2
+ import { Input } from './chunk-TYONQSOK.js';
3
+ import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
3
4
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './Combobox-4FUVYIE7.css';
5
+ import './HitArea-QUOS6ZDJ.css';
6
+ import './Combobox-YDONYDTM.css';
5
7
  import { forwardRef, useId, useMemo, useRef, useCallback } from 'react';
6
8
  import { jsxs, jsx } from 'react/jsx-runtime';
7
9
 
@@ -115,6 +117,7 @@ var Combobox = forwardRef(function Combobox2({
115
117
  "aria-disabled": option.disabled || void 0,
116
118
  className: cx(
117
119
  "crewlet-listbox__option",
120
+ HIT_AREA_CLASS,
118
121
  index === listbox.active && "is-highlight",
119
122
  option.disabled && "is-disabled"
120
123
  ),
@@ -1,5 +1,7 @@
1
+ import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
1
2
  import { cx } from './chunk-ODEQTPFM.js';
2
- import './ChoiceList-EA2W6MOS.css';
3
+ import './HitArea-QUOS6ZDJ.css';
4
+ import './ChoiceList-KFYFAECP.css';
3
5
  import { useId } from 'react';
4
6
  import { jsxs, jsx } from 'react/jsx-runtime';
5
7
 
@@ -10,7 +12,7 @@ function ChoiceList({ options, value, onChange, label, footer, disabled, classNa
10
12
  const id = `${name}-${option.value}`;
11
13
  const checked = option.value === value;
12
14
  return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-choice-list__item", option.separated && "is-separated"), children: [
13
- /* @__PURE__ */ jsxs("label", { className: cx("crewlet-choice-list__row", option.media != null && "has-media", checked && "is-checked"), htmlFor: id, children: [
15
+ /* @__PURE__ */ jsxs("label", { className: cx("crewlet-choice-list__row", HIT_AREA_CLASS, option.media != null && "has-media", checked && "is-checked"), htmlFor: id, children: [
14
16
  /* @__PURE__ */ jsx(
15
17
  "input",
16
18
  {
@@ -1,5 +1,5 @@
1
- import { HuePicker } from './chunk-SUXP4OBT.js';
2
- import { Popover } from './chunk-K3IJQNB7.js';
1
+ import { HuePicker } from './chunk-F4LPQA4E.js';
2
+ import { Popover } from './chunk-KHJIEPZV.js';
3
3
  import { NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
4
4
  import { CharacterPicker } from './chunk-YEVG2X5R.js';
5
5
  import { Avatar } from './chunk-PZKHBB7D.js';
@@ -1,7 +1,7 @@
1
- import { Textarea } from './chunk-IUYUS2SO.js';
2
1
  import { Kbd } from './chunk-SMBKXWML.js';
2
+ import { Textarea } from './chunk-TYONQSOK.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './Composer-PXITWNEK.css';
4
+ import './Composer-TXULCPPV.css';
5
5
  import { forwardRef } from 'react';
6
6
  import { jsxs, jsx } from 'react/jsx-runtime';
7
7
 
@@ -1,5 +1,5 @@
1
1
  import { NODE_HUES, NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
2
- import { SegmentedControl } from './chunk-CCAXYHQS.js';
2
+ import { SegmentedControl } from './chunk-2QZ2VPHR.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,7 +1,7 @@
1
- import { SlideStage } from './chunk-NQGPD6NX.js';
1
+ import { SlideStage } from './chunk-RMEBFYL7.js';
2
2
  import { useReorder } from './chunk-XJ2QEBMM.js';
3
3
  import { Kbd, isApplePlatform } from './chunk-SMBKXWML.js';
4
- import { Menu } from './chunk-BUVCV3WI.js';
4
+ import { Menu } from './chunk-D6FEHY5G.js';
5
5
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './SlideFilmstrip-PAT7P4OG.css';
@@ -1,4 +1,4 @@
1
- import { Document } from './chunk-P6WFZDKS.js';
1
+ import { Document } from './chunk-PWG3VHRQ.js';
2
2
  import { ArtifactKindGlyph } from './chunk-CE2THTQR.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './ArtifactCover-D4MBEJ5H.css';
@@ -1,6 +1,6 @@
1
- import { Toolbar } from './chunk-PGRPNDWM.js';
2
- import { SegmentedControl } from './chunk-CCAXYHQS.js';
3
- import { tabId } from './chunk-VL6CUNSX.js';
1
+ import { Toolbar } from './chunk-NR4CPM4T.js';
2
+ import { SegmentedControl } from './chunk-2QZ2VPHR.js';
3
+ import { tabId } from './chunk-7SDUKCNW.js';
4
4
  import { IconButton } from './chunk-4FQT6ZAY.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './MarkdownEditor-WOKV7CLK.css';
@@ -1,7 +1,7 @@
1
+ import { returnFocus } from './chunk-NUZHC6MM.js';
1
2
  import { useRef, useState, useLayoutEffect, useEffect, useCallback, useSyncExternalStore } from 'react';
2
3
  import { zIndex } from '@crewlethq/tokens';
3
4
 
4
- // src/Layer/stack.ts
5
5
  var KEY = /* @__PURE__ */ Symbol.for("crewlet.layer-stack");
6
6
  function sharedStack() {
7
7
  const host = globalThis;
@@ -214,8 +214,7 @@ function useModalLayer({ onClose, dismissable = true, initialFocus }) {
214
214
  if (holder && shared.entries.some((entry) => entry.panel()?.contains(holder))) return;
215
215
  for (const el of back) {
216
216
  if (!(el instanceof HTMLElement) || !el.isConnected || el === document.body) continue;
217
- el.focus();
218
- if (document.activeElement === el) return;
217
+ if (returnFocus(el)) return;
219
218
  }
220
219
  };
221
220
  }, [back]);
@@ -1,5 +1,5 @@
1
1
  import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
2
- import { usePopupLayer } from './chunk-R25RGPUB.js';
2
+ import { usePopupLayer } from './chunk-H5XTJ7GJ.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './Tooltip-LKQF7CE4.css';
5
5
  import { useId, useState, useRef, useCallback, useEffect, useLayoutEffect, cloneElement } from 'react';
@@ -1,8 +1,10 @@
1
- import { Tag } from './chunk-GFV4LJHH.js';
1
+ import { Tag } from './chunk-KYIAFNU7.js';
2
2
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
3
+ import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
3
4
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
4
5
  import { cx } from './chunk-ODEQTPFM.js';
5
- import './DatasetSource-SMGX4PS5.css';
6
+ import './HitArea-QUOS6ZDJ.css';
7
+ import './DatasetSource-FFKTD3ZU.css';
6
8
  import { useId, Children, isValidElement } from 'react';
7
9
  import { ClockGlyph } from '@crewlethq/icons/glyphs';
8
10
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
@@ -93,7 +95,16 @@ function DatasetSource({
93
95
  ),
94
96
  "aria-busy": status === "loading" || void 0,
95
97
  children: [
96
- onSelect ? /* @__PURE__ */ jsx("button", { type: "button", className: "crewlet-dataset-source__summary", "aria-pressed": selected, onClick: onSelect, children: summary }) : /* @__PURE__ */ jsx("div", { className: "crewlet-dataset-source__summary", children: summary }),
98
+ onSelect ? /* @__PURE__ */ jsx(
99
+ "button",
100
+ {
101
+ type: "button",
102
+ className: cx("crewlet-dataset-source__summary", HIT_AREA_CLASS),
103
+ "aria-pressed": selected,
104
+ onClick: onSelect,
105
+ children: summary
106
+ }
107
+ ) : /* @__PURE__ */ jsx("div", { className: "crewlet-dataset-source__summary", children: summary }),
97
108
  open ? /* @__PURE__ */ jsx("div", { className: "crewlet-dataset-source__preview", role: "group", "aria-labelledby": titleId, children }) : null
98
109
  ]
99
110
  }
@@ -1,21 +1,21 @@
1
1
  import { TagGroup } from './chunk-O2EGEONV.js';
2
2
  import { CursorFlag } from './chunk-3BYIWOTV.js';
3
3
  import { presenceHueClass } from './chunk-I6POAB4V.js';
4
- import { Tag } from './chunk-GFV4LJHH.js';
4
+ import { Tag } from './chunk-KYIAFNU7.js';
5
5
  import { StatusDot } from './chunk-WIATRXEJ.js';
6
- import { ChangeMark } from './chunk-47JQAGRV.js';
6
+ import { ChangeMark } from './chunk-66X5WDKE.js';
7
7
  import { isEmptyValue, displayText, ratingMax, findPerson, findOption, statusTone, editText, textMax, sheetLabels, normalizeValue, sameValue, spokenText, drawnColumns, fitSamples, fittedWidth, columnWidth, SHEET_COLUMN_BOUNDS, sortRows, SHEET_ROW_HEIGHT, cellKey, columnOffsets, SHEET_ROW_NUMBER_WIDTH, rangeOf, presenceByCell, presenceByRow, presenceByColumn, scrollToRow, planClear, visibleRows, cellDescription, nextSort, rowName, inRange, hasPrevious, flagText, toTSV, planPaste, parseTSV, isMod, moveFrom, isTypingKey, editorSide, optionHue, parseText, liveOptions, checkValue } from './chunk-LFSIKGRQ.js';
8
8
  import { presenceLabels } from './chunk-Z7JYG5TF.js';
9
- import { Popover } from './chunk-K3IJQNB7.js';
10
- import { Tooltip } from './chunk-6ZJ3N7QI.js';
9
+ import { Popover } from './chunk-KHJIEPZV.js';
10
+ import { Tooltip } from './chunk-I33UIUZD.js';
11
11
  import { Avatar } from './chunk-PZKHBB7D.js';
12
- import { Menu } from './chunk-BUVCV3WI.js';
13
- import { isComposing } from './chunk-R25RGPUB.js';
12
+ import { Menu } from './chunk-D6FEHY5G.js';
13
+ import { isComposing } from './chunk-H5XTJ7GJ.js';
14
14
  import { Button } from './chunk-OG6CL3EB.js';
15
15
  import { IconButton } from './chunk-4FQT6ZAY.js';
16
16
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
17
17
  import { cx } from './chunk-ODEQTPFM.js';
18
- import './SheetGrid-YRDXTIIZ.css';
18
+ import './SheetGrid-XK7T7M34.css';
19
19
  import { useId, useRef, useMemo, useState, useLayoutEffect, useEffect, useCallback } from 'react';
20
20
  import { CheckGlyph, StarGlyph, CircleAlertGlyph, ArrowUpGlyph, ArrowDownGlyph, TrashGlyph, EllipsisGlyph, RotateCcwClockGlyph, PlusGlyph } from '@crewlethq/icons/glyphs';
21
21
  import { isCrewletCharacter } from '@crewlethq/icons/characters';
@@ -727,6 +727,7 @@ function SheetGrid({
727
727
  const [rowHeight, setRowHeight] = useState(SHEET_ROW_HEIGHT);
728
728
  const [headerHeight, setHeaderHeight] = useState(SHEET_ROW_HEIGHT);
729
729
  const [viewport, setViewport] = useState(0);
730
+ const [crossbar, setCrossbar] = useState(0);
730
731
  const [scrollTop, setScrollTop] = useState(0);
731
732
  const [scrolledAcross, setScrolledAcross] = useState(false);
732
733
  const [active, setActive] = useState(null);
@@ -759,6 +760,12 @@ function SheetGrid({
759
760
  if (head > 0) setHeaderHeight(head);
760
761
  setViewport(scroller.current?.clientHeight ?? 0);
761
762
  setViewportWidth(scroller.current?.clientWidth ?? 0);
763
+ const box = scroller.current;
764
+ if (box) {
765
+ const edges = getComputedStyle(box);
766
+ const bar = box.offsetHeight - box.clientHeight - (parseFloat(edges.borderTopWidth) || 0) - (parseFloat(edges.borderBottomWidth) || 0);
767
+ setCrossbar(Math.max(0, Math.round(bar)));
768
+ }
762
769
  };
763
770
  measure();
764
771
  if (typeof ResizeObserver !== "function") return void 0;
@@ -1172,7 +1179,7 @@ function SheetGrid({
1172
1179
  "--crewlet-sheet-row-height": `${rowHeight}px`,
1173
1180
  width: `${totalWidth}px`
1174
1181
  };
1175
- const contentHeight = headerHeight + rows.length * rowHeight + 2;
1182
+ const contentHeight = headerHeight + rows.length * rowHeight + 2 + crossbar;
1176
1183
  const scrollerStyle = fit === "content" ? {
1177
1184
  height: `${height !== void 0 ? Math.min(contentHeight, height) : contentHeight}px`,
1178
1185
  "--crewlet-sheet-content-height": `${contentHeight}px`
@@ -1452,7 +1459,7 @@ function SheetGrid({
1452
1459
  // OUTSIDE THE GRID'S ROLES: a grid's rows hold cells only, so the
1453
1460
  // control stands beside the header row, sticks with it, and is its
1454
1461
  // own tab stop after the grid's.
1455
- /* @__PURE__ */ jsx("div", { className: "crewlet-sheet-grid__add-column", style: { height: `${headerHeight}px` }, children: /* @__PURE__ */ jsx(Tooltip, { content: labels.addColumn, children: /* @__PURE__ */ jsx(IconButton, { label: labels.addColumn, icon: /* @__PURE__ */ jsx(PlusGlyph, {}), size: "sm", title: "", onClick: onAddColumn }) }) })
1462
+ /* @__PURE__ */ jsx("div", { className: "crewlet-sheet-grid__add-column", style: { height: `${headerHeight}px` }, children: /* @__PURE__ */ jsx(Tooltip, { content: labels.addColumn, children: /* @__PURE__ */ jsx(IconButton, { label: labels.addColumn, icon: /* @__PURE__ */ jsx(PlusGlyph, { size: "xs" }), size: "sm", title: "", onClick: onAddColumn }) }) })
1456
1463
  ) : null
1457
1464
  ]
1458
1465
  }
@@ -1,5 +1,6 @@
1
1
  import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
2
- import { usePopupLayer, focusables } from './chunk-R25RGPUB.js';
2
+ import { usePopupLayer, focusables } from './chunk-H5XTJ7GJ.js';
3
+ import { returnFocus } from './chunk-NUZHC6MM.js';
3
4
  import { cx } from './chunk-ODEQTPFM.js';
4
5
  import './Popover-QCINR7WG.css';
5
6
  import { useId, useState, useRef, useCallback, useLayoutEffect, useEffect, cloneElement } from 'react';
@@ -45,7 +46,7 @@ function Popover({
45
46
  const close = useCallback(
46
47
  (reason) => {
47
48
  const held = panel.current?.contains(document.activeElement) ?? false;
48
- if (reason === "escape" || reason === "tab" || reason === "content" && held) anchor.current?.focus();
49
+ if (reason === "escape" || reason === "tab" || reason === "content" && held) returnFocus(anchor.current);
49
50
  setOpen(false, reason);
50
51
  },
51
52
  [setOpen]
@@ -1,6 +1,6 @@
1
1
  import { StatusDot } from './chunk-WIATRXEJ.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './Tag-SRGTK5KI.css';
3
+ import './Tag-2DQOVE6W.css';
4
4
  import { XGlyph } from '@crewlethq/icons/glyphs';
5
5
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
6
6