@basic-ui/material 0.1.15 → 1.0.0-alpha.1

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 (590) hide show
  1. package/build/cjs/index.js +641 -378
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Alert/Alert.d.ts +2 -2
  4. package/build/esm/Alert/Alert.js +9 -9
  5. package/build/esm/Alert/Alert.js.map +1 -1
  6. package/build/esm/Alert/index.d.ts +0 -0
  7. package/build/esm/Alert/index.js +0 -0
  8. package/build/esm/Alert/index.js.map +0 -0
  9. package/build/esm/AppBar/AppBar.d.ts +3 -3
  10. package/build/esm/AppBar/AppBar.js +25 -18
  11. package/build/esm/AppBar/AppBar.js.map +1 -1
  12. package/build/esm/AppBar/AppBarButton.d.ts +2 -2
  13. package/build/esm/AppBar/AppBarButton.js +8 -9
  14. package/build/esm/AppBar/AppBarButton.js.map +1 -1
  15. package/build/esm/AppBar/context.d.ts +1 -1
  16. package/build/esm/AppBar/context.js +6 -5
  17. package/build/esm/AppBar/context.js.map +1 -1
  18. package/build/esm/AppBar/index.d.ts +0 -0
  19. package/build/esm/AppBar/index.js +0 -0
  20. package/build/esm/AppBar/index.js.map +0 -0
  21. package/build/esm/Badge/Badge.d.ts +2 -2
  22. package/build/esm/Badge/Badge.js +2 -2
  23. package/build/esm/Badge/Badge.js.map +1 -1
  24. package/build/esm/Badge/index.d.ts +0 -0
  25. package/build/esm/Badge/index.js +0 -0
  26. package/build/esm/Badge/index.js.map +0 -0
  27. package/build/esm/BaseLine/BaseLine.d.ts +0 -1
  28. package/build/esm/BaseLine/BaseLine.js +4 -4
  29. package/build/esm/BaseLine/BaseLine.js.map +1 -1
  30. package/build/esm/BaseLine/index.d.ts +0 -0
  31. package/build/esm/BaseLine/index.js +0 -0
  32. package/build/esm/BaseLine/index.js.map +0 -0
  33. package/build/esm/BottomSheet/BottomSheet.d.ts +2 -2
  34. package/build/esm/BottomSheet/BottomSheet.js +11 -13
  35. package/build/esm/BottomSheet/BottomSheet.js.map +1 -1
  36. package/build/esm/BottomSheet/BottomSheetSurface.d.ts +4 -4
  37. package/build/esm/BottomSheet/BottomSheetSurface.js +8 -9
  38. package/build/esm/BottomSheet/BottomSheetSurface.js.map +1 -1
  39. package/build/esm/BottomSheet/index.d.ts +0 -0
  40. package/build/esm/BottomSheet/index.js +0 -0
  41. package/build/esm/BottomSheet/index.js.map +0 -0
  42. package/build/esm/Box/Box.d.ts +5 -5
  43. package/build/esm/Box/Box.js +27 -19
  44. package/build/esm/Box/Box.js.map +1 -1
  45. package/build/esm/Box/index.d.ts +0 -0
  46. package/build/esm/Box/index.js +0 -0
  47. package/build/esm/Box/index.js.map +0 -0
  48. package/build/esm/Button/BaseButton.d.ts +4 -3
  49. package/build/esm/Button/BaseButton.js +11 -12
  50. package/build/esm/Button/BaseButton.js.map +1 -1
  51. package/build/esm/Button/Button.d.ts +5 -5
  52. package/build/esm/Button/Button.js +45 -24
  53. package/build/esm/Button/Button.js.map +1 -1
  54. package/build/esm/Button/ButtonGroup.d.ts +5 -0
  55. package/build/esm/Button/ButtonGroup.js +31 -0
  56. package/build/esm/Button/ButtonGroup.js.map +1 -0
  57. package/build/esm/Button/FilledButton.d.ts +3 -2
  58. package/build/esm/Button/FilledButton.js +62 -21
  59. package/build/esm/Button/FilledButton.js.map +1 -1
  60. package/build/esm/Button/FloatingActionButton.d.ts +1 -1
  61. package/build/esm/Button/FloatingActionButton.js +0 -0
  62. package/build/esm/Button/FloatingActionButton.js.map +1 -1
  63. package/build/esm/Button/IconButton.d.ts +2 -1
  64. package/build/esm/Button/IconButton.js +2 -1
  65. package/build/esm/Button/IconButton.js.map +1 -1
  66. package/build/esm/Button/OutlinedButton.d.ts +1 -1
  67. package/build/esm/Button/OutlinedButton.js +36 -4
  68. package/build/esm/Button/OutlinedButton.js.map +1 -1
  69. package/build/esm/Button/TransparentButton.d.ts +3 -2
  70. package/build/esm/Button/TransparentButton.js +49 -15
  71. package/build/esm/Button/TransparentButton.js.map +1 -1
  72. package/build/esm/Button/context.d.ts +8 -0
  73. package/build/esm/Button/context.js +7 -0
  74. package/build/esm/Button/context.js.map +1 -0
  75. package/build/esm/Button/index.d.ts +1 -0
  76. package/build/esm/Button/index.js +1 -0
  77. package/build/esm/Button/index.js.map +1 -1
  78. package/build/esm/CheckBox/CheckBox.d.ts +3 -3
  79. package/build/esm/CheckBox/CheckBox.js +43 -36
  80. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  81. package/build/esm/CheckBox/CheckBoxIcon.d.ts +3 -3
  82. package/build/esm/CheckBox/CheckBoxIcon.js +15 -13
  83. package/build/esm/CheckBox/CheckBoxIcon.js.map +1 -1
  84. package/build/esm/CheckBox/CheckPath.d.ts +0 -0
  85. package/build/esm/CheckBox/CheckPath.js +15 -14
  86. package/build/esm/CheckBox/CheckPath.js.map +1 -1
  87. package/build/esm/CheckBox/IndeterminatePath.d.ts +0 -0
  88. package/build/esm/CheckBox/IndeterminatePath.js +14 -13
  89. package/build/esm/CheckBox/IndeterminatePath.js.map +1 -1
  90. package/build/esm/CheckBox/index.d.ts +0 -0
  91. package/build/esm/CheckBox/index.js +0 -0
  92. package/build/esm/CheckBox/index.js.map +0 -0
  93. package/build/esm/Chip/ButtonChip.d.ts +5 -5
  94. package/build/esm/Chip/ButtonChip.js +49 -65
  95. package/build/esm/Chip/ButtonChip.js.map +1 -1
  96. package/build/esm/Chip/Chip.d.ts +0 -0
  97. package/build/esm/Chip/Chip.js +0 -0
  98. package/build/esm/Chip/Chip.js.map +0 -0
  99. package/build/esm/Chip/ChipBase.d.ts +2 -2
  100. package/build/esm/Chip/ChipBase.js +42 -29
  101. package/build/esm/Chip/ChipBase.js.map +1 -1
  102. package/build/esm/Chip/ChoiceChip.d.ts +5 -4
  103. package/build/esm/Chip/ChoiceChip.js +38 -45
  104. package/build/esm/Chip/ChoiceChip.js.map +1 -1
  105. package/build/esm/Chip/index.d.ts +0 -0
  106. package/build/esm/Chip/index.js +0 -0
  107. package/build/esm/Chip/index.js.map +0 -0
  108. package/build/esm/ColorMode/ColorModeProvider.d.ts +1 -1
  109. package/build/esm/ColorMode/ColorModeProvider.js +32 -19
  110. package/build/esm/ColorMode/ColorModeProvider.js.map +1 -1
  111. package/build/esm/ColorMode/color-mode.d.ts +0 -0
  112. package/build/esm/ColorMode/color-mode.js +3 -3
  113. package/build/esm/ColorMode/color-mode.js.map +1 -1
  114. package/build/esm/ColorMode/color-vars.d.ts +0 -0
  115. package/build/esm/ColorMode/color-vars.js +20 -12
  116. package/build/esm/ColorMode/color-vars.js.map +1 -1
  117. package/build/esm/ColorMode/constants.d.ts +0 -0
  118. package/build/esm/ColorMode/constants.js +3 -3
  119. package/build/esm/ColorMode/constants.js.map +1 -1
  120. package/build/esm/ColorMode/index.d.ts +0 -0
  121. package/build/esm/ColorMode/index.js +0 -0
  122. package/build/esm/ColorMode/index.js.map +0 -0
  123. package/build/esm/Combobox/Combobox.d.ts +14 -14
  124. package/build/esm/Combobox/Combobox.js +52 -57
  125. package/build/esm/Combobox/Combobox.js.map +1 -1
  126. package/build/esm/Combobox/index.d.ts +0 -0
  127. package/build/esm/Combobox/index.js +0 -0
  128. package/build/esm/Combobox/index.js.map +0 -0
  129. package/build/esm/Dialog/Dialog.d.ts +5 -5
  130. package/build/esm/Dialog/Dialog.js +22 -23
  131. package/build/esm/Dialog/Dialog.js.map +1 -1
  132. package/build/esm/Dialog/DialogBackdrop.d.ts +4 -4
  133. package/build/esm/Dialog/DialogBackdrop.js +10 -11
  134. package/build/esm/Dialog/DialogBackdrop.js.map +1 -1
  135. package/build/esm/Dialog/DialogContainer.d.ts +1 -1
  136. package/build/esm/Dialog/DialogContainer.js +4 -6
  137. package/build/esm/Dialog/DialogContainer.js.map +1 -1
  138. package/build/esm/Dialog/DialogSurface.d.ts +7 -5
  139. package/build/esm/Dialog/DialogSurface.js +24 -12
  140. package/build/esm/Dialog/DialogSurface.js.map +1 -1
  141. package/build/esm/Dialog/Scrim.d.ts +1 -1
  142. package/build/esm/Dialog/Scrim.js +4 -6
  143. package/build/esm/Dialog/Scrim.js.map +1 -1
  144. package/build/esm/Dialog/index.d.ts +0 -0
  145. package/build/esm/Dialog/index.js +0 -0
  146. package/build/esm/Dialog/index.js.map +0 -0
  147. package/build/esm/Dialog/useDialogAnimation.d.ts +0 -0
  148. package/build/esm/Dialog/useDialogAnimation.js +19 -20
  149. package/build/esm/Dialog/useDialogAnimation.js.map +1 -1
  150. package/build/esm/Divider/Divider.d.ts +3 -3
  151. package/build/esm/Divider/Divider.js +9 -8
  152. package/build/esm/Divider/Divider.js.map +1 -1
  153. package/build/esm/Divider/index.d.ts +0 -0
  154. package/build/esm/Divider/index.js +0 -0
  155. package/build/esm/Divider/index.js.map +0 -0
  156. package/build/esm/FloatingLabel/FloatingLabel.d.ts +1 -2
  157. package/build/esm/FloatingLabel/FloatingLabel.js +26 -24
  158. package/build/esm/FloatingLabel/FloatingLabel.js.map +1 -1
  159. package/build/esm/FloatingLabel/index.d.ts +0 -0
  160. package/build/esm/FloatingLabel/index.js +0 -0
  161. package/build/esm/FloatingLabel/index.js.map +0 -0
  162. package/build/esm/LineRipple/LineRipple.d.ts +3 -3
  163. package/build/esm/LineRipple/LineRipple.js +27 -18
  164. package/build/esm/LineRipple/LineRipple.js.map +1 -1
  165. package/build/esm/LineRipple/index.d.ts +0 -0
  166. package/build/esm/LineRipple/index.js +0 -0
  167. package/build/esm/LineRipple/index.js.map +0 -0
  168. package/build/esm/Link/Link.d.ts +3 -3
  169. package/build/esm/Link/Link.js +10 -9
  170. package/build/esm/Link/Link.js.map +1 -1
  171. package/build/esm/Link/index.d.ts +0 -0
  172. package/build/esm/Link/index.js +0 -0
  173. package/build/esm/Link/index.js.map +0 -0
  174. package/build/esm/List/List.d.ts +3 -3
  175. package/build/esm/List/List.js +20 -13
  176. package/build/esm/List/List.js.map +1 -1
  177. package/build/esm/List/index.d.ts +0 -0
  178. package/build/esm/List/index.js +0 -0
  179. package/build/esm/List/index.js.map +0 -0
  180. package/build/esm/ListItem/ListItem.d.ts +3 -3
  181. package/build/esm/ListItem/ListItem.js +72 -50
  182. package/build/esm/ListItem/ListItem.js.map +1 -1
  183. package/build/esm/ListItem/ListItemText.d.ts +1 -1
  184. package/build/esm/ListItem/ListItemText.js +10 -15
  185. package/build/esm/ListItem/ListItemText.js.map +1 -1
  186. package/build/esm/ListItem/context.d.ts +0 -0
  187. package/build/esm/ListItem/context.js +0 -0
  188. package/build/esm/ListItem/context.js.map +0 -0
  189. package/build/esm/ListItem/index.d.ts +0 -0
  190. package/build/esm/ListItem/index.js +0 -0
  191. package/build/esm/ListItem/index.js.map +0 -0
  192. package/build/esm/Menu/Menu.d.ts +10 -10
  193. package/build/esm/Menu/Menu.js +24 -27
  194. package/build/esm/Menu/Menu.js.map +1 -1
  195. package/build/esm/Menu/animation.d.ts +1 -1
  196. package/build/esm/Menu/animation.js +1 -1
  197. package/build/esm/Menu/animation.js.map +1 -1
  198. package/build/esm/Menu/index.d.ts +0 -0
  199. package/build/esm/Menu/index.js +0 -0
  200. package/build/esm/Menu/index.js.map +0 -0
  201. package/build/esm/NotchedOutline/NotchedOutline.d.ts +1 -1
  202. package/build/esm/NotchedOutline/NotchedOutline.js +25 -21
  203. package/build/esm/NotchedOutline/NotchedOutline.js.map +1 -1
  204. package/build/esm/NotchedOutline/context.d.ts +0 -0
  205. package/build/esm/NotchedOutline/context.js +6 -5
  206. package/build/esm/NotchedOutline/context.js.map +1 -1
  207. package/build/esm/NotchedOutline/index.d.ts +0 -0
  208. package/build/esm/NotchedOutline/index.js +0 -0
  209. package/build/esm/NotchedOutline/index.js.map +0 -0
  210. package/build/esm/NotchedOutline/styledComponents.d.ts +96 -50
  211. package/build/esm/NotchedOutline/styledComponents.js +58 -63
  212. package/build/esm/NotchedOutline/styledComponents.js.map +1 -1
  213. package/build/esm/Paper/Paper.d.ts +4 -3
  214. package/build/esm/Paper/Paper.js +15 -13
  215. package/build/esm/Paper/Paper.js.map +1 -1
  216. package/build/esm/Paper/index.d.ts +0 -0
  217. package/build/esm/Paper/index.js +0 -0
  218. package/build/esm/Paper/index.js.map +0 -0
  219. package/build/esm/ProgressSpinner/ProgressSpinner.d.ts +1 -1
  220. package/build/esm/ProgressSpinner/ProgressSpinner.js +16 -16
  221. package/build/esm/ProgressSpinner/ProgressSpinner.js.map +1 -1
  222. package/build/esm/ProgressSpinner/index.d.ts +0 -0
  223. package/build/esm/ProgressSpinner/index.js +0 -0
  224. package/build/esm/ProgressSpinner/index.js.map +0 -0
  225. package/build/esm/RadioButton/RadioButton.d.ts +1 -1
  226. package/build/esm/RadioButton/RadioButton.js +17 -20
  227. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  228. package/build/esm/RadioButton/RadioButtonIcon.d.ts +1 -1
  229. package/build/esm/RadioButton/RadioButtonIcon.js +7 -8
  230. package/build/esm/RadioButton/RadioButtonIcon.js.map +1 -1
  231. package/build/esm/RadioButton/RadioGroup.d.ts +3 -3
  232. package/build/esm/RadioButton/RadioGroup.js +5 -4
  233. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  234. package/build/esm/RadioButton/index.d.ts +0 -0
  235. package/build/esm/RadioButton/index.js +0 -0
  236. package/build/esm/RadioButton/index.js.map +0 -0
  237. package/build/esm/Ripple/Ripple.d.ts +1 -1
  238. package/build/esm/Ripple/Ripple.js +21 -20
  239. package/build/esm/Ripple/Ripple.js.map +1 -1
  240. package/build/esm/Ripple/RippleBox.d.ts +4 -4
  241. package/build/esm/Ripple/RippleBox.js +22 -15
  242. package/build/esm/Ripple/RippleBox.js.map +1 -1
  243. package/build/esm/Ripple/constants.d.ts +0 -0
  244. package/build/esm/Ripple/constants.js +7 -7
  245. package/build/esm/Ripple/constants.js.map +1 -1
  246. package/build/esm/Ripple/index.d.ts +0 -0
  247. package/build/esm/Ripple/index.js +0 -0
  248. package/build/esm/Ripple/index.js.map +0 -0
  249. package/build/esm/Ripple/keyframes.d.ts +1 -1
  250. package/build/esm/Ripple/keyframes.js +3 -3
  251. package/build/esm/Ripple/keyframes.js.map +1 -1
  252. package/build/esm/Ripple/useRipple.d.ts +0 -0
  253. package/build/esm/Ripple/useRipple.js +55 -48
  254. package/build/esm/Ripple/useRipple.js.map +1 -1
  255. package/build/esm/Ripple/useRippleHandlers.d.ts +1 -1
  256. package/build/esm/Ripple/useRippleHandlers.js +13 -15
  257. package/build/esm/Ripple/useRippleHandlers.js.map +1 -1
  258. package/build/esm/Ripple/useRippleSurface.d.ts +6 -5
  259. package/build/esm/Ripple/useRippleSurface.js +60 -37
  260. package/build/esm/Ripple/useRippleSurface.js.map +1 -1
  261. package/build/esm/Select/Select.d.ts +5 -5
  262. package/build/esm/Select/Select.js +72 -59
  263. package/build/esm/Select/Select.js.map +1 -1
  264. package/build/esm/Select/SelectIcon.d.ts +3 -3
  265. package/build/esm/Select/SelectIcon.js +8 -7
  266. package/build/esm/Select/SelectIcon.js.map +1 -1
  267. package/build/esm/Select/context.d.ts +0 -0
  268. package/build/esm/Select/context.js +7 -6
  269. package/build/esm/Select/context.js.map +1 -1
  270. package/build/esm/Select/defaultRender.d.ts +0 -0
  271. package/build/esm/Select/defaultRender.js +12 -10
  272. package/build/esm/Select/defaultRender.js.map +1 -1
  273. package/build/esm/Select/index.d.ts +0 -0
  274. package/build/esm/Select/index.js +0 -0
  275. package/build/esm/Select/index.js.map +0 -0
  276. package/build/esm/Select/styledComponents.d.ts +2 -2
  277. package/build/esm/Select/styledComponents.js +21 -20
  278. package/build/esm/Select/styledComponents.js.map +1 -1
  279. package/build/esm/SelectItem/SelectItem.d.ts +2 -2
  280. package/build/esm/SelectItem/SelectItem.js +18 -19
  281. package/build/esm/SelectItem/SelectItem.js.map +1 -1
  282. package/build/esm/SelectItem/index.d.ts +0 -0
  283. package/build/esm/SelectItem/index.js +0 -0
  284. package/build/esm/SelectItem/index.js.map +0 -0
  285. package/build/esm/SelectionControl/SelectionControlLabel.d.ts +3 -3
  286. package/build/esm/SelectionControl/SelectionControlLabel.js +7 -7
  287. package/build/esm/SelectionControl/SelectionControlLabel.js.map +1 -1
  288. package/build/esm/SelectionControl/SelectionControlText.d.ts +3 -3
  289. package/build/esm/SelectionControl/SelectionControlText.js +8 -8
  290. package/build/esm/SelectionControl/SelectionControlText.js.map +1 -1
  291. package/build/esm/SelectionControl/index.d.ts +0 -0
  292. package/build/esm/SelectionControl/index.js +0 -0
  293. package/build/esm/SelectionControl/index.js.map +0 -0
  294. package/build/esm/Skeleton/DelayAppearance.d.ts +4 -4
  295. package/build/esm/Skeleton/DelayAppearance.js +9 -9
  296. package/build/esm/Skeleton/DelayAppearance.js.map +1 -1
  297. package/build/esm/Skeleton/Skeleton.d.ts +3 -3
  298. package/build/esm/Skeleton/Skeleton.js +11 -10
  299. package/build/esm/Skeleton/Skeleton.js.map +1 -1
  300. package/build/esm/Skeleton/animation.d.ts +2 -2
  301. package/build/esm/Skeleton/animation.js +25 -22
  302. package/build/esm/Skeleton/animation.js.map +1 -1
  303. package/build/esm/Skeleton/index.d.ts +0 -0
  304. package/build/esm/Skeleton/index.js +0 -0
  305. package/build/esm/Skeleton/index.js.map +0 -0
  306. package/build/esm/Snackbar/Snackbar.d.ts +3 -3
  307. package/build/esm/Snackbar/Snackbar.js +24 -24
  308. package/build/esm/Snackbar/Snackbar.js.map +1 -1
  309. package/build/esm/Snackbar/Stack.d.ts +2 -3
  310. package/build/esm/Snackbar/Stack.js +78 -65
  311. package/build/esm/Snackbar/Stack.js.map +1 -1
  312. package/build/esm/Snackbar/index.d.ts +0 -0
  313. package/build/esm/Snackbar/index.js +0 -0
  314. package/build/esm/Snackbar/index.js.map +0 -0
  315. package/build/esm/Snackbar/useSnackbarAnimation.d.ts +1 -1
  316. package/build/esm/Snackbar/useSnackbarAnimation.js +113 -78
  317. package/build/esm/Snackbar/useSnackbarAnimation.js.map +1 -1
  318. package/build/esm/Switch/Switch.d.ts +3 -3
  319. package/build/esm/Switch/Switch.js +29 -28
  320. package/build/esm/Switch/Switch.js.map +1 -1
  321. package/build/esm/Switch/index.d.ts +0 -0
  322. package/build/esm/Switch/index.js +0 -0
  323. package/build/esm/Switch/index.js.map +0 -0
  324. package/build/esm/Switch/styledComponents.d.ts +2 -2
  325. package/build/esm/Switch/styledComponents.js +66 -40
  326. package/build/esm/Switch/styledComponents.js.map +1 -1
  327. package/build/esm/Tab/Tab.d.ts +4 -4
  328. package/build/esm/Tab/Tab.js +17 -19
  329. package/build/esm/Tab/Tab.js.map +1 -1
  330. package/build/esm/Tab/TabList.d.ts +3 -3
  331. package/build/esm/Tab/TabList.js +18 -19
  332. package/build/esm/Tab/TabList.js.map +1 -1
  333. package/build/esm/Tab/TabPanel.d.ts +3 -3
  334. package/build/esm/Tab/TabPanel.js +8 -11
  335. package/build/esm/Tab/TabPanel.js.map +1 -1
  336. package/build/esm/Tab/TabPanels.d.ts +0 -0
  337. package/build/esm/Tab/TabPanels.js +0 -0
  338. package/build/esm/Tab/TabPanels.js.map +0 -0
  339. package/build/esm/Tab/Tabs.d.ts +0 -0
  340. package/build/esm/Tab/Tabs.js +0 -0
  341. package/build/esm/Tab/Tabs.js.map +0 -0
  342. package/build/esm/Tab/context.d.ts +0 -0
  343. package/build/esm/Tab/context.js +6 -5
  344. package/build/esm/Tab/context.js.map +1 -1
  345. package/build/esm/Tab/index.d.ts +0 -0
  346. package/build/esm/Tab/index.js +0 -0
  347. package/build/esm/Tab/index.js.map +0 -0
  348. package/build/esm/TabIndicator/TabIndicator.d.ts +2 -2
  349. package/build/esm/TabIndicator/TabIndicator.js +22 -21
  350. package/build/esm/TabIndicator/TabIndicator.js.map +1 -1
  351. package/build/esm/TabIndicator/context.d.ts +0 -0
  352. package/build/esm/TabIndicator/context.js +6 -5
  353. package/build/esm/TabIndicator/context.js.map +1 -1
  354. package/build/esm/TabIndicator/index.d.ts +0 -0
  355. package/build/esm/TabIndicator/index.js +0 -0
  356. package/build/esm/TabIndicator/index.js.map +0 -0
  357. package/build/esm/Table/Table.d.ts +2 -2
  358. package/build/esm/Table/Table.js +8 -8
  359. package/build/esm/Table/Table.js.map +1 -1
  360. package/build/esm/Table/TableBody.d.ts +1 -1
  361. package/build/esm/Table/TableBody.js +4 -6
  362. package/build/esm/Table/TableBody.js.map +1 -1
  363. package/build/esm/Table/TableCell.d.ts +1 -1
  364. package/build/esm/Table/TableCell.js +6 -8
  365. package/build/esm/Table/TableCell.js.map +1 -1
  366. package/build/esm/Table/TableHead.d.ts +1 -1
  367. package/build/esm/Table/TableHead.js +5 -7
  368. package/build/esm/Table/TableHead.js.map +1 -1
  369. package/build/esm/Table/TableRow.d.ts +2 -2
  370. package/build/esm/Table/TableRow.js +5 -7
  371. package/build/esm/Table/TableRow.js.map +1 -1
  372. package/build/esm/Table/context.d.ts +0 -0
  373. package/build/esm/Table/context.js +6 -5
  374. package/build/esm/Table/context.js.map +1 -1
  375. package/build/esm/Table/index.d.ts +0 -0
  376. package/build/esm/Table/index.js +0 -0
  377. package/build/esm/Table/index.js.map +0 -0
  378. package/build/esm/Text/LoremIpsum.d.ts +1 -1
  379. package/build/esm/Text/LoremIpsum.js +6 -6
  380. package/build/esm/Text/LoremIpsum.js.map +1 -1
  381. package/build/esm/Text/Text.d.ts +3 -3
  382. package/build/esm/Text/Text.js +9 -9
  383. package/build/esm/Text/Text.js.map +1 -1
  384. package/build/esm/Text/index.d.ts +0 -0
  385. package/build/esm/Text/index.js +0 -0
  386. package/build/esm/Text/index.js.map +0 -0
  387. package/build/esm/TextField/FilledContainer.d.ts +3 -3
  388. package/build/esm/TextField/FilledContainer.js +70 -60
  389. package/build/esm/TextField/FilledContainer.js.map +1 -1
  390. package/build/esm/TextField/HelperText.d.ts +3 -3
  391. package/build/esm/TextField/HelperText.js +14 -13
  392. package/build/esm/TextField/HelperText.js.map +1 -1
  393. package/build/esm/TextField/IconContainer.d.ts +3 -3
  394. package/build/esm/TextField/IconContainer.js +17 -23
  395. package/build/esm/TextField/IconContainer.js.map +1 -1
  396. package/build/esm/TextField/Input.d.ts +3 -3
  397. package/build/esm/TextField/Input.js +30 -22
  398. package/build/esm/TextField/Input.js.map +1 -1
  399. package/build/esm/TextField/OutlinedContainer.d.ts +4 -4
  400. package/build/esm/TextField/OutlinedContainer.js +34 -25
  401. package/build/esm/TextField/OutlinedContainer.js.map +1 -1
  402. package/build/esm/TextField/TextField.d.ts +4 -4
  403. package/build/esm/TextField/TextField.js +59 -41
  404. package/build/esm/TextField/TextField.js.map +1 -1
  405. package/build/esm/TextField/consts.d.ts +5 -0
  406. package/build/esm/TextField/consts.js +6 -0
  407. package/build/esm/TextField/consts.js.map +1 -0
  408. package/build/esm/TextField/index.d.ts +0 -0
  409. package/build/esm/TextField/index.js +0 -0
  410. package/build/esm/TextField/index.js.map +0 -0
  411. package/build/esm/ThemeExplorer/ColorPicker.d.ts +4 -4
  412. package/build/esm/ThemeExplorer/ColorPicker.js +16 -16
  413. package/build/esm/ThemeExplorer/ColorPicker.js.map +1 -1
  414. package/build/esm/ThemeExplorer/TextFieldColorPicker.d.ts +2 -2
  415. package/build/esm/ThemeExplorer/TextFieldColorPicker.js +49 -29
  416. package/build/esm/ThemeExplorer/TextFieldColorPicker.js.map +1 -1
  417. package/build/esm/ThemeExplorer/ThemeColors.d.ts +1 -1
  418. package/build/esm/ThemeExplorer/ThemeColors.js +3 -3
  419. package/build/esm/ThemeExplorer/ThemeColors.js.map +1 -1
  420. package/build/esm/ThemeExplorer/components.d.ts +2 -1
  421. package/build/esm/ThemeExplorer/components.js +64 -56
  422. package/build/esm/ThemeExplorer/components.js.map +1 -1
  423. package/build/esm/ThemeExplorer/makeColorScheme.d.ts +1 -1
  424. package/build/esm/ThemeExplorer/makeColorScheme.js +0 -0
  425. package/build/esm/ThemeExplorer/makeColorScheme.js.map +1 -1
  426. package/build/esm/ThemeExplorer/useDeferredColor.d.ts +1 -1
  427. package/build/esm/ThemeExplorer/useDeferredColor.js +10 -3
  428. package/build/esm/ThemeExplorer/useDeferredColor.js.map +1 -1
  429. package/build/esm/ThemeExplorer/useLocalStorageCachedState.d.ts +0 -0
  430. package/build/esm/ThemeExplorer/useLocalStorageCachedState.js +9 -2
  431. package/build/esm/ThemeExplorer/useLocalStorageCachedState.js.map +1 -1
  432. package/build/esm/Tooltip/Tooltip.d.ts +3 -3
  433. package/build/esm/Tooltip/Tooltip.js +7 -8
  434. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  435. package/build/esm/Tooltip/index.d.ts +0 -0
  436. package/build/esm/Tooltip/index.js +0 -0
  437. package/build/esm/Tooltip/index.js.map +0 -0
  438. package/build/esm/color.d.ts +5 -4
  439. package/build/esm/color.js +26 -16
  440. package/build/esm/color.js.map +1 -1
  441. package/build/esm/css.d.ts +0 -0
  442. package/build/esm/css.js +0 -0
  443. package/build/esm/css.js.map +0 -0
  444. package/build/esm/hooks/useAnimation.d.ts +1 -1
  445. package/build/esm/hooks/useAnimation.js +54 -41
  446. package/build/esm/hooks/useAnimation.js.map +1 -1
  447. package/build/esm/index.d.ts +0 -0
  448. package/build/esm/index.js +0 -0
  449. package/build/esm/index.js.map +0 -0
  450. package/build/esm/theme/index.d.ts +0 -0
  451. package/build/esm/theme/index.js +0 -0
  452. package/build/esm/theme/index.js.map +0 -0
  453. package/build/esm/theme/theme.d.ts +96 -50
  454. package/build/esm/theme/theme.js +134 -94
  455. package/build/esm/theme/theme.js.map +1 -1
  456. package/build/esm/theme/typography-raleway.d.ts +0 -0
  457. package/build/esm/theme/typography-raleway.js +1 -1
  458. package/build/esm/theme/typography-raleway.js.map +1 -1
  459. package/build/esm/theme/typography-roboto.d.ts +0 -0
  460. package/build/esm/theme/typography-roboto.js +1 -1
  461. package/build/esm/theme/typography-roboto.js.map +1 -1
  462. package/build/esm/theme/useTheme.d.ts +1 -1
  463. package/build/esm/theme/useTheme.js +1 -1
  464. package/build/esm/theme/useTheme.js.map +1 -1
  465. package/build/tsconfig.tsbuildinfo +1 -1
  466. package/package.json +6 -4
  467. package/src/Alert/Alert.tsx +4 -2
  468. package/src/AppBar/AppBar.story.tsx +7 -6
  469. package/src/AppBar/AppBar.tsx +10 -9
  470. package/src/AppBar/AppBarButton.tsx +3 -1
  471. package/src/AppBar/context.ts +2 -1
  472. package/src/Badge/Badge.tsx +3 -1
  473. package/src/BaseLine/BaseLine.tsx +15 -11
  474. package/src/BottomSheet/BottomSheet.story.tsx +1 -0
  475. package/src/BottomSheet/BottomSheet.tsx +2 -1
  476. package/src/BottomSheet/BottomSheetSurface.tsx +8 -5
  477. package/src/Box/Box.tsx +21 -18
  478. package/src/Button/BaseButton.tsx +5 -2
  479. package/src/Button/Button.story.tsx +21 -33
  480. package/src/Button/Button.tsx +23 -8
  481. package/src/Button/ButtonGroup.story.tsx +106 -0
  482. package/src/Button/ButtonGroup.tsx +35 -0
  483. package/src/Button/FilledButton.tsx +41 -6
  484. package/src/Button/FloatingActionButton.tsx +9 -0
  485. package/src/Button/IconButton.tsx +2 -1
  486. package/src/Button/OutlinedButton.tsx +33 -4
  487. package/src/Button/SpinnerButton.story.tsx +10 -11
  488. package/src/Button/TransparentButton.tsx +35 -4
  489. package/src/Button/context.tsx +17 -0
  490. package/src/Button/index.ts +1 -0
  491. package/src/CheckBox/CheckBox.story.tsx +3 -2
  492. package/src/CheckBox/CheckBox.tsx +10 -6
  493. package/src/CheckBox/CheckBoxIcon.tsx +4 -2
  494. package/src/Chip/ButtonChip.tsx +47 -51
  495. package/src/Chip/Chip.story.tsx +48 -27
  496. package/src/Chip/ChipBase.tsx +44 -14
  497. package/src/Chip/ChoiceChip.tsx +28 -24
  498. package/src/ColorMode/ColorModeProvider.tsx +4 -2
  499. package/src/Combobox/Combobox.story.tsx +2 -1
  500. package/src/Combobox/Combobox.tsx +31 -18
  501. package/src/Dialog/Dialog.story.tsx +3 -1
  502. package/src/Dialog/Dialog.tsx +9 -4
  503. package/src/Dialog/DialogBackdrop.tsx +6 -6
  504. package/src/Dialog/DialogContainer.tsx +3 -1
  505. package/src/Dialog/DialogSurface.tsx +26 -9
  506. package/src/Dialog/Scrim.tsx +3 -1
  507. package/src/Divider/Divider.tsx +4 -2
  508. package/src/FloatingLabel/FloatingLabel.story.tsx +1 -0
  509. package/src/FloatingLabel/FloatingLabel.tsx +3 -5
  510. package/src/LineRipple/LineRipple.story.tsx +1 -0
  511. package/src/LineRipple/LineRipple.tsx +6 -3
  512. package/src/Link/Link.tsx +4 -2
  513. package/src/List/List.tsx +5 -2
  514. package/src/ListItem/ListItem.story.tsx +1 -0
  515. package/src/ListItem/ListItem.tsx +59 -34
  516. package/src/ListItem/ListItemText.tsx +4 -5
  517. package/src/Menu/Menu.tsx +22 -14
  518. package/src/Menu/animation.ts +1 -1
  519. package/src/NotchedOutline/NotchedOutline.story.tsx +3 -2
  520. package/src/NotchedOutline/NotchedOutline.tsx +2 -1
  521. package/src/NotchedOutline/styledComponents.ts +9 -8
  522. package/src/Paper/Paper.story.tsx +17 -3
  523. package/src/Paper/Paper.tsx +22 -5
  524. package/src/ProgressSpinner/ProgressSpinner.story.tsx +1 -0
  525. package/src/ProgressSpinner/ProgressSpinner.tsx +5 -2
  526. package/src/RadioButton/RadioButton.story.tsx +2 -1
  527. package/src/RadioButton/RadioButton.tsx +10 -8
  528. package/src/RadioButton/RadioButtonIcon.tsx +4 -3
  529. package/src/RadioButton/RadioGroup.tsx +5 -5
  530. package/src/Ripple/Ripple.story.tsx +9 -3
  531. package/src/Ripple/Ripple.tsx +3 -2
  532. package/src/Ripple/RippleBox.tsx +9 -4
  533. package/src/Ripple/keyframes.ts +2 -1
  534. package/src/Ripple/useRipple.ts +1 -0
  535. package/src/Ripple/useRippleHandlers.ts +3 -1
  536. package/src/Ripple/useRippleSurface.ts +39 -13
  537. package/src/Select/PaymentMethodSelect.story.tsx +323 -0
  538. package/src/Select/Select.story.tsx +27 -1
  539. package/src/Select/Select.tsx +16 -36
  540. package/src/Select/SelectIcon.tsx +8 -4
  541. package/src/Select/defaultRender.ts +13 -13
  542. package/src/Select/styledComponents.tsx +13 -7
  543. package/src/SelectItem/SelectItem.tsx +4 -2
  544. package/src/SelectionControl/SelectionControlLabel.tsx +6 -3
  545. package/src/SelectionControl/SelectionControlText.tsx +4 -2
  546. package/src/Skeleton/DelayAppearance.tsx +5 -3
  547. package/src/Skeleton/Skeleton.story.tsx +2 -2
  548. package/src/Skeleton/Skeleton.tsx +4 -2
  549. package/src/Skeleton/animation.ts +3 -2
  550. package/src/Snackbar/Snackbar.story.tsx +1 -0
  551. package/src/Snackbar/Snackbar.tsx +8 -6
  552. package/src/Snackbar/Stack.tsx +3 -3
  553. package/src/Snackbar/useSnackbarAnimation.ts +3 -1
  554. package/src/Switch/Switch.tsx +16 -11
  555. package/src/Switch/styledComponents.tsx +72 -22
  556. package/src/Tab/Tab.tsx +8 -4
  557. package/src/Tab/TabList.tsx +5 -5
  558. package/src/Tab/TabPanel.tsx +5 -5
  559. package/src/TabIndicator/TabIndicator.tsx +6 -3
  560. package/src/Table/Table.tsx +5 -2
  561. package/src/Table/TableBody.tsx +3 -1
  562. package/src/Table/TableCell.tsx +3 -1
  563. package/src/Table/TableHead.tsx +4 -2
  564. package/src/Table/TableRow.tsx +4 -2
  565. package/src/Text/LoremIpsum.tsx +2 -1
  566. package/src/Text/Text.tsx +4 -2
  567. package/src/TextField/FilledContainer.tsx +35 -13
  568. package/src/TextField/HelperText.tsx +3 -2
  569. package/src/TextField/IconContainer.tsx +7 -5
  570. package/src/TextField/Input.tsx +37 -12
  571. package/src/TextField/OutlinedContainer.tsx +23 -7
  572. package/src/TextField/TextField.story.tsx +15 -1
  573. package/src/TextField/TextField.tsx +6 -3
  574. package/src/TextField/consts.ts +7 -0
  575. package/src/ThemeExplorer/ColorPicker.tsx +104 -0
  576. package/src/ThemeExplorer/TextFieldColorPicker.tsx +115 -0
  577. package/src/ThemeExplorer/ThemeBuilder.story.tsx +165 -0
  578. package/src/ThemeExplorer/ThemeColors.tsx +89 -0
  579. package/src/ThemeExplorer/ThemeExplorer.story.tsx +43 -0
  580. package/src/ThemeExplorer/components.tsx +195 -0
  581. package/src/ThemeExplorer/makeColorScheme.tsx +74 -0
  582. package/src/ThemeExplorer/useDeferredColor.tsx +25 -0
  583. package/src/ThemeExplorer/useLocalStorageCachedState.ts +18 -0
  584. package/src/Tooltip/Tooltip.story.tsx +1 -0
  585. package/src/Tooltip/Tooltip.tsx +8 -4
  586. package/src/color.ts +36 -29
  587. package/src/hooks/useAnimation.ts +2 -1
  588. package/src/theme/theme.ts +131 -92
  589. package/src/theme/useTheme.ts +3 -1
  590. package/src/ListItem/context.ts +0 -13
