Standards
Kennel & display tools pattern
Standalone print and kiosk-display tools, separate from the public site — not embedded in a page like other patterns.
Adoptable Pets Slideshow
Full-screen, auto-advancing slideshow of adoptable pets with photo, bio, and a QR code to the adopt URL — for a lobby TV or kiosk display. Includes play/pause and a native fullscreen toggle.
Open live toolKennel Binder Cards (2-Up)
Pick up to two dogs from the manifest and print one letter page with two kennel binder cards side by side, ready for a physical binder at the shelter.
Open live toolKennel Cards (2-Up)
Fill in a dog's details manually or load one from the manifest, then print two kennel cards on a single letter page with a cut line between them.
Open live toolStandard
- These three components are self-contained, full-viewport pages with their own header and `@media print` rules — unlike every other pattern in this template, they are not meant to be embedded inside a normal page layout or previewed inline on a standards page.
- Their routes (`/tools/*`) are deliberately mounted outside the shared `SiteLayout`/`AppShell` wrapper, so no site header or footer renders around them — that chrome would print alongside the card/slideshow output otherwise.
- All three take the same core props: `pets` (`PetCardItem[]`), `orgName`, optional `orgLogoSrc`, and `adoptUrl` (encoded into an on-page QR code).
- Data source is source-agnostic — pass in `PetCardItem[]` from a local manifest, curated array, or any adapter that maps to that shape; these components have no opinion on where the pets come from.
- `AdoptableSlideshowSection` cycles automatically (`slideIntervalMs`, default 6000ms) and exposes a native Fullscreen API toggle — intended for a lobby TV or kiosk, not for embedding in page content.
- `KennelBinder2UpSection` and `KennelCards2UpSection` both target US Letter portrait (`@page { size: letter portrait }`) and lay out exactly 2 cards per printed page; use the browser's native print dialog (`window.print()`, wired to each page's print button).
- `KennelCards2UpSection` additionally lets staff hand-fill or photo-upload a card without a manifest entry (e.g. for a same-day intake at an event), unlike `KennelBinder2UpSection`, which only pulls from `pets`.
- All labels are overridable via each component's `labels` prop for i18n/site customization.
- Components: `template/src/components/patterns/AdoptableSlideshowSection.tsx`, `KennelBinder2UpSection.tsx`, `KennelCards2UpSection.tsx`
Template