diff --git a/src/components/pages/Documentation/Markdown/index.tsx b/src/components/pages/Documentation/Markdown/index.tsx
index 4d99d73f..11233c8e 100644
--- a/src/components/pages/Documentation/Markdown/index.tsx
+++ b/src/components/pages/Documentation/Markdown/index.tsx
@@ -211,6 +211,50 @@ const Toggle: React.FC<{
)
}
+const icons = {
+ tip: 'đĄ',
+ info: 'âšī¸',
+ warn: 'â ī¸',
+ fire: 'đĨ',
+ exclamation: 'â',
+ lady_beetle: 'đ',
+ bug: 'đ'
+}
+const genericTitles = {
+ info: 'Info',
+ tip: 'Tip',
+ warn: 'Warning'
+}
+const defaultType = 'info'
+
+const Admonition: React.FC<{
+ title?: string
+ type?: 'info' | 'tip' | 'warn'
+ icon?:
+ | 'tip'
+ | 'info'
+ | 'warn'
+ | 'fire'
+ | 'exclamation'
+ | 'lady_beetle'
+ | 'bug'
+}> = ({ title, type = defaultType, children, icon = type }) => {
+ const setType = genericTitles[type] ? type : defaultType
+ const iconContent = icons[icon] || ''
+
+ return (
+
+
+ {title || genericTitles[setType]}
+
+
{children}
+
+ )
+}
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const renderAst = new (rehypeReact as any)({
createElement: React.createElement,
@@ -221,7 +265,9 @@ const renderAst = new (rehypeReact as any)({
card: Card,
cards: Cards,
toggle: Toggle,
- tab: React.Fragment
+ tab: React.Fragment,
+ admon: Admonition,
+ admonition: Admonition
}
}).Compiler
diff --git a/src/components/pages/Documentation/Markdown/styles.module.css b/src/components/pages/Documentation/Markdown/styles.module.css
index 1d79eac5..9c446c13 100644
--- a/src/components/pages/Documentation/Markdown/styles.module.css
+++ b/src/components/pages/Documentation/Markdown/styles.module.css
@@ -494,3 +494,48 @@ a.card {
overflow: hidden;
width: 0;
}
+
+.admonition {
+ padding: 10px;
+ border-left-style: solid;
+ margin-bottom: 10px;
+ border-radius: 10px;
+ border-left-width: 10px;
+
+ &.warn {
+ border-color: var(--color-orange);
+ background-color: rgb(227 112 70 / 20%);
+ }
+
+ &.tip {
+ border-color: var(--color-azure);
+ background-color: rgb(19 173 199 / 20%);
+ }
+
+ &.info {
+ border-color: var(--color-purple);
+ background-color: rgb(148 93 214 / 20%);
+ }
+
+ .title {
+ font-weight: 500;
+ margin: 0;
+ }
+
+ .title::before {
+ margin-right: 5px;
+ content: var(--icon);
+ }
+
+ .title.noIcon::before {
+ margin-right: 0;
+ }
+
+ .admonitionContent {
+ padding: 10px 0 0;
+ }
+
+ .admonitionContent *:last-child {
+ margin-bottom: 0;
+ }
+}