@elderbyte/ngx-starter 19.1.0-beta.3 → 19.1.0-beta.30

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 (64) hide show
  1. package/_index.scss +1 -1
  2. package/fesm2022/elderbyte-ngx-starter.mjs +1196 -1116
  3. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  4. package/lib/common/utils/public_api.d.ts +1 -0
  5. package/lib/components/data-view/base/elder-data-view-base.d.ts +14 -0
  6. package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +2 -1
  7. package/lib/components/layout/pane/header/pane-actions.component.d.ts +5 -0
  8. package/lib/components/layout/pane/header/pane-header.component.d.ts +7 -0
  9. package/lib/components/layout/pane/header/pane-title.component.d.ts +5 -0
  10. package/lib/components/layout/pane/pane-content.component.d.ts +5 -0
  11. package/lib/components/layout/pane/pane.component.d.ts +1 -1
  12. package/lib/components/layout/public_api.d.ts +4 -0
  13. package/lib/components/select/single/elder-select/elder-select.component.d.ts +1 -1
  14. package/package.json +1 -1
  15. package/src/lib/components/card-organizer/card-stack/elder-card-stack.component.scss +7 -11
  16. package/src/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.scss +20 -11
  17. package/src/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.scss +3 -0
  18. package/src/lib/components/data-view/grid/elder-grid/elder-grid.component.scss +70 -82
  19. package/src/lib/components/data-view/table/elder-table/elder-table.component.scss +3 -217
  20. package/src/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.scss +4 -4
  21. package/src/lib/components/forms/search/search-box/elder-search-box.component.scss +1 -0
  22. package/src/lib/components/labels/labels-input/labels-input.component.scss +0 -3
  23. package/src/lib/components/navigation/nav/nav-group/elder-nav-group.component.scss +20 -5
  24. package/src/lib/components/navigation/nav/nav-link/elder-nav-link.component.scss +33 -6
  25. package/src/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.scss +2 -2
  26. package/src/lib/components/panels/toggle-panel/elder-toggle-panel.component.scss +3 -0
  27. package/src/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.scss +0 -77
  28. package/src/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.scss +0 -48
  29. package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +0 -60
  30. package/src/lib/components/select/single/elder-select/elder-select.component.scss +14 -51
  31. package/src/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.scss +0 -11
  32. package/src/lib/components/shell/header/elder-app-header/elder-app-header.component.scss +1 -1
  33. package/src/lib/components/toasts/standard-toast/standard-toast.component.scss +1 -1
  34. package/theming/abstracts/_elder-design-tokens.scss +225 -0
  35. package/theming/{system/_elder-config.scss → abstracts/_elder-scss-variables.scss} +34 -0
  36. package/theming/{system/_elder-defaults.scss → abstracts/_elder-set-defaults-fn.scss} +8 -8
  37. package/theming/abstracts/_elder-starter-theme.scss +49 -0
  38. package/theming/abstracts/_elder-theme-main.scss +96 -0
  39. package/theming/{style-tweaks/_elder-common.scss → base/_elder-common-base.scss} +20 -45
  40. package/theming/base/_elder-fixes-base.scss +199 -0
  41. package/theming/{style-tweaks/_elder-form.scss → base/_elder-form-base.scss} +18 -3
  42. package/theming/base/_elder-root-base.scss +40 -0
  43. package/theming/components/_elder-chip-theme.scss +297 -0
  44. package/theming/components/_elder-select-theme.scss +75 -0
  45. package/theming/components/_elder-table-theme.scss +209 -0
  46. package/theming/components/_elder-toolbar-theme.scss +75 -0
  47. package/theming/{utility-classes/_elder-color-helpers.scss → utilities/_elder-color-utils.scss} +7 -14
  48. package/theming/utilities/_elder-common-utils.scss +52 -0
  49. package/theming/{utility-classes/_elder-flex-layout.scss → utilities/_elder-flex-layout-utils.scss} +2 -2
  50. package/theming/{utility-classes/_elder-layout-system.scss → utilities/_elder-layout-utils.scss} +226 -201
  51. package/theming/{utility-classes/_elder-typography-helpers.scss → utilities/_elder-typography-utils.scss} +1 -1
  52. package/lib/components/m3-sidenav/m3-sidenav.component.d.ts +0 -5
  53. package/src/lib/components/chips/_elder-chip-theme.scss +0 -129
  54. package/src/lib/components/navigation/nav/_elder-nav-theme.scss +0 -66
  55. package/src/lib/components/select/_elder-select-base.scss +0 -28
  56. package/theming/style-tweaks/_elder-color-variants.scss +0 -31
  57. package/theming/style-tweaks/_elder-component-themes.scss +0 -22
  58. package/theming/style-tweaks/_elder-reset.scss +0 -13
  59. package/theming/style-tweaks/_elder-style-fixes.scss +0 -381
  60. package/theming/system/_elder-design-tokens.scss +0 -101
  61. package/theming/system/_elder-m3-theme.scss +0 -156
  62. package/theming/system/_elder-starter-theme.scss +0 -45
  63. package/theming/utility-classes/_elder-common-helpers.scss +0 -11
  64. /package/theming/{style-tweaks/_elder-style-tweak-mixins.scss → base/_elder-base-mixins.scss} +0 -0
