diff --git a/README.md b/README.md
index 3298c6d..6ad8bc2 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,604 @@
-# CSS Utilities
+# CSS Utilities
## 1. Responisve Flex Grid
A responsive Flex box based grid Layouting module with SCSS and CSS3
## 2. Responsive 2 Dimensional Grid
+
+_______
+
+```css
+
+```
+
+```html
+
+
+
+
The sn-flex class enables a flex context for all its direct children..
+
+
+
+
+ <div class="sn-flex">
+ <div></div>
+ <div></div>
+ </div>
+
+ <div class="sn-flex">
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+ <div class="sn-flex">
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+
The flex- class to create columns i.e, to create 2 column use class column flex-2 for 3 column flex-3
+
+
+ <div class="sn-flex flex-3">
+ <div></div>
+ <div></div>
+ </div>
+
+ <div class="sn-flex flex-4">
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+
The flex-stack-mobile class to stack/Flex Overwrite all child element in mobile view
+
+
+ <div class="sn-flex flex-stack-mobile">
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
The grid-flex-overwrite class to stack/Flex Overwrite columns, for this one more class required on child
+ elemnet flex-overwrite
+
+
+ <div class="sn-flex grid-flex-overwrite flex-3">
+ <div></div>
+ <div></div>
+ <div class="flex-overwrite"></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
The item-justify class defines how the browser distributes space between and around content items along
+ the main axis of their container.
+
+ item-justify-: start | end | center | between | around;
+
+
+
+ <div class="sn-flex flex-3 item-justify-left">
+ <div></div>
+ <div></div>
+ </div>
+
+ <div class="sn-flex flex-3 item-justify-right">
+ <div></div>
+ <div></div>
+ </div>
+
+ <div class="sn-flex flex-3 item-justify-center">
+ <div ></div>
+ <div ></div>
+ </div>
+
+ <div class="sn-flex flex-3 item-justify-between">
+ <div></div>
+ <div></div>
+ </div>
+
+ <div class="sn-flex flex-3 item-justify-around">
+ <div></div>
+ <div></div>
+ </div>
+
+
+
Justify left
+
+
Justify right
+
+
Justify center
+
+
Justify between
+
+
Justify around
+
+
+
+
+
+
The item-align- class defines how the browser distributes space between and around content items along the
+ main axis of their container.
+
+ item-align-: start | end | center | between | around;
+
+
+
+ <div class="sn-flex flex-3 item-align-start">
+ <div></div>
+ <div></div>
+ </div>
+
+ <div class="sn-flex flex-3 item-align-end">
+ <div></div>
+ <div></div>
+ </div>
+
+ <div class="sn-flex flex-3 item-align-center">
+ <div></div>
+ <div></div>
+ </div>
+ <div class="sn-flex flex-3 item-align-between">
+ <div></div>
+ <div></div>
+ </div>
+
+ <div class="sn-flex flex-3 item-align-around">
+ <div></div>
+ <div></div>
+ </div>
+
+
+
Align start
+
+
Align end
+
+
Align center
+
+
Align between
+
+
Align around
+
+
+
+
+
+
+
+ The class flex-1-1-2 use to get a three various-width columns starting at mobile and scaling to desktops
+
1 column in mobile/tablet and 2 column in deskop
+
+
+
+ <div class="sn-flex flex-1-1-2">
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+ The class flex-1-1-3 use to get a three various-width columns starting at mobile and scaling to desktops
+
1 column in mobile/tablet and 3 column in deskop
+
+
+
+ <div class="sn-flex flex-1-1-3">
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+ The class flex-1-2-2 use to get a three various-width columns starting at mobile and scaling to desktops
+
1 column in mobile and 2 column in tablet/deskop
+
+
+
+ <div class="sn-flex flex-1-2-2">
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+ The class flex-1-2-3 use to get a three various-width columns starting at mobile and scaling to desktops
+
1 column in mobile, 2 column in tablet and 3 column in deskop
+
+
+
+ <div class="sn-flex flex-1-2-3">
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+ The class flex-1-3-3 use to get a three various-width columns starting at mobile and scaling to desktops
+
1 column in mobile and 3 column in tablet/deskop
+
+
+
+ <div class="sn-flex flex-1-3-3">
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+ The class flex-1-1-4 use to get a three various-width columns starting at mobile and scaling to desktops
+
1 column in mobile/tablet and 4 column in deskop
+
+
+
+ <div class="sn-flex flex-1-1-4">
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+ The class flex-1-2-4 use to get a three various-width columns starting at mobile and scaling to desktops
+
1 column in mobile, 2 column in tablet and 4 column in deskop
+
+
+
+ <div class="sn-flex flex-1-2-4">
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+ The class flex-1-3-4 use to get a three various-width columns starting at mobile and scaling to desktops
+
1 column in mobile, 3 column in tablet and 4 column in deskop
+
+
+
+ <div class="sn-flex flex-1-3-4">
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+ The class flex-1-4-4 use to get a three various-width columns starting at mobile and scaling to desktops
+
1 column in mobile and 4 column in tablet/deskop
+
+
+
+ <div class="sn-flex flex-1-4-4">
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ <div></div>
+ </div>
+
+
+
+
+
+
+
+
+
+
Use flex-none class to make container inline(width according to the content)
+
+
+ <div class="sn-flex flex-none">
+ <div>Component A</div>
+ <div>Component B</div>
+ </div>
+
+
+
+
Component A
+
Component B
+
+
+
+
+
+
+
+
The grow class specifies how much the item will grow relative to the rest of the flexible items inside the
+ same container.
+
+
+ <div class="sn-flex grow">
+ <div>Col 1</div>
+ <div class="grow-2">Col 2</div>
+ <div>Col 3</div>
+ <div class="grow-2">Col 4</div>
+ <div>Col 2</div>
+ </div>
+
+
+
+
Col 1
+
Col 2
+
Col 3
+
Col 4
+
Col 2
+
+
+
+```
diff --git a/at_flex_grid/.DS_Store b/at_flex_grid/.DS_Store
new file mode 100644
index 0000000..f3f819d
Binary files /dev/null and b/at_flex_grid/.DS_Store differ
diff --git a/at_flex_grid/less/at_flex_grid.less b/at_flex_grid/less/at_flex_grid.less
new file mode 100644
index 0000000..af48661
--- /dev/null
+++ b/at_flex_grid/less/at_flex_grid.less
@@ -0,0 +1,129 @@
+@horizontal-spacing-section :0; // horizontal spacing between elements side by side, e.g. between two buttons on the same row
+@vertical-spacing-section :20px; // vertical spacing between elements side by side, e.g. between two buttons on the same row
+.sn-flex {
+ display: flex;
+ >* {
+ flex: 1 1 auto;
+ margin-left: @horizontal-spacing-section;
+ margin-bottom: @vertical-spacing-section;
+ &:first-child {
+ margin-left: 0;
+ }
+ }
+ // overrite flex on samll screen
+ &.flex-stack-mobile, &.flex-1, &.flex-1-1-2, &.flex-1-2-2, &.flex-1-2-3, &.flex-1-2-4, &.flex-1-1-3, &.flex-1-3-4, &.flex-1-3-3, &.flex-1-1-4, &.flex-1-4-4 {
+ display: block;
+ > * {
+ margin-left: 0;
+ }
+ }
+ // justify-content
+ &.item-justify-left {
+ justify-content: flex-start;
+ }
+ &.item-justify-right {
+ justify-content: flex-end;
+ }
+ &.item-justify-center {
+ justify-content: center;
+ }
+ &.item-justify-between {
+ justify-content: space-between;
+ }
+ &.item-justify-around {
+ justify-content: space-around;
+ }
+ // Align Items
+ &.item-align-start {
+ align-items: flex-start;
+ }
+ &.item-align-end {
+ align-items: flex-end;
+ }
+ &.item-align-center {
+ align-items: center;
+ }
+ &.item-align-between {
+ align-items: space-between;
+ }
+ &.item-align-around {
+ align-items: space-around;
+ }
+ &.inline {
+ display: inline-flex;
+ }
+ .no-grow{
+ flex-grow: 0;
+ }
+ // overrite column in a flex layout
+ &.grid-flex-overwrite {
+ flex-wrap: wrap;
+ .flex-overwrite {
+ flex: 0 0 100%;
+ max-width: 100%;
+ margin-left: 0;
+ & + * {
+ margin-left: 0;
+ }
+ }
+ }
+ // column will expand as per the content within
+ &.flex-none {
+ >* {
+ flex: 0 0 auto;
+ }
+ }
+ &.no-vertical-margin {
+ > * {
+ &:nth-child(even),
+ &:nth-child(odd) {
+ margin-bottom: 0;
+ }
+ }
+ }
+ // no margin class
+ &.grid-flex-no-margin {
+ > * {
+ &:nth-child(even),
+ &:nth-child(odd) {
+ margin-left: 0 !important;
+ }
+ }
+ }
+ .sn-flex {
+ margin-bottom: 0;
+ }
+}
+
+// class for snflex, jc: justify-center, ac: align-center
+.sn-flex-jc-ac {
+ .sn-flex;
+ .item-justify-center;
+ .item-align-center;
+}
+
+// class for snflex, jb: justify-between, ac: align-center
+.sn-flex-jb-ac {
+ .sn-flex;
+ .item-justify-between;
+ .item-align-center;
+}
+
+// sn-flex helper classes
+.flex-stack-helper {
+ display: block;
+ > * {
+ margin-left: 0;
+ margin-bottom: @horizontal-spacing-section;
+ }
+}
+
+.flex-stack-helper-overwrite {
+ display: flex;
+ > * {
+ margin-left: @horizontal-spacing-section;
+ &:first-child {
+ margin-left: 0;
+ }
+ }
+}
diff --git a/at_flex_grid/less/at_flex_grid__lg.less b/at_flex_grid/less/at_flex_grid__lg.less
new file mode 100644
index 0000000..a9dedab
--- /dev/null
+++ b/at_flex_grid/less/at_flex_grid__lg.less
@@ -0,0 +1,4 @@
+@media (min-width: @screen-lg-min) {
+ .at_flex {
+ }
+}
diff --git a/at_flex_grid/less/at_flex_grid__md.less b/at_flex_grid/less/at_flex_grid__md.less
new file mode 100644
index 0000000..b19aaaf
--- /dev/null
+++ b/at_flex_grid/less/at_flex_grid__md.less
@@ -0,0 +1,66 @@
+@media (min-width: @screen-md-min) {
+
+ @flex-2-spacing: 0;
+ @flex-3-spacing: 0;
+ @flex-4-spacing: 0;
+ .sn-flex {
+ &.flex-1-2-3, &.flex-1-2-4 {
+ > * {
+ &:nth-child(2n+3) {
+ margin-left: @horizontal-spacing-section;
+ }
+ }
+ }
+ &.flex-1-3-4 {
+ > * {
+ &:nth-child(3n+4) {
+ margin-left: @horizontal-spacing-section;
+ }
+ }
+ }
+ &.flex-2, &.flex-1-1-2, &.flex-1-2-2 {
+ .flex-stack-helper-overwrite;
+ > * {
+ flex: 0 0 auto;
+ flex-basis: calc(~'50% - '@flex-2-spacing);
+ max-width: calc(~'50% - '@flex-2-spacing);
+ &:nth-child(2n+3) {
+ margin-left: 0;
+ }
+ }
+ }
+ &.flex-3, &.flex-1-1-3, &.flex-1-2-3 {
+ .flex-stack-helper-overwrite;
+ > * {
+ flex: 0 0 auto;
+ flex-basis: calc(~'33.3333% - '@flex-3-spacing);
+ max-width: calc(~'33.3333% - '@flex-3-spacing);
+ &:nth-child(3n+4) {
+ margin-left: 0;
+ }
+ }
+ .flex-overwrite {
+ margin-left: 0;
+ }
+ }
+ &.flex-4, &.flex-1-1-4, &.flex-1-2-4, &.flex-1-3-4, &.flex-1-4-4 {
+ .flex-stack-helper-overwrite;
+ > * {
+ flex: 0 0 auto;
+ flex-basis: calc(~'25% - '@flex-4-spacing);
+ max-width: calc(~'25% - '@flex-4-spacing);
+ &:nth-child(4n+5) {
+ margin-left: 0;
+ }
+ }
+ .flex-overwrite {
+ margin-left: 0;
+ }
+ }
+ .grow-md-4 {
+ flex-grow: 4;
+ }
+ }
+}
+
+
diff --git a/at_flex_grid/less/at_flex_grid__sm.less b/at_flex_grid/less/at_flex_grid__sm.less
new file mode 100644
index 0000000..c49187a
--- /dev/null
+++ b/at_flex_grid/less/at_flex_grid__sm.less
@@ -0,0 +1,95 @@
+@media (min-width: @screen-sm-min) {
+ @flex-2-spacing: 0;
+ @flex-3-spacing: 0;
+ @flex-4-spacing: 0;
+ .sn-flex {
+ @total-col: 12;
+ @flex-width : percentage(1/@total-col);
+ >* {
+ margin-bottom: @vertical-spacing-section;
+ margin-left: @horizontal-spacing-section;
+ &:first-child {
+ margin-left: 0;
+ }
+ }
+
+ &.flex-stack-mobile, &.flex-1, &.flex-1-1-2, &.flex-1-2-2, &.flex-1-2-3, &.flex-1-2-4, &.flex-1-1-3, &.flex-1-3-4, &.flex-1-3-3, &.flex-1-1-4, &.flex-1-4-4 {
+ display: flex;
+ flex-wrap: nowrap;
+ > * {
+ margin-left: @horizontal-spacing-section;
+ &:first-child {
+ margin-left: 0;
+ }
+ }
+ }
+ &.flex-1, &.flex-1-1-3, &.flex-2, &.flex-1-1-2, &.flex-1-2-2, &.flex-2, &.flex-1-2-3, &.flex-1-2-4, &.flex-1-3-4, &.flex-3, &.flex-1-3-4, &.flex-1-3-3, &.flex-4, &.flex-1-1-4, &.flex-1-4-4, &[class*="overflow"]{
+ flex-wrap: wrap;
+ }
+ &.flex-1, &.flex-1-1-2, &.flex-1-1-3, &.flex-1-1-4 {
+
+ margin-left: 0;
+ margin-bottom: @vertical-spacing-section;
+ }
+ &.flex-2, &.flex-1-2-2, &.flex-1-2-3, &.flex-1-2-4{
+ > * {
+ flex: 0 0 auto;
+ flex-basis: calc(~'50% - '@flex-2-spacing);
+ max-width: calc(~'50% - '@flex-2-spacing);
+ &:nth-child(2n+3) {
+ margin-left: 0;
+ }
+ }
+ }
+ &.flex-3, &.flex-1-3-4, &.flex-1-3-3 {
+ > * {
+ flex: 0 0 auto;
+ flex-basis: calc(~'33.3333% - '@flex-3-spacing);
+ max-width: calc(~'33.3333% - '@flex-3-spacing);
+ &:nth-child(3n+4) {
+ margin-left: 0;
+ }
+ }
+ }
+
+
+ &.flex-4, &.flex-1-4-4 {
+ > * {
+ flex: 0 0 auto;
+ flex-basis: calc(~'25% - '@flex-4-spacing);
+ max-width: calc(~'25% - '@flex-4-spacing);
+ &:nth-child(4n+5) {
+ margin-left: 0;
+ }
+ }
+ }
+
+
+ .grid-loop (@i) when (@i > 0) {
+ .flex-width-@{i}-col {
+ flex-basis: @flex-width * @i;
+ max-width: @flex-width * @i;
+ }
+ .grid-loop(@i - 1);
+ }
+ .grid-loop (@total-col);
+
+ &.grow {
+ > *{
+ flex-basis: 0;
+ flex-grow: 1;
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+ }
+ .grow-2 {
+ flex-grow: 2;
+ }
+ .grow-3 {
+ flex-grow: 3;
+ }
+ .grow-4 {
+ flex-grow: 4;
+ }
+ }
+}