Skip to content

Conversation

@MananTank
Copy link
Member

@MananTank MananTank commented Oct 23, 2025


PR-Codex overview

This PR focuses on updating theme colors and making minor UI tweaks across various React components in the thirdweb package. It improves styling consistency and enhances the user interface.

Detailed summary

  • Updated weight from 600 to 500 in multiple components.
  • Adjusted border from 2px to 1px in WalletSelector.tsx.
  • Increased size of QR code in ReceiveFunds.tsx from 310 to 350.
  • Added letterSpacing to text styles.
  • Modified padding and borderRadius in several components.
  • Created new theme stories in theme.stories.tsx for dark and light themes.
  • Refined TokenSelection loading skeleton structure.
  • Improved button styles and layout in WalletFiatSelection.tsx.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

Summary by CodeRabbit

  • New Features
    • Added Storybook theme showcase displaying color tokens and design system palette
  • Refactor
    • Replaced dynamic theme construction with explicit dark/light theme objects
  • Bug Fixes
    • Improved loading skeleton UI with better scrollable layout and visual consistency
  • Style
    • Updated button styling (radius, padding) and refined typography across components
    • Adjusted layout spacing in Bridge and wallet UIs; increased QR code size
  • Chores
    • Added changeset documentation for patch release

@linear
Copy link

linear bot commented Oct 23, 2025

@changeset-bot
Copy link

changeset-bot bot commented Oct 23, 2025

🦋 Changeset detected

Latest commit: f757e60

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 4 packages
Name Type
thirdweb Patch
@thirdweb-dev/nebula Patch
@thirdweb-dev/wagmi-adapter Patch
wagmi-inapp Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link

vercel bot commented Oct 23, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
docs-v2 Ready Ready Preview Comment Oct 23, 2025 11:29pm
nebula Ready Ready Preview Comment Oct 23, 2025 11:29pm
thirdweb_playground Ready Ready Preview Comment Oct 23, 2025 11:29pm
thirdweb-www Ready Ready Preview Comment Oct 23, 2025 11:29pm
wallet-ui Ready Ready Preview Comment Oct 23, 2025 11:29pm

@github-actions github-actions bot added packages SDK Involves changes to the thirdweb SDK labels Oct 23, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 23, 2025

Walkthrough

Exported concrete theme objects (darkThemeObj, lightThemeObj) and added a Storybook theme showcase. Multiple React UI components received styling and layout tweaks (spacing, radii, font weights, skeletons, QR size). A changeset file was added.

Changes

