UNPKG

@lui-ui/lui-vue

Version:

This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.

87 lines (86 loc) 4.41 kB
import { computed } from "vue"; export function useTagClasses(props) { const computedTagClasses = computed(() => { const tagClasses = { display: "inline-flex", borderWidth: "border", borderStyle: "border-solid", borderRadius: props.rounded.value === "full" ? "rounded-full" : props.rounded.value === true ? { "rounded-sm": props.size.value === "xs" || props.size.value === "sm", "rounded": props.size.value === "md", "rounded-md": props.size.value === "lg" || props.size.value === "xl" } : "", padding: { "px-0.5": props.size.value === "xs", "px-1": props.size.value === "sm", "px-1.5": props.size.value === "md", "px-2": props.size.value === "lg", "px-2.5": props.size.value === "xl" }, alignItems: "items-center", fontSize: { "text-xs": props.size.value === "xs" || props.size.value === "sm", "text-sm": props.size.value === "md", "text-base": props.size.value === "lg" || props.size.value === "xl" }, // lineHeight: "leading-normal", outlineStyle: "outline-none", ringWidth: "focus-visible:ring-4", // transitionProperty: 'transition-colors transition-transform', // translate: 'active:translate-y-0.5 disabled:translate-y-0', // pointerEvents : { 'pointer-events-none': props.loading }), cursor: "cursor-pointer disabled:cursor-not-allowed", backgroundColor: props.variant.value === "solid" ? { [`bg-${props.color.value}-500 hover:bg-${props.color.value}-400 disabled:bg-secondary-500`]: props.filter.value === "none", // filter none [`bg-${props.color.value}-100 hover:bg-${props.color.value}-50 disabled:bg-secondary-100`]: props.filter.value === "lighten", // filter lighten [`bg-${props.color.value}-800 hover:bg-${props.color.value}-700 disabled:bg-secondary-800`]: props.filter.value === "darken" // filter darken } : null, textColor: props.variant.value === "solid" ? { "text-white disabled:text-secondary-300": props.filter.value === "none", // filter none [`text-${props.color.value}-500 disabled:text-secondary-300`]: props.filter.value === "lighten", // filter lighten [`text-${props.color.value}-100 disabled:text-secondary-300`]: props.filter.value === "darken" // filter darken } : { [`text-${props.color.value}-500 hover:text-${props.color.value}-400 disabled:text-secondary-500`]: props.filter.value === "none", // filter none [`text-${props.color.value}-100 hover:text-${props.color.value}-50 disabled:text-secondary-100`]: props.filter.value === "lighten", // filter lighten [`text-${props.color.value}-800 hover:text-${props.color.value}-700 disabled:text-secondary-800`]: props.filter.value === "darken" // filter darken }, borderColor: { [`border-${props.color.value}-500 hover:border-${props.color.value}-400 disabled:border-secondary-500`]: props.filter.value === "none", // filter none [`border-${props.color.value}-100 hover:border-${props.color.value}-50 disabled:border-secondary-100`]: props.filter.value === "lighten", // filter lighten [`border-${props.color.value}-800 hover:border-${props.color.value}-700 disabled:border-secondary-800`]: props.filter.value === "darken" // filter darken }, ringColor: `focus-visible:ring-${props.color.value}-500/40`, space: { "space-x-1": props.size.value === "xs" || props.size.value === "sm", "space-x-1.5": props.size.value === "md", "space-x-2": props.size.value === "lg" || props.size.value === "xl" } }; return Object.values({ ...tagClasses }); }); const computedIconSize = computed( () => props.size.value === "xs" ? "12" : props.size.value === "sm" ? "12" : props.size.value === "md" ? "16" : props.size.value === "lg" ? "20" : "20" ); const computedPrependSize = computed( () => props.size.value === "xs" || props.size.value === "sm" ? "text-xs" : props.size.value === "md" ? "text-base" : props.size.value === "lg" ? "text-xl" : "text-xl" // props.size.value === "sm" ? "md" : props.size.value === "md" ? "xl" : "2xl" ); return { computedTagClasses, computedIconSize, computedPrependSize // iconClasses }; }