@superdispatch/ui 0.21.13 → 0.21.14

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 (234) hide show
  1. package/LICENSE +21 -0
  2. package/{pkg/dist-node → dist-node}/index.js +62 -14
  3. package/dist-node/index.js.map +1 -0
  4. package/{pkg/dist-src → dist-src}/index.js +1 -0
  5. package/dist-src/info-tooltip/InfoTooltip.js +54 -0
  6. package/{pkg/dist-types → dist-types}/index.d.ts +14 -2
  7. package/{pkg/dist-web → dist-web}/index.js +64 -17
  8. package/dist-web/index.js.map +1 -0
  9. package/package.json +12 -38
  10. package/.babelrc.js +0 -5
  11. package/.turbo/turbo-version.log +0 -28
  12. package/pkg/README.md +0 -30
  13. package/pkg/dist-node/index.js.map +0 -1
  14. package/pkg/dist-web/index.js.map +0 -1
  15. package/pkg/package.json +0 -39
  16. package/playroom.ts +0 -31
  17. package/src/__tests__/index.spec.ts +0 -134
  18. package/src/adaptive-toolbar/AdaptiveToolbar.stories.tsx +0 -50
  19. package/src/adaptive-toolbar/AdaptiveToolbar.tsx +0 -199
  20. package/src/adaptive-toolbar/__tests__/AdaptiveToolbar.spec.tsx +0 -11
  21. package/src/adaptive-vertical-toolbar/AdaptiveVerticalToolbar.stories.tsx +0 -49
  22. package/src/adaptive-vertical-toolbar/AdaptiveVerticalToolbar.tsx +0 -171
  23. package/src/app-bar/AppBar.stories.tsx +0 -62
  24. package/src/app-bar/AppBarOverrides.ts +0 -9
  25. package/src/app-bar/__tests__/AppBar.spec.tsx +0 -86
  26. package/src/autocomplete/Autocomplete.stories.tsx +0 -76
  27. package/src/autocomplete/AutocompleteOverrides.tsx +0 -58
  28. package/src/autocomplete/__tests__/Autocomplete.spec.tsx +0 -323
  29. package/src/avatar/Avatar.stories.tsx +0 -17
  30. package/src/avatar/AvatarOverrides.ts +0 -24
  31. package/src/avatar/__tests__/Avatar.spec.tsx +0 -71
  32. package/src/avatar-button/AvatarButton.stories.tsx +0 -153
  33. package/src/avatar-button/AvatarButton.tsx +0 -223
  34. package/src/avatar-button/__tests__/AvatarButton.spec.tsx +0 -126
  35. package/src/button/Button.tsx +0 -51
  36. package/src/button/ButtonOverrides.ts +0 -375
  37. package/src/button/__tests__/Button.spec.tsx +0 -599
  38. package/src/card/Card.stories.tsx +0 -39
  39. package/src/card/CardOverrides.ts +0 -9
  40. package/src/card/__tests__/Card.spec.tsx +0 -68
  41. package/src/card-button/CardButton.stories.tsx +0 -36
  42. package/src/card-button/CardButton.tsx +0 -202
  43. package/src/card-button/__tests__/CardButton.spec.tsx +0 -95
  44. package/src/checkbox/CheckboxField.stories.tsx +0 -61
  45. package/src/checkbox/CheckboxField.tsx +0 -56
  46. package/src/checkbox/CheckboxGroudField.tsx +0 -53
  47. package/src/checkbox/CheckboxOverrides.tsx +0 -55
  48. package/src/checkbox/__tests__/Checkbox.spec.tsx +0 -105
  49. package/src/chip/Chip.stories.tsx +0 -26
  50. package/src/chip/ChipOverrides.tsx +0 -111
  51. package/src/chip/__tests__/Chip.spec.tsx +0 -308
  52. package/src/columns/Column.tsx +0 -124
  53. package/src/columns/Columns.stories.tsx +0 -426
  54. package/src/columns/Columns.tsx +0 -76
  55. package/src/description-list/DescriptionList.spec.tsx +0 -137
  56. package/src/description-list/DescriptionList.stories.tsx +0 -148
  57. package/src/description-list/DescriptionList.tsx +0 -170
  58. package/src/dialog/Dialog.playroom.tsx +0 -24
  59. package/src/dialog/Dialog.stories.tsx +0 -60
  60. package/src/dialog/DialogOverrides.ts +0 -39
  61. package/src/dialog/__tests__/Dialog.spec.tsx +0 -219
  62. package/src/drawer/Drawer.playroom.tsx +0 -22
  63. package/src/drawer/Drawer.stories.tsx +0 -194
  64. package/src/drawer/DrawerActions.tsx +0 -69
  65. package/src/drawer/DrawerContent.tsx +0 -30
  66. package/src/drawer/DrawerList.tsx +0 -60
  67. package/src/drawer/DrawerOverrides.ts +0 -19
  68. package/src/drawer/DrawerTitle.tsx +0 -143
  69. package/src/drawer/__tests__/Drawer.spec.tsx +0 -227
  70. package/src/dropdown-button/DropdownButton.stories.tsx +0 -15
  71. package/src/dropdown-button/DropdownButton.tsx +0 -131
  72. package/src/grid/GridStack.tsx +0 -45
  73. package/src/grid/InlineGrid.tsx +0 -56
  74. package/src/icon-button/IconButton.stories.tsx +0 -53
  75. package/src/icon-button/IconButtonOverrides.ts +0 -32
  76. package/src/icon-button/__tests__/IconButton.spec.tsx +0 -124
  77. package/src/index.ts +0 -47
  78. package/src/info-card/InfoCard.stories.tsx +0 -29
  79. package/src/info-card/InfoCard.tsx +0 -95
  80. package/src/info-card/__tests__/InfoCard.spec.tsx +0 -22
  81. package/src/info-tooltip/InfoTooltip.stories.tsx +0 -77
  82. package/src/info-tooltip/InfoTooltip.tsx +0 -72
  83. package/src/info-tooltip/__tests__/InfoTooltip.spec.tsx +0 -166
  84. package/src/inline/Inline.stories.tsx +0 -135
  85. package/src/inline/Inline.tsx +0 -144
  86. package/src/link/Link.stories.tsx +0 -41
  87. package/src/link/LinkOverrides.ts +0 -43
  88. package/src/link/__tests__/Link.spec.tsx +0 -98
  89. package/src/list/ListOverrides.ts +0 -11
  90. package/src/list/__tests__/List.spec.tsx +0 -182
  91. package/src/menu/Menu.stories.tsx +0 -35
  92. package/src/menu/MenuOverrides.ts +0 -17
  93. package/src/menu/__tests__/Menu.spec.tsx +0 -99
  94. package/src/number-field/NumberField.stories.tsx +0 -123
  95. package/src/number-field/NumberField.tsx +0 -98
  96. package/src/overflow-text/OverflowText.stories.tsx +0 -32
  97. package/src/overflow-text/OverflowText.tsx +0 -114
  98. package/src/overflow-text/__tests__/OverflowText.spec.tsx +0 -24
  99. package/src/pagination/Pagination.stories.tsx +0 -36
  100. package/src/pagination/PaginationOverrides.ts +0 -47
  101. package/src/pagination/__tests__/Pagination.spec.tsx +0 -228
  102. package/src/paper/PaperOverrides.ts +0 -10
  103. package/src/paper/__tests__/Paper.spec.tsx +0 -155
  104. package/src/props/AlignProps.ts +0 -22
  105. package/src/props/CollapseProp.ts +0 -13
  106. package/src/props/ResponsiveProp.ts +0 -65
  107. package/src/props/SpaceProp.ts +0 -40
  108. package/src/radio/RadioField.stories.tsx +0 -42
  109. package/src/radio/RadioField.tsx +0 -55
  110. package/src/radio/RadioGroupField.tsx +0 -64
  111. package/src/radio/RadioOverrides.tsx +0 -51
  112. package/src/radio/__tests__/Radio.spec.tsx +0 -90
  113. package/src/responsive/CollapseBreakpoint.ts +0 -21
  114. package/src/responsive/MinBreakpoint.ts +0 -21
  115. package/src/responsive/ResponsiveContext.tsx +0 -57
  116. package/src/snackbar/Snackbar.stories.tsx +0 -196
  117. package/src/snackbar/Snackbar.tsx +0 -83
  118. package/src/snackbar/SnackbarContent.tsx +0 -147
  119. package/src/snackbar/SnackbarOverrides.ts +0 -23
  120. package/src/snackbar/SnackbarStack.tsx +0 -160
  121. package/src/snackbar/__tests__/Snackbar.spec.tsx +0 -196
  122. package/src/stack/Stack.stories.tsx +0 -113
  123. package/src/stack/Stack.tsx +0 -86
  124. package/src/svg-icon/SvgIcon.stories.tsx +0 -29
  125. package/src/svg-icon/SvgIconOverrides.ts +0 -32
  126. package/src/svg-icon/__tests__/SvgIcon.spec.tsx +0 -67
  127. package/src/switch/Switch.stories.tsx +0 -60
  128. package/src/switch/SwitchOverrides.ts +0 -88
  129. package/src/switch/__tests__/Switch.spec.tsx +0 -204
  130. package/src/tabs/Tabs.stories.tsx +0 -40
  131. package/src/tabs/TabsOverrides.ts +0 -45
  132. package/src/tabs/__tests__/Tabs.spec.tsx +0 -226
  133. package/src/tag/Tag.stories.tsx +0 -53
  134. package/src/tag/Tag.tsx +0 -130
  135. package/src/tag/__tests__/Tag.spec.tsx +0 -82
  136. package/src/text-field/TextField.stories.tsx +0 -50
  137. package/src/text-field/TextFieldOverrides.tsx +0 -149
  138. package/src/text-field/__tests__/TextField.spec.tsx +0 -662
  139. package/src/theme/Color.ts +0 -117
  140. package/src/theme/SuperDispatchTheme.ts +0 -3
  141. package/src/theme/ThemeProvider.tsx +0 -179
  142. package/src/theme/__tests__/CssBaseline.spec.tsx +0 -49
  143. package/src/theme/__tests__/ThemeProvider.spec.ts +0 -40
  144. package/src/theme/__tests__/__snapshots__/ThemeProvider.spec.ts.snap +0 -204
  145. package/src/tiles/Tiles.stories.tsx +0 -69
  146. package/src/tiles/Tiles.tsx +0 -163
  147. package/src/tiles/__tests__/Tiles.spec.tsx +0 -221
  148. package/src/toolbar/ToolbarOverrides.ts +0 -14
  149. package/src/toolbar/__tests__/Toolbar.spec.tsx +0 -50
  150. package/src/tooltip/Tooltip.stories.tsx +0 -32
  151. package/src/tooltip/TooltipOverrides.ts +0 -34
  152. package/src/tooltip/__tests__/Tooltip.spec.tsx +0 -182
  153. package/src/typography/Typography.stories.tsx +0 -132
  154. package/src/typography/TypographyOverrides.ts +0 -125
  155. package/src/typography/__tests__/Typography.spec.tsx +0 -253
  156. package/src/utils/ExitTransitionPlaceholder.tsx +0 -22
  157. package/src/utils/ResizeObserver.tsx +0 -28
  158. package/src/utils/VisibilityObserver.tsx +0 -75
  159. package/src/utils/__tests__/ExitTransitionPlaceholder.spec.tsx +0 -34
  160. package/src/utils/isEmptyReactNode.ts +0 -11
  161. package/src/utils/mergeRefs.ts +0 -21
  162. package/src/utils/renderChildren.ts +0 -10
  163. package/src/utils/useUID.ts +0 -9
  164. package/tsconfig.json +0 -19
  165. /package/{pkg/dist-src → dist-src}/adaptive-toolbar/AdaptiveToolbar.js +0 -0
  166. /package/{pkg/dist-src → dist-src}/adaptive-vertical-toolbar/AdaptiveVerticalToolbar.js +0 -0
  167. /package/{pkg/dist-src → dist-src}/app-bar/AppBarOverrides.js +0 -0
  168. /package/{pkg/dist-src → dist-src}/autocomplete/AutocompleteOverrides.js +0 -0
  169. /package/{pkg/dist-src → dist-src}/avatar/AvatarOverrides.js +0 -0
  170. /package/{pkg/dist-src → dist-src}/avatar-button/AvatarButton.js +0 -0
  171. /package/{pkg/dist-src → dist-src}/button/Button.js +0 -0
  172. /package/{pkg/dist-src → dist-src}/button/ButtonOverrides.js +0 -0
  173. /package/{pkg/dist-src → dist-src}/card/CardOverrides.js +0 -0
  174. /package/{pkg/dist-src → dist-src}/card-button/CardButton.js +0 -0
  175. /package/{pkg/dist-src → dist-src}/checkbox/CheckboxField.js +0 -0
  176. /package/{pkg/dist-src → dist-src}/checkbox/CheckboxGroudField.js +0 -0
  177. /package/{pkg/dist-src → dist-src}/checkbox/CheckboxOverrides.js +0 -0
  178. /package/{pkg/dist-src → dist-src}/chip/ChipOverrides.js +0 -0
  179. /package/{pkg/dist-src → dist-src}/columns/Column.js +0 -0
  180. /package/{pkg/dist-src → dist-src}/columns/Columns.js +0 -0
  181. /package/{pkg/dist-src → dist-src}/description-list/DescriptionList.js +0 -0
  182. /package/{pkg/dist-src → dist-src}/dialog/DialogOverrides.js +0 -0
  183. /package/{pkg/dist-src → dist-src}/drawer/DrawerActions.js +0 -0
  184. /package/{pkg/dist-src → dist-src}/drawer/DrawerContent.js +0 -0
  185. /package/{pkg/dist-src → dist-src}/drawer/DrawerList.js +0 -0
  186. /package/{pkg/dist-src → dist-src}/drawer/DrawerOverrides.js +0 -0
  187. /package/{pkg/dist-src → dist-src}/drawer/DrawerTitle.js +0 -0
  188. /package/{pkg/dist-src → dist-src}/dropdown-button/DropdownButton.js +0 -0
  189. /package/{pkg/dist-src → dist-src}/grid/GridStack.js +0 -0
  190. /package/{pkg/dist-src → dist-src}/grid/InlineGrid.js +0 -0
  191. /package/{pkg/dist-src → dist-src}/icon-button/IconButtonOverrides.js +0 -0
  192. /package/{pkg/dist-src → dist-src}/info-card/InfoCard.js +0 -0
  193. /package/{pkg/dist-src → dist-src}/inline/Inline.js +0 -0
  194. /package/{pkg/dist-src → dist-src}/link/LinkOverrides.js +0 -0
  195. /package/{pkg/dist-src → dist-src}/list/ListOverrides.js +0 -0
  196. /package/{pkg/dist-src → dist-src}/menu/MenuOverrides.js +0 -0
  197. /package/{pkg/dist-src → dist-src}/number-field/NumberField.js +0 -0
  198. /package/{pkg/dist-src → dist-src}/overflow-text/OverflowText.js +0 -0
  199. /package/{pkg/dist-src → dist-src}/pagination/PaginationOverrides.js +0 -0
  200. /package/{pkg/dist-src → dist-src}/paper/PaperOverrides.js +0 -0
  201. /package/{pkg/dist-src → dist-src}/props/AlignProps.js +0 -0
  202. /package/{pkg/dist-src → dist-src}/props/CollapseProp.js +0 -0
  203. /package/{pkg/dist-src → dist-src}/props/ResponsiveProp.js +0 -0
  204. /package/{pkg/dist-src → dist-src}/props/SpaceProp.js +0 -0
  205. /package/{pkg/dist-src → dist-src}/radio/RadioField.js +0 -0
  206. /package/{pkg/dist-src → dist-src}/radio/RadioGroupField.js +0 -0
  207. /package/{pkg/dist-src → dist-src}/radio/RadioOverrides.js +0 -0
  208. /package/{pkg/dist-src → dist-src}/responsive/CollapseBreakpoint.js +0 -0
  209. /package/{pkg/dist-src → dist-src}/responsive/MinBreakpoint.js +0 -0
  210. /package/{pkg/dist-src → dist-src}/responsive/ResponsiveContext.js +0 -0
  211. /package/{pkg/dist-src → dist-src}/snackbar/Snackbar.js +0 -0
  212. /package/{pkg/dist-src → dist-src}/snackbar/SnackbarContent.js +0 -0
  213. /package/{pkg/dist-src → dist-src}/snackbar/SnackbarOverrides.js +0 -0
  214. /package/{pkg/dist-src → dist-src}/snackbar/SnackbarStack.js +0 -0
  215. /package/{pkg/dist-src → dist-src}/stack/Stack.js +0 -0
  216. /package/{pkg/dist-src → dist-src}/svg-icon/SvgIconOverrides.js +0 -0
  217. /package/{pkg/dist-src → dist-src}/switch/SwitchOverrides.js +0 -0
  218. /package/{pkg/dist-src → dist-src}/tabs/TabsOverrides.js +0 -0
  219. /package/{pkg/dist-src → dist-src}/tag/Tag.js +0 -0
  220. /package/{pkg/dist-src → dist-src}/text-field/TextFieldOverrides.js +0 -0
  221. /package/{pkg/dist-src → dist-src}/theme/Color.js +0 -0
  222. /package/{pkg/dist-src → dist-src}/theme/SuperDispatchTheme.js +0 -0
  223. /package/{pkg/dist-src → dist-src}/theme/ThemeProvider.js +0 -0
  224. /package/{pkg/dist-src → dist-src}/tiles/Tiles.js +0 -0
  225. /package/{pkg/dist-src → dist-src}/toolbar/ToolbarOverrides.js +0 -0
  226. /package/{pkg/dist-src → dist-src}/tooltip/TooltipOverrides.js +0 -0
  227. /package/{pkg/dist-src → dist-src}/typography/TypographyOverrides.js +0 -0
  228. /package/{pkg/dist-src → dist-src}/utils/ExitTransitionPlaceholder.js +0 -0
  229. /package/{pkg/dist-src → dist-src}/utils/ResizeObserver.js +0 -0
  230. /package/{pkg/dist-src → dist-src}/utils/VisibilityObserver.js +0 -0
  231. /package/{pkg/dist-src → dist-src}/utils/isEmptyReactNode.js +0 -0
  232. /package/{pkg/dist-src → dist-src}/utils/mergeRefs.js +0 -0
  233. /package/{pkg/dist-src → dist-src}/utils/renderChildren.js +0 -0
  234. /package/{pkg/dist-src → dist-src}/utils/useUID.js +0 -0
