Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
WalkthroughAdds a Bridge-first exchange-rate API with Frankfurter fallback and caching, a compare-rates Node script, a client /exchange page with an interactive converter and currency picker, multiple new landing sections/components (RegulatedRails, DropLink, Footer), new icons/illustrations and mappings, a country-currency dataset, a chevron-down icon, and a small global font utility. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Suggested reviewers
📜 Recent review detailsConfiguration used: CodeRabbit UI 💡 Knowledge Base configuration:
You can enable these sources in your CodeRabbit configuration. 📒 Files selected for processing (2)
💤 Files with no reviewable changes (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ 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)
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 10
🔭 Outside diff range comments (1)
src/components/0_Bruddle/Button.tsx (1)
98-101: Forwarded ref handling is unsafe for callback refs.Casting the forwarded
refto a RefObject and reusing it will break for function refs. Merge refs properly and use a local ref for internal DOM access.- const localRef = useRef<HTMLButtonElement>(null) - const buttonRef = (ref as React.RefObject<HTMLButtonElement>) || localRef + const localRef = useRef<HTMLButtonElement>(null)Apply this change to the button element to merge refs:
- ref={buttonRef} + ref={(node) => { + localRef.current = node + if (typeof ref === 'function') { + ref(node) + } else if (ref) { + ;(ref as React.MutableRefObject<HTMLButtonElement | null>).current = node + } + }}And replace internal usages of
buttonRef.currentwithlocalRef.current. Example:// before if (!buttonRef.current) return buttonRef.current.setAttribute('translate', 'no') // after if (!localRef.current) return localRef.current.setAttribute('translate', 'no')Also applies to: 239-240
🧹 Nitpick comments (27)
src/components/Global/Icons/chevron-down.tsx (1)
4-4: Add default accessibility attributes (aria-hidden, focusable).These icons are typically decorative; setting sensible defaults avoids screen reader noise while still allowing overrides at call sites thanks to {...props}.
Apply this diff:
- <svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}> + <svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" {...props}>src/components/0_Bruddle/Button.tsx (2)
101-106: Timer types: prefer DOM-safe ReturnType over NodeJS.Timeout.Using NodeJS.Timeout in client components can cause type friction in DOM contexts. Use ReturnType / setInterval> for compatibility.
- const [pressTimer, setPressTimer] = useState<NodeJS.Timeout | null>(null) + const [pressTimer, setPressTimer] = useState<ReturnType<typeof setTimeout> | null>(null) - const [pressProgress, setPressProgress] = useState(0) - const [progressInterval, setProgressInterval] = useState<NodeJS.Timeout | null>(null) + const [pressProgress, setPressProgress] = useState(0) + const [progressInterval, setProgressInterval] = useState<ReturnType<typeof setInterval> | null>(null)
209-216: Tailwind arbitrary value class won't be generated reliably with runtime interpolation.
active:translate-y-[${shadowSize}px]is built at runtime, so Tailwind may not include that class. Use a static map for supported values.- `btn w-full flex items-center gap-2 transition-all duration-100 active:translate-x-[3px] active:translate-y-[${shadowSize}px] active:shadow-none notranslate`, + `btn w-full flex items-center gap-2 transition-all duration-100 active:translate-x-[3px] active:shadow-none notranslate`, + shadowSize === '4' && 'active:translate-y-[4px]', + shadowSize === '6' && 'active:translate-y-[6px]', + shadowSize === '8' && 'active:translate-y-[8px]',src/styles/globals.css (1)
359-363: font-roboto-flex references the bold family var without setting weight—verify intended typography.The new class points to
var(--font-roboto-flex-bold)but doesn’t setfont-weight. If the intent is a regular/bold option separate from-extrabold, consider referencing the non-bold family var (if available) or set an explicit weight.Potential adjustments:
-.font-roboto-flex { - font-family: var(--font-roboto-flex-bold), 'sans-serif'; - line-height: 100%; - letter-spacing: -1px; -} +.font-roboto-flex { + /* If you have a base variable (preferred) */ + font-family: var(--font-roboto-flex), 'sans-serif'; + line-height: 100%; + letter-spacing: -1px; + /* Optionally set a default weight */ + /* font-weight: 600; */ +}If
--font-roboto-flexdoes not exist, either define it or explicitly setfont-weighthere to avoid confusion between this and-extrabold.src/components/LandingPage/imageAssets.tsx (3)
24-24: Reducing imageWidth to 200 changes motion timing—consider making offsets relative to width.Start offsets are hardcoded (e.g., -200, 100). With a smaller image, these may feel off. Consider scaling offsets with
imageWidthfor consistent visuals across sizes.Example:
- startXOffset={-200} + startXOffset={-imageWidth}
15-23:durationprop is unused.
CloudAnimationacceptsdurationbut computes duration fromtotalDistance / speed. Remove the prop to avoid confusion or wire it into the transition.Option A – remove the prop from type and call sites.
Option B – allow
durationto override computed value:- duration: number + duration?: number ... - transition={{ - ease: 'linear', - duration: totalDistance / speed, - repeat: Infinity, - }} + transition={{ + ease: 'linear', + duration: typeof duration === 'number' ? duration : totalDistance / speed, + repeat: Infinity, + }}
34-35: Dynamic${side}-0class may be purged by Tailwind.Tailwind’s scanner might miss
left-0/right-0when built dynamically. If these aren’t present elsewhere, safelist them or conditionally include them as literals.Example:
className={twMerge('absolute', side === 'left' ? 'left-0' : 'right-0', styleMod)}src/constants/countryCurrencyMapping.ts (1)
1-7: Stricter typing can prevent bad data early.If practical, restrict
currencyCodeto known codes (e.g., a union of literals) and enforceflagCodeasUppercase<string>to document casing expectations.src/components/LandingPage/securityBuiltIn.tsx (2)
53-55: Heading level: confirm page-level H1 semantics.This component renders an
<h1>. If the page already has an H1, consider using<h2>here for better document outline and SEO.
21-25: Copy nit: remove the space in “100 %”.Typographically, “100%” (no space) is standard.
- 'Peanut is 100 % self-custodial. Every transaction is approved via Passkeys using Face ID, Touch ID or passcode. No one else can move your assets.', + 'Peanut is 100% self-custodial. Every transaction is approved via passkeys using Face ID, Touch ID, or passcode. No one else can move your assets.',scripts/compare-rates.mjs (2)
13-37: Improve error handling and env variable validation.The environment loading function could benefit from more robust error handling and validation:
- Silent failures when files don't exist could mask configuration issues
- No validation of loaded environment variables
- Key-value parsing could fail on malformed lines
function loadEnv() { const envFiles = ['.env.local', '.env'] for (const file of envFiles) { try { const envPath = resolve(file) const envContent = readFileSync(envPath, 'utf8') envContent.split('\n').forEach((line) => { const trimmed = line.trim() if (trimmed && !trimmed.startsWith('#')) { const [key, ...valueParts] = trimmed.split('=') - if (key && valueParts.length > 0) { + if (key && key.trim() && valueParts.length > 0) { const value = valueParts.join('=').replace(/^["']|["']$/g, '') if (!process.env[key]) { process.env[key] = value } } } }) console.log(`Loaded environment from ${file}`) break } catch (e) { - // File doesn't exist, continue to next + if (e.code !== 'ENOENT') { + console.warn(`Failed to load ${file}: ${e.message}`) + } } } }
110-115: Enhance basis points calculation robustness.The basis points calculation could handle edge cases more gracefully:
function bps(a, b) { - if (typeof a !== 'number' || typeof b !== 'number' || !Number.isFinite(a) || !Number.isFinite(b) || b === 0) + if (typeof a !== 'number' || typeof b !== 'number' || !Number.isFinite(a) || !Number.isFinite(b) || b === 0) { return '-' + } const rel = (a / b - 1) * 10000 - return `${rel.toFixed(1)} bps` + const sign = rel >= 0 ? '+' : '' + return `${sign}${rel.toFixed(1)} bps` }src/app/exchange/page.tsx (1)
3-5: Optional: add page metadata for SEO and share previewsConsider exporting a metadata object (title/description/openGraph) to improve /exchange discoverability.
Example:
export const metadata = { title: 'Exchange | Peanut', description: 'Zero-fee currency exchange with real-time rates.', openGraph: { title: 'Peanut Exchange', description: 'Zero-fee currency exchange with real-time rates.' }, }src/components/LandingPage/CurrencySelect.tsx (5)
61-68: Normalize Chakra sizing tokens and avoid forced scrollbars
- height is set as a raw number (72px) while width uses token strings ('72' → 18rem). This is inconsistent and likely not intended.
- overflow="scroll" forces scrollbars even when unnecessary and, combined with nested overflow containers below, can cause double scrollbars.
Switch to maxH with tokens and hide overflow here, letting the inner list scroll.
Apply this diff:
- <PopoverContent - width={{ base: '72', sm: '80', md: '96' }} - height={72} - marginTop="16px" - borderRadius="2px" - border="1px" - borderColor="black" - overflow="scroll" - > + <PopoverContent + width={{ base: '72', sm: '80', md: '96' }} + maxH="80" + mt="16px" + borderRadius="2px" + border="1px" + borderColor="black" + overflow="hidden" + >
83-131: Prevent nested scrollbars; use auto scrolling only where neededThe outer PopoverContent currently scrolls, and the inner container also scrolls. Recommend using overflow-y-auto on the inner container so scrollbars appear only when content exceeds the max height.
Apply this diff:
- <div className="flex max-h-full w-full flex-col items-start overflow-y-scroll"> + <div className="flex max-h-full w-full flex-col items-start overflow-y-auto">
74-81: Add accessible label to the search inputScreen readers will benefit from an explicit aria-label.
Apply this diff:
<BaseInput type="text" placeholder="Currency or country" + aria-label="Search by currency code, name, or country" value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} className="h-10 w-full rounded-sm border-[1.15px] border-black pl-10 pr-10 font-normal caret-[#FF90E8] focus:border-black focus:outline-none focus:ring-0" />
91-107: Use stable, minimal keys to avoid unnecessary re-rendersKeys incorporating index can cause instability if the list order changes. currency codes are unique in the mapping — use that as the key.
Apply this diff:
- .map((currency, index) => ( + .map((currency) => ( <CurrencyBox - key={`${currency.countryCode}-${currency.country}-${index}`} + key={currency.currency} countryCode={currency.countryCode} country={currency.country} currency={currency.currency} currencyName={currency.currencyName} comingSoon={currency.comingSoon} selected={currency.currency === selectedCurrency}
114-130: Same as above for the “All currencies” listMirror the stable key usage here as well.
Apply this diff:
- .map((currency, index) => ( + .map((currency) => ( <CurrencyBox - key={`${currency.countryCode}-${currency.country}-${index}`} + key={currency.currency} countryCode={currency.countryCode} country={currency.country} currency={currency.currency} currencyName={currency.currencyName} comingSoon={currency.comingSoon} selected={currency.currency === selectedCurrency}src/components/LandingPage/RegulatedRails.tsx (1)
47-60: Remove unused parameter from createCloudAnimationParameter top is unused; keep the signature minimal to avoid confusion.
Apply this diff:
- const createCloudAnimation = (side: 'left' | 'right', top: string, width: number, speed: number) => { + const createCloudAnimation = (side: 'left' | 'right', width: number, speed: number) => { const vpWidth = screenWidth || 1080 const totalDistance = vpWidth + width return { initial: { x: side === 'left' ? -width : vpWidth }, animate: { x: side === 'left' ? vpWidth : -width }, transition: { ease: 'linear', duration: totalDistance / speed, repeat: Infinity, }, } }And update the call sites:
- {...createCloudAnimation('left', '20%', 200, 35)} + {...createCloudAnimation('left', 200, 35)}- {...createCloudAnimation('right', '60%', 220, 40)} + {...createCloudAnimation('right', 220, 40)}src/components/LandingPage/dropLink.tsx (2)
35-42: Expose the CTA on mobile as wellThe button is hidden on small screens (hidden md:inline-block), leaving no CTA visible on mobile. Mirror a mobile-visible button.
Apply this diff to add a mobile CTA below the mobile image:
<Image src={iphoneDropALinkMobile} alt="Drop a link" width={300} height={300} className="mx-auto mt-8 block md:mt-0 md:hidden" /> + + <a href="/setup" target="_blank" rel="noopener noreferrer" className="md:hidden"> + <Button + shadowSize="4" + className="mt-6 w-full bg-white px-7 pb-11 pt-4 text-base font-extrabold hover:bg-white/90" + > + CREATE PAYMENT LINK + </Button> + </a>
35-42: Optional: use Next.js Link for internal navigation (even with target="_blank")Using Link preserves prefetching and SPA benefits while still supporting target="_blank".
If you adopt this, also add:
- import Link from 'next/link'
Example:
import Link from 'next/link' // ... <Link href="/setup" target="_blank" rel="noopener noreferrer"> <Button /* ... */>CREATE PAYMENT LINK</Button> </Link>src/components/LandingPage/yourMoney.tsx (1)
72-76: Consider accessibility improvements for the overlay button.The button positioned absolutely over the image might have contrast issues depending on the underlying image content. Additionally, the
target="_blank"without descriptive text may confuse users.Consider these improvements:
- Add an aria-label to provide context about opening in a new tab
- Consider adding a semi-transparent background to ensure contrast
<a href="/setup" target="_blank" rel="noopener noreferrer" className="absolute inset-0 flex items-center justify-center" + aria-label="Try Peanut now (opens in a new tab)" >src/components/LandingPage/Footer.tsx (3)
97-97: Inconsistent Image src usage detected.Line 97 uses
handThumbsUp.srcwhile other images in the same section use the imported object directly (lines 95, 104, 106). This inconsistency could lead to confusion.-<Image src={handThumbsUp.src} alt="Hand thumbs up" width={20} height={20} /> +<Image src={handThumbsUp} alt="Hand thumbs up" width={20} height={20} />
104-104: Inconsistent Image src usage.Same issue as line 97 - using
.srcproperty instead of the imported object directly.-<Image src={handMiddleFinger.src} alt="Hand Middle finger" width={20} height={20} /> +<Image src={handMiddleFinger} alt="Hand Middle finger" width={20} height={20} />
106-106: Inconsistent Image src usage.Same issue - using
.srcproperty instead of the imported object directly.-<Image src={handWaving.src} alt="Hand waving" width={25} height={25} /> +<Image src={handWaving} alt="Hand waving" width={25} height={25} />src/hooks/useExchangeRate.ts (1)
119-120: Potential precision loss in source amount calculation.When calculating source amount from destination, the result is truncated to 2 decimal places using
parseFloat(calculatedSourceAmount.toFixed(2)). This could lead to precision issues for large amounts or currencies with different decimal requirements.Consider using a more flexible precision approach or storing the raw calculated value:
const calculatedSourceAmount = debouncedDestinationAmount / exchangeRate -setSourceAmount(parseFloat(calculatedSourceAmount.toFixed(2))) +// Use appropriate precision based on currency requirements +const precision = getCurrencyPrecision(sourceCurrency) ?? 2 +setSourceAmount(parseFloat(calculatedSourceAmount.toFixed(precision)))Alternatively, store the raw value and format only for display.
src/components/LandingPage/noFees.tsx (1)
224-230: Input validation could be more robust.The number inputs allow negative values through keyboard entry (though
min={0}is set). Also, scientific notation (e.g., "1e10") would be accepted but might not display correctly.Add comprehensive input validation:
onChange={(e) => { const inputValue = e.target.value + // Prevent negative values and scientific notation + if (inputValue.includes('-') || inputValue.includes('e')) { + e.preventDefault() + return + } if (inputValue === '') { handleSourceAmountChange('') } else { const value = parseFloat(inputValue) - handleSourceAmountChange(isNaN(value) ? '' : value) + if (!isNaN(value) && value >= 0) { + handleSourceAmountChange(value) + } } }}Also applies to: 269-275
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ Files ignored due to path filters (17)
src/assets/icons/bbva-logo.svgis excluded by!**/*.svgsrc/assets/icons/brubank-logo.svgis excluded by!**/*.svgsrc/assets/icons/github-white.pngis excluded by!**/*.pngsrc/assets/icons/mercado-pago-logo.svgis excluded by!**/*.svgsrc/assets/icons/n26-logo.svgis excluded by!**/*.svgsrc/assets/icons/pix-logo.svgis excluded by!**/*.svgsrc/assets/icons/revolut-logo.svgis excluded by!**/*.svgsrc/assets/icons/santander-logo.svgis excluded by!**/*.svgsrc/assets/icons/stripe-logo.svgis excluded by!**/*.svgsrc/assets/icons/wise-logo.svgis excluded by!**/*.svgsrc/assets/illustrations/hand-middle-finger.svgis excluded by!**/*.svgsrc/assets/illustrations/landing-countries.svgis excluded by!**/*.svgsrc/assets/illustrations/mobile-send-in-seconds.svgis excluded by!**/*.svgsrc/assets/illustrations/no-hidden-fees.svgis excluded by!**/*.svgsrc/assets/illustrations/pay-zero-fees.svgis excluded by!**/*.svgsrc/assets/iphone-ss/iphone-drop-a-link-mobile.pngis excluded by!**/*.pngsrc/assets/iphone-ss/iphone-drop-a-link.pngis excluded by!**/*.png
📒 Files selected for processing (22)
scripts/compare-rates.mjs(1 hunks)src/app/api/exchange-rate/route.ts(1 hunks)src/app/exchange/page.tsx(1 hunks)src/app/page.tsx(3 hunks)src/assets/icons/index.ts(1 hunks)src/assets/illustrations/index.ts(1 hunks)src/components/0_Bruddle/Button.tsx(1 hunks)src/components/Global/Icons/Icon.tsx(3 hunks)src/components/Global/Icons/chevron-down.tsx(1 hunks)src/components/LandingPage/CurrencySelect.tsx(1 hunks)src/components/LandingPage/Footer.tsx(1 hunks)src/components/LandingPage/RegulatedRails.tsx(1 hunks)src/components/LandingPage/dropLink.tsx(1 hunks)src/components/LandingPage/hero.tsx(1 hunks)src/components/LandingPage/imageAssets.tsx(6 hunks)src/components/LandingPage/index.ts(1 hunks)src/components/LandingPage/noFees.tsx(4 hunks)src/components/LandingPage/securityBuiltIn.tsx(3 hunks)src/components/LandingPage/yourMoney.tsx(2 hunks)src/constants/countryCurrencyMapping.ts(1 hunks)src/hooks/useExchangeRate.ts(1 hunks)src/styles/globals.css(1 hunks)
🧰 Additional context used
🧠 Learnings (7)
📚 Learning: 2025-08-14T09:19:43.965Z
Learnt from: Zishan-7
PR: peanutprotocol/peanut-ui#1089
File: src/components/LandingPage/noFees.tsx:130-130
Timestamp: 2025-08-14T09:19:43.965Z
Learning: When CurrencySelect popover gets clipped by parent containers with overflow-hidden, the preferred solution is to implement Portal rendering in the CurrencySelect component rather than removing overflow rules from parent containers. Portal rendering ensures overlays are rendered outside the normal DOM tree at the document root level.
Applied to files:
src/components/LandingPage/CurrencySelect.tsx
📚 Learning: 2025-08-14T14:42:54.399Z
Learnt from: Zishan-7
PR: peanutprotocol/peanut-ui#1094
File: src/utils/withdraw.utils.ts:181-191
Timestamp: 2025-08-14T14:42:54.399Z
Learning: The countryCodeMap in src/components/AddMoney/consts/index.ts uses uppercase 3-letter country codes as keys (like 'AUT', 'BEL', 'CZE') that map to 2-letter country codes, requiring input normalization to uppercase for proper lookups.
Applied to files:
src/components/LandingPage/CurrencySelect.tsxsrc/constants/countryCurrencyMapping.ts
📚 Learning: 2025-08-12T17:47:28.362Z
Learnt from: Zishan-7
PR: peanutprotocol/peanut-ui#1089
File: src/app/api/bridge/exchange-rate/route.ts:4-19
Timestamp: 2025-08-12T17:47:28.362Z
Learning: In the Bridge exchange rate API route (src/app/api/bridge/exchange-rate/route.ts), the ExchangeRateResponse interface uses numeric types for rates because the route converts string values from the Bridge API to floats using parseFloat() before returning the response.
Applied to files:
src/app/api/exchange-rate/route.tsscripts/compare-rates.mjs
📚 Learning: 2025-05-22T15:38:48.586Z
Learnt from: kushagrasarathe
PR: peanutprotocol/peanut-ui#869
File: src/app/(mobile-ui)/withdraw/page.tsx:82-88
Timestamp: 2025-05-22T15:38:48.586Z
Learning: The country-specific withdrawal route exists at src/app/(mobile-ui)/withdraw/[...country]/page.tsx and renders the AddWithdrawCountriesList component with flow="withdraw".
Applied to files:
src/components/LandingPage/yourMoney.tsx
📚 Learning: 2024-10-07T15:25:45.170Z
Learnt from: jjramirezn
PR: peanutprotocol/peanut-ui#422
File: src/components/Request/Pay/Views/Initial.view.tsx:76-78
Timestamp: 2024-10-07T15:25:45.170Z
Learning: In `src/components/Request/Pay/Views/Initial.view.tsx`, both `txFee` and `utils.formatTokenAmount(...)` return strings, ensuring that `calculatedFee` consistently returns a string without the need for additional type conversion.
Applied to files:
src/components/LandingPage/noFees.tsx
📚 Learning: 2024-10-07T15:28:25.280Z
Learnt from: jjramirezn
PR: peanutprotocol/peanut-ui#422
File: src/components/Request/Pay/Views/Initial.view.tsx:76-78
Timestamp: 2024-10-07T15:28:25.280Z
Learning: In `src/components/Request/Pay/Views/Initial.view.tsx`, both `txFee` and `utils.formatTokenAmount(estimatedGasCost, 3)` return strings, ensuring consistent return types for `calculatedFee`.
Applied to files:
src/components/LandingPage/noFees.tsx
📚 Learning: 2025-08-14T09:20:37.207Z
Learnt from: Zishan-7
PR: peanutprotocol/peanut-ui#1089
File: src/components/LandingPage/hero.tsx:0-0
Timestamp: 2025-08-14T09:20:37.207Z
Learning: In the hero component at src/components/LandingPage/hero.tsx, the height was intentionally reduced from min-h-[100vh] to h-[90vh] to improve scrollability discoverability - so users can see there's more content below to scroll. The overflow-y-hidden is acceptable when other elements are adjusted to prevent clipping.
Applied to files:
src/components/LandingPage/hero.tsx
🧬 Code Graph Analysis (11)
src/components/LandingPage/dropLink.tsx (1)
src/components/0_Bruddle/Button.tsx (1)
Button(76-267)
src/app/exchange/page.tsx (1)
src/components/LandingPage/noFees.tsx (1)
NoFees(17-347)
src/components/LandingPage/CurrencySelect.tsx (2)
src/constants/countryCurrencyMapping.ts (1)
countryCurrencyMappings(9-35)src/components/Global/Icons/Icon.tsx (1)
Icon(186-195)
src/components/Global/Icons/Icon.tsx (1)
src/components/Global/Icons/chevron-down.tsx (1)
ChevronDownIcon(3-10)
src/app/api/exchange-rate/route.ts (2)
src/app/actions/exchange-rate.ts (1)
ExchangeRateResponse(8-15)scripts/compare-rates.mjs (8)
url(67-67)url(81-81)url(94-94)rate(87-87)data(75-75)data(76-76)data(86-86)data(99-99)
src/components/LandingPage/yourMoney.tsx (1)
src/components/0_Bruddle/Button.tsx (1)
Button(76-267)
src/components/LandingPage/noFees.tsx (5)
src/hooks/useExchangeRate.ts (1)
useExchangeRate(25-147)src/hooks/useDebounce.ts (1)
useDebounce(9-23)src/constants/countryCurrencyMapping.ts (1)
countryCurrencyMappings(9-35)src/components/Global/Icons/Icon.tsx (1)
Icon(186-195)src/components/0_Bruddle/Button.tsx (1)
Button(76-267)
src/components/LandingPage/RegulatedRails.tsx (1)
src/components/Global/MarqueeWrapper/index.tsx (1)
MarqueeWrapper(16-33)
src/hooks/useExchangeRate.ts (1)
src/hooks/useDebounce.ts (1)
useDebounce(9-23)
src/components/LandingPage/hero.tsx (1)
src/components/LandingPage/imageAssets.tsx (2)
CloudImages(51-116)HeroImages(118-137)
src/app/page.tsx (6)
src/components/LandingPage/RegulatedRails.tsx (1)
RegulatedRails(34-148)src/components/LandingPage/marquee.tsx (1)
Marquee(11-24)src/components/LandingPage/yourMoney.tsx (1)
YourMoney(50-89)src/components/LandingPage/securityBuiltIn.tsx (1)
SecurityBuiltIn(48-91)src/components/LandingPage/dropLink.tsx (1)
DropLink(10-70)src/components/LandingPage/faq.tsx (1)
FAQs(16-44)
🪛 Biome (2.1.2)
src/components/LandingPage/Footer.tsx
[error] 18-18: Avoid using target="_blank" without rel="noopener" or rel="noreferrer".
Opening external links in new tabs without rel="noopener" is a security risk. See the explanation for more details.
Safe fix: Add the rel="noopener" attribute.
(lint/security/noBlankTarget)
⏰ 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: Deploy-Preview
🔇 Additional comments (33)
src/components/Global/Icons/chevron-down.tsx (1)
3-10: LGTM: Icon component is clean and consistent.Uses currentColor, forwards props after defaults, and has an appropriate viewBox. No functional issues.
src/components/Global/Icons/Icon.tsx (3)
58-58: Import wiring looks correct.Named import matches the new file’s named export.
118-118: IconName union updated appropriately.The new 'chevron-down' name is added to the public API surface.
183-184: Icon registry entry added correctly.Mapping for 'chevron-down' is consistent with existing conventions.
src/components/LandingPage/imageAssets.tsx (1)
2-5: Switch to borderCloud.svg looks good.The asset swap and usages are clean, and using
.srcfor framer-motionis appropriate.
Also applies to: 59-60, 68-69, 89-90, 99-100
src/constants/countryCurrencyMapping.ts (1)
9-35: Do not normalize flagCode to uppercase — consumers expect lowercaseShort: I verified usages across the repo — flagCode values are consumed directly in flag image URLs and many consumers expect or explicitly convert to lowercase. Converting the mapping to uppercase would break flag lookups.
Files I checked (representative):
- src/constants/countryCurrencyMapping.ts — source of flagCode values (currently lowercase).
- src/components/LandingPage/CurrencySelect.tsx — passes mapping.flagCode -> used in Image src
https://flagcdn.com/w320/${countryCode}.png(no .toLowerCase()).- src/components/LandingPage/noFees.tsx — reads mapping.flagCode for display.
- src/components/Global/PeanutActionDetailsCard/index.tsx — uses countryCodeForFlag in Image src
https://flagcdn.com/w320/${countryCodeForFlag}.png.- src/components/AddWithdraw/AddWithdrawRouterView.tsx, src/components/AddMoney/components/DepositMethodList.tsx, src/components/AddMoney/components/AddMoneyBankDetails.tsx, src/components/Claim/Link/views/* — these compute two-letter codes from countryCodeMap (which uses uppercase 3‑letter keys) and then call .toLowerCase() before rendering flags — showing the repo expects lowercase at render time.
- src/components/AddMoney/consts/index.ts — countryCodeMap uses uppercase 3→2 codes (so normalization is already handled where needed).
Updated guidance (replace the original suggestion):
- Do not change flagCode values to uppercase. Keep them lowercase (no change required).
- If you want stronger guarantees, make the export readonly to avoid runtime mutation:
export const countryCurrencyMappings: readonly CountryCurrencyMapping[] = [
// existing entries (keep lowercase flagCode)
]
export default countryCurrencyMappings- Alternatively, normalize at the consumer-side (call .toLowerCase() before building flag URLs) — ensure all consumers do this consistently.
Status:
Likely an incorrect or invalid review comment.
src/components/LandingPage/hero.tsx (5)
159-159: LGTM! Layout changes align with previous requirements.The height reduction to
h-[90vh]and addition ofoverflow-y-hiddenaligns with the intentional design change to improve scrollability discoverability, as documented in the retrieved learnings.
162-162: LGTM! Consistent margin adjustments.The top margin reduction (
mt-0for mobile,md:mt-4for medium screens) maintains the responsive design pattern while providing more space for content.
165-165: LGTM! Improved positioning and sizing.The PeanutGuy positioning change to
bottom-[55%]and height reduction tomax-h-[40vh]provides better visual balance within the reduced container height.
172-172: LGTM! Responsive image sizing optimization.The width change to
md:w-[50%]provides better proportional sizing on medium screens while maintaining full width on smaller devices.
180-182: LGTM! Typography and spacing improvements.The margin adjustments (
mt-8/md:mt-12/lg:mt-6) and typography changes fromfont-roboto-flex-bold text-2xltofont-roboto-flex-extrabold text-[2.375rem]enhance visual hierarchy and readability.scripts/compare-rates.mjs (4)
1-8: LGTM! Clear script purpose and usage examples.The shebang and usage examples provide clear guidance for running the script with different configurations.
63-78: LGTM! Bridge API integration with proper error handling.The function correctly handles the Bridge API authentication and error scenarios, matching the patterns used in the main API route.
80-89: LGTM! Frankfurter API integration with rate adjustment.The function properly implements the Frankfurter API call and applies the 0.995 multiplier for rate adjustment, consistent with the main API implementation.
117-191: LGTM! Well-structured comparison logic with comprehensive analysis.The main function properly orchestrates the rate fetching, error handling, and provides comprehensive comparison tables with delta analysis. The Promise.all usage ensures efficient concurrent API calls.
src/app/api/exchange-rate/route.ts (5)
14-14: LGTM! Clear configuration for Bridge-supported pairs.The Set-based approach for defining Bridge pairs provides efficient lookup and clear configuration.
22-40: LGTM! Proper parameter validation and same-currency handling.The validation logic correctly handles missing parameters and provides an optimization for same-currency pairs with appropriate caching headers.
49-65: LGTM! Smart routing logic for Bridge API usage.The logic correctly determines when to use Bridge API directly or in reverse, with proper fallback to Frankfurter when Bridge fails.
75-133: LGTM! Robust Bridge API implementation with proper error handling.The function handles authentication, HTTP errors, response validation, and rate inversion correctly. The caching configuration with
next.revalidateis appropriate for exchange rate data.
135-160: LGTM! Frankfurter integration with rate adjustment.The Frankfurter implementation correctly applies the 50 basis points deduction (0.995 multiplier) and includes proper error handling and caching.
src/assets/illustrations/index.ts (1)
14-14: LGTM! Clean addition of new illustration export.The new export for
LandingCountriesfollows the established pattern and maintains consistency with existing exports.src/components/LandingPage/index.ts (1)
1-1: No breaking change found — businessIntegrate removed from barrel but not referenced elsewhereI searched the repository for "BusinessIntegrate"/"businessIntegrate" and found only its definition. The barrel export was changed to export dropLink instead.
- src/components/LandingPage/index.ts — now exports './dropLink' (businessIntegrate is not re-exported)
- src/components/LandingPage/businessIntegrate.tsx — defines/export function BusinessIntegrate()
Action (optional): If consumers should import BusinessIntegrate via the barrel, re-add:
export * from './businessIntegrate'src/app/exchange/page.tsx (1)
6-13: LGTM: simple, compositional /exchange page looks correctClient boundary is declared, layout wrapper is consistent, and NoFees + Footer composition is straightforward. No concerns.
src/components/LandingPage/CurrencySelect.tsx (2)
55-60: Good job using Portal to avoid clipping issuesUsing Chakra’s Portal around PopoverContent addresses overflow-hidden clipping from parent containers, aligning with our prior preference on this project.
Note: This matches the earlier learning to Portal overlays rather than relaxing parent overflow rules.
172-181: No action required — next.config.js already permits flagcdn via images.remotePatternsI inspected next.config.js: images.remotePatterns includes entries with hostname: '*' for both protocol 'http' and 'https' (lines ~27–37), so images from https://flagcdn.com are allowed.
- File: next.config.js — images.remotePatterns (lines ~27–37)
Optional: tighten to images.domains: ['flagcdn.com'] or remotePatterns: [{ protocol: 'https', hostname: 'flagcdn.com' }] for least privilege.
src/components/LandingPage/RegulatedRails.tsx (2)
62-79: LGTM: animation approach is solidViewport-driven linear cloud motion with infinite repeat is implemented cleanly and guarded for SSR. No issues.
97-101: Resolved —md:top-58is defined in tailwind.config.jsConfirmed: tailwind.config.js defines spacing
58: '14.5rem', somd:top-58is valid. No change required.Files using it:
- tailwind.config.js — spacing
58: '14.5rem'(≈ line 145)- src/components/LandingPage/noFees.tsx — class at line 171
- src/components/LandingPage/RegulatedRails.tsx — class at line 97
src/app/page.tsx (2)
14-15: LGTM: Footer + RegulatedRails integrationThe additions are correctly imported and placed; composition reads cleanly.
191-206: Render order changes look coherentThe new sequence (RegulatedRails → YourMoney → SecurityBuiltIn → SendInSeconds → DropLink → FAQs → Footer) is consistent. No functional issues spotted.
src/components/LandingPage/Footer.tsx (1)
18-20: Good security practice with rel attributes.The static analysis warning about missing
rel="noopener"is a false positive - the code correctly includesrel="noopener noreferrer"for the external link withtarget="_blank".src/assets/icons/index.ts (1)
10-19: LGTM! Well-organized icon exports.The new icon exports follow the established naming convention and maintain consistency with the existing exports. All financial service provider logos are appropriately added.
src/components/LandingPage/noFees.tsx (2)
77-78: Good URL synchronization implementation.The debounced URL updates prevent excessive history entries while maintaining state synchronization. The use of
router.replacewithscroll: falseprovides a smooth user experience.
119-122: Clean implementation of currency-specific delivery times.The conditional logic for USD vs other currencies is clear and maintainable. Good use of
useMemofor optimization.
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (5)
src/app/page.tsx(2 hunks)src/components/LandingPage/CurrencySelect.tsx(1 hunks)src/components/LandingPage/dropLink.tsx(1 hunks)src/components/LandingPage/index.ts(2 hunks)src/components/LandingPage/securityBuiltIn.tsx(3 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
- src/components/LandingPage/dropLink.tsx
- src/components/LandingPage/CurrencySelect.tsx
- src/components/LandingPage/securityBuiltIn.tsx
- src/app/page.tsx
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: Zishan-7
PR: peanutprotocol/peanut-ui#1089
File: src/app/api/bridge/exchange-rate/route.ts:4-19
Timestamp: 2025-08-12T17:47:28.362Z
Learning: In the Bridge exchange rate API route (src/app/api/bridge/exchange-rate/route.ts), the ExchangeRateResponse interface uses numeric types for rates because the route converts string values from the Bridge API to floats using parseFloat() before returning the response.
⏰ 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: Deploy-Preview
🔇 Additional comments (1)
src/components/LandingPage/index.ts (1)
1-1: Confirmed — DropLink and RegulatedRails are named exports; no change requiredBoth files export named components, so
export * from './dropLink'/export * from './RegulatedRails'will forward them correctly.
- src/components/LandingPage/dropLink.tsx — line 12:
export function DropLink() {- src/components/LandingPage/RegulatedRails.tsx — line 34:
export function RegulatedRails() {Note: the repository-wide import scan in the verification script errored due to a quoting bug; I can re-run that check if you want to confirm all import sites.
* HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * [TASK-14052] Prod release 105 (#1122) * feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <h@hugo0.com> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * fix: formatting --------- Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com>
* HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * fix: handle rpc outage when creating sendlinks * fix: formatting * fix: parallelize geting deposit index --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com>
* HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * [TASK-14052] Prod release 105 (#1122) * feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <h@hugo0.com> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * fix: formatting --------- Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com>
* HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * fix: handle rpc outage when creating sendlinks * fix: formatting * fix: parallelize geting deposit index --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com>
* HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * [TASK-14052] Prod release 105 (#1122) * feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <h@hugo0.com> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * fix: formatting --------- Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> * fix: bank claim flow runtime error (#1138) * hotfix: make iban non optional (#1139) * fix: bank claim flow runtime error * fix: dont have iban as optional * fix: merge conflicts * fix: merge external account with bank details (#1140) * fix: add id to external account (#1142) * added tg footer (#1144) * Hotfix : add missing countries - claim as guest flow (#1146) * fix: add missing countries * remove duplicate comment * fix: show error on dynamic bank account form (#1147) * fix: Invalid IBAN for UK (#1151) --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> Co-authored-by: Hugo Montenegro <hugo@peanut.to>
* HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * [TASK-14052] Prod release 105 (#1122) * feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <h@hugo0.com> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * fix: formatting --------- Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> * fix: bank claim flow runtime error (#1138) * hotfix: make iban non optional (#1139) * fix: bank claim flow runtime error * fix: dont have iban as optional * fix: merge conflicts * fix: merge external account with bank details (#1140) * fix: add id to external account (#1142) * added tg footer (#1144) * Hotfix : add missing countries - claim as guest flow (#1146) * fix: add missing countries * remove duplicate comment * fix: show error on dynamic bank account form (#1147) * fix: Invalid IBAN for UK (#1151) --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Juan José Ramírez <70615692+jjramirezn@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> Co-authored-by: Hugo Montenegro <hugo@peanut.to>
* feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <h@hugo0.com> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * Prod to staging (#1124) * HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * [TASK-14052] Prod release 105 (#1122) * feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <h@hugo0.com> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * fix: formatting --------- Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> * fix: dates in receipts (#1105) * [TASK-13865] fix: add tx info on receipt (#1109) * fix: add tx info on receipt * feat: use address explorer url for depositor address * fix(history): check befroe creating address explorer url * Fix: logged in users have to re-login after installing PWA (#1103) * store `LOCAL_STORAGE_WEB_AUTHN_KEY` in cookies * ensure backward compatibility * refactor: move syncLocalStorageToCookie call into useEffect for better lifecycle management * feat: links v2.1 req fulfilment flows (#1085) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * feat: req fulfillment exchange flow * fix: header title * feat: req fulfillment using connected external wallet * fix: navigation and ui * fix: file name * feat: abstract reusbale components from onramp flow for bank fulfilment * feat: handle onramp creation for request fulfilment * feat: reusable verification component * feat: handle bank req fulfilment for peanut users * fix: show all supported countries in req/claim bank flow * feat: show google-pay/apple-pay based on users device * fix: resolve pr review comments * fix: exhange rate hook fallback value * fix: resolve pr comments * Feat: Collect tg username (#1110) * feat: collect tg username * update animations * fix api route * add thinking peanut gif * fix typescript errors * fix typo and reset telegramHandle field on logout * fix: spacing and describe regex rules * add missing export * feat: add sound in success views (#1127) * feat: handle history ui changes for links v2.1 (#1106) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * feat: req fulfillment exchange flow * fix: header title * feat: req fulfillment using connected external wallet * fix: navigation and ui * fix: file name * feat: abstract reusbale components from onramp flow for bank fulfilment * feat: handle onramp creation for request fulfilment * feat: reusable verification component * feat: handle bank req fulfilment for peanut users * fix: show all supported countries in req/claim bank flow * feat: show google-pay/apple-pay based on users device * feat: handle bank send link claim hisotry for peanut users * feat: handle history ui changes for request fulfillment using bank accounts * fix: resolve pr review comments * fix: exhange rate hook fallback value * fix: resolve pr comments * fix: review comments * feat: badges updates (#1119) * feat: badges updates and hook to check for interactions * feat: handle badges for receipts and drawer header * feat: handle badges on request and send flow * feat: tooltip for badges * fix: tooltip positioning * fix: associate a external wallet claim to user if logged in (#1126) * fix: associate a external wallet claim to user if logged in * chore: fix comments * [TASK-14113] fix: handle rpc outage when creating sendlinks (#1120) * HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * fix: handle rpc outage when creating sendlinks * fix: formatting * fix: parallelize geting deposit index --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> * Integrate Daimo Pay (#1104) * add daimo pay * minor improvements * cleanup and add success state * resolve dependency issues * fix: formatting * fix: recent methods redirection * add functions for daimo payment in request fulfilment flow * Integrate daimo in request fulfilment flow * remove hardcoded address * add separate arbitrum usdc flow for deposits * Add risk modal * fix overlay blur * Enhance loading state indication in payment process * Add payer's address in deposit history entry * Add validation * add error handling * remove action and move logic to API route * fix errors * fix: request flow * fix: validation * fixes * add daimo flow in country specific method * fix: slider not working on first attempt * filter supported networks * create reusable daimo button * remove space * remove route.ts file and move logic to server actions * fix: infinite loading edge case * update api and remove delay * fix: layout shift * fix: shadow * update function name * fix: success receipt (#1129) * fix: roboto font not working (#1130) * fix: allow cancel link from the claim page * fix: allow canceling links from the shared receipt (#1134) * fix: send flow cta (#1133) * fix: send flow ctas * fix: success sound on send flow * fix: disabled btn on req pay flow * Fix Daimo bugs (#1132) * fix: bugs * fix cross chain deposit details not correct * fix: request screen UI * add loading state * remove old daimo button * fix: missing dependencies and dead code * add try catch finally block * remove clear Daimo errors inside the balance-check effect * fix copy * minor fixes * move ACTION_METHODS to constants file to remove circular dependency * fix: circular dependency * fix ts error * update daimo version * [TASK-14095] feat: add fallback transport to viem clients (#1131) * feat: add fallback transport to viem clients Use viem fallback transport to handle RPC errors and fallback to other providers. * style: Apply prettier formatting * test: add fallback to viem mock * fix: external claim links history ui + badges fix (#1136) * fix: external claim links history ui + badges fix * fix: resolve codderrabbit suggestions * fix: coderrabbit comment on state stale * Fix: disable add money button on default state + disable sound on IOS (#1145) * fix: add money success screen shows usernmae * disable add money button in default state * disable sound on IOS * Fix: daimo bugs part2 (#1149) * fix: black screen on IOS * fix: sucess screen showed without paying - add money flow * fix currency and double $ in txn history * fix: x-chan token size and add API to get missing token icons * fix: req fulfilment * add default value to tokenData * fix: move useeffect above transaction null check * format amount * fix: space between currency and amount (#1135) * Lock token to USDC arb for peanut ens username (#1128) * Lock token to USDC arb for peanut ens username * add comment * revert variable declaration for sanitizedValue in GeneralRecipientInput component * fix add regex to strip only from the end * [TASK-13900] Feat/kyc modal changes (#1137) * fix: pointer events * fix: modal btns not working on mobile * add missing dependency * remove close button * Chore/prod to dev 106 (#1152) * HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * [TASK-14052] Prod release 105 (#1122) * feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <h@hugo0.com> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * fix: formatting --------- Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> * fix: bank claim flow runtime error (#1138) * hotfix: make iban non optional (#1139) * fix: bank claim flow runtime error * fix: dont have iban as optional * fix: merge conflicts * fix: merge external account with bank details (#1140) * fix: add id to external account (#1142) * added tg footer (#1144) * Hotfix : add missing countries - claim as guest flow (#1146) * fix: add missing countries * remove duplicate comment * fix: show error on dynamic bank account form (#1147) * fix: Invalid IBAN for UK (#1151) --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> Co-authored-by: Hugo Montenegro <hugo@peanut.to> * [TASK-13950] Fix: incorrect token amount on second withdraw (#1150) * fix: incorrect token amount on second withdraw * move `resetTokenContextProvider()` to unmount callback * fix: transaction explorer url for deposits * fix: history skeleton copy * save token and chain details for cross chain req-fulfilments (#1154) * fix: send links history ui for senders pov when claimed to bank accounts (#1156) * fix: sort action list methods * fix: send links claimed to bank accounts history ui for senders pov * fix: issues for request link paying with bank (#1158) - Specify recipient when creating onramp for request fulfillment - Use correct amount depending on currency * fix: stop cleaning error by bic field (#1159) We now always clear before starting submission and also bic field will always show, so that logic is not needed anymore. * fix: claim country currency and amount, fallback to $ (#1164) * feat: show local bank currency incase of bank claims * fix: activity rows for sender's send link history * fix: verification modal when claiming * fix: state issue when new user tries to claim to bank * fix: request pay copy (#1165) * fix: close kyc modal btn (#1166) * Fix testing github action (#1167) * chore: remove prettier action When commiting it clashes with signature verification rules * chore: update test action setup version * fix: install first * fix: actually make sure that cancelledDate is a Date (#1170) * fix: icon and margin (#1171) * Hide pay with wallet button in Daimo component (#1172) * hide pay with wallet button * improve targeted css approach * Fix: Daimo bug and activity receipt bug (#1175) * sligify chain name * fix: stale state issue * hide row if tokenData is not present * Fix/conflicts (#1177) * HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * [TASK-14052] Prod release 105 (#1122) * feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <h@hugo0.com> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * fix: formatting --------- Co-authored-by: Kushagra Sarathe <76868364+kushagrasarathe@users.noreply.github.com> Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> * fix: bank claim flow runtime error (#1138) * hotfix: make iban non optional (#1139) * fix: bank claim flow runtime error * fix: dont have iban as optional * fix: merge conflicts * fix: merge external account with bank details (#1140) * fix: add id to external account (#1142) * added tg footer (#1144) * Hotfix : add missing countries - claim as guest flow (#1146) * fix: add missing countries * remove duplicate comment * fix: show error on dynamic bank account form (#1147) * fix: Invalid IBAN for UK (#1151) --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Juan José Ramírez <70615692+jjramirezn@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> Co-authored-by: Hugo Montenegro <hugo@peanut.to> --------- Co-authored-by: Mohd Zishan <72738005+Zishan-7@users.noreply.github.com> Co-authored-by: Hugo Montenegro <h@hugo0.com> Co-authored-by: Juan José Ramírez <70615692+jjramirezn@users.noreply.github.com> Co-authored-by: Juan José Ramírez <artjjrn@gmail.com> Co-authored-by: Hugo Montenegro <hugo@peanut.to>
No description provided.