<template>
  <div class="space-y-6 p-4">
    <h1 class="text-2xl font-bold">MalioDateTime</h1>

    <div class="flex flex-wrap items-start gap-10">
      <div class="w-[480px] space-y-3">
        <h2 class="font-semibold">Large (480px)</h2>
        <MalioDateTime
          v-model="value"
          label="Date et heure du rendez-vous"
          hint="Choisis un jour puis une heure"
        />
        <div class="rounded border p-3 text-sm">
          <p>Valeur (ISO naïf) : <code>{{ value ?? 'null' }}</code></p>
        </div>
        <MalioDateTime
          v-model="editableValue"
          label="Date et heure (saisie clavier)"
          editable
          hint="Tape JJ/MM/AAAA HH:MM ou utilise le calendrier"
          @update:valid="editableValid = $event"
        />
        <div class="rounded border p-3 text-sm">
          <p>Valeur éditable (ISO naïf) : <code>{{ editableValue ?? 'null' }}</code></p>
          <p>
            Saisie valide :
            <code :class="editableValid ? 'text-m-success' : 'text-m-danger'">{{ editableValid }}</code>
          </p>
        </div>
        <div class="flex gap-2">
          <button
            type="button"
            class="rounded bg-m-primary px-3 py-1.5 text-white"
            @click="value = '2026-12-25T09:30:00'"
          >
            Forcer le 25/12/2026 09:30
          </button>
          <button
            type="button"
            class="rounded border px-3 py-1.5"
            @click="value = null"
          >
            Réinitialiser
          </button>
        </div>
      </div>

      <div class="w-[396px] space-y-3">
        <h2 class="font-semibold">ERP (396px)</h2>
        <MalioDateTime
          v-model="erpValue"
          label="Date et heure du rendez-vous"
          hint="Largeur cible ERP"
        />
        <div class="rounded border p-3 text-sm">
          <p>Valeur (ISO naïf) : <code>{{ erpValue ?? 'null' }}</code></p>
        </div>
        <MalioDateTime
          v-model="bounded"
          label="Créneau borné"
          :min="todayIso"
          :max="maxIso"
          hint="Entre aujourd'hui et +30 jours"
        />
      </div>
    </div>
  </div>
</template>

<script setup lang="ts">
import {ref} from 'vue'

const pad = (n: number) => String(n).padStart(2, '0')
const toIso = (d: Date) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T00:00:00`
const now = new Date()
const todayIso = toIso(now)
const maxIso = toIso(new Date(now.getTime() + 30 * 86400000))

const value = ref<string | null>(null)
const erpValue = ref<string | null>(null)
const bounded = ref<string | null>('2026-05-20T14:30:00')
const editableValue = ref<string | null>(null)
const editableValid = ref(true)
</script>
