@atlaskit/page-layout 3.3.3 → 3.4.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 (95) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/README.md +6 -3
  3. package/__perf__/examples.tsx +45 -69
  4. package/__perf__/utils/perf-example.tsx +53 -55
  5. package/__perf__/utils/product-integration/atlassian-navigation.tsx +80 -77
  6. package/__perf__/utils/product-integration/create.tsx +12 -15
  7. package/__perf__/utils/product-integration/help-popup.tsx +38 -38
  8. package/__perf__/utils/product-integration/notifications-popup.tsx +76 -74
  9. package/__perf__/utils/product-integration/profile-popup.tsx +53 -53
  10. package/__perf__/utils/product-integration/sample-footer.tsx +30 -26
  11. package/__perf__/utils/product-integration/sample-header.tsx +15 -11
  12. package/__perf__/utils/product-integration/side-navigation.tsx +92 -101
  13. package/dist/cjs/components/resize-control/grab-area.js +8 -1
  14. package/dist/cjs/components/resize-control/index.js +9 -3
  15. package/dist/cjs/components/resize-control/resize-button.js +6 -0
  16. package/dist/cjs/components/resize-control/shadow.js +9 -5
  17. package/dist/cjs/components/skip-links/skip-link-components.js +4 -2
  18. package/dist/cjs/components/skip-links/use-custom-skip-link.js +3 -0
  19. package/dist/cjs/components/slots/banner-slot.js +12 -5
  20. package/dist/cjs/components/slots/content.js +6 -0
  21. package/dist/cjs/components/slots/internal/left-sidebar-inner.js +18 -1
  22. package/dist/cjs/components/slots/internal/left-sidebar-outer.js +16 -1
  23. package/dist/cjs/components/slots/internal/resizable-children-wrapper.js +7 -1
  24. package/dist/cjs/components/slots/internal/slot-focus-ring.js +9 -2
  25. package/dist/cjs/components/slots/left-panel.js +10 -3
  26. package/dist/cjs/components/slots/left-sidebar-without-resize.js +5 -0
  27. package/dist/cjs/components/slots/left-sidebar.js +4 -1
  28. package/dist/cjs/components/slots/main.js +8 -2
  29. package/dist/cjs/components/slots/page-layout.js +10 -2
  30. package/dist/cjs/components/slots/right-panel.js +10 -3
  31. package/dist/cjs/components/slots/right-sidebar.js +14 -9
  32. package/dist/cjs/components/slots/slot-dimensions.js +5 -1
  33. package/dist/cjs/components/slots/top-navigation.js +13 -6
  34. package/dist/es2019/components/resize-control/grab-area.js +8 -1
  35. package/dist/es2019/components/resize-control/index.js +10 -2
  36. package/dist/es2019/components/resize-control/resize-button.js +7 -1
  37. package/dist/es2019/components/resize-control/shadow.js +8 -5
  38. package/dist/es2019/components/skip-links/skip-link-components.js +5 -1
  39. package/dist/es2019/components/skip-links/use-custom-skip-link.js +3 -0
  40. package/dist/es2019/components/slots/banner-slot.js +12 -5
  41. package/dist/es2019/components/slots/content.js +5 -0
  42. package/dist/es2019/components/slots/internal/left-sidebar-inner.js +19 -3
  43. package/dist/es2019/components/slots/internal/left-sidebar-outer.js +18 -3
  44. package/dist/es2019/components/slots/internal/resizable-children-wrapper.js +6 -1
  45. package/dist/es2019/components/slots/internal/slot-focus-ring.js +8 -2
  46. package/dist/es2019/components/slots/left-panel.js +10 -3
  47. package/dist/es2019/components/slots/left-sidebar-without-resize.js +5 -0
  48. package/dist/es2019/components/slots/left-sidebar.js +6 -0
  49. package/dist/es2019/components/slots/main.js +8 -2
  50. package/dist/es2019/components/slots/page-layout.js +15 -1
  51. package/dist/es2019/components/slots/right-panel.js +10 -3
  52. package/dist/es2019/components/slots/right-sidebar.js +14 -9
  53. package/dist/es2019/components/slots/slot-dimensions.js +4 -1
  54. package/dist/es2019/components/slots/top-navigation.js +13 -6
  55. package/dist/esm/components/resize-control/grab-area.js +8 -1
  56. package/dist/esm/components/resize-control/index.js +10 -2
  57. package/dist/esm/components/resize-control/resize-button.js +6 -0
  58. package/dist/esm/components/resize-control/shadow.js +8 -5
  59. package/dist/esm/components/skip-links/skip-link-components.js +5 -1
  60. package/dist/esm/components/skip-links/use-custom-skip-link.js +3 -0
  61. package/dist/esm/components/slots/banner-slot.js +12 -5
  62. package/dist/esm/components/slots/content.js +5 -0
  63. package/dist/esm/components/slots/internal/left-sidebar-inner.js +17 -1
  64. package/dist/esm/components/slots/internal/left-sidebar-outer.js +16 -1
  65. package/dist/esm/components/slots/internal/resizable-children-wrapper.js +6 -1
  66. package/dist/esm/components/slots/internal/slot-focus-ring.js +8 -2
  67. package/dist/esm/components/slots/left-panel.js +10 -3
  68. package/dist/esm/components/slots/left-sidebar-without-resize.js +5 -0
  69. package/dist/esm/components/slots/left-sidebar.js +6 -0
  70. package/dist/esm/components/slots/main.js +8 -2
  71. package/dist/esm/components/slots/page-layout.js +10 -2
  72. package/dist/esm/components/slots/right-panel.js +10 -3
  73. package/dist/esm/components/slots/right-sidebar.js +14 -9
  74. package/dist/esm/components/slots/slot-dimensions.js +5 -1
  75. package/dist/esm/components/slots/top-navigation.js +13 -6
  76. package/dist/types/components/resize-control/grab-area.d.ts +3 -0
  77. package/dist/types/components/resize-control/shadow.d.ts +3 -0
  78. package/dist/types/components/skip-links/skip-link-components.d.ts +3 -0
  79. package/dist/types/components/slots/content.d.ts +3 -0
  80. package/dist/types/components/slots/internal/left-sidebar-inner.d.ts +3 -0
  81. package/dist/types/components/slots/internal/left-sidebar-outer.d.ts +3 -0
  82. package/dist/types/components/slots/internal/resizable-children-wrapper.d.ts +3 -0
  83. package/dist/types/components/slots/internal/slot-focus-ring.d.ts +3 -0
  84. package/dist/types/index.d.ts +1 -1
  85. package/dist/types-ts4.5/components/resize-control/grab-area.d.ts +3 -0
  86. package/dist/types-ts4.5/components/resize-control/shadow.d.ts +3 -0
  87. package/dist/types-ts4.5/components/skip-links/skip-link-components.d.ts +3 -0
  88. package/dist/types-ts4.5/components/slots/content.d.ts +3 -0
  89. package/dist/types-ts4.5/components/slots/internal/left-sidebar-inner.d.ts +3 -0
  90. package/dist/types-ts4.5/components/slots/internal/left-sidebar-outer.d.ts +3 -0
  91. package/dist/types-ts4.5/components/slots/internal/resizable-children-wrapper.d.ts +3 -0
  92. package/dist/types-ts4.5/components/slots/internal/slot-focus-ring.d.ts +3 -0
  93. package/dist/types-ts4.5/index.d.ts +1 -1
  94. package/package.json +123 -123
  95. package/report.api.md +83 -84
@@ -1,6 +1,10 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ */
1
4
  /** @jsx jsx */
2
5
  import { useState } from 'react';
3
6
 
7
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
4
8
  import { css, jsx } from '@emotion/react';
5
9
 
6
10
  import { Notifications } from '@atlaskit/atlassian-navigation';
@@ -10,96 +14,94 @@ import { NotificationLogClient } from '@atlaskit/notification-log-client';
10
14
  import Popup from '@atlaskit/popup';
11
15
 
12
16
  const wrapperStyles = css({
13
- display: 'flex',
14
- width: 540,
15
- height: 'calc(100vh - 200px)',
16
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
17
- paddingBlockStart: 18,
18
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
19
- paddingInlineStart: 18,
17
+ display: 'flex',
18
+ width: 540,
19
+ height: 'calc(100vh - 200px)',
20
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
21
+ paddingBlockStart: 18,
22
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
23
+ paddingInlineStart: 18,
20
24
  });
21
25
 
22
26
  const NotificationsContent = () => (
23
- <div css={wrapperStyles}>
24
- <NotificationsIframe
25
- // _url="https://start.stg.atlassian.com/notificationsDrawer/iframe.html?scope=user&product=uchi&locale=en"
26
- _url="https://start.stg.atlassian.com/notificationsDrawer/iframe.html"
27
- locale="en"
28
- product="jira"
29
- testId="jira-notifications"
30
- title="Notifications"
31
- />
32
- </div>
27
+ <div css={wrapperStyles}>
28
+ <NotificationsIframe
29
+ // _url="https://start.stg.atlassian.com/notificationsDrawer/iframe.html?scope=user&product=uchi&locale=en"
30
+ _url="https://start.stg.atlassian.com/notificationsDrawer/iframe.html"
31
+ locale="en"
32
+ product="jira"
33
+ testId="jira-notifications"
34
+ title="Notifications"
35
+ />
36
+ </div>
33
37
  );
34
38
 
35
39
  class MockNotificationLogClient extends NotificationLogClient {
36
- mockedCount = 0;
37
- constructor(mockedCount: number) {
38
- super('', '');
39
- this.mockedCount = mockedCount;
40
- }
40
+ mockedCount = 0;
41
+ constructor(mockedCount: number) {
42
+ super('', '');
43
+ this.mockedCount = mockedCount;
44
+ }
41
45
 
42
- public async countUnseenNotifications() {
43
- return Promise.resolve({ count: this.mockedCount });
44
- }
46
+ public async countUnseenNotifications() {
47
+ return Promise.resolve({ count: this.mockedCount });
48
+ }
45
49
  }
46
50
 
47
51
  const client = new MockNotificationLogClient(5);
48
52
  const emptyClient = new MockNotificationLogClient(0);
49
53
 
50
54
  export const NotificationsPopup = () => {
51
- const [isOpen, setIsOpen] = useState(false);
52
- const [interacted, setInteracted] = useState(false);
53
- const [buttonLabel, setButtonLabel] = useState<number | undefined>();
55
+ const [isOpen, setIsOpen] = useState(false);
56
+ const [interacted, setInteracted] = useState(false);
57
+ const [buttonLabel, setButtonLabel] = useState<number | undefined>();
54
58
 
55
- const NotificationsBadge = () => (
56
- <NotificationIndicator
57
- onCountUpdated={updateButtonLabel}
58
- // force a zero-count after the drawer has been opened
59
- notificationLogProvider={Promise.resolve(
60
- interacted ? emptyClient : client,
61
- )}
62
- />
63
- );
59
+ const NotificationsBadge = () => (
60
+ <NotificationIndicator
61
+ onCountUpdated={updateButtonLabel}
62
+ // force a zero-count after the drawer has been opened
63
+ notificationLogProvider={Promise.resolve(interacted ? emptyClient : client)}
64
+ />
65
+ );
64
66
 
65
- const updateButtonLabel = ({
66
- newCount,
67
- oldCount,
68
- source,
69
- }: {
70
- newCount: number;
71
- oldCount?: number;
72
- source?: string;
73
- }) => {
74
- setButtonLabel(newCount || 0);
75
- };
67
+ const updateButtonLabel = ({
68
+ newCount,
69
+ oldCount,
70
+ source,
71
+ }: {
72
+ newCount: number;
73
+ oldCount?: number;
74
+ source?: string;
75
+ }) => {
76
+ setButtonLabel(newCount || 0);
77
+ };
76
78
 
77
- const onClick = () => {
78
- // let the badge icon know to clear its count
79
- setInteracted(true);
80
- setIsOpen(!isOpen);
81
- };
79
+ const onClick = () => {
80
+ // let the badge icon know to clear its count
81
+ setInteracted(true);
82
+ setIsOpen(!isOpen);
83
+ };
82
84
 
83
- const onClose = () => {
84
- setIsOpen(false);
85
- };
85
+ const onClose = () => {
86
+ setIsOpen(false);
87
+ };
86
88
 
87
- return (
88
- <Popup
89
- placement="bottom-start"
90
- content={NotificationsContent}
91
- isOpen={isOpen}
92
- onClose={onClose}
93
- trigger={(triggerProps) => (
94
- <Notifications
95
- badge={NotificationsBadge}
96
- onClick={onClick}
97
- tooltip={`Notifications (${buttonLabel})`}
98
- isSelected={isOpen}
99
- testId={'nav-notifications'}
100
- {...triggerProps}
101
- />
102
- )}
103
- />
104
- );
89
+ return (
90
+ <Popup
91
+ placement="bottom-start"
92
+ content={NotificationsContent}
93
+ isOpen={isOpen}
94
+ onClose={onClose}
95
+ trigger={(triggerProps) => (
96
+ <Notifications
97
+ badge={NotificationsBadge}
98
+ onClick={onClick}
99
+ tooltip={`Notifications (${buttonLabel})`}
100
+ isSelected={isOpen}
101
+ testId={'nav-notifications'}
102
+ {...triggerProps}
103
+ />
104
+ )}
105
+ />
106
+ );
105
107
  };
@@ -6,70 +6,70 @@ import { ButtonItem, MenuGroup, Section } from '@atlaskit/menu';
6
6
  import Popup from '@atlaskit/popup';
7
7
 
8
8
  export const DefaultProfile = () => (
9
- <Profile
10
- icon={<img src={avatarUrl} alt="Your profile and settings" />}
11
- onClick={noop}
12
- tooltip="Your profile and settings"
13
- />
9
+ <Profile
10
+ icon={<img src={avatarUrl} alt="Your profile and settings" />}
11
+ onClick={noop}
12
+ tooltip="Your profile and settings"
13
+ />
14
14
  );
15
15
 
16
16
  export const avatarUrl =
17
- 'data:image/png;base64,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';
17
+ 'data:image/png;base64,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';
18
18
 
19
19
  const ProfileContent = () => (
20
- <MenuGroup>
21
- <Section>
22
- <ButtonItem>Give us feedback</ButtonItem>
23
- </Section>
24
- <Section title="Jira" hasSeparator>
25
- <ButtonItem>Settings</ButtonItem>
26
- </Section>
27
- <Section title="John Smith" hasSeparator>
28
- <ButtonItem>Profile</ButtonItem>
29
- <ButtonItem>Account settings</ButtonItem>
30
- <ButtonItem>Logout</ButtonItem>
31
- </Section>
32
- </MenuGroup>
20
+ <MenuGroup>
21
+ <Section>
22
+ <ButtonItem>Give us feedback</ButtonItem>
23
+ </Section>
24
+ <Section title="Jira" hasSeparator>
25
+ <ButtonItem>Settings</ButtonItem>
26
+ </Section>
27
+ <Section title="John Smith" hasSeparator>
28
+ <ButtonItem>Profile</ButtonItem>
29
+ <ButtonItem>Account settings</ButtonItem>
30
+ <ButtonItem>Logout</ButtonItem>
31
+ </Section>
32
+ </MenuGroup>
33
33
  );
34
34
 
35
35
  const imgCSS = {
36
- borderRadius: '100%',
37
- height: 24,
38
- width: 24,
36
+ borderRadius: '100%',
37
+ height: 24,
38
+ width: 24,
39
39
  };
40
40
  export const ProfilePopup = () => {
41
- const [isOpen, setIsOpen] = useState(false);
41
+ const [isOpen, setIsOpen] = useState(false);
42
42
 
43
- const onClick = () => {
44
- setIsOpen(!isOpen);
45
- };
43
+ const onClick = () => {
44
+ setIsOpen(!isOpen);
45
+ };
46
46
 
47
- const onClose = () => {
48
- setIsOpen(false);
49
- };
47
+ const onClose = () => {
48
+ setIsOpen(false);
49
+ };
50
50
 
51
- return (
52
- <Popup
53
- placement="bottom-start"
54
- content={ProfileContent}
55
- isOpen={isOpen}
56
- onClose={onClose}
57
- trigger={(triggerProps) => (
58
- <Profile
59
- icon={
60
- <img
61
- // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
62
- style={imgCSS}
63
- src={avatarUrl}
64
- alt="Your profile and settings"
65
- />
66
- }
67
- onClick={onClick}
68
- isSelected={isOpen}
69
- tooltip="Your profile and settings"
70
- {...triggerProps}
71
- />
72
- )}
73
- />
74
- );
51
+ return (
52
+ <Popup
53
+ placement="bottom-start"
54
+ content={ProfileContent}
55
+ isOpen={isOpen}
56
+ onClose={onClose}
57
+ trigger={(triggerProps) => (
58
+ <Profile
59
+ icon={
60
+ <img
61
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
62
+ style={imgCSS}
63
+ src={avatarUrl}
64
+ alt="Your profile and settings"
65
+ />
66
+ }
67
+ onClick={onClick}
68
+ isSelected={isOpen}
69
+ tooltip="Your profile and settings"
70
+ {...triggerProps}
71
+ />
72
+ )}
73
+ />
74
+ );
75
75
  };
@@ -1,6 +1,10 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ */
1
4
  /** @jsx jsx */
2
5
  import { Fragment } from 'react';
3
6
 
7
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
4
8
  import { css, jsx } from '@emotion/react';
5
9
 
6
10
  import { type CustomItemComponentProps } from '@atlaskit/menu';
@@ -9,40 +13,40 @@ import { B400, N200 } from '@atlaskit/theme/colors';
9
13
  import { token } from '@atlaskit/tokens';
10
14
 
11
15
  const Container = (props: CustomItemComponentProps) => {
12
- // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
13
- return <div {...props} />;
16
+ // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
17
+ return <div {...props} />;
14
18
  };
15
19
 
16
20
  const linkStyles = css({
17
- color: token('color.text.subtle', N200),
18
- '&:hover': {
19
- color: token('color.link', B400),
20
- cursor: 'pointer',
21
- textDecoration: 'none',
22
- },
21
+ color: token('color.text.subtle', N200),
22
+ '&:hover': {
23
+ color: token('color.link', B400),
24
+ cursor: 'pointer',
25
+ textDecoration: 'none',
26
+ },
23
27
  });
24
28
 
25
29
  // This example footer conforms to a design taken from Jira designs found at
26
30
  // https://www.figma.com/file/GA22za6unqO2WsBWM0Ddxk/Jira-navigation-3?node-id=124%3A7194
27
31
  const ExampleFooter = () => {
28
- return (
29
- <Footer
30
- component={Container}
31
- description={
32
- <Fragment>
33
- <a href="https://www.atlassian.com/company/contact" css={linkStyles}>
34
- Give feedback
35
- </a>
36
- {' ∙ '}
37
- <a href="http://www.atlassian.com" css={linkStyles}>
38
- Learn more
39
- </a>
40
- </Fragment>
41
- }
42
- >
43
- You're in a next-gen project
44
- </Footer>
45
- );
32
+ return (
33
+ <Footer
34
+ component={Container}
35
+ description={
36
+ <Fragment>
37
+ <a href="https://www.atlassian.com/company/contact" css={linkStyles}>
38
+ Give feedback
39
+ </a>
40
+ {' ∙ '}
41
+ <a href="http://www.atlassian.com" css={linkStyles}>
42
+ Learn more
43
+ </a>
44
+ </Fragment>
45
+ }
46
+ >
47
+ You're in a next-gen project
48
+ </Footer>
49
+ );
46
50
  };
47
51
 
48
52
  export default ExampleFooter;
@@ -1,4 +1,8 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ */
1
4
  /** @jsx jsx */
5
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
2
6
  import { jsx } from '@emotion/react';
3
7
 
4
8
  import Icon from '@atlaskit/icon';
@@ -6,20 +10,20 @@ import { type CustomItemComponentProps } from '@atlaskit/menu';
6
10
  import { Header } from '@atlaskit/side-navigation';
7
11
 
8
12
  const Container = (props: CustomItemComponentProps) => {
9
- // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
10
- return <div {...props} />;
13
+ // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
14
+ return <div {...props} />;
11
15
  };
12
16
 
13
17
  const ExampleHeader = () => {
14
- return (
15
- <Header
16
- component={Container}
17
- description="Next-gen service desk"
18
- iconBefore={<Icon label="" size="medium" />}
19
- >
20
- NXTGen Industries
21
- </Header>
22
- );
18
+ return (
19
+ <Header
20
+ component={Container}
21
+ description="Next-gen service desk"
22
+ iconBefore={<Icon label="" size="medium" />}
23
+ >
24
+ NXTGen Industries
25
+ </Header>
26
+ );
23
27
  };
24
28
 
25
29
  export default ExampleHeader;