{post.title}
Une question sur votre situation ?
// ============================================================
// MONARCH AVOCAT — Site (React, single-page artifact)
// ============================================================
const { useState, useEffect, useContext, createContext, Fragment } = React;
const HERO_IMG = "assets/hero.webp";
const CAL_LINK = "hugo-groslambert/diagnostic1h";
const CAL_ORIGIN = "https://cal.eu";
const CAL_EMBED_JS = "https://app.cal.eu/embed/embed.js";
const CAL_URL = `${CAL_ORIGIN}/${CAL_LINK}`;
// Charge le script d'embed Cal une seule fois et l'initialise (popup de réservation).
function useCalEmbed() {
useEffect(() => {
if (window.__monarchCalInit) return;
window.__monarchCalInit = true;
(function (C, A, L) {
let p = function (a, ar) {a.q.push(ar);};
let d = C.document;
C.Cal = C.Cal || function () {
let cal = C.Cal;let ar = arguments;
if (!cal.loaded) {cal.ns = {};cal.q = cal.q || [];d.head.appendChild(d.createElement("script")).src = A;cal.loaded = true;}
if (ar[0] === L) {
const api = function () {p(api, arguments);};
const namespace = ar[1];
api.q = api.q || [];
if (typeof namespace === "string") {cal.ns[namespace] = cal.ns[namespace] || api;p(cal.ns[namespace], ar);p(cal, ["initNamespace", namespace]);} else p(cal, ar);
return;
}
p(cal, ar);
};
})(window, CAL_EMBED_JS, "init");
try {
window.Cal("init", { origin: CAL_ORIGIN });
window.Cal("ui", { hideEventTypeDetails: false, layout: "month_view" });
} catch (e) {}
}, []);
}
// Ouvre la popup Cal ; repli sur l'ouverture d'onglet si le script n'est pas chargé.
function openCal(e) {
if (window.Cal) {
if (e) e.preventDefault();
window.Cal("modal", { calLink: CAL_LINK, config: { layout: "month_view" } });
}
// sinon : le lien href s'ouvre normalement (repli)
}
const C = {
blanc: "#FFFFFF",
albatre: "#FAF9F6",
encre: "#1B1D1C",
ardoise: "#5B7C99",
ardoiseFonce: "#3D5468",
sauge: "#5C6F5C",
saugeFonce: "#48584A",
gris: "#737373",
grisClair: "#9A9A95",
trait: "#E4E1DA"
};
const FONTS = {
serif: "'Fraunces', Georgia, serif",
body: "'Archivo', system-ui, sans-serif",
editorial: "'Spectral', Georgia, serif"
};
// ---------- i18n ----------
const LANGS = ["fr", "en", "es", "it"];
const LangContext = createContext({ lang: "fr", setLang: () => {} });
function useT() {
const { lang } = useContext(LangContext);
return (key) => {
const T = window.MONARCH_TRANSLATIONS || {};
const d = T[lang] || T.fr || {};
return d[key] ?? (T.fr && T.fr[key]) ?? key;
};
}
// Render translated HTML inline. tag defaults to span.
function TT({ k, tag = "span", style, className }) {
const t = useT();
return React.createElement(tag, {
style,
className,
dangerouslySetInnerHTML: { __html: t(k) }
});
}
// Inject Google Fonts + keyframes once
function useFonts() {
useEffect(() => {
const id = "monarch-fonts";
if (document.getElementById(id)) return;
const link = document.createElement("link");
link.id = id;
link.rel = "stylesheet";
link.href =
"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=Spectral:wght@400;500&family=Archivo:wght@300;400;500;600&display=swap";
document.head.appendChild(link);
const style = document.createElement("style");
style.textContent = `
@keyframes monarchRise { from { opacity:0; transform:translateY(22px);} to {opacity:1; transform:translateY(0);} }
@keyframes monarchFade { from { opacity:0;} to {opacity:1;} }
html { scroll-behavior: smooth; }
body { margin: 0; }
.monarch-article-body p { font-size: 18px; line-height: 1.78; color: #2c2e2d; margin: 0 0 22px; }
.monarch-article-body h2 { font-family: 'Fraunces', Georgia, serif; font-size: 26px; font-weight: 500; letter-spacing: -0.01em; margin: 40px 0 14px; }
.monarch-article-body h3 { font-family: 'Fraunces', Georgia, serif; font-size: 21px; font-weight: 500; margin: 32px 0 10px; }
.monarch-article-body ul, .monarch-article-body ol { font-size: 18px; line-height: 1.78; color: #2c2e2d; padding-left: 22px; margin: 0 0 22px; }
.monarch-article-body li { margin-bottom: 8px; }
.monarch-article-body blockquote { font-family: 'Fraunces', Georgia, serif; font-size: 24px; line-height: 1.4; font-weight: 500; color: #3D5468; border-left: 2px solid #5B7C99; margin: 30px 0; padding: 4px 0 4px 26px; }
.monarch-article-body a { color: #3D5468; text-decoration: underline; text-underline-offset: 3px; }
.monarch-article-body img { width: 100%; height: auto; margin: 24px 0; }
`;
document.head.appendChild(style);
}, []);
}
// ---------- Small UI atoms ----------
function Eyebrow({ children, color }) {
return (
{children}
);
}
function PrimaryBtn({ textKey, children, full, big, small, style }) {
const t = useT();
const [hover, setHover] = useState(false);
const label = textKey ? t(textKey) : children;
return (
setHover(true)}
onMouseLeave={() => setHover(false)}
style={{
display: "inline-flex",
alignItems: "center",
gap: 10,
fontFamily: FONTS.body,
fontSize: big ? 16 : small ? 13.5 : 15,
fontWeight: 600,
letterSpacing: "0.01em",
padding: big ? "19px 38px" : small ? "12px 20px" : "17px 30px",
borderRadius: 2,
background: hover ? C.saugeFonce : C.sauge,
color: "#fff",
cursor: "pointer",
textDecoration: "none",
transform: hover ? "translateY(-2px)" : "none",
boxShadow: hover ? "0 14px 30px -12px rgba(76,88,74,.6)" : "none",
transition: "all .35s cubic-bezier(.2,.7,.3,1)",
width: full ? "100%" : "auto",
justifyContent: full ? "center" : "flex-start",
...style
}}>
{label}{" "}
→
);
}
function MonarchSite() {
useFonts();
useCalEmbed();
const [page, setPage] = useState("home");
const [slug, setSlug] = useState(null);
const lang = "fr";
useEffect(() => { document.documentElement.setAttribute("lang", "fr"); }, []);
const go = (p, s = null) => {setPage(p);setSlug(s);window.scrollTo({ top: 0 });};
return (
{t("hero.body")}
{t("herocta.text")}
{t("chaos.sub")}
{t("method.sub")}
{t("process.sub")}
{t(s.bKey)}
{t("process.ctaText")}
{t("domains.cta.text")}
{t("doctrine.sub")}
« {t("doctrine.quote")} »
{t(textKey || "finalcta.text")}
{t("profil.midcta.text")}
{t("blog.sub")}
{posts.length === 0 ?{t("blog.empty")}
:{post.excerpt}
}Article introuvable.
Une question sur votre situation ?
{children}
; const Ph = ({ children }) => {children}; return (Le présent site est édité par Hugo Groslambert, avocat inscrit au Barreau de Toulouse.
Téléphone : +33 6 69 56 99 18 — Courriel : contact@monarch-avocat.fr
Directeur de la publication : Hugo Groslambert.
Avocat au Barreau de Toulouse, Maître Hugo Groslambert est soumis aux règles de la profession d'avocat : la loi n° 71-1130 du 31 décembre 1971, le décret n° 91-1197 du 27 novembre 1991, le Règlement Intérieur National (RIN) du Conseil National des Barreaux et le règlement intérieur du Barreau de Toulouse.
Le titre d'avocat est un titre professionnel français protégé. La structure relève de l'Ordre des Avocats du Barreau de Toulouse.
Conformément aux articles L.611-1 et suivants du Code de la consommation, le client consommateur peut recourir gratuitement au médiateur de la consommation de la profession d'avocat.
Le site est hébergé par Hostinger International Ltd., 61 Lordou Vironos Street, 6023 Larnaca, Chypre —
L'ensemble des contenus (textes, articles, identité visuelle, photographies) est protégé par le droit d'auteur et reste la propriété de l'éditeur, sauf mention contraire. Toute reproduction ou réutilisation sans autorisation est interdite.
Les informations transmises via le formulaire de prise de rendez-vous ou par courriel sont utilisées uniquement pour répondre à votre demande et ne sont pas cédées à des tiers. Conformément au RGPD et à la loi « Informatique et Libertés », vous disposez d'un droit d'accès, de rectification, d'effacement et d'opposition sur vos données, en écrivant à contact@monarch-avocat.fr. Réclamation possible auprès de la CNIL (www.cnil.fr).
Les échanges avec un avocat sont couverts par le secret professionnel. Les informations diffusées sur ce site ont une vocation générale et d'information ; elles ne constituent pas une consultation juridique et ne sauraient engager la responsabilité de l'éditeur.