{# ProjectDetail content block - photo gallery (grid). ProjectDetail-only block type, no Actualité equivalent - see "Repeatable Block Templates (Exception)" in spec-driven-development/rules/section-component-architecture.md. Parameters: - block (object): block data with `id`, `type`, `fields.{title, images[], imagePaths[]}` (`images[]` / `imagesDark[]` = Été / Hiver media UUIDs for the editor's data-media-id / data-media-id-dark, index-aligned with `imagePaths[]` / `imageDarkPaths[]` - the resolved file paths set by ProjectDetailPageEnricher for ) MediaSelectorModal (assets/admin/media/MediaSelectorModal.ts) has no native multi-select support (one field = one picked media). Each gallery image is therefore its own `[data-editable-image="true"]` slot rather than a bulk picker - "un slot par image + bouton ajouter", per the fallback pattern documented in the redesign plan. Every slot uses `data-field="images[]"`: the trailing `[]` is ContentSerializer.ts's convention for "collect every element sharing this field name, within this block, into a single array" (see ContentSerializer.serializeSectioned()), so N slots always serialize to `fields.images = [uuid, uuid, ...]` regardless of N (including N=0/1, where a plain per-count heuristic would be ambiguous). #}