Main logic

This commit is contained in:
Микаэл Оганесян
2026-04-08 02:10:17 +03:00
parent 55742c1bbc
commit 68c3029835
58 changed files with 4807 additions and 418 deletions

View File

@@ -0,0 +1,110 @@
/*
* Единый вид полей ввода SparkGuardian.
* Taiga: добавьте class="sg-tui-textfield" на <tui-textfield>.
* Нативные input/textarea/select: class="sg-native-input".
*/
/* --- tui-textfield (Taiga Input) --- */
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield'] {
--tui-focus: var(--sg-color-textfield-focus-border);
--t-shadow: none;
box-shadow: none;
background-color: var(--sg-color-textfield-bg);
outline: 1px solid transparent;
outline-offset: -1px;
border-width: 0;
border-radius: var(--sg-textfield-radius, var(--tui-radius-l));
filter: none;
transition:
background-color 0.15s ease,
outline-color 0.15s ease;
}
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield']::before,
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield']::after {
box-shadow: none;
}
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield']:hover:not(:focus-within):not(
[data-state='disabled']
):not(._disabled),
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield'][data-state='hover']:not(:focus-within) {
--t-shadow: none;
box-shadow: none;
background-color: var(--sg-color-textfield-hover-bg);
outline: 1px solid transparent;
outline-offset: -1px;
}
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield']:focus-within,
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield'][data-focus='true'],
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield']:focus-visible:not([data-focus='false']) {
--t-shadow: none;
box-shadow: none;
background-color: var(--sg-color-textfield-focus-bg);
outline: 1px solid var(--sg-color-textfield-focus-border);
outline-offset: -1px;
}
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield'] input:not(.t-filler) {
background: transparent;
outline: none;
box-shadow: none;
}
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield']:focus-within input:not(.t-filler),
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield'][data-focus='true'] input:not(.t-filler) {
outline: none;
box-shadow: none;
}
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield']:focus-within [tuiLabel],
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield'][data-focus='true'] [tuiLabel] {
color: var(--sg-color-textfield-focus-label) !important; /* Taiga: color … !important на [tuiLabel] */
}
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield']:focus-within input:not(.t-filler)::placeholder,
tui-textfield.sg-tui-textfield[tuiAppearance][data-appearance='textfield'][data-focus='true']
input:not(.t-filler)::placeholder {
color: var(--sg-color-textfield-focus-label);
}
/* --- нативные поля (datetime-local, text, …) --- */
.sg-native-input {
box-sizing: border-box;
min-block-size: var(--sg-native-input-min-height, 2rem);
padding: var(--sg-native-input-padding, 0.35rem 0.5rem);
border: 1px solid transparent;
outline: 1px solid transparent;
outline-offset: -1px;
border-radius: var(--sg-textfield-radius, var(--tui-radius-l));
background: var(--sg-color-textfield-bg);
color: var(--sg-color-text);
font: inherit;
box-shadow: none;
transition:
background-color 0.15s ease,
outline-color 0.15s ease;
}
.sg-native-input:hover:not(:disabled) {
background: var(--sg-color-textfield-hover-bg);
outline: 1px solid transparent;
outline-offset: -1px;
}
.sg-native-input:focus {
outline: 1px solid var(--sg-color-textfield-focus-border);
outline-offset: -1px;
background: var(--sg-color-textfield-focus-bg);
border-color: transparent;
}
.sg-native-input:focus-visible {
outline: 1px solid var(--sg-color-textfield-focus-border);
outline-offset: -1px;
}
.sg-native-input:disabled {
opacity: var(--tui-disabled-opacity);
}