@coveord/plasma-mantine 52.15.0 → 52.16.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 (80) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/.turbo/turbo-test.log +30 -30
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cjs/components/header/Header.d.ts +8 -21
  5. package/dist/cjs/components/header/Header.d.ts.map +1 -1
  6. package/dist/cjs/components/header/Header.js +36 -65
  7. package/dist/cjs/components/header/Header.js.map +1 -1
  8. package/dist/cjs/components/header/Header.styles.d.ts +14 -0
  9. package/dist/cjs/components/header/Header.styles.d.ts.map +1 -0
  10. package/dist/cjs/components/header/Header.styles.js +30 -0
  11. package/dist/cjs/components/header/Header.styles.js.map +1 -0
  12. package/dist/cjs/components/header/HeaderActions/HeaderActions.d.ts +8 -0
  13. package/dist/cjs/components/header/HeaderActions/HeaderActions.d.ts.map +1 -0
  14. package/dist/cjs/components/header/HeaderActions/HeaderActions.js +41 -0
  15. package/dist/cjs/components/header/HeaderActions/HeaderActions.js.map +1 -0
  16. package/dist/cjs/components/header/HeaderActions/HeaderActions.styles.d.ts +10 -0
  17. package/dist/cjs/components/header/HeaderActions/HeaderActions.styles.d.ts.map +1 -0
  18. package/dist/cjs/components/header/HeaderActions/HeaderActions.styles.js +20 -0
  19. package/dist/cjs/components/header/HeaderActions/HeaderActions.styles.js.map +1 -0
  20. package/dist/cjs/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.d.ts +8 -0
  21. package/dist/cjs/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.d.ts.map +1 -0
  22. package/dist/cjs/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.js +40 -0
  23. package/dist/cjs/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.js.map +1 -0
  24. package/dist/cjs/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.d.ts +11 -0
  25. package/dist/cjs/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.d.ts.map +1 -0
  26. package/dist/cjs/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.js +26 -0
  27. package/dist/cjs/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.js.map +1 -0
  28. package/dist/cjs/components/header/HeaderDocAnchor/HeaderDocAnchor.d.ts +22 -0
  29. package/dist/cjs/components/header/HeaderDocAnchor/HeaderDocAnchor.d.ts.map +1 -0
  30. package/dist/cjs/components/header/HeaderDocAnchor/HeaderDocAnchor.js +55 -0
  31. package/dist/cjs/components/header/HeaderDocAnchor/HeaderDocAnchor.js.map +1 -0
  32. package/dist/cjs/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.d.ts +11 -0
  33. package/dist/cjs/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.d.ts.map +1 -0
  34. package/dist/cjs/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.js +24 -0
  35. package/dist/cjs/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.js.map +1 -0
  36. package/dist/cjs/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +8 -8
  37. package/dist/esm/components/header/Header.d.ts +8 -21
  38. package/dist/esm/components/header/Header.d.ts.map +1 -1
  39. package/dist/esm/components/header/Header.js +30 -59
  40. package/dist/esm/components/header/Header.js.map +1 -1
  41. package/dist/esm/components/header/Header.styles.d.ts +14 -0
  42. package/dist/esm/components/header/Header.styles.d.ts.map +1 -0
  43. package/dist/esm/components/header/Header.styles.js +20 -0
  44. package/dist/esm/components/header/Header.styles.js.map +1 -0
  45. package/dist/esm/components/header/HeaderActions/HeaderActions.d.ts +8 -0
  46. package/dist/esm/components/header/HeaderActions/HeaderActions.d.ts.map +1 -0
  47. package/dist/esm/components/header/HeaderActions/HeaderActions.js +31 -0
  48. package/dist/esm/components/header/HeaderActions/HeaderActions.js.map +1 -0
  49. package/dist/esm/components/header/HeaderActions/HeaderActions.styles.d.ts +10 -0
  50. package/dist/esm/components/header/HeaderActions/HeaderActions.styles.d.ts.map +1 -0
  51. package/dist/esm/components/header/HeaderActions/HeaderActions.styles.js +10 -0
  52. package/dist/esm/components/header/HeaderActions/HeaderActions.styles.js.map +1 -0
  53. package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.d.ts +8 -0
  54. package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.d.ts.map +1 -0
  55. package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.js +30 -0
  56. package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.js.map +1 -0
  57. package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.d.ts +11 -0
  58. package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.d.ts.map +1 -0
  59. package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.js +16 -0
  60. package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.js.map +1 -0
  61. package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.d.ts +22 -0
  62. package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.d.ts.map +1 -0
  63. package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.js +45 -0
  64. package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.js.map +1 -0
  65. package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.d.ts +11 -0
  66. package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.d.ts.map +1 -0
  67. package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.js +14 -0
  68. package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.js.map +1 -0
  69. package/dist/esm/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +8 -8
  70. package/package.json +5 -5
  71. package/src/components/header/Header.styles.ts +20 -0
  72. package/src/components/header/Header.tsx +35 -52
  73. package/src/components/header/HeaderActions/HeaderActions.styles.ts +7 -0
  74. package/src/components/header/HeaderActions/HeaderActions.tsx +26 -0
  75. package/src/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.ts +8 -0
  76. package/src/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.tsx +31 -0
  77. package/src/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.ts +11 -0
  78. package/src/components/header/HeaderDocAnchor/HeaderDocAnchor.tsx +55 -0
  79. package/src/components/header/__tests__/Header.spec.tsx +1 -1
  80. package/src/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +8 -8
