@basic-ui/material 1.0.0-alpha.42 → 1.0.0-alpha.44

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 (536) hide show
  1. package/README.md +3 -3
  2. package/build/cjs/index.js +11 -11
  3. package/build/cjs/index.js.map +1 -1
  4. package/build/esm/Alert/Alert.d.ts +6 -6
  5. package/build/esm/Alert/Alert.js.map +1 -1
  6. package/build/esm/Alert/index.d.ts +1 -1
  7. package/build/esm/Alert/index.js.map +1 -1
  8. package/build/esm/AppBar/AppBar.d.ts +9 -9
  9. package/build/esm/AppBar/AppBar.js.map +1 -1
  10. package/build/esm/AppBar/AppBarButton.d.ts +4 -4
  11. package/build/esm/AppBar/AppBarButton.js.map +1 -1
  12. package/build/esm/AppBar/context.d.ts +5 -5
  13. package/build/esm/AppBar/context.js.map +1 -1
  14. package/build/esm/AppBar/index.d.ts +3 -3
  15. package/build/esm/AppBar/index.js.map +1 -1
  16. package/build/esm/Badge/Badge.d.ts +6 -6
  17. package/build/esm/Badge/Badge.js.map +1 -1
  18. package/build/esm/Badge/index.d.ts +1 -1
  19. package/build/esm/Badge/index.js.map +1 -1
  20. package/build/esm/BaseLine/BaseLine.d.ts +1 -1
  21. package/build/esm/BaseLine/BaseLine.js +1 -1
  22. package/build/esm/BaseLine/BaseLine.js.map +1 -1
  23. package/build/esm/BaseLine/index.d.ts +1 -1
  24. package/build/esm/BaseLine/index.js.map +1 -1
  25. package/build/esm/BottomSheet/BottomSheet.d.ts +7 -7
  26. package/build/esm/BottomSheet/BottomSheet.js.map +1 -1
  27. package/build/esm/BottomSheet/BottomSheetSurface.d.ts +5 -5
  28. package/build/esm/BottomSheet/BottomSheetSurface.js.map +1 -1
  29. package/build/esm/BottomSheet/index.d.ts +1 -1
  30. package/build/esm/BottomSheet/index.js.map +1 -1
  31. package/build/esm/Box/Box.d.ts +23 -23
  32. package/build/esm/Box/Box.js +1 -1
  33. package/build/esm/Box/Box.js.map +1 -1
  34. package/build/esm/Box/index.d.ts +1 -1
  35. package/build/esm/Box/index.js.map +1 -1
  36. package/build/esm/Button/BaseButton.d.ts +7 -7
  37. package/build/esm/Button/Button.d.ts +13 -13
  38. package/build/esm/Button/ButtonGroup.d.ts +5 -5
  39. package/build/esm/Button/ButtonGroup.js.map +1 -1
  40. package/build/esm/Button/FilledButton.d.ts +11 -11
  41. package/build/esm/Button/FloatingActionButton.d.ts +7 -7
  42. package/build/esm/Button/FloatingActionButton.js.map +1 -1
  43. package/build/esm/Button/IconButton.d.ts +8 -8
  44. package/build/esm/Button/OutlinedButton.d.ts +4 -4
  45. package/build/esm/Button/OutlinedButton.js +1 -1
  46. package/build/esm/Button/OutlinedButton.js.map +1 -1
  47. package/build/esm/Button/TransparentButton.d.ts +11 -11
  48. package/build/esm/Button/context.d.ts +8 -8
  49. package/build/esm/Button/context.js.map +1 -1
  50. package/build/esm/Button/index.d.ts +2 -2
  51. package/build/esm/Button/index.js.map +1 -1
  52. package/build/esm/CheckBox/CheckBox.d.ts +13 -13
  53. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  54. package/build/esm/CheckBox/CheckBoxIcon.d.ts +10 -10
  55. package/build/esm/CheckBox/CheckBoxIcon.js.map +1 -1
  56. package/build/esm/CheckBox/CheckPath.d.ts +3 -3
  57. package/build/esm/CheckBox/CheckPath.js +1 -1
  58. package/build/esm/CheckBox/CheckPath.js.map +1 -1
  59. package/build/esm/CheckBox/IndeterminatePath.d.ts +3 -3
  60. package/build/esm/CheckBox/IndeterminatePath.js +1 -1
  61. package/build/esm/CheckBox/IndeterminatePath.js.map +1 -1
  62. package/build/esm/CheckBox/index.d.ts +1 -1
  63. package/build/esm/CheckBox/index.js.map +1 -1
  64. package/build/esm/Chip/ButtonChip.d.ts +9 -9
  65. package/build/esm/Chip/ButtonChip.js.map +1 -1
  66. package/build/esm/Chip/Chip.d.ts +4 -4
  67. package/build/esm/Chip/Chip.js.map +1 -1
  68. package/build/esm/Chip/ChipBase.d.ts +10 -10
  69. package/build/esm/Chip/ChipBase.js.map +1 -1
  70. package/build/esm/Chip/ChoiceChip.d.ts +10 -10
  71. package/build/esm/Chip/ChoiceChip.js.map +1 -1
  72. package/build/esm/Chip/index.d.ts +2 -2
  73. package/build/esm/Chip/index.js.map +1 -1
  74. package/build/esm/Combobox/Combobox.d.ts +23 -23
  75. package/build/esm/Combobox/Combobox.js.map +1 -1
  76. package/build/esm/Combobox/index.d.ts +1 -1
  77. package/build/esm/Combobox/index.js.map +1 -1
  78. package/build/esm/Dialog/Dialog.d.ts +20 -20
  79. package/build/esm/Dialog/Dialog.js.map +1 -1
  80. package/build/esm/Dialog/DialogBackdrop.d.ts +7 -7
  81. package/build/esm/Dialog/DialogBackdrop.js.map +1 -1
  82. package/build/esm/Dialog/DialogContainer.d.ts +4 -4
  83. package/build/esm/Dialog/DialogContainer.js.map +1 -1
  84. package/build/esm/Dialog/DialogSurface.d.ts +7 -7
  85. package/build/esm/Dialog/DialogSurface.js.map +1 -1
  86. package/build/esm/Dialog/Scrim.d.ts +4 -4
  87. package/build/esm/Dialog/Scrim.js.map +1 -1
  88. package/build/esm/Dialog/index.d.ts +2 -2
  89. package/build/esm/Dialog/index.js.map +1 -1
  90. package/build/esm/Dialog/useDialogAnimation.d.ts +824 -824
  91. package/build/esm/Dialog/useDialogAnimation.js.map +1 -1
  92. package/build/esm/Divider/Divider.d.ts +7 -7
  93. package/build/esm/Divider/Divider.js.map +1 -1
  94. package/build/esm/Divider/index.d.ts +1 -1
  95. package/build/esm/Divider/index.js.map +1 -1
  96. package/build/esm/FloatingLabel/FloatingLabel.d.ts +13 -13
  97. package/build/esm/FloatingLabel/FloatingLabel.js.map +1 -1
  98. package/build/esm/FloatingLabel/index.d.ts +1 -1
  99. package/build/esm/FloatingLabel/index.js.map +1 -1
  100. package/build/esm/LineRipple/LineRipple.d.ts +9 -9
  101. package/build/esm/LineRipple/LineRipple.js.map +1 -1
  102. package/build/esm/LineRipple/index.d.ts +1 -1
  103. package/build/esm/LineRipple/index.js.map +1 -1
  104. package/build/esm/Link/Link.d.ts +9 -9
  105. package/build/esm/Link/Link.js.map +1 -1
  106. package/build/esm/Link/index.d.ts +1 -1
  107. package/build/esm/Link/index.js.map +1 -1
  108. package/build/esm/List/List.d.ts +8 -8
  109. package/build/esm/List/List.js.map +1 -1
  110. package/build/esm/List/index.d.ts +1 -1
  111. package/build/esm/List/index.js.map +1 -1
  112. package/build/esm/ListItem/ListItem.d.ts +14 -14
  113. package/build/esm/ListItem/ListItem.js.map +1 -1
  114. package/build/esm/ListItem/ListItemText.d.ts +7 -7
  115. package/build/esm/ListItem/ListItemText.js.map +1 -1
  116. package/build/esm/ListItem/index.d.ts +2 -2
  117. package/build/esm/ListItem/index.js.map +1 -1
  118. package/build/esm/Menu/Menu.d.ts +18 -18
  119. package/build/esm/Menu/Menu.js.map +1 -1
  120. package/build/esm/Menu/animation.d.ts +2 -2
  121. package/build/esm/Menu/animation.js.map +1 -1
  122. package/build/esm/Menu/index.d.ts +2 -2
  123. package/build/esm/Menu/index.js.map +1 -1
  124. package/build/esm/NavRail/NavRailItem.d.ts +15 -15
  125. package/build/esm/NavRail/NavRailItem.js.map +1 -1
  126. package/build/esm/NavRail/icons/test-icons.d.ts +4 -4
  127. package/build/esm/NavRail/icons/test-icons.js.map +1 -1
  128. package/build/esm/NavRail/index.d.ts +1 -1
  129. package/build/esm/NavRail/index.js.map +1 -1
  130. package/build/esm/NotchedOutline/NotchedOutline.d.ts +14 -14
  131. package/build/esm/NotchedOutline/NotchedOutline.js.map +1 -1
  132. package/build/esm/NotchedOutline/context.d.ts +6 -6
  133. package/build/esm/NotchedOutline/context.js.map +1 -1
  134. package/build/esm/NotchedOutline/index.d.ts +1 -1
  135. package/build/esm/NotchedOutline/index.js.map +1 -1
  136. package/build/esm/NotchedOutline/styledComponents.d.ts +575 -575
  137. package/build/esm/NotchedOutline/styledComponents.js +1 -1
  138. package/build/esm/NotchedOutline/styledComponents.js.map +1 -1
  139. package/build/esm/Paper/Paper.d.ts +11 -11
  140. package/build/esm/Paper/Paper.js.map +1 -1
  141. package/build/esm/Paper/index.d.ts +1 -1
  142. package/build/esm/Paper/index.js.map +1 -1
  143. package/build/esm/Popover/Popover.d.ts +14 -14
  144. package/build/esm/Popover/PopoverContainer.d.ts +4 -4
  145. package/build/esm/Popover/PopoverSurface.d.ts +5 -5
  146. package/build/esm/Popover/PopoverSurface.js.map +1 -1
  147. package/build/esm/Popover/index.d.ts +1 -1
  148. package/build/esm/Popover/index.js.map +1 -1
  149. package/build/esm/ProgressSpinner/ProgressSpinner.d.ts +8 -8
  150. package/build/esm/ProgressSpinner/ProgressSpinner.js.map +1 -1
  151. package/build/esm/ProgressSpinner/index.d.ts +1 -1
  152. package/build/esm/ProgressSpinner/index.js.map +1 -1
  153. package/build/esm/RadioButton/RadioButton.d.ts +4 -4
  154. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  155. package/build/esm/RadioButton/RadioButtonIcon.d.ts +6 -6
  156. package/build/esm/RadioButton/RadioButtonIcon.js.map +1 -1
  157. package/build/esm/RadioButton/RadioGroup.d.ts +5 -5
  158. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  159. package/build/esm/RadioButton/index.d.ts +2 -2
  160. package/build/esm/RadioButton/index.js.map +1 -1
  161. package/build/esm/Ripple/Ripple.d.ts +11 -11
  162. package/build/esm/Ripple/Ripple.js +1 -1
  163. package/build/esm/Ripple/Ripple.js.map +1 -1
  164. package/build/esm/Ripple/RippleBox.d.ts +5 -5
  165. package/build/esm/Ripple/RippleBox.js.map +1 -1
  166. package/build/esm/Ripple/constants.d.ts +7 -7
  167. package/build/esm/Ripple/constants.js.map +1 -1
  168. package/build/esm/Ripple/index.d.ts +5 -5
  169. package/build/esm/Ripple/index.js.map +1 -1
  170. package/build/esm/Ripple/keyframes.d.ts +4 -4
  171. package/build/esm/Ripple/keyframes.js.map +1 -1
  172. package/build/esm/Ripple/useRipple.d.ts +14 -14
  173. package/build/esm/Ripple/useRipple.js.map +1 -1
  174. package/build/esm/Ripple/useRippleHandlers.d.ts +8 -8
  175. package/build/esm/Ripple/useRippleHandlers.js.map +1 -1
  176. package/build/esm/Ripple/useRippleSurface.d.ts +787 -787
  177. package/build/esm/Ripple/useRippleSurface.js.map +1 -1
  178. package/build/esm/Select/CustomContainerExample.d.ts +3 -3
  179. package/build/esm/Select/CustomContainerExample.js.map +1 -1
  180. package/build/esm/Select/Select.d.ts +32 -32
  181. package/build/esm/Select/Select.js.map +1 -1
  182. package/build/esm/Select/SelectIcon.d.ts +6 -6
  183. package/build/esm/Select/SelectIcon.js.map +1 -1
  184. package/build/esm/Select/context.d.ts +9 -9
  185. package/build/esm/Select/context.js.map +1 -1
  186. package/build/esm/Select/defaultRender.d.ts +3 -3
  187. package/build/esm/Select/defaultRender.js.map +1 -1
  188. package/build/esm/Select/index.d.ts +1 -1
  189. package/build/esm/Select/index.js.map +1 -1
  190. package/build/esm/Select/styledComponents.d.ts +15 -15
  191. package/build/esm/Select/styledComponents.js.map +1 -1
  192. package/build/esm/SelectItem/SelectItem.d.ts +11 -11
  193. package/build/esm/SelectItem/SelectItem.js.map +1 -1
  194. package/build/esm/SelectItem/index.d.ts +1 -1
  195. package/build/esm/SelectItem/index.js.map +1 -1
  196. package/build/esm/SelectionControl/SelectionControlLabel.d.ts +7 -7
  197. package/build/esm/SelectionControl/SelectionControlLabel.js.map +1 -1
  198. package/build/esm/SelectionControl/SelectionControlText.d.ts +8 -8
  199. package/build/esm/SelectionControl/SelectionControlText.js.map +1 -1
  200. package/build/esm/SelectionControl/index.d.ts +2 -2
  201. package/build/esm/SelectionControl/index.js.map +1 -1
  202. package/build/esm/Skeleton/DelayAppearance.d.ts +13 -13
  203. package/build/esm/Skeleton/DelayAppearance.js +3 -3
  204. package/build/esm/Skeleton/DelayAppearance.js.map +1 -1
  205. package/build/esm/Skeleton/Skeleton.d.ts +9 -9
  206. package/build/esm/Skeleton/Skeleton.js.map +1 -1
  207. package/build/esm/Skeleton/animation.d.ts +8 -8
  208. package/build/esm/Skeleton/animation.js.map +1 -1
  209. package/build/esm/Skeleton/index.d.ts +2 -2
  210. package/build/esm/Skeleton/index.js.map +1 -1
  211. package/build/esm/Slider/Slider.d.ts +17 -17
  212. package/build/esm/Slider/Slider.js.map +1 -1
  213. package/build/esm/Slider/index.d.ts +1 -1
  214. package/build/esm/Slider/index.js.map +1 -1
  215. package/build/esm/Snackbar/Snackbar.d.ts +8 -8
  216. package/build/esm/Snackbar/Stack.d.ts +31 -31
  217. package/build/esm/Snackbar/index.d.ts +3 -3
  218. package/build/esm/Snackbar/useSnackbarAnimation.d.ts +6 -6
  219. package/build/esm/Switch/Switch.d.ts +13 -13
  220. package/build/esm/Switch/Switch.js.map +1 -1
  221. package/build/esm/Switch/index.d.ts +1 -1
  222. package/build/esm/Switch/index.js.map +1 -1
  223. package/build/esm/Switch/styledComponents.d.ts +13 -13
  224. package/build/esm/Switch/styledComponents.js.map +1 -1
  225. package/build/esm/Tab/Tab.d.ts +5 -5
  226. package/build/esm/Tab/Tab.js.map +1 -1
  227. package/build/esm/Tab/TabList.d.ts +10 -10
  228. package/build/esm/Tab/TabList.js.map +1 -1
  229. package/build/esm/Tab/TabPanel.d.ts +5 -5
  230. package/build/esm/Tab/TabPanel.js.map +1 -1
  231. package/build/esm/Tab/TabPanels.d.ts +4 -4
  232. package/build/esm/Tab/TabPanels.js.map +1 -1
  233. package/build/esm/Tab/Tabs.d.ts +4 -4
  234. package/build/esm/Tab/Tabs.js.map +1 -1
  235. package/build/esm/Tab/context.d.ts +9 -9
  236. package/build/esm/Tab/context.js.map +1 -1
  237. package/build/esm/Tab/index.d.ts +5 -5
  238. package/build/esm/Tab/index.js.map +1 -1
  239. package/build/esm/TabIndicator/TabIndicator.d.ts +9 -9
  240. package/build/esm/TabIndicator/TabIndicator.js.map +1 -1
  241. package/build/esm/TabIndicator/context.d.ts +6 -6
  242. package/build/esm/TabIndicator/context.js.map +1 -1
  243. package/build/esm/TabIndicator/index.d.ts +2 -2
  244. package/build/esm/TabIndicator/index.js.map +1 -1
  245. package/build/esm/Table/Table.d.ts +4 -4
  246. package/build/esm/Table/Table.js.map +1 -1
  247. package/build/esm/Table/TableBody.d.ts +4 -4
  248. package/build/esm/Table/TableBody.js.map +1 -1
  249. package/build/esm/Table/TableCell.d.ts +4 -4
  250. package/build/esm/Table/TableCell.js.map +1 -1
  251. package/build/esm/Table/TableHead.d.ts +4 -4
  252. package/build/esm/Table/TableHead.js.map +1 -1
  253. package/build/esm/Table/TableRow.d.ts +4 -4
  254. package/build/esm/Table/TableRow.js.map +1 -1
  255. package/build/esm/Table/context.d.ts +3 -3
  256. package/build/esm/Table/context.js.map +1 -1
  257. package/build/esm/Table/index.d.ts +5 -5
  258. package/build/esm/Table/index.js.map +1 -1
  259. package/build/esm/Text/LoremIpsum.d.ts +4 -4
  260. package/build/esm/Text/LoremIpsum.js.map +1 -1
  261. package/build/esm/Text/Text.d.ts +11 -11
  262. package/build/esm/Text/Text.js +2 -2
  263. package/build/esm/Text/Text.js.map +1 -1
  264. package/build/esm/Text/index.d.ts +1 -1
  265. package/build/esm/Text/index.js.map +1 -1
  266. package/build/esm/TextField/FilledContainer.d.ts +18 -18
  267. package/build/esm/TextField/FilledContainer.js.map +1 -1
  268. package/build/esm/TextField/HelperText.d.ts +10 -10
  269. package/build/esm/TextField/HelperText.js.map +1 -1
  270. package/build/esm/TextField/IconContainer.d.ts +5 -5
  271. package/build/esm/TextField/IconContainer.js.map +1 -1
  272. package/build/esm/TextField/Input.d.ts +11 -11
  273. package/build/esm/TextField/Input.js +1 -1
  274. package/build/esm/TextField/Input.js.map +1 -1
  275. package/build/esm/TextField/OutlinedContainer.d.ts +17 -17
  276. package/build/esm/TextField/OutlinedContainer.js.map +1 -1
  277. package/build/esm/TextField/TextField.d.ts +19 -19
  278. package/build/esm/TextField/consts.d.ts +5 -5
  279. package/build/esm/TextField/consts.js.map +1 -1
  280. package/build/esm/TextField/index.d.ts +4 -4
  281. package/build/esm/TextField/index.js.map +1 -1
  282. package/build/esm/ThemeExplorer/BorderSlider.d.ts +7 -7
  283. package/build/esm/ThemeExplorer/BorderSlider.js.map +1 -1
  284. package/build/esm/ThemeExplorer/ColorPicker.d.ts +8 -8
  285. package/build/esm/ThemeExplorer/ColorPicker.js.map +1 -1
  286. package/build/esm/ThemeExplorer/ColorSchemePicker.d.ts +10 -10
  287. package/build/esm/ThemeExplorer/ColorSchemePicker.js.map +1 -1
  288. package/build/esm/ThemeExplorer/FontAutoComplete.d.ts +9 -9
  289. package/build/esm/ThemeExplorer/FontAutoComplete.js.map +1 -1
  290. package/build/esm/ThemeExplorer/TextFieldColorPicker.d.ts +9 -9
  291. package/build/esm/ThemeExplorer/TextFieldColorPicker.js.map +1 -1
  292. package/build/esm/ThemeExplorer/ThemeBuilder.d.ts +11 -11
  293. package/build/esm/ThemeExplorer/ThemeBuilder.js.map +1 -1
  294. package/build/esm/ThemeExplorer/ThemeColors.d.ts +5 -5
  295. package/build/esm/ThemeExplorer/ThemeColors.js.map +1 -1
  296. package/build/esm/ThemeExplorer/components.d.ts +31 -31
  297. package/build/esm/ThemeExplorer/components.js.map +1 -1
  298. package/build/esm/ThemeExplorer/googleFonts.d.ts +1 -1
  299. package/build/esm/ThemeExplorer/googleFonts.js.map +1 -1
  300. package/build/esm/ThemeExplorer/index.d.ts +1 -1
  301. package/build/esm/ThemeExplorer/index.js.map +1 -1
  302. package/build/esm/ThemeExplorer/makeColorScheme.d.ts +98 -98
  303. package/build/esm/ThemeExplorer/makeColorScheme.js.map +1 -1
  304. package/build/esm/ThemeExplorer/makeTailwindTheme.d.ts +2 -2
  305. package/build/esm/ThemeExplorer/makeTailwindTheme.js.map +1 -1
  306. package/build/esm/ThemeExplorer/updateGoogleFonts.js.map +1 -1
  307. package/build/esm/ThemeExplorer/useDeferredColor.d.ts +3 -3
  308. package/build/esm/ThemeExplorer/useDeferredColor.js.map +1 -1
  309. package/build/esm/ThemeExplorer/useLocalStorageCachedState.d.ts +1 -1
  310. package/build/esm/ThemeExplorer/useLocalStorageCachedState.js.map +1 -1
  311. package/build/esm/Tooltip/Tooltip.d.ts +8 -8
  312. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  313. package/build/esm/Tooltip/index.d.ts +1 -1
  314. package/build/esm/Tooltip/index.js.map +1 -1
  315. package/build/esm/color.d.ts +8 -8
  316. package/build/esm/color.js.map +1 -1
  317. package/build/esm/css.d.ts +1 -1
  318. package/build/esm/css.js.map +1 -1
  319. package/build/esm/hooks/useAnimation.d.ts +20 -20
  320. package/build/esm/hooks/useAnimation.js.map +1 -1
  321. package/build/esm/index.d.ts +41 -41
  322. package/build/esm/index.js.map +1 -1
  323. package/build/esm/motion.d.ts +7 -7
  324. package/build/esm/motion.js.map +1 -1
  325. package/build/esm/tailwind/extendColors.d.ts +5 -5
  326. package/build/esm/tailwind/extendColors.js.map +1 -1
  327. package/build/esm/tailwind/index.d.ts +8 -8
  328. package/build/esm/tailwind/index.js.map +1 -1
  329. package/build/esm/theme/index.d.ts +2 -2
  330. package/build/esm/theme/index.js.map +1 -1
  331. package/build/esm/theme/theme.d.ts +562 -562
  332. package/build/esm/theme/theme.js.map +1 -1
  333. package/build/esm/theme/typography-raleway.d.ts +112 -112
  334. package/build/esm/theme/typography-raleway.js.map +1 -1
  335. package/build/esm/theme/typography-roboto.d.ts +111 -111
  336. package/build/esm/theme/typography-roboto.js.map +1 -1
  337. package/build/esm/theme/useTheme.d.ts +566 -566
  338. package/build/esm/theme/useTheme.js.map +1 -1
  339. package/build/tsconfig-build.tsbuildinfo +1 -1
  340. package/package.json +3 -3
  341. package/src/Alert/Alert.story.tsx +28 -28
  342. package/src/Alert/Alert.tsx +33 -33
  343. package/src/Alert/index.ts +1 -1
  344. package/src/AppBar/AppBar.story.tsx +69 -69
  345. package/src/AppBar/AppBar.tsx +85 -85
  346. package/src/AppBar/AppBarButton.tsx +25 -25
  347. package/src/AppBar/context.ts +13 -13
  348. package/src/AppBar/index.ts +3 -3
  349. package/src/Badge/Badge.story.tsx +68 -68
  350. package/src/Badge/Badge.tsx +47 -47
  351. package/src/Badge/index.ts +1 -1
  352. package/src/BaseLine/BaseLine.tsx +100 -100
  353. package/src/BaseLine/index.ts +1 -1
  354. package/src/BottomSheet/BottomSheet.story.tsx +35 -35
  355. package/src/BottomSheet/BottomSheet.tsx +39 -39
  356. package/src/BottomSheet/BottomSheetSurface.tsx +49 -49
  357. package/src/BottomSheet/index.ts +1 -1
  358. package/src/Box/Box.tsx +127 -127
  359. package/src/Box/index.ts +1 -1
  360. package/src/Button/ButtonGroup.story.tsx +106 -106
  361. package/src/Button/ButtonGroup.tsx +35 -35
  362. package/src/Button/FloatingActionButton.tsx +9 -9
  363. package/src/Button/OutlinedButton.tsx +47 -47
  364. package/src/Button/SpinnerButton.story.tsx +91 -91
  365. package/src/Button/context.tsx +17 -17
  366. package/src/Button/index.ts +2 -2
  367. package/src/CheckBox/CheckBox.story.tsx +155 -155
  368. package/src/CheckBox/CheckBox.tsx +170 -170
  369. package/src/CheckBox/CheckBoxIcon.tsx +64 -64
  370. package/src/CheckBox/CheckPath.tsx +18 -18
  371. package/src/CheckBox/IndeterminatePath.tsx +16 -16
  372. package/src/CheckBox/index.ts +1 -1
  373. package/src/Chip/ButtonChip.tsx +86 -86
  374. package/src/Chip/Chip.story.tsx +242 -242
  375. package/src/Chip/Chip.tsx +5 -5
  376. package/src/Chip/ChipBase.tsx +141 -141
  377. package/src/Chip/ChoiceChip.tsx +127 -127
  378. package/src/Chip/index.ts +2 -2
  379. package/src/Combobox/Combobox.story.tsx +157 -157
  380. package/src/Combobox/Combobox.tsx +274 -274
  381. package/src/Combobox/index.ts +1 -1
  382. package/src/Dialog/Dialog.story.tsx +53 -53
  383. package/src/Dialog/Dialog.tsx +73 -73
  384. package/src/Dialog/DialogBackdrop.tsx +42 -42
  385. package/src/Dialog/DialogContainer.tsx +31 -31
  386. package/src/Dialog/DialogSurface.tsx +55 -55
  387. package/src/Dialog/Scrim.tsx +35 -35
  388. package/src/Dialog/index.ts +2 -2
  389. package/src/Dialog/useDialogAnimation.tsx +49 -49
  390. package/src/Divider/Divider.story.tsx +39 -39
  391. package/src/Divider/Divider.tsx +48 -48
  392. package/src/Divider/index.ts +1 -1
  393. package/src/FloatingLabel/FloatingLabel.story.tsx +55 -55
  394. package/src/FloatingLabel/FloatingLabel.tsx +77 -77
  395. package/src/FloatingLabel/index.ts +1 -1
  396. package/src/LineRipple/LineRipple.story.tsx +43 -43
  397. package/src/LineRipple/LineRipple.tsx +81 -81
  398. package/src/LineRipple/index.ts +1 -1
  399. package/src/Link/Link.story.tsx +14 -14
  400. package/src/Link/Link.tsx +65 -65
  401. package/src/Link/index.ts +1 -1
  402. package/src/List/List.tsx +46 -46
  403. package/src/List/index.ts +1 -1
  404. package/src/ListItem/ListItem.story.tsx +43 -43
  405. package/src/ListItem/ListItem.tsx +104 -104
  406. package/src/ListItem/ListItemText.tsx +35 -35
  407. package/src/ListItem/index.ts +2 -2
  408. package/src/Menu/ContextMenu.story.tsx +34 -34
  409. package/src/Menu/Menu.story.tsx +54 -54
  410. package/src/Menu/Menu.tsx +124 -124
  411. package/src/Menu/animation.ts +16 -16
  412. package/src/Menu/index.ts +2 -2
  413. package/src/NavRail/NavRail.story.tsx +146 -146
  414. package/src/NavRail/NavRailItem.tsx +175 -175
  415. package/src/NavRail/icons/test-icons.tsx +46 -46
  416. package/src/NavRail/index.ts +1 -1
  417. package/src/NotchedOutline/NotchedOutline.story.tsx +99 -99
  418. package/src/NotchedOutline/NotchedOutline.tsx +80 -80
  419. package/src/NotchedOutline/context.ts +12 -12
  420. package/src/NotchedOutline/index.ts +1 -1
  421. package/src/NotchedOutline/styledComponents.ts +122 -122
  422. package/src/Paper/Paper.story.tsx +50 -50
  423. package/src/Paper/Paper.tsx +67 -67
  424. package/src/Paper/index.ts +1 -1
  425. package/src/Popover/PopoverSurface.tsx +51 -51
  426. package/src/Popover/index.ts +1 -1
  427. package/src/ProgressSpinner/ProgressSpinner.story.tsx +35 -35
  428. package/src/ProgressSpinner/ProgressSpinner.tsx +119 -119
  429. package/src/ProgressSpinner/index.ts +1 -1
  430. package/src/RadioButton/RadioButton.story.tsx +109 -109
  431. package/src/RadioButton/RadioButton.tsx +112 -112
  432. package/src/RadioButton/RadioButtonIcon.tsx +44 -44
  433. package/src/RadioButton/RadioGroup.tsx +27 -27
  434. package/src/RadioButton/index.ts +2 -2
  435. package/src/Ripple/Ripple.story.tsx +78 -78
  436. package/src/Ripple/Ripple.tsx +33 -33
  437. package/src/Ripple/RippleBox.tsx +52 -52
  438. package/src/Ripple/constants.ts +15 -15
  439. package/src/Ripple/index.ts +5 -5
  440. package/src/Ripple/keyframes.ts +36 -36
  441. package/src/Ripple/useRipple.ts +209 -209
  442. package/src/Ripple/useRippleHandlers.ts +54 -54
  443. package/src/Ripple/useRippleSurface.ts +155 -155
  444. package/src/Select/CustomContainerExample.tsx +59 -59
  445. package/src/Select/PaymentMethodSelect.story.tsx +316 -316
  446. package/src/Select/Select.story.tsx +225 -225
  447. package/src/Select/Select.tsx +283 -283
  448. package/src/Select/SelectIcon.tsx +43 -43
  449. package/src/Select/SelectMultiple.story.tsx +215 -215
  450. package/src/Select/context.ts +22 -22
  451. package/src/Select/defaultRender.tsx +49 -49
  452. package/src/Select/index.ts +1 -1
  453. package/src/Select/styledComponents.tsx +38 -38
  454. package/src/SelectItem/SelectItem.tsx +92 -92
  455. package/src/SelectItem/index.ts +1 -1
  456. package/src/SelectionControl/SelectionControlLabel.tsx +34 -34
  457. package/src/SelectionControl/SelectionControlText.tsx +37 -37
  458. package/src/SelectionControl/index.ts +2 -2
  459. package/src/Skeleton/DelayAppearance.tsx +41 -41
  460. package/src/Skeleton/Skeleton.story.tsx +57 -57
  461. package/src/Skeleton/Skeleton.tsx +40 -40
  462. package/src/Skeleton/animation.ts +54 -54
  463. package/src/Skeleton/index.ts +2 -2
  464. package/src/Slider/Slider.story.tsx +36 -36
  465. package/src/Slider/Slider.tsx +275 -275
  466. package/src/Slider/index.ts +1 -1
  467. package/src/Snackbar/Snackbar.story.tsx +99 -99
  468. package/src/Switch/Switch.story.tsx +98 -98
  469. package/src/Switch/Switch.tsx +170 -170
  470. package/src/Switch/index.ts +1 -1
  471. package/src/Switch/styledComponents.tsx +117 -117
  472. package/src/Tab/Tab.story.tsx +209 -209
  473. package/src/Tab/Tab.tsx +120 -120
  474. package/src/Tab/TabList.tsx +61 -61
  475. package/src/Tab/TabPanel.tsx +31 -31
  476. package/src/Tab/TabPanels.tsx +5 -5
  477. package/src/Tab/Tabs.tsx +5 -5
  478. package/src/Tab/context.ts +17 -17
  479. package/src/Tab/index.ts +5 -5
  480. package/src/TabIndicator/TabIndicator.tsx +146 -146
  481. package/src/TabIndicator/context.ts +13 -13
  482. package/src/TabIndicator/index.ts +2 -2
  483. package/src/Table/Table.story.tsx +227 -227
  484. package/src/Table/Table.tsx +34 -34
  485. package/src/Table/TableBody.tsx +17 -17
  486. package/src/Table/TableCell.tsx +34 -34
  487. package/src/Table/TableHead.tsx +31 -31
  488. package/src/Table/TableRow.tsx +38 -38
  489. package/src/Table/context.ts +6 -6
  490. package/src/Table/index.ts +5 -5
  491. package/src/Text/LoremIpsum.tsx +18 -18
  492. package/src/Text/Text.story.tsx +75 -75
  493. package/src/Text/Text.tsx +84 -84
  494. package/src/Text/index.ts +1 -1
  495. package/src/TextField/FilledContainer.tsx +173 -173
  496. package/src/TextField/HelperText.tsx +63 -63
  497. package/src/TextField/IconContainer.tsx +33 -33
  498. package/src/TextField/Input.tsx +1 -1
  499. package/src/TextField/OutlinedContainer.tsx +116 -116
  500. package/src/TextField/TextField.story.tsx +241 -241
  501. package/src/TextField/consts.ts +7 -7
  502. package/src/TextField/index.ts +4 -4
  503. package/src/ThemeExplorer/BorderSlider.tsx +73 -73
  504. package/src/ThemeExplorer/ColorPicker.tsx +104 -104
  505. package/src/ThemeExplorer/ColorSchemePicker.tsx +55 -55
  506. package/src/ThemeExplorer/FontAutoComplete.tsx +139 -139
  507. package/src/ThemeExplorer/TextFieldColorPicker.tsx +115 -115
  508. package/src/ThemeExplorer/ThemeBuilder.story.tsx +8 -8
  509. package/src/ThemeExplorer/ThemeBuilder.tsx +353 -353
  510. package/src/ThemeExplorer/ThemeColors.tsx +118 -118
  511. package/src/ThemeExplorer/components.tsx +195 -195
  512. package/src/ThemeExplorer/googleFonts.ts +1436 -1436
  513. package/src/ThemeExplorer/index.ts +1 -1
  514. package/src/ThemeExplorer/makeColorScheme.tsx +111 -111
  515. package/src/ThemeExplorer/makeTailwindTheme.ts +44 -44
  516. package/src/ThemeExplorer/updateGoogleFonts.js +33 -33
  517. package/src/ThemeExplorer/useDeferredColor.tsx +21 -21
  518. package/src/ThemeExplorer/useLocalStorageCachedState.ts +18 -18
  519. package/src/Tooltip/Tooltip.story.tsx +35 -35
  520. package/src/Tooltip/Tooltip.tsx +67 -67
  521. package/src/Tooltip/index.ts +1 -1
  522. package/src/color.ts +84 -84
  523. package/src/css.ts +2 -2
  524. package/src/hooks/useAnimation.ts +111 -111
  525. package/src/index.ts +41 -41
  526. package/src/motion.ts +7 -7
  527. package/src/tailwind/extendColors.ts +51 -51
  528. package/src/tailwind/index.ts +56 -56
  529. package/src/tailwind/tests/extendColors.test.ts +123 -123
  530. package/src/theme/index.ts +2 -2
  531. package/src/theme/theme.ts +499 -499
  532. package/src/theme/typography-raleway.ts +114 -114
  533. package/src/theme/typography-roboto.ts +113 -113
  534. package/src/theme/useTheme.ts +18 -18
  535. package/tailwind/package.json +5 -5
  536. package/theme-explorer/package.json +5 -5
