Skip to content

Componente Comparison - Comparación interactiva de contenido#46

Draft
mfagundez-4geeks wants to merge 21 commits into
masterfrom
feat/before-after-component
Draft

Componente Comparison - Comparación interactiva de contenido#46
mfagundez-4geeks wants to merge 21 commits into
masterfrom
feat/before-after-component

Conversation

@mfagundez-4geeks

Copy link
Copy Markdown
Contributor

Implementación completa del componente Comparison que permite comparar dos bloques de contenido de forma interactiva.

Funcionalidades principales

Tipos de contenido soportados:

  • Código con syntax highlighting (requiere language)
  • HTML con preview renderizado
  • Texto plano
  • Diagramas Mermaid
  • Markdown renderizado
  • Imágenes

Dos layouts disponibles:

  • Slider interactivo: Para comparaciones visuales (HTML, imágenes). Permite arrastrar para ver diferencias
  • Side-by-side: Para comparación de código y texto. Layout automático según tipo de contenido

Modos de visualización:

  • Toggle entre rendered (resultado final) y raw (código fuente)
  • Sincronización opcional entre paneles
  • Modos iniciales configurables por panel

Implementación técnica

  • Comparison.tsx: Componente principal con lógica de layouts y renderizado
  • ComparisonRenderer.tsx: Renderer para uso en Markdown con validación de metadata
  • types.ts: Tipos TypeScript para ContentType, ContentMode, ComparisonLayout
  • explanatory_components.yml: 3 variantes específicas (code_comparison, html_comparison, code_vs_rendered) con props relevantes por caso de uso

- Extract types to separate types.ts file for better organization
- Refactor component from CodeComparison to Comparison
- Implement flexible content type system (html, text, code, custom)
- Add sync modes functionality (default: true)
- Replace beforeHtml/afterHtml props with before/after objects
- Add automatic layout detection (slider for visual content, side-by-side for text/code)
- Implement side-by-side layout with responsive behavior
- Add max-height constraints for mobile (90vh container, 50% per panel)
- Ensure scroll behavior in both desktop and mobile views
- Update types to include ComparisonLayout enum
- Support mermaid diagrams with code/render toggle
- Support markdown with GFM and math rendering
- Reuse existing MermaidRenderer component
- Support image comparisons with slider layout
- Add customRender prop for fully customizable content rendering
…m component

- Add ComparisonRenderer component to parse comparison markdown syntax
- Support syntax: type="..." with ---SEPARATOR--- divider
- Integrate with Markdowner CustomCodeBlock for language="comparison"
- Add CreatorWrapper support for creator mode
- Document component in explanatory_components.yml with examples
- Support all content types: html, code, text, mermaid, markdown, image
- Auto-detect layout (slider for visual, side-by-side for text/code)
…al states

Allow specifying initial display mode (raw/rendered) per panel via
leftDefaultMode and rightDefaultMode metadata attributes. Enables
showing code vs rendered output side-by-side with independent mode
toggling.

- Add defaultMode to ComparisonItem interface
- Implement getInitialMode() helper function
- Update ComparisonRenderer to parse leftDefaultMode/rightDefaultMode
- Update documentation and examples
- Replace mode toggle buttons with SwitchComponent and add i18n support.
- Reorder after panel elements to show switch before label.
Apply clipPath to After panel to hide label and switch when
slider position reaches 100%, ensuring symmetric behavior.
Apply sticky positioning with white background to SliderComparison
controls when in raw mode, consistent with SideBySideComparison layout.
Rename props and variables to better reflect component's broader use cases
beyond temporal comparisons. Update all related files.
- Replace generic comparison component with code_comparison, html_comparison, and code_vs_rendered
- Each component now lists only relevant metadata props for its use case
@mfagundez-4geeks mfagundez-4geeks marked this pull request as draft December 30, 2025 23:22
@mfagundez-4geeks mfagundez-4geeks removed the request for review from Charlytoc July 2, 2026 22:20
@mfagundez-4geeks mfagundez-4geeks marked this pull request as draft July 2, 2026 22:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant