@crewlethq/ui 0.36.0 → 0.37.1

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 (201) hide show
  1. package/README.md +41 -1
  2. package/dist/AgentHandoffPanel/index.js +4 -4
  3. package/dist/AppShell/index.d.ts +1 -0
  4. package/dist/AppShell/index.js +5 -3
  5. package/dist/{AppShell-JTSEOA57.css → AppShell-JBCZSSX3.css} +14 -2
  6. package/dist/ArrangeList/index.js +4 -4
  7. package/dist/ArtifactAccess/ArtifactAccess.d.ts +40 -0
  8. package/dist/ArtifactAccess/index.d.ts +3 -0
  9. package/dist/ArtifactAccess/index.js +2 -0
  10. package/dist/ArtifactAccess-Y53ZTRFS.css +31 -0
  11. package/dist/ArtifactBar/index.js +9 -7
  12. package/dist/ArtifactCard/ArtifactCard.d.ts +1 -6
  13. package/dist/ArtifactCard/index.d.ts +2 -1
  14. package/dist/ArtifactCard/index.js +3 -2
  15. package/dist/ArtifactCover/index.js +3 -3
  16. package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +1 -1
  17. package/dist/ArtifactKindIllustration/index.js +1 -1
  18. package/dist/{ArtifactKindIllustration-5KTP43QS.css → ArtifactKindIllustration-KLFL7KBG.css} +1 -1
  19. package/dist/ArtifactMakeRow/index.d.ts +1 -0
  20. package/dist/ArtifactMakeRow/index.js +2 -1
  21. package/dist/{ArtifactMakeRow-RWUTS5MC.css → ArtifactMakeRow-W3RD5YWZ.css} +7 -2
  22. package/dist/ArtifactNameCell/ArtifactNameCell.d.ts +37 -0
  23. package/dist/ArtifactNameCell/index.d.ts +4 -0
  24. package/dist/ArtifactNameCell/index.js +4 -0
  25. package/dist/ArtifactNameCell-RTVP4LO4.css +104 -0
  26. package/dist/AvatarPicker/index.js +8 -6
  27. package/dist/Canvas/index.js +4 -3
  28. package/dist/CanvasBoard/index.js +7 -6
  29. package/dist/CanvasToolbar/index.js +6 -5
  30. package/dist/ChangeMark/index.js +4 -3
  31. package/dist/Checkbox/index.js +3 -3
  32. package/dist/ChoiceList/index.d.ts +1 -0
  33. package/dist/ChoiceList/index.js +2 -1
  34. package/dist/{ChoiceList-EA2W6MOS.css → ChoiceList-KFYFAECP.css} +26 -4
  35. package/dist/Combobox/index.d.ts +1 -0
  36. package/dist/Combobox/index.js +6 -5
  37. package/dist/{Combobox-4FUVYIE7.css → Combobox-YDONYDTM.css} +2 -1
  38. package/dist/CommandPalette/index.d.ts +1 -0
  39. package/dist/CommandPalette/index.js +7 -6
  40. package/dist/{CommandPalette-7CFGVBND.css → CommandPalette-TOZYLWLE.css} +5 -1
  41. package/dist/CommentThread/index.js +5 -5
  42. package/dist/Composer/index.js +3 -3
  43. package/dist/{Composer-PXITWNEK.css → Composer-TXULCPPV.css} +1 -1
  44. package/dist/ConfirmField/index.js +3 -3
  45. package/dist/DataTable/index.js +7 -7
  46. package/dist/DataView/index.js +12 -12
  47. package/dist/DatasetSource/index.d.ts +1 -0
  48. package/dist/DatasetSource/index.js +2 -1
  49. package/dist/{DatasetSource-SMGX4PS5.css → DatasetSource-FFKTD3ZU.css} +16 -1
  50. package/dist/DateTimePicker/index.js +4 -4
  51. package/dist/{DateTimePicker-2IVTKFV2.css → DateTimePicker-3A7JIIVL.css} +3 -3
  52. package/dist/DocTabsEditor/index.js +5 -5
  53. package/dist/Document/index.js +2 -2
  54. package/dist/{Document-YFWTWXJP.css → Document-TZ2NBLOR.css} +2 -2
  55. package/dist/{Editor-HORWMUM3.js → Editor-QV4JP242.js} +6 -6
  56. package/dist/FactList/index.js +4 -3
  57. package/dist/FollowBanner/index.js +3 -2
  58. package/dist/HitArea/hitArea.d.ts +7 -0
  59. package/dist/HitArea/index.d.ts +2 -0
  60. package/dist/HitArea/index.js +2 -0
  61. package/dist/HitArea-QUOS6ZDJ.css +35 -0
  62. package/dist/HuePicker/index.js +4 -3
  63. package/dist/Input/index.js +2 -2
  64. package/dist/{Input-ABGOFENS.css → Input-OQZBCRX5.css} +9 -4
  65. package/dist/Layer/index.js +2 -1
  66. package/dist/LinkInterstitial/index.js +4 -3
  67. package/dist/ListInput/index.js +4 -4
  68. package/dist/Listbox/index.js +3 -2
  69. package/dist/{Listbox-6WJNJQVQ.css → Listbox-NQV6E3FS.css} +3 -0
  70. package/dist/LivePreview/LivePreview.d.ts +15 -3
  71. package/dist/LivePreview/index.d.ts +2 -2
  72. package/dist/LivePreview/index.js +1 -1
  73. package/dist/{LivePreview-BROGKR4N.css → LivePreview-KQEDMQCY.css} +13 -0
  74. package/dist/MarkdownEditor/index.js +8 -6
  75. package/dist/Menu/index.js +3 -2
  76. package/dist/MergeConflicts/index.js +5 -4
  77. package/dist/Modal/index.js +3 -2
  78. package/dist/OrgTable/index.js +4 -3
  79. package/dist/Popover/index.js +3 -2
  80. package/dist/PresenterView/index.js +4 -3
  81. package/dist/PrincipalPicker/index.js +7 -6
  82. package/dist/RichEditor/index.js +1 -1
  83. package/dist/SegmentedControl/index.d.ts +1 -0
  84. package/dist/SegmentedControl/index.js +4 -3
  85. package/dist/{SegmentedControl-FLI45IOW.css → SegmentedControl-B7XCUOML.css} +9 -2
  86. package/dist/Select/index.d.ts +1 -0
  87. package/dist/Select/index.js +5 -4
  88. package/dist/{Select-W3CHTZXP.css → Select-F526HLNR.css} +5 -4
  89. package/dist/ShareDialog/index.js +7 -6
  90. package/dist/SheetColumnEditor/index.js +12 -11
  91. package/dist/SheetGrid/index.js +7 -6
  92. package/dist/{SheetGrid-YRDXTIIZ.css → SheetGrid-XK7T7M34.css} +9 -4
  93. package/dist/Shortcut/index.js +3 -2
  94. package/dist/SidebarNav/index.d.ts +1 -0
  95. package/dist/SidebarNav/index.js +2 -1
  96. package/dist/{SidebarNav-KF66MLOM.css → SidebarNav-7SGUZYKK.css} +21 -2
  97. package/dist/SlideCompare/index.js +4 -3
  98. package/dist/SlideFilmstrip/index.js +5 -4
  99. package/dist/SlideGrid/index.js +4 -3
  100. package/dist/SlideStage/index.js +3 -2
  101. package/dist/SourceEditor/index.js +2 -2
  102. package/dist/{SourceEditor-QAYE2JS6.css → SourceEditor-OKPWPFXK.css} +1 -1
  103. package/dist/Switcher/index.js +7 -7
  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/TagsInput/index.js +4 -4
  108. package/dist/{TagsInput-7EGBBXHS.css → TagsInput-CLFHP6I2.css} +1 -1
  109. package/dist/ThemeGallery/index.js +4 -3
  110. package/dist/ThemeSwitcher/index.js +5 -4
  111. package/dist/TimeWindowPicker/index.js +8 -7
  112. package/dist/{TimeWindowPicker-DEFDV77Z.css → TimeWindowPicker-I3HXC74I.css} +3 -3
  113. package/dist/Toaster/index.js +2 -1
  114. package/dist/Toolbar/index.js +3 -2
  115. package/dist/Tooltip/index.js +3 -2
  116. package/dist/TreeCanvas/index.js +5 -4
  117. package/dist/TreeGrid/index.js +3 -2
  118. package/dist/VersionCompare/index.js +5 -4
  119. package/dist/{chunk-CCAXYHQS.js → chunk-2QZ2VPHR.js} +3 -1
  120. package/dist/chunk-2YTOOH3A.js +4 -0
  121. package/dist/{chunk-QWNVSR6G.js → chunk-3KYVFG47.js} +1 -1
  122. package/dist/{chunk-3PTUDKSR.js → chunk-3SBM4DGI.js} +4 -4
  123. package/dist/{chunk-H5NOLRGH.js → chunk-3V5T5K5H.js} +1 -1
  124. package/dist/chunk-4ISUIS6F.js +3 -0
  125. package/dist/{chunk-PLTCDSTU.js → chunk-4LRAJXHL.js} +1 -1
  126. package/dist/{chunk-4ZJLOKSS.js → chunk-5BUOMF6N.js} +2 -2
  127. package/dist/{chunk-47JQAGRV.js → chunk-66X5WDKE.js} +1 -1
  128. package/dist/{chunk-MRMHZ437.js → chunk-6NNY5WBF.js} +7 -6
  129. package/dist/{chunk-5RT5O4JR.js → chunk-7CGPPAYR.js} +1 -1
  130. package/dist/{chunk-F73MC7EZ.js → chunk-7KHM2FZH.js} +2 -2
  131. package/dist/{chunk-VL6CUNSX.js → chunk-7SDUKCNW.js} +4 -1
  132. package/dist/{chunk-XMRTFPWX.js → chunk-A23KDROH.js} +3 -3
  133. package/dist/{chunk-N5SKHIAP.js → chunk-A72JPXIV.js} +8 -6
  134. package/dist/{chunk-PJIPUEJ3.js → chunk-AXS6MBNH.js} +1 -1
  135. package/dist/{chunk-2FPENTCF.js → chunk-AYHIF6DH.js} +1 -1
  136. package/dist/{chunk-J6ON5SYE.js → chunk-B5J23C73.js} +1 -1
  137. package/dist/{chunk-7VAUGG6B.js → chunk-B5UHX5UC.js} +2 -2
  138. package/dist/chunk-BGLKLXL3.js +29 -0
  139. package/dist/{chunk-FHHYXZSP.js → chunk-C7OKDYBH.js} +2 -2
  140. package/dist/{chunk-JBUMD6DS.js → chunk-CFGGE3HO.js} +1 -1
  141. package/dist/{chunk-XGBLRDSU.js → chunk-CQFQGAZI.js} +17 -7
  142. package/dist/{chunk-GMLAKNFY.js → chunk-D2OL3ZSS.js} +1 -1
  143. package/dist/{chunk-D7GNNID2.js → chunk-D3EJSLCL.js} +2 -2
  144. package/dist/{chunk-BUVCV3WI.js → chunk-D6FEHY5G.js} +3 -2
  145. package/dist/{chunk-4BYHAOHH.js → chunk-DAERKOOG.js} +3 -2
  146. package/dist/{chunk-IQH3DDZ2.js → chunk-DOLATMGF.js} +2 -2
  147. package/dist/{chunk-W3HYWD63.js → chunk-DZSBFITC.js} +15 -8
  148. package/dist/{chunk-PPFX6GRK.js → chunk-EAEJ7CDM.js} +6 -3
  149. package/dist/{chunk-WZGYIVYH.js → chunk-EAQLI2SO.js} +4 -2
  150. package/dist/{chunk-GYBDPCRC.js → chunk-ECGGQX2H.js} +2 -2
  151. package/dist/{chunk-FG4O64DV.js → chunk-F3WZ5AKM.js} +5 -5
  152. package/dist/{chunk-SUXP4OBT.js → chunk-F4LPQA4E.js} +1 -1
  153. package/dist/{chunk-KYZMN6I6.js → chunk-FBW3Q2OY.js} +2 -2
  154. package/dist/{chunk-JQLS3MZB.js → chunk-FWBKMPNR.js} +1 -1
  155. package/dist/{chunk-OOWPSBIS.js → chunk-GMW4ZHST.js} +3 -3
  156. package/dist/{chunk-R25RGPUB.js → chunk-H5XTJ7GJ.js} +2 -3
  157. package/dist/{chunk-PGZ2R3ON.js → chunk-HDHZWIFL.js} +8 -6
  158. package/dist/{chunk-GRYZ5EP3.js → chunk-HMLAWVG6.js} +13 -2
  159. package/dist/{chunk-6ZJ3N7QI.js → chunk-I33UIUZD.js} +1 -1
  160. package/dist/{chunk-RH2NCQBZ.js → chunk-ISA2O2BK.js} +2 -2
  161. package/dist/{chunk-K3IJQNB7.js → chunk-KHJIEPZV.js} +3 -2
  162. package/dist/{chunk-ES4RKQ7B.js → chunk-MG3HTY6F.js} +7 -7
  163. package/dist/chunk-MICRGE3J.js +1 -0
  164. package/dist/{chunk-WNAYQQ6Y.js → chunk-MMPKN7WV.js} +2 -2
  165. package/dist/{chunk-PGRPNDWM.js → chunk-NR4CPM4T.js} +1 -1
  166. package/dist/{chunk-5WDXPHEW.js → chunk-NRBAXRWE.js} +1 -1
  167. package/dist/{chunk-66ADEPFB.js → chunk-NS4NSHVX.js} +5 -3
  168. package/dist/{chunk-YSGLEHND.js → chunk-NUZHC6MM.js} +14 -2
  169. package/dist/{chunk-WGD2HX2A.js → chunk-OED6LUWE.js} +1 -1
  170. package/dist/{chunk-OSZDHN5Z.js → chunk-OHA6WSAG.js} +5 -10
  171. package/dist/chunk-P5VGSVWG.js +39 -0
  172. package/dist/{chunk-KJW2AS57.js → chunk-PEUGPAKH.js} +1 -1
  173. package/dist/{chunk-IPAU6FLH.js → chunk-PPHTIKZO.js} +1 -1
  174. package/dist/{chunk-P6WFZDKS.js → chunk-PWG3VHRQ.js} +2 -2
  175. package/dist/{chunk-HOIZ6MIS.js → chunk-RLJXVFEH.js} +1 -1
  176. package/dist/{chunk-NQGPD6NX.js → chunk-RMEBFYL7.js} +1 -1
  177. package/dist/{chunk-APDKUGSH.js → chunk-S27UBCVX.js} +5 -4
  178. package/dist/{chunk-XEGZHHRH.js → chunk-SVGARBDY.js} +1 -1
  179. package/dist/{chunk-UWGUKMBK.js → chunk-SYBYFQTY.js} +2 -2
  180. package/dist/{chunk-IUYUS2SO.js → chunk-TYONQSOK.js} +2 -2
  181. package/dist/{chunk-L4WZSVMT.js → chunk-UB6MLXUL.js} +3 -3
  182. package/dist/{chunk-MJW6SQYB.js → chunk-UBZDYOCA.js} +1 -1
  183. package/dist/{chunk-2DV4THNQ.js → chunk-UWRBD2YO.js} +2 -2
  184. package/dist/{chunk-DEMALFHY.js → chunk-UXYEOWG5.js} +1 -1
  185. package/dist/{chunk-UCCC7YVZ.js → chunk-W7PAIVAP.js} +4 -2
  186. package/dist/{chunk-T5RQGI6O.js → chunk-X3UYTAOG.js} +1 -1
  187. package/dist/{chunk-VKKUGZ3G.js → chunk-XQZ6EWOE.js} +8 -5
  188. package/dist/{chunk-TVRBQMIX.js → chunk-YPMGP2X4.js} +6 -6
  189. package/dist/{chunk-EOQFPZEE.js → chunk-YSG3DW7W.js} +1 -1
  190. package/dist/{chunk-2QEDJSJC.js → chunk-ZMDYQ2HH.js} +1 -1
  191. package/dist/{chunk-27GD7LVR.js → chunk-ZMWXE4GT.js} +1 -1
  192. package/dist/generated/index.d.ts +3 -0
  193. package/dist/generated/index.js +109 -105
  194. package/dist/index.js +109 -105
  195. package/dist/styles.css +371 -63
  196. package/dist/utils/focusModality.d.ts +17 -1
  197. package/dist/utils/index.d.ts +1 -1
  198. package/dist/utils/index.js +1 -1
  199. package/package.json +3 -3
  200. package/dist/chunk-WKEPORNM.js +0 -2
  201. /package/dist/{chunk-5BP6IS3N.js → chunk-4QQ3MND5.js} +0 -0
