Transformation complète du site HookLab de formation TikTok Shop vers une landing page haute conversion pour agence web locale ciblant les artisans du bâtiment dans le Nord (Douai, Orchies, Valenciennes). - Nouveau design system : bleu nuit/orange sur fond clair (mobile-first) - Hero avec promesse artisan + CTA orange "Réserver mon Audit" - Section "Le Système" (3 étapes : Trouvé, Choisi, Contacté) - Portfolio connecté à Sanity.io (fallback data intégré) - Section "Qui suis-je" avec carte OpenStreetMap interactive - FAQ orientée artisans avec JSON-LD pour Google - Formulaire contact audit gratuit - SEO local : 12 keywords artisans, JSON-LD LocalBusiness - Sanity.io schemas (portfolio, siteSettings) + client conditionnel - Accessibilité : skip-to-content, focus-visible, aria-labels https://claude.ai/code/session_01H2aRGDaKgarPvhay2HxN6Y
22 lines
690 B
TypeScript
22 lines
690 B
TypeScript
import { createClient, type SanityClient } from "@sanity/client";
|
|
import imageUrlBuilder from "@sanity/image-url";
|
|
|
|
const projectId = process.env.NEXT_PUBLIC_SANITY_PROJECT_ID;
|
|
|
|
// Only create the real client if projectId is configured
|
|
export const sanityClient: SanityClient | null = projectId
|
|
? createClient({
|
|
projectId,
|
|
dataset: process.env.NEXT_PUBLIC_SANITY_DATASET || "production",
|
|
apiVersion: "2024-01-01",
|
|
useCdn: true,
|
|
})
|
|
: null;
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
export function urlFor(source: any) {
|
|
if (!sanityClient) return null;
|
|
const builder = imageUrlBuilder(sanityClient);
|
|
return builder.image(source);
|
|
}
|