@crewlethq/ui 0.82.0 → 0.83.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 (139) hide show
  1. package/README.md +29 -1
  2. package/dist/AppShell/AccountRow.d.ts +6 -1
  3. package/dist/AppShell/AppShell.d.ts +15 -6
  4. package/dist/AppShell/index.d.ts +1 -1
  5. package/dist/AppShell/index.js +8 -5
  6. package/dist/AppShell/railMotion.d.ts +60 -0
  7. package/dist/AppShell/railShape.d.ts +5 -0
  8. package/dist/{AppShell-F7RID4P4.css → AppShell-U7D2MUUF.css} +177 -56
  9. package/dist/ArrangeList/index.js +3 -2
  10. package/dist/ArtifactBar/index.js +7 -5
  11. package/dist/ArtifactCard/index.js +2 -2
  12. package/dist/AuthLayout/index.js +3 -3
  13. package/dist/AvatarPicker/index.js +7 -6
  14. package/dist/BrandLockup/index.js +2 -2
  15. package/dist/Canvas/index.js +4 -2
  16. package/dist/CanvasBoard/index.js +6 -4
  17. package/dist/CanvasToolbar/index.js +5 -3
  18. package/dist/ChangeMark/index.js +4 -2
  19. package/dist/ChatThread/index.js +2 -2
  20. package/dist/CommandPalette/index.js +3 -2
  21. package/dist/CompactNav/index.js +2 -1
  22. package/dist/ContrastHelp/index.js +3 -2
  23. package/dist/DataGrid/index.js +2 -2
  24. package/dist/DataTable/index.js +4 -3
  25. package/dist/DataView/index.js +7 -6
  26. package/dist/DateTimePicker/index.js +3 -2
  27. package/dist/DeepWorkCard/index.js +2 -2
  28. package/dist/DocTabsEditor/index.js +5 -3
  29. package/dist/DockColumn/DockColumn.d.ts +68 -0
  30. package/dist/DockColumn/index.d.ts +3 -0
  31. package/dist/DockColumn/index.js +6 -0
  32. package/dist/DockColumn-SMJCXHS4.css +61 -0
  33. package/dist/{Editor-7EQWP3RN.js → Editor-5D5Z3LBQ.js} +3 -2
  34. package/dist/EmojiPicker/index.js +5 -3
  35. package/dist/FactList/index.js +4 -2
  36. package/dist/HuePicker/index.js +5 -4
  37. package/dist/LinkInterstitial/index.js +3 -2
  38. package/dist/ListInput/index.js +3 -2
  39. package/dist/MarkdownEditor/index.js +5 -4
  40. package/dist/MediaMatch/index.d.ts +1 -1
  41. package/dist/MediaMatch/index.js +1 -1
  42. package/dist/MediaMatch/useMediaMatch.d.ts +14 -0
  43. package/dist/Menu/index.js +2 -1
  44. package/dist/MergeConflicts/index.js +5 -4
  45. package/dist/MessageActions/index.js +6 -4
  46. package/dist/Modal/index.js +2 -1
  47. package/dist/OpenInAppCard/index.js +2 -2
  48. package/dist/Outline/index.js +2 -1
  49. package/dist/Popover/index.js +2 -1
  50. package/dist/Presence/index.d.ts +2 -0
  51. package/dist/Presence/index.js +4 -0
  52. package/dist/Presence/usePresence.d.ts +109 -0
  53. package/dist/ReactionBar/index.js +6 -4
  54. package/dist/RecordChip/index.js +3 -2
  55. package/dist/Reorder/index.js +2 -1
  56. package/dist/RichEditor/index.js +1 -1
  57. package/dist/SegmentedControl/index.js +4 -3
  58. package/dist/SetupWizard/index.js +2 -2
  59. package/dist/ShareDialog/index.js +4 -3
  60. package/dist/SheetColumnEditor/index.js +6 -5
  61. package/dist/SheetGrid/index.js +8 -6
  62. package/dist/SlideFilmstrip/index.js +5 -3
  63. package/dist/Switcher/index.js +5 -4
  64. package/dist/Tabs/index.js +3 -2
  65. package/dist/ThemeSwitcher/index.js +5 -4
  66. package/dist/TimeRangePicker/index.js +6 -5
  67. package/dist/TimeWindowPicker/index.js +3 -2
  68. package/dist/Tooltip/index.js +3 -1
  69. package/dist/TreeCanvas/index.js +6 -3
  70. package/dist/VersionCompare/index.js +5 -4
  71. package/dist/{chunk-KJR5X4II.js → chunk-22CU7V4J.js} +2 -2
  72. package/dist/{chunk-4RYELYWG.js → chunk-2SVQBQAD.js} +2 -2
  73. package/dist/{chunk-HQFOZJQ4.js → chunk-46FIBJCV.js} +4 -4
  74. package/dist/{chunk-LQRN2XZK.js → chunk-4DEKONVJ.js} +2 -2
  75. package/dist/chunk-5JPOFAVN.js +58 -0
  76. package/dist/{chunk-C7UHDM7Y.js → chunk-5V6GW6HK.js} +1 -1
  77. package/dist/{chunk-XGLMPPDW.js → chunk-7K6LVM5I.js} +1 -1
  78. package/dist/{chunk-FKAJBN6G.js → chunk-7M7WKYOV.js} +3 -3
  79. package/dist/{chunk-A5YKNRG6.js → chunk-7QCSISHM.js} +2 -1
  80. package/dist/{chunk-3QQIGMY3.js → chunk-7ZSEUO5Q.js} +6 -30
  81. package/dist/{chunk-57BFL323.js → chunk-ABRWL5FJ.js} +1 -1
  82. package/dist/{chunk-HFOTRZFU.js → chunk-AQNP3KQU.js} +2 -2
  83. package/dist/{chunk-N2T7Y5KR.js → chunk-AUSFKGKL.js} +1 -1
  84. package/dist/{chunk-GZVAZ3LL.js → chunk-AZYE7NR4.js} +1 -1
  85. package/dist/{chunk-6IOQWMYJ.js → chunk-BN5FEJL5.js} +1 -1
  86. package/dist/{chunk-MPVMB2DV.js → chunk-BVML4UVB.js} +3 -2
  87. package/dist/{chunk-XY4O2XMR.js → chunk-BXGBGYKH.js} +3 -3
  88. package/dist/{chunk-OAHRMR4U.js → chunk-C42XW5YP.js} +1 -1
  89. package/dist/{chunk-HA2PL7PA.js → chunk-DRFOTWJE.js} +1 -1
  90. package/dist/{chunk-SM4P2SHB.js → chunk-EC6EUIAD.js} +7 -4
  91. package/dist/{chunk-AMUXSJ2A.js → chunk-FPU7AA3X.js} +4 -15
  92. package/dist/{chunk-KLAVEJIO.js → chunk-GLKQHN7G.js} +1 -1
  93. package/dist/chunk-HTS5RJ7S.js +6 -0
  94. package/dist/{chunk-GP5TNTZH.js → chunk-ICE3D63E.js} +3 -5
  95. package/dist/{chunk-ISQANI6Q.js → chunk-JLOESTT2.js} +2 -1
  96. package/dist/{chunk-C75WZMXG.js → chunk-K6RWEQ6P.js} +1 -1
  97. package/dist/{chunk-GVPUCEWH.js → chunk-KXWJJWBD.js} +1 -1
  98. package/dist/chunk-L72URIHR.js +36 -0
  99. package/dist/{chunk-2TOGGCDM.js → chunk-LT44RL62.js} +2 -2
  100. package/dist/{chunk-HCUECVZ3.js → chunk-MVKUE4FI.js} +1 -1
  101. package/dist/{chunk-6YBBQAEM.js → chunk-MYAARF4Z.js} +1 -1
  102. package/dist/{chunk-SEKO6P3Y.js → chunk-NCUSI4ZU.js} +1 -1
  103. package/dist/chunk-PCAT2EFB.js +104 -0
  104. package/dist/{chunk-T4IEESXN.js → chunk-PGBKZSSQ.js} +87 -24
  105. package/dist/{chunk-TGCGLKD4.js → chunk-RBQRTGXX.js} +1 -1
  106. package/dist/{chunk-B3X4DHRB.js → chunk-RDIQB5ZE.js} +2 -2
  107. package/dist/{chunk-T7WESRZF.js → chunk-RO5JU6SN.js} +2 -2
  108. package/dist/{chunk-IUWP2LSE.js → chunk-SGMWLUYQ.js} +2 -2
  109. package/dist/{chunk-LSOR77RZ.js → chunk-SHH7UD5U.js} +1 -1
  110. package/dist/{chunk-JV6JM6W6.js → chunk-SNQ7PH3D.js} +1 -1
  111. package/dist/{chunk-MPYRC3GO.js → chunk-SPNTUQBV.js} +2 -2
  112. package/dist/{chunk-YM77TZ7Q.js → chunk-T3S3D4FC.js} +1 -1
  113. package/dist/{chunk-YOJAGKTS.js → chunk-TGGYSQRD.js} +3 -4
  114. package/dist/{chunk-2KJCUCVE.js → chunk-TQKQRS2J.js} +2 -2
  115. package/dist/{chunk-ONNXUS5Y.js → chunk-VB3FVKNI.js} +1 -1
  116. package/dist/{chunk-JHQGNFN3.js → chunk-VONEKR3J.js} +2 -2
  117. package/dist/{chunk-P6F3PE4V.js → chunk-WANKINXG.js} +2 -2
  118. package/dist/{chunk-PXLS6JKL.js → chunk-WMO722J2.js} +1 -1
  119. package/dist/{chunk-SYVQXMLO.js → chunk-XRWHDW6F.js} +4 -4
  120. package/dist/{chunk-WT3B76MG.js → chunk-XTJHMP3W.js} +1 -1
  121. package/dist/{chunk-RTPQDNW3.js → chunk-YJQXESOJ.js} +5 -1
  122. package/dist/{chunk-VGOWSOUA.js → chunk-YXKSUILG.js} +1 -1
  123. package/dist/{chunk-G6ZFSUIH.js → chunk-ZJVLGYE3.js} +2 -2
  124. package/dist/{chunk-BSAU7QRW.js → chunk-ZPTKAYJK.js} +1 -1
  125. package/dist/{chunk-XXDB6KPV.js → chunk-ZXXZESCD.js} +3 -4
  126. package/dist/generated/index.d.ts +2 -0
  127. package/dist/generated/index.js +97 -93
  128. package/dist/index.js +97 -93
  129. package/dist/styles.css +242 -57
  130. package/dist/utils/composedRef.d.ts +39 -0
  131. package/dist/utils/index.d.ts +2 -0
  132. package/dist/utils/index.js +3 -1
  133. package/dist/utils/tokenMs.d.ts +6 -0
  134. package/package.json +5 -5
  135. package/dist/{chunk-IYI6HWKN.js → chunk-CV2LU2T2.js} +1 -1
  136. package/dist/{chunk-FVZPSTL2.js → chunk-G4EHZHKM.js} +1 -1
  137. package/dist/{chunk-FEJANUZK.js → chunk-KBSD476L.js} +0 -0
  138. package/dist/{chunk-2H6YDUR5.js → chunk-QM3432PH.js} +1 -1
  139. /package/dist/{chunk-KLWWNV25.js → chunk-REEZQCML.js} +0 -0
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Keeps something drawn while it leaves, and says when it has arrived.
3
+ *
4
+ * A SURFACE THAT EASES SHUT HAS TO STAY DRAWN UNTIL IT IS SHUT. Unmounted the
5
+ * moment it is closed, a column that eases its width to nothing eases an
6
+ * empty box, and the reader sees its content vanish before the motion they
7
+ * asked for has begun. So the content is kept for as long as the motion runs,
8
+ * and INERT all the while: it is on its way out, and nothing in it may take
9
+ * focus, a press or a screen reader's attention.
10
+ *
11
+ * THE STYLESHEET SAYS HOW LONG. The wait is for the motion actually running
12
+ * (`getAnimations()`), whatever the stylesheet set it to, rather than for a
13
+ * duration written again here: a copy of the duration is a second number that
14
+ * drifts from the first. A motion replaced mid way (a transition retargeted,
15
+ * or reversed by a reopen) is waited out in its turn.
16
+ *
17
+ * AND IT WAITS ONLY FOR ITS OWN MOTION (`MotionOwnership`): the transitions on
18
+ * the element ITSELF, and the keyframes the surface names, wherever they run
19
+ * under it. Never a motion something else inside it happens to run (a meter
20
+ * filling, a badge arriving), which would hold a rail inert for as long as
21
+ * the meter took; never a paused one, which would hold it for ever; never an
22
+ * endless one (a pulse). And never longer than the motion's own remaining
23
+ * time and a margin, so a tab hidden mid motion, where a browser may not
24
+ * report the end until it is seen again, still settles.
25
+ *
26
+ * NOTHING WAITS WHERE NOTHING MOVES. Under `prefers-reduced-motion: reduce`,
27
+ * where no motion of its own runs, and where the Web Animations API is
28
+ * missing, the change goes straight through in the same commit, before any
29
+ * paint.
30
+ */
31
+ import { type RefObject } from 'react';
32
+ /** Which motions are a surface's own: the ones its presence waits for. */
33
+ export interface MotionOwnership {
34
+ /**
35
+ * The transitions on the element ITSELF, by property: `width`, for a
36
+ * column that eases its width. Left out, any transition on the element
37
+ * itself. A transition on an element inside it is never its own.
38
+ */
39
+ transitions?: readonly string[] | undefined;
40
+ /**
41
+ * The keyframes that are part of the motion, by name, wherever they run
42
+ * under the element: a rail's words fading in while its edge moves. Left
43
+ * out, none.
44
+ */
45
+ animations?: readonly string[] | undefined;
46
+ }
47
+ /**
48
+ * The motions of its own running on an element that will end (see
49
+ * `MotionOwnership`): playing, not paused, not endless, and its own.
50
+ */
51
+ export declare function runningMotion(element: Element, owned?: MotionOwnership): Animation[];
52
+ /**
53
+ * Calls `done` once the element's own motion has ended: AT ONCE,
54
+ * synchronously, where none runs, so a caller in a layout effect draws the
55
+ * outcome before the first paint, and never later than that motion's
56
+ * remaining time and a margin. Returns the cancel, which a caller runs when
57
+ * the wait no longer matters (the thing was opened again).
58
+ *
59
+ * A motion cancelled rather than finished (retargeted, reversed) counts as
60
+ * ended, and whatever of its own runs in its place is waited for in turn.
61
+ */
62
+ export declare function afterMotion(element: Element | null, done: () => void, owned?: MotionOwnership): () => void;
63
+ /**
64
+ * Takes focus out of something that is about to turn inert, as it starts to
65
+ * leave: to `target` where the host names one (the control that brings it
66
+ * back), and otherwise off the element that held it.
67
+ *
68
+ * FOCUS IS NEVER LEFT INSIDE WHAT IS LEAVING. An inert element cannot hold
69
+ * focus, and a browser that blurs it hands the reader to the top of the
70
+ * document, with no telling where Tab goes next; one that does not leaves a
71
+ * keyboard reader typing into a panel that takes nothing. Does nothing when
72
+ * focus is elsewhere: a reader who has moved on is not pulled back.
73
+ */
74
+ export declare function releaseFocus(container: Element | null, target?: HTMLElement | null): void;
75
+ export interface PresenceOptions extends MotionOwnership {
76
+ /**
77
+ * Makes this change instant: the host knows it is not one the reader made
78
+ * (a window resized across a breakpoint), so nothing waits for it.
79
+ */
80
+ instant?: boolean | undefined;
81
+ }
82
+ export interface Presence {
83
+ /** Whether to draw it: while it is shown, and while it leaves. */
84
+ present: boolean;
85
+ /** Drawn only to finish leaving: make it `inert`. */
86
+ leaving: boolean;
87
+ /**
88
+ * Shown again (never on the first draw) and its motion still running: the
89
+ * window a stylesheet scopes an entrance to, so the first paint of a page
90
+ * plays none.
91
+ */
92
+ entering: boolean;
93
+ /**
94
+ * Shown again BEFORE IT HAD LEFT: entering, from wherever its exit had
95
+ * reached rather than from nothing, so a stylesheet turns the exit back
96
+ * instead of playing an entrance over it.
97
+ */
98
+ returning: boolean;
99
+ }
100
+ /**
101
+ * Whether to draw something that is `shown`, and whether it is on its way in
102
+ * or out, waiting on the motion running on `motion`'s element.
103
+ *
104
+ * The element to wait on is the one the stylesheet moves: a column easing its
105
+ * width, or a rail. It can be the same element the content stands in or an
106
+ * ancestor of it; it is never the content itself, which is gone once it has
107
+ * left.
108
+ */
109
+ export declare function usePresence(shown: boolean, motion: RefObject<Element | null>, { transitions, animations, instant }?: PresenceOptions): Presence;
@@ -1,8 +1,10 @@
1
- export { AddReaction, REACTION_BAR_LABELS, ReactionBar, reactionWho } from '../chunk-LQRN2XZK.js';
1
+ export { AddReaction, REACTION_BAR_LABELS, ReactionBar, reactionWho } from '../chunk-4DEKONVJ.js';
2
2
  import '../chunk-TDFLCUBE.js';
