Repository navigation
feat(creator): add TipLeaderboard component for creator profile page - #1230
Closed
shadrach68 wants to merge 585 commits into
Closed
shadrach68 wants to merge 585 commits into
shadrach68 wants to merge 585 commits into
Conversation
…-acl-whitelist feat: add ACL whitelist viewer for admin contract integration management
…atch-trade-ui feat: add batch trade panel
…ferral-dashboard feat: implement referral dashboard with unique link, stats, paginatio…
…oud/fix/issue-999 feat: show graduated curve milestones on key details
…ntdown-buy-sell-buttons Closes accesslayerorg#998: live cooldown countdown on Buy/Sell buttons
Creators need one shareable page that aggregates everything they have deployed, so investors can evaluate a creator's activity without hopping between individual key pages (accesslayerorg#1054). Adds the profile data layer (keys filtered by creator address, stats aggregated across every key, social links resolved only when published), a localStorage-persisted follow store, the header / stats row / deployed keys grid UI, and a dedicated 404 state for unknown creator addresses. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…cesslayerorg#1051) Readers had no way to see whether contract RPC, the indexer, the API, or IPFS were healthy. Add a public /status route backed by a typed status service (GET /status, POST /status/subscribe) that renders the current state of each service, 30-day uptime history, every published incident with its affected services and start/resolution times, and an email subscribe form. The snapshot polls every 60 seconds, and the uptime math lives in pure helpers covered by unit and page tests so it stays verifiable. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…rds (accesslayerorg#1017) - Add StakingVaultService with stake/unstake API methods and types - Add stakingVault query key namespace to queryKeys factory - Add useVaultStakes, useStakeVaultMutation, useUnstakeVaultMutation hooks - Add StakeForm component with amount input, lock period selector (7/30/90/180d), estimated reward preview - Add ActiveStakesList with per-stake countdown, accrued rewards, pool balance, and unstake CTA - Unstake button disabled with tooltip during lock period (acceptance criteria) - Add StakingVaultPanel container integrating form and stakes list - Integrate StakingVaultPanel into CreatorDetailPage after StakingRewardsSection - Add unit tests for StakeForm and ActiveStakesList covering all acceptance criteria
…esslayerorg#1015 holding cap PR After the large dev rebase (20+ PRs merged including holding cap accesslayerorg#1015, batch trade accesslayerorg#1044, cooldown accesslayerorg#1043), several issues were introduced in BuySellKeyFlow and TradeDialog: - TradeDialog.tsx: priceImpactPercent guard was changed to currentSupply <= 0, incorrectly blocking valid impact calculations at supply=0 (new bonding curves). Reverted to < 0 to match calculateTradePriceImpact's own guard. Fixes 4 failing circuit breaker tests. - BuySellKeyFlow.tsx: Unused HoldingCapIndicator import and dead isCapLimitReached/isCapBreached/isCapExceeded useMemo blocks added but never rendered. Removed to fix ESLint no-unused-vars errors. - TradeDialog.tsx: Unused isCapExceeded combined variable removed (isCapLimitReached and isCapBreached used directly). - course.service.ts: holdingCap and maxHoldingCap properties missing from KeyConfig interface despite being accessed via keyConfig?.holdingCap in both BuySellKeyFlow and TradeDialog. Added with correct JSDoc (accesslayerorg#1015). Result: 31/31 circuit breaker tests pass, lint 0 errors, 0 TypeScript errors.
Add holder leaderboard page for each creator key showing top 100 holders ranked by balance. Closes accesslayerorg#1056
- course.service.ts: Restore WhitelistEntry and Course whitelist properties dropped during merge (accesslayerorg#1031) - BuySellKeyFlow.tsx: Re-integrate HoldingCapIndicator and cap limit/breach checks to satisfy holding cap tests (accesslayerorg#1015) - TradeDialog.tsx: Clean up dataset access, redundant jumps, Number.NaN, nullish coalescing, and ambiguous spacing - TradeDialog.sellPayoutDisplay.test.tsx: Acknowledge high price impact override checkbox on 5-key sell - TradeDialog.mobileBottomSheet.test.tsx: Provide safe supply in mobile trade confirmation test to avoid tripping circuit breaker
Make the creator key detail and trade flows fully usable at 375px+: - Key detail page: Key Purchase CTA row stacks vertically with a full-width 44px Buy button; Watchlist button grows to a 44px tap target; TWAP and Fee Structure rows wrap instead of overflowing. - Price chart: mobile-tuned recharts layout (tighter margins, straight x-ticks with a larger min gap, slimmer y-axis gutter) so the ResponsiveContainer-backed chart resizes cleanly without distortion. - Trade buy/sell form: the mobile bottom sheet's Cancel/Confirm and MAX buttons get >=44px tap targets, and the sheet height uses 100dvh so mobile browser chrome no longer clips it. - Activity/analytics filter tabs: horizontally scrollable rail on mobile (overflow-x-auto + new no-scrollbar utility + snap points) with 44px pills; falls back to a wrapped row on sm+. - Add tests locking in the sheet behavior, filter-tab rail, and chart resize plumbing. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…e block Merging dev into this branch spliced the accesslayerorg#1055 mobile layout in front of dev's newer whitelist/cooldown version of the Key Purchase block, leaving a duplicated <div> and an unclosed tag that broke JSX parsing: src/pages/CreatorDetailPage.tsx:698 Parsing error: Expected corresponding JSX closing tag for 'div' (failed the CI Lint step) Resolve it by keeping one wrapper with the accesslayerorg#1055 responsive classes and dev's upstream content intact: the whitelist status badge, the lockout copy, the spread/oracle indicators and the cooldown-aware CTA. The stale pre-merge Buy button is dropped in favour of dev's TradeCooldownButton, which inherits the same >=44px mobile tap target. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
…breakdown and withdrawal UI (accesslayerorg#1059)
…le-listing-purchase-ui feat(bundles): add creator key bundle listing and purchase UI (accesslayerorg#981)
Add public creator profile page with stats and social links
…uit-breaker-status-indicator feat: build circuit breaker status indicator on buy form for price im…
…e-responsive-key-detail-trade feat(accesslayerorg#1055): mobile-responsive key detail and trade pages
Resolved conflicts in src/routes.tsx by combining both changes: - Kept HolderLeaderboardPage import and routes from feature branch - Added BundlesPage and BundleDetailPage imports and routes from upstream - Added CreatorPublicProfilePage routes from upstream Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
The four new components in this PR import from modules that did not
exist in the project. Add them so tsc -b and vite build pass:
- src/components/ui/card.tsx (Card, CardHeader, CardTitle,
CardDescription, CardContent, CardFooter)
- src/components/ui/label.tsx (Label)
- src/components/ui/input.tsx (Input)
- src/components/ui/alert.tsx (Alert, AlertDescription)
- src/components/ui/badge.tsx (Badge, badgeVariants)
- src/components/ui/progress.tsx (Progress)
- src/components/ui/checkbox.tsx (Checkbox)
- src/components/ui/radio-group.tsx (RadioGroup, RadioGroupItem)
- package.json: add react-hook-form ^7.54.2
…nance-insurance-transfer-auction feat: add governance, insurance, transfer, and auction UI components
…-1147-1157-1159-1160 feat: platform pause banner, announcement composer, trade limits and spotlight auction
feat: fee discount indicator, auction UI, announcements feed, royalty dashboard (accesslayerorg#1173, accesslayerorg#1174, accesslayerorg#1175, accesslayerorg#1177)
…ues-1176-1181 feat(accesslayerorg#1176,accesslayerorg#1178,accesslayerorg#1179,accesslayerorg#1181): milestone toasts, vote delegation, insurance pool, rebalance history
…ccesslayerorg#1155) Implement batch swap interface allowing users to queue multiple buy or sell orders across different keys and submit them as a single atomic transaction with per-item slippage controls. Accessible via Batch Trade drawer from portfolio, discovery, and creator detail pages, with BatchSwapExecuted toast on confirmation.
…vernance voting, and atomic swaps (accesslayerorg#1112, accesslayerorg#1128, accesslayerorg#1126, accesslayerorg#1129)
…ator management - BootstrapPriceChart: price decline curve with countdown timer (accesslayerorg#1180) - KeySplitPanel: propose split with impact preview and timelock countdown (accesslayerorg#1182) - CommunityPolls: create/vote polls with live result bar charts (accesslayerorg#1199) - CoCreatorManagementPanel: roster table with role badges and add/remove (accesslayerorg#1202)
…112-1128-1126-1129 feat: trade confirmation slippage, whitelist panel, governance voting, and atomic swaps
- Remove unused lineStart/lineEnd from BootstrapPriceChart - Remove unused AlertTriangle from KeySplitPanel - Add missing useEffect import to KeySplitPanel
…strap-chart-split-poll-co-creator-1180-1182-1199-1202 feat: bootstrap price chart, key split panel, community polls, co-creator management
…5-batch-swap-ui feat(trade): build batch swap UI for executing multiple key trades (#…
…own (accesslayerorg#1163) - Add GET /keys/:keyId/lockup/:wallet service method, query key, and useKeyLockup hook (per-wallet cache, 404 treated as unlocked) - Add KeyLockupBadge with live days/hours/minutes countdown that removes itself at unlock - PortfolioHoldingRow: show lock-up badge and disable Sell with a LockupActive reason while locked - KeyDetail: disable Sell Key with LockupActive message + countdown and render the badge; re-enables automatically at unlock timestamp
…sue-1200-nft-badge-showcase feat(profile): add NFT badge showcase to wallet profile page
…ey-lockup-status-indicator feat(keys): implement key lock-up status indicator and sell unlock countdown (accesslayerorg#1163)
…nel-and-recent-tips-feed feat: build tipping panel and public recent tips feed on key detail page
…t banner - Implemented CampaignCard component to display individual campaign details including criteria, reward pool, and eligibility progress. - Created CampaignsSection component to list active campaigns on the discovery page, with a link to view all campaigns. - Developed SpotlightBanner component to showcase the current spotlight auction with key statistics and countdown. - Added useActiveCampaigns hook to fetch active campaigns based on the connected wallet. - Created CampaignsPage to display a full list of active campaigns with loading and error states. - Introduced campaignsService to handle API requests for active campaigns. - Added utility functions for campaign eligibility and filtering active campaigns. - Implemented tests for CampaignsSection and SpotlightBanner components to ensure proper rendering and functionality. - Added utility tests for campaign-related functions and action attribution utilities.
…ntProvider (accesslayerorg#1224) AnnouncementItem calls useAnnouncementContent, which needs a QueryClient. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…potlight-campaigns-badge-progress-cocreator-attribution-1219-1224-1225-1226 Feat/discovery spotlight campaigns badge progress cocreator attribution 1219 1224 1225 1226
…ators pay key holders pro-rata, with validation, a confirmation step, and a distribution history. The new DistributeRevenuePanel component is mounted on the dashboard's revenue tab for creators. The creator enters an amount, which is validated inline against the 1 XLM minimum, and a live preview shows how that amount splits across the top 5 eligible key holders. A confirm modal restates the total and the top holder allocations before anything is submitted. On confirm, the panel submits the distribute_revenue contract call, shows a success toast, and invalidates the holders and revenue summary queries. Confirmed distributions are persisted and listed below the panel with their date, amount, and holder count, including an empty state when no distributions exist yet. The flow is covered by component tests exercising validation, preview accuracy, the confirm and cancel paths, the submitted contract arguments, and the history update, plus unit tests for the underlying distribution utils. Closes accesslayerorg#1201
…revenue-share-distribution-UI-in-creator-dashboard Add a Distribute Revenue panel to the creator dashboard that lets creators pay key holders pro-rata, with validation, a confirmation step, and a distribution history.
✅ Deploy Preview for accesslayer ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
@shadrach68 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
|
👋 Thanks for your contribution! We don't accept pull requests directly to |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1227
Closes #1228
Adds
src/components/creator/TipLeaderboard.tsx:'Anonymous'label (italic, muted)nullwhenentriesis empty — hidden with no tips receivedcn,formatNumber, lucide icons,border-white/10card style)