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

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 (560) hide show
  1. package/README.md +3 -3
  2. package/build/cjs/index.js +10 -10
  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/ColorMode/ColorModeProvider.d.ts +7 -0
  75. package/build/esm/ColorMode/ColorModeProvider.js +71 -0
  76. package/build/esm/ColorMode/ColorModeProvider.js.map +1 -0
  77. package/build/esm/ColorMode/color-mode.d.ts +8 -0
  78. package/build/esm/ColorMode/color-mode.js +12 -0
  79. package/build/esm/ColorMode/color-mode.js.map +1 -0
  80. package/build/esm/ColorMode/color-vars.d.ts +4 -0
  81. package/build/esm/ColorMode/color-vars.js +58 -0
  82. package/build/esm/ColorMode/color-vars.js.map +1 -0
  83. package/build/esm/ColorMode/constants.d.ts +2 -0
  84. package/build/esm/ColorMode/constants.js +4 -0
  85. package/build/esm/ColorMode/constants.js.map +1 -0
  86. package/build/esm/ColorMode/index.d.ts +4 -0
  87. package/build/esm/ColorMode/index.js +5 -0
  88. package/build/esm/ColorMode/index.js.map +1 -0
  89. package/build/esm/Combobox/Combobox.d.ts +23 -23
  90. package/build/esm/Combobox/Combobox.js.map +1 -1
  91. package/build/esm/Combobox/index.d.ts +1 -1
  92. package/build/esm/Combobox/index.js.map +1 -1
  93. package/build/esm/Dialog/Dialog.d.ts +20 -20
  94. package/build/esm/Dialog/Dialog.js.map +1 -1
  95. package/build/esm/Dialog/DialogBackdrop.d.ts +7 -7
  96. package/build/esm/Dialog/DialogBackdrop.js.map +1 -1
  97. package/build/esm/Dialog/DialogContainer.d.ts +4 -4
  98. package/build/esm/Dialog/DialogContainer.js.map +1 -1
  99. package/build/esm/Dialog/DialogSurface.d.ts +7 -7
  100. package/build/esm/Dialog/DialogSurface.js.map +1 -1
  101. package/build/esm/Dialog/Scrim.d.ts +4 -4
  102. package/build/esm/Dialog/Scrim.js.map +1 -1
  103. package/build/esm/Dialog/index.d.ts +2 -2
  104. package/build/esm/Dialog/index.js.map +1 -1
  105. package/build/esm/Dialog/useDialogAnimation.d.ts +824 -824
  106. package/build/esm/Dialog/useDialogAnimation.js.map +1 -1
  107. package/build/esm/Divider/Divider.d.ts +7 -7
  108. package/build/esm/Divider/Divider.js.map +1 -1
  109. package/build/esm/Divider/index.d.ts +1 -1
  110. package/build/esm/Divider/index.js.map +1 -1
  111. package/build/esm/FloatingLabel/FloatingLabel.d.ts +13 -13
  112. package/build/esm/FloatingLabel/FloatingLabel.js.map +1 -1
  113. package/build/esm/FloatingLabel/index.d.ts +1 -1
  114. package/build/esm/FloatingLabel/index.js.map +1 -1
  115. package/build/esm/LineRipple/LineRipple.d.ts +9 -9
  116. package/build/esm/LineRipple/LineRipple.js.map +1 -1
  117. package/build/esm/LineRipple/index.d.ts +1 -1
  118. package/build/esm/LineRipple/index.js.map +1 -1
  119. package/build/esm/Link/Link.d.ts +9 -9
  120. package/build/esm/Link/Link.js.map +1 -1
  121. package/build/esm/Link/index.d.ts +1 -1
  122. package/build/esm/Link/index.js.map +1 -1
  123. package/build/esm/List/List.d.ts +8 -8
  124. package/build/esm/List/List.js.map +1 -1
  125. package/build/esm/List/index.d.ts +1 -1
  126. package/build/esm/List/index.js.map +1 -1
  127. package/build/esm/ListItem/ListItem.d.ts +14 -14
  128. package/build/esm/ListItem/ListItem.js.map +1 -1
  129. package/build/esm/ListItem/ListItemText.d.ts +7 -7
  130. package/build/esm/ListItem/ListItemText.js.map +1 -1
  131. package/build/esm/ListItem/context.d.ts +7 -0
  132. package/build/esm/ListItem/context.js +11 -0
  133. package/build/esm/ListItem/context.js.map +1 -0
  134. package/build/esm/ListItem/index.d.ts +2 -2
  135. package/build/esm/ListItem/index.js.map +1 -1
  136. package/build/esm/Menu/Menu.d.ts +18 -18
  137. package/build/esm/Menu/Menu.js.map +1 -1
  138. package/build/esm/Menu/animation.d.ts +2 -2
  139. package/build/esm/Menu/animation.js.map +1 -1
  140. package/build/esm/Menu/index.d.ts +2 -2
  141. package/build/esm/Menu/index.js.map +1 -1
  142. package/build/esm/NavRail/NavRailItem.d.ts +15 -15
  143. package/build/esm/NavRail/NavRailItem.js.map +1 -1
  144. package/build/esm/NavRail/icons/test-icons.d.ts +4 -4
  145. package/build/esm/NavRail/icons/test-icons.js.map +1 -1
  146. package/build/esm/NavRail/index.d.ts +1 -1
  147. package/build/esm/NavRail/index.js.map +1 -1
  148. package/build/esm/NotchedOutline/NotchedOutline.d.ts +14 -14
  149. package/build/esm/NotchedOutline/NotchedOutline.js.map +1 -1
  150. package/build/esm/NotchedOutline/context.d.ts +6 -6
  151. package/build/esm/NotchedOutline/context.js.map +1 -1
  152. package/build/esm/NotchedOutline/index.d.ts +1 -1
  153. package/build/esm/NotchedOutline/index.js.map +1 -1
  154. package/build/esm/NotchedOutline/styledComponents.d.ts +575 -575
  155. package/build/esm/NotchedOutline/styledComponents.js +1 -1
  156. package/build/esm/NotchedOutline/styledComponents.js.map +1 -1
  157. package/build/esm/Paper/Paper.d.ts +11 -11
  158. package/build/esm/Paper/Paper.js.map +1 -1
  159. package/build/esm/Paper/index.d.ts +1 -1
  160. package/build/esm/Paper/index.js.map +1 -1
  161. package/build/esm/Popover/Popover.d.ts +14 -14
  162. package/build/esm/Popover/PopoverContainer.d.ts +4 -4
  163. package/build/esm/Popover/PopoverSurface.d.ts +5 -5
  164. package/build/esm/Popover/PopoverSurface.js.map +1 -1
  165. package/build/esm/Popover/index.d.ts +1 -1
  166. package/build/esm/Popover/index.js.map +1 -1
  167. package/build/esm/ProgressSpinner/ProgressSpinner.d.ts +8 -8
  168. package/build/esm/ProgressSpinner/ProgressSpinner.js.map +1 -1
  169. package/build/esm/ProgressSpinner/index.d.ts +1 -1
  170. package/build/esm/ProgressSpinner/index.js.map +1 -1
  171. package/build/esm/RadioButton/RadioButton.d.ts +4 -4
  172. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  173. package/build/esm/RadioButton/RadioButtonIcon.d.ts +6 -6
  174. package/build/esm/RadioButton/RadioButtonIcon.js.map +1 -1
  175. package/build/esm/RadioButton/RadioGroup.d.ts +5 -5
  176. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  177. package/build/esm/RadioButton/index.d.ts +2 -2
  178. package/build/esm/RadioButton/index.js.map +1 -1
  179. package/build/esm/Ripple/Ripple.d.ts +11 -11
  180. package/build/esm/Ripple/Ripple.js +1 -1
  181. package/build/esm/Ripple/Ripple.js.map +1 -1
  182. package/build/esm/Ripple/RippleBox.d.ts +5 -5
  183. package/build/esm/Ripple/RippleBox.js.map +1 -1
  184. package/build/esm/Ripple/constants.d.ts +7 -7
  185. package/build/esm/Ripple/constants.js.map +1 -1
  186. package/build/esm/Ripple/index.d.ts +5 -5
  187. package/build/esm/Ripple/index.js.map +1 -1
  188. package/build/esm/Ripple/keyframes.d.ts +4 -4
  189. package/build/esm/Ripple/keyframes.js.map +1 -1
  190. package/build/esm/Ripple/useRipple.d.ts +14 -14
  191. package/build/esm/Ripple/useRipple.js.map +1 -1
  192. package/build/esm/Ripple/useRippleHandlers.d.ts +8 -8
  193. package/build/esm/Ripple/useRippleHandlers.js.map +1 -1
  194. package/build/esm/Ripple/useRippleSurface.d.ts +787 -787
  195. package/build/esm/Ripple/useRippleSurface.js.map +1 -1
  196. package/build/esm/Select/CustomContainerExample.d.ts +3 -3
  197. package/build/esm/Select/CustomContainerExample.js.map +1 -1
  198. package/build/esm/Select/Select.d.ts +32 -32
  199. package/build/esm/Select/Select.js.map +1 -1
  200. package/build/esm/Select/SelectIcon.d.ts +6 -6
  201. package/build/esm/Select/SelectIcon.js.map +1 -1
  202. package/build/esm/Select/context.d.ts +9 -9
  203. package/build/esm/Select/context.js.map +1 -1
  204. package/build/esm/Select/defaultRender.d.ts +3 -3
  205. package/build/esm/Select/defaultRender.js.map +1 -1
  206. package/build/esm/Select/index.d.ts +1 -1
  207. package/build/esm/Select/index.js.map +1 -1
  208. package/build/esm/Select/styledComponents.d.ts +15 -15
  209. package/build/esm/Select/styledComponents.js.map +1 -1
  210. package/build/esm/SelectItem/SelectItem.d.ts +11 -11
  211. package/build/esm/SelectItem/SelectItem.js.map +1 -1
  212. package/build/esm/SelectItem/index.d.ts +1 -1
  213. package/build/esm/SelectItem/index.js.map +1 -1
  214. package/build/esm/SelectionControl/SelectionControlLabel.d.ts +7 -7
  215. package/build/esm/SelectionControl/SelectionControlLabel.js.map +1 -1
  216. package/build/esm/SelectionControl/SelectionControlText.d.ts +8 -8
  217. package/build/esm/SelectionControl/SelectionControlText.js.map +1 -1
  218. package/build/esm/SelectionControl/index.d.ts +2 -2
  219. package/build/esm/SelectionControl/index.js.map +1 -1
  220. package/build/esm/Skeleton/DelayAppearance.d.ts +13 -13
  221. package/build/esm/Skeleton/DelayAppearance.js +3 -3
  222. package/build/esm/Skeleton/DelayAppearance.js.map +1 -1
  223. package/build/esm/Skeleton/Skeleton.d.ts +9 -9
  224. package/build/esm/Skeleton/Skeleton.js.map +1 -1
  225. package/build/esm/Skeleton/animation.d.ts +8 -8
  226. package/build/esm/Skeleton/animation.js.map +1 -1
  227. package/build/esm/Skeleton/index.d.ts +2 -2
  228. package/build/esm/Skeleton/index.js.map +1 -1
  229. package/build/esm/Slider/Slider.d.ts +17 -17
  230. package/build/esm/Slider/Slider.js.map +1 -1
  231. package/build/esm/Slider/index.d.ts +1 -1
  232. package/build/esm/Slider/index.js.map +1 -1
  233. package/build/esm/Snackbar/Snackbar.d.ts +8 -8
  234. package/build/esm/Snackbar/Snackbar.js.map +1 -1
  235. package/build/esm/Snackbar/Stack.d.ts +31 -31
  236. package/build/esm/Snackbar/Stack.js.map +1 -1
  237. package/build/esm/Snackbar/index.d.ts +3 -3
  238. package/build/esm/Snackbar/index.js.map +1 -1
  239. package/build/esm/Snackbar/useSnackbarAnimation.d.ts +6 -6
  240. package/build/esm/Snackbar/useSnackbarAnimation.js.map +1 -1
  241. package/build/esm/Switch/Switch.d.ts +13 -13
  242. package/build/esm/Switch/Switch.js.map +1 -1
  243. package/build/esm/Switch/index.d.ts +1 -1
  244. package/build/esm/Switch/index.js.map +1 -1
  245. package/build/esm/Switch/styledComponents.d.ts +13 -13
  246. package/build/esm/Switch/styledComponents.js.map +1 -1
  247. package/build/esm/Tab/Tab.d.ts +5 -5
  248. package/build/esm/Tab/Tab.js.map +1 -1
  249. package/build/esm/Tab/TabList.d.ts +10 -10
  250. package/build/esm/Tab/TabList.js.map +1 -1
  251. package/build/esm/Tab/TabPanel.d.ts +5 -5
  252. package/build/esm/Tab/TabPanel.js.map +1 -1
  253. package/build/esm/Tab/TabPanels.d.ts +4 -4
  254. package/build/esm/Tab/TabPanels.js.map +1 -1
  255. package/build/esm/Tab/Tabs.d.ts +4 -4
  256. package/build/esm/Tab/Tabs.js.map +1 -1
  257. package/build/esm/Tab/context.d.ts +9 -9
  258. package/build/esm/Tab/context.js.map +1 -1
  259. package/build/esm/Tab/index.d.ts +5 -5
  260. package/build/esm/Tab/index.js.map +1 -1
  261. package/build/esm/TabIndicator/TabIndicator.d.ts +9 -9
  262. package/build/esm/TabIndicator/TabIndicator.js.map +1 -1
  263. package/build/esm/TabIndicator/context.d.ts +6 -6
  264. package/build/esm/TabIndicator/context.js.map +1 -1
  265. package/build/esm/TabIndicator/index.d.ts +2 -2
  266. package/build/esm/TabIndicator/index.js.map +1 -1
  267. package/build/esm/Table/Table.d.ts +4 -4
  268. package/build/esm/Table/Table.js.map +1 -1
  269. package/build/esm/Table/TableBody.d.ts +4 -4
  270. package/build/esm/Table/TableBody.js.map +1 -1
  271. package/build/esm/Table/TableCell.d.ts +4 -4
  272. package/build/esm/Table/TableCell.js.map +1 -1
  273. package/build/esm/Table/TableHead.d.ts +4 -4
  274. package/build/esm/Table/TableHead.js.map +1 -1
  275. package/build/esm/Table/TableRow.d.ts +4 -4
  276. package/build/esm/Table/TableRow.js.map +1 -1
  277. package/build/esm/Table/context.d.ts +3 -3
  278. package/build/esm/Table/context.js.map +1 -1
  279. package/build/esm/Table/index.d.ts +5 -5
  280. package/build/esm/Table/index.js.map +1 -1
  281. package/build/esm/Text/LoremIpsum.d.ts +4 -4
  282. package/build/esm/Text/LoremIpsum.js.map +1 -1
  283. package/build/esm/Text/Text.d.ts +11 -11
  284. package/build/esm/Text/Text.js +2 -2
  285. package/build/esm/Text/Text.js.map +1 -1
  286. package/build/esm/Text/index.d.ts +1 -1
  287. package/build/esm/Text/index.js.map +1 -1
  288. package/build/esm/TextField/FilledContainer.d.ts +18 -18
  289. package/build/esm/TextField/FilledContainer.js.map +1 -1
  290. package/build/esm/TextField/HelperText.d.ts +10 -10
  291. package/build/esm/TextField/HelperText.js.map +1 -1
  292. package/build/esm/TextField/IconContainer.d.ts +5 -5
  293. package/build/esm/TextField/IconContainer.js.map +1 -1
  294. package/build/esm/TextField/Input.d.ts +11 -11
  295. package/build/esm/TextField/OutlinedContainer.d.ts +17 -17
  296. package/build/esm/TextField/OutlinedContainer.js.map +1 -1
  297. package/build/esm/TextField/TextField.d.ts +19 -19
  298. package/build/esm/TextField/consts.d.ts +5 -5
  299. package/build/esm/TextField/consts.js.map +1 -1
  300. package/build/esm/TextField/index.d.ts +4 -4
  301. package/build/esm/TextField/index.js.map +1 -1
  302. package/build/esm/ThemeExplorer/BorderSlider.d.ts +7 -7
  303. package/build/esm/ThemeExplorer/BorderSlider.js.map +1 -1
  304. package/build/esm/ThemeExplorer/ColorPicker.d.ts +8 -8
  305. package/build/esm/ThemeExplorer/ColorPicker.js.map +1 -1
  306. package/build/esm/ThemeExplorer/ColorSchemePicker.d.ts +10 -10
  307. package/build/esm/ThemeExplorer/ColorSchemePicker.js.map +1 -1
  308. package/build/esm/ThemeExplorer/FontAutoComplete.d.ts +9 -9
  309. package/build/esm/ThemeExplorer/FontAutoComplete.js.map +1 -1
  310. package/build/esm/ThemeExplorer/TextFieldColorPicker.d.ts +9 -9
  311. package/build/esm/ThemeExplorer/TextFieldColorPicker.js.map +1 -1
  312. package/build/esm/ThemeExplorer/ThemeBuilder.d.ts +11 -11
  313. package/build/esm/ThemeExplorer/ThemeBuilder.js.map +1 -1
  314. package/build/esm/ThemeExplorer/ThemeColors.d.ts +5 -5
  315. package/build/esm/ThemeExplorer/ThemeColors.js.map +1 -1
  316. package/build/esm/ThemeExplorer/components.d.ts +31 -31
  317. package/build/esm/ThemeExplorer/components.js.map +1 -1
  318. package/build/esm/ThemeExplorer/googleFonts.d.ts +1 -1
  319. package/build/esm/ThemeExplorer/googleFonts.js.map +1 -1
  320. package/build/esm/ThemeExplorer/index.d.ts +1 -1
  321. package/build/esm/ThemeExplorer/index.js.map +1 -1
  322. package/build/esm/ThemeExplorer/makeColorScheme.d.ts +98 -98
  323. package/build/esm/ThemeExplorer/makeColorScheme.js.map +1 -1
  324. package/build/esm/ThemeExplorer/makeTailwindTheme.d.ts +2 -2
  325. package/build/esm/ThemeExplorer/makeTailwindTheme.js.map +1 -1
  326. package/build/esm/ThemeExplorer/updateGoogleFonts.js.map +1 -1
  327. package/build/esm/ThemeExplorer/useDeferredColor.d.ts +3 -3
  328. package/build/esm/ThemeExplorer/useDeferredColor.js.map +1 -1
  329. package/build/esm/ThemeExplorer/useLocalStorageCachedState.d.ts +1 -1
  330. package/build/esm/ThemeExplorer/useLocalStorageCachedState.js.map +1 -1
  331. package/build/esm/Tooltip/Tooltip.d.ts +8 -8
  332. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  333. package/build/esm/Tooltip/index.d.ts +1 -1
  334. package/build/esm/Tooltip/index.js.map +1 -1
  335. package/build/esm/color.d.ts +8 -8
  336. package/build/esm/color.js.map +1 -1
  337. package/build/esm/css.d.ts +1 -1
  338. package/build/esm/css.js.map +1 -1
  339. package/build/esm/hooks/useAnimation.d.ts +20 -20
  340. package/build/esm/hooks/useAnimation.js.map +1 -1
  341. package/build/esm/index.d.ts +41 -41
  342. package/build/esm/index.js.map +1 -1
  343. package/build/esm/motion.d.ts +7 -7
  344. package/build/esm/motion.js.map +1 -1
  345. package/build/esm/tailwind/extendColors.d.ts +5 -5
  346. package/build/esm/tailwind/extendColors.js.map +1 -1
  347. package/build/esm/tailwind/index.d.ts +8 -8
  348. package/build/esm/tailwind/index.js.map +1 -1
  349. package/build/esm/theme/index.d.ts +2 -2
  350. package/build/esm/theme/index.js.map +1 -1
  351. package/build/esm/theme/theme.d.ts +562 -562
  352. package/build/esm/theme/theme.js.map +1 -1
  353. package/build/esm/theme/typography-raleway.d.ts +112 -112
  354. package/build/esm/theme/typography-raleway.js.map +1 -1
  355. package/build/esm/theme/typography-roboto.d.ts +111 -111
  356. package/build/esm/theme/typography-roboto.js.map +1 -1
  357. package/build/esm/theme/useTheme.d.ts +566 -566
  358. package/build/esm/theme/useTheme.js.map +1 -1
  359. package/build/tsconfig-build.tsbuildinfo +1 -1
  360. package/build/tsconfig.tsbuildinfo +4321 -0
  361. package/package.json +3 -3
  362. package/src/Alert/Alert.story.tsx +28 -28
  363. package/src/Alert/Alert.tsx +33 -33
  364. package/src/Alert/index.ts +1 -1
  365. package/src/AppBar/AppBar.story.tsx +69 -69
  366. package/src/AppBar/AppBar.tsx +85 -85
  367. package/src/AppBar/AppBarButton.tsx +25 -25
  368. package/src/AppBar/context.ts +13 -13
  369. package/src/AppBar/index.ts +3 -3
  370. package/src/Badge/Badge.story.tsx +68 -68
  371. package/src/Badge/Badge.tsx +47 -47
  372. package/src/Badge/index.ts +1 -1
  373. package/src/BaseLine/BaseLine.tsx +100 -100
  374. package/src/BaseLine/index.ts +1 -1
  375. package/src/BottomSheet/BottomSheet.story.tsx +35 -35
  376. package/src/BottomSheet/BottomSheet.tsx +39 -39
  377. package/src/BottomSheet/BottomSheetSurface.tsx +49 -49
  378. package/src/BottomSheet/index.ts +1 -1
  379. package/src/Box/Box.tsx +127 -127
  380. package/src/Box/index.ts +1 -1
  381. package/src/Button/ButtonGroup.story.tsx +106 -106
  382. package/src/Button/ButtonGroup.tsx +35 -35
  383. package/src/Button/FloatingActionButton.tsx +9 -9
  384. package/src/Button/OutlinedButton.tsx +47 -47
  385. package/src/Button/SpinnerButton.story.tsx +91 -91
  386. package/src/Button/context.tsx +17 -17
  387. package/src/Button/index.ts +2 -2
  388. package/src/CheckBox/CheckBox.story.tsx +155 -155
  389. package/src/CheckBox/CheckBox.tsx +170 -170
  390. package/src/CheckBox/CheckBoxIcon.tsx +64 -64
  391. package/src/CheckBox/CheckPath.tsx +18 -18
  392. package/src/CheckBox/IndeterminatePath.tsx +16 -16
  393. package/src/CheckBox/index.ts +1 -1
  394. package/src/Chip/ButtonChip.tsx +86 -86
  395. package/src/Chip/Chip.story.tsx +242 -242
  396. package/src/Chip/Chip.tsx +5 -5
  397. package/src/Chip/ChipBase.tsx +141 -141
  398. package/src/Chip/ChoiceChip.tsx +127 -127
  399. package/src/Chip/index.ts +2 -2
  400. package/src/Combobox/Combobox.story.tsx +157 -157
  401. package/src/Combobox/Combobox.tsx +274 -274
  402. package/src/Combobox/index.ts +1 -1
  403. package/src/Dialog/Dialog.story.tsx +53 -53
  404. package/src/Dialog/Dialog.tsx +73 -73
  405. package/src/Dialog/DialogBackdrop.tsx +42 -42
  406. package/src/Dialog/DialogContainer.tsx +31 -31
  407. package/src/Dialog/DialogSurface.tsx +55 -55
  408. package/src/Dialog/Scrim.tsx +35 -35
  409. package/src/Dialog/index.ts +2 -2
  410. package/src/Dialog/useDialogAnimation.tsx +49 -49
  411. package/src/Divider/Divider.story.tsx +39 -39
  412. package/src/Divider/Divider.tsx +48 -48
  413. package/src/Divider/index.ts +1 -1
  414. package/src/FloatingLabel/FloatingLabel.story.tsx +55 -55
  415. package/src/FloatingLabel/FloatingLabel.tsx +77 -77
  416. package/src/FloatingLabel/index.ts +1 -1
  417. package/src/LineRipple/LineRipple.story.tsx +43 -43
  418. package/src/LineRipple/LineRipple.tsx +81 -81
  419. package/src/LineRipple/index.ts +1 -1
  420. package/src/Link/Link.story.tsx +14 -14
  421. package/src/Link/Link.tsx +65 -65
  422. package/src/Link/index.ts +1 -1
  423. package/src/List/List.tsx +46 -46
  424. package/src/List/index.ts +1 -1
  425. package/src/ListItem/ListItem.story.tsx +43 -43
  426. package/src/ListItem/ListItem.tsx +104 -104
  427. package/src/ListItem/ListItemText.tsx +35 -35
  428. package/src/ListItem/index.ts +2 -2
  429. package/src/Menu/ContextMenu.story.tsx +34 -34
  430. package/src/Menu/Menu.story.tsx +54 -54
  431. package/src/Menu/Menu.tsx +124 -124
  432. package/src/Menu/animation.ts +16 -16
  433. package/src/Menu/index.ts +2 -2
  434. package/src/NavRail/NavRail.story.tsx +146 -146
  435. package/src/NavRail/NavRailItem.tsx +175 -175
  436. package/src/NavRail/icons/test-icons.tsx +46 -46
  437. package/src/NavRail/index.ts +1 -1
  438. package/src/NotchedOutline/NotchedOutline.story.tsx +99 -99
  439. package/src/NotchedOutline/NotchedOutline.tsx +80 -80
  440. package/src/NotchedOutline/context.ts +12 -12
  441. package/src/NotchedOutline/index.ts +1 -1
  442. package/src/NotchedOutline/styledComponents.ts +122 -122
  443. package/src/Paper/Paper.story.tsx +50 -50
  444. package/src/Paper/Paper.tsx +67 -67
  445. package/src/Paper/index.ts +1 -1
  446. package/src/Popover/PopoverSurface.tsx +51 -51
  447. package/src/Popover/index.ts +1 -1
  448. package/src/ProgressSpinner/ProgressSpinner.story.tsx +35 -35
  449. package/src/ProgressSpinner/ProgressSpinner.tsx +119 -119
  450. package/src/ProgressSpinner/index.ts +1 -1
  451. package/src/RadioButton/RadioButton.story.tsx +109 -109
  452. package/src/RadioButton/RadioButton.tsx +112 -112
  453. package/src/RadioButton/RadioButtonIcon.tsx +44 -44
  454. package/src/RadioButton/RadioGroup.tsx +27 -27
  455. package/src/RadioButton/index.ts +2 -2
  456. package/src/Ripple/Ripple.story.tsx +78 -78
  457. package/src/Ripple/Ripple.tsx +33 -33
  458. package/src/Ripple/RippleBox.tsx +52 -52
  459. package/src/Ripple/constants.ts +15 -15
  460. package/src/Ripple/index.ts +5 -5
  461. package/src/Ripple/keyframes.ts +36 -36
  462. package/src/Ripple/useRipple.ts +209 -209
  463. package/src/Ripple/useRippleHandlers.ts +54 -54
  464. package/src/Ripple/useRippleSurface.ts +155 -155
  465. package/src/Select/CustomContainerExample.tsx +59 -59
  466. package/src/Select/PaymentMethodSelect.story.tsx +316 -316
  467. package/src/Select/Select.story.tsx +225 -225
  468. package/src/Select/Select.tsx +283 -283
  469. package/src/Select/SelectIcon.tsx +43 -43
  470. package/src/Select/SelectMultiple.story.tsx +215 -215
  471. package/src/Select/context.ts +22 -22
  472. package/src/Select/defaultRender.tsx +49 -49
  473. package/src/Select/index.ts +1 -1
  474. package/src/Select/styledComponents.tsx +38 -38
  475. package/src/SelectItem/SelectItem.tsx +92 -92
  476. package/src/SelectItem/index.ts +1 -1
  477. package/src/SelectionControl/SelectionControlLabel.tsx +34 -34
  478. package/src/SelectionControl/SelectionControlText.tsx +37 -37
  479. package/src/SelectionControl/index.ts +2 -2
  480. package/src/Skeleton/DelayAppearance.tsx +41 -41
  481. package/src/Skeleton/Skeleton.story.tsx +57 -57
  482. package/src/Skeleton/Skeleton.tsx +40 -40
  483. package/src/Skeleton/animation.ts +54 -54
  484. package/src/Skeleton/index.ts +2 -2
  485. package/src/Slider/Slider.story.tsx +36 -36
  486. package/src/Slider/Slider.tsx +275 -275
  487. package/src/Slider/index.ts +1 -1
  488. package/src/Snackbar/Snackbar.story.tsx +99 -99
  489. package/src/Snackbar/Snackbar.tsx +82 -82
  490. package/src/Snackbar/Stack.tsx +239 -239
  491. package/src/Snackbar/index.ts +3 -3
  492. package/src/Snackbar/useSnackbarAnimation.ts +170 -170
  493. package/src/Switch/Switch.story.tsx +98 -98
  494. package/src/Switch/Switch.tsx +170 -170
  495. package/src/Switch/index.ts +1 -1
  496. package/src/Switch/styledComponents.tsx +117 -117
  497. package/src/Tab/Tab.story.tsx +209 -209
  498. package/src/Tab/Tab.tsx +120 -120
  499. package/src/Tab/TabList.tsx +61 -61
  500. package/src/Tab/TabPanel.tsx +31 -31
  501. package/src/Tab/TabPanels.tsx +5 -5
  502. package/src/Tab/Tabs.tsx +5 -5
  503. package/src/Tab/context.ts +17 -17
  504. package/src/Tab/index.ts +5 -5
  505. package/src/TabIndicator/TabIndicator.tsx +146 -146
  506. package/src/TabIndicator/context.ts +13 -13
  507. package/src/TabIndicator/index.ts +2 -2
  508. package/src/Table/Table.story.tsx +227 -227
  509. package/src/Table/Table.tsx +34 -34
  510. package/src/Table/TableBody.tsx +17 -17
  511. package/src/Table/TableCell.tsx +34 -34
  512. package/src/Table/TableHead.tsx +31 -31
  513. package/src/Table/TableRow.tsx +38 -38
  514. package/src/Table/context.ts +6 -6
  515. package/src/Table/index.ts +5 -5
  516. package/src/Text/LoremIpsum.tsx +18 -18
  517. package/src/Text/Text.story.tsx +75 -75
  518. package/src/Text/Text.tsx +84 -84
  519. package/src/Text/index.ts +1 -1
  520. package/src/TextField/FilledContainer.tsx +173 -173
  521. package/src/TextField/HelperText.tsx +63 -63
  522. package/src/TextField/IconContainer.tsx +33 -33
  523. package/src/TextField/OutlinedContainer.tsx +116 -116
  524. package/src/TextField/TextField.story.tsx +241 -241
  525. package/src/TextField/consts.ts +7 -7
  526. package/src/TextField/index.ts +4 -4
  527. package/src/ThemeExplorer/BorderSlider.tsx +73 -73
  528. package/src/ThemeExplorer/ColorPicker.tsx +104 -104
  529. package/src/ThemeExplorer/ColorSchemePicker.tsx +55 -55
  530. package/src/ThemeExplorer/FontAutoComplete.tsx +139 -139
  531. package/src/ThemeExplorer/TextFieldColorPicker.tsx +115 -115
  532. package/src/ThemeExplorer/ThemeBuilder.story.tsx +8 -8
  533. package/src/ThemeExplorer/ThemeBuilder.tsx +353 -353
  534. package/src/ThemeExplorer/ThemeColors.tsx +118 -118
  535. package/src/ThemeExplorer/components.tsx +195 -195
  536. package/src/ThemeExplorer/googleFonts.ts +1436 -1436
  537. package/src/ThemeExplorer/index.ts +1 -1
  538. package/src/ThemeExplorer/makeColorScheme.tsx +111 -111
  539. package/src/ThemeExplorer/makeTailwindTheme.ts +44 -44
  540. package/src/ThemeExplorer/updateGoogleFonts.js +33 -33
  541. package/src/ThemeExplorer/useDeferredColor.tsx +21 -21
  542. package/src/ThemeExplorer/useLocalStorageCachedState.ts +18 -18
  543. package/src/Tooltip/Tooltip.story.tsx +35 -35
  544. package/src/Tooltip/Tooltip.tsx +67 -67
  545. package/src/Tooltip/index.ts +1 -1
  546. package/src/color.ts +84 -84
  547. package/src/css.ts +2 -2
  548. package/src/hooks/useAnimation.ts +111 -111
  549. package/src/index.ts +41 -41
  550. package/src/motion.ts +7 -7
  551. package/src/tailwind/extendColors.ts +51 -51
  552. package/src/tailwind/index.ts +56 -56
  553. package/src/tailwind/tests/extendColors.test.ts +123 -123
  554. package/src/theme/index.ts +2 -2
  555. package/src/theme/theme.ts +499 -499
  556. package/src/theme/typography-raleway.ts +114 -114
  557. package/src/theme/typography-roboto.ts +113 -113
  558. package/src/theme/useTheme.ts +18 -18
  559. package/tailwind/package.json +5 -5
  560. package/theme-explorer/package.json +5 -5
