loomcss 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.nvmrc +1 -0
  4. data/.stylelintrc +6 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +21 -0
  7. data/README.md +161 -0
  8. data/Rakefile +2 -0
  9. data/assets/loom/10-global-settings/_box-sizing.scss +5 -0
  10. data/assets/loom/10-global-settings/_breakpoints.scss +22 -0
  11. data/assets/loom/10-global-settings/_color.scss +79 -0
  12. data/assets/loom/10-global-settings/_icons.scss +5 -0
  13. data/assets/loom/10-global-settings/_misc.scss +89 -0
  14. data/assets/loom/10-global-settings/_spacing.scss +20 -0
  15. data/assets/loom/10-global-settings/_typography.scss +201 -0
  16. data/assets/loom/20-tools/_color.scss +22 -0
  17. data/assets/loom/20-tools/_grid-columns.scss +23 -0
  18. data/assets/loom/20-tools/_icons.scss +16 -0
  19. data/assets/loom/20-tools/_misc.scss +12 -0
  20. data/assets/loom/20-tools/_mq.scss +126 -0
  21. data/assets/loom/20-tools/_spacing.scss +14 -0
  22. data/assets/loom/20-tools/_transition.scss +10 -0
  23. data/assets/loom/20-tools/_type-checking.scss +52 -0
  24. data/assets/loom/20-tools/_typography.scss +130 -0
  25. data/assets/loom/20-tools/_z-index.scss +16 -0
  26. data/assets/loom/30-generic/_box-sizing.scss +9 -0
  27. data/assets/loom/30-generic/_normalize.scss +461 -0
  28. data/assets/loom/30-generic/_reset.scss +48 -0
  29. data/assets/loom/40-base-elements/_form-items.scss +50 -0
  30. data/assets/loom/40-base-elements/_images.scss +5 -0
  31. data/assets/loom/40-base-elements/_typography.scss +138 -0
  32. data/assets/loom/50-layout/_grid.scss +37 -0
  33. data/assets/loom/60-objects/_absolute-center.scss +18 -0
  34. data/assets/loom/60-objects/_absolute-cover.scss +19 -0
  35. data/assets/loom/60-objects/_button.scss +93 -0
  36. data/assets/loom/60-objects/_clearfix.scss +19 -0
  37. data/assets/loom/60-objects/_container.scss +34 -0
  38. data/assets/loom/60-objects/_fixed-ratio.scss +42 -0
  39. data/assets/loom/60-objects/_headings.scss +28 -0
  40. data/assets/loom/60-objects/_hide-visually.scss +23 -0
  41. data/assets/loom/60-objects/_icon.scss +30 -0
  42. data/assets/loom/60-objects/_list-inline.scss +37 -0
  43. data/assets/loom/60-objects/_list-reset.scss +25 -0
  44. data/assets/loom/60-objects/_media.scss +35 -0
  45. data/assets/loom/60-objects/_vertical-center.scss +18 -0
  46. data/assets/loom/70-ui-components/_example.scss +22 -0
  47. data/assets/loom/80-utilities/_background-color.scss +13 -0
  48. data/assets/loom/80-utilities/_border.scss +10 -0
  49. data/assets/loom/80-utilities/_color.scss +13 -0
  50. data/assets/loom/80-utilities/_display.scss +31 -0
  51. data/assets/loom/80-utilities/_font-family.scss +20 -0
  52. data/assets/loom/80-utilities/_font-size.scss +24 -0
  53. data/assets/loom/80-utilities/_font-style.scss +15 -0
  54. data/assets/loom/80-utilities/_font-weight.scss +15 -0
  55. data/assets/loom/80-utilities/_line-height.scss +0 -0
  56. data/assets/loom/80-utilities/_margin.scss +33 -0
  57. data/assets/loom/80-utilities/_padding.scss +32 -0
  58. data/assets/loom/80-utilities/_position.scss +15 -0
  59. data/assets/loom/80-utilities/_text-align.scss +19 -0
  60. data/assets/loom/80-utilities/_text-transform.scss +19 -0
  61. data/assets/loom/80-utilities/_vertical-align.scss +26 -0
  62. data/assets/loom/80-utilities/_white-space.scss +27 -0
  63. data/assets/loom/80-utilities/_width.scss +11 -0
  64. data/assets/loom/90-trumps/.keepfile +0 -0
  65. data/assets/loom/_10-global-settings.scss +7 -0
  66. data/assets/loom/_20-tools.scss +10 -0
  67. data/assets/loom/_30-generic.scss +2 -0
  68. data/assets/loom/_40-base-elements.scss +3 -0
  69. data/assets/loom/_50-layout.scss +1 -0
  70. data/assets/loom/_60-objects.scss +13 -0
  71. data/assets/loom/_70-ui-components.scss +0 -0
  72. data/assets/loom/_80-utilities.scss +17 -0
  73. data/assets/loom/_90-trumps.scss +0 -0
  74. data/assets/main-shorthand.scss +44 -0
  75. data/assets/main.scss +108 -0
  76. data/bin/console +14 -0
  77. data/bin/setup +8 -0
  78. data/gulpfile.js +24 -0
  79. data/index.html +97 -0
  80. data/lib/loomcss.rb +2 -0
  81. data/lib/loomcss/engine.rb +9 -0
  82. data/lib/loomcss/version.rb +3 -0
  83. data/loomcss.gemspec +32 -0
  84. data/main.css +1298 -0
  85. data/package.json +36 -0
  86. data/public/docs/assets/images/favicon.png +0 -0
  87. data/public/docs/assets/images/logo_full_compact.svg +1 -0
  88. data/public/docs/assets/images/logo_full_inline.svg +1 -0
  89. data/public/docs/assets/images/logo_light_compact.svg +1 -0
  90. data/public/docs/assets/images/logo_light_inline.svg +1 -0
  91. data/public/docs/assets/js/main.js +56 -0
  92. data/public/docs/assets/js/main.min.js +1 -0
  93. data/public/docs/assets/js/search.js +146 -0
  94. data/public/docs/assets/js/sidebar.js +163 -0
  95. data/public/docs/assets/js/vendor/fuse.min.js +20 -0
  96. data/public/docs/assets/js/vendor/jquery.min.js +4 -0
  97. data/public/docs/assets/js/vendor/prism.min.js +9 -0
  98. data/public/docs/index.html +314 -0
  99. metadata +172 -0
