{"version":3,"file":"button-custom.mjs","sources":["../../../../../../../packages/components/button/src/button-custom.ts"],"sourcesContent":["import { computed } from 'vue'\nimport { TinyColor } from '@ctrl/tinycolor'\nimport { useNamespace } from '@hd-front-end/hooks'\nimport { useFormDisabled } from '@hd-front-end/components/form'\n\nimport type { ButtonProps } from './button'\n\nexport function darken(color: TinyColor, amount = 20) {\n  return color.mix('#141414', amount).toString()\n}\n\nexport function useButtonCustomStyle(props: ButtonProps) {\n  const _disabled = useFormDisabled()\n  const ns = useNamespace('button')\n\n  // calculate hover & active color by custom color\n  // only work when custom color\n  return computed(() => {\n    let styles: Record<string, string> = {}\n\n    let buttonColor = props.color\n\n    if (buttonColor) {\n      const match = (buttonColor as string).match(/var\\((.*?)\\)/)\n      if (match) {\n        buttonColor = window\n          .getComputedStyle(window.document.documentElement)\n          .getPropertyValue(match[1])\n      }\n      const color = new TinyColor(buttonColor)\n      const activeBgColor = props.dark\n        ? color.tint(20).toString()\n        : darken(color, 20)\n\n      if (props.plain) {\n        styles = ns.cssVarBlock({\n          'bg-color': props.dark\n            ? darken(color, 90)\n            : color.tint(90).toString(),\n          'text-color': buttonColor,\n          'border-color': props.dark\n            ? darken(color, 50)\n            : color.tint(50).toString(),\n          'hover-text-color': `var(${ns.cssVarName('color-white')})`,\n          'hover-bg-color': buttonColor,\n          'hover-border-color': buttonColor,\n          'active-bg-color': activeBgColor,\n          'active-text-color': `var(${ns.cssVarName('color-white')})`,\n          'active-border-color': activeBgColor,\n        })\n\n        if (_disabled.value) {\n          styles[ns.cssVarBlockName('disabled-bg-color')] = props.dark\n            ? darken(color, 90)\n            : color.tint(90).toString()\n          styles[ns.cssVarBlockName('disabled-text-color')] = props.dark\n            ? darken(color, 50)\n            : color.tint(50).toString()\n          styles[ns.cssVarBlockName('disabled-border-color')] = props.dark\n            ? darken(color, 80)\n            : color.tint(80).toString()\n        }\n      } else {\n        const hoverBgColor = props.dark\n          ? darken(color, 30)\n          : color.tint(30).toString()\n        const textColor = color.isDark()\n          ? `var(${ns.cssVarName('color-white')})`\n          : `var(${ns.cssVarName('color-black')})`\n        styles = ns.cssVarBlock({\n          'bg-color': buttonColor,\n          'text-color': textColor,\n          'border-color': buttonColor,\n          'hover-bg-color': hoverBgColor,\n          'hover-text-color': textColor,\n          'hover-border-color': hoverBgColor,\n          'active-bg-color': activeBgColor,\n          'active-border-color': activeBgColor,\n        })\n\n        if (_disabled.value) {\n          const disabledButtonColor = props.dark\n            ? darken(color, 50)\n            : color.tint(50).toString()\n          styles[ns.cssVarBlockName('disabled-bg-color')] = disabledButtonColor\n          styles[ns.cssVarBlockName('disabled-text-color')] = props.dark\n            ? 'rgba(255, 255, 255, 0.5)'\n            : `var(${ns.cssVarName('color-white')})`\n          styles[ns.cssVarBlockName('disabled-border-color')] =\n            disabledButtonColor\n        }\n      }\n    }\n\n    return styles\n  })\n}\n"],"names":[],"mappings":"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"}