aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/FavoriteButton.vue27
-rw-r--r--src/components/InputCopyable.vue13
-rw-r--r--src/components/NavbarButtons.vue83
-rw-r--r--src/components/SpanCopyable.vue16
-rw-r--r--src/components/TextareaCopyable.vue40
5 files changed, 62 insertions, 117 deletions
diff --git a/src/components/FavoriteButton.vue b/src/components/FavoriteButton.vue
index ef180a6..c3f0aaa 100644
--- a/src/components/FavoriteButton.vue
+++ b/src/components/FavoriteButton.vue
@@ -1,6 +1,4 @@
<script setup lang="ts">
-import { FavoriteFilled } from '@vicons/material';
-
import { useToolStore } from '@/tools/tools.store';
import type { Tool } from '@/tools/tools.types';
@@ -26,18 +24,15 @@ function toggleFavorite(event: MouseEvent) {
</script>
<template>
- <n-tooltip trigger="hover">
- <template #trigger>
- <c-button
- variant="text"
- circle
- :type="buttonType"
- :style="{ opacity: isFavorite ? 1 : 0.2 }"
- @click="toggleFavorite"
- >
- <n-icon :component="FavoriteFilled" />
- </c-button>
- </template>
- {{ isFavorite ? 'Remove from favorites' : 'Add to favorites' }}
- </n-tooltip>
+ <c-tooltip :tooltip="isFavorite ? 'Remove from favorites' : 'Add to favorites' ">
+ <c-button
+ variant="text"
+ circle
+ :type="buttonType"
+ :style="{ opacity: isFavorite ? 1 : 0.2 }"
+ @click="toggleFavorite"
+ >
+ <icon-mdi-heart />
+ </c-button>
+ </c-tooltip>
</template>
diff --git a/src/components/InputCopyable.vue b/src/components/InputCopyable.vue
index ed67895..a69a039 100644
--- a/src/components/InputCopyable.vue
+++ b/src/components/InputCopyable.vue
@@ -13,14 +13,11 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : 'Copy to cli
<template>
<c-input-text v-model:value="value">
<template #suffix>
- <n-tooltip trigger="hover">
- <template #trigger>
- <c-button circle variant="text" size="small" @click="copy()">
- <icon-mdi-content-copy />
- </c-button>
- </template>
- {{ tooltipText }}
- </n-tooltip>
+ <c-tooltip :tooltip="tooltipText">
+ <c-button circle variant="text" size="small" @click="copy()">
+ <icon-mdi-content-copy />
+ </c-button>
+ </c-tooltip>
</template>
</c-input-text>
</template>
diff --git a/src/components/NavbarButtons.vue b/src/components/NavbarButtons.vue
index 5b1a3a4..653afdd 100644
--- a/src/components/NavbarButtons.vue
+++ b/src/components/NavbarButtons.vue
@@ -7,56 +7,43 @@ const { isDarkTheme } = toRefs(styleStore);
</script>
<template>
- <n-tooltip trigger="hover">
- <template #trigger>
- <c-button
- circle
- variant="text"
- href="https://github.com/CorentinTh/it-tools"
- target="_blank"
- rel="noopener noreferrer"
- aria-label="IT-Tools' GitHub repository"
- >
- <n-icon size="25" :component="BrandGithub" />
- </c-button>
- </template>
- Github repository
- </n-tooltip>
+ <c-tooltip tooltip="Github repository" position="bottom">
+ <c-button
+ circle
+ variant="text"
+ href="https://github.com/CorentinTh/it-tools"
+ target="_blank"
+ rel="noopener noreferrer"
+ aria-label="IT-Tools' GitHub repository"
+ >
+ <n-icon size="25" :component="BrandGithub" />
+ </c-button>
+ </c-tooltip>
- <n-tooltip trigger="hover">
- <template #trigger>
- <c-button
- circle
- variant="text"
- href="https://twitter.com/ittoolsdottech"
- rel="noopener"
- target="_blank"
- aria-label="IT Tools' Twitter account"
- >
- <n-icon size="25" :component="BrandTwitter" />
- </c-button>
- </template>
- IT Tools' Twitter account
- </n-tooltip>
+ <c-tooltip tooltip="Twitter account" position="bottom">
+ <c-button
+ circle
+ variant="text"
+ href="https://twitter.com/ittoolsdottech"
+ rel="noopener"
+ target="_blank"
+ aria-label="IT Tools' Twitter account"
+ >
+ <n-icon size="25" :component="BrandTwitter" />
+ </c-button>
+ </c-tooltip>
- <n-tooltip trigger="hover">
- <template #trigger>
- <c-button circle variant="text" to="/about" aria-label="About">
- <n-icon size="25" :component="InfoCircle" />
- </c-button>
- </template>
- About
- </n-tooltip>
- <n-tooltip trigger="hover">
- <template #trigger>
- <c-button circle variant="text" aria-label="Toggle dark/light mode" @click="() => styleStore.toggleDark()">
- <n-icon v-if="isDarkTheme" size="25" :component="Sun" />
- <n-icon v-else size="25" :component="Moon" />
- </c-button>
- </template>
- <span v-if="isDarkTheme">Light mode</span>
- <span v-else>Dark mode</span>
- </n-tooltip>
+ <c-tooltip tooltip="About IT-Tools" position="bottom">
+ <c-button circle variant="text" to="/about" aria-label="About">
+ <n-icon size="25" :component="InfoCircle" />
+ </c-button>
+ </c-tooltip>
+ <c-tooltip :tooltip="isDarkTheme ? 'Light mode' : 'Dark mode'" position="bottom">
+ <c-button circle variant="text" aria-label="Toggle dark/light mode" @click="() => styleStore.toggleDark()">
+ <n-icon v-if="isDarkTheme" size="25" :component="Sun" />
+ <n-icon v-else size="25" :component="Moon" />
+ </c-button>
+ </c-tooltip>
</template>
<style lang="less" scoped>
diff --git a/src/components/SpanCopyable.vue b/src/components/SpanCopyable.vue
index 7ab3a1d..5643cff 100644
--- a/src/components/SpanCopyable.vue
+++ b/src/components/SpanCopyable.vue
@@ -11,17 +11,7 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : initialText)
</script>
<template>
- <n-tooltip trigger="hover">
- <template #trigger>
- <span class="value" @click="copy()">{{ value }}</span>
- </template>
- {{ tooltipText }}
- </n-tooltip>
+ <c-tooltip :tooltip="tooltipText">
+ <span cursor-pointer font-mono @click="copy()">{{ value }}</span>
+ </c-tooltip>
</template>
-
-<style scoped lang="less">
-.value {
- cursor: pointer;
- font-family: monospace;
-}
-</style>
diff --git a/src/components/TextareaCopyable.vue b/src/components/TextareaCopyable.vue
index b349d04..8b0aae6 100644
--- a/src/components/TextareaCopyable.vue
+++ b/src/components/TextareaCopyable.vue
@@ -40,7 +40,7 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : copyMessage.
<template>
<div style="overflow-x: hidden; width: 100%">
- <c-card class="result-card">
+ <c-card relative>
<n-scrollbar
x-scrollable
trigger="none"
@@ -50,16 +50,13 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : copyMessage.
<n-code :code="value" :language="language" :trim="false" data-test-id="area-content" />
</n-config-provider>
</n-scrollbar>
- <n-tooltip v-if="value" trigger="hover">
- <template #trigger>
- <div class="copy-button" :class="[copyPlacement]">
- <c-button circle important:h-10 important:w-10 @click="copy()">
- <n-icon size="22" :component="Copy" />
- </c-button>
- </div>
- </template>
- <span>{{ tooltipText }}</span>
- </n-tooltip>
+ <div absolute right-10px top-10px>
+ <c-tooltip v-if="value" :tooltip="tooltipText" position="left">
+ <c-button circle important:h-10 important:w-10 @click="copy()">
+ <n-icon size="22" :component="Copy" />
+ </c-button>
+ </c-tooltip>
+ </div>
</c-card>
<div v-if="copyPlacement === 'outside'" mt-4 flex justify-center>
<c-button @click="copy()">
@@ -74,25 +71,4 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : copyMessage.
padding-bottom: 10px;
margin-bottom: -10px;
}
-.result-card {
- position: relative;
- .copy-button {
- position: absolute;
- opacity: 1;
-
- &.top-right {
- top: 10px;
- right: 10px;
- }
-
- &.bottom-right {
- bottom: 10px;
- right: 10px;
- }
- &.outside,
- &.none {
- display: none;
- }
- }
-}
</style>