Nouveau : l'intégration Halo × Pennylane par Halentra est en ligne. Découvrez-la
Halentra
Accueil/Blog/Composants MDX

Chaque bloc à glisser dans un article

L'ensemble des composants MDX pour les contenus longs de Halentra. Copiez un bloc, remplissez le contenu, gardez le rythme.

01 · Texte + lien

Corps de texte

Style par défaut du paragraphe, du gras et des liens, appliqué automatiquement à chaque document MDX via le composant Prose partagé.

Le corps de texte utilise une interligne confortable pour que les explications longues restent faciles à suivre. L'emphase reste sémantique et discrète, et un lien ressemble à celui-ci, avec le style du composant de lien partagé plutôt qu'un style ponctuel.

usage.mdx
Body copy runs as plain Markdown. Use **bold** for
semantic emphasis and [a link](/demo) for anything clickable.
02 · Encadrés

Encadré

Deux tons sont câblés aujourd'hui : une boîte menthe douce pour les remarques générales, et un panneau sombre pour ce que le lecteur ne doit pas survoler.

Remarque

Les tarifs sont fixés par utilisateur, par mois. Les postes suivent leur propre ligne pour que la croissance reste visible.

Attention

N'écrivez jamais « illimité » dans un contrat. Ce n'est pas une condition commerciale, c'est un pari que vous perdrez la pire semaine venue.

usage.mdx
<Callout label="Note" tone="info">
  Rates are set per user, per month.
</Callout>

<Callout label="Heads up" tone="danger">
  Never write "unlimited" into a contract.
</Callout>
PropType
label
required
string
tone
optional
"info" | "danger" | "question"default "info"
children
required
ReactNode
03 · CTA

Prêt à le voir sur vos propres données ?

30 minutes, sans diaporama.

usage.mdx
<Cta
  title="Ready to see it on your own data?"
  subtitle="30 minutes, no slides."
  primaryLabel="Book a demo"
  primaryHref="/demo"
  secondaryLabel="See pricing"
  secondaryHref="/solutions"
/>
PropType
title
required
string
subtitle
optional
string
primaryLabel
required
string
primaryHref
required
string
secondaryLabel
optional
string
secondaryHref
optional
string

The secondary button only renders when both secondaryLabel and secondaryHref are set.

04 · Image

Image intégrée

S'affiche en pleine largeur par défaut, ouvre une visionneuse plein écran au clic, et précharge au survol pour une transition instantanée.

La légende reste discrète et tient sur une ligne dans la mesure du possible.
usage.mdx
<MediaImage
  src="/assets/hudu/hero.webp"
  alt="Example product screenshot"
  maxWidth={360}
/>
PropType
src
required
string
alt
optional
string
maxWidth
optional
number

Caps the rendered width in px. Full width when unset.

05 · Citation

Citation mise en avant

Une remise est un changement de prix. Une exception est un changement de périmètre. Confondre les deux, c'est voir sa marge disparaître en silence.

- Marc Aubert, Halentra
usage.mdx
<PullQuote
  text="A discount is a price change."
  name="Marc Aubert"
  role="Halentra"
/>
PropType
text
required
string
name
required
string
role
required
string
06 · Témoignage

Citation client

Nous avons arrêté de refaire les devis dans un tableur. Trois formules sont entrées dans le PSA et les renouvellements prennent deux fois moins de temps qu'avant.

Sarah Lindqvist
Responsable des opérations, Northbound IT
usage.mdx
<Quote
  text="We stopped rebuilding quotes in a spreadsheet."
  name="Sarah Lindqvist"
  role="Operations lead, Northbound IT"
/>
PropType
text
required
string
name
required
string
role
required
string
07 · Tableau

Tableau de données

FormuleCouvertureCe qui est inclus
EssentielHeures ouvréesCorrectifs, supervision, service desk.
StandardÉtendueHeures de projet, revues trimestrielles, un ingénieur dédié.
Critique24/7Astreinte hors heures ouvrées et plan de reprise testé.
usage.mdx
<DataTable
  columns={["Tier", "Coverage", "What it includes"]}
  rows={[
    ["Essential", "Business hours", "Patching, monitoring, service desk."],
  ]}
/>
PropType
columns
required
string[]
widths
optional
string[]

CSS grid track sizes, one per column. Defaults to an equal 1fr per column.

