// src/components/keywords/keywords-toolbar.tsx — « Importer ▾ » menu (design
// finale-B). Les entrées de SYNC (GSC / SE-Ranking) ont été dissoutes dans le
// menu « Sync » (SyncMenu) porté par les toolbars des pages.
"use client";
import {
  ChevronDownIcon,
  DatabaseIcon,
  ImportIcon,
  PlusIcon,
  SearchIcon,
  UploadIcon,
} from "lucide-react";
import { useState } from "react";
import { AddKeywordDialog } from "@/components/keywords/add-keyword-dialog";
import { ImportGscDialog } from "@/components/keywords/import-gsc-dialog";
import { ImportKeywordsDialog } from "@/components/keywords/import-keywords-dialog";
import { SourcesModal } from "@/components/keywords/sources/sources-modal";
import { Button } from "@/components/ui/button";
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuLabel,
  DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { RichMenuItem } from "@/components/ui/rich-menu";

export function KeywordsToolbar({
  siteId,
  onImported,
  canImportGsc,
  analyticsEnabled,
  defaultLang,
}: {
  siteId: string;
  onImported: () => void;
  canImportGsc?: boolean;
  analyticsEnabled?: boolean;
  /** Site primary language — pre-selects the import « Langue » picker. */
  defaultLang?: string;
}) {
  const [importOpen, setImportOpen] = useState(false);
  const [addOpen, setAddOpen] = useState(false);
  const [gscOpen, setGscOpen] = useState(false);
  const [sourcesOpen, setSourcesOpen] = useState(false);

  return (
    <>
      <DropdownMenu>
        <DropdownMenuTrigger asChild>
          {/* Ancre du tutoriel : le DÉCLENCHEUR, jamais les entrées qu'il
              ouvre — une ancre posée dans le menu (ou dans la Dialog qu'il
              ouvre) serait absente du document au moment où le tour démarre,
              et le point serait silencieusement filtré. */}
          <Button
            data-tour="keywords-import"
            className="group h-10 rounded-[11px] bg-blue-600 px-4 font-semibold text-[13px] text-white shadow-[0_1px_10px_rgba(61,90,254,0.35)] hover:bg-blue-500"
          >
            <ImportIcon className="size-4" aria-hidden />
            Importer
            <ChevronDownIcon
              className="size-3.5 text-white/75 transition-transform group-data-[state=open]:rotate-180"
              aria-hidden
            />
          </Button>
        </DropdownMenuTrigger>
        <DropdownMenuContent
          align="end"
          className="w-[308px] rounded-[14px] p-1.5"
        >
          <DropdownMenuLabel className="px-2.5 pt-2 pb-1.5 font-semibold text-[10.5px] text-muted-foreground/70 uppercase tracking-[0.07em]">
            Importer & ajouter
          </DropdownMenuLabel>
          <RichMenuItem
            icon={<UploadIcon />}
            iconClassName="border border-violet-500/20 bg-violet-500/12 text-violet-600 dark:text-violet-300"
            title="Déposer un fichier (auto)"
            description="CSV mots-clés, export SERP ou brief YTG — détection automatique"
            onSelect={() => setSourcesOpen(true)}
          />
          <RichMenuItem
            icon={<PlusIcon />}
            iconClassName="border border-border bg-muted text-foreground"
            title="Ajouter un mot-clé"
            description="Saisir un seul mot-clé manuellement"
            onSelect={() => setAddOpen(true)}
          />
          {analyticsEnabled ? (
            <RichMenuItem
              icon={<DatabaseIcon />}
              iconClassName="border border-blue-500/20 bg-blue-500/12 text-blue-600 dark:text-blue-300"
              title="Importer un CSV"
              description="Mangools, Semrush, SE Ranking ou Ahrefs — jusqu'à 50 Mo"
              onSelect={() => setImportOpen(true)}
            />
          ) : null}
          {canImportGsc ? (
            <RichMenuItem
              icon={<SearchIcon />}
              iconClassName="border border-emerald-500/20 bg-emerald-500/12 text-emerald-600 dark:text-emerald-300"
              title="Importer depuis GSC"
              description="Requêtes réelles de Search Console"
              onSelect={() => setGscOpen(true)}
            />
          ) : null}
        </DropdownMenuContent>
      </DropdownMenu>

      <SourcesModal
        open={sourcesOpen}
        onOpenChange={setSourcesOpen}
        siteId={siteId}
        onImported={onImported}
        analyticsEnabled={analyticsEnabled}
      />
      <AddKeywordDialog
        open={addOpen}
        onOpenChange={setAddOpen}
        siteId={siteId}
        onAdded={onImported}
      />
      {analyticsEnabled ? (
        <ImportKeywordsDialog
          open={importOpen}
          onOpenChange={setImportOpen}
          siteId={siteId}
          onImported={onImported}
          defaultLang={defaultLang}
        />
      ) : null}
      {canImportGsc ? (
        <ImportGscDialog
          open={gscOpen}
          onOpenChange={setGscOpen}
          siteId={siteId}
          onImported={onImported}
        />
      ) : null}
    </>
  );
}
