@splunk/react-ui 4.37.0 → 4.39.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.
Files changed (142) hide show
  1. package/Accordion.js +131 -153
  2. package/Anchor.js +50 -58
  3. package/Animation.js +64 -59
  4. package/AnimationToggle.js +59 -61
  5. package/Box.js +59 -67
  6. package/Breadcrumbs.js +113 -127
  7. package/Button.js +208 -219
  8. package/ButtonGroup.js +41 -49
  9. package/ButtonSimple.js +264 -295
  10. package/CHANGELOG.md +50 -1
  11. package/Calendar.js +353 -414
  12. package/Card.js +183 -243
  13. package/CardLayout.js +86 -83
  14. package/Chip.js +104 -122
  15. package/Clickable.js +180 -198
  16. package/CloseButton.js +52 -60
  17. package/Code.js +24 -31
  18. package/CollapsiblePanel.js +172 -202
  19. package/Color.js +1107 -980
  20. package/ColumnLayout.js +72 -96
  21. package/ComboBox.js +267 -305
  22. package/Concertina.js +406 -454
  23. package/ControlGroup.js +165 -194
  24. package/Date.js +116 -131
  25. package/DefinitionList.js +125 -149
  26. package/Divider.js +81 -79
  27. package/Dropdown.js +226 -237
  28. package/DualListbox.js +150 -186
  29. package/EventListener.js +4 -1
  30. package/File.js +1032 -955
  31. package/FormRows.js +281 -334
  32. package/Heading.js +27 -35
  33. package/Image.js +101 -116
  34. package/JSONTree.js +301 -344
  35. package/Layer.js +118 -126
  36. package/Link.js +141 -159
  37. package/List.js +61 -77
  38. package/MIGRATION.mdx +92 -38
  39. package/Markdown.js +288 -347
  40. package/Menu.js +512 -530
  41. package/Message.js +173 -196
  42. package/MessageBar.js +58 -66
  43. package/Modal.js +241 -290
  44. package/ModalLayer.js +130 -148
  45. package/Monogram.js +138 -138
  46. package/Multiselect.js +1600 -1923
  47. package/Number.js +159 -178
  48. package/Paginator.js +296 -335
  49. package/Paragraph.js +24 -32
  50. package/Popover.js +448 -441
  51. package/Progress.js +65 -75
  52. package/RadioBar.js +301 -303
  53. package/RadioList.js +77 -119
  54. package/Resize.js +105 -127
  55. package/ResultsMenu.js +373 -385
  56. package/ScreenReaderContent.js +130 -94
  57. package/Scroll.js +209 -244
  58. package/Search.js +375 -384
  59. package/Select.js +1076 -1354
  60. package/SidePanel.js +122 -142
  61. package/Slider.js +192 -222
  62. package/SlidingPanels.js +238 -270
  63. package/SplitButton.js +222 -245
  64. package/StaticContent.js +68 -76
  65. package/StepBar.js +206 -205
  66. package/Switch.js +211 -236
  67. package/TabBar.js +222 -258
  68. package/TabLayout.js +114 -139
  69. package/Table.js +2017 -2180
  70. package/Text.js +401 -512
  71. package/TextArea.js +411 -441
  72. package/Tooltip.js +116 -132
  73. package/TransitionOpen.js +160 -178
  74. package/Tree.js +268 -287
  75. package/Typography.js +48 -52
  76. package/WaitSpinner.js +60 -68
  77. package/cypress/support/commands.ts +9 -0
  78. package/cypress/support/index.d.ts +6 -0
  79. package/cypress/tsconfig.cypress.json +1 -0
  80. package/docker-compose.yml +0 -1
  81. package/package.json +17 -17
  82. package/types/src/Button/Button.d.ts +20 -6
  83. package/types/src/ButtonSimple/ButtonSimple.d.ts +2 -2
  84. package/types/src/CollapsiblePanel/CollapsiblePanel.d.ts +1 -1
  85. package/types/src/Color/Color.d.ts +5 -2
  86. package/types/src/Color/Palette.d.ts +6 -2
  87. package/types/src/ComboBox/Option.d.ts +1 -1
  88. package/types/src/ControlGroup/ControlGroup.d.ts +1 -2
  89. package/types/src/Date/Date.d.ts +2 -3
  90. package/types/src/File/File.d.ts +2 -3
  91. package/types/src/File/Retry.d.ts +1 -2
  92. package/types/src/Link/Link.d.ts +3 -4
  93. package/types/src/Menu/Item.d.ts +24 -8
  94. package/types/src/Menu/Menu.d.ts +3 -3
  95. package/types/src/Menu/docs/examples/Adornments.d.ts +2 -0
  96. package/types/src/Menu/docs/examples/SelectableWithAdornments.d.ts +2 -0
  97. package/types/src/ModalLayer/ModalLayer.d.ts +1 -1
  98. package/types/src/Multiselect/Option.d.ts +2 -0
  99. package/types/src/Number/Number.d.ts +3 -3
  100. package/types/src/Popover/Popover.d.ts +3 -4
  101. package/types/src/RadioBar/RadioBar.d.ts +2 -2
  102. package/types/src/ResultsMenu/VirtualizedResultsMenu/VirtualizedResultsMenu.d.ts +1 -1
  103. package/types/src/ScrollContainerContext/ScrollContainerContext.d.ts +2 -2
  104. package/types/src/Search/Option.d.ts +16 -3
  105. package/types/src/Select/Option.d.ts +3 -1
  106. package/types/src/Select/OptionBase.d.ts +7 -5
  107. package/types/src/Select/Select.d.ts +2 -2
  108. package/types/src/Select/SelectAllOption.d.ts +4 -4
  109. package/types/src/Select/SelectBase.d.ts +0 -1
  110. package/types/src/SidePanel/SidePanel.d.ts +1 -1
  111. package/types/src/Slider/Slider.d.ts +2 -3
  112. package/types/src/Slider/docs/examples/Error.d.ts +2 -0
  113. package/types/src/SlidingPanels/SlidingPanels.d.ts +1 -1
  114. package/types/src/StepBar/Step.d.ts +1 -2
  115. package/types/src/TabBar/Tab.d.ts +1 -1
  116. package/types/src/TabBar/TabBar.d.ts +3 -1
  117. package/types/src/TabLayout/TabLayout.d.ts +2 -0
  118. package/types/src/Table/HeadDropdownCell.d.ts +2 -0
  119. package/types/src/Table/Table.d.ts +0 -1
  120. package/types/src/Table/docs/examples/StripeRows.d.ts +2 -0
  121. package/types/src/Text/IconOutlinedHide.d.ts +1 -2
  122. package/types/src/Text/IconOutlinedView.d.ts +1 -2
  123. package/types/src/Text/Text.d.ts +6 -4
  124. package/types/src/Text/docs/examples/Dimmed.d.ts +2 -0
  125. package/types/src/TextArea/TextArea.d.ts +2 -2
  126. package/types/src/Tooltip/Tooltip.d.ts +4 -4
  127. package/types/src/TransitionOpen/TransitionOpen.d.ts +1 -1
  128. package/useForceUpdate.js +30 -32
  129. package/useKeyPress.js +1 -1
  130. package/types/src/Button/docs/examples/Selected.d.ts +0 -2
  131. package/types/src/ButtonGroup/docs/examples/prisma/Basic.d.ts +0 -1
  132. package/types/src/File/docs/examples/prisma/Error.d.ts +0 -1
  133. package/types/src/Menu/docs/examples/Icons.d.ts +0 -2
  134. package/types/src/Menu/docs/examples/SelectableWithIcons.d.ts +0 -2
  135. package/types/src/Slider/docs/examples/prisma/Error.d.ts +0 -2
  136. package/types/src/TabBar/docs/examples/prisma/Context.d.ts +0 -2
  137. package/types/src/TabLayout/docs/examples/prisma/Context.d.ts +0 -2
  138. package/types/src/Table/docs/examples/prisma/Basic.d.ts +0 -2
  139. /package/types/src/Date/docs/examples/{prisma/WithoutCalendar.d.ts → WithoutCalendar.d.ts} +0 -0
  140. /package/types/src/Message/docs/examples/{prisma/Title.d.ts → Title.d.ts} +0 -0
  141. /package/types/src/StepBar/docs/examples/{prisma/Error.d.ts → Error.d.ts} +0 -0
  142. /package/types/src/TabBar/docs/examples/{prisma/Disabled.d.ts → Disabled.d.ts} +0 -0
