Skip to content

feat: add payout confirmation dialogue component that showcases fees#187

Merged
aimensahnoun merged 1 commit intomainfrom
01-12-feat_add_payout_confirmation_dialogue_component_that_showcases_fees
Jan 13, 2026
Merged

feat: add payout confirmation dialogue component that showcases fees#187
aimensahnoun merged 1 commit intomainfrom
01-12-feat_add_payout_confirmation_dialogue_component_that_showcases_fees

Conversation

@aimensahnoun
Copy link
Member

@aimensahnoun aimensahnoun commented Jan 12, 2026

Add Payout Confirmation Dialog Component

This PR adds a new PayoutConfirmationDialog component that displays a modal for confirming payment details before finalizing a transaction.

Payouts do not have any route detecting, we only get the applicable fees AFTER we get the calldata. Hence the confirmation modal.

The component:

  • Supports both direct and batch payment modes
  • Shows detailed fee breakdowns including platform and protocol fees
  • Displays recipient amounts after fee deductions
  • Provides a secure transaction notice
  • Shows connected wallet information
  • Includes a two-step indicator for the payment flow

The dialog is implemented as a forwardRef component with an imperative handle API that allows parent components to control when and how the dialog appears, making it easy to integrate with payment flows.

Summary by CodeRabbit

  • New Features
    • Added payout confirmation modal enabling users to securely review and verify full payment details, fees, and connected wallet address before sending funds.
    • Supports direct single-payout and multi-currency batch payment modes with flexible presentation of amounts and totals.
    • Displays detailed fee breakdowns, per-currency rows, and net recipient totals with clear confirm/cancel actions and a two-step progress indicator.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 12, 2026

Walkthrough

Adds a new client-side React component PayoutConfirmationDialog with a ref-based imperative API, supporting direct and batch payout modes, fee computations (platform/protocol), formatted address/amount display, and confirm/cancel actions in a modal dialog.

Changes

Cohort / File(s) Summary
Payout Confirmation Dialog Component
src/components/payout-confirmation-dialog.tsx
New React component (≈407 lines) exported with forwardRef. Introduces PayoutConfirmationData and PayoutConfirmationDialogRef public types. Implements imperative methods (show(), close(), onConfirm()), state for open/data/callback, direct and batch render modes, fee parsing and calculations, formatted address/amount helpers, UI structure (header, fee/details rows, secure transaction card, actions, optional wallet footer), and rendering guards for required data.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding a new PayoutConfirmationDialog component that displays fee information, which matches the core functionality added in the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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

Copy link
Member Author

@greptile-apps
Copy link

greptile-apps bot commented Jan 12, 2026

Greptile Overview

Greptile Summary

This PR introduces a PayoutConfirmationDialog component that displays fee breakdowns before payment execution. The component uses React's forwardRef with an imperative API (show, close, onConfirm) to give parent components control over the dialog lifecycle.

What Changed:

  • Added new dialog component supporting both direct and batch payment modes
  • Displays platform fee (deducted from recipient) and protocol fee (added to payer cost)
  • Shows detailed fee breakdowns with hover tooltips for fee recipient addresses
  • Includes two-step payment flow indicator and wallet connection status

Issues Found:

  1. Critical - Missing "Total to Pay" in Batch Mode: The batch mode displays "Total Net Amount" (what recipients receive) but doesn't show the total amount the payer needs to pay including protocol fees. This is inconsistent with direct mode and could confuse users about how much they need in their wallet.

  2. Logic Issue - Unsafe Data Parsing: Percentage values are parsed with Number.parseFloat() without validation. Invalid data will result in NaN propagating through calculations.

  3. Logic Issue - Component Mounting: Early return with null when data is not set means the Dialog never mounts initially, which could cause issues with the imperative handle pattern.

  4. Logic Issue - Address Formatting: No validation that addresses have sufficient length before substring operations.

  5. UX Issue - Conditional "Recipient receives" Display: Only shows when platform fee exists, creating inconsistent UI.

  6. UX Issue - Inconsistent Zero Fee Display: Shows "-" instead of "0.00" in batch mode fee column.

The component integrates well with the existing payment flow and follows the codebase's UI patterns using shadcn components. The fee calculation logic is sound for direct mode but needs completion for batch mode.

