@quantabit/pricing-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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.iife.js","sources":["../src/services/pricingApi.js","../src/hooks/usePricing.js","../src/components/PricingTable.jsx","../src/i18n/index.js","../src/index.js"],"sourcesContent":["/**\n * Pricing SDK - API 客户端\n * 定价管理系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 定价 API 客户端\n */\nexport class PricingApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/pricing', config);\n }\n\n // ============ 价格表 ============\n\n /**\n * 获取价格表列表\n * @param {Object} params - 查询参数\n */\n async getPricingTables(params = {}) {\n return this.get('/tables', params);\n }\n\n /**\n * 获取价格表详情\n * @param {string} tableId - 价格表 ID\n */\n async getPricingTable(tableId) {\n return this.get(`/tables/${tableId}`);\n }\n\n /**\n * 获取产品当前价格\n * @param {string} productId - 产品 ID\n */\n async getProductPrice(productId) {\n return this.get(`/products/${productId}/price`);\n }\n\n // ============ 套餐定价 ============\n\n /**\n * 获取套餐列表\n * @param {string} category - 分类\n */\n async getPlans(category) {\n return this.get('/plans', { category });\n }\n\n /**\n * 获取套餐详情\n * @param {string} planId - 套餐 ID\n */\n async getPlan(planId) {\n return this.get(`/plans/${planId}`);\n }\n\n /**\n * 比较套餐\n * @param {string[]} planIds - 套餐 ID 列表\n */\n async comparePlans(planIds) {\n return this.post('/plans/compare', { plan_ids: planIds });\n }\n\n // ============ 折扣与优惠 ============\n\n /**\n * 获取可用折扣\n * @param {string} productId - 产品 ID\n */\n async getDiscounts(productId) {\n return this.get(`/products/${productId}/discounts`);\n }\n\n /**\n * 验证优惠码\n * @param {string} code - 优惠码\n * @param {string} productId - 产品 ID\n */\n async validateCoupon(code, productId) {\n return this.post('/coupon/validate', { code, product_id: productId });\n }\n\n /**\n * 计算最终价格\n * @param {Object} priceRequest - 价格计算请求\n */\n async calculatePrice(priceRequest) {\n return this.post('/calculate', priceRequest);\n }\n\n // ============ 货币与汇率 ============\n\n /**\n * 获取支持的货币\n */\n async getSupportedCurrencies() {\n return this.get('/currencies');\n }\n\n /**\n * 获取汇率\n * @param {string} from - 源货币\n * @param {string} to - 目标货币\n */\n async getExchangeRate(from, to) {\n return this.get('/exchange-rate', { from, to });\n }\n\n /**\n * 转换货币\n * @param {number} amount - 金额\n * @param {string} from - 源货币\n * @param {string} to - 目标货币\n */\n async convertCurrency(amount, from, to) {\n return this.post('/convert', { amount, from, to });\n }\n\n // ============ 订阅定价 ============\n\n /**\n * 获取订阅价格\n * @param {string} planId - 套餐 ID\n * @param {string} billingCycle - 计费周期\n */\n async getSubscriptionPrice(planId, billingCycle = 'monthly') {\n return this.get(`/subscriptions/${planId}/price`, { billing_cycle: billingCycle });\n }\n\n /**\n * 计算升级/降级价格\n * @param {string} currentPlanId - 当前套餐\n * @param {string} targetPlanId - 目标套餐\n */\n async calculateUpgradePrice(currentPlanId, targetPlanId) {\n return this.post('/subscriptions/upgrade-price', {\n current_plan_id: currentPlanId,\n target_plan_id: targetPlanId,\n });\n }\n\n // ============ 价格历史 ============\n\n /**\n * 获取价格历史\n * @param {string} productId - 产品 ID\n * @param {Object} params - 查询参数\n */\n async getPriceHistory(productId, params = {}) {\n return this.get(`/products/${productId}/history`, params);\n }\n}\n\n// 创建默认实例\nexport const pricingApi = new PricingApiClient();\n\n\n\nexport default pricingApi;\n","/**\n * Pricing SDK - React Hooks\n */\n\nimport { useState, useCallback, useEffect } from 'react';\nimport { pricingApi } from '../services/pricingApi';\n\nexport function usePricing() {\n const [plans, setPlans] = useState([]);\n const [currencies, setCurrencies] = useState([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const fetchPlans = useCallback(async (category) => {\n setLoading(true);\n try {\n const result = await pricingApi.getPlans(category);\n setPlans(result.data || []);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, []);\n\n const fetchCurrencies = useCallback(async () => {\n try {\n const result = await pricingApi.getSupportedCurrencies();\n setCurrencies(result.data || []);\n } catch (err) {\n setError(err.message);\n }\n }, []);\n\n const calculatePrice = useCallback(async (priceRequest) => {\n try {\n return await pricingApi.calculatePrice(priceRequest);\n } catch (err) {\n setError(err.message);\n throw err;\n }\n }, []);\n\n const validateCoupon = useCallback(async (code, productId) => {\n try {\n return await pricingApi.validateCoupon(code, productId);\n } catch (err) {\n setError(err.message);\n throw err;\n }\n }, []);\n\n const comparePlans = useCallback(async (planIds) => {\n try {\n return await pricingApi.comparePlans(planIds);\n } catch (err) {\n setError(err.message);\n throw err;\n }\n }, []);\n\n useEffect(() => {\n fetchPlans();\n fetchCurrencies();\n }, [fetchPlans, fetchCurrencies]);\n\n return {\n plans,\n currencies,\n loading,\n error,\n fetchPlans,\n calculatePrice,\n validateCoupon,\n comparePlans,\n };\n}\n\n","/**\n * Pricing SDK - 定价组件\n */\n\nimport React, { useState } from 'react';\nimport { usePricing } from '../hooks/usePricing';\n\n/**\n * Pricing SDK - PricingTable\n * 企业级高级版 SaaS 定价表单\n */\nexport function PricingTable({ onSelect }) {\n const { plans, loading, validateCoupon } = usePricing();\n const [billingCycle, setBillingCycle] = useState('monthly');\n const [couponCode, setCouponCode] = useState('');\n const [couponDiscount, setCouponDiscount] = useState(null);\n\n const handleApplyCoupon = async () => {\n if (!couponCode) return;\n try {\n const result = await validateCoupon(couponCode, null);\n if (result.data?.valid) {\n setCouponDiscount(result.data.discount);\n }\n } catch (err) {\n // 错误处理\n }\n };\n\n if (loading) {\n return (\n <div style={{ padding: '60px', textAlign: 'center', color: '#64748B' }}>\n <div className=\"eco-loading-spinner\" style={{ \n width: '32px', height: '32px', border: '3px solid #E2E8F0', borderTopColor: '#3B82F6', \n borderRadius: '50%', animation: 'spin 1s linear infinite', margin: '0 auto 16px' \n }} />\n Loading pricing plans...\n </div>\n );\n }\n\n return (\n <div className=\"eco-pricing-table\" style={{ width: '100%', maxWidth: '1200px', margin: '0 auto', padding: '40px 20px' }}>\n \n {/* 计费周期切换 */}\n <div style={{ display: 'flex', justifyContent: 'center', marginBottom: '48px' }}>\n <div style={{ \n display: 'inline-flex', background: 'rgba(241, 245, 249, 0.8)', padding: '6px', \n borderRadius: '16px', backdropFilter: 'blur(10px)', border: '1px solid #E2E8F0' \n }}>\n <button \n onClick={() => setBillingCycle('monthly')}\n style={{\n padding: '10px 24px', border: 'none', borderRadius: '12px', fontSize: '15px', fontWeight: 600,\n background: billingCycle === 'monthly' ? '#fff' : 'transparent',\n color: billingCycle === 'monthly' ? '#0F172A' : '#64748B',\n boxShadow: billingCycle === 'monthly' ? '0 4px 12px rgba(0,0,0,0.05)' : 'none',\n cursor: 'pointer', transition: 'all 0.3s ease'\n }}\n >\n Monthly\n </button>\n <button \n onClick={() => setBillingCycle('yearly')}\n style={{\n padding: '10px 24px', border: 'none', borderRadius: '12px', fontSize: '15px', fontWeight: 600,\n background: billingCycle === 'yearly' ? '#fff' : 'transparent',\n color: billingCycle === 'yearly' ? '#0F172A' : '#64748B',\n boxShadow: billingCycle === 'yearly' ? '0 4px 12px rgba(0,0,0,0.05)' : 'none',\n cursor: 'pointer', transition: 'all 0.3s ease', display: 'flex', alignItems: 'center', gap: '8px'\n }}\n >\n Yearly \n <span style={{ \n background: '#DCFCE7', color: '#166534', padding: '2px 8px', \n borderRadius: '20px', fontSize: '12px', fontWeight: 700 \n }}>Save 20%</span>\n </button>\n </div>\n </div>\n\n {/* 套餐列表 */}\n <div style={{ \n display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(320px, 1fr))', \n gap: '32px', alignItems: 'flex-start' \n }}>\n {plans.map((plan) => (\n <div \n key={plan.id} \n style={{\n position: 'relative',\n background: plan.popular ? 'linear-gradient(145deg, rgba(255,255,255,0.9) 0%, rgba(255,255,255,0.6) 100%)' : 'rgba(255, 255, 255, 0.4)',\n backdropFilter: 'blur(20px)',\n WebkitBackdropFilter: 'blur(20px)',\n border: plan.popular ? '2px solid #3B82F6' : '1px solid rgba(255, 255, 255, 0.5)',\n borderRadius: '24px',\n padding: '40px 32px',\n boxShadow: plan.popular ? '0 20px 40px -10px rgba(59, 130, 246, 0.15)' : '0 10px 30px -10px rgba(0,0,0,0.05)',\n transform: plan.popular ? 'scale(1.02)' : 'scale(1)',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n display: 'flex', flexDirection: 'column', gap: '24px'\n }}\n onMouseEnter={e => e.currentTarget.style.transform = plan.popular ? 'scale(1.04) translateY(-4px)' : 'scale(1.02) translateY(-4px)'}\n onMouseLeave={e => e.currentTarget.style.transform = plan.popular ? 'scale(1.02)' : 'scale(1)'}\n >\n {plan.popular && (\n <div style={{\n position: 'absolute', top: '-16px', left: '50%', transform: 'translateX(-50%)',\n background: 'linear-gradient(135deg, #3B82F6 0%, #2563EB 100%)',\n color: '#fff', padding: '6px 16px', borderRadius: '20px', fontSize: '13px', fontWeight: 700,\n boxShadow: '0 4px 12px rgba(59, 130, 246, 0.3)'\n }}>\n MOST POPULAR\n </div>\n )}\n \n <div>\n <h3 style={{ fontSize: '22px', fontWeight: 700, margin: '0 0 12px', color: '#0F172A' }}>{plan.name}</h3>\n <p style={{ margin: 0, color: '#64748B', fontSize: '15px', lineHeight: 1.5 }}>{plan.description}</p>\n </div>\n\n <div style={{ display: 'flex', alignItems: 'baseline', gap: '4px' }}>\n <span style={{ fontSize: '48px', fontWeight: 800, color: '#0F172A', letterSpacing: '-1px' }}>\n ¥{billingCycle === 'yearly' ? plan.yearly_price : plan.monthly_price}\n </span>\n <span style={{ color: '#64748B', fontWeight: 500 }}>\n /{billingCycle === 'yearly' ? 'year' : 'mo'}\n </span>\n </div>\n\n <button \n onClick={() => onSelect?.(plan, billingCycle)}\n style={{\n width: '100%', padding: '16px', borderRadius: '14px', border: 'none',\n background: plan.popular ? '#0F172A' : '#F1F5F9',\n color: plan.popular ? '#fff' : '#0F172A',\n fontSize: '15px', fontWeight: 700, cursor: 'pointer',\n transition: 'all 0.2s ease',\n boxShadow: plan.popular ? '0 4px 12px rgba(15, 23, 42, 0.2)' : 'none'\n }}\n onMouseEnter={e => e.currentTarget.style.opacity = '0.9'}\n onMouseLeave={e => e.currentTarget.style.opacity = '1'}\n >\n Get Started\n </button>\n\n <ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: '16px' }}>\n {plan.features?.map((feature, i) => (\n <li key={i} style={{ display: 'flex', alignItems: 'center', gap: '12px', fontSize: '15px', color: '#334155' }}>\n <div style={{ width: '20px', height: '20px', borderRadius: '50%', background: '#DBEAFE', color: '#3B82F6', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '12px', fontWeight: 900 }}>\n ✓\n </div>\n {feature}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n\n {/* 优惠码 */}\n <div style={{ marginTop: '48px', display: 'flex', justifyContent: 'center' }}>\n <div style={{ display: 'flex', gap: '8px', background: '#fff', padding: '6px', borderRadius: '16px', border: '1px solid #E2E8F0', boxShadow: '0 4px 20px rgba(0,0,0,0.03)' }}>\n <input\n type=\"text\"\n placeholder=\"Have a promo code?\"\n value={couponCode}\n onChange={(e) => setCouponCode(e.target.value)}\n style={{ border: 'none', outline: 'none', padding: '10px 16px', width: '200px', fontSize: '14px', background: 'transparent' }}\n />\n <button \n onClick={handleApplyCoupon}\n style={{ background: '#F1F5F9', color: '#334155', border: 'none', padding: '10px 20px', borderRadius: '10px', fontSize: '14px', fontWeight: 600, cursor: 'pointer' }}\n >\n Apply\n </button>\n </div>\n </div>\n \n {couponDiscount && (\n <div style={{ textAlign: 'center', marginTop: '16px', color: '#166534', fontWeight: 600, fontSize: '15px' }}>\n ✨ Promo code applied! You save {couponDiscount}%.\n </div>\n )}\n </div>\n );\n}\n\nexport default PricingTable;\n","/**\n * Pricing SDK - 国际化\n */\n\nexport const zh = {\n pricing: {\n title: '定价',\n subtitle: '选择适合您的套餐',\n plans: {\n title: '套餐',\n free: '免费版',\n basic: '基础版',\n pro: '专业版',\n enterprise: '企业版',\n },\n billing: {\n monthly: '月付',\n yearly: '年付',\n save: '节省',\n },\n features: {\n title: '功能特性',\n included: '包含',\n notIncluded: '不包含',\n },\n actions: {\n select: '选择套餐',\n upgrade: '升级',\n downgrade: '降级',\n compare: '对比套餐',\n },\n coupon: {\n title: '优惠码',\n placeholder: '输入优惠码',\n apply: '应用',\n valid: '优惠码有效',\n invalid: '优惠码无效',\n },\n currency: {\n title: '货币',\n select: '选择货币',\n },\n messages: {\n planSelected: '套餐已选择',\n couponApplied: '优惠码已应用',\n },\n errors: {\n fetchFailed: '获取定价失败',\n invalidCoupon: '无效的优惠码',\n },\n },\n};\n\nexport const en = {\n pricing: {\n title: 'Pricing',\n subtitle: 'Choose the plan that fits you',\n plans: {\n title: 'Plans',\n free: 'Free',\n basic: 'Basic',\n pro: 'Pro',\n enterprise: 'Enterprise',\n },\n billing: {\n monthly: 'Monthly',\n yearly: 'Yearly',\n save: 'Save',\n },\n features: {\n title: 'Features',\n included: 'Included',\n notIncluded: 'Not Included',\n },\n actions: {\n select: 'Select Plan',\n upgrade: 'Upgrade',\n downgrade: 'Downgrade',\n compare: 'Compare Plans',\n },\n coupon: {\n title: 'Coupon Code',\n placeholder: 'Enter coupon code',\n apply: 'Apply',\n valid: 'Coupon valid',\n invalid: 'Coupon invalid',\n },\n currency: {\n title: 'Currency',\n select: 'Select Currency',\n },\n messages: {\n planSelected: 'Plan selected',\n couponApplied: 'Coupon applied',\n },\n errors: {\n fetchFailed: 'Failed to fetch pricing',\n invalidCoupon: 'Invalid coupon code',\n },\n },\n};\n\nexport const ja = {\n pricing: {\n title: '料金設定',\n subtitle: 'あなたに合ったプランをお選びください',\n plans: {\n title: 'プラン',\n free: '無料版',\n basic: 'ベーシック版',\n pro: 'プロ版',\n enterprise: 'エンタープライズ版',\n },\n billing: {\n monthly: '月払い',\n yearly: '年払い',\n save: 'お得',\n },\n features: {\n title: '機能',\n included: '含まれる',\n notIncluded: '含まれない',\n },\n actions: {\n select: 'プランを選択',\n upgrade: 'アップグレード',\n downgrade: 'ダウングレード',\n compare: 'プランを比較',\n },\n coupon: {\n title: 'クーポンコード',\n placeholder: 'クーポンコードを入力',\n apply: '適用',\n valid: '有効なクーポンです',\n invalid: '無効なクーポンです',\n },\n currency: {\n title: '通貨',\n select: '通貨を選択',\n },\n messages: {\n planSelected: 'プランを選択しました',\n couponApplied: 'クーポンが適用されました',\n },\n errors: {\n fetchFailed: '料金設定の取得に失敗しました',\n invalidCoupon: '無効なクーポンコードです',\n },\n },\n};\n\nexport const ko = {\n pricing: {\n title: '가격 및 플랜',\n subtitle: '귀하에게 맞는 플랜을 선택하세요',\n plans: {\n title: '플랜',\n free: '무료',\n basic: '베이직',\n pro: '프로',\n enterprise: '엔터프라이즈',\n },\n billing: {\n monthly: '월간 결제',\n yearly: '연간 결제',\n save: '절약',\n },\n features: {\n title: '기능',\n included: '포함됨',\n notIncluded: '포함되지 않음',\n },\n actions: {\n select: '플랜 선택',\n upgrade: '업그레이드',\n downgrade: '다운그레이드',\n compare: '플랜 비교',\n },\n coupon: {\n title: '쿠폰 코드',\n placeholder: '쿠폰 코드 입력',\n apply: '적용',\n valid: '유효한 쿠폰',\n invalid: '유효하지 않은 쿠폰',\n },\n currency: {\n title: '통화',\n select: '통화 선택',\n },\n messages: {\n planSelected: '플랜이 선택되었습니다',\n couponApplied: '쿠폰이 적용되었습니다',\n },\n errors: {\n fetchFailed: '가격 정보를 가져오지 못했습니다',\n invalidCoupon: '유효하지 않은 쿠폰 코드',\n },\n },\n};\n\nexport default { zh, en, ja, ko };\n","/**\n * @quantabit/pricing-sdk - Pricing SDK\n */\n\n// Type Definitions\nexport const BillingCycle = {\n MONTHLY: 'monthly',\n YEARLY: 'yearly',\n QUARTERLY: 'quarterly',\n};\n\nexport const PlanType = {\n FREE: 'free',\n BASIC: 'basic',\n PRO: 'pro',\n ENTERPRISE: 'enterprise',\n};\n\n// API Client\nexport { PricingApiClient, pricingApi } from './services/pricingApi';\n\n// React Hooks\nexport { usePricing } from './hooks/usePricing';\n\n// Components\nexport { PricingTable } from './components/PricingTable';\n\n// i18n\nexport { zh, en } from './i18n';\n\n// Default Export\nimport { pricingApi } from './services/pricingApi';\nexport default pricingApi;\n\nimport \"./styles/pricing.css\";\n"],"names":["PricingApiClient","BaseApiClient","constructor","config","getPricingTables","params","get","getPricingTable","tableId","getProductPrice","productId","getPlans","category","getPlan","planId","comparePlans","planIds","post","plan_ids","getDiscounts","validateCoupon","code","product_id","calculatePrice","priceRequest","getSupportedCurrencies","getExchangeRate","from","to","convertCurrency","amount","getSubscriptionPrice","billingCycle","billing_cycle","calculateUpgradePrice","currentPlanId","targetPlanId","current_plan_id","target_plan_id","getPriceHistory","pricingApi","usePricing","plans","setPlans","useState","currencies","setCurrencies","loading","setLoading","error","setError","fetchPlans","useCallback","result","data","err","message","fetchCurrencies","useEffect","PricingTable","onSelect","setBillingCycle","couponCode","setCouponCode","couponDiscount","setCouponDiscount","handleApplyCoupon","valid","discount","React","createElement","style","padding","textAlign","color","className","width","height","border","borderTopColor","borderRadius","animation","margin","maxWidth","display","justifyContent","marginBottom","background","backdropFilter","onClick","fontSize","fontWeight","boxShadow","cursor","transition","alignItems","gap","gridTemplateColumns","map","plan","key","id","position","popular","WebkitBackdropFilter","transform","flexDirection","onMouseEnter","e","currentTarget","onMouseLeave","top","left","name","lineHeight","description","letterSpacing","yearly_price","monthly_price","opacity","listStyle","features","feature","i","marginTop","type","placeholder","value","onChange","target","outline","zh","pricing","title","subtitle","free","basic","pro","enterprise","billing","monthly","yearly","save","included","notIncluded","actions","select","upgrade","downgrade","compare","coupon","apply","invalid","currency","messages","planSelected","couponApplied","errors","fetchFailed","invalidCoupon","en","BillingCycle","MONTHLY","YEARLY","QUARTERLY","PlanType","FREE","BASIC","PRO","ENTERPRISE"],"mappings":"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"}