@@ -0,0 +1,49 @@
1
+ @use '@angular/material' as mat;
2
+ @use 'sass:map';
3
+
4
+ @forward '../abstracts/elder-set-defaults-fn';
5
+ @use 'elder-design-tokens' as elder-design-tokens;
6
+ @use '../abstracts/elder-set-defaults-fn' as elder-set-defaults-fn;
7
+ @use '../base/elder-fixes-base' as elder-fixes;
8
+ @use '../base/elder-common-base' as elder-common;
9
+ @use '../base/elder-form-base' as elder-form;
10
+ @use '../utilities/elder-flex-layout-utils' as elder-flex-layout-utils;
11
+ @use '../utilities/elder-color-utils' as elder-color-utils;
12
+ @use '../utilities/elder-typography-utils' as elder-typography-utils;
13
+ @use '../utilities/elder-common-utils' as elder-common-utils;
14
+ @use '../utilities/elder-layout-utils' as elder-layout-utils;
15
+ @use '../components/elder-chip-theme' as elder-chip;
16
+ @use '../components/elder-select-theme' as elder-select;
17
+ @use '../components/elder-toolbar-theme' as elder-toolbar;
18
+ @use '../components/elder-table-theme' as elder-table;
19
+
20
+ // Create a theme.
21
+ @mixin starter-theme($theme) {
22
+ $theme: elder-set-defaults-fn.validate-and-set-defaults($theme);
23
+
24
+ // ATM we need to render this here, because first need to set defaults for form-field density
25
+ @include mat.form-field-density(
26
+ map.get($theme, elder, density, form-field)
27
+ ); // TODO: improve density setup
28
+
29
+ // design tokens
30
+ @include elder-design-tokens.elder-design-tokens();
31
+
32
+ // base styles
33
+ @include elder-fixes.elder-fixes-base($theme);
34
+ @include elder-common.elder-common-base($theme);
35
+ @include elder-form.elder-form-base($theme);
36
+
37
+ // utilitiy styles
38
+ @include elder-flex-layout-utils.elder-flex-layout-utils($theme);
39
+ @include elder-layout-utils.elder-layout-utils($theme);
40
+ @include elder-color-utils.elder-color-utils();
41
+ @include elder-typography-utils.elder-typography-utils();
42
+ @include elder-common-utils.elder-common-utils();
43
+
44
+ // component themes rendered in global scope
45
+ @include elder-chip.theme($theme);
46
+ @include elder-select.theme($theme);
47
+ @include elder-toolbar.theme($theme);
48
+ @include elder-table.theme($theme);
49
+ }
@@ -0,0 +1,96 @@
1
+ @use 'sass:map';
2
+ @use '@angular/material' as mat;
3
+ @use './elder-starter-theme' as starter-theme;
4
+ @use './elder-scss-variables' as config;
5
+ @use '../base/elder-root-base' as elder-root-base;
6
+
7
+ @mixin render-default-elder-theme($themes: 'default', $options: ()) {
8
+ @if $themes == 'default' {
9
+ $themes: create-themes(config.$palettes); // typically this will be used
10
+ } @else {
11
+ $themes: $themes;
12
+ }
13
+
14
+ // map options
15
+ $use-typography-hierarchy: not map.has-key($options, 'no-typography-hierarchy');
16
+
17
+ // create theme
18
+ $elder-light-theme: map.get($themes, light);
19
+ $elder-dark-theme: map.get($themes, dark);
20
+
21
+ // render elder root styles above theme scope
22
+ @include elder-root-base.elder-root-base($elder-light-theme);
23
+
24
+ // render theme
25
+ @include mat.all-component-typographies();
26
+ @include mat.elevation-classes();
27
+ @include mat.app-background();
28
+
29
+ @if $use-typography-hierarchy {
30
+ @include mat.typography-hierarchy($elder-light-theme, $back-compat: true);
31
+ }
32
+
33
+ .elder-light-theme,
34
+ .elder-dark-theme {
35
+ @include mat.all-component-themes($elder-light-theme);
36
+ @include mat.system-level-colors($elder-light-theme);
37
+ @include mat.system-level-typography($elder-light-theme);
38
+ @include mat.color-variants-backwards-compatibility($elder-light-theme);
39
+ }
40
+
41
+ .elder-dark-theme {
42
+ @include mat.all-component-colors($elder-dark-theme);
43
+ @include mat.system-level-colors($elder-dark-theme);
44
+ @include mat.color-variants-backwards-compatibility($elder-dark-theme);
45
+ }
46
+
47
+ .elder-light-theme,
48
+ .elder-dark-theme {
49
+ @include starter-theme.starter-theme($elder-light-theme);
50
+ }
51
+ }
52
+
53
+ @function create-themes($palettesArg) {
54
+ $_palettes: $palettesArg;
55
+
56
+ $_rest: (
57
+ secondary: map.get($_palettes, secondary),
58
+ neutral: map.get($_palettes, neutral),
59
+ neutral-variant: map.get($_palettes, neutral-variant),
60
+ error: map.get($_palettes, error),
61
+ );
62
+ $_primary: map.merge(map.get($_palettes, primary), $_rest);
63
+ $_tertiary: map.merge(map.get($_palettes, tertiary), $_rest);
64
+
65
+ $density: 0; // ATM important ot start with 0, since we are (miss-)using the tighter -4 density settings only for forms
66
+
67
+ $light-theme: _elder-define-theme(light, $_primary, $_tertiary, $density);
68
+ $dark-theme: _elder-define-theme(dark, $_primary, $_tertiary, $density);
69
+ $dark-theme-mono: _elder-define-theme(dark, $_tertiary, $_tertiary, $density);
70
+
71
+ @return (
72
+ light: $light-theme,
73
+ dark: $dark-theme,
74
+ );
75
+ }
76
+
77
+ @function _elder-define-theme($theme-type, $primary, $tertiary, $density: 0) {
78
+ @return mat.define-theme(
79
+ (
80
+ color: (
81
+ theme-type: $theme-type,
82
+ primary: $primary,
83
+ tertiary: $tertiary,
84
+ use-system-variables: true,
85
+ system-variables-prefix: md-sys-color,
86
+ ),
87
+ typography: (
88
+ use-system-variables: true,
89
+ system-variables-prefix: md-sys-typescale,
90
+ ),
91
+ density: (
92
+ scale: $density,
93
+ ),
94
+ )
95
+ );
96
+ }
@@ -1,23 +1,8 @@
1
- @use './elder-style-tweak-mixins' as mixins;
1
+ @use './elder-base-mixins' as mixins;
2
2
  @use '@angular/material' as mat;
