diff --git a/.gitignore b/.gitignore index b79c583..fef1160 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ public/* !public/index.html !public/style.css +!public/callouts.css .luarc.json peek.log deno.lock diff --git a/app/src/markdownit.ts b/app/src/markdownit.ts index 204845b..39e70e0 100644 --- a/app/src/markdownit.ts +++ b/app/src/markdownit.ts @@ -7,6 +7,7 @@ import { full as MarkdownItEmoji } from 'https://esm.sh/markdown-it-emoji@3.0.0' import { default as MarkdownItFootnote } from 'https://esm.sh/markdown-it-footnote@4.0.0'; import { default as MarkdownItTaskLists } from 'https://esm.sh/markdown-it-task-lists@2.1.1'; import { default as MarkdownItTexmath } from 'https://esm.sh/markdown-it-texmath@1.0.0'; +import { default as MarkdownItCallouts } from 'https://esm.sh/markdown-it-obsidian-callouts@0.2.6'; import Katex from 'https://esm.sh/katex@0.16.9'; const __args = parseArgs(Deno.args); @@ -28,6 +29,7 @@ const md = new MarkdownIt('default', { return ''; }), }).use(MarkdownItEmoji) + .use(MarkdownItCallouts) .use(MarkdownItFootnote) .use(MarkdownItTaskLists, { enabled: false, label: true }) .use(MarkdownItTexmath, { diff --git a/public/callouts.css b/public/callouts.css new file mode 100644 index 0000000..0970567 --- /dev/null +++ b/public/callouts.css @@ -0,0 +1,171 @@ +:root { + --color-red: #fb464c; + --color-orange: #e9973f; + --color-yellow: #e0de71; + --color-green: #44cf6e; + --color-cyan: #53dfdd; + --color-blue: #316dca; + --color-purple: #a882ff; + --color-pink: #fa99cd; + --color-gray: #9e9e9e; + --base-size-8: 0.5rem; + --base-size-16: 1rem; + --base-text-weight-medium: 500; + --borderColor-default: #444c56; + --callout-bug: var(--color-red); + --callout-default: var(--color-blue); + --callout-note: var(--color-blue); + --callout-error: var(--color-red); + --callout-example: var(--color-purple); + --callout-failure: var(--color-red); + --callout-important: var(--color-cyan); + --callout-info: var(--color-blue); + --callout-question: var(--color-orange); + --callout-success: var(--color-green); + --callout-abstract: var(--color-cyan); + --callout-tip: var(--color-cyan); + --callout-todo: var(--color-blue); + --callout-warning: var(--color-orange); + --callout-quote: var(--color-gray); +} + +.callout { + padding: var(--base-size-8) var(--base-size-16); + margin-bottom: var(--base-size-16); + color: inherit; + border-left: .25em solid var(--borderColor-default, var(--color-border-default)); +} + +.callout>:last-child { + margin-bottom: 0; +} + +.callout-title { + display: flex; + font-weight: var(--base-text-weight-medium, 500); + align-items: center; + line-height: 1; +} + +.callout-title-icon { + margin-right: var(--base-size-8, 8px) !important; +} + +.callout[data-callout="note"] { + border-left-color: var(--callout-note); +} +.callout[data-callout="note"] > .callout-title { + color: var(--callout-note); +} + +.callout[data-callout="info"] { + border-left-color: var(--callout-info); +} +.callout[data-callout="info"] > .callout-title { + color: var(--callout-info); +} + +.callout[data-callout="todo"] { + border-left-color: var(--callout-todo); +} +.callout[data-callout="todo"] > .callout-title { + color: var(--callout-todo); +} + +.callout[data-callout="abstract"], +.callout[data-callout="tldr"], +.callout[data-callout="summary"] { + border-left-color: var(--callout-abstract); +} +.callout[data-callout="abstract"] > .callout-title, +.callout[data-callout="tldr"] > .callout-title, +.callout[data-callout="summary"] > .callout-title { + color: var(--callout-abstract); +} + +.callout[data-callout="tip"], +.callout[data-callout="hint"], +.callout[data-callout="important"] { + border-left-color: var(--callout-tip); +} +.callout[data-callout="tip"] > .callout-title, +.callout[data-callout="hint"] > .callout-title, +.callout[data-callout="important"] > .callout-title { + color: var(--callout-tip); +} + +.callout[data-callout="success"], +.callout[data-callout="check"], +.callout[data-callout="done"] { + border-left-color: var(--callout-success); +} +.callout[data-callout="success"] > .callout-title, +.callout[data-callout="check"] > .callout-title, +.callout[data-callout="done"] > .callout-title { + color: var(--callout-success); +} + +.callout[data-callout="question"], +.callout[data-callout="help"], +.callout[data-callout="faq"] { + border-left-color: var(--callout-question); +} +.callout[data-callout="question"] > .callout-title, +.callout[data-callout="help"] > .callout-title, +.callout[data-callout="faq"] > .callout-title { + color: var(--callout-question); +} + +.callout[data-callout="warning"], +.callout[data-callout="caution"], +.callout[data-callout="attention"] { + border-left-color: var(--callout-warning); +} +.callout[data-callout="warning"] > .callout-title, +.callout[data-callout="caution"] > .callout-title, +.callout[data-callout="attention"] > .callout-title { + color: var(--callout-warning); +} + +.callout[data-callout="failure"], +.callout[data-callout="fail"], +.callout[data-callout="missing"] { + border-left-color: var(--callout-failure); +} +.callout[data-callout="failure"] > .callout-title, +.callout[data-callout="fail"] > .callout-title, +.callout[data-callout="missing"] > .callout-title { + color: var(--callout-failure); +} + +.callout[data-callout="danger"], +.callout[data-callout="error"] { + border-left-color: var(--callout-error); +} +.callout[data-callout="danger"] > .callout-title, +.callout[data-callout="error"] > .callout-title { + color: var(--callout-error); +} + +.callout[data-callout="bug"] { + border-left-color: var(--callout-bug); +} +.callout[data-callout="bug"] > .callout-title { + color: var(--callout-bug); +} + +.callout[data-callout="example"] { + border-left-color: var(--callout-example); +} +.callout[data-callout="example"] > .callout-title { + color: var(--callout-example); +} + +.callout[data-callout="quote"], +.callout[data-callout="cite"] { + border-left-color: var(--callout-quote); +} +.callout[data-callout="quote"] > .callout-title, +.callout[data-callout="cite"] > .callout-title { + color: var(--callout-quote); +} diff --git a/public/index.html b/public/index.html index 2232eb0..5f15fe4 100644 --- a/public/index.html +++ b/public/index.html @@ -8,6 +8,7 @@ +