story-research-zapwall/docs/migration-status.md
2026-01-15 02:45:27 +01:00

148 lines
8.0 KiB
Markdown

# État de la migration des composants UI
**Date** : 2025-01-27
**Auteur** : Équipe 4NK
## Composants UI réutilisables créés
Les composants suivants ont été créés dans `components/ui/` :
- `Button` : Boutons avec variants (primary, secondary, success, danger, ghost) et tailles
- `Card` : Containers avec variants (default, interactive)
- `Input` : Champs de saisie avec support d'icônes
- `Textarea` : Zones de texte avec label et helperText
- `ErrorState` : Affichage d'erreurs
- `EmptyState` : États vides
- `Badge` : Badges
- `Skeleton` : Loaders skeleton
- `Modal` : Modales
- `Toast` : Notifications toast
- `MobileMenu` : Menu mobile
## Composants migrés
### Composants principaux
-`ArticlesList.tsx` - ErrorState, EmptyState
-`AuthorsList.tsx` - ErrorState, EmptyState
-`ArticleCard.tsx` - Card
-`AuthorCard.tsx` - Card
-`SearchBar.tsx` - Input
-`ArticleFilters.tsx` - Card, Button
-`ArticlePreview.tsx` - Button
-`PaymentModal.tsx` - Button, Card
-`ConnectButton.tsx` - Button
-`ArticleFormButtons.tsx` - Button
-`ConditionalPublishButton.tsx` - Button, Card
-`AlbyInstaller.tsx` - Button
-`CacheUpdateManager.tsx` - Button, Card, ErrorState
-`UserArticlesList.tsx` - Button, ErrorState
-`ConnectedUserMenu.tsx` - Button
-`SeriesCard.tsx` - Button
-`ProfileSeriesBlock.tsx` - Button
-`SeriesSection.tsx` - Button
### Formulaires
-`reviewForms/ReviewFormView.tsx` - Button, ErrorState, Input, Textarea, Card
-`reviewForms/ReviewTipFormView.tsx` - Button, ErrorState, Textarea, Card
-`reviewForms/ConnectRequiredCard.tsx` - Button, Card
-`SponsoringForm.tsx` - Button, Card, Textarea, ErrorState
-`authorPresentationEditor/PresentationForm.tsx` - Button, Card, ErrorState
-`authorPresentationEditor/NoAccountView.tsx` - Button, Card
-`authorPresentationEditor/AuthorPresentationEditor.tsx` - Button
-`createSeriesModal/CreateSeriesModalView.tsx` - Button, ErrorState, Input, Textarea
-`CreateAccountModalComponents.tsx` - Button, Card, ErrorState, Textarea
### Gestion de configuration
-`relayManager/RelayManagerContent.tsx` - Button, Card, Input, ErrorState
-`relayManager/RelayCard.tsx` - Button, Input
-`nip95Config/Nip95ConfigContent.tsx` - Button, Card, Input, ErrorState
-`nip95Config/Nip95ApiCard.tsx` - Button, Input
-`keyManagement/KeyManagementImportSection.tsx` - Button, Card, ErrorState
-`keyManagement/KeyManagementImportForm.tsx` - Textarea
### Autres composants
-`ArticleReviews.tsx` - Card, ErrorState, Button
-`ArticlePages.tsx` - Card
-`authorPage/SeriesList.tsx` - Button, Card, EmptyState
-`authorPage/SponsoringSummary.tsx` - Button, Card
-`syncProgressBar/view.tsx` - Button, ErrorState
-`MarkdownEditor.tsx` - Button
## Composants restants à migrer
Aucun composant prioritaire restant. Tous les composants principaux ont été migrés vers les composants UI réutilisables.
### Priorité moyenne
- **Uploads de fichiers** - Les labels d'upload utilisent encore des `span` avec styles inline car ils nécessitent une structure HTML spécifique (`<label>` + `<input type="file">` caché) :
- `ImageUploadField.tsx` - Déjà partiellement migré avec Button pour RemoveButton
- `MarkdownEditor.tsx` - Label d'upload de média
- `markdownEditorTwoColumns/MarkdownEditorTwoColumns.tsx` - ToolbarUploadButton
- `markdownEditorTwoColumns/PagesManager.tsx` - PageImageUploadButton
### Priorité basse
- Aucun composant prioritaire bas restant. Tous les composants principaux ont été migrés.
## Composants récemment migrés
-`LanguageSelector.tsx` - Migration vers Button
-`NotificationBadge.tsx` - Migration vers Button
-`NotificationBadgeButton.tsx` - Migration vers Button
-`ClearButton.tsx` - Migration vers Button
-`keyManagement/KeyManagementImportSection.tsx` - Migration de KeyManagementNoAccountBanner vers Card et KeyManagementImportButton vers Button
-`ArticleEditor.tsx` - Migration de SuccessMessage vers Card
-`NotificationPanel.tsx` - Migration du conteneur principal vers Card
-`AuthorFilterButton.tsx` - Migration vers Button avec support forwardRef
-`AuthorFilterDropdown.tsx` - Migration de AuthorOption et AllAuthorsOption vers Button
-`components/ui/Button.tsx` - Ajout du support forwardRef, aria-expanded, aria-haspopup, aria-selected, aria-controls, role, id
-`components/ui/MobileMenu.tsx` - Migration des boutons vers Button
-`components/ui/Toast.tsx` - Migration du bouton de fermeture vers Button
-`components/ui/ErrorState.tsx` - Migration du conteneur vers Card
-`components/ui/Card.tsx` - Ajout du support role pour l'accessibilité
-`components/ui/Modal.tsx` - Migration du bouton de fermeture vers Button
-`components/SeriesStats.tsx` - Migration des conteneurs de statistiques vers Card
-`components/UserArticlesEditPanel.tsx` - Migration du conteneur principal vers Card
-`components/markdownEditorTwoColumns/PagesManager.tsx` - Migration de PageEditor vers Card et message d'état vide vers EmptyState
-`components/authorPresentationEditor/AuthorPresentationEditor.tsx` - Migration de SuccessNotice vers Card
-`components/MarkdownEditor.tsx` - Migration de MarkdownPreview vers Card et textarea vers Textarea
-`components/markdownEditorTwoColumns/MarkdownEditorTwoColumns.tsx` - Migration de MarkdownPreview vers Card et textarea vers Textarea
-`components/markdownEditorTwoColumns/PagesManager.tsx` - Nettoyage des classes CSS redondantes dans Textarea (w-full, border, rounded, p-* gérés par le composant)
## Améliorations UX implémentées
### Skeleton loaders (Priorité haute #1)
-`components/ArticlesList.tsx` - Remplacement du message "Loading..." par des skeleton loaders pour les cartes d'articles
-`components/AuthorsList.tsx` - Remplacement du message "Loading..." par des skeleton loaders pour les cartes d'auteurs
-`components/UserArticlesList.tsx` - Remplacement du message "Loading..." par des skeleton loaders pour les articles utilisateur
-`components/authorPage/AuthorPageContent.tsx` - Remplacement du message "Loading..." par des skeleton loaders pour la page auteur
-`components/authorPresentationEditor/AuthorPresentationEditor.tsx` - Remplacement du message "Loading..." par des skeleton loaders pour le formulaire de présentation
-`components/DocsContent.tsx` - Remplacement du message "Loading..." par des skeleton loaders pour le contenu markdown
-`components/FundingGauge.tsx` - Remplacement du message "Loading..." par des skeleton loaders pour le gauge de financement
### Toast notifications (Priorité haute #2)
-`components/ui/ToastContainer.tsx` - Création du système de gestion des toasts avec ToastProvider et useToast hook
-`pages/_app.tsx` - Intégration du ToastProvider dans l'application
-`components/ArticleCard.tsx` - Ajout d'un toast de succès après déblocage réussi d'un article
-`components/ArticleEditor.tsx` - Ajout d'un toast de succès après publication réussie
-`components/PaymentModal.tsx` - Ajout d'un toast de succès après copie d'invoice et après initiation du paiement
-`hooks/useArticlePayment.ts` - Ajout du support showToast pour afficher les toasts après paiement
-`locales/fr.txt` et `locales/en.txt` - Ajout des clés de traduction pour les toasts (`article.unlock.success`, `article.publish.success`, `payment.modal.copySuccess`, `payment.modal.paymentInitiated`)
## Erreurs corrigées
### TypeScript
-`hooks/useAuthorPresentation.ts` : Ajout de l'import manquant `nostrService`
-`lib/authorQueries.ts` : Correction du type `picture` avec `exactOptionalPropertyTypes: true`
### Linting
- ✅ Toutes les erreurs de linting ont été corrigées
## État actuel
-**TypeScript** : Aucune erreur
-**Linting** : Aucune erreur
-**Compilation** : Succès
## Prochaines étapes
1. Continuer la migration des composants restants
2. Tester l'application après chaque migration
3. Documenter les changements dans `fixKnowledge/` ou `features/`