Browse Source

feat(modals): use dark theme

j8
Leonard Kim 7 years ago
parent
commit
134ff71c78

+ 1
- 0
.flowconfig View File

18
 
18
 
19
 ; Ignore packages in node_modules which we (i.e. the jitsi-meet project) have
19
 ; Ignore packages in node_modules which we (i.e. the jitsi-meet project) have
20
 ; seen to cause errors and we have chosen not to fix.
20
 ; seen to cause errors and we have chosen not to fix.
21
+.*/node_modules/@atlaskit/.*/*.js.flow
21
 .*/node_modules/@atlassian
22
 .*/node_modules/@atlassian
22
 .*/node_modules/bower/lib/node_modules/bower-json/test/.*
23
 .*/node_modules/bower/lib/node_modules/bower-json/test/.*
23
 .*/node_modules/immutable/dist/immutable.js.flow
24
 .*/node_modules/immutable/dist/immutable.js.flow

+ 0
- 1
css/_aui_reset.scss View File

135
   margin: 30px 0 0 0;
135
   margin: 30px 0 0 0;
136
 }
136
 }
137
 h4 {
137
 h4 {
138
-  color: #333;
139
   font-size: 16px;
138
   font-size: 16px;
140
   font-weight: bold;
139
   font-weight: bold;
141
   line-height: 1.25;
140
   line-height: 1.25;

+ 6
- 2
css/modals/_dialog.scss View File

101
             }
101
             }
102
 
102
 
103
             &-content {
103
             &-content {
104
-                background-color: $auiDialogContentBg;
104
+                background-color: $auiDialogBg;
105
                 box-sizing: border-box;
105
                 box-sizing: border-box;
106
                 color: $auiDialogColor;
106
                 color: $auiDialogColor;
107
                 font-size: em(14, 12);
107
                 font-size: em(14, 12);
126
         }
126
         }
127
     }
127
     }
128
 
128
 
129
+    .input-control {
130
+        background-color: $auiDialogContentBg;
131
+        color: $auiDialogColor;
132
+    }
133
+
129
     .form-control:not(:last-child) {
134
     .form-control:not(:last-child) {
130
         border-bottom: 1px solid $auiBorderColor;
135
         border-bottom: 1px solid $auiBorderColor;
131
     }
136
     }
138
 }
143
 }
139
 
144
 