3
- import '../chunk-MPYRC3GO.js';
4
- import '../chunk-SM4P2SHB.js';
5
- import '../chunk-3QQIGMY3.js';
3
+ import '../chunk-SPNTUQBV.js';
4
+ import '../chunk-EC6EUIAD.js';
5
+ import '../chunk-7ZSEUO5Q.js';
6
+ import '../chunk-HTS5RJ7S.js';
7
+ import '../chunk-L72URIHR.js';
6
8
  import '../chunk-O7N6W52M.js';
7
9
  import '../chunk-PGCLHYVP.js';
8
10
  import '../chunk-OMV5W53A.js';
@@ -1,5 +1,6 @@
1
- export { RecordChip, RecordChipList } from '../chunk-BSAU7QRW.js';
2
- import '../chunk-SM4P2SHB.js';
1
+ export { RecordChip, RecordChipList } from '../chunk-ZPTKAYJK.js';
2
+ import '../chunk-EC6EUIAD.js';
3
+ import '../chunk-L72URIHR.js';
3
4
  import '../chunk-OMV5W53A.js';
4
5
  import '../chunk-TUEM2XIW.js';
5
6
  import '../chunk-4ITETIGZ.js';
@@ -1,4 +1,5 @@
1
- export { DEFAULT_REORDER_LABELS, moveKey, useReorder, useReorderLists } from '../chunk-MPVMB2DV.js';
1
+ export { DEFAULT_REORDER_LABELS, moveKey, useReorder, useReorderLists } from '../chunk-BVML4UVB.js';
2
+ import '../chunk-YJQXESOJ.js';
2
3
  import '../chunk-2G355KDJ.js';
