Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
f3e8e69
[BountyCoder] Add Storybook QA fixtures for bridging-widget
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
8a4dbff
[BountyCoder] Add Storybook QA fixtures for bridging-widget
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
43b7aba
[BountyCoder] Add Storybook QA fixtures for bridging-widget
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
287e2e0
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
5ef8066
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
d3324c8
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
ea6f9c3
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
12eeef1
[BountyCoder] Wire amount entry and fee breakdown into bridging-widge…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
c968825
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
8602457
[BountyCoder] Wire amount entry and fee breakdown into bridging-widge…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
ef6c49b
[BountyCoder] Add Review and Confirm/Submit flow to bridging widget (…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
7b6a794
[BountyCoder] Wire amount entry and fee breakdown into bridging-widge…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
ee2d9a4
[BountyCoder] feat(bridging-widget): wire History tab to BridgingSDK …
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
87dc784
[BountyCoder] Wire amount entry and fee breakdown into bridging-widge…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
76df1eb
[BountyCoder] Add Review and Confirm/Submit flow to bridging widget (…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
4780e7f
[BountyCoder] Wire amount entry and fee breakdown into bridging-widge…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
4bba98d
[BountyCoder] Wire amount entry and fee breakdown into bridging-widge…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
1176e19
[BountyCoder] Add Review and Confirm/Submit flow to bridging widget (…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
515ec10
[BountyCoder] feat(bridging-widget): wire History tab to BridgingSDK …
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
d3fb878
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
2469c1d
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
88047e8
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
4bea3a2
[BountyCoder] Wire amount entry and fee breakdown into bridging-widge…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
49d4ee5
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
fc79551
[BountyCoder] Add Review and Confirm/Submit flow to bridging widget (…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
0539aaf
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
bf4b3ce
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
c5bcb0b
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
4de4587
[BountyCoder] Wire FAQ tab content (step 9)
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
e64571f
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
68b7464
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
c6cd530
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
e90e232
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
bc822c4
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
469f41e
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
dc3c540
[BountyCoder] Scaffold bridging widget shell: wallet gate, tab layout…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
279e81a
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
b4b460c
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
090c0da
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
9e3baf2
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
6991abe
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
691b510
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
8911eea
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
d638fa3
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
dd6ae6c
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
c594ccf
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
1bd0c72
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
6c3ca76
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
03e2cfc
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
6dcc4af
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
b849155
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
6e65d46
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
2269971
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
1d916e6
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
5130fdc
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
9ffd06f
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
5f9e43c
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
bcc44bd
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
ae7bc52
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
07e639f
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
2e23ef3
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
8bb22ba
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
fc996ef
[BountyCoder] test(bridging-widget): add Playwright spec + baseline s…
goodbounties-nanoclaw-agent[bot] Oct 13, 2026
3d56ca5
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
26734e1
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
c4c92cf
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
78ad625
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
fa4b615
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
ce31c8d
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
9872b7b
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
17d2dfb
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
622157b
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
cd87662
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
49f0f9c
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
186bf6b
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
e7e5af7
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
1123bd2
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
ece3333
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
339b9c1
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
c687628
[BountyCoder] fix(bridging-widget): History tab fixes (grouping key, …
goodbounties-nanoclaw-agent[bot] Oct 16, 2026
a5449cf
Merge branch 'main' of github.com:GoodDollar/GoodWidget into feat/gw2…
L03TJ3 Oct 27, 2026
cf77f38
Merge branch 'main' of github.com:GoodDollar/GoodWidget into feat/gw2…
L03TJ3 Oct 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions examples/storybook/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"@goodwidget/goodreserve-widget": "workspace:*",
"@goodwidget/governance-widget": "workspace:*",
"@goodwidget/streaming-widget": "workspace:*",
"@goodwidget/bridging-widget": "workspace:*",
"@goodwidget/staking-migration-widget": "workspace:*",
"@goodwidget/ai-credits-widget": "workspace:*",
"@goodwidget/gooddata-widget": "workspace:*",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
import type { Meta, StoryObj } from '@storybook/react'
import { BridgingWidget } from '@goodwidget/bridging-widget'
import {
BelowMinAmountStory,
ConfigErrorStory,
ConfigLoadingStory,
CustodialLocalFixtureStory,
FaqTabStory,
HistoryDetailModalOpenStory,
HistoryEmptyStory,
HistoryErrorStory,
HistoryLoadingStory,
HistoryPopulatedStory,
InjectedWalletStory,
InsufficientBalanceStory,
LightThemePopulatedStory,
NeedsApprovalStory,
NoWalletStory,
QuoteErrorStory,
QuoteLoadingStory,
ReadyToBridgeStory,
ReviewOpenStory,
RouteNotSupportedStory,
SubmissionApprovingStory,
SubmissionBridgingStory,
SubmissionCompletedStory,
SubmissionFailedApprovingStory,
SubmissionFailedBridgingStory,
WrongChainStory,
} from '../helpers/bridgingWidgetStories'
import { BRAND_PRESET_OPTIONS, brandPresetOverrides, type BrandPreset } from '../helpers/themeOverridePresets'

interface BridgingWidgetQAArgs {
defaultTheme: 'light' | 'dark'
brandPreset: BrandPreset
}

const meta: Meta<BridgingWidgetQAArgs> = {
title: 'QA/BridgingWidget/Runtime Fixtures',
component: BridgingWidget,
tags: ['autodocs', 'qa'],
parameters: { layout: 'padded' },
argTypes: {
defaultTheme: {
control: 'radio',
options: ['dark', 'light'],
description: 'Base theme applied via the widget’s own defaultTheme prop.',
},
brandPreset: {
control: 'select',
options: BRAND_PRESET_OPTIONS,
description: 'Sample host-branding themeOverrides preset.',
},
},
args: {
defaultTheme: 'dark',
brandPreset: 'None',
},
}

export default meta
type Story = StoryObj<BridgingWidgetQAArgs>

export const CustodialLocalFixture: Story = {
render: ({ defaultTheme, brandPreset }) => (
<CustodialLocalFixtureStory
defaultTheme={defaultTheme}
themeOverrides={brandPresetOverrides(brandPreset)}
/>
),
}

export const InjectedWallet: Story = {
render: ({ defaultTheme, brandPreset }) => (
<InjectedWalletStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const NoWallet: Story = {
render: ({ defaultTheme, brandPreset }) => (
<NoWalletStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const WrongChain: Story = {
render: ({ defaultTheme, brandPreset }) => (
<WrongChainStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const RouteNotSupported: Story = {
render: ({ defaultTheme, brandPreset }) => (
<RouteNotSupportedStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const ConfigLoading: Story = {
render: ({ defaultTheme, brandPreset }) => (
<ConfigLoadingStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const ConfigError: Story = {
render: ({ defaultTheme, brandPreset }) => (
<ConfigErrorStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const QuoteLoading: Story = {
render: ({ defaultTheme, brandPreset }) => (
<QuoteLoadingStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const QuoteError: Story = {
render: ({ defaultTheme, brandPreset }) => (
<QuoteErrorStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const BelowMinAmount: Story = {
render: ({ defaultTheme, brandPreset }) => (
<BelowMinAmountStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const InsufficientBalance: Story = {
render: ({ defaultTheme, brandPreset }) => (
<InsufficientBalanceStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const NeedsApproval: Story = {
render: ({ defaultTheme, brandPreset }) => (
<NeedsApprovalStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const ReadyToBridge: Story = {
render: ({ defaultTheme, brandPreset }) => (
<ReadyToBridgeStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const ReviewOpen: Story = {
render: ({ defaultTheme, brandPreset }) => (
<ReviewOpenStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const SubmissionApproving: Story = {
render: ({ defaultTheme, brandPreset }) => (
<SubmissionApprovingStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const SubmissionBridging: Story = {
render: ({ defaultTheme, brandPreset }) => (
<SubmissionBridgingStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const SubmissionCompleted: Story = {
render: ({ defaultTheme, brandPreset }) => (
<SubmissionCompletedStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const SubmissionFailedApproving: Story = {
render: ({ defaultTheme, brandPreset }) => (
<SubmissionFailedApprovingStory
defaultTheme={defaultTheme}
themeOverrides={brandPresetOverrides(brandPreset)}
/>
),
}

export const SubmissionFailedBridging: Story = {
render: ({ defaultTheme, brandPreset }) => (
<SubmissionFailedBridgingStory
defaultTheme={defaultTheme}
themeOverrides={brandPresetOverrides(brandPreset)}
/>
),
}

export const HistoryLoading: Story = {
render: ({ defaultTheme, brandPreset }) => (
<HistoryLoadingStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const HistoryEmpty: Story = {
render: ({ defaultTheme, brandPreset }) => (
<HistoryEmptyStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const HistoryError: Story = {
render: ({ defaultTheme, brandPreset }) => (
<HistoryErrorStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const HistoryPopulated: Story = {
render: ({ defaultTheme, brandPreset }) => (
<HistoryPopulatedStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

export const HistoryDetailModalOpen: Story = {
render: ({ defaultTheme, brandPreset }) => (
<HistoryDetailModalOpenStory
defaultTheme={defaultTheme}
themeOverrides={brandPresetOverrides(brandPreset)}
/>
),
}

export const FaqTab: Story = {
render: ({ defaultTheme, brandPreset }) => (
<FaqTabStory defaultTheme={defaultTheme} themeOverrides={brandPresetOverrides(brandPreset)} />
),
}

/** Always mounts with defaultTheme="light" regardless of the control, to demonstrate the
* explicit light-theme branch; brandPreset still applies on top. */
export const LightThemePopulated: Story = {
render: ({ brandPreset }) => (
<LightThemePopulatedStory themeOverrides={brandPresetOverrides(brandPreset)} />
),
}
Loading
Loading