@mtvh/mtvh-design-system 0.0.2 → 0.0.4

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 (33) hide show
  1. package/README.md +15 -2
  2. package/assets/scss/app.scss +38 -0
  3. package/assets/scss/base/_all.scss +4 -0
  4. package/assets/scss/base/_functions.scss +38 -0
  5. package/assets/scss/base/_global.scss +25 -0
  6. package/assets/scss/base/_mixins.scss +171 -0
  7. package/assets/scss/base/_print.scss +55 -0
  8. package/assets/scss/common/_custom.scss +63 -0
  9. package/assets/scss/common/_variables-custom.scss +0 -0
  10. package/assets/scss/common/_variables-overrides.scss +0 -0
  11. package/assets/scss/components/_all.scss +4 -0
  12. package/assets/scss/components/_button.scss +209 -0
  13. package/assets/scss/components/_content-block.scss +231 -0
  14. package/assets/scss/components/_form.scss +92 -0
  15. package/assets/scss/components/_link.scss +92 -0
  16. package/assets/scss/config/_font.scss +8 -0
  17. package/assets/scss/config/_map-amends.scss +15 -0
  18. package/assets/scss/config/_map-list.scss +114 -0
  19. package/assets/scss/config/_palette.scss +51 -0
  20. package/assets/scss/config/_theme.scss +23 -0
  21. package/assets/scss/config/_variables.scss +123 -0
  22. package/assets/scss/core/_all.scss +2 -0
  23. package/assets/scss/core/iconography/_icon.scss +32 -0
  24. package/assets/scss/core/typography/_typography.scss +93 -0
  25. package/assets/scss/mtvh.scss +68 -0
  26. package/dist/images/icons/inspection.svg +1 -0
  27. package/dist/images/icons/parking.svg +1 -0
  28. package/dist/images/icons/pet.svg +1 -0
  29. package/dist/images/icons/speech-dark.svg +1 -0
  30. package/dist/js/app.min.js +9 -0
  31. package/dist/mtvh.min.css +1 -1
  32. package/package.json +12 -12
  33. package/public/js/app.js +5194 -0
package/README.md CHANGED
@@ -26,7 +26,7 @@ See more from https://decapcms.org/docs/beta-features/
26
26
  ```
27
27
  npm install @mtvh/mtvh-design-system
28
28
  ```
29
-
29
+ #### All styles
30
30
  To import all styles as a single package you need to add following snippet to your main SCSS file:
31
31
  ```
32
32
  @import '/node_modules/@mtvh/mtvh-design-system/dist/mtvh.min.css';
@@ -35,5 +35,18 @@ Alternatively, you could include the css inside the footer/head tag depending on
35
35
  ```
36
36
  <link type="text/css" rel="stylesheet" href="dist/mtvh.min.css">
