cursedbelt 5.114.0 → 5.116.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 (243) hide show
  1. package/dist/react/Toast.d.ts.map +1 -1
  2. package/dist/react/Toast.js +36 -0
  3. package/dist/react/Toast.js.map +1 -1
  4. package/dist/react/components/AppShell.js +2 -2
  5. package/dist/react/components/AppShell.js.map +1 -1
  6. package/dist/react/components/AsyncPanel.d.ts +7 -1
  7. package/dist/react/components/AsyncPanel.d.ts.map +1 -1
  8. package/dist/react/components/AsyncPanel.js +7 -1
  9. package/dist/react/components/AsyncPanel.js.map +1 -1
  10. package/dist/react/components/BannerLane.d.ts +9 -2
  11. package/dist/react/components/BannerLane.d.ts.map +1 -1
  12. package/dist/react/components/BannerLane.js +1 -1
  13. package/dist/react/components/BannerLane.js.map +1 -1
  14. package/dist/react/components/ConnectionHealer.d.ts.map +1 -1
  15. package/dist/react/components/ConnectionHealer.js +4 -0
  16. package/dist/react/components/ConnectionHealer.js.map +1 -1
  17. package/dist/react/components/Modal.d.ts +11 -3
  18. package/dist/react/components/Modal.d.ts.map +1 -1
  19. package/dist/react/components/Modal.js +20 -6
  20. package/dist/react/components/Modal.js.map +1 -1
  21. package/dist/react/components/QueryBoundary.d.ts +9 -0
  22. package/dist/react/components/QueryBoundary.d.ts.map +1 -1
  23. package/dist/react/components/QueryBoundary.js +8 -1
  24. package/dist/react/components/QueryBoundary.js.map +1 -1
  25. package/dist/react/components/StaleNote.d.ts +25 -0
  26. package/dist/react/components/StaleNote.d.ts.map +1 -0
  27. package/dist/react/components/StaleNote.js +43 -0
  28. package/dist/react/components/StaleNote.js.map +1 -0
  29. package/dist/react/createApiHooks.d.ts +8 -0
  30. package/dist/react/createApiHooks.d.ts.map +1 -1
  31. package/dist/react/createApiHooks.js.map +1 -1
  32. package/dist/react/index.d.ts +1 -0
  33. package/dist/react/index.d.ts.map +1 -1
  34. package/dist/react/index.js +1 -0
  35. package/dist/react/index.js.map +1 -1
  36. package/dist/react/media/CutTimeline.d.ts +11 -2
  37. package/dist/react/media/CutTimeline.d.ts.map +1 -1
  38. package/dist/react/media/CutTimeline.js +105 -34
  39. package/dist/react/media/CutTimeline.js.map +1 -1
  40. package/dist/react/media/FrameGrabber.d.ts +7 -1
  41. package/dist/react/media/FrameGrabber.d.ts.map +1 -1
  42. package/dist/react/media/FrameGrabber.js +6 -17
  43. package/dist/react/media/FrameGrabber.js.map +1 -1
  44. package/dist/react/media/HoverScrubVideoThumb.d.ts.map +1 -1
  45. package/dist/react/media/HoverScrubVideoThumb.js +2 -0
  46. package/dist/react/media/HoverScrubVideoThumb.js.map +1 -1
  47. package/dist/react/media/PictureEditor.d.ts +7 -1
  48. package/dist/react/media/PictureEditor.d.ts.map +1 -1
  49. package/dist/react/media/PictureEditor.js +2 -2
  50. package/dist/react/media/PictureEditor.js.map +1 -1
  51. package/dist/react/media/ScrubControls.d.ts +117 -0
  52. package/dist/react/media/ScrubControls.d.ts.map +1 -0
  53. package/dist/react/media/ScrubControls.js +233 -0
  54. package/dist/react/media/ScrubControls.js.map +1 -0
  55. package/dist/react/media/TrimRangeSlider.d.ts +8 -1
  56. package/dist/react/media/TrimRangeSlider.d.ts.map +1 -1
  57. package/dist/react/media/TrimRangeSlider.js +65 -29
  58. package/dist/react/media/TrimRangeSlider.js.map +1 -1
  59. package/dist/react/media/VideoChapterEditor.d.ts +7 -1
  60. package/dist/react/media/VideoChapterEditor.d.ts.map +1 -1
  61. package/dist/react/media/VideoChapterEditor.js +2 -2
  62. package/dist/react/media/VideoChapterEditor.js.map +1 -1
  63. package/dist/react/media/VideoCutEditor.d.ts +8 -3
  64. package/dist/react/media/VideoCutEditor.d.ts.map +1 -1
  65. package/dist/react/media/VideoCutEditor.js +38 -20
  66. package/dist/react/media/VideoCutEditor.js.map +1 -1
  67. package/dist/react/media/VideoPlayer.d.ts +2 -2
  68. package/dist/react/media/VideoPlayer.d.ts.map +1 -1
  69. package/dist/react/media/VideoPlayer.js +41 -18
  70. package/dist/react/media/VideoPlayer.js.map +1 -1
  71. package/dist/react/media/VideoTurner.d.ts +7 -1
  72. package/dist/react/media/VideoTurner.d.ts.map +1 -1
  73. package/dist/react/media/VideoTurner.js +2 -2
  74. package/dist/react/media/VideoTurner.js.map +1 -1
  75. package/dist/react/media/cutTimelineMath.d.ts +8 -0
  76. package/dist/react/media/cutTimelineMath.d.ts.map +1 -1
  77. package/dist/react/media/cutTimelineMath.js +11 -4
  78. package/dist/react/media/cutTimelineMath.js.map +1 -1
  79. package/dist/react/media/denseGallery.css +8 -0
  80. package/dist/react/media/index.d.ts +2 -0
  81. package/dist/react/media/index.d.ts.map +1 -1
  82. package/dist/react/media/index.js +6 -0
  83. package/dist/react/media/index.js.map +1 -1
  84. package/dist/react/media/pictureEditor.css +7 -0
  85. package/dist/react/media/playbackWatch.d.ts +7 -1
  86. package/dist/react/media/playbackWatch.d.ts.map +1 -1
  87. package/dist/react/media/playbackWatch.js +14 -3
  88. package/dist/react/media/playbackWatch.js.map +1 -1
  89. package/dist/react/media/playerFineScrub.d.ts +7 -0
  90. package/dist/react/media/playerFineScrub.d.ts.map +1 -0
  91. package/dist/react/media/playerFineScrub.js +138 -0
  92. package/dist/react/media/playerFineScrub.js.map +1 -0
  93. package/dist/react/media/previewPlay.d.ts +10 -0
  94. package/dist/react/media/previewPlay.d.ts.map +1 -0
  95. package/dist/react/media/previewPlay.js +124 -0
  96. package/dist/react/media/previewPlay.js.map +1 -0
  97. package/dist/react/media/scrub.d.ts +132 -0
  98. package/dist/react/media/scrub.d.ts.map +1 -0
  99. package/dist/react/media/scrub.js +179 -0
  100. package/dist/react/media/scrub.js.map +1 -0
  101. package/dist/react/media/scrubControls.css +147 -0
  102. package/dist/react/media/sourceFault.d.ts +85 -2
  103. package/dist/react/media/sourceFault.d.ts.map +1 -1
  104. package/dist/react/media/sourceFault.js +289 -17
  105. package/dist/react/media/sourceFault.js.map +1 -1
  106. package/dist/react/media/usePlayerHealth.d.ts +47 -0
  107. package/dist/react/media/usePlayerHealth.d.ts.map +1 -0
  108. package/dist/react/media/usePlayerHealth.js +270 -0
  109. package/dist/react/media/usePlayerHealth.js.map +1 -0
  110. package/dist/react/media/videoCutEditor.css +157 -3
  111. package/dist/react/media/videoPlayer.css +40 -0
  112. package/dist/react/media-gallery/GalleryTable.d.ts.map +1 -1
  113. package/dist/react/media-gallery/GalleryTable.js +2 -0
  114. package/dist/react/media-gallery/GalleryTable.js.map +1 -1
  115. package/dist/react/media-gallery/MediaGallery.d.ts +18 -1
  116. package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
  117. package/dist/react/media-gallery/MediaGallery.js +98 -28
  118. package/dist/react/media-gallery/MediaGallery.js.map +1 -1
  119. package/dist/react/media-gallery/MediaMetaEditor.d.ts +7 -1
  120. package/dist/react/media-gallery/MediaMetaEditor.d.ts.map +1 -1
  121. package/dist/react/media-gallery/MediaMetaEditor.js +2 -2
  122. package/dist/react/media-gallery/MediaMetaEditor.js.map +1 -1
  123. package/dist/react/media-gallery/galleryDeepLink.d.ts +41 -0
  124. package/dist/react/media-gallery/galleryDeepLink.d.ts.map +1 -1
  125. package/dist/react/media-gallery/galleryDeepLink.js +89 -17
  126. package/dist/react/media-gallery/galleryDeepLink.js.map +1 -1
  127. package/dist/react/media-gallery/index.d.ts +1 -1
  128. package/dist/react/media-gallery/index.d.ts.map +1 -1
  129. package/dist/react/media-gallery/index.js +1 -1
  130. package/dist/react/media-gallery/index.js.map +1 -1
  131. package/dist/react/media-gallery/mediaGallery.css +25 -0
  132. package/dist/react/notifications/IssueViews.d.ts +68 -0
  133. package/dist/react/notifications/IssueViews.d.ts.map +1 -0
  134. package/dist/react/notifications/IssueViews.js +96 -0
  135. package/dist/react/notifications/IssueViews.js.map +1 -0
  136. package/dist/react/notifications/IssuesPage.d.ts +22 -0
  137. package/dist/react/notifications/IssuesPage.d.ts.map +1 -0
  138. package/dist/react/notifications/IssuesPage.js +148 -0
  139. package/dist/react/notifications/IssuesPage.js.map +1 -0
  140. package/dist/react/notifications/NotificationBell.d.ts +5 -0
  141. package/dist/react/notifications/NotificationBell.d.ts.map +1 -1
  142. package/dist/react/notifications/NotificationBell.js +4 -3
  143. package/dist/react/notifications/NotificationBell.js.map +1 -1
  144. package/dist/react/notifications/index.d.ts +4 -0
  145. package/dist/react/notifications/index.d.ts.map +1 -1
  146. package/dist/react/notifications/index.js +7 -0
  147. package/dist/react/notifications/index.js.map +1 -1
  148. package/dist/react/notifications/issueCapture.d.ts +16 -0
  149. package/dist/react/notifications/issueCapture.d.ts.map +1 -0
  150. package/dist/react/notifications/issueCapture.js +264 -0
  151. package/dist/react/notifications/issueCapture.js.map +1 -0
  152. package/dist/react/notifications/issues.d.ts +186 -0
  153. package/dist/react/notifications/issues.d.ts.map +1 -0
  154. package/dist/react/notifications/issues.js +437 -0
  155. package/dist/react/notifications/issues.js.map +1 -0
  156. package/dist/scripts/guardrailsEnforce.d.ts +7 -1
  157. package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
  158. package/dist/styles-areas/core.css +36 -35
  159. package/dist/styles-areas/disk-usage.css +2 -2
  160. package/dist/styles-areas/media.css +8 -7
  161. package/dist/styles-areas/nav.css +2 -2
  162. package/dist/styles-areas/notifications.css +11 -7
  163. package/dist/styles-areas/problem-detail.css +2 -2
  164. package/dist/styles-areas/stats.css +2 -2
  165. package/dist/styles-utilities.css +47 -2
  166. package/dist/theme.css +4 -0
  167. package/package.json +2 -2
  168. package/scripts/guardrails-baseline.json +2 -2
  169. package/scripts/guardrailsEnforce.spec.ts +60 -0
  170. package/scripts/guardrailsEnforce.ts +74 -4
  171. package/src/declaredImports.spec.ts +9 -1
  172. package/src/react/Toast.spec.tsx +19 -0
  173. package/src/react/Toast.tsx +35 -0
  174. package/src/react/components/AppShell.spec.tsx +3 -0
  175. package/src/react/components/AppShell.tsx +4 -2
  176. package/src/react/components/AsyncPanel.spec.tsx +21 -0
  177. package/src/react/components/AsyncPanel.tsx +18 -0
  178. package/src/react/components/BannerLane.tsx +19 -4
  179. package/src/react/components/ConnectionHealer.spec.tsx +12 -0
  180. package/src/react/components/ConnectionHealer.tsx +3 -0
  181. package/src/react/components/Modal.spec.tsx +34 -0
  182. package/src/react/components/Modal.tsx +61 -23
  183. package/src/react/components/QueryBoundary.tsx +26 -0
  184. package/src/react/components/StaleNote.spec.tsx +63 -0
  185. package/src/react/components/StaleNote.tsx +77 -0
  186. package/src/react/createApiHooks.ts +8 -0
  187. package/src/react/index.ts +1 -0
  188. package/src/react/media/CutTimeline.tsx +109 -20
  189. package/src/react/media/FrameGrabber.spec.tsx +4 -3
  190. package/src/react/media/FrameGrabber.tsx +21 -22
  191. package/src/react/media/HoverScrubVideoThumb.tsx +2 -0
  192. package/src/react/media/PictureEditor.tsx +8 -1
  193. package/src/react/media/ScrubControls.tsx +380 -0
  194. package/src/react/media/TrimRangeSlider.spec.tsx +41 -0
  195. package/src/react/media/TrimRangeSlider.tsx +105 -51
  196. package/src/react/media/VideoChapterEditor.tsx +8 -1
  197. package/src/react/media/VideoCutEditor.tsx +77 -27
  198. package/src/react/media/VideoPlayer.tsx +50 -24
  199. package/src/react/media/VideoTurner.tsx +8 -1
  200. package/src/react/media/cutTimelineMath.ts +12 -4
  201. package/src/react/media/denseGallery.css +8 -0
  202. package/src/react/media/index.ts +18 -0
  203. package/src/react/media/pictureEditor.css +7 -0
  204. package/src/react/media/playbackWatch.spec.ts +25 -0
  205. package/src/react/media/playbackWatch.ts +18 -4
  206. package/src/react/media/playerFineScrub.tsx +139 -0
  207. package/src/react/media/previewPlay.spec.tsx +74 -0
  208. package/src/react/media/previewPlay.ts +123 -0
  209. package/src/react/media/scrub.spec.ts +130 -0
  210. package/src/react/media/scrub.ts +245 -0
  211. package/src/react/media/scrubControls.css +147 -0
  212. package/src/react/media/sourceFault.spec.tsx +164 -6
  213. package/src/react/media/sourceFault.tsx +349 -21
  214. package/src/react/media/usePlayerHealth.spec.ts +156 -0
  215. package/src/react/media/usePlayerHealth.ts +331 -0
  216. package/src/react/media/videoCutEditor.css +157 -3
  217. package/src/react/media/videoPlayer.css +40 -0
  218. package/src/react/media-gallery/GalleryTable.tsx +2 -0
  219. package/src/react/media-gallery/MediaGallery.spec.tsx +114 -0
  220. package/src/react/media-gallery/MediaGallery.tsx +144 -17
  221. package/src/react/media-gallery/MediaMetaEditor.tsx +8 -1
  222. package/src/react/media-gallery/galleryDeepLink.spec.tsx +97 -1
  223. package/src/react/media-gallery/galleryDeepLink.ts +108 -16
  224. package/src/react/media-gallery/index.ts +3 -0
  225. package/src/react/media-gallery/mediaGallery.css +25 -0
  226. package/src/react/notifications/IssueViews.spec.tsx +290 -0
  227. package/src/react/notifications/IssueViews.tsx +190 -0
  228. package/src/react/notifications/IssuesPage.tsx +370 -0
  229. package/src/react/notifications/NotificationBell.tsx +6 -3
  230. package/src/react/notifications/index.ts +33 -0
  231. package/src/react/notifications/issueCapture.spec.ts +158 -0
  232. package/src/react/notifications/issueCapture.ts +264 -0
  233. package/src/react/notifications/issues.spec.ts +258 -0
  234. package/src/react/notifications/issues.ts +556 -0
  235. package/src/styles-areas/core.css +36 -35
  236. package/src/styles-areas/disk-usage.css +2 -2
  237. package/src/styles-areas/media.css +8 -7
  238. package/src/styles-areas/nav.css +2 -2
  239. package/src/styles-areas/notifications.css +11 -7
  240. package/src/styles-areas/problem-detail.css +2 -2
  241. package/src/styles-areas/stats.css +2 -2
  242. package/src/styles-utilities.css +47 -2
  243. package/src/theme.css +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG5F,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAmB5D;;;GAGG;AACH,iBAAS,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa,mBAEjF;AAED,4EAA4E;AAC5E,eAAO,MAAM,KAAK,EAAE,OAAO,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,SAAS,CAAA;CAIhE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAwBtE,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,+BA8BxD"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAI5F,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAqD5D;;;GAGG;AACH,iBAAS,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa,mBAEjF;AAED,4EAA4E;AAC5E,eAAO,MAAM,KAAK,EAAE,OAAO,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,SAAS,CAAA;CAIhE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAwBtE,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,+BA8BxD"}
@@ -14,6 +14,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
14
14
  */
15
15
  import { Toaster as SonnerToaster, toast as sonnerToast } from 'sonner';
16
16
  import { devWarnOnce } from './lib/devWarn.js';
17
+ import { notify } from './notifications/issues.js';
17
18
  /**
18
19
  * OVL-9: a toast confirms what happened ("Moved to trash") and offers Undo; it never carries an
19
20
  * error the reader must act on — that is an inline `Alert` where the problem is, because a toast
@@ -25,8 +26,43 @@ function errorToast(message, data) {
25
26
  devWarnOnce('toast:error-without-action', 'cursedbelt: toast.error() with no `action` — an error the reader must act on belongs in an inline <Alert tone="error"> ' +
26
27
  "where the problem is (OVL-9). Give the toast an action (Retry) if it can resolve it itself.");
27
28
  }
29
+ recordErrorToast(message, data);
28
30
  return sonnerToast.error(message, data);
29
31
  }
32
+ /** A short, stable key for a sentence, so the same refusal repeating is one row with a count. */
33
+ function keyOf(text) {
34
+ let hash = 0;
35
+ for (let i = 0; i < text.length; i += 1)
36
+ hash = (hash * 31 + text.charCodeAt(i)) | 0;
37
+ return (hash >>> 0).toString(36);
38
+ }
39
+ /**
40
+ * 🔴 Every error toast is also a NOTIFICATION — the one seam every app's "Couldn't …" passes through
41
+ * (`optimistic()`'s refusal, a failed save). A toast leaves in four seconds; the owner, 2026-11-05:
42
+ * *"At 11/5 5:58 I deleted a track and it said could not delete the track"* — and nothing anywhere
43
+ * said why. The notifications page keeps the sentence, its reason and the requests around it
44
+ * (`installIssueCapture`'s trail), so the DELETE that answered 409 is there to read and copy.
45
+ * Only text is recorded; a toast whose message is a React node keeps its own words to itself.
46
+ */
47
+ function recordErrorToast(message, data) {
48
+ try {
49
+ const title = typeof message === 'string' ? message : null;
50
+ if (!title)
51
+ return;
52
+ const description = typeof data?.description === 'string' ? data.description : undefined;
53
+ notify({
54
+ id: `action:${keyOf(title)}`,
55
+ tone: 'error',
56
+ area: 'action',
57
+ title,
58
+ outlook: 'It was shown for a moment at the bottom of the screen. If it keeps happening, copy the report — the requests around it say why.',
59
+ ...(description ? { facts: [{ label: 'Reason', value: description }] } : {}),
60
+ });
61
+ }
62
+ catch {
63
+ // The record never stands between him and the toast.
64
+ }
65
+ }
30
66
  /**
31
67
  * "Moved 3 files to trash" with an Undo — the shape OVL-9 asks every reversible action to take.
32
68
  * `onUndo` runs when Undo is pressed; the toast stays for 6s, long enough to reach the button.
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAsB,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C;;;;;GAKG;AACH,SAAS,UAAU,CAAC,OAAqB,EAAE,IAAoB;IAC7D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAClB,WAAW,CACT,4BAA4B,EAC5B,yHAAyH;YACvH,6FAA6F,CAChG,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,OAAqB,EAAE,MAAkB,EAAE,IAAoB;IAChF,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACvG,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,KAAK,GAAoD,MAAM,CAAC,MAAM,CACjF,CAAC,GAAG,IAAoC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,EACjE,WAAW,EACX,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CACvC,CAAC;AAIF;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG;IACjB,aAAa,EAAE,gBAAgB;IAC/B,iBAAiB,EAAE,eAAe;IAClC,eAAe,EAAE,2BAA2B;CACtB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,aAAa,GAAG,EAAE,MAAM,EAAE,6CAA6C,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC/F,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,6CAA6C,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAEhG,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAgB;IACvD,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,EAAE,EAClC,QAAQ,EAAC,cAAc,EACvB,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,aAAa,EAC3B,WAAW,QACX,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,0FAA0F;gBAC1F,yFAAyF;gBACzF,0FAA0F;gBAC1F,KAAK,EAAE,oIAAoI;gBAC3I,KAAK,EAAE,qBAAqB;gBAC5B,qFAAqF;gBACrF,8EAA8E;gBAC9E,WAAW,EAAE,gCAAgC;gBAC7C,YAAY,EAAE,yDAAyD;gBACvE,YAAY,EAAE,uDAAuD;gBACrE,WAAW,EAAE,0EAA0E;gBACvF,KAAK,EAAE,wDAAwD;gBAC/D,OAAO,EAAE,gDAAgD;gBACzD,OAAO,EAAE,gDAAgD;gBACzD,IAAI,EAAE,8CAA8C;aACrD;SACF,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":"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"}
@@ -145,7 +145,7 @@ function Shell({ children, nav, navGate = allowAllGate, activeHref, onNavigate,
145
145
  };
146
146
  const railHead = (collapsed) => {
147
147
  const foldOnBrandLine = collapsed || !hasCommandRow(collapsed);
148
- return (_jsxs("div", { "data-cb-rail-head": '', className: cn('flex flex-col gap-3', collapsed && 'items-center'), children: [(navHeader && !collapsed) || account || (foldOnBrandLine && onNavCollapsedChange) ? (_jsxs("div", { className: cn('flex min-w-0 items-center gap-2', collapsed && 'flex-col'), children: [navHeader && !collapsed ? _jsx("div", { className: 'flex min-w-0 flex-1 items-center overflow-hidden', children: navHeader }) : null, account ? (_jsx("div", { "data-cb-account": '', className: 'shrink-0', children: account })) : null, foldOnBrandLine ? foldButton(collapsed) : null] })) : null, railCommand(collapsed)] }));
148
+ return (_jsxs("div", { "data-cb-rail-head": '', className: cn('flex flex-col gap-3', collapsed && 'items-center'), children: [(navHeader && !collapsed) || account || (foldOnBrandLine && onNavCollapsedChange) ? (_jsxs("div", { className: cn('flex min-w-0 items-center gap-2', collapsed && 'flex-col'), children: [navHeader && !collapsed ? _jsx("div", { className: 'flex min-w-0 flex-1 items-center overflow-hidden', children: navHeader }) : null, account ? (_jsx("div", { "data-cb-account": '', "data-cb-nav-utility": '', className: 'shrink-0', children: account })) : null, foldOnBrandLine ? foldButton(collapsed) : null] })) : null, railCommand(collapsed)] }));
149
149
  };
150
150
  const sideNavProps = {
151
151
  model: nav,
@@ -183,6 +183,6 @@ function Shell({ children, nav, navGate = allowAllGate, activeHref, onNavigate,
183
183
  badgeTone: navBadgeTone === undefined && navBadges?.[d.id] === undefined ? undefined : navBadgeTone_(navBadges?.[d.id], navBadgeTone ?? 'alert'),
184
184
  unavailable: d.hostLimit && d.hostLimit.navigable !== true ? d.hostLimit.reason : undefined,
185
185
  linkProps: navLinkComponent ? undefined : { onClick: routeClick(d.path, onNavigate) },
186
- })) })) : headerCenter ? (headerCenter) : (commandBar) }), (pattern === 'top' || account) && (_jsxs("div", { "data-cb-header-zone": 'right', className: 'flex shrink-0 items-center gap-2', children: [pattern === 'top' ? commandBar : null, account && (_jsx("div", { "data-cb-account": '', className: 'shrink-0', children: account }))] }))] })), banners && banners.length > 0 ? _jsx(BannerLane, { banners: banners, className: cn(ambient && chrome) }) : null, _jsxs("div", { className: 'relative flex min-h-0 grow overflow-hidden', children: [pattern === 'side' && (_jsxs(_Fragment, { children: [_jsx("aside", { "data-cb-nav-rail": '', "data-cb-nav-collapsed": '', className: cn('hidden w-[var(--rail-w-collapsed)] border-r border-border md:flex md:shrink-0 md:flex-col', !navCollapsed && 'lg:hidden', chrome), children: _jsx(SideNav, { ...sideNavProps, collapsed: true, header: railHead(true) }) }), _jsx("aside", { "data-cb-nav-rail": '', className: cn('hidden w-[var(--rail-w)] border-r border-border', !navCollapsed && 'lg:flex lg:shrink-0 lg:flex-col', chrome), children: _jsx(SideNav, { ...sideNavProps, header: railHead(false), onPrefsChange: onNavPrefsChange, collapsedSections: navCollapsedSections, onSectionToggle: onNavSectionToggle }) })] })), _jsx("main", { className: 'flex min-h-0 min-w-0 grow flex-col', children: _jsx(ScrollArea, { space: scrollSpace, scrollRef: scrollRef, children: children }) })] }), showBottom && (_jsxs("div", { ref: bottomChromeRef, className: 'shrink-0 pb-[env(safe-area-inset-bottom,0px)]', children: [bottomDock && _jsx("div", { className: 'border-t border-border', children: bottomDock }), nav && (_jsx(PlaceBar, { className: cn('border-t border-border md:hidden', ambient && chrome), model: nav, gate: navGate, activeHref: activeHref, onNavigate: onNavigate, linkComponent: navLinkComponent, resolveIcon: resolveIcon, badges: navBadges, badgeTone: navBadgeTone, onCapture: onCapture, captureLabel: captureLabel, max: placeBarMax, labels: placeBarLabels }))] })), palette, ownPalette && nav && paletteMounted ? (_jsx(ShellCommandPalette, { model: nav, gate: navGate, open: paletteControls.open, onOpenChange: paletteControls.setOpen, onNavigate: navigate, resolveIcon: resolveIcon, currentPath: activeHref, places: true, sources: sources })) : null] }));
186
+ })) })) : headerCenter ? (headerCenter) : (commandBar) }), (pattern === 'top' || account) && (_jsxs("div", { "data-cb-header-zone": 'right', className: 'flex shrink-0 items-center gap-2', children: [pattern === 'top' ? commandBar : null, account && (_jsx("div", { "data-cb-account": '', "data-cb-nav-utility": '', className: 'shrink-0', children: account }))] }))] })), banners && banners.length > 0 ? _jsx(BannerLane, { banners: banners, className: cn(ambient && chrome) }) : null, _jsxs("div", { className: 'relative flex min-h-0 grow overflow-hidden', children: [pattern === 'side' && (_jsxs(_Fragment, { children: [_jsx("aside", { "data-cb-nav-rail": '', "data-cb-nav-collapsed": '', className: cn('hidden w-[var(--rail-w-collapsed)] border-r border-border md:flex md:shrink-0 md:flex-col', !navCollapsed && 'lg:hidden', chrome), children: _jsx(SideNav, { ...sideNavProps, collapsed: true, header: railHead(true) }) }), _jsx("aside", { "data-cb-nav-rail": '', className: cn('hidden w-[var(--rail-w)] border-r border-border', !navCollapsed && 'lg:flex lg:shrink-0 lg:flex-col', chrome), children: _jsx(SideNav, { ...sideNavProps, header: railHead(false), onPrefsChange: onNavPrefsChange, collapsedSections: navCollapsedSections, onSectionToggle: onNavSectionToggle }) })] })), _jsx("main", { className: 'flex min-h-0 min-w-0 grow flex-col', children: _jsx(ScrollArea, { space: scrollSpace, scrollRef: scrollRef, children: children }) })] }), showBottom && (_jsxs("div", { ref: bottomChromeRef, className: 'shrink-0 pb-[env(safe-area-inset-bottom,0px)]', children: [bottomDock && _jsx("div", { className: 'border-t border-border', children: bottomDock }), nav && (_jsx(PlaceBar, { className: cn('border-t border-border md:hidden', ambient && chrome), model: nav, gate: navGate, activeHref: activeHref, onNavigate: onNavigate, linkComponent: navLinkComponent, resolveIcon: resolveIcon, badges: navBadges, badgeTone: navBadgeTone, onCapture: onCapture, captureLabel: captureLabel, max: placeBarMax, labels: placeBarLabels }))] })), palette, ownPalette && nav && paletteMounted ? (_jsx(ShellCommandPalette, { model: nav, gate: navGate, open: paletteControls.open, onOpenChange: paletteControls.setOpen, onNavigate: navigate, resolveIcon: resolveIcon, currentPath: activeHref, places: true, sources: sources })) : null] }));
187
187
  }
188
188
  //# sourceMappingURL=AppShell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../../../src/react/components/AppShell.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../../../src/react/components/AppShell.tsx"],"names":[],"mappings":"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"}
@@ -34,6 +34,12 @@ export interface AsyncPanelProps {
34
34
  label?: string;
35
35
  /** Offered alongside the error — typically a retry Button. */
