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