]> BookStack Code Mirror - bookstack/blob - resources/assets/sass/_grid.scss
Finished migrated from icon-font to SVG
[bookstack] / resources / assets / sass / _grid.scss
1
2 /** Flexbox styling rules **/
3 body.flexbox {
4   display: flex;
5   flex-direction: column;
6   align-items: stretch;
7   height: 100%;
8   min-height: 100%;
9   max-height: 100%;
10   overflow: hidden;
11   #content {
12     flex: 1;
13     display: flex;
14     min-height: 0;
15   }
16 }
17
18 .flex-fill {
19   display: flex;
20   align-items: stretch;
21   min-height: 0;
22   max-width: 100%;
23   position: relative;
24   &.rows {
25     flex-direction: row;
26   }
27   &.columns {
28     flex-direction: column;
29   }
30 }
31
32 .flex {
33   min-height: 0;
34   flex: 1;
35 }
36
37 .flex.scroll {
38   //overflow-y: auto;
39   display: flex;
40   &.sidebar {
41     margin-right: -14px;
42   }
43 }
44 .flex.scroll .scroll-body {
45   overflow-y: scroll;
46   flex: 1;
47 }
48
49 .flex-child > div {
50   flex: 1;
51 }
52
53 .flex.sidebar {
54   flex: 1;
55   background-color: #F2F2F2;
56   max-width: 360px;
57   min-height: 90vh;
58 }
59 .flex.sidebar + .flex.content {
60   flex: 3;
61   background-color: #FFFFFF;
62   padding: 0 $-l;
63   border-left: 1px solid #DDD;
64   max-width: 100%;
65 }
66 .flex.sidebar .sidebar-toggle {
67   display: none;
68 }
69
70 @include smaller-than($xl) {
71   body.sidebar-layout {
72     padding-left: 30px;
73   }
74   .flex.sidebar {
75     position: fixed;
76     top: 0;
77     left: 0;
78     bottom: 0;
79     z-index: 100;
80     padding-right: 30px;
81     width: 360px;
82     box-shadow: none;
83     transform: translate3d(-330px, 0, 0);
84     transition: transform ease-in-out 120ms;
85     display: flex;
86     flex-direction: column;
87   }
88   .flex.sidebar.open {
89     box-shadow: 1px 2px 2px 1px rgba(0,0,0,.10);
90     transform: translate3d(0, 0, 0);
91     .sidebar-toggle i {
92       transform: rotate(180deg);
93     }
94   }
95   .flex.sidebar .sidebar-toggle {
96     display: block;
97     position: absolute;
98     opacity: 0.9;
99     right: 0;
100     top: 0;
101     bottom: 0;
102     width: 30px;
103     fill: #666;
104     font-size: 20px;
105     vertical-align: middle;
106     text-align: center;
107     border: 1px solid #DDD;
108     border-top: 1px solid #BBB;
109     padding-top: $-m;
110     cursor: pointer;
111     svg {
112       opacity: 0.5;
113       transition: all ease-in-out 120ms;
114       margin: 0;
115     }
116     &:hover i {
117       opacity: 1;
118     }
119   }
120   .sidebar .scroll-body {
121     flex: 1;
122     overflow-y: scroll;
123   }
124   #sidebar .scroll-body.fixed {
125     width: auto !important;
126   }
127 }
128
129 @include larger-than($xl) {
130   #sidebar .scroll-body.fixed {
131     z-index: 5;
132     position: fixed;
133     top: 0;
134     padding-right: $-m;
135     width: 30%;
136     left: 0;
137     height: 100%;
138     overflow-y: auto;
139     -ms-overflow-style: none;
140     //background-color: $primary-faded;
141     border-left: 1px solid #DDD;
142     &::-webkit-scrollbar { width: 0 !important }
143   }
144 }
145
146
147 /** Rules for all columns */
148 div[class^="col-"] img {
149   max-width: 100%;
150 }
151
152 .container {
153   max-width: $max-width;
154   margin-left: auto;
155   margin-right: auto;
156   padding-left: $-m;
157   padding-right: $-m;
158   &.fluid {
159     max-width: 100%;
160   }
161   &.medium {
162     max-width: 992px;
163   }
164   &.small {
165     max-width: 840px;
166   }
167   &.nopad {
168     padding-left: 0;
169     padding-right: 0;
170   }
171 }
172
173 .row {
174   margin-left: -$-m;
175   margin-right: -$-m;
176 }
177
178 .grid {
179   display: grid;
180   grid-column-gap: $-l;
181   grid-row-gap: $-l;
182   &.third {
183     grid-template-columns: 1fr 1fr 1fr;
184   }
185 }
186
187 .grid-card {
188   display: flex;
189   flex-direction: column;
190   border: 1px solid #ddd;
191   min-width: 100px;
192   .grid-card-content {
193     flex: 1;
194   }
195   .grid-card-content, .grid-card-footer {
196     padding: $-l;
197   }
198   .grid-card-content + .grid-card-footer {
199     padding-top: 0;
200   }
201 }
202
203 @include smaller-than($m) {
204   .grid.third {
205     grid-template-columns: 1fr 1fr;
206   }
207 }
208
209 @include smaller-than($s) {
210   .grid.third {
211     grid-template-columns: 1fr;
212   }
213 }
214
215 .float {
216   float: left;
217   &.right {
218     float: right;
219   }
220 }
221
222 .block {
223   display: block;
224   position: relative;
225 }
226
227 .inline {
228   display: inline;
229 }
230
231 .block.inline {
232   display: inline-block;
233 }
234
235 .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
236   position: relative;
237   min-height: 1px;
238   padding-left: $-m;
239   padding-right: $-m;
240 }
241 .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
242   float: left;
243 }
244 .col-xs-12 {
245   width: 100%;
246 }
247 .col-xs-11 {
248   width: 91.66666667%;
249 }
250 .col-xs-10 {
251   width: 83.33333333%;
252 }
253 .col-xs-9 {
254   width: 75%;
255 }
256 .col-xs-8 {
257   width: 66.66666667%;
258 }
259 .col-xs-7 {
260   width: 58.33333333%;
261 }
262 .col-xs-6 {
263   width: 50%;
264 }
265 .col-xs-5 {
266   width: 41.66666667%;
267 }
268 .col-xs-4 {
269   width: 33.33333333%;
270 }
271 .col-xs-3 {
272   width: 25%;
273 }
274 .col-xs-2 {
275   width: 16.66666667%;
276 }
277 .col-xs-1 {
278   width: 8.33333333%;
279 }
280 .col-xs-pull-12 {
281   right: 100%;
282 }
283 .col-xs-pull-11 {
284   right: 91.66666667%;
285 }
286 .col-xs-pull-10 {
287   right: 83.33333333%;
288 }
289 .col-xs-pull-9 {
290   right: 75%;
291 }
292 .col-xs-pull-8 {
293   right: 66.66666667%;
294 }
295 .col-xs-pull-7 {
296   right: 58.33333333%;
297 }
298 .col-xs-pull-6 {
299   right: 50%;
300 }
301 .col-xs-pull-5 {
302   right: 41.66666667%;
303 }
304 .col-xs-pull-4 {
305   right: 33.33333333%;
306 }
307 .col-xs-pull-3 {
308   right: 25%;
309 }
310 .col-xs-pull-2 {
311   right: 16.66666667%;
312 }
313 .col-xs-pull-1 {
314   right: 8.33333333%;
315 }
316 .col-xs-pull-0 {
317   right: auto;
318 }
319 .col-xs-push-12 {
320   left: 100%;
321 }
322 .col-xs-push-11 {
323   left: 91.66666667%;
324 }
325 .col-xs-push-10 {
326   left: 83.33333333%;
327 }
328 .col-xs-push-9 {
329   left: 75%;
330 }
331 .col-xs-push-8 {
332   left: 66.66666667%;
333 }
334 .col-xs-push-7 {
335   left: 58.33333333%;
336 }
337 .col-xs-push-6 {
338   left: 50%;
339 }
340 .col-xs-push-5 {
341   left: 41.66666667%;
342 }
343 .col-xs-push-4 {
344   left: 33.33333333%;
345 }
346 .col-xs-push-3 {
347   left: 25%;
348 }
349 .col-xs-push-2 {
350   left: 16.66666667%;
351 }
352 .col-xs-push-1 {
353   left: 8.33333333%;
354 }
355 .col-xs-push-0 {
356   left: auto;
357 }
358 .col-xs-offset-12 {
359   margin-left: 100%;
360 }
361 .col-xs-offset-11 {
362   margin-left: 91.66666667%;
363 }
364 .col-xs-offset-10 {
365   margin-left: 83.33333333%;
366 }
367 .col-xs-offset-9 {
368   margin-left: 75%;
369 }
370 .col-xs-offset-8 {
371   margin-left: 66.66666667%;
372 }
373 .col-xs-offset-7 {
374   margin-left: 58.33333333%;
375 }
376 .col-xs-offset-6 {
377   margin-left: 50%;
378 }
379 .col-xs-offset-5 {
380   margin-left: 41.66666667%;
381 }
382 .col-xs-offset-4 {
383   margin-left: 33.33333333%;
384 }
385 .col-xs-offset-3 {
386   margin-left: 25%;
387 }
388 .col-xs-offset-2 {
389   margin-left: 16.66666667%;
390 }
391 .col-xs-offset-1 {
392   margin-left: 8.33333333%;
393 }
394 .col-xs-offset-0 {
395   margin-left: 0%;
396 }
397 @media (min-width: $screen-sm) {
398   .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
399     float: left;
400   }
401   .col-sm-12 {
402     width: 100%;
403   }
404   .col-sm-11 {
405     width: 91.66666667%;
406   }
407   .col-sm-10 {
408     width: 83.33333333%;
409   }
410   .col-sm-9 {
411     width: 75%;
412   }
413   .col-sm-8 {
414     width: 66.66666667%;
415   }
416   .col-sm-7 {
417     width: 58.33333333%;
418   }
419   .col-sm-6 {
420     width: 50%;
421   }
422   .col-sm-5 {
423     width: 41.66666667%;
424   }
425   .col-sm-4 {
426     width: 33.33333333%;
427   }
428   .col-sm-3 {
429     width: 25%;
430   }
431   .col-sm-2 {
432     width: 16.66666667%;
433   }
434   .col-sm-1 {
435     width: 8.33333333%;
436   }
437   .col-sm-pull-12 {
438     right: 100%;
439   }
440   .col-sm-pull-11 {
441     right: 91.66666667%;
442   }
443   .col-sm-pull-10 {
444     right: 83.33333333%;
445   }
446   .col-sm-pull-9 {
447     right: 75%;
448   }
449   .col-sm-pull-8 {
450     right: 66.66666667%;
451   }
452   .col-sm-pull-7 {
453     right: 58.33333333%;
454   }
455   .col-sm-pull-6 {
456     right: 50%;
457   }
458   .col-sm-pull-5 {
459     right: 41.66666667%;
460   }
461   .col-sm-pull-4 {
462     right: 33.33333333%;
463   }
464   .col-sm-pull-3 {
465     right: 25%;
466   }
467   .col-sm-pull-2 {
468     right: 16.66666667%;
469   }
470   .col-sm-pull-1 {
471     right: 8.33333333%;
472   }
473   .col-sm-pull-0 {
474     right: auto;
475   }
476   .col-sm-push-12 {
477     left: 100%;
478   }
479   .col-sm-push-11 {
480     left: 91.66666667%;
481   }
482   .col-sm-push-10 {
483     left: 83.33333333%;
484   }
485   .col-sm-push-9 {
486     left: 75%;
487   }
488   .col-sm-push-8 {
489     left: 66.66666667%;
490   }
491   .col-sm-push-7 {
492     left: 58.33333333%;
493   }
494   .col-sm-push-6 {
495     left: 50%;
496   }
497   .col-sm-push-5 {
498     left: 41.66666667%;
499   }
500   .col-sm-push-4 {
501     left: 33.33333333%;
502   }
503   .col-sm-push-3 {
504     left: 25%;
505   }
506   .col-sm-push-2 {
507     left: 16.66666667%;
508   }
509   .col-sm-push-1 {
510     left: 8.33333333%;
511   }
512   .col-sm-push-0 {
513     left: auto;
514   }
515   .col-sm-offset-12 {
516     margin-left: 100%;
517   }
518   .col-sm-offset-11 {
519     margin-left: 91.66666667%;
520   }
521   .col-sm-offset-10 {
522     margin-left: 83.33333333%;
523   }
524   .col-sm-offset-9 {
525     margin-left: 75%;
526   }
527   .col-sm-offset-8 {
528     margin-left: 66.66666667%;
529   }
530   .col-sm-offset-7 {
531     margin-left: 58.33333333%;
532   }
533   .col-sm-offset-6 {
534     margin-left: 50%;
535   }
536   .col-sm-offset-5 {
537     margin-left: 41.66666667%;
538   }
539   .col-sm-offset-4 {
540     margin-left: 33.33333333%;
541   }
542   .col-sm-offset-3 {
543     margin-left: 25%;
544   }
545   .col-sm-offset-2 {
546     margin-left: 16.66666667%;
547   }
548   .col-sm-offset-1 {
549     margin-left: 8.33333333%;
550   }
551   .col-sm-offset-0 {
552     margin-left: 0%;
553   }
554 }
555 @media (min-width: $screen-md) {
556   .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
557     float: left;
558   }
559   .col-md-12 {
560     width: 100%;
561   }
562   .col-md-11 {
563     width: 91.66666667%;
564   }
565   .col-md-10 {
566     width: 83.33333333%;
567   }
568   .col-md-9 {
569     width: 75%;
570   }
571   .col-md-8 {
572     width: 66.66666667%;
573   }
574   .col-md-7 {
575     width: 58.33333333%;
576   }
577   .col-md-6 {
578     width: 50%;
579   }
580   .col-md-5 {
581     width: 41.66666667%;
582   }
583   .col-md-4 {
584     width: 33.33333333%;
585   }
586   .col-md-3 {
587     width: 25%;
588   }
589   .col-md-2 {
590     width: 16.66666667%;
591   }
592   .col-md-1 {
593     width: 8.33333333%;
594   }
595   .col-md-pull-12 {
596     right: 100%;
597   }
598   .col-md-pull-11 {
599     right: 91.66666667%;
600   }
601   .col-md-pull-10 {
602     right: 83.33333333%;
603   }
604   .col-md-pull-9 {
605     right: 75%;
606   }
607   .col-md-pull-8 {
608     right: 66.66666667%;
609   }
610   .col-md-pull-7 {
611     right: 58.33333333%;
612   }
613   .col-md-pull-6 {
614     right: 50%;
615   }
616   .col-md-pull-5 {
617     right: 41.66666667%;
618   }
619   .col-md-pull-4 {
620     right: 33.33333333%;
621   }
622   .col-md-pull-3 {
623     right: 25%;
624   }
625   .col-md-pull-2 {
626     right: 16.66666667%;
627   }
628   .col-md-pull-1 {
629     right: 8.33333333%;
630   }
631   .col-md-pull-0 {
632     right: auto;
633   }
634   .col-md-push-12 {
635     left: 100%;
636   }
637   .col-md-push-11 {
638     left: 91.66666667%;
639   }
640   .col-md-push-10 {
641     left: 83.33333333%;
642   }
643   .col-md-push-9 {
644     left: 75%;
645   }
646   .col-md-push-8 {
647     left: 66.66666667%;
648   }
649   .col-md-push-7 {
650     left: 58.33333333%;
651   }
652   .col-md-push-6 {
653     left: 50%;
654   }
655   .col-md-push-5 {
656     left: 41.66666667%;
657   }
658   .col-md-push-4 {
659     left: 33.33333333%;
660   }
661   .col-md-push-3 {
662     left: 25%;
663   }
664   .col-md-push-2 {
665     left: 16.66666667%;
666   }
667   .col-md-push-1 {
668     left: 8.33333333%;
669   }
670   .col-md-push-0 {
671     left: auto;
672   }
673   .col-md-offset-12 {
674     margin-left: 100%;
675   }
676   .col-md-offset-11 {
677     margin-left: 91.66666667%;
678   }
679   .col-md-offset-10 {
680     margin-left: 83.33333333%;
681   }
682   .col-md-offset-9 {
683     margin-left: 75%;
684   }
685   .col-md-offset-8 {
686     margin-left: 66.66666667%;
687   }
688   .col-md-offset-7 {
689     margin-left: 58.33333333%;
690   }
691   .col-md-offset-6 {
692     margin-left: 50%;
693   }
694   .col-md-offset-5 {
695     margin-left: 41.66666667%;
696   }
697   .col-md-offset-4 {
698     margin-left: 33.33333333%;
699   }
700   .col-md-offset-3 {
701     margin-left: 25%;
702   }
703   .col-md-offset-2 {
704     margin-left: 16.66666667%;
705   }
706   .col-md-offset-1 {
707     margin-left: 8.33333333%;
708   }
709   .col-md-offset-0 {
710     margin-left: 0%;
711   }
712 }
713 @media (min-width: $screen-lg) {
714   .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
715     float: left;
716   }
717   .col-lg-12 {
718     width: 100%;
719   }
720   .col-lg-11 {
721     width: 91.66666667%;
722   }
723   .col-lg-10 {
724     width: 83.33333333%;
725   }
726   .col-lg-9 {
727     width: 75%;
728   }
729   .col-lg-8 {
730     width: 66.66666667%;
731   }
732   .col-lg-7 {
733     width: 58.33333333%;
734   }
735   .col-lg-6 {
736     width: 50%;
737   }
738   .col-lg-5 {
739     width: 41.66666667%;
740   }
741   .col-lg-4 {
742     width: 33.33333333%;
743   }
744   .col-lg-3 {
745     width: 25%;
746   }
747   .col-lg-2 {
748     width: 16.66666667%;
749   }
750   .col-lg-1 {
751     width: 8.33333333%;
752   }
753   .col-lg-pull-12 {
754     right: 100%;
755   }
756   .col-lg-pull-11 {
757     right: 91.66666667%;
758   }
759   .col-lg-pull-10 {
760     right: 83.33333333%;
761   }
762   .col-lg-pull-9 {
763     right: 75%;
764   }
765   .col-lg-pull-8 {
766     right: 66.66666667%;
767   }
768   .col-lg-pull-7 {
769     right: 58.33333333%;
770   }
771   .col-lg-pull-6 {
772     right: 50%;
773   }
774   .col-lg-pull-5 {
775     right: 41.66666667%;
776   }
777   .col-lg-pull-4 {
778     right: 33.33333333%;
779   }
780   .col-lg-pull-3 {
781     right: 25%;
782   }
783   .col-lg-pull-2 {
784     right: 16.66666667%;
785   }
786   .col-lg-pull-1 {
787     right: 8.33333333%;
788   }
789   .col-lg-pull-0 {
790     right: auto;
791   }
792   .col-lg-push-12 {
793     left: 100%;
794   }
795   .col-lg-push-11 {
796     left: 91.66666667%;
797   }
798   .col-lg-push-10 {
799     left: 83.33333333%;
800   }
801   .col-lg-push-9 {
802     left: 75%;
803   }
804   .col-lg-push-8 {
805     left: 66.66666667%;
806   }
807   .col-lg-push-7 {
808     left: 58.33333333%;
809   }
810   .col-lg-push-6 {
811     left: 50%;
812   }
813   .col-lg-push-5 {
814     left: 41.66666667%;
815   }
816   .col-lg-push-4 {
817     left: 33.33333333%;
818   }
819   .col-lg-push-3 {
820     left: 25%;
821   }
822   .col-lg-push-2 {
823     left: 16.66666667%;
824   }
825   .col-lg-push-1 {
826     left: 8.33333333%;
827   }
828   .col-lg-push-0 {
829     left: auto;
830   }
831   .col-lg-offset-12 {
832     margin-left: 100%;
833   }
834   .col-lg-offset-11 {
835     margin-left: 91.66666667%;
836   }
837   .col-lg-offset-10 {
838     margin-left: 83.33333333%;
839   }
840   .col-lg-offset-9 {
841     margin-left: 75%;
842   }
843   .col-lg-offset-8 {
844     margin-left: 66.66666667%;
845   }
846   .col-lg-offset-7 {
847     margin-left: 58.33333333%;
848   }
849   .col-lg-offset-6 {
850     margin-left: 50%;
851   }
852   .col-lg-offset-5 {
853     margin-left: 41.66666667%;
854   }
855   .col-lg-offset-4 {
856     margin-left: 33.33333333%;
857   }
858   .col-lg-offset-3 {
859     margin-left: 25%;
860   }
861   .col-lg-offset-2 {
862     margin-left: 16.66666667%;
863   }
864   .col-lg-offset-1 {
865     margin-left: 8.33333333%;
866   }
867   .col-lg-offset-0 {
868     margin-left: 0%;
869   }
870 }
871 .clearfix:before,
872 .clearfix:after,
873 .container:before,
874 .container:after,
875 .container-fluid:before,
876 .container-fluid:after,
877 .row:before,
878 .row:after {
879   content: " ";
880   display: table;
881 }
882 .clearfix:after,
883 .container:after,
884 .container-fluid:after,
885 .row:after {
886   clear: both;
887 }
888 .center-block {
889   display: block;
890   margin-left: auto;
891   margin-right: auto;
892 }