36
36
  onRetryAction?: ReactNode;
37
+ /**
38
+ * An error after the panel has shown its content keeps the content, under a {@link StaleNote}
39
+ * (STA-11) — a failed refresh is not a blank panel. Default on; `false` where the children cannot
40
+ * render without fresh data.
41
+ */
42
+ keepOnError?: boolean;
37
43
  children: ReactNode;
38
44
  }
39
45
  /** "just now", "12s ago", "3m ago", "2h ago", "4d ago" — the freshness stamp's wording. */
@@ -53,5 +59,5 @@ export declare function ageLabel(ms: number): string;
53
59
  * query, a `{ok:false}` section), which is the common case. Wrap it in an
54
60
  * `ErrorBoundary` as well if the child can also throw during render.
55
61
  */
56
- export declare function AsyncPanel({ loading, error, empty, emptyTitle, emptyDescription, skeletonRows, skeleton, refreshing, updatedAt, staleAfterMs, label, onRetryAction, children, ...rest }: AsyncPanelProps): import("react").JSX.Element;
62
+ export declare function AsyncPanel({ loading, error, empty, emptyTitle, emptyDescription, skeletonRows, skeleton, refreshing, updatedAt, staleAfterMs, label, onRetryAction, keepOnError, children, ...rest }: AsyncPanelProps): import("react").JSX.Element;
57
63
  //# sourceMappingURL=AsyncPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncPanel.d.ts","sourceRoot":"","sources":["../../../src/react/components/AsyncPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAGpE,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAEtE,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAS3C;AA6CD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,KAAK,EACL,KAAK,EACL,UAA8B,EAC9B,gBAAgB,EAChB,YAAgB,EAChB,QAAiB,EACjB,UAAkB,EAClB,SAAS,EACT,YAAY,EACZ,KAAK,EACL,aAAa,EACb,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,eAAe,+BAoCjB"}