3
3
  @use 'sass:map';
4
4
 
5
- @mixin elder-common-styles($theme) {
6
- $common-sizes: map.get($theme, elder, common-sizes);
7
-
8
- /***************************************************************************
9
- * *
10
- * Common Sizes *
11
- * *
12
- **************************************************************************/
13
-
14
- $xs: map.get($common-sizes, xs);
15
- $sm: map.get($common-sizes, sm);
16
- $md: map.get($common-sizes, md);
17
- $lg: map.get($common-sizes, lg);
18
- $xl: map.get($common-sizes, xl);
19
- $xxl: map.get($common-sizes, xxl);
20
-
5
+ @mixin elder-common-base($theme) {
21
6
  /***************************************************************************
22
7
  * *
23
8
  * Angular Material Extensions (Optional) *
@@ -120,6 +105,24 @@
120
105
  padding: 0;
121
106
  }
122
107
 
108
+ /***************************************************************************
109
+ * *
110
+ * Material CDK Drag *
111
+ * *
112
+ **************************************************************************/
113
+
114
+ .cdk-drag-preview {
115
+ box-shadow: var(--mat-app-elevation-shadow-level-20) !important;
116
+ }
117
+
118
+ .cdk-drag-placeholder {
119
+ opacity: 0;
120
+ }
121
+
122
+ .cdk-drag-animating {
123
+ transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
124
+ }
125
+
123
126
  /***************************************************************************
124
127
  * *
125
128
  * Padding *
@@ -148,32 +151,4 @@
148
151
  .elder-icon-button-xs {
149
152
  @include mixins.matIconButtonSize(20px, 12px);
150
153
  }
151
-
152
- .mat-mdc-chip {
153
- .mat-mdc-chip-avatar {
154
- /**
155
- * Maximizes the avatar icon / image size in a chip.
156
- */
157
- &.chip-avatar-xl {
158
- width: 28px;
159
- height: 28px;
160
- margin-left: -4px;
161
- margin-right: -4px;
162
-
163
- img {
164
- width: 28px;
165
- height: 28px;
166
- overflow: hidden;
167
- border-radius: 14px;
168
- }
169
-
170
- .mat-icon {
171
- width: 28px !important;
172
- height: 28px !important;
173
- line-height: 28px !important;
174
- font-size: 28px !important;
175
- }
176
- }
177
- }
178
- }
179
154
  }
