{"version":3,"file":"ButtonPrimary.cjs","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonPrimary/ButtonPrimary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAE1C,6DAAqD;AACrD,8DAAiD;AAIjD,2BAA2B;AAC3B,gDAAgD;AACnC,QAAA,aAAa,GAAG,IAAA,kBAAU,EACrC,CACE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EACnE,GAAG,EACH,EAAE;IACF,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;IAEjD,MAAM,eAAe,GAAG,IAAA,kBAAO;IAC7B,yBAAyB;IACzB,CAAC,QAAQ;QACP,CAAC,SAAS,IAAI;QACZ,sCAAsC;QACtC,mCAAmC;QACnC,SAAS,IAAI,yBAAyB;KACvC;IACH,gBAAgB;IAChB,QAAQ;QACN,CAAC,SAAS,IAAI;QACZ,qCAAqC;QACrC,mCAAmC;QACnC,SAAS,IAAI,0BAA0B;KACxC;IACH,iBAAiB;IACjB,SAAS;QACP,CAAC,QAAQ,IAAI;QACX,yBAAyB;QACzB,mCAAmC;QACnC,SAAS,IAAI,oBAAoB;KAClC;IACH,wBAAwB;IACxB,SAAS;QACP,QAAQ,IAAI;QACV,+BAA+B;QAC/B,mCAAmC;QACnC,SAAS,IAAI,oBAAoB;KAClC;IACH,sDAAsD;IACtD,aAAa,IAAI;QACf,CAAC,QAAQ;YACP,CAAC,SAAS,IAAI;YACZ,6BAA6B;YAC7B,gCAAgC;SACjC;QACH,QAAQ;YACN,CAAC,SAAS,IAAI;YACZ,8BAA8B;YAC9B,iCAAiC;SAClC;QACH,SAAS;YACP,CAAC,QAAQ,IAAI,CAAC,wBAAwB,EAAE,2BAA2B,CAAC;QACtE,SAAS;YACP,QAAQ,IAAI,CAAC,wBAAwB,EAAE,2BAA2B,CAAC;KACtE,EACD,iDAAiD,EACjD,SAAS;QACP,CAAC,CAAC,uHAAuH;QACzH,CAAC,CAAC,oHAAoH;IACxH,iBAAiB;IACjB,SAAS,IAAI,oBAAoB;IACjC,oCAAoC;IACpC,UAAU,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,EAChE,SAAS,CACV,CAAC;IAEF,OAAO,CACL,8BAAC,uBAAU,IACT,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,KAChB,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,qBAAa,CAAC,WAAW,GAAG,eAAe,CAAC","sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { twMerge } from '../../../../utils/tw-merge';\nimport { ButtonBase } from '../../../ButtonBase';\n\nimport type { ButtonPrimaryProps } from './ButtonPrimary.types';\n\n// Internal Button variant.\n// Consumers should use `Button` with `variant`.\nexport const ButtonPrimary = forwardRef<HTMLButtonElement, ButtonPrimaryProps>(\n  (\n    { className, isDanger, isInverse, isDisabled, isLoading, ...props },\n    ref,\n  ) => {\n    const isInteractive = !(isDisabled ?? isLoading);\n\n    const mergedClassName = twMerge(\n      // Default primary styles\n      !isDanger &&\n        !isInverse && [\n          'bg-icon-default text-primary-inverse',\n          // Loading state uses pressed color\n          isLoading && 'bg-icon-default-pressed',\n        ],\n      // Danger styles\n      isDanger &&\n        !isInverse && [\n          'bg-error-default text-error-inverse',\n          // Loading state uses pressed color\n          isLoading && 'bg-error-default-pressed',\n        ],\n      // Inverse styles\n      isInverse &&\n        !isDanger && [\n          'bg-default text-default',\n          // Loading state uses pressed color\n          isLoading && 'bg-default-pressed',\n        ],\n      // Inverse danger styles\n      isInverse &&\n        isDanger && [\n          'bg-default text-error-default',\n          // Loading state uses pressed color\n          isLoading && 'bg-default-pressed',\n        ],\n      // Hover/Active states - only applied when interactive\n      isInteractive && [\n        !isDanger &&\n          !isInverse && [\n            'hover:bg-icon-default-hover',\n            'active:bg-icon-default-pressed',\n          ],\n        isDanger &&\n          !isInverse && [\n            'hover:bg-error-default-hover',\n            'active:bg-error-default-pressed',\n          ],\n        isInverse &&\n          !isDanger && ['hover:bg-default-hover', 'active:bg-default-pressed'],\n        isInverse &&\n          isDanger && ['hover:bg-default-hover', 'active:bg-default-pressed'],\n      ],\n      'focus-visible:outline-none focus-visible:ring-0',\n      isInverse\n        ? 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-background-default'\n        : 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-default',\n      // Loading styles\n      isLoading && 'cursor-not-allowed',\n      // Disabled styles (but not loading)\n      isDisabled && !isLoading && ['opacity-50', 'cursor-not-allowed'],\n      className,\n    );\n\n    return (\n      <ButtonBase\n        ref={ref}\n        className={mergedClassName}\n        isDisabled={isDisabled}\n        isLoading={isLoading}\n        {...props}\n      />\n    );\n  },\n);\n\nButtonPrimary.displayName = 'ButtonPrimary';\n"]}