@@ -1,4 +1,4 @@
1
- export { SOURCE_EDITOR_KEYS, SourceEditor, lineStart } from '../chunk-D7GNNID2.js';
2
- import '../chunk-YSGLEHND.js';
1
+ export { SOURCE_EDITOR_KEYS, SourceEditor, lineStart } from '../chunk-D3EJSLCL.js';
2
+ import '../chunk-NUZHC6MM.js';
3
3
  import '../chunk-BZFWDIV6.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -37,7 +37,7 @@
37
37
  outline-offset: -1px;
38
38
  }
39
39
 
40
- :root[data-crewlet-focus='pointer'] .crewlet-source-editor:has(.crewlet-source-editor__field:focus-visible) {
40
+ :where(:root[data-crewlet-focus='pointer']) .crewlet-source-editor:has(.crewlet-source-editor__field:focus-visible) {
41
41
  outline-width: 1px;
42
42
  outline-color: var(--color-border-selected);
43
43
  }
@@ -1,17 +1,17 @@
1
- export { Switcher } from '../chunk-MRMHZ437.js';
2
- import '../chunk-XEGZHHRH.js';
3
- import '../chunk-F73MC7EZ.js';
1
+ export { Switcher } from '../chunk-6NNY5WBF.js';
2
+ import '../chunk-SVGARBDY.js';
3
+ import '../chunk-7KHM2FZH.js';
4
+ import '../chunk-KHJIEPZV.js';
4
5
  import '../chunk-FYTIJM2T.js';
5
- import '../chunk-K3IJQNB7.js';
6
6
  import '../chunk-TEUQWOWZ.js';
7
- import '../chunk-IUYUS2SO.js';
8
- import '../chunk-YSGLEHND.js';
7
+ import '../chunk-TYONQSOK.js';
9
8
  import '../chunk-PQADV6P6.js';
10
9
  import '../chunk-RSAQOKH3.js';
11
10
  import '../chunk-RTPQDNW3.js';
12
11
  import '../chunk-OMV5W53A.js';
13
- import '../chunk-R25RGPUB.js';
12
+ import '../chunk-H5XTJ7GJ.js';
14
13
  import '../chunk-OG6CL3EB.js';
15
14
  import '../chunk-4FQT6ZAY.js';
15
+ import '../chunk-NUZHC6MM.js';
16
16
  import '../chunk-BZFWDIV6.js';
17
17
  import '../chunk-ODEQTPFM.js';
@@ -1,3 +1,4 @@
1
+ import '../HitArea/HitArea.css';
1
2
  import './Tabs.css';
2
3
  export { TabPanel, Tabs, tabId } from './Tabs.js';
3
4
  export type { TabPanelProps, TabsItem, TabsMarker, TabsProps, TabsRenderItemProps, TabsSize, TabsVariant, } from './Tabs.js';
@@ -1,5 +1,6 @@
1
- export { TabPanel, Tabs, tabId } from '../chunk-VL6CUNSX.js';
1
+ export { TabPanel, Tabs, tabId } from '../chunk-7SDUKCNW.js';
2
2
  import '../chunk-RKKO7QHH.js';
3
3
  import '../chunk-BHHIIK3M.js';
4
+ import '../chunk-2YTOOH3A.js';
4
5
  import '../chunk-BZFWDIV6.js';
5
6
  import '../chunk-ODEQTPFM.js';
@@ -28,8 +28,9 @@
28
28
  * row is reachable by the arrow keys either way.
29
29
  */
30
30
  .crewlet-tabs--underline {
31
+ --crewlet-tabs-gap: var(--spacing-2);
31
32
  display: flex;
32
- gap: var(--spacing-2);
33
+ gap: var(--crewlet-tabs-gap);
33
34
  border-bottom: 1px solid var(--color-border-default);
34
35
  position: relative;
35
36
  width: 100%;
@@ -103,8 +104,9 @@
103
104
  */
104
105
  .crewlet-tabs--pill {
105
106
  --crewlet-tabs-pill-inset: 1px;
107
+ --crewlet-tabs-gap: var(--crewlet-tabs-pill-inset);
106
108
 
107
- gap: var(--crewlet-tabs-pill-inset);
109
+ gap: var(--crewlet-tabs-gap);
108
110
  padding: var(--crewlet-tabs-pill-inset);
109
111
  background: var(--color-surface-elevated);
110
112
  border: 1px solid var(--color-border-default);
@@ -165,6 +167,20 @@
165
167
  background-color var(--motion-duration-fast) var(--motion-easing-default),
166
168
  color var(--motion-duration-fast) var(--motion-easing-default),
167
169
  box-shadow var(--motion-duration-fast) var(--motion-easing-default);
170
+ /* Half the gap to each neighbour, so the targets meet (HitArea.css). A row
171
+ that wraps reaches across its rows' gap too. */
172
+ --crewlet-hit-area-inline: calc(var(--crewlet-tabs-gap, 0px) / 2);
173
+ --crewlet-hit-area-block: calc(var(--crewlet-tabs-row-gap, 0px) / 2);
174
+ }
175
+
176
+ /* The row's two ends reach nothing past it: the underline row is a scroller,
177
+ and a target past its last tab would be width it scrolls by. */
178
+ .crewlet-tabs__tab:first-child {
179
+ --crewlet-hit-area-inline-start: 0px;
180
+ }
181
+
182
+ .crewlet-tabs__tab:last-child {
183
+ --crewlet-hit-area-inline-end: 0px;
168
184
  }
169
185
 
170
186
  /*
@@ -311,9 +327,10 @@
311
327
  * (FilterChip draws the same pair).
312
328
  */
313
329
  .crewlet-tabs--chip {
330
+ --crewlet-tabs-gap: calc(var(--spacing-1) / 2);
314
331
  display: inline-flex;
315
332
  align-items: center;
316
- gap: calc(var(--spacing-1) / 2);
333
+ gap: var(--crewlet-tabs-gap);
317
334
  }
318
335
 
319
336
  .crewlet-tabs--chip .crewlet-tabs__tab {
@@ -1,11 +1,11 @@
1
- export { TagsInput } from '../chunk-3PTUDKSR.js';
1
+ export { TagsInput } from '../chunk-3SBM4DGI.js';
2
2
  import '../chunk-GFV4LJHH.js';
3
3
  import '../chunk-WIATRXEJ.js';
4
- import '../chunk-F73MC7EZ.js';
5
- import '../chunk-YSGLEHND.js';
4
+ import '../chunk-7KHM2FZH.js';
6
5
  import '../chunk-RSAQOKH3.js';
7
6
  import '../chunk-OMV5W53A.js';
8
- import '../chunk-R25RGPUB.js';
7
+ import '../chunk-H5XTJ7GJ.js';
9
8
  import '../chunk-4FQT6ZAY.js';
9
+ import '../chunk-NUZHC6MM.js';
10
10
  import '../chunk-BZFWDIV6.js';
11
11
  import '../chunk-ODEQTPFM.js';
@@ -77,7 +77,7 @@
77
77
  }
78
78
 
79
79
  /* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
80
- :root[data-crewlet-focus='pointer'] .crewlet-tags-input__box:focus-visible {
80
+ :where(:root[data-crewlet-focus='pointer']) .crewlet-tags-input__box:focus-visible {
81
81
  outline-width: 1px;
82
82
  outline-color: var(--color-border-selected);
83
83
  }
@@ -1,6 +1,7 @@
1
- export { ThemeGallery } from '../chunk-IPAU6FLH.js';
1
+ export { ThemeGallery } from '../chunk-PPHTIKZO.js';
2
2
  import '../chunk-MNFU2RNT.js';
3
- import '../chunk-F73MC7EZ.js';
3
+ import '../chunk-7KHM2FZH.js';
4
4
  import '../chunk-RKKO7QHH.js';
5
- import '../chunk-R25RGPUB.js';
5
+ import '../chunk-H5XTJ7GJ.js';
6
+ import '../chunk-NUZHC6MM.js';
6
7
  import '../chunk-ODEQTPFM.js';
@@ -1,10 +1,11 @@
1
- export { DensitySwitcher, ThemeSwitcher } from '../chunk-2QEDJSJC.js';
1
+ export { DensitySwitcher, ThemeSwitcher } from '../chunk-ZMDYQ2HH.js';
2
2
  export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from '../chunk-Z24ZUSTX.js';
3
3
  export { DENSITY_PREFERENCES, PALETTE_ID, THEME_PREFERENCES, applyDensity, applyPalette, applyTheme, isDensityPreference, isPaletteId, isThemePreference } from '../chunk-ZXXDZJQN.js';
4
- import '../chunk-WKEPORNM.js';
5
- import '../chunk-CCAXYHQS.js';
6
- import '../chunk-VL6CUNSX.js';
4
+ import '../chunk-4ISUIS6F.js';
5
+ import '../chunk-2QZ2VPHR.js';
6
+ import '../chunk-7SDUKCNW.js';
7
7
  import '../chunk-RKKO7QHH.js';
8
8
  import '../chunk-BHHIIK3M.js';
9
+ import '../chunk-2YTOOH3A.js';
9
10
  import '../chunk-BZFWDIV6.js';
10
11
  import '../chunk-ODEQTPFM.js';
@@ -1,14 +1,15 @@
1
- export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-TVRBQMIX.js';
2
- import '../chunk-VKKUGZ3G.js';
3
- import '../chunk-F73MC7EZ.js';
1
+ export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-YPMGP2X4.js';
2
+ import '../chunk-XQZ6EWOE.js';
3
+ import '../chunk-7KHM2FZH.js';
4
+ import '../chunk-KHJIEPZV.js';
4
5
  import '../chunk-GXQ3B46I.js';
5
- import '../chunk-K3IJQNB7.js';
6
- import '../chunk-IUYUS2SO.js';
7
- import '../chunk-YSGLEHND.js';
6
+ import '../chunk-TYONQSOK.js';
8
7
  import '../chunk-PQADV6P6.js';
9
8
  import '../chunk-OMV5W53A.js';
10
- import '../chunk-R25RGPUB.js';
9
+ import '../chunk-H5XTJ7GJ.js';
10
+ import '../chunk-2YTOOH3A.js';
11
11
  import '../chunk-OG6CL3EB.js';
12
12
  import '../chunk-4FQT6ZAY.js';
13
+ import '../chunk-NUZHC6MM.js';
13
14
  import '../chunk-BZFWDIV6.js';
14
15
  import '../chunk-ODEQTPFM.js';
@@ -52,8 +52,8 @@
52
52
  }
53
53
 
54
54
  /* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
55
- :root[data-crewlet-focus='pointer'] .crewlet-time-window:focus-visible,
56
- :root[data-crewlet-focus='pointer'] .crewlet-time-window.is-open {
55
+ :where(:root[data-crewlet-focus='pointer']) .crewlet-time-window:focus-visible,
56
+ :where(:root[data-crewlet-focus='pointer']) .crewlet-time-window.is-open {
57
57
  outline-width: 1px;
58
58
  outline-color: var(--color-border-selected);
59
59
  }
@@ -330,7 +330,7 @@ svg.crewlet-time-window__tick {
330
330
  }
331
331
 
332
332
  /* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
333
- :root[data-crewlet-focus='pointer'] .crewlet-time-window__masked:has(.crewlet-time-window__masked-input:focus-visible) {
333
+ :where(:root[data-crewlet-focus='pointer']) .crewlet-time-window__masked:has(.crewlet-time-window__masked-input:focus-visible) {
334
334
  outline-width: 1px;
335
335
  outline-color: var(--color-border-selected);
336
336
  }
@@ -1,5 +1,6 @@
1
1
  export { ToastProvider, Toaster, useToast } from '../chunk-AC22RZKC.js';
2
2
  import '../chunk-OMV5W53A.js';
3
- import '../chunk-R25RGPUB.js';
3
+ import '../chunk-H5XTJ7GJ.js';
4
+ import '../chunk-NUZHC6MM.js';
4
5
  import '../chunk-BZFWDIV6.js';
5
6
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,5 @@
1
- export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-PGRPNDWM.js';
1
+ export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-NR4CPM4T.js';
2
2
  import '../chunk-OMV5W53A.js';
3
- import '../chunk-R25RGPUB.js';
3
+ import '../chunk-H5XTJ7GJ.js';
4
+ import '../chunk-NUZHC6MM.js';
4
5
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,5 @@
1
- export { Tooltip } from '../chunk-6ZJ3N7QI.js';
1
+ export { Tooltip } from '../chunk-I33UIUZD.js';
2
2
  import '../chunk-OMV5W53A.js';
3
- import '../chunk-R25RGPUB.js';
3
+ import '../chunk-H5XTJ7GJ.js';
4
+ import '../chunk-NUZHC6MM.js';
4
5
  import '../chunk-ODEQTPFM.js';
@@ -1,12 +1,13 @@
1
- export { TreeCanvas } from '../chunk-4ZJLOKSS.js';
1
+ export { TreeCanvas } from '../chunk-5BUOMF6N.js';
2
2
  import '../chunk-MY374UUD.js';
3
- import '../chunk-4BYHAOHH.js';
3
+ import '../chunk-DAERKOOG.js';
4
4
  import '../chunk-LM3ISVJA.js';
5
- import '../chunk-6ZJ3N7QI.js';
5
+ import '../chunk-I33UIUZD.js';
6
6
  import '../chunk-SMBKXWML.js';
7
7
  import '../chunk-OMV5W53A.js';
8
- import '../chunk-R25RGPUB.js';
8
+ import '../chunk-H5XTJ7GJ.js';
9
9
  import '../chunk-OG6CL3EB.js';
10
10
  import '../chunk-4FQT6ZAY.js';
11
+ import '../chunk-NUZHC6MM.js';
11
12
  import '../chunk-BZFWDIV6.js';
12
13
  import '../chunk-ODEQTPFM.js';
@@ -1,8 +1,9 @@
1
- export { TreeGrid } from '../chunk-QWNVSR6G.js';
1
+ export { TreeGrid } from '../chunk-3KYVFG47.js';
2
2
  import '../chunk-MY374UUD.js';
3
3
  import '../chunk-LM3ISVJA.js';
4
4
  import '../chunk-OMV5W53A.js';
5
- import '../chunk-R25RGPUB.js';
5
+ import '../chunk-H5XTJ7GJ.js';
6
6
  import '../chunk-4FQT6ZAY.js';
7
+ import '../chunk-NUZHC6MM.js';
7
8
  import '../chunk-BZFWDIV6.js';
8
9
  import '../chunk-ODEQTPFM.js';
@@ -1,11 +1,12 @@
1
- export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-PLTCDSTU.js';
1
+ export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-4LRAJXHL.js';
2
2
  import '../chunk-BVWSLXTY.js';
3
- import '../chunk-WKEPORNM.js';
4
- import '../chunk-CCAXYHQS.js';
5
- import '../chunk-VL6CUNSX.js';
3
+ import '../chunk-4ISUIS6F.js';
4
+ import '../chunk-2QZ2VPHR.js';
5
+ import '../chunk-7SDUKCNW.js';
6
6
  import '../chunk-RKKO7QHH.js';
7
7
  import '../chunk-RA2ULG6H.js';
8
8
  import '../chunk-BHHIIK3M.js';
9
9
  import '../chunk-PQADV6P6.js';
10
+ import '../chunk-2YTOOH3A.js';
10
11
  import '../chunk-BZFWDIV6.js';
11
12
  import '../chunk-ODEQTPFM.js';
@@ -1,6 +1,7 @@
1
- import { tabId } from './chunk-VL6CUNSX.js';
1
+ import { tabId } from './chunk-7SDUKCNW.js';
2
2
  import { useRoving, tabStop } from './chunk-RKKO7QHH.js';
3
3
  import { Count } from './chunk-BHHIIK3M.js';
4
+ import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
4
5
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
5
6
  import { cx } from './chunk-ODEQTPFM.js';
6
7
  import { useState, useId } from 'react';
@@ -99,6 +100,7 @@ function SegmentedControl({
99
100
  className: cx(
100
101
  "crewlet-tabs__tab",
101
102
  "crewlet-segmented__option",
103
+ HIT_AREA_CLASS,
102
104
  chosen && "is-active",
103
105
  option.disabled && "is-disabled"
104
106
  ),
@@ -0,0 +1,4 @@
1
+ // src/HitArea/hitArea.ts
2
+ var HIT_AREA_CLASS = "crewlet-hit-area";
3
+
4
+ export { HIT_AREA_CLASS };
@@ -1,7 +1,7 @@
1
1
  import { useTreeState, treeExpandable, treeLevel, treePosInSet, treeSetSize, treeItemAction, treePrevious, treeNext, treeStep } from './chunk-MY374UUD.js';
2
2
  import { LayerNodeBridge } from './chunk-LM3ISVJA.js';
3
3
  import { LayerHost, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
4
- import { focusables } from './chunk-R25RGPUB.js';
4
+ import { focusables } from './chunk-H5XTJ7GJ.js';
5
5
  import { IconButton } from './chunk-4FQT6ZAY.js';
6
6
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,11 +1,11 @@
1
1
  import { Tag } from './chunk-GFV4LJHH.js';
2
- import { useListbox } from './chunk-F73MC7EZ.js';
3
- import { useFocusModality } from './chunk-YSGLEHND.js';
2
+ import { useListbox } from './chunk-7KHM2FZH.js';
4
3
  import { announce } from './chunk-RSAQOKH3.js';
5
- import { isComposing } from './chunk-R25RGPUB.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,4 +1,4 @@
1
- import { SlideStage } from './chunk-NQGPD6NX.js';
1
+ import { SlideStage } from './chunk-RMEBFYL7.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './SlideGrid-FJA33DV4.css';
4
4
  import { EyeOffGlyph } from '@crewlethq/icons/glyphs';
@@ -0,0 +1,3 @@
1
+ import './HitArea-QUOS6ZDJ.css';
2
+ import './Tabs-WIF7457H.css';
3
+ import './SegmentedControl-B7XCUOML.css';
@@ -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';
6
+ import { Input } from './chunk-TYONQSOK.js';
7
7
  import { announce } from './chunk-RSAQOKH3.js';
8
8
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
9
- import { focusables, isComposing } from './chunk-R25RGPUB.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
- import { Modal } from './chunk-XEGZHHRH.js';
2
1
  import { useClipboard } from './chunk-STJ7QBC3.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,12 +1,14 @@
1
- import { Modal } from './chunk-XEGZHHRH.js';
2
- import { useListbox, useHighlightRest } from './chunk-F73MC7EZ.js';
3
- import { Input } from './chunk-IUYUS2SO.js';
1
+ import { Modal } from './chunk-SVGARBDY.js';
2
+ import { useListbox, useHighlightRest } from './chunk-7KHM2FZH.js';
3
+ import { Input } from './chunk-TYONQSOK.js';
4
4
  import { Kbd } from './chunk-SMBKXWML.js';
5
5
  import { Count } from './chunk-BHHIIK3M.js';
6
- import { isComposing } from './chunk-R25RGPUB.js';
6
+ import { isComposing } from './chunk-H5XTJ7GJ.js';
7
+ import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
7
8
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
8
9
  import { cx } from './chunk-ODEQTPFM.js';
9
- import './CommandPalette-7CFGVBND.css';
10
+ import './HitArea-QUOS6ZDJ.css';
11
+ import './CommandPalette-TOZYLWLE.css';
10
12
  import { useId, useMemo, useRef, useEffect, useState } from 'react';
11
13
  import { ChevronLeftGlyph, SearchGlyph } from '@crewlethq/icons/glyphs';
12
14
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -173,7 +175,7 @@ function Palette({
173
175
  type: "button",
174
176
  role: "tab",
175
177
  id: tabId(candidate.id),
176
- className: cx("crewlet-palette__scope", selected && "is-active"),
178
+ className: cx("crewlet-palette__scope", HIT_AREA_CLASS, selected && "is-active"),
177
179
  "aria-selected": selected,
178
180
  "aria-controls": panelId,
179
181
  tabIndex: -1,
@@ -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';
@@ -0,0 +1,29 @@
1
+ import { cx } from './chunk-ODEQTPFM.js';
2
+ import './ArtifactAccess-Y53ZTRFS.css';
3
+ import { BuildingComplexGlyph, UsersGlyph, LockGlyph } from '@crewlethq/icons/glyphs';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ var ARTIFACT_ACCESSES = ["private", "shared", "company"];
7
+ var ACCESS_GLYPHS = {
8
+ private: LockGlyph,
9
+ shared: UsersGlyph,
10
+ company: BuildingComplexGlyph
11
+ };
12
+ var ARTIFACT_ACCESS_LABELS = {
13
+ private: "Private",
14
+ shared: "Shared",
15
+ company: "Company"
16
+ };
17
+ function ArtifactAccessGlyph({ access, size = "sm" }) {
18
+ const Drawn = ACCESS_GLYPHS[access];
19
+ return /* @__PURE__ */ jsx(Drawn, { size });
20
+ }
21
+ function ArtifactAccessLabel({ access, label, title, className }) {
22
+ const word = label ?? ARTIFACT_ACCESS_LABELS[access];
23
+ return /* @__PURE__ */ jsxs("span", { className: cx("crewlet-artifact-access", `crewlet-artifact-access--${access}`, className), title: title ?? word, children: [
24
+ /* @__PURE__ */ jsx("span", { className: "crewlet-artifact-access__glyph", "aria-hidden": "true", children: /* @__PURE__ */ jsx(ArtifactAccessGlyph, { access }) }),
25
+ /* @__PURE__ */ jsx("span", { className: "crewlet-artifact-access__word", children: word })
26
+ ] });
27
+ }
28
+
29
+ export { ARTIFACT_ACCESSES, ARTIFACT_ACCESS_LABELS, ArtifactAccessGlyph, ArtifactAccessLabel };
@@ -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
 
@@ -241,12 +241,22 @@ function afterDrawn(then) {
241
241
  if (frame && typeof cancelAnimationFrame !== "undefined") cancelAnimationFrame(frame);
242
242
  };
243
243
  }