@@ -1,52 +1,52 @@
1
- import type { HTMLAttributes } from 'react';
2
- import { forwardRef } from 'react';
3
-
4
- import type { UseRippleSurfaceOptions } from './useRippleSurface';
5
- import { useRippleSurface } from './useRippleSurface';
6
- import type { BoxProps } from '../Box';
7
- import { Box } from '../Box';
8
-
9
- export type RippleBoxProps<
10
- H extends HTMLElement = HTMLDivElement,
11
- Attr = HTMLAttributes<H>
12
- > = BoxProps<H, Attr> & UseRippleSurfaceOptions<H>;
13
-
14
- export const RippleBox: <
15
- Props = RippleBoxProps<HTMLDivElement, HTMLAttributes<HTMLDivElement>>
16
- >(
17
- props: Props
18
- ) => JSX.Element = forwardRef<HTMLDivElement, RippleBoxProps>(
19
- function RippleBox(props, forwardedRef) {
20
- const {
21
- as = 'div',
22
- __css,
23
- // Cherry picking the ripple props to prevent it from falling down to
24
- // the Box component
25
- onKeyDown, // eslint-disable-line @typescript-eslint/no-unused-vars
26
- onPointerDown, // eslint-disable-line @typescript-eslint/no-unused-vars
27
- baseOpacity, // eslint-disable-line @typescript-eslint/no-unused-vars
28
- hoverOpacity, // eslint-disable-line @typescript-eslint/no-unused-vars
29
- focusOpacity, // eslint-disable-line @typescript-eslint/no-unused-vars
30
- pressedOpacity, // eslint-disable-line @typescript-eslint/no-unused-vars
31
- rippleColor, // eslint-disable-line @typescript-eslint/no-unused-vars
32
- center, // eslint-disable-line @typescript-eslint/no-unused-vars
33
- disabled, // eslint-disable-line @typescript-eslint/no-unused-vars
34
- rippleEnabled, // eslint-disable-line @typescript-eslint/no-unused-vars
35
- style, // eslint-disable-line @typescript-eslint/no-unused-vars
36
- ...otherProps
37
- } = props;
38
-
39
- const { __css: rippleCss, ...rippleProps } = useRippleSurface(props);
40
-
41
- return (
42
- <Box
43
- as={as}
44
- ref={forwardedRef}
45
- __css={{ ...rippleCss, ...__css }}
46
- {...{ disabled }}
47
- {...otherProps}
48
- {...rippleProps}
49
- />
50
- );
51
- }
52
- ) as any;
1
+ import type { HTMLAttributes } from 'react';
2
+ import { forwardRef } from 'react';
3
+
4
+ import type { UseRippleSurfaceOptions } from './useRippleSurface';
5
+ import { useRippleSurface } from './useRippleSurface';
6
+ import type { BoxProps } from '../Box';
7
+ import { Box } from '../Box';
8
+
9
+ export type RippleBoxProps<
10
+ H extends HTMLElement = HTMLDivElement,
11
+ Attr = HTMLAttributes<H>
12
+ > = BoxProps<H, Attr> & UseRippleSurfaceOptions<H>;
13
+
14
+ export const RippleBox: <
15
+ Props = RippleBoxProps<HTMLDivElement, HTMLAttributes<HTMLDivElement>>
16
+ >(
17
+ props: Props
18
+ ) => JSX.Element = forwardRef<HTMLDivElement, RippleBoxProps>(
19
+ function RippleBox(props, forwardedRef) {
20
+ const {
21
+ as = 'div',
22
+ __css,
23
+ // Cherry picking the ripple props to prevent it from falling down to
24
+ // the Box component
25
+ onKeyDown, // eslint-disable-line @typescript-eslint/no-unused-vars
26
+ onPointerDown, // eslint-disable-line @typescript-eslint/no-unused-vars
27
+ baseOpacity, // eslint-disable-line @typescript-eslint/no-unused-vars
28
+ hoverOpacity, // eslint-disable-line @typescript-eslint/no-unused-vars
29
+ focusOpacity, // eslint-disable-line @typescript-eslint/no-unused-vars
30
+ pressedOpacity, // eslint-disable-line @typescript-eslint/no-unused-vars
31
+ rippleColor, // eslint-disable-line @typescript-eslint/no-unused-vars
32
+ center, // eslint-disable-line @typescript-eslint/no-unused-vars
33
+ disabled, // eslint-disable-line @typescript-eslint/no-unused-vars
34
+ rippleEnabled, // eslint-disable-line @typescript-eslint/no-unused-vars
35
+ style, // eslint-disable-line @typescript-eslint/no-unused-vars
36
+ ...otherProps
37
+ } = props;
38
+
39
+ const { __css: rippleCss, ...rippleProps } = useRippleSurface(props);
40
+
41
+ return (
42
+ <Box
43
+ as={as}
44
+ ref={forwardedRef}
45
+ __css={{ ...rippleCss, ...__css }}
46
+ {...{ disabled }}
47
+ {...otherProps}
48
+ {...rippleProps}
49
+ />
50
+ );
51
+ }
52
+ ) as any;
@@ -1,15 +1,15 @@
1
- import hash from '@emotion/hash';
2
-
3
- export const RIPPLE_BACKGROUND_COLOR = `--css-${hash(
4
- 'basic-ui-ripple-fg-bg-color'
5
- )}`;
6
- export const RIPPLE_TRANSLATE_START = `--css-${hash(
7
- 'basic-ui-ripple-fg-translate-start'
8
- )}`;
9
- export const RIPPLE_TRANSLATE_END = `--css-${hash(
10
- 'basic-ui-ripple-fg-translate-end'
11
- )}`;
12
- export const RIPPLE_SCALE_END = `--css-${hash('basic-ui-ripple-fg-scale')}`;
13
- export const RIPPLE_OPACITY_END = `--css-${hash('basic-ui-ripple-fg-opacity')}`;
14
- export const RIPPLE_SIZE = `--css-${hash('basic-ui-ripple-fg-size')}`;
15
- export const RIPPLE_POSITION = `--css-${hash('basic-ui-ripple-fg-position')}`;
1
+ import hash from '@emotion/hash';
2
+
3
+ export const RIPPLE_BACKGROUND_COLOR = `--css-${hash(
4
+ 'basic-ui-ripple-fg-bg-color'
5
+ )}`;
6
+ export const RIPPLE_TRANSLATE_START = `--css-${hash(
7
+ 'basic-ui-ripple-fg-translate-start'
8
+ )}`;
9
+ export const RIPPLE_TRANSLATE_END = `--css-${hash(
10
+ 'basic-ui-ripple-fg-translate-end'
11
+ )}`;
12
+ export const RIPPLE_SCALE_END = `--css-${hash('basic-ui-ripple-fg-scale')}`;
13
+ export const RIPPLE_OPACITY_END = `--css-${hash('basic-ui-ripple-fg-opacity')}`;
14
+ export const RIPPLE_SIZE = `--css-${hash('basic-ui-ripple-fg-size')}`;
15
+ export const RIPPLE_POSITION = `--css-${hash('basic-ui-ripple-fg-position')}`;
@@ -1,5 +1,5 @@
1
- export * from './Ripple';
2
- export * from './RippleBox';
3
- export * from './useRipple';
4
- export * from './useRippleHandlers';
5
- export * from './useRippleSurface';
1
+ export * from './Ripple';
2
+ export * from './RippleBox';
3
+ export * from './useRipple';
4
+ export * from './useRippleHandlers';
5
+ export * from './useRippleSurface';
@@ -1,36 +1,36 @@
1
- import { keyframes } from '@emotion/react';
2
- import type { Keyframes } from '@emotion/serialize';
3
-
4
- import {
5
- RIPPLE_TRANSLATE_START,
6
- RIPPLE_TRANSLATE_END,
7
- RIPPLE_OPACITY_END,
8
- RIPPLE_SCALE_END,
9
- } from './constants';
10
-
11
- export const radiusIn: Keyframes = keyframes({
12
- from: {
13
- transform: `translate(var(${RIPPLE_TRANSLATE_START}, 0)) scale(1)`,
14
- },
15
- to: {
16
- transform: `translate(var(${RIPPLE_TRANSLATE_END}, 0)) scale(var(${RIPPLE_SCALE_END}, 1))`,
17
- },
18
- });
19
-
20
- export const opacityIn: Keyframes = keyframes({
21
- from: {
22
- opacity: '0',
23
- },
24
- to: {
25
- opacity: `var(${RIPPLE_OPACITY_END})`,
26
- },
27
- });
28
-
29
- export const opacityOut: Keyframes = keyframes({
30
- from: {
31
- opacity: `var(${RIPPLE_OPACITY_END})`,
32
- },
33
- to: {
34
- opacity: '0',
35
- },
36
- });
1
+ import { keyframes } from '@emotion/react';
2
+ import type { Keyframes } from '@emotion/serialize';
3
+
4
+ import {
5
+ RIPPLE_TRANSLATE_START,
6
+ RIPPLE_TRANSLATE_END,
7
+ RIPPLE_OPACITY_END,
8
+ RIPPLE_SCALE_END,
9
+ } from './constants';
10
+
11
+ export const radiusIn: Keyframes = keyframes({
12
+ from: {
13
+ transform: `translate(var(${RIPPLE_TRANSLATE_START}, 0)) scale(1)`,
14
+ },
15
+ to: {
16
+ transform: `translate(var(${RIPPLE_TRANSLATE_END}, 0)) scale(var(${RIPPLE_SCALE_END}, 1))`,
17
+ },
18
+ });
19
+
20
+ export const opacityIn: Keyframes = keyframes({
21
+ from: {
22
+ opacity: '0',
23
+ },
24
+ to: {
25
+ opacity: `var(${RIPPLE_OPACITY_END})`,
26
+ },
27
+ });
28
+
29
+ export const opacityOut: Keyframes = keyframes({
30
+ from: {
31
+ opacity: `var(${RIPPLE_OPACITY_END})`,
32
+ },
33
+ to: {
34
+ opacity: '0',
35
+ },
36
+ });
@@ -1,209 +1,209 @@
1
- import { useState, useRef, useEffect } from 'react';
2
-
3
- import { radiusIn, opacityIn, opacityOut } from './keyframes';
4
- import {
5
- RIPPLE_TRANSLATE_START,
6
- RIPPLE_TRANSLATE_END,
7
- RIPPLE_OPACITY_END,
8
- RIPPLE_SCALE_END,
9
- RIPPLE_SIZE,
10
- RIPPLE_BACKGROUND_COLOR,
11
- RIPPLE_POSITION,
12
- } from './constants';
13
-
14
- const defaultRipple = {
15
- x: 0,
16
- y: 0,
17
- size: 0,
18
- scale: 0,
19
- centerX: 0,
20
- centerY: 0,
21
- };
22
-
23
- // Surface diameter is treated differently for unbounded vs. bounded ripples.
24
- // Unbounded ripple diameter is calculated smaller since the surface is expected to already be padded appropriately
25
- // to extend the hitbox, and the ripple is expected to meet the edges of the padded hitbox (which is typically
26
- // square). Bounded ripples, on the other hand, are fully expected to expand beyond the surface's longest diameter
27
- // (calculated based on the diagonal plus a constant padding), and are clipped at the surface's border via
28
- // `overflow: hidden`.
29
- const getBoundedRadius = (rect: ClientRect, padding: number) => {
30
- const hypotenuse = Math.sqrt(
31
- Math.pow(rect.width, 2) + Math.pow(rect.height, 2)
32
- );
33
- return hypotenuse + padding;
34
- };
35
-
36
- function getScale(rect: ClientRect) {
37
- const maxDim = Math.max(rect.height, rect.width);
38
- const padding = 10;
39
- const initialOriginScale = 0.6;
40
- const maxRadius = getBoundedRadius(rect, padding);
41
-
42
- // Ripple is sized as a fraction of the largest dimension of the surface, then scales up using a CSS scale transform
43
- const initialSize = Math.floor(maxDim * initialOriginScale);
44
-
45
- return {
46
- size: initialSize,
47
- scale: maxRadius / initialSize,
48
- centerX: rect.width / 2,
49
- centerY: rect.height / 2,
50
- };
51
- }
52
-
53
- function calculateRipplePosition(
54
- rect: ClientRect,
55
- clientX: number,
56
- clientY: number,
57
- center = false
58
- ) {
59
- const rippleStart = center
60
- ? {
61
- x: rect.width / 2,
62
- y: rect.height / 2,
63
- }
64
- : {
65
- x: clientX - rect.left,
66
- y: clientY - rect.top,
67
- };
68
-
69
- return {
70
- state: 'entering' as const,
71
- ...rippleStart,
72
- ...getScale(rect),
73
- };
74
- }
75
-
76
- export interface RippleOptions {
77
- opacity: number;
78
- backgroundColor: string;
79
- enterDuration?: number;
80
- leaveDuration?: number;
81
- center?: boolean;
82
- disabled?: boolean;
83
- }
84
-
85
- export const useRipple = (opts: RippleOptions) => {
86
- const {
87
- opacity,
88
- backgroundColor,
89
- enterDuration = 225,
90
- leaveDuration = 150,
91
- } = opts;
92
-
93
- // rippleState must be a ref, because it accesses the current value
94
- // inside closures... if we use state, it's gonna recapture
95
- // the state variable and won't work correctly
96
- const rippleState = useRef(
97
- 'left' as 'entering' | 'entered' | 'leaving' | 'left' | 'restart'
98
- );
99
- const [ripple, setRipple] = useState(defaultRipple);
100
- const leavingTimeout = useRef<number>();
101
- const enteringTimeout = useRef<number>();
102
- const restartTimeout = useRef<number>();
103
-
104
- const shouldLeave = useRef(false);
105
-
106
- // clear timeouts to avoid setting state on unmounted component
107
- useEffect(() => {
108
- return () => {
109
- restartTimeout.current && cancelAnimationFrame(restartTimeout.current);
110
- clearTimeout(enteringTimeout.current);
111
- clearTimeout(leavingTimeout.current);
112
- };
113
- }, []);
114
-
115
- // State handling
116
- const setLeft = () => {
117
- rippleState.current = 'left';
118
- setRipple({ ...defaultRipple });
119
- };
120
-
121
- const setLeaving = () => {
122
- clearTimeout(enteringTimeout.current);
123
- rippleState.current = 'leaving';
124
- setRipple((ripple) => ({
125
- ...ripple,
126
- }));
127
-
128
- leavingTimeout.current = window.setTimeout(setLeft, leaveDuration);
129
- };
130
-
131
- const setEntered = () => {
132
- rippleState.current = 'entered';
133
- setRipple((ripple) => ({
134
- ...ripple,
135
- }));
136
-
137
- if (shouldLeave.current) {
138
- setLeaving();
139
- }
140
- };
141
-
142
- const deactivate = () => {
143
- shouldLeave.current = true;
144
- if (rippleState.current === 'entered') {
145
- setLeaving();
146
- }
147
- };
148
-
149
- const activate = (
150
- rect: ClientRect,
151
- clientX: number,
152
- clientY: number,
153
- center = false
154
- ) => {
155
- clearTimeout(leavingTimeout.current);
156
- clearTimeout(enteringTimeout.current);
157
- shouldLeave.current = false;
158
-
159
- rippleState.current = 'restart';
160
- setRipple({ ...defaultRipple });
161
- restartTimeout.current = requestAnimationFrame(() => {
162
- rippleState.current = 'entering';
163
- setRipple(calculateRipplePosition(rect, clientX, clientY, center));
164
-
165
- enteringTimeout.current = window.setTimeout(setEntered, enterDuration);
166
- });
167
- };
168
-
169
- // Styling
170
- let animation: string | undefined = undefined;
171
- switch (rippleState.current) {
172
- case 'entering':
173
- case 'entered':
174
- animation =
175
- `${radiusIn} ${enterDuration}ms forwards,` +
176
- `${opacityIn} ${enterDuration / 3}ms forwards`;
177
- break;
178
- case 'leaving':
179
- animation =
180
- `${radiusIn} ${enterDuration}ms forwards,` +
181
- `${opacityOut} ${leaveDuration}ms forwards`;
182
- break;
183
- }
184
-
185
- let style = {};
186
- switch (rippleState.current) {
187
- case 'entering':
188
- case 'entered':
189
- case 'leaving':
190
- style = {
191
- [RIPPLE_SIZE]: `${ripple.size}px`,
192
- [RIPPLE_POSITION]: `${-ripple.size / 2}px`,
193
- [RIPPLE_BACKGROUND_COLOR]: backgroundColor,
194
- [RIPPLE_TRANSLATE_START]: `${ripple.x}px, ${ripple.y}px`,
195
- [RIPPLE_TRANSLATE_END]: `${ripple.centerX}px, ${ripple.centerY}px`,
196
- [RIPPLE_OPACITY_END]: opacity,
197
- [RIPPLE_SCALE_END]: `${ripple.scale}`,
198
- };
199
- break;
200
- }
201
-
202
- return {
203
- activate,
204
- deactivate,
205
- style,
206
- animation,
207
- // key: counter,
208
- };
209
- };
1
+ import { useState, useRef, useEffect } from 'react';
2
+
3
+ import { radiusIn, opacityIn, opacityOut } from './keyframes';
4
+ import {
5
+ RIPPLE_TRANSLATE_START,
6
+ RIPPLE_TRANSLATE_END,
7
+ RIPPLE_OPACITY_END,
8
+ RIPPLE_SCALE_END,
9
+ RIPPLE_SIZE,
10
+ RIPPLE_BACKGROUND_COLOR,
11
+ RIPPLE_POSITION,
12
+ } from './constants';
13
+
14
+ const defaultRipple = {
15
+ x: 0,
16
+ y: 0,
17
+ size: 0,
18
+ scale: 0,
19
+ centerX: 0,
20
+ centerY: 0,
21
+ };
22
+
23
+ // Surface diameter is treated differently for unbounded vs. bounded ripples.
24
+ // Unbounded ripple diameter is calculated smaller since the surface is expected to already be padded appropriately
25
+ // to extend the hitbox, and the ripple is expected to meet the edges of the padded hitbox (which is typically
26
+ // square). Bounded ripples, on the other hand, are fully expected to expand beyond the surface's longest diameter
27
+ // (calculated based on the diagonal plus a constant padding), and are clipped at the surface's border via
28
+ // `overflow: hidden`.
29
+ const getBoundedRadius = (rect: ClientRect, padding: number) => {
30
+ const hypotenuse = Math.sqrt(
31
+ Math.pow(rect.width, 2) + Math.pow(rect.height, 2)
32
+ );
33
+ return hypotenuse + padding;
34
+ };
35
+
36
+ function getScale(rect: ClientRect) {
37
+ const maxDim = Math.max(rect.height, rect.width);
38
+ const padding = 10;
39
+ const initialOriginScale = 0.6;
40
+ const maxRadius = getBoundedRadius(rect, padding);
41
+
42
+ // Ripple is sized as a fraction of the largest dimension of the surface, then scales up using a CSS scale transform
43
+ const initialSize = Math.floor(maxDim * initialOriginScale);
44
+
45
+ return {
46
+ size: initialSize,
47
+ scale: maxRadius / initialSize,
48
+ centerX: rect.width / 2,
49
+ centerY: rect.height / 2,
50
+ };
51
+ }
52
+
53
+ function calculateRipplePosition(
54
+ rect: ClientRect,
55
+ clientX: number,
56
+ clientY: number,
57
+ center = false
58
+ ) {
59
+ const rippleStart = center
60
+ ? {
61
+ x: rect.width / 2,
62
+ y: rect.height / 2,
63
+ }
64
+ : {
65
+ x: clientX - rect.left,
66
+ y: clientY - rect.top,
67
+ };
68
+
69
+ return {
70
+ state: 'entering' as const,
71
+ ...rippleStart,
72
+ ...getScale(rect),
73
+ };
74
+ }
75
+
76
+ export interface RippleOptions {
77
+ opacity: number;
78
+ backgroundColor: string;
79
+ enterDuration?: number;
80
+ leaveDuration?: number;
81
+ center?: boolean;
82
+ disabled?: boolean;
83
+ }
84
+
85
+ export const useRipple = (opts: RippleOptions) => {
86
+ const {
87
+ opacity,
88
+ backgroundColor,
89
+ enterDuration = 225,
90
+ leaveDuration = 150,
91
+ } = opts;
92
+
93
+ // rippleState must be a ref, because it accesses the current value
94
+ // inside closures... if we use state, it's gonna recapture
95
+ // the state variable and won't work correctly
96
+ const rippleState = useRef(
97
+ 'left' as 'entering' | 'entered' | 'leaving' | 'left' | 'restart'
98
+ );
99
+ const [ripple, setRipple] = useState(defaultRipple);
100
+ const leavingTimeout = useRef<number>();
101
+ const enteringTimeout = useRef<number>();
102
+ const restartTimeout = useRef<number>();
103
+
104
+ const shouldLeave = useRef(false);
105
+
106
+ // clear timeouts to avoid setting state on unmounted component
107
+ useEffect(() => {
108
+ return () => {
109
+ restartTimeout.current && cancelAnimationFrame(restartTimeout.current);
110
+ clearTimeout(enteringTimeout.current);
111
+ clearTimeout(leavingTimeout.current);
112
+ };
113
+ }, []);
114
+
115
+ // State handling
116
+ const setLeft = () => {
117
+ rippleState.current = 'left';
118
+ setRipple({ ...defaultRipple });
119
+ };
120
+
121
+ const setLeaving = () => {
122
+ clearTimeout(enteringTimeout.current);
123
+ rippleState.current = 'leaving';
124
+ setRipple((ripple) => ({
125
+ ...ripple,
126
+ }));
127
+
128
+ leavingTimeout.current = window.setTimeout(setLeft, leaveDuration);
129
+ };
130
+
131
+ const setEntered = () => {
132
+ rippleState.current = 'entered';
133
+ setRipple((ripple) => ({
134
+ ...ripple,
135
+ }));
136
+
137
+ if (shouldLeave.current) {
138
+ setLeaving();
139
+ }
140
+ };
141
+
142
+ const deactivate = () => {
143
+ shouldLeave.current = true;
144
+ if (rippleState.current === 'entered') {
145
+ setLeaving();
146
+ }
147
+ };
148
+
149
+ const activate = (
150
+ rect: ClientRect,
151
+ clientX: number,
152
+ clientY: number,
153
+ center = false
154
+ ) => {
155
+ clearTimeout(leavingTimeout.current);
156
+ clearTimeout(enteringTimeout.current);
157
+ shouldLeave.current = false;
158
+
159
+ rippleState.current = 'restart';
160
+ setRipple({ ...defaultRipple });
161
+ restartTimeout.current = requestAnimationFrame(() => {
162
+ rippleState.current = 'entering';
163
+ setRipple(calculateRipplePosition(rect, clientX, clientY, center));
164
+
165
+ enteringTimeout.current = window.setTimeout(setEntered, enterDuration);
166
+ });
167
+ };
168
+
169
+ // Styling
170
+ let animation: string | undefined = undefined;
171
+ switch (rippleState.current) {
172
+ case 'entering':
173
+ case 'entered':
174
+ animation =
175
+ `${radiusIn} ${enterDuration}ms forwards,` +
176
+ `${opacityIn} ${enterDuration / 3}ms forwards`;
177
+ break;
178
+ case 'leaving':
179
+ animation =
180
+ `${radiusIn} ${enterDuration}ms forwards,` +
181
+ `${opacityOut} ${leaveDuration}ms forwards`;
182
+ break;
183
+ }
184
+
185
+ let style = {};
186
+ switch (rippleState.current) {
187
+ case 'entering':
188
+ case 'entered':
189
+ case 'leaving':
190
+ style = {
191
+ [RIPPLE_SIZE]: `${ripple.size}px`,
192
+ [RIPPLE_POSITION]: `${-ripple.size / 2}px`,
193
+ [RIPPLE_BACKGROUND_COLOR]: backgroundColor,
194
+ [RIPPLE_TRANSLATE_START]: `${ripple.x}px, ${ripple.y}px`,
195
+ [RIPPLE_TRANSLATE_END]: `${ripple.centerX}px, ${ripple.centerY}px`,
196
+ [RIPPLE_OPACITY_END]: opacity,
197
+ [RIPPLE_SCALE_END]: `${ripple.scale}`,
198
+ };
199
+ break;
200
+ }
201
+
202
+ return {
203
+ activate,
204
+ deactivate,
205
+ style,
206
+ animation,
207
+ // key: counter,
208
+ };
209
+ };