@@ -1,71 +0,0 @@
1
- import { Avatar } from '@material-ui/core';
2
- import { renderCSS, renderTheme } from '@superdispatch/ui-testutils';
3
-
4
- it('checks default props', () => {
5
- const { props } = renderTheme();
6
-
7
- expect(props.MuiAvatar).toMatchInlineSnapshot(`undefined`);
8
- });
9
-
10
- it('checks component css', () => {
11
- expect(renderCSS(<Avatar />, ['MuiAvatar'])).toMatchInlineSnapshot(`
12
- .MuiAvatar-root {
13
- width: 40px;
14
- height: 40px;
15
- display: flex;
16
- overflow: hidden;
17
- position: relative;
18
- font-size: 14px;
19
- align-items: center;
20
- flex-shrink: 0;
21
- font-family: 'Inter', sans-serif;
22
- font-weight: 600;
23
- line-height: 20px;
24
- user-select: none;
25
- border-radius: 50%;
26
- text-transform: uppercase;
27
- justify-content: center;
28
- }
29
-
30
- @media (min-width: 0px) and (max-width: 599.95px) {
31
- .MuiAvatar-root {
32
- font-size: 16px;
33
- line-height: 24px;
34
- }
35
- }
36
-
37
- @media (min-width: 600px) {
38
- .MuiAvatar-root {
39
- width: 32px;
40
- height: 32px;
41
- }
42
- }
43
-
44
- .MuiAvatar-colorDefault {
45
- color: Color.Dark300;
46
- background-color: Color.Silver300;
47
- }
48
-
49
- .MuiAvatar-rounded {
50
- border-radius: 4px;
51
- }
52
-
53
- .MuiAvatar-square {
54
- border-radius: 0;
55
- }
56
-
57
- .MuiAvatar-img {
58
- color: transparent;
59
- width: 100%;
60
- height: 100%;
61
- object-fit: cover;
62
- text-align: center;
63
- text-indent: 10000px;
64
- }
65
-
66
- .MuiAvatar-fallback {
67
- width: 75%;
68
- height: 75%;
69
- }
70
- `);
71
- });
@@ -1,153 +0,0 @@
1
- import { Meta } from '@storybook/react';
2
- import { UseState } from '@superdispatch/ui-docs';
3
- import { Inline } from '../inline/Inline';
4
- import { Stack } from '../stack/Stack';
5
- import { AvatarButton } from './AvatarButton';
6
-
7
- export default {
8
- title: 'Inputs/Avatar Button',
9
- component: AvatarButton,
10
- } as Meta;
11
-
12
- export const basic = () => (
13
- <Inline space="small" verticalAlign="center">
14
- <AvatarButton />
15
- <AvatarButton size="large" />
16
- </Inline>
17
- );
18
-
19
- export const disabled = () => (
20
- <Inline space="small" verticalAlign="center">
21
- <AvatarButton disabled={true} />
22
- <AvatarButton size="large" disabled={true} />
23
- </Inline>
24
- );
25
-
26
- export const loading = () => (
27
- <Inline space="small" verticalAlign="center">
28
- <AvatarButton isLoading={true} />
29
- <AvatarButton size="large" isLoading={true} />
30
- </Inline>
31
- );
32
-
33
- export const textBasic = () => (
34
- <Inline space="small" verticalAlign="center">
35
- <AvatarButton>AB</AvatarButton>
36
- <AvatarButton size="large">AB</AvatarButton>
37
- </Inline>
38
- );
39
-
40
- export const textDisabled = () => (
41
- <Inline space="small" verticalAlign="center">
42
- <AvatarButton disabled={true}>AB</AvatarButton>
43
- <AvatarButton size="large" disabled={true}>
44
- AB
45
- </AvatarButton>
46
- </Inline>
47
- );
48
-
49
- export const textLoading = () => (
50
- <Inline space="small" verticalAlign="center">
51
- <AvatarButton isLoading={true}>AB</AvatarButton>
52
- <AvatarButton size="large" isLoading={true}>
53
- AB
54
- </AvatarButton>
55
- </Inline>
56
- );
57
-
58
- export const pictureBasic = () => (
59
- <Inline space="small" verticalAlign="center">
60
- <AvatarButton src="https://images.unsplash.com/photo-1571816119607-57e48af1caa9?q=80&w=256&h=256" />
61
- <AvatarButton
62
- size="large"
63
- src="https://images.unsplash.com/photo-1571816119607-57e48af1caa9?q=80&w=256&h=256"
64
- />
65
- </Inline>
66
- );
67
-
68
- export const pictureDisabled = () => (
69
- <Inline space="small" verticalAlign="center">
70
- <AvatarButton
71
- disabled={true}
72
- src="https://images.unsplash.com/photo-1571816119607-57e48af1caa9?q=80&w=256&h=256"
73
- />
74
- <AvatarButton
75
- size="large"
76
- disabled={true}
77
- src="https://images.unsplash.com/photo-1571816119607-57e48af1caa9?q=80&w=256&h=256"
78
- />
79
- </Inline>
80
- );
81
-
82
- export const pictureLoading = () => (
83
- <Inline space="small" verticalAlign="center">
84
- <AvatarButton
85
- isLoading={true}
86
- src="https://images.unsplash.com/photo-1571816119607-57e48af1caa9?q=80&w=256&h=256"
87
- />
88
- <AvatarButton
89
- size="large"
90
- isLoading={true}
91
- src="https://images.unsplash.com/photo-1571816119607-57e48af1caa9?q=80&w=256&h=256"
92
- />
93
- </Inline>
94
- );
95
-
96
- export const interactive = () => (
97
- <UseState initialState={false}>
98
- {(state, setState) => {
99
- const handleClick = () => {
100
- setState(true);
101
- setTimeout(() => {
102
- setState(false);
103
- }, 500);
104
- };
105
-
106
- return (
107
- <Stack space="small">
108
- <Inline space="small" verticalAlign="center">
109
- <AvatarButton disabled={state} onClick={handleClick}>
110
- SM
111
- </AvatarButton>
112
- <AvatarButton size="large" disabled={state} onClick={handleClick}>
113
- SM
114
- </AvatarButton>
115
-
116
- <AvatarButton isLoading={state} onClick={handleClick}>
117
- SM
118
- </AvatarButton>
119
- <AvatarButton size="large" isLoading={state} onClick={handleClick}>
120
- SM
121
- </AvatarButton>
122
- </Inline>
123
-
124
- <Inline space="small" verticalAlign="center">
125
- <AvatarButton
126
- disabled={state}
127
- onClick={handleClick}
128
- src="https://images.unsplash.com/photo-1571816119607-57e48af1caa9?q=80"
129
- />
130
- <AvatarButton
131
- size="large"
132
- disabled={state}
133
- onClick={handleClick}
134
- src="https://images.unsplash.com/photo-1571816119607-57e48af1caa9?q=80"
135
- />
136
-
137
- <AvatarButton
138
- isLoading={state}
139
- onClick={handleClick}
140
- src="https://images.unsplash.com/photo-1571816119607-57e48af1caa9?q=80"
141
- />
142
- <AvatarButton
143
- size="large"
144
- isLoading={state}
145
- onClick={handleClick}
146
- src="https://images.unsplash.com/photo-1571816119607-57e48af1caa9?q=80"
147
- />
148
- </Inline>
149
- </Stack>
150
- );
151
- }}
152
- </UseState>
153
- );
@@ -1,223 +0,0 @@
1
- import {
2
- Avatar,
3
- AvatarClassKey,
4
- AvatarTypeMap,
5
- ButtonBase,
6
- CircularProgress,
7
- } from '@material-ui/core';
8
- import { ClassNameMap, CSSProperties, makeStyles } from '@material-ui/styles';
9
- import clsx from 'clsx';
10
- import {
11
- ButtonHTMLAttributes,
12
- forwardRef,
13
- ForwardRefExoticComponent,
14
- ReactNode,
15
- Ref,
16
- RefAttributes,
17
- } from 'react';
18
- import { Color } from '../theme/Color';
19
- import { SuperDispatchTheme } from '../theme/SuperDispatchTheme';
20
-
21
- export type AvatarButtonClassKey =
22
- | 'button'
23
- | 'overlay'
24
- | 'progress'
25
- | 'withIcon'
26
- | 'sizeLarge'
27
- | Exclude<AvatarClassKey, 'circle'>;
28
-
29
- const useStyles = makeStyles(
30
- (theme: SuperDispatchTheme): Record<AvatarButtonClassKey, CSSProperties> => {
31
- const sm = theme.breakpoints.up('sm');
32
-
33
- return {
34
- button: {
35
- borderRadius: '50%',
36
-
37
- '&[disabled], &[aria-busy="true"]': {
38
- '& > $overlay': {
39
- backgroundColor: Color.White50,
40
- },
41
- },
42
-
43
- '&:not([disabled])[aria-busy="false"]': {
44
- '&:hover, &:focus': {
45
- '&$withIcon > $overlay': {
46
- backgroundColor: Color.Black50,
47
-
48
- '& > svg': { opacity: 1 },
49
- },
50
-
51
- '&:not($withIcon) > $overlay': {
52
- backgroundColor: Color.Black20,
53
- },
54
- },
55
- },
56
- },
57
-
58
- overlay: {
59
- top: 0,
60
- left: 0,
61
- right: 0,
62
- bottom: 0,
63
- position: 'absolute',
64
-
65
- display: 'flex',
66
- alignItems: 'center',
67
- justifyContent: 'center',
68
-
69
- borderRadius: '50%',
70
- backgroundColor: Color.Transparent,
71
- transition: theme.transitions.create('background-color'),
72
-
73
- '& > svg': {
74
- opacity: 0,
75
- color: Color.White,
76
- transition: theme.transitions.create('opacity'),
77
-
78
- fontSize: theme.spacing(3),
79
- [sm]: { fontSize: theme.spacing(2) },
80
- },
81
- },
82
-
83
- progress: {
84
- top: 0,
85
- left: 0,
86
- position: 'absolute',
87
-
88
- fontSize: theme.spacing(5),
89
- [sm]: { fontSize: theme.spacing(4) },
90
- },
91
-
92
- withIcon: {},
93
-
94
- sizeLarge: {
95
- '& > $root': {
96
- ...theme.typography.h2,
97
-
98
- width: theme.spacing(7),
99
- height: theme.spacing(7),
100
-
101
- [sm]: {
102
- width: theme.spacing(8),
103
- height: theme.spacing(8),
104
- },
105
- },
106
-
107
- '& > $overlay': {
108
- '& > $progress': {
109
- fontSize: theme.spacing(7),
110
- [sm]: { fontSize: theme.spacing(8) },
111
- },
112
-
113
- '& > svg': {
114
- fontSize: theme.spacing(4),
115
- [sm]: { fontSize: theme.spacing(3) },
116
- },
117
- },
118
- },
119
-
120
- root: {},
121
-
122
- colorDefault: {},
123
- circular: {},
124
- rounded: {},
125
- square: {},
126
- img: {},
127
- fallback: {},
128
- };
129
- },
130
- { name: 'SD-AvatarButton' },
131
- );
132
-
133
- export interface AvatarButtonProps
134
- extends RefAttributes<HTMLButtonElement>,
135
- ButtonHTMLAttributes<HTMLButtonElement> {
136
- size?: 'small' | 'large';
137
- icon?: ReactNode;
138
- isLoading?: boolean;
139
-
140
- avatarRef?: Ref<HTMLDivElement>;
141
- classes?: Partial<ClassNameMap<AvatarButtonClassKey>>;
142
-
143
- variant?: AvatarTypeMap['props']['variant'];
144
- alt?: AvatarTypeMap['props']['alt'];
145
- src?: AvatarTypeMap['props']['src'];
146
- sizes?: AvatarTypeMap['props']['sizes'];
147
- srcSet?: AvatarTypeMap['props']['srcSet'];
148
- imgProps?: AvatarTypeMap['props']['imgProps'];
149
- }
150
-
151
- export const AvatarButton: ForwardRefExoticComponent<AvatarButtonProps> =
152
- forwardRef(
153
- (
154
- {
155
- size,
156
- icon,
157
- isLoading = false,
158
-
159
- classes,
160
- disabled = false,
161
- avatarRef,
162
- className,
163
-
164
- alt,
165
- imgProps,
166
- sizes,
167
- src,
168
- srcSet,
169
- variant,
170
- children,
171
- ...props
172
- },
173
- ref,
174
- ) => {
175
- const {
176
- button: buttonClassName,
177
- overlay: overlayClassName,
178
- progress: progressClassName,
179
- withIcon: withIconClassName,
180
- sizeLarge: sizeLargeClassName,
181
- ...avatarClasses
182
- } = useStyles({ classes });
183
-
184
- return (
185
- <ButtonBase
186
- {...props}
187
- ref={ref}
188
- aria-busy={isLoading}
189
- aria-disabled={disabled}
190
- disabled={disabled || isLoading}
191
- className={clsx(className, buttonClassName, {
192
- [withIconClassName]: !!icon,
193
- [sizeLargeClassName]: size === 'large',
194
- })}
195
- >
196
- <Avatar
197
- ref={avatarRef}
198
- classes={avatarClasses}
199
- variant={variant}
200
- alt={alt}
201
- src={src}
202
- sizes={sizes}
203
- srcSet={srcSet}
204
- imgProps={imgProps}
205
- >
206
- {children}
207
- </Avatar>
208
-
209
- <div className={overlayClassName}>
210
- {icon}
211
-
212
- {isLoading && (
213
- <CircularProgress
214
- size="1em"
215
- className={progressClassName}
216
- thickness={size === 'large' ? 2.5 : 1.5}
217
- />
218
- )}
219
- </div>
220
- </ButtonBase>
221
- );
222
- },
223
- );
@@ -1,126 +0,0 @@
1
- import { renderCSS } from '@superdispatch/ui-testutils';
2
- import { AvatarButton } from '../AvatarButton';
3
-
4
- it('checks component css', () => {
5
- expect(renderCSS(<AvatarButton />, ['SD-AvatarButton']))
6
- .toMatchInlineSnapshot(`
7
- .SD-AvatarButton-button {
8
- border-radius: 50%;
9
- }
10
-
11
- .SD-AvatarButton-button:not([disabled])[aria-busy='false']:hover.SD-AvatarButton-withIcon
12
- > .SD-AvatarButton-overlay,
13
- .SD-AvatarButton-button:not([disabled])[aria-busy='false']:focus.SD-AvatarButton-withIcon
14
- > .SD-AvatarButton-overlay {
15
- background-color: Color.Black50;
16
- }
17
-
18
- .SD-AvatarButton-button:not([disabled])[aria-busy='false']:hover:not(.SD-AvatarButton-withIcon)
19
- > .SD-AvatarButton-overlay,
20
- .SD-AvatarButton-button:not([disabled])[aria-busy='false']:focus:not(.SD-AvatarButton-withIcon)
21
- > .SD-AvatarButton-overlay {
22
- background-color: Color.Black20;
23
- }
24
-
25
- .SD-AvatarButton-button:not([disabled])[aria-busy='false']:hover.SD-AvatarButton-withIcon
26
- > .SD-AvatarButton-overlay
27
- > svg,
28
- .SD-AvatarButton-button:not([disabled])[aria-busy='false']:focus.SD-AvatarButton-withIcon
29
- > .SD-AvatarButton-overlay
30
- > svg {
31
- opacity: 1;
32
- }
33
-
34
- .SD-AvatarButton-button[disabled] > .SD-AvatarButton-overlay,
35
- .SD-AvatarButton-button[aria-busy='true'] > .SD-AvatarButton-overlay {
36
- background-color: Color.White50;
37
- }
38
-
39
- .SD-AvatarButton-overlay {
40
- top: 0;
41
- left: 0;
42
- right: 0;
43
- bottom: 0;
44
- display: flex;
45
- position: absolute;
46
- transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
47
- align-items: center;
48
- border-radius: 50%;
49
- justify-content: center;
50
- background-color: Color.Transparent;
51
- }
52
-
53
- .SD-AvatarButton-overlay > svg {
54
- color: Color.White;
55
- opacity: 0;
56
- font-size: 24px;
57
- transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
58
- }
59
-
60
- @media (min-width: 600px) {
61
- .SD-AvatarButton-overlay > svg {
62
- font-size: 16px;
63
- }
64
- }
65
-
66
- .SD-AvatarButton-progress {
67
- top: 0;
68
- left: 0;
69
- position: absolute;
70
- font-size: 40px;
71
- }
72
-
73
- @media (min-width: 600px) {
74
- .SD-AvatarButton-progress {
75
- font-size: 32px;
76
- }
77
- }
78
-
79
- .SD-AvatarButton-sizeLarge > .SD-AvatarButton-root {
80
- width: 56px;
81
- height: 56px;
82
- font-size: 24px;
83
- font-family: 'Inter', sans-serif;
84
- font-weight: 500;
85
- line-height: 28px;
86
- }
87
-
88
- .SD-AvatarButton-sizeLarge
89
- > .SD-AvatarButton-overlay
90
- > .SD-AvatarButton-progress {
91
- font-size: 56px;
92
- }
93
-
94
- .SD-AvatarButton-sizeLarge > .SD-AvatarButton-overlay > svg {
95
- font-size: 32px;
96
- }
97
-
98
- @media (min-width: 600px) {
99
- .SD-AvatarButton-sizeLarge > .SD-AvatarButton-overlay > svg {
100
- font-size: 24px;
101
- }
102
- }
103
-
104
- @media (min-width: 600px) {
105
- .SD-AvatarButton-sizeLarge
106
- > .SD-AvatarButton-overlay
107
- > .SD-AvatarButton-progress {
108
- font-size: 64px;
109
- }
110
- }
111
-
112
- @media (min-width: 0px) and (max-width: 599.95px) {
113
- .SD-AvatarButton-sizeLarge > .SD-AvatarButton-root {
114
- font-size: 22px;
115
- line-height: 26px;
116
- }
117
- }
118
-
119
- @media (min-width: 600px) {
120
- .SD-AvatarButton-sizeLarge > .SD-AvatarButton-root {
121
- width: 64px;
122
- height: 64px;
123
- }
124
- }
125
- `);
126
- });
@@ -1,51 +0,0 @@
1
- import {
2
- Button as MaterialButton,
3
- ButtonProps as MuiButtonProps,
4
- CircularProgress,
5
- } from '@material-ui/core';
6
- import { forwardRef, ForwardRefExoticComponent, RefAttributes } from 'react';
7
-
8
- export interface ButtonProps
9
- extends RefAttributes<HTMLButtonElement>,
10
- Omit<MuiButtonProps, 'color'> {
11
- rel?: string;
12
- target?: string;
13
- isActive?: boolean;
14
- isLoading?: boolean;
15
- color?: 'primary' | 'error' | 'success' | 'white';
16
- }
17
-
18
- export const Button: ForwardRefExoticComponent<ButtonProps> = forwardRef(
19
- (
20
- {
21
- size,
22
- children,
23
- disabled,
24
- isActive,
25
- isLoading,
26
- color = 'primary',
27
- ...props
28
- },
29
- ref,
30
- ) => (
31
- <MaterialButton
32
- {...props}
33
- ref={ref}
34
- size={size}
35
- data-color={color}
36
- aria-busy={isLoading}
37
- aria-expanded={isActive}
38
- disabled={disabled || isLoading}
39
- color={color === 'primary' ? color : 'default'}
40
- >
41
- {!isLoading ? (
42
- children
43
- ) : (
44
- <>
45
- {children}
46
- <CircularProgress size="1em" color="inherit" />
47
- </>
48
- )}
49
- </MaterialButton>
50
- ),
51
- );