@quantabit/leaderboard-sdk 1.0.0
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 +21 -0
- package/README.md +21 -0
- package/dist/index.cjs +1318 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.esm.js +1280 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/styles.css.map +1 -0
- package/package.json +69 -0
- package/types/index.d.ts +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/services/leaderboardApi.js","../src/types/index.js","../src/i18n/index.js","../src/hooks/useLeaderboard.js","../src/components/RankBadge.jsx","../src/components/Leaderboard.jsx","../src/components/TopThree.jsx","../src/context/LeaderboardContext.jsx","../src/components/RankingList.jsx","../src/components/LeaderboardComponents.jsx","../src/index.js"],"sourcesContent":["/**\n * Leaderboard SDK - API 客户端\n * 排行榜系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 排行榜 API 客户端\n */\nexport class LeaderboardApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/leaderboard', config);\n }\n\n // ============ 排行榜查询 ============\n\n /**\n * 获取排行榜列表\n */\n async getLeaderboards() {\n return this.get('/list');\n }\n\n /**\n * 获取排行榜详情\n * @param {string} leaderboardId - 排行榜 ID\n */\n async getLeaderboard(leaderboardId) {\n return this.get(`/${leaderboardId}`);\n }\n\n /**\n * 获取排行榜排名\n */\n async getRanking(leaderboardId, period, params = {}) {\n if (typeof period === 'object') {\n params = period;\n period = undefined;\n }\n const queryParams = { ...params };\n if (period) queryParams.period = period;\n return this.get(`/${leaderboardId}/rankings`, queryParams);\n }\n\n async getRankings(leaderboardId, period, params = {}) {\n return this.getRanking(leaderboardId, period, params);\n }\n\n /**\n * 获取 Top Rankers\n */\n async getTopRankers(leaderboardId, period, n = 3) {\n if (typeof period === 'number') {\n n = period;\n period = undefined;\n }\n const queryParams = { n };\n if (period) queryParams.period = period;\n return this.get(`/${leaderboardId}/top`, queryParams);\n }\n\n /**\n * 获取 Top N\n */\n async getTopN(leaderboardId, n = 10) {\n return this.getTopRankers(leaderboardId, undefined, n);\n }\n\n // ============ 我的排名 ============\n\n /**\n * 获取我的排名\n */\n async getMyRank(leaderboardId, period) {\n const queryParams = {};\n if (period) queryParams.period = period;\n return this.get(`/${leaderboardId}/my-rank`, queryParams);\n }\n\n /**\n * 获取附近排名\n */\n async getNearbyRanks(leaderboardId, period, range = 5) {\n if (typeof period === 'number') {\n range = period;\n period = undefined;\n }\n const queryParams = { range };\n if (period) queryParams.period = period;\n return this.get(`/${leaderboardId}/nearby`, queryParams);\n }\n\n /**\n * 获取附近用户\n */\n async getNearbyUsers(leaderboardId, range = 5) {\n return this.getNearbyRanks(leaderboardId, undefined, range);\n }\n\n /**\n * 获取榜单奖励\n */\n async getPrizes(leaderboardId, period) {\n const queryParams = {};\n if (period) queryParams.period = period;\n return this.get(`/${leaderboardId}/prizes`, queryParams);\n }\n\n /**\n * 获取奖励 (别名)\n */\n async getRewards(leaderboardId, period) {\n return this.getPrizes(leaderboardId, period);\n }\n\n /**\n * 获取我的历史排名\n * @param {string} leaderboardId - 排行榜 ID\n * @param {Object} params - 查询参数\n */\n async getMyRankHistory(leaderboardId, params = {}) {\n return this.get(`/${leaderboardId}/my/history`, params);\n }\n\n // ============ 分数提交 ============\n\n /**\n * 提交分数\n * @param {string} leaderboardId - 排行榜 ID\n * @param {number} score - 分数\n * @param {Object} metadata - 元数据\n */\n async submitScore(leaderboardId, score, metadata = {}) {\n return this.post(`/${leaderboardId}/score`, { score, ...metadata });\n }\n\n /**\n * 增加分数\n * @param {string} leaderboardId - 排行榜 ID\n * @param {number} increment - 增量\n */\n async incrementScore(leaderboardId, increment) {\n return this.post(`/${leaderboardId}/score/increment`, { increment });\n }\n\n // ============ 时间维度 ============\n\n /**\n * 获取日榜\n * @param {string} leaderboardId - 排行榜 ID\n * @param {string} date - 日期\n * @param {Object} params - 查询参数\n */\n async getDailyRankings(leaderboardId, date, params = {}) {\n return this.get(`/${leaderboardId}/daily`, { date, ...params });\n }\n\n /**\n * 获取周榜\n * @param {string} leaderboardId - 排行榜 ID\n * @param {string} week - 周(YYYY-WXX)\n * @param {Object} params - 查询参数\n */\n async getWeeklyRankings(leaderboardId, week, params = {}) {\n return this.get(`/${leaderboardId}/weekly`, { week, ...params });\n }\n\n /**\n * 获取月榜\n * @param {string} leaderboardId - 排行榜 ID\n * @param {string} month - 月份(YYYY-MM)\n * @param {Object} params - 查询参数\n */\n async getMonthlyRankings(leaderboardId, month, params = {}) {\n return this.get(`/${leaderboardId}/monthly`, { month, ...params });\n }\n\n // ============ 好友排名 ============\n\n /**\n * 获取好友排名\n * @param {string} leaderboardId - 排行榜 ID\n * @param {Object} params - 查询参数\n */\n async getFriendRankings(leaderboardId, params = {}) {\n return this.get(`/${leaderboardId}/friends`, params);\n }\n\n // ============ 管理员操作 ============\n\n /**\n * 创建排行榜\n * @param {Object} data - 排行榜数据\n */\n async createLeaderboard(data) {\n return this.post('/admin', data);\n }\n\n /**\n * 更新排行榜\n * @param {string} leaderboardId - 排行榜 ID\n * @param {Object} updates - 更新数据\n */\n async updateLeaderboard(leaderboardId, updates) {\n return this.put(`/admin/${leaderboardId}`, updates);\n }\n\n /**\n * 删除排行榜\n * @param {string} leaderboardId - 排行榜 ID\n */\n async deleteLeaderboard(leaderboardId) {\n return this.delete(`/admin/${leaderboardId}`);\n }\n\n /**\n * 重置排行榜\n * @param {string} leaderboardId - 排行榜 ID\n */\n async resetLeaderboard(leaderboardId) {\n return this.post(`/admin/${leaderboardId}/reset`);\n }\n}\n\n// 创建默认实例\nexport const leaderboardApi = new LeaderboardApiClient();\n\n\n\nexport default leaderboardApi;\n","/**\n * Leaderboard SDK - 类型定义\n */\n\n// 榜单类型\nexport const BoardType = {\n DAILY: 'daily',\n WEEKLY: 'weekly',\n MONTHLY: 'monthly',\n TOTAL: 'total',\n SEASON: 'season',\n};\n\n// 排行维度\nexport const RankDimension = {\n POINTS: 'points', // 积分\n LEVEL: 'level', // 等级\n WEALTH: 'wealth', // 财富\n INFLUENCE: 'influence', // 影响力\n CONTRIBUTION: 'contribution', // 贡献\n ACTIVITY: 'activity', // 活跃度\n};\n\n// 排名变化类型\nexport const RankChangeType = {\n UP: 'up',\n DOWN: 'down',\n SAME: 'same',\n NEW: 'new',\n};\n\n// 榜单配置\nexport const BoardConfig = {\n [BoardType.DAILY]: { label: 'boardDaily', icon: '📆', refresh: '每日更新' },\n [BoardType.WEEKLY]: { label: 'boardWeekly', icon: '📅', refresh: '每周更新' },\n [BoardType.MONTHLY]: { label: 'boardMonthly', icon: '🗓️', refresh: '每月更新' },\n [BoardType.TOTAL]: { label: 'boardTotal', icon: '🏆', refresh: '实时更新' },\n [BoardType.SEASON]: { label: 'boardSeason', icon: '🎖️', refresh: '赛季结算' },\n};\n\n// 维度配置\nexport const DimensionConfig = {\n [RankDimension.POINTS]: { label: 'dimPoints', icon: '⭐', color: '#faad14' },\n [RankDimension.LEVEL]: { label: 'dimLevel', icon: '📈', color: '#52c41a' },\n [RankDimension.WEALTH]: { label: 'dimWealth', icon: '💰', color: '#eb2f96' },\n [RankDimension.INFLUENCE]: { label: 'dimInfluence', icon: '👑', color: '#722ed1' },\n [RankDimension.CONTRIBUTION]: { label: 'dimContribution', icon: '🎁', color: '#1890ff' },\n [RankDimension.ACTIVITY]: { label: 'dimActivity', icon: '🔥', color: '#ff4d4f' },\n};\n\n// 排名样式\nexport const RankStyle = {\n 1: { bg: 'linear-gradient(135deg, #FFD700 0%, #FFA500 100%)', icon: '🥇' },\n 2: { bg: 'linear-gradient(135deg, #C0C0C0 0%, #A0A0A0 100%)', icon: '🥈' },\n 3: { bg: 'linear-gradient(135deg, #CD7F32 0%, #8B4513 100%)', icon: '🥉' },\n};\n\n// 格式化分数\nexport function formatScore(score, dimension) {\n if (typeof score !== 'number') return score;\n if (score >= 1000000) return (score / 1000000).toFixed(1) + 'M';\n if (score >= 1000) return (score / 1000).toFixed(1) + 'K';\n return score.toLocaleString();\n}\n\n// 获取排名变化\nexport function getRankChange(current, previous) {\n if (!previous) return { type: RankChangeType.NEW, value: 0 };\n if (current < previous) return { type: RankChangeType.UP, value: previous - current };\n if (current > previous) return { type: RankChangeType.DOWN, value: current - previous };\n return { type: RankChangeType.SAME, value: 0 };\n}\n\nexport default {\n BoardType,\n RankDimension,\n RankChangeType,\n BoardConfig,\n DimensionConfig,\n RankStyle,\n formatScore,\n getRankChange,\n};\n\nexport const LeaderboardType = {};\n\nexport const Period = {};\n","export const SUPPORTED_LANGUAGES=['en','zh','ja','ko'];export const messages={en:{'lb.title':'Leaderboard','lb.rank':'Rank','lb.score':'Score'},zh:{'lb.title':'排行榜','lb.rank':'排名','lb.score':'分数'},\nja:{'lb.title':'ランキング','lb.rank':'順位','lb.score':'スコア'},\nko:{'lb.title':'排행榜','lb.rank':'순위','lb.score':'점수'}};\nlet currentLang='en';export function setLanguage(l){if(SUPPORTED_LANGUAGES.includes(l))currentLang=l;}export function getLanguage(){return currentLang;}export function t(k){return messages[currentLang]?.[k]||messages.en?.[k]||k;}\n","/**\n * Leaderboard SDK - React Hooks\n * 排行榜相关的状态管理\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { leaderboardApi } from '../services/leaderboardApi';\n\n/**\n * 获取排行榜\n */\nexport function useLeaderboard(type = 'points', period = 'weekly', options = {}) {\n const [rankings, setRankings] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n const [pagination, setPagination] = useState({ page: 1, total: 0, hasMore: true });\n\n const { limit = 50 } = options;\n\n const fetchRankings = useCallback(async (page = 1) => {\n try {\n setLoading(true);\n const response = await leaderboardApi.getRankings(type, period, {\n page,\n limit,\n });\n \n if (page === 1) {\n setRankings(response.data || []);\n } else {\n setRankings(prev => [...prev, ...(response.data || [])]);\n }\n \n setPagination({\n page,\n total: response.total || 0,\n hasMore: response.hasMore || false,\n });\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [type, period, limit]);\n\n useEffect(() => {\n fetchRankings(1);\n }, [fetchRankings]);\n\n const loadMore = useCallback(() => {\n if (!loading && pagination.hasMore) {\n fetchRankings(pagination.page + 1);\n }\n }, [loading, pagination, fetchRankings]);\n\n return {\n rankings,\n loading,\n error,\n pagination,\n loadMore,\n refresh: () => fetchRankings(1),\n };\n}\n\n/**\n * 获取我的排名\n */\nexport function useMyRank(type = 'points', period = 'weekly') {\n const [rank, setRank] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchRank = useCallback(async () => {\n try {\n setLoading(true);\n const response = await leaderboardApi.getMyRank(type, period);\n setRank(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [type, period]);\n\n useEffect(() => {\n fetchRank();\n }, [fetchRank]);\n\n return {\n rank: rank?.rank,\n score: rank?.score,\n change: rank?.change,\n percentile: rank?.percentile,\n loading,\n error,\n refresh: fetchRank,\n };\n}\n\n/**\n * 排行榜前三名\n */\nexport function useTopThree(type = 'points', period = 'weekly') {\n const [top, setTop] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchTop = useCallback(async () => {\n try {\n setLoading(true);\n const response = await leaderboardApi.getTopRankers(type, period, 3);\n setTop(response.data || []);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [type, period]);\n\n useEffect(() => {\n fetchTop();\n }, [fetchTop]);\n\n const [first, second, third] = top;\n\n return { first, second, third, top, loading, error, refresh: fetchTop };\n}\n\n/**\n * 排行榜周围排名\n */\nexport function useNearbyRanks(type = 'points', period = 'weekly') {\n const [nearby, setNearby] = useState([]);\n const [currentUser, setCurrentUser] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchNearby = useCallback(async () => {\n try {\n setLoading(true);\n const response = await leaderboardApi.getNearbyRanks(type, period);\n setNearby(response.data || []);\n setCurrentUser(response.currentUser);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [type, period]);\n\n useEffect(() => {\n fetchNearby();\n }, [fetchNearby]);\n\n return { nearby, currentUser, loading, error, refresh: fetchNearby };\n}\n\n/**\n * 排行榜类型切换\n */\nexport function useLeaderboardTabs(defaultType = 'points', defaultPeriod = 'weekly') {\n const [type, setType] = useState(defaultType);\n const [period, setPeriod] = useState(defaultPeriod);\n\n const types = useMemo(() => [\n { value: 'points', label: '积分榜' },\n { value: 'level', label: '等级榜' },\n { value: 'activity', label: '活跃榜' },\n { value: 'contribution', label: '贡献榜' },\n ], []);\n\n const periods = useMemo(() => [\n { value: 'daily', label: '日榜' },\n { value: 'weekly', label: '周榜' },\n { value: 'monthly', label: '月榜' },\n { value: 'allTime', label: '总榜' },\n ], []);\n\n return {\n type,\n setType,\n period,\n setPeriod,\n types,\n periods,\n };\n}\n\n/**\n * 排行榜倒计时\n */\nexport function useLeaderboardCountdown(period = 'weekly') {\n const [timeLeft, setTimeLeft] = useState(calculateTimeLeft(period));\n\n useEffect(() => {\n const timer = setInterval(() => {\n setTimeLeft(calculateTimeLeft(period));\n }, 1000);\n\n return () => clearInterval(timer);\n }, [period]);\n\n return timeLeft;\n}\n\n/**\n * 排行榜奖励\n */\nexport function useLeaderboardPrizes(type = 'points', period = 'weekly') {\n const [prizes, setPrizes] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchPrizes = useCallback(async () => {\n try {\n setLoading(true);\n const response = await leaderboardApi.getPrizes(type, period);\n setPrizes(response.prizes || []);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [type, period]);\n\n useEffect(() => {\n fetchPrizes();\n }, [fetchPrizes]);\n\n return { prizes, loading, error, refresh: fetchPrizes };\n}\n\n// 工具函数\nfunction calculateTimeLeft(period) {\n const now = new Date();\n let end;\n\n switch (period) {\n case 'daily':\n end = new Date(now);\n end.setHours(24, 0, 0, 0);\n break;\n case 'weekly':\n end = new Date(now);\n end.setDate(end.getDate() + (7 - end.getDay()));\n end.setHours(0, 0, 0, 0);\n break;\n case 'monthly':\n end = new Date(now.getFullYear(), now.getMonth() + 1, 1);\n break;\n default:\n return null;\n }\n\n const diff = end - now;\n\n return {\n days: Math.floor(diff / (1000 * 60 * 60 * 24)),\n hours: Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),\n minutes: Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)),\n seconds: Math.floor((diff % (1000 * 60)) / 1000),\n };\n}\n\n","import React from'react';\nconst MEDALS={1:{emoji:'🥇',bg:'linear-gradient(135deg,#fde68a,#fbbf24)',color:'#92400e'},\n 2:{emoji:'🥈',bg:'linear-gradient(135deg,#e5e7eb,#d1d5db)',color:'#374151'},\n 3:{emoji:'🥉',bg:'linear-gradient(135deg,#fed7aa,#fdba74)',color:'#9a3412'}};\nexport function RankBadge({rank,size=28,className=''}){\n const medal=MEDALS[rank];\n if(medal)return<div className={`qlb-medal ${className}`} style={{width:size,height:size,borderRadius:'50%',background:medal.bg,\n display:'flex',alignItems:'center',justifyContent:'center',fontSize:size*0.5,flexShrink:0,boxShadow:'0 2px 6px rgba(0,0,0,0.1)'}}>{medal.emoji}</div>;\n return<div className={className} style={{width:size,height:size,borderRadius:'50%',background:'#f4f4f5',\n display:'flex',alignItems:'center',justifyContent:'center',fontSize:11,fontWeight:700,color:'#71717a',flexShrink:0}}>{rank}</div>;\n}\n","import React from'react';\nimport{RankBadge}from'./RankBadge';\nexport function Leaderboard({items=[],title='Leaderboard',valueLabel='Score',highlightUser,showAvatars=true,className=''}){\n return(<div className={`qlb-board ${className}`} style={{borderRadius:16,border:'1px solid #e4e4e7',background:'#fff',overflow:'hidden'}}>\n {title&&<div style={{padding:'16px 20px',borderBottom:'1px solid #f4f4f5',fontSize:16,fontWeight:700,color:'#18181b'}}>{title}</div>}\n <div>{items.map((item,i)=>{const rank=item.rank||i+1;const isHighlight=highlightUser&&(item.id===highlightUser||item.name===highlightUser);\n return(<div key={item.id||i} className=\"qlb-row\" style={{display:'flex',alignItems:'center',gap:12,padding:'10px 20px',\n borderBottom:i<items.length-1?'1px solid #f4f4f5':'none',background:isHighlight?'rgba(59,130,246,0.04)':'transparent',transition:'all 0.15s'}}>\n <RankBadge rank={rank}/>\n {showAvatars&&(item.avatar?<img src={item.avatar} alt=\"\" style={{width:32,height:32,borderRadius:'50%',objectFit:'cover',flexShrink:0}}/>\n :<div style={{width:32,height:32,borderRadius:'50%',background:'#eff6ff',display:'flex',alignItems:'center',justifyContent:'center',\n fontSize:14,fontWeight:700,color:'#3b82f6',flexShrink:0}}>{(item.name||'?')[0]}</div>)}\n <div style={{flex:1,overflow:'hidden'}}><div style={{fontSize:14,fontWeight:isHighlight?700:500,color:'#18181b',\n overflow:'hidden',textOverflow:'ellipsis',whiteSpace:'nowrap'}}>{item.name}</div>\n {item.subtitle&&<div style={{fontSize:11,color:'#a1a1aa'}}>{item.subtitle}</div>}</div>\n <div style={{fontSize:15,fontWeight:700,color:rank<=3?'#f59e0b':'#18181b',textAlign:'right'}}>\n {typeof item.value==='number'?item.value.toLocaleString():item.value}\n {item.change&&<div style={{fontSize:11,color:item.change>0?'#22c55e':'#ef4444',fontWeight:500}}>{item.change>0?'↑':'↓'}{Math.abs(item.change)}</div>}\n </div>\n </div>);\n })}</div>\n </div>);\n}\n","import React from'react';\nexport function TopThree({items=[],className=''}){\n const ordered=[items[1],items[0],items[2]].filter(Boolean);\n const heights=[100,140,80];const ranks=[2,1,3];\n return(<div className={`qlb-podium ${className}`} style={{display:'flex',alignItems:'flex-end',justifyContent:'center',gap:8}}>\n {ordered.map((item,i)=>{const rank=ranks[i];const h=heights[i];\n return(<div key={i} style={{display:'flex',flexDirection:'column',alignItems:'center',width:100}}>\n {item.avatar?<img src={item.avatar} alt=\"\" style={{width:rank===1?56:44,height:rank===1?56:44,borderRadius:'50%',objectFit:'cover',\n border:rank===1?'3px solid #fbbf24':rank===2?'2px solid #d1d5db':'2px solid #fdba74',marginBottom:6}}/>\n :<div style={{width:rank===1?56:44,height:rank===1?56:44,borderRadius:'50%',background:'#eff6ff',\n display:'flex',alignItems:'center',justifyContent:'center',fontSize:rank===1?20:16,fontWeight:700,color:'#3b82f6',marginBottom:6}}>{(item.name||'?')[0]}</div>}\n <div style={{fontSize:12,fontWeight:600,color:'#18181b',textAlign:'center',overflow:'hidden',textOverflow:'ellipsis',whiteSpace:'nowrap',maxWidth:100}}>{item.name}</div>\n <div style={{fontSize:14,fontWeight:800,color:'#f59e0b',marginTop:2}}>{typeof item.value==='number'?item.value.toLocaleString():item.value}</div>\n <div style={{width:'100%',height:h,marginTop:8,borderRadius:'8px 8px 0 0',\n background:rank===1?'linear-gradient(180deg,#fbbf24,#d97706)':rank===2?'linear-gradient(180deg,#d1d5db,#9ca3af)':'linear-gradient(180deg,#fdba74,#f97316)',\n display:'flex',alignItems:'center',justifyContent:'center'}}>\n <span style={{fontSize:24,fontWeight:800,color:'rgba(255,255,255,0.9)'}}>#{rank}</span></div>\n </div>);\n })}\n </div>);\n}\n","/**\n * Leaderboard SDK - Context Provider\n */\n\nimport React, { createContext, useContext, useState, useCallback, useEffect } from 'react';\nimport { leaderboardApi } from '../services/leaderboardApi';\nimport { setLanguage } from '../i18n';\nimport { BoardType, RankDimension } from '../types';\n\nconst LeaderboardContext = createContext(null);\n\nexport function LeaderboardProvider({ \n children, \n apiUrl, \n token, \n language = 'zh',\n defaultDimension = RankDimension.POINTS,\n defaultBoardType = BoardType.WEEKLY,\n onError,\n}) {\n const [ranking, setRanking] = useState([]);\n const [myRank, setMyRank] = useState(null);\n const [rewards, setRewards] = useState([]);\n const [dimension, setDimension] = useState(defaultDimension);\n const [boardType, setBoardType] = useState(defaultBoardType);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n if (apiUrl) leaderboardApi.setBaseUrl(apiUrl);\n if (token) leaderboardApi.setToken(token);\n if (language) setLanguage(language);\n }, [apiUrl, token, language]);\n\n const handleError = useCallback((err) => {\n setError(err.message);\n onError?.(err);\n }, [onError]);\n\n // 加载排行榜\n const loadRanking = useCallback(async (dim = dimension, type = boardType, params = {}) => {\n setLoading(true);\n try {\n const result = await leaderboardApi.getRanking(dim, type, params);\n const items = result.items || result.data || result || [];\n setRanking(items);\n return items;\n } catch (err) {\n handleError(err);\n } finally {\n setLoading(false);\n }\n }, [dimension, boardType, handleError]);\n\n // 加载我的排名\n const loadMyRank = useCallback(async (dim = dimension, type = boardType) => {\n try {\n const result = await leaderboardApi.getMyRank(dim, type);\n setMyRank(result);\n return result;\n } catch (err) {\n handleError(err);\n }\n }, [dimension, boardType, handleError]);\n\n // 加载奖励配置\n const loadRewards = useCallback(async (dim = dimension, type = boardType) => {\n try {\n const result = await leaderboardApi.getRewards(dim, type);\n const items = result.items || result.data || result || [];\n setRewards(items);\n return items;\n } catch (err) {\n handleError(err);\n }\n }, [dimension, boardType, handleError]);\n\n // 切换维度\n const changeDimension = useCallback((dim) => {\n setDimension(dim);\n }, []);\n\n // 切换榜单类型\n const changeBoardType = useCallback((type) => {\n setBoardType(type);\n }, []);\n\n // 刷新数据\n const refresh = useCallback(async () => {\n await Promise.all([\n loadRanking(),\n loadMyRank(),\n ]);\n }, [loadRanking, loadMyRank]);\n\n const value = {\n ranking,\n myRank,\n rewards,\n dimension,\n boardType,\n loading,\n error,\n loadRanking,\n loadMyRank,\n loadRewards,\n changeDimension,\n changeBoardType,\n refresh,\n api: leaderboardApi,\n };\n\n return (\n <LeaderboardContext.Provider value={value}>\n {children}\n </LeaderboardContext.Provider>\n );\n}\n\nexport function useLeaderboard() {\n const context = useContext(LeaderboardContext);\n if (!context) {\n throw new Error('useLeaderboard must be used within a LeaderboardProvider');\n }\n return context;\n}\n\nexport default LeaderboardContext;\n","/**\n * Leaderboard SDK - RankingList 组件\n * 排行榜列表\n */\n\nimport React, { useEffect } from 'react';\nimport { t } from '../i18n';\nimport { useLeaderboard } from '../context/LeaderboardContext';\nimport { RankStyle, DimensionConfig, formatScore, getRankChange, RankChangeType } from '../types';\n\nexport function RankingList({\n limit = 20,\n showMyRank = true,\n onUserClick,\n className = '',\n}) {\n const { ranking, myRank, dimension, loading, loadRanking, loadMyRank } = useLeaderboard();\n\n useEffect(() => {\n loadRanking(dimension, undefined, { limit });\n if (showMyRank) loadMyRank();\n }, [dimension, limit, showMyRank, loadRanking, loadMyRank]);\n\n const dimConfig = DimensionConfig[dimension] || {};\n\n const renderRankBadge = (rank) => {\n const style = RankStyle[rank];\n if (style) {\n return (\n <span className=\"rank-badge top\" style={{ background: style.bg }}>\n {style.icon}\n </span>\n );\n }\n return <span className=\"rank-badge\">{rank}</span>;\n };\n\n const renderChange = (item) => {\n const change = getRankChange(item.rank, item.previous_rank);\n if (change.type === RankChangeType.SAME) return null;\n \n return (\n <span className={`rank-change ${change.type}`}>\n {change.type === RankChangeType.UP && `↑${change.value}`}\n {change.type === RankChangeType.DOWN && `↓${change.value}`}\n {change.type === RankChangeType.NEW && t('rankNew')}\n </span>\n );\n };\n\n return (\n <div className={`ranking-list ${className}`}>\n {loading && <div className=\"ranking-loading\">{t('loading')}</div>}\n\n {/* 排行榜列表 */}\n <div className=\"ranking-items\">\n {ranking.map((item, index) => (\n <div \n key={item.user_id || index}\n className={`ranking-item ${item.rank <= 3 ? 'top-rank' : ''}`}\n onClick={() => onUserClick?.(item)}\n >\n {renderRankBadge(item.rank)}\n \n <div className=\"user-avatar\">\n {item.avatar ? (\n <img src={item.avatar} alt={item.nickname} />\n ) : (\n <span>{item.nickname?.charAt(0) || '?'}</span>\n )}\n </div>\n\n <div className=\"user-info\">\n <span className=\"user-name\">{item.nickname}</span>\n {renderChange(item)}\n </div>\n\n <div className=\"user-score\" style={{ color: dimConfig.color }}>\n <span className=\"score-icon\">{dimConfig.icon}</span>\n <span className=\"score-value\">{formatScore(item.score, dimension)}</span>\n </div>\n </div>\n ))}\n </div>\n\n {ranking.length === 0 && !loading && (\n <div className=\"ranking-empty\">{t('noData')}</div>\n )}\n\n {/* 我的排名 */}\n {showMyRank && myRank && (\n <div className=\"my-rank-bar\">\n <span className=\"my-rank-label\">{t('myRanking')}</span>\n <div className=\"my-rank-info\">\n <span className=\"my-rank-num\">\n {myRank.rank ? `#${myRank.rank}` : t('notRanked')}\n </span>\n <span className=\"my-rank-score\" style={{ color: dimConfig.color }}>\n {dimConfig.icon} {formatScore(myRank.score, dimension)}\n </span>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport default RankingList;\n","import React from 'react';\nimport { RankStyle, DimensionConfig, formatScore, getRankChange, RankChangeType } from '../types';\n\nexport function RankingItem({ item, index, dimension = 'points', onUserClick }) {\n const rank = item.rank || index + 1;\n const dimConfig = DimensionConfig[dimension] || {};\n const change = getRankChange(item.rank, item.previous_rank);\n\n return (\n <div \n className={`ranking-item ${rank <= 3 ? 'top-rank' : ''}`}\n onClick={() => onUserClick?.(item)}\n style={{ display: 'flex', alignItems: 'center', gap: 12, padding: '12px 16px', borderBottom: '1px solid #f4f4f5', cursor: onUserClick ? 'pointer' : 'default' }}\n >\n <span className=\"rank-badge\">{rank}</span>\n <div className=\"user-avatar\" style={{ width: 32, height: 32, borderRadius: '50%', background: '#eff6ff', display: 'flex', alignItems: 'center', justifyindex: 'center' }}>\n {item.avatar ? <img src={item.avatar} alt={item.nickname} style={{ width: '100%', height: '100%', borderRadius: '50%', objectFit: 'cover' }} /> : <span>{item.nickname?.charAt(0) || '?'}</span>}\n </div>\n <div className=\"user-info\" style={{ flex: 1 }}>\n <span className=\"user-name\" style={{ fontWeight: 600 }}>{item.nickname}</span>\n {change.type !== RankChangeType.SAME && (\n <span className={`rank-change ${change.type}`} style={{ marginLeft: 8, fontSize: 11, color: change.type === RankChangeType.UP ? '#22c55e' : '#ef4444' }}>\n {change.type === RankChangeType.UP ? `↑${change.value}` : `↓${change.value}`}\n </span>\n )}\n </div>\n <div className=\"user-score\" style={{ color: dimConfig.color, fontWeight: 700 }}>\n <span>{dimConfig.icon}</span> {formatScore(item.score, dimension)}\n </div>\n </div>\n );\n}\n\nexport function MyRankCard({ myRank, dimension = 'points' }) {\n const dimConfig = DimensionConfig[dimension] || {};\n if (!myRank) return null;\n\n return (\n <div className=\"my-rank-card\" style={{ padding: '16px', background: '#f8fafc', borderRadius: '12px', marginTop: '16px', display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <div>\n <div style={{ fontSize: 12, color: '#64748b' }}>My Ranking</div>\n <div style={{ fontSize: 20, fontWeight: 800, color: '#0f172a' }}>{myRank.rank ? `#${myRank.rank}` : 'Not Ranked'}</div>\n </div>\n <div style={{ textAlign: 'right' }}>\n <div style={{ fontSize: 12, color: '#64748b' }}>My Score</div>\n <div style={{ fontSize: 18, fontWeight: 700, color: dimConfig.color }}>\n {dimConfig.icon} {formatScore(myRank.score, dimension)}\n </div>\n </div>\n </div>\n );\n}\n\nexport function LeaderboardTabs({ type, setType, period, setPeriod, types = [], periods = [] }) {\n return (\n <div className=\"leaderboard-tabs\" style={{ display: 'flex', flexDirection: 'column', gap: 8, marginBottom: 16 }}>\n {types.length > 0 && (\n <div style={{ display: 'flex', gap: 8 }}>\n {types.map(t => (\n <button key={t.value} onClick={() => setType?.(t.value)} style={{ padding: '6px 12px', borderRadius: 8, border: 'none', background: type === t.value ? '#3b82f6' : '#f1f5f9', color: type === t.value ? '#fff' : '#475569', cursor: 'pointer', fontSize: 13, fontWeight: 600 }}>\n {t.label}\n </button>\n ))}\n </div>\n )}\n {periods.length > 0 && (\n <div style={{ display: 'flex', gap: 8 }}>\n {periods.map(p => (\n <button key={p.value} onClick={() => setPeriod?.(p.value)} style={{ padding: '4px 10px', borderRadius: 6, border: 'none', background: period === p.value ? '#3b82f6' : '#f8fafc', color: period === p.value ? '#fff' : '#64748b', cursor: 'pointer', fontSize: 12 }}>\n {p.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport function LeaderboardCountdown({ period = 'weekly' }) {\n return (\n <div className=\"leaderboard-countdown\" style={{ fontSize: 12, color: '#64748b', background: '#f1f5f9', padding: '6px 12px', borderRadius: 6, display: 'inline-block' }}>\n Time Remaining: {period}\n </div>\n );\n}\n\nexport function LeaderboardPanel({ title = 'Leaderboard', children }) {\n return (\n <div className=\"leaderboard-panel\" style={{ background: '#fff', borderRadius: 16, border: '1px solid #e2e8f0', padding: 20, boxShadow: '0 4px 6px -1px rgb(0 0 0 / 0.05)' }}>\n <h2 style={{ margin: '0 0 16px 0', fontSize: 18, fontWeight: 700, color: '#0f172a' }}>{title}</h2>\n {children}\n </div>\n );\n}\n","// ============ Services & Client ============\nexport { leaderboardApi, LeaderboardApiClient } from './services/leaderboardApi';\n\n// ============ Standalone API Wrappers ============\nimport { leaderboardApi } from './services/leaderboardApi';\n\nexport async function getRankings(leaderboardId, period, params) {\n return leaderboardApi.getRankings(leaderboardId, period, params);\n}\n\nexport async function getMyRank(leaderboardId, period) {\n return leaderboardApi.getMyRank(leaderboardId, period);\n}\n\nexport async function getTopRankers(leaderboardId, period, n) {\n return leaderboardApi.getTopRankers(leaderboardId, period, n);\n}\n\nexport async function getPrizes(leaderboardId, period) {\n return leaderboardApi.getPrizes(leaderboardId, period);\n}\n\n// ============ Types ============\nexport {\n BoardType,\n RankDimension,\n RankChangeType,\n BoardConfig,\n DimensionConfig,\n RankStyle,\n formatScore,\n getRankChange,\n LeaderboardType,\n Period,\n} from './types';\n\n// ============ i18n ============\nexport {\n messages,\n SUPPORTED_LANGUAGES,\n setLanguage,\n getLanguage,\n t,\n} from './i18n';\n\n// ============ Hooks ============\nexport {\n useLeaderboard,\n useMyRank,\n useTopThree,\n useNearbyRanks,\n useLeaderboardTabs,\n useLeaderboardCountdown,\n useLeaderboardPrizes,\n} from './hooks/useLeaderboard';\n\n// ============ Components ============\nexport { Leaderboard } from './components/Leaderboard';\nexport { RankBadge } from './components/RankBadge';\nexport { TopThree } from './components/TopThree';\nexport { RankingList } from './components/RankingList';\nexport {\n RankingItem,\n MyRankCard,\n LeaderboardTabs,\n LeaderboardCountdown,\n LeaderboardPanel,\n} from './components/LeaderboardComponents';\n\n// ============ Styles ============\nimport './styles/leaderboard.css';\n"],"names":["LeaderboardApiClient","BaseApiClient","constructor","config","getLeaderboards","get","getLeaderboard","leaderboardId","getRanking","period","params","undefined","queryParams","getRankings","getTopRankers","n","getTopN","getMyRank","getNearbyRanks","range","getNearbyUsers","getPrizes","getRewards","getMyRankHistory","submitScore","score","metadata","post","incrementScore","increment","getDailyRankings","date","getWeeklyRankings","week","getMonthlyRankings","month","getFriendRankings","createLeaderboard","data","updateLeaderboard","updates","put","deleteLeaderboard","delete","resetLeaderboard","leaderboardApi","BoardType","DAILY","WEEKLY","MONTHLY","TOTAL","SEASON","RankDimension","POINTS","LEVEL","WEALTH","INFLUENCE","CONTRIBUTION","ACTIVITY","RankChangeType","UP","DOWN","SAME","NEW","BoardConfig","label","icon","refresh","DimensionConfig","color","RankStyle","bg","formatScore","dimension","toFixed","toLocaleString","getRankChange","current","previous","type","value","LeaderboardType","Period","SUPPORTED_LANGUAGES","messages","en","zh","ja","ko","currentLang","setLanguage","l","includes","getLanguage","t","k","useLeaderboard","options","rankings","setRankings","useState","loading","setLoading","error","setError","pagination","setPagination","page","total","hasMore","limit","fetchRankings","useCallback","response","prev","err","message","useEffect","loadMore","useMyRank","rank","setRank","fetchRank","change","percentile","useTopThree","top","setTop","fetchTop","first","second","third","useNearbyRanks","nearby","setNearby","currentUser","setCurrentUser","fetchNearby","useLeaderboardTabs","defaultType","defaultPeriod","setType","setPeriod","types","useMemo","periods","useLeaderboardCountdown","timeLeft","setTimeLeft","calculateTimeLeft","timer","setInterval","clearInterval","useLeaderboardPrizes","prizes","setPrizes","fetchPrizes","now","Date","end","setHours","setDate","getDate","getDay","getFullYear","getMonth","diff","days","Math","floor","hours","minutes","seconds","MEDALS","emoji","RankBadge","size","className","medal","React","createElement","style","width","height","borderRadius","background","display","alignItems","justifyContent","fontSize","flexShrink","boxShadow","fontWeight","Leaderboard","items","title","valueLabel","highlightUser","showAvatars","border","overflow","padding","borderBottom","map","item","i","isHighlight","id","name","key","gap","length","transition","avatar","src","alt","objectFit","flex","textOverflow","whiteSpace","subtitle","textAlign","abs","TopThree","ordered","filter","Boolean","heights","ranks","h","flexDirection","marginBottom","maxWidth","marginTop","LeaderboardContext","createContext","context","useContext","Error","RankingList","showMyRank","onUserClick","ranking","myRank","loadRanking","loadMyRank","dimConfig","renderRankBadge","renderChange","previous_rank","index","user_id","onClick","nickname","charAt","RankingItem","cursor","justifyindex","marginLeft","MyRankCard","LeaderboardTabs","p","LeaderboardCountdown","LeaderboardPanel","children","margin"],"mappings":"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"}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["leaderboard.css"],"names":[],"mappings":"AAAA,eAAe,yCAA0C,CACzD,WAAW,6CAA6C,CAAC,oBAAoB,GAAK,mCAAoC,CAAC,GAAG,yCAA0C,CAAC","file":"styles.css","sourcesContent":[".qlb-row:hover{background:rgba(59,130,246,0.03)!important}\n.qlb-medal{animation:qlb-glow 2s ease infinite alternate}@keyframes qlb-glow{from{box-shadow:0 2px 6px rgba(0,0,0,0.1)}to{box-shadow:0 2px 12px rgba(251,191,36,0.3)}}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quantabit/leaderboard-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Leaderboard, rankings, podium, rank badges",
|
|
6
|
+
"main": "dist/index.cjs",
|
|
7
|
+
"module": "dist/index.esm.js",
|
|
8
|
+
"types": "types/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./types/index.d.ts",
|
|
12
|
+
"import": "./dist/index.esm.js",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"sideEffects": [
|
|
17
|
+
"*.css"
|
|
18
|
+
],
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"types",
|
|
22
|
+
"README.md",
|
|
23
|
+
"LICENSE"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "rollup -c",
|
|
27
|
+
"dev": "rollup -c -w",
|
|
28
|
+
"test": "jest --passWithNoTests",
|
|
29
|
+
"prepublishOnly": "npm run build"
|
|
30
|
+
},
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "https://github.com/quantabit-chain/qbit-sdk.git",
|
|
34
|
+
"directory": "packages/leaderboard-sdk"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"leaderboard",
|
|
38
|
+
"ranking",
|
|
39
|
+
"gamification",
|
|
40
|
+
"react"
|
|
41
|
+
],
|
|
42
|
+
"author": "QuantaBit Team",
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=18.0.0"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"react": ">=17.0.0",
|
|
49
|
+
"react-dom": ">=17.0.0"
|
|
50
|
+
},
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"@quantabit/sdk-config": "^1.0.6"
|
|
53
|
+
},
|
|
54
|
+
"publishConfig": {
|
|
55
|
+
"access": "public"
|
|
56
|
+
},
|
|
57
|
+
"qbit": {
|
|
58
|
+
"privacy": {
|
|
59
|
+
"level": "functional",
|
|
60
|
+
"dataCollection": "Feature-related data for personalization. Requires user consent.",
|
|
61
|
+
"gdprCompliant": true,
|
|
62
|
+
"ccpaCompliant": true
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"homepage": "https://github.com/quantabit-chain/qbit-sdk/tree/main/packages/leaderboard-sdk#readme",
|
|
66
|
+
"bugs": {
|
|
67
|
+
"url": "https://github.com/quantabit-chain/qbit-sdk/issues"
|
|
68
|
+
}
|
|
69
|
+
}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Type definitions for @quantabit/leaderboard-sdk
|
|
2
|
+
export declare const Leaderboard: any;
|
|
3
|
+
export declare const RankBadge: any;
|
|
4
|
+
export declare const SUPPORTED_LANGUAGES: any;
|
|
5
|
+
export declare const TopThree: any;
|
|
6
|
+
export declare const getLanguage: any;
|
|
7
|
+
export declare const messages: any;
|
|
8
|
+
export declare const setLanguage: any;
|
|
9
|
+
export declare const t: any;
|