secubox-openwrt/luci-app-system-hub/htdocs/luci-static/resources/system-hub/services.css
CyberMind-FR 8e53825ad5 release: v0.2.2 - Design System v0.3.0 & Comprehensive Documentation
🎨 Design System v0.3.0 (Demo-inspired)
- New dark palette: #0a0a0f, #6366f1→#8b5cf6 gradients
- Typography: Inter + JetBrains Mono
- Compact stats grid (130px min)
- Gradient text effects with background-clip
- Sticky navigation tabs
- Enhanced card borders and hover effects

📚 Comprehensive Documentation Suite
- DEVELOPMENT-GUIDELINES.md (33KB, 900+ lines)
  - 9 major sections: Design, Architecture, RPCD, ACL, JS, CSS, Errors, Validation, Deployment
  - Complete code templates and best practices
  - Common error diagnostics and solutions
- QUICK-START.md (6.4KB)
  - 8 critical rules for immediate reference
  - Quick code templates
  - Error quick fixes table
- deploy-module-template.sh (8.1KB)
  - Standardized deployment with automatic backup
  - Permission fixes, cache clearing, verification
- Updated CLAUDE.md, README.md with documentation index
- Updated .claude/README.md to v2.0

🔄 Version Updates
- luci-app-secubox: 0.1.2 → 0.2.2
- luci-app-system-hub: 0.1.1 → 0.2.2
- Updated all version strings (api.js, overview.js, CSS files)

🎯 CSS Enhancements
- common.css: Complete rewrite with demo palette
- overview.css: Dashboard header with gradient
- services.css: Updated version to 0.2.2
- components.css: Updated version to 0.2.2

🔧 Critical Rules Documented
1. RPCD naming: file = ubus object (luci. prefix)
2. Menu path = view file location
3. Permissions: 755 (RPCD), 644 (CSS/JS)
4. ALWAYS run validate-modules.sh
5. CSS variables only (no hardcode)
6. Dark mode mandatory
7. Typography: Inter + JetBrains Mono
8. Gradients: --sh-primary → --sh-primary-end

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-26 18:55:19 +01:00

90 lines
1.6 KiB
CSS

/**
* System Hub - Services Page Styles
* Modern card-based service management interface
* Version: 0.2.2
*/
/* === Services Grid === */
.sh-services-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 20px;
margin-bottom: 24px;
}
/* === Service Cards === */
.sh-services-grid .sh-card {
margin-bottom: 0;
}
.sh-services-grid .sh-card-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.sh-services-grid .sh-card-title {
margin: 0;
flex: 1;
}
.sh-services-grid .sh-card-badge {
flex-shrink: 0;
margin-left: 12px;
}
/* === Service Status Badges === */
.sh-services-grid .sh-status-badge {
display: inline-block;
padding: 6px 12px;
border-radius: 12px;
font-size: 13px;
font-weight: 600;
line-height: 1.4;
}
.sh-services-grid .sh-status-ok {
background: rgba(34, 197, 94, 0.15);
color: #16a34a;
}
.sh-services-grid .sh-status-error {
background: rgba(239, 68, 68, 0.15);
color: #dc2626;
}
/* === Action Buttons === */
.sh-services-grid .sh-btn {
flex: 1;
min-width: 100px;
}
/* === Responsive === */
@media (max-width: 768px) {
.sh-services-grid {
grid-template-columns: 1fr;
}
.sh-services-grid .sh-card-header {
flex-direction: column;
align-items: flex-start;
gap: 12px;
}
.sh-services-grid .sh-card-badge {
margin-left: 0;
align-self: flex-start;
}
}
/* === Dark Mode === */
[data-theme="dark"] .sh-services-grid .sh-status-ok {
background: rgba(34, 197, 94, 0.2);
color: #22c55e;
}
[data-theme="dark"] .sh-services-grid .sh-status-error {
background: rgba(239, 68, 68, 0.2);
color: #ef4444;
}