@coveord/plasma-mantine 53.0.0 → 53.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/.turbo/turbo-test.log +33 -33
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts +2 -4
  5. package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
  6. package/dist/cjs/components/inline-confirm/InlineConfirm.js +2 -2
  7. package/dist/cjs/components/inline-confirm/InlineConfirm.js.map +1 -1
  8. package/dist/cjs/components/sticky-footer/StickyFooter.d.ts +8 -1
  9. package/dist/cjs/components/sticky-footer/StickyFooter.d.ts.map +1 -1
  10. package/dist/cjs/components/sticky-footer/StickyFooter.js.map +1 -1
  11. package/dist/cjs/components/sticky-footer/StickyFooter.module.css +9 -0
  12. package/dist/cjs/components/table/Table.module.css +1 -2
  13. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.d.ts.map +1 -1
  14. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.js +2 -1
  15. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
  16. package/dist/cjs/components/table/table-column/TableCollapsibleColumn.js +1 -1
  17. package/dist/cjs/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
  18. package/dist/cjs/components/table/table-header/TableHeader.d.ts.map +1 -1
  19. package/dist/cjs/components/table/table-header/TableHeader.js +0 -2
  20. package/dist/cjs/components/table/table-header/TableHeader.js.map +1 -1
  21. package/dist/cjs/components/table/table-per-page/TablePerPage.d.ts.map +1 -1
  22. package/dist/cjs/components/table/table-per-page/TablePerPage.js +0 -1
  23. package/dist/cjs/components/table/table-per-page/TablePerPage.js.map +1 -1
  24. package/dist/cjs/styles/Alert.module.css +31 -1
  25. package/dist/cjs/styles/Pagination.module.css +27 -0
  26. package/dist/cjs/styles/SegmentedControl.module.css +32 -0
  27. package/dist/cjs/theme/Theme.d.ts.map +1 -1
  28. package/dist/cjs/theme/Theme.js +19 -8
  29. package/dist/cjs/theme/Theme.js.map +1 -1
  30. package/dist/esm/components/inline-confirm/InlineConfirm.d.ts +2 -4
  31. package/dist/esm/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
  32. package/dist/esm/components/inline-confirm/InlineConfirm.js +3 -3
  33. package/dist/esm/components/inline-confirm/InlineConfirm.js.map +1 -1
  34. package/dist/esm/components/sticky-footer/StickyFooter.d.ts +8 -1
  35. package/dist/esm/components/sticky-footer/StickyFooter.d.ts.map +1 -1
  36. package/dist/esm/components/sticky-footer/StickyFooter.js.map +1 -1
  37. package/dist/esm/components/sticky-footer/StickyFooter.module.css +9 -0
  38. package/dist/esm/components/table/Table.module.css +1 -2
  39. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.d.ts.map +1 -1
  40. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.js +1 -1
  41. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
  42. package/dist/esm/components/table/table-column/TableCollapsibleColumn.js +1 -1
  43. package/dist/esm/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
  44. package/dist/esm/components/table/table-header/TableHeader.d.ts.map +1 -1
  45. package/dist/esm/components/table/table-header/TableHeader.js +0 -2
  46. package/dist/esm/components/table/table-header/TableHeader.js.map +1 -1
  47. package/dist/esm/components/table/table-per-page/TablePerPage.d.ts.map +1 -1
  48. package/dist/esm/components/table/table-per-page/TablePerPage.js +0 -1
  49. package/dist/esm/components/table/table-per-page/TablePerPage.js.map +1 -1
  50. package/dist/esm/styles/Alert.module.css +31 -1
  51. package/dist/esm/styles/Pagination.module.css +27 -0
  52. package/dist/esm/styles/SegmentedControl.module.css +32 -0
  53. package/dist/esm/theme/Theme.d.ts.map +1 -1
  54. package/dist/esm/theme/Theme.js +19 -10
  55. package/dist/esm/theme/Theme.js.map +1 -1
  56. package/package.json +5 -5
  57. package/src/components/inline-confirm/InlineConfirm.tsx +4 -6
  58. package/src/components/inline-confirm/__tests__/InlineConfirm.spec.tsx +2 -2
  59. package/src/components/sticky-footer/StickyFooter.module.css +9 -0
  60. package/src/components/sticky-footer/StickyFooter.tsx +8 -1
  61. package/src/components/table/Table.module.css +1 -2
  62. package/src/components/table/layouts/row-layout/RowLayoutHeader.tsx +2 -5
  63. package/src/components/table/table-column/TableCollapsibleColumn.tsx +1 -1
  64. package/src/components/table/table-header/TableHeader.tsx +1 -7
  65. package/src/components/table/table-per-page/TablePerPage.tsx +0 -1
  66. package/src/styles/Alert.module.css +31 -1
  67. package/src/styles/Pagination.module.css +27 -0
  68. package/src/styles/SegmentedControl.module.css +32 -0
  69. package/src/theme/Theme.tsx +22 -4