140
 .modal-dialog-form {
145
 .modal-dialog-form {
141
-    color: $modalTextColor;
142
     margin-top: 5px !important;
146
     margin-top: 5px !important;
143
 
147
 
144
     .input-control {
148
     .input-control {

+ 1
- 2
css/modals/desktop-picker/_desktop-picker.scss View File

36
 }
36
 }
37
 
37
 
38
 .desktop-picker-source {
38
 .desktop-picker-source {
39
-    color: $defaultDarkFontColor;
40
     margin-top: 10px;
39
     margin-top: 10px;
41
     text-align: center;
40
     text-align: center;
42
 
41
 
43
     &.is-selected {
42
     &.is-selected {
44
         .desktop-source-preview-image-container {
43
         .desktop-source-preview-image-container {
45
-            background: rgba(0, 0, 0, 0.1);
44
+            background: rgba(255,255,255,0.3);
46
             border-radius: $borderRadius;
45
             border-radius: $borderRadius;
47
         }
46
         }
48
     }
47
     }

+ 7
- 11
css/modals/device-selection/_device-selection.scss View File

1
 .device-selection {
1
 .device-selection {
2
-    color: $feedbackInputTextColor;
3
-
4
     .device-selectors {
2
     .device-selectors {
5
         font-size: 14px;
3
         font-size: 14px;
6
 
4
 
22
 
20
 
23
         /* device-selector-trigger stylings attempt to mimic AtlasKit button */
21
         /* device-selector-trigger stylings attempt to mimic AtlasKit button */
24
         .device-selector-trigger {
22
         .device-selector-trigger {
25
-            background-color: rgba(9, 30, 66, 0.04);
26
-            border-radius: 3px;
27
-            color: #505f79;
23
+            background-color: #0E1624;
24
+            border: 1px solid #455166;
25
+            border-radius: 5px;
28
             display: flex;
26
             display: flex;
29
             height: 2.3em;
27
             height: 2.3em;
30
             justify-content: space-between;
28
             justify-content: space-between;
31
             line-height: 2.3em;
29
             line-height: 2.3em;
32
             overflow: hidden;
30
             overflow: hidden;
33
             padding: 0 8px;
31
             padding: 0 8px;
34
-
35
-            &:hover {
36
-                background-color: rgba(9,30,66,.08);
37
-            }
38
         }
32
         }
39
         .device-selector-trigger-disabled {
33
         .device-selector-trigger-disabled {
40
             .device-selector-trigger {
34
             .device-selector-trigger {
108
     .audio-output-preview {
102
     .audio-output-preview {
109
         font-size: 14px;
103
         font-size: 14px;
110
         margin-top: 10px;
104
         margin-top: 10px;
105
+
111
         a {
106
         a {
107
+            color: 4C9AFF;
112
             cursor: pointer;
108
             cursor: pointer;
113
             text-decoration: none;
109
             text-decoration: none;
114
         }
110
         }
115
     }
111
     }
116
 
112
 
117
     .audio-input-preview {
113
     .audio-input-preview {
118
-        background: #f4f5f7;
114
+        background: #7b7b7b;
119
         border-radius: 5px;
115
         border-radius: 5px;
120
         height: 6px;
116
         height: 6px;
121
 
117
 
122
         .audio-input-preview-level {
118
         .audio-input-preview-level {
123
-            background: #0052cc;
119
+            background: #4C9AFF;
124
             border-radius: 5px;
120
             border-radius: 5px;
125
             height: 100%;
121
             height: 100%;
126
             -webkit-transition: width .1s ease-in-out;
122
             -webkit-transition: width .1s ease-in-out;

+ 0
- 4
css/modals/speaker_stats/_speaker_stats.scss View File

42
         width: 55%;
42
         width: 55%;
43
     }
43
     }
44
 
44
 
45
-    .speaker-stats-item:nth-child(even) {
46
-        background: whitesmoke;
47
-    }
48
-
49
     .speaker-stats-item__name,
45
     .speaker-stats-item__name,
50
     .speaker-stats-item__time {
46
     .speaker-stats-item__time {
51
         overflow: hidden;
47
         overflow: hidden;

+ 10
- 10
css/themes/_light.scss View File

14
 /**
14
 /**
15
 * Buttons
15
 * Buttons
16
 */
16
 */
17
-$buttonBackground: #f5f5f5;
18
-$buttonHoverBackground: #e9e9e9;
19
-$buttonBorder: #ccc;
20
-$buttonHoverBorder: #999;
21
-$buttonColor: #333;
17
+$buttonBackground: #44A5FF;
18
+$buttonHoverBackground: #2c4062;
19
+$buttonBorder: transparent;
20
+$buttonHoverBorder: transparent;
21
+$buttonColor: #eceef1;
22
 
22
 
23
 $buttonLightBackground: #f5f5f5;
23
 $buttonLightBackground: #f5f5f5;
24
 $buttonLightHoverBackground: #e9e9e9;
24
 $buttonLightHoverBackground: #e9e9e9;
47
 /**
47
 /**
48
  * Dialog colors
48
  * Dialog colors
49
  **/
49
  **/
50
-$auiDialogColor: #333;
51
-$auiDialogBg: #f5f5f5;
52
-$auiDialogContentBg: $baseLight;
53
-$auiBorderColor: #ccc;
50
+$auiDialogColor: #eceef1;
51
+$auiDialogBg: #253858;
52
+$auiDialogContentBg: #344563;
53
+$auiBorderColor: #253858;
54
 $dialogTitleFontWeight: 400;
54
 $dialogTitleFontWeight: 400;
55
 $dialogErrorText: #344563;
55
 $dialogErrorText: #344563;
56
 
56
 
58
 * Inlay colors
58
 * Inlay colors
59
 **/
59
 **/
60
 $inlayColorBg: lighten($defaultBackground, 20%);
60
 $inlayColorBg: lighten($defaultBackground, 20%);
61
-$inlayBorderColor: lighten($auiDialogContentBg, 10%);
61
+$inlayBorderColor: lighten($baseLight, 10%);
62
 $inlayIconBg: #000;
62
 $inlayIconBg: #000;
63
 $inlayIconColor: #fff;
63
 $inlayIconColor: #fff;
64
 $inlayFilmstripOnlyColor: #474747;
64
 $inlayFilmstripOnlyColor: #474747;

+ 1
- 1
css/unsupported-browser/_no-mobile-app.scss View File

5
     width: auto;
5
     width: auto;
6
 
6
 
7
     &__title {
7
     &__title {
8
-        border-bottom: 1px solid $auiBorderColor;
8
+        border-bottom: 1px solid $inlayBorderColor;
9
         color: $unsupportedBrowserTitleColor;
9
         color: $unsupportedBrowserTitleColor;
10
         font-weight: 400;
10
         font-weight: 400;
11
         letter-spacing: 0.5px;
11
         letter-spacing: 0.5px;

+ 451
- 102
package-lock.json View File

4
   "lockfileVersion": 1,
4
   "lockfileVersion": 1,
5
   "requires": true,
5
   "requires": true,
6
   "dependencies": {
6
   "dependencies": {
7
+    "@atlaskit/analytics-next": {
8
+      "version": "1.1.3",
9
+      "resolved": "https://registry.npmjs.org/@atlaskit/analytics-next/-/analytics-next-1.1.3.tgz",
10
+      "integrity": "sha512-1r9kU2ZbleLCEpJhoPoor/IBbyRue22sutT/+5b8PY43xRgN4HzYT+lWBJRI9fWpG9yJJXLnr9uAjO8LJUKrCg==",
11
+      "requires": {
12
+        "prop-types": "15.6.0"
13
+      }
14
+    },
7
     "@atlaskit/avatar": {
15
     "@atlaskit/avatar": {
8
       "version": "8.0.5",
16
       "version": "8.0.5",
9
       "resolved": "https://registry.npmjs.org/@atlaskit/avatar/-/avatar-8.0.5.tgz",
17
       "resolved": "https://registry.npmjs.org/@atlaskit/avatar/-/avatar-8.0.5.tgz",
10
       "integrity": "sha1-mJ4NkoR7N4yphKI+oHWY9jUhP/I=",
18
       "integrity": "sha1-mJ4NkoR7N4yphKI+oHWY9jUhP/I=",
11
       "requires": {
19
       "requires": {
12
         "@atlaskit/dropdown-menu": "3.10.2",
20
         "@atlaskit/dropdown-menu": "3.10.2",
13
-        "@atlaskit/theme": "2.2.0",
14
-        "@atlaskit/util-shared-styles": "2.10.6",
15
-        "babel-runtime": "6.26.0",
16
-        "prop-types": "15.6.0",
17
-        "styled-components": "1.3.0"
18
-      }
19
-    },
20
-    "@atlaskit/blanket": {
21
-      "version": "2.4.3",
22
-      "resolved": "https://registry.npmjs.org/@atlaskit/blanket/-/blanket-2.4.3.tgz",
23
-      "integrity": "sha1-5kJGkzk+FxcZ1z8MDiw4OnqkzYA=",
24
-      "requires": {
21
+        "@atlaskit/theme": "2.4.0",
25
         "@atlaskit/util-shared-styles": "2.10.6",
22
         "@atlaskit/util-shared-styles": "2.10.6",
26
         "babel-runtime": "6.26.0",
23
         "babel-runtime": "6.26.0",
27
         "prop-types": "15.6.0",
24
         "prop-types": "15.6.0",
28
-        "styled-components": "1.3.0"
25
+        "styled-components": "1.4.6"
29
       }
26
       }
30
     },
27
     },
31
     "@atlaskit/button": {
28
     "@atlaskit/button": {
33
       "resolved": "https://registry.npmjs.org/@atlaskit/button/-/button-5.4.2.tgz",
30
       "resolved": "https://registry.npmjs.org/@atlaskit/button/-/button-5.4.2.tgz",
34
       "integrity": "sha1-CSu+/KR+fPJJBQzRu9/E18o0KYQ=",
31
       "integrity": "sha1-CSu+/KR+fPJJBQzRu9/E18o0KYQ=",
35
       "requires": {
32
       "requires": {
36
-        "@atlaskit/theme": "2.2.0",
33
+        "@atlaskit/theme": "2.4.0",
37
         "babel-runtime": "6.26.0",
34
         "babel-runtime": "6.26.0",
38
         "classnames": "2.2.5",
35
         "classnames": "2.2.5",
39
         "prop-types": "15.6.0",
36
         "prop-types": "15.6.0",
40
-        "styled-components": "1.3.0"
37
+        "styled-components": "1.4.6"
41
       }
38
       }
42
     },
39
     },
43
     "@atlaskit/dropdown-menu": {
40
     "@atlaskit/dropdown-menu": {
93
         "@atlaskit/item": "4.2.11",
90
         "@atlaskit/item": "4.2.11",
94
         "@atlaskit/layer": "2.7.2",
91
         "@atlaskit/layer": "2.7.2",
95
         "@atlaskit/spinner": "4.0.0",
92
         "@atlaskit/spinner": "4.0.0",
96
-        "@atlaskit/theme": "2.2.0",
93
+        "@atlaskit/theme": "2.4.0",
97
         "@atlaskit/tooltip": "6.0.0",
94
         "@atlaskit/tooltip": "6.0.0",
98
         "babel-runtime": "6.26.0",
95
         "babel-runtime": "6.26.0",
99
         "classnames": "2.2.5",
96
         "classnames": "2.2.5",
219
       "integrity": "sha1-pasqvkxDkjQXiTb2JYNHmaiZRQ0=",
216
       "integrity": "sha1-pasqvkxDkjQXiTb2JYNHmaiZRQ0=",
220
       "requires": {
217
       "requires": {
221
         "@atlaskit/field-base": "8.1.13",
218
         "@atlaskit/field-base": "8.1.13",
222
-        "@atlaskit/theme": "2.2.0",
219
+        "@atlaskit/theme": "2.4.0",
223
         "babel-runtime": "6.26.0",
220
         "babel-runtime": "6.26.0",
224
         "prop-types": "15.6.0",
221
         "prop-types": "15.6.0",
225
-        "styled-components": "1.3.0"
222
+        "styled-components": "1.4.6"
223
+      }
224
+    },
225
+    "@atlaskit/field-text-area": {
226
+      "version": "1.2.0",
227
+      "resolved": "https://registry.npmjs.org/@atlaskit/field-text-area/-/field-text-area-1.2.0.tgz",
228
+      "integrity": "sha512-dLZk+KX8F8/nslTYAQEpf3iZnlhmey5uWhtoytBRax2aeBAHAt102E26C86B7Rw5r9JX81c7MuSZWW2pjbdY/Q==",
229
+      "requires": {
230
+        "@atlaskit/button": "6.6.3",
231
+        "@atlaskit/field-base": "8.2.1",
232
+        "@atlaskit/icon": "10.12.2",
233
+        "@atlaskit/theme": "2.4.0",
234
+        "@atlaskit/util-readme": "3.6.5",
235
+        "babel-runtime": "6.26.0",
236
+        "prop-types": "15.6.0",
237
+        "styled-components": "1.4.6"
238
+      },
239
+      "dependencies": {
240
+        "@atlaskit/button": {
241
+          "version": "6.6.3",
242
+          "resolved": "https://registry.npmjs.org/@atlaskit/button/-/button-6.6.3.tgz",
243
+          "integrity": "sha512-+NLQrWv6HeJPC32Q6o+3w59F3secYWPT+9AM9nblPOjvRXmIVosafkro8wncVzX07/nx7MnBIXtYJRE+Cv+9Vg==",
244
+          "requires": {
245
+            "@atlaskit/analytics-next": "1.1.3",
246
+            "@atlaskit/theme": "2.4.1",
247
+            "babel-runtime": "6.26.0",
248
+            "styled-components": "1.4.6"
249
+          },
250
+          "dependencies": {
251
+            "@atlaskit/theme": {
252
+              "version": "2.4.1",
253
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
254
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
255
+              "requires": {
256
+                "prop-types": "15.6.0",
257
+                "styled-components": "1.4.6"
258
+              }
259
+            }
260
+          }
261
+        },
262
+        "@atlaskit/field-base": {
263
+          "version": "8.2.1",
264
+          "resolved": "https://registry.npmjs.org/@atlaskit/field-base/-/field-base-8.2.1.tgz",
265
+          "integrity": "sha512-s18bwvmGug6sYZ6nuHLP33T2AWYZemteZCIaFPwlEKT4MkTXNX3KX9bYy8TRJmQo2+NC4uPVUUT2U8MeF4wBnQ==",
266
+          "requires": {
267
+            "@atlaskit/icon": "10.12.2",
268
+            "@atlaskit/inline-dialog": "5.3.2",
269
+            "@atlaskit/spinner": "4.2.1",
270
+            "@atlaskit/theme": "2.4.1",
271
+            "babel-runtime": "6.26.0",
272
+            "styled-components": "1.4.6"
273
+          },
274
+          "dependencies": {
275
+            "@atlaskit/theme": {
276
+              "version": "2.4.1",
277
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
278
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
279
+              "requires": {
280
+                "prop-types": "15.6.0",
281
+                "styled-components": "1.4.6"
282
+              }
283
+            }
284
+          }
285
+        },
286
+        "@atlaskit/icon": {
287
+          "version": "10.12.2",
288
+          "resolved": "https://registry.npmjs.org/@atlaskit/icon/-/icon-10.12.2.tgz",
289
+          "integrity": "sha512-OGNCVg8CdyaF/pD6DyhSaiK2pfb5R0jTWezlKCeKNXpmNiLUF4/B5MkOJFBMAHZc1A3EpBr9YNqH/uhJvG9G/Q==",
290
+          "requires": {
291
+            "@atlaskit/theme": "2.4.1",
292
+            "babel-runtime": "6.26.0",
293
+            "styled-components": "1.4.6",
294
+            "uuid": "3.1.0"
295
+          },
296
+          "dependencies": {
297
+            "@atlaskit/theme": {
298
+              "version": "2.4.1",
299
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
300
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
301
+              "requires": {
302
+                "prop-types": "15.6.0",
303
+                "styled-components": "1.4.6"
304
+              }
305
+            }
306
+          }
307
+        },
308
+        "@atlaskit/inline-dialog": {
309
+          "version": "5.3.2",
310
+          "resolved": "https://registry.npmjs.org/@atlaskit/inline-dialog/-/inline-dialog-5.3.2.tgz",
311
+          "integrity": "sha512-FUZZBi9x6Cr1bpd/f00Q262wLlTfl0Sl7PJUQLoHxy0u7Zg9lBLrUEoxuGh0OlOlqvQA99lJK23igZYOXDe9xA==",
312
+          "requires": {
313
+            "@atlaskit/layer": "2.9.1",
314
+            "@atlaskit/theme": "2.4.1",
315
+            "styled-components": "1.4.6"
316
+          },
317
+          "dependencies": {
318
+            "@atlaskit/theme": {
319
+              "version": "2.4.1",
320
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
321
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
322
+              "requires": {
323
+                "prop-types": "15.6.0",
324
+                "styled-components": "1.4.6"
325
+              }
326
+            }
327
+          }
328
+        },
329
+        "@atlaskit/layer": {
330
+          "version": "2.9.1",
331
+          "resolved": "https://registry.npmjs.org/@atlaskit/layer/-/layer-2.9.1.tgz",
332
+          "integrity": "sha512-nyIVGeS2OhuGR5gIMTYUfRmCG8z/9KMgUzTpbpsB70sH6+d4KSFhfkz+KhKNIa8gvKI6zBc+3UBYSlUW1t1qmQ==",
333
+          "requires": {
334
+            "styled-components": "1.4.6"
335
+          }
336
+        },
337
+        "@atlaskit/spinner": {
338
+          "version": "4.2.1",
339
+          "resolved": "https://registry.npmjs.org/@atlaskit/spinner/-/spinner-4.2.1.tgz",
340
+          "integrity": "sha512-PWJ3hFMl+7rls0vvwFtH6qOu9HKeIHQFtDvJ/+HykmhzIp1tQ+S5DQ+et4ciHfNSh2On2GNiLcZHwXahHvR5WA==",
341
+          "requires": {
342
+            "@atlaskit/theme": "2.4.1",
343
+            "babel-runtime": "6.26.0",
344
+            "react-transition-group": "2.2.1",
345
+            "styled-components": "1.4.6"
346
+          },
347
+          "dependencies": {
348
+            "@atlaskit/theme": {
349
+              "version": "2.4.1",
350
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
351
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
352
+              "requires": {
353
+                "prop-types": "15.6.0",
354
+                "styled-components": "1.4.6"
355
+              }
356
+            }
357
+          }
358
+        },
359
+        "react-transition-group": {
360
+          "version": "2.2.1",
361
+          "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.2.1.tgz",
362
+          "integrity": "sha512-q54UBM22bs/CekG8r3+vi9TugSqh0t7qcEVycaRc9M0p0aCEu+h6rp/RFiW7fHfgd1IKpd9oILFTl5QK+FpiPA==",
363
+          "requires": {
364
+            "chain-function": "1.0.0",
365
+            "classnames": "2.2.5",
366
+            "dom-helpers": "3.3.1",
367
+            "loose-envify": "1.3.1",
368
+            "prop-types": "15.6.0",
369
+            "warning": "3.0.0"
370
+          }
371
+        }
226
       }
372
       }
227
     },
373
     },
228
     "@atlaskit/flag": {
374
     "@atlaskit/flag": {
232
       "requires": {
378
       "requires": {
233
         "@atlaskit/button": "5.4.2",
379
         "@atlaskit/button": "5.4.2",
234
         "@atlaskit/icon": "7.1.0",
380
         "@atlaskit/icon": "7.1.0",
235
-        "@atlaskit/theme": "2.2.0",
381
+        "@atlaskit/theme": "2.4.0",
236
         "@atlaskit/util-shared-styles": "2.10.6",
382
         "@atlaskit/util-shared-styles": "2.10.6",
237
         "babel-runtime": "6.26.0",
383
         "babel-runtime": "6.26.0",
238
         "prop-types": "15.6.0",
384
         "prop-types": "15.6.0",
239
         "react-transition-group": "1.2.1",
385
         "react-transition-group": "1.2.1",
240
-        "styled-components": "1.3.0"
386
+        "styled-components": "1.4.6"
241
       },
387
       },
242
       "dependencies": {
388
       "dependencies": {
243
         "@atlaskit/icon": {
389
         "@atlaskit/icon": {
247
           "requires": {
393
           "requires": {
248
             "babel-runtime": "6.26.0",
394
             "babel-runtime": "6.26.0",
249
             "prop-types": "15.6.0",
395
             "prop-types": "15.6.0",
250
-            "styled-components": "1.3.0"
396
+            "styled-components": "1.4.6"
251
           }
397
           }
252
         }
398
         }
253
       }
399
       }
259
       "requires": {
405
       "requires": {
260
         "babel-runtime": "6.26.0",
406
         "babel-runtime": "6.26.0",
261
         "prop-types": "15.6.0",
407
         "prop-types": "15.6.0",
262
-        "styled-components": "1.3.0"
408
+        "styled-components": "1.4.6"
263
       }
409
       }
264
     },
410
     },
265
     "@atlaskit/inline-dialog": {
411
     "@atlaskit/inline-dialog": {
268
       "integrity": "sha1-xwPi9seo0M+nrcPXgJK0bE7ShkQ=",
414
       "integrity": "sha1-xwPi9seo0M+nrcPXgJK0bE7ShkQ=",
269
       "requires": {
415
       "requires": {
270
         "@atlaskit/layer": "2.7.2",
416
         "@atlaskit/layer": "2.7.2",
271
-        "@atlaskit/theme": "2.2.0",
417
+        "@atlaskit/theme": "2.4.0",
272
         "babel-runtime": "6.26.0",
418
         "babel-runtime": "6.26.0",
273
         "prop-types": "15.6.0",
419
         "prop-types": "15.6.0",
274
-        "styled-components": "1.3.0"
420
+        "styled-components": "1.4.6"
275
       }
421
       }
276
     },
422
     },
277
     "@atlaskit/inline-message": {
423
     "@atlaskit/inline-message": {
282
         "@atlaskit/button": "3.6.0",
428
         "@atlaskit/button": "3.6.0",
283
         "@atlaskit/icon": "7.1.0",
429
         "@atlaskit/icon": "7.1.0",
284
         "@atlaskit/inline-dialog": "5.0.2",
430
         "@atlaskit/inline-dialog": "5.0.2",
285
-        "@atlaskit/theme": "2.2.0",
431
+        "@atlaskit/theme": "2.4.0",
286
         "babel-runtime": "6.26.0",
432
         "babel-runtime": "6.26.0",
287
         "prop-types": "15.6.0",
433
         "prop-types": "15.6.0",
288
-        "styled-components": "1.3.0"
434
+        "styled-components": "1.4.6"
289
       },
435
       },
290
       "dependencies": {
436
       "dependencies": {
291
         "@atlaskit/button": {
437
         "@atlaskit/button": {
297
             "babel-runtime": "6.26.0",
443
             "babel-runtime": "6.26.0",
298
             "classnames": "2.2.5",
444
             "classnames": "2.2.5",
299
             "prop-types": "15.6.0",
445
             "prop-types": "15.6.0",
300
-            "styled-components": "1.3.0"
446
+            "styled-components": "1.4.6"
301
           }
447
           }
302
         },
448
         },
303
         "@atlaskit/icon": {
449
         "@atlaskit/icon": {
307
           "requires": {
453
           "requires": {
308
             "babel-runtime": "6.26.0",
454
             "babel-runtime": "6.26.0",
309
             "prop-types": "15.6.0",
455
             "prop-types": "15.6.0",
310
-            "styled-components": "1.3.0"
456
+            "styled-components": "1.4.6"
311
           }
457
           }
312
         }
458
         }
313
       }
459
       }
375
         }
521
         }
376
       }
522
       }
377
     },
523
     },
524
+    "@atlaskit/layer-manager": {
525
+      "version": "2.8.0",
526
+      "resolved": "https://registry.npmjs.org/@atlaskit/layer-manager/-/layer-manager-2.8.0.tgz",
527
+      "integrity": "sha512-/o4c+zyF3nOeR3xJGFeUpOh8TUbcX293285Nvxcbo1F+knM7WA1JhE786XkTK05nZ2HCqK6zHKSlyIoKdJYtkw==",
528
+      "requires": {
529
+        "focusin": "2.0.0",
530
+        "prop-types": "15.6.0",
531
+        "react-transition-group": "2.2.1",
532
+        "styled-components": "1.4.6",
533
+        "tabbable": "1.1.2"
534
+      },
535
+      "dependencies": {
536
+        "react-transition-group": {
537
+          "version": "2.2.1",
538
+          "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.2.1.tgz",
539
+          "integrity": "sha512-q54UBM22bs/CekG8r3+vi9TugSqh0t7qcEVycaRc9M0p0aCEu+h6rp/RFiW7fHfgd1IKpd9oILFTl5QK+FpiPA==",
540
+          "requires": {
541
+            "chain-function": "1.0.0",
542
+            "classnames": "2.2.5",
543
+            "dom-helpers": "3.3.1",
544
+            "loose-envify": "1.3.1",
545
+            "prop-types": "15.6.0",
546
+            "warning": "3.0.0"
547
+          }
548
+        }
549
+      }
550
+    },
378
     "@atlaskit/lozenge": {
551
     "@atlaskit/lozenge": {
379
       "version": "3.4.2",
552
       "version": "3.4.2",
380
       "resolved": "https://registry.npmjs.org/@atlaskit/lozenge/-/lozenge-3.4.2.tgz",
553
       "resolved": "https://registry.npmjs.org/@atlaskit/lozenge/-/lozenge-3.4.2.tgz",
383
         "@atlaskit/util-shared-styles": "1.7.1",
556
         "@atlaskit/util-shared-styles": "1.7.1",
384
         "babel-runtime": "6.26.0",
557
         "babel-runtime": "6.26.0",
385
         "prop-types": "15.6.0",
558
         "prop-types": "15.6.0",
386
-        "styled-components": "1.3.0"
559
+        "styled-components": "1.4.6"
387
       },
560
       },
388
       "dependencies": {
561
       "dependencies": {
389
         "@atlaskit/util-shared-styles": {
562
         "@atlaskit/util-shared-styles": {
397
       }
570
       }
398
     },
571
     },
399
     "@atlaskit/modal-dialog": {
572
     "@atlaskit/modal-dialog": {
400
-      "version": "2.6.0",
401
-      "resolved": "https://registry.npmjs.org/@atlaskit/modal-dialog/-/modal-dialog-2.6.0.tgz",
402
-      "integrity": "sha1-gqXtcN8W5s6ttZHQDeYvTzx3jiE=",
403
-      "requires": {
404
-        "@atlaskit/blanket": "2.4.3",
405
-        "@atlaskit/util-shared-styles": "2.10.6",
406
-        "babel-runtime": "6.26.0",
573
+      "version": "3.4.0",
574
+      "resolved": "https://registry.npmjs.org/@atlaskit/modal-dialog/-/modal-dialog-3.4.0.tgz",
575
+      "integrity": "sha512-5KOZrwCanzXD3b9+kQYIS4tACAj/HjcwY+yLGY1SCxlDxj94uUNr+tTAznng3EKRf64UbqshrRQXBj8Fcol4sw==",
576
+      "requires": {
577
+        "@atlaskit/blanket": "4.1.1",
578
+        "@atlaskit/button": "6.6.3",
579
+        "@atlaskit/icon": "10.12.2",
580
+        "@atlaskit/layer-manager": "2.8.0",
581
+        "@atlaskit/theme": "2.4.0",
582
+        "focusin": "2.0.0",
407
         "prop-types": "15.6.0",
583
         "prop-types": "15.6.0",
408
-        "styled-components": "1.3.0"
584
+        "raf-schd": "2.1.0",
585
+        "react-transition-group": "2.2.1",
586
+        "styled-components": "1.4.6",
587
+        "tabbable": "1.1.2"
588
+      },
589
+      "dependencies": {
590
+        "@atlaskit/blanket": {
591
+          "version": "4.1.1",
592
+          "resolved": "https://registry.npmjs.org/@atlaskit/blanket/-/blanket-4.1.1.tgz",
593
+          "integrity": "sha512-LPqRNVkR6+mI67EutF6iQIUARf1MWpjdVxeLaMJZOG/ej8u9dYIkoOOVeliXx/bx+4X5NfnKikeg34MB6VU5DQ==",
594
+          "requires": {
595
+            "@atlaskit/theme": "2.4.1",
596
+            "styled-components": "1.4.6"
597
+          },
598
+          "dependencies": {
599
+            "@atlaskit/theme": {
600
+              "version": "2.4.1",
601
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
602
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
603
+              "requires": {
604
+                "prop-types": "15.6.0",
605
+                "styled-components": "1.4.6"
606
+              }
607
+            }
608
+          }
609
+        },
610
+        "@atlaskit/button": {
611
+          "version": "6.6.3",
612
+          "resolved": "https://registry.npmjs.org/@atlaskit/button/-/button-6.6.3.tgz",
613
+          "integrity": "sha512-+NLQrWv6HeJPC32Q6o+3w59F3secYWPT+9AM9nblPOjvRXmIVosafkro8wncVzX07/nx7MnBIXtYJRE+Cv+9Vg==",
614
+          "requires": {
615
+            "@atlaskit/analytics-next": "1.1.3",
616
+            "@atlaskit/theme": "2.4.1",
617
+            "babel-runtime": "6.26.0",
618
+            "styled-components": "1.4.6"
619
+          },
620
+          "dependencies": {
621
+            "@atlaskit/theme": {
622
+              "version": "2.4.1",
623
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
624
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
625
+              "requires": {
626
+                "prop-types": "15.6.0",
627
+                "styled-components": "1.4.6"
628
+              }
629
+            }
630
+          }
631
+        },
632
+        "@atlaskit/icon": {
633
+          "version": "10.12.2",
634
+          "resolved": "https://registry.npmjs.org/@atlaskit/icon/-/icon-10.12.2.tgz",
635
+          "integrity": "sha512-OGNCVg8CdyaF/pD6DyhSaiK2pfb5R0jTWezlKCeKNXpmNiLUF4/B5MkOJFBMAHZc1A3EpBr9YNqH/uhJvG9G/Q==",
636
+          "requires": {
637
+            "@atlaskit/theme": "2.4.1",
638
+            "babel-runtime": "6.26.0",
639
+            "styled-components": "1.4.6",
640
+            "uuid": "3.1.0"
641
+          },
642
+          "dependencies": {
643
+            "@atlaskit/theme": {
644
+              "version": "2.4.1",
645
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
646
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
647
+              "requires": {
648
+                "prop-types": "15.6.0",
649
+                "styled-components": "1.4.6"
650
+              }
651
+            }
652
+          }
653
+        },
654
+        "react-transition-group": {
655
+          "version": "2.2.1",
656
+          "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.2.1.tgz",
657
+          "integrity": "sha512-q54UBM22bs/CekG8r3+vi9TugSqh0t7qcEVycaRc9M0p0aCEu+h6rp/RFiW7fHfgd1IKpd9oILFTl5QK+FpiPA==",
658
+          "requires": {
659
+            "chain-function": "1.0.0",
660
+            "classnames": "2.2.5",
661
+            "dom-helpers": "3.3.1",
662
+            "loose-envify": "1.3.1",
663
+            "prop-types": "15.6.0",
664
+            "warning": "3.0.0"
665
+          }
666
+        }
409
       }
667
       }
410
     },
668
     },
411
     "@atlaskit/multi-select": {
669
     "@atlaskit/multi-select": {
419
         "@atlaskit/spinner": "3.4.2",
677
         "@atlaskit/spinner": "3.4.2",
420
         "@atlaskit/tag": "3.1.3",
678
         "@atlaskit/tag": "3.1.3",
421
         "@atlaskit/tag-group": "3.5.3",
679
         "@atlaskit/tag-group": "3.5.3",
422
-        "@atlaskit/theme": "2.2.0",
680
+        "@atlaskit/theme": "2.4.0",
423
         "@atlaskit/util-shared-styles": "2.10.6",
681
         "@atlaskit/util-shared-styles": "2.10.6",
424
         "babel-runtime": "6.26.0",
682
         "babel-runtime": "6.26.0",
425
         "classnames": "2.2.5",
683
         "classnames": "2.2.5",
426
         "prop-types": "15.6.0",
684
         "prop-types": "15.6.0",
427
-        "styled-components": "1.3.0",
685
+        "styled-components": "1.4.6",
428
         "uid": "0.0.2"
686
         "uid": "0.0.2"
429
       },
687
       },
430
       "dependencies": {
688
       "dependencies": {
437
             "classnames": "2.2.5",
695
             "classnames": "2.2.5",
438
             "create-error": "0.3.1",
696
             "create-error": "0.3.1",
439
             "prop-types": "15.6.0",
697
             "prop-types": "15.6.0",
440
-            "styled-components": "1.3.0"
698
+            "styled-components": "1.4.6"
441
           }
699
           }
442
         },
700
         },
443
         "@atlaskit/spinner": {
701
         "@atlaskit/spinner": {
450
             "prop-types": "15.6.0",
708
             "prop-types": "15.6.0",
451
             "prop-types-extra": "1.0.1",
709
             "prop-types-extra": "1.0.1",
452
             "react-transition-group": "1.2.1",
710
             "react-transition-group": "1.2.1",
453
-            "styled-components": "1.3.0"
711
+            "styled-components": "1.4.6"
454
           }
712
           }
455
         }
713
         }
456
       }
714
       }
460
       "resolved": "https://registry.npmjs.org/@atlaskit/spinner/-/spinner-4.0.0.tgz",
718
       "resolved": "https://registry.npmjs.org/@atlaskit/spinner/-/spinner-4.0.0.tgz",
461
       "integrity": "sha1-u8MaEjYPwzNhegZsMPhmRmJoOhA=",
719
       "integrity": "sha1-u8MaEjYPwzNhegZsMPhmRmJoOhA=",
462
       "requires": {
720
       "requires": {
463
-        "@atlaskit/theme": "2.2.0",
721
+        "@atlaskit/theme": "2.4.0",
464
         "babel-runtime": "6.26.0",
722
         "babel-runtime": "6.26.0",
465
         "prop-types": "15.6.0",
723
         "prop-types": "15.6.0",
466
         "prop-types-extra": "1.0.1",
724
         "prop-types-extra": "1.0.1",
467
         "react-transition-group": "1.2.1",
725
         "react-transition-group": "1.2.1",
468
-        "styled-components": "1.3.0"
726
+        "styled-components": "1.4.6"
469
       }
727
       }
470
     },
728
     },
471
     "@atlaskit/tabs": {
729
     "@atlaskit/tabs": {
473
       "resolved": "https://registry.npmjs.org/@atlaskit/tabs/-/tabs-4.0.1.tgz",
731
       "resolved": "https://registry.npmjs.org/@atlaskit/tabs/-/tabs-4.0.1.tgz",
474
       "integrity": "sha1-vM2WQ8nSO9kR+0GCK4U1oYJHHM8=",
732
       "integrity": "sha1-vM2WQ8nSO9kR+0GCK4U1oYJHHM8=",
475
       "requires": {
733
       "requires": {
476
-        "@atlaskit/theme": "2.2.0",
734
+        "@atlaskit/theme": "2.4.0",
477
         "@atlaskit/util-shared-styles": "1.7.1",
735
         "@atlaskit/util-shared-styles": "1.7.1",
478
         "classnames": "2.2.5",
736
         "classnames": "2.2.5",
479
         "css-element-queries": "0.3.2",
737
         "css-element-queries": "0.3.2",
480
         "debounce": "1.1.0",
738
         "debounce": "1.1.0",
481
         "keycode": "2.1.9",
739
         "keycode": "2.1.9",
482
         "prop-types": "15.6.0",
740
         "prop-types": "15.6.0",
483
-        "styled-components": "1.3.0"
741
+        "styled-components": "1.4.6"
484
       },
742
       },
485
       "dependencies": {
743
       "dependencies": {
486
         "@atlaskit/util-shared-styles": {
744
         "@atlaskit/util-shared-styles": {
571
       }
829
       }
572
     },
830
     },
573
     "@atlaskit/theme": {
831
     "@atlaskit/theme": {
574
-      "version": "2.2.0",
575
-      "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.2.0.tgz",
576
-      "integrity": "sha1-uHNsuA3U7TnizAkPLbFdz4eEgBo=",
832
+      "version": "2.4.0",
833
+      "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.0.tgz",
834
+      "integrity": "sha512-JORaZ4/9Bm8V2qsSC4O8Zn6aTHM0MJA4nVJPzxlvFJlz0CX6GTQ+CJiPPssJGidBR8Y78j0LvNXASH5ijLBChw==",
577
       "requires": {
835
       "requires": {
578
-        "@atlaskit/util-shared-styles": "2.10.6",
579
         "prop-types": "15.6.0",
836
         "prop-types": "15.6.0",
580
-        "styled-components": "1.3.0"
837
+        "styled-components": "1.4.6"
581
       }
838
       }
582
     },
839
     },
583
     "@atlaskit/tooltip": {
840
     "@atlaskit/tooltip": {
586
       "integrity": "sha1-rn3xMCmvO1iZqcuKNPPIT8K7mpc=",
843
       "integrity": "sha1-rn3xMCmvO1iZqcuKNPPIT8K7mpc=",
587
       "requires": {
844
       "requires": {
588
         "@atlaskit/layer": "2.7.2",
845
         "@atlaskit/layer": "2.7.2",
589
-        "@atlaskit/theme": "2.2.0",
846
+        "@atlaskit/theme": "2.4.0",
590
         "@atlaskit/util-shared-styles": "2.10.6",
847
         "@atlaskit/util-shared-styles": "2.10.6",
591
         "babel-runtime": "6.26.0",
848
         "babel-runtime": "6.26.0",
592
         "prop-types": "15.6.0",
849
         "prop-types": "15.6.0",
593
-        "styled-components": "1.3.0"
850
+        "styled-components": "1.4.6"
594
       }
851
       }
595
     },
852
     },
596
     "@atlaskit/util-common": {
853
     "@atlaskit/util-common": {
603
         "keycode": "2.1.9"
860
         "keycode": "2.1.9"
604
       }
861
       }
605
     },
862
     },
863
+    "@atlaskit/util-readme": {
864
+      "version": "3.6.5",
865
+      "resolved": "https://registry.npmjs.org/@atlaskit/util-readme/-/util-readme-3.6.5.tgz",
866
+      "integrity": "sha1-M6jgyQEI9liaYtiZdOH30J59zuc=",
867
+      "requires": {
868
+        "@atlaskit/util-shared-styles": "2.10.6",
869
+        "decamelize": "1.2.0",
870
+        "prop-types": "15.6.0",
871
+        "react-docgen": "2.20.1",
872
+        "react-syntax-highlighter": "3.0.2",
873
+        "styled-components": "1.4.6"
874
+      }
875
+    },
606
     "@atlaskit/util-shared-styles": {
876
     "@atlaskit/util-shared-styles": {
607
       "version": "2.10.6",
877
       "version": "2.10.6",
608
       "resolved": "https://registry.npmjs.org/@atlaskit/util-shared-styles/-/util-shared-styles-2.10.6.tgz",
878
       "resolved": "https://registry.npmjs.org/@atlaskit/util-shared-styles/-/util-shared-styles-2.10.6.tgz",
1107
       "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
1377
       "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
1108
       "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
1378
       "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
1109
     },
1379
     },
1380
+    "ast-types": {
1381
+      "version": "0.10.1",
1382
+      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz",
1383
+      "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ=="
1384
+    },
1110
     "async": {
1385
     "async": {
1111
       "version": "0.9.0",
1386
       "version": "0.9.0",
1112
       "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz",
1387
       "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz",
2194
     "babylon": {
2469
     "babylon": {
2195
       "version": "6.18.0",
2470
       "version": "6.18.0",
2196
       "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
2471
       "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
2197
-      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
2472
+      "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM="
2198
     },
2473
     },
2199
     "balanced-match": {
2474
     "balanced-match": {
2200
       "version": "1.0.0",
2475
       "version": "1.0.0",
3342
       "resolved": "https://registry.npmjs.org/css-element-queries/-/css-element-queries-0.3.2.tgz",
3617
       "resolved": "https://registry.npmjs.org/css-element-queries/-/css-element-queries-0.3.2.tgz",
3343
       "integrity": "sha1-U12AiRs68hOV0AXxmQX+UVS1zP8="
3618
       "integrity": "sha1-U12AiRs68hOV0AXxmQX+UVS1zP8="
3344
     },
3619
     },
3345
-    "css-in-js-utils": {
3346
-      "version": "2.0.0",
3347
-      "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.0.tgz",
3348
-      "integrity": "sha512-yuWmPMD9FLi50Xf3k8W8oO3WM1eVnxEGCldCLyfusQ+CgivFk0s23yst4ooW6tfxMuSa03S6uUEga9UhX6GRrA==",
3349
-      "requires": {
3350
-        "hyphenate-style-name": "1.0.2"
3351
-      }
3352
-    },
3353
     "css-loader": {
3620
     "css-loader": {
3354
       "version": "0.28.7",
3621
       "version": "0.28.7",
3355
       "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz",
3622
       "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz",
3675
       "version": "2.1.0",
3942
       "version": "2.1.0",
3676
       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
3943
       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
3677
       "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
3944
       "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
3678
-      "dev": true,
3679
       "requires": {
3945
       "requires": {
3680
         "esutils": "2.0.2"
3946
         "esutils": "2.0.2"
3681
       }
3947
       }
4128
         "esprima": {
4394
         "esprima": {
4129
           "version": "4.0.0",
4395
           "version": "4.0.0",
4130
           "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
4396
           "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
4131
-          "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
4397
+          "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=",
4132
           "dev": true
4398
           "dev": true
4133
         },
4399
         },
4134
         "globals": {
4400
         "globals": {
5017
         }
5283
         }
5018
       }
5284
       }
5019
     },
5285
     },
5286
+    "focusin": {
5287
+      "version": "2.0.0",
5288
+      "resolved": "https://registry.npmjs.org/focusin/-/focusin-2.0.0.tgz",
5289
+      "integrity": "sha1-WMARgN+xlJ8D493u4GNzn8M7b/w="
5290
+    },
5020
     "for-in": {
5291
     "for-in": {
5021
       "version": "1.0.2",
5292
       "version": "1.0.2",
5022
       "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
5293
       "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
5995
       "integrity": "sha1-nMj/ABF3lXoRcmq1CNQVu4Cxi88=",
6266
       "integrity": "sha1-nMj/ABF3lXoRcmq1CNQVu4Cxi88=",
5996
       "dev": true
6267
       "dev": true
5997
     },
6268
     },
5998
-    "glamor": {
5999
-      "version": "2.20.40",
6000
-      "resolved": "https://registry.npmjs.org/glamor/-/glamor-2.20.40.tgz",
6001
-      "integrity": "sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==",
6002
-      "requires": {
6003
-        "fbjs": "0.8.16",
6004
-        "inline-style-prefixer": "3.0.8",
6005
-        "object-assign": "4.1.1",
6006
-        "prop-types": "15.6.0",
6007
-        "through": "2.3.8"
6008
-      },
6009
-      "dependencies": {
6010
-        "inline-style-prefixer": {
6011
-          "version": "3.0.8",
6012
-          "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz",
6013
-          "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=",
6014
-          "requires": {
6015
-            "bowser": "1.9.2",
6016
-            "css-in-js-utils": "2.0.0"
6017
-          }
6018
-        }
6019
-      }
6020
-    },
6021
     "glob": {
6269
     "glob": {
6022
       "version": "7.1.2",
6270
       "version": "7.1.2",
6023
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
6271
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
6236
         "sntp": "2.1.0"
6484
         "sntp": "2.1.0"
6237
       }
6485
       }
6238
     },
6486
     },
6487
+    "highlight.js": {
6488
+      "version": "9.8.0",
6489
+      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.8.0.tgz",
6490
+      "integrity": "sha1-OO7vQM1F6t2+yMnlI4+3p4OjtoU="
6491
+    },
6239
     "hmac-drbg": {
6492
     "hmac-drbg": {
6240
       "version": "1.0.1",
6493
       "version": "1.0.1",
6241
       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
6494
       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
6496
         "source-map": {
6749
         "source-map": {
6497
           "version": "0.6.1",
6750
           "version": "0.6.1",
6498
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6751
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6499
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
6752
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
6500
           "dev": true
6753
           "dev": true
6501
         },
6754
         },
6502
         "supports-color": {
6755
         "supports-color": {
7467
         "signal-exit": "3.0.2"
7720
         "signal-exit": "3.0.2"
7468
       }
7721
       }
7469
     },
7722
     },
7723
+    "lowlight": {
7724
+      "version": "1.9.1",
7725
+      "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.9.1.tgz",
7726
+      "integrity": "sha512-CpDhyVhI+xHjruiGvH2F/Fr5q5aTn5A6Oyh7MI+4oI8G0A1E7p9a3Zqv9Hzx9WByK8gAiNifEueAXz+cA2xdEA==",
7727
+      "requires": {
7728
+        "highlight.js": "9.12.0"
7729
+      },
7730
+      "dependencies": {
7731
+        "highlight.js": {
7732
+          "version": "9.12.0",
7733
+          "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
7734
+          "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4="
7735
+        }
7736
+      }
7737
+    },
7470
     "lru-cache": {
7738
     "lru-cache": {
7471
       "version": "4.1.1",
7739
       "version": "4.1.1",
7472
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
7740
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
7811
         "async": {
8079
         "async": {
7812
           "version": "2.6.0",
8080
           "version": "2.6.0",
7813
           "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
8081
           "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
7814
-          "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
8082
+          "integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=",
7815
           "requires": {
8083
           "requires": {
7816
             "lodash": "4.17.4"
8084
             "lodash": "4.17.4"
7817
           }
8085
           }
8071
       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz",
8339
       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz",
8072
       "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g="
8340
       "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g="
8073
     },
8341
     },
8342
+    "node-dir": {
8343
+      "version": "0.1.17",
8344
+      "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
8345
+      "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=",
8346
+      "requires": {
8347
+        "minimatch": "3.0.4"
8348
+      }
8349
+    },
8074
     "node-fetch": {
8350
     "node-fetch": {
8075
       "version": "1.7.3",
8351
       "version": "1.7.3",
8076
       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
8352
       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
9087
         "source-map": {
9363
         "source-map": {
9088
           "version": "0.6.1",
9364
           "version": "0.6.1",
9089
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9365
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9090
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9366
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
9091
           "dev": true
9367
           "dev": true
9092
         },
9368
         },
9093
         "supports-color": {
9369
         "supports-color": {
9151
         "source-map": {
9427
         "source-map": {
9152
           "version": "0.6.1",
9428
           "version": "0.6.1",
9153
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9429
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9154
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9430
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
9155
           "dev": true
9431
           "dev": true
9156
         },
9432
         },
9157
         "supports-color": {
9433
         "supports-color": {
9215
         "source-map": {
9491
         "source-map": {
9216
           "version": "0.6.1",
9492
           "version": "0.6.1",
9217
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9493
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9218
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9494
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
9219
           "dev": true
9495
           "dev": true
9220
         },
9496
         },
9221
         "supports-color": {
9497
         "supports-color": {
9279
         "source-map": {
9555
         "source-map": {
9280
           "version": "0.6.1",
9556
           "version": "0.6.1",
9281
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9557
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9282
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9558
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
9283
           "dev": true
9559
           "dev": true
9284
         },
9560
         },
9285
         "supports-color": {
9561
         "supports-color": {
9601
       "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=",
9877
       "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=",
9602
       "dev": true
9878
       "dev": true
9603
     },
9879
     },
9880
+    "raf-schd": {
9881
+      "version": "2.1.0",
9882
+      "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-2.1.0.tgz",
9883
+      "integrity": "sha512-6OXM6ObuPnyqjiHVz/XaFTm/yEYC1PXYMt/UFCwMvLQK1Wqlc2f7eU4+8JbgjfZLiQNQU9miFEGPnFUEMEx2hA=="
9884
+    },
9604
     "railroad-diagrams": {
9885
     "railroad-diagrams": {
9605
       "version": "1.0.0",
9886
       "version": "1.0.0",
9606
       "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
9887
       "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
9754
         }
10035
         }
9755
       }
10036
       }
9756
     },
10037
     },
10038
+    "react-docgen": {
10039
+      "version": "2.20.1",
10040
+      "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-2.20.1.tgz",
10041
+      "integrity": "sha512-NYmD8nDPMWpIpqWqhSZjQ3P5iQml55IMkDG0ZInyWP7JD2ljaNhrxNWZnXPrOezUu6bYlcZUCxjw19s7zhE2uw==",
10042
+      "requires": {
10043
+        "async": "2.6.0",
10044
+        "babel-runtime": "6.26.0",
10045
+        "babylon": "5.8.38",
10046
+        "commander": "2.14.1",
10047
+        "doctrine": "2.1.0",
10048
+        "node-dir": "0.1.17",
10049
+        "recast": "0.12.9"
10050
+      },
10051
+      "dependencies": {
10052
+        "async": {
10053
+          "version": "2.6.0",
10054
+          "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
10055
+          "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
10056
+          "requires": {
10057
+            "lodash": "4.17.4"
10058
+          }
10059
+        },
10060
+        "babylon": {
10061
+          "version": "5.8.38",
10062
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz",
10063
+          "integrity": "sha1-7JsSCxG/bM1Bc6GL8hfmC3mFn/0="
10064
+        }
10065
+      }
10066
+    },
9757
     "react-dom": {
10067
     "react-dom": {
9758
       "version": "16.2.0",
10068
       "version": "16.2.0",
9759
       "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz",
10069
       "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz",
9984
         }
10294
         }
9985
       }
10295
       }
9986
     },
10296
     },
10297
+    "react-syntax-highlighter": {
10298
+      "version": "3.0.2",
10299
+      "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-3.0.2.tgz",
10300
+      "integrity": "sha1-d8VWOFu/cdwul0upa/3Q7e9cMZI=",
10301
+      "requires": {
10302
+        "babel-runtime": "6.26.0",
10303
+        "highlight.js": "9.8.0",
10304
+        "lowlight": "1.9.1"
10305
+      }
10306
+    },
9987
     "react-timer-mixin": {
10307
     "react-timer-mixin": {
9988
       "version": "0.13.3",
10308
       "version": "0.13.3",
9989
       "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz",
10309
       "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz",
10084
         }
10404
         }
10085
       }
10405
       }
10086
     },
10406
     },