@@ -0,0 +1,42 @@
1
+ /// Toggle fixed-ratio class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 60-objects
5
+ $LOOM-use-object-classes-fixed-ratio: $LOOM-use-object-classes !default;
6
+
7
+ @mixin fixed-ratio($ratio-percentage-a: 16, $ratio-percentage-b: 9) {
8
+ $calculated-ratio: percentage($ratio-percentage-b / $ratio-percentage-a);
9
+
10
+ display: block;
11
+ overflow: hidden;
12
+ position: relative;
13
+ width: 100%;
14
+
15
+ &::before {
16
+ content: '';
17
+ display: block;
18
+ padding-top: $calculated-ratio;
19
+ }
20
+ }
21
+
22
+ @mixin fixed-ratio__inner($distance: 0) {
23
+ bottom: $distance;
24
+ display: block;
25
+ height: auto;
26
+ left: $distance;
27
+ min-height: 100%;
28
+ position: absolute;
29
+ right: $distance;
30
+ top: $distance;
31
+ width: 100%;
32
+ }
33
+
34
+ @if $LOOM-use-object-classes-fixed-ratio {
35
+ .o-fixed-ratio {
36
+ @include fixed-ratio();
37
+ }
38
+
39
+ .o-fixed-ratio__inner {
40
+ @include fixed-ratio__inner();
41
+ }
42
+ }
@@ -0,0 +1,28 @@
1
+ /// Toggle headings class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 60-objects
5
+ $LOOM-use-object-classes-headings: $LOOM-use-object-classes !default;
6
+
7
+ // NOTE: These are one of the only project objects not to define mixins in the source file. To consume header objects, use `@include font-size()`.
8
+
9
+ // NOTE: The default heading list, `$LOOM-h-object-sizes`, is defined in `10-global-settings/typography`
10
+
11
+ @if ($LOOM-use-object-classes-headings) {
12
+ $heading-list: $LOOM-h-object-sizes;
13
+
14
+ @each $name in $heading-list {
15
+ .o-h-#{$name} {
16
+ @include font-size($name, smaller-viewport);
17
+ }
18
+ }
19
+
20
+ // NOTE: At $LOOM-typography-breakpoint larger fonts will be used. This is because you typicall want small fonts on mobile. larger on desktop.
21
+ @include mq($from: $LOOM-typography-breakpoint) {
22
+ @each $name in $heading-list {
23
+ .o-h-#{$name} {
24
+ @include font-size($name, larger-viewport);
25
+ }
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,23 @@
1
+ /// Toggle hide-visually class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 60-objects
5
+ $LOOM-use-object-classes-hide-visually: $LOOM-use-object-classes !default;
6
+
7
+ @mixin hide-visually() {
8
+ border: 0;
9
+ clip: rect(1px, 1px, 1px, 1px);
10
+ clip-path: circle(1% at 1% 1%);
11
+ height: 1px;
12
+ overflow: hidden;
13
+ padding: 0;
14
+ position: absolute;
15
+ width: 1px;
16
+ }
17
+
18
+ // Classes
19
+ @if $LOOM-use-object-classes-hide-visually {
20
+ .o-hide-visually {
21
+ @include hide-visually();
22
+ }
23
+ }
@@ -0,0 +1,30 @@
1
+ /// Toggle icon class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 60-objects
5
+ $LOOM-use-object-classes-icon: $LOOM-use-object-classes !default;
6
+
7
+ @mixin icon($icon-font-size: 1em) {
8
+ $size: null;
9
+
10
+ @if (is-number($icon-font-size)) {
11
+ $size: $icon-font-size;
12
+ } @else { // stylelint-disable-line
13
+ $size: get-icon-size($icon-font-size);
14
+ }
15
+
16
+ color: inherit;
17
+ display: inline-block;
18
+ fill: currentColor;
19
+ font-size: $size;
20
+ height: 1em;
21
+ outline: none;
22
+ vertical-align: middle;
23
+ width: 1em;
24
+ }
25
+
26
+ @if $LOOM-use-object-classes-icon {
27
+ .o-icon {
28
+ @include icon();
29
+ }
30
+ }
@@ -0,0 +1,37 @@
1
+ /// Toggle list-inline class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 60-objects
5
+ $LOOM-use-object-classes-list-inline: $LOOM-use-object-classes !default;
6
+
7
+ // LIST-INLINE
8
+
9
+ // Mixin
10
+ // NOTE: Displays list elements inline to each other. For use on OL or UL.
11
+ // NOTE: REQUIRES LIST-RESET
12
+ @mixin list-inline($nest-inline: false) {
13
+ list-style-type: none;
14
+ margin: 0;
15
+ padding: 0;
16
+
17
+ @if $nest-inline {
18
+ & > li {
19
+ display: inline-block;
20
+ }
21
+ }
22
+ }
23
+
24
+ @mixin list-inline__item() {
25
+ display: inline-block;
26
+ }
27
+
28
+ // Classes
29
+ @if $LOOM-use-object-classes-list-inline {
30
+ .o-list-inline {
31
+ @include list-inline();
32
+ }
33
+
34
+ .o-list-inline__item {
35
+ @include list-inline__item();
36
+ }
37
+ }
@@ -0,0 +1,25 @@
1
+ /// Toggle list-reset class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 60-objects
5
+ $LOOM-use-object-classes-list-reset: $LOOM-use-object-classes !default;
6
+
7
+ // LIST-RESET
8
+
9
+ // Mixin
10
+ // NOTE: Removes all padding, margin and list-style-type from a list.
11
+ @mixin list-reset($list-reset-spacing: true) {
12
+ @if $list-reset-spacing {
13
+ margin: 0;
14
+ padding: 0;
15
+ }
16
+
17
+ list-style-type: none;
18
+ }
19
+
20
+ // Classes
21
+ @if $LOOM-use-object-classes-list-reset {
22
+ .o-list-reset {
23
+ @include list-reset();
24
+ }
25
+ }
@@ -0,0 +1,35 @@
1
+ /// Toggle media class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 60-objects
5
+ $LOOM-use-object-classes-media: $LOOM-use-object-classes !default;
6
+
7
+ @mixin media() {
8
+ @include clearfix();
9
+
10
+ display: block;
11
+ }
12
+
13
+ @mixin media__primary($spacing: get-spacing(xsmall)) {
14
+ float: left;
15
+ margin-right: $spacing;
16
+ }
17
+
18
+ @mixin media__secondary() {
19
+ display: block;
20
+ overflow: hidden;
21
+ }
22
+
23
+ @if $LOOM-use-object-classes-media {
24
+ .o-media {
25
+ @include media();
26
+ }
27
+
28
+ .o-media__primary {
29
+ @include media__primary();
30
+ }
31
+
32
+ .o-media__secondary {
33
+ @include media__secondary();
34
+ }
35
+ }
@@ -0,0 +1,18 @@
1
+ /// Toggle vertical-center class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 60-objects
5
+ $LOOM-use-object-classes-vertical-center: $LOOM-use-object-classes !default;
6
+
7
+ @mixin vertical-center {
8
+ position: absolute;
9
+ top: 50%;
10
+ transform: translateY(-50%);
11
+ }
12
+
13
+ // Classes
14
+ @if $LOOM-use-object-classes-vertical-center {
15
+ .o-vertical-center {
16
+ @include vertical-center();
17
+ }
18
+ }
@@ -0,0 +1,22 @@
1
+ // .c-example {
2
+ // display: block;
3
+ // }
4
+ //
5
+ // .c-example__header {
6
+ // @include fixed-ratio();
7
+ // }
8
+ //
9
+ // .c-example__image {
10
+ // @include fixed-ratio__inner();
11
+ // }
12
+ //
13
+ // .c-example__title {
14
+ // @include generic-heading();
15
+ // @include font-size(alpha);
16
+ // }
17
+
18
+ @include mq($from: large) {
19
+ body {
20
+ // background-color: pink !important;
21
+ }
22
+ }
@@ -0,0 +1,13 @@
1
+ /// Toggle background-color class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 80-utilities
5
+ $LOOM-use-utility-classes-background-color: $LOOM-use-utility-classes !default;
6
+
7
+ @if $LOOM-use-utility-classes-background-color {
8
+ @each $color-name, $color-value in $LOOM-colors-list {
9
+ .o-background-color-#{$color-name} {
10
+ background-color: $color-value;
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,10 @@
1
+ /// Toggle border class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 80-utilities
5
+ $LOOM-use-utility-classes-border: $LOOM-use-utility-classes !default;
6
+
7
+ @if $LOOM-use-utility-classes-border {
8
+ // nothing yet
9
+ // all colours as border colours. Mix with an array of possible border-styles and possible border-widths
10
+ }
@@ -0,0 +1,13 @@
1
+ /// Toggle color class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 80-utilities
5
+ $LOOM-use-utility-classes-color: $LOOM-use-utility-classes !default;
6
+
7
+ @if $LOOM-use-utility-classes-color {
8
+ @each $color-name, $color-value in $LOOM-colors-list {
9
+ .o-color-#{$color-name} {
10
+ color: $color-value;
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,31 @@
1
+ /// Toggle display class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 80-utilities
5
+ $LOOM-use-utility-classes-display: $LOOM-use-utility-classes !default;
6
+
7
+ @if $LOOM-use-utility-classes-display {
8
+ .u-display-block {
9
+ display: block;
10
+ }
11
+
12
+ .u-display-inline {
13
+ display: inline;
14
+ }
15
+
16
+ .u-display-inline-block {
17
+ display: inline-block;
18
+ }
19
+
20
+ .u-display-none {
21
+ display: none;
22
+ }
23
+
24
+ @each $key, $value in $LOOM-display-none-breakpoints {
25
+ @include mq($key) {
26
+ .u-display-none\@#{$key} {
27
+ display: none;
28
+ }
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,20 @@
1
+ /// Toggle font-family class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 80-utilities
5
+ $LOOM-use-utility-classes-font-family: $LOOM-use-utility-classes !default;
6
+
7
+ @if $LOOM-use-utility-classes-font-family {
8
+ // For each in the font-family list, generate a utility class here.
9
+ @each $key, $name in $LOOM-fonts {
10
+ .u-font-family-#{$key} {
11
+ font-family: get-font-family($key);
12
+
13
+ @if $LOOM-fonts-loaded {
14
+ .#{$LOOM-fonts-loaded} & {
15
+ font-family: get-font-family($key, webfont);
16
+ }
17
+ }
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,24 @@
1
+ /// Toggle font-size class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 80-utilities
5
+ $LOOM-use-utility-classes-font-size: $LOOM-use-utility-classes !default;
6
+
7
+ @if $LOOM-use-utility-classes-font-size {
8
+ // for each font size, generate a utility class.
9
+
10
+ @each $key, $name in $LOOM-font-sizes {
11
+ .u-font-size-#{$key} {
12
+ @include font-size($key, smaller-viewport);
13
+ }
14
+ }
15
+
16
+ // NOTE: At $LOOM-typography-breakpoint larger fonts will be used. This is because you typically want small fonts on mobile, larger on desktop.
17
+ @include mq($from: $LOOM-typography-breakpoint) {
18
+ @each $key, $name in $LOOM-font-sizes {
19
+ .u-font-size-#{$key} {
20
+ @include font-size($key, larger-viewport);
21
+ }
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,15 @@
1
+ /// Toggle font-style class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 80-utilities
5
+ $LOOM-use-utility-classes-font-style: $LOOM-use-utility-classes !default;
6
+
7
+ @if $LOOM-use-utility-classes-font-style {
8
+ .u-font-style-italic {
9
+ font-style: $LOOM-font-style-italic;
10
+ }
11
+
12
+ .u-font-style-normal {
13
+ font-style: $LOOM-font-style-normal;
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ /// Toggle font-weight class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 80-utilities
5
+ $LOOM-use-utility-classes-font-weight: $LOOM-use-utility-classes !default;
6
+
7
+ @if $LOOM-use-utility-classes-font-weight {
8
+ .u-font-weight-bold {
9
+ font-weight: $LOOM-font-weight-bold;
10
+ }
11
+
12
+ .u-font-weight-normal {
13
+ font-weight: $LOOM-font-weight-normal;
14
+ }
15
+ }
@@ -0,0 +1,33 @@
1
+ /// Toggle margin class generation.
2
+ ///
3
+ /// By default uses global setting.
4
+ /// @group 80-utilities
5
+ $LOOM-use-utility-classes-margin: $LOOM-use-utility-classes !default;
6
+
7
+ @if $LOOM-use-utility-classes-margin {
8
+ // Margins for each spacing unit and position.
9
+
10
+ // Margins for each breakpoint
11
+
12
+ .u-margin-none {
13
+ margin: 0;
14
+ }
15
+
16
+ @each $position in (left, top, right, bottom) {
17
+ .u-margin-#{$position}-none {
18
+ margin-#{$position}: 0;
19
+ }
20
+ }
21
+
22
+ @each $key, $value in $LOOM-spacing {
23
+ .u-margin-#{$key} {
24
+ margin: $value;
25
+ }
26
+
27
+ @each $position in (left, top, right, bottom) {
28
+ .u-margin-#{$position}-#{$key} {
29
+ margin-#{$position}: $value;
30
+ }
31
+ }
32
+ }
33
+ }