Autosave: 20260415-173700
This commit is contained in:
parent
fe9896701d
commit
ee0bd438e1
BIN
assets/pasted-20260415-170835-db1b857a.png
Normal file
BIN
assets/pasted-20260415-170835-db1b857a.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 746 KiB |
BIN
assets/pasted-20260415-172005-b68636bd.png
Normal file
BIN
assets/pasted-20260415-172005-b68636bd.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 601 KiB |
BIN
assets/pasted-20260415-172807-f4ce0287.png
Normal file
BIN
assets/pasted-20260415-172807-f4ce0287.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 656 KiB |
406
index.php
406
index.php
@ -485,9 +485,9 @@ if ($has_member_access) {
|
||||
}
|
||||
|
||||
.modal-item-custom {
|
||||
width: 92%;
|
||||
max-width: 1380px;
|
||||
min-width: 960px;
|
||||
width: 94%;
|
||||
max-width: 1500px;
|
||||
min-width: 1040px;
|
||||
}
|
||||
|
||||
.item-custom-dialog {
|
||||
@ -588,69 +588,160 @@ if ($has_member_access) {
|
||||
}
|
||||
|
||||
.item-custom-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 18px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
max-height: 68vh;
|
||||
overflow-y: auto;
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
.item-custom-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 16px;
|
||||
padding: 18px;
|
||||
border-radius: 16px;
|
||||
background: linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.025));
|
||||
border: 1px solid rgba(162, 155, 120, 0.22);
|
||||
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.22);
|
||||
}
|
||||
|
||||
.item-custom-card-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
display: grid;
|
||||
grid-template-columns: 56px minmax(0, 380px) minmax(320px, 1.65fr);
|
||||
gap: 14px;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
padding: 7px 14px 8px;
|
||||
border-radius: 12px;
|
||||
background: linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.022));
|
||||
border: 1px solid rgba(162, 155, 120, 0.2);
|
||||
box-shadow: 0 8px 18px rgba(0, 0, 0, 0.18);
|
||||
}
|
||||
|
||||
.item-custom-card-identity {
|
||||
.item-custom-card-media {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 14px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.item-custom-card-thumb {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
border-radius: 14px;
|
||||
object-fit: contain;
|
||||
justify-content: center;
|
||||
width: 52px !important;
|
||||
height: 52px !important;
|
||||
min-width: 52px;
|
||||
min-height: 52px;
|
||||
aspect-ratio: 1 / 1;
|
||||
overflow: hidden;
|
||||
border-radius: 10px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.12);
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
padding: 6px;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
|
||||
cursor: zoom-in;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.item-custom-card-media.is-image-missing {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.item-custom-card-media.is-image-missing::after {
|
||||
content: 'N/A';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 0.62em;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.01));
|
||||
}
|
||||
|
||||
.item-custom-card-main {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
gap: 1px;
|
||||
min-width: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.item-custom-card-stats {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.item-custom-card-stats-header {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.item-custom-card-thumb {
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
min-width: 100%;
|
||||
max-width: none;
|
||||
border-radius: 0;
|
||||
object-fit: cover;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
display: block;
|
||||
flex: 1 0 auto;
|
||||
}
|
||||
|
||||
.item-custom-card-media.is-image-missing .item-custom-card-thumb,
|
||||
.item-custom-card-media.is-image-missing .item-custom-card-preview {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.item-custom-card-preview {
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: -10px;
|
||||
left: 68px;
|
||||
z-index: 1000;
|
||||
padding: 5px;
|
||||
background: rgba(11, 15, 22, 0.97);
|
||||
border: 1px solid rgba(162, 155, 120, 0.5);
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 14px 40px rgba(0, 0, 0, 0.55), 0 0 20px rgba(162, 155, 120, 0.2);
|
||||
backdrop-filter: blur(12px);
|
||||
transition: opacity 0.18s ease, visibility 0.18s ease;
|
||||
pointer-events: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.item-custom-card-preview img {
|
||||
width: 320px;
|
||||
height: 320px;
|
||||
object-fit: contain;
|
||||
display: block;
|
||||
border-radius: 6px;
|
||||
background: rgba(255, 255, 255, 0.02);
|
||||
}
|
||||
|
||||
.item-custom-card-media:hover .item-custom-card-preview,
|
||||
.item-custom-card-media:focus-within .item-custom-card-preview {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.item-custom-card-type {
|
||||
margin: 0 0 6px;
|
||||
font-size: 0.74em;
|
||||
margin: 0;
|
||||
font-size: 0.65em;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.14em;
|
||||
letter-spacing: 0.115em;
|
||||
line-height: 1.08;
|
||||
color: rgba(162, 155, 120, 0.95);
|
||||
}
|
||||
|
||||
.item-custom-card-name {
|
||||
margin: 0;
|
||||
font-size: 1.25em;
|
||||
line-height: 1.2;
|
||||
font-size: 0.97em;
|
||||
line-height: 1.08;
|
||||
color: #ffffff;
|
||||
word-break: normal;
|
||||
overflow-wrap: normal;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
.item-custom-card-meta {
|
||||
margin: 6px 0 0;
|
||||
font-size: 0.82em;
|
||||
margin: 0;
|
||||
font-size: 0.73em;
|
||||
line-height: 1.08;
|
||||
color: rgba(255, 255, 255, 0.68);
|
||||
}
|
||||
|
||||
@ -658,49 +749,89 @@ if ($has_member_access) {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 8px 12px;
|
||||
padding: 3px 9px;
|
||||
border-radius: 999px;
|
||||
background: rgba(162, 155, 120, 0.12);
|
||||
border: 1px solid rgba(162, 155, 120, 0.22);
|
||||
color: #f6f1dc;
|
||||
font-size: 0.76em;
|
||||
font-size: 0.6em;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.08em;
|
||||
letter-spacing: 0.075em;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.item-custom-card-table-wrap {
|
||||
overflow-x: auto;
|
||||
.item-custom-stats-list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 5px 6px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.item-custom-card-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
min-width: 520px;
|
||||
.item-custom-stat-chip {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
flex-wrap: nowrap;
|
||||
gap: 10px;
|
||||
padding: 6px 18px 7px !important;
|
||||
padding-left: 18px !important;
|
||||
padding-right: 18px !important;
|
||||
border-radius: 11px;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
min-height: 30px;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
|
||||
}
|
||||
|
||||
.item-custom-card-table th,
|
||||
.item-custom-card-table td {
|
||||
padding: 10px 12px;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
|
||||
text-align: left;
|
||||
font-size: 0.88em;
|
||||
}
|
||||
|
||||
.item-custom-card-table th {
|
||||
color: rgba(162, 155, 120, 0.95);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
.item-custom-stat-name {
|
||||
font-size: 0.72em;
|
||||
color: rgba(255, 255, 255, 0.76);
|
||||
white-space: nowrap;
|
||||
line-height: 1.05;
|
||||
}
|
||||
|
||||
.item-custom-card-table tbody tr:last-child td {
|
||||
border-bottom: none;
|
||||
.item-custom-stat-value {
|
||||
font-size: 0.79em;
|
||||
font-weight: 700;
|
||||
color: #ffffff;
|
||||
word-break: keep-all;
|
||||
white-space: nowrap;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
.item-custom-stat-chip.sign-plus {
|
||||
border-color: rgba(127, 255, 185, 0.24);
|
||||
background: rgba(0, 255, 136, 0.1);
|
||||
}
|
||||
|
||||
.item-custom-stat-chip.sign-plus .item-custom-stat-value {
|
||||
color: #7fffb9;
|
||||
}
|
||||
|
||||
.item-custom-stat-chip.sign-minus {
|
||||
border-color: rgba(255, 120, 120, 0.22);
|
||||
background: rgba(255, 77, 77, 0.1);
|
||||
}
|
||||
|
||||
.item-custom-stat-chip.sign-minus .item-custom-stat-value {
|
||||
color: #ffb0b0;
|
||||
}
|
||||
|
||||
.item-custom-stat-chip.sign-neutral {
|
||||
background: rgba(255, 255, 255, 0.045);
|
||||
}
|
||||
|
||||
.item-custom-stat-chip.sign-neutral .item-custom-stat-value {
|
||||
color: #f1f1f1;
|
||||
}
|
||||
|
||||
.item-custom-card-empty {
|
||||
margin: 0;
|
||||
padding: 14px;
|
||||
padding: 12px 14px;
|
||||
border-radius: 12px;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
@ -708,34 +839,6 @@ if ($has_member_access) {
|
||||
font-size: 0.88em;
|
||||
}
|
||||
|
||||
.item-custom-stat-sign {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 40px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 999px;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.item-custom-stat-sign.sign-plus {
|
||||
color: #7fffb9;
|
||||
border-color: rgba(127, 255, 185, 0.25);
|
||||
background: rgba(0, 255, 136, 0.09);
|
||||
}
|
||||
|
||||
.item-custom-stat-sign.sign-minus {
|
||||
color: #ffb0b0;
|
||||
border-color: rgba(255, 120, 120, 0.25);
|
||||
background: rgba(255, 77, 77, 0.08);
|
||||
}
|
||||
|
||||
.item-custom-stat-sign.sign-neutral {
|
||||
color: #f1f1f1;
|
||||
}
|
||||
|
||||
.item-custom-card.is-hidden-by-search {
|
||||
display: none;
|
||||
}
|
||||
@ -920,6 +1023,7 @@ if ($has_member_access) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 1100px) {
|
||||
.modal-scan-reference,
|
||||
.modal-ship-presets,
|
||||
@ -965,14 +1069,19 @@ if ($has_member_access) {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.item-custom-grid {
|
||||
grid-template-columns: 1fr;
|
||||
.item-custom-card {
|
||||
grid-template-columns: 52px minmax(280px, 1.9fr) minmax(220px, 1.3fr);
|
||||
gap: 10px;
|
||||
padding: 7px 10px;
|
||||
}
|
||||
|
||||
.item-custom-card-preview {
|
||||
left: 62px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 720px) {
|
||||
.ship-presets-grid,
|
||||
.item-custom-grid {
|
||||
.ship-presets-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
@ -980,14 +1089,46 @@ if ($has_member_access) {
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.item-custom-search-wrap,
|
||||
.item-custom-card-identity {
|
||||
.item-custom-search-wrap {
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
.item-custom-card-table {
|
||||
min-width: 0;
|
||||
.item-custom-card {
|
||||
grid-template-columns: 52px minmax(0, 1fr);
|
||||
padding: 8px;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.item-custom-card-media {
|
||||
width: 48px !important;
|
||||
height: 48px !important;
|
||||
min-width: 48px;
|
||||
min-height: 48px;
|
||||
}
|
||||
|
||||
.item-custom-card-stats {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
.item-custom-card-stats-header {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.item-custom-card-preview {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.item-custom-stat-chip {
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
padding: 6px 14px !important;
|
||||
padding-left: 14px !important;
|
||||
padding-right: 14px !important;
|
||||
}
|
||||
|
||||
.item-custom-stat-name {
|
||||
white-space: normal;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -1143,40 +1284,45 @@ if ($has_member_access) {
|
||||
<?php foreach ($item_custom_public_rows as $item_custom_public_row): ?>
|
||||
<?php $item_custom_stat_count = count($item_custom_public_row['stats']); ?>
|
||||
<article class="item-custom-card" data-item-search="<?php echo htmlspecialchars($item_custom_public_row['search'], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<div class="item-custom-card-header">
|
||||
<div class="item-custom-card-identity">
|
||||
<img src="https://cstone.space/uifimages/<?php echo htmlspecialchars($item_custom_public_row['uuid'], ENT_QUOTES, 'UTF-8'); ?>.png" class="item-custom-card-thumb" alt="">
|
||||
<div>
|
||||
<p class="item-custom-card-type"><?php echo htmlspecialchars(trim(($item_custom_public_row['type'] !== '' ? $item_custom_public_row['type'] : 'Type inconnu') . ($item_custom_public_row['subtype'] !== '' ? ' / ' . $item_custom_public_row['subtype'] : '')), ENT_QUOTES, 'UTF-8'); ?></p>
|
||||
<h4 class="item-custom-card-name"><?php echo htmlspecialchars($item_custom_public_row['name'], ENT_QUOTES, 'UTF-8'); ?></h4>
|
||||
<p class="item-custom-card-meta">Créé par <?php echo htmlspecialchars($item_custom_public_row['creator'], ENT_QUOTES, 'UTF-8'); ?></p>
|
||||
</div>
|
||||
<div class="item-custom-card-media">
|
||||
<img src="https://cstone.space/uifimages/<?php echo htmlspecialchars($item_custom_public_row['uuid'], ENT_QUOTES, 'UTF-8'); ?>.png" class="item-custom-card-thumb" alt="Aperçu de <?php echo htmlspecialchars($item_custom_public_row['name'], ENT_QUOTES, 'UTF-8'); ?>" loading="lazy" onerror="this.closest('.item-custom-card-media').classList.add('is-image-missing'); this.remove();">
|
||||
<div class="item-custom-card-preview" aria-hidden="true">
|
||||
<img src="https://cstone.space/uifimages/<?php echo htmlspecialchars($item_custom_public_row['uuid'], ENT_QUOTES, 'UTF-8'); ?>.png" alt="" onerror="this.closest('.item-custom-card-media').classList.add('is-image-missing'); this.closest('.item-custom-card-preview').remove();">
|
||||
</div>
|
||||
<span class="item-custom-card-count"><?php echo $item_custom_stat_count; ?> stat<?php echo $item_custom_stat_count > 1 ? 's' : ''; ?></span>
|
||||
</div>
|
||||
|
||||
<?php if ($item_custom_stat_count === 0): ?>
|
||||
<p class="item-custom-card-empty">Aucune statistique personnalisée n'a encore été enregistrée pour cet objet.</p>
|
||||
<?php else: ?>
|
||||
<div class="item-custom-card-table-wrap">
|
||||
<table class="item-custom-card-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Stat</th>
|
||||
<th>Valeur</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($item_custom_public_row['stats'] as $item_custom_stat): ?>
|
||||
<tr>
|
||||
<td><?php echo htmlspecialchars($item_custom_stat['name'], ENT_QUOTES, 'UTF-8'); ?></td>
|
||||
<td><?php echo htmlspecialchars($item_custom_stat['preview'], ENT_QUOTES, 'UTF-8'); ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="item-custom-card-main">
|
||||
<p class="item-custom-card-type"><?php echo htmlspecialchars(trim(($item_custom_public_row['type'] !== '' ? $item_custom_public_row['type'] : 'Type inconnu') . ($item_custom_public_row['subtype'] !== '' ? ' / ' . $item_custom_public_row['subtype'] : '')), ENT_QUOTES, 'UTF-8'); ?></p>
|
||||
<h4 class="item-custom-card-name"><?php echo htmlspecialchars($item_custom_public_row['name'], ENT_QUOTES, 'UTF-8'); ?></h4>
|
||||
<p class="item-custom-card-meta">Créé par <?php echo htmlspecialchars($item_custom_public_row['creator'], ENT_QUOTES, 'UTF-8'); ?></p>
|
||||
</div>
|
||||
<div class="item-custom-card-stats">
|
||||
<div class="item-custom-card-stats-header">
|
||||
<span class="item-custom-card-count"><?php echo $item_custom_stat_count; ?> stat<?php echo $item_custom_stat_count > 1 ? 's' : ''; ?></span>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if ($item_custom_stat_count === 0): ?>
|
||||
<p class="item-custom-card-empty">Aucune statistique personnalisée n'a encore été enregistrée pour cet objet.</p>
|
||||
<?php else: ?>
|
||||
<ul class="item-custom-stats-list">
|
||||
<?php foreach ($item_custom_public_row['stats'] as $item_custom_stat): ?>
|
||||
<?php
|
||||
$item_custom_stat_preview = trim((string) ($item_custom_stat['preview'] ?? ''));
|
||||
$item_custom_stat_sign_class = 'sign-neutral';
|
||||
if ($item_custom_stat_preview !== '') {
|
||||
if (strpos($item_custom_stat_preview, '+') === 0) {
|
||||
$item_custom_stat_sign_class = 'sign-plus';
|
||||
} elseif (strpos($item_custom_stat_preview, '-') === 0) {
|
||||
$item_custom_stat_sign_class = 'sign-minus';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<li class="item-custom-stat-chip <?php echo $item_custom_stat_sign_class; ?>">
|
||||
<span class="item-custom-stat-name"><?php echo htmlspecialchars($item_custom_stat['name'], ENT_QUOTES, 'UTF-8'); ?></span>
|
||||
<span class="item-custom-stat-value"><?php echo htmlspecialchars($item_custom_stat['preview'], ENT_QUOTES, 'UTF-8'); ?></span>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user