mcServerWebsite/assets/styles/globals/form.css
Ploush 303fc7bcb5 ajout trop de chose
rappel pour moi : a ne plus reproduire
2026-04-09 14:58:12 +02:00

512 lines
14 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ── FORM WRAPPER ──────────────────────────────────────────────── */
.form-wrapper {
display: flex;
flex-direction: column;
gap: 2rem;
padding: 2rem;
width: 100%;
}
.form-wrapper__row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
}
.form-wrapper__col {
display: flex;
flex-direction: column;
gap: 1.25rem;
}
.form-wrapper__row-line {
border-bottom: 1px solid var(--border-light);
padding-bottom: 0.75rem;
margin-bottom: 0.75rem;
}
[data-theme="dark"] .form-wrapper__row-line {
border-color: var(--border-dark);
}
/* ── GROUPES ───────────────────────────────────────────────────── */
.form-group {
display: flex;
flex-direction: column;
gap: 0.4rem;
}
.form-label {
font-size: 0.8rem;
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
color: var(--muted-light);
transition: color var(--duration-slow);
}
[data-theme="dark"] .form-label {
color: var(--muted-dark);
}
/* ── INPUTS ────────────────────────────────────────────────────── */
.form-input {
width: 100%;
padding: 0.6rem 0.9rem;
border-radius: 10px;
border: 1px solid var(--border-light);
background-color: var(--nav-bg-light);
color: var(--text-light);
font-family: 'DM Sans', sans-serif;
font-size: 0.9rem;
outline: none;
transition: border-color var(--duration-normal), box-shadow var(--duration-normal), background var(--duration-slow), color var(--duration-slow);
appearance: none;
}
[data-theme="dark"] .form-input {
background-color: var(--nav-bg-dark);
border-color: var(--border-dark);
color: var(--text-dark);
}
.form-input:focus {
border-color: var(--violet);
box-shadow: 0 0 0 3px var(--violet-glow);
}
.form-input:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.form-select {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%237C3AED' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 0.75rem center;
background-size: 0.75rem;
padding-right: 2.5rem;
}
[data-theme="dark"] .form-select {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23A78BFA' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
}
/* ── FILE INPUT ────────────────────────────────────────────────── */
.form-file {
width: 100%;
padding: 0.6rem 0.9rem;
border-radius: 10px;
border: 1px dashed var(--border-light);
background-color: var(--nav-bg-light);
color: var(--text-light);
font-family: 'DM Sans', sans-serif;
font-size: 0.9rem;
cursor: pointer;
outline: none;
transition: border-color var(--duration-normal),
box-shadow var(--duration-normal),
background var(--duration-slow),
color var(--duration-slow);
}
[data-theme="dark"] .form-file {
background-color: var(--nav-bg-dark);
border-color: var(--border-dark);
color: var(--text-dark);
}
.form-file:hover {
border-color: var(--violet-light);
background-color: var(--pill-bg-light);
}
[data-theme="dark"] .form-file:hover {
background-color: var(--pill-bg-dark);
border-color: var(--violet-light);
}
.form-file:focus {
border-color: var(--violet);
border-style: solid;
box-shadow: 0 0 0 3px var(--violet-glow);
}
.form-file:disabled {
opacity: 0.5;
cursor: not-allowed;
}
/* Bouton natif "Choisir un fichier" */
.form-file::file-selector-button {
padding: 0.3rem 0.85rem;
border-radius: 7px;
border: none;
background: var(--pill-bg-light);
color: var(--violet);
font-family: 'DM Sans', sans-serif;
font-size: 0.85rem;
font-weight: 600;
cursor: pointer;
margin-right: 0.75rem;
transition: background var(--duration-fast), color var(--duration-fast);
}
[data-theme="dark"] .form-file::file-selector-button {
background: var(--pill-bg-dark);
color: var(--violet-light);
}
.form-file:hover::file-selector-button,
.form-file:focus::file-selector-button {
background: var(--violet);
color: white;
}
/* ── HELP TEXT ─────────────────────────────────────────────────── */
.form-helper {
font-size: 0.76rem;
color: var(--muted-light);
display: flex;
align-items: center;
gap: 0.35rem;
margin-top: 0.3rem;
transition: color var(--duration-slow);
}
[data-theme="dark"] .form-helper {
color: var(--muted-dark);
}
/* Petite pastille d'info devant le texte */
.form-helper::before {
content: '';
font-size: 0.7rem;
color: var(--violet-light);
flex-shrink: 0;
}
/* ── FOOTER ────────────────────────────────────────────────────── */
.form-wrapper__footer {
display: flex;
justify-content: flex-end;
gap: 0.75rem;
}
.form-btn {
padding: 0.6rem 1.75rem;
border-radius: 10px;
border: none;
background: var(--violet);
color: white;
font-family: 'DM Sans', sans-serif;
font-size: 0.9rem;
font-weight: 600;
cursor: pointer;
transition: opacity var(--duration-fast), box-shadow var(--duration-fast);
}
.form-btn:hover {
opacity: 0.9;
box-shadow: 0 4px 20px var(--violet-glow);
}
.form-btn--cancel {
background: transparent;
color: var(--muted-light);
border: 1px solid var(--border-light);
}
[data-theme="dark"] .form-btn--cancel {
color: var(--muted-dark);
border-color: var(--border-dark);
}
.form-btn--cancel:hover {
background: var(--pill-bg-light);
box-shadow: none;
opacity: 1;
text-decoration: none;
}
[data-theme="dark"] .form-btn--cancel:hover {
background: var(--pill-bg-dark);
}
/* ── ERREURS ───────────────────────────────────────────────────── */
.form-group ul {
list-style: none;
margin: 0;
padding: 0;
}
.form-group ul li {
font-size: 0.78rem;
color: #ef4444;
margin-top: 0.2rem;
}
/* ── CHECKBOX ─────────────────────────────────────────────────────── */
.form-checkbox-group {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.form-checkbox-group-item {
display: flex;
align-items: center;
gap: 0.6rem;
cursor: pointer;
font-size: 0.9rem;
color: var(--text-light);
transition: color var(--duration-slow);
}
[data-theme="dark"] .form-checkbox-group-item {
color: var(--text-dark);
}
.form-checkbox-group-item input[type="checkbox"] {
appearance: none;
width: 1.1rem;
height: 1.1rem;
border: 1.5px solid var(--border-light);
border-radius: 4px;
background: var(--nav-bg-light);
cursor: pointer;
transition: background var(--duration-normal), border-color var(--duration-normal);
flex-shrink: 0;
position: relative;
}
[data-theme="dark"] .form-checkbox-group-item input[type="checkbox"] {
border-color: var(--border-dark);
background: var(--nav-bg-dark);
}
.form-checkbox-group-item input[type="checkbox"]:checked {
background: var(--violet);
border-color: var(--violet);
}
.form-checkbox-group-item input[type="checkbox"]:checked::after {
content: '';
position: absolute;
left: 50%;
top: 50%;
width: 4px;
height: 8px;
border: 2px solid white;
border-top: none;
border-left: none;
transform: translate(-50%, -60%) rotate(45deg);
}
/* ── TOGGLE THEME ──────────────────────────────────────────────── */
.form-toggle {
display: flex;
align-items: center;
gap: 0.75rem;
cursor: pointer;
}
.form-toggle input[type="checkbox"] {
display: none;
}
.form-toggle__track {
width: 2.4rem;
height: 1.3rem;
border-radius: 999px;
background: var(--border-light);
position: relative;
flex-shrink: 0;
transition: background var(--duration-normal);
}
.form-toggle__track::after {
content: '';
position: absolute;
top: 3px;
left: 3px;
width: calc(1.3rem - 6px);
height: calc(1.3rem - 6px);
border-radius: 50%;
background: white;
transition: transform var(--duration-normal);
}
.form-toggle input:checked ~ .form-toggle__track {
background: var(--violet);
}
.form-toggle input:checked ~ .form-toggle__track::after {
transform: translateX(1.1rem);
}
.form-toggle__label {
font-size: 0.9rem;
color: var(--text-light);
transition: color var(--duration-slow);
}
.form-toggle__label.disabled {
color: var(--muted-light);
}
[data-theme="dark"] .form-toggle__label {
color: var(--text-dark);
}
[data-theme="dark"] .form-toggle__label.disabled {
color: var(--muted-dark);
}
/* ── TOM SELECT — FULL CUSTOM (sans CDN) ──────────────────────── */
.form-tom-select {
position: relative;
width: 100%;
}
.form-tom-select .ts-control {
display: flex !important;
flex-wrap: wrap !important;
align-items: center !important;
gap: 0.35rem !important;
border-radius: 10px !important;
border: 1px solid var(--border-light) !important;
background: var(--nav-bg-light) !important;
font-family: 'DM Sans', sans-serif !important;
font-size: 0.9rem !important;
padding: 0.4rem 0.6rem !important;
min-height: 2.5rem !important;
cursor: text !important;
box-shadow: none !important;
}
[data-theme="dark"] .form-tom-select .ts-control {
background: var(--nav-bg-dark) !important;
border-color: var(--border-dark) !important;
color: var(--text-dark) !important;
}
.form-tom-select.focus .ts-control {
border-color: var(--violet) !important;
box-shadow: 0 0 0 3px var(--violet-glow) !important;
outline: none !important;
}
/* ── Input de recherche ── */
.form-tom-select .ts-control input {
flex: 1 !important;
min-width: 120px !important;
border: none !important;
outline: none !important;
box-shadow: none !important;
background: transparent !important;
font-family: 'DM Sans', sans-serif !important;
font-size: 0.9rem !important;
color: var(--text-light) !important;
padding: 0 !important;
margin: 0 !important;
width: auto !important;
}
[data-theme="dark"] .form-tom-select .ts-control input {
color: var(--text-dark) !important;
}
.form-tom-select .ts-control input::placeholder {
color: var(--muted-light) !important;
opacity: 1 !important;
}
[data-theme="dark"] .form-tom-select .ts-control input::placeholder {
color: var(--muted-dark) !important;
}
/* ── Tags sélectionnés ── */
.form-tom-select .ts-control .item {
display: inline-flex !important;
align-items: center !important;
background: var(--violet) !important;
color: white !important;
border-radius: 6px !important;
padding: 0.2rem 0.5rem !important;
font-size: 0.82rem !important;
font-weight: 500 !important;
line-height: 1.4 !important;
white-space: nowrap !important;
margin: 2px !important;
}
.form-tom-select .ts-control .item .remove {
display: inline-flex !important;
align-items: center !important;
color: rgba(255, 255, 255, 0.7) !important;
border-left: 1px solid rgba(255, 255, 255, 0.3) !important;
margin-left: 0.4rem !important;
padding-left: 0.4rem !important;
font-size: 1rem !important;
line-height: 1 !important;
cursor: pointer !important;
text-decoration: none !important;
background: none !important;
}
.form-tom-select .ts-control .item .remove:hover {
color: white !important;
background: none !important;
}
/* ── Dropdown ── */
.form-tom-select .ts-dropdown {
position: absolute !important;
z-index: 1050 !important;
width: 100% !important;
border-radius: 10px !important;
border: 1px solid var(--border-light) !important;
background: var(--nav-bg-light) !important;
font-family: 'DM Sans', sans-serif !important;
font-size: 0.9rem !important;
margin-top: 4px !important;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12) !important;
overflow: hidden !important;
}
[data-theme="dark"] .form-tom-select .ts-dropdown {
background: var(--nav-bg-dark) !important;
border-color: var(--border-dark) !important;
color: var(--text-dark) !important;
}
.form-tom-select .ts-dropdown .ts-dropdown-content {
padding: 0.25rem !important;
max-height: 200px !important;
overflow-y: auto !important;
}
.form-tom-select .ts-dropdown .option {
padding: 0.5rem 0.75rem !important;
border-radius: 7px !important;
cursor: pointer !important;
color: var(--text-light) !important;
background: transparent !important;
transition: background var(--duration-fast), color var(--duration-fast) !important;
}
[data-theme="dark"] .form-tom-select .ts-dropdown .option {
color: var(--text-dark) !important;
}
.form-tom-select .ts-dropdown .option:hover,
.form-tom-select .ts-dropdown .option.active {
background: var(--violet) !important;
color: white !important;
}
.form-tom-select .ts-dropdown .option.selected {
opacity: 0.4 !important;
pointer-events: none !important;
}