Cohort / File(s) Summary
Changeset & Theme Core
\.changeset/wise-actors-attack.md, packages/thirdweb/src/react/core/design-system/index.ts
Added a changeset file; replaced factory-based theme construction with explicit exported darkThemeObj and lightThemeObj, removed ThemeColors, darkColors, lightColors, and createThemeObj. Theme type and lightTheme/darkTheme helpers remain.
Theme Storybook
packages/thirdweb/src/stories/theme.stories.tsx
New Storybook story showing Dark and Light theme variants with ColorPairTest and HoverBg components to visualize color tokens, backgrounds, hover states, borders, and separators.
Bridge — Payment Selection (Fiat / Token / Wallet)
packages/thirdweb/src/react/web/ui/Bridge/payment-selection/FiatProviderSelection.tsx, packages/thirdweb/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx, packages/thirdweb/src/react/web/ui/Bridge/payment-selection/TokenSelection.tsx, packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx
Styling/layout updates only: removed custom theme usage and various borders, increased borderRadius (md→lg), adjusted paddings (added/removed), simplified layouts, replaced loading state with a scrollable container of 10 simplified skeleton rows, removed ChevronRightIcon/Spacer, consolidated wallet lists, and refactored card payment row to a single button with dashed border. No control-flow/data changes.
ConnectWallet — Selector / Entry / Screens
packages/thirdweb/src/react/web/ui/ConnectWallet/WalletEntryButton.tsx, packages/thirdweb/src/react/web/ui/ConnectWallet/WalletSelector.tsx, packages/thirdweb/src/react/web/ui/ConnectWallet/screens/ReceiveFunds.tsx
Typographic and spacing tweaks: wallet-name weight reduced (600→500 when nameOverride present), container padding adjusted (px="lg", py="md+"), ShowAllWalletsIcon border reduced (2px→1px), QR size increased (310→350), shortenString(address, false) used, and instruction text size set to sm.
Modal & Connecting UI
packages/thirdweb/src/react/web/ui/components/modalElements.tsx, packages/thirdweb/src/react/web/wallets/shared/ConnectingScreen.tsx
Presentation changes: ModalTitle and ConnectingScreen title fontWeight reduced (600→500); ModalTitle adds letterSpacing: "-0.025em".

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~40 minutes

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 18.18% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Description Check ⚠️ Warning The pull request description does not follow the required template structure. The description primarily contains HTML comments showing the empty template structure, followed by an auto-generated PR-Codex overview section. The three critical required sections—title (in the specified format), "Notes for the reviewer," and "How to test"—are either missing or not properly filled in with substantive author-provided content. While the PR-Codex summary provides a high-level overview of the changes, it does not replace the manual sections required by the template. The description lacks guidance on testing methodology, specific callouts for reviewers, and the properly formatted title expected within the PR description itself. The author should fill in the three required template sections with substantive content: provide the title in the format "[SDK/Dashboard/Portal] Feature/Fix: Concise title" (or include the Linear issue tag), add specific notes for reviewers about any important considerations or implementation details, and provide clear testing instructions (unit tests, playground testing steps, or other validation methods). The PR-Codex summary is helpful but should complement, not replace, the structured template sections.
Linked Issues Check ❓ Inconclusive The linked issue MNY-237 provides only a title "SDK: Update theme colors" with no detailed requirements, objectives, or acceptance criteria visible in the provided issue description. While the PR changes appear to align with the general theme of updating theme colors and making minor UI tweaks, without explicit requirements or detailed specifications in the linked issue, it is not possible to conclusively verify that all coding requirements have been met or that nothing essential is missing. The raw summary shows theme refactoring and styling updates, but without issue details, full compliance cannot be confirmed.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The pull request title "[MNY-237] SDK: Update theme colors, minor UI tweaks" accurately reflects the primary changes in the changeset. The title includes the issue tag format, clearly summarizes the main objectives (theme color updates and UI tweaks), and is concise and specific. A teammate scanning the repository history would understand that this PR focuses on theming and styling updates. The title is directly supported by the raw summary which shows theme object exports, multiple UI styling adjustments across components, and new theme stories.
Out of Scope Changes Check ✅ Passed The code changes in this PR are all within scope of the stated objectives "Update theme colors, minor UI tweaks." Changes include theme system refactoring (adding darkThemeObj and lightThemeObj exports), styling adjustments across UI components (padding, border-radius, font weights, letter spacing), QR code sizing adjustments, and new theme stories for showcasing the theme colors. All modifications are directly related to theming or UI visual presentation, with no unrelated bug fixes, feature implementations, or logic changes in unrelated areas detected.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch mny-237

Warning

Review ran into problems

🔥 Problems

Errors were encountered while retrieving linked issues.

Errors (1)
  • TEAM-0000: Entity not found: Issue - Could not find referenced Issue.

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Member Author


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • merge-queue - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@MananTank MananTank marked this pull request as ready for review October 23, 2025 21:49
@MananTank MananTank requested review from a team as code owners October 23, 2025 21:49
@codecov
Copy link

codecov bot commented Oct 23, 2025

Codecov Report

