# All files / js/components/ui/sidebar SidebarMenuSkeleton.vue

0% Statements 0/4
0% Branches 0/2
0% Functions 0/1
0% Lines 0/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35

     <script setup lang="ts">
    import { cn } from '@/lib/utils'
    import { Skeleton } from '@/components/ui/skeleton'
    import { computed, type HTMLAttributes } from 'vue'

    const props = defineProps<{
      showIcon?: boolean
      class?: HTMLAttributes['class']
    }>()

    const width = computed(() => {
      return `${Math.floor(Math.random() * 40) + 50}%`;
    })
    </script>

    <template>
      <div
        data-slot="sidebar-menu-skeleton"
        data-sidebar="menu-skeleton"
        :class="cn('flex h-8 items-center gap-2 rounded-md px-2', props.class)"
      >
        <Skeleton
          v-if="showIcon"
          class="size-4 rounded-md"
          data-sidebar="menu-skeleton-icon"
        />

        <Skeleton
          class="h-4 max-w-(--skeleton-width) flex-1"
          data-sidebar="menu-skeleton-text"
          :style="{ '--skeleton-width': width }"
        />
      </div>
    </template>