@crewlethq/ui 0.35.1 → 0.37.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 (176) hide show
  1. package/README.md +90 -1
  2. package/dist/AgentHandoffPanel/AgentHandoffPanel.d.ts +99 -0
  3. package/dist/AgentHandoffPanel/index.d.ts +3 -0
  4. package/dist/AgentHandoffPanel/index.js +16 -0
  5. package/dist/AgentHandoffPanel-JWSW62GU.css +151 -0
  6. package/dist/ArrangeFrame/index.js +1 -1
  7. package/dist/{ArrangeFrame-3PLZAG22.css → ArrangeFrame-QXOQTFAH.css} +22 -5
  8. package/dist/ArrangeList/index.js +4 -3
  9. package/dist/ArtifactAccess/ArtifactAccess.d.ts +40 -0
  10. package/dist/ArtifactAccess/index.d.ts +3 -0
  11. package/dist/ArtifactAccess/index.js +2 -0
  12. package/dist/ArtifactAccess-Y53ZTRFS.css +31 -0
  13. package/dist/ArtifactBar/ArtifactBar.d.ts +2 -1
  14. package/dist/ArtifactBar/index.js +2 -2
  15. package/dist/{ArtifactBar-HV5AT4RG.css → ArtifactBar-FWPBBKQ5.css} +8 -0
  16. package/dist/ArtifactCard/ArtifactCard.d.ts +1 -6
  17. package/dist/ArtifactCard/index.d.ts +2 -1
  18. package/dist/ArtifactCard/index.js +4 -3
  19. package/dist/ArtifactCover/index.js +3 -2
  20. package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +16 -7
  21. package/dist/ArtifactKindIllustration/index.js +1 -1
  22. package/dist/{ArtifactKindIllustration-5FPRJQ3P.css → ArtifactKindIllustration-KLFL7KBG.css} +37 -1
  23. package/dist/ArtifactMakeRow/ArtifactMakeRow.d.ts +39 -0
  24. package/dist/ArtifactMakeRow/index.d.ts +4 -0
  25. package/dist/ArtifactMakeRow/index.js +4 -0
  26. package/dist/ArtifactMakeRow-XBA2MPSY.css +167 -0
  27. package/dist/ArtifactNameCell/ArtifactNameCell.d.ts +37 -0
  28. package/dist/ArtifactNameCell/index.d.ts +4 -0
  29. package/dist/ArtifactNameCell/index.js +4 -0
  30. package/dist/ArtifactNameCell-RTVP4LO4.css +104 -0
  31. package/dist/ArtifactPanel/ArtifactPanel.d.ts +8 -1
  32. package/dist/ArtifactPanel/index.js +1 -1
  33. package/dist/{ArtifactPanel-HW3SU7CP.css → ArtifactPanel-KKUUIPEU.css} +9 -0
  34. package/dist/AuthLayout/index.js +2 -2
  35. package/dist/AvatarPicker/index.js +2 -2
  36. package/dist/Canvas/index.js +2 -2
  37. package/dist/CanvasBoard/CanvasBoard.d.ts +27 -13
  38. package/dist/CanvasBoard/index.d.ts +1 -1
  39. package/dist/CanvasBoard/index.js +4 -4
  40. package/dist/{CanvasBoard-5NNSKY6A.css → CanvasBoard-TS4P356F.css} +13 -6
  41. package/dist/CanvasToolbar/index.js +3 -3
  42. package/dist/Card/index.js +1 -1
  43. package/dist/{Card-KJOYHDTJ.css → Card-QOVASQNU.css} +17 -12
  44. package/dist/Checkbox/index.js +3 -2
  45. package/dist/ChoiceButtons/index.js +1 -1
  46. package/dist/{ChoiceButtons-DJ5EOGUA.css → ChoiceButtons-FLIFXFFS.css} +10 -0
  47. package/dist/ChoiceList/index.js +1 -1
  48. package/dist/{ChoiceList-RBL7FNQL.css → ChoiceList-EA2W6MOS.css} +36 -5
  49. package/dist/Combobox/index.js +3 -2
  50. package/dist/CommandPalette/index.js +3 -2
  51. package/dist/CommentThread/index.js +6 -5
  52. package/dist/Composer/Composer.d.ts +4 -0
  53. package/dist/Composer/index.js +3 -2
  54. package/dist/{Composer-ABGJIAIR.css → Composer-PXITWNEK.css} +26 -15
  55. package/dist/ConfirmField/index.js +3 -2
  56. package/dist/DataTable/index.js +4 -3
  57. package/dist/DataView/index.js +7 -6
  58. package/dist/DatasetSource/DatasetSource.d.ts +4 -0
  59. package/dist/DatasetSource/index.js +1 -1
  60. package/dist/{DatasetSource-XFPZBRXL.css → DatasetSource-SMGX4PS5.css} +38 -4
  61. package/dist/DateTimePicker/index.js +2 -1
  62. package/dist/{DateTimePicker-HG2KQXQ6.css → DateTimePicker-2IVTKFV2.css} +15 -2
  63. package/dist/DocTabsEditor/index.js +3 -2
  64. package/dist/Document/Document.d.ts +15 -3
  65. package/dist/Document/index.js +2 -1
  66. package/dist/{Document-JUGCSQ4L.css → Document-YFWTWXJP.css} +34 -2
  67. package/dist/{Editor-BVQHBF7L.js → Editor-HORWMUM3.js} +2 -1
  68. package/dist/FilterChip/index.js +1 -1
  69. package/dist/{FilterChip-EZ4QMW4E.css → FilterChip-VL33P3JL.css} +5 -1
  70. package/dist/Input/index.js +2 -1
  71. package/dist/{Input-GBZSFXLU.css → Input-ABGOFENS.css} +46 -10
  72. package/dist/LayersList/index.js +1 -1
  73. package/dist/{LayersList-NQZEIPZB.css → LayersList-TBNF4XGL.css} +16 -3
  74. package/dist/LinkInterstitial/index.js +2 -2
  75. package/dist/ListInput/index.js +3 -2
  76. package/dist/LivePreview/LivePreview.d.ts +120 -28
  77. package/dist/LivePreview/budget.d.ts +64 -20
  78. package/dist/LivePreview/index.d.ts +6 -4
  79. package/dist/LivePreview/index.js +1 -1
  80. package/dist/LivePreview/stills.d.ts +57 -0
  81. package/dist/LivePreview-BROGKR4N.css +113 -0
  82. package/dist/PresenterView/index.js +2 -2
  83. package/dist/PrincipalPicker/index.js +4 -3
  84. package/dist/RichEditor/index.js +1 -1
  85. package/dist/Select/index.js +2 -1
  86. package/dist/{Select-A54YS5EP.css → Select-W3CHTZXP.css} +18 -2
  87. package/dist/ShareDialog/index.js +3 -2
  88. package/dist/SheetColumnEditor/index.js +6 -5
  89. package/dist/SheetGrid/index.js +3 -3
  90. package/dist/SlideCompare/index.js +2 -2
  91. package/dist/SlideFilmstrip/index.js +2 -2
  92. package/dist/{SlideFilmstrip-4ITZLMO4.css → SlideFilmstrip-PAT7P4OG.css} +26 -7
  93. package/dist/SlideGrid/index.js +2 -2
  94. package/dist/{SlideGrid-S4LTJ4UU.css → SlideGrid-FJA33DV4.css} +11 -1
  95. package/dist/SlideStage/index.js +1 -1
  96. package/dist/{SlideStage-S2FISF4C.css → SlideStage-ZTTEQSS2.css} +4 -2
  97. package/dist/SourceEditor/index.js +2 -1
  98. package/dist/{SourceEditor-G2C3STPX.css → SourceEditor-QAYE2JS6.css} +19 -12
  99. package/dist/Switcher/index.js +4 -3
  100. package/dist/TagsInput/index.js +2 -1
  101. package/dist/{TagsInput-XMXTI5Q4.css → TagsInput-7EGBBXHS.css} +7 -1
  102. package/dist/ThemeGallery/index.js +1 -1
  103. package/dist/{ThemeGallery-HSUKBDWY.css → ThemeGallery-X35Y25EX.css} +26 -5
  104. package/dist/TimeWindowPicker/index.js +4 -3
  105. package/dist/{TimeWindowPicker-T763GLXH.css → TimeWindowPicker-DEFDV77Z.css} +15 -2
  106. package/dist/TreeCanvas/index.js +3 -3
  107. package/dist/VersionTimeline/index.js +2 -2
  108. package/dist/{chunk-V43UVX4H.js → chunk-27GD7LVR.js} +1 -1
  109. package/dist/{chunk-6JVRY5DQ.js → chunk-44WJLPQS.js} +2 -2
  110. package/dist/{chunk-ONL54WMH.js → chunk-46RL3E54.js} +1 -1
  111. package/dist/{chunk-UHJQDFKQ.js → chunk-4ZJLOKSS.js} +1 -1
  112. package/dist/{chunk-ACA27MZH.js → chunk-5QXRI35B.js} +1 -1
  113. package/dist/{chunk-LL5AFXU7.js → chunk-5RT5O4JR.js} +1 -1
  114. package/dist/{chunk-GMU6SQ6B.js → chunk-66NGUD5S.js} +2 -2
  115. package/dist/{chunk-3Y56GQPM.js → chunk-7VAUGG6B.js} +1 -1
  116. package/dist/{chunk-2CQLNML5.js → chunk-AOLCZDZ6.js} +3 -1
  117. package/dist/{chunk-NKZCJRKO.js → chunk-APDKUGSH.js} +2 -2
  118. package/dist/chunk-BGLKLXL3.js +29 -0
  119. package/dist/{chunk-Z6VW6CXX.js → chunk-BIQDJOJZ.js} +1 -1
  120. package/dist/{chunk-YSJC7AZC.js → chunk-BWOIUOO3.js} +1 -1
  121. package/dist/{chunk-PI7HKLIT.js → chunk-D7GNNID2.js} +3 -1
  122. package/dist/chunk-EAKC24BW.js +51 -0
  123. package/dist/{chunk-CCLNGVCM.js → chunk-EARDAJQY.js} +1 -1
  124. package/dist/chunk-EOQFPZEE.js +138 -0
  125. package/dist/{chunk-THROPJZC.js → chunk-F23N4MVU.js} +1 -1
  126. package/dist/{chunk-J6YZ4IYV.js → chunk-FG4O64DV.js} +3 -3
  127. package/dist/{chunk-E35CMI5D.js → chunk-FHHYXZSP.js} +31 -13
  128. package/dist/{chunk-AYB6AYNH.js → chunk-GMLAKNFY.js} +1 -1
  129. package/dist/{chunk-ZB5O3ELS.js → chunk-GRYZ5EP3.js} +4 -2
  130. package/dist/{chunk-QFNWMWWY.js → chunk-GS7ZTHPF.js} +4 -4
  131. package/dist/{chunk-ILAEBSLJ.js → chunk-H5NOLRGH.js} +2 -2
  132. package/dist/{chunk-W3UVOZKL.js → chunk-IPAU6FLH.js} +6 -2
  133. package/dist/{chunk-6QFAK2WV.js → chunk-IUYUS2SO.js} +4 -1
  134. package/dist/{chunk-22CQQDFW.js → chunk-JML75PGJ.js} +1 -1
  135. package/dist/{chunk-AXBRWRGV.js → chunk-JQLS3MZB.js} +1 -1
  136. package/dist/{chunk-FGYET26P.js → chunk-KJW2AS57.js} +1 -1
  137. package/dist/{chunk-QIXMNOBD.js → chunk-KYZMN6I6.js} +2 -2
  138. package/dist/{chunk-73A7D5CE.js → chunk-L4WZSVMT.js} +3 -1
  139. package/dist/{chunk-ULPL26BU.js → chunk-N5SKHIAP.js} +1 -1
  140. package/dist/{chunk-LV4APO72.js → chunk-NQGPD6NX.js} +1 -1
  141. package/dist/{chunk-7UYONN6K.js → chunk-OHA6WSAG.js} +6 -11
  142. package/dist/chunk-P5VGSVWG.js +39 -0
  143. package/dist/chunk-P6WFZDKS.js +111 -0
  144. package/dist/{chunk-CPEPST4S.js → chunk-PJIPUEJ3.js} +1 -1
  145. package/dist/{chunk-QS4ZGTEU.js → chunk-PPFX6GRK.js} +1 -1
  146. package/dist/{chunk-7DZDSSJS.js → chunk-RH2NCQBZ.js} +5 -4
  147. package/dist/{chunk-3VD3G3IL.js → chunk-T5RQGI6O.js} +1 -1
  148. package/dist/{chunk-F2KY4RLI.js → chunk-TVRBQMIX.js} +5 -3
  149. package/dist/{chunk-W7QBBKUE.js → chunk-UBZDYOCA.js} +7 -3
  150. package/dist/{chunk-QEFHYUCY.js → chunk-UWGUKMBK.js} +1 -1
  151. package/dist/{chunk-5YLON2PW.js → chunk-UYZZV4DZ.js} +1 -1
  152. package/dist/{chunk-BQ7AKL2N.js → chunk-VKKUGZ3G.js} +3 -1
  153. package/dist/{chunk-DEJHAOC5.js → chunk-WMXAX6VA.js} +1 -1
  154. package/dist/{chunk-VDPJGP4Q.js → chunk-WX2NIG4G.js} +1 -1
  155. package/dist/chunk-WYKWXRJ4.js +456 -0
  156. package/dist/{chunk-ZU3DUXD2.js → chunk-WZGYIVYH.js} +1 -1
  157. package/dist/{chunk-HUVG2FFT.js → chunk-Y5BD4MTE.js} +4 -2
  158. package/dist/chunk-YSGLEHND.js +56 -0
  159. package/dist/generated/index.d.ts +4 -0
  160. package/dist/generated/index.js +105 -100
  161. package/dist/index.js +105 -100
  162. package/dist/styles.css +1036 -163
  163. package/dist/utils/focusModality.d.ts +41 -0
  164. package/dist/utils/index.d.ts +2 -0
  165. package/dist/utils/index.js +2 -1
  166. package/package.json +3 -3
  167. package/dist/LivePreview-SRO7KHO4.css +0 -65
  168. package/dist/chunk-KF6YGL4B.js +0 -160
  169. package/dist/chunk-TYKQ33CL.js +0 -35
  170. package/dist/{chunk-3P4Y5RX6.js → chunk-4BYHAOHH.js} +1 -1
  171. package/dist/{chunk-KD2IRYCT.js → chunk-5WDXPHEW.js} +1 -1
  172. package/dist/{chunk-OSFA5ROT.js → chunk-FEJANUZK.js} +0 -0
  173. package/dist/{chunk-FJJHD73S.js → chunk-GYBDPCRC.js} +1 -1
  174. package/dist/{chunk-VHZ3AXJD.js → chunk-NQCY44B3.js} +1 -1
  175. package/dist/{chunk-3WCNHYXE.js → chunk-PNNYVN52.js} +0 -0
  176. package/dist/{chunk-FF5OZV77.js → chunk-W3HYWD63.js} +2 -2