package/RadioList.js CHANGED
@@ -135,40 +135,27 @@
135
135
  var y = b().input.withConfig({
136
136
  displayName: "OptionStyles__StyledRadioInput",
137
137
  componentId: "imaqjt-2"
138
- })([ "opacity:0;position:absolute;top:10px;left:0;&:focus{& + ", "::before{box-shadow:", ";}}&:checked + ", "::after{opacity:1;}&:checked + ", "::before{", "}&:disabled,&:disabled + ", "{color:", ";cursor:not-allowed;}&:disabled + ", "::before{", ";}&:disabled:not(:checked) + ", "::before{", ";}&:disabled + ", "::after{background-color:", ";}", " ", "" ],
139
- /* sc-sel */
140
- f, p.variables.focusShadow,
141
- /* sc-sel */
142
- f,
143
- /* sc-sel */
144
- f, (0, p.pick)({
138
+ })([ "opacity:0;position:absolute;top:10px;left:0;&:focus{& + ", "::before{box-shadow:", ";}}&:checked + ", "::after{opacity:1;}&:checked + ", "::before{", "}&:disabled,&:disabled + ", "{color:", ";cursor:not-allowed;}&:disabled + ", "::before{", ";}&:disabled:not(:checked) + ", "::before{", ";}&:disabled + ", "::after{background-color:", ";}", " ", "" ], /* sc-sel */ f, p.variables.focusShadow, /* sc-sel */ f, /* sc-sel */ f, (0,
139
+ p.pick)({
145
140
  prisma: (0, u.css)([ "border-color:transparent;background-color:", ";" ], p.variables.interactiveColorPrimary),
146
141
  enterprise: {
147
142
  dark: (0, u.css)([ "border-color:", ";" ], p.variables.gray80),
148
143
  light: (0, u.css)([ "border-color:", ";" ], p.variables.gray45)
149
144
  }
150
- }),
151
- /* sc-sel */
152
- f, (0, p.pick)({
145
+ }), /* sc-sel */ f, (0, p.pick)({
153
146
  prisma: p.variables.contentColorDisabled,
154
147
  enterprise: {
155
148
  dark: p.variables.gray45,
156
149
  light: p.variables.gray80
157
150
  }
158
- }),
159
- /* sc-sel */
160
- f, (0, p.pick)({
151
+ }), /* sc-sel */ f, (0, p.pick)({
161
152
  enterprise: {
162
153
  dark: (0, u.css)([ "border-color:", ";" ], p.variables.gray45),
163
154
  light: (0, u.css)([ "border-color:", ";" ], p.variables.gray80)
164
155
  }
165
- }),
166
- /* sc-sel */
167
- f, (0, p.pick)({
156
+ }), /* sc-sel */ f, (0, p.pick)({
168
157
  prisma: (0, u.css)([ "border-color:", ";" ], p.variables.contentColorDisabled)
169
- }),
170
- /* sc-sel */
171
- f, (0, p.pick)({
158
+ }), /* sc-sel */ f, (0, p.pick)({
172
159
  prisma: p.variables.contentColorDisabled,
173
160
  enterprise: {
174
161
  dark: p.variables.gray45,
@@ -176,9 +163,8 @@
176
163
  }
177
164
  }), (function(e) {
178
165
  var r = e.$error;
179
- return r && (0, u.css)([ "&:not(:disabled) + ", "{color:", ";&::before{border-color:", ";}}&:checked:not(:disabled) + ", "{&::before{border-color:", ";}", "}", "" ],
180
- /* sc-sel */
181
- f, (0, p.pick)({
166
+ return r && (0, u.css)([ "&:not(:disabled) + ", "{color:", ";&::before{border-color:", ";}}&:checked:not(:disabled) + ", "{&::before{border-color:", ";}", "}", "" ], /* sc-sel */ f, (0,
167
+ p.pick)({
182
168
  prisma: p.variables.accentColorNegative,
183
169
  enterprise: p.variables.errorColor
184
170
  }), (0, p.pick)({
@@ -187,70 +173,48 @@
187
173
  dark: p.variables.errorColor,
188
174
  light: p.variables.errorColorL30
189
175
  }
190
- }),
191
- /* sc-sel */
192
- f, (0, p.pick)({
176
+ }), /* sc-sel */ f, (0, p.pick)({
193
177
  prisma: p.variables.accentColorNegative,
194
178
  enterprise: p.variables.errorColor
195
179
  }), (0, p.pick)({
196
180
  enterprise: (0, u.css)([ "&::after{background-color:", ";}" ], p.variables.errorColor)
197
181
  }), (0, p.pick)({
198
- prisma: (0, u.css)([ "&:not(:disabled):checked + ", "{&::before{background-color:", ";}}" ],
199
- /* sc-sel */
200
- f, p.variables.accentColorNegative)
182
+ prisma: (0, u.css)([ "&:not(:disabled):checked + ", "{&::before{background-color:", ";}}" ], /* sc-sel */ f, p.variables.accentColorNegative)
201
183
  }));
202
184
  }), (0, p.pick)({
203
- prisma: (0, u.css)([ "&:active + ", "::before{background-color:", ";}&:active + ", "::after{background-color:", ";}&:checked:active + ", "::before{border-color:transparent;background-color:", ";}&:disabled + ", ":hover::before{box-shadow:none;}&:checked:disabled + ", "{&::before{background-color:", ";}&::after{background-color:rgba(255,255,255,0.3);}}" ],
204
- /* sc-sel */
205
- f, p.mixins.overlayColors(p.variables.backgroundColorPage, p.variables.interactiveColorOverlayActive),
206
- /* sc-sel */
207
- f, p.mixins.overlayColors(p.variables.white, p.variables.interactiveColorOverlayActive),
208
- /* sc-sel */
209
- f, p.mixins.overlayColors(p.variables.interactiveColorPrimary, p.variables.interactiveColorOverlayActive),
210
- /* sc-sel */
211
- f,
212
- /* sc-sel */
213
- f, p.variables.interactiveColorBackgroundDisabled)
185
+ prisma: (0, u.css)([ "&:active + ", "::before{background-color:", ";}&:active + ", "::after{background-color:", ";}&:checked:active + ", "::before{border-color:transparent;background-color:", ";}&:disabled + ", ":hover::before{box-shadow:none;}&:checked:disabled + ", "{&::before{background-color:", ";}&::after{background-color:rgba(255,255,255,0.3);}}" ], /* sc-sel */ f, p.mixins.overlayColors(p.variables.backgroundColorPage, p.variables.interactiveColorOverlayActive), /* sc-sel */ f, p.mixins.overlayColors(p.variables.white, p.variables.interactiveColorOverlayActive), /* sc-sel */ f, p.mixins.overlayColors(p.variables.interactiveColorPrimary, p.variables.interactiveColorOverlayActive), /* sc-sel */ f, /* sc-sel */ f, p.variables.interactiveColorBackgroundDisabled)
214
186
  }));
215
187
  // CONCATENATED MODULE: ./src/RadioList/Option.tsx
216
188
  function g() {
217
- g = Object.assign || function(e) {
189
+ return g = Object.assign ? Object.assign.bind() : function(e) {
218
190
  for (var r = 1; r < arguments.length; r++) {
219
191
  var a = arguments[r];
220
192
  for (var o in a) {
221
- if (Object.prototype.hasOwnProperty.call(a, o)) {
222
- e[o] = a[o];
223
- }
193
+ ({}).hasOwnProperty.call(a, o) && (e[o] = a[o]);
224
194
  }
225
195
  }
226
196
  return e;
227
- };
228
- return g.apply(this, arguments);
197
+ }, g.apply(null, arguments);
229
198
  }
230
199
  function m(e, r) {
231
- if (e == null) return {};
232
- var a = h(e, r);
233
- var o, i;
200
+ if (null == e) return {};
201
+ var a, o, i = h(e, r);
234
202
  if (Object.getOwnPropertySymbols) {
235
203
  var t = Object.getOwnPropertySymbols(e);
236
- for (i = 0; i < t.length; i++) {
237
- o = t[i];
238
- if (r.indexOf(o) >= 0) continue;
239
- if (!Object.prototype.propertyIsEnumerable.call(e, o)) continue;
240
- a[o] = e[o];
204
+ for (o = 0; o < t.length; o++) {
205
+ a = t[o], r.includes(a) || {}.propertyIsEnumerable.call(e, a) && (i[a] = e[a]);
241
206
  }
242
207
  }
243
- return a;
208
+ return i;
244
209
  }
245
210
  function h(e, r) {
246
- if (e == null) return {};
211
+ if (null == e) return {};
247
212
  var a = {};
248
- var o = Object.keys(e);
249
- var i, t;
250
- for (t = 0; t < o.length; t++) {
251
- i = o[t];
252
- if (r.indexOf(i) >= 0) continue;
253
- a[i] = e[i];
213
+ for (var o in e) {
214
+ if ({}.hasOwnProperty.call(e, o)) {
215
+ if (r.includes(o)) continue;
216
+ a[o] = e[o];
217
+ }
254
218
  }
255
219
  return a;
256
220
  }
@@ -329,18 +293,15 @@
329
293
  }));
330
294
  // CONCATENATED MODULE: ./src/RadioList/RadioList.tsx
331
295
  function j() {
332
- j = Object.assign || function(e) {
296
+ return j = Object.assign ? Object.assign.bind() : function(e) {
333
297
  for (var r = 1; r < arguments.length; r++) {
334
298
  var a = arguments[r];
335
299
  for (var o in a) {
336
- if (Object.prototype.hasOwnProperty.call(a, o)) {
337
- e[o] = a[o];
338
- }
300
+ ({}).hasOwnProperty.call(a, o) && (e[o] = a[o]);
339
301
  }
340
302
  }
341
303
  return e;
342
- };
343
- return j.apply(this, arguments);
304
+ }, j.apply(null, arguments);
344
305
  }
345
306
  function q(e, r) {
346
307
  return E(e) || A(e, r) || I(e, r) || P();
@@ -349,74 +310,67 @@
349
310
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
350
311
  }
351
312
  function I(e, r) {
352
- if (!e) return;
353
- if (typeof e === "string") return _(e, r);
354
- var a = Object.prototype.toString.call(e).slice(8, -1);
355
- if (a === "Object" && e.constructor) a = e.constructor.name;
356
- if (a === "Map" || a === "Set") return Array.from(e);
357
- if (a === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)) return _(e, r);
313
+ if (e) {
314
+ if ("string" == typeof e) return _(e, r);
315
+ var a = {}.toString.call(e).slice(8, -1);
316
+ return "Object" === a && e.constructor && (a = e.constructor.name), "Map" === a || "Set" === a ? Array.from(e) : "Arguments" === a || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a) ? _(e, r) : void 0;
317
+ }
358
318
  }
