@nuxt/ui
Version:
A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.
27 lines (26 loc) • 1.11 kB
JavaScript
import { computed, toValue } from "vue";
import { useAppConfig } from "#imports";
export function useComponentIcons(componentProps) {
const appConfig = useAppConfig();
const props = computed(() => toValue(componentProps));
const isLeading = computed(() => props.value.icon && props.value.leading || props.value.icon && !props.value.trailing || props.value.loading && !props.value.trailing || !!props.value.leadingIcon);
const isTrailing = computed(() => props.value.icon && props.value.trailing || props.value.loading && props.value.trailing || !!props.value.trailingIcon);
const leadingIconName = computed(() => {
if (props.value.loading) {
return props.value.loadingIcon || appConfig.ui.icons.loading;
}
return props.value.leadingIcon || props.value.icon;
});
const trailingIconName = computed(() => {
if (props.value.loading && !isLeading.value) {
return props.value.loadingIcon || appConfig.ui.icons.loading;
}
return props.value.trailingIcon || props.value.icon;
});
return {
isLeading,
isTrailing,
leadingIconName,
trailingIconName
};
}