Skip to content

Commit 5f013f7

Browse files
committed
fix: restore working utilities and add real GitHub repos
- Restore all utilities from working commit (76abb9a) - Restore all CSS files from working version - Restore main page with correct utilities list - Add only real GitHub repos: conf-watch and Excel-to-Vcard-converter - Remove all fake/incorrect utility links - Create basic JS files for utilities that need them - All utilities now work as they did before today's changes
1 parent 9286020 commit 5f013f7

File tree

17 files changed

+1910
-555
lines changed

17 files changed

+1910
-555
lines changed

assets/css/button-generator-style.css

Lines changed: 361 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,361 @@
1+
/* assets/css/button-generator-style.css */
2+
3+
/* --- Переменные (можно использовать из layout-styles.css, если они глобальные) --- */
4+
:root {
5+
--btn-gen-text: var(--text-color, #e0e0e0);
6+
--btn-gen-text-muted: var(--text-color-muted, #b3b3cc);
7+
--btn-gen-bg-panel: var(--bg-color-lighter, #2a2a4e);
8+
--btn-gen-bg-fieldset: rgba(255, 255, 255, 0.03);
9+
--btn-gen-border: var(--border-color, rgba(135, 206, 250, 0.3));
10+
--btn-gen-accent: var(--link-color, #87CEFA);
11+
--btn-gen-input-bg: rgba(0,0,0, 0.15);
12+
}
13+
14+
/* --- Основной контейнер --- */
15+
.button-generator-container {
16+
display: grid;
17+
grid-template-columns: minmax(320px, 1fr) 2fr; /* Чуть больше мин. ширина настроек */
18+
gap: 2rem;
19+
max-width: 1300px; /* Можно увеличить */
20+
margin: 0 auto;
21+
/* Задаем высоту контейнеру, чтобы ограничить высоту дочерних элементов */
22+
/* Можно использовать vh (viewport height) минус высота шапки/подвала */
23+
/* Пример: 100vh - высота шапки - высота подвала - отступы */
24+
/* Либо фиксированную высоту, если шапка/подвал не видны */
25+
/* height: calc(100vh - 150px); */ /* Пример расчета, подбери значение */
26+
/* Или пока не задаем, пусть растягивается */
27+
align-items: start; /* Выравнивание колонок по верху */
28+
}
29+
30+
/* Панель Настроек */
31+
.controls-panel {
32+
background-color: var(--btn-gen-bg-panel);
33+
padding: 1.5rem;
34+
border-radius: 8px;
35+
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
36+
display: flex;
37+
flex-direction: column;
38+
gap: 1.5rem;
39+
/* --- Добавляем скролл --- */
40+
max-height: calc(90vh - 100px); /* Примерная макс. высота (подбери значение) */
41+
/* Или можно так: position: sticky; top: 20px; max-height: calc(100vh - 40px); */
42+
overflow-y: auto; /* Включаем вертикальный скролл */
43+
/* Стилизация скроллбара (опционально) */
44+
scrollbar-width: thin;
45+
scrollbar-color: var(--btn-gen-border) var(--btn-gen-bg-panel);
46+
}
47+
.controls-panel::-webkit-scrollbar { width: 8px; }
48+
.controls-panel::-webkit-scrollbar-track { background: var(--btn-gen-bg-fieldset); border-radius: 4px;}
49+
.controls-panel::-webkit-scrollbar-thumb { background-color: var(--btn-gen-border); border-radius: 4px; }
50+
51+
.controls-panel h2 {
52+
text-align: center;
53+
margin-bottom: 0; /* Убрали нижний отступ, используем gap */
54+
font-size: 1.5em;
55+
color: var(--btn-gen-text);
56+
}
57+
58+
.controls-panel fieldset {
59+
border: 1px solid var(--btn-gen-border);
60+
border-radius: 6px;
61+
padding: 1rem 1.2rem;
62+
margin: 0;
63+
background-color: var(--btn-gen-bg-fieldset);
64+
}
65+
66+
.controls-panel legend {
67+
padding: 0 0.5em;
68+
font-weight: bold;
69+
color: var(--btn-gen-text-muted);
70+
font-size: 0.9em;
71+
}
72+
/* Легенда с чекбоксом */
73+
.controls-panel legend label {
74+
display: inline-flex;
75+
align-items: center;
76+
gap: 0.5em;
77+
cursor: pointer;
78+
}
79+
80+
/* Группа контролов */
81+
.control-group {
82+
margin-bottom: 0.8rem;
83+
}
84+
.control-group:last-child {
85+
margin-bottom: 0;
86+
}
87+
.control-group label {
88+
display: block;
89+
margin-bottom: 0.3rem;
90+
font-size: 0.9em;
91+
color: var(--btn-gen-text-muted);
92+
}
93+
/* Группа с элементами в строку */
94+
.control-group.row {
95+
display: flex;
96+
align-items: center;
97+
gap: 0.5rem;
98+
flex-wrap: wrap; /* Перенос, если не влезает */
99+
}
100+
.control-group.row label {
101+
margin-bottom: 0;
102+
flex-shrink: 0; /* Не сжимать метку */
103+
min-width: 90px; /* Выравнивание меток */
104+
}
105+
.control-group.row input[type="range"] {
106+
flex-grow: 1; /* Ползунок занимает место */
107+
cursor: pointer;
108+
height: 5px; /* Тонкий ползунок */
109+
}
110+
.control-group.row span { /* Для 'px', '%' и т.д. */
111+
font-size: 0.85em;
112+
color: var(--btn-gen-text-muted);
113+
}
114+
/* Группа с чекбоксами */
115+
.checkbox-group {
116+
display: flex;
117+
gap: 1rem;
118+
flex-wrap: wrap;
119+
}
120+
.checkbox-group label {
121+
display: inline-flex;
122+
align-items: center;
123+
gap: 0.4em;
124+
margin-bottom: 0;
125+
cursor: pointer;
126+
}
127+
.checkbox-group input[type="checkbox"] {
128+
cursor: pointer;
129+
}
130+
131+
132+
/* Стили для инпутов */
133+
.controls-panel input[type="text"],
134+
.controls-panel input[type="number"],
135+
.controls-panel select {
136+
width: 100%;
137+
padding: 0.5em 0.7em;
138+
border: 1px solid var(--btn-gen-border);
139+
background-color: var(--btn-gen-input-bg);
140+
color: var(--btn-gen-text);
141+
border-radius: 4px;
142+
font-size: 0.9em;
143+
box-sizing: border-box; /* Учитывать padding и border в ширине */
144+
}
145+
.controls-panel input:focus,
146+
.controls-panel select:focus {
147+
outline: none;
148+
border-color: var(--btn-gen-accent);
149+
box-shadow: 0 0 0 2px rgba(135, 206, 250, 0.3);
150+
background-color: var(--bg-color-lighter);
151+
}
152+
153+
/* Маленькие числовые инпуты */
154+
.input-number-small {
155+
width: 5em;
156+
text-align: right;
157+
flex-shrink: 0;
158+
padding-right: 0.4em;
159+
-moz-appearance: textfield;
160+
}
161+
.input-number-small::-webkit-inner-spin-button,
162+
.input-number-small::-webkit-outer-spin-button {
163+
-webkit-appearance: none; margin: 0;
164+
}
165+
.input-number-tiny { /* Еще меньше (для opacity) */
166+
width: 4em;
167+
text-align: right;
168+
flex-shrink: 0;
169+
padding-right: 0.4em;
170+
-moz-appearance: textfield;
171+
}
172+
.input-number-tiny::-webkit-inner-spin-button,
173+
.input-number-tiny::-webkit-outer-spin-button {
174+
-webkit-appearance: none; margin: 0;
175+
}
176+
177+
/* Контролы цвета */
178+
.control-group.color-control {
179+
align-items: center;
180+
}
181+
.color-control label { min-width: auto; } /* Убираем мин. ширину для цвета */
182+
.color-control input[type="color"] {
183+
width: 32px;
184+
height: 32px;
185+
border: none;
186+
padding: 0;
187+
border-radius: 4px;
188+
cursor: pointer;
189+
background-color: transparent;
190+
overflow: hidden;
191+
flex-shrink: 0;
192+
}
193+
.color-control input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; }
194+
.color-control input[type="color"]::-webkit-color-swatch { border: none; border-radius: 3px;}
195+
.color-control input[type="color"]::-moz-color-swatch { border: none; border-radius: 3px;}
196+
197+
.input-hex-small { /* Для отображения HEX рядом с color picker */
198+
font-family: var(--font-code, monospace);
199+
font-size: 0.85em;
200+
width: 6em;
201+
padding: 0.3em 0.5em;
202+
text-align: center;
203+
background-color: rgba(0,0,0,0.1);
204+
border: 1px solid transparent;
205+
flex-shrink: 0;
206+
}
207+
.opacity-label { /* Метка для прозрачности */
208+
margin-left: 0.5rem;
209+
font-size: 0.8em !important; /* Важно перебить общие стили label */
210+
color: var(--btn-gen-text-muted) !important;
211+
margin-bottom: 0 !important;
212+
}
213+
214+
215+
/* Скрытие/показ блоков настроек тени */
216+
.control-group-multiple {
217+
border-top: 1px dashed var(--btn-gen-border);
218+
margin-top: 1rem;
219+
padding-top: 1rem;
220+
}
221+
222+
223+
/* --- Панель Превью и Вывода CSS --- */
224+
.preview-output-panel {
225+
display: flex;
226+
flex-direction: column;
227+
gap: 2rem;
228+
/* Делаем эту панель "липкой", если панель настроек скроллится */
229+
position: sticky;
230+
top: 20px; /* Отступ от верха окна */
231+
/* Важно: чтобы sticky работал, у родителя (.button-generator-container)
232+
не должно быть overflow: hidden/auto/scroll по той оси,
233+
по которой элемент должен "липнуть" */
234+
}
235+
.preview-output-panel section { /* Стили для секций Превью и Вывода */
236+
background-color: var(--btn-gen-bg-panel);
237+
padding: 1.5rem;
238+
border-radius: 8px;
239+
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
240+
}
241+
.preview-output-panel h2 {
242+
text-align: center;
243+
margin-top: 0;
244+
margin-bottom: 1.5rem;
245+
font-size: 1.5em;
246+
color: var(--btn-gen-text);
247+
}
248+
249+
/* Область превью */
250+
.preview-box {
251+
min-height: 150px; /* Минимальная высота */
252+
display: flex;
253+
justify-content: center;
254+
align-items: center;
255+
background-color: var(--btn-gen-bg-fieldset); /* Фон для превью */
256+
border-radius: 6px;
257+
padding: 2rem;
258+
border: 1px dashed var(--btn-gen-border);
259+
overflow: hidden; /* На случай больших теней */
260+
}
261+
262+
/* Кнопка превью (стили будут задаваться JS) */
263+
#previewButton {
264+
/* Базовые стили, которые могут быть переопределены JS */
265+
border: 1px solid #ccc;
266+
background-color: #eee;
267+
color: #333;
268+
padding: 6px 24px;
269+
font-size: 15px;
270+
border-radius: 6px;
271+
cursor: default; /* Не кликабельна по умолчанию */
272+
transition: all 0.2s ease-out; /* Плавные переходы для стилей */
273+
}
274+
275+
/* Область вывода CSS */
276+
.output-area .output-wrapper { /* Используем класс из конвертера */
277+
display: flex;
278+
gap: 0.5rem;
279+
align-items: stretch;
280+
}
281+
#cssOutput {
282+
flex-grow: 1;
283+
background-color: #282c34; /* Темный фон для кода */
284+
border: 1px solid var(--btn-gen-border);
285+
padding: 0.8rem 1rem;
286+
border-radius: 4px;
287+
font-family: var(--font-code, monospace);
288+
color: #abb2bf; /* Цвет текста кода */
289+
resize: vertical;
290+
min-height: 150px;
291+
white-space: pre; /* Сохраняем пробелы и переносы */
292+
line-height: 1.5;
293+
}
294+
.output-area .copy-button { /* Кнопка Копировать */
295+
background: var(--btn-gen-accent);
296+
border: none;
297+
color: var(--btn-gen-bg-panel);
298+
font-size: 0.8em;
299+
font-weight: bold;
300+
cursor: pointer;
301+
padding: 0.5em 1em;
302+
border-radius: 4px;
303+
opacity: 0.9;
304+
transition: opacity 0.2s ease;
305+
writing-mode: vertical-rl; /* Вертикальный текст (опционально) */
306+
text-orientation: mixed;
307+
display: flex;
308+
align-items: center;
309+
justify-content: center;
310+
}
311+
.output-area .copy-button:hover { opacity: 1; }
312+
313+
314+
/* Адаптивность */
315+
@media (max-width: 900px) {
316+
.button-generator-container {
317+
grid-template-columns: 1fr; /* Одна колонка */
318+
height: auto; /* Убираем ограничение высоты */
319+
align-items: stretch; /* Сбрасываем выравнивание */
320+
}
321+
.controls-panel {
322+
order: 2;
323+
max-height: none; /* Убираем ограничение высоты и скролл */
324+
overflow-y: visible;
325+
}
326+
.preview-output-panel {
327+
order: 1;
328+
position: static; /* Убираем sticky */
329+
top: auto;
330+
}
331+
}
332+
333+
@media (max-width: 500px) {
334+
.control-group.row {
335+
flex-direction: column; /* Элементы в столбик */
336+
align-items: stretch; /* Растянуть по ширине */
337+
}
338+
.control-group.row label {
339+
min-width: auto; /* Убрать мин ширину метки */
340+
margin-bottom: 0.3rem;
341+
}
342+
.input-number-small, .input-number-tiny, .input-hex-small {
343+
width: 100%; /* Числовые поля на всю ширину */
344+
text-align: left;
345+
padding-left: 0.7em;
346+
}
347+
.control-group.row span { /* 'px', '%' */
348+
display: none; /* Скрыть единицы */
349+
}
350+
.control-group.color-control {
351+
flex-direction: row; /* Оставить цвет и хекс в строку */
352+
flex-wrap: wrap;
353+
}
354+
.opacity-label { margin-left: 0; margin-top: 0.5rem;}
355+
.checkbox-group { flex-direction: column; gap: 0.5rem; align-items: flex-start;}
356+
357+
.output-area .copy-button { /* Возвращаем горизонтальный текст */
358+
writing-mode: horizontal-tb;
359+
padding: 0.5em 1em;
360+
}
361+
}

0 commit comments

Comments
 (0)