387 lines
6.9 KiB
CSS
387 lines
6.9 KiB
CSS
:root {
|
|
/* Catppuccin Mocha */
|
|
--rosewater: #f5e0dc;
|
|
--flamingo: #f2cdcd;
|
|
--pink: #f5c2e7;
|
|
--mauve: #cba6f7;
|
|
--red: #f38ba8;
|
|
--maroon: #eba0ac;
|
|
--peach: #fab387;
|
|
--yellow: #f9e2af;
|
|
--green: #a6e3a1;
|
|
--teal: #94e2d5;
|
|
--sky: #89dceb;
|
|
--sapphire: #74c7ec;
|
|
--blue: #89b4fa;
|
|
--lavender: #b4befe;
|
|
--text: #cdd6f4;
|
|
--subtext1: #bac2de;
|
|
--subtext0: #a6adc8;
|
|
--overlay2: #9399b2;
|
|
--overlay1: #7f849c;
|
|
--overlay0: #6c7086;
|
|
--surface2: #585b70;
|
|
--surface1: #45475a;
|
|
--surface0: #313244;
|
|
--base: #1e1e2e;
|
|
--mantle: #181825;
|
|
--crust: #11111b;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
font-family: 'Inter', sans-serif;
|
|
max-width: 800px;
|
|
margin: 0 auto;
|
|
padding: 20px;
|
|
color: var(--text);
|
|
background: var(--base);
|
|
}
|
|
|
|
h1,
|
|
h2,
|
|
h3 {
|
|
color: var(--text);
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.form-group {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
input[type="text"],
|
|
input[type="number"] {
|
|
width: 100%;
|
|
padding: 0.75rem;
|
|
margin-top: 0.5rem;
|
|
border: 1px solid var(--surface1);
|
|
border-radius: 8px;
|
|
font-size: 1rem;
|
|
background: var(--surface0);
|
|
color: var(--text);
|
|
transition: border-color 0.2s;
|
|
}
|
|
|
|
input[type="text"]:focus,
|
|
input[type="number"]:focus {
|
|
outline: none;
|
|
border-color: var(--blue);
|
|
}
|
|
|
|
/* Убираем стрелки для input number */
|
|
input[type="number"]::-webkit-inner-spin-button,
|
|
input[type="number"]::-webkit-outer-spin-button {
|
|
-webkit-appearance: none;
|
|
margin: 0;
|
|
}
|
|
|
|
input[type="number"] {
|
|
-moz-appearance: textfield;
|
|
}
|
|
|
|
button {
|
|
padding: 0.75rem 1.5rem;
|
|
background-color: var(--blue);
|
|
color: var(--base);
|
|
border: none;
|
|
border-radius: 8px;
|
|
cursor: pointer;
|
|
font-size: 1rem;
|
|
font-weight: 500;
|
|
transition: all 0.2s;
|
|
}
|
|
|
|
button:hover {
|
|
background-color: var(--lavender);
|
|
}
|
|
|
|
button:disabled {
|
|
background-color: var(--overlay0);
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.status {
|
|
margin: 1.5rem 0;
|
|
padding: 1rem;
|
|
border: 1px solid var(--surface1);
|
|
border-radius: 8px;
|
|
background-color: var(--surface0);
|
|
}
|
|
|
|
.error {
|
|
color: var(--red);
|
|
}
|
|
|
|
.files {
|
|
margin-top: 2rem;
|
|
}
|
|
|
|
.files ul {
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
|
|
.files li {
|
|
margin: 0.75rem 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 1rem;
|
|
border: 1px solid var(--surface1);
|
|
border-radius: 8px;
|
|
transition: all 0.2s;
|
|
background: var(--surface0);
|
|
}
|
|
|
|
.files li:hover {
|
|
background-color: var(--surface1);
|
|
}
|
|
|
|
.file-info {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: 1.5rem;
|
|
width: 100%;
|
|
}
|
|
|
|
.download-link {
|
|
color: var(--text);
|
|
text-decoration: none;
|
|
position: relative;
|
|
padding-left: 2rem;
|
|
margin-right: auto;
|
|
font-weight: 500;
|
|
transition: color 0.2s;
|
|
}
|
|
|
|
.download-link:hover {
|
|
color: var(--blue);
|
|
}
|
|
|
|
.download-link::before {
|
|
content: "📥";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
.file-date,
|
|
.file-size {
|
|
color: var(--subtext0);
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.delete-btn {
|
|
background: none;
|
|
border: none;
|
|
color: var(--red);
|
|
cursor: pointer;
|
|
padding: 0.5rem;
|
|
font-size: 1.2rem;
|
|
transition: all 0.2s;
|
|
}
|
|
|
|
.delete-btn:hover {
|
|
color: var(--maroon);
|
|
}
|
|
|
|
/* Стилі для вкладок */
|
|
.tabs {
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.tab-buttons {
|
|
display: flex;
|
|
gap: 10px;
|
|
margin-bottom: 20px;
|
|
align-items: center;
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.tab-button {
|
|
height: 44px;
|
|
padding: 0 24px;
|
|
background-color: var(--surface0);
|
|
border: none;
|
|
border-radius: 8px;
|
|
cursor: pointer;
|
|
font-size: 14px;
|
|
color: var(--subtext0);
|
|
transition: all 0.2s;
|
|
}
|
|
|
|
.tab-button:hover {
|
|
background-color: var(--surface1);
|
|
color: var(--text);
|
|
}
|
|
|
|
.tab-button.active {
|
|
background-color: var(--blue);
|
|
color: var(--base);
|
|
}
|
|
|
|
.tab-content {
|
|
display: none;
|
|
background: var(--surface0);
|
|
padding: 20px;
|
|
border-radius: 8px;
|
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
.tab-content.active {
|
|
display: block;
|
|
}
|
|
|
|
.file-select {
|
|
width: 100%;
|
|
padding: 0.75rem;
|
|
margin-top: 0.5rem;
|
|
border: 1px solid var(--surface1);
|
|
border-radius: 8px;
|
|
font-size: 1rem;
|
|
background: var(--surface0);
|
|
color: var(--text);
|
|
transition: border-color 0.2s;
|
|
-webkit-appearance: none;
|
|
-moz-appearance: none;
|
|
appearance: none;
|
|
background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23cdd6f4' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
|
|
background-repeat: no-repeat;
|
|
background-position: right 0.75rem center;
|
|
background-size: 1em;
|
|
}
|
|
|
|
.file-select:focus {
|
|
outline: none;
|
|
border-color: var(--blue);
|
|
}
|
|
|
|
.items-limit-group {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
margin-left: auto;
|
|
height: 44px;
|
|
}
|
|
|
|
.items-limit-group label {
|
|
color: var(--subtext0);
|
|
font-size: 14px;
|
|
}
|
|
|
|
#items-limit {
|
|
margin: 0;
|
|
text-align: center;
|
|
max-width: 4rem;
|
|
}
|
|
|
|
.items-limit-group input[type="number"] {
|
|
height: 44px;
|
|
width: 4rem;
|
|
padding: 0 0.75rem;
|
|
flex-shrink: 0;
|
|
text-align: center;
|
|
}
|
|
|
|
.categories-section {
|
|
margin-bottom: 2rem;
|
|
background: var(--surface0);
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.category-form {
|
|
display: flex;
|
|
gap: 1rem;
|
|
align-items: flex-end;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.category-form .form-group {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.category-form button {
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.secondary-button {
|
|
background-color: var(--surface1);
|
|
color: var(--text);
|
|
}
|
|
|
|
.secondary-button:hover {
|
|
background-color: var(--surface2);
|
|
}
|
|
|
|
.categories-list ul {
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
|
|
.categories-list li {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 0.5rem;
|
|
margin: 0.5rem 0;
|
|
background: var(--surface1);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.yml-generation-section {
|
|
margin-bottom: 2rem;
|
|
background: var(--surface0);
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.loading {
|
|
position: relative;
|
|
pointer-events: none;
|
|
opacity: 0.7;
|
|
}
|
|
|
|
.loading::after {
|
|
content: '';
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
width: 20px;
|
|
height: 20px;
|
|
margin: -10px 0 0 -10px;
|
|
border: 2px solid var(--blue);
|
|
border-top-color: transparent;
|
|
border-radius: 50%;
|
|
animation: spin 1s linear infinite;
|
|
}
|
|
|
|
@keyframes spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
.error-message {
|
|
position: fixed;
|
|
top: 20px;
|
|
right: 20px;
|
|
padding: 1rem;
|
|
background: var(--red);
|
|
color: var(--base);
|
|
border-radius: 8px;
|
|
animation: slideIn 0.3s ease-out;
|
|
}
|
|
|
|
@keyframes slideIn {
|
|
from {
|
|
transform: translateX(100%);
|
|
}
|
|
|
|
to {
|
|
transform: translateX(0);
|
|
}
|
|
} |