diff --git a/src/components/settings/credits/credit-transactions-table.tsx b/src/components/settings/credits/credit-transactions-table.tsx
index 64e0b31..022a475 100644
--- a/src/components/settings/credits/credit-transactions-table.tsx
+++ b/src/components/settings/credits/credit-transactions-table.tsx
@@ -46,15 +46,17 @@ import {
} from '@tanstack/react-table';
import {
ArrowUpDownIcon,
+ BanknoteIcon,
ChevronDownIcon,
ChevronLeftIcon,
ChevronRightIcon,
ChevronsLeftIcon,
ChevronsRightIcon,
ClockIcon,
+ CoinsIcon,
+ GemIcon,
GiftIcon,
- MinusCircleIcon,
- RefreshCwIcon,
+ HandCoinsIcon,
ShoppingCartIcon,
} from 'lucide-react';
import { useTranslations } from 'next-intl';
@@ -156,19 +158,19 @@ export function CreditTransactionsTable({
const getTransactionTypeIcon = (type: string) => {
switch (type) {
case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
- return ;
+ return ;
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
- return ;
- case CREDIT_TRANSACTION_TYPE.PURCHASE:
- return ;
+ return ;
+ case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
+ return ;
case CREDIT_TRANSACTION_TYPE.USAGE:
- return ;
+ return ;
case CREDIT_TRANSACTION_TYPE.EXPIRE:
- return ;
+ return ;
case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
- return ;
+ return ;
case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
- return ;
+ return ;
default:
return null;
}
@@ -177,12 +179,6 @@ export function CreditTransactionsTable({
// Get transaction type badge variant
const getTransactionTypeBadgeVariant = (type: string) => {
switch (type) {
- case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
- case CREDIT_TRANSACTION_TYPE.PURCHASE:
- case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
- case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
- case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
- return 'outline' as const;
case CREDIT_TRANSACTION_TYPE.USAGE:
case CREDIT_TRANSACTION_TYPE.EXPIRE:
return 'destructive' as const;
@@ -198,7 +194,7 @@ export function CreditTransactionsTable({
return t('types.MONTHLY_REFRESH');
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return t('types.REGISTER_GIFT');
- case CREDIT_TRANSACTION_TYPE.PURCHASE:
+ case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return t('types.PURCHASE');
case CREDIT_TRANSACTION_TYPE.USAGE:
return t('types.USAGE');
diff --git a/src/credits/credit-detail-viewer.tsx b/src/credits/credit-detail-viewer.tsx
index 4105f9d..7fd36ba 100644
--- a/src/credits/credit-detail-viewer.tsx
+++ b/src/credits/credit-detail-viewer.tsx
@@ -4,7 +4,6 @@ import {
Drawer,
DrawerClose,
DrawerContent,
- DrawerDescription,
DrawerFooter,
DrawerHeader,
DrawerTitle,
@@ -14,10 +13,12 @@ import { Separator } from '@/components/ui/separator';
import { useIsMobile } from '@/hooks/use-mobile';
import { formatDate } from '@/lib/formatter';
import {
+ BanknoteIcon,
ClockIcon,
+ CoinsIcon,
+ GemIcon,
GiftIcon,
- MinusCircleIcon,
- RefreshCwIcon,
+ HandCoinsIcon,
ShoppingCartIcon,
} from 'lucide-react';
import { useTranslations } from 'next-intl';
@@ -51,19 +52,19 @@ export function CreditDetailViewer({ transaction }: CreditDetailViewerProps) {
const getTransactionTypeIcon = (type: string) => {
switch (type) {
case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
- return ;
+ return ;
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return ;
- case CREDIT_TRANSACTION_TYPE.PURCHASE:
+ case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return ;
case CREDIT_TRANSACTION_TYPE.USAGE:
- return ;
+ return ;
case CREDIT_TRANSACTION_TYPE.EXPIRE:
return ;
case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
- return ;
+ return ;
case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
- return ;
+ return ;
default:
return null;
}
@@ -72,12 +73,6 @@ export function CreditDetailViewer({ transaction }: CreditDetailViewerProps) {
// Get transaction type badge variant
const getTransactionTypeBadgeVariant = (type: string) => {
switch (type) {
- case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
- case CREDIT_TRANSACTION_TYPE.PURCHASE:
- case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
- case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
- case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
- return 'outline' as const;
case CREDIT_TRANSACTION_TYPE.USAGE:
case CREDIT_TRANSACTION_TYPE.EXPIRE:
return 'destructive' as const;
@@ -93,7 +88,7 @@ export function CreditDetailViewer({ transaction }: CreditDetailViewerProps) {
return t('types.MONTHLY_REFRESH');
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return t('types.REGISTER_GIFT');
- case CREDIT_TRANSACTION_TYPE.PURCHASE:
+ case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return t('types.PURCHASE');
case CREDIT_TRANSACTION_TYPE.USAGE:
return t('types.USAGE');
diff --git a/src/credits/types.ts b/src/credits/types.ts
index 59c3f6a..c79a1ba 100644
--- a/src/credits/types.ts
+++ b/src/credits/types.ts
@@ -4,7 +4,7 @@
export enum CREDIT_TRANSACTION_TYPE {
MONTHLY_REFRESH = 'MONTHLY_REFRESH', // Credits earned by monthly refresh (free users)
REGISTER_GIFT = 'REGISTER_GIFT', // Credits earned by register gift
- PURCHASE = 'PURCHASE', // Credits earned by purchase
+ PURCHASE_PACKAGE = 'PURCHASE_PACKAGE', // Credits earned by purchase package
SUBSCRIPTION_RENEWAL = 'SUBSCRIPTION_RENEWAL', // Credits earned by subscription renewal
LIFETIME_MONTHLY = 'LIFETIME_MONTHLY', // Credits earned by lifetime plan monthly distribution
USAGE = 'USAGE', // Credits spent by usage
diff --git a/src/payment/provider/stripe.ts b/src/payment/provider/stripe.ts
index fb4f490..cd39852 100644
--- a/src/payment/provider/stripe.ts
+++ b/src/payment/provider/stripe.ts
@@ -827,7 +827,7 @@ export class StripeProvider implements PaymentProvider {
await addCredits({
userId,
amount: Number.parseInt(credits),
- type: CREDIT_TRANSACTION_TYPE.PURCHASE,
+ type: CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE,
description: `+${credits} credits for package ${packageId} ($${amount.toLocaleString()})`,
paymentId: session.id,
expireDays: creditPackage.expireDays,