Confidence Score: 2/5

  • This PR has critical issues that should be addressed before merging, particularly the missing "Total to pay" in batch mode and unsafe data parsing.
  • Score of 2 reflects a functional component with good UI/UX design but containing critical logic issues. The missing "Total to pay" display in batch mode could lead to user confusion about payment amounts, and the unsafe parsing could cause calculation errors. The component mounting issue could cause runtime problems with the imperative handle API.
  • src/components/payout-confirmation-dialog.tsx - Address the batch mode calculation display and add input validation before merge.

Important Files Changed

File Analysis

Filename Score Overview
src/components/payout-confirmation-dialog.tsx 2/5 New payout confirmation dialog with fee display. Found critical issues: missing "Total to pay" in batch mode, unsafe data parsing, and conditional rendering issues.

Sequence Diagram

sequenceDiagram
    participant Parent as Parent Component
    participant Dialog as PayoutConfirmationDialog
    participant User as User
    
    Parent->>Dialog: ref.onConfirm(callback)
    Note over Parent,Dialog: Register callback function
    
    Parent->>Dialog: ref.show(data)
    activate Dialog
    Note over Dialog: Set data & open=true
    Dialog->>User: Display fee breakdown
    Note over Dialog: Calculate fees:<br/>- Platform fee % of amount<br/>- Protocol fee % of amount
    
    alt Direct Mode
        Dialog->>User: Show single payment details<br/>+ Initial amount<br/>- Platform fee (from recipient)<br/>+ Protocol fee (to payer)<br/>= Recipient receives<br/>= Total to pay
    else Batch Mode
        Dialog->>User: Show multiple currencies<br/>+ List of amounts by currency<br/>- Platform/Protocol fees<br/>= Total Net Amount
        Note over Dialog: ISSUE: Missing "Total to pay"<br/>with protocol fee
    end
    
    User->>Dialog: Click "Confirm & Send Payment"
    Dialog->>Dialog: setOpen(false)
    Dialog->>Parent: confirmCallback()
    deactivate Dialog
    Note over Parent: Execute payment logic
    
    alt User Cancels
        User->>Dialog: Click "Cancel"
        Dialog->>Dialog: setOpen(false)
        Note over Parent: No callback executed
    end
Loading

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: 3

🤖 Fix all issues with AI agents
In @src/components/payout-confirmation-dialog.tsx:
- Around line 141-162: The protocol fee is shown with a hardcoded "-" sign
despite being added to the total; remove the negative prefix and ensure the
displayed sign matches how the fee is applied to the computed total. Update the
render sites that reference hasProtocolFee, protocolFee, protocolFeePct,
protocolFeeAmount, formatAmount and formatAddress so the protocol fee is shown
as a positive/added cost (no leading "-" or use "+" if you explicitly show
signs) and adjust the batch-mode fee cell to derive its sign from the same total
calculation logic rather than hardcoding a "-" so both single and batch modes
are consistent.
- Around line 90-93: The confirm handler (handleConfirm) currently closes the
dialog and calls confirmCallback even when required data is missing because
renderDirectMode()/renderBatchMode() can return null; update the dialog logic to
compute a boolean like isConfirmEnabled (e.g., based on whether fee
summary/details exist and renderXMode() !== null or a validation function) and
use that to both disable the Confirm button and short-circuit handleConfirm
(return early if !isConfirmEnabled); apply the same gating to the other similar
blocks mentioned (the occurrences around lines 195-204 and 356-390) so
confirmCallback is never invoked when required data is absent or invalid.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 79f1996 and b901c99.

📒 Files selected for processing (1)
  • src/components/payout-confirmation-dialog.tsx
🧰 Additional context used
📓 Path-based instructions (1)
**/*

⚙️ CodeRabbit configuration file

**/*: - Only comment on issues that would block merging — ignore minor or stylistic concerns.

  • Restrict feedback to errors, security risks, or functionality-breaking problems.
  • Do not post comments on code style, formatting, or non-critical improvements.
  • Keep reviews short: flag only issues that make the PR unsafe to merge.
  • Limit review comments to 3–5 items maximum, unless additional blockers exist.
  • Group similar issues into a single comment instead of posting multiple notes.
  • Skip repetition — if a pattern repeats, mention it once at a summary level only.
  • Do not add general suggestions; focus strictly on merge-blocking concerns.
  • If there are no critical problems, respond with minimal approval (e.g., 'Looks good'). Do not add additional review.
  • Avoid line-by-line commentary unless it highlights a critical bug or security hole.
  • Highlight only issues that could cause runtime errors, data loss, or severe maintainability issues.
  • Ignore minor optimization opportunities — focus solely on correctness and safety.
  • Provide a top-level summary of critical blockers rather than detailed per-line notes.
  • Comment only when the issue must be resolved before merge — otherwise, remain silent.
  • When in doubt, err on the side of fewer comments — brevity and blocking issues only.
  • Avoid posting any refactoring issues

