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 / data-table / style.css

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

552 lines 14.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ========================================
2 Data Table Block Styles
3 Prefix: bkbg-dt-
4 ======================================== */
5
6 .bkbg-dt-wrap {
7 --bkbg-dt-header-bg: #f8fafc;
8 --bkbg-dt-header-color: #1e293b;
9 --bkbg-dt-header-border: #e2e8f0;
10 --bkbg-dt-cell-bg: #ffffff;
11 --bkbg-dt-cell-bg-alt: #f8fafc;
12 --bkbg-dt-cell-color: #475569;
13 --bkbg-dt-cell-border: #e2e8f0;
14 --bkbg-dt-hover-bg: #f1f5f9;
15 --bkbg-dt-accent: #3b82f6;
16 --bkbg-dt-header-font-size: 14px;
17 --bkbg-dt-header-font-weight: 600;
18 --bkbg-dt-cell-font-size: 14px;
19 --bkbg-dt-cell-font-weight: 400;
20 --bkbg-dt-cell-padding: 12px;
21 --bkbg-dt-brd-w: 1px;
22 --bkbg-dt-radius: 8px;
23 width: 100%;
24 }
25
26 /* Controls bar (search + export) */
27 .bkbg-dt-controls {
28 display: flex;
29 flex-wrap: wrap;
30 align-items: center;
31 justify-content: space-between;
32 gap: 12px;
33 margin-bottom: 16px;
34 }
35
36 .bkbg-dt-search {
37 position: relative;
38 flex: 1;
39 max-width: 300px;
40 }
41
42 .bkbg-dt-search-input {
43 width: 100%;
44 padding: 10px 14px 10px 40px;
45 border: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-cell-border);
46 border-radius: 6px;
47 font-size: 14px;
48 background: var(--bkbg-dt-cell-bg);
49 color: var(--bkbg-dt-cell-color);
50 transition: border-color 0.2s ease, box-shadow 0.2s ease;
51 }
52
53 .bkbg-dt-search-input:focus {
54 outline: none;
55 border-color: var(--bkbg-dt-accent);
56 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
57 }
58
59 .bkbg-dt-search-icon {
60 position: absolute;
61 left: 12px;
62 top: 50%;
63 transform: translateY(-50%);
64 width: 18px;
65 height: 18px;
66 color: #94a3b8;
67 pointer-events: none;
68 }
69
70 .bkbg-dt-export-btns {
71 display: flex;
72 gap: 8px;
73 }
74
75 .bkbg-dt-btn {
76 display: inline-flex;
77 align-items: center;
78 gap: 6px;
79 padding: 10px 16px;
80 border: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-cell-border);
81 border-radius: 6px;
82 background: var(--bkbg-dt-cell-bg);
83 color: var(--bkbg-dt-cell-color);
84 font-size: 14px;
85 font-weight: 500;
86 cursor: pointer;
87 transition: all 0.2s ease;
88 }
89
90 .bkbg-dt-btn:hover {
91 background: var(--bkbg-dt-hover-bg);
92 border-color: var(--bkbg-dt-accent);
93 color: var(--bkbg-dt-accent);
94 }
95
96 .bkbg-dt-btn svg {
97 width: 16px;
98 height: 16px;
99 }
100
101 /* Table container */
102 .bkbg-dt-container {
103 overflow: auto;
104 border: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-cell-border);
105 border-radius: var(--bkbg-dt-radius);
106 }
107
108 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-container {
109 overflow: visible;
110 }
111
112 /* Table */
113 .bkbg-dt-table {
114 width: 100%;
115 border-collapse: collapse;
116 border-spacing: 0;
117 table-layout: auto;
118 }
119
120 /* Caption */
121 .bkbg-dt-caption {
122 padding: var(--bkbg-dt-cell-padding);
123 font-size: 13px;
124 color: var(--bkbg-dt-cell-color);
125 text-align: left;
126 background: var(--bkbg-dt-cell-bg-alt);
127 }
128
129 .bkbg-dt-wrap[data-caption-pos="top"] .bkbg-dt-caption {
130 caption-side: top;
131 border-bottom: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-cell-border);
132 }
133
134 .bkbg-dt-wrap[data-caption-pos="bottom"] .bkbg-dt-caption {
135 caption-side: bottom;
136 border-top: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-cell-border);
137 }
138
139 /* Header */
140 .bkbg-dt-thead {
141 background: var(--bkbg-dt-header-bg);
142 }
143
144 .bkbg-dt-th {
145 padding: var(--bkbg-dt-cell-padding);
146 font-family: var(--bkbg-dt-hdr-font-family, inherit);
147 font-size: var(--bkbg-dt-hdr-font-size-d, var(--bkbg-dt-header-font-size));
148 font-weight: var(--bkbg-dt-hdr-font-weight, var(--bkbg-dt-header-font-weight));
149 line-height: var(--bkbg-dt-hdr-line-height-d, 1.4);
150 letter-spacing: var(--bkbg-dt-hdr-letter-spacing-d, normal);
151 word-spacing: var(--bkbg-dt-hdr-word-spacing-d, normal);
152 text-transform: var(--bkbg-dt-hdr-text-transform, none);
153 font-style: var(--bkbg-dt-hdr-font-style, normal);
154 text-decoration: var(--bkbg-dt-hdr-text-decoration, none);
155 color: var(--bkbg-dt-header-color);
156 text-align: left;
157 border-bottom: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-header-border);
158 white-space: nowrap;
159 position: relative;
160 user-select: none;
161 }
162
163 .bkbg-dt-th[data-align="center"] { text-align: center; }
164 .bkbg-dt-th[data-align="right"] { text-align: right; }
165
166 /* Sortable header */
167 .bkbg-dt-wrap[data-sortable="1"] .bkbg-dt-th {
168 cursor: pointer;
169 transition: background 0.2s ease;
170 }
171
172 .bkbg-dt-wrap[data-sortable="1"] .bkbg-dt-th:hover {
173 background: var(--bkbg-dt-hover-bg);
174 }
175
176 .bkbg-dt-sort-icon {
177 display: inline-flex;
178 margin-left: 6px;
179 opacity: 0.4;
180 transition: opacity 0.2s ease;
181 }
182
183 .bkbg-dt-th:hover .bkbg-dt-sort-icon,
184 .bkbg-dt-th[data-sort] .bkbg-dt-sort-icon {
185 opacity: 1;
186 }
187
188 .bkbg-dt-th[data-sort="asc"] .bkbg-dt-sort-icon {
189 transform: rotate(180deg);
190 }
191
192 .bkbg-dt-sort-icon svg {
193 width: 14px;
194 height: 14px;
195 }
196
197 /* Sticky header */
198 .bkbg-dt-wrap[data-sticky-header="1"] .bkbg-dt-th {
199 position: sticky;
200 top: 0;
201 z-index: 10;
202 background: var(--bkbg-dt-header-bg);
203 }
204
205 /* Body rows */
206 .bkbg-dt-tr {
207 transition: background 0.15s ease;
208 }
209
210 /* Zebra striping */
211 .bkbg-dt-wrap[data-zebra="1"] .bkbg-dt-tr:nth-child(even) .bkbg-dt-td {
212 background: var(--bkbg-dt-cell-bg-alt);
213 }
214
215 /* Hover highlight */
216 .bkbg-dt-wrap[data-hover="1"] .bkbg-dt-tr:hover .bkbg-dt-td {
217 background: var(--bkbg-dt-hover-bg);
218 }
219
220 .bkbg-dt-td {
221 padding: var(--bkbg-dt-cell-padding);
222 font-family: var(--bkbg-dt-cel-font-family, inherit);
223 font-size: var(--bkbg-dt-cel-font-size-d, var(--bkbg-dt-cell-font-size));
224 font-weight: var(--bkbg-dt-cel-font-weight, var(--bkbg-dt-cell-font-weight));
225 line-height: var(--bkbg-dt-cel-line-height-d, 1.4);
226 letter-spacing: var(--bkbg-dt-cel-letter-spacing-d, normal);
227 word-spacing: var(--bkbg-dt-cel-word-spacing-d, normal);
228 text-transform: var(--bkbg-dt-cel-text-transform, none);
229 font-style: var(--bkbg-dt-cel-font-style, normal);
230 text-decoration: var(--bkbg-dt-cel-text-decoration, none);
231 color: var(--bkbg-dt-cell-color);
232 background: var(--bkbg-dt-cell-bg);
233 border-bottom: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-cell-border);
234 vertical-align: middle;
235 }
236
237 .bkbg-dt-td[data-align="center"] { text-align: center; }
238 .bkbg-dt-td[data-align="right"] { text-align: right; }
239
240 .bkbg-dt-tr:last-child .bkbg-dt-td {
241 border-bottom: none;
242 }
243
244 /* Sticky first column */
245 .bkbg-dt-wrap[data-sticky-col="1"] .bkbg-dt-th:first-child,
246 .bkbg-dt-wrap[data-sticky-col="1"] .bkbg-dt-td:first-child {
247 position: sticky;
248 left: 0;
249 z-index: 5;
250 background: inherit;
251 box-shadow: 2px 0 4px rgba(0, 0, 0, 0.05);
252 }
253
254 .bkbg-dt-wrap[data-sticky-col="1"][data-sticky-header="1"] .bkbg-dt-th:first-child {
255 z-index: 15;
256 }
257
258 /* Pagination */
259 .bkbg-dt-pagination {
260 display: flex;
261 align-items: center;
262 justify-content: center;
263 gap: 6px;
264 margin-top: 16px;
265 flex-wrap: wrap;
266 }
267
268 .bkbg-dt-page-btn {
269 min-width: 36px;
270 height: 36px;
271 display: inline-flex;
272 align-items: center;
273 justify-content: center;
274 padding: 0 10px;
275 border: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-cell-border);
276 border-radius: 6px;
277 background: var(--bkbg-dt-cell-bg);
278 color: var(--bkbg-dt-cell-color);
279 font-size: 14px;
280 cursor: pointer;
281 transition: all 0.2s ease;
282 }
283
284 .bkbg-dt-page-btn:hover {
285 background: var(--bkbg-dt-hover-bg);
286 border-color: var(--bkbg-dt-accent);
287 }
288
289 .bkbg-dt-page-btn.is-active {
290 background: var(--bkbg-dt-accent);
291 border-color: var(--bkbg-dt-accent);
292 color: #fff;
293 }
294
295 .bkbg-dt-page-btn:disabled {
296 opacity: 0.5;
297 cursor: not-allowed;
298 }
299
300 .bkbg-dt-page-info {
301 padding: 0 12px;
302 font-size: 14px;
303 color: var(--bkbg-dt-cell-color);
304 }
305
306 /* Empty state */
307 .bkbg-dt-empty {
308 padding: 40px 20px;
309 text-align: center;
310 color: var(--bkbg-dt-cell-color);
311 font-size: 14px;
312 }
313
314 /* Table styles */
315 .bkbg-dt-wrap[data-style="bordered"] .bkbg-dt-th,
316 .bkbg-dt-wrap[data-style="bordered"] .bkbg-dt-td {
317 border-right: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-cell-border);
318 }
319
320 .bkbg-dt-wrap[data-style="bordered"] .bkbg-dt-th:last-child,
321 .bkbg-dt-wrap[data-style="bordered"] .bkbg-dt-td:last-child {
322 border-right: none;
323 }
324
325 .bkbg-dt-wrap[data-style="minimal"] .bkbg-dt-container {
326 border: none;
327 border-radius: 0;
328 }
329
330 .bkbg-dt-wrap[data-style="minimal"] .bkbg-dt-th {
331 background: transparent;
332 border-bottom-width: 2px;
333 }
334
335 .bkbg-dt-wrap[data-style="minimal"] .bkbg-dt-td {
336 background: transparent;
337 }
338
339 /* Responsive: Typography — Tablet */
340 @media (max-width: 1024px) {
341 .bkbg-dt-th {
342 font-size: var(--bkbg-dt-hdr-font-size-t, var(--bkbg-dt-hdr-font-size-d, var(--bkbg-dt-header-font-size)));
343 line-height: var(--bkbg-dt-hdr-line-height-t, var(--bkbg-dt-hdr-line-height-d, 1.4));
344 letter-spacing: var(--bkbg-dt-hdr-letter-spacing-t, var(--bkbg-dt-hdr-letter-spacing-d, normal));
345 word-spacing: var(--bkbg-dt-hdr-word-spacing-t, var(--bkbg-dt-hdr-word-spacing-d, normal));
346 }
347 .bkbg-dt-td {
348 font-size: var(--bkbg-dt-cel-font-size-t, var(--bkbg-dt-cel-font-size-d, var(--bkbg-dt-cell-font-size)));
349 line-height: var(--bkbg-dt-cel-line-height-t, var(--bkbg-dt-cel-line-height-d, 1.4));
350 letter-spacing: var(--bkbg-dt-cel-letter-spacing-t, var(--bkbg-dt-cel-letter-spacing-d, normal));
351 word-spacing: var(--bkbg-dt-cel-word-spacing-t, var(--bkbg-dt-cel-word-spacing-d, normal));
352 }
353 }
354
355 /* Responsive: Typography — Mobile */
356 @media (max-width: 767px) {
357 .bkbg-dt-th {
358 font-size: var(--bkbg-dt-hdr-font-size-m, var(--bkbg-dt-hdr-font-size-t, var(--bkbg-dt-hdr-font-size-d, var(--bkbg-dt-header-font-size))));
359 line-height: var(--bkbg-dt-hdr-line-height-m, var(--bkbg-dt-hdr-line-height-t, var(--bkbg-dt-hdr-line-height-d, 1.4)));
360 letter-spacing: var(--bkbg-dt-hdr-letter-spacing-m, var(--bkbg-dt-hdr-letter-spacing-t, var(--bkbg-dt-hdr-letter-spacing-d, normal)));
361 word-spacing: var(--bkbg-dt-hdr-word-spacing-m, var(--bkbg-dt-hdr-word-spacing-t, var(--bkbg-dt-hdr-word-spacing-d, normal)));
362 }
363 .bkbg-dt-td {
364 font-size: var(--bkbg-dt-cel-font-size-m, var(--bkbg-dt-cel-font-size-t, var(--bkbg-dt-cel-font-size-d, var(--bkbg-dt-cell-font-size))));
365 line-height: var(--bkbg-dt-cel-line-height-m, var(--bkbg-dt-cel-line-height-t, var(--bkbg-dt-cel-line-height-d, 1.4)));
366 letter-spacing: var(--bkbg-dt-cel-letter-spacing-m, var(--bkbg-dt-cel-letter-spacing-t, var(--bkbg-dt-cel-letter-spacing-d, normal)));
367 word-spacing: var(--bkbg-dt-cel-word-spacing-m, var(--bkbg-dt-cel-word-spacing-t, var(--bkbg-dt-cel-word-spacing-d, normal)));
368 }
369 }
370
371 /* Responsive: Stack on mobile */
372 @media (max-width: 768px) {
373 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-container {
374 border: none;
375 }
376
377 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-table,
378 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-thead,
379 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-tbody,
380 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-tr,
381 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-th,
382 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-td {
383 display: block;
384 }
385
386 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-thead {
387 display: none;
388 }
389
390 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-tr {
391 margin-bottom: 16px;
392 border: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-cell-border);
393 border-radius: var(--bkbg-dt-radius);
394 overflow: hidden;
395 }
396
397 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-td {
398 display: flex;
399 justify-content: space-between;
400 align-items: center;
401 text-align: right;
402 border-bottom: var(--bkbg-dt-brd-w) solid var(--bkbg-dt-cell-border);
403 }
404
405 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-td::before {
406 content: attr(data-label);
407 font-weight: 600;
408 color: var(--bkbg-dt-header-color);
409 text-align: left;
410 padding-right: 16px;
411 }
412
413 .bkbg-dt-wrap[data-responsive="stack"] .bkbg-dt-tr:last-child {
414 margin-bottom: 0;
415 }
416 }
417
418 /* ========================================
419 Editor Styles
420 ======================================== */
421
422 .bkbg-dt-editor-table {
423 width: 100%;
424 border-collapse: collapse;
425 }
426
427 .bkbg-dt-editor-th,
428 .bkbg-dt-editor-td {
429 border: 1px solid var(--bkbg-dt-cell-border);
430 padding: 0;
431 position: relative;
432 }
433
434 .bkbg-dt-editor-th {
435 background: var(--bkbg-dt-header-bg);
436 }
437
438 .bkbg-dt-editor-input {
439 width: 100%;
440 padding: var(--bkbg-dt-cell-padding);
441 border: none;
442 background: transparent;
443 font: inherit;
444 color: inherit;
445 }
446
447 .bkbg-dt-editor-input:focus {
448 outline: none;
449 background: rgba(59, 130, 246, 0.05);
450 }
451
452 .bkbg-dt-editor-th .bkbg-dt-editor-input {
453 font-weight: var(--bkbg-dt-hdr-font-weight, var(--bkbg-dt-header-font-weight));
454 color: var(--bkbg-dt-header-color);
455 font: inherit;
456 text-transform: inherit;
457 font-style: inherit;
458 text-decoration: inherit;
459 letter-spacing: inherit;
460 word-spacing: inherit;
461 }
462
463 /* Editor actions are standardized via assets/css/editor.css (.bkbg-editor-actions) */
464
465 .bkbg-dt-row-handle {
466 position: absolute;
467 left: -30px;
468 top: 50%;
469 transform: translateY(-50%);
470 opacity: 0;
471 transition: opacity 0.2s ease;
472 cursor: grab;
473 color: #94a3b8;
474 }
475
476 .bkbg-dt-editor-tr:hover .bkbg-dt-row-handle {
477 opacity: 1;
478 }
479
480 .bkbg-dt-col-actions {
481 position: absolute;
482 bottom: calc(100% + 4px);
483 left: 50%;
484 transform: translateX(-50%);
485 display: none;
486 gap: 2px;
487 background: #fff;
488 padding: 4px;
489 border-radius: 4px;
490 box-shadow: 0 2px 8px rgba(0,0,0,0.15);
491 z-index: 100;
492 }
493
494 /* Invisible bridge between popup and header */
495 .bkbg-dt-col-actions::after {
496 content: '';
497 position: absolute;
498 left: -10px;
499 right: -10px;
500 top: 100%;
501 height: 12px;
502 }
503
504 .bkbg-dt-editor-th:hover .bkbg-dt-col-actions {
505 display: flex;
506 }
507
508 /* Editor: allow overflow for action popups */
509 .block-editor-block-list__layout .bkbg-dt-wrap .bkbg-dt-container,
510 .editor-styles-wrapper .bkbg-dt-wrap .bkbg-dt-container {
511 overflow: visible;
512 }
513
514 .block-editor-block-list__layout .bkbg-dt-editor-table,
515 .editor-styles-wrapper .bkbg-dt-editor-table {
516 overflow: visible;
517 }
518
519 .bkbg-dt-editor-th {
520 position: relative;
521 }
522
523 .bkbg-dt-editor-tr {
524 position: relative;
525 }
526
527 .bkbg-dt-row-actions {
528 position: absolute;
529 left: 100%;
530 top: 50%;
531 transform: translateY(-50%);
532 display: none;
533 flex-direction: column;
534 gap: 2px;
535 background: #fff;
536 padding: 4px;
537 border-radius: 4px;
538 box-shadow: 0 2px 8px rgba(0,0,0,0.15);
539 z-index: 100;
540 margin-left: 4px;
541 }
542
543 .bkbg-dt-editor-tr:hover .bkbg-dt-row-actions {
544 display: flex;
545 }
546
547 .bkbg-dt-import-actions {
548 display: flex;
549 gap: 8px;
550 }
551
552