fix(#390): fix CI failures and add dark mode contrast - #391
Merged
phertyameen merged 3 commits intoJul 28, 2026
Conversation
|
@khaadish is attempting to deploy a commit to the aminubabafatima8-gmailcom's projects Team on Vercel. A member of the Team first needs to authorize it. |
Part 1 - CI fixes:
- confirm-step.tsx: replace dual submitted/submitting booleans with a
submitPhase enum ('idle' | 'submitting' | 'success') so state transitions
are unambiguous and the success screen can never reference an undeclared
variable
- chain-selector.tsx: add optional selectedChainId prop (defaults to
'stellar') so call sites that omit it satisfy the type contract
- tsconfig.json: switch types from ["jest","node"] to ["vitest/globals","node"]
to complete the Jest->Vitest migration; tsc now resolves expect() against
Vitest's matcher interface which @testing-library/jest-dom/vitest augments
Part 2 - dark mode contrast:
- globals.css: enable color-scheme light dark; add dark body background/text
- Every component that shipped a light-mode color now has an explicit dark:
counterpart: page-shell, chain-selector, claim-status-card (all panels),
send-form step breadcrumb, connect-step, details-step, confirm-step,
share-prompt, rate-limit-banner, homepage
All three CI steps pass after these changes:
npm run typecheck - 0 errors
npm test - 24/24 tests pass
npm run build - successful Next.js production build
Closes bridgelet-org#390
khaadish
force-pushed
the
fix/390-ci-and-dark-mode-contrast
branch
from
July 28, 2026 17:51
3fb36d8 to
2ab66bd
Compare
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…pboard
- Replace user.click() with synchronous fireEvent.click() to avoid
fake-timer deadlock in userEvent v14
- Replace Object.assign(navigator, { clipboard }) with
Object.defineProperty(navigator, 'clipboard', { ..., configurable: true })
to avoid TypeError on jsdom's getter-only property
- Add Object.defineProperty for clipboard in 'Copied!' test with a
resolving mock so the component reaches setCopied(true)
- Add afterEach(() => vi.useRealTimers()) to prevent timer leakage
between tests after a timeout
phertyameen
approved these changes
Jul 28, 2026
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.
Closes #390
Summary
Fixes both problems tracked in #390: the three CI failures and the dark-mode contrast regressions.
Part 1 — CI fixes
1a ·
confirm-step.tsx— replace stale state withsubmitPhaseenumReplaced the dual
submitted/submittingboolean state with a singleSubmitPhasediscriminated union ('idle' | 'submitting' | 'success'). The success screen gates onsubmitPhase === 'success'and buttons disable onsubmitPhase === 'submitting'. This eliminates the crash described in the issue and makes state transitions explicit.1b ·
chain-selector.tsx— makeselectedChainIdoptionalAdded a
ChainSelectorPropstype withselectedChainId?: string(defaults to'stellar'). The prop is wired to the<select>value. Call sites that omit the prop continue to work; the type system no longer rejects them.1c ·
tsconfig.json— switch from Jest to Vitest typesChanged
"types": ["jest", "node"]→"types": ["vitest/globals", "node"]. This completes the Jest→Vitest migration:tscnow resolvesexpect()against Vitest's matcher interface, which@testing-library/jest-dom/vitestcorrectly augments withtoBeInTheDocumentetc.Part 2 — Dark mode contrast
Added explicit
dark:Tailwind variants to every text/background color pairing in the components listed below. No component now silently inherits an unintended dark-mode default.app/globals.csscolor-scheme: light dark; body getsdark:bg-slate-950 dark:text-slate-100components/page-shell.tsxapp/page.tsxcomponents/chain-selector.tsxcomponents/claim-status-card.tsxcomponents/send-form/index.tsxcomponents/send-form/steps/connect-step.tsxcomponents/send-form/steps/details-step.tsxcomponents/send-form/steps/confirm-step.tsxcomponents/share-prompt.tsxcomponents/rate-limit-banner.tsxVerification