❌ Patch coverage is 35.18519% with 140 lines in your changes missing coverage. Please review.
✅ Project coverage is 54.89%. Comparing base (d5d5939) to head (f757e60).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...web/ui/Bridge/payment-selection/TokenSelection.tsx 0.00% 72 Missing ⚠️
...i/Bridge/payment-selection/WalletFiatSelection.tsx 1.61% 61 Missing ⚠️
...Bridge/payment-selection/FiatProviderSelection.tsx 0.00% 2 Missing ⚠️
.../src/react/web/ui/ConnectWallet/WalletSelector.tsx 0.00% 2 Missing ⚠️
...b/ui/Bridge/payment-selection/PaymentSelection.tsx 0.00% 1 Missing ⚠️
...c/react/web/ui/ConnectWallet/WalletEntryButton.tsx 0.00% 1 Missing ⚠️
.../src/react/web/wallets/shared/ConnectingScreen.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8305      +/-   ##
==========================================
+ Coverage   54.87%   54.89%   +0.01%     
==========================================
  Files         919      919              
  Lines       60707    60677      -30     
  Branches     4127     4125       -2     
==========================================
- Hits        33315    33310       -5     
+ Misses      27290    27265      -25     
  Partials      102      102              
Flag Coverage Δ
packages 54.89% <35.18%> (+0.01%) ⬆️
Files with missing lines Coverage Δ
...ges/thirdweb/src/react/core/design-system/index.ts 84.24% <100.00%> (ø)
...eact/web/ui/ConnectWallet/screens/ReceiveFunds.tsx 91.02% <100.00%> (+0.11%) ⬆️
...dweb/src/react/web/ui/components/modalElements.tsx 100.00% <100.00%> (ø)
...b/ui/Bridge/payment-selection/PaymentSelection.tsx 7.28% <0.00%> (ø)
...c/react/web/ui/ConnectWallet/WalletEntryButton.tsx 14.11% <0.00%> (ø)
.../src/react/web/wallets/shared/ConnectingScreen.tsx 10.00% <0.00%> (ø)
...Bridge/payment-selection/FiatProviderSelection.tsx 20.60% <0.00%> (-0.36%) ⬇️
.../src/react/web/ui/ConnectWallet/WalletSelector.tsx 9.15% <0.00%> (ø)
...i/Bridge/payment-selection/WalletFiatSelection.tsx 7.75% <1.61%> (+0.71%) ⬆️
...web/ui/Bridge/payment-selection/TokenSelection.tsx 5.40% <0.00%> (+0.11%) ⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 23, 2025

size-limit report 📦

Path Size Loading time (3g) Running time (snapdragon) Total time
thirdweb (esm) 64.55 KB (0%) 1.3 s (0%) 398 ms (+138.81% 🔺) 1.7 s
thirdweb (cjs) 365.82 KB (0%) 7.4 s (0%) 1.8 s (+15.23% 🔺) 9.1 s
thirdweb (minimal + tree-shaking) 5.73 KB (0%) 115 ms (0%) 236 ms (+2379.12% 🔺) 350 ms
thirdweb/chains (tree-shaking) 526 B (0%) 11 ms (0%) 102 ms (+1344.16% 🔺) 112 ms
thirdweb/react (minimal + tree-shaking) 19.09 KB (0%) 382 ms (0%) 217 ms (+2780.32% 🔺) 599 ms

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
packages/thirdweb/src/react/core/design-system/index.ts (1)

191-210: JSDoc typo: lightTheme docs mention "default dark theme"

Update the description to “default light theme”.

- * Create a custom light theme object by using the default dark theme as a base and applying overrides.
+ * Create a custom light theme object by using the default light theme as a base and applying overrides.
packages/thirdweb/src/react/web/ui/Bridge/payment-selection/TokenSelection.tsx (1)

63-69: Inline background overrides hover styles on secondary Button

Setting style.backgroundColor prevents variant="secondary" hover background from applying. Also disabled styling expects data-disabled.

- style={{
-   backgroundColor: theme.colors.tertiaryBg,
-   borderRadius: radius.lg,
-   padding: `${spacing.md} ${spacing.md}`,
-   textAlign: "left",
- }}
+ style={{
+   borderRadius: radius.lg,
+   padding: `${spacing.md} ${spacing.md}`,
+   textAlign: "left",
+ }}
+ data-disabled={!hasEnoughBalance}