@@ -1,15 +1,22 @@
1
1
  import { forwardRef } from 'react';
2
- import type * as React from 'react';
3
- import { Box, BoxProps } from '../Box';
4
- import { useTheme } from '../theme';
2
+ import * as React from 'react';
5
3
  import { rem } from 'polished';
6
- import { alpha, getDarkThemeBackgroundOverlay } from '../color';
4
+
5
+ import type { BoxProps } from '../Box';
6
+ import { Box } from '../Box';
7
+ import { useTheme } from '../theme';
8
+ import {
9
+ alpha,
10
+ getBackgroundOverlay,
11
+ getDarkThemeBackgroundOverlay,
12
+ } from '../color';
7
13
 
8
14
  export interface PaperProps extends BoxProps {
9
15
  as?: React.ElementType<any>;
10
16
  elevation?: number;
11
17
  outlined?: boolean;
12
18
  backgroundOverlay?: number | string;
19
+ darkThemeBackgroundOverlay?: number | string;
13
20
  children?: React.ReactNode;
14
21
  }
15
22
 
@@ -21,6 +28,7 @@ export const Paper = forwardRef<HTMLDivElement, PaperProps>(function Paper(
21
28
  outlined,
22
29
  elevation = 0,
23
30
  backgroundOverlay,
31
+ darkThemeBackgroundOverlay,
24
32
  __css = {},
25
33
  children,
26
34
  ...otherProps
@@ -43,7 +51,16 @@ export const Paper = forwardRef<HTMLDivElement, PaperProps>(function Paper(
43
51
  borderColor: alpha('on.surface', 0.12),
44
52
  }
45
53
  : {}),
46
- ...getDarkThemeBackgroundOverlay(theme, backgroundOverlay ?? elevation),
54
+ ...(backgroundOverlay
55
+ ? getBackgroundOverlay(theme, backgroundOverlay, 'primary')
56
+ : {}),
57
+ ...(darkThemeBackgroundOverlay
58
+ ? getDarkThemeBackgroundOverlay(
59
+ theme,
60
+ darkThemeBackgroundOverlay,
61
+ 'primary'
62
+ )
63
+ : {}),
47
64
  ...__css,
48
65
  }}
49
66
  {...otherProps}
@@ -1,4 +1,5 @@
1
1
  import { useEffect, useState } from 'react';
2
+
2
3
  import { ProgressSpinner } from './';
3
4
  import { Box } from '../Box';
4
5
 
@@ -1,8 +1,11 @@
1
- import { forwardRef, SVGAttributes } from 'react';
1
+ import type { SVGAttributes } from 'react';
2
+ import { forwardRef } from 'react';
2
3
  import { keyframes } from '@emotion/react';
3
- import { Box, BoxProps } from '../Box';
4
4
  import { rem } from 'polished';
5
5
 
6
+ import type { BoxProps } from '../Box';
7
+ import { Box } from '../Box';
8
+
6
9
  export type ProgressSpinnerProps = BoxProps & {
7
10
  progress?: number;
8
11
  thickness?: number;
@@ -1,5 +1,6 @@
1
1
  import { useState } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { RadioButton, RadioGroup, Box } from '../';
4
5
  // import './styles.css';
5
6
 
@@ -1,11 +1,13 @@
1
- import { forwardRef, InputHTMLAttributes } from 'react';
2
- import {
3
- RadioButton as RadioButtonCore,
4
- RadioButtonProps as RadioButtonCoreProps,
5
- } from '@basic-ui/core';
6
- import { Box, BoxProps } from '../Box';
7
- import { RippleBox, RippleBoxProps } from '../Ripple';
1
+ import type { InputHTMLAttributes } from 'react';
2
+ import { forwardRef } from 'react';
3
+ import type { RadioButtonProps as RadioButtonCoreProps } from '@basic-ui/core';
4
+ import { RadioButton as RadioButtonCore } from '@basic-ui/core';
8
5
  import { rem } from 'polished';
6
+
7
+ import type { BoxProps } from '../Box';
8
+ import { Box } from '../Box';
9
+ import type { RippleBoxProps } from '../Ripple';
10
+ import { RippleBox } from '../Ripple';
9
11
  import { alpha } from '../color';
10
12
  import { RadioButtonIcon } from './RadioButtonIcon';
11
13
  import { useTheme } from '../theme';
@@ -50,7 +52,7 @@ const RadioButtonInner = forwardRef<
50
52
  outline: 'none',
51
53
  },
