{"version":3,"file":"button.cjs","sources":["../../../components/button/button.tsx"],"sourcesContent":["import { Button as ButtonPrimitive } from '@base-ui/react';\nimport { cva, cx, type VariantProps } from 'class-variance-authority';\nimport { ReactNode } from 'react';\n\nimport { Spinner } from '../spinner';\nimport styles from './button.module.css';\n\nconst button = cva(styles['button'], {\n  variants: {\n    variant: {\n      solid: styles['button-solid'],\n      outline: styles['button-outline'],\n      ghost: styles['button-ghost'],\n      text: styles['button-text']\n    },\n    size: {\n      small: styles['button-small'],\n      normal: styles['button-normal']\n    },\n    disabled: {\n      true: styles['button-disabled']\n    },\n    loading: {\n      true: styles['button-loading']\n    },\n    color: {\n      accent: styles['button-color-accent'],\n      danger: styles['button-color-danger'],\n      neutral: styles['button-color-neutral'],\n      success: styles['button-color-success']\n    }\n  },\n  compoundVariants: [\n    {\n      variant: 'solid',\n      color: 'accent',\n      className: styles['button-solid-accent']\n    },\n    {\n      variant: 'solid',\n      color: 'danger',\n      className: styles['button-solid-danger']\n    },\n    {\n      variant: 'solid',\n      color: 'neutral',\n      className: styles['button-solid-neutral']\n    },\n    {\n      variant: 'solid',\n      color: 'success',\n      className: styles['button-solid-success']\n    },\n    {\n      variant: 'outline',\n      color: 'accent',\n      className: styles['button-outline-accent']\n    },\n    {\n      variant: 'outline',\n      color: 'danger',\n      className: styles['button-outline-danger']\n    },\n    {\n      variant: 'outline',\n      color: 'neutral',\n      className: styles['button-outline-neutral']\n    },\n    {\n      variant: 'outline',\n      color: 'success',\n      className: styles['button-outline-success']\n    },\n    {\n      variant: 'ghost',\n      color: 'accent',\n      className: styles['button-ghost-accent']\n    },\n    {\n      variant: 'ghost',\n      color: 'danger',\n      className: styles['button-ghost-danger']\n    },\n    {\n      variant: 'ghost',\n      color: 'neutral',\n      className: styles['button-ghost-neutral']\n    },\n    {\n      variant: 'ghost',\n      color: 'success',\n      className: styles['button-ghost-success']\n    },\n    {\n      variant: 'text',\n      color: 'accent',\n      className: styles['button-text-accent']\n    },\n    {\n      variant: 'text',\n      color: 'danger',\n      className: styles['button-text-danger']\n    },\n    {\n      variant: 'text',\n      color: 'neutral',\n      className: styles['button-text-neutral']\n    },\n    {\n      variant: 'text',\n      color: 'success',\n      className: styles['button-text-success']\n    }\n  ],\n  defaultVariants: {\n    variant: 'solid',\n    size: 'normal',\n    color: 'accent'\n  }\n});\n\nconst getLoaderOnlyClass = (size: 'small' | 'normal' | null) =>\n  size === 'small'\n    ? styles['loader-only-button-small']\n    : styles['loader-only-button-normal'];\n\ntype ButtonProps = VariantProps<typeof button> &\n  ButtonPrimitive.Props & {\n    loading?: boolean;\n    loaderText?: ReactNode;\n    leadingIcon?: ReactNode;\n    trailingIcon?: ReactNode;\n    style?: React.CSSProperties;\n  };\n\nexport const Button = ({\n  className,\n  variant = 'solid',\n  color = 'accent',\n  size = 'normal',\n  disabled,\n  loading,\n  loaderText,\n  leadingIcon,\n  trailingIcon,\n  children,\n  render,\n  ...props\n}: ButtonProps) => {\n  const isLoaderOnly = loading && !loaderText;\n\n  return (\n    <ButtonPrimitive\n      className={cx(\n        button({ variant, size, color, disabled, loading, className }),\n        isLoaderOnly && getLoaderOnlyClass(size)\n      )}\n      disabled={disabled}\n      render={render}\n      nativeButton={!render}\n      focusableWhenDisabled={loading}\n      aria-busy={loading || undefined}\n      data-slot='button'\n      {...props}\n    >\n      {loading ? (\n        <>\n          <Spinner\n            size={1}\n            color='default'\n            aria-hidden='true'\n            data-slot='button-loader'\n          />\n          {loaderText && (\n            <span\n              className={styles['loader-text']}\n              data-slot='button-loader-text'\n            >\n              {loaderText}\n            </span>\n          )}\n        </>\n      ) : (\n        <>\n          {leadingIcon && (\n            <span\n              className={cx(styles['icon'], styles['icon-leading'])}\n              data-slot='button-leading-icon'\n            >\n              {leadingIcon}\n            </span>\n          )}\n          {children}\n          {trailingIcon && (\n            <span\n              className={cx(styles['icon'], styles['icon-trailing'])}\n              data-slot='button-trailing-icon'\n            >\n              {trailingIcon}\n            </span>\n          )}\n        </>\n      )}\n    </ButtonPrimitive>\n  );\n};\nButton.displayName = 'Button';\n"],"names":["cva","styles","_jsx","ButtonPrimitive","cx","_jsxs","_Fragment","Spinner"],"mappings":";;;;;;;;AAOA,MAAM,MAAM,GAAGA,0BAAG,CAACC,qBAAM,CAAC,QAAQ,CAAC,EAAE;AACnC,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAEA,qBAAM,CAAC,cAAc,CAAC;AAC7B,YAAA,OAAO,EAAEA,qBAAM,CAAC,gBAAgB,CAAC;AACjC,YAAA,KAAK,EAAEA,qBAAM,CAAC,cAAc,CAAC;AAC7B,YAAA,IAAI,EAAEA,qBAAM,CAAC,aAAa,CAAC;AAC5B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAEA,qBAAM,CAAC,cAAc,CAAC;AAC7B,YAAA,MAAM,EAAEA,qBAAM,CAAC,eAAe,CAAC;AAChC,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAEA,qBAAM,CAAC,iBAAiB,CAAC;AAChC,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAEA,qBAAM,CAAC,gBAAgB,CAAC;AAC/B,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,MAAM,EAAEA,qBAAM,CAAC,qBAAqB,CAAC;AACrC,YAAA,MAAM,EAAEA,qBAAM,CAAC,qBAAqB,CAAC;AACrC,YAAA,OAAO,EAAEA,qBAAM,CAAC,sBAAsB,CAAC;AACvC,YAAA,OAAO,EAAEA,qBAAM,CAAC,sBAAsB,CAAC;AACxC,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,SAAS,EAAEA,qBAAM,CAAC,qBAAqB,CAAC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,SAAS,EAAEA,qBAAM,CAAC,qBAAqB,CAAC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAEA,qBAAM,CAAC,sBAAsB,CAAC;AAC1C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAEA,qBAAM,CAAC,sBAAsB,CAAC;AAC1C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,SAAS,EAAEA,qBAAM,CAAC,uBAAuB,CAAC;AAC3C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,SAAS,EAAEA,qBAAM,CAAC,uBAAuB,CAAC;AAC3C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAEA,qBAAM,CAAC,wBAAwB,CAAC;AAC5C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAEA,qBAAM,CAAC,wBAAwB,CAAC;AAC5C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,SAAS,EAAEA,qBAAM,CAAC,qBAAqB,CAAC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,SAAS,EAAEA,qBAAM,CAAC,qBAAqB,CAAC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAEA,qBAAM,CAAC,sBAAsB,CAAC;AAC1C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAEA,qBAAM,CAAC,sBAAsB,CAAC;AAC1C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,SAAS,EAAEA,qBAAM,CAAC,oBAAoB,CAAC;AACxC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,SAAS,EAAEA,qBAAM,CAAC,oBAAoB,CAAC;AACxC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAEA,qBAAM,CAAC,qBAAqB,CAAC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAEA,qBAAM,CAAC,qBAAqB,CAAC;AACzC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,IAA+B,KACzD,IAAI,KAAK,OAAO;AACd,MAAEA,qBAAM,CAAC,0BAA0B,CAAC;AACpC,MAAEA,qBAAM,CAAC,2BAA2B,CAAC,CAAC;AAW7B,MAAA,MAAM,GAAG,CAAC,EACrB,SAAS,EACT,OAAO,GAAG,OAAO,EACjB,KAAK,GAAG,QAAQ,EAChB,IAAI,GAAG,QAAQ,EACf,QAAQ,EACR,OAAO,EACP,UAAU,EACV,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,GAAG,KAAK,EACI,KAAI;AAChB,IAAA,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC;AAE5C,IAAA,QACEC,cAAC,CAAAC,YAAe,EACd,EAAA,SAAS,EAAEC,yBAAE,CACX,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAC9D,YAAY,IAAI,kBAAkB,CAAC,IAAI,CAAC,CACzC,EACD,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,CAAC,MAAM,EACrB,qBAAqB,EAAE,OAAO,EAAA,WAAA,EACnB,OAAO,IAAI,SAAS,EACrB,WAAA,EAAA,QAAQ,KACd,KAAK,EAAA,QAAA,EAER,OAAO,IACNC,eACE,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,CAAAJ,cAAA,CAACK,eAAO,EACN,EAAA,IAAI,EAAE,CAAC,EACP,KAAK,EAAC,SAAS,EACH,aAAA,EAAA,MAAM,eACR,eAAe,EAAA,CACzB,EACD,UAAU,KACTL,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAED,qBAAM,CAAC,aAAa,CAAC,EAAA,WAAA,EACtB,oBAAoB,EAE7B,QAAA,EAAA,UAAU,EACN,CAAA,CACR,IACA,KAEHI,eACG,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAW,KACVJ,yBACE,SAAS,EAAEE,yBAAE,CAACH,qBAAM,CAAC,MAAM,CAAC,EAAEA,qBAAM,CAAC,cAAc,CAAC,CAAC,eAC3C,qBAAqB,EAAA,QAAA,EAE9B,WAAW,EAAA,CACP,CACR,EACA,QAAQ,EACR,YAAY,KACXC,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAEE,yBAAE,CAACH,qBAAM,CAAC,MAAM,CAAC,EAAEA,qBAAM,CAAC,eAAe,CAAC,CAAC,EAAA,WAAA,EAC5C,sBAAsB,EAAA,QAAA,EAE/B,YAAY,EACR,CAAA,CACR,IACA,CACJ,EAAA,CACe,EAClB;AACJ,EAAE;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}