@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.umd.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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"}
File without changes
package/package.json ADDED
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "@quantabit/pricing-sdk",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "QuantaBit Pricing SDK - Plan configuration and trial period management",
6
+ "main": "dist/index.cjs",
7
+ "module": "dist/index.esm.js",
8
+ "types": "types/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.esm.js",
12
+ "require": "./dist/index.cjs",
13
+ "types": "./dist/index.d.ts"
14
+ },
15
+ "./styles": "./dist/styles.css",
16
+ "./styles.css": "./dist/styles.css"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md",
21
+ "LICENSE",
22
+ "types"
23
+ ],
24
+ "scripts": {
25
+ "build": "rollup -c",
26
+ "prepublishOnly": "npm run build",
27
+ "clean": "rm -rf dist",
28
+ "test": "jest --passWithNoTests"
29
+ },
30
+ "keywords": [
31
+ "quantabit",
32
+ "pricing"
33
+ ],
34
+ "author": "QuantaBit Team",
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/quantabit-chain/qbit-sdk.git",
39
+ "directory": "packages/pricing-sdk"
40
+ },
41
+ "bugs": {
42
+ "url": "https://github.com/quantabit-chain/qbit-sdk/issues"
43
+ },
44
+ "homepage": "https://github.com/quantabit-chain/qbit-sdk/tree/main/packages/pricing-sdk#readme",
45
+ "dependencies": {
46
+ "@quantabit/sdk-config": "^1.0.6"
47
+ },
48
+ "devDependencies": {
49
+ "@babel/core": "^7.23.0",
50
+ "@babel/preset-react": "^7.23.0",
51
+ "@rollup/plugin-babel": "^6.0.0",
52
+ "@rollup/plugin-commonjs": "^25.0.0",
53
+ "@rollup/plugin-node-resolve": "^15.0.0",
54
+ "rollup": "^4.0.0",
55
+ "rollup-plugin-postcss": "^4.0.0"
56
+ },
57
+ "peerDependencies": {
58
+ "react": ">=17.0.0"
59
+ },
60
+ "publishConfig": {
61
+ "access": "public",
62
+ "registry": "https://registry.npmjs.org"
63
+ },
64
+ "engines": {
65
+ "node": ">=18.0.0"
66
+ },
67
+ "sideEffects": [
68
+ "*.css"
69
+ ],
70
+ "qbit": {
71
+ "privacy": {
72
+ "level": "functional",
73
+ "dataCollection": "Feature-related data for personalization. Requires user consent.",
74
+ "gdprCompliant": true,
75
+ "ccpaCompliant": true
76
+ }
77
+ }
78
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @quantabit/pricing-sdk TypeScript Type Definitions
3
+ *
4
+ * Auto-generated type stubs. Enhance with specific types as the SDK matures.
5
+ */
6
+
7
+ import { FC, ReactNode } from 'react';
8
+
9
+ // ============ Components ============
10
+
11
+ export interface PricingTableProps {
12
+ className?: string;
13
+ style?: React.CSSProperties;
14
+ [key: string]: any;
15
+ }
16
+
17
+ export declare const PricingTable: FC<PricingTableProps>;
18
+
19
+ // ============ Hooks ============
20
+
21
+ export interface UsePricingReturn {
22
+ data: any;
23
+ loading: boolean;
24
+ error: string | null;
25
+ [key: string]: any;
26
+ }
27
+
28
+ export declare function usePricing(...args: any[]): UsePricingReturn;
29
+
30
+ // ============ Services ============
31
+
32
+ export declare class PricingApiClient {
33
+ constructor(config?: Record<string, any>);
34
+ setToken(token: string): void;
35
+ setBaseUrl(url: string): void;
36
+ destroy(): void;
37
+ }
38
+
39
+ export declare const pricingApi: any;
40
+
41
+ // ============ Functions & Utilities ============
42
+
43
+ export declare function BillingCycle(...args: any[]): any;
44
+ export declare function PlanType(...args: any[]): any;
45
+ export declare function zh(...args: any[]): any;
46
+ export declare function en(...args: any[]): any;
47
+