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

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 (544) 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/Snackbar.js.map +1 -1
  217. package/build/esm/Snackbar/Stack.d.ts +31 -31
  218. package/build/esm/Snackbar/Stack.js.map +1 -1
  219. package/build/esm/Snackbar/index.d.ts +3 -3
  220. package/build/esm/Snackbar/index.js.map +1 -1
  221. package/build/esm/Snackbar/useSnackbarAnimation.d.ts +6 -6
  222. package/build/esm/Snackbar/useSnackbarAnimation.js.map +1 -1
  223. package/build/esm/Switch/Switch.d.ts +13 -13
  224. package/build/esm/Switch/Switch.js.map +1 -1
  225. package/build/esm/Switch/index.d.ts +1 -1
  226. package/build/esm/Switch/index.js.map +1 -1
  227. package/build/esm/Switch/styledComponents.d.ts +13 -13
  228. package/build/esm/Switch/styledComponents.js.map +1 -1
  229. package/build/esm/Tab/Tab.d.ts +5 -5
  230. package/build/esm/Tab/Tab.js.map +1 -1
  231. package/build/esm/Tab/TabList.d.ts +10 -10
  232. package/build/esm/Tab/TabList.js.map +1 -1
  233. package/build/esm/Tab/TabPanel.d.ts +5 -5
  234. package/build/esm/Tab/TabPanel.js.map +1 -1
  235. package/build/esm/Tab/TabPanels.d.ts +4 -4
  236. package/build/esm/Tab/TabPanels.js.map +1 -1
  237. package/build/esm/Tab/Tabs.d.ts +4 -4
  238. package/build/esm/Tab/Tabs.js.map +1 -1
  239. package/build/esm/Tab/context.d.ts +9 -9
  240. package/build/esm/Tab/context.js.map +1 -1
  241. package/build/esm/Tab/index.d.ts +5 -5
  242. package/build/esm/Tab/index.js.map +1 -1
  243. package/build/esm/TabIndicator/TabIndicator.d.ts +9 -9
  244. package/build/esm/TabIndicator/TabIndicator.js.map +1 -1
  245. package/build/esm/TabIndicator/context.d.ts +6 -6
  246. package/build/esm/TabIndicator/context.js.map +1 -1
  247. package/build/esm/TabIndicator/index.d.ts +2 -2
  248. package/build/esm/TabIndicator/index.js.map +1 -1
  249. package/build/esm/Table/Table.d.ts +4 -4
  250. package/build/esm/Table/Table.js.map +1 -1
  251. package/build/esm/Table/TableBody.d.ts +4 -4
  252. package/build/esm/Table/TableBody.js.map +1 -1
  253. package/build/esm/Table/TableCell.d.ts +4 -4
  254. package/build/esm/Table/TableCell.js.map +1 -1
  255. package/build/esm/Table/TableHead.d.ts +4 -4
  256. package/build/esm/Table/TableHead.js.map +1 -1
  257. package/build/esm/Table/TableRow.d.ts +4 -4
  258. package/build/esm/Table/TableRow.js.map +1 -1
  259. package/build/esm/Table/context.d.ts +3 -3
  260. package/build/esm/Table/context.js.map +1 -1
  261. package/build/esm/Table/index.d.ts +5 -5
  262. package/build/esm/Table/index.js.map +1 -1
  263. package/build/esm/Text/LoremIpsum.d.ts +4 -4
  264. package/build/esm/Text/LoremIpsum.js.map +1 -1
  265. package/build/esm/Text/Text.d.ts +11 -11
  266. package/build/esm/Text/Text.js +2 -2
  267. package/build/esm/Text/Text.js.map +1 -1
  268. package/build/esm/Text/index.d.ts +1 -1
  269. package/build/esm/Text/index.js.map +1 -1
  270. package/build/esm/TextField/FilledContainer.d.ts +18 -18
  271. package/build/esm/TextField/FilledContainer.js.map +1 -1
  272. package/build/esm/TextField/HelperText.d.ts +10 -10
  273. package/build/esm/TextField/HelperText.js.map +1 -1
  274. package/build/esm/TextField/IconContainer.d.ts +5 -5
  275. package/build/esm/TextField/IconContainer.js.map +1 -1
  276. package/build/esm/TextField/Input.d.ts +11 -11
  277. package/build/esm/TextField/Input.js +1 -1
  278. package/build/esm/TextField/Input.js.map +1 -1
  279. package/build/esm/TextField/OutlinedContainer.d.ts +17 -17
  280. package/build/esm/TextField/OutlinedContainer.js.map +1 -1
  281. package/build/esm/TextField/TextField.d.ts +19 -19
  282. package/build/esm/TextField/consts.d.ts +5 -5
  283. package/build/esm/TextField/consts.js.map +1 -1
  284. package/build/esm/TextField/index.d.ts +4 -4
  285. package/build/esm/TextField/index.js.map +1 -1
  286. package/build/esm/ThemeExplorer/BorderSlider.d.ts +7 -7
  287. package/build/esm/ThemeExplorer/BorderSlider.js.map +1 -1
  288. package/build/esm/ThemeExplorer/ColorPicker.d.ts +8 -8
  289. package/build/esm/ThemeExplorer/ColorPicker.js.map +1 -1
  290. package/build/esm/ThemeExplorer/ColorSchemePicker.d.ts +10 -10
  291. package/build/esm/ThemeExplorer/ColorSchemePicker.js.map +1 -1
  292. package/build/esm/ThemeExplorer/FontAutoComplete.d.ts +9 -9
  293. package/build/esm/ThemeExplorer/FontAutoComplete.js.map +1 -1
  294. package/build/esm/ThemeExplorer/TextFieldColorPicker.d.ts +9 -9
  295. package/build/esm/ThemeExplorer/TextFieldColorPicker.js.map +1 -1
  296. package/build/esm/ThemeExplorer/ThemeBuilder.d.ts +11 -11
  297. package/build/esm/ThemeExplorer/ThemeBuilder.js.map +1 -1
  298. package/build/esm/ThemeExplorer/ThemeColors.d.ts +5 -5
  299. package/build/esm/ThemeExplorer/ThemeColors.js.map +1 -1
  300. package/build/esm/ThemeExplorer/components.d.ts +31 -31
  301. package/build/esm/ThemeExplorer/components.js.map +1 -1
  302. package/build/esm/ThemeExplorer/googleFonts.d.ts +1 -1
  303. package/build/esm/ThemeExplorer/googleFonts.js.map +1 -1
  304. package/build/esm/ThemeExplorer/index.d.ts +1 -1
  305. package/build/esm/ThemeExplorer/index.js.map +1 -1
  306. package/build/esm/ThemeExplorer/makeColorScheme.d.ts +98 -98
  307. package/build/esm/ThemeExplorer/makeColorScheme.js.map +1 -1
  308. package/build/esm/ThemeExplorer/makeTailwindTheme.d.ts +2 -2
  309. package/build/esm/ThemeExplorer/makeTailwindTheme.js.map +1 -1
  310. package/build/esm/ThemeExplorer/updateGoogleFonts.js.map +1 -1
  311. package/build/esm/ThemeExplorer/useDeferredColor.d.ts +3 -3
  312. package/build/esm/ThemeExplorer/useDeferredColor.js.map +1 -1
  313. package/build/esm/ThemeExplorer/useLocalStorageCachedState.d.ts +1 -1
  314. package/build/esm/ThemeExplorer/useLocalStorageCachedState.js.map +1 -1
  315. package/build/esm/Tooltip/Tooltip.d.ts +8 -8
  316. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  317. package/build/esm/Tooltip/index.d.ts +1 -1
  318. package/build/esm/Tooltip/index.js.map +1 -1
  319. package/build/esm/color.d.ts +8 -8
  320. package/build/esm/color.js.map +1 -1
  321. package/build/esm/css.d.ts +1 -1
  322. package/build/esm/css.js.map +1 -1
  323. package/build/esm/hooks/useAnimation.d.ts +20 -20
  324. package/build/esm/hooks/useAnimation.js.map +1 -1
  325. package/build/esm/index.d.ts +41 -41
  326. package/build/esm/index.js.map +1 -1
  327. package/build/esm/motion.d.ts +7 -7
  328. package/build/esm/motion.js.map +1 -1
  329. package/build/esm/tailwind/extendColors.d.ts +5 -5
  330. package/build/esm/tailwind/extendColors.js.map +1 -1
  331. package/build/esm/tailwind/index.d.ts +8 -8
  332. package/build/esm/tailwind/index.js.map +1 -1
  333. package/build/esm/theme/index.d.ts +2 -2
  334. package/build/esm/theme/index.js.map +1 -1
  335. package/build/esm/theme/theme.d.ts +562 -562
  336. package/build/esm/theme/theme.js.map +1 -1
  337. package/build/esm/theme/typography-raleway.d.ts +112 -112
  338. package/build/esm/theme/typography-raleway.js.map +1 -1
  339. package/build/esm/theme/typography-roboto.d.ts +111 -111
  340. package/build/esm/theme/typography-roboto.js.map +1 -1
  341. package/build/esm/theme/useTheme.d.ts +566 -566
  342. package/build/esm/theme/useTheme.js.map +1 -1
  343. package/build/tsconfig-build.tsbuildinfo +1 -1
  344. package/package.json +2 -2
  345. package/src/Alert/Alert.story.tsx +28 -28
  346. package/src/Alert/Alert.tsx +33 -33
  347. package/src/Alert/index.ts +1 -1
  348. package/src/AppBar/AppBar.story.tsx +69 -69
  349. package/src/AppBar/AppBar.tsx +85 -85
  350. package/src/AppBar/AppBarButton.tsx +25 -25
  351. package/src/AppBar/context.ts +13 -13
  352. package/src/AppBar/index.ts +3 -3
  353. package/src/Badge/Badge.story.tsx +68 -68
  354. package/src/Badge/Badge.tsx +47 -47
  355. package/src/Badge/index.ts +1 -1
  356. package/src/BaseLine/BaseLine.tsx +100 -100
  357. package/src/BaseLine/index.ts +1 -1
  358. package/src/BottomSheet/BottomSheet.story.tsx +35 -35
  359. package/src/BottomSheet/BottomSheet.tsx +39 -39
  360. package/src/BottomSheet/BottomSheetSurface.tsx +49 -49
  361. package/src/BottomSheet/index.ts +1 -1
  362. package/src/Box/Box.tsx +127 -127
  363. package/src/Box/index.ts +1 -1
  364. package/src/Button/ButtonGroup.story.tsx +106 -106
  365. package/src/Button/ButtonGroup.tsx +35 -35
  366. package/src/Button/FloatingActionButton.tsx +9 -9
  367. package/src/Button/OutlinedButton.tsx +47 -47
  368. package/src/Button/SpinnerButton.story.tsx +91 -91
  369. package/src/Button/context.tsx +17 -17
  370. package/src/Button/index.ts +2 -2
  371. package/src/CheckBox/CheckBox.story.tsx +155 -155
  372. package/src/CheckBox/CheckBox.tsx +170 -170
  373. package/src/CheckBox/CheckBoxIcon.tsx +64 -64
  374. package/src/CheckBox/CheckPath.tsx +18 -18
  375. package/src/CheckBox/IndeterminatePath.tsx +16 -16
  376. package/src/CheckBox/index.ts +1 -1
  377. package/src/Chip/ButtonChip.tsx +86 -86
  378. package/src/Chip/Chip.story.tsx +242 -242
  379. package/src/Chip/Chip.tsx +5 -5
  380. package/src/Chip/ChipBase.tsx +141 -141
  381. package/src/Chip/ChoiceChip.tsx +127 -127
  382. package/src/Chip/index.ts +2 -2
  383. package/src/Combobox/Combobox.story.tsx +157 -157
  384. package/src/Combobox/Combobox.tsx +274 -274
  385. package/src/Combobox/index.ts +1 -1
  386. package/src/Dialog/Dialog.story.tsx +53 -53
  387. package/src/Dialog/Dialog.tsx +73 -73
  388. package/src/Dialog/DialogBackdrop.tsx +42 -42
  389. package/src/Dialog/DialogContainer.tsx +31 -31
  390. package/src/Dialog/DialogSurface.tsx +55 -55
  391. package/src/Dialog/Scrim.tsx +35 -35
  392. package/src/Dialog/index.ts +2 -2
  393. package/src/Dialog/useDialogAnimation.tsx +49 -49
  394. package/src/Divider/Divider.story.tsx +39 -39
  395. package/src/Divider/Divider.tsx +48 -48
  396. package/src/Divider/index.ts +1 -1
  397. package/src/FloatingLabel/FloatingLabel.story.tsx +55 -55
  398. package/src/FloatingLabel/FloatingLabel.tsx +77 -77
  399. package/src/FloatingLabel/index.ts +1 -1
  400. package/src/LineRipple/LineRipple.story.tsx +43 -43
  401. package/src/LineRipple/LineRipple.tsx +81 -81
  402. package/src/LineRipple/index.ts +1 -1
  403. package/src/Link/Link.story.tsx +14 -14
  404. package/src/Link/Link.tsx +65 -65
  405. package/src/Link/index.ts +1 -1
  406. package/src/List/List.tsx +46 -46
  407. package/src/List/index.ts +1 -1
  408. package/src/ListItem/ListItem.story.tsx +43 -43
  409. package/src/ListItem/ListItem.tsx +104 -104
  410. package/src/ListItem/ListItemText.tsx +35 -35
  411. package/src/ListItem/index.ts +2 -2
  412. package/src/Menu/ContextMenu.story.tsx +34 -34
  413. package/src/Menu/Menu.story.tsx +54 -54
  414. package/src/Menu/Menu.tsx +124 -124
  415. package/src/Menu/animation.ts +16 -16
  416. package/src/Menu/index.ts +2 -2
  417. package/src/NavRail/NavRail.story.tsx +146 -146
  418. package/src/NavRail/NavRailItem.tsx +175 -175
  419. package/src/NavRail/icons/test-icons.tsx +46 -46
  420. package/src/NavRail/index.ts +1 -1
  421. package/src/NotchedOutline/NotchedOutline.story.tsx +99 -99
  422. package/src/NotchedOutline/NotchedOutline.tsx +80 -80
  423. package/src/NotchedOutline/context.ts +12 -12
  424. package/src/NotchedOutline/index.ts +1 -1
  425. package/src/NotchedOutline/styledComponents.ts +122 -122
  426. package/src/Paper/Paper.story.tsx +50 -50
  427. package/src/Paper/Paper.tsx +67 -67
  428. package/src/Paper/index.ts +1 -1
  429. package/src/Popover/PopoverSurface.tsx +51 -51
  430. package/src/Popover/index.ts +1 -1
  431. package/src/ProgressSpinner/ProgressSpinner.story.tsx +35 -35
  432. package/src/ProgressSpinner/ProgressSpinner.tsx +119 -119
  433. package/src/ProgressSpinner/index.ts +1 -1
  434. package/src/RadioButton/RadioButton.story.tsx +109 -109
  435. package/src/RadioButton/RadioButton.tsx +112 -112
  436. package/src/RadioButton/RadioButtonIcon.tsx +44 -44
  437. package/src/RadioButton/RadioGroup.tsx +27 -27
  438. package/src/RadioButton/index.ts +2 -2
  439. package/src/Ripple/Ripple.story.tsx +78 -78
  440. package/src/Ripple/Ripple.tsx +33 -33
  441. package/src/Ripple/RippleBox.tsx +52 -52
  442. package/src/Ripple/constants.ts +15 -15
  443. package/src/Ripple/index.ts +5 -5
  444. package/src/Ripple/keyframes.ts +36 -36
  445. package/src/Ripple/useRipple.ts +209 -209
  446. package/src/Ripple/useRippleHandlers.ts +54 -54
  447. package/src/Ripple/useRippleSurface.ts +155 -155
  448. package/src/Select/CustomContainerExample.tsx +59 -59
  449. package/src/Select/PaymentMethodSelect.story.tsx +316 -316
  450. package/src/Select/Select.story.tsx +225 -225
  451. package/src/Select/Select.tsx +283 -283
  452. package/src/Select/SelectIcon.tsx +43 -43
  453. package/src/Select/SelectMultiple.story.tsx +215 -215
  454. package/src/Select/context.ts +22 -22
  455. package/src/Select/defaultRender.tsx +49 -49
  456. package/src/Select/index.ts +1 -1
  457. package/src/Select/styledComponents.tsx +38 -38
  458. package/src/SelectItem/SelectItem.tsx +92 -92
  459. package/src/SelectItem/index.ts +1 -1
  460. package/src/SelectionControl/SelectionControlLabel.tsx +34 -34
  461. package/src/SelectionControl/SelectionControlText.tsx +37 -37
  462. package/src/SelectionControl/index.ts +2 -2
  463. package/src/Skeleton/DelayAppearance.tsx +41 -41
  464. package/src/Skeleton/Skeleton.story.tsx +57 -57
  465. package/src/Skeleton/Skeleton.tsx +40 -40
  466. package/src/Skeleton/animation.ts +54 -54
  467. package/src/Skeleton/index.ts +2 -2
  468. package/src/Slider/Slider.story.tsx +36 -36
  469. package/src/Slider/Slider.tsx +275 -275
  470. package/src/Slider/index.ts +1 -1
  471. package/src/Snackbar/Snackbar.story.tsx +99 -99
  472. package/src/Snackbar/Snackbar.tsx +82 -82
  473. package/src/Snackbar/Stack.tsx +239 -239
  474. package/src/Snackbar/index.ts +3 -3
  475. package/src/Snackbar/useSnackbarAnimation.ts +170 -170
  476. package/src/Switch/Switch.story.tsx +98 -98
  477. package/src/Switch/Switch.tsx +170 -170
  478. package/src/Switch/index.ts +1 -1
  479. package/src/Switch/styledComponents.tsx +117 -117
  480. package/src/Tab/Tab.story.tsx +209 -209
  481. package/src/Tab/Tab.tsx +120 -120
  482. package/src/Tab/TabList.tsx +61 -61
  483. package/src/Tab/TabPanel.tsx +31 -31
  484. package/src/Tab/TabPanels.tsx +5 -5
  485. package/src/Tab/Tabs.tsx +5 -5
  486. package/src/Tab/context.ts +17 -17
  487. package/src/Tab/index.ts +5 -5
  488. package/src/TabIndicator/TabIndicator.tsx +146 -146
  489. package/src/TabIndicator/context.ts +13 -13
  490. package/src/TabIndicator/index.ts +2 -2
  491. package/src/Table/Table.story.tsx +227 -227
  492. package/src/Table/Table.tsx +34 -34
  493. package/src/Table/TableBody.tsx +17 -17
  494. package/src/Table/TableCell.tsx +34 -34
  495. package/src/Table/TableHead.tsx +31 -31
  496. package/src/Table/TableRow.tsx +38 -38
  497. package/src/Table/context.ts +6 -6
  498. package/src/Table/index.ts +5 -5
  499. package/src/Text/LoremIpsum.tsx +18 -18
  500. package/src/Text/Text.story.tsx +75 -75
  501. package/src/Text/Text.tsx +84 -84
  502. package/src/Text/index.ts +1 -1
  503. package/src/TextField/FilledContainer.tsx +173 -173
  504. package/src/TextField/HelperText.tsx +63 -63
  505. package/src/TextField/IconContainer.tsx +33 -33
  506. package/src/TextField/Input.tsx +1 -1
  507. package/src/TextField/OutlinedContainer.tsx +116 -116
  508. package/src/TextField/TextField.story.tsx +241 -241
  509. package/src/TextField/consts.ts +7 -7
  510. package/src/TextField/index.ts +4 -4
  511. package/src/ThemeExplorer/BorderSlider.tsx +73 -73
  512. package/src/ThemeExplorer/ColorPicker.tsx +104 -104
  513. package/src/ThemeExplorer/ColorSchemePicker.tsx +55 -55
  514. package/src/ThemeExplorer/FontAutoComplete.tsx +139 -139
  515. package/src/ThemeExplorer/TextFieldColorPicker.tsx +115 -115
  516. package/src/ThemeExplorer/ThemeBuilder.story.tsx +8 -8
  517. package/src/ThemeExplorer/ThemeBuilder.tsx +353 -353
  518. package/src/ThemeExplorer/ThemeColors.tsx +118 -118
  519. package/src/ThemeExplorer/components.tsx +195 -195
  520. package/src/ThemeExplorer/googleFonts.ts +1436 -1436
  521. package/src/ThemeExplorer/index.ts +1 -1
  522. package/src/ThemeExplorer/makeColorScheme.tsx +111 -111
  523. package/src/ThemeExplorer/makeTailwindTheme.ts +44 -44
  524. package/src/ThemeExplorer/updateGoogleFonts.js +33 -33
  525. package/src/ThemeExplorer/useDeferredColor.tsx +21 -21
  526. package/src/ThemeExplorer/useLocalStorageCachedState.ts +18 -18
  527. package/src/Tooltip/Tooltip.story.tsx +35 -35
  528. package/src/Tooltip/Tooltip.tsx +67 -67
  529. package/src/Tooltip/index.ts +1 -1
  530. package/src/color.ts +84 -84
  531. package/src/css.ts +2 -2
  532. package/src/hooks/useAnimation.ts +111 -111
  533. package/src/index.ts +41 -41
  534. package/src/motion.ts +7 -7
  535. package/src/tailwind/extendColors.ts +51 -51
  536. package/src/tailwind/index.ts +56 -56
  537. package/src/tailwind/tests/extendColors.test.ts +123 -123
  538. package/src/theme/index.ts +2 -2
  539. package/src/theme/theme.ts +499 -499
  540. package/src/theme/typography-raleway.ts +114 -114
  541. package/src/theme/typography-roboto.ts +113 -113
  542. package/src/theme/useTheme.ts +18 -18
  543. package/tailwind/package.json +5 -5
  544. 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
+ };