52
54
  border: 'none',
53
- borderRadius: '50%',
55
+ borderRadius: 'full',
54
56
  zIndex: 1,
55
57
  position: 'absolute',
56
58
  ...__css,
@@ -1,6 +1,7 @@
1
1
  import { forwardRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
3
  import { rem } from 'polished';
4
+
4
5
  import { Box } from '../Box';
5
6
 
6
7
  export interface RadioButtonIconProps
@@ -19,7 +20,7 @@ export const RadioButtonIcon = forwardRef<HTMLDivElement, RadioButtonIconProps>(
19
20
  __css={{
20
21
  borderColor: 'currentColor',
21
22
  borderStyle: 'solid',
22
- borderRadius: '50%',
23
+ borderRadius: 'full',
23
24
  borderWidth: rem(2),
24
25
  width: '100%',
25
26
  height: '100%',
@@ -30,7 +31,7 @@ export const RadioButtonIcon = forwardRef<HTMLDivElement, RadioButtonIconProps>(
30
31
  <Box
31
32
  __css={{
32
33
  backgroundColor: 'currentColor',
33
- borderRadius: '50%',
34
+ borderRadius: 'full',
34
35
  width: '100%',
35
36
  height: '100%',
36
37
  transition:
@@ -1,9 +1,9 @@
1
1
  import { forwardRef } from 'react';
2
- import { Box, BoxProps } from '../Box';
3
- import {
4
- RadioGroup as RadioGroupCore,
5
- RadioGroupProps as RadioGroupCoreProps,
6
- } from '@basic-ui/core';
2
+ import type { RadioGroupProps as RadioGroupCoreProps } from '@basic-ui/core';
3
+ import { RadioGroup as RadioGroupCore } from '@basic-ui/core';
4
+
5
+ import type { BoxProps } from '../Box';
6
+ import { Box } from '../Box';
7
7
 
8
8
  export type RadioGroupProps = Omit<
9
9
  BoxProps,
@@ -1,10 +1,11 @@
1
1
  import { useRef, useState } from 'react';
2
+ import { get } from '@styled-system/css';
3
+
2
4
  import { Ripple, useRipple } from './';
3
5
  import { Box } from '../Box';
4
6
  import { Text } from '../Text';
5
7
  import { Button } from '../Button';
6
8
  import { useTheme } from '../theme';
7
- import { get } from '@styled-system/css';
8
9
 
9
10
  export default {
10
11
  title: 'helper components/Ripple',
@@ -14,7 +15,12 @@ const Example = () => {
14
15
  const theme = useTheme();
15
16
  const ref = useRef<HTMLDivElement>();
16
17
  const [textColor, setTextColor] = useState<string>(undefined);
17
- const { activate, deactivate, animation, style: rippleStyle } = useRipple({
18
+ const {
19
+ activate,
20
+ deactivate,
21
+ animation,
22
+ style: rippleStyle,
23
+ } = useRipple({
18
24
  opacity: 1,
19
25
  backgroundColor: get(theme, 'colors.primary'),
20
26
  });
@@ -34,7 +40,7 @@ const Example = () => {
34
40
  bg="#eee"
35
41
  sx={{
36
42
  position: 'relative',
37
- borderRadius: 30,
43
+ borderRadius: 'extra-large',
38
44
  overflow: 'hidden',
39
45
  willChange: 'transform',
40
46
  }}
@@ -1,5 +1,6 @@
1
1
  import styled from '@emotion/styled';
2
- import { CSSObject } from '@emotion/react';
2
+ import type { CSSObject } from '@emotion/react';
3
+
3
4
  import {
4
5
  RIPPLE_BACKGROUND_COLOR,
5
6
  RIPPLE_SIZE,
@@ -22,7 +23,7 @@ export const rippleStyle = ({
22
23
  backgroundColor: `var(${RIPPLE_BACKGROUND_COLOR})`,
23
24
  transformOrigin: 'center center',
24
25
  opacity: 0,
25
- borderRadius: '50%',
26
+ borderRadius: '999999px',
26
27
  animation,
27
28
  willChange: 'opacity,transform',
28
29
  });
@@ -1,7 +1,11 @@
1
- import { forwardRef, HTMLAttributes } from 'react';
2
- import type * as React from 'react';
3
- import { UseRippleSurfaceOptions, useRippleSurface } from './useRippleSurface';
4
- import { Box, BoxProps } from '../Box';
1
+ import type { HTMLAttributes } from 'react';
2
+ import { forwardRef } from 'react';
3
+ import * as React from 'react';
4
+
5
+ import type { UseRippleSurfaceOptions } from './useRippleSurface';
6
+ import { useRippleSurface } from './useRippleSurface';
7
+ import type { BoxProps } from '../Box';
8
+ import { Box } from '../Box';
5
9
 
6
10
  export type RippleBoxProps<
7
11
  H extends HTMLElement = HTMLDivElement,
@@ -28,6 +32,7 @@ export const RippleBox: <
28
32
  rippleColor, // eslint-disable-line @typescript-eslint/no-unused-vars
29
33
  center, // eslint-disable-line @typescript-eslint/no-unused-vars
30
34
  disabled, // eslint-disable-line @typescript-eslint/no-unused-vars
35
+ rippleEnabled, // eslint-disable-line @typescript-eslint/no-unused-vars
31
36
  style, // eslint-disable-line @typescript-eslint/no-unused-vars
32
37
  ...otherProps
33
38
  } = props;
@@ -1,5 +1,6 @@
1
1
  import { keyframes } from '@emotion/react';
2
- import { Keyframes } from '@emotion/serialize';
2
+ import type { Keyframes } from '@emotion/serialize';
3
+
3
4
  import {
4
5
  RIPPLE_TRANSLATE_START,
5
6
  RIPPLE_TRANSLATE_END,
@@ -1,4 +1,5 @@
1
1
  import { useState, useRef, useEffect } from 'react';
2
+
2
3
  import { radiusIn, opacityIn, opacityOut } from './keyframes';
3
4
  import {
4
5
  RIPPLE_TRANSLATE_START,
@@ -1,6 +1,8 @@
1
1
  import { useRef } from 'react';
2
2
  import type * as React from 'react';
3
- import { RippleOptions, useRipple } from './useRipple';
3
+
4
+ import type { RippleOptions } from './useRipple';
5
+ import { useRipple } from './useRipple';
4
6
 
5
7
  const disabledHandler = () => {
6
8
  /* When disabled, we don't wanna handle neither keyDown, nor pointerDown */
@@ -1,17 +1,19 @@
1
- import { CSSProperties } from 'react';
2
- import { useTheme } from '../theme';
1
+ import type { CSSProperties } from 'react';
3
2
  import { get } from '@styled-system/css';
3
+ import { wrapEvent } from '@basic-ui/core';
4
+
5
+ import { useTheme } from '../theme';
4
6
  import { rippleStyle } from './Ripple';
5
7
  import { useRippleHandlers } from './useRippleHandlers';
6
- import { wrapEvent } from '@basic-ui/core';
7
- import { SxStyleProp } from '../Box';
8
+ import type { SxStyleProp } from '../Box';
8
9
 
9
10
  export interface UseRippleSurfaceOptions<T extends HTMLElement> {
10
- baseOpacity?: string | number;
11
- hoverOpacity?: string | number;
12
- focusOpacity?: string | number;
13
- pressedOpacity?: string | number;
11
+ baseOpacity?: number;
12
+ hoverOpacity?: number;
13
+ focusOpacity?: number;
14
+ pressedOpacity?: number;
14
15
  rippleColor?: string;
16
+ rippleEnabled?: boolean;
15
17
  center?: boolean;
16
18
  disabled?: boolean;
17
19
  style?: CSSProperties;
@@ -35,6 +37,7 @@ export function useRippleSurface<T extends HTMLElement>(
35
37
  onPointerDown,
36
38
  style = {},
37
39
  disabled,
40
+ rippleEnabled = true,
38
41
  ...rippleProps
39
42
  } = opts;
40
43
 
@@ -84,18 +87,41 @@ export function useRippleSurface<T extends HTMLElement>(
84
87
  '&:hover::before': {
85
88
  opacity: hoverOpacity,
86
89
  },
87
- '&:focus::before': {
90
+ '&:focus-visible::before': {
88
91
  opacity: focusOpacity,
89
92
  },
90
- ['&:disabled::before,&:disabled:hover::before,&:disabled:focus::before,&:disabled:active::before,' +
91
- '&[data-disabled]::before,&[data-disabled]:hover::before,&[data-disabled]:focus::before,&[data-disabled]:active::before']: {
92
- opacity: 0,
93
+ ...(!rippleEnabled && {
94
+ '&:active::before': {
95
+ opacity: pressedOpacity,
96
+ },
97
+ }),
98
+ '&[aria-pressed="true"]::before': {
99
+ opacity: baseOpacity + pressedOpacity,
100
+ },
101
+ '&[aria-pressed="true"]:hover::before': {
102
+ opacity: pressedOpacity + hoverOpacity,
93
103
  },
104
+ '&[aria-pressed="true"]:focus-visible::before': {
105
+ opacity: pressedOpacity + focusOpacity,
106
+ },
107
+ ...(!rippleEnabled && {
108
+ '&[aria-pressed="true"]:active::before': {
109
+ opacity: pressedOpacity + pressedOpacity,
110
+ },
111
+ }),
112
+ ['&:disabled::before,&:disabled:hover::before,&:disabled:focus::before,&:disabled:active::before,' +
113
+ '&[data-disabled]::before,&[data-disabled]:hover::before,&[data-disabled]:focus::before,' +
114
+ '&[data-disabled]:active::before,&:disabled[aria-pressed="true"]::before']:
115
+ {
116
+ opacity: 0,
117
+ },
94
118
  '&:disabled,&[data-disabled]': {
95
119
  cursor: 'default',
96
120
  },
97
121
  // ripple
98
- '&::after': { ...rippleStyle({ animation }) },
122
+ ...(rippleEnabled && {
123
+ '&::after': { ...rippleStyle({ animation }) },
124
+ }),
99
125
  };
100
126
 
101
127
  return {
@@ -0,0 +1,323 @@
1
+ import { forwardRef, useState } from 'react';
2
+ import type { ReactElement, ComponentType } from 'react';
3
+
4
+ import type { SelectProps } from '../';
5
+ import { Box, Select, SelectItem } from '../';
6
+
7
+ export default {
8
+ title: 'components/Select/Complex',
9
+ };
10
+
11
+ const ApplePayMark = (props) => (
12
+ <svg
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ width={165.521}
15
+ height={105.965}
16
+ viewBox="0 0 166 106"
17
+ xmlSpace="preserve"
18
+ {...props}
19
+ >
20
+ <path d="M150.698 0H14.823c-.566 0-1.133 0-1.698.003-.477.004-.953.009-1.43.022-1.039.028-2.087.09-3.113.274a10.51 10.51 0 0 0-2.958.975 9.932 9.932 0 0 0-4.35 4.35 10.463 10.463 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696c-.013.477-.019.953-.022 1.43C0 13.69 0 14.256 0 14.823v76.318c0 .567 0 1.132.002 1.699.003.476.009.953.022 1.43.028 1.036.09 2.084.275 3.11a10.46 10.46 0 0 0 .974 2.96 9.897 9.897 0 0 0 1.83 2.52 9.874 9.874 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273.477.011.953.018 1.43.02.565.004 1.132.004 1.698.004h135.875c.565 0 1.132 0 1.697-.004a79.71 79.71 0 0 0 1.431-.02c1.037-.028 2.085-.09 3.113-.273a10.478 10.478 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11.013-.477.02-.954.022-1.43.004-.567.004-1.132.004-1.699V14.824c0-.567 0-1.133-.004-1.699a63.067 63.067 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.941 9.941 0 0 0-4.35-4.35A10.52 10.52 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71.413 71.413 0 0 0-1.431-.022C151.83 0 151.263 0 150.698 0z" />
21
+ <path
22
+ fill="#FFF"
23
+ d="m150.698 3.532 1.672.003c.452.003.905.008 1.36.02.792.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.392 6.392 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36.005.557.005 1.113.005 1.671v76.318c0 .558 0 1.114-.004 1.682-.002.45-.008.9-.02 1.35-.022.796-.065 1.725-.221 2.589a6.855 6.855 0 0 1-.645 1.975 6.397 6.397 0 0 1-2.808 2.807c-.6.306-1.228.512-1.971.645-.882.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019-.555.004-1.113.004-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a75.086 75.086 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a6.938 6.938 0 0 1-1.986-.65 6.337 6.337 0 0 1-1.622-1.18 6.355 6.355 0 0 1-1.178-1.623 6.935 6.935 0 0 1-.647-1.985c-.155-.863-.198-1.788-.22-2.578a66.017 66.017 0 0 1-.02-1.355l-.002-1.327V14.474l.002-1.325c.003-.453.008-.905.02-1.357.022-.792.065-1.717.222-2.587a6.924 6.924 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.622a6.385 6.385 0 0 1 1.624-1.18 6.96 6.96 0 0 1 1.98-.647c.865-.155 1.792-.198 2.586-.22.452-.012.905-.017 1.354-.02l1.677-.003h135.875"
24
+ />
25
+ <path d="M45.186 35.64c1.417-1.772 2.38-4.152 2.126-6.585-2.075.104-4.607 1.37-6.073 3.143-1.316 1.52-2.48 4-2.177 6.33 2.33.202 4.656-1.165 6.124-2.887M47.285 38.983c-3.382-.202-6.258 1.919-7.873 1.919-1.616 0-4.09-1.818-6.764-1.769-3.482.051-6.713 2.02-8.48 5.15-3.634 6.264-.959 15.556 2.575 20.657 1.717 2.524 3.785 5.303 6.51 5.203 2.575-.101 3.584-1.668 6.714-1.668 3.128 0 4.037 1.668 6.763 1.617 2.827-.05 4.594-2.525 6.31-5.051 1.969-2.877 2.775-5.655 2.825-5.808-.05-.05-5.45-2.122-5.5-8.333-.051-5.201 4.24-7.675 4.441-7.828-2.423-3.584-6.209-3.988-7.52-4.09M76.734 31.944c7.35 0 12.47 5.067 12.47 12.444 0 7.404-5.225 12.497-12.654 12.497h-8.14v12.943h-5.88V31.944h14.204zM68.41 51.949h6.747c5.12 0 8.034-2.756 8.034-7.534 0-4.778-2.914-7.509-8.008-7.509h-6.773V51.95zM90.74 61.979c0-4.831 3.702-7.798 10.266-8.166l7.56-.446v-2.126c0-3.072-2.074-4.91-5.539-4.91-3.282 0-5.33 1.575-5.828 4.043h-5.356c.315-4.988 4.568-8.664 11.394-8.664 6.695 0 10.974 3.545 10.974 9.084v19.034h-5.435v-4.542h-.13c-1.602 3.072-5.094 5.015-8.717 5.015-5.408 0-9.189-3.36-9.189-8.322zm17.826-2.494v-2.18l-6.8.42c-3.386.237-5.303 1.733-5.303 4.096 0 2.415 1.996 3.99 5.041 3.99 3.964 0 7.062-2.73 7.062-6.326zM119.342 79.989v-4.595c.419.105 1.364.105 1.837.105 2.625 0 4.043-1.102 4.909-3.938 0-.052.5-1.68.5-1.706l-9.977-27.646h6.143l6.984 22.474h.104l6.985-22.474h5.985l-10.344 29.063c-2.362 6.695-5.093 8.848-10.816 8.848-.473 0-1.891-.053-2.31-.131z" />
26
+ </svg>
27
+ );
28
+
29
+ const MastercardCard = (props) => (
30
+ <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" {...props}>
31
+ <g fill="none">
32
+ <path d="M0 0h32v32H0z" fill="#000" />
33
+ <path d="M13.02 10.505h5.923v10.857H13.02z" fill="#ff5f00" />
34
+ <path
35
+ d="M13.396 15.935a6.944 6.944 0 0 1 2.585-5.43c-2.775-2.224-6.76-1.9-9.156.745s-2.395 6.723 0 9.368 6.38 2.969 9.156.744a6.944 6.944 0 0 1-2.585-5.427z"
36
+ fill="#eb001b"
37
+ />
38
+ <path
39
+ d="M26.934 15.935c0 2.643-1.48 5.054-3.81 6.21s-5.105.851-7.143-.783a6.955 6.955 0 0 0 2.587-5.428c0-2.118-.954-4.12-2.587-5.429 2.038-1.633 4.81-1.937 7.142-.782s3.811 3.566 3.811 6.21z"
40
+ fill="#f79e1b"
41
+ />
42
+ </g>
43
+ </svg>
44
+ );
45
+
46
+ const IDEALLogo = (props) => (
47
+ <svg
48
+ id="Layer_1"
49
+ xmlns="http://www.w3.org/2000/svg"
50
+ x={0}
51
+ y={0}
52
+ viewBox="0 0 306.1 269.8"
53
+ style={{
54
+ enableBackground: 'new 0 0 306.1 269.8',
55
+ }}
56
+ xmlSpace="preserve"
57
+ {...props}
58
+ >
59
+ <style>{'.st0{fill:#fff}'}</style>
60
+ <path
61
+ className="st0"
62
+ d="M0 20v229.8c0 11 9 20 20 20h137.3c103.8 0 148.8-58.1 148.8-135.2C306.1 57.9 261.1 0 157.3 0H20C9 0 0 9 0 20z"
63
+ />
64
+ <path
65
+ d="M91.9 56.4v169.8h73.9c67.1 0 96.2-37.9 96.2-91.5 0-51.3-29.1-91.1-96.2-91.1h-61.1c-7.1 0-12.8 5.8-12.8 12.8z"
66
+ style={{
67
+ fill: '#c06',
68
+ }}
69
+ />
70
+ <path d="M157.3 251.5H37.9c-10.6 0-19.2-8.6-19.2-19.2V37.6c0-10.6 8.6-19.2 19.2-19.2h119.4c113.3 0 130.2 72.9 130.2 116.3 0 75.3-46.3 116.8-130.2 116.8zM37.9 24.8c-7.1 0-12.8 5.7-12.8 12.8v194.7c0 7.1 5.7 12.8 12.8 12.8h119.4c79.8 0 123.8-39.2 123.8-110.4 0-95.6-77.6-109.9-123.8-109.9H37.9z" />
71
+ <path
72
+ className="st0"
73
+ d="M117.9 111.8c2.6 0 5 .4 7.3 1.2 2.3.8 4.2 2.1 5.9 3.7 1.6 1.7 2.9 3.8 3.9 6.2.9 2.5 1.4 5.4 1.4 8.8 0 3-.4 5.7-1.1 8.2-.8 2.5-1.9 4.7-3.4 6.5-1.5 1.8-3.4 3.2-5.7 4.3-2.3 1-5 1.6-8.1 1.6h-17.5v-40.6h17.3zm-.6 33.1c1.3 0 2.5-.2 3.8-.6 1.2-.4 2.3-1.1 3.2-2.1.9-1 1.7-2.2 2.3-3.8.6-1.6.9-3.4.9-5.7 0-2-.2-3.9-.6-5.5-.4-1.6-1.1-3.1-2-4.2s-2.1-2.1-3.6-2.7c-1.5-.6-3.3-.9-5.5-.9h-6.4V145h7.9zM172.5 111.8v7.5h-21.4v8.7h19.7v6.9h-19.7v9.9H173v7.5h-30.8v-40.6h30.3zM203.1 111.8l15.2 40.6H209l-3.1-9h-15.2l-3.2 9h-9l15.3-40.6h9.3zm.5 24.9-5.1-14.9h-.1l-5.3 14.9h10.5zM232.8 111.8v33.1h19.8v7.5h-28.7v-40.6h8.9z"
74
+ />
75
+ <circle cx={58.5} cy={132.1} r={18.7} />
76
+ <path d="M72.6 226.2c-15.7 0-28.3-12.7-28.3-28.3v-22.1c0-7.8 6.3-14.2 14.2-14.2 7.8 0 14.2 6.3 14.2 14.2v50.4z" />
77
+ </svg>
78
+ );
79
+
80
+ const GooglePayLogo = (props) => (
81
+ <svg
82
+ width={752}
83
+ height={400}
84
+ fill="none"
85
+ viewBox="0 0 752 400"
86
+ xmlns="http://www.w3.org/2000/svg"
87
+ {...props}
88
+ >
89
+ <path
90
+ d="M552 0H200C90 0 0 90 0 200s90 200 200 200h352c110 0 200-90 200-200S662 0 552 0Z"
91
+ fill="#fff"
92
+ />
93
+ <path
94
+ d="M552 16.2c24.7 0 48.7 4.9 71.3 14.5 21.9 9.3 41.5 22.6 58.5 39.5 16.9 16.9 30.2 36.6 39.5 58.5 9.6 22.6 14.5 46.6 14.5 71.3 0 24.7-4.9 48.7-14.5 71.3-9.3 21.9-22.6 41.5-39.5 58.5-16.9 16.9-36.6 30.2-58.5 39.5-22.6 9.6-46.6 14.5-71.3 14.5H200c-24.7 0-48.7-4.9-71.3-14.5-21.9-9.3-41.5-22.6-58.5-39.5-16.9-16.9-30.2-36.6-39.5-58.5-9.6-22.6-14.5-46.6-14.5-71.3 0-24.7 4.9-48.7 14.5-71.3 9.3-21.9 22.6-41.5 39.5-58.5 16.9-16.9 36.6-30.2 58.5-39.5 22.6-9.6 46.6-14.5 71.3-14.5h352ZM552 0H200C90 0 0 90 0 200s90 200 200 200h352c110 0 200-90 200-200S662 0 552 0Z"
95
+ fill="#3C4043"
96
+ />
97
+ <path
98
+ d="M358.298 214.201v60.5h-19.2v-149.4h50.9c12.9 0 23.9 4.3 32.9 12.9 9.2 8.6 13.8 19.1 13.8 31.5 0 12.7-4.6 23.2-13.8 31.7-8.9 8.5-19.9 12.7-32.9 12.7h-31.7v.1Zm0-70.5v52.1h32.1c7.6 0 14-2.6 19-7.7 5.1-5.1 7.7-11.3 7.7-18.3 0-6.9-2.6-13-7.7-18.1-5-5.3-11.3-7.9-19-7.9h-32.1v-.1ZM486.897 169.101c14.2 0 25.4 3.8 33.6 11.4 8.2 7.6 12.3 18 12.3 31.2v63h-18.3v-14.2h-.8c-7.9 11.7-18.5 17.5-31.7 17.5-11.3 0-20.7-3.3-28.3-10-7.6-6.7-11.4-15-11.4-25 0-10.6 4-19 12-25.2 8-6.3 18.7-9.4 32-9.4 11.4 0 20.8 2.1 28.1 6.3v-4.4c0-6.7-2.6-12.3-7.9-17-5.3-4.7-11.5-7-18.6-7-10.7 0-19.2 4.5-25.4 13.6l-16.9-10.6c9.3-13.5 23.1-20.2 41.3-20.2Zm-24.8 74.2c0 5 2.1 9.2 6.4 12.5 4.2 3.3 9.2 5 14.9 5 8.1 0 15.3-3 21.6-9 6.3-6 9.5-13 9.5-21.1-6-4.7-14.3-7.1-25-7.1-7.8 0-14.3 1.9-19.5 5.6-5.3 3.9-7.9 8.6-7.9 14.1ZM637.196 172.4l-64 147.2h-19.8l23.8-51.5-42.2-95.7h20.9l30.4 73.4h.4l29.6-73.4h20.9Z"
99
+ fill="#3C4043"
100
+ />
101
+ <path
102
+ d="M281.928 202c0-6.26-.56-12.25-1.6-18.01h-80.48v33l46.35.01c-1.88 10.98-7.93 20.34-17.2 26.58v21.41h27.59c16.11-14.91 25.34-36.95 25.34-62.99Z"
103
+ fill="#4285F4"
104
+ />
105
+ <path
106
+ d="M229.009 243.581c-7.68 5.18-17.57 8.21-29.14 8.21-22.35 0-41.31-15.06-48.1-35.36h-28.46v22.08c14.1 27.98 43.08 47.18 76.56 47.18 23.14 0 42.58-7.61 56.73-20.71l-27.59-21.4Z"
107
+ fill="#34A853"
108
+ />
109
+ <path
110
+ d="M149.089 200.05c0-5.7.95-11.21 2.68-16.39v-22.08h-28.46c-5.83 11.57-9.11 24.63-9.11 38.47s3.29 26.9 9.11 38.47l28.46-22.08a51.657 51.657 0 0 1-2.68-16.39Z"
111
+ fill="#FABB05"
112
+ />
113
+ <path
114
+ d="M199.869 148.3c12.63 0 23.94 4.35 32.87 12.85l24.45-24.43c-14.85-13.83-34.21-22.32-57.32-22.32-33.47 0-62.46 19.2-76.56 47.18l28.46 22.08c6.79-20.3 25.75-35.36 48.1-35.36Z"
115
+ fill="#E94235"
116
+ />
117
+ </svg>
118
+ );
119
+
120
+ const svgByBrand: Record<string, ComponentType<any>> = {
121
+ amex: MastercardCard,
122
+ diners: MastercardCard,
123
+ discover: MastercardCard,
124
+ jcb: MastercardCard,
125
+ mastercard: MastercardCard,
126
+ unionpay: MastercardCard,
127
+ visa: MastercardCard,
128
+ unknown: MastercardCard,
129
+ };
130
+
131
+ export type PaymentMethodCard = {
132
+ type: 'card';
133
+ id: string;
134
+ last4: string;
135
+ brand: string;
136
+ };
137
+
138
+ export type PaymentMethodSepaDebit = {
139
+ type: 'sepa_debit';
140
+ id: string;
141
+ };
142
+
143
+ export type PaymentMethodIDEAL = {
144
+ type: 'ideal';
145
+ id: 'ideal';
146
+ };
147
+
148
+ export type PaymentMethodApplePay = {
149
+ type: 'apple_pay';
150
+ id: 'apple_pay';
151
+ };
152
+
153
+ export type PaymentMethodGooglePay = {
154
+ type: 'google_pay';
155
+ id: 'google_pay';
156
+ };
157
+
158
+ export type PaymentMethodNewCard = {
159
+ type: 'new_card';
160
+ id: 'new_card';
161
+ };
162
+
163
+ export type PaymentMethod =
164
+ | PaymentMethodCard
165
+ | PaymentMethodIDEAL
166
+ | PaymentMethodSepaDebit
167
+ | PaymentMethodApplePay
168
+ | PaymentMethodGooglePay
169
+ | PaymentMethodNewCard;
170
+
171
+ export interface PaymentMethodSelectProps {
172
+ paymentMethods: PaymentMethod[];
173
+ value: string;
174
+ onChange: SelectProps['onChange'];
175
+ }
176
+
177
+ const logoWidth = 32;
178
+ const logoHeight = 24;
179
+ const LogoWrapper = ({ children }: { children: ReactElement }) => (
180
+ <Box
181
+ sx={{
182
+ mr: 2,
183
+ borderRadius: '2px',
184
+ overflow: 'hidden',
185
+ width: logoWidth,
186
+ height: logoHeight,
187
+ minWidth: logoWidth,
188
+ minHeight: logoHeight,
189
+ '& > svg': { width: logoWidth, height: logoWidth },
190
+ display: 'inline-flex',
191
+ alignItems: 'center',
192
+ justifyContent: 'center',
193
+ }}
194
+ >
195
+ {children}
196
+ </Box>
197
+ );
198
+
199
+ function SelectItemContent(props: PaymentMethod): ReactElement {
200
+ if (props.type === 'card') {
201
+ const CardIcon = svgByBrand[props.brand] || svgByBrand['unknown'];
202
+ return (
203
+ <>
204
+ <LogoWrapper>
205
+ <CardIcon />
206
+ </LogoWrapper>
207
+ {props.id} •••• {props.last4}
208
+ </>
209
+ );
210
+ }
211
+ if (props.type === 'ideal') {
212
+ return (
213
+ <>
214
+ <LogoWrapper>
215
+ <IDEALLogo />
216
+ </LogoWrapper>
217
+ iDEAL
218
+ </>
219
+ );
220
+ }
221
+ if (props.type === 'apple_pay') {
222
+ return (
223
+ <>
224
+ <LogoWrapper>
225
+ <ApplePayMark />
226
+ </LogoWrapper>
227
+ Apple Pay
228
+ </>
229
+ );
230
+ }
231
+ if (props.type === 'google_pay') {
232
+ return (
233
+ <>
234
+ <LogoWrapper>
235
+ <GooglePayLogo />
236
+ </LogoWrapper>
237
+ Google Pay
238
+ </>
239
+ );
240
+ }
241
+ if (props.type === 'sepa_debit') {
242
+ return (
243
+ <>
244
+ <LogoWrapper>
245
+ <IDEALLogo />
246
+ </LogoWrapper>
247
+ Direct debit
248
+ </>
249
+ );
250
+ }
251
+ if (props.type === 'new_card') {
252
+ return <>Add new card...</>;
253
+ }
254
+ return <>Unknown payment method</>;
255
+ }
256
+
257
+ const PaymentMethodSelect = forwardRef<
258
+ HTMLButtonElement | HTMLSelectElement,
259
+ PaymentMethodSelectProps
260
+ >(function PaymentMethodSelect(props, ref) {
261
+ const { onChange, paymentMethods, value } = props;
262
+ return (
263
+ <Select
264
+ ref={ref}
265
+ label="Payment method"
266
+ variant="outlined"
267
+ onChange={onChange}
268
+ value={value}
269
+ >
270
+ {paymentMethods.map((m) => (
271
+ <SelectItem value={m.id} key={m.id}>
272
+ <Box display="inline-flex" alignItems="center">
273
+ <SelectItemContent {...m} />
274
+ </Box>
275
+ </SelectItem>
276
+ ))}
277
+ </Select>
278
+ );
279
+ });
280
+
281
+ export const PaymentMethodSelectControlled = () => {
282
+ const paymentMethods: PaymentMethod[] = [
283
+ {
284
+ type: 'apple_pay',
285
+ id: 'apple_pay',
286
+ },
287
+ {
288
+ type: 'google_pay',
289
+ id: 'google_pay',
290
+ },
291
+ { type: 'ideal', id: 'ideal' },
292
+ ];
293
+ for (const testCard of [
294
+ 'amex',
295
+ 'diners',
296
+ 'discover',
297
+ 'jcb',
298
+ 'mastercard',
299
+ 'unionpay',
300
+ 'visa',
301
+ 'unknown',
302
+ ]) {
303
+ for (let i = 0; i < 10; i++) {
304
+ paymentMethods.push({
305
+ type: 'card',
306
+ id: testCard + `_${i}`,
307
+ brand: testCard,
308
+ last4: '1234',
309
+ });
310
+ }
311
+ }
312
+ const [value, setValue] = useState(paymentMethods[0].id);
313
+
314
+ console.log({ value });
315
+
316
+ return (
317
+ <PaymentMethodSelect
318
+ value={value}
319
+ onChange={(_, v) => setValue(v)}
320
+ paymentMethods={paymentMethods}
321
+ />
322
+ );
323
+ };