@buoy-gg/time-machine 7.0.22 → 7.0.24
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 +147 -677
- 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/store/snapshotVault.js +93 -9
- package/lib/commonjs/store/snapshotVault.js.map +1 -1
- package/lib/commonjs/store/timeMachineStore.js +125 -6
- package/lib/commonjs/store/timeMachineStore.js.map +1 -1
- package/lib/commonjs/sync/timeMachineSyncAdapter.js +41 -0
- 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 +150 -680
- 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/store/snapshotVault.js +87 -9
- package/lib/module/store/snapshotVault.js.map +1 -1
- package/lib/module/store/timeMachineStore.js +125 -7
- package/lib/module/store/timeMachineStore.js.map +1 -1
- package/lib/module/sync/timeMachineSyncAdapter.js +41 -0
- 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/store/snapshotVault.d.ts +48 -0
- package/lib/typescript/store/snapshotVault.d.ts.map +1 -1
- package/lib/typescript/store/timeMachineStore.d.ts +35 -1
- package/lib/typescript/store/timeMachineStore.d.ts.map +1 -1
- package/lib/typescript/sync/timeMachineSyncAdapter.d.ts +17 -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 +7 -7
- package/src/components/TimeMachineBody.tsx +183 -817
- 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/store/snapshotVault.ts +131 -9
- package/src/store/timeMachineStore.ts +136 -5
- package/src/sync/timeMachineSyncAdapter.ts +30 -0
- 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,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Grouped-inset list primitives — the building blocks of the Time Machine
|
|
5
|
+
* surface (see ./tmTheme for the tokens and the promotion plan).
|
|
6
|
+
*
|
|
7
|
+
* The shape they compose to:
|
|
8
|
+
*
|
|
9
|
+
* SectionLabel SOURCES ← outside the card, uppercase
|
|
10
|
+
* Group ┌──────────────────┐
|
|
11
|
+
* <row> │ All sources … 6 ›│ ← rows are plain children;
|
|
12
|
+
* <row> ├──────────────────┤ Group draws the hairlines
|
|
13
|
+
* └──────────────────┘
|
|
14
|
+
* Footnote Route is captured with… ← explains the group above
|
|
15
|
+
*
|
|
16
|
+
* Rows are whatever a screen needs — Group only owns the card, the clipping
|
|
17
|
+
* and the separators, so a row never has to know its position in the list.
|
|
18
|
+
*/
|
|
19
|
+
import { Children } from "react";
|
|
20
|
+
import { StyleSheet, Text, View } from "react-native";
|
|
21
|
+
import { ChevronRight } from "@buoy-gg/shared-ui";
|
|
22
|
+
import { tm } from "./tmTheme";
|
|
23
|
+
|
|
24
|
+
/** Uppercase section label that sits above a Group. */
|
|
25
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
26
|
+
export function SectionLabel({
|
|
27
|
+
children
|
|
28
|
+
}) {
|
|
29
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
30
|
+
style: styles.sectionLabel,
|
|
31
|
+
children: children
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Explanatory line under a Group ("Swipe a restore point to delete it").
|
|
37
|
+
* `centered` matches the iOS convention for a footnote under a lone button.
|
|
38
|
+
*/
|
|
39
|
+
export function Footnote({
|
|
40
|
+
children,
|
|
41
|
+
centered,
|
|
42
|
+
tone = "secondary"
|
|
43
|
+
}) {
|
|
44
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
45
|
+
style: [styles.footnote, centered ? styles.footnoteCentered : null, tone === "warning" ? styles.footnoteWarning : null],
|
|
46
|
+
children: children
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* A rounded grouped card. Draws a hairline between consecutive children and
|
|
52
|
+
* clips them, so a row can paint edge-to-edge (swipe actions, press washes)
|
|
53
|
+
* without punching through the corners.
|
|
54
|
+
*/
|
|
55
|
+
export function Group({
|
|
56
|
+
children,
|
|
57
|
+
style
|
|
58
|
+
}) {
|
|
59
|
+
const rows = Children.toArray(children);
|
|
60
|
+
return /*#__PURE__*/_jsx(View, {
|
|
61
|
+
style: [styles.group, style],
|
|
62
|
+
children: rows.map((row, index) =>
|
|
63
|
+
/*#__PURE__*/
|
|
64
|
+
// Children.toArray assigns stable synthetic keys ('.$id' for keyed
|
|
65
|
+
// children), so a row keeps its identity as the list changes.
|
|
66
|
+
_jsxs(View, {
|
|
67
|
+
children: [index > 0 ? /*#__PURE__*/_jsx(View, {
|
|
68
|
+
style: styles.separator
|
|
69
|
+
}) : null, row]
|
|
70
|
+
}, row.key ?? index))
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Trailing disclosure chevron for a row that opens or expands.
|
|
76
|
+
*
|
|
77
|
+
* A real glyph, not two rotated hairlines: at this size the hand-built
|
|
78
|
+
* version's strokes never met at the vertex, so it read as a broken arrow.
|
|
79
|
+
*/
|
|
80
|
+
export function DisclosureChevron() {
|
|
81
|
+
return /*#__PURE__*/_jsx(ChevronRight, {
|
|
82
|
+
size: 16,
|
|
83
|
+
color: tm.color.labelTertiary
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Pill button. Parameterized by color rather than by variant flags so a
|
|
89
|
+
* screen can name its own (`CapturePill`, `RestorePill`) in one line.
|
|
90
|
+
*/
|
|
91
|
+
export function PillLabel({
|
|
92
|
+
label,
|
|
93
|
+
color,
|
|
94
|
+
background
|
|
95
|
+
}) {
|
|
96
|
+
return /*#__PURE__*/_jsx(View, {
|
|
97
|
+
style: [styles.pill, {
|
|
98
|
+
backgroundColor: background
|
|
99
|
+
}],
|
|
100
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
101
|
+
style: [styles.pillText, {
|
|
102
|
+
color
|
|
103
|
+
}],
|
|
104
|
+
children: label
|
|
105
|
+
})
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
const styles = StyleSheet.create({
|
|
109
|
+
sectionLabel: {
|
|
110
|
+
color: tm.color.labelSecondary,
|
|
111
|
+
fontSize: tm.font.footnote,
|
|
112
|
+
fontWeight: "500",
|
|
113
|
+
textTransform: "uppercase",
|
|
114
|
+
letterSpacing: 0.4,
|
|
115
|
+
paddingHorizontal: tm.gutter + tm.textInset,
|
|
116
|
+
paddingTop: 22,
|
|
117
|
+
paddingBottom: 7
|
|
118
|
+
},
|
|
119
|
+
footnote: {
|
|
120
|
+
color: tm.color.labelSecondary,
|
|
121
|
+
fontSize: tm.font.footnote,
|
|
122
|
+
lineHeight: tm.font.footnote * 1.35,
|
|
123
|
+
paddingHorizontal: tm.gutter + tm.textInset,
|
|
124
|
+
paddingTop: 7
|
|
125
|
+
},
|
|
126
|
+
footnoteCentered: {
|
|
127
|
+
textAlign: "center"
|
|
128
|
+
},
|
|
129
|
+
footnoteWarning: {
|
|
130
|
+
color: tm.color.warning
|
|
131
|
+
},
|
|
132
|
+
group: {
|
|
133
|
+
marginHorizontal: tm.gutter,
|
|
134
|
+
backgroundColor: tm.color.group,
|
|
135
|
+
borderRadius: tm.radius.group,
|
|
136
|
+
overflow: "hidden"
|
|
137
|
+
},
|
|
138
|
+
separator: {
|
|
139
|
+
height: StyleSheet.hairlineWidth,
|
|
140
|
+
marginLeft: tm.separatorInset,
|
|
141
|
+
backgroundColor: tm.color.separator
|
|
142
|
+
},
|
|
143
|
+
pill: {
|
|
144
|
+
height: 32,
|
|
145
|
+
paddingHorizontal: 15,
|
|
146
|
+
borderRadius: tm.radius.pill,
|
|
147
|
+
alignItems: "center",
|
|
148
|
+
justifyContent: "center"
|
|
149
|
+
},
|
|
150
|
+
pillText: {
|
|
151
|
+
fontSize: tm.font.control,
|
|
152
|
+
fontWeight: "600",
|
|
153
|
+
letterSpacing: tm.tracking.control
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
//# sourceMappingURL=primitives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Children","StyleSheet","Text","View","ChevronRight","tm","jsx","_jsx","jsxs","_jsxs","SectionLabel","children","style","styles","sectionLabel","Footnote","centered","tone","footnote","footnoteCentered","footnoteWarning","Group","rows","toArray","group","map","row","index","separator","key","DisclosureChevron","size","color","labelTertiary","PillLabel","label","background","pill","backgroundColor","pillText","create","labelSecondary","fontSize","font","fontWeight","textTransform","letterSpacing","paddingHorizontal","gutter","textInset","paddingTop","paddingBottom","lineHeight","textAlign","warning","marginHorizontal","borderRadius","radius","overflow","height","hairlineWidth","marginLeft","separatorInset","alignItems","justifyContent","control","tracking"],"sourceRoot":"../../../src","sources":["ui/primitives.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Time Machine design tokens — the "modern" surface language.
|
|
5
|
+
*
|
|
6
|
+
* A grouped-inset list system (iOS Settings shape): one dark sheet, rounded
|
|
7
|
+
* grouped cards holding hairline-separated rows, uppercase section labels
|
|
8
|
+
* outside the cards, and explanatory footnotes under them.
|
|
9
|
+
*
|
|
10
|
+
* COLOR COMES FROM `buoyColors` — the shared dev-tools palette — not from a
|
|
11
|
+
* private set. The mockup this layout came from used the Apple system colors;
|
|
12
|
+
* those are mapped onto Buoy's equivalents here (system green → Buoy teal,
|
|
13
|
+
* and so on) so the tool reads as part of the same product as every other
|
|
14
|
+
* one. Change a value in gameUIColors.ts and it lands here.
|
|
15
|
+
*
|
|
16
|
+
* Only shape, spacing and type live as literals below — those ARE the design
|
|
17
|
+
* language and have no palette equivalent.
|
|
18
|
+
*
|
|
19
|
+
* SCOPE: this is Time Machine's pilot of the new look. If it lands, promote
|
|
20
|
+
* this file (and ./primitives) into @buoy-gg/shared-ui and let the other
|
|
21
|
+
* tools import it — nothing in here is Time-Machine-specific.
|
|
22
|
+
*
|
|
23
|
+
* Note: like every StyleSheet in the repo, these values are read once at
|
|
24
|
+
* module load, so the desktop dashboard's in-place re-tint needs a reload to
|
|
25
|
+
* reach them.
|
|
26
|
+
*/
|
|
27
|
+
import { buoyColors } from "@buoy-gg/shared-ui";
|
|
28
|
+
|
|
29
|
+
/** Hex opacity suffixes, so tinted fills stay tied to the palette color. */
|
|
30
|
+
const A18 = "2E";
|
|
31
|
+
const A30 = "4D";
|
|
32
|
+
export const tm = {
|
|
33
|
+
color: {
|
|
34
|
+
/** Sheet background behind the grouped cards. */
|
|
35
|
+
sheet: buoyColors.base,
|
|
36
|
+
/** A grouped card. */
|
|
37
|
+
group: buoyColors.card,
|
|
38
|
+
/** Row press / hover wash on top of a group. */
|
|
39
|
+
rowPressed: buoyColors.hover,
|
|
40
|
+
/** Hairline between rows, inset from the left like iOS. */
|
|
41
|
+
separator: buoyColors.border,
|
|
42
|
+
/** Neutral control fill (icon discs, chips, round buttons). */
|
|
43
|
+
fill: buoyColors.input,
|
|
44
|
+
fillStrong: buoyColors.borderStrong,
|
|
45
|
+
label: buoyColors.text,
|
|
46
|
+
labelSecondary: buoyColors.textSecondary,
|
|
47
|
+
labelTertiary: buoyColors.textMuted,
|
|
48
|
+
/** Primary action + "this is healthy" (Buoy teal). */
|
|
49
|
+
accent: buoyColors.primary,
|
|
50
|
+
accentSoft: `${buoyColors.primary}${A18}`,
|
|
51
|
+
accentSoftStrong: `${buoyColors.primary}${A30}`,
|
|
52
|
+
/** Text/icons ON an accent fill — the palette's teal wants dark ink. */
|
|
53
|
+
onAccent: "#0A0A0A",
|
|
54
|
+
warning: buoyColors.warning,
|
|
55
|
+
warningSoft: `${buoyColors.warning}${A18}`,
|
|
56
|
+
danger: buoyColors.error,
|
|
57
|
+
dangerSoft: `${buoyColors.error}${A18}`,
|
|
58
|
+
/** Text/icons ON a danger fill. */
|
|
59
|
+
onDanger: "#FFFFFF",
|
|
60
|
+
info: buoyColors.info
|
|
61
|
+
},
|
|
62
|
+
radius: {
|
|
63
|
+
/** Grouped card + the capture field that visually matches one. */
|
|
64
|
+
group: 14,
|
|
65
|
+
/** Fully rounded pills and status circles. */
|
|
66
|
+
pill: 99
|
|
67
|
+
},
|
|
68
|
+
/** Horizontal inset of the grouped cards from the sheet edge. */
|
|
69
|
+
gutter: 14,
|
|
70
|
+
/** Extra inset for labels/footnotes, measured from the card edge. */
|
|
71
|
+
textInset: 16,
|
|
72
|
+
/** Left inset of a row separator, measured from the card edge. */
|
|
73
|
+
separatorInset: 16,
|
|
74
|
+
font: {
|
|
75
|
+
/** Row titles and primary values. */
|
|
76
|
+
row: 17,
|
|
77
|
+
/** Buttons and pill labels. */
|
|
78
|
+
control: 15,
|
|
79
|
+
/** Section labels, row captions, footnotes. */
|
|
80
|
+
footnote: 13,
|
|
81
|
+
/** Route paths and other monospace detail. */
|
|
82
|
+
mono: 12
|
|
83
|
+
},
|
|
84
|
+
/** iOS tracks display text slightly tighter than the default. */
|
|
85
|
+
tracking: {
|
|
86
|
+
row: -0.43,
|
|
87
|
+
control: -0.2
|
|
88
|
+
},
|
|
89
|
+
/** Standard grouped-row height before content forces it taller. */
|
|
90
|
+
rowMinHeight: 52
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Monospace family. RN native resolves a single family name only (no CSS
|
|
95
|
+
* stack), and "monospace" is the one token both platforms honor — it is what
|
|
96
|
+
* the rest of the design system uses.
|
|
97
|
+
*/
|
|
98
|
+
export const TM_MONO = "monospace";
|
|
99
|
+
//# sourceMappingURL=tmTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["buoyColors","A18","A30","tm","color","sheet","base","group","card","rowPressed","hover","separator","border","fill","input","fillStrong","borderStrong","label","text","labelSecondary","textSecondary","labelTertiary","textMuted","accent","primary","accentSoft","accentSoftStrong","onAccent","warning","warningSoft","danger","error","dangerSoft","onDanger","info","radius","pill","gutter","textInset","separatorInset","font","row","control","footnote","mono","tracking","rowMinHeight","TM_MONO"],"sourceRoot":"../../../src","sources":["ui/tmTheme.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAU,QAAQ,oBAAoB;;AAE/C;AACA,MAAMC,GAAG,GAAG,IAAI;AAChB,MAAMC,GAAG,GAAG,IAAI;AAEhB,OAAO,MAAMC,EAAE,GAAG;EAChBC,KAAK,EAAE;IACL;IACAC,KAAK,EAAEL,UAAU,CAACM,IAAI;IACtB;IACAC,KAAK,EAAEP,UAAU,CAACQ,IAAI;IACtB;IACAC,UAAU,EAAET,UAAU,CAACU,KAAK;IAC5B;IACAC,SAAS,EAAEX,UAAU,CAACY,MAAM;IAC5B;IACAC,IAAI,EAAEb,UAAU,CAACc,KAAK;IACtBC,UAAU,EAAEf,UAAU,CAACgB,YAAY;IAEnCC,KAAK,EAAEjB,UAAU,CAACkB,IAAI;IACtBC,cAAc,EAAEnB,UAAU,CAACoB,aAAa;IACxCC,aAAa,EAAErB,UAAU,CAACsB,SAAS;IAEnC;IACAC,MAAM,EAAEvB,UAAU,CAACwB,OAAO;IAC1BC,UAAU,EAAE,GAAGzB,UAAU,CAACwB,OAAO,GAAGvB,GAAG,EAAE;IACzCyB,gBAAgB,EAAE,GAAG1B,UAAU,CAACwB,OAAO,GAAGtB,GAAG,EAAE;IAC/C;IACAyB,QAAQ,EAAE,SAAS;IAEnBC,OAAO,EAAE5B,UAAU,CAAC4B,OAAO;IAC3BC,WAAW,EAAE,GAAG7B,UAAU,CAAC4B,OAAO,GAAG3B,GAAG,EAAE;IAE1C6B,MAAM,EAAE9B,UAAU,CAAC+B,KAAK;IACxBC,UAAU,EAAE,GAAGhC,UAAU,CAAC+B,KAAK,GAAG9B,GAAG,EAAE;IACvC;IACAgC,QAAQ,EAAE,SAAS;IAEnBC,IAAI,EAAElC,UAAU,CAACkC;EACnB,CAAC;EAEDC,MAAM,EAAE;IACN;IACA5B,KAAK,EAAE,EAAE;IACT;IACA6B,IAAI,EAAE;EACR,CAAC;EAED;EACAC,MAAM,EAAE,EAAE;EACV;EACAC,SAAS,EAAE,EAAE;EACb;EACAC,cAAc,EAAE,EAAE;EAElBC,IAAI,EAAE;IACJ;IACAC,GAAG,EAAE,EAAE;IACP;IACAC,OAAO,EAAE,EAAE;IACX;IACAC,QAAQ,EAAE,EAAE;IACZ;IACAC,IAAI,EAAE;EACR,CAAC;EAED;EACAC,QAAQ,EAAE;IACRJ,GAAG,EAAE,CAAC,IAAI;IACVC,OAAO,EAAE,CAAC;EACZ,CAAC;EAED;EACAI,YAAY,EAAE;AAChB,CAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,OAAO,GAAG,WAAW","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeMachineBody.d.ts","sourceRoot":"","sources":["../../../src/components/TimeMachineBody.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TimeMachineBody.d.ts","sourceRoot":"","sources":["../../../src/components/TimeMachineBody.tsx"],"names":[],"mappings":"AAsCA,wBAAgB,eAAe,gCA+B9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeMachineModal.d.ts","sourceRoot":"","sources":["../../../src/components/TimeMachineModal.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"TimeMachineModal.d.ts","sourceRoot":"","sources":["../../../src/components/TimeMachineModal.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,OAAO,EACP,MAAM,EAAE,OAAO,EACf,UAAU,EACV,cAAc,GACf,EAAE,qBAAqB,+BAkBvB;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,gCAElC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../../src/components/confirm.ts"],"names":[],"mappings":"AAoBA,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,IAAI,QAUtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/components/format.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQ1C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CaptureBar.d.ts","sourceRoot":"","sources":["../../../../src/components/list/CaptureBar.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,IAAI,EACJ,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,+BAkCA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RestoreOutcome } from "../../store/timeMachineStore";
|
|
2
|
+
/**
|
|
3
|
+
* Did this restore do anything the app itself won't show you? Warnings alone
|
|
4
|
+
* don't count — "1 derived atom recomputes" is true of every restore and
|
|
5
|
+
* would put the card back on screen permanently.
|
|
6
|
+
*/
|
|
7
|
+
export declare function restoreNeedsAttention(outcome: RestoreOutcome): boolean;
|
|
8
|
+
export declare function RestoreOutcomeCard({ outcome }: {
|
|
9
|
+
outcome: RestoreOutcome;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=RestoreOutcomeCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RestoreOutcomeCard.d.ts","sourceRoot":"","sources":["../../../../src/components/list/RestoreOutcomeCard.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAKtE;AAuCD,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,+BAmD1E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SnapshotMeta } from "../../store/snapshotVault";
|
|
2
|
+
export declare function SnapshotRow({ meta, busy, onOpen, onRestore, onDelete, onDuplicate, }: {
|
|
3
|
+
meta: SnapshotMeta;
|
|
4
|
+
busy: boolean;
|
|
5
|
+
/** Zero-arg: a data-taking `onPress` prop is invoked with the event by
|
|
6
|
+
* Buoy MCP's tap_element, which crashes the row. */
|
|
7
|
+
onOpen: () => void;
|
|
8
|
+
onRestore: () => void;
|
|
9
|
+
onDelete: () => void;
|
|
10
|
+
onDuplicate: () => void;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=SnapshotRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SnapshotRow.d.ts","sourceRoot":"","sources":["../../../../src/components/list/SnapshotRow.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAkB9D,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd;yDACqD;IACrD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,+BA6DA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourcesStrip.d.ts","sourceRoot":"","sources":["../../../../src/components/list/SourcesStrip.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAsC3D,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,+BAkBpE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function UndoDeleteBar({ name, at, onUndo, onExpire, }: {
|
|
2
|
+
name: string;
|
|
3
|
+
/** Restarts the countdown when a second delete replaces the first. */
|
|
4
|
+
at: number;
|
|
5
|
+
onUndo: () => void;
|
|
6
|
+
onExpire: () => void;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=UndoDeleteBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UndoDeleteBar.d.ts","sourceRoot":"","sources":["../../../../src/components/list/UndoDeleteBar.tsx"],"names":[],"mappings":"AAeA,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,EAAE,EACF,MAAM,EACN,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,+BAuBA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WipeAllRow.d.ts","sourceRoot":"","sources":["../../../../src/components/list/WipeAllRow.tsx"],"names":[],"mappings":"AAOA,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,+BAYA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemDiffPanel.d.ts","sourceRoot":"","sources":["../../../../src/components/preview/ItemDiffPanel.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAWnE,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,wBAAwB,CAAA;CAAE,+BAyBzE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PreviewState } from "../../store/timeMachineStore";
|
|
2
|
+
import type { SnapshotMeta } from "../../store/snapshotVault";
|
|
3
|
+
export declare function PreviewScreen({ preview, snapshots, busy, onClose, }: {
|
|
4
|
+
preview: PreviewState;
|
|
5
|
+
snapshots: SnapshotMeta[];
|
|
6
|
+
busy: boolean;
|
|
7
|
+
onClose: () => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=PreviewFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreviewFlow.d.ts","sourceRoot":"","sources":["../../../../src/components/preview/PreviewFlow.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,YAAY,EACb,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAa9D,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,IAAI,EACJ,OAAO,GACR,EAAE;IACD,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,+BA+BA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RestorePointNameRow.d.ts","sourceRoot":"","sources":["../../../../src/components/preview/RestorePointNameRow.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,+BA+BA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { StateSnapshotPreviewItem } from "@buoy-gg/shared-ui";
|
|
2
1
|
import type { PreviewState } from "../../store/timeMachineStore";
|
|
3
2
|
import type { SnapshotMeta } from "../../store/snapshotVault";
|
|
4
3
|
export interface RestorePreviewScreenProps {
|
|
@@ -6,10 +5,7 @@ export interface RestorePreviewScreenProps {
|
|
|
6
5
|
snapshots: SnapshotMeta[];
|
|
7
6
|
busy: boolean;
|
|
8
7
|
onBack: () => void;
|
|
9
|
-
onOpenItem: (sourceId: string, item: StateSnapshotPreviewItem) => void;
|
|
10
8
|
onRestore: (mode: "live" | "reload", excludeKeys: string[]) => void;
|
|
11
|
-
onPickSide: (position: "left" | "right") => void;
|
|
12
|
-
onRefresh: () => void;
|
|
13
9
|
}
|
|
14
|
-
export declare function RestorePreviewScreen({ preview, snapshots, busy, onBack,
|
|
10
|
+
export declare function RestorePreviewScreen({ preview, snapshots, busy, onBack, onRestore, }: RestorePreviewScreenProps): import("react").JSX.Element;
|
|
15
11
|
//# sourceMappingURL=RestorePreviewScreen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RestorePreviewScreen.d.ts","sourceRoot":"","sources":["../../../../src/components/preview/RestorePreviewScreen.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RestorePreviewScreen.d.ts","sourceRoot":"","sources":["../../../../src/components/preview/RestorePreviewScreen.tsx"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAGV,YAAY,EACb,MAAM,8BAA8B,CAAC;AAItC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAyO9D,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACrE;AAED,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,GACV,EAAE,yBAAyB,+BAuiB3B"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One place for the verdict → glyph/color/label mapping. Color is ALWAYS
|
|
3
|
+
* paired with a distinct glyph (true minus U+2212, approx U+2248) — the
|
|
4
|
+
* repo-wide accessibility convention for diff surfaces.
|
|
5
|
+
*/
|
|
1
6
|
import type { StateSnapshotPreviewVerdict } from "@buoy-gg/shared-ui";
|
|
2
7
|
export interface VerdictMeta {
|
|
3
8
|
glyph: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verdictMeta.d.ts","sourceRoot":"","sources":["../../../../src/components/preview/verdictMeta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verdictMeta.d.ts","sourceRoot":"","sources":["../../../../src/components/preview/verdictMeta.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAGtE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,2BAA2B,EAAE,WAAW,CAuBzE,CAAC"}
|
|
@@ -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"}
|
|
@@ -34,14 +34,37 @@ export interface SnapshotMeta {
|
|
|
34
34
|
* User-saved restore scope: compound "sourceId::itemKey" strings. When set,
|
|
35
35
|
* restoring this snapshot touches ONLY these items — "this restore point
|
|
36
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.
|
|
37
40
|
*/
|
|
38
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[];
|
|
39
54
|
/**
|
|
40
55
|
* The route the app was on when this snapshot was captured. Absent when the
|
|
41
56
|
* app has no expo-router (nothing to return to). A restore can navigate back
|
|
42
57
|
* to it — see routeRestore.ts.
|
|
43
58
|
*/
|
|
44
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;
|
|
45
68
|
/** Source ids captured, with their capture warnings. */
|
|
46
69
|
sources: Record<string, SnapshotSourceMeta>;
|
|
47
70
|
}
|
|
@@ -55,6 +78,31 @@ export declare function loadIndex(): Promise<SnapshotMeta[]>;
|
|
|
55
78
|
export declare function saveSnapshot(snapshot: StoredSnapshot, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
56
79
|
export declare function loadSnapshot(id: string): Promise<StoredSnapshot | null>;
|
|
57
80
|
export declare function deleteSnapshot(id: string, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
81
|
+
/** Set (or clear with null/empty) the "only these items" restore scope. */
|
|
58
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[]>;
|
|
59
107
|
export declare function renameSnapshot(id: string, name: string, metas: SnapshotMeta[]): Promise<SnapshotMeta[]>;
|
|
60
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;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB
|
|
1
|
+
{"version":3,"file":"snapshotVault.d.ts","sourceRoot":"","sources":["../../../src/store/snapshotVault.ts"],"names":[],"mappings":"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"}
|