<template>
  <div class="flex flex-col gap-4 md:flex-row md:items-start md:justify-between">
    <div class="flex flex-col gap-2">
      <h1 class="text-3xl font-bold">
        {{ title }}
      </h1>
      <div class="btn-group w-full max-w-xs print:hidden" data-print-hide>
        <button
          type="button"
          class="btn btn-sm"
          :class="isDetailsView ? 'btn-primary' : 'btn-outline'"
          @click="$emit('change-view', 'details')"
        >
          Vue machine
        </button>
        <button
          type="button"
          class="btn btn-sm"
          :class="isSkeletonView ? 'btn-primary' : 'btn-outline'"
          :disabled="!hasSkeletonRequirements"
          @click="$emit('change-view', 'skeleton')"
        >
          Squelette
        </button>
      </div>
    </div>
    <div class="flex items-center gap-2 print:hidden" data-print-hide>
      <button
        @click="$emit('toggle-edit')"
        class="btn btn-primary"
        :class="{ 'btn-outline': isEditMode }"
      >
        <IconLucideSquarePen
          v-if="!isEditMode"
          class="w-5 h-5 mr-2"
          aria-hidden="true"
        />
        <IconLucideEye
          v-else
          class="w-5 h-5 mr-2"
          aria-hidden="true"
        />
        {{ isEditMode ? 'Voir détails' : 'Modifier' }}
      </button>
      <button
        v-if="isDetailsView && !isEditMode"
        @click="$emit('open-print')"
        type="button"
        class="btn btn-outline btn-secondary"
      >
        <IconLucidePrinter class="w-5 h-5 mr-2" aria-hidden="true" />
        Imprimer
      </button>
    </div>
  </div>
</template>

<script setup lang="ts">
import IconLucideSquarePen from '~icons/lucide/square-pen'
import IconLucideEye from '~icons/lucide/eye'
import IconLucidePrinter from '~icons/lucide/printer'

defineProps<{
  title: string
  isDetailsView: boolean
  isSkeletonView: boolean
  isEditMode: boolean
  hasSkeletonRequirements: boolean
}>()

defineEmits<{
  'change-view': [view: 'details' | 'skeleton']
  'toggle-edit': []
  'open-print': []
}>()
</script>
