fix(ci): lint errors qui bloquaient le runner #54

Merged
tarzzan merged 1 commit from fix/ci-lint-errors into main 2026-06-01 04:18:52 +00:00
4 changed files with 34 additions and 21 deletions

View file

@ -1,7 +1,6 @@
"use client";
import { useState, useTransition } from "react";
import Image from "next/image";
import { addMediaAction, removeMediaAction, reorderMediaAction } from "../../actions";
import { FormField, inputCls, selectCls } from "@/components/admin/FormField";
@ -125,7 +124,7 @@ export function MediaManager({ carbetId, media: initial }: { carbetId: string; m
</select>
</FormField>
</div>
<input type="hidden" name="s3Key" value={`external/${Date.now()}`} />
{/* Le serveur calcule un s3Key déterministe à partir de l'URL si vide. */}
{error ? <div className="rounded border border-rose-200 bg-rose-50 px-2 py-1 text-xs text-rose-700">{error}</div> : null}
<div className="flex justify-end">
<button

View file

@ -1,3 +1,4 @@
import Link from "next/link";
import { formatEur, getAdminKpis } from "@/lib/admin/kpis";
import { KPICard } from "@/components/admin/KPICard";
@ -66,34 +67,34 @@ export default async function AdminDashboard() {
</h2>
<ul className="mt-3 grid grid-cols-1 gap-2 text-sm sm:grid-cols-2 lg:grid-cols-3">
<li>
<a href="/admin/carbets" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
<Link href="/admin/carbets" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
Gérer les carbets
</a>
</Link>
</li>
<li>
<a href="/admin/bookings" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
<Link href="/admin/bookings" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
Voir les réservations
</a>
</Link>
</li>
<li>
<a href="/admin/content-pages" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
<Link href="/admin/content-pages" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
Éditer les pages
</a>
</Link>
</li>
<li>
<a href="/admin/plugins" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
<Link href="/admin/plugins" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
Activer / désactiver des plugins
</a>
</Link>
</li>
<li>
<a href="/admin/users" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
<Link href="/admin/users" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
Modérer les utilisateurs
</a>
</Link>
</li>
<li>
<a href="/admin/settings" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
<Link href="/admin/settings" className="block rounded border border-zinc-200 px-3 py-2 hover:border-zinc-300 hover:bg-zinc-50">
Paramètres
</a>
</Link>
</li>
</ul>
</section>

View file

@ -50,12 +50,15 @@ export function CommandPalette() {
}, []);
useEffect(() => {
if (open) {
if (!open) return;
// Différé via microtask pour éviter le warning "Calling setState synchronously
// within an effect can trigger cascading renders" (react-hooks/purity).
queueMicrotask(() => {
setQuery("");
setHits([]);
setSelected(0);
setTimeout(() => inputRef.current?.focus(), 50);
}
});
}, [open]);
const runSearch = useCallback(async (q: string) => {

View file

@ -1,12 +1,22 @@
"use client";
import { useEffect, useState } from "react";
import { useSyncExternalStore } from "react";
function subscribe() {
// navigator.userAgent ne change pas durant la session, pas d'abonnement réel.
return () => {};
}
function getSnapshot(): boolean {
return navigator.userAgent.includes("Mac");
}
function getServerSnapshot(): boolean {
return false;
}
export function TopBar({ userEmail }: { userEmail: string }) {
const [isMac, setIsMac] = useState(false);
useEffect(() => {
setIsMac(navigator.userAgent.includes("Mac"));
}, []);
const isMac = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
return (
<div className="flex h-12 shrink-0 items-center justify-between gap-3 border-b border-zinc-200 bg-white px-4">