secubox-openwrt/secubox-tools/webui/templates/partials/template_result.html
CyberMind-FR 0d6aaa1111 feat(webui): add Project Hub workspace and remove Command Center glow effects
- Add complete Project Hub & Workspace Interface implementation
  - New data models: Project, ModuleKit, Workspace
  - 3 fixture projects (cybermind.fr, cybermood.eu, secubox-c3)
  - 4 module kits (Security, Network, Automation, Media)
  - Workspace routes with project switching and kit installation
  - 4 workspace tabs: Overview, Module Kits, Devices, Composer
  - New navigation item: Workspace (7th section)

- Remove all glowing effects from UI
  - Remove Command Center widget glow and backdrop blur
  - Remove device status indicator glow
  - Remove toggle button glow effects

- Extend DataStore with 13 new methods for workspace management
- Add 270+ lines of workspace-specific CSS with responsive layouts
- Create workspace templates and result partials

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 08:10:22 +01:00

50 lines
1.9 KiB
HTML

{% if status == 'success' %}
<div class="alert alert-success" style="padding: 1rem; border-radius: 0.5rem;">
<h4>✅ Generated: {{ template.name }}</h4>
<p class="muted" style="margin: 0.5rem 0;">Template Type: {{ template.template_type }}</p>
{% if variables %}
<details style="margin: 0.75rem 0;">
<summary style="cursor: pointer; font-weight: 500;">Variables Used</summary>
<pre style="margin-top: 0.5rem; padding: 0.5rem; background: var(--bg); border-radius: 4px; overflow-x: auto; font-size: 0.85rem;">{{ variables|tojson(indent=2) }}</pre>
</details>
{% endif %}
<div style="margin-top: 1rem;">
<strong>Generated Configuration:</strong>
<pre id="generated-config" style="margin-top: 0.5rem; padding: 1rem; background: var(--bg); border-radius: 4px; overflow-x: auto; max-height: 400px; font-size: 0.9rem; font-family: monospace;">{{ output }}</pre>
</div>
<button class="btn ghost small" style="margin-top: 1rem;"
onclick="navigator.clipboard.writeText(document.getElementById('generated-config').textContent.trim());
if (typeof Alpine !== 'undefined' && Alpine.store('app')) {
Alpine.store('app').showToast('Copied to clipboard!', 'success');
}">
📋 Copy to Clipboard
</button>
</div>
{% else %}
<div class="alert alert-error" style="padding: 1rem; border-radius: 0.5rem;">
<div style="display: flex; align-items: center; gap: 0.75rem;">
<span style="font-size: 1.5rem;"></span>
<strong>{{ message }}</strong>
</div>
</div>
{% endif %}
<style>
.alert {
margin-bottom: 1rem;
}
.alert-success {
background: rgba(34, 197, 94, 0.1);
border: 1px solid rgba(34, 197, 94, 0.3);
color: #22c55e;
}
.alert-error {
background: rgba(239, 68, 68, 0.1);
border: 1px solid rgba(239, 68, 68, 0.3);
color: #ef4444;
}
</style>