import { Building2 } from "lucide-react"; import { useEffect, useMemo, useState } from "react"; import { createPortal } from "react-dom"; import { Button } from "../../../components/ui/button"; import { t } from "../../../lib/i18n"; import { buildAuthenticatedOrgChartTenantPickerUrl, type OrgChartTenantSelection, parseOrgChartTenantSelection, } from "../orgChartPicker"; type TenantAccessPickerProps = { disabled?: boolean; selectedCount: number; onSelectTenant: (selection: OrgChartTenantSelection) => void; }; function resolveOrgFrontBaseUrl() { return ( import.meta.env.VITE_ORGFRONT_PUBLIC_URL || import.meta.env.ORGFRONT_URL || "http://localhost:5175" ); } export function TenantAccessPicker({ disabled = false, selectedCount, onSelectTenant, }: TenantAccessPickerProps) { const [pickerOpen, setPickerOpen] = useState(false); const pickerUrl = useMemo( () => buildAuthenticatedOrgChartTenantPickerUrl(resolveOrgFrontBaseUrl()), [], ); useEffect(() => { if (!pickerOpen) return; const onMessage = (event: MessageEvent) => { const selection = parseOrgChartTenantSelection(event.data); if (!selection) return; onSelectTenant(selection); setPickerOpen(false); }; window.addEventListener("message", onMessage); return () => window.removeEventListener("message", onMessage); }, [onSelectTenant, pickerOpen]); const pickerDialog = pickerOpen && typeof document !== "undefined" ? createPortal(

{t( "ui.dev.clients.general.tenant_access.picker_title", "테넌트 선택", )}

{t( "msg.dev.clients.general.tenant_access.picker_description", "orgfront 조직도에서 허용할 테넌트를 선택하면 목록에 추가됩니다.", )}