@codecademy/brand 3.1.0-alpha.42ca298ecf.0 → 3.1.0-alpha.43d1b3ddfb.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.
- package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.d.ts +3 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.js +83 -0
- package/dist/AppHeader/AppHeaderElements/{AppHeaderCatalogSectionVariant → AppHeaderCatalogDropdown}/NavPanels.js +4 -44
- package/dist/AppHeader/AppHeaderElements/{AppHeaderCatalogSectionVariant → AppHeaderCatalogDropdown}/consts.d.ts +5 -1
- package/dist/AppHeader/AppHeaderElements/{AppHeaderCatalogSectionVariant → AppHeaderCatalogDropdown}/consts.js +6 -2
- package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.js +8 -6
- package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.d.ts +4 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.js +52 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.js +0 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.d.ts +11 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.js +140 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.d.ts +18 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.js +273 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.js +31 -5
- package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSection.test.js +83 -0
- package/dist/AppHeader/AppHeaderElements/{AppHeaderCatalogSectionVariant → AppHeaderSection}/NavSection.d.ts +2 -2
- package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavSection.js +79 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.d.ts +10 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.js +54 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.d.ts +17 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.js +86 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderSectionVariant/NavSection.d.ts +15 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderSectionVariant/NavSection.js +79 -0
- package/dist/AppHeaderMobile/AppHeaderCatalogSectonVariantMobile/index.js +3 -3
- package/dist/GlobalHeader/types.d.ts +32 -0
- package/dist/LearningOutcomeCard/index.js +3 -3
- package/package.json +1 -1
- package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogSectionVariant/NavSection.js +0 -75
- package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogSectionVariant/index.d.ts +0 -11
- package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogSectionVariant/index.js +0 -100
- /package/dist/AppHeader/AppHeaderElements/{AppHeaderCatalogSectionVariant → AppHeaderCatalogDropdown}/NavPanels.d.ts +0 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { ArticleIcon, BulbIcon, DiamondIcon, FileIcon, NotebookIcon, ProjectsIcon, RulerTriangleIcon, VideoPlayerMovieIcon } from '@codecademy/gamut-icons';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { DocsPanel, InspirationPanel, LearningToolsPanel, PracticeToolsPanel } from './NavPanels';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
export const RESOURCES_NAV_SECTIONS = [{
|
|
6
|
+
item: {
|
|
7
|
+
icon: FileIcon,
|
|
8
|
+
text: 'Docs',
|
|
9
|
+
id: 'docs',
|
|
10
|
+
type: 'resources-dropdown',
|
|
11
|
+
trackingTarget: 'topnav_resources_docs'
|
|
12
|
+
},
|
|
13
|
+
panel: DocsPanel
|
|
14
|
+
}, {
|
|
15
|
+
item: {
|
|
16
|
+
icon: RulerTriangleIcon,
|
|
17
|
+
text: 'Learning tools',
|
|
18
|
+
id: 'learning-tools',
|
|
19
|
+
type: 'resources-dropdown',
|
|
20
|
+
trackingTarget: 'topnav_resources_learning_tools'
|
|
21
|
+
},
|
|
22
|
+
panel: LearningToolsPanel
|
|
23
|
+
}, {
|
|
24
|
+
item: {
|
|
25
|
+
icon: DiamondIcon,
|
|
26
|
+
text: 'Practice tools',
|
|
27
|
+
id: 'practice-tools',
|
|
28
|
+
type: 'resources-dropdown',
|
|
29
|
+
trackingTarget: 'topnav_resources_practice_tools'
|
|
30
|
+
},
|
|
31
|
+
panel: PracticeToolsPanel
|
|
32
|
+
}, {
|
|
33
|
+
item: {
|
|
34
|
+
icon: BulbIcon,
|
|
35
|
+
text: 'Inspiration',
|
|
36
|
+
id: 'inspiration',
|
|
37
|
+
type: 'resources-dropdown',
|
|
38
|
+
trackingTarget: 'topnav_resources_inspiration'
|
|
39
|
+
},
|
|
40
|
+
panel: InspirationPanel
|
|
41
|
+
}];
|
|
42
|
+
export const docsLinks = [{
|
|
43
|
+
id: 'c',
|
|
44
|
+
href: '/resources/docs/c',
|
|
45
|
+
trackingTarget: 'topnav_resources_docs_c',
|
|
46
|
+
text: 'C',
|
|
47
|
+
type: 'link'
|
|
48
|
+
}, {
|
|
49
|
+
id: 'html',
|
|
50
|
+
href: '/resources/docs/html',
|
|
51
|
+
trackingTarget: 'topnav_resources_docs_html',
|
|
52
|
+
text: 'HTML',
|
|
53
|
+
type: 'link'
|
|
54
|
+
}, {
|
|
55
|
+
id: 'python',
|
|
56
|
+
href: '/resources/docs/python',
|
|
57
|
+
trackingTarget: 'topnav_resources_docs_python',
|
|
58
|
+
text: 'Python',
|
|
59
|
+
type: 'link'
|
|
60
|
+
}, {
|
|
61
|
+
id: 'cpp',
|
|
62
|
+
href: '/resources/docs/cpp',
|
|
63
|
+
trackingTarget: 'topnav_resources_docs_cpp',
|
|
64
|
+
text: 'C++',
|
|
65
|
+
type: 'link'
|
|
66
|
+
}, {
|
|
67
|
+
id: 'java',
|
|
68
|
+
href: '/resources/docs/java',
|
|
69
|
+
trackingTarget: 'topnav_resources_docs_java',
|
|
70
|
+
text: 'Java',
|
|
71
|
+
type: 'link'
|
|
72
|
+
}, {
|
|
73
|
+
id: 'react',
|
|
74
|
+
href: '/resources/docs/react',
|
|
75
|
+
trackingTarget: 'topnav_resources_docs_react',
|
|
76
|
+
text: 'React',
|
|
77
|
+
type: 'link'
|
|
78
|
+
}, {
|
|
79
|
+
id: 'css',
|
|
80
|
+
href: '/resources/docs/css',
|
|
81
|
+
trackingTarget: 'topnav_resources_docs_css',
|
|
82
|
+
text: 'CSS',
|
|
83
|
+
type: 'link'
|
|
84
|
+
}, {
|
|
85
|
+
id: 'javascript',
|
|
86
|
+
href: '/resources/docs/javascript',
|
|
87
|
+
trackingTarget: 'topnav_resources_docs_javascript',
|
|
88
|
+
text: 'JavaScript',
|
|
89
|
+
type: 'link'
|
|
90
|
+
}, {
|
|
91
|
+
id: 'sql',
|
|
92
|
+
href: '/resources/docs/sql',
|
|
93
|
+
trackingTarget: 'topnav_resources_docs_sql',
|
|
94
|
+
text: 'SQL',
|
|
95
|
+
type: 'link'
|
|
96
|
+
}, {
|
|
97
|
+
id: 'git',
|
|
98
|
+
href: '/resources/docs/git',
|
|
99
|
+
trackingTarget: 'topnav_resources_docs_git',
|
|
100
|
+
text: 'Git',
|
|
101
|
+
type: 'link'
|
|
102
|
+
}, {
|
|
103
|
+
id: 'php',
|
|
104
|
+
href: '/resources/docs/php',
|
|
105
|
+
trackingTarget: 'topnav_resources_docs_php',
|
|
106
|
+
text: 'PHP',
|
|
107
|
+
type: 'link'
|
|
108
|
+
}, {
|
|
109
|
+
id: 'uiux',
|
|
110
|
+
href: '/resources/docs/uiux',
|
|
111
|
+
trackingTarget: 'topnav_resources_docs_uiux',
|
|
112
|
+
text: 'UI/UX',
|
|
113
|
+
type: 'link'
|
|
114
|
+
}, {
|
|
115
|
+
id: 'markdown',
|
|
116
|
+
href: '/resources/docs/markdown',
|
|
117
|
+
trackingTarget: 'topnav_resources_docs_markdown',
|
|
118
|
+
text: 'Markdown',
|
|
119
|
+
type: 'link'
|
|
120
|
+
}, {
|
|
121
|
+
id: 'data-science',
|
|
122
|
+
href: '/resources/docs/data-science',
|
|
123
|
+
trackingTarget: 'topnav_resources_docs_data_science',
|
|
124
|
+
text: 'Data science',
|
|
125
|
+
type: 'link'
|
|
126
|
+
}, {
|
|
127
|
+
id: 'ai',
|
|
128
|
+
href: '/resources/docs/ai',
|
|
129
|
+
trackingTarget: 'topnav_resources_docs_ai',
|
|
130
|
+
text: 'AI',
|
|
131
|
+
type: 'link'
|
|
132
|
+
}, {
|
|
133
|
+
id: 'data-visualization',
|
|
134
|
+
href: '/resources/docs/data-visualization',
|
|
135
|
+
trackingTarget: 'topnav_resources_docs_data_visualization',
|
|
136
|
+
text: 'Data visualization',
|
|
137
|
+
type: 'link'
|
|
138
|
+
}, {
|
|
139
|
+
id: 'typescript',
|
|
140
|
+
href: '/resources/docs/typescript',
|
|
141
|
+
trackingTarget: 'topnav_resources_docs_typescript',
|
|
142
|
+
text: 'TypeScript',
|
|
143
|
+
type: 'link'
|
|
144
|
+
}, {
|
|
145
|
+
id: 'ruby',
|
|
146
|
+
href: '/resources/docs/ruby',
|
|
147
|
+
trackingTarget: 'topnav_resources_docs_ruby',
|
|
148
|
+
text: 'Ruby',
|
|
149
|
+
type: 'link'
|
|
150
|
+
}];
|
|
151
|
+
export const learningToolsLinks = [{
|
|
152
|
+
linkItem: {
|
|
153
|
+
id: 'projects',
|
|
154
|
+
href: '/projects',
|
|
155
|
+
trackingTarget: 'topnav_resources_projects',
|
|
156
|
+
text: 'Projects',
|
|
157
|
+
type: 'link'
|
|
158
|
+
},
|
|
159
|
+
icon: /*#__PURE__*/_jsx(ProjectsIcon, {}),
|
|
160
|
+
description: "Projects let you apply what you're learning. Practice new skills, connect concepts, or put it all together to create something of your own."
|
|
161
|
+
}, {
|
|
162
|
+
linkItem: {
|
|
163
|
+
id: 'cheatsheets',
|
|
164
|
+
href: '/resources/cheatsheets/all',
|
|
165
|
+
trackingTarget: 'topnav_resources_cheatsheets',
|
|
166
|
+
text: 'Cheatsheets',
|
|
167
|
+
type: 'link'
|
|
168
|
+
},
|
|
169
|
+
icon: /*#__PURE__*/_jsx(NotebookIcon, {}),
|
|
170
|
+
description: 'Sagittis magna mattis risus et tortor. Id morbi ornare mi convallis non. Lorem dis vulputate morbi porttitor tincidunt. Ullamcorper risus eu vestibulum malesuada ullamcorper.'
|
|
171
|
+
}, {
|
|
172
|
+
linkItem: {
|
|
173
|
+
id: 'articles',
|
|
174
|
+
href: '/articles',
|
|
175
|
+
trackingTarget: 'topnav_resources_articles',
|
|
176
|
+
text: 'Articles',
|
|
177
|
+
type: 'link'
|
|
178
|
+
},
|
|
179
|
+
icon: /*#__PURE__*/_jsx(ArticleIcon, {}),
|
|
180
|
+
description: "Articles are more in-depth explanations about concepts covered in Codecademy courses. Here you'll learn more about workflows that developers use every day, and take your coding skills to the next level."
|
|
181
|
+
}, {
|
|
182
|
+
linkItem: {
|
|
183
|
+
id: 'videos',
|
|
184
|
+
href: '/resources/videos',
|
|
185
|
+
trackingTarget: 'topnav_resources_videos',
|
|
186
|
+
text: 'Videos',
|
|
187
|
+
type: 'link'
|
|
188
|
+
},
|
|
189
|
+
icon: /*#__PURE__*/_jsx(VideoPlayerMovieIcon, {}),
|
|
190
|
+
description: 'Watch our best programming videos for beginner, intermediate, and advanced learners about languages, frameworks, and more.'
|
|
191
|
+
}];
|
|
192
|
+
export const practiceToolsLinks = [{
|
|
193
|
+
linkItem: {
|
|
194
|
+
id: 'interview-simulator',
|
|
195
|
+
href: '/interview-simulator',
|
|
196
|
+
trackingTarget: 'topnav_resources_interview_simulator',
|
|
197
|
+
text: 'Interview Simulator',
|
|
198
|
+
type: 'link'
|
|
199
|
+
},
|
|
200
|
+
icon: /*#__PURE__*/_jsx(ProjectsIcon, {}),
|
|
201
|
+
description: 'Discover your potential through interviewing. Identify your strengths, get actionable feedback, and boost your confidence with customized practice — at any stage in your tech career.'
|
|
202
|
+
}, {
|
|
203
|
+
linkItem: {
|
|
204
|
+
id: 'job-readiness',
|
|
205
|
+
href: '/job-readiness',
|
|
206
|
+
trackingTarget: 'topnav_resources_job_readiness',
|
|
207
|
+
text: 'Job-Readiness Checker',
|
|
208
|
+
type: 'link'
|
|
209
|
+
},
|
|
210
|
+
icon: /*#__PURE__*/_jsx(NotebookIcon, {}),
|
|
211
|
+
description: "Add a LinkedIn or ZipRecruiter job posting to analyze how your skills fit the job. You'll need to add more information for jobs found on other websites."
|
|
212
|
+
}, {
|
|
213
|
+
linkItem: {
|
|
214
|
+
id: 'code-challenges',
|
|
215
|
+
href: '/code-challenges',
|
|
216
|
+
trackingTarget: 'topnav_resources_code_challenges',
|
|
217
|
+
text: 'Code Challenges',
|
|
218
|
+
type: 'link'
|
|
219
|
+
},
|
|
220
|
+
icon: /*#__PURE__*/_jsx(ArticleIcon, {}),
|
|
221
|
+
description: "Test your knowledge with code challenges based on real-world technical interviews from companies like Google, Amazon, and Meta. Practice for your job search — or for fun. Don't worry if you get stuck. We'll recommend the right courses to help you."
|
|
222
|
+
}, {
|
|
223
|
+
linkItem: {
|
|
224
|
+
id: 'workspaces',
|
|
225
|
+
href: '/pages/workspaces',
|
|
226
|
+
trackingTarget: 'topnav_resources_workspaces',
|
|
227
|
+
text: 'Workspaces',
|
|
228
|
+
type: 'link'
|
|
229
|
+
},
|
|
230
|
+
icon: /*#__PURE__*/_jsx(VideoPlayerMovieIcon, {}),
|
|
231
|
+
description: 'Practice building projects in 13 popular languages and libraries, tinker with code, and share your work—all without leaving your browser.'
|
|
232
|
+
}];
|
|
233
|
+
export const inspirationLinks = [{
|
|
234
|
+
linkItem: {
|
|
235
|
+
id: 'learning-tips',
|
|
236
|
+
href: '/resources/blog/category/learning-tips',
|
|
237
|
+
trackingTarget: 'topnav_resources_learning_tips',
|
|
238
|
+
text: 'Learning Tips',
|
|
239
|
+
type: 'link'
|
|
240
|
+
},
|
|
241
|
+
icon: /*#__PURE__*/_jsx(ProjectsIcon, {}),
|
|
242
|
+
description: 'Learning to code — or thinking about it? Here’s how to get started, plus tips and tricks for staying motivated.'
|
|
243
|
+
}, {
|
|
244
|
+
linkItem: {
|
|
245
|
+
id: 'finding-a-job',
|
|
246
|
+
href: '/resources/blog/category/finding-a-job',
|
|
247
|
+
trackingTarget: 'topnav_resources_finding_a_job',
|
|
248
|
+
text: 'Finding a Job',
|
|
249
|
+
type: 'link'
|
|
250
|
+
},
|
|
251
|
+
icon: /*#__PURE__*/_jsx(NotebookIcon, {}),
|
|
252
|
+
description: 'Want to break into the tech industry? Learn how to write a standout resume, build a professional portfolio, prepare for technical interviews, and negotiate job offers.'
|
|
253
|
+
}, {
|
|
254
|
+
linkItem: {
|
|
255
|
+
id: 'career-advice',
|
|
256
|
+
href: '/resources/blog/category/career',
|
|
257
|
+
trackingTarget: 'topnav_resources_career_advice',
|
|
258
|
+
text: 'Career Advice',
|
|
259
|
+
type: 'link'
|
|
260
|
+
},
|
|
261
|
+
icon: /*#__PURE__*/_jsx(ArticleIcon, {}),
|
|
262
|
+
description: 'Explore different tech jobs and learn how to advance in your career and maintain work-life balance.'
|
|
263
|
+
}, {
|
|
264
|
+
linkItem: {
|
|
265
|
+
id: 'get-inspired',
|
|
266
|
+
href: '/resources/blog/category/get-inspired',
|
|
267
|
+
trackingTarget: 'topnav_resources_get_inspired',
|
|
268
|
+
text: 'Get Inspired',
|
|
269
|
+
type: 'link'
|
|
270
|
+
},
|
|
271
|
+
icon: /*#__PURE__*/_jsx(VideoPlayerMovieIcon, {}),
|
|
272
|
+
description: 'Learn how coding can change your life (and the world) for the better.'
|
|
273
|
+
}];
|
|
@@ -1,12 +1,27 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _styled from "@emotion/styled/base";
|
|
2
|
+
import { ColorMode } from '@codecademy/gamut-styles';
|
|
3
|
+
import { useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
2
4
|
import * as React from 'react';
|
|
5
|
+
import { GlobalNavRedesignContext } from '../../../GlobalHeader';
|
|
3
6
|
import { getHeaderResourcesList } from '../../../lib/resourcesList';
|
|
4
7
|
import { AnimatedMegaMenuDropdown } from '../../shared';
|
|
5
8
|
import { AppHeaderDropdownProvider } from '../AppHeaderDropdownProvider';
|
|
6
9
|
import { AppHeaderDropdownNavButton } from '../AppHeaderNavButton/AppHeaderDropdownNavButton';
|
|
7
10
|
import { useAppHeaderContext } from '../AppHeaderProvider';
|
|
8
11
|
import { AppHeaderResourcesSection } from '../AppHeaderResourcesSection';
|
|
12
|
+
import { AppHeaderSection } from '../AppHeaderSection';
|
|
13
|
+
import { RESOURCES_NAV_SECTIONS } from './consts';
|
|
9
14
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
const StyledAnimatedMegaMenuDropdown = /*#__PURE__*/_styled(AnimatedMegaMenuDropdown, {
|
|
16
|
+
target: "ekdg1bw0",
|
|
17
|
+
label: "StyledAnimatedMegaMenuDropdown"
|
|
18
|
+
})("left:", ({
|
|
19
|
+
isAnon,
|
|
20
|
+
displayGlobalNavRedesign
|
|
21
|
+
}) => displayGlobalNavRedesign ? '-58px' : isAnon ? '-9rem' : '-14rem', ";@media (min-width: 1261px){left:", ({
|
|
22
|
+
isAnon,
|
|
23
|
+
displayGlobalNavRedesign
|
|
24
|
+
}) => displayGlobalNavRedesign ? '-152px' : isAnon ? '-9rem' : '-14rem', ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyUmVzb3VyY2VzRHJvcGRvd24vaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJCRSIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvQXBwSGVhZGVyL0FwcEhlYWRlckVsZW1lbnRzL0FwcEhlYWRlclJlc291cmNlc0Ryb3Bkb3duL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yTW9kZSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBHbG9iYWxOYXZSZWRlc2lnbkNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9HbG9iYWxIZWFkZXInO1xuaW1wb3J0IHsgZ2V0SGVhZGVyUmVzb3VyY2VzTGlzdCB9IGZyb20gJy4uLy4uLy4uL2xpYi9yZXNvdXJjZXNMaXN0JztcbmltcG9ydCB7XG4gIEFuaW1hdGVkTWVnYU1lbnVEcm9wZG93bixcbiAgQXBwSGVhZGVyQWN0aW9uLFxuICBBcHBIZWFkZXJSZXNvdXJjZXNEcm9wZG93bkl0ZW0sXG59IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBBcHBIZWFkZXJEcm9wZG93blByb3ZpZGVyIH0gZnJvbSAnLi4vQXBwSGVhZGVyRHJvcGRvd25Qcm92aWRlcic7XG5pbXBvcnQgeyBBcHBIZWFkZXJEcm9wZG93bk5hdkJ1dHRvbiB9IGZyb20gJy4uL0FwcEhlYWRlck5hdkJ1dHRvbi9BcHBIZWFkZXJEcm9wZG93bk5hdkJ1dHRvbic7XG5pbXBvcnQgeyB1c2VBcHBIZWFkZXJDb250ZXh0IH0gZnJvbSAnLi4vQXBwSGVhZGVyUHJvdmlkZXInO1xuaW1wb3J0IHsgQXBwSGVhZGVyUmVzb3VyY2VzU2VjdGlvbiB9IGZyb20gJy4uL0FwcEhlYWRlclJlc291cmNlc1NlY3Rpb24nO1xuaW1wb3J0IHsgQXBwSGVhZGVyU2VjdGlvbiB9IGZyb20gJy4uL0FwcEhlYWRlclNlY3Rpb24nO1xuaW1wb3J0IHsgUkVTT1VSQ0VTX05BVl9TRUNUSU9OUyB9IGZyb20gJy4vY29uc3RzJztcblxuZXhwb3J0IHR5cGUgQXBwSGVhZGVyUmVzb3VyY2VEcm9wZG93blByb3BzID0gQXBwSGVhZGVyQWN0aW9uICYge1xuICBpdGVtOiBBcHBIZWFkZXJSZXNvdXJjZXNEcm9wZG93bkl0ZW07XG4gIGlzQW5vbjogYm9vbGVhbjtcbn07XG5cbmNvbnN0IFN0eWxlZEFuaW1hdGVkTWVnYU1lbnVEcm9wZG93biA9IHN0eWxlZChBbmltYXRlZE1lZ2FNZW51RHJvcGRvd24pPHtcbiAgaXNBbm9uOiBib29sZWFuO1xuICBkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ246IGJvb2xlYW47XG59PmBcbiAgbGVmdDogJHsoeyBpc0Fub24sIGRpc3BsYXlHbG9iYWxOYXZSZWRlc2lnbiB9KSA9PlxuICAgIGRpc3BsYXlHbG9iYWxOYXZSZWRlc2lnbiA/ICctNThweCcgOiBpc0Fub24gPyAnLTlyZW0nIDogJy0xNHJlbSd9O1xuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjYxcHgpIHtcbiAgICBsZWZ0OiAkeyh7IGlzQW5vbiwgZGlzcGxheUdsb2JhbE5hdlJlZGVzaWduIH0pID0+XG4gICAgICBkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAnLTE1MnB4JyA6IGlzQW5vbiA/ICctOXJlbScgOiAnLTE0cmVtJ307XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBBcHBIZWFkZXJSZXNvdXJjZXNEcm9wZG93bjogUmVhY3QuRkM8XG4gIEFwcEhlYWRlclJlc291cmNlRHJvcGRvd25Qcm9wc1xuPiA9ICh7IGFjdGlvbiwgaXRlbSwgaXNBbm9uIH0pID0+IHtcbiAgY29uc3QgeyB0ZXh0IH0gPSBpdGVtO1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgYnV0dG9uUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKTtcbiAgY29uc3QgZHJvcGRvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyBsYXN0T3BlbmVkRHJvcGRvd24sIHNldExhc3RPcGVuZWREcm9wZG93biB9ID0gdXNlQXBwSGVhZGVyQ29udGV4dCgpO1xuXG4gIC8vIEFkZCBzY3JvbGxiYXIgZm9yIHNob3J0IHNjcmVlbnMgYWZ0ZXIgdHJhbnNpdGlvbiAob3RoZXJ3aXNlIHNjcm9sbGJhciBhcHBlYXJzIGFuZCBkaXNzYXBlYXJzIGZvciBhZGVxdWF0ZSBoZWlnaHRzIGR1cmluZyB0cmFuc2l0aW9uKVxuICBjb25zdCBbYW5pbWF0aW9uQ29tcGxldGVTdHlsZXMsIHNldEFuaW1hdGlvbkNvbXBsZXRlU3R5bGVzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBoZWFkZXJSZXNvdXJjZXNMaXN0ID0gZ2V0SGVhZGVyUmVzb3VyY2VzTGlzdCgpO1xuXG4gIGNvbnN0IGFuaW1hdGlvbkZpbmlzaGVkID0gKCkgPT4ge1xuICAgIHNldEFuaW1hdGlvbkNvbXBsZXRlU3R5bGVzKGlzT3Blbik7XG4gICAgaWYgKGlzT3BlbiAmJiBkcm9wZG93blJlZi5jdXJyZW50KSB7XG4gICAgICBkcm9wZG93blJlZi5jdXJyZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHRvZ2dsZUlzT3BlbiA9ICgpID0+IHNldElzT3BlbigocHJldikgPT4gIXByZXYpO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2xpY2sgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICB0b2dnbGVJc09wZW4oKTtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgYWN0aW9uKGV2ZW50LCBpdGVtKTtcbiAgICAgIGlmIChzZXRMYXN0T3BlbmVkRHJvcGRvd24pIHtcbiAgICAgICAgc2V0TGFzdE9wZW5lZERyb3Bkb3duKHRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgIGJ1dHRvblJlZj8uY3VycmVudD8uZm9jdXMoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxhc3RPcGVuZWREcm9wZG93biAhPT0gdGV4dCAmJiBpc09wZW4pIHtcbiAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2xhc3RPcGVuZWREcm9wZG93bl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50IHwgRXZlbnQpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRhaW5lclJlZj8uY3VycmVudDtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IGJ1dHRvblJlZj8uY3VycmVudDtcbiAgICAgIGlmIChcbiAgICAgICAgaXNPcGVuICYmXG4gICAgICAgIGNvbnRhaW5lciAmJlxuICAgICAgICAhY29udGFpbmVyLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICBidXR0b24gJiZcbiAgICAgICAgIWJ1dHRvbi5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgICAgICkge1xuICAgICAgICBoYW5kbGVDbG9zZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICB9O1xuICB9LCBbY29udGFpbmVyUmVmLCBoYW5kbGVDbG9zZSwgaXNPcGVuXSk7XG5cbiAgY29uc3QgZGlzcGxheUdsb2JhbE5hdlJlZGVzaWduID0gdXNlQ29udGV4dChHbG9iYWxOYXZSZWRlc2lnbkNvbnRleHQpO1xuXG4gIHJldHVybiAoXG4gICAgPEFwcEhlYWRlckRyb3Bkb3duUHJvdmlkZXIgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlfT5cbiAgICAgIDxBcHBIZWFkZXJEcm9wZG93bk5hdkJ1dHRvblxuICAgICAgICBidXR0b25SZWY9e2J1dHRvblJlZn1cbiAgICAgICAgaGFuZGxlT25DbGljaz17aGFuZGxlT25DbGlja31cbiAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgIHRpdGxlPXt0ZXh0fVxuICAgICAgLz5cbiAgICAgIDxTdHlsZWRBbmltYXRlZE1lZ2FNZW51RHJvcGRvd25cbiAgICAgICAgaXNBbm9uPXtpc0Fub259XG4gICAgICAgIGRpc3BsYXlHbG9iYWxOYXZSZWRlc2lnbj17ZGlzcGxheUdsb2JhbE5hdlJlZGVzaWdufVxuICAgICAgICB0YWJJbmRleD17LTF9IC8vIHByZXZlbnQgZnJvbSBpbnRlcmZlcmluZyB3aXRoIEFwcEhlYWRlciBmb2N1cyBsb2dpY1xuICAgICAgICByZWY9e2Ryb3Bkb3duUmVmfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRvcDogJzMuNXJlbScsXG4gICAgICAgICAgbWluV2lkdGg6ICc2NHJlbScsXG4gICAgICAgICAgbGVmdDogaXNBbm9uID8gJy0xNC41cmVtJyA6ICctMTkuNXJlbScsXG4gICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBhbmltYXRpb25Db21wbGV0ZVN0eWxlcyA/ICc4NXZoJyA6IDAsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAndHJhbnNwYXJlbnQnIDogJycsXG4gICAgICAgIH19XG4gICAgICAgIGluaXRpYWw9e3sgYm9yZGVyV2lkdGg6IDAsIGhlaWdodDogMCB9fVxuICAgICAgICBhbmltYXRlPXt7XG4gICAgICAgICAgYm9yZGVyV2lkdGg6IGlzT3BlbiA/IChkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAwIDogMSkgOiAwLFxuICAgICAgICAgIGhlaWdodDogaXNPcGVuID8gJ2ZpdC1jb250ZW50JyA6IDAsXG4gICAgICAgIH19XG4gICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTc1IH19XG4gICAgICAgIGFyaWEtaGlkZGVuPXshaXNPcGVufVxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlc291cmNlcy1tZW51LWRyb3Bkb3duXCJcbiAgICAgICAgb25BbmltYXRpb25Db21wbGV0ZT17YW5pbWF0aW9uRmluaXNoZWR9XG4gICAgICA+XG4gICAgICAgIHtkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAoXG4gICAgICAgICAgPENvbG9yTW9kZSBtb2RlPVwibGlnaHRcIj5cbiAgICAgICAgICAgIDxBcHBIZWFkZXJTZWN0aW9uXG4gICAgICAgICAgICAgIGlzT3Blbj17aXNPcGVufVxuICAgICAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAgICAgbmF2U2VjdGlvbnM9e1JFU09VUkNFU19OQVZfU0VDVElPTlN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ29sb3JNb2RlPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxBcHBIZWFkZXJSZXNvdXJjZXNTZWN0aW9uXG4gICAgICAgICAgICBhY3Rpb249e2FjdGlvbn1cbiAgICAgICAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgICAgICAgaWQ9e2BtZW51LWNvbnRhaW5lciR7aXRlbS50ZXh0fWB9XG4gICAgICAgICAgICBpc09wZW49e2lzT3Blbn1cbiAgICAgICAgICAgIGhhbmRsZUNsb3NlPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICAgICAgcmVzb3VyY2VzPXtoZWFkZXJSZXNvdXJjZXNMaXN0fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZEFuaW1hdGVkTWVnYU1lbnVEcm9wZG93bj5cbiAgICA8L0FwcEhlYWRlckRyb3Bkb3duUHJvdmlkZXI+XG4gICk7XG59O1xuIl19 */"));
|
|
10
25
|
export const AppHeaderResourcesDropdown = ({
|
|
11
26
|
action,
|
|
12
27
|
item,
|
|
@@ -68,6 +83,7 @@ export const AppHeaderResourcesDropdown = ({
|
|
|
68
83
|
document.removeEventListener('blur', handleClickOutside);
|
|
69
84
|
};
|
|
70
85
|
}, [containerRef, handleClose, isOpen]);
|
|
86
|
+
const displayGlobalNavRedesign = useContext(GlobalNavRedesignContext);
|
|
71
87
|
return /*#__PURE__*/_jsxs(AppHeaderDropdownProvider, {
|
|
72
88
|
handleClose: handleClose,
|
|
73
89
|
children: [/*#__PURE__*/_jsx(AppHeaderDropdownNavButton, {
|
|
@@ -75,7 +91,9 @@ export const AppHeaderResourcesDropdown = ({
|
|
|
75
91
|
handleOnClick: handleOnClick,
|
|
76
92
|
isOpen: isOpen,
|
|
77
93
|
title: text
|
|
78
|
-
}), /*#__PURE__*/_jsx(
|
|
94
|
+
}), /*#__PURE__*/_jsx(StyledAnimatedMegaMenuDropdown, {
|
|
95
|
+
isAnon: isAnon,
|
|
96
|
+
displayGlobalNavRedesign: displayGlobalNavRedesign,
|
|
79
97
|
tabIndex: -1 // prevent from interfering with AppHeader focus logic
|
|
80
98
|
,
|
|
81
99
|
ref: dropdownRef,
|
|
@@ -84,14 +102,15 @@ export const AppHeaderResourcesDropdown = ({
|
|
|
84
102
|
minWidth: '64rem',
|
|
85
103
|
left: isAnon ? '-14.5rem' : '-19.5rem',
|
|
86
104
|
overflowY: 'auto',
|
|
87
|
-
maxHeight: animationCompleteStyles ? '85vh' : 0
|
|
105
|
+
maxHeight: animationCompleteStyles ? '85vh' : 0,
|
|
106
|
+
backgroundColor: displayGlobalNavRedesign ? 'transparent' : ''
|
|
88
107
|
},
|
|
89
108
|
initial: {
|
|
90
109
|
borderWidth: 0,
|
|
91
110
|
height: 0
|
|
92
111
|
},
|
|
93
112
|
animate: {
|
|
94
|
-
borderWidth: isOpen ? 1 : 0,
|
|
113
|
+
borderWidth: isOpen ? displayGlobalNavRedesign ? 0 : 1 : 0,
|
|
95
114
|
height: isOpen ? 'fit-content' : 0
|
|
96
115
|
},
|
|
97
116
|
transition: {
|
|
@@ -100,7 +119,14 @@ export const AppHeaderResourcesDropdown = ({
|
|
|
100
119
|
"aria-hidden": !isOpen,
|
|
101
120
|
"data-testid": "resources-menu-dropdown",
|
|
102
121
|
onAnimationComplete: animationFinished,
|
|
103
|
-
children: /*#__PURE__*/_jsx(
|
|
122
|
+
children: displayGlobalNavRedesign ? /*#__PURE__*/_jsx(ColorMode, {
|
|
123
|
+
mode: "light",
|
|
124
|
+
children: /*#__PURE__*/_jsx(AppHeaderSection, {
|
|
125
|
+
isOpen: isOpen,
|
|
126
|
+
ref: containerRef,
|
|
127
|
+
navSections: RESOURCES_NAV_SECTIONS
|
|
128
|
+
})
|
|
129
|
+
}) : /*#__PURE__*/_jsx(AppHeaderResourcesSection, {
|
|
104
130
|
action: action,
|
|
105
131
|
ref: containerRef,
|
|
106
132
|
id: `menu-container${item.text}`,
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { setupRtl } from '@codecademy/gamut-tests';
|
|
2
|
+
import userEvent from '@testing-library/user-event';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { GlobalHeaderItemClickContext } from '../../../GlobalHeader/context';
|
|
5
|
+
import { CATALOG_NAV_SECTIONS } from '../AppHeaderCatalogDropdown/consts';
|
|
6
|
+
import { AppHeaderSection } from '.';
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
const mockOnClick = jest.fn();
|
|
9
|
+
const mockKeyDownEvents = jest.fn();
|
|
10
|
+
const mockItem = {
|
|
11
|
+
text: 'catalog',
|
|
12
|
+
id: 'the-catalog',
|
|
13
|
+
type: 'catalog-dropdown',
|
|
14
|
+
trackingTarget: 'catalog-dropdown'
|
|
15
|
+
};
|
|
16
|
+
const defaultProps = {
|
|
17
|
+
item: mockItem,
|
|
18
|
+
isOpen: true,
|
|
19
|
+
keyDownEvents: mockKeyDownEvents
|
|
20
|
+
};
|
|
21
|
+
const mockContextValue = {
|
|
22
|
+
globalHeaderItemClick: mockOnClick
|
|
23
|
+
};
|
|
24
|
+
describe('AppHeaderSection', () => {
|
|
25
|
+
const renderView = setupRtl(AppHeaderSection, defaultProps).options({
|
|
26
|
+
wrapper: ({
|
|
27
|
+
children
|
|
28
|
+
}) => /*#__PURE__*/_jsx(GlobalHeaderItemClickContext.Provider, {
|
|
29
|
+
value: mockContextValue,
|
|
30
|
+
children: children
|
|
31
|
+
})
|
|
32
|
+
});
|
|
33
|
+
it('renders the component ', () => {
|
|
34
|
+
const {
|
|
35
|
+
view
|
|
36
|
+
} = renderView({
|
|
37
|
+
navSections: CATALOG_NAV_SECTIONS
|
|
38
|
+
});
|
|
39
|
+
expect(view.getByRole('heading', {
|
|
40
|
+
name: 'Course topics'
|
|
41
|
+
})).toBeInTheDocument();
|
|
42
|
+
});
|
|
43
|
+
describe('tab navigation', () => {
|
|
44
|
+
it('starts with the first tab active by default', () => {
|
|
45
|
+
const {
|
|
46
|
+
view
|
|
47
|
+
} = renderView({
|
|
48
|
+
navSections: CATALOG_NAV_SECTIONS
|
|
49
|
+
});
|
|
50
|
+
const courseTopicsButton = view.getByTestId('nav-section-course-topics');
|
|
51
|
+
expect(courseTopicsButton).toHaveAttribute('aria-expanded', 'true');
|
|
52
|
+
});
|
|
53
|
+
it('switches active tab when clicking on different sections', async () => {
|
|
54
|
+
const {
|
|
55
|
+
view
|
|
56
|
+
} = renderView({
|
|
57
|
+
navSections: CATALOG_NAV_SECTIONS
|
|
58
|
+
});
|
|
59
|
+
const careerPathsButton = view.getByTestId('nav-section-career-paths');
|
|
60
|
+
await userEvent.click(careerPathsButton);
|
|
61
|
+
expect(careerPathsButton).toHaveAttribute('aria-expanded', 'true');
|
|
62
|
+
const courseTopicsButton = view.getByTestId('nav-section-course-topics');
|
|
63
|
+
expect(courseTopicsButton).toHaveAttribute('aria-expanded', 'false');
|
|
64
|
+
});
|
|
65
|
+
it('calls tracking with correct parameters when clicking nav section', async () => {
|
|
66
|
+
const {
|
|
67
|
+
view
|
|
68
|
+
} = renderView({
|
|
69
|
+
navSections: CATALOG_NAV_SECTIONS
|
|
70
|
+
});
|
|
71
|
+
const careerPathsButton = view.getByTestId('nav-section-career-paths');
|
|
72
|
+
await userEvent.click(careerPathsButton);
|
|
73
|
+
expect(mockOnClick).toHaveBeenCalledTimes(1);
|
|
74
|
+
expect(mockOnClick).toHaveBeenCalledWith(expect.anything(),
|
|
75
|
+
// event object
|
|
76
|
+
expect.objectContaining({
|
|
77
|
+
id: 'career-paths',
|
|
78
|
+
type: 'catalog-dropdown'
|
|
79
|
+
}) // tracking parameters
|
|
80
|
+
);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { GamutIconProps } from '@codecademy/gamut-icons';
|
|
2
2
|
import React, { PropsWithChildren } from 'react';
|
|
3
|
-
import { AppHeaderCatalogDropdownItem } from '../../shared';
|
|
3
|
+
import { AppHeaderCatalogDropdownItem, AppHeaderResourcesDropdownItem } from '../../shared';
|
|
4
4
|
type NavSectionProps = PropsWithChildren & {
|
|
5
5
|
activeTab: number;
|
|
6
|
-
item: AppHeaderCatalogDropdownItem;
|
|
6
|
+
item: AppHeaderCatalogDropdownItem | AppHeaderResourcesDropdownItem;
|
|
7
7
|
setActiveTab: (tab: number) => void;
|
|
8
8
|
icon?: React.ComponentType<GamutIconProps>;
|
|
9
9
|
text: string;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import _styled from "@emotion/styled/base";
|
|
2
|
+
import { Box, FlexBox } from '@codecademy/gamut';
|
|
3
|
+
import { ArrowChevronRightIcon } from '@codecademy/gamut-icons';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { useGlobalHeaderItemClick } from '../../../GlobalHeader/context';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
7
|
+
const NavPanelContainer = /*#__PURE__*/_styled(Box, {
|
|
8
|
+
target: "ed97qwe1",
|
|
9
|
+
label: "NavPanelContainer"
|
|
10
|
+
})("display:", ({
|
|
11
|
+
isActive
|
|
12
|
+
}) => isActive ? 'block' : 'none', ";grid-column:2/span 12;grid-row:1/span 8;background-color:", ({
|
|
13
|
+
theme
|
|
14
|
+
}) => theme.colors.background, ";border-radius:", ({
|
|
15
|
+
isActive,
|
|
16
|
+
isFirst
|
|
17
|
+
}) => isActive && isFirst ? '0 8px 8px 8px' : '8px', ";padding:16px 32px 24px 32px;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyU2VjdGlvbi9OYXZTZWN0aW9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQjhFIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyU2VjdGlvbi9OYXZTZWN0aW9uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJveCwgRmxleEJveCB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IEFycm93Q2hldnJvblJpZ2h0SWNvbiwgR2FtdXRJY29uUHJvcHMgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgUmVhY3QsIHsgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZUdsb2JhbEhlYWRlckl0ZW1DbGljayB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbEhlYWRlci9jb250ZXh0JztcbmltcG9ydCB7XG4gIEFwcEhlYWRlckNhdGFsb2dEcm9wZG93bkl0ZW0sXG4gIEFwcEhlYWRlclJlc291cmNlc0Ryb3Bkb3duSXRlbSxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkJztcblxudHlwZSBOYXZTZWN0aW9uUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbiAmIHtcbiAgYWN0aXZlVGFiOiBudW1iZXI7XG4gIGl0ZW06IEFwcEhlYWRlckNhdGFsb2dEcm9wZG93bkl0ZW0gfCBBcHBIZWFkZXJSZXNvdXJjZXNEcm9wZG93bkl0ZW07XG4gIHNldEFjdGl2ZVRhYjogKHRhYjogbnVtYmVyKSA9PiB2b2lkO1xuICBpY29uPzogUmVhY3QuQ29tcG9uZW50VHlwZTxHYW11dEljb25Qcm9wcz47XG4gIHRleHQ6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG59O1xuXG5jb25zdCBOYXZQYW5lbENvbnRhaW5lciA9IHN0eWxlZChCb3gpPHsgaXNBY3RpdmU6IGJvb2xlYW47IGlzRmlyc3Q6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6ICR7KHsgaXNBY3RpdmUgfSkgPT4gKGlzQWN0aXZlID8gJ2Jsb2NrJyA6ICdub25lJyl9O1xuICBncmlkLWNvbHVtbjogMiAvIHNwYW4gMTI7XG4gIGdyaWQtcm93OiAxIC8gc3BhbiA4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5iYWNrZ3JvdW5kfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyBpc0FjdGl2ZSwgaXNGaXJzdCB9KSA9PlxuICAgIGlzQWN0aXZlICYmIGlzRmlyc3QgPyAnMCA4cHggOHB4IDhweCcgOiAnOHB4J307XG4gIHBhZGRpbmc6IDE2cHggMzJweCAyNHB4IDMycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRCdXR0b24gPSBzdHlsZWQuYnV0dG9uPHsgaXNBY3RpdmU6IGJvb2xlYW47IGluZGV4OiBudW1iZXIgfT5gXG4gIGdyaWQtY29sdW1uOiAxO1xuICBncmlkLXJvdzogJHsoeyBpbmRleCB9KSA9PiBpbmRleCArIDF9O1xuICBwYWRkaW5nOiAxNnB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgaXNBY3RpdmUgfSkgPT4gKGlzQWN0aXZlID8gJzhweCAwIDAgOHB4JyA6ICc4cHgnKX07XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSwgaXNBY3RpdmUgfSkgPT5cbiAgICBpc0FjdGl2ZSA/IHRoZW1lLmNvbG9ycy5wcmltYXJ5IDogdGhlbWUuY29sb3JzLnRleHR9O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB3aWR0aDogJHsoeyBpc0FjdGl2ZSB9KSA9PiAoaXNBY3RpdmUgPyAnMTAwJScgOiAnY2FsYygxMDAlIC0gOHB4KScpfTtcbiAgaGVpZ2h0OiA2MHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgaXNBY3RpdmUsIHRoZW1lIH0pID0+XG4gICAgaXNBY3RpdmUgPyB0aGVtZS5jb2xvcnMuYmFja2dyb3VuZCA6IHRoZW1lLmNvbG9yc1snZ3JheS0xMDAnXX07XG5cbiAgI2Fycm93LWNoZXZyb24tcmlnaHQtaWNvbiB7XG4gICAgZGlzcGxheTogJHsoeyBpc0FjdGl2ZSB9KSA9PiAoaXNBY3RpdmUgPyAnYmxvY2snIDogJ25vbmUnKX07XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lLCBpc0FjdGl2ZSB9KSA9PlxuICAgICAgaXNBY3RpdmUgPyB0aGVtZS5jb2xvcnMuYmFja2dyb3VuZCA6IHRoZW1lLmNvbG9yc1snbmF2eS0xMDAnXX07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnl9O1xuICB9XG5gO1xuXG5jb25zdCBOYXZTZWN0aW9uID0gKHtcbiAgYWN0aXZlVGFiLFxuICBzZXRBY3RpdmVUYWIsXG4gIGljb246IEljb24sXG4gIHRleHQsXG4gIGluZGV4LFxuICBjaGlsZHJlbixcbiAgaXRlbSxcbiAgdGFiSW5kZXgsXG59OiBOYXZTZWN0aW9uUHJvcHMpID0+IHtcbiAgY29uc3QgeyBnbG9iYWxIZWFkZXJJdGVtQ2xpY2sgfSA9IHVzZUdsb2JhbEhlYWRlckl0ZW1DbGljaygpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHlsZWRCdXR0b25cbiAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZVRhYiA9PT0gaW5kZXh9XG4gICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgZ2xvYmFsSGVhZGVySXRlbUNsaWNrKGV2ZW50LCBpdGVtKTtcbiAgICAgICAgICBzZXRBY3RpdmVUYWIoaW5kZXgpO1xuICAgICAgICB9fVxuICAgICAgICBkYXRhLXRlc3RpZD17YG5hdi1zZWN0aW9uLSR7aXRlbS5pZH1gfVxuICAgICAgICBhcmlhLWV4cGFuZGVkPXthY3RpdmVUYWIgPT09IGluZGV4fVxuICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICA+XG4gICAgICAgIDxGbGV4Qm94IGdhcD17OH0gYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICAgIHtJY29uICYmIDxJY29uIC8+fVxuICAgICAgICAgIHt0ZXh0fVxuICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgIDxBcnJvd0NoZXZyb25SaWdodEljb24gaWQ9XCJhcnJvdy1jaGV2cm9uLXJpZ2h0LWljb25cIiAvPlxuICAgICAgPC9TdHlsZWRCdXR0b24+XG5cbiAgICAgIDxOYXZQYW5lbENvbnRhaW5lciBpc0FjdGl2ZT17YWN0aXZlVGFiID09PSBpbmRleH0gaXNGaXJzdD17aW5kZXggPT09IDB9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L05hdlBhbmVsQ29udGFpbmVyPlxuICAgIDwvPlxuICApO1xufTtcbmV4cG9ydCBkZWZhdWx0IE5hdlNlY3Rpb247XG4iXX0= */"));
|
|
18
|
+
const StyledButton = /*#__PURE__*/_styled("button", {
|
|
19
|
+
target: "ed97qwe0",
|
|
20
|
+
label: "StyledButton"
|
|
21
|
+
})("grid-column:1;grid-row:", ({
|
|
22
|
+
index
|
|
23
|
+
}) => index + 1, ";padding:16px;border:none;border-radius:", ({
|
|
24
|
+
isActive
|
|
25
|
+
}) => isActive ? '8px 0 0 8px' : '8px', ";background:none;cursor:pointer;font-size:18px;font-weight:400;color:", ({
|
|
26
|
+
theme,
|
|
27
|
+
isActive
|
|
28
|
+
}) => isActive ? theme.colors.primary : theme.colors.text, ";text-align:left;width:", ({
|
|
29
|
+
isActive
|
|
30
|
+
}) => isActive ? '100%' : 'calc(100% - 8px)', ";height:60px;display:flex;justify-content:space-between;align-items:center;background-color:", ({
|
|
31
|
+
isActive,
|
|
32
|
+
theme
|
|
33
|
+
}) => isActive ? theme.colors.background : theme.colors['gray-100'], ";#arrow-chevron-right-icon{display:", ({
|
|
34
|
+
isActive
|
|
35
|
+
}) => isActive ? 'block' : 'none', ";}&:hover,&:focus{background-color:", ({
|
|
36
|
+
theme,
|
|
37
|
+
isActive
|
|
38
|
+
}) => isActive ? theme.colors.background : theme.colors['navy-100'], ";color:", ({
|
|
39
|
+
theme
|
|
40
|
+
}) => theme.colors.primary, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyU2VjdGlvbi9OYXZTZWN0aW9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQ3dFIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyU2VjdGlvbi9OYXZTZWN0aW9uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJveCwgRmxleEJveCB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IEFycm93Q2hldnJvblJpZ2h0SWNvbiwgR2FtdXRJY29uUHJvcHMgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgUmVhY3QsIHsgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZUdsb2JhbEhlYWRlckl0ZW1DbGljayB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbEhlYWRlci9jb250ZXh0JztcbmltcG9ydCB7XG4gIEFwcEhlYWRlckNhdGFsb2dEcm9wZG93bkl0ZW0sXG4gIEFwcEhlYWRlclJlc291cmNlc0Ryb3Bkb3duSXRlbSxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkJztcblxudHlwZSBOYXZTZWN0aW9uUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbiAmIHtcbiAgYWN0aXZlVGFiOiBudW1iZXI7XG4gIGl0ZW06IEFwcEhlYWRlckNhdGFsb2dEcm9wZG93bkl0ZW0gfCBBcHBIZWFkZXJSZXNvdXJjZXNEcm9wZG93bkl0ZW07XG4gIHNldEFjdGl2ZVRhYjogKHRhYjogbnVtYmVyKSA9PiB2b2lkO1xuICBpY29uPzogUmVhY3QuQ29tcG9uZW50VHlwZTxHYW11dEljb25Qcm9wcz47XG4gIHRleHQ6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG59O1xuXG5jb25zdCBOYXZQYW5lbENvbnRhaW5lciA9IHN0eWxlZChCb3gpPHsgaXNBY3RpdmU6IGJvb2xlYW47IGlzRmlyc3Q6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6ICR7KHsgaXNBY3RpdmUgfSkgPT4gKGlzQWN0aXZlID8gJ2Jsb2NrJyA6ICdub25lJyl9O1xuICBncmlkLWNvbHVtbjogMiAvIHNwYW4gMTI7XG4gIGdyaWQtcm93OiAxIC8gc3BhbiA4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5iYWNrZ3JvdW5kfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyBpc0FjdGl2ZSwgaXNGaXJzdCB9KSA9PlxuICAgIGlzQWN0aXZlICYmIGlzRmlyc3QgPyAnMCA4cHggOHB4IDhweCcgOiAnOHB4J307XG4gIHBhZGRpbmc6IDE2cHggMzJweCAyNHB4IDMycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRCdXR0b24gPSBzdHlsZWQuYnV0dG9uPHsgaXNBY3RpdmU6IGJvb2xlYW47IGluZGV4OiBudW1iZXIgfT5gXG4gIGdyaWQtY29sdW1uOiAxO1xuICBncmlkLXJvdzogJHsoeyBpbmRleCB9KSA9PiBpbmRleCArIDF9O1xuICBwYWRkaW5nOiAxNnB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgaXNBY3RpdmUgfSkgPT4gKGlzQWN0aXZlID8gJzhweCAwIDAgOHB4JyA6ICc4cHgnKX07XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSwgaXNBY3RpdmUgfSkgPT5cbiAgICBpc0FjdGl2ZSA/IHRoZW1lLmNvbG9ycy5wcmltYXJ5IDogdGhlbWUuY29sb3JzLnRleHR9O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB3aWR0aDogJHsoeyBpc0FjdGl2ZSB9KSA9PiAoaXNBY3RpdmUgPyAnMTAwJScgOiAnY2FsYygxMDAlIC0gOHB4KScpfTtcbiAgaGVpZ2h0OiA2MHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgaXNBY3RpdmUsIHRoZW1lIH0pID0+XG4gICAgaXNBY3RpdmUgPyB0aGVtZS5jb2xvcnMuYmFja2dyb3VuZCA6IHRoZW1lLmNvbG9yc1snZ3JheS0xMDAnXX07XG5cbiAgI2Fycm93LWNoZXZyb24tcmlnaHQtaWNvbiB7XG4gICAgZGlzcGxheTogJHsoeyBpc0FjdGl2ZSB9KSA9PiAoaXNBY3RpdmUgPyAnYmxvY2snIDogJ25vbmUnKX07XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lLCBpc0FjdGl2ZSB9KSA9PlxuICAgICAgaXNBY3RpdmUgPyB0aGVtZS5jb2xvcnMuYmFja2dyb3VuZCA6IHRoZW1lLmNvbG9yc1snbmF2eS0xMDAnXX07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnl9O1xuICB9XG5gO1xuXG5jb25zdCBOYXZTZWN0aW9uID0gKHtcbiAgYWN0aXZlVGFiLFxuICBzZXRBY3RpdmVUYWIsXG4gIGljb246IEljb24sXG4gIHRleHQsXG4gIGluZGV4LFxuICBjaGlsZHJlbixcbiAgaXRlbSxcbiAgdGFiSW5kZXgsXG59OiBOYXZTZWN0aW9uUHJvcHMpID0+IHtcbiAgY29uc3QgeyBnbG9iYWxIZWFkZXJJdGVtQ2xpY2sgfSA9IHVzZUdsb2JhbEhlYWRlckl0ZW1DbGljaygpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHlsZWRCdXR0b25cbiAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZVRhYiA9PT0gaW5kZXh9XG4gICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgZ2xvYmFsSGVhZGVySXRlbUNsaWNrKGV2ZW50LCBpdGVtKTtcbiAgICAgICAgICBzZXRBY3RpdmVUYWIoaW5kZXgpO1xuICAgICAgICB9fVxuICAgICAgICBkYXRhLXRlc3RpZD17YG5hdi1zZWN0aW9uLSR7aXRlbS5pZH1gfVxuICAgICAgICBhcmlhLWV4cGFuZGVkPXthY3RpdmVUYWIgPT09IGluZGV4fVxuICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICA+XG4gICAgICAgIDxGbGV4Qm94IGdhcD17OH0gYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICAgIHtJY29uICYmIDxJY29uIC8+fVxuICAgICAgICAgIHt0ZXh0fVxuICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgIDxBcnJvd0NoZXZyb25SaWdodEljb24gaWQ9XCJhcnJvdy1jaGV2cm9uLXJpZ2h0LWljb25cIiAvPlxuICAgICAgPC9TdHlsZWRCdXR0b24+XG5cbiAgICAgIDxOYXZQYW5lbENvbnRhaW5lciBpc0FjdGl2ZT17YWN0aXZlVGFiID09PSBpbmRleH0gaXNGaXJzdD17aW5kZXggPT09IDB9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L05hdlBhbmVsQ29udGFpbmVyPlxuICAgIDwvPlxuICApO1xufTtcbmV4cG9ydCBkZWZhdWx0IE5hdlNlY3Rpb247XG4iXX0= */"));
|
|
41
|
+
const NavSection = ({
|
|
42
|
+
activeTab,
|
|
43
|
+
setActiveTab,
|
|
44
|
+
icon: Icon,
|
|
45
|
+
text,
|
|
46
|
+
index,
|
|
47
|
+
children,
|
|
48
|
+
item,
|
|
49
|
+
tabIndex
|
|
50
|
+
}) => {
|
|
51
|
+
const {
|
|
52
|
+
globalHeaderItemClick
|
|
53
|
+
} = useGlobalHeaderItemClick();
|
|
54
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
55
|
+
children: [/*#__PURE__*/_jsxs(StyledButton, {
|
|
56
|
+
isActive: activeTab === index,
|
|
57
|
+
index: index,
|
|
58
|
+
onClick: event => {
|
|
59
|
+
globalHeaderItemClick(event, item);
|
|
60
|
+
setActiveTab(index);
|
|
61
|
+
},
|
|
62
|
+
"data-testid": `nav-section-${item.id}`,
|
|
63
|
+
"aria-expanded": activeTab === index,
|
|
64
|
+
tabIndex: tabIndex,
|
|
65
|
+
children: [/*#__PURE__*/_jsxs(FlexBox, {
|
|
66
|
+
gap: 8,
|
|
67
|
+
alignItems: "center",
|
|
68
|
+
children: [Icon && /*#__PURE__*/_jsx(Icon, {}), text]
|
|
69
|
+
}), /*#__PURE__*/_jsx(ArrowChevronRightIcon, {
|
|
70
|
+
id: "arrow-chevron-right-icon"
|
|
71
|
+
})]
|
|
72
|
+
}), /*#__PURE__*/_jsx(NavPanelContainer, {
|
|
73
|
+
isActive: activeTab === index,
|
|
74
|
+
isFirst: index === 0,
|
|
75
|
+
children: children
|
|
76
|
+
})]
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
export default NavSection;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PropsWithChildren, ReactNode } from 'react';
|
|
2
|
+
import { AppHeaderLinkItem } from '../../..';
|
|
3
|
+
type PanelLayoutProps = PropsWithChildren & {
|
|
4
|
+
heading: string;
|
|
5
|
+
description: ReactNode;
|
|
6
|
+
linkItem?: AppHeaderLinkItem;
|
|
7
|
+
tabIndex?: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const PanelLayout: ({ heading, description, linkItem, children, tabIndex, }: PanelLayoutProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Anchor, Box, FlexBox, Text } from '@codecademy/gamut';
|
|
2
|
+
import { MiniArrowRightIcon } from '@codecademy/gamut-icons';
|
|
3
|
+
import { useGlobalHeaderItemClick } from '../../../GlobalHeader/context';
|
|
4
|
+
import { useAppHeaderDropdownContext } from '../AppHeaderDropdownProvider';
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
export const PanelLayout = ({
|
|
7
|
+
heading,
|
|
8
|
+
description,
|
|
9
|
+
linkItem,
|
|
10
|
+
children,
|
|
11
|
+
tabIndex = 0
|
|
12
|
+
}) => {
|
|
13
|
+
const {
|
|
14
|
+
globalHeaderItemClick
|
|
15
|
+
} = useGlobalHeaderItemClick();
|
|
16
|
+
const {
|
|
17
|
+
handleClose
|
|
18
|
+
} = useAppHeaderDropdownContext();
|
|
19
|
+
return /*#__PURE__*/_jsxs(FlexBox, {
|
|
20
|
+
flexDirection: "column",
|
|
21
|
+
gap: 24,
|
|
22
|
+
pr: {
|
|
23
|
+
_: 32,
|
|
24
|
+
md: 16,
|
|
25
|
+
lg: 0
|
|
26
|
+
},
|
|
27
|
+
children: [/*#__PURE__*/_jsxs(Box, {
|
|
28
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
29
|
+
as: "h2",
|
|
30
|
+
variant: "title-sm",
|
|
31
|
+
children: heading
|
|
32
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
33
|
+
mt: 8,
|
|
34
|
+
children: description
|
|
35
|
+
})]
|
|
36
|
+
}), children, linkItem && /*#__PURE__*/_jsx(FlexBox, {
|
|
37
|
+
justifyContent: "center",
|
|
38
|
+
children: /*#__PURE__*/_jsx(Anchor, {
|
|
39
|
+
href: linkItem.href,
|
|
40
|
+
onClick: event => {
|
|
41
|
+
globalHeaderItemClick(event, linkItem);
|
|
42
|
+
handleClose();
|
|
43
|
+
},
|
|
44
|
+
tabIndex: tabIndex,
|
|
45
|
+
variant: "standard",
|
|
46
|
+
children: /*#__PURE__*/_jsxs(FlexBox, {
|
|
47
|
+
alignItems: "center",
|
|
48
|
+
gap: 8,
|
|
49
|
+
children: [linkItem.text, " ", /*#__PURE__*/_jsx(MiniArrowRightIcon, {})]
|
|
50
|
+
})
|
|
51
|
+
})
|
|
52
|
+
})]
|
|
53
|
+
});
|
|
54
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React, { RefObject } from 'react';
|
|
2
|
+
import { AppHeaderCatalogDropdownItem, AppHeaderResourcesDropdownItem } from '../../shared';
|
|
3
|
+
export type AppHeaderSectionProps = {
|
|
4
|
+
isOpen?: boolean;
|
|
5
|
+
keyDownEvents?: (event: React.KeyboardEvent) => void;
|
|
6
|
+
ref?: RefObject<HTMLDivElement>;
|
|
7
|
+
navSections: {
|
|
8
|
+
item: AppHeaderCatalogDropdownItem | AppHeaderResourcesDropdownItem;
|
|
9
|
+
panel: React.ComponentType<{
|
|
10
|
+
tabIndex?: number;
|
|
11
|
+
}>;
|
|
12
|
+
}[];
|
|
13
|
+
MarketingBanner?: ({ tabIndex }: {
|
|
14
|
+
tabIndex: number;
|
|
15
|
+
}) => JSX.Element;
|
|
16
|
+
};
|
|
17
|
+
export declare const AppHeaderSection: React.ForwardRefExoticComponent<Omit<AppHeaderSectionProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|