<script setup>
import { layoutConfig } from '@layouts'
import { can } from '@layouts/plugins/casl'
import {
  getComputedNavLinkToProp,
  getDynamicI18nProps,
  isNavLinkActive,
} from '@layouts/utils'

const props = defineProps({
  item: {
    type: null,
    required: true,
  },
  isSubItem: {
    type: Boolean,
    required: false,
    default: false,
  },
})
</script>

<!--v-if="can(item.action, item.subject)"-->
<template>
  <li v-if="can(item.action, item.subject) || item.public" class="nav-link" :class="[{
    'sub-item': props.isSubItem,
    'disabled': item.disable,
  }]">
    <Component :is="item.to ? 'RouterLink' : 'a'" v-bind="getComputedNavLinkToProp(item)" :href="item.link ? item.link : ''"
      :class="{ 'router-link-active router-link-exact-active': isNavLinkActive(item, $router) }">
      <Component :is="layoutConfig.app.iconRenderer || 'div'" class="nav-item-icon" v-if="item.icon"
        v-bind="item.icon || layoutConfig.verticalNav.defaultNavItemIconProps" />
      <Component :is="layoutConfig.app.i18n.enable ? 'i18n-t' : 'span'" class="nav-item-title"
        v-bind="getDynamicI18nProps(item.title, 'span')">
        {{ item.title }}
      </Component>
    </Component>
  </li>
</template>

<style lang="scss">
.layout-horizontal-nav {
  .nav-link a {
    display: flex;
    align-items: center;
  }
}
</style>