10407
+    "recast": {
10408
+      "version": "0.12.9",
10409
+      "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz",
10410
+      "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==",
10411
+      "requires": {
10412
+        "ast-types": "0.10.1",
10413
+        "core-js": "2.5.3",
10414
+        "esprima": "4.0.0",
10415
+        "private": "0.1.8",
10416
+        "source-map": "0.6.1"
10417
+      },
10418
+      "dependencies": {
10419
+        "esprima": {
10420
+          "version": "4.0.0",
10421
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
10422
+          "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
10423
+        },
10424
+        "source-map": {
10425
+          "version": "0.6.1",
10426
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
10427
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
10428
+        }
10429
+      }
10430
+    },
10087
     "redent": {
10431
     "redent": {
10088
       "version": "1.0.0",
10432
       "version": "1.0.0",
10089
       "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
10433
       "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
11341
       }
11685
       }
11342
     },
11686
     },
11343
     "styled-components": {
11687
     "styled-components": {
11344
-      "version": "1.3.0",
11345
-      "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-1.3.0.tgz",
11346
-      "integrity": "sha1-BxG1qC/nhLRY/W5QVLhCdRxUOms=",
11688
+      "version": "1.4.6",
11689
+      "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-1.4.6.tgz",
11690
+      "integrity": "sha1-WPMuimq1EPsUgekB6DjgR38UiwY=",
11347
       "requires": {
11691
       "requires": {
11348
         "buffer": "5.1.0",
11692
         "buffer": "5.1.0",
11349
         "css-to-react-native": "1.0.6",
11693
         "css-to-react-native": "1.0.6",
11350
         "fbjs": "0.8.16",
11694
         "fbjs": "0.8.16",
11351
-        "glamor": "2.20.40",
11352
         "inline-style-prefixer": "2.0.5",
11695
         "inline-style-prefixer": "2.0.5",
11353
         "is-function": "1.0.1",
11696
         "is-function": "1.0.1",
11354
         "is-plain-object": "2.0.4",
11697
         "is-plain-object": "2.0.4",
11698
+        "prop-types": "15.6.0",
11355
         "supports-color": "3.2.3"
11699
         "supports-color": "3.2.3"
11356
       }
11700
       }
11357
     },
11701
     },
