@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,111 @@
1
+ import { SvgIcon } from '@material-ui/core';
2
+ import { Color } from '../theme/Color';
3
+ import { SuperDispatchTheme } from '../theme/SuperDispatchTheme';
4
+
5
+ export function overrideChip(theme: SuperDispatchTheme): void {
6
+ const sm = theme.breakpoints.up('sm');
7
+
8
+ theme.props.MuiChip = {
9
+ size: 'small',
10
+ deleteIcon: (
11
+ <div>
12
+ <SvgIcon>
13
+ <path
14
+ fillRule="evenodd"
15
+ clipRule="evenodd"
16
+ d="M13.239 12L17 8.239 15.761 7 12 10.761 8.239 7 7 8.239 10.761 12 7 15.761 8.239 17 12 13.239 15.761 17 17 15.761 13.239 12z"
17
+ fill="currentColor"
18
+ />
19
+ </SvgIcon>
20
+ </div>
21
+ ),
22
+ };
23
+ theme.overrides.MuiChip = {
24
+ root: {
25
+ ...theme.typography.body2,
26
+ color: undefined,
27
+ height: undefined,
28
+ borderRadius: 4,
29
+ backgroundColor: Color.Silver200,
30
+ '&$disabled': {
31
+ opacity: undefined,
32
+ color: Color.Dark100,
33
+ },
34
+ },
35
+
36
+ sizeSmall: {
37
+ height: undefined,
38
+ },
39
+
40
+ labelSmall: {
41
+ paddingLeft: 6,
42
+ paddingRight: 6,
43
+ [sm]: { paddingLeft: 4, paddingRight: 4 },
44
+ },
45
+
46
+ clickable: {
47
+ '&:hover, &:focus': {
48
+ backgroundColor: undefined,
49
+ },
50
+ '&:active': {
51
+ boxShadow: undefined,
52
+ },
53
+ '&:focus': {
54
+ boxShadow: `0 0 0 2px ${Color.Silver300}`,
55
+ },
56
+ '&:active, &:hover': {
57
+ backgroundColor: Color.Silver300,
58
+ },
59
+ },
60
+
61
+ deletable: {
62
+ '&:focus': {
63
+ backgroundColor: undefined,
64
+ boxShadow: `0 0 0 2px ${Color.Silver300}`,
65
+ },
66
+ },
67
+
68
+ deleteIcon: {
69
+ width: undefined,
70
+ height: undefined,
71
+ display: 'flex',
72
+ transition: theme.transitions.create('background-color'),
73
+
74
+ '&:active, &:hover, &:focus': {
75
+ '& > svg': {
76
+ backgroundColor: Color.Silver400,
77
+ },
78
+ },
79
+
80
+ '& > svg': {
81
+ borderRadius: '50%',
82
+ color: Color.Dark200,
83
+ fontSize: '1em',
84
+ },
85
+ },
86
+
87
+ deleteIconSmall: {
88
+ width: undefined,
89
+ height: undefined,
90
+
91
+ padding: theme.spacing(0.5),
92
+ marginLeft: theme.spacing(-0.5),
93
+ marginRight: theme.spacing(0.25),
94
+ [sm]: { marginRight: 0 },
95
+ },
96
+
97
+ icon: {
98
+ color: Color.Dark100,
99
+ fontSize: '1em',
100
+ marginRight: undefined,
101
+ },
102
+
103
+ iconSmall: {
104
+ width: undefined,
105
+ height: undefined,
106
+ marginLeft: 8,
107
+ marginRight: undefined,
108
+ [sm]: { marginLeft: 4 },
109
+ },
110
+ };
111
+ }
@@ -0,0 +1,308 @@
1
+ import { Chip } 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.MuiChip).toMatchInlineSnapshot(`
8
+ Object {
9
+ "deleteIcon": <div>
10
+ <WithStyles(ForwardRef(SvgIcon))>
11
+ <path
12
+ clipRule="evenodd"
13
+ d="M13.239 12L17 8.239 15.761 7 12 10.761 8.239 7 7 8.239 10.761 12 7 15.761 8.239 17 12 13.239 15.761 17 17 15.761 13.239 12z"
14
+ fill="currentColor"
15
+ fillRule="evenodd"
16
+ />
17
+ </WithStyles(ForwardRef(SvgIcon))>
18
+ </div>,
19
+ "size": "small",
20
+ }
21
+ `);
22
+ });
23
+
24
+ it('checks component css', () => {
25
+ expect(renderCSS(<Chip />, ['MuiChip'])).toMatchInlineSnapshot(`
26
+ .MuiChip-root {
27
+ border: none;
28
+ cursor: default;
29
+ display: inline-flex;
30
+ outline: 0;
31
+ padding: 0;
32
+ font-size: 14px;
33
+ box-sizing: border-box;
34
+ transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,
35
+ box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
36
+ align-items: center;
37
+ font-family: 'Inter', sans-serif;
38
+ font-weight: 400;
39
+ line-height: 20px;
40
+ white-space: nowrap;
41
+ border-radius: 4px;
42
+ vertical-align: middle;
43
+ justify-content: center;
44
+ text-decoration: none;
45
+ background-color: Color.Silver200;
46
+ }
47
+
48
+ .MuiChip-root.Mui-disabled {
49
+ color: Color.Dark100;
50
+ pointer-events: none;
51
+ }
52
+
53
+ .MuiChip-root .MuiChip-avatar {
54
+ color: #616161;
55
+ width: 24px;
56
+ height: 24px;
57
+ font-size: 0.75rem;
58
+ margin-left: 5px;
59
+ margin-right: -6px;
60
+ }
61
+
62
+ .MuiChip-root .MuiChip-avatarColorPrimary {
63
+ color: Color.White;
64
+ background-color: rgb(0, 81, 178);
65
+ }
66
+
67
+ .MuiChip-root .MuiChip-avatarColorSecondary {
68
+ color: Color.White;
69
+ background-color: #c51162;
70
+ }
71
+
72
+ .MuiChip-root .MuiChip-avatarSmall {
73
+ width: 18px;
74
+ height: 18px;
75
+ font-size: 0.625rem;
76
+ margin-left: 4px;
77
+ margin-right: -4px;
78
+ }
79
+
80
+ @media (min-width: 0px) and (max-width: 599.95px) {
81
+ .MuiChip-root {
82
+ font-size: 16px;
83
+ line-height: 24px;
84
+ }
85
+ }
86
+
87
+ .MuiChip-colorPrimary {
88
+ color: Color.White;
89
+ background-color: Color.Blue300;
90
+ }
91
+
92
+ .MuiChip-colorSecondary {
93
+ color: Color.White;
94
+ background-color: #f50057;
95
+ }
96
+
97
+ .MuiChip-clickable {
98
+ cursor: pointer;
99
+ user-select: none;
100
+ -webkit-tap-highlight-color: transparent;
101
+ }
102
+
103
+ .MuiChip-clickable:focus {
104
+ box-shadow: 0 0 0 2px Color.Silver300;
105
+ }
106
+
107
+ .MuiChip-clickable:active,
108
+ .MuiChip-clickable:hover {
109
+ background-color: Color.Silver300;
110
+ }
111
+
112
+ .MuiChip-clickableColorPrimary:hover,
113
+ .MuiChip-clickableColorPrimary:focus {
114
+ background-color: rgb(20, 128, 255);
115
+ }
116
+
117
+ .MuiChip-clickableColorSecondary:hover,
118
+ .MuiChip-clickableColorSecondary:focus {
119
+ background-color: rgb(245, 20, 100);
120
+ }
121
+
122
+ .MuiChip-deletable:focus {
123
+ box-shadow: 0 0 0 2px Color.Silver300;
124
+ }
125
+
126
+ .MuiChip-deletableColorPrimary:focus {
127
+ background-color: rgb(51, 144, 255);
128
+ }
129
+
130
+ .MuiChip-deletableColorSecondary:focus {
131
+ background-color: rgb(247, 51, 120);
132
+ }
133
+
134
+ .MuiChip-outlined {
135
+ border: 1px solid rgba(0, 0, 0, 0.23);
136
+ background-color: transparent;
137
+ }
138
+
139
+ .MuiChip-clickable.MuiChip-outlined:hover,
140
+ .MuiChip-clickable.MuiChip-outlined:focus,
141
+ .MuiChip-deletable.MuiChip-outlined:focus {
142
+ background-color: rgba(25, 35, 52, 0.04);
143
+ }
144
+
145
+ .MuiChip-outlined .MuiChip-avatar {
146
+ margin-left: 4px;
147
+ }
148
+
149
+ .MuiChip-outlined .MuiChip-avatarSmall {
150
+ margin-left: 2px;
151
+ }
152
+
153
+ .MuiChip-outlined .MuiChip-icon {
154
+ margin-left: 4px;
155
+ }
156
+
157
+ .MuiChip-outlined .MuiChip-iconSmall {
158
+ margin-left: 2px;
159
+ }
160
+
161
+ .MuiChip-outlined .MuiChip-deleteIcon {
162
+ margin-right: 5px;
163
+ }
164
+
165
+ .MuiChip-outlined .MuiChip-deleteIconSmall {
166
+ margin-right: 3px;
167
+ }
168
+
169
+ .MuiChip-outlinedPrimary {
170
+ color: Color.Blue300;
171
+ border: 1px solid Color.Blue300;
172
+ }
173
+
174
+ .MuiChip-clickable.MuiChip-outlinedPrimary:hover,
175
+ .MuiChip-clickable.MuiChip-outlinedPrimary:focus,
176
+ .MuiChip-deletable.MuiChip-outlinedPrimary:focus {
177
+ background-color: rgba(0, 117, 255, 0.04);
178
+ }
179
+
180
+ .MuiChip-outlinedSecondary {
181
+ color: #f50057;
182
+ border: 1px solid #f50057;
183
+ }
184
+
185
+ .MuiChip-clickable.MuiChip-outlinedSecondary:hover,
186
+ .MuiChip-clickable.MuiChip-outlinedSecondary:focus,
187
+ .MuiChip-deletable.MuiChip-outlinedSecondary:focus {
188
+ background-color: rgba(245, 0, 87, 0.04);
189
+ }
190
+
191
+ .MuiChip-icon {
192
+ color: Color.Dark100;
193
+ font-size: 1em;
194
+ margin-left: 5px;
195
+ }
196
+
197
+ .MuiChip-iconSmall {
198
+ margin-left: 8px;
199
+ }
200
+
201
+ @media (min-width: 600px) {
202
+ .MuiChip-iconSmall {
203
+ margin-left: 4px;
204
+ }
205
+ }
206
+
207
+ .MuiChip-iconColorPrimary {
208
+ color: inherit;
209
+ }
210
+
211
+ .MuiChip-iconColorSecondary {
212
+ color: inherit;
213
+ }
214
+
215
+ .MuiChip-label {
216
+ overflow: hidden;
217
+ white-space: nowrap;
218
+ padding-left: 12px;
219
+ padding-right: 12px;
220
+ text-overflow: ellipsis;
221
+ }
222
+
223
+ .MuiChip-labelSmall {
224
+ padding-left: 6px;
225
+ padding-right: 6px;
226
+ }
227
+
228
+ @media (min-width: 600px) {
229
+ .MuiChip-labelSmall {
230
+ padding-left: 4px;
231
+ padding-right: 4px;
232
+ }
233
+ }
234
+
235
+ .MuiChip-deleteIcon {
236
+ color: rgba(25, 35, 52, 0.26);
237
+ cursor: pointer;
238
+ margin: 0 5px 0 -6px;
239
+ display: flex;
240
+ transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
241
+ -webkit-tap-highlight-color: transparent;
242
+ }
243
+
244
+ .MuiChip-deleteIcon:hover {
245
+ color: rgba(25, 35, 52, 0.4);
246
+ }
247
+
248
+ .MuiChip-deleteIcon > svg {
249
+ color: Color.Dark200;
250
+ font-size: 1em;
251
+ border-radius: 50%;
252
+ }
253
+
254
+ .MuiChip-deleteIcon:active > svg,
255
+ .MuiChip-deleteIcon:hover > svg,
256
+ .MuiChip-deleteIcon:focus > svg {
257
+ background-color: Color.Silver400;
258
+ }
259
+
260
+ .MuiChip-deleteIconSmall {
261
+ padding: 4px;
262
+ margin-left: -4px;
263
+ margin-right: 2px;
264
+ }
265
+
266
+ @media (min-width: 600px) {
267
+ .MuiChip-deleteIconSmall {
268
+ margin-right: 0;
269
+ }
270
+ }
271
+
272
+ .MuiChip-deleteIconColorPrimary {
273
+ color: rgba(255, 255, 255, 0.7);
274
+ }
275
+
276
+ .MuiChip-deleteIconColorPrimary:hover,
277
+ .MuiChip-deleteIconColorPrimary:active {
278
+ color: Color.White;
279
+ }
280
+
281
+ .MuiChip-deleteIconColorSecondary {
282
+ color: rgba(255, 255, 255, 0.7);
283
+ }
284
+
285
+ .MuiChip-deleteIconColorSecondary:hover,
286
+ .MuiChip-deleteIconColorSecondary:active {
287
+ color: Color.White;
288
+ }
289
+
290
+ .MuiChip-deleteIconOutlinedColorPrimary {
291
+ color: rgba(0, 117, 255, 0.7);
292
+ }
293
+
294
+ .MuiChip-deleteIconOutlinedColorPrimary:hover,
295
+ .MuiChip-deleteIconOutlinedColorPrimary:active {
296
+ color: Color.Blue300;
297
+ }
298
+
299
+ .MuiChip-deleteIconOutlinedColorSecondary {
300
+ color: rgba(245, 0, 87, 0.7);
301
+ }
302
+
303
+ .MuiChip-deleteIconOutlinedColorSecondary:hover,
304
+ .MuiChip-deleteIconOutlinedColorSecondary:active {
305
+ color: #f50057;
306
+ }
307
+ `);
308
+ });
@@ -0,0 +1,124 @@
1
+ import { forwardRef, ReactNode } from 'react';
2
+ import styled, { css, SimpleInterpolation } from 'styled-components';
3
+ import {
4
+ ResponsiveProp,
5
+ ResponsivePropTuple,
6
+ useResponsiveProp,
7
+ } from '../props/ResponsiveProp';
8
+
9
+ export type ColumnWidth =
10
+ | 'adaptive'
11
+ | 'content'
12
+ | 'fluid'
13
+ | '1/2'
14
+ | '1/3'
15
+ | '2/3'
16
+ | '1/4'
17
+ | '3/4'
18
+ | '1/5'
19
+ | '2/5'
20
+ | '3/5'
21
+ | '4/5';
22
+
23
+ function computeFlexBasis(scale: number): string {
24
+ return `${scale * 100}%`;
25
+ }
26
+
27
+ function flexBasisMixin(width: ColumnWidth): string {
28
+ switch (width) {
29
+ case '1/2':
30
+ return computeFlexBasis(1 / 2);
31
+ case '1/3':
32
+ return computeFlexBasis(1 / 3);
33
+ case '2/3':
34
+ return computeFlexBasis(2 / 3);
35
+ case '1/4':
36
+ return computeFlexBasis(1 / 4);
37
+ case '3/4':
38
+ return computeFlexBasis(3 / 4);
39
+ case '1/5':
40
+ return computeFlexBasis(1 / 5);
41
+ case '2/5':
42
+ return computeFlexBasis(2 / 5);
43
+ case '3/5':
44
+ return computeFlexBasis(3 / 5);
45
+ case '4/5':
46
+ return computeFlexBasis(4 / 5);
47
+ }
48
+
49
+ return 'auto';
50
+ }
51
+
52
+ function columnRootMixin(width: ColumnWidth): readonly SimpleInterpolation[] {
53
+ return css`
54
+ flex-grow: 0;
55
+ flex-basis: ${flexBasisMixin(width)};
56
+ width: ${width === 'fluid' ? '100%' : 'auto'};
57
+ flex-shrink: ${width === 'fluid' || width === 'adaptive' ? 1 : 0};
58
+ `;
59
+ }
60
+
61
+ interface ColumnRootProps {
62
+ columnWidth: ResponsivePropTuple<ColumnWidth>;
63
+ }
64
+
65
+ const ColumnRoot = styled.div<ColumnRootProps>(
66
+ ({ theme, columnWidth }) =>
67
+ css`
68
+ min-width: 0;
69
+
70
+ ${columnRootMixin(columnWidth[0])};
71
+
72
+ ${theme.breakpoints.up('sm')} {
73
+ ${columnRootMixin(columnWidth[1])};
74
+ }
75
+
76
+ ${theme.breakpoints.up('md')} {
77
+ ${columnRootMixin(columnWidth[2])};
78
+ }
79
+
80
+ & > div {
81
+ padding-top: var(--column-space-top);
82
+ padding-left: var(--column-space-left);
83
+ padding-bottom: var(--column-space-bottom);
84
+ }
85
+
86
+ &:last-child > div {
87
+ padding-top: 0;
88
+ padding-bottom: 0;
89
+ }
90
+ `,
91
+ );
92
+
93
+ export interface ColumnProps {
94
+ children?: ReactNode;
95
+ 'aria-label'?: string;
96
+ 'aria-labelledby'?: string;
97
+
98
+ width?: ResponsiveProp<ColumnWidth>;
99
+ }
100
+
101
+ export const Column = forwardRef<HTMLDivElement, ColumnProps>(
102
+ (
103
+ {
104
+ children,
105
+ 'aria-label': ariaLabel,
106
+ 'aria-labelledby': ariaLabelledBy,
107
+ width = 'fluid',
108
+ }: ColumnProps,
109
+ ref,
110
+ ) => {
111
+ const columnWidth = useResponsiveProp(width);
112
+
113
+ return (
114
+ <ColumnRoot
115
+ ref={ref}
116
+ columnWidth={columnWidth}
117
+ aria-label={ariaLabel}
118
+ aria-labelledby={ariaLabelledBy}
119
+ >
120
+ <div>{children}</div>
121
+ </ColumnRoot>
122
+ );
123
+ },
124
+ );