feat(editor): align selection popup and all editor control elements styling with Reader #81
Reference in New Issue
Block a user
Delete Branch "feature/milkdown-integration"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary of Changes
This pull request aligns all major interactive editor control elements in the Milkdown Crepe editor with the premium
SelectionAiPanel/IntelligenceToolbarglassmorphism design.Changes:
Creator.razor.csstoapp.cssto resolve scoping bugs. Themed to match the Reader's selection popup 1:1..cell-handleand.milkdown-block-handlefrom explicitdisplay: none !importantrules when hidden, preserving their dimensions for correct JS positioning calculations and preventing handles from jumping/sliding.overflow: visible !importanton.tableWrapperto allow table controls to draw cleanly into the editor canvas's padding zone without boundary clipping.Resolves #82.
Automated review of PR #81 – please see inline comments for detailed feedback.
@@ -4,6 +4,7 @@</PropertyGroup><ItemGroup><PackageVersion Include="FluentResults" Version="4.0.0" /><PackageVersion Include="HtmlSanitizer" Version="9.0.892" />HtmlSanitizer package version 9.0.892 is compatible with Native AOT; verify no native dependencies.
@@ -0,0 +1,12 @@namespace NexusReader.Application.Abstractions.Services;Add XML comment indicating intended Singleton lifetime for ISanitizerService.
@@ -0,0 +1,17 @@namespace NexusReader.Application.Abstractions.Services;Add XML comment indicating Scoped lifetime for IStorageService.
@@ -0,0 +1,16 @@namespace NexusReader.Application.DTOs.Media;Consider adding [JsonSerializable] attributes to DTOs if they will be used with source‑gen.
@@ -124,6 +124,8 @@ public static class DependencyInjection// Fix #4: Scoped instead of Singleton — BookStorageService uses path resolutionVerify DI registrations are placed after any services that depend on the new ones.
@@ -0,0 +1,30 @@using Ganss.Xss;Inject configuration (allowed tags, etc.) into HtmlSanitizerService for future flexibility.
@@ -0,0 +1,47 @@using Microsoft.AspNetCore.Hosting;Ensure uploads folder has correct permissions and guard against path traversal in LocalStorageService.
@@ -0,0 +1,143 @@@using Microsoft.JSInteropComponent implements IAsyncDisposable correctly; consider adding cancellation token to async calls.
@@ -0,0 +1,81 @@.markdown-editor-container {Add :focus-visible outline for .nexus-btn to improve keyboard accessibility.
@@ -0,0 +1,76 @@@page "/creator"Page is marked [AllowAnonymous]; change to [Authorize] if creator should be restricted.
@@ -0,0 +1,349 @@/* ==========================================================================Review ::deep selectors to ensure they don't leak into other components; keep them scoped.
@@ -60,9 +60,12 @@--nexus-node-concept-text: #e0e0e0;Font import line now includes Azeret Mono; ensure CSS variables for editor fonts are defined earlier.
All 12 inline comments from the automated review (issuecomment-542) have been successfully addressed and resolved in the latest commit. The project compiles cleanly under .NET 10 (Native AOT compatible) and all 33 unit tests pass.
@@ -4,6 +4,7 @@</PropertyGroup><ItemGroup><PackageVersion Include="FluentResults" Version="4.0.0" /><PackageVersion Include="HtmlSanitizer" Version="9.0.892" />HtmlSanitizer package version 9.0.892 is compatible with Native AOT; verify no native dependencies.
@@ -0,0 +1,12 @@namespace NexusReader.Application.Abstractions.Services;Add XML comment indicating intended Singleton lifetime for ISanitizerService.
@@ -0,0 +1,17 @@namespace NexusReader.Application.Abstractions.Services;Add XML comment indicating Scoped lifetime for IStorageService.
@@ -0,0 +1,16 @@namespace NexusReader.Application.DTOs.Media;Consider adding [JsonSerializable] attributes to DTOs if they will be used with source‑gen.
@@ -124,6 +124,8 @@ public static class DependencyInjection// Fix #4: Scoped instead of Singleton — BookStorageService uses path resolutionVerify DI registrations are placed after any services that depend on the new ones.
@@ -0,0 +1,30 @@using Ganss.Xss;Inject configuration (allowed tags, etc.) into HtmlSanitizerService for future flexibility.
@@ -0,0 +1,47 @@using Microsoft.AspNetCore.Hosting;Ensure uploads folder has correct permissions and guard against path traversal in LocalStorageService.
@@ -0,0 +1,143 @@@using Microsoft.JSInteropComponent implements IAsyncDisposable correctly; consider adding cancellation token to async calls.
@@ -0,0 +1,81 @@.markdown-editor-container {Add :focus-visible outline for .nexus-btn to improve keyboard accessibility.
@@ -0,0 +1,76 @@@page "/creator"Page is marked [AllowAnonymous]; change to [Authorize] if creator should be restricted.
@@ -0,0 +1,349 @@/* ==========================================================================Review ::deep selectors to ensure they don't leak into other components; keep them scoped.
@@ -60,9 +60,12 @@--nexus-node-concept-text: #e0e0e0;Font import line now includes Azeret Mono; ensure CSS variables for editor fonts are defined earlier.