@sproutsocial/racine 12.19.0 → 12.21.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 (626) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +46 -44
  3. package/__flow__/Avatar/index.js +26 -26
  4. package/__flow__/Avatar/index.stories.js +8 -8
  5. package/__flow__/Avatar/index.test.js +13 -13
  6. package/__flow__/Badge/constants.js +14 -14
  7. package/__flow__/Badge/index.js +18 -18
  8. package/__flow__/Badge/index.stories.js +8 -8
  9. package/__flow__/Badge/index.test.js +43 -43
  10. package/__flow__/Badge/styles.js +13 -9
  11. package/__flow__/Banner/index.js +21 -21
  12. package/__flow__/Banner/index.stories.js +56 -68
  13. package/__flow__/Banner/index.test.js +32 -34
  14. package/__flow__/Banner/styles.js +4 -4
  15. package/__flow__/Box/index.js +4 -4
  16. package/__flow__/Box/index.stories.js +58 -51
  17. package/__flow__/Box/index.test.js +7 -7
  18. package/__flow__/Box/styles.js +6 -6
  19. package/__flow__/Breadcrumb/index.js +9 -13
  20. package/__flow__/Breadcrumb/index.stories.js +14 -14
  21. package/__flow__/Breadcrumb/index.test.js +20 -20
  22. package/__flow__/Breadcrumb/styles.js +5 -5
  23. package/__flow__/Button/index.js +23 -23
  24. package/__flow__/Button/index.stories.js +34 -34
  25. package/__flow__/Button/styles.js +11 -11
  26. package/__flow__/Card/index.js +7 -7
  27. package/__flow__/Card/index.stories.js +14 -14
  28. package/__flow__/Card/styles.js +7 -7
  29. package/__flow__/CharacterCounter/index.js +7 -7
  30. package/__flow__/CharacterCounter/index.stories.js +25 -26
  31. package/__flow__/CharacterCounter/index.test.js +11 -11
  32. package/__flow__/CharacterCounter/styles.js +3 -3
  33. package/__flow__/ChartLegend/index.js +7 -7
  34. package/__flow__/ChartLegend/index.stories.js +22 -22
  35. package/__flow__/ChartLegend/index.test.js +27 -27
  36. package/__flow__/ChartLegend/styles.js +7 -7
  37. package/__flow__/Checkbox/index.js +10 -10
  38. package/__flow__/Checkbox/index.stories.js +24 -24
  39. package/__flow__/Checkbox/index.test.js +25 -25
  40. package/__flow__/Checkbox/styles.js +27 -28
  41. package/__flow__/Collapsible/index.js +15 -15
  42. package/__flow__/Collapsible/index.stories.js +13 -13
  43. package/__flow__/Collapsible/index.test.js +27 -27
  44. package/__flow__/Collapsible/styles.js +5 -5
  45. package/__flow__/DatePicker/DateRangePicker.js +5 -8
  46. package/__flow__/DatePicker/DateRangePicker.stories.js +19 -19
  47. package/__flow__/DatePicker/DateRangePicker.test.js +21 -21
  48. package/__flow__/DatePicker/SingleDatePicker.js +6 -9
  49. package/__flow__/DatePicker/SingleDatePicker.stories.js +10 -10
  50. package/__flow__/DatePicker/SingleDatePicker.test.js +21 -23
  51. package/__flow__/DatePicker/StatefulDateRangePicker.js +6 -6
  52. package/__flow__/DatePicker/StatefulSingleDatePicker.js +3 -3
  53. package/__flow__/DatePicker/common.js +13 -13
  54. package/__flow__/DatePicker/index.js +3 -3
  55. package/__flow__/DatePicker/styles.js +42 -42
  56. package/__flow__/Drawer/SlideTransition.js +10 -10
  57. package/__flow__/Drawer/index.js +29 -29
  58. package/__flow__/Drawer/index.stories.js +58 -141
  59. package/__flow__/Drawer/index.test.js +28 -28
  60. package/__flow__/Drawer/styles.js +4 -4
  61. package/__flow__/EmptyState/index.js +5 -5
  62. package/__flow__/EmptyState/index.stories.js +10 -10
  63. package/__flow__/EmptyState/index.test.js +27 -27
  64. package/__flow__/EnumIllustrationNames.js +1 -1
  65. package/__flow__/Fieldset/index.js +14 -14
  66. package/__flow__/Fieldset/index.stories.js +19 -20
  67. package/__flow__/Fieldset/index.test.js +14 -14
  68. package/__flow__/Fieldset/styles.js +5 -5
  69. package/__flow__/FormField/index.js +14 -14
  70. package/__flow__/FormField/index.stories.js +31 -21
  71. package/__flow__/FormField/index.test.js +19 -19
  72. package/__flow__/Icon/deprecatedIcons.js +36 -36
  73. package/__flow__/Icon/index.js +17 -17
  74. package/__flow__/Icon/index.stories.js +62 -29
  75. package/__flow__/Icon/index.test.js +15 -15
  76. package/__flow__/Icon/styles.js +12 -23
  77. package/__flow__/IllustrationViewBoxes.js +1 -1
  78. package/__flow__/Image/index.js +6 -7
  79. package/__flow__/Image/index.stories.js +5 -5
  80. package/__flow__/Image/index.test.js +24 -24
  81. package/__flow__/Image/styles.js +6 -5
  82. package/__flow__/Indicator/index.js +7 -7
  83. package/__flow__/Indicator/index.stories.js +8 -14
  84. package/__flow__/Indicator/index.test.js +6 -6
  85. package/__flow__/Indicator/styles.js +6 -6
  86. package/__flow__/Input/index.js +37 -37
  87. package/__flow__/Input/index.stories.js +96 -189
  88. package/__flow__/Input/index.test.js +117 -117
  89. package/__flow__/Input/styles.js +13 -13
  90. package/__flow__/KeyboardKey/index.js +5 -5
  91. package/__flow__/KeyboardKey/index.stories.js +9 -12
  92. package/__flow__/KeyboardKey/index.test.js +7 -7
  93. package/__flow__/KeyboardKey/styles.js +4 -4
  94. package/__flow__/Label/index.js +6 -6
  95. package/__flow__/Label/index.stories.js +5 -7
  96. package/__flow__/Label/index.test.js +8 -8
  97. package/__flow__/Link/constants.js +4 -4
  98. package/__flow__/Link/index.js +11 -11
  99. package/__flow__/Link/index.stories.js +61 -102
  100. package/__flow__/Link/index.test.js +40 -40
  101. package/__flow__/Link/styles.js +6 -6
  102. package/__flow__/Listbox/index.js +16 -16
  103. package/__flow__/Listbox/index.stories.js +35 -35
  104. package/__flow__/Listbox/index.test.js +63 -65
  105. package/__flow__/Loader/index.js +12 -12
  106. package/__flow__/Loader/index.stories.js +10 -10
  107. package/__flow__/Loader/index.test.js +17 -17
  108. package/__flow__/Loader/styles.js +9 -13
  109. package/__flow__/LoaderButton/index.js +36 -18
  110. package/__flow__/LoaderButton/index.stories.js +35 -7
  111. package/__flow__/LoaderButton/index.test.js +15 -15
  112. package/__flow__/Menu/__snapshots__/index.test.js.snap +0 -9
  113. package/__flow__/Menu/constants.js +8 -8
  114. package/__flow__/Menu/descendants.js +89 -80
  115. package/__flow__/Menu/hooks.js +22 -22
  116. package/__flow__/Menu/index.flow.js +13 -13
  117. package/__flow__/Menu/index.js +56 -60
  118. package/__flow__/Menu/index.stories.js +19 -19
  119. package/__flow__/Menu/index.test.js +22 -22
  120. package/__flow__/Menu/names.js +4945 -4945
  121. package/__flow__/Menu/styles.js +5 -5
  122. package/__flow__/Message/index.js +33 -33
  123. package/__flow__/Message/index.stories.js +18 -13
  124. package/__flow__/Message/index.test.js +6 -6
  125. package/__flow__/Message/styles.js +15 -15
  126. package/__flow__/Modal/index.js +19 -19
  127. package/__flow__/Modal/index.stories.js +43 -43
  128. package/__flow__/Modal/index.test.js +29 -29
  129. package/__flow__/Modal/styles.js +27 -32
  130. package/__flow__/Numeral/index.js +22 -22
  131. package/__flow__/Numeral/index.stories.js +74 -74
  132. package/__flow__/Numeral/styles.js +3 -3
  133. package/__flow__/Numeral/tests/A11y.test.js +7 -7
  134. package/__flow__/Numeral/tests/abbreviate.test.js +40 -40
  135. package/__flow__/Numeral/tests/currency.test.js +24 -24
  136. package/__flow__/Numeral/tests/defaults.test.js +20 -20
  137. package/__flow__/Numeral/tests/invalid.test.js +9 -9
  138. package/__flow__/Numeral/tests/locale.test.js +38 -38
  139. package/__flow__/Numeral/tests/precision.test.js +76 -76
  140. package/__flow__/Numeral/tests/testNumeral.js +11 -11
  141. package/__flow__/Numeral/tests/zero.test.js +8 -8
  142. package/__flow__/OverflowList/index.flow.js +2 -2
  143. package/__flow__/OverflowList/index.js +12 -12
  144. package/__flow__/OverflowList/index.stories.js +10 -10
  145. package/__flow__/OverflowList/index.test.js +25 -25
  146. package/__flow__/OverflowList/styles.js +5 -5
  147. package/__flow__/PartnerLogo/TypePartnerNames.js +37 -37
  148. package/__flow__/PartnerLogo/index.js +21 -27
  149. package/__flow__/PartnerLogo/index.stories.js +52 -52
  150. package/__flow__/PartnerLogo/styles.js +12 -24
  151. package/__flow__/Popout/index.js +66 -67
  152. package/__flow__/Popout/index.stories.js +101 -82
  153. package/__flow__/Popout/index.test.js +43 -43
  154. package/__flow__/Popout/styles.js +4 -5
  155. package/__flow__/Portal/index.js +9 -9
  156. package/__flow__/Portal/index.stories.js +12 -12
  157. package/__flow__/Radio/index.js +4 -4
  158. package/__flow__/Radio/index.stories.js +11 -11
  159. package/__flow__/Radio/index.test.js +12 -12
  160. package/__flow__/Radio/styles.js +15 -16
  161. package/__flow__/SegmentedControl/index.js +7 -7
  162. package/__flow__/SegmentedControl/index.stories.js +7 -7
  163. package/__flow__/SegmentedControl/index.test.js +29 -29
  164. package/__flow__/SegmentedControl/styles.js +10 -9
  165. package/__flow__/Select/index.js +10 -10
  166. package/__flow__/Select/index.stories.js +33 -69
  167. package/__flow__/Select/index.test.js +14 -14
  168. package/__flow__/Select/styles.js +16 -16
  169. package/__flow__/Skeleton/index.js +4 -4
  170. package/__flow__/Skeleton/index.stories.js +5 -5
  171. package/__flow__/SpotIllustration/illustrationNames.js +118 -117
  172. package/__flow__/SpotIllustration/index.js +15 -11
  173. package/__flow__/SpotIllustration/index.stories.js +18 -18
  174. package/__flow__/SpotIllustration/spotIllustrations/molecule.svg +14 -0
  175. package/__flow__/Stack/index.js +43 -33
  176. package/__flow__/Stack/index.stories.js +41 -91
  177. package/__flow__/Stack/index.test.js +16 -7
  178. package/__flow__/Switch/index.js +8 -8
  179. package/__flow__/Switch/index.stories.js +5 -5
  180. package/__flow__/Switch/index.test.js +25 -29
  181. package/__flow__/Switch/styles.js +13 -9
  182. package/__flow__/Table/index.js +17 -17
  183. package/__flow__/Table/index.stories.js +99 -99
  184. package/__flow__/Table/index.test.js +32 -32
  185. package/__flow__/Table/styles.js +4 -4
  186. package/__flow__/TableCell/index.js +8 -7
  187. package/__flow__/TableCell/index.stories.js +20 -23
  188. package/__flow__/TableCell/index.test.js +11 -11
  189. package/__flow__/TableCell/styles.js +4 -5
  190. package/__flow__/TableHeaderCell/index.js +14 -14
  191. package/__flow__/TableHeaderCell/index.stories.js +35 -30
  192. package/__flow__/TableHeaderCell/index.test.js +11 -11
  193. package/__flow__/TableHeaderCell/styles.js +4 -4
  194. package/__flow__/TableRowAccordion/index.js +8 -8
  195. package/__flow__/TableRowAccordion/index.stories.js +36 -36
  196. package/__flow__/TableRowAccordion/index.test.js +28 -30
  197. package/__flow__/TableRowAccordion/styles.js +11 -7
  198. package/__flow__/Tabs/index.js +11 -11
  199. package/__flow__/Tabs/index.stories.js +28 -54
  200. package/__flow__/Tabs/index.test.js +54 -54
  201. package/__flow__/Tabs/styles.js +6 -7
  202. package/__flow__/Text/index.js +14 -14
  203. package/__flow__/Text/index.stories.js +84 -86
  204. package/__flow__/Text/index.test.js +29 -33
  205. package/__flow__/Text/styles.js +4 -4
  206. package/__flow__/Textarea/index.js +5 -5
  207. package/__flow__/Textarea/index.stories.js +54 -93
  208. package/__flow__/Textarea/index.test.js +30 -30
  209. package/__flow__/Textarea/styles.js +6 -6
  210. package/__flow__/ThemeProvider/index.js +4 -4
  211. package/__flow__/Toast/index.js +23 -23
  212. package/__flow__/Toast/index.stories.js +21 -21
  213. package/__flow__/Toast/styles.js +6 -6
  214. package/__flow__/ToggleHint/index.js +8 -8
  215. package/__flow__/ToggleHint/index.test.js +8 -8
  216. package/__flow__/ToggleHint/styles.js +8 -8
  217. package/__flow__/Token/index.js +10 -10
  218. package/__flow__/Token/index.stories.js +49 -54
  219. package/__flow__/Token/index.test.js +28 -28
  220. package/__flow__/Token/styles.js +11 -11
  221. package/__flow__/TokenInput/index.flow.js +1 -1
  222. package/__flow__/TokenInput/index.js +39 -39
  223. package/__flow__/TokenInput/index.stories.js +121 -128
  224. package/__flow__/TokenInput/styles.js +5 -5
  225. package/__flow__/TokenInput/tests/default/clicking.test.js +13 -13
  226. package/__flow__/TokenInput/tests/default/deleting.test.js +39 -39
  227. package/__flow__/TokenInput/tests/default/focusing.test.js +18 -18
  228. package/__flow__/TokenInput/tests/default/inputting.test.js +23 -23
  229. package/__flow__/TokenInput/tests/default/pasting.test.js +52 -52
  230. package/__flow__/TokenInput/tests/default/rendering.test.js +54 -54
  231. package/__flow__/TokenInput/util.js +4 -4
  232. package/__flow__/Tooltip/index.js +21 -21
  233. package/__flow__/Tooltip/index.stories.js +18 -18
  234. package/__flow__/Tooltip/index.test.js +54 -54
  235. package/__flow__/Tooltip/styles.js +4 -5
  236. package/__flow__/VisuallyHidden/index.js +3 -3
  237. package/__flow__/building-stories.stories.mdx +121 -0
  238. package/__flow__/dataviz/dataviz.stories.js +4 -4
  239. package/__flow__/dataviz/index.js +3 -3
  240. package/__flow__/index.js +72 -72
  241. package/__flow__/overview.stories.js +60 -0
  242. package/__flow__/setupTests.js +5 -5
  243. package/__flow__/systemProps/background.js +3 -3
  244. package/__flow__/systemProps/border.js +3 -3
  245. package/__flow__/systemProps/color.js +3 -3
  246. package/__flow__/systemProps/custom.js +3 -3
  247. package/__flow__/systemProps/flexbox.js +3 -3
  248. package/__flow__/systemProps/grid.js +3 -3
  249. package/__flow__/systemProps/index.js +14 -14
  250. package/__flow__/systemProps/layout.js +3 -3
  251. package/__flow__/systemProps/position.js +3 -3
  252. package/__flow__/systemProps/shadow.js +3 -3
  253. package/__flow__/systemProps/space.js +3 -7
  254. package/__flow__/systemProps/systemProps.js +14 -14
  255. package/__flow__/systemProps/tests/background.test.js +17 -17
  256. package/__flow__/systemProps/tests/border.test.js +61 -61
  257. package/__flow__/systemProps/tests/color.test.js +15 -15
  258. package/__flow__/systemProps/tests/custom.test.js +12 -12
  259. package/__flow__/systemProps/tests/flexbox.test.js +33 -33
  260. package/__flow__/systemProps/tests/grid.test.js +31 -31
  261. package/__flow__/systemProps/tests/layout.test.js +29 -29
  262. package/__flow__/systemProps/tests/position.test.js +19 -19
  263. package/__flow__/systemProps/tests/shadow.test.js +11 -11
  264. package/__flow__/systemProps/tests/space.test.js +11 -11
  265. package/__flow__/systemProps/tests/types.flow.js +18 -18
  266. package/__flow__/systemProps/tests/typography.test.js +21 -21
  267. package/__flow__/systemProps/tests/variant.test.js +9 -9
  268. package/__flow__/systemProps/types.flow.js +2 -2
  269. package/__flow__/systemProps/typography.js +4 -4
  270. package/__flow__/systemProps/variant.js +5 -5
  271. package/__flow__/themes/dark/dataviz-palette.js +21 -21
  272. package/__flow__/themes/dark/decorative-palettes.js +1 -1
  273. package/__flow__/themes/dark/theme.js +18 -18
  274. package/__flow__/themes/extendedThemes/README.md +1 -1
  275. package/__flow__/themes/extendedThemes/sproutTheme/dark/theme.js +16 -4
  276. package/__flow__/themes/extendedThemes/sproutTheme/index.js +2 -2
  277. package/__flow__/themes/extendedThemes/sproutTheme/light/theme.js +16 -4
  278. package/__flow__/themes/light/dataviz-palette.js +21 -21
  279. package/__flow__/themes/light/decorative-palettes.js +1 -1
  280. package/__flow__/themes/light/literal-colors.js +133 -133
  281. package/__flow__/themes/light/theme.js +53 -53
  282. package/__flow__/types/system-props.flow.js +5 -5
  283. package/__flow__/types/theme.colors.flow.js +2 -2
  284. package/__flow__/types/theme.flow.js +5 -5
  285. package/__flow__/utils/a11yTest.js +1 -1
  286. package/__flow__/utils/chartColors.js +1 -1
  287. package/__flow__/utils/constants.js +1 -1
  288. package/__flow__/utils/dataQaLabelQueries.js +2 -2
  289. package/__flow__/utils/hooks.js +17 -17
  290. package/__flow__/utils/index.js +4 -4
  291. package/__flow__/utils/innerText.js +9 -9
  292. package/__flow__/utils/mixins.js +6 -6
  293. package/__flow__/utils/react-testing-library.js +6 -6
  294. package/__flow__/utils/responsiveProps/index.js +3 -3
  295. package/__flow__/utils/responsiveProps/index.test.js +8 -8
  296. package/__flow__/utils/system-props.js +3 -3
  297. package/__flow__/utils/useInteractiveColor.js +5 -5
  298. package/__flow__/writing-good-stories.stories.mdx +3 -0
  299. package/bin/racine-codemod.js +12 -12
  300. package/codemods/__tests__/migrate-2.x-to-3.x.test.js +2 -2
  301. package/codemods/migrate-2.x-to-3.x.js +29 -30
  302. package/commonjs/Avatar/index.js +33 -53
  303. package/commonjs/Badge/constants.js +18 -15
  304. package/commonjs/Badge/index.js +14 -28
  305. package/commonjs/Badge/styles.js +3 -9
  306. package/commonjs/Banner/index.js +16 -37
  307. package/commonjs/Banner/styles.js +0 -5
  308. package/commonjs/Box/index.js +2 -9
  309. package/commonjs/Box/styles.js +0 -4
  310. package/commonjs/Breadcrumb/index.js +13 -29
  311. package/commonjs/Breadcrumb/styles.js +1 -4
  312. package/commonjs/Button/index.js +29 -43
  313. package/commonjs/Button/styles.js +6 -15
  314. package/commonjs/Card/index.js +16 -26
  315. package/commonjs/Card/styles.js +1 -5
  316. package/commonjs/CharacterCounter/index.js +6 -23
  317. package/commonjs/CharacterCounter/styles.js +0 -5
  318. package/commonjs/ChartLegend/index.js +5 -20
  319. package/commonjs/ChartLegend/styles.js +2 -11
  320. package/commonjs/Checkbox/index.js +30 -53
  321. package/commonjs/Checkbox/styles.js +14 -35
  322. package/commonjs/Collapsible/index.js +31 -54
  323. package/commonjs/Collapsible/styles.js +3 -6
  324. package/commonjs/DatePicker/DateRangePicker.js +4 -17
  325. package/commonjs/DatePicker/SingleDatePicker.js +3 -17
  326. package/commonjs/DatePicker/StatefulDateRangePicker.js +16 -31
  327. package/commonjs/DatePicker/StatefulSingleDatePicker.js +7 -20
  328. package/commonjs/DatePicker/common.js +8 -22
  329. package/commonjs/DatePicker/index.js +0 -5
  330. package/commonjs/DatePicker/styles.js +8 -25
  331. package/commonjs/Drawer/SlideTransition.js +8 -18
  332. package/commonjs/Drawer/index.js +51 -90
  333. package/commonjs/Drawer/styles.js +0 -8
  334. package/commonjs/EmptyState/index.js +8 -20
  335. package/commonjs/Fieldset/index.js +15 -32
  336. package/commonjs/Fieldset/styles.js +2 -7
  337. package/commonjs/FormField/index.js +19 -36
  338. package/commonjs/Icon/deprecatedIcons.js +36 -36
  339. package/commonjs/Icon/index.js +19 -37
  340. package/commonjs/Icon/styles.js +8 -19
  341. package/commonjs/IllustrationViewBoxes.js +1 -0
  342. package/commonjs/Image/index.js +13 -41
  343. package/commonjs/Image/styles.js +1 -7
  344. package/commonjs/Indicator/index.js +8 -26
  345. package/commonjs/Indicator/styles.js +1 -7
  346. package/commonjs/Input/index.js +80 -119
  347. package/commonjs/Input/styles.js +9 -19
  348. package/commonjs/KeyboardKey/index.js +3 -20
  349. package/commonjs/KeyboardKey/styles.js +0 -4
  350. package/commonjs/Label/index.js +7 -27
  351. package/commonjs/Link/constants.js +3 -4
  352. package/commonjs/Link/index.js +16 -28
  353. package/commonjs/Link/styles.js +1 -8
  354. package/commonjs/Listbox/index.js +15 -36
  355. package/commonjs/Loader/index.js +15 -31
  356. package/commonjs/Loader/styles.js +2 -13
  357. package/commonjs/LoaderButton/index.js +37 -39
  358. package/commonjs/Menu/constants.js +9 -8
  359. package/commonjs/Menu/descendants.js +70 -105
  360. package/commonjs/Menu/hooks.js +23 -41
  361. package/commonjs/Menu/index.flow.js +0 -7
  362. package/commonjs/Menu/index.js +94 -164
  363. package/commonjs/Menu/names.js +1 -1
  364. package/commonjs/Menu/styles.js +0 -6
  365. package/commonjs/Message/index.js +37 -70
  366. package/commonjs/Message/styles.js +9 -24
  367. package/commonjs/Modal/index.js +31 -54
  368. package/commonjs/Modal/styles.js +17 -36
  369. package/commonjs/Numeral/index.js +39 -67
  370. package/commonjs/Numeral/styles.js +0 -3
  371. package/commonjs/Numeral/tests/testNumeral.js +13 -31
  372. package/commonjs/OverflowList/index.flow.js +0 -2
  373. package/commonjs/OverflowList/index.js +27 -41
  374. package/commonjs/OverflowList/styles.js +0 -7
  375. package/commonjs/PartnerLogo/index.js +22 -37
  376. package/commonjs/PartnerLogo/styles.js +7 -17
  377. package/commonjs/Popout/index.js +95 -127
  378. package/commonjs/Popout/styles.js +0 -5
  379. package/commonjs/Portal/index.js +8 -31
  380. package/commonjs/Radio/index.js +18 -42
  381. package/commonjs/Radio/styles.js +9 -21
  382. package/commonjs/SegmentedControl/index.js +17 -37
  383. package/commonjs/SegmentedControl/styles.js +2 -12
  384. package/commonjs/Select/index.js +24 -47
  385. package/commonjs/Select/styles.js +12 -24
  386. package/commonjs/Skeleton/index.js +0 -5
  387. package/commonjs/SpotIllustration/illustrationNames.js +1 -1
  388. package/commonjs/SpotIllustration/index.js +5 -11
  389. package/commonjs/Stack/index.js +27 -42
  390. package/commonjs/Switch/index.js +17 -42
  391. package/commonjs/Switch/styles.js +3 -11
  392. package/commonjs/Table/index.js +26 -50
  393. package/commonjs/Table/styles.js +0 -4
  394. package/commonjs/TableCell/index.js +12 -30
  395. package/commonjs/TableCell/styles.js +0 -5
  396. package/commonjs/TableHeaderCell/index.js +27 -56
  397. package/commonjs/TableHeaderCell/styles.js +0 -6
  398. package/commonjs/TableRowAccordion/index.js +12 -37
  399. package/commonjs/TableRowAccordion/styles.js +2 -9
  400. package/commonjs/Tabs/index.js +16 -66
  401. package/commonjs/Tabs/styles.js +2 -11
  402. package/commonjs/Text/index.js +12 -25
  403. package/commonjs/Text/styles.js +1 -6
  404. package/commonjs/Textarea/index.js +31 -55
  405. package/commonjs/Textarea/styles.js +2 -9
  406. package/commonjs/ThemeProvider/index.js +1 -10
  407. package/commonjs/Toast/index.js +19 -42
  408. package/commonjs/Toast/styles.js +1 -7
  409. package/commonjs/ToggleHint/index.js +15 -39
  410. package/commonjs/ToggleHint/styles.js +2 -9
  411. package/commonjs/Token/index.js +15 -29
  412. package/commonjs/Token/styles.js +5 -12
  413. package/commonjs/TokenInput/index.js +70 -122
  414. package/commonjs/TokenInput/styles.js +1 -7
  415. package/commonjs/TokenInput/util.js +2 -7
  416. package/commonjs/Tooltip/index.js +40 -63
  417. package/commonjs/Tooltip/styles.js +1 -5
  418. package/commonjs/VisuallyHidden/index.js +0 -4
  419. package/commonjs/dataviz/index.js +0 -4
  420. package/commonjs/index.js +0 -129
  421. package/commonjs/systemProps/background.js +0 -1
  422. package/commonjs/systemProps/border.js +0 -1
  423. package/commonjs/systemProps/color.js +0 -1
  424. package/commonjs/systemProps/custom.js +0 -1
  425. package/commonjs/systemProps/flexbox.js +0 -1
  426. package/commonjs/systemProps/grid.js +0 -1
  427. package/commonjs/systemProps/index.js +0 -28
  428. package/commonjs/systemProps/layout.js +0 -1
  429. package/commonjs/systemProps/position.js +0 -1
  430. package/commonjs/systemProps/shadow.js +0 -1
  431. package/commonjs/systemProps/space.js +1 -2
  432. package/commonjs/systemProps/systemProps.js +0 -13
  433. package/commonjs/systemProps/tests/types.flow.js +25 -22
  434. package/commonjs/systemProps/typography.js +0 -1
  435. package/commonjs/systemProps/variant.js +2 -3
  436. package/commonjs/themes/dark/dataviz-palette.js +20 -22
  437. package/commonjs/themes/dark/decorative-palettes.js +0 -2
  438. package/commonjs/themes/dark/theme.js +15 -29
  439. package/commonjs/themes/extendedThemes/sproutTheme/dark/theme.js +14 -9
  440. package/commonjs/themes/extendedThemes/sproutTheme/index.js +0 -5
  441. package/commonjs/themes/extendedThemes/sproutTheme/light/theme.js +14 -9
  442. package/commonjs/themes/light/dataviz-palette.js +20 -22
  443. package/commonjs/themes/light/decorative-palettes.js +0 -2
  444. package/commonjs/themes/light/literal-colors.js +132 -134
  445. package/commonjs/themes/light/theme.js +45 -61
  446. package/commonjs/types/system-props.flow.js +1 -1
  447. package/commonjs/types/theme.colors.flow.js +0 -2
  448. package/commonjs/types/theme.flow.js +0 -1
  449. package/commonjs/utils/a11yTest.js +3 -10
  450. package/commonjs/utils/chartColors.js +0 -1
  451. package/commonjs/utils/constants.js +1 -1
  452. package/commonjs/utils/dataQaLabelQueries.js +12 -21
  453. package/commonjs/utils/hooks.js +39 -70
  454. package/commonjs/utils/index.js +2 -9
  455. package/commonjs/utils/innerText.js +10 -14
  456. package/commonjs/utils/mixins.js +2 -7
  457. package/commonjs/utils/react-testing-library.js +4 -26
  458. package/commonjs/utils/responsiveProps/index.js +1 -11
  459. package/commonjs/utils/system-props.js +2 -5
  460. package/commonjs/utils/useInteractiveColor.js +6 -8
  461. package/dist/illustration.svg +1 -1
  462. package/dist/illustrationList.js +1 -1
  463. package/dist/themes/dark/theme.scss +2 -2
  464. package/dist/themes/extendedThemes/sproutTheme/dark/theme.scss +26 -2
  465. package/dist/themes/extendedThemes/sproutTheme/light/theme.scss +26 -2
  466. package/dist/themes/light/theme.scss +2 -2
  467. package/lib/Avatar/index.js +40 -47
  468. package/lib/Badge/constants.js +19 -15
  469. package/lib/Badge/index.js +18 -25
  470. package/lib/Badge/styles.js +8 -6
  471. package/lib/Banner/index.js +20 -32
  472. package/lib/Banner/styles.js +3 -2
  473. package/lib/Box/index.js +4 -5
  474. package/lib/Box/styles.js +3 -2
  475. package/lib/Breadcrumb/index.js +19 -27
  476. package/lib/Breadcrumb/styles.js +3 -2
  477. package/lib/Button/index.js +31 -38
  478. package/lib/Button/styles.js +14 -11
  479. package/lib/Card/index.js +18 -24
  480. package/lib/Card/styles.js +5 -4
  481. package/lib/CharacterCounter/index.js +8 -20
  482. package/lib/CharacterCounter/styles.js +3 -2
  483. package/lib/ChartLegend/index.js +9 -17
  484. package/lib/ChartLegend/styles.js +5 -4
  485. package/lib/Checkbox/index.js +32 -51
  486. package/lib/Checkbox/styles.js +21 -26
  487. package/lib/Collapsible/index.js +36 -51
  488. package/lib/Collapsible/styles.js +6 -5
  489. package/lib/DatePicker/DateRangePicker.js +8 -14
  490. package/lib/DatePicker/SingleDatePicker.js +7 -13
  491. package/lib/DatePicker/StatefulDateRangePicker.js +19 -26
  492. package/lib/DatePicker/StatefulSingleDatePicker.js +9 -15
  493. package/lib/DatePicker/common.js +14 -13
  494. package/lib/DatePicker/index.js +2 -2
  495. package/lib/DatePicker/styles.js +12 -22
  496. package/lib/Drawer/SlideTransition.js +11 -14
  497. package/lib/Drawer/index.js +64 -88
  498. package/lib/Drawer/styles.js +4 -3
  499. package/lib/EmptyState/index.js +11 -17
  500. package/lib/Fieldset/index.js +19 -29
  501. package/lib/Fieldset/styles.js +5 -4
  502. package/lib/FormField/index.js +27 -33
  503. package/lib/Icon/deprecatedIcons.js +36 -36
  504. package/lib/Icon/index.js +25 -34
  505. package/lib/Icon/styles.js +12 -16
  506. package/lib/IllustrationViewBoxes.js +1 -0
  507. package/lib/Image/index.js +15 -38
  508. package/lib/Image/styles.js +4 -4
  509. package/lib/Indicator/index.js +11 -23
  510. package/lib/Indicator/styles.js +5 -5
  511. package/lib/Input/index.js +87 -115
  512. package/lib/Input/styles.js +13 -15
  513. package/lib/KeyboardKey/index.js +6 -17
  514. package/lib/KeyboardKey/styles.js +3 -2
  515. package/lib/Label/index.js +10 -24
  516. package/lib/Link/constants.js +5 -4
  517. package/lib/Link/index.js +18 -25
  518. package/lib/Link/styles.js +6 -5
  519. package/lib/Listbox/index.js +21 -29
  520. package/lib/Loader/index.js +17 -29
  521. package/lib/Loader/styles.js +6 -8
  522. package/lib/LoaderButton/index.js +45 -34
  523. package/lib/Menu/constants.js +10 -8
  524. package/lib/Menu/descendants.js +73 -94
  525. package/lib/Menu/hooks.js +28 -39
  526. package/lib/Menu/index.flow.js +6 -5
  527. package/lib/Menu/index.js +113 -150
  528. package/lib/Menu/names.js +1 -1
  529. package/lib/Menu/styles.js +4 -3
  530. package/lib/Message/index.js +42 -66
  531. package/lib/Message/styles.js +15 -23
  532. package/lib/Modal/index.js +38 -51
  533. package/lib/Modal/styles.js +23 -32
  534. package/lib/Numeral/index.js +45 -64
  535. package/lib/Numeral/styles.js +3 -2
  536. package/lib/Numeral/tests/testNumeral.js +17 -27
  537. package/lib/OverflowList/index.flow.js +2 -1
  538. package/lib/OverflowList/index.js +31 -38
  539. package/lib/OverflowList/styles.js +5 -4
  540. package/lib/PartnerLogo/index.js +26 -35
  541. package/lib/PartnerLogo/styles.js +11 -14
  542. package/lib/Popout/index.js +105 -121
  543. package/lib/Popout/styles.js +3 -3
  544. package/lib/Portal/index.js +11 -29
  545. package/lib/Radio/index.js +20 -40
  546. package/lib/Radio/styles.js +14 -14
  547. package/lib/SegmentedControl/index.js +21 -34
  548. package/lib/SegmentedControl/styles.js +7 -9
  549. package/lib/Select/index.js +27 -44
  550. package/lib/Select/styles.js +16 -20
  551. package/lib/Skeleton/index.js +7 -4
  552. package/lib/SpotIllustration/illustrationNames.js +2 -1
  553. package/lib/SpotIllustration/index.js +9 -10
  554. package/lib/Stack/index.js +31 -39
  555. package/lib/Switch/index.js +21 -39
  556. package/lib/Switch/styles.js +8 -7
  557. package/lib/Table/index.js +30 -40
  558. package/lib/Table/styles.js +3 -2
  559. package/lib/TableCell/index.js +14 -27
  560. package/lib/TableCell/styles.js +3 -3
  561. package/lib/TableHeaderCell/index.js +30 -52
  562. package/lib/TableHeaderCell/styles.js +3 -2
  563. package/lib/TableRowAccordion/index.js +16 -34
  564. package/lib/TableRowAccordion/styles.js +5 -3
  565. package/lib/Tabs/index.js +18 -63
  566. package/lib/Tabs/styles.js +6 -6
  567. package/lib/Text/index.js +15 -21
  568. package/lib/Text/styles.js +4 -3
  569. package/lib/Textarea/index.js +33 -53
  570. package/lib/Textarea/styles.js +6 -5
  571. package/lib/ThemeProvider/index.js +4 -7
  572. package/lib/Toast/index.js +26 -37
  573. package/lib/Toast/styles.js +5 -4
  574. package/lib/ToggleHint/index.js +18 -36
  575. package/lib/ToggleHint/styles.js +6 -5
  576. package/lib/Token/index.js +20 -26
  577. package/lib/Token/styles.js +10 -9
  578. package/lib/TokenInput/index.js +78 -118
  579. package/lib/TokenInput/styles.js +5 -4
  580. package/lib/TokenInput/util.js +5 -3
  581. package/lib/Tooltip/index.js +45 -60
  582. package/lib/Tooltip/styles.js +4 -4
  583. package/lib/VisuallyHidden/index.js +3 -2
  584. package/lib/dataviz/index.js +4 -3
  585. package/lib/index.js +66 -64
  586. package/lib/systemProps/background.js +3 -1
  587. package/lib/systemProps/border.js +3 -1
  588. package/lib/systemProps/color.js +3 -1
  589. package/lib/systemProps/custom.js +3 -1
  590. package/lib/systemProps/flexbox.js +3 -1
  591. package/lib/systemProps/grid.js +3 -1
  592. package/lib/systemProps/index.js +16 -14
  593. package/lib/systemProps/layout.js +3 -1
  594. package/lib/systemProps/position.js +3 -1
  595. package/lib/systemProps/shadow.js +3 -1
  596. package/lib/systemProps/space.js +2 -1
  597. package/lib/systemProps/systemProps.js +14 -13
  598. package/lib/systemProps/tests/types.flow.js +27 -22
  599. package/lib/systemProps/typography.js +3 -1
  600. package/lib/systemProps/variant.js +4 -3
  601. package/lib/themes/dark/dataviz-palette.js +23 -21
  602. package/lib/themes/dark/decorative-palettes.js +3 -1
  603. package/lib/themes/dark/theme.js +22 -25
  604. package/lib/themes/extendedThemes/sproutTheme/dark/theme.js +16 -7
  605. package/lib/themes/extendedThemes/sproutTheme/index.js +3 -2
  606. package/lib/themes/extendedThemes/sproutTheme/light/theme.js +16 -7
  607. package/lib/themes/light/dataviz-palette.js +23 -21
  608. package/lib/themes/light/decorative-palettes.js +3 -1
  609. package/lib/themes/light/literal-colors.js +135 -133
  610. package/lib/themes/light/theme.js +56 -57
  611. package/lib/types/system-props.flow.js +1 -1
  612. package/lib/types/theme.colors.flow.js +4 -2
  613. package/lib/types/theme.flow.js +3 -2
  614. package/lib/utils/a11yTest.js +5 -8
  615. package/lib/utils/chartColors.js +3 -1
  616. package/lib/utils/constants.js +3 -1
  617. package/lib/utils/dataQaLabelQueries.js +13 -21
  618. package/lib/utils/hooks.js +41 -64
  619. package/lib/utils/index.js +2 -5
  620. package/lib/utils/innerText.js +12 -14
  621. package/lib/utils/mixins.js +6 -5
  622. package/lib/utils/react-testing-library.js +10 -20
  623. package/lib/utils/responsiveProps/index.js +3 -8
  624. package/lib/utils/system-props.js +4 -3
  625. package/lib/utils/useInteractiveColor.js +10 -9
  626. package/package.json +6 -13