If you want a tertiary look even when enabled, prefer variant="ghost-solid" with hoverBg, or add a new variant, rather than forcing inline background.

🧹 Nitpick comments (5)
packages/thirdweb/src/react/core/design-system/index.ts (2)

211-217: Avoid leaking mutable shared object references from lightTheme()

Returning the base object directly makes accidental mutation global. Return a shallow clone for safety.

 export function lightTheme(overrides?: ThemeOverrides): Theme {
   if (!overrides) {
-    return lightThemeObj;
+    return {
+      ...lightThemeObj,
+      colors: { ...lightThemeObj.colors },
+    };
   }
   return applyThemeOverrides(lightThemeObj, overrides);
 }

238-244: Mirror clone behavior in darkTheme()

Same rationale as lightTheme().

 export function darkTheme(overrides?: ThemeOverrides): Theme {
   if (!overrides) {
-    return darkThemeObj;
+    return {
+      ...darkThemeObj,
+      colors: { ...darkThemeObj.colors },
+    };
   }
   return applyThemeOverrides(darkThemeObj, overrides);
 }
packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx (1)

120-149: Optional: add accessible labels for clarity

Consider adding aria-labels so screen readers announce destination/action clearly, e.g., “Pay with card”.

- <Button
+ <Button
+   aria-label="Pay with card"
packages/thirdweb/src/react/web/ui/Bridge/payment-selection/TokenSelection.tsx (2)

88-104: Align price text weight with theme changes; use Text prop

Use weight={500} instead of inline 600 to match updated typography and component API.

- <Text
-   color="primaryText"
-   size="sm"
-   style={{ fontWeight: 600, textWrap: "nowrap" }}
->
+ <Text color="primaryText" size="sm" weight={500} style={{ textWrap: "nowrap" }}>

135-203: Skeleton list OK; minor optional improvements

Array.from({ length: 10 }) reads clearer than new Array(10).fill(0). Also consider reducing duplicate inline styles via a small helper or shared SkeletonRow component.

