style: add loader state on acquiring token

This commit is contained in:
Khafid Prayoga
2025-08-19 15:50:17 +07:00
parent 066a884bf0
commit 3e6e773313
2 changed files with 12 additions and 14 deletions
+1 -3
View File
@@ -18,7 +18,7 @@ const refSearchNav: RefSearchNav = {
// Loading state management
const isLoading = reactive({
satusehatConn: false,
satusehatConn: true,
})
const hreaderPrep: HeaderPrep = {
@@ -74,8 +74,6 @@ const summaryData: Summary[] = [
async function callSatuSehat() {
try {
isLoading.satusehatConn = true
await new Promise((resolve) => setTimeout(resolve, 3000))
service.status = 'connected'
// service.status = 'error'
+11 -11
View File
@@ -1,6 +1,6 @@
<script setup lang="ts">
import type { ServiceStatus } from './service-status.type'
import { Loader2 } from 'lucide-vue-next'
import { Loader, Loader2 } from 'lucide-vue-next'
import { cn } from '~/lib/utils'
const props = defineProps<ServiceStatus>()
@@ -30,20 +30,19 @@ const tokenStatus = computed((): string => {
<Card v-else class="py-6">
<div class="flex gap-4 justify-between px-6">
<div class="flex gap-2 items-center">
<span
:class="cn(' rounded-md w-12 h-12 flex items-center justify-center',
<span :class="cn(' rounded-md w-12 h-12 flex items-center justify-center',
{ 'bg-red-500': props.status === 'error' },
{ 'bg-blue-500': props.status !== 'error' },
)"
>
)">
<Icon v-if="props.status === 'error'" name="i-lucide-cable" class="text-white w-6 h-6 sm:w-8 sm:h-8" />
<Icon v-else name="i-lucide-bring-to-front" class="text-white w-6 h-6 sm:w-8 sm:h-8" />
</span>
<div>
<p v-if="props.status === 'connected'" class="text-xs md:text-md font-bold">Koneksi {{ props.serviceName }}
Aktif</p>
<p v-if="props.status === 'connecting'" class="flex flex-row text-xs md:text-md font-bold">Menghubungkan ke API {{
props.serviceName }}
<p v-if="props.status === 'connecting'" class="flex flex-row text-xs md:text-md font-bold">Menghubungkan ke
API {{
props.serviceName }}
<Loader2 class="ml-2 h-4 w-4 animate-spin" />
</p>
<p v-if="props.status === 'error'" class="text-xs md:text-md font-bold">Koneksi ke API {{ props.serviceName
@@ -56,12 +55,13 @@ const tokenStatus = computed((): string => {
</div>
<div class="text-right flex flex-col items-end">
<p class="text-xs md:text-md text-muted-foreground">Session Token</p>
<p
:class="cn('text-xs md:text-md font-bold',
<p v-if="props.status === 'connecting'">
<Loader class="ml-2 h-4 w-4 animate-spin" />
</p>
<p v-else :class="cn('text-xs md:text-md font-bold',
{ 'text-blue-500': props.sessionActive },
{ 'text-red-500': !props.sessionActive },
)"
>{{ tokenStatus }}</p>
)">{{ tokenStatus }}</p>
</div>
</div>
</Card>