22import { computed } from ' vue' ;
33import { twMerge } from ' tailwind-merge' ;
44import BillableIcon from ' @/packages/ui/src/Icons/BillableIcon.vue' ;
5+ import {
6+ Tooltip ,
7+ TooltipContent ,
8+ TooltipProvider ,
9+ TooltipTrigger ,
10+ } from ' @/packages/ui/src/tooltip' ;
511const active = defineModel ({ default: false });
612const emit = defineEmits ([' changed' ]);
713function toggleBillable() {
@@ -12,12 +18,16 @@ function toggleBillable() {
1218const props = withDefaults (
1319 defineProps <{
1420 size? : ' small' | ' base' ;
21+ faded? : boolean ;
1522 }>(),
1623 {
1724 size: ' base' ,
25+ faded: false ,
1826 }
1927);
2028
29+ const tooltipLabel = computed (() => (active .value ? ' Billable' : ' Non Billable' ));
30+
2131const iconColorClasses = computed (() => {
2232 if (active .value ) {
2333 return ' text-input-select-active focus:text-input-select-active-hover hover:text-input-select-active-hover' ;
@@ -38,17 +48,28 @@ const iconSizeWrapperClasses = props.size === 'small' ? 'w-6 sm:w-8 h-6 sm:h-8'
3848 </script >
3949
4050<template >
41- <button
42- :class ="
43- twMerge(
44- iconColorClasses,
45- iconSizeWrapperClasses,
46- 'flex-shrink-0 ring-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring transition focus:bg-card-background-separator hover:bg-card-background-separator rounded-full flex items-center justify-center'
47- )
48- "
49- @click =" toggleBillable" >
50- <BillableIcon :class =" iconSizeClasses" ></BillableIcon >
51- </button >
51+ <TooltipProvider >
52+ <Tooltip disable-closing-trigger >
53+ <TooltipTrigger as-child >
54+ <button
55+ :aria-label =" tooltipLabel"
56+ :class ="
57+ twMerge(
58+ iconColorClasses,
59+ iconSizeWrapperClasses,
60+ 'flex-shrink-0 ring-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring transition focus:bg-card-background-separator hover:bg-card-background-separator rounded-full flex items-center justify-center',
61+ faded
62+ ? 'opacity-50 group-hover:opacity-100 focus-visible:opacity-100'
63+ : ''
64+ )
65+ "
66+ @click =" toggleBillable" >
67+ <BillableIcon :class =" iconSizeClasses" ></BillableIcon >
68+ </button >
69+ </TooltipTrigger >
70+ <TooltipContent >
71+ {{ tooltipLabel }}
72+ </TooltipContent >
73+ </Tooltip >
74+ </TooltipProvider >
5275</template >
53-
54- <style scoped></style >
0 commit comments