@@ -0,0 +1,11 @@
1
+ export interface HeaderDocAnchorStylesParams {
2
+ }
3
+ export declare const useStyles: (params: HeaderDocAnchorStylesParams, options?: import("@mantine/core").UseStylesOptions<string>) => {
4
+ classes: {
5
+ tooltip: string;
6
+ anchor: string;
7
+ };
8
+ cx: (...args: any) => string;
9
+ theme: import("@mantine/core").MantineTheme;
10
+ };
11
+ //# sourceMappingURL=HeaderDocAnchor.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderDocAnchor.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,2BAA2B;CAAG;AAE/C,eAAO,MAAM,SAAS;;;;;;;CAMnB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { _ as _object_destructuring_empty } from "@swc/helpers/_/_object_destructuring_empty";
2
+ import { createStyles } from "@mantine/core";
3
+ export var useStyles = createStyles(function(theme, param) {
4
+ var ref = _object_destructuring_empty(param);
5
+ return {
6
+ tooltip: {},
7
+ anchor: {
8
+ marginLeft: theme.spacing.xs,
9
+ verticalAlign: "middle"
10
+ }
11
+ };
12
+ });
13
+
14
+ //# sourceMappingURL=HeaderDocAnchor.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.ts"],"sourcesContent":["import {createStyles} from '@mantine/core';\n\nexport interface HeaderDocAnchorStylesParams {}\n\nexport const useStyles = createStyles((theme, {}: HeaderDocAnchorStylesParams) => ({\n tooltip: {},\n anchor: {\n marginLeft: theme.spacing.xs,\n verticalAlign: 'middle',\n },\n}));\n"],"names":["createStyles","useStyles","theme","tooltip","anchor","marginLeft","spacing","xs","verticalAlign"],"mappings":";AAAA,SAAQA,YAAY,QAAO,gBAAgB;AAI3C,OAAO,IAAMC,YAAYD,aAAa,SAACE;QAAO;WAAqC;QAC/EC,SAAS,CAAC;QACVC,QAAQ;YACJC,YAAYH,MAAMI,OAAO,CAACC,EAAE;YAC5BC,eAAe;QACnB;IACJ;GAAI"}
@@ -3,7 +3,7 @@
3
3
  exports[`Header > renders the specified breadcrumbs above the title 1`] = `
4
4
  <div>
5
5
  <div
6
- class="mantine-Group-root mantine-1arn2xu"
6
+ class="mantine-Group-root mantine-PlasmaHeader-root mantine-15aa8um"
7
7
  >
8
8
  <div
9
9
  class="mantine-Stack-root mantine-1178y6y"
@@ -12,38 +12,38 @@ exports[`Header > renders the specified breadcrumbs above the title 1`] = `
12
12
  class="mantine-Breadcrumbs-root mantine-1ujbd2v"
