8.0 KiB
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 taillesCard: Containers avec variants (default, interactive)Input: Champs de saisie avec support d'icônesTextarea: Zones de texte avec label et helperTextErrorState: Affichage d'erreursEmptyState: États videsBadge: BadgesSkeleton: Loaders skeletonModal: ModalesToast: Notifications toastMobileMenu: 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
spanavec 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 RemoveButtonMarkdownEditor.tsx- Label d'upload de médiamarkdownEditorTwoColumns/MarkdownEditorTwoColumns.tsx- ToolbarUploadButtonmarkdownEditorTwoColumns/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.txtetlocales/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 manquantnostrService - ✅
lib/authorQueries.ts: Correction du typepictureavecexactOptionalPropertyTypes: true
Linting
- ✅ Toutes les erreurs de linting ont été corrigées
État actuel
- ✅ TypeScript : Aucune erreur
- ✅ Linting : Aucune erreur
- ✅ Compilation : Succès
Prochaines étapes
- Continuer la migration des composants restants
- Tester l'application après chaque migration
- Documenter les changements dans
fixKnowledge/oufeatures/