{"version":3,"file":"UTabItem.mjs","names":["makeComponentProps","makeTagProps","genericComponent","propsFactory","computed","ref","setColorVolume","UBadge","makeUTabItemProps","_objectSpread","title","type","String","required","badge","undefined","active","Boolean","link","variant","size","underlinedType","buttonType","fullWidth","UTabItem","name","props","emits","click","e","setup","_ref","emit","isHovered","isActive","itemRef","BgButtonClasses","textButtonNames","shadowButtonClasses","shadow","shadowActiveButtonClasses","buttonBadgeClasses","color","value","underlinedBadgeClasses","classes","_ref2","_defineProperty","buttonClasses","_ref3","concat","underlinedClasses","_ref4","onClick","evt","switchHover","switchActive","_createVNode","_default","_resolveComponent"],"sources":["../../../src/components/UTabs/UTabItem.tsx"],"sourcesContent":["import { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\nimport { genericComponent, propsFactory } from '@/utils'\nimport { ExtractPropTypes, PropType } from 'vue'\nimport { computed, ref, VNode } from 'vue'\nimport { setColorVolume } from '@/utils/useColors'\nimport ColorName from '@/types/colors'\nimport { UBadge } from '@/components/UBadge'\n\nexport const makeUTabItemProps = propsFactory(\n  {\n    title: {\n      type: String,\n      default: 'My details',\n      required: false,\n    },\n    badge: {\n      type: [String, undefined] as PropType<string | undefined>,\n      default: undefined,\n      required: false,\n    },\n    active: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    link: {\n      type: String,\n      required: false,\n    },\n    variant: {\n      type: String,\n      default: 'button',\n      required: false,\n    },\n    size: {\n      type: String,\n      default: 'sm',\n      required: false,\n    },\n    underlinedType: {\n      type: String,\n      required: false,\n    },\n    buttonType: {\n      type: String,\n      default: 'primary',\n      required: false,\n    },\n    fullWidth: {\n      type: Boolean,\n      required: false,\n    },\n\n    ...makeComponentProps(),\n    ...makeTagProps(),\n  },\n  'UTabItem'\n)\n\nexport type UTabItemProps = ExtractPropTypes<typeof makeUTabItemProps>\n\nexport type UTabItemSlots = {\n  //\n}\n\nexport const UTabItem = genericComponent<UTabItemSlots>()({\n  name: 'UTabItem',\n\n  props: makeUTabItemProps(),\n\n  emits: {\n    click: (e: MouseEvent) => true,\n  },\n\n  setup(props, { emit }) {\n    const isHovered = ref(false)\n    const isActive = ref(false)\n\n    const itemRef = ref<VNode>()\n\n    const BgButtonClasses = computed(() => {\n      return props.buttonType === 'primary' ? 'white' : 'transparent'\n    })\n\n    const textButtonNames = computed(() => {\n      return props.buttonType === 'primary'\n        ? ('primary' as ColorName)\n        : ('gray' as ColorName)\n    })\n\n    const shadowButtonClasses = computed(() => {\n      let shadow = ''\n      if (props.buttonType === 'primary') {\n        shadow = 'active:shadow-xs-btn active:shadow-primary-100'\n      } else if (props.buttonType === 'white') {\n        shadow = 'hover:shadow-sm active:shadow-transparent'\n      }\n      return shadow\n    })\n\n    const shadowActiveButtonClasses = computed(() => {\n      let shadow = ''\n      if (props.buttonType === 'primary') {\n        shadow = 'active:shadow-xs-btn active:shadow-primary-100'\n      } else if (props.buttonType === 'white') {\n        shadow = 'shadow-sm'\n      } else if (props.buttonType === 'gray') {\n        shadow = 'active:shadow-sm'\n      }\n      return shadow\n    })\n\n    const buttonBadgeClasses = computed(() => {\n      let color = ''\n      if (\n        (props.variant === 'button' &&\n          props.buttonType === 'primary' &&\n          props.active) ||\n        (props.variant === 'button' &&\n          props.buttonType === 'primary' &&\n          !props.active &&\n          isHovered.value)\n      ) {\n        color = 'primary'\n      } else {\n        color = 'gray'\n      }\n      return color\n    })\n\n    const underlinedBadgeClasses = computed(() => {\n      let color = ''\n      if (\n        (props.variant === 'underlined' && props.active) ||\n        (props.variant === 'underlined' &&\n          !props.active &&\n          isHovered.value &&\n          !isActive.value)\n      ) {\n        color = 'primary'\n      } else {\n        color = 'gray'\n      }\n      return color\n    })\n\n    const classes = computed(() => ({\n      ['h-fit font-semibold flex justify-center items-center gap-2']: true,\n      ['w-fit py-2 px-3 text-text-sm']: props.size === 'sm' && !props.fullWidth,\n      ['w-fit py-2.5 px-3.5 text-text-md']:\n        props.size === 'md' && !props.fullWidth,\n      ['py-2 w-fit text-text-sm']: props.size === 'sm' && props.fullWidth,\n      ['py-2.5 w-fit text-text-md']: props.size === 'md' && props.fullWidth,\n    }))\n\n    const buttonClasses = computed(() => ({\n      ['rounded-md']: true,\n      [`bg-transparent hover:bg-${setColorVolume(\n        props.buttonType as ColorName,\n        50\n      )} active:bg-${\n        BgButtonClasses.value\n      } text-gray-500 hover:text-${setColorVolume(\n        textButtonNames.value,\n        700\n      )} active:text-gray-500 ${shadowButtonClasses.value}`]: !props.active,\n      [`bg-${setColorVolume(\n        props.buttonType as ColorName,\n        50\n      )} text-${setColorVolume(textButtonNames.value, 700)} ${\n        shadowActiveButtonClasses.value\n      }`]: props.active,\n    }))\n\n    const underlinedClasses = computed(() => ({\n      [`text-gray-500 hover:text-primary-700 active:text-gray-500`]:\n        !props.active,\n      ['text-primary-700 ']: props.active,\n      ['bg-transparent hover:bg-primary-50 active:bg-transparent']:\n        props.active && props.underlinedType === 'underline filled',\n    }))\n\n    const onClick = (evt: MouseEvent) => {\n      emit('click', evt)\n    }\n\n    const switchHover = () => {\n      isHovered.value = !isHovered.value\n    }\n\n    const switchActive = () => {\n      isActive.value = !isActive.value\n    }\n\n    return () => (\n      <div\n        class={[\n          props.fullWidth ? 'w-full flex justify-center' : 'w-fit',\n          'cursor-pointer',\n        ]}\n        ref={itemRef}\n        onMouseenter={switchHover}\n        onMouseleave={switchHover}\n        onMousedown={switchActive}\n        onMouseup={switchActive}\n        onClick={onClick}\n      >\n        {props.variant === 'button' && !props.link ? (\n          <div class={[classes.value, buttonClasses.value]}>\n            {!props.link ? <span>{props.title}</span> : null}\n            {props.badge !== undefined ? (\n              <UBadge size={props.size} color={buttonBadgeClasses.value}>\n                {props.badge}\n              </UBadge>\n            ) : null}\n          </div>\n        ) : null}\n        {props.variant === 'underlined' && !props.link ? (\n          <div class={[classes.value, underlinedClasses.value]}>\n            {!props.link ? <span>{props.title}</span> : null}\n            {props.badge !== undefined ? (\n              <UBadge\n                size={props.size}\n                color={underlinedBadgeClasses.value}\n                class=\"relative\"\n              >\n                {props.badge}\n              </UBadge>\n            ) : null}\n          </div>\n        ) : null}\n        {props.link ? (\n          <router-link to={props.link}>\n            {props.variant === 'button' ? (\n              <div class={[classes.value, buttonClasses.value]}>\n                <span>{props.title}</span>\n                {props.badge !== undefined ? (\n                  <UBadge size={props.size} color={buttonBadgeClasses.value}>\n                    {props.badge}\n                  </UBadge>\n                ) : null}\n              </div>\n            ) : null}\n            {props.variant === 'underlined' ? (\n              <div class={[classes.value, underlinedClasses.value]}>\n                {!props.link ? <span>{props.title}</span> : null}\n                {props.badge !== undefined ? (\n                  <UBadge\n                    size={props.size}\n                    color={underlinedBadgeClasses.value}\n                    class=\"relative\"\n                  >\n                    {props.badge}\n                  </UBadge>\n                ) : null}\n              </div>\n            ) : null}\n          </router-link>\n        ) : null}\n      </div>\n    )\n  },\n})\n\nexport type UTabItem = InstanceType<typeof UTabItem>\n"],"mappings":"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"}