PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.6
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.6
2.0.13 2.0.12 2.0.11 2.0.10 2.0.9 trunk 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8
blockenberg / blocks / column / style.css

style.css in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.6, at blocks/column/style.css

515 lines 16.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ========================================
2 Column Block Styles
3 Prefix: bkbg-column
4 ======================================== */
5
6 /* CSS Custom Properties */
7 .bkbg-column {
8 --bkbg-col-desktop: 50%;
9 --bkbg-col-tablet: 50%;
10 --bkbg-col-mobile: 100%;
11 --bkbg-col-padding-none: 0;
12 --bkbg-col-padding-xs: 8px;
13 --bkbg-col-padding-s: 16px;
14 --bkbg-col-padding-m: 24px;
15 --bkbg-col-padding-l: 32px;
16 --bkbg-col-padding-xl: 48px;
17 position: relative;
18 box-sizing: border-box;
19 min-height: 1px;
20 min-width: 0;
21 overflow: visible;
22 }
23
24 /* Default desktop width */
25 .bkbg-column {
26 flex: 0 0 var(--bkbg-col-desktop);
27 max-width: var(--bkbg-col-desktop);
28 width: var(--bkbg-col-desktop);
29 }
30
31 /* Column inner container */
32 .bkbg-column__inner {
33 width: 100%;
34 min-height: 100%;
35 box-sizing: border-box;
36 display: flex;
37 flex-direction: column;
38 }
39
40 /* Column Vertical Alignment */
41 .bkbg-column--valign-top .bkbg-column__inner {
42 justify-content: flex-start;
43 }
44
45 .bkbg-column--valign-middle .bkbg-column__inner {
46 justify-content: center;
47 }
48
49 .bkbg-column--valign-bottom .bkbg-column__inner {
50 justify-content: flex-end;
51 }
52
53 /* Inner Padding Variants */
54 .bkbg-column--padding-none .bkbg-column__inner {
55 padding: var(--bkbg-col-padding-none);
56 }
57
58 .bkbg-column--padding-xs .bkbg-column__inner {
59 padding: var(--bkbg-col-padding-xs);
60 }
61
62 .bkbg-column--padding-s .bkbg-column__inner {
63 padding: var(--bkbg-col-padding-s);
64 }
65
66 .bkbg-column--padding-m .bkbg-column__inner {
67 padding: var(--bkbg-col-padding-m);
68 }
69
70 .bkbg-column--padding-l .bkbg-column__inner {
71 padding: var(--bkbg-col-padding-l);
72 }
73
74 .bkbg-column--padding-xl .bkbg-column__inner {
75 padding: var(--bkbg-col-padding-xl);
76 }
77
78 /* ========================================
79 Responsive Breakpoints
80 ======================================== */
81
82 /* Tablet: 768px - 1024px */
83 @media (min-width: 768px) and (max-width: 1024px) {
84 .bkbg-column {
85 flex-basis: var(--bkbg-col-tablet, var(--bkbg-col-desktop));
86 max-width: var(--bkbg-col-tablet, var(--bkbg-col-desktop));
87 width: var(--bkbg-col-tablet, var(--bkbg-col-desktop));
88 }
89 }
90
91 /* Mobile: < 768px */
92 @media (max-width: 767px) {
93 .bkbg-column {
94 flex-basis: var(--bkbg-col-mobile, 100%);
95 max-width: var(--bkbg-col-mobile, 100%);
96 width: var(--bkbg-col-mobile, 100%);
97 }
98
99 /* Stack on mobile override */
100 .bkbg-row--stack-mobile .bkbg-column {
101 flex-basis: 100% !important;
102 max-width: 100% !important;
103 width: 100% !important;
104 }
105 }
106
107 /* ========================================
108 Editor-specific Styles
109 ======================================== */
110
111 /* Column in editor */
112 .editor-styles-wrapper .bkbg-column {
113 min-height: 40px;
114 border: 1px dashed transparent;
115 border-radius: 3px;
116 transition: border-color 0.15s ease, background-color 0.15s ease;
117 }
118
119 .editor-styles-wrapper .bkbg-column:hover {
120 border-color: rgba(59, 130, 246, 0.25);
121 background-color: rgba(59, 130, 246, 0.02);
122 }
123
124 .editor-styles-wrapper .bkbg-column.is-selected,
125 .editor-styles-wrapper .bkbg-column:focus-within {
126 border-color: rgba(59, 130, 246, 0.4);
127 background-color: rgba(59, 130, 246, 0.03);
128 }
129
130 /* ========================================
131 Column Hover Move Controls (Editor)
132 ======================================== */
133
134 .bkbg-column__move-actions {
135 position: absolute;
136 top: 0;
137 left: 50%;
138 transform: translate(-50%, -100%);
139 display: flex;
140 gap: 2px;
141 padding: 2px 3px;
142 background: rgba(59, 130, 246, 0.04);
143 border: 1px dashed rgba(59, 130, 246, 0.35);
144 border-radius: 999px;
145 opacity: 0;
146 visibility: hidden;
147 pointer-events: none;
148 transition: opacity 0.15s ease, visibility 0.15s ease;
149 z-index: 5;
150 }
151
152 .editor-styles-wrapper .bkbg-column:hover .bkbg-column__move-actions,
153 .editor-styles-wrapper .bkbg-column.is-selected .bkbg-column__move-actions,
154 .editor-styles-wrapper .bkbg-column:focus-within .bkbg-column__move-actions {
155 opacity: 1;
156 visibility: visible;
157 pointer-events: auto;
158 }
159
160 .bkbg-column__move-btn {
161 display: flex !important;
162 align-items: center !important;
163 justify-content: center !important;
164 width: 22px !important;
165 height: 22px !important;
166 min-width: 22px !important;
167 padding: 0 !important;
168 background: transparent !important;
169 border: none !important;
170 border-radius: 6px !important;
171 color: rgba(59, 130, 246, 0.85) !important;
172 opacity: 0.85;
173 }
174
175 .bkbg-column__move-btn:hover:not(:disabled) {
176 background: rgba(59, 130, 246, 0.10) !important;
177 color: #2563eb !important;
178 opacity: 1;
179 }
180
181 .bkbg-column__move-btn:disabled {
182 opacity: 0.25 !important;
183 cursor: not-allowed !important;
184 }
185
186 .bkbg-column__move-btn svg {
187 width: 16px !important;
188 height: 16px !important;
189 fill: currentColor !important;
190 }
191
192 /* Don't show move controls while resizing the row */
193 .bkbg-row--is-resizing .bkbg-column__move-actions {
194 display: none !important;
195 }
196
197 /* Width label in editor */
198 .bkbg-column__width-label {
199 position: absolute;
200 bottom: -16px;
201 left: 50%;
202 transform: translateX(-50%);
203 font-size: 9px;
204 font-weight: 600;
205 color: #64748b;
206 background: #f1f5f9;
207 padding: 1px 5px;
208 border-radius: 2px;
209 opacity: 0;
210 transition: opacity 0.15s ease;
211 pointer-events: none;
212 z-index: 1;
213 white-space: nowrap;
214 }
215
216 .editor-styles-wrapper .bkbg-column:hover .bkbg-column__width-label,
217 .editor-styles-wrapper .bkbg-column.is-selected .bkbg-column__width-label {
218 opacity: 1;
219 }
220
221 /* Ensure inner blocks fill column */
222 .editor-styles-wrapper .bkbg-column .bkbg-column__inner {
223 min-height: 40px;
224 display: flex;
225 flex-direction: column;
226 flex: 1;
227 }
228
229 .editor-styles-wrapper .bkbg-column .block-editor-inner-blocks {
230 width: 100%;
231 display: flex;
232 flex-direction: column;
233 flex: 1;
234 min-height: 100%;
235 }
236
237 .editor-styles-wrapper .bkbg-column .block-editor-block-list__layout {
238 width: 100%;
239 display: flex;
240 flex-direction: column;
241 flex: 1;
242 min-height: 100%;
243 }
244
245 /* Editor preview: vertical alignment must target block list layout wrappers */
246 .editor-styles-wrapper .bkbg-column.bkbg-column--valign-top > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout {
247 justify-content: flex-start !important;
248 }
249
250 .editor-styles-wrapper .bkbg-column.bkbg-column--valign-middle > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout {
251 justify-content: center !important;
252 }
253
254 .editor-styles-wrapper .bkbg-column.bkbg-column--valign-bottom > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout {
255 justify-content: flex-end !important;
256 }
257
258 /* Column width controls in inspector */
259 .bkbg-column-widths-controls {
260 margin-top: 8px;
261 }
262
263 .bkbg-column-widths-controls .components-range-control {
264 margin-bottom: 16px;
265 }
266
267 /* Column info in inspector */
268 .bkbg-column-info {
269 font-size: 12px;
270 color: #64748b;
271 }
272
273 .bkbg-column-info p {
274 margin: 4px 0;
275 }
276
277 .bkbg-column-info strong {
278 color: #1e293b;
279 }
280
281 /* ========================================
282 Block Appender Styling - Context aware
283 ======================================== */
284
285 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks .block-editor-inserter {
286 width: 100%;
287 display: flex;
288 justify-content: center;
289 }
290
291 /* Make sure the layout can contain positioned appender */
292 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout {
293 position: relative;
294 min-height: 40px;
295 }
296
297 /* ----------------------------------------
298 EMPTY COLUMN: Full drop zone with outline icon
299 ---------------------------------------- */
300
301 /* When appender is the only child = empty column */
302 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child {
303 position: relative !important;
304 width: 100% !important;
305 margin: 0 !important;
306 opacity: 0;
307 pointer-events: none;
308 transition: opacity 0.15s ease;
309 }
310
311 /* Show empty column drop zone only when parent SECTION is hovered/selected */
312 .editor-styles-wrapper [data-type="blockenberg/section"]:hover .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child,
313 .editor-styles-wrapper [data-type="blockenberg/section"].is-selected .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child,
314 .editor-styles-wrapper [data-type="blockenberg/section"]:focus-within .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child {
315 opacity: 1;
316 pointer-events: auto;
317 }
318
319 /* Empty column drop zone style */
320 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child .block-editor-button-block-appender {
321 background: transparent !important;
322 border: 2px dashed rgba(59, 130, 246, 0.3) !important;
323 border-radius: 6px !important;
324 width: 100% !important;
325 height: auto !important;
326 min-height: 60px !important;
327 min-width: 100% !important;
328 padding: 16px !important;
329 display: flex !important;
330 align-items: center !important;
331 justify-content: center !important;
332 box-shadow: none !important;
333 transition: border-color 0.15s ease, background-color 0.15s ease;
334 }
335
336 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child .block-editor-button-block-appender:hover {
337 background: rgba(59, 130, 246, 0.05) !important;
338 border-color: rgba(59, 130, 246, 0.5) !important;
339 transform: none;
340 }
341
342 /* Outline plus icon for empty column */
343 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child .block-editor-button-block-appender svg {
344 fill: none !important;
345 stroke: rgba(59, 130, 246, 0.5) !important;
346 stroke-width: 2px !important;
347 width: 24px !important;
348 height: 24px !important;
349 }
350
351 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child .block-editor-button-block-appender:hover svg {
352 stroke: rgba(59, 130, 246, 0.8) !important;
353 }
354
355 /* ----------------------------------------
356 COLUMN WITH CONTENT: Hide appender completely
357 ---------------------------------------- */
358
359 /* When appender is NOT the only child = has content - hide it */
360 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:not(:only-child) {
361 display: none !important;
362 }
363
364 /* Ensure inner blocks layout is flex column - direct children only */
365 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks {
366 display: flex;
367 flex-direction: column;
368 flex: 1;
369 }
370
371 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout {
372 display: flex;
373 flex-direction: column;
374 flex: 1;
375 }
376
377 /* ========================================
378 Prevent column shrink/grow issues
379 ======================================== */
380
381 .bkbg-column {
382 flex-shrink: 0 !important;
383 flex-grow: 0 !important;
384 }
385
386 /* Editor: Ensure column wrapper respects width */
387 .editor-styles-wrapper [data-type="blockenberg/column"] {
388 flex: 0 0 auto !important;
389 min-width: 0 !important;
390 }
391
392 /* Allow flex grow only when explicitly needed */
393 .bkbg-row--flex-grow .bkbg-column {
394 flex-grow: 1;
395 }
396
397 /* ========================================
398 Drag and Drop States
399 ======================================== */
400
401 /* Show drop zones when dragging blocks globally */
402 body.bkbg-is-dragging .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child {
403 opacity: 1 !important;
404 pointer-events: auto !important;
405 }
406
407 /* Show all borders during drag - like hover state */
408 body.bkbg-is-dragging .bkbg-section {
409 border-color: rgba(59, 130, 246, 0.3) !important;
410 }
411
412 body.bkbg-is-dragging .bkbg-row {
413 border-color: rgba(59, 130, 246, 0.3) !important;
414 }
415
416 body.bkbg-is-dragging .bkbg-column {
417 border-color: rgba(59, 130, 246, 0.25) !important;
418 }
419
420 /* Highlight when dragging over - stronger highlight */
421 body.bkbg-is-dragging .bkbg-section.bkbg-drop-target {
422 border-color: rgba(59, 130, 246, 0.6) !important;
423 background-color: rgba(59, 130, 246, 0.03) !important;
424 }
425
426 body.bkbg-is-dragging .bkbg-row.bkbg-drop-target {
427 border-color: rgba(59, 130, 246, 0.6) !important;
428 background-color: rgba(59, 130, 246, 0.03) !important;
429 }
430
431 body.bkbg-is-dragging .bkbg-column.bkbg-drop-target {
432 border-color: rgba(59, 130, 246, 0.6) !important;
433 background-color: rgba(59, 130, 246, 0.05) !important;
434 }
435
436 /* Highlight drop zone (appender button) when dragging over */
437 .block-editor-button-block-appender.bkbg-drop-target,
438 .bkbg-column .block-editor-button-block-appender.bkbg-drop-target,
439 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child .block-editor-button-block-appender.bkbg-drop-target {
440 background: rgba(59, 130, 246, 0.15) !important;
441 border-color: rgba(59, 130, 246, 0.8) !important;
442 border-style: solid !important;
443 }
444
445 .block-editor-button-block-appender.bkbg-drop-target svg,
446 .bkbg-column .block-editor-button-block-appender.bkbg-drop-target svg,
447 .editor-styles-wrapper .bkbg-column > .bkbg-column__inner > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-list-appender:only-child .block-editor-button-block-appender.bkbg-drop-target svg {
448 stroke: rgba(59, 130, 246, 1) !important;
449 fill: rgba(59, 130, 246, 0.3) !important;
450 }
451
452 /* Also highlight when parent block-list-appender has bkbg-drop-target */
453 .block-list-appender.bkbg-drop-target .block-editor-button-block-appender,
454 .editor-styles-wrapper .bkbg-column .block-list-appender.bkbg-drop-target .block-editor-button-block-appender {
455 background: rgba(59, 130, 246, 0.15) !important;
456 border-color: rgba(59, 130, 246, 0.8) !important;
457 border-style: solid !important;
458 }
459
460 .block-list-appender.bkbg-drop-target .block-editor-button-block-appender svg,
461 .editor-styles-wrapper .bkbg-column .block-list-appender.bkbg-drop-target .block-editor-button-block-appender svg {
462 stroke: rgba(59, 130, 246, 1) !important;
463 fill: rgba(59, 130, 246, 0.3) !important;
464 }
465
466 /* Inspector: spacing controls */
467 .block-editor-page .bkbg-spacing-control,
468 .interface-interface-skeleton__editor .bkbg-spacing-control {
469 margin-top: 12px;
470 padding-top: 10px;
471 border-top: 1px solid #e2e8f0;
472 }
473
474 .block-editor-page .bkbg-spacing-control__title,
475 .interface-interface-skeleton__editor .bkbg-spacing-control__title {
476 font-size: 13px;
477 font-weight: 600;
478 color: #1f2937;
479 margin-bottom: 10px;
480 }
481
482 .block-editor-page .bkbg-spacing-control__grid,
483 .interface-interface-skeleton__editor .bkbg-spacing-control__grid {
484 display: grid;
485 grid-template-columns: repeat(2, minmax(0, 1fr));
486 gap: 10px 12px;
487 }
488
489 .block-editor-page .bkbg-spacing-control__item,
490 .interface-interface-skeleton__editor .bkbg-spacing-control__item {
491 min-width: 0;
492 }
493
494 .block-editor-page .bkbg-spacing-control__label,
495 .interface-interface-skeleton__editor .bkbg-spacing-control__label {
496 display: block;
497 font-size: 12px;
498 font-weight: 500;
499 color: #374151;
500 margin-bottom: 4px;
501 }
502
503 .block-editor-page .bkbg-spacing-control__row,
504 .interface-interface-skeleton__editor .bkbg-spacing-control__row {
505 display: grid;
506 grid-template-columns: minmax(0, 1fr) 78px;
507 gap: 6px;
508 align-items: center;
509 }
510
511 .block-editor-page .bkbg-spacing-control__custom-unit,
512 .interface-interface-skeleton__editor .bkbg-spacing-control__custom-unit {
513 margin-top: 6px;
514 }
515