import { Button } from "@xtablo/ui/components/button"; import { CopyButton } from "@xtablo/ui/components/clipboard"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "@xtablo/ui/components/dialog"; import { Label } from "@xtablo/ui/components/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@xtablo/ui/components/select"; import { TypographyMuted, TypographyP } from "@xtablo/ui/components/typography"; import { useState } from "react"; import { useTranslation } from "react-i18next"; type ColorVariant = "black" | "white" | "blue" | "purple" | "green" | "orange" | "red"; export type EmbedType = "embed" | "floating" | "normal"; interface EmbedConfig { embedType: EmbedType; backgroundVariant: ColorVariant; buttonVariant: ColorVariant; } interface EmbedConfigModalProps { isOpen: boolean; onClose: () => void; buildPublicLink: (type: "embed" | "floating" | "normal") => string; } export function EmbedConfigModal({ isOpen, onClose, buildPublicLink }: EmbedConfigModalProps) { const { t } = useTranslation("components"); const [embedConfig, setEmbedConfig] = useState({ embedType: "embed", backgroundVariant: "purple", buttonVariant: "purple", }); const getEmbedUrl = () => { const baseUrl = buildPublicLink(embedConfig.embedType); const params = new URLSearchParams({ mode: "embed", buttonVariant: embedConfig.buttonVariant, }); // Only add backgroundVariant for full embed if (embedConfig.embedType === "embed") { params.set("backgroundVariant", embedConfig.backgroundVariant); } return `${baseUrl}?${params.toString()}`; }; const generateEmbedCode = () => { const embedUrl = getEmbedUrl(); if (embedConfig.embedType === "floating") { return `
`; } return ``; }; const colorOptions: { value: ColorVariant; label: string; color: string }[] = [ { value: "black", label: t("embedConfigModal.colors.black"), color: "bg-gray-900" }, { value: "white", label: t("embedConfigModal.colors.white"), color: "bg-white" }, { value: "blue", label: t("embedConfigModal.colors.blue"), color: "bg-blue-600" }, { value: "purple", label: t("embedConfigModal.colors.purple"), color: "bg-purple-600" }, { value: "green", label: t("embedConfigModal.colors.green"), color: "bg-green-600" }, { value: "orange", label: t("embedConfigModal.colors.orange"), color: "bg-orange-600" }, { value: "red", label: t("embedConfigModal.colors.red"), color: "bg-red-600" }, ]; return ( {t("embedConfigModal.title")}
{/* Configuration Section */}
{embedConfig.embedType === "embed" && (
)}
{/* Preview Link */}
{/* Embed Code */}
{embedConfig.embedType === "floating" ? t("embedConfigModal.descriptions.floatingWidget") : t("embedConfigModal.descriptions.fullPage")}
                  {generateEmbedCode()}
                
); }