Skip to content

Commit 77729cf

Browse files
committed
feat: expand on button style variants for buttonIcon
1 parent 4926f96 commit 77729cf

1 file changed

Lines changed: 32 additions & 27 deletions

File tree

resources/js/components/inputs/ButtonIcon.vue

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,55 @@
11
<script setup lang="ts">
2+
import { computed } from 'vue';
3+
24
const props = withDefaults(
35
defineProps<{
46
class?: string;
57
type?: 'reset' | 'submit' | 'button' | undefined;
68
disabled?: boolean;
79
title?: string;
8-
variant?: 'default' | 'ghost';
10+
variant?: 'default' | 'ghost' | 'transparent';
911
to?: string;
1012
target?: string;
1113
}>(),
1214
{
1315
variant: 'default',
1416
target: '_self',
17+
type: 'button',
1518
},
1619
);
20+
21+
const variantClass = computed(() => {
22+
switch (props.variant) {
23+
case 'ghost':
24+
return '';
25+
case 'transparent':
26+
return [
27+
'transition',
28+
'hover:bg-white hover:dark:bg-primary-dark-800',
29+
'focus:outline-none hover:text-gray-900 dark:text-neutral-100',
30+
'hocus:ring-[0.125rem] hover:ring-violet-400 hover:dark:ring-violet-700 focus:ring-white',
31+
'aria-disabled:cursor-not-allowed aria-disabled:hover:ring-neutral-200 aria-disabled:hover:dark:ring-neutral-700 aria-disabled:ring-1 aria-disabled:opacity-60',
32+
'disabled:cursor-not-allowed disabled:hover:ring-neutral-200 disabled:hover:dark:ring-neutral-700 disabled:hover:ring-1 disabled:opacity-60',
33+
].join(' ');
34+
default:
35+
return [
36+
'h-10 max-h-full aspect-square rounded-md ',
37+
'p-2 shadow-sm',
38+
'focus:outline-none text-gray-900 dark:text-neutral-100',
39+
'ring-1 ring-neutral-200 dark:ring-neutral-700 hocus:ring-[0.125rem] focus:ring-indigo-400 dark:focus:ring-indigo-500 hover:ring-violet-400 hover:dark:ring-violet-700',
40+
'bg-white dark:bg-primary-dark-800',
41+
'aria-disabled:cursor-not-allowed aria-disabled:hover:ring-neutral-200 aria-disabled:hover:dark:ring-neutral-700 aria-disabled:ring-1 aria-disabled:opacity-60',
42+
'disabled:cursor-not-allowed disabled:hover:ring-neutral-200 disabled:hover:dark:ring-neutral-700 disabled:ring-1 disabled:opacity-60',
43+
].join(' ');
44+
}
45+
});
1746
</script>
1847

1948
<template>
2049
<router-link
2150
v-if="to"
2251
:to="to"
23-
:class="`flex items-center justify-center h-10 max-h-full
24-
aspect-square rounded-md cursor-pointer focus:outline-none
25-
text-gray-900 dark:text-neutral-100
26-
${
27-
variant === 'default'
28-
? `p-2 shadow-sm
29-
ring-1 ring-neutral-200 dark:ring-neutral-700 hocus:ring-[0.125rem]
30-
focus:ring-indigo-400 dark:focus:ring-indigo-500 hover:ring-violet-400 hover:dark:ring-violet-700
31-
bg-white dark:bg-primary-dark-800
32-
aria-disabled:cursor-not-allowed aria-disabled:hover:ring-neutral-200 aria-disabled:hover:dark:ring-neutral-700 aria-disabled:ring-1 aria-disabled:opacity-60`
33-
: ''
34-
}
35-
${props.class ?? ''}`"
52+
:class="['flex items-center justify-center cursor-pointer', props.class, variantClass]"
3653
:type="props.type"
3754
:title="props.title ?? 'Button'"
3855
:aria-disabled="disabled"
@@ -43,19 +60,7 @@ const props = withDefaults(
4360
</router-link>
4461
<button
4562
v-else
46-
:class="`flex items-center justify-center h-10 max-h-full
47-
aspect-square rounded-md cursor-pointer focus:outline-none
48-
text-gray-900 dark:text-neutral-100
49-
${
50-
variant === 'default'
51-
? `p-2 shadow-sm
52-
ring-1 ring-neutral-200 dark:ring-neutral-700 hocus:ring-[0.125rem]
53-
focus:ring-indigo-400 dark:focus:ring-indigo-500 hover:ring-violet-400 hover:dark:ring-violet-700
54-
bg-white dark:bg-primary-dark-800
55-
disabled:cursor-not-allowed disabled:hover:ring-neutral-200 disabled:hover:dark:ring-neutral-700 disabled:ring-1`
56-
: ''
57-
}
58-
${props.class ?? ''} `"
63+
:class="['flex items-center justify-center cursor-pointer', props.class, variantClass]"
5964
:type="props.type"
6065
:disabled="props.disabled"
6166
:title="props.title ?? 'Icon'"

0 commit comments

Comments
 (0)