244
+ var PREVIEW_FILL_MAX_CUT = 0.2;
244
245
  function fitTo(size, width, height, fit) {
245
- const k = fit === "contain" && height ? Math.min(size.w / width, size.h / height) : size.w / width;
246
- const h = height ?? size.h / k;
247
- const left = fit === "contain" ? (size.w - width * k) / 2 : 0;
248
- const top = fit === "contain" ? (size.h - h * k) / 2 : 0;
249
- return { width, height: h, transform: `translate(${left}px, ${top}px) scale(${k})` };
246
+ if (!height || fit === "width") {
247
+ const k = size.w / width;
248
+ return { width, height: height ?? size.h / k, transform: `translate(0px, 0px) scale(${k})` };
249
+ }
250
+ const contain = Math.min(size.w / width, size.h / height);
251
+ const cover = Math.max(size.w / width, size.h / height);
252
+ const cut = 1 - contain / cover;
253
+ if (fit === "fill" && cut <= PREVIEW_FILL_MAX_CUT) {
254
+ const left2 = (size.w - width * cover) / 2;
255
+ return { width, height, transform: `translate(${left2}px, 0px) scale(${cover})` };
256
+ }
257
+ const left = (size.w - width * contain) / 2;
258
+ const top = (size.h - height * contain) / 2;
259
+ return { width, height, transform: `translate(${left}px, ${top}px) scale(${contain})` };
250
260
  }