11397
       "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
11741
       "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
11398
       "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
11742
       "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
11399
     },
11743
     },
11744
+    "tabbable": {
11745
+      "version": "1.1.2",
11746
+      "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-1.1.2.tgz",
11747
+      "integrity": "sha512-77oqsKEPrxIwgRcXUwipkj9W5ItO97L6eUT1Ar7vh+El16Zm4M6V+YU1cbipHEa6q0Yjw8O3Hoh8oRgatV5s7A=="
11748
+    },
11400
     "table": {
11749
     "table": {
11401
       "version": "4.0.2",
11750
       "version": "4.0.2",
11402
       "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
11751
       "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
11668
         "source-map": {
12017
         "source-map": {
11669
           "version": "0.6.1",
12018
           "version": "0.6.1",
11670
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
12019
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
11671
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
12020
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
11672
         }
12021
         }
11673
       }
12022
       }
11674
     },
12023
     },
11682
     "uglifyjs-webpack-plugin": {
12031
     "uglifyjs-webpack-plugin": {
11683
       "version": "1.2.2",
12032
       "version": "1.2.2",
11684
       "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz",
12033
       "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz",
11685
-      "integrity": "sha512-CG/NvzXfemUAm5Y4Guh5eEaJYHtkG7kKNpXEJHp9QpxsFVB5/qKvYWoMaq4sa99ccZ0hM3MK8vQV9XPZB4357A==",
12034
+      "integrity": "sha1-51FtQ2ev23FcOEeEHrRvlMRcork=",
11686
       "dev": true,
12035
       "dev": true,
11687
       "requires": {
12036
       "requires": {
11688
         "cacache": "10.0.4",
12037
         "cacache": "10.0.4",
11715
         "schema-utils": {
12064
         "schema-utils": {
11716
           "version": "0.4.5",
12065
           "version": "0.4.5",
11717
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz",
12066
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz",
11718
-          "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==",
12067
+          "integrity": "sha1-IYNvBgiqwXt4+ePiTa/xSlyhOj4=",
11719
           "dev": true,
12068
           "dev": true,
11720
           "requires": {
12069
           "requires": {
11721
             "ajv": "6.2.1",
12070
             "ajv": "6.2.1",
11725
         "source-map": {
12074
         "source-map": {
11726
           "version": "0.6.1",
12075
           "version": "0.6.1",
11727
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
12076
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
11728
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
12077
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
11729
           "dev": true
12078
           "dev": true
11730
         }
12079
         }
11731
       }
12080
       }
12011
         "async": {
12360
         "async": {
12012
           "version": "2.6.0",
12361
           "version": "2.6.0",
12013
           "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
12362
           "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
12014
-          "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
12363
+          "integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=",
12015
           "dev": true,
12364
           "dev": true,
12016
           "requires": {
12365
           "requires": {
12017
             "lodash": "4.17.4"
12366
             "lodash": "4.17.4"
12460
         "source-map": {
12809
         "source-map": {
12461
           "version": "0.6.1",
12810
           "version": "0.6.1",
12462
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
12811
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
12463
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
12812
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
12464
           "dev": true
12813
           "dev": true
12465
         }
12814
         }
12466
       }
12815
       }

+ 5
- 3
package.json View File

20
     "@atlaskit/dropdown-menu": "3.10.2",
20
     "@atlaskit/dropdown-menu": "3.10.2",
21
     "@atlaskit/droplist": "4.11.1",
21
     "@atlaskit/droplist": "4.11.1",
22
     "@atlaskit/field-text": "4.0.1",
22
     "@atlaskit/field-text": "4.0.1",
23
+    "@atlaskit/field-text-area": "1.2.0",
23
     "@atlaskit/flag": "6.1.0",
24
     "@atlaskit/flag": "6.1.0",
24
     "@atlaskit/icon": "10.0.0",
25
     "@atlaskit/icon": "10.0.0",
25
     "@atlaskit/inline-dialog": "5.0.2",
26
     "@atlaskit/inline-dialog": "5.0.2",
26
     "@atlaskit/inline-message": "3.0.1",
27
     "@atlaskit/inline-message": "3.0.1",
28
+    "@atlaskit/layer-manager": "2.8.0",
27
     "@atlaskit/lozenge": "3.4.2",
29
     "@atlaskit/lozenge": "3.4.2",
28
-    "@atlaskit/modal-dialog": "2.6.0",
30
+    "@atlaskit/modal-dialog": "3.4.0",
29
     "@atlaskit/multi-select": "7.1.3",
31
     "@atlaskit/multi-select": "7.1.3",
30
     "@atlaskit/spinner": "4.0.0",
32
     "@atlaskit/spinner": "4.0.0",
31
     "@atlaskit/tabs": "4.0.1",
33
     "@atlaskit/tabs": "4.0.1",
32
-    "@atlaskit/theme": "2.2.0",
34
+    "@atlaskit/theme": "2.4.0",
33
     "@atlaskit/tooltip": "6.0.0",
35
     "@atlaskit/tooltip": "6.0.0",
34
     "autosize": "1.18.13",
36
     "autosize": "1.18.13",
35
     "es6-iterator": "2.0.3",
37
     "es6-iterator": "2.0.3",
71
     "redux-thunk": "2.2.0",
73
     "redux-thunk": "2.2.0",
72
     "strophe.js": "github:jitsi/strophejs#1.2.14-1",
74
     "strophe.js": "github:jitsi/strophejs#1.2.14-1",
73
     "strophejs-plugin-disco": "0.0.2",
75
     "strophejs-plugin-disco": "0.0.2",
74
-    "styled-components": "1.3.0",
76
+    "styled-components": "1.4.6",
75
     "url-polyfill": "github:github/url-polyfill#39734186de44612bc5a16eb25f5407adcc5b2e7c",
77
     "url-polyfill": "github:github/url-polyfill#39734186de44612bc5a16eb25f5407adcc5b2e7c",
76
     "uuid": "3.1.0",
78
     "uuid": "3.1.0",
77
     "xmldom": "0.1.27"
79
     "xmldom": "0.1.27"

+ 132
- 131
react/features/base/dialog/components/StatelessDialog.web.js View File

1
 // @flow
1
 // @flow
2
 
2
 
3
 import Button, { ButtonGroup } from '@atlaskit/button';
3
 import Button, { ButtonGroup } from '@atlaskit/button';
4
-import ModalDialog from '@atlaskit/modal-dialog';
5
-import { AtlasKitThemeProvider } from '@atlaskit/theme';
4
+import { withContextFromProps } from '@atlaskit/layer-manager';
5
+import Modal, { ModalFooter } from '@atlaskit/modal-dialog';
6
 import _ from 'lodash';
6
 import _ from 'lodash';
7
+import PropTypes from 'prop-types';
7
 import React, { Component } from 'react';
8
 import React, { Component } from 'react';
8
 
9
 
9
 import { translate } from '../../i18n';
10
 import { translate } from '../../i18n';
30
 type Props = {
31
 type Props = {
31
     ...DialogProps,
32
     ...DialogProps,
32
 
33
 
34
+    i18n: Object,
35
+
33
     /**
36
     /**
34
      * Disables dismissing the dialog when the blanket is clicked. Enabled
37
      * Disables dismissing the dialog when the blanket is clicked. Enabled
35
      * by default.
38
      * by default.
57
     width: string
60
     width: string
58
 };
61
 };
59
 
62
 
63
+/**
64
+ * ContexTypes is used as a workaround for Atlaskit's modal being displayed
65
+ * outside of the normal App hierarchy, thereby losing context. ContextType
66
+ * is responsible for taking its props and passing them into children.
67
+ *
68
+ * @type {ReactElement}
69
+ */
70
+const ContextProvider = withContextFromProps({
71
+    i18n: PropTypes.object
72
+});
73
+
60
 /**
74
 /**
61
  * Web dialog that uses atlaskit modal-dialog to display dialogs.
75
  * Web dialog that uses atlaskit modal-dialog to display dialogs.
62
  */
76
  */
63
 class StatelessDialog extends Component<Props> {
77
 class StatelessDialog extends Component<Props> {
78
+    /**
79
+     * The functional component to be used for rendering the modal footer.
80
+     */
81
+    _Footer: ?Function
82
+
64
     _dialogElement: ?HTMLElement;
83
     _dialogElement: ?HTMLElement;
65
 
84
 
66
     /**
85
     /**
78
         this._onKeyDown = this._onKeyDown.bind(this);
97
         this._onKeyDown = this._onKeyDown.bind(this);
79
         this._onSubmit = this._onSubmit.bind(this);
98
         this._onSubmit = this._onSubmit.bind(this);
80
         this._setDialogElement = this._setDialogElement.bind(this);
99
         this._setDialogElement = this._setDialogElement.bind(this);
81
-    }
82
 
100
 
83
-    /**
84
-     * React Component method that executes once component is mounted.
85
-     *
86
-     * @inheritdoc
87
-     */
88
-    componentDidMount() {
89
-        this._updateButtonFocus();
101
+        this._Footer = this._createFooterConstructor(props);
90
     }
102
     }
91
 
103
 
92
     /**
104
     /**
93
-     * React Component method that executes once component is updated.
105
+     * React Component method that executes before the component is updated.
94
      *
106
      *
95
-     * @param {Object} prevProps - The previous properties, before the update.
107
+     * @inheritdoc
108
+     * @param {Object} nextProps - The next properties, before the update.
96
      * @returns {void}
109
      * @returns {void}
97
      */
110
      */
98
-    componentDidUpdate(prevProps) {
99
-        // if there is an update in any of the buttons enable/disable props
100
-        // update the focus if needed
101
-        if (prevProps.okDisabled !== this.props.okDisabled
102
-                || prevProps.cancelDisabled !== this.props.cancelDisabled
103
-                || prevProps.submitDisabled !== this.props.submitDisabled) {
104
-            this._updateButtonFocus();
111
+    componentWillUpdate(nextProps) {
112
+        // If button states have changed, update the Footer constructor function
113
+        // so buttons of the proper state are rendered.
114
+        if (nextProps.okDisabled !== this.props.okDisabled
115
+                || nextProps.cancelDisabled !== this.props.cancelDisabled
116
+                || nextProps.submitDisabled !== this.props.submitDisabled) {
117
+            this._Footer = this._createFooterConstructor(nextProps);
105
         }
118
         }
106
     }
119
     }
107
 
120
 
112
      * @returns {ReactElement}
125
      * @returns {ReactElement}
113
      */
126
      */
114
     render() {
127
     render() {
115
-        return (
128
+        const {
129
+            children,
130
+            t /* The following fixes a flow error: */ = _.identity,
131
+            titleString,
132
+            titleKey,
133
+            width
134
+        } = this.props;
116
 
135
 
117
-            /**
118
-             * Enabled light theme for dialogs until all in-dialog components
119
-             * support dark theme.
120
-             */
121
-            <AtlasKitThemeProvider mode = 'light'>
122
-                <div
123
-                    onKeyDown = { this._onKeyDown }
124
-                    ref = { this._setDialogElement }>
125
-                    <ModalDialog
126
-                        footer = { this._renderFooter() }
127
-                        header = { this._renderHeader() }
128
-                        isOpen = { true }
129
-                        onDialogDismissed = { this._onDialogDismissed }
130
-                        width = { this.props.width || 'medium' }>
131
-                        <div>
132
-                            <form
133
-                                className = 'modal-dialog-form'
134
-                                id = 'modal-dialog-form'
135
-                                onSubmit = { this._onSubmit }>
136
-                                { this.props.children }
137
-                            </form>
138
-                        </div>
139
-                    </ModalDialog>
140
-                </div>
141
-            </AtlasKitThemeProvider>
136
+        return (
137
+            <Modal
138
+                autoFocus = { true }
139
+                footer = { this._Footer }
140
+                heading = { titleString || t(titleKey) }
141
+                i18n = { this.props.i18n }
142
+                onClose = { this._onDialogDismissed }
143
+                onDialogDismissed = { this._onDialogDismissed }
144
+                shouldCloseOnEscapePress = { true }
145
+                width = { width || 'medium' }>
146
+                {
147
+
148
+                    /**
149
+                     * Wrapping the contents of {@link Modal} with
150
+                     * {@link ContextProvider} is a workaround for the
151
+                     * i18n context becoming undefined as modal gets rendered
152
+                     * outside of the normal react app context.
153
+                     */
154
+                }
155
+                <ContextProvider i18n = { this.props.i18n }>
156
+                    <div
157
+                        onKeyDown = { this._onKeyDown }
158
+                        ref = { this._setDialogElement }>
159
+                        <form
160
+                            className = 'modal-dialog-form'
161
+                            id = 'modal-dialog-form'
162
+                            onSubmit = { this._onSubmit }>
163
+                            { children }
164
+                        </form>
165
+                    </div>
166
+                </ContextProvider>
167
+            </Modal>
142
         );
168
         );
143
     }
169
     }
144
 
170
 
171
+    _onCancel: () => Function;
172
+
173
+    /**
174
+     * Returns a functional component to be used for the modal footer.
175
+     *
176
+     * @param {Object} options - The configuration for how the buttons in the
177
+     * footer should display. Essentially {@code StatelessDialog} props should
178
+     * be passed in.
179
+     * @private
180
+     * @returns {ReactElement}
181
+     */
182
+    _createFooterConstructor(options) {
183
+        // Filter out falsy (null) values because {@code ButtonGroup} will error
184
+        // if passed in anything but buttons with valid type props.
185
+        const buttons = [
186
+            this._renderOKButton(options),
187
+            this._renderCancelButton(options)
188
+        ].filter(Boolean);
189
+
190
+        return function Footer(modalFooterProps) {
191
+            return (
192
+                <ModalFooter showKeyline = { modalFooterProps.showKeyline } >
193
+                    {
194
+
195
+                        /**
196
+                         * Atlaskit has this empty span (JustifySim) so...
197
+                         */
198
+                    }
199
+                    <span />
200
+                    <ButtonGroup>
201
+                        { buttons }
202
+                    </ButtonGroup>
203
+                </ModalFooter>
204
+            );
205
+        };
206
+    }
207
+
145
     _onCancel: () => void;
208
     _onCancel: () => void;
146
 
209
 
147
     /**
210
     /**
188
     /**
251
     /**
189
      * Renders Cancel button.
252
      * Renders Cancel button.
190
      *
253
      *
254
+     * @param {Object} options - The configuration for the Cancel button.
255
+     * @param {boolean} options.cancelDisabled - True if the cancel button
256
+     * should not be rendered.
257
+     * @param {string} options.cancelTitleKey - The translation key to use as
258
+     * text on the button.
259
+     * @param {boolean} options.isModal - True if the cancel button should not
260
+     * be rendered.
191
      * @private
261
      * @private
192
-     * @returns {*} The Cancel button if enabled and dialog is not modal.
262
+     * @returns {ReactElement|null} The Cancel button if enabled and dialog is
263
+     * not modal.
193
      */
264
      */
194
-    _renderCancelButton() {
195
-        if (this.props.cancelDisabled || this.props.isModal) {
265
+    _renderCancelButton(options = {}) {
266
+        if (options.cancelDisabled || options.isModal) {
196
             return null;
267
             return null;
197
         }
268
         }
198
 
269
 
207
                 key = 'cancel'
278
                 key = 'cancel'
208
                 onClick = { this._onCancel }
279
                 onClick = { this._onCancel }
209
                 type = 'button'>
280
                 type = 'button'>
210
-                { t(this.props.cancelTitleKey || 'dialog.Cancel') }
281
+                { t(options.cancelTitleKey || 'dialog.Cancel') }
211
             </Button>
282
             </Button>
212
         );
283
         );
213
     }
284
     }
214
 
285
 
215
-    /**
216
-     * Renders component in dialog footer.
217
-     *
218
-     * @private
219
-     * @returns {ReactElement}
220
-     */
221
-    _renderFooter() {
222
-        // Filter out falsy (null) values because {@code ButtonGroup} will error
223
-        // if passed in anything but buttons with valid type props.
224
-        const buttons = [
225
-            this._renderCancelButton(),
226
-            this._renderOKButton()
227
-        ].filter(Boolean);
228
-
229
-        return (
230
-            <footer className = 'modal-dialog-footer'>
231
-                <ButtonGroup>
232
-                    { buttons }
233
-                </ButtonGroup>
234
-            </footer>
235
-        );
236
-    }
237
-
238
-    /**
239
-     * Renders component in dialog header.
240
-     *
241
-     * @private
242
-     * @returns {ReactElement}
243
-     */
244
-    _renderHeader() {
245
-        const {
246
-            t /* The following fixes a flow error: */ = _.identity
247
-        } = this.props;
248
-
249
-        return (
250
-            <header>
251
-                <h3>
252
-                    { this.props.titleString || t(this.props.titleKey) }
253
-                </h3>
254
-            </header>
255
-        );
256
-    }
257
-
258
     /**
286
     /**
259
      * Renders OK button.
287
      * Renders OK button.
260
      *
288
      *
289
+     * @param {Object} options - The configuration for the OK button.
290
+     * @param {boolean} options.okDisabled - True if the button should display
291
+     * as disabled and clicking should have no effect.
292
+     * @param {string} options.okTitleKey - The translation key to use as text
293
+     * on the button.
294
+     * @param {boolean} options.submitDisabled - True if the button should not
295
+     * be rendered.
261
      * @private
296
      * @private
262
-     * @returns {*} The OK button if enabled.
297
+     * @returns {ReactElement|null} The OK button if enabled.
263
      */
298
      */
264
-    _renderOKButton() {
265
-        if (this.props.submitDisabled) {
299
+    _renderOKButton(options = {}) {
300
+        if (options.submitDisabled) {
266
             return null;
301
             return null;
267
         }
302
         }
268
 
303
 
275
                 appearance = 'primary'
310
                 appearance = 'primary'
276
                 form = 'modal-dialog-form'
311
                 form = 'modal-dialog-form'
277
                 id = { OK_BUTTON_ID }
312
                 id = { OK_BUTTON_ID }
278
-                isDisabled = { this.props.okDisabled }
313
+                isDisabled = { options.okDisabled }
279
                 key = 'submit'
314
                 key = 'submit'
280
                 onClick = { this._onSubmit }
315
                 onClick = { this._onSubmit }
281
                 type = 'button'>
316
                 type = 'button'>
282
-                { t(this.props.okTitleKey || 'dialog.Ok') }
317
+                { t(options.okTitleKey || 'dialog.Ok') }
283
             </Button>
318
             </Button>
284
         );
319
         );
285
     }
320
     }
327
             }
362
             }
328
         }
363
         }
329
     }
364
     }
330
-
331
-    /**
332
-     * Updates focused button, if we have a reference to the dialog element.
333
-     * Focus on available button if there is no focus already.
334
-     *
335
-     * @private
336
-     * @returns {void}
337
-     */
338
-    _updateButtonFocus() {
339
-        const dialogElement = this._dialogElement;
340
-
341
-        if (dialogElement) {
342
-
343
-            // if we have a focused element inside the dialog, skip changing
344
-            // the focus
345
-            if (dialogElement.contains(document.activeElement)) {
346
-                return;
347
-            }
348
-
349
-            let buttonToFocus;
350
-
351
-            if (this.props.submitDisabled) {
352
-                buttonToFocus
353
-                    = dialogElement.querySelector(`[id=${CANCEL_BUTTON_ID}]`);
354
-            } else if (!this.props.okDisabled) {
355
-                buttonToFocus
356
-                    = dialogElement.querySelector(`[id=${OK_BUTTON_ID}]`);
357
-            }
358
-
359
-            if (buttonToFocus) {
360
-                buttonToFocus.focus();
361
-            }
362
-        }
363
-    }
364
 }