@@ -1,12 +1,11 @@
1
- import {factory, Factory, StylesApiProps, useProps} from '@mantine/core';
1
+ import {Factory, StylesApiProps, useProps} from '@mantine/core';
2
+ import {MantineComponent} from '@mantine/core/lib/core/factory/factory';
2
3
  import {Children, ReactElement, ReactNode, useState} from 'react';
3
4
  import {InlineConfirmProvider} from './InlineConfirmContext';
4
5
  import {InlineConfirmPrompt} from './InlineConfirmPrompt';
5
6
 
6
7
  import {InlineConfirmTarget} from './InlineConfirmTarget';
7
8
 
8
- export type InlineConfirmStyleNames = 'root';
9
-
10
9
  export interface InlineConfirmProps extends StylesApiProps<InlineConfirmFactory> {
11
10
  /**
12
11
  * The content of the component. Should contain at least one `InlineConfirm.Target` and one `InlineConfirm.Prompt` with matching ids
@@ -17,7 +16,6 @@ export interface InlineConfirmProps extends StylesApiProps<InlineConfirmFactory>
17
16
  export type InlineConfirmFactory = Factory<{
18
17
  props: InlineConfirmProps;
19
18
  ref: never;
20
- stylesNames: InlineConfirmStyleNames;
21
19
  staticComponents: {
22
20
  Prompt: typeof InlineConfirmPrompt;
23
21
  Target: typeof InlineConfirmTarget;
@@ -26,7 +24,7 @@ export type InlineConfirmFactory = Factory<{
26
24
 
27
25
  const defaultProps: Partial<InlineConfirmProps> = {};
28
26
 
29
- export const InlineConfirm = factory<InlineConfirmFactory>((_props) => {
27
+ export const InlineConfirm = ((_props) => {
30
28
  const {children} = useProps('InlineConfirm', defaultProps, _props);
31
29
  const [confirmingId, setConfirmingId] = useState<string | null>(null);
32
30
 
@@ -41,7 +39,7 @@ export const InlineConfirm = factory<InlineConfirmFactory>((_props) => {
41
39
  {prompt ?? children}
42
40
  </InlineConfirmProvider>
43
41
  );
44
- });
42
+ }) as MantineComponent<InlineConfirmFactory>;
45
43
 
46
44
  InlineConfirm.Prompt = InlineConfirmPrompt;
47
45
  InlineConfirm.Target = InlineConfirmTarget;
@@ -1,4 +1,4 @@
1
- import {Button, Menu, MenuItem} from '@mantine/core';
1
+ import {Button, Menu} from '@mantine/core';
2
2
  import {render, screen, userEvent} from '@test-utils';
3
3
 
4
4
  import {InlineConfirm} from '../InlineConfirm';
@@ -36,7 +36,7 @@ describe('InlineConfirm', () => {
36
36
  <button>open menu</button>
37
37
  </Menu.Target>
38
38
  <Menu.Dropdown>
39
- <InlineConfirm.Target component={MenuItem} id="delete" onClick={onClickSpy}>
39
+ <InlineConfirm.Target component={Menu.Item} id="delete" onClick={onClickSpy}>
40
40
  Delete
41
41
  </InlineConfirm.Target>
42
42
  </Menu.Dropdown>
@@ -4,6 +4,15 @@
4
4
  z-index: 10;
5
5
  background-color: white;
6
6
  padding: var(--mantine-spacing-md) var(--mantine-spacing-lg);
7
+
8
+ &[data-variant='modal-footer'] {
9
+ border-top: 1px solid var(--mantine-color-gray-3);
10
+ padding-bottom: 0;
11
+ margin-top: var(--mb-padding);
12
+ margin-bottom: calc(var(--mantine-spacing-md) - var(--mb-padding));
13
+ margin-left: calc(-1 * var(--mb-padding));
14
+ margin-right: calc(-1 * var(--mb-padding));
15
+ }
7
16
  }
8
17
 
9
18
  .border {
@@ -4,7 +4,7 @@ import {ReactNode} from 'react';
4
4
  import classes from './StickyFooter.module.css';
5
5
 
6
6
  export interface StickyFooterProps
7
- extends Omit<GroupProps, 'classNames' | 'styles' | 'vars'>,
7
+ extends Omit<GroupProps, 'classNames' | 'styles' | 'vars' | 'variant'>,
8
8
  StylesApiProps<StickyFooterFactory> {
9
9
  /**
10
10
  * Whether a border is render on top of the footer
@@ -14,6 +14,13 @@ export interface StickyFooterProps
14
14
  * Footer's children, usually buttons
15
15
  */
16
16
  children?: ReactNode;
17
+ /**
18
+ * Use variant 'modal-footer' when rendering the `StickyFooter` inside `Modal`.
19
+ *
20
+ * The 'modal-footer' removes the modal's default padding so that the footer properly hugs the bottom of the modal.
21
+ * It also adds a border on top of the footer.
22
+ */
23
+ variant?: 'default' | 'modal-footer';
17
24
  }