251
261
  function stillOf(live, width, box) {
252
262
  const rect = box.getBoundingClientRect();
@@ -443,4 +453,4 @@ function PreviewScale({ children, width, height, fit = "width" }) {
443
453
  return /* @__PURE__ */ jsx("span", { ref: box, className: "crewlet-preview-scale", children: /* @__PURE__ */ jsx("span", { className: "crewlet-preview-scale__layer", style: layer, children }) });
444
454
  }
445
455
 
446
- export { LIVE_PREVIEW_DWELL_MS, LIVE_PREVIEW_MARGIN, LIVE_PREVIEW_MAX, LIVE_PREVIEW_MAX_FRAMES, LIVE_PREVIEW_RENDER_MS, LIVE_PREVIEW_STILLS_KEPT, LivePreview, LivePreviewBudgetProvider, PreviewScale, createLivePreviewBudget, createLivePreviewStills, immediately, perFrame, useLivePreview };
456
+ export { LIVE_PREVIEW_DWELL_MS, LIVE_PREVIEW_MARGIN, LIVE_PREVIEW_MAX, LIVE_PREVIEW_MAX_FRAMES, LIVE_PREVIEW_RENDER_MS, LIVE_PREVIEW_STILLS_KEPT, LivePreview, LivePreviewBudgetProvider, PREVIEW_FILL_MAX_CUT, PreviewScale, createLivePreviewBudget, createLivePreviewStills, immediately, perFrame, useLivePreview };
@@ -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';