@superdispatch/ui 0.21.6 → 0.21.13

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 (233) hide show
  1. package/.babelrc.js +5 -0
  2. package/.turbo/turbo-version.log +28 -0
  3. package/package.json +65 -39
  4. package/pkg/README.md +30 -0
  5. package/{dist-node → pkg/dist-node}/index.js +2 -1
  6. package/pkg/dist-node/index.js.map +1 -0
  7. package/{dist-src → pkg/dist-src}/number-field/NumberField.js +2 -1
  8. package/{dist-types → pkg/dist-types}/index.d.ts +364 -364
  9. package/{dist-web → pkg/dist-web}/index.js +2 -1
  10. package/pkg/dist-web/index.js.map +1 -0
  11. package/pkg/package.json +39 -0
  12. package/playroom.ts +31 -0
  13. package/src/__tests__/index.spec.ts +134 -0
  14. package/src/adaptive-toolbar/AdaptiveToolbar.stories.tsx +50 -0
  15. package/src/adaptive-toolbar/AdaptiveToolbar.tsx +199 -0
  16. package/src/adaptive-toolbar/__tests__/AdaptiveToolbar.spec.tsx +11 -0
  17. package/src/adaptive-vertical-toolbar/AdaptiveVerticalToolbar.stories.tsx +49 -0
  18. package/src/adaptive-vertical-toolbar/AdaptiveVerticalToolbar.tsx +171 -0
  19. package/src/app-bar/AppBar.stories.tsx +62 -0
  20. package/src/app-bar/AppBarOverrides.ts +9 -0
  21. package/src/app-bar/__tests__/AppBar.spec.tsx +86 -0
  22. package/src/autocomplete/Autocomplete.stories.tsx +76 -0
  23. package/src/autocomplete/AutocompleteOverrides.tsx +58 -0
  24. package/src/autocomplete/__tests__/Autocomplete.spec.tsx +323 -0
  25. package/src/avatar/Avatar.stories.tsx +17 -0
  26. package/src/avatar/AvatarOverrides.ts +24 -0
  27. package/src/avatar/__tests__/Avatar.spec.tsx +71 -0
  28. package/src/avatar-button/AvatarButton.stories.tsx +153 -0
  29. package/src/avatar-button/AvatarButton.tsx +223 -0
  30. package/src/avatar-button/__tests__/AvatarButton.spec.tsx +126 -0
  31. package/src/button/Button.tsx +51 -0
  32. package/src/button/ButtonOverrides.ts +375 -0
  33. package/src/button/__tests__/Button.spec.tsx +599 -0
  34. package/src/card/Card.stories.tsx +39 -0
  35. package/src/card/CardOverrides.ts +9 -0
  36. package/src/card/__tests__/Card.spec.tsx +68 -0
  37. package/src/card-button/CardButton.stories.tsx +36 -0
  38. package/src/card-button/CardButton.tsx +202 -0
  39. package/src/card-button/__tests__/CardButton.spec.tsx +95 -0
  40. package/src/checkbox/CheckboxField.stories.tsx +61 -0
  41. package/src/checkbox/CheckboxField.tsx +56 -0
  42. package/src/checkbox/CheckboxGroudField.tsx +53 -0
  43. package/src/checkbox/CheckboxOverrides.tsx +55 -0
  44. package/src/checkbox/__tests__/Checkbox.spec.tsx +105 -0
  45. package/src/chip/Chip.stories.tsx +26 -0
  46. package/src/chip/ChipOverrides.tsx +111 -0
  47. package/src/chip/__tests__/Chip.spec.tsx +308 -0
  48. package/src/columns/Column.tsx +124 -0
  49. package/src/columns/Columns.stories.tsx +426 -0
  50. package/src/columns/Columns.tsx +76 -0
  51. package/src/description-list/DescriptionList.spec.tsx +137 -0
  52. package/src/description-list/DescriptionList.stories.tsx +148 -0
  53. package/src/description-list/DescriptionList.tsx +170 -0
  54. package/src/dialog/Dialog.playroom.tsx +24 -0
  55. package/src/dialog/Dialog.stories.tsx +60 -0
  56. package/src/dialog/DialogOverrides.ts +39 -0
  57. package/src/dialog/__tests__/Dialog.spec.tsx +219 -0
  58. package/src/drawer/Drawer.playroom.tsx +22 -0
  59. package/src/drawer/Drawer.stories.tsx +194 -0
  60. package/src/drawer/DrawerActions.tsx +69 -0
  61. package/src/drawer/DrawerContent.tsx +30 -0
  62. package/src/drawer/DrawerList.tsx +60 -0
  63. package/src/drawer/DrawerOverrides.ts +19 -0
  64. package/src/drawer/DrawerTitle.tsx +143 -0
  65. package/src/drawer/__tests__/Drawer.spec.tsx +227 -0
  66. package/src/dropdown-button/DropdownButton.stories.tsx +15 -0
  67. package/src/dropdown-button/DropdownButton.tsx +131 -0
  68. package/src/grid/GridStack.tsx +45 -0
  69. package/src/grid/InlineGrid.tsx +56 -0
  70. package/src/icon-button/IconButton.stories.tsx +53 -0
  71. package/src/icon-button/IconButtonOverrides.ts +32 -0
  72. package/src/icon-button/__tests__/IconButton.spec.tsx +124 -0
  73. package/src/index.ts +47 -0
  74. package/src/info-card/InfoCard.stories.tsx +29 -0
  75. package/src/info-card/InfoCard.tsx +95 -0
  76. package/src/info-card/__tests__/InfoCard.spec.tsx +22 -0
  77. package/src/info-tooltip/InfoTooltip.stories.tsx +77 -0
  78. package/src/info-tooltip/InfoTooltip.tsx +72 -0
  79. package/src/info-tooltip/__tests__/InfoTooltip.spec.tsx +166 -0
  80. package/src/inline/Inline.stories.tsx +135 -0
  81. package/src/inline/Inline.tsx +144 -0
  82. package/src/link/Link.stories.tsx +41 -0
  83. package/src/link/LinkOverrides.ts +43 -0
  84. package/src/link/__tests__/Link.spec.tsx +98 -0
  85. package/src/list/ListOverrides.ts +11 -0
  86. package/src/list/__tests__/List.spec.tsx +182 -0
  87. package/src/menu/Menu.stories.tsx +35 -0
  88. package/src/menu/MenuOverrides.ts +17 -0
  89. package/src/menu/__tests__/Menu.spec.tsx +99 -0
  90. package/src/number-field/NumberField.stories.tsx +123 -0
  91. package/src/number-field/NumberField.tsx +98 -0
  92. package/src/overflow-text/OverflowText.stories.tsx +32 -0
  93. package/src/overflow-text/OverflowText.tsx +114 -0
  94. package/src/overflow-text/__tests__/OverflowText.spec.tsx +24 -0
  95. package/src/pagination/Pagination.stories.tsx +36 -0
  96. package/src/pagination/PaginationOverrides.ts +47 -0
  97. package/src/pagination/__tests__/Pagination.spec.tsx +228 -0
  98. package/src/paper/PaperOverrides.ts +10 -0
  99. package/src/paper/__tests__/Paper.spec.tsx +155 -0
  100. package/src/props/AlignProps.ts +22 -0
  101. package/src/props/CollapseProp.ts +13 -0
  102. package/src/props/ResponsiveProp.ts +65 -0
  103. package/src/props/SpaceProp.ts +40 -0
  104. package/src/radio/RadioField.stories.tsx +42 -0
  105. package/src/radio/RadioField.tsx +55 -0
  106. package/src/radio/RadioGroupField.tsx +64 -0
  107. package/src/radio/RadioOverrides.tsx +51 -0
  108. package/src/radio/__tests__/Radio.spec.tsx +90 -0
  109. package/src/responsive/CollapseBreakpoint.ts +21 -0
  110. package/src/responsive/MinBreakpoint.ts +21 -0
  111. package/src/responsive/ResponsiveContext.tsx +57 -0
  112. package/src/snackbar/Snackbar.stories.tsx +196 -0
  113. package/src/snackbar/Snackbar.tsx +83 -0
  114. package/src/snackbar/SnackbarContent.tsx +147 -0
  115. package/src/snackbar/SnackbarOverrides.ts +23 -0
  116. package/src/snackbar/SnackbarStack.tsx +160 -0
  117. package/src/snackbar/__tests__/Snackbar.spec.tsx +196 -0
  118. package/src/stack/Stack.stories.tsx +113 -0
  119. package/src/stack/Stack.tsx +86 -0
  120. package/src/svg-icon/SvgIcon.stories.tsx +29 -0
  121. package/src/svg-icon/SvgIconOverrides.ts +32 -0
  122. package/src/svg-icon/__tests__/SvgIcon.spec.tsx +67 -0
  123. package/src/switch/Switch.stories.tsx +60 -0
  124. package/src/switch/SwitchOverrides.ts +88 -0
  125. package/src/switch/__tests__/Switch.spec.tsx +204 -0
  126. package/src/tabs/Tabs.stories.tsx +40 -0
  127. package/src/tabs/TabsOverrides.ts +45 -0
  128. package/src/tabs/__tests__/Tabs.spec.tsx +226 -0
  129. package/src/tag/Tag.stories.tsx +53 -0
  130. package/src/tag/Tag.tsx +130 -0
  131. package/src/tag/__tests__/Tag.spec.tsx +82 -0
  132. package/src/text-field/TextField.stories.tsx +50 -0
  133. package/src/text-field/TextFieldOverrides.tsx +149 -0
  134. package/src/text-field/__tests__/TextField.spec.tsx +662 -0
  135. package/src/theme/Color.ts +117 -0
  136. package/src/theme/SuperDispatchTheme.ts +3 -0
  137. package/src/theme/ThemeProvider.tsx +179 -0
  138. package/src/theme/__tests__/CssBaseline.spec.tsx +49 -0
  139. package/src/theme/__tests__/ThemeProvider.spec.ts +40 -0
  140. package/src/theme/__tests__/__snapshots__/ThemeProvider.spec.ts.snap +204 -0
  141. package/src/tiles/Tiles.stories.tsx +69 -0
  142. package/src/tiles/Tiles.tsx +163 -0
  143. package/src/tiles/__tests__/Tiles.spec.tsx +221 -0
  144. package/src/toolbar/ToolbarOverrides.ts +14 -0
  145. package/src/toolbar/__tests__/Toolbar.spec.tsx +50 -0
  146. package/src/tooltip/Tooltip.stories.tsx +32 -0
  147. package/src/tooltip/TooltipOverrides.ts +34 -0
  148. package/src/tooltip/__tests__/Tooltip.spec.tsx +182 -0
  149. package/src/typography/Typography.stories.tsx +132 -0
  150. package/src/typography/TypographyOverrides.ts +125 -0
  151. package/src/typography/__tests__/Typography.spec.tsx +253 -0
  152. package/src/utils/ExitTransitionPlaceholder.tsx +22 -0
  153. package/src/utils/ResizeObserver.tsx +28 -0
  154. package/src/utils/VisibilityObserver.tsx +75 -0
  155. package/src/utils/__tests__/ExitTransitionPlaceholder.spec.tsx +34 -0
  156. package/src/utils/isEmptyReactNode.ts +11 -0
  157. package/src/utils/mergeRefs.ts +21 -0
  158. package/src/utils/renderChildren.ts +10 -0
  159. package/src/utils/useUID.ts +9 -0
  160. package/tsconfig.json +19 -0
  161. package/LICENSE +0 -21
  162. package/dist-node/index.js.map +0 -1
  163. package/dist-web/index.js.map +0 -1
  164. /package/{dist-src → pkg/dist-src}/adaptive-toolbar/AdaptiveToolbar.js +0 -0
  165. /package/{dist-src → pkg/dist-src}/adaptive-vertical-toolbar/AdaptiveVerticalToolbar.js +0 -0
  166. /package/{dist-src → pkg/dist-src}/app-bar/AppBarOverrides.js +0 -0
  167. /package/{dist-src → pkg/dist-src}/autocomplete/AutocompleteOverrides.js +0 -0
  168. /package/{dist-src → pkg/dist-src}/avatar/AvatarOverrides.js +0 -0
  169. /package/{dist-src → pkg/dist-src}/avatar-button/AvatarButton.js +0 -0
  170. /package/{dist-src → pkg/dist-src}/button/Button.js +0 -0
  171. /package/{dist-src → pkg/dist-src}/button/ButtonOverrides.js +0 -0
  172. /package/{dist-src → pkg/dist-src}/card/CardOverrides.js +0 -0
  173. /package/{dist-src → pkg/dist-src}/card-button/CardButton.js +0 -0
  174. /package/{dist-src → pkg/dist-src}/checkbox/CheckboxField.js +0 -0
  175. /package/{dist-src → pkg/dist-src}/checkbox/CheckboxGroudField.js +0 -0
  176. /package/{dist-src → pkg/dist-src}/checkbox/CheckboxOverrides.js +0 -0
  177. /package/{dist-src → pkg/dist-src}/chip/ChipOverrides.js +0 -0
  178. /package/{dist-src → pkg/dist-src}/columns/Column.js +0 -0
  179. /package/{dist-src → pkg/dist-src}/columns/Columns.js +0 -0
  180. /package/{dist-src → pkg/dist-src}/description-list/DescriptionList.js +0 -0
  181. /package/{dist-src → pkg/dist-src}/dialog/DialogOverrides.js +0 -0
  182. /package/{dist-src → pkg/dist-src}/drawer/DrawerActions.js +0 -0
  183. /package/{dist-src → pkg/dist-src}/drawer/DrawerContent.js +0 -0
  184. /package/{dist-src → pkg/dist-src}/drawer/DrawerList.js +0 -0
  185. /package/{dist-src → pkg/dist-src}/drawer/DrawerOverrides.js +0 -0
  186. /package/{dist-src → pkg/dist-src}/drawer/DrawerTitle.js +0 -0
  187. /package/{dist-src → pkg/dist-src}/dropdown-button/DropdownButton.js +0 -0
  188. /package/{dist-src → pkg/dist-src}/grid/GridStack.js +0 -0
  189. /package/{dist-src → pkg/dist-src}/grid/InlineGrid.js +0 -0
  190. /package/{dist-src → pkg/dist-src}/icon-button/IconButtonOverrides.js +0 -0
  191. /package/{dist-src → pkg/dist-src}/index.js +0 -0
  192. /package/{dist-src → pkg/dist-src}/info-card/InfoCard.js +0 -0
  193. /package/{dist-src → pkg/dist-src}/inline/Inline.js +0 -0
  194. /package/{dist-src → pkg/dist-src}/link/LinkOverrides.js +0 -0
  195. /package/{dist-src → pkg/dist-src}/list/ListOverrides.js +0 -0
  196. /package/{dist-src → pkg/dist-src}/menu/MenuOverrides.js +0 -0
  197. /package/{dist-src → pkg/dist-src}/overflow-text/OverflowText.js +0 -0
  198. /package/{dist-src → pkg/dist-src}/pagination/PaginationOverrides.js +0 -0
  199. /package/{dist-src → pkg/dist-src}/paper/PaperOverrides.js +0 -0
  200. /package/{dist-src → pkg/dist-src}/props/AlignProps.js +0 -0
  201. /package/{dist-src → pkg/dist-src}/props/CollapseProp.js +0 -0
  202. /package/{dist-src → pkg/dist-src}/props/ResponsiveProp.js +0 -0
  203. /package/{dist-src → pkg/dist-src}/props/SpaceProp.js +0 -0
  204. /package/{dist-src → pkg/dist-src}/radio/RadioField.js +0 -0
  205. /package/{dist-src → pkg/dist-src}/radio/RadioGroupField.js +0 -0
  206. /package/{dist-src → pkg/dist-src}/radio/RadioOverrides.js +0 -0
  207. /package/{dist-src → pkg/dist-src}/responsive/CollapseBreakpoint.js +0 -0
  208. /package/{dist-src → pkg/dist-src}/responsive/MinBreakpoint.js +0 -0
  209. /package/{dist-src → pkg/dist-src}/responsive/ResponsiveContext.js +0 -0
  210. /package/{dist-src → pkg/dist-src}/snackbar/Snackbar.js +0 -0
  211. /package/{dist-src → pkg/dist-src}/snackbar/SnackbarContent.js +0 -0
  212. /package/{dist-src → pkg/dist-src}/snackbar/SnackbarOverrides.js +0 -0
  213. /package/{dist-src → pkg/dist-src}/snackbar/SnackbarStack.js +0 -0
  214. /package/{dist-src → pkg/dist-src}/stack/Stack.js +0 -0
  215. /package/{dist-src → pkg/dist-src}/svg-icon/SvgIconOverrides.js +0 -0
  216. /package/{dist-src → pkg/dist-src}/switch/SwitchOverrides.js +0 -0
  217. /package/{dist-src → pkg/dist-src}/tabs/TabsOverrides.js +0 -0
  218. /package/{dist-src → pkg/dist-src}/tag/Tag.js +0 -0
  219. /package/{dist-src → pkg/dist-src}/text-field/TextFieldOverrides.js +0 -0
  220. /package/{dist-src → pkg/dist-src}/theme/Color.js +0 -0
  221. /package/{dist-src → pkg/dist-src}/theme/SuperDispatchTheme.js +0 -0
  222. /package/{dist-src → pkg/dist-src}/theme/ThemeProvider.js +0 -0
  223. /package/{dist-src → pkg/dist-src}/tiles/Tiles.js +0 -0
  224. /package/{dist-src → pkg/dist-src}/toolbar/ToolbarOverrides.js +0 -0
  225. /package/{dist-src → pkg/dist-src}/tooltip/TooltipOverrides.js +0 -0
  226. /package/{dist-src → pkg/dist-src}/typography/TypographyOverrides.js +0 -0
  227. /package/{dist-src → pkg/dist-src}/utils/ExitTransitionPlaceholder.js +0 -0
  228. /package/{dist-src → pkg/dist-src}/utils/ResizeObserver.js +0 -0
  229. /package/{dist-src → pkg/dist-src}/utils/VisibilityObserver.js +0 -0
  230. /package/{dist-src → pkg/dist-src}/utils/isEmptyReactNode.js +0 -0
  231. /package/{dist-src → pkg/dist-src}/utils/mergeRefs.js +0 -0
  232. /package/{dist-src → pkg/dist-src}/utils/renderChildren.js +0 -0
  233. /package/{dist-src → pkg/dist-src}/utils/useUID.js +0 -0