359
319
  function _(e, r) {
360
- if (r == null || r > e.length) r = e.length;
361
- for (var a = 0, o = new Array(r); a < r; a++) {
320
+ (null == r || r > e.length) && (r = e.length);
321
+ for (var a = 0, o = Array(r); a < r; a++) {
362
322
  o[a] = e[a];
363
323
  }
364
324
  return o;
365
325
  }
366
326
  function A(e, r) {
367
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(e))) return;
368
- var a = [];
369
- var o = true;
370
- var i = false;
371
- var t = undefined;
372
- try {
373
- for (var n = e[Symbol.iterator](), l; !(o = (l = n.next()).done); o = true) {
374
- a.push(l.value);
375
- if (r && a.length === r) break;
376
- }
377
- } catch (e) {
378
- i = true;
379
- t = e;
380
- } finally {
327
+ var a = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
328
+ if (null != a) {
329
+ var o, i, t, n, l = [], s = !0, c = !1;
381
330
  try {
382
- if (!o && n["return"] != null) n["return"]();
331
+ if (t = (a = a.call(e)).next, 0 === r) {
332
+ if (Object(a) !== a) return;
333
+ s = !1;
334
+ } else for (;!(s = (o = t.call(a)).done) && (l.push(o.value), l.length !== r); s = !0) {
335
+ }
336
+ } catch (e) {
337
+ c = !0, i = e;
383
338
  } finally {
384
- if (i) throw t;
339
+ try {
340
+ if (!s && null != a["return"] && (n = a["return"](), Object(n) !== n)) return;
341
+ } finally {
342
+ if (c) throw i;
343
+ }
385
344
  }
345
+ return l;
386
346
  }
387
- return a;
388
347
  }
