diff --git a/public/icons/dark.svg b/public/icons/dark.svg new file mode 100644 index 0000000..2e7841e --- /dev/null +++ b/public/icons/dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/light.svg b/public/icons/light.svg new file mode 100644 index 0000000..2b2a23e --- /dev/null +++ b/public/icons/light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/app.component.css b/src/app/app.component.css index 6eeab3d..7f99db6 100644 --- a/src/app/app.component.css +++ b/src/app/app.component.css @@ -25,3 +25,175 @@ opacity: 0.7; } } + +.theme-switch { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 6px 10px; + border-radius: 999px; + background: #f3f4f6; + color: #111827; + cursor: pointer; + user-select: none; +} + +.theme-switch input { + position: absolute; + opacity: 0; + pointer-events: none; +} + +.theme-switch__icon { + width: 20px; + height: 20px; + display: block; +} + +.theme-switch__track { + width: 44px; + height: 24px; + padding: 2px; + border-radius: 999px; + background: #d1d5db; + display: inline-flex; + align-items: center; + transition: background 0.2s ease; +} + +.theme-switch__thumb { + width: 20px; + height: 20px; + border-radius: 999px; + background: #ffffff; + box-shadow: 0 1px 3px rgb(0 0 0 / 0.2); + transition: transform 0.2s ease; +} + +.theme-switch-dark { + background: #111827; + color: #f9fafb; +} + +.theme-switch-dark .theme-switch__track { + background: #2563eb; +} + +.theme-switch-dark .theme-switch__thumb { + transform: translateX(20px); +} + +.editor-panel { + background: #ffffff; +} + +.editor-panel-dark { + background: #111827; + border-color: #374151; +} + +.editor-panel-dark .line-number-panel { + border-color: #374151; + background: #0f172a; +} + +.line-number { + color: #9ca3af; +} + +.editor-panel-dark .line-number { + color: #6b7280; +} + +.editor-textarea { + background: transparent; + color: #111827; + caret-color: #111827; +} + +.editor-panel-dark .editor-textarea { + color: #f9fafb; + caret-color: #f9fafb; +} + +.editor-textarea::selection { + background: rgb(59 130 246 / 0.25); +} + +.preview-panel { + background: #ffffff; + color: #111827; +} + +.preview-panel-dark { + background: #0f172a; + color: #e5e7eb; +} + +.preview-panel-dark, +.preview-panel-dark .markdown-body, +.preview-panel-dark .markdown-body p, +.preview-panel-dark .markdown-body li, +.preview-panel-dark .markdown-body blockquote, +.preview-panel-dark .markdown-body td, +.preview-panel-dark .markdown-body th { + color: #e5e7eb; +} + +.preview-panel-dark .markdown-body { + background: transparent; +} + +.preview-panel-dark .markdown-body pre, +.preview-panel-dark .markdown-body code { + background: rgb(148 163 184 / 0.14); +} + +.preview-panel-dark .markdown-body .md-alert { + background: #111827; + border: 1px solid #1f2937; + border-left-width: 4px; + border-radius: 12px; + padding: 16px; +} + +.preview-panel-dark .markdown-body .md-alert-content, +.preview-panel-dark .markdown-body .md-alert-content p { + color: #cbd5e1; +} + +.preview-panel-dark .markdown-body .md-alert-note { + background: rgb(37 99 235 / 0.12); + border-color: rgb(59 130 246 / 0.35); +} + +.preview-panel-dark .markdown-body .md-alert-tip { + background: rgb(22 163 74 / 0.12); + border-color: rgb(34 197 94 / 0.35); +} + +.preview-panel-dark .markdown-body .md-alert-important { + background: rgb(147 51 234 / 0.12); + border-color: rgb(168 85 247 / 0.35); +} + +.preview-panel-dark .markdown-body .md-alert-warning { + background: rgb(217 119 6 / 0.12); + border-color: rgb(245 158 11 / 0.35); +} + +.preview-panel-dark .markdown-body .md-alert-caution { + background: rgb(220 38 38 / 0.12); + border-color: rgb(239 68 68 / 0.35); +} + +.preview-panel-dark .markdown-body a { + color: #93c5fd; +} + +.preview-panel-dark .markdown-body hr, +.preview-panel-dark .markdown-body table th, +.preview-panel-dark .markdown-body table td, +.preview-panel-dark .markdown-body blockquote { + border-color: #334155; +} diff --git a/src/app/app.component.html b/src/app/app.component.html index 6518cae..41488cc 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -83,7 +83,7 @@ accept=".md,.txt,text/markdown,text/plain" (change)="onFileUpload($event)" /> - @@ -144,6 +144,26 @@ >GitHub +
@@ -152,16 +172,17 @@ [ngClass]="{ 'w-full rounded-2xl': !hideOrShowPreview(), 'w-1/2 rounded-l-2xl': hideOrShowPreview(), + 'editor-panel-dark': darkEditorTheme(), }" - class="h-full bg-white flex border-r border-[#cccc] overflow-hidden" + class="editor-panel h-full flex border-r border-[#cccc] overflow-hidden" >
@for (lineNumber of lineNumbers(); track lineNumber) { - + {{ lineNumber }} } @@ -169,7 +190,7 @@