@crewlethq/ui 0.82.0 → 0.84.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 (185) hide show
  1. package/README.md +63 -1
  2. package/dist/ActionCard/ActionCard.d.ts +7 -7
  3. package/dist/ActionCard/index.js +1 -1
  4. package/dist/ActionCard-YZKL3CKR.css +130 -0
  5. package/dist/AppShell/AccountRow.d.ts +6 -1
  6. package/dist/AppShell/AppShell.d.ts +25 -13
  7. package/dist/AppShell/index.d.ts +1 -1
  8. package/dist/AppShell/index.js +8 -5
  9. package/dist/AppShell/railMotion.d.ts +60 -0
  10. package/dist/AppShell/railShape.d.ts +5 -0
  11. package/dist/{AppShell-F7RID4P4.css → AppShell-NX5HCD4O.css} +251 -90
  12. package/dist/ArrangeList/index.js +3 -2
  13. package/dist/ArtifactBar/index.js +7 -5
  14. package/dist/ArtifactCard/index.js +3 -3
  15. package/dist/ArtifactKindIllustration/index.js +1 -1
  16. package/dist/{ArtifactKinds-3EH4KR3F.css → ArtifactKinds-27TE3KJL.css} +7 -7
  17. package/dist/ArtifactMakeRow/index.js +1 -1
  18. package/dist/ArtifactNameCell/index.js +1 -1
  19. package/dist/AuthLayout/index.js +3 -3
  20. package/dist/AvatarPicker/index.js +7 -6
  21. package/dist/BrandLockup/index.js +2 -2
  22. package/dist/BriefCard/index.js +2 -1
  23. package/dist/Canvas/index.js +4 -2
  24. package/dist/CanvasBoard/index.js +6 -4
  25. package/dist/CanvasToolbar/index.js +5 -3
  26. package/dist/CatalogTile/CatalogTile.d.ts +23 -5
  27. package/dist/CatalogTile/index.d.ts +1 -1
  28. package/dist/CatalogTile/index.js +2 -1
  29. package/dist/{CatalogTile-6VF36JWA.css → CatalogTile-TMOSGSV3.css} +4 -3
  30. package/dist/ChangeMark/index.js +4 -2
  31. package/dist/ChatThread/index.js +2 -2
  32. package/dist/CommandPalette/index.js +3 -2
  33. package/dist/CompactNav/CompactNav.d.ts +10 -6
  34. package/dist/CompactNav/index.js +2 -1
  35. package/dist/ContrastHelp/index.js +3 -2
  36. package/dist/DataGrid/index.js +2 -2
  37. package/dist/DataTable/index.js +4 -3
  38. package/dist/DataView/index.js +8 -7
  39. package/dist/DateTimePicker/index.js +3 -2
  40. package/dist/DeepWorkCard/index.js +2 -2
  41. package/dist/DirectoryList/index.js +1 -1
  42. package/dist/{DirectoryList-XZOWYOA3.css → DirectoryList-IXQIMNFS.css} +8 -1
  43. package/dist/DocTabsEditor/index.js +5 -3
  44. package/dist/DockColumn/DockColumn.d.ts +68 -0
  45. package/dist/DockColumn/index.d.ts +3 -0
  46. package/dist/DockColumn/index.js +6 -0
  47. package/dist/DockColumn-SMJCXHS4.css +61 -0
  48. package/dist/{Editor-7EQWP3RN.js → Editor-VGNB35NJ.js} +2 -1
  49. package/dist/EmojiPicker/index.js +5 -3
  50. package/dist/FactList/index.js +4 -2
  51. package/dist/HuePicker/index.js +5 -4
  52. package/dist/InboxList/InboxList.d.ts +28 -2
  53. package/dist/InboxList/index.d.ts +1 -1
  54. package/dist/InboxList/index.js +6 -1
  55. package/dist/{InboxList-OFGSX5IH.css → InboxList-X5Q5WWAI.css} +63 -2
  56. package/dist/LinkInterstitial/index.js +3 -2
  57. package/dist/ListDetail/ListDetail.d.ts +6 -0
  58. package/dist/ListDetail/index.js +1 -1
  59. package/dist/{ListDetail-N3L7PB46.css → ListDetail-JGESKTR7.css} +38 -0
  60. package/dist/ListInput/index.js +3 -2
  61. package/dist/MarkdownEditor/index.js +5 -4
  62. package/dist/MediaMatch/index.d.ts +1 -1
  63. package/dist/MediaMatch/index.js +1 -1
  64. package/dist/MediaMatch/useMediaMatch.d.ts +14 -0
  65. package/dist/Menu/index.js +2 -1
  66. package/dist/MergeConflicts/index.js +5 -4
  67. package/dist/MessageActions/index.js +6 -4
  68. package/dist/Modal/index.js +2 -1
  69. package/dist/OpenInAppCard/index.js +2 -2
  70. package/dist/Outline/index.js +2 -1
  71. package/dist/Popover/index.js +2 -1
  72. package/dist/Presence/index.d.ts +2 -0
  73. package/dist/Presence/index.js +4 -0
  74. package/dist/Presence/usePresence.d.ts +109 -0
  75. package/dist/ReactionBar/index.js +6 -4
  76. package/dist/ReadingPane/ReadingPane.d.ts +17 -1
  77. package/dist/ReadingPane/index.d.ts +1 -1
  78. package/dist/ReadingPane/index.js +2 -1
  79. package/dist/{ReadingPane-VLYOWMCM.css → ReadingPane-VFTRDPC5.css} +19 -0
  80. package/dist/RecordChip/index.js +3 -2
  81. package/dist/Reorder/index.js +2 -1
  82. package/dist/RichEditor/index.js +1 -1
  83. package/dist/SectionFrame/index.js +2 -2
  84. package/dist/SegmentedControl/index.js +4 -3
  85. package/dist/SetupWizard/index.js +2 -2
  86. package/dist/ShareDialog/index.js +5 -4
  87. package/dist/SheetColumnEditor/index.js +6 -5
  88. package/dist/SheetGrid/index.js +8 -6
  89. package/dist/SidebarNav/SidebarNav.d.ts +18 -2
  90. package/dist/SidebarNav/index.d.ts +1 -1
  91. package/dist/SidebarNav/index.js +1 -1
  92. package/dist/{SidebarNav-E7PZGGA6.css → SidebarNav-IKBKGXW4.css} +20 -0
  93. package/dist/SlideFilmstrip/index.js +5 -3
  94. package/dist/Switcher/index.js +5 -4
  95. package/dist/Tabs/index.js +3 -2
  96. package/dist/ThemeSwitcher/index.js +5 -4
  97. package/dist/TimeRangePicker/index.js +6 -5
  98. package/dist/TimeWindowPicker/index.js +3 -2
  99. package/dist/Tooltip/index.js +3 -1
  100. package/dist/TreeCanvas/index.js +6 -3
  101. package/dist/VersionCompare/index.js +5 -4
  102. package/dist/{chunk-KJR5X4II.js → chunk-22CU7V4J.js} +2 -2
  103. package/dist/{chunk-4RYELYWG.js → chunk-2SVQBQAD.js} +2 -2
  104. package/dist/{chunk-N2T7Y5KR.js → chunk-3AMWXJQX.js} +1 -1
  105. package/dist/{chunk-HQFOZJQ4.js → chunk-46FIBJCV.js} +4 -4
  106. package/dist/{chunk-LQRN2XZK.js → chunk-4DEKONVJ.js} +2 -2
  107. package/dist/chunk-5JPOFAVN.js +58 -0
  108. package/dist/{chunk-C7UHDM7Y.js → chunk-5V6GW6HK.js} +1 -1
  109. package/dist/{chunk-Q7N2ATMC.js → chunk-64JNKLLP.js} +57 -9
  110. package/dist/chunk-6C7GQOBV.js +10 -0
  111. package/dist/{chunk-YRNNUCQP.js → chunk-7BDBO2NP.js} +1 -1
  112. package/dist/{chunk-XGLMPPDW.js → chunk-7K6LVM5I.js} +1 -1
  113. package/dist/{chunk-FKAJBN6G.js → chunk-7M7WKYOV.js} +3 -3
  114. package/dist/{chunk-A5YKNRG6.js → chunk-7QCSISHM.js} +2 -1
  115. package/dist/{chunk-3QQIGMY3.js → chunk-7ZSEUO5Q.js} +6 -30
  116. package/dist/{chunk-57BFL323.js → chunk-ABRWL5FJ.js} +1 -1
  117. package/dist/{chunk-HFOTRZFU.js → chunk-AQNP3KQU.js} +2 -2
  118. package/dist/{chunk-GZVAZ3LL.js → chunk-AZYE7NR4.js} +1 -1
  119. package/dist/{chunk-6IOQWMYJ.js → chunk-BN5FEJL5.js} +1 -1
  120. package/dist/{chunk-25JQNHTC.js → chunk-BRK3HXGZ.js} +8 -2
  121. package/dist/{chunk-MPVMB2DV.js → chunk-BVML4UVB.js} +3 -2
  122. package/dist/{chunk-OAHRMR4U.js → chunk-C42XW5YP.js} +1 -1
  123. package/dist/{chunk-2H6YDUR5.js → chunk-C4JTX25K.js} +3 -3
  124. package/dist/{chunk-QE4OIE3Q.js → chunk-DJIWCW5Z.js} +6 -4
  125. package/dist/{chunk-HA2PL7PA.js → chunk-DRFOTWJE.js} +1 -1
  126. package/dist/{chunk-SM4P2SHB.js → chunk-EC6EUIAD.js} +7 -4
  127. package/dist/{chunk-QPHD4UUG.js → chunk-F6ZUM66S.js} +160 -25
  128. package/dist/{chunk-AMUXSJ2A.js → chunk-FPU7AA3X.js} +4 -15
  129. package/dist/{chunk-KLAVEJIO.js → chunk-GLKQHN7G.js} +1 -1
  130. package/dist/{chunk-MVMVMHYI.js → chunk-HDEKHP65.js} +1 -1
  131. package/dist/{chunk-XY4O2XMR.js → chunk-HKUZ2GYX.js} +4 -4
  132. package/dist/chunk-HTS5RJ7S.js +6 -0
  133. package/dist/{chunk-ZB3E2Z4Y.js → chunk-J5T5TDM2.js} +1 -1
  134. package/dist/{chunk-ISQANI6Q.js → chunk-JLOESTT2.js} +2 -1
  135. package/dist/{chunk-C75WZMXG.js → chunk-K6RWEQ6P.js} +1 -1
  136. package/dist/{chunk-GVPUCEWH.js → chunk-KXWJJWBD.js} +1 -1
  137. package/dist/chunk-L72URIHR.js +36 -0
  138. package/dist/{chunk-2TOGGCDM.js → chunk-LT44RL62.js} +2 -2
  139. package/dist/{chunk-C46DDVTK.js → chunk-LTD7KLOU.js} +1 -1
  140. package/dist/{chunk-HCUECVZ3.js → chunk-MVKUE4FI.js} +1 -1
  141. package/dist/{chunk-6YBBQAEM.js → chunk-MYAARF4Z.js} +1 -1
  142. package/dist/{chunk-SEKO6P3Y.js → chunk-NCUSI4ZU.js} +1 -1
  143. package/dist/{chunk-YBC2CYPD.js → chunk-O4VTQMEF.js} +1 -1
  144. package/dist/{chunk-HTBTAIH6.js → chunk-OM2LABPS.js} +2 -2
  145. package/dist/{chunk-T4IEESXN.js → chunk-ORONAXSF.js} +91 -25
  146. package/dist/chunk-PCAT2EFB.js +104 -0
  147. package/dist/{chunk-GP5TNTZH.js → chunk-QWRAWKB2.js} +53 -14
  148. package/dist/{chunk-TGCGLKD4.js → chunk-RBQRTGXX.js} +1 -1
  149. package/dist/{chunk-B3X4DHRB.js → chunk-RDIQB5ZE.js} +2 -2
  150. package/dist/{chunk-SRDNGGZE.js → chunk-RKIJAXQA.js} +1 -1
  151. package/dist/{chunk-T7WESRZF.js → chunk-RO5JU6SN.js} +2 -2
  152. package/dist/{chunk-IUWP2LSE.js → chunk-SGMWLUYQ.js} +2 -2
  153. package/dist/{chunk-LSOR77RZ.js → chunk-SHH7UD5U.js} +1 -1
  154. package/dist/{chunk-JV6JM6W6.js → chunk-SNQ7PH3D.js} +1 -1
  155. package/dist/{chunk-MPYRC3GO.js → chunk-SPNTUQBV.js} +2 -2
  156. package/dist/{chunk-YM77TZ7Q.js → chunk-T3S3D4FC.js} +1 -1
  157. package/dist/{chunk-YOJAGKTS.js → chunk-TGGYSQRD.js} +3 -4
  158. package/dist/{chunk-2KJCUCVE.js → chunk-TQKQRS2J.js} +2 -2
  159. package/dist/{chunk-ONNXUS5Y.js → chunk-VB3FVKNI.js} +1 -1
  160. package/dist/{chunk-JHQGNFN3.js → chunk-VONEKR3J.js} +2 -2
  161. package/dist/{chunk-P6F3PE4V.js → chunk-WANKINXG.js} +2 -2
  162. package/dist/{chunk-PXLS6JKL.js → chunk-WMO722J2.js} +1 -1
  163. package/dist/{chunk-SYVQXMLO.js → chunk-XRWHDW6F.js} +4 -4
  164. package/dist/{chunk-WT3B76MG.js → chunk-XTJHMP3W.js} +1 -1
  165. package/dist/{chunk-CF4M6N6A.js → chunk-XYSSFI5C.js} +1 -7
  166. package/dist/{chunk-RTPQDNW3.js → chunk-YJQXESOJ.js} +5 -1
  167. package/dist/{chunk-VGOWSOUA.js → chunk-YXKSUILG.js} +1 -1
  168. package/dist/{chunk-G6ZFSUIH.js → chunk-ZJVLGYE3.js} +2 -2
  169. package/dist/{chunk-BSAU7QRW.js → chunk-ZPTKAYJK.js} +1 -1
  170. package/dist/{chunk-XXDB6KPV.js → chunk-ZXXZESCD.js} +3 -4
  171. package/dist/generated/index.d.ts +2 -0
  172. package/dist/generated/index.js +108 -103
  173. package/dist/index.js +108 -103
  174. package/dist/styles.css +525 -134
  175. package/dist/utils/composedRef.d.ts +39 -0
  176. package/dist/utils/developing.d.ts +10 -0
  177. package/dist/utils/index.d.ts +2 -0
  178. package/dist/utils/index.js +3 -1
  179. package/dist/utils/tokenMs.d.ts +6 -0
  180. package/package.json +5 -5
  181. package/dist/ActionCard-47WSZ2O5.css +0 -110
  182. package/dist/{chunk-IYI6HWKN.js → chunk-CV2LU2T2.js} +1 -1
  183. package/dist/{chunk-FVZPSTL2.js → chunk-G4EHZHKM.js} +1 -1
  184. /package/dist/{chunk-FEJANUZK.js → chunk-KBSD476L.js} +0 -0
  185. /package/dist/{chunk-KLWWNV25.js → chunk-REEZQCML.js} +0 -0
