@igo2/sdg-core 1.0.0-next.78 → 1.0.0-next.80

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 (54) hide show
  1. package/analytics/google-analytics/google-analytics.service.d.ts +1 -1
  2. package/fesm2022/igo2-sdg-core.mjs +8 -4
  3. package/fesm2022/igo2-sdg-core.mjs.map +1 -1
  4. package/package.json +2 -2
  5. package/src/_index.scss +2 -1
  6. package/src/layout/_breakpoints.scss +36 -42
  7. package/src/style/_elevation.scss +54 -0
  8. package/src/style/_index.scss +3 -0
  9. package/src/style/_sass-utils.scss +24 -0
  10. package/src/style/_typography-utils.scss +23 -0
  11. package/src/style/_typography.scss +139 -0
  12. package/src/style/overrides/_index.scss +2 -2
  13. package/src/style/overrides/igo2-lib/_index.scss +5 -2
  14. package/src/style/overrides/igo2-lib/_list.scss +22 -0
  15. package/src/style/overrides/igo2-lib/_panel.scss +7 -0
  16. package/src/style/overrides/igo2-lib/_search-bar.scss +70 -0
  17. package/src/style/overrides/material/_button.scss +118 -0
  18. package/src/style/overrides/material/_dialog.scss +37 -0
  19. package/src/style/overrides/material/_divider.scss +11 -0
  20. package/src/style/overrides/material/_form-field.scss +20 -0
  21. package/src/style/overrides/material/_icon.scss +34 -0
  22. package/src/style/overrides/material/_index.scss +12 -1
  23. package/src/style/overrides/material/_input.scss +5 -0
  24. package/src/style/overrides/material/_sidenav.scss +9 -0
  25. package/src/theme/_index.scss +1 -3
  26. package/src/theme/material/_index.scss +1 -0
  27. package/src/theme/material/_theme.scss +241 -0
  28. package/src/tokens/_index.scss +7 -0
  29. package/src/tokens/_sys-colors.scss +99 -0
  30. package/src/tokens/_sys-elevation.scss +17 -0
  31. package/src/tokens/_sys-layout.scss +28 -0
  32. package/src/tokens/_sys-palettes.scss +72 -0
  33. package/src/tokens/_sys-typography.scss +109 -0
  34. package/src/tokens/_system.scss +56 -0
  35. package/src/tokens/_token-utils.scss +79 -0
  36. package/src/style/overrides/igo2-lib/_index-theme.scss +0 -13
  37. package/src/style/overrides/igo2-lib/_search-bar-theme.scss +0 -33
  38. package/src/style/overrides/igo2-lib/list.scss +0 -24
  39. package/src/style/overrides/igo2-lib/panel.scss +0 -8
  40. package/src/style/overrides/igo2-lib/scrollbar.scss +0 -15
  41. package/src/style/overrides/igo2-lib/search-bar.scss +0 -43
  42. package/src/style/overrides/material/_button-theme.scss +0 -81
  43. package/src/style/overrides/material/_index-theme.scss +0 -13
  44. package/src/style/overrides/material/button.scss +0 -5
  45. package/src/style/overrides/material/dialog.scss +0 -36
  46. package/src/style/overrides/material/form-field.scss +0 -5
  47. package/src/style/overrides/material/input.scss +0 -5
  48. package/src/theme/_colors.scss +0 -128
  49. package/src/theme/_palettes.scss +0 -112
  50. package/src/theme/_theme.scss +0 -46
  51. package/src/typography/_index.scss +0 -2
  52. package/src/typography/typography.scss +0 -173
  53. package/src/typography/typography.utils.scss +0 -18
  54. /package/src/layout/{layout.scss → bootstrap-layout.scss} +0 -0
