@buoy-gg/assets 7.0.16
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/LICENSE +58 -0
- package/README.md +55 -0
- package/lib/commonjs/capture/expo.js +46 -0
- package/lib/commonjs/capture/expo.js.map +1 -0
- package/lib/commonjs/capture/install.js +78 -0
- package/lib/commonjs/capture/install.js.map +1 -0
- package/lib/commonjs/capture/measure.js +186 -0
- package/lib/commonjs/capture/measure.js.map +1 -0
- package/lib/commonjs/capture/metroGraph.js +148 -0
- package/lib/commonjs/capture/metroGraph.js.map +1 -0
- package/lib/commonjs/capture/registry.js +124 -0
- package/lib/commonjs/capture/registry.js.map +1 -0
- package/lib/commonjs/components/AssetDetail.js +205 -0
- package/lib/commonjs/components/AssetDetail.js.map +1 -0
- package/lib/commonjs/components/AssetRow.js +246 -0
- package/lib/commonjs/components/AssetRow.js.map +1 -0
- package/lib/commonjs/components/AssetsFilterBar.js +92 -0
- package/lib/commonjs/components/AssetsFilterBar.js.map +1 -0
- package/lib/commonjs/components/AssetsHeader.js +66 -0
- package/lib/commonjs/components/AssetsHeader.js.map +1 -0
- package/lib/commonjs/components/AssetsIcon.js +19 -0
- package/lib/commonjs/components/AssetsIcon.js.map +1 -0
- package/lib/commonjs/components/AssetsListControls.js +94 -0
- package/lib/commonjs/components/AssetsListControls.js.map +1 -0
- package/lib/commonjs/components/AssetsModal.js +338 -0
- package/lib/commonjs/components/AssetsModal.js.map +1 -0
- package/lib/commonjs/components/BaselineBar.js +110 -0
- package/lib/commonjs/components/BaselineBar.js.map +1 -0
- package/lib/commonjs/export.js +62 -0
- package/lib/commonjs/export.js.map +1 -0
- package/lib/commonjs/format.js +59 -0
- package/lib/commonjs/format.js.map +1 -0
- package/lib/commonjs/hooks/useAssetRecords.js +22 -0
- package/lib/commonjs/hooks/useAssetRecords.js.map +1 -0
- package/lib/commonjs/index.js +260 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/preset.js +45 -0
- package/lib/commonjs/preset.js.map +1 -0
- package/lib/commonjs/remote.js +65 -0
- package/lib/commonjs/remote.js.map +1 -0
- package/lib/commonjs/state.js +51 -0
- package/lib/commonjs/state.js.map +1 -0
- package/lib/commonjs/store/assetStore.js +234 -0
- package/lib/commonjs/store/assetStore.js.map +1 -0
- package/lib/commonjs/store/baseline.js +165 -0
- package/lib/commonjs/store/baseline.js.map +1 -0
- package/lib/commonjs/store/insights.js +129 -0
- package/lib/commonjs/store/insights.js.map +1 -0
- package/lib/commonjs/sync/assetsSyncAdapter.js +157 -0
- package/lib/commonjs/sync/assetsSyncAdapter.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/capture/expo.js +41 -0
- package/lib/module/capture/expo.js.map +1 -0
- package/lib/module/capture/install.js +72 -0
- package/lib/module/capture/install.js.map +1 -0
- package/lib/module/capture/measure.js +179 -0
- package/lib/module/capture/measure.js.map +1 -0
- package/lib/module/capture/metroGraph.js +141 -0
- package/lib/module/capture/metroGraph.js.map +1 -0
- package/lib/module/capture/registry.js +117 -0
- package/lib/module/capture/registry.js.map +1 -0
- package/lib/module/components/AssetDetail.js +201 -0
- package/lib/module/components/AssetDetail.js.map +1 -0
- package/lib/module/components/AssetRow.js +242 -0
- package/lib/module/components/AssetRow.js.map +1 -0
- package/lib/module/components/AssetsFilterBar.js +88 -0
- package/lib/module/components/AssetsFilterBar.js.map +1 -0
- package/lib/module/components/AssetsHeader.js +62 -0
- package/lib/module/components/AssetsHeader.js.map +1 -0
- package/lib/module/components/AssetsIcon.js +12 -0
- package/lib/module/components/AssetsIcon.js.map +1 -0
- package/lib/module/components/AssetsListControls.js +90 -0
- package/lib/module/components/AssetsListControls.js.map +1 -0
- package/lib/module/components/AssetsModal.js +333 -0
- package/lib/module/components/AssetsModal.js.map +1 -0
- package/lib/module/components/BaselineBar.js +106 -0
- package/lib/module/components/BaselineBar.js.map +1 -0
- package/lib/module/export.js +57 -0
- package/lib/module/export.js.map +1 -0
- package/lib/module/format.js +51 -0
- package/lib/module/format.js.map +1 -0
- package/lib/module/hooks/useAssetRecords.js +18 -0
- package/lib/module/hooks/useAssetRecords.js.map +1 -0
- package/lib/module/index.js +59 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/preset.js +40 -0
- package/lib/module/preset.js.map +1 -0
- package/lib/module/remote.js +58 -0
- package/lib/module/remote.js.map +1 -0
- package/lib/module/state.js +47 -0
- package/lib/module/state.js.map +1 -0
- package/lib/module/store/assetStore.js +219 -0
- package/lib/module/store/assetStore.js.map +1 -0
- package/lib/module/store/baseline.js +157 -0
- package/lib/module/store/baseline.js.map +1 -0
- package/lib/module/store/insights.js +125 -0
- package/lib/module/store/insights.js.map +1 -0
- package/lib/module/sync/assetsSyncAdapter.js +153 -0
- package/lib/module/sync/assetsSyncAdapter.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/capture/expo.d.ts +18 -0
- package/lib/typescript/capture/expo.d.ts.map +1 -0
- package/lib/typescript/capture/install.d.ts +17 -0
- package/lib/typescript/capture/install.d.ts.map +1 -0
- package/lib/typescript/capture/measure.d.ts +38 -0
- package/lib/typescript/capture/measure.d.ts.map +1 -0
- package/lib/typescript/capture/metroGraph.d.ts +33 -0
- package/lib/typescript/capture/metroGraph.d.ts.map +1 -0
- package/lib/typescript/capture/registry.d.ts +45 -0
- package/lib/typescript/capture/registry.d.ts.map +1 -0
- package/lib/typescript/components/AssetDetail.d.ts +17 -0
- package/lib/typescript/components/AssetDetail.d.ts.map +1 -0
- package/lib/typescript/components/AssetRow.d.ts +32 -0
- package/lib/typescript/components/AssetRow.d.ts.map +1 -0
- package/lib/typescript/components/AssetsFilterBar.d.ts +16 -0
- package/lib/typescript/components/AssetsFilterBar.d.ts.map +1 -0
- package/lib/typescript/components/AssetsHeader.d.ts +22 -0
- package/lib/typescript/components/AssetsHeader.d.ts.map +1 -0
- package/lib/typescript/components/AssetsIcon.d.ts +9 -0
- package/lib/typescript/components/AssetsIcon.d.ts.map +1 -0
- package/lib/typescript/components/AssetsListControls.d.ts +18 -0
- package/lib/typescript/components/AssetsListControls.d.ts.map +1 -0
- package/lib/typescript/components/AssetsModal.d.ts +24 -0
- package/lib/typescript/components/AssetsModal.d.ts.map +1 -0
- package/lib/typescript/components/BaselineBar.d.ts +13 -0
- package/lib/typescript/components/BaselineBar.d.ts.map +1 -0
- package/lib/typescript/export.d.ts +8 -0
- package/lib/typescript/export.d.ts.map +1 -0
- package/lib/typescript/format.d.ts +13 -0
- package/lib/typescript/format.d.ts.map +1 -0
- package/lib/typescript/hooks/useAssetRecords.d.ts +11 -0
- package/lib/typescript/hooks/useAssetRecords.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +26 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/preset.d.ts +38 -0
- package/lib/typescript/preset.d.ts.map +1 -0
- package/lib/typescript/remote.d.ts +17 -0
- package/lib/typescript/remote.d.ts.map +1 -0
- package/lib/typescript/state.d.ts +41 -0
- package/lib/typescript/state.d.ts.map +1 -0
- package/lib/typescript/store/assetStore.d.ts +51 -0
- package/lib/typescript/store/assetStore.d.ts.map +1 -0
- package/lib/typescript/store/baseline.d.ts +22 -0
- package/lib/typescript/store/baseline.d.ts.map +1 -0
- package/lib/typescript/store/insights.d.ts +7 -0
- package/lib/typescript/store/insights.d.ts.map +1 -0
- package/lib/typescript/sync/assetsSyncAdapter.d.ts +83 -0
- package/lib/typescript/sync/assetsSyncAdapter.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +162 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +77 -0
- package/src/capture/expo.ts +45 -0
- package/src/capture/install.ts +73 -0
- package/src/capture/measure.ts +167 -0
- package/src/capture/metroGraph.ts +146 -0
- package/src/capture/registry.ts +134 -0
- package/src/components/AssetDetail.tsx +207 -0
- package/src/components/AssetRow.tsx +243 -0
- package/src/components/AssetsFilterBar.tsx +99 -0
- package/src/components/AssetsHeader.tsx +75 -0
- package/src/components/AssetsIcon.tsx +9 -0
- package/src/components/AssetsListControls.tsx +101 -0
- package/src/components/AssetsModal.tsx +368 -0
- package/src/components/BaselineBar.tsx +98 -0
- package/src/export.ts +108 -0
- package/src/format.ts +53 -0
- package/src/hooks/useAssetRecords.ts +26 -0
- package/src/index.tsx +87 -0
- package/src/preset.tsx +35 -0
- package/src/remote.ts +65 -0
- package/src/state.ts +84 -0
- package/src/store/assetStore.ts +209 -0
- package/src/store/baseline.ts +152 -0
- package/src/store/insights.ts +145 -0
- package/src/sync/assetsSyncAdapter.ts +151 -0
- package/src/types.ts +160 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AssetRow — one bundled asset as a family-style card (matching the network
|
|
5
|
+
* tool's rows): rounded card, colored accent edge per kind, thumbnail, name,
|
|
6
|
+
* quiet metadata, bold right-aligned size, and finding badges ONLY when a
|
|
7
|
+
* finding exists. A thin proportional bar along the card bottom makes the
|
|
8
|
+
* heavy assets feel heavy at a glance.
|
|
9
|
+
*
|
|
10
|
+
* Thumbnails render through the NUMERIC registry id when available — that
|
|
11
|
+
* routes through resolveAssetSource natively, so it works in dev, iOS
|
|
12
|
+
* release (file://) and Android release (bare resource id) alike. They carry
|
|
13
|
+
* the buoy-internal testID so the images tool never records our own UI.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { Image, StyleSheet, Text, TouchableOpacity, View } from "react-native";
|
|
17
|
+
import { macOSColors } from "@buoy-gg/shared-ui";
|
|
18
|
+
import { displaySource } from "../capture/measure";
|
|
19
|
+
import { formatDimensions, formatScales, formatSize, KIND_COLORS, KIND_LABELS } from "../format";
|
|
20
|
+
import { estDecodedBytes } from "../store/assetStore";
|
|
21
|
+
|
|
22
|
+
/** Which audit findings apply to this record (drives the row badges). */
|
|
23
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
+
function Badge({
|
|
25
|
+
label,
|
|
26
|
+
color
|
|
27
|
+
}) {
|
|
28
|
+
// Quiet chip: legibility from light-gray text on a neutral fill. Only the
|
|
29
|
+
// serious tiers (red) and WEBP (blue) carry a small dot; the rest are plain.
|
|
30
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
31
|
+
style: styles.badgePill,
|
|
32
|
+
children: [color ? /*#__PURE__*/_jsx(View, {
|
|
33
|
+
style: [styles.badgeDot, {
|
|
34
|
+
backgroundColor: color
|
|
35
|
+
}]
|
|
36
|
+
}) : null, /*#__PURE__*/_jsx(Text, {
|
|
37
|
+
style: styles.badgePillText,
|
|
38
|
+
children: label
|
|
39
|
+
})]
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export function AssetRow({
|
|
43
|
+
record,
|
|
44
|
+
flags,
|
|
45
|
+
sizeFraction,
|
|
46
|
+
onPress
|
|
47
|
+
}) {
|
|
48
|
+
const accent = KIND_COLORS[record.kind];
|
|
49
|
+
const thumbSource = record.kind === "image" ? displaySource(record) : null;
|
|
50
|
+
const badges = [];
|
|
51
|
+
if (!record.loaded) badges.push({
|
|
52
|
+
label: "UNUSED"
|
|
53
|
+
});
|
|
54
|
+
if (flags.oversize) badges.push({
|
|
55
|
+
label: "OVERSIZE",
|
|
56
|
+
color: macOSColors.semantic.error
|
|
57
|
+
});
|
|
58
|
+
if (flags.duplicate) badges.push({
|
|
59
|
+
label: "DUP"
|
|
60
|
+
});
|
|
61
|
+
if (flags.heavy) badges.push({
|
|
62
|
+
label: "HEAVY"
|
|
63
|
+
});
|
|
64
|
+
if (flags.scaleAnomaly) badges.push({
|
|
65
|
+
label: "BAD SCALE",
|
|
66
|
+
color: macOSColors.semantic.error
|
|
67
|
+
});else if (flags.scaleGap) badges.push({
|
|
68
|
+
label: "LOW-RES"
|
|
69
|
+
});
|
|
70
|
+
if (flags.webp) badges.push({
|
|
71
|
+
label: "WEBP",
|
|
72
|
+
color: macOSColors.semantic.info
|
|
73
|
+
});
|
|
74
|
+
return /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
75
|
+
style: styles.card,
|
|
76
|
+
testID: `buoy-asset-row-${record.id}`,
|
|
77
|
+
onPress: () => onPress(record.id),
|
|
78
|
+
activeOpacity: 0.7,
|
|
79
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
80
|
+
style: styles.body,
|
|
81
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
82
|
+
style: styles.thumbBox,
|
|
83
|
+
children: thumbSource != null ? /*#__PURE__*/_jsx(Image, {
|
|
84
|
+
testID: "buoy-internal-assets-thumb",
|
|
85
|
+
source: thumbSource,
|
|
86
|
+
style: styles.thumb,
|
|
87
|
+
resizeMode: "contain"
|
|
88
|
+
}) : /*#__PURE__*/_jsx(Text, {
|
|
89
|
+
style: [styles.thumbFallback, {
|
|
90
|
+
color: accent
|
|
91
|
+
}],
|
|
92
|
+
children: KIND_LABELS[record.kind]
|
|
93
|
+
})
|
|
94
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
95
|
+
style: styles.main,
|
|
96
|
+
children: [/*#__PURE__*/_jsxs(Text, {
|
|
97
|
+
style: styles.name,
|
|
98
|
+
numberOfLines: 1,
|
|
99
|
+
children: [record.name, /*#__PURE__*/_jsxs(Text, {
|
|
100
|
+
style: styles.ext,
|
|
101
|
+
children: [".", record.type]
|
|
102
|
+
})]
|
|
103
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
104
|
+
style: styles.metaRow,
|
|
105
|
+
children: [record.kind === "image" && record.width != null ? /*#__PURE__*/_jsx(Text, {
|
|
106
|
+
style: styles.meta,
|
|
107
|
+
children: formatDimensions(record)
|
|
108
|
+
}) : null, record.kind === "image" && record.scales.length ? /*#__PURE__*/_jsx(Text, {
|
|
109
|
+
style: styles.meta,
|
|
110
|
+
children: formatScales(record.scales)
|
|
111
|
+
}) : null]
|
|
112
|
+
})]
|
|
113
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
114
|
+
style: styles.right,
|
|
115
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
116
|
+
style: styles.size,
|
|
117
|
+
children: formatSize(record, estDecodedBytes(record))
|
|
118
|
+
}), badges.length ? /*#__PURE__*/_jsx(View, {
|
|
119
|
+
style: styles.badgeRow,
|
|
120
|
+
children: badges.slice(0, 3).map(b => /*#__PURE__*/_jsx(Badge, {
|
|
121
|
+
label: b.label,
|
|
122
|
+
color: b.color
|
|
123
|
+
}, b.label))
|
|
124
|
+
}) : null]
|
|
125
|
+
})]
|
|
126
|
+
}), sizeFraction > 0 ? /*#__PURE__*/_jsx(View, {
|
|
127
|
+
style: styles.sizeTrack,
|
|
128
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
129
|
+
style: [styles.sizeFill, {
|
|
130
|
+
backgroundColor: accent,
|
|
131
|
+
width: `${Math.max(2, Math.round(sizeFraction * 100))}%`
|
|
132
|
+
}]
|
|
133
|
+
})
|
|
134
|
+
}) : null]
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
const styles = StyleSheet.create({
|
|
138
|
+
card: {
|
|
139
|
+
marginHorizontal: 10,
|
|
140
|
+
marginTop: 6,
|
|
141
|
+
borderRadius: 10,
|
|
142
|
+
backgroundColor: macOSColors.background.card,
|
|
143
|
+
borderWidth: 1,
|
|
144
|
+
borderColor: macOSColors.border.default,
|
|
145
|
+
overflow: "hidden"
|
|
146
|
+
},
|
|
147
|
+
body: {
|
|
148
|
+
flexDirection: "row",
|
|
149
|
+
alignItems: "center",
|
|
150
|
+
paddingVertical: 8,
|
|
151
|
+
paddingHorizontal: 12,
|
|
152
|
+
gap: 10
|
|
153
|
+
},
|
|
154
|
+
thumbBox: {
|
|
155
|
+
width: 40,
|
|
156
|
+
height: 40,
|
|
157
|
+
borderRadius: 8,
|
|
158
|
+
// Light plate so dark glyph assets stay visible on the dark card.
|
|
159
|
+
backgroundColor: "rgba(255,255,255,0.10)",
|
|
160
|
+
borderWidth: 1,
|
|
161
|
+
borderColor: macOSColors.border.default,
|
|
162
|
+
alignItems: "center",
|
|
163
|
+
justifyContent: "center",
|
|
164
|
+
overflow: "hidden"
|
|
165
|
+
},
|
|
166
|
+
thumb: {
|
|
167
|
+
width: 34,
|
|
168
|
+
height: 34
|
|
169
|
+
},
|
|
170
|
+
thumbFallback: {
|
|
171
|
+
fontSize: 9,
|
|
172
|
+
fontWeight: "700",
|
|
173
|
+
letterSpacing: 0.5
|
|
174
|
+
},
|
|
175
|
+
main: {
|
|
176
|
+
flex: 1,
|
|
177
|
+
gap: 3
|
|
178
|
+
},
|
|
179
|
+
name: {
|
|
180
|
+
color: macOSColors.text.primary,
|
|
181
|
+
fontSize: 12,
|
|
182
|
+
fontWeight: "600"
|
|
183
|
+
},
|
|
184
|
+
ext: {
|
|
185
|
+
color: macOSColors.text.muted,
|
|
186
|
+
fontWeight: "400"
|
|
187
|
+
},
|
|
188
|
+
metaRow: {
|
|
189
|
+
flexDirection: "row",
|
|
190
|
+
alignItems: "center",
|
|
191
|
+
gap: 8
|
|
192
|
+
},
|
|
193
|
+
meta: {
|
|
194
|
+
color: macOSColors.text.secondary,
|
|
195
|
+
fontSize: 10,
|
|
196
|
+
fontVariant: ["tabular-nums"]
|
|
197
|
+
},
|
|
198
|
+
right: {
|
|
199
|
+
alignItems: "flex-end",
|
|
200
|
+
gap: 4
|
|
201
|
+
},
|
|
202
|
+
size: {
|
|
203
|
+
color: macOSColors.text.primary,
|
|
204
|
+
fontSize: 12,
|
|
205
|
+
fontWeight: "700",
|
|
206
|
+
fontVariant: ["tabular-nums"]
|
|
207
|
+
},
|
|
208
|
+
badgeRow: {
|
|
209
|
+
flexDirection: "row",
|
|
210
|
+
gap: 4
|
|
211
|
+
},
|
|
212
|
+
badgePill: {
|
|
213
|
+
flexDirection: "row",
|
|
214
|
+
alignItems: "center",
|
|
215
|
+
gap: 4,
|
|
216
|
+
backgroundColor: "rgba(255,255,255,0.06)",
|
|
217
|
+
borderRadius: 4,
|
|
218
|
+
paddingHorizontal: 6,
|
|
219
|
+
paddingVertical: 2.5
|
|
220
|
+
},
|
|
221
|
+
badgeDot: {
|
|
222
|
+
width: 5,
|
|
223
|
+
height: 5,
|
|
224
|
+
borderRadius: 2.5
|
|
225
|
+
},
|
|
226
|
+
badgePillText: {
|
|
227
|
+
color: macOSColors.text.secondary,
|
|
228
|
+
fontSize: 9,
|
|
229
|
+
fontWeight: "600",
|
|
230
|
+
letterSpacing: 0.3
|
|
231
|
+
},
|
|
232
|
+
sizeTrack: {
|
|
233
|
+
height: 2,
|
|
234
|
+
backgroundColor: "transparent"
|
|
235
|
+
},
|
|
236
|
+
sizeFill: {
|
|
237
|
+
height: 2,
|
|
238
|
+
opacity: 0.45,
|
|
239
|
+
borderTopRightRadius: 2
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
//# sourceMappingURL=AssetRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Image","StyleSheet","Text","TouchableOpacity","View","macOSColors","displaySource","formatDimensions","formatScales","formatSize","KIND_COLORS","KIND_LABELS","estDecodedBytes","jsx","_jsx","jsxs","_jsxs","Badge","label","color","style","styles","badgePill","children","badgeDot","backgroundColor","badgePillText","AssetRow","record","flags","sizeFraction","onPress","accent","kind","thumbSource","badges","loaded","push","oversize","semantic","error","duplicate","heavy","scaleAnomaly","scaleGap","webp","info","card","testID","id","activeOpacity","body","thumbBox","source","thumb","resizeMode","thumbFallback","main","name","numberOfLines","ext","type","metaRow","width","meta","scales","length","right","size","badgeRow","slice","map","b","sizeTrack","sizeFill","Math","max","round","create","marginHorizontal","marginTop","borderRadius","background","borderWidth","borderColor","border","default","overflow","flexDirection","alignItems","paddingVertical","paddingHorizontal","gap","height","justifyContent","fontSize","fontWeight","letterSpacing","flex","text","primary","muted","secondary","fontVariant","opacity","borderTopRightRadius"],"sourceRoot":"../../../src","sources":["components/AssetRow.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,KAAK,EAAEC,UAAU,EAAEC,IAAI,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;AAC9E,SAASC,WAAW,QAAQ,oBAAoB;AAChD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SACEC,gBAAgB,EAChBC,YAAY,EACZC,UAAU,EACVC,WAAW,EACXC,WAAW,QACN,WAAW;AAClB,SAASC,eAAe,QAAQ,qBAAqB;;AAGrD;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAkBA,SAASC,KAAKA,CAAC;EAAEC,KAAK;EAAEC;AAAyC,CAAC,EAAE;EAClE;EACA;EACA,oBACEH,KAAA,CAACZ,IAAI;IAACgB,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,GAC3BJ,KAAK,gBAAGL,IAAA,CAACV,IAAI;MAACgB,KAAK,EAAE,CAACC,MAAM,CAACG,QAAQ,EAAE;QAAEC,eAAe,EAAEN;MAAM,CAAC;IAAE,CAAE,CAAC,GAAG,IAAI,eAC9EL,IAAA,CAACZ,IAAI;MAACkB,KAAK,EAAEC,MAAM,CAACK,aAAc;MAAAH,QAAA,EAAEL;IAAK,CAAO,CAAC;EAAA,CAC7C,CAAC;AAEX;AAEA,OAAO,SAASS,QAAQA,CAAC;EAAEC,MAAM;EAAEC,KAAK;EAAEC,YAAY;EAAEC;AAAuB,CAAC,EAAE;EAChF,MAAMC,MAAM,GAAGtB,WAAW,CAACkB,MAAM,CAACK,IAAI,CAAC;EACvC,MAAMC,WAAW,GAAGN,MAAM,CAACK,IAAI,KAAK,OAAO,GAAG3B,aAAa,CAACsB,MAAM,CAAC,GAAG,IAAI;EAE1E,MAAMO,MAAgD,GAAG,EAAE;EAC3D,IAAI,CAACP,MAAM,CAACQ,MAAM,EAAED,MAAM,CAACE,IAAI,CAAC;IAAEnB,KAAK,EAAE;EAAS,CAAC,CAAC;EACpD,IAAIW,KAAK,CAACS,QAAQ,EAAEH,MAAM,CAACE,IAAI,CAAC;IAAEnB,KAAK,EAAE,UAAU;IAAEC,KAAK,EAAEd,WAAW,CAACkC,QAAQ,CAACC;EAAM,CAAC,CAAC;EACzF,IAAIX,KAAK,CAACY,SAAS,EAAEN,MAAM,CAACE,IAAI,CAAC;IAAEnB,KAAK,EAAE;EAAM,CAAC,CAAC;EAClD,IAAIW,KAAK,CAACa,KAAK,EAAEP,MAAM,CAACE,IAAI,CAAC;IAAEnB,KAAK,EAAE;EAAQ,CAAC,CAAC;EAChD,IAAIW,KAAK,CAACc,YAAY,EAAER,MAAM,CAACE,IAAI,CAAC;IAAEnB,KAAK,EAAE,WAAW;IAAEC,KAAK,EAAEd,WAAW,CAACkC,QAAQ,CAACC;EAAM,CAAC,CAAC,CAAC,KAC1F,IAAIX,KAAK,CAACe,QAAQ,EAAET,MAAM,CAACE,IAAI,CAAC;IAAEnB,KAAK,EAAE;EAAU,CAAC,CAAC;EAC1D,IAAIW,KAAK,CAACgB,IAAI,EAAEV,MAAM,CAACE,IAAI,CAAC;IAAEnB,KAAK,EAAE,MAAM;IAAEC,KAAK,EAAEd,WAAW,CAACkC,QAAQ,CAACO;EAAK,CAAC,CAAC;EAEhF,oBACE9B,KAAA,CAACb,gBAAgB;IACfiB,KAAK,EAAEC,MAAM,CAAC0B,IAAK;IACnBC,MAAM,EAAE,kBAAkBpB,MAAM,CAACqB,EAAE,EAAG;IACtClB,OAAO,EAAEA,CAAA,KAAMA,OAAO,CAACH,MAAM,CAACqB,EAAE,CAAE;IAClCC,aAAa,EAAE,GAAI;IAAA3B,QAAA,gBAEnBP,KAAA,CAACZ,IAAI;MAACgB,KAAK,EAAEC,MAAM,CAAC8B,IAAK;MAAA5B,QAAA,gBACvBT,IAAA,CAACV,IAAI;QAACgB,KAAK,EAAEC,MAAM,CAAC+B,QAAS;QAAA7B,QAAA,EAC1BW,WAAW,IAAI,IAAI,gBAClBpB,IAAA,CAACd,KAAK;UACJgD,MAAM,EAAC,4BAA4B;UACnCK,MAAM,EAAEnB,WAAY;UACpBd,KAAK,EAAEC,MAAM,CAACiC,KAAM;UACpBC,UAAU,EAAC;QAAS,CACrB,CAAC,gBAEFzC,IAAA,CAACZ,IAAI;UAACkB,KAAK,EAAE,CAACC,MAAM,CAACmC,aAAa,EAAE;YAAErC,KAAK,EAAEa;UAAO,CAAC,CAAE;UAAAT,QAAA,EACpDZ,WAAW,CAACiB,MAAM,CAACK,IAAI;QAAC,CACrB;MACP,CACG,CAAC,eAEPjB,KAAA,CAACZ,IAAI;QAACgB,KAAK,EAAEC,MAAM,CAACoC,IAAK;QAAAlC,QAAA,gBACvBP,KAAA,CAACd,IAAI;UAACkB,KAAK,EAAEC,MAAM,CAACqC,IAAK;UAACC,aAAa,EAAE,CAAE;UAAApC,QAAA,GACxCK,MAAM,CAAC8B,IAAI,eACZ1C,KAAA,CAACd,IAAI;YAACkB,KAAK,EAAEC,MAAM,CAACuC,GAAI;YAAArC,QAAA,GAAC,GAAC,EAACK,MAAM,CAACiC,IAAI;UAAA,CAAO,CAAC;QAAA,CAC1C,CAAC,eACP7C,KAAA,CAACZ,IAAI;UAACgB,KAAK,EAAEC,MAAM,CAACyC,OAAQ;UAAAvC,QAAA,GACzBK,MAAM,CAACK,IAAI,KAAK,OAAO,IAAIL,MAAM,CAACmC,KAAK,IAAI,IAAI,gBAC9CjD,IAAA,CAACZ,IAAI;YAACkB,KAAK,EAAEC,MAAM,CAAC2C,IAAK;YAAAzC,QAAA,EAAEhB,gBAAgB,CAACqB,MAAM;UAAC,CAAO,CAAC,GACzD,IAAI,EAEPA,MAAM,CAACK,IAAI,KAAK,OAAO,IAAIL,MAAM,CAACqC,MAAM,CAACC,MAAM,gBAC9CpD,IAAA,CAACZ,IAAI;YAACkB,KAAK,EAAEC,MAAM,CAAC2C,IAAK;YAAAzC,QAAA,EAAEf,YAAY,CAACoB,MAAM,CAACqC,MAAM;UAAC,CAAO,CAAC,GAC5D,IAAI;QAAA,CACJ,CAAC;MAAA,CACH,CAAC,eAEPjD,KAAA,CAACZ,IAAI;QAACgB,KAAK,EAAEC,MAAM,CAAC8C,KAAM;QAAA5C,QAAA,gBACxBT,IAAA,CAACZ,IAAI;UAACkB,KAAK,EAAEC,MAAM,CAAC+C,IAAK;UAAA7C,QAAA,EACtBd,UAAU,CAACmB,MAAM,EAAEhB,eAAe,CAACgB,MAAM,CAAC;QAAC,CACxC,CAAC,EACNO,MAAM,CAAC+B,MAAM,gBACZpD,IAAA,CAACV,IAAI;UAACgB,KAAK,EAAEC,MAAM,CAACgD,QAAS;UAAA9C,QAAA,EAC1BY,MAAM,CAACmC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,GAAG,CAAEC,CAAC,iBACxB1D,IAAA,CAACG,KAAK;YAAeC,KAAK,EAAEsD,CAAC,CAACtD,KAAM;YAACC,KAAK,EAAEqD,CAAC,CAACrD;UAAM,GAAxCqD,CAAC,CAACtD,KAAwC,CACvD;QAAC,CACE,CAAC,GACL,IAAI;MAAA,CACJ,CAAC;IAAA,CACH,CAAC,EAENY,YAAY,GAAG,CAAC,gBACfhB,IAAA,CAACV,IAAI;MAACgB,KAAK,EAAEC,MAAM,CAACoD,SAAU;MAAAlD,QAAA,eAC5BT,IAAA,CAACV,IAAI;QACHgB,KAAK,EAAE,CACLC,MAAM,CAACqD,QAAQ,EACf;UACEjD,eAAe,EAAEO,MAAM;UACvB+B,KAAK,EAAE,GAAGY,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,KAAK,CAAC/C,YAAY,GAAG,GAAG,CAAC,CAAC;QACvD,CAAC;MACD,CACH;IAAC,CACE,CAAC,GACL,IAAI;EAAA,CACQ,CAAC;AAEvB;AAEA,MAAMT,MAAM,GAAGpB,UAAU,CAAC6E,MAAM,CAAC;EAC/B/B,IAAI,EAAE;IACJgC,gBAAgB,EAAE,EAAE;IACpBC,SAAS,EAAE,CAAC;IACZC,YAAY,EAAE,EAAE;IAChBxD,eAAe,EAAEpB,WAAW,CAAC6E,UAAU,CAACnC,IAAI;IAC5CoC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE/E,WAAW,CAACgF,MAAM,CAACC,OAAO;IACvCC,QAAQ,EAAE;EACZ,CAAC;EACDpC,IAAI,EAAE;IACJqC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,CAAC;IAClBC,iBAAiB,EAAE,EAAE;IACrBC,GAAG,EAAE;EACP,CAAC;EACDxC,QAAQ,EAAE;IACRW,KAAK,EAAE,EAAE;IACT8B,MAAM,EAAE,EAAE;IACVZ,YAAY,EAAE,CAAC;IACf;IACAxD,eAAe,EAAE,wBAAwB;IACzC0D,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE/E,WAAW,CAACgF,MAAM,CAACC,OAAO;IACvCG,UAAU,EAAE,QAAQ;IACpBK,cAAc,EAAE,QAAQ;IACxBP,QAAQ,EAAE;EACZ,CAAC;EACDjC,KAAK,EAAE;IACLS,KAAK,EAAE,EAAE;IACT8B,MAAM,EAAE;EACV,CAAC;EACDrC,aAAa,EAAE;IACbuC,QAAQ,EAAE,CAAC;IACXC,UAAU,EAAE,KAAK;IACjBC,aAAa,EAAE;EACjB,CAAC;EACDxC,IAAI,EAAE;IACJyC,IAAI,EAAE,CAAC;IACPN,GAAG,EAAE;EACP,CAAC;EACDlC,IAAI,EAAE;IACJvC,KAAK,EAAEd,WAAW,CAAC8F,IAAI,CAACC,OAAO;IAC/BL,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDpC,GAAG,EAAE;IACHzC,KAAK,EAAEd,WAAW,CAAC8F,IAAI,CAACE,KAAK;IAC7BL,UAAU,EAAE;EACd,CAAC;EACDlC,OAAO,EAAE;IACP0B,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBG,GAAG,EAAE;EACP,CAAC;EACD5B,IAAI,EAAE;IACJ7C,KAAK,EAAEd,WAAW,CAAC8F,IAAI,CAACG,SAAS;IACjCP,QAAQ,EAAE,EAAE;IACZQ,WAAW,EAAE,CAAC,cAAc;EAC9B,CAAC;EACDpC,KAAK,EAAE;IACLsB,UAAU,EAAE,UAAU;IACtBG,GAAG,EAAE;EACP,CAAC;EACDxB,IAAI,EAAE;IACJjD,KAAK,EAAEd,WAAW,CAAC8F,IAAI,CAACC,OAAO;IAC/BL,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBO,WAAW,EAAE,CAAC,cAAc;EAC9B,CAAC;EACDlC,QAAQ,EAAE;IACRmB,aAAa,EAAE,KAAK;IACpBI,GAAG,EAAE;EACP,CAAC;EACDtE,SAAS,EAAE;IACTkE,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBG,GAAG,EAAE,CAAC;IACNnE,eAAe,EAAE,wBAAwB;IACzCwD,YAAY,EAAE,CAAC;IACfU,iBAAiB,EAAE,CAAC;IACpBD,eAAe,EAAE;EACnB,CAAC;EACDlE,QAAQ,EAAE;IACRuC,KAAK,EAAE,CAAC;IACR8B,MAAM,EAAE,CAAC;IACTZ,YAAY,EAAE;EAChB,CAAC;EACDvD,aAAa,EAAE;IACbP,KAAK,EAAEd,WAAW,CAAC8F,IAAI,CAACG,SAAS;IACjCP,QAAQ,EAAE,CAAC;IACXC,UAAU,EAAE,KAAK;IACjBC,aAAa,EAAE;EACjB,CAAC;EACDxB,SAAS,EAAE;IACToB,MAAM,EAAE,CAAC;IACTpE,eAAe,EAAE;EACnB,CAAC;EACDiD,QAAQ,EAAE;IACRmB,MAAM,EAAE,CAAC;IACTW,OAAO,EAAE,IAAI;IACbC,oBAAoB,EAAE;EACxB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AssetsFilterBar — kind filter pills with counts, styled like the network
|
|
5
|
+
* tool's bordered pills: outlined, kind-accent-colored when active. Wrapping
|
|
6
|
+
* row, not a horizontal ScrollView (same height-measurement pitfall the
|
|
7
|
+
* images tool documents).
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { StyleSheet, Text, TouchableOpacity, View } from "react-native";
|
|
11
|
+
import { macOSColors } from "@buoy-gg/shared-ui";
|
|
12
|
+
import { KIND_COLORS, KIND_LABELS } from "../format";
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
export function AssetsFilterBar({
|
|
15
|
+
stats,
|
|
16
|
+
filter,
|
|
17
|
+
onChange
|
|
18
|
+
}) {
|
|
19
|
+
const chips = [{
|
|
20
|
+
key: "all",
|
|
21
|
+
label: `ALL ${stats.total}`,
|
|
22
|
+
accent: macOSColors.text.secondary
|
|
23
|
+
}];
|
|
24
|
+
for (const kind of Object.keys(stats.byKind)) {
|
|
25
|
+
const entry = stats.byKind[kind];
|
|
26
|
+
if (entry.count > 0) {
|
|
27
|
+
chips.push({
|
|
28
|
+
key: kind,
|
|
29
|
+
label: `${KIND_LABELS[kind]} ${entry.count}`,
|
|
30
|
+
accent: KIND_COLORS[kind]
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (stats.neverLoaded > 0) {
|
|
35
|
+
// Amber, not semantic.warning — the bright yellow reads as an alarm.
|
|
36
|
+
chips.push({
|
|
37
|
+
key: "unused",
|
|
38
|
+
label: `UNUSED ${stats.neverLoaded}`,
|
|
39
|
+
accent: "#FF9F1C"
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (chips.length <= 1) return null;
|
|
43
|
+
return /*#__PURE__*/_jsx(View, {
|
|
44
|
+
style: styles.bar,
|
|
45
|
+
children: chips.map(chip => {
|
|
46
|
+
const active = chip.key === filter;
|
|
47
|
+
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
48
|
+
style: [styles.chip, active && {
|
|
49
|
+
borderColor: chip.accent,
|
|
50
|
+
backgroundColor: `${chip.accent}1A`
|
|
51
|
+
}]
|
|
52
|
+
// Tapping the active chip again untoggles back to ALL.
|
|
53
|
+
,
|
|
54
|
+
onPress: () => onChange(active ? "all" : chip.key),
|
|
55
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
56
|
+
style: [styles.chipText, {
|
|
57
|
+
color: active ? chip.accent : macOSColors.text.secondary
|
|
58
|
+
}],
|
|
59
|
+
children: chip.label
|
|
60
|
+
})
|
|
61
|
+
}, chip.key);
|
|
62
|
+
})
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const styles = StyleSheet.create({
|
|
66
|
+
bar: {
|
|
67
|
+
flexDirection: "row",
|
|
68
|
+
flexWrap: "wrap",
|
|
69
|
+
gap: 6,
|
|
70
|
+
paddingHorizontal: 10,
|
|
71
|
+
paddingVertical: 8
|
|
72
|
+
},
|
|
73
|
+
chip: {
|
|
74
|
+
borderWidth: 1,
|
|
75
|
+
borderColor: macOSColors.border.default,
|
|
76
|
+
backgroundColor: macOSColors.background.card,
|
|
77
|
+
borderRadius: 999,
|
|
78
|
+
paddingHorizontal: 10,
|
|
79
|
+
paddingVertical: 5
|
|
80
|
+
},
|
|
81
|
+
chipText: {
|
|
82
|
+
fontSize: 10,
|
|
83
|
+
fontWeight: "700",
|
|
84
|
+
letterSpacing: 0.4,
|
|
85
|
+
lineHeight: 13
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=AssetsFilterBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","Text","TouchableOpacity","View","macOSColors","KIND_COLORS","KIND_LABELS","jsx","_jsx","AssetsFilterBar","stats","filter","onChange","chips","key","label","total","accent","text","secondary","kind","Object","keys","byKind","entry","count","push","neverLoaded","length","style","styles","bar","children","map","chip","active","borderColor","backgroundColor","onPress","chipText","color","create","flexDirection","flexWrap","gap","paddingHorizontal","paddingVertical","borderWidth","border","default","background","card","borderRadius","fontSize","fontWeight","letterSpacing","lineHeight"],"sourceRoot":"../../../src","sources":["components/AssetsFilterBar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AssetsHeader — shared ModalHeader wiring, matching the Images/Console
|
|
5
|
+
* header pattern. List mode shows inventory totals plus the shared
|
|
6
|
+
* ToolbarCopyButton (full markdown report); detail mode shows back
|
|
7
|
+
* navigation and the single-asset report.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { ModalHeader, ToolbarClearButton, ToolbarCopyButton } from "@buoy-gg/shared-ui";
|
|
11
|
+
import { formatBytes } from "../format";
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
export function AssetsHeader({
|
|
14
|
+
stats,
|
|
15
|
+
measuring,
|
|
16
|
+
detailOpen,
|
|
17
|
+
detailIndex = -1,
|
|
18
|
+
detailTotal = 0,
|
|
19
|
+
onCloseDetail,
|
|
20
|
+
onClear,
|
|
21
|
+
getReport,
|
|
22
|
+
onBack
|
|
23
|
+
}) {
|
|
24
|
+
if (detailOpen) {
|
|
25
|
+
const counter = detailIndex >= 0 && detailTotal > 0 ? `${detailIndex + 1} of ${detailTotal}` : undefined;
|
|
26
|
+
return /*#__PURE__*/_jsxs(ModalHeader, {
|
|
27
|
+
children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
|
|
28
|
+
onBack: onCloseDetail
|
|
29
|
+
}), /*#__PURE__*/_jsx(ModalHeader.Content, {
|
|
30
|
+
title: "Asset detail",
|
|
31
|
+
subtitle: counter
|
|
32
|
+
}), /*#__PURE__*/_jsx(ModalHeader.Actions, {
|
|
33
|
+
children: /*#__PURE__*/_jsx(ToolbarCopyButton, {
|
|
34
|
+
value: getReport
|
|
35
|
+
})
|
|
36
|
+
})]
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const subtitleParts = [`${stats.total} assets`];
|
|
40
|
+
// A mid-measure byte total reads as nonsense ("653 B+") — wait it out.
|
|
41
|
+
if (stats.totalBytes > 0 && !measuring) {
|
|
42
|
+
const partial = stats.measuredCount < stats.total ? "+" : "";
|
|
43
|
+
subtitleParts.push(`${formatBytes(stats.totalBytes)}${partial}`);
|
|
44
|
+
}
|
|
45
|
+
if (stats.neverLoaded > 0) subtitleParts.push(`${stats.neverLoaded} never loaded`);
|
|
46
|
+
if (stats.fontFamilies > 0) subtitleParts.push(`${stats.fontFamilies} fonts`);
|
|
47
|
+
return /*#__PURE__*/_jsxs(ModalHeader, {
|
|
48
|
+
children: [onBack ? /*#__PURE__*/_jsx(ModalHeader.Navigation, {
|
|
49
|
+
onBack: onBack
|
|
50
|
+
}) : null, /*#__PURE__*/_jsx(ModalHeader.Content, {
|
|
51
|
+
title: "Assets",
|
|
52
|
+
subtitle: subtitleParts.join(" · ")
|
|
53
|
+
}), /*#__PURE__*/_jsxs(ModalHeader.Actions, {
|
|
54
|
+
children: [/*#__PURE__*/_jsx(ToolbarCopyButton, {
|
|
55
|
+
value: getReport
|
|
56
|
+
}), /*#__PURE__*/_jsx(ToolbarClearButton, {
|
|
57
|
+
onPress: onClear
|
|
58
|
+
})]
|
|
59
|
+
})]
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=AssetsHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ModalHeader","ToolbarClearButton","ToolbarCopyButton","formatBytes","jsx","_jsx","jsxs","_jsxs","AssetsHeader","stats","measuring","detailOpen","detailIndex","detailTotal","onCloseDetail","onClear","getReport","onBack","counter","undefined","children","Navigation","Content","title","subtitle","Actions","value","subtitleParts","total","totalBytes","partial","measuredCount","push","neverLoaded","fontFamilies","join","onPress"],"sourceRoot":"../../../src","sources":["components/AssetsHeader.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,SACEA,WAAW,EACXC,kBAAkB,EAClBC,iBAAiB,QACZ,oBAAoB;AAC3B,SAASC,WAAW,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAgBxC,OAAO,SAASC,YAAYA,CAAC;EAC3BC,KAAK;EACLC,SAAS;EACTC,UAAU;EACVC,WAAW,GAAG,CAAC,CAAC;EAChBC,WAAW,GAAG,CAAC;EACfC,aAAa;EACbC,OAAO;EACPC,SAAS;EACTC;AACiB,CAAC,EAAE;EACpB,IAAIN,UAAU,EAAE;IACd,MAAMO,OAAO,GACXN,WAAW,IAAI,CAAC,IAAIC,WAAW,GAAG,CAAC,GAC/B,GAAGD,WAAW,GAAG,CAAC,OAAOC,WAAW,EAAE,GACtCM,SAAS;IACf,oBACEZ,KAAA,CAACP,WAAW;MAAAoB,QAAA,gBACVf,IAAA,CAACL,WAAW,CAACqB,UAAU;QAACJ,MAAM,EAAEH;MAAc,CAAE,CAAC,eACjDT,IAAA,CAACL,WAAW,CAACsB,OAAO;QAACC,KAAK,EAAC,cAAc;QAACC,QAAQ,EAAEN;MAAQ,CAAE,CAAC,eAC/Db,IAAA,CAACL,WAAW,CAACyB,OAAO;QAAAL,QAAA,eAClBf,IAAA,CAACH,iBAAiB;UAACwB,KAAK,EAAEV;QAAU,CAAE;MAAC,CACpB,CAAC;IAAA,CACX,CAAC;EAElB;EAEA,MAAMW,aAAa,GAAG,CAAC,GAAGlB,KAAK,CAACmB,KAAK,SAAS,CAAC;EAC/C;EACA,IAAInB,KAAK,CAACoB,UAAU,GAAG,CAAC,IAAI,CAACnB,SAAS,EAAE;IACtC,MAAMoB,OAAO,GAAGrB,KAAK,CAACsB,aAAa,GAAGtB,KAAK,CAACmB,KAAK,GAAG,GAAG,GAAG,EAAE;IAC5DD,aAAa,CAACK,IAAI,CAAC,GAAG7B,WAAW,CAACM,KAAK,CAACoB,UAAU,CAAC,GAAGC,OAAO,EAAE,CAAC;EAClE;EACA,IAAIrB,KAAK,CAACwB,WAAW,GAAG,CAAC,EAAEN,aAAa,CAACK,IAAI,CAAC,GAAGvB,KAAK,CAACwB,WAAW,eAAe,CAAC;EAClF,IAAIxB,KAAK,CAACyB,YAAY,GAAG,CAAC,EAAEP,aAAa,CAACK,IAAI,CAAC,GAAGvB,KAAK,CAACyB,YAAY,QAAQ,CAAC;EAE7E,oBACE3B,KAAA,CAACP,WAAW;IAAAoB,QAAA,GACTH,MAAM,gBAAGZ,IAAA,CAACL,WAAW,CAACqB,UAAU;MAACJ,MAAM,EAAEA;IAAO,CAAE,CAAC,GAAG,IAAI,eAC3DZ,IAAA,CAACL,WAAW,CAACsB,OAAO;MAACC,KAAK,EAAC,QAAQ;MAACC,QAAQ,EAAEG,aAAa,CAACQ,IAAI,CAAC,KAAK;IAAE,CAAE,CAAC,eAC3E5B,KAAA,CAACP,WAAW,CAACyB,OAAO;MAAAL,QAAA,gBAClBf,IAAA,CAACH,iBAAiB;QAACwB,KAAK,EAAEV;MAAU,CAAE,CAAC,eACvCX,IAAA,CAACJ,kBAAkB;QAACmC,OAAO,EAAErB;MAAQ,CAAE,CAAC;IAAA,CACrB,CAAC;EAAA,CACX,CAAC;AAElB","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AssetsIcon — re-exported from the Buoy Icon Format.
|
|
5
|
+
*
|
|
6
|
+
* The artwork lives in shared/icons/assets.json and is generated into
|
|
7
|
+
* @buoy-gg/floating-tools-core, so React Native, the desktop dashboard and
|
|
8
|
+
* Flutter all render the same drawing. Edit the JSON, then `pnpm icons`.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export { AssetsIcon, ASSETS_ICON_COLOR } from "@buoy-gg/shared-ui";
|
|
12
|
+
//# sourceMappingURL=AssetsIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AssetsIcon","ASSETS_ICON_COLOR"],"sourceRoot":"../../../src","sources":["components/AssetsIcon.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,EAAEC,iBAAiB,QAAQ,oBAAoB","ignoreList":[]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AssetsListControls — one compact row: name search, sort cycle (SIZE →
|
|
5
|
+
* NAME → TYPE), and — when no baseline exists yet — the BASE button that
|
|
6
|
+
* saves one. Once a baseline exists the BaselineBar takes over the diff UI,
|
|
7
|
+
* so this row never wastes space on a hint sentence.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { StyleSheet, Text, TextInput, TouchableOpacity, View } from "react-native";
|
|
11
|
+
import { macOSColors } from "@buoy-gg/shared-ui";
|
|
12
|
+
import { saveBaseline } from "../store/baseline";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
const NEXT_SORT = {
|
|
15
|
+
size: "name",
|
|
16
|
+
name: "type",
|
|
17
|
+
type: "size"
|
|
18
|
+
};
|
|
19
|
+
export function AssetsListControls({
|
|
20
|
+
query,
|
|
21
|
+
onQueryChange,
|
|
22
|
+
sort,
|
|
23
|
+
onSortChange,
|
|
24
|
+
showBaselineButton
|
|
25
|
+
}) {
|
|
26
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
27
|
+
style: styles.row,
|
|
28
|
+
children: [/*#__PURE__*/_jsx(TextInput, {
|
|
29
|
+
style: styles.input,
|
|
30
|
+
value: query,
|
|
31
|
+
onChangeText: onQueryChange,
|
|
32
|
+
placeholder: "Search assets\u2026",
|
|
33
|
+
placeholderTextColor: macOSColors.text.muted,
|
|
34
|
+
autoCapitalize: "none",
|
|
35
|
+
autoCorrect: false,
|
|
36
|
+
testID: "buoy-assets-search"
|
|
37
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
38
|
+
style: styles.button,
|
|
39
|
+
onPress: () => onSortChange(NEXT_SORT[sort]),
|
|
40
|
+
testID: "buoy-assets-sort",
|
|
41
|
+
children: /*#__PURE__*/_jsxs(Text, {
|
|
42
|
+
style: styles.buttonText,
|
|
43
|
+
children: ["\u2193 ", sort.toUpperCase()]
|
|
44
|
+
})
|
|
45
|
+
}), showBaselineButton ? /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
46
|
+
style: styles.button,
|
|
47
|
+
onPress: () => void saveBaseline(),
|
|
48
|
+
testID: "buoy-assets-save-baseline",
|
|
49
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
50
|
+
style: styles.buttonText,
|
|
51
|
+
children: "BASE"
|
|
52
|
+
})
|
|
53
|
+
}) : null]
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const styles = StyleSheet.create({
|
|
57
|
+
row: {
|
|
58
|
+
flexDirection: "row",
|
|
59
|
+
alignItems: "center",
|
|
60
|
+
gap: 8,
|
|
61
|
+
paddingHorizontal: 10,
|
|
62
|
+
paddingBottom: 8
|
|
63
|
+
},
|
|
64
|
+
input: {
|
|
65
|
+
flex: 1,
|
|
66
|
+
backgroundColor: macOSColors.background.input,
|
|
67
|
+
borderWidth: 1,
|
|
68
|
+
borderColor: macOSColors.border.default,
|
|
69
|
+
borderRadius: 8,
|
|
70
|
+
paddingHorizontal: 10,
|
|
71
|
+
paddingVertical: 6,
|
|
72
|
+
color: macOSColors.text.primary,
|
|
73
|
+
fontSize: 12
|
|
74
|
+
},
|
|
75
|
+
button: {
|
|
76
|
+
backgroundColor: macOSColors.background.card,
|
|
77
|
+
borderWidth: 1,
|
|
78
|
+
borderColor: macOSColors.border.default,
|
|
79
|
+
borderRadius: 8,
|
|
80
|
+
paddingHorizontal: 10,
|
|
81
|
+
paddingVertical: 7
|
|
82
|
+
},
|
|
83
|
+
buttonText: {
|
|
84
|
+
color: macOSColors.text.secondary,
|
|
85
|
+
fontSize: 10,
|
|
86
|
+
fontWeight: "700",
|
|
87
|
+
letterSpacing: 0.5
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=AssetsListControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","Text","TextInput","TouchableOpacity","View","macOSColors","saveBaseline","jsx","_jsx","jsxs","_jsxs","NEXT_SORT","size","name","type","AssetsListControls","query","onQueryChange","sort","onSortChange","showBaselineButton","style","styles","row","children","input","value","onChangeText","placeholder","placeholderTextColor","text","muted","autoCapitalize","autoCorrect","testID","button","onPress","buttonText","toUpperCase","create","flexDirection","alignItems","gap","paddingHorizontal","paddingBottom","flex","backgroundColor","background","borderWidth","borderColor","border","default","borderRadius","paddingVertical","color","primary","fontSize","card","secondary","fontWeight","letterSpacing"],"sourceRoot":"../../../src","sources":["components/AssetsListControls.tsx"],"mappings":"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","ignoreList":[]}
|