From c82eaa0939341007885898ebc1780fb766cbb393 Mon Sep 17 00:00:00 2001 From: tristan Date: Thu, 19 Mar 2026 09:21:29 +0100 Subject: [PATCH] fix : composant nombre et taux horaire --- .claude/settings.local.json | 7 +++ CLAUDE.md | 64 ++++++++++++++++++++++++ app/components/malio/InputNumber.test.ts | 4 +- app/components/malio/InputNumber.vue | 15 +++--- app/components/malio/Time.vue | 33 +++++++----- memory/MEMORY.md | 3 ++ memory/user_profile.md | 7 +++ tailwind.config.ts | 2 +- 8 files changed, 114 insertions(+), 21 deletions(-) create mode 100644 .claude/settings.local.json create mode 100644 CLAUDE.md create mode 100644 memory/MEMORY.md create mode 100644 memory/user_profile.md diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..47b3190 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,7 @@ +{ + "permissions": { + "allow": [ + "Bash(npm run:*)" + ] + } +} diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..6e659a9 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,64 @@ +# CLAUDE.md — @malio/layer-ui + +## Projet + +Bibliothèque de composants UI sous forme de **Nuxt 4 Layer**. Le package `@malio/layer-ui` est consommé par les autres applications Malio via `extends` dans leur `nuxt.config.ts`. + +## Commandes + +```bash +npm run dev # Lance le playground (.playground/) +npm run dev:prepare # Génère les types Nuxt (à lancer après un clone) +npm run test # Vitest (run mode) +npm run lint # ESLint +npm run story:dev # Histoire (documentation composants) +``` + +## Architecture + +``` +app/ + components/malio/ # Composants (auto-importés comme ) + story/ # Fichiers .story.vue (Histoire) + assets/css/malio.css # Design tokens (CSS custom properties) +.playground/ # App Nuxt pour tester les composants en dev +``` + +## Conventions composants + +- **Nommage fichier** : PascalCase (`InputText.vue`). Le préfixe `Malio` est ajouté automatiquement par le dossier `malio/`. +- **`defineOptions({ name: 'MalioXxx', inheritAttrs: false })`** en tête de chaque composant. +- **Props communes** : `id`, `label`, `modelValue`, `inputClass`, `labelClass`, `groupClass`, `disabled`, `readonly`, `hint`, `error`, `success`. +- **Pattern contrôlé/non-contrôlé** : `isControlled = computed(() => props.modelValue !== undefined)` avec `localValue` en fallback. +- **Classes CSS** : fusionnées avec `twMerge()` pour permettre l'override par le consommateur via les props `*Class`. +- **Accessibilité** : `aria-invalid`, `aria-describedby`, labels liés par `for/id`. +- **Icônes** : via `@iconify/vue` (Icon component), pas `@nuxt/icon` dans les composants. + +## Stack technique + +- **Nuxt 4** (layer), **Vue 3** Composition API (`