@@ -1,34 +1,50 @@
1
1
  // @flow
2
- import * as React from "react";
3
- import styled, { css } from "styled-components";
4
- import Box from "../Box";
5
- import Button, { type TypeProps as TypeButtonProps } from "../Button";
6
- import Loader from "../Loader";
7
- import { rgba } from "polished";
8
- import { COLOR_NEUTRAL_0, COLOR_NEUTRAL_1000 } from "@sproutsocial/seeds-color";
2
+ import * as React from 'react';
3
+ import styled, {css} from 'styled-components';
4
+ import Box from '../Box';
5
+ import Button, {type TypeProps as TypeButtonProps} from '../Button';
6
+ import Loader from '../Loader';
7
+ import {useTheme} from 'styled-components';
8
+ import {rgba} from 'polished';
9
+ import {COLOR_NEUTRAL_0, COLOR_NEUTRAL_1000} from '@sproutsocial/seeds-color';
9
10
 
10
11
  type TypeLoaderButtonProps = TypeButtonProps & {
11
12
  isLoading?: boolean,
12
13
  loaderLabel: string,
13
14
  };
14
15
 
15
- const getColor = (appearance) => {
16
+ // TODO: This is a temporary solution to get the loader button to work with dark mode
17
+ const getColor = (appearance, themeColorMode) => {
18
+ const selectColorBasedOnMode = themeColorMode === 'dark' ? 'light' : 'dark';
16
19
  switch (appearance) {
17
20
  /** "default" is @deprecated in favour of unstyled */
18
- case "default":
19
- case "unstyled":
20
- case "outline":
21
- case "secondary":
22
- return "dark";
21
+ case 'default':
22
+ return selectColorBasedOnMode;
23
+ case 'unstyled':
24
+ return selectColorBasedOnMode;
25
+ case 'primary':
26
+ return 'light';
27
+ case 'secondary':
28
+ return selectColorBasedOnMode;
29
+ case 'destructive':
30
+ return 'light';
31
+ case 'placeholder':
32
+ return selectColorBasedOnMode;
33
+ case 'pill':
34
+ return selectColorBasedOnMode;
35
+ case 'outline':
36
+ // This case doesn't even make sense.... There's no outline button
37
+ // TODO: investigate if this is even used anywhere
38
+ return 'light';
23
39
  default:
24
- return "light";
40
+ return 'light';
25
41
  }
26
42
  };
27
43
 
28
44
  const CustomLoader = styled(Loader)`
29
45
  &:after {
30
46
  ${(p) =>
31
- p.color === "light" &&
47
+ p.color === 'light' &&
32
48
  css`
33
49
  border-color: ${rgba(COLOR_NEUTRAL_0, 0.5)}
34
50
  ${rgba(COLOR_NEUTRAL_0, 0.5)} ${rgba(COLOR_NEUTRAL_0, 1)}
@@ -36,7 +52,7 @@ const CustomLoader = styled(Loader)`
36
52
  `}
