forever components

Navigation

Genie Dock

A window minimises into its dock slot with a genie squeeze — it pinches to a funnel, pours down into the slot, and a thumbnail pops in — then plays back in reverse to restore; it loops on its own, or press the amber button and the slot to drive it.

cssmedium complexitymoderate motionclick

Open on the canvas to copy the code → Free account · 3 copies a day · membership goes unlimited

Live demo — the real component, running in a sandbox. One self-contained HTML file, zero dependencies. Open it on the canvas →
Worth keeping? Votes steer what gets built next — sign in to cast one, free to read

When to use it

Window managers, multi-document editors, and product tours that need to show where a minimised thing went.

When not to

Layouts where the window and the dock are not both on screen (the pour needs a visible destination); reduced-motion audiences (it degrades to a fade).

Working with an AI agent

Every component ships agent-ready metadata. An example instruction for this one:

Slow the pour by raising the 1.05s on .c15-win.is-min (and the 1000 ms timeout that follows it); change the funnel shape in the 45% keyframe's clip-path polygon; move the slot elsewhere in the dock and aim() re-targets it automatically. Theme: dark tokens live in :root, the light variant in :root[data-theme="light"]; ?theme=light or a {type:'forever:theme'} postMessage switches at runtime.

Safe to edit

  • genie duration and curve (.is-min / .is-back animations)
  • funnel shape (clip-path polygon at 45%)
  • window dressing (.c15-win contents, --win/--win-bar)
  • dock items and gradients (--g1…--g3)
  • demo cadence (phase 12 minimise / 34 restore on a 100 ms clock)
  • theme tokens (:root dark defaults + [data-theme=light] overrides)

Keep intact

  • aim() measuring the slot once (load + resize), never mid-animation
  • transform-origin 50% 100% on the window (the pour starts from its bottom edge)
  • the busy/minimised guards so a press mid-animation cannot double-fire
  • IIFE wrapper
  • visibilitychange stop/start of the phase clock
  • prefers-reduced-motion guard (fade instead of genie)
  • theme hook (?theme= bootstrap + forever:theme message listener + theme tokens)

Known limitations

  • The genie is an approximation — one clip-path funnel plus a scale, not a true mesh warp
  • The reverse animation replays the same keyframes backwards, so the restore shape mirrors the minimise exactly
  • Light re-theme via the [data-theme=light] token block; catalog bg/accent describe the dark default

dockgenieminimisewindownavigationmacosclip-pathrestore

More Navigation components

  • Magnify DockmacOS-style frosted-glass dock of six gradient tiles that scale up and lift toward the cursor; idle auto-sweep keeps it animated when untouched.
  • Hamburger MorphThree-line hamburger button spring-morphs into a glowing teal X on click; button border gains teal glow when open. Auto-cycles as demo.
  • Gooey Tab BarPill-shaped tab bar with a vermillion blob that slides between tabs using a spring easing and SVG goo filter for liquid merge effect on dark surface.
  • Radial Fan MenuA core button rotates to an X and fans five glowing stone-toned icon petals outward in a staggered spring arc; auto-cycles open/close as a demo.
  • Slide-in DrawerHamburger icon morphs to an X while a side panel slides in over a dark scrim, revealing four nav items with staggered fade-in animations.
  • Underline FollowA glowing emerald-to-tan gradient underline slides and resizes to follow hovered nav links; wanders idly across links when unhovered.