1
+ {"version":3,"file":"AsyncPanel.d.ts","sourceRoot":"","sources":["../../../src/react/components/AsyncPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAGpE,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAGtE,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAS3C;AA6CD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,KAAK,EACL,KAAK,EACL,UAA8B,EAC9B,gBAAgB,EAChB,YAAgB,EAChB,QAAiB,EACjB,UAAkB,EAClB,SAAS,EACT,YAAY,EACZ,KAAK,EACL,aAAa,EACb,WAAkB,EAClB,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,eAAe,+BA8CjB"}
@@ -3,6 +3,7 @@ import { useEffect, useRef, useState } from 'react';
3
3
  import { Alert } from './Alert.js';
4
4
  import { EmptyState } from './EmptyState.js';
5
5
  import { ContentSkeleton } from './Skeleton.js';
6
+ import { StaleNote } from './StaleNote.js';
6
7
  /** "just now", "12s ago", "3m ago", "2h ago", "4d ago" — the freshness stamp's wording. */
7
8
  export function ageLabel(ms) {
8
9
  if (!Number.isFinite(ms) || ms < 5_000)
@@ -62,13 +63,18 @@ const messageOf = (error) => {
62
63
  * query, a `{ok:false}` section), which is the common case. Wrap it in an
63
64
  * `ErrorBoundary` as well if the child can also throw during render.
64
65
  */
65
- export function AsyncPanel({ loading, error, empty, emptyTitle = 'Nothing to show', emptyDescription, skeletonRows = 3, skeleton = 'rows', refreshing = false, updatedAt, staleAfterMs, label, onRetryAction, children, ...rest }) {
66
+ export function AsyncPanel({ loading, error, empty, emptyTitle = 'Nothing to show', emptyDescription, skeletonRows = 3, skeleton = 'rows', refreshing = false, updatedAt, staleAfterMs, label, onRetryAction, keepOnError = true, children, ...rest }) {
66
67
  // STA-2: once the panel has shown its content, a later `loading` is a REFRESH — the content
67
68
  // stays on screen. Only the first load draws the skeleton.
68
69
  const shownContent = useRef(false);
69
70
  if (loading && !shownContent.current) {
70
71
  return _jsx(ContentSkeleton, { ...rest, variant: skeleton, count: skeletonRows });
71
72
  }
73
+ if (error && keepOnError && shownContent.current) {
74
+ // 🔴 The owner, 2026-11-05: "stop having the full content disappear … I'd still like to see the
75
+ // content even though it was a little stale."
76
+ return (_jsxs("div", { ...rest, className: 'flex min-w-0 flex-col gap-2', "data-cb-async-panel": 'stale', children: [_jsx(StaleNote, { error: error, ...(updatedAt != null ? { at: updatedAt } : {}), ...(onRetryAction ? { action: onRetryAction } : {}) }), children] }));
77
+ }
72
78
  if (error) {
73
79
  return (_jsxs(Alert, { ...rest, tone: 'warning', actions: onRetryAction, children: [label ? `${label} is unavailable — ` : '', messageOf(error)] }));
74
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncPanel.js","sourceRoot":"","sources":["../../../src/react/components/AsyncPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AsyncPanel.js","sourceRoot":"","sources":["../../../src/react/components/AsyncPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,15 @@
1
- import { type ReactNode } from 'react';
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
2
  export interface ShellBanner {
3
3
  /** Stable key. */
4
4
  id: string;
5
5
  /** ONE sentence — what is wrong, in the owner's words. Never a paragraph (CPY-1). */
6
6
  message: ReactNode;
7
+ /**
8
+ * What to expect, after the sentence and quieter — "it retries by itself", "needs a code fix".
9
+ * The owner asked for it on the line itself (forge task 4262), so the lane may wrap to TWO
10
+ * lines on a phone when a banner carries one; never more.
11
+ */
12
+ hint?: ReactNode;
7
13
  /** `warning` (default) for a degraded app, `error` for a broken one, `info` for a plain fact. */
8
14
  tone?: 'info' | 'warning' | 'error';
9
15
  /** Leading icon. Omit for the tone's own. */
@@ -15,7 +21,8 @@ export interface ShellBanner {
15
21
  href?: string;
16
22
  };
17
23
  }
18
- export interface BannerLaneProps {
24
+ /** Any other attribute (`data-testid`, …) reaches the lane's `<section>`. */
25
+ export interface BannerLaneProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {
19
26
  banners: readonly ShellBanner[];
20
27
  className?: string;
21
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BannerLane.d.ts","sourceRoot":"","sources":["../../../src/react/components/BannerLane.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,OAAO,CAAC;AAKxD,MAAM,WAAW,WAAW;IAC1B,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,qFAAqF;IACrF,OAAO,EAAE,SAAS,CAAC;IACnB,iGAAiG;IACjG,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACpC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kEAAkE;IAClE,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,sCAkD1E"}
1
+ {"version":3,"file":"BannerLane.d.ts","sourceRoot":"","sources":["../../../src/react/components/BannerLane.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAmB,MAAM,OAAO,CAAC;AAK7E,MAAM,WAAW,WAAW;IAC1B,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,qFAAqF;IACrF,OAAO,EAAE,SAAS,CAAC;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,iGAAiG;IACjG,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACpC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kEAAkE;IAClE,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IACpF,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,sCAkD1E"}
@@ -36,6 +36,6 @@ export function BannerLane({ banners, className, ...rest }) {
36
36
  function BannerLine({ banner }) {
37
37
  const tone = banner.tone ?? 'warning';
38
38
  const { action } = banner;
39
- return (_jsxs("div", { "data-cb-banner": '', role: tone === 'error' ? 'alert' : 'status', className: cn('flex min-h-10 items-center gap-3 px-3 py-1.5 text-sm md:px-6', TONE[tone]), children: [_jsx("span", { "data-cb-banner-icon": '', "aria-hidden": 'true', className: 'grid size-5 shrink-0 place-items-center [&_svg]:size-4', children: banner.icon ?? ICON[tone] }), _jsx("span", { className: 'min-w-0 flex-1 truncate text-foreground', children: banner.message }), action ? (action.href ? (_jsxs(ButtonLink, { to: action.href, variant: 'ghost', size: 'sm', onClick: action.onClick, tooltip: action.label, children: [action.label, " \u2192"] })) : (_jsxs(Button, { variant: 'ghost', size: 'sm', onClick: action.onClick, tooltip: action.label, tooltipMobile: 'off', children: [action.label, " \u2192"] }))) : null] }));
39
+ return (_jsxs("div", { "data-cb-banner": '', role: tone === 'error' ? 'alert' : 'status', className: cn('flex min-h-10 items-center gap-3 px-3 py-1.5 text-sm md:px-6', TONE[tone]), children: [_jsx("span", { "data-cb-banner-icon": '', "aria-hidden": 'true', className: 'grid size-5 shrink-0 place-items-center [&_svg]:size-4', children: banner.icon ?? ICON[tone] }), banner.hint ? (_jsxs("span", { className: 'min-w-0 flex-1 line-clamp-2 text-foreground', children: [banner.message, _jsxs("span", { className: 'text-muted-foreground', children: [" \u00B7 ", banner.hint] })] })) : (_jsx("span", { className: 'min-w-0 flex-1 truncate text-foreground', children: banner.message })), action ? (action.href ? (_jsxs(ButtonLink, { to: action.href, variant: 'ghost', size: 'sm', onClick: action.onClick, tooltip: action.label, children: [action.label, " \u2192"] })) : (_jsxs(Button, { variant: 'ghost', size: 'sm', onClick: action.onClick, tooltip: action.label, tooltipMobile: 'off', children: [action.label, " \u2192"] }))) : null] }));
40
40
  }
41
41
  //# sourceMappingURL=BannerLane.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BannerLane.js","sourceRoot":"","sources":["../../../src/react/components/BannerLane.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BannerLane.js","sourceRoot":"","sources":["../../../src/react/components/BannerLane.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionHealer.d.ts","sourceRoot":"","sources":["../../../src/react/components/ConnectionHealer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAmCpE;+DAC+D;AAC/D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM1D;AAED,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;8FAC0F;IAC1F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;qFAEiF;IACjF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;CACjB;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,iBAAsB,GAAG,eAAe,CA8C9E;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IAC9E,oEAAoE;IACpE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,2FAU9B,qBAAqB,gCAkBvB,CAAC"}
1
+ {"version":3,"file":"ConnectionHealer.d.ts","sourceRoot":"","sources":["../../../src/react/components/ConnectionHealer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAmCpE;+DAC+D;AAC/D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS1D;AAED,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;8FAC0F;IAC1F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;qFAEiF;IACjF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;CACjB;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,iBAAsB,GAAG,eAAe,CA8C9E;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IAC9E,oEAAoE;IACpE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,2FAU9B,qBAAqB,gCAkBvB,CAAC"}
@@ -36,6 +36,10 @@ const UNREACHABLE_PATTERNS = [
36
36
  export function isUnreachableError(error) {
37
37
  if (error == null)
38
38
  return false;
39
+ // An app's client that turns a failed fetch into its own error marks "no response" as status 0
40
+ // (photos' `ApiError(0, 'offline')`): the browser's words are gone, the meaning is not (forge task 4520).
41
+ if (typeof error === 'object' && error.status === 0)
42
+ return true;
39
43
  const message = (error instanceof Error ? `${error.name} ${error.message}` : String(error)).toLowerCase();
40
44
  return UNREACHABLE_PATTERNS.some((p) => message.includes(p));
41
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionHealer.js","sourceRoot":"","sources":["../../../src/react/components/ConnectionHealer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConnectionHealer.js","sourceRoot":"","sources":["../../../src/react/components/ConnectionHealer.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,18 @@
1
1
  import type { ReactNode } from 'react';
2
2
  export { useDialogOpen } from '../lib/openDialogs.js';
3
3
  /**
4
- * OVL-1's three widths plus `full`. `xl` is the pre-2465 name for a wide modal, kept so the
5
- * apps that pass it still compile; it renders `lg` (the old `xl` was 896px, `lg` is 900px).
4
+ * OVL-1's three widths plus `full`, and `page`. `xl` is the pre-2465 name for a wide modal, kept
5
+ * so the apps that pass it still compile; it renders `lg` (the old `xl` was 896px, `lg` is 900px).
6
+ *
7
+ * `page` is not a modal at all to the reader: it is a whole PAGE (OVL-4: anything that needs its
8
+ * own URL belongs on a page) — the viewport covered, no scrim, no card, no sheet, and a ← Back
9
+ * at the start of its bar where a modal has its ✕. Pass it only when the caller has given the
10
+ * page an address, so Back in the browser shuts it too (`MediaGallery`'s `tool`, forge task 4262:
11
+ * *"It is simpler for everything to get its own page and that helps with deep links going to
12
+ * pages without open modal like components popping up."*). Underneath it is still this dialog —
13
+ * the focus trap, Escape, the discard guard and the gallery's keys standing down all hold.
6
14
  */
7
- export type ModalSize = 'sm' | 'md' | 'lg' | 'full' | /** @deprecated use `lg` */ 'xl';
15
+ export type ModalSize = 'sm' | 'md' | 'lg' | 'full' | 'page' | /** @deprecated use `lg` */ 'xl';
8
16
  export interface ModalProps {
9
17
  open: boolean;
10
18
  onClose: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/react/components/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYvC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC;AA6CvF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gFAAgF;IAChF,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,IAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAiB,EACjB,aAAoB,EACpB,KAAK,EACL,UAAiB,EACjB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,UAAU,+BAgJZ"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/react/components/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYvC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC;AAsDhG,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gFAAgF;IAChF,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,IAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAiB,EACjB,aAAoB,EACpB,KAAK,EACL,UAAiB,EACjB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,UAAU,+BAqKZ"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { X } from 'lucide-react';
2
+ import { ArrowLeft, X } from 'lucide-react';
3
3
  import { useDiscardGuard } from '../hooks/useDiscardGuard.js';
4
4
  import { useMediaQuery } from '../hooks/useMediaQuery.js';
5
5
  import { useSwipeToDismiss } from '../hooks/useSwipeToDismiss.js';
@@ -44,6 +44,14 @@ const PHONE_QUERY = '(max-width: 639px)';
44
44
  * every native sheet does.
45
45
  */
46
46
  const SHEET = 'max-sm:inset-x-0 max-sm:bottom-0 max-sm:w-full max-sm:max-w-none max-sm:max-h-[var(--sheet-h-phone)] max-sm:rounded-t-2xl max-sm:rounded-b-none max-sm:border-x-0 max-sm:border-b-0 max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=closed]:slide-out-to-bottom';
47
+ /**
48
+ * `size='page'`: the whole viewport, on the page's own background — nothing floats, so there is
49
+ * no border, no radius, no shadow and no rise. The body column is capped at the dashboard width
50
+ * (LAY-1, 1152px) and centered, so a form meant for a 900px modal does not sprawl across a wide
51
+ * screen; the bar and the footer run edge to edge like any page's.
52
+ */
53
+ const PAGE = 'inset-0 h-dvh w-full max-w-none rounded-none border-0 bg-background text-foreground';
54
+ const PAGE_COLUMN = 'mx-auto w-full max-w-6xl';
47
55
  /** From `sm` up: the centered card, capped to the viewport. It rises with every dialog
48
56
  * (`DIALOG_MOTION`: 8px and 0.985); the phone's sheet above slides its whole height instead. */
49
57
  const CARD = 'sm:top-1/2 sm:left-1/2 sm:w-[calc(100vw-2rem)] sm:-translate-x-1/2 sm:-translate-y-1/2 sm:rounded-xl sm:max-h-[min(90dvh,calc(100dvh-2rem))]';
@@ -67,20 +75,26 @@ export function Modal({ open, onClose, size = 'md', title, subtitle, children, f
67
75
  onSave,
68
76
  });
69
77
  const isPhone = useMediaQuery(PHONE_QUERY);
78
+ const page = size === 'page';
70
79
  // Swiping the sheet down is a SOFT dismiss, exactly like a backdrop tap — so a dialog that
71
80
  // refuses the backdrop refuses the swipe too, and a dirty form still gets its discard prompt.
72
- const swipeRef = useSwipeToDismiss('down', guardedClose, open && isPhone && backdropClose && !isConfirming);
81
+ // A page is not a sheet: nothing comes down, so nothing swipes.
82
+ const swipeRef = useSwipeToDismiss('down', guardedClose, open && isPhone && backdropClose && !isConfirming && !page);
73
83
  return (_jsx(Dialog, { ...rest, open: open, onOpenChange: (v) => {
74
84
  if (!v)
75
85
  guardedClose();
76
- }, children: _jsxs(DialogContent, { "data-cb-modal": '', className: cn(
86
+ }, children: _jsxs(DialogContent, { "data-cb-modal": '', "data-cb-modal-page": page ? '' : undefined,
87
+ // Under a page there is nothing to dim: the page covers it whole.
88
+ overlayClassName: page ? 'bg-transparent backdrop-blur-none' : undefined, className: cn(
77
89
  // A bottom sheet on a phone, a centered card from `sm` up (see SHEET / CARD). The
78
90
  // card keeps a 1rem margin on each side at every size, then caps at the size's
79
- // max-width.
91
+ // max-width. A page covers the viewport instead (see PAGE).
80
92
  'fixed flex flex-col gap-0 overflow-hidden',
81
93
  // The body scrolls with `py-4`: a form kit preview pinned inside it sits flush with
82
94
  // the body's top edge rather than a padding's height below it (formKit.css).
83
- '[--cbfk-sticky-top:-1rem]', 'border border-border bg-popover text-popover-foreground shadow-overlay', DIALOG_MOTION, SHEET, CARD, sizeClass(size), className),
95
+ '[--cbfk-sticky-top:-1rem]', page
96
+ ? PAGE
97
+ : cn('border border-border bg-popover text-popover-foreground shadow-overlay', DIALOG_MOTION, SHEET, CARD, sizeClass(size)), className),
84
98
  // Intercept Radix's default close so a dirty form gets the discard prompt; while
85
99
  // the prompt is up, Escape cancels it (keep editing) instead of re-prompting.
86
100
  // backdropClose={false} turns the backdrop into a no-op — critical dialogs that
@@ -106,6 +120,6 @@ export function Modal({ open, onClose, size = 'md', title, subtitle, children, f
106
120
  cancelDiscard();
107
121
  else
108
122
  guardedClose();
109
- }, children: [_jsxs("div", { ref: swipeRef, "data-cb-modal-handle": '', className: 'relative flex flex-none items-center justify-between gap-3 border-b border-border px-5 py-4 max-sm:touch-none max-sm:pt-6', children: [_jsx("span", { "aria-hidden": true, className: 'pointer-events-none absolute top-2 left-1/2 h-1 w-9 -translate-x-1/2 rounded-full bg-border sm:hidden' }), title ? (_jsxs("div", { className: 'min-w-0 flex-1', children: [_jsx(DialogTitle, { className: 'wrap-break-word text-base font-semibold', children: title }), subtitle ? (_jsx("p", { "data-cb-modal-subtitle": '', className: 'mt-1 text-caption leading-relaxed text-muted-foreground', children: subtitle })) : null] })) : (_jsx(DialogTitle, { className: 'sr-only', children: "Dialog" })), _jsx(IconButton, { label: 'Close', onClick: guardedClose, children: _jsx(X, {}) })] }), aside ? (_jsxs("div", { "data-cb-modal-split": '', className: 'flex min-h-0 flex-1 flex-col md:flex-row md:divide-x md:divide-border', children: [_jsx("div", { "data-cb-modal-aside": '', className: cn('flex min-h-0 flex-col md:flex-none', asideWidth === 'md' ? 'md:w-2/5' : 'md:w-1/3'), children: _jsx(ScrollArea, { className: 'px-5 py-4', children: aside }) }), _jsx("div", { className: 'flex min-h-0 flex-1 flex-col', children: scrollBody ? (_jsx(ScrollArea, { className: 'px-5 py-4', children: children })) : (_jsx("div", { className: 'flex min-h-0 flex-1 flex-col', children: children })) })] })) : scrollBody ? (_jsx(ScrollArea, { className: 'px-5 py-4', children: children })) : (_jsx("div", { className: 'flex min-h-0 flex-1 flex-col', children: children })), problem ? (_jsx("div", { className: 'flex-none px-5 pt-3 empty:hidden', children: problem })) : null, _jsx(FooterSlot, { footer: footer }), discardOverlay] }) }));
123
+ }, children: [_jsxs("div", { ref: swipeRef, "data-cb-modal-handle": '', className: cn('relative flex flex-none items-center justify-between gap-3 border-b border-border', page ? 'px-4 py-2' : 'px-5 py-4 max-sm:touch-none max-sm:pt-6'), children: [page ? (_jsx(IconButton, { label: 'Back', tooltip: 'Back to the file (Esc)', onClick: guardedClose, children: _jsx(ArrowLeft, {}) })) : (_jsx("span", { "aria-hidden": true, className: 'pointer-events-none absolute top-2 left-1/2 h-1 w-9 -translate-x-1/2 rounded-full bg-border sm:hidden' })), title ? (_jsxs("div", { className: 'min-w-0 flex-1', children: [_jsx(DialogTitle, { className: 'wrap-break-word text-base font-semibold', children: title }), subtitle ? (_jsx("p", { "data-cb-modal-subtitle": '', className: 'mt-1 text-caption leading-relaxed text-muted-foreground', children: subtitle })) : null] })) : (_jsx(DialogTitle, { className: 'sr-only', children: "Dialog" })), page ? null : (_jsx(IconButton, { label: 'Close', onClick: guardedClose, children: _jsx(X, {}) }))] }), aside ? (_jsxs("div", { "data-cb-modal-split": '', className: 'flex min-h-0 flex-1 flex-col md:flex-row md:divide-x md:divide-border', children: [_jsx("div", { "data-cb-modal-aside": '', className: cn('flex min-h-0 flex-col md:flex-none', asideWidth === 'md' ? 'md:w-2/5' : 'md:w-1/3'), children: _jsx(ScrollArea, { className: 'px-5 py-4', children: aside }) }), _jsx("div", { className: 'flex min-h-0 flex-1 flex-col', children: scrollBody ? (_jsx(ScrollArea, { className: 'px-5 py-4', children: children })) : (_jsx("div", { className: 'flex min-h-0 flex-1 flex-col', children: children })) })] })) : scrollBody ? (_jsx(ScrollArea, { className: 'px-5 py-4', children: page ? _jsx("div", { className: PAGE_COLUMN, children: children }) : children })) : (_jsx("div", { className: 'flex min-h-0 flex-1 flex-col', children: children })), problem ? (_jsx("div", { className: 'flex-none px-5 pt-3 empty:hidden', children: problem })) : null, _jsx(FooterSlot, { footer: footer }), discardOverlay] }) }));
110
124
  }
111
125
  //# sourceMappingURL=Modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/react/components/Modal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQtD,wFAAwF;AACxF,mFAAmF;AACnF,2FAA2F;AAC3F,6FAA6F;AAC7F,+FAA+F;AAC/F,4FAA4F;AAC5F,+DAA+D;AAC/D,MAAM,IAAI,GAA6C;IACrD,EAAE,EAAE,8BAA8B;IAClC,EAAE,EAAE,8BAA8B;IAClC,EAAE,EAAE,8BAA8B;IAClC,IAAI,EAAE,4GAA4G;CACnH,CAAC;AAEF,kEAAkE;AAClE,SAAS,SAAS,CAAC,IAAe;IAChC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,WAAW,CAAC,eAAe,EAAE,6GAA6G,CAAC,CAAC;QAC5I,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,wEAAwE;AACxE,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,KAAK,GACT,kRAAkR,CAAC;AAErR;iGACiG;AACjG,MAAM,IAAI,GACR,8IAA8I,CAAC;AAqFjJ;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,IAAI,GAAG,IAAI,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,GAAG,IAAI,EACjB,aAAa,GAAG,IAAI,EACpB,KAAK,EACL,UAAU,GAAG,IAAI,EACjB,SAAS,EACT,GAAG,IAAI,EACI;IACX,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC;QACpF,IAAI;QACJ,OAAO;QACP,OAAO;QACP,MAAM;KACP,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,2FAA2F;IAC3F,8FAA8F;IAC9F,MAAM,QAAQ,GAAG,iBAAiB,CAChC,MAAM,EACN,YAAY,EACZ,IAAI,IAAI,OAAO,IAAI,aAAa,IAAI,CAAC,YAAY,CAClD,CAAC;IAEF,OAAO,CACL,KAAC,MAAM,OACD,IAAI,EACR,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC;gBAAE,YAAY,EAAE,CAAC;QACzB,CAAC,YAED,MAAC,aAAa,qBACE,EAAE,EAChB,SAAS,EAAE,EAAE;YACX,kFAAkF;YAClF,+EAA+E;YAC/E,aAAa;YACb,2CAA2C;YAC3C,oFAAoF;YACpF,6EAA6E;YAC7E,2BAA2B,EAC3B,wEAAwE,EACxE,aAAa,EACb,KAAK,EACL,IAAI,EACJ,SAAS,CAAC,IAAI,CAAC,EACf,SAAS,CACV;YACD,iFAAiF;YACjF,8EAA8E;YAC9E,gFAAgF;YAChF,gDAAgD;YAChD,EAAE;YACF,6EAA6E;YAC7E,4EAA4E;YAC5E,8EAA8E;YAC9E,yEAAyE;YACzE,8EAA8E;YAC9E,8EAA8E;YAC9E,4EAA4E;YAC5E,6EAA6E;YAC7E,+EAA+E;YAC/E,oEAAoE;YACpE,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC1B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,aAAa;oBAAE,YAAY,EAAE,CAAC;YACpC,CAAC,EACD,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,EAC5C,eAAe,EAAE,gBAAgB,EACjC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,YAAY;oBAAE,aAAa,EAAE,CAAC;;oBAC7B,YAAY,EAAE,CAAC;YACtB,CAAC,aAED,eACE,GAAG,EAAE,QAAQ,0BACQ,EAAE,EACvB,SAAS,EAAC,2HAA2H,aAGrI,oCAEE,SAAS,EAAC,uGAAuG,GACjH,EACD,KAAK,CAAC,CAAC,CAAC,CACP,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,WAAW,IAAC,SAAS,EAAC,yCAAyC,YAAE,KAAK,GAAe,EACrF,QAAQ,CAAC,CAAC,CAAC,CACV,sCAA0B,EAAE,EAAC,SAAS,EAAC,yDAAyD,YAAE,QAAQ,GAAK,CAChH,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,CAEF,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,uBAAqB,CACtD,EACD,KAAC,UAAU,IAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,YAAY,YAC7C,KAAC,CAAC,KAAG,GACM,IACT,EAEL,KAAK,CAAC,CAAC,CAAC,CAIP,sCACsB,EAAE,EACtB,SAAS,EAAC,uEAAuE,aAEjF,qCACsB,EAAE,EACtB,SAAS,EAAE,EAAE,CACX,oCAAoC,EACpC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAC9C,YAED,KAAC,UAAU,IAAC,SAAS,EAAC,WAAW,YAAE,KAAK,GAAc,GAClD,EACN,cAAK,SAAS,EAAC,8BAA8B,YAC1C,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,UAAU,IAAC,SAAS,EAAC,WAAW,YAAE,QAAQ,GAAc,CAC1D,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,8BAA8B,YAAE,QAAQ,GAAO,CAC/D,GACG,IACF,CACP,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAEf,KAAC,UAAU,IAAC,SAAS,EAAC,WAAW,YAAE,QAAQ,GAAc,CAC1D,CAAC,CAAC,CAAC,CAGF,cAAK,SAAS,EAAC,8BAA8B,YAAE,QAAQ,GAAO,CAC/D,EAEA,OAAO,CAAC,CAAC,CAAC,CAKT,cAAK,SAAS,EAAC,kCAAkC,YAAE,OAAO,GAAO,CAClE,CAAC,CAAC,CAAC,IAAI,EAER,KAAC,UAAU,IAAC,MAAM,EAAE,MAAM,GAAI,EAI7B,cAAc,IACD,GACT,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/react/components/Modal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAgBtD,wFAAwF;AACxF,mFAAmF;AACnF,2FAA2F;AAC3F,6FAA6F;AAC7F,+FAA+F;AAC/F,4FAA4F;AAC5F,+DAA+D;AAC/D,MAAM,IAAI,GAAsD;IAC9D,EAAE,EAAE,8BAA8B;IAClC,EAAE,EAAE,8BAA8B;IAClC,EAAE,EAAE,8BAA8B;IAClC,IAAI,EAAE,4GAA4G;CACnH,CAAC;AAEF,kEAAkE;AAClE,SAAS,SAAS,CAAC,IAAgC;IACjD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,WAAW,CAAC,eAAe,EAAE,6GAA6G,CAAC,CAAC;QAC5I,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,wEAAwE;AACxE,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,KAAK,GACT,kRAAkR,CAAC;AAErR;;;;;GAKG;AACH,MAAM,IAAI,GAAG,qFAAqF,CAAC;AACnG,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAE/C;iGACiG;AACjG,MAAM,IAAI,GACR,8IAA8I,CAAC;AAqFjJ;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,IAAI,GAAG,IAAI,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,GAAG,IAAI,EACjB,aAAa,GAAG,IAAI,EACpB,KAAK,EACL,UAAU,GAAG,IAAI,EACjB,SAAS,EACT,GAAG,IAAI,EACI;IACX,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC;QACpF,IAAI;QACJ,OAAO;QACP,OAAO;QACP,MAAM;KACP,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC;IAC7B,2FAA2F;IAC3F,8FAA8F;IAC9F,gEAAgE;IAChE,MAAM,QAAQ,GAAG,iBAAiB,CAChC,MAAM,EACN,YAAY,EACZ,IAAI,IAAI,OAAO,IAAI,aAAa,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAC3D,CAAC;IAEF,OAAO,CACL,KAAC,MAAM,OACD,IAAI,EACR,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC;gBAAE,YAAY,EAAE,CAAC;QACzB,CAAC,YAED,MAAC,aAAa,qBACE,EAAE,wBACI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACzC,kEAAkE;YAClE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,SAAS,EACxE,SAAS,EAAE,EAAE;YACX,kFAAkF;YAClF,+EAA+E;YAC/E,4DAA4D;YAC5D,2CAA2C;YAC3C,oFAAoF;YACpF,6EAA6E;YAC7E,2BAA2B,EAC3B,IAAI;gBACF,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,EAAE,CACA,wEAAwE,EACxE,aAAa,EACb,KAAK,EACL,IAAI,EACJ,SAAS,CAAC,IAAI,CAAC,CAChB,EACL,SAAS,CACV;YACD,iFAAiF;YACjF,8EAA8E;YAC9E,gFAAgF;YAChF,gDAAgD;YAChD,EAAE;YACF,6EAA6E;YAC7E,4EAA4E;YAC5E,8EAA8E;YAC9E,yEAAyE;YACzE,8EAA8E;YAC9E,8EAA8E;YAC9E,4EAA4E;YAC5E,6EAA6E;YAC7E,+EAA+E;YAC/E,oEAAoE;YACpE,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC1B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,aAAa;oBAAE,YAAY,EAAE,CAAC;YACpC,CAAC,EACD,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,EAC5C,eAAe,EAAE,gBAAgB,EACjC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,YAAY;oBAAE,aAAa,EAAE,CAAC;;oBAC7B,YAAY,EAAE,CAAC;YACtB,CAAC,aAED,eACE,GAAG,EAAE,QAAQ,0BACQ,EAAE,EACvB,SAAS,EAAE,EAAE,CACX,mFAAmF,EACnF,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,yCAAyC,CAC/D,aAEA,IAAI,CAAC,CAAC,CAAC,CAEN,KAAC,UAAU,IAAC,KAAK,EAAC,MAAM,EAAC,OAAO,EAAC,wBAAwB,EAAC,OAAO,EAAE,YAAY,YAC7E,KAAC,SAAS,KAAG,GACF,CACd,CAAC,CAAC,CAAC,CAEF,oCAEE,SAAS,EAAC,uGAAuG,GACjH,CACH,EACA,KAAK,CAAC,CAAC,CAAC,CACP,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,WAAW,IAAC,SAAS,EAAC,yCAAyC,YAAE,KAAK,GAAe,EACrF,QAAQ,CAAC,CAAC,CAAC,CACV,sCAA0B,EAAE,EAAC,SAAS,EAAC,yDAAyD,YAAE,QAAQ,GAAK,CAChH,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,CAEF,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,uBAAqB,CACtD,EACA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACb,KAAC,UAAU,IAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,YAAY,YAC7C,KAAC,CAAC,KAAG,GACM,CACd,IACG,EAEL,KAAK,CAAC,CAAC,CAAC,CAIP,sCACsB,EAAE,EACtB,SAAS,EAAC,uEAAuE,aAEjF,qCACsB,EAAE,EACtB,SAAS,EAAE,EAAE,CACX,oCAAoC,EACpC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAC9C,YAED,KAAC,UAAU,IAAC,SAAS,EAAC,WAAW,YAAE,KAAK,GAAc,GAClD,EACN,cAAK,SAAS,EAAC,8BAA8B,YAC1C,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,UAAU,IAAC,SAAS,EAAC,WAAW,YAAE,QAAQ,GAAc,CAC1D,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,8BAA8B,YAAE,QAAQ,GAAO,CAC/D,GACG,IACF,CACP,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAEf,KAAC,UAAU,IAAC,SAAS,EAAC,WAAW,YAAE,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,WAAW,YAAG,QAAQ,GAAO,CAAC,CAAC,CAAC,QAAQ,GAAc,CACjH,CAAC,CAAC,CAAC,CAGF,cAAK,SAAS,EAAC,8BAA8B,YAAE,QAAQ,GAAO,CAC/D,EAEA,OAAO,CAAC,CAAC,CAAC,CAKT,cAAK,SAAS,EAAC,kCAAkC,YAAE,OAAO,GAAO,CAClE,CAAC,CAAC,CAAC,IAAI,EAER,KAAC,UAAU,IAAC,MAAM,EAAE,MAAM,GAAI,EAI7B,cAAc,IACD,GACT,CACV,CAAC;AACJ,CAAC"}
@@ -5,6 +5,15 @@ export interface QueryLike {
5
5
  isError?: boolean;
6
6
  /** The thrown error, when `isError` (surfaced to the error fallback). */
7
7
  error?: unknown;
8
+ /**
9
+ * What the query holds. An error WITH data is a failed refresh: the children stay, under a
10
+ * {@link StaleNote} (STA-11) — TanStack's `isError` is true then too.
11
+ */
12
+ data?: unknown;
13
+ /** When `data` was loaded, for the stale note's "showing what loaded at 5:58". */
14
+ dataUpdatedAt?: number;
15
+ /** Offered on the stale note as Retry. */
16
+ refetch?: () => unknown;
8
17
  }
9
18
  export interface QueryBoundaryProps {
10
19
  /** Pass the whole query result… (`<QueryBoundary query={useThing()}>`). */
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBoundary.d.ts","sourceRoot":"","sources":["../../../src/react/components/QueryBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAMrG,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;iDAC6C;IAC7C,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;gFAC4E;IAC5E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;4EACwE;IACxE,aAAa,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC;IAC1D;;;;gEAI4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAKD;;;;;;;GAOG;AAEH,eAAO,MAAM,aAAa,GAAI,sFAS3B,kBAAkB,gCAoBpB,CAAC"}
1
+ {"version":3,"file":"QueryBoundary.d.ts","sourceRoot":"","sources":["../../../src/react/components/QueryBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAOrG,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;iDAC6C;IAC7C,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;gFAC4E;IAC5E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;4EACwE;IACxE,aAAa,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC;IAC1D;;;;gEAI4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAKD;;;;;;;GAOG;AAEH,eAAO,MAAM,aAAa,GAAI,sFAS3B,kBAAkB,gCAoCpB,CAAC"}
@@ -1,7 +1,8 @@
1
- import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Alert } from './Alert.js';
3
3
  import { ConnectionHealer, isUnreachableError } from './ConnectionHealer.js';
4
4
  import { SkeletonList } from './Skeleton.js';
5
+ import { StaleNote } from './StaleNote.js';
5
6
  const toError = (e) => e instanceof Error ? e : e == null ? new Error('Request failed') : new Error(String(e));
6
7
  /**
7
8
  * Standardizes the loading / error / content gate copy-pasted across pages as
@@ -19,6 +20,12 @@ export const QueryBoundary = ({ query, queries, isLoading, isError, fallback, er
19
20
  const errored = isError ?? !!erroredQuery;
20
21
  if (loading)
21
22
  return _jsx(_Fragment, { children: fallback ?? _jsx(SkeletonList, {}) });
23
+ // 🔴 A refresh that failed keeps what loaded (the owner, 2026-11-05: "I'd still like to see the
24
+ // content even though it was a little stale"). Only a query with nothing to show gets the error.
25
+ if (erroredQuery && erroredQuery.data !== undefined && all.every((q) => !q.isError || q.data !== undefined)) {
26
+ const { refetch } = erroredQuery;
27
+ return (_jsxs(_Fragment, { children: [_jsx(StaleNote, { className: 'mb-2', error: erroredQuery.error, ...(erroredQuery.dataUpdatedAt ? { at: erroredQuery.dataUpdatedAt } : {}), ...(refetch ? { onRetry: () => void refetch() } : {}) }), children] }));
28
+ }
22
29
  if (errored) {
23
30
  const error = toError(erroredQuery?.error);
24
31
  if (autoHeal && isUnreachableError(error))
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBoundary.js","sourceRoot":"","sources":["../../../src/react/components/QueryBoundary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAA0B,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAoC7C,MAAM,OAAO,GAAG,CAAC,CAAU,EAAS,EAAE,CACpC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1F;;;;;;;GAOG;AACH,uGAAuG;AACvG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,QAAQ,GACW,EAAE,EAAE;IACvB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC,YAAY,CAAC;IAE1C,IAAI,OAAO;QAAE,OAAO,4BAAG,QAAQ,IAAI,KAAC,YAAY,KAAG,GAAI,CAAC;IACxD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC;YACvC,OAAO,KAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,KAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAI,CAAC;QACrF,IAAI,aAAa,KAAK,SAAS;YAC7B,OAAO,4BAAG,OAAO,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,GAAI,CAAC;QAC3F,OAAO,CACL,KAAC,KAAK,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,sBAAsB,YAC7C,KAAK,CAAC,OAAO,GACR,CACT,CAAC;IACJ,CAAC;IACD,OAAO,4BAAG,QAAQ,GAAI,CAAC;AACzB,CAAC,CAAC"}
1
+ {"version":3,"file":"QueryBoundary.js","sourceRoot":"","sources":["../../../src/react/components/QueryBoundary.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ /** Any other attribute (`data-testid`, …) reaches the line. */
3
+ export interface StaleNoteProps extends Omit<HTMLAttributes<HTMLParagraphElement>, 'children'> {
4
+ /** When what is on screen was loaded — TanStack's `dataUpdatedAt`. Leave it out when unknown. */
5
+ at?: number | Date | null;
6
+ /** The refresh that failed, to tell "offline" from "the server said no". */
7
+ error?: unknown;
8
+ /** Try again now. Leave it out where it refreshes by itself (a poll, `refetchOnReconnect`). */
9
+ onRetry?: () => void;
10
+ /** An action of the caller's own instead of `onRetry` — `AsyncPanel`'s `onRetryAction`. */
11
+ action?: ReactNode;
12
+ className?: string;
13
+ }
14
+ /**
15
+ * 🔴 One quiet line above content whose REFRESH failed — the content stays (STA-11). The owner,
16
+ * 2026-11-05, after a 5-second unplug turned photos' AI tab into "Couldn't load the AI budget — you
17
+ * appear to be offline": *"stop having the full content disappear … I'd still like to see the content
18
+ * even though it was a little stale."*
19
+ *
20
+ * A first load that fails has nothing to keep, and gets the region's error state instead; this is for
21
+ * the second fetch onwards (`query.isRefetchError`, `QueryBoundary`'s and `AsyncPanel`'s held data).
22
+ * Offline says so and promises the refresh; the bar's `ConnectionDot` says the rest.
23
+ */
24
+ export declare function StaleNote({ at, error, onRetry, action, className, ...rest }: StaleNoteProps): import("react").JSX.Element;
25
+ //# sourceMappingURL=StaleNote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaleNote.d.ts","sourceRoot":"","sources":["../../../src/react/components/StaleNote.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAC;AAKlF,+DAA+D;AAC/D,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAC5F,iGAAiG;IACjG,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,+BA+B3F"}