365
 }
365
 
366
 
366
 export default translate(StatelessDialog);
367
 export default translate(StatelessDialog);

+ 4
- 1
react/features/device-selection/DeviceSelectionPopup.js View File

1
 /* global JitsiMeetJS */
1
 /* global JitsiMeetJS */
2
 
2
 
3
+import { AtlasKitThemeProvider } from '@atlaskit/theme';
3
 import Logger from 'jitsi-meet-logger';
4
 import Logger from 'jitsi-meet-logger';
4
 import React from 'react';
5
 import React from 'react';
5
 import ReactDOM from 'react-dom';
6
 import ReactDOM from 'react-dom';
234
         ReactDOM.render(
235
         ReactDOM.render(
235
             <I18nextProvider
236
             <I18nextProvider
236
                 i18n = { this._i18next }>
237
                 i18n = { this._i18next }>
237
-                <DeviceSelectionDialogBase { ...props } />
238
+                <AtlasKitThemeProvider mode = 'dark'>
239
+                    <DeviceSelectionDialogBase { ...props } />
240
+                </AtlasKitThemeProvider>
238
             </I18nextProvider>,
241
             </I18nextProvider>,
239
             document.getElementById('react'));
242
             document.getElementById('react'));
240
     }
243
     }

+ 4
- 1
react/features/feedback/components/FeedbackDialog.web.js View File