@@ -0,0 +1,199 @@
1
+ @use '@angular/material' as mat;
2
+ @use './elder-base-mixins' as mixins;
3
+ @use 'sass:map';
4
+
5
+ @mixin elder-fixes-base($theme) {// scrollbar styling
6
+ ::-webkit-scrollbar {
7
+ width: var(--elder-scrollbar-width);
8
+ }
9
+
10
+ ::-webkit-scrollbar-thumb {
11
+ background: var(--md-sys-color-outline-variant);
12
+ border-radius: 5px;
13
+ }
14
+
15
+ ::-webkit-scrollbar-thumb:hover {
16
+ background: var(--md-sys-color-outline);
17
+ }
18
+
19
+ .mat-app-background {
20
+ display: block;
21
+ }
22
+
23
+ // Trick to ensure flex functionality within router-outlet
24
+ router-outlet.router-flex + * {
25
+ display: flex;
26
+ flex: 1 1 auto;
27
+ flex-direction: column;
28
+ height: 100%; // Required for Safari
29
+ width: 100%;
30
+ min-height: 0; // Fixes scrolling vert
31
+ min-width: 0; // Fixes scrolling horz
32
+ }
33
+
34
+ // Globally disable automatic scrolling of Material Drawer Container
35
+ .mat-drawer-inner-container {
36
+ overflow: hidden !important;
37
+ }
38
+
39
+ // Globally disable automatic scrolling of Material Drawer Content
40
+ .mat-drawer-content {
41
+ overflow: hidden !important;
42
+ }
43
+
44
+ /******************************
45
+ Material tab fix
46
+ *******************************/
47
+
48
+ .mat-mdc-tab-body-wrapper {
49
+ flex: 1 1 100% !important;
50
+ height: 100% !important;
51
+ }
52
+
53
+ .mat-mdc-tab-body {
54
+ display: flex !important;
55
+ flex-direction: column;
56
+ }
57
+
58
+ /******************************
59
+ Material Badge Index
60
+ *******************************/
61
+
62
+ .mat-badge-content {
63
+ z-index: 1;
64
+ }
65
+ // fix elder badge borders
66
+ elder-badge {
67
+ .mat-mdc-standard-chip .mat-mdc-chip-action::before {
68
+ border: none;
69
+ }
70
+ }
71
+
72
+ .mat-mdc-tab-group {
73
+ background-color: var(--md-sys-color-surface-container);
74
+ }
75
+
76
+ // remove extra background from drawer
77
+ .mat-drawer-container {
78
+ background-color: transparent !important;
79
+ }
80
+
81
+ // elder custom icons fill color
82
+ .mat-icon.svg-icon-inherit-color svg * {
83
+ fill: currentColor !important;
84
+ }
85
+
86
+ /******************************
87
+ ETC
88
+ *******************************/
89
+
90
+ .mat-mdc-tab-group {
91
+ background-color: transparent !important;
92
+ }
93
+
94
+ // badge positioning
95
+ .mat-badge-above .mat-badge-content {
96
+ bottom: 82%;
97
+ }
98
+
99
+ // bring back the badge warn color that was removed in m3
100
+ .mat-badge-warn {
101
+ --mat-badge-background-color: var(--md-sys-color-error);
102
+ }
103
+
104
+ /**************************************************************************
105
+ Card fixes
106
+ **************************************************************************/
107
+ .mat-mdc-card,
108
+ .mat-mdc-card-outlined {
109
+ // set normal mat-cards back to m2 border-radius
110
+ border-radius: var(--elder-border-radius-sm);
111
+ }
112
+
113
+ // remove weird box shadow of card in overlay (Problem: Cards shouldn't be in overlay)
114
+ .mat-mdc-dialog-container .mat-mdc-card {
115
+ box-shadow: none;
116
+ }
117
+
118
+ .elder-card-title {
119
+ padding-bottom: 0 !important;
120
+ margin-bottom: 6px !important;
121
+ }
122
+
123
+ /**************************************************************************
124
+ Elder panel legacy class
125
+ **************************************************************************/
126
+ .elder-panel {
127
+ background: var(--md-sys-color-primary-container);
128
+ color: var(--md-sys-color-on-primary-container);
129
+ transition: background-color 0.5s;
130
+
131
+ &.mat-primary,
132
+ &.mat-accent,
133
+ &.mat-warn {
134
+ background: var(--elder-dark-mode-color-surface, var(--md-sys-color-primary));
135
+ color: var(--elder-dark-mode-color-on-surface, var(--md-sys-color-on-primary));
136
+ }
137
+
138
+ // form field overrides
139
+ .mat-form-field-underline,
140
+ .mat-form-field-ripple,
141
+ .mat-focused .mat-form-field-ripple {
142
+ background-color: currentColor;
143
+ }
144
+
145
+ .mat-mdc-form-field-label,
146
+ .mat-focused .mat-form-field-label,
147
+ .mat-select-value,
148
+ .mat-select-arrow,
149
+ .mat-form-field.mat-focused .mat-select-arrow {
150
+ color: inherit;
151
+ }
152
+
153
+ .mat-mdc-input-element {
154
+ caret-color: currentColor;
155
+ }
156
+ }
157
+
158
+ /**************************************************************************
159
+ Color overrides
160
+ **************************************************************************/
161
+
162
+ // Prefer secondary color for "accent"
163
+ .elder-light-theme,
164
+ .elder-dark-theme {
165
+ &.mat-accent.mat-icon {
166
+ --mat-icon-color: var(--md-sys-color-secondary);
167
+ }
168
+ }
169
+
170
+ &.elder-light-theme .mdc-linear-progress__buffer-bar {
171
+ --mdc-linear-progress-track-color: #f3f3f3;
172
+ }
173
+
174
+ &.elder-light-theme elder-data-transfer-aggregate .mdc-linear-progress__buffer-bar {
175
+ --mdc-linear-progress-track-color: var(--md-sys-color-tertiary-container);
176
+ }
177
+ &.elder-dark-theme elder-data-transfer-aggregate .mdc-linear-progress__buffer-bar {
178
+ --mdc-linear-progress-track-color: var(--md-sys-color-tertiary-container);
179
+ }
180
+
181
+ /* Fix: Use secondary color on accent buttons and slide toggles.
182
+ This fix is atm needed since we overwrite tertiary color. Maybe find better solution.. */
183
+
184
+ // Button colors
185
+ .mat-accent.mat-mdc-button-base {
186
+ --md-sys-color-tertiary: var(--md-sys-color-secondary);
187
+ --md-sys-color-on-tertiary: var(--md-sys-color-on-secondary);
188
+ --md-sys-color-tertiary-container: var(--md-sys-color-secondary-container);
189
+ --md-sys-color-on-tertiary-container: var(--md-sys-color-on-secondary-container);
190
+ }
191
+
192
+ // slide toggle colors
193
+ .mat-accent.mat-mdc-slide-toggle {
194
+ --md-sys-color-tertiary: var(--md-sys-color-secondary);
195
+ --md-sys-color-on-tertiary: var(--md-sys-color-on-secondary);
196
+ --md-sys-color-tertiary-container: var(--md-sys-color-secondary-container);
197
+ --md-sys-color-on-tertiary-container: var(--md-sys-color-on-secondary-container);
198
+ }
199
+ }
@@ -1,8 +1,8 @@
1
- @use './elder-style-tweak-mixins' as mixins;
1
+ @use './elder-base-mixins' as mixins;
2
2
  @use '@angular/material' as mat;
