@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,196 @@
1
+ import { renderCSS, renderTheme } from '@superdispatch/ui-testutils';
2
+ import { Snackbar } from '../../index';
3
+
4
+ it('checks default props', () => {
5
+ const { props } = renderTheme();
6
+
7
+ expect(props.MuiSnackbar).toMatchInlineSnapshot(`undefined`);
8
+ expect(props.MuiSnackbarContent).toMatchInlineSnapshot(`undefined`);
9
+ });
10
+
11
+ it('checks component css', () => {
12
+ expect(
13
+ renderCSS(<Snackbar open={true} />, [
14
+ 'MuiSnackbar',
15
+ 'MuiSnackbarContent',
16
+ 'SD-SnackbarContent',
17
+ ]),
18
+ ).toMatchInlineSnapshot(`
19
+ .MuiSnackbar-root {
20
+ left: 8px;
21
+ right: 8px;
22
+ display: flex;
23
+ z-index: 1400;
24
+ position: fixed;
25
+ align-items: center;
26
+ justify-content: center;
27
+ }
28
+
29
+ .MuiSnackbar-anchorOriginTopCenter {
30
+ top: 8px;
31
+ }
32
+
33
+ @media (min-width: 600px) {
34
+ .MuiSnackbar-anchorOriginTopCenter {
35
+ top: 24px;
36
+ left: 50%;
37
+ right: auto;
38
+ transform: translateX(-50%);
39
+ }
40
+ }
41
+
42
+ .MuiSnackbar-anchorOriginBottomCenter {
43
+ left: 0;
44
+ right: 0;
45
+ bottom: 0;
46
+ }
47
+
48
+ @media (min-width: 600px) {
49
+ .MuiSnackbar-anchorOriginBottomCenter {
50
+ left: 50%;
51
+ right: auto;
52
+ bottom: 24px;
53
+ transform: translateX(-50%);
54
+ }
55
+ }
56
+
57
+ .MuiSnackbar-anchorOriginTopRight {
58
+ top: 8px;
59
+ justify-content: flex-end;
60
+ }
61
+
62
+ @media (min-width: 600px) {
63
+ .MuiSnackbar-anchorOriginTopRight {
64
+ top: 24px;
65
+ left: auto;
66
+ right: 24px;
67
+ }
68
+ }
69
+
70
+ .MuiSnackbar-anchorOriginBottomRight {
71
+ bottom: 8px;
72
+ justify-content: flex-end;
73
+ }
74
+
75
+ @media (min-width: 600px) {
76
+ .MuiSnackbar-anchorOriginBottomRight {
77
+ left: auto;
78
+ right: 24px;
79
+ bottom: 24px;
80
+ }
81
+ }
82
+
83
+ .MuiSnackbar-anchorOriginTopLeft {
84
+ top: 8px;
85
+ justify-content: flex-start;
86
+ }
87
+
88
+ @media (min-width: 600px) {
89
+ .MuiSnackbar-anchorOriginTopLeft {
90
+ top: 24px;
91
+ left: 24px;
92
+ right: auto;
93
+ }
94
+ }
95
+
96
+ .MuiSnackbar-anchorOriginBottomLeft {
97
+ bottom: 8px;
98
+ justify-content: flex-start;
99
+ }
100
+
101
+ @media (min-width: 600px) {
102
+ .MuiSnackbar-anchorOriginBottomLeft {
103
+ left: 24px;
104
+ right: auto;
105
+ bottom: 24px;
106
+ }
107
+ }
108
+
109
+ .MuiSnackbarContent-root {
110
+ color: Color.White;
111
+ width: 100%;
112
+ display: flex;
113
+ padding: 6px 16px;
114
+ flex-grow: 1;
115
+ flex-wrap: wrap;
116
+ font-size: 14px;
117
+ min-height: 60px;
118
+ align-items: center;
119
+ font-family: 'Inter', sans-serif;
120
+ font-weight: 400;
121
+ line-height: 20px;
122
+ border-radius: 0;
123
+ background-color: rgb(49, 49, 49);
124
+ }
125
+
126
+ @media (min-width: 0px) and (max-width: 599.95px) {
127
+ .MuiSnackbarContent-root {
128
+ font-size: 16px;
129
+ line-height: 24px;
130
+ }
131
+ }
132
+
133
+ @media (min-width: 600px) {
134
+ .MuiSnackbarContent-root {
135
+ width: 432px;
136
+ flex-grow: initial;
137
+ max-width: 432px;
138
+ min-width: 288px;
139
+ border-radius: 4px;
140
+ }
141
+ }
142
+
143
+ .MuiSnackbarContent-message {
144
+ flex: 1;
145
+ display: flex;
146
+ padding: 8px 0;
147
+ }
148
+
149
+ .MuiSnackbarContent-action {
150
+ display: flex;
151
+ align-items: center;
152
+ margin-left: auto;
153
+ margin-right: -8px;
154
+ padding-left: 16px;
155
+ }
156
+
157
+ .SD-SnackbarContent-root {
158
+ color: Color.White;
159
+ background-color: Color.Dark500;
160
+ }
161
+
162
+ .SD-SnackbarContent-root.SD-SnackbarContent-variantError {
163
+ color: Color.White;
164
+ background-color: Color.Red500;
165
+ }
166
+
167
+ .SD-SnackbarContent-action {
168
+ padding-left: 8px;
169
+ }
170
+
171
+ .SD-SnackbarContent-message {
172
+ align-items: center;
173
+ }
174
+
175
+ @media (max-width: 599.95px) {
176
+ .SD-SnackbarContent-message {
177
+ font-size: 16px;
178
+ }
179
+ }
180
+
181
+ .SD-SnackbarContent-icon {
182
+ font-size: 24px;
183
+ margin-right: 8px;
184
+ }
185
+
186
+ .SD-SnackbarContent-closeButton {
187
+ color: Color.White40;
188
+ }
189
+
190
+ .SD-SnackbarContent-closeButton:hover,
191
+ .SD-SnackbarContent-closeButton:focus {
192
+ color: Color.White40;
193
+ background-color: Color.White08;
194
+ }
195
+ `);
196
+ });
@@ -0,0 +1,113 @@
1
+ import { Link } from '@material-ui/core';
2
+ import { Meta } from '@storybook/react';
3
+ import { Empty, Placeholder } from '@superdispatch/ui-docs';
4
+ import { Box } from '@superdispatch/ui-lab';
5
+ import { Stack } from './Stack';
6
+
7
+ export default {
8
+ title: 'Layout/Stack',
9
+ component: Stack,
10
+ decorators: [
11
+ (Story) => (
12
+ <Box maxWidth="240px">
13
+ <Story />
14
+ </Box>
15
+ ),
16
+ ],
17
+ parameters: {
18
+ componentSubtitle: (
19
+ <>
20
+ Heavily inspired by the{' '}
21
+ <Link href="https://seek-oss.github.io/braid-design-system/components/Stack">
22
+ Stack
23
+ </Link>{' '}
24
+ component from the{' '}
25
+ <Link href="https://seek-oss.github.io/braid-design-system">
26
+ BRAID Design System
27
+ </Link>
28
+ .
29
+ </>
30
+ ),
31
+ },
32
+ } as Meta;
33
+
34
+ export const basic = () => (
35
+ <Stack>
36
+ <Placeholder height={48} />
37
+ <Placeholder height={48} />
38
+ <Placeholder height={48} />
39
+ </Stack>
40
+ );
41
+
42
+ export const emptyElements = () => (
43
+ <Stack>
44
+ <Empty />
45
+ <Placeholder height={48} />
46
+ <Empty />
47
+ <Placeholder height={48} />
48
+ <Empty />
49
+ <Placeholder height={48} />
50
+ </Stack>
51
+ );
52
+
53
+ export const responsiveSpace = () => (
54
+ <Stack space={['small', 'xsmall', 'xxsmall']}>
55
+ <Placeholder height={48} />
56
+ <Placeholder height={48} />
57
+ <Placeholder height={48} />
58
+ </Stack>
59
+ );
60
+
61
+ export const alignment = () => (
62
+ <Stack align="center">
63
+ <Placeholder height={48} width={48} />
64
+ <Placeholder height={48} width={64} />
65
+ <Placeholder height={48} width={128} />
66
+ </Stack>
67
+ );
68
+
69
+ export const responsiveAlignment = () => (
70
+ <Stack align={['center', 'left']}>
71
+ <Placeholder height={48} width={48} />
72
+ <Placeholder height={48} width={64} />
73
+ <Placeholder height={48} width={128} />
74
+ </Stack>
75
+ );
76
+
77
+ export const dynamicWidth = () => (
78
+ <Stack>
79
+ <Box padding="small">
80
+ <Stack align={['left', 'right']}>
81
+ <Box
82
+ padding="small"
83
+ borderWidth="small"
84
+ borderRadius="small"
85
+ borderColor="Silver400"
86
+ backgroundColor="White"
87
+ >
88
+ Hey!
89
+ </Box>
90
+
91
+ <Box
92
+ padding="small"
93
+ borderWidth="small"
94
+ borderRadius="small"
95
+ borderColor="Silver400"
96
+ backgroundColor="White"
97
+ >
98
+ Ho!
99
+ </Box>
100
+
101
+ <Box
102
+ padding="small"
103
+ borderWidth="small"
104
+ borderRadius="small"
105
+ borderColor="Silver400"
106
+ backgroundColor="White"
107
+ >
108
+ Let’s Go!
109
+ </Box>
110
+ </Stack>
111
+ </Box>
112
+ </Stack>
113
+ );
@@ -0,0 +1,86 @@
1
+ import { forwardRef, ReactNode } from 'react';
2
+ import flattenChildren from 'react-keyed-flatten-children';
3
+ import styled, { css, SimpleInterpolation } from 'styled-components';
4
+ import { HorizontalAlign, parseAlignProp } from '../props/AlignProps';
5
+ import {
6
+ parseResponsiveProp,
7
+ ResponsiveProp,
8
+ ResponsivePropTuple,
9
+ } from '../props/ResponsiveProp';
10
+ import { parseSpaceProp, SpaceProp } from '../props/SpaceProp';
11
+
12
+ function stackItemMixin(
13
+ space: SpaceProp,
14
+ align: HorizontalAlign,
15
+ ): readonly SimpleInterpolation[] {
16
+ return css`
17
+ flex-direction: column;
18
+ align-items: ${parseAlignProp(align)};
19
+ display: ${align === 'left' ? 'block' : 'flex'};
20
+
21
+ &:empty {
22
+ display: none;
23
+ }
24
+
25
+ &:not(:empty) ~ div {
26
+ padding-top: ${parseSpaceProp(space)}px;
27
+ }
28
+ `;
29
+ }
30
+
31
+ interface StackRootProps {
32
+ space: ResponsivePropTuple<SpaceProp>;
33
+ align: ResponsivePropTuple<HorizontalAlign>;
34
+ }
35
+
36
+ const StackRoot = styled.div<StackRootProps>(
37
+ ({ theme, space, align }) =>
38
+ css`
39
+ width: 100%;
40
+
41
+ & > div {
42
+ ${stackItemMixin(space[0], align[0])};
43
+
44
+ ${theme.breakpoints.up('sm')} {
45
+ ${stackItemMixin(space[1], align[1])};
46
+ }
47
+
48
+ ${theme.breakpoints.up('md')} {
49
+ ${stackItemMixin(space[2], align[2])};
50
+ }
51
+ }
52
+ `,
53
+ );
54
+
55
+ export interface StackProps {
56
+ children?: ReactNode;
57
+ 'aria-label'?: string;
58
+ 'aria-labelledby'?: string;
59
+ space?: ResponsiveProp<SpaceProp>;
60
+ align?: ResponsiveProp<HorizontalAlign>;
61
+ }
62
+
63
+ export const Stack = forwardRef<HTMLDivElement, StackProps>(
64
+ (
65
+ {
66
+ children,
67
+ 'aria-label': ariaLabel,
68
+ 'aria-labelledby': ariaLabelledBy,
69
+ space = 'xsmall',
70
+ align = 'left',
71
+ },
72
+ ref,
73
+ ) => (
74
+ <StackRoot
75
+ ref={ref}
76
+ align={parseResponsiveProp(align)}
77
+ space={parseResponsiveProp(space)}
78
+ aria-label={ariaLabel}
79
+ aria-labelledby={ariaLabelledBy}
80
+ >
81
+ {flattenChildren(children).map((child, idx) => (
82
+ <div key={idx}>{child}</div>
83
+ ))}
84
+ </StackRoot>
85
+ ),
86
+ );
@@ -0,0 +1,29 @@
1
+ import { Home as HomeIcon } from '@material-ui/icons';
2
+ import { PropsLink } from '@superdispatch/ui-docs';
3
+ import { Inline } from '../inline/Inline';
4
+
5
+ export default {
6
+ title: 'Data Display/SvgIcon',
7
+ parameters: {
8
+ componentSubtitle: (
9
+ <PropsLink url="https://material-ui.com/api/svg-icon/#props" />
10
+ ),
11
+ },
12
+ };
13
+
14
+ export const basic = () => (
15
+ <Inline>
16
+ <HomeIcon />
17
+ <HomeIcon color="primary" />
18
+ <HomeIcon color="action" />
19
+ <HomeIcon color="disabled" />
20
+ </Inline>
21
+ );
22
+
23
+ export const customSize = () => (
24
+ <Inline verticalAlign="bottom">
25
+ <HomeIcon fontSize="small" />
26
+ <HomeIcon />
27
+ <HomeIcon fontSize="large" />
28
+ </Inline>
29
+ );
@@ -0,0 +1,32 @@
1
+ import { Color } from '../theme/Color';
2
+ import { SuperDispatchTheme } from '../theme/SuperDispatchTheme';
3
+
4
+ export function overrideSvgIcon(theme: SuperDispatchTheme): void {
5
+ const sm = theme.breakpoints.up('sm');
6
+
7
+ theme.overrides.MuiSvgIcon = {
8
+ root: {
9
+ display: 'inherit',
10
+
11
+ fontSize: 'var(--mui-svg-icon-size, 32px)',
12
+ [sm]: {
13
+ fontSize: 'var(--mui-svg-icon-size, 24px)',
14
+ },
15
+ },
16
+
17
+ fontSizeSmall: {
18
+ fontSize: 'var(--mui-svg-icon-size, 24px)',
19
+ [sm]: {
20
+ fontSize: 'var(--mui-svg-icon-size, 16px)',
21
+ },
22
+ },
23
+
24
+ fontSizeLarge: {
25
+ fontSize: 'var(--mui-svg-icon-size, 32px)',
26
+ },
27
+
28
+ colorAction: {
29
+ color: Color.Dark100,
30
+ },
31
+ };
32
+ }
@@ -0,0 +1,67 @@
1
+ import { SvgIcon } 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.MuiSvgIcon).toMatchInlineSnapshot(`undefined`);
8
+ });
9
+
10
+ it('checks component css', () => {
11
+ expect(renderCSS(<SvgIcon />, ['MuiSvgIcon'])).toMatchInlineSnapshot(`
12
+ .MuiSvgIcon-root {
13
+ fill: currentColor;
14
+ width: 1em;
15
+ height: 1em;
16
+ display: inherit;
17
+ font-size: var(--mui-svg-icon-size, 32px);
18
+ transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
19
+ flex-shrink: 0;
20
+ user-select: none;
21
+ }
22
+
23
+ @media (min-width: 600px) {
24
+ .MuiSvgIcon-root {
25
+ font-size: var(--mui-svg-icon-size, 24px);
26
+ }
27
+ }
28
+
29
+ .MuiSvgIcon-colorPrimary {
30
+ color: Color.Blue300;
31
+ }
32
+
33
+ .MuiSvgIcon-colorSecondary {
34
+ color: #f50057;
35
+ }
36
+
37
+ .MuiSvgIcon-colorAction {
38
+ color: Color.Dark100;
39
+ }
40
+
41
+ .MuiSvgIcon-colorError {
42
+ color: Color.Red300;
43
+ }
44
+
45
+ .MuiSvgIcon-colorDisabled {
46
+ color: Color.Silver400;
47
+ }
48
+
49
+ .MuiSvgIcon-fontSizeInherit {
50
+ font-size: inherit;
51
+ }
52
+
53
+ .MuiSvgIcon-fontSizeSmall {
54
+ font-size: var(--mui-svg-icon-size, 24px);
55
+ }
56
+
57
+ @media (min-width: 600px) {
58
+ .MuiSvgIcon-fontSizeSmall {
59
+ font-size: var(--mui-svg-icon-size, 16px);
60
+ }
61
+ }
62
+
63
+ .MuiSvgIcon-fontSizeLarge {
64
+ font-size: var(--mui-svg-icon-size, 32px);
65
+ }
66
+ `);
67
+ });
@@ -0,0 +1,60 @@
1
+ import {
2
+ FormControlLabel,
3
+ FormGroup,
4
+ Switch,
5
+ TextField,
6
+ } from '@material-ui/core';
7
+ import { PropsLink } from '@superdispatch/ui-docs';
8
+ import { CheckboxField, RadioField, RadioGroupField } from '..';
9
+
10
+ export default {
11
+ title: 'Inputs/Switch',
12
+ parameters: {
13
+ componentSubtitle: (
14
+ <PropsLink url="https://material-ui.com/api/switch/#props" />
15
+ ),
16
+ },
17
+ };
18
+
19
+ export const basic = () => <Switch />;
20
+
21
+ export const labelled = () => (
22
+ <FormGroup row={true}>
23
+ <FormControlLabel label="Right Label" control={<Switch />} />
24
+
25
+ <FormControlLabel
26
+ label="Left Label"
27
+ labelPlacement="start"
28
+ control={<Switch />}
29
+ />
30
+ </FormGroup>
31
+ );
32
+
33
+ export const disabled = () => (
34
+ <FormGroup row={true}>
35
+ <FormControlLabel
36
+ label="On"
37
+ checked={true}
38
+ disabled={true}
39
+ control={<Switch />}
40
+ />
41
+
42
+ <FormControlLabel
43
+ label="Off"
44
+ checked={false}
45
+ disabled={true}
46
+ control={<Switch />}
47
+ />
48
+ </FormGroup>
49
+ );
50
+
51
+ export const inlineForm = () => (
52
+ <RadioGroupField RadioGroupProps={{ row: true }}>
53
+ <FormGroup row={true}>
54
+ <RadioField label="Radio" />
55
+ <CheckboxField label="Checkbox" />
56
+ <FormControlLabel label="Switch" control={<Switch />} />
57
+ <TextField placeholder="Text Field" />
58
+ </FormGroup>
59
+ </RadioGroupField>
60
+ );
@@ -0,0 +1,88 @@
1
+ import { Color } from '../theme/Color';
2
+ import { SuperDispatchTheme } from '../theme/SuperDispatchTheme';
3
+
4
+ export function overrideSwitch(theme: SuperDispatchTheme): void {
5
+ const sm = theme.breakpoints.up('sm');
6
+
7
+ theme.props.MuiSwitch = {
8
+ color: 'primary',
9
+ disableRipple: true,
10
+ disableFocusRipple: true,
11
+ };
12
+
13
+ theme.overrides.MuiSwitch = {
14
+ root: {
15
+ width: theme.spacing(9.5),
16
+ height: theme.spacing(5.5),
17
+ padding: theme.spacing(0.75, 1.5),
18
+ [sm]: {
19
+ width: theme.spacing(8),
20
+ height: theme.spacing(4),
21
+ padding: theme.spacing(0.5, 1.5),
22
+ },
23
+ },
24
+
25
+ track: {
26
+ opacity: undefined,
27
+ boxShadow: `0 0 0 0 ${Color.Transparent}`,
28
+
29
+ transition: theme.transitions.create(['box-shadow', 'background-color'], {
30
+ duration: theme.transitions.duration.shortest,
31
+ }),
32
+
33
+ borderRadius: theme.spacing(2),
34
+ [sm]: { borderRadius: theme.spacing(1.625) },
35
+ },
36
+
37
+ thumb: {
38
+ color: Color.White,
39
+ boxShadow: undefined,
40
+ width: theme.spacing(3),
41
+ height: theme.spacing(3),
42
+ [sm]: { width: theme.spacing(2), height: theme.spacing(2) },
43
+ },
44
+
45
+ switchBase: {
46
+ left: theme.spacing(1),
47
+ padding: theme.spacing(1.25, 1),
48
+ [sm]: { padding: theme.spacing(1) },
49
+
50
+ '&$checked': {
51
+ transform: `translateX(${theme.spacing(2.5)}px)`,
52
+ [sm]: { transform: `translateX(${theme.spacing(2)}px)` },
53
+ },
54
+
55
+ '&$checked + $track': {
56
+ opacity: undefined,
57
+ },
58
+
59
+ '&$disabled + $track': {
60
+ opacity: undefined,
61
+ },
62
+ },
63
+
64
+ colorPrimary: {
65
+ '&$checked': {
66
+ color: undefined,
67
+
68
+ '&:hover': {
69
+ backgroundColor: undefined,
70
+
71
+ '& + $track': { backgroundColor: Color.Blue400 },
72
+ },
73
+ },
74
+
75
+ '& + $track': { backgroundColor: Color.Silver500 },
76
+
77
+ '&$disabled + $track': { backgroundColor: Color.Silver300 },
78
+
79
+ '&$checked$disabled + $track': { backgroundColor: Color.Blue100 },
80
+
81
+ '&:hover + $track': { backgroundColor: Color.Dark100 },
82
+
83
+ '&.Mui-focusVisible + $track': {
84
+ boxShadow: `0 0 0 3px ${Color.Blue100}`,
85
+ },
86
+ },
87
+ };
88
+ }