diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx index f206039628..a99e6f7098 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx @@ -19,7 +19,9 @@ import { Trans } from '@affine/i18n'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { useMutation, useQuery } from '@affine/workspace/affine/gql'; import { ArrowRightSmallIcon } from '@blocksuite/icons'; +import { Skeleton } from '@mui/material'; import { Button, IconButton } from '@toeverything/components/button'; +import { Loading } from '@toeverything/components/loading'; import { useSetAtom } from 'jotai'; import { nanoid } from 'nanoid'; import { Suspense, useCallback, useMemo, useState } from 'react'; @@ -63,16 +65,14 @@ export const BillingSettings = () => { title={t['com.affine.payment.billing-setting.title']()} subtitle={t['com.affine.payment.billing-setting.subtitle']()} /> - {/* TODO: loading fallback */} - + }> - {/* TODO: loading fallback */} - + }> @@ -390,3 +390,28 @@ const InvoiceLine = ({ ); }; + +const SubscriptionSettingSkeleton = () => { + const t = useAFFiNEI18N(); + return ( + +
+ + +
+
+ ); +}; + +const BillingHistorySkeleton = () => { + const t = useAFFiNEI18N(); + return ( + +
+ +
+
+ ); +}; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/style.css.ts b/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/style.css.ts index 55243b36dd..f923725250 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/style.css.ts +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/style.css.ts @@ -51,3 +51,17 @@ export const currentPlanName = style({ export const button = style({ padding: '4px 12px', }); + +export const subscriptionSettingSkeleton = style({ + display: 'flex', + flexDirection: 'column', + gap: '24px', +}); + +export const billingHistorySkeleton = style({ + display: 'flex', + flexDirection: 'column', + minHeight: '72px', + alignItems: 'center', + justifyContent: 'center', +});