You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CaycFixOptimizeBanner.tsx 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * SonarQube
  3. * Copyright (C) 2009-2023 SonarSource SA
  4. * mailto:info AT sonarsource DOT com
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 3 of the License, or (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public License
  17. * along with this program; if not, write to the Free Software Foundation,
  18. * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19. */
  20. import { ButtonPrimary, CardWithPrimaryBackground, SubHeadingHighlight } from 'design-system';
  21. import React from 'react';
  22. import { FormattedMessage } from 'react-intl';
  23. import DocumentationLink from '../../../components/common/DocumentationLink';
  24. import ModalButton from '../../../components/controls/ModalButton';
  25. import { translate } from '../../../helpers/l10n';
  26. interface Props {
  27. renderCaycModal: ({ onClose }: { onClose: () => void }) => React.ReactNode;
  28. isOptimizing?: boolean;
  29. }
  30. export default function CaycNonCompliantBanner({ renderCaycModal, isOptimizing }: Readonly<Props>) {
  31. return (
  32. <CardWithPrimaryBackground className="sw-mb-9 sw-p-8">
  33. <SubHeadingHighlight className="sw-mb-2">
  34. {translate(
  35. isOptimizing
  36. ? 'quality_gates.cayc_optimize.banner.title'
  37. : 'quality_gates.cayc_missing.banner.title',
  38. )}
  39. </SubHeadingHighlight>
  40. <div>
  41. <FormattedMessage
  42. id={
  43. isOptimizing
  44. ? 'quality_gates.cayc_optimize.banner.description'
  45. : 'quality_gates.cayc_missing.banner.description'
  46. }
  47. values={{
  48. cayc_link: (
  49. <DocumentationLink to="/user-guide/clean-as-you-code/">
  50. {translate('quality_gates.cayc')}
  51. </DocumentationLink>
  52. ),
  53. }}
  54. />
  55. </div>
  56. <ModalButton modal={renderCaycModal}>
  57. {({ onClick }) => (
  58. <ButtonPrimary className="sw-mt-4" onClick={onClick}>
  59. {translate(
  60. isOptimizing
  61. ? 'quality_gates.cayc_condition.review_optimize'
  62. : 'quality_gates.cayc_condition.review_update',
  63. )}
  64. </ButtonPrimary>
  65. )}
  66. </ModalButton>
  67. </CardWithPrimaryBackground>
  68. );
  69. }