From 6c4064d8b5722ac6de6b308e2849b748ef046050 Mon Sep 17 00:00:00 2001 From: zenn Date: Tue, 16 Jun 2026 16:54:01 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B8=EB=9D=BC=EC=9D=B8=20=ED=85=8D?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=83=89=EC=83=81=20=ED=8C=A8=EB=84=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/admin/AdminEditorBlockPanel.vue | 58 +++- components/admin/AdminMarkdownEditor.vue | 263 +++++++++++++++++- components/admin/AdminPostForm.vue | 10 + .../content/ContentMarkdownEditableInline.vue | 44 +++ .../content/ContentMarkdownInlineSegments.vue | 103 +++++++ .../content/ContentMarkdownRenderer.vue | 94 +------ docs/changelog.md | 5 + docs/deploy.md | 8 +- docs/history.md | 4 + docs/map.md | 6 +- docs/spec.md | 6 +- docs/update.md | 9 + lib/markdown-inline.js | 80 ++++-- lib/markdown-live-selection.js | 11 +- package-lock.json | 4 +- package.json | 2 +- 16 files changed, 581 insertions(+), 126 deletions(-) create mode 100644 components/content/ContentMarkdownInlineSegments.vue diff --git a/components/admin/AdminEditorBlockPanel.vue b/components/admin/AdminEditorBlockPanel.vue index b141f7d..47f175c 100644 --- a/components/admin/AdminEditorBlockPanel.vue +++ b/components/admin/AdminEditorBlockPanel.vue @@ -34,7 +34,8 @@ const emit = defineEmits([ 'update-quote-background', 'update-callout-options', 'update-code-options', - 'update-toggle-options' + 'update-toggle-options', + 'update-inline-color' ]) const backgroundLabels = { @@ -50,6 +51,15 @@ const backgroundSwatches = { ...CALLOUT_BACKGROUND_SWATCHES } +const inlineColorSwatches = { + gray: '#6b7280', + blue: '#0055ff', + green: '#16ae68', + yellow: '#a16207', + red: '#e60000', + purple: '#8800ff' +} + const languageOptions = ['', 'javascript', 'html', 'css', 'vue', 'json', 'bash', 'markdown', 'sql'] /** @@ -80,6 +90,13 @@ const getQuoteBackgroundLabel = (background) => QUOTE_BACKGROUND_LABELS[backgrou */ const getQuoteBackgroundSwatch = (background) => QUOTE_BACKGROUND_SWATCHES[background] || QUOTE_BACKGROUND_SWATCHES.gray +/** + * 인라인 색상 스와치를 반환한다. + * @param {string} color - 색상 키 + * @returns {string} CSS 색상 + */ +const getInlineColorSwatch = (color) => inlineColorSwatches[color] || inlineColorSwatches.gray + /** * 블록 종류 라벨 * @returns {string} @@ -93,6 +110,10 @@ const panelTitle = computed(() => { return '갤러리' } + if (props.panel.kind === 'inline-color') { + return '텍스트 색상' + } + if (props.panel.kind === 'embed') { return '임베드' } @@ -129,6 +150,10 @@ const panelMeta = computed(() => { return `${props.panel.images.length}개 이미지` } + if (props.panel.kind === 'inline-color') { + return '선택한 텍스트' + } + if (props.panel.kind === 'embed') { return 'YouTube·X 등 URL' } @@ -198,7 +223,36 @@ const onPanelFocusOut = (event) => {
-