rows
required
ReactNode[][]
08 · FAQ

Questions fréquentes

Oui. Chaque bloc ci-dessous est un composant MDX autonome, un article peut donc passer d'un texte à un encadré puis à un tableau sans câblage particulier.

Utilisez le bloc disponible le plus proche, ou demandez à l'équipe technique de l'ajouter. La section « à construire » ci-dessous suit ce que le design prévoit mais que le site n'affiche pas encore.

usage.mdx
<Faq
  items={[
    { q: "Can I mix components?", a: "Yes, freely." },
  ]}
/>
PropType
items
required
{ q: string; a: string }[]
09 · Chiffres clés

Chiffres clés

14
composants disponibles aujourd'hui
9
encore à construire
1
endroit où ils sont tous documentés
usage.mdx
<KeyNumbers
  items={[
    { value: "12", label: "components live today" },
  ]}
/>
PropType
items
required
{ value: string; unit?: string; label: string }[]
10 · Frise

Frise chronologique

Étape 1
Rédiger le brouillon

Du texte simple d'abord, des blocs ajoutés seulement quand ils apportent quelque chose.

Étape 2
Insérer les blocs

Un encadré pour une remarque, un tableau pour des données, une citation quand elle le mérite.

Étape 3
Publier

Le composant Prose garde une typographie cohérente d'une collection à l'autre.

usage.mdx
<Timeline
  steps={[
    { period: "Step 1", title: "Write the draft", desc: "Plain prose first." },
  ]}
/>
PropType
steps
required
{ period: string; title: string; desc: string }[]
11 · Mise en avant

Mise en avant

Les clients pardonnent les hausses. Ils ne pardonnent pas les surprises.

usage.mdx
<StatementBanner
  text="Clients forgive increases. They do not forgive surprises."
  accent="surprises"
/>
PropType
text
required
string
accent
required
string

Must be an exact substring of text. That substring is what gets the accent colour.

13 · Avantages et limites

Avantages et limites

Une carte à deux colonnes : une liste à coches verte des points forts, à côté d'une liste sobre des points de vigilance.

Points forts
  • Les devis quittent le bureau en quelques minutes.
  • Les renouvellements ne repartent plus d'une feuille blanche.
Points de vigilance
  • Les contrats existants ont besoin d'une période de transition.
  • L'équipe commerciale a besoin d'une formation, pas d'une note de service.
usage.mdx
<ProsCons
  works={{
    label: "Works well",
    items: ["Quotes leave the office in minutes."],
  }}
  watch={{
    label: "Watch out",
    items: ["Legacy contracts need a migration window."],
  }}
/>
PropType
works
required
{ label: string; items: string[] }
watch
required
{ label: string; items: string[] }
14 · Téléchargement

Téléchargement

Une carte de fichier avec une icône, un titre et un sous-titre format/taille, à côté d'un bouton en forme de pilule qui télécharge le document joint.

Modèle de tarificationXLSX · 82 KB
Download
usage.mdx
<Download
  label="Pricing model template"
  url="/api/media/files/cms-body/pricing-model-template.xlsx"
  fileName="pricing-model-template.xlsx"
  size="83968"
/>
PropType
label
required
string
url
required
string
fileName
required
string
size
required
string

Stringified byte count - the subtitle formats it into a human-readable size.

15 · Onglets

Onglets

Une rangée d'onglets ; cliquer sur un intitulé remplace le paragraphe unique affiché en dessous.

Un court résumé de ce que couvre cette formule, en un paragraphe.

usage.mdx
<Tabs
  tabs={[
    { label: "Overview", body: "A short summary tab body goes here." },
    { label: "Pricing", body: "A second tab, swapped in on click." },
    { label: "Support", body: "A third tab, same paragraph treatment." },
  ]}
/>
PropType
tabs
required
{ label: string; body: string }[]
17 · Avant et après

Avant et après

Un curseur de comparaison d'images glissable - faites glisser la poignée, ou donnez-lui le focus et utilisez les flèches, pour révéler davantage de l'image « après ».

BEFOREAFTER
usage.mdx
<BeforeAfter
  before="/assets/hudu/work-screen-capture.webp"
  after="/assets/hudu/work-hudini-ai.webp"
  beforeLabel="BEFORE"
  afterLabel="AFTER"
/>
PropType
before
required
string

Image URL shown at split 0.

after
required
string