@@ -47,10 +47,17 @@
47
47
  */
48
48
  .crewlet-time-window:focus-visible,
49
49
  .crewlet-time-window.is-open {
50
- outline: 1px solid var(--color-focus);
50
+ outline: 2px solid var(--color-focus);
51
51
  outline-offset: -1px;
52
52
  }
53
53
 
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 {
57
+ outline-width: 1px;
58
+ outline-color: var(--color-border-selected);
59
+ }
60
+
54
61
  .crewlet-time-window.is-disabled,
55
62
  .crewlet-time-window:disabled {
56
63
  opacity: 0.55;
@@ -318,10 +325,16 @@ svg.crewlet-time-window__tick {
318
325
  * own boundary (see Input.css), keyed on the box's own input.
319
326
  */
320
327
  .crewlet-time-window__masked:has(.crewlet-time-window__masked-input:focus-visible) {
321
- outline: 1px solid var(--color-focus);
328
+ outline: 2px solid var(--color-focus);
322
329
  outline-offset: -1px;
323
330
  }
324
331
 
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) {
334
+ outline-width: 1px;
335
+ outline-color: var(--color-border-selected);
336
+ }
337
+
325
338
  .crewlet-time-window__masked-input {
326
339
  min-width: 0;
327
340
  /* The `size` attribute the component sets is what holds the width open in
@@ -1,9 +1,9 @@
1
- export { TreeCanvas } from '../chunk-UHJQDFKQ.js';
1
+ export { TreeCanvas } from '../chunk-4ZJLOKSS.js';
2
2
  import '../chunk-MY374UUD.js';
3
- import '../chunk-3P4Y5RX6.js';
3
+ import '../chunk-4BYHAOHH.js';
4
4
  import '../chunk-LM3ISVJA.js';
5
- import '../chunk-SMBKXWML.js';
6
5
  import '../chunk-6ZJ3N7QI.js';
6
+ import '../chunk-SMBKXWML.js';
7
7
  import '../chunk-OMV5W53A.js';
8
8
  import '../chunk-R25RGPUB.js';
9
9
  import '../chunk-OG6CL3EB.js';
@@ -1,10 +1,10 @@
1
- export { VersionTimeline } from '../chunk-VHZ3AXJD.js';
2
- import '../chunk-AUQPBL4O.js';
1
+ export { VersionTimeline } from '../chunk-NQCY44B3.js';
3
2
  import '../chunk-CI3VPIJN.js';
4
3
  import '../chunk-3CZ7XAVY.js';
5
4
  import '../chunk-EUCC37WY.js';
6
5
  import '../chunk-5AQBPHZD.js';
7
6
  import '../chunk-PZKHBB7D.js';
7
+ import '../chunk-AUQPBL4O.js';
8
8
  import '../chunk-OG6CL3EB.js';
9
9
  import '../chunk-BZFWDIV6.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -1,6 +1,6 @@
1
1
  import { Switch } from './chunk-A722MUNR.js';
2
2
  import { useReorder } from './chunk-XJ2QEBMM.js';
3
- import { Checkbox } from './chunk-CPEPST4S.js';
3
+ import { Checkbox } from './chunk-PJIPUEJ3.js';
4
4
  import { IconButton } from './chunk-4FQT6ZAY.js';
5
5
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
- import { Composer } from './chunk-7DZDSSJS.js';
1
+ import { Document } from './chunk-P6WFZDKS.js';
2
2
  import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
3
3
  import { toInstant, RelativeTime, formatExact, toISO } from './chunk-3CZ7XAVY.js';
4
- import { Document } from './chunk-TYKQ33CL.js';
4
+ import { Composer } from './chunk-RH2NCQBZ.js';
5
5
  import { Count } from './chunk-BHHIIK3M.js';
6
6
  import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
7
7
  import { Button } from './chunk-OG6CL3EB.js';
@@ -1,6 +1,6 @@
1
1
  import { useRoving } from './chunk-RKKO7QHH.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './LayersList-NQZEIPZB.css';
3
+ import './LayersList-TBNF4XGL.css';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
6
6
  var LAYERS_LIST_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-3P4Y5RX6.js';
2
+ import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-4BYHAOHH.js';
3
3
  import { focusables } from './chunk-R25RGPUB.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './TreeCanvas-L2XYONWL.css';
@@ -2,7 +2,7 @@ import { CardHeaderSlotContext } from './chunk-AV2DXAEL.js';
2
2
  import { Count } from './chunk-BHHIIK3M.js';
3
3
  import { useHeadingLevel, HeadingLevelProvider, nextHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
- import './Card-KJOYHDTJ.css';
5
+ import './Card-QOVASQNU.css';
6
6
  import { createContext, useId, useState, isValidElement, useRef, useCallback, useMemo, Children, cloneElement, useContext, useEffect, Fragment } from 'react';
7
7
  import { jsx, jsxs } from 'react/jsx-runtime';
8
8
 
@@ -1,4 +1,4 @@
1
- import { SlideStage } from './chunk-LV4APO72.js';
1
+ import { SlideStage } from './chunk-NQGPD6NX.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,9 +1,9 @@
1
1
  import { Modal } from './chunk-XEGZHHRH.js';
2
2
  import { useListbox, useOptionKeys } from './chunk-F73MC7EZ.js';
3
- import { Popover } from './chunk-K3IJQNB7.js';
4
3
  import { KeyChip, highlightMatch } from './chunk-FYTIJM2T.js';
5
- import { Input } from './chunk-6QFAK2WV.js';
4
+ import { Popover } from './chunk-K3IJQNB7.js';
6
5
  import { Skeleton } from './chunk-TEUQWOWZ.js';
6
+ import { Input } from './chunk-IUYUS2SO.js';
7
7
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
8
8
  import { focusables, isComposing } from './chunk-R25RGPUB.js';
9
9
  import { announce } from './chunk-RSAQOKH3.js';
@@ -1,5 +1,5 @@
1
1
  import { Toolbar } from './chunk-PGRPNDWM.js';
2
- import { ShortcutTip } from './chunk-3P4Y5RX6.js';
2
+ import { ShortcutTip } from './chunk-4BYHAOHH.js';
3
3
  import { IconButton } from './chunk-4FQT6ZAY.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './CanvasToolbar-EM5EVZED.css';
@@ -1,10 +1,11 @@
1
1
  import { Tag } from './chunk-GFV4LJHH.js';
2
2
  import { useListbox } from './chunk-F73MC7EZ.js';
3
+ import { useFocusModality } from './chunk-YSGLEHND.js';
3
4
  import { isComposing } from './chunk-R25RGPUB.js';
4
5
  import { announce } from './chunk-RSAQOKH3.js';
5
6
  import { IconButton } from './chunk-4FQT6ZAY.js';
6
7
  import { cx } from './chunk-ODEQTPFM.js';
7
- import './TagsInput-XMXTI5Q4.css';
8
+ import './TagsInput-7EGBBXHS.css';
8
9
  import { forwardRef, useState, useRef, useId, useImperativeHandle, useEffect, useMemo, useLayoutEffect } from 'react';
9
10
  import { CheckGlyph, ChevronLeftGlyph, ChevronRightGlyph } from '@crewlethq/icons/glyphs';
10
11
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -40,6 +41,7 @@ var TagsInput = forwardRef(function TagsInput2({
40
41
  "aria-describedby": describedBy,
41
42
  "aria-invalid": invalid
42
43
  }, ref) {
44
+ useFocusModality();
43
45
  const [draft, setDraft] = useState("");
44
46
  const [open, setOpen] = useState(false);
45
47
  const field = useRef(null);
@@ -1,13 +1,13 @@
1
- import { isApplePlatform, Kbd } from './chunk-SMBKXWML.js';
2
1
  import { Tooltip } from './chunk-6ZJ3N7QI.js';
3
2
  import { SegmentedControl } from './chunk-CCAXYHQS.js';
4
3
  import { ArtifactIcon } from './chunk-ILDNJHRU.js';
4
+ import { isApplePlatform, Kbd } from './chunk-SMBKXWML.js';
5
5
  import { Menu } from './chunk-BUVCV3WI.js';
6
6
  import { Button } from './chunk-OG6CL3EB.js';
7
7
  import { IconButton } from './chunk-4FQT6ZAY.js';
8
8
  import { cx } from './chunk-ODEQTPFM.js';
9
9
  import './ArtifactKinds-CVD3FCYO.css';
10
- import './ArtifactBar-HV5AT4RG.css';
10
+ import './ArtifactBar-FWPBBKQ5.css';
11
11
  import { useId, useState, useRef, useEffect } from 'react';
12
12
  import { ChevronLeftGlyph, EllipsisGlyph, ChevronDownGlyph } from '@crewlethq/icons/glyphs';
13
13
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -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,4 +1,4 @@
1
- import { FormField, Textarea, Input } from './chunk-6QFAK2WV.js';
1
+ import { FormField, Textarea, Input } from './chunk-IUYUS2SO.js';
2
2
  import { Kbd } from './chunk-SMBKXWML.js';
3
3
  import { isComposing } from './chunk-R25RGPUB.js';
4
4
  import { announce } from './chunk-RSAQOKH3.js';
@@ -1,6 +1,6 @@
1
1
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './ChoiceButtons-DJ5EOGUA.css';
3
+ import './ChoiceButtons-FLIFXFFS.css';
4
4
  import { useId } from 'react';
5
5
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
6
6
 
@@ -1,6 +1,7 @@
1
+ import { useFocusModality } from './chunk-YSGLEHND.js';
1
2
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
2
3
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './SourceEditor-G2C3STPX.css';
4
+ import './SourceEditor-QAYE2JS6.css';
4
5
  import { forwardRef, useRef, useId, useState, useImperativeHandle, useLayoutEffect } from 'react';
5
6
  import { jsxs, jsx } from 'react/jsx-runtime';
6
7
 
@@ -37,6 +38,7 @@ var SourceEditor = forwardRef(
37
38
  "aria-describedby": describedBy,
38
39
  ...rest
39
40
  }, ref) {
41
+ useFocusModality();
40
42
  const field = useRef(null);
41
43
  const tabLeaves = useRef(false);
42
44
  const keysId = useId();
@@ -0,0 +1,51 @@
1
+ import { ArtifactKindGlyph } from './chunk-CE2THTQR.js';
2
+ import { VisuallyHidden } from './chunk-BZFWDIV6.js';
3
+ import { cx } from './chunk-ODEQTPFM.js';
4
+ import './ArtifactKinds-CVD3FCYO.css';
5
+ import './ArtifactMakeRow-XBA2MPSY.css';
6
+ import { useId } from 'react';
7
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
+
9
+ function ArtifactMakeRow({
10
+ items,
11
+ "aria-label": ariaLabel,
12
+ "aria-labelledby": ariaLabelledBy,
13
+ className
14
+ }) {
15
+ return /* @__PURE__ */ jsx("div", { className: cx("crewlet-make-row", className), children: /* @__PURE__ */ jsx("ul", { className: "crewlet-make-row__list", "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, children: items.map((item) => /* @__PURE__ */ jsx("li", { className: "crewlet-make-row__cell", children: /* @__PURE__ */ jsx(MakeItem, { item }) }, item.kind)) }) });
16
+ }
17
+ function MakeItem({ item }) {
18
+ const { kind, label, detail, href, disabledReason } = item;
19
+ const detailId = useId();
20
+ const reasonId = useId();
21
+ const off = disabledReason !== void 0 || href === void 0;
22
+ const body = /* @__PURE__ */ jsxs(Fragment, { children: [
23
+ /* @__PURE__ */ jsx("span", { className: cx("crewlet-make-row__mark", `crewlet-kind--${kind}`), "aria-hidden": "true", children: /* @__PURE__ */ jsx(ArtifactKindGlyph, { kind, size: "sm" }) }),
24
+ /* @__PURE__ */ jsxs("span", { className: "crewlet-make-row__words", children: [
25
+ /* @__PURE__ */ jsx("span", { className: "crewlet-make-row__name", children: label }),
26
+ detail ? /* @__PURE__ */ jsx("span", { id: detailId, className: "crewlet-make-row__detail", children: detail }) : null
27
+ ] })
28
+ ] });
29
+ const describedBy = detail ? detailId : void 0;
30
+ if (off) {
31
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
32
+ /* @__PURE__ */ jsx(
33
+ "span",
34
+ {
35
+ role: "link",
36
+ tabIndex: 0,
37
+ "aria-label": label,
38
+ "aria-disabled": "true",
39
+ "aria-describedby": disabledReason ? reasonId : describedBy,
40
+ title: disabledReason,
41
+ className: "crewlet-make-row__item crewlet-make-row__item--disabled",
42
+ children: body
43
+ }
44
+ ),
45
+ disabledReason ? /* @__PURE__ */ jsx(VisuallyHidden, { id: reasonId, children: disabledReason }) : null
46
+ ] });
47
+ }
48
+ return /* @__PURE__ */ jsx("a", { href, "aria-label": label, "aria-describedby": describedBy, className: "crewlet-make-row__item", children: body });
49
+ }
50
+
51
+ export { ArtifactMakeRow };
@@ -1,4 +1,4 @@
1
- import { Select } from './chunk-BQ7AKL2N.js';
1
+ import { Select } from './chunk-VKKUGZ3G.js';
2
2
  import { CopyButton } from './chunk-W46LPU4R.js';
3
3
  import { Modal } from './chunk-XEGZHHRH.js';
4
4
  import { Callout } from './chunk-SZZRIHGT.js';
@@ -0,0 +1,138 @@
1
+ import { Timeline } from './chunk-AUQPBL4O.js';
2
+ import { Section } from './chunk-3TFDQLW3.js';
3
+ import { Disclosure } from './chunk-MICH6QSJ.js';
4
+ import { Composer } from './chunk-RH2NCQBZ.js';
5
+ import { ArtifactPanel } from './chunk-Y5BD4MTE.js';
6
+ import { Button } from './chunk-OG6CL3EB.js';
7
+ import { cx } from './chunk-ODEQTPFM.js';
8
+ import './AgentHandoffPanel-JWSW62GU.css';
9
+ import { useId, useRef, useEffect } from 'react';
10
+ import { jsx, jsxs } from 'react/jsx-runtime';
11
+
12
+ var AGENT_HANDOFF_LABELS = {
13
+ title: "Ask an agent",
14
+ brief: "Brief",
15
+ starters: "Start from",
16
+ agent: "Who builds it",
17
+ carried: "Goes with it",
18
+ task: "The task as it is filed",
19
+ next: "What happens next",
20
+ step: "Step"
21
+ };
22
+ function AgentHandoffPanel({
23
+ onClose,
24
+ icon,
25
+ focusOnOpen,
26
+ intro,
27
+ brief,
28
+ onBriefChange,
29
+ briefLabel,
30
+ briefPlaceholder,
31
+ briefHelper,
32
+ briefMaxLength,
33
+ briefRef,
34
+ starters = [],
35
+ onStarter,
36
+ children,
37
+ agent,
38
+ carried = [],
39
+ task,
40
+ steps = [],
41
+ notice,
42
+ send,
43
+ labels,
44
+ className
45
+ }) {
46
+ const words = { ...AGENT_HANDOFF_LABELS, ...labels };
47
+ const briefId = useId();
48
+ const helperId = useId();
49
+ const held = send.disabledReason !== void 0 || send.busy === true;
50
+ const press = () => {
51
+ if (!held) send.onSend();
52
+ };
53
+ const body = useRef(null);
54
+ const sendNow = useRef(press);
55
+ sendNow.current = press;
56
+ useEffect(() => {
57
+ const root = body.current;
58
+ if (!root) return void 0;
59
+ const doc = root.ownerDocument;
60
+ const onKeyDown = (event) => {
61
+ if (event.defaultPrevented || event.isComposing) return;
62
+ if (event.key !== "Enter" || !(event.metaKey || event.ctrlKey)) return;
63
+ if (!(event.target instanceof Node) || !root.contains(event.target)) return;
64
+ event.preventDefault();
65
+ sendNow.current();
66
+ };
67
+ doc.addEventListener("keydown", onKeyDown);
68
+ return () => doc.removeEventListener("keydown", onKeyDown);
69
+ }, []);
70
+ return /* @__PURE__ */ jsx(
71
+ ArtifactPanel,
72
+ {
73
+ title: words.title,
74
+ icon,
75
+ onClose,
76
+ focusOnOpen,
77
+ className: cx("crewlet-agent-handoff", className),
78
+ footer: /* @__PURE__ */ jsxs("div", { className: "crewlet-agent-handoff__foot", children: [
79
+ send.disabledReason && !send.busy ? /* @__PURE__ */ jsx("p", { className: "crewlet-agent-handoff__reason", children: send.disabledReason }) : null,
80
+ /* @__PURE__ */ jsx(
81
+ Button,
82
+ {
83
+ className: "crewlet-agent-handoff__send",
84
+ variant: "primary",
85
+ block: true,
86
+ leadingIcon: send.media ? /* @__PURE__ */ jsx("span", { className: "crewlet-agent-handoff__media", "aria-hidden": true, children: send.media }) : void 0,
87
+ loading: send.busy,
88
+ disabledReason: send.busy ? void 0 : send.disabledReason,
89
+ onClick: press,
90
+ children: send.label
91
+ }
92
+ )
93
+ ] }),
94
+ children: /* @__PURE__ */ jsxs("div", { ref: body, className: "crewlet-agent-handoff__body", children: [
95
+ intro ? /* @__PURE__ */ jsx("p", { className: "crewlet-agent-handoff__intro", children: intro }) : null,
96
+ /* @__PURE__ */ jsxs("div", { className: "crewlet-agent-handoff__brief", children: [
97
+ /* @__PURE__ */ jsx("label", { className: "crewlet-agent-handoff__label", htmlFor: briefId, children: briefLabel ?? words.brief }),
98
+ /* @__PURE__ */ jsx(
99
+ Composer,
100
+ {
101
+ ref: briefRef,
102
+ id: briefId,
103
+ label: briefLabel ?? words.brief,
104
+ "aria-describedby": briefHelper ? helperId : void 0,
105
+ value: brief,
106
+ onChange: onBriefChange,
107
+ onSubmit: press,
108
+ placeholder: briefPlaceholder,
109
+ maxLength: briefMaxLength,
110
+ rows: 4
111
+ }
112
+ ),
113
+ briefHelper ? /* @__PURE__ */ jsx("p", { id: helperId, className: "crewlet-agent-handoff__helper", children: briefHelper }) : null,
114
+ starters.length > 0 && onStarter && brief.trim() === "" ? /* @__PURE__ */ jsx("div", { className: "crewlet-agent-handoff__starters", role: "group", "aria-label": words.starters, children: starters.map((s) => /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", onClick: () => onStarter(s.key), children: s.label }, s.key)) }) : null
115
+ ] }),
116
+ children,
117
+ /* @__PURE__ */ jsx(Section, { title: words.agent, className: "crewlet-agent-handoff__section", children: agent }),
118
+ carried.length > 0 || task ? /* @__PURE__ */ jsxs(Section, { title: words.carried, className: "crewlet-agent-handoff__section", children: [
119
+ carried.length > 0 ? /* @__PURE__ */ jsx("ul", { className: "crewlet-agent-handoff__carried", children: carried.map((item) => /* @__PURE__ */ jsxs("li", { className: "crewlet-agent-handoff__item", children: [
120
+ item.icon ? /* @__PURE__ */ jsx("span", { className: "crewlet-agent-handoff__item-icon", "aria-hidden": true, children: item.icon }) : null,
121
+ /* @__PURE__ */ jsxs("span", { className: "crewlet-agent-handoff__item-words", children: [
122
+ /* @__PURE__ */ jsx("span", { className: "crewlet-agent-handoff__item-label", children: item.label }),
123
+ item.detail ? /* @__PURE__ */ jsx("span", { className: "crewlet-agent-handoff__item-detail", children: item.detail }) : null
124
+ ] })
125
+ ] }, item.key)) }) : null,
126
+ task ? /* @__PURE__ */ jsx(Disclosure, { title: words.task, size: "compact", headingLevel: "none", lazy: true, children: /* @__PURE__ */ jsxs("div", { className: "crewlet-agent-handoff__task", children: [
127
+ /* @__PURE__ */ jsx("p", { className: "crewlet-agent-handoff__task-title", children: task.title }),
128
+ /* @__PURE__ */ jsx("pre", { className: "crewlet-agent-handoff__task-body", children: task.body })
129
+ ] }) }) : null
130
+ ] }) : null,
131
+ steps.length > 0 ? /* @__PURE__ */ jsx(Section, { title: words.next, className: "crewlet-agent-handoff__section", children: /* @__PURE__ */ jsx(Timeline, { itemLabel: words.step, children: steps.map((step, i) => /* @__PURE__ */ jsx(Timeline.Item, { children: step }, i)) }) }) : null,
132
+ notice
133
+ ] })
134
+ }
135
+ );
136
+ }
137
+
138
+ export { AGENT_HANDOFF_LABELS, AgentHandoffPanel };
@@ -1,5 +1,5 @@
1
1
  import { SlideNav } from './chunk-6VOS2GMB.js';
2
- import { SlideStage, SLIDE_WIDTH, SLIDE_HEIGHT } from './chunk-LV4APO72.js';
2
+ import { SlideStage, SLIDE_WIDTH, SLIDE_HEIGHT } from './chunk-NQGPD6NX.js';
3
3
  import { Eyebrow } from './chunk-RK4XPHVG.js';
4
4
  import { Button } from './chunk-OG6CL3EB.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,9 +1,9 @@
1
- import { Select } from './chunk-BQ7AKL2N.js';
1
+ import { Select } from './chunk-VKKUGZ3G.js';
2
2
  import { SHEET_LABELS, SHEET_COLUMN_TYPES, optionHue, retypeColumn } from './chunk-LFSIKGRQ.js';
3
3
  import { HueSwatch } from './chunk-SUXP4OBT.js';
4
4
  import { NODE_HUES, NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
5
- import { Checkbox } from './chunk-CPEPST4S.js';
6
- import { FormField, Input } from './chunk-6QFAK2WV.js';
5
+ import { Checkbox } from './chunk-PJIPUEJ3.js';
6
+ import { FormField, Input } from './chunk-IUYUS2SO.js';
7
7
  import { Kbd } from './chunk-SMBKXWML.js';
8
8
  import { Menu } from './chunk-BUVCV3WI.js';
9
9
  import { Button } from './chunk-OG6CL3EB.js';
@@ -1,9 +1,9 @@
1
1
  import { Note } from './chunk-5SZGKSGL.js';
2
- import { CanvasToolbar, toolForKey } from './chunk-3Y56GQPM.js';
3
- import { IDENTITY_VIEW, Canvas } from './chunk-3P4Y5RX6.js';
2
+ import { CanvasToolbar, toolForKey } from './chunk-7VAUGG6B.js';
3
+ import { IDENTITY_VIEW, Canvas } from './chunk-4BYHAOHH.js';
4
4
  import { IconButton } from './chunk-4FQT6ZAY.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
- import './CanvasBoard-5NNSKY6A.css';
6
+ import './CanvasBoard-TS4P356F.css';
7
7
  import { useState, useRef, useImperativeHandle, useCallback, useMemo, useEffect } from 'react';
8
8
  import { MaximizeGlyph, PencilGlyph, TrashGlyph, MousePointer2Glyph, HandGlyph, FrameGlyph, TypeGlyph, StickyNoteGlyph } from '@crewlethq/icons/glyphs';
9
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -207,12 +207,23 @@ function useFrameGestures(zoom, minSide, maxSide, commit) {
207
207
  }
208
208
  var sameSelection = (a, b) => a === b || a !== null && b !== null && a.kind === b.kind && a.id === b.id;
209
209
  function boardRoom(width, height) {
210
- const title = width >= BOARD_TITLE_MIN_WIDTH;
211
- if (width >= PLACEHOLDER_FULL.width && height >= PLACEHOLDER_FULL.height) return { title, lines: 2 };
212
- if (width >= PLACEHOLDER_SIZE.width && height >= PLACEHOLDER_SIZE.height) return { title, lines: 1 };
213
- return { title, lines: 0 };
210
+ if (width >= PLACEHOLDER_FULL.width && height >= PLACEHOLDER_FULL.height) return { lines: 2 };
211
+ if (width >= PLACEHOLDER_SIZE.width && height >= PLACEHOLDER_SIZE.height) return { lines: 1 };
212
+ return { lines: 0 };
214
213
  }
215
- var BOARD_TITLE_MIN_WIDTH = 40;
214
+ function boardName(title, position, room) {
215
+ const letters = Array.from(title).length;
216
+ if (room >= (Math.min(letters, BOARD_NAME_MIN_CHARS) + 1) * NAME_GLYPH_PX) {
217
+ return { text: title, whole: room >= letters * NAME_GLYPH_PX };
218
+ }
219
+ const number = String(position);
220
+ if (room >= number.length * NAME_GLYPH_PX) return { text: number, whole: false };
221
+ return null;
222
+ }
223
+ var BOARD_NAME_MIN_CHARS = 3;
224
+ var NAME_GLYPH_PX = 9;
225
+ var HANDLE_END = 9;
226
+ var OPEN_CONTROL = 30;
216
227
  var PLACEHOLDER_SIZE = { width: 96, height: 32 };
217
228
  var PLACEHOLDER_FULL = { width: 200, height: 64 };
218
229
  var TYPING = "input, textarea, select, [contenteditable='true']";
@@ -412,16 +423,21 @@ function CanvasBoard({
412
423
  },
413
424
  ref: canvas,
414
425
  children: /* @__PURE__ */ jsxs("div", { className: "crewlet-canvas-board__layer", style: zoomVar, children: [
415
- drawnBoards.map((b) => {
426
+ drawnBoards.map((b, index) => {
416
427
  const isLive = live.has(b.id);
417
428
  const isActive = !editable && active === b.id && isLive;
418
429
  const chosen = isSelected("board", b.id);
419
430
  const room = boardRoom(b.w * view.k, b.h * view.k);
431
+ const name = boardName(
432
+ b.title,
433
+ index + 1,
434
+ b.w * view.k - (editable ? HANDLE_END : 0) - (onOpen ? OPEN_CONTROL : 0)
435
+ );
420
436
  return /* @__PURE__ */ jsxs(
421
437
  "section",
422
438
  {
423
439
  className: "crewlet-canvas-board__board",
424
- "data-untitled": !room.title || void 0,
440
+ "data-untitled": !name || void 0,
425
441
  "data-live": isLive || void 0,
426
442
  "data-active": isActive || void 0,
427
443
  "data-selected": chosen || void 0,
@@ -436,9 +452,10 @@ function CanvasBoard({
436
452
  className: "crewlet-canvas-board__title crewlet-canvas-board__handle",
437
453
  "aria-label": text.move(b.title),
438
454
  "aria-pressed": chosen,
455
+ title: name?.whole === false ? b.title : void 0,
439
456
  onFocus: () => setSelected({ kind: "board", id: b.id }),
440
457
  ...boardGestures.handle(b.id, "move", b),
441
- children: b.title
458
+ children: name?.text ?? b.title
442
459
  }
443
460
  ) : (
444
461
  // The name selects its board, as a press on the board
@@ -449,8 +466,9 @@ function CanvasBoard({
449
466
  "span",
450
467
  {
451
468
  className: "crewlet-canvas-board__title",
469
+ title: name?.whole === false ? b.title : void 0,
452
470
  onClick: () => setSelected({ kind: "board", id: b.id }),
453
- children: b.title
471
+ children: name?.text ?? b.title
454
472
  }
455
473
  )
456
474
  ),
@@ -680,4 +698,4 @@ function NoteView({
680
698
  return /* @__PURE__ */ jsx("div", { className: "crewlet-canvas-board__note", "data-kind": "title", style: frame, ...paper, children: body });
681
699
  }
682
700
 
683
- export { BOARD_TITLE_MIN_WIDTH, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardRoom, liveBoards, titleSize };
701
+ export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize };
@@ -1,4 +1,4 @@
1
- import { Combobox } from './chunk-QS4ZGTEU.js';
1
+ import { Combobox } from './chunk-PPFX6GRK.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';
@@ -2,7 +2,7 @@ import { Tag } from './chunk-GFV4LJHH.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 './DatasetSource-XFPZBRXL.css';
5
+ import './DatasetSource-SMGX4PS5.css';
6
6
  import { useId, Children, isValidElement } from 'react';
7
7
  import { ClockGlyph } from '@crewlethq/icons/glyphs';
8
8
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
@@ -40,6 +40,7 @@ function DatasetSource({
40
40
  const text = { ...LABELS, ...labels, kinds: { ...LABELS.kinds, ...labels?.kinds } };
41
41
  const titleId = useId();
42
42
  const blocked = status === "refused" || status === "failed";
43
+ const open = selected && children !== void 0 && children !== null && children !== false;
43
44
  const state = status === "loading" ? /* @__PURE__ */ jsx("span", { className: "crewlet-dataset-source__state", children: text.loading }) : blocked ? /* @__PURE__ */ jsx("span", { className: "crewlet-dataset-source__state crewlet-dataset-source__state--blocked", children: detail ?? (status === "refused" ? text.refused : text.failed) }) : status === "live" ? /* @__PURE__ */ jsx("span", { className: "crewlet-dataset-source__state", children: text.live }) : asOf !== void 0 && asOf !== null ? /* @__PURE__ */ jsxs("span", { className: "crewlet-dataset-source__state", children: [
44
45
  text.asOf,
45
46
  " ",
@@ -87,12 +88,13 @@ function DatasetSource({
87
88
  "crewlet-dataset-source",
88
89
  `crewlet-dataset-source--${status}`,
89
90
  selected && "crewlet-dataset-source--selected",
91
+ open && "crewlet-dataset-source--open",
90
92
  className
91
93
  ),
92
94
  "aria-busy": status === "loading" || void 0,
93
95
  children: [
94
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 }),
95
- selected && children ? /* @__PURE__ */ jsx("div", { className: "crewlet-dataset-source__preview", role: "group", "aria-labelledby": titleId, children }) : null
97
+ open ? /* @__PURE__ */ jsx("div", { className: "crewlet-dataset-source__preview", role: "group", "aria-labelledby": titleId, children }) : null
96
98
  ]
97
99
  }
98
100
  );
@@ -1,12 +1,12 @@
1
1
  import { PageHeader } from './chunk-HOXGBLEY.js';
2
- import { DataTable } from './chunk-22CQQDFW.js';
3
- import { DateTimePicker } from './chunk-73A7D5CE.js';
2
+ import { DataTable } from './chunk-JML75PGJ.js';
3
+ import { DateTimePicker } from './chunk-L4WZSVMT.js';
4
4
  import { useListbox, useOptionKeys } from './chunk-F73MC7EZ.js';
5
5
  import { Toolbar } from './chunk-PGRPNDWM.js';
6
6
  import { Popover } from './chunk-K3IJQNB7.js';
7
- import { Input } from './chunk-6QFAK2WV.js';
8
- import { Kbd } from './chunk-SMBKXWML.js';
9
7
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
8
+ import { Input } from './chunk-IUYUS2SO.js';
9
+ import { Kbd } from './chunk-SMBKXWML.js';
10
10
  import { Count } from './chunk-BHHIIK3M.js';
11
11
  import { Menu } from './chunk-BUVCV3WI.js';
12
12
  import { Button } from './chunk-OG6CL3EB.js';
@@ -1,6 +1,6 @@
1
- import { SlideStage } from './chunk-LV4APO72.js';
1
+ import { SlideStage } from './chunk-NQGPD6NX.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './SlideGrid-S4LTJ4UU.css';
3
+ import './SlideGrid-FJA33DV4.css';
4
4
  import { EyeOffGlyph } from '@crewlethq/icons/glyphs';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
6