Files
unique/src/lib/hero.ts
T
rzen 7e1b200bea site: editorial tooling, grid masonry fix, new reviews + finds
UI / dev tooling
- /find/ index: sort by file birthtime desc (sub-day chronology even when
  many finds share the same frontmatter date); render the captured-at on
  its own line under the host (~0.65rem mono muted)
- New dev-only filter at the top of /find/: All / Not in lists, persisted
  in localStorage; "not in lists" hides finds referenced by any superpost
- New editorial-tags chip strip on each find card (dev-only): selected
  tags visible by default, full picker on hover/focus-within with a "…"
  button for arbitrary tag entry; clicks copy /edit-find-tag <slug> <tag>
  to the clipboard via the existing EditConfirm singleton
- New optional editorialTags: string[] field on the find collection
- New src/data/editorial-tags.json — master list of available tags (initial
  set: ["delete"]); display order follows file order

/grid/ now uses the JS Masonry component instead of CSS column-count, so
the middle column no longer "dips"; tile hover updated to match the home
page's accent-glow / no-translate style

Content
- New review: apex-markdown-processor (graduated from find of same slug;
  hero reused from the find folder)
- New review: sindre-sorhus-older-mac-apps (graduated; intentionally
  hero-less per the source page's text-only design)
- New review: superkey (added by user; hero wired in src/lib/hero.ts)
- 24 new finds captured by /daily-finds across travel, jokes, quotes,
  product picks, and indie tools
- 2 new finds superposts: 2026-05-04-a-small-atlas, 2026-05-04-off-until-needed

Misc
- daily-finds.log.md and candidate-sources.md updated with the day's runs
- build-finds skill prompt iterated by user
2026-05-04 18:57:04 -04:00

47 lines
2.2 KiB
TypeScript

import type { ImageMetadata } from 'astro';
import alcove from '../content/reviews/alcove/hero.png';
import altTab from '../content/reviews/alt-tab/hero.jpg';
import apex from '../content/reviews/apex-markdown-processor/hero.png';
import esproP7 from '../content/reviews/espro-p7-french-press/hero.jpg';
import folderPeek from '../content/reviews/folder-peek/screenshot.png';
import hyperkey from '../content/reviews/hyperkey/hero.png';
import ice from '../content/reviews/ice/ice-bar.png';
import macMouseFix from '../content/reviews/mac-mouse-fix/studio-display.png';
import superkey from '../content/reviews/superkey/hero.jpg';
import tot from '../content/reviews/tot/seven-dots.png';
import antinote from '../content/reviews/antinote/swipe.mp4';
import cotypist from '../content/reviews/cotypist/hero.mp4';
import dockdoor from '../content/reviews/dockdoor/alttab.mp4';
import fluxMarkdown from '../content/reviews/flux-markdown/demo.mp4';
import homerow from '../content/reviews/homerow/overlay.mp4';
import monocle from '../content/reviews/monocle/spotlight.mp4';
import shottr from '../content/reviews/shottr/text-erase.mp4';
import typewhisper from '../content/reviews/typewhisper/demo.mp4';
export type Hero =
| { kind: 'image'; src: ImageMetadata }
| { kind: 'video'; src: string };
export const heroes: Record<string, Hero | undefined> = {
alcove: { kind: 'image', src: alcove },
'alt-tab': { kind: 'image', src: altTab },
'apex-markdown-processor': { kind: 'image', src: apex },
'espro-p7-french-press': { kind: 'image', src: esproP7 },
'folder-peek': { kind: 'image', src: folderPeek },
hyperkey: { kind: 'image', src: hyperkey },
ice: { kind: 'image', src: ice },
'mac-mouse-fix': { kind: 'image', src: macMouseFix },
superkey: { kind: 'image', src: superkey },
tot: { kind: 'image', src: tot },
antinote: { kind: 'video', src: antinote },
cotypist: { kind: 'video', src: cotypist },
dockdoor: { kind: 'video', src: dockdoor },
'flux-markdown': { kind: 'video', src: fluxMarkdown },
homerow: { kind: 'video', src: homerow },
monocle: { kind: 'video', src: monocle },
shottr: { kind: 'video', src: shottr },
typewhisper: { kind: 'video', src: typewhisper },
};