PageSourceSearch

https://www.hamienet.com/assets/TrustScoreConfig-D0xv0bQl.js

js hamienet.com collected 2026-09-24 19:01:06 UTC 25,425 bytes, 416 lines download raw bytes

1import { r as reactExports, j as jsxRuntimeExports } from "./vendor-react-Bay9Y7Lb.js";
2import { a as api } from "./index-D0Bmh-UX.js";
3import { D as DevDebugInfo } from "./AdminShared-P_hor2hS.js";
4import { U as UserAvatar } from "./UserAvatar-BQN4jlY-.js";
5import { SpamConfigPanel } from "./SpamConfigTabs-Bz5cy6i6.js";
6import { a$ as Shield, cL as RefreshCw, cc as Save, a_ as CircleCheck, d7 as Image, b0 as FileText, dM as Calendar, b2 as Upload, bc as MessageSquare, bK as ThumbsUp, cf as Activity, cI as Flag, d5 as ThumbsDown, e1 as Calculator, cl as OctagonAlert, bb as User } from "./vendor-dVNaLJx_.js";
7import "./vendor-i18n-R-bMoYp_.js";
8const WeightControl = ({ label, value, onChange, min = -20, max = 20, step = 0.5, icon: Icon, color }) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-white dark:bg-zinc-800 p-4 rounded-lg border border-zinc-200 dark:border-zinc-700", children: [
9  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-center mb-2", children: [
10    /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
11      /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `p-1.5 rounded ${color}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { size: 14, className: "text-white" }) }),
12      /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm font-bold text-zinc-700 dark:text-zinc-300", children: label })
13    ] }),
14    /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: `text-sm font-mono font-bold ${value > 0 ? "text-emerald-500" : value < 0 ? "text-red-500" : "text-zinc-400"}`, children: [
15      value > 0 ? "+" : "",
16      value
17    ] })
18  ] }),
19  /* @__PURE__ */ jsxRuntimeExports.jsx(
20    "input",
21    {
22      type: "range",
23      min,
24      max,
25      step,
26      value,
27      onChange: (e) => onChange(parseFloat(e.target.value)),
28      className: "w-full h-2 bg-zinc-200 dark:bg-zinc-700 rounded-lg appearance-none cursor-pointer accent-indigo-600"
29    }
30  ),
31  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between text-[10px] text-zinc-400 mt-1", children: [
32    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: min }),
33    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "0" }),
34    /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
35      "+",
36      max
37    ] })
38  ] })
39] });
40const ScoreBreakdownItem = ({ label, value, points, icon: Icon }) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between py-2 border-b border-zinc-100 dark:border-zinc-800 last:border-0 text-sm", children: [
41  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-zinc-600 dark:text-zinc-400", children: [
42    /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { size: 14 }),
43    /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: label }),
44    value !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-xs bg-zinc-100 dark:bg-zinc-800 px-1.5 rounded text-zinc-500", children: [
45      "x",
46      Math.round(value)
47    ] })
48  ] }),
49  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: `font-mono font-bold ${points > 0 ? "text-emerald-500" : points < 0 ? "text-red-500" : "text-zinc-400"}`, children: [
50    points > 0 ? "+" : "",
51    points ? points.toFixed(1) : "0.0"
52  ] })
53] });
54const TrustScoreConfigPage = ({ activeRole }) => {
55  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J;
56  const [config, setConfig] = reactExports.useState(null);
57  const [users, setUsers] = reactExports.useState([]);
58  const [selectedUser, setSelectedUser] = reactExports.useState(null);
59  const [simResult, setSimResult] = reactExports.useState(null);
60  const [isSaving, setIsSaving] = reactExports.useState(false);
61  const [isRecalculating, setIsRecalculating] = reactExports.useState(false);
62  reactExports.useEffect(() => {
63    loadData();
64  }, []);
65  const loadData = async () => {
66    const [conf, userData] = await Promise.all([
67      api.getTrustConfig(),
68      api.getAdminUsers({ page: 1, pageSize: 100 })
69    ]);
70    setConfig(conf);
71    setUsers(userData.data);
72    if (userData.data.length > 0) setSelectedUser(userData.data[0]);
73  };
74  reactExports.useEffect(() => {
75    if (selectedUser && config) {
76      const result = api.calculateUserScoreDetails(selectedUser, config);
77      setSimResult(result);
78    }
79  }, [config, selectedUser]);
80  const handleSave = async () => {
81    if (!config) return;
82    setIsSaving(true);
83    try {
84      await api.saveTrustConfig(config);
85      alert("Configuration saved successfully.");
86    } catch (e) {
87      alert("Failed to save configuration.");
88    } finally {
89      setIsSaving(false);
90    }
91  };
92  const handleRecalculate = async () => {
93    if (!confirm("This will update trust scores for ALL users based on the current settings. Continue?")) return;
94    setIsRecalculating(true);
95    await api.recalculateAllTrustScores();
96    await loadData();
97    setIsRecalculating(false);
98  };
99  const updateWeight = (key, val) => {
100    if (!config) return;
101    setConfig({
102      ...config,
103      weights: { ...config.weights, [key]: val }
104    });
105  };
106  if (!config) return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-10 text-center text-zinc-500", children: "Loading Configuration..." });
107  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-full lg:h-full space-y-6", children: [
108    /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-center bg-white dark:bg-zinc-900 p-4 rounded-xl border border-zinc-200 dark:border-zinc-800 shadow-sm shrink-0", children: [
109      /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
110        /* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: "text-xl font-bold text-zinc-900 dark:text-white flex items-center gap-2", children: [
111          /* @__PURE__ */ jsxRuntimeExports.jsx(Shield, { className: "text-indigo-500" }),
112          " Trust Score Algorithm"
113        ] }),
114        /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-zinc-500 dark:text-zinc-400", children: "Configure how user reputation is calculated." })
115      ] }),
116      /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2", children: [
117        /* @__PURE__ */ jsxRuntimeExports.jsxs(
118          "button",
119          {
120            onClick: handleRecalculate,
121            disabled: isRecalculating,
122            className: "flex items-center gap-2 px-4 py-2 bg-zinc-100 dark:bg-zinc-800 text-zinc-700 dark:text-zinc-300 rounded-lg text-sm font-bold hover:bg-zinc-200 dark:hover:bg-zinc-700 transition-colors disabled:opacity-50",
123            children: [
124              /* @__PURE__ */ jsxRuntimeExports.jsx(RefreshCw, { size: 16, className: isRecalculating ? "animate-spin" : "" }),
125              isRecalculating ? "Calculating..." : "Recalculate All"
126            ]
127          }
128        ),
129        /* @__PURE__ */ jsxRuntimeExports.jsxs(
130          "button",
131          {
132            onClick: handleSave,
133            disabled: isSaving,
134            className: "flex items-center gap-2 px-4 py-2 bg-indigo-600 hover:bg-indigo-700 text-white rounded-lg text-sm font-bold shadow-md shadow-indigo-500/20 disabled:opacity-50 transition-colors",
135            children: [
136              isSaving ? /* @__PURE__ */ jsxRuntimeExports.jsx(RefreshCw, { size: 16, className: "animate-spin" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Save, { size: 16 }),
137              isSaving ? "Saving..." : "Save Config"
138            ]
139          }
140        )
141      ] })
142    ] }),
143    /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 flex flex-col lg:flex-row gap-6 min-h-0 lg:overflow-hidden", children: [
144      /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 lg:overflow-y-auto custom-scrollbar pr-2 space-y-6", children: [
145        /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-white dark:bg-zinc-900 p-4 rounded-xl border border-zinc-200 dark:border-zinc-800", children: [
146          /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-sm font-bold uppercase text-zinc-500 mb-4", children: "Identity & Profile" }),
147          /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4", children: [
148            /* @__PURE__ */ jsxRuntimeExports.jsx(
149              WeightControl,
150              {
151                label: "Verified Email",
152                value: config.weights.verifiedEmail,
153                onChange: (v) => updateWeight("verifiedEmail", v),
154                min: 0,
155                max: 30,
156                step: 1,
157                icon: CircleCheck,
158                color: "bg-cyan-500"
159              }
160            ),
161            /* @__PURE__ */ jsxRuntimeExports.jsx(
162              WeightControl,
163              {
164                label: "Has Avatar",
165                value: config.weights.hasAvatar,
166                onChange: (v) => updateWeight("hasAvatar", v),
167                min: 0,
168                max: 15,
169                step: 1,
170                icon: Image,
171                color: "bg-purple-500"
172              }
173            ),
174            /* @__PURE__ */ jsxRuntimeExports.jsx(
175              WeightControl,
176              {
177                label: "Has Bio",
178                value: config.weights.hasBio,
179                onChange: (v) => updateWeight("hasBio", v),
180                min: 0,
181                max: 15,
182                step: 1,
183                icon: FileText,
184                color: "bg-pink-500"
185              }
186            )
187          ] })
188        ] }),
189        /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-zinc-50 dark:bg-zinc-900/50 p-4 rounded-xl border border-zinc-200 dark:border-zinc-800", children: [
190          /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-sm font-bold uppercase text-zinc-500 mb-4", children: "Activity Signals" }),
191          /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
192            /* @__PURE__ */ jsxRuntimeExports.jsx(
193              WeightControl,
194              {
195                label: "Account Age (per day)",
196                value: config.weights.accountAgeDays,
197                onChange: (v) => updateWeight("accountAgeDays", v),
198                min: 0,
199                max: 2,
200                step: 0.01,
201                icon: Calendar,
202                color: "bg-blue-500"
203              }
204            ),
205            /* @__PURE__ */ jsxRuntimeExports.jsx(
206              WeightControl,
207              {
208                label: "MIDI Uploads",
209                value: config.weights.uploads,
210                onChange: (v) => updateWeight("uploads", v),
211                min: 0,
212                max: 50,
213                step: 1,
214                icon: Upload,
215                color: "bg-emerald-500"
216              }
217            ),
218            /* @__PURE__ */ jsxRuntimeExports.jsx(
219              WeightControl,
220              {
221                label: "Comments Made",
222                value: config.weights.comments,
223                onChange: (v) => updateWeight("comments", v),
224                min: 0,
225                max: 10,
226                step: 0.5,
227                icon: MessageSquare,
228                color: "bg-indigo-500"
229              }
230            ),
231            /* @__PURE__ */ jsxRuntimeExports.jsx(
232              WeightControl,
233              {
234                label: "Likes Received",
235                value: config.weights.likesReceived,
236                onChange: (v) => updateWeight("likesReceived", v),
237                min: 0,
238                max: 10,
239                step: 0.5,
240                icon: ThumbsUp,
241                color: "bg-pink-500"
242              }
243            ),
244            /* @__PURE__ */ jsxRuntimeExports.jsx(
245              WeightControl,
246              {
247                label: "Votes Cast",
248                value: config.weights.votesGiven,
249                onChange: (v) => updateWeight("votesGiven", v),
250                min: 0,
251                max: 5,
252                step: 0.1,
253                icon: Activity,
254                color: "bg-purple-500"
255              }
256            )
257          ] })
258        ] }),
259        /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-red-50 dark:bg-red-900/10 p-4 rounded-xl border border-red-100 dark:border-red-900/30", children: [
260          /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-sm font-bold uppercase text-red-600 dark:text-red-400 mb-4", children: "Negative Signals" }),
261          /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
262            /* @__PURE__ */ jsxRuntimeExports.jsx(
263              WeightControl,
264              {
265                label: "Reports Received",
266                value: config.weights.reportsReceived,
267                onChange: (v) => updateWeight("reportsReceived", v),
268                min: -50,
269                max: 0,
270                step: 1,
271                icon: Flag,
272                color: "bg-red-500"
273              }
274            ),
275            /* @__PURE__ */ jsxRuntimeExports.jsx(
276              WeightControl,
277              {
278                label: "Dislikes Received",
279                value: config.weights.dislikesReceived,
280                onChange: (v) => updateWeight("dislikesReceived", v),
281                min: -10,
282                max: 0,
283                step: 0.5,
284                icon: ThumbsDown,
285                color: "bg-orange-500"
286              }
287            )
288          ] })
289        ] }),
290        /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-white dark:bg-zinc-900 p-4 rounded-xl border border-zinc-200 dark:border-zinc-800", children: [
291          /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-sm font-bold uppercase text-zinc-500 mb-4", children: "System Bounds" }),
292          /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
293            /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
294              /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-xs font-bold text-zinc-600 dark:text-zinc-400 mb-1", children: "Base Score (New User)" }),
295              /* @__PURE__ */ jsxRuntimeExports.jsx(
296                "input",
297                {
298                  type: "number",
299                  value: config.baseScore,
300                  onChange: (e) => setConfig({ ...config, baseScore: parseInt(e.target.value) }),
301                  className: "w-full bg-zinc-100 dark:bg-zinc-800 border border-zinc-300 dark:border-zinc-700 rounded p-2 text-sm text-black dark:text-white"
302                }
303              )
304            ] }),
305            /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
306              /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-xs font-bold text-zinc-600 dark:text-zinc-400 mb-1", children: "Max Score Cap" }),
307              /* @__PURE__ */ jsxRuntimeExports.jsx(
308                "input",
309                {
310                  type: "number",
311                  value: config.caps.maxScore,
312                  onChange: (e) => setConfig({ ...config, caps: { ...config.caps, maxScore: parseInt(e.target.value) } }),
313                  className: "w-full bg-zinc-100 dark:bg-zinc-800 border border-zinc-300 dark:border-zinc-700 rounded p-2 text-sm text-black dark:text-white"
314                }
315              )
316            ] }),
317            /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
318              /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-xs font-bold text-zinc-600 dark:text-zinc-400 mb-1", children: "Trusted Threshold" }),
319              /* @__PURE__ */ jsxRuntimeExports.jsx(
320                "input",
321                {
322                  type: "number",
323                  value: config.thresholds.trustedUser,
324                  onChange: (e) => setConfig({ ...config, thresholds: { ...config.thresholds, trustedUser: parseInt(e.target.value) } }),
325                  className: "w-full bg-zinc-100 dark:bg-zinc-800 border border-zinc-300 dark:border-zinc-700 rounded p-2 text-sm text-black dark:text-white"
326                }
327              )
328            ] }),
329            /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
330              /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-xs font-bold text-red-500 mb-1", children: "Auto-Suspend Threshold" }),
331              /* @__PURE__ */ jsxRuntimeExports.jsx(
332                "input",
333                {
334                  type: "number",
335                  value: config.thresholds.autoSuspend,
336                  onChange: (e) => setConfig({ ...config, thresholds: { ...config.thresholds, autoSuspend: parseInt(e.target.value) } }),
337                  className: "w-full bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-900/50 rounded p-2 text-sm text-red-600 font-bold"
338                }
339              )
340            ] })
341          ] })
342        ] }),
343        /* @__PURE__ */ jsxRuntimeExports.jsx(DevDebugInfo, { table: "SystemSetting", keyName: "trust_config", value: config, isSuperAdmin: activeRole == null ? void 0 : activeRole.isSuperAdmin }),
344        /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-white dark:bg-zinc-900 p-4 rounded-xl border border-amber-200 dark:border-amber-800/50", children: [
345          /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-sm font-bold uppercase text-amber-600 dark:text-amber-400 mb-4 flex items-center gap-2", children: "⚖️ Hamie Tribunal Configuration" }),
346          /* @__PURE__ */ jsxRuntimeExports.jsx(SpamConfigPanel, {})
347        ] })
348      ] }),
349      /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "w-full lg:w-80 bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl flex flex-col shadow-lg shrink-0", children: [
350        /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-4 border-b border-zinc-200 dark:border-zinc-800 bg-zinc-50 dark:bg-zinc-950 rounded-t-xl", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "font-bold text-zinc-900 dark:text-white flex items-center gap-2", children: [
351          /* @__PURE__ */ jsxRuntimeExports.jsx(Calculator, { size: 16, className: "text-indigo-500" }),
352          " Live Simulator"
353        ] }) }),
354        /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-4 border-b border-zinc-200 dark:border-zinc-800", children: [
355          /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-xs font-bold text-zinc-500 uppercase mb-2", children: "Select Target User" }),
356          /* @__PURE__ */ jsxRuntimeExports.jsx(
357            "select",
358            {
359              className: "w-full bg-zinc-100 dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 rounded-lg p-2 text-sm outline-none text-zinc-900 dark:text-white",
360              value: (selectedUser == null ? void 0 : selectedUser.id) || "",
361              onChange: (e) => {
362                const u = users.find((user) => user.id === parseInt(e.target.value));
363                if (u) setSelectedUser(u);
364              },
365              children: users.map((u) => /* @__PURE__ */ jsxRuntimeExports.jsxs("option", { value: u.id, children: [
366                u.username,
367                " (Current: ",
368                u.trustScore,
369                ")"
370              ] }, u.id))
371            }
372          )
373        ] }),
374        selectedUser && simResult && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto p-4 flex flex-col", children: [
375          /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center mb-6", children: [
376            /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-16 h-16 rounded-full mx-auto mb-2 overflow-hidden border-2 border-white dark:border-zinc-700 shadow-sm", children: /* @__PURE__ */ jsxRuntimeExports.jsx(UserAvatar, { src: selectedUser.avatar, name: selectedUser.username, size: 64, className: "w-full h-full object-cover rounded-full" }) }),
377            /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl font-black text-zinc-900 dark:text-white", children: simResult.total }),
378            /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs font-bold uppercase text-zinc-500", children: "Projected Score" }),
379            /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 flex justify-center gap-2", children: [
380              simResult.total >= config.thresholds.trustedUser && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "px-2 py-0.5 bg-emerald-100 text-emerald-700 rounded text-[10px] font-bold border border-emerald-200 flex items-center gap-1", children: [
381                /* @__PURE__ */ jsxRuntimeExports.jsx(Shield, { size: 10, fill: "currentColor" }),
382                " Trusted"
383              ] }),
384              simResult.total <= config.thresholds.autoSuspend && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "px-2 py-0.5 bg-red-100 text-red-700 rounded text-[10px] font-bold border border-red-200 flex items-center gap-1", children: [
385                /* @__PURE__ */ jsxRuntimeExports.jsx(OctagonAlert, { size: 10 }),
386                " At Risk"
387              ] })
388            ] })
389          ] }),
390          /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-zinc-50 dark:bg-black/20 rounded-xl p-3 border border-zinc-100 dark:border-zinc-800/50 space-y-1", children: [
391            /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between text-xs font-bold text-zinc-500 border-b border-zinc-200 dark:border-zinc-800 pb-2 mb-2", children: [
392              /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Factor" }),
393              /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Points" })
394            ] }),
395            /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Base Score", value: 1, points: ((_a = simResult.breakdown) == null ? void 0 : _a.base) || 0, icon: User }),
396            ((_b = simResult.breakdown) == null ? void 0 : _b.identity) && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
397              /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Verified Email", points: ((_d = (_c = simResult.breakdown) == null ? void 0 : _c.identity) == null ? void 0 : _d.email) || 0, icon: CircleCheck }),
398              /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Profile Pic", points: ((_f = (_e = simResult.breakdown) == null ? void 0 : _e.identity) == null ? void 0 : _f.avatar) || 0, icon: Image }),
399              /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Bio", points: ((_h = (_g = simResult.breakdown) == null ? void 0 : _g.identity) == null ? void 0 : _h.bio) || 0, icon: FileText })
400            ] }),
401            /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Account Age", value: (_j = (_i = simResult.breakdown) == null ? void 0 : _i.age) == null ? void 0 : _j.value, points: ((_l = (_k = simResult.breakdown) == null ? void 0 : _k.age) == null ? void 0 : _l.points) || 0, icon: Calendar }),
402            /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Uploads", value: (_n = (_m = simResult.breakdown) == null ? void 0 : _m.uploads) == null ? void 0 : _n.value, points: ((_p = (_o = simResult.breakdown) == null ? void 0 : _o.uploads) == null ? void 0 : _p.points) || 0, icon: Upload }),
403            /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Comments", value: (_r = (_q = simResult.breakdown) == null ? void 0 : _q.comments) == null ? void 0 : _r.value, points: ((_t = (_s = simResult.breakdown) == null ? void 0 : _s.comments) == null ? void 0 : _t.points) || 0, icon: MessageSquare }),
404            /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Likes Rec.", value: (_v = (_u = simResult.breakdown) == null ? void 0 : _u.likes) == null ? void 0 : _v.value, points: ((_x = (_w = simResult.breakdown) == null ? void 0 : _w.likes) == null ? void 0 : _x.points) || 0, icon: ThumbsUp }),
405            /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Votes", value: (_z = (_y = simResult.breakdown) == null ? void 0 : _y.votes) == null ? void 0 : _z.value, points: ((_B = (_A = simResult.breakdown) == null ? void 0 : _A.votes) == null ? void 0 : _B.points) || 0, icon: Activity }),
406            /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Reports", value: (_D = (_C = simResult.breakdown) == null ? void 0 : _C.reports) == null ? void 0 : _D.value, points: ((_F = (_E = simResult.breakdown) == null ? void 0 : _E.reports) == null ? void 0 : _F.points) || 0, icon: Flag }),
407            /* @__PURE__ */ jsxRuntimeExports.jsx(ScoreBreakdownItem, { label: "Dislikes", value: (_H = (_G = simResult.breakdown) == null ? void 0 : _G.dislikes) == null ? void 0 : _H.value, points: ((_J = (_I = simResult.breakdown) == null ? void 0 : _I.dislikes) == null ? void 0 : _J.points) || 0, icon: ThumbsDown })
408          ] })
409        ] })
410      ] })
411    ] })
412  ] });
413};
414export {
415  TrustScoreConfigPage as default
416};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.