abad1630b6
TaxBaik CI/CD / build-and-deploy (push) Failing after 41s
- Add EasyMDE 2.18.0 CDN to App.razor - Add Marked.js for markdown preview rendering - Replace MudTextField with EasyMDE editor in BlogCreate.razor - Replace MudTextField with EasyMDE editor in BlogEdit.razor - Add JavaScript interop for editor initialization and content sync - Support markdown syntax highlighting and formatting toolbar Features: ✅ Bold, italic, strikethrough ✅ Headings (H1-H6) ✅ Code blocks and inline code ✅ Lists (ordered/unordered) ✅ Links and images ✅ Tables ✅ Quotes ✅ Horizontal rules ✅ Real-time preview (side-by-side mode) ✅ Full-screen editing ✅ Markdown guide The editor syncs content with Blazor form on save. Markdown syntax is preserved in database and rendered as HTML on blog pages.
137 lines
4.9 KiB
Plaintext
137 lines
4.9 KiB
Plaintext
@using Microsoft.AspNetCore.Components.Web
|
|
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>백원숙 세무회계 - 관리자</title>
|
|
<base href="/taxbaik/" />
|
|
<link rel="icon" type="image/svg+xml" href="/taxbaik/favicon.svg" />
|
|
<link rel="alternate icon" href="/taxbaik/favicon.ico" />
|
|
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap" rel="stylesheet" />
|
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
|
|
<link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet" />
|
|
<!-- EasyMDE 마크다운 에디터 -->
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/easymde@2.18.0/dist/easymde.min.css" />
|
|
<script src="https://cdn.jsdelivr.net/npm/easymde@2.18.0/dist/easymde.min.js"></script>
|
|
<!-- Marked 라이브러리 (EasyMDE 미리보기용) -->
|
|
<script src="https://cdn.jsdelivr.net/npm/marked@11.1.1/marked.min.js"></script>
|
|
<script>
|
|
document.documentElement.classList.toggle(
|
|
'admin-login-route',
|
|
window.location.pathname.toLowerCase().endsWith('/admin/login'));
|
|
</script>
|
|
<link rel="stylesheet" href="css/admin.css" />
|
|
<component type="typeof(HeadOutlet)" render-mode="InteractiveServer" />
|
|
</head>
|
|
<body>
|
|
<div id="components-reconnect-modal" class="admin-reconnect-modal">
|
|
<div class="admin-reconnect-card">
|
|
<strong>연결 재설정 중...</strong>
|
|
<span>새로운 버전으로 업데이트되었습니다.</span>
|
|
<span style="font-size: 0.85rem; margin-top: 0.5rem; opacity: 0.8;">자동으로 페이지를 새로고침합니다. 잠시만 기다려주세요.</span>
|
|
</div>
|
|
</div>
|
|
<div id="blazor-loading" class="blazor-loading-overlay show">
|
|
<div class="blazor-loading-spinner">
|
|
<div class="spinner"></div>
|
|
<p>로드 중...</p>
|
|
</div>
|
|
</div>
|
|
<MudThemeProvider @bind-IsDarkMode="isDarkMode" Theme="mudTheme" />
|
|
<Routes @rendermode="new InteractiveServerRenderMode(prerender: true)" />
|
|
<script src="_content/MudBlazor/MudBlazor.min.js"></script>
|
|
<script src="js/admin-session.js"></script>
|
|
<script src="_framework/blazor.web.js"></script>
|
|
<script>window.taxbaikAdminSession?.bindLoginForm();</script>
|
|
<script>window.taxbaikAdminSession?.watchReconnect();</script>
|
|
</body>
|
|
</html>
|
|
|
|
@code {
|
|
private bool isDarkMode = false;
|
|
private MudTheme mudTheme = new()
|
|
{
|
|
Palette = new PaletteLight()
|
|
{
|
|
Primary = "#1976D2",
|
|
PrimaryContrastText = "#FFFFFF",
|
|
Secondary = "#2D9F7E",
|
|
SecondaryContrastText = "#FFFFFF",
|
|
Tertiary = "#FF8A50",
|
|
TertiaryContrastText = "#FFFFFF",
|
|
Surface = "#F5F7FA",
|
|
Background = "#FFFFFF",
|
|
BackgroundGrey = "#F8F9FB",
|
|
DrawerBackground = "#FFFFFF",
|
|
DrawerText = "#424242",
|
|
AppbarBackground = "#FFFFFF",
|
|
AppbarText = "#424242",
|
|
TextPrimary = "#1A1A1A",
|
|
TextSecondary = "#64748B",
|
|
TextDisabled = "#94A3B8",
|
|
ActionDefault = "#1976D2",
|
|
ActionDisabled = "#BDBDBD",
|
|
Divider = "#E2E8F0",
|
|
DividerLight = "#F1F5F9",
|
|
Error = "#DC2626",
|
|
ErrorContrastText = "#FFFFFF",
|
|
Warning = "#F59E0B",
|
|
WarningContrastText = "#FFFFFF",
|
|
Info = "#06B6D4",
|
|
InfoContrastText = "#FFFFFF",
|
|
Success = "#16A34A",
|
|
SuccessContrastText = "#FFFFFF",
|
|
},
|
|
LayoutProperties = new LayoutProperties()
|
|
{
|
|
DefaultBorderRadius = "6px"
|
|
},
|
|
Typography = new Typography()
|
|
{
|
|
Default = new Default()
|
|
{
|
|
FontSize = ".8125rem",
|
|
FontWeight = 400,
|
|
LineHeight = 1.5
|
|
},
|
|
H1 = new H1()
|
|
{
|
|
FontSize = "1.75rem",
|
|
FontWeight = 600,
|
|
LineHeight = 1.2
|
|
},
|
|
H2 = new H2()
|
|
{
|
|
FontSize = "1.5rem",
|
|
FontWeight = 600,
|
|
LineHeight = 1.3
|
|
},
|
|
H3 = new H3()
|
|
{
|
|
FontSize = "1.25rem",
|
|
FontWeight = 600,
|
|
LineHeight = 1.3
|
|
},
|
|
H4 = new H4()
|
|
{
|
|
FontSize = "1.1rem",
|
|
FontWeight = 600,
|
|
LineHeight = 1.4
|
|
},
|
|
H5 = new H5()
|
|
{
|
|
FontSize = "0.95rem",
|
|
FontWeight = 500,
|
|
LineHeight = 1.4
|
|
},
|
|
H6 = new H6()
|
|
{
|
|
FontSize = "0.85rem",
|
|
FontWeight = 500,
|
|
LineHeight = 1.5
|
|
}
|
|
}
|
|
};
|
|
}
|