18
25
 
19
26
  export type StickyFooterStylesNames = 'root';
@@ -35,8 +35,7 @@
35
35
  .headerRoot {
36
36
  border-bottom: 1px solid var(--mantine-color-gray-3);
37
37
  background-color: var(--mantine-color-gray-1);
38
- padding-left: var(--mantine-spacing-xl);
39
- padding-right: var(--mantine-spacing-lg);
38
+ padding: var(--mantine-spacing-sm) var(--mantine-spacing-xl);
40
39
  position: relative;
41
40
  }
42
41
 
@@ -26,11 +26,8 @@ const defaultProps: Partial<RowLayoutHeaderProps<unknown>> = {};
26
26
 
27
27
  export const RowLayoutHeader = <T,>(props: RowLayoutHeaderProps<T> & {ref?: ForwardedRef<HTMLTableRowElement>}) => {
28
28
  const ctx = useRowLayout();
29
- const {table, getExpandChildren, loading, className, style, classNames, styles, ...others} = useProps(
30
- 'RowLayoutHeader',
31
- defaultProps as RowLayoutHeaderProps<T>,
32
- props,
33
- );
29
+ const {table, getExpandChildren, loading, doubleClickAction, className, style, classNames, styles, ...others} =
30
+ useProps('RowLayoutHeader', defaultProps as RowLayoutHeaderProps<T>, props);
34
31
  const {multiRowSelectionEnabled, disableRowSelection} = useTable();
35
32
 
36
33
  const headers = table.getHeaderGroups().map((headerGroup) => (
@@ -11,7 +11,7 @@ const sharedProps: ColumnDef<unknown> = {
11
11
  id: 'collapsible',
12
12
  enableSorting: false,
13
13
  header: '',
14
- size: 62,
14
+ size: 84, // 16px padding left + 28px ActionIcon + 40px padding right
15
15
  };
16
16
 
17
17
  /**
@@ -43,13 +43,7 @@ export const TableHeader = factory<TableHeaderFactory>((props, ref) => {
43
43
  const gridStyles = ctx.getStyles('headerGrid', stylesApiProps);
44
44
 
45
45
  return (
46
- <Box
47
- py="sm"
48
- px="lg"
49
- ref={ref}
50
- {...ctx.getStyles('headerRoot', {className, style, ...stylesApiProps})}
51
- {...others}
52
- >
46
+ <Box ref={ref} {...ctx.getStyles('headerRoot', {className, style, ...stylesApiProps})} {...others}>
53
47
  <Grid
54
48
  justify="flex-start"
55
49
  align="center"
@@ -26,7 +26,6 @@ export const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE:
26
26
  value={state.pagination.pageSize.toString() ?? values?.[1].toString()}
27
27
  onChange={updatePerPage}
28
28
  data={values.map((value) => value.toString())}
29
- color="action"
30
29
  size="sm"
31
30
  />
32
31
  </Group>
@@ -1,3 +1,33 @@
1
+ .root {
2
+ padding: var(--mantine-spacing-sm);
3
+ &:not(&[data-variant]) {
4
+ border-color: color-mix(in srgb, var(--alert-color), var(--alert-bg) 85%);
5
+ }
6
+ }
7
+
8
+ .wrapper {
9
+ gap: var(--mantine-spacing-sm);
10
+ }
11
+
1
12
  .title {
2
- font-weight: var(--font-weight-medium);
13
+ font-weight: 500;
14
+ }
15
+
16
+ .icon {
17
+ width: 16px;
18
+ height: 16px;
19
+ margin-right: 0;
20
+ }
21
+
22
+ .message {
23
+ @mixin light {
24
+ color: var(--mantine-color-gray-7);
25
+ &:where([data-variant='filled']) {
26
+ color: var(--alert-color);
27
+ }
28
+ }
29
+
30
+ &:where([data-variant='white']) {
31
+ color: var(--mantine-color-black);
32
+ }
3
33
  }
@@ -0,0 +1,27 @@
1
+ .root {
2
+ --pagination-control-fz: var(--mantine-font-size-sm);
3
+ color: var(--mantine-color-gray-6);
4
+ }
5
+
6
+ .control {
7
+ color: var(--mantine-color-gray-6);
8
+
9
+ @mixin light {
10
+ border-color: var(--mantine-color-gray-3);
11
+ @mixin hover {
12
+ &:where(:not(:disabled, [data-disabled])) {
13
+ background-color: var(--mantine-primary-color-1);
14
+ }
15
+ }
16
+ }
17
+
18
+ &:where([data-active]) {
19
+ @mixin light {
20
+ border-color: var(--pagination-active-bg);
21
+ color: var(--pagination-active-color, var(--mantine-color-white));
22
+ @mixin hover {
23
+ background-color: var(--pagination-active-bg);
24
+ }
25
+ }
26
+ }
27
+ }
@@ -1,3 +1,35 @@
1
1
  .root {
2
2
  background-color: var(--mantine-color-gray-2);
3
3
  }
4
+
5
+ .indicator {
6
+ border-radius: var(--sc-radius, var(--mantine-radius-sm));
7
+ }
8
+
9
+ .label {
10
+ font-weight: 300;
11
+
12
+ @mixin light {
13
+ color: var(--mantine-color-gray-6);
14
+ }
15
+
16
+ &:where([data-disabled]) {
17
+ @mixin light {
18
+ color: var(--mantine-color-gray-5);
19
+ }
20
+ }
21
+
22
+ &:where([data-active]) {
23
+ @mixin light {
24
+ color: var(--sc-label-color, var(--mantine-color-black));
25
+ }
26
+ }
27
+
28
+ &:where(:not([data-disabled], [data-active], [data-read-only])) {
29
+ @mixin hover {
30
+ @mixin light {
31
+ color: var(--mantine-color-black);
32
+ }
33
+ }
34
+ }
35
+ }
@@ -1,4 +1,12 @@
1
- import {CheckSize16Px, CrossSize16Px, FilterSize16Px, InfoSize24Px} from '@coveord/plasma-react-icons';
1
+ import {
2
+ ArrowHeadLeftSize16Px,
3
+ ArrowHeadRightSize16Px,
4
+ CheckSize16Px,
5
+ CrossSize16Px,
6
+ FilterSize16Px,
7
+ InfoSize16Px,
8
+ InfoSize24Px,
9
+ } from '@coveord/plasma-react-icons';
2
10
  import {color} from '@coveord/plasma-tokens';
3
11
  import {
4
12
  ActionIcon,
@@ -23,6 +31,7 @@ import {
23
31
  MultiSelect,
24
32
  NavLink,
25
33
  Notification,
34
+ Pagination,
26
35
  Popover,
27
36
  Radio,
28
37
  ScrollArea,
@@ -53,6 +62,7 @@ import ListClasses from '../styles/List.module.css';
53
62
  import ModalClasses from '../styles/Modal.module.css';
54
63
  import NavLinkClasses from '../styles/NavLink.module.css';
55
64
  import NotificationClasses from '../styles/Notification.module.css';
65
+ import PaginationClasses from '../styles/Pagination.module.css';
56
66
  import RadioClasses from '../styles/Radio.module.css';
57
67
  import ScrollAreaClasses from '../styles/ScrollArea.module.css';
58
68
  import SegmentedControlClasses from '../styles/SegmentedControl.module.css';
@@ -107,10 +117,10 @@ export const plasmaTheme: MantineThemeOverride = createTheme({
107
117
  }),
108
118
  Alert: Alert.extend({
109
119
  defaultProps: {
110
- icon: <InfoSize24Px height={24} />,
120
+ icon: <InfoSize16Px height={16} />,
111
121
  color: 'navy',
112
122
  },
113
- classNames: {title: AlertClasses.title},
123
+ classNames: AlertClasses,
114
124
  }),
115
125
  Anchor: Anchor.extend({
116
126
  defaultProps: {
@@ -213,6 +223,14 @@ export const plasmaTheme: MantineThemeOverride = createTheme({
213
223
  },
214
224
  vars: NotificationVars,
215
225
  }),
226
+ Pagination: Pagination.extend({
227
+ classNames: PaginationClasses,
228
+ vars: () => ({root: {'--pagination-control-fz': 'var(--mantine-font-size-sm)'}}),
229
+ defaultProps: {
230
+ nextIcon: ArrowHeadRightSize16Px,
231
+ previousIcon: ArrowHeadLeftSize16Px,
232
+ },
233
+ }),
216
234
  Popover: Popover.extend({
217
235
  defaultProps: {
218
236
  shadow: 'md',
@@ -226,7 +244,7 @@ export const plasmaTheme: MantineThemeOverride = createTheme({
226
244
  classNames: {viewport: ScrollAreaClasses.viewport},
227
245
  }),
228
246
  SegmentedControl: SegmentedControl.extend({
229
- classNames: {root: SegmentedControlClasses.root},
247
+ classNames: SegmentedControlClasses,
230
248
  }),
231
249
  Select: Select.extend({
232
250
  defaultProps: {withCheckIcon: false, allowDeselect: false},