13
13
  >
14
14
  <a
15
- class="mantine-Text-root mantine-Anchor-root mantine-Breadcrumbs-breadcrumb mantine-1yycs9g"
15
+ class="mantine-Text-root mantine-Anchor-root mantine-PlasmaHeaderBreadcrumbs-breadcrumb mantine-Breadcrumbs-breadcrumb mantine-1p2lvqc"
16
16
  >
17
17
  One
18
18
  </a>
19
19
  <div
20
- class="mantine-Text-root mantine-Breadcrumbs-separator mantine-c5usyo"
20
+ class="mantine-Text-root mantine-PlasmaHeaderBreadcrumbs-separator mantine-Breadcrumbs-separator mantine-1y8084r"
21
21
  >
22
22
  /
23
23
  </div>
24
24
  <a
25
- class="mantine-Text-root mantine-Anchor-root mantine-Breadcrumbs-breadcrumb mantine-1yycs9g"
25
+ class="mantine-Text-root mantine-Anchor-root mantine-PlasmaHeaderBreadcrumbs-breadcrumb mantine-Breadcrumbs-breadcrumb mantine-1p2lvqc"
26
26
  >
27
27
  Two
28
28
  </a>
29
29
  <div
30
- class="mantine-Text-root mantine-Breadcrumbs-separator mantine-c5usyo"
30
+ class="mantine-Text-root mantine-PlasmaHeaderBreadcrumbs-separator mantine-Breadcrumbs-separator mantine-1y8084r"
31
31
  >
32
32
  /
33
33
  </div>
34
34
  <a
35
- class="mantine-Text-root mantine-Anchor-root mantine-Breadcrumbs-breadcrumb mantine-1yycs9g"
35
+ class="mantine-Text-root mantine-Anchor-root mantine-PlasmaHeaderBreadcrumbs-breadcrumb mantine-Breadcrumbs-breadcrumb mantine-1p2lvqc"
36
36
  >
37
37
  Three
38
38
  </a>
39
39
  </div>
40
40
  <h1
41
- class="mantine-Text-root mantine-Title-root mantine-m67b81"
41
+ class="mantine-Text-root mantine-Title-root mantine-PlasmaHeader-title mantine-1o7jx33"
42
42
  >
43
43
  Title
44
44
  </h1>
45
45
  <div
46
- class="mantine-Text-root mantine-1w25z6f"
46
+ class="mantine-Text-root mantine-PlasmaHeader-description mantine-52dv7d"
47
47
  />
48
48
  </div>
49
49
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coveord/plasma-mantine",
3
- "version": "52.15.0",
3
+ "version": "52.16.0",
4
4
  "description": "A Plasma flavoured Mantine theme",
5
5
  "keywords": [
6
6
  "plasma",
@@ -41,8 +41,8 @@
41
41
  "lodash.debounce": "4.0.8",
42
42
  "lodash.defaultsdeep": "4.6.1",
43
43
  "monaco-editor": "0.41.0",
44
- "@coveord/plasma-react-icons": "52.15.0",
45
- "@coveord/plasma-tokens": "52.15.0"
44
+ "@coveord/plasma-react-icons": "52.16.0",
45
+ "@coveord/plasma-tokens": "52.16.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@emotion/react": "11.11.1",
@@ -75,14 +75,14 @@
75
75
  "jest-environment-jsdom": "29.6.3",
76
76
  "jest-junit": "16.0.0",
77
77
  "npm-run-all": "4.1.5",
78
- "publint": "0.2.1",
78
+ "publint": "0.2.2",
79
79
  "react": "18.2.0",
80
80
  "react-dom": "18.2.0",
81
81
  "rimraf": "5.0.1",
82
82
  "tslib": "2.6.2",
83
83
  "typescript": "5.1.6",
84
84
  "vitest": "0.34.2",
85
- "eslint-config-plasma": "52.15.0"
85
+ "eslint-config-plasma": "52.16.0"
86
86
  },
87
87
  "peerDependencies": {
88
88
  "@emotion/react": "^11.10.0",
@@ -0,0 +1,20 @@
1
+ import {createStyles} from '@mantine/core';
2
+
3
+ export interface HeaderStylesParams {
4
+ variant?: 'page' | 'modal';
5
+ }
6
+
7
+ export const useStyles = createStyles((theme, {variant}: HeaderStylesParams) => ({
8
+ root: {
9
+ padding: variant === 'page' ? theme.spacing.xl : undefined,
10
+ paddingBottom: variant === 'page' ? theme.spacing.lg : undefined,
11
+ },
12
+ title: {
13
+ wordBreak: 'break-word',
14
+ color: variant === 'page' ? theme.colors.gray[5] : undefined,
15
+ },
16
+ description: {
17
+ color: theme.colors.gray[6],
18
+ },
19
+ divider: {},
20
+ }));
@@ -1,8 +1,24 @@
1
- import {QuestionSize16Px} from '@coveord/plasma-react-icons';
2
- import {Anchor, Breadcrumbs, DefaultProps, Divider, Group, Stack, Text, Title, Tooltip} from '@mantine/core';
3
- import {Children, FunctionComponent, ReactElement, ReactNode} from 'react';
1
+ import {
2
+ DefaultProps,
3
+ Divider,
4
+ Group,
5
+ GroupProps,
6
+ Selectors,
7
+ Stack,
8
+ Text,
9
+ Title,
10
+ useComponentDefaultProps,
11
+ } from '@mantine/core';
12
+ import {Children, ReactElement, ReactNode} from 'react';
4
13
 
5
- export interface HeaderProps extends DefaultProps {
14
+ import {HeaderStylesParams, useStyles} from './Header.styles';
15
+ import {HeaderActions} from './HeaderActions/HeaderActions';
16
+ import {HeaderBreadcrumbs} from './HeaderBreadcrumbs/HeaderBreadcrumbs';
17
+ import {HeaderDocAnchor} from './HeaderDocAnchor/HeaderDocAnchor';
18
+
19
+ type HeaderStylesNames = Selectors<typeof useStyles>;
20
+
21
+ export interface HeaderProps extends Omit<GroupProps, 'styles'>, DefaultProps<HeaderStylesNames, HeaderStylesParams> {
6
22
  /**
7
23
  * The description text displayed inside the header underneath the title
8
24
  */
@@ -30,7 +46,17 @@ interface HeaderType {
30
46
  DocAnchor: typeof HeaderDocAnchor;
31
47
  }
32
48
 
33
- export const Header: HeaderType = ({description, borderBottom, children, variant = 'page', ...others}) => {
49
+ const defaultProps: Partial<HeaderProps> = {
50
+ variant: 'page',
51
+ position: 'apart',
52
+ noWrap: true,
53
+ };
54
+
55
+ export const Header: HeaderType = (props: HeaderProps) => {
56
+ const {classNames, styles, unstyled, className, description, borderBottom, variant, children, ...others} =
57
+ useComponentDefaultProps('PlasmaHeader', defaultProps, props);
58
+ const {classes, cx} = useStyles({variant}, {name: 'PlasmaHeader', classNames, styles, unstyled});
59
+
34
60
  const convertedChildren = Children.toArray(children) as ReactElement[];
35
61
  const breadcrumbs = convertedChildren.find((child) => child.type === HeaderBreadcrumbs);
36
62
  const actions = convertedChildren.find((child) => child.type === HeaderActions);
@@ -40,67 +66,24 @@ export const Header: HeaderType = ({description, borderBottom, children, variant
40
66
  );
41
67
  return (
42
68
  <>
43
- <Group
44
- position="apart"
45
- p={variant === 'page' ? 'xl' : undefined}
46
- pb={variant === 'page' ? 'lg' : undefined}
47
- noWrap
48
- {...others}
49
- >
69
+ <Group className={cx(className, classes.root)} {...others}>
50
70
  <Stack spacing={0}>
51
71
  {breadcrumbs}
52
- <Title
53
- order={variant === 'page' ? 1 : 3}
54
- color={variant === 'page' ? 'gray.5' : undefined}
55
- sx={{wordBreak: 'break-word'}}
56
- >
72
+ <Title order={variant === 'page' ? 1 : 3} className={classes.title}>
57
73
  {otherChildren}
58
74
  {docAnchor}
59
75
  </Title>
60
- <Text size={variant === 'page' ? 'md' : 'sm'} color="gray.6">
76
+ <Text className={classes.description} size={variant === 'page' ? 'md' : 'sm'}>
61
77
  {description}
62
78
  </Text>
63
79
  </Stack>
64
80
  {actions}
65
81
  </Group>
66
- {borderBottom ? <Divider size="xs" /> : null}
82
+ {borderBottom ? <Divider className={classes.divider} size="xs" /> : null}
67
83
  </>
68
84
  );
69
85
  };
70
86
 
71
- const HeaderBreadcrumbs: FunctionComponent<{children: ReactNode}> = ({children}) => (
72
- <Breadcrumbs
73
- styles={(theme) => ({
74
- breadcrumb: {fontSize: theme.fontSizes.sm, fontWeight: 300},
75
- separator: {color: theme.colors.gray[5]},
76
- })}
77
- >
78
- {children}
79
- </Breadcrumbs>
80
- );
81
-
82
- const HeaderActions: FunctionComponent<{children: ReactNode}> = ({children}) => <Group spacing="sm">{children}</Group>;
83
-
84
- export interface HeaderDocAnchorProps {
85
- /**
86
- * A href pointing to documentation related to the current panel.
87
- * When provided, an info icon is rendered next to the title as link to this documentation
88
- */
89
- href: string;
90
- /**
91
- * The tooltip text shown when hovering over the doc link icon
92
- */
93
- label?: string;
94
- }
95
-
96
- const HeaderDocAnchor: FunctionComponent<HeaderDocAnchorProps> = ({href: docLink, label: docLinkTooltipLabel}) => (
97
- <Tooltip label={docLinkTooltipLabel} disabled={!docLinkTooltipLabel} position="right">
98
- <Anchor inline href={docLink} target="_blank" ml="xs" style={{verticalAlign: 'middle'}}>
99
- <QuestionSize16Px height={16} />
100
- </Anchor>
101
- </Tooltip>
102
- );
103
-
104
87
  Header.Breadcrumbs = HeaderBreadcrumbs;
105
88
  Header.Actions = HeaderActions;
106
89
  Header.DocAnchor = HeaderDocAnchor;
@@ -0,0 +1,7 @@
1
+ import {createStyles} from '@mantine/core';
2
+
3
+ export interface HeaderActionsStylesParams {}
4
+
5
+ export const useStyles = createStyles((theme, {}: HeaderActionsStylesParams) => ({
6
+ root: {},
7
+ }));
@@ -0,0 +1,26 @@
1
+ import {DefaultProps, Group, GroupProps, Selectors, useComponentDefaultProps} from '@mantine/core';
2
+ import {FunctionComponent} from 'react';
3
+ import {HeaderActionsStylesParams, useStyles} from './HeaderActions.styles';
4
+
5
+ type HeaderActionsStylesNames = Selectors<typeof useStyles>;
6
+
7
+ export type HeaderActionsProps = GroupProps & DefaultProps<HeaderActionsStylesNames, HeaderActionsStylesParams>;
8
+
9
+ const defaultProps: Partial<HeaderActionsProps> = {
10
+ spacing: 'sm',
11
+ };
12
+
13
+ export const HeaderActions: FunctionComponent<HeaderActionsProps> = (props: HeaderActionsProps) => {
14
+ const {classNames, styles, unstyled, className, children, ...others} = useComponentDefaultProps(
15
+ 'PlasmaHeaderActions',
16
+ defaultProps,
17
+ props,
18
+ );
19
+ const {classes, cx} = useStyles({}, {name: 'PlasmaHeaderActions', classNames, styles, unstyled});
20
+
21
+ return (
22
+ <Group className={cx(className, classes.root)} {...others}>
23
+ {children}
24
+ </Group>
25
+ );
26
+ };
@@ -0,0 +1,8 @@
1
+ import {createStyles} from '@mantine/core';
2
+
3
+ export interface HeaderBreadcrumbsStylesParams {}
4
+
5
+ export const useStyles = createStyles((theme, {}: HeaderBreadcrumbsStylesParams) => ({
6
+ breadcrumb: {fontSize: theme.fontSizes.sm, fontWeight: 300},
7
+ separator: {color: theme.colors.gray[5]},
8
+ }));
@@ -0,0 +1,31 @@
1
+ import {Breadcrumbs, BreadcrumbsProps, DefaultProps, Selectors} from '@mantine/core';
2
+ import {FunctionComponent} from 'react';
3
+ import {HeaderBreadcrumbsStylesParams, useStyles} from './HeaderBreadcrumbs.styles';
4
+
5
+ type HeaderBreadcrumbsStylesNames = Selectors<typeof useStyles>;
6
+
7
+ export type HeaderBreadcrumbsProps = BreadcrumbsProps &
8
+ DefaultProps<HeaderBreadcrumbsStylesNames, HeaderBreadcrumbsStylesParams>;
9
+
10
+ export const HeaderBreadcrumbs: FunctionComponent<HeaderBreadcrumbsProps> = ({
11
+ classNames,
12
+ styles,
13
+ unstyled,
14
+ children,
15
+ ...others
16
+ }) => {
17
+ const {classes} = useStyles(
18
+ {},
19
+ {
20
+ name: 'PlasmaHeaderBreadcrumbs',
21
+ classNames,
22
+ styles,
23
+ unstyled,
24
+ },
25
+ );
26
+ return (
27
+ <Breadcrumbs classNames={{breadcrumb: classes.breadcrumb, separator: classes.separator}} {...others}>
28
+ {children}
29
+ </Breadcrumbs>
30
+ );
31
+ };
@@ -0,0 +1,11 @@
1
+ import {createStyles} from '@mantine/core';
2
+
3
+ export interface HeaderDocAnchorStylesParams {}
4
+
5
+ export const useStyles = createStyles((theme, {}: HeaderDocAnchorStylesParams) => ({
6
+ tooltip: {},
7
+ anchor: {
8
+ marginLeft: theme.spacing.xs,
9
+ verticalAlign: 'middle',
10
+ },
11
+ }));
@@ -0,0 +1,55 @@
1
+ import {QuestionSize16Px} from '@coveord/plasma-react-icons';
2
+ import {Anchor, DefaultProps, Selectors, Tooltip, TooltipProps, useComponentDefaultProps} from '@mantine/core';
3
+ import {FunctionComponent, ReactNode} from 'react';
4
+ import {HeaderDocAnchorStylesParams, useStyles} from './HeaderDocAnchor.styles';
5
+
6
+ type HeaderDocAnchorStylesNames = Selectors<typeof useStyles>;
7
+
8
+ const defaultProps: Partial<HeaderDocAnchorProps> = {
9
+ position: 'right',
10
+ children: <QuestionSize16Px height={16} />,
11
+ };
12
+
13
+ export interface HeaderDocAnchorProps
14
+ extends Pick<TooltipProps, 'position'>,
15
+ DefaultProps<HeaderDocAnchorStylesNames, HeaderDocAnchorStylesParams> {
16
+ /**
17
+ * A href pointing to documentation related to the current panel.
18
+ * When provided, an info icon is rendered next to the title as link to this documentation
19
+ */
20
+ href: string;
21
+ /**
22
+ * The tooltip text shown when hovering over the doc link icon
23
+ */
24
+ label?: string;
25
+ /**
26
+ * React component to add the tooltip and anchor on
27
+ */
28
+ children?: ReactNode;
29
+ }
30
+
31
+ export const HeaderDocAnchor: FunctionComponent<HeaderDocAnchorProps> = (props: HeaderDocAnchorProps) => {
32
+ const {
33
+ classNames,
34
+ styles,
35
+ unstyled,
36
+ className,
37
+ children,
38
+ href: docLink,
39
+ label: docLinkTooltipLabel,
40
+ ...others
41
+ } = useComponentDefaultProps('PlasmaHeaderActions', defaultProps, props);
42
+ const {classes, cx} = useStyles({}, {name: 'PlasmaHeaderActions', classNames, styles, unstyled});
43
+ return (
44
+ <Tooltip
45
+ className={cx(className, classes.tooltip)}
46
+ label={docLinkTooltipLabel}
47
+ disabled={!docLinkTooltipLabel}
48
+ {...others}
49
+ >
50
+ <Anchor className={classes.anchor} inline href={docLink} target="_blank">
51
+ {children}
52
+ </Anchor>
53
+ </Tooltip>
54
+ );
55
+ };
@@ -10,7 +10,7 @@ describe('Header', () => {
10
10
  const header = screen.getByRole('heading');
11
11
  expect(header).toMatchInlineSnapshot(`
12
12
  <h1
13
- class="mantine-Text-root mantine-Title-root mantine-m67b81"
13
+ class="mantine-Text-root mantine-Title-root mantine-PlasmaHeader-title mantine-1o7jx33"
14
14
  >
15
15
  child
16
16
  </h1>
@@ -3,7 +3,7 @@
3
3
  exports[`Header > renders the specified breadcrumbs above the title 1`] = `
4
4
  <div>
5
5
  <div
6
- class="mantine-Group-root mantine-1arn2xu"
6
+ class="mantine-Group-root mantine-PlasmaHeader-root mantine-15aa8um"
7
7
  >
8
8
  <div
9
9
  class="mantine-Stack-root mantine-1178y6y"
@@ -12,38 +12,38 @@ exports[`Header > renders the specified breadcrumbs above the title 1`] = `
12
12
  class="mantine-Breadcrumbs-root mantine-1ujbd2v"
13
13
  >
14
14
  <a
15
- class="mantine-Text-root mantine-Anchor-root mantine-Breadcrumbs-breadcrumb mantine-1yycs9g"
15
+ class="mantine-Text-root mantine-Anchor-root mantine-PlasmaHeaderBreadcrumbs-breadcrumb mantine-Breadcrumbs-breadcrumb mantine-1p2lvqc"
16
16
  >
17
17
  One
18
18
  </a>
19
19
  <div
20
- class="mantine-Text-root mantine-Breadcrumbs-separator mantine-c5usyo"
20
+ class="mantine-Text-root mantine-PlasmaHeaderBreadcrumbs-separator mantine-Breadcrumbs-separator mantine-1y8084r"
21
21
  >
22
22
  /
23
23
  </div>
24
24
  <a
25
- class="mantine-Text-root mantine-Anchor-root mantine-Breadcrumbs-breadcrumb mantine-1yycs9g"
25
+ class="mantine-Text-root mantine-Anchor-root mantine-PlasmaHeaderBreadcrumbs-breadcrumb mantine-Breadcrumbs-breadcrumb mantine-1p2lvqc"
26
26
  >
27
27
  Two
28
28
  </a>
29
29
  <div
30
- class="mantine-Text-root mantine-Breadcrumbs-separator mantine-c5usyo"
30
+ class="mantine-Text-root mantine-PlasmaHeaderBreadcrumbs-separator mantine-Breadcrumbs-separator mantine-1y8084r"
31
31
  >
32
32
  /
33
33
  </div>
34
34
  <a
35
- class="mantine-Text-root mantine-Anchor-root mantine-Breadcrumbs-breadcrumb mantine-1yycs9g"
35
+ class="mantine-Text-root mantine-Anchor-root mantine-PlasmaHeaderBreadcrumbs-breadcrumb mantine-Breadcrumbs-breadcrumb mantine-1p2lvqc"
36
36
  >
37
37
  Three
38
38
  </a>
39
39
  </div>
40
40
  <h1
41
- class="mantine-Text-root mantine-Title-root mantine-m67b81"
41
+ class="mantine-Text-root mantine-Title-root mantine-PlasmaHeader-title mantine-1o7jx33"
42
42
  >
43
43
  Title
44
44
  </h1>
45
45
  <div
46
- class="mantine-Text-root mantine-1w25z6f"
46
+ class="mantine-Text-root mantine-PlasmaHeader-description mantine-52dv7d"
47
47
  />
48
48
  </div>
49
49
  </div>