Skip to content

Chapitre 4 : La logique de base (script)

Ajoutez le bloc <script setup> entre le </template> et le <style scoped>. Pour l'instant, nous allons mettre uniquement la logique d'etat et le toggle visuel, sans les composables :

vue
<script setup lang="ts">
import { ref, computed } from 'vue';
import { IonContent, IonPage } from '@ionic/vue';

// Les 5 couleurs de cristal kyber disponibles
const colors = [
  { name: 'blue', value: '#4488ff' },
  { name: 'green', value: '#44ff44' },
  { name: 'red', value: '#ff2222' },
  { name: 'purple', value: '#bb44ff' },
  { name: 'yellow', value: '#ffdd00' },
];

// Etat reactif : le sabre est-il allume ?
const isOn = ref(false);

// Couleur selectionnee (par defaut : bleu)
const selectedColor = ref(colors[0].value);

// Couleur active (computed pour la reactivite dans le template)
const activeColor = computed(() => selectedColor.value);

// Toggle ON/OFF basique (pour l'instant, juste l'animation visuelle)
function toggle() {
  isOn.value = !isOn.value;
}
</script>

Testez maintenant avec npm run dev. Vous devriez voir :

  • Un fond noir avec la poignée du sabre et le bouton power.
  • En cliquant sur le bouton, la lame s'étend/se rétracte avec une animation fluide.
  • Les pastilles de couleur permettent de changer la couleur (visible au prochain allumage).
  • Le bouton s'illumine quand le sabre est allumé.

L'interface est complete. Passons maintenant à la partie intéressante : les sons et les APIs natives.