@@ -0,0 +1,36 @@
1
+ import {
2
+ Add as AddIcon,
3
+ AttachFile as AttachFileIcon,
4
+ } from '@material-ui/icons';
5
+ import { Meta } from '@storybook/react';
6
+ import { CardButton } from './CardButton';
7
+
8
+ export default { title: 'Inputs/CardButton', component: CardButton } as Meta;
9
+
10
+ export const basic = () => (
11
+ <CardButton hint="or Drag & Drop files here" startIcon={<AddIcon />}>
12
+ Add Attachments
13
+ </CardButton>
14
+ );
15
+
16
+ export const endIcon = () => (
17
+ <CardButton hint="or Drag & Drop files here" endIcon={<AttachFileIcon />}>
18
+ Add Attachments
19
+ </CardButton>
20
+ );
21
+
22
+ export const error = () => (
23
+ <CardButton error="Invalid file extension">Add Attachments</CardButton>
24
+ );
25
+
26
+ export const small = () => (
27
+ <CardButton size="small" hint="or Drag & Drop files here">
28
+ Add Attachments
29
+ </CardButton>
30
+ );
31
+
32
+ export const large = () => (
33
+ <CardButton size="large" hint="or Drag & Drop files here">
34
+ Add Attachments
35
+ </CardButton>
36
+ );
@@ -0,0 +1,202 @@
1
+ import {
2
+ ButtonBase,
3
+ ButtonBaseProps,
4
+ Theme,
5
+ Typography,
6
+ } from '@material-ui/core';
7
+ import { ClassNameMap, makeStyles } from '@material-ui/styles';
8
+ import clsx from 'clsx';
9
+ import {
10
+ forwardRef,
11
+ ForwardRefExoticComponent,
12
+ ReactNode,
13
+ RefAttributes,
14
+ } from 'react';
15
+ import { Color } from '../theme/Color';
16
+
17
+ export type CardButtonClassKey =
18
+ | 'root'
19
+ | 'label'
20
+ | 'hint'
21
+ | 'error'
22
+ | 'primary'
23
+ | 'disabled'
24
+ | 'sizeSmall'
25
+ | 'sizeLarge'
26
+ | 'icon'
27
+ | 'startIcon'
28
+ | 'endIcon';
29
+
30
+ const useStyles = makeStyles<
31
+ Theme,
32
+ { classes?: Partial<ClassNameMap<CardButtonClassKey>> },
33
+ CardButtonClassKey
34
+ >(
35
+ (theme) => ({
36
+ root: {
37
+ width: '100%',
38
+ display: 'flex',
39
+ alignItems: 'center',
40
+ flexDirection: 'column',
41
+ justifyContent: 'center',
42
+ backgroundColor: Color.White,
43
+
44
+ border: '1px dashed',
45
+ borderRadius: theme.spacing(0.5),
46
+
47
+ padding: theme.spacing(1.5),
48
+ minHeight: theme.spacing(13),
49
+
50
+ transition: theme.transitions.create([
51
+ 'color',
52
+ 'box-shadow',
53
+ 'border-color',
54
+ 'background-color',
55
+ ]),
56
+ },
57
+
58
+ disabled: {
59
+ color: Color.Dark200,
60
+ borderColor: Color.Silver500,
61
+ backgroundColor: Color.Silver100,
62
+ },
63
+
64
+ error: {
65
+ color: Color.Red300,
66
+ borderColor: Color.Red300,
67
+ backgroundColor: Color.Red50,
68
+ '&:focus': { backgroundColor: Color.Red75 },
69
+ },
70
+
71
+ primary: {
72
+ color: Color.Blue300,
73
+ borderColor: Color.Silver500,
74
+ '&:focus': { backgroundColor: Color.Blue50 },
75
+ '&:hover, &:active': {
76
+ borderColor: Color.Blue300,
77
+ backgroundColor: Color.Blue50,
78
+ },
79
+ },
80
+
81
+ sizeSmall: {
82
+ minHeight: theme.spacing(6),
83
+ },
84
+
85
+ sizeLarge: {
86
+ minHeight: theme.spacing(17.5),
87
+ },
88
+
89
+ label: {
90
+ display: 'flex',
91
+ alignItems: 'center',
92
+ },
93
+
94
+ icon: {
95
+ display: 'flex',
96
+ '& svg': {
97
+ fontSize: theme.spacing(3),
98
+ [theme.breakpoints.up('sm')]: { fontSize: theme.spacing(2.5) },
99
+ },
100
+ },
101
+
102
+ startIcon: {
103
+ marginRight: theme.spacing(1),
104
+ marginLeft: theme.spacing(-0.5),
105
+ },
106
+
107
+ endIcon: {
108
+ marginLeft: theme.spacing(1),
109
+ marginRight: theme.spacing(-0.5),
110
+ },
111
+
112
+ hint: {
113
+ marginTop: theme.spacing(0.5),
114
+ },
115
+ }),
116
+ { name: 'SD-CardButton' },
117
+ );
118
+
119
+ export interface CardButtonProps
120
+ extends RefAttributes<HTMLButtonElement>,
121
+ ButtonBaseProps {
122
+ error?: ReactNode;
123
+ children?: ReactNode;
124
+ hint?: ReactNode;
125
+ startIcon?: ReactNode;
126
+ endIcon?: ReactNode;
127
+
128
+ size?: 'small' | 'medium' | 'large';
129
+
130
+ className?: string;
131
+ classes?: Partial<ClassNameMap<CardButtonClassKey>>;
132
+ }
133
+
134
+ export const CardButton: ForwardRefExoticComponent<CardButtonProps> =
135
+ forwardRef(
136
+ (
137
+ {
138
+ hint,
139
+ size,
140
+ error,
141
+ classes,
142
+ className,
143
+ children,
144
+ endIcon,
145
+ startIcon,
146
+ disabled,
147
+ ...props
148
+ },
149
+ ref,
150
+ ) => {
151
+ const styles = useStyles({ classes });
152
+
153
+ return (
154
+ <ButtonBase
155
+ {...props}
156
+ ref={ref}
157
+ disabled={disabled}
158
+ className={clsx(
159
+ styles.root,
160
+ {
161
+ [styles.disabled]: disabled,
162
+ [styles.error]: !disabled && error,
163
+ [styles.primary]: !disabled && !error,
164
+ [styles.sizeSmall]: size === 'small',
165
+ [styles.sizeLarge]: size === 'large',
166
+ },
167
+ className,
168
+ )}
169
+ >
170
+ {error ? (
171
+ <Typography variant="h4" color="inherit" className={styles.label}>
172
+ {error}
173
+ </Typography>
174
+ ) : (
175
+ <>
176
+ <Typography variant="h4" color="inherit" className={styles.label}>
177
+ {!!startIcon && (
178
+ <span className={clsx(styles.icon, styles.startIcon)}>
179
+ {startIcon}
180
+ </span>
181
+ )}
182
+
183
+ {children}
184
+
185
+ {!!endIcon && (
186
+ <span className={clsx(styles.icon, styles.endIcon)}>
187
+ {endIcon}
188
+ </span>
189
+ )}
190
+ </Typography>
191
+
192
+ {!!hint && (
193
+ <Typography color="textSecondary" className={styles.hint}>
194
+ {hint}
195
+ </Typography>
196
+ )}
197
+ </>
198
+ )}
199
+ </ButtonBase>
200
+ );
201
+ },
202
+ );
@@ -0,0 +1,95 @@
1
+ import { renderCSS } from '@superdispatch/ui-testutils';
2
+ import { CardButton } from '../..';
3
+
4
+ it('checks component css', () => {
5
+ expect(renderCSS(<CardButton />, ['SD-CardButton'])).toMatchInlineSnapshot(`
6
+ .SD-CardButton-root {
7
+ width: 100%;
8
+ border: 1px dashed;
9
+ display: flex;
10
+ padding: 12px;
11
+ min-height: 104px;
12
+ transition: color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,
13
+ box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,
14
+ border-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,
15
+ background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
16
+ align-items: center;
17
+ border-radius: 4px;
18
+ flex-direction: column;
19
+ justify-content: center;
20
+ background-color: Color.White;
21
+ }
22
+
23
+ .SD-CardButton-disabled {
24
+ color: Color.Dark200;
25
+ border-color: Color.Silver500;
26
+ background-color: Color.Silver100;
27
+ }
28
+
29
+ .SD-CardButton-error {
30
+ color: Color.Red300;
31
+ border-color: Color.Red300;
32
+ background-color: Color.Red50;
33
+ }
34
+
35
+ .SD-CardButton-error:focus {
36
+ background-color: Color.Red75;
37
+ }
38
+
39
+ .SD-CardButton-primary {
40
+ color: Color.Blue300;
41
+ border-color: Color.Silver500;
42
+ }
43
+
44
+ .SD-CardButton-primary:focus {
45
+ background-color: Color.Blue50;
46
+ }
47
+
48
+ .SD-CardButton-primary:hover,
49
+ .SD-CardButton-primary:active {
50
+ border-color: Color.Blue300;
51
+ background-color: Color.Blue50;
52
+ }
53
+
54
+ .SD-CardButton-sizeSmall {
55
+ min-height: 48px;
56
+ }
57
+
58
+ .SD-CardButton-sizeLarge {
59
+ min-height: 140px;
60
+ }
61
+
62
+ .SD-CardButton-label {
63
+ display: flex;
64
+ align-items: center;
65
+ }
66
+
67
+ .SD-CardButton-icon {
68
+ display: flex;
69
+ }
70
+
71
+ .SD-CardButton-icon svg {
72
+ font-size: 24px;
73
+ }
74
+
75
+ @media (min-width: 600px) {
76
+ .SD-CardButton-icon svg {
77
+ font-size: 20px;
78
+ }
79
+ }
80
+
81
+ .SD-CardButton-startIcon {
82
+ margin-left: -4px;
83
+ margin-right: 8px;
84
+ }
85
+
86
+ .SD-CardButton-endIcon {
87
+ margin-left: 8px;
88
+ margin-right: -4px;
89
+ }
90
+
91
+ .SD-CardButton-hint {
92
+ margin-top: 4px;
93
+ }
94
+ `);
95
+ });
@@ -0,0 +1,61 @@
1
+ import {
2
+ FormControlLabel,
3
+ FormGroup,
4
+ Switch,
5
+ TextField,
6
+ } from '@material-ui/core';
7
+ import { RadioField } from '..';
8
+ import { CheckboxField } from './CheckboxField';
9
+ import { CheckboxGroupField } from './CheckboxGroudField';
10
+
11
+ export default { title: 'Inputs/CheckboxField', component: CheckboxField };
12
+
13
+ export const basic = () => (
14
+ <CheckboxField label="Label" helperText="Helper Text" />
15
+ );
16
+
17
+ export const error = () => (
18
+ <CheckboxField label="Label" helperText="Error Text" error={true} />
19
+ );
20
+
21
+ export const indeterminate = () => (
22
+ <CheckboxField indeterminate={true} label="Label" />
23
+ );
24
+
25
+ export const disabled = () => (
26
+ <CheckboxGroupField label="Disabled">
27
+ <CheckboxField label="Checked" checked={true} disabled={true} />
28
+ <CheckboxField label="Unchecked" checked={false} disabled={true} />
29
+ <CheckboxField
30
+ checked={true}
31
+ disabled={true}
32
+ indeterminate={true}
33
+ label="Checked and Indeterminate"
34
+ />
35
+
36
+ <CheckboxField
37
+ checked={false}
38
+ disabled={true}
39
+ indeterminate={true}
40
+ label="Unchecked and Indeterminate"
41
+ />
42
+ </CheckboxGroupField>
43
+ );
44
+
45
+ export const labelPlacement = () => (
46
+ <CheckboxField
47
+ label="Label"
48
+ FormControlLabelProps={{ labelPlacement: 'start' }}
49
+ />
50
+ );
51
+
52
+ export const inlineForm = () => (
53
+ <CheckboxGroupField FormGroupProps={{ row: true }}>
54
+ <FormGroup row={true}>
55
+ <RadioField label="Radio" />
56
+ <CheckboxField label="Checkbox" />
57
+ <FormControlLabel label="Switch" control={<Switch />} />
58
+ <TextField placeholder="Text Field" />
59
+ </FormGroup>
60
+ </CheckboxGroupField>
61
+ );
@@ -0,0 +1,56 @@
1
+ import {
2
+ Checkbox,
3
+ CheckboxProps,
4
+ FormControl,
5
+ FormControlLabel,
6
+ FormControlLabelProps,
7
+ FormHelperText,
8
+ } from '@material-ui/core';
9
+ import { forwardRef, ForwardRefExoticComponent, ReactNode } from 'react';
10
+
11
+ export interface CheckboxFieldProps
12
+ extends CheckboxProps,
13
+ Pick<FormControlLabelProps, 'label'> {
14
+ error?: boolean;
15
+ helperText?: ReactNode;
16
+ FormControlLabelProps?: Omit<
17
+ FormControlLabelProps,
18
+ 'label' | 'checked' | 'onBlur' | 'onChange' | 'control'
19
+ >;
20
+ }
21
+
22
+ export const CheckboxField: ForwardRefExoticComponent<CheckboxFieldProps> =
23
+ forwardRef(
24
+ (
25
+ {
26
+ label,
27
+ error,
28
+ checked,
29
+ onBlur,
30
+ onChange,
31
+ helperText,
32
+ FormControlLabelProps: formControlLabelProps,
33
+ ...props
34
+ },
35
+ ref,
36
+ ) => (
37
+ <FormControl error={error}>
38
+ <FormControlLabel
39
+ {...formControlLabelProps}
40
+ label={label}
41
+ checked={checked}
42
+ onBlur={onBlur as FormControlLabelProps['onBlur']}
43
+ onChange={onChange as FormControlLabelProps['onChange']}
44
+ control={
45
+ <Checkbox
46
+ ref={ref}
47
+ color="primary"
48
+ disableRipple={true}
49
+ {...props}
50
+ />
51
+ }
52
+ />
53
+ {helperText && <FormHelperText>{helperText}</FormHelperText>}
54
+ </FormControl>
55
+ ),
56
+ );
@@ -0,0 +1,53 @@
1
+ import {
2
+ FormControl,
3
+ FormControlProps,
4
+ FormGroup,
5
+ FormGroupProps,
6
+ FormHelperText,
7
+ FormHelperTextProps,
8
+ FormLabel,
9
+ FormLabelProps,
10
+ } from '@material-ui/core';
11
+ import { forwardRef, ForwardRefExoticComponent, ReactNode } from 'react';
12
+
13
+ export interface CheckboxGroupFieldProps
14
+ extends Omit<FormControlProps, 'hiddenLabel' | 'onChange'> {
15
+ FormGroupProps?: Omit<FormGroupProps, 'children'>;
16
+
17
+ label?: ReactNode;
18
+ FormLabelProps?: Omit<FormLabelProps, 'children'>;
19
+
20
+ helperText?: ReactNode;
21
+ FormHelperTextProps?: Omit<FormHelperTextProps, 'children'>;
22
+ }
23
+
24
+ export const CheckboxGroupField: ForwardRefExoticComponent<CheckboxGroupFieldProps> =
25
+ forwardRef(
26
+ (
27
+ {
28
+ FormGroupProps: formGroupProps,
29
+
30
+ label,
31
+ FormLabelProps: formLabelProps,
32
+
33
+ helperText,
34
+ FormHelperTextProps: formHelperTextProps,
35
+
36
+ children,
37
+ ...formControlProps
38
+ },
39
+ ref,
40
+ ) => (
41
+ <FormControl {...formControlProps} hiddenLabel={!label}>
42
+ {!!label && <FormLabel {...formLabelProps}>{label}</FormLabel>}
43
+
44
+ <FormGroup ref={ref} {...formGroupProps}>
45
+ {children}
46
+ </FormGroup>
47
+
48
+ {!!helperText && (
49
+ <FormHelperText {...formHelperTextProps}>{helperText}</FormHelperText>
50
+ )}
51
+ </FormControl>
52
+ ),
53
+ );
@@ -0,0 +1,55 @@
1
+ import { SvgIcon } from '@material-ui/core';
2
+ import { Color } from '../theme/Color';
3
+ import { SuperDispatchTheme } from '../theme/SuperDispatchTheme';
4
+
5
+ export function overrideCheckbox(theme: SuperDispatchTheme): void {
6
+ theme.props.MuiCheckbox = {
7
+ color: 'primary',
8
+ icon: (
9
+ <SvgIcon>
10
+ <rect
11
+ width="17"
12
+ height="17"
13
+ x="3.5"
14
+ y="3.5"
15
+ fill={Color.White}
16
+ stroke="currentColor"
17
+ rx="1.5"
18
+ />
19
+ </SvgIcon>
20
+ ),
21
+ checkedIcon: (
22
+ <SvgIcon>
23
+ <rect width="18" height="18" x="3" y="3" fill="currentColor" rx="2" />
24
+ <path
25
+ fill={Color.White}
26
+ d="M15.73 8l-.63.63c-1.43 1.43-2.94 3.05-4.37 4.5l-1.9-1.57-.7-.57L7 12.38l.7.57 2.53 2.09.63.52.58-.58c1.6-1.62 3.35-3.5 4.93-5.08l.63-.63L15.73 8z"
27
+ />
28
+ </SvgIcon>
29
+ ),
30
+ indeterminateIcon: (
31
+ <SvgIcon>
32
+ <rect width="18" height="18" x="3" y="3" fill="currentIcon" rx="2" />
33
+ <path fill={Color.White} d="M7 11h10v2H7v-2z" />
34
+ </SvgIcon>
35
+ ),
36
+ };
37
+
38
+ theme.overrides.MuiCheckbox = {
39
+ root: {
40
+ color: Color.Dark100,
41
+ marginTop: theme.spacing(-0.625),
42
+ marginBottom: theme.spacing(-0.625),
43
+ },
44
+
45
+ colorPrimary: {
46
+ '&$checked$disabled': {
47
+ color: Color.Silver500,
48
+ },
49
+
50
+ '&:hover:not($checked)': {
51
+ color: Color.Dark100,
52
+ },
53
+ },
54
+ };
55
+ }
@@ -0,0 +1,105 @@
1
+ import { Checkbox } 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.MuiCheckbox).toMatchInlineSnapshot(`
8
+ Object {
9
+ "checkedIcon": <WithStyles(ForwardRef(SvgIcon))>
10
+ <rect
11
+ fill="currentColor"
12
+ height="18"
13
+ rx="2"
14
+ width="18"
15
+ x="3"
16
+ y="3"
17
+ />
18
+ <path
19
+ d="M15.73 8l-.63.63c-1.43 1.43-2.94 3.05-4.37 4.5l-1.9-1.57-.7-.57L7 12.38l.7.57 2.53 2.09.63.52.58-.58c1.6-1.62 3.35-3.5 4.93-5.08l.63-.63L15.73 8z"
20
+ fill="#fff"
21
+ />
22
+ </WithStyles(ForwardRef(SvgIcon))>,
23
+ "color": "primary",
24
+ "icon": <WithStyles(ForwardRef(SvgIcon))>
25
+ <rect
26
+ fill="#fff"
27
+ height="17"
28
+ rx="1.5"
29
+ stroke="currentColor"
30
+ width="17"
31
+ x="3.5"
32
+ y="3.5"
33
+ />
34
+ </WithStyles(ForwardRef(SvgIcon))>,
35
+ "indeterminateIcon": <WithStyles(ForwardRef(SvgIcon))>
36
+ <rect
37
+ fill="currentIcon"
38
+ height="18"
39
+ rx="2"
40
+ width="18"
41
+ x="3"
42
+ y="3"
43
+ />
44
+ <path
45
+ d="M7 11h10v2H7v-2z"
46
+ fill="#fff"
47
+ />
48
+ </WithStyles(ForwardRef(SvgIcon))>,
49
+ }
50
+ `);
51
+ });
52
+
53
+ it('checks component css', () => {
54
+ expect(renderCSS(<Checkbox />, ['MuiCheckbox'])).toMatchInlineSnapshot(`
55
+ .MuiCheckbox-root {
56
+ color: Color.Dark100;
57
+ margin-top: -5px;
58
+ margin-bottom: -5px;
59
+ }
60
+
61
+ .MuiCheckbox-colorPrimary.Mui-checked {
62
+ color: Color.Blue300;
63
+ }
64
+
65
+ .MuiCheckbox-colorPrimary.Mui-disabled {
66
+ color: Color.Silver400;
67
+ }
68
+
69
+ .MuiCheckbox-colorPrimary.Mui-checked.Mui-disabled {
70
+ color: Color.Silver500;
71
+ }
72
+
73
+ .MuiCheckbox-colorPrimary:hover:not(.Mui-checked) {
74
+ color: Color.Dark100;
75
+ }
76
+
77
+ .MuiCheckbox-colorPrimary.Mui-checked:hover {
78
+ background-color: rgba(0, 117, 255, 0.04);
79
+ }
80
+
81
+ @media (hover: none) {
82
+ .MuiCheckbox-colorPrimary.Mui-checked:hover {
83
+ background-color: transparent;
84
+ }
85
+ }
86
+
87
+ .MuiCheckbox-colorSecondary.Mui-checked {
88
+ color: #f50057;
89
+ }
90
+
91
+ .MuiCheckbox-colorSecondary.Mui-disabled {
92
+ color: Color.Silver400;
93
+ }
94
+
95
+ .MuiCheckbox-colorSecondary.Mui-checked:hover {
96
+ background-color: rgba(245, 0, 87, 0.04);
97
+ }
98
+
99
+ @media (hover: none) {
100
+ .MuiCheckbox-colorSecondary.Mui-checked:hover {
101
+ background-color: transparent;
102
+ }
103
+ }
104
+ `);
105
+ });
@@ -0,0 +1,26 @@
1
+ import { Chip } from '@material-ui/core';
2
+ import { PropsLink } from '@superdispatch/ui-docs';
3
+ import { Inline } from '..';
4
+
5
+ export default {
6
+ title: 'Data Display/Chip',
7
+ parameters: {
8
+ componentSubtitle: (
9
+ <PropsLink url="https://material-ui.com/api/chip/#props" />
10
+ ),
11
+ },
12
+ };
13
+
14
+ export const examples = () => (
15
+ <Inline>
16
+ <Chip label="Basic" />
17
+ <Chip label="Disabled" disabled={true} />
18
+ <Chip label="Clickable" clickable={true} />
19
+ <Chip
20
+ label="Deletable"
21
+ onDelete={() => {
22
+ alert('Delete!');
23
+ }}
24
+ />
25
+ </Inline>
26
+ );