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.
- package/dist/react/Toast.d.ts.map +1 -1
- package/dist/react/Toast.js +36 -0
- package/dist/react/Toast.js.map +1 -1
- package/dist/react/components/AppShell.js +2 -2
- package/dist/react/components/AppShell.js.map +1 -1
- package/dist/react/components/AsyncPanel.d.ts +7 -1
- package/dist/react/components/AsyncPanel.d.ts.map +1 -1
- package/dist/react/components/AsyncPanel.js +7 -1
- package/dist/react/components/AsyncPanel.js.map +1 -1
- package/dist/react/components/BannerLane.d.ts +9 -2
- package/dist/react/components/BannerLane.d.ts.map +1 -1
- package/dist/react/components/BannerLane.js +1 -1
- package/dist/react/components/BannerLane.js.map +1 -1
- package/dist/react/components/ConnectionHealer.d.ts.map +1 -1
- package/dist/react/components/ConnectionHealer.js +4 -0
- package/dist/react/components/ConnectionHealer.js.map +1 -1
- package/dist/react/components/Modal.d.ts +11 -3
- package/dist/react/components/Modal.d.ts.map +1 -1
- package/dist/react/components/Modal.js +20 -6
- package/dist/react/components/Modal.js.map +1 -1
- package/dist/react/components/QueryBoundary.d.ts +9 -0
- package/dist/react/components/QueryBoundary.d.ts.map +1 -1
- package/dist/react/components/QueryBoundary.js +8 -1
- package/dist/react/components/QueryBoundary.js.map +1 -1
- package/dist/react/components/StaleNote.d.ts +25 -0
- package/dist/react/components/StaleNote.d.ts.map +1 -0
- package/dist/react/components/StaleNote.js +43 -0
- package/dist/react/components/StaleNote.js.map +1 -0
- package/dist/react/createApiHooks.d.ts +8 -0
- package/dist/react/createApiHooks.d.ts.map +1 -1
- package/dist/react/createApiHooks.js.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/media/CutTimeline.d.ts +11 -2
- package/dist/react/media/CutTimeline.d.ts.map +1 -1
- package/dist/react/media/CutTimeline.js +105 -34
- package/dist/react/media/CutTimeline.js.map +1 -1
- package/dist/react/media/FrameGrabber.d.ts +7 -1
- package/dist/react/media/FrameGrabber.d.ts.map +1 -1
- package/dist/react/media/FrameGrabber.js +6 -17
- package/dist/react/media/FrameGrabber.js.map +1 -1
- package/dist/react/media/HoverScrubVideoThumb.d.ts.map +1 -1
- package/dist/react/media/HoverScrubVideoThumb.js +2 -0
- package/dist/react/media/HoverScrubVideoThumb.js.map +1 -1
- package/dist/react/media/PictureEditor.d.ts +7 -1
- package/dist/react/media/PictureEditor.d.ts.map +1 -1
- package/dist/react/media/PictureEditor.js +2 -2
- package/dist/react/media/PictureEditor.js.map +1 -1
- package/dist/react/media/ScrubControls.d.ts +117 -0
- package/dist/react/media/ScrubControls.d.ts.map +1 -0
- package/dist/react/media/ScrubControls.js +233 -0
- package/dist/react/media/ScrubControls.js.map +1 -0
- package/dist/react/media/TrimRangeSlider.d.ts +8 -1
- package/dist/react/media/TrimRangeSlider.d.ts.map +1 -1
- package/dist/react/media/TrimRangeSlider.js +65 -29
- package/dist/react/media/TrimRangeSlider.js.map +1 -1
- package/dist/react/media/VideoChapterEditor.d.ts +7 -1
- package/dist/react/media/VideoChapterEditor.d.ts.map +1 -1
- package/dist/react/media/VideoChapterEditor.js +2 -2
- package/dist/react/media/VideoChapterEditor.js.map +1 -1
- package/dist/react/media/VideoCutEditor.d.ts +8 -3
- package/dist/react/media/VideoCutEditor.d.ts.map +1 -1
- package/dist/react/media/VideoCutEditor.js +38 -20
- package/dist/react/media/VideoCutEditor.js.map +1 -1
- package/dist/react/media/VideoPlayer.d.ts +2 -2
- package/dist/react/media/VideoPlayer.d.ts.map +1 -1
- package/dist/react/media/VideoPlayer.js +41 -18
- package/dist/react/media/VideoPlayer.js.map +1 -1
- package/dist/react/media/VideoTurner.d.ts +7 -1
- package/dist/react/media/VideoTurner.d.ts.map +1 -1
- package/dist/react/media/VideoTurner.js +2 -2
- package/dist/react/media/VideoTurner.js.map +1 -1
- package/dist/react/media/cutTimelineMath.d.ts +8 -0
- package/dist/react/media/cutTimelineMath.d.ts.map +1 -1
- package/dist/react/media/cutTimelineMath.js +11 -4
- package/dist/react/media/cutTimelineMath.js.map +1 -1
- package/dist/react/media/denseGallery.css +8 -0
- package/dist/react/media/index.d.ts +2 -0
- package/dist/react/media/index.d.ts.map +1 -1
- package/dist/react/media/index.js +6 -0
- package/dist/react/media/index.js.map +1 -1
- package/dist/react/media/pictureEditor.css +7 -0
- package/dist/react/media/playbackWatch.d.ts +7 -1
- package/dist/react/media/playbackWatch.d.ts.map +1 -1
- package/dist/react/media/playbackWatch.js +14 -3
- package/dist/react/media/playbackWatch.js.map +1 -1
- package/dist/react/media/playerFineScrub.d.ts +7 -0
- package/dist/react/media/playerFineScrub.d.ts.map +1 -0
- package/dist/react/media/playerFineScrub.js +138 -0
- package/dist/react/media/playerFineScrub.js.map +1 -0
- package/dist/react/media/previewPlay.d.ts +10 -0
- package/dist/react/media/previewPlay.d.ts.map +1 -0
- package/dist/react/media/previewPlay.js +124 -0
- package/dist/react/media/previewPlay.js.map +1 -0
- package/dist/react/media/scrub.d.ts +132 -0
- package/dist/react/media/scrub.d.ts.map +1 -0
- package/dist/react/media/scrub.js +179 -0
- package/dist/react/media/scrub.js.map +1 -0
- package/dist/react/media/scrubControls.css +147 -0
- package/dist/react/media/sourceFault.d.ts +85 -2
- package/dist/react/media/sourceFault.d.ts.map +1 -1
- package/dist/react/media/sourceFault.js +289 -17
- package/dist/react/media/sourceFault.js.map +1 -1
- package/dist/react/media/usePlayerHealth.d.ts +47 -0
- package/dist/react/media/usePlayerHealth.d.ts.map +1 -0
- package/dist/react/media/usePlayerHealth.js +270 -0
- package/dist/react/media/usePlayerHealth.js.map +1 -0
- package/dist/react/media/videoCutEditor.css +157 -3
- package/dist/react/media/videoPlayer.css +40 -0
- package/dist/react/media-gallery/GalleryTable.d.ts.map +1 -1
- package/dist/react/media-gallery/GalleryTable.js +2 -0
- package/dist/react/media-gallery/GalleryTable.js.map +1 -1
- package/dist/react/media-gallery/MediaGallery.d.ts +18 -1
- package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
- package/dist/react/media-gallery/MediaGallery.js +98 -28
- package/dist/react/media-gallery/MediaGallery.js.map +1 -1
- package/dist/react/media-gallery/MediaMetaEditor.d.ts +7 -1
- package/dist/react/media-gallery/MediaMetaEditor.d.ts.map +1 -1
- package/dist/react/media-gallery/MediaMetaEditor.js +2 -2
- package/dist/react/media-gallery/MediaMetaEditor.js.map +1 -1
- package/dist/react/media-gallery/galleryDeepLink.d.ts +41 -0
- package/dist/react/media-gallery/galleryDeepLink.d.ts.map +1 -1
- package/dist/react/media-gallery/galleryDeepLink.js +89 -17
- package/dist/react/media-gallery/galleryDeepLink.js.map +1 -1
- package/dist/react/media-gallery/index.d.ts +1 -1
- package/dist/react/media-gallery/index.d.ts.map +1 -1
- package/dist/react/media-gallery/index.js +1 -1
- package/dist/react/media-gallery/index.js.map +1 -1
- package/dist/react/media-gallery/mediaGallery.css +25 -0
- package/dist/react/notifications/IssueViews.d.ts +68 -0
- package/dist/react/notifications/IssueViews.d.ts.map +1 -0
- package/dist/react/notifications/IssueViews.js +96 -0
- package/dist/react/notifications/IssueViews.js.map +1 -0
- package/dist/react/notifications/IssuesPage.d.ts +22 -0
- package/dist/react/notifications/IssuesPage.d.ts.map +1 -0
- package/dist/react/notifications/IssuesPage.js +148 -0
- package/dist/react/notifications/IssuesPage.js.map +1 -0
- package/dist/react/notifications/NotificationBell.d.ts +5 -0
- package/dist/react/notifications/NotificationBell.d.ts.map +1 -1
- package/dist/react/notifications/NotificationBell.js +4 -3
- package/dist/react/notifications/NotificationBell.js.map +1 -1
- package/dist/react/notifications/index.d.ts +4 -0
- package/dist/react/notifications/index.d.ts.map +1 -1
- package/dist/react/notifications/index.js +7 -0
- package/dist/react/notifications/index.js.map +1 -1
- package/dist/react/notifications/issueCapture.d.ts +16 -0
- package/dist/react/notifications/issueCapture.d.ts.map +1 -0
- package/dist/react/notifications/issueCapture.js +264 -0
- package/dist/react/notifications/issueCapture.js.map +1 -0
- package/dist/react/notifications/issues.d.ts +186 -0
- package/dist/react/notifications/issues.d.ts.map +1 -0
- package/dist/react/notifications/issues.js +437 -0
- package/dist/react/notifications/issues.js.map +1 -0
- package/dist/scripts/guardrailsEnforce.d.ts +7 -1
- package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
- package/dist/styles-areas/core.css +36 -35
- package/dist/styles-areas/disk-usage.css +2 -2
- package/dist/styles-areas/media.css +8 -7
- package/dist/styles-areas/nav.css +2 -2
- package/dist/styles-areas/notifications.css +11 -7
- package/dist/styles-areas/problem-detail.css +2 -2
- package/dist/styles-areas/stats.css +2 -2
- package/dist/styles-utilities.css +47 -2
- package/dist/theme.css +4 -0
- package/package.json +2 -2
- package/scripts/guardrails-baseline.json +2 -2
- package/scripts/guardrailsEnforce.spec.ts +60 -0
- package/scripts/guardrailsEnforce.ts +74 -4
- package/src/declaredImports.spec.ts +9 -1
- package/src/react/Toast.spec.tsx +19 -0
- package/src/react/Toast.tsx +35 -0
- package/src/react/components/AppShell.spec.tsx +3 -0
- package/src/react/components/AppShell.tsx +4 -2
- package/src/react/components/AsyncPanel.spec.tsx +21 -0
- package/src/react/components/AsyncPanel.tsx +18 -0
- package/src/react/components/BannerLane.tsx +19 -4
- package/src/react/components/ConnectionHealer.spec.tsx +12 -0
- package/src/react/components/ConnectionHealer.tsx +3 -0
- package/src/react/components/Modal.spec.tsx +34 -0
- package/src/react/components/Modal.tsx +61 -23
- package/src/react/components/QueryBoundary.tsx +26 -0
- package/src/react/components/StaleNote.spec.tsx +63 -0
- package/src/react/components/StaleNote.tsx +77 -0
- package/src/react/createApiHooks.ts +8 -0
- package/src/react/index.ts +1 -0
- package/src/react/media/CutTimeline.tsx +109 -20
- package/src/react/media/FrameGrabber.spec.tsx +4 -3
- package/src/react/media/FrameGrabber.tsx +21 -22
- package/src/react/media/HoverScrubVideoThumb.tsx +2 -0
- package/src/react/media/PictureEditor.tsx +8 -1
- package/src/react/media/ScrubControls.tsx +380 -0
- package/src/react/media/TrimRangeSlider.spec.tsx +41 -0
- package/src/react/media/TrimRangeSlider.tsx +105 -51
- package/src/react/media/VideoChapterEditor.tsx +8 -1
- package/src/react/media/VideoCutEditor.tsx +77 -27
- package/src/react/media/VideoPlayer.tsx +50 -24
- package/src/react/media/VideoTurner.tsx +8 -1
- package/src/react/media/cutTimelineMath.ts +12 -4
- package/src/react/media/denseGallery.css +8 -0
- package/src/react/media/index.ts +18 -0
- package/src/react/media/pictureEditor.css +7 -0
- package/src/react/media/playbackWatch.spec.ts +25 -0
- package/src/react/media/playbackWatch.ts +18 -4
- package/src/react/media/playerFineScrub.tsx +139 -0
- package/src/react/media/previewPlay.spec.tsx +74 -0
- package/src/react/media/previewPlay.ts +123 -0
- package/src/react/media/scrub.spec.ts +130 -0
- package/src/react/media/scrub.ts +245 -0
- package/src/react/media/scrubControls.css +147 -0
- package/src/react/media/sourceFault.spec.tsx +164 -6
- package/src/react/media/sourceFault.tsx +349 -21
- package/src/react/media/usePlayerHealth.spec.ts +156 -0
- package/src/react/media/usePlayerHealth.ts +331 -0
- package/src/react/media/videoCutEditor.css +157 -3
- package/src/react/media/videoPlayer.css +40 -0
- package/src/react/media-gallery/GalleryTable.tsx +2 -0
- package/src/react/media-gallery/MediaGallery.spec.tsx +114 -0
- package/src/react/media-gallery/MediaGallery.tsx +144 -17
- package/src/react/media-gallery/MediaMetaEditor.tsx +8 -1
- package/src/react/media-gallery/galleryDeepLink.spec.tsx +97 -1
- package/src/react/media-gallery/galleryDeepLink.ts +108 -16
- package/src/react/media-gallery/index.ts +3 -0
- package/src/react/media-gallery/mediaGallery.css +25 -0
- package/src/react/notifications/IssueViews.spec.tsx +290 -0
- package/src/react/notifications/IssueViews.tsx +190 -0
- package/src/react/notifications/IssuesPage.tsx +370 -0
- package/src/react/notifications/NotificationBell.tsx +6 -3
- package/src/react/notifications/index.ts +33 -0
- package/src/react/notifications/issueCapture.spec.ts +158 -0
- package/src/react/notifications/issueCapture.ts +264 -0
- package/src/react/notifications/issues.spec.ts +258 -0
- package/src/react/notifications/issues.ts +556 -0
- package/src/styles-areas/core.css +36 -35
- package/src/styles-areas/disk-usage.css +2 -2
- package/src/styles-areas/media.css +8 -7
- package/src/styles-areas/nav.css +2 -2
- package/src/styles-areas/notifications.css +11 -7
- package/src/styles-areas/problem-detail.css +2 -2
- package/src/styles-areas/stats.css +2 -2
- package/src/styles-utilities.css +47 -2
- 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;
|
|
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"}
|
package/dist/react/Toast.js
CHANGED
|
@@ -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.
|
package/dist/react/Toast.js.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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":";AAAA,OAAO,EAAkB,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;
|
|
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
|
-
|
|
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;
|
|
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":";AAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
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": '',
|
|
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]',
|
|
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;
|
|
1
|
+
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/react/components/Modal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;
|
|
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"}
|