"use client"; import { HorizontalTabs } from "@app/components/HorizontalTabs"; import RoleMappingConfigFields from "@app/components/RoleMappingConfigFields"; import { SwitchInput } from "@app/components/SwitchInput"; import { FormControl, FormField, FormItem, FormLabel, FormMessage } from "@app/components/ui/form"; import { Input } from "@app/components/ui/input"; import { MappingBuilderRule, RoleMappingMode } from "@app/lib/idpRoleMapping"; import { usePaidStatus } from "@app/hooks/usePaidStatus"; import { tierMatrix } from "@server/lib/billing/tierMatrix"; import { useTranslations } from "next-intl"; import type { Control } from "react-hook-form"; type Role = { roleId: number; name: string; }; export type IdpOrgMappingFieldBinding = { control: unknown; name: string; labelKey?: string; }; type AutoProvisionConfigWidgetProps = { autoProvision: boolean; onAutoProvisionChange: (checked: boolean) => void; roleMappingMode: RoleMappingMode; onRoleMappingModeChange: (mode: RoleMappingMode) => void; roles: Role[]; fixedRoleNames: string[]; onFixedRoleNamesChange: (roleNames: string[]) => void; mappingBuilderClaimPath: string; onMappingBuilderClaimPathChange: (claimPath: string) => void; mappingBuilderRules: MappingBuilderRule[]; onMappingBuilderRulesChange: (rules: MappingBuilderRule[]) => void; rawExpression: string; onRawExpressionChange: (expression: string) => void; orgMappingField: IdpOrgMappingFieldBinding; showAutoProvisionSwitch?: boolean; roleMappingFieldIdPrefix?: string; showFreeformRoleNamesHint?: boolean; autoProvisionSwitchId?: string; orgId?: string; }; export default function AutoProvisionConfigWidget({ autoProvision, onAutoProvisionChange, roleMappingMode, onRoleMappingModeChange, roles, fixedRoleNames, onFixedRoleNamesChange, mappingBuilderClaimPath, onMappingBuilderClaimPathChange, mappingBuilderRules, onMappingBuilderRulesChange, rawExpression, onRawExpressionChange, orgMappingField, showAutoProvisionSwitch = true, roleMappingFieldIdPrefix = "org-idp-auto-provision", showFreeformRoleNamesHint = false, autoProvisionSwitchId = "auto-provision-toggle", orgId }: AutoProvisionConfigWidgetProps) { const t = useTranslations(); const { isPaidUser } = usePaidStatus(); const showMappingTabs = showAutoProvisionSwitch === false || autoProvision; const orgMappingLabelKey = orgMappingField.labelKey ?? "orgMappingPathOptional"; return (
{showAutoProvisionSwitch && (
)} {showMappingTabs && (

{t("defaultMappingsOrgDescription")}

} name={orgMappingField.name} render={({ field }) => ( {t(orgMappingLabelKey)} )} />
)}
); }