@betterview/integration-toolkit 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.
- package/.eslintignore +8 -0
- package/.eslintrc.js +273 -0
- package/.prettierignore +7 -0
- package/.prettierrc +19 -0
- package/CODEOWNERS +6 -0
- package/README.md +2 -0
- package/component-harness-server/index.html +11 -0
- package/component-harness-server/src/App.js +34 -0
- package/component-harness-server/src/fonts/biotif-black-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-black-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-blackitalic-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-blackitalic-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-bold-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-bold-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-bolditalic-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-bolditalic-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-book-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-book-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-bookitalic-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-bookitalic-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-extrabold-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-extrabold-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-extrabolditalic-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-extrabolditalic-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-light-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-light-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-lightitalic-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-lightitalic-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-medium-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-medium-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-mediumitalic-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-mediumitalic-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-regular-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-regular-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-regularitalic-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-regularitalic-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-semibold-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-semibold-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/biotif-semibolditalic-webfont.woff +0 -0
- package/component-harness-server/src/fonts/biotif-semibolditalic-webfont.woff2 +0 -0
- package/component-harness-server/src/fonts/pensumpro-black.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-blackitalic.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-bold.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-bolditalic.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-book.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-bookitalic.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-extrabold.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-extrabolditalic.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-extralight.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-extralightitalic.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-light.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-lightitalic.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-medium.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-mediumitalic.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-regular.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-regularitalic.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-thin.otf +0 -0
- package/component-harness-server/src/fonts/pensumpro-thinitalic.otf +0 -0
- package/component-harness-server/src/index.js +5 -0
- package/component-harness-server/src/styles/betterview.styl +34 -0
- package/component-harness-server/src/styles/fonts.styl +208 -0
- package/component-harness-server/src/styles/mixins.styl +23 -0
- package/component-harness-server/src/styles/reset.styl +28 -0
- package/component-harness-server/src/styles/vars.styl +77 -0
- package/component-harness-server/src/styles.styl +29 -0
- package/package.json +65 -0
- package/src/ComponentHarness/index.ts +93 -0
- package/src/Deployment/index.ts +72 -0
- package/src/Network/axios-error-handling.ts +76 -0
- package/src/Network/index.ts +14 -0
- package/src/TestHarness/index.ts +48 -0
- package/src/dummy.test.ts +1 -0
- package/src/types/IEnrichmentIntegration.ts +73 -0
- package/src/types/IPartnerDataSchema.ts +39 -0
- package/src/types/index.ts +2 -0
- package/src/utils/index.ts +5 -0
- package/tsconfig.build.json +14 -0
- package/tsconfig.eslint.json +20 -0
- package/tsconfig.json +20 -0
package/.eslintignore
ADDED
package/.eslintrc.js
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Why are we specifying TS config in overrides?
|
|
3
|
+
*
|
|
4
|
+
* Apparently this is the preferred way to lint both JS and TS files. The base config
|
|
5
|
+
* is responsible for the JS files, and the override config is for the TS files. I'm
|
|
6
|
+
* unsure if we need to copy the base JS config into the TS overrides (e.g. ...rules), but
|
|
7
|
+
* everything seems to work in this configuration, and is all still DRY, so 🤞
|
|
8
|
+
*
|
|
9
|
+
* See:
|
|
10
|
+
* https://stackoverflow.com/questions/57597142/how-to-run-typescript-eslint-on-ts-files-and-eslint-on-js-files-in-the-same-pr
|
|
11
|
+
* https://github.com/techatpark/npm-scripts-static-ref/blob/main/.eslintrc.js
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const rules = {
|
|
15
|
+
'arrow-parens': ['error', 'as-needed'],
|
|
16
|
+
'brace-style': ['off', 'off'],
|
|
17
|
+
'comma-dangle': 'error',
|
|
18
|
+
complexity: 'off',
|
|
19
|
+
'constructor-super': 'error',
|
|
20
|
+
curly: 'off',
|
|
21
|
+
'eol-last': 'off',
|
|
22
|
+
eqeqeq: ['error', 'smart'],
|
|
23
|
+
'guard-for-in': 'error',
|
|
24
|
+
'id-blacklist': [
|
|
25
|
+
'error',
|
|
26
|
+
'any',
|
|
27
|
+
'Number',
|
|
28
|
+
'number',
|
|
29
|
+
'String',
|
|
30
|
+
'string',
|
|
31
|
+
'Boolean',
|
|
32
|
+
'boolean',
|
|
33
|
+
'Undefined',
|
|
34
|
+
'undefined'
|
|
35
|
+
],
|
|
36
|
+
'id-match': 'error',
|
|
37
|
+
/**
|
|
38
|
+
* 2020-09-28 - NM - I don't understand this rule.
|
|
39
|
+
* what does this help us achieve?
|
|
40
|
+
*/
|
|
41
|
+
// 'import/no-extraneous-dependencies': [
|
|
42
|
+
// 'error',
|
|
43
|
+
// {
|
|
44
|
+
// devDependencies: false
|
|
45
|
+
// }
|
|
46
|
+
// ],
|
|
47
|
+
'import/no-internal-modules': 'off',
|
|
48
|
+
'jsdoc/check-alignment': 'error',
|
|
49
|
+
'jsdoc/newline-after-description': 'error',
|
|
50
|
+
'linebreak-style': 'off',
|
|
51
|
+
'max-classes-per-file': 'off',
|
|
52
|
+
'max-len': 'off',
|
|
53
|
+
'new-parens': 'off',
|
|
54
|
+
'newline-per-chained-call': 'off',
|
|
55
|
+
'no-bitwise': 'off',
|
|
56
|
+
'no-caller': 'error',
|
|
57
|
+
'no-cond-assign': 'error',
|
|
58
|
+
'no-console': ['error'],
|
|
59
|
+
'no-debugger': 'error',
|
|
60
|
+
'no-duplicate-case': 'error',
|
|
61
|
+
'no-duplicate-imports': 'error',
|
|
62
|
+
'no-empty': 'error',
|
|
63
|
+
'no-eval': 'error',
|
|
64
|
+
'no-extra-bind': 'error',
|
|
65
|
+
'no-extra-semi': 'off',
|
|
66
|
+
'no-fallthrough': 'off',
|
|
67
|
+
'no-invalid-this': 'off',
|
|
68
|
+
'no-irregular-whitespace': 'off',
|
|
69
|
+
'no-multiple-empty-lines': 'off',
|
|
70
|
+
'no-new-func': 'error',
|
|
71
|
+
'no-new-wrappers': 'error',
|
|
72
|
+
'no-redeclare': 'error',
|
|
73
|
+
'no-return-await': 'error',
|
|
74
|
+
'no-sequences': 'error',
|
|
75
|
+
'no-shadow': 'off',
|
|
76
|
+
'@typescript-eslint/no-shadow': ['error'],
|
|
77
|
+
'no-sparse-arrays': 'error',
|
|
78
|
+
'no-template-curly-in-string': 'error',
|
|
79
|
+
'no-throw-literal': 'off',
|
|
80
|
+
'no-trailing-spaces': 'off',
|
|
81
|
+
'no-undef-init': 'error',
|
|
82
|
+
'no-underscore-dangle': [
|
|
83
|
+
'error',
|
|
84
|
+
{
|
|
85
|
+
allowAfterThis: true,
|
|
86
|
+
allowAfterSuper: true,
|
|
87
|
+
allowAfterThisConstructor: true
|
|
88
|
+
}
|
|
89
|
+
],
|
|
90
|
+
'no-unsafe-finally': 'error',
|
|
91
|
+
'no-unused-labels': 'error',
|
|
92
|
+
'no-var': 'error',
|
|
93
|
+
'object-shorthand': 'error',
|
|
94
|
+
'one-var': ['error', 'never'],
|
|
95
|
+
/**
|
|
96
|
+
* 2020-09-28 - NM - I'm not sure I like this rule.
|
|
97
|
+
* We like named functions in some cases because it can help
|
|
98
|
+
* add more context to logs. Is there a reason for this rule
|
|
99
|
+
* to exist?
|
|
100
|
+
*/
|
|
101
|
+
// 'prefer-arrow/prefer-arrow-functions': 'error',
|
|
102
|
+
'prefer-const': 'error',
|
|
103
|
+
'prefer-object-spread': 'error',
|
|
104
|
+
'quote-props': 'off',
|
|
105
|
+
radix: 'error',
|
|
106
|
+
'space-before-function-paren': 'off',
|
|
107
|
+
'space-in-parens': ['off', 'never'],
|
|
108
|
+
'spaced-comment': [
|
|
109
|
+
'error',
|
|
110
|
+
'always',
|
|
111
|
+
{
|
|
112
|
+
markers: ['/']
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
'use-isnan': 'error',
|
|
116
|
+
'valid-typeof': 'off'
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const env = {
|
|
120
|
+
browser: true,
|
|
121
|
+
es6: true,
|
|
122
|
+
node: true
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
const plugins = ['eslint-plugin-jsdoc', 'eslint-plugin-prefer-arrow', 'eslint-plugin-import'];
|
|
126
|
+
|
|
127
|
+
const parserOptions = {
|
|
128
|
+
ecmaVersion: '2018'
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
module.exports = {
|
|
132
|
+
root: true,
|
|
133
|
+
env,
|
|
134
|
+
plugins,
|
|
135
|
+
rules,
|
|
136
|
+
// necessary for optional chaining in JS: https://github.com/nuxt/eslint-config/issues/92#issuecomment-623088678
|
|
137
|
+
parser: 'babel-eslint',
|
|
138
|
+
parserOptions,
|
|
139
|
+
overrides: [
|
|
140
|
+
{
|
|
141
|
+
files: ['**/*.ts'],
|
|
142
|
+
env,
|
|
143
|
+
parser: '@typescript-eslint/parser',
|
|
144
|
+
parserOptions: {
|
|
145
|
+
...parserOptions,
|
|
146
|
+
project: './tsconfig.eslint.json',
|
|
147
|
+
sourceType: 'module'
|
|
148
|
+
},
|
|
149
|
+
plugins: [...plugins, '@typescript-eslint', '@typescript-eslint/tslint'],
|
|
150
|
+
rules: {
|
|
151
|
+
...rules,
|
|
152
|
+
'@typescript-eslint/prefer-optional-chain': 'warn',
|
|
153
|
+
'@typescript-eslint/adjacent-overload-signatures': 'error',
|
|
154
|
+
'@typescript-eslint/array-type': [
|
|
155
|
+
'error',
|
|
156
|
+
{
|
|
157
|
+
default: 'array'
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
'@typescript-eslint/ban-types': [
|
|
161
|
+
'error',
|
|
162
|
+
{
|
|
163
|
+
types: {
|
|
164
|
+
Object: {
|
|
165
|
+
message: 'Avoid using the `Object` type. Did you mean `object`?'
|
|
166
|
+
},
|
|
167
|
+
Function: {
|
|
168
|
+
message: 'Avoid using the `Function` type. Prefer a specific function type, like `() => void`.'
|
|
169
|
+
},
|
|
170
|
+
// eslint-disable-next-line id-blacklist
|
|
171
|
+
Boolean: {
|
|
172
|
+
message: 'Avoid using the `Boolean` type. Did you mean `boolean`?'
|
|
173
|
+
},
|
|
174
|
+
// eslint-disable-next-line id-blacklist
|
|
175
|
+
Number: {
|
|
176
|
+
message: 'Avoid using the `Number` type. Did you mean `number`?'
|
|
177
|
+
},
|
|
178
|
+
// eslint-disable-next-line id-blacklist
|
|
179
|
+
String: {
|
|
180
|
+
message: 'Avoid using the `String` type. Did you mean `string`?'
|
|
181
|
+
},
|
|
182
|
+
Symbol: {
|
|
183
|
+
message: 'Avoid using the `Symbol` type. Did you mean `symbol`?'
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
],
|
|
188
|
+
'@typescript-eslint/consistent-type-assertions': 'error',
|
|
189
|
+
'@typescript-eslint/dot-notation': 'error',
|
|
190
|
+
'@typescript-eslint/explicit-member-accessibility': [
|
|
191
|
+
'off',
|
|
192
|
+
{
|
|
193
|
+
accessibility: 'explicit'
|
|
194
|
+
}
|
|
195
|
+
],
|
|
196
|
+
'@typescript-eslint/indent': 'off',
|
|
197
|
+
'@typescript-eslint/member-delimiter-style': [
|
|
198
|
+
'off',
|
|
199
|
+
{
|
|
200
|
+
multiline: {
|
|
201
|
+
delimiter: 'none',
|
|
202
|
+
requireLast: true
|
|
203
|
+
},
|
|
204
|
+
singleline: {
|
|
205
|
+
delimiter: 'semi',
|
|
206
|
+
requireLast: false
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
'@typescript-eslint/member-ordering': 'off',
|
|
211
|
+
// "@typescript-eslint/naming-convention": "error",
|
|
212
|
+
'@typescript-eslint/no-empty-function': 'error',
|
|
213
|
+
'@typescript-eslint/no-empty-interface': 'error',
|
|
214
|
+
'@typescript-eslint/no-explicit-any': 'off',
|
|
215
|
+
'@typescript-eslint/no-misused-new': 'error',
|
|
216
|
+
'@typescript-eslint/no-namespace': 'error',
|
|
217
|
+
'@typescript-eslint/no-parameter-properties': 'off',
|
|
218
|
+
'@typescript-eslint/no-this-alias': 'error',
|
|
219
|
+
'@typescript-eslint/no-unused-expressions': 'error',
|
|
220
|
+
'@typescript-eslint/no-use-before-define': 'off',
|
|
221
|
+
'@typescript-eslint/no-var-requires': 'error',
|
|
222
|
+
'@typescript-eslint/prefer-for-of': 'error',
|
|
223
|
+
'@typescript-eslint/prefer-function-type': 'error',
|
|
224
|
+
'@typescript-eslint/prefer-namespace-keyword': 'error',
|
|
225
|
+
// '@typescript-eslint/quotes': [
|
|
226
|
+
// 'error',
|
|
227
|
+
// 'single',
|
|
228
|
+
// {
|
|
229
|
+
// avoidEscape: true
|
|
230
|
+
// }
|
|
231
|
+
// ],
|
|
232
|
+
'@typescript-eslint/semi': ['off', null],
|
|
233
|
+
'@typescript-eslint/triple-slash-reference': [
|
|
234
|
+
'error',
|
|
235
|
+
{
|
|
236
|
+
path: 'always',
|
|
237
|
+
types: 'prefer-import',
|
|
238
|
+
lib: 'always'
|
|
239
|
+
}
|
|
240
|
+
],
|
|
241
|
+
'@typescript-eslint/type-annotation-spacing': 'off',
|
|
242
|
+
'@typescript-eslint/unified-signatures': 'error',
|
|
243
|
+
'@typescript-eslint/typedef': [
|
|
244
|
+
'error',
|
|
245
|
+
{
|
|
246
|
+
arrayDestructuring: false,
|
|
247
|
+
arrowParameter: false,
|
|
248
|
+
memberVariableDeclaration: false,
|
|
249
|
+
objectDestructuring: false,
|
|
250
|
+
parameter: true,
|
|
251
|
+
propertyDeclaration: false,
|
|
252
|
+
variableDeclaration: false,
|
|
253
|
+
variableDeclarationIgnoreFunction: true
|
|
254
|
+
}
|
|
255
|
+
],
|
|
256
|
+
'@typescript-eslint/tslint/config': [
|
|
257
|
+
'error',
|
|
258
|
+
{
|
|
259
|
+
rules: {
|
|
260
|
+
'prefer-conditional-expression': true,
|
|
261
|
+
typedef: [
|
|
262
|
+
true,
|
|
263
|
+
{
|
|
264
|
+
'call-signature': true
|
|
265
|
+
}
|
|
266
|
+
]
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
]
|
|
273
|
+
};
|
package/.prettierignore
ADDED
package/.prettierrc
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"eslintIntegration": true,
|
|
3
|
+
"singleQuote": true,
|
|
4
|
+
"tabWidth": 2,
|
|
5
|
+
"disableLanguages": [
|
|
6
|
+
"json"
|
|
7
|
+
],
|
|
8
|
+
"useTabs": false,
|
|
9
|
+
"printWidth": 120,
|
|
10
|
+
"jsxBracketSameLine": false,
|
|
11
|
+
"editor.tabSize": 2,
|
|
12
|
+
"editor.formatOnSave": true,
|
|
13
|
+
"[json]": {
|
|
14
|
+
"editor.formatOnSave": false
|
|
15
|
+
},
|
|
16
|
+
"tslint.autoFixOnSave": true,
|
|
17
|
+
"trailingComma": "none",
|
|
18
|
+
"arrowParens": "avoid"
|
|
19
|
+
}
|
package/CODEOWNERS
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React, { useState } from 'main/react';
|
|
2
|
+
import { EnrichmentComponent } from 'components';
|
|
3
|
+
import { Typography, FormGroup, FormControlLabel, Switch } from 'main/@material-ui/core';
|
|
4
|
+
import styles from './styles.styl';
|
|
5
|
+
import classnames from 'classnames';
|
|
6
|
+
|
|
7
|
+
const App = () => {
|
|
8
|
+
const [showBorderChecked, setShowBorderChecked] = useState(true);
|
|
9
|
+
const toggleBorderChecked = () => {
|
|
10
|
+
setShowBorderChecked(!showBorderChecked);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<div className={styles.root}>
|
|
15
|
+
<Typography variant="h4">Component Harness</Typography>
|
|
16
|
+
|
|
17
|
+
<div className={styles.contentWrapper}>
|
|
18
|
+
<FormGroup>
|
|
19
|
+
<FormControlLabel
|
|
20
|
+
control={<Switch size="small" checked={showBorderChecked} onChange={toggleBorderChecked} />}
|
|
21
|
+
label="Show Border"
|
|
22
|
+
/>
|
|
23
|
+
</FormGroup>
|
|
24
|
+
<div
|
|
25
|
+
className={classnames([styles.componentContainer, showBorderChecked ? styles.showBorder : styles.hideBorder])}
|
|
26
|
+
>
|
|
27
|
+
<EnrichmentComponent previewMode={true} />
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export default App;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
@import './reset.styl'
|
|
2
|
+
@import './fonts.styl'
|
|
3
|
+
@import './vars.styl'
|
|
4
|
+
|
|
5
|
+
html
|
|
6
|
+
font-size: 62.5% // allows for rems - see http://snook.ca/archives/html_and_css/font-size-with-rem. tl;dr: it equals 10px with a standard default of 12px.
|
|
7
|
+
|
|
8
|
+
body
|
|
9
|
+
font-size: 1.4rem
|
|
10
|
+
font-family: $primaryFont
|
|
11
|
+
font-weight: 400
|
|
12
|
+
color: $black
|
|
13
|
+
cursor: default
|
|
14
|
+
background: #f7f7f7
|
|
15
|
+
|
|
16
|
+
button
|
|
17
|
+
font-family: $primaryFont
|
|
18
|
+
|
|
19
|
+
a
|
|
20
|
+
$linkColor = #0fa3e1
|
|
21
|
+
text-decoration: none
|
|
22
|
+
color: $linkColor
|
|
23
|
+
|
|
24
|
+
&:visited
|
|
25
|
+
color: $linkColor
|
|
26
|
+
|
|
27
|
+
&:hover
|
|
28
|
+
color: $betterviewBlue
|
|
29
|
+
|
|
30
|
+
textarea
|
|
31
|
+
input
|
|
32
|
+
outline: none
|
|
33
|
+
|
|
34
|
+
|