37
53
 
38
54
  ${(p) =>
39
- p.color === "dark" &&
55
+ p.color === 'dark' &&
40
56
  css`
41
57
  border-color: ${rgba(COLOR_NEUTRAL_1000, 0.5)}
42
58
  ${rgba(COLOR_NEUTRAL_1000, 0.5)} ${rgba(COLOR_NEUTRAL_1000, 1)}
@@ -46,7 +62,7 @@ const CustomLoader = styled(Loader)`
46
62
  `;
47
63
 
48
64
  export const LoaderButton = ({
49
- appearance = "unstyled",
65
+ appearance = 'unstyled',
50
66
  isLoading: _isLoading = false,
51
67
  disabled,
52
68
  loaderLabel,
@@ -54,6 +70,8 @@ export const LoaderButton = ({
54
70
  ...rest
55
71
  }: TypeLoaderButtonProps) => {
56
72
  const isLoading = Boolean(_isLoading);
73
+ const {mode: themeColorMode} = useTheme();
74
+
57
75
  return (
58
76
  <Button
59
77
  disabled={disabled || isLoading}
@@ -72,7 +90,7 @@ export const LoaderButton = ({
72
90
  text={loaderLabel}
73
91
  size="small"
74
92
  delay={false}
75
- color={getColor(appearance)}
93
+ color={getColor(appearance, themeColorMode)}
76
94
  />
77
95
  </Box>
78
96
  )}
@@ -1,10 +1,10 @@
1
1
  // @flow
2
- import React from "react";
3
- import LoaderButton from "./index";
4
- import Box from "../Box";
2
+ import React from 'react';
3
+ import LoaderButton from './index';
4
+ import Box from '../Box';
5
5
 
6
6
  export default {
7
- title: "LoaderButton",
7
+ title: 'Components/LoaderButton',
8
8
  };
9
9
 
10
10
  export const defaultStory = () => (
@@ -20,7 +20,7 @@ export const defaultStory = () => (
20
20
  );
21
21
 
22
22
  defaultStory.story = {
23
- name: "Default",
23
+ name: 'Default',
24
24
  };
25
25
 
26
26
  export const primary = () => (
@@ -36,7 +36,7 @@ export const primary = () => (
36
36
  );
37
37
 
38
38
  primary.story = {
39
- name: "Primary",
39
+ name: 'Primary',
40
40
  };
41
41
 
42
42
  export const secondary = () => (
@@ -52,5 +52,33 @@ export const secondary = () => (
52
52
  );
53
53
 
54
54
  secondary.story = {
55
- name: "Secondary",
55
+ name: 'Secondary',
56
56
  };
57
+
58
+ export const allLoaderButtons = () => (
59
+ <Box display="flex" justifyContent="space-around">
60
+ <LoaderButton isLoading loaderLabel="Loading...">
61
+ Loading Button
62
+ </LoaderButton>
63
+
64
+ <LoaderButton appearance="primary" isLoading loaderLabel="Loading...">
65
+ Loading Button
66
+ </LoaderButton>
67
+
68
+ <LoaderButton appearance="secondary" isLoading loaderLabel="Loading...">
69
+ Loading Button
70
+ </LoaderButton>
71
+
72
+ <LoaderButton appearance="destructive" isLoading loaderLabel="Loading...">
73
+ Loading Button
74
+ </LoaderButton>
75
+
76
+ <LoaderButton appearance="placeholder" isLoading loaderLabel="Loading...">
77
+ Loading Button
78
+ </LoaderButton>
79
+
80
+ <LoaderButton appearance="pill" isLoading loaderLabel="Loading...">
81
+ Loading Button
82
+ </LoaderButton>
83
+ </Box>
84
+ );
@@ -1,35 +1,35 @@
1
1
  // @flow
2
- import React from "react";
3
- import { render } from "../utils/react-testing-library";
4
- import "jest-styled-components";
5
- import LoaderButton from "./";
2
+ import React from 'react';
3
+ import {render} from '../utils/react-testing-library';
4
+ import 'jest-styled-components';
5
+ import LoaderButton from './';
6
6
 
7
- describe("LoaderButton", () => {
8
- it("should render properly", async () => {
9
- const { container, runA11yCheck } = render(
7
+ describe('LoaderButton', () => {
8
+ it('should render properly', async () => {
9
+ const {container, runA11yCheck} = render(
10
10
  <LoaderButton loaderLabel="loading">LoaderButton</LoaderButton>
11
11
  );
12
12
  expect(container).toBeTruthy();
13
13
  await runA11yCheck();
14
14
  });
15
15
 
16
- it("should show the loader", async () => {
17
- const { queryByText, rerender } = render(
16
+ it('should show the loader', async () => {
17
+ const {queryByText, rerender} = render(
18
18
  <LoaderButton loaderLabel="loading">text</LoaderButton>
19
19
  );
20
- let loader = queryByText("loading");
21
- let loaderButton = queryByText("text");
20
+ let loader = queryByText('loading');
21
+ let loaderButton = queryByText('text');
22
22
  expect(loader).toBeFalsy();
23
- expect(loaderButton).toHaveAttribute("aria-hidden", "false");
23
+ expect(loaderButton).toHaveAttribute('aria-hidden', 'false');
24
24
 
25
25
  rerender(
26
26
  <LoaderButton isLoading loaderLabel="loading">
27
27
  text
28
28
  </LoaderButton>
29
29
  );
30
- loader = queryByText("loading");
31
- loaderButton = queryByText("text");
30
+ loader = queryByText('loading');
31
+ loaderButton = queryByText('text');
32
32
  expect(loader).toBeTruthy();
33
- expect(loaderButton).toHaveAttribute("aria-hidden", "true");
33
+ expect(loaderButton).toHaveAttribute('aria-hidden', 'true');
34
34
  });
35
35
  });
@@ -14,15 +14,6 @@ exports[`Menu AsMenuButton should match snapshot 1`] = `
14
14
  fill: currentColor;
15
15
  }