389
348
  function E(e) {
390
349
  if (Array.isArray(e)) return e;
391
350
  }
392
351
  function B(e, r) {
393
- if (e == null) return {};
394
- var a = D(e, r);
395
- var o, i;
352
+ if (null == e) return {};
353
+ var a, o, i = D(e, r);
396
354
  if (Object.getOwnPropertySymbols) {
397
355
  var t = Object.getOwnPropertySymbols(e);
398
- for (i = 0; i < t.length; i++) {
399
- o = t[i];
400
- if (r.indexOf(o) >= 0) continue;
401
- if (!Object.prototype.propertyIsEnumerable.call(e, o)) continue;
402
- a[o] = e[o];
356
+ for (o = 0; o < t.length; o++) {
357
+ a = t[o], r.includes(a) || {}.propertyIsEnumerable.call(e, a) && (i[a] = e[a]);
403
358
  }
404
359
  }
405
- return a;
360
+ return i;
406
361
  }
407
362
  function D(e, r) {
408
- if (e == null) return {};
363
+ if (null == e) return {};
409
364
  var a = {};
410
- var o = Object.keys(e);
411
- var i, t;
412
- for (t = 0; t < o.length; t++) {
413
- i = o[t];
414
- if (r.indexOf(i) >= 0) continue;
415
- a[i] = e[i];
365
+ for (var o in e) {
366
+ if ({}.hasOwnProperty.call(e, o)) {
367
+ if (r.includes(o)) continue;
368
+ a[o] = e[o];
369
+ }
416
370
  }
417
371
  return a;
418
372
  }
419
- var N = {
373
+ /** @public */ var N = {
420
374
  children: t().node,
421
375
  defaultValue: t().any,
422
376
  describedBy: t().string,
@@ -447,10 +401,10 @@
447
401
  }
448
402
  g === null || g === void 0 ? void 0 : g(r, a);
449
403
  };
450
- // Check correct props are passed
404
+ // Check correct props are passed
451
405
  if (false) {}
452
406
  if (false) {}
453
- // Check if changing from controlled to un-controlled
407
+ // Check if changing from controlled to un-controlled
454
408
  (0, a.useEffect)((function() {
455
409
  if (false) {}
456
410
  }), [ h, C ]);
@@ -458,18 +412,21 @@
458
412
  (0, a.useEffect)((function() {
459
413
  if (false) {}
460
414
  }), [ R, i, C ]);
461
- var M = k["aria-labelledby"];
462
- var T = k["aria-describedby"];
463
-
464
- return o().createElement(d.Provider, {
465
- value: {
415
+ var M = (0, a.useMemo)((function() {
416
+ return {
466
417
  disabled: b,
467
418
  error: v,
468
419
  onChange: D,
469
420
  name: E,
470
421
  required: m,
471
422
  value: _
472
- }
423
+ };
424
+ }), [ b, v, D, E, m, _ ]);
425
+ var T = k["aria-labelledby"];
426
+ var L = k["aria-describedby"];
427
+
428
+ return o().createElement(d.Provider, {
429
+ value: M
473
430
  }, o().createElement(S, j({
474
431
  flex: true,
475
432
  direction: c,
@@ -477,8 +434,9 @@
477
434
  "data-test": "radio-list",
478
435
  "data-test-value": _
479
436
  }, l()(k, [ "aria-labelledby", "aria-describedby" ]), {
480
- "aria-labelledby": M ? "".concat(M, " ").concat(f) : f,
481
- "aria-describedby": T ? "".concat(T, " ").concat(t) : t
437
+ "aria-labelledby": T ? "".concat(T, " ").concat(f) : f,
438
+ "aria-describedby": L ? "".concat(L, " ").concat(t) : t,
439
+ "aria-invalid": v
482
440
  }), r));
483
441
  }
484
442
  R.propTypes = N;