Files:

  • src/components/payout-confirmation-dialog.tsx
🧠 Learnings (7)
📓 Common learnings
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/README.md:29-31
Timestamp: 2025-10-28T12:17:14.899Z
Learning: The payment-widget component in src/components/payment-widget/ is an external component installed via ShadCN from the Request Network registry (https://ui.request.network). Its README and documentation should not be modified as it's maintained externally.
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/utils/payment.ts:86-87
Timestamp: 2025-10-28T12:17:42.971Z
Learning: The src/components/payment-widget/ directory contains an external component installed via ShadCN from the requestnetwork registry (https://ui.request.network/r/{name}.json) and should be treated as a vendored dependency. Modifications to files in this directory should not be suggested during code review.
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/components/payment-success.tsx:57-60
Timestamp: 2025-10-28T12:16:58.341Z
Learning: The payment widget at src/components/payment-widget/** is an external component installed via ShadCN registry and should not receive detailed code modification suggestions. The project treats this directory as external/third-party code (configured in biome.json to be ignored).
Learnt from: rodrigopavezi
Repo: RequestNetwork/easy-invoice PR: 45
File: src/components/invoice-form.tsx:316-319
Timestamp: 2025-05-19T13:00:48.790Z
Learning: The handleFormSubmit function in src/components/invoice-form.tsx correctly uses data.clientEmail from the form submission data to find matching payers, which is the proper implementation.
📚 Learning: 2025-10-28T12:16:58.341Z
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/components/payment-success.tsx:57-60
Timestamp: 2025-10-28T12:16:58.341Z
Learning: The payment widget at src/components/payment-widget/** is an external component installed via ShadCN registry and should not receive detailed code modification suggestions. The project treats this directory as external/third-party code (configured in biome.json to be ignored).

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-10-28T12:17:14.899Z
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/README.md:29-31
Timestamp: 2025-10-28T12:17:14.899Z
Learning: The payment-widget component in src/components/payment-widget/ is an external component installed via ShadCN from the Request Network registry (https://ui.request.network). Its README and documentation should not be modified as it's maintained externally.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-10-28T12:17:42.971Z
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/utils/payment.ts:86-87
Timestamp: 2025-10-28T12:17:42.971Z
Learning: The src/components/payment-widget/ directory contains an external component installed via ShadCN from the requestnetwork registry (https://ui.request.network/r/{name}.json) and should be treated as a vendored dependency. Modifications to files in this directory should not be suggested during code review.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-06-04T10:08:40.123Z
Learnt from: aimensahnoun
Repo: RequestNetwork/easy-invoice PR: 64
File: src/components/batch-payout.tsx:100-106
Timestamp: 2025-06-04T10:08:40.123Z
Learning: In src/components/batch-payout.tsx, the user prefers to keep the simple 2-second timeout for AppKit initialization over more complex polling mechanisms when the current approach is working adequately. They favor simplicity over potentially more robust but complex solutions.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-05-19T13:00:48.790Z
Learnt from: rodrigopavezi
Repo: RequestNetwork/easy-invoice PR: 45
File: src/components/invoice-form.tsx:316-319
Timestamp: 2025-05-19T13:00:48.790Z
Learning: The handleFormSubmit function in src/components/invoice-form.tsx correctly uses data.clientEmail from the form submission data to find matching payers, which is the proper implementation.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-10-28T12:17:03.639Z
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/context/payment-widget-context/payment-widget-provider.tsx:43-46
Timestamp: 2025-10-28T12:17:03.639Z
Learning: The payment widget components under src/components/payment-widget/ are installed via ShadCN from the Request Network registry and should not be modified locally to maintain compatibility with upstream.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
🧬 Code graph analysis (1)
src/components/payout-confirmation-dialog.tsx (1)
src/lib/constants/currencies.ts (1)
  • formatCurrencyLabel (94-139)
⏰ 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). (1)
  • GitHub Check: Build

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

6 files reviewed, 6 comments

Edit Code Review Agent Settings | Greptile

rodrigopavezi
rodrigopavezi previously approved these changes Jan 12, 2026
@rodrigopavezi rodrigopavezi dismissed their stale review January 12, 2026 13:15

I think the greptile reviews should be addressed before

@aimensahnoun aimensahnoun force-pushed the 01-12-feat_add_payout_confirmation_dialogue_component_that_showcases_fees branch from b901c99 to fd2c4f7 Compare January 13, 2026 09:04
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: 1

🤖 Fix all issues with AI agents
In @src/components/payout-confirmation-dialog.tsx:
- Around line 390-396: The multi-currency branch currently renders only
totalProtocolFee (an invalid cross-currency sum); replace that single aggregated
display with per-currency totals from totalToPay: iterate over
Object.entries(totalToPay) (or the same structure used in the single-currency
branch) and render each currency and its formatted amount using formatAmountRaw,
preserving styling (e.g., map to individual rows inside the same container
instead of showing totalProtocolFee), and remove the "+" prefix logic tied to
totalProtocolFee so each currency line shows its own sign/amount.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b901c99 and fd2c4f7.

📒 Files selected for processing (1)
  • src/components/payout-confirmation-dialog.tsx
🧰 Additional context used
📓 Path-based instructions (1)
**/*

⚙️ CodeRabbit configuration file

**/*: - Only comment on issues that would block merging — ignore minor or stylistic concerns.

  • Restrict feedback to errors, security risks, or functionality-breaking problems.
  • Do not post comments on code style, formatting, or non-critical improvements.
  • Keep reviews short: flag only issues that make the PR unsafe to merge.
  • Limit review comments to 3–5 items maximum, unless additional blockers exist.
  • Group similar issues into a single comment instead of posting multiple notes.
  • Skip repetition — if a pattern repeats, mention it once at a summary level only.
  • Do not add general suggestions; focus strictly on merge-blocking concerns.
  • If there are no critical problems, respond with minimal approval (e.g., 'Looks good'). Do not add additional review.
  • Avoid line-by-line commentary unless it highlights a critical bug or security hole.
  • Highlight only issues that could cause runtime errors, data loss, or severe maintainability issues.
  • Ignore minor optimization opportunities — focus solely on correctness and safety.
  • Provide a top-level summary of critical blockers rather than detailed per-line notes.
  • Comment only when the issue must be resolved before merge — otherwise, remain silent.
  • When in doubt, err on the side of fewer comments — brevity and blocking issues only.
  • Avoid posting any refactoring issues

Files:

  • src/components/payout-confirmation-dialog.tsx
🧠 Learnings (11)
📓 Common learnings
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/README.md:29-31
Timestamp: 2025-10-28T12:17:14.899Z
Learning: The payment-widget component in src/components/payment-widget/ is an external component installed via ShadCN from the Request Network registry (https://ui.request.network). Its README and documentation should not be modified as it's maintained externally.
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/utils/payment.ts:86-87
Timestamp: 2025-10-28T12:17:42.971Z
Learning: The src/components/payment-widget/ directory contains an external component installed via ShadCN from the requestnetwork registry (https://ui.request.network/r/{name}.json) and should be treated as a vendored dependency. Modifications to files in this directory should not be suggested during code review.
📚 Learning: 2025-10-28T12:17:14.899Z
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/README.md:29-31
Timestamp: 2025-10-28T12:17:14.899Z
Learning: The payment-widget component in src/components/payment-widget/ is an external component installed via ShadCN from the Request Network registry (https://ui.request.network). Its README and documentation should not be modified as it's maintained externally.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-10-28T12:16:58.341Z
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/components/payment-success.tsx:57-60
Timestamp: 2025-10-28T12:16:58.341Z
Learning: The payment widget at src/components/payment-widget/** is an external component installed via ShadCN registry and should not receive detailed code modification suggestions. The project treats this directory as external/third-party code (configured in biome.json to be ignored).

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-10-28T12:17:42.971Z
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/utils/payment.ts:86-87
Timestamp: 2025-10-28T12:17:42.971Z
Learning: The src/components/payment-widget/ directory contains an external component installed via ShadCN from the requestnetwork registry (https://ui.request.network/r/{name}.json) and should be treated as a vendored dependency. Modifications to files in this directory should not be suggested during code review.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-05-19T13:00:48.790Z
Learnt from: rodrigopavezi
Repo: RequestNetwork/easy-invoice PR: 45
File: src/components/invoice-form.tsx:316-319
Timestamp: 2025-05-19T13:00:48.790Z
Learning: The handleFormSubmit function in src/components/invoice-form.tsx correctly uses data.clientEmail from the form submission data to find matching payers, which is the proper implementation.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-10-28T12:17:03.639Z
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/context/payment-widget-context/payment-widget-provider.tsx:43-46
Timestamp: 2025-10-28T12:17:03.639Z
Learning: The payment widget components under src/components/payment-widget/ are installed via ShadCN from the Request Network registry and should not be modified locally to maintain compatibility with upstream.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-10-28T12:17:27.662Z
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 168
File: src/components/payment-widget/payment-widget.tsx:86-96
Timestamp: 2025-10-28T12:17:27.662Z
Learning: The src/components/payment-widget/ directory contains external components from the Request Network component registry and should not be modified locally, similar to how ShadCN components are treated.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-10-13T19:12:34.359Z
Learnt from: MantisClone
Repo: RequestNetwork/easy-invoice PR: 0
File: :0-0
Timestamp: 2025-10-13T19:12:34.359Z
Learning: In `src/server/routers/ecommerce.ts`, the `create` procedure for client IDs should use `?? undefined` for `feePercentage` and `feeAddress` when calling the external API, because the backend create endpoint uses `.optional()` and rejects `null`. However, the `edit` procedure should use `?? null` for these fields because the backend update endpoint uses `.nullable().optional()`, which allows `null` values to support explicitly unsetting fees.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-10-22T08:44:20.491Z
Learnt from: bassgeta
Repo: RequestNetwork/easy-invoice PR: 164
File: src/app/(dashboard)/s/[id]/_components/subscription-plan-preview.tsx:66-75
Timestamp: 2025-10-22T08:44:20.491Z
Learning: In the EasyInvoice codebase, amounts are normalized to 18 decimals internally for all calculations. The pattern is: parse user-facing amounts with 18 decimals using utils.parseUnits(), perform calculations with ethers BigNumber, and format back with 18 decimals using utils.formatUnits(). This normalization strategy avoids floating-point arithmetic issues and maintains consistency across different token types.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-06-04T12:02:39.411Z
Learnt from: aimensahnoun
Repo: RequestNetwork/easy-invoice PR: 67
File: src/server/routers/payment.ts:47-49
Timestamp: 2025-06-04T12:02:39.411Z
Learning: In `src/server/routers/payment.ts`, the batchPay input validation already handles empty arrays correctly. The `batchPaymentFormSchema.shape.payouts.optional()` inherits the `.min(1, "At least one payment is required")` validation from the original schema, so empty payouts arrays are automatically rejected even when the field is made optional.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
📚 Learning: 2025-06-04T10:08:40.123Z
Learnt from: aimensahnoun
Repo: RequestNetwork/easy-invoice PR: 64
File: src/components/batch-payout.tsx:100-106
Timestamp: 2025-06-04T10:08:40.123Z
Learning: In src/components/batch-payout.tsx, the user prefers to keep the simple 2-second timeout for AppKit initialization over more complex polling mechanisms when the current approach is working adequately. They favor simplicity over potentially more robust but complex solutions.

Applied to files:

  • src/components/payout-confirmation-dialog.tsx
🧬 Code graph analysis (1)
src/components/payout-confirmation-dialog.tsx (5)
src/lib/constants/currencies.ts (1)
  • formatCurrencyLabel (94-139)
src/components/ui/separator.tsx (1)
  • Separator (31-31)
src/components/ui/dialog.tsx (2)
  • Dialog (112-112)
  • DialogContent (117-117)
src/components/ui/card.tsx (2)
  • Card (79-79)
  • CardContent (79-79)
src/components/ui/button.tsx (1)
  • Button (56-56)
⏰ 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). (1)
  • GitHub Check: Build

Copy link
Member Author

aimensahnoun commented Jan 13, 2026

Merge activity

  • Jan 13, 1:58 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Jan 13, 1:59 PM UTC: @aimensahnoun merged this pull request with Graphite.

@aimensahnoun aimensahnoun merged commit dcc77cf into main Jan 13, 2026
5 checks passed
@aimensahnoun aimensahnoun deleted the 01-12-feat_add_payout_confirmation_dialogue_component_that_showcases_fees branch January 13, 2026 13:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Payout flow missing all fee information

2 participants