PluginProbe ʕ •ᴥ•ʔ
FrontBlocks for Gutenberg/GeneratePress / 1.3.5
FrontBlocks for Gutenberg/GeneratePress v1.3.5
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 4 months ago custom-post-types.js 6 months ago settings-src.css 1 month ago settings.css 1 month ago
settings-src.css
678 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 Card Styles */
342 .frbl-feature-card.frbl-feature-pro {
343 background: linear-gradient(135deg, #ffffff 0%, #fef3f2 100%);
344 border-color: #fee2e2;
345 }
346
347 .frbl-feature-card.frbl-feature-pro:hover {
348 border-color: #ec4899;
349 }
350
351 .frbl-feature-card.frbl-feature-pro .frbl-feature-icon {
352 background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);
353 color: #ec4899;
354 }
355
356 .frbl-feature-card.frbl-feature-pro:hover .frbl-feature-icon {
357 background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%);
358 }
359
360 /* Disabled state for PRO features without license */
361 .frbl-feature-card.frbl-feature-pro .frbl-toggle:has(input:disabled) {
362 opacity: 0.6;
363 }
364
365 /* Responsive adjustments */
366 @media (max-width: 768px) {
367 .frbl-features-grid {
368 grid-template-columns: 1fr;
369 }
370
371 .frbl-feature-card {
372 padding: 1.25rem;
373 }
374 }
375
376 @media (min-width: 768px) and (max-width: 1024px) {
377 .frbl-features-grid {
378 grid-template-columns: repeat(2, 1fr);
379 }
380 }
381
382
383 /* =============================================
384 License Management Styles (Complete & Independent)
385 Based on FormsCRM but standalone for FrontBlocks
386 ============================================= */
387
388 /* License Wrapper - Grid Layout */
389 .formscrm-license-wrapper {
390 display: grid;
391 grid-template-columns: 1fr 320px;
392 gap: 24px;
393 max-width: 1200px;
394 margin: 20px 0;
395 }
396
397 @media (max-width: 900px) {
398 .formscrm-license-wrapper {
399 grid-template-columns: 1fr;
400 }
401 }
402
403 /* Main Card */
404 .formscrm-card {
405 background: #fff;
406 border: 1px solid #e5e7eb;
407 border-radius: 12px;
408 padding: 32px;
409 box-shadow: 0 1px 3px rgba(0,0,0,0.05);
410 }
411
412 .formscrm-card-header {
413 margin-bottom: 24px;
414 padding-bottom: 20px;
415 border-bottom: 1px solid #e5e7eb;
416 }
417
418 .formscrm-card-header h2 {
419 margin: 0 0 8px 0;
420 font-size: 1.5rem;
421 font-weight: 600;
422 color: #1f2937;
423 }
424
425 .formscrm-card-header p {
426 margin: 0;
427 color: #6b7280;
428 font-size: 0.875rem;
429 }
430
431 /* Form Elements */
432 .formscrm-form-group {
433 margin-bottom: 24px;
434 }
435
436 .formscrm-label {
437 display: block;
438 font-weight: 600;
439 color: #374151;
440 margin-bottom: 8px;
441 font-size: 0.875rem;
442 }
443
444 .formscrm-input-group {
445 display: flex;
446 gap: 12px;
447 align-items: center;
448 }
449
450 .formscrm-input {
451 flex: 1;
452 padding: 12px 16px;
453 border: 1px solid #d1d5db;
454 border-radius: 8px;
455 font-size: 1rem;
456 transition: all 0.2s;
457 background: #fff;
458 }
459
460 .formscrm-input:focus {
461 outline: none;
462 border-color: #8b5cf6;
463 box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.15);
464 }
465
466 .formscrm-input[readonly] {
467 background: #f9fafb;
468 color: #6b7280;
469 cursor: not-allowed;
470 }
471
472 /* Deactivate Label */
473 .formscrm-deactivate-label {
474 display: flex;
475 align-items: center;
476 gap: 8px;
477 padding: 12px 16px;
478 background: #fef2f2;
479 border: 1px solid #fecaca;
480 border-radius: 8px;
481 cursor: pointer;
482 transition: background 0.2s;
483 white-space: nowrap;
484 }
485
486 .formscrm-deactivate-label:hover {
487 background: #fee2e2;
488 }
489
490 .formscrm-deactivate-label input {
491 margin: 0;
492 }
493
494 .formscrm-deactivate-label span {
495 font-size: 0.875rem;
496 font-weight: 600;
497 color: #dc2626;
498 }
499
500 /* Help Text */
501 .formscrm-help-text {
502 margin: 8px 0 0 0;
503 font-size: 0.75rem;
504 color: #9ca3af;
505 }
506
507 /* Status Box */
508 .formscrm-status-box {
509 display: flex;
510 align-items: center;
511 gap: 12px;
512 padding: 14px 18px;
513 border-radius: 8px;
514 border: 2px solid;
515 }
516
517 .formscrm-status-active {
518 background: #dcfce7;
519 border-color: #86efac;
520 color: #166534;
521 }
522
523 .formscrm-status-expired {
524 background: #fee2e2;
525 border-color: #fca5a5;
526 color: #991b1b;
527 }
528
529 .formscrm-status-inactive {
530 background: #fef9c3;
531 border-color: #fde047;
532 color: #854d0e;
533 }
534
535 .formscrm-status-icon {
536 display: flex;
537 flex-shrink: 0;
538 }
539
540 .formscrm-icon,
541 .fcod-icon {
542 width: 22px;
543 height: 22px;
544 }
545
546 .formscrm-status-text {
547 font-weight: 700;
548 font-size: 1rem;
549 }
550
551 /* Notices */
552 .formscrm-notice {
553 padding: 14px 18px;
554 border-radius: 8px;
555 margin-bottom: 20px;
556 }
557
558 .formscrm-notice p {
559 margin: 0;
560 font-size: 0.875rem;
561 line-height: 1.5;
562 }
563
564 .formscrm-notice a {
565 font-weight: 600;
566 text-decoration: underline;
567 }
568
569 .formscrm-notice-info {
570 background: #f0f9ff;
571 border: 1px solid #bfdbfe;
572 color: #1e40af;
573 }
574
575 .formscrm-notice-info a {
576 color: #1d4ed8;
577 }
578
579 .formscrm-notice-error {
580 background: #fef2f2;
581 border: 1px solid #fecaca;
582 color: #991b1b;
583 }
584
585 .formscrm-notice-error a {
586 color: #dc2626;
587 }
588
589 /* Form Actions */
590 .formscrm-form-actions {
591 margin-top: 24px;
592 padding-top: 24px;
593 border-top: 1px solid #e5e7eb;
594 }
595
596 /* Buttons - FrontBlocks Purple Style */
597 .formscrm-button {
598 display: inline-flex;
599 align-items: center;
600 padding: 12px 24px;
601 border-radius: 8px;
602 font-size: 1rem;
603 font-weight: 600;
604 cursor: pointer;
605 transition: all 0.2s;
606 border: none;
607 }
608
609 .formscrm-button-primary {
610 background: #8b5cf6;
611 color: #fff;
612 }
613
614 .formscrm-button-primary:hover {
615 background: #7c3aed;
616 box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
617 }
618
619 /* Info Card (Sidebar) */
620 .formscrm-info-card {
621 background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
622 border: 1px solid #e2e8f0;
623 border-radius: 12px;
624 padding: 24px;
625 height: fit-content;
626 }
627
628 .formscrm-info-card h3 {
629 margin: 0 0 12px 0;
630 font-size: 1.125rem;
631 font-weight: 700;
632 color: #1e293b;
633 }
634
635 .formscrm-info-card p {
636 margin: 0 0 16px 0;
637 font-size: 0.875rem;
638 color: #64748b;
639 line-height: 1.5;
640 }
641
642 /* Benefits List */
643 .formscrm-benefits-list {
644 margin: 0;
645 padding: 0;
646 list-style: none;
647 }
648
649 .formscrm-benefits-list li {
650 position: relative;
651 padding-left: 28px;
652 margin-bottom: 10px;
653 font-size: 0.875rem;
654 color: #475569;
655 }
656
657 .formscrm-benefits-list li::before {
658 content: "";
659 position: absolute;
660 left: 0;
661 top: 0;
662 color: #8b5cf6;
663 font-weight: 700;
664 font-size: 1.125rem;
665 }
666
667 /* Responsive adjustments */
668 @media (max-width: 640px) {
669 .frbl-settings-wrapper {
670 margin-left: 0;
671 }
672
673 .frbl-settings-wrapper .tw-flex.tw-items-center.tw-justify-between {
674 @apply tw-flex-col tw-items-start tw-space-y-4;
675 }
676 }
677
678