37
37
  ```
38
+ #### Core and selected components
39
+ Our core library includes the design system's base theme, typography, mixins and helper functions.
40
+ Once you imported it, you can take full advantage of our variables and helpers.
41
+ To import core library you need to add following snippet at the start of your main SASS file:
42
+ ```
43
+ @import "node_modules/@mtvh/mtvh-design-system/assets/scss/mtvh";
44
+ ```
45
+
38
46
  #### Adding fonts and images assets
39
- The css uses the fonts and icons following the relative path, ie `./` you would need to store the font and images folder relatively to the css.
47
+ The css uses the fonts and icons using a default path as below. You can amend the prefix by customize via the following variable
48
+ ```
49
+ $font-path: "./fonts/";
50
+ $asset-icon-path: "./images/icons/";
51
+ ```
52
+ * Please note the font files is downloadable from mtvh-design-system git repo NOT npm
@@ -0,0 +1,38 @@
1
+ @import "mtvh";
2
+
3
+ // 2. Include any default variable overrides here
4
+ @import "common/colors";
5
+ @import "common/variables-overrides";
6
+ @import "common/variables-custom";
7
+
8
+ // 8. Add additional custom code here, BS function not used in mtvh moved here, to minimise the css
9
+
10
+
11
+ // 8. Add additional custom code here
12
+ @import "common/global";
13
+ @import "common/syntax";
14
+ @import "common/dark";
15
+ @import "components/alerts";
16
+ @import "components/buttons";
17
+ @import "components/callouts";
18
+ @import "components/expressive-code";
19
+ @import "components/code";
20
+ @import "components/comments";
21
+ @import "components/details";
22
+ @import "components/forms";
23
+ @import "components/images";
24
+ @import "components/mermaid";
25
+ @import "components/modals";
26
+ @import "components/search";
27
+ @import "components/section-nav";
28
+ @import "components/tables";
29
+ @import "components/tabs";
30
+ @import "layouts/footer";
31
+ @import "layouts/header";
32
+ @import "layouts/pages";
33
+ @import "layouts/posts";
34
+ @import "layouts/sidebar";
35
+
36
+
37
+ // 9. Custom styles
38
+ @import "common/custom";
@@ -0,0 +1,4 @@
1
+ @import 'global';
2
+ @import 'functions';
3
+ @import 'mixins';
4
+ @import 'print';
@@ -0,0 +1,38 @@
1
+ @function rem($value) {
2
+ @if (unitless($value)) {
3
+ $value: $value * 1px;
4
+ }
5
+
6
+ @return calc( $value / $mtvh-base-font-size * 1rem);
7
+ }
8
+
9
+
10
+ @function str-replace( $string, $search, $replace: '' ) {
11
+
12
+ $index: str-index( $string, $search );
13
+ @if $index {
14
+ @return str-slice( $string, 1, $index - 1 ) + $replace + str-replace( str-slice( $string, $index + str-length( $search ) ), $search, $replace);
15
+ }
16
+
17
+ @return $string;
18
+ }
19
+
20
+ @function encode-color($string) {
21
+ @if type-of($string) == 'color' {
22
+ $hex: str-slice(ie-hex-str($string), 4);
23
+ $string: unquote("#{$hex}");
24
+ }
25
+
26
+ $string: '%23' + $string;
27
+ @return $string;
28
+ }
29
+
30
+ @function get-icon( $icon, $color: #fff ) {
31
+
32
+ $icon: map-get( $icons, $icon );
33
+ $placeholder: '%%COLOR%%';
34
+
35
+ $data-uri: str-replace( url( $data-svg-prefix + $icon ), $placeholder, $color );
36
+
37
+ @return str-replace( $data-uri, '#', '%23' );
38
+ }
@@ -0,0 +1,25 @@
1
+ html {
2
+ font-size: 100%;
3
+ line-height: var(--mtvh-line-height);
4
+ box-sizing: border-box;
5
+ }
6
+ body {
7
+ margin: 0;
8
+ padding: 0;
9
+ border: 0;
10
+ -webkit-font-smoothing: antialiased;
11
+ -moz-osx-font-smoothing: grayscale;
12
+ font-size: 100%;
13
+ line-height: var(--mtvh-line-height);
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ *,
18
+ *::before,
19
+ *::after {
20
+ box-sizing: inherit;
21
+ }
22
+
23
+ .mtvh-layout {
24
+ background-color: var(--mtvh-grey-01);
25
+ }
@@ -0,0 +1,171 @@
1
+ @mixin animate-default() {
2
+ -webkit-transition: transform 0.3s ease-out;
3
+ -moz-transition: transform 0.3s ease-out;
4
+ -ms-transition: transform 0.3s ease-out;
5
+ -o-transition: transform 0.3s ease-out;
6
+ transition: transform 0.3s ease-in;
7
+ }
8
+
9
+ @mixin hover-animate( $position : 'left', $rotate : '') {
10
+
11
+ @if $position == 'right' {
12
+ &:hover:not(.disabled) {
13
+ &:after {
14
+ -webkit-transform: translateX(4px);
15
+ -moz-transform: translateX(4px);
16
+ -ms-transform: translateX(4px);
17
+ -o-transform: translateX(4px);
18
+ transform: translateX(4px);
19
+ }
20
+ }
21
+ } @else {
22
+ &:hover:not(.disabled) {
23
+ &:before{
24
+ -webkit-transform: translateX(-4px);
25
+ -moz-transform: translateX(-4px);
26
+ -ms-transform: translateX(-4px);
27
+ -o-transform: translateX(-4px);
28
+ transform: translateX(-4px);
29
+ }
30
+ }
31
+ }
32
+
33
+ }
34
+
35
+ @mixin icon-transform($direction) {
36
+ //default is a right
37
+ -webkit-mask-repeat: no-repeat;
38
+ mask-repeat: no-repeat;
39
+ content:' ';
40
+ opacity: 1;
41
+ display: inline-block;
42
+ vertical-align: middle;
43
+ background-repeat: no-repeat;
44
+ margin-top: -.125rem;
45
+ @if $direction == 'right' {
46
+ margin-left: $button-icon-spacing;
47
+ }
48
+ @else {
49
+ margin-right: $button-icon-spacing;
50
+ }
51
+ }
52
+
53
+ // arrow direction: left, right, up, down, Default: right
54
+ // arrow position: left, right
55
+ @mixin mtvh-icon($icon : '', $color :'', $hover-color :'', $active-color :'', $border-color :'', $position : 'left', $direction : 'right', $width : 20px, $height: 20px, $svg-path : null) {
56
+
57
+ @if $border-color != '' {
58
+ $border-color: $color;
59
+ }
60
+ @if $hover-color == '' {
61
+ $hover-color: $color;
62
+ }
63
+ @if $active-color == '' {
64
+ $active-color: $color;
65
+ }
66
+ &:before, &:after {
67
+ height: $height;
68
+ width: $width;
69
+ }
70
+
71
+ text-decoration: none;
72
+ @if $position == 'right' {
73
+
74
+ &:after {
75
+
76
+
77
+ @include animate-default;
78
+ @include icon-transform($direction);
79
+
80
+ @if $svg-path {
81
+ background-image: url($svg-path);
82
+ } @else {
83
+ -webkit-mask: get-icon($icon);
84
+ mask: get-icon($icon);
85
+ background-color: currentColor;
86
+ }
87
+ }
88
+
89
+ @if $svg-path == '' {
90
+ &:hover:not(.disabled) {
91
+ &:after {
92
+ background-color: currentColor;
93
+ }
94
+ }
95
+ &:focus, &:active {
96
+
97
+ &:after {
98
+ background-color: currentColor;
99
+ }
100
+ }
101
+ }
102
+ } @else { //position is left
103
+
104
+ &:before{ ;
105
+ @include animate-default;
106
+ @include icon-transform('left');
107
+ @if $svg-path {
108
+ background-image: url($svg-path);
109
+ } @else {
110
+ -webkit-mask: get-icon($icon);
111
+ mask: get-icon($icon);
112
+ background-color: currentColor
113
+ }
114
+
115
+ }
116
+
117
+ @if $svg-path == '' {
118
+ &:hover:not(.disabled) {
119
+ &:before {
120
+ background-color: currentColor;
121
+ }
122
+ }
123
+
124
+ &:focus, &:active {
125
+ &:before {
126
+ background-color: currentColor;
127
+ }
128
+ }
129
+ }
130
+ }
131
+
132
+ &.base {
133
+ &:before, &:after {
134
+ mask-size: auto 9px;
135
+ mask-repeat: no-repeat;
136
+ -webkit-mask-size: auto 9px;
137
+ -webkit-mask-repeat: no-repeat;
138
+ }
139
+ }
140
+ }
141
+
142
+ @mixin icon-size ($width,$height) {
143
+ &:before, &:after {
144
+ mask-size: $width $height;
145
+ width: $width;
146
+ height: $height;
147
+ background-size: 100%;
148
+ }
149
+ }
150
+
151
+
152
+ @mixin form-invalid-text() {
153
+ color: var(--mtvh-red-04);
154
+ font-size: $font-size-sm;
155
+ font-weight: bold;
156
+ padding-left: $mtvh-spacing-spacing-6;
157
+ position: relative;
158
+ display: flex;
159
+ gap: $mtvh-spacing-spacing-3;
160
+ &:before {
161
+ content: '';
162
+ -webkit-mask: get-icon('error',$danger);
163
+ mask: get-icon('error',$danger);
164
+ background-color: currentColor;
165
+ mask-repeat: no-repeat;
166
+ -webkit-mask-repeat: no-repeat;
167
+ margin-left: -$mtvh-spacing-spacing-6;
168
+ padding-right: $icon-size-scale-sm;//$mtvh-spacing-spacing-6;
169
+ margin-top: $mtvh-spacing-spacing-2;
170
+ }
171
+ }
@@ -0,0 +1,55 @@
1
+ /* stylelint-disable declaration-no-important, selector-no-qualifying-type */
2
+ @media print {
3
+ *,
4
+ *::before,
5
+ *::after {
6
+ background: transparent !important;
7
+ color: var(--mtvh-black) !important;
8
+ box-shadow: none !important;
9
+ text-shadow: none !important;
10
+ }
11
+
12
+ a,
13
+ a:visited {
14
+ text-decoration: underline;
15
+ }
16
+
17
+ a[href]::after {
18
+ content: ' (' attr(href) ')';
19
+ }
20
+
21
+ abbr[title]::after {
22
+ content: ' (' attr(title) ')';
23
+ }
24
+
25
+ a[href^='#']::after,
26
+ a[href^='javascript:']::after {
27
+ content: '';
28
+ }
29
+
30
+ pre {
31
+ white-space: pre-wrap !important;
32
+ }
33
+
34
+ thead {
35
+ display: table-header-group;
36
+ }
37
+
38
+ tr,
39
+ img {
40
+ page-break-inside: avoid;
41
+ }
42
+
43
+ p,
44
+ h2,
45
+ h3 {
46
+ orphans: 3;
47
+ widows: 3;
48
+ }
49
+
50
+ h2,
51
+ h3 {
52
+ page-break-after: avoid;
53
+ }
54
+ }
55
+ /* stylelint-enable declaration-no-important, selector-no-qualifying-type */
@@ -0,0 +1,63 @@
1
+ // Put your custom SCSS for dork (documentation) code here
2
+ .expressive-code {
3
+ position: relative;
4
+ .copy {
5
+ button {
6
+ opacity: 1;
7
+ }
8
+ }
9
+ }
10
+ .section-nav li a, .page-links a
11
+ {
12
+ font-weight: unset;
13
+ }
14
+ .section-nav li.active a, #toc a.active
15
+ {
16
+ font-weight: bold;
17
+ }
18
+ #toc a.active {
19
+ color: #00385E !important;
20
+ }
21
+
22
+ .table-icons
23
+ {
24
+ td {
25
+ vertical-align: middle;
26
+ .center {
27
+ text-align: center;
28
+ }
29
+ }
30
+
31
+ .expressive-code {
32
+ margin: 0;
33
+ }
34
+ }
35
+
36
+
37
+ .mtvh-content-block {
38
+
39
+ h6,
40
+ .h6,
41
+ h5,
42
+ .h5,
43
+ h4,
44
+ .h4,
45
+ h3,
46
+ .h3,
47
+ h2,
48
+ .h2,
49
+ h1,
50
+ .h1 {
51
+ margin-top: 0px;
52
+ }
53
+ }
54
+
55
+ .mx-auto {
56
+ margin-right: auto !important;
57
+ margin-left: auto !important
58
+ }
59
+ .stretched-link {
60
+ &:after {
61
+ position: unset;
62
+ }
63
+ }
File without changes
File without changes
@@ -0,0 +1,4 @@
1
+ @import 'button';
2
+ @import 'content-block';
3
+ @import 'form';
4
+ @import 'link';
@@ -0,0 +1,209 @@
1
+ $mtvh-buttons: (
2
+ primary: (
3
+ text-color: var(--mtvh-white),
4
+ text-color-hover: var(--mtvh-white),
5
+ text-color-disabled: var(--mtvh-white),
6
+ text-color-active: var(--mtvh-white),
7
+ background: var(--mtvh-blue-04),
8
+ background-hover: var(--mtvh-blue-05),
9
+ background-focus: var(--mtvh-blue-05),
10
+ background-active: var(--mtvh-blue-06),
11
+ background-disabled: var(--mtvh-grey-06),
12
+ border: transparent,
13
+ border-hover: transparent,
14
+ border-active: var(--mtvh-blue-06),
15
+ border-color-disabled: var(--mtvh-grey-06),
16
+ outline-color: var(--mtvh-blue-03)
17
+ ),
18
+ light: (
19
+ text-color: var(--mtvh-blue-04),
20
+ text-color-hover: var(--mtvh-blue-05),
21
+ text-color-active: var(--mtvh-blue-06),
22
+ text-color-focus: var(--mtvh-blue-05),
23
+ text-color-disabled: var(--mtvh-black),
24
+ background: var(--mtvh-white),
25
+ background-hover: var(--mtvh-grey-01),
26
+ background-active: var(--mtvh-grey-02),
27
+ background-focus: var(--mtvh-grey-01),
28
+ background-disabled: var(--mtvh-grey-05),
29
+ border: transparent,
30
+ border-active: transparent,
31
+ border-color-disabled: var(--mtvh-grey-05)
32
+
33
+ ),
34
+ outline-primary: (
35
+
36
+ text-color: var(--mtvh-blue-04),
37
+ text-color-hover: var(--mtvh-blue-05),
38
+ text-color-active: var(--mtvh-blue-06),
39
+ text-color-focus: var(--mtvh-blue-05),
40
+ text-color-disabled: var(--mtvh-grey-06),
41
+ background: transparent,
42
+ background-hover: transparent,
43
+ background-focus: transparent,
44
+ background-disabled: transparent,
45
+ background-active: transparent,
46
+ border: var(--mtvh-blue-04),
47
+ border-hover: var(--mtvh-blue-05),
48
+ border-focus: var(--mtvh-blue-05),
49
+ border-active: var(--mtvh-blue-06),
50
+ border-color-disabled: var(--mtvh-grey-06)
51
+ ),
52
+ outline-light: (
53
+ text-color: var(--mtvh-white),
54
+ text-color-hover: var(--mtvh-grey-04),
55
+ text-color-focus: var(--mtvh-grey-04),
56
+ text-color-active: var(--mtvh-grey-05),
57
+ text-color-disabled: var(--mtvh-grey-05),
58
+ background: transparent,
59
+ background-hover: transparent,
60
+ background-focus: transparent,
61
+ background-disabled: transparent,
62
+ border: var(--mtvh-white),
63
+ border-hover: var(--mtvh-grey-04),
64
+ border-focus: var(--mtvh-grey-04),
65
+ border-active: var(--mtvh-grey-05),
66
+ border-color-disabled: var(--mtvh-grey-05)
67
+ ),
68
+ purple: (
69
+ text-color: var(--mtvh-white),
70
+ text-color-hover: var(--mtvh-white),
71
+ text-color-focus: var(--mtvh-white),
72
+ background: var(--mtvh-purple-04),
73
+ background-hover: var(--mtvh-purple-05),
74
+ background-focus: var(--mtvh-purple-05),
75
+ background-active: var(--mtvh-purple-06),
76
+ border: transparent,
77
+ border-hover: transparent,
78
+ border-radius: 6px
79
+ ),
80
+ danger: (
81
+ text-color: var(--mtvh-white),
82
+ text-color-hover: var(--mtvh-white),
83
+ text-color-disabled: var(--mtvh-white),
84
+ background: var(--mtvh-red-04),
85
+ background-hover: var(--mtvh-red-05),
86
+ background-focus: var(--mtvh-red-05),
87
+ background-active: var(--mtvh-red-06),
88
+ background-disabled: var(--mtvh-grey-06),
89
+ border: transparent,
90
+ border-hover: transparent,
91
+ border-active: transparent,
92
+ border-color-disabled: transparent
93
+ ),
94
+ outline-danger: (
95
+ text-color: var(--mtvh-red-04),
96
+ text-color-hover: var(--mtvh-red-05),
97
+ text-color-active: var(--mtvh-red-06),
98
+ text-color-focus: var(--mtvh-red-05),
99
+ text-color-disabled: var(--mtvh-grey-06),
100
+ background: var(--mtvh-white),
101
+ background-hover: var(--mtvh-white),
102
+ background-focus: var(--mtvh-white),
103
+ background-disabled: var(--mtvh-white),
104
+ border: var(--mtvh-red-04),
105
+ border-hover: var(--mtvh-red-05),
106
+ background-active: var(--mtvh-white),
107
+ border-focus: var(--mtvh-red-05),
108
+ border-active: var(--mtvh-red-06),
109
+ border-color-disabled: var(--mtvh-grey-06)
110
+ ),
111
+
112
+ );
113
+
114
+ .btn, .mtvh-btn {
115
+
116
+ font-weight: $btn-font-weight;
117
+ box-shadow: none;
118
+
119
+ &:focus-visible {
120
+ box-shadow: none;
121
+ outline: solid var(--mtvh-btn-outline-border) var(--mtvh-btn-outline-color);
122
+ outline-offset: 0;
123
+ outline-offset: var(--mtvh-btn-outline-border);
124
+ text-decoration: none;
125
+ }
126
+ &:focus:not(:focus-visible) {
127
+ outline: 0;
128
+ }
129
+ &:hover {
130
+ text-decoration: none;
131
+ }
132
+ }
133
+
134
+ .mtvh-btn {
135
+ min-height: 2.5rem;
136
+ min-width: var(--mtvh-btn-min-width);
137
+ border-radius: $btn-border-radius;
138
+ border: $btn-border-width solid transparent;
139
+ white-space: normal;
140
+ font-size: $btn-font-size;
141
+ line-height: var(--mtvh-btn-line-height);
142
+ text-decoration: none;
143
+ -webkit-font-smoothing: antialiased;
144
+ -webkit-appearance: none;
145
+ display: inline-block;
146
+ text-align: center;
147
+ padding: $btn-padding-y $btn-padding-x;
148
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
149
+
150
+ }
151
+
152
+ .mtvh-btn, .btn {
153
+
154
+ @each $color, $property-map in $mtvh-buttons {
155
+
156
+
157
+ &-#{$color} {
158
+
159
+ color: map-get($property-map, text-color);
160
+ background-color: map-get($property-map, background);
161
+ border-color: map-get($property-map, border);
162
+ border-radius: map-get($property-map, border-radius);
163
+
164
+ &:visited {
165
+ color: map-get($property-map, text-color);
166
+ }
167
+
168
+ &:hover {
169
+ color: map-get($property-map, text-color-hover);
170
+ background-color: map-get($property-map, background-hover);
171
+ border-color: map-get($property-map, border-hover);
172
+ }
173
+
174
+ &:focus {
175
+ color: map-get($property-map, text-color-focus);
176
+ background-color: map-get($property-map, background-focus);
177
+
178
+ @if map-get($property-map, border-focus) {
179
+ border-color: map-get($property-map, border-focus);
180
+ }
181
+
182
+ }
183
+
184
+ &:active:not(:disabled):not(.disabled) {
185
+ background-color: map-get($property-map, background-active);
186
+ @if map-get($property-map, text-color-active) {
187
+ color: map-get($property-map, text-color-active);
188
+ border-color: map-get($property-map, border-active);
189
+ }
190
+ }
191
+
192
+ &:disabled,
193
+ &.disabled {
194
+ pointer-events: none;
195
+ @if map-get($property-map, text-color-disabled) {
196
+ color: map-get($property-map, text-color-disabled);
197
+ background-color: map-get($property-map, background-disabled);
198
+ border-color: map-get($property-map, border-color-disabled);
199
+ }
200
+ else {
201
+ color: var(--mtvh-btn-disabled-color);
202
+ background-color: var(--mtvh-btn-disabled-bg);
203
+ border-color: var(--mtvh-btn-disabled-border-color);
204
+ }
205
+ }
206
+ }
207
+ }
208
+ }
209
+