@buoy-gg/time-machine 7.0.21 → 7.0.23
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/lib/commonjs/components/TimeMachineBody.js +148 -583
- package/lib/commonjs/components/TimeMachineBody.js.map +1 -1
- package/lib/commonjs/components/TimeMachineModal.js +10 -11
- package/lib/commonjs/components/TimeMachineModal.js.map +1 -1
- package/lib/commonjs/components/confirm.js +39 -0
- package/lib/commonjs/components/confirm.js.map +1 -0
- package/lib/commonjs/components/format.js +24 -0
- package/lib/commonjs/components/format.js.map +1 -0
- package/lib/commonjs/components/list/CaptureBar.js +95 -0
- package/lib/commonjs/components/list/CaptureBar.js.map +1 -0
- package/lib/commonjs/components/list/RestoreOutcomeCard.js +162 -0
- package/lib/commonjs/components/list/RestoreOutcomeCard.js.map +1 -0
- package/lib/commonjs/components/list/SnapshotRow.js +141 -0
- package/lib/commonjs/components/list/SnapshotRow.js.map +1 -0
- package/lib/commonjs/components/list/SourcesStrip.js +126 -0
- package/lib/commonjs/components/list/SourcesStrip.js.map +1 -0
- package/lib/commonjs/components/list/UndoDeleteBar.js +81 -0
- package/lib/commonjs/components/list/UndoDeleteBar.js.map +1 -0
- package/lib/commonjs/components/list/WipeAllRow.js +46 -0
- package/lib/commonjs/components/list/WipeAllRow.js.map +1 -0
- package/lib/commonjs/components/preview/ItemDiffPanel.js +77 -0
- package/lib/commonjs/components/preview/ItemDiffPanel.js.map +1 -0
- package/lib/commonjs/components/preview/PreviewFlow.js +51 -0
- package/lib/commonjs/components/preview/PreviewFlow.js.map +1 -0
- package/lib/commonjs/components/preview/RestorePointNameRow.js +83 -0
- package/lib/commonjs/components/preview/RestorePointNameRow.js.map +1 -0
- package/lib/commonjs/components/preview/RestorePreviewScreen.js +549 -635
- package/lib/commonjs/components/preview/RestorePreviewScreen.js.map +1 -1
- package/lib/commonjs/components/preview/verdictMeta.js +8 -8
- package/lib/commonjs/components/preview/verdictMeta.js.map +1 -1
- package/lib/commonjs/components/sources.js +72 -0
- package/lib/commonjs/components/sources.js.map +1 -0
- package/lib/commonjs/index.js +55 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/store/routeRestore.js +188 -0
- package/lib/commonjs/store/routeRestore.js.map +1 -0
- package/lib/commonjs/store/snapshotVault.js +93 -9
- package/lib/commonjs/store/snapshotVault.js.map +1 -1
- package/lib/commonjs/store/timeMachineStore.js +164 -7
- package/lib/commonjs/store/timeMachineStore.js.map +1 -1
- package/lib/commonjs/sync/timeMachineSyncAdapter.js +59 -4
- package/lib/commonjs/sync/timeMachineSyncAdapter.js.map +1 -1
- package/lib/commonjs/ui/SwipeActionsRow.js +167 -0
- package/lib/commonjs/ui/SwipeActionsRow.js.map +1 -0
- package/lib/commonjs/ui/primitives.js +164 -0
- package/lib/commonjs/ui/primitives.js.map +1 -0
- package/lib/commonjs/ui/tmTheme.js +103 -0
- package/lib/commonjs/ui/tmTheme.js.map +1 -0
- package/lib/module/components/TimeMachineBody.js +151 -586
- package/lib/module/components/TimeMachineBody.js.map +1 -1
- package/lib/module/components/TimeMachineModal.js +11 -12
- package/lib/module/components/TimeMachineModal.js.map +1 -1
- package/lib/module/components/confirm.js +34 -0
- package/lib/module/components/confirm.js.map +1 -0
- package/lib/module/components/format.js +19 -0
- package/lib/module/components/format.js.map +1 -0
- package/lib/module/components/list/CaptureBar.js +90 -0
- package/lib/module/components/list/CaptureBar.js.map +1 -0
- package/lib/module/components/list/RestoreOutcomeCard.js +156 -0
- package/lib/module/components/list/RestoreOutcomeCard.js.map +1 -0
- package/lib/module/components/list/SnapshotRow.js +138 -0
- package/lib/module/components/list/SnapshotRow.js.map +1 -0
- package/lib/module/components/list/SourcesStrip.js +121 -0
- package/lib/module/components/list/SourcesStrip.js.map +1 -0
- package/lib/module/components/list/UndoDeleteBar.js +78 -0
- package/lib/module/components/list/UndoDeleteBar.js.map +1 -0
- package/lib/module/components/list/WipeAllRow.js +41 -0
- package/lib/module/components/list/WipeAllRow.js.map +1 -0
- package/lib/module/components/preview/ItemDiffPanel.js +72 -0
- package/lib/module/components/preview/ItemDiffPanel.js.map +1 -0
- package/lib/module/components/preview/PreviewFlow.js +46 -0
- package/lib/module/components/preview/PreviewFlow.js.map +1 -0
- package/lib/module/components/preview/RestorePointNameRow.js +78 -0
- package/lib/module/components/preview/RestorePointNameRow.js.map +1 -0
- package/lib/module/components/preview/RestorePreviewScreen.js +552 -638
- package/lib/module/components/preview/RestorePreviewScreen.js.map +1 -1
- package/lib/module/components/preview/verdictMeta.js +9 -8
- package/lib/module/components/preview/verdictMeta.js.map +1 -1
- package/lib/module/components/sources.js +66 -0
- package/lib/module/components/sources.js.map +1 -0
- package/lib/module/index.js +11 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/store/routeRestore.js +176 -0
- package/lib/module/store/routeRestore.js.map +1 -0
- package/lib/module/store/snapshotVault.js +87 -9
- package/lib/module/store/snapshotVault.js.map +1 -1
- package/lib/module/store/timeMachineStore.js +164 -8
- package/lib/module/store/timeMachineStore.js.map +1 -1
- package/lib/module/sync/timeMachineSyncAdapter.js +59 -4
- package/lib/module/sync/timeMachineSyncAdapter.js.map +1 -1
- package/lib/module/ui/SwipeActionsRow.js +162 -0
- package/lib/module/ui/SwipeActionsRow.js.map +1 -0
- package/lib/module/ui/primitives.js +156 -0
- package/lib/module/ui/primitives.js.map +1 -0
- package/lib/module/ui/tmTheme.js +99 -0
- package/lib/module/ui/tmTheme.js.map +1 -0
- package/lib/typescript/components/TimeMachineBody.d.ts.map +1 -1
- package/lib/typescript/components/TimeMachineModal.d.ts.map +1 -1
- package/lib/typescript/components/confirm.d.ts +2 -0
- package/lib/typescript/components/confirm.d.ts.map +1 -0
- package/lib/typescript/components/format.d.ts +4 -0
- package/lib/typescript/components/format.d.ts.map +1 -0
- package/lib/typescript/components/list/CaptureBar.d.ts +6 -0
- package/lib/typescript/components/list/CaptureBar.d.ts.map +1 -0
- package/lib/typescript/components/list/RestoreOutcomeCard.d.ts +11 -0
- package/lib/typescript/components/list/RestoreOutcomeCard.d.ts.map +1 -0
- package/lib/typescript/components/list/SnapshotRow.d.ts +12 -0
- package/lib/typescript/components/list/SnapshotRow.d.ts.map +1 -0
- package/lib/typescript/components/list/SourcesStrip.d.ts +5 -0
- package/lib/typescript/components/list/SourcesStrip.d.ts.map +1 -0
- package/lib/typescript/components/list/UndoDeleteBar.d.ts +8 -0
- package/lib/typescript/components/list/UndoDeleteBar.d.ts.map +1 -0
- package/lib/typescript/components/list/WipeAllRow.d.ts +5 -0
- package/lib/typescript/components/list/WipeAllRow.d.ts.map +1 -0
- package/lib/typescript/components/preview/ItemDiffPanel.d.ts +5 -0
- package/lib/typescript/components/preview/ItemDiffPanel.d.ts.map +1 -0
- package/lib/typescript/components/preview/PreviewFlow.d.ts +9 -0
- package/lib/typescript/components/preview/PreviewFlow.d.ts.map +1 -0
- package/lib/typescript/components/preview/RestorePointNameRow.d.ts +5 -0
- package/lib/typescript/components/preview/RestorePointNameRow.d.ts.map +1 -0
- package/lib/typescript/components/preview/RestorePreviewScreen.d.ts +1 -5
- package/lib/typescript/components/preview/RestorePreviewScreen.d.ts.map +1 -1
- package/lib/typescript/components/preview/verdictMeta.d.ts +5 -0
- package/lib/typescript/components/preview/verdictMeta.d.ts.map +1 -1
- package/lib/typescript/components/sources.d.ts +36 -0
- package/lib/typescript/components/sources.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/store/routeRestore.d.ts +51 -0
- package/lib/typescript/store/routeRestore.d.ts.map +1 -0
- package/lib/typescript/store/snapshotVault.d.ts +55 -0
- package/lib/typescript/store/snapshotVault.d.ts.map +1 -1
- package/lib/typescript/store/timeMachineStore.d.ts +64 -2
- package/lib/typescript/store/timeMachineStore.d.ts.map +1 -1
- package/lib/typescript/sync/timeMachineSyncAdapter.d.ts +25 -0
- package/lib/typescript/sync/timeMachineSyncAdapter.d.ts.map +1 -1
- package/lib/typescript/ui/SwipeActionsRow.d.ts +32 -0
- package/lib/typescript/ui/SwipeActionsRow.d.ts.map +1 -0
- package/lib/typescript/ui/primitives.d.ts +57 -0
- package/lib/typescript/ui/primitives.d.ts.map +1 -0
- package/lib/typescript/ui/tmTheme.d.ts +67 -0
- package/lib/typescript/ui/tmTheme.d.ts.map +1 -0
- package/package.json +12 -8
- package/src/components/TimeMachineBody.tsx +184 -682
- package/src/components/TimeMachineModal.tsx +10 -11
- package/src/components/confirm.ts +35 -0
- package/src/components/format.ts +17 -0
- package/src/components/list/CaptureBar.tsx +100 -0
- package/src/components/list/RestoreOutcomeCard.tsx +159 -0
- package/src/components/list/SnapshotRow.tsx +155 -0
- package/src/components/list/SourcesStrip.tsx +124 -0
- package/src/components/list/UndoDeleteBar.tsx +76 -0
- package/src/components/list/WipeAllRow.tsx +42 -0
- package/src/components/preview/ItemDiffPanel.tsx +77 -0
- package/src/components/preview/PreviewFlow.tsx +70 -0
- package/src/components/preview/RestorePointNameRow.tsx +80 -0
- package/src/components/preview/RestorePreviewScreen.tsx +535 -535
- package/src/components/preview/verdictMeta.ts +8 -8
- package/src/components/sources.ts +92 -0
- package/src/index.tsx +22 -0
- package/src/store/routeRestore.ts +194 -0
- package/src/store/snapshotVault.ts +138 -9
- package/src/store/timeMachineStore.ts +195 -5
- package/src/sync/timeMachineSyncAdapter.ts +57 -4
- package/src/ui/SwipeActionsRow.tsx +199 -0
- package/src/ui/primitives.tsx +157 -0
- package/src/ui/tmTheme.ts +107 -0
- package/lib/commonjs/components/preview/ItemDetailScreen.js +0 -189
- package/lib/commonjs/components/preview/ItemDetailScreen.js.map +0 -1
- package/lib/module/components/preview/ItemDetailScreen.js +0 -184
- package/lib/module/components/preview/ItemDetailScreen.js.map +0 -1
- package/lib/typescript/components/preview/ItemDetailScreen.d.ts +0 -11
- package/lib/typescript/components/preview/ItemDetailScreen.d.ts.map +0 -1
- package/src/components/preview/ItemDetailScreen.tsx +0 -172
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What Time Machine can capture from, and how healthy each source is.
|
|
3
|
+
*
|
|
4
|
+
* On device these are live registry probes; on Buoy Desktop the same shapes
|
|
5
|
+
* arrive mirrored in the sync payload. Route is folded in as a source even
|
|
6
|
+
* though it is a device capability rather than a registered provider — from
|
|
7
|
+
* the user's side "can this snapshot take me back to that screen?" is the
|
|
8
|
+
* same question as "will my Redux store come back".
|
|
9
|
+
*/
|
|
10
|
+
import type { ComponentType } from "react";
|
|
11
|
+
export interface SourceStatus {
|
|
12
|
+
id: string;
|
|
13
|
+
label: string;
|
|
14
|
+
canCapture: boolean;
|
|
15
|
+
canRestore: boolean;
|
|
16
|
+
/** Why it is in this state — shown on the Sources screen. */
|
|
17
|
+
detail?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Buoy icons paint their knock-out parts with `fill: "bg"`, defaulting to a
|
|
21
|
+
* near-black — so whatever surface an icon sits on has to be handed in as
|
|
22
|
+
* `bgColor` or those cut-outs read as black holes (storage's floppy slot and
|
|
23
|
+
* the route glyph are the two that use it).
|
|
24
|
+
*/
|
|
25
|
+
export type SourceIcon = ComponentType<{
|
|
26
|
+
size?: number;
|
|
27
|
+
color?: string;
|
|
28
|
+
bgColor?: string;
|
|
29
|
+
}>;
|
|
30
|
+
export declare function sourceIcon(id: string): SourceIcon;
|
|
31
|
+
/** Id of the route tile — a device capability, not a snapshot provider. */
|
|
32
|
+
export declare const ROUTE_SOURCE_ID = "route";
|
|
33
|
+
export declare function useSourceStatuses(): SourceStatus[];
|
|
34
|
+
/** A source is "attached" when a snapshot would actually pick it up. */
|
|
35
|
+
export declare function isAttached(source: SourceStatus): boolean;
|
|
36
|
+
//# sourceMappingURL=sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../src/components/sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAa3C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAWH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAEjD;AAED,2EAA2E;AAC3E,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC,wBAAgB,iBAAiB,IAAI,YAAY,EAAE,CA2BlD;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAExD"}
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
export { timeMachineToolPreset, createTimeMachineTool } from "./preset";
|
|
13
13
|
export { TimeMachineModal, TimeMachineToolView, type TimeMachineModalProps, } from "./components/TimeMachineModal";
|
|
14
14
|
export { timeMachineSyncAdapter } from "./sync/timeMachineSyncAdapter";
|
|
15
|
-
export { timeMachineStore, RESTORE_ORDER, type RestoreMode, type RestoreOutcome, type TimeMachineState, type RemoteProviderStatus, } from "./store/timeMachineStore";
|
|
15
|
+
export { timeMachineStore, RESTORE_ORDER, type RestoreMode, type RestoreOptions, type RestoreOutcome, type TimeMachineState, type RemoteProviderStatus, } from "./store/timeMachineStore";
|
|
16
|
+
export { armPendingRouteRestore, captureCurrentRoute, navigateToRoute, canNavigate as canRestoreRoute, type SnapshotRoute, type RouteRestoreResult, type RouteRestoreStatus, } from "./store/routeRestore";
|
|
16
17
|
export { setRemoteTimeMachineHandler, replaceTimeMachineFromSnapshot, } from "./store/timeMachineStore";
|
|
17
18
|
export type { SnapshotMeta, SnapshotSourceMeta, StoredSnapshot, } from "./store/snapshotVault";
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGxE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,qBAAqB,GAC3B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,WAAW,IAAI,eAAe,EAC9B,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,cAAc,GACf,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The route a snapshot was captured on. Only the URL is stored — imperative
|
|
3
|
+
* params passed as objects (`navigate(path, { user })`) are not part of a
|
|
4
|
+
* route and are not restored.
|
|
5
|
+
*/
|
|
6
|
+
export interface SnapshotRoute {
|
|
7
|
+
/** Pathname with dynamic segments resolved, e.g. `/pokemon/25`. */
|
|
8
|
+
pathname: string;
|
|
9
|
+
/** What we navigate to — pathname plus search params. */
|
|
10
|
+
href: string;
|
|
11
|
+
}
|
|
12
|
+
/** How a restore's route leg ended, reported back in the RestoreOutcome. */
|
|
13
|
+
export type RouteRestoreStatus = "navigated" | "deferred" | "failed" | "unavailable";
|
|
14
|
+
export interface RouteRestoreResult {
|
|
15
|
+
pathname: string;
|
|
16
|
+
href: string;
|
|
17
|
+
status: RouteRestoreStatus;
|
|
18
|
+
/** Present when status is "failed" / "unavailable". */
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A pending route older than this belongs to a reload that never happened
|
|
23
|
+
* (the app was killed, the user moved on). Boot-time navigation into a screen
|
|
24
|
+
* someone left minutes ago is worse than doing nothing.
|
|
25
|
+
*/
|
|
26
|
+
export declare const PENDING_ROUTE_TTL_MS = 60000;
|
|
27
|
+
/** The route to stamp on a snapshot being captured, or null when unavailable. */
|
|
28
|
+
export declare function captureCurrentRoute(): SnapshotRoute | null;
|
|
29
|
+
/** The live route, for "you're already here" checks in the UI. */
|
|
30
|
+
export declare function currentRoute(): SnapshotRoute | null;
|
|
31
|
+
/** True when imperative navigation is possible on this device. */
|
|
32
|
+
export declare function canNavigate(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Navigate to a captured route now. Uses `navigate` (not `push`) so restoring
|
|
35
|
+
* the same route twice doesn't stack duplicate screens.
|
|
36
|
+
*/
|
|
37
|
+
export declare function navigateToRoute(route: SnapshotRoute): RouteRestoreResult;
|
|
38
|
+
export declare function savePendingRoute(route: SnapshotRoute, snapshotName?: string): Promise<void>;
|
|
39
|
+
export declare function clearPendingRoute(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Boot-time consumer of a pending route: called once when the package loads
|
|
42
|
+
* (core requires it while mounting the floating menu), it navigates to the
|
|
43
|
+
* route a reload-mode restore asked for and clears the slot.
|
|
44
|
+
*
|
|
45
|
+
* Idempotent and self-limiting — the slot is cleared before navigating, so a
|
|
46
|
+
* route that crashes the app on arrival can't put it in a boot loop.
|
|
47
|
+
*/
|
|
48
|
+
export declare function armPendingRouteRestore(): void;
|
|
49
|
+
/** @internal test seam — re-arms the boot-time consumer. */
|
|
50
|
+
export declare function resetPendingRouteArm(): void;
|
|
51
|
+
//# sourceMappingURL=routeRestore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeRestore.d.ts","sourceRoot":"","sources":["../../../src/store/routeRestore.ts"],"names":[],"mappings":"AAuBA;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,4EAA4E;AAC5E,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,UAAU,GACV,QAAQ,GACR,aAAa,CAAC;AAElB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC;IAC3B,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAiB3C,iFAAiF;AACjF,wBAAgB,mBAAmB,IAAI,aAAa,GAAG,IAAI,CAG1D;AAED,kEAAkE;AAClE,wBAAgB,YAAY,IAAI,aAAa,GAAG,IAAI,CAEnD;AAED,kEAAkE;AAClE,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAgBxE;AAID,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,aAAa,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMvD;AAwBD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAkB7C;AAED,4DAA4D;AAC5D,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* snapshots — a snapshot must never contain snapshots.
|
|
16
16
|
*/
|
|
17
17
|
import { type SuperJSONResult } from "@buoy-gg/shared-ui";
|
|
18
|
+
import type { SnapshotRoute } from "./routeRestore";
|
|
18
19
|
export interface SnapshotSourceMeta {
|
|
19
20
|
warnings: string[];
|
|
20
21
|
}
|
|
@@ -33,8 +34,37 @@ export interface SnapshotMeta {
|
|
|
33
34
|
* User-saved restore scope: compound "sourceId::itemKey" strings. When set,
|
|
34
35
|
* restoring this snapshot touches ONLY these items — "this restore point
|
|
35
36
|
* means just my cart". Absent = full restore.
|
|
37
|
+
*
|
|
38
|
+
* Set through the MCP/adapter `setScope` action. The tool's own UI writes
|
|
39
|
+
* `excludedKeys` instead — see there for why the two exist.
|
|
36
40
|
*/
|
|
37
41
|
scope?: string[];
|
|
42
|
+
/**
|
|
43
|
+
* Items the user switched OFF in the restore preview and saved: compound
|
|
44
|
+
* "sourceId::itemKey" strings that every later restore of this snapshot
|
|
45
|
+
* leaves untouched, including the one-tap RESTORE on the list.
|
|
46
|
+
*
|
|
47
|
+
* The inverse of `scope`, and the right default for "I unchecked one of
|
|
48
|
+
* these ten keys": naming what to SKIP lets everything else through, so a
|
|
49
|
+
* key that only starts differing tomorrow is still restored. An include
|
|
50
|
+
* list built from today's diff would silently freeze the restore point to
|
|
51
|
+
* whatever happened to differ when it was saved.
|
|
52
|
+
*/
|
|
53
|
+
excludedKeys?: string[];
|
|
54
|
+
/**
|
|
55
|
+
* The route the app was on when this snapshot was captured. Absent when the
|
|
56
|
+
* app has no expo-router (nothing to return to). A restore can navigate back
|
|
57
|
+
* to it — see routeRestore.ts.
|
|
58
|
+
*/
|
|
59
|
+
route?: SnapshotRoute;
|
|
60
|
+
/**
|
|
61
|
+
* Whether restoring this point should also navigate back to `route`.
|
|
62
|
+
* Undefined means "yes, if there is a route" — the useful default, and the
|
|
63
|
+
* reason there is no longer a prompt on every restore.
|
|
64
|
+
*/
|
|
65
|
+
restoreRoute?: boolean;
|
|
66
|
+
/** When this point was last restored, for the "restored 4m ago" marker. */
|
|
67
|
+
lastRestoredAt?: number;
|
|
38
68
|
/** Source ids captured, with their capture warnings. */
|
|
39
69
|
sources: Record<string, SnapshotSourceMeta>;
|
|
40
70
|
}
|
|
@@ -48,6 +78,31 @@ export declare function loadIndex(): Promise<SnapshotMeta[]>;
|
|
|
48
78
|
export declare function saveSnapshot(snapshot: StoredSnapshot, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
49
79
|
export declare function loadSnapshot(id: string): Promise<StoredSnapshot | null>;
|
|
50
80
|
export declare function deleteSnapshot(id: string, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
81
|
+
/** Set (or clear with null/empty) the "only these items" restore scope. */
|
|
51
82
|
export declare function setSnapshotScope(id: string, scope: string[] | null, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
83
|
+
/**
|
|
84
|
+
* Set (or clear with null/empty) the items a restore of this snapshot must
|
|
85
|
+
* leave alone. Saving exclusions also clears any legacy `scope`: the two
|
|
86
|
+
* answer the same question in opposite directions, and the one the user just
|
|
87
|
+
* chose in the preview wins.
|
|
88
|
+
*/
|
|
89
|
+
export declare function setSnapshotExclusions(id: string, excludedKeys: string[] | null, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
90
|
+
/** Turn this point's route restore on or off — the row's route toggle. */
|
|
91
|
+
export declare function setSnapshotRestoreRoute(id: string, restoreRoute: boolean, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
92
|
+
/** Stamp a restore so the list can say which point you are currently in. */
|
|
93
|
+
export declare function markSnapshotRestored(id: string, at: number, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Copy a stored snapshot under a new id and name. The payload is copied by
|
|
96
|
+
* reference into a fresh record — the vault serializes it on write, so the
|
|
97
|
+
* two never share mutable state.
|
|
98
|
+
*/
|
|
99
|
+
export declare function duplicateSnapshot(id: string, name: string, metas: SnapshotMeta[]): Promise<{
|
|
100
|
+
metas: SnapshotMeta[];
|
|
101
|
+
meta: SnapshotMeta;
|
|
102
|
+
} | null>;
|
|
103
|
+
/** Read a whole record so a delete can be held in memory and undone. */
|
|
104
|
+
export declare function readSnapshot(id: string): Promise<StoredSnapshot | null>;
|
|
105
|
+
/** Put a held record back exactly as it was. */
|
|
106
|
+
export declare function restoreDeletedSnapshot(stored: StoredSnapshot, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
52
107
|
export declare function renameSnapshot(id: string, name: string, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
53
108
|
//# sourceMappingURL=snapshotVault.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshotVault.d.ts","sourceRoot":"","sources":["../../../src/store/snapshotVault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"snapshotVault.d.ts","sourceRoot":"","sources":["../../../src/store/snapshotVault.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
* Baseline snapshots always use this path (clear + reload).
|
|
16
16
|
*/
|
|
17
17
|
import { type StateSnapshotRestoreResult, type StateSnapshotPreviewItem } from "@buoy-gg/shared-ui";
|
|
18
|
-
import { type SnapshotMeta } from "./snapshotVault";
|
|
18
|
+
import { type SnapshotMeta, type StoredSnapshot } from "./snapshotVault";
|
|
19
|
+
import { type RouteRestoreResult } from "./routeRestore";
|
|
19
20
|
export declare const RESTORE_ORDER: string[];
|
|
20
21
|
export type RestoreMode = "live" | "reload";
|
|
21
22
|
export interface RestoreOutcome {
|
|
@@ -26,6 +27,26 @@ export interface RestoreOutcome {
|
|
|
26
27
|
/** True when a JS reload was scheduled as part of this restore. */
|
|
27
28
|
willReload: boolean;
|
|
28
29
|
results: Record<string, StateSnapshotRestoreResult>;
|
|
30
|
+
/**
|
|
31
|
+
* Present when the caller asked to also return to the snapshot's route.
|
|
32
|
+
* "deferred" means the navigation is queued for the post-reload boot.
|
|
33
|
+
*/
|
|
34
|
+
route?: RouteRestoreResult;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Will restoring this point also navigate back to its route? Having a route
|
|
38
|
+
* means wanting it back unless the point says otherwise — the same rule
|
|
39
|
+
* `restore` applies, exported so the UI can't drift from it.
|
|
40
|
+
*/
|
|
41
|
+
export declare function willRestoreRoute(meta: SnapshotMeta): boolean;
|
|
42
|
+
/** Extra knobs a restore accepts beyond mode + exclusions. */
|
|
43
|
+
export interface RestoreOptions {
|
|
44
|
+
/**
|
|
45
|
+
* Also navigate back to the route the snapshot was captured on. Ignored for
|
|
46
|
+
* snapshots with no captured route (and for baselines, which wipe to the
|
|
47
|
+
* app's own start route).
|
|
48
|
+
*/
|
|
49
|
+
restoreRoute?: boolean;
|
|
29
50
|
}
|
|
30
51
|
/** Provider capability row as mirrored to a remote dashboard. */
|
|
31
52
|
export interface RemoteProviderStatus {
|
|
@@ -66,6 +87,25 @@ export interface TimeMachineState {
|
|
|
66
87
|
* registry, and every operation forwards over the socket.
|
|
67
88
|
*/
|
|
68
89
|
remoteProviders: RemoteProviderStatus[] | null;
|
|
90
|
+
/**
|
|
91
|
+
* Route capture/restore availability, mirrored from the device's payload
|
|
92
|
+
* (Buoy Desktop). Null on-device, where the live router is probed directly.
|
|
93
|
+
*/
|
|
94
|
+
remoteRoute: RouteToolStatus | null;
|
|
95
|
+
/**
|
|
96
|
+
* The last deleted record, held in memory so the list can offer an undo.
|
|
97
|
+
* The vault row is already gone — this is the only copy until it expires.
|
|
98
|
+
*/
|
|
99
|
+
recentlyDeleted: {
|
|
100
|
+
stored: StoredSnapshot;
|
|
101
|
+
at: number;
|
|
102
|
+
} | null;
|
|
103
|
+
}
|
|
104
|
+
/** Whether this device can capture and return to routes, and where it is now. */
|
|
105
|
+
export interface RouteToolStatus {
|
|
106
|
+
available: boolean;
|
|
107
|
+
/** The route the app is on right now, when one can be read. */
|
|
108
|
+
current?: string;
|
|
69
109
|
}
|
|
70
110
|
type RemoteHandler = (action: string, params?: Record<string, unknown>) => Promise<unknown>;
|
|
71
111
|
declare class TimeMachineStore {
|
|
@@ -85,6 +125,7 @@ declare class TimeMachineStore {
|
|
|
85
125
|
busy?: TimeMachineState["busy"];
|
|
86
126
|
lastOutcome?: RestoreOutcome | null;
|
|
87
127
|
providers?: RemoteProviderStatus[];
|
|
128
|
+
route?: RouteToolStatus;
|
|
88
129
|
}): void;
|
|
89
130
|
/** Capture all capturable sources (or a subset) into a named snapshot. */
|
|
90
131
|
capture(name: string, sourceIds?: string[]): Promise<SnapshotMeta>;
|
|
@@ -99,10 +140,24 @@ declare class TimeMachineStore {
|
|
|
99
140
|
* itemKey being what previewItems emitted) — split per source before each
|
|
100
141
|
* provider sees only its own keys.
|
|
101
142
|
*/
|
|
102
|
-
restore(id: string, mode: RestoreMode, excludeKeys?: readonly string[]): Promise<RestoreOutcome>;
|
|
143
|
+
restore(id: string, mode: RestoreMode, excludeKeys?: readonly string[], options?: RestoreOptions): Promise<RestoreOutcome>;
|
|
103
144
|
private restoreSource;
|
|
104
145
|
private scheduleReload;
|
|
146
|
+
/**
|
|
147
|
+
* Delete, holding the whole record in memory so `undoDelete` can put it
|
|
148
|
+
* back. Swipe-and-tap is deliberate but not recoverable, and those are
|
|
149
|
+
* different properties — a restore point can represent state that takes
|
|
150
|
+
* ten minutes and a cooperative backend to rebuild.
|
|
151
|
+
*/
|
|
105
152
|
delete(id: string): Promise<void>;
|
|
153
|
+
/** Put the last deleted point back. No-op once the window has passed. */
|
|
154
|
+
undoDelete(): Promise<void>;
|
|
155
|
+
/** Drop the undo offer — on timeout, or when the user moves on. */
|
|
156
|
+
clearRecentlyDeleted(): void;
|
|
157
|
+
/** Turn this point's route restore on or off. */
|
|
158
|
+
setRestoreRoute(id: string, restoreRoute: boolean): Promise<void>;
|
|
159
|
+
/** Copy a point so a variation can start from a known-good base. */
|
|
160
|
+
duplicate(id: string): Promise<SnapshotMeta | null>;
|
|
106
161
|
rename(id: string, name: string): Promise<void>;
|
|
107
162
|
/**
|
|
108
163
|
* Save (or clear with null/empty) a snapshot's restore scope — compound
|
|
@@ -110,6 +165,12 @@ declare class TimeMachineStore {
|
|
|
110
165
|
* its scoped items.
|
|
111
166
|
*/
|
|
112
167
|
setScope(id: string, scope: string[] | null): Promise<void>;
|
|
168
|
+
/**
|
|
169
|
+
* Save (or clear with null/empty) the items every later restore of this
|
|
170
|
+
* snapshot must leave untouched — what the restore preview's checkboxes
|
|
171
|
+
* write when you save a selection.
|
|
172
|
+
*/
|
|
173
|
+
setExclusions(id: string, excludedKeys: string[] | null): Promise<void>;
|
|
113
174
|
clearLastOutcome(): void;
|
|
114
175
|
/**
|
|
115
176
|
* Wipe every clearable source to fresh-install state and reload — the
|
|
@@ -139,6 +200,7 @@ export declare function replaceTimeMachineFromSnapshot(payload: {
|
|
|
139
200
|
busy?: TimeMachineState["busy"];
|
|
140
201
|
lastOutcome?: RestoreOutcome | null;
|
|
141
202
|
providers?: RemoteProviderStatus[];
|
|
203
|
+
route?: RouteToolStatus;
|
|
142
204
|
}): void;
|
|
143
205
|
export {};
|
|
144
206
|
//# sourceMappingURL=timeMachineStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeMachineStore.d.ts","sourceRoot":"","sources":["../../../src/store/timeMachineStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAML,KAAK,0BAA0B,EAE/B,KAAK,wBAAwB,EAE9B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,
|
|
1
|
+
{"version":3,"file":"timeMachineStore.d.ts","sourceRoot":"","sources":["../../../src/store/timeMachineStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,10 @@ export declare const timeMachineSyncAdapter: {
|
|
|
12
12
|
canRestore: boolean;
|
|
13
13
|
detail: string | undefined;
|
|
14
14
|
}[];
|
|
15
|
+
route: {
|
|
16
|
+
current?: string | undefined;
|
|
17
|
+
available: boolean;
|
|
18
|
+
};
|
|
15
19
|
};
|
|
16
20
|
subscribe: (onChange: () => void) => () => void;
|
|
17
21
|
actions: {
|
|
@@ -26,6 +30,10 @@ export declare const timeMachineSyncAdapter: {
|
|
|
26
30
|
canRestore: boolean;
|
|
27
31
|
detail: string | undefined;
|
|
28
32
|
}[];
|
|
33
|
+
route: {
|
|
34
|
+
current?: string | undefined;
|
|
35
|
+
available: boolean;
|
|
36
|
+
};
|
|
29
37
|
};
|
|
30
38
|
capture: (params: unknown) => Promise<{
|
|
31
39
|
captured: boolean;
|
|
@@ -50,6 +58,23 @@ export declare const timeMachineSyncAdapter: {
|
|
|
50
58
|
id: string;
|
|
51
59
|
name: string;
|
|
52
60
|
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Save (or clear with null/empty) the items a restore of this snapshot
|
|
63
|
+
* must leave alone — the persisted form of the preview's checkboxes.
|
|
64
|
+
*/
|
|
65
|
+
setExclusions: (params: unknown) => Promise<{
|
|
66
|
+
id: string;
|
|
67
|
+
excluded: number;
|
|
68
|
+
}>;
|
|
69
|
+
/** Turn a restore point's route restore on or off. */
|
|
70
|
+
setRestoreRoute: (params: unknown) => Promise<{
|
|
71
|
+
id: string;
|
|
72
|
+
restoreRoute: boolean;
|
|
73
|
+
}>;
|
|
74
|
+
/** Copy a restore point so a variation can start from a known base. */
|
|
75
|
+
duplicate: (params: unknown) => Promise<{
|
|
76
|
+
snapshot: import("..").SnapshotMeta;
|
|
77
|
+
}>;
|
|
53
78
|
/** Save (or clear with null/empty) a snapshot's targeted-restore scope. */
|
|
54
79
|
setScope: (params: unknown) => Promise<{
|
|
55
80
|
scoped: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeMachineSyncAdapter.d.ts","sourceRoot":"","sources":["../../../src/sync/timeMachineSyncAdapter.ts"],"names":[],"mappings":"AAmBA,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"timeMachineSyncAdapter.d.ts","sourceRoot":"","sources":["../../../src/sync/timeMachineSyncAdapter.ts"],"names":[],"mappings":"AAmBA,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAC;AA0DnC,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;0BAIX,MAAM,IAAI;;;;;;;;;;;;;;;;;;0BAWN,OAAO;;;;;;;;QAW/B,uEAAuE;;QAGvE;;kCAE0B;0BACF,OAAO;yBAaR,OAAO;;;;yBAOP,OAAO;;;;;QAO9B;;;WAGG;gCAC2B,OAAO;;;;QAQrC,sDAAsD;kCACtB,OAAO;;;;QAQvC,uEAAuE;4BAC7C,OAAO;;;QAQjC,2EAA2E;2BAClD,OAAO;;;;;QAQhC;;;;WAIG;0BACqB,OAAO;;;;;;;;;;;;;;;;;;;;;;QAoC/B,2EAA2E;0BACnD,OAAO;;;;;;;CAmBlC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swipe-left-to-reveal-actions wrapper for a grouped-list row.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately dependency-free (Animated + PanResponder): the package has no
|
|
5
|
+
* gesture-handler peer and a devtool must not add one to the host app.
|
|
6
|
+
*
|
|
7
|
+
* Gesture contract, in the order the checks matter:
|
|
8
|
+
* - The pan only claims the gesture once the finger has moved LEFT past a
|
|
9
|
+
* threshold and is travelling more horizontally than vertically, so taps
|
|
10
|
+
* still reach the row and vertical drags still scroll the list.
|
|
11
|
+
* - Releasing past half the action width latches open; anything less snaps
|
|
12
|
+
* shut, so a hesitant swipe never leaves a half-open row.
|
|
13
|
+
* - Only one row stays open at a time (module-level latch below) — matching
|
|
14
|
+
* iOS, and it means "swipe, then tap an action" can't hit the wrong row.
|
|
15
|
+
*/
|
|
16
|
+
import { type ReactNode } from "react";
|
|
17
|
+
export interface SwipeAction {
|
|
18
|
+
label: string;
|
|
19
|
+
/** Called after the row closes itself. */
|
|
20
|
+
onPress: () => void;
|
|
21
|
+
/** Fill behind the row. Defaults to the neutral action fill. */
|
|
22
|
+
background?: string;
|
|
23
|
+
color?: string;
|
|
24
|
+
testID?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function SwipeActionsRow({ children, actions, testID, }: {
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
/** Rightmost is the one furthest from the content, iOS-style. */
|
|
29
|
+
actions: SwipeAction[];
|
|
30
|
+
testID?: string;
|
|
31
|
+
}): import("react").JSX.Element;
|
|
32
|
+
//# sourceMappingURL=SwipeActionsRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwipeActionsRow.d.ts","sourceRoot":"","sources":["../../../src/ui/SwipeActionsRow.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AA+E1D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,iEAAiE;IACjE,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,+BAmDA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grouped-inset list primitives — the building blocks of the Time Machine
|
|
3
|
+
* surface (see ./tmTheme for the tokens and the promotion plan).
|
|
4
|
+
*
|
|
5
|
+
* The shape they compose to:
|
|
6
|
+
*
|
|
7
|
+
* SectionLabel SOURCES ← outside the card, uppercase
|
|
8
|
+
* Group ┌──────────────────┐
|
|
9
|
+
* <row> │ All sources … 6 ›│ ← rows are plain children;
|
|
10
|
+
* <row> ├──────────────────┤ Group draws the hairlines
|
|
11
|
+
* └──────────────────┘
|
|
12
|
+
* Footnote Route is captured with… ← explains the group above
|
|
13
|
+
*
|
|
14
|
+
* Rows are whatever a screen needs — Group only owns the card, the clipping
|
|
15
|
+
* and the separators, so a row never has to know its position in the list.
|
|
16
|
+
*/
|
|
17
|
+
import { type ReactNode } from "react";
|
|
18
|
+
import { type ViewStyle } from "react-native";
|
|
19
|
+
/** Uppercase section label that sits above a Group. */
|
|
20
|
+
export declare function SectionLabel({ children }: {
|
|
21
|
+
children: string;
|
|
22
|
+
}): import("react").JSX.Element;
|
|
23
|
+
/**
|
|
24
|
+
* Explanatory line under a Group ("Swipe a restore point to delete it").
|
|
25
|
+
* `centered` matches the iOS convention for a footnote under a lone button.
|
|
26
|
+
*/
|
|
27
|
+
export declare function Footnote({ children, centered, tone, }: {
|
|
28
|
+
children: ReactNode;
|
|
29
|
+
centered?: boolean;
|
|
30
|
+
tone?: "secondary" | "warning";
|
|
31
|
+
}): import("react").JSX.Element;
|
|
32
|
+
/**
|
|
33
|
+
* A rounded grouped card. Draws a hairline between consecutive children and
|
|
34
|
+
* clips them, so a row can paint edge-to-edge (swipe actions, press washes)
|
|
35
|
+
* without punching through the corners.
|
|
36
|
+
*/
|
|
37
|
+
export declare function Group({ children, style, }: {
|
|
38
|
+
children: ReactNode;
|
|
39
|
+
style?: ViewStyle;
|
|
40
|
+
}): import("react").JSX.Element;
|
|
41
|
+
/**
|
|
42
|
+
* Trailing disclosure chevron for a row that opens or expands.
|
|
43
|
+
*
|
|
44
|
+
* A real glyph, not two rotated hairlines: at this size the hand-built
|
|
45
|
+
* version's strokes never met at the vertex, so it read as a broken arrow.
|
|
46
|
+
*/
|
|
47
|
+
export declare function DisclosureChevron(): import("react").JSX.Element;
|
|
48
|
+
/**
|
|
49
|
+
* Pill button. Parameterized by color rather than by variant flags so a
|
|
50
|
+
* screen can name its own (`CapturePill`, `RestorePill`) in one line.
|
|
51
|
+
*/
|
|
52
|
+
export declare function PillLabel({ label, color, background, }: {
|
|
53
|
+
label: string;
|
|
54
|
+
color: string;
|
|
55
|
+
background: string;
|
|
56
|
+
}): import("react").JSX.Element;
|
|
57
|
+
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/ui/primitives.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAItE,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAE9D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,QAAQ,EACR,IAAkB,GACnB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CAChC,+BAYA;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,+BAcA;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,gCAEhC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,UAAU,GACX,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,+BAMA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export declare const tm: {
|
|
2
|
+
readonly color: {
|
|
3
|
+
/** Sheet background behind the grouped cards. */
|
|
4
|
+
readonly sheet: "#121212";
|
|
5
|
+
/** A grouped card. */
|
|
6
|
+
readonly group: "#1A1A1A";
|
|
7
|
+
/** Row press / hover wash on top of a group. */
|
|
8
|
+
readonly rowPressed: "#242424";
|
|
9
|
+
/** Hairline between rows, inset from the left like iOS. */
|
|
10
|
+
readonly separator: "#333333";
|
|
11
|
+
/** Neutral control fill (icon discs, chips, round buttons). */
|
|
12
|
+
readonly fill: "#2A2A2A";
|
|
13
|
+
readonly fillStrong: "#444444";
|
|
14
|
+
readonly label: "#E0E0E0";
|
|
15
|
+
readonly labelSecondary: "#A0A0A0";
|
|
16
|
+
readonly labelTertiary: "#888888";
|
|
17
|
+
/** Primary action + "this is healthy" (Buoy teal). */
|
|
18
|
+
readonly accent: "#20C997";
|
|
19
|
+
readonly accentSoft: "#20C9972E";
|
|
20
|
+
readonly accentSoftStrong: "#20C9974D";
|
|
21
|
+
/** Text/icons ON an accent fill — the palette's teal wants dark ink. */
|
|
22
|
+
readonly onAccent: "#0A0A0A";
|
|
23
|
+
readonly warning: "#FFA94D";
|
|
24
|
+
readonly warningSoft: "#FFA94D2E";
|
|
25
|
+
readonly danger: "#EF4444";
|
|
26
|
+
readonly dangerSoft: "#EF44442E";
|
|
27
|
+
/** Text/icons ON a danger fill. */
|
|
28
|
+
readonly onDanger: "#FFFFFF";
|
|
29
|
+
readonly info: "#00B8E6";
|
|
30
|
+
};
|
|
31
|
+
readonly radius: {
|
|
32
|
+
/** Grouped card + the capture field that visually matches one. */
|
|
33
|
+
readonly group: 14;
|
|
34
|
+
/** Fully rounded pills and status circles. */
|
|
35
|
+
readonly pill: 99;
|
|
36
|
+
};
|
|
37
|
+
/** Horizontal inset of the grouped cards from the sheet edge. */
|
|
38
|
+
readonly gutter: 14;
|
|
39
|
+
/** Extra inset for labels/footnotes, measured from the card edge. */
|
|
40
|
+
readonly textInset: 16;
|
|
41
|
+
/** Left inset of a row separator, measured from the card edge. */
|
|
42
|
+
readonly separatorInset: 16;
|
|
43
|
+
readonly font: {
|
|
44
|
+
/** Row titles and primary values. */
|
|
45
|
+
readonly row: 17;
|
|
46
|
+
/** Buttons and pill labels. */
|
|
47
|
+
readonly control: 15;
|
|
48
|
+
/** Section labels, row captions, footnotes. */
|
|
49
|
+
readonly footnote: 13;
|
|
50
|
+
/** Route paths and other monospace detail. */
|
|
51
|
+
readonly mono: 12;
|
|
52
|
+
};
|
|
53
|
+
/** iOS tracks display text slightly tighter than the default. */
|
|
54
|
+
readonly tracking: {
|
|
55
|
+
readonly row: -0.43;
|
|
56
|
+
readonly control: -0.2;
|
|
57
|
+
};
|
|
58
|
+
/** Standard grouped-row height before content forces it taller. */
|
|
59
|
+
readonly rowMinHeight: 52;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Monospace family. RN native resolves a single family name only (no CSS
|
|
63
|
+
* stack), and "monospace" is the one token both platforms honor — it is what
|
|
64
|
+
* the rest of the design system uses.
|
|
65
|
+
*/
|
|
66
|
+
export declare const TM_MONO = "monospace";
|
|
67
|
+
//# sourceMappingURL=tmTheme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tmTheme.d.ts","sourceRoot":"","sources":["../../../src/ui/tmTheme.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,EAAE;;QAEX,iDAAiD;;QAEjD,sBAAsB;;QAEtB,gDAAgD;;QAEhD,2DAA2D;;QAE3D,+DAA+D;;;;;;QAQ/D,sDAAsD;;;;QAItD,wEAAwE;;;;;;QAQxE,mCAAmC;;;;;QAOnC,kEAAkE;;QAElE,8CAA8C;;;IAIhD,iEAAiE;;IAEjE,qEAAqE;;IAErE,kEAAkE;;;QAIhE,qCAAqC;;QAErC,+BAA+B;;QAE/B,+CAA+C;;QAE/C,8CAA8C;;;IAIhD,iEAAiE;;;;;IAMjE,mEAAmE;;CAE3D,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,OAAO,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buoy-gg/time-machine",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.23",
|
|
4
4
|
"description": "Time Machine - snapshot & restore app state (storage, redux, zustand, jotai, react-query) for React Native DevTools",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -11,23 +11,27 @@
|
|
|
11
11
|
"src",
|
|
12
12
|
"lib"
|
|
13
13
|
],
|
|
14
|
-
"sideEffects":
|
|
14
|
+
"sideEffects": [
|
|
15
|
+
"./src/index.tsx",
|
|
16
|
+
"./lib/commonjs/index.js",
|
|
17
|
+
"./lib/module/index.js"
|
|
18
|
+
],
|
|
15
19
|
"dependencies": {
|
|
16
|
-
"@buoy-gg/floating-tools-core": "^7.0.
|
|
17
|
-
"@buoy-gg/shared-ui": "^7.0.
|
|
20
|
+
"@buoy-gg/floating-tools-core": "^7.0.23",
|
|
21
|
+
"@buoy-gg/shared-ui": "^7.0.23"
|
|
18
22
|
},
|
|
19
23
|
"peerDependencies": {
|
|
20
|
-
"@buoy-gg/license": "7.0.
|
|
24
|
+
"@buoy-gg/license": "7.0.23",
|
|
21
25
|
"react": "*",
|
|
22
26
|
"react-native": "*",
|
|
23
|
-
"@buoy-gg/core": "^7.0.
|
|
27
|
+
"@buoy-gg/core": "^7.0.23"
|
|
24
28
|
},
|
|
25
29
|
"devDependencies": {
|
|
26
30
|
"@types/react": "^19.1.0",
|
|
27
31
|
"@types/react-native": "^0.73.0",
|
|
28
32
|
"typescript": "~5.8.3",
|
|
29
|
-
"@buoy-gg/
|
|
30
|
-
"@buoy-gg/
|
|
33
|
+
"@buoy-gg/license": "^7.0.23",
|
|
34
|
+
"@buoy-gg/core": "^7.0.23"
|
|
31
35
|
},
|
|
32
36
|
"react-native-builder-bob": {
|
|
33
37
|
"source": "src",
|