From f2419590ac62ae2f4bd01de69c89fcc1a6e511a3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 4 May 2026 14:14:00 +0000 Subject: [PATCH 1/5] Initial plan From fb0ddc4ed778564ac895c67fc10b5d7bbf87f402 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 4 May 2026 14:29:15 +0000 Subject: [PATCH 2/5] feat: add initial savings-widget package and Storybook demo Agent-Logs-Url: https://github.com/GoodDollar/GoodWidget/sessions/5d2d03e8-2b26-4f0c-917d-003dc813df8f Co-authored-by: sirpy <671095+sirpy@users.noreply.github.com> --- examples/storybook/package.json | 4 +- .../src/stories/ClaimWidget.stories.tsx | 6 +- .../src/stories/SavingsWidget.stories.tsx | 34 ++ .../src/stories/ThemePlayground.stories.tsx | 6 +- packages/savings-widget/README.md | 21 + packages/savings-widget/package.json | 40 ++ packages/savings-widget/src/SavingsWidget.tsx | 386 ++++++++++++++++++ packages/savings-widget/src/index.ts | 2 + packages/savings-widget/tsconfig.build.json | 11 + packages/savings-widget/tsconfig.json | 14 + packages/savings-widget/tsup.config.ts | 13 + pnpm-lock.yaml | 364 +++++++++++++++++ tests/demo/smoke.spec.ts | 7 + 13 files changed, 901 insertions(+), 7 deletions(-) create mode 100644 examples/storybook/src/stories/SavingsWidget.stories.tsx create mode 100644 packages/savings-widget/README.md create mode 100644 packages/savings-widget/package.json create mode 100644 packages/savings-widget/src/SavingsWidget.tsx create mode 100644 packages/savings-widget/src/index.ts create mode 100644 packages/savings-widget/tsconfig.build.json create mode 100644 packages/savings-widget/tsconfig.json create mode 100644 packages/savings-widget/tsup.config.ts diff --git a/examples/storybook/package.json b/examples/storybook/package.json index 044f9aa..9275e14 100644 --- a/examples/storybook/package.json +++ b/examples/storybook/package.json @@ -10,11 +10,13 @@ }, "dependencies": { "@goodwidget/core": "workspace:*", + "@goodwidget/savings-widget": "workspace:*", "@goodwidget/ui": "workspace:*", "@goodwidget/claim-widget-theme-demo": "workspace:*", "react": "^18.3.0", "react-dom": "^18.3.0", - "react-native-web": "^0.19.13" + "react-native-web": "^0.19.13", + "viem": "^2.31.0" }, "devDependencies": { "@storybook/addon-essentials": "^8.6.17", diff --git a/examples/storybook/src/stories/ClaimWidget.stories.tsx b/examples/storybook/src/stories/ClaimWidget.stories.tsx index 9065e50..0edff8b 100644 --- a/examples/storybook/src/stories/ClaimWidget.stories.tsx +++ b/examples/storybook/src/stories/ClaimWidget.stories.tsx @@ -10,12 +10,12 @@ */ import React from 'react' import type { Meta, StoryObj } from '@storybook/react' -import { ClaimWidget } from '@goodwidget/claim-widget' +import { ClaimWidget } from '@goodwidget/claim-widget-theme-demo' import { YStack } from '@goodwidget/ui' -import { createMockEip1193Provider } from '../fixtures/mockEip1193' +import { createCustodialEip1193Provider } from '../fixtures/custodialEip1193' // Stable mock provider — created once at module level to prevent re-render churn. -const mockProvider = createMockEip1193Provider() +const mockProvider = createCustodialEip1193Provider() /** Cobalt brand overrides (matches the "Host / Cobalt" tab in ThemePlayground). */ const cobaltOverrides = { diff --git a/examples/storybook/src/stories/SavingsWidget.stories.tsx b/examples/storybook/src/stories/SavingsWidget.stories.tsx new file mode 100644 index 0000000..3c18867 --- /dev/null +++ b/examples/storybook/src/stories/SavingsWidget.stories.tsx @@ -0,0 +1,34 @@ +import React from 'react' +import type { Meta, StoryObj } from '@storybook/react' +import { SavingsWidget } from '@goodwidget/savings-widget' +import { YStack } from '@goodwidget/ui' +import { createCustodialEip1193Provider } from '../fixtures/custodialEip1193' + +const mockProvider = createCustodialEip1193Provider() + +const meta: Meta = { + title: 'Widgets/SavingsWidget', + component: SavingsWidget, + tags: ['autodocs'], + parameters: { layout: 'padded' }, +} + +export default meta + +type Story = StoryObj + +export const Default: Story = { + render: () => ( + + + + ), +} + +export const Disconnected: Story = { + render: () => ( + + undefined} /> + + ), +} diff --git a/examples/storybook/src/stories/ThemePlayground.stories.tsx b/examples/storybook/src/stories/ThemePlayground.stories.tsx index bb9d846..a72a6f1 100644 --- a/examples/storybook/src/stories/ThemePlayground.stories.tsx +++ b/examples/storybook/src/stories/ThemePlayground.stories.tsx @@ -13,11 +13,11 @@ */ import React from 'react' import type { Meta, StoryObj } from '@storybook/react' -import { ClaimWidget } from '@goodwidget/claim-widget' +import { ClaimWidget } from '@goodwidget/claim-widget-theme-demo' import { Card, Heading, Text, Alert, YStack } from '@goodwidget/ui' -import { createMockEip1193Provider } from '../fixtures/mockEip1193' +import { createCustodialEip1193Provider } from '../fixtures/custodialEip1193' -const mockProvider = createMockEip1193Provider() +const mockProvider = createCustodialEip1193Provider() const meta: Meta = { title: 'Theme/ThemePlayground', diff --git a/packages/savings-widget/README.md b/packages/savings-widget/README.md new file mode 100644 index 0000000..c0ed036 --- /dev/null +++ b/packages/savings-widget/README.md @@ -0,0 +1,21 @@ +# @goodwidget/savings-widget + +A GoodDollar savings widget built for GoodWidget that uses `@goodsdks/savings-sdk` for deposit, withdraw, and reward-claim flows. + +## Usage + +```tsx +import { SavingsWidget } from '@goodwidget/savings-widget' + +export function App({ provider }) { + return +} +``` + +## Wallet onboarding + +If wallet connection is handled outside the widget, pass `connectWallet`: + +```tsx + appKit.open()} /> +``` diff --git a/packages/savings-widget/package.json b/packages/savings-widget/package.json new file mode 100644 index 0000000..8ec0588 --- /dev/null +++ b/packages/savings-widget/package.json @@ -0,0 +1,40 @@ +{ + "name": "@goodwidget/savings-widget", + "version": "0.1.0", + "description": "GoodDollar savings widget powered by @goodsdks/savings-sdk", + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + } + }, + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "lint": "eslint src/", + "clean": "rm -rf dist .turbo" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + }, + "dependencies": { + "@goodsdks/savings-sdk": "^1.0.0", + "@goodwidget/core": "workspace:*", + "@goodwidget/ui": "workspace:*", + "viem": "^2.31.0" + }, + "devDependencies": { + "@types/react": "^18.3.0", + "@types/react-dom": "^18.3.0", + "react": "^18.3.0", + "react-dom": "^18.3.0", + "tsup": "^8.4.0", + "typescript": "^5.7.0" + } +} diff --git a/packages/savings-widget/src/SavingsWidget.tsx b/packages/savings-widget/src/SavingsWidget.tsx new file mode 100644 index 0000000..c676cc6 --- /dev/null +++ b/packages/savings-widget/src/SavingsWidget.tsx @@ -0,0 +1,386 @@ +import React, { useCallback, useEffect, useMemo, useState } from 'react' +import { GoodWidgetProvider, useWallet } from '@goodwidget/core' +import type { + EIP1193Provider, + GoodWidgetConfig, + GoodWidgetThemeOverrides, +} from '@goodwidget/core' +import { + Badge, + BadgeText, + Button, + ButtonText, + Card, + Heading, + Spinner, + Text, + TokenInput, + ToastContainer, + XStack, + YStack, + createToast, + updateToast, +} from '@goodwidget/ui' +import { GooddollarSavingsSDK } from '@goodsdks/savings-sdk' +import { createPublicClient, createWalletClient, custom, formatEther, http, parseEther } from 'viem' +import { celo } from 'viem/chains' + +export type SavingsTab = 'deposit' | 'withdraw' + +interface SavingsWidgetInnerProps { + connectWallet?: () => void + refreshIntervalMs: number +} + +interface SavingsGlobalStats { + totalStaked: bigint + annualAPR: number +} + +interface SavingsUserStats { + walletBalance: bigint + currentStake: bigint + unclaimedRewards: bigint + userWeeklyRewards: bigint +} + +const DEFAULT_GLOBAL_STATS: SavingsGlobalStats = { + totalStaked: 0n, + annualAPR: 0, +} + +const DEFAULT_USER_STATS: SavingsUserStats = { + walletBalance: 0n, + currentStake: 0n, + unclaimedRewards: 0n, + userWeeklyRewards: 0n, +} + +type SavingsSdkPublicClient = ConstructorParameters[0] +type SavingsSdkWalletClient = ConstructorParameters[1] + +function formatTokenAmount(value: bigint): string { + return Number(formatEther(value)).toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) +} + +function formatPercent(value: number): string { + return `${value.toFixed(2)}%` +} + +function parseAmount(value: string): bigint | null { + if (!value.trim()) return null + try { + return parseEther(value) + } catch { + return null + } +} + +function SavingsWidgetInner({ connectWallet, refreshIntervalMs }: SavingsWidgetInnerProps) { + const { address, connect, isConnected, provider } = useWallet() + const [activeTab, setActiveTab] = useState('deposit') + const [inputAmount, setInputAmount] = useState('') + const [globalStats, setGlobalStats] = useState(DEFAULT_GLOBAL_STATS) + const [userStats, setUserStats] = useState(DEFAULT_USER_STATS) + const [loading, setLoading] = useState(true) + const [txPending, setTxPending] = useState(false) + const [claimPending, setClaimPending] = useState(false) + const [sdkError, setSdkError] = useState(null) + + const connected = Boolean(isConnected && provider && address) + + const publicClient = useMemo( + () => + createPublicClient({ + chain: celo, + transport: http(), + }), + [], + ) + + const walletClient = useMemo(() => { + if (!provider || !connected) return null + return createWalletClient({ + chain: celo, + transport: custom(provider), + }) + }, [provider, connected]) + + const [sdk, setSdk] = useState(null) + + useEffect(() => { + try { + const nextSdk = walletClient + ? new GooddollarSavingsSDK( + publicClient as unknown as SavingsSdkPublicClient, + walletClient as unknown as SavingsSdkWalletClient, + ) + : new GooddollarSavingsSDK(publicClient as unknown as SavingsSdkPublicClient) + setSdk(nextSdk) + setSdkError(null) + } catch (error) { + setSdk(null) + setSdkError(error instanceof Error ? error.message : 'Failed to initialize savings SDK') + } + }, [publicClient, walletClient]) + + const refreshData = useCallback(async () => { + if (!sdk) return + + setLoading(true) + try { + const stats = await sdk.getGlobalStats() + setGlobalStats(stats) + + if (connected) { + const nextUserStats = await sdk.getUserStats() + setUserStats(nextUserStats) + } else { + setUserStats(DEFAULT_USER_STATS) + } + + setSdkError(null) + } catch (error) { + setSdkError(error instanceof Error ? error.message : 'Failed to fetch savings data') + } finally { + setLoading(false) + } + }, [sdk, connected]) + + useEffect(() => { + void refreshData() + }, [refreshData]) + + useEffect(() => { + if (refreshIntervalMs <= 0) return + const interval = setInterval(() => { + void refreshData() + }, refreshIntervalMs) + + return () => { + clearInterval(interval) + } + }, [refreshData, refreshIntervalMs]) + + const selectedBalance = activeTab === 'deposit' ? userStats.walletBalance : userStats.currentStake + const parsedAmount = parseAmount(inputAmount) + + const inputError = useMemo(() => { + if (!inputAmount.trim()) return null + if (!parsedAmount) return 'Invalid amount' + if (parsedAmount <= 0n) return 'Amount must be greater than zero' + if (parsedAmount > selectedBalance) { + return activeTab === 'deposit' ? 'Insufficient wallet balance' : 'Amount exceeds staked balance' + } + return null + }, [activeTab, inputAmount, parsedAmount, selectedBalance]) + + const handleConnect = useCallback(async () => { + if (connectWallet) { + connectWallet() + return + } + await connect() + }, [connect, connectWallet]) + + const handleSetMax = useCallback(() => { + setInputAmount(formatEther(selectedBalance)) + }, [selectedBalance]) + + const handleDepositWithdraw = useCallback(async () => { + if (!sdk || !parsedAmount || inputError) return + + const actionLabel = activeTab === 'deposit' ? 'deposit' : 'withdrawal' + const toastId = createToast({ message: `Submitting ${actionLabel}...`, status: 'pending', duration: 0 }) + + try { + setTxPending(true) + if (activeTab === 'deposit') { + await sdk.stake(parsedAmount) + } else { + await sdk.unstake(parsedAmount) + } + updateToast(toastId, { + message: `${activeTab === 'deposit' ? 'Deposit' : 'Withdrawal'} completed`, + status: 'success', + duration: 4000, + }) + setInputAmount('') + await refreshData() + } catch (error) { + updateToast(toastId, { + message: error instanceof Error ? error.message : `Failed to process ${actionLabel}`, + status: 'error', + duration: 5000, + }) + } finally { + setTxPending(false) + } + }, [activeTab, inputError, parsedAmount, refreshData, sdk]) + + const handleClaimRewards = useCallback(async () => { + if (!sdk || userStats.unclaimedRewards <= 0n) return + + const toastId = createToast({ message: 'Claiming rewards...', status: 'pending', duration: 0 }) + + try { + setClaimPending(true) + await sdk.claimReward() + updateToast(toastId, { + message: 'Rewards claimed', + status: 'success', + duration: 4000, + }) + await refreshData() + } catch (error) { + updateToast(toastId, { + message: error instanceof Error ? error.message : 'Failed to claim rewards', + status: 'error', + duration: 5000, + }) + } finally { + setClaimPending(false) + } + }, [refreshData, sdk, userStats.unclaimedRewards]) + + return ( + + + + GoodDollar Savings + + Celo + + + + + + + + + {loading ? ( + + + + ) : !connected ? ( + + Connect your wallet to deposit and withdraw G$ from savings. + + + ) : ( + + + + {activeTab === 'deposit' ? 'Wallet Balance' : 'Staked Balance'}: {formatTokenAmount(selectedBalance)} G$ + + + + + + {inputError && {inputError}} + + + + + Unclaimed rewards + + + {formatTokenAmount(userStats.unclaimedRewards)} G$ + + )} + + {sdkError && {sdkError}} + + + + Savings statistics + + Total G$ staked + {formatTokenAmount(globalStats.totalStaked)} G$ + + + Annual APR + {formatPercent(globalStats.annualAPR)} + + + Your current stake + {formatTokenAmount(userStats.currentStake)} G$ + + + Your weekly rewards + {formatTokenAmount(userStats.userWeeklyRewards)} G$ + + + + + + ) +} + +export interface SavingsWidgetProps { + provider?: EIP1193Provider + connectWallet?: () => void + config?: GoodWidgetConfig + themeOverrides?: GoodWidgetThemeOverrides + defaultTheme?: 'light' | 'dark' + refreshIntervalMs?: number +} + +export function SavingsWidget({ + provider, + connectWallet, + themeOverrides, + config, + defaultTheme = 'light', + refreshIntervalMs = 30_000, +}: SavingsWidgetProps) { + return ( + + + + ) +} diff --git a/packages/savings-widget/src/index.ts b/packages/savings-widget/src/index.ts new file mode 100644 index 0000000..5f2913c --- /dev/null +++ b/packages/savings-widget/src/index.ts @@ -0,0 +1,2 @@ +export { SavingsWidget } from './SavingsWidget' +export type { SavingsWidgetProps, SavingsTab } from './SavingsWidget' diff --git a/packages/savings-widget/tsconfig.build.json b/packages/savings-widget/tsconfig.build.json new file mode 100644 index 0000000..54871c4 --- /dev/null +++ b/packages/savings-widget/tsconfig.build.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "paths": { + "react-native": ["./node_modules/react-native-web"] + } + }, + "include": ["src"] +} diff --git a/packages/savings-widget/tsconfig.json b/packages/savings-widget/tsconfig.json new file mode 100644 index 0000000..006b6f4 --- /dev/null +++ b/packages/savings-widget/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "paths": { + "@goodwidget/core": ["../core/src/index.ts"], + "@goodwidget/core/*": ["../core/src/*"], + "@goodwidget/ui": ["../ui/src/index.ts"], + "react-native": ["./node_modules/react-native-web"] + } + }, + "include": ["src"] +} diff --git a/packages/savings-widget/tsup.config.ts b/packages/savings-widget/tsup.config.ts new file mode 100644 index 0000000..511ca60 --- /dev/null +++ b/packages/savings-widget/tsup.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'tsup' + +export default defineConfig({ + entry: { + index: 'src/index.ts', + }, + format: ['esm', 'cjs'], + dts: true, + sourcemap: true, + clean: true, + tsconfig: 'tsconfig.build.json', + external: ['react', 'react-dom', 'react-native', 'react-native-web'], +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2aa2dac..284a996 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -167,6 +167,9 @@ importers: '@goodwidget/core': specifier: workspace:* version: link:../../packages/core + '@goodwidget/savings-widget': + specifier: workspace:* + version: link:../../packages/savings-widget '@goodwidget/ui': specifier: workspace:* version: link:../../packages/ui @@ -179,6 +182,9 @@ importers: react-native-web: specifier: ^0.19.13 version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + viem: + specifier: ^2.31.0 + version: 2.48.8(typescript@5.9.3) devDependencies: '@storybook/addon-essentials': specifier: ^8.6.17 @@ -329,6 +335,40 @@ importers: specifier: ^5.7.0 version: 5.9.3 + packages/savings-widget: + dependencies: + '@goodsdks/savings-sdk': + specifier: ^1.0.0 + version: 1.0.0(@swc/core@1.15.30)(postcss@8.5.8)(typescript@5.9.3)(viem@2.48.8(typescript@5.9.3))(wagmi@3.6.9(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)(typescript@5.9.3)(viem@2.48.8(typescript@5.9.3)))(yaml@2.8.3) + '@goodwidget/core': + specifier: workspace:* + version: link:../core + '@goodwidget/ui': + specifier: workspace:* + version: link:../ui + viem: + specifier: ^2.31.0 + version: 2.48.8(typescript@5.9.3) + devDependencies: + '@types/react': + specifier: ^18.3.0 + version: 18.3.28 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.7(@types/react@18.3.28) + react: + specifier: ^18.3.0 + version: 18.3.1 + react-dom: + specifier: ^18.3.0 + version: 18.3.1(react@18.3.1) + tsup: + specifier: ^8.4.0 + version: 8.5.1(@swc/core@1.15.30)(postcss@8.5.8)(typescript@5.9.3)(yaml@2.8.3) + typescript: + specifier: ^5.7.0 + version: 5.9.3 + packages/ui: dependencies: '@tamagui/animations-react-native': @@ -376,6 +416,9 @@ packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + '@adraffy/ens-normalize@1.11.1': + resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} + '@babel/code-frame@7.10.4': resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} @@ -1577,6 +1620,12 @@ packages: '@floating-ui/utils@0.2.11': resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + '@goodsdks/savings-sdk@1.0.0': + resolution: {integrity: sha512-SoVkmT0bBjwA+COoP7b39CXqKLY4ds/Mbn6GrZlrmSSXffUgAt+lVZnxQNwFvfpxTxtavyoZXVisQep1YmQ0BA==} + peerDependencies: + viem: '*' + wagmi: '*' + '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -1753,6 +1802,18 @@ packages: '@motionone/utils@10.18.0': resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + '@noble/ciphers@1.3.0': + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.1': + resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2083,6 +2144,15 @@ packages: cpu: [x64] os: [win32] + '@scure/base@1.2.6': + resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + + '@scure/bip32@1.7.0': + resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} + + '@scure/bip39@1.6.0': + resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + '@segment/loosely-validate-event@2.0.0': resolution: {integrity: sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==} @@ -2989,6 +3059,14 @@ packages: react-dom: '*' react-native: '*' + '@tanstack/query-core@5.100.9': + resolution: {integrity: sha512-SJSFw1S8+kQ0+knv/XGfrbocWoAlT7vDKsSImtLx3ZPQmEcR46hkDjLSvynSy25N8Ms4tIEini1FuBd5k7IscQ==} + + '@tanstack/react-query@5.100.9': + resolution: {integrity: sha512-Oa44XkaI3kCNN6ME0KByU3xT3SEUNOMfZpHxL6+wFoTm+OeUFYHKdeYVe0aOXlRDm/f15sgLwEt2HDorIdW8+A==} + peerDependencies: + react: ^18 || ^19 + '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -3204,6 +3282,55 @@ packages: '@vitest/utils@2.1.9': resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + '@wagmi/connectors@8.0.9': + resolution: {integrity: sha512-/wLCFLeQbZRRLeYKxfp1s+Ukcm3PW/cy0HIqS4vbGsKRAH/NAGFSGqsIj7g7Xz11hI5dzQ6N2/o2fuUd8uQZSw==} + peerDependencies: + '@base-org/account': ^2.5.1 + '@coinbase/wallet-sdk': ^4.3.6 + '@metamask/connect-evm': ~1.0.0 + '@safe-global/safe-apps-provider': ~0.18.6 + '@safe-global/safe-apps-sdk': ^9.1.0 + '@wagmi/core': 3.4.8 + '@walletconnect/ethereum-provider': ^2.21.1 + accounts: ~0.8.1 + porto: ~0.2.35 + typescript: '>=5.7.3' + viem: 2.x + peerDependenciesMeta: + '@base-org/account': + optional: true + '@coinbase/wallet-sdk': + optional: true + '@metamask/connect-evm': + optional: true + '@safe-global/safe-apps-provider': + optional: true + '@safe-global/safe-apps-sdk': + optional: true + '@walletconnect/ethereum-provider': + optional: true + accounts: + optional: true + porto: + optional: true + typescript: + optional: true + + '@wagmi/core@3.4.8': + resolution: {integrity: sha512-G/t3WGCUYY/T86MBzr9mAsyAjuZP8UfiFbdDL+/klUs6oBqLavSxhygvjMnOpTDKOrPqWWGh00wubwBx4rxZEg==} + peerDependencies: + '@tanstack/query-core': '>=5.0.0' + accounts: ~0.8.1 + typescript: '>=5.7.3' + viem: 2.x + peerDependenciesMeta: + '@tanstack/query-core': + optional: true + accounts: + optional: true + typescript: + optional: true + '@xmldom/xmldom@0.7.13': resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} engines: {node: '>=10.0.0'} @@ -3213,6 +3340,17 @@ packages: resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} engines: {node: '>=10.0.0'} + abitype@1.2.3: + resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -4150,6 +4288,9 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} @@ -4816,6 +4957,11 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + isows@1.0.7: + resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==} + peerDependencies: + ws: '*' + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -5497,6 +5643,14 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + mipd@0.0.7: + resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -5658,6 +5812,14 @@ packages: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} + ox@0.14.20: + resolution: {integrity: sha512-rby38C3nDn8eQkf29Zgw4hkCZJ64Qqi0zRPWL8ENUQ7JVuoITqrVtwWQgM/He19SCMUEc7hS/Sjw0jIOSLJhOw==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} @@ -6818,6 +6980,11 @@ packages: '@types/react': optional: true + use-sync-external-store@1.4.0: + resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: @@ -6857,6 +7024,14 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + viem@2.48.8: + resolution: {integrity: sha512-Xj3Nrt66SKtn06kczU91ELn9Difr84ZM5A62BTlaisT5lpgt058i2mBkfMZCXHGb1ocOLjzC2ztPhD0Lvky7uQ==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + vite@6.4.1: resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -6906,6 +7081,17 @@ packages: w-json@1.3.11: resolution: {integrity: sha512-Xa8vTinB5XBIYZlcN8YyHpE625pBU6k+lvCetTQM+FKxRtLJxAY9zUVZbRqCqkMeEGbQpKvGUzwh4wZKGem+ag==} + wagmi@3.6.9: + resolution: {integrity: sha512-9Lrkf7bXyhG/aSK/65V2t+44Kti2m9tqaTS2vQTCeUgfaYlmFfx1RDUm4f8me5zcYclAo1XbJjm5x99dw7xAiA==} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + typescript: '>=5.7.3' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + wait-on@7.2.0: resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} engines: {node: '>=12.0.0'} @@ -7020,6 +7206,18 @@ packages: utf-8-validate: optional: true + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.20.0: resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} @@ -7093,12 +7291,32 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zustand@5.0.0: + resolution: {integrity: sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + snapshots: '@0no-co/graphql.web@1.2.0': {} '@adobe/css-tools@4.4.4': {} + '@adraffy/ens-normalize@1.11.1': {} + '@babel/code-frame@7.10.4': dependencies: '@babel/highlight': 7.25.9 @@ -8547,6 +8765,21 @@ snapshots: '@floating-ui/utils@0.2.11': {} + '@goodsdks/savings-sdk@1.0.0(@swc/core@1.15.30)(postcss@8.5.8)(typescript@5.9.3)(viem@2.48.8(typescript@5.9.3))(wagmi@3.6.9(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)(typescript@5.9.3)(viem@2.48.8(typescript@5.9.3)))(yaml@2.8.3)': + dependencies: + tsup: 8.5.1(@swc/core@1.15.30)(postcss@8.5.8)(typescript@5.9.3)(yaml@2.8.3) + viem: 2.48.8(typescript@5.9.3) + wagmi: 3.6.9(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)(typescript@5.9.3)(viem@2.48.8(typescript@5.9.3)) + transitivePeerDependencies: + - '@microsoft/api-extractor' + - '@swc/core' + - jiti + - postcss + - supports-color + - tsx + - typescript + - yaml + '@hapi/hoek@9.3.0': {} '@hapi/topo@5.1.0': @@ -8848,6 +9081,14 @@ snapshots: hey-listen: 1.0.8 tslib: 2.8.1 + '@noble/ciphers@1.3.0': {} + + '@noble/curves@1.9.1': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/hashes@1.8.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -9264,6 +9505,19 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.60.0': optional: true + '@scure/base@1.2.6': {} + + '@scure/bip32@1.7.0': + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + + '@scure/bip39@1.6.0': + dependencies: + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + '@segment/loosely-validate-event@2.0.0': dependencies: component-type: 1.2.2 @@ -10987,6 +11241,13 @@ snapshots: - sf-symbols-typescript - zeego + '@tanstack/query-core@5.100.9': {} + + '@tanstack/react-query@5.100.9(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.100.9 + react: 18.3.1 + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.29.0 @@ -11261,10 +11522,36 @@ snapshots: loupe: 3.2.1 tinyrainbow: 1.2.0 + '@wagmi/connectors@8.0.9(@wagmi/core@3.4.8(@tanstack/query-core@5.100.9)(@types/react@18.3.28)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(typescript@5.9.3)))(typescript@5.9.3)(viem@2.48.8(typescript@5.9.3))': + dependencies: + '@wagmi/core': 3.4.8(@tanstack/query-core@5.100.9)(@types/react@18.3.28)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(typescript@5.9.3)) + viem: 2.48.8(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@wagmi/core@3.4.8(@tanstack/query-core@5.100.9)(@types/react@18.3.28)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(typescript@5.9.3))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.9.3) + viem: 2.48.8(typescript@5.9.3) + zustand: 5.0.0(@types/react@18.3.28)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + optionalDependencies: + '@tanstack/query-core': 5.100.9 + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/react' + - immer + - react + - use-sync-external-store + '@xmldom/xmldom@0.7.13': {} '@xmldom/xmldom@0.8.11': {} + abitype@1.2.3(typescript@5.9.3): + optionalDependencies: + typescript: 5.9.3 + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -12282,6 +12569,8 @@ snapshots: event-target-shim@5.0.1: {} + eventemitter3@5.0.1: {} + execa@1.0.0: dependencies: cross-spawn: 6.0.6 @@ -13016,6 +13305,10 @@ snapshots: isobject@3.0.1: {} + isows@1.0.7(ws@8.18.3): + dependencies: + ws: 8.18.3 + istanbul-lib-coverage@3.2.2: {} istanbul-lib-hook@3.0.0: @@ -14116,6 +14409,10 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + mipd@0.0.7(typescript@5.9.3): + optionalDependencies: + typescript: 5.9.3 + mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -14295,6 +14592,21 @@ snapshots: os-homedir@1.0.2: {} + ox@0.14.20(typescript@5.9.3): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.9.3) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + p-finally@1.0.0: {} p-limit@2.3.0: @@ -15553,6 +15865,10 @@ snapshots: optionalDependencies: '@types/react': 18.3.28 + use-sync-external-store@1.4.0(react@18.3.1): + dependencies: + react: 18.3.1 + use-sync-external-store@1.6.0(react@18.3.1): dependencies: react: 18.3.1 @@ -15585,6 +15901,23 @@ snapshots: vary@1.1.2: {} + viem@2.48.8(typescript@5.9.3): + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.9.3) + isows: 1.0.7(ws@8.18.3) + ox: 0.14.20(typescript@5.9.3) + ws: 8.18.3 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + vite@6.4.1(@types/node@25.5.0)(lightningcss@1.27.0)(terser@5.46.1)(yaml@2.8.3): dependencies: esbuild: 0.25.12 @@ -15606,6 +15939,29 @@ snapshots: w-json@1.3.11: {} + wagmi@3.6.9(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)(typescript@5.9.3)(viem@2.48.8(typescript@5.9.3)): + dependencies: + '@tanstack/react-query': 5.100.9(react@18.3.1) + '@wagmi/connectors': 8.0.9(@wagmi/core@3.4.8(@tanstack/query-core@5.100.9)(@types/react@18.3.28)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(typescript@5.9.3)))(typescript@5.9.3)(viem@2.48.8(typescript@5.9.3)) + '@wagmi/core': 3.4.8(@tanstack/query-core@5.100.9)(@types/react@18.3.28)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(typescript@5.9.3)) + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + viem: 2.48.8(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@base-org/account' + - '@coinbase/wallet-sdk' + - '@metamask/connect-evm' + - '@safe-global/safe-apps-provider' + - '@safe-global/safe-apps-sdk' + - '@tanstack/query-core' + - '@types/react' + - '@walletconnect/ethereum-provider' + - accounts + - immer + - porto + wait-on@7.2.0: dependencies: axios: 1.15.2 @@ -15723,6 +16079,8 @@ snapshots: ws@7.5.10: {} + ws@8.18.3: {} + ws@8.20.0: {} xcode@3.0.1: @@ -15785,3 +16143,9 @@ snapshots: yargs-parser: 21.1.1 yocto-queue@0.1.0: {} + + zustand@5.0.0(@types/react@18.3.28)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)): + optionalDependencies: + '@types/react': 18.3.28 + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) diff --git a/tests/demo/smoke.spec.ts b/tests/demo/smoke.spec.ts index 741b22b..85babf8 100644 --- a/tests/demo/smoke.spec.ts +++ b/tests/demo/smoke.spec.ts @@ -85,6 +85,13 @@ test('ClaimWidget/TealBrand story renders', async ({ page }) => { await page.screenshot({ path: 'test-results/story-claimwidget-teal.png', fullPage: true }) }) +test('SavingsWidget/Default story renders', async ({ page }) => { + await gotoStory(page, 'widgets-savingswidget--default') + const frame = getStoryFrame(page) + await expect(frame.getByTestId('SavingsWidget-default')).toBeVisible() + await page.screenshot({ path: 'test-results/story-savingswidget-default.png', fullPage: true }) +}) + test('ThemePlayground/DefaultPreset story renders', async ({ page }) => { await gotoStory(page, 'theme-themeplayground--default-preset') const frame = getStoryFrame(page) From 29181664a2ede3444dbdcae3abb072ba2b669417 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 4 May 2026 14:31:45 +0000 Subject: [PATCH 3/5] chore: refine savings-widget SDK typing and validation Agent-Logs-Url: https://github.com/GoodDollar/GoodWidget/sessions/5d2d03e8-2b26-4f0c-917d-003dc813df8f Co-authored-by: sirpy <671095+sirpy@users.noreply.github.com> --- packages/savings-widget/src/SavingsWidget.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/savings-widget/src/SavingsWidget.tsx b/packages/savings-widget/src/SavingsWidget.tsx index c676cc6..79ba0a3 100644 --- a/packages/savings-widget/src/SavingsWidget.tsx +++ b/packages/savings-widget/src/SavingsWidget.tsx @@ -113,12 +113,11 @@ function SavingsWidgetInner({ connectWallet, refreshIntervalMs }: SavingsWidgetI useEffect(() => { try { + const sdkPublicClient = publicClient as SavingsSdkPublicClient + const sdkWalletClient = walletClient as SavingsSdkWalletClient const nextSdk = walletClient - ? new GooddollarSavingsSDK( - publicClient as unknown as SavingsSdkPublicClient, - walletClient as unknown as SavingsSdkWalletClient, - ) - : new GooddollarSavingsSDK(publicClient as unknown as SavingsSdkPublicClient) + ? new GooddollarSavingsSDK(sdkPublicClient, sdkWalletClient) + : new GooddollarSavingsSDK(sdkPublicClient) setSdk(nextSdk) setSdkError(null) } catch (error) { From f7374c3eaa5361367d2150ab9a4a2ebb4eb4771f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 4 May 2026 14:34:00 +0000 Subject: [PATCH 4/5] chore: polish savings-widget state naming consistency Agent-Logs-Url: https://github.com/GoodDollar/GoodWidget/sessions/5d2d03e8-2b26-4f0c-917d-003dc813df8f Co-authored-by: sirpy <671095+sirpy@users.noreply.github.com> --- packages/savings-widget/src/SavingsWidget.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/savings-widget/src/SavingsWidget.tsx b/packages/savings-widget/src/SavingsWidget.tsx index 79ba0a3..9abe7b0 100644 --- a/packages/savings-widget/src/SavingsWidget.tsx +++ b/packages/savings-widget/src/SavingsWidget.tsx @@ -135,8 +135,8 @@ function SavingsWidgetInner({ connectWallet, refreshIntervalMs }: SavingsWidgetI setGlobalStats(stats) if (connected) { - const nextUserStats = await sdk.getUserStats() - setUserStats(nextUserStats) + const userStatsResult = await sdk.getUserStats() + setUserStats(userStatsResult) } else { setUserStats(DEFAULT_USER_STATS) } From e4d2c8625f8af6ef765c6535d8a7aa50955d129c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 4 May 2026 15:01:44 +0000 Subject: [PATCH 5/5] docs: refresh savings-widget UI screenshot Agent-Logs-Url: https://github.com/GoodDollar/GoodWidget/sessions/9fef628c-c6d6-42ab-80e8-22eea495c5bb Co-authored-by: sirpy <671095+sirpy@users.noreply.github.com> --- docs/assets/savings-widget-ui.png | Bin 0 -> 87152 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/assets/savings-widget-ui.png diff --git a/docs/assets/savings-widget-ui.png b/docs/assets/savings-widget-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..157b7be4da9ba287f7c512d959b1c03a6d1a10c6 GIT binary patch literal 87152 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 literal 0 HcmV?d00001