1
 /* global interfaceConfig */
1
 /* global interfaceConfig */
2
 
2
 
3
+import { FieldTextAreaStateless } from '@atlaskit/field-text-area';
3
 import StarIcon from '@atlaskit/icon/glyph/star';
4
 import StarIcon from '@atlaskit/icon/glyph/star';
4
 import StarFilledIcon from '@atlaskit/icon/glyph/star-filled';
5
 import StarFilledIcon from '@atlaskit/icon/glyph/star-filled';
5
 import PropTypes from 'prop-types';
6
 import PropTypes from 'prop-types';
219
                         </div>
220
                         </div>
220
                     </div>
221
                     </div>
221
                     <div className = 'details'>
222
                     <div className = 'details'>
222
-                        <textarea
223
+                        <FieldTextAreaStateless
223
                             autoFocus = { true }
224
                             autoFocus = { true }
224
                             className = 'input-control'
225
                             className = 'input-control'
225
                             id = 'feedbackTextArea'
226
                             id = 'feedbackTextArea'
227
+                            isLabelHidden = { true }
226
                             onChange = { this._onMessageChange }
228
                             onChange = { this._onMessageChange }
227
                             placeholder = { t('dialog.feedbackHelp') }
229
                             placeholder = { t('dialog.feedbackHelp') }
230
+                            shouldFitContainer = { true }
228
                             value = { message } />
231
                             value = { message } />
229
                     </div>
232
                     </div>
230
                 </div>
233
                 </div>

Loading…
Cancel
Save