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

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 (407) hide show
  1. package/build/cjs/index.js +632 -373
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Alert/Alert.d.ts +1 -1
  4. package/build/esm/Alert/Alert.js +1 -1
  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.map +0 -0
  8. package/build/esm/AppBar/AppBar.d.ts +1 -1
  9. package/build/esm/AppBar/AppBar.js +1 -2
  10. package/build/esm/AppBar/AppBar.js.map +1 -1
  11. package/build/esm/AppBar/AppBarButton.d.ts +1 -1
  12. package/build/esm/AppBar/AppBarButton.js.map +0 -0
  13. package/build/esm/AppBar/context.d.ts +0 -0
  14. package/build/esm/AppBar/context.js.map +0 -0
  15. package/build/esm/AppBar/index.d.ts +0 -0
  16. package/build/esm/AppBar/index.js.map +0 -0
  17. package/build/esm/Badge/Badge.d.ts +1 -1
  18. package/build/esm/Badge/Badge.js.map +0 -0
  19. package/build/esm/Badge/index.d.ts +0 -0
  20. package/build/esm/Badge/index.js.map +0 -0
  21. package/build/esm/BaseLine/BaseLine.d.ts +0 -1
  22. package/build/esm/BaseLine/BaseLine.js.map +0 -0
  23. package/build/esm/BaseLine/index.d.ts +0 -0
  24. package/build/esm/BaseLine/index.js.map +0 -0
  25. package/build/esm/BottomSheet/BottomSheet.d.ts +1 -1
  26. package/build/esm/BottomSheet/BottomSheet.js.map +0 -0
  27. package/build/esm/BottomSheet/BottomSheetSurface.d.ts +1 -1
  28. package/build/esm/BottomSheet/BottomSheetSurface.js +1 -1
  29. package/build/esm/BottomSheet/BottomSheetSurface.js.map +1 -1
  30. package/build/esm/BottomSheet/index.d.ts +0 -0
  31. package/build/esm/BottomSheet/index.js.map +0 -0
  32. package/build/esm/Box/Box.d.ts +0 -0
  33. package/build/esm/Box/Box.js.map +0 -0
  34. package/build/esm/Box/index.d.ts +0 -0
  35. package/build/esm/Box/index.js.map +0 -0
  36. package/build/esm/Button/BaseButton.d.ts +2 -1
  37. package/build/esm/Button/BaseButton.js.map +1 -1
  38. package/build/esm/Button/Button.d.ts +3 -3
  39. package/build/esm/Button/Button.js +22 -6
  40. package/build/esm/Button/Button.js.map +1 -1
  41. package/build/esm/Button/ButtonGroup.d.ts +5 -0
  42. package/build/esm/Button/ButtonGroup.js +28 -0
  43. package/build/esm/Button/ButtonGroup.js.map +1 -0
  44. package/build/esm/Button/FilledButton.d.ts +2 -1
  45. package/build/esm/Button/FilledButton.js +36 -3
  46. package/build/esm/Button/FilledButton.js.map +1 -1
  47. package/build/esm/Button/IconButton.d.ts +1 -0
  48. package/build/esm/Button/IconButton.js +2 -1
  49. package/build/esm/Button/IconButton.js.map +1 -1
  50. package/build/esm/Button/OutlinedButton.d.ts +1 -1
  51. package/build/esm/Button/OutlinedButton.js +32 -2
  52. package/build/esm/Button/OutlinedButton.js.map +1 -1
  53. package/build/esm/Button/TransparentButton.d.ts +2 -1
  54. package/build/esm/Button/TransparentButton.js +32 -2
  55. package/build/esm/Button/TransparentButton.js.map +1 -1
  56. package/build/esm/Button/context.d.ts +8 -0
  57. package/build/esm/Button/context.js +5 -0
  58. package/build/esm/Button/context.js.map +1 -0
  59. package/build/esm/Button/index.d.ts +1 -0
  60. package/build/esm/Button/index.js +1 -0
  61. package/build/esm/Button/index.js.map +1 -1
  62. package/build/esm/CheckBox/CheckBox.d.ts +1 -1
  63. package/build/esm/CheckBox/CheckBox.js +1 -1
  64. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  65. package/build/esm/CheckBox/CheckBoxIcon.d.ts +1 -1
  66. package/build/esm/CheckBox/CheckBoxIcon.js.map +0 -0
  67. package/build/esm/CheckBox/CheckPath.d.ts +0 -0
  68. package/build/esm/CheckBox/CheckPath.js.map +0 -0
  69. package/build/esm/CheckBox/IndeterminatePath.d.ts +0 -0
  70. package/build/esm/CheckBox/IndeterminatePath.js.map +0 -0
  71. package/build/esm/CheckBox/index.d.ts +0 -0
  72. package/build/esm/CheckBox/index.js.map +0 -0
  73. package/build/esm/Chip/ButtonChip.d.ts +3 -3
  74. package/build/esm/Chip/ButtonChip.js +41 -57
  75. package/build/esm/Chip/ButtonChip.js.map +1 -1
  76. package/build/esm/Chip/Chip.d.ts +0 -0
  77. package/build/esm/Chip/Chip.js.map +0 -0
  78. package/build/esm/Chip/ChipBase.d.ts +1 -1
  79. package/build/esm/Chip/ChipBase.js +23 -15
  80. package/build/esm/Chip/ChipBase.js.map +1 -1
  81. package/build/esm/Chip/ChoiceChip.d.ts +3 -2
  82. package/build/esm/Chip/ChoiceChip.js +18 -24
  83. package/build/esm/Chip/ChoiceChip.js.map +1 -1
  84. package/build/esm/Chip/index.d.ts +0 -0
  85. package/build/esm/Chip/index.js.map +0 -0
  86. package/build/esm/ColorMode/ColorModeProvider.d.ts +0 -0
  87. package/build/esm/ColorMode/ColorModeProvider.js.map +0 -0
  88. package/build/esm/ColorMode/color-mode.d.ts +0 -0
  89. package/build/esm/ColorMode/color-mode.js.map +0 -0
  90. package/build/esm/ColorMode/color-vars.d.ts +0 -0
  91. package/build/esm/ColorMode/color-vars.js.map +0 -0
  92. package/build/esm/ColorMode/constants.d.ts +0 -0
  93. package/build/esm/ColorMode/constants.js.map +0 -0
  94. package/build/esm/ColorMode/index.d.ts +0 -0
  95. package/build/esm/ColorMode/index.js.map +0 -0
  96. package/build/esm/Combobox/Combobox.d.ts +7 -7
  97. package/build/esm/Combobox/Combobox.js +2 -1
  98. package/build/esm/Combobox/Combobox.js.map +1 -1
  99. package/build/esm/Combobox/index.d.ts +0 -0
  100. package/build/esm/Combobox/index.js.map +0 -0
  101. package/build/esm/Dialog/Dialog.d.ts +1 -1
  102. package/build/esm/Dialog/Dialog.js.map +0 -0
  103. package/build/esm/Dialog/DialogBackdrop.d.ts +1 -1
  104. package/build/esm/Dialog/DialogBackdrop.js.map +0 -0
  105. package/build/esm/Dialog/DialogContainer.d.ts +1 -1
  106. package/build/esm/Dialog/DialogContainer.js.map +0 -0
  107. package/build/esm/Dialog/DialogSurface.d.ts +4 -2
  108. package/build/esm/Dialog/DialogSurface.js +19 -7
  109. package/build/esm/Dialog/DialogSurface.js.map +1 -1
  110. package/build/esm/Dialog/Scrim.d.ts +1 -1
  111. package/build/esm/Dialog/Scrim.js.map +0 -0
  112. package/build/esm/Dialog/index.d.ts +0 -0
  113. package/build/esm/Dialog/index.js.map +0 -0
  114. package/build/esm/Dialog/useDialogAnimation.d.ts +0 -0
  115. package/build/esm/Dialog/useDialogAnimation.js.map +0 -0
  116. package/build/esm/Divider/Divider.d.ts +1 -1
  117. package/build/esm/Divider/Divider.js.map +0 -0
  118. package/build/esm/Divider/index.d.ts +0 -0
  119. package/build/esm/Divider/index.js.map +0 -0
  120. package/build/esm/FloatingLabel/FloatingLabel.d.ts +0 -1
  121. package/build/esm/FloatingLabel/FloatingLabel.js +1 -3
  122. package/build/esm/FloatingLabel/FloatingLabel.js.map +1 -1
  123. package/build/esm/FloatingLabel/index.d.ts +0 -0
  124. package/build/esm/FloatingLabel/index.js.map +0 -0
  125. package/build/esm/LineRipple/LineRipple.d.ts +1 -1
  126. package/build/esm/LineRipple/LineRipple.js.map +0 -0
  127. package/build/esm/LineRipple/index.d.ts +0 -0
  128. package/build/esm/LineRipple/index.js.map +0 -0
  129. package/build/esm/Link/Link.d.ts +1 -1
  130. package/build/esm/Link/Link.js.map +0 -0
  131. package/build/esm/Link/index.d.ts +0 -0
  132. package/build/esm/Link/index.js.map +0 -0
  133. package/build/esm/List/List.d.ts +1 -1
  134. package/build/esm/List/List.js.map +0 -0
  135. package/build/esm/List/index.d.ts +0 -0
  136. package/build/esm/List/index.js.map +0 -0
  137. package/build/esm/ListItem/ListItem.d.ts +1 -1
  138. package/build/esm/ListItem/ListItem.js +52 -33
  139. package/build/esm/ListItem/ListItem.js.map +1 -1
  140. package/build/esm/ListItem/ListItemText.d.ts +0 -0
  141. package/build/esm/ListItem/ListItemText.js +2 -7
  142. package/build/esm/ListItem/ListItemText.js.map +1 -1
  143. package/build/esm/ListItem/context.d.ts +0 -0
  144. package/build/esm/ListItem/context.js.map +0 -0
  145. package/build/esm/ListItem/index.d.ts +0 -0
  146. package/build/esm/ListItem/index.js.map +0 -0
  147. package/build/esm/Menu/Menu.d.ts +4 -4
  148. package/build/esm/Menu/Menu.js +2 -2
  149. package/build/esm/Menu/Menu.js.map +1 -1
  150. package/build/esm/Menu/animation.d.ts +0 -0
  151. package/build/esm/Menu/animation.js.map +0 -0
  152. package/build/esm/Menu/index.d.ts +0 -0
  153. package/build/esm/Menu/index.js.map +0 -0
  154. package/build/esm/NotchedOutline/NotchedOutline.d.ts +0 -0
  155. package/build/esm/NotchedOutline/NotchedOutline.js.map +0 -0
  156. package/build/esm/NotchedOutline/context.d.ts +0 -0
  157. package/build/esm/NotchedOutline/context.js.map +0 -0
  158. package/build/esm/NotchedOutline/index.d.ts +0 -0
  159. package/build/esm/NotchedOutline/index.js.map +0 -0
  160. package/build/esm/NotchedOutline/styledComponents.d.ts +96 -50
  161. package/build/esm/NotchedOutline/styledComponents.js +7 -7
  162. package/build/esm/NotchedOutline/styledComponents.js.map +1 -1
  163. package/build/esm/Paper/Paper.d.ts +1 -1
  164. package/build/esm/Paper/Paper.js +2 -2
  165. package/build/esm/Paper/Paper.js.map +1 -1
  166. package/build/esm/Paper/index.d.ts +0 -0
  167. package/build/esm/Paper/index.js.map +0 -0
  168. package/build/esm/ProgressSpinner/ProgressSpinner.d.ts +1 -1
  169. package/build/esm/ProgressSpinner/ProgressSpinner.js.map +0 -0
  170. package/build/esm/ProgressSpinner/index.d.ts +0 -0
  171. package/build/esm/ProgressSpinner/index.js.map +0 -0
  172. package/build/esm/RadioButton/RadioButton.d.ts +0 -0
  173. package/build/esm/RadioButton/RadioButton.js +1 -1
  174. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  175. package/build/esm/RadioButton/RadioButtonIcon.d.ts +0 -0
  176. package/build/esm/RadioButton/RadioButtonIcon.js +2 -2
  177. package/build/esm/RadioButton/RadioButtonIcon.js.map +1 -1
  178. package/build/esm/RadioButton/RadioGroup.d.ts +1 -1
  179. package/build/esm/RadioButton/RadioGroup.js.map +0 -0
  180. package/build/esm/RadioButton/index.d.ts +0 -0
  181. package/build/esm/RadioButton/index.js.map +0 -0
  182. package/build/esm/Ripple/Ripple.d.ts +0 -0
  183. package/build/esm/Ripple/Ripple.js +2 -2
  184. package/build/esm/Ripple/Ripple.js.map +1 -1
  185. package/build/esm/Ripple/RippleBox.d.ts +0 -0
  186. package/build/esm/Ripple/RippleBox.js +1 -1
  187. package/build/esm/Ripple/RippleBox.js.map +1 -1
  188. package/build/esm/Ripple/constants.d.ts +0 -0
  189. package/build/esm/Ripple/constants.js.map +0 -0
  190. package/build/esm/Ripple/index.d.ts +0 -0
  191. package/build/esm/Ripple/index.js.map +0 -0
  192. package/build/esm/Ripple/keyframes.d.ts +0 -0
  193. package/build/esm/Ripple/keyframes.js.map +0 -0
  194. package/build/esm/Ripple/useRipple.d.ts +0 -0
  195. package/build/esm/Ripple/useRipple.js.map +0 -0
  196. package/build/esm/Ripple/useRippleHandlers.d.ts +0 -0
  197. package/build/esm/Ripple/useRippleHandlers.js.map +0 -0
  198. package/build/esm/Ripple/useRippleSurface.d.ts +5 -4
  199. package/build/esm/Ripple/useRippleSurface.js +30 -8
  200. package/build/esm/Ripple/useRippleSurface.js.map +1 -1
  201. package/build/esm/Select/Select.d.ts +3 -3
  202. package/build/esm/Select/Select.js +3 -12
  203. package/build/esm/Select/Select.js.map +1 -1
  204. package/build/esm/Select/SelectIcon.d.ts +1 -1
  205. package/build/esm/Select/SelectIcon.js +3 -1
  206. package/build/esm/Select/SelectIcon.js.map +1 -1
  207. package/build/esm/Select/context.d.ts +0 -0
  208. package/build/esm/Select/context.js.map +0 -0
  209. package/build/esm/Select/defaultRender.d.ts +0 -0
  210. package/build/esm/Select/defaultRender.js.map +0 -0
  211. package/build/esm/Select/index.d.ts +0 -0
  212. package/build/esm/Select/index.js.map +0 -0
  213. package/build/esm/Select/styledComponents.d.ts +0 -0
  214. package/build/esm/Select/styledComponents.js +9 -5
  215. package/build/esm/Select/styledComponents.js.map +1 -1
  216. package/build/esm/SelectItem/SelectItem.d.ts +1 -1
  217. package/build/esm/SelectItem/SelectItem.js.map +0 -0
  218. package/build/esm/SelectItem/index.d.ts +0 -0
  219. package/build/esm/SelectItem/index.js.map +0 -0
  220. package/build/esm/SelectionControl/SelectionControlLabel.d.ts +1 -1
  221. package/build/esm/SelectionControl/SelectionControlLabel.js.map +0 -0
  222. package/build/esm/SelectionControl/SelectionControlText.d.ts +1 -1
  223. package/build/esm/SelectionControl/SelectionControlText.js.map +0 -0
  224. package/build/esm/SelectionControl/index.d.ts +0 -0
  225. package/build/esm/SelectionControl/index.js.map +0 -0
  226. package/build/esm/Skeleton/DelayAppearance.d.ts +1 -1
  227. package/build/esm/Skeleton/DelayAppearance.js.map +0 -0
  228. package/build/esm/Skeleton/Skeleton.d.ts +1 -1
  229. package/build/esm/Skeleton/Skeleton.js.map +0 -0
  230. package/build/esm/Skeleton/animation.d.ts +0 -0
  231. package/build/esm/Skeleton/animation.js.map +0 -0
  232. package/build/esm/Skeleton/index.d.ts +0 -0
  233. package/build/esm/Skeleton/index.js.map +0 -0
  234. package/build/esm/Snackbar/Snackbar.d.ts +1 -1
  235. package/build/esm/Snackbar/Snackbar.js +4 -4
  236. package/build/esm/Snackbar/Snackbar.js.map +1 -1
  237. package/build/esm/Snackbar/Stack.d.ts +0 -0
  238. package/build/esm/Snackbar/Stack.js.map +0 -0
  239. package/build/esm/Snackbar/index.d.ts +0 -0
  240. package/build/esm/Snackbar/index.js.map +0 -0
  241. package/build/esm/Snackbar/useSnackbarAnimation.d.ts +0 -0
  242. package/build/esm/Snackbar/useSnackbarAnimation.js.map +0 -0
  243. package/build/esm/Switch/Switch.d.ts +1 -1
  244. package/build/esm/Switch/Switch.js +8 -6
  245. package/build/esm/Switch/Switch.js.map +1 -1
  246. package/build/esm/Switch/index.d.ts +0 -0
  247. package/build/esm/Switch/index.js.map +0 -0
  248. package/build/esm/Switch/styledComponents.d.ts +2 -2
  249. package/build/esm/Switch/styledComponents.js +54 -26
  250. package/build/esm/Switch/styledComponents.js.map +1 -1
  251. package/build/esm/Tab/Tab.d.ts +1 -1
  252. package/build/esm/Tab/Tab.js.map +0 -0
  253. package/build/esm/Tab/TabList.d.ts +1 -1
  254. package/build/esm/Tab/TabList.js.map +0 -0
  255. package/build/esm/Tab/TabPanel.d.ts +1 -1
  256. package/build/esm/Tab/TabPanel.js.map +0 -0
  257. package/build/esm/Tab/TabPanels.d.ts +0 -0
  258. package/build/esm/Tab/TabPanels.js.map +0 -0
  259. package/build/esm/Tab/Tabs.d.ts +0 -0
  260. package/build/esm/Tab/Tabs.js.map +0 -0
  261. package/build/esm/Tab/context.d.ts +0 -0
  262. package/build/esm/Tab/context.js.map +0 -0
  263. package/build/esm/Tab/index.d.ts +0 -0
  264. package/build/esm/Tab/index.js.map +0 -0
  265. package/build/esm/TabIndicator/TabIndicator.d.ts +1 -1
  266. package/build/esm/TabIndicator/TabIndicator.js.map +0 -0
  267. package/build/esm/TabIndicator/context.d.ts +0 -0
  268. package/build/esm/TabIndicator/context.js.map +0 -0
  269. package/build/esm/TabIndicator/index.d.ts +0 -0
  270. package/build/esm/TabIndicator/index.js.map +0 -0
  271. package/build/esm/Table/Table.d.ts +1 -1
  272. package/build/esm/Table/Table.js +1 -1
  273. package/build/esm/Table/Table.js.map +1 -1
  274. package/build/esm/Table/TableBody.d.ts +1 -1
  275. package/build/esm/Table/TableBody.js.map +0 -0
  276. package/build/esm/Table/TableCell.d.ts +1 -1
  277. package/build/esm/Table/TableCell.js.map +0 -0
  278. package/build/esm/Table/TableHead.d.ts +1 -1
  279. package/build/esm/Table/TableHead.js.map +0 -0
  280. package/build/esm/Table/TableRow.d.ts +1 -1
  281. package/build/esm/Table/TableRow.js.map +0 -0
  282. package/build/esm/Table/context.d.ts +0 -0
  283. package/build/esm/Table/context.js.map +0 -0
  284. package/build/esm/Table/index.d.ts +0 -0
  285. package/build/esm/Table/index.js.map +0 -0
  286. package/build/esm/Text/LoremIpsum.d.ts +0 -0
  287. package/build/esm/Text/LoremIpsum.js.map +0 -0
  288. package/build/esm/Text/Text.d.ts +1 -1
  289. package/build/esm/Text/Text.js.map +0 -0
  290. package/build/esm/Text/index.d.ts +0 -0
  291. package/build/esm/Text/index.js.map +0 -0
  292. package/build/esm/TextField/FilledContainer.d.ts +1 -1
  293. package/build/esm/TextField/FilledContainer.js +17 -10
  294. package/build/esm/TextField/FilledContainer.js.map +1 -1
  295. package/build/esm/TextField/HelperText.d.ts +1 -1
  296. package/build/esm/TextField/HelperText.js.map +0 -0
  297. package/build/esm/TextField/IconContainer.d.ts +2 -2
  298. package/build/esm/TextField/IconContainer.js +4 -2
  299. package/build/esm/TextField/IconContainer.js.map +1 -1
  300. package/build/esm/TextField/Input.d.ts +1 -1
  301. package/build/esm/TextField/Input.js +18 -10
  302. package/build/esm/TextField/Input.js.map +1 -1
  303. package/build/esm/TextField/OutlinedContainer.d.ts +1 -1
  304. package/build/esm/TextField/OutlinedContainer.js +7 -4
  305. package/build/esm/TextField/OutlinedContainer.js.map +1 -1
  306. package/build/esm/TextField/TextField.d.ts +1 -1
  307. package/build/esm/TextField/TextField.js.map +0 -0
  308. package/build/esm/TextField/consts.d.ts +5 -0
  309. package/build/esm/TextField/consts.js +6 -0
  310. package/build/esm/TextField/consts.js.map +1 -0
  311. package/build/esm/TextField/index.d.ts +0 -0
  312. package/build/esm/TextField/index.js.map +0 -0
  313. package/build/esm/ThemeExplorer/ColorPicker.js +2 -2
  314. package/build/esm/ThemeExplorer/ColorPicker.js.map +1 -1
  315. package/build/esm/ThemeExplorer/TextFieldColorPicker.js +5 -5
  316. package/build/esm/ThemeExplorer/TextFieldColorPicker.js.map +1 -1
  317. package/build/esm/Tooltip/Tooltip.d.ts +1 -1
  318. package/build/esm/Tooltip/Tooltip.js.map +0 -0
  319. package/build/esm/Tooltip/index.d.ts +0 -0
  320. package/build/esm/Tooltip/index.js.map +0 -0
  321. package/build/esm/color.d.ts +2 -1
  322. package/build/esm/color.js +10 -6
  323. package/build/esm/color.js.map +1 -1
  324. package/build/esm/css.d.ts +0 -0
  325. package/build/esm/css.js.map +0 -0
  326. package/build/esm/hooks/useAnimation.d.ts +0 -0
  327. package/build/esm/hooks/useAnimation.js.map +0 -0
  328. package/build/esm/index.d.ts +0 -0
  329. package/build/esm/index.js.map +0 -0
  330. package/build/esm/theme/index.d.ts +0 -0
  331. package/build/esm/theme/index.js.map +0 -0
  332. package/build/esm/theme/theme.d.ts +96 -50
  333. package/build/esm/theme/theme.js +133 -93
  334. package/build/esm/theme/theme.js.map +1 -1
  335. package/build/esm/theme/typography-raleway.d.ts +0 -0
  336. package/build/esm/theme/typography-raleway.js.map +0 -0
  337. package/build/esm/theme/typography-roboto.d.ts +0 -0
  338. package/build/esm/theme/typography-roboto.js.map +0 -0
  339. package/build/esm/theme/useTheme.d.ts +471 -1
  340. package/build/esm/theme/useTheme.js.map +0 -0
  341. package/build/tsconfig.tsbuildinfo +1 -1
  342. package/package.json +5 -4
  343. package/src/Alert/Alert.tsx +1 -1
  344. package/src/AppBar/AppBar.tsx +5 -6
  345. package/src/BottomSheet/BottomSheetSurface.tsx +1 -1
  346. package/src/Button/BaseButton.tsx +1 -0
  347. package/src/Button/Button.story.tsx +20 -33
  348. package/src/Button/Button.tsx +20 -6
  349. package/src/Button/ButtonGroup.story.tsx +106 -0
  350. package/src/Button/ButtonGroup.tsx +33 -0
  351. package/src/Button/FilledButton.tsx +38 -4
  352. package/src/Button/FloatingActionButton.tsx +9 -0
  353. package/src/Button/IconButton.tsx +1 -0
  354. package/src/Button/OutlinedButton.tsx +30 -2
  355. package/src/Button/SpinnerButton.story.tsx +1 -1
  356. package/src/Button/TransparentButton.tsx +32 -1
  357. package/src/Button/context.tsx +16 -0
  358. package/src/Button/index.ts +1 -0
  359. package/src/CheckBox/CheckBox.tsx +1 -1
  360. package/src/Chip/ButtonChip.tsx +42 -48
  361. package/src/Chip/Chip.story.tsx +48 -26
  362. package/src/Chip/ChipBase.tsx +40 -12
  363. package/src/Chip/ChoiceChip.tsx +18 -17
  364. package/src/Combobox/Combobox.tsx +2 -1
  365. package/src/Dialog/DialogSurface.tsx +20 -5
  366. package/src/FloatingLabel/FloatingLabel.tsx +0 -3
  367. package/src/ListItem/ListItem.tsx +55 -32
  368. package/src/ListItem/ListItemText.tsx +2 -4
  369. package/src/Menu/Menu.tsx +2 -2
  370. package/src/NotchedOutline/NotchedOutline.story.tsx +1 -1
  371. package/src/NotchedOutline/styledComponents.ts +6 -6
  372. package/src/Paper/Paper.story.tsx +16 -3
  373. package/src/Paper/Paper.tsx +6 -2
  374. package/src/RadioButton/RadioButton.tsx +1 -1
  375. package/src/RadioButton/RadioButtonIcon.tsx +2 -2
  376. package/src/Ripple/Ripple.story.tsx +1 -1
  377. package/src/Ripple/Ripple.tsx +1 -1
  378. package/src/Ripple/RippleBox.tsx +1 -0
  379. package/src/Ripple/useRippleSurface.ts +31 -7
  380. package/src/Select/PaymentMethodSelect.story.tsx +321 -0
  381. package/src/Select/Select.story.tsx +26 -1
  382. package/src/Select/Select.tsx +12 -34
  383. package/src/Select/SelectIcon.tsx +2 -1
  384. package/src/Select/styledComponents.tsx +8 -4
  385. package/src/Skeleton/Skeleton.story.tsx +2 -2
  386. package/src/Snackbar/Snackbar.tsx +4 -4
  387. package/src/Switch/Switch.tsx +7 -6
  388. package/src/Switch/styledComponents.tsx +69 -22
  389. package/src/Table/Table.tsx +1 -1
  390. package/src/TextField/FilledContainer.tsx +30 -10
  391. package/src/TextField/IconContainer.tsx +5 -4
  392. package/src/TextField/Input.tsx +33 -10
  393. package/src/TextField/OutlinedContainer.tsx +18 -4
  394. package/src/TextField/TextField.story.tsx +14 -1
  395. package/src/TextField/consts.ts +7 -0
  396. package/src/ThemeExplorer/ColorPicker.tsx +101 -0
  397. package/src/ThemeExplorer/TextFieldColorPicker.tsx +112 -0
  398. package/src/ThemeExplorer/ThemeBuilder.story.tsx +169 -0
  399. package/src/ThemeExplorer/ThemeColors.tsx +88 -0
  400. package/src/ThemeExplorer/ThemeExplorer.story.tsx +42 -0
  401. package/src/ThemeExplorer/components.tsx +208 -0
  402. package/src/ThemeExplorer/makeColorScheme.tsx +73 -0
  403. package/src/ThemeExplorer/useDeferredColor.tsx +24 -0
  404. package/src/ThemeExplorer/useLocalStorageCachedState.ts +18 -0
  405. package/src/color.ts +18 -13
  406. package/src/theme/theme.ts +131 -92
  407. package/src/ListItem/context.ts +0 -13
