A minimal top bar with the brand and a button, plus a column of section dots fixed at the right edge whose labels slide out on hover or focus; an IntersectionObserver moves the active dot as each section crosses the middle of the screen. On a phone the dots sit in a bottom row with the current section name, which opens a numbered section list above it. The list stays in the markup and is toggled with CSS.
npx shadcn@latest add @beste-ui/navbar114Sign in or get a license at Beste UI to see its source and install it.