Problem
Callout is opinionated in a way that blocks reuse for editorial/branded
call-outs. It (a) forces the internal structure — an optional icon slot, a title
<p class="font-semibold">, and a body wrapped in text-sm [&>p]:mb-0; and (b)
its variants are all colored surfaces (danger/info/note/success/tip/
warning, each a bg-*/10 border-* + fixed text color). A consumer that wants a
neutral or brand-accented call-out — e.g. a left-rule aside driven by --accent,
no colored background, with its own header + body typography — can't get there
without overriding half the classes and still fighting the fixed inner markup.
Proposal
- A neutral, token-driven variant (no colored bg/border/text; border + text
from the standard tokens, so a brand accent comes from --accent / className).
- Composable/headless usage: let the header and body be arbitrary children
(e.g. CalloutHeader / CalloutBody subcomponents, or accept title as a
ReactNode and drop the forced font-semibold / text-sm), so consumers own
the inner typography and layout while the component keeps the container role,
spacing and border.
Acceptance
Problem
Calloutis opinionated in a way that blocks reuse for editorial/brandedcall-outs. It (a) forces the internal structure — an optional icon slot, a title
<p class="font-semibold">, and a body wrapped intext-sm [&>p]:mb-0; and (b)its variants are all colored surfaces (
danger/info/note/success/tip/warning, each abg-*/10 border-*+ fixed text color). A consumer that wants aneutral or brand-accented call-out — e.g. a left-rule aside driven by
--accent,no colored background, with its own header + body typography — can't get there
without overriding half the classes and still fighting the fixed inner markup.
Proposal
from the standard tokens, so a brand accent comes from
--accent/className).(e.g.
CalloutHeader/CalloutBodysubcomponents, or accepttitleas aReactNodeand drop the forcedfont-semibold/text-sm), so consumers ownthe inner typography and layout while the component keeps the container role,
spacing and border.
Acceptance
font-semibold/text-smrole/spacing/border still provided; brand accent via token/className