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