From 24611af8b6ae6d180d9bd739bbf329aedc824e37 Mon Sep 17 00:00:00 2001 From: zenn Date: Thu, 4 Jun 2026 10:38:49 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BD=9C=EC=95=84=EC=9B=83=20=EC=83=89?= =?UTF-8?q?=EC=83=81=EA=B3=BC=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=ED=8C=A8=EB=84=90=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/admin/AdminBlockEditor.vue | 56 ++++++++++++------- components/admin/AdminEditorBlockPanel.vue | 12 +--- components/admin/AdminPostForm.vue | 4 +- .../content/ContentMarkdownEditableInline.vue | 2 + components/content/ProseCallout.vue | 20 ++----- docs/changelog.md | 6 ++ docs/deploy.md | 9 ++- docs/history.md | 4 ++ docs/map.md | 8 +-- docs/spec.md | 8 +-- docs/update.md | 7 +++ lib/markdown-callout.js | 5 +- package-lock.json | 4 +- package.json | 2 +- 14 files changed, 89 insertions(+), 58 deletions(-) diff --git a/components/admin/AdminBlockEditor.vue b/components/admin/AdminBlockEditor.vue index 8558e2d..3aaadf0 100644 --- a/components/admin/AdminBlockEditor.vue +++ b/components/admin/AdminBlockEditor.vue @@ -49,10 +49,42 @@ const calloutBackgroundOptions = [ { value: 'green', label: '초록' }, { value: 'yellow', label: '노랑' }, { value: 'red', label: '빨강' }, - { value: 'purple', label: '보라' }, - { value: 'pink', label: '핑크' } + { value: 'purple', label: '보라' } ] +/** + * 콜아웃 배경 스와치 색상을 반환한다. + * @param {string} background - 배경 키 + * @returns {string} CSS 배경색 + */ +const getCalloutBackgroundSwatch = (background) => { + if (background === 'gray') { + return 'color-mix(in srgb, #050505 10%, #ffffff)' + } + + if (background === 'blue') { + return 'color-mix(in srgb, #0055ff 10%, #ffffff)' + } + + if (background === 'green') { + return 'color-mix(in srgb, #16ae68 10%, #ffffff)' + } + + if (background === 'yellow') { + return 'color-mix(in srgb, #ffff00 10%, #ffffff)' + } + + if (background === 'red') { + return 'color-mix(in srgb, #ff0000 10%, #ffffff)' + } + + if (background === 'purple') { + return 'color-mix(in srgb, #8800ff 10%, #ffffff)' + } + + return 'color-mix(in srgb, #0055ff 10%, #ffffff)' +} + const blockCommands = [ { type: 'paragraph', @@ -2170,15 +2202,7 @@ defineExpose({ > @@ -2197,15 +2221,7 @@ defineExpose({ > diff --git a/components/admin/AdminEditorBlockPanel.vue b/components/admin/AdminEditorBlockPanel.vue index 5c8b569..051edc3 100644 --- a/components/admin/AdminEditorBlockPanel.vue +++ b/components/admin/AdminEditorBlockPanel.vue @@ -2,6 +2,7 @@ import { getImageAltAttribute, getImageDefaultAltLabel } from '../../lib/markdown-image.js' import { CALLOUT_BACKGROUND_OPTIONS, + CALLOUT_BACKGROUND_SWATCHES, CALLOUT_EMOJI_OPTIONS, QUOTE_BACKGROUND_LABELS, QUOTE_BACKGROUND_OPTIONS, @@ -42,18 +43,11 @@ const backgroundLabels = { green: '초록', yellow: '노랑', red: '빨강', - purple: '보라', - pink: '분홍' + purple: '보라' } const backgroundSwatches = { - gray: 'rgba(100,116,139,0.28)', - blue: 'rgba(59,130,246,0.3)', - green: 'rgba(34,197,94,0.3)', - yellow: 'rgba(245,158,11,0.34)', - red: 'rgba(239,68,68,0.3)', - purple: 'rgba(168,85,247,0.3)', - pink: 'rgba(236,72,153,0.28)' + ...CALLOUT_BACKGROUND_SWATCHES } const languageOptions = ['', 'javascript', 'html', 'css', 'vue', 'json', 'bash', 'markdown', 'sql'] diff --git a/components/admin/AdminPostForm.vue b/components/admin/AdminPostForm.vue index 0dc3c43..4cfb9ca 100644 --- a/components/admin/AdminPostForm.vue +++ b/components/admin/AdminPostForm.vue @@ -1621,11 +1621,11 @@ defineExpose({