3
4
  import '../chunk-UT6CW3C7.js';
4
5
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { RichEditor, preloadRichEditor } from '../chunk-N2T7Y5KR.js';
1
+ export { RichEditor, preloadRichEditor } from '../chunk-AUSFKGKL.js';
2
2
  export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-2DMTW2Y3.js';
3
3
  import '../chunk-KOJPDCGQ.js';
4
4
  import '../chunk-KBZO4B33.js';
@@ -1,9 +1,10 @@
1
1
  import '../chunk-36WK24AI.js';
2
- export { SegmentedControl } from '../chunk-GZVAZ3LL.js';
3
- import '../chunk-HCUECVZ3.js';
2
+ export { SegmentedControl } from '../chunk-AZYE7NR4.js';
3
+ import '../chunk-MVKUE4FI.js';
4
4
  import '../chunk-EGMQURBR.js';
5
5
  import '../chunk-CYQBDZ6M.js';
6
- import '../chunk-YOJAGKTS.js';
6
+ import '../chunk-TGGYSQRD.js';
7
+ import '../chunk-L72URIHR.js';
7
8
  import '../chunk-DGXZ635L.js';
8
9
  import '../chunk-XSPCITPN.js';
9
10
  import '../chunk-OMV5W53A.js';
@@ -1,7 +1,7 @@
1
- export { SetupWizard } from '../chunk-C75WZMXG.js';
1
+ export { SetupWizard } from '../chunk-K6RWEQ6P.js';
2
2
  import '../chunk-RJWO2PC5.js';
