Repository navigation
fix(streaming-widget): register light/dark surface sub-themes, use WidgetTabs header, and gate off-Base SUP reserve (#255, #263) - #291
Open
cyzcz wants to merge 1 commit into
Conversation
cyzcz
requested review from
a team and
blueogin
and
a balanced review from Copilot
November 7, 2026 09:38
15 tasks
24 tasks
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Named surface themes ignore effective token overrides, and whole-card opacity reduces small-text contrast below the required 4.5:1 ratio.
2 open issues
What changed in this PR
Addresses streaming-widget theme and UI follow-ups from #255 and #263 by registering named card surfaces, adopting the shared header, and clarifying off-Base SUP reserve availability.
Changes:
- Registers light/dark themes for six card-derived surfaces and wires configuration into both widget entry points.
- Uses
WidgetTabsfor the shared header and network display. - Adds off-Base reserve guidance and corresponding test assertions while retaining read-only data.
| File | Description |
|---|---|
tests/widgets/streaming-widget/states.spec.ts |
Asserts off-Base badge and guidance text. |
packages/streaming-widget/src/StreamingWidget.tsx |
Applies widget configuration to runtime and preview providers. |
packages/streaming-widget/src/index.ts |
Exports widget configuration helpers and defaults. |
packages/streaming-widget/src/config.ts |
Defines light/dark surface themes and configuration merging. |
packages/streaming-widget/src/components/StreamingWidgetView.tsx |
Uses the shared header and themed root background. |
packages/streaming-widget/src/components/shared.tsx |
Connects named cards to shared surface styling. |
packages/streaming-widget/src/components/BalancesTab.tsx |
Adds off-Base reserve messaging, dimming, and spinner gating. |
Review effort: Balanced
| </BalanceCard> | ||
|
|
||
| <BalanceCard> | ||
| <BalanceCard opacity={isBaseChain ? 1 : 0.75}> |
| import type { GoodWidgetConfig } from '@goodwidget/core' | ||
| import { defaultTokenPreset, mergeOverrideMaps } from '@goodwidget/ui' | ||
|
|
||
| const color = defaultTokenPreset.tokens.color |
…dgetTabs header, and gate off-Base SUP reserve (GoodDollar#255, GoodDollar#263) Co-authored-by: Cursor <cursoragent@cursor.com>
cyzcz
force-pushed
the
fix/streaming-widget-light-theme-and-qa-255
branch
from
November 8, 2026 15:02
05ab711 to
2d08428
Compare
Open
4 tasks
This branch is waiting to be deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Completes the remaining light/dark surface registration and QA sweep follow-ups for
@goodwidget/streaming-widget(#255, #263, #36, #254).Closes #255
Changes
light_*anddark_*component sub-themes (packages/streaming-widget/src/config.ts):streamingWidgetConfig,streamingSurfaceTheme, andcreateStreamingWidgetConfig(config)registering bothlight_*anddark_*themes for all 6Card-derived surfaces (StreamRow,PoolRow,BalanceCard,EmptyStateCard,ErrorStateCard,SetStreamFormCard).createStreamingWidgetConfig(config)intoStreamingWidgetandStreamingWidgetPreview, and spreadextends: 'Card'+...streamingSurfaceThemeincomponents/shared.tsx.packages/streaming-widget/src/components/StreamingWidgetView.tsx):backgroundColor="$background"to the rootYStackcontainer and delegated theGoodDollarheader + chain display name badge (getChainDisplayName(chainId)) to<WidgetTabs chainId={state.chainId ?? undefined} />, fixing the exploratory QA finding where raw"Chain 1"was shown instead of the network name.packages/streaming-widget/src/components/BalancesTab.tsx):chainId !== STREAMING_CHAINS.BASE,SUP Reservedisplays aBase onlybadge and"Switch to Base to manage SUP reserve lockers."guidance with dimmed opacity (0.75) while keeping read-only Base data visible.Verification
pnpm --filter @goodwidget/ui --filter @goodwidget/core --filter @goodwidget/embed --filter @goodwidget/streaming-widget build(ESM, CJS, DTS passing)pnpm --filter @goodwidget/streaming-widget lint(0 errors, 0 warnings)