@@ -0,0 +1,17 @@
1
+ @use 'sass:map';
2
+ @use '../style/elevation';
3
+
4
+ @function sys-elevation-values() {
5
+ $result: ();
6
+
7
+ @each $key, $value in elevation.$shadow-elevations {
8
+ $result: map.merge(
9
+ $result,
10
+ (
11
+ 'elevation-#{$key}': elevation.get-box-shadow($key)
12
+ )
13
+ );
14
+ }
15
+
16
+ @return $result;
17
+ }
@@ -0,0 +1,28 @@
1
+ @use './token-utils';
2
+ @use '../layout/breakpoints';
3
+ @use '../style/typography-utils' as *;
4
+
5
+ @function sys-layout-values() {
6
+ $base-spacer: 8 !default;
7
+
8
+ $values: (
9
+ max-content-width: 825px,
10
+ spacer: (
11
+ 8: rem(1 * $base-spacer),
12
+ 16: rem(2 * $base-spacer),
13
+ 24: rem(3 * $base-spacer),
14
+ 32: rem(4 * $base-spacer),
15
+ 48: rem(6 * $base-spacer),
16
+ 72: rem(9 * $base-spacer),
17
+ 96: rem(12 * $base-spacer),
18
+ xs: var(--sdg-spacer-8),
19
+ sm: var(--sdg-spacer-16),
20
+ md: var(--sdg-spacer-24),
21
+ lg: var(--sdg-spacer-48),
22
+ xl: var(--sdg-spacer-96)
23
+ ),
24
+ grid: breakpoints.get-grid-tokens()
25
+ );
26
+
27
+ @return token-utils.flatten-tokens-map($values);
28
+ }
@@ -0,0 +1,72 @@
1
+ @use 'sass:color';
2
+
3
+ @use './token-utils';
4
+
5
+ $dark-blue: #223654;
6
+
7
+ // https://design.quebec.ca/bases/couleurs
8
+ $palettes: (
9
+ 'blue': (
10
+ 100: #dae6f0,
11
+ 150: #c6dbee,
12
+ 200: #adcdeb,
13
+ 300: #72b2eb,
14
+ 350: #4a98d9,
15
+ 400: #3b95e1,
16
+ 500: #0078cc,
17
+ 550: #1472bf,
18
+ 600: #095797,
19
+ 650: #19406c,
20
+ 700: #223654,
21
+ 800: #162b47
22
+ ),
23
+ 'grey': (
24
+ 100: #f1f1f2,
25
+ 150: #d7d8dd,
26
+ 200: #c5cad2,
27
+ 300: #a7acbc,
28
+ 350: #8893a2,
29
+ 400: #8590a8,
30
+ 450: #6b778a,
31
+ 500: #6a7688,
32
+ 600: #4e5662,
33
+ 700: #3b424c,
34
+ 850: #1c2025,
35
+ 900: #121519
36
+ ),
37
+ 'red': (
38
+ 50: #ffdbd6,
39
+ 200: #f3bcb6,
40
+ 300: #e58271,
41
+ 350: #f17b6c,
42
+ 400: #f26049,
43
+ 500: #cb381f,
44
+ 550: #bb3a23,
45
+ 700: #692519,
46
+ 800: #4f180e
47
+ ),
48
+ 'green': (
49
+ 100: #d7f0bb,
50
+ 200: #b0d493,
51
+ 400: #6e9c57,
52
+ 500: #4f813d,
53
+ 600: #2c4024,
54
+ 800: #1e2f17
55
+ ),
56
+ 'yellow': (
57
+ 100: #f8e69a,
58
+ 400: #e0ad03,
59
+ 450: #ac7900,
60
+ 600: #ad781c,
61
+ 650: #6d4512,
62
+ 800: #3f240c
63
+ ),
64
+ 'violet': (
65
+ 300: #b3a5d4,
66
+ 500: #6b4fa1
67
+ )
68
+ );
69
+
70
+ @function sys-palette-values() {
71
+ @return token-utils.flatten-tokens-map($palettes, 'palette');
72
+ }
@@ -0,0 +1,109 @@
1
+ @use 'sass:map';
2
+ @use '../style/typography-utils' as *;
3
+ @use './token-utils';
4
+
5
+ $typography: (
6
+ font: (
7
+ family: (
8
+ text: (
9
+ 'Open Sans',
10
+ sans-serif
11
+ ),
12
+ title: (
13
+ 'Roboto',
14
+ sans-serif
15
+ )
16
+ ),
17
+ size: (
18
+ root-percent: #{$percent-root-font-size}#{'%'},
19
+ h6: rem(16),
20
+ h5: rem(19),
21
+ h4: rem(21),
22
+ h3: rem(28),
23
+ h2: rem(36),
24
+ h1: rem(48),
25
+ 80: rem(12),
26
+ 90: rem(14),
27
+ 100: rem(16),
28
+ 120: rem(18),
29
+ 200: rem(22),
30
+ xs: var(--sdg-font-size-80),
31
+ sm: var(--sdg-font-size-90),
32
+ md: var(--sdg-font-size-100),
33
+ lg: var(--sdg-font-size-120),
34
+ xl: var(--sdg-font-size-200),
35
+ content: var(--sdg-font-size-md)
36
+ ),
37
+ weight: (
38
+ regular: 400,
39
+ medium: 500,
40
+ semi-bold: 600,
41
+ bold: 700
42
+ )
43
+ ),
44
+ line-height: (
45
+ h6: rem(20),
46
+ h5: rem(24),
47
+ h4: rem(24),
48
+ h3: rem(32),
49
+ h2: rem(40),
50
+ h1: rem(56),
51
+ 90: rem(20),
52
+ 100: rem(24),
53
+ 120: rem(28),
54
+ 200: rem(32),
55
+ sm: var(--sdg-line-height-90),
56
+ md: var(--sdg-line-height-100),
57
+ lg: var(--sdg-line-height-120),
58
+ xl: var(--sdg-line-height-200)
59
+ ),
60
+ title: (
61
+ margin: (
62
+ h1: (
63
+ mt: var(--sdg-spacer-72),
64
+ mb: var(--sdg-spacer-32)
65
+ ),
66
+ h2: (
67
+ mt: var(--sdg-spacer-lg),
68
+ mb: var(--sdg-spacer-sm)
69
+ ),
70
+ h3: (
71
+ mt: var(--sdg-spacer-md),
72
+ mb: var(--sdg-spacer-sm)
73
+ ),
74
+ h4: (
75
+ mt: var(--sdg-spacer-md),
76
+ mb: var(--sdg-spacer-xs)
77
+ ),
78
+ h5: (
79
+ mt: var(--sdg-spacer-sm),
80
+ mb: 0
81
+ ),
82
+ h6: (
83
+ mt: var(--sdg-spacer-sm),
84
+ mb: 0
85
+ )
86
+ )
87
+ )
88
+ );
89
+
90
+ $typography-mobile: (
91
+ font: (
92
+ size: (
93
+ h3: rem(25),
94
+ h2: rem(28),
95
+ h1: rem(36)
96
+ )
97
+ ),
98
+ line-height: (
99
+ h2: rem(40),
100
+ h1: rem(56)
101
+ )
102
+ );
103
+
104
+ @function sys-typography-values() {
105
+ @return map.merge(
106
+ token-utils.flatten-tokens-map($typography),
107
+ token-utils.flatten-tokens-map($typography-mobile, 'mobile')
108
+ );
109
+ }
@@ -0,0 +1,56 @@
1
+ @use 'sass:map';
2
+
3
+ @use '../style/overrides';
4
+ @use '../style/elevation';
5
+ @use './sys-colors';
6
+ @use './sys-elevation';
7
+ @use './sys-layout';
8
+ @use './sys-palettes';
9
+ @use './sys-typography';
10
+ @use './token-utils';
11
+
12
+ @mixin theme($withDarkMode: false) {
13
+ @include _system-colors();
14
+ @include _system-typographies();
15
+ @include _system-layout();
16
+ @include _system-level-elevation();
17
+
18
+ @if ($withDarkMode) {
19
+ body.dark-mode {
20
+ @include _system-dark-colors();
21
+ }
22
+ }
23
+
24
+ body {
25
+ background-color: var(--sdg-color-background);
26
+ }
27
+
28
+ @include overrides.igo2-lib-overrides();
29
+ @include overrides.material-overrides();
30
+ }
31
+
32
+ @mixin _system-level-elevation() {
33
+ $elevations: sys-elevation.sys-elevation-values();
34
+ @include token-utils.values($elevations);
35
+ }
36
+
37
+ @mixin _system-colors() {
38
+ $palettes: sys-palettes.sys-palette-values();
39
+ $colors: sys-colors.sys-color-values();
40
+
41
+ @include token-utils.values(map.merge($palettes, $colors));
42
+ }
43
+
44
+ @mixin _system-dark-colors() {
45
+ @include token-utils.values(sys-colors.sys-dark-color-values());
46
+ }
47
+
48
+ @mixin _system-typographies() {
49
+ $typography: sys-typography.sys-typography-values();
50
+ @include token-utils.values($typography);
51
+ }
52
+
53
+ @mixin _system-layout() {
54
+ $values: sys-layout.sys-layout-values();
55
+ @include token-utils.values($values);
56
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Most of the code is inspired or from @angular/material
3
+ * https://github.com/angular/components/tree/main/src/material/core/tokens/_token-utils.scss
4
+ */
5
+
6
+ @use 'sass:map';
7
+ @use '../style/sass-utils';
8
+
9
+ // Creates a CSS variable, including the fallback if provided.
10
+ @function _create-var($name, $fallback: null) {
11
+ @if ($fallback) {
12
+ @return var($name, $fallback);
13
+ } @else {
14
+ @return var($name);
15
+ }
16
+ }
17
+
18
+ // Returns the token slot value.
19
+ // Accepts an optional fallback parameter to include in the CSS variable.
20
+ // If $fallback is `true`, then use the tokens map to get the fallback.
21
+ @function slot($token, $fallbacks, $fallback: null) {
22
+ // Fallbacks are a map of base, color, typography, and density tokens. To simplify
23
+ // lookup, flatten these token groups into a single map.
24
+ $fallbacks-flattened: ();
25
+ @each $tokens in map.values($fallbacks) {
26
+ @each $token, $value in $tokens {
27
+ $fallbacks-flattened: map.set($fallbacks-flattened, $token, $value);
28
+ }
29
+ }
30
+ @if not map.has-key($fallbacks-flattened, $token) {
31
+ @error 'Token #{$token} does not exist. Configured tokens are:' +
32
+ #{map.keys($fallbacks-flattened)};
33
+ }
34
+
35
+ $sys-fallback: map.get($fallbacks-flattened, $token);
36
+ @if (sass-utils.is-css-var-name($sys-fallback)) {
37
+ $sys-fallback: _create-var($sys-fallback, $fallback);
38
+ }
39
+
40
+ @return _create-var(--sdg-#{$token}, $sys-fallback);
41
+ }
42
+
43
+ // Outputs a map of token values as CSS variable definitions.
44
+ @mixin values($tokens) {
45
+ @include sass-utils.current-selector-or-root() {
46
+ @each $key, $value in $tokens {
47
+ @if $value != null {
48
+ --sdg-#{$key}: #{$value};
49
+ }
50
+ }
51
+ }
52
+ }
53
+
54
+ // Flattens a nested map, concatenating keys with '-' and returning a flat map.
55
+ @function flatten-tokens-map($map, $prefix: '') {
56
+ $result: ();
57
+ @each $key, $value in $map {
58
+ $full-key: if($prefix != '', $prefix + '-' + $key, $key);
59
+ @if type-of($value) == 'map' {
60
+ $nested: flatten-tokens-map($value, $full-key);
61
+ @each $nkey, $nvalue in $nested {
62
+ $result: map.merge(
63
+ $result,
64
+ (
65
+ $nkey: $nvalue
66
+ )
67
+ );
68
+ }
69
+ } @else {
70
+ $result: map.merge(
71
+ $result,
72
+ (
73
+ $full-key: $value
74
+ )
75
+ );
76
+ }
77
+ }
78
+ @return $result;
79
+ }
@@ -1,13 +0,0 @@
1
- @use './search-bar-theme' as search-bar;
2
-
3
- @mixin themes($theme) {
4
- @include search-bar.theme($theme);
5
- }
6
-
7
- @mixin colors($theme) {
8
- @include search-bar.color($theme);
9
- }
10
-
11
- @mixin densities($theme) {
12
- @include search-bar.density($theme);
13
- }
@@ -1,33 +0,0 @@
1
- @use 'sass:map';
2
- @use '@angular/material' as mat;
3
-
4
- @mixin theme($theme) {
5
- @include color($theme);
6
- @include density($theme);
7
- }
8
-
9
- @mixin color($theme) {
10
- }
11
-
12
- @mixin density($theme) {
13
- $density: mat.m2-get-density-config($theme);
14
-
15
- $theme4: map.merge(
16
- $theme,
17
- (
18
- density: $density - 4
19
- )
20
- );
21
-
22
- $theme2: map.merge(
23
- $theme,
24
- (
25
- density: $density - 2
26
- )
27
- );
28
-
29
- igo-search-bar {
30
- @include mat.form-field-density($theme4);
31
- @include mat.icon-button-density($theme2);
32
- }
33
- }
@@ -1,24 +0,0 @@
1
- @use 'sass:map';
2
- @use '@angular/material' as mat;
3
- @use '../../../theme/palettes';
4
-
5
- // TODO rework this style to be more generic
6
-
7
- igo-search-results-item {
8
- .mdc-list-item__primary-text {
9
- white-space: normal;
10
- overflow: hidden;
11
- text-overflow: ellipsis;
12
- max-height: unset !important;
13
- line-height: 18px !important;
14
- }
15
- }
16
-
17
- igo-list [igolistitem][color='accent'].igo-list-item-selected > mat-list-item {
18
- background-color: map.get(palettes.$primary-palette, 400);
19
-
20
- h4,
21
- small {
22
- color: map.get(palettes.$primary-palette, contrast, 500) !important;
23
- }
24
- }
@@ -1,8 +0,0 @@
1
- @use 'sass:map';
2
- @use '../../../theme/palettes';
3
-
4
- .igo-panel-header,
5
- .igo-panel-header button,
6
- .igo-panel-title {
7
- color: map.get(palettes.$primary-palette, contrast, 500) !important;
8
- }
@@ -1,15 +0,0 @@
1
- // @use '../base';
2
-
3
- // *::-webkit-scrollbar {
4
- // width: 6px;
5
- // }
6
-
7
- // *::-webkit-scrollbar-track {
8
- // box-shadow: inset 0 0 5px base.$blue-pale;
9
- // border-radius: 10px;
10
- // }
11
-
12
- // *::-webkit-scrollbar-thumb {
13
- // background: base.$blue-piv;
14
- // border-radius: 10px;
15
- // }
@@ -1,43 +0,0 @@
1
- @use 'sass:map';
2
- @use 'sass:color';
3
- @use '@angular/material' as mat;
4
- @use '../../../theme/colors';
5
- @use '../../../theme/palettes';
6
-
7
- igo-search-bar {
8
- // Workaroung, OPEN SANS font add a mysterious 1px for the height
9
- .mat-mdc-form-field-infix {
10
- max-height: 40px;
11
- }
12
-
13
- button[mat-icon-button] {
14
- background-color: colors.$blue-piv;
15
-
16
- &:hover {
17
- background-color: color.adjust(colors.$blue-piv, $lightness: 5%);
18
- }
19
- }
20
-
21
- mat-icon {
22
- color: map.get(palettes.$primary-palette, contrast, 500);
23
- }
24
- }
25
-
26
- igo-search-results {
27
- igo-collapsible {
28
- .mdc-list-item__primary-text {
29
- color: colors.$blue-dark;
30
- font-weight: bold;
31
- }
32
- }
33
-
34
- igo-search-results-item {
35
- .mdc-list-item__primary-text {
36
- font-weight: normal;
37
- }
38
- }
39
-
40
- .mdc-list-item--with-leading-icon .mdc-list-item__start {
41
- color: colors.$blue-dark;
42
- }
43
- }
@@ -1,81 +0,0 @@
1
- @use 'sass:map';
2
- @use '@angular/material' as mat;
3
-
4
- @use '../../../typography';
5
-
6
- @mixin theme($theme) {
7
- @include color($theme);
8
- @include density($theme);
9
- @include typography($theme);
10
- }
11
-
12
- @mixin color($theme) {
13
- $primary: map.get($theme, primary);
14
-
15
- .mat-mdc-outlined-button {
16
- border-color: currentColor !important;
17
- }
18
- }
19
-
20
- @mixin density($theme) {
21
- .mdc-button {
22
- @include mat.button-overrides(
23
- (
24
- filled-container-height: 56px,
25
- outlined-container-height: 56px,
26
- protected-container-height: 56px,
27
- text-container-height: 56px
28
- )
29
- );
30
- min-width: calc(56px * 2) !important;
31
- }
32
-
33
- .mat-mdc-outlined-button {
34
- border-width: 2px !important;
35
-
36
- &[compact] {
37
- border-width: 1px !important;
38
- }
39
- }
40
-
41
- .mdc-button[compact] {
42
- $theme: map.merge(
43
- $theme,
44
- (
45
- density: 0
46
- )
47
- );
48
- @include mat.button-density($theme);
49
- }
50
-
51
- .mdc-icon-button[compact] {
52
- // Workaround the @include doesn't work for the icon button, the style is overriden
53
- // $theme: map.merge($theme, (density: -2));
54
- // @include mat.icon-button-density($theme);
55
- --mdc-icon-button-state-layer-size: 40px;
56
- width: var(--mdc-icon-button-state-layer-size);
57
- height: var(--mdc-icon-button-state-layer-size);
58
- padding: 8px;
59
- }
60
- }
61
-
62
- @mixin typography($theme) {
63
- .mdc-button {
64
- $font-size: mat.m2-font-size(typography.$typography, body-1);
65
-
66
- @include mat.button-overrides(
67
- (
68
- filled-label-text-size: $font-size,
69
- filled-label-text-weight: bold,
70
- outlined-label-text-size: $font-size,
71
- outlined-label-text-weight: bold,
72
- protected-label-text-size: $font-size,
73
- protected-label-text-weight: bold,
74
- text-label-text-size: $font-size,
75
- text-label-text-weight: bold
76
- )
77
- );
78
-
79
- line-height: mat.m2-line-height(typography.$typography, body-1) !important;
80
- }
81
- }
@@ -1,13 +0,0 @@
1
- @use './button-theme' as button;
2
-
3
- @mixin themes($theme) {
4
- @include button.theme($theme);
5
- }
6
-
7
- @mixin colors($theme) {
8
- @include button.color($theme);
9
- }
10
-
11
- @mixin densities($theme) {
12
- @include button.density($theme);
13
- }
@@ -1,5 +0,0 @@
1
- @use '@angular/material' as mat;
2
-
3
- .mat-mdc-button-base {
4
- border-radius: 0 !important;
5
- }
@@ -1,36 +0,0 @@
1
- @use '../../../typography';
2
-
3
- .mdc-dialog {
4
- max-width: 600px;
5
-
6
- &__surface {
7
- border-radius: 0 !important;
8
- }
9
-
10
- &__title {
11
- padding-top: 8px !important; // Workaround, this should be 32px but Material apply a default height for the title.
12
- padding-bottom: 24px !important;
13
-
14
- @include typography.title-level-4;
15
- @include typography.title-border;
16
- }
17
-
18
- &__tile,
19
- &__content,
20
- &__actions {
21
- padding-left: 32px !important;
22
- padding-right: 32px !important;
23
- }
24
-
25
- &__actions {
26
- padding-top: 24px !important;
27
- padding-bottom: 32px !important;
28
- }
29
-
30
- .close-button {
31
- $iconButtonPadding: 8px;
32
- position: absolute;
33
- top: 16px - $iconButtonPadding;
34
- right: 16px - $iconButtonPadding;
35
- }
36
- }
@@ -1,5 +0,0 @@
1
- .mat-mdc-text-field-wrapper,
2
- .mdc-notched-outline__leading,
3
- .mdc-notched-outline__trailing {
4
- border-radius: 0 !important;
5
- }
@@ -1,5 +0,0 @@
1
- @use '../../../theme/colors';
2
-
3
- .mat-mdc-input-element {
4
- color: colors.$grey-medium !important;
5
- }