3
3
  import '../chunk-FPDIHEM4.js';
4
- import '../chunk-RTPQDNW3.js';
4
+ import '../chunk-YJQXESOJ.js';
5
5
  import '../chunk-CYQBDZ6M.js';
6
6
  import '../chunk-LVJGN5II.js';
7
7
  import '../chunk-XSPCITPN.js';
@@ -1,6 +1,6 @@
1
- export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-HFOTRZFU.js';
1
+ export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-AQNP3KQU.js';
2
2
  import '../chunk-3IWZVEXA.js';
3
- import '../chunk-XXDB6KPV.js';
3
+ import '../chunk-ZXXZESCD.js';
4
4
  import '../chunk-T5GBTXNC.js';
5
5
  import '../chunk-STJ7QBC3.js';
6
6
  import '../chunk-DTIW4CHZ.js';
@@ -9,7 +9,8 @@ import '../chunk-BPCY7ZID.js';
9
9
  import '../chunk-HF5L56YQ.js';
10
10
  import '../chunk-IRONPJB4.js';
11
11
  import '../chunk-XZY6S3UC.js';
12
- import '../chunk-RTPQDNW3.js';
12
+ import '../chunk-YJQXESOJ.js';
13
+ import '../chunk-L72URIHR.js';
13
14
  import '../chunk-DGXZ635L.js';
14
15
  import '../chunk-XSPCITPN.js';
15
16
  import '../chunk-OMV5W53A.js';
@@ -1,17 +1,18 @@
1
- export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-IUWP2LSE.js';
1
+ export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-SGMWLUYQ.js';
2
2
  import '../chunk-3IWZVEXA.js';
3
3
  import '../chunk-FFMCMSJB.js';
4
4
  import '../chunk-YGRTX67J.js';
5
5
  import '../chunk-LFSIKGRQ.js';
6
6
  import '../chunk-Z7JYG5TF.js';
7
- import '../chunk-LSOR77RZ.js';
7
+ import '../chunk-SHH7UD5U.js';
8
8
  import '../chunk-AYKXMIOR.js';
