diff --git a/app/layout.tsx b/app/layout.tsx index f7e343d..9ee39ba 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -23,7 +23,7 @@ const newsreader = Newsreader({ }); export const metadata: Metadata = { - title: "LBP Simulator | Balancer", + title: "Liquidity Bootstrapping Pools | Balancer", description: "Simulate a LBP sale to understand price discovery.", icons: { icon: [ diff --git a/components/layout/CommomQuestions.tsx b/components/layout/CommomQuestions.tsx index 4756d54..a01c5ac 100644 --- a/components/layout/CommomQuestions.tsx +++ b/components/layout/CommomQuestions.tsx @@ -29,7 +29,7 @@ const QUESTIONS = [ "Yes. LBPs offer the flexibility to implement structured fixed price strategies over time, enabling teams to launch tokens in a more efficient and controlled manner.", }, { - question: "I wanted to deploy a LBP on a EVM with no support. How can I proceed?", + question: "The chain I want to deploy on isn't supported yet. What are my options?", answer: "Contact our product and support team to learn more about new integrations and other issues.", }, diff --git a/components/layout/Insights.tsx b/components/layout/Insights.tsx index bdd1277..bd7a06e 100644 --- a/components/layout/Insights.tsx +++ b/components/layout/Insights.tsx @@ -33,13 +33,13 @@ const INSIGHTS = [ { subtitle: "Invert the Mechanics", paragraph: - "Reverse the standard logic by starting with high collateral weight (e.g., 90% DAI) to generate natural upward price pressure.", + "Start with high collateral weight (e.g., 90% DAI) to create natural upward price pressure as weights shift.", Icon: RefreshCcw, }, { subtitle: "Passive Accumulation", paragraph: - "Operate as an automated limit order where arbitrageurs are incentivized to fill your treasury organically as weights adjust.", + "Function as an automated limit order: arbitrageurs fill your treasury with collateral as pool weights shift, requiring no active management.", Icon: Magnet, }, { diff --git a/components/layout/KPI.tsx b/components/layout/KPI.tsx index 853d3cb..ff392db 100644 --- a/components/layout/KPI.tsx +++ b/components/layout/KPI.tsx @@ -79,35 +79,35 @@ export function KPI() {
- Historical amount raised + Total Raised
{formatCurrency(raised)}
- Liquidity bootstrapped through on-chain auctions. + Bootstrapped through on-chain auctions across all LBPs.
- LBP pools created + LBPs Launched
{formatCount(pools)}
- Verified launches across ecosystems and communities. + Completed launches across ecosystems and communities.
- Single participants + Unique participants
{formatCount(participants)}
- Unique participants across LBP launches. + Individual wallets that participated in LBP launches.
diff --git a/components/layout/Live.tsx b/components/layout/Live.tsx index 302a560..115e82d 100644 --- a/components/layout/Live.tsx +++ b/components/layout/Live.tsx @@ -34,7 +34,10 @@ export function Live() { }); return points - .map((p, idx) => `${idx === 0 ? "M" : "L"} ${p.x.toFixed(2)} ${p.y.toFixed(2)}`) + .map( + (p, idx) => + `${idx === 0 ? "M" : "L"} ${p.x.toFixed(2)} ${p.y.toFixed(2)}`, + ) .join(" "); })(); @@ -51,11 +54,12 @@ export function Live() { Live on Balancer

- Launch, divest, and buy back tokens, securely on-chain. + Launch, divest, and buy back tokens, all transparent.

- Launch with confidence using programmable LBP mechanics built for - fair price discovery and transparent allocation. + Built for fair price discovery and minimal market impact, whether + you're launching a token, executing a buyback, or divesting a + treasury position.

@@ -80,16 +84,35 @@ export function Live() {
- + - - + + - + @@ -138,7 +161,9 @@ export function Live() {
Token price - $1.50 USDC + + $1.50 USDC +
diff --git a/components/layout/UseCases.tsx b/components/layout/UseCases.tsx index e22c223..126713a 100644 --- a/components/layout/UseCases.tsx +++ b/components/layout/UseCases.tsx @@ -21,7 +21,7 @@ const SLIDES = [ slug: "buy-back", title: "Buy Back", description: - "Programmatic buy-backs with transparent price discovery and predictable liquidity.", + "Automated buybacks with transparent price discovery and controlled market impact.", benefits: ["Market Stability", "Fair Pricing", "Transparent Execution"], Icon: RefreshCcw, caseStudy: { @@ -49,7 +49,7 @@ const SLIDES = [ slug: "token-launches", title: "Token Launches", description: - "Fair price discovery for new tokens. Let the market find the right price through an LBP.", + "Let the market set the price. Fairly, transparently, and without bot interference.", benefits: ["No Bot Sniping", "Deep Initial Liquidity", "Community Driven"], Icon: Rocket, caseStudy: { @@ -81,7 +81,7 @@ const SLIDES = [ slug: "divestment", title: "Investment & Divestment", description: - "Gradual, market-driven divestment with configurable weights and transparent execution.", + "Gradually enter or exit positions with configurable parameters and minimal price impact.", benefits: ["Minimal Price Impact", "Controlled Flow", "Verified Discovery"], Icon: TrendingDown, caseStudy: { @@ -167,44 +167,46 @@ const UseCases = ({ activeIndex, onSelect, openCaseSlug }: UseCasesProps) => { return url.toString(); }, []); - const animateDeck = useCallback((currentActiveIndex: number) => { - SLIDES.forEach((_, slideIndex) => { - const wrapper = wrapperRefs.current[slideIndex]; - const card = cardRefs.current[slideIndex]; - if (!wrapper || !card) return; + const animateDeck = useCallback( + (currentActiveIndex: number) => { + SLIDES.forEach((_, slideIndex) => { + const wrapper = wrapperRefs.current[slideIndex]; + const card = cardRefs.current[slideIndex]; + if (!wrapper || !card) return; - const position = getVisualPosition(slideIndex, currentActiveIndex); - const layout = CARD_LAYOUT[position]; - const isFocused = position === 0; - const scale = isFocused ? 1.1 : 1; - const mobileOffsetY = - position === 0 ? -8 : position === 1 ? -28 : -48; - const translateX = isMobile ? 0 : layout.offsetX; - const translateY = isMobile ? mobileOffsetY : isFocused ? -18 : 0; - const rotate = isMobile ? 0 : layout.rotate; - const deckScale = isMobile ? 1 : scale; + const position = getVisualPosition(slideIndex, currentActiveIndex); + const layout = CARD_LAYOUT[position]; + const isFocused = position === 0; + const scale = isFocused ? 1.1 : 1; + const mobileOffsetY = position === 0 ? -8 : position === 1 ? -28 : -48; + const translateX = isMobile ? 0 : layout.offsetX; + const translateY = isMobile ? mobileOffsetY : isFocused ? -18 : 0; + const rotate = isMobile ? 0 : layout.rotate; + const deckScale = isMobile ? 1 : scale; - animate(wrapper, { - translateX, - translateY, - rotate, - scale: deckScale, - duration: 420, - easing: "easeOutQuad", - }); + animate(wrapper, { + translateX, + translateY, + rotate, + scale: deckScale, + duration: 420, + easing: "easeOutQuad", + }); - // Set z-index immediately to prevent overlap issues during transition - wrapper.style.zIndex = (isFocused ? 40 : layout.baseZ).toString(); + // Set z-index immediately to prevent overlap issues during transition + wrapper.style.zIndex = (isFocused ? 40 : layout.baseZ).toString(); - animate(card, { - boxShadow: isFocused - ? "0 24px 60px rgba(230, 200, 163, 0.35)" - : "0 18px 35px rgba(15, 23, 42, 0.2)", - duration: 420, - easing: "easeOutQuad", + animate(card, { + boxShadow: isFocused + ? "0 24px 60px rgba(230, 200, 163, 0.35)" + : "0 18px 35px rgba(15, 23, 42, 0.2)", + duration: 420, + easing: "easeOutQuad", + }); }); - }); - }, [isMobile]); + }, + [isMobile], + ); useEffect(() => { // Initialize styles for all slides @@ -216,8 +218,7 @@ const UseCases = ({ activeIndex, onSelect, openCaseSlug }: UseCasesProps) => { const position = getVisualPosition(slideIndex, activeIndex); const layout = CARD_LAYOUT[position]; const isFocused = position === 0; - const mobileOffsetY = - position === 0 ? -8 : position === 1 ? -28 : -48; + const mobileOffsetY = position === 0 ? -8 : position === 1 ? -28 : -48; const translateX = isMobile ? 0 : layout.offsetX; const translateY = isMobile ? mobileOffsetY : isFocused ? -18 : 0; const rotate = isMobile ? 0 : layout.rotate; diff --git a/components/lbp-simulator/Hero.tsx b/components/lbp-simulator/Hero.tsx index 785f1d7..0fa8363 100644 --- a/components/lbp-simulator/Hero.tsx +++ b/components/lbp-simulator/Hero.tsx @@ -45,7 +45,7 @@ export function Hero() { ref={subtitleRef} className="text-lg md:text-xl text-muted-foreground max-w-2xl mb-8" > - Programmable, on-chain price discovery for fair token launches, and more. + Programmable price discovery for token launches, buybacks, and treasury diversification. All on-chain.

- Get the 961 LBPs Analysis + Read the 961 LBPs Analysis