@artistanbul/frontend-component-header-sumac 1.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 (165) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +93 -0
  3. package/README.rst +193 -0
  4. package/dist/Avatar.js +43 -0
  5. package/dist/Avatar.js.map +1 -0
  6. package/dist/Header.js +130 -0
  7. package/dist/Header.js.map +1 -0
  8. package/dist/Header.messages.js +110 -0
  9. package/dist/Header.messages.js.map +1 -0
  10. package/dist/Header.test.jsx +104 -0
  11. package/dist/Icons.js +52 -0
  12. package/dist/Icons.js.map +1 -0
  13. package/dist/Logo.js +28 -0
  14. package/dist/Logo.js.map +1 -0
  15. package/dist/Menu/Menu.js +321 -0
  16. package/dist/Menu/Menu.js.map +1 -0
  17. package/dist/Menu/index.js +3 -0
  18. package/dist/Menu/index.js.map +1 -0
  19. package/dist/Menu/menu.scss +45 -0
  20. package/dist/__snapshots__/Header.test.jsx.snap +445 -0
  21. package/dist/desktop-header/DesktopHeader.js +174 -0
  22. package/dist/desktop-header/DesktopHeader.js.map +1 -0
  23. package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js +51 -0
  24. package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js.map +1 -0
  25. package/dist/desktop-header/DesktopHeaderUserMenu.js +49 -0
  26. package/dist/desktop-header/DesktopHeaderUserMenu.js.map +1 -0
  27. package/dist/desktop-header/DesktopLoggedOutItems.js +22 -0
  28. package/dist/desktop-header/DesktopLoggedOutItems.js.map +1 -0
  29. package/dist/generic/messages.js +15 -0
  30. package/dist/generic/messages.js.map +1 -0
  31. package/dist/i18n/index.js +2 -0
  32. package/dist/i18n/index.js.map +1 -0
  33. package/dist/images/omnikampus/artistanbul-logo.png +0 -0
  34. package/dist/images/omnikampus/omnikampus-just-logo.png +0 -0
  35. package/dist/images/omnikampus/omnikampus-logo.png +0 -0
  36. package/dist/index.js +73 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/index.scss +248 -0
  39. package/dist/learning-header/AnonymousUserMenu.js +25 -0
  40. package/dist/learning-header/AnonymousUserMenu.js.map +1 -0
  41. package/dist/learning-header/AuthenticatedUserDropdown.js +57 -0
  42. package/dist/learning-header/AuthenticatedUserDropdown.js.map +1 -0
  43. package/dist/learning-header/LearningHeader.js +61 -0
  44. package/dist/learning-header/LearningHeader.js.map +1 -0
  45. package/dist/learning-header/LearningHeaderCourseInfo.js +24 -0
  46. package/dist/learning-header/LearningHeaderCourseInfo.js.map +1 -0
  47. package/dist/learning-header/LearningHeaderHelpLink.js +13 -0
  48. package/dist/learning-header/LearningHeaderHelpLink.js.map +1 -0
  49. package/dist/learning-header/LearningHeaderUserMenuItems.js +20 -0
  50. package/dist/learning-header/LearningHeaderUserMenuItems.js.map +1 -0
  51. package/dist/learning-header/LearningLoggedOutButtons.js +24 -0
  52. package/dist/learning-header/LearningLoggedOutButtons.js.map +1 -0
  53. package/dist/learning-header/messages.js +40 -0
  54. package/dist/learning-header/messages.js.map +1 -0
  55. package/dist/mobile-header/MobileHeader.js +192 -0
  56. package/dist/mobile-header/MobileHeader.js.map +1 -0
  57. package/dist/mobile-header/MobileHeaderMainMenu.js +46 -0
  58. package/dist/mobile-header/MobileHeaderMainMenu.js.map +1 -0
  59. package/dist/mobile-header/MobileHeaderUserMenu.js +38 -0
  60. package/dist/mobile-header/MobileHeaderUserMenu.js.map +1 -0
  61. package/dist/mobile-header/MobileLoggedOutItems.js +27 -0
  62. package/dist/mobile-header/MobileLoggedOutItems.js.map +1 -0
  63. package/dist/plugin-slots/CourseInfoSlot/README.md +125 -0
  64. package/dist/plugin-slots/CourseInfoSlot/images/add_custom_components_before_and_after_course_info.png +0 -0
  65. package/dist/plugin-slots/CourseInfoSlot/images/replace_course_info_with_custom_component.png +0 -0
  66. package/dist/plugin-slots/CourseInfoSlot/images/replace_course_title.png +0 -0
  67. package/dist/plugin-slots/CourseInfoSlot/index.js +31 -0
  68. package/dist/plugin-slots/CourseInfoSlot/index.js.map +1 -0
  69. package/dist/plugin-slots/DesktopHeaderSlot/README.md +41 -0
  70. package/dist/plugin-slots/DesktopHeaderSlot/images/desktop_header_custom_component.png +0 -0
  71. package/dist/plugin-slots/DesktopHeaderSlot/index.js +15 -0
  72. package/dist/plugin-slots/DesktopHeaderSlot/index.js.map +1 -0
  73. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/README.md +134 -0
  74. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_component.png +0 -0
  75. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_components_before_after.png +0 -0
  76. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_modify_items.png +0 -0
  77. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js +19 -0
  78. package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js.map +1 -0
  79. package/dist/plugin-slots/DesktopMainMenuSlot/README.md +134 -0
  80. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_component.png +0 -0
  81. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_components_before_after.png +0 -0
  82. package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_modify_items.png +0 -0
  83. package/dist/plugin-slots/DesktopMainMenuSlot/index.js +19 -0
  84. package/dist/plugin-slots/DesktopMainMenuSlot/index.js.map +1 -0
  85. package/dist/plugin-slots/DesktopSecondaryMenuSlot/README.md +129 -0
  86. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_component.png +0 -0
  87. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_components_before_after.png +0 -0
  88. package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_modify_items.png +0 -0
  89. package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js +19 -0
  90. package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js.map +1 -0
  91. package/dist/plugin-slots/DesktopUserMenuSlot/README.md +141 -0
  92. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_component.png +0 -0
  93. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_components_before_after.png +0 -0
  94. package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_modify_items.png +0 -0
  95. package/dist/plugin-slots/DesktopUserMenuSlot/index.js +19 -0
  96. package/dist/plugin-slots/DesktopUserMenuSlot/index.js.map +1 -0
  97. package/dist/plugin-slots/LearningHelpSlot/README.md +41 -0
  98. package/dist/plugin-slots/LearningHelpSlot/images/learning_help_custom_component.png +0 -0
  99. package/dist/plugin-slots/LearningHelpSlot/index.js +10 -0
  100. package/dist/plugin-slots/LearningHelpSlot/index.js.map +1 -0
  101. package/dist/plugin-slots/LearningLoggedOutItemsSlot/README.md +132 -0
  102. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_component.png +0 -0
  103. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_components_before_after.png +0 -0
  104. package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_modified_items.png +0 -0
  105. package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js +17 -0
  106. package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js.map +1 -0
  107. package/dist/plugin-slots/LearningUserMenuSlot/README.md +130 -0
  108. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_component.png +0 -0
  109. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_components_before_after.png +0 -0
  110. package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_modified_items.png +0 -0
  111. package/dist/plugin-slots/LearningUserMenuSlot/index.js +17 -0
  112. package/dist/plugin-slots/LearningUserMenuSlot/index.js.map +1 -0
  113. package/dist/plugin-slots/LogoSlot/README.md +69 -0
  114. package/dist/plugin-slots/LogoSlot/index.js +26 -0
  115. package/dist/plugin-slots/LogoSlot/index.js.map +1 -0
  116. package/dist/plugin-slots/MobileHeaderSlot/README.md +41 -0
  117. package/dist/plugin-slots/MobileHeaderSlot/images/mobile_header_custom_component.png +0 -0
  118. package/dist/plugin-slots/MobileHeaderSlot/index.js +15 -0
  119. package/dist/plugin-slots/MobileHeaderSlot/index.js.map +1 -0
  120. package/dist/plugin-slots/MobileLoggedOutItemsSlot/README.md +134 -0
  121. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_component.png +0 -0
  122. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_components_before_after.png +0 -0
  123. package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_modify_items.png +0 -0
  124. package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js +19 -0
  125. package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js.map +1 -0
  126. package/dist/plugin-slots/MobileMainMenuSlot/README.md +134 -0
  127. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_component.png +0 -0
  128. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_components_before_after.png +0 -0
  129. package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_modify_items.png +0 -0
  130. package/dist/plugin-slots/MobileMainMenuSlot/index.js +19 -0
  131. package/dist/plugin-slots/MobileMainMenuSlot/index.js.map +1 -0
  132. package/dist/plugin-slots/MobileUserMenuSlot/README.md +142 -0
  133. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_component.png +0 -0
  134. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_components_before_after.png +0 -0
  135. package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_modify_items.png +0 -0
  136. package/dist/plugin-slots/MobileUserMenuSlot/index.js +19 -0
  137. package/dist/plugin-slots/MobileUserMenuSlot/index.js.map +1 -0
  138. package/dist/plugin-slots/README.md +15 -0
  139. package/dist/setupTest.js +125 -0
  140. package/dist/studio-header/BrandNav.js +24 -0
  141. package/dist/studio-header/BrandNav.js.map +1 -0
  142. package/dist/studio-header/CourseLockUp.js +46 -0
  143. package/dist/studio-header/CourseLockUp.js.map +1 -0
  144. package/dist/studio-header/HeaderBody.js +143 -0
  145. package/dist/studio-header/HeaderBody.js.map +1 -0
  146. package/dist/studio-header/MobileHeader.js +79 -0
  147. package/dist/studio-header/MobileHeader.js.map +1 -0
  148. package/dist/studio-header/MobileMenu.js +46 -0
  149. package/dist/studio-header/MobileMenu.js.map +1 -0
  150. package/dist/studio-header/NavDropdownMenu.js +32 -0
  151. package/dist/studio-header/NavDropdownMenu.js.map +1 -0
  152. package/dist/studio-header/StudioHeader.js +79 -0
  153. package/dist/studio-header/StudioHeader.js.map +1 -0
  154. package/dist/studio-header/StudioHeader.scss +49 -0
  155. package/dist/studio-header/UserMenu.js +55 -0
  156. package/dist/studio-header/UserMenu.js.map +1 -0
  157. package/dist/studio-header/index.js +3 -0
  158. package/dist/studio-header/index.js.map +1 -0
  159. package/dist/studio-header/messages.js +55 -0
  160. package/dist/studio-header/messages.js.map +1 -0
  161. package/dist/studio-header/utils.js +26 -0
  162. package/dist/studio-header/utils.js.map +1 -0
  163. package/dist/test-utils.js +26 -0
  164. package/dist/test-utils.js.map +1 -0
  165. package/package.json +79 -0
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Menu, MenuTrigger, MenuContent } from '../Menu';
4
+ import { CaretIcon } from '../Icons';
5
+ var DesktopHeaderMainOrSecondaryMenu = function DesktopHeaderMainOrSecondaryMenu(_ref) {
6
+ var menu = _ref.menu;
7
+ // Nodes are accepted as a prop
8
+ if (!Array.isArray(menu)) {
9
+ return menu;
10
+ }
11
+ return menu.map(function (menuItem) {
12
+ var type = menuItem.type,
13
+ href = menuItem.href,
14
+ content = menuItem.content,
15
+ submenuContent = menuItem.submenuContent,
16
+ disabled = menuItem.disabled,
17
+ isActive = menuItem.isActive,
18
+ onClick = menuItem.onClick;
19
+ if (type === 'item') {
20
+ return /*#__PURE__*/React.createElement("a", {
21
+ key: "".concat(type, "-").concat(content),
22
+ className: "nav-link".concat(disabled ? ' disabled' : '').concat(isActive ? ' active' : ''),
23
+ href: href,
24
+ onClick: onClick || null
25
+ }, content);
26
+ }
27
+ return /*#__PURE__*/React.createElement(Menu, {
28
+ key: "".concat(type, "-").concat(content),
29
+ tag: "div",
30
+ className: "nav-item",
31
+ respondToPointerEvents: true
32
+ }, /*#__PURE__*/React.createElement(MenuTrigger, {
33
+ onClick: onClick || null,
34
+ tag: "a",
35
+ className: "nav-link d-inline-flex align-items-center",
36
+ href: href
37
+ }, content, " ", /*#__PURE__*/React.createElement(CaretIcon, {
38
+ role: "img",
39
+ "aria-hidden": true,
40
+ focusable: "false"
41
+ })), /*#__PURE__*/React.createElement(MenuContent, {
42
+ className: "pin-left pin-right shadow py-2"
43
+ }, submenuContent));
44
+ });
45
+ };
46
+ export var desktopHeaderMainOrSecondaryMenuDataShape = PropTypes.oneOfType([PropTypes.node, PropTypes.array]);
47
+ DesktopHeaderMainOrSecondaryMenu.propTypes = {
48
+ menu: desktopHeaderMainOrSecondaryMenuDataShape
49
+ };
50
+ export default DesktopHeaderMainOrSecondaryMenu;
51
+ //# sourceMappingURL=DesktopHeaderMainOrSecondaryMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesktopHeaderMainOrSecondaryMenu.js","names":["React","PropTypes","Menu","MenuTrigger","MenuContent","CaretIcon","DesktopHeaderMainOrSecondaryMenu","_ref","menu","Array","isArray","map","menuItem","type","href","content","submenuContent","disabled","isActive","onClick","createElement","key","concat","className","tag","respondToPointerEvents","role","focusable","desktopHeaderMainOrSecondaryMenuDataShape","oneOfType","node","array","propTypes"],"sources":["../../src/desktop-header/DesktopHeaderMainOrSecondaryMenu.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Menu, MenuTrigger, MenuContent } from '../Menu';\nimport { CaretIcon } from '../Icons';\n\nconst DesktopHeaderMainOrSecondaryMenu = ({ menu }) => {\n // Nodes are accepted as a prop\n if (!Array.isArray(menu)) {\n return menu;\n }\n\n return menu.map((menuItem) => {\n const {\n type,\n href,\n content,\n submenuContent,\n disabled,\n isActive,\n onClick,\n } = menuItem;\n\n if (type === 'item') {\n return (\n <a\n key={`${type}-${content}`}\n className={`nav-link${disabled ? ' disabled' : ''}${isActive ? ' active' : ''}`}\n href={href}\n onClick={onClick || null}\n >\n {content}\n </a>\n );\n }\n\n return (\n <Menu key={`${type}-${content}`} tag=\"div\" className=\"nav-item\" respondToPointerEvents>\n <MenuTrigger onClick={onClick || null} tag=\"a\" className=\"nav-link d-inline-flex align-items-center\" href={href}>\n {content} <CaretIcon role=\"img\" aria-hidden focusable=\"false\" />\n </MenuTrigger>\n <MenuContent className=\"pin-left pin-right shadow py-2\">\n {submenuContent}\n </MenuContent>\n </Menu>\n );\n });\n};\n\nexport const desktopHeaderMainOrSecondaryMenuDataShape = PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.array,\n]);\n\nDesktopHeaderMainOrSecondaryMenu.propTypes = {\n menu: desktopHeaderMainOrSecondaryMenuDataShape,\n};\n\nexport default DesktopHeaderMainOrSecondaryMenu;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAElC,SAASC,IAAI,EAAEC,WAAW,EAAEC,WAAW,QAAQ,SAAS;AACxD,SAASC,SAAS,QAAQ,UAAU;AAEpC,IAAMC,gCAAgC,GAAG,SAAnCA,gCAAgCA,CAAAC,IAAA,EAAiB;EAAA,IAAXC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAC9C;EACA,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,IAAI,CAAC,EAAE;IACxB,OAAOA,IAAI;EACb;EAEA,OAAOA,IAAI,CAACG,GAAG,CAAC,UAACC,QAAQ,EAAK;IAC5B,IACEC,IAAI,GAOFD,QAAQ,CAPVC,IAAI;MACJC,IAAI,GAMFF,QAAQ,CANVE,IAAI;MACJC,OAAO,GAKLH,QAAQ,CALVG,OAAO;MACPC,cAAc,GAIZJ,QAAQ,CAJVI,cAAc;MACdC,QAAQ,GAGNL,QAAQ,CAHVK,QAAQ;MACRC,QAAQ,GAENN,QAAQ,CAFVM,QAAQ;MACRC,OAAO,GACLP,QAAQ,CADVO,OAAO;IAGT,IAAIN,IAAI,KAAK,MAAM,EAAE;MACnB,oBACEb,KAAA,CAAAoB,aAAA;QACEC,GAAG,KAAAC,MAAA,CAAKT,IAAI,OAAAS,MAAA,CAAIP,OAAO,CAAG;QAC1BQ,SAAS,aAAAD,MAAA,CAAaL,QAAQ,GAAG,WAAW,GAAG,EAAE,EAAAK,MAAA,CAAGJ,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAG;QAChFJ,IAAI,EAAEA,IAAK;QACXK,OAAO,EAAEA,OAAO,IAAI;MAAK,GAExBJ,OACA,CAAC;IAER;IAEA,oBACEf,KAAA,CAAAoB,aAAA,CAAClB,IAAI;MAACmB,GAAG,KAAAC,MAAA,CAAKT,IAAI,OAAAS,MAAA,CAAIP,OAAO,CAAG;MAACS,GAAG,EAAC,KAAK;MAACD,SAAS,EAAC,UAAU;MAACE,sBAAsB;IAAA,gBACpFzB,KAAA,CAAAoB,aAAA,CAACjB,WAAW;MAACgB,OAAO,EAAEA,OAAO,IAAI,IAAK;MAACK,GAAG,EAAC,GAAG;MAACD,SAAS,EAAC,2CAA2C;MAACT,IAAI,EAAEA;IAAK,GAC7GC,OAAO,EAAC,GAAC,eAAAf,KAAA,CAAAoB,aAAA,CAACf,SAAS;MAACqB,IAAI,EAAC,KAAK;MAAC,mBAAW;MAACC,SAAS,EAAC;IAAO,CAAE,CACpD,CAAC,eACd3B,KAAA,CAAAoB,aAAA,CAAChB,WAAW;MAACmB,SAAS,EAAC;IAAgC,GACpDP,cACU,CACT,CAAC;EAEX,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,IAAMY,yCAAyC,GAAG3B,SAAS,CAAC4B,SAAS,CAAC,CAC3E5B,SAAS,CAAC6B,IAAI,EACd7B,SAAS,CAAC8B,KAAK,CAChB,CAAC;AAEFzB,gCAAgC,CAAC0B,SAAS,GAAG;EAC3CxB,IAAI,EAAEoB;AACR,CAAC;AAED,eAAetB,gCAAgC","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ var DesktopHeaderUserMenu = function DesktopHeaderUserMenu(_ref) {
4
+ var menu = _ref.menu;
5
+ return menu.map(function (group, index) {
6
+ return (
7
+ /*#__PURE__*/
8
+ // eslint-disable-next-line react/jsx-no-comment-textnodes,react/no-array-index-key
9
+ React.createElement(React.Fragment, {
10
+ key: index
11
+ }, group.heading && /*#__PURE__*/React.createElement("div", {
12
+ className: "dropdown-header",
13
+ role: "heading",
14
+ "aria-level": "1"
15
+ }, group.heading), group.items.map(function (_ref2) {
16
+ var type = _ref2.type,
17
+ content = _ref2.content,
18
+ href = _ref2.href,
19
+ disabled = _ref2.disabled,
20
+ isActive = _ref2.isActive,
21
+ onClick = _ref2.onClick;
22
+ return /*#__PURE__*/React.createElement("a", {
23
+ className: "dropdown-".concat(type).concat(isActive ? ' active' : '').concat(disabled ? ' disabled' : ''),
24
+ key: "".concat(type, "-").concat(content),
25
+ href: href,
26
+ onClick: onClick || null
27
+ }, content);
28
+ }), index < menu.length - 1 && /*#__PURE__*/React.createElement("div", {
29
+ className: "dropdown-divider",
30
+ role: "separator"
31
+ }))
32
+ );
33
+ });
34
+ };
35
+ export var desktopUserMenuDataShape = PropTypes.arrayOf(PropTypes.shape({
36
+ heading: PropTypes.string,
37
+ items: PropTypes.arrayOf(PropTypes.shape({
38
+ type: PropTypes.oneOf(['item', 'menu']),
39
+ href: PropTypes.string,
40
+ content: PropTypes.string,
41
+ isActive: PropTypes.bool,
42
+ onClick: PropTypes.func
43
+ }))
44
+ }));
45
+ DesktopHeaderUserMenu.propTypes = {
46
+ menu: desktopUserMenuDataShape
47
+ };
48
+ export default DesktopHeaderUserMenu;
49
+ //# sourceMappingURL=DesktopHeaderUserMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesktopHeaderUserMenu.js","names":["React","PropTypes","DesktopHeaderUserMenu","_ref","menu","map","group","index","createElement","Fragment","key","heading","className","role","items","_ref2","type","content","href","disabled","isActive","onClick","concat","length","desktopUserMenuDataShape","arrayOf","shape","string","oneOf","bool","func","propTypes"],"sources":["../../src/desktop-header/DesktopHeaderUserMenu.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst DesktopHeaderUserMenu = ({ menu }) => menu.map((group, index) => (\n // eslint-disable-next-line react/jsx-no-comment-textnodes,react/no-array-index-key\n <React.Fragment key={index}>\n {group.heading && <div className=\"dropdown-header\" role=\"heading\" aria-level=\"1\">{group.heading}</div>}\n {group.items.map(({\n type, content, href, disabled, isActive, onClick,\n }) => (\n <a\n className={`dropdown-${type}${isActive ? ' active' : ''}${disabled ? ' disabled' : ''}`}\n key={`${type}-${content}`}\n href={href}\n onClick={onClick || null}\n >\n {content}\n </a>\n ))}\n {index < menu.length - 1 && <div className=\"dropdown-divider\" role=\"separator\" />}\n </React.Fragment>\n));\n\nexport const desktopUserMenuDataShape = PropTypes.arrayOf(PropTypes.shape({\n heading: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({\n type: PropTypes.oneOf(['item', 'menu']),\n href: PropTypes.string,\n content: PropTypes.string,\n isActive: PropTypes.bool,\n onClick: PropTypes.func,\n })),\n}));\n\nDesktopHeaderUserMenu.propTypes = {\n menu: desktopUserMenuDataShape,\n};\n\nexport default DesktopHeaderUserMenu;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAElC,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAAC,IAAA;EAAA,IAAMC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAAA,OAAOA,IAAI,CAACC,GAAG,CAAC,UAACC,KAAK,EAAEC,KAAK;IAAA;MAAA;MAChE;MACAP,KAAA,CAAAQ,aAAA,CAACR,KAAK,CAACS,QAAQ;QAACC,GAAG,EAAEH;MAAM,GACxBD,KAAK,CAACK,OAAO,iBAAIX,KAAA,CAAAQ,aAAA;QAAKI,SAAS,EAAC,iBAAiB;QAACC,IAAI,EAAC,SAAS;QAAC,cAAW;MAAG,GAAEP,KAAK,CAACK,OAAa,CAAC,EACrGL,KAAK,CAACQ,KAAK,CAACT,GAAG,CAAC,UAAAU,KAAA;QAAA,IACfC,IAAI,GAAAD,KAAA,CAAJC,IAAI;UAAEC,OAAO,GAAAF,KAAA,CAAPE,OAAO;UAAEC,IAAI,GAAAH,KAAA,CAAJG,IAAI;UAAEC,QAAQ,GAAAJ,KAAA,CAARI,QAAQ;UAAEC,QAAQ,GAAAL,KAAA,CAARK,QAAQ;UAAEC,OAAO,GAAAN,KAAA,CAAPM,OAAO;QAAA,oBAEhDrB,KAAA,CAAAQ,aAAA;UACEI,SAAS,cAAAU,MAAA,CAAcN,IAAI,EAAAM,MAAA,CAAGF,QAAQ,GAAG,SAAS,GAAG,EAAE,EAAAE,MAAA,CAAGH,QAAQ,GAAG,WAAW,GAAG,EAAE,CAAG;UACxFT,GAAG,KAAAY,MAAA,CAAKN,IAAI,OAAAM,MAAA,CAAIL,OAAO,CAAG;UAC1BC,IAAI,EAAEA,IAAK;UACXG,OAAO,EAAEA,OAAO,IAAI;QAAK,GAExBJ,OACA,CAAC;MAAA,CACL,CAAC,EACDV,KAAK,GAAGH,IAAI,CAACmB,MAAM,GAAG,CAAC,iBAAIvB,KAAA,CAAAQ,aAAA;QAAKI,SAAS,EAAC,kBAAkB;QAACC,IAAI,EAAC;MAAW,CAAE,CAClE;IAAC;EAAA,CAClB,CAAC;AAAA;AAEF,OAAO,IAAMW,wBAAwB,GAAGvB,SAAS,CAACwB,OAAO,CAACxB,SAAS,CAACyB,KAAK,CAAC;EACxEf,OAAO,EAAEV,SAAS,CAAC0B,MAAM;EACzBb,KAAK,EAAEb,SAAS,CAACwB,OAAO,CAACxB,SAAS,CAACyB,KAAK,CAAC;IACvCV,IAAI,EAAEf,SAAS,CAAC2B,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvCV,IAAI,EAAEjB,SAAS,CAAC0B,MAAM;IACtBV,OAAO,EAAEhB,SAAS,CAAC0B,MAAM;IACzBP,QAAQ,EAAEnB,SAAS,CAAC4B,IAAI;IACxBR,OAAO,EAAEpB,SAAS,CAAC6B;EACrB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH5B,qBAAqB,CAAC6B,SAAS,GAAG;EAChC3B,IAAI,EAAEoB;AACR,CAAC;AAED,eAAetB,qBAAqB","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ var DesktopLoggedOutItems = function DesktopLoggedOutItems(_ref) {
4
+ var items = _ref.items;
5
+ return items.map(function (item, i, arr) {
6
+ return /*#__PURE__*/React.createElement("a", {
7
+ key: "".concat(item.type, "-").concat(item.content),
8
+ className: i < arr.length - 1 ? 'btn mr-2 btn-link' : 'btn mr-2 btn-outline-primary',
9
+ href: item.href
10
+ }, item.content);
11
+ });
12
+ };
13
+ export var desktopLoggedOutItemsDataShape = PropTypes.arrayOf(PropTypes.shape({
14
+ type: PropTypes.oneOf(['item', 'menu']),
15
+ href: PropTypes.string,
16
+ content: PropTypes.string
17
+ }));
18
+ DesktopLoggedOutItems.propTypes = {
19
+ items: desktopLoggedOutItemsDataShape
20
+ };
21
+ export default DesktopLoggedOutItems;
22
+ //# sourceMappingURL=DesktopLoggedOutItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesktopLoggedOutItems.js","names":["React","PropTypes","DesktopLoggedOutItems","_ref","items","map","item","i","arr","createElement","key","concat","type","content","className","length","href","desktopLoggedOutItemsDataShape","arrayOf","shape","oneOf","string","propTypes"],"sources":["../../src/desktop-header/DesktopLoggedOutItems.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst DesktopLoggedOutItems = ({ items }) => items.map((item, i, arr) => (\n <a\n key={`${item.type}-${item.content}`}\n className={i < arr.length - 1 ? 'btn mr-2 btn-link' : 'btn mr-2 btn-outline-primary'}\n href={item.href}\n >\n {item.content}\n </a>\n));\n\nexport const desktopLoggedOutItemsDataShape = PropTypes.arrayOf(PropTypes.shape({\n type: PropTypes.oneOf(['item', 'menu']),\n href: PropTypes.string,\n content: PropTypes.string,\n}));\n\nDesktopLoggedOutItems.propTypes = {\n items: desktopLoggedOutItemsDataShape,\n};\n\nexport default DesktopLoggedOutItems;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAElC,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAAC,IAAA;EAAA,IAAMC,KAAK,GAAAD,IAAA,CAALC,KAAK;EAAA,OAAOA,KAAK,CAACC,GAAG,CAAC,UAACC,IAAI,EAAEC,CAAC,EAAEC,GAAG;IAAA,oBAClER,KAAA,CAAAS,aAAA;MACEC,GAAG,KAAAC,MAAA,CAAKL,IAAI,CAACM,IAAI,OAAAD,MAAA,CAAIL,IAAI,CAACO,OAAO,CAAG;MACpCC,SAAS,EAAEP,CAAC,GAAGC,GAAG,CAACO,MAAM,GAAG,CAAC,GAAG,mBAAmB,GAAG,8BAA+B;MACrFC,IAAI,EAAEV,IAAI,CAACU;IAAK,GAEfV,IAAI,CAACO,OACL,CAAC;EAAA,CACL,CAAC;AAAA;AAEF,OAAO,IAAMI,8BAA8B,GAAGhB,SAAS,CAACiB,OAAO,CAACjB,SAAS,CAACkB,KAAK,CAAC;EAC9EP,IAAI,EAAEX,SAAS,CAACmB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EACvCJ,IAAI,EAAEf,SAAS,CAACoB,MAAM;EACtBR,OAAO,EAAEZ,SAAS,CAACoB;AACrB,CAAC,CAAC,CAAC;AAEHnB,qBAAqB,CAACoB,SAAS,GAAG;EAChClB,KAAK,EAAEa;AACT,CAAC;AAED,eAAef,qBAAqB","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import { defineMessages } from '@edx/frontend-platform/i18n';
2
+ var messages = defineMessages({
3
+ registerSentenceCase: {
4
+ id: 'general.register.sentenceCase',
5
+ defaultMessage: 'Register',
6
+ description: 'Text in a button, prompting the user to register.'
7
+ },
8
+ signInSentenceCase: {
9
+ id: 'general.signIn.sentenceCase',
10
+ defaultMessage: 'Sign in',
11
+ description: 'Text in a button, prompting the user to log in.'
12
+ }
13
+ });
14
+ export default messages;
15
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","names":["defineMessages","messages","registerSentenceCase","id","defaultMessage","description","signInSentenceCase"],"sources":["../../src/generic/messages.js"],"sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n registerSentenceCase: {\n id: 'general.register.sentenceCase',\n defaultMessage: 'Register',\n description: 'Text in a button, prompting the user to register.',\n },\n signInSentenceCase: {\n id: 'general.signIn.sentenceCase',\n defaultMessage: 'Sign in',\n description: 'Text in a button, prompting the user to log in.',\n },\n});\n\nexport default messages;\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,6BAA6B;AAE5D,IAAMC,QAAQ,GAAGD,cAAc,CAAC;EAC9BE,oBAAoB,EAAE;IACpBC,EAAE,EAAE,+BAA+B;IACnCC,cAAc,EAAE,UAAU;IAC1BC,WAAW,EAAE;EACf,CAAC;EACDC,kBAAkB,EAAE;IAClBH,EAAE,EAAE,6BAA6B;IACjCC,cAAc,EAAE,SAAS;IACzBC,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAEF,eAAeJ,QAAQ","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export default {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/i18n/index.js"],"sourcesContent":["export default {};\n"],"mappings":"AAAA,eAAe,CAAC,CAAC","ignoreList":[]}
package/dist/index.js ADDED
@@ -0,0 +1,73 @@
1
+ import 'babel-polyfill';
2
+ import React from 'react';
3
+ import ReactDOM from 'react-dom';
4
+ import { initialize, getConfig, subscribe, APP_READY } from '@edx/frontend-platform';
5
+ import { AppContext, AppProvider } from '@edx/frontend-platform/react';
6
+ import Header from './Header';
7
+ import LearningHeader from "./learning-header/LearningHeader";
8
+ import './index.scss';
9
+ import StudioHeader from './studio-header/StudioHeader';
10
+ subscribe(APP_READY, function () {
11
+ ReactDOM.render(/*#__PURE__*/React.createElement(AppProvider, null, /*#__PURE__*/React.createElement(AppContext.Provider, {
12
+ value: {
13
+ authenticatedUser: null,
14
+ config: getConfig()
15
+ }
16
+ }, /*#__PURE__*/React.createElement(Header, null)), /*#__PURE__*/React.createElement("h5", {
17
+ className: "mt-2 mb-5"
18
+ }, "Logged out state"), /*#__PURE__*/React.createElement(AppContext.Provider, {
19
+ value: {
20
+ authenticatedUser: {
21
+ userId: '123abc',
22
+ username: 'testuser',
23
+ roles: [],
24
+ administrator: false
25
+ },
26
+ config: getConfig()
27
+ }
28
+ }, /*#__PURE__*/React.createElement(Header, null)), /*#__PURE__*/React.createElement("h5", {
29
+ className: "mt-2 mb-5"
30
+ }, "Logged in state"), /*#__PURE__*/React.createElement(AppContext.Provider, {
31
+ value: {
32
+ authenticatedUser: {
33
+ userId: '123abc',
34
+ username: 'testuser',
35
+ roles: [],
36
+ administrator: false
37
+ },
38
+ config: getConfig()
39
+ }
40
+ }, /*#__PURE__*/React.createElement(LearningHeader, null)), /*#__PURE__*/React.createElement("h5", {
41
+ className: "mt-2 mb-5"
42
+ }, "Logged in state of Learning Header"), /*#__PURE__*/React.createElement(AppContext.Provider, {
43
+ value: {
44
+ authenticatedUser: {
45
+ userId: '123abc',
46
+ username: 'testuser',
47
+ roles: [],
48
+ administrator: false
49
+ },
50
+ config: getConfig()
51
+ }
52
+ }, /*#__PURE__*/React.createElement(StudioHeader, {
53
+ number: "run123",
54
+ org: "testX",
55
+ title: "Course Name",
56
+ isHiddenMainMenu: false,
57
+ mainMenuDropdowns: [{
58
+ id: 'content-dropdown',
59
+ buttonTitle: 'Content',
60
+ items: [{
61
+ href: '#',
62
+ title: 'Outline'
63
+ }]
64
+ }],
65
+ outlineLink: "#"
66
+ })), /*#__PURE__*/React.createElement("h5", {
67
+ className: "mt-2"
68
+ }, "Logged in state for Studio header")), document.getElementById('root'));
69
+ });
70
+ initialize({
71
+ messages: []
72
+ });
73
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["React","ReactDOM","initialize","getConfig","subscribe","APP_READY","AppContext","AppProvider","Header","LearningHeader","StudioHeader","render","createElement","Provider","value","authenticatedUser","config","className","userId","username","roles","administrator","number","org","title","isHiddenMainMenu","mainMenuDropdowns","id","buttonTitle","items","href","outlineLink","document","getElementById","messages"],"sources":["../src/index.jsx"],"sourcesContent":["import 'babel-polyfill';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { initialize, getConfig, subscribe, APP_READY } from '@edx/frontend-platform';\nimport { AppContext, AppProvider } from '@edx/frontend-platform/react';\nimport Header from './Header';\nimport LearningHeader from \"./learning-header/LearningHeader\"\n\nimport './index.scss';\nimport StudioHeader from './studio-header/StudioHeader';\n\nsubscribe(APP_READY, () => {\n ReactDOM.render(\n <AppProvider>\n {/* We can fake out authentication by including another provider here with the data we want */}\n <AppContext.Provider value={{\n authenticatedUser: null,\n config: getConfig(),\n }}>\n <Header />\n </AppContext.Provider>\n <h5 className=\"mt-2 mb-5\">Logged out state</h5>\n\n {/* We can fake out authentication by including another provider here with the data we want */}\n <AppContext.Provider value={{\n authenticatedUser: {\n userId: '123abc',\n username: 'testuser',\n roles: [],\n administrator: false,\n },\n config: getConfig(),\n }}>\n <Header />\n </AppContext.Provider>\n <h5 className=\"mt-2 mb-5\">Logged in state</h5>\n\n\n <AppContext.Provider value={{\n authenticatedUser: {\n userId: '123abc',\n username: 'testuser',\n roles: [],\n administrator: false,\n },\n config: getConfig(),\n }}>\n <LearningHeader />\n </AppContext.Provider>\n <h5 className=\"mt-2 mb-5\">Logged in state of Learning Header</h5>\n\n\n <AppContext.Provider value={{\n authenticatedUser: {\n userId: '123abc',\n username: 'testuser',\n roles: [],\n administrator: false,\n },\n config: getConfig(),\n }}>\n <StudioHeader\n number=\"run123\"\n org=\"testX\"\n title=\"Course Name\"\n isHiddenMainMenu={false}\n mainMenuDropdowns={[\n {\n id: 'content-dropdown',\n buttonTitle: 'Content',\n items: [{\n href: '#',\n title: 'Outline',\n }],\n },\n ]}\n outlineLink=\"#\"\n />\n </AppContext.Provider>\n <h5 className=\"mt-2\">Logged in state for Studio header</h5>\n </AppProvider>,\n document.getElementById('root'),\n );\n});\n\ninitialize({\n messages: []\n});\n"],"mappings":"AAAA,OAAO,gBAAgB;AAEvB,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,WAAW;AAChC,SAASC,UAAU,EAAEC,SAAS,EAAEC,SAAS,EAAEC,SAAS,QAAQ,wBAAwB;AACpF,SAASC,UAAU,EAAEC,WAAW,QAAQ,8BAA8B;AACtE,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,cAAc,MAAM,kCAAkC;AAE7D,OAAO,cAAc;AACrB,OAAOC,YAAY,MAAM,8BAA8B;AAEvDN,SAAS,CAACC,SAAS,EAAE,YAAM;EACzBJ,QAAQ,CAACU,MAAM,cACbX,KAAA,CAAAY,aAAA,CAACL,WAAW,qBAEVP,KAAA,CAAAY,aAAA,CAACN,UAAU,CAACO,QAAQ;IAACC,KAAK,EAAE;MAC1BC,iBAAiB,EAAE,IAAI;MACvBC,MAAM,EAAEb,SAAS,CAAC;IACpB;EAAE,gBACAH,KAAA,CAAAY,aAAA,CAACJ,MAAM,MAAE,CACU,CAAC,eACtBR,KAAA,CAAAY,aAAA;IAAIK,SAAS,EAAC;EAAW,GAAC,kBAAoB,CAAC,eAG/CjB,KAAA,CAAAY,aAAA,CAACN,UAAU,CAACO,QAAQ;IAACC,KAAK,EAAE;MAC1BC,iBAAiB,EAAE;QACjBG,MAAM,EAAE,QAAQ;QAChBC,QAAQ,EAAE,UAAU;QACpBC,KAAK,EAAE,EAAE;QACTC,aAAa,EAAE;MACjB,CAAC;MACDL,MAAM,EAAEb,SAAS,CAAC;IACpB;EAAE,gBACAH,KAAA,CAAAY,aAAA,CAACJ,MAAM,MAAE,CACU,CAAC,eACtBR,KAAA,CAAAY,aAAA;IAAIK,SAAS,EAAC;EAAY,GAAC,iBAAmB,CAAC,eAG/CjB,KAAA,CAAAY,aAAA,CAACN,UAAU,CAACO,QAAQ;IAACC,KAAK,EAAE;MAC1BC,iBAAiB,EAAE;QACjBG,MAAM,EAAE,QAAQ;QAChBC,QAAQ,EAAE,UAAU;QACpBC,KAAK,EAAE,EAAE;QACTC,aAAa,EAAE;MACjB,CAAC;MACDL,MAAM,EAAEb,SAAS,CAAC;IACpB;EAAE,gBACAH,KAAA,CAAAY,aAAA,CAACH,cAAc,MAAE,CACE,CAAC,eACtBT,KAAA,CAAAY,aAAA;IAAIK,SAAS,EAAC;EAAY,GAAC,oCAAsC,CAAC,eAGlEjB,KAAA,CAAAY,aAAA,CAACN,UAAU,CAACO,QAAQ;IAACC,KAAK,EAAE;MAC1BC,iBAAiB,EAAE;QACjBG,MAAM,EAAE,QAAQ;QAChBC,QAAQ,EAAE,UAAU;QACpBC,KAAK,EAAE,EAAE;QACTC,aAAa,EAAE;MACjB,CAAC;MACDL,MAAM,EAAEb,SAAS,CAAC;IACpB;EAAE,gBACAH,KAAA,CAAAY,aAAA,CAACF,YAAY;IACXY,MAAM,EAAC,QAAQ;IACfC,GAAG,EAAC,OAAO;IACXC,KAAK,EAAC,aAAa;IACnBC,gBAAgB,EAAE,KAAM;IACxBC,iBAAiB,EAAE,CACjB;MACEC,EAAE,EAAE,kBAAkB;MACtBC,WAAW,EAAE,SAAS;MACtBC,KAAK,EAAE,CAAC;QACNC,IAAI,EAAE,GAAG;QACTN,KAAK,EAAE;MACT,CAAC;IACH,CAAC,CACD;IACFO,WAAW,EAAC;EAAG,CAChB,CACkB,CAAC,eACtB/B,KAAA,CAAAY,aAAA;IAAIK,SAAS,EAAC;EAAM,GAAC,mCAAqC,CAC/C,CAAC,EACde,QAAQ,CAACC,cAAc,CAAC,MAAM,CAChC,CAAC;AACH,CAAC,CAAC;AAEF/B,UAAU,CAAC;EACTgC,QAAQ,EAAE;AACZ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,248 @@
1
+ @import "@edx/brand/paragon/fonts";
2
+ @import "@edx/brand/paragon/variables";
3
+ @import "@openedx/paragon/scss/core/core";
4
+ @import "@edx/brand/paragon/overrides";
5
+
6
+ $spacer: 1rem;
7
+ $blue: #007db8;
8
+ $white: #fff;
9
+
10
+ @import "./Menu/menu.scss";
11
+ @import "./studio-header/StudioHeader.scss";
12
+
13
+ .dropdown-item a {
14
+ text-decoration: none;
15
+ }
16
+
17
+ .icon-button {
18
+ display: inline-flex;
19
+ line-height: 3rem;
20
+ background: transparent;
21
+ vertical-align: middle;
22
+ text-align: center;
23
+ border: none;
24
+ height: 3rem;
25
+ width: 3rem;
26
+ padding: 0.75rem;
27
+ justify-content: center;
28
+ align-items: center;
29
+ &:hover,
30
+ &:focus {
31
+ background: rgba(0, 0, 0, 0.1);
32
+ }
33
+ }
34
+
35
+ .learning-header {
36
+ min-width: 0;
37
+
38
+ .course-title-lockup {
39
+ min-width: 0;
40
+
41
+ span {
42
+ white-space: nowrap;
43
+ overflow: hidden;
44
+ text-overflow: ellipsis;
45
+ padding-bottom: 0.1rem;
46
+ }
47
+ }
48
+
49
+ .user-dropdown {
50
+ .btn {
51
+ height: 3rem;
52
+ // @media (max-width: -1 + map-get($grid-breakpoints, "sm")) {
53
+ // padding: 0 0.5rem;
54
+ // }
55
+ }
56
+ }
57
+ }
58
+
59
+ .site-header-mobile,
60
+ .site-header-desktop {
61
+ position: relative;
62
+ z-index: 1000;
63
+ }
64
+
65
+ .site-header-mobile {
66
+ height: 3rem;
67
+
68
+ .nav-link {
69
+ text-decoration: none;
70
+ cursor: pointer;
71
+ }
72
+ img {
73
+ height: 1.5rem;
74
+ }
75
+ }
76
+
77
+ .site-header-desktop {
78
+ box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.1);
79
+ background: $white;
80
+ .nav-link {
81
+ text-decoration: none;
82
+ }
83
+ .logo {
84
+ display: block;
85
+ box-sizing: content-box;
86
+ position: relative;
87
+ top: -0.05em;
88
+ height: 1.75rem;
89
+ padding: 1rem 0;
90
+ margin-right: 1rem;
91
+ img {
92
+ display: block;
93
+ height: 100%;
94
+ }
95
+ }
96
+ .secondary-menu-container {
97
+ .nav-link:hover,
98
+ .nav-link:focus,
99
+ .nav-link.active,
100
+ .expanded .nav-link {
101
+ background: $component-active-bg;
102
+ color: $component-active-color;
103
+ }
104
+ }
105
+ .main-nav {
106
+ .nav-link {
107
+ padding: 1.125rem 1rem;
108
+ text-decoration: none;
109
+ font-weight: 500;
110
+ letter-spacing: 0.01em;
111
+ }
112
+ .nav-link:hover,
113
+ .nav-link:focus,
114
+ .nav-link.active,
115
+ .expanded .nav-link {
116
+ background: $component-active-bg;
117
+ color: $component-active-color;
118
+ }
119
+ .menu {
120
+ position: static;
121
+ .menu-content {
122
+ border-top: solid 2px $component-active-bg;
123
+ left: 0;
124
+ right: 0;
125
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
126
+ border-bottom-left-radius: 2px;
127
+ border-bottom-right-radius: 2px;
128
+ padding: 1rem;
129
+ }
130
+ }
131
+ }
132
+ .search-input {
133
+ border-radius: $rounded-pill;
134
+ }
135
+ }
136
+
137
+ // Filters:
138
+ $filter-white: brightness(0) saturate(100%) invert(100%) sepia(0%)
139
+ saturate(7498%) hue-rotate(168deg) brightness(100%) contrast(103%)
140
+ drop-shadow(0 2px 1px rgba(0, 0, 0, 0.05));
141
+
142
+ // Omnikampus Colors:
143
+ $green: #32ab5c;
144
+ $white: #ffffff;
145
+
146
+ #root {
147
+ header.site-header-desktop {
148
+ background: $green;
149
+
150
+ a.logo {
151
+ filter: $filter-white;
152
+ height: 50px;
153
+ }
154
+
155
+ .main-nav {
156
+ .nav-link:hover,
157
+ .nav-link:focus,
158
+ .nav-link.active,
159
+ .expanded .nav-link {
160
+ background: $green;
161
+ }
162
+ }
163
+
164
+
165
+ .nav-link {
166
+ color: $white;
167
+
168
+ &:hover,
169
+ &:focus {
170
+ background: $green;
171
+ opacity: 0.85;
172
+ }
173
+ }
174
+
175
+ .secondary-menu-container {
176
+ .btn-link {
177
+ color: $white;
178
+ }
179
+
180
+ .btn-outline-primary {
181
+ color: $white;
182
+ border-color: $white;
183
+
184
+ &:hover {
185
+ color: $green;
186
+ }
187
+
188
+ &:focus::before {
189
+ border-color: $white;
190
+ }
191
+ }
192
+
193
+ .dropdown-item.active,
194
+ .dropdown-item:active {
195
+ background-color: $green;
196
+ }
197
+ }
198
+ }
199
+
200
+ .studio-header {
201
+ height: auto;
202
+ a.studio-logo {
203
+ display: flex;
204
+ align-items: center;
205
+ img.logo {
206
+ height: 50px;
207
+ filter: brightness(0) saturate(100%) invert(14%) sepia(34%)
208
+ saturate(2846%) hue-rotate(185deg) brightness(94%) contrast(95%);
209
+ }
210
+ }
211
+ .course-title-lockup {
212
+ display: flex;
213
+ flex-direction: column;
214
+ justify-content: center;
215
+ }
216
+ }
217
+
218
+ .learning-header {
219
+ a.logo {
220
+ height: 50px;
221
+ img {
222
+ height: 100%;
223
+ }
224
+ }
225
+
226
+ .btn-outline-primary {
227
+ color: $green;
228
+ border-color: $green;
229
+
230
+ &:hover {
231
+ color: $green;
232
+ }
233
+
234
+ &:focus::before {
235
+ border-color: $white;
236
+ }
237
+ }
238
+
239
+ .dropdown-item.active,
240
+ .dropdown-item:active {
241
+ background-color: $green;
242
+ }
243
+
244
+ .omni-color {
245
+ color: $green;
246
+ }
247
+ }
248
+ }
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { getConfig } from '@edx/frontend-platform';
3
+ import { getLoginRedirectUrl } from '@edx/frontend-platform/auth';
4
+ import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
5
+ import LearningLoggedOutItemsSlot from '../plugin-slots/LearningLoggedOutItemsSlot';
6
+ import genericMessages from '../generic/messages';
7
+ var AnonymousUserMenu = function AnonymousUserMenu(_ref) {
8
+ var intl = _ref.intl;
9
+ var buttonsInfo = [{
10
+ message: intl.formatMessage(genericMessages.registerSentenceCase),
11
+ href: "".concat(getConfig().LMS_BASE_URL, "/register?next=").concat(encodeURIComponent(global.location.href))
12
+ }, {
13
+ message: intl.formatMessage(genericMessages.signInSentenceCase),
14
+ href: getLoginRedirectUrl(global.location.href),
15
+ variant: 'primary'
16
+ }];
17
+ return /*#__PURE__*/React.createElement(LearningLoggedOutItemsSlot, {
18
+ buttonsInfo: buttonsInfo
19
+ });
20
+ };
21
+ AnonymousUserMenu.propTypes = {
22
+ intl: intlShape.isRequired
23
+ };
24
+ export default injectIntl(AnonymousUserMenu);
25
+ //# sourceMappingURL=AnonymousUserMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnonymousUserMenu.js","names":["React","getConfig","getLoginRedirectUrl","injectIntl","intlShape","LearningLoggedOutItemsSlot","genericMessages","AnonymousUserMenu","_ref","intl","buttonsInfo","message","formatMessage","registerSentenceCase","href","concat","LMS_BASE_URL","encodeURIComponent","global","location","signInSentenceCase","variant","createElement","propTypes","isRequired"],"sources":["../../src/learning-header/AnonymousUserMenu.jsx"],"sourcesContent":["import React from 'react';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { getLoginRedirectUrl } from '@edx/frontend-platform/auth';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport LearningLoggedOutItemsSlot from '../plugin-slots/LearningLoggedOutItemsSlot';\n\nimport genericMessages from '../generic/messages';\n\nconst AnonymousUserMenu = ({ intl }) => {\n const buttonsInfo = [\n {\n message: intl.formatMessage(genericMessages.registerSentenceCase),\n href: `${getConfig().LMS_BASE_URL}/register?next=${encodeURIComponent(global.location.href)}`,\n },\n {\n message: intl.formatMessage(genericMessages.signInSentenceCase),\n href: getLoginRedirectUrl(global.location.href),\n variant: 'primary',\n },\n ];\n\n return <LearningLoggedOutItemsSlot buttonsInfo={buttonsInfo} />;\n};\n\nAnonymousUserMenu.propTypes = {\n intl: intlShape.isRequired,\n};\n\nexport default injectIntl(AnonymousUserMenu);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,SAAS,QAAQ,wBAAwB;AAClD,SAASC,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,UAAU,EAAEC,SAAS,QAAQ,6BAA6B;AACnE,OAAOC,0BAA0B,MAAM,4CAA4C;AAEnF,OAAOC,eAAe,MAAM,qBAAqB;AAEjD,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAAiB;EAAA,IAAXC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAC/B,IAAMC,WAAW,GAAG,CAClB;IACEC,OAAO,EAAEF,IAAI,CAACG,aAAa,CAACN,eAAe,CAACO,oBAAoB,CAAC;IACjEC,IAAI,KAAAC,MAAA,CAAKd,SAAS,CAAC,CAAC,CAACe,YAAY,qBAAAD,MAAA,CAAkBE,kBAAkB,CAACC,MAAM,CAACC,QAAQ,CAACL,IAAI,CAAC;EAC7F,CAAC,EACD;IACEH,OAAO,EAAEF,IAAI,CAACG,aAAa,CAACN,eAAe,CAACc,kBAAkB,CAAC;IAC/DN,IAAI,EAAEZ,mBAAmB,CAACgB,MAAM,CAACC,QAAQ,CAACL,IAAI,CAAC;IAC/CO,OAAO,EAAE;EACX,CAAC,CACF;EAED,oBAAOrB,KAAA,CAAAsB,aAAA,CAACjB,0BAA0B;IAACK,WAAW,EAAEA;EAAY,CAAE,CAAC;AACjE,CAAC;AAEDH,iBAAiB,CAACgB,SAAS,GAAG;EAC5Bd,IAAI,EAAEL,SAAS,CAACoB;AAClB,CAAC;AAED,eAAerB,UAAU,CAACI,iBAAiB,CAAC","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
2
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7
+ import React from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
10
+ import { faUserCircle } from '@fortawesome/free-solid-svg-icons';
11
+ import { getConfig } from '@edx/frontend-platform';
12
+ import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
13
+ import { Dropdown } from '@openedx/paragon';
14
+ import LearningUserMenuSlot from '../plugin-slots/LearningUserMenuSlot';
15
+ import messages from './messages';
16
+ var AuthenticatedUserDropdown = function AuthenticatedUserDropdown(_ref) {
17
+ var intl = _ref.intl,
18
+ username = _ref.username;
19
+ var dropdownItems = [{
20
+ message: intl.formatMessage(messages.dashboard),
21
+ href: "".concat(getConfig().LMS_BASE_URL, "/dashboard")
22
+ }, {
23
+ message: intl.formatMessage(messages.profile),
24
+ href: "".concat(getConfig().ACCOUNT_PROFILE_URL, "/u/").concat(username)
25
+ }, {
26
+ message: intl.formatMessage(messages.account),
27
+ href: getConfig().ACCOUNT_SETTINGS_URL
28
+ }].concat(_toConsumableArray(getConfig().ORDER_HISTORY_URL ? [{
29
+ message: intl.formatMessage(messages.orderHistory),
30
+ href: getConfig().ORDER_HISTORY_URL
31
+ }] : []), [{
32
+ message: intl.formatMessage(messages.signOut),
33
+ href: getConfig().LOGOUT_URL
34
+ }]);
35
+ return /*#__PURE__*/React.createElement(Dropdown, {
36
+ className: "user-dropdown ml-3"
37
+ }, /*#__PURE__*/React.createElement(Dropdown.Toggle, {
38
+ variant: "outline-primary"
39
+ }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
40
+ icon: faUserCircle,
41
+ className: "d-md-none",
42
+ size: "lg"
43
+ }), /*#__PURE__*/React.createElement("span", {
44
+ "data-hj-suppress": true,
45
+ className: "d-none d-md-inline"
46
+ }, username)), /*#__PURE__*/React.createElement(Dropdown.Menu, {
47
+ className: "dropdown-menu-right"
48
+ }, /*#__PURE__*/React.createElement(LearningUserMenuSlot, {
49
+ items: dropdownItems
50
+ })));
51
+ };
52
+ AuthenticatedUserDropdown.propTypes = {
53
+ intl: intlShape.isRequired,
54
+ username: PropTypes.string.isRequired
55
+ };
56
+ export default injectIntl(AuthenticatedUserDropdown);
57
+ //# sourceMappingURL=AuthenticatedUserDropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticatedUserDropdown.js","names":["React","PropTypes","FontAwesomeIcon","faUserCircle","getConfig","injectIntl","intlShape","Dropdown","LearningUserMenuSlot","messages","AuthenticatedUserDropdown","_ref","intl","username","dropdownItems","message","formatMessage","dashboard","href","concat","LMS_BASE_URL","profile","ACCOUNT_PROFILE_URL","account","ACCOUNT_SETTINGS_URL","_toConsumableArray","ORDER_HISTORY_URL","orderHistory","signOut","LOGOUT_URL","createElement","className","Toggle","variant","icon","size","Menu","items","propTypes","isRequired","string"],"sources":["../../src/learning-header/AuthenticatedUserDropdown.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faUserCircle } from '@fortawesome/free-solid-svg-icons';\nimport { getConfig } from '@edx/frontend-platform';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport { Dropdown } from '@openedx/paragon';\n\nimport LearningUserMenuSlot from '../plugin-slots/LearningUserMenuSlot';\n\nimport messages from './messages';\n\nconst AuthenticatedUserDropdown = ({ intl, username }) => {\n const dropdownItems = [\n {\n message: intl.formatMessage(messages.dashboard),\n href: `${getConfig().LMS_BASE_URL}/dashboard`,\n },\n {\n message: intl.formatMessage(messages.profile),\n href: `${getConfig().ACCOUNT_PROFILE_URL}/u/${username}`,\n },\n {\n message: intl.formatMessage(messages.account),\n href: getConfig().ACCOUNT_SETTINGS_URL,\n },\n ...(getConfig().ORDER_HISTORY_URL ? [{\n message: intl.formatMessage(messages.orderHistory),\n href: getConfig().ORDER_HISTORY_URL,\n }] : []),\n {\n message: intl.formatMessage(messages.signOut),\n href: getConfig().LOGOUT_URL,\n },\n ];\n\n return (\n <Dropdown className=\"user-dropdown ml-3\">\n <Dropdown.Toggle variant=\"outline-primary\">\n <FontAwesomeIcon icon={faUserCircle} className=\"d-md-none\" size=\"lg\" />\n <span data-hj-suppress className=\"d-none d-md-inline\">\n {username}\n </span>\n </Dropdown.Toggle>\n <Dropdown.Menu className=\"dropdown-menu-right\">\n <LearningUserMenuSlot items={dropdownItems} />\n </Dropdown.Menu>\n </Dropdown>\n );\n};\n\nAuthenticatedUserDropdown.propTypes = {\n intl: intlShape.isRequired,\n username: PropTypes.string.isRequired,\n};\n\nexport default injectIntl(AuthenticatedUserDropdown);\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAElC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,YAAY,QAAQ,mCAAmC;AAChE,SAASC,SAAS,QAAQ,wBAAwB;AAClD,SAASC,UAAU,EAAEC,SAAS,QAAQ,6BAA6B;AACnE,SAASC,QAAQ,QAAQ,kBAAkB;AAE3C,OAAOC,oBAAoB,MAAM,sCAAsC;AAEvE,OAAOC,QAAQ,MAAM,YAAY;AAEjC,IAAMC,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAAC,IAAA,EAA2B;EAAA,IAArBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;EACjD,IAAMC,aAAa,IACjB;IACEC,OAAO,EAAEH,IAAI,CAACI,aAAa,CAACP,QAAQ,CAACQ,SAAS,CAAC;IAC/CC,IAAI,KAAAC,MAAA,CAAKf,SAAS,CAAC,CAAC,CAACgB,YAAY;EACnC,CAAC,EACD;IACEL,OAAO,EAAEH,IAAI,CAACI,aAAa,CAACP,QAAQ,CAACY,OAAO,CAAC;IAC7CH,IAAI,KAAAC,MAAA,CAAKf,SAAS,CAAC,CAAC,CAACkB,mBAAmB,SAAAH,MAAA,CAAMN,QAAQ;EACxD,CAAC,EACD;IACEE,OAAO,EAAEH,IAAI,CAACI,aAAa,CAACP,QAAQ,CAACc,OAAO,CAAC;IAC7CL,IAAI,EAAEd,SAAS,CAAC,CAAC,CAACoB;EACpB,CAAC,EAAAL,MAAA,CAAAM,kBAAA,CACGrB,SAAS,CAAC,CAAC,CAACsB,iBAAiB,GAAG,CAAC;IACnCX,OAAO,EAAEH,IAAI,CAACI,aAAa,CAACP,QAAQ,CAACkB,YAAY,CAAC;IAClDT,IAAI,EAAEd,SAAS,CAAC,CAAC,CAACsB;EACpB,CAAC,CAAC,GAAG,EAAE,IACP;IACEX,OAAO,EAAEH,IAAI,CAACI,aAAa,CAACP,QAAQ,CAACmB,OAAO,CAAC;IAC7CV,IAAI,EAAEd,SAAS,CAAC,CAAC,CAACyB;EACpB,CAAC,EACF;EAED,oBACE7B,KAAA,CAAA8B,aAAA,CAACvB,QAAQ;IAACwB,SAAS,EAAC;EAAoB,gBACtC/B,KAAA,CAAA8B,aAAA,CAACvB,QAAQ,CAACyB,MAAM;IAACC,OAAO,EAAC;EAAiB,gBACxCjC,KAAA,CAAA8B,aAAA,CAAC5B,eAAe;IAACgC,IAAI,EAAE/B,YAAa;IAAC4B,SAAS,EAAC,WAAW;IAACI,IAAI,EAAC;EAAI,CAAE,CAAC,eACvEnC,KAAA,CAAA8B,aAAA;IAAM,wBAAgB;IAACC,SAAS,EAAC;EAAoB,GAClDlB,QACG,CACS,CAAC,eAClBb,KAAA,CAAA8B,aAAA,CAACvB,QAAQ,CAAC6B,IAAI;IAACL,SAAS,EAAC;EAAqB,gBAC5C/B,KAAA,CAAA8B,aAAA,CAACtB,oBAAoB;IAAC6B,KAAK,EAAEvB;EAAc,CAAE,CAChC,CACP,CAAC;AAEf,CAAC;AAEDJ,yBAAyB,CAAC4B,SAAS,GAAG;EACpC1B,IAAI,EAAEN,SAAS,CAACiC,UAAU;EAC1B1B,QAAQ,EAAEZ,SAAS,CAACuC,MAAM,CAACD;AAC7B,CAAC;AAED,eAAelC,UAAU,CAACK,yBAAyB,CAAC","ignoreList":[]}