feat(Docker): Upgrade to PHP 8.5.0RC3 with native ext-uri support

BREAKING CHANGE: Requires PHP 8.5.0RC3

Changes:
- Update Docker base image from php:8.4-fpm to php:8.5.0RC3-fpm
- Enable ext-uri for native WHATWG URL parsing support
- Update composer.json PHP requirement from ^8.4 to ^8.5
- Add ext-uri as required extension in composer.json
- Move URL classes from Url.php85/ to Url/ directory (now compatible)
- Remove temporary PHP 8.4 compatibility workarounds

Benefits:
- Native URL parsing with Uri\WhatWg\Url class
- Better performance for URL operations
- Future-proof with latest PHP features
- Eliminates PHP version compatibility issues
This commit is contained in:
2025-10-27 09:31:28 +01:00
parent 799f74f00a
commit c8b47e647d
81 changed files with 6988 additions and 601 deletions

View File

@@ -0,0 +1,154 @@
/**
* Confusion Matrix Component
*
* Visual representation of classification model performance metrics
* with TP, TN, FP, FN quadrants and error rates
*/
.confusion-matrix-card {
padding: var(--space-md);
border: 1px solid var(--admin-border-color);
border-radius: var(--admin-border-radius);
background: var(--admin-card-bg);
}
.confusion-matrix-card__title {
margin: 0 0 var(--space-md);
font-size: var(--font-size-md);
font-weight: 600;
color: var(--admin-text-primary);
}
/* Confusion Matrix Grid - 2x2 Layout */
.confusion-matrix__grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--space-xs);
margin-bottom: var(--space-md);
}
/* Matrix Cells */
.confusion-matrix__cell {
padding: var(--space-md);
border-radius: var(--admin-border-radius);
text-align: center;
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.confusion-matrix__cell:hover {
transform: translateY(-2px);
box-shadow: var(--admin-shadow-md);
}
.confusion-matrix__cell-label {
font-size: var(--font-size-sm);
font-weight: 500;
margin-bottom: var(--space-xs);
text-transform: uppercase;
letter-spacing: 0.5px;
}
.confusion-matrix__cell-value {
font-size: var(--font-size-xl);
font-weight: 700;
}
/* Color-coded cells */
.confusion-matrix__cell--tp {
background: oklch(95% 0.05 150); /* Light green */
border: 2px solid oklch(70% 0.15 150);
color: oklch(30% 0.1 150);
}
.confusion-matrix__cell--tn {
background: oklch(95% 0.05 220); /* Light blue */
border: 2px solid oklch(65% 0.15 220);
color: oklch(30% 0.1 220);
}
.confusion-matrix__cell--fp {
background: oklch(95% 0.05 30); /* Light red/orange */
border: 2px solid oklch(70% 0.15 30);
color: oklch(35% 0.1 30);
}
.confusion-matrix__cell--fn {
background: oklch(95% 0.05 60); /* Light yellow */
border: 2px solid oklch(75% 0.15 60);
color: oklch(35% 0.1 60);
}
/* Rates Section */
.confusion-matrix__rates {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--space-sm);
padding-top: var(--space-md);
border-top: 1px solid var(--admin-border-color);
}
.confusion-matrix__rates .admin-stat-item {
padding: var(--space-sm);
background: var(--admin-bg-secondary);
border-radius: var(--admin-border-radius-sm);
}
.confusion-matrix__rates .admin-stat-item__label {
font-size: var(--font-size-sm);
font-weight: 500;
color: var(--admin-text-secondary);
}
.confusion-matrix__rates .admin-stat-item__value {
font-size: var(--font-size-md);
font-weight: 600;
color: var(--admin-text-primary);
}
/* Dark Mode Support */
:root[data-theme="dark"] .confusion-matrix__cell--tp {
background: oklch(25% 0.08 150);
border-color: oklch(45% 0.12 150);
color: oklch(85% 0.05 150);
}
:root[data-theme="dark"] .confusion-matrix__cell--tn {
background: oklch(25% 0.08 220);
border-color: oklch(45% 0.12 220);
color: oklch(85% 0.05 220);
}
:root[data-theme="dark"] .confusion-matrix__cell--fp {
background: oklch(25% 0.08 30);
border-color: oklch(45% 0.12 30);
color: oklch(85% 0.05 30);
}
:root[data-theme="dark"] .confusion-matrix__cell--fn {
background: oklch(25% 0.08 60);
border-color: oklch(45% 0.12 60);
color: oklch(85% 0.05 60);
}
/* Responsive Design */
@media (max-width: 768px) {
.confusion-matrix__grid {
gap: var(--space-xxs);
}
.confusion-matrix__cell {
padding: var(--space-sm);
}
.confusion-matrix__cell-label {
font-size: var(--font-size-xs);
}
.confusion-matrix__cell-value {
font-size: var(--font-size-lg);
}
.confusion-matrix__rates {
grid-template-columns: 1fr;
}
}