feedback.tsx 931 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /**
  2. * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
  3. * SPDX-License-Identifier: MIT
  4. */
  5. import styled from 'styled-components';
  6. import { FieldError, FieldState, FieldWarning } from '@flowgram.ai/free-layout-editor';
  7. interface StatePanelProps {
  8. errors?: FieldState['errors'];
  9. warnings?: FieldState['warnings'];
  10. invalid?: boolean;
  11. }
  12. const Error = styled.span`
  13. font-size: 12px;
  14. color: red;
  15. `;
  16. const Warning = styled.span`
  17. font-size: 12px;
  18. color: orange;
  19. `;
  20. export const Feedback = ({ errors, warnings, invalid }: StatePanelProps) => {
  21. const renderFeedbacks = (fs: FieldError[] | FieldWarning[] | undefined) => {
  22. if (!fs) return null;
  23. return fs.map((f) => <span key={f.name}>{f.message}</span>);
  24. };
  25. return (
  26. <div>
  27. <div>
  28. <Error>{renderFeedbacks(errors)}</Error>
  29. </div>
  30. <div>
  31. <Warning>{renderFeedbacks(warnings)}</Warning>
  32. </div>
  33. </div>
  34. );
  35. };