/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
interface IssueCodeProps {
  code: number;
  message: string;
}

export default function IssueCode({ code, message }: IssueCodeProps) {
  return (
    <>
      {message}{' '}
      <a
        href={`https://superset.apache.org/docs/using-superset/issue-codes#issue-${code}`}
        rel="noopener noreferrer"
        target="_blank"
      >
        <i className="fa fa-external-link" />
      </a>
    </>
  );
}
