var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
  for (var prop in b || (b = {}))
    if (__hasOwnProp.call(b, prop))
      __defNormalProp(a, prop, b[prop]);
  if (__getOwnPropSymbols)
    for (var prop of __getOwnPropSymbols(b)) {
      if (__propIsEnum.call(b, prop))
        __defNormalProp(a, prop, b[prop]);
    }
  return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
  var target = {};
  for (var prop in source)
    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
      target[prop] = source[prop];
  if (source != null && __getOwnPropSymbols)
    for (var prop of __getOwnPropSymbols(source)) {
      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
        target[prop] = source[prop];
    }
  return target;
};
import { jsx, jsxs } from "react/jsx-runtime";
import React, { forwardRef } from "react";
import { func, node, oneOfType, bool, string } from "prop-types";
import styled from "styled-components";
import StyledButton from "./StyledButton";
import Spinner from "../../Spinner";
const SpinnerContainer = styled.div`
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
`;
const noop = () => {
};
const Button = forwardRef(
  (_a, ref) => {
    var _b = _a, {
      children = "Button",
      onClick = noop,
      full = false,
      disabled = void 0,
      inverted = false,
      small = false,
      secondary = false,
      icon: Icon,
      isLoading = false,
      "aria-label": ariaLabel
    } = _b, props = __objRest(_b, [
      "children",
      "onClick",
      "full",
      "disabled",
      "inverted",
      "small",
      "secondary",
      "icon",
      "isLoading",
      "aria-label"
    ]);
    const finalProps = __spreadValues({}, props);
    if (props.href) {
      finalProps.as = "a";
    }
    return /* @__PURE__ */ jsxs(
      StyledButton,
      __spreadProps(__spreadValues({
        ref,
        disabled: disabled || isLoading,
        "aria-disabled": disabled,
        full,
        inverted,
        onClick,
        small,
        secondary,
        isLoading,
        "aria-label": ariaLabel
      }, finalProps), {
        children: [
          Icon && /* @__PURE__ */ jsx(Icon, { role: "img" }),
          children,
          isLoading && /* @__PURE__ */ jsx(SpinnerContainer, { children: /* @__PURE__ */ jsx(Spinner, { color: "text.disabled", size: small ? "small" : "medium" }) })
        ]
      })
    );
  }
);
Button.propTypes = {
  children: node,
  disabled: bool,
  full: bool,
  inverted: bool,
  isLoading: bool,
  onClick: func,
  small: bool,
  secondary: bool,
  /** an Icon from yoga-icons package */
  icon: oneOfType([node, func]),
  href: string,
  "aria-label": string
};
Button.displayName = "Button";
var Button_default = Button;
export {
  Button_default as default
};
