Talk closer / contact slide
The speaker does this per talk. The last slide is the closer: a handle, links, a QR slot, a thanks line. Links change more often than decks do. You want the ending to stay correct when you regenerate the slide.
This is the slide people screenshot. A dead URL on last year’s last slide is the failure. You’re not hunting through old decks to fix it. You edit the file and re-export.
The job is to keep { handle, links: [] } next to the artboard and re-export when a link changes. The closer is one image.
Give Lerret a React component under .lerret/ and optional data. export writes a PNG. Same component, data swapped, many images. There is no batch product, no queue, no orchestrator.
The component is .lerret/talks/closer.jsx. It shows the handle, the links, a QR slot, and a thanks line. The links are an array the component maps over. Add or drop a link in the file. The layout follows. The QR slot is a slot the artboard already has. The thanks line is part of the closer.
Data is { handle, links: [] }, updated whenever the links change. Pass it with --data when you swap the file. Re-export the closer after the edit. The handle can stay. The array is what usually moves.
The image is a PNG 1920×1080. Same 16:9 as the title and the dividers. Import it as the last slide. Lerret writes the image.
You use Lerret because links change more often than decks do. Re-exporting the closer keeps the ending correct if the deck is regenerated. The handle and the link list are fields. They can’t rot in a locked text layer on a copy of the deck. A design file you forget to open, or a screenshot of last year’s last slide, will keep the dead URL.
Handle, links, QR slot, and thanks line are the closer. When a link changes, you edit the array and re-export. The slide is 1920×1080 so it matches the title and the dividers.
npx @lerret/cli@latest export --data
Pass the file when the handle or links change. Start a project with npx create-lerret@latest. More in the use cases index.