Add a way for consumers to pass custom components for MDX parsing
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 45/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- typescript
- Domaine
- documentation
Piste de recherche
Commencez par les props des composants dans src/pages/[section]/[...page].astro:84-106 et src/pages/[section]/[page]/[tab].astro:116-137, puis lisez pf-docs.config.mjs:44 et cli/convertToMDX.ts:48-52. Décidez entre la configuration et la préservation des imports, puis vérifiez que les composants personnalisés fonctionnent dans du MDX général et dans le contenu de LiveExample, conservent la résolution intégrée, prennent en charge TypeScript et sont documentés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Problem Summary
Consumers cannot use custom components directly within their MDX/markdown files. The MDX component mapping is hardcoded in the Astro page files ([...page].astro and [tab].astro), preventing users from injecting custom components like PatternFly's [Alert /] into their documentation content.
Current limitation: While the scope config option (in pf-docs.config.mjs) allows passing custom components for use within [LiveExample] blocks, there's no way to use custom components in the general MDX content outside of examples.
Use Case
When integrating docs-core v1.20.0, consumers need to:
-
Use PatternFly components (Alert, Banner, etc.) directly in markdown content for callouts and warnings
-
Import custom documentation components for specialized content rendering
-
Include organization-specific UI components in documentation pages
-
Render interactive widgets or diagrams inline with documentation
Example of desired usage:
h1. Component Documentation
[Alert variant="warning" title="Important Note"]
This component is deprecated. Use the new version instead.
[/Alert]
Rest of documentation content...
Current Architecture
MDX components are provided via the components prop on the [Content /] component in Astro page files:
// src/pages/[section]/[...page].astro:84-106
[Content
components={{
SectionGallery,
h1, h2, h3, h4, h5, h6,
p, a, small, blockquote,
pre, hr, ul, ol, dl, li, dt, dd,
LiveExample,
}}
/]
Why this is hardcoded:
-
The
componentsobject maps MDX elements to React/Astro components -
Currently only includes HTML elements,
LiveExample, andSectionGallery -
No mechanism to merge in user-provided components from config
Related scope mechanism:
-
pf-docs.config.mjshas ascopeproperty forLiveExamplecomponents -
LiveExample.tsx:35-43mergesconfig.scopewith built-in PatternFly components -
This only applies to code inside
[LiveExample]blocks, not general MDX content
MDX import stripping:
The convertToMDX process (cli/convertToMDX.ts:48-52) also removes absolute imports, which would prevent direct imports even if components were available:
function removeExistingImports(content: string): string {
// Remove imports that are absolute and not CSS
const importRegex = /^import {?[\w\s,\n]_}? from ['"|?!\.\.?\/](?!._\.css['"])[^'"]*['"];?\n/gm
return content.replace(importRegex, '')
}
Potential Approaches
Two options have been identified:
-
Configuration-based approach: Enable consumers to specify custom components through the pf-docs configuration file that become available globally in MDX files
-
Import preservation approach: Modify the MDX conversion process to retain certain component imports in markdown files, while selectively removing only imports used exclusively in LiveExamples
Completion Criteria
The issue is resolved when:
- Custom components in MDX: Consumers can use custom components directly in MDX content outside of
[LiveExample]blocks - Configuration support: Clear mechanism (config or import-based) for registering custom components
- Component merging: User-provided components are merged with built-in components in the
[Content /]components prop - LiveExample compatibility: Custom components work in both general MDX content and within
[LiveExample]scopes - No conflicts: Custom components don't interfere with built-in component resolution or auto-generated imports
- Type safety: Proper TypeScript support for custom component registration
- Documentation: Clear examples showing how to register and use custom components
Technical Notes
-
File locations needing changes:
-
src/pages/[section]/[...page].astro:84-106(components prop) -
src/pages/[section]/[page]/[tab].astro:116-137(components prop) -
cli/convertToMDX.ts:48-52(if using import preservation approach) -
Existing scope config:
pf-docs.config.mjs:44has ascopeproperty (currently only for LiveExample) -
MDX components are provided via Astro's
[Content components={{...}} /]pattern -
Astro docs: https://docs.astro.build/en/guides/markdown-content/#custom-components-with-imported-mdx
Related Links
- Jira: PF-3606
Jira Issue: PF-3654
- Langage dominant
- TypeScript
- Étoiles
- 3
- Forks
- 12
- Merge moyen
- 1 j 15 h
- PR mergées (30 j)
- 2
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de patternfly/patternfly-doc-core
-
api
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
-
Update patternfly packages to pull in the component schemas from doc corePeut-être à nouveau libre @dlabaj l’a pris il y a 70 jours, et aucune pull request n’est ouverte. Ouverte
patternfly/patternfly-doc-core#236 · 1 commentaire · 1 réaction · 1 personne assignée ·
-
Bug: Version of api is not being updated.Peut-être à nouveau libre @dlabaj l’a pris il y a 118 jours, et aucune pull request n’est ouverte. Ouvertebug PF Team
patternfly/patternfly-doc-core#233 · 1 personne assignée ·
-
PF Team
Difficulté 3/5 1-2 jours Accessibilité débutants 48/100
-
PF Team
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
Toutes les issues de patternfly/patternfly-doc-core
Issues similaires
-
area: frontend priority: normal
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
formbricks/formbricks#9918 ·
Les mainteneurs répondent en général sous 1 jour
-
Chat: Resize question overlayOuverteenhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
thecodacus/pithagoras#364 ·
Les mainteneurs répondent en général sous 1 jour
-
TestAutonomousStop_ReportsObservedState fails under host load: 1s wall-clock ceiling vs 250ms cycleOuvertetype:bug
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
nightgauge/nightgauge#2909 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour