@quantabit/referral-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 +22 -0
- package/dist/index.cjs +815 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.esm.js +789 -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 +70 -0
- package/types/index.d.ts +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/services/referralApi.js","../src/types/index.js","../src/i18n/index.js","../src/hooks/useReferral.js","../src/components/Referral.jsx","../src/index.js"],"sourcesContent":["/**\n * Referral SDK - API 客户端\n * 邀请推荐系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 邀请推荐 API 客户端\n */\nexport class ReferralApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/referral', config);\n }\n\n // ============ 邀请码 ============\n\n /**\n * 获取我的邀请码\n */\n async getMyReferralCode() {\n return this.get('/my/code');\n }\n\n /**\n * 生成新邀请码\n * @param {Object} options - 生成选项\n */\n async generateCode(options = {}) {\n return this.post('/code/generate', options);\n }\n\n /**\n * 获取邀请链接\n * @param {string} channel - 渠道\n */\n async getInviteLink(channel = 'default') {\n return this.get('/my/link', { channel });\n }\n\n /**\n * 生成带参数的邀请链接\n * @param {Object} params - 链接参数\n */\n async generateInviteLink(params = {}) {\n return this.post('/link/generate', params);\n }\n\n // ============ 邀请绑定 ============\n\n /**\n * 绑定邀请关系\n * @param {string} referralCode - 邀请码\n */\n async bindReferral(referralCode) {\n return this.post('/bind', { code: referralCode });\n }\n\n /**\n * 验证邀请码\n * @param {string} code - 邀请码\n */\n async validateCode(code) {\n return this.get('/validate', { code });\n }\n\n /**\n * 获取我的邀请人信息\n */\n async getMyInviter() {\n return this.get('/my/inviter');\n }\n\n // ============ 邀请记录 ============\n\n /**\n * 获取我的邀请列表\n * @param {Object} params - 查询参数\n */\n async getMyInvites(params = {}) {\n return this.get('/my/invites', params);\n }\n\n /**\n * 获取邀请统计\n */\n async getInviteStats() {\n return this.get('/my/stats');\n }\n\n /**\n * 获取邀请排行榜\n * @param {Object} params - 查询参数\n */\n async getLeaderboard(params = {}) {\n return this.get('/leaderboard', params);\n }\n\n /**\n * 获取我的排名\n */\n async getMyRank() {\n return this.get('/my/rank');\n }\n\n // ============ 邀请奖励 ============\n\n /**\n * 获取邀请奖励规则\n */\n async getRewardRules() {\n return this.get('/rewards/rules');\n }\n\n /**\n * 获取我的邀请奖励\n * @param {Object} params - 查询参数\n */\n async getMyRewards(params = {}) {\n return this.get('/my/rewards', params);\n }\n\n /**\n * 获取待领取奖励\n */\n async getPendingRewards() {\n return this.get('/my/rewards/pending');\n }\n\n /**\n * 领取奖励\n * @param {string} rewardId - 奖励 ID\n */\n async claimReward(rewardId) {\n return this.post(`/rewards/${rewardId}/claim`);\n }\n\n /**\n * 一键领取所有奖励\n */\n async claimAllRewards() {\n return this.post('/rewards/claim-all');\n }\n\n // ============ 邀请活动 ============\n\n /**\n * 获取进行中的邀请活动\n */\n async getActiveEvents() {\n return this.get('/events/active');\n }\n\n /**\n * 获取活动详情\n * @param {string} eventId - 活动 ID\n */\n async getEvent(eventId) {\n return this.get(`/events/${eventId}`);\n }\n\n /**\n * 参与邀请活动\n * @param {string} eventId - 活动 ID\n */\n async joinEvent(eventId) {\n return this.post(`/events/${eventId}/join`);\n }\n\n /**\n * 获取活动进度\n * @param {string} eventId - 活动 ID\n */\n async getEventProgress(eventId) {\n return this.get(`/events/${eventId}/my/progress`);\n }\n\n // ============ 兼容方法 ============\n\n async getReferralInfo() {\n try {\n const codeData = await this.getMyReferralCode();\n const statsData = await this.getInviteStats();\n return { ...codeData, ...statsData };\n } catch {\n return { code: '' };\n }\n }\n\n async getMyReferrals(params = {}) {\n return this.getMyInvites(params);\n }\n\n async getReferralStats() {\n return this.getInviteStats();\n }\n\n async getRewardConfig() {\n return this.getRewardRules();\n }\n}\n\n// 创建默认实例\nexport const referralApi = new ReferralApiClient();\n\n\n\nexport default referralApi;\n","/**\n * Referral SDK - 类型定义\n */\n\n// 邀请状态\nexport const InviteStatus = {\n PENDING: 'pending', // 待验证\n VALID: 'valid', // 已生效\n INVALID: 'invalid', // 已失效\n REWARDED: 'rewarded', // 已发放奖励\n};\n\n// 奖励类型\nexport const RewardType = {\n POINTS: 'points', // 积分\n TOKEN: 'token', // 代币\n CASH: 'cash', // 现金\n COUPON: 'coupon', // 优惠券\n VIP: 'vip', // VIP时长\n};\n\n// 邀请层级\nexport const InviteLevel = {\n LEVEL_1: 1, // 直邀\n LEVEL_2: 2, // 二级\n LEVEL_3: 3, // 三级\n};\n\n/**\n * 创建默认邀请配置\n */\nexport function createDefaultReferralConfig(overrides = {}) {\n return {\n max_levels: 2, // 最大层级\n level_rewards: [ // 各层级奖励\n { level: 1, reward_type: RewardType.POINTS, amount: 100 },\n { level: 2, reward_type: RewardType.POINTS, amount: 50 },\n ],\n inviter_reward: true, // 邀请人是否有奖励\n invitee_reward: true, // 被邀请人是否有奖励\n invitee_reward_amount: 50, // 被邀请人奖励金额\n valid_condition: 'register', // 生效条件: register, verify, purchase\n max_invites_per_day: null, // 每日最大邀请数\n total_invite_limit: null, // 总邀请数限制\n ...overrides,\n };\n}\n\n/**\n * 创建默认邀请记录\n */\nexport function createDefaultInviteRecord(overrides = {}) {\n return {\n id: null,\n inviter_did: null,\n invitee_did: null,\n invitee_name: null,\n invitee_avatar: null,\n level: 1,\n status: InviteStatus.PENDING,\n reward_type: RewardType.POINTS,\n reward_amount: 0,\n reward_claimed: false,\n created_at: null,\n valid_at: null,\n ...overrides,\n };\n}\n\n/**\n * 创建默认邀请统计\n */\nexport function createDefaultInviteStats(overrides = {}) {\n return {\n total_invites: 0,\n valid_invites: 0,\n level_1_invites: 0,\n level_2_invites: 0,\n today_invites: 0,\n pending_rewards: 0,\n claimed_rewards: 0,\n total_rewards: 0,\n rank: null,\n ...overrides,\n };\n}\n\n/**\n * 生成邀请链接\n */\nexport function generateInviteLink(baseUrl, code) {\n const url = new URL(baseUrl);\n url.searchParams.set('ref', code);\n return url.toString();\n}\n\n/**\n * 从 URL 提取邀请码\n */\nexport function extractInviteCode(url) {\n try {\n const urlObj = new URL(url);\n return urlObj.searchParams.get('ref') || null;\n } catch {\n return null;\n }\n}\n\nexport const ReferralStatus = {};\n","export const SUPPORTED_LANGUAGES=['en','zh','ja','ko'];export const messages={en:{'ref.invite':'Invite Friends','ref.rewards':'Rewards','ref.copied':'Copied!'},zh:{'ref.invite':'邀请好友','ref.rewards':'奖励','ref.copied':'已复制!'},\nja:{'ref.invite':'友達を招待','ref.rewards':'報酬','ref.copied':'コピーしました!'},\nko:{'ref.invite':'친구 초대','ref.rewards':'보상','ref.copied':'복사되었습니다!'}};\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 * Referral SDK - React Hooks\n * 邀请系统相关的状态管理\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { referralApi } from '../services/referralApi';\n\n/**\n * 获取邀请信息\n */\nexport function useReferralInfo() {\n const [info, setInfo] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchInfo = useCallback(async () => {\n try {\n setLoading(true);\n const response = await referralApi.getReferralInfo();\n setInfo(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n fetchInfo();\n }, [fetchInfo]);\n\n const referralLink = useMemo(() => {\n if (!info?.code) return '';\n return `${window.location.origin}/invite/${info.code}`;\n }, [info]);\n\n return { info, referralLink, loading, error, refresh: fetchInfo };\n}\n\n/**\n * 我的邀请列表\n */\nexport function useMyReferrals(options = {}) {\n const [referrals, setReferrals] = 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 { status, limit = 20 } = options;\n\n const fetchReferrals = useCallback(async (page = 1) => {\n try {\n setLoading(true);\n const response = await referralApi.getMyReferrals({ status, page, limit });\n \n if (page === 1) {\n setReferrals(response.data || []);\n } else {\n setReferrals(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 }, [status, limit]);\n\n useEffect(() => {\n fetchReferrals(1);\n }, [fetchReferrals]);\n\n const loadMore = useCallback(() => {\n if (!loading && pagination.hasMore) {\n fetchReferrals(pagination.page + 1);\n }\n }, [loading, pagination, fetchReferrals]);\n\n // 按状态分组\n const grouped = useMemo(() => {\n const groups = { pending: [], confirmed: [], rewarded: [] };\n referrals.forEach(r => {\n if (groups[r.status]) groups[r.status].push(r);\n });\n return groups;\n }, [referrals]);\n\n return { referrals, grouped, loading, error, pagination, loadMore, refresh: () => fetchReferrals(1) };\n}\n\n/**\n * 邀请统计\n */\nexport function useReferralStats() {\n const [stats, setStats] = useState(null);\n const [loading, setLoading] = useState(true);\n\n const fetchStats = useCallback(async () => {\n try {\n setLoading(true);\n const response = await referralApi.getReferralStats();\n setStats(response);\n } catch (err) {\n console.error('Get referral stats error:', err);\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n fetchStats();\n }, [fetchStats]);\n\n return { stats, loading, refresh: fetchStats };\n}\n\n/**\n * 邀请排行榜\n */\nexport function useReferralLeaderboard(period = 'all') {\n const [leaderboard, setLeaderboard] = useState([]);\n const [myRank, setMyRank] = useState(null);\n const [loading, setLoading] = useState(true);\n\n const fetchLeaderboard = useCallback(async () => {\n try {\n setLoading(true);\n const response = await referralApi.getLeaderboard({ period });\n setLeaderboard(response.data || []);\n setMyRank(response.myRank || null);\n } catch (err) {\n console.error('Get leaderboard error:', err);\n } finally {\n setLoading(false);\n }\n }, [period]);\n\n useEffect(() => {\n fetchLeaderboard();\n }, [fetchLeaderboard]);\n\n return { leaderboard, myRank, loading, refresh: fetchLeaderboard };\n}\n\n/**\n * 复制功能\n */\nexport function useCopyToClipboard() {\n const [copied, setCopied] = useState(false);\n\n const copy = useCallback(async (text) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n return true;\n } catch (err) {\n console.error('Copy error:', err);\n // 降级方案\n const textarea = document.createElement('textarea');\n textarea.value = text;\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n return true;\n }\n }, []);\n\n return { copy, copied };\n}\n\n/**\n * 分享功能\n */\nexport function useShare() {\n const [sharing, setSharing] = useState(false);\n\n const share = useCallback(async (data) => {\n setSharing(true);\n \n try {\n if (navigator.share) {\n await navigator.share({\n title: data.title,\n text: data.text,\n url: data.url,\n });\n return true;\n }\n return false;\n } catch (err) {\n if (err.name !== 'AbortError') {\n console.error('Share error:', err);\n }\n return false;\n } finally {\n setSharing(false);\n }\n }, []);\n\n const canShare = typeof navigator !== 'undefined' && !!navigator.share;\n\n return { share, sharing, canShare };\n}\n\n/**\n * 邀请奖励配置\n */\nexport function useReferralRewards() {\n const [rewards, setRewards] = useState(null);\n const [loading, setLoading] = useState(true);\n\n const fetchRewards = useCallback(async () => {\n try {\n setLoading(true);\n const response = await referralApi.getRewardConfig();\n setRewards(response);\n } catch (err) {\n console.error('Get reward config error:', err);\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n fetchRewards();\n }, [fetchRewards]);\n\n return { rewards, loading, refresh: fetchRewards };\n}\n\n","/**\n * Referral SDK - React 组件\n * 邀请系统可视化组件\n */\n\nimport React, { useState, useCallback } from 'react';\nimport {\n useReferralInfo,\n useMyReferrals,\n useReferralStats,\n useReferralLeaderboard,\n useCopyToClipboard,\n useShare,\n useReferralRewards,\n} from '../hooks/useReferral';\nimport { t } from '../i18n';\nimport './Referral.css';\n\n/**\n * 邀请链接卡片\n */\nexport function ReferralLinkCard() {\n const { info, referralLink, loading } = useReferralInfo();\n const { copy, copied } = useCopyToClipboard();\n const { share, canShare } = useShare();\n\n const handleShare = useCallback(() => {\n share({\n title: t('inviteFriends'),\n text: t('earnRewards'),\n url: referralLink,\n });\n }, [share, referralLink]);\n\n if (loading) {\n return (\n <div className=\"eco-referral-card eco-referral-loading\">\n <div className=\"eco-referral-spinner\" />\n </div>\n );\n }\n\n return (\n <div className=\"eco-referral-card\">\n <h3>{t('inviteFriends')}</h3>\n \n <div className=\"eco-referral-code\">\n <span className=\"eco-referral-code-label\">{t('referralCode')}</span>\n <div className=\"eco-referral-code-value\">\n <span>{info?.code}</span>\n <button onClick={() => copy(info?.code)}>\n {copied ? t('copied') : t('copy')}\n </button>\n </div>\n </div>\n \n <div className=\"eco-referral-link\">\n <span className=\"eco-referral-link-label\">{t('referralLink')}</span>\n <div className=\"eco-referral-link-value\">\n <input type=\"text\" value={referralLink} readOnly />\n <button onClick={() => copy(referralLink)}>\n {copied ? t('copied') : t('copyLink')}\n </button>\n </div>\n </div>\n \n {canShare && (\n <button className=\"eco-referral-share-btn\" onClick={handleShare}>\n {t('share')}\n </button>\n )}\n </div>\n );\n}\n\n/**\n * 邀请统计卡片\n */\nexport function ReferralStatsCard() {\n const { stats, loading } = useReferralStats();\n\n if (loading) {\n return (\n <div className=\"eco-referral-stats eco-referral-loading\">\n <div className=\"eco-referral-spinner\" />\n </div>\n );\n }\n\n return (\n <div className=\"eco-referral-stats\">\n <div className=\"eco-referral-stat\">\n <span className=\"eco-referral-stat-value\">{stats?.totalInvited || 0}</span>\n <span className=\"eco-referral-stat-label\">{t('totalInvited')}</span>\n </div>\n <div className=\"eco-referral-stat\">\n <span className=\"eco-referral-stat-value\">{stats?.pendingRewards || 0}</span>\n <span className=\"eco-referral-stat-label\">{t('pendingRewards')}</span>\n </div>\n <div className=\"eco-referral-stat\">\n <span className=\"eco-referral-stat-value\">{stats?.earnedRewards || 0}</span>\n <span className=\"eco-referral-stat-label\">{t('earnedRewards')}</span>\n </div>\n </div>\n );\n}\n\n/**\n * 邀请记录列表\n */\nexport function ReferralList() {\n const { referrals, loading, pagination, loadMore } = useMyReferrals();\n\n if (loading && referrals.length === 0) {\n return (\n <div className=\"eco-referral-list eco-referral-loading\">\n <div className=\"eco-referral-spinner\" />\n </div>\n );\n }\n\n if (referrals.length === 0) {\n return (\n <div className=\"eco-referral-list eco-referral-empty\">\n <span className=\"eco-referral-empty-icon\">👥</span>\n <span>{t('noReferrals')}</span>\n </div>\n );\n }\n\n return (\n <div className=\"eco-referral-list\">\n <h4>{t('myReferrals')}</h4>\n \n {referrals.map((item) => (\n <div key={item.id} className=\"eco-referral-item\">\n <img\n className=\"eco-referral-avatar\"\n src={item.user?.avatar || '/default-avatar.png'}\n alt={item.user?.name}\n />\n <div className=\"eco-referral-item-info\">\n <span className=\"eco-referral-item-name\">{item.user?.name}</span>\n <span className=\"eco-referral-item-time\">{new Date(item.createdAt).toLocaleDateString()}</span>\n </div>\n <span className={`eco-referral-status eco-referral-status-${item.status}`}>\n {t(item.status)}\n </span>\n </div>\n ))}\n \n {pagination.hasMore && (\n <button className=\"eco-referral-load-more\" onClick={loadMore} disabled={loading}>\n {loading ? '...' : t('loading')}\n </button>\n )}\n </div>\n );\n}\n\n/**\n * 邀请排行榜\n */\nexport function ReferralLeaderboard() {\n const [period, setPeriod] = useState('all');\n const { leaderboard, myRank, loading } = useReferralLeaderboard(period);\n\n return (\n <div className=\"eco-referral-leaderboard\">\n <div className=\"eco-referral-leaderboard-header\">\n <h4>{t('leaderboard')}</h4>\n <select value={period} onChange={(e) => setPeriod(e.target.value)}>\n <option value=\"daily\">今日</option>\n <option value=\"weekly\">本周</option>\n <option value=\"monthly\">本月</option>\n <option value=\"all\">全部</option>\n </select>\n </div>\n\n {loading ? (\n <div className=\"eco-referral-loading\">\n <div className=\"eco-referral-spinner\" />\n </div>\n ) : (\n <>\n <div className=\"eco-referral-leaderboard-list\">\n {leaderboard.map((item, qbit) => (\n <div key={item.userId} className=\"eco-referral-rank-item\">\n <span className={`eco-referral-rank eco-referral-rank-${qbit + 1}`}>\n {qbit + 1}\n </span>\n <img\n className=\"eco-referral-rank-avatar\"\n src={item.avatar || '/default-avatar.png'}\n alt={item.name}\n />\n <span className=\"eco-referral-rank-name\">{item.name}</span>\n <span className=\"eco-referral-rank-count\">{item.count}</span>\n </div>\n ))}\n </div>\n\n {myRank && (\n <div className=\"eco-referral-my-rank\">\n <span>{t('rank')}: #{myRank.rank}</span>\n <span>{t('inviteCount')}: {myRank.count}</span>\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n\n/**\n * 邀请规则\n */\nexport function ReferralRules() {\n const { rewards } = useReferralRewards();\n\n return (\n <div className=\"eco-referral-rules\">\n <h4>{t('howItWorks')}</h4>\n \n <div className=\"eco-referral-steps\">\n <div className=\"eco-referral-step\">\n <span className=\"eco-referral-step-num\">1</span>\n <span className=\"eco-referral-step-text\">{t('step1')}</span>\n </div>\n <div className=\"eco-referral-step\">\n <span className=\"eco-referral-step-num\">2</span>\n <span className=\"eco-referral-step-text\">{t('step2')}</span>\n </div>\n <div className=\"eco-referral-step\">\n <span className=\"eco-referral-step-num\">3</span>\n <span className=\"eco-referral-step-text\">{t('step3')}</span>\n </div>\n </div>\n\n {rewards && (\n <div className=\"eco-referral-rewards\">\n <div className=\"eco-referral-reward\">\n <span className=\"eco-referral-reward-label\">{t('inviteReward')}</span>\n <span className=\"eco-referral-reward-value\">{rewards.inviterReward} 积分</span>\n </div>\n <div className=\"eco-referral-reward\">\n <span className=\"eco-referral-reward-label\">{t('inviteeReward')}</span>\n <span className=\"eco-referral-reward-value\">{rewards.inviteeReward} 积分</span>\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * 邀请页面\n */\nexport function ReferralPage() {\n return (\n <div className=\"eco-referral-page\">\n <ReferralLinkCard />\n <ReferralStatsCard />\n <ReferralRules />\n <ReferralList />\n <ReferralLeaderboard />\n </div>\n );\n}\n\n","/**\n * @quantabit/referral-sdk\n * Referral System SDK - Full Version\n */\n\n// API Client\nexport { referralApi, ReferralApiClient } from './services/referralApi';\n\n// Types\nexport { ReferralStatus } from './types';\n\n// i18n\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n';\n\n// React Hooks\nexport {\n useReferralInfo,\n useMyReferrals,\n useReferralStats,\n useReferralLeaderboard,\n useCopyToClipboard,\n useShare,\n useReferralRewards,\n} from './hooks/useReferral';\n\n// React Components\nexport {\n ReferralLinkCard,\n ReferralStatsCard,\n ReferralList,\n ReferralLeaderboard,\n ReferralRules,\n ReferralPage,\n} from './components/Referral';\n\n// Shortcut Methods\nimport { referralApi } from './services/referralApi';\n\nexport const getReferralInfo = (...args) => referralApi.getReferralInfo(...args);\nexport const getMyReferrals = (...args) => referralApi.getMyReferrals(...args);\nexport const getReferralStats = (...args) => referralApi.getReferralStats(...args);\nexport const getLeaderboard = (...args) => referralApi.getLeaderboard(...args);\n\nimport './styles/referral.css';\n"],"names":["ReferralApiClient","BaseApiClient","constructor","config","getMyReferralCode","get","generateCode","options","post","getInviteLink","channel","generateInviteLink","params","bindReferral","referralCode","code","validateCode","getMyInviter","getMyInvites","getInviteStats","getLeaderboard","getMyRank","getRewardRules","getMyRewards","getPendingRewards","claimReward","rewardId","claimAllRewards","getActiveEvents","getEvent","eventId","joinEvent","getEventProgress","getReferralInfo","codeData","statsData","getMyReferrals","getReferralStats","getRewardConfig","referralApi","ReferralStatus","SUPPORTED_LANGUAGES","messages","en","zh","ja","ko","currentLang","setLanguage","l","includes","getLanguage","t","k","useReferralInfo","info","setInfo","useState","loading","setLoading","error","setError","fetchInfo","useCallback","response","err","message","useEffect","referralLink","useMemo","window","location","origin","refresh","useMyReferrals","referrals","setReferrals","pagination","setPagination","page","total","hasMore","status","limit","fetchReferrals","data","prev","loadMore","grouped","groups","pending","confirmed","rewarded","forEach","r","push","useReferralStats","stats","setStats","fetchStats","console","useReferralLeaderboard","period","leaderboard","setLeaderboard","myRank","setMyRank","fetchLeaderboard","useCopyToClipboard","copied","setCopied","copy","text","navigator","clipboard","writeText","setTimeout","textarea","document","createElement","value","body","appendChild","select","execCommand","removeChild","useShare","sharing","setSharing","share","title","url","name","canShare","useReferralRewards","rewards","setRewards","fetchRewards","ReferralLinkCard","handleShare","React","className","onClick","type","readOnly","ReferralStatsCard","totalInvited","pendingRewards","earnedRewards","ReferralList","length","map","item","key","id","src","user","avatar","alt","Date","createdAt","toLocaleDateString","disabled","ReferralLeaderboard","setPeriod","onChange","e","target","Fragment","qbit","userId","count","rank","ReferralRules","inviterReward","inviteeReward","ReferralPage","args"],"mappings":"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"}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
.eco-referral-root,:root{--eco-referral-primary:#6366f1;--eco-referral-success:#10b981;--eco-referral-bg:#fff;--eco-referral-bg-secondary:#f8fafc;--eco-referral-border:#e2e8f0;--eco-referral-text:#1e293b;--eco-referral-text-secondary:#64748b;--eco-referral-radius:12px;--eco-referral-transition:all 0.2s ease}@media (prefers-color-scheme:dark){.eco-referral-root,:root{--eco-referral-bg:#1e1e2e;--eco-referral-bg-secondary:#2a2a3e;--eco-referral-border:#3a3a4e;--eco-referral-text:#f1f5f9;--eco-referral-text-secondary:#94a3b8}}.eco-referral-page{display:flex;flex-direction:column;gap:20px}.eco-referral-card{background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:var(--eco-referral-radius);color:#fff;padding:24px}.eco-referral-card h3{font-size:20px;margin:0 0 20px}.eco-referral-code,.eco-referral-link{margin-bottom:16px}.eco-referral-code-label,.eco-referral-link-label{display:block;font-size:12px;margin-bottom:8px;opacity:.8}.eco-referral-code-value,.eco-referral-link-value{display:flex;gap:8px}.eco-referral-code-value span{background:hsla(0,0%,100%,.2);border-radius:8px;flex:1;font-size:18px;font-weight:600;letter-spacing:2px;padding:12px 16px}.eco-referral-link-value input{background:hsla(0,0%,100%,.2);border:none;border-radius:8px;color:#fff;flex:1;font-size:13px;padding:12px 16px}.eco-referral-code-value button,.eco-referral-link-value button{background:transparent;border:2px solid #fff;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:12px 20px;transition:var(--eco-referral-transition)}.eco-referral-code-value button:hover,.eco-referral-link-value button:hover,.eco-referral-share-btn{background:#fff;color:var(--eco-referral-primary)}.eco-referral-share-btn{border:none;border-radius:8px;cursor:pointer;font-size:16px;font-weight:600;margin-top:8px;padding:14px;width:100%}.eco-referral-stats{display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}.eco-referral-stat{background:var(--eco-referral-bg);border:1px solid var(--eco-referral-border);border-radius:var(--eco-referral-radius);padding:20px;text-align:center}.eco-referral-stat-value{color:var(--eco-referral-primary);display:block;font-size:28px;font-weight:700;margin-bottom:4px}.eco-referral-stat-label{color:var(--eco-referral-text-secondary);font-size:13px}.eco-referral-list{background:var(--eco-referral-bg);border:1px solid var(--eco-referral-border);border-radius:var(--eco-referral-radius);padding:20px}.eco-referral-list h4{color:var(--eco-referral-text);font-size:16px;margin:0 0 16px}.eco-referral-item{align-items:center;border-bottom:1px solid var(--eco-referral-border);display:flex;gap:12px;padding:12px 0}.eco-referral-item:last-of-type{border-bottom:none}.eco-referral-avatar{border-radius:50%;height:40px;object-fit:cover;width:40px}.eco-referral-item-info{display:flex;flex:1;flex-direction:column;gap:2px}.eco-referral-item-name{color:var(--eco-referral-text);font-size:14px}.eco-referral-item-time{color:var(--eco-referral-text-secondary);font-size:12px}.eco-referral-status{border-radius:12px;font-size:12px;padding:4px 10px}.eco-referral-status-pending{background:#fef3c7;color:#d97706}.eco-referral-status-confirmed{background:#dbeafe;color:#2563eb}.eco-referral-status-rewarded{background:#d1fae5;color:#059669}.eco-referral-leaderboard{background:var(--eco-referral-bg);border:1px solid var(--eco-referral-border);border-radius:var(--eco-referral-radius);padding:20px}.eco-referral-leaderboard-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.eco-referral-leaderboard-header h4{color:var(--eco-referral-text);font-size:16px;margin:0}.eco-referral-leaderboard-header select{background:var(--eco-referral-bg);border:1px solid var(--eco-referral-border);border-radius:6px;color:var(--eco-referral-text);font-size:13px;padding:6px 12px}.eco-referral-rank-item{align-items:center;border-bottom:1px solid var(--eco-referral-border);display:flex;gap:12px;padding:12px 0}.eco-referral-rank{align-items:center;background:var(--eco-referral-bg-secondary);border-radius:50%;display:flex;font-size:12px;font-weight:600;height:28px;justify-content:center;width:28px}.eco-referral-rank-1{background:gold;color:#1e1e1e}.eco-referral-rank-2{background:silver;color:#1e1e1e}.eco-referral-rank-3{background:#cd7f32;color:#fff}.eco-referral-rank-avatar{border-radius:50%;height:36px;object-fit:cover;width:36px}.eco-referral-rank-name{color:var(--eco-referral-text);flex:1;font-size:14px}.eco-referral-rank-count{color:var(--eco-referral-primary);font-size:14px;font-weight:600}.eco-referral-my-rank{background:rgba(99,102,241,.1);border-radius:8px;color:var(--eco-referral-primary);display:flex;font-size:13px;justify-content:space-between;margin-top:16px;padding:16px}.eco-referral-rules{background:var(--eco-referral-bg);border:1px solid var(--eco-referral-border);border-radius:var(--eco-referral-radius);padding:20px}.eco-referral-rules h4{color:var(--eco-referral-text);font-size:16px;margin:0 0 20px}.eco-referral-steps{display:flex;flex-direction:column;gap:16px;margin-bottom:20px}.eco-referral-step{align-items:center;display:flex;gap:16px}.eco-referral-step-num{align-items:center;background:var(--eco-referral-primary);border-radius:50%;color:#fff;display:flex;font-size:14px;font-weight:600;height:32px;justify-content:center;width:32px}.eco-referral-step-text{color:var(--eco-referral-text);font-size:14px}.eco-referral-rewards{border-top:1px solid var(--eco-referral-border);display:flex;gap:16px;padding-top:16px}.eco-referral-reward{background:var(--eco-referral-bg-secondary);border-radius:8px;flex:1;padding:16px;text-align:center}.eco-referral-reward-label{color:var(--eco-referral-text-secondary);display:block;font-size:12px;margin-bottom:6px}.eco-referral-reward-value{color:var(--eco-referral-success);font-size:18px;font-weight:600}.eco-referral-load-more{background:transparent;border:1px solid var(--eco-referral-border);border-radius:8px;color:var(--eco-referral-text-secondary);cursor:pointer;display:block;font-size:14px;margin-top:16px;padding:12px;width:100%}.eco-referral-loading{align-items:center;display:flex;justify-content:center;padding:40px}.eco-referral-spinner{animation:eco-referral-spin 1s linear infinite;border:3px solid var(--eco-referral-border);border-radius:50%;border-top-color:var(--eco-referral-primary);height:28px;width:28px}@keyframes eco-referral-spin{to{transform:rotate(1turn)}}.eco-referral-empty{align-items:center;color:var(--eco-referral-text-secondary);display:flex;flex-direction:column;padding:40px}.eco-referral-empty-icon{font-size:48px;margin-bottom:12px;opacity:.5}@media (max-width:640px){.eco-referral-stats{grid-template-columns:1fr}.eco-referral-rewards{flex-direction:column}}.qrf-share-btn:hover{border-color:#3b82f6!important;box-shadow:0 4px 12px rgba(0,0,0,.08)!important;transform:translateY(-2px)}
|
|
2
|
+
/*# sourceMappingURL=styles.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Referral.css","referral.css"],"names":[],"mappings":"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","file":"styles.css","sourcesContent":["/**\n * Referral SDK - 样式\n */\n\n/* CSS 变量 */\n.eco-referral-root,\n:root {\n --eco-referral-primary: #6366f1;\n --eco-referral-success: #10b981;\n --eco-referral-bg: #ffffff;\n --eco-referral-bg-secondary: #f8fafc;\n --eco-referral-border: #e2e8f0;\n --eco-referral-text: #1e293b;\n --eco-referral-text-secondary: #64748b;\n --eco-referral-radius: 12px;\n --eco-referral-transition: all 0.2s ease;\n}\n\n@media (prefers-color-scheme: dark) {\n .eco-referral-root,\n :root {\n --eco-referral-bg: #1e1e2e;\n --eco-referral-bg-secondary: #2a2a3e;\n --eco-referral-border: #3a3a4e;\n --eco-referral-text: #f1f5f9;\n --eco-referral-text-secondary: #94a3b8;\n }\n}\n\n/* 页面 */\n.eco-referral-page {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n/* 链接卡片 */\n.eco-referral-card {\n background: linear-gradient(135deg, #6366f1, #8b5cf6);\n border-radius: var(--eco-referral-radius);\n padding: 24px;\n color: white;\n}\n\n.eco-referral-card h3 {\n margin: 0 0 20px;\n font-size: 20px;\n}\n\n.eco-referral-code,\n.eco-referral-link {\n margin-bottom: 16px;\n}\n\n.eco-referral-code-label,\n.eco-referral-link-label {\n display: block;\n font-size: 12px;\n opacity: 0.8;\n margin-bottom: 8px;\n}\n\n.eco-referral-code-value,\n.eco-referral-link-value {\n display: flex;\n gap: 8px;\n}\n\n.eco-referral-code-value span {\n flex: 1;\n padding: 12px 16px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 8px;\n font-size: 18px;\n font-weight: 600;\n letter-spacing: 2px;\n}\n\n.eco-referral-link-value input {\n flex: 1;\n padding: 12px 16px;\n border: none;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.2);\n color: white;\n font-size: 13px;\n}\n\n.eco-referral-code-value button,\n.eco-referral-link-value button {\n padding: 12px 20px;\n border: 2px solid white;\n border-radius: 8px;\n background: transparent;\n color: white;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: var(--eco-referral-transition);\n}\n\n.eco-referral-code-value button:hover,\n.eco-referral-link-value button:hover {\n background: white;\n color: var(--eco-referral-primary);\n}\n\n.eco-referral-share-btn {\n width: 100%;\n padding: 14px;\n margin-top: 8px;\n border: none;\n border-radius: 8px;\n background: white;\n color: var(--eco-referral-primary);\n font-size: 16px;\n font-weight: 600;\n cursor: pointer;\n}\n\n/* 统计 */\n.eco-referral-stats {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n}\n\n.eco-referral-stat {\n background: var(--eco-referral-bg);\n border: 1px solid var(--eco-referral-border);\n border-radius: var(--eco-referral-radius);\n padding: 20px;\n text-align: center;\n}\n\n.eco-referral-stat-value {\n display: block;\n font-size: 28px;\n font-weight: 700;\n color: var(--eco-referral-primary);\n margin-bottom: 4px;\n}\n\n.eco-referral-stat-label {\n font-size: 13px;\n color: var(--eco-referral-text-secondary);\n}\n\n/* 邀请列表 */\n.eco-referral-list {\n background: var(--eco-referral-bg);\n border: 1px solid var(--eco-referral-border);\n border-radius: var(--eco-referral-radius);\n padding: 20px;\n}\n\n.eco-referral-list h4 {\n margin: 0 0 16px;\n font-size: 16px;\n color: var(--eco-referral-text);\n}\n\n.eco-referral-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 0;\n border-bottom: 1px solid var(--eco-referral-border);\n}\n\n.eco-referral-item:last-of-type {\n border-bottom: none;\n}\n\n.eco-referral-avatar {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n object-fit: cover;\n}\n\n.eco-referral-item-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.eco-referral-item-name {\n font-size: 14px;\n color: var(--eco-referral-text);\n}\n\n.eco-referral-item-time {\n font-size: 12px;\n color: var(--eco-referral-text-secondary);\n}\n\n.eco-referral-status {\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 12px;\n}\n\n.eco-referral-status-pending {\n background: #fef3c7;\n color: #d97706;\n}\n\n.eco-referral-status-confirmed {\n background: #dbeafe;\n color: #2563eb;\n}\n\n.eco-referral-status-rewarded {\n background: #d1fae5;\n color: #059669;\n}\n\n/* 排行榜 */\n.eco-referral-leaderboard {\n background: var(--eco-referral-bg);\n border: 1px solid var(--eco-referral-border);\n border-radius: var(--eco-referral-radius);\n padding: 20px;\n}\n\n.eco-referral-leaderboard-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n}\n\n.eco-referral-leaderboard-header h4 {\n margin: 0;\n font-size: 16px;\n color: var(--eco-referral-text);\n}\n\n.eco-referral-leaderboard-header select {\n padding: 6px 12px;\n border: 1px solid var(--eco-referral-border);\n border-radius: 6px;\n background: var(--eco-referral-bg);\n color: var(--eco-referral-text);\n font-size: 13px;\n}\n\n.eco-referral-rank-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 0;\n border-bottom: 1px solid var(--eco-referral-border);\n}\n\n.eco-referral-rank {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--eco-referral-bg-secondary);\n border-radius: 50%;\n font-size: 12px;\n font-weight: 600;\n}\n\n.eco-referral-rank-1 { background: #ffd700; color: #1e1e1e; }\n.eco-referral-rank-2 { background: #c0c0c0; color: #1e1e1e; }\n.eco-referral-rank-3 { background: #cd7f32; color: white; }\n\n.eco-referral-rank-avatar {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n object-fit: cover;\n}\n\n.eco-referral-rank-name {\n flex: 1;\n font-size: 14px;\n color: var(--eco-referral-text);\n}\n\n.eco-referral-rank-count {\n font-size: 14px;\n font-weight: 600;\n color: var(--eco-referral-primary);\n}\n\n.eco-referral-my-rank {\n display: flex;\n justify-content: space-between;\n padding: 16px;\n margin-top: 16px;\n background: rgba(99, 102, 241, 0.1);\n border-radius: 8px;\n font-size: 13px;\n color: var(--eco-referral-primary);\n}\n\n/* 规则 */\n.eco-referral-rules {\n background: var(--eco-referral-bg);\n border: 1px solid var(--eco-referral-border);\n border-radius: var(--eco-referral-radius);\n padding: 20px;\n}\n\n.eco-referral-rules h4 {\n margin: 0 0 20px;\n font-size: 16px;\n color: var(--eco-referral-text);\n}\n\n.eco-referral-steps {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.eco-referral-step {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.eco-referral-step-num {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--eco-referral-primary);\n color: white;\n border-radius: 50%;\n font-size: 14px;\n font-weight: 600;\n}\n\n.eco-referral-step-text {\n font-size: 14px;\n color: var(--eco-referral-text);\n}\n\n.eco-referral-rewards {\n display: flex;\n gap: 16px;\n padding-top: 16px;\n border-top: 1px solid var(--eco-referral-border);\n}\n\n.eco-referral-reward {\n flex: 1;\n padding: 16px;\n background: var(--eco-referral-bg-secondary);\n border-radius: 8px;\n text-align: center;\n}\n\n.eco-referral-reward-label {\n display: block;\n font-size: 12px;\n color: var(--eco-referral-text-secondary);\n margin-bottom: 6px;\n}\n\n.eco-referral-reward-value {\n font-size: 18px;\n font-weight: 600;\n color: var(--eco-referral-success);\n}\n\n.eco-referral-load-more {\n display: block;\n width: 100%;\n padding: 12px;\n margin-top: 16px;\n border: 1px solid var(--eco-referral-border);\n border-radius: 8px;\n background: transparent;\n color: var(--eco-referral-text-secondary);\n font-size: 14px;\n cursor: pointer;\n}\n\n/* 状态 */\n.eco-referral-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.eco-referral-spinner {\n width: 28px;\n height: 28px;\n border: 3px solid var(--eco-referral-border);\n border-top-color: var(--eco-referral-primary);\n border-radius: 50%;\n animation: eco-referral-spin 1s linear infinite;\n}\n\n@keyframes eco-referral-spin {\n to { transform: rotate(360deg); }\n}\n\n.eco-referral-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 40px;\n color: var(--eco-referral-text-secondary);\n}\n\n.eco-referral-empty-icon {\n font-size: 48px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n/* 响应式 */\n@media (max-width: 640px) {\n .eco-referral-stats {\n grid-template-columns: 1fr;\n }\n\n .eco-referral-rewards {\n flex-direction: column;\n }\n}\n",".qrf-share-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,0.08)!important;border-color:#3b82f6!important}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quantabit/referral-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Referral & invitation: invite codes, reward tracking, share links",
|
|
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/referral-sdk"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"referral",
|
|
38
|
+
"invite",
|
|
39
|
+
"viral",
|
|
40
|
+
"growth",
|
|
41
|
+
"react"
|
|
42
|
+
],
|
|
43
|
+
"author": "QuantaBit Team",
|
|
44
|
+
"license": "MIT",
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=18.0.0"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"react": ">=17.0.0",
|
|
50
|
+
"react-dom": ">=17.0.0"
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@quantabit/sdk-config": "^1.0.6"
|
|
54
|
+
},
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public"
|
|
57
|
+
},
|
|
58
|
+
"qbit": {
|
|
59
|
+
"privacy": {
|
|
60
|
+
"level": "marketing",
|
|
61
|
+
"dataCollection": "Campaign tracking and attribution data. Requires explicit user consent.",
|
|
62
|
+
"gdprCompliant": true,
|
|
63
|
+
"ccpaCompliant": true
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"homepage": "https://github.com/quantabit-chain/qbit-sdk/tree/main/packages/referral-sdk#readme",
|
|
67
|
+
"bugs": {
|
|
68
|
+
"url": "https://github.com/quantabit-chain/qbit-sdk/issues"
|
|
69
|
+
}
|
|
70
|
+
}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Type definitions for @quantabit/referral-sdk
|
|
2
|
+
export declare const InviteCodeBox: any;
|
|
3
|
+
export declare const ReferralCard: any;
|
|
4
|
+
export declare const RewardTracker: any;
|
|
5
|
+
export declare const SUPPORTED_LANGUAGES: any;
|
|
6
|
+
export declare const ShareInvite: any;
|
|
7
|
+
export declare const getLanguage: any;
|
|
8
|
+
export declare const messages: any;
|
|
9
|
+
export declare const setLanguage: any;
|
|
10
|
+
export declare const t: any;
|