9
9
  import '../chunk-YQ7Q52XU.js';
10
- import '../chunk-GZVAZ3LL.js';
11
- import '../chunk-HCUECVZ3.js';
10
+ import '../chunk-AZYE7NR4.js';
11
+ import '../chunk-MVKUE4FI.js';
12
12
  import '../chunk-EGMQURBR.js';
13
13
  import '../chunk-CYQBDZ6M.js';
14
- import '../chunk-YOJAGKTS.js';
14
+ import '../chunk-TGGYSQRD.js';
15
+ import '../chunk-L72URIHR.js';
15
16
  import '../chunk-O7N6W52M.js';
16
17
  import '../chunk-PGCLHYVP.js';
17
18
  import '../chunk-CMAZZY2I.js';
@@ -1,19 +1,21 @@
1
- export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-HQFOZJQ4.js';
1
+ export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-46FIBJCV.js';
2
2
  import '../chunk-UEOEBOBR.js';
3
3
  import '../chunk-CENOOTAV.js';
4
4
  import '../chunk-MMCYH5LB.js';
5
5
  import '../chunk-EFX2YC5T.js';
6
- import '../chunk-ONNXUS5Y.js';
6
+ import '../chunk-VB3FVKNI.js';
7
7
  import '../chunk-LFSIKGRQ.js';
8
8
  import '../chunk-Z7JYG5TF.js';
9
- import '../chunk-SM4P2SHB.js';
10
- import '../chunk-AYKXMIOR.js';
11
9
  import '../chunk-LBGKLYBY.js';
10
+ import '../chunk-EC6EUIAD.js';
11
+ import '../chunk-AYKXMIOR.js';
12
12
  import '../chunk-IRONPJB4.js';
13
13
  import '../chunk-XZY6S3UC.js';
14
14
  import '../chunk-CYQBDZ6M.js';
15
- import '../chunk-3QQIGMY3.js';
16
- import '../chunk-YOJAGKTS.js';
15
+ import '../chunk-7ZSEUO5Q.js';
16
+ import '../chunk-HTS5RJ7S.js';
17
+ import '../chunk-TGGYSQRD.js';
18
+ import '../chunk-L72URIHR.js';
17
19
  import '../chunk-DGXZ635L.js';
18
20
  import '../chunk-XSPCITPN.js';
19
21
  import '../chunk-OMV5W53A.js';
@@ -1,7 +1,9 @@
1
- export { SlideFilmstrip } from '../chunk-T7WESRZF.js';
1
+ export { SlideFilmstrip } from '../chunk-RO5JU6SN.js';
2
2
  import '../chunk-O6EV6GKI.js';
3
- import '../chunk-MPVMB2DV.js';
4
- import '../chunk-YOJAGKTS.js';
3
+ import '../chunk-BVML4UVB.js';
4
+ import '../chunk-YJQXESOJ.js';
5
+ import '../chunk-TGGYSQRD.js';
6
+ import '../chunk-L72URIHR.js';
5
7
  import '../chunk-CMAZZY2I.js';
6
8
  import '../chunk-DGXZ635L.js';
7
9
  import '../chunk-XSPCITPN.js';
@@ -1,10 +1,11 @@
1
- export { Switcher } from '../chunk-FKAJBN6G.js';
2
- import '../chunk-XXDB6KPV.js';
1
+ export { Switcher } from '../chunk-7M7WKYOV.js';
2
+ import '../chunk-ZXXZESCD.js';
3
3
  import '../chunk-YGRTX67J.js';
4
4
  import '../chunk-HBDA76EZ.js';
5
- import '../chunk-SM4P2SHB.js';
5
+ import '../chunk-EC6EUIAD.js';
6
6
  import '../chunk-I4IUX3JF.js';
7
- import '../chunk-RTPQDNW3.js';
7
+ import '../chunk-YJQXESOJ.js';
8
+ import '../chunk-L72URIHR.js';
8
9
  import '../chunk-O7N6W52M.js';
9
10
  import '../chunk-PGCLHYVP.js';
10
11
  import '../chunk-DGXZ635L.js';
@@ -1,7 +1,8 @@
1
- export { TabPanel, Tabs, tabId } from '../chunk-HCUECVZ3.js';
1
+ export { TabPanel, Tabs, tabId } from '../chunk-MVKUE4FI.js';
2
2
  import '../chunk-EGMQURBR.js';
3
3
  import '../chunk-CYQBDZ6M.js';
4
- import '../chunk-YOJAGKTS.js';
4
+ import '../chunk-TGGYSQRD.js';
5
+ import '../chunk-L72URIHR.js';
5
6
  import '../chunk-DGXZ635L.js';
6
7
  import '../chunk-XSPCITPN.js';
7
8
  import '../chunk-OMV5W53A.js';
@@ -1,12 +1,13 @@
1
- export { DensitySwitcher, ThemeSwitcher } from '../chunk-C7UHDM7Y.js';
1
+ export { DensitySwitcher, ThemeSwitcher } from '../chunk-5V6GW6HK.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
4
  import '../chunk-36WK24AI.js';
5
- import '../chunk-GZVAZ3LL.js';
6
- import '../chunk-HCUECVZ3.js';
5
+ import '../chunk-AZYE7NR4.js';
6
+ import '../chunk-MVKUE4FI.js';
7
7
  import '../chunk-EGMQURBR.js';
8
8
  import '../chunk-CYQBDZ6M.js';
9
- import '../chunk-YOJAGKTS.js';
9
+ import '../chunk-TGGYSQRD.js';
10
+ import '../chunk-L72URIHR.js';
10
11
  import '../chunk-DGXZ635L.js';
11
12
  import '../chunk-XSPCITPN.js';
