koishi-plugin-beatsaber-bot
Version:
一个 用于 BeatSaber 的 koishi Bot 插件
15 lines (14 loc) • 3.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const lucide_react_1 = require("lucide-react");
const utils_1 = require("../utils");
const getModifiers = (modifiers) => {
return modifiers ? modifiers.split(',') : [];
};
function BeatLeaderItem({ item }) {
return ((0, jsx_runtime_1.jsxs)("div", { className: "relative overflow-hidden", children: [(0, jsx_runtime_1.jsxs)("div", { className: "rounded-lg flex bg-black/[.4] space-x-2 backdrop-blur-md", children: [(0, jsx_runtime_1.jsx)("img", { loading: 'eager', src: item.leaderboard.song.coverImage, className: "rounded-md h-20 w-20", alt: "score item cover" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col space-y-1 py-0.5", children: [(0, jsx_runtime_1.jsx)("div", { className: "font-semibold text-xs text-ellipsis overflow-hidden line-clamp-1 break-all", children: item.leaderboard.song.name }), (0, jsx_runtime_1.jsxs)("div", { className: "text-xs flex items-center space-x-2 *:flex *:items-center *:space-x-1 ", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.BarChart, { className: "w-3 h-3" }) }), (0, jsx_runtime_1.jsx)("span", { children: (0, utils_1.diffConv)(item.leaderboard.difficulty.difficultyName) })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Star, { className: "w-3 h-3" }) }), (0, jsx_runtime_1.jsxs)("span", { children: [item.leaderboard.difficulty.stars?.toFixed(2) ?? "none", " "] })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsx)(lucide_react_1.Key, { className: "w-3 h-3" }) }), (0, jsx_runtime_1.jsx)("span", { children: item.leaderboard.song.id.toLowerCase().replaceAll('x', '') })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex space-x-2 text-xs", children: [(0, jsx_runtime_1.jsxs)("span", { children: [(item.baseScore / item.leaderboard.difficulty.maxScore * 100).toFixed(2), "%"] }), (0, jsx_runtime_1.jsxs)("span", { className: "text-orange-200", children: [item.pp.toFixed(1), "PP"] })] }), getModifiers(item.modifiers).length > 0 &&
((0, jsx_runtime_1.jsxs)("div", { className: "text-xs flex flex-wrap space-x-2 items-center", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Wrench, { className: "h-3 w-3" }), getModifiers(item.modifiers).map(modifier => ((0, jsx_runtime_1.jsx)("span", { children: modifier }, modifier)))] }))] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "absolute right-1 bottom-1 text-white flex text-xs space-x-1 items-center", children: [item.fullCombo &&
(0, jsx_runtime_1.jsx)("span", { className: "from-blue-300 to-red-300 bg-gradient-to-r bg-clip-text text-transparent", children: "FC" }), item.pinned && (0, jsx_runtime_1.jsx)(lucide_react_1.Pin, { className: "rotate-45 h-3 w-3 my-auto" })] })] }));
}
exports.default = BeatLeaderItem;