@@ -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';
@@ -36,6 +36,7 @@
36
36
  * own prop types, so one list of places feeds both shapes.
37
37
  */
38
38
  import { type MouseEventHandler, type ReactNode } from 'react';
39
+ import type { CountTone } from '../Count/index.js';
39
40
  export interface SidebarNavProps {
40
41
  /**
41
42
  * Names the navigation region. A page with two of them ("Sections" and
@@ -148,6 +149,20 @@ export interface NavFigure {
148
149
  */
149
150
  label: string;
150
151
  }
152
+ /**
153
+ * A figure of what waits on the reader, and how loudly it asks.
154
+ *
155
+ * `attention` (the default) is the accent's filled pill, the one hue in the
156
+ * chrome: what the reader is asked to act on, the unread in an inbox.
157
+ * `quiet` keeps the pill's round shape and its place at the row's end, in
158
+ * the quiet count's grey: work that is the reader's own and is waiting, but
159
+ * not calling (the open tasks assigned to them). The vocabulary is `Count`'s
160
+ * own (`CountTone`), so a figure is quiet or calling in the same words
161
+ * wherever it stands.
162
+ */
163
+ export interface NavBadge extends NavFigure {
164
+ tone?: CountTone | undefined;
165
+ }
151
166
  /** A quiet figure: how many of something the destination holds. */
