PluginProbe
Forumax – AI Powered Advanced Community Forum Plugin / 2.4.0
Forumax – AI Powered Advanced Community Forum Plugin v2.4.0
2.4.4 2.4.3 2.4.2 2.4.1 2.4.0 trunk 1.0.8 1.1.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 2.0.0 2.1.0 All 29 releases
bbp-core / assets / frontend / scss / _frmx-framework.scss

_frmx-framework.scss in Forumax – AI Powered Advanced Community Forum Plugin 2.4.0, at assets/frontend/scss/_frmx-framework.scss

700 lines 13.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // bootstrap grid system convert my frmx grid system
2 // 1.0.0
3 @use 'sass:map';
4 @use 'sass:math';
5
6 // Breakpoints
7 $frmx-breakpoints: (
8 sm: 576px,
9 md: 768px,
10 lg: 992px,
11 xl: 1200px,
12 xxl: 1400px
13 );
14
15 // Container max-widths
16 $frmx-container-max-widths: (
17 sm: 540px,
18 md: 720px,
19 lg: 960px,
20 xl: 1140px,
21 xxl: 1320px
22 );
23
24 // Grid columns and gutter
25 $frmx-grid-columns: 12;
26 $frmx-gutter-width: 30px;
27
28 // Box sizing
29 *,
30 *::before,
31 *::after {
32 box-sizing: border-box;
33 }
34
35 // Container
36 .frmx-container,
37 .frmx-container-fluid {
38 width: 100%;
39 padding-right: calc($frmx-gutter-width / 2);
40 padding-left: calc($frmx-gutter-width / 2);
41 margin-right: auto;
42 margin-left: auto;
43 }
44
45 .frmx-container-fluid {
46 max-width: 100%;
47 }
48
49 // Container responsive max-widths
50 @each $breakpoint, $width in $frmx-breakpoints {
51 @media (min-width: $width) {
52 .frmx-container {
53 max-width: map.get($frmx-container-max-widths, $breakpoint);
54 }
55 }
56 }
57
58 // Row
59 .frmx-row {
60 display: flex;
61 flex-wrap: wrap;
62 margin-right: calc($frmx-gutter-width / -2);
63 margin-left: calc($frmx-gutter-width / -2);
64 }
65
66 // Row modifiers
67 .frmx-row-no-gutters {
68 margin-right: 0;
69 margin-left: 0;
70
71 >[class*="frmx-col"]*="frmx-col""] {
72 padding-right: 0;
73 padding-left: 0;
74 }
75 }
76
77 // Column base
78 [class*="frmx-col"]*="frmx-col""] {
79 position: relative;
80 width: 100%;
81 padding-right: calc($frmx-gutter-width / 2);
82 padding-left: calc($frmx-gutter-width / 2);
83 }
84
85 // Auto column
86 .frmx-col {
87 flex: 1 0 0%;
88 }
89
90 .frmx-col-auto {
91 flex: 0 0 auto;
92 width: auto;
93 }
94
95 // Generate columns for default (no breakpoint)
96 @for $i from 1 through $frmx-grid-columns {
97 .frmx-col-#{$i} {
98 flex: 0 0 auto;
99 width: math.percentage(math.div($i, $frmx-grid-columns));
100 }
101 }
102
103 // Generate offset classes for default
104 @for $i from 0 through ($frmx-grid-columns - 1) {
105 .frmx-offset-#{$i} {
106 margin-left: math.percentage(math.div($i, $frmx-grid-columns));
107 }
108 }
109
110 // Generate responsive columns and offsets
111 @each $breakpoint, $width in $frmx-breakpoints {
112 @media (min-width: $width) {
113
114 // Auto columns
115 .frmx-col-#{$breakpoint} {
116 flex: 1 0 0%;
117 }
118
119 .frmx-col-#{$breakpoint}-auto {
120 flex: 0 0 auto;
121 width: auto;
122 }
123
124 // Numbered columns
125 @for $i from 1 through $frmx-grid-columns {
126 .frmx-col-#{$breakpoint}-#{$i} {
127 flex: 0 0 auto;
128 width: math.percentage(math.div($i, $frmx-grid-columns));
129 }
130 }
131
132 // Offset classes
133 @for $i from 0 through ($frmx-grid-columns - 1) {
134 .frmx-offset-#{$breakpoint}-#{$i} {
135 margin-left: math.percentage(math.div($i, $frmx-grid-columns));
136 }
137 }
138
139 // Order classes
140 .frmx-order-#{$breakpoint}-first {
141 order: -1;
142 }
143
144 .frmx-order-#{$breakpoint}-last {
145 order: $frmx-grid-columns + 1;
146 }
147
148 @for $i from 0 through $frmx-grid-columns {
149 .frmx-order-#{$breakpoint}-#{$i} {
150 order: $i;
151 }
152 }
153 }
154 }
155
156 // Order classes (default)
157 .frmx-order-first {
158 order: -1;
159 }
160
161 .frmx-order-last {
162 order: $frmx-grid-columns + 1;
163 }
164
165 @for $i from 0 through $frmx-grid-columns {
166 .frmx-order-#{$i} {
167 order: $i;
168 }
169 }
170
171 // Flexbox alignment utilities
172 .frmx-justify-content-start {
173 justify-content: flex-start;
174 }
175
176 .frmx-justify-content-end {
177 justify-content: flex-end;
178 }
179
180 .frmx-justify-content-center {
181 justify-content: center;
182 }
183
184 .frmx-justify-content-between {
185 justify-content: space-between;
186 }
187
188 .frmx-justify-content-around {
189 justify-content: space-around;
190 }
191
192 .frmx-justify-content-evenly {
193 justify-content: space-evenly;
194 }
195
196 .frmx-align-items-start {
197 align-items: flex-start;
198 }
199
200 .frmx-align-items-end {
201 align-items: flex-end;
202 }
203
204 .frmx-align-items-center {
205 align-items: center;
206 }
207
208 .frmx-align-items-baseline {
209 align-items: baseline;
210 }
211
212 .frmx-align-items-stretch {
213 align-items: stretch;
214 }
215
216 .frmx-align-self-start {
217 align-self: flex-start;
218 }
219
220 .frmx-align-self-end {
221 align-self: flex-end;
222 }
223
224 .frmx-align-self-center {
225 align-self: center;
226 }
227
228 .frmx-align-self-baseline {
229 align-self: baseline;
230 }
231
232 .frmx-align-self-stretch {
233 align-self: stretch;
234 }
235
236 // Display utilities
237 .frmx-d-none {
238 display: none;
239 }
240
241 .frmx-d-block {
242 display: block;
243 }
244
245 .frmx-d-flex {
246 display: flex;
247 }
248
249 .frmx-d-inline-flex {
250 display: inline-flex;
251 }
252
253 .frmx-d-grid {
254 display: grid;
255 }
256
257 // Responsive display utilities
258 @each $breakpoint, $width in $frmx-breakpoints {
259 @media (min-width: $width) {
260 .frmx-d-#{$breakpoint}-none {
261 display: none;
262 }
263
264 .frmx-d-#{$breakpoint}-block {
265 display: block;
266 }
267
268 .frmx-d-#{$breakpoint}-flex {
269 display: flex;
270 }
271
272 .frmx-d-#{$breakpoint}-inline-flex {
273 display: inline-flex;
274 }
275
276 .frmx-d-#{$breakpoint}-grid {
277 display: grid;
278 }
279 }
280 }
281
282 // Gap utilities
283 .frmx-gap-0 {
284 gap: 0;
285 }
286
287 .frmx-gap-1 {
288 gap: 0.25rem;
289 }
290
291 .frmx-gap-2 {
292 gap: 0.5rem;
293 }
294
295 .frmx-gap-3 {
296 gap: 1rem;
297 }
298
299 .frmx-gap-4 {
300 gap: 1.5rem;
301 }
302
303 .frmx-gap-5 {
304 gap: 3rem;
305 }
306
307 // Flex wrap
308 .frmx-flex-wrap {
309 flex-wrap: wrap;
310 }
311
312 .frmx-flex-nowrap {
313 flex-wrap: nowrap;
314 }
315
316 .frmx-flex-wrap-reverse {
317 flex-wrap: wrap-reverse;
318 }
319
320 // Flex direction
321 .frmx-flex-row {
322 flex-direction: row;
323 }
324
325 .frmx-flex-row-reverse {
326 flex-direction: row-reverse;
327 }
328
329 .frmx-flex-column {
330 flex-direction: column;
331 }
332
333 .frmx-flex-column-reverse {
334 flex-direction: column-reverse;
335 }
336
337 // Flex grow/shrink
338 .frmx-flex-grow-0 {
339 flex-grow: 0;
340 }
341
342 .frmx-flex-grow-1 {
343 flex-grow: 1;
344 }
345
346 .frmx-flex-shrink-0 {
347 flex-shrink: 0;
348 }
349
350 .frmx-flex-shrink-1 {
351 flex-shrink: 1;
352 }
353
354 // ============================================
355 // Spacing Utilities (Margin & Padding)
356 // ============================================
357
358 // Spacing scale
359 $frmx-spacers: (
360 0: 0,
361 1: 0.25rem,
362 2: 0.5rem,
363 3: 1rem,
364 4: 1.5rem,
365 5: 3rem
366 );
367
368 // Spacing properties map
369 $frmx-spacing-properties: (
370 m: margin,
371 p: padding
372 );
373
374 // Spacing directions map
375 $frmx-spacing-directions: (
376 t: top,
377 b: bottom,
378 s: left,
379 e: right
380 );
381
382 // Generate base spacing utilities (no breakpoint)
383 @each $prop-short, $prop in $frmx-spacing-properties {
384 @each $size, $value in $frmx-spacers {
385
386 // All sides: frmx-m-0, frmx-p-1, etc.
387 .frmx-#{$prop-short}-#{$size} {
388 #{$prop}: $value !important;
389 }
390
391 // X axis (left & right): frmx-mx-0, frmx-px-1, etc.
392 .frmx-#{$prop-short}x-#{$size} {
393 #{$prop}-left: $value !important;
394 #{$prop}-right: $value !important;
395 }
396
397 // Y axis (top & bottom): frmx-my-0, frmx-py-1, etc.
398 .frmx-#{$prop-short}y-#{$size} {
399 #{$prop}-top: $value !important;
400 #{$prop}-bottom: $value !important;
401 }
402
403 // Individual directions: frmx-mt-0, frmx-pb-1, etc.
404 @each $dir-short, $dir in $frmx-spacing-directions {
405 .frmx-#{$prop-short}#{$dir-short}-#{$size} {
406 #{$prop}-#{$dir}: $value !important;
407 }
408 }
409 }
410 }
411
412 // Auto margin utilities
413 .frmx-m-auto {
414 margin: auto !important;
415 }
416
417 .frmx-mx-auto {
418 margin-left: auto !important;
419 margin-right: auto !important;
420 }
421
422 .frmx-my-auto {
423 margin-top: auto !important;
424 margin-bottom: auto !important;
425 }
426
427 .frmx-mt-auto {
428 margin-top: auto !important;
429 }
430
431 .frmx-mb-auto {
432 margin-bottom: auto !important;
433 }
434
435 .frmx-ms-auto {
436 margin-left: auto !important;
437 }
438
439 .frmx-me-auto {
440 margin-right: auto !important;
441 }
442
443 // Generate responsive spacing utilities
444 @each $breakpoint, $width in $frmx-breakpoints {
445 @media (min-width: $width) {
446 @each $prop-short, $prop in $frmx-spacing-properties {
447 @each $size, $value in $frmx-spacers {
448
449 // All sides: frmx-m-sm-0, frmx-p-md-1, etc.
450 .frmx-#{$prop-short}-#{$breakpoint}-#{$size} {
451 #{$prop}: $value !important;
452 }
453
454 // X axis: frmx-mx-sm-0, frmx-px-md-1, etc.
455 .frmx-#{$prop-short}x-#{$breakpoint}-#{$size} {
456 #{$prop}-left: $value !important;
457 #{$prop}-right: $value !important;
458 }
459
460 // Y axis: frmx-my-sm-0, frmx-py-md-1, etc.
461 .frmx-#{$prop-short}y-#{$breakpoint}-#{$size} {
462 #{$prop}-top: $value !important;
463 #{$prop}-bottom: $value !important;
464 }
465
466 // Individual directions: frmx-mt-sm-0, frmx-pb-md-1, etc.
467 @each $dir-short, $dir in $frmx-spacing-directions {
468 .frmx-#{$prop-short}#{$dir-short}-#{$breakpoint}-#{$size} {
469 #{$prop}-#{$dir}: $value !important;
470 }
471 }
472 }
473 }
474
475 // Responsive auto margins
476 .frmx-m-#{$breakpoint}-auto {
477 margin: auto !important;
478 }
479
480 .frmx-mx-#{$breakpoint}-auto {
481 margin-left: auto !important;
482 margin-right: auto !important;
483 }
484
485 .frmx-my-#{$breakpoint}-auto {
486 margin-top: auto !important;
487 margin-bottom: auto !important;
488 }
489
490 .frmx-mt-#{$breakpoint}-auto {
491 margin-top: auto !important;
492 }
493
494 .frmx-mb-#{$breakpoint}-auto {
495 margin-bottom: auto !important;
496 }
497
498 .frmx-ms-#{$breakpoint}-auto {
499 margin-left: auto !important;
500 }
501
502 .frmx-me-#{$breakpoint}-auto {
503 margin-right: auto !important;
504 }
505 }
506 }
507
508 // ============================================
509 // Shadow Utilities
510 // ============================================
511
512 .frmx-shadow-none {
513 box-shadow: none !important;
514 }
515
516 .frmx-shadow-sm {
517 box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
518 }
519
520 .frmx-shadow {
521 box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
522 }
523
524 .frmx-shadow-lg {
525 box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
526 }
527
528 // Responsive shadow utilities
529 @each $breakpoint, $width in $frmx-breakpoints {
530 @media (min-width: $width) {
531 .frmx-shadow-#{$breakpoint}-none {
532 box-shadow: none !important;
533 }
534
535 .frmx-shadow-#{$breakpoint}-sm {
536 box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
537 }
538
539 .frmx-shadow-#{$breakpoint} {
540 box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
541 }
542
543 .frmx-shadow-#{$breakpoint}-lg {
544 box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
545 }
546 }
547 }
548
549 // ============================================
550 // Text Utilities
551 // ============================================
552
553 .frmx-text-center {
554 text-align: center !important;
555 }
556
557 .frmx-text-start {
558 text-align: left !important;
559 }
560
561 .frmx-text-end {
562 text-align: right !important;
563 }
564
565 // Responsive text alignment
566 @each $breakpoint, $width in $frmx-breakpoints {
567 @media (min-width: $width) {
568 .frmx-text-#{$breakpoint}-center {
569 text-align: center !important;
570 }
571
572 .frmx-text-#{$breakpoint}-start {
573 text-align: left !important;
574 }
575
576 .frmx-text-#{$breakpoint}-end {
577 text-align: right !important;
578 }
579 }
580 }
581
582 // ============================================
583 // Row Gap (g-*) Utilities for Grid
584 // ============================================
585
586 // Row gap classes for frmx-row
587 .frmx-g-0 {
588 --frmx-gutter-x: 0;
589 --frmx-gutter-y: 0;
590 }
591
592 .frmx-g-1 {
593 --frmx-gutter-x: 0.25rem;
594 --frmx-gutter-y: 0.25rem;
595 }
596
597 .frmx-g-2 {
598 --frmx-gutter-x: 0.5rem;
599 --frmx-gutter-y: 0.5rem;
600 }
601
602 .frmx-g-3 {
603 --frmx-gutter-x: 1rem;
604 --frmx-gutter-y: 1rem;
605 }
606
607 .frmx-g-4 {
608 --frmx-gutter-x: 1.5rem;
609 --frmx-gutter-y: 1.5rem;
610 }
611
612 .frmx-g-5 {
613 --frmx-gutter-x: 3rem;
614 --frmx-gutter-y: 3rem;
615 }
616
617 // Apply gutter to row and columns
618 .frmx-row[class*="frmx-g-"]*="frmx-g-""] {
619 margin-right: calc(var(--frmx-gutter-x) / -2);
620 margin-left: calc(var(--frmx-gutter-x) / -2);
621 margin-top: calc(var(--frmx-gutter-y) * -1);
622
623 >[class*="frmx-col"]*="frmx-col""] {
624 padding-right: calc(var(--frmx-gutter-x) / 2);
625 padding-left: calc(var(--frmx-gutter-x) / 2);
626 margin-top: var(--frmx-gutter-y);
627 }
628 }
629
630 // ============================================
631 // Custom Spacing (mt-70 etc.)
632 // ============================================
633
634 .frmx-mt-70 {
635 margin-top: 70px !important;
636 }
637
638 // ============================================
639 // Position Utilities
640 // ============================================
641
642 .frmx-position-static {
643 position: static !important;
644 }
645
646 .frmx-position-relative {
647 position: relative !important;
648 }
649
650 .frmx-position-absolute {
651 position: absolute !important;
652 }
653
654 .frmx-position-fixed {
655 position: fixed !important;
656 }
657
658 .frmx-position-sticky {
659 position: sticky !important;
660 }
661
662 .frmx-list-unstyled {
663 list-style: none !important;
664 padding: 0 !important;
665 }
666
667 .frmx-dropdown-item {
668 display: block;
669 width: 100%;
670 padding: .25rem 0.5rem;
671 clear: both;
672 font-weight: 400;
673 color: #212529;
674 text-align: inherit;
675 text-decoration: none;
676 white-space: nowrap;
677 background-color: transparent;
678 border: 0
679 }
680
681 .frmx-dropdown-item:focus,.frmx-dropdown-item:hover {
682 color: #1e2125;
683 background-color: #e9ecef
684 }
685
686 .frmx-dropdown-item.active,.frmx-dropdown-item:active {
687 color: #fff;
688 text-decoration: none;
689 background-color: #0d6efd
690 }
691
692 .frmx-dropdown-item.disabled,.frmx-dropdown-item:disabled {
693 color: #adb5bd;
694 pointer-events: none;
695 background-color: transparent
696 }
697
698 .dropdown-menu.show {
699 display: block
700 }