#!/usr/bin/env python3 # Run from your project root: python3 add_block_thumbnails.py import os import re BLOCKS_DIR = "src/blocks" THUMBNAILS_DIR = "public/block-thumbnails" # Fix double extension if present double = os.path.join(THUMBNAILS_DIR, "fd-team.png.png") correct = os.path.join(THUMBNAILS_DIR, "fd-team.png") if os.path.exists(double): os.rename(double, correct) print("✓ Fixed: fd-team.png.png → fd-team.png") # Block config → thumbnail mapping BLOCKS = [ ("FDHeroBlock", "fd-hero.png", "FD Hero"), ("FDAlternateHeroBlock", "fd-header-text-image-alt.png", "FD Alternativ Hero"), ("FDHeaderTextImageBlock", "fd-header-text-image.png", "FD Rubrik med bild"), ("FDCardGridBlock", "fd-card-grid.png", "FD Kortrutnät"), ("FDWideCardBlock", "fd-wide-card.png", "FD Bredt kort"), ("FDPricingCardBlock", "fd-pricing-card.png", "FD Priskort"), ("FDUspTableBlock", "fd-usp-table.png", "FD USP-tabell"), ("FDUspChecklistBlock", "fd-usp-checklist.png", "FD USP-checklista"), ("FDServicesGridBlock", "fd-services-grid.png", "FD Tjänsterrutnät"), ("FDIconBarBlock", "fd-icon-bar.png", "FD Ikonrad"), ("FDFeatureAnnouncementBlock", "fd-feature-announcement.png", "FD Funktionsnyhet"), ("FDTechPropertiesBlock", "fd-tech-properties.png", "FD Tekniska Egenskaper"), ("FDCtaSideImageBlock", "fd-cta-side-image.png", "FD CTA med bild"), ("FDFaqBlock", "fd-faq.png", "FD FAQ"), ("FDContactBlock", "fd-contact.png", "FD Kontaktformulär"), ("FDContactFormBlock", "fd-contact.png", "FD Kontaktformulär"), ("FDSpacerBlock", "fd-spacer.png", "FD Mellanrum"), ("FDLocationsGridBlock", "fd-places-grid.png", "FD Platser Grid"), ("FDStatisticsBlock", "fd-statistics.png", "FD Statistik"), ("FDPartnersLogosBlock", "fd-partners-logos.png", "FD Partnerlogotyper"), ("FDNewsletterBlock", "fd-newsletter.png", "FD Nyhetsbrev"), ("FDServiceChooserBlock", "fd-service-chooser.png", "FD Tjänsteväljare"), ("FDDataTableBlock", "fd-data-table.png", "FD Datatabell"), ("FDVpsCalculatorBlock", "fd-vps-calculator.png", "FD VPS-kalkylator"), ("FDTagsBlock", "fd-tags.png", "FD Taggar"), ("FDTextBlock", "fd-text-block.png", "FD Textblock"), ("FDCodeEmbedBlock", "fd-code-embed.png", "FD Kodinbäddning"), ("FDVideoBlock", "fd-video.png", "FD Video"), ("FDCtaBannerBlock", "fd-cta-banner.png", "FD CTA-banner"), ("FDTestimonialBlock", "fd-testimonial.png", "FD Omdöme"), ("FDTeamBlock", "fd-team.png", "FD Team"), ] print() skipped, updated, missing = 0, 0, 0 for block_name, image, alt in BLOCKS: config_path = os.path.join(BLOCKS_DIR, block_name, "config.ts") if not os.path.exists(config_path): print(f"⚠ NOT FOUND: {config_path}") missing += 1 continue content = open(config_path, encoding="utf-8").read() if "imageURL" in content: print(f"⏭ SKIPPED: {block_name} (already has imageURL)") skipped += 1 continue # Insert after the slug line new_content = re.sub( r"(slug:\s*'[^']+',)", f"\\1\n imageURL: '/block-thumbnails/{image}',\n imageAltText: '{alt}',", content, count=1, ) if new_content == content: print(f"⚠ NO MATCH: {block_name} — slug line not found, check manually") missing += 1 continue open(config_path, "w", encoding="utf-8").write(new_content) print(f"✓ UPDATED: {block_name}") updated += 1 print(f"\nDone — {updated} updated, {skipped} skipped, {missing} not found") print("\nNext steps:") print(" git add public/block-thumbnails/ src/blocks/") print(' git commit -m "feat: block thumbnails in admin UI"') print(" git push")