/*
 * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
 *
 * Licensed 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.
 */

import { Button } from "@base-ui/react/button";
import React, { Component } from "react";
import styles from "./ErrorBoundary.module.css.js";
export class ErrorBoundary extends Component {
  state = {
    hasError: false,
    error: null
  };
  static getDerivedStateFromError(error) {
    return {
      hasError: true,
      error
    };
  }
  componentDidCatch(error, errorInfo) {
    // eslint-disable-next-line no-console
    console.error("[ErrorBoundary]", error);
    // eslint-disable-next-line no-console
    console.error("[ErrorBoundary] Component stack:", errorInfo.componentStack);
    this.props.onError?.(error);
  }
  handleRetry = () => {
    this.setState({
      hasError: false,
      error: null
    });
  };
  render() {
    if (this.state.hasError) {
      if (this.props.fallback) {
        return this.props.fallback;
      }
      return /*#__PURE__*/React.createElement("div", {
        className: styles.errorContainer
      }, /*#__PURE__*/React.createElement("p", {
        className: styles.errorMessage
      }, this.props.errorMessage ?? "Something went wrong"), /*#__PURE__*/React.createElement(Button, {
        className: styles.retryButton,
        onClick: this.handleRetry,
        "aria-label": "Retry"
      }, "Retry"));
    }
    return this.props.children;
  }
}
//# sourceMappingURL=ErrorBoundary.js.map