- {new Array(10).fill(0).map((_, i) => (
+ {Array.from({ length: 10 }).map((_, i) => (
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d5d5939 and 46f4973.

📒 Files selected for processing (12)
  • .changeset/wise-actors-attack.md (1 hunks)
  • packages/thirdweb/src/react/core/design-system/index.ts (1 hunks)
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/FiatProviderSelection.tsx (1 hunks)
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx (1 hunks)
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/TokenSelection.tsx (3 hunks)
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx (4 hunks)
  • packages/thirdweb/src/react/web/ui/ConnectWallet/WalletEntryButton.tsx (1 hunks)
  • packages/thirdweb/src/react/web/ui/ConnectWallet/WalletSelector.tsx (2 hunks)
  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/ReceiveFunds.tsx (3 hunks)
  • packages/thirdweb/src/react/web/ui/components/modalElements.tsx (1 hunks)
  • packages/thirdweb/src/react/web/wallets/shared/ConnectingScreen.tsx (1 hunks)
  • packages/thirdweb/src/stories/theme.stories.tsx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

**/*.{ts,tsx}: Write idiomatic TypeScript with explicit function declarations and return types
Limit each file to one stateless, single-responsibility function for clarity
Re-use shared types from @/types or local types.ts barrels
Prefer type aliases over interface except for nominal shapes
Avoid any and unknown unless unavoidable; narrow generics when possible
Choose composition over inheritance; leverage utility types (Partial, Pick, etc.)
Comment only ambiguous logic; avoid restating TypeScript in prose

**/*.{ts,tsx}: Use explicit function declarations and explicit return types in TypeScript
Limit each file to one stateless, single‑responsibility function
Re‑use shared types from @/types where applicable
Prefer type aliases over interface except for nominal shapes
Avoid any and unknown unless unavoidable; narrow generics when possible
Prefer composition over inheritance; use utility types (Partial, Pick, etc.)
Lazy‑import optional features and avoid top‑level side‑effects to reduce bundle size

Files:

  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/ReceiveFunds.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/FiatProviderSelection.tsx
  • packages/thirdweb/src/react/web/wallets/shared/ConnectingScreen.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx
  • packages/thirdweb/src/react/web/ui/components/modalElements.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/WalletEntryButton.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/TokenSelection.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/WalletSelector.tsx
  • packages/thirdweb/src/stories/theme.stories.tsx
  • packages/thirdweb/src/react/core/design-system/index.ts
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Load heavy dependencies inside async paths to keep initial bundle lean (lazy loading)

Files:

  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/ReceiveFunds.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/FiatProviderSelection.tsx
  • packages/thirdweb/src/react/web/wallets/shared/ConnectingScreen.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx
  • packages/thirdweb/src/react/web/ui/components/modalElements.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/WalletEntryButton.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/TokenSelection.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/WalletSelector.tsx
  • packages/thirdweb/src/stories/theme.stories.tsx
  • packages/thirdweb/src/react/core/design-system/index.ts
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx
packages/thirdweb/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

packages/thirdweb/**/*.{ts,tsx}: Every public symbol must have comprehensive TSDoc with at least one compiling @example and a custom tag (@beta, @internal, @experimental, etc.)
Comment only ambiguous logic; avoid restating TypeScript in prose
Lazy‑load heavy dependencies inside async paths (e.g., const { jsPDF } = await import("jspdf"))

Files:

  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/ReceiveFunds.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/FiatProviderSelection.tsx
  • packages/thirdweb/src/react/web/wallets/shared/ConnectingScreen.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx
  • packages/thirdweb/src/react/web/ui/components/modalElements.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/WalletEntryButton.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/TokenSelection.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/WalletSelector.tsx
  • packages/thirdweb/src/stories/theme.stories.tsx
  • packages/thirdweb/src/react/core/design-system/index.ts
  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx
**/*.stories.tsx

📄 CodeRabbit inference engine (CLAUDE.md)

For new UI components, add Storybook stories (*.stories.tsx) alongside the code

Files:

  • packages/thirdweb/src/stories/theme.stories.tsx
.changeset/*.md

📄 CodeRabbit inference engine (AGENTS.md)

.changeset/*.md: Each change in packages/* must include a changeset for the appropriate package
Version bump rules: patch for non‑API changes; minor for new/modified public API

Files:

  • .changeset/wise-actors-attack.md
🧠 Learnings (5)
📚 Learning: 2025-08-29T15:37:38.513Z
Learnt from: CR
PR: thirdweb-dev/js#0
File: AGENTS.md:0-0
Timestamp: 2025-08-29T15:37:38.513Z
Learning: Applies to apps/{dashboard,playground}/**/*.stories.tsx : Add Storybook stories (`*.stories.tsx`) alongside new UI components

Applied to files:

  • packages/thirdweb/src/stories/theme.stories.tsx
📚 Learning: 2025-07-18T19:19:55.613Z
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-18T19:19:55.613Z
Learning: Applies to **/*.stories.tsx : For new UI components, add Storybook stories (`*.stories.tsx`) alongside the code

Applied to files:

  • packages/thirdweb/src/stories/theme.stories.tsx
📚 Learning: 2025-05-30T17:14:25.332Z
Learnt from: MananTank
PR: thirdweb-dev/js#7227
File: apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/modules/components/OpenEditionMetadata.tsx:26-26
Timestamp: 2025-05-30T17:14:25.332Z
Learning: The ModuleCardUIProps interface already includes a client prop of type ThirdwebClient, so when components use `Omit<ModuleCardUIProps, "children" | "updateButton">`, they inherit the client prop without needing to add it explicitly.

Applied to files:

  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx
📚 Learning: 2025-07-18T19:20:32.530Z
Learnt from: CR
PR: thirdweb-dev/js#0
File: .cursor/rules/dashboard.mdc:0-0
Timestamp: 2025-07-18T19:20:32.530Z
Learning: Applies to dashboard/**/*client.tsx : Interactive UI that relies on hooks (`useState`, `useEffect`, React Query, wallet hooks).

Applied to files:

  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx
📚 Learning: 2025-07-31T16:17:42.753Z
Learnt from: MananTank
PR: thirdweb-dev/js#7768
File: apps/playground-web/src/app/navLinks.ts:1-1
Timestamp: 2025-07-31T16:17:42.753Z
Learning: Configuration files that import and reference React components (like icon components from lucide-react) need the "use client" directive, even if they primarily export static data, because the referenced components need to be executed in a client context when used by other client components.

Applied to files:

  • packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx
🧬 Code graph analysis (9)
packages/thirdweb/src/react/web/ui/ConnectWallet/screens/ReceiveFunds.tsx (1)
apps/dashboard/src/@/utils/usedapp-external.ts (1)
  • shortenString (3-7)
packages/thirdweb/src/react/web/ui/Bridge/payment-selection/FiatProviderSelection.tsx (1)
packages/thirdweb/src/react/core/design-system/index.ts (2)
  • radius (156-164)
  • spacing (142-154)
packages/thirdweb/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx (1)
packages/thirdweb/src/react/web/ui/components/basic.tsx (1)
  • Container (80-193)
packages/thirdweb/src/react/web/ui/ConnectWallet/WalletEntryButton.tsx (1)
packages/thirdweb/src/react/web/ui/components/text.tsx (1)
  • Text (18-34)
packages/thirdweb/src/react/web/ui/Bridge/payment-selection/TokenSelection.tsx (2)
packages/thirdweb/src/react/core/design-system/index.ts (2)
  • radius (156-164)
  • spacing (142-154)
packages/thirdweb/src/react/web/ui/components/basic.tsx (1)
  • Container (80-193)
packages/thirdweb/src/react/web/ui/ConnectWallet/WalletSelector.tsx (1)
packages/thirdweb/src/react/web/ui/components/basic.tsx (1)
  • Container (80-193)
packages/thirdweb/src/stories/theme.stories.tsx (1)
packages/thirdweb/src/react/core/design-system/index.ts (3)
  • darkThemeObj (53-87)
  • lightThemeObj (89-123)
  • Theme (4-51)
packages/thirdweb/src/react/core/design-system/index.ts (1)
packages/thirdweb/src/exports/react.ts (1)
  • Theme (6-6)
packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx (6)
packages/thirdweb/src/react/web/ui/components/basic.tsx (1)
  • Container (80-193)
packages/thirdweb/src/react/web/ui/components/buttons.tsx (1)
  • Button (27-161)
packages/thirdweb/src/react/core/design-system/index.ts (3)
  • radius (156-164)
  • spacing (142-154)
  • iconSize (166-176)
packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletRow.tsx (1)
  • WalletRow (21-81)
packages/thirdweb/src/react/web/ui/components/text.tsx (1)
  • Text (18-34)
packages/thirdweb/src/react/web/ui/ConnectWallet/icons/CreditCardIcon.tsx (1)
  • CreditCardIcon (6-24)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: Size
  • GitHub Check: E2E Tests (pnpm, webpack)
  • GitHub Check: E2E Tests (pnpm, vite)
  • GitHub Check: E2E Tests (pnpm, esbuild)
  • GitHub Check: Lint Packages
  • GitHub Check: Unit Tests
  • GitHub Check: Build Packages
  • GitHub Check: Analyze (javascript)
🔇 Additional comments (11)
packages/thirdweb/src/react/web/ui/components/modalElements.tsx (1)

8-19: LGTM! Typography refinements align with design system updates.

The reduced font weight (600→500) and negative letter spacing create a more refined visual hierarchy for modal titles, consistent with the PR's design refresh.

packages/thirdweb/src/react/web/wallets/shared/ConnectingScreen.tsx (1)

73-82: LGTM! Consistent typography update.

The weight reduction from 600 to 500 aligns with the design system refresh applied across modal and screen titles throughout this PR.

.changeset/wise-actors-attack.md (1)

1-5: LGTM! Changeset correctly categorizes these changes as a patch release.

The description accurately reflects the UI/styling refinements, and the patch version bump is appropriate for non-API changes.

packages/thirdweb/src/react/web/ui/ConnectWallet/WalletEntryButton.tsx (1)

78-84: LGTM! Typography adjustment aligns with PR-wide refinements.

The reduced font weight (600→500) creates visual consistency with other text elements updated throughout this design refresh.

packages/thirdweb/src/react/web/ui/ConnectWallet/screens/ReceiveFunds.tsx (3)

43-57: LGTM! QR code size increased for better scannability.

The increase from 310px to 350px (~13% larger) improves user experience for scanning wallet addresses. Given the modal context, this size should work well across viewports.


60-72: LGTM! Explicit parameter improves code clarity.

The explicit false parameter makes the intent clear (use standard shortening, not extra-short), even though it matches the default behavior.


76-84: LGTM! Text sizing refinement.

Adding size="sm" to the instruction text creates appropriate visual hierarchy and aligns with the PR's typography updates.

packages/thirdweb/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx (1)

271-275: LGTM! Vertical spacing refinement.

Removing bottom padding (pb="md") tightens the layout, likely to reduce excess whitespace. The horizontal padding and top padding remain intact.

packages/thirdweb/src/react/web/ui/Bridge/payment-selection/FiatProviderSelection.tsx (1)

117-127: LGTM! Button styling refinements.

Border radius increased to lg (12px) for more prominent rounded corners, and padding standardized using the design system token. These changes enhance visual consistency.

packages/thirdweb/src/react/web/ui/ConnectWallet/WalletSelector.tsx (2)

322-327: LGTM! More granular padding control.

Replacing uniform padding (p="md") with separate horizontal (px="lg") and vertical (py="md+") values provides better spacing control for this bottom section container.


696-718: LGTM! Subtle border refinement.

Reducing the border width from 2px to 1px creates a lighter, less prominent outline for the "Show All Wallets" icon, aligning with the PR's visual refinements.

@graphite-app
Copy link
Contributor

graphite-app bot commented Oct 23, 2025

Merge activity

<!--

## title your PR with this format: "[SDK/Dashboard/Portal] Feature/Fix: Concise title for the changes"

If you did not copy the branch name from Linear, paste the issue tag here (format is TEAM-0000):

## Notes for the reviewer

Anything important to call out? Be sure to also clarify these in your comments.

## How to test

Unit tests, playground, etc.

-->

<!-- start pr-codex -->

---

## PR-Codex overview

This PR focuses on updating theme colors and making minor UI tweaks across various React components in the `thirdweb` package.

### Detailed summary

- Updated `weight` from `600` to `500` in multiple components' `Text`.
- Adjusted `border` styles in `Container` components.
- Modified padding and margin in several layout elements.
- Enhanced UI elements with consistent `letterSpacing` and `fontSize`.
- Added new theme stories for `darkThemeObj` and `lightThemeObj`.

> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`

<!-- end pr-codex -->

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
    - Added Storybook theme showcase displaying color tokens and design system palette
- **Bug Fixes**
    - Improved loading skeleton UI with better scrollable layout and visual consistency
- **Style**
    - Refactored theme system with explicit color objects
    - Updated button styling with adjusted border radius and padding
    - Refined typography (font weights) across UI components
    - Adjusted layout spacing and padding throughout Bridge and wallet components
    - Increased QR code size for improved visibility
- **Chores**
    - Added changeset documentation for patch release

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

packages SDK Involves changes to the thirdweb SDK

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants