Context
Navbar's role selector casts the raw select value to any. These any casts hide real bugs -- replace with proper types (or unknown with a narrowing guard).
Where
- File:
apps/web/components/shared/Navbar.tsx
- Line: 128
Current Behavior
Explicit any cast at this line.
Expected Behavior
Narrow type (a union, an interface, or unknown with a guard).
Proposed Approach
- Look up the actual runtime shape (Freighter API types, Horizon SDK types, or your own domain types).
- Replace the
any with the proper type.
- If the value is genuinely dynamic, use
unknown and narrow with a typeof / in / schema-parse check.
- Run
tsc --noEmit.
Acceptance Criteria
Definition of Done
-
PR links back with Closes #<this-issue-number>.
-
CI is green (both Verify TypeScript Frontend & SDK and Verify Go Indexer & API jobs must pass).
-
Local verification:
-
pnpm --filter web exec tsc --noEmit clean
-
pnpm build succeeds
-
pnpm --filter web lint clean
-
pnpm --filter web test green
Related Issues
#210
Contributor Tips
- Web app lives in
apps/web/ (Next.js 15 App Router, TypeScript, Tailwind, shadcn).
- Shared SDK is
packages/sdk/. Rebuild with pnpm --filter @trusttrove/sdk build if you change it.
- Iterate locally with
pnpm --filter web dev -- connect Freighter to the Stellar testnet.
- Type-check with
pnpm --filter web exec tsc --noEmit before pushing.
- Run tests with
pnpm --filter web test.
Tech Stack
frontend
How to Claim
Comment .take (or say you're working on it) and open a PR with Closes #<this-issue-number> in the description.
Difficulty: Easy (complexity:low) -- used for Drips Wave point allocation.
Context
Navbar's role selector casts the raw select value to
any. Theseanycasts hide real bugs -- replace with proper types (orunknownwith a narrowing guard).Where
apps/web/components/shared/Navbar.tsxCurrent Behavior
Explicit
anycast at this line.Expected Behavior
Narrow type (a union, an interface, or
unknownwith a guard).Proposed Approach
anywith the proper type.unknownand narrow with atypeof/in/ schema-parse check.tsc --noEmit.Acceptance Criteria
anyon this lineDefinition of Done
PR links back with
Closes #<this-issue-number>.CI is green (both
Verify TypeScript Frontend & SDKandVerify Go Indexer & APIjobs must pass).Local verification:
pnpm --filter web exec tsc --noEmitcleanpnpm buildsucceedspnpm --filter web lintcleanpnpm --filter web testgreenRelated Issues
#210
Contributor Tips
apps/web/(Next.js 15 App Router, TypeScript, Tailwind, shadcn).packages/sdk/. Rebuild withpnpm --filter @trusttrove/sdk buildif you change it.pnpm --filter web dev-- connect Freighter to the Stellar testnet.pnpm --filter web exec tsc --noEmitbefore pushing.pnpm --filter web test.Tech Stack
frontend
How to Claim
Comment
.take(or say you're working on it) and open a PR withCloses #<this-issue-number>in the description.Difficulty: Easy (
complexity:low) -- used for Drips Wave point allocation.