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

8.0 KiB

É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/