diff --git a/docs/superpowers/plans/2026-05-22-datetime.md b/docs/superpowers/plans/2026-05-22-datetime.md
new file mode 100644
index 0000000..5cdbd12
--- /dev/null
+++ b/docs/superpowers/plans/2026-05-22-datetime.md
@@ -0,0 +1,712 @@
+# MalioDateTime Implementation Plan
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** Ajouter un composant `MalioDateTime` (date + heure dans un seul champ) à la famille temporelle de `@malio/layer-ui`, en version intérimaire avec `` natif.
+
+**Architecture:** Fine enveloppe autour du shell `internal/CalendarField.vue` (comme `MalioDate`). Le slot popover contient `MonthGrid` (jour) + un `` (heure) sous la grille. La valeur émise est l'ISO naïf `"YYYY-MM-DDTHH:MM:00"`. Logique de découpe/recomposition dans un nouveau composable `datetimeFormat.ts`.
+
+**Tech Stack:** Vue 3 `
+```
+
+- [ ] **Step 4 : Lancer les tests pour vérifier qu'ils passent**
+
+Run: `npx vitest run app/components/malio/date/DateTime.test.ts`
+Expected: PASS (tous verts).
+
+Note : si `@input` ne déclenche pas `value` correctement en jsdom, utiliser `await time.setValue('09:15')` à la place du couple `.value =` + `.trigger('input')` dans les tests.
+
+- [ ] **Step 5 : Commit**
+
+```bash
+git add app/components/malio/date/DateTime.vue app/components/malio/date/DateTime.test.ts
+git commit --no-verify -m "feat : composant MalioDateTime (date + heure) (#MUI-33)
+
+Co-Authored-By: Claude Opus 4.7 (1M context) "
+```
+
+---
+
+### Task 3 : Page playground + entrée nav
+
+**Files:**
+- Create: `.playground/pages/composant/date/datetime.vue`
+- Modify: `.playground/playground.nav.ts` (section `DATES & HEURES`)
+
+- [ ] **Step 1 : Créer la page playground**
+
+Créer `.playground/pages/composant/date/datetime.vue` :
+
+```vue
+
+
+
MalioDateTime
+
+
+
+
Simple
+
+
+
Valeur (ISO naïf) : {{ value ?? 'null' }}
+
+
+
+
+
+
Valeur initiale + bornes
+
+
+
Valeur (ISO naïf) : {{ bounded ?? 'null' }}
+
+
+
+
+
+
+
+```
+
+- [ ] **Step 2 : Ajouter l'entrée nav**
+
+Dans `.playground/playground.nav.ts`, section `DATES & HEURES`, ajouter l'item après `Semaine` :
+
+```ts
+ {label: 'Date & heure', to: '/composant/date/datetime'},
+```
+
+Le bloc devient :
+
+```ts
+ items: [
+ {label: 'Date', to: '/composant/date/date'},
+ {label: 'Plage de dates', to: '/composant/date/dateRange'},
+ {label: 'Semaine', to: '/composant/date/dateWeek'},
+ {label: 'Date & heure', to: '/composant/date/datetime'},
+ {label: 'Heure', to: '/composant/time/time'},
+ ],
+```
+
+- [ ] **Step 3 : Vérifier le lint**
+
+Run: `npm run lint`
+Expected: PASS (pas d'erreur sur les fichiers playground).
+
+- [ ] **Step 4 : Commit**
+
+```bash
+git add .playground/pages/composant/date/datetime.vue .playground/playground.nav.ts
+git commit --no-verify -m "feat : page playground MalioDateTime (#MUI-33)
+
+Co-Authored-By: Claude Opus 4.7 (1M context) "
+```
+
+---
+
+### Task 4 : Story Histoire
+
+**Files:**
+- Create: `app/story/date/dateTime.story.vue`
+
+- [ ] **Step 1 : Créer la story**
+
+Créer `app/story/date/dateTime.story.vue` (nom de fichier camelCase pour éviter `vue/multi-word-component-names`) :
+
+```vue
+
+
+
+
+
Simple
+
+
+
+
+
Valeur initiale
+
+
+
+
+
Avec min/max
+
+
+
+
+
Erreur
+
+
+
+
+
Désactivé
+
+
+
+
+
Lecture seule
+
+
+
+
+
+
+
+```
+
+- [ ] **Step 2 : Vérifier le lint**
+
+Run: `npm run lint`
+Expected: PASS.
+
+- [ ] **Step 3 : Commit**
+
+```bash
+git add app/story/date/dateTime.story.vue
+git commit --no-verify -m "docs : story Histoire pour MalioDateTime (#MUI-33)
+
+Co-Authored-By: Claude Opus 4.7 (1M context) "
+```
+
+---
+
+### Task 5 : Documentation (COMPONENTS.md + CHANGELOG.md)
+
+**Files:**
+- Modify: `COMPONENTS.md`
+- Modify: `CHANGELOG.md`
+
+- [ ] **Step 1 : Ajouter la section dans COMPONENTS.md**
+
+Ouvrir `COMPONENTS.md`, repérer la section `MalioDate` (ou la famille date) et ajouter une section `MalioDateTime` calquée dessus, documentant :
+- Description : champ unique date + heure, popover (grille + sélecteur d'heure), version intérimaire avec `` natif.
+- `modelValue` : `string | null`, format `"YYYY-MM-DDTHH:MM:00"` (ISO naïf sans fuseau ; Symfony applique son fuseau).
+- Table des props identique à `MalioDate` (ajouter la note sur `min`/`max` bornant la date).
+- Émission `update:modelValue`.
+- Exemple d'usage :
+
+```vue
+
+
+```
+
+- Note : le sélecteur d'heure est intérimaire et sera remplacé par un composant dédié (maquette à venir).
+
+Respecter le style et la structure exacts des sections existantes (titres, tableaux markdown).
+
+- [ ] **Step 2 : Ajouter l'entrée CHANGELOG.md**
+
+Dans `CHANGELOG.md`, sous `## [0.0.0]` → `### Added`, ajouter après la ligne `[#MUI-33] Développer le composant Datepicker` :
+
+```
+* [#MUI-33] Création du composant DateTime (date + heure, sélecteur d'heure natif intérimaire)
+```
+
+- [ ] **Step 3 : Commit**
+
+```bash
+git add COMPONENTS.md CHANGELOG.md
+git commit --no-verify -m "docs : documente MalioDateTime (COMPONENTS + CHANGELOG) (#MUI-33)
+
+Co-Authored-By: Claude Opus 4.7 (1M context) "
+```
+
+---
+
+## Vérification finale
+
+- [ ] `npx vitest run app/components/malio/date/` → toute la famille date verte.
+- [ ] `npm run lint` → pas d'erreur.
+- [ ] Revue finale du composant (cohérence avec la famille date, isolation du bloc heure pour remplacement futur).