@@ -0,0 +1,321 @@
1
+ import { Box, Select, SelectItem, SelectProps } from '../';
2
+ import { forwardRef, useState } from 'react';
3
+ import type { ReactElement, ComponentType } from 'react';
4
+
5
+ export default {
6
+ title: 'components/Select/Complex',
7
+ };
8
+
9
+ const ApplePayMark = (props) => (
10
+ <svg
11
+ xmlns="http://www.w3.org/2000/svg"
12
+ width={165.521}
13
+ height={105.965}
14
+ viewBox="0 0 166 106"
15
+ xmlSpace="preserve"
16
+ {...props}
17
+ >
18
+ <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" />
19
+ <path
20
+ fill="#FFF"
21
+ 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"
22
+ />
23
+ <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" />
24
+ </svg>
25
+ );
26
+
27
+ const MastercardCard = (props) => (
28
+ <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" {...props}>
29
+ <g fill="none">
30
+ <path d="M0 0h32v32H0z" fill="#000" />
31
+ <path d="M13.02 10.505h5.923v10.857H13.02z" fill="#ff5f00" />
32
+ <path
33
+ 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"
34
+ fill="#eb001b"
35
+ />
36
+ <path
37
+ 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"
38
+ fill="#f79e1b"
39
+ />
40
+ </g>
41
+ </svg>
42
+ );
43
+
44
+ const IDEALLogo = (props) => (
45
+ <svg
46
+ id="Layer_1"
47
+ xmlns="http://www.w3.org/2000/svg"
48
+ x={0}
49
+ y={0}
50
+ viewBox="0 0 306.1 269.8"
51
+ style={{
52
+ enableBackground: 'new 0 0 306.1 269.8',
53
+ }}
54
+ xmlSpace="preserve"
55
+ {...props}
56
+ >
57
+ <style>{'.st0{fill:#fff}'}</style>
58
+ <path
59
+ className="st0"
60
+ 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"
61
+ />
62
+ <path
63
+ 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"
64
+ style={{
65
+ fill: '#c06',
66
+ }}
67
+ />
68
+ <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" />
69
+ <path
70
+ className="st0"
71
+ 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"
72
+ />
73
+ <circle cx={58.5} cy={132.1} r={18.7} />
74
+ <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" />
75
+ </svg>
76
+ );
77
+
78
+ const GooglePayLogo = (props) => (
79
+ <svg
80
+ width={752}
81
+ height={400}
82
+ fill="none"
83
+ viewBox="0 0 752 400"
84
+ xmlns="http://www.w3.org/2000/svg"
85
+ {...props}
86
+ >
87
+ <path
88
+ d="M552 0H200C90 0 0 90 0 200s90 200 200 200h352c110 0 200-90 200-200S662 0 552 0Z"
89
+ fill="#fff"
90
+ />
91
+ <path
92
+ 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"
93
+ fill="#3C4043"
94
+ />
95
+ <path
96
+ 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"
97
+ fill="#3C4043"
98
+ />
99
+ <path
100
+ 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"
101
+ fill="#4285F4"
102
+ />
103
+ <path
104
+ 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"
105
+ fill="#34A853"
106
+ />
107
+ <path
108
+ 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"
109
+ fill="#FABB05"
110
+ />
111
+ <path
112
+ 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"
113
+ fill="#E94235"
114
+ />
115
+ </svg>
116
+ );
117
+
118
+ const svgByBrand: Record<string, ComponentType<any>> = {
119
+ amex: MastercardCard,
120
+ diners: MastercardCard,
121
+ discover: MastercardCard,
122
+ jcb: MastercardCard,
123
+ mastercard: MastercardCard,
124
+ unionpay: MastercardCard,
125
+ visa: MastercardCard,
126
+ unknown: MastercardCard,
127
+ };
128
+
129
+ export type PaymentMethodCard = {
130
+ type: 'card';
131
+ id: string;
132
+ last4: string;
133
+ brand: string;
134
+ };
135
+
136
+ export type PaymentMethodSepaDebit = {
137
+ type: 'sepa_debit';
138
+ id: string;
139
+ };
140
+
141
+ export type PaymentMethodIDEAL = {
142
+ type: 'ideal';
143
+ id: 'ideal';
144
+ };
145
+
146
+ export type PaymentMethodApplePay = {
147
+ type: 'apple_pay';
148
+ id: 'apple_pay';
149
+ };
150
+
151
+ export type PaymentMethodGooglePay = {
152
+ type: 'google_pay';
153
+ id: 'google_pay';
154
+ };
155
+
156
+ export type PaymentMethodNewCard = {
157
+ type: 'new_card';
158
+ id: 'new_card';
159
+ };
160
+
161
+ export type PaymentMethod =
162
+ | PaymentMethodCard
163
+ | PaymentMethodIDEAL
164
+ | PaymentMethodSepaDebit
165
+ | PaymentMethodApplePay
166
+ | PaymentMethodGooglePay
167
+ | PaymentMethodNewCard;
168
+
169
+ export interface PaymentMethodSelectProps {
170
+ paymentMethods: PaymentMethod[];
171
+ value: string;
172
+ onChange: SelectProps['onChange'];
173
+ }
174
+
175
+ const logoWidth = 32;
176
+ const logoHeight = 24;
177
+ const LogoWrapper = ({ children }: { children: ReactElement }) => (
178
+ <Box
179
+ sx={{
180
+ mr: 2,
181
+ borderRadius: '2px',
182
+ overflow: 'hidden',
183
+ width: logoWidth,
184
+ height: logoHeight,
185
+ minWidth: logoWidth,
186
+ minHeight: logoHeight,
187
+ '& > svg': { width: logoWidth, height: logoWidth },
188
+ display: 'inline-flex',
189
+ alignItems: 'center',
190
+ justifyContent: 'center',
191
+ }}
192
+ >
193
+ {children}
194
+ </Box>
195
+ );
196
+
197
+ function SelectItemContent(props: PaymentMethod): ReactElement {
198
+ if (props.type === 'card') {
199
+ const CardIcon = svgByBrand[props.brand] || svgByBrand['unknown'];
200
+ return (
201
+ <>
202
+ <LogoWrapper>
203
+ <CardIcon />
204
+ </LogoWrapper>
205
+ {props.id} •••• {props.last4}
206
+ </>
207
+ );
208
+ }
209
+ if (props.type === 'ideal') {
210
+ return (
211
+ <>
212
+ <LogoWrapper>
213
+ <IDEALLogo />
214
+ </LogoWrapper>
215
+ iDEAL
216
+ </>
217
+ );
218
+ }
219
+ if (props.type === 'apple_pay') {
220
+ return (
221
+ <>
222
+ <LogoWrapper>
223
+ <ApplePayMark />
224
+ </LogoWrapper>
225
+ Apple Pay
226
+ </>
227
+ );
228
+ }
229
+ if (props.type === 'google_pay') {
230
+ return (
231
+ <>
232
+ <LogoWrapper>
233
+ <GooglePayLogo />
234
+ </LogoWrapper>
235
+ Google Pay
236
+ </>
237
+ );
238
+ }
239
+ if (props.type === 'sepa_debit') {
240
+ return (
241
+ <>
242
+ <LogoWrapper>
243
+ <IDEALLogo />
244
+ </LogoWrapper>
245
+ Direct debit
246
+ </>
247
+ );
248
+ }
249
+ if (props.type === 'new_card') {
250
+ return <>Add new card...</>;
251
+ }
252
+ return <>Unknown payment method</>;
253
+ }
254
+
255
+ const PaymentMethodSelect = forwardRef<
256
+ HTMLButtonElement | HTMLSelectElement,
257
+ PaymentMethodSelectProps
258
+ >(function PaymentMethodSelect(props, ref) {
259
+ const { onChange, paymentMethods, value } = props;
260
+ return (
261
+ <Select
262
+ ref={ref}
263
+ label="Payment method"
264
+ variant="outlined"
265
+ onChange={onChange}
266
+ value={value}
267
+ >
268
+ {paymentMethods.map((m) => (
269
+ <SelectItem value={m.id} key={m.id}>
270
+ <Box display="inline-flex" alignItems="center">
271
+ <SelectItemContent {...m} />
272
+ </Box>
273
+ </SelectItem>
274
+ ))}
275
+ </Select>
276
+ );
277
+ });
278
+
279
+ export const PaymentMethodSelectControlled = () => {
280
+ const paymentMethods: PaymentMethod[] = [
281
+ {
282
+ type: 'apple_pay',
283
+ id: 'apple_pay',
284
+ },
285
+ {
286
+ type: 'google_pay',
287
+ id: 'google_pay',
288
+ },
289
+ { type: 'ideal', id: 'ideal' },
290
+ ];
291
+ for (const testCard of [
292
+ 'amex',
293
+ 'diners',
294
+ 'discover',
295
+ 'jcb',
296
+ 'mastercard',
297
+ 'unionpay',
298
+ 'visa',
299
+ 'unknown',
300
+ ]) {
301
+ for (let i = 0; i < 10; i++) {
302
+ paymentMethods.push({
303
+ type: 'card',
304
+ id: testCard + `_${i}`,
305
+ brand: testCard,
306
+ last4: '1234',
307
+ });
308
+ }
309
+ }
310
+ const [value, setValue] = useState(paymentMethods[0].id);
311
+
312
+ console.log({ value });
313
+
314
+ return (
315
+ <PaymentMethodSelect
316
+ value={value}
317
+ onChange={(_, v) => setValue(v)}
318
+ paymentMethods={paymentMethods}
319
+ />
320
+ );
321
+ };
@@ -9,6 +9,19 @@ export default {
9
9
  title: 'components/Select',
10
10
  };
