Skip to content

feat(earns): revamp positions list and detail pages with new UI#3020

Open
tienkane wants to merge 35 commits intomainfrom
feat/positions-revamp
Open

feat(earns): revamp positions list and detail pages with new UI#3020
tienkane wants to merge 35 commits intomainfrom
feat/positions-revamp

Conversation

@tienkane
Copy link
Copy Markdown
Collaborator

@tienkane tienkane commented Mar 17, 2026

Summary

  • Revamp User Positions list page with updated table layout, price range visualization, and position banner
  • Revamp Position Detail page with a tabbed layout (Information, Earnings, History tabs)
  • Extract PositionDetailContext to eliminate prop drilling across detail sub-components
  • Add AnimatedNumber component and UX animations (fade-in, slide-up) to position list and detail pages
  • Improve price range visualization with tick-based positioning and interpolated current price indicator color
  • Consolidate duplicate hooks and fix re-render issues in position list for better performance

- Restyle table header and rows with theme tokens, inset borders via
  ::after pseudo-elements, and rounded corners
- Consolidate position protocol info into single badge (dex | fee | #id)
- Move status badge inline with token pair name
- Update pagination styling with subtle background and rounded corners
- Rename page title to 'My Liquidity Positions' and button to 'Claim All'
- Fix actions info helper icon alignment
@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

ADPR instance has been created!

Information

@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

…I components

  Restructure position detail into two-column layout with tab navigation
  (Information, Earnings, History). Add EarningsTab with charts, HistoryTab
  with transaction history, and InformationTab extracted from RightSection.
  Update styled components to match new design (DarkCard, CompactPriceBox,
  ClaimButton, TabMenu). Extend PositionHistory API types with transaction
  details and new history types (WITHDRAW, COLLECT_FEE).
@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

  Add onReady callback to LiquidityChart that fires when ticksAtLimit is
  computed. InformationTab now renders chart hidden until ready, preventing
  a layout jump between skeleton disappearing and chart appearing.
  in position detail
The revamp accidentally dropped the secondary action link that appears above the main action buttons, showing 'Reposition to new range' when in-range or 'Increase Liquidity' when out-of-range.
@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

…ling

  Introduce PositionDetailContext and provider to share position state across PositionDetail sub-components (Header, LeftSection, RightSection, InformationTab, EarningsTab, HistoryTab, RewardSection) instead of passing 15+ props through multiple levels. Also stabilize callbacks with useCallback/useMemo to reduce unnecessary re-renders.
@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

…oning

Replace hardcoded width/position (60%/80%/100%) with tick-based logarithmic
scale for accurate proportional display. Narrow ranges (stablecoins) now
appear visually narrower than wide ranges. Add smart price formatter that
adapts significant digits based on the difference between min/max prices
(e.g. 1.0003 vs 1.0007 shows full precision, 595.49 vs 716.42 stays concise).
Fix balance column text overflow with min-width: 0 on grid cells.
Replace the binary green/purple color logic with smooth RGB interpolation
based on the indicator's position on the range bar, matching the gradient.
Add max-width and text-overflow ellipsis to the protocol badge
(dex name, fee tier, position ID) to prevent long labels from
pushing other columns. Full text is shown on hover via tooltip.
@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

…position list

- Consolidate useKemRewards from 3 calls to 1 on UserPositions page
- Remove duplicate useZapMigrationWidget from TableContent
- Fix handleFetchUnclaimedFee stale closure with functional updater
- Memoize onSortChange and updateFiltersWithLoading callbacks
- Skip interval timer when feeInfoFromRpc is empty
- Remove unused positions prop from PositionBanner
@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

- Add RefetchIndicator progress bar during background data polling
- Add staggered fade-in animation for position rows on load/filter
- Add AnimatedNumber component with roll transition on value changes
- Apply animated numbers to banner stats and table row values
- Respect prefers-reduced-motion for all animations
- Conditionally pause RefetchIndicator animation when hidden
@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

…page

- Add fadeIn/slideDown animations to page enter, tab switch, dropdown,
  migration banner, and chart reveal
- Replace static numbers with AnimatedNumber roll transitions for fees,
  liquidity, APR, and reward values (consistent with position list)
- Fix ClaimButton disabled guards to explicitly check for undefined position
- Simplify RewardSection ClaimButton onClick to remove redundant guards
@tienkane tienkane changed the title feat(earns): revamp positions feat(earns): revamp positions list and detail pages with new UI Mar 23, 2026
@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

neikop added 15 commits March 31, 2026 16:30
Try to implement

Shadow liquidity widget UI

Continue

Refactor

Chore

Refactor add liquidity UI

Route preview

Information tab layout

Apr chart first look

Continue

Try improve

Update review modal

Refactor add liquidity

Continue

Update packages typesVersions

Update import

Add useFeedback

Continue

Refactor hooks

Minor logic components

Refactor components

Continue

Continue

Just push but no verify

Skeleton responsive

Continue

Update TokenSelector sort behavior

Chore

Refactor Information tab

Refactor

Chore fix

Chore

Update review modal

Cont update TokenSelector

Chore

Improve logic REviewModal

Improve review modal

Continue

Analytics first look
- Added VITE_ZAP_API_URL to environment configuration.
- Updated AddLiquidityWidget to handle multiple route warnings.
- Refactored EstimatedPositionApr to use new zapEarn service for APR estimation.
- Simplified ZapInfo component by removing unused pool token price function.
- Updated ReviewModal to use new zap service for building zap routes.
- Refactored useReviewTransaction to utilize new zap service.
- Cleaned up AddLiquidity context by removing unnecessary types.
- Enhanced useFeedback hook to manage multiple honeypot checks.
- Updated useZapPool to fetch token metadata using new service.
- Refactored useZapState to handle route queries with new API structure.
- Updated AddLiquidity component to build zap routes using new request format.
- Cleaned up utility functions in AddLiquidity to remove unused code.
- Added new zap service for handling zap-related API calls.
- Removed deprecated zapInService and integrated its functionality into the new zap service.
- Updated Redux store configuration to include new zap service.

Chore

Chore, readme

Fix your share <0.01%
Fix pnpm lock
Update charts

Update loading

Add Skeleton

Update loading skeleton
@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

@kyber-ci-bot
Copy link
Copy Markdown

Auto Deploy Pull Request

⚠️ Warning: Application's Ingress not ready after 1m0s

Notes:

  • Please contact SRE team to support investigate this issue.

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.

3 participants