12
13
  import '../chunk-OMV5W53A.js';
@@ -1,12 +1,13 @@
1
- export { TIME_RANGE_CUSTOM, TIME_RANGE_PICKER_LABELS, TimeRangePicker, timeRangeFieldKey, timeRangeProblem } from '../chunk-G6ZFSUIH.js';
2
- import '../chunk-XXDB6KPV.js';
1
+ export { TIME_RANGE_CUSTOM, TIME_RANGE_PICKER_LABELS, TimeRangePicker, timeRangeFieldKey, timeRangeProblem } from '../chunk-ZJVLGYE3.js';
2
+ import '../chunk-ZXXZESCD.js';
3
3
  import '../chunk-BPCY7ZID.js';
4
4
  import '../chunk-36WK24AI.js';
5
- import '../chunk-GZVAZ3LL.js';
6
- import '../chunk-HCUECVZ3.js';
5
+ import '../chunk-AZYE7NR4.js';
6
+ import '../chunk-MVKUE4FI.js';
7
7
  import '../chunk-EGMQURBR.js';
8
8
  import '../chunk-CYQBDZ6M.js';
9
- import '../chunk-YOJAGKTS.js';
9
+ import '../chunk-TGGYSQRD.js';
10
+ import '../chunk-L72URIHR.js';
10
11
  import '../chunk-O7N6W52M.js';
11
12
  import '../chunk-PGCLHYVP.js';
12
13
  import '../chunk-DGXZ635L.js';
@@ -1,8 +1,9 @@
1
- export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-YM77TZ7Q.js';
1
+ export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-T3S3D4FC.js';
2
2
  import '../chunk-3IWZVEXA.js';
3
3
  import '../chunk-YGRTX67J.js';
4
4
  import '../chunk-EE3DJMSQ.js';
5
- import '../chunk-SM4P2SHB.js';
5
+ import '../chunk-EC6EUIAD.js';
6
+ import '../chunk-L72URIHR.js';
6
7
  import '../chunk-O7N6W52M.js';
7
8
  import '../chunk-PGCLHYVP.js';
8
9
  import '../chunk-DGXZ635L.js';
@@ -1,4 +1,6 @@
1
- export { Tooltip } from '../chunk-3QQIGMY3.js';
1
+ export { Tooltip } from '../chunk-7ZSEUO5Q.js';
2
+ import '../chunk-HTS5RJ7S.js';
3
+ import '../chunk-L72URIHR.js';
2
4
  import '../chunk-OMV5W53A.js';
3
5
  import '../chunk-TUEM2XIW.js';
4
6
  import '../chunk-4ITETIGZ.js';
@@ -1,8 +1,11 @@
1
- export { TreeCanvas } from '../chunk-AMUXSJ2A.js';
1
+ export { TreeCanvas } from '../chunk-FPU7AA3X.js';
2
2
  import '../chunk-MY374UUD.js';
3
- import '../chunk-SEKO6P3Y.js';
3
+ import '../chunk-NCUSI4ZU.js';
4
4
  import '../chunk-LM3ISVJA.js';
5
- import '../chunk-3QQIGMY3.js';
5
+ import '../chunk-YJQXESOJ.js';
6
+ import '../chunk-7ZSEUO5Q.js';
7
+ import '../chunk-HTS5RJ7S.js';
8
+ import '../chunk-L72URIHR.js';
6
9
  import '../chunk-CMAZZY2I.js';
7
10
  import '../chunk-DGXZ635L.js';
8
11
  import '../chunk-XSPCITPN.js';
@@ -1,11 +1,12 @@
1
- export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-TGCGLKD4.js';
1
+ export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-RBQRTGXX.js';
2
2
  import '../chunk-AOFVXE6V.js';
3
3
  import '../chunk-36WK24AI.js';
4
- import '../chunk-GZVAZ3LL.js';
5
- import '../chunk-HCUECVZ3.js';
4
+ import '../chunk-AZYE7NR4.js';
5
+ import '../chunk-MVKUE4FI.js';
6
6
  import '../chunk-EGMQURBR.js';
7
7
  import '../chunk-CYQBDZ6M.js';
8
- import '../chunk-YOJAGKTS.js';
8
+ import '../chunk-TGGYSQRD.js';
9
+ import '../chunk-L72URIHR.js';
9
10
  import '../chunk-PPUR46MK.js';
10
11
  import '../chunk-DGXZ635L.js';
11
12
  import '../chunk-XSPCITPN.js';
