PluginProbe ʕ •ᴥ•ʔ
FrontBlocks for Gutenberg/GeneratePress / 1.3.6
FrontBlocks for Gutenberg/GeneratePress v1.3.6
trunk 0.2.0 0.2.1 0.2.2 0.2.3 0.2.4 0.2.5 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.1.0 1.2.0 1.2.1 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 ci-artifacts
frontblocks / assets / admin / settings-src.css
frontblocks / assets / admin Last commit date
icons 1 month ago custom-post-types.js 7 months ago settings-src.css 1 month ago settings.css 1 month ago
settings-src.css
724 lines
1 /**
2 * FrontBlocks Admin Settings Styles
3 *
4 * @package FrontBlocks
5 * @author Closemarketing
6 * @copyright 2025 Closemarketing
7 */
8
9 @tailwind base;
10 @tailwind components;
11 @tailwind utilities;
12
13 /* Custom WordPress Admin overrides */
14 .frbl-settings-wrapper {
15 margin-left: -20px;
16 margin-top: -10px;
17 padding-top: 40px;
18 }
19
20 .frbl-settings-wrapper * {
21 box-sizing: border-box;
22 }
23
24 /* Custom toggle switch component */
25 .frbl-toggle {
26 position: relative;
27 display: inline-flex;
28 height: 1.75rem;
29 width: 3.25rem;
30 flex-shrink: 0;
31 cursor: pointer;
32 border-radius: 9999px;
33 border: 2px solid transparent;
34 transition-property: color, background-color, border-color;
35 transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
36 transition-duration: 200ms;
37 background-color: #d1d5db;
38 }
39
40 .frbl-toggle:hover {
41 background-color: #9ca3af;
42 }
43
44 .frbl-toggle:focus-within {
45 outline: 2px solid transparent;
46 outline-offset: 2px;
47 box-shadow: 0 0 0 3px rgba(104, 125, 249, 0.3);
48 }
49
50 .frbl-toggle input {
51 position: absolute;
52 width: 1px;
53 height: 1px;
54 padding: 0;
55 margin: -1px;
56 overflow: hidden;
57 clip: rect(0, 0, 0, 0);
58 white-space: nowrap;
59 border-width: 0;
60 }
61
62 /* Toggle background when checked */
63 .frbl-toggle:has(input:checked) {
64 background-color: #687df9;
65 }
66
67 .frbl-toggle:has(input:checked):hover {
68 background-color: #5565ed;
69 }
70
71 /* Toggle dot/knob - always white */
72 .frbl-toggle span {
73 pointer-events: none;
74 display: inline-block;
75 height: 1.25rem;
76 width: 1.25rem;
77 border-radius: 9999px;
78 background-color: #ffffff;
79 box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
80 transform: translateX(0.125rem);
81 transition-property: transform;
82 transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
83 transition-duration: 200ms;
84 position: relative;
85 top: 0.125rem;
86 }
87
88 /* Move the knob when checked - keep it white */
89 .frbl-toggle input:checked + span {
90 transform: translateX(1.5rem);
91 background-color: #ffffff;
92 }
93
94 /* Disabled state */
95 .frbl-toggle:has(input:disabled) {
96 opacity: 0.5;
97 cursor: not-allowed;
98 }
99
100 .frbl-toggle:has(input:disabled):hover {
101 background-color: #d1d5db;
102 }
103
104 /* Custom checkbox styling */
105 .frbl-checkbox {
106 height: 1.25rem;
107 width: 1.25rem;
108 border-radius: 0.25rem;
109 border-color: #d1d5db;
110 color: #687df9;
111 transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
112 transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
113 transition-duration: 150ms;
114 cursor: pointer;
115 }
116
117 .frbl-checkbox:focus {
118 outline: 2px solid transparent;
119 outline-offset: 2px;
120 box-shadow: 0 0 0 3px rgba(104, 125, 249, 0.3);
121 }
122
123 /* Success message styling */
124 .frbl-notice-success {
125 border-radius: 0.5rem;
126 background-color: #f0fdf4;
127 border-left-width: 4px;
128 border-color: #4ade80;
129 padding: 1rem;
130 margin-bottom: 1.5rem;
131 }
132
133 .frbl-notice-success p {
134 font-size: 0.875rem;
135 line-height: 1.25rem;
136 color: #15803d;
137 }
138
139 /* Info badge */
140 .frbl-info-badge {
141 display: inline-flex;
142 align-items: center;
143 padding: 0.125rem 0.625rem;
144 border-radius: 9999px;
145 font-size: 0.75rem;
146 line-height: 1rem;
147 font-weight: 500;
148 background-color: #f3f4f6;
149 color: #1f2937;
150 }
151
152 /* Card hover effect */
153 .frbl-card:hover {
154 box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
155 transition-property: box-shadow;
156 transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
157 transition-duration: 200ms;
158 }
159
160 /* Smooth animations */
161 @keyframes slideIn {
162 from {
163 opacity: 0;
164 transform: translateY(10px);
165 }
166 to {
167 opacity: 1;
168 transform: translateY(0);
169 }
170 }
171
172 .frbl-animate-slide-in {
173 animation: slideIn 0.3s ease-out;
174 }
175
176 /* Restored from commit 564a0a6 (lost when settings.css was rebuilt without this block).
177 * Includes feature grid/cards, license field tweaks, and FormsCRM-style license UI.
178 */
179 /* Custom styles for license fields */
180 .frbl-settings-wrapper .tw-text-base:not(button) {
181 font-size: 1rem;
182 line-height: 1.5rem;
183 width: 100%;
184 }
185
186 .frbl-settings-wrapper .tw-flex {
187 display: flex;
188 column-gap: 20px;
189 }
190
191 /* Submit button width */
192 .frbl-settings-wrapper .tw-w-1\/2 {
193 width: 50%;
194 }
195
196 /* Features Grid Layout */
197 .frbl-section-wrapper {
198 margin-bottom: 3rem;
199 }
200
201 .frbl-section-header {
202 margin-bottom: 1.5rem;
203 }
204
205 .frbl-features-grid {
206 display: grid;
207 grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
208 gap: 1.25rem;
209 }
210
211 /* Feature Card Styles */
212 .frbl-feature-card {
213 position: relative;
214 background: #ffffff;
215 border: 1px solid #e5e7eb;
216 border-radius: 12px;
217 padding: 1.5rem;
218 transition: all 0.2s ease;
219 overflow: hidden;
220 display: flex;
221 flex-direction: column;
222 min-height: 80px;
223 }
224
225 .frbl-feature-card:hover {
226 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
227 transform: translateY(-2px);
228 border-color: #687df9;
229 }
230
231 /* PRO Badge */
232 .frbl-pro-badge {
233 position: absolute;
234 top: 0;
235 left: 0;
236 background: linear-gradient(135deg, #ec4899 0%, #f97316 100%);
237 color: #ffffff;
238 font-size: 0.625rem;
239 font-weight: 700;
240 letter-spacing: 0.05em;
241 padding: 0.25rem 0.75rem;
242 border-radius: 0 0 12px 0;
243 box-shadow: 0 2px 4px rgba(236, 72, 153, 0.3);
244 z-index: 10;
245 }
246
247 /* Feature Card Content */
248 .frbl-feature-content {
249 display: flex;
250 align-items: center;
251 justify-content: space-between;
252 gap: 1rem;
253 min-height: 3rem;
254 }
255
256 /* Feature Icon */
257 .frbl-feature-icon {
258 flex-shrink: 0;
259 width: 2.5rem;
260 height: 2.5rem;
261 display: flex;
262 align-items: center;
263 justify-content: center;
264 background: linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%);
265 border-radius: 10px;
266 color: #687df9;
267 transition: all 0.2s ease;
268 }
269
270 .frbl-feature-card:hover .frbl-feature-icon {
271 background: linear-gradient(135deg, #e0e3fc 0%, #d0d4fb 100%);
272 transform: scale(1.05);
273 }
274
275 .frbl-feature-icon svg {
276 width: 1.5rem;
277 height: 1.5rem;
278 stroke-width: 2;
279 }
280
281 /* Feature Info */
282 .frbl-feature-info {
283 flex: 1;
284 min-width: 0;
285 display: flex;
286 align-items: center;
287 }
288
289 .frbl-feature-title {
290 font-size: 0.9375rem;
291 font-weight: 600;
292 color: #1f2937;
293 margin: 0;
294 line-height: 1.5;
295 }
296
297 .frbl-feature-description {
298 font-size: 0.8125rem;
299 color: #6b7280;
300 margin: 0.25rem 0 0 0;
301 line-height: 1.4;
302 }
303
304 /* Active Feature Cards */
305 .frbl-feature-card.frbl-feature-active {
306 background: linear-gradient(135deg, #ffffff 0%, #f0fdf4 100%);
307 border-color: #d1fae5;
308 }
309
310 .frbl-feature-card.frbl-feature-active:hover {
311 border-color: #10b981;
312 }
313
314 .frbl-feature-card.frbl-feature-active .frbl-feature-icon {
315 background: linear-gradient(135deg, #d1fae5 0%, #a7f3d0 100%);
316 color: #10b981;
317 }
318
319 .frbl-feature-card.frbl-feature-active:hover .frbl-feature-icon {
320 background: linear-gradient(135deg, #a7f3d0 0%, #6ee7b7 100%);
321 }
322
323 /* Active cards need vertical layout for description */
324 .frbl-feature-card.frbl-feature-active .frbl-feature-info {
325 flex-direction: column;
326 align-items: flex-start;
327 }
328
329 /* Active cards don't have toggle, so don't use space-between */
330 .frbl-feature-card.frbl-feature-active .frbl-feature-content {
331 justify-content: flex-start;
332 }
333
334 /* Feature Toggle */
335 .frbl-feature-toggle {
336 flex-shrink: 0;
337 display: flex;
338 align-items: center;
339 }
340
341 /* PRO info-only cards (no toggle, same layout as active cards) */
342 .frbl-feature-card.frbl-feature-pro.frbl-feature-pro-info .frbl-feature-info {
343 flex-direction: column;
344 align-items: flex-start;
345 }
346
347 .frbl-feature-card.frbl-feature-pro.frbl-feature-pro-info .frbl-feature-content {
348 justify-content: flex-start;
349 }
350
351 /* PRO Card Styles */
352 .frbl-feature-card.frbl-feature-pro {
353 background: linear-gradient(135deg, #ffffff 0%, #fef3f2 100%);
354 border-color: #fee2e2;
355 }
356
357 .frbl-feature-card.frbl-feature-pro:hover {
358 border-color: #ec4899;
359 }
360
361 .frbl-feature-card.frbl-feature-pro .frbl-feature-icon {
362 background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);
363 color: #ec4899;
364 }
365
366 .frbl-feature-card.frbl-feature-pro:hover .frbl-feature-icon {
367 background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%);
368 }
369
370 /* Disabled state for PRO features without license */
371 .frbl-feature-card.frbl-feature-pro .frbl-toggle:has(input:disabled) {
372 opacity: 0.6;
373 }
374
375 /* Locked PRO feature (no active license) */
376 .frbl-feature-card.frbl-feature-locked {
377 background: linear-gradient(135deg, #ffffff 0%, #fff1f2 100%);
378 border-color: #fecdd3;
379 opacity: 0.85;
380 }
381
382 .frbl-feature-card.frbl-feature-locked:hover {
383 border-color: #ef4444;
384 transform: none;
385 }
386
387 .frbl-feature-card.frbl-feature-locked .frbl-feature-icon {
388 background: linear-gradient(135deg, #fecdd3 0%, #fca5a5 100%);
389 color: #ef4444;
390 }
391
392 .frbl-feature-card.frbl-feature-locked .frbl-feature-info {
393 flex-direction: column;
394 align-items: flex-start;
395 }
396
397 .frbl-feature-card.frbl-feature-locked .frbl-feature-content {
398 justify-content: flex-start;
399 }
400
401 .frbl-feature-card.frbl-feature-locked .frbl-pro-badge {
402 background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
403 }
404
405 .frbl-feature-card.frbl-feature-locked .frbl-feature-description a {
406 color: #ef4444;
407 font-weight: 600;
408 text-decoration: underline;
409 }
410
411 /* Responsive adjustments */
412 @media (max-width: 768px) {
413 .frbl-features-grid {
414 grid-template-columns: 1fr;
415 }
416
417 .frbl-feature-card {
418 padding: 1.25rem;
419 }
420 }
421
422 @media (min-width: 768px) and (max-width: 1024px) {
423 .frbl-features-grid {
424 grid-template-columns: repeat(2, 1fr);
425 }
426 }
427
428
429 /* =============================================
430 License Management Styles (Complete & Independent)
431 Based on FormsCRM but standalone for FrontBlocks
432 ============================================= */
433
434 /* License Wrapper - Grid Layout */
435 .formscrm-license-wrapper {
436 display: grid;
437 grid-template-columns: 1fr 320px;
438 gap: 24px;
439 max-width: 1200px;
440 margin: 20px 0;
441 }
442
443 @media (max-width: 900px) {
444 .formscrm-license-wrapper {
445 grid-template-columns: 1fr;
446 }
447 }
448
449 /* Main Card */
450 .formscrm-card {
451 background: #fff;
452 border: 1px solid #e5e7eb;
453 border-radius: 12px;
454 padding: 32px;
455 box-shadow: 0 1px 3px rgba(0,0,0,0.05);
456 }
457
458 .formscrm-card-header {
459 margin-bottom: 24px;
460 padding-bottom: 20px;
461 border-bottom: 1px solid #e5e7eb;
462 }
463
464 .formscrm-card-header h2 {
465 margin: 0 0 8px 0;
466 font-size: 1.5rem;
467 font-weight: 600;
468 color: #1f2937;
469 }
470
471 .formscrm-card-header p {
472 margin: 0;
473 color: #6b7280;
474 font-size: 0.875rem;
475 }
476
477 /* Form Elements */
478 .formscrm-form-group {
479 margin-bottom: 24px;
480 }
481
482 .formscrm-label {
483 display: block;
484 font-weight: 600;
485 color: #374151;
486 margin-bottom: 8px;
487 font-size: 0.875rem;
488 }
489
490 .formscrm-input-group {
491 display: flex;
492 gap: 12px;
493 align-items: center;
494 }
495
496 .formscrm-input {
497 flex: 1;
498 padding: 12px 16px;
499 border: 1px solid #d1d5db;
500 border-radius: 8px;
501 font-size: 1rem;
502 transition: all 0.2s;
503 background: #fff;
504 }
505
506 .formscrm-input:focus {
507 outline: none;
508 border-color: #8b5cf6;
509 box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.15);
510 }
511
512 .formscrm-input[readonly] {
513 background: #f9fafb;
514 color: #6b7280;
515 cursor: not-allowed;
516 }
517
518 /* Deactivate Label */
519 .formscrm-deactivate-label {
520 display: flex;
521 align-items: center;
522 gap: 8px;
523 padding: 12px 16px;
524 background: #fef2f2;
525 border: 1px solid #fecaca;
526 border-radius: 8px;
527 cursor: pointer;
528 transition: background 0.2s;
529 white-space: nowrap;
530 }
531
532 .formscrm-deactivate-label:hover {
533 background: #fee2e2;
534 }
535
536 .formscrm-deactivate-label input {
537 margin: 0;
538 }
539
540 .formscrm-deactivate-label span {
541 font-size: 0.875rem;
542 font-weight: 600;
543 color: #dc2626;
544 }
545
546 /* Help Text */
547 .formscrm-help-text {
548 margin: 8px 0 0 0;
549 font-size: 0.75rem;
550 color: #9ca3af;
551 }
552
553 /* Status Box */
554 .formscrm-status-box {
555 display: flex;
556 align-items: center;
557 gap: 12px;
558 padding: 14px 18px;
559 border-radius: 8px;
560 border: 2px solid;
561 }
562
563 .formscrm-status-active {
564 background: #dcfce7;
565 border-color: #86efac;
566 color: #166534;
567 }
568
569 .formscrm-status-expired {
570 background: #fee2e2;
571 border-color: #fca5a5;
572 color: #991b1b;
573 }
574
575 .formscrm-status-inactive {
576 background: #fef9c3;
577 border-color: #fde047;
578 color: #854d0e;
579 }
580
581 .formscrm-status-icon {
582 display: flex;
583 flex-shrink: 0;
584 }
585
586 .formscrm-icon,
587 .fcod-icon {
588 width: 22px;
589 height: 22px;
590 }
591
592 .formscrm-status-text {
593 font-weight: 700;
594 font-size: 1rem;
595 }
596
597 /* Notices */
598 .formscrm-notice {
599 padding: 14px 18px;
600 border-radius: 8px;
601 margin-bottom: 20px;
602 }
603
604 .formscrm-notice p {
605 margin: 0;
606 font-size: 0.875rem;
607 line-height: 1.5;
608 }
609
610 .formscrm-notice a {
611 font-weight: 600;
612 text-decoration: underline;
613 }
614
615 .formscrm-notice-info {
616 background: #f0f9ff;
617 border: 1px solid #bfdbfe;
618 color: #1e40af;
619 }
620
621 .formscrm-notice-info a {
622 color: #1d4ed8;
623 }
624
625 .formscrm-notice-error {
626 background: #fef2f2;
627 border: 1px solid #fecaca;
628 color: #991b1b;
629 }
630
631 .formscrm-notice-error a {
632 color: #dc2626;
633 }
634
635 /* Form Actions */
636 .formscrm-form-actions {
637 margin-top: 24px;
638 padding-top: 24px;
639 border-top: 1px solid #e5e7eb;
640 }
641
642 /* Buttons - FrontBlocks Purple Style */
643 .formscrm-button {
644 display: inline-flex;
645 align-items: center;
646 padding: 12px 24px;
647 border-radius: 8px;
648 font-size: 1rem;
649 font-weight: 600;
650 cursor: pointer;
651 transition: all 0.2s;
652 border: none;
653 }
654
655 .formscrm-button-primary {
656 background: #8b5cf6;
657 color: #fff;
658 }
659
660 .formscrm-button-primary:hover {
661 background: #7c3aed;
662 box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
663 }
664
665 /* Info Card (Sidebar) */
666 .formscrm-info-card {
667 background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
668 border: 1px solid #e2e8f0;
669 border-radius: 12px;
670 padding: 24px;
671 height: fit-content;
672 }
673
674 .formscrm-info-card h3 {
675 margin: 0 0 12px 0;
676 font-size: 1.125rem;
677 font-weight: 700;
678 color: #1e293b;
679 }
680
681 .formscrm-info-card p {
682 margin: 0 0 16px 0;
683 font-size: 0.875rem;
684 color: #64748b;
685 line-height: 1.5;
686 }
687
688 /* Benefits List */
689 .formscrm-benefits-list {
690 margin: 0;
691 padding: 0;
692 list-style: none;
693 }
694
695 .formscrm-benefits-list li {
696 position: relative;
697 padding-left: 28px;
698 margin-bottom: 10px;
699 font-size: 0.875rem;
700 color: #475569;
701 }
702
703 .formscrm-benefits-list li::before {
704 content: "";
705 position: absolute;
706 left: 0;
707 top: 0;
708 color: #8b5cf6;
709 font-weight: 700;
710 font-size: 1.125rem;
711 }
712
713 /* Responsive adjustments */
714 @media (max-width: 640px) {
715 .frbl-settings-wrapper {
716 margin-left: 0;
717 }
718
719 .frbl-settings-wrapper .tw-flex.tw-items-center.tw-justify-between {
720 @apply tw-flex-col tw-items-start tw-space-y-4;
721 }
722 }
723
724