import { makeComponentProps } from '@/composables/component' import { makeTagProps } from '@/composables/tag' import { genericComponent, propsFactory } from '@/utils' import { ExtractPropTypes, PropType, computed } from 'vue' import { UIcon, UTooltip } from '../../components' import type ColorName from '../../types/colors' export const makeUTableHeaderTextProps = propsFactory( { prependIcon: { type: [String, undefined] as PropType, default: undefined, required: false, }, appendIcon: { type: [String, undefined] as PropType, default: undefined, required: false, }, isHovered: { type: Boolean, default: false, required: false, }, isDisabled: { type: Boolean, default: false, required: false, }, ...makeComponentProps(), ...makeTagProps(), }, 'UTableHeaderText' ) export type UTableHeaderTextProps = ExtractPropTypes< typeof makeUTableHeaderTextProps > export type UTableHeaderTextSlots = { default: never } export const UTableHeaderText = genericComponent()({ name: 'UTableHeaderText', props: makeUTableHeaderTextProps(), emits: { // }, setup(props, { emit, slots }) { const textColorClasses = computed(() => { let color = 'text-gray-600' if (props.isHovered) { color = 'text-gray-700' } else if (props.isDisabled) { color = 'text-gray-300' } return color }) const iconColorClasses = computed(() => { let color = 'gray-600' if (props.isDisabled) { color = 'gray-300' } return color as ColorName }) return () => (
{slots.default?.()} {props.prependIcon ? (
{{ tooltipToggle: () => ( ), text: () => `Tooltips are used to describe or identify an element. In most scenarios, tooltips help the user understand meaning, function, or alt-text.`, }}
) : null} {props.appendIcon ? (
) : null}
) }, }) export type UTableHeaderText = InstanceType