## Major Changes - Moved all testdrive-jsui assets from root to capabilities/testdrive-jsui/ - Consolidated directory structure: js/, static/css/, static/images/, static/templates/ - Implemented plugin self-declaration (get_plugin_source_dir, get_asset_paths) - Removed hardcoded plugin discovery from rendering.py - Updated all asset paths to be relative to capability root ## Architecture Improvements - Single source of truth for all testdrive-jsui assets - Plugin declares its own location (no hardcoded paths) - Generic plugin discovery using hasattr check - Clean separation: all JS in .js files, no code mixing - Standalone capability ready for independent use ## Files Changed - markitect/plugins/testdrive_jsui.py: Added self-declaration methods - markitect/plugins/rendering.py: Removed hardcoded discovery - capabilities/testdrive-jsui/README.md: Added standalone usage documentation - Moved 17 asset files to consolidated structure - Deleted obsolete /testdrive-jsui/ root directory ## Testing - All 17 assets verified and working - Tested via CLI: markitect md-render --engine testdrive-jsui - Full document rendering successful Prepares testdrive-jsui to become a git submodule with proper dependency management. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
101 lines
2.3 KiB
CSS
101 lines
2.3 KiB
CSS
/**
|
|
* TestDrive JSUI Editor Styles
|
|
*
|
|
* Base styles for the markdown editor interface
|
|
*/
|
|
|
|
.markitect-edit-mode {
|
|
position: relative;
|
|
}
|
|
|
|
/* Section editing styles */
|
|
.markitect-section {
|
|
position: relative;
|
|
padding: 0.5rem;
|
|
margin: 0.5rem 0;
|
|
border: 1px solid transparent;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.markitect-section:hover {
|
|
background-color: #f8f9fa;
|
|
border-color: #e9ecef;
|
|
}
|
|
|
|
.markitect-section.editing {
|
|
background-color: #fff;
|
|
border-color: #007bff;
|
|
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
|
|
}
|
|
|
|
/* Editor styles */
|
|
.markitect-editor {
|
|
width: 100%;
|
|
min-height: 100px;
|
|
padding: 0.75rem;
|
|
border: none;
|
|
background: transparent;
|
|
font-family: inherit;
|
|
font-size: inherit;
|
|
line-height: inherit;
|
|
resize: vertical;
|
|
}
|
|
|
|
.markitect-editor:focus {
|
|
outline: none;
|
|
}
|
|
|
|
/* Control panel positioning */
|
|
.markitect-control-panel {
|
|
position: fixed;
|
|
z-index: 1000;
|
|
background: #fff;
|
|
border: 1px solid #dee2e6;
|
|
border-radius: 6px;
|
|
padding: 0.75rem;
|
|
min-width: 200px;
|
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
/* Compass positioning */
|
|
.markitect-control-nw { top: 20px; left: 20px; }
|
|
.markitect-control-ne { top: 20px; right: 20px; }
|
|
.markitect-control-e { top: 50%; right: 20px; transform: translateY(-50%); }
|
|
.markitect-control-se { bottom: 20px; right: 20px; }
|
|
.markitect-control-s { bottom: 20px; left: 50%; transform: translateX(-50%); }
|
|
.markitect-control-sw { bottom: 20px; left: 20px; }
|
|
.markitect-control-w { top: 50%; left: 20px; transform: translateY(-50%); }
|
|
|
|
/* Control panel states */
|
|
.markitect-control-collapsed {
|
|
width: 40px;
|
|
height: 40px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.markitect-control-expanded {
|
|
max-width: 300px;
|
|
max-height: 400px;
|
|
}
|
|
|
|
/* Debug styles */
|
|
.markitect-debug-panel {
|
|
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
|
font-size: 12px;
|
|
background: #2d3748;
|
|
color: #e2e8f0;
|
|
max-height: 300px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.markitect-debug-message {
|
|
padding: 0.25rem 0.5rem;
|
|
border-bottom: 1px solid #4a5568;
|
|
}
|
|
|
|
.markitect-debug-error { color: #fed7d7; }
|
|
.markitect-debug-warning { color: #faf089; }
|
|
.markitect-debug-success { color: #9ae6b4; }
|
|
.markitect-debug-info { color: #bee3f8; } |