@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.
Files changed (179) hide show
  1. package/LICENSE +58 -0
  2. package/README.md +55 -0
  3. package/lib/commonjs/capture/expo.js +46 -0
  4. package/lib/commonjs/capture/expo.js.map +1 -0
  5. package/lib/commonjs/capture/install.js +78 -0
  6. package/lib/commonjs/capture/install.js.map +1 -0
  7. package/lib/commonjs/capture/measure.js +186 -0
  8. package/lib/commonjs/capture/measure.js.map +1 -0
  9. package/lib/commonjs/capture/metroGraph.js +148 -0
  10. package/lib/commonjs/capture/metroGraph.js.map +1 -0
  11. package/lib/commonjs/capture/registry.js +124 -0
  12. package/lib/commonjs/capture/registry.js.map +1 -0
  13. package/lib/commonjs/components/AssetDetail.js +205 -0
  14. package/lib/commonjs/components/AssetDetail.js.map +1 -0
  15. package/lib/commonjs/components/AssetRow.js +246 -0
  16. package/lib/commonjs/components/AssetRow.js.map +1 -0
  17. package/lib/commonjs/components/AssetsFilterBar.js +92 -0
  18. package/lib/commonjs/components/AssetsFilterBar.js.map +1 -0
  19. package/lib/commonjs/components/AssetsHeader.js +66 -0
  20. package/lib/commonjs/components/AssetsHeader.js.map +1 -0
  21. package/lib/commonjs/components/AssetsIcon.js +19 -0
  22. package/lib/commonjs/components/AssetsIcon.js.map +1 -0
  23. package/lib/commonjs/components/AssetsListControls.js +94 -0
  24. package/lib/commonjs/components/AssetsListControls.js.map +1 -0
  25. package/lib/commonjs/components/AssetsModal.js +338 -0
  26. package/lib/commonjs/components/AssetsModal.js.map +1 -0
  27. package/lib/commonjs/components/BaselineBar.js +110 -0
  28. package/lib/commonjs/components/BaselineBar.js.map +1 -0
  29. package/lib/commonjs/export.js +62 -0
  30. package/lib/commonjs/export.js.map +1 -0
  31. package/lib/commonjs/format.js +59 -0
  32. package/lib/commonjs/format.js.map +1 -0
  33. package/lib/commonjs/hooks/useAssetRecords.js +22 -0
  34. package/lib/commonjs/hooks/useAssetRecords.js.map +1 -0
  35. package/lib/commonjs/index.js +260 -0
  36. package/lib/commonjs/index.js.map +1 -0
  37. package/lib/commonjs/package.json +1 -0
  38. package/lib/commonjs/preset.js +45 -0
  39. package/lib/commonjs/preset.js.map +1 -0
  40. package/lib/commonjs/remote.js +65 -0
  41. package/lib/commonjs/remote.js.map +1 -0
  42. package/lib/commonjs/state.js +51 -0
  43. package/lib/commonjs/state.js.map +1 -0
  44. package/lib/commonjs/store/assetStore.js +234 -0
  45. package/lib/commonjs/store/assetStore.js.map +1 -0
  46. package/lib/commonjs/store/baseline.js +165 -0
  47. package/lib/commonjs/store/baseline.js.map +1 -0
  48. package/lib/commonjs/store/insights.js +129 -0
  49. package/lib/commonjs/store/insights.js.map +1 -0
  50. package/lib/commonjs/sync/assetsSyncAdapter.js +157 -0
  51. package/lib/commonjs/sync/assetsSyncAdapter.js.map +1 -0
  52. package/lib/commonjs/types.js +2 -0
  53. package/lib/commonjs/types.js.map +1 -0
  54. package/lib/module/capture/expo.js +41 -0
  55. package/lib/module/capture/expo.js.map +1 -0
  56. package/lib/module/capture/install.js +72 -0
  57. package/lib/module/capture/install.js.map +1 -0
  58. package/lib/module/capture/measure.js +179 -0
  59. package/lib/module/capture/measure.js.map +1 -0
  60. package/lib/module/capture/metroGraph.js +141 -0
  61. package/lib/module/capture/metroGraph.js.map +1 -0
  62. package/lib/module/capture/registry.js +117 -0
  63. package/lib/module/capture/registry.js.map +1 -0
  64. package/lib/module/components/AssetDetail.js +201 -0
  65. package/lib/module/components/AssetDetail.js.map +1 -0
  66. package/lib/module/components/AssetRow.js +242 -0
  67. package/lib/module/components/AssetRow.js.map +1 -0
  68. package/lib/module/components/AssetsFilterBar.js +88 -0
  69. package/lib/module/components/AssetsFilterBar.js.map +1 -0
  70. package/lib/module/components/AssetsHeader.js +62 -0
  71. package/lib/module/components/AssetsHeader.js.map +1 -0
  72. package/lib/module/components/AssetsIcon.js +12 -0
  73. package/lib/module/components/AssetsIcon.js.map +1 -0
  74. package/lib/module/components/AssetsListControls.js +90 -0
  75. package/lib/module/components/AssetsListControls.js.map +1 -0
  76. package/lib/module/components/AssetsModal.js +333 -0
  77. package/lib/module/components/AssetsModal.js.map +1 -0
  78. package/lib/module/components/BaselineBar.js +106 -0
  79. package/lib/module/components/BaselineBar.js.map +1 -0
  80. package/lib/module/export.js +57 -0
  81. package/lib/module/export.js.map +1 -0
  82. package/lib/module/format.js +51 -0
  83. package/lib/module/format.js.map +1 -0
  84. package/lib/module/hooks/useAssetRecords.js +18 -0
  85. package/lib/module/hooks/useAssetRecords.js.map +1 -0
  86. package/lib/module/index.js +59 -0
  87. package/lib/module/index.js.map +1 -0
  88. package/lib/module/preset.js +40 -0
  89. package/lib/module/preset.js.map +1 -0
  90. package/lib/module/remote.js +58 -0
  91. package/lib/module/remote.js.map +1 -0
  92. package/lib/module/state.js +47 -0
  93. package/lib/module/state.js.map +1 -0
  94. package/lib/module/store/assetStore.js +219 -0
  95. package/lib/module/store/assetStore.js.map +1 -0
  96. package/lib/module/store/baseline.js +157 -0
  97. package/lib/module/store/baseline.js.map +1 -0
  98. package/lib/module/store/insights.js +125 -0
  99. package/lib/module/store/insights.js.map +1 -0
  100. package/lib/module/sync/assetsSyncAdapter.js +153 -0
  101. package/lib/module/sync/assetsSyncAdapter.js.map +1 -0
  102. package/lib/module/types.js +2 -0
  103. package/lib/module/types.js.map +1 -0
  104. package/lib/typescript/capture/expo.d.ts +18 -0
  105. package/lib/typescript/capture/expo.d.ts.map +1 -0
  106. package/lib/typescript/capture/install.d.ts +17 -0
  107. package/lib/typescript/capture/install.d.ts.map +1 -0
  108. package/lib/typescript/capture/measure.d.ts +38 -0
  109. package/lib/typescript/capture/measure.d.ts.map +1 -0
  110. package/lib/typescript/capture/metroGraph.d.ts +33 -0
  111. package/lib/typescript/capture/metroGraph.d.ts.map +1 -0
  112. package/lib/typescript/capture/registry.d.ts +45 -0
  113. package/lib/typescript/capture/registry.d.ts.map +1 -0
  114. package/lib/typescript/components/AssetDetail.d.ts +17 -0
  115. package/lib/typescript/components/AssetDetail.d.ts.map +1 -0
  116. package/lib/typescript/components/AssetRow.d.ts +32 -0
  117. package/lib/typescript/components/AssetRow.d.ts.map +1 -0
  118. package/lib/typescript/components/AssetsFilterBar.d.ts +16 -0
  119. package/lib/typescript/components/AssetsFilterBar.d.ts.map +1 -0
  120. package/lib/typescript/components/AssetsHeader.d.ts +22 -0
  121. package/lib/typescript/components/AssetsHeader.d.ts.map +1 -0
  122. package/lib/typescript/components/AssetsIcon.d.ts +9 -0
  123. package/lib/typescript/components/AssetsIcon.d.ts.map +1 -0
  124. package/lib/typescript/components/AssetsListControls.d.ts +18 -0
  125. package/lib/typescript/components/AssetsListControls.d.ts.map +1 -0
  126. package/lib/typescript/components/AssetsModal.d.ts +24 -0
  127. package/lib/typescript/components/AssetsModal.d.ts.map +1 -0
  128. package/lib/typescript/components/BaselineBar.d.ts +13 -0
  129. package/lib/typescript/components/BaselineBar.d.ts.map +1 -0
  130. package/lib/typescript/export.d.ts +8 -0
  131. package/lib/typescript/export.d.ts.map +1 -0
  132. package/lib/typescript/format.d.ts +13 -0
  133. package/lib/typescript/format.d.ts.map +1 -0
  134. package/lib/typescript/hooks/useAssetRecords.d.ts +11 -0
  135. package/lib/typescript/hooks/useAssetRecords.d.ts.map +1 -0
  136. package/lib/typescript/index.d.ts +26 -0
  137. package/lib/typescript/index.d.ts.map +1 -0
  138. package/lib/typescript/preset.d.ts +38 -0
  139. package/lib/typescript/preset.d.ts.map +1 -0
  140. package/lib/typescript/remote.d.ts +17 -0
  141. package/lib/typescript/remote.d.ts.map +1 -0
  142. package/lib/typescript/state.d.ts +41 -0
  143. package/lib/typescript/state.d.ts.map +1 -0
  144. package/lib/typescript/store/assetStore.d.ts +51 -0
  145. package/lib/typescript/store/assetStore.d.ts.map +1 -0
  146. package/lib/typescript/store/baseline.d.ts +22 -0
  147. package/lib/typescript/store/baseline.d.ts.map +1 -0
  148. package/lib/typescript/store/insights.d.ts +7 -0
  149. package/lib/typescript/store/insights.d.ts.map +1 -0
  150. package/lib/typescript/sync/assetsSyncAdapter.d.ts +83 -0
  151. package/lib/typescript/sync/assetsSyncAdapter.d.ts.map +1 -0
  152. package/lib/typescript/types.d.ts +162 -0
  153. package/lib/typescript/types.d.ts.map +1 -0
  154. package/package.json +77 -0
  155. package/src/capture/expo.ts +45 -0
  156. package/src/capture/install.ts +73 -0
  157. package/src/capture/measure.ts +167 -0
  158. package/src/capture/metroGraph.ts +146 -0
  159. package/src/capture/registry.ts +134 -0
  160. package/src/components/AssetDetail.tsx +207 -0
  161. package/src/components/AssetRow.tsx +243 -0
  162. package/src/components/AssetsFilterBar.tsx +99 -0
  163. package/src/components/AssetsHeader.tsx +75 -0
  164. package/src/components/AssetsIcon.tsx +9 -0
  165. package/src/components/AssetsListControls.tsx +101 -0
  166. package/src/components/AssetsModal.tsx +368 -0
  167. package/src/components/BaselineBar.tsx +98 -0
  168. package/src/export.ts +108 -0
  169. package/src/format.ts +53 -0
  170. package/src/hooks/useAssetRecords.ts +26 -0
  171. package/src/index.tsx +87 -0
  172. package/src/preset.tsx +35 -0
  173. package/src/remote.ts +65 -0
  174. package/src/state.ts +84 -0
  175. package/src/store/assetStore.ts +209 -0
  176. package/src/store/baseline.ts +152 -0
  177. package/src/store/insights.ts +145 -0
  178. package/src/sync/assetsSyncAdapter.ts +151 -0
  179. 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":"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","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":[]}