@@ -1,316 +1,316 @@
1
- import { forwardRef, useState } from 'react';
2
- import type { ReactElement, ComponentType } from 'react';
3
- import styled from '@emotion/styled';
4
-
5
- import type { SelectProps } from '../';
6
- import { Select, SelectItem } from '../';
7
-
8
- export default {
9
- title: 'components/Select/Complex',
10
- };
11
-
12
- const ApplePayMark = (props) => (
13
- <svg
14
- xmlns="http://www.w3.org/2000/svg"
15
- width={165.521}
16
- height={105.965}
17
- viewBox="0 0 166 106"
18
- xmlSpace="preserve"
19
- {...props}
20
- >
21
- <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" />
22
- <path
23
- fill="#FFF"
24
- 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"
25
- />
26
- <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" />
27
- </svg>
28
- );
29
-
30
- const MastercardCard = (props) => (
31
- <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" {...props}>
32
- <g fill="none">
33
- <path d="M0 0h32v32H0z" fill="#000" />
34
- <path d="M13.02 10.505h5.923v10.857H13.02z" fill="#ff5f00" />
35
- <path
36
- 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"
37
- fill="#eb001b"
38
- />
39
- <path
40
- 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"
41
- fill="#f79e1b"
42
- />
43
- </g>
44
- </svg>
45
- );
46
-
47
- const IDEALLogo = (props) => (
48
- <svg
49
- id="Layer_1"
50
- xmlns="http://www.w3.org/2000/svg"
51
- x={0}
52
- y={0}
53
- viewBox="0 0 306.1 269.8"
54
- style={{
55
- enableBackground: 'new 0 0 306.1 269.8',
56
- }}
57
- xmlSpace="preserve"
58
- {...props}
59
- >
60
- <style>{'.st0{fill:#fff}'}</style>
61
- <path
62
- className="st0"
63
- 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"
64
- />
65
- <path
66
- 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"
67
- style={{
68
- fill: '#c06',
69
- }}
70
- />
71
- <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" />
72
- <path
73
- className="st0"
74
- 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"
75
- />
76
- <circle cx={58.5} cy={132.1} r={18.7} />
77
- <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" />
78
- </svg>
79
- );
80
-
81
- const GooglePayLogo = (props) => (
82
- <svg
83
- width={752}
84
- height={400}
85
- fill="none"
86
- viewBox="0 0 752 400"
87
- xmlns="http://www.w3.org/2000/svg"
88
- {...props}
89
- >
90
- <path
91
- d="M552 0H200C90 0 0 90 0 200s90 200 200 200h352c110 0 200-90 200-200S662 0 552 0Z"
92
- fill="#fff"
93
- />
94
- <path
95
- 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"
96
- fill="#3C4043"
97
- />
98
- <path
99
- 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"
100
- fill="#3C4043"
101
- />
102
- <path
103
- 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"
104
- fill="#4285F4"
105
- />
106
- <path
107
- 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"
108
- fill="#34A853"
109
- />
110
- <path
111
- 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"
112
- fill="#FABB05"
113
- />
114
- <path
115
- 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"
116
- fill="#E94235"
117
- />
118
- </svg>
119
- );
120
-
121
- const svgByBrand: Record<string, ComponentType<any>> = {
122
- amex: MastercardCard,
123
- diners: MastercardCard,
124
- discover: MastercardCard,
125
- jcb: MastercardCard,
126
- mastercard: MastercardCard,
127
- unionpay: MastercardCard,
128
- visa: MastercardCard,
129
- unknown: MastercardCard,
130
- };
131
-
132
- export type PaymentMethodCard = {
133
- type: 'card';
134
- id: string;
135
- last4: string;
136
- brand: string;
137
- };
138
-
139
- export type PaymentMethodSepaDebit = {
140
- type: 'sepa_debit';
141
- id: string;
142
- };
143
-
144
- export type PaymentMethodIDEAL = {
145
- type: 'ideal';
146
- id: 'ideal';
147
- };
148
-
149
- export type PaymentMethodApplePay = {
150
- type: 'apple_pay';
151
- id: 'apple_pay';
152
- };
153
-
154
- export type PaymentMethodGooglePay = {
155
- type: 'google_pay';
156
- id: 'google_pay';
157
- };
158
-
159
- export type PaymentMethodNewCard = {
160
- type: 'new_card';
161
- id: 'new_card';
162
- };
163
-
164
- export type PaymentMethod =
165
- | PaymentMethodCard
166
- | PaymentMethodIDEAL
167
- | PaymentMethodSepaDebit
168
- | PaymentMethodApplePay
169
- | PaymentMethodGooglePay
170
- | PaymentMethodNewCard;
171
-
172
- export interface PaymentMethodSelectProps {
173
- paymentMethods: PaymentMethod[];
174
- value: string;
175
- onChange: SelectProps['onChange'];
176
- }
177
-
178
- const logoWidth = 32;
179
- const logoHeight = 24;
180
- const LogoWrapper = styled.div({
181
- marginInlineEnd: '8px',
182
- borderRadius: '2px',
183
- overflow: 'hidden',
184
- width: logoWidth,
185
- height: logoHeight,
186
- minWidth: logoWidth,
187
- minHeight: logoHeight,
188
- '& > svg': { width: logoWidth, height: logoWidth },
189
- display: 'inline-flex',
190
- alignItems: 'center',
191
- justifyContent: 'center',
192
- });
193
-
194
- function SelectItemContent(props: PaymentMethod): ReactElement {
195
- if (props.type === 'card') {
196
- const CardIcon = svgByBrand[props.brand] || svgByBrand['unknown'];
197
- return (
198
- <>
199
- <LogoWrapper>
200
- <CardIcon />
201
- </LogoWrapper>
202
- {props.id} •••• {props.last4}
203
- </>
204
- );
205
- }
206
- if (props.type === 'ideal') {
207
- return (
208
- <>
209
- <LogoWrapper>
210
- <IDEALLogo />
211
- </LogoWrapper>
212
- iDEAL
213
- </>
214
- );
215
- }
216
- if (props.type === 'apple_pay') {
217
- return (
218
- <>
219
- <LogoWrapper>
220
- <ApplePayMark />
221
- </LogoWrapper>
222
- Apple Pay
223
- </>
224
- );
225
- }
226
- if (props.type === 'google_pay') {
227
- return (
228
- <>
229
- <LogoWrapper>
230
- <GooglePayLogo />
231
- </LogoWrapper>
232
- Google Pay
233
- </>
234
- );
235
- }
236
- if (props.type === 'sepa_debit') {
237
- return (
238
- <>
239
- <LogoWrapper>
240
- <IDEALLogo />
241
- </LogoWrapper>
242
- Direct debit
243
- </>
244
- );
245
- }
246
- if (props.type === 'new_card') {
247
- return <>Add new card...</>;
248
- }
249
- return <>Unknown payment method</>;
250
- }
251
-
252
- const PaymentMethodSelect = forwardRef<
253
- HTMLButtonElement | HTMLSelectElement,
254
- PaymentMethodSelectProps
255
- >(function PaymentMethodSelect(props, ref) {
256
- const { onChange, paymentMethods, value } = props;
257
- return (
258
- <Select
259
- ref={ref}
260
- label="Payment method"
261
- variant="outlined"
262
- onChange={onChange}
263
- value={value}
264
- >
265
- {paymentMethods.map((m) => (
266
- <SelectItem value={m.id} key={m.id}>
267
- <SelectItemContent {...m} />
268
- </SelectItem>
269
- ))}
270
- </Select>
271
- );
272
- });
273
-
274
- export const PaymentMethodSelectControlled = () => {
275
- const paymentMethods: PaymentMethod[] = [
276
- {
277
- type: 'apple_pay',
278
- id: 'apple_pay',
279
- },
280
- {
281
- type: 'google_pay',
282
- id: 'google_pay',
283
- },
284
- { type: 'ideal', id: 'ideal' },
285
- ];
286
- for (const testCard of [
287
- 'amex',
288
- 'diners',
289
- 'discover',
290
- 'jcb',
291
- 'mastercard',
292
- 'unionpay',
293
- 'visa',
294
- 'unknown',
295
- ]) {
296
- for (let i = 0; i < 50; i++) {
297
- paymentMethods.push({
298
- type: 'card',
299
- id: testCard + `_${i}`,
300
- brand: testCard,
301
- last4: '1234',
302
- });
303
- }
304
- }
305
- const [value, setValue] = useState(paymentMethods[0].id);
306
-
307
- console.log({ value });
308
-
309
- return (
310
- <PaymentMethodSelect
311
- value={value}
312
- onChange={(_, v) => setValue(v)}
313
- paymentMethods={paymentMethods}
314
- />
315
- );
316
- };
1
+ import { forwardRef, useState } from 'react';
2
+ import type { ReactElement, ComponentType } from 'react';
3
+ import styled from '@emotion/styled';
4
+
5
+ import type { SelectProps } from '../';
6
+ import { Select, SelectItem } from '../';
7
+
8
+ export default {
9
+ title: 'components/Select/Complex',
10
+ };
11
+
12
+ const ApplePayMark = (props) => (
13
+ <svg
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ width={165.521}
16
+ height={105.965}
17
+ viewBox="0 0 166 106"
18
+ xmlSpace="preserve"
19
+ {...props}
20
+ >
21
+ <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" />
22
+ <path
23
+ fill="#FFF"
24
+ 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"
25
+ />
26
+ <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" />
27
+ </svg>
28
+ );
29
+
30
+ const MastercardCard = (props) => (
31
+ <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" {...props}>
32
+ <g fill="none">
33
+ <path d="M0 0h32v32H0z" fill="#000" />
34
+ <path d="M13.02 10.505h5.923v10.857H13.02z" fill="#ff5f00" />
35
+ <path
36
+ 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"
37
+ fill="#eb001b"
38
+ />
39
+ <path
40
+ 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"
41
+ fill="#f79e1b"
42
+ />
43
+ </g>
44
+ </svg>
45
+ );
46
+
47
+ const IDEALLogo = (props) => (
48
+ <svg
49
+ id="Layer_1"
50
+ xmlns="http://www.w3.org/2000/svg"
51
+ x={0}
52
+ y={0}
53
+ viewBox="0 0 306.1 269.8"
54
+ style={{
55
+ enableBackground: 'new 0 0 306.1 269.8',
56
+ }}
57
+ xmlSpace="preserve"
58
+ {...props}
59
+ >
60
+ <style>{'.st0{fill:#fff}'}</style>
61
+ <path
62
+ className="st0"
63
+ 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"
64
+ />
65
+ <path
66
+ 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"
67
+ style={{
68
+ fill: '#c06',
69
+ }}
70
+ />
71
+ <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" />
72
+ <path
73
+ className="st0"
74
+ 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"
75
+ />
76
+ <circle cx={58.5} cy={132.1} r={18.7} />
77
+ <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" />
78
+ </svg>
79
+ );
80
+
81
+ const GooglePayLogo = (props) => (
82
+ <svg
83
+ width={752}
84
+ height={400}
85
+ fill="none"
86
+ viewBox="0 0 752 400"
87
+ xmlns="http://www.w3.org/2000/svg"
88
+ {...props}
89
+ >
90
+ <path
91
+ d="M552 0H200C90 0 0 90 0 200s90 200 200 200h352c110 0 200-90 200-200S662 0 552 0Z"
92
+ fill="#fff"
93
+ />
94
+ <path
95
+ 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"
96
+ fill="#3C4043"
97
+ />
98
+ <path
99
+ 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"
100
+ fill="#3C4043"
101
+ />
102
+ <path
103
+ 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"
104
+ fill="#4285F4"
105
+ />
106
+ <path
107
+ 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"
108
+ fill="#34A853"
109
+ />
110
+ <path
111
+ 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"
112
+ fill="#FABB05"
113
+ />
114
+ <path
115
+ 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"
116
+ fill="#E94235"
117
+ />
118
+ </svg>
119
+ );
120
+
121
+ const svgByBrand: Record<string, ComponentType<any>> = {
122
+ amex: MastercardCard,
123
+ diners: MastercardCard,
124
+ discover: MastercardCard,
125
+ jcb: MastercardCard,
126
+ mastercard: MastercardCard,
127
+ unionpay: MastercardCard,
128
+ visa: MastercardCard,
129
+ unknown: MastercardCard,
130
+ };
131
+
132
+ export type PaymentMethodCard = {
133
+ type: 'card';
134
+ id: string;
135
+ last4: string;
136
+ brand: string;
137
+ };
138
+
139
+ export type PaymentMethodSepaDebit = {
140
+ type: 'sepa_debit';
141
+ id: string;
142
+ };
143
+
144
+ export type PaymentMethodIDEAL = {
145
+ type: 'ideal';
146
+ id: 'ideal';
147
+ };
148
+
149
+ export type PaymentMethodApplePay = {
150
+ type: 'apple_pay';
151
+ id: 'apple_pay';
152
+ };
153
+
154
+ export type PaymentMethodGooglePay = {
155
+ type: 'google_pay';
156
+ id: 'google_pay';
157
+ };
158
+
159
+ export type PaymentMethodNewCard = {
160
+ type: 'new_card';
161
+ id: 'new_card';
162
+ };
163
+
164
+ export type PaymentMethod =
165
+ | PaymentMethodCard
166
+ | PaymentMethodIDEAL
167
+ | PaymentMethodSepaDebit
168
+ | PaymentMethodApplePay
169
+ | PaymentMethodGooglePay
170
+ | PaymentMethodNewCard;
171
+
172
+ export interface PaymentMethodSelectProps {
173
+ paymentMethods: PaymentMethod[];
174
+ value: string;
175
+ onChange: SelectProps['onChange'];
176
+ }
177
+
178
+ const logoWidth = 32;
179
+ const logoHeight = 24;
180
+ const LogoWrapper = styled.div({
181
+ marginInlineEnd: '8px',
182
+ borderRadius: '2px',
183
+ overflow: 'hidden',
184
+ width: logoWidth,
185
+ height: logoHeight,
186
+ minWidth: logoWidth,
187
+ minHeight: logoHeight,
188
+ '& > svg': { width: logoWidth, height: logoWidth },
189
+ display: 'inline-flex',
190
+ alignItems: 'center',
191
+ justifyContent: 'center',
192
+ });
193
+
194
+ function SelectItemContent(props: PaymentMethod): ReactElement {
195
+ if (props.type === 'card') {
196
+ const CardIcon = svgByBrand[props.brand] || svgByBrand['unknown'];
197
+ return (
198
+ <>
199
+ <LogoWrapper>
200
+ <CardIcon />
201
+ </LogoWrapper>
202
+ {props.id} •••• {props.last4}
203
+ </>
204
+ );
205
+ }
206
+ if (props.type === 'ideal') {
207
+ return (
208
+ <>
209
+ <LogoWrapper>
210
+ <IDEALLogo />
211
+ </LogoWrapper>
212
+ iDEAL
213
+ </>
214
+ );
215
+ }
216
+ if (props.type === 'apple_pay') {
217
+ return (
218
+ <>
219
+ <LogoWrapper>
220
+ <ApplePayMark />
221
+ </LogoWrapper>
222
+ Apple Pay
223
+ </>
224
+ );
225
+ }
226
+ if (props.type === 'google_pay') {
227
+ return (
228
+ <>
229
+ <LogoWrapper>
230
+ <GooglePayLogo />
231
+ </LogoWrapper>
232
+ Google Pay
233
+ </>
234
+ );
235
+ }
236
+ if (props.type === 'sepa_debit') {
237
+ return (
238
+ <>
239
+ <LogoWrapper>
240
+ <IDEALLogo />
241
+ </LogoWrapper>
242
+ Direct debit
243
+ </>
244
+ );
245
+ }
246
+ if (props.type === 'new_card') {
247
+ return <>Add new card...</>;
248
+ }
249
+ return <>Unknown payment method</>;
250
+ }
251
+
252
+ const PaymentMethodSelect = forwardRef<
253
+ HTMLButtonElement | HTMLSelectElement,
254
+ PaymentMethodSelectProps
255
+ >(function PaymentMethodSelect(props, ref) {
256
+ const { onChange, paymentMethods, value } = props;
257
+ return (
258
+ <Select
259
+ ref={ref}
260
+ label="Payment method"
261
+ variant="outlined"
262
+ onChange={onChange}
263
+ value={value}
264
+ >
265
+ {paymentMethods.map((m) => (
266
+ <SelectItem value={m.id} key={m.id}>
267
+ <SelectItemContent {...m} />
268
+ </SelectItem>
269
+ ))}
270
+ </Select>
271
+ );
272
+ });
273
+
274
+ export const PaymentMethodSelectControlled = () => {
275
+ const paymentMethods: PaymentMethod[] = [
276
+ {
277
+ type: 'apple_pay',
278
+ id: 'apple_pay',
279
+ },
280
+ {
281
+ type: 'google_pay',
282
+ id: 'google_pay',
283
+ },
284
+ { type: 'ideal', id: 'ideal' },
285
+ ];
286
+ for (const testCard of [
287
+ 'amex',
288
+ 'diners',
289
+ 'discover',
290
+ 'jcb',
291
+ 'mastercard',
292
+ 'unionpay',
293
+ 'visa',
294
+ 'unknown',
295
+ ]) {
296
+ for (let i = 0; i < 50; i++) {
297
+ paymentMethods.push({
298
+ type: 'card',
299
+ id: testCard + `_${i}`,
300
+ brand: testCard,
301
+ last4: '1234',
302
+ });
303
+ }
304
+ }
305
+ const [value, setValue] = useState(paymentMethods[0].id);
306
+
307
+ console.log({ value });
308
+
309
+ return (
310
+ <PaymentMethodSelect
311
+ value={value}
312
+ onChange={(_, v) => setValue(v)}
313
+ paymentMethods={paymentMethods}
314
+ />
315
+ );
316
+ };