@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,5 +1,10 @@
1
- export { InboxGroup, InboxList, InboxMore, InboxRow, InboxToggle } from '../chunk-QPHD4UUG.js';
1
+ export { INBOX_ROW_LEAVE, InboxGroup, InboxList, InboxMore, InboxRow, InboxToggle } from '../chunk-F6ZUM66S.js';
2
2
  import '../chunk-RK4XPHVG.js';
3
+ import '../chunk-6C7GQOBV.js';
4
+ import '../chunk-PCAT2EFB.js';
5
+ import '../chunk-YJQXESOJ.js';
6
+ import '../chunk-HTS5RJ7S.js';
7
+ import '../chunk-4ITETIGZ.js';
3
8
  import '../chunk-PQADV6P6.js';
4
9
  import '../chunk-UT6CW3C7.js';
5
10
  import '../chunk-ODEQTPFM.js';
@@ -26,6 +26,9 @@
26
26
 
27
27
  /* The heading's own line box is the label's, so the label sits where it is drawn. */
28
28
  .crewlet-inbox-list__label {
29
+ /* The arrival's wash stands behind the label's words, inside it. */
30
+ position: relative;
31
+ isolation: isolate;
29
32
  margin: 0;
30
33
  padding: var(--spacing-3) var(--spacing-2) var(--spacing-1);
31
34
  font: inherit;
@@ -33,6 +36,32 @@
33
36
  line-height: var(--font-line-height-snug);
34
37
  }
35
38
 
39
+ /*
40
+ * A ROW ARRIVED: a wash of the accent that fades back to the ground, over the
41
+ * row itself, or over a group's label and count where the row landed in a
42
+ * closed group. The row's keyframes name no last step, so the wash returns
43
+ * to whatever the row draws of its own (hover, selected).
44
+ */
45
+ .crewlet-inbox-list__arrival {
46
+ position: absolute;
47
+ inset: 0;
48
+ z-index: -1;
49
+ border-radius: var(--radius-xs);
50
+ pointer-events: none;
51
+ animation: crewlet-inbox-arrive calc(var(--motion-duration-moderate) * 8) var(--motion-easing-out) both;
52
+ }
53
+
54
+ .crewlet-inbox-row--arrived {
55
+ animation: crewlet-inbox-arrive calc(var(--motion-duration-moderate) * 8) var(--motion-easing-out);
56
+ }
57
+
58
+ @keyframes crewlet-inbox-arrive {
59
+ 0%,
60
+ 40% {
61
+ background: var(--color-brand-accent-soft-strong);
62
+ }
63
+ }
64
+
36
65
  /* The count after a label, in the quiet ink and the label's own register. */
37
66
  .crewlet-inbox-list__count {
38
67
  margin-inline-start: var(--spacing-1);
@@ -107,12 +136,38 @@
107
136
  * a selected row takes no hover on top of it: both are a background on the
108
137
  * same element, and a composite of the two is a colour nothing has measured.
109
138
  */
139
+ /* ONE TRACK, so a leaving row can close its height (below). */
110
140
  .crewlet-inbox-row {
141
+ display: grid;
142
+ grid-template-rows: 1fr;
111
143
  min-width: 0;
112
144
  border-radius: var(--radius-md);
113
145
  transition: background var(--motion-duration-fast) var(--motion-easing-default);
114
146
  }
115
147
 
148
+ .crewlet-inbox-row__body {
149
+ min-width: 0;
150
+ min-height: 0;
151
+ }
152
+
153
+ /*
154
+ * A ROW LEAVING closes its one track to nothing and fades, on the slow step
155
+ * with the emphasized curve, the motion a column opens and shuts by, so the
156
+ * rows under it slide up into its place. The shell's presence waits on the
157
+ * track's transition (`INBOX_ROW_LEAVE`), and the row is inert all the while.
158
+ */
159
+ .crewlet-inbox-row--leaving {
160
+ grid-template-rows: 0fr;
161
+ opacity: 0;
162
+ transition:
163
+ grid-template-rows var(--motion-duration-slow) var(--motion-easing-emphasized),
164
+ opacity var(--motion-duration-moderate) var(--motion-easing-out);
165
+ }
166
+
167
+ .crewlet-inbox-row--leaving .crewlet-inbox-row__body {
168
+ overflow: hidden;
169
+ }
170
+
116
171
  .crewlet-inbox-row:hover {
117
172
  background: var(--color-surface-hover);
118
173
  }
@@ -349,7 +404,7 @@
349
404
  }
350
405
 
351
406
  /* A row with no leading slot: the words start at the control's own pad, and so does the task. */
352
- .crewlet-inbox-row:not(:has(.crewlet-inbox-row__leading)) > .crewlet-inbox-row__aside {
407
+ .crewlet-inbox-row:not(:has(.crewlet-inbox-row__leading)) .crewlet-inbox-row__aside {
353
408
  padding-inline-start: var(--spacing-2);
354
409
  }
355
410
 
@@ -385,10 +440,16 @@
385
440
  }
386
441
 
387
442
  @media (prefers-reduced-motion: reduce) {
388
- .crewlet-inbox-row {
443
+ .crewlet-inbox-row,
444
+ .crewlet-inbox-row--leaving {
389
445
  transition: none;
390
446
  }
391
447
 
448
+ .crewlet-inbox-row--arrived,
449
+ .crewlet-inbox-list__arrival {
450
+ animation: none;
451
+ }
452
+
392
453
  .crewlet-inbox-list__toggle,
393
454
  .crewlet-inbox-list__chevron {
394
455
  transition: none;
@@ -1,7 +1,8 @@
1
- export { LinkInterstitial, openExternal } from '../chunk-6YBBQAEM.js';
2
- import '../chunk-XXDB6KPV.js';
1
+ export { LinkInterstitial, openExternal } from '../chunk-MYAARF4Z.js';
2
+ import '../chunk-ZXXZESCD.js';
3
3
  import '../chunk-PLL7ZJHY.js';
4
4
  import '../chunk-BPCY7ZID.js';
5
+ import '../chunk-L72URIHR.js';
5
6
  import '../chunk-DGXZ635L.js';
6
7
  import '../chunk-XSPCITPN.js';
7
8
  import '../chunk-OMV5W53A.js';
@@ -21,6 +21,12 @@ export interface ListDetailProps extends Omit<HTMLAttributes<HTMLDivElement>, 'c
21
21
  * column. The list column is `--crewlet-list-detail-list` wide (17rem by
22
22
  * default), with a hairline between the two.
23
23
  *
24
+ * THE DETAIL'S SCROLLBAR IS ON THE SHEET'S EDGE. Placed directly in a fill
25
+ * screen's column, it reaches past the column's end pad, and the detail
26
+ * keeps the screen's side inset inside itself, with its scrollbar's gutter
27
+ * always reserved: its content ends under the bar's last control, and a
28
+ * trailing control never touches the scrollbar.
29
+ *
24
30
  * BELOW 640px OF ITS OWN WIDTH IT IS ONE PANE, the one `showing` names: the
25
31
  * list and a reading detail do not both fit, whether the window is a phone or
26
32
  * an aside beside the screen has taken the room. The application gives its
@@ -1,2 +1,2 @@
1
- export { ListDetail } from '../chunk-YBC2CYPD.js';
1
+ export { ListDetail } from '../chunk-O4VTQMEF.js';
2
2
  import '../chunk-ODEQTPFM.js';
@@ -10,6 +10,17 @@
10
10
  * drew the detail 130px wide beside a 17rem list. The phone rule below is the
11
11
  * one decision that stays the window's: on a phone the page scrolls as a
12
12
  * whole rather than each pane on its own.
13
+ *
14
+ * ON A SCREEN THAT FILLS THE WINDOW, THE PANE THAT SCROLLS IS ITS OUTERMOST
15
+ * BOX, and its inset is padding inside it. Standing directly in the fill
16
+ * column, the ListDetail reaches past the column's end pad to the sheet's
17
+ * edge (below), so the scrollbar is the sheet's last pixel; the detail then
18
+ * reserves its scrollbar's gutter whether or not it scrolls, and keeps the
19
+ * screen's side inset between its content and that gutter, so a trailing
20
+ * control (a header's Disconnect, a tile's Open) never touches the scrollbar,
21
+ * does not move when the detail grows long enough to scroll, and ends under
22
+ * the bar's last control. Anywhere else (a scrolling or a flush screen, or
23
+ * outside a shell) it is as wide as its box, with nothing reserved.
13
24
  */
14
25
 
15
26
  /* THE HAIRLINE STANDS MIDWAY between the two panes: the list's inset before it
@@ -17,6 +28,9 @@
17
28
  the list than to the detail it divides it from; the two still add to 64. */
18
29
  .crewlet-list-detail {
19
30
  --crewlet-list-detail-gutter: var(--spacing-7);
31
+ /* The inset at a scrolling pane's end: the screen's own side inset in a
32
+ shell, so the page's two edges match. */
33
+ --crewlet-list-detail-end: var(--crewlet-app-shell-inset, var(--spacing-5));
20
34
 
21
35
  container: crewlet-list-detail / inline-size;
22
36
  display: flex;
@@ -27,6 +41,21 @@
27
41
  min-height: 0;
28
42
  }
29
43
 
44
+ /* STANDING IN A FILL SCREEN'S COLUMN, IT TAKES THE COLUMN'S END PAD BACK: the
45
+ inset and the scrollbar's width, which the shell publishes for exactly
46
+ this (`--crewlet-app-shell-bleed-end`, AppShell.css). The detail keeps the
47
+ same inset inside itself, and reserves its gutter, there and only there. */
48
+ :where(.crewlet-app-shell--fill:not(.crewlet-app-shell--fill-flush) .crewlet-app-shell__content) > .crewlet-list-detail {
49
+ margin-right: calc(var(--crewlet-app-shell-bleed-end, 0px) * -1);
50
+ }
51
+
52
+ :where(.crewlet-app-shell--fill:not(.crewlet-app-shell--fill-flush) .crewlet-app-shell__content)
53
+ > .crewlet-list-detail
54
+ .crewlet-list-detail__detail {
55
+ padding-right: var(--crewlet-list-detail-end);
56
+ scrollbar-gutter: stable;
57
+ }
58
+
30
59
  .crewlet-list-detail__panes {
31
60
  display: grid;
32
61
  flex: 1 1 auto;
@@ -68,6 +97,15 @@
68
97
  overflow-y: auto;
69
98
  }
70
99
 
100
+ /* The list is the pane that scrolls now, and takes the detail's end where
101
+ the ListDetail reaches the sheet. */
102
+ :where(.crewlet-app-shell--fill:not(.crewlet-app-shell--fill-flush) .crewlet-app-shell__content)
103
+ > .crewlet-list-detail
104
+ .crewlet-list-detail__list {
105
+ padding-right: var(--crewlet-list-detail-end);
106
+ scrollbar-gutter: stable;
107
+ }
108
+
71
109
  .crewlet-list-detail--showing-list .crewlet-list-detail__detail,
72
110
  .crewlet-list-detail--showing-detail .crewlet-list-detail__list {
73
111
  display: none;
@@ -1,5 +1,6 @@
1
- export { ListInput, withDraft } from '../chunk-KLAVEJIO.js';
2
- import '../chunk-MPVMB2DV.js';
1
+ export { ListInput, withDraft } from '../chunk-GLKQHN7G.js';
2
+ import '../chunk-BVML4UVB.js';
3
+ import '../chunk-YJQXESOJ.js';
3
4
  import '../chunk-O7N6W52M.js';
4
5
  import '../chunk-PGCLHYVP.js';
5
6
  import '../chunk-CMAZZY2I.js';
@@ -1,11 +1,12 @@
1
- export { MARKDOWN_FORMATS, MARKDOWN_TEXT_FORMATS, MarkdownEditor, formatMarkdown, insertMarkdown, markdownWords } from '../chunk-2KJCUCVE.js';
1
+ export { MARKDOWN_FORMATS, MARKDOWN_TEXT_FORMATS, MarkdownEditor, formatMarkdown, insertMarkdown, markdownWords } from '../chunk-TQKQRS2J.js';
2
2
  import '../chunk-NXFTCPF6.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-DGXZ635L.js';
10
11
  import '../chunk-XSPCITPN.js';
11
12
  import '../chunk-OMV5W53A.js';
@@ -1 +1 @@
1
- export { useMediaMatch } from './useMediaMatch.js';
1
+ export { REDUCED_MOTION_QUERY, prefersReducedMotion, useMediaMatch } from './useMediaMatch.js';
@@ -1 +1 @@
1
- export { useMediaMatch } from '../chunk-RTPQDNW3.js';
1
+ export { REDUCED_MOTION_QUERY, prefersReducedMotion, useMediaMatch } from '../chunk-YJQXESOJ.js';
@@ -17,3 +17,17 @@
17
17
  * the wide layout is the one that needs no JavaScript to be usable.
18
18
  */
19
19
  export declare function useMediaMatch(query: string): boolean;
20
+ /**
21
+ * The reader's request for less motion: the one spelling of the query every
22
+ * component asks, through `useMediaMatch` during render and through
23
+ * `prefersReducedMotion` outside it. A copy of the string is a copy that can
24
+ * drift, and a query spelt one character off never matches.
25
+ */
26
+ export declare const REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
27
+ /**
28
+ * Whether the reader has asked for less motion, read once, for code outside a
29
+ * render: a scroll, a timer's length. `view` is the window the element lives
30
+ * in (`ownerDocument.defaultView`), the page's own by default. False on the
31
+ * server and wherever `matchMedia` is missing, as `useMediaMatch` answers.
32
+ */
33
+ export declare function prefersReducedMotion(view?: Window | null): boolean;
@@ -1,4 +1,5 @@
1
- export { Menu } from '../chunk-YOJAGKTS.js';
1
+ export { Menu } from '../chunk-TGGYSQRD.js';
2
+ import '../chunk-L72URIHR.js';
2
3
  import '../chunk-DGXZ635L.js';
3
4
  import '../chunk-XSPCITPN.js';
4
5
  import '../chunk-OMV5W53A.js';
@@ -1,10 +1,11 @@
1
- export { MERGE_CONFLICTS_LABELS, MergeConflicts } from '../chunk-OAHRMR4U.js';
1
+ export { MERGE_CONFLICTS_LABELS, MergeConflicts } from '../chunk-C42XW5YP.js';
2
2
  import '../chunk-36WK24AI.js';
3
- import '../chunk-GZVAZ3LL.js';
4
- import '../chunk-HCUECVZ3.js';
3
+ import '../chunk-AZYE7NR4.js';
4
+ import '../chunk-MVKUE4FI.js';
5
5
  import '../chunk-EGMQURBR.js';
6
6
  import '../chunk-CYQBDZ6M.js';
7
- import '../chunk-YOJAGKTS.js';
7
+ import '../chunk-TGGYSQRD.js';
8
+ import '../chunk-L72URIHR.js';
8
9
  import '../chunk-DGXZ635L.js';
9
10
  import '../chunk-XSPCITPN.js';
10
11
  import '../chunk-OMV5W53A.js';
@@ -1,9 +1,11 @@
1
- export { ActionDivider, MessageAction, MessageActions, QuickReaction } from '../chunk-2TOGGCDM.js';
1
+ export { ActionDivider, MessageAction, MessageActions, QuickReaction } from '../chunk-LT44RL62.js';
2
2
  import '../chunk-TDFLCUBE.js';
3
- import '../chunk-MPYRC3GO.js';
3
+ import '../chunk-SPNTUQBV.js';
4
4
  import '../chunk-NXFTCPF6.js';
5
- import '../chunk-SM4P2SHB.js';
6
- import '../chunk-3QQIGMY3.js';
5
+ import '../chunk-EC6EUIAD.js';
6
+ import '../chunk-7ZSEUO5Q.js';
7
+ import '../chunk-HTS5RJ7S.js';
8
+ import '../chunk-L72URIHR.js';
7
9
  import '../chunk-O7N6W52M.js';
8
10
  import '../chunk-PGCLHYVP.js';
9
11
  import '../chunk-OMV5W53A.js';
@@ -1,4 +1,5 @@
1
- export { ConfirmModal, Modal } from '../chunk-XXDB6KPV.js';
1
+ export { ConfirmModal, Modal } from '../chunk-ZXXZESCD.js';
2
+ import '../chunk-L72URIHR.js';
2
3
  import '../chunk-DGXZ635L.js';
3
4
  import '../chunk-XSPCITPN.js';
4
5
  import '../chunk-OMV5W53A.js';
@@ -1,7 +1,7 @@
1
- export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-FVZPSTL2.js';
1
+ export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-G4EHZHKM.js';
2
2
  import '../chunk-KOJPDCGQ.js';
3
- import '../chunk-3LI4TRUR.js';
4
3
  import '../chunk-KBZO4B33.js';
4
+ import '../chunk-3LI4TRUR.js';
5
5
  import '../chunk-ZWCK4N4L.js';
6
6
  import '../chunk-FLW5U7YS.js';
7
7
  import '../chunk-LBGKLYBY.js';
@@ -1,2 +1,3 @@
1
- export { Outline, scrollToHeading, useActiveHeading } from '../chunk-A5YKNRG6.js';
1
+ export { Outline, scrollToHeading, useActiveHeading } from '../chunk-7QCSISHM.js';
2
+ import '../chunk-YJQXESOJ.js';
2
3
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,5 @@
1
- export { Popover } from '../chunk-SM4P2SHB.js';
1
+ export { Popover } from '../chunk-EC6EUIAD.js';
2
+ import '../chunk-L72URIHR.js';
2
3
  import '../chunk-OMV5W53A.js';
3
4
  import '../chunk-TUEM2XIW.js';
4
5
  import '../chunk-4ITETIGZ.js';
@@ -0,0 +1,2 @@
1
+ export { afterMotion, releaseFocus, runningMotion, usePresence } from './usePresence.js';
2
+ export type { MotionOwnership, Presence, PresenceOptions } from './usePresence.js';
@@ -0,0 +1,4 @@
1
+ export { afterMotion, releaseFocus, runningMotion, usePresence } from '../chunk-PCAT2EFB.js';
2
+ import '../chunk-YJQXESOJ.js';
3
+ import '../chunk-HTS5RJ7S.js';
4
+ import '../chunk-4ITETIGZ.js';
@@ -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';
@@ -3,7 +3,23 @@ import { type HeadingLevel } from '../utils/headingLevel.js';
3
3
  export interface ReadingPaneProps extends HTMLAttributes<HTMLElement> {
4
4
  /** Overrides the level the title is rendered at. */
5
5
  headingLevel?: HeadingLevel | undefined;
6
+ /**
7
+ * What the pane shows, as a key: the item's id. A new value draws the new
8
+ * item afresh and plays it in, a short fade and rise on the moderate step
9
+ * (`READING_PANE_ENTER` on the column; nothing moves under reduced motion),
10
+ * and moves focus to its title, without scrolling the page, where the reader
11
+ * was last in the pane (focus came into it, or a press landed in it): the
12
+ * control they answered with went with the old item. A reader in the list
13
+ * beside the pane, or nowhere (a live update), keeps their place.
14
+ */
15
+ contentKey?: string | number | undefined;
16
+ /** Where focus goes after a change of `contentKey`, in place of the title. */
17
+ focusTarget?: (() => HTMLElement | null | undefined) | undefined;
6
18
  }
19
+ /** The keyframes a new item plays in by, on the column: the one motion a suite fakes. */
20
+ export declare const READING_PANE_ENTER: {
21
+ readonly animations: readonly ["crewlet-reading-pane-enter"];
22
+ };
7
23
  /**
8
24
  * One item read in full, top to bottom, in one column: the line saying who is
9
25
  * asking and about what, the question in large type, its context, the
@@ -19,7 +35,7 @@ export interface ReadingPaneProps extends HTMLAttributes<HTMLElement> {
19
35
  * The article is named by its title, so a reader moving by landmark hears the
20
36
  * question rather than "article".
21
37
  */
22
- export declare function ReadingPane({ headingLevel, className, children, ...rest }: ReadingPaneProps): import("react").JSX.Element;
38
+ export declare function ReadingPane({ headingLevel, contentKey, focusTarget, className, children, ...rest }: ReadingPaneProps): import("react").JSX.Element;
23
39
  export declare namespace ReadingPane {
24
40
  var Byline: typeof ReadingPaneByline;
25
41
  var Title: typeof ReadingPaneTitle;
@@ -1,3 +1,3 @@
1
1
  import './ReadingPane.css';
2
- export { ReadingPane, ReadingPaneByline, ReadingPaneTitle, ReadingPaneLead, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneOutcome, ReadingPaneSection, } from './ReadingPane.js';
2
+ export { ReadingPane, ReadingPaneByline, ReadingPaneTitle, ReadingPaneLead, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneOutcome, ReadingPaneSection, READING_PANE_ENTER, } from './ReadingPane.js';
3
3
  export type { ReadingPaneProps, ReadingPaneBylineProps, ReadingPaneTitleProps, ReadingPaneLeadProps, ReadingPaneQuoteProps, ReadingPaneReasoningProps, ReadingPaneOutcomeProps, ReadingPaneSectionProps, } from './ReadingPane.js';
@@ -1,4 +1,5 @@
1
- export { ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle } from '../chunk-Q7N2ATMC.js';
1
+ export { READING_PANE_ENTER, ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle } from '../chunk-64JNKLLP.js';
2
2
  import '../chunk-RK4XPHVG.js';
3
+ import '../chunk-4ITETIGZ.js';
3
4
  import '../chunk-PQADV6P6.js';
4
5
  import '../chunk-ODEQTPFM.js';
@@ -32,6 +32,25 @@
32
32
  }
33
33
  }
34
34
 
35
+ /* A NEW ITEM PLAYS IN (`contentKey`): a short fade and rise, so the reader
36
+ sees the pane move on rather than its words change under them. */
37
+ .crewlet-reading-pane__column--entering {
38
+ animation: crewlet-reading-pane-enter var(--motion-duration-moderate) var(--motion-easing-out);
39
+ }
40
+
41
+ @keyframes crewlet-reading-pane-enter {
42
+ from {
43
+ opacity: 0;
44
+ transform: translateY(var(--spacing-2));
45
+ }
46
+ }
47
+
48
+ @media (prefers-reduced-motion: reduce) {
49
+ .crewlet-reading-pane__column--entering {
50
+ animation: none;
51
+ }
52
+ }
53
+
35
54
  /* ---- The byline -------------------------------------------------------- */
36
55
 
37
56
  .crewlet-reading-pane__byline {
@@ -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-3AMWXJQX.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,5 +1,5 @@
1
- export { SectionFrame, SectionFrameBody, SectionFrameNav } from '../chunk-YRNNUCQP.js';
2
- import '../chunk-25JQNHTC.js';
1
+ export { SectionFrame, SectionFrameBody, SectionFrameNav } from '../chunk-7BDBO2NP.js';
2
+ import '../chunk-BRK3HXGZ.js';
3
3
  import '../chunk-TEV5REGB.js';
4
4
  import '../chunk-HBDA76EZ.js';
5
5
  import '../chunk-2YTOOH3A.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,15 +1,16 @@
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
+ import '../chunk-YGRTX67J.js';
4
5
  import '../chunk-T5GBTXNC.js';
5
6
  import '../chunk-STJ7QBC3.js';
6
7
  import '../chunk-DTIW4CHZ.js';
7
- import '../chunk-YGRTX67J.js';
8
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';