152
167
  export interface NavCount extends NavFigure {
153
168
  /**
@@ -180,9 +195,10 @@ export interface NavItemProps {
180
195
  * of what is waiting on the reader is the one thing in the rail that asks
181
196
  * them to act, which is what the accent means; it is a FILL carrying a
182
197
  * figure rather than a figure in a hue, so it still reads to somebody who
183
- * cannot separate the hue. Anything else is a `count`.
198
+ * cannot separate the hue. Anything else is a `count`. `tone: 'quiet'`
199
+ * keeps the pill and draws it in the quiet count's grey (`NavBadge`).
184
200
  */
185
- badge?: NavFigure | undefined;
201
+ badge?: NavBadge | undefined;
186
202
  href?: string | undefined;
187
203
  /** Whether this row is the screen the reader is on. */
188
204
  current?: boolean | undefined;
@@ -1,4 +1,4 @@
1
1
  import '../HitArea/HitArea.css';
2
2
  import './SidebarNav.css';
3
3
  export { NavGroup, NavItem, SidebarNav } from './SidebarNav.js';
4
- export type { NavCount, NavFigure, NavGroupAction, NavGroupProps, NavItemProps, NavLinkProps, SidebarNavProps, } from './SidebarNav.js';
4
+ export type { NavBadge, NavCount, NavFigure, NavGroupAction, NavGroupProps, NavItemProps, NavLinkProps, SidebarNavProps, } from './SidebarNav.js';
@@ -1,4 +1,4 @@
1
- export { NavGroup, NavItem, SidebarNav } from '../chunk-25JQNHTC.js';
1
+ export { NavGroup, NavItem, SidebarNav } from '../chunk-BRK3HXGZ.js';
2
2
  import '../chunk-TEV5REGB.js';
3
3
  import '../chunk-HBDA76EZ.js';
4
4
  import '../chunk-2YTOOH3A.js';
@@ -415,6 +415,26 @@
415
415
  line-height: 1;
416
416
  }
417
417
 
418
+ /*
419
+ * A QUIET BADGE keeps the pill, its size and its place at the row's end, and
420
+ * takes the quiet count's grey: a neutral wash (`--color-fill-soft`, the
421
+ * ground of a quiet label at rest) carrying the secondary ink, for work that
422
+ * is the reader's own and waiting, but not calling. The secondary ink rather
423
+ * than the count's tertiary, because on a wash over a hovered row the
424
+ * tertiary measured 4.41:1 in light; it is the ink the compact rail's quiet
425
+ * figure takes, so the two shapes draw the same grey. On the reader's own row
426
+ * its ink lifts to the row's, as the count's does; the suite measures the
427
+ * pair on every ground a row can have.
428
+ */
429
+ .crewlet-nav-item__badge--quiet {
430
+ background: var(--color-fill-soft);
431
+ color: var(--color-text-secondary);
432
+ }
433
+
434
+ .crewlet-nav-item__row[aria-current='page'] .crewlet-nav-item__badge--quiet {
435
+ color: inherit;
436
+ }
437
+
418
438
  /* Beside a count the badge is the second figure, not a second push to the
419
439
  end: two auto margins would split the room between them and float the
420
440
  count into the middle of the row. */
@@ -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';
@@ -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-VGNB35NJ.js').then(
13
13
  (module) => {
14
14
  engine = module.Editor;
15
15
  return engine;
@@ -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,8 +1,9 @@
1
1
  import { Eyebrow } from './chunk-RK4XPHVG.js';
2
+ import { returnFocus } from './chunk-4ITETIGZ.js';
2
3
  import { useHeadingLevel, HeadingLevelProvider, nextHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
3
4
  import { cx } from './chunk-ODEQTPFM.js';
4
- import './ReadingPane-VLYOWMCM.css';
5
- import { createContext, useId, useContext } from 'react';
5
+ import './ReadingPane-VFTRDPC5.css';
6
+ import { createContext, useId, useRef, useState, useEffect, useLayoutEffect, createElement, useContext } from 'react';
6
7
  import { ClockGlyph, CheckGlyph } from '@crewlethq/icons/glyphs';
7
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
9
 
@@ -12,19 +13,62 @@ function usePane(part) {
12
13
  if (pane === null) throw new Error(`${part} must be drawn inside a ReadingPane.`);
13
14
  return pane;
14
15
  }
15
- function ReadingPane({ headingLevel, className, children, ...rest }) {
16
+ var READING_PANE_ENTER = { animations: ["crewlet-reading-pane-enter"] };
17
+ function ReadingPane({ headingLevel, contentKey, focusTarget, className, children, ...rest }) {
16
18
  const titleId = useId();
17
19
  const outer = useHeadingLevel();
18
20
  const level = headingLevel ?? outer;
19
21
  const named = rest["aria-label"] !== void 0 || rest["aria-labelledby"] !== void 0;
20
- return /* @__PURE__ */ jsx("div", { className: "crewlet-reading-pane", children: /* @__PURE__ */ jsx(
22
+ const pane = useRef(null);
23
+ const column = useRef(null);
24
+ const [drawnKey, setDrawnKey] = useState(contentKey);
25
+ const [moved, setMoved] = useState(false);
26
+ if (drawnKey !== contentKey) {
27
+ setDrawnKey(contentKey);
28
+ setMoved(true);
29
+ }
30
+ const owned = useRef(false);
31
+ useEffect(() => {
32
+ const root = pane.current;
33
+ if (!root) return void 0;
34
+ const doc = root.ownerDocument;
35
+ const inside = (node) => node instanceof Node && root.contains(node);
36
+ const focusIn = () => {
37
+ owned.current = true;
38
+ };
39
+ const focusOut = (event) => {
40
+ if (event.relatedTarget !== null && !inside(event.relatedTarget)) owned.current = false;
41
+ };
42
+ const press = (event) => {
43
+ owned.current = inside(event.target);
44
+ };
45
+ root.addEventListener("focusin", focusIn);
46
+ root.addEventListener("focusout", focusOut);
47
+ doc.addEventListener("pointerdown", press, true);
48
+ return () => {
49
+ root.removeEventListener("focusin", focusIn);
50
+ root.removeEventListener("focusout", focusOut);
51
+ doc.removeEventListener("pointerdown", press, true);
52
+ };
53
+ }, []);
54
+ const settled = useRef(contentKey);
55
+ useLayoutEffect(() => {
56
+ if (contentKey === settled.current) return;
57
+ settled.current = contentKey;
58
+ if (!owned.current) return;
59
+ const target = focusTarget?.() ?? column.current?.querySelector(".crewlet-reading-pane__title");
60
+ returnFocus(target, { preventScroll: true });
61
+ }, [contentKey, focusTarget]);
62
+ return /* @__PURE__ */ jsx("div", { ref: pane, className: "crewlet-reading-pane", children: /* @__PURE__ */ createElement(
21
63
  "article",
22
64
  {
23
65
  ...rest,
66
+ key: contentKey,
67
+ ref: column,
24
68
  "aria-labelledby": named ? rest["aria-labelledby"] : titleId,
25
- className: cx("crewlet-reading-pane__column", className),
26
- children: /* @__PURE__ */ jsx(ReadingPaneContext.Provider, { value: { titleId, level }, children: /* @__PURE__ */ jsx(HeadingLevelProvider, { level: nextHeadingLevel(level), children }) })
27
- }
69
+ className: cx("crewlet-reading-pane__column", moved && "crewlet-reading-pane__column--entering", className)
70
+ },
71
+ /* @__PURE__ */ jsx(ReadingPaneContext.Provider, { value: { titleId, level }, children: /* @__PURE__ */ jsx(HeadingLevelProvider, { level: nextHeadingLevel(level), children }) })
28
72
  ) });
29
73
  }
30
74
  function ReadingPaneByline({ start, leading, note, className, children, ...rest }) {
@@ -46,7 +90,11 @@ function ReadingPaneByline({ start, leading, note, className, children, ...rest
46
90
  function ReadingPaneTitle({ className, children, ...rest }) {
47
91
  const { titleId, level } = usePane("ReadingPane.Title");
48
92
  const Heading = headingTag(level);
49
- return /* @__PURE__ */ jsx(Heading, { id: titleId, ...rest, className: cx("crewlet-reading-pane__title", className), children });
93
+ return (
94
+ // Focusable from code alone, for the pane to hand focus to when its item
95
+ // changes; never a tab stop.
96
+ /* @__PURE__ */ jsx(Heading, { id: titleId, tabIndex: -1, ...rest, className: cx("crewlet-reading-pane__title", className), children })
97
+ );
50
98
  }
51
99
  function ReadingPaneLead({ className, children, ...rest }) {
52
100
  return /* @__PURE__ */ jsx("div", { ...rest, className: cx("crewlet-reading-pane__lead", className), children });
@@ -109,4 +157,4 @@ ReadingPane.Reasoning = ReadingPaneReasoning;
109
157
  ReadingPane.Outcome = ReadingPaneOutcome;
110
158
  ReadingPane.Section = ReadingPaneSection;
111
159
 
112
- export { ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle };
160
+ export { READING_PANE_ENTER, ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle };
@@ -0,0 +1,10 @@
1
+ // src/utils/developing.ts
2
+ function developing() {
3
+ try {
4
+ return process.env.NODE_ENV !== "production";
5
+ } catch {
6
+ return false;
7
+ }
8
+ }
9
+
10
+ export { developing };
@@ -1,4 +1,4 @@
1
- import { SidebarNav } from './chunk-25JQNHTC.js';
1
+ import { SidebarNav } from './chunk-BRK3HXGZ.js';
2
2
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './SectionFrame-M62UUVFQ.css';
@@ -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';