diff --git a/landing/app/blog/[[...slug]]/page.tsx b/landing/app/blog/[[...slug]]/page.tsx index 5b99029c38..016e62a1ca 100644 --- a/landing/app/blog/[[...slug]]/page.tsx +++ b/landing/app/blog/[[...slug]]/page.tsx @@ -25,9 +25,7 @@ function BlogList() { .getPages() .filter((p) => !p.data.draft) .sort((a, b) => { - return ( - new Date(b.data.date).getTime() - new Date(a.data.date).getTime() - ); + return new Date(b.data.date).getTime() - new Date(a.data.date).getTime(); }); return ( diff --git a/landing/app/layout.tsx b/landing/app/layout.tsx index dc7c4e9372..1e0f4abe28 100644 --- a/landing/app/layout.tsx +++ b/landing/app/layout.tsx @@ -28,8 +28,16 @@ export const metadata: Metadata = { icons: { icon: [ { url: "https://docs.better-auth.com/favicon/favicon.ico", sizes: "any" }, - { url: "https://docs.better-auth.com/favicon/favicon-32x32.png", sizes: "32x32", type: "image/png" }, - { url: "https://docs.better-auth.com/favicon/favicon-16x16.png", sizes: "16x16", type: "image/png" }, + { + url: "https://docs.better-auth.com/favicon/favicon-32x32.png", + sizes: "32x32", + type: "image/png", + }, + { + url: "https://docs.better-auth.com/favicon/favicon-16x16.png", + sizes: "16x16", + type: "image/png", + }, ], apple: "https://docs.better-auth.com/favicon/apple-touch-icon.png", }, diff --git a/landing/app/pricing/pricing-client.tsx b/landing/app/pricing/pricing-client.tsx index e06e2a69fd..ed8ad3f771 100644 --- a/landing/app/pricing/pricing-client.tsx +++ b/landing/app/pricing/pricing-client.tsx @@ -307,9 +307,9 @@ function PricingHero() {

{tier.price} {tier.note && ( - - {tier.note} - + + {tier.note} + )}

@@ -330,10 +330,10 @@ function PricingHero() { }} className="flex items-baseline justify-between py-1.5 border-b border-dashed border-foreground/[0.06] last:border-0" > - - {item.label} - - + + {item.label} + + {item.value} @@ -407,9 +407,9 @@ function PricingCard({ {tier.name} {isHighlighted && ( - - popular - + + popular + )} @@ -423,9 +423,9 @@ function PricingCard({ {tier.price} {tier.priceNote && ( - - {tier.priceNote} - + + {tier.priceNote} + )} @@ -512,21 +512,21 @@ export function PricingPageClient() { animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.3, delay: 0.05 }} > -

- - # Framework - -

+

+ + # Framework + +

-

- Community -

- +

+ Community +

+ open source
@@ -567,11 +567,11 @@ export function PricingPageClient() { animate={{ opacity: 1 }} transition={{ duration: 0.4, delay: 0.15 }} > -

- - # Infrastructure - -

+

+ + # Infrastructure + +

{/* Pricing Cards */}
@@ -587,8 +587,8 @@ export function PricingPageClient() { {" "} An event is any auth action tracked by the dashboard — sign-ins, sign-ups, session refreshes, password resets, OTP - verifications, and more. Each API call that triggers an - auth action counts as one event. + verifications, and more. Each API call that triggers an auth + action counts as one event.

@@ -599,9 +599,9 @@ export function PricingPageClient() { animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.3, delay: 0.45 }} > -

- # feature comparison -

+

+ # feature comparison +

@@ -615,8 +615,8 @@ export function PricingPageClient() { key={name} className={`text-center text-[11px] uppercase tracking-widest font-mono font-normal py-3 px-3 w-[18%] ${ name === "Pro" -? "text-foreground/80 bg-foreground/[0.025]" - : "text-foreground/60 dark:text-foreground/40" + ? "text-foreground/80 bg-foreground/[0.025]" + : "text-foreground/60 dark:text-foreground/40" }`} > {name} diff --git a/landing/components/blog/blog-left-panel.tsx b/landing/components/blog/blog-left-panel.tsx index 1a44897b19..b1b49f1351 100644 --- a/landing/components/blog/blog-left-panel.tsx +++ b/landing/components/blog/blog-left-panel.tsx @@ -1,8 +1,6 @@ import Link from "next/link"; -import { HalftoneBackground } from "@/components/landing/halftone-bg"; -import { BlogTOC } from "./blog-toc"; - import type { ReactNode } from "react"; +import { HalftoneBackground } from "@/components/landing/halftone-bg"; interface BlogPostData { title: string; @@ -96,17 +94,13 @@ export function BlogLeftPanel({ postCount, post }: BlogLeftPanelProps) {
{post.author?.name && ( - - {post.author.name} - + {post.author.name} )} {post.author?.name && post.date && ( · )} {post.date && {formatDate(post.date)}}
- - diff --git a/landing/components/docs/docs-sidebar.tsx b/landing/components/docs/docs-sidebar.tsx index 1bb55068cd..7179c3744f 100644 --- a/landing/components/docs/docs-sidebar.tsx +++ b/landing/components/docs/docs-sidebar.tsx @@ -226,12 +226,12 @@ function BranchSwitcher() { "flex w-full items-center gap-2 px-3 py-2 text-[12px] transition-colors", branch === "main" ? "text-foreground bg-foreground/5" -: "text-foreground/60 hover:text-foreground hover:bg-foreground/3", - )} - onClick={() => switchBranch("main")} - > - main - + : "text-foreground/60 hover:text-foreground hover:bg-foreground/3", + )} + onClick={() => switchBranch("main")} + > + main + Stable @@ -241,9 +241,9 @@ function BranchSwitcher() { "flex w-full items-center gap-2 px-3 py-2 text-[12px] transition-colors", branch === "canary" ? "text-foreground bg-foreground/5" -: "text-foreground/60 hover:text-foreground hover:bg-foreground/3", - )} - onClick={() => switchBranch("canary")} + : "text-foreground/60 hover:text-foreground hover:bg-foreground/3", + )} + onClick={() => switchBranch("canary")} > canary - + className="text-foreground/50" + > + diff --git a/landing/components/docs/stepper-toc.tsx b/landing/components/docs/stepper-toc.tsx index 905971da00..64e0def347 100644 --- a/landing/components/docs/stepper-toc.tsx +++ b/landing/components/docs/stepper-toc.tsx @@ -157,8 +157,8 @@ export function StepperTOC({ items, children }: StepperTOCProps) { isActive ? "text-foreground" : isVisible -? "text-foreground/60" - : "text-foreground/40 group-hover:text-foreground/65" + ? "text-foreground/60" + : "text-foreground/40 group-hover:text-foreground/65" } `} > @@ -229,8 +229,8 @@ export function StepperTOC({ items, children }: StepperTOCProps) { {sub.title} diff --git a/landing/components/landing/halftone-bg.tsx b/landing/components/landing/halftone-bg.tsx index cecae50133..7dccf835f9 100644 --- a/landing/components/landing/halftone-bg.tsx +++ b/landing/components/landing/halftone-bg.tsx @@ -277,10 +277,7 @@ export function HalftoneBackground() { className="absolute inset-0 overflow-hidden bg-background" aria-hidden="true" > - + ); } diff --git a/landing/components/landing/hero-readme.tsx b/landing/components/landing/hero-readme.tsx index 9602b37cd3..242cea2b96 100644 --- a/landing/components/landing/hero-readme.tsx +++ b/landing/components/landing/hero-readme.tsx @@ -1535,7 +1535,10 @@ export function HeroReadMe({

- Better Auth is an authentication and authorization framework. It provides a comprehensive set of features out of the box and includes a Plugin ecosystem that simplifies adding advanced functionalities and infrastructure to help own your auth at scale. + Better Auth is an authentication and authorization framework. It + provides a comprehensive set of features out of the box and + includes a Plugin ecosystem that simplifies adding advanced + functionalities and infrastructure to help own your auth at scale.

diff --git a/landing/components/landing/staggered-nav-files.tsx b/landing/components/landing/staggered-nav-files.tsx index bb17d45f79..df7aa2232a 100644 --- a/landing/components/landing/staggered-nav-files.tsx +++ b/landing/components/landing/staggered-nav-files.tsx @@ -3,7 +3,7 @@ import { AnimatePresence, MotionConfig, motion } from "framer-motion"; import { ChevronDownIcon } from "lucide-react"; import Link from "next/link"; -import { usePathname } from "next/navigation"; +import { usePathname, useRouter } from "next/navigation"; import { useCallback, useRef, useState } from "react"; import { cn } from "@/lib/utils"; import DarkPng from "../../public/branding/better-auth-logo-dark.png"; @@ -12,9 +12,7 @@ import { Logo } from "../icons/logo"; import { contents } from "../sidebar-content"; import { Badge } from "../ui/badge"; import LogoContextMenu from "./logo-context-menu"; -import { Button } from "../ui/button"; -import { useRouter } from "next/navigation"; - + interface NavFileItem { name: string; href: string; @@ -130,7 +128,7 @@ export function StaggeredNavFiles() { const dropdownBorderClass = isNarrowLeft ? "border-foreground/6" : "border-foreground/[0.08]"; - const router = useRouter(); + const _router = useRouter(); return ( <>
@@ -266,10 +264,10 @@ export function StaggeredNavFiles() { className={`font-mono text-xs uppercase tracking-wider transition-colors duration-150 whitespace-nowrap ${ active ? "text-foreground" -: "text-foreground/65 dark:text-foreground/50 group-hover/tab:text-foreground/75" - }`} - > - {item.name} + : "text-foreground/65 dark:text-foreground/50 group-hover/tab:text-foreground/75" + }`} + > + {item.name} @@ -300,10 +298,10 @@ export function StaggeredNavFiles() { ? "text-foreground" : resourcesOpen ? "text-foreground/80" -: "text-foreground/65 dark:text-foreground/50 group-hover/tab:text-foreground/75" - }`} - > - resources + : "text-foreground/65 dark:text-foreground/50 group-hover/tab:text-foreground/75" + }`} + > + resources - setMobileDocSection((prev) => + : "text-foreground/70 hover:text-foreground hover:bg-foreground/3", + )} + onClick={() => + setMobileDocSection((prev) => prev === index ? -1 : index, ) } @@ -568,10 +566,10 @@ className="p-1.5 text-foreground/55 dark:text-foreground/40 hover:text-foregroun "relative flex items-center gap-2.5 px-5 py-1.5 text-[14px] transition-all duration-150", pathname === section.href ? "text-foreground bg-foreground/6" -: "text-foreground/75 dark:text-foreground/60 hover:text-foreground/90 hover:bg-foreground/3", - )} - > - Overview + : "text-foreground/75 dark:text-foreground/60 hover:text-foreground/90 hover:bg-foreground/3", + )} + > + Overview )} {section.list.map((item, i) => { @@ -603,15 +601,15 @@ className="p-1.5 text-foreground/55 dark:text-foreground/40 hover:text-foregroun "relative flex items-center gap-2.5 px-5 py-1.5 text-[14px] transition-all duration-150", active ? "text-foreground bg-foreground/6" -: "text-foreground/75 dark:text-foreground/60 hover:text-foreground/90 hover:bg-foreground/3", - )} - > - svg]:size-[14px] transition-colors duration-150", - active - ? "text-foreground" - : "text-foreground/75 dark:text-foreground/60", + : "text-foreground/75 dark:text-foreground/60 hover:text-foreground/90 hover:bg-foreground/3", + )} + > + svg]:size-[14px] transition-colors duration-150", + active + ? "text-foreground" + : "text-foreground/75 dark:text-foreground/60", )} > @@ -695,8 +693,8 @@ className="p-1.5 text-foreground/55 dark:text-foreground/40 hover:text-foregroun isActive(item.path || item.href) || (item.href === "/docs" && isDocs) ? "text-foreground" -: "text-foreground/75 dark:text-foreground/60" - }`} + : "text-foreground/75 dark:text-foreground/60" + }`} > {item.name} @@ -725,11 +723,11 @@ className="p-1.5 text-foreground/55 dark:text-foreground/40 hover:text-foregroun }} className="px-5 pt-4" > - setMobileMenuOpen(false)} - className="flex items-center justify-center gap-1.5 w-full py-3 bg-foreground text-background font-mono text-sm uppercase tracking-wider transition-opacity hover:opacity-90" - > + setMobileMenuOpen(false)} + className="flex items-center justify-center gap-1.5 w-full py-3 bg-foreground text-background font-mono text-sm uppercase tracking-wider transition-opacity hover:opacity-90" + > get-started