Image URL revealed as the split grows.

beforeLabel
optional
stringdefault "BEFORE"
afterLabel
optional
stringdefault "AFTER"
18 · Demander à un expert

Demander à un expert

Un bandeau sombre et compact associant une photo circulaire à un titre, un sous-titre et un bouton CTA vif - à placer après une section tarifs ou comparatif pour orienter le lecteur vers un contact nommé.

Vous n'êtes pas sûr de la situation de vos contrats ?
Parlez-nous
usage.mdx
<AskExpert
  photo="/assets/testimonials/amerix-livio.png"
  title="Not sure where your contracts stand?"
  body="Send us your current price list. We will tell you what to keep."
  ctaLabel="Talk to us"
  ctaUrl="/contact"
/>
PropType
photo
optional
string

Circular avatar photo URL. Renders a bare placeholder circle when unset.

title
required
string
body
required
string
ctaLabel
required
string
ctaUrl
required
string
23 · Comparatif de fonctionnalités

Comparatif de fonctionnalités

Un tableau à deux concurrents avec des en-têtes de catégorie, cinq types de contenu de cellule (coches, une pastille « Avantage », des croix, du texte simple et un prix en lien), des info-bulles facultatives par ligne, et une barre de pied de page avec un bouton d'action.

Feature
Hudu
Distribué par Halentra
IT Glue
Alternative
Documentation
IPAMGestion des adresses IP, intégrée nativement.
Advantage
Actifs illimités
Checklists et procédures
Advantage
Checklists basiques
Photos et schémas
Avancé
Accès API
Option auto-hébergéeFaites-le tourner sur votre propre infrastructure plutôt que sur le cloud de l'éditeur.
Advantage
Démo uniquement
Automatisation
Module Radar, 9 € / entreprise / mois
Recherche IA
Advantage
Tarifs et valeur
Utilisateurs inclus
Utilisateurs illimités
5 utilisateurs sur les formules standard
Tarif de départFacturation annuelle ; la facturation mensuelle est disponible moyennant un léger supplément.
44 € / utilisateur / mois
Durée d'engagement
Mensuel, sans engagement
Engagement annuel
D'après les pages tarifaires publiques, vérifié en juin 2026. Une information à jour manque ?
Planifier une migration
usage.mdx
<FeatureComparison
  columns={[
    { name: "Hudu", subtitle: "Distributed by Halentra" },
    { name: "IT Glue", subtitle: "Alternative" },
  ]}
  groups={[
    {
      label: "Documentation",
      rows: [
        {
          feature: "IPAM",
          tooltip: "IP address management, built in.",
          cells: [{ kind: "check" }, { kind: "cross" }],
        },
      ],
    },
  ]}
  footerNote="Based on public pricing pages, checked June 2026."
  footerLinkLabel="Spotted something out of date?"
  footerLinkUrl="/contact"
  ctaLabel="Plan a migration"
  ctaUrl="/contact"
/>
PropType
columns
required
[{ name: string; subtitle: string; logo?: string }, { name: string; subtitle: string; logo?: string }]

Exactly two entries. The first is the highlighted column - Halentra's own pick.

groups
required
{ label: string; rows: { feature: string; tooltip?: string; cells: [Cell, Cell] }[] }[]

Cell is one of { kind: "check" }, { kind: "check-advantage" }, { kind: "cross" }, { kind: "text"; text }, or { kind: "link"; text; href }.

footerNote
required
string
footerLinkLabel
optional
string
footerLinkUrl
optional
string

The inline footer link only renders when both footerLinkLabel and footerLinkUrl are set.

ctaLabel
required
string
ctaUrl
required
string
19 · À construire

Sur la liste

Le design prévoit aussi ces blocs, mais rien ne les affiche encore ici. Ils sont listés pour que le manque reste visible plutôt que silencieux.

  • Image à côté du texte
    Une capture d'écran avec un paragraphe de contexte, en miroir gauche/droite le long d'un article.
  • Vidéo intégrée
    Une image d'aperçu avec une icône de lecture par dessus.
  • Tableau comparatif
    Une mise en page à coches dédiée aux formules, distincte du tableau de données simple.
  • Liste mise en avant
    Une liste à puces avec des flèches pour les points clés à retenir.
  • Encadré question
    Un troisième ton d'encadré, en plus de la remarque et de l'alerte.