PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.13
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.13
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 / row / style.css

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

688 lines 16.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ========================================
2 Row Block Styles
3 Prefix: bkbg-row
4 ======================================== */
5
6 /* CSS Custom Properties */
7 .bkbg-row {
8 --bkbg-row-gap-none: 0;
9 --bkbg-row-gap-xs: 8px;
10 --bkbg-row-gap-s: 16px;
11 --bkbg-row-gap-m: 24px;
12 --bkbg-row-gap-l: 32px;
13 --bkbg-row-gap-xl: 48px;
14 position: relative;
15 width: 100%;
16 box-sizing: border-box;
17 }
18
19 /* Row Inner - Flexbox layout */
20 .bkbg-row__inner {
21 display: flex;
22 flex-wrap: nowrap;
23 width: 100%;
24 box-sizing: border-box;
25 overflow: visible;
26 }
27
28 /* Gap Variants */
29 .bkbg-row--gap-none .bkbg-row__inner {
30 gap: var(--bkbg-row-gap-none);
31 }
32
33 .bkbg-row--gap-xs .bkbg-row__inner {
34 gap: var(--bkbg-row-gap-xs);
35 }
36
37 .bkbg-row--gap-s .bkbg-row__inner {
38 gap: var(--bkbg-row-gap-s);
39 }
40
41 .bkbg-row--gap-m .bkbg-row__inner {
42 gap: var(--bkbg-row-gap-m);
43 }
44
45 .bkbg-row--gap-l .bkbg-row__inner {
46 gap: var(--bkbg-row-gap-l);
47 }
48
49 .bkbg-row--gap-xl .bkbg-row__inner {
50 gap: var(--bkbg-row-gap-xl);
51 }
52
53 /* Vertical Alignment */
54 .bkbg-row--valign-top .bkbg-row__inner {
55 align-items: flex-start;
56 }
57
58 .bkbg-row--valign-middle .bkbg-row__inner {
59 align-items: center;
60 }
61
62 .bkbg-row--valign-bottom .bkbg-row__inner {
63 align-items: flex-end;
64 }
65
66 /* Stack on Mobile */
67 @media (max-width: 767px) {
68 .bkbg-row--stack-mobile .bkbg-row__inner {
69 flex-direction: column;
70 }
71
72 .bkbg-row--stack-mobile .bkbg-row__inner > .block-editor-inner-blocks > .block-editor-block-list__layout {
73 display: flex !important;
74 flex-direction: column !important;
75 flex-wrap: nowrap !important;
76 width: 100% !important;
77 }
78
79 .bkbg-row--stack-mobile .bkbg-column {
80 flex-basis: 100% !important;
81 max-width: 100% !important;
82 width: 100% !important;
83 }
84 }
85
86 /* ========================================
87 Editor-specific Styles
88 ======================================== */
89
90 /* Editor Row Container */
91 .editor-styles-wrapper .bkbg-row {
92 min-height: 50px;
93 border: 1px dashed transparent;
94 border-radius: 4px;
95 transition: border-color 0.15s ease;
96 }
97
98 .editor-styles-wrapper .bkbg-row:hover {
99 border-color: rgba(59, 130, 246, 0.3);
100 }
101
102 .editor-styles-wrapper .bkbg-row.is-selected,
103 .editor-styles-wrapper .bkbg-row:focus-within {
104 border-color: rgba(59, 130, 246, 0.5);
105 }
106
107 /* Drag and drop state */
108 .editor-styles-wrapper .bkbg-row.is-dragging-over,
109 .editor-styles-wrapper [data-type="blockenberg/row"].is-dragging-over > .bkbg-row {
110 border-color: rgba(59, 130, 246, 0.6) !important;
111 background-color: rgba(59, 130, 246, 0.03) !important;
112 }
113
114 /* Row label */
115 .editor-styles-wrapper .bkbg-row::before {
116 content: 'Row';
117 position: absolute;
118 top: -18px;
119 left: 0;
120 font-size: 10px;
121 font-weight: 600;
122 color: #3b82f6;
123 text-transform: uppercase;
124 letter-spacing: 0.5px;
125 opacity: 0;
126 transition: opacity 0.15s ease;
127 pointer-events: none;
128 z-index: 1;
129 }
130
131 .editor-styles-wrapper .bkbg-row:hover::before,
132 .editor-styles-wrapper .bkbg-row.is-selected::before {
133 opacity: 1;
134 }
135
136 /* Responsive mode badge */
137 .bkbg-row__mode-badge {
138 position: absolute;
139 top: -18px;
140 right: 0;
141 font-size: 9px;
142 font-weight: 600;
143 color: #fff;
144 background: #3b82f6;
145 padding: 2px 6px;
146 border-radius: 3px;
147 text-transform: uppercase;
148 letter-spacing: 0.5px;
149 opacity: 0;
150 transition: opacity 0.15s ease;
151 pointer-events: none;
152 z-index: 1;
153 }
154
155 .editor-styles-wrapper .bkbg-row:hover .bkbg-row__mode-badge,
156 .editor-styles-wrapper .bkbg-row.is-selected .bkbg-row__mode-badge {
157 opacity: 1;
158 }
159
160 /* Inner blocks layout in editor - direct children only */
161 .editor-styles-wrapper .bkbg-row > .bkbg-row__inner {
162 position: relative;
163 }
164
165 .editor-styles-wrapper .bkbg-row > .bkbg-row__inner > .block-editor-inner-blocks {
166 width: 100%;
167 }
168
169 .editor-styles-wrapper .bkbg-row > .bkbg-row__inner > .block-editor-inner-blocks > .block-editor-block-list__layout {
170 display: flex;
171 flex-wrap: nowrap;
172 width: 100%;
173 }
174
175 /* ========================================
176 Resize Handles
177 ======================================== */
178
179 /* Handles overlay container */
180 .bkbg-row__handles-overlay {
181 position: absolute;
182 top: 0;
183 left: 0;
184 right: 0;
185 bottom: 0;
186 pointer-events: none;
187 z-index: 100;
188 }
189
190 /* Handle wrapper positioned at column edge */
191 .bkbg-row__handle-wrapper {
192 position: absolute;
193 top: 0;
194 bottom: 0;
195 width: 0;
196 transform: translateX(-50%);
197 pointer-events: auto;
198 }
199
200 /* Resize handle */
201 .bkbg-row__resize-handle {
202 position: absolute;
203 top: 0;
204 bottom: 0;
205 left: -8px;
206 width: 16px;
207 cursor: col-resize;
208 z-index: 101;
209 opacity: 0;
210 transition: opacity 0.15s ease;
211 }
212
213 .bkbg-row:hover .bkbg-row__resize-handle,
214 .bkbg-row.is-selected .bkbg-row__resize-handle {
215 opacity: 1;
216 }
217
218 /* Handle visual line */
219 .bkbg-row__resize-handle-line {
220 position: absolute;
221 top: 0;
222 bottom: 0;
223 left: 50%;
224 width: 3px;
225 transform: translateX(-50%);
226 background: #3b82f6;
227 border-radius: 2px;
228 opacity: 0.5;
229 transition: opacity 0.15s ease, width 0.15s ease, background-color 0.15s ease;
230 }
231
232 .bkbg-row__resize-handle:hover .bkbg-row__resize-handle-line {
233 opacity: 1;
234 width: 5px;
235 background: #2563eb;
236 }
237
238 /* Hide resize lines/handles in mobile editor preview */
239 @media (max-width: 767px) {
240 .editor-styles-wrapper .bkbg-row__handles-overlay,
241 .editor-styles-wrapper .bkbg-row__handle-wrapper,
242 .editor-styles-wrapper .bkbg-row__resize-handle,
243 .editor-styles-wrapper .bkbg-row__resize-handle-line,
244 .editor-styles-wrapper .bkbg-row__resize-indicator {
245 display: none !important;
246 }
247 }
248
249 /* Resize percentage indicator - only show during drag */
250 .bkbg-row__resize-indicator {
251 position: absolute;
252 top: 50%;
253 left: 50%;
254 transform: translate(-50%, -50%);
255 display: flex;
256 align-items: center;
257 gap: 8px;
258 opacity: 0;
259 pointer-events: none;
260 transition: opacity 0.1s ease;
261 z-index: 102;
262 }
263
264 /* Show indicator only when row is resizing */
265 .bkbg-row--is-resizing .bkbg-row__resize-indicator {
266 opacity: 1;
267 }
268
269 .bkbg-row__resize-pct {
270 font-size: 11px;
271 font-weight: 600;
272 color: #fff;
273 background: #1e293b;
274 padding: 3px 6px;
275 border-radius: 3px;
276 white-space: nowrap;
277 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
278 }
279
280 .bkbg-row__resize-pct--left {
281 transform: translateX(-100%);
282 margin-left: -8px;
283 }
284
285 .bkbg-row__resize-pct--right {
286 transform: translateX(0);
287 margin-left: 8px;
288 }
289
290 /* Row is resizing state */
291 .bkbg-row--is-resizing {
292 user-select: none;
293 cursor: col-resize !important;
294 }
295
296 .bkbg-row--is-resizing * {
297 cursor: col-resize !important;
298 }
299
300 .bkbg-row--is-resizing .bkbg-row__resize-handle {
301 opacity: 1;
302 }
303
304 .bkbg-row--is-resizing .bkbg-row__resize-handle-line {
305 opacity: 1;
306 width: 5px;
307 background: #2563eb;
308 }
309
310 /* ========================================
311 Responsive Mode Preview in Editor
312 ======================================== */
313
314 /* Tablet mode preview */
315 .editor-styles-wrapper .bkbg-row--mode-tablet .bkbg-column {
316 flex-basis: var(--bkbg-col-tablet, var(--bkbg-col-desktop, 50%)) !important;
317 max-width: var(--bkbg-col-tablet, var(--bkbg-col-desktop, 50%)) !important;
318 }
319
320 /* Mobile mode preview */
321 .editor-styles-wrapper .bkbg-row--mode-mobile.bkbg-row--stack-mobile .bkbg-column {
322 flex-basis: 100% !important;
323 max-width: 100% !important;
324 }
325
326 .editor-styles-wrapper .bkbg-row--mode-mobile.bkbg-row--stack-mobile > .bkbg-row__inner > .block-editor-inner-blocks > .block-editor-block-list__layout {
327 display: flex !important;
328 flex-direction: column !important;
329 flex-wrap: nowrap !important;
330 width: 100% !important;
331 }
332
333 .editor-styles-wrapper .bkbg-row--mode-mobile:not(.bkbg-row--stack-mobile) .bkbg-column {
334 flex-basis: var(--bkbg-col-mobile, 100%) !important;
335 max-width: var(--bkbg-col-mobile, 100%) !important;
336 }
337
338 /* ========================================
339 Preset Buttons
340 ======================================== */
341
342 .bkbg-row-presets {
343 display: flex;
344 flex-direction: column;
345 gap: 8px;
346 }
347
348 .bkbg-row-preset-btn {
349 width: 100%;
350 justify-content: flex-start !important;
351 text-align: left !important;
352 }
353
354 /* ========================================
355 Block List Layout Adjustments
356 ======================================== */
357
358 .editor-styles-wrapper .bkbg-row .block-editor-block-list__layout {
359 display: flex !important;
360 flex-wrap: nowrap !important;
361 width: 100% !important;
362 overflow: visible;
363 }
364
365 .editor-styles-wrapper .bkbg-row .block-editor-block-list__layout > .wp-block {
366 margin: 0 !important;
367 }
368
369 /* Ensure columns respect their widths in editor */
370 .editor-styles-wrapper .bkbg-row .block-editor-block-list__layout > .wp-block[data-type="blockenberg/column"] {
371 flex-shrink: 0;
372 flex-grow: 0;
373 align-self: stretch;
374 display: flex;
375 }
376
377 .editor-styles-wrapper .bkbg-row .block-editor-block-list__layout > .wp-block[data-type="blockenberg/column"] > .bkbg-column {
378 display: flex;
379 flex-direction: column;
380 flex: 1;
381 min-height: 100%;
382 }
383
384 /* ========================================
385 Layout Selector (Initial Setup)
386 ======================================== */
387
388 .bkbg-row-layout-selector {
389 min-height: 120px;
390 }
391
392 .bkbg-row-layout-selector .components-placeholder__instructions {
393 margin-bottom: 16px;
394 }
395
396 .bkbg-row-layout-options {
397 display: grid;
398 grid-template-columns: repeat(3, 1fr);
399 gap: 8px;
400 width: 100%;
401 max-width: 500px;
402 margin-bottom: 12px;
403 }
404
405 .bkbg-row-layout-option {
406 display: flex !important;
407 flex-direction: column !important;
408 align-items: center !important;
409 justify-content: center !important;
410 padding: 12px 8px !important;
411 min-height: 70px;
412 border: 1px solid #e2e8f0 !important;
413 border-radius: 4px !important;
414 background: #fff !important;
415 transition: all 0.15s ease !important;
416 }
417
418 .bkbg-row-layout-option:hover {
419 border-color: #3b82f6 !important;
420 background: #f8fafc !important;
421 transform: translateY(-1px);
422 }
423
424 .bkbg-row-layout-icon {
425 font-size: 18px;
426 letter-spacing: 2px;
427 margin-bottom: 4px;
428 opacity: 0.8;
429 }
430
431 .bkbg-row-layout-label {
432 font-size: 11px;
433 color: #64748b;
434 text-align: center;
435 }
436
437 .bkbg-row-skip-layout {
438 font-size: 12px !important;
439 color: #64748b !important;
440 }
441
442 .bkbg-row-skip-layout:hover {
443 color: #3b82f6 !important;
444 }
445
446 @media (max-width: 600px) {
447 .bkbg-row-layout-options {
448 grid-template-columns: repeat(2, 1fr);
449 }
450 }
451
452 /* ========================================
453 Floating Structure Popup
454 ======================================== */
455
456 /* Trigger button - floating in top-right corner */
457 .bkbg-row__structure-trigger {
458 position: absolute;
459 top: 4px;
460 right: 4px;
461 z-index: 200;
462 opacity: 0;
463 visibility: hidden;
464 pointer-events: none;
465 transition: opacity 0.15s ease, visibility 0.15s ease;
466 }
467
468 .editor-styles-wrapper .bkbg-row:hover .bkbg-row__structure-trigger,
469 .editor-styles-wrapper .bkbg-row.is-selected .bkbg-row__structure-trigger,
470 .bkbg-row__structure-trigger:focus-within {
471 opacity: 1;
472 visibility: visible;
473 pointer-events: auto;
474 }
475
476 .bkbg-row__structure-btn {
477 display: flex !important;
478 align-items: center !important;
479 justify-content: center !important;
480 width: 28px !important;
481 height: 28px !important;
482 min-width: 28px !important;
483 padding: 0 !important;
484 background: #fff !important;
485 border: 1px solid rgba(59, 130, 246, 0.4) !important;
486 border-radius: 6px !important;
487 color: #3b82f6 !important;
488 cursor: pointer !important;
489 transition: all 0.15s ease !important;
490 box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08) !important;
491 }
492
493 .bkbg-row__structure-btn:hover {
494 background: #f0f7ff !important;
495 border-color: #3b82f6 !important;
496 box-shadow: 0 2px 8px rgba(59, 130, 246, 0.2) !important;
497 }
498
499 .bkbg-row__structure-btn svg {
500 width: 18px !important;
501 height: 18px !important;
502 fill: currentColor !important;
503 }
504
505 /* Popover content */
506 .bkbg-row__structure-popover {
507 width: 280px !important;
508 }
509
510 .bkbg-row__structure-popover .components-popover__content {
511 padding: 0 !important;
512 }
513
514 .bkbg-row__structure-content {
515 padding: 12px;
516 }
517
518 .bkbg-row__structure-header {
519 display: flex;
520 align-items: center;
521 justify-content: space-between;
522 margin-bottom: 12px;
523 padding-bottom: 8px;
524 border-bottom: 1px solid #e5e7eb;
525 }
526
527 .bkbg-row__structure-title {
528 font-size: 13px;
529 font-weight: 600;
530 color: #1f2937;
531 }
532
533 .bkbg-row__structure-close {
534 width: 24px !important;
535 height: 24px !important;
536 min-width: 24px !important;
537 padding: 0 !important;
538 background: transparent !important;
539 border: none !important;
540 color: #6b7280 !important;
541 }
542
543 .bkbg-row__structure-close:hover {
544 color: #1f2937 !important;
545 }
546
547 /* Visual column bars */
548 .bkbg-row__structure-columns {
549 display: flex;
550 gap: 2px;
551 height: 32px;
552 background: #f3f4f6;
553 border-radius: 4px;
554 overflow: hidden;
555 margin-bottom: 12px;
556 }
557
558 .bkbg-row__structure-col {
559 display: flex;
560 align-items: center;
561 justify-content: center;
562 background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
563 border-radius: 3px;
564 min-width: 24px;
565 transition: all 0.2s ease;
566 }
567
568 .bkbg-row__structure-col:hover {
569 filter: brightness(1.1);
570 }
571
572 .bkbg-row__structure-col-label {
573 font-size: 10px;
574 font-weight: 600;
575 color: #fff;
576 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
577 }
578
579 /* Action buttons */
580 .bkbg-row__structure-actions,
581 .bkbg-row__structure-row-actions {
582 display: flex;
583 gap: 8px;
584 margin-bottom: 8px;
585 }
586
587 .bkbg-row__structure-row-actions {
588 margin-bottom: 0;
589 padding-top: 8px;
590 border-top: 1px solid #e5e7eb;
591 }
592
593 .bkbg-row__structure-action {
594 flex: 1;
595 display: flex !important;
596 align-items: center !important;
597 justify-content: center !important;
598 gap: 6px !important;
599 height: 32px !important;
600 padding: 0 12px !important;
601 font-size: 12px !important;
602 font-weight: 500 !important;
603 background: #3b82f6 !important;
604 border: none !important;
605 border-radius: 6px !important;
606 color: #fff !important;
607 cursor: pointer !important;
608 transition: all 0.15s ease !important;
609 }
610
611 .bkbg-row__structure-action:hover:not(:disabled) {
612 background: #2563eb !important;
613 }
614
615 .bkbg-row__structure-action:disabled {
616 opacity: 0.4 !important;
617 cursor: not-allowed !important;
618 }
619
620 .bkbg-row__structure-action svg {
621 width: 14px !important;
622 height: 14px !important;
623 fill: currentColor !important;
624 }
625
626 .bkbg-row__structure-action--secondary {
627 background: #f3f4f6 !important;
628 color: #374151 !important;
629 }
630
631 .bkbg-row__structure-action--secondary:hover:not(:disabled) {
632 background: #e5e7eb !important;
633 }
634
635 /* Hide during resize */
636 .bkbg-row--is-resizing .bkbg-row__structure-trigger {
637 display: none !important;
638 }
639
640 /* Inspector: spacing controls */
641 .block-editor-page .bkbg-spacing-control,
642 .interface-interface-skeleton__editor .bkbg-spacing-control {
643 margin-top: 12px;
644 padding-top: 10px;
645 border-top: 1px solid #e2e8f0;
646 }
647
648 .block-editor-page .bkbg-spacing-control__title,
649 .interface-interface-skeleton__editor .bkbg-spacing-control__title {
650 font-size: 13px;
651 font-weight: 600;
652 color: #1f2937;
653 margin-bottom: 10px;
654 }
655
656 .block-editor-page .bkbg-spacing-control__grid,
657 .interface-interface-skeleton__editor .bkbg-spacing-control__grid {
658 display: grid;
659 grid-template-columns: repeat(2, minmax(0, 1fr));
660 gap: 10px 12px;
661 }
662
663 .block-editor-page .bkbg-spacing-control__item,
664 .interface-interface-skeleton__editor .bkbg-spacing-control__item {
665 min-width: 0;
666 }
667
668 .block-editor-page .bkbg-spacing-control__label,
669 .interface-interface-skeleton__editor .bkbg-spacing-control__label {
670 display: block;
671 font-size: 12px;
672 font-weight: 500;
673 color: #374151;
674 margin-bottom: 4px;
675 }
676
677 .block-editor-page .bkbg-spacing-control__row,
678 .interface-interface-skeleton__editor .bkbg-spacing-control__row {
679 display: grid;
680 grid-template-columns: minmax(0, 1fr) 78px;
681 gap: 6px;
682 align-items: center;
683 }
684
685 .block-editor-page .bkbg-spacing-control__custom-unit,
686 .interface-interface-skeleton__editor .bkbg-spacing-control__custom-unit {
687 margin-top: 6px;
688 }