16
16
 
17
- _:-ms-fullscreen .c2,
18
- html .c3 {
19
- width: 16px;
20
- }
21
-
22
- .pdf-page .c2 {
23
- width: 16px;
24
- }
25
-
26
17
  .c1 {
27
18
  display: inline-block;
28
19
  box-sizing: border-box;
@@ -1,15 +1,15 @@
1
1
  // @flow
2
2
 
3
3
  export const MENU_ROLES = Object.freeze({
4
- MENU: "menu",
5
- LIST: "list",
6
- LISTBOX: "listbox",
4
+ MENU: 'menu',
5
+ LIST: 'list',
6
+ LISTBOX: 'listbox',
7
7
  });
8
8
 
9
9
  export const MENU_ITEM_ROLES = Object.freeze({
10
- MENUITEM: "menuitem",
11
- LISTITEM: "listitem",
12
- OPTION: "option",
13
- RADIO: "menuitemradio",
14
- CHECKBOX: "menuitemcheckbox",
10
+ MENUITEM: 'menuitem',
11
+ LISTITEM: 'listitem',
12
+ OPTION: 'option',
13
+ RADIO: 'menuitemradio',
14
+ CHECKBOX: 'menuitemcheckbox',
15
15
  });
@@ -1,6 +1,6 @@
1
1
  // @flow
2
2
  /* eslint-disable */
3
- import * as React from "react";
3
+ import * as React from 'react';
4
4
  import {
5
5
  createContext,
6
6
  useState,
@@ -9,8 +9,8 @@ import {
9
9
  useContext,
10
10
  useCallback,
11
11
  useMemo,
12
- useRef
13
- } from "react";
12
+ useRef,
13
+ } from 'react';
14
14
 
15
15
  /**
16
16
  * These hooks and utilities are largely copied from the @reach-ui/descendents package. They consider the package
@@ -21,16 +21,18 @@ import {
21
21
  export type TypeDescendant<ElementType, DescendantProps> = {|
22
22
  ...DescendantProps,
23
23
  element: ElementType | null,
24
- index: number
24
+ index: number,
25
25
  |};
26
26
 
27
27
  type TypeDescendantContext<ElementType, DescendantProps> = {
28
28
  descendants: TypeDescendant<ElementType, DescendantProps>[],
29
29
  registerDescendant(
30
- descendant: $Diff<TypeDescendant<ElementType, DescendantProps>,
31
- {| index: number |}>
30
+ descendant: $Diff<
31
+ TypeDescendant<ElementType, DescendantProps>,
32
+ {|index: number|}
33
+ >
32
34
  ): void,
33
- unregisterDescendant(element: ElementType | null): void
35
+ unregisterDescendant(element: ElementType | null): void,
34
36
  };
35
37
 
36
38
  const noop = () => {};
@@ -60,7 +62,7 @@ export function wrapEvent<EventType: SyntheticEvent<> | Event>(
60
62
  theirHandler: ?(event: EventType) => any,
61
63
  ourHandler: (event: EventType) => any
62
64
  ): (event: EventType) => any {
63
- return event => {
65
+ return (event) => {
64
66
  theirHandler && theirHandler(event);
65
67
  if (!event.defaultPrevented) {
66
68
  return ourHandler(event);
@@ -70,9 +72,9 @@ export function wrapEvent<EventType: SyntheticEvent<> | Event>(
70
72
 
71
73
  export function canUseDOM() {
72
74
  return (
73
- typeof window !== "undefined" &&
74
- typeof window.document !== "undefined" &&
75
- typeof window.document.createElement !== "undefined"
75
+ typeof window !== 'undefined' &&
76
+ typeof window.document !== 'undefined' &&
77
+ typeof window.document.createElement !== 'undefined'
76
78
  );
77
79
  }
78
80
 
@@ -97,7 +99,7 @@ export function createDescendantContext<ElementType, DescendantProps>(
97
99
  descendants: [],
98
100
  registerDescendant: noop,
99
101
  unregisterDescendant: noop,
100
- ...initialValue
102
+ ...initialValue,
101
103
  });
102
104
  }
103
105
 
@@ -130,26 +132,25 @@ export function useDescendant<ElementType, DescendantProps>(
130
132
  element,
131
133
  ...rest
132
134
  }: {|
133
- ...$Diff<TypeDescendant<ElementType, DescendantProps>, {| index: number |}>,
134
- context: React$Context<TypeDescendantContext<ElementType, DescendantProps>>
135
+ ...$Diff<TypeDescendant<ElementType, DescendantProps>, {|index: number|}>,
136
+ context: React$Context<TypeDescendantContext<ElementType, DescendantProps>>,
135
137
  |},
136
138
  indexProp?: number
137
139
  ) {
138
140
  let [, forceUpdate] = useState();
139
- let { registerDescendant, unregisterDescendant, descendants } = useContext<
140
- TypeDescendantContext<ElementType, DescendantProps>
141
- >(context);
141
+ let {registerDescendant, unregisterDescendant, descendants} =
142
+ useContext<TypeDescendantContext<ElementType, DescendantProps>>(context);
142
143
 
143
144
  // Prevent any flashing
144
145
  useIsomorphicLayoutEffect(() => {
145
146
  if (!element) forceUpdate({});
146
- registerDescendant({ element, ...rest });
147
+ registerDescendant({element, ...rest});
147
148
  return () => unregisterDescendant(element);
148
149
  }, [element, ...Object.values(rest)]);
149
150
 
150
151
  return indexProp
151
152
  ? indexProp
152
- : descendants.findIndex(item => item.element === element);
153
+ : descendants.findIndex((item) => item.element === element);
153
154
  }
154
155
 
155
156
  export function useDescendants<ElementType, DescendantProps>() {
@@ -160,24 +161,26 @@ export function DescendantProvider<ElementType: HTMLElement, DescendantProps>({
160
161
  context: Ctx,
161
162
  children,
162
163
  items,
163
- set
164
+ set,
164
165
  }: {
165
166
  context: React$Context<TypeDescendantContext<ElementType, DescendantProps>>,
166
167
  children: React$Node,
167
168
  items: TypeDescendant<ElementType, DescendantProps>[],
168
- set: ((TypeDescendant<ElementType, DescendantProps>[]) => any) => any
169
+ set: ((TypeDescendant<ElementType, DescendantProps>[]) => any) => any,
169
170
  }) {
170
171
  let registerDescendant = useCallback(
171
172
  ({
172
173
  element,
173
174
  ...rest
174
- }: $Diff<TypeDescendant<ElementType, DescendantProps>,
175
- {| index: number |}>) => {
175
+ }: $Diff<
176
+ TypeDescendant<ElementType, DescendantProps>,
177
+ {|index: number|}
178
+ >) => {
176
179
  if (!element) {
177
180
  return;
178
181
  }
179
182
 
180
- set(items => {
183
+ set((items) => {
181
184
  let newItem: TypeDescendant<ElementType, DescendantProps>;
182
185
  let newItems: TypeDescendant<ElementType, DescendantProps>[];
183
186
  // If there are no items, register at index 0 and bail.
@@ -185,10 +188,10 @@ export function DescendantProvider<ElementType: HTMLElement, DescendantProps>({
185
188
  newItem = {
186
189
  element,
187
190
  index: 0,
188
- ...rest
191
+ ...rest,
189
192
  };
190
193
  newItems = [...items, newItem];
191
- } else if (items.find(item => item.element === element)) {
194
+ } else if (items.find((item) => item.element === element)) {
192
195
  // If the element is already registered, just use the same array
193
196
  newItems = items;
194
197
  } else {
@@ -204,7 +207,7 @@ export function DescendantProvider<ElementType: HTMLElement, DescendantProps>({
204
207
  // called in an effect every time the descendants state value changes,
205
208
  // we should be sure that this index is accurate when descendent
206
209
  // elements come or go from our component.
207
- let index = items.findIndex(item => {
210
+ let index = items.findIndex((item) => {
208
211
  if (!item.element || !element) {
209
212
  return false;
210
213
  }
@@ -221,7 +224,7 @@ export function DescendantProvider<ElementType: HTMLElement, DescendantProps>({
221
224
  newItem = {
222
225
  element,
223
226
  index,
224
- ...rest
227
+ ...rest,
225
228
  };
226
229
 
227
230
  // If an index is not found we will push the element to the end.
@@ -231,11 +234,11 @@ export function DescendantProvider<ElementType: HTMLElement, DescendantProps>({
231
234
  newItems = [
232
235
  ...items.slice(0, index),
233
236
  newItem,
234
- ...items.slice(index)
237
+ ...items.slice(index),
235
238
  ];
236
239
  }
237
240
  }
238
- return newItems.map((item, index) => ({ ...item, index }));
241
+ return newItems.map((item, index) => ({...item, index}));
239
242
  });
240
243
  },
241
244
  // set is a state setter initialized by the useDescendants hook.
@@ -247,14 +250,20 @@ export function DescendantProvider<ElementType: HTMLElement, DescendantProps>({
247
250
 
248
251
  let unregisterDescendant = useCallback(
249
252
  (
250
- element: $PropertyType<TypeDescendant<ElementType, DescendantProps>,
251
- "element">
253
+ element: $PropertyType<
254
+ TypeDescendant<ElementType, DescendantProps>,
255
+ 'element'
256
+ >
252
257
  ) => {
253
258
  if (!element) {
254
259
  return;
255
260
  }
256
261
 
257
- set(items => items.filter(item => element !== item.element));
262
+ set((items) =>
263
+ items
264
+ .filter((item) => element !== item.element)
265
+ .map((item, index) => ({...item, index}))
266
+ );
258
267
  },
259
268
  // set is a state setter initialized by the useDescendants hook.
260
269
  // We can safely ignore the lint warning here because it will not change
@@ -263,14 +272,14 @@ export function DescendantProvider<ElementType: HTMLElement, DescendantProps>({
263
272
  []
264
273
  );
265
274
 
266
- const value: TypeDescendantContext<ElementType,
267
- DescendantProps> = useMemo(() => {
268
- return {
269
- descendants: items,
270
- registerDescendant,
271
- unregisterDescendant
272
- };
273
- }, [items, registerDescendant, unregisterDescendant]);
275
+ const value: TypeDescendantContext<ElementType, DescendantProps> =
276
+ useMemo(() => {
277
+ return {
278
+ descendants: items,
279
+ registerDescendant,
280
+ unregisterDescendant,
281
+ };
282
+ }, [items, registerDescendant, unregisterDescendant]);
274
283
 
275
284
  return <Ctx.Provider value={value}>{children}</Ctx.Provider>;
276
285
  }
@@ -283,43 +292,43 @@ export function useDescendantKeyDown<
283
292
  context: React$Context<TypeDescendantContext<ElementType, DescendantProps>>,
284
293
  options: {
285
294
  currentIndex?: number,
286
- key?: K | "option",
295
+ key?: K | 'option',
287
296
  filter?: (
288
297
  descendant: TypeDescendant<ElementType, DescendantProps>
289
298
  ) => boolean,
290
- orientation?: "vertical" | "horizontal" | "both",
299
+ orientation?: 'vertical' | 'horizontal' | 'both',
291
300
  rotate?: boolean,
292
301
  rtl?: boolean,
293
302
  callback(
294
303
  nextOption:
295
304
  | TypeDescendant<ElementType, DescendantProps>
296
305
  | $Values<TypeDescendant<ElementType, DescendantProps>>
297
- ): void
306
+ ): void,
298
307
  }
299
308
  ) {
300
- let { descendants } = useContext(context);
309
+ let {descendants} = useContext(context);
301
310
  let {
302
311
  callback,
303
312
  currentIndex,
304
313
  filter,
305
- key = "index",
306
- orientation = "vertical",
314
+ key = 'index',
315
+ orientation = 'vertical',
307
316
  rotate = true,
308
- rtl = false
317
+ rtl = false,
309
318
  } = options;
310
319
  let index = currentIndex ? currentIndex : -1;
311
320
 
312
321
  return function handleKeyDown(event: SyntheticKeyboardEvent<>) {
313
322
  if (
314
323
  ![
315
- "ArrowDown",
316
- "ArrowUp",
317
- "ArrowLeft",
318
- "ArrowRight",
319
- "PageUp",
320
- "PageDown",
321
- "Home",
322
- "End"
324
+ 'ArrowDown',
325
+ 'ArrowUp',
326
+ 'ArrowLeft',
327
+ 'ArrowRight',
328
+ 'PageUp',
329
+ 'PageDown',
330
+ 'Home',
331
+ 'End',
323
332
  ].includes(event.key)
324
333
  ) {
325
334
  return;
@@ -335,7 +344,7 @@ export function useDescendantKeyDown<
335
344
  // descendants array.
336
345
  if (filter) {
337
346
  index = selectableDescendants.findIndex(
338
- descendant => descendant.index === currentIndex
347
+ (descendant) => descendant.index === currentIndex
339
348
  );
340
349
  }
341
350
 
@@ -374,55 +383,55 @@ export function useDescendantKeyDown<
374
383
  }
375
384
 
376
385
  switch (event.key) {
377
- case "ArrowDown":
378
- if (orientation === "vertical" || orientation === "both") {
386
+ case 'ArrowDown':
387
+ if (orientation === 'vertical' || orientation === 'both') {
379
388
  event.preventDefault();
380
389
  let next = getNextOption();
381
- callback(key === "option" ? next : next[key]);
390
+ callback(key === 'option' ? next : next[key]);
382
391
  }
383
392
  break;
384
- case "ArrowUp":
385
- if (orientation === "vertical" || orientation === "both") {
393
+ case 'ArrowUp':
394
+ if (orientation === 'vertical' || orientation === 'both') {
386
395
  event.preventDefault();
387
396
  let prev = getPreviousOption();
388
- callback(key === "option" ? prev : prev[key]);
397
+ callback(key === 'option' ? prev : prev[key]);
389
398
  }
390
399
  break;
391
- case "ArrowLeft":
392
- if (orientation === "horizontal" || orientation === "both") {
400
+ case 'ArrowLeft':
401
+ if (orientation === 'horizontal' || orientation === 'both') {
393
402
  event.preventDefault();
394
403
  let nextOrPrev = (rtl ? getNextOption : getPreviousOption)();
395
- callback(key === "option" ? nextOrPrev : nextOrPrev[key]);
404
+ callback(key === 'option' ? nextOrPrev : nextOrPrev[key]);
396
405
  }
397
406
  break;
398
- case "ArrowRight":
399
- if (orientation === "horizontal" || orientation === "both") {
407
+ case 'ArrowRight':
408
+ if (orientation === 'horizontal' || orientation === 'both') {
400
409
  event.preventDefault();
401
410
  let prevOrNext = (rtl ? getPreviousOption : getNextOption)();
402
- callback(key === "option" ? prevOrNext : prevOrNext[key]);
411
+ callback(key === 'option' ? prevOrNext : prevOrNext[key]);
403
412
  }
404
413
  break;
405
- case "PageUp":
414
+ case 'PageUp':
406
415
  event.preventDefault();
407
- let prevOrFirst = (event.ctrlKey
408
- ? getPreviousOption
409
- : getFirstOption)();
410
- callback(key === "option" ? prevOrFirst : prevOrFirst[key]);
416
+ let prevOrFirst = (
417
+ event.ctrlKey ? getPreviousOption : getFirstOption
418
+ )();
419
+ callback(key === 'option' ? prevOrFirst : prevOrFirst[key]);
411
420
  break;
412
- case "Home":
421
+ case 'Home':
413
422
  event.preventDefault();
414
423
  let first = getFirstOption();
415
- callback(key === "option" ? first : first[key]);
424
+ callback(key === 'option' ? first : first[key]);
416
425
  break;
417
- case "PageDown":
426
+ case 'PageDown':
418
427
  event.preventDefault();
419
428
  let nextOrLast = (event.ctrlKey ? getNextOption : getLastOption)();
420
- callback(key === "option" ? nextOrLast : nextOrLast[key]);
429
+ callback(key === 'option' ? nextOrLast : nextOrLast[key]);
421
430
  break;
422
- case "End":
431
+ case 'End':
423
432
  event.preventDefault();
424
433
  let last = getLastOption();
425
- callback(key === "option" ? last : last[key]);
434
+ callback(key === 'option' ? last : last[key]);
426
435
  break;
427
436
  }
428
437
  };