3
3
  @use 'sass:map';
4
4
 
5
- @mixin elder-form-styles($theme) {
5
+ @mixin elder-form-base($theme) {
6
6
  $common-sizes: map.get($theme, elder, common-sizes);
7
7
  $form-field-density: map.get($theme, elder, density, form-field);
8
8
 
@@ -327,18 +327,33 @@
327
327
  border-radius: 24px;
328
328
  background-color: var(--md-sys-color-surface-container);
329
329
  cursor: text;
330
+ outline: var(--elder-round-form-field-outline);
330
331
 
331
332
  .mdc-notched-outline .mat-mdc-notch-piece {
332
333
  border: none !important;
333
334
  }
334
335
  &:hover {
335
- background-color: var(--md-sys-color-surface-container-low);
336
+ background-color: var(--md-sys-color-surface-container-high);
336
337
  }
337
338
  &.mat-focused {
338
339
  outline: solid 1px var(--md-sys-color-primary);
339
340
  background-color: var(--md-sys-color-surface-container-low);
340
341
  }
341
342
  }
343
+
344
+ /***************************************************************************
345
+ Form field in toolbar
346
+ **************************************************************************/
347
+ .mat-toolbar .mat-mdc-form-field {
348
+ background-color: var(--elder-lightened-transparent-bg);
349
+ &,
350
+ *,
351
+ .mat-icon {
352
+ color: var(--md-sys-color-inverse-on-surface);
353
+ --mdc-outlined-text-field-input-text-color: var(--md-sys-color-inverse-on-surface) !important;
354
+ --mdc-outlined-text-field-caret-color: var(--md-sys-color-inverse-on-surface) !important;
355
+ }
356
+ }
342
357
  }
343
358
 
344
359
  @function calc-side-paddings($density) {
@@ -0,0 +1,40 @@
1
+ @mixin elder-root-base($theme) {
2
+ /***************************************************************************
3
+ * *
4
+ * CSS reset: box-sizing *
5
+ * *
6
+ **************************************************************************/
7
+
8
+ *,
9
+ *::before,
10
+ *::after {
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ /***************************************************************************
15
+ * *
16
+ * Common Baseline styling *
17
+ * *
18
+ **************************************************************************/
19
+
20
+ html,
21
+ body {
22
+ min-height: 100vh;
23
+ margin: 0;
24
+ width: 100%;
25
+ height: 100%;
26
+ }
27
+
28
+ body {
29
+ font-family: 'Roboto', sans-serif;
30
+ overflow: hidden;
31
+ position: fixed;
32
+ }
33
+
34
+ // Helps fonts on OSX looks more consistent with other systems
35
+ // Isn't currently in button styles due to performance concerns
36
+ * {
37
+ -webkit-font-smoothing: antialiased;
38
+ -moz-osx-font-smoothing: grayscale;
39
+ }
40
+ }