@@ -1,5 +1,5 @@
1
- import { HuePicker } from './chunk-LSOR77RZ.js';
2
- import { Popover } from './chunk-SM4P2SHB.js';
1
+ import { HuePicker } from './chunk-SHH7UD5U.js';
2
+ import { Popover } from './chunk-EC6EUIAD.js';
3
3
  import { NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
4
4
  import { CharacterPicker } from './chunk-LNQSNXGJ.js';
5
5
  import { Avatar } from './chunk-XZY6S3UC.js';
@@ -1,6 +1,6 @@
1
1
  import { Note } from './chunk-5SZGKSGL.js';
2
- import { CanvasToolbar, toolForKey } from './chunk-HA2PL7PA.js';
3
- import { IDENTITY_VIEW, Canvas } from './chunk-SEKO6P3Y.js';
2
+ import { CanvasToolbar, toolForKey } from './chunk-DRFOTWJE.js';
3
+ import { IDENTITY_VIEW, Canvas } from './chunk-NCUSI4ZU.js';
4
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './CanvasBoard-U6LR5F6H.css';
@@ -1,15 +1,15 @@
1
1
  import { TagGroup } from './chunk-UEOEBOBR.js';
2
2
  import { CursorFlag } from './chunk-MMCYH5LB.js';
3
3
  import { presenceHueClass } from './chunk-EFX2YC5T.js';
4
- import { ChangeMark } from './chunk-ONNXUS5Y.js';
4
+ import { ChangeMark } from './chunk-VB3FVKNI.js';
5
5
  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';
6
6
  import { presenceLabels } from './chunk-Z7JYG5TF.js';
7
- import { Popover } from './chunk-SM4P2SHB.js';
8
7
  import { Tag } from './chunk-LBGKLYBY.js';
8
+ import { Popover } from './chunk-EC6EUIAD.js';
9
9
  import { Avatar } from './chunk-XZY6S3UC.js';
10
10
  import { StatusDot } from './chunk-CYQBDZ6M.js';
11
- import { Tooltip } from './chunk-3QQIGMY3.js';
12
- import { Menu } from './chunk-YOJAGKTS.js';
11
+ import { Tooltip } from './chunk-7ZSEUO5Q.js';
12
+ import { Menu } from './chunk-TGGYSQRD.js';
13
13
  import { Button } from './chunk-DGXZ635L.js';
14
14
  import { isComposing } from './chunk-TUEM2XIW.js';
15
15
  import { IconButton } from './chunk-UAUP6XGK.js';
@@ -1,6 +1,6 @@
1
1
  import { heldHint } from './chunk-TDFLCUBE.js';
2
- import { emojiName, EmojiPicker } from './chunk-MPYRC3GO.js';
3
- import { Tooltip } from './chunk-3QQIGMY3.js';
2
+ import { emojiName, EmojiPicker } from './chunk-SPNTUQBV.js';
3
+ import { Tooltip } from './chunk-7ZSEUO5Q.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './ChatScale-L4SIHSKL.css';
6
6
  import './ReactionBar-XXI4V7XG.css';
@@ -0,0 +1,58 @@
1
+ import { usePresence, releaseFocus } from './chunk-PCAT2EFB.js';
2
+ import { cx } from './chunk-ODEQTPFM.js';
3
+ import './DockColumn-SMJCXHS4.css';
4
+ import { useRef, useCallback, useLayoutEffect } from 'react';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var DOCK_MOTION = { transitions: ["width"] };
8
+ function DockColumn({
9
+ open,
10
+ width,
11
+ side = "start",
12
+ divider = true,
13
+ focusOnClose,
14
+ className,
15
+ style,
16
+ children,
17
+ ...rest
18
+ }) {
19
+ const column = useRef(null);
20
+ const { present, leaving } = usePresence(open, column, DOCK_MOTION);
21
+ const closed = useRef(!open);
22
+ closed.current = !open;
23
+ const isClosed = useCallback(() => closed.current, []);
24
+ return /* @__PURE__ */ jsx(
25
+ "div",
26
+ {
27
+ ...rest,
28
+ ref: column,
29
+ className: cx("crewlet-dock-column", divider && "crewlet-dock-column--divider", className),
30
+ "data-side": side,
31
+ "data-open": open ? "" : void 0,
32
+ style: { ...style, "--crewlet-dock-column-width": typeof width === "number" ? `${width}px` : width },
33
+ children: present ? /* @__PURE__ */ jsx(DockPanel, { leaving, isClosed, focusOnClose, children }) : null
34
+ }
35
+ );
36
+ }
37
+ function DockPanel({
38
+ leaving,
39
+ isClosed,
40
+ focusOnClose,
41
+ children
42
+ }) {
43
+ const panel = useRef(null);
44
+ const target = useRef(focusOnClose);
45
+ target.current = focusOnClose;
46
+ useLayoutEffect(() => {
47
+ if (leaving) releaseFocus(panel.current, target.current?.());
48
+ }, [leaving]);
49
+ useLayoutEffect(() => {
50
+ const element = panel.current;
51
+ return () => {
52
+ if (isClosed()) releaseFocus(element, target.current?.());
53
+ };
54
+ }, [isClosed]);
55
+ return /* @__PURE__ */ jsx("div", { ref: panel, className: "crewlet-dock-column__panel", inert: leaving || void 0, children });
56
+ }
57
+
58
+ export { DockColumn };
@@ -1,5 +1,5 @@
1
1
  import { useThemePreference, useDensityPreference } from './chunk-Z24ZUSTX.js';
2
- import { SegmentedControl } from './chunk-GZVAZ3LL.js';
2
+ import { SegmentedControl } from './chunk-AZYE7NR4.js';
3
3
  import { SunGlyph, MonitorGlyph, MoonGlyph } from '@crewlethq/icons/glyphs';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { today, CalendarGrid, shiftMonth, compareDays } from './chunk-EE3DJMSQ.js';
2
- import { Popover } from './chunk-SM4P2SHB.js';
2
+ import { Popover } from './chunk-EC6EUIAD.js';
3
3
  import { Button } from './chunk-DGXZ635L.js';
4
4
  import { useFocusModality } from './chunk-4ITETIGZ.js';
5
5
  import { IconButton } from './chunk-UAUP6XGK.js';
@@ -1,9 +1,9 @@
1
- import { Modal } from './chunk-XXDB6KPV.js';
1
+ import { Modal } from './chunk-ZXXZESCD.js';
2
2
  import { useListbox, useOptionKeys } from './chunk-YGRTX67J.js';
3
3
  import { KeyChip, highlightMatch } from './chunk-HBDA76EZ.js';
4
- import { Popover } from './chunk-SM4P2SHB.js';
4
+ import { Popover } from './chunk-EC6EUIAD.js';
5
5
  import { Skeleton } from './chunk-I4IUX3JF.js';
6
- import { useMediaMatch } from './chunk-RTPQDNW3.js';
6
+ import { useMediaMatch } from './chunk-YJQXESOJ.js';
7
7
  import { Input } from './chunk-O7N6W52M.js';
8
8
  import { focusables, isComposing } from './chunk-TUEM2XIW.js';
9
9
  import { returnFocus } from './chunk-4ITETIGZ.js';
@@ -1,3 +1,4 @@
1
+ import { prefersReducedMotion } from './chunk-YJQXESOJ.js';
1
2
  import { cx } from './chunk-ODEQTPFM.js';
2
3
  import './Outline-VCXKKU3E.css';
3
4
  import { useState, useRef, useEffect } from 'react';
@@ -28,7 +29,7 @@ function scrollToHeading(id, ownerDocument = document) {
28
29
  const heading = ownerDocument.getElementById(id);
29
30
  if (!heading) return false;
30
31
  if (!heading.hasAttribute("tabindex")) heading.setAttribute("tabindex", "-1");
31
- const still = ownerDocument.defaultView?.matchMedia?.("(prefers-reduced-motion: reduce)").matches ?? false;
32
+ const still = prefersReducedMotion(ownerDocument.defaultView);
32
33
  heading.scrollIntoView?.({ behavior: still ? "auto" : "smooth", block: "start" });
33
34
  heading.focus({ preventScroll: true });
34
35
  return true;
@@ -1,3 +1,5 @@
1
+ import { tokenMs } from './chunk-HTS5RJ7S.js';
2
+ import { useComposedRef } from './chunk-L72URIHR.js';
1
3
  import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
2
4
  import { usePopupLayer } from './chunk-TUEM2XIW.js';
3
5
  import { isVisibleFocus } from './chunk-4ITETIGZ.js';
@@ -8,9 +10,6 @@ import { createPortal } from 'react-dom';
8
10
  import { motion } from '@crewlethq/tokens';
9
11
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
12
 
11
- function ms(value) {
12
- return Number.parseFloat(value);
13
- }
14
13
  function composeHandlers(first, second) {
15
14
  if (typeof first !== "function") return second;
16
15
  if (typeof second !== "function") return first;
@@ -19,21 +18,8 @@ function composeHandlers(first, second) {
19
18
  second(...args);
20
19
  };
21
20
  }
22
- function attach(ref, el) {
23
- if (typeof ref === "function") {
24
- const release = ref(el);
25
- return typeof release === "function" ? release : () => void ref(null);
26
- }
27
- if (!ref) return () => {
28
- };
29
- const box = ref;
30
- box.current = el;
31
- return () => {
32
- box.current = null;
33
- };
34
- }
35
- var OPEN_DELAY = ms(motion.duration.slow);
36
- var CLOSE_DELAY = ms(motion.duration.base);
21
+ var OPEN_DELAY = tokenMs(motion.duration.slow);
22
+ var CLOSE_DELAY = tokenMs(motion.duration.base);
37
23
  function Tooltip({
38
24
  content,
39
25
  placement = "top",
@@ -157,21 +143,11 @@ function Tooltip({
157
143
  if (outer["style"] !== void 0) passed["style"] = { ...child.props["style"], ...outer["style"] };
158
144
  const describedBy = cx(child.props["aria-describedby"], outer["aria-describedby"]) || void 0;
159
145
  const ownRef = child.props["ref"];
146
+ const triggerRef = useComposedRef(anchor, layer.insideRef, ownRef, forwardedRef);
160
147
  const call = (key, event) => (passed[key] ?? child.props[key])?.(event);
161
148
  const trigger = cloneElement(child, {
162
149
  ...passed,
163
- ref: (el) => {
164
- anchor.current = el;
165
- layer.insideRef(el);
166
- const release = attach(ownRef, el);
167
- const releaseForwarded = attach(forwardedRef, el);
168
- return () => {
169
- anchor.current = null;
170
- layer.insideRef(null);
171
- release();
172
- releaseForwarded();
173
- };
174
- },
150
+ ref: triggerRef,
175
151
  "aria-describedby": open ? cx(describedBy, panelId) : describedBy,
176
152
  onPointerEnter: (event) => {
177
153
  over.current.pointer = true;
@@ -1,5 +1,5 @@
1
- import { useMediaMatch } from './chunk-RTPQDNW3.js';
2
1
  import { Checkbox } from './chunk-YQ7Q52XU.js';
2
+ import { useMediaMatch } from './chunk-YJQXESOJ.js';
3
3
  import { EmptyState } from './chunk-PPUR46MK.js';
4
4
  import { Button } from './chunk-DGXZ635L.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
@@ -1,9 +1,9 @@
1
1
  import { Select } from './chunk-3IWZVEXA.js';
2
- import { Modal } from './chunk-XXDB6KPV.js';
2
+ import { Modal } from './chunk-ZXXZESCD.js';
3
3
  import { CopyButton } from './chunk-T5GBTXNC.js';
4
4
  import { Callout } from './chunk-BPCY7ZID.js';
5
5
  import { PrincipalAvatar } from './chunk-HF5L56YQ.js';
6
- import { useMediaMatch } from './chunk-RTPQDNW3.js';
6
+ import { useMediaMatch } from './chunk-YJQXESOJ.js';
7
7
  import { Button } from './chunk-DGXZ635L.js';
8
8
  import { IconButton } from './chunk-UAUP6XGK.js';
9
9
  import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
@@ -9,7 +9,7 @@ import { jsx } from 'react/jsx-runtime';
9
9
  var engine = null;
10
10
  var loading = null;
11
11
  function loadEngine() {
12
- loading ??= import('./Editor-7EQWP3RN.js').then(
12
+ loading ??= import('./Editor-5D5Z3LBQ.js').then(
13
13
  (module) => {
14
14
  engine = module.Editor;
15
15
  return engine;