11
11
 
12
+ const SearchIcon = (props) => (
13
+ <svg
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ height={24}
16
+ width={24}
17
+ viewBox="0 0 48 48"
18
+ fill="currentColor"
19
+ {...props}
20
+ >
21
+ <path d="M39.8 41.95 26.65 28.8q-1.5 1.3-3.5 2.025-2 .725-4.25.725-5.4 0-9.15-3.75T6 18.75q0-5.3 3.75-9.05 3.75-3.75 9.1-3.75 5.3 0 9.025 3.75 3.725 3.75 3.725 9.05 0 2.15-.7 4.15-.7 2-2.1 3.75L42 39.75Zm-20.95-13.4q4.05 0 6.9-2.875Q28.6 22.8 28.6 18.75t-2.85-6.925Q22.9 8.95 18.85 8.95q-4.1 0-6.975 2.875T9 18.75q0 4.05 2.875 6.925t6.975 2.875Z" />
22
+ </svg>
23
+ );
24
+
12
25
  const Example = ({ variant, native = false }) => {
13
26
  const [error, setError] = useState<boolean | string>(false);
14
27
  const [color, setColor] = useState<'primary' | 'secondary'>('primary');
@@ -186,7 +199,19 @@ const Example = ({ variant, native = false }) => {
186
199
  label=""
187
200
  helperText="Helper text"
188
201
  children={children}
189
- leadingIcon={'O'}
202
+ leadingIcon={<SearchIcon />}
203
+ />
204
+ </Box>
205
+ <Box mb={3} width={230}>
206
+ <Select
207
+ error={error}
208
+ color={color}
209
+ native={native}
210
+ variant={variant}
211
+ label="Standard"
212
+ helperText="Helper text"
213
+ children={children}
214
+ leadingIcon={<SearchIcon />}
190
215
  />
191
216
  </Box>
192
217
  </Box>
@@ -1,12 +1,4 @@
1
- import {
2
- forwardRef,
3
- useState,
4
- useRef,
5
- ForwardRefExoticComponent,
6
- RefAttributes,
7
- useEffect,
8
- useId,
9
- } from 'react';
1
+ import { forwardRef, useState, useRef, useEffect, useId } from 'react';
10
2
 
11
3
  import type * as React from 'react';
12
4
  import {
@@ -15,11 +7,7 @@ import {
15
7
  useControlledState,
16
8
  } from '@basic-ui/core';
17
9
  import { useTheme, Theme } from '../theme';
18
- import {
19
- Select as SelectComp,
20
- SelectButton,
21
- SelectProps as BaseSelectProps,
22
- } from './styledComponents';
10
+ import { Select as SelectComp, SelectButton } from './styledComponents';
23
11
  import { FilledContainer } from '../TextField/FilledContainer';
24
12
  import { HelperText } from '../TextField/HelperText';
25
13
  import { OutlinedContainer } from '../TextField/OutlinedContainer';
@@ -27,7 +15,7 @@ import { SelectProvider } from './context';
27
15
  import { Menu, MenuPopover, MenuList } from '../Menu';
28
16
  import { SelectIcon } from './SelectIcon';
29
17
  import { makeDefaultRender } from './defaultRender';
30
- import { Box } from '../Box';
18
+ import { Box, BoxProps } from '../Box';
31
19
  import { IconContainer } from '../TextField/IconContainer';
32
20
 
33
21
  const componentMap = {
@@ -37,7 +25,7 @@ const componentMap = {
37
25
 
38
26
  export interface SelectProps
39
27
  extends Omit<
40
- React.SelectHTMLAttributes<HTMLSelectElement>,
28
+ BoxProps<HTMLSelectElement, React.SelectHTMLAttributes<HTMLSelectElement>>,
41
29
  'value' | 'defaultValue' | 'onChange'
42
30
  > {
43
31
  variant?: 'outlined' | 'filled';
@@ -108,7 +96,10 @@ export const Select = forwardRef<
108
96
 
109
97
  const handleOnChange = (e: any) => {
110
98
  onChange &&
111
- onChange(e as any, native ? e.target.value : e.target.dataset.value);
99
+ onChange(
100
+ e as any,
101
+ native ? e.target.value : e.currentTarget.dataset.value
102
+ );
112
103
  };
113
104
 
114
105
  const hasError = Boolean(error);
@@ -122,9 +113,9 @@ export const Select = forwardRef<
122
113
 
123
114
  const labelIsFloating = hasFocus || open || renderValue(value) !== undefined;
124
115
 
125
- const Comp: ForwardRefExoticComponent<
126
- BaseSelectProps & RefAttributes<HTMLSelectElement | HTMLButtonElement>
127
- > = native ? SelectComp : (SelectButton as any);
116
+ const Comp: React.ComponentType<any> = native
117
+ ? (SelectComp as any)
118
+ : (SelectButton as any);
128
119
 
129
120
  useEffect(() => {
130
121
  // right after mounting, if the default value in the select element
@@ -170,6 +161,7 @@ export const Select = forwardRef<
170
161
  aria-describedby={helperTextId}
171
162
  hasLabel={!!label}
172
163
  leadingIcon={Boolean(leadingIcon)}
164
+ trailingIcon={true}
173
165
  {...otherProps}
174
166
  >
175
167
  {native ? children : renderValue(value)}
@@ -182,20 +174,6 @@ export const Select = forwardRef<
182
174
  minWidth: buttonRef?.current?.offsetWidth,
183
175
  }}
184
176
  role="listbox"
185
- __css={
186
- variant === 'filled'
187
- ? {
188
- "[data-popper-placement='top'] &": {
189
- borderBottomLeftRadius: 0,
190
- borderBottomRightRadius: 0,
191
- },
192
- "[data-popper-placement='bottom'] &": {
193
- borderTopLeftRadius: 0,
194
- borderTopRightRadius: 0,
195
- },
196
- }
197
- : {}
198
- }
199
177
  >
200
178
  {children}
201
179
  </MenuList>
@@ -3,6 +3,7 @@ import type * as React from 'react';
3
3
  import { Box, BoxProps } from '../Box';
4
4
  import { rem } from 'polished';
5
5
  import { alpha } from '../color';
6
+ import { PADDING_RIGHT_WITH_ICON } from '../TextField/consts';
6
7
 
7
8
  export type SelectIconProps = BoxProps<
8
9
  SVGElement,
@@ -22,7 +23,7 @@ export const SelectIcon = forwardRef<SVGElement, SelectIconProps>(
22
23
  __css={{
23
24
  position: 'absolute',
24
25
  top: `calc(50% - ${rem(12)})`,
25
- right: rem(7),
26
+ right: rem(PADDING_RIGHT_WITH_ICON),
26
27
  width: rem(24),
27
28
  height: rem(24),
28
29
  color: open ? 'primary' : alpha('on.surface', 0.54),
@@ -26,17 +26,21 @@ export const Select = forwardRef<HTMLSelectElement, SelectProps>(
26
26
  const SelectButtonInner = forwardRef<
27
27
  HTMLButtonElement,
28
28
  SelectProps & { innerAs?: React.ElementType<any> }
29
- >(({ innerAs = 'button', ...props }, forwardedRef) => {
29
+ >(({ innerAs = 'div', ...props }, forwardedRef) => {
30
30
  const InputButton: React.FC<
31
31
  SelectProps & React.RefAttributes<HTMLButtonElement>
32
32
  > = Input as any;
33
33
 
34
- return <InputButton as={innerAs} ref={forwardedRef} {...props} />;
34
+ return (
35
+ <InputButton as={innerAs} ref={forwardedRef} tabIndex={0} {...props} />
36
+ );
35
37
  });
36
38
 
37
39
  export const SelectButton = forwardRef<
38
40
  HTMLButtonElement,
39
41
  SelectProps & MenuButtonProps
40
- >(({ as, ...props }, ref) => (
41
- <BaseMenuButton as={SelectButtonInner} innerAs={as} ref={ref} {...props} />
42
+ >(({ as, children, ...props }, ref) => (
43
+ <BaseMenuButton as={SelectButtonInner} innerAs={as} ref={ref} {...props}>
44
+ {children}
45
+ </BaseMenuButton>
42
46
  ));
@@ -20,11 +20,11 @@ const Skeletons = ({
20
20
  animation={animation}
21
21
  width={60}
22
22
  height={60}
23
- borderRadius="50%"
23
+ borderRadius="full"
24
24
  m={2}
25
25
  />
26
26
  <Skeleton animation={animation} m={2}>
27
- <Box width={60} height={60} borderRadius="50%" />
27
+ <Box width={60} height={60} borderRadius="full" />
28
28
  </Skeleton>
29
29
  </Box>
30
30
  );
@@ -39,21 +39,21 @@ export const Snackbar = forwardRef<HTMLDivElement, SnackbarProps>(
39
39
 
40
40
  return (
41
41
  <Paper
42
- elevation={6}
43
- backgroundOverlay={6}
42
+ elevation={4}
43
+ backgroundOverlay={4}
44
44
  className={
45
45
  colorMode === 'default' ? DARK_THEME_CLASS : DEFAULT_THEME_CLASS
46
46
  }
47
47
  ref={assignMultipleRefs(forwardedRef, ref)}
48
48
  __css={{
49
- boxShadow: 6,
49
+ boxShadow: 4,
50
50
  py: rem(6),
51
51
  pl: 3,
52
52
  pr: 3,
53
53
  display: 'inline-flex',
54
54
  minWidth: `min(100%, ${rem(344)})`,
55
55
  maxWidth: ['100%', 'unset'],
56
- borderRadius: rem(4),
56
+ borderRadius: 'extra-small',
57
57
  color: 'on.surface',
58
58
  flexDirection: 'row',
59
59
  willChange: 'transform,opacity',
@@ -3,7 +3,6 @@ import type * as React from 'react';
3
3
  import { RippleBox, RippleBoxProps } from '../Ripple';
4
4
  import { Box, BoxProps } from '../Box';
5
5
  import { useTheme } from '../theme';
6
- import { rem } from 'polished';
7
6
  import { CheckBox as _CheckBoxCore } from '@basic-ui/core';
8
7
  import {
9
8
  SelectionControlLabel,
@@ -42,8 +41,8 @@ const SwitchInner = forwardRef<HTMLInputElement, SwitchProps>(
42
41
 
43
42
  return (
44
43
  <Box p={2} display="inline-block" minWidth="auto">
45
- <Box position="relative" opacity={disabled ? 0.38 : 1}>
46
- <SwitchTrail checked={checked} />
44
+ <Box position="relative">
45
+ <SwitchTrail checked={checked} disabled={disabled} />
47
46
  <SwitchThumb checked={checked}>
48
47
  <RippleBox<
49
48
  RippleBoxProps<
@@ -52,6 +51,7 @@ const SwitchInner = forwardRef<HTMLInputElement, SwitchProps>(
52
51
  >
53
52
  >
54
53
  as={Comp}
54
+ role="switch"
55
55
  type="checkbox"
56
56
  checked={checked}
57
57
  onChange={onChange}
@@ -64,20 +64,21 @@ const SwitchInner = forwardRef<HTMLInputElement, SwitchProps>(
64
64
  focusOpacity={0.12}
65
65
  center={true}
66
66
  disabled={disabled}
67
+ data-switch-thumb=""
67
68
  {...otherProps}
68
69
  __css={{
69
70
  top: '50%',
70
71
  left: '50%',
71
72
  backgroundColor: 'transparent',
72
73
  transform: 'translate(-50%, -50%)',
73
- width: rem(48),
74
- height: rem(48),
74
+ width: '100%',
75
+ height: '100%',
75
76
  appearance: 'none',
76
77
  ':focus': {
77
78
  outline: 'none',
78
79
  },
79
80
  border: 'none',
80
- borderRadius: '50%',
81
+ borderRadius: 'full',
81
82
  zIndex: 1,
82
83
  position: 'absolute',
83
84
  ...__css,