From c9532ffd43a0c2304add969051bcd811f7a44a11 Mon Sep 17 00:00:00 2001 From: yyh Date: Thu, 5 Mar 2026 15:55:21 +0800 Subject: [PATCH] add stories --- .../credits-exhausted-alert.stories.tsx | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 web/app/components/header/account-setting/model-provider-page/provider-added-card/model-auth-dropdown/credits-exhausted-alert.stories.tsx diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-auth-dropdown/credits-exhausted-alert.stories.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-auth-dropdown/credits-exhausted-alert.stories.tsx new file mode 100644 index 0000000000..904617fdef --- /dev/null +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-auth-dropdown/credits-exhausted-alert.stories.tsx @@ -0,0 +1,78 @@ +import type { Meta, StoryObj } from '@storybook/nextjs-vite' +import type { ICurrentWorkspace } from '@/models/common' +import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import CreditsExhaustedAlert from './credits-exhausted-alert' + +const baseWorkspace: ICurrentWorkspace = { + id: 'ws-1', + name: 'Test Workspace', + plan: 'sandbox', + status: 'normal', + created_at: Date.now(), + role: 'owner', + providers: [], + trial_credits: 200, + trial_credits_used: 200, + next_credit_reset_date: Date.now() + 86400000, +} + +function createSeededQueryClient(overrides?: Partial) { + const qc = new QueryClient({ + defaultOptions: { queries: { refetchOnWindowFocus: false, retry: false } }, + }) + qc.setQueryData(['common', 'current-workspace'], { ...baseWorkspace, ...overrides }) + return qc +} + +const meta = { + title: 'ModelProvider/CreditsExhaustedAlert', + component: CreditsExhaustedAlert, + parameters: { + layout: 'centered', + docs: { + description: { + component: 'Alert shown when trial credits are exhausted, with usage progress bar and upgrade link.', + }, + }, + }, + tags: ['autodocs'], + decorators: [ + (Story) => { + return ( + +
+ +
+
+ ) + }, + ], + args: { + hasApiKeyFallback: false, + }, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const WithApiKeyFallback: Story = { + args: { + hasApiKeyFallback: true, + }, +} + +export const PartialUsage: Story = { + decorators: [ + (Story) => { + return ( + +
+ +
+
+ ) + }, + ], +}