@basic-ui/material 0.1.13 → 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 (430) hide show
  1. package/build/cjs/index.js +634 -371
  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 -53
  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 +5 -14
  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 +4 -4
  287. package/build/esm/Text/LoremIpsum.js.map +1 -1
  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 +2 -2
  308. package/build/esm/TextField/TextField.js.map +1 -1
  309. package/build/esm/TextField/consts.d.ts +5 -0
  310. package/build/esm/TextField/consts.js +6 -0
  311. package/build/esm/TextField/consts.js.map +1 -0
  312. package/build/esm/TextField/index.d.ts +0 -0
  313. package/build/esm/TextField/index.js.map +0 -0
  314. package/build/esm/ThemeExplorer/ColorPicker.js +2 -2
  315. package/build/esm/ThemeExplorer/ColorPicker.js.map +1 -1
  316. package/build/esm/ThemeExplorer/TextFieldColorPicker.js +5 -5
  317. package/build/esm/ThemeExplorer/TextFieldColorPicker.js.map +1 -1
  318. package/build/esm/Tooltip/Tooltip.d.ts +1 -1
  319. package/build/esm/Tooltip/Tooltip.js.map +0 -0
  320. package/build/esm/Tooltip/index.d.ts +0 -0
  321. package/build/esm/Tooltip/index.js.map +0 -0
  322. package/build/esm/color.d.ts +2 -1
  323. package/build/esm/color.js +10 -6
  324. package/build/esm/color.js.map +1 -1
  325. package/build/esm/css.d.ts +0 -0
  326. package/build/esm/css.js.map +0 -0
  327. package/build/esm/hooks/useAnimation.d.ts +0 -0
  328. package/build/esm/hooks/useAnimation.js.map +0 -0
  329. package/build/esm/index.d.ts +0 -0
  330. package/build/esm/index.js.map +0 -0
  331. package/build/esm/theme/index.d.ts +0 -0
  332. package/build/esm/theme/index.js.map +0 -0
  333. package/build/esm/theme/theme.d.ts +96 -50
  334. package/build/esm/theme/theme.js +133 -93
  335. package/build/esm/theme/theme.js.map +1 -1
  336. package/build/esm/theme/typography-raleway.d.ts +0 -0
  337. package/build/esm/theme/typography-raleway.js.map +0 -0
  338. package/build/esm/theme/typography-roboto.d.ts +0 -0
  339. package/build/esm/theme/typography-roboto.js.map +0 -0
  340. package/build/esm/theme/useTheme.d.ts +471 -1
  341. package/build/esm/theme/useTheme.js.map +0 -0
  342. package/build/tsconfig.tsbuildinfo +1 -4757
  343. package/package.json +15 -14
  344. package/src/Alert/Alert.story.tsx +5 -6
  345. package/src/Alert/Alert.tsx +1 -1
  346. package/src/AppBar/AppBar.story.tsx +11 -20
  347. package/src/AppBar/AppBar.tsx +5 -6
  348. package/src/BottomSheet/BottomSheet.story.tsx +5 -6
  349. package/src/BottomSheet/BottomSheetSurface.tsx +1 -1
  350. package/src/Button/BaseButton.tsx +1 -0
  351. package/src/Button/Button.story.tsx +34 -47
  352. package/src/Button/Button.tsx +20 -6
  353. package/src/Button/ButtonGroup.story.tsx +106 -0
  354. package/src/Button/ButtonGroup.tsx +33 -0
  355. package/src/Button/FilledButton.tsx +38 -4
  356. package/src/Button/FloatingActionButton.tsx +9 -0
  357. package/src/Button/IconButton.tsx +1 -0
  358. package/src/Button/OutlinedButton.tsx +30 -2
  359. package/src/Button/SpinnerButton.story.tsx +7 -7
  360. package/src/Button/TransparentButton.tsx +32 -1
  361. package/src/Button/context.tsx +16 -0
  362. package/src/Button/index.ts +1 -0
  363. package/src/CheckBox/CheckBox.story.tsx +7 -6
  364. package/src/CheckBox/CheckBox.tsx +1 -1
  365. package/src/Chip/ButtonChip.tsx +42 -46
  366. package/src/Chip/Chip.story.tsx +98 -26
  367. package/src/Chip/ChipBase.tsx +40 -12
  368. package/src/Chip/ChoiceChip.tsx +18 -17
  369. package/src/Combobox/Combobox.story.tsx +12 -13
  370. package/src/Combobox/Combobox.tsx +2 -1
  371. package/src/Dialog/Dialog.story.tsx +7 -8
  372. package/src/Dialog/DialogSurface.tsx +20 -5
  373. package/src/Divider/Divider.story.tsx +6 -5
  374. package/src/FloatingLabel/FloatingLabel.story.tsx +10 -9
  375. package/src/FloatingLabel/FloatingLabel.tsx +0 -3
  376. package/src/LineRipple/LineRipple.story.tsx +5 -4
  377. package/src/Link/Link.story.tsx +3 -4
  378. package/src/ListItem/ListItem.story.tsx +6 -5
  379. package/src/ListItem/ListItem.tsx +55 -32
  380. package/src/ListItem/ListItemText.tsx +2 -4
  381. package/src/Menu/Menu.story.tsx +8 -7
  382. package/src/Menu/Menu.tsx +2 -2
  383. package/src/NotchedOutline/NotchedOutline.story.tsx +6 -5
  384. package/src/NotchedOutline/styledComponents.ts +6 -6
  385. package/src/Paper/Paper.story.tsx +21 -7
  386. package/src/Paper/Paper.tsx +6 -2
  387. package/src/ProgressSpinner/ProgressSpinner.story.tsx +5 -4
  388. package/src/RadioButton/RadioButton.story.tsx +12 -10
  389. package/src/RadioButton/RadioButton.tsx +1 -1
  390. package/src/RadioButton/RadioButtonIcon.tsx +2 -2
  391. package/src/Ripple/Ripple.story.tsx +6 -5
  392. package/src/Ripple/Ripple.tsx +1 -1
  393. package/src/Ripple/RippleBox.tsx +1 -0
  394. package/src/Ripple/useRippleSurface.ts +31 -7
  395. package/src/Select/PaymentMethodSelect.story.tsx +321 -0
  396. package/src/Select/Select.story.tsx +34 -8
  397. package/src/Select/Select.tsx +12 -34
  398. package/src/Select/SelectIcon.tsx +2 -1
  399. package/src/Select/styledComponents.tsx +8 -4
  400. package/src/Skeleton/Skeleton.story.tsx +9 -8
  401. package/src/Snackbar/Snackbar.story.tsx +7 -6
  402. package/src/Snackbar/Snackbar.tsx +4 -4
  403. package/src/Switch/Switch.story.tsx +5 -4
  404. package/src/Switch/Switch.tsx +7 -6
  405. package/src/Switch/styledComponents.tsx +69 -22
  406. package/src/Tab/Tab.story.tsx +7 -5
  407. package/src/Table/Table.story.tsx +5 -4
  408. package/src/Table/Table.tsx +1 -1
  409. package/src/Text/LoremIpsum.tsx +3 -1
  410. package/src/Text/Text.story.tsx +5 -4
  411. package/src/TextField/FilledContainer.tsx +30 -10
  412. package/src/TextField/IconContainer.tsx +5 -4
  413. package/src/TextField/Input.tsx +33 -10
  414. package/src/TextField/OutlinedContainer.tsx +18 -4
  415. package/src/TextField/TextField.story.tsx +21 -7
  416. package/src/TextField/TextField.tsx +2 -2
  417. package/src/TextField/consts.ts +7 -0
  418. package/src/ThemeExplorer/ColorPicker.tsx +101 -0
  419. package/src/ThemeExplorer/TextFieldColorPicker.tsx +112 -0
  420. package/src/ThemeExplorer/ThemeBuilder.story.tsx +169 -0
  421. package/src/ThemeExplorer/ThemeColors.tsx +88 -0
  422. package/src/ThemeExplorer/ThemeExplorer.story.tsx +42 -0
  423. package/src/ThemeExplorer/components.tsx +208 -0
  424. package/src/ThemeExplorer/makeColorScheme.tsx +73 -0
  425. package/src/ThemeExplorer/useDeferredColor.tsx +24 -0
  426. package/src/ThemeExplorer/useLocalStorageCachedState.ts +18 -0
  427. package/src/Tooltip/Tooltip.story.tsx +5 -4
  428. package/src/color.ts +18 -13
  429. package/src/theme/theme.ts +131 -92
  430. package/src/ListItem/context.ts +0 -13
@@ -1,15 +1,31 @@
1
1
  import { useState } from 'react';
2
2
  import { Paper } from './';
3
- import { storiesOf } from '@storybook/react';
4
3
  import { Text } from '../Text';
5
4
  import { Box } from '../Box';
5
+ import { rem } from 'polished';
6
+
7
+ export default {
8
+ title: 'components/Paper',
9
+ };
6
10
 
7
11
  const Example = ({}) => {
8
12
  const [elevation, setElevation] = useState(0);
9
13
 
10
14
  return (
11
- <Box p="6" bg={'surface'} color={'on.surface'} width="100%" height="100vh">
12
- <Paper outlined width="300px" height="300px" elevation={elevation} mb="4">
15
+ <Box
16
+ p="6"
17
+ bg={'surface'}
18
+ color={'on.primary-container'}
19
+ width="100%"
20
+ height="100vh"
21
+ >
22
+ <Paper
23
+ width="216px"
24
+ height="216px"
25
+ elevation={elevation}
26
+ mb="4"
27
+ sx={{ borderRadius: 'large' }}
28
+ >
13
29
  <Text variant="h3">Hello</Text>
14
30
  <Text variant="body1">This is looking cool</Text>
15
31
  Pretty cool.
@@ -21,7 +37,7 @@ const Example = ({}) => {
21
37
  <input
22
38
  type="range"
23
39
  min={0}
24
- max={24}
40
+ max={5}
25
41
  value={elevation}
26
42
  onChange={(e) => setElevation(Number(e.target.value))}
27
43
  />
@@ -30,6 +46,4 @@ const Example = ({}) => {
30
46
  );
31
47
  };
32
48
 
33
- const stories = storiesOf('Components/Paper', module);
34
-
35
- stories.add('paper', () => <Example />);
49
+ export const Default = () => <Example />;
@@ -3,7 +3,7 @@ import type * as React from 'react';
3
3
  import { Box, BoxProps } from '../Box';
4
4
  import { useTheme } from '../theme';
5
5
  import { rem } from 'polished';
6
- import { alpha, getDarkThemeBackgroundOverlay } from '../color';
6
+ import { alpha, getBackgroundOverlay } from '../color';
7
7
 
8
8
  export interface PaperProps extends BoxProps {
9
9
  as?: React.ElementType<any>;
@@ -43,7 +43,11 @@ export const Paper = forwardRef<HTMLDivElement, PaperProps>(function Paper(
43
43
  borderColor: alpha('on.surface', 0.12),
44
44
  }
45
45
  : {}),
46
- ...getDarkThemeBackgroundOverlay(theme, backgroundOverlay ?? elevation),
46
+ ...getBackgroundOverlay(
47
+ theme,
48
+ backgroundOverlay ?? elevation,
49
+ 'primary'
50
+ ),
47
51
  ...__css,
48
52
  }}
49
53
  {...otherProps}
@@ -1,8 +1,11 @@
1
1
  import { useEffect, useState } from 'react';
2
2
  import { ProgressSpinner } from './';
3
- import { storiesOf } from '@storybook/react';
4
3
  import { Box } from '../Box';
5
4
 
5
+ export default {
6
+ title: 'components/ProgressSpinner',
7
+ };
8
+
6
9
  const Example = () => {
7
10
  const steps = [0, 25, 50, 75, 100];
8
11
  const [currentProgress, setCurrentProgress] = useState(0);
@@ -28,6 +31,4 @@ const Example = () => {
28
31
  );
29
32
  };
30
33
 
31
- const stories = storiesOf('Components/ProgressSpinner', module);
32
-
33
- stories.add('controlled', () => <Example />);
34
+ export const Default = () => <Example />;
@@ -1,9 +1,12 @@
1
1
  import { useState } from 'react';
2
2
  import type * as React from 'react';
3
3
  import { RadioButton, RadioGroup, Box } from '../';
4
- import { storiesOf } from '@storybook/react';
5
4
  // import './styles.css';
6
5
 
6
+ export default {
7
+ title: 'components/RadioButton',
8
+ };
9
+
7
10
  const Example = (props) => {
8
11
  return (
9
12
  <>
@@ -29,7 +32,7 @@ const Example = (props) => {
29
32
  );
30
33
  };
31
34
 
32
- const Standalone = (props) => {
35
+ const StandaloneExample = (props) => {
33
36
  const [selectedValue, setSelectedValue] = useState('a');
34
37
  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
35
38
  setSelectedValue(e.target.value);
@@ -90,17 +93,16 @@ const Standalone = (props) => {
90
93
  );
91
94
  };
92
95
 
93
- const stories = storiesOf('Components/RadioButton', module);
94
-
95
- stories.add('controlled', () => (
96
+ export const Controlled = () => (
96
97
  <>
97
98
  <Example name="demo-1" />
98
99
  <Example name="demo-2" />
99
100
  </>
100
- ));
101
- stories.add('standalone', () => (
101
+ );
102
+
103
+ export const Standalone = () => (
102
104
  <>
103
- <Standalone name="demo-1" />
104
- <Standalone name="demo-2" />
105
+ <StandaloneExample name="demo-1" />
106
+ <StandaloneExample name="demo-2" />
105
107
  </>
106
- ));
108
+ );
@@ -50,7 +50,7 @@ const RadioButtonInner = forwardRef<
50
50
  outline: 'none',
51
51
  },
52
52
  border: 'none',
53
- borderRadius: '50%',
53
+ borderRadius: 'full',
54
54
  zIndex: 1,
55
55
  position: 'absolute',
56
56
  ...__css,
@@ -19,7 +19,7 @@ export const RadioButtonIcon = forwardRef<HTMLDivElement, RadioButtonIconProps>(
19
19
  __css={{
20
20
  borderColor: 'currentColor',
21
21
  borderStyle: 'solid',
22
- borderRadius: '50%',
22
+ borderRadius: 'full',
23
23
  borderWidth: rem(2),
24
24
  width: '100%',
25
25
  height: '100%',
@@ -30,7 +30,7 @@ export const RadioButtonIcon = forwardRef<HTMLDivElement, RadioButtonIconProps>(
30
30
  <Box
31
31
  __css={{
32
32
  backgroundColor: 'currentColor',
33
- borderRadius: '50%',
33
+ borderRadius: 'full',
34
34
  width: '100%',
35
35
  height: '100%',
36
36
  transition:
@@ -3,10 +3,13 @@ import { Ripple, useRipple } from './';
3
3
  import { Box } from '../Box';
4
4
  import { Text } from '../Text';
5
5
  import { Button } from '../Button';
6
- import { storiesOf } from '@storybook/react';
7
6
  import { useTheme } from '../theme';
8
7
  import { get } from '@styled-system/css';
9
8
 
9
+ export default {
10
+ title: 'helper components/Ripple',
11
+ };
12
+
10
13
  const Example = () => {
11
14
  const theme = useTheme();
12
15
  const ref = useRef<HTMLDivElement>();
@@ -31,7 +34,7 @@ const Example = () => {
31
34
  bg="#eee"
32
35
  sx={{
33
36
  position: 'relative',
34
- borderRadius: 30,
37
+ borderRadius: 'extra-large',
35
38
  overflow: 'hidden',
36
39
  willChange: 'transform',
37
40
  }}
@@ -66,6 +69,4 @@ const Example = () => {
66
69
  );
67
70
  };
68
71
 
69
- const stories = storiesOf('Helper Components/Ripple', module);
70
-
71
- stories.add('controlled', () => <Example />);
72
+ export const Controlled = () => <Example />;
@@ -22,7 +22,7 @@ export const rippleStyle = ({
22
22
  backgroundColor: `var(${RIPPLE_BACKGROUND_COLOR})`,
23
23
  transformOrigin: 'center center',
24
24
  opacity: 0,
25
- borderRadius: '50%',
25
+ borderRadius: '999999px',
26
26
  animation,
27
27
  willChange: 'opacity,transform',
28
28
  });
@@ -28,6 +28,7 @@ export const RippleBox: <
28
28
  rippleColor, // eslint-disable-line @typescript-eslint/no-unused-vars
29
29
  center, // eslint-disable-line @typescript-eslint/no-unused-vars
30
30
  disabled, // eslint-disable-line @typescript-eslint/no-unused-vars
31
+ rippleEnabled, // eslint-disable-line @typescript-eslint/no-unused-vars
31
32
  style, // eslint-disable-line @typescript-eslint/no-unused-vars
32
33
  ...otherProps
33
34
  } = props;
@@ -7,11 +7,12 @@ import { wrapEvent } from '@basic-ui/core';
7
7
  import { SxStyleProp } from '../Box';
8
8
 
9
9
  export interface UseRippleSurfaceOptions<T extends HTMLElement> {
10
- baseOpacity?: string | number;
11
- hoverOpacity?: string | number;
12
- focusOpacity?: string | number;
13
- pressedOpacity?: string | number;
10
+ baseOpacity?: number;
11
+ hoverOpacity?: number;
12
+ focusOpacity?: number;
13
+ pressedOpacity?: number;
14
14
  rippleColor?: string;
15
+ rippleEnabled?: boolean;
15
16
  center?: boolean;
16
17
  disabled?: boolean;
17
18
  style?: CSSProperties;
@@ -35,6 +36,7 @@ export function useRippleSurface<T extends HTMLElement>(
35
36
  onPointerDown,
36
37
  style = {},
37
38
  disabled,
39
+ rippleEnabled = true,
38
40
  ...rippleProps
39
41
  } = opts;
40
42
 
@@ -84,18 +86,40 @@ export function useRippleSurface<T extends HTMLElement>(
84
86
  '&:hover::before': {
85
87
  opacity: hoverOpacity,
86
88
  },
87
- '&:focus::before': {
89
+ '&:focus-visible::before': {
88
90
  opacity: focusOpacity,
89
91
  },
92
+ ...(!rippleEnabled && {
93
+ '&:active::before': {
94
+ opacity: pressedOpacity,
95
+ },
96
+ }),
97
+ '&[aria-pressed="true"]::before': {
98
+ opacity: baseOpacity + pressedOpacity,
99
+ },
100
+ '&[aria-pressed="true"]:hover::before': {
101
+ opacity: pressedOpacity + hoverOpacity,
102
+ },
103
+ '&[aria-pressed="true"]:focus-visible::before': {
104
+ opacity: pressedOpacity + focusOpacity,
105
+ },
106
+ ...(!rippleEnabled && {
107
+ '&[aria-pressed="true"]:active::before': {
108
+ opacity: pressedOpacity + pressedOpacity,
109
+ },
110
+ }),
90
111
  ['&:disabled::before,&:disabled:hover::before,&:disabled:focus::before,&:disabled:active::before,' +
91
- '&[data-disabled]::before,&[data-disabled]:hover::before,&[data-disabled]:focus::before,&[data-disabled]:active::before']: {
112
+ '&[data-disabled]::before,&[data-disabled]:hover::before,&[data-disabled]:focus::before,' +
113
+ '&[data-disabled]:active::before,&:disabled[aria-pressed="true"]::before']: {
92
114
  opacity: 0,
93
115
  },
94
116
  '&:disabled,&[data-disabled]': {
95
117
  cursor: 'default',
96
118
  },
97
119
  // ripple
98
- '&::after': { ...rippleStyle({ animation }) },
120
+ ...(rippleEnabled && {
121
+ '&::after': { ...rippleStyle({ animation }) },
122
+ }),
99
123
  };
100
124
 
101
125
  return {
@@ -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
+ };
@@ -1,11 +1,27 @@
1
1
  import { useState } from 'react';
2
2
  import { Select } from './';
3
3
  import { SelectItem } from '../SelectItem';
4
- import { storiesOf } from '@storybook/react';
5
4
  import { Box } from '../Box';
6
5
  import { CheckBox } from '../CheckBox';
7
6
  // import './styles.css';
8
7
 
8
+ export default {
9
+ title: 'components/Select',
10
+ };
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
+
9
25
  const Example = ({ variant, native = false }) => {
10
26
  const [error, setError] = useState<boolean | string>(false);
11
27
  const [color, setColor] = useState<'primary' | 'secondary'>('primary');
@@ -183,7 +199,19 @@ const Example = ({ variant, native = false }) => {
183
199
  label=""
184
200
  helperText="Helper text"
185
201
  children={children}
186
- 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 />}
187
215
  />
188
216
  </Box>
189
217
  </Box>
@@ -191,9 +219,7 @@ const Example = ({ variant, native = false }) => {
191
219
  );
192
220
  };
193
221
 
194
- const stories = storiesOf('Components/Select', module);
195
-
196
- stories.add('filled', () => <Example variant="filled" />);
197
- stories.add('outlined', () => <Example variant="outlined" />);
198
- stories.add('filled, native', () => <Example variant="filled" native />);
199
- stories.add('outlined, native', () => <Example variant="outlined" native />);
222
+ export const Filled = () => <Example variant="filled" />;
223
+ export const Outlined = () => <Example variant="outlined" />;
224
+ export const FilledNative = () => <Example variant="